diff options
author | David S. Miller <davem@davemloft.net> | 2008-06-10 05:22:26 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-06-10 05:22:26 -0400 |
commit | 65b53e4cc90e59936733b3b95b9451d2ca47528d (patch) | |
tree | 29932718192962671c48c3fd1ea017a6112459e8 | |
parent | 788c0a53164c05c5ccdb1472474372b72ba74644 (diff) | |
parent | 2e761e0532a784816e7e822dbaaece8c5d4be14d (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/tg3.c
drivers/net/wireless/rt2x00/rt2x00dev.c
net/mac80211/ieee80211_i.h
1080 files changed, 17107 insertions, 9105 deletions
diff --git a/.gitignore b/.gitignore index 090b293b8779..d24ad506e799 100644 --- a/.gitignore +++ b/.gitignore | |||
@@ -52,8 +52,8 @@ series | |||
52 | 52 | ||
53 | # cscope files | 53 | # cscope files |
54 | cscope.* | 54 | cscope.* |
55 | ncscope.* | ||
55 | 56 | ||
56 | *.orig | 57 | *.orig |
57 | *.rej | ||
58 | *~ | 58 | *~ |
59 | \#*# | 59 | \#*# |
diff --git a/Documentation/ABI/testing/sysfs-class-bdi b/Documentation/ABI/testing/sysfs-class-bdi index 5ac1e01bbd48..5f500977b42f 100644 --- a/Documentation/ABI/testing/sysfs-class-bdi +++ b/Documentation/ABI/testing/sysfs-class-bdi | |||
@@ -14,6 +14,10 @@ MAJOR:MINOR | |||
14 | non-block filesystems which provide their own BDI, such as NFS | 14 | non-block filesystems which provide their own BDI, such as NFS |
15 | and FUSE. | 15 | and FUSE. |
16 | 16 | ||
17 | MAJOR:MINOR-fuseblk | ||
18 | |||
19 | Value of st_dev on fuseblk filesystems. | ||
20 | |||
17 | default | 21 | default |
18 | 22 | ||
19 | The default backing dev, used for non-block device backed | 23 | The default backing dev, used for non-block device backed |
diff --git a/Documentation/DocBook/kernel-locking.tmpl b/Documentation/DocBook/kernel-locking.tmpl index 77c42f40be5d..2510763295d0 100644 --- a/Documentation/DocBook/kernel-locking.tmpl +++ b/Documentation/DocBook/kernel-locking.tmpl | |||
@@ -703,6 +703,31 @@ | |||
703 | </sect1> | 703 | </sect1> |
704 | </chapter> | 704 | </chapter> |
705 | 705 | ||
706 | <chapter id="trylock-functions"> | ||
707 | <title>The trylock Functions</title> | ||
708 | <para> | ||
709 | There are functions that try to acquire a lock only once and immediately | ||
710 | return a value telling about success or failure to acquire the lock. | ||
711 | They can be used if you need no access to the data protected with the lock | ||
712 | when some other thread is holding the lock. You should acquire the lock | ||
713 | later if you then need access to the data protected with the lock. | ||
714 | </para> | ||
715 | |||
716 | <para> | ||
717 | <function>spin_trylock()</function> does not spin but returns non-zero if | ||
718 | it acquires the spinlock on the first try or 0 if not. This function can | ||
719 | be used in all contexts like <function>spin_lock</function>: you must have | ||
720 | disabled the contexts that might interrupt you and acquire the spin lock. | ||
721 | </para> | ||
722 | |||
723 | <para> | ||
724 | <function>mutex_trylock()</function> does not suspend your task | ||
725 | but returns non-zero if it could lock the mutex on the first try | ||
726 | or 0 if not. This function cannot be safely used in hardware or software | ||
727 | interrupt contexts despite not sleeping. | ||
728 | </para> | ||
729 | </chapter> | ||
730 | |||
706 | <chapter id="Examples"> | 731 | <chapter id="Examples"> |
707 | <title>Common Examples</title> | 732 | <title>Common Examples</title> |
708 | <para> | 733 | <para> |
diff --git a/Documentation/cpu-freq/governors.txt b/Documentation/cpu-freq/governors.txt index 6a9c55bd556b..dcec0564d040 100644 --- a/Documentation/cpu-freq/governors.txt +++ b/Documentation/cpu-freq/governors.txt | |||
@@ -129,14 +129,6 @@ to its default value of '80' it means that between the checking | |||
129 | intervals the CPU needs to be on average more than 80% in use to then | 129 | intervals the CPU needs to be on average more than 80% in use to then |
130 | decide that the CPU frequency needs to be increased. | 130 | decide that the CPU frequency needs to be increased. |
131 | 131 | ||
132 | sampling_down_factor: this parameter controls the rate that the CPU | ||
133 | makes a decision on when to decrease the frequency. When set to its | ||
134 | default value of '5' it means that at 1/5 the sampling_rate the kernel | ||
135 | makes a decision to lower the frequency. Five "lower rate" decisions | ||
136 | have to be made in a row before the CPU frequency is actually lower. | ||
137 | If set to '1' then the frequency decreases as quickly as it increases, | ||
138 | if set to '2' it decreases at half the rate of the increase. | ||
139 | |||
140 | ignore_nice_load: this parameter takes a value of '0' or '1'. When | 132 | ignore_nice_load: this parameter takes a value of '0' or '1'. When |
141 | set to '0' (its default), all processes are counted towards the | 133 | set to '0' (its default), all processes are counted towards the |
142 | 'cpu utilisation' value. When set to '1', the processes that are | 134 | 'cpu utilisation' value. When set to '1', the processes that are |
diff --git a/Documentation/hwmon/ibmaem b/Documentation/hwmon/ibmaem new file mode 100644 index 000000000000..2fefaf582a43 --- /dev/null +++ b/Documentation/hwmon/ibmaem | |||
@@ -0,0 +1,37 @@ | |||
1 | Kernel driver ibmaem | ||
2 | ====================== | ||
3 | |||
4 | Supported systems: | ||
5 | * Any recent IBM System X server with Active Energy Manager support. | ||
6 | This includes the x3350, x3550, x3650, x3655, x3755, x3850 M2, | ||
7 | x3950 M2, and certain HS2x/LS2x/QS2x blades. The IPMI host interface | ||
8 | driver ("ipmi-si") needs to be loaded for this driver to do anything. | ||
9 | Prefix: 'ibmaem' | ||
10 | Datasheet: Not available | ||
11 | |||
12 | Author: Darrick J. Wong | ||
13 | |||
14 | Description | ||
15 | ----------- | ||
16 | |||
17 | This driver implements sensor reading support for the energy and power | ||
18 | meters available on various IBM System X hardware through the BMC. All | ||
19 | sensor banks will be exported as platform devices; this driver can talk | ||
20 | to both v1 and v2 interfaces. This driver is completely separate from the | ||
21 | older ibmpex driver. | ||
22 | |||
23 | The v1 AEM interface has a simple set of features to monitor energy use. | ||
24 | There is a register that displays an estimate of raw energy consumption | ||
25 | since the last BMC reset, and a power sensor that returns average power | ||
26 | use over a configurable interval. | ||
27 | |||
28 | The v2 AEM interface is a bit more sophisticated, being able to present | ||
29 | a wider range of energy and power use registers, the power cap as | ||
30 | set by the AEM software, and temperature sensors. | ||
31 | |||
32 | Special Features | ||
33 | ---------------- | ||
34 | |||
35 | The "power_cap" value displays the current system power cap, as set by | ||
36 | the Active Energy Manager software. Setting the power cap from the host | ||
37 | is not currently supported. | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index cdd5b934f43e..e07c432c731f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -398,9 +398,6 @@ and is between 256 and 4096 characters. It is defined in the file | |||
398 | cio_ignore= [S390] | 398 | cio_ignore= [S390] |
399 | See Documentation/s390/CommonIO for details. | 399 | See Documentation/s390/CommonIO for details. |
400 | 400 | ||
401 | cio_msg= [S390] | ||
402 | See Documentation/s390/CommonIO for details. | ||
403 | |||
404 | clock= [BUGS=X86-32, HW] gettimeofday clocksource override. | 401 | clock= [BUGS=X86-32, HW] gettimeofday clocksource override. |
405 | [Deprecated] | 402 | [Deprecated] |
406 | Forces specified clocksource (if available) to be used | 403 | Forces specified clocksource (if available) to be used |
@@ -689,6 +686,12 @@ and is between 256 and 4096 characters. It is defined in the file | |||
689 | floppy= [HW] | 686 | floppy= [HW] |
690 | See Documentation/floppy.txt. | 687 | See Documentation/floppy.txt. |
691 | 688 | ||
689 | force_pal_cache_flush | ||
690 | [IA-64] Avoid check_sal_cache_flush which may hang on | ||
691 | buggy SAL_CACHE_FLUSH implementations. Using this | ||
692 | parameter will force ia64_sal_cache_flush to call | ||
693 | ia64_pal_cache_flush instead of SAL_CACHE_FLUSH. | ||
694 | |||
692 | gamecon.map[2|3]= | 695 | gamecon.map[2|3]= |
693 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad | 696 | [HW,JOY] Multisystem joystick and NES/SNES/PSX pad |
694 | support via parallel port (up to 5 devices per port) | 697 | support via parallel port (up to 5 devices per port) |
diff --git a/Documentation/lguest/lguest.c b/Documentation/lguest/lguest.c index 3be8ab2a886a..82fafe0429fe 100644 --- a/Documentation/lguest/lguest.c +++ b/Documentation/lguest/lguest.c | |||
@@ -157,6 +157,9 @@ struct virtqueue | |||
157 | 157 | ||
158 | /* The routine to call when the Guest pings us. */ | 158 | /* The routine to call when the Guest pings us. */ |
159 | void (*handle_output)(int fd, struct virtqueue *me); | 159 | void (*handle_output)(int fd, struct virtqueue *me); |
160 | |||
161 | /* Outstanding buffers */ | ||
162 | unsigned int inflight; | ||
160 | }; | 163 | }; |
161 | 164 | ||
162 | /* Remember the arguments to the program so we can "reboot" */ | 165 | /* Remember the arguments to the program so we can "reboot" */ |
@@ -702,6 +705,7 @@ static unsigned get_vq_desc(struct virtqueue *vq, | |||
702 | errx(1, "Looped descriptor"); | 705 | errx(1, "Looped descriptor"); |
703 | } while ((i = next_desc(vq, i)) != vq->vring.num); | 706 | } while ((i = next_desc(vq, i)) != vq->vring.num); |
704 | 707 | ||
708 | vq->inflight++; | ||
705 | return head; | 709 | return head; |
706 | } | 710 | } |
707 | 711 | ||
@@ -719,6 +723,7 @@ static void add_used(struct virtqueue *vq, unsigned int head, int len) | |||
719 | /* Make sure buffer is written before we update index. */ | 723 | /* Make sure buffer is written before we update index. */ |
720 | wmb(); | 724 | wmb(); |
721 | vq->vring.used->idx++; | 725 | vq->vring.used->idx++; |
726 | vq->inflight--; | ||
722 | } | 727 | } |
723 | 728 | ||
724 | /* This actually sends the interrupt for this virtqueue */ | 729 | /* This actually sends the interrupt for this virtqueue */ |
@@ -726,8 +731,9 @@ static void trigger_irq(int fd, struct virtqueue *vq) | |||
726 | { | 731 | { |
727 | unsigned long buf[] = { LHREQ_IRQ, vq->config.irq }; | 732 | unsigned long buf[] = { LHREQ_IRQ, vq->config.irq }; |
728 | 733 | ||
729 | /* If they don't want an interrupt, don't send one. */ | 734 | /* If they don't want an interrupt, don't send one, unless empty. */ |
730 | if (vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT) | 735 | if ((vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT) |
736 | && vq->inflight) | ||
731 | return; | 737 | return; |
732 | 738 | ||
733 | /* Send the Guest an interrupt tell them we used something up. */ | 739 | /* Send the Guest an interrupt tell them we used something up. */ |
@@ -1107,6 +1113,7 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs, | |||
1107 | vq->next = NULL; | 1113 | vq->next = NULL; |
1108 | vq->last_avail_idx = 0; | 1114 | vq->last_avail_idx = 0; |
1109 | vq->dev = dev; | 1115 | vq->dev = dev; |
1116 | vq->inflight = 0; | ||
1110 | 1117 | ||
1111 | /* Initialize the configuration. */ | 1118 | /* Initialize the configuration. */ |
1112 | vq->config.num = num_descs; | 1119 | vq->config.num = num_descs; |
@@ -1368,6 +1375,7 @@ static void setup_tun_net(const char *arg) | |||
1368 | 1375 | ||
1369 | /* Tell Guest what MAC address to use. */ | 1376 | /* Tell Guest what MAC address to use. */ |
1370 | add_feature(dev, VIRTIO_NET_F_MAC); | 1377 | add_feature(dev, VIRTIO_NET_F_MAC); |
1378 | add_feature(dev, VIRTIO_F_NOTIFY_ON_EMPTY); | ||
1371 | set_config(dev, sizeof(conf), &conf); | 1379 | set_config(dev, sizeof(conf), &conf); |
1372 | 1380 | ||
1373 | /* We don't need the socket any more; setup is done. */ | 1381 | /* We don't need the socket any more; setup is done. */ |
diff --git a/Documentation/networking/bridge.txt b/Documentation/networking/bridge.txt index bdae2db4119c..bec69a8a1697 100644 --- a/Documentation/networking/bridge.txt +++ b/Documentation/networking/bridge.txt | |||
@@ -1,6 +1,6 @@ | |||
1 | In order to use the Ethernet bridging functionality, you'll need the | 1 | In order to use the Ethernet bridging functionality, you'll need the |
2 | userspace tools. These programs and documentation are available | 2 | userspace tools. These programs and documentation are available |
3 | at http://bridge.sourceforge.net. The download page is | 3 | at http://www.linux-foundation.org/en/Net:Bridge. The download page is |
4 | http://prdownloads.sourceforge.net/bridge. | 4 | http://prdownloads.sourceforge.net/bridge. |
5 | 5 | ||
6 | If you still have questions, don't hesitate to post to the mailing list | 6 | If you still have questions, don't hesitate to post to the mailing list |
@@ -96,5 +96,4 @@ missing-syscalls: scripts/checksyscalls.sh FORCE | |||
96 | $(call cmd,syscalls) | 96 | $(call cmd,syscalls) |
97 | 97 | ||
98 | # Delete all targets during make clean | 98 | # Delete all targets during make clean |
99 | clean-files := $(addprefix $(objtree)/,$(targets)) | 99 | clean-files := $(addprefix $(objtree)/,$(filter-out $(bounds-file) $(offsets-file),$(targets))) |
100 | |||
diff --git a/MAINTAINERS b/MAINTAINERS index bc1c0088dc49..46fa1797707a 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -982,13 +982,6 @@ L: bonding-devel@lists.sourceforge.net | |||
982 | W: http://sourceforge.net/projects/bonding/ | 982 | W: http://sourceforge.net/projects/bonding/ |
983 | S: Supported | 983 | S: Supported |
984 | 984 | ||
985 | BROADBAND PROCESSOR ARCHITECTURE | ||
986 | P: Arnd Bergmann | ||
987 | M: arnd@arndb.de | ||
988 | L: linuxppc-dev@ozlabs.org | ||
989 | W: http://www.penguinppc.org/ppc64/ | ||
990 | S: Supported | ||
991 | |||
992 | BROADCOM B44 10/100 ETHERNET DRIVER | 985 | BROADCOM B44 10/100 ETHERNET DRIVER |
993 | P: Gary Zambrano | 986 | P: Gary Zambrano |
994 | M: zambrano@broadcom.com | 987 | M: zambrano@broadcom.com |
@@ -1052,6 +1045,14 @@ L: linux-kernel@vger.kernel.org | |||
1052 | L: discuss@x86-64.org | 1045 | L: discuss@x86-64.org |
1053 | S: Maintained | 1046 | S: Maintained |
1054 | 1047 | ||
1048 | CELL BROADBAND ENGINE ARCHITECTURE | ||
1049 | P: Arnd Bergmann | ||
1050 | M: arnd@arndb.de | ||
1051 | L: linuxppc-dev@ozlabs.org | ||
1052 | L: cbe-oss-dev@ozlabs.org | ||
1053 | W: http://www.ibm.com/developerworks/power/cell/ | ||
1054 | S: Supported | ||
1055 | |||
1055 | CFAG12864B LCD DRIVER | 1056 | CFAG12864B LCD DRIVER |
1056 | P: Miguel Ojeda Sandonis | 1057 | P: Miguel Ojeda Sandonis |
1057 | M: maxextreme@gmail.com | 1058 | M: maxextreme@gmail.com |
@@ -1239,6 +1240,20 @@ L: video4linux-list@redhat.com | |||
1239 | W: http://linuxtv.org | 1240 | W: http://linuxtv.org |
1240 | S: Maintained | 1241 | S: Maintained |
1241 | 1242 | ||
1243 | CXGB3 ETHERNET DRIVER (CXGB3) | ||
1244 | P: Divy Le Ray | ||
1245 | M: divy@chelsio.com | ||
1246 | L: netdev@vger.kernel.org | ||
1247 | W: http://www.chelsio.com | ||
1248 | S: Supported | ||
1249 | |||
1250 | CXGB3 IWARP RNIC DRIVER (IW_CXGB3) | ||
1251 | P: Steve Wise | ||
1252 | M: swise@chelsio.com | ||
1253 | L: general@lists.openfabrics.org | ||
1254 | W: http://www.openfabrics.org | ||
1255 | S: Supported | ||
1256 | |||
1242 | CYBERPRO FB DRIVER | 1257 | CYBERPRO FB DRIVER |
1243 | P: Russell King | 1258 | P: Russell King |
1244 | M: rmk@arm.linux.org.uk | 1259 | M: rmk@arm.linux.org.uk |
@@ -1596,7 +1611,7 @@ ETHERNET BRIDGE | |||
1596 | P: Stephen Hemminger | 1611 | P: Stephen Hemminger |
1597 | M: shemminger@linux-foundation.org | 1612 | M: shemminger@linux-foundation.org |
1598 | L: bridge@lists.linux-foundation.org | 1613 | L: bridge@lists.linux-foundation.org |
1599 | W: http://bridge.sourceforge.net/ | 1614 | W: http://www.linux-foundation.org/en/Net:Bridge |
1600 | S: Maintained | 1615 | S: Maintained |
1601 | 1616 | ||
1602 | ETHERTEAM 16I DRIVER | 1617 | ETHERTEAM 16I DRIVER |
@@ -1645,8 +1660,10 @@ W: http://linux-fbdev.sourceforge.net/ | |||
1645 | S: Maintained | 1660 | S: Maintained |
1646 | 1661 | ||
1647 | FREESCALE DMA DRIVER | 1662 | FREESCALE DMA DRIVER |
1648 | P; Zhang Wei | 1663 | P: Li Yang |
1649 | M: wei.zhang@freescale.com | 1664 | M: leoli@freescale.com |
1665 | P: Zhang Wei | ||
1666 | M: zw@zh-kernel.org | ||
1650 | L: linuxppc-embedded@ozlabs.org | 1667 | L: linuxppc-embedded@ozlabs.org |
1651 | L: linux-kernel@vger.kernel.org | 1668 | L: linux-kernel@vger.kernel.org |
1652 | S: Maintained | 1669 | S: Maintained |
@@ -1940,8 +1957,10 @@ L: lm-sensors@lm-sensors.org | |||
1940 | S: Maintained | 1957 | S: Maintained |
1941 | 1958 | ||
1942 | I2C SUBSYSTEM | 1959 | I2C SUBSYSTEM |
1943 | P: Jean Delvare | 1960 | P: Jean Delvare (PC drivers, core) |
1944 | M: khali@linux-fr.org | 1961 | M: khali@linux-fr.org |
1962 | P: Ben Dooks (embedded platforms) | ||
1963 | M: ben-linux@fluff.org | ||
1945 | L: i2c@lm-sensors.org | 1964 | L: i2c@lm-sensors.org |
1946 | T: quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/ | 1965 | T: quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/ |
1947 | S: Maintained | 1966 | S: Maintained |
@@ -2327,7 +2346,8 @@ S: Maintained | |||
2327 | KERNEL BUILD (kbuild: Makefile, scripts/Makefile.*) | 2346 | KERNEL BUILD (kbuild: Makefile, scripts/Makefile.*) |
2328 | P: Sam Ravnborg | 2347 | P: Sam Ravnborg |
2329 | M: sam@ravnborg.org | 2348 | M: sam@ravnborg.org |
2330 | T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild.git | 2349 | T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-next.git |
2350 | T: git kernel.org:/pub/scm/linux/kernel/git/sam/kbuild-fixes.git | ||
2331 | L: linux-kbuild@vger.kernel.org | 2351 | L: linux-kbuild@vger.kernel.org |
2332 | S: Maintained | 2352 | S: Maintained |
2333 | 2353 | ||
@@ -2349,24 +2369,24 @@ S: Supported | |||
2349 | KERNEL VIRTUAL MACHINE (KVM) | 2369 | KERNEL VIRTUAL MACHINE (KVM) |
2350 | P: Avi Kivity | 2370 | P: Avi Kivity |
2351 | M: avi@qumranet.com | 2371 | M: avi@qumranet.com |
2352 | L: kvm-devel@lists.sourceforge.net | 2372 | L: kvm@vger.kernel.org |
2353 | W: kvm.sourceforge.net | 2373 | W: http://kvm.qumranet.com |
2354 | S: Supported | 2374 | S: Supported |
2355 | 2375 | ||
2356 | KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC | 2376 | KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC |
2357 | P: Hollis Blanchard | 2377 | P: Hollis Blanchard |
2358 | M: hollisb@us.ibm.com | 2378 | M: hollisb@us.ibm.com |
2359 | L: kvm-ppc-devel@lists.sourceforge.net | 2379 | L: kvm-ppc@vger.kernel.org |
2360 | W: kvm.sourceforge.net | 2380 | W: http://kvm.qumranet.com |
2361 | S: Supported | 2381 | S: Supported |
2362 | 2382 | ||
2363 | KERNEL VIRTUAL MACHINE For Itanium(KVM/IA64) | 2383 | KERNEL VIRTUAL MACHINE For Itanium (KVM/IA64) |
2364 | P: Anthony Xu | 2384 | P: Anthony Xu |
2365 | M: anthony.xu@intel.com | 2385 | M: anthony.xu@intel.com |
2366 | P: Xiantao Zhang | 2386 | P: Xiantao Zhang |
2367 | M: xiantao.zhang@intel.com | 2387 | M: xiantao.zhang@intel.com |
2368 | L: kvm-ia64-devel@lists.sourceforge.net | 2388 | L: kvm-ia64@vger.kernel.org |
2369 | W: kvm.sourceforge.net | 2389 | W: http://kvm.qumranet.com |
2370 | S: Supported | 2390 | S: Supported |
2371 | 2391 | ||
2372 | KERNEL VIRTUAL MACHINE for s390 (KVM/s390) | 2392 | KERNEL VIRTUAL MACHINE for s390 (KVM/s390) |
@@ -2817,6 +2837,15 @@ M: jirislaby@gmail.com | |||
2817 | L: linux-kernel@vger.kernel.org | 2837 | L: linux-kernel@vger.kernel.org |
2818 | S: Maintained | 2838 | S: Maintained |
2819 | 2839 | ||
2840 | MYRICOM MYRI-10G 10GbE DRIVER (MYRI10GE) | ||
2841 | P: Andrew Gallatin | ||
2842 | M: gallatin@myri.com | ||
2843 | P: Brice Goglin | ||
2844 | M: brice@myri.com | ||
2845 | L: netdev@vger.kernel.org | ||
2846 | W: http://www.myri.com/scs/download-Myri10GE.html | ||
2847 | S: Supported | ||
2848 | |||
2820 | NATSEMI ETHERNET DRIVER (DP8381x) | 2849 | NATSEMI ETHERNET DRIVER (DP8381x) |
2821 | P: Tim Hockin | 2850 | P: Tim Hockin |
2822 | M: thockin@hockin.org | 2851 | M: thockin@hockin.org |
@@ -3130,7 +3159,7 @@ PCI ERROR RECOVERY | |||
3130 | P: Linas Vepstas | 3159 | P: Linas Vepstas |
3131 | M: linas@austin.ibm.com | 3160 | M: linas@austin.ibm.com |
3132 | L: linux-kernel@vger.kernel.org | 3161 | L: linux-kernel@vger.kernel.org |
3133 | L: linux-pci@atrey.karlin.mff.cuni.cz | 3162 | L: linux-pci@vger.kernel.org |
3134 | S: Supported | 3163 | S: Supported |
3135 | 3164 | ||
3136 | PCI SUBSYSTEM | 3165 | PCI SUBSYSTEM |
@@ -3764,6 +3793,14 @@ M: dbrownell@users.sourceforge.net | |||
3764 | L: spi-devel-general@lists.sourceforge.net | 3793 | L: spi-devel-general@lists.sourceforge.net |
3765 | S: Maintained | 3794 | S: Maintained |
3766 | 3795 | ||
3796 | SPU FILE SYSTEM | ||
3797 | P: Jeremy Kerr | ||
3798 | M: jk@ozlabs.org | ||
3799 | L: linuxppc-dev@ozlabs.org | ||
3800 | L: cbe-oss-dev@ozlabs.org | ||
3801 | W: http://www.ibm.com/developerworks/power/cell/ | ||
3802 | S: Supported | ||
3803 | |||
3767 | STABLE BRANCH: | 3804 | STABLE BRANCH: |
3768 | P: Greg Kroah-Hartman | 3805 | P: Greg Kroah-Hartman |
3769 | M: greg@kroah.com | 3806 | M: greg@kroah.com |
@@ -4019,12 +4056,41 @@ M: ballabio_dario@emc.com | |||
4019 | L: linux-scsi@vger.kernel.org | 4056 | L: linux-scsi@vger.kernel.org |
4020 | S: Maintained | 4057 | S: Maintained |
4021 | 4058 | ||
4059 | UCLINUX (AND M68KNOMMU) | ||
4060 | P: Greg Ungerer | ||
4061 | M: gerg@uclinux.org | ||
4062 | W: http://www.uclinux.org/ | ||
4063 | L: uclinux-dev@uclinux.org (subscribers-only) | ||
4064 | S: Maintained | ||
4065 | |||
4066 | UCLINUX FOR NEC V850 | ||
4067 | P: Miles Bader | ||
4068 | |||
4069 | UCLINUX FOR RENESAS H8/300 | ||
4070 | P: Yoshinori Sato | ||
4071 | M: ysato@users.sourceforge.jp | ||
4072 | W: http://uclinux-h8.sourceforge.jp/ | ||
4073 | S: Supported | ||
4074 | |||
4022 | UDF FILESYSTEM | 4075 | UDF FILESYSTEM |
4023 | P: Jan Kara | 4076 | P: Jan Kara |
4024 | M: jack@suse.cz | 4077 | M: jack@suse.cz |
4025 | W: http://linux-udf.sourceforge.net | 4078 | W: http://linux-udf.sourceforge.net |
4026 | S: Maintained | 4079 | S: Maintained |
4027 | 4080 | ||
4081 | UFS FILESYSTEM | ||
4082 | P: Evgeniy Dushistov | ||
4083 | M: dushistov@mail.ru | ||
4084 | L: linux-kernel@vger.kernel.org | ||
4085 | S: Maintained | ||
4086 | |||
4087 | UltraSPARC (sparc64): | ||
4088 | P: David S. Miller | ||
4089 | M: davem@davemloft.net | ||
4090 | L: sparclinux@vger.kernel.org | ||
4091 | T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git | ||
4092 | S: Maintained | ||
4093 | |||
4028 | UNIFORM CDROM DRIVER | 4094 | UNIFORM CDROM DRIVER |
4029 | P: Jens Axboe | 4095 | P: Jens Axboe |
4030 | M: axboe@kernel.dk | 4096 | M: axboe@kernel.dk |
@@ -4071,6 +4137,13 @@ L: netdev@vger.kernel.org | |||
4071 | W: http://www.linux-usb.org/usbnet | 4137 | W: http://www.linux-usb.org/usbnet |
4072 | S: Maintained | 4138 | S: Maintained |
4073 | 4139 | ||
4140 | USB DIAMOND RIO500 DRIVER | ||
4141 | P: Cesar Miquel | ||
4142 | M: miquel@df.uba.ar | ||
4143 | L: rio500-users@lists.sourceforge.net | ||
4144 | W: http://rio500.sourceforge.net | ||
4145 | S: Maintained | ||
4146 | |||
4074 | USB EHCI DRIVER | 4147 | USB EHCI DRIVER |
4075 | P: David Brownell | 4148 | P: David Brownell |
4076 | M: dbrownell@users.sourceforge.net | 4149 | M: dbrownell@users.sourceforge.net |
@@ -4302,6 +4375,14 @@ M: gregkh@suse.de | |||
4302 | L: linux-kernel@vger.kernel.org | 4375 | L: linux-kernel@vger.kernel.org |
4303 | S: Maintained | 4376 | S: Maintained |
4304 | 4377 | ||
4378 | UTIL-LINUX-NG PACKAGE | ||
4379 | P: Karel Zak | ||
4380 | M: kzak@redhat.com | ||
4381 | L: util-linux-ng@vger.kernel.org | ||
4382 | W: http://kernel.org/~kzak/util-linux-ng/ | ||
4383 | T: git://git.kernel.org/pub/scm/utils/util-linux-ng/util-linux-ng.git | ||
4384 | S: Maintained | ||
4385 | |||
4305 | VFAT/FAT/MSDOS FILESYSTEM: | 4386 | VFAT/FAT/MSDOS FILESYSTEM: |
4306 | P: OGAWA Hirofumi | 4387 | P: OGAWA Hirofumi |
4307 | M: hirofumi@mail.parknet.co.jp | 4388 | M: hirofumi@mail.parknet.co.jp |
@@ -4325,42 +4406,6 @@ M: romieu@fr.zoreil.com | |||
4325 | L: netdev@vger.kernel.org | 4406 | L: netdev@vger.kernel.org |
4326 | S: Maintained | 4407 | S: Maintained |
4327 | 4408 | ||
4328 | UCLINUX (AND M68KNOMMU) | ||
4329 | P: Greg Ungerer | ||
4330 | M: gerg@uclinux.org | ||
4331 | W: http://www.uclinux.org/ | ||
4332 | L: uclinux-dev@uclinux.org (subscribers-only) | ||
4333 | S: Maintained | ||
4334 | |||
4335 | UCLINUX FOR NEC V850 | ||
4336 | P: Miles Bader | ||
4337 | |||
4338 | UCLINUX FOR RENESAS H8/300 | ||
4339 | P: Yoshinori Sato | ||
4340 | M: ysato@users.sourceforge.jp | ||
4341 | W: http://uclinux-h8.sourceforge.jp/ | ||
4342 | S: Supported | ||
4343 | |||
4344 | UFS FILESYSTEM | ||
4345 | P: Evgeniy Dushistov | ||
4346 | M: dushistov@mail.ru | ||
4347 | L: linux-kernel@vger.kernel.org | ||
4348 | S: Maintained | ||
4349 | |||
4350 | UltraSPARC (sparc64): | ||
4351 | P: David S. Miller | ||
4352 | M: davem@davemloft.net | ||
4353 | L: sparclinux@vger.kernel.org | ||
4354 | T: git kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6.git | ||
4355 | S: Maintained | ||
4356 | |||
4357 | USB DIAMOND RIO500 DRIVER | ||
4358 | P: Cesar Miquel | ||
4359 | M: miquel@df.uba.ar | ||
4360 | L: rio500-users@lists.sourceforge.net | ||
4361 | W: http://rio500.sourceforge.net | ||
4362 | S: Maintained | ||
4363 | |||
4364 | VIDEO FOR LINUX | 4409 | VIDEO FOR LINUX |
4365 | P: Mauro Carvalho Chehab | 4410 | P: Mauro Carvalho Chehab |
4366 | M: mchehab@infradead.org | 4411 | M: mchehab@infradead.org |
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 2 | 1 | VERSION = 2 |
2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
3 | SUBLEVEL = 26 | 3 | SUBLEVEL = 26 |
4 | EXTRAVERSION = -rc2 | 4 | EXTRAVERSION = -rc4 |
5 | NAME = Funky Weasel is Jiggy wit it | 5 | NAME = Funky Weasel is Jiggy wit it |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
@@ -1114,6 +1114,7 @@ MRPROPER_DIRS += include/config include2 usr/include | |||
1114 | MRPROPER_FILES += .config .config.old include/asm .version .old_version \ | 1114 | MRPROPER_FILES += .config .config.old include/asm .version .old_version \ |
1115 | include/linux/autoconf.h include/linux/version.h \ | 1115 | include/linux/autoconf.h include/linux/version.h \ |
1116 | include/linux/utsrelease.h \ | 1116 | include/linux/utsrelease.h \ |
1117 | include/linux/bounds.h include/asm*/asm-offsets.h \ | ||
1117 | Module.symvers tags TAGS cscope* | 1118 | Module.symvers tags TAGS cscope* |
1118 | 1119 | ||
1119 | # clean - Delete most, but leave enough to build external modules | 1120 | # clean - Delete most, but leave enough to build external modules |
@@ -1431,7 +1432,7 @@ define xtags | |||
1431 | elif $1 --version 2>&1 | grep -iq emacs; then \ | 1432 | elif $1 --version 2>&1 | grep -iq emacs; then \ |
1432 | $(all-sources) | xargs $1 -a; \ | 1433 | $(all-sources) | xargs $1 -a; \ |
1433 | $(all-kconfigs) | xargs $1 -a \ | 1434 | $(all-kconfigs) | xargs $1 -a \ |
1434 | --regex='/^[ \t]*(menu|)config[ \t]+\([a-zA-Z0-9_]+\)/\2/'; \ | 1435 | --regex='/^[ \t]*\(\(menu\)*config\)[ \t]+\([a-zA-Z0-9_]+\)/\3/'; \ |
1435 | $(all-defconfigs) | xargs -r $1 -a \ | 1436 | $(all-defconfigs) | xargs -r $1 -a \ |
1436 | --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \ | 1437 | --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \ |
1437 | else \ | 1438 | else \ |
diff --git a/arch/alpha/kernel/init_task.c b/arch/alpha/kernel/init_task.c index 835d09a7b332..1f762189fa64 100644 --- a/arch/alpha/kernel/init_task.c +++ b/arch/alpha/kernel/init_task.c | |||
@@ -9,7 +9,6 @@ | |||
9 | 9 | ||
10 | 10 | ||
11 | static struct fs_struct init_fs = INIT_FS; | 11 | static struct fs_struct init_fs = INIT_FS; |
12 | static struct files_struct init_files = INIT_FILES; | ||
13 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 12 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
14 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 13 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
15 | struct mm_struct init_mm = INIT_MM(init_mm); | 14 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/arm/common/locomo.c b/arch/arm/common/locomo.c index ae21755872ed..d973c986f721 100644 --- a/arch/arm/common/locomo.c +++ b/arch/arm/common/locomo.c | |||
@@ -321,11 +321,42 @@ static void locomo_gpio_unmask_irq(unsigned int irq) | |||
321 | locomo_writel(r, mapbase + LOCOMO_GIE); | 321 | locomo_writel(r, mapbase + LOCOMO_GIE); |
322 | } | 322 | } |
323 | 323 | ||
324 | static int GPIO_IRQ_rising_edge; | ||
325 | static int GPIO_IRQ_falling_edge; | ||
326 | |||
327 | static int locomo_gpio_type(unsigned int irq, unsigned int type) | ||
328 | { | ||
329 | unsigned int mask; | ||
330 | void __iomem *mapbase = get_irq_chip_data(irq); | ||
331 | |||
332 | mask = 1 << (irq - LOCOMO_IRQ_GPIO_START); | ||
333 | |||
334 | if (type == IRQT_PROBE) { | ||
335 | if ((GPIO_IRQ_rising_edge | GPIO_IRQ_falling_edge) & mask) | ||
336 | return 0; | ||
337 | type = __IRQT_RISEDGE | __IRQT_FALEDGE; | ||
338 | } | ||
339 | |||
340 | if (type & __IRQT_RISEDGE) | ||
341 | GPIO_IRQ_rising_edge |= mask; | ||
342 | else | ||
343 | GPIO_IRQ_rising_edge &= ~mask; | ||
344 | if (type & __IRQT_FALEDGE) | ||
345 | GPIO_IRQ_falling_edge |= mask; | ||
346 | else | ||
347 | GPIO_IRQ_falling_edge &= ~mask; | ||
348 | locomo_writel(GPIO_IRQ_rising_edge, mapbase + LOCOMO_GRIE); | ||
349 | locomo_writel(GPIO_IRQ_falling_edge, mapbase + LOCOMO_GFIE); | ||
350 | |||
351 | return 0; | ||
352 | } | ||
353 | |||
324 | static struct irq_chip locomo_gpio_chip = { | 354 | static struct irq_chip locomo_gpio_chip = { |
325 | .name = "LOCOMO-gpio", | 355 | .name = "LOCOMO-gpio", |
326 | .ack = locomo_gpio_ack_irq, | 356 | .ack = locomo_gpio_ack_irq, |
327 | .mask = locomo_gpio_mask_irq, | 357 | .mask = locomo_gpio_mask_irq, |
328 | .unmask = locomo_gpio_unmask_irq, | 358 | .unmask = locomo_gpio_unmask_irq, |
359 | .set_type = locomo_gpio_type, | ||
329 | }; | 360 | }; |
330 | 361 | ||
331 | static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc) | 362 | static void locomo_lt_handler(unsigned int irq, struct irq_desc *desc) |
@@ -450,22 +481,18 @@ static void locomo_setup_irq(struct locomo *lchip) | |||
450 | set_irq_chip(IRQ_LOCOMO_KEY_BASE, &locomo_chip); | 481 | set_irq_chip(IRQ_LOCOMO_KEY_BASE, &locomo_chip); |
451 | set_irq_chip_data(IRQ_LOCOMO_KEY_BASE, irqbase); | 482 | set_irq_chip_data(IRQ_LOCOMO_KEY_BASE, irqbase); |
452 | set_irq_chained_handler(IRQ_LOCOMO_KEY_BASE, locomo_key_handler); | 483 | set_irq_chained_handler(IRQ_LOCOMO_KEY_BASE, locomo_key_handler); |
453 | set_irq_flags(IRQ_LOCOMO_KEY_BASE, IRQF_VALID | IRQF_PROBE); | ||
454 | 484 | ||
455 | set_irq_chip(IRQ_LOCOMO_GPIO_BASE, &locomo_chip); | 485 | set_irq_chip(IRQ_LOCOMO_GPIO_BASE, &locomo_chip); |
456 | set_irq_chip_data(IRQ_LOCOMO_GPIO_BASE, irqbase); | 486 | set_irq_chip_data(IRQ_LOCOMO_GPIO_BASE, irqbase); |
457 | set_irq_chained_handler(IRQ_LOCOMO_GPIO_BASE, locomo_gpio_handler); | 487 | set_irq_chained_handler(IRQ_LOCOMO_GPIO_BASE, locomo_gpio_handler); |
458 | set_irq_flags(IRQ_LOCOMO_GPIO_BASE, IRQF_VALID | IRQF_PROBE); | ||
459 | 488 | ||
460 | set_irq_chip(IRQ_LOCOMO_LT_BASE, &locomo_chip); | 489 | set_irq_chip(IRQ_LOCOMO_LT_BASE, &locomo_chip); |
461 | set_irq_chip_data(IRQ_LOCOMO_LT_BASE, irqbase); | 490 | set_irq_chip_data(IRQ_LOCOMO_LT_BASE, irqbase); |
462 | set_irq_chained_handler(IRQ_LOCOMO_LT_BASE, locomo_lt_handler); | 491 | set_irq_chained_handler(IRQ_LOCOMO_LT_BASE, locomo_lt_handler); |
463 | set_irq_flags(IRQ_LOCOMO_LT_BASE, IRQF_VALID | IRQF_PROBE); | ||
464 | 492 | ||
465 | set_irq_chip(IRQ_LOCOMO_SPI_BASE, &locomo_chip); | 493 | set_irq_chip(IRQ_LOCOMO_SPI_BASE, &locomo_chip); |
466 | set_irq_chip_data(IRQ_LOCOMO_SPI_BASE, irqbase); | 494 | set_irq_chip_data(IRQ_LOCOMO_SPI_BASE, irqbase); |
467 | set_irq_chained_handler(IRQ_LOCOMO_SPI_BASE, locomo_spi_handler); | 495 | set_irq_chained_handler(IRQ_LOCOMO_SPI_BASE, locomo_spi_handler); |
468 | set_irq_flags(IRQ_LOCOMO_SPI_BASE, IRQF_VALID | IRQF_PROBE); | ||
469 | 496 | ||
470 | /* install handlers for IRQ_LOCOMO_KEY_BASE generated interrupts */ | 497 | /* install handlers for IRQ_LOCOMO_KEY_BASE generated interrupts */ |
471 | set_irq_chip(LOCOMO_IRQ_KEY_START, &locomo_key_chip); | 498 | set_irq_chip(LOCOMO_IRQ_KEY_START, &locomo_key_chip); |
@@ -488,7 +515,7 @@ static void locomo_setup_irq(struct locomo *lchip) | |||
488 | set_irq_flags(LOCOMO_IRQ_LT_START, IRQF_VALID | IRQF_PROBE); | 515 | set_irq_flags(LOCOMO_IRQ_LT_START, IRQF_VALID | IRQF_PROBE); |
489 | 516 | ||
490 | /* install handlers for IRQ_LOCOMO_SPI_BASE generated interrupts */ | 517 | /* install handlers for IRQ_LOCOMO_SPI_BASE generated interrupts */ |
491 | for (irq = LOCOMO_IRQ_SPI_START; irq < LOCOMO_IRQ_SPI_START + 3; irq++) { | 518 | for (irq = LOCOMO_IRQ_SPI_START; irq < LOCOMO_IRQ_SPI_START + 4; irq++) { |
492 | set_irq_chip(irq, &locomo_spi_chip); | 519 | set_irq_chip(irq, &locomo_spi_chip); |
493 | set_irq_chip_data(irq, irqbase); | 520 | set_irq_chip_data(irq, irqbase); |
494 | set_irq_handler(irq, handle_edge_irq); | 521 | set_irq_handler(irq, handle_edge_irq); |
@@ -574,20 +601,20 @@ static int locomo_suspend(struct platform_device *dev, pm_message_t state) | |||
574 | 601 | ||
575 | save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */ | 602 | save->LCM_GPO = locomo_readl(lchip->base + LOCOMO_GPO); /* GPIO */ |
576 | locomo_writel(0x00, lchip->base + LOCOMO_GPO); | 603 | locomo_writel(0x00, lchip->base + LOCOMO_GPO); |
577 | save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPICT); /* SPI */ | 604 | save->LCM_SPICT = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPICT); /* SPI */ |
578 | locomo_writel(0x40, lchip->base + LOCOMO_SPICT); | 605 | locomo_writel(0x40, lchip->base + LOCOMO_SPICT); |
579 | save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */ | 606 | save->LCM_GPE = locomo_readl(lchip->base + LOCOMO_GPE); /* GPIO */ |
580 | locomo_writel(0x00, lchip->base + LOCOMO_GPE); | 607 | locomo_writel(0x00, lchip->base + LOCOMO_GPE); |
581 | save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */ | 608 | save->LCM_ASD = locomo_readl(lchip->base + LOCOMO_ASD); /* ADSTART */ |
582 | locomo_writel(0x00, lchip->base + LOCOMO_ASD); | 609 | locomo_writel(0x00, lchip->base + LOCOMO_ASD); |
583 | save->LCM_SPIMD = locomo_readl(lchip->base + LOCOMO_SPIMD); /* SPI */ | 610 | save->LCM_SPIMD = locomo_readl(lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); /* SPI */ |
584 | locomo_writel(0x3C14, lchip->base + LOCOMO_SPIMD); | 611 | locomo_writel(0x3C14, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); |
585 | 612 | ||
586 | locomo_writel(0x00, lchip->base + LOCOMO_PAIF); | 613 | locomo_writel(0x00, lchip->base + LOCOMO_PAIF); |
587 | locomo_writel(0x00, lchip->base + LOCOMO_DAC); | 614 | locomo_writel(0x00, lchip->base + LOCOMO_DAC); |
588 | locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC); | 615 | locomo_writel(0x00, lchip->base + LOCOMO_BACKLIGHT + LOCOMO_TC); |
589 | 616 | ||
590 | if ( (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT1) & 0x88) ) | 617 | if ((locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT0) & 0x88) && (locomo_readl(lchip->base + LOCOMO_LED + LOCOMO_LPT1) & 0x88)) |
591 | locomo_writel(0x00, lchip->base + LOCOMO_C32K); /* CLK32 off */ | 618 | locomo_writel(0x00, lchip->base + LOCOMO_C32K); /* CLK32 off */ |
592 | else | 619 | else |
593 | /* 18MHz already enabled, so no wait */ | 620 | /* 18MHz already enabled, so no wait */ |
@@ -616,10 +643,10 @@ static int locomo_resume(struct platform_device *dev) | |||
616 | spin_lock_irqsave(&lchip->lock, flags); | 643 | spin_lock_irqsave(&lchip->lock, flags); |
617 | 644 | ||
618 | locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO); | 645 | locomo_writel(save->LCM_GPO, lchip->base + LOCOMO_GPO); |
619 | locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPICT); | 646 | locomo_writel(save->LCM_SPICT, lchip->base + LOCOMO_SPI + LOCOMO_SPICT); |
620 | locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE); | 647 | locomo_writel(save->LCM_GPE, lchip->base + LOCOMO_GPE); |
621 | locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD); | 648 | locomo_writel(save->LCM_ASD, lchip->base + LOCOMO_ASD); |
622 | locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPIMD); | 649 | locomo_writel(save->LCM_SPIMD, lchip->base + LOCOMO_SPI + LOCOMO_SPIMD); |
623 | 650 | ||
624 | locomo_writel(0x00, lchip->base + LOCOMO_C32K); | 651 | locomo_writel(0x00, lchip->base + LOCOMO_C32K); |
625 | locomo_writel(0x90, lchip->base + LOCOMO_TADC); | 652 | locomo_writel(0x90, lchip->base + LOCOMO_TADC); |
@@ -688,9 +715,9 @@ __locomo_probe(struct device *me, struct resource *mem, int irq) | |||
688 | 715 | ||
689 | /* GPIO */ | 716 | /* GPIO */ |
690 | locomo_writel(0, lchip->base + LOCOMO_GPO); | 717 | locomo_writel(0, lchip->base + LOCOMO_GPO); |
691 | locomo_writel( (LOCOMO_GPIO(2) | LOCOMO_GPIO(3) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14)) | 718 | locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14)) |
692 | , lchip->base + LOCOMO_GPE); | 719 | , lchip->base + LOCOMO_GPE); |
693 | locomo_writel( (LOCOMO_GPIO(2) | LOCOMO_GPIO(3) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14)) | 720 | locomo_writel((LOCOMO_GPIO(1) | LOCOMO_GPIO(2) | LOCOMO_GPIO(13) | LOCOMO_GPIO(14)) |
694 | , lchip->base + LOCOMO_GPD); | 721 | , lchip->base + LOCOMO_GPD); |
695 | locomo_writel(0, lchip->base + LOCOMO_GIE); | 722 | locomo_writel(0, lchip->base + LOCOMO_GIE); |
696 | 723 | ||
@@ -833,7 +860,10 @@ void locomo_gpio_set_dir(struct device *dev, unsigned int bits, unsigned int dir | |||
833 | spin_lock_irqsave(&lchip->lock, flags); | 860 | spin_lock_irqsave(&lchip->lock, flags); |
834 | 861 | ||
835 | r = locomo_readl(lchip->base + LOCOMO_GPD); | 862 | r = locomo_readl(lchip->base + LOCOMO_GPD); |
836 | r &= ~bits; | 863 | if (dir) |
864 | r |= bits; | ||
865 | else | ||
866 | r &= ~bits; | ||
837 | locomo_writel(r, lchip->base + LOCOMO_GPD); | 867 | locomo_writel(r, lchip->base + LOCOMO_GPD); |
838 | 868 | ||
839 | r = locomo_readl(lchip->base + LOCOMO_GPE); | 869 | r = locomo_readl(lchip->base + LOCOMO_GPE); |
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index f73d62e8ab60..688b7b1ee416 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c | |||
@@ -179,3 +179,5 @@ EXPORT_SYMBOL(_find_next_zero_bit_be); | |||
179 | EXPORT_SYMBOL(_find_first_bit_be); | 179 | EXPORT_SYMBOL(_find_first_bit_be); |
180 | EXPORT_SYMBOL(_find_next_bit_be); | 180 | EXPORT_SYMBOL(_find_next_bit_be); |
181 | #endif | 181 | #endif |
182 | |||
183 | EXPORT_SYMBOL(copy_page); | ||
diff --git a/arch/arm/kernel/arthur.c b/arch/arm/kernel/arthur.c index 0ee2e9819631..321c5291d05f 100644 --- a/arch/arm/kernel/arthur.c +++ b/arch/arm/kernel/arthur.c | |||
@@ -90,3 +90,5 @@ static void __exit arthur_exit(void) | |||
90 | 90 | ||
91 | module_init(arthur_init); | 91 | module_init(arthur_init); |
92 | module_exit(arthur_exit); | 92 | module_exit(arthur_exit); |
93 | |||
94 | MODULE_LICENSE("GPL"); | ||
diff --git a/arch/arm/kernel/init_task.c b/arch/arm/kernel/init_task.c index bd4ef53bc6b9..8b8c9d38a761 100644 --- a/arch/arm/kernel/init_task.c +++ b/arch/arm/kernel/init_task.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | 14 | ||
15 | static struct fs_struct init_fs = INIT_FS; | 15 | static struct fs_struct init_fs = INIT_FS; |
16 | static struct files_struct init_files = INIT_FILES; | ||
17 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 16 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
18 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 17 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
19 | struct mm_struct init_mm = INIT_MM(init_mm); | 18 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/arm/mach-at91/at91x40.c b/arch/arm/mach-at91/at91x40.c index 1de121fc55f4..f44647738ee4 100644 --- a/arch/arm/mach-at91/at91x40.c +++ b/arch/arm/mach-at91/at91x40.c | |||
@@ -16,16 +16,32 @@ | |||
16 | #include <asm/mach/arch.h> | 16 | #include <asm/mach/arch.h> |
17 | #include <asm/arch/at91x40.h> | 17 | #include <asm/arch/at91x40.h> |
18 | #include <asm/arch/at91_st.h> | 18 | #include <asm/arch/at91_st.h> |
19 | #include <asm/arch/timex.h> | ||
19 | #include "generic.h" | 20 | #include "generic.h" |
20 | 21 | ||
21 | /* | 22 | /* |
22 | * This is used in the gpio code, stub locally. | 23 | * Export the clock functions for the AT91X40. Some external code common |
24 | * to all AT91 family parts relys on this, like the gpio and serial support. | ||
23 | */ | 25 | */ |
24 | int clk_enable(struct clk *clk) | 26 | int clk_enable(struct clk *clk) |
25 | { | 27 | { |
26 | return 0; | 28 | return 0; |
27 | } | 29 | } |
28 | 30 | ||
31 | void clk_disable(struct clk *clk) | ||
32 | { | ||
33 | } | ||
34 | |||
35 | unsigned long clk_get_rate(struct clk *clk) | ||
36 | { | ||
37 | return AT91X40_MASTER_CLOCK; | ||
38 | } | ||
39 | |||
40 | struct clk *clk_get(struct device *dev, const char *id) | ||
41 | { | ||
42 | return NULL; | ||
43 | } | ||
44 | |||
29 | void __init at91x40_initialize(unsigned long main_clock) | 45 | void __init at91x40_initialize(unsigned long main_clock) |
30 | { | 46 | { |
31 | at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1) | 47 | at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1) |
diff --git a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c index 92d79fb39311..62e653a3ea1a 100644 --- a/arch/arm/mach-integrator/impd1.c +++ b/arch/arm/mach-integrator/impd1.c | |||
@@ -369,7 +369,8 @@ static int impd1_probe(struct lm_device *dev) | |||
369 | 369 | ||
370 | lm_set_drvdata(dev, impd1); | 370 | lm_set_drvdata(dev, impd1); |
371 | 371 | ||
372 | printk("IM-PD1 found at 0x%08lx\n", dev->resource.start); | 372 | printk("IM-PD1 found at 0x%08lx\n", |
373 | (unsigned long)dev->resource.start); | ||
373 | 374 | ||
374 | for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) { | 375 | for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) { |
375 | impd1->vcos[i].owner = THIS_MODULE, | 376 | impd1->vcos[i].owner = THIS_MODULE, |
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c index d55fa4e9bb43..c07f497000ca 100644 --- a/arch/arm/mach-integrator/pci_v3.c +++ b/arch/arm/mach-integrator/pci_v3.c | |||
@@ -405,7 +405,6 @@ v3_pci_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
405 | addr, fsr, pc, instr, __raw_readl(SC_LBFADDR), __raw_readl(SC_LBFCODE) & 255, | 405 | addr, fsr, pc, instr, __raw_readl(SC_LBFADDR), __raw_readl(SC_LBFCODE) & 255, |
406 | v3_readb(V3_LB_ISTAT)); | 406 | v3_readb(V3_LB_ISTAT)); |
407 | printk(KERN_DEBUG "%s", buf); | 407 | printk(KERN_DEBUG "%s", buf); |
408 | printascii(buf); | ||
409 | #endif | 408 | #endif |
410 | 409 | ||
411 | v3_writeb(V3_LB_ISTAT, 0); | 410 | v3_writeb(V3_LB_ISTAT, 0); |
@@ -447,6 +446,7 @@ static irqreturn_t v3_irq(int dummy, void *devid) | |||
447 | unsigned long pc = instruction_pointer(regs); | 446 | unsigned long pc = instruction_pointer(regs); |
448 | unsigned long instr = *(unsigned long *)pc; | 447 | unsigned long instr = *(unsigned long *)pc; |
449 | char buf[128]; | 448 | char buf[128]; |
449 | extern void printascii(const char *); | ||
450 | 450 | ||
451 | sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x " | 451 | sprintf(buf, "V3 int %d: pc=0x%08lx [%08lx] LBFADDR=%08x LBFCODE=%02x " |
452 | "ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr, | 452 | "ISTAT=%02x\n", IRQ_AP_V3INT, pc, instr, |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index ca1a4bf78a10..a4d20127a60e 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/mtd/mtd.h> | 24 | #include <linux/mtd/mtd.h> |
25 | #include <linux/mtd/partitions.h> | 25 | #include <linux/mtd/partitions.h> |
26 | #include <linux/spi/spi.h> | 26 | #include <linux/spi/spi.h> |
27 | #include <linux/spi/tsc2102.h> | ||
28 | #include <linux/interrupt.h> | 27 | #include <linux/interrupt.h> |
29 | #include <linux/apm-emulation.h> | 28 | #include <linux/apm-emulation.h> |
30 | 29 | ||
@@ -63,7 +62,7 @@ static const int palmte_keymap[] = { | |||
63 | KEY(1, 1, KEY_DOWN), | 62 | KEY(1, 1, KEY_DOWN), |
64 | KEY(1, 2, KEY_UP), | 63 | KEY(1, 2, KEY_UP), |
65 | KEY(1, 3, KEY_RIGHT), | 64 | KEY(1, 3, KEY_RIGHT), |
66 | KEY(1, 4, KEY_CENTER), | 65 | KEY(1, 4, KEY_ENTER), |
67 | 0, | 66 | 0, |
68 | }; | 67 | }; |
69 | 68 | ||
@@ -315,14 +314,6 @@ static void palmte_get_power_status(struct apm_power_info *info, int *battery) | |||
315 | #define palmte_get_power_status NULL | 314 | #define palmte_get_power_status NULL |
316 | #endif | 315 | #endif |
317 | 316 | ||
318 | static struct tsc2102_config palmte_tsc2102_config = { | ||
319 | .use_internal = 0, | ||
320 | .monitor = TSC_BAT1 | TSC_AUX | TSC_TEMP, | ||
321 | .temp_at25c = { 2200, 2615 }, | ||
322 | .apm_report = palmte_get_power_status, | ||
323 | .alsa_config = &palmte_alsa_config, | ||
324 | }; | ||
325 | |||
326 | static struct omap_board_config_kernel palmte_config[] __initdata = { | 317 | static struct omap_board_config_kernel palmte_config[] __initdata = { |
327 | { OMAP_TAG_USB, &palmte_usb_config }, | 318 | { OMAP_TAG_USB, &palmte_usb_config }, |
328 | { OMAP_TAG_MMC, &palmte_mmc_config }, | 319 | { OMAP_TAG_MMC, &palmte_mmc_config }, |
@@ -336,7 +327,6 @@ static struct spi_board_info palmte_spi_info[] __initdata = { | |||
336 | .bus_num = 2, /* uWire (officially) */ | 327 | .bus_num = 2, /* uWire (officially) */ |
337 | .chip_select = 0, /* As opposed to 3 */ | 328 | .chip_select = 0, /* As opposed to 3 */ |
338 | .irq = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO), | 329 | .irq = OMAP_GPIO_IRQ(PALMTE_PINTDAV_GPIO), |
339 | .platform_data = &palmte_tsc2102_config, | ||
340 | .max_speed_hz = 8000000, | 330 | .max_speed_hz = 8000000, |
341 | }, | 331 | }, |
342 | }; | 332 | }; |
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index 156510777ffe..e020c2774606 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -65,7 +65,7 @@ static int palmz71_keymap[] = { | |||
65 | KEY(1, 1, KEY_DOWN), | 65 | KEY(1, 1, KEY_DOWN), |
66 | KEY(1, 2, KEY_UP), | 66 | KEY(1, 2, KEY_UP), |
67 | KEY(1, 3, KEY_RIGHT), | 67 | KEY(1, 3, KEY_RIGHT), |
68 | KEY(1, 4, KEY_CENTER), | 68 | KEY(1, 4, KEY_ENTER), |
69 | KEY(2, 0, KEY_CAMERA), | 69 | KEY(2, 0, KEY_CAMERA), |
70 | 0, | 70 | 0, |
71 | }; | 71 | }; |
diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 1c12d7c6c7fc..1682eb77c46d 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c | |||
@@ -208,6 +208,7 @@ static void __init omap_2430sdp_init(void) | |||
208 | 208 | ||
209 | static void __init omap_2430sdp_map_io(void) | 209 | static void __init omap_2430sdp_map_io(void) |
210 | { | 210 | { |
211 | omap2_set_globals_243x(); | ||
211 | omap2_map_common_io(); | 212 | omap2_map_common_io(); |
212 | } | 213 | } |
213 | 214 | ||
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index a1e1e6765b5b..620fa0f120ee 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -394,6 +394,7 @@ static void __init omap_apollon_init(void) | |||
394 | 394 | ||
395 | static void __init omap_apollon_map_io(void) | 395 | static void __init omap_apollon_map_io(void) |
396 | { | 396 | { |
397 | omap2_set_globals_242x(); | ||
397 | omap2_map_common_io(); | 398 | omap2_map_common_io(); |
398 | } | 399 | } |
399 | 400 | ||
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c index 90938151bcf1..df8be081e159 100644 --- a/arch/arm/mach-omap2/board-generic.c +++ b/arch/arm/mach-omap2/board-generic.c | |||
@@ -65,6 +65,7 @@ static void __init omap_generic_init(void) | |||
65 | 65 | ||
66 | static void __init omap_generic_map_io(void) | 66 | static void __init omap_generic_map_io(void) |
67 | { | 67 | { |
68 | omap2_set_globals_242x(); /* should be 242x, 243x, or 343x */ | ||
68 | omap2_map_common_io(); | 69 | omap2_map_common_io(); |
69 | } | 70 | } |
70 | 71 | ||
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index d1915f99a5fa..0d28f6897c8e 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -420,6 +420,7 @@ static void __init omap_h4_init(void) | |||
420 | 420 | ||
421 | static void __init omap_h4_map_io(void) | 421 | static void __init omap_h4_map_io(void) |
422 | { | 422 | { |
423 | omap2_set_globals_242x(); | ||
423 | omap2_map_common_io(); | 424 | omap2_map_common_io(); |
424 | } | 425 | } |
425 | 426 | ||
diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c index b57ffb5a22a5..ab9fc57d25f1 100644 --- a/arch/arm/mach-omap2/clock.c +++ b/arch/arm/mach-omap2/clock.c | |||
@@ -205,7 +205,9 @@ static void omap2_clk_wait_ready(struct clk *clk) | |||
205 | /* REVISIT: What are the appropriate exclusions for 34XX? */ | 205 | /* REVISIT: What are the appropriate exclusions for 34XX? */ |
206 | /* OMAP3: ignore DSS-mod clocks */ | 206 | /* OMAP3: ignore DSS-mod clocks */ |
207 | if (cpu_is_omap34xx() && | 207 | if (cpu_is_omap34xx() && |
208 | (((u32)reg & ~0xff) == (u32)OMAP_CM_REGADDR(OMAP3430_DSS_MOD, 0))) | 208 | (((u32)reg & ~0xff) == (u32)OMAP_CM_REGADDR(OMAP3430_DSS_MOD, 0) || |
209 | ((((u32)reg & ~0xff) == (u32)OMAP_CM_REGADDR(CORE_MOD, 0)) && | ||
210 | clk->enable_bit == OMAP3430_EN_SSI_SHIFT))) | ||
209 | return; | 211 | return; |
210 | 212 | ||
211 | /* Check if both functional and interface clocks | 213 | /* Check if both functional and interface clocks |
diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h index cf4644a94b9b..c9c5972a2e25 100644 --- a/arch/arm/mach-omap2/clock34xx.h +++ b/arch/arm/mach-omap2/clock34xx.h | |||
@@ -836,7 +836,8 @@ static struct clk dpll5_m2_ck = { | |||
836 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKSEL5), | 836 | .clksel_reg = OMAP_CM_REGADDR(PLL_MOD, OMAP3430ES2_CM_CLKSEL5), |
837 | .clksel_mask = OMAP3430ES2_DIV_120M_MASK, | 837 | .clksel_mask = OMAP3430ES2_DIV_120M_MASK, |
838 | .clksel = div16_dpll5_clksel, | 838 | .clksel = div16_dpll5_clksel, |
839 | .flags = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES, | 839 | .flags = CLOCK_IN_OMAP3430ES2 | RATE_PROPAGATES | |
840 | PARENT_CONTROLS_CLOCK, | ||
840 | .recalc = &omap2_clksel_recalc, | 841 | .recalc = &omap2_clksel_recalc, |
841 | }; | 842 | }; |
842 | 843 | ||
@@ -1046,12 +1047,13 @@ static struct clk iva2_ck = { | |||
1046 | .name = "iva2_ck", | 1047 | .name = "iva2_ck", |
1047 | .parent = &dpll2_m2_ck, | 1048 | .parent = &dpll2_m2_ck, |
1048 | .init = &omap2_init_clksel_parent, | 1049 | .init = &omap2_init_clksel_parent, |
1050 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, CM_FCLKEN), | ||
1051 | .enable_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, | ||
1049 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, | 1052 | .clksel_reg = OMAP_CM_REGADDR(OMAP3430_IVA2_MOD, |
1050 | OMAP3430_CM_IDLEST_PLL), | 1053 | OMAP3430_CM_IDLEST_PLL), |
1051 | .clksel_mask = OMAP3430_ST_IVA2_CLK_MASK, | 1054 | .clksel_mask = OMAP3430_ST_IVA2_CLK_MASK, |
1052 | .clksel = iva2_clksel, | 1055 | .clksel = iva2_clksel, |
1053 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | | 1056 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES, |
1054 | PARENT_CONTROLS_CLOCK, | ||
1055 | .recalc = &omap2_clksel_recalc, | 1057 | .recalc = &omap2_clksel_recalc, |
1056 | }; | 1058 | }; |
1057 | 1059 | ||
@@ -1836,7 +1838,8 @@ static struct clk omapctrl_ick = { | |||
1836 | static struct clk ssi_l4_ick = { | 1838 | static struct clk ssi_l4_ick = { |
1837 | .name = "ssi_l4_ick", | 1839 | .name = "ssi_l4_ick", |
1838 | .parent = &l4_ick, | 1840 | .parent = &l4_ick, |
1839 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES, | 1841 | .flags = CLOCK_IN_OMAP343X | RATE_PROPAGATES | |
1842 | PARENT_CONTROLS_CLOCK, | ||
1840 | .recalc = &followparent_recalc, | 1843 | .recalc = &followparent_recalc, |
1841 | }; | 1844 | }; |
1842 | 1845 | ||
@@ -2344,7 +2347,7 @@ static struct clk gpio6_fck = { | |||
2344 | .name = "gpio6_fck", | 2347 | .name = "gpio6_fck", |
2345 | .parent = &per_32k_alwon_fck, | 2348 | .parent = &per_32k_alwon_fck, |
2346 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | 2349 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), |
2347 | .enable_bit = OMAP3430_EN_GPT6_SHIFT, | 2350 | .enable_bit = OMAP3430_EN_GPIO6_SHIFT, |
2348 | .flags = CLOCK_IN_OMAP343X, | 2351 | .flags = CLOCK_IN_OMAP343X, |
2349 | .recalc = &followparent_recalc, | 2352 | .recalc = &followparent_recalc, |
2350 | }; | 2353 | }; |
@@ -2353,7 +2356,7 @@ static struct clk gpio5_fck = { | |||
2353 | .name = "gpio5_fck", | 2356 | .name = "gpio5_fck", |
2354 | .parent = &per_32k_alwon_fck, | 2357 | .parent = &per_32k_alwon_fck, |
2355 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | 2358 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), |
2356 | .enable_bit = OMAP3430_EN_GPT5_SHIFT, | 2359 | .enable_bit = OMAP3430_EN_GPIO5_SHIFT, |
2357 | .flags = CLOCK_IN_OMAP343X, | 2360 | .flags = CLOCK_IN_OMAP343X, |
2358 | .recalc = &followparent_recalc, | 2361 | .recalc = &followparent_recalc, |
2359 | }; | 2362 | }; |
@@ -2362,7 +2365,7 @@ static struct clk gpio4_fck = { | |||
2362 | .name = "gpio4_fck", | 2365 | .name = "gpio4_fck", |
2363 | .parent = &per_32k_alwon_fck, | 2366 | .parent = &per_32k_alwon_fck, |
2364 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | 2367 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), |
2365 | .enable_bit = OMAP3430_EN_GPT4_SHIFT, | 2368 | .enable_bit = OMAP3430_EN_GPIO4_SHIFT, |
2366 | .flags = CLOCK_IN_OMAP343X, | 2369 | .flags = CLOCK_IN_OMAP343X, |
2367 | .recalc = &followparent_recalc, | 2370 | .recalc = &followparent_recalc, |
2368 | }; | 2371 | }; |
@@ -2371,7 +2374,7 @@ static struct clk gpio3_fck = { | |||
2371 | .name = "gpio3_fck", | 2374 | .name = "gpio3_fck", |
2372 | .parent = &per_32k_alwon_fck, | 2375 | .parent = &per_32k_alwon_fck, |
2373 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | 2376 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), |
2374 | .enable_bit = OMAP3430_EN_GPT3_SHIFT, | 2377 | .enable_bit = OMAP3430_EN_GPIO3_SHIFT, |
2375 | .flags = CLOCK_IN_OMAP343X, | 2378 | .flags = CLOCK_IN_OMAP343X, |
2376 | .recalc = &followparent_recalc, | 2379 | .recalc = &followparent_recalc, |
2377 | }; | 2380 | }; |
@@ -2380,7 +2383,7 @@ static struct clk gpio2_fck = { | |||
2380 | .name = "gpio2_fck", | 2383 | .name = "gpio2_fck", |
2381 | .parent = &per_32k_alwon_fck, | 2384 | .parent = &per_32k_alwon_fck, |
2382 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), | 2385 | .enable_reg = OMAP_CM_REGADDR(OMAP3430_PER_MOD, CM_FCLKEN), |
2383 | .enable_bit = OMAP3430_EN_GPT2_SHIFT, | 2386 | .enable_bit = OMAP3430_EN_GPIO2_SHIFT, |
2384 | .flags = CLOCK_IN_OMAP343X, | 2387 | .flags = CLOCK_IN_OMAP343X, |
2385 | .recalc = &followparent_recalc, | 2388 | .recalc = &followparent_recalc, |
2386 | }; | 2389 | }; |
diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h b/arch/arm/mach-omap2/cm-regbits-34xx.h index 9249129a5f46..3c38395f6442 100644 --- a/arch/arm/mach-omap2/cm-regbits-34xx.h +++ b/arch/arm/mach-omap2/cm-regbits-34xx.h | |||
@@ -56,6 +56,7 @@ | |||
56 | 56 | ||
57 | /* CM_FCLKEN_IVA2 */ | 57 | /* CM_FCLKEN_IVA2 */ |
58 | #define OMAP3430_CM_FCLKEN_IVA2_EN_IVA2 (1 << 0) | 58 | #define OMAP3430_CM_FCLKEN_IVA2_EN_IVA2 (1 << 0) |
59 | #define OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT 0 | ||
59 | 60 | ||
60 | /* CM_CLKEN_PLL_IVA2 */ | 61 | /* CM_CLKEN_PLL_IVA2 */ |
61 | #define OMAP3430_IVA2_DPLL_RAMPTIME_SHIFT 8 | 62 | #define OMAP3430_IVA2_DPLL_RAMPTIME_SHIFT 8 |
diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c index b03cd06e055b..4799561c5a9e 100644 --- a/arch/arm/mach-omap2/mailbox.c +++ b/arch/arm/mach-omap2/mailbox.c | |||
@@ -70,6 +70,9 @@ struct omap_mbox2_priv { | |||
70 | 70 | ||
71 | static struct clk *mbox_ick_handle; | 71 | static struct clk *mbox_ick_handle; |
72 | 72 | ||
73 | static void omap2_mbox_enable_irq(struct omap_mbox *mbox, | ||
74 | omap_mbox_type_t irq); | ||
75 | |||
73 | static inline unsigned int mbox_read_reg(unsigned int reg) | 76 | static inline unsigned int mbox_read_reg(unsigned int reg) |
74 | { | 77 | { |
75 | return __raw_readl(mbox_base + reg); | 78 | return __raw_readl(mbox_base + reg); |
@@ -81,7 +84,7 @@ static inline void mbox_write_reg(unsigned int val, unsigned int reg) | |||
81 | } | 84 | } |
82 | 85 | ||
83 | /* Mailbox H/W preparations */ | 86 | /* Mailbox H/W preparations */ |
84 | static inline int omap2_mbox_startup(struct omap_mbox *mbox) | 87 | static int omap2_mbox_startup(struct omap_mbox *mbox) |
85 | { | 88 | { |
86 | unsigned int l; | 89 | unsigned int l; |
87 | 90 | ||
@@ -97,38 +100,40 @@ static inline int omap2_mbox_startup(struct omap_mbox *mbox) | |||
97 | l |= 0x00000011; | 100 | l |= 0x00000011; |
98 | mbox_write_reg(l, MAILBOX_SYSCONFIG); | 101 | mbox_write_reg(l, MAILBOX_SYSCONFIG); |
99 | 102 | ||
103 | omap2_mbox_enable_irq(mbox, IRQ_RX); | ||
104 | |||
100 | return 0; | 105 | return 0; |
101 | } | 106 | } |
102 | 107 | ||
103 | static inline void omap2_mbox_shutdown(struct omap_mbox *mbox) | 108 | static void omap2_mbox_shutdown(struct omap_mbox *mbox) |
104 | { | 109 | { |
105 | clk_disable(mbox_ick_handle); | 110 | clk_disable(mbox_ick_handle); |
106 | clk_put(mbox_ick_handle); | 111 | clk_put(mbox_ick_handle); |
107 | } | 112 | } |
108 | 113 | ||
109 | /* Mailbox FIFO handle functions */ | 114 | /* Mailbox FIFO handle functions */ |
110 | static inline mbox_msg_t omap2_mbox_fifo_read(struct omap_mbox *mbox) | 115 | static mbox_msg_t omap2_mbox_fifo_read(struct omap_mbox *mbox) |
111 | { | 116 | { |
112 | struct omap_mbox2_fifo *fifo = | 117 | struct omap_mbox2_fifo *fifo = |
113 | &((struct omap_mbox2_priv *)mbox->priv)->rx_fifo; | 118 | &((struct omap_mbox2_priv *)mbox->priv)->rx_fifo; |
114 | return (mbox_msg_t) mbox_read_reg(fifo->msg); | 119 | return (mbox_msg_t) mbox_read_reg(fifo->msg); |
115 | } | 120 | } |
116 | 121 | ||
117 | static inline void omap2_mbox_fifo_write(struct omap_mbox *mbox, mbox_msg_t msg) | 122 | static void omap2_mbox_fifo_write(struct omap_mbox *mbox, mbox_msg_t msg) |
118 | { | 123 | { |
119 | struct omap_mbox2_fifo *fifo = | 124 | struct omap_mbox2_fifo *fifo = |
120 | &((struct omap_mbox2_priv *)mbox->priv)->tx_fifo; | 125 | &((struct omap_mbox2_priv *)mbox->priv)->tx_fifo; |
121 | mbox_write_reg(msg, fifo->msg); | 126 | mbox_write_reg(msg, fifo->msg); |
122 | } | 127 | } |
123 | 128 | ||
124 | static inline int omap2_mbox_fifo_empty(struct omap_mbox *mbox) | 129 | static int omap2_mbox_fifo_empty(struct omap_mbox *mbox) |
125 | { | 130 | { |
126 | struct omap_mbox2_fifo *fifo = | 131 | struct omap_mbox2_fifo *fifo = |
127 | &((struct omap_mbox2_priv *)mbox->priv)->rx_fifo; | 132 | &((struct omap_mbox2_priv *)mbox->priv)->rx_fifo; |
128 | return (mbox_read_reg(fifo->msg_stat) == 0); | 133 | return (mbox_read_reg(fifo->msg_stat) == 0); |
129 | } | 134 | } |
130 | 135 | ||
131 | static inline int omap2_mbox_fifo_full(struct omap_mbox *mbox) | 136 | static int omap2_mbox_fifo_full(struct omap_mbox *mbox) |
132 | { | 137 | { |
133 | struct omap_mbox2_fifo *fifo = | 138 | struct omap_mbox2_fifo *fifo = |
134 | &((struct omap_mbox2_priv *)mbox->priv)->tx_fifo; | 139 | &((struct omap_mbox2_priv *)mbox->priv)->tx_fifo; |
@@ -136,7 +141,7 @@ static inline int omap2_mbox_fifo_full(struct omap_mbox *mbox) | |||
136 | } | 141 | } |
137 | 142 | ||
138 | /* Mailbox IRQ handle functions */ | 143 | /* Mailbox IRQ handle functions */ |
139 | static inline void omap2_mbox_enable_irq(struct omap_mbox *mbox, | 144 | static void omap2_mbox_enable_irq(struct omap_mbox *mbox, |
140 | omap_mbox_type_t irq) | 145 | omap_mbox_type_t irq) |
141 | { | 146 | { |
142 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; | 147 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; |
@@ -147,7 +152,7 @@ static inline void omap2_mbox_enable_irq(struct omap_mbox *mbox, | |||
147 | mbox_write_reg(l, p->irqenable); | 152 | mbox_write_reg(l, p->irqenable); |
148 | } | 153 | } |
149 | 154 | ||
150 | static inline void omap2_mbox_disable_irq(struct omap_mbox *mbox, | 155 | static void omap2_mbox_disable_irq(struct omap_mbox *mbox, |
151 | omap_mbox_type_t irq) | 156 | omap_mbox_type_t irq) |
152 | { | 157 | { |
153 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; | 158 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; |
@@ -158,7 +163,7 @@ static inline void omap2_mbox_disable_irq(struct omap_mbox *mbox, | |||
158 | mbox_write_reg(l, p->irqenable); | 163 | mbox_write_reg(l, p->irqenable); |
159 | } | 164 | } |
160 | 165 | ||
161 | static inline void omap2_mbox_ack_irq(struct omap_mbox *mbox, | 166 | static void omap2_mbox_ack_irq(struct omap_mbox *mbox, |
162 | omap_mbox_type_t irq) | 167 | omap_mbox_type_t irq) |
163 | { | 168 | { |
164 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; | 169 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; |
@@ -167,7 +172,7 @@ static inline void omap2_mbox_ack_irq(struct omap_mbox *mbox, | |||
167 | mbox_write_reg(bit, p->irqstatus); | 172 | mbox_write_reg(bit, p->irqstatus); |
168 | } | 173 | } |
169 | 174 | ||
170 | static inline int omap2_mbox_is_irq(struct omap_mbox *mbox, | 175 | static int omap2_mbox_is_irq(struct omap_mbox *mbox, |
171 | omap_mbox_type_t irq) | 176 | omap_mbox_type_t irq) |
172 | { | 177 | { |
173 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; | 178 | struct omap_mbox2_priv *p = (struct omap_mbox2_priv *)mbox->priv; |
diff --git a/arch/arm/mach-omap2/prm.h b/arch/arm/mach-omap2/prm.h index ab7649afd891..618f8111658a 100644 --- a/arch/arm/mach-omap2/prm.h +++ b/arch/arm/mach-omap2/prm.h | |||
@@ -30,7 +30,7 @@ | |||
30 | 30 | ||
31 | /* | 31 | /* |
32 | * Architecture-specific global PRM registers | 32 | * Architecture-specific global PRM registers |
33 | * Use prm_{read,write}_reg() with these registers. | 33 | * Use __raw_{read,write}l() with these registers. |
34 | * | 34 | * |
35 | * With a few exceptions, these are the register names beginning with | 35 | * With a few exceptions, these are the register names beginning with |
36 | * PRCM_* on 24xx, and PRM_* on 34xx. (The exceptions are the | 36 | * PRCM_* on 24xx, and PRM_* on 34xx. (The exceptions are the |
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index f9430f5ca9a8..27ce967ab9e5 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c | |||
@@ -58,7 +58,7 @@ static int __init dns323_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
58 | } | 58 | } |
59 | 59 | ||
60 | static struct hw_pci dns323_pci __initdata = { | 60 | static struct hw_pci dns323_pci __initdata = { |
61 | .nr_controllers = 1, | 61 | .nr_controllers = 2, |
62 | .swizzle = pci_std_swizzle, | 62 | .swizzle = pci_std_swizzle, |
63 | .setup = orion5x_pci_sys_setup, | 63 | .setup = orion5x_pci_sys_setup, |
64 | .scan = orion5x_pci_sys_scan_bus, | 64 | .scan = orion5x_pci_sys_scan_bus, |
diff --git a/arch/arm/mach-orion5x/kurobox_pro-setup.c b/arch/arm/mach-orion5x/kurobox_pro-setup.c index 88410862feef..f5074b877b7f 100644 --- a/arch/arm/mach-orion5x/kurobox_pro-setup.c +++ b/arch/arm/mach-orion5x/kurobox_pro-setup.c | |||
@@ -138,7 +138,7 @@ static int __init kurobox_pro_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
138 | } | 138 | } |
139 | 139 | ||
140 | static struct hw_pci kurobox_pro_pci __initdata = { | 140 | static struct hw_pci kurobox_pro_pci __initdata = { |
141 | .nr_controllers = 1, | 141 | .nr_controllers = 2, |
142 | .swizzle = pci_std_swizzle, | 142 | .swizzle = pci_std_swizzle, |
143 | .setup = orion5x_pci_sys_setup, | 143 | .setup = orion5x_pci_sys_setup, |
144 | .scan = orion5x_pci_sys_scan_bus, | 144 | .scan = orion5x_pci_sys_scan_bus, |
diff --git a/arch/arm/mach-pxa/colibri.c b/arch/arm/mach-pxa/colibri.c index 43bf5a183e90..574839d7c132 100644 --- a/arch/arm/mach-pxa/colibri.c +++ b/arch/arm/mach-pxa/colibri.c | |||
@@ -98,7 +98,7 @@ static struct resource dm9000_resources[] = { | |||
98 | [2] = { | 98 | [2] = { |
99 | .start = COLIBRI_ETH_IRQ, | 99 | .start = COLIBRI_ETH_IRQ, |
100 | .end = COLIBRI_ETH_IRQ, | 100 | .end = COLIBRI_ETH_IRQ, |
101 | .flags = IORESOURCE_IRQ, | 101 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_RISING, |
102 | }, | 102 | }, |
103 | }; | 103 | }; |
104 | 104 | ||
@@ -119,7 +119,6 @@ static void __init colibri_init(void) | |||
119 | /* DM9000 LAN */ | 119 | /* DM9000 LAN */ |
120 | pxa_gpio_mode(GPIO78_nCS_2_MD); | 120 | pxa_gpio_mode(GPIO78_nCS_2_MD); |
121 | pxa_gpio_mode(GPIO_DM9000 | GPIO_IN); | 121 | pxa_gpio_mode(GPIO_DM9000 | GPIO_IN); |
122 | set_irq_type(COLIBRI_ETH_IRQ, IRQT_FALLING); | ||
123 | 122 | ||
124 | platform_add_devices(colibri_devices, ARRAY_SIZE(colibri_devices)); | 123 | platform_add_devices(colibri_devices, ARRAY_SIZE(colibri_devices)); |
125 | } | 124 | } |
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index 661a2358ac22..27f63d5d3a7b 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
@@ -374,7 +374,7 @@ static struct resource bast_dm9k_resource[] = { | |||
374 | [2] = { | 374 | [2] = { |
375 | .start = IRQ_DM9000, | 375 | .start = IRQ_DM9000, |
376 | .end = IRQ_DM9000, | 376 | .end = IRQ_DM9000, |
377 | .flags = IORESOURCE_IRQ, | 377 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH, |
378 | } | 378 | } |
379 | 379 | ||
380 | }; | 380 | }; |
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index c56423373ff3..4c4b5c4207c4 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
@@ -263,7 +263,7 @@ static struct resource vr1000_dm9k0_resource[] = { | |||
263 | [2] = { | 263 | [2] = { |
264 | .start = IRQ_VR1000_DM9000A, | 264 | .start = IRQ_VR1000_DM9000A, |
265 | .end = IRQ_VR1000_DM9000A, | 265 | .end = IRQ_VR1000_DM9000A, |
266 | .flags = IORESOURCE_IRQ | 266 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH, |
267 | } | 267 | } |
268 | 268 | ||
269 | }; | 269 | }; |
@@ -282,7 +282,7 @@ static struct resource vr1000_dm9k1_resource[] = { | |||
282 | [2] = { | 282 | [2] = { |
283 | .start = IRQ_VR1000_DM9000N, | 283 | .start = IRQ_VR1000_DM9000N, |
284 | .end = IRQ_VR1000_DM9000N, | 284 | .end = IRQ_VR1000_DM9000N, |
285 | .flags = IORESOURCE_IRQ | 285 | .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH, |
286 | } | 286 | } |
287 | }; | 287 | }; |
288 | 288 | ||
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index 6496eb645cee..2f772a3965c4 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c | |||
@@ -225,26 +225,28 @@ static void __init collie_init(void) | |||
225 | int ret = 0; | 225 | int ret = 0; |
226 | 226 | ||
227 | /* cpu initialize */ | 227 | /* cpu initialize */ |
228 | GAFR = ( GPIO_SSP_TXD | \ | 228 | GAFR = GPIO_SSP_TXD | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SSP_CLK | |
229 | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SSP_CLK | GPIO_TIC_ACK | \ | 229 | GPIO_MCP_CLK | GPIO_32_768kHz; |
230 | GPIO_32_768kHz ); | 230 | |
231 | 231 | GPDR = GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 | | |
232 | GPDR = ( GPIO_LDD8 | GPIO_LDD9 | GPIO_LDD10 | GPIO_LDD11 | GPIO_LDD12 | \ | 232 | GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD | |
233 | GPIO_LDD13 | GPIO_LDD14 | GPIO_LDD15 | GPIO_SSP_TXD | \ | 233 | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK | |
234 | GPIO_SSP_SCLK | GPIO_SSP_SFRM | GPIO_SDLC_SCLK | \ | 234 | COLLIE_GPIO_UCB1x00_RESET | COLLIE_GPIO_nMIC_ON | |
235 | GPIO_SDLC_AAF | GPIO_UART_SCLK1 | GPIO_32_768kHz ); | 235 | COLLIE_GPIO_nREMOCON_ON | GPIO_32_768kHz; |
236 | GPLR = GPIO_GPIO18; | 236 | |
237 | 237 | PPDR = PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 | | |
238 | // PPC pin setting | 238 | PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS | |
239 | PPDR = ( PPC_LDD0 | PPC_LDD1 | PPC_LDD2 | PPC_LDD3 | PPC_LDD4 | PPC_LDD5 | \ | 239 | PPC_TXD1 | PPC_TXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM; |
240 | PPC_LDD6 | PPC_LDD7 | PPC_L_PCLK | PPC_L_LCLK | PPC_L_FCLK | PPC_L_BIAS | \ | 240 | |
241 | PPC_TXD1 | PPC_TXD2 | PPC_RXD2 | PPC_TXD3 | PPC_TXD4 | PPC_SCLK | PPC_SFRM ); | 241 | PWER = COLLIE_GPIO_AC_IN | COLLIE_GPIO_CO | COLLIE_GPIO_ON_KEY | |
242 | 242 | COLLIE_GPIO_WAKEUP | COLLIE_GPIO_nREMOCON_INT | PWER_RTC; | |
243 | PSDR = ( PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4 ); | 243 | |
244 | 244 | PGSR = COLLIE_GPIO_nREMOCON_ON; | |
245 | GAFR |= GPIO_32_768kHz; | 245 | |
246 | GPDR |= GPIO_32_768kHz; | 246 | PSDR = PPC_RXD1 | PPC_RXD2 | PPC_RXD3 | PPC_RXD4; |
247 | TUCR = TUCR_32_768kHz; | 247 | |
248 | PCFR = PCFR_OPDE; | ||
249 | |||
248 | 250 | ||
249 | platform_scoop_config = &collie_pcmcia_config; | 251 | platform_scoop_config = &collie_pcmcia_config; |
250 | 252 | ||
diff --git a/arch/arm/mm/proc-arm925.S b/arch/arm/mm/proc-arm925.S index 065087afb772..d045812f3399 100644 --- a/arch/arm/mm/proc-arm925.S +++ b/arch/arm/mm/proc-arm925.S | |||
@@ -332,7 +332,7 @@ ENTRY(arm925_dma_flush_range) | |||
332 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 332 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
333 | mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry | 333 | mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry |
334 | #else | 334 | #else |
335 | mcr p15, 0, r0, c7, c10, 1 @ clean D entry | 335 | mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry |
336 | #endif | 336 | #endif |
337 | add r0, r0, #CACHE_DLINESIZE | 337 | add r0, r0, #CACHE_DLINESIZE |
338 | cmp r0, r1 | 338 | cmp r0, r1 |
diff --git a/arch/arm/mm/proc-arm926.S b/arch/arm/mm/proc-arm926.S index 997db8472b5c..4cd33169a7c9 100644 --- a/arch/arm/mm/proc-arm926.S +++ b/arch/arm/mm/proc-arm926.S | |||
@@ -295,7 +295,7 @@ ENTRY(arm926_dma_flush_range) | |||
295 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 295 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
296 | mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry | 296 | mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry |
297 | #else | 297 | #else |
298 | mcr p15, 0, r0, c7, c10, 1 @ clean D entry | 298 | mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry |
299 | #endif | 299 | #endif |
300 | add r0, r0, #CACHE_DLINESIZE | 300 | add r0, r0, #CACHE_DLINESIZE |
301 | cmp r0, r1 | 301 | cmp r0, r1 |
diff --git a/arch/arm/mm/proc-arm940.S b/arch/arm/mm/proc-arm940.S index 44ead902bd54..1a3d63df8e90 100644 --- a/arch/arm/mm/proc-arm940.S +++ b/arch/arm/mm/proc-arm940.S | |||
@@ -222,7 +222,7 @@ ENTRY(arm940_dma_flush_range) | |||
222 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 222 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
223 | mcr p15, 0, r3, c7, c14, 2 @ clean/flush D entry | 223 | mcr p15, 0, r3, c7, c14, 2 @ clean/flush D entry |
224 | #else | 224 | #else |
225 | mcr p15, 0, r3, c7, c10, 2 @ clean D entry | 225 | mcr p15, 0, r3, c7, c6, 2 @ invalidate D entry |
226 | #endif | 226 | #endif |
227 | subs r3, r3, #1 << 26 | 227 | subs r3, r3, #1 << 26 |
228 | bcs 2b @ entries 63 to 0 | 228 | bcs 2b @ entries 63 to 0 |
diff --git a/arch/arm/mm/proc-arm946.S b/arch/arm/mm/proc-arm946.S index 2218b0c01330..82d579ac9b98 100644 --- a/arch/arm/mm/proc-arm946.S +++ b/arch/arm/mm/proc-arm946.S | |||
@@ -265,7 +265,7 @@ ENTRY(arm946_dma_flush_range) | |||
265 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH | 265 | #ifndef CONFIG_CPU_DCACHE_WRITETHROUGH |
266 | mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry | 266 | mcr p15, 0, r0, c7, c14, 1 @ clean+invalidate D entry |
267 | #else | 267 | #else |
268 | mcr p15, 0, r0, c7, c10, 1 @ clean D entry | 268 | mcr p15, 0, r0, c7, c6, 1 @ invalidate D entry |
269 | #endif | 269 | #endif |
270 | add r0, r0, #CACHE_DLINESIZE | 270 | add r0, r0, #CACHE_DLINESIZE |
271 | cmp r0, r1 | 271 | cmp r0, r1 |
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c index 72d34a23a2ec..2db5580048d8 100644 --- a/arch/arm/plat-omap/clock.c +++ b/arch/arm/plat-omap/clock.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/clk.h> | 21 | #include <linux/clk.h> |
22 | #include <linux/mutex.h> | 22 | #include <linux/mutex.h> |
23 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
24 | #include <linux/cpufreq.h> | ||
24 | 25 | ||
25 | #include <asm/io.h> | 26 | #include <asm/io.h> |
26 | 27 | ||
@@ -134,9 +135,17 @@ void clk_disable(struct clk *clk) | |||
134 | return; | 135 | return; |
135 | 136 | ||
136 | spin_lock_irqsave(&clockfw_lock, flags); | 137 | spin_lock_irqsave(&clockfw_lock, flags); |
137 | BUG_ON(clk->usecount == 0); | 138 | if (clk->usecount == 0) { |
139 | printk(KERN_ERR "Trying disable clock %s with 0 usecount\n", | ||
140 | clk->name); | ||
141 | WARN_ON(1); | ||
142 | goto out; | ||
143 | } | ||
144 | |||
138 | if (arch_clock->clk_disable) | 145 | if (arch_clock->clk_disable) |
139 | arch_clock->clk_disable(clk); | 146 | arch_clock->clk_disable(clk); |
147 | |||
148 | out: | ||
140 | spin_unlock_irqrestore(&clockfw_lock, flags); | 149 | spin_unlock_irqrestore(&clockfw_lock, flags); |
141 | } | 150 | } |
142 | EXPORT_SYMBOL(clk_disable); | 151 | EXPORT_SYMBOL(clk_disable); |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 793740686be2..c00eda588cd8 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -604,6 +604,7 @@ int omap_request_dma(int dev_id, const char *dev_name, | |||
604 | chan->data = data; | 604 | chan->data = data; |
605 | #ifndef CONFIG_ARCH_OMAP1 | 605 | #ifndef CONFIG_ARCH_OMAP1 |
606 | chan->chain_id = -1; | 606 | chan->chain_id = -1; |
607 | chan->next_linked_ch = -1; | ||
607 | #endif | 608 | #endif |
608 | chan->enabled_irqs = OMAP_DMA_DROP_IRQ | OMAP_DMA_BLOCK_IRQ; | 609 | chan->enabled_irqs = OMAP_DMA_DROP_IRQ | OMAP_DMA_BLOCK_IRQ; |
609 | 610 | ||
@@ -1087,7 +1088,6 @@ int omap_request_dma_chain(int dev_id, const char *dev_name, | |||
1087 | printk(KERN_ERR "omap_dma: Request failed %d\n", err); | 1088 | printk(KERN_ERR "omap_dma: Request failed %d\n", err); |
1088 | return err; | 1089 | return err; |
1089 | } | 1090 | } |
1090 | dma_chan[channels[i]].next_linked_ch = -1; | ||
1091 | dma_chan[channels[i]].prev_linked_ch = -1; | 1091 | dma_chan[channels[i]].prev_linked_ch = -1; |
1092 | dma_chan[channels[i]].state = DMA_CH_NOTSTARTED; | 1092 | dma_chan[channels[i]].state = DMA_CH_NOTSTARTED; |
1093 | 1093 | ||
diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c index 1945ddfec18d..6f33f58bca45 100644 --- a/arch/arm/plat-omap/mailbox.c +++ b/arch/arm/plat-omap/mailbox.c | |||
@@ -355,7 +355,6 @@ static int omap_mbox_init(struct omap_mbox *mbox) | |||
355 | "failed to register mailbox interrupt:%d\n", ret); | 355 | "failed to register mailbox interrupt:%d\n", ret); |
356 | goto fail_request_irq; | 356 | goto fail_request_irq; |
357 | } | 357 | } |
358 | enable_mbox_irq(mbox, IRQ_RX); | ||
359 | 358 | ||
360 | mq = mbox_queue_alloc(mbox, mbox_txq_fn, mbox_tx_work); | 359 | mq = mbox_queue_alloc(mbox, mbox_txq_fn, mbox_tx_work); |
361 | if (!mq) { | 360 | if (!mq) { |
diff --git a/arch/arm/plat-s3c24xx/s3c244x.c b/arch/arm/plat-s3c24xx/s3c244x.c index f197bb3a2366..2f01af5f64c4 100644 --- a/arch/arm/plat-s3c24xx/s3c244x.c +++ b/arch/arm/plat-s3c24xx/s3c244x.c | |||
@@ -65,6 +65,7 @@ void __init s3c244x_map_io(struct map_desc *mach_desc, int size) | |||
65 | 65 | ||
66 | /* rename any peripherals used differing from the s3c2410 */ | 66 | /* rename any peripherals used differing from the s3c2410 */ |
67 | 67 | ||
68 | s3c_device_sdi.name = "s3c2440-sdi"; | ||
68 | s3c_device_i2c.name = "s3c2440-i2c"; | 69 | s3c_device_i2c.name = "s3c2440-i2c"; |
69 | s3c_device_nand.name = "s3c2440-nand"; | 70 | s3c_device_nand.name = "s3c2440-nand"; |
70 | s3c_device_usbgadget.name = "s3c2440-usbgadget"; | 71 | s3c_device_usbgadget.name = "s3c2440-usbgadget"; |
diff --git a/arch/avr32/configs/atngw100_defconfig b/arch/avr32/configs/atngw100_defconfig index 06046074d68b..119edb839ac3 100644 --- a/arch/avr32/configs/atngw100_defconfig +++ b/arch/avr32/configs/atngw100_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc7 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Wed Jan 9 23:20:41 2008 | 4 | # Mon May 26 13:30:59 2008 |
5 | # | 5 | # |
6 | CONFIG_AVR32=y | 6 | CONFIG_AVR32=y |
7 | CONFIG_GENERIC_GPIO=y | 7 | CONFIG_GENERIC_GPIO=y |
@@ -13,10 +13,10 @@ CONFIG_HARDIRQS_SW_RESEND=y | |||
13 | CONFIG_GENERIC_IRQ_PROBE=y | 13 | CONFIG_GENERIC_IRQ_PROBE=y |
14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
15 | CONFIG_GENERIC_TIME=y | 15 | CONFIG_GENERIC_TIME=y |
16 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 17 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
17 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
18 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
19 | CONFIG_ARCH_SUPPORTS_OPROFILE=y | ||
20 | CONFIG_GENERIC_HWEIGHT=y | 20 | CONFIG_GENERIC_HWEIGHT=y |
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 21 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
22 | CONFIG_GENERIC_BUG=y | 22 | CONFIG_GENERIC_BUG=y |
@@ -37,17 +37,15 @@ CONFIG_POSIX_MQUEUE=y | |||
37 | CONFIG_BSD_PROCESS_ACCT=y | 37 | CONFIG_BSD_PROCESS_ACCT=y |
38 | CONFIG_BSD_PROCESS_ACCT_V3=y | 38 | CONFIG_BSD_PROCESS_ACCT_V3=y |
39 | # CONFIG_TASKSTATS is not set | 39 | # CONFIG_TASKSTATS is not set |
40 | # CONFIG_USER_NS is not set | ||
41 | # CONFIG_PID_NS is not set | ||
42 | # CONFIG_AUDIT is not set | 40 | # CONFIG_AUDIT is not set |
43 | # CONFIG_IKCONFIG is not set | 41 | # CONFIG_IKCONFIG is not set |
44 | CONFIG_LOG_BUF_SHIFT=14 | 42 | CONFIG_LOG_BUF_SHIFT=14 |
45 | # CONFIG_CGROUPS is not set | 43 | # CONFIG_CGROUPS is not set |
46 | CONFIG_FAIR_GROUP_SCHED=y | 44 | # CONFIG_GROUP_SCHED is not set |
47 | CONFIG_FAIR_USER_SCHED=y | ||
48 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
49 | CONFIG_SYSFS_DEPRECATED=y | 45 | CONFIG_SYSFS_DEPRECATED=y |
46 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
50 | # CONFIG_RELAY is not set | 47 | # CONFIG_RELAY is not set |
48 | # CONFIG_NAMESPACES is not set | ||
51 | CONFIG_BLK_DEV_INITRD=y | 49 | CONFIG_BLK_DEV_INITRD=y |
52 | CONFIG_INITRAMFS_SOURCE="" | 50 | CONFIG_INITRAMFS_SOURCE="" |
53 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 51 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -61,11 +59,13 @@ CONFIG_HOTPLUG=y | |||
61 | CONFIG_PRINTK=y | 59 | CONFIG_PRINTK=y |
62 | CONFIG_BUG=y | 60 | CONFIG_BUG=y |
63 | CONFIG_ELF_CORE=y | 61 | CONFIG_ELF_CORE=y |
62 | # CONFIG_COMPAT_BRK is not set | ||
64 | # CONFIG_BASE_FULL is not set | 63 | # CONFIG_BASE_FULL is not set |
65 | CONFIG_FUTEX=y | 64 | CONFIG_FUTEX=y |
66 | CONFIG_ANON_INODES=y | 65 | CONFIG_ANON_INODES=y |
67 | CONFIG_EPOLL=y | 66 | CONFIG_EPOLL=y |
68 | CONFIG_SIGNALFD=y | 67 | CONFIG_SIGNALFD=y |
68 | CONFIG_TIMERFD=y | ||
69 | CONFIG_EVENTFD=y | 69 | CONFIG_EVENTFD=y |
70 | CONFIG_SHMEM=y | 70 | CONFIG_SHMEM=y |
71 | CONFIG_VM_EVENT_COUNTERS=y | 71 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -73,11 +73,21 @@ CONFIG_SLUB_DEBUG=y | |||
73 | # CONFIG_SLAB is not set | 73 | # CONFIG_SLAB is not set |
74 | CONFIG_SLUB=y | 74 | CONFIG_SLUB=y |
75 | # CONFIG_SLOB is not set | 75 | # CONFIG_SLOB is not set |
76 | CONFIG_PROFILING=y | ||
77 | # CONFIG_MARKERS is not set | ||
78 | CONFIG_OPROFILE=m | ||
79 | CONFIG_HAVE_OPROFILE=y | ||
80 | CONFIG_KPROBES=y | ||
81 | CONFIG_HAVE_KPROBES=y | ||
82 | # CONFIG_HAVE_KRETPROBES is not set | ||
83 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
84 | CONFIG_PROC_PAGE_MONITOR=y | ||
76 | CONFIG_SLABINFO=y | 85 | CONFIG_SLABINFO=y |
77 | CONFIG_RT_MUTEXES=y | 86 | CONFIG_RT_MUTEXES=y |
78 | # CONFIG_TINY_SHMEM is not set | 87 | # CONFIG_TINY_SHMEM is not set |
79 | CONFIG_BASE_SMALL=1 | 88 | CONFIG_BASE_SMALL=1 |
80 | CONFIG_MODULES=y | 89 | CONFIG_MODULES=y |
90 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
81 | CONFIG_MODULE_UNLOAD=y | 91 | CONFIG_MODULE_UNLOAD=y |
82 | CONFIG_MODULE_FORCE_UNLOAD=y | 92 | CONFIG_MODULE_FORCE_UNLOAD=y |
83 | # CONFIG_MODVERSIONS is not set | 93 | # CONFIG_MODVERSIONS is not set |
@@ -101,10 +111,15 @@ CONFIG_IOSCHED_CFQ=y | |||
101 | CONFIG_DEFAULT_CFQ=y | 111 | CONFIG_DEFAULT_CFQ=y |
102 | # CONFIG_DEFAULT_NOOP is not set | 112 | # CONFIG_DEFAULT_NOOP is not set |
103 | CONFIG_DEFAULT_IOSCHED="cfq" | 113 | CONFIG_DEFAULT_IOSCHED="cfq" |
114 | CONFIG_CLASSIC_RCU=y | ||
104 | 115 | ||
105 | # | 116 | # |
106 | # System Type and features | 117 | # System Type and features |
107 | # | 118 | # |
119 | CONFIG_TICK_ONESHOT=y | ||
120 | CONFIG_NO_HZ=y | ||
121 | CONFIG_HIGH_RES_TIMERS=y | ||
122 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
108 | CONFIG_SUBARCH_AVR32B=y | 123 | CONFIG_SUBARCH_AVR32B=y |
109 | CONFIG_MMU=y | 124 | CONFIG_MMU=y |
110 | CONFIG_PERFORMANCE_COUNTERS=y | 125 | CONFIG_PERFORMANCE_COUNTERS=y |
@@ -141,16 +156,19 @@ CONFIG_FLATMEM=y | |||
141 | CONFIG_FLAT_NODE_MEM_MAP=y | 156 | CONFIG_FLAT_NODE_MEM_MAP=y |
142 | # CONFIG_SPARSEMEM_STATIC is not set | 157 | # CONFIG_SPARSEMEM_STATIC is not set |
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 158 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
159 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 160 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
145 | # CONFIG_RESOURCES_64BIT is not set | 161 | # CONFIG_RESOURCES_64BIT is not set |
146 | CONFIG_ZONE_DMA_FLAG=0 | 162 | CONFIG_ZONE_DMA_FLAG=0 |
147 | CONFIG_VIRT_TO_BUS=y | 163 | CONFIG_VIRT_TO_BUS=y |
148 | # CONFIG_OWNERSHIP_TRACE is not set | 164 | # CONFIG_OWNERSHIP_TRACE is not set |
165 | CONFIG_NMI_DEBUGGING=y | ||
149 | # CONFIG_HZ_100 is not set | 166 | # CONFIG_HZ_100 is not set |
150 | CONFIG_HZ_250=y | 167 | CONFIG_HZ_250=y |
151 | # CONFIG_HZ_300 is not set | 168 | # CONFIG_HZ_300 is not set |
152 | # CONFIG_HZ_1000 is not set | 169 | # CONFIG_HZ_1000 is not set |
153 | CONFIG_HZ=250 | 170 | CONFIG_HZ=250 |
171 | # CONFIG_SCHED_HRTICK is not set | ||
154 | CONFIG_CMDLINE="" | 172 | CONFIG_CMDLINE="" |
155 | 173 | ||
156 | # | 174 | # |
@@ -164,9 +182,10 @@ CONFIG_CPU_FREQ=y | |||
164 | CONFIG_CPU_FREQ_TABLE=y | 182 | CONFIG_CPU_FREQ_TABLE=y |
165 | # CONFIG_CPU_FREQ_DEBUG is not set | 183 | # CONFIG_CPU_FREQ_DEBUG is not set |
166 | # CONFIG_CPU_FREQ_STAT is not set | 184 | # CONFIG_CPU_FREQ_STAT is not set |
167 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 185 | # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set |
186 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
168 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 187 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set |
169 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | 188 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
170 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | 189 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set |
171 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | 190 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y |
172 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | 191 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set |
@@ -202,6 +221,7 @@ CONFIG_XFRM=y | |||
202 | CONFIG_XFRM_USER=y | 221 | CONFIG_XFRM_USER=y |
203 | # CONFIG_XFRM_SUB_POLICY is not set | 222 | # CONFIG_XFRM_SUB_POLICY is not set |
204 | # CONFIG_XFRM_MIGRATE is not set | 223 | # CONFIG_XFRM_MIGRATE is not set |
224 | # CONFIG_XFRM_STATISTICS is not set | ||
205 | CONFIG_NET_KEY=y | 225 | CONFIG_NET_KEY=y |
206 | # CONFIG_NET_KEY_MIGRATE is not set | 226 | # CONFIG_NET_KEY_MIGRATE is not set |
207 | CONFIG_INET=y | 227 | CONFIG_INET=y |
@@ -255,87 +275,40 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=y | |||
255 | CONFIG_INET6_XFRM_MODE_BEET=y | 275 | CONFIG_INET6_XFRM_MODE_BEET=y |
256 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 276 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
257 | CONFIG_IPV6_SIT=y | 277 | CONFIG_IPV6_SIT=y |
278 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
258 | # CONFIG_IPV6_TUNNEL is not set | 279 | # CONFIG_IPV6_TUNNEL is not set |
259 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 280 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
281 | # CONFIG_IPV6_MROUTE is not set | ||
260 | # CONFIG_NETWORK_SECMARK is not set | 282 | # CONFIG_NETWORK_SECMARK is not set |
261 | CONFIG_NETFILTER=y | 283 | CONFIG_NETFILTER=y |
262 | # CONFIG_NETFILTER_DEBUG is not set | 284 | # CONFIG_NETFILTER_DEBUG is not set |
263 | CONFIG_BRIDGE_NETFILTER=y | 285 | # CONFIG_NETFILTER_ADVANCED is not set |
264 | 286 | ||
265 | # | 287 | # |
266 | # Core Netfilter Configuration | 288 | # Core Netfilter Configuration |
267 | # | 289 | # |
268 | # CONFIG_NETFILTER_NETLINK is not set | 290 | CONFIG_NETFILTER_NETLINK=m |
269 | CONFIG_NF_CONNTRACK_ENABLED=m | 291 | CONFIG_NETFILTER_NETLINK_LOG=m |
270 | CONFIG_NF_CONNTRACK=m | 292 | CONFIG_NF_CONNTRACK=m |
271 | CONFIG_NF_CT_ACCT=y | ||
272 | CONFIG_NF_CONNTRACK_MARK=y | ||
273 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
274 | CONFIG_NF_CT_PROTO_GRE=m | ||
275 | # CONFIG_NF_CT_PROTO_SCTP is not set | ||
276 | # CONFIG_NF_CT_PROTO_UDPLITE is not set | ||
277 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
278 | CONFIG_NF_CONNTRACK_FTP=m | 293 | CONFIG_NF_CONNTRACK_FTP=m |
279 | CONFIG_NF_CONNTRACK_H323=m | ||
280 | CONFIG_NF_CONNTRACK_IRC=m | 294 | CONFIG_NF_CONNTRACK_IRC=m |
281 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
282 | CONFIG_NF_CONNTRACK_PPTP=m | ||
283 | CONFIG_NF_CONNTRACK_SANE=m | ||
284 | CONFIG_NF_CONNTRACK_SIP=m | 295 | CONFIG_NF_CONNTRACK_SIP=m |
285 | CONFIG_NF_CONNTRACK_TFTP=m | 296 | CONFIG_NF_CT_NETLINK=m |
286 | CONFIG_NETFILTER_XTABLES=y | 297 | CONFIG_NETFILTER_XTABLES=y |
287 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
288 | # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set | ||
289 | # CONFIG_NETFILTER_XT_TARGET_DSCP is not set | ||
290 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 298 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
291 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
292 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 299 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
293 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set | ||
294 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | ||
295 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 300 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
296 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
297 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
298 | # CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set | ||
299 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
300 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | 301 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m |
301 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | ||
302 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
303 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
304 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
305 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
306 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
307 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
308 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 302 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
309 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 303 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
310 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
311 | # CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set | ||
312 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
313 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
314 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
315 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set | ||
316 | CONFIG_NETFILTER_XT_MATCH_STATE=m | 304 | CONFIG_NETFILTER_XT_MATCH_STATE=m |
317 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
318 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
319 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
320 | # CONFIG_NETFILTER_XT_MATCH_TIME is not set | ||
321 | # CONFIG_NETFILTER_XT_MATCH_U32 is not set | ||
322 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
323 | 305 | ||
324 | # | 306 | # |
325 | # IP: Netfilter Configuration | 307 | # IP: Netfilter Configuration |
326 | # | 308 | # |
327 | CONFIG_NF_CONNTRACK_IPV4=m | 309 | CONFIG_NF_CONNTRACK_IPV4=m |
328 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | 310 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
329 | # CONFIG_IP_NF_QUEUE is not set | ||
330 | CONFIG_IP_NF_IPTABLES=m | 311 | CONFIG_IP_NF_IPTABLES=m |
331 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
332 | CONFIG_IP_NF_MATCH_TOS=m | ||
333 | CONFIG_IP_NF_MATCH_RECENT=m | ||
334 | CONFIG_IP_NF_MATCH_ECN=m | ||
335 | CONFIG_IP_NF_MATCH_AH=m | ||
336 | CONFIG_IP_NF_MATCH_TTL=m | ||
337 | CONFIG_IP_NF_MATCH_OWNER=m | ||
338 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
339 | CONFIG_IP_NF_FILTER=m | 312 | CONFIG_IP_NF_FILTER=m |
340 | CONFIG_IP_NF_TARGET_REJECT=m | 313 | CONFIG_IP_NF_TARGET_REJECT=m |
341 | CONFIG_IP_NF_TARGET_LOG=m | 314 | CONFIG_IP_NF_TARGET_LOG=m |
@@ -343,54 +316,25 @@ CONFIG_IP_NF_TARGET_LOG=m | |||
343 | CONFIG_NF_NAT=m | 316 | CONFIG_NF_NAT=m |
344 | CONFIG_NF_NAT_NEEDED=y | 317 | CONFIG_NF_NAT_NEEDED=y |
345 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 318 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
346 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
347 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
348 | CONFIG_IP_NF_TARGET_SAME=m | ||
349 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
350 | CONFIG_NF_NAT_PROTO_GRE=m | ||
351 | CONFIG_NF_NAT_FTP=m | 319 | CONFIG_NF_NAT_FTP=m |
352 | CONFIG_NF_NAT_IRC=m | 320 | CONFIG_NF_NAT_IRC=m |
353 | CONFIG_NF_NAT_TFTP=m | 321 | # CONFIG_NF_NAT_TFTP is not set |
354 | CONFIG_NF_NAT_AMANDA=m | 322 | # CONFIG_NF_NAT_AMANDA is not set |
355 | CONFIG_NF_NAT_PPTP=m | 323 | # CONFIG_NF_NAT_PPTP is not set |
356 | CONFIG_NF_NAT_H323=m | 324 | # CONFIG_NF_NAT_H323 is not set |
357 | CONFIG_NF_NAT_SIP=m | 325 | CONFIG_NF_NAT_SIP=m |
358 | CONFIG_IP_NF_MANGLE=m | 326 | CONFIG_IP_NF_MANGLE=m |
359 | CONFIG_IP_NF_TARGET_TOS=m | ||
360 | CONFIG_IP_NF_TARGET_ECN=m | ||
361 | CONFIG_IP_NF_TARGET_TTL=m | ||
362 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
363 | CONFIG_IP_NF_RAW=m | ||
364 | CONFIG_IP_NF_ARPTABLES=m | ||
365 | CONFIG_IP_NF_ARPFILTER=m | ||
366 | CONFIG_IP_NF_ARP_MANGLE=m | ||
367 | 327 | ||
368 | # | 328 | # |
369 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 329 | # IPv6: Netfilter Configuration |
370 | # | 330 | # |
371 | CONFIG_NF_CONNTRACK_IPV6=m | 331 | CONFIG_NF_CONNTRACK_IPV6=m |
372 | CONFIG_IP6_NF_QUEUE=m | ||
373 | CONFIG_IP6_NF_IPTABLES=m | 332 | CONFIG_IP6_NF_IPTABLES=m |
374 | CONFIG_IP6_NF_MATCH_RT=m | ||
375 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
376 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
377 | CONFIG_IP6_NF_MATCH_HL=m | ||
378 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
379 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | 333 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m |
380 | CONFIG_IP6_NF_MATCH_AH=m | ||
381 | CONFIG_IP6_NF_MATCH_MH=m | ||
382 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
383 | CONFIG_IP6_NF_FILTER=m | 334 | CONFIG_IP6_NF_FILTER=m |
384 | CONFIG_IP6_NF_TARGET_LOG=m | 335 | CONFIG_IP6_NF_TARGET_LOG=m |
385 | CONFIG_IP6_NF_TARGET_REJECT=m | 336 | CONFIG_IP6_NF_TARGET_REJECT=m |
386 | CONFIG_IP6_NF_MANGLE=m | 337 | CONFIG_IP6_NF_MANGLE=m |
387 | CONFIG_IP6_NF_TARGET_HL=m | ||
388 | CONFIG_IP6_NF_RAW=m | ||
389 | |||
390 | # | ||
391 | # Bridge: Netfilter Configuration | ||
392 | # | ||
393 | # CONFIG_BRIDGE_NF_EBTABLES is not set | ||
394 | # CONFIG_IP_DCCP is not set | 338 | # CONFIG_IP_DCCP is not set |
395 | # CONFIG_IP_SCTP is not set | 339 | # CONFIG_IP_SCTP is not set |
396 | # CONFIG_TIPC is not set | 340 | # CONFIG_TIPC is not set |
@@ -407,7 +351,6 @@ CONFIG_LLC=m | |||
407 | # CONFIG_ECONET is not set | 351 | # CONFIG_ECONET is not set |
408 | # CONFIG_WAN_ROUTER is not set | 352 | # CONFIG_WAN_ROUTER is not set |
409 | # CONFIG_NET_SCHED is not set | 353 | # CONFIG_NET_SCHED is not set |
410 | CONFIG_NET_CLS_ROUTE=y | ||
411 | 354 | ||
412 | # | 355 | # |
413 | # Network testing | 356 | # Network testing |
@@ -415,6 +358,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
415 | # CONFIG_NET_PKTGEN is not set | 358 | # CONFIG_NET_PKTGEN is not set |
416 | # CONFIG_NET_TCPPROBE is not set | 359 | # CONFIG_NET_TCPPROBE is not set |
417 | # CONFIG_HAMRADIO is not set | 360 | # CONFIG_HAMRADIO is not set |
361 | # CONFIG_CAN is not set | ||
418 | # CONFIG_IRDA is not set | 362 | # CONFIG_IRDA is not set |
419 | # CONFIG_BT is not set | 363 | # CONFIG_BT is not set |
420 | # CONFIG_AF_RXRPC is not set | 364 | # CONFIG_AF_RXRPC is not set |
@@ -450,6 +394,7 @@ CONFIG_MTD=y | |||
450 | CONFIG_MTD_PARTITIONS=y | 394 | CONFIG_MTD_PARTITIONS=y |
451 | # CONFIG_MTD_REDBOOT_PARTS is not set | 395 | # CONFIG_MTD_REDBOOT_PARTS is not set |
452 | CONFIG_MTD_CMDLINE_PARTS=y | 396 | CONFIG_MTD_CMDLINE_PARTS=y |
397 | # CONFIG_MTD_AR7_PARTS is not set | ||
453 | 398 | ||
454 | # | 399 | # |
455 | # User Modules And Translation Layers | 400 | # User Modules And Translation Layers |
@@ -531,11 +476,18 @@ CONFIG_BLK_DEV_NBD=m | |||
531 | CONFIG_BLK_DEV_RAM=m | 476 | CONFIG_BLK_DEV_RAM=m |
532 | CONFIG_BLK_DEV_RAM_COUNT=16 | 477 | CONFIG_BLK_DEV_RAM_COUNT=16 |
533 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 478 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
534 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 479 | # CONFIG_BLK_DEV_XIP is not set |
535 | # CONFIG_CDROM_PKTCDVD is not set | 480 | # CONFIG_CDROM_PKTCDVD is not set |
536 | # CONFIG_ATA_OVER_ETH is not set | 481 | # CONFIG_ATA_OVER_ETH is not set |
537 | # CONFIG_MISC_DEVICES is not set | 482 | CONFIG_MISC_DEVICES=y |
538 | # CONFIG_IDE is not set | 483 | # CONFIG_ATMEL_PWM is not set |
484 | CONFIG_ATMEL_TCLIB=y | ||
485 | CONFIG_ATMEL_TCB_CLKSRC=y | ||
486 | CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 | ||
487 | # CONFIG_EEPROM_93CX6 is not set | ||
488 | # CONFIG_ATMEL_SSC is not set | ||
489 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
490 | # CONFIG_HAVE_IDE is not set | ||
539 | 491 | ||
540 | # | 492 | # |
541 | # SCSI device support | 493 | # SCSI device support |
@@ -568,11 +520,13 @@ CONFIG_PHYLIB=y | |||
568 | # CONFIG_SMSC_PHY is not set | 520 | # CONFIG_SMSC_PHY is not set |
569 | # CONFIG_BROADCOM_PHY is not set | 521 | # CONFIG_BROADCOM_PHY is not set |
570 | # CONFIG_ICPLUS_PHY is not set | 522 | # CONFIG_ICPLUS_PHY is not set |
523 | # CONFIG_REALTEK_PHY is not set | ||
571 | # CONFIG_FIXED_PHY is not set | 524 | # CONFIG_FIXED_PHY is not set |
572 | # CONFIG_MDIO_BITBANG is not set | 525 | # CONFIG_MDIO_BITBANG is not set |
573 | CONFIG_NET_ETHERNET=y | 526 | CONFIG_NET_ETHERNET=y |
574 | # CONFIG_MII is not set | 527 | # CONFIG_MII is not set |
575 | CONFIG_MACB=y | 528 | CONFIG_MACB=y |
529 | # CONFIG_ENC28J60 is not set | ||
576 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 530 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
577 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 531 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
578 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 532 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -586,6 +540,7 @@ CONFIG_MACB=y | |||
586 | # | 540 | # |
587 | # CONFIG_WLAN_PRE80211 is not set | 541 | # CONFIG_WLAN_PRE80211 is not set |
588 | # CONFIG_WLAN_80211 is not set | 542 | # CONFIG_WLAN_80211 is not set |
543 | # CONFIG_IWLWIFI_LEDS is not set | ||
589 | # CONFIG_WAN is not set | 544 | # CONFIG_WAN is not set |
590 | CONFIG_PPP=m | 545 | CONFIG_PPP=m |
591 | # CONFIG_PPP_MULTILINK is not set | 546 | # CONFIG_PPP_MULTILINK is not set |
@@ -599,7 +554,6 @@ CONFIG_PPPOE=m | |||
599 | # CONFIG_PPPOL2TP is not set | 554 | # CONFIG_PPPOL2TP is not set |
600 | # CONFIG_SLIP is not set | 555 | # CONFIG_SLIP is not set |
601 | CONFIG_SLHC=m | 556 | CONFIG_SLHC=m |
602 | # CONFIG_SHAPER is not set | ||
603 | # CONFIG_NETCONSOLE is not set | 557 | # CONFIG_NETCONSOLE is not set |
604 | # CONFIG_NETPOLL is not set | 558 | # CONFIG_NETPOLL is not set |
605 | # CONFIG_NET_POLL_CONTROLLER is not set | 559 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -621,6 +575,7 @@ CONFIG_SLHC=m | |||
621 | # Character devices | 575 | # Character devices |
622 | # | 576 | # |
623 | # CONFIG_VT is not set | 577 | # CONFIG_VT is not set |
578 | # CONFIG_DEVKMEM is not set | ||
624 | # CONFIG_SERIAL_NONSTANDARD is not set | 579 | # CONFIG_SERIAL_NONSTANDARD is not set |
625 | 580 | ||
626 | # | 581 | # |
@@ -633,6 +588,7 @@ CONFIG_SLHC=m | |||
633 | # | 588 | # |
634 | CONFIG_SERIAL_ATMEL=y | 589 | CONFIG_SERIAL_ATMEL=y |
635 | CONFIG_SERIAL_ATMEL_CONSOLE=y | 590 | CONFIG_SERIAL_ATMEL_CONSOLE=y |
591 | CONFIG_SERIAL_ATMEL_PDC=y | ||
636 | # CONFIG_SERIAL_ATMEL_TTYAT is not set | 592 | # CONFIG_SERIAL_ATMEL_TTYAT is not set |
637 | CONFIG_SERIAL_CORE=y | 593 | CONFIG_SERIAL_CORE=y |
638 | CONFIG_SERIAL_CORE_CONSOLE=y | 594 | CONFIG_SERIAL_CORE_CONSOLE=y |
@@ -640,21 +596,13 @@ CONFIG_UNIX98_PTYS=y | |||
640 | # CONFIG_LEGACY_PTYS is not set | 596 | # CONFIG_LEGACY_PTYS is not set |
641 | # CONFIG_IPMI_HANDLER is not set | 597 | # CONFIG_IPMI_HANDLER is not set |
642 | # CONFIG_HW_RANDOM is not set | 598 | # CONFIG_HW_RANDOM is not set |
643 | # CONFIG_RTC is not set | ||
644 | # CONFIG_GEN_RTC is not set | ||
645 | # CONFIG_R3964 is not set | 599 | # CONFIG_R3964 is not set |
646 | # CONFIG_RAW_DRIVER is not set | 600 | # CONFIG_RAW_DRIVER is not set |
647 | # CONFIG_TCG_TPM is not set | 601 | # CONFIG_TCG_TPM is not set |
648 | CONFIG_I2C=m | 602 | CONFIG_I2C=m |
649 | CONFIG_I2C_BOARDINFO=y | 603 | CONFIG_I2C_BOARDINFO=y |
650 | CONFIG_I2C_CHARDEV=m | 604 | CONFIG_I2C_CHARDEV=m |
651 | |||
652 | # | ||
653 | # I2C Algorithms | ||
654 | # | ||
655 | CONFIG_I2C_ALGOBIT=m | 605 | CONFIG_I2C_ALGOBIT=m |
656 | # CONFIG_I2C_ALGOPCF is not set | ||
657 | # CONFIG_I2C_ALGOPCA is not set | ||
658 | 606 | ||
659 | # | 607 | # |
660 | # I2C Hardware Bus support | 608 | # I2C Hardware Bus support |
@@ -665,27 +613,23 @@ CONFIG_I2C_GPIO=m | |||
665 | # CONFIG_I2C_SIMTEC is not set | 613 | # CONFIG_I2C_SIMTEC is not set |
666 | # CONFIG_I2C_TAOS_EVM is not set | 614 | # CONFIG_I2C_TAOS_EVM is not set |
667 | # CONFIG_I2C_STUB is not set | 615 | # CONFIG_I2C_STUB is not set |
616 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
668 | 617 | ||
669 | # | 618 | # |
670 | # Miscellaneous I2C Chip support | 619 | # Miscellaneous I2C Chip support |
671 | # | 620 | # |
672 | # CONFIG_SENSORS_DS1337 is not set | ||
673 | # CONFIG_SENSORS_DS1374 is not set | ||
674 | # CONFIG_DS1682 is not set | 621 | # CONFIG_DS1682 is not set |
675 | # CONFIG_SENSORS_EEPROM is not set | 622 | # CONFIG_SENSORS_EEPROM is not set |
676 | # CONFIG_SENSORS_PCF8574 is not set | 623 | # CONFIG_SENSORS_PCF8574 is not set |
677 | # CONFIG_SENSORS_PCA9539 is not set | 624 | # CONFIG_PCF8575 is not set |
678 | # CONFIG_SENSORS_PCF8591 is not set | 625 | # CONFIG_SENSORS_PCF8591 is not set |
626 | # CONFIG_TPS65010 is not set | ||
679 | # CONFIG_SENSORS_MAX6875 is not set | 627 | # CONFIG_SENSORS_MAX6875 is not set |
680 | # CONFIG_SENSORS_TSL2550 is not set | 628 | # CONFIG_SENSORS_TSL2550 is not set |
681 | # CONFIG_I2C_DEBUG_CORE is not set | 629 | # CONFIG_I2C_DEBUG_CORE is not set |
682 | # CONFIG_I2C_DEBUG_ALGO is not set | 630 | # CONFIG_I2C_DEBUG_ALGO is not set |
683 | # CONFIG_I2C_DEBUG_BUS is not set | 631 | # CONFIG_I2C_DEBUG_BUS is not set |
684 | # CONFIG_I2C_DEBUG_CHIP is not set | 632 | # CONFIG_I2C_DEBUG_CHIP is not set |
685 | |||
686 | # | ||
687 | # SPI support | ||
688 | # | ||
689 | CONFIG_SPI=y | 633 | CONFIG_SPI=y |
690 | # CONFIG_SPI_DEBUG is not set | 634 | # CONFIG_SPI_DEBUG is not set |
691 | CONFIG_SPI_MASTER=y | 635 | CONFIG_SPI_MASTER=y |
@@ -702,9 +646,27 @@ CONFIG_SPI_ATMEL=y | |||
702 | # CONFIG_SPI_AT25 is not set | 646 | # CONFIG_SPI_AT25 is not set |
703 | CONFIG_SPI_SPIDEV=m | 647 | CONFIG_SPI_SPIDEV=m |
704 | # CONFIG_SPI_TLE62X0 is not set | 648 | # CONFIG_SPI_TLE62X0 is not set |
649 | CONFIG_HAVE_GPIO_LIB=y | ||
650 | |||
651 | # | ||
652 | # GPIO Support | ||
653 | # | ||
654 | # CONFIG_DEBUG_GPIO is not set | ||
655 | |||
656 | # | ||
657 | # I2C GPIO expanders: | ||
658 | # | ||
659 | # CONFIG_GPIO_PCA953X is not set | ||
660 | # CONFIG_GPIO_PCF857X is not set | ||
661 | |||
662 | # | ||
663 | # SPI GPIO expanders: | ||
664 | # | ||
665 | # CONFIG_GPIO_MCP23S08 is not set | ||
705 | # CONFIG_W1 is not set | 666 | # CONFIG_W1 is not set |
706 | # CONFIG_POWER_SUPPLY is not set | 667 | # CONFIG_POWER_SUPPLY is not set |
707 | # CONFIG_HWMON is not set | 668 | # CONFIG_HWMON is not set |
669 | # CONFIG_THERMAL is not set | ||
708 | CONFIG_WATCHDOG=y | 670 | CONFIG_WATCHDOG=y |
709 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 671 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
710 | 672 | ||
@@ -724,12 +686,22 @@ CONFIG_SSB_POSSIBLE=y | |||
724 | # Multifunction device drivers | 686 | # Multifunction device drivers |
725 | # | 687 | # |
726 | # CONFIG_MFD_SM501 is not set | 688 | # CONFIG_MFD_SM501 is not set |
689 | # CONFIG_HTC_PASIC3 is not set | ||
727 | 690 | ||
728 | # | 691 | # |
729 | # Multimedia devices | 692 | # Multimedia devices |
730 | # | 693 | # |
694 | |||
695 | # | ||
696 | # Multimedia core support | ||
697 | # | ||
731 | # CONFIG_VIDEO_DEV is not set | 698 | # CONFIG_VIDEO_DEV is not set |
732 | # CONFIG_DVB_CORE is not set | 699 | # CONFIG_DVB_CORE is not set |
700 | # CONFIG_VIDEO_MEDIA is not set | ||
701 | |||
702 | # | ||
703 | # Multimedia drivers | ||
704 | # | ||
733 | # CONFIG_DAB is not set | 705 | # CONFIG_DAB is not set |
734 | 706 | ||
735 | # | 707 | # |
@@ -753,14 +725,12 @@ CONFIG_USB_SUPPORT=y | |||
753 | # CONFIG_USB_ARCH_HAS_HCD is not set | 725 | # CONFIG_USB_ARCH_HAS_HCD is not set |
754 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 726 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
755 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 727 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
728 | # CONFIG_USB_OTG_WHITELIST is not set | ||
729 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
756 | 730 | ||
757 | # | 731 | # |
758 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 732 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
759 | # | 733 | # |
760 | |||
761 | # | ||
762 | # USB Gadget Support | ||
763 | # | ||
764 | CONFIG_USB_GADGET=y | 734 | CONFIG_USB_GADGET=y |
765 | # CONFIG_USB_GADGET_DEBUG is not set | 735 | # CONFIG_USB_GADGET_DEBUG is not set |
766 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 736 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
@@ -772,6 +742,7 @@ CONFIG_USB_ATMEL_USBA=y | |||
772 | # CONFIG_USB_GADGET_NET2280 is not set | 742 | # CONFIG_USB_GADGET_NET2280 is not set |
773 | # CONFIG_USB_GADGET_PXA2XX is not set | 743 | # CONFIG_USB_GADGET_PXA2XX is not set |
774 | # CONFIG_USB_GADGET_M66592 is not set | 744 | # CONFIG_USB_GADGET_M66592 is not set |
745 | # CONFIG_USB_GADGET_PXA27X is not set | ||
775 | # CONFIG_USB_GADGET_GOKU is not set | 746 | # CONFIG_USB_GADGET_GOKU is not set |
776 | # CONFIG_USB_GADGET_LH7A40X is not set | 747 | # CONFIG_USB_GADGET_LH7A40X is not set |
777 | # CONFIG_USB_GADGET_OMAP is not set | 748 | # CONFIG_USB_GADGET_OMAP is not set |
@@ -787,6 +758,7 @@ CONFIG_USB_FILE_STORAGE=m | |||
787 | # CONFIG_USB_FILE_STORAGE_TEST is not set | 758 | # CONFIG_USB_FILE_STORAGE_TEST is not set |
788 | CONFIG_USB_G_SERIAL=m | 759 | CONFIG_USB_G_SERIAL=m |
789 | # CONFIG_USB_MIDI_GADGET is not set | 760 | # CONFIG_USB_MIDI_GADGET is not set |
761 | # CONFIG_USB_G_PRINTER is not set | ||
790 | CONFIG_MMC=m | 762 | CONFIG_MMC=m |
791 | # CONFIG_MMC_DEBUG is not set | 763 | # CONFIG_MMC_DEBUG is not set |
792 | # CONFIG_MMC_UNSAFE_RESUME is not set | 764 | # CONFIG_MMC_UNSAFE_RESUME is not set |
@@ -797,11 +769,13 @@ CONFIG_MMC=m | |||
797 | CONFIG_MMC_BLOCK=m | 769 | CONFIG_MMC_BLOCK=m |
798 | CONFIG_MMC_BLOCK_BOUNCE=y | 770 | CONFIG_MMC_BLOCK_BOUNCE=y |
799 | # CONFIG_SDIO_UART is not set | 771 | # CONFIG_SDIO_UART is not set |
772 | # CONFIG_MMC_TEST is not set | ||
800 | 773 | ||
801 | # | 774 | # |
802 | # MMC/SD Host Controller Drivers | 775 | # MMC/SD Host Controller Drivers |
803 | # | 776 | # |
804 | CONFIG_MMC_SPI=m | 777 | CONFIG_MMC_SPI=m |
778 | # CONFIG_MEMSTICK is not set | ||
805 | CONFIG_NEW_LEDS=y | 779 | CONFIG_NEW_LEDS=y |
806 | CONFIG_LEDS_CLASS=y | 780 | CONFIG_LEDS_CLASS=y |
807 | 781 | ||
@@ -816,6 +790,8 @@ CONFIG_LEDS_GPIO=y | |||
816 | CONFIG_LEDS_TRIGGERS=y | 790 | CONFIG_LEDS_TRIGGERS=y |
817 | CONFIG_LEDS_TRIGGER_TIMER=y | 791 | CONFIG_LEDS_TRIGGER_TIMER=y |
818 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | 792 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y |
793 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
794 | # CONFIG_ACCESSIBILITY is not set | ||
819 | CONFIG_RTC_LIB=y | 795 | CONFIG_RTC_LIB=y |
820 | CONFIG_RTC_CLASS=y | 796 | CONFIG_RTC_CLASS=y |
821 | CONFIG_RTC_HCTOSYS=y | 797 | CONFIG_RTC_HCTOSYS=y |
@@ -844,19 +820,22 @@ CONFIG_RTC_INTF_DEV=y | |||
844 | # CONFIG_RTC_DRV_PCF8563 is not set | 820 | # CONFIG_RTC_DRV_PCF8563 is not set |
845 | # CONFIG_RTC_DRV_PCF8583 is not set | 821 | # CONFIG_RTC_DRV_PCF8583 is not set |
846 | # CONFIG_RTC_DRV_M41T80 is not set | 822 | # CONFIG_RTC_DRV_M41T80 is not set |
823 | # CONFIG_RTC_DRV_S35390A is not set | ||
847 | 824 | ||
848 | # | 825 | # |
849 | # SPI RTC drivers | 826 | # SPI RTC drivers |
850 | # | 827 | # |
851 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
852 | # CONFIG_RTC_DRV_MAX6902 is not set | 828 | # CONFIG_RTC_DRV_MAX6902 is not set |
829 | # CONFIG_RTC_DRV_R9701 is not set | ||
830 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
853 | 831 | ||
854 | # | 832 | # |
855 | # Platform RTC drivers | 833 | # Platform RTC drivers |
856 | # | 834 | # |
835 | # CONFIG_RTC_DRV_DS1511 is not set | ||
857 | # CONFIG_RTC_DRV_DS1553 is not set | 836 | # CONFIG_RTC_DRV_DS1553 is not set |
858 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
859 | # CONFIG_RTC_DRV_DS1742 is not set | 837 | # CONFIG_RTC_DRV_DS1742 is not set |
838 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
860 | # CONFIG_RTC_DRV_M48T86 is not set | 839 | # CONFIG_RTC_DRV_M48T86 is not set |
861 | # CONFIG_RTC_DRV_M48T59 is not set | 840 | # CONFIG_RTC_DRV_M48T59 is not set |
862 | # CONFIG_RTC_DRV_V3020 is not set | 841 | # CONFIG_RTC_DRV_V3020 is not set |
@@ -865,10 +844,6 @@ CONFIG_RTC_INTF_DEV=y | |||
865 | # on-CPU RTC drivers | 844 | # on-CPU RTC drivers |
866 | # | 845 | # |
867 | CONFIG_RTC_DRV_AT32AP700X=y | 846 | CONFIG_RTC_DRV_AT32AP700X=y |
868 | |||
869 | # | ||
870 | # Userspace I/O | ||
871 | # | ||
872 | # CONFIG_UIO is not set | 847 | # CONFIG_UIO is not set |
873 | 848 | ||
874 | # | 849 | # |
@@ -885,14 +860,11 @@ CONFIG_JBD=m | |||
885 | # CONFIG_JFS_FS is not set | 860 | # CONFIG_JFS_FS is not set |
886 | # CONFIG_FS_POSIX_ACL is not set | 861 | # CONFIG_FS_POSIX_ACL is not set |
887 | # CONFIG_XFS_FS is not set | 862 | # CONFIG_XFS_FS is not set |
888 | # CONFIG_GFS2_FS is not set | ||
889 | # CONFIG_OCFS2_FS is not set | 863 | # CONFIG_OCFS2_FS is not set |
890 | # CONFIG_MINIX_FS is not set | 864 | # CONFIG_DNOTIFY is not set |
891 | # CONFIG_ROMFS_FS is not set | ||
892 | CONFIG_INOTIFY=y | 865 | CONFIG_INOTIFY=y |
893 | CONFIG_INOTIFY_USER=y | 866 | CONFIG_INOTIFY_USER=y |
894 | # CONFIG_QUOTA is not set | 867 | # CONFIG_QUOTA is not set |
895 | # CONFIG_DNOTIFY is not set | ||
896 | # CONFIG_AUTOFS_FS is not set | 868 | # CONFIG_AUTOFS_FS is not set |
897 | # CONFIG_AUTOFS4_FS is not set | 869 | # CONFIG_AUTOFS4_FS is not set |
898 | CONFIG_FUSE_FS=m | 870 | CONFIG_FUSE_FS=m |
@@ -948,8 +920,10 @@ CONFIG_JFFS2_RTIME=y | |||
948 | # CONFIG_JFFS2_RUBIN is not set | 920 | # CONFIG_JFFS2_RUBIN is not set |
949 | # CONFIG_CRAMFS is not set | 921 | # CONFIG_CRAMFS is not set |
950 | # CONFIG_VXFS_FS is not set | 922 | # CONFIG_VXFS_FS is not set |
923 | # CONFIG_MINIX_FS is not set | ||
951 | # CONFIG_HPFS_FS is not set | 924 | # CONFIG_HPFS_FS is not set |
952 | # CONFIG_QNX4FS_FS is not set | 925 | # CONFIG_QNX4FS_FS is not set |
926 | # CONFIG_ROMFS_FS is not set | ||
953 | # CONFIG_SYSV_FS is not set | 927 | # CONFIG_SYSV_FS is not set |
954 | # CONFIG_UFS_FS is not set | 928 | # CONFIG_UFS_FS is not set |
955 | CONFIG_NETWORK_FILESYSTEMS=y | 929 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -957,12 +931,10 @@ CONFIG_NFS_FS=y | |||
957 | CONFIG_NFS_V3=y | 931 | CONFIG_NFS_V3=y |
958 | # CONFIG_NFS_V3_ACL is not set | 932 | # CONFIG_NFS_V3_ACL is not set |
959 | # CONFIG_NFS_V4 is not set | 933 | # CONFIG_NFS_V4 is not set |
960 | # CONFIG_NFS_DIRECTIO is not set | ||
961 | CONFIG_NFSD=m | 934 | CONFIG_NFSD=m |
962 | CONFIG_NFSD_V3=y | 935 | CONFIG_NFSD_V3=y |
963 | # CONFIG_NFSD_V3_ACL is not set | 936 | # CONFIG_NFSD_V3_ACL is not set |
964 | # CONFIG_NFSD_V4 is not set | 937 | # CONFIG_NFSD_V4 is not set |
965 | CONFIG_NFSD_TCP=y | ||
966 | CONFIG_ROOT_NFS=y | 938 | CONFIG_ROOT_NFS=y |
967 | CONFIG_LOCKD=y | 939 | CONFIG_LOCKD=y |
968 | CONFIG_LOCKD_V4=y | 940 | CONFIG_LOCKD_V4=y |
@@ -1030,11 +1002,6 @@ CONFIG_NLS_ISO8859_1=m | |||
1030 | # CONFIG_NLS_KOI8_U is not set | 1002 | # CONFIG_NLS_KOI8_U is not set |
1031 | CONFIG_NLS_UTF8=m | 1003 | CONFIG_NLS_UTF8=m |
1032 | # CONFIG_DLM is not set | 1004 | # CONFIG_DLM is not set |
1033 | CONFIG_INSTRUMENTATION=y | ||
1034 | CONFIG_PROFILING=y | ||
1035 | CONFIG_OPROFILE=m | ||
1036 | CONFIG_KPROBES=y | ||
1037 | # CONFIG_MARKERS is not set | ||
1038 | 1005 | ||
1039 | # | 1006 | # |
1040 | # Kernel hacking | 1007 | # Kernel hacking |
@@ -1042,6 +1009,7 @@ CONFIG_KPROBES=y | |||
1042 | # CONFIG_PRINTK_TIME is not set | 1009 | # CONFIG_PRINTK_TIME is not set |
1043 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1010 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1044 | CONFIG_ENABLE_MUST_CHECK=y | 1011 | CONFIG_ENABLE_MUST_CHECK=y |
1012 | CONFIG_FRAME_WARN=1024 | ||
1045 | CONFIG_MAGIC_SYSRQ=y | 1013 | CONFIG_MAGIC_SYSRQ=y |
1046 | # CONFIG_UNUSED_SYMBOLS is not set | 1014 | # CONFIG_UNUSED_SYMBOLS is not set |
1047 | # CONFIG_DEBUG_FS is not set | 1015 | # CONFIG_DEBUG_FS is not set |
@@ -1052,7 +1020,9 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1052 | CONFIG_SCHED_DEBUG=y | 1020 | CONFIG_SCHED_DEBUG=y |
1053 | # CONFIG_SCHEDSTATS is not set | 1021 | # CONFIG_SCHEDSTATS is not set |
1054 | # CONFIG_TIMER_STATS is not set | 1022 | # CONFIG_TIMER_STATS is not set |
1023 | # CONFIG_DEBUG_OBJECTS is not set | ||
1055 | # CONFIG_SLUB_DEBUG_ON is not set | 1024 | # CONFIG_SLUB_DEBUG_ON is not set |
1025 | # CONFIG_SLUB_STATS is not set | ||
1056 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1026 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1057 | # CONFIG_RT_MUTEX_TESTER is not set | 1027 | # CONFIG_RT_MUTEX_TESTER is not set |
1058 | # CONFIG_DEBUG_SPINLOCK is not set | 1028 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1066,12 +1036,14 @@ CONFIG_SCHED_DEBUG=y | |||
1066 | CONFIG_DEBUG_BUGVERBOSE=y | 1036 | CONFIG_DEBUG_BUGVERBOSE=y |
1067 | # CONFIG_DEBUG_INFO is not set | 1037 | # CONFIG_DEBUG_INFO is not set |
1068 | # CONFIG_DEBUG_VM is not set | 1038 | # CONFIG_DEBUG_VM is not set |
1039 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1069 | # CONFIG_DEBUG_LIST is not set | 1040 | # CONFIG_DEBUG_LIST is not set |
1070 | # CONFIG_DEBUG_SG is not set | 1041 | # CONFIG_DEBUG_SG is not set |
1071 | CONFIG_FRAME_POINTER=y | 1042 | CONFIG_FRAME_POINTER=y |
1072 | # CONFIG_FORCED_INLINING is not set | ||
1073 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1043 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1074 | # CONFIG_RCU_TORTURE_TEST is not set | 1044 | # CONFIG_RCU_TORTURE_TEST is not set |
1045 | # CONFIG_KPROBES_SANITY_TEST is not set | ||
1046 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1075 | # CONFIG_LKDTM is not set | 1047 | # CONFIG_LKDTM is not set |
1076 | # CONFIG_FAULT_INJECTION is not set | 1048 | # CONFIG_FAULT_INJECTION is not set |
1077 | # CONFIG_SAMPLES is not set | 1049 | # CONFIG_SAMPLES is not set |
@@ -1083,52 +1055,90 @@ CONFIG_FRAME_POINTER=y | |||
1083 | # CONFIG_SECURITY is not set | 1055 | # CONFIG_SECURITY is not set |
1084 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1056 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1085 | CONFIG_CRYPTO=y | 1057 | CONFIG_CRYPTO=y |
1058 | |||
1059 | # | ||
1060 | # Crypto core or helper | ||
1061 | # | ||
1086 | CONFIG_CRYPTO_ALGAPI=y | 1062 | CONFIG_CRYPTO_ALGAPI=y |
1063 | CONFIG_CRYPTO_AEAD=y | ||
1087 | CONFIG_CRYPTO_BLKCIPHER=y | 1064 | CONFIG_CRYPTO_BLKCIPHER=y |
1088 | CONFIG_CRYPTO_HASH=y | 1065 | CONFIG_CRYPTO_HASH=y |
1089 | CONFIG_CRYPTO_MANAGER=y | 1066 | CONFIG_CRYPTO_MANAGER=y |
1067 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1068 | # CONFIG_CRYPTO_NULL is not set | ||
1069 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1070 | CONFIG_CRYPTO_AUTHENC=y | ||
1071 | # CONFIG_CRYPTO_TEST is not set | ||
1072 | |||
1073 | # | ||
1074 | # Authenticated Encryption with Associated Data | ||
1075 | # | ||
1076 | # CONFIG_CRYPTO_CCM is not set | ||
1077 | # CONFIG_CRYPTO_GCM is not set | ||
1078 | # CONFIG_CRYPTO_SEQIV is not set | ||
1079 | |||
1080 | # | ||
1081 | # Block modes | ||
1082 | # | ||
1083 | CONFIG_CRYPTO_CBC=y | ||
1084 | # CONFIG_CRYPTO_CTR is not set | ||
1085 | # CONFIG_CRYPTO_CTS is not set | ||
1086 | CONFIG_CRYPTO_ECB=m | ||
1087 | # CONFIG_CRYPTO_LRW is not set | ||
1088 | CONFIG_CRYPTO_PCBC=m | ||
1089 | # CONFIG_CRYPTO_XTS is not set | ||
1090 | |||
1091 | # | ||
1092 | # Hash modes | ||
1093 | # | ||
1090 | CONFIG_CRYPTO_HMAC=y | 1094 | CONFIG_CRYPTO_HMAC=y |
1091 | # CONFIG_CRYPTO_XCBC is not set | 1095 | # CONFIG_CRYPTO_XCBC is not set |
1092 | # CONFIG_CRYPTO_NULL is not set | 1096 | |
1097 | # | ||
1098 | # Digest | ||
1099 | # | ||
1100 | # CONFIG_CRYPTO_CRC32C is not set | ||
1093 | # CONFIG_CRYPTO_MD4 is not set | 1101 | # CONFIG_CRYPTO_MD4 is not set |
1094 | CONFIG_CRYPTO_MD5=y | 1102 | CONFIG_CRYPTO_MD5=y |
1103 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1095 | CONFIG_CRYPTO_SHA1=y | 1104 | CONFIG_CRYPTO_SHA1=y |
1096 | # CONFIG_CRYPTO_SHA256 is not set | 1105 | # CONFIG_CRYPTO_SHA256 is not set |
1097 | # CONFIG_CRYPTO_SHA512 is not set | 1106 | # CONFIG_CRYPTO_SHA512 is not set |
1098 | # CONFIG_CRYPTO_WP512 is not set | ||
1099 | # CONFIG_CRYPTO_TGR192 is not set | 1107 | # CONFIG_CRYPTO_TGR192 is not set |
1100 | # CONFIG_CRYPTO_GF128MUL is not set | 1108 | # CONFIG_CRYPTO_WP512 is not set |
1101 | CONFIG_CRYPTO_ECB=m | 1109 | |
1102 | CONFIG_CRYPTO_CBC=y | 1110 | # |
1103 | CONFIG_CRYPTO_PCBC=m | 1111 | # Ciphers |
1104 | # CONFIG_CRYPTO_LRW is not set | 1112 | # |
1105 | # CONFIG_CRYPTO_XTS is not set | ||
1106 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1107 | CONFIG_CRYPTO_DES=y | ||
1108 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1109 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1110 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1111 | # CONFIG_CRYPTO_SERPENT is not set | ||
1112 | # CONFIG_CRYPTO_AES is not set | 1113 | # CONFIG_CRYPTO_AES is not set |
1114 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1115 | CONFIG_CRYPTO_ARC4=m | ||
1116 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1117 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1113 | # CONFIG_CRYPTO_CAST5 is not set | 1118 | # CONFIG_CRYPTO_CAST5 is not set |
1114 | # CONFIG_CRYPTO_CAST6 is not set | 1119 | # CONFIG_CRYPTO_CAST6 is not set |
1115 | # CONFIG_CRYPTO_TEA is not set | 1120 | CONFIG_CRYPTO_DES=y |
1116 | CONFIG_CRYPTO_ARC4=m | 1121 | # CONFIG_CRYPTO_FCRYPT is not set |
1117 | # CONFIG_CRYPTO_KHAZAD is not set | 1122 | # CONFIG_CRYPTO_KHAZAD is not set |
1118 | # CONFIG_CRYPTO_ANUBIS is not set | 1123 | # CONFIG_CRYPTO_SALSA20 is not set |
1119 | # CONFIG_CRYPTO_SEED is not set | 1124 | # CONFIG_CRYPTO_SEED is not set |
1125 | # CONFIG_CRYPTO_SERPENT is not set | ||
1126 | # CONFIG_CRYPTO_TEA is not set | ||
1127 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1128 | |||
1129 | # | ||
1130 | # Compression | ||
1131 | # | ||
1120 | CONFIG_CRYPTO_DEFLATE=y | 1132 | CONFIG_CRYPTO_DEFLATE=y |
1121 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1133 | # CONFIG_CRYPTO_LZO is not set |
1122 | # CONFIG_CRYPTO_CRC32C is not set | ||
1123 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1124 | # CONFIG_CRYPTO_TEST is not set | ||
1125 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1126 | CONFIG_CRYPTO_HW=y | 1134 | CONFIG_CRYPTO_HW=y |
1127 | 1135 | ||
1128 | # | 1136 | # |
1129 | # Library routines | 1137 | # Library routines |
1130 | # | 1138 | # |
1131 | CONFIG_BITREVERSE=y | 1139 | CONFIG_BITREVERSE=y |
1140 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1141 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1132 | CONFIG_CRC_CCITT=m | 1142 | CONFIG_CRC_CCITT=m |
1133 | # CONFIG_CRC16 is not set | 1143 | # CONFIG_CRC16 is not set |
1134 | CONFIG_CRC_ITU_T=m | 1144 | CONFIG_CRC_ITU_T=m |
@@ -1137,10 +1147,6 @@ CONFIG_CRC7=m | |||
1137 | # CONFIG_LIBCRC32C is not set | 1147 | # CONFIG_LIBCRC32C is not set |
1138 | CONFIG_ZLIB_INFLATE=y | 1148 | CONFIG_ZLIB_INFLATE=y |
1139 | CONFIG_ZLIB_DEFLATE=y | 1149 | CONFIG_ZLIB_DEFLATE=y |
1140 | CONFIG_TEXTSEARCH=y | ||
1141 | CONFIG_TEXTSEARCH_KMP=m | ||
1142 | CONFIG_TEXTSEARCH_BM=m | ||
1143 | CONFIG_TEXTSEARCH_FSM=m | ||
1144 | CONFIG_PLIST=y | 1150 | CONFIG_PLIST=y |
1145 | CONFIG_HAS_IOMEM=y | 1151 | CONFIG_HAS_IOMEM=y |
1146 | CONFIG_HAS_IOPORT=y | 1152 | CONFIG_HAS_IOPORT=y |
diff --git a/arch/avr32/configs/atstk1002_defconfig b/arch/avr32/configs/atstk1002_defconfig index 2fb2ede5f2b4..c6d02eac8791 100644 --- a/arch/avr32/configs/atstk1002_defconfig +++ b/arch/avr32/configs/atstk1002_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc7 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Wed Jan 9 23:07:43 2008 | 4 | # Mon May 26 13:30:20 2008 |
5 | # | 5 | # |
6 | CONFIG_AVR32=y | 6 | CONFIG_AVR32=y |
7 | CONFIG_GENERIC_GPIO=y | 7 | CONFIG_GENERIC_GPIO=y |
@@ -13,10 +13,10 @@ CONFIG_HARDIRQS_SW_RESEND=y | |||
13 | CONFIG_GENERIC_IRQ_PROBE=y | 13 | CONFIG_GENERIC_IRQ_PROBE=y |
14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
15 | CONFIG_GENERIC_TIME=y | 15 | CONFIG_GENERIC_TIME=y |
16 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 17 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
17 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
18 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
19 | CONFIG_ARCH_SUPPORTS_OPROFILE=y | ||
20 | CONFIG_GENERIC_HWEIGHT=y | 20 | CONFIG_GENERIC_HWEIGHT=y |
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 21 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
22 | CONFIG_GENERIC_BUG=y | 22 | CONFIG_GENERIC_BUG=y |
@@ -36,15 +36,15 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
36 | CONFIG_POSIX_MQUEUE=y | 36 | CONFIG_POSIX_MQUEUE=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_USER_NS is not set | ||
40 | # CONFIG_PID_NS is not set | ||
41 | # CONFIG_AUDIT is not set | 39 | # CONFIG_AUDIT is not set |
42 | # CONFIG_IKCONFIG is not set | 40 | # CONFIG_IKCONFIG is not set |
43 | CONFIG_LOG_BUF_SHIFT=14 | 41 | CONFIG_LOG_BUF_SHIFT=14 |
44 | # CONFIG_CGROUPS is not set | 42 | # CONFIG_CGROUPS is not set |
45 | # CONFIG_FAIR_GROUP_SCHED is not set | 43 | # CONFIG_GROUP_SCHED is not set |
46 | CONFIG_SYSFS_DEPRECATED=y | 44 | CONFIG_SYSFS_DEPRECATED=y |
45 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
47 | CONFIG_RELAY=y | 46 | CONFIG_RELAY=y |
47 | # CONFIG_NAMESPACES is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | 48 | CONFIG_BLK_DEV_INITRD=y |
49 | CONFIG_INITRAMFS_SOURCE="" | 49 | CONFIG_INITRAMFS_SOURCE="" |
50 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 50 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -58,11 +58,13 @@ CONFIG_HOTPLUG=y | |||
58 | CONFIG_PRINTK=y | 58 | CONFIG_PRINTK=y |
59 | CONFIG_BUG=y | 59 | CONFIG_BUG=y |
60 | CONFIG_ELF_CORE=y | 60 | CONFIG_ELF_CORE=y |
61 | # CONFIG_COMPAT_BRK is not set | ||
61 | # CONFIG_BASE_FULL is not set | 62 | # CONFIG_BASE_FULL is not set |
62 | CONFIG_FUTEX=y | 63 | CONFIG_FUTEX=y |
63 | CONFIG_ANON_INODES=y | 64 | CONFIG_ANON_INODES=y |
64 | CONFIG_EPOLL=y | 65 | CONFIG_EPOLL=y |
65 | CONFIG_SIGNALFD=y | 66 | CONFIG_SIGNALFD=y |
67 | CONFIG_TIMERFD=y | ||
66 | CONFIG_EVENTFD=y | 68 | CONFIG_EVENTFD=y |
67 | CONFIG_SHMEM=y | 69 | CONFIG_SHMEM=y |
68 | CONFIG_VM_EVENT_COUNTERS=y | 70 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -70,11 +72,21 @@ CONFIG_SLUB_DEBUG=y | |||
70 | # CONFIG_SLAB is not set | 72 | # CONFIG_SLAB is not set |
71 | CONFIG_SLUB=y | 73 | CONFIG_SLUB=y |
72 | # CONFIG_SLOB is not set | 74 | # CONFIG_SLOB is not set |
75 | CONFIG_PROFILING=y | ||
76 | # CONFIG_MARKERS is not set | ||
77 | CONFIG_OPROFILE=m | ||
78 | CONFIG_HAVE_OPROFILE=y | ||
79 | CONFIG_KPROBES=y | ||
80 | CONFIG_HAVE_KPROBES=y | ||
81 | # CONFIG_HAVE_KRETPROBES is not set | ||
82 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
83 | CONFIG_PROC_PAGE_MONITOR=y | ||
73 | CONFIG_SLABINFO=y | 84 | CONFIG_SLABINFO=y |
74 | CONFIG_RT_MUTEXES=y | 85 | CONFIG_RT_MUTEXES=y |
75 | # CONFIG_TINY_SHMEM is not set | 86 | # CONFIG_TINY_SHMEM is not set |
76 | CONFIG_BASE_SMALL=1 | 87 | CONFIG_BASE_SMALL=1 |
77 | CONFIG_MODULES=y | 88 | CONFIG_MODULES=y |
89 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
78 | CONFIG_MODULE_UNLOAD=y | 90 | CONFIG_MODULE_UNLOAD=y |
79 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 91 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
80 | # CONFIG_MODVERSIONS is not set | 92 | # CONFIG_MODVERSIONS is not set |
@@ -98,10 +110,15 @@ CONFIG_IOSCHED_CFQ=y | |||
98 | CONFIG_DEFAULT_CFQ=y | 110 | CONFIG_DEFAULT_CFQ=y |
99 | # CONFIG_DEFAULT_NOOP is not set | 111 | # CONFIG_DEFAULT_NOOP is not set |
100 | CONFIG_DEFAULT_IOSCHED="cfq" | 112 | CONFIG_DEFAULT_IOSCHED="cfq" |
113 | CONFIG_CLASSIC_RCU=y | ||
101 | 114 | ||
102 | # | 115 | # |
103 | # System Type and features | 116 | # System Type and features |
104 | # | 117 | # |
118 | CONFIG_TICK_ONESHOT=y | ||
119 | CONFIG_NO_HZ=y | ||
120 | CONFIG_HIGH_RES_TIMERS=y | ||
121 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
105 | CONFIG_SUBARCH_AVR32B=y | 122 | CONFIG_SUBARCH_AVR32B=y |
106 | CONFIG_MMU=y | 123 | CONFIG_MMU=y |
107 | CONFIG_PERFORMANCE_COUNTERS=y | 124 | CONFIG_PERFORMANCE_COUNTERS=y |
@@ -147,16 +164,19 @@ CONFIG_FLATMEM=y | |||
147 | CONFIG_FLAT_NODE_MEM_MAP=y | 164 | CONFIG_FLAT_NODE_MEM_MAP=y |
148 | # CONFIG_SPARSEMEM_STATIC is not set | 165 | # CONFIG_SPARSEMEM_STATIC is not set |
149 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 166 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
167 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
150 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 168 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
151 | # CONFIG_RESOURCES_64BIT is not set | 169 | # CONFIG_RESOURCES_64BIT is not set |
152 | CONFIG_ZONE_DMA_FLAG=0 | 170 | CONFIG_ZONE_DMA_FLAG=0 |
153 | CONFIG_VIRT_TO_BUS=y | 171 | CONFIG_VIRT_TO_BUS=y |
154 | # CONFIG_OWNERSHIP_TRACE is not set | 172 | # CONFIG_OWNERSHIP_TRACE is not set |
173 | CONFIG_NMI_DEBUGGING=y | ||
155 | # CONFIG_HZ_100 is not set | 174 | # CONFIG_HZ_100 is not set |
156 | CONFIG_HZ_250=y | 175 | CONFIG_HZ_250=y |
157 | # CONFIG_HZ_300 is not set | 176 | # CONFIG_HZ_300 is not set |
158 | # CONFIG_HZ_1000 is not set | 177 | # CONFIG_HZ_1000 is not set |
159 | CONFIG_HZ=250 | 178 | CONFIG_HZ=250 |
179 | # CONFIG_SCHED_HRTICK is not set | ||
160 | CONFIG_CMDLINE="" | 180 | CONFIG_CMDLINE="" |
161 | 181 | ||
162 | # | 182 | # |
@@ -170,9 +190,10 @@ CONFIG_CPU_FREQ=y | |||
170 | CONFIG_CPU_FREQ_TABLE=y | 190 | CONFIG_CPU_FREQ_TABLE=y |
171 | # CONFIG_CPU_FREQ_DEBUG is not set | 191 | # CONFIG_CPU_FREQ_DEBUG is not set |
172 | # CONFIG_CPU_FREQ_STAT is not set | 192 | # CONFIG_CPU_FREQ_STAT is not set |
173 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 193 | # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set |
194 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
174 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 195 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set |
175 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | 196 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
176 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | 197 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set |
177 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | 198 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y |
178 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | 199 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set |
@@ -208,6 +229,7 @@ CONFIG_XFRM=y | |||
208 | CONFIG_XFRM_USER=m | 229 | CONFIG_XFRM_USER=m |
209 | # CONFIG_XFRM_SUB_POLICY is not set | 230 | # CONFIG_XFRM_SUB_POLICY is not set |
210 | # CONFIG_XFRM_MIGRATE is not set | 231 | # CONFIG_XFRM_MIGRATE is not set |
232 | # CONFIG_XFRM_STATISTICS is not set | ||
211 | CONFIG_NET_KEY=m | 233 | CONFIG_NET_KEY=m |
212 | # CONFIG_NET_KEY_MIGRATE is not set | 234 | # CONFIG_NET_KEY_MIGRATE is not set |
213 | CONFIG_INET=y | 235 | CONFIG_INET=y |
@@ -252,8 +274,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
252 | CONFIG_INET6_XFRM_MODE_BEET=m | 274 | CONFIG_INET6_XFRM_MODE_BEET=m |
253 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set | 275 | # CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set |
254 | CONFIG_IPV6_SIT=m | 276 | CONFIG_IPV6_SIT=m |
277 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
255 | CONFIG_IPV6_TUNNEL=m | 278 | CONFIG_IPV6_TUNNEL=m |
256 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 279 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
280 | # CONFIG_IPV6_MROUTE is not set | ||
257 | # CONFIG_NETWORK_SECMARK is not set | 281 | # CONFIG_NETWORK_SECMARK is not set |
258 | # CONFIG_NETFILTER is not set | 282 | # CONFIG_NETFILTER is not set |
259 | # CONFIG_IP_DCCP is not set | 283 | # CONFIG_IP_DCCP is not set |
@@ -279,6 +303,7 @@ CONFIG_LLC=m | |||
279 | # CONFIG_NET_PKTGEN is not set | 303 | # CONFIG_NET_PKTGEN is not set |
280 | # CONFIG_NET_TCPPROBE is not set | 304 | # CONFIG_NET_TCPPROBE is not set |
281 | # CONFIG_HAMRADIO is not set | 305 | # CONFIG_HAMRADIO is not set |
306 | # CONFIG_CAN is not set | ||
282 | # CONFIG_IRDA is not set | 307 | # CONFIG_IRDA is not set |
283 | # CONFIG_BT is not set | 308 | # CONFIG_BT is not set |
284 | # CONFIG_AF_RXRPC is not set | 309 | # CONFIG_AF_RXRPC is not set |
@@ -314,6 +339,7 @@ CONFIG_MTD=y | |||
314 | CONFIG_MTD_PARTITIONS=y | 339 | CONFIG_MTD_PARTITIONS=y |
315 | # CONFIG_MTD_REDBOOT_PARTS is not set | 340 | # CONFIG_MTD_REDBOOT_PARTS is not set |
316 | CONFIG_MTD_CMDLINE_PARTS=y | 341 | CONFIG_MTD_CMDLINE_PARTS=y |
342 | # CONFIG_MTD_AR7_PARTS is not set | ||
317 | 343 | ||
318 | # | 344 | # |
319 | # User Modules And Translation Layers | 345 | # User Modules And Translation Layers |
@@ -368,6 +394,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
368 | # | 394 | # |
369 | CONFIG_MTD_DATAFLASH=m | 395 | CONFIG_MTD_DATAFLASH=m |
370 | CONFIG_MTD_M25P80=m | 396 | CONFIG_MTD_M25P80=m |
397 | CONFIG_M25PXX_USE_FAST_READ=y | ||
371 | # CONFIG_MTD_SLRAM is not set | 398 | # CONFIG_MTD_SLRAM is not set |
372 | # CONFIG_MTD_PHRAM is not set | 399 | # CONFIG_MTD_PHRAM is not set |
373 | # CONFIG_MTD_MTDRAM is not set | 400 | # CONFIG_MTD_MTDRAM is not set |
@@ -395,13 +422,18 @@ CONFIG_BLK_DEV_NBD=m | |||
395 | CONFIG_BLK_DEV_RAM=m | 422 | CONFIG_BLK_DEV_RAM=m |
396 | CONFIG_BLK_DEV_RAM_COUNT=16 | 423 | CONFIG_BLK_DEV_RAM_COUNT=16 |
397 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 424 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
398 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 425 | # CONFIG_BLK_DEV_XIP is not set |
399 | # CONFIG_CDROM_PKTCDVD is not set | 426 | # CONFIG_CDROM_PKTCDVD is not set |
400 | # CONFIG_ATA_OVER_ETH is not set | 427 | # CONFIG_ATA_OVER_ETH is not set |
401 | CONFIG_MISC_DEVICES=y | 428 | CONFIG_MISC_DEVICES=y |
429 | CONFIG_ATMEL_PWM=m | ||
430 | CONFIG_ATMEL_TCLIB=y | ||
431 | CONFIG_ATMEL_TCB_CLKSRC=y | ||
432 | CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 | ||
402 | # CONFIG_EEPROM_93CX6 is not set | 433 | # CONFIG_EEPROM_93CX6 is not set |
403 | CONFIG_ATMEL_SSC=m | 434 | CONFIG_ATMEL_SSC=m |
404 | # CONFIG_IDE is not set | 435 | # CONFIG_ENCLOSURE_SERVICES is not set |
436 | # CONFIG_HAVE_IDE is not set | ||
405 | 437 | ||
406 | # | 438 | # |
407 | # SCSI device support | 439 | # SCSI device support |
@@ -444,6 +476,9 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
444 | # CONFIG_SCSI_LOWLEVEL is not set | 476 | # CONFIG_SCSI_LOWLEVEL is not set |
445 | CONFIG_ATA=m | 477 | CONFIG_ATA=m |
446 | # CONFIG_ATA_NONSTANDARD is not set | 478 | # CONFIG_ATA_NONSTANDARD is not set |
479 | # CONFIG_SATA_PMP is not set | ||
480 | CONFIG_ATA_SFF=y | ||
481 | # CONFIG_SATA_MV is not set | ||
447 | CONFIG_PATA_AT32=m | 482 | CONFIG_PATA_AT32=m |
448 | # CONFIG_PATA_PLATFORM is not set | 483 | # CONFIG_PATA_PLATFORM is not set |
449 | # CONFIG_MD is not set | 484 | # CONFIG_MD is not set |
@@ -469,11 +504,13 @@ CONFIG_PHYLIB=y | |||
469 | # CONFIG_SMSC_PHY is not set | 504 | # CONFIG_SMSC_PHY is not set |
470 | # CONFIG_BROADCOM_PHY is not set | 505 | # CONFIG_BROADCOM_PHY is not set |
471 | # CONFIG_ICPLUS_PHY is not set | 506 | # CONFIG_ICPLUS_PHY is not set |
507 | # CONFIG_REALTEK_PHY is not set | ||
472 | # CONFIG_FIXED_PHY is not set | 508 | # CONFIG_FIXED_PHY is not set |
473 | # CONFIG_MDIO_BITBANG is not set | 509 | # CONFIG_MDIO_BITBANG is not set |
474 | CONFIG_NET_ETHERNET=y | 510 | CONFIG_NET_ETHERNET=y |
475 | # CONFIG_MII is not set | 511 | # CONFIG_MII is not set |
476 | CONFIG_MACB=y | 512 | CONFIG_MACB=y |
513 | # CONFIG_ENC28J60 is not set | ||
477 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 514 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
478 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 515 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
479 | # CONFIG_IBM_NEW_EMAC_TAH is not set | 516 | # CONFIG_IBM_NEW_EMAC_TAH is not set |
@@ -487,6 +524,7 @@ CONFIG_MACB=y | |||
487 | # | 524 | # |
488 | # CONFIG_WLAN_PRE80211 is not set | 525 | # CONFIG_WLAN_PRE80211 is not set |
489 | # CONFIG_WLAN_80211 is not set | 526 | # CONFIG_WLAN_80211 is not set |
527 | # CONFIG_IWLWIFI_LEDS is not set | ||
490 | # CONFIG_WAN is not set | 528 | # CONFIG_WAN is not set |
491 | CONFIG_PPP=m | 529 | CONFIG_PPP=m |
492 | # CONFIG_PPP_MULTILINK is not set | 530 | # CONFIG_PPP_MULTILINK is not set |
@@ -500,7 +538,6 @@ CONFIG_PPP_BSDCOMP=m | |||
500 | # CONFIG_PPPOL2TP is not set | 538 | # CONFIG_PPPOL2TP is not set |
501 | # CONFIG_SLIP is not set | 539 | # CONFIG_SLIP is not set |
502 | CONFIG_SLHC=m | 540 | CONFIG_SLHC=m |
503 | # CONFIG_SHAPER is not set | ||
504 | # CONFIG_NETCONSOLE is not set | 541 | # CONFIG_NETCONSOLE is not set |
505 | # CONFIG_NETPOLL is not set | 542 | # CONFIG_NETPOLL is not set |
506 | # CONFIG_NET_POLL_CONTROLLER is not set | 543 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -556,6 +593,7 @@ CONFIG_MOUSE_GPIO=m | |||
556 | # Character devices | 593 | # Character devices |
557 | # | 594 | # |
558 | # CONFIG_VT is not set | 595 | # CONFIG_VT is not set |
596 | # CONFIG_DEVKMEM is not set | ||
559 | # CONFIG_SERIAL_NONSTANDARD is not set | 597 | # CONFIG_SERIAL_NONSTANDARD is not set |
560 | 598 | ||
561 | # | 599 | # |
@@ -568,6 +606,7 @@ CONFIG_MOUSE_GPIO=m | |||
568 | # | 606 | # |
569 | CONFIG_SERIAL_ATMEL=y | 607 | CONFIG_SERIAL_ATMEL=y |
570 | CONFIG_SERIAL_ATMEL_CONSOLE=y | 608 | CONFIG_SERIAL_ATMEL_CONSOLE=y |
609 | CONFIG_SERIAL_ATMEL_PDC=y | ||
571 | # CONFIG_SERIAL_ATMEL_TTYAT is not set | 610 | # CONFIG_SERIAL_ATMEL_TTYAT is not set |
572 | CONFIG_SERIAL_CORE=y | 611 | CONFIG_SERIAL_CORE=y |
573 | CONFIG_SERIAL_CORE_CONSOLE=y | 612 | CONFIG_SERIAL_CORE_CONSOLE=y |
@@ -575,21 +614,13 @@ CONFIG_UNIX98_PTYS=y | |||
575 | # CONFIG_LEGACY_PTYS is not set | 614 | # CONFIG_LEGACY_PTYS is not set |
576 | # CONFIG_IPMI_HANDLER is not set | 615 | # CONFIG_IPMI_HANDLER is not set |
577 | # CONFIG_HW_RANDOM is not set | 616 | # CONFIG_HW_RANDOM is not set |
578 | # CONFIG_RTC is not set | ||
579 | # CONFIG_GEN_RTC is not set | ||
580 | # CONFIG_R3964 is not set | 617 | # CONFIG_R3964 is not set |
581 | # CONFIG_RAW_DRIVER is not set | 618 | # CONFIG_RAW_DRIVER is not set |
582 | # CONFIG_TCG_TPM is not set | 619 | # CONFIG_TCG_TPM is not set |
583 | CONFIG_I2C=m | 620 | CONFIG_I2C=m |
584 | CONFIG_I2C_BOARDINFO=y | 621 | CONFIG_I2C_BOARDINFO=y |
585 | CONFIG_I2C_CHARDEV=m | 622 | CONFIG_I2C_CHARDEV=m |
586 | |||
587 | # | ||
588 | # I2C Algorithms | ||
589 | # | ||
590 | CONFIG_I2C_ALGOBIT=m | 623 | CONFIG_I2C_ALGOBIT=m |
591 | # CONFIG_I2C_ALGOPCF is not set | ||
592 | # CONFIG_I2C_ALGOPCA is not set | ||
593 | 624 | ||
594 | # | 625 | # |
595 | # I2C Hardware Bus support | 626 | # I2C Hardware Bus support |
@@ -600,27 +631,23 @@ CONFIG_I2C_GPIO=m | |||
600 | # CONFIG_I2C_SIMTEC is not set | 631 | # CONFIG_I2C_SIMTEC is not set |
601 | # CONFIG_I2C_TAOS_EVM is not set | 632 | # CONFIG_I2C_TAOS_EVM is not set |
602 | # CONFIG_I2C_STUB is not set | 633 | # CONFIG_I2C_STUB is not set |
634 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
603 | 635 | ||
604 | # | 636 | # |
605 | # Miscellaneous I2C Chip support | 637 | # Miscellaneous I2C Chip support |
606 | # | 638 | # |
607 | # CONFIG_SENSORS_DS1337 is not set | ||
608 | # CONFIG_SENSORS_DS1374 is not set | ||
609 | # CONFIG_DS1682 is not set | 639 | # CONFIG_DS1682 is not set |
610 | # CONFIG_SENSORS_EEPROM is not set | 640 | # CONFIG_SENSORS_EEPROM is not set |
611 | # CONFIG_SENSORS_PCF8574 is not set | 641 | # CONFIG_SENSORS_PCF8574 is not set |
612 | # CONFIG_SENSORS_PCA9539 is not set | 642 | # CONFIG_PCF8575 is not set |
613 | # CONFIG_SENSORS_PCF8591 is not set | 643 | # CONFIG_SENSORS_PCF8591 is not set |
644 | # CONFIG_TPS65010 is not set | ||
614 | # CONFIG_SENSORS_MAX6875 is not set | 645 | # CONFIG_SENSORS_MAX6875 is not set |
615 | # CONFIG_SENSORS_TSL2550 is not set | 646 | # CONFIG_SENSORS_TSL2550 is not set |
616 | # CONFIG_I2C_DEBUG_CORE is not set | 647 | # CONFIG_I2C_DEBUG_CORE is not set |
617 | # CONFIG_I2C_DEBUG_ALGO is not set | 648 | # CONFIG_I2C_DEBUG_ALGO is not set |
618 | # CONFIG_I2C_DEBUG_BUS is not set | 649 | # CONFIG_I2C_DEBUG_BUS is not set |
619 | # CONFIG_I2C_DEBUG_CHIP is not set | 650 | # CONFIG_I2C_DEBUG_CHIP is not set |
620 | |||
621 | # | ||
622 | # SPI support | ||
623 | # | ||
624 | CONFIG_SPI=y | 651 | CONFIG_SPI=y |
625 | # CONFIG_SPI_DEBUG is not set | 652 | # CONFIG_SPI_DEBUG is not set |
626 | CONFIG_SPI_MASTER=y | 653 | CONFIG_SPI_MASTER=y |
@@ -637,9 +664,27 @@ CONFIG_SPI_ATMEL=y | |||
637 | # CONFIG_SPI_AT25 is not set | 664 | # CONFIG_SPI_AT25 is not set |
638 | CONFIG_SPI_SPIDEV=m | 665 | CONFIG_SPI_SPIDEV=m |
639 | # CONFIG_SPI_TLE62X0 is not set | 666 | # CONFIG_SPI_TLE62X0 is not set |
667 | CONFIG_HAVE_GPIO_LIB=y | ||
668 | |||
669 | # | ||
670 | # GPIO Support | ||
671 | # | ||
672 | # CONFIG_DEBUG_GPIO is not set | ||
673 | |||
674 | # | ||
675 | # I2C GPIO expanders: | ||
676 | # | ||
677 | # CONFIG_GPIO_PCA953X is not set | ||
678 | # CONFIG_GPIO_PCF857X is not set | ||
679 | |||
680 | # | ||
681 | # SPI GPIO expanders: | ||
682 | # | ||
683 | # CONFIG_GPIO_MCP23S08 is not set | ||
640 | # CONFIG_W1 is not set | 684 | # CONFIG_W1 is not set |
641 | # CONFIG_POWER_SUPPLY is not set | 685 | # CONFIG_POWER_SUPPLY is not set |
642 | # CONFIG_HWMON is not set | 686 | # CONFIG_HWMON is not set |
687 | # CONFIG_THERMAL is not set | ||
643 | CONFIG_WATCHDOG=y | 688 | CONFIG_WATCHDOG=y |
644 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 689 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
645 | 690 | ||
@@ -659,12 +704,22 @@ CONFIG_SSB_POSSIBLE=y | |||
659 | # Multifunction device drivers | 704 | # Multifunction device drivers |
660 | # | 705 | # |
661 | # CONFIG_MFD_SM501 is not set | 706 | # CONFIG_MFD_SM501 is not set |
707 | # CONFIG_HTC_PASIC3 is not set | ||
662 | 708 | ||
663 | # | 709 | # |
664 | # Multimedia devices | 710 | # Multimedia devices |
665 | # | 711 | # |
712 | |||
713 | # | ||
714 | # Multimedia core support | ||
715 | # | ||
666 | # CONFIG_VIDEO_DEV is not set | 716 | # CONFIG_VIDEO_DEV is not set |
667 | # CONFIG_DVB_CORE is not set | 717 | # CONFIG_DVB_CORE is not set |
718 | # CONFIG_VIDEO_MEDIA is not set | ||
719 | |||
720 | # | ||
721 | # Multimedia drivers | ||
722 | # | ||
668 | # CONFIG_DAB is not set | 723 | # CONFIG_DAB is not set |
669 | 724 | ||
670 | # | 725 | # |
@@ -682,8 +737,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
682 | # CONFIG_FB_SYS_FILLRECT is not set | 737 | # CONFIG_FB_SYS_FILLRECT is not set |
683 | # CONFIG_FB_SYS_COPYAREA is not set | 738 | # CONFIG_FB_SYS_COPYAREA is not set |
684 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 739 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
740 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
685 | # CONFIG_FB_SYS_FOPS is not set | 741 | # CONFIG_FB_SYS_FOPS is not set |
686 | CONFIG_FB_DEFERRED_IO=y | ||
687 | # CONFIG_FB_SVGALIB is not set | 742 | # CONFIG_FB_SVGALIB is not set |
688 | # CONFIG_FB_MACMODES is not set | 743 | # CONFIG_FB_MACMODES is not set |
689 | # CONFIG_FB_BACKLIGHT is not set | 744 | # CONFIG_FB_BACKLIGHT is not set |
@@ -749,7 +804,11 @@ CONFIG_SND_AT73C213_TARGET_BITRATE=48000 | |||
749 | # CONFIG_SND_SOC is not set | 804 | # CONFIG_SND_SOC is not set |
750 | 805 | ||
751 | # | 806 | # |
752 | # SoC Audio support for SuperH | 807 | # ALSA SoC audio for Freescale SOCs |
808 | # | ||
809 | |||
810 | # | ||
811 | # SoC Audio for the Texas Instruments OMAP | ||
753 | # | 812 | # |
754 | 813 | ||
755 | # | 814 | # |
@@ -761,14 +820,12 @@ CONFIG_USB_SUPPORT=y | |||
761 | # CONFIG_USB_ARCH_HAS_HCD is not set | 820 | # CONFIG_USB_ARCH_HAS_HCD is not set |
762 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 821 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
763 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 822 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
823 | # CONFIG_USB_OTG_WHITELIST is not set | ||
824 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
764 | 825 | ||
765 | # | 826 | # |
766 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 827 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
767 | # | 828 | # |
768 | |||
769 | # | ||
770 | # USB Gadget Support | ||
771 | # | ||
772 | CONFIG_USB_GADGET=y | 829 | CONFIG_USB_GADGET=y |
773 | # CONFIG_USB_GADGET_DEBUG is not set | 830 | # CONFIG_USB_GADGET_DEBUG is not set |
774 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 831 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
@@ -781,6 +838,7 @@ CONFIG_USB_ATMEL_USBA=y | |||
781 | # CONFIG_USB_GADGET_NET2280 is not set | 838 | # CONFIG_USB_GADGET_NET2280 is not set |
782 | # CONFIG_USB_GADGET_PXA2XX is not set | 839 | # CONFIG_USB_GADGET_PXA2XX is not set |
783 | # CONFIG_USB_GADGET_M66592 is not set | 840 | # CONFIG_USB_GADGET_M66592 is not set |
841 | # CONFIG_USB_GADGET_PXA27X is not set | ||
784 | # CONFIG_USB_GADGET_GOKU is not set | 842 | # CONFIG_USB_GADGET_GOKU is not set |
785 | # CONFIG_USB_GADGET_LH7A40X is not set | 843 | # CONFIG_USB_GADGET_LH7A40X is not set |
786 | # CONFIG_USB_GADGET_OMAP is not set | 844 | # CONFIG_USB_GADGET_OMAP is not set |
@@ -796,6 +854,7 @@ CONFIG_USB_FILE_STORAGE=m | |||
796 | # CONFIG_USB_FILE_STORAGE_TEST is not set | 854 | # CONFIG_USB_FILE_STORAGE_TEST is not set |
797 | CONFIG_USB_G_SERIAL=m | 855 | CONFIG_USB_G_SERIAL=m |
798 | # CONFIG_USB_MIDI_GADGET is not set | 856 | # CONFIG_USB_MIDI_GADGET is not set |
857 | # CONFIG_USB_G_PRINTER is not set | ||
799 | CONFIG_MMC=m | 858 | CONFIG_MMC=m |
800 | # CONFIG_MMC_DEBUG is not set | 859 | # CONFIG_MMC_DEBUG is not set |
801 | # CONFIG_MMC_UNSAFE_RESUME is not set | 860 | # CONFIG_MMC_UNSAFE_RESUME is not set |
@@ -806,17 +865,20 @@ CONFIG_MMC=m | |||
806 | CONFIG_MMC_BLOCK=m | 865 | CONFIG_MMC_BLOCK=m |
807 | CONFIG_MMC_BLOCK_BOUNCE=y | 866 | CONFIG_MMC_BLOCK_BOUNCE=y |
808 | # CONFIG_SDIO_UART is not set | 867 | # CONFIG_SDIO_UART is not set |
868 | CONFIG_MMC_TEST=m | ||
809 | 869 | ||
810 | # | 870 | # |
811 | # MMC/SD Host Controller Drivers | 871 | # MMC/SD Host Controller Drivers |
812 | # | 872 | # |
813 | CONFIG_MMC_SPI=m | 873 | CONFIG_MMC_SPI=m |
874 | # CONFIG_MEMSTICK is not set | ||
814 | CONFIG_NEW_LEDS=y | 875 | CONFIG_NEW_LEDS=y |
815 | CONFIG_LEDS_CLASS=m | 876 | CONFIG_LEDS_CLASS=m |
816 | 877 | ||
817 | # | 878 | # |
818 | # LED drivers | 879 | # LED drivers |
819 | # | 880 | # |
881 | CONFIG_LEDS_ATMEL_PWM=m | ||
820 | CONFIG_LEDS_GPIO=m | 882 | CONFIG_LEDS_GPIO=m |
821 | 883 | ||
822 | # | 884 | # |
@@ -825,6 +887,8 @@ CONFIG_LEDS_GPIO=m | |||
825 | CONFIG_LEDS_TRIGGERS=y | 887 | CONFIG_LEDS_TRIGGERS=y |
826 | CONFIG_LEDS_TRIGGER_TIMER=m | 888 | CONFIG_LEDS_TRIGGER_TIMER=m |
827 | CONFIG_LEDS_TRIGGER_HEARTBEAT=m | 889 | CONFIG_LEDS_TRIGGER_HEARTBEAT=m |
890 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=m | ||
891 | # CONFIG_ACCESSIBILITY is not set | ||
828 | CONFIG_RTC_LIB=y | 892 | CONFIG_RTC_LIB=y |
829 | CONFIG_RTC_CLASS=y | 893 | CONFIG_RTC_CLASS=y |
830 | CONFIG_RTC_HCTOSYS=y | 894 | CONFIG_RTC_HCTOSYS=y |
@@ -853,19 +917,22 @@ CONFIG_RTC_INTF_DEV=y | |||
853 | # CONFIG_RTC_DRV_PCF8563 is not set | 917 | # CONFIG_RTC_DRV_PCF8563 is not set |
854 | # CONFIG_RTC_DRV_PCF8583 is not set | 918 | # CONFIG_RTC_DRV_PCF8583 is not set |
855 | # CONFIG_RTC_DRV_M41T80 is not set | 919 | # CONFIG_RTC_DRV_M41T80 is not set |
920 | # CONFIG_RTC_DRV_S35390A is not set | ||
856 | 921 | ||
857 | # | 922 | # |
858 | # SPI RTC drivers | 923 | # SPI RTC drivers |
859 | # | 924 | # |
860 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
861 | # CONFIG_RTC_DRV_MAX6902 is not set | 925 | # CONFIG_RTC_DRV_MAX6902 is not set |
926 | # CONFIG_RTC_DRV_R9701 is not set | ||
927 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
862 | 928 | ||
863 | # | 929 | # |
864 | # Platform RTC drivers | 930 | # Platform RTC drivers |
865 | # | 931 | # |
932 | # CONFIG_RTC_DRV_DS1511 is not set | ||
866 | # CONFIG_RTC_DRV_DS1553 is not set | 933 | # CONFIG_RTC_DRV_DS1553 is not set |
867 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
868 | # CONFIG_RTC_DRV_DS1742 is not set | 934 | # CONFIG_RTC_DRV_DS1742 is not set |
935 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
869 | # CONFIG_RTC_DRV_M48T86 is not set | 936 | # CONFIG_RTC_DRV_M48T86 is not set |
870 | # CONFIG_RTC_DRV_M48T59 is not set | 937 | # CONFIG_RTC_DRV_M48T59 is not set |
871 | # CONFIG_RTC_DRV_V3020 is not set | 938 | # CONFIG_RTC_DRV_V3020 is not set |
@@ -874,10 +941,6 @@ CONFIG_RTC_INTF_DEV=y | |||
874 | # on-CPU RTC drivers | 941 | # on-CPU RTC drivers |
875 | # | 942 | # |
876 | CONFIG_RTC_DRV_AT32AP700X=y | 943 | CONFIG_RTC_DRV_AT32AP700X=y |
877 | |||
878 | # | ||
879 | # Userspace I/O | ||
880 | # | ||
881 | # CONFIG_UIO is not set | 944 | # CONFIG_UIO is not set |
882 | 945 | ||
883 | # | 946 | # |
@@ -895,14 +958,11 @@ CONFIG_JBD=m | |||
895 | # CONFIG_JFS_FS is not set | 958 | # CONFIG_JFS_FS is not set |
896 | # CONFIG_FS_POSIX_ACL is not set | 959 | # CONFIG_FS_POSIX_ACL is not set |
897 | # CONFIG_XFS_FS is not set | 960 | # CONFIG_XFS_FS is not set |
898 | # CONFIG_GFS2_FS is not set | ||
899 | # CONFIG_OCFS2_FS is not set | 961 | # CONFIG_OCFS2_FS is not set |
900 | CONFIG_MINIX_FS=m | 962 | # CONFIG_DNOTIFY is not set |
901 | # CONFIG_ROMFS_FS is not set | ||
902 | CONFIG_INOTIFY=y | 963 | CONFIG_INOTIFY=y |
903 | CONFIG_INOTIFY_USER=y | 964 | CONFIG_INOTIFY_USER=y |
904 | # CONFIG_QUOTA is not set | 965 | # CONFIG_QUOTA is not set |
905 | # CONFIG_DNOTIFY is not set | ||
906 | # CONFIG_AUTOFS_FS is not set | 966 | # CONFIG_AUTOFS_FS is not set |
907 | # CONFIG_AUTOFS4_FS is not set | 967 | # CONFIG_AUTOFS4_FS is not set |
908 | CONFIG_FUSE_FS=m | 968 | CONFIG_FUSE_FS=m |
@@ -957,8 +1017,10 @@ CONFIG_JFFS2_RTIME=y | |||
957 | # CONFIG_JFFS2_RUBIN is not set | 1017 | # CONFIG_JFFS2_RUBIN is not set |
958 | # CONFIG_CRAMFS is not set | 1018 | # CONFIG_CRAMFS is not set |
959 | # CONFIG_VXFS_FS is not set | 1019 | # CONFIG_VXFS_FS is not set |
1020 | CONFIG_MINIX_FS=m | ||
960 | # CONFIG_HPFS_FS is not set | 1021 | # CONFIG_HPFS_FS is not set |
961 | # CONFIG_QNX4FS_FS is not set | 1022 | # CONFIG_QNX4FS_FS is not set |
1023 | # CONFIG_ROMFS_FS is not set | ||
962 | # CONFIG_SYSV_FS is not set | 1024 | # CONFIG_SYSV_FS is not set |
963 | # CONFIG_UFS_FS is not set | 1025 | # CONFIG_UFS_FS is not set |
964 | CONFIG_NETWORK_FILESYSTEMS=y | 1026 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -966,7 +1028,6 @@ CONFIG_NFS_FS=y | |||
966 | CONFIG_NFS_V3=y | 1028 | CONFIG_NFS_V3=y |
967 | # CONFIG_NFS_V3_ACL is not set | 1029 | # CONFIG_NFS_V3_ACL is not set |
968 | # CONFIG_NFS_V4 is not set | 1030 | # CONFIG_NFS_V4 is not set |
969 | # CONFIG_NFS_DIRECTIO is not set | ||
970 | # CONFIG_NFSD is not set | 1031 | # CONFIG_NFSD is not set |
971 | CONFIG_ROOT_NFS=y | 1032 | CONFIG_ROOT_NFS=y |
972 | CONFIG_LOCKD=y | 1033 | CONFIG_LOCKD=y |
@@ -1028,11 +1089,6 @@ CONFIG_NLS_ISO8859_1=m | |||
1028 | # CONFIG_NLS_KOI8_U is not set | 1089 | # CONFIG_NLS_KOI8_U is not set |
1029 | CONFIG_NLS_UTF8=m | 1090 | CONFIG_NLS_UTF8=m |
1030 | # CONFIG_DLM is not set | 1091 | # CONFIG_DLM is not set |
1031 | CONFIG_INSTRUMENTATION=y | ||
1032 | CONFIG_PROFILING=y | ||
1033 | CONFIG_OPROFILE=m | ||
1034 | CONFIG_KPROBES=y | ||
1035 | # CONFIG_MARKERS is not set | ||
1036 | 1092 | ||
1037 | # | 1093 | # |
1038 | # Kernel hacking | 1094 | # Kernel hacking |
@@ -1040,6 +1096,7 @@ CONFIG_KPROBES=y | |||
1040 | # CONFIG_PRINTK_TIME is not set | 1096 | # CONFIG_PRINTK_TIME is not set |
1041 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1097 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1042 | CONFIG_ENABLE_MUST_CHECK=y | 1098 | CONFIG_ENABLE_MUST_CHECK=y |
1099 | CONFIG_FRAME_WARN=1024 | ||
1043 | CONFIG_MAGIC_SYSRQ=y | 1100 | CONFIG_MAGIC_SYSRQ=y |
1044 | # CONFIG_UNUSED_SYMBOLS is not set | 1101 | # CONFIG_UNUSED_SYMBOLS is not set |
1045 | CONFIG_DEBUG_FS=y | 1102 | CONFIG_DEBUG_FS=y |
@@ -1050,7 +1107,9 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1050 | CONFIG_SCHED_DEBUG=y | 1107 | CONFIG_SCHED_DEBUG=y |
1051 | # CONFIG_SCHEDSTATS is not set | 1108 | # CONFIG_SCHEDSTATS is not set |
1052 | # CONFIG_TIMER_STATS is not set | 1109 | # CONFIG_TIMER_STATS is not set |
1110 | # CONFIG_DEBUG_OBJECTS is not set | ||
1053 | # CONFIG_SLUB_DEBUG_ON is not set | 1111 | # CONFIG_SLUB_DEBUG_ON is not set |
1112 | # CONFIG_SLUB_STATS is not set | ||
1054 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1113 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1055 | # CONFIG_RT_MUTEX_TESTER is not set | 1114 | # CONFIG_RT_MUTEX_TESTER is not set |
1056 | # CONFIG_DEBUG_SPINLOCK is not set | 1115 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1064,12 +1123,14 @@ CONFIG_SCHED_DEBUG=y | |||
1064 | CONFIG_DEBUG_BUGVERBOSE=y | 1123 | CONFIG_DEBUG_BUGVERBOSE=y |
1065 | # CONFIG_DEBUG_INFO is not set | 1124 | # CONFIG_DEBUG_INFO is not set |
1066 | # CONFIG_DEBUG_VM is not set | 1125 | # CONFIG_DEBUG_VM is not set |
1126 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1067 | # CONFIG_DEBUG_LIST is not set | 1127 | # CONFIG_DEBUG_LIST is not set |
1068 | # CONFIG_DEBUG_SG is not set | 1128 | # CONFIG_DEBUG_SG is not set |
1069 | CONFIG_FRAME_POINTER=y | 1129 | CONFIG_FRAME_POINTER=y |
1070 | CONFIG_FORCED_INLINING=y | ||
1071 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1130 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1072 | # CONFIG_RCU_TORTURE_TEST is not set | 1131 | # CONFIG_RCU_TORTURE_TEST is not set |
1132 | # CONFIG_KPROBES_SANITY_TEST is not set | ||
1133 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1073 | # CONFIG_LKDTM is not set | 1134 | # CONFIG_LKDTM is not set |
1074 | # CONFIG_FAULT_INJECTION is not set | 1135 | # CONFIG_FAULT_INJECTION is not set |
1075 | # CONFIG_SAMPLES is not set | 1136 | # CONFIG_SAMPLES is not set |
@@ -1081,52 +1142,90 @@ CONFIG_FORCED_INLINING=y | |||
1081 | # CONFIG_SECURITY is not set | 1142 | # CONFIG_SECURITY is not set |
1082 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1143 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1083 | CONFIG_CRYPTO=y | 1144 | CONFIG_CRYPTO=y |
1145 | |||
1146 | # | ||
1147 | # Crypto core or helper | ||
1148 | # | ||
1084 | CONFIG_CRYPTO_ALGAPI=m | 1149 | CONFIG_CRYPTO_ALGAPI=m |
1150 | CONFIG_CRYPTO_AEAD=m | ||
1085 | CONFIG_CRYPTO_BLKCIPHER=m | 1151 | CONFIG_CRYPTO_BLKCIPHER=m |
1086 | CONFIG_CRYPTO_HASH=m | 1152 | CONFIG_CRYPTO_HASH=m |
1087 | CONFIG_CRYPTO_MANAGER=m | 1153 | CONFIG_CRYPTO_MANAGER=m |
1154 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1155 | # CONFIG_CRYPTO_NULL is not set | ||
1156 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1157 | CONFIG_CRYPTO_AUTHENC=m | ||
1158 | # CONFIG_CRYPTO_TEST is not set | ||
1159 | |||
1160 | # | ||
1161 | # Authenticated Encryption with Associated Data | ||
1162 | # | ||
1163 | # CONFIG_CRYPTO_CCM is not set | ||
1164 | # CONFIG_CRYPTO_GCM is not set | ||
1165 | # CONFIG_CRYPTO_SEQIV is not set | ||
1166 | |||
1167 | # | ||
1168 | # Block modes | ||
1169 | # | ||
1170 | CONFIG_CRYPTO_CBC=m | ||
1171 | # CONFIG_CRYPTO_CTR is not set | ||
1172 | # CONFIG_CRYPTO_CTS is not set | ||
1173 | # CONFIG_CRYPTO_ECB is not set | ||
1174 | # CONFIG_CRYPTO_LRW is not set | ||
1175 | # CONFIG_CRYPTO_PCBC is not set | ||
1176 | # CONFIG_CRYPTO_XTS is not set | ||
1177 | |||
1178 | # | ||
1179 | # Hash modes | ||
1180 | # | ||
1088 | CONFIG_CRYPTO_HMAC=m | 1181 | CONFIG_CRYPTO_HMAC=m |
1089 | # CONFIG_CRYPTO_XCBC is not set | 1182 | # CONFIG_CRYPTO_XCBC is not set |
1090 | # CONFIG_CRYPTO_NULL is not set | 1183 | |
1184 | # | ||
1185 | # Digest | ||
1186 | # | ||
1187 | # CONFIG_CRYPTO_CRC32C is not set | ||
1091 | # CONFIG_CRYPTO_MD4 is not set | 1188 | # CONFIG_CRYPTO_MD4 is not set |
1092 | CONFIG_CRYPTO_MD5=m | 1189 | CONFIG_CRYPTO_MD5=m |
1190 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1093 | CONFIG_CRYPTO_SHA1=m | 1191 | CONFIG_CRYPTO_SHA1=m |
1094 | # CONFIG_CRYPTO_SHA256 is not set | 1192 | # CONFIG_CRYPTO_SHA256 is not set |
1095 | # CONFIG_CRYPTO_SHA512 is not set | 1193 | # CONFIG_CRYPTO_SHA512 is not set |
1096 | # CONFIG_CRYPTO_WP512 is not set | ||
1097 | # CONFIG_CRYPTO_TGR192 is not set | 1194 | # CONFIG_CRYPTO_TGR192 is not set |
1098 | # CONFIG_CRYPTO_GF128MUL is not set | 1195 | # CONFIG_CRYPTO_WP512 is not set |
1099 | # CONFIG_CRYPTO_ECB is not set | 1196 | |
1100 | CONFIG_CRYPTO_CBC=m | 1197 | # |
1101 | # CONFIG_CRYPTO_PCBC is not set | 1198 | # Ciphers |
1102 | # CONFIG_CRYPTO_LRW is not set | 1199 | # |
1103 | # CONFIG_CRYPTO_XTS is not set | ||
1104 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1105 | CONFIG_CRYPTO_DES=m | ||
1106 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1107 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1108 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1109 | # CONFIG_CRYPTO_SERPENT is not set | ||
1110 | # CONFIG_CRYPTO_AES is not set | 1200 | # CONFIG_CRYPTO_AES is not set |
1201 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1202 | # CONFIG_CRYPTO_ARC4 is not set | ||
1203 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1204 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1111 | # CONFIG_CRYPTO_CAST5 is not set | 1205 | # CONFIG_CRYPTO_CAST5 is not set |
1112 | # CONFIG_CRYPTO_CAST6 is not set | 1206 | # CONFIG_CRYPTO_CAST6 is not set |
1113 | # CONFIG_CRYPTO_TEA is not set | 1207 | CONFIG_CRYPTO_DES=m |
1114 | # CONFIG_CRYPTO_ARC4 is not set | 1208 | # CONFIG_CRYPTO_FCRYPT is not set |
1115 | # CONFIG_CRYPTO_KHAZAD is not set | 1209 | # CONFIG_CRYPTO_KHAZAD is not set |
1116 | # CONFIG_CRYPTO_ANUBIS is not set | 1210 | # CONFIG_CRYPTO_SALSA20 is not set |
1117 | # CONFIG_CRYPTO_SEED is not set | 1211 | # CONFIG_CRYPTO_SEED is not set |
1212 | # CONFIG_CRYPTO_SERPENT is not set | ||
1213 | # CONFIG_CRYPTO_TEA is not set | ||
1214 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1215 | |||
1216 | # | ||
1217 | # Compression | ||
1218 | # | ||
1118 | CONFIG_CRYPTO_DEFLATE=m | 1219 | CONFIG_CRYPTO_DEFLATE=m |
1119 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1220 | # CONFIG_CRYPTO_LZO is not set |
1120 | # CONFIG_CRYPTO_CRC32C is not set | ||
1121 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1122 | # CONFIG_CRYPTO_TEST is not set | ||
1123 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1124 | # CONFIG_CRYPTO_HW is not set | 1221 | # CONFIG_CRYPTO_HW is not set |
1125 | 1222 | ||
1126 | # | 1223 | # |
1127 | # Library routines | 1224 | # Library routines |
1128 | # | 1225 | # |
1129 | CONFIG_BITREVERSE=y | 1226 | CONFIG_BITREVERSE=y |
1227 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1228 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1130 | CONFIG_CRC_CCITT=m | 1229 | CONFIG_CRC_CCITT=m |
1131 | # CONFIG_CRC16 is not set | 1230 | # CONFIG_CRC16 is not set |
1132 | CONFIG_CRC_ITU_T=m | 1231 | CONFIG_CRC_ITU_T=m |
diff --git a/arch/avr32/configs/atstk1003_defconfig b/arch/avr32/configs/atstk1003_defconfig index 45e23e03f074..5a4ae6b5d28f 100644 --- a/arch/avr32/configs/atstk1003_defconfig +++ b/arch/avr32/configs/atstk1003_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc7 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Wed Jan 9 22:54:34 2008 | 4 | # Mon May 26 13:33:05 2008 |
5 | # | 5 | # |
6 | CONFIG_AVR32=y | 6 | CONFIG_AVR32=y |
7 | CONFIG_GENERIC_GPIO=y | 7 | CONFIG_GENERIC_GPIO=y |
@@ -13,10 +13,10 @@ CONFIG_HARDIRQS_SW_RESEND=y | |||
13 | CONFIG_GENERIC_IRQ_PROBE=y | 13 | CONFIG_GENERIC_IRQ_PROBE=y |
14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
15 | CONFIG_GENERIC_TIME=y | 15 | CONFIG_GENERIC_TIME=y |
16 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 17 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
17 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
18 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
19 | CONFIG_ARCH_SUPPORTS_OPROFILE=y | ||
20 | CONFIG_GENERIC_HWEIGHT=y | 20 | CONFIG_GENERIC_HWEIGHT=y |
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 21 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
22 | CONFIG_GENERIC_BUG=y | 22 | CONFIG_GENERIC_BUG=y |
@@ -39,17 +39,15 @@ CONFIG_BSD_PROCESS_ACCT_V3=y | |||
39 | CONFIG_TASKSTATS=y | 39 | CONFIG_TASKSTATS=y |
40 | CONFIG_TASK_DELAY_ACCT=y | 40 | CONFIG_TASK_DELAY_ACCT=y |
41 | # CONFIG_TASK_XACCT is not set | 41 | # CONFIG_TASK_XACCT is not set |
42 | # CONFIG_USER_NS is not set | ||
43 | # CONFIG_PID_NS is not set | ||
44 | CONFIG_AUDIT=y | 42 | CONFIG_AUDIT=y |
45 | # CONFIG_IKCONFIG is not set | 43 | # CONFIG_IKCONFIG is not set |
46 | CONFIG_LOG_BUF_SHIFT=14 | 44 | CONFIG_LOG_BUF_SHIFT=14 |
47 | # CONFIG_CGROUPS is not set | 45 | # CONFIG_CGROUPS is not set |
48 | CONFIG_FAIR_GROUP_SCHED=y | 46 | # CONFIG_GROUP_SCHED is not set |
49 | CONFIG_FAIR_USER_SCHED=y | ||
50 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
51 | CONFIG_SYSFS_DEPRECATED=y | 47 | CONFIG_SYSFS_DEPRECATED=y |
48 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
52 | CONFIG_RELAY=y | 49 | CONFIG_RELAY=y |
50 | # CONFIG_NAMESPACES is not set | ||
53 | CONFIG_BLK_DEV_INITRD=y | 51 | CONFIG_BLK_DEV_INITRD=y |
54 | CONFIG_INITRAMFS_SOURCE="" | 52 | CONFIG_INITRAMFS_SOURCE="" |
55 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 53 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -63,11 +61,13 @@ CONFIG_HOTPLUG=y | |||
63 | CONFIG_PRINTK=y | 61 | CONFIG_PRINTK=y |
64 | CONFIG_BUG=y | 62 | CONFIG_BUG=y |
65 | CONFIG_ELF_CORE=y | 63 | CONFIG_ELF_CORE=y |
64 | # CONFIG_COMPAT_BRK is not set | ||
66 | # CONFIG_BASE_FULL is not set | 65 | # CONFIG_BASE_FULL is not set |
67 | CONFIG_FUTEX=y | 66 | CONFIG_FUTEX=y |
68 | CONFIG_ANON_INODES=y | 67 | CONFIG_ANON_INODES=y |
69 | CONFIG_EPOLL=y | 68 | CONFIG_EPOLL=y |
70 | CONFIG_SIGNALFD=y | 69 | CONFIG_SIGNALFD=y |
70 | CONFIG_TIMERFD=y | ||
71 | CONFIG_EVENTFD=y | 71 | CONFIG_EVENTFD=y |
72 | CONFIG_SHMEM=y | 72 | CONFIG_SHMEM=y |
73 | CONFIG_VM_EVENT_COUNTERS=y | 73 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -75,11 +75,20 @@ CONFIG_VM_EVENT_COUNTERS=y | |||
75 | # CONFIG_SLAB is not set | 75 | # CONFIG_SLAB is not set |
76 | CONFIG_SLUB=y | 76 | CONFIG_SLUB=y |
77 | # CONFIG_SLOB is not set | 77 | # CONFIG_SLOB is not set |
78 | CONFIG_SLABINFO=y | 78 | CONFIG_PROFILING=y |
79 | # CONFIG_MARKERS is not set | ||
80 | CONFIG_OPROFILE=m | ||
81 | CONFIG_HAVE_OPROFILE=y | ||
82 | CONFIG_KPROBES=y | ||
83 | CONFIG_HAVE_KPROBES=y | ||
84 | # CONFIG_HAVE_KRETPROBES is not set | ||
85 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
86 | CONFIG_PROC_PAGE_MONITOR=y | ||
79 | CONFIG_RT_MUTEXES=y | 87 | CONFIG_RT_MUTEXES=y |
80 | # CONFIG_TINY_SHMEM is not set | 88 | # CONFIG_TINY_SHMEM is not set |
81 | CONFIG_BASE_SMALL=1 | 89 | CONFIG_BASE_SMALL=1 |
82 | CONFIG_MODULES=y | 90 | CONFIG_MODULES=y |
91 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
83 | CONFIG_MODULE_UNLOAD=y | 92 | CONFIG_MODULE_UNLOAD=y |
84 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 93 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
85 | # CONFIG_MODVERSIONS is not set | 94 | # CONFIG_MODVERSIONS is not set |
@@ -103,10 +112,15 @@ CONFIG_IOSCHED_CFQ=y | |||
103 | CONFIG_DEFAULT_CFQ=y | 112 | CONFIG_DEFAULT_CFQ=y |
104 | # CONFIG_DEFAULT_NOOP is not set | 113 | # CONFIG_DEFAULT_NOOP is not set |
105 | CONFIG_DEFAULT_IOSCHED="cfq" | 114 | CONFIG_DEFAULT_IOSCHED="cfq" |
115 | CONFIG_CLASSIC_RCU=y | ||
106 | 116 | ||
107 | # | 117 | # |
108 | # System Type and features | 118 | # System Type and features |
109 | # | 119 | # |
120 | CONFIG_TICK_ONESHOT=y | ||
121 | CONFIG_NO_HZ=y | ||
122 | CONFIG_HIGH_RES_TIMERS=y | ||
123 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
110 | CONFIG_SUBARCH_AVR32B=y | 124 | CONFIG_SUBARCH_AVR32B=y |
111 | CONFIG_MMU=y | 125 | CONFIG_MMU=y |
112 | CONFIG_PERFORMANCE_COUNTERS=y | 126 | CONFIG_PERFORMANCE_COUNTERS=y |
@@ -152,16 +166,19 @@ CONFIG_FLATMEM=y | |||
152 | CONFIG_FLAT_NODE_MEM_MAP=y | 166 | CONFIG_FLAT_NODE_MEM_MAP=y |
153 | # CONFIG_SPARSEMEM_STATIC is not set | 167 | # CONFIG_SPARSEMEM_STATIC is not set |
154 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 168 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
169 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
155 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 170 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
156 | # CONFIG_RESOURCES_64BIT is not set | 171 | # CONFIG_RESOURCES_64BIT is not set |
157 | CONFIG_ZONE_DMA_FLAG=0 | 172 | CONFIG_ZONE_DMA_FLAG=0 |
158 | CONFIG_VIRT_TO_BUS=y | 173 | CONFIG_VIRT_TO_BUS=y |
159 | # CONFIG_OWNERSHIP_TRACE is not set | 174 | # CONFIG_OWNERSHIP_TRACE is not set |
175 | CONFIG_NMI_DEBUGGING=y | ||
160 | # CONFIG_HZ_100 is not set | 176 | # CONFIG_HZ_100 is not set |
161 | CONFIG_HZ_250=y | 177 | CONFIG_HZ_250=y |
162 | # CONFIG_HZ_300 is not set | 178 | # CONFIG_HZ_300 is not set |
163 | # CONFIG_HZ_1000 is not set | 179 | # CONFIG_HZ_1000 is not set |
164 | CONFIG_HZ=250 | 180 | CONFIG_HZ=250 |
181 | # CONFIG_SCHED_HRTICK is not set | ||
165 | CONFIG_CMDLINE="" | 182 | CONFIG_CMDLINE="" |
166 | 183 | ||
167 | # | 184 | # |
@@ -175,9 +192,10 @@ CONFIG_CPU_FREQ=y | |||
175 | CONFIG_CPU_FREQ_TABLE=y | 192 | CONFIG_CPU_FREQ_TABLE=y |
176 | # CONFIG_CPU_FREQ_DEBUG is not set | 193 | # CONFIG_CPU_FREQ_DEBUG is not set |
177 | # CONFIG_CPU_FREQ_STAT is not set | 194 | # CONFIG_CPU_FREQ_STAT is not set |
178 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 195 | # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set |
196 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
179 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 197 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set |
180 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | 198 | CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y |
181 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | 199 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set |
182 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | 200 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y |
183 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | 201 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set |
@@ -234,8 +252,6 @@ CONFIG_TCP_CONG_CUBIC=y | |||
234 | CONFIG_DEFAULT_TCP_CONG="cubic" | 252 | CONFIG_DEFAULT_TCP_CONG="cubic" |
235 | # CONFIG_TCP_MD5SIG is not set | 253 | # CONFIG_TCP_MD5SIG is not set |
236 | # CONFIG_IPV6 is not set | 254 | # CONFIG_IPV6 is not set |
237 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
238 | # CONFIG_INET6_TUNNEL is not set | ||
239 | # CONFIG_NETWORK_SECMARK is not set | 255 | # CONFIG_NETWORK_SECMARK is not set |
240 | # CONFIG_NETFILTER is not set | 256 | # CONFIG_NETFILTER is not set |
241 | # CONFIG_IP_DCCP is not set | 257 | # CONFIG_IP_DCCP is not set |
@@ -260,6 +276,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
260 | # CONFIG_NET_PKTGEN is not set | 276 | # CONFIG_NET_PKTGEN is not set |
261 | # CONFIG_NET_TCPPROBE is not set | 277 | # CONFIG_NET_TCPPROBE is not set |
262 | # CONFIG_HAMRADIO is not set | 278 | # CONFIG_HAMRADIO is not set |
279 | # CONFIG_CAN is not set | ||
263 | # CONFIG_IRDA is not set | 280 | # CONFIG_IRDA is not set |
264 | # CONFIG_BT is not set | 281 | # CONFIG_BT is not set |
265 | # CONFIG_AF_RXRPC is not set | 282 | # CONFIG_AF_RXRPC is not set |
@@ -295,6 +312,7 @@ CONFIG_MTD=y | |||
295 | CONFIG_MTD_PARTITIONS=y | 312 | CONFIG_MTD_PARTITIONS=y |
296 | # CONFIG_MTD_REDBOOT_PARTS is not set | 313 | # CONFIG_MTD_REDBOOT_PARTS is not set |
297 | CONFIG_MTD_CMDLINE_PARTS=y | 314 | CONFIG_MTD_CMDLINE_PARTS=y |
315 | # CONFIG_MTD_AR7_PARTS is not set | ||
298 | 316 | ||
299 | # | 317 | # |
300 | # User Modules And Translation Layers | 318 | # User Modules And Translation Layers |
@@ -349,6 +367,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
349 | # | 367 | # |
350 | CONFIG_MTD_DATAFLASH=m | 368 | CONFIG_MTD_DATAFLASH=m |
351 | CONFIG_MTD_M25P80=m | 369 | CONFIG_MTD_M25P80=m |
370 | CONFIG_M25PXX_USE_FAST_READ=y | ||
352 | # CONFIG_MTD_SLRAM is not set | 371 | # CONFIG_MTD_SLRAM is not set |
353 | # CONFIG_MTD_PHRAM is not set | 372 | # CONFIG_MTD_PHRAM is not set |
354 | # CONFIG_MTD_MTDRAM is not set | 373 | # CONFIG_MTD_MTDRAM is not set |
@@ -376,13 +395,18 @@ CONFIG_BLK_DEV_NBD=m | |||
376 | CONFIG_BLK_DEV_RAM=m | 395 | CONFIG_BLK_DEV_RAM=m |
377 | CONFIG_BLK_DEV_RAM_COUNT=16 | 396 | CONFIG_BLK_DEV_RAM_COUNT=16 |
378 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 397 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
379 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 398 | # CONFIG_BLK_DEV_XIP is not set |
380 | # CONFIG_CDROM_PKTCDVD is not set | 399 | # CONFIG_CDROM_PKTCDVD is not set |
381 | # CONFIG_ATA_OVER_ETH is not set | 400 | # CONFIG_ATA_OVER_ETH is not set |
382 | CONFIG_MISC_DEVICES=y | 401 | CONFIG_MISC_DEVICES=y |
402 | CONFIG_ATMEL_PWM=m | ||
403 | CONFIG_ATMEL_TCLIB=y | ||
404 | CONFIG_ATMEL_TCB_CLKSRC=y | ||
405 | CONFIG_ATMEL_TCB_CLKSRC_BLOCK=0 | ||
383 | # CONFIG_EEPROM_93CX6 is not set | 406 | # CONFIG_EEPROM_93CX6 is not set |
384 | CONFIG_ATMEL_SSC=m | 407 | CONFIG_ATMEL_SSC=m |
385 | # CONFIG_IDE is not set | 408 | # CONFIG_ENCLOSURE_SERVICES is not set |
409 | # CONFIG_HAVE_IDE is not set | ||
386 | 410 | ||
387 | # | 411 | # |
388 | # SCSI device support | 412 | # SCSI device support |
@@ -427,6 +451,9 @@ CONFIG_SCSI_LOWLEVEL=y | |||
427 | # CONFIG_SCSI_DEBUG is not set | 451 | # CONFIG_SCSI_DEBUG is not set |
428 | CONFIG_ATA=m | 452 | CONFIG_ATA=m |
429 | # CONFIG_ATA_NONSTANDARD is not set | 453 | # CONFIG_ATA_NONSTANDARD is not set |
454 | # CONFIG_SATA_PMP is not set | ||
455 | CONFIG_ATA_SFF=y | ||
456 | # CONFIG_SATA_MV is not set | ||
430 | CONFIG_PATA_AT32=m | 457 | CONFIG_PATA_AT32=m |
431 | # CONFIG_PATA_PLATFORM is not set | 458 | # CONFIG_PATA_PLATFORM is not set |
432 | # CONFIG_MD is not set | 459 | # CONFIG_MD is not set |
@@ -447,6 +474,7 @@ CONFIG_NETDEVICES=y | |||
447 | # | 474 | # |
448 | # CONFIG_WLAN_PRE80211 is not set | 475 | # CONFIG_WLAN_PRE80211 is not set |
449 | # CONFIG_WLAN_80211 is not set | 476 | # CONFIG_WLAN_80211 is not set |
477 | # CONFIG_IWLWIFI_LEDS is not set | ||
450 | # CONFIG_WAN is not set | 478 | # CONFIG_WAN is not set |
451 | CONFIG_PPP=m | 479 | CONFIG_PPP=m |
452 | # CONFIG_PPP_MULTILINK is not set | 480 | # CONFIG_PPP_MULTILINK is not set |
@@ -460,7 +488,6 @@ CONFIG_PPP_BSDCOMP=m | |||
460 | # CONFIG_PPPOL2TP is not set | 488 | # CONFIG_PPPOL2TP is not set |
461 | # CONFIG_SLIP is not set | 489 | # CONFIG_SLIP is not set |
462 | CONFIG_SLHC=m | 490 | CONFIG_SLHC=m |
463 | # CONFIG_SHAPER is not set | ||
464 | # CONFIG_NETCONSOLE is not set | 491 | # CONFIG_NETCONSOLE is not set |
465 | # CONFIG_NETPOLL is not set | 492 | # CONFIG_NETPOLL is not set |
466 | # CONFIG_NET_POLL_CONTROLLER is not set | 493 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -516,6 +543,7 @@ CONFIG_MOUSE_GPIO=m | |||
516 | # Character devices | 543 | # Character devices |
517 | # | 544 | # |
518 | # CONFIG_VT is not set | 545 | # CONFIG_VT is not set |
546 | # CONFIG_DEVKMEM is not set | ||
519 | # CONFIG_SERIAL_NONSTANDARD is not set | 547 | # CONFIG_SERIAL_NONSTANDARD is not set |
520 | 548 | ||
521 | # | 549 | # |
@@ -528,6 +556,7 @@ CONFIG_MOUSE_GPIO=m | |||
528 | # | 556 | # |
529 | CONFIG_SERIAL_ATMEL=y | 557 | CONFIG_SERIAL_ATMEL=y |
530 | CONFIG_SERIAL_ATMEL_CONSOLE=y | 558 | CONFIG_SERIAL_ATMEL_CONSOLE=y |
559 | CONFIG_SERIAL_ATMEL_PDC=y | ||
531 | # CONFIG_SERIAL_ATMEL_TTYAT is not set | 560 | # CONFIG_SERIAL_ATMEL_TTYAT is not set |
532 | CONFIG_SERIAL_CORE=y | 561 | CONFIG_SERIAL_CORE=y |
533 | CONFIG_SERIAL_CORE_CONSOLE=y | 562 | CONFIG_SERIAL_CORE_CONSOLE=y |
@@ -535,21 +564,13 @@ CONFIG_UNIX98_PTYS=y | |||
535 | # CONFIG_LEGACY_PTYS is not set | 564 | # CONFIG_LEGACY_PTYS is not set |
536 | # CONFIG_IPMI_HANDLER is not set | 565 | # CONFIG_IPMI_HANDLER is not set |
537 | # CONFIG_HW_RANDOM is not set | 566 | # CONFIG_HW_RANDOM is not set |
538 | # CONFIG_RTC is not set | ||
539 | # CONFIG_GEN_RTC is not set | ||
540 | # CONFIG_R3964 is not set | 567 | # CONFIG_R3964 is not set |
541 | # CONFIG_RAW_DRIVER is not set | 568 | # CONFIG_RAW_DRIVER is not set |
542 | # CONFIG_TCG_TPM is not set | 569 | # CONFIG_TCG_TPM is not set |
543 | CONFIG_I2C=m | 570 | CONFIG_I2C=m |
544 | CONFIG_I2C_BOARDINFO=y | 571 | CONFIG_I2C_BOARDINFO=y |
545 | CONFIG_I2C_CHARDEV=m | 572 | CONFIG_I2C_CHARDEV=m |
546 | |||
547 | # | ||
548 | # I2C Algorithms | ||
549 | # | ||
550 | CONFIG_I2C_ALGOBIT=m | 573 | CONFIG_I2C_ALGOBIT=m |
551 | # CONFIG_I2C_ALGOPCF is not set | ||
552 | # CONFIG_I2C_ALGOPCA is not set | ||
553 | 574 | ||
554 | # | 575 | # |
555 | # I2C Hardware Bus support | 576 | # I2C Hardware Bus support |
@@ -560,27 +581,23 @@ CONFIG_I2C_GPIO=m | |||
560 | # CONFIG_I2C_SIMTEC is not set | 581 | # CONFIG_I2C_SIMTEC is not set |
561 | # CONFIG_I2C_TAOS_EVM is not set | 582 | # CONFIG_I2C_TAOS_EVM is not set |
562 | # CONFIG_I2C_STUB is not set | 583 | # CONFIG_I2C_STUB is not set |
584 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
563 | 585 | ||
564 | # | 586 | # |
565 | # Miscellaneous I2C Chip support | 587 | # Miscellaneous I2C Chip support |
566 | # | 588 | # |
567 | # CONFIG_SENSORS_DS1337 is not set | ||
568 | # CONFIG_SENSORS_DS1374 is not set | ||
569 | # CONFIG_DS1682 is not set | 589 | # CONFIG_DS1682 is not set |
570 | # CONFIG_SENSORS_EEPROM is not set | 590 | # CONFIG_SENSORS_EEPROM is not set |
571 | # CONFIG_SENSORS_PCF8574 is not set | 591 | # CONFIG_SENSORS_PCF8574 is not set |
572 | # CONFIG_SENSORS_PCA9539 is not set | 592 | # CONFIG_PCF8575 is not set |
573 | # CONFIG_SENSORS_PCF8591 is not set | 593 | # CONFIG_SENSORS_PCF8591 is not set |
594 | # CONFIG_TPS65010 is not set | ||
574 | # CONFIG_SENSORS_MAX6875 is not set | 595 | # CONFIG_SENSORS_MAX6875 is not set |
575 | # CONFIG_SENSORS_TSL2550 is not set | 596 | # CONFIG_SENSORS_TSL2550 is not set |
576 | # CONFIG_I2C_DEBUG_CORE is not set | 597 | # CONFIG_I2C_DEBUG_CORE is not set |
577 | # CONFIG_I2C_DEBUG_ALGO is not set | 598 | # CONFIG_I2C_DEBUG_ALGO is not set |
578 | # CONFIG_I2C_DEBUG_BUS is not set | 599 | # CONFIG_I2C_DEBUG_BUS is not set |
579 | # CONFIG_I2C_DEBUG_CHIP is not set | 600 | # CONFIG_I2C_DEBUG_CHIP is not set |
580 | |||
581 | # | ||
582 | # SPI support | ||
583 | # | ||
584 | CONFIG_SPI=y | 601 | CONFIG_SPI=y |
585 | # CONFIG_SPI_DEBUG is not set | 602 | # CONFIG_SPI_DEBUG is not set |
586 | CONFIG_SPI_MASTER=y | 603 | CONFIG_SPI_MASTER=y |
@@ -597,9 +614,27 @@ CONFIG_SPI_ATMEL=y | |||
597 | # CONFIG_SPI_AT25 is not set | 614 | # CONFIG_SPI_AT25 is not set |
598 | CONFIG_SPI_SPIDEV=m | 615 | CONFIG_SPI_SPIDEV=m |
599 | # CONFIG_SPI_TLE62X0 is not set | 616 | # CONFIG_SPI_TLE62X0 is not set |
617 | CONFIG_HAVE_GPIO_LIB=y | ||
618 | |||
619 | # | ||
620 | # GPIO Support | ||
621 | # | ||
622 | # CONFIG_DEBUG_GPIO is not set | ||
623 | |||
624 | # | ||
625 | # I2C GPIO expanders: | ||
626 | # | ||
627 | # CONFIG_GPIO_PCA953X is not set | ||
628 | # CONFIG_GPIO_PCF857X is not set | ||
629 | |||
630 | # | ||
631 | # SPI GPIO expanders: | ||
632 | # | ||
633 | # CONFIG_GPIO_MCP23S08 is not set | ||
600 | # CONFIG_W1 is not set | 634 | # CONFIG_W1 is not set |
601 | # CONFIG_POWER_SUPPLY is not set | 635 | # CONFIG_POWER_SUPPLY is not set |
602 | # CONFIG_HWMON is not set | 636 | # CONFIG_HWMON is not set |
637 | # CONFIG_THERMAL is not set | ||
603 | CONFIG_WATCHDOG=y | 638 | CONFIG_WATCHDOG=y |
604 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 639 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
605 | 640 | ||
@@ -619,12 +654,22 @@ CONFIG_SSB_POSSIBLE=y | |||
619 | # Multifunction device drivers | 654 | # Multifunction device drivers |
620 | # | 655 | # |
621 | # CONFIG_MFD_SM501 is not set | 656 | # CONFIG_MFD_SM501 is not set |
657 | # CONFIG_HTC_PASIC3 is not set | ||
622 | 658 | ||
623 | # | 659 | # |
624 | # Multimedia devices | 660 | # Multimedia devices |
625 | # | 661 | # |
662 | |||
663 | # | ||
664 | # Multimedia core support | ||
665 | # | ||
626 | # CONFIG_VIDEO_DEV is not set | 666 | # CONFIG_VIDEO_DEV is not set |
627 | # CONFIG_DVB_CORE is not set | 667 | # CONFIG_DVB_CORE is not set |
668 | # CONFIG_VIDEO_MEDIA is not set | ||
669 | |||
670 | # | ||
671 | # Multimedia drivers | ||
672 | # | ||
628 | # CONFIG_DAB is not set | 673 | # CONFIG_DAB is not set |
629 | 674 | ||
630 | # | 675 | # |
@@ -682,7 +727,11 @@ CONFIG_SND_AT73C213_TARGET_BITRATE=48000 | |||
682 | # CONFIG_SND_SOC is not set | 727 | # CONFIG_SND_SOC is not set |
683 | 728 | ||
684 | # | 729 | # |
685 | # SoC Audio support for SuperH | 730 | # ALSA SoC audio for Freescale SOCs |
731 | # | ||
732 | |||
733 | # | ||
734 | # SoC Audio for the Texas Instruments OMAP | ||
686 | # | 735 | # |
687 | 736 | ||
688 | # | 737 | # |
@@ -694,14 +743,12 @@ CONFIG_USB_SUPPORT=y | |||
694 | # CONFIG_USB_ARCH_HAS_HCD is not set | 743 | # CONFIG_USB_ARCH_HAS_HCD is not set |
695 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 744 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
696 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 745 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
746 | # CONFIG_USB_OTG_WHITELIST is not set | ||
747 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
697 | 748 | ||
698 | # | 749 | # |
699 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 750 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
700 | # | 751 | # |
701 | |||
702 | # | ||
703 | # USB Gadget Support | ||
704 | # | ||
705 | CONFIG_USB_GADGET=y | 752 | CONFIG_USB_GADGET=y |
706 | # CONFIG_USB_GADGET_DEBUG is not set | 753 | # CONFIG_USB_GADGET_DEBUG is not set |
707 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 754 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
@@ -714,6 +761,7 @@ CONFIG_USB_ATMEL_USBA=y | |||
714 | # CONFIG_USB_GADGET_NET2280 is not set | 761 | # CONFIG_USB_GADGET_NET2280 is not set |
715 | # CONFIG_USB_GADGET_PXA2XX is not set | 762 | # CONFIG_USB_GADGET_PXA2XX is not set |
716 | # CONFIG_USB_GADGET_M66592 is not set | 763 | # CONFIG_USB_GADGET_M66592 is not set |
764 | # CONFIG_USB_GADGET_PXA27X is not set | ||
717 | # CONFIG_USB_GADGET_GOKU is not set | 765 | # CONFIG_USB_GADGET_GOKU is not set |
718 | # CONFIG_USB_GADGET_LH7A40X is not set | 766 | # CONFIG_USB_GADGET_LH7A40X is not set |
719 | # CONFIG_USB_GADGET_OMAP is not set | 767 | # CONFIG_USB_GADGET_OMAP is not set |
@@ -729,6 +777,7 @@ CONFIG_USB_FILE_STORAGE=m | |||
729 | # CONFIG_USB_FILE_STORAGE_TEST is not set | 777 | # CONFIG_USB_FILE_STORAGE_TEST is not set |
730 | CONFIG_USB_G_SERIAL=m | 778 | CONFIG_USB_G_SERIAL=m |
731 | # CONFIG_USB_MIDI_GADGET is not set | 779 | # CONFIG_USB_MIDI_GADGET is not set |
780 | # CONFIG_USB_G_PRINTER is not set | ||
732 | CONFIG_MMC=m | 781 | CONFIG_MMC=m |
733 | # CONFIG_MMC_DEBUG is not set | 782 | # CONFIG_MMC_DEBUG is not set |
734 | # CONFIG_MMC_UNSAFE_RESUME is not set | 783 | # CONFIG_MMC_UNSAFE_RESUME is not set |
@@ -739,17 +788,20 @@ CONFIG_MMC=m | |||
739 | CONFIG_MMC_BLOCK=m | 788 | CONFIG_MMC_BLOCK=m |
740 | # CONFIG_MMC_BLOCK_BOUNCE is not set | 789 | # CONFIG_MMC_BLOCK_BOUNCE is not set |
741 | # CONFIG_SDIO_UART is not set | 790 | # CONFIG_SDIO_UART is not set |
791 | # CONFIG_MMC_TEST is not set | ||
742 | 792 | ||
743 | # | 793 | # |
744 | # MMC/SD Host Controller Drivers | 794 | # MMC/SD Host Controller Drivers |
745 | # | 795 | # |
746 | CONFIG_MMC_SPI=m | 796 | CONFIG_MMC_SPI=m |
797 | # CONFIG_MEMSTICK is not set | ||
747 | CONFIG_NEW_LEDS=y | 798 | CONFIG_NEW_LEDS=y |
748 | CONFIG_LEDS_CLASS=y | 799 | CONFIG_LEDS_CLASS=y |
749 | 800 | ||
750 | # | 801 | # |
751 | # LED drivers | 802 | # LED drivers |
752 | # | 803 | # |
804 | CONFIG_LEDS_ATMEL_PWM=m | ||
753 | CONFIG_LEDS_GPIO=y | 805 | CONFIG_LEDS_GPIO=y |
754 | 806 | ||
755 | # | 807 | # |
@@ -758,6 +810,8 @@ CONFIG_LEDS_GPIO=y | |||
758 | CONFIG_LEDS_TRIGGERS=y | 810 | CONFIG_LEDS_TRIGGERS=y |
759 | CONFIG_LEDS_TRIGGER_TIMER=y | 811 | CONFIG_LEDS_TRIGGER_TIMER=y |
760 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y | 812 | CONFIG_LEDS_TRIGGER_HEARTBEAT=y |
813 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
814 | # CONFIG_ACCESSIBILITY is not set | ||
761 | CONFIG_RTC_LIB=y | 815 | CONFIG_RTC_LIB=y |
762 | CONFIG_RTC_CLASS=y | 816 | CONFIG_RTC_CLASS=y |
763 | CONFIG_RTC_HCTOSYS=y | 817 | CONFIG_RTC_HCTOSYS=y |
@@ -786,19 +840,22 @@ CONFIG_RTC_INTF_DEV=y | |||
786 | # CONFIG_RTC_DRV_PCF8563 is not set | 840 | # CONFIG_RTC_DRV_PCF8563 is not set |
787 | # CONFIG_RTC_DRV_PCF8583 is not set | 841 | # CONFIG_RTC_DRV_PCF8583 is not set |
788 | # CONFIG_RTC_DRV_M41T80 is not set | 842 | # CONFIG_RTC_DRV_M41T80 is not set |
843 | # CONFIG_RTC_DRV_S35390A is not set | ||
789 | 844 | ||
790 | # | 845 | # |
791 | # SPI RTC drivers | 846 | # SPI RTC drivers |
792 | # | 847 | # |
793 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
794 | # CONFIG_RTC_DRV_MAX6902 is not set | 848 | # CONFIG_RTC_DRV_MAX6902 is not set |
849 | # CONFIG_RTC_DRV_R9701 is not set | ||
850 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
795 | 851 | ||
796 | # | 852 | # |
797 | # Platform RTC drivers | 853 | # Platform RTC drivers |
798 | # | 854 | # |
855 | # CONFIG_RTC_DRV_DS1511 is not set | ||
799 | # CONFIG_RTC_DRV_DS1553 is not set | 856 | # CONFIG_RTC_DRV_DS1553 is not set |
800 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
801 | # CONFIG_RTC_DRV_DS1742 is not set | 857 | # CONFIG_RTC_DRV_DS1742 is not set |
858 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
802 | # CONFIG_RTC_DRV_M48T86 is not set | 859 | # CONFIG_RTC_DRV_M48T86 is not set |
803 | # CONFIG_RTC_DRV_M48T59 is not set | 860 | # CONFIG_RTC_DRV_M48T59 is not set |
804 | # CONFIG_RTC_DRV_V3020 is not set | 861 | # CONFIG_RTC_DRV_V3020 is not set |
@@ -807,11 +864,8 @@ CONFIG_RTC_INTF_DEV=y | |||
807 | # on-CPU RTC drivers | 864 | # on-CPU RTC drivers |
808 | # | 865 | # |
809 | CONFIG_RTC_DRV_AT32AP700X=y | 866 | CONFIG_RTC_DRV_AT32AP700X=y |
810 | |||
811 | # | ||
812 | # Userspace I/O | ||
813 | # | ||
814 | CONFIG_UIO=m | 867 | CONFIG_UIO=m |
868 | # CONFIG_UIO_SMX is not set | ||
815 | 869 | ||
816 | # | 870 | # |
817 | # File systems | 871 | # File systems |
@@ -828,14 +882,11 @@ CONFIG_JBD=m | |||
828 | # CONFIG_JFS_FS is not set | 882 | # CONFIG_JFS_FS is not set |
829 | # CONFIG_FS_POSIX_ACL is not set | 883 | # CONFIG_FS_POSIX_ACL is not set |
830 | # CONFIG_XFS_FS is not set | 884 | # CONFIG_XFS_FS is not set |
831 | # CONFIG_GFS2_FS is not set | ||
832 | # CONFIG_OCFS2_FS is not set | 885 | # CONFIG_OCFS2_FS is not set |
833 | # CONFIG_MINIX_FS is not set | 886 | # CONFIG_DNOTIFY is not set |
834 | # CONFIG_ROMFS_FS is not set | ||
835 | CONFIG_INOTIFY=y | 887 | CONFIG_INOTIFY=y |
836 | CONFIG_INOTIFY_USER=y | 888 | CONFIG_INOTIFY_USER=y |
837 | # CONFIG_QUOTA is not set | 889 | # CONFIG_QUOTA is not set |
838 | # CONFIG_DNOTIFY is not set | ||
839 | # CONFIG_AUTOFS_FS is not set | 890 | # CONFIG_AUTOFS_FS is not set |
840 | # CONFIG_AUTOFS4_FS is not set | 891 | # CONFIG_AUTOFS4_FS is not set |
841 | CONFIG_FUSE_FS=m | 892 | CONFIG_FUSE_FS=m |
@@ -891,8 +942,10 @@ CONFIG_JFFS2_RTIME=y | |||
891 | # CONFIG_JFFS2_RUBIN is not set | 942 | # CONFIG_JFFS2_RUBIN is not set |
892 | # CONFIG_CRAMFS is not set | 943 | # CONFIG_CRAMFS is not set |
893 | # CONFIG_VXFS_FS is not set | 944 | # CONFIG_VXFS_FS is not set |
945 | # CONFIG_MINIX_FS is not set | ||
894 | # CONFIG_HPFS_FS is not set | 946 | # CONFIG_HPFS_FS is not set |
895 | # CONFIG_QNX4FS_FS is not set | 947 | # CONFIG_QNX4FS_FS is not set |
948 | # CONFIG_ROMFS_FS is not set | ||
896 | # CONFIG_SYSV_FS is not set | 949 | # CONFIG_SYSV_FS is not set |
897 | # CONFIG_UFS_FS is not set | 950 | # CONFIG_UFS_FS is not set |
898 | # CONFIG_NETWORK_FILESYSTEMS is not set | 951 | # CONFIG_NETWORK_FILESYSTEMS is not set |
@@ -943,11 +996,6 @@ CONFIG_NLS_ISO8859_1=m | |||
943 | # CONFIG_NLS_KOI8_U is not set | 996 | # CONFIG_NLS_KOI8_U is not set |
944 | CONFIG_NLS_UTF8=m | 997 | CONFIG_NLS_UTF8=m |
945 | # CONFIG_DLM is not set | 998 | # CONFIG_DLM is not set |
946 | CONFIG_INSTRUMENTATION=y | ||
947 | CONFIG_PROFILING=y | ||
948 | CONFIG_OPROFILE=m | ||
949 | CONFIG_KPROBES=y | ||
950 | # CONFIG_MARKERS is not set | ||
951 | 999 | ||
952 | # | 1000 | # |
953 | # Kernel hacking | 1001 | # Kernel hacking |
@@ -955,6 +1003,7 @@ CONFIG_KPROBES=y | |||
955 | # CONFIG_PRINTK_TIME is not set | 1003 | # CONFIG_PRINTK_TIME is not set |
956 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1004 | CONFIG_ENABLE_WARN_DEPRECATED=y |
957 | CONFIG_ENABLE_MUST_CHECK=y | 1005 | CONFIG_ENABLE_MUST_CHECK=y |
1006 | CONFIG_FRAME_WARN=1024 | ||
958 | CONFIG_MAGIC_SYSRQ=y | 1007 | CONFIG_MAGIC_SYSRQ=y |
959 | # CONFIG_UNUSED_SYMBOLS is not set | 1008 | # CONFIG_UNUSED_SYMBOLS is not set |
960 | CONFIG_DEBUG_FS=y | 1009 | CONFIG_DEBUG_FS=y |
@@ -965,6 +1014,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
965 | CONFIG_SCHED_DEBUG=y | 1014 | CONFIG_SCHED_DEBUG=y |
966 | # CONFIG_SCHEDSTATS is not set | 1015 | # CONFIG_SCHEDSTATS is not set |
967 | # CONFIG_TIMER_STATS is not set | 1016 | # CONFIG_TIMER_STATS is not set |
1017 | # CONFIG_DEBUG_OBJECTS is not set | ||
968 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1018 | # CONFIG_DEBUG_RT_MUTEXES is not set |
969 | # CONFIG_RT_MUTEX_TESTER is not set | 1019 | # CONFIG_RT_MUTEX_TESTER is not set |
970 | # CONFIG_DEBUG_SPINLOCK is not set | 1020 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -978,12 +1028,14 @@ CONFIG_SCHED_DEBUG=y | |||
978 | CONFIG_DEBUG_BUGVERBOSE=y | 1028 | CONFIG_DEBUG_BUGVERBOSE=y |
979 | # CONFIG_DEBUG_INFO is not set | 1029 | # CONFIG_DEBUG_INFO is not set |
980 | # CONFIG_DEBUG_VM is not set | 1030 | # CONFIG_DEBUG_VM is not set |
1031 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
981 | # CONFIG_DEBUG_LIST is not set | 1032 | # CONFIG_DEBUG_LIST is not set |
982 | # CONFIG_DEBUG_SG is not set | 1033 | # CONFIG_DEBUG_SG is not set |
983 | CONFIG_FRAME_POINTER=y | 1034 | CONFIG_FRAME_POINTER=y |
984 | CONFIG_FORCED_INLINING=y | ||
985 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1035 | # CONFIG_BOOT_PRINTK_DELAY is not set |
986 | # CONFIG_RCU_TORTURE_TEST is not set | 1036 | # CONFIG_RCU_TORTURE_TEST is not set |
1037 | # CONFIG_KPROBES_SANITY_TEST is not set | ||
1038 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
987 | # CONFIG_LKDTM is not set | 1039 | # CONFIG_LKDTM is not set |
988 | # CONFIG_FAULT_INJECTION is not set | 1040 | # CONFIG_FAULT_INJECTION is not set |
989 | # CONFIG_SAMPLES is not set | 1041 | # CONFIG_SAMPLES is not set |
@@ -1000,6 +1052,8 @@ CONFIG_FORCED_INLINING=y | |||
1000 | # Library routines | 1052 | # Library routines |
1001 | # | 1053 | # |
1002 | CONFIG_BITREVERSE=y | 1054 | CONFIG_BITREVERSE=y |
1055 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1056 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1003 | CONFIG_CRC_CCITT=m | 1057 | CONFIG_CRC_CCITT=m |
1004 | # CONFIG_CRC16 is not set | 1058 | # CONFIG_CRC16 is not set |
1005 | CONFIG_CRC_ITU_T=m | 1059 | CONFIG_CRC_ITU_T=m |
diff --git a/arch/avr32/configs/atstk1004_defconfig b/arch/avr32/configs/atstk1004_defconfig index 634c52760349..a0912fb7c92e 100644 --- a/arch/avr32/configs/atstk1004_defconfig +++ b/arch/avr32/configs/atstk1004_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc7 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Wed Jan 9 23:04:20 2008 | 4 | # Mon May 26 13:34:57 2008 |
5 | # | 5 | # |
6 | CONFIG_AVR32=y | 6 | CONFIG_AVR32=y |
7 | CONFIG_GENERIC_GPIO=y | 7 | CONFIG_GENERIC_GPIO=y |
@@ -13,10 +13,10 @@ CONFIG_HARDIRQS_SW_RESEND=y | |||
13 | CONFIG_GENERIC_IRQ_PROBE=y | 13 | CONFIG_GENERIC_IRQ_PROBE=y |
14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | 14 | CONFIG_RWSEM_GENERIC_SPINLOCK=y |
15 | CONFIG_GENERIC_TIME=y | 15 | CONFIG_GENERIC_TIME=y |
16 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
16 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set | 17 | # CONFIG_RWSEM_XCHGADD_ALGORITHM is not set |
17 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 18 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
18 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 19 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
19 | CONFIG_ARCH_SUPPORTS_OPROFILE=y | ||
20 | CONFIG_GENERIC_HWEIGHT=y | 20 | CONFIG_GENERIC_HWEIGHT=y |
21 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 21 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
22 | CONFIG_GENERIC_BUG=y | 22 | CONFIG_GENERIC_BUG=y |
@@ -34,15 +34,15 @@ CONFIG_LOCALVERSION="" | |||
34 | # CONFIG_POSIX_MQUEUE is not set | 34 | # CONFIG_POSIX_MQUEUE is not set |
35 | # CONFIG_BSD_PROCESS_ACCT is not set | 35 | # CONFIG_BSD_PROCESS_ACCT is not set |
36 | # CONFIG_TASKSTATS is not set | 36 | # CONFIG_TASKSTATS is not set |
37 | # CONFIG_USER_NS is not set | ||
38 | # CONFIG_PID_NS is not set | ||
39 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
40 | # CONFIG_IKCONFIG is not set | 38 | # CONFIG_IKCONFIG is not set |
41 | CONFIG_LOG_BUF_SHIFT=14 | 39 | CONFIG_LOG_BUF_SHIFT=14 |
42 | # CONFIG_CGROUPS is not set | 40 | # CONFIG_CGROUPS is not set |
43 | # CONFIG_FAIR_GROUP_SCHED is not set | 41 | # CONFIG_GROUP_SCHED is not set |
44 | CONFIG_SYSFS_DEPRECATED=y | 42 | CONFIG_SYSFS_DEPRECATED=y |
43 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
45 | # CONFIG_RELAY is not set | 44 | # CONFIG_RELAY is not set |
45 | # CONFIG_NAMESPACES is not set | ||
46 | # CONFIG_BLK_DEV_INITRD is not set | 46 | # CONFIG_BLK_DEV_INITRD is not set |
47 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 47 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
48 | CONFIG_SYSCTL=y | 48 | CONFIG_SYSCTL=y |
@@ -54,24 +54,38 @@ CONFIG_HOTPLUG=y | |||
54 | CONFIG_PRINTK=y | 54 | CONFIG_PRINTK=y |
55 | CONFIG_BUG=y | 55 | CONFIG_BUG=y |
56 | CONFIG_ELF_CORE=y | 56 | CONFIG_ELF_CORE=y |
57 | # CONFIG_COMPAT_BRK is not set | ||
57 | # CONFIG_BASE_FULL is not set | 58 | # CONFIG_BASE_FULL is not set |
58 | # CONFIG_FUTEX is not set | 59 | # CONFIG_FUTEX is not set |
59 | # CONFIG_EPOLL is not set | 60 | # CONFIG_EPOLL is not set |
60 | # CONFIG_SIGNALFD is not set | 61 | # CONFIG_SIGNALFD is not set |
62 | # CONFIG_TIMERFD is not set | ||
61 | # CONFIG_EVENTFD is not set | 63 | # CONFIG_EVENTFD is not set |
62 | CONFIG_SHMEM=y | 64 | CONFIG_SHMEM=y |
63 | CONFIG_VM_EVENT_COUNTERS=y | 65 | CONFIG_VM_EVENT_COUNTERS=y |
64 | # CONFIG_SLAB is not set | 66 | # CONFIG_SLAB is not set |
65 | # CONFIG_SLUB is not set | 67 | # CONFIG_SLUB is not set |
66 | CONFIG_SLOB=y | 68 | CONFIG_SLOB=y |
69 | # CONFIG_PROFILING is not set | ||
70 | # CONFIG_MARKERS is not set | ||
71 | CONFIG_HAVE_OPROFILE=y | ||
72 | CONFIG_HAVE_KPROBES=y | ||
73 | # CONFIG_HAVE_KRETPROBES is not set | ||
74 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
75 | # CONFIG_PROC_PAGE_MONITOR is not set | ||
67 | # CONFIG_TINY_SHMEM is not set | 76 | # CONFIG_TINY_SHMEM is not set |
68 | CONFIG_BASE_SMALL=1 | 77 | CONFIG_BASE_SMALL=1 |
69 | # CONFIG_MODULES is not set | 78 | # CONFIG_MODULES is not set |
70 | # CONFIG_BLOCK is not set | 79 | # CONFIG_BLOCK is not set |
80 | CONFIG_CLASSIC_RCU=y | ||
71 | 81 | ||
72 | # | 82 | # |
73 | # System Type and features | 83 | # System Type and features |
74 | # | 84 | # |
85 | # CONFIG_TICK_ONESHOT is not set | ||
86 | # CONFIG_NO_HZ is not set | ||
87 | # CONFIG_HIGH_RES_TIMERS is not set | ||
88 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
75 | CONFIG_SUBARCH_AVR32B=y | 89 | CONFIG_SUBARCH_AVR32B=y |
76 | CONFIG_MMU=y | 90 | CONFIG_MMU=y |
77 | CONFIG_PERFORMANCE_COUNTERS=y | 91 | CONFIG_PERFORMANCE_COUNTERS=y |
@@ -115,16 +129,19 @@ CONFIG_FLATMEM=y | |||
115 | CONFIG_FLAT_NODE_MEM_MAP=y | 129 | CONFIG_FLAT_NODE_MEM_MAP=y |
116 | # CONFIG_SPARSEMEM_STATIC is not set | 130 | # CONFIG_SPARSEMEM_STATIC is not set |
117 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 131 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
132 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
118 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 133 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
119 | # CONFIG_RESOURCES_64BIT is not set | 134 | # CONFIG_RESOURCES_64BIT is not set |
120 | CONFIG_ZONE_DMA_FLAG=0 | 135 | CONFIG_ZONE_DMA_FLAG=0 |
121 | CONFIG_VIRT_TO_BUS=y | 136 | CONFIG_VIRT_TO_BUS=y |
122 | # CONFIG_OWNERSHIP_TRACE is not set | 137 | # CONFIG_OWNERSHIP_TRACE is not set |
138 | # CONFIG_NMI_DEBUGGING is not set | ||
123 | # CONFIG_HZ_100 is not set | 139 | # CONFIG_HZ_100 is not set |
124 | CONFIG_HZ_250=y | 140 | CONFIG_HZ_250=y |
125 | # CONFIG_HZ_300 is not set | 141 | # CONFIG_HZ_300 is not set |
126 | # CONFIG_HZ_1000 is not set | 142 | # CONFIG_HZ_1000 is not set |
127 | CONFIG_HZ=250 | 143 | CONFIG_HZ=250 |
144 | # CONFIG_SCHED_HRTICK is not set | ||
128 | CONFIG_CMDLINE="" | 145 | CONFIG_CMDLINE="" |
129 | 146 | ||
130 | # | 147 | # |
@@ -134,20 +151,7 @@ CONFIG_CMDLINE="" | |||
134 | # | 151 | # |
135 | # CPU Frequency scaling | 152 | # CPU Frequency scaling |
136 | # | 153 | # |
137 | CONFIG_CPU_FREQ=y | 154 | # CONFIG_CPU_FREQ is not set |
138 | CONFIG_CPU_FREQ_TABLE=y | ||
139 | # CONFIG_CPU_FREQ_DEBUG is not set | ||
140 | # CONFIG_CPU_FREQ_STAT is not set | ||
141 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | ||
142 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | ||
143 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | ||
144 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | ||
145 | CONFIG_CPU_FREQ_GOV_PERFORMANCE=y | ||
146 | # CONFIG_CPU_FREQ_GOV_POWERSAVE is not set | ||
147 | CONFIG_CPU_FREQ_GOV_USERSPACE=y | ||
148 | CONFIG_CPU_FREQ_GOV_ONDEMAND=y | ||
149 | # CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set | ||
150 | CONFIG_CPU_FREQ_AT32AP=y | ||
151 | 155 | ||
152 | # | 156 | # |
153 | # Bus options | 157 | # Bus options |
@@ -197,8 +201,6 @@ CONFIG_TCP_CONG_CUBIC=y | |||
197 | CONFIG_DEFAULT_TCP_CONG="cubic" | 201 | CONFIG_DEFAULT_TCP_CONG="cubic" |
198 | # CONFIG_TCP_MD5SIG is not set | 202 | # CONFIG_TCP_MD5SIG is not set |
199 | # CONFIG_IPV6 is not set | 203 | # CONFIG_IPV6 is not set |
200 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
201 | # CONFIG_INET6_TUNNEL is not set | ||
202 | # CONFIG_NETWORK_SECMARK is not set | 204 | # CONFIG_NETWORK_SECMARK is not set |
203 | # CONFIG_NETFILTER is not set | 205 | # CONFIG_NETFILTER is not set |
204 | # CONFIG_IP_DCCP is not set | 206 | # CONFIG_IP_DCCP is not set |
@@ -222,6 +224,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
222 | # | 224 | # |
223 | # CONFIG_NET_PKTGEN is not set | 225 | # CONFIG_NET_PKTGEN is not set |
224 | # CONFIG_HAMRADIO is not set | 226 | # CONFIG_HAMRADIO is not set |
227 | # CONFIG_CAN is not set | ||
225 | # CONFIG_IRDA is not set | 228 | # CONFIG_IRDA is not set |
226 | # CONFIG_BT is not set | 229 | # CONFIG_BT is not set |
227 | # CONFIG_AF_RXRPC is not set | 230 | # CONFIG_AF_RXRPC is not set |
@@ -255,6 +258,7 @@ CONFIG_MTD=y | |||
255 | CONFIG_MTD_PARTITIONS=y | 258 | CONFIG_MTD_PARTITIONS=y |
256 | # CONFIG_MTD_REDBOOT_PARTS is not set | 259 | # CONFIG_MTD_REDBOOT_PARTS is not set |
257 | CONFIG_MTD_CMDLINE_PARTS=y | 260 | CONFIG_MTD_CMDLINE_PARTS=y |
261 | # CONFIG_MTD_AR7_PARTS is not set | ||
258 | 262 | ||
259 | # | 263 | # |
260 | # User Modules And Translation Layers | 264 | # User Modules And Translation Layers |
@@ -321,6 +325,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
321 | # CONFIG_MTD_UBI is not set | 325 | # CONFIG_MTD_UBI is not set |
322 | # CONFIG_PARPORT is not set | 326 | # CONFIG_PARPORT is not set |
323 | # CONFIG_MISC_DEVICES is not set | 327 | # CONFIG_MISC_DEVICES is not set |
328 | # CONFIG_HAVE_IDE is not set | ||
324 | 329 | ||
325 | # | 330 | # |
326 | # SCSI device support | 331 | # SCSI device support |
@@ -346,6 +351,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
346 | # Character devices | 351 | # Character devices |
347 | # | 352 | # |
348 | # CONFIG_VT is not set | 353 | # CONFIG_VT is not set |
354 | # CONFIG_DEVKMEM is not set | ||
349 | # CONFIG_SERIAL_NONSTANDARD is not set | 355 | # CONFIG_SERIAL_NONSTANDARD is not set |
350 | 356 | ||
351 | # | 357 | # |
@@ -358,6 +364,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2 | |||
358 | # | 364 | # |
359 | CONFIG_SERIAL_ATMEL=y | 365 | CONFIG_SERIAL_ATMEL=y |
360 | CONFIG_SERIAL_ATMEL_CONSOLE=y | 366 | CONFIG_SERIAL_ATMEL_CONSOLE=y |
367 | # CONFIG_SERIAL_ATMEL_PDC is not set | ||
361 | # CONFIG_SERIAL_ATMEL_TTYAT is not set | 368 | # CONFIG_SERIAL_ATMEL_TTYAT is not set |
362 | CONFIG_SERIAL_CORE=y | 369 | CONFIG_SERIAL_CORE=y |
363 | CONFIG_SERIAL_CORE_CONSOLE=y | 370 | CONFIG_SERIAL_CORE_CONSOLE=y |
@@ -365,15 +372,9 @@ CONFIG_UNIX98_PTYS=y | |||
365 | # CONFIG_LEGACY_PTYS is not set | 372 | # CONFIG_LEGACY_PTYS is not set |
366 | # CONFIG_IPMI_HANDLER is not set | 373 | # CONFIG_IPMI_HANDLER is not set |
367 | # CONFIG_HW_RANDOM is not set | 374 | # CONFIG_HW_RANDOM is not set |
368 | # CONFIG_RTC is not set | ||
369 | # CONFIG_GEN_RTC is not set | ||
370 | # CONFIG_R3964 is not set | 375 | # CONFIG_R3964 is not set |
371 | # CONFIG_TCG_TPM is not set | 376 | # CONFIG_TCG_TPM is not set |
372 | # CONFIG_I2C is not set | 377 | # CONFIG_I2C is not set |
373 | |||
374 | # | ||
375 | # SPI support | ||
376 | # | ||
377 | CONFIG_SPI=y | 378 | CONFIG_SPI=y |
378 | CONFIG_SPI_MASTER=y | 379 | CONFIG_SPI_MASTER=y |
379 | 380 | ||
@@ -389,9 +390,24 @@ CONFIG_SPI_ATMEL=y | |||
389 | # CONFIG_SPI_AT25 is not set | 390 | # CONFIG_SPI_AT25 is not set |
390 | # CONFIG_SPI_SPIDEV is not set | 391 | # CONFIG_SPI_SPIDEV is not set |
391 | # CONFIG_SPI_TLE62X0 is not set | 392 | # CONFIG_SPI_TLE62X0 is not set |
393 | CONFIG_HAVE_GPIO_LIB=y | ||
394 | |||
395 | # | ||
396 | # GPIO Support | ||
397 | # | ||
398 | |||
399 | # | ||
400 | # I2C GPIO expanders: | ||
401 | # | ||
402 | |||
403 | # | ||
404 | # SPI GPIO expanders: | ||
405 | # | ||
406 | # CONFIG_GPIO_MCP23S08 is not set | ||
392 | # CONFIG_W1 is not set | 407 | # CONFIG_W1 is not set |
393 | # CONFIG_POWER_SUPPLY is not set | 408 | # CONFIG_POWER_SUPPLY is not set |
394 | # CONFIG_HWMON is not set | 409 | # CONFIG_HWMON is not set |
410 | # CONFIG_THERMAL is not set | ||
395 | CONFIG_WATCHDOG=y | 411 | CONFIG_WATCHDOG=y |
396 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 412 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
397 | 413 | ||
@@ -411,12 +427,22 @@ CONFIG_SSB_POSSIBLE=y | |||
411 | # Multifunction device drivers | 427 | # Multifunction device drivers |
412 | # | 428 | # |
413 | # CONFIG_MFD_SM501 is not set | 429 | # CONFIG_MFD_SM501 is not set |
430 | # CONFIG_HTC_PASIC3 is not set | ||
414 | 431 | ||
415 | # | 432 | # |
416 | # Multimedia devices | 433 | # Multimedia devices |
417 | # | 434 | # |
435 | |||
436 | # | ||
437 | # Multimedia core support | ||
438 | # | ||
418 | # CONFIG_VIDEO_DEV is not set | 439 | # CONFIG_VIDEO_DEV is not set |
419 | # CONFIG_DVB_CORE is not set | 440 | # CONFIG_DVB_CORE is not set |
441 | # CONFIG_VIDEO_MEDIA is not set | ||
442 | |||
443 | # | ||
444 | # Multimedia drivers | ||
445 | # | ||
420 | # CONFIG_DAB is not set | 446 | # CONFIG_DAB is not set |
421 | 447 | ||
422 | # | 448 | # |
@@ -434,8 +460,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
434 | # CONFIG_FB_SYS_FILLRECT is not set | 460 | # CONFIG_FB_SYS_FILLRECT is not set |
435 | # CONFIG_FB_SYS_COPYAREA is not set | 461 | # CONFIG_FB_SYS_COPYAREA is not set |
436 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 462 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
463 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
437 | # CONFIG_FB_SYS_FOPS is not set | 464 | # CONFIG_FB_SYS_FOPS is not set |
438 | CONFIG_FB_DEFERRED_IO=y | ||
439 | # CONFIG_FB_SVGALIB is not set | 465 | # CONFIG_FB_SVGALIB is not set |
440 | # CONFIG_FB_MACMODES is not set | 466 | # CONFIG_FB_MACMODES is not set |
441 | # CONFIG_FB_BACKLIGHT is not set | 467 | # CONFIG_FB_BACKLIGHT is not set |
@@ -467,14 +493,12 @@ CONFIG_USB_SUPPORT=y | |||
467 | # CONFIG_USB_ARCH_HAS_HCD is not set | 493 | # CONFIG_USB_ARCH_HAS_HCD is not set |
468 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 494 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
469 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 495 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
496 | # CONFIG_USB_OTG_WHITELIST is not set | ||
497 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
470 | 498 | ||
471 | # | 499 | # |
472 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 500 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
473 | # | 501 | # |
474 | |||
475 | # | ||
476 | # USB Gadget Support | ||
477 | # | ||
478 | CONFIG_USB_GADGET=y | 502 | CONFIG_USB_GADGET=y |
479 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | 503 | # CONFIG_USB_GADGET_DEBUG_FILES is not set |
480 | CONFIG_USB_GADGET_SELECTED=y | 504 | CONFIG_USB_GADGET_SELECTED=y |
@@ -485,6 +509,7 @@ CONFIG_USB_ATMEL_USBA=y | |||
485 | # CONFIG_USB_GADGET_NET2280 is not set | 509 | # CONFIG_USB_GADGET_NET2280 is not set |
486 | # CONFIG_USB_GADGET_PXA2XX is not set | 510 | # CONFIG_USB_GADGET_PXA2XX is not set |
487 | # CONFIG_USB_GADGET_M66592 is not set | 511 | # CONFIG_USB_GADGET_M66592 is not set |
512 | # CONFIG_USB_GADGET_PXA27X is not set | ||
488 | # CONFIG_USB_GADGET_GOKU is not set | 513 | # CONFIG_USB_GADGET_GOKU is not set |
489 | # CONFIG_USB_GADGET_LH7A40X is not set | 514 | # CONFIG_USB_GADGET_LH7A40X is not set |
490 | # CONFIG_USB_GADGET_OMAP is not set | 515 | # CONFIG_USB_GADGET_OMAP is not set |
@@ -499,8 +524,11 @@ CONFIG_USB_ETH=y | |||
499 | # CONFIG_USB_FILE_STORAGE is not set | 524 | # CONFIG_USB_FILE_STORAGE is not set |
500 | # CONFIG_USB_G_SERIAL is not set | 525 | # CONFIG_USB_G_SERIAL is not set |
501 | # CONFIG_USB_MIDI_GADGET is not set | 526 | # CONFIG_USB_MIDI_GADGET is not set |
527 | # CONFIG_USB_G_PRINTER is not set | ||
502 | # CONFIG_MMC is not set | 528 | # CONFIG_MMC is not set |
529 | # CONFIG_MEMSTICK is not set | ||
503 | # CONFIG_NEW_LEDS is not set | 530 | # CONFIG_NEW_LEDS is not set |
531 | # CONFIG_ACCESSIBILITY is not set | ||
504 | CONFIG_RTC_LIB=y | 532 | CONFIG_RTC_LIB=y |
505 | CONFIG_RTC_CLASS=y | 533 | CONFIG_RTC_CLASS=y |
506 | CONFIG_RTC_HCTOSYS=y | 534 | CONFIG_RTC_HCTOSYS=y |
@@ -519,15 +547,17 @@ CONFIG_RTC_INTF_DEV=y | |||
519 | # | 547 | # |
520 | # SPI RTC drivers | 548 | # SPI RTC drivers |
521 | # | 549 | # |
522 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
523 | # CONFIG_RTC_DRV_MAX6902 is not set | 550 | # CONFIG_RTC_DRV_MAX6902 is not set |
551 | # CONFIG_RTC_DRV_R9701 is not set | ||
552 | # CONFIG_RTC_DRV_RS5C348 is not set | ||
524 | 553 | ||
525 | # | 554 | # |
526 | # Platform RTC drivers | 555 | # Platform RTC drivers |
527 | # | 556 | # |
557 | # CONFIG_RTC_DRV_DS1511 is not set | ||
528 | # CONFIG_RTC_DRV_DS1553 is not set | 558 | # CONFIG_RTC_DRV_DS1553 is not set |
529 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
530 | # CONFIG_RTC_DRV_DS1742 is not set | 559 | # CONFIG_RTC_DRV_DS1742 is not set |
560 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
531 | # CONFIG_RTC_DRV_M48T86 is not set | 561 | # CONFIG_RTC_DRV_M48T86 is not set |
532 | # CONFIG_RTC_DRV_M48T59 is not set | 562 | # CONFIG_RTC_DRV_M48T59 is not set |
533 | # CONFIG_RTC_DRV_V3020 is not set | 563 | # CONFIG_RTC_DRV_V3020 is not set |
@@ -536,18 +566,14 @@ CONFIG_RTC_INTF_DEV=y | |||
536 | # on-CPU RTC drivers | 566 | # on-CPU RTC drivers |
537 | # | 567 | # |
538 | CONFIG_RTC_DRV_AT32AP700X=y | 568 | CONFIG_RTC_DRV_AT32AP700X=y |
539 | |||
540 | # | ||
541 | # Userspace I/O | ||
542 | # | ||
543 | # CONFIG_UIO is not set | 569 | # CONFIG_UIO is not set |
544 | 570 | ||
545 | # | 571 | # |
546 | # File systems | 572 | # File systems |
547 | # | 573 | # |
574 | # CONFIG_DNOTIFY is not set | ||
548 | # CONFIG_INOTIFY is not set | 575 | # CONFIG_INOTIFY is not set |
549 | # CONFIG_QUOTA is not set | 576 | # CONFIG_QUOTA is not set |
550 | # CONFIG_DNOTIFY is not set | ||
551 | # CONFIG_AUTOFS_FS is not set | 577 | # CONFIG_AUTOFS_FS is not set |
552 | # CONFIG_AUTOFS4_FS is not set | 578 | # CONFIG_AUTOFS4_FS is not set |
553 | # CONFIG_FUSE_FS is not set | 579 | # CONFIG_FUSE_FS is not set |
@@ -580,7 +606,6 @@ CONFIG_JFFS2_RTIME=y | |||
580 | # CONFIG_NETWORK_FILESYSTEMS is not set | 606 | # CONFIG_NETWORK_FILESYSTEMS is not set |
581 | # CONFIG_NLS is not set | 607 | # CONFIG_NLS is not set |
582 | # CONFIG_DLM is not set | 608 | # CONFIG_DLM is not set |
583 | # CONFIG_INSTRUMENTATION is not set | ||
584 | 609 | ||
585 | # | 610 | # |
586 | # Kernel hacking | 611 | # Kernel hacking |
@@ -588,6 +613,7 @@ CONFIG_JFFS2_RTIME=y | |||
588 | # CONFIG_PRINTK_TIME is not set | 613 | # CONFIG_PRINTK_TIME is not set |
589 | CONFIG_ENABLE_WARN_DEPRECATED=y | 614 | CONFIG_ENABLE_WARN_DEPRECATED=y |
590 | CONFIG_ENABLE_MUST_CHECK=y | 615 | CONFIG_ENABLE_MUST_CHECK=y |
616 | CONFIG_FRAME_WARN=1024 | ||
591 | CONFIG_MAGIC_SYSRQ=y | 617 | CONFIG_MAGIC_SYSRQ=y |
592 | # CONFIG_UNUSED_SYMBOLS is not set | 618 | # CONFIG_UNUSED_SYMBOLS is not set |
593 | # CONFIG_DEBUG_FS is not set | 619 | # CONFIG_DEBUG_FS is not set |
@@ -608,6 +634,8 @@ CONFIG_MAGIC_SYSRQ=y | |||
608 | # Library routines | 634 | # Library routines |
609 | # | 635 | # |
610 | CONFIG_BITREVERSE=y | 636 | CONFIG_BITREVERSE=y |
637 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
638 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
611 | # CONFIG_CRC_CCITT is not set | 639 | # CONFIG_CRC_CCITT is not set |
612 | # CONFIG_CRC16 is not set | 640 | # CONFIG_CRC16 is not set |
613 | # CONFIG_CRC_ITU_T is not set | 641 | # CONFIG_CRC_ITU_T is not set |
diff --git a/arch/avr32/kernel/avr32_ksyms.c b/arch/avr32/kernel/avr32_ksyms.c index 80f55f8dbf1c..84a7d44edc67 100644 --- a/arch/avr32/kernel/avr32_ksyms.c +++ b/arch/avr32/kernel/avr32_ksyms.c | |||
@@ -29,7 +29,9 @@ EXPORT_SYMBOL(__avr32_asr64); | |||
29 | */ | 29 | */ |
30 | EXPORT_SYMBOL(memset); | 30 | EXPORT_SYMBOL(memset); |
31 | EXPORT_SYMBOL(memcpy); | 31 | EXPORT_SYMBOL(memcpy); |
32 | |||
32 | EXPORT_SYMBOL(clear_page); | 33 | EXPORT_SYMBOL(clear_page); |
34 | EXPORT_SYMBOL(copy_page); | ||
33 | 35 | ||
34 | /* | 36 | /* |
35 | * Userspace access stuff. | 37 | * Userspace access stuff. |
@@ -41,6 +43,8 @@ EXPORT_SYMBOL(strncpy_from_user); | |||
41 | EXPORT_SYMBOL(__strncpy_from_user); | 43 | EXPORT_SYMBOL(__strncpy_from_user); |
42 | EXPORT_SYMBOL(clear_user); | 44 | EXPORT_SYMBOL(clear_user); |
43 | EXPORT_SYMBOL(__clear_user); | 45 | EXPORT_SYMBOL(__clear_user); |
46 | EXPORT_SYMBOL(strnlen_user); | ||
47 | |||
44 | EXPORT_SYMBOL(csum_partial); | 48 | EXPORT_SYMBOL(csum_partial); |
45 | EXPORT_SYMBOL(csum_partial_copy_generic); | 49 | EXPORT_SYMBOL(csum_partial_copy_generic); |
46 | 50 | ||
diff --git a/arch/avr32/kernel/init_task.c b/arch/avr32/kernel/init_task.c index effcacf9d1a2..44058469c6ec 100644 --- a/arch/avr32/kernel/init_task.c +++ b/arch/avr32/kernel/init_task.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
15 | 15 | ||
16 | static struct fs_struct init_fs = INIT_FS; | 16 | static struct fs_struct init_fs = INIT_FS; |
17 | static struct files_struct init_files = INIT_FILES; | ||
18 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 17 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
19 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 18 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
20 | struct mm_struct init_mm = INIT_MM(init_mm); | 19 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/avr32/mach-at32ap/cpufreq.c b/arch/avr32/mach-at32ap/cpufreq.c index 235524b79193..5dd8d25428bf 100644 --- a/arch/avr32/mach-at32ap/cpufreq.c +++ b/arch/avr32/mach-at32ap/cpufreq.c | |||
@@ -108,5 +108,4 @@ static int __init at32_cpufreq_init(void) | |||
108 | { | 108 | { |
109 | return cpufreq_register_driver(&at32_driver); | 109 | return cpufreq_register_driver(&at32_driver); |
110 | } | 110 | } |
111 | 111 | late_initcall(at32_cpufreq_init); | |
112 | arch_initcall(at32_cpufreq_init); | ||
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index fd5708523f2e..b87634e75f20 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig | |||
@@ -479,16 +479,6 @@ comment "Memory Setup" | |||
479 | 479 | ||
480 | comment "Misc" | 480 | comment "Misc" |
481 | 481 | ||
482 | config ENET_FLASH_PIN | ||
483 | int "PF port/pin used for flash and ethernet sharing" | ||
484 | depends on (BFIN533_STAMP) | ||
485 | default 0 | ||
486 | help | ||
487 | PF port/pin used for flash and ethernet sharing to allow other PF | ||
488 | pins to be used on other platforms without having to touch common | ||
489 | code. | ||
490 | For example: PF0 --> 0,PF1 --> 1,PF2 --> 2, etc. | ||
491 | |||
492 | choice | 482 | choice |
493 | prompt "Blackfin Exception Scratch Register" | 483 | prompt "Blackfin Exception Scratch Register" |
494 | default BFIN_SCRATCH_REG_RETN | 484 | default BFIN_SCRATCH_REG_RETN |
@@ -695,6 +685,8 @@ choice | |||
695 | prompt "Uncached SDRAM region" | 685 | prompt "Uncached SDRAM region" |
696 | default DMA_UNCACHED_1M | 686 | default DMA_UNCACHED_1M |
697 | depends on BFIN_DMA_5XX | 687 | depends on BFIN_DMA_5XX |
688 | config DMA_UNCACHED_4M | ||
689 | bool "Enable 4M DMA region" | ||
698 | config DMA_UNCACHED_2M | 690 | config DMA_UNCACHED_2M |
699 | bool "Enable 2M DMA region" | 691 | bool "Enable 2M DMA region" |
700 | config DMA_UNCACHED_1M | 692 | config DMA_UNCACHED_1M |
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig index 64876dfc2e55..5e6fb9d8e50f 100644 --- a/arch/blackfin/configs/BF527-EZKIT_defconfig +++ b/arch/blackfin/configs/BF527-EZKIT_defconfig | |||
@@ -1,6 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.16 | 3 | # Linux kernel version: 2.6.24.7 |
4 | # Fri May 16 10:02:29 2008 | ||
4 | # | 5 | # |
5 | # CONFIG_MMU is not set | 6 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 7 | # CONFIG_FPU is not set |
@@ -13,35 +14,34 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y | |||
13 | CONFIG_GENERIC_HWEIGHT=y | 14 | CONFIG_GENERIC_HWEIGHT=y |
14 | CONFIG_GENERIC_HARDIRQS=y | 15 | CONFIG_GENERIC_HARDIRQS=y |
15 | CONFIG_GENERIC_IRQ_PROBE=y | 16 | CONFIG_GENERIC_IRQ_PROBE=y |
16 | CONFIG_GENERIC_TIME=y | ||
17 | CONFIG_GENERIC_GPIO=y | 17 | CONFIG_GENERIC_GPIO=y |
18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 18 | CONFIG_FORCE_MAX_ZONEORDER=14 |
19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 19 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
21 | 21 | ||
22 | # | 22 | # |
23 | # Code maturity level options | 23 | # General setup |
24 | # | 24 | # |
25 | CONFIG_EXPERIMENTAL=y | 25 | CONFIG_EXPERIMENTAL=y |
26 | CONFIG_BROKEN_ON_SMP=y | 26 | CONFIG_BROKEN_ON_SMP=y |
27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 27 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
28 | |||
29 | # | ||
30 | # General setup | ||
31 | # | ||
32 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
33 | CONFIG_LOCALVERSION_AUTO=y | 29 | CONFIG_LOCALVERSION_AUTO=y |
34 | CONFIG_SYSVIPC=y | 30 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
36 | CONFIG_SYSVIPC_SYSCTL=y | 31 | CONFIG_SYSVIPC_SYSCTL=y |
37 | # CONFIG_POSIX_MQUEUE is not set | 32 | # CONFIG_POSIX_MQUEUE is not set |
38 | # CONFIG_BSD_PROCESS_ACCT is not set | 33 | # CONFIG_BSD_PROCESS_ACCT is not set |
39 | # CONFIG_TASKSTATS is not set | 34 | # CONFIG_TASKSTATS is not set |
40 | # CONFIG_UTS_NS is not set | 35 | # CONFIG_USER_NS is not set |
36 | # CONFIG_PID_NS is not set | ||
41 | # CONFIG_AUDIT is not set | 37 | # CONFIG_AUDIT is not set |
42 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
43 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
44 | CONFIG_LOG_BUF_SHIFT=14 | 40 | CONFIG_LOG_BUF_SHIFT=14 |
41 | # CONFIG_CGROUPS is not set | ||
42 | CONFIG_FAIR_GROUP_SCHED=y | ||
43 | CONFIG_FAIR_USER_SCHED=y | ||
44 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
45 | CONFIG_SYSFS_DEPRECATED=y | 45 | CONFIG_SYSFS_DEPRECATED=y |
46 | # CONFIG_RELAY is not set | 46 | # CONFIG_RELAY is not set |
47 | CONFIG_BLK_DEV_INITRD=y | 47 | CONFIG_BLK_DEV_INITRD=y |
@@ -64,32 +64,24 @@ CONFIG_EPOLL=y | |||
64 | CONFIG_SIGNALFD=y | 64 | CONFIG_SIGNALFD=y |
65 | CONFIG_EVENTFD=y | 65 | CONFIG_EVENTFD=y |
66 | CONFIG_VM_EVENT_COUNTERS=y | 66 | CONFIG_VM_EVENT_COUNTERS=y |
67 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
68 | # CONFIG_NP2 is not set | ||
69 | CONFIG_SLAB=y | 67 | CONFIG_SLAB=y |
70 | # CONFIG_SLUB is not set | 68 | # CONFIG_SLUB is not set |
71 | # CONFIG_SLOB is not set | 69 | # CONFIG_SLOB is not set |
70 | CONFIG_SLABINFO=y | ||
72 | CONFIG_RT_MUTEXES=y | 71 | CONFIG_RT_MUTEXES=y |
73 | CONFIG_TINY_SHMEM=y | 72 | CONFIG_TINY_SHMEM=y |
74 | CONFIG_BASE_SMALL=0 | 73 | CONFIG_BASE_SMALL=0 |
75 | |||
76 | # | ||
77 | # Loadable module support | ||
78 | # | ||
79 | CONFIG_MODULES=y | 74 | CONFIG_MODULES=y |
80 | CONFIG_MODULE_UNLOAD=y | 75 | CONFIG_MODULE_UNLOAD=y |
81 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 76 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
82 | # CONFIG_MODVERSIONS is not set | 77 | # CONFIG_MODVERSIONS is not set |
83 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 78 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
84 | CONFIG_KMOD=y | 79 | CONFIG_KMOD=y |
85 | |||
86 | # | ||
87 | # Block layer | ||
88 | # | ||
89 | CONFIG_BLOCK=y | 80 | CONFIG_BLOCK=y |
90 | # CONFIG_LBD is not set | 81 | # CONFIG_LBD is not set |
91 | # CONFIG_BLK_DEV_IO_TRACE is not set | 82 | # CONFIG_BLK_DEV_IO_TRACE is not set |
92 | # CONFIG_LSF is not set | 83 | # CONFIG_LSF is not set |
84 | # CONFIG_BLK_DEV_BSG is not set | ||
93 | 85 | ||
94 | # | 86 | # |
95 | # IO Schedulers | 87 | # IO Schedulers |
@@ -141,7 +133,6 @@ CONFIG_BF_REV_0_0=y | |||
141 | # CONFIG_BF_REV_ANY is not set | 133 | # CONFIG_BF_REV_ANY is not set |
142 | # CONFIG_BF_REV_NONE is not set | 134 | # CONFIG_BF_REV_NONE is not set |
143 | CONFIG_BF52x=y | 135 | CONFIG_BF52x=y |
144 | CONFIG_BFIN_SINGLE_CORE=y | ||
145 | CONFIG_MEM_MT48LC32M16A2TG_75=y | 136 | CONFIG_MEM_MT48LC32M16A2TG_75=y |
146 | CONFIG_BFIN527_EZKIT=y | 137 | CONFIG_BFIN527_EZKIT=y |
147 | 138 | ||
@@ -227,12 +218,14 @@ CONFIG_IRQ_USB_DMA=11 | |||
227 | # Board customizations | 218 | # Board customizations |
228 | # | 219 | # |
229 | # CONFIG_CMDLINE_BOOL is not set | 220 | # CONFIG_CMDLINE_BOOL is not set |
221 | CONFIG_BOOT_LOAD=0x1000 | ||
230 | 222 | ||
231 | # | 223 | # |
232 | # Clock/PLL Setup | 224 | # Clock/PLL Setup |
233 | # | 225 | # |
234 | CONFIG_CLKIN_HZ=25000000 | 226 | CONFIG_CLKIN_HZ=25000000 |
235 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 227 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
228 | CONFIG_MAX_MEM_SIZE=512 | ||
236 | CONFIG_MAX_VCO_HZ=600000000 | 229 | CONFIG_MAX_VCO_HZ=600000000 |
237 | CONFIG_MIN_VCO_HZ=50000000 | 230 | CONFIG_MIN_VCO_HZ=50000000 |
238 | CONFIG_MAX_SCLK_HZ=133333333 | 231 | CONFIG_MAX_SCLK_HZ=133333333 |
@@ -246,13 +239,17 @@ CONFIG_HZ_250=y | |||
246 | # CONFIG_HZ_300 is not set | 239 | # CONFIG_HZ_300 is not set |
247 | # CONFIG_HZ_1000 is not set | 240 | # CONFIG_HZ_1000 is not set |
248 | CONFIG_HZ=250 | 241 | CONFIG_HZ=250 |
242 | CONFIG_GENERIC_TIME=y | ||
243 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
244 | # CONFIG_CYCLES_CLOCKSOURCE is not set | ||
245 | # CONFIG_TICK_ONESHOT is not set | ||
246 | # CONFIG_NO_HZ is not set | ||
247 | # CONFIG_HIGH_RES_TIMERS is not set | ||
248 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
249 | 249 | ||
250 | # | 250 | # |
251 | # Memory Setup | 251 | # Misc |
252 | # | 252 | # |
253 | CONFIG_MAX_MEM_SIZE=512 | ||
254 | CONFIG_MEM_ADD_WIDTH=10 | ||
255 | CONFIG_BOOT_LOAD=0x1000 | ||
256 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 253 | CONFIG_BFIN_SCRATCH_REG_RETN=y |
257 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set | 254 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set |
258 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set | 255 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set |
@@ -288,12 +285,14 @@ CONFIG_FLATMEM_MANUAL=y | |||
288 | CONFIG_FLATMEM=y | 285 | CONFIG_FLATMEM=y |
289 | CONFIG_FLAT_NODE_MEM_MAP=y | 286 | CONFIG_FLAT_NODE_MEM_MAP=y |
290 | # CONFIG_SPARSEMEM_STATIC is not set | 287 | # CONFIG_SPARSEMEM_STATIC is not set |
288 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
291 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 289 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
292 | # CONFIG_RESOURCES_64BIT is not set | 290 | # CONFIG_RESOURCES_64BIT is not set |
293 | CONFIG_ZONE_DMA_FLAG=1 | 291 | CONFIG_ZONE_DMA_FLAG=1 |
294 | CONFIG_LARGE_ALLOCS=y | 292 | CONFIG_VIRT_TO_BUS=y |
295 | # CONFIG_BFIN_GPTIMERS is not set | 293 | # CONFIG_BFIN_GPTIMERS is not set |
296 | CONFIG_BFIN_DMA_5XX=y | 294 | CONFIG_BFIN_DMA_5XX=y |
295 | # CONFIG_DMA_UNCACHED_4M is not set | ||
297 | # CONFIG_DMA_UNCACHED_2M is not set | 296 | # CONFIG_DMA_UNCACHED_2M is not set |
298 | CONFIG_DMA_UNCACHED_1M=y | 297 | CONFIG_DMA_UNCACHED_1M=y |
299 | # CONFIG_DMA_UNCACHED_NONE is not set | 298 | # CONFIG_DMA_UNCACHED_NONE is not set |
@@ -338,10 +337,6 @@ CONFIG_BANK_3=0xFFC0 | |||
338 | # | 337 | # |
339 | # CONFIG_PCI is not set | 338 | # CONFIG_PCI is not set |
340 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 339 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
341 | |||
342 | # | ||
343 | # PCCARD (PCMCIA/CardBus) support | ||
344 | # | ||
345 | # CONFIG_PCCARD is not set | 340 | # CONFIG_PCCARD is not set |
346 | 341 | ||
347 | # | 342 | # |
@@ -357,9 +352,15 @@ CONFIG_BINFMT_ZFLAT=y | |||
357 | # Power management options | 352 | # Power management options |
358 | # | 353 | # |
359 | # CONFIG_PM is not set | 354 | # CONFIG_PM is not set |
355 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
360 | # CONFIG_PM_WAKEUP_BY_GPIO is not set | 356 | # CONFIG_PM_WAKEUP_BY_GPIO is not set |
361 | 357 | ||
362 | # | 358 | # |
359 | # CPU Frequency scaling | ||
360 | # | ||
361 | # CONFIG_CPU_FREQ is not set | ||
362 | |||
363 | # | ||
363 | # Networking | 364 | # Networking |
364 | # | 365 | # |
365 | CONFIG_NET=y | 366 | CONFIG_NET=y |
@@ -395,6 +396,7 @@ CONFIG_SYN_COOKIES=y | |||
395 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 396 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
396 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 397 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
397 | CONFIG_INET_XFRM_MODE_BEET=y | 398 | CONFIG_INET_XFRM_MODE_BEET=y |
399 | # CONFIG_INET_LRO is not set | ||
398 | CONFIG_INET_DIAG=y | 400 | CONFIG_INET_DIAG=y |
399 | CONFIG_INET_TCP_DIAG=y | 401 | CONFIG_INET_TCP_DIAG=y |
400 | # CONFIG_TCP_CONG_ADVANCED is not set | 402 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -421,10 +423,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
421 | # CONFIG_LAPB is not set | 423 | # CONFIG_LAPB is not set |
422 | # CONFIG_ECONET is not set | 424 | # CONFIG_ECONET is not set |
423 | # CONFIG_WAN_ROUTER is not set | 425 | # CONFIG_WAN_ROUTER is not set |
424 | |||
425 | # | ||
426 | # QoS and/or fair queueing | ||
427 | # | ||
428 | # CONFIG_NET_SCHED is not set | 426 | # CONFIG_NET_SCHED is not set |
429 | 427 | ||
430 | # | 428 | # |
@@ -444,6 +442,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
444 | # CONFIG_MAC80211 is not set | 442 | # CONFIG_MAC80211 is not set |
445 | # CONFIG_IEEE80211 is not set | 443 | # CONFIG_IEEE80211 is not set |
446 | # CONFIG_RFKILL is not set | 444 | # CONFIG_RFKILL is not set |
445 | # CONFIG_NET_9P is not set | ||
447 | 446 | ||
448 | # | 447 | # |
449 | # Device Drivers | 448 | # Device Drivers |
@@ -452,14 +451,11 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
452 | # | 451 | # |
453 | # Generic Driver Options | 452 | # Generic Driver Options |
454 | # | 453 | # |
454 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
455 | CONFIG_STANDALONE=y | 455 | CONFIG_STANDALONE=y |
456 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 456 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
457 | # CONFIG_FW_LOADER is not set | 457 | # CONFIG_FW_LOADER is not set |
458 | # CONFIG_SYS_HYPERVISOR is not set | 458 | # CONFIG_SYS_HYPERVISOR is not set |
459 | |||
460 | # | ||
461 | # Connector - unified userspace <-> kernelspace linker | ||
462 | # | ||
463 | # CONFIG_CONNECTOR is not set | 459 | # CONFIG_CONNECTOR is not set |
464 | CONFIG_MTD=y | 460 | CONFIG_MTD=y |
465 | # CONFIG_MTD_DEBUG is not set | 461 | # CONFIG_MTD_DEBUG is not set |
@@ -479,6 +475,7 @@ CONFIG_MTD_BLOCK=y | |||
479 | # CONFIG_INFTL is not set | 475 | # CONFIG_INFTL is not set |
480 | # CONFIG_RFD_FTL is not set | 476 | # CONFIG_RFD_FTL is not set |
481 | # CONFIG_SSFDC is not set | 477 | # CONFIG_SSFDC is not set |
478 | # CONFIG_MTD_OOPS is not set | ||
482 | 479 | ||
483 | # | 480 | # |
484 | # RAM/ROM/Flash chip drivers | 481 | # RAM/ROM/Flash chip drivers |
@@ -542,39 +539,27 @@ CONFIG_MTD_NAND_IDS=m | |||
542 | # CONFIG_MTD_NAND_DISKONCHIP is not set | 539 | # CONFIG_MTD_NAND_DISKONCHIP is not set |
543 | # CONFIG_MTD_NAND_NANDSIM is not set | 540 | # CONFIG_MTD_NAND_NANDSIM is not set |
544 | # CONFIG_MTD_NAND_PLATFORM is not set | 541 | # CONFIG_MTD_NAND_PLATFORM is not set |
542 | # CONFIG_MTD_ALAUDA is not set | ||
545 | # CONFIG_MTD_ONENAND is not set | 543 | # CONFIG_MTD_ONENAND is not set |
546 | 544 | ||
547 | # | 545 | # |
548 | # UBI - Unsorted block images | 546 | # UBI - Unsorted block images |
549 | # | 547 | # |
550 | # CONFIG_MTD_UBI is not set | 548 | # CONFIG_MTD_UBI is not set |
551 | |||
552 | # | ||
553 | # Parallel port support | ||
554 | # | ||
555 | # CONFIG_PARPORT is not set | 549 | # CONFIG_PARPORT is not set |
556 | 550 | CONFIG_BLK_DEV=y | |
557 | # | ||
558 | # Plug and Play support | ||
559 | # | ||
560 | # CONFIG_PNPACPI is not set | ||
561 | |||
562 | # | ||
563 | # Block devices | ||
564 | # | ||
565 | # CONFIG_BLK_DEV_COW_COMMON is not set | 551 | # CONFIG_BLK_DEV_COW_COMMON is not set |
566 | # CONFIG_BLK_DEV_LOOP is not set | 552 | # CONFIG_BLK_DEV_LOOP is not set |
567 | # CONFIG_BLK_DEV_NBD is not set | 553 | # CONFIG_BLK_DEV_NBD is not set |
554 | # CONFIG_BLK_DEV_UB is not set | ||
568 | CONFIG_BLK_DEV_RAM=y | 555 | CONFIG_BLK_DEV_RAM=y |
569 | CONFIG_BLK_DEV_RAM_COUNT=16 | 556 | CONFIG_BLK_DEV_RAM_COUNT=16 |
570 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 557 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
571 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 558 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
572 | # CONFIG_CDROM_PKTCDVD is not set | 559 | # CONFIG_CDROM_PKTCDVD is not set |
573 | # CONFIG_ATA_OVER_ETH is not set | 560 | # CONFIG_ATA_OVER_ETH is not set |
574 | 561 | CONFIG_MISC_DEVICES=y | |
575 | # | 562 | # CONFIG_EEPROM_93CX6 is not set |
576 | # Misc devices | ||
577 | # | ||
578 | # CONFIG_IDE is not set | 563 | # CONFIG_IDE is not set |
579 | 564 | ||
580 | # | 565 | # |
@@ -582,22 +567,18 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | |||
582 | # | 567 | # |
583 | # CONFIG_RAID_ATTRS is not set | 568 | # CONFIG_RAID_ATTRS is not set |
584 | # CONFIG_SCSI is not set | 569 | # CONFIG_SCSI is not set |
570 | # CONFIG_SCSI_DMA is not set | ||
585 | # CONFIG_SCSI_NETLINK is not set | 571 | # CONFIG_SCSI_NETLINK is not set |
586 | # CONFIG_ATA is not set | 572 | # CONFIG_ATA is not set |
587 | |||
588 | # | ||
589 | # Multi-device support (RAID and LVM) | ||
590 | # | ||
591 | # CONFIG_MD is not set | 573 | # CONFIG_MD is not set |
592 | |||
593 | # | ||
594 | # Network device support | ||
595 | # | ||
596 | CONFIG_NETDEVICES=y | 574 | CONFIG_NETDEVICES=y |
575 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
597 | # CONFIG_DUMMY is not set | 576 | # CONFIG_DUMMY is not set |
598 | # CONFIG_BONDING is not set | 577 | # CONFIG_BONDING is not set |
578 | # CONFIG_MACVLAN is not set | ||
599 | # CONFIG_EQUALIZER is not set | 579 | # CONFIG_EQUALIZER is not set |
600 | # CONFIG_TUN is not set | 580 | # CONFIG_TUN is not set |
581 | # CONFIG_VETH is not set | ||
601 | CONFIG_PHYLIB=y | 582 | CONFIG_PHYLIB=y |
602 | 583 | ||
603 | # | 584 | # |
@@ -611,21 +592,24 @@ CONFIG_PHYLIB=y | |||
611 | # CONFIG_VITESSE_PHY is not set | 592 | # CONFIG_VITESSE_PHY is not set |
612 | # CONFIG_SMSC_PHY is not set | 593 | # CONFIG_SMSC_PHY is not set |
613 | # CONFIG_BROADCOM_PHY is not set | 594 | # CONFIG_BROADCOM_PHY is not set |
595 | # CONFIG_ICPLUS_PHY is not set | ||
614 | # CONFIG_FIXED_PHY is not set | 596 | # CONFIG_FIXED_PHY is not set |
615 | 597 | # CONFIG_MDIO_BITBANG is not set | |
616 | # | ||
617 | # Ethernet (10 or 100Mbit) | ||
618 | # | ||
619 | CONFIG_NET_ETHERNET=y | 598 | CONFIG_NET_ETHERNET=y |
620 | CONFIG_MII=y | 599 | CONFIG_MII=y |
621 | # CONFIG_SMC91X is not set | ||
622 | CONFIG_BFIN_MAC=y | 600 | CONFIG_BFIN_MAC=y |
623 | CONFIG_BFIN_MAC_USE_L1=y | 601 | CONFIG_BFIN_MAC_USE_L1=y |
624 | CONFIG_BFIN_TX_DESC_NUM=10 | 602 | CONFIG_BFIN_TX_DESC_NUM=10 |
625 | CONFIG_BFIN_RX_DESC_NUM=20 | 603 | CONFIG_BFIN_RX_DESC_NUM=20 |
626 | CONFIG_BFIN_MAC_RMII=y | 604 | CONFIG_BFIN_MAC_RMII=y |
605 | # CONFIG_SMC91X is not set | ||
627 | # CONFIG_SMSC911X is not set | 606 | # CONFIG_SMSC911X is not set |
628 | # CONFIG_DM9000 is not set | 607 | # CONFIG_DM9000 is not set |
608 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
609 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
610 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
611 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
612 | # CONFIG_B44 is not set | ||
629 | CONFIG_NETDEV_1000=y | 613 | CONFIG_NETDEV_1000=y |
630 | # CONFIG_AX88180 is not set | 614 | # CONFIG_AX88180 is not set |
631 | CONFIG_NETDEV_10000=y | 615 | CONFIG_NETDEV_10000=y |
@@ -635,6 +619,15 @@ CONFIG_NETDEV_10000=y | |||
635 | # | 619 | # |
636 | # CONFIG_WLAN_PRE80211 is not set | 620 | # CONFIG_WLAN_PRE80211 is not set |
637 | # CONFIG_WLAN_80211 is not set | 621 | # CONFIG_WLAN_80211 is not set |
622 | |||
623 | # | ||
624 | # USB Network Adapters | ||
625 | # | ||
626 | # CONFIG_USB_CATC is not set | ||
627 | # CONFIG_USB_KAWETH is not set | ||
628 | # CONFIG_USB_PEGASUS is not set | ||
629 | # CONFIG_USB_RTL8150 is not set | ||
630 | # CONFIG_USB_USBNET is not set | ||
638 | # CONFIG_WAN is not set | 631 | # CONFIG_WAN is not set |
639 | # CONFIG_PPP is not set | 632 | # CONFIG_PPP is not set |
640 | # CONFIG_SLIP is not set | 633 | # CONFIG_SLIP is not set |
@@ -642,15 +635,7 @@ CONFIG_NETDEV_10000=y | |||
642 | # CONFIG_NETCONSOLE is not set | 635 | # CONFIG_NETCONSOLE is not set |
643 | # CONFIG_NETPOLL is not set | 636 | # CONFIG_NETPOLL is not set |
644 | # CONFIG_NET_POLL_CONTROLLER is not set | 637 | # CONFIG_NET_POLL_CONTROLLER is not set |
645 | |||
646 | # | ||
647 | # ISDN subsystem | ||
648 | # | ||
649 | # CONFIG_ISDN is not set | 638 | # CONFIG_ISDN is not set |
650 | |||
651 | # | ||
652 | # Telephony Support | ||
653 | # | ||
654 | # CONFIG_PHONE is not set | 639 | # CONFIG_PHONE is not set |
655 | 640 | ||
656 | # | 641 | # |
@@ -665,7 +650,6 @@ CONFIG_INPUT=y | |||
665 | # | 650 | # |
666 | # CONFIG_INPUT_MOUSEDEV is not set | 651 | # CONFIG_INPUT_MOUSEDEV is not set |
667 | # CONFIG_INPUT_JOYDEV is not set | 652 | # CONFIG_INPUT_JOYDEV is not set |
668 | # CONFIG_INPUT_TSDEV is not set | ||
669 | # CONFIG_INPUT_EVDEV is not set | 653 | # CONFIG_INPUT_EVDEV is not set |
670 | # CONFIG_INPUT_EVBUG is not set | 654 | # CONFIG_INPUT_EVBUG is not set |
671 | 655 | ||
@@ -697,7 +681,6 @@ CONFIG_INPUT_MISC=y | |||
697 | # | 681 | # |
698 | # CONFIG_AD9960 is not set | 682 | # CONFIG_AD9960 is not set |
699 | # CONFIG_SPI_ADC_BF533 is not set | 683 | # CONFIG_SPI_ADC_BF533 is not set |
700 | # CONFIG_BF5xx_PFLAGS is not set | ||
701 | # CONFIG_BF5xx_PPIFCD is not set | 684 | # CONFIG_BF5xx_PPIFCD is not set |
702 | # CONFIG_BFIN_SIMPLE_TIMER is not set | 685 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
703 | # CONFIG_BF5xx_PPI is not set | 686 | # CONFIG_BF5xx_PPI is not set |
@@ -706,7 +689,7 @@ CONFIG_BFIN_OTP=y | |||
706 | # CONFIG_BFIN_SPORT is not set | 689 | # CONFIG_BFIN_SPORT is not set |
707 | # CONFIG_BFIN_TIMER_LATENCY is not set | 690 | # CONFIG_BFIN_TIMER_LATENCY is not set |
708 | # CONFIG_TWI_LCD is not set | 691 | # CONFIG_TWI_LCD is not set |
709 | # CONFIG_AD5304 is not set | 692 | # CONFIG_SIMPLE_GPIO is not set |
710 | # CONFIG_VT is not set | 693 | # CONFIG_VT is not set |
711 | # CONFIG_SERIAL_NONSTANDARD is not set | 694 | # CONFIG_SERIAL_NONSTANDARD is not set |
712 | 695 | ||
@@ -735,27 +718,11 @@ CONFIG_UNIX98_PTYS=y | |||
735 | # CAN, the car bus and industrial fieldbus | 718 | # CAN, the car bus and industrial fieldbus |
736 | # | 719 | # |
737 | # CONFIG_CAN4LINUX is not set | 720 | # CONFIG_CAN4LINUX is not set |
738 | |||
739 | # | ||
740 | # IPMI | ||
741 | # | ||
742 | # CONFIG_IPMI_HANDLER is not set | 721 | # CONFIG_IPMI_HANDLER is not set |
743 | CONFIG_WATCHDOG=y | ||
744 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
745 | |||
746 | # | ||
747 | # Watchdog Device Drivers | ||
748 | # | ||
749 | # CONFIG_SOFT_WATCHDOG is not set | ||
750 | CONFIG_BFIN_WDT=y | ||
751 | CONFIG_HW_RANDOM=y | 722 | CONFIG_HW_RANDOM=y |
752 | # CONFIG_GEN_RTC is not set | 723 | # CONFIG_GEN_RTC is not set |
753 | # CONFIG_R3964 is not set | 724 | # CONFIG_R3964 is not set |
754 | # CONFIG_RAW_DRIVER is not set | 725 | # CONFIG_RAW_DRIVER is not set |
755 | |||
756 | # | ||
757 | # TPM devices | ||
758 | # | ||
759 | # CONFIG_TCG_TPM is not set | 726 | # CONFIG_TCG_TPM is not set |
760 | CONFIG_I2C=y | 727 | CONFIG_I2C=y |
761 | CONFIG_I2C_BOARDINFO=y | 728 | CONFIG_I2C_BOARDINFO=y |
@@ -777,21 +744,24 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50 | |||
777 | # CONFIG_I2C_OCORES is not set | 744 | # CONFIG_I2C_OCORES is not set |
778 | # CONFIG_I2C_PARPORT_LIGHT is not set | 745 | # CONFIG_I2C_PARPORT_LIGHT is not set |
779 | # CONFIG_I2C_SIMTEC is not set | 746 | # CONFIG_I2C_SIMTEC is not set |
747 | # CONFIG_I2C_TAOS_EVM is not set | ||
780 | # CONFIG_I2C_STUB is not set | 748 | # CONFIG_I2C_STUB is not set |
749 | # CONFIG_I2C_TINY_USB is not set | ||
781 | 750 | ||
782 | # | 751 | # |
783 | # Miscellaneous I2C Chip support | 752 | # Miscellaneous I2C Chip support |
784 | # | 753 | # |
785 | # CONFIG_SENSORS_DS1337 is not set | 754 | # CONFIG_SENSORS_DS1337 is not set |
786 | # CONFIG_SENSORS_DS1374 is not set | 755 | # CONFIG_SENSORS_DS1374 is not set |
756 | # CONFIG_DS1682 is not set | ||
787 | # CONFIG_SENSORS_AD5252 is not set | 757 | # CONFIG_SENSORS_AD5252 is not set |
788 | # CONFIG_SENSORS_EEPROM is not set | 758 | # CONFIG_SENSORS_EEPROM is not set |
789 | # CONFIG_SENSORS_PCF8574 is not set | 759 | # CONFIG_SENSORS_PCF8574 is not set |
790 | # CONFIG_SENSORS_PCF8575 is not set | 760 | # CONFIG_SENSORS_PCF8575 is not set |
791 | # CONFIG_SENSORS_PCA9543 is not set | ||
792 | # CONFIG_SENSORS_PCA9539 is not set | 761 | # CONFIG_SENSORS_PCA9539 is not set |
793 | # CONFIG_SENSORS_PCF8591 is not set | 762 | # CONFIG_SENSORS_PCF8591 is not set |
794 | # CONFIG_SENSORS_MAX6875 is not set | 763 | # CONFIG_SENSORS_MAX6875 is not set |
764 | # CONFIG_SENSORS_TSL2550 is not set | ||
795 | # CONFIG_I2C_DEBUG_CORE is not set | 765 | # CONFIG_I2C_DEBUG_CORE is not set |
796 | # CONFIG_I2C_DEBUG_ALGO is not set | 766 | # CONFIG_I2C_DEBUG_ALGO is not set |
797 | # CONFIG_I2C_DEBUG_BUS is not set | 767 | # CONFIG_I2C_DEBUG_BUS is not set |
@@ -814,14 +784,11 @@ CONFIG_SPI_BFIN=y | |||
814 | # | 784 | # |
815 | # CONFIG_SPI_AT25 is not set | 785 | # CONFIG_SPI_AT25 is not set |
816 | # CONFIG_SPI_SPIDEV is not set | 786 | # CONFIG_SPI_SPIDEV is not set |
817 | 787 | # CONFIG_SPI_TLE62X0 is not set | |
818 | # | ||
819 | # Dallas's 1-wire bus | ||
820 | # | ||
821 | # CONFIG_W1 is not set | 788 | # CONFIG_W1 is not set |
789 | # CONFIG_POWER_SUPPLY is not set | ||
822 | CONFIG_HWMON=y | 790 | CONFIG_HWMON=y |
823 | # CONFIG_HWMON_VID is not set | 791 | # CONFIG_HWMON_VID is not set |
824 | # CONFIG_SENSORS_ABITUGURU is not set | ||
825 | # CONFIG_SENSORS_AD7418 is not set | 792 | # CONFIG_SENSORS_AD7418 is not set |
826 | # CONFIG_SENSORS_ADM1021 is not set | 793 | # CONFIG_SENSORS_ADM1021 is not set |
827 | # CONFIG_SENSORS_ADM1025 is not set | 794 | # CONFIG_SENSORS_ADM1025 is not set |
@@ -829,12 +796,12 @@ CONFIG_HWMON=y | |||
829 | # CONFIG_SENSORS_ADM1029 is not set | 796 | # CONFIG_SENSORS_ADM1029 is not set |
830 | # CONFIG_SENSORS_ADM1031 is not set | 797 | # CONFIG_SENSORS_ADM1031 is not set |
831 | # CONFIG_SENSORS_ADM9240 is not set | 798 | # CONFIG_SENSORS_ADM9240 is not set |
832 | # CONFIG_SENSORS_ASB100 is not set | 799 | # CONFIG_SENSORS_ADT7470 is not set |
833 | # CONFIG_SENSORS_ATXP1 is not set | 800 | # CONFIG_SENSORS_ATXP1 is not set |
834 | # CONFIG_SENSORS_DS1621 is not set | 801 | # CONFIG_SENSORS_DS1621 is not set |
835 | # CONFIG_SENSORS_F71805F is not set | 802 | # CONFIG_SENSORS_F71805F is not set |
836 | # CONFIG_SENSORS_FSCHER is not set | 803 | # CONFIG_SENSORS_F71882FG is not set |
837 | # CONFIG_SENSORS_FSCPOS is not set | 804 | # CONFIG_SENSORS_F75375S is not set |
838 | # CONFIG_SENSORS_GL518SM is not set | 805 | # CONFIG_SENSORS_GL518SM is not set |
839 | # CONFIG_SENSORS_GL520SM is not set | 806 | # CONFIG_SENSORS_GL520SM is not set |
840 | # CONFIG_SENSORS_IT87 is not set | 807 | # CONFIG_SENSORS_IT87 is not set |
@@ -849,13 +816,16 @@ CONFIG_HWMON=y | |||
849 | # CONFIG_SENSORS_LM87 is not set | 816 | # CONFIG_SENSORS_LM87 is not set |
850 | # CONFIG_SENSORS_LM90 is not set | 817 | # CONFIG_SENSORS_LM90 is not set |
851 | # CONFIG_SENSORS_LM92 is not set | 818 | # CONFIG_SENSORS_LM92 is not set |
819 | # CONFIG_SENSORS_LM93 is not set | ||
852 | # CONFIG_SENSORS_MAX1619 is not set | 820 | # CONFIG_SENSORS_MAX1619 is not set |
853 | # CONFIG_SENSORS_MAX6650 is not set | 821 | # CONFIG_SENSORS_MAX6650 is not set |
854 | # CONFIG_SENSORS_PC87360 is not set | 822 | # CONFIG_SENSORS_PC87360 is not set |
855 | # CONFIG_SENSORS_PC87427 is not set | 823 | # CONFIG_SENSORS_PC87427 is not set |
824 | # CONFIG_SENSORS_DME1737 is not set | ||
856 | # CONFIG_SENSORS_SMSC47M1 is not set | 825 | # CONFIG_SENSORS_SMSC47M1 is not set |
857 | # CONFIG_SENSORS_SMSC47M192 is not set | 826 | # CONFIG_SENSORS_SMSC47M192 is not set |
858 | # CONFIG_SENSORS_SMSC47B397 is not set | 827 | # CONFIG_SENSORS_SMSC47B397 is not set |
828 | # CONFIG_SENSORS_THMC50 is not set | ||
859 | # CONFIG_SENSORS_VT1211 is not set | 829 | # CONFIG_SENSORS_VT1211 is not set |
860 | # CONFIG_SENSORS_W83781D is not set | 830 | # CONFIG_SENSORS_W83781D is not set |
861 | # CONFIG_SENSORS_W83791D is not set | 831 | # CONFIG_SENSORS_W83791D is not set |
@@ -865,6 +835,25 @@ CONFIG_HWMON=y | |||
865 | # CONFIG_SENSORS_W83627HF is not set | 835 | # CONFIG_SENSORS_W83627HF is not set |
866 | # CONFIG_SENSORS_W83627EHF is not set | 836 | # CONFIG_SENSORS_W83627EHF is not set |
867 | # CONFIG_HWMON_DEBUG_CHIP is not set | 837 | # CONFIG_HWMON_DEBUG_CHIP is not set |
838 | CONFIG_WATCHDOG=y | ||
839 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
840 | |||
841 | # | ||
842 | # Watchdog Device Drivers | ||
843 | # | ||
844 | # CONFIG_SOFT_WATCHDOG is not set | ||
845 | CONFIG_BFIN_WDT=y | ||
846 | |||
847 | # | ||
848 | # USB-based Watchdog Cards | ||
849 | # | ||
850 | # CONFIG_USBPCWATCHDOG is not set | ||
851 | |||
852 | # | ||
853 | # Sonics Silicon Backplane | ||
854 | # | ||
855 | CONFIG_SSB_POSSIBLE=y | ||
856 | # CONFIG_SSB is not set | ||
868 | 857 | ||
869 | # | 858 | # |
870 | # Multifunction device drivers | 859 | # Multifunction device drivers |
@@ -881,72 +870,133 @@ CONFIG_HWMON=y | |||
881 | # | 870 | # |
882 | # Graphics support | 871 | # Graphics support |
883 | # | 872 | # |
873 | # CONFIG_VGASTATE is not set | ||
874 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
875 | # CONFIG_FB is not set | ||
884 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | 876 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set |
885 | 877 | ||
886 | # | 878 | # |
887 | # Display device support | 879 | # Display device support |
888 | # | 880 | # |
889 | # CONFIG_DISPLAY_SUPPORT is not set | 881 | # CONFIG_DISPLAY_SUPPORT is not set |
890 | # CONFIG_VGASTATE is not set | ||
891 | # CONFIG_FB is not set | ||
892 | 882 | ||
893 | # | 883 | # |
894 | # Sound | 884 | # Sound |
895 | # | 885 | # |
896 | # CONFIG_SOUND is not set | 886 | # CONFIG_SOUND is not set |
897 | 887 | CONFIG_HID_SUPPORT=y | |
898 | # | ||
899 | # HID Devices | ||
900 | # | ||
901 | CONFIG_HID=y | 888 | CONFIG_HID=y |
902 | # CONFIG_HID_DEBUG is not set | 889 | # CONFIG_HID_DEBUG is not set |
890 | # CONFIG_HIDRAW is not set | ||
903 | 891 | ||
904 | # | 892 | # |
905 | # USB support | 893 | # USB Input Devices |
906 | # | 894 | # |
895 | CONFIG_USB_HID=y | ||
896 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
897 | # CONFIG_HID_FF is not set | ||
898 | # CONFIG_USB_HIDDEV is not set | ||
899 | CONFIG_USB_SUPPORT=y | ||
907 | CONFIG_USB_ARCH_HAS_HCD=y | 900 | CONFIG_USB_ARCH_HAS_HCD=y |
908 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 901 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
909 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 902 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
910 | # CONFIG_USB is not set | 903 | CONFIG_USB=y |
904 | # CONFIG_USB_DEBUG is not set | ||
905 | |||
906 | # | ||
907 | # Miscellaneous USB options | ||
908 | # | ||
909 | # CONFIG_USB_DEVICEFS is not set | ||
910 | CONFIG_USB_DEVICE_CLASS=y | ||
911 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
912 | # CONFIG_USB_OTG is not set | ||
913 | # CONFIG_USB_OTG_WHITELIST is not set | ||
914 | CONFIG_USB_OTG_BLACKLIST_HUB=y | ||
915 | |||
916 | # | ||
917 | # USB Host Controller Drivers | ||
918 | # | ||
919 | # CONFIG_USB_ISP116X_HCD is not set | ||
920 | # CONFIG_USB_ISP1362_HCD is not set | ||
921 | # CONFIG_USB_ISP1760_HCD is not set | ||
922 | # CONFIG_USB_SL811_HCD is not set | ||
923 | # CONFIG_USB_R8A66597_HCD is not set | ||
924 | CONFIG_USB_MUSB_HDRC=y | ||
925 | CONFIG_USB_MUSB_SOC=y | ||
911 | 926 | ||
912 | # | 927 | # |
913 | # Enable Host or Gadget support to see Inventra options | 928 | # Blackfin high speed USB support |
914 | # | 929 | # |
930 | CONFIG_USB_MUSB_HOST=y | ||
931 | # CONFIG_USB_MUSB_PERIPHERAL is not set | ||
932 | # CONFIG_USB_MUSB_OTG is not set | ||
933 | CONFIG_USB_MUSB_HDRC_HCD=y | ||
934 | CONFIG_MUSB_PIO_ONLY=y | ||
935 | CONFIG_USB_MUSB_LOGLEVEL=0 | ||
936 | |||
937 | # | ||
938 | # USB Device Class drivers | ||
939 | # | ||
940 | # CONFIG_USB_ACM is not set | ||
941 | # CONFIG_USB_PRINTER is not set | ||
915 | 942 | ||
916 | # | 943 | # |
917 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 944 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
918 | # | 945 | # |
919 | 946 | ||
920 | # | 947 | # |
921 | # USB Gadget Support | 948 | # may also be needed; see USB_STORAGE Help for more information |
922 | # | 949 | # |
923 | # CONFIG_USB_GADGET is not set | 950 | # CONFIG_USB_LIBUSUAL is not set |
924 | # CONFIG_MMC is not set | ||
925 | 951 | ||
926 | # | 952 | # |
927 | # LED devices | 953 | # USB Imaging devices |
928 | # | 954 | # |
929 | # CONFIG_NEW_LEDS is not set | 955 | # CONFIG_USB_MDC800 is not set |
956 | CONFIG_USB_MON=y | ||
930 | 957 | ||
931 | # | 958 | # |
932 | # LED drivers | 959 | # USB port drivers |
933 | # | 960 | # |
934 | 961 | ||
935 | # | 962 | # |
936 | # LED Triggers | 963 | # USB Serial Converter support |
937 | # | 964 | # |
965 | # CONFIG_USB_SERIAL is not set | ||
938 | 966 | ||
939 | # | 967 | # |
940 | # InfiniBand support | 968 | # USB Miscellaneous drivers |
941 | # | 969 | # |
970 | # CONFIG_USB_EMI62 is not set | ||
971 | # CONFIG_USB_EMI26 is not set | ||
972 | # CONFIG_USB_ADUTUX is not set | ||
973 | # CONFIG_USB_AUERSWALD is not set | ||
974 | # CONFIG_USB_RIO500 is not set | ||
975 | # CONFIG_USB_LEGOTOWER is not set | ||
976 | # CONFIG_USB_LCD is not set | ||
977 | # CONFIG_USB_BERRY_CHARGE is not set | ||
978 | # CONFIG_USB_LED is not set | ||
979 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
980 | # CONFIG_USB_CYTHERM is not set | ||
981 | # CONFIG_USB_PHIDGET is not set | ||
982 | # CONFIG_USB_IDMOUSE is not set | ||
983 | # CONFIG_USB_FTDI_ELAN is not set | ||
984 | # CONFIG_USB_APPLEDISPLAY is not set | ||
985 | # CONFIG_USB_SISUSBVGA is not set | ||
986 | # CONFIG_USB_LD is not set | ||
987 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
988 | # CONFIG_USB_IOWARRIOR is not set | ||
942 | 989 | ||
943 | # | 990 | # |
944 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 991 | # USB DSL modem support |
945 | # | 992 | # |
946 | 993 | ||
947 | # | 994 | # |
948 | # Real Time Clock | 995 | # USB Gadget Support |
949 | # | 996 | # |
997 | # CONFIG_USB_GADGET is not set | ||
998 | # CONFIG_MMC is not set | ||
999 | # CONFIG_NEW_LEDS is not set | ||
950 | CONFIG_RTC_LIB=y | 1000 | CONFIG_RTC_LIB=y |
951 | CONFIG_RTC_CLASS=y | 1001 | CONFIG_RTC_CLASS=y |
952 | CONFIG_RTC_HCTOSYS=y | 1002 | CONFIG_RTC_HCTOSYS=y |
@@ -966,6 +1016,7 @@ CONFIG_RTC_INTF_DEV=y | |||
966 | # I2C RTC drivers | 1016 | # I2C RTC drivers |
967 | # | 1017 | # |
968 | # CONFIG_RTC_DRV_DS1307 is not set | 1018 | # CONFIG_RTC_DRV_DS1307 is not set |
1019 | # CONFIG_RTC_DRV_DS1374 is not set | ||
969 | # CONFIG_RTC_DRV_DS1672 is not set | 1020 | # CONFIG_RTC_DRV_DS1672 is not set |
970 | # CONFIG_RTC_DRV_MAX6900 is not set | 1021 | # CONFIG_RTC_DRV_MAX6900 is not set |
971 | # CONFIG_RTC_DRV_RS5C372 is not set | 1022 | # CONFIG_RTC_DRV_RS5C372 is not set |
@@ -973,6 +1024,7 @@ CONFIG_RTC_INTF_DEV=y | |||
973 | # CONFIG_RTC_DRV_X1205 is not set | 1024 | # CONFIG_RTC_DRV_X1205 is not set |
974 | # CONFIG_RTC_DRV_PCF8563 is not set | 1025 | # CONFIG_RTC_DRV_PCF8563 is not set |
975 | # CONFIG_RTC_DRV_PCF8583 is not set | 1026 | # CONFIG_RTC_DRV_PCF8583 is not set |
1027 | # CONFIG_RTC_DRV_M41T80 is not set | ||
976 | 1028 | ||
977 | # | 1029 | # |
978 | # SPI RTC drivers | 1030 | # SPI RTC drivers |
@@ -984,8 +1036,10 @@ CONFIG_RTC_INTF_DEV=y | |||
984 | # Platform RTC drivers | 1036 | # Platform RTC drivers |
985 | # | 1037 | # |
986 | # CONFIG_RTC_DRV_DS1553 is not set | 1038 | # CONFIG_RTC_DRV_DS1553 is not set |
1039 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
987 | # CONFIG_RTC_DRV_DS1742 is not set | 1040 | # CONFIG_RTC_DRV_DS1742 is not set |
988 | # CONFIG_RTC_DRV_M48T86 is not set | 1041 | # CONFIG_RTC_DRV_M48T86 is not set |
1042 | # CONFIG_RTC_DRV_M48T59 is not set | ||
989 | # CONFIG_RTC_DRV_V3020 is not set | 1043 | # CONFIG_RTC_DRV_V3020 is not set |
990 | 1044 | ||
991 | # | 1045 | # |
@@ -994,22 +1048,9 @@ CONFIG_RTC_INTF_DEV=y | |||
994 | CONFIG_RTC_DRV_BFIN=y | 1048 | CONFIG_RTC_DRV_BFIN=y |
995 | 1049 | ||
996 | # | 1050 | # |
997 | # DMA Engine support | 1051 | # Userspace I/O |
998 | # | ||
999 | # CONFIG_DMA_ENGINE is not set | ||
1000 | |||
1001 | # | ||
1002 | # DMA Clients | ||
1003 | # | 1052 | # |
1004 | 1053 | # CONFIG_UIO is not set | |
1005 | # | ||
1006 | # DMA Devices | ||
1007 | # | ||
1008 | |||
1009 | # | ||
1010 | # PBX support | ||
1011 | # | ||
1012 | # CONFIG_PBX is not set | ||
1013 | 1054 | ||
1014 | # | 1055 | # |
1015 | # File systems | 1056 | # File systems |
@@ -1054,7 +1095,6 @@ CONFIG_PROC_SYSCTL=y | |||
1054 | CONFIG_SYSFS=y | 1095 | CONFIG_SYSFS=y |
1055 | # CONFIG_TMPFS is not set | 1096 | # CONFIG_TMPFS is not set |
1056 | # CONFIG_HUGETLB_PAGE is not set | 1097 | # CONFIG_HUGETLB_PAGE is not set |
1057 | CONFIG_RAMFS=y | ||
1058 | # CONFIG_CONFIGFS_FS is not set | 1098 | # CONFIG_CONFIGFS_FS is not set |
1059 | 1099 | ||
1060 | # | 1100 | # |
@@ -1080,10 +1120,12 @@ CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y | |||
1080 | CONFIG_JFFS2_FS=m | 1120 | CONFIG_JFFS2_FS=m |
1081 | CONFIG_JFFS2_FS_DEBUG=0 | 1121 | CONFIG_JFFS2_FS_DEBUG=0 |
1082 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 1122 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
1123 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
1083 | # CONFIG_JFFS2_SUMMARY is not set | 1124 | # CONFIG_JFFS2_SUMMARY is not set |
1084 | # CONFIG_JFFS2_FS_XATTR is not set | 1125 | # CONFIG_JFFS2_FS_XATTR is not set |
1085 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 1126 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
1086 | CONFIG_JFFS2_ZLIB=y | 1127 | CONFIG_JFFS2_ZLIB=y |
1128 | # CONFIG_JFFS2_LZO is not set | ||
1087 | CONFIG_JFFS2_RTIME=y | 1129 | CONFIG_JFFS2_RTIME=y |
1088 | # CONFIG_JFFS2_RUBIN is not set | 1130 | # CONFIG_JFFS2_RUBIN is not set |
1089 | # CONFIG_CRAMFS is not set | 1131 | # CONFIG_CRAMFS is not set |
@@ -1092,10 +1134,7 @@ CONFIG_JFFS2_RTIME=y | |||
1092 | # CONFIG_QNX4FS_FS is not set | 1134 | # CONFIG_QNX4FS_FS is not set |
1093 | # CONFIG_SYSV_FS is not set | 1135 | # CONFIG_SYSV_FS is not set |
1094 | # CONFIG_UFS_FS is not set | 1136 | # CONFIG_UFS_FS is not set |
1095 | 1137 | CONFIG_NETWORK_FILESYSTEMS=y | |
1096 | # | ||
1097 | # Network File Systems | ||
1098 | # | ||
1099 | CONFIG_NFS_FS=m | 1138 | CONFIG_NFS_FS=m |
1100 | CONFIG_NFS_V3=y | 1139 | CONFIG_NFS_V3=y |
1101 | # CONFIG_NFS_V3_ACL is not set | 1140 | # CONFIG_NFS_V3_ACL is not set |
@@ -1115,17 +1154,12 @@ CONFIG_SMB_FS=m | |||
1115 | # CONFIG_NCP_FS is not set | 1154 | # CONFIG_NCP_FS is not set |
1116 | # CONFIG_CODA_FS is not set | 1155 | # CONFIG_CODA_FS is not set |
1117 | # CONFIG_AFS_FS is not set | 1156 | # CONFIG_AFS_FS is not set |
1118 | # CONFIG_9P_FS is not set | ||
1119 | 1157 | ||
1120 | # | 1158 | # |
1121 | # Partition Types | 1159 | # Partition Types |
1122 | # | 1160 | # |
1123 | # CONFIG_PARTITION_ADVANCED is not set | 1161 | # CONFIG_PARTITION_ADVANCED is not set |
1124 | CONFIG_MSDOS_PARTITION=y | 1162 | CONFIG_MSDOS_PARTITION=y |
1125 | |||
1126 | # | ||
1127 | # Native Language Support | ||
1128 | # | ||
1129 | CONFIG_NLS=m | 1163 | CONFIG_NLS=m |
1130 | CONFIG_NLS_DEFAULT="iso8859-1" | 1164 | CONFIG_NLS_DEFAULT="iso8859-1" |
1131 | # CONFIG_NLS_CODEPAGE_437 is not set | 1165 | # CONFIG_NLS_CODEPAGE_437 is not set |
@@ -1166,21 +1200,16 @@ CONFIG_NLS_DEFAULT="iso8859-1" | |||
1166 | # CONFIG_NLS_KOI8_R is not set | 1200 | # CONFIG_NLS_KOI8_R is not set |
1167 | # CONFIG_NLS_KOI8_U is not set | 1201 | # CONFIG_NLS_KOI8_U is not set |
1168 | # CONFIG_NLS_UTF8 is not set | 1202 | # CONFIG_NLS_UTF8 is not set |
1169 | |||
1170 | # | ||
1171 | # Distributed Lock Manager | ||
1172 | # | ||
1173 | # CONFIG_DLM is not set | 1203 | # CONFIG_DLM is not set |
1174 | 1204 | CONFIG_INSTRUMENTATION=y | |
1175 | # | ||
1176 | # Profiling support | ||
1177 | # | ||
1178 | # CONFIG_PROFILING is not set | 1205 | # CONFIG_PROFILING is not set |
1206 | # CONFIG_MARKERS is not set | ||
1179 | 1207 | ||
1180 | # | 1208 | # |
1181 | # Kernel hacking | 1209 | # Kernel hacking |
1182 | # | 1210 | # |
1183 | # CONFIG_PRINTK_TIME is not set | 1211 | # CONFIG_PRINTK_TIME is not set |
1212 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1184 | CONFIG_ENABLE_MUST_CHECK=y | 1213 | CONFIG_ENABLE_MUST_CHECK=y |
1185 | # CONFIG_MAGIC_SYSRQ is not set | 1214 | # CONFIG_MAGIC_SYSRQ is not set |
1186 | # CONFIG_UNUSED_SYMBOLS is not set | 1215 | # CONFIG_UNUSED_SYMBOLS is not set |
@@ -1188,6 +1217,7 @@ CONFIG_DEBUG_FS=y | |||
1188 | # CONFIG_HEADERS_CHECK is not set | 1217 | # CONFIG_HEADERS_CHECK is not set |
1189 | # CONFIG_DEBUG_KERNEL is not set | 1218 | # CONFIG_DEBUG_KERNEL is not set |
1190 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1219 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1220 | # CONFIG_SAMPLES is not set | ||
1191 | CONFIG_DEBUG_MMRS=y | 1221 | CONFIG_DEBUG_MMRS=y |
1192 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | 1222 | CONFIG_DEBUG_HUNT_FOR_ZERO=y |
1193 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | 1223 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y |
@@ -1207,11 +1237,8 @@ CONFIG_ACCESS_CHECK=y | |||
1207 | # CONFIG_KEYS is not set | 1237 | # CONFIG_KEYS is not set |
1208 | CONFIG_SECURITY=y | 1238 | CONFIG_SECURITY=y |
1209 | # CONFIG_SECURITY_NETWORK is not set | 1239 | # CONFIG_SECURITY_NETWORK is not set |
1210 | CONFIG_SECURITY_CAPABILITIES=m | 1240 | # CONFIG_SECURITY_CAPABILITIES is not set |
1211 | 1241 | # CONFIG_SECURITY_ROOTPLUG is not set | |
1212 | # | ||
1213 | # Cryptographic options | ||
1214 | # | ||
1215 | # CONFIG_CRYPTO is not set | 1242 | # CONFIG_CRYPTO is not set |
1216 | 1243 | ||
1217 | # | 1244 | # |
@@ -1222,6 +1249,7 @@ CONFIG_CRC_CCITT=m | |||
1222 | # CONFIG_CRC16 is not set | 1249 | # CONFIG_CRC16 is not set |
1223 | # CONFIG_CRC_ITU_T is not set | 1250 | # CONFIG_CRC_ITU_T is not set |
1224 | CONFIG_CRC32=y | 1251 | CONFIG_CRC32=y |
1252 | # CONFIG_CRC7 is not set | ||
1225 | # CONFIG_LIBCRC32C is not set | 1253 | # CONFIG_LIBCRC32C is not set |
1226 | CONFIG_ZLIB_INFLATE=y | 1254 | CONFIG_ZLIB_INFLATE=y |
1227 | CONFIG_ZLIB_DEFLATE=m | 1255 | CONFIG_ZLIB_DEFLATE=m |
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig index 5bfdfb287d13..1ff2ff4b49aa 100644 --- a/arch/blackfin/configs/BF548-EZKIT_defconfig +++ b/arch/blackfin/configs/BF548-EZKIT_defconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.22.16 | 3 | # Linux kernel version: 2.6.24.7 |
4 | # | 4 | # |
5 | # CONFIG_MMU is not set | 5 | # CONFIG_MMU is not set |
6 | # CONFIG_FPU is not set | 6 | # CONFIG_FPU is not set |
@@ -13,35 +13,34 @@ CONFIG_GENERIC_FIND_NEXT_BIT=y | |||
13 | CONFIG_GENERIC_HWEIGHT=y | 13 | CONFIG_GENERIC_HWEIGHT=y |
14 | CONFIG_GENERIC_HARDIRQS=y | 14 | CONFIG_GENERIC_HARDIRQS=y |
15 | CONFIG_GENERIC_IRQ_PROBE=y | 15 | CONFIG_GENERIC_IRQ_PROBE=y |
16 | CONFIG_GENERIC_TIME=y | ||
17 | CONFIG_GENERIC_GPIO=y | 16 | CONFIG_GENERIC_GPIO=y |
18 | CONFIG_FORCE_MAX_ZONEORDER=14 | 17 | CONFIG_FORCE_MAX_ZONEORDER=14 |
19 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 18 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
20 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
21 | 20 | ||
22 | # | 21 | # |
23 | # Code maturity level options | 22 | # General setup |
24 | # | 23 | # |
25 | CONFIG_EXPERIMENTAL=y | 24 | CONFIG_EXPERIMENTAL=y |
26 | CONFIG_BROKEN_ON_SMP=y | 25 | CONFIG_BROKEN_ON_SMP=y |
27 | CONFIG_INIT_ENV_ARG_LIMIT=32 | 26 | CONFIG_INIT_ENV_ARG_LIMIT=32 |
28 | |||
29 | # | ||
30 | # General setup | ||
31 | # | ||
32 | CONFIG_LOCALVERSION="" | 27 | CONFIG_LOCALVERSION="" |
33 | CONFIG_LOCALVERSION_AUTO=y | 28 | CONFIG_LOCALVERSION_AUTO=y |
34 | CONFIG_SYSVIPC=y | 29 | CONFIG_SYSVIPC=y |
35 | # CONFIG_IPC_NS is not set | ||
36 | CONFIG_SYSVIPC_SYSCTL=y | 30 | CONFIG_SYSVIPC_SYSCTL=y |
37 | # CONFIG_POSIX_MQUEUE is not set | 31 | # CONFIG_POSIX_MQUEUE is not set |
38 | # CONFIG_BSD_PROCESS_ACCT is not set | 32 | # CONFIG_BSD_PROCESS_ACCT is not set |
39 | # CONFIG_TASKSTATS is not set | 33 | # CONFIG_TASKSTATS is not set |
40 | # CONFIG_UTS_NS is not set | 34 | # CONFIG_USER_NS is not set |
35 | # CONFIG_PID_NS is not set | ||
41 | # CONFIG_AUDIT is not set | 36 | # CONFIG_AUDIT is not set |
42 | CONFIG_IKCONFIG=y | 37 | CONFIG_IKCONFIG=y |
43 | CONFIG_IKCONFIG_PROC=y | 38 | CONFIG_IKCONFIG_PROC=y |
44 | CONFIG_LOG_BUF_SHIFT=14 | 39 | CONFIG_LOG_BUF_SHIFT=14 |
40 | # CONFIG_CGROUPS is not set | ||
41 | CONFIG_FAIR_GROUP_SCHED=y | ||
42 | CONFIG_FAIR_USER_SCHED=y | ||
43 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
45 | CONFIG_SYSFS_DEPRECATED=y | 44 | CONFIG_SYSFS_DEPRECATED=y |
46 | # CONFIG_RELAY is not set | 45 | # CONFIG_RELAY is not set |
47 | CONFIG_BLK_DEV_INITRD=y | 46 | CONFIG_BLK_DEV_INITRD=y |
@@ -64,32 +63,24 @@ CONFIG_EPOLL=y | |||
64 | CONFIG_SIGNALFD=y | 63 | CONFIG_SIGNALFD=y |
65 | CONFIG_EVENTFD=y | 64 | CONFIG_EVENTFD=y |
66 | CONFIG_VM_EVENT_COUNTERS=y | 65 | CONFIG_VM_EVENT_COUNTERS=y |
67 | CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 | ||
68 | # CONFIG_NP2 is not set | ||
69 | CONFIG_SLAB=y | 66 | CONFIG_SLAB=y |
70 | # CONFIG_SLUB is not set | 67 | # CONFIG_SLUB is not set |
71 | # CONFIG_SLOB is not set | 68 | # CONFIG_SLOB is not set |
69 | CONFIG_SLABINFO=y | ||
72 | CONFIG_RT_MUTEXES=y | 70 | CONFIG_RT_MUTEXES=y |
73 | CONFIG_TINY_SHMEM=y | 71 | CONFIG_TINY_SHMEM=y |
74 | CONFIG_BASE_SMALL=0 | 72 | CONFIG_BASE_SMALL=0 |
75 | |||
76 | # | ||
77 | # Loadable module support | ||
78 | # | ||
79 | CONFIG_MODULES=y | 73 | CONFIG_MODULES=y |
80 | CONFIG_MODULE_UNLOAD=y | 74 | CONFIG_MODULE_UNLOAD=y |
81 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 75 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
82 | # CONFIG_MODVERSIONS is not set | 76 | # CONFIG_MODVERSIONS is not set |
83 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 77 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
84 | CONFIG_KMOD=y | 78 | CONFIG_KMOD=y |
85 | |||
86 | # | ||
87 | # Block layer | ||
88 | # | ||
89 | CONFIG_BLOCK=y | 79 | CONFIG_BLOCK=y |
90 | # CONFIG_LBD is not set | 80 | # CONFIG_LBD is not set |
91 | # CONFIG_BLK_DEV_IO_TRACE is not set | 81 | # CONFIG_BLK_DEV_IO_TRACE is not set |
92 | # CONFIG_LSF is not set | 82 | # CONFIG_LSF is not set |
83 | # CONFIG_BLK_DEV_BSG is not set | ||
93 | 84 | ||
94 | # | 85 | # |
95 | # IO Schedulers | 86 | # IO Schedulers |
@@ -141,7 +132,6 @@ CONFIG_BF_REV_0_0=y | |||
141 | # CONFIG_BF_REV_ANY is not set | 132 | # CONFIG_BF_REV_ANY is not set |
142 | # CONFIG_BF_REV_NONE is not set | 133 | # CONFIG_BF_REV_NONE is not set |
143 | CONFIG_BF54x=y | 134 | CONFIG_BF54x=y |
144 | CONFIG_BFIN_SINGLE_CORE=y | ||
145 | CONFIG_IRQ_PLL_WAKEUP=7 | 135 | CONFIG_IRQ_PLL_WAKEUP=7 |
146 | CONFIG_IRQ_RTC=8 | 136 | CONFIG_IRQ_RTC=8 |
147 | CONFIG_IRQ_SPORT0_RX=9 | 137 | CONFIG_IRQ_SPORT0_RX=9 |
@@ -169,6 +159,7 @@ CONFIG_IRQ_TIMER8=11 | |||
169 | CONFIG_IRQ_TIMER9=11 | 159 | CONFIG_IRQ_TIMER9=11 |
170 | CONFIG_IRQ_TIMER10=11 | 160 | CONFIG_IRQ_TIMER10=11 |
171 | CONFIG_BFIN548_EZKIT=y | 161 | CONFIG_BFIN548_EZKIT=y |
162 | # CONFIG_BFIN548_BLUETECHNIX_CM is not set | ||
172 | 163 | ||
173 | # | 164 | # |
174 | # BF548 Specific Configuration | 165 | # BF548 Specific Configuration |
@@ -262,12 +253,14 @@ CONFIG_PINT3_ASSIGN=0x02020303 | |||
262 | # Board customizations | 253 | # Board customizations |
263 | # | 254 | # |
264 | # CONFIG_CMDLINE_BOOL is not set | 255 | # CONFIG_CMDLINE_BOOL is not set |
256 | CONFIG_BOOT_LOAD=0x1000 | ||
265 | 257 | ||
266 | # | 258 | # |
267 | # Clock/PLL Setup | 259 | # Clock/PLL Setup |
268 | # | 260 | # |
269 | CONFIG_CLKIN_HZ=25000000 | 261 | CONFIG_CLKIN_HZ=25000000 |
270 | # CONFIG_BFIN_KERNEL_CLOCK is not set | 262 | # CONFIG_BFIN_KERNEL_CLOCK is not set |
263 | CONFIG_MAX_MEM_SIZE=512 | ||
271 | CONFIG_MAX_VCO_HZ=600000000 | 264 | CONFIG_MAX_VCO_HZ=600000000 |
272 | CONFIG_MIN_VCO_HZ=50000000 | 265 | CONFIG_MIN_VCO_HZ=50000000 |
273 | CONFIG_MAX_SCLK_HZ=133333333 | 266 | CONFIG_MAX_SCLK_HZ=133333333 |
@@ -281,14 +274,17 @@ CONFIG_HZ_250=y | |||
281 | # CONFIG_HZ_300 is not set | 274 | # CONFIG_HZ_300 is not set |
282 | # CONFIG_HZ_1000 is not set | 275 | # CONFIG_HZ_1000 is not set |
283 | CONFIG_HZ=250 | 276 | CONFIG_HZ=250 |
277 | CONFIG_GENERIC_TIME=y | ||
278 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
279 | # CONFIG_CYCLES_CLOCKSOURCE is not set | ||
280 | # CONFIG_TICK_ONESHOT is not set | ||
281 | # CONFIG_NO_HZ is not set | ||
282 | # CONFIG_HIGH_RES_TIMERS is not set | ||
283 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
284 | 284 | ||
285 | # | 285 | # |
286 | # Memory Setup | 286 | # Misc |
287 | # | 287 | # |
288 | CONFIG_MAX_MEM_SIZE=512 | ||
289 | # CONFIG_MEM_MT46V32M16_6T is not set | ||
290 | CONFIG_MEM_MT46V32M16_5B=y | ||
291 | CONFIG_BOOT_LOAD=0x1000 | ||
292 | CONFIG_BFIN_SCRATCH_REG_RETN=y | 288 | CONFIG_BFIN_SCRATCH_REG_RETN=y |
293 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set | 289 | # CONFIG_BFIN_SCRATCH_REG_RETE is not set |
294 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set | 290 | # CONFIG_BFIN_SCRATCH_REG_CYCLES is not set |
@@ -324,12 +320,14 @@ CONFIG_FLATMEM_MANUAL=y | |||
324 | CONFIG_FLATMEM=y | 320 | CONFIG_FLATMEM=y |
325 | CONFIG_FLAT_NODE_MEM_MAP=y | 321 | CONFIG_FLAT_NODE_MEM_MAP=y |
326 | # CONFIG_SPARSEMEM_STATIC is not set | 322 | # CONFIG_SPARSEMEM_STATIC is not set |
323 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
327 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 324 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
328 | # CONFIG_RESOURCES_64BIT is not set | 325 | # CONFIG_RESOURCES_64BIT is not set |
329 | CONFIG_ZONE_DMA_FLAG=1 | 326 | CONFIG_ZONE_DMA_FLAG=1 |
330 | CONFIG_LARGE_ALLOCS=y | 327 | CONFIG_VIRT_TO_BUS=y |
331 | # CONFIG_BFIN_GPTIMERS is not set | 328 | # CONFIG_BFIN_GPTIMERS is not set |
332 | CONFIG_BFIN_DMA_5XX=y | 329 | CONFIG_BFIN_DMA_5XX=y |
330 | # CONFIG_DMA_UNCACHED_4M is not set | ||
333 | CONFIG_DMA_UNCACHED_2M=y | 331 | CONFIG_DMA_UNCACHED_2M=y |
334 | # CONFIG_DMA_UNCACHED_1M is not set | 332 | # CONFIG_DMA_UNCACHED_1M is not set |
335 | # CONFIG_DMA_UNCACHED_NONE is not set | 333 | # CONFIG_DMA_UNCACHED_NONE is not set |
@@ -377,10 +375,6 @@ CONFIG_EBIU_FCTLVAL=0x6 | |||
377 | # | 375 | # |
378 | # CONFIG_PCI is not set | 376 | # CONFIG_PCI is not set |
379 | # CONFIG_ARCH_SUPPORTS_MSI is not set | 377 | # CONFIG_ARCH_SUPPORTS_MSI is not set |
380 | |||
381 | # | ||
382 | # PCCARD (PCMCIA/CardBus) support | ||
383 | # | ||
384 | # CONFIG_PCCARD is not set | 378 | # CONFIG_PCCARD is not set |
385 | 379 | ||
386 | # | 380 | # |
@@ -396,6 +390,7 @@ CONFIG_BINFMT_ZFLAT=y | |||
396 | # Power management options | 390 | # Power management options |
397 | # | 391 | # |
398 | # CONFIG_PM is not set | 392 | # CONFIG_PM is not set |
393 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
399 | # CONFIG_PM_WAKEUP_BY_GPIO is not set | 394 | # CONFIG_PM_WAKEUP_BY_GPIO is not set |
400 | 395 | ||
401 | # | 396 | # |
@@ -439,6 +434,7 @@ CONFIG_SYN_COOKIES=y | |||
439 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 434 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
440 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 435 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
441 | CONFIG_INET_XFRM_MODE_BEET=y | 436 | CONFIG_INET_XFRM_MODE_BEET=y |
437 | # CONFIG_INET_LRO is not set | ||
442 | CONFIG_INET_DIAG=y | 438 | CONFIG_INET_DIAG=y |
443 | CONFIG_INET_TCP_DIAG=y | 439 | CONFIG_INET_TCP_DIAG=y |
444 | # CONFIG_TCP_CONG_ADVANCED is not set | 440 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -465,10 +461,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
465 | # CONFIG_LAPB is not set | 461 | # CONFIG_LAPB is not set |
466 | # CONFIG_ECONET is not set | 462 | # CONFIG_ECONET is not set |
467 | # CONFIG_WAN_ROUTER is not set | 463 | # CONFIG_WAN_ROUTER is not set |
468 | |||
469 | # | ||
470 | # QoS and/or fair queueing | ||
471 | # | ||
472 | # CONFIG_NET_SCHED is not set | 464 | # CONFIG_NET_SCHED is not set |
473 | 465 | ||
474 | # | 466 | # |
@@ -488,6 +480,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
488 | # CONFIG_MAC80211 is not set | 480 | # CONFIG_MAC80211 is not set |
489 | # CONFIG_IEEE80211 is not set | 481 | # CONFIG_IEEE80211 is not set |
490 | # CONFIG_RFKILL is not set | 482 | # CONFIG_RFKILL is not set |
483 | # CONFIG_NET_9P is not set | ||
491 | 484 | ||
492 | # | 485 | # |
493 | # Device Drivers | 486 | # Device Drivers |
@@ -496,14 +489,11 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
496 | # | 489 | # |
497 | # Generic Driver Options | 490 | # Generic Driver Options |
498 | # | 491 | # |
492 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
499 | CONFIG_STANDALONE=y | 493 | CONFIG_STANDALONE=y |
500 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 494 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
501 | # CONFIG_FW_LOADER is not set | 495 | # CONFIG_FW_LOADER is not set |
502 | # CONFIG_SYS_HYPERVISOR is not set | 496 | # CONFIG_SYS_HYPERVISOR is not set |
503 | |||
504 | # | ||
505 | # Connector - unified userspace <-> kernelspace linker | ||
506 | # | ||
507 | # CONFIG_CONNECTOR is not set | 497 | # CONFIG_CONNECTOR is not set |
508 | CONFIG_MTD=y | 498 | CONFIG_MTD=y |
509 | # CONFIG_MTD_DEBUG is not set | 499 | # CONFIG_MTD_DEBUG is not set |
@@ -523,6 +513,7 @@ CONFIG_MTD_BLOCK=y | |||
523 | # CONFIG_INFTL is not set | 513 | # CONFIG_INFTL is not set |
524 | # CONFIG_RFD_FTL is not set | 514 | # CONFIG_RFD_FTL is not set |
525 | # CONFIG_SSFDC is not set | 515 | # CONFIG_SSFDC is not set |
516 | # CONFIG_MTD_OOPS is not set | ||
526 | 517 | ||
527 | # | 518 | # |
528 | # RAM/ROM/Flash chip drivers | 519 | # RAM/ROM/Flash chip drivers |
@@ -587,39 +578,27 @@ CONFIG_MTD_NAND_BF5XX_HWECC=y | |||
587 | # CONFIG_MTD_NAND_DISKONCHIP is not set | 578 | # CONFIG_MTD_NAND_DISKONCHIP is not set |
588 | # CONFIG_MTD_NAND_NANDSIM is not set | 579 | # CONFIG_MTD_NAND_NANDSIM is not set |
589 | # CONFIG_MTD_NAND_PLATFORM is not set | 580 | # CONFIG_MTD_NAND_PLATFORM is not set |
581 | # CONFIG_MTD_ALAUDA is not set | ||
590 | # CONFIG_MTD_ONENAND is not set | 582 | # CONFIG_MTD_ONENAND is not set |
591 | 583 | ||
592 | # | 584 | # |
593 | # UBI - Unsorted block images | 585 | # UBI - Unsorted block images |
594 | # | 586 | # |
595 | # CONFIG_MTD_UBI is not set | 587 | # CONFIG_MTD_UBI is not set |
596 | |||
597 | # | ||
598 | # Parallel port support | ||
599 | # | ||
600 | # CONFIG_PARPORT is not set | 588 | # CONFIG_PARPORT is not set |
601 | 589 | CONFIG_BLK_DEV=y | |
602 | # | ||
603 | # Plug and Play support | ||
604 | # | ||
605 | # CONFIG_PNPACPI is not set | ||
606 | |||
607 | # | ||
608 | # Block devices | ||
609 | # | ||
610 | # CONFIG_BLK_DEV_COW_COMMON is not set | 590 | # CONFIG_BLK_DEV_COW_COMMON is not set |
611 | # CONFIG_BLK_DEV_LOOP is not set | 591 | # CONFIG_BLK_DEV_LOOP is not set |
612 | # CONFIG_BLK_DEV_NBD is not set | 592 | # CONFIG_BLK_DEV_NBD is not set |
593 | # CONFIG_BLK_DEV_UB is not set | ||
613 | CONFIG_BLK_DEV_RAM=y | 594 | CONFIG_BLK_DEV_RAM=y |
614 | CONFIG_BLK_DEV_RAM_COUNT=16 | 595 | CONFIG_BLK_DEV_RAM_COUNT=16 |
615 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 596 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
616 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 597 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 |
617 | # CONFIG_CDROM_PKTCDVD is not set | 598 | # CONFIG_CDROM_PKTCDVD is not set |
618 | # CONFIG_ATA_OVER_ETH is not set | 599 | # CONFIG_ATA_OVER_ETH is not set |
619 | 600 | CONFIG_MISC_DEVICES=y | |
620 | # | 601 | # CONFIG_EEPROM_93CX6 is not set |
621 | # Misc devices | ||
622 | # | ||
623 | # CONFIG_IDE is not set | 602 | # CONFIG_IDE is not set |
624 | 603 | ||
625 | # | 604 | # |
@@ -627,6 +606,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | |||
627 | # | 606 | # |
628 | # CONFIG_RAID_ATTRS is not set | 607 | # CONFIG_RAID_ATTRS is not set |
629 | CONFIG_SCSI=y | 608 | CONFIG_SCSI=y |
609 | CONFIG_SCSI_DMA=y | ||
630 | # CONFIG_SCSI_TGT is not set | 610 | # CONFIG_SCSI_TGT is not set |
631 | # CONFIG_SCSI_NETLINK is not set | 611 | # CONFIG_SCSI_NETLINK is not set |
632 | CONFIG_SCSI_PROC_FS=y | 612 | CONFIG_SCSI_PROC_FS=y |
@@ -657,43 +637,35 @@ CONFIG_SCSI_WAIT_SCAN=m | |||
657 | # CONFIG_SCSI_SPI_ATTRS is not set | 637 | # CONFIG_SCSI_SPI_ATTRS is not set |
658 | # CONFIG_SCSI_FC_ATTRS is not set | 638 | # CONFIG_SCSI_FC_ATTRS is not set |
659 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 639 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
660 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
661 | # CONFIG_SCSI_SAS_LIBSAS is not set | 640 | # CONFIG_SCSI_SAS_LIBSAS is not set |
662 | 641 | # CONFIG_SCSI_SRP_ATTRS is not set | |
663 | # | 642 | CONFIG_SCSI_LOWLEVEL=y |
664 | # SCSI low-level drivers | ||
665 | # | ||
666 | # CONFIG_ISCSI_TCP is not set | 643 | # CONFIG_ISCSI_TCP is not set |
667 | # CONFIG_SCSI_DEBUG is not set | 644 | # CONFIG_SCSI_DEBUG is not set |
668 | CONFIG_ATA=y | 645 | CONFIG_ATA=y |
669 | # CONFIG_ATA_NONSTANDARD is not set | 646 | # CONFIG_ATA_NONSTANDARD is not set |
670 | # CONFIG_PATA_PLATFORM is not set | 647 | # CONFIG_PATA_PLATFORM is not set |
671 | CONFIG_PATA_BF54X=y | 648 | CONFIG_PATA_BF54X=y |
672 | CONFIG_PATA_BF54X_DMA=y | ||
673 | |||
674 | # | ||
675 | # Multi-device support (RAID and LVM) | ||
676 | # | ||
677 | # CONFIG_MD is not set | 649 | # CONFIG_MD is not set |
678 | |||
679 | # | ||
680 | # Network device support | ||
681 | # | ||
682 | CONFIG_NETDEVICES=y | 650 | CONFIG_NETDEVICES=y |
651 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
683 | # CONFIG_DUMMY is not set | 652 | # CONFIG_DUMMY is not set |
684 | # CONFIG_BONDING is not set | 653 | # CONFIG_BONDING is not set |
654 | # CONFIG_MACVLAN is not set | ||
685 | # CONFIG_EQUALIZER is not set | 655 | # CONFIG_EQUALIZER is not set |
686 | # CONFIG_TUN is not set | 656 | # CONFIG_TUN is not set |
657 | # CONFIG_VETH is not set | ||
687 | # CONFIG_PHYLIB is not set | 658 | # CONFIG_PHYLIB is not set |
688 | |||
689 | # | ||
690 | # Ethernet (10 or 100Mbit) | ||
691 | # | ||
692 | CONFIG_NET_ETHERNET=y | 659 | CONFIG_NET_ETHERNET=y |
693 | CONFIG_MII=y | 660 | CONFIG_MII=y |
694 | # CONFIG_SMC91X is not set | 661 | # CONFIG_SMC91X is not set |
695 | CONFIG_SMSC911X=y | 662 | CONFIG_SMSC911X=y |
696 | # CONFIG_DM9000 is not set | 663 | # CONFIG_DM9000 is not set |
664 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
665 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
666 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
667 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
668 | # CONFIG_B44 is not set | ||
697 | CONFIG_NETDEV_1000=y | 669 | CONFIG_NETDEV_1000=y |
698 | # CONFIG_AX88180 is not set | 670 | # CONFIG_AX88180 is not set |
699 | CONFIG_NETDEV_10000=y | 671 | CONFIG_NETDEV_10000=y |
@@ -703,6 +675,15 @@ CONFIG_NETDEV_10000=y | |||
703 | # | 675 | # |
704 | # CONFIG_WLAN_PRE80211 is not set | 676 | # CONFIG_WLAN_PRE80211 is not set |
705 | # CONFIG_WLAN_80211 is not set | 677 | # CONFIG_WLAN_80211 is not set |
678 | |||
679 | # | ||
680 | # USB Network Adapters | ||
681 | # | ||
682 | # CONFIG_USB_CATC is not set | ||
683 | # CONFIG_USB_KAWETH is not set | ||
684 | # CONFIG_USB_PEGASUS is not set | ||
685 | # CONFIG_USB_RTL8150 is not set | ||
686 | # CONFIG_USB_USBNET is not set | ||
706 | # CONFIG_WAN is not set | 687 | # CONFIG_WAN is not set |
707 | # CONFIG_PPP is not set | 688 | # CONFIG_PPP is not set |
708 | # CONFIG_SLIP is not set | 689 | # CONFIG_SLIP is not set |
@@ -710,15 +691,7 @@ CONFIG_NETDEV_10000=y | |||
710 | # CONFIG_NETCONSOLE is not set | 691 | # CONFIG_NETCONSOLE is not set |
711 | # CONFIG_NETPOLL is not set | 692 | # CONFIG_NETPOLL is not set |
712 | # CONFIG_NET_POLL_CONTROLLER is not set | 693 | # CONFIG_NET_POLL_CONTROLLER is not set |
713 | |||
714 | # | ||
715 | # ISDN subsystem | ||
716 | # | ||
717 | # CONFIG_ISDN is not set | 694 | # CONFIG_ISDN is not set |
718 | |||
719 | # | ||
720 | # Telephony Support | ||
721 | # | ||
722 | # CONFIG_PHONE is not set | 695 | # CONFIG_PHONE is not set |
723 | 696 | ||
724 | # | 697 | # |
@@ -733,9 +706,6 @@ CONFIG_INPUT=y | |||
733 | # | 706 | # |
734 | # CONFIG_INPUT_MOUSEDEV is not set | 707 | # CONFIG_INPUT_MOUSEDEV is not set |
735 | # CONFIG_INPUT_JOYDEV is not set | 708 | # CONFIG_INPUT_JOYDEV is not set |
736 | CONFIG_INPUT_TSDEV=m | ||
737 | CONFIG_INPUT_TSDEV_SCREEN_X=240 | ||
738 | CONFIG_INPUT_TSDEV_SCREEN_Y=320 | ||
739 | CONFIG_INPUT_EVDEV=m | 709 | CONFIG_INPUT_EVDEV=m |
740 | CONFIG_INPUT_EVBUG=m | 710 | CONFIG_INPUT_EVBUG=m |
741 | 711 | ||
@@ -758,6 +728,7 @@ CONFIG_KEYBOARD_BFIN=y | |||
758 | CONFIG_INPUT_TOUCHSCREEN=y | 728 | CONFIG_INPUT_TOUCHSCREEN=y |
759 | # CONFIG_TOUCHSCREEN_ADS7846 is not set | 729 | # CONFIG_TOUCHSCREEN_ADS7846 is not set |
760 | CONFIG_TOUCHSCREEN_AD7877=m | 730 | CONFIG_TOUCHSCREEN_AD7877=m |
731 | # CONFIG_TOUCHSCREEN_FUJITSU is not set | ||
761 | # CONFIG_TOUCHSCREEN_GUNZE is not set | 732 | # CONFIG_TOUCHSCREEN_GUNZE is not set |
762 | # CONFIG_TOUCHSCREEN_ELO is not set | 733 | # CONFIG_TOUCHSCREEN_ELO is not set |
763 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | 734 | # CONFIG_TOUCHSCREEN_MTOUCH is not set |
@@ -787,7 +758,6 @@ CONFIG_INPUT_MISC=y | |||
787 | # | 758 | # |
788 | # CONFIG_AD9960 is not set | 759 | # CONFIG_AD9960 is not set |
789 | # CONFIG_SPI_ADC_BF533 is not set | 760 | # CONFIG_SPI_ADC_BF533 is not set |
790 | # CONFIG_BF5xx_PFLAGS is not set | ||
791 | # CONFIG_BF5xx_PPIFCD is not set | 761 | # CONFIG_BF5xx_PPIFCD is not set |
792 | # CONFIG_BFIN_SIMPLE_TIMER is not set | 762 | # CONFIG_BFIN_SIMPLE_TIMER is not set |
793 | # CONFIG_BF5xx_PPI is not set | 763 | # CONFIG_BF5xx_PPI is not set |
@@ -796,7 +766,7 @@ CONFIG_BFIN_OTP=y | |||
796 | # CONFIG_BFIN_SPORT is not set | 766 | # CONFIG_BFIN_SPORT is not set |
797 | # CONFIG_BFIN_TIMER_LATENCY is not set | 767 | # CONFIG_BFIN_TIMER_LATENCY is not set |
798 | # CONFIG_TWI_LCD is not set | 768 | # CONFIG_TWI_LCD is not set |
799 | # CONFIG_AD5304 is not set | 769 | # CONFIG_SIMPLE_GPIO is not set |
800 | CONFIG_VT=y | 770 | CONFIG_VT=y |
801 | CONFIG_VT_CONSOLE=y | 771 | CONFIG_VT_CONSOLE=y |
802 | CONFIG_HW_CONSOLE=y | 772 | CONFIG_HW_CONSOLE=y |
@@ -830,27 +800,11 @@ CONFIG_UNIX98_PTYS=y | |||
830 | # CAN, the car bus and industrial fieldbus | 800 | # CAN, the car bus and industrial fieldbus |
831 | # | 801 | # |
832 | # CONFIG_CAN4LINUX is not set | 802 | # CONFIG_CAN4LINUX is not set |
833 | |||
834 | # | ||
835 | # IPMI | ||
836 | # | ||
837 | # CONFIG_IPMI_HANDLER is not set | 803 | # CONFIG_IPMI_HANDLER is not set |
838 | CONFIG_WATCHDOG=y | ||
839 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
840 | |||
841 | # | ||
842 | # Watchdog Device Drivers | ||
843 | # | ||
844 | # CONFIG_SOFT_WATCHDOG is not set | ||
845 | CONFIG_BFIN_WDT=y | ||
846 | CONFIG_HW_RANDOM=y | 804 | CONFIG_HW_RANDOM=y |
847 | # CONFIG_GEN_RTC is not set | 805 | # CONFIG_GEN_RTC is not set |
848 | # CONFIG_R3964 is not set | 806 | # CONFIG_R3964 is not set |
849 | # CONFIG_RAW_DRIVER is not set | 807 | # CONFIG_RAW_DRIVER is not set |
850 | |||
851 | # | ||
852 | # TPM devices | ||
853 | # | ||
854 | # CONFIG_TCG_TPM is not set | 808 | # CONFIG_TCG_TPM is not set |
855 | CONFIG_I2C=y | 809 | CONFIG_I2C=y |
856 | CONFIG_I2C_BOARDINFO=y | 810 | CONFIG_I2C_BOARDINFO=y |
@@ -872,21 +826,24 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50 | |||
872 | # CONFIG_I2C_OCORES is not set | 826 | # CONFIG_I2C_OCORES is not set |
873 | # CONFIG_I2C_PARPORT_LIGHT is not set | 827 | # CONFIG_I2C_PARPORT_LIGHT is not set |
874 | # CONFIG_I2C_SIMTEC is not set | 828 | # CONFIG_I2C_SIMTEC is not set |
829 | # CONFIG_I2C_TAOS_EVM is not set | ||
875 | # CONFIG_I2C_STUB is not set | 830 | # CONFIG_I2C_STUB is not set |
831 | # CONFIG_I2C_TINY_USB is not set | ||
876 | 832 | ||
877 | # | 833 | # |
878 | # Miscellaneous I2C Chip support | 834 | # Miscellaneous I2C Chip support |
879 | # | 835 | # |
880 | # CONFIG_SENSORS_DS1337 is not set | 836 | # CONFIG_SENSORS_DS1337 is not set |
881 | # CONFIG_SENSORS_DS1374 is not set | 837 | # CONFIG_SENSORS_DS1374 is not set |
838 | # CONFIG_DS1682 is not set | ||
882 | # CONFIG_SENSORS_AD5252 is not set | 839 | # CONFIG_SENSORS_AD5252 is not set |
883 | # CONFIG_SENSORS_EEPROM is not set | 840 | # CONFIG_SENSORS_EEPROM is not set |
884 | # CONFIG_SENSORS_PCF8574 is not set | 841 | # CONFIG_SENSORS_PCF8574 is not set |
885 | # CONFIG_SENSORS_PCF8575 is not set | 842 | # CONFIG_SENSORS_PCF8575 is not set |
886 | # CONFIG_SENSORS_PCA9543 is not set | ||
887 | # CONFIG_SENSORS_PCA9539 is not set | 843 | # CONFIG_SENSORS_PCA9539 is not set |
888 | # CONFIG_SENSORS_PCF8591 is not set | 844 | # CONFIG_SENSORS_PCF8591 is not set |
889 | # CONFIG_SENSORS_MAX6875 is not set | 845 | # CONFIG_SENSORS_MAX6875 is not set |
846 | # CONFIG_SENSORS_TSL2550 is not set | ||
890 | # CONFIG_I2C_DEBUG_CORE is not set | 847 | # CONFIG_I2C_DEBUG_CORE is not set |
891 | # CONFIG_I2C_DEBUG_ALGO is not set | 848 | # CONFIG_I2C_DEBUG_ALGO is not set |
892 | # CONFIG_I2C_DEBUG_BUS is not set | 849 | # CONFIG_I2C_DEBUG_BUS is not set |
@@ -909,14 +866,11 @@ CONFIG_SPI_BFIN=y | |||
909 | # | 866 | # |
910 | # CONFIG_SPI_AT25 is not set | 867 | # CONFIG_SPI_AT25 is not set |
911 | # CONFIG_SPI_SPIDEV is not set | 868 | # CONFIG_SPI_SPIDEV is not set |
912 | 869 | # CONFIG_SPI_TLE62X0 is not set | |
913 | # | ||
914 | # Dallas's 1-wire bus | ||
915 | # | ||
916 | # CONFIG_W1 is not set | 870 | # CONFIG_W1 is not set |
871 | # CONFIG_POWER_SUPPLY is not set | ||
917 | CONFIG_HWMON=y | 872 | CONFIG_HWMON=y |
918 | # CONFIG_HWMON_VID is not set | 873 | # CONFIG_HWMON_VID is not set |
919 | # CONFIG_SENSORS_ABITUGURU is not set | ||
920 | # CONFIG_SENSORS_AD7418 is not set | 874 | # CONFIG_SENSORS_AD7418 is not set |
921 | # CONFIG_SENSORS_ADM1021 is not set | 875 | # CONFIG_SENSORS_ADM1021 is not set |
922 | # CONFIG_SENSORS_ADM1025 is not set | 876 | # CONFIG_SENSORS_ADM1025 is not set |
@@ -924,12 +878,12 @@ CONFIG_HWMON=y | |||
924 | # CONFIG_SENSORS_ADM1029 is not set | 878 | # CONFIG_SENSORS_ADM1029 is not set |
925 | # CONFIG_SENSORS_ADM1031 is not set | 879 | # CONFIG_SENSORS_ADM1031 is not set |
926 | # CONFIG_SENSORS_ADM9240 is not set | 880 | # CONFIG_SENSORS_ADM9240 is not set |
927 | # CONFIG_SENSORS_ASB100 is not set | 881 | # CONFIG_SENSORS_ADT7470 is not set |
928 | # CONFIG_SENSORS_ATXP1 is not set | 882 | # CONFIG_SENSORS_ATXP1 is not set |
929 | # CONFIG_SENSORS_DS1621 is not set | 883 | # CONFIG_SENSORS_DS1621 is not set |
930 | # CONFIG_SENSORS_F71805F is not set | 884 | # CONFIG_SENSORS_F71805F is not set |
931 | # CONFIG_SENSORS_FSCHER is not set | 885 | # CONFIG_SENSORS_F71882FG is not set |
932 | # CONFIG_SENSORS_FSCPOS is not set | 886 | # CONFIG_SENSORS_F75375S is not set |
933 | # CONFIG_SENSORS_GL518SM is not set | 887 | # CONFIG_SENSORS_GL518SM is not set |
934 | # CONFIG_SENSORS_GL520SM is not set | 888 | # CONFIG_SENSORS_GL520SM is not set |
935 | # CONFIG_SENSORS_IT87 is not set | 889 | # CONFIG_SENSORS_IT87 is not set |
@@ -944,13 +898,16 @@ CONFIG_HWMON=y | |||
944 | # CONFIG_SENSORS_LM87 is not set | 898 | # CONFIG_SENSORS_LM87 is not set |
945 | # CONFIG_SENSORS_LM90 is not set | 899 | # CONFIG_SENSORS_LM90 is not set |
946 | # CONFIG_SENSORS_LM92 is not set | 900 | # CONFIG_SENSORS_LM92 is not set |
901 | # CONFIG_SENSORS_LM93 is not set | ||
947 | # CONFIG_SENSORS_MAX1619 is not set | 902 | # CONFIG_SENSORS_MAX1619 is not set |
948 | # CONFIG_SENSORS_MAX6650 is not set | 903 | # CONFIG_SENSORS_MAX6650 is not set |
949 | # CONFIG_SENSORS_PC87360 is not set | 904 | # CONFIG_SENSORS_PC87360 is not set |
950 | # CONFIG_SENSORS_PC87427 is not set | 905 | # CONFIG_SENSORS_PC87427 is not set |
906 | # CONFIG_SENSORS_DME1737 is not set | ||
951 | # CONFIG_SENSORS_SMSC47M1 is not set | 907 | # CONFIG_SENSORS_SMSC47M1 is not set |
952 | # CONFIG_SENSORS_SMSC47M192 is not set | 908 | # CONFIG_SENSORS_SMSC47M192 is not set |
953 | # CONFIG_SENSORS_SMSC47B397 is not set | 909 | # CONFIG_SENSORS_SMSC47B397 is not set |
910 | # CONFIG_SENSORS_THMC50 is not set | ||
954 | # CONFIG_SENSORS_VT1211 is not set | 911 | # CONFIG_SENSORS_VT1211 is not set |
955 | # CONFIG_SENSORS_W83781D is not set | 912 | # CONFIG_SENSORS_W83781D is not set |
956 | # CONFIG_SENSORS_W83791D is not set | 913 | # CONFIG_SENSORS_W83791D is not set |
@@ -960,6 +917,25 @@ CONFIG_HWMON=y | |||
960 | # CONFIG_SENSORS_W83627HF is not set | 917 | # CONFIG_SENSORS_W83627HF is not set |
961 | # CONFIG_SENSORS_W83627EHF is not set | 918 | # CONFIG_SENSORS_W83627EHF is not set |
962 | # CONFIG_HWMON_DEBUG_CHIP is not set | 919 | # CONFIG_HWMON_DEBUG_CHIP is not set |
920 | CONFIG_WATCHDOG=y | ||
921 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
922 | |||
923 | # | ||
924 | # Watchdog Device Drivers | ||
925 | # | ||
926 | # CONFIG_SOFT_WATCHDOG is not set | ||
927 | CONFIG_BFIN_WDT=y | ||
928 | |||
929 | # | ||
930 | # USB-based Watchdog Cards | ||
931 | # | ||
932 | # CONFIG_USBPCWATCHDOG is not set | ||
933 | |||
934 | # | ||
935 | # Sonics Silicon Backplane | ||
936 | # | ||
937 | CONFIG_SSB_POSSIBLE=y | ||
938 | # CONFIG_SSB is not set | ||
963 | 939 | ||
964 | # | 940 | # |
965 | # Multifunction device drivers | 941 | # Multifunction device drivers |
@@ -972,23 +948,20 @@ CONFIG_HWMON=y | |||
972 | # CONFIG_VIDEO_DEV is not set | 948 | # CONFIG_VIDEO_DEV is not set |
973 | # CONFIG_DVB_CORE is not set | 949 | # CONFIG_DVB_CORE is not set |
974 | CONFIG_DAB=y | 950 | CONFIG_DAB=y |
951 | # CONFIG_USB_DABUSB is not set | ||
975 | 952 | ||
976 | # | 953 | # |
977 | # Graphics support | 954 | # Graphics support |
978 | # | 955 | # |
979 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
980 | |||
981 | # | ||
982 | # Display device support | ||
983 | # | ||
984 | # CONFIG_DISPLAY_SUPPORT is not set | ||
985 | # CONFIG_VGASTATE is not set | 956 | # CONFIG_VGASTATE is not set |
957 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
986 | CONFIG_FB=y | 958 | CONFIG_FB=y |
987 | CONFIG_FIRMWARE_EDID=y | 959 | CONFIG_FIRMWARE_EDID=y |
988 | # CONFIG_FB_DDC is not set | 960 | # CONFIG_FB_DDC is not set |
989 | CONFIG_FB_CFB_FILLRECT=y | 961 | CONFIG_FB_CFB_FILLRECT=y |
990 | CONFIG_FB_CFB_COPYAREA=y | 962 | CONFIG_FB_CFB_COPYAREA=y |
991 | CONFIG_FB_CFB_IMAGEBLIT=y | 963 | CONFIG_FB_CFB_IMAGEBLIT=y |
964 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
992 | # CONFIG_FB_SYS_FILLRECT is not set | 965 | # CONFIG_FB_SYS_FILLRECT is not set |
993 | # CONFIG_FB_SYS_COPYAREA is not set | 966 | # CONFIG_FB_SYS_COPYAREA is not set |
994 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 967 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
@@ -1003,18 +976,24 @@ CONFIG_FB_DEFERRED_IO=y | |||
1003 | # | 976 | # |
1004 | # Frame buffer hardware drivers | 977 | # Frame buffer hardware drivers |
1005 | # | 978 | # |
1006 | # CONFIG_FB_BFIN_7171 is not set | ||
1007 | # CONFIG_FB_BFIN_7393 is not set | ||
1008 | CONFIG_FB_BF54X_LQ043=y | 979 | CONFIG_FB_BF54X_LQ043=y |
1009 | # CONFIG_FB_BFIN_T350MCQB is not set | 980 | # CONFIG_FB_BFIN_T350MCQB is not set |
981 | # CONFIG_FB_BFIN_7393 is not set | ||
1010 | # CONFIG_FB_S1D13XXX is not set | 982 | # CONFIG_FB_S1D13XXX is not set |
1011 | # CONFIG_FB_VIRTUAL is not set | 983 | # CONFIG_FB_VIRTUAL is not set |
984 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
985 | |||
986 | # | ||
987 | # Display device support | ||
988 | # | ||
989 | # CONFIG_DISPLAY_SUPPORT is not set | ||
1012 | 990 | ||
1013 | # | 991 | # |
1014 | # Console display driver support | 992 | # Console display driver support |
1015 | # | 993 | # |
1016 | CONFIG_DUMMY_CONSOLE=y | 994 | CONFIG_DUMMY_CONSOLE=y |
1017 | CONFIG_FRAMEBUFFER_CONSOLE=y | 995 | CONFIG_FRAMEBUFFER_CONSOLE=y |
996 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
1018 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | 997 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set |
1019 | CONFIG_FONTS=y | 998 | CONFIG_FONTS=y |
1020 | # CONFIG_FONT_8x8 is not set | 999 | # CONFIG_FONT_8x8 is not set |
@@ -1065,10 +1044,21 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1065 | # CONFIG_SND_MPU401 is not set | 1044 | # CONFIG_SND_MPU401 is not set |
1066 | 1045 | ||
1067 | # | 1046 | # |
1047 | # SPI devices | ||
1048 | # | ||
1049 | |||
1050 | # | ||
1068 | # ALSA Blackfin devices | 1051 | # ALSA Blackfin devices |
1069 | # | 1052 | # |
1070 | # CONFIG_SND_BLACKFIN_AD1836 is not set | 1053 | # CONFIG_SND_BLACKFIN_AD1836 is not set |
1071 | # CONFIG_SND_BFIN_AD73311 is not set | 1054 | # CONFIG_SND_BFIN_AD73311 is not set |
1055 | # CONFIG_SND_BFIN_AD73322 is not set | ||
1056 | |||
1057 | # | ||
1058 | # USB devices | ||
1059 | # | ||
1060 | # CONFIG_SND_USB_AUDIO is not set | ||
1061 | # CONFIG_SND_USB_CAIAQ is not set | ||
1072 | 1062 | ||
1073 | # | 1063 | # |
1074 | # System on Chip audio support | 1064 | # System on Chip audio support |
@@ -1084,6 +1074,10 @@ CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y | |||
1084 | CONFIG_SND_BF5XX_SPORT_NUM=0 | 1074 | CONFIG_SND_BF5XX_SPORT_NUM=0 |
1085 | CONFIG_SND_BF5XX_HAVE_COLD_RESET=y | 1075 | CONFIG_SND_BF5XX_HAVE_COLD_RESET=y |
1086 | CONFIG_SND_BF5XX_RESET_GPIO_NUM=19 | 1076 | CONFIG_SND_BF5XX_RESET_GPIO_NUM=19 |
1077 | |||
1078 | # | ||
1079 | # SoC Audio support for SuperH | ||
1080 | # | ||
1087 | CONFIG_SND_SOC_AD1980=y | 1081 | CONFIG_SND_SOC_AD1980=y |
1088 | 1082 | ||
1089 | # | 1083 | # |
@@ -1091,72 +1085,152 @@ CONFIG_SND_SOC_AD1980=y | |||
1091 | # | 1085 | # |
1092 | # CONFIG_SOUND_PRIME is not set | 1086 | # CONFIG_SOUND_PRIME is not set |
1093 | CONFIG_AC97_BUS=y | 1087 | CONFIG_AC97_BUS=y |
1094 | 1088 | CONFIG_HID_SUPPORT=y | |
1095 | # | 1089 | CONFIG_HID=y |
1096 | # HID Devices | ||
1097 | # | ||
1098 | CONFIG_HID=m | ||
1099 | # CONFIG_HID_DEBUG is not set | 1090 | # CONFIG_HID_DEBUG is not set |
1091 | # CONFIG_HIDRAW is not set | ||
1100 | 1092 | ||
1101 | # | 1093 | # |
1102 | # USB support | 1094 | # USB Input Devices |
1103 | # | 1095 | # |
1096 | CONFIG_USB_HID=y | ||
1097 | # CONFIG_USB_HIDINPUT_POWERBOOK is not set | ||
1098 | # CONFIG_HID_FF is not set | ||
1099 | # CONFIG_USB_HIDDEV is not set | ||
1100 | CONFIG_USB_SUPPORT=y | ||
1104 | CONFIG_USB_ARCH_HAS_HCD=y | 1101 | CONFIG_USB_ARCH_HAS_HCD=y |
1105 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 1102 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
1106 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 1103 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
1107 | # CONFIG_USB is not set | 1104 | CONFIG_USB=y |
1105 | # CONFIG_USB_DEBUG is not set | ||
1106 | |||
1107 | # | ||
1108 | # Miscellaneous USB options | ||
1109 | # | ||
1110 | # CONFIG_USB_DEVICEFS is not set | ||
1111 | CONFIG_USB_DEVICE_CLASS=y | ||
1112 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
1113 | # CONFIG_USB_OTG is not set | ||
1114 | # CONFIG_USB_OTG_WHITELIST is not set | ||
1115 | CONFIG_USB_OTG_BLACKLIST_HUB=y | ||
1108 | 1116 | ||
1109 | # | 1117 | # |
1110 | # Enable Host or Gadget support to see Inventra options | 1118 | # USB Host Controller Drivers |
1111 | # | 1119 | # |
1120 | # CONFIG_USB_ISP116X_HCD is not set | ||
1121 | # CONFIG_USB_ISP1362_HCD is not set | ||
1122 | # CONFIG_USB_ISP1760_HCD is not set | ||
1123 | # CONFIG_USB_SL811_HCD is not set | ||
1124 | # CONFIG_USB_R8A66597_HCD is not set | ||
1125 | CONFIG_USB_MUSB_HDRC=y | ||
1126 | CONFIG_USB_MUSB_SOC=y | ||
1127 | |||
1128 | # | ||
1129 | # Blackfin high speed USB support | ||
1130 | # | ||
1131 | CONFIG_USB_MUSB_HOST=y | ||
1132 | # CONFIG_USB_MUSB_PERIPHERAL is not set | ||
1133 | # CONFIG_USB_MUSB_OTG is not set | ||
1134 | CONFIG_USB_MUSB_HDRC_HCD=y | ||
1135 | # CONFIG_MUSB_PIO_ONLY is not set | ||
1136 | # CONFIG_USB_INVENTRA_DMA is not set | ||
1137 | # CONFIG_USB_TI_CPPI_DMA is not set | ||
1138 | CONFIG_USB_MUSB_LOGLEVEL=0 | ||
1139 | |||
1140 | # | ||
1141 | # USB Device Class drivers | ||
1142 | # | ||
1143 | # CONFIG_USB_ACM is not set | ||
1144 | # CONFIG_USB_PRINTER is not set | ||
1112 | 1145 | ||
1113 | # | 1146 | # |
1114 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1147 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
1115 | # | 1148 | # |
1116 | 1149 | ||
1117 | # | 1150 | # |
1118 | # USB Gadget Support | 1151 | # may also be needed; see USB_STORAGE Help for more information |
1119 | # | 1152 | # |
1120 | # CONFIG_USB_GADGET is not set | 1153 | CONFIG_USB_STORAGE=m |
1121 | CONFIG_MMC=m | 1154 | # CONFIG_USB_STORAGE_DEBUG is not set |
1122 | # CONFIG_MMC_DEBUG is not set | 1155 | # CONFIG_USB_STORAGE_DATAFAB is not set |
1123 | # CONFIG_MMC_UNSAFE_RESUME is not set | 1156 | # CONFIG_USB_STORAGE_FREECOM is not set |
1157 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
1158 | # CONFIG_USB_STORAGE_DPCM is not set | ||
1159 | # CONFIG_USB_STORAGE_USBAT is not set | ||
1160 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
1161 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
1162 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
1163 | # CONFIG_USB_STORAGE_ALAUDA is not set | ||
1164 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
1165 | # CONFIG_USB_STORAGE_KARMA is not set | ||
1166 | # CONFIG_USB_LIBUSUAL is not set | ||
1124 | 1167 | ||
1125 | # | 1168 | # |
1126 | # MMC/SD Card Drivers | 1169 | # USB Imaging devices |
1127 | # | 1170 | # |
1128 | CONFIG_MMC_BLOCK=m | 1171 | # CONFIG_USB_MDC800 is not set |
1172 | # CONFIG_USB_MICROTEK is not set | ||
1173 | CONFIG_USB_MON=y | ||
1129 | 1174 | ||
1130 | # | 1175 | # |
1131 | # MMC/SD Host Controller Drivers | 1176 | # USB port drivers |
1132 | # | 1177 | # |
1133 | CONFIG_SDH_BFIN=m | ||
1134 | # CONFIG_SPI_MMC is not set | ||
1135 | 1178 | ||
1136 | # | 1179 | # |
1137 | # LED devices | 1180 | # USB Serial Converter support |
1138 | # | 1181 | # |
1139 | # CONFIG_NEW_LEDS is not set | 1182 | # CONFIG_USB_SERIAL is not set |
1140 | 1183 | ||
1141 | # | 1184 | # |
1142 | # LED drivers | 1185 | # USB Miscellaneous drivers |
1143 | # | 1186 | # |
1187 | # CONFIG_USB_EMI62 is not set | ||
1188 | # CONFIG_USB_EMI26 is not set | ||
1189 | # CONFIG_USB_ADUTUX is not set | ||
1190 | # CONFIG_USB_AUERSWALD is not set | ||
1191 | # CONFIG_USB_RIO500 is not set | ||
1192 | # CONFIG_USB_LEGOTOWER is not set | ||
1193 | # CONFIG_USB_LCD is not set | ||
1194 | # CONFIG_USB_BERRY_CHARGE is not set | ||
1195 | # CONFIG_USB_LED is not set | ||
1196 | # CONFIG_USB_CYPRESS_CY7C63 is not set | ||
1197 | # CONFIG_USB_CYTHERM is not set | ||
1198 | # CONFIG_USB_PHIDGET is not set | ||
1199 | # CONFIG_USB_IDMOUSE is not set | ||
1200 | # CONFIG_USB_FTDI_ELAN is not set | ||
1201 | # CONFIG_USB_APPLEDISPLAY is not set | ||
1202 | # CONFIG_USB_SISUSBVGA is not set | ||
1203 | # CONFIG_USB_LD is not set | ||
1204 | # CONFIG_USB_TRANCEVIBRATOR is not set | ||
1205 | # CONFIG_USB_IOWARRIOR is not set | ||
1144 | 1206 | ||
1145 | # | 1207 | # |
1146 | # LED Triggers | 1208 | # USB DSL modem support |
1147 | # | 1209 | # |
1148 | 1210 | ||
1149 | # | 1211 | # |
1150 | # InfiniBand support | 1212 | # USB Gadget Support |
1151 | # | 1213 | # |
1214 | # CONFIG_USB_GADGET is not set | ||
1215 | CONFIG_MMC=m | ||
1216 | # CONFIG_MMC_DEBUG is not set | ||
1217 | # CONFIG_MMC_UNSAFE_RESUME is not set | ||
1152 | 1218 | ||
1153 | # | 1219 | # |
1154 | # EDAC - error detection and reporting (RAS) (EXPERIMENTAL) | 1220 | # MMC/SD Card Drivers |
1155 | # | 1221 | # |
1222 | CONFIG_MMC_BLOCK=m | ||
1223 | CONFIG_MMC_BLOCK_BOUNCE=y | ||
1224 | # CONFIG_SDIO_UART is not set | ||
1156 | 1225 | ||
1157 | # | 1226 | # |
1158 | # Real Time Clock | 1227 | # MMC/SD Host Controller Drivers |
1159 | # | 1228 | # |
1229 | CONFIG_SDH_BFIN=m | ||
1230 | # CONFIG_SDH_BFIN_MISSING_CMD_PULLUP_WORKAROUND is not set | ||
1231 | # CONFIG_MMC_SPI is not set | ||
1232 | # CONFIG_SPI_MMC is not set | ||
1233 | # CONFIG_NEW_LEDS is not set | ||
1160 | CONFIG_RTC_LIB=y | 1234 | CONFIG_RTC_LIB=y |
1161 | CONFIG_RTC_CLASS=y | 1235 | CONFIG_RTC_CLASS=y |
1162 | CONFIG_RTC_HCTOSYS=y | 1236 | CONFIG_RTC_HCTOSYS=y |
@@ -1176,6 +1250,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1176 | # I2C RTC drivers | 1250 | # I2C RTC drivers |
1177 | # | 1251 | # |
1178 | # CONFIG_RTC_DRV_DS1307 is not set | 1252 | # CONFIG_RTC_DRV_DS1307 is not set |
1253 | # CONFIG_RTC_DRV_DS1374 is not set | ||
1179 | # CONFIG_RTC_DRV_DS1672 is not set | 1254 | # CONFIG_RTC_DRV_DS1672 is not set |
1180 | # CONFIG_RTC_DRV_MAX6900 is not set | 1255 | # CONFIG_RTC_DRV_MAX6900 is not set |
1181 | # CONFIG_RTC_DRV_RS5C372 is not set | 1256 | # CONFIG_RTC_DRV_RS5C372 is not set |
@@ -1183,6 +1258,7 @@ CONFIG_RTC_INTF_DEV=y | |||
1183 | # CONFIG_RTC_DRV_X1205 is not set | 1258 | # CONFIG_RTC_DRV_X1205 is not set |
1184 | # CONFIG_RTC_DRV_PCF8563 is not set | 1259 | # CONFIG_RTC_DRV_PCF8563 is not set |
1185 | # CONFIG_RTC_DRV_PCF8583 is not set | 1260 | # CONFIG_RTC_DRV_PCF8583 is not set |
1261 | # CONFIG_RTC_DRV_M41T80 is not set | ||
1186 | 1262 | ||
1187 | # | 1263 | # |
1188 | # SPI RTC drivers | 1264 | # SPI RTC drivers |
@@ -1194,8 +1270,10 @@ CONFIG_RTC_INTF_DEV=y | |||
1194 | # Platform RTC drivers | 1270 | # Platform RTC drivers |
1195 | # | 1271 | # |
1196 | # CONFIG_RTC_DRV_DS1553 is not set | 1272 | # CONFIG_RTC_DRV_DS1553 is not set |
1273 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1197 | # CONFIG_RTC_DRV_DS1742 is not set | 1274 | # CONFIG_RTC_DRV_DS1742 is not set |
1198 | # CONFIG_RTC_DRV_M48T86 is not set | 1275 | # CONFIG_RTC_DRV_M48T86 is not set |
1276 | # CONFIG_RTC_DRV_M48T59 is not set | ||
1199 | # CONFIG_RTC_DRV_V3020 is not set | 1277 | # CONFIG_RTC_DRV_V3020 is not set |
1200 | 1278 | ||
1201 | # | 1279 | # |
@@ -1204,22 +1282,9 @@ CONFIG_RTC_INTF_DEV=y | |||
1204 | CONFIG_RTC_DRV_BFIN=y | 1282 | CONFIG_RTC_DRV_BFIN=y |
1205 | 1283 | ||
1206 | # | 1284 | # |
1207 | # DMA Engine support | 1285 | # Userspace I/O |
1208 | # | ||
1209 | # CONFIG_DMA_ENGINE is not set | ||
1210 | |||
1211 | # | ||
1212 | # DMA Clients | ||
1213 | # | 1286 | # |
1214 | 1287 | # CONFIG_UIO is not set | |
1215 | # | ||
1216 | # DMA Devices | ||
1217 | # | ||
1218 | |||
1219 | # | ||
1220 | # PBX support | ||
1221 | # | ||
1222 | # CONFIG_PBX is not set | ||
1223 | 1288 | ||
1224 | # | 1289 | # |
1225 | # File systems | 1290 | # File systems |
@@ -1280,7 +1345,6 @@ CONFIG_PROC_SYSCTL=y | |||
1280 | CONFIG_SYSFS=y | 1345 | CONFIG_SYSFS=y |
1281 | # CONFIG_TMPFS is not set | 1346 | # CONFIG_TMPFS is not set |
1282 | # CONFIG_HUGETLB_PAGE is not set | 1347 | # CONFIG_HUGETLB_PAGE is not set |
1283 | CONFIG_RAMFS=y | ||
1284 | # CONFIG_CONFIGFS_FS is not set | 1348 | # CONFIG_CONFIGFS_FS is not set |
1285 | 1349 | ||
1286 | # | 1350 | # |
@@ -1306,10 +1370,12 @@ CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y | |||
1306 | CONFIG_JFFS2_FS=m | 1370 | CONFIG_JFFS2_FS=m |
1307 | CONFIG_JFFS2_FS_DEBUG=0 | 1371 | CONFIG_JFFS2_FS_DEBUG=0 |
1308 | CONFIG_JFFS2_FS_WRITEBUFFER=y | 1372 | CONFIG_JFFS2_FS_WRITEBUFFER=y |
1373 | # CONFIG_JFFS2_FS_WBUF_VERIFY is not set | ||
1309 | # CONFIG_JFFS2_SUMMARY is not set | 1374 | # CONFIG_JFFS2_SUMMARY is not set |
1310 | # CONFIG_JFFS2_FS_XATTR is not set | 1375 | # CONFIG_JFFS2_FS_XATTR is not set |
1311 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | 1376 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set |
1312 | CONFIG_JFFS2_ZLIB=y | 1377 | CONFIG_JFFS2_ZLIB=y |
1378 | # CONFIG_JFFS2_LZO is not set | ||
1313 | CONFIG_JFFS2_RTIME=y | 1379 | CONFIG_JFFS2_RTIME=y |
1314 | # CONFIG_JFFS2_RUBIN is not set | 1380 | # CONFIG_JFFS2_RUBIN is not set |
1315 | # CONFIG_CRAMFS is not set | 1381 | # CONFIG_CRAMFS is not set |
@@ -1318,10 +1384,7 @@ CONFIG_JFFS2_RTIME=y | |||
1318 | # CONFIG_QNX4FS_FS is not set | 1384 | # CONFIG_QNX4FS_FS is not set |
1319 | # CONFIG_SYSV_FS is not set | 1385 | # CONFIG_SYSV_FS is not set |
1320 | # CONFIG_UFS_FS is not set | 1386 | # CONFIG_UFS_FS is not set |
1321 | 1387 | CONFIG_NETWORK_FILESYSTEMS=y | |
1322 | # | ||
1323 | # Network File Systems | ||
1324 | # | ||
1325 | CONFIG_NFS_FS=m | 1388 | CONFIG_NFS_FS=m |
1326 | CONFIG_NFS_V3=y | 1389 | CONFIG_NFS_V3=y |
1327 | # CONFIG_NFS_V3_ACL is not set | 1390 | # CONFIG_NFS_V3_ACL is not set |
@@ -1352,7 +1415,6 @@ CONFIG_CIFS=y | |||
1352 | # CONFIG_NCP_FS is not set | 1415 | # CONFIG_NCP_FS is not set |
1353 | # CONFIG_CODA_FS is not set | 1416 | # CONFIG_CODA_FS is not set |
1354 | # CONFIG_AFS_FS is not set | 1417 | # CONFIG_AFS_FS is not set |
1355 | # CONFIG_9P_FS is not set | ||
1356 | 1418 | ||
1357 | # | 1419 | # |
1358 | # Partition Types | 1420 | # Partition Types |
@@ -1375,10 +1437,6 @@ CONFIG_MSDOS_PARTITION=y | |||
1375 | # CONFIG_KARMA_PARTITION is not set | 1437 | # CONFIG_KARMA_PARTITION is not set |
1376 | # CONFIG_EFI_PARTITION is not set | 1438 | # CONFIG_EFI_PARTITION is not set |
1377 | # CONFIG_SYSV68_PARTITION is not set | 1439 | # CONFIG_SYSV68_PARTITION is not set |
1378 | |||
1379 | # | ||
1380 | # Native Language Support | ||
1381 | # | ||
1382 | CONFIG_NLS=y | 1440 | CONFIG_NLS=y |
1383 | CONFIG_NLS_DEFAULT="iso8859-1" | 1441 | CONFIG_NLS_DEFAULT="iso8859-1" |
1384 | CONFIG_NLS_CODEPAGE_437=m | 1442 | CONFIG_NLS_CODEPAGE_437=m |
@@ -1419,21 +1477,16 @@ CONFIG_NLS_ISO8859_15=m | |||
1419 | CONFIG_NLS_KOI8_R=m | 1477 | CONFIG_NLS_KOI8_R=m |
1420 | CONFIG_NLS_KOI8_U=m | 1478 | CONFIG_NLS_KOI8_U=m |
1421 | CONFIG_NLS_UTF8=m | 1479 | CONFIG_NLS_UTF8=m |
1422 | |||
1423 | # | ||
1424 | # Distributed Lock Manager | ||
1425 | # | ||
1426 | # CONFIG_DLM is not set | 1480 | # CONFIG_DLM is not set |
1427 | 1481 | CONFIG_INSTRUMENTATION=y | |
1428 | # | ||
1429 | # Profiling support | ||
1430 | # | ||
1431 | # CONFIG_PROFILING is not set | 1482 | # CONFIG_PROFILING is not set |
1483 | # CONFIG_MARKERS is not set | ||
1432 | 1484 | ||
1433 | # | 1485 | # |
1434 | # Kernel hacking | 1486 | # Kernel hacking |
1435 | # | 1487 | # |
1436 | # CONFIG_PRINTK_TIME is not set | 1488 | # CONFIG_PRINTK_TIME is not set |
1489 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1437 | CONFIG_ENABLE_MUST_CHECK=y | 1490 | CONFIG_ENABLE_MUST_CHECK=y |
1438 | # CONFIG_MAGIC_SYSRQ is not set | 1491 | # CONFIG_MAGIC_SYSRQ is not set |
1439 | # CONFIG_UNUSED_SYMBOLS is not set | 1492 | # CONFIG_UNUSED_SYMBOLS is not set |
@@ -1441,6 +1494,7 @@ CONFIG_DEBUG_FS=y | |||
1441 | # CONFIG_HEADERS_CHECK is not set | 1494 | # CONFIG_HEADERS_CHECK is not set |
1442 | # CONFIG_DEBUG_KERNEL is not set | 1495 | # CONFIG_DEBUG_KERNEL is not set |
1443 | # CONFIG_DEBUG_BUGVERBOSE is not set | 1496 | # CONFIG_DEBUG_BUGVERBOSE is not set |
1497 | # CONFIG_SAMPLES is not set | ||
1444 | CONFIG_DEBUG_MMRS=y | 1498 | CONFIG_DEBUG_MMRS=y |
1445 | CONFIG_DEBUG_HUNT_FOR_ZERO=y | 1499 | CONFIG_DEBUG_HUNT_FOR_ZERO=y |
1446 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y | 1500 | CONFIG_DEBUG_BFIN_HWTRACE_ON=y |
@@ -1460,11 +1514,8 @@ CONFIG_ACCESS_CHECK=y | |||
1460 | # CONFIG_KEYS is not set | 1514 | # CONFIG_KEYS is not set |
1461 | CONFIG_SECURITY=y | 1515 | CONFIG_SECURITY=y |
1462 | # CONFIG_SECURITY_NETWORK is not set | 1516 | # CONFIG_SECURITY_NETWORK is not set |
1463 | CONFIG_SECURITY_CAPABILITIES=m | 1517 | # CONFIG_SECURITY_CAPABILITIES is not set |
1464 | 1518 | # CONFIG_SECURITY_ROOTPLUG is not set | |
1465 | # | ||
1466 | # Cryptographic options | ||
1467 | # | ||
1468 | # CONFIG_CRYPTO is not set | 1519 | # CONFIG_CRYPTO is not set |
1469 | 1520 | ||
1470 | # | 1521 | # |
@@ -1475,6 +1526,7 @@ CONFIG_CRC_CCITT=m | |||
1475 | # CONFIG_CRC16 is not set | 1526 | # CONFIG_CRC16 is not set |
1476 | # CONFIG_CRC_ITU_T is not set | 1527 | # CONFIG_CRC_ITU_T is not set |
1477 | CONFIG_CRC32=y | 1528 | CONFIG_CRC32=y |
1529 | # CONFIG_CRC7 is not set | ||
1478 | # CONFIG_LIBCRC32C is not set | 1530 | # CONFIG_LIBCRC32C is not set |
1479 | CONFIG_ZLIB_INFLATE=y | 1531 | CONFIG_ZLIB_INFLATE=y |
1480 | CONFIG_ZLIB_DEFLATE=m | 1532 | CONFIG_ZLIB_DEFLATE=m |
diff --git a/arch/blackfin/configs/IP0X_defconfig b/arch/blackfin/configs/IP0X_defconfig index 5f6ff04a86c3..4384a670a8b8 100644 --- a/arch/blackfin/configs/IP0X_defconfig +++ b/arch/blackfin/configs/IP0X_defconfig | |||
@@ -212,7 +212,7 @@ CONFIG_HZ=250 | |||
212 | # | 212 | # |
213 | # Memory Setup | 213 | # Memory Setup |
214 | # | 214 | # |
215 | CONFIG_MEM_SIZE=64 | 215 | CONFIG_MAX_MEM_SIZE=64 |
216 | CONFIG_MEM_ADD_WIDTH=10 | 216 | CONFIG_MEM_ADD_WIDTH=10 |
217 | 217 | ||
218 | # | 218 | # |
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c index fd5448d6107c..d54f19085f37 100644 --- a/arch/blackfin/kernel/bfin_dma_5xx.c +++ b/arch/blackfin/kernel/bfin_dma_5xx.c | |||
@@ -90,6 +90,17 @@ int request_dma(unsigned int channel, char *device_id) | |||
90 | { | 90 | { |
91 | 91 | ||
92 | pr_debug("request_dma() : BEGIN \n"); | 92 | pr_debug("request_dma() : BEGIN \n"); |
93 | |||
94 | #if defined(CONFIG_BF561) && ANOMALY_05000182 | ||
95 | if (channel >= CH_IMEM_STREAM0_DEST && channel <= CH_IMEM_STREAM1_DEST) { | ||
96 | if (get_cclk() > 500000000) { | ||
97 | printk(KERN_WARNING | ||
98 | "Request IMDMA failed due to ANOMALY 05000182\n"); | ||
99 | return -EFAULT; | ||
100 | } | ||
101 | } | ||
102 | #endif | ||
103 | |||
93 | mutex_lock(&(dma_ch[channel].dmalock)); | 104 | mutex_lock(&(dma_ch[channel].dmalock)); |
94 | 105 | ||
95 | if ((dma_ch[channel].chan_status == DMA_CHANNEL_REQUESTED) | 106 | if ((dma_ch[channel].chan_status == DMA_CHANNEL_REQUESTED) |
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c index 7e8eaf4a31bb..b6d89d1644cc 100644 --- a/arch/blackfin/kernel/bfin_gpio.c +++ b/arch/blackfin/kernel/bfin_gpio.c | |||
@@ -1130,6 +1130,25 @@ void bfin_gpio_irq_prepare(unsigned gpio) | |||
1130 | 1130 | ||
1131 | #else | 1131 | #else |
1132 | 1132 | ||
1133 | int gpio_get_value(unsigned gpio) | ||
1134 | { | ||
1135 | unsigned long flags; | ||
1136 | int ret; | ||
1137 | |||
1138 | if (unlikely(get_gpio_edge(gpio))) { | ||
1139 | local_irq_save(flags); | ||
1140 | set_gpio_edge(gpio, 0); | ||
1141 | ret = get_gpio_data(gpio); | ||
1142 | set_gpio_edge(gpio, 1); | ||
1143 | local_irq_restore(flags); | ||
1144 | |||
1145 | return ret; | ||
1146 | } else | ||
1147 | return get_gpio_data(gpio); | ||
1148 | } | ||
1149 | EXPORT_SYMBOL(gpio_get_value); | ||
1150 | |||
1151 | |||
1133 | int gpio_direction_input(unsigned gpio) | 1152 | int gpio_direction_input(unsigned gpio) |
1134 | { | 1153 | { |
1135 | unsigned long flags; | 1154 | unsigned long flags; |
diff --git a/arch/blackfin/kernel/bfin_ksyms.c b/arch/blackfin/kernel/bfin_ksyms.c index 053edff6c0d8..4367330909b2 100644 --- a/arch/blackfin/kernel/bfin_ksyms.c +++ b/arch/blackfin/kernel/bfin_ksyms.c | |||
@@ -90,7 +90,9 @@ EXPORT_SYMBOL(__umodsi3); | |||
90 | EXPORT_SYMBOL(outsb); | 90 | EXPORT_SYMBOL(outsb); |
91 | EXPORT_SYMBOL(insb); | 91 | EXPORT_SYMBOL(insb); |
92 | EXPORT_SYMBOL(outsw); | 92 | EXPORT_SYMBOL(outsw); |
93 | EXPORT_SYMBOL(outsw_8); | ||
93 | EXPORT_SYMBOL(insw); | 94 | EXPORT_SYMBOL(insw); |
95 | EXPORT_SYMBOL(insw_8); | ||
94 | EXPORT_SYMBOL(outsl); | 96 | EXPORT_SYMBOL(outsl); |
95 | EXPORT_SYMBOL(insl); | 97 | EXPORT_SYMBOL(insl); |
96 | EXPORT_SYMBOL(insl_16); | 98 | EXPORT_SYMBOL(insl_16); |
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c index e698554895a7..3a3e9615b002 100644 --- a/arch/blackfin/kernel/gptimers.c +++ b/arch/blackfin/kernel/gptimers.c | |||
@@ -10,8 +10,8 @@ | |||
10 | 10 | ||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/io.h> | ||
13 | 14 | ||
14 | #include <asm/io.h> | ||
15 | #include <asm/blackfin.h> | 15 | #include <asm/blackfin.h> |
16 | #include <asm/gptimers.h> | 16 | #include <asm/gptimers.h> |
17 | 17 | ||
diff --git a/arch/blackfin/kernel/init_task.c b/arch/blackfin/kernel/init_task.c index c640154030e2..6bdba7b21109 100644 --- a/arch/blackfin/kernel/init_task.c +++ b/arch/blackfin/kernel/init_task.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <linux/fs.h> | 34 | #include <linux/fs.h> |
35 | 35 | ||
36 | static struct fs_struct init_fs = INIT_FS; | 36 | static struct fs_struct init_fs = INIT_FS; |
37 | static struct files_struct init_files = INIT_FILES; | ||
38 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 37 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
39 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 38 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
40 | 39 | ||
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 5b847070dae5..7bfbd958980c 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
@@ -364,13 +364,13 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
364 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ | 364 | /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ |
365 | case VEC_CPLB_MHIT: | 365 | case VEC_CPLB_MHIT: |
366 | info.si_code = ILL_CPLB_MULHIT; | 366 | info.si_code = ILL_CPLB_MULHIT; |
367 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO | ||
368 | sig = SIGSEGV; | 367 | sig = SIGSEGV; |
369 | printk(KERN_NOTICE "NULL pointer access (probably)\n"); | 368 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO |
370 | #else | 369 | if (saved_dcplb_fault_addr < (void *)FIXED_CODE_START) |
371 | sig = SIGILL; | 370 | printk(KERN_NOTICE "NULL pointer access\n"); |
372 | printk(KERN_NOTICE EXC_0x27(KERN_NOTICE)); | 371 | else |
373 | #endif | 372 | #endif |
373 | printk(KERN_NOTICE EXC_0x27(KERN_NOTICE)); | ||
374 | CHK_DEBUGGER_TRAP(); | 374 | CHK_DEBUGGER_TRAP(); |
375 | break; | 375 | break; |
376 | /* 0x28 - Emulation Watchpoint, handled here */ | 376 | /* 0x28 - Emulation Watchpoint, handled here */ |
@@ -419,13 +419,13 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
419 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ | 419 | /* 0x2D - Instruction CPLB Multiple Hits, handled here */ |
420 | case VEC_CPLB_I_MHIT: | 420 | case VEC_CPLB_I_MHIT: |
421 | info.si_code = ILL_CPLB_MULHIT; | 421 | info.si_code = ILL_CPLB_MULHIT; |
422 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO | ||
423 | sig = SIGSEGV; | 422 | sig = SIGSEGV; |
424 | printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n"); | 423 | #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO |
425 | #else | 424 | if (saved_icplb_fault_addr < (void *)FIXED_CODE_START) |
426 | sig = SIGILL; | 425 | printk(KERN_NOTICE "Jump to NULL address\n"); |
427 | printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE)); | 426 | else |
428 | #endif | 427 | #endif |
428 | printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE)); | ||
429 | CHK_DEBUGGER_TRAP(); | 429 | CHK_DEBUGGER_TRAP(); |
430 | break; | 430 | break; |
431 | /* 0x2E - Illegal use of Supervisor Resource, handled here */ | 431 | /* 0x2E - Illegal use of Supervisor Resource, handled here */ |
diff --git a/arch/blackfin/lib/checksum.c b/arch/blackfin/lib/checksum.c index 42768e0c80ca..5c87505165d3 100644 --- a/arch/blackfin/lib/checksum.c +++ b/arch/blackfin/lib/checksum.c | |||
@@ -72,9 +72,9 @@ static unsigned short do_csum(const unsigned char *buff, int len) | |||
72 | * This is a version of ip_compute_csum() optimized for IP headers, | 72 | * This is a version of ip_compute_csum() optimized for IP headers, |
73 | * which always checksum on 4 octet boundaries. | 73 | * which always checksum on 4 octet boundaries. |
74 | */ | 74 | */ |
75 | unsigned short ip_fast_csum(unsigned char *iph, unsigned int ihl) | 75 | __sum16 ip_fast_csum(unsigned char *iph, unsigned int ihl) |
76 | { | 76 | { |
77 | return ~do_csum(iph, ihl * 4); | 77 | return (__force __sum16)~do_csum(iph, ihl * 4); |
78 | } | 78 | } |
79 | 79 | ||
80 | /* | 80 | /* |
@@ -89,7 +89,7 @@ unsigned short ip_fast_csum(unsigned char *iph, unsigned int ihl) | |||
89 | * | 89 | * |
90 | * it's best to have buff aligned on a 32-bit boundary | 90 | * it's best to have buff aligned on a 32-bit boundary |
91 | */ | 91 | */ |
92 | unsigned int csum_partial(const unsigned char *buff, int len, unsigned int sum) | 92 | __wsum csum_partial(const void *buff, int len, __wsum sum) |
93 | { | 93 | { |
94 | /* | 94 | /* |
95 | * Just in case we get nasty checksum data... | 95 | * Just in case we get nasty checksum data... |
@@ -109,22 +109,22 @@ unsigned int csum_partial(const unsigned char *buff, int len, unsigned int sum) | |||
109 | * this routine is used for miscellaneous IP-like checksums, mainly | 109 | * this routine is used for miscellaneous IP-like checksums, mainly |
110 | * in icmp.c | 110 | * in icmp.c |
111 | */ | 111 | */ |
112 | unsigned short ip_compute_csum(const unsigned char *buff, int len) | 112 | __sum16 ip_compute_csum(const void *buff, int len) |
113 | { | 113 | { |
114 | return ~do_csum(buff, len); | 114 | return (__force __sum16)~do_csum(buff, len); |
115 | } | 115 | } |
116 | 116 | ||
117 | /* | 117 | /* |
118 | * copy from fs while checksumming, otherwise like csum_partial | 118 | * copy from fs while checksumming, otherwise like csum_partial |
119 | */ | 119 | */ |
120 | 120 | ||
121 | unsigned int | 121 | __wsum |
122 | csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, | 122 | csum_partial_copy_from_user(const void __user *src, void *dst, |
123 | int len, int sum, int *csum_err) | 123 | int len, __wsum sum, int *csum_err) |
124 | { | 124 | { |
125 | if (csum_err) | 125 | if (csum_err) |
126 | *csum_err = 0; | 126 | *csum_err = 0; |
127 | memcpy(dst, src, len); | 127 | memcpy(dst, (__force void *)src, len); |
128 | return csum_partial(dst, len, sum); | 128 | return csum_partial(dst, len, sum); |
129 | } | 129 | } |
130 | 130 | ||
@@ -132,8 +132,7 @@ csum_partial_copy_from_user(const unsigned char *src, unsigned char *dst, | |||
132 | * copy from ds while checksumming, otherwise like csum_partial | 132 | * copy from ds while checksumming, otherwise like csum_partial |
133 | */ | 133 | */ |
134 | 134 | ||
135 | unsigned int csum_partial_copy(const unsigned char *src, unsigned char *dst, | 135 | __wsum csum_partial_copy(const void *src, void *dst, int len, __wsum sum) |
136 | int len, int sum) | ||
137 | { | 136 | { |
138 | memcpy(dst, src, len); | 137 | memcpy(dst, src, len); |
139 | return csum_partial(dst, len, sum); | 138 | return csum_partial(dst, len, sum); |
diff --git a/arch/blackfin/lib/ins.S b/arch/blackfin/lib/ins.S index df7b8833a0c5..eba2343b1b59 100644 --- a/arch/blackfin/lib/ins.S +++ b/arch/blackfin/lib/ins.S | |||
@@ -7,7 +7,7 @@ | |||
7 | * Description: Implementation of ins{bwl} for BlackFin processors using zero overhead loops. | 7 | * Description: Implementation of ins{bwl} for BlackFin processors using zero overhead loops. |
8 | * | 8 | * |
9 | * Modified: | 9 | * Modified: |
10 | * Copyright 2004-2006 Analog Devices Inc. | 10 | * Copyright 2004-2008 Analog Devices Inc. |
11 | * Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> | 11 | * Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> |
12 | * | 12 | * |
13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 13 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
@@ -63,6 +63,23 @@ ENTRY(_insw) | |||
63 | RTS; | 63 | RTS; |
64 | ENDPROC(_insw) | 64 | ENDPROC(_insw) |
65 | 65 | ||
66 | ENTRY(_insw_8) | ||
67 | P0 = R0; /* P0 = port */ | ||
68 | cli R3; | ||
69 | P1 = R1; /* P1 = address */ | ||
70 | P2 = R2; /* P2 = count */ | ||
71 | SSYNC; | ||
72 | LSETUP( .Lword8_loop_s, .Lword8_loop_e) LC0 = P2; | ||
73 | .Lword8_loop_s: R0 = W[P0]; | ||
74 | B[P1++] = R0; | ||
75 | R0 = R0 >> 8; | ||
76 | B[P1++] = R0; | ||
77 | NOP; | ||
78 | .Lword8_loop_e: NOP; | ||
79 | sti R3; | ||
80 | RTS; | ||
81 | ENDPROC(_insw_8) | ||
82 | |||
66 | ENTRY(_insb) | 83 | ENTRY(_insb) |
67 | P0 = R0; /* P0 = port */ | 84 | P0 = R0; /* P0 = port */ |
68 | cli R3; | 85 | cli R3; |
@@ -78,8 +95,6 @@ ENTRY(_insb) | |||
78 | RTS; | 95 | RTS; |
79 | ENDPROC(_insb) | 96 | ENDPROC(_insb) |
80 | 97 | ||
81 | |||
82 | |||
83 | ENTRY(_insl_16) | 98 | ENTRY(_insl_16) |
84 | P0 = R0; /* P0 = port */ | 99 | P0 = R0; /* P0 = port */ |
85 | cli R3; | 100 | cli R3; |
diff --git a/arch/blackfin/lib/outs.S b/arch/blackfin/lib/outs.S index 4c3da8ae094e..4685b7aa0080 100644 --- a/arch/blackfin/lib/outs.S +++ b/arch/blackfin/lib/outs.S | |||
@@ -7,7 +7,7 @@ | |||
7 | * Description: Implementation of outs{bwl} for BlackFin processors using zero overhead loops. | 7 | * Description: Implementation of outs{bwl} for BlackFin processors using zero overhead loops. |
8 | * | 8 | * |
9 | * Modified: Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> | 9 | * Modified: Copyright (C) 2005 Bas Vermeulen, BuyWays BV <bas@buyways.nl> |
10 | * Copyright 2004-2006 Analog Devices Inc. | 10 | * Copyright 2004-2008 Analog Devices Inc. |
11 | * | 11 | * |
12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 12 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
13 | * | 13 | * |
@@ -63,3 +63,17 @@ ENTRY(_outsb) | |||
63 | .Lbyte_loop_e: B[P0] = R0; | 63 | .Lbyte_loop_e: B[P0] = R0; |
64 | RTS; | 64 | RTS; |
65 | ENDPROC(_outsb) | 65 | ENDPROC(_outsb) |
66 | |||
67 | ENTRY(_outsw_8) | ||
68 | P0 = R0; /* P0 = port */ | ||
69 | P1 = R1; /* P1 = address */ | ||
70 | P2 = R2; /* P2 = count */ | ||
71 | |||
72 | LSETUP( .Lword8_loop_s, .Lword8_loop_e) LC0 = P2; | ||
73 | .Lword8_loop_s: R1 = B[P1++]; | ||
74 | R0 = B[P1++]; | ||
75 | R0 = R0 << 8; | ||
76 | R0 = R0 + R1; | ||
77 | .Lword8_loop_e: W[P0] = R0; | ||
78 | RTS; | ||
79 | ENDPROC(_outsw_8) | ||
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c index 8aa49f804228..fa4f4e833e84 100644 --- a/arch/blackfin/mach-bf527/boards/ezkit.c +++ b/arch/blackfin/mach-bf527/boards/ezkit.c | |||
@@ -647,10 +647,10 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = { | |||
647 | { | 647 | { |
648 | .modalias = "ad7877", | 648 | .modalias = "ad7877", |
649 | .platform_data = &bfin_ad7877_ts_info, | 649 | .platform_data = &bfin_ad7877_ts_info, |
650 | .irq = IRQ_PF6, | 650 | .irq = IRQ_PF8, |
651 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ | 651 | .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ |
652 | .bus_num = 0, | 652 | .bus_num = 0, |
653 | .chip_select = 1, | 653 | .chip_select = 2, |
654 | .controller_data = &spi_ad7877_chip_info, | 654 | .controller_data = &spi_ad7877_chip_info, |
655 | }, | 655 | }, |
656 | #endif | 656 | #endif |
@@ -799,13 +799,11 @@ static struct i2c_board_info __initdata bfin_i2c_board_info[] = { | |||
799 | #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE) | 799 | #if defined(CONFIG_TWI_LCD) || defined(CONFIG_TWI_LCD_MODULE) |
800 | { | 800 | { |
801 | I2C_BOARD_INFO("pcf8574_lcd", 0x22), | 801 | I2C_BOARD_INFO("pcf8574_lcd", 0x22), |
802 | .type = "pcf8574_lcd", | ||
803 | }, | 802 | }, |
804 | #endif | 803 | #endif |
805 | #if defined(CONFIG_TWI_KEYPAD) || defined(CONFIG_TWI_KEYPAD_MODULE) | 804 | #if defined(CONFIG_TWI_KEYPAD) || defined(CONFIG_TWI_KEYPAD_MODULE) |
806 | { | 805 | { |
807 | I2C_BOARD_INFO("pcf8574_keypad", 0x27), | 806 | I2C_BOARD_INFO("pcf8574_keypad", 0x27), |
808 | .type = "pcf8574_keypad", | ||
809 | .irq = IRQ_PF8, | 807 | .irq = IRQ_PF8, |
810 | }, | 808 | }, |
811 | #endif | 809 | #endif |
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c index 7fd35fb32fd5..ec05b236dc3f 100644 --- a/arch/blackfin/mach-bf533/boards/stamp.c +++ b/arch/blackfin/mach-bf533/boards/stamp.c | |||
@@ -111,7 +111,7 @@ static struct platform_device net2272_bfin_device = { | |||
111 | }; | 111 | }; |
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | #if defined(CONFIG_MTD_BF5xx) || defined(CONFIG_MTD_BF5xx_MODULE) | 114 | #if defined(CONFIG_MTD_BFIN_ASYNC) || defined(CONFIG_MTD_BFIN_ASYNC_MODULE) |
115 | static struct mtd_partition stamp_partitions[] = { | 115 | static struct mtd_partition stamp_partitions[] = { |
116 | { | 116 | { |
117 | .name = "Bootloader", | 117 | .name = "Bootloader", |
@@ -141,13 +141,17 @@ static struct resource stamp_flash_resource[] = { | |||
141 | .end = 0x203fffff, | 141 | .end = 0x203fffff, |
142 | .flags = IORESOURCE_MEM, | 142 | .flags = IORESOURCE_MEM, |
143 | }, { | 143 | }, { |
144 | .start = CONFIG_ENET_FLASH_PIN, | 144 | .start = 0x7BB07BB0, /* AMBCTL0 setting when accessing flash */ |
145 | .end = 0x7BB07BB0, /* AMBCTL1 setting when accessing flash */ | ||
146 | .flags = IORESOURCE_MEM, | ||
147 | }, { | ||
148 | .start = GPIO_PF0, | ||
145 | .flags = IORESOURCE_IRQ, | 149 | .flags = IORESOURCE_IRQ, |
146 | } | 150 | } |
147 | }; | 151 | }; |
148 | 152 | ||
149 | static struct platform_device stamp_flash_device = { | 153 | static struct platform_device stamp_flash_device = { |
150 | .name = "BF5xx-Flash", | 154 | .name = "bfin-async-flash", |
151 | .id = 0, | 155 | .id = 0, |
152 | .dev = { | 156 | .dev = { |
153 | .platform_data = &stamp_flash_data, | 157 | .platform_data = &stamp_flash_data, |
@@ -595,7 +599,7 @@ static struct platform_device *stamp_devices[] __initdata = { | |||
595 | 599 | ||
596 | &bfin_gpios_device, | 600 | &bfin_gpios_device, |
597 | 601 | ||
598 | #if defined(CONFIG_MTD_BF5xx) || defined(CONFIG_MTD_BF5xx_MODULE) | 602 | #if defined(CONFIG_MTD_BFIN_ASYNC) || defined(CONFIG_MTD_BFIN_ASYNC_MODULE) |
599 | &stamp_flash_device, | 603 | &stamp_flash_device, |
600 | #endif | 604 | #endif |
601 | }; | 605 | }; |
@@ -617,8 +621,8 @@ static int __init stamp_init(void) | |||
617 | 621 | ||
618 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) | 622 | #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) |
619 | /* setup BF533_STAMP CPLD to route AMS3 to Ethernet MAC */ | 623 | /* setup BF533_STAMP CPLD to route AMS3 to Ethernet MAC */ |
620 | bfin_write_FIO_DIR(bfin_read_FIO_DIR() | (1 << CONFIG_ENET_FLASH_PIN)); | 624 | bfin_write_FIO_DIR(bfin_read_FIO_DIR() | PF0); |
621 | bfin_write_FIO_FLAG_S(1 << CONFIG_ENET_FLASH_PIN); | 625 | bfin_write_FIO_FLAG_S(PF0); |
622 | SSYNC(); | 626 | SSYNC(); |
623 | #endif | 627 | #endif |
624 | 628 | ||
@@ -636,8 +640,8 @@ arch_initcall(stamp_init); | |||
636 | 640 | ||
637 | void native_machine_restart(char *cmd) | 641 | void native_machine_restart(char *cmd) |
638 | { | 642 | { |
639 | #define BIT_TO_SET (1 << CONFIG_ENET_FLASH_PIN) | 643 | /* workaround pull up on cpld / flash pin not being strong enough */ |
640 | bfin_write_FIO_INEN(~BIT_TO_SET); | 644 | bfin_write_FIO_INEN(~PF0); |
641 | bfin_write_FIO_DIR(BIT_TO_SET); | 645 | bfin_write_FIO_DIR(PF0); |
642 | bfin_write_FIO_FLAG_C(BIT_TO_SET); | 646 | bfin_write_FIO_FLAG_C(PF0); |
643 | } | 647 | } |
diff --git a/arch/blackfin/mach-bf537/boards/Makefile b/arch/blackfin/mach-bf537/boards/Makefile index 87e450f29e37..c94f7a5b8211 100644 --- a/arch/blackfin/mach-bf537/boards/Makefile +++ b/arch/blackfin/mach-bf537/boards/Makefile | |||
@@ -3,7 +3,7 @@ | |||
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_GENERIC_BF537_BOARD) += generic_board.o | 5 | obj-$(CONFIG_GENERIC_BF537_BOARD) += generic_board.o |
6 | obj-$(CONFIG_BFIN537_STAMP) += stamp.o led.o | 6 | obj-$(CONFIG_BFIN537_STAMP) += stamp.o |
7 | obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o | 7 | obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o |
8 | obj-$(CONFIG_PNAV10) += pnav10.o | 8 | obj-$(CONFIG_PNAV10) += pnav10.o |
9 | obj-$(CONFIG_CAMSIG_MINOTAUR) += minotaur.o | 9 | obj-$(CONFIG_CAMSIG_MINOTAUR) += minotaur.o |
diff --git a/arch/blackfin/mach-bf537/boards/led.S b/arch/blackfin/mach-bf537/boards/led.S deleted file mode 100644 index 4e9ea4283e5f..000000000000 --- a/arch/blackfin/mach-bf537/boards/led.S +++ /dev/null | |||
@@ -1,183 +0,0 @@ | |||
1 | /**************************************************** | ||
2 | * LED1 ---- PF6 LED2 ---- PF7 * | ||
3 | * LED3 ---- PF8 LED4 ---- PF9 * | ||
4 | * LED5 ---- PF10 LED6 ---- PF11 * | ||
5 | ****************************************************/ | ||
6 | |||
7 | #include <linux/linkage.h> | ||
8 | #include <asm/blackfin.h> | ||
9 | |||
10 | /* All functions in this file save the registers they uses. | ||
11 | So there is no need to save any registers before calling them. */ | ||
12 | |||
13 | .text; | ||
14 | |||
15 | /* Initialize LEDs. */ | ||
16 | |||
17 | ENTRY(_led_init) | ||
18 | LINK 12; | ||
19 | [--SP] = P0; | ||
20 | [--SP] = R0; | ||
21 | [--SP] = R1; | ||
22 | [--SP] = R2; | ||
23 | R1 = PF6|PF7|PF8|PF9|PF10|PF11 (Z); | ||
24 | R2 = ~R1; | ||
25 | |||
26 | P0.H = hi(PORTF_FER); | ||
27 | P0.L = lo(PORTF_FER); | ||
28 | R0 = W[P0](Z); | ||
29 | SSYNC; | ||
30 | R0 = R0 & R2; | ||
31 | W[P0] = R0.L; | ||
32 | SSYNC; | ||
33 | |||
34 | P0.H = hi(PORTFIO_DIR); | ||
35 | P0.L = lo(PORTFIO_DIR); | ||
36 | R0 = W[P0](Z); | ||
37 | SSYNC; | ||
38 | R0 = R0 | R1; | ||
39 | W[P0] = R0.L; | ||
40 | SSYNC; | ||
41 | |||
42 | P0.H = hi(PORTFIO_INEN); | ||
43 | P0.L = lo(PORTFIO_INEN); | ||
44 | R0 = W[P0](Z); | ||
45 | SSYNC; | ||
46 | R0 = R0 & R2; | ||
47 | W[P0] = R0.L; | ||
48 | SSYNC; | ||
49 | |||
50 | R2 = [SP++]; | ||
51 | R1 = [SP++]; | ||
52 | R0 = [SP++]; | ||
53 | P0 = [SP++]; | ||
54 | UNLINK; | ||
55 | RTS; | ||
56 | .size _led_init, .-_led_init | ||
57 | |||
58 | /* Set one LED on. Leave other LEDs unchanged. | ||
59 | It expects the LED number passed through R0. */ | ||
60 | |||
61 | ENTRY(_led_on) | ||
62 | LINK 12; | ||
63 | [--SP] = P0; | ||
64 | [--SP] = R1; | ||
65 | CALL _led_init; | ||
66 | R1 = 1; | ||
67 | R0 += 5; | ||
68 | R1 <<= R0; | ||
69 | P0.H = hi(PORTFIO); | ||
70 | P0.L = lo(PORTFIO); | ||
71 | R0 = W[P0](Z); | ||
72 | SSYNC; | ||
73 | R0 = R0 | R1; | ||
74 | W[P0] = R0.L; | ||
75 | SSYNC; | ||
76 | R1 = [SP++]; | ||
77 | P0 = [SP++]; | ||
78 | UNLINK; | ||
79 | RTS; | ||
80 | .size _led_on, .-_led_on | ||
81 | |||
82 | /* Set one LED off. Leave other LEDs unchanged. */ | ||
83 | |||
84 | ENTRY(_led_off) | ||
85 | LINK 12; | ||
86 | [--SP] = P0; | ||
87 | [--SP] = R1; | ||
88 | CALL _led_init; | ||
89 | R1 = 1; | ||
90 | R0 += 5; | ||
91 | R1 <<= R0; | ||
92 | R1 = ~R1; | ||
93 | P0.H = hi(PORTFIO); | ||
94 | P0.L = lo(PORTFIO); | ||
95 | R0 = W[P0](Z); | ||
96 | SSYNC; | ||
97 | R0 = R0 & R1; | ||
98 | W[P0] = R0.L; | ||
99 | SSYNC; | ||
100 | R1 = [SP++]; | ||
101 | P0 = [SP++]; | ||
102 | UNLINK; | ||
103 | RTS; | ||
104 | .size _led_off, .-_led_off | ||
105 | |||
106 | /* Toggle one LED. Leave other LEDs unchanged. */ | ||
107 | |||
108 | ENTRY(_led_toggle) | ||
109 | LINK 12; | ||
110 | [--SP] = P0; | ||
111 | [--SP] = R1; | ||
112 | CALL _led_init; | ||
113 | R1 = 1; | ||
114 | R0 += 5; | ||
115 | R1 <<= R0; | ||
116 | P0.H = hi(PORTFIO); | ||
117 | P0.L = lo(PORTFIO); | ||
118 | R0 = W[P0](Z); | ||
119 | SSYNC; | ||
120 | R0 = R0 ^ R1; | ||
121 | W[P0] = R0.L; | ||
122 | SSYNC; | ||
123 | R1 = [SP++]; | ||
124 | P0 = [SP++]; | ||
125 | UNLINK; | ||
126 | RTS; | ||
127 | .size _led_toggle, .-_led_toggle | ||
128 | |||
129 | /* Display the number using LEDs in binary format. */ | ||
130 | |||
131 | ENTRY(_led_disp_num) | ||
132 | LINK 12; | ||
133 | [--SP] = P0; | ||
134 | [--SP] = R1; | ||
135 | [--SP] = R2; | ||
136 | CALL _led_init; | ||
137 | R1 = 0x3f(X); | ||
138 | R0 = R0 & R1; | ||
139 | R2 = 6(X); | ||
140 | R0 <<= R2; | ||
141 | R1 <<= R2; | ||
142 | P0.H = hi(PORTFIO); | ||
143 | P0.L = lo(PORTFIO); | ||
144 | R2 = W[P0](Z); | ||
145 | SSYNC; | ||
146 | R1 = ~R1; | ||
147 | R2 = R2 & R1; | ||
148 | R2 = R2 | R0; | ||
149 | W[P0] = R2.L; | ||
150 | SSYNC; | ||
151 | R2 = [SP++]; | ||
152 | R1 = [SP++]; | ||
153 | P0 = [SP++]; | ||
154 | UNLINK; | ||
155 | RTS; | ||
156 | .size _led_disp_num, .-_led_disp_num | ||
157 | |||
158 | /* Toggle the number using LEDs in binary format. */ | ||
159 | |||
160 | ENTRY(_led_toggle_num) | ||
161 | LINK 12; | ||
162 | [--SP] = P0; | ||
163 | [--SP] = R1; | ||
164 | [--SP] = R2; | ||
165 | CALL _led_init; | ||
166 | R1 = 0x3f(X); | ||
167 | R0 = R0 & R1; | ||
168 | R1 = 6(X); | ||
169 | R0 <<= R1; | ||
170 | P0.H = hi(PORTFIO); | ||
171 | P0.L = lo(PORTFIO); | ||
172 | R1 = W[P0](Z); | ||
173 | SSYNC; | ||
174 | R1 = R1 ^ R0; | ||
175 | W[P0] = R1.L; | ||
176 | SSYNC; | ||
177 | R2 = [SP++]; | ||
178 | R1 = [SP++]; | ||
179 | P0 = [SP++]; | ||
180 | UNLINK; | ||
181 | RTS; | ||
182 | .size _led_toggle_num, .-_led_toggle_num | ||
183 | |||
diff --git a/arch/blackfin/mach-bf548/boards/Makefile b/arch/blackfin/mach-bf548/boards/Makefile index eed161dd7845..319ef54c4221 100644 --- a/arch/blackfin/mach-bf548/boards/Makefile +++ b/arch/blackfin/mach-bf548/boards/Makefile | |||
@@ -2,5 +2,5 @@ | |||
2 | # arch/blackfin/mach-bf548/boards/Makefile | 2 | # arch/blackfin/mach-bf548/boards/Makefile |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o | 5 | obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o |
6 | obj-$(CONFIG_BFIN548_BLUETECHNIX_CM) += cm_bf548.o | 6 | obj-$(CONFIG_BFIN548_BLUETECHNIX_CM) += cm_bf548.o |
diff --git a/arch/blackfin/mach-bf548/boards/cm_bf548.c b/arch/blackfin/mach-bf548/boards/cm_bf548.c index 3b74f96d3590..4f4ae8787edf 100644 --- a/arch/blackfin/mach-bf548/boards/cm_bf548.c +++ b/arch/blackfin/mach-bf548/boards/cm_bf548.c | |||
@@ -684,7 +684,7 @@ static struct platform_device *cm_bf548_devices[] __initdata = { | |||
684 | 684 | ||
685 | static int __init cm_bf548_init(void) | 685 | static int __init cm_bf548_init(void) |
686 | { | 686 | { |
687 | printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__); | 687 | printk(KERN_INFO "%s(): registering device resources\n", __func__); |
688 | platform_add_devices(cm_bf548_devices, ARRAY_SIZE(cm_bf548_devices)); | 688 | platform_add_devices(cm_bf548_devices, ARRAY_SIZE(cm_bf548_devices)); |
689 | 689 | ||
690 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) | 690 | #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) |
diff --git a/arch/blackfin/mach-bf548/boards/led.S b/arch/blackfin/mach-bf548/boards/led.S deleted file mode 100644 index f47daf3770d0..000000000000 --- a/arch/blackfin/mach-bf548/boards/led.S +++ /dev/null | |||
@@ -1,172 +0,0 @@ | |||
1 | /**************************************************** | ||
2 | * LED1 ---- PG6 LED2 ---- PG7 * | ||
3 | * LED3 ---- PG8 LED4 ---- PG9 * | ||
4 | * LED5 ---- PG10 LED6 ---- PG11 * | ||
5 | ****************************************************/ | ||
6 | |||
7 | #include <linux/linkage.h> | ||
8 | #include <asm/blackfin.h> | ||
9 | |||
10 | /* All functions in this file save the registers they uses. | ||
11 | So there is no need to save any registers before calling them. */ | ||
12 | |||
13 | .text; | ||
14 | |||
15 | /* Initialize LEDs. */ | ||
16 | |||
17 | ENTRY(_led_init) | ||
18 | LINK 0; | ||
19 | [--SP] = P0; | ||
20 | [--SP] = R0; | ||
21 | [--SP] = R1; | ||
22 | [--SP] = R2; | ||
23 | R1 = (PG6|PG7|PG8|PG9|PG10|PG11)(Z); | ||
24 | R2 = ~R1; | ||
25 | |||
26 | P0.H = hi(PORTG_FER); | ||
27 | P0.L = lo(PORTG_FER); | ||
28 | R0 = W[P0](Z); | ||
29 | SSYNC; | ||
30 | R0 = R0 & R2; | ||
31 | W[P0] = R0.L; | ||
32 | SSYNC; | ||
33 | |||
34 | P0.H = hi(PORTG_DIR_SET); | ||
35 | P0.L = lo(PORTG_DIR_SET); | ||
36 | W[P0] = R1.L; | ||
37 | SSYNC; | ||
38 | |||
39 | P0.H = hi(PORTG_INEN); | ||
40 | P0.L = lo(PORTG_INEN); | ||
41 | R0 = W[P0](Z); | ||
42 | SSYNC; | ||
43 | R0 = R0 & R2; | ||
44 | W[P0] = R0.L; | ||
45 | SSYNC; | ||
46 | |||
47 | R2 = [SP++]; | ||
48 | R1 = [SP++]; | ||
49 | R0 = [SP++]; | ||
50 | P0 = [SP++]; | ||
51 | RTS; | ||
52 | .size _led_init, .-_led_init | ||
53 | |||
54 | /* Set one LED on. Leave other LEDs unchanged. | ||
55 | It expects the LED number passed through R0. */ | ||
56 | |||
57 | ENTRY(_led_on) | ||
58 | LINK 0; | ||
59 | [--SP] = P0; | ||
60 | [--SP] = R1; | ||
61 | CALL _led_init; | ||
62 | R1 = 1; | ||
63 | R0 += 5; | ||
64 | R1 <<= R0; | ||
65 | P0.H = hi(PORTG_SET); | ||
66 | P0.L = lo(PORTG_SET); | ||
67 | W[P0] = R1.L; | ||
68 | SSYNC; | ||
69 | R1 = [SP++]; | ||
70 | P0 = [SP++]; | ||
71 | UNLINK; | ||
72 | RTS; | ||
73 | .size _led_on, .-_led_on | ||
74 | |||
75 | /* Set one LED off. Leave other LEDs unchanged. */ | ||
76 | |||
77 | ENTRY(_led_off) | ||
78 | LINK 0; | ||
79 | [--SP] = P0; | ||
80 | [--SP] = R1; | ||
81 | CALL _led_init; | ||
82 | R1 = 1; | ||
83 | R0 += 5; | ||
84 | R1 <<= R0; | ||
85 | P0.H = hi(PORTG_CLEAR); | ||
86 | P0.L = lo(PORTG_CLEAR); | ||
87 | W[P0] = R1.L; | ||
88 | SSYNC; | ||
89 | R1 = [SP++]; | ||
90 | P0 = [SP++]; | ||
91 | UNLINK; | ||
92 | RTS; | ||
93 | .size _led_off, .-_led_off | ||
94 | |||
95 | /* Toggle one LED. Leave other LEDs unchanged. */ | ||
96 | |||
97 | ENTRY(_led_toggle) | ||
98 | LINK 0; | ||
99 | [--SP] = P0; | ||
100 | [--SP] = R1; | ||
101 | CALL _led_init; | ||
102 | R1 = 1; | ||
103 | R0 += 5; | ||
104 | R1 <<= R0; | ||
105 | P0.H = hi(PORTG); | ||
106 | P0.L = lo(PORTG); | ||
107 | R0 = W[P0](Z); | ||
108 | SSYNC; | ||
109 | R0 = R0 ^ R1; | ||
110 | W[P0] = R0.L; | ||
111 | SSYNC; | ||
112 | R1 = [SP++]; | ||
113 | P0 = [SP++]; | ||
114 | UNLINK; | ||
115 | RTS; | ||
116 | .size _led_toggle, .-_led_toggle | ||
117 | |||
118 | /* Display the number using LEDs in binary format. */ | ||
119 | |||
120 | ENTRY(_led_disp_num) | ||
121 | LINK 0; | ||
122 | [--SP] = P0; | ||
123 | [--SP] = R1; | ||
124 | [--SP] = R2; | ||
125 | CALL _led_init; | ||
126 | R1 = 0x3f(X); | ||
127 | R0 = R0 & R1; | ||
128 | R2 = 6(X); | ||
129 | R0 <<= R2; | ||
130 | R1 <<= R2; | ||
131 | P0.H = hi(PORTG); | ||
132 | P0.L = lo(PORTG); | ||
133 | R2 = W[P0](Z); | ||
134 | SSYNC; | ||
135 | R1 = ~R1; | ||
136 | R2 = R2 & R1; | ||
137 | R2 = R2 | R0; | ||
138 | W[P0] = R2.L; | ||
139 | SSYNC; | ||
140 | R2 = [SP++]; | ||
141 | R1 = [SP++]; | ||
142 | P0 = [SP++]; | ||
143 | UNLINK; | ||
144 | RTS; | ||
145 | .size _led_disp_num, .-_led_disp_num | ||
146 | |||
147 | /* Toggle the number using LEDs in binary format. */ | ||
148 | |||
149 | ENTRY(_led_toggle_num) | ||
150 | LINK 0; | ||
151 | [--SP] = P0; | ||
152 | [--SP] = R1; | ||
153 | [--SP] = R2; | ||
154 | CALL _led_init; | ||
155 | R1 = 0x3f(X); | ||
156 | R0 = R0 & R1; | ||
157 | R1 = 6(X); | ||
158 | R0 <<= R1; | ||
159 | P0.H = hi(PORTG); | ||
160 | P0.L = lo(PORTG); | ||
161 | R1 = W[P0](Z); | ||
162 | SSYNC; | ||
163 | R1 = R1 ^ R0; | ||
164 | W[P0] = R1.L; | ||
165 | SSYNC; | ||
166 | R2 = [SP++]; | ||
167 | R1 = [SP++]; | ||
168 | P0 = [SP++]; | ||
169 | UNLINK; | ||
170 | RTS; | ||
171 | .size _led_toggle_num, .-_led_toggle_num | ||
172 | |||
diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c index ef2db8fd102a..5933656db5a2 100644 --- a/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c | |||
@@ -38,7 +38,6 @@ | |||
38 | */ | 38 | */ |
39 | 39 | ||
40 | static struct fs_struct init_fs = INIT_FS; | 40 | static struct fs_struct init_fs = INIT_FS; |
41 | static struct files_struct init_files = INIT_FILES; | ||
42 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 41 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
43 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 42 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
44 | struct mm_struct init_mm = INIT_MM(init_mm); | 43 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/frv/kernel/init_task.c b/arch/frv/kernel/init_task.c index 22993932b3fc..e2198815b630 100644 --- a/arch/frv/kernel/init_task.c +++ b/arch/frv/kernel/init_task.c | |||
@@ -11,7 +11,6 @@ | |||
11 | 11 | ||
12 | 12 | ||
13 | static struct fs_struct init_fs = INIT_FS; | 13 | static struct fs_struct init_fs = INIT_FS; |
14 | static struct files_struct init_files = INIT_FILES; | ||
15 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 14 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
16 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 15 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
17 | struct mm_struct init_mm = INIT_MM(init_mm); | 16 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c index b841ecfd5d5a..9af7740f32fb 100644 --- a/arch/frv/mm/init.c +++ b/arch/frv/mm/init.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
27 | #include <linux/bootmem.h> | 27 | #include <linux/bootmem.h> |
28 | #include <linux/highmem.h> | 28 | #include <linux/highmem.h> |
29 | #include <linux/module.h> | ||
29 | 30 | ||
30 | #include <asm/setup.h> | 31 | #include <asm/setup.h> |
31 | #include <asm/segment.h> | 32 | #include <asm/segment.h> |
@@ -56,7 +57,9 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); | |||
56 | */ | 57 | */ |
57 | static unsigned long empty_bad_page_table; | 58 | static unsigned long empty_bad_page_table; |
58 | static unsigned long empty_bad_page; | 59 | static unsigned long empty_bad_page; |
60 | |||
59 | unsigned long empty_zero_page; | 61 | unsigned long empty_zero_page; |
62 | EXPORT_SYMBOL(empty_zero_page); | ||
60 | 63 | ||
61 | /*****************************************************************************/ | 64 | /*****************************************************************************/ |
62 | /* | 65 | /* |
diff --git a/arch/h8300/kernel/init_task.c b/arch/h8300/kernel/init_task.c index 19272c2ac56a..93a4899e46c2 100644 --- a/arch/h8300/kernel/init_task.c +++ b/arch/h8300/kernel/init_task.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | 14 | ||
15 | static struct fs_struct init_fs = INIT_FS; | 15 | static struct fs_struct init_fs = INIT_FS; |
16 | static struct files_struct init_files = INIT_FILES; | ||
17 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 16 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
18 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 17 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
19 | struct mm_struct init_mm = INIT_MM(init_mm); | 18 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 0df5f6f75edf..16be41446b5b 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -135,6 +135,7 @@ config IA64_GENERIC | |||
135 | HP-zx1/sx1000 For HP systems | 135 | HP-zx1/sx1000 For HP systems |
136 | HP-zx1/sx1000+swiotlb For HP systems with (broken) DMA-constrained devices. | 136 | HP-zx1/sx1000+swiotlb For HP systems with (broken) DMA-constrained devices. |
137 | SGI-SN2 For SGI Altix systems | 137 | SGI-SN2 For SGI Altix systems |
138 | SGI-UV For SGI UV systems | ||
138 | Ski-simulator For the HP simulator <http://www.hpl.hp.com/research/linux/ski/> | 139 | Ski-simulator For the HP simulator <http://www.hpl.hp.com/research/linux/ski/> |
139 | 140 | ||
140 | If you don't know what to do, choose "generic". | 141 | If you don't know what to do, choose "generic". |
@@ -170,6 +171,18 @@ config IA64_SGI_SN2 | |||
170 | to select this option. If in doubt, select ia64 generic support | 171 | to select this option. If in doubt, select ia64 generic support |
171 | instead. | 172 | instead. |
172 | 173 | ||
174 | config IA64_SGI_UV` | ||
175 | bool "SGI-UV`" | ||
176 | select NUMA | ||
177 | select ACPI_NUMA | ||
178 | select SWIOTLB | ||
179 | help | ||
180 | Selecting this option will optimize the kernel for use on UV based | ||
181 | systems, but the resulting kernel binary will not run on other | ||
182 | types of ia64 systems. If you have an SGI UV system, it's safe | ||
183 | to select this option. If in doubt, select ia64 generic support | ||
184 | instead. | ||
185 | |||
173 | config IA64_HP_SIM | 186 | config IA64_HP_SIM |
174 | bool "Ski-simulator" | 187 | bool "Ski-simulator" |
175 | select SWIOTLB | 188 | select SWIOTLB |
diff --git a/arch/ia64/Makefile b/arch/ia64/Makefile index ec4cca477f49..88f1a55c6c94 100644 --- a/arch/ia64/Makefile +++ b/arch/ia64/Makefile | |||
@@ -63,7 +63,7 @@ drivers-$(CONFIG_PCI) += arch/ia64/pci/ | |||
63 | drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ | 63 | drivers-$(CONFIG_IA64_HP_SIM) += arch/ia64/hp/sim/ |
64 | drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ | 64 | drivers-$(CONFIG_IA64_HP_ZX1) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ |
65 | drivers-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ | 65 | drivers-$(CONFIG_IA64_HP_ZX1_SWIOTLB) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ |
66 | drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/ arch/ia64/sn/ | 66 | drivers-$(CONFIG_IA64_GENERIC) += arch/ia64/hp/common/ arch/ia64/hp/zx1/ arch/ia64/hp/sim/ arch/ia64/sn/ arch/ia64/uv/ |
67 | drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ | 67 | drivers-$(CONFIG_OPROFILE) += arch/ia64/oprofile/ |
68 | 68 | ||
69 | boot := arch/ia64/hp/sim/boot | 69 | boot := arch/ia64/hp/sim/boot |
diff --git a/arch/ia64/ia32/ia32_support.c b/arch/ia64/ia32/ia32_support.c index 896b1ebbfb26..a6965ddafc46 100644 --- a/arch/ia64/ia32/ia32_support.c +++ b/arch/ia64/ia32/ia32_support.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/mm.h> | 17 | #include <linux/mm.h> |
18 | #include <linux/personality.h> | ||
19 | #include <linux/sched.h> | 18 | #include <linux/sched.h> |
20 | 19 | ||
21 | #include <asm/intrinsics.h> | 20 | #include <asm/intrinsics.h> |
@@ -29,7 +28,6 @@ | |||
29 | 28 | ||
30 | extern int die_if_kernel (char *str, struct pt_regs *regs, long err); | 29 | extern int die_if_kernel (char *str, struct pt_regs *regs, long err); |
31 | 30 | ||
32 | struct exec_domain ia32_exec_domain; | ||
33 | struct page *ia32_shared_page[NR_CPUS]; | 31 | struct page *ia32_shared_page[NR_CPUS]; |
34 | unsigned long *ia32_boot_gdt; | 32 | unsigned long *ia32_boot_gdt; |
35 | unsigned long *cpu_gdt_table[NR_CPUS]; | 33 | unsigned long *cpu_gdt_table[NR_CPUS]; |
@@ -240,14 +238,6 @@ ia32_cpu_init (void) | |||
240 | static int __init | 238 | static int __init |
241 | ia32_init (void) | 239 | ia32_init (void) |
242 | { | 240 | { |
243 | ia32_exec_domain.name = "Linux/x86"; | ||
244 | ia32_exec_domain.handler = NULL; | ||
245 | ia32_exec_domain.pers_low = PER_LINUX32; | ||
246 | ia32_exec_domain.pers_high = PER_LINUX32; | ||
247 | ia32_exec_domain.signal_map = default_exec_domain.signal_map; | ||
248 | ia32_exec_domain.signal_invmap = default_exec_domain.signal_invmap; | ||
249 | register_exec_domain(&ia32_exec_domain); | ||
250 | |||
251 | #if PAGE_SHIFT > IA32_PAGE_SHIFT | 241 | #if PAGE_SHIFT > IA32_PAGE_SHIFT |
252 | { | 242 | { |
253 | extern struct kmem_cache *ia64_partial_page_cachep; | 243 | extern struct kmem_cache *ia64_partial_page_cachep; |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 19709a079635..853d1f11be00 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -117,7 +117,10 @@ acpi_get_sysname(void) | |||
117 | if (!strcmp(hdr->oem_id, "HP")) { | 117 | if (!strcmp(hdr->oem_id, "HP")) { |
118 | return "hpzx1"; | 118 | return "hpzx1"; |
119 | } else if (!strcmp(hdr->oem_id, "SGI")) { | 119 | } else if (!strcmp(hdr->oem_id, "SGI")) { |
120 | return "sn2"; | 120 | if (!strcmp(hdr->oem_table_id + 4, "UV")) |
121 | return "uv"; | ||
122 | else | ||
123 | return "sn2"; | ||
121 | } | 124 | } |
122 | 125 | ||
123 | return "dig"; | 126 | return "dig"; |
@@ -130,6 +133,8 @@ acpi_get_sysname(void) | |||
130 | return "hpzx1_swiotlb"; | 133 | return "hpzx1_swiotlb"; |
131 | # elif defined (CONFIG_IA64_SGI_SN2) | 134 | # elif defined (CONFIG_IA64_SGI_SN2) |
132 | return "sn2"; | 135 | return "sn2"; |
136 | # elif defined (CONFIG_IA64_SGI_UV) | ||
137 | return "uv"; | ||
133 | # elif defined (CONFIG_IA64_DIG) | 138 | # elif defined (CONFIG_IA64_DIG) |
134 | return "dig"; | 139 | return "dig"; |
135 | # else | 140 | # else |
@@ -622,6 +627,9 @@ void acpi_unregister_gsi(u32 gsi) | |||
622 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) | 627 | if (acpi_irq_model == ACPI_IRQ_MODEL_PLATFORM) |
623 | return; | 628 | return; |
624 | 629 | ||
630 | if (has_8259 && gsi < 16) | ||
631 | return; | ||
632 | |||
625 | iosapic_unregister_intr(gsi); | 633 | iosapic_unregister_intr(gsi); |
626 | } | 634 | } |
627 | 635 | ||
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index e49ad8c5dc69..ca2bb95726de 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S | |||
@@ -1156,6 +1156,9 @@ skip_rbs_switch: | |||
1156 | * r31 = current->thread_info->flags | 1156 | * r31 = current->thread_info->flags |
1157 | * On exit: | 1157 | * On exit: |
1158 | * p6 = TRUE if work-pending-check needs to be redone | 1158 | * p6 = TRUE if work-pending-check needs to be redone |
1159 | * | ||
1160 | * Interrupts are disabled on entry, reenabled depend on work, and | ||
1161 | * disabled on exit. | ||
1159 | */ | 1162 | */ |
1160 | .work_pending_syscall: | 1163 | .work_pending_syscall: |
1161 | add r2=-8,r2 | 1164 | add r2=-8,r2 |
@@ -1164,16 +1167,16 @@ skip_rbs_switch: | |||
1164 | st8 [r2]=r8 | 1167 | st8 [r2]=r8 |
1165 | st8 [r3]=r10 | 1168 | st8 [r3]=r10 |
1166 | .work_pending: | 1169 | .work_pending: |
1167 | tbit.z p6,p0=r31,TIF_NEED_RESCHED // current_thread_info()->need_resched==0? | 1170 | tbit.z p6,p0=r31,TIF_NEED_RESCHED // is resched not needed? |
1168 | (p6) br.cond.sptk.few .notify | 1171 | (p6) br.cond.sptk.few .notify |
1169 | #ifdef CONFIG_PREEMPT | 1172 | #ifdef CONFIG_PREEMPT |
1170 | (pKStk) dep r21=-1,r0,PREEMPT_ACTIVE_BIT,1 | 1173 | (pKStk) dep r21=-1,r0,PREEMPT_ACTIVE_BIT,1 |
1171 | ;; | 1174 | ;; |
1172 | (pKStk) st4 [r20]=r21 | 1175 | (pKStk) st4 [r20]=r21 |
1173 | ssm psr.i // enable interrupts | ||
1174 | #endif | 1176 | #endif |
1177 | ssm psr.i // enable interrupts | ||
1175 | br.call.spnt.many rp=schedule | 1178 | br.call.spnt.many rp=schedule |
1176 | .ret9: cmp.eq p6,p0=r0,r0 // p6 <- 1 | 1179 | .ret9: cmp.eq p6,p0=r0,r0 // p6 <- 1 (re-check) |
1177 | rsm psr.i // disable interrupts | 1180 | rsm psr.i // disable interrupts |
1178 | ;; | 1181 | ;; |
1179 | #ifdef CONFIG_PREEMPT | 1182 | #ifdef CONFIG_PREEMPT |
@@ -1182,13 +1185,13 @@ skip_rbs_switch: | |||
1182 | (pKStk) st4 [r20]=r0 // preempt_count() <- 0 | 1185 | (pKStk) st4 [r20]=r0 // preempt_count() <- 0 |
1183 | #endif | 1186 | #endif |
1184 | (pLvSys)br.cond.sptk.few .work_pending_syscall_end | 1187 | (pLvSys)br.cond.sptk.few .work_pending_syscall_end |
1185 | br.cond.sptk.many .work_processed_kernel // re-check | 1188 | br.cond.sptk.many .work_processed_kernel |
1186 | 1189 | ||
1187 | .notify: | 1190 | .notify: |
1188 | (pUStk) br.call.spnt.many rp=notify_resume_user | 1191 | (pUStk) br.call.spnt.many rp=notify_resume_user |
1189 | .ret10: cmp.ne p6,p0=r0,r0 // p6 <- 0 | 1192 | .ret10: cmp.ne p6,p0=r0,r0 // p6 <- 0 (don't re-check) |
1190 | (pLvSys)br.cond.sptk.few .work_pending_syscall_end | 1193 | (pLvSys)br.cond.sptk.few .work_pending_syscall_end |
1191 | br.cond.sptk.many .work_processed_kernel // don't re-check | 1194 | br.cond.sptk.many .work_processed_kernel |
1192 | 1195 | ||
1193 | .work_pending_syscall_end: | 1196 | .work_pending_syscall_end: |
1194 | adds r2=PT(R8)+16,r12 | 1197 | adds r2=PT(R8)+16,r12 |
@@ -1196,7 +1199,7 @@ skip_rbs_switch: | |||
1196 | ;; | 1199 | ;; |
1197 | ld8 r8=[r2] | 1200 | ld8 r8=[r2] |
1198 | ld8 r10=[r3] | 1201 | ld8 r10=[r3] |
1199 | br.cond.sptk.many .work_processed_syscall // re-check | 1202 | br.cond.sptk.many .work_processed_syscall |
1200 | 1203 | ||
1201 | END(ia64_leave_kernel) | 1204 | END(ia64_leave_kernel) |
1202 | 1205 | ||
@@ -1234,9 +1237,12 @@ GLOBAL_ENTRY(ia64_invoke_schedule_tail) | |||
1234 | END(ia64_invoke_schedule_tail) | 1237 | END(ia64_invoke_schedule_tail) |
1235 | 1238 | ||
1236 | /* | 1239 | /* |
1237 | * Setup stack and call do_notify_resume_user(). Note that pSys and pNonSys need to | 1240 | * Setup stack and call do_notify_resume_user(), keeping interrupts |
1238 | * be set up by the caller. We declare 8 input registers so the system call | 1241 | * disabled. |
1239 | * args get preserved, in case we need to restart a system call. | 1242 | * |
1243 | * Note that pSys and pNonSys need to be set up by the caller. | ||
1244 | * We declare 8 input registers so the system call args get preserved, | ||
1245 | * in case we need to restart a system call. | ||
1240 | */ | 1246 | */ |
1241 | ENTRY(notify_resume_user) | 1247 | ENTRY(notify_resume_user) |
1242 | .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8) | 1248 | .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8) |
diff --git a/arch/ia64/kernel/init_task.c b/arch/ia64/kernel/init_task.c index bc8efcad28b8..9d7e1c66faf4 100644 --- a/arch/ia64/kernel/init_task.c +++ b/arch/ia64/kernel/init_task.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
19 | 19 | ||
20 | static struct fs_struct init_fs = INIT_FS; | 20 | static struct fs_struct init_fs = INIT_FS; |
21 | static struct files_struct init_files = INIT_FILES; | ||
22 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 21 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
23 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 22 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
24 | struct mm_struct init_mm = INIT_MM(init_mm); | 23 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S index 6678c49daba3..80b44ea052d7 100644 --- a/arch/ia64/kernel/ivt.S +++ b/arch/ia64/kernel/ivt.S | |||
@@ -1076,48 +1076,6 @@ END(ia64_syscall_setup) | |||
1076 | DBG_FAULT(15) | 1076 | DBG_FAULT(15) |
1077 | FAULT(15) | 1077 | FAULT(15) |
1078 | 1078 | ||
1079 | /* | ||
1080 | * Squatting in this space ... | ||
1081 | * | ||
1082 | * This special case dispatcher for illegal operation faults allows preserved | ||
1083 | * registers to be modified through a callback function (asm only) that is handed | ||
1084 | * back from the fault handler in r8. Up to three arguments can be passed to the | ||
1085 | * callback function by returning an aggregate with the callback as its first | ||
1086 | * element, followed by the arguments. | ||
1087 | */ | ||
1088 | ENTRY(dispatch_illegal_op_fault) | ||
1089 | .prologue | ||
1090 | .body | ||
1091 | SAVE_MIN_WITH_COVER | ||
1092 | ssm psr.ic | PSR_DEFAULT_BITS | ||
1093 | ;; | ||
1094 | srlz.i // guarantee that interruption collection is on | ||
1095 | ;; | ||
1096 | (p15) ssm psr.i // restore psr.i | ||
1097 | adds r3=8,r2 // set up second base pointer for SAVE_REST | ||
1098 | ;; | ||
1099 | alloc r14=ar.pfs,0,0,1,0 // must be first in insn group | ||
1100 | mov out0=ar.ec | ||
1101 | ;; | ||
1102 | SAVE_REST | ||
1103 | PT_REGS_UNWIND_INFO(0) | ||
1104 | ;; | ||
1105 | br.call.sptk.many rp=ia64_illegal_op_fault | ||
1106 | .ret0: ;; | ||
1107 | alloc r14=ar.pfs,0,0,3,0 // must be first in insn group | ||
1108 | mov out0=r9 | ||
1109 | mov out1=r10 | ||
1110 | mov out2=r11 | ||
1111 | movl r15=ia64_leave_kernel | ||
1112 | ;; | ||
1113 | mov rp=r15 | ||
1114 | mov b6=r8 | ||
1115 | ;; | ||
1116 | cmp.ne p6,p0=0,r8 | ||
1117 | (p6) br.call.dpnt.many b6=b6 // call returns to ia64_leave_kernel | ||
1118 | br.sptk.many ia64_leave_kernel | ||
1119 | END(dispatch_illegal_op_fault) | ||
1120 | |||
1121 | .org ia64_ivt+0x4000 | 1079 | .org ia64_ivt+0x4000 |
1122 | ///////////////////////////////////////////////////////////////////////////////////////// | 1080 | ///////////////////////////////////////////////////////////////////////////////////////// |
1123 | // 0x4000 Entry 16 (size 64 bundles) Reserved | 1081 | // 0x4000 Entry 16 (size 64 bundles) Reserved |
@@ -1715,6 +1673,48 @@ END(ia32_interrupt) | |||
1715 | DBG_FAULT(67) | 1673 | DBG_FAULT(67) |
1716 | FAULT(67) | 1674 | FAULT(67) |
1717 | 1675 | ||
1676 | /* | ||
1677 | * Squatting in this space ... | ||
1678 | * | ||
1679 | * This special case dispatcher for illegal operation faults allows preserved | ||
1680 | * registers to be modified through a callback function (asm only) that is handed | ||
1681 | * back from the fault handler in r8. Up to three arguments can be passed to the | ||
1682 | * callback function by returning an aggregate with the callback as its first | ||
1683 | * element, followed by the arguments. | ||
1684 | */ | ||
1685 | ENTRY(dispatch_illegal_op_fault) | ||
1686 | .prologue | ||
1687 | .body | ||
1688 | SAVE_MIN_WITH_COVER | ||
1689 | ssm psr.ic | PSR_DEFAULT_BITS | ||
1690 | ;; | ||
1691 | srlz.i // guarantee that interruption collection is on | ||
1692 | ;; | ||
1693 | (p15) ssm psr.i // restore psr.i | ||
1694 | adds r3=8,r2 // set up second base pointer for SAVE_REST | ||
1695 | ;; | ||
1696 | alloc r14=ar.pfs,0,0,1,0 // must be first in insn group | ||
1697 | mov out0=ar.ec | ||
1698 | ;; | ||
1699 | SAVE_REST | ||
1700 | PT_REGS_UNWIND_INFO(0) | ||
1701 | ;; | ||
1702 | br.call.sptk.many rp=ia64_illegal_op_fault | ||
1703 | .ret0: ;; | ||
1704 | alloc r14=ar.pfs,0,0,3,0 // must be first in insn group | ||
1705 | mov out0=r9 | ||
1706 | mov out1=r10 | ||
1707 | mov out2=r11 | ||
1708 | movl r15=ia64_leave_kernel | ||
1709 | ;; | ||
1710 | mov rp=r15 | ||
1711 | mov b6=r8 | ||
1712 | ;; | ||
1713 | cmp.ne p6,p0=0,r8 | ||
1714 | (p6) br.call.dpnt.many b6=b6 // call returns to ia64_leave_kernel | ||
1715 | br.sptk.many ia64_leave_kernel | ||
1716 | END(dispatch_illegal_op_fault) | ||
1717 | |||
1718 | #ifdef CONFIG_IA32_SUPPORT | 1718 | #ifdef CONFIG_IA32_SUPPORT |
1719 | 1719 | ||
1720 | /* | 1720 | /* |
diff --git a/arch/ia64/kernel/minstate.h b/arch/ia64/kernel/minstate.h index 7c548ac52bbc..74b6d670aaef 100644 --- a/arch/ia64/kernel/minstate.h +++ b/arch/ia64/kernel/minstate.h | |||
@@ -15,6 +15,9 @@ | |||
15 | #define ACCOUNT_SYS_ENTER | 15 | #define ACCOUNT_SYS_ENTER |
16 | #endif | 16 | #endif |
17 | 17 | ||
18 | .section ".data.patch.rse", "a" | ||
19 | .previous | ||
20 | |||
18 | /* | 21 | /* |
19 | * DO_SAVE_MIN switches to the kernel stacks (if necessary) and saves | 22 | * DO_SAVE_MIN switches to the kernel stacks (if necessary) and saves |
20 | * the minimum state necessary that allows us to turn psr.ic back | 23 | * the minimum state necessary that allows us to turn psr.ic back |
@@ -40,7 +43,7 @@ | |||
40 | * Note that psr.ic is NOT turned on by this macro. This is so that | 43 | * Note that psr.ic is NOT turned on by this macro. This is so that |
41 | * we can pass interruption state as arguments to a handler. | 44 | * we can pass interruption state as arguments to a handler. |
42 | */ | 45 | */ |
43 | #define DO_SAVE_MIN(COVER,SAVE_IFS,EXTRA) \ | 46 | #define DO_SAVE_MIN(COVER,SAVE_IFS,EXTRA,WORKAROUND) \ |
44 | mov r16=IA64_KR(CURRENT); /* M */ \ | 47 | mov r16=IA64_KR(CURRENT); /* M */ \ |
45 | mov r27=ar.rsc; /* M */ \ | 48 | mov r27=ar.rsc; /* M */ \ |
46 | mov r20=r1; /* A */ \ | 49 | mov r20=r1; /* A */ \ |
@@ -87,6 +90,7 @@ | |||
87 | tbit.nz p15,p0=r29,IA64_PSR_I_BIT; \ | 90 | tbit.nz p15,p0=r29,IA64_PSR_I_BIT; \ |
88 | mov r29=b0 \ | 91 | mov r29=b0 \ |
89 | ;; \ | 92 | ;; \ |
93 | WORKAROUND; \ | ||
90 | adds r16=PT(R8),r1; /* initialize first base pointer */ \ | 94 | adds r16=PT(R8),r1; /* initialize first base pointer */ \ |
91 | adds r17=PT(R9),r1; /* initialize second base pointer */ \ | 95 | adds r17=PT(R9),r1; /* initialize second base pointer */ \ |
92 | (pKStk) mov r18=r0; /* make sure r18 isn't NaT */ \ | 96 | (pKStk) mov r18=r0; /* make sure r18 isn't NaT */ \ |
@@ -206,6 +210,40 @@ | |||
206 | st8 [r25]=r10; /* ar.ssd */ \ | 210 | st8 [r25]=r10; /* ar.ssd */ \ |
207 | ;; | 211 | ;; |
208 | 212 | ||
209 | #define SAVE_MIN_WITH_COVER DO_SAVE_MIN(cover, mov r30=cr.ifs,) | 213 | #define RSE_WORKAROUND \ |
210 | #define SAVE_MIN_WITH_COVER_R19 DO_SAVE_MIN(cover, mov r30=cr.ifs, mov r15=r19) | 214 | (pUStk) extr.u r17=r18,3,6; \ |
211 | #define SAVE_MIN DO_SAVE_MIN( , mov r30=r0, ) | 215 | (pUStk) sub r16=r18,r22; \ |
216 | [1:](pKStk) br.cond.sptk.many 1f; \ | ||
217 | .xdata4 ".data.patch.rse",1b-. \ | ||
218 | ;; \ | ||
219 | cmp.ge p6,p7 = 33,r17; \ | ||
220 | ;; \ | ||
221 | (p6) mov r17=0x310; \ | ||
222 | (p7) mov r17=0x308; \ | ||
223 | ;; \ | ||
224 | cmp.leu p1,p0=r16,r17; \ | ||
225 | (p1) br.cond.sptk.many 1f; \ | ||
226 | dep.z r17=r26,0,62; \ | ||
227 | movl r16=2f; \ | ||
228 | ;; \ | ||
229 | mov ar.pfs=r17; \ | ||
230 | dep r27=r0,r27,16,14; \ | ||
231 | mov b0=r16; \ | ||
232 | ;; \ | ||
233 | br.ret.sptk b0; \ | ||
234 | ;; \ | ||
235 | 2: \ | ||
236 | mov ar.rsc=r0 \ | ||
237 | ;; \ | ||
238 | flushrs; \ | ||
239 | ;; \ | ||
240 | mov ar.bspstore=r22 \ | ||
241 | ;; \ | ||
242 | mov r18=ar.bsp; \ | ||
243 | ;; \ | ||
244 | 1: \ | ||
245 | .pred.rel "mutex", pKStk, pUStk | ||
246 | |||
247 | #define SAVE_MIN_WITH_COVER DO_SAVE_MIN(cover, mov r30=cr.ifs, , RSE_WORKAROUND) | ||
248 | #define SAVE_MIN_WITH_COVER_R19 DO_SAVE_MIN(cover, mov r30=cr.ifs, mov r15=r19, RSE_WORKAROUND) | ||
249 | #define SAVE_MIN DO_SAVE_MIN( , mov r30=r0, , ) | ||
diff --git a/arch/ia64/kernel/palinfo.c b/arch/ia64/kernel/palinfo.c index 4547a2092af9..9dc00f7fe10e 100644 --- a/arch/ia64/kernel/palinfo.c +++ b/arch/ia64/kernel/palinfo.c | |||
@@ -900,12 +900,6 @@ static void | |||
900 | palinfo_smp_call(void *info) | 900 | palinfo_smp_call(void *info) |
901 | { | 901 | { |
902 | palinfo_smp_data_t *data = (palinfo_smp_data_t *)info; | 902 | palinfo_smp_data_t *data = (palinfo_smp_data_t *)info; |
903 | if (data == NULL) { | ||
904 | printk(KERN_ERR "palinfo: data pointer is NULL\n"); | ||
905 | data->ret = 0; /* no output */ | ||
906 | return; | ||
907 | } | ||
908 | /* does this actual call */ | ||
909 | data->ret = (*data->func)(data->page); | 903 | data->ret = (*data->func)(data->page); |
910 | } | 904 | } |
911 | 905 | ||
diff --git a/arch/ia64/kernel/patch.c b/arch/ia64/kernel/patch.c index e0dca8743dbb..b83b2c516008 100644 --- a/arch/ia64/kernel/patch.c +++ b/arch/ia64/kernel/patch.c | |||
@@ -115,6 +115,29 @@ ia64_patch_vtop (unsigned long start, unsigned long end) | |||
115 | ia64_srlz_i(); | 115 | ia64_srlz_i(); |
116 | } | 116 | } |
117 | 117 | ||
118 | /* | ||
119 | * Disable the RSE workaround by turning the conditional branch | ||
120 | * that we tagged in each place the workaround was used into an | ||
121 | * unconditional branch. | ||
122 | */ | ||
123 | void __init | ||
124 | ia64_patch_rse (unsigned long start, unsigned long end) | ||
125 | { | ||
126 | s32 *offp = (s32 *) start; | ||
127 | u64 ip, *b; | ||
128 | |||
129 | while (offp < (s32 *) end) { | ||
130 | ip = (u64) offp + *offp; | ||
131 | |||
132 | b = (u64 *)(ip & -16); | ||
133 | b[1] &= ~0xf800000L; | ||
134 | ia64_fc((void *) ip); | ||
135 | ++offp; | ||
136 | } | ||
137 | ia64_sync_i(); | ||
138 | ia64_srlz_i(); | ||
139 | } | ||
140 | |||
118 | void __init | 141 | void __init |
119 | ia64_patch_mckinley_e9 (unsigned long start, unsigned long end) | 142 | ia64_patch_mckinley_e9 (unsigned long start, unsigned long end) |
120 | { | 143 | { |
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index c1ad27de2dd2..71d05133f556 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
@@ -5013,12 +5013,13 @@ pfm_context_force_terminate(pfm_context_t *ctx, struct pt_regs *regs) | |||
5013 | } | 5013 | } |
5014 | 5014 | ||
5015 | static int pfm_ovfl_notify_user(pfm_context_t *ctx, unsigned long ovfl_pmds); | 5015 | static int pfm_ovfl_notify_user(pfm_context_t *ctx, unsigned long ovfl_pmds); |
5016 | |||
5016 | /* | 5017 | /* |
5017 | * pfm_handle_work() can be called with interrupts enabled | 5018 | * pfm_handle_work() can be called with interrupts enabled |
5018 | * (TIF_NEED_RESCHED) or disabled. The down_interruptible | 5019 | * (TIF_NEED_RESCHED) or disabled. The down_interruptible |
5019 | * call may sleep, therefore we must re-enable interrupts | 5020 | * call may sleep, therefore we must re-enable interrupts |
5020 | * to avoid deadlocks. It is safe to do so because this function | 5021 | * to avoid deadlocks. It is safe to do so because this function |
5021 | * is called ONLY when returning to user level (PUStk=1), in which case | 5022 | * is called ONLY when returning to user level (pUStk=1), in which case |
5022 | * there is no risk of kernel stack overflow due to deep | 5023 | * there is no risk of kernel stack overflow due to deep |
5023 | * interrupt nesting. | 5024 | * interrupt nesting. |
5024 | */ | 5025 | */ |
@@ -5034,7 +5035,8 @@ pfm_handle_work(void) | |||
5034 | 5035 | ||
5035 | ctx = PFM_GET_CTX(current); | 5036 | ctx = PFM_GET_CTX(current); |
5036 | if (ctx == NULL) { | 5037 | if (ctx == NULL) { |
5037 | printk(KERN_ERR "perfmon: [%d] has no PFM context\n", task_pid_nr(current)); | 5038 | printk(KERN_ERR "perfmon: [%d] has no PFM context\n", |
5039 | task_pid_nr(current)); | ||
5038 | return; | 5040 | return; |
5039 | } | 5041 | } |
5040 | 5042 | ||
@@ -5058,11 +5060,12 @@ pfm_handle_work(void) | |||
5058 | /* | 5060 | /* |
5059 | * must be done before we check for simple-reset mode | 5061 | * must be done before we check for simple-reset mode |
5060 | */ | 5062 | */ |
5061 | if (ctx->ctx_fl_going_zombie || ctx->ctx_state == PFM_CTX_ZOMBIE) goto do_zombie; | 5063 | if (ctx->ctx_fl_going_zombie || ctx->ctx_state == PFM_CTX_ZOMBIE) |
5062 | 5064 | goto do_zombie; | |
5063 | 5065 | ||
5064 | //if (CTX_OVFL_NOBLOCK(ctx)) goto skip_blocking; | 5066 | //if (CTX_OVFL_NOBLOCK(ctx)) goto skip_blocking; |
5065 | if (reason == PFM_TRAP_REASON_RESET) goto skip_blocking; | 5067 | if (reason == PFM_TRAP_REASON_RESET) |
5068 | goto skip_blocking; | ||
5066 | 5069 | ||
5067 | /* | 5070 | /* |
5068 | * restore interrupt mask to what it was on entry. | 5071 | * restore interrupt mask to what it was on entry. |
@@ -5110,7 +5113,8 @@ do_zombie: | |||
5110 | /* | 5113 | /* |
5111 | * in case of interruption of down() we don't restart anything | 5114 | * in case of interruption of down() we don't restart anything |
5112 | */ | 5115 | */ |
5113 | if (ret < 0) goto nothing_to_do; | 5116 | if (ret < 0) |
5117 | goto nothing_to_do; | ||
5114 | 5118 | ||
5115 | skip_blocking: | 5119 | skip_blocking: |
5116 | pfm_resume_after_ovfl(ctx, ovfl_regs, regs); | 5120 | pfm_resume_after_ovfl(ctx, ovfl_regs, regs); |
diff --git a/arch/ia64/kernel/process.c b/arch/ia64/kernel/process.c index 58dcfac5ea88..a3a34b4eb038 100644 --- a/arch/ia64/kernel/process.c +++ b/arch/ia64/kernel/process.c | |||
@@ -167,11 +167,18 @@ void tsk_clear_notify_resume(struct task_struct *tsk) | |||
167 | clear_ti_thread_flag(task_thread_info(tsk), TIF_NOTIFY_RESUME); | 167 | clear_ti_thread_flag(task_thread_info(tsk), TIF_NOTIFY_RESUME); |
168 | } | 168 | } |
169 | 169 | ||
170 | /* | ||
171 | * do_notify_resume_user(): | ||
172 | * Called from notify_resume_user at entry.S, with interrupts disabled. | ||
173 | */ | ||
170 | void | 174 | void |
171 | do_notify_resume_user (sigset_t *unused, struct sigscratch *scr, long in_syscall) | 175 | do_notify_resume_user(sigset_t *unused, struct sigscratch *scr, long in_syscall) |
172 | { | 176 | { |
173 | if (fsys_mode(current, &scr->pt)) { | 177 | if (fsys_mode(current, &scr->pt)) { |
174 | /* defer signal-handling etc. until we return to privilege-level 0. */ | 178 | /* |
179 | * defer signal-handling etc. until we return to | ||
180 | * privilege-level 0. | ||
181 | */ | ||
175 | if (!ia64_psr(&scr->pt)->lp) | 182 | if (!ia64_psr(&scr->pt)->lp) |
176 | ia64_psr(&scr->pt)->lp = 1; | 183 | ia64_psr(&scr->pt)->lp = 1; |
177 | return; | 184 | return; |
@@ -179,16 +186,26 @@ do_notify_resume_user (sigset_t *unused, struct sigscratch *scr, long in_syscall | |||
179 | 186 | ||
180 | #ifdef CONFIG_PERFMON | 187 | #ifdef CONFIG_PERFMON |
181 | if (current->thread.pfm_needs_checking) | 188 | if (current->thread.pfm_needs_checking) |
189 | /* | ||
190 | * Note: pfm_handle_work() allow us to call it with interrupts | ||
191 | * disabled, and may enable interrupts within the function. | ||
192 | */ | ||
182 | pfm_handle_work(); | 193 | pfm_handle_work(); |
183 | #endif | 194 | #endif |
184 | 195 | ||
185 | /* deal with pending signal delivery */ | 196 | /* deal with pending signal delivery */ |
186 | if (test_thread_flag(TIF_SIGPENDING)) | 197 | if (test_thread_flag(TIF_SIGPENDING)) { |
198 | local_irq_enable(); /* force interrupt enable */ | ||
187 | ia64_do_signal(scr, in_syscall); | 199 | ia64_do_signal(scr, in_syscall); |
200 | } | ||
188 | 201 | ||
189 | /* copy user rbs to kernel rbs */ | 202 | /* copy user rbs to kernel rbs */ |
190 | if (unlikely(test_thread_flag(TIF_RESTORE_RSE))) | 203 | if (unlikely(test_thread_flag(TIF_RESTORE_RSE))) { |
204 | local_irq_enable(); /* force interrupt enable */ | ||
191 | ia64_sync_krbs(); | 205 | ia64_sync_krbs(); |
206 | } | ||
207 | |||
208 | local_irq_disable(); /* force interrupt disable */ | ||
192 | } | 209 | } |
193 | 210 | ||
194 | static int pal_halt = 1; | 211 | static int pal_halt = 1; |
diff --git a/arch/ia64/kernel/sal.c b/arch/ia64/kernel/sal.c index a3022dc48ef8..7e0259709c04 100644 --- a/arch/ia64/kernel/sal.c +++ b/arch/ia64/kernel/sal.c | |||
@@ -229,6 +229,14 @@ static void __init sal_desc_ap_wakeup(void *p) { } | |||
229 | */ | 229 | */ |
230 | static int sal_cache_flush_drops_interrupts; | 230 | static int sal_cache_flush_drops_interrupts; |
231 | 231 | ||
232 | static int __init | ||
233 | force_pal_cache_flush(char *str) | ||
234 | { | ||
235 | sal_cache_flush_drops_interrupts = 1; | ||
236 | return 0; | ||
237 | } | ||
238 | early_param("force_pal_cache_flush", force_pal_cache_flush); | ||
239 | |||
232 | void __init | 240 | void __init |
233 | check_sal_cache_flush (void) | 241 | check_sal_cache_flush (void) |
234 | { | 242 | { |
@@ -237,6 +245,9 @@ check_sal_cache_flush (void) | |||
237 | u64 vector, cache_type = 3; | 245 | u64 vector, cache_type = 3; |
238 | struct ia64_sal_retval isrv; | 246 | struct ia64_sal_retval isrv; |
239 | 247 | ||
248 | if (sal_cache_flush_drops_interrupts) | ||
249 | return; | ||
250 | |||
240 | cpu = get_cpu(); | 251 | cpu = get_cpu(); |
241 | local_irq_save(flags); | 252 | local_irq_save(flags); |
242 | 253 | ||
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 5015ca1275ca..f48a809c686d 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -239,6 +239,25 @@ __initcall(register_memory); | |||
239 | 239 | ||
240 | 240 | ||
241 | #ifdef CONFIG_KEXEC | 241 | #ifdef CONFIG_KEXEC |
242 | |||
243 | /* | ||
244 | * This function checks if the reserved crashkernel is allowed on the specific | ||
245 | * IA64 machine flavour. Machines without an IO TLB use swiotlb and require | ||
246 | * some memory below 4 GB (i.e. in 32 bit area), see the implementation of | ||
247 | * lib/swiotlb.c. The hpzx1 architecture has an IO TLB but cannot use that | ||
248 | * in kdump case. See the comment in sba_init() in sba_iommu.c. | ||
249 | * | ||
250 | * So, the only machvec that really supports loading the kdump kernel | ||
251 | * over 4 GB is "sn2". | ||
252 | */ | ||
253 | static int __init check_crashkernel_memory(unsigned long pbase, size_t size) | ||
254 | { | ||
255 | if (ia64_platform_is("sn2") || ia64_platform_is("uv")) | ||
256 | return 1; | ||
257 | else | ||
258 | return pbase < (1UL << 32); | ||
259 | } | ||
260 | |||
242 | static void __init setup_crashkernel(unsigned long total, int *n) | 261 | static void __init setup_crashkernel(unsigned long total, int *n) |
243 | { | 262 | { |
244 | unsigned long long base = 0, size = 0; | 263 | unsigned long long base = 0, size = 0; |
@@ -252,6 +271,16 @@ static void __init setup_crashkernel(unsigned long total, int *n) | |||
252 | base = kdump_find_rsvd_region(size, | 271 | base = kdump_find_rsvd_region(size, |
253 | rsvd_region, *n); | 272 | rsvd_region, *n); |
254 | } | 273 | } |
274 | |||
275 | if (!check_crashkernel_memory(base, size)) { | ||
276 | pr_warning("crashkernel: There would be kdump memory " | ||
277 | "at %ld GB but this is unusable because it " | ||
278 | "must\nbe below 4 GB. Change the memory " | ||
279 | "configuration of the machine.\n", | ||
280 | (unsigned long)(base >> 30)); | ||
281 | return; | ||
282 | } | ||
283 | |||
255 | if (base != ~0UL) { | 284 | if (base != ~0UL) { |
256 | printk(KERN_INFO "Reserving %ldMB of memory at %ldMB " | 285 | printk(KERN_INFO "Reserving %ldMB of memory at %ldMB " |
257 | "for crashkernel (System RAM: %ldMB)\n", | 286 | "for crashkernel (System RAM: %ldMB)\n", |
@@ -531,6 +560,17 @@ setup_arch (char **cmdline_p) | |||
531 | /* process SAL system table: */ | 560 | /* process SAL system table: */ |
532 | ia64_sal_init(__va(efi.sal_systab)); | 561 | ia64_sal_init(__va(efi.sal_systab)); |
533 | 562 | ||
563 | #ifdef CONFIG_ITANIUM | ||
564 | ia64_patch_rse((u64) __start___rse_patchlist, (u64) __end___rse_patchlist); | ||
565 | #else | ||
566 | { | ||
567 | u64 num_phys_stacked; | ||
568 | |||
569 | if (ia64_pal_rse_info(&num_phys_stacked, 0) == 0 && num_phys_stacked > 96) | ||
570 | ia64_patch_rse((u64) __start___rse_patchlist, (u64) __end___rse_patchlist); | ||
571 | } | ||
572 | #endif | ||
573 | |||
534 | #ifdef CONFIG_SMP | 574 | #ifdef CONFIG_SMP |
535 | cpu_physical_id(0) = hard_smp_processor_id(); | 575 | cpu_physical_id(0) = hard_smp_processor_id(); |
536 | #endif | 576 | #endif |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 80622acc95de..5929ab10a289 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -156,6 +156,13 @@ SECTIONS | |||
156 | __end___vtop_patchlist = .; | 156 | __end___vtop_patchlist = .; |
157 | } | 157 | } |
158 | 158 | ||
159 | .data.patch.rse : AT(ADDR(.data.patch.rse) - LOAD_OFFSET) | ||
160 | { | ||
161 | __start___rse_patchlist = .; | ||
162 | *(.data.patch.rse) | ||
163 | __end___rse_patchlist = .; | ||
164 | } | ||
165 | |||
159 | .data.patch.mckinley_e9 : AT(ADDR(.data.patch.mckinley_e9) - LOAD_OFFSET) | 166 | .data.patch.mckinley_e9 : AT(ADDR(.data.patch.mckinley_e9) - LOAD_OFFSET) |
160 | { | 167 | { |
161 | __start___mckinley_e9_bundles = .; | 168 | __start___mckinley_e9_bundles = .; |
diff --git a/arch/ia64/kvm/Makefile b/arch/ia64/kvm/Makefile index 52353397a1a4..112791dd2542 100644 --- a/arch/ia64/kvm/Makefile +++ b/arch/ia64/kvm/Makefile | |||
@@ -7,7 +7,6 @@ offsets-file := asm-offsets.h | |||
7 | always := $(offsets-file) | 7 | always := $(offsets-file) |
8 | targets := $(offsets-file) | 8 | targets := $(offsets-file) |
9 | targets += arch/ia64/kvm/asm-offsets.s | 9 | targets += arch/ia64/kvm/asm-offsets.s |
10 | clean-files := $(addprefix $(objtree)/,$(targets) $(obj)/memcpy.S $(obj)/memset.S) | ||
11 | 10 | ||
12 | # Default sed regexp - multiline due to syntax constraints | 11 | # Default sed regexp - multiline due to syntax constraints |
13 | define sed-y | 12 | define sed-y |
@@ -54,5 +53,5 @@ EXTRA_CFLAGS_vcpu.o += -mfixed-range=f2-f5,f12-f127 | |||
54 | kvm-intel-objs = vmm.o vmm_ivt.o trampoline.o vcpu.o optvfault.o mmio.o \ | 53 | kvm-intel-objs = vmm.o vmm_ivt.o trampoline.o vcpu.o optvfault.o mmio.o \ |
55 | vtlb.o process.o | 54 | vtlb.o process.o |
56 | #Add link memcpy and memset to avoid possible structure assignment error | 55 | #Add link memcpy and memset to avoid possible structure assignment error |
57 | kvm-intel-objs += ../lib/memset.o ../lib/memcpy.o | 56 | kvm-intel-objs += memcpy.o memset.o |
58 | obj-$(CONFIG_KVM_INTEL) += kvm-intel.o | 57 | obj-$(CONFIG_KVM_INTEL) += kvm-intel.o |
diff --git a/arch/ia64/kvm/memcpy.S b/arch/ia64/kvm/memcpy.S new file mode 100644 index 000000000000..c04cdbe9f80f --- /dev/null +++ b/arch/ia64/kvm/memcpy.S | |||
@@ -0,0 +1 @@ | |||
#include "../lib/memcpy.S" | |||
diff --git a/arch/ia64/kvm/memset.S b/arch/ia64/kvm/memset.S new file mode 100644 index 000000000000..83c3066d844a --- /dev/null +++ b/arch/ia64/kvm/memset.S | |||
@@ -0,0 +1 @@ | |||
#include "../lib/memset.S" | |||
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index fc6c6636ffda..200100ea7610 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -719,3 +719,28 @@ out: | |||
719 | EXPORT_SYMBOL_GPL(remove_memory); | 719 | EXPORT_SYMBOL_GPL(remove_memory); |
720 | #endif /* CONFIG_MEMORY_HOTREMOVE */ | 720 | #endif /* CONFIG_MEMORY_HOTREMOVE */ |
721 | #endif | 721 | #endif |
722 | |||
723 | /* | ||
724 | * Even when CONFIG_IA32_SUPPORT is not enabled it is | ||
725 | * useful to have the Linux/x86 domain registered to | ||
726 | * avoid an attempted module load when emulators call | ||
727 | * personality(PER_LINUX32). This saves several milliseconds | ||
728 | * on each such call. | ||
729 | */ | ||
730 | static struct exec_domain ia32_exec_domain; | ||
731 | |||
732 | static int __init | ||
733 | per_linux32_init(void) | ||
734 | { | ||
735 | ia32_exec_domain.name = "Linux/x86"; | ||
736 | ia32_exec_domain.handler = NULL; | ||
737 | ia32_exec_domain.pers_low = PER_LINUX32; | ||
738 | ia32_exec_domain.pers_high = PER_LINUX32; | ||
739 | ia32_exec_domain.signal_map = default_exec_domain.signal_map; | ||
740 | ia32_exec_domain.signal_invmap = default_exec_domain.signal_invmap; | ||
741 | register_exec_domain(&ia32_exec_domain); | ||
742 | |||
743 | return 0; | ||
744 | } | ||
745 | |||
746 | __initcall(per_linux32_init); | ||
diff --git a/arch/ia64/uv/Makefile b/arch/ia64/uv/Makefile new file mode 100644 index 000000000000..aa9f91947c49 --- /dev/null +++ b/arch/ia64/uv/Makefile | |||
@@ -0,0 +1,12 @@ | |||
1 | # arch/ia64/uv/Makefile | ||
2 | # | ||
3 | # This file is subject to the terms and conditions of the GNU General Public | ||
4 | # License. See the file "COPYING" in the main directory of this archive | ||
5 | # for more details. | ||
6 | # | ||
7 | # Copyright (C) 2008 Silicon Graphics, Inc. All Rights Reserved. | ||
8 | # | ||
9 | # Makefile for the sn uv subplatform | ||
10 | # | ||
11 | |||
12 | obj-y += kernel/ | ||
diff --git a/arch/ia64/uv/kernel/Makefile b/arch/ia64/uv/kernel/Makefile new file mode 100644 index 000000000000..8d92b4684d8e --- /dev/null +++ b/arch/ia64/uv/kernel/Makefile | |||
@@ -0,0 +1,13 @@ | |||
1 | # arch/ia64/uv/kernel/Makefile | ||
2 | # | ||
3 | # This file is subject to the terms and conditions of the GNU General Public | ||
4 | # License. See the file "COPYING" in the main directory of this archive | ||
5 | # for more details. | ||
6 | # | ||
7 | # Copyright (C) 2008 Silicon Graphics, Inc. All Rights Reserved. | ||
8 | # | ||
9 | |||
10 | EXTRA_CFLAGS += -Iarch/ia64/sn/include | ||
11 | |||
12 | obj-y += setup.o | ||
13 | obj-$(CONFIG_IA64_GENERIC) += machvec.o | ||
diff --git a/arch/ia64/uv/kernel/machvec.c b/arch/ia64/uv/kernel/machvec.c new file mode 100644 index 000000000000..50737a9dca74 --- /dev/null +++ b/arch/ia64/uv/kernel/machvec.c | |||
@@ -0,0 +1,11 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (c) 2008 Silicon Graphics, Inc. All Rights Reserved. | ||
7 | */ | ||
8 | |||
9 | #define MACHVEC_PLATFORM_NAME uv | ||
10 | #define MACHVEC_PLATFORM_HEADER <asm/machvec_uv.h> | ||
11 | #include <asm/machvec_init.h> | ||
diff --git a/arch/ia64/uv/kernel/setup.c b/arch/ia64/uv/kernel/setup.c new file mode 100644 index 000000000000..9aa743203c3c --- /dev/null +++ b/arch/ia64/uv/kernel/setup.c | |||
@@ -0,0 +1,98 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * SGI UV Core Functions | ||
7 | * | ||
8 | * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved. | ||
9 | */ | ||
10 | |||
11 | #include <linux/module.h> | ||
12 | #include <linux/percpu.h> | ||
13 | #include <asm/sn/simulator.h> | ||
14 | #include <asm/uv/uv_mmrs.h> | ||
15 | #include <asm/uv/uv_hub.h> | ||
16 | |||
17 | DEFINE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); | ||
18 | EXPORT_PER_CPU_SYMBOL_GPL(__uv_hub_info); | ||
19 | |||
20 | |||
21 | struct redir_addr { | ||
22 | unsigned long redirect; | ||
23 | unsigned long alias; | ||
24 | }; | ||
25 | |||
26 | #define DEST_SHIFT UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR_DEST_BASE_SHFT | ||
27 | |||
28 | static __initdata struct redir_addr redir_addrs[] = { | ||
29 | {UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR, UVH_SI_ALIAS0_OVERLAY_CONFIG}, | ||
30 | {UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR, UVH_SI_ALIAS1_OVERLAY_CONFIG}, | ||
31 | {UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR, UVH_SI_ALIAS2_OVERLAY_CONFIG}, | ||
32 | }; | ||
33 | |||
34 | static __init void get_lowmem_redirect(unsigned long *base, unsigned long *size) | ||
35 | { | ||
36 | union uvh_si_alias0_overlay_config_u alias; | ||
37 | union uvh_rh_gam_alias210_redirect_config_2_mmr_u redirect; | ||
38 | int i; | ||
39 | |||
40 | for (i = 0; i < ARRAY_SIZE(redir_addrs); i++) { | ||
41 | alias.v = uv_read_local_mmr(redir_addrs[i].alias); | ||
42 | if (alias.s.base == 0) { | ||
43 | *size = (1UL << alias.s.m_alias); | ||
44 | redirect.v = uv_read_local_mmr(redir_addrs[i].redirect); | ||
45 | *base = (unsigned long)redirect.s.dest_base << DEST_SHIFT; | ||
46 | return; | ||
47 | } | ||
48 | } | ||
49 | BUG(); | ||
50 | } | ||
51 | |||
52 | void __init uv_setup(char **cmdline_p) | ||
53 | { | ||
54 | union uvh_si_addr_map_config_u m_n_config; | ||
55 | union uvh_node_id_u node_id; | ||
56 | unsigned long gnode_upper; | ||
57 | int nid, cpu, m_val, n_val; | ||
58 | unsigned long mmr_base, lowmem_redir_base, lowmem_redir_size; | ||
59 | |||
60 | if (IS_MEDUSA()) { | ||
61 | lowmem_redir_base = 0; | ||
62 | lowmem_redir_size = 0; | ||
63 | node_id.v = 0; | ||
64 | m_n_config.s.m_skt = 37; | ||
65 | m_n_config.s.n_skt = 0; | ||
66 | mmr_base = 0; | ||
67 | } else { | ||
68 | get_lowmem_redirect(&lowmem_redir_base, &lowmem_redir_size); | ||
69 | node_id.v = uv_read_local_mmr(UVH_NODE_ID); | ||
70 | m_n_config.v = uv_read_local_mmr(UVH_SI_ADDR_MAP_CONFIG); | ||
71 | mmr_base = | ||
72 | uv_read_local_mmr(UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR) & | ||
73 | ~UV_MMR_ENABLE; | ||
74 | } | ||
75 | |||
76 | m_val = m_n_config.s.m_skt; | ||
77 | n_val = m_n_config.s.n_skt; | ||
78 | printk(KERN_DEBUG "UV: global MMR base 0x%lx\n", mmr_base); | ||
79 | |||
80 | gnode_upper = (((unsigned long)node_id.s.node_id) & | ||
81 | ~((1 << n_val) - 1)) << m_val; | ||
82 | |||
83 | for_each_present_cpu(cpu) { | ||
84 | nid = cpu_to_node(cpu); | ||
85 | uv_cpu_hub_info(cpu)->lowmem_remap_base = lowmem_redir_base; | ||
86 | uv_cpu_hub_info(cpu)->lowmem_remap_top = | ||
87 | lowmem_redir_base + lowmem_redir_size; | ||
88 | uv_cpu_hub_info(cpu)->m_val = m_val; | ||
89 | uv_cpu_hub_info(cpu)->n_val = m_val; | ||
90 | uv_cpu_hub_info(cpu)->pnode_mask = (1 << n_val) -1; | ||
91 | uv_cpu_hub_info(cpu)->gpa_mask = (1 << (m_val + n_val)) - 1; | ||
92 | uv_cpu_hub_info(cpu)->gnode_upper = gnode_upper; | ||
93 | uv_cpu_hub_info(cpu)->global_mmr_base = mmr_base; | ||
94 | uv_cpu_hub_info(cpu)->coherency_domain_number = 0;/* ZZZ */ | ||
95 | printk(KERN_DEBUG "UV cpu %d, nid %d\n", cpu, nid); | ||
96 | } | ||
97 | } | ||
98 | |||
diff --git a/arch/m32r/kernel/init_task.c b/arch/m32r/kernel/init_task.c index 9e508fd9d970..0d658dbb6766 100644 --- a/arch/m32r/kernel/init_task.c +++ b/arch/m32r/kernel/init_task.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/pgtable.h> | 12 | #include <asm/pgtable.h> |
13 | 13 | ||
14 | static struct fs_struct init_fs = INIT_FS; | 14 | static struct fs_struct init_fs = INIT_FS; |
15 | static struct files_struct init_files = INIT_FILES; | ||
16 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 15 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
17 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 16 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
18 | struct mm_struct init_mm = INIT_MM(init_mm); | 17 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig index 65db2261b9ea..55ea52fe6aca 100644 --- a/arch/m68k/Kconfig +++ b/arch/m68k/Kconfig | |||
@@ -44,7 +44,7 @@ config GENERIC_IOMAP | |||
44 | 44 | ||
45 | config ARCH_MAY_HAVE_PC_FDC | 45 | config ARCH_MAY_HAVE_PC_FDC |
46 | bool | 46 | bool |
47 | depends on Q40 || (BROKEN && SUN3X) | 47 | depends on BROKEN && (Q40 || SUN3X) |
48 | default y | 48 | default y |
49 | 49 | ||
50 | config NO_IOPORT | 50 | config NO_IOPORT |
@@ -539,13 +539,6 @@ config AMIGA_BUILTIN_SERIAL | |||
539 | 539 | ||
540 | To compile this driver as a module, choose M here. | 540 | To compile this driver as a module, choose M here. |
541 | 541 | ||
542 | config WHIPPET_SERIAL | ||
543 | tristate "Hisoft Whippet PCMCIA serial support" | ||
544 | depends on AMIGA_PCMCIA | ||
545 | help | ||
546 | HiSoft has a web page at <http://www.hisoft.co.uk/>, but there | ||
547 | is no listing for the Whippet in their Amiga section. | ||
548 | |||
549 | config MULTIFACE_III_TTY | 542 | config MULTIFACE_III_TTY |
550 | tristate "Multiface Card III serial support" | 543 | tristate "Multiface Card III serial support" |
551 | depends on AMIGA | 544 | depends on AMIGA |
diff --git a/arch/m68k/configs/amiga_defconfig b/arch/m68k/configs/amiga_defconfig index e41958371367..dca50da9ffd0 100644 --- a/arch/m68k/configs/amiga_defconfig +++ b/arch/m68k/configs/amiga_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:06 2008 | 4 | # Sun May 18 14:44:41 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -141,6 +144,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
141 | CONFIG_NEED_MULTIPLE_NODES=y | 144 | CONFIG_NEED_MULTIPLE_NODES=y |
142 | # CONFIG_SPARSEMEM_STATIC is not set | 145 | # CONFIG_SPARSEMEM_STATIC is not set |
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
147 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 148 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
145 | # CONFIG_RESOURCES_64BIT is not set | 149 | # CONFIG_RESOURCES_64BIT is not set |
146 | CONFIG_ZONE_DMA_FLAG=1 | 150 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -222,8 +226,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | 226 | CONFIG_INET6_XFRM_MODE_BEET=m |
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 227 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
224 | CONFIG_IPV6_SIT=m | 228 | CONFIG_IPV6_SIT=m |
229 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
225 | CONFIG_IPV6_TUNNEL=m | 230 | CONFIG_IPV6_TUNNEL=m |
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 231 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
232 | # CONFIG_IPV6_MROUTE is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | 233 | # CONFIG_NETWORK_SECMARK is not set |
228 | CONFIG_NETFILTER=y | 234 | CONFIG_NETFILTER=y |
229 | # CONFIG_NETFILTER_DEBUG is not set | 235 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -239,6 +245,7 @@ CONFIG_NF_CONNTRACK=m | |||
239 | CONFIG_NF_CT_ACCT=y | 245 | CONFIG_NF_CT_ACCT=y |
240 | CONFIG_NF_CONNTRACK_MARK=y | 246 | CONFIG_NF_CONNTRACK_MARK=y |
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 247 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
248 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | 249 | CONFIG_NF_CT_PROTO_GRE=m |
243 | CONFIG_NF_CT_PROTO_SCTP=m | 250 | CONFIG_NF_CT_PROTO_SCTP=m |
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | 251 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -317,6 +324,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
317 | CONFIG_IP_NF_TARGET_NETMAP=m | 324 | CONFIG_IP_NF_TARGET_NETMAP=m |
318 | CONFIG_NF_NAT_SNMP_BASIC=m | 325 | CONFIG_NF_NAT_SNMP_BASIC=m |
319 | CONFIG_NF_NAT_PROTO_GRE=m | 326 | CONFIG_NF_NAT_PROTO_GRE=m |
327 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
328 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
320 | CONFIG_NF_NAT_FTP=m | 329 | CONFIG_NF_NAT_FTP=m |
321 | CONFIG_NF_NAT_IRC=m | 330 | CONFIG_NF_NAT_IRC=m |
322 | CONFIG_NF_NAT_TFTP=m | 331 | CONFIG_NF_NAT_TFTP=m |
@@ -410,8 +419,6 @@ CONFIG_IEEE80211=m | |||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | 419 | CONFIG_IEEE80211_CRYPT_WEP=m |
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | 420 | CONFIG_IEEE80211_CRYPT_CCMP=m |
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | 421 | CONFIG_IEEE80211_CRYPT_TKIP=m |
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | 422 | # CONFIG_RFKILL is not set |
416 | # CONFIG_NET_9P is not set | 423 | # CONFIG_NET_9P is not set |
417 | 424 | ||
@@ -477,27 +484,12 @@ CONFIG_IDE_PROC_FS=y | |||
477 | # | 484 | # |
478 | # IDE chipset support/bugfixes | 485 | # IDE chipset support/bugfixes |
479 | # | 486 | # |
480 | # CONFIG_IDE_GENERIC is not set | ||
481 | # CONFIG_BLK_DEV_PLATFORM is not set | 487 | # CONFIG_BLK_DEV_PLATFORM is not set |
482 | CONFIG_BLK_DEV_GAYLE=y | 488 | CONFIG_BLK_DEV_GAYLE=y |
483 | CONFIG_BLK_DEV_IDEDOUBLER=y | 489 | CONFIG_BLK_DEV_IDEDOUBLER=y |
484 | CONFIG_BLK_DEV_BUDDHA=y | 490 | CONFIG_BLK_DEV_BUDDHA=y |
485 | |||
486 | # | ||
487 | # Other IDE chipsets support | ||
488 | # | ||
489 | |||
490 | # | ||
491 | # Note: most of these also require special kernel boot parameters | ||
492 | # | ||
493 | # CONFIG_BLK_DEV_4DRIVES is not set | ||
494 | # CONFIG_BLK_DEV_ALI14XX is not set | ||
495 | # CONFIG_BLK_DEV_DTC2278 is not set | ||
496 | # CONFIG_BLK_DEV_HT6560B is not set | ||
497 | # CONFIG_BLK_DEV_QD65XX is not set | ||
498 | # CONFIG_BLK_DEV_UMC8672 is not set | ||
499 | # CONFIG_BLK_DEV_IDEDMA is not set | 491 | # CONFIG_BLK_DEV_IDEDMA is not set |
500 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set | 492 | # CONFIG_BLK_DEV_HD_ONLY is not set |
501 | # CONFIG_BLK_DEV_HD is not set | 493 | # CONFIG_BLK_DEV_HD is not set |
502 | 494 | ||
503 | # | 495 | # |
@@ -626,6 +618,7 @@ CONFIG_APNE=m | |||
626 | # | 618 | # |
627 | # CONFIG_WLAN_PRE80211 is not set | 619 | # CONFIG_WLAN_PRE80211 is not set |
628 | # CONFIG_WLAN_80211 is not set | 620 | # CONFIG_WLAN_80211 is not set |
621 | # CONFIG_IWLWIFI_LEDS is not set | ||
629 | # CONFIG_WAN is not set | 622 | # CONFIG_WAN is not set |
630 | # CONFIG_PLIP is not set | 623 | # CONFIG_PLIP is not set |
631 | CONFIG_PPP=m | 624 | CONFIG_PPP=m |
@@ -707,6 +700,7 @@ CONFIG_INPUT_JOYSTICK=y | |||
707 | # CONFIG_JOYSTICK_SPACEBALL is not set | 700 | # CONFIG_JOYSTICK_SPACEBALL is not set |
708 | # CONFIG_JOYSTICK_STINGER is not set | 701 | # CONFIG_JOYSTICK_STINGER is not set |
709 | # CONFIG_JOYSTICK_TWIDJOY is not set | 702 | # CONFIG_JOYSTICK_TWIDJOY is not set |
703 | # CONFIG_JOYSTICK_ZHENHUA is not set | ||
710 | # CONFIG_JOYSTICK_DB9 is not set | 704 | # CONFIG_JOYSTICK_DB9 is not set |
711 | # CONFIG_JOYSTICK_GAMECON is not set | 705 | # CONFIG_JOYSTICK_GAMECON is not set |
712 | # CONFIG_JOYSTICK_TURBOGRAFX is not set | 706 | # CONFIG_JOYSTICK_TURBOGRAFX is not set |
@@ -731,6 +725,7 @@ CONFIG_VT=y | |||
731 | CONFIG_VT_CONSOLE=y | 725 | CONFIG_VT_CONSOLE=y |
732 | CONFIG_HW_CONSOLE=y | 726 | CONFIG_HW_CONSOLE=y |
733 | CONFIG_VT_HW_CONSOLE_BINDING=y | 727 | CONFIG_VT_HW_CONSOLE_BINDING=y |
728 | # CONFIG_DEVKMEM is not set | ||
734 | # CONFIG_SERIAL_NONSTANDARD is not set | 729 | # CONFIG_SERIAL_NONSTANDARD is not set |
735 | CONFIG_A2232=m | 730 | CONFIG_A2232=m |
736 | 731 | ||
@@ -757,12 +752,7 @@ CONFIG_GEN_RTC_X=y | |||
757 | # CONFIG_RAW_DRIVER is not set | 752 | # CONFIG_RAW_DRIVER is not set |
758 | # CONFIG_TCG_TPM is not set | 753 | # CONFIG_TCG_TPM is not set |
759 | # CONFIG_I2C is not set | 754 | # CONFIG_I2C is not set |
760 | |||
761 | # | ||
762 | # SPI support | ||
763 | # | ||
764 | # CONFIG_SPI is not set | 755 | # CONFIG_SPI is not set |
765 | # CONFIG_SPI_MASTER is not set | ||
766 | # CONFIG_W1 is not set | 756 | # CONFIG_W1 is not set |
767 | # CONFIG_POWER_SUPPLY is not set | 757 | # CONFIG_POWER_SUPPLY is not set |
768 | # CONFIG_HWMON is not set | 758 | # CONFIG_HWMON is not set |
@@ -779,12 +769,22 @@ CONFIG_SSB_POSSIBLE=y | |||
779 | # Multifunction device drivers | 769 | # Multifunction device drivers |
780 | # | 770 | # |
781 | # CONFIG_MFD_SM501 is not set | 771 | # CONFIG_MFD_SM501 is not set |
772 | # CONFIG_HTC_PASIC3 is not set | ||
782 | 773 | ||
783 | # | 774 | # |
784 | # Multimedia devices | 775 | # Multimedia devices |
785 | # | 776 | # |
777 | |||
778 | # | ||
779 | # Multimedia core support | ||
780 | # | ||
786 | # CONFIG_VIDEO_DEV is not set | 781 | # CONFIG_VIDEO_DEV is not set |
787 | # CONFIG_DVB_CORE is not set | 782 | # CONFIG_DVB_CORE is not set |
783 | # CONFIG_VIDEO_MEDIA is not set | ||
784 | |||
785 | # | ||
786 | # Multimedia drivers | ||
787 | # | ||
788 | # CONFIG_DAB is not set | 788 | # CONFIG_DAB is not set |
789 | 789 | ||
790 | # | 790 | # |
@@ -802,8 +802,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
802 | # CONFIG_FB_SYS_FILLRECT is not set | 802 | # CONFIG_FB_SYS_FILLRECT is not set |
803 | # CONFIG_FB_SYS_COPYAREA is not set | 803 | # CONFIG_FB_SYS_COPYAREA is not set |
804 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 804 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
805 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
805 | # CONFIG_FB_SYS_FOPS is not set | 806 | # CONFIG_FB_SYS_FOPS is not set |
806 | CONFIG_FB_DEFERRED_IO=y | ||
807 | # CONFIG_FB_SVGALIB is not set | 807 | # CONFIG_FB_SVGALIB is not set |
808 | # CONFIG_FB_MACMODES is not set | 808 | # CONFIG_FB_MACMODES is not set |
809 | # CONFIG_FB_BACKLIGHT is not set | 809 | # CONFIG_FB_BACKLIGHT is not set |
@@ -859,19 +859,15 @@ CONFIG_HIDRAW=y | |||
859 | # CONFIG_MMC is not set | 859 | # CONFIG_MMC is not set |
860 | # CONFIG_MEMSTICK is not set | 860 | # CONFIG_MEMSTICK is not set |
861 | # CONFIG_NEW_LEDS is not set | 861 | # CONFIG_NEW_LEDS is not set |
862 | # CONFIG_ACCESSIBILITY is not set | ||
862 | # CONFIG_RTC_CLASS is not set | 863 | # CONFIG_RTC_CLASS is not set |
863 | # CONFIG_AUXDISPLAY is not set | 864 | # CONFIG_AUXDISPLAY is not set |
864 | |||
865 | # | ||
866 | # Userspace I/O | ||
867 | # | ||
868 | # CONFIG_UIO is not set | 865 | # CONFIG_UIO is not set |
869 | 866 | ||
870 | # | 867 | # |
871 | # Character devices | 868 | # Character devices |
872 | # | 869 | # |
873 | CONFIG_AMIGA_BUILTIN_SERIAL=y | 870 | CONFIG_AMIGA_BUILTIN_SERIAL=y |
874 | # CONFIG_WHIPPET_SERIAL is not set | ||
875 | CONFIG_MULTIFACE_III_TTY=m | 871 | CONFIG_MULTIFACE_III_TTY=m |
876 | # CONFIG_SERIAL_CONSOLE is not set | 872 | # CONFIG_SERIAL_CONSOLE is not set |
877 | 873 | ||
@@ -894,16 +890,15 @@ CONFIG_JFS_FS=m | |||
894 | # CONFIG_JFS_SECURITY is not set | 890 | # CONFIG_JFS_SECURITY is not set |
895 | # CONFIG_JFS_DEBUG is not set | 891 | # CONFIG_JFS_DEBUG is not set |
896 | # CONFIG_JFS_STATISTICS is not set | 892 | # CONFIG_JFS_STATISTICS is not set |
897 | CONFIG_FS_POSIX_ACL=y | 893 | # CONFIG_FS_POSIX_ACL is not set |
898 | CONFIG_XFS_FS=m | 894 | CONFIG_XFS_FS=m |
899 | # CONFIG_XFS_QUOTA is not set | 895 | # CONFIG_XFS_QUOTA is not set |
900 | # CONFIG_XFS_SECURITY is not set | ||
901 | # CONFIG_XFS_POSIX_ACL is not set | 896 | # CONFIG_XFS_POSIX_ACL is not set |
902 | # CONFIG_XFS_RT is not set | 897 | # CONFIG_XFS_RT is not set |
903 | CONFIG_GFS2_FS=m | 898 | # CONFIG_XFS_DEBUG is not set |
904 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
905 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
906 | CONFIG_OCFS2_FS=m | 899 | CONFIG_OCFS2_FS=m |
900 | CONFIG_OCFS2_FS_O2CB=m | ||
901 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
907 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 902 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
908 | # CONFIG_OCFS2_DEBUG_FS is not set | 903 | # CONFIG_OCFS2_DEBUG_FS is not set |
909 | CONFIG_DNOTIFY=y | 904 | CONFIG_DNOTIFY=y |
@@ -975,12 +970,10 @@ CONFIG_NFS_FS=m | |||
975 | CONFIG_NFS_V3=y | 970 | CONFIG_NFS_V3=y |
976 | # CONFIG_NFS_V3_ACL is not set | 971 | # CONFIG_NFS_V3_ACL is not set |
977 | CONFIG_NFS_V4=y | 972 | CONFIG_NFS_V4=y |
978 | # CONFIG_NFS_DIRECTIO is not set | ||
979 | CONFIG_NFSD=m | 973 | CONFIG_NFSD=m |
980 | CONFIG_NFSD_V3=y | 974 | CONFIG_NFSD_V3=y |
981 | # CONFIG_NFSD_V3_ACL is not set | 975 | # CONFIG_NFSD_V3_ACL is not set |
982 | # CONFIG_NFSD_V4 is not set | 976 | # CONFIG_NFSD_V4 is not set |
983 | CONFIG_NFSD_TCP=y | ||
984 | CONFIG_LOCKD=m | 977 | CONFIG_LOCKD=m |
985 | CONFIG_LOCKD_V4=y | 978 | CONFIG_LOCKD_V4=y |
986 | CONFIG_EXPORTFS=m | 979 | CONFIG_EXPORTFS=m |
@@ -1054,6 +1047,7 @@ CONFIG_DLM=m | |||
1054 | # CONFIG_PRINTK_TIME is not set | 1047 | # CONFIG_PRINTK_TIME is not set |
1055 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1048 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1056 | CONFIG_ENABLE_MUST_CHECK=y | 1049 | CONFIG_ENABLE_MUST_CHECK=y |
1050 | CONFIG_FRAME_WARN=1024 | ||
1057 | CONFIG_MAGIC_SYSRQ=y | 1051 | CONFIG_MAGIC_SYSRQ=y |
1058 | # CONFIG_UNUSED_SYMBOLS is not set | 1052 | # CONFIG_UNUSED_SYMBOLS is not set |
1059 | # CONFIG_DEBUG_FS is not set | 1053 | # CONFIG_DEBUG_FS is not set |
@@ -1073,53 +1067,82 @@ CONFIG_ASYNC_CORE=m | |||
1073 | CONFIG_ASYNC_MEMCPY=m | 1067 | CONFIG_ASYNC_MEMCPY=m |
1074 | CONFIG_ASYNC_XOR=m | 1068 | CONFIG_ASYNC_XOR=m |
1075 | CONFIG_CRYPTO=y | 1069 | CONFIG_CRYPTO=y |
1070 | |||
1071 | # | ||
1072 | # Crypto core or helper | ||
1073 | # | ||
1076 | CONFIG_CRYPTO_ALGAPI=y | 1074 | CONFIG_CRYPTO_ALGAPI=y |
1077 | CONFIG_CRYPTO_AEAD=m | 1075 | CONFIG_CRYPTO_AEAD=m |
1078 | CONFIG_CRYPTO_BLKCIPHER=m | 1076 | CONFIG_CRYPTO_BLKCIPHER=m |
1079 | CONFIG_CRYPTO_SEQIV=m | ||
1080 | CONFIG_CRYPTO_HASH=y | 1077 | CONFIG_CRYPTO_HASH=y |
1081 | CONFIG_CRYPTO_MANAGER=y | 1078 | CONFIG_CRYPTO_MANAGER=y |
1079 | CONFIG_CRYPTO_GF128MUL=m | ||
1080 | CONFIG_CRYPTO_NULL=m | ||
1081 | CONFIG_CRYPTO_CRYPTD=m | ||
1082 | CONFIG_CRYPTO_AUTHENC=m | ||
1083 | CONFIG_CRYPTO_TEST=m | ||
1084 | |||
1085 | # | ||
1086 | # Authenticated Encryption with Associated Data | ||
1087 | # | ||
1088 | CONFIG_CRYPTO_CCM=m | ||
1089 | CONFIG_CRYPTO_GCM=m | ||
1090 | CONFIG_CRYPTO_SEQIV=m | ||
1091 | |||
1092 | # | ||
1093 | # Block modes | ||
1094 | # | ||
1095 | CONFIG_CRYPTO_CBC=m | ||
1096 | CONFIG_CRYPTO_CTR=m | ||
1097 | CONFIG_CRYPTO_CTS=m | ||
1098 | CONFIG_CRYPTO_ECB=m | ||
1099 | CONFIG_CRYPTO_LRW=m | ||
1100 | CONFIG_CRYPTO_PCBC=m | ||
1101 | CONFIG_CRYPTO_XTS=m | ||
1102 | |||
1103 | # | ||
1104 | # Hash modes | ||
1105 | # | ||
1082 | CONFIG_CRYPTO_HMAC=y | 1106 | CONFIG_CRYPTO_HMAC=y |
1083 | CONFIG_CRYPTO_XCBC=m | 1107 | CONFIG_CRYPTO_XCBC=m |
1084 | CONFIG_CRYPTO_NULL=m | 1108 | |
1109 | # | ||
1110 | # Digest | ||
1111 | # | ||
1112 | CONFIG_CRYPTO_CRC32C=m | ||
1085 | CONFIG_CRYPTO_MD4=m | 1113 | CONFIG_CRYPTO_MD4=m |
1086 | CONFIG_CRYPTO_MD5=m | 1114 | CONFIG_CRYPTO_MD5=m |
1115 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1087 | CONFIG_CRYPTO_SHA1=m | 1116 | CONFIG_CRYPTO_SHA1=m |
1088 | CONFIG_CRYPTO_SHA256=m | 1117 | CONFIG_CRYPTO_SHA256=m |
1089 | CONFIG_CRYPTO_SHA512=m | 1118 | CONFIG_CRYPTO_SHA512=m |
1090 | CONFIG_CRYPTO_WP512=m | ||
1091 | CONFIG_CRYPTO_TGR192=m | 1119 | CONFIG_CRYPTO_TGR192=m |
1092 | CONFIG_CRYPTO_GF128MUL=m | 1120 | CONFIG_CRYPTO_WP512=m |
1093 | CONFIG_CRYPTO_ECB=m | 1121 | |
1094 | CONFIG_CRYPTO_CBC=m | 1122 | # |
1095 | CONFIG_CRYPTO_PCBC=m | 1123 | # Ciphers |
1096 | CONFIG_CRYPTO_LRW=m | 1124 | # |
1097 | CONFIG_CRYPTO_XTS=m | ||
1098 | CONFIG_CRYPTO_CTR=m | ||
1099 | CONFIG_CRYPTO_GCM=m | ||
1100 | CONFIG_CRYPTO_CCM=m | ||
1101 | CONFIG_CRYPTO_CRYPTD=m | ||
1102 | CONFIG_CRYPTO_DES=m | ||
1103 | CONFIG_CRYPTO_FCRYPT=m | ||
1104 | CONFIG_CRYPTO_BLOWFISH=m | ||
1105 | CONFIG_CRYPTO_TWOFISH=m | ||
1106 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1107 | CONFIG_CRYPTO_SERPENT=m | ||
1108 | CONFIG_CRYPTO_AES=m | 1125 | CONFIG_CRYPTO_AES=m |
1126 | CONFIG_CRYPTO_ANUBIS=m | ||
1127 | CONFIG_CRYPTO_ARC4=m | ||
1128 | CONFIG_CRYPTO_BLOWFISH=m | ||
1129 | CONFIG_CRYPTO_CAMELLIA=m | ||
1109 | CONFIG_CRYPTO_CAST5=m | 1130 | CONFIG_CRYPTO_CAST5=m |
1110 | CONFIG_CRYPTO_CAST6=m | 1131 | CONFIG_CRYPTO_CAST6=m |
1111 | CONFIG_CRYPTO_TEA=m | 1132 | CONFIG_CRYPTO_DES=m |
1112 | CONFIG_CRYPTO_ARC4=m | 1133 | CONFIG_CRYPTO_FCRYPT=m |
1113 | CONFIG_CRYPTO_KHAZAD=m | 1134 | CONFIG_CRYPTO_KHAZAD=m |
1114 | CONFIG_CRYPTO_ANUBIS=m | ||
1115 | CONFIG_CRYPTO_SEED=m | ||
1116 | CONFIG_CRYPTO_SALSA20=m | 1135 | CONFIG_CRYPTO_SALSA20=m |
1136 | CONFIG_CRYPTO_SEED=m | ||
1137 | CONFIG_CRYPTO_SERPENT=m | ||
1138 | CONFIG_CRYPTO_TEA=m | ||
1139 | CONFIG_CRYPTO_TWOFISH=m | ||
1140 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1141 | |||
1142 | # | ||
1143 | # Compression | ||
1144 | # | ||
1117 | CONFIG_CRYPTO_DEFLATE=m | 1145 | CONFIG_CRYPTO_DEFLATE=m |
1118 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1119 | CONFIG_CRYPTO_CRC32C=m | ||
1120 | CONFIG_CRYPTO_CAMELLIA=m | ||
1121 | CONFIG_CRYPTO_TEST=m | ||
1122 | CONFIG_CRYPTO_AUTHENC=m | ||
1123 | CONFIG_CRYPTO_LZO=m | 1146 | CONFIG_CRYPTO_LZO=m |
1124 | # CONFIG_CRYPTO_HW is not set | 1147 | # CONFIG_CRYPTO_HW is not set |
1125 | 1148 | ||
@@ -1127,9 +1150,11 @@ CONFIG_CRYPTO_LZO=m | |||
1127 | # Library routines | 1150 | # Library routines |
1128 | # | 1151 | # |
1129 | CONFIG_BITREVERSE=y | 1152 | CONFIG_BITREVERSE=y |
1153 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1154 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1130 | CONFIG_CRC_CCITT=m | 1155 | CONFIG_CRC_CCITT=m |
1131 | CONFIG_CRC16=m | 1156 | CONFIG_CRC16=m |
1132 | # CONFIG_CRC_ITU_T is not set | 1157 | CONFIG_CRC_ITU_T=m |
1133 | CONFIG_CRC32=y | 1158 | CONFIG_CRC32=y |
1134 | # CONFIG_CRC7 is not set | 1159 | # CONFIG_CRC7 is not set |
1135 | CONFIG_LIBCRC32C=m | 1160 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/apollo_defconfig b/arch/m68k/configs/apollo_defconfig index e61196cd7fa5..c3cd5b749d2c 100644 --- a/arch/m68k/configs/apollo_defconfig +++ b/arch/m68k/configs/apollo_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:07 2008 | 4 | # Sun May 18 14:44:42 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -141,6 +144,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
141 | CONFIG_NEED_MULTIPLE_NODES=y | 144 | CONFIG_NEED_MULTIPLE_NODES=y |
142 | # CONFIG_SPARSEMEM_STATIC is not set | 145 | # CONFIG_SPARSEMEM_STATIC is not set |
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
147 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 148 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
145 | # CONFIG_RESOURCES_64BIT is not set | 149 | # CONFIG_RESOURCES_64BIT is not set |
146 | CONFIG_ZONE_DMA_FLAG=1 | 150 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -220,8 +224,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
220 | CONFIG_INET6_XFRM_MODE_BEET=m | 224 | CONFIG_INET6_XFRM_MODE_BEET=m |
221 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 225 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
222 | CONFIG_IPV6_SIT=m | 226 | CONFIG_IPV6_SIT=m |
227 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
223 | CONFIG_IPV6_TUNNEL=m | 228 | CONFIG_IPV6_TUNNEL=m |
224 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 229 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
230 | # CONFIG_IPV6_MROUTE is not set | ||
225 | # CONFIG_NETWORK_SECMARK is not set | 231 | # CONFIG_NETWORK_SECMARK is not set |
226 | CONFIG_NETFILTER=y | 232 | CONFIG_NETFILTER=y |
227 | # CONFIG_NETFILTER_DEBUG is not set | 233 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -237,6 +243,7 @@ CONFIG_NF_CONNTRACK=m | |||
237 | CONFIG_NF_CT_ACCT=y | 243 | CONFIG_NF_CT_ACCT=y |
238 | CONFIG_NF_CONNTRACK_MARK=y | 244 | CONFIG_NF_CONNTRACK_MARK=y |
239 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 245 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
246 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
240 | CONFIG_NF_CT_PROTO_GRE=m | 247 | CONFIG_NF_CT_PROTO_GRE=m |
241 | CONFIG_NF_CT_PROTO_SCTP=m | 248 | CONFIG_NF_CT_PROTO_SCTP=m |
242 | CONFIG_NF_CT_PROTO_UDPLITE=m | 249 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -315,6 +322,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
315 | CONFIG_IP_NF_TARGET_NETMAP=m | 322 | CONFIG_IP_NF_TARGET_NETMAP=m |
316 | CONFIG_NF_NAT_SNMP_BASIC=m | 323 | CONFIG_NF_NAT_SNMP_BASIC=m |
317 | CONFIG_NF_NAT_PROTO_GRE=m | 324 | CONFIG_NF_NAT_PROTO_GRE=m |
325 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
326 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
318 | CONFIG_NF_NAT_FTP=m | 327 | CONFIG_NF_NAT_FTP=m |
319 | CONFIG_NF_NAT_IRC=m | 328 | CONFIG_NF_NAT_IRC=m |
320 | CONFIG_NF_NAT_TFTP=m | 329 | CONFIG_NF_NAT_TFTP=m |
@@ -408,8 +417,6 @@ CONFIG_IEEE80211=m | |||
408 | CONFIG_IEEE80211_CRYPT_WEP=m | 417 | CONFIG_IEEE80211_CRYPT_WEP=m |
409 | CONFIG_IEEE80211_CRYPT_CCMP=m | 418 | CONFIG_IEEE80211_CRYPT_CCMP=m |
410 | CONFIG_IEEE80211_CRYPT_TKIP=m | 419 | CONFIG_IEEE80211_CRYPT_TKIP=m |
411 | CONFIG_IEEE80211_SOFTMAC=m | ||
412 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
413 | # CONFIG_RFKILL is not set | 420 | # CONFIG_RFKILL is not set |
414 | # CONFIG_NET_9P is not set | 421 | # CONFIG_NET_9P is not set |
415 | 422 | ||
@@ -539,6 +546,7 @@ CONFIG_APOLLO_ELPLUS=y | |||
539 | # | 546 | # |
540 | # CONFIG_WLAN_PRE80211 is not set | 547 | # CONFIG_WLAN_PRE80211 is not set |
541 | # CONFIG_WLAN_80211 is not set | 548 | # CONFIG_WLAN_80211 is not set |
549 | # CONFIG_IWLWIFI_LEDS is not set | ||
542 | # CONFIG_WAN is not set | 550 | # CONFIG_WAN is not set |
543 | CONFIG_PPP=m | 551 | CONFIG_PPP=m |
544 | # CONFIG_PPP_MULTILINK is not set | 552 | # CONFIG_PPP_MULTILINK is not set |
@@ -622,6 +630,7 @@ CONFIG_VT=y | |||
622 | CONFIG_VT_CONSOLE=y | 630 | CONFIG_VT_CONSOLE=y |
623 | CONFIG_HW_CONSOLE=y | 631 | CONFIG_HW_CONSOLE=y |
624 | CONFIG_VT_HW_CONSOLE_BINDING=y | 632 | CONFIG_VT_HW_CONSOLE_BINDING=y |
633 | # CONFIG_DEVKMEM is not set | ||
625 | # CONFIG_SERIAL_NONSTANDARD is not set | 634 | # CONFIG_SERIAL_NONSTANDARD is not set |
626 | 635 | ||
627 | # | 636 | # |
@@ -643,12 +652,7 @@ CONFIG_GEN_RTC_X=y | |||
643 | # CONFIG_RAW_DRIVER is not set | 652 | # CONFIG_RAW_DRIVER is not set |
644 | # CONFIG_TCG_TPM is not set | 653 | # CONFIG_TCG_TPM is not set |
645 | # CONFIG_I2C is not set | 654 | # CONFIG_I2C is not set |
646 | |||
647 | # | ||
648 | # SPI support | ||
649 | # | ||
650 | # CONFIG_SPI is not set | 655 | # CONFIG_SPI is not set |
651 | # CONFIG_SPI_MASTER is not set | ||
652 | # CONFIG_W1 is not set | 656 | # CONFIG_W1 is not set |
653 | # CONFIG_POWER_SUPPLY is not set | 657 | # CONFIG_POWER_SUPPLY is not set |
654 | # CONFIG_HWMON is not set | 658 | # CONFIG_HWMON is not set |
@@ -665,12 +669,22 @@ CONFIG_SSB_POSSIBLE=y | |||
665 | # Multifunction device drivers | 669 | # Multifunction device drivers |
666 | # | 670 | # |
667 | # CONFIG_MFD_SM501 is not set | 671 | # CONFIG_MFD_SM501 is not set |
672 | # CONFIG_HTC_PASIC3 is not set | ||
668 | 673 | ||
669 | # | 674 | # |
670 | # Multimedia devices | 675 | # Multimedia devices |
671 | # | 676 | # |
677 | |||
678 | # | ||
679 | # Multimedia core support | ||
680 | # | ||
672 | # CONFIG_VIDEO_DEV is not set | 681 | # CONFIG_VIDEO_DEV is not set |
673 | # CONFIG_DVB_CORE is not set | 682 | # CONFIG_DVB_CORE is not set |
683 | # CONFIG_VIDEO_MEDIA is not set | ||
684 | |||
685 | # | ||
686 | # Multimedia drivers | ||
687 | # | ||
674 | # CONFIG_DAB is not set | 688 | # CONFIG_DAB is not set |
675 | 689 | ||
676 | # | 690 | # |
@@ -688,8 +702,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
688 | # CONFIG_FB_SYS_FILLRECT is not set | 702 | # CONFIG_FB_SYS_FILLRECT is not set |
689 | # CONFIG_FB_SYS_COPYAREA is not set | 703 | # CONFIG_FB_SYS_COPYAREA is not set |
690 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 704 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
705 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
691 | # CONFIG_FB_SYS_FOPS is not set | 706 | # CONFIG_FB_SYS_FOPS is not set |
692 | CONFIG_FB_DEFERRED_IO=y | ||
693 | # CONFIG_FB_SVGALIB is not set | 707 | # CONFIG_FB_SVGALIB is not set |
694 | # CONFIG_FB_MACMODES is not set | 708 | # CONFIG_FB_MACMODES is not set |
695 | # CONFIG_FB_BACKLIGHT is not set | 709 | # CONFIG_FB_BACKLIGHT is not set |
@@ -737,11 +751,8 @@ CONFIG_HIDRAW=y | |||
737 | # CONFIG_MMC is not set | 751 | # CONFIG_MMC is not set |
738 | # CONFIG_MEMSTICK is not set | 752 | # CONFIG_MEMSTICK is not set |
739 | # CONFIG_NEW_LEDS is not set | 753 | # CONFIG_NEW_LEDS is not set |
754 | # CONFIG_ACCESSIBILITY is not set | ||
740 | # CONFIG_RTC_CLASS is not set | 755 | # CONFIG_RTC_CLASS is not set |
741 | |||
742 | # | ||
743 | # Userspace I/O | ||
744 | # | ||
745 | # CONFIG_UIO is not set | 756 | # CONFIG_UIO is not set |
746 | 757 | ||
747 | # | 758 | # |
@@ -769,16 +780,15 @@ CONFIG_JFS_FS=m | |||
769 | # CONFIG_JFS_SECURITY is not set | 780 | # CONFIG_JFS_SECURITY is not set |
770 | # CONFIG_JFS_DEBUG is not set | 781 | # CONFIG_JFS_DEBUG is not set |
771 | # CONFIG_JFS_STATISTICS is not set | 782 | # CONFIG_JFS_STATISTICS is not set |
772 | CONFIG_FS_POSIX_ACL=y | 783 | # CONFIG_FS_POSIX_ACL is not set |
773 | CONFIG_XFS_FS=m | 784 | CONFIG_XFS_FS=m |
774 | # CONFIG_XFS_QUOTA is not set | 785 | # CONFIG_XFS_QUOTA is not set |
775 | # CONFIG_XFS_SECURITY is not set | ||
776 | # CONFIG_XFS_POSIX_ACL is not set | 786 | # CONFIG_XFS_POSIX_ACL is not set |
777 | # CONFIG_XFS_RT is not set | 787 | # CONFIG_XFS_RT is not set |
778 | CONFIG_GFS2_FS=m | 788 | # CONFIG_XFS_DEBUG is not set |
779 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
780 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
781 | CONFIG_OCFS2_FS=m | 789 | CONFIG_OCFS2_FS=m |
790 | CONFIG_OCFS2_FS_O2CB=m | ||
791 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
782 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 792 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
783 | # CONFIG_OCFS2_DEBUG_FS is not set | 793 | # CONFIG_OCFS2_DEBUG_FS is not set |
784 | CONFIG_DNOTIFY=y | 794 | CONFIG_DNOTIFY=y |
@@ -850,12 +860,10 @@ CONFIG_NFS_FS=y | |||
850 | CONFIG_NFS_V3=y | 860 | CONFIG_NFS_V3=y |
851 | # CONFIG_NFS_V3_ACL is not set | 861 | # CONFIG_NFS_V3_ACL is not set |
852 | CONFIG_NFS_V4=y | 862 | CONFIG_NFS_V4=y |
853 | # CONFIG_NFS_DIRECTIO is not set | ||
854 | CONFIG_NFSD=m | 863 | CONFIG_NFSD=m |
855 | CONFIG_NFSD_V3=y | 864 | CONFIG_NFSD_V3=y |
856 | # CONFIG_NFSD_V3_ACL is not set | 865 | # CONFIG_NFSD_V3_ACL is not set |
857 | # CONFIG_NFSD_V4 is not set | 866 | # CONFIG_NFSD_V4 is not set |
858 | CONFIG_NFSD_TCP=y | ||
859 | CONFIG_ROOT_NFS=y | 867 | CONFIG_ROOT_NFS=y |
860 | CONFIG_LOCKD=y | 868 | CONFIG_LOCKD=y |
861 | CONFIG_LOCKD_V4=y | 869 | CONFIG_LOCKD_V4=y |
@@ -929,6 +937,7 @@ CONFIG_DLM=m | |||
929 | # CONFIG_PRINTK_TIME is not set | 937 | # CONFIG_PRINTK_TIME is not set |
930 | CONFIG_ENABLE_WARN_DEPRECATED=y | 938 | CONFIG_ENABLE_WARN_DEPRECATED=y |
931 | CONFIG_ENABLE_MUST_CHECK=y | 939 | CONFIG_ENABLE_MUST_CHECK=y |
940 | CONFIG_FRAME_WARN=1024 | ||
932 | CONFIG_MAGIC_SYSRQ=y | 941 | CONFIG_MAGIC_SYSRQ=y |
933 | # CONFIG_UNUSED_SYMBOLS is not set | 942 | # CONFIG_UNUSED_SYMBOLS is not set |
934 | # CONFIG_DEBUG_FS is not set | 943 | # CONFIG_DEBUG_FS is not set |
@@ -948,53 +957,82 @@ CONFIG_ASYNC_CORE=m | |||
948 | CONFIG_ASYNC_MEMCPY=m | 957 | CONFIG_ASYNC_MEMCPY=m |
949 | CONFIG_ASYNC_XOR=m | 958 | CONFIG_ASYNC_XOR=m |
950 | CONFIG_CRYPTO=y | 959 | CONFIG_CRYPTO=y |
960 | |||
961 | # | ||
962 | # Crypto core or helper | ||
963 | # | ||
951 | CONFIG_CRYPTO_ALGAPI=y | 964 | CONFIG_CRYPTO_ALGAPI=y |
952 | CONFIG_CRYPTO_AEAD=m | 965 | CONFIG_CRYPTO_AEAD=m |
953 | CONFIG_CRYPTO_BLKCIPHER=y | 966 | CONFIG_CRYPTO_BLKCIPHER=y |
954 | CONFIG_CRYPTO_SEQIV=m | ||
955 | CONFIG_CRYPTO_HASH=y | 967 | CONFIG_CRYPTO_HASH=y |
956 | CONFIG_CRYPTO_MANAGER=y | 968 | CONFIG_CRYPTO_MANAGER=y |
969 | CONFIG_CRYPTO_GF128MUL=m | ||
970 | CONFIG_CRYPTO_NULL=m | ||
971 | CONFIG_CRYPTO_CRYPTD=m | ||
972 | CONFIG_CRYPTO_AUTHENC=m | ||
973 | CONFIG_CRYPTO_TEST=m | ||
974 | |||
975 | # | ||
976 | # Authenticated Encryption with Associated Data | ||
977 | # | ||
978 | CONFIG_CRYPTO_CCM=m | ||
979 | CONFIG_CRYPTO_GCM=m | ||
980 | CONFIG_CRYPTO_SEQIV=m | ||
981 | |||
982 | # | ||
983 | # Block modes | ||
984 | # | ||
985 | CONFIG_CRYPTO_CBC=y | ||
986 | CONFIG_CRYPTO_CTR=m | ||
987 | CONFIG_CRYPTO_CTS=m | ||
988 | CONFIG_CRYPTO_ECB=m | ||
989 | CONFIG_CRYPTO_LRW=m | ||
990 | CONFIG_CRYPTO_PCBC=m | ||
991 | CONFIG_CRYPTO_XTS=m | ||
992 | |||
993 | # | ||
994 | # Hash modes | ||
995 | # | ||
957 | CONFIG_CRYPTO_HMAC=y | 996 | CONFIG_CRYPTO_HMAC=y |
958 | CONFIG_CRYPTO_XCBC=m | 997 | CONFIG_CRYPTO_XCBC=m |
959 | CONFIG_CRYPTO_NULL=m | 998 | |
999 | # | ||
1000 | # Digest | ||
1001 | # | ||
1002 | CONFIG_CRYPTO_CRC32C=m | ||
960 | CONFIG_CRYPTO_MD4=m | 1003 | CONFIG_CRYPTO_MD4=m |
961 | CONFIG_CRYPTO_MD5=y | 1004 | CONFIG_CRYPTO_MD5=y |
1005 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
962 | CONFIG_CRYPTO_SHA1=m | 1006 | CONFIG_CRYPTO_SHA1=m |
963 | CONFIG_CRYPTO_SHA256=m | 1007 | CONFIG_CRYPTO_SHA256=m |
964 | CONFIG_CRYPTO_SHA512=m | 1008 | CONFIG_CRYPTO_SHA512=m |
965 | CONFIG_CRYPTO_WP512=m | ||
966 | CONFIG_CRYPTO_TGR192=m | 1009 | CONFIG_CRYPTO_TGR192=m |
967 | CONFIG_CRYPTO_GF128MUL=m | 1010 | CONFIG_CRYPTO_WP512=m |
968 | CONFIG_CRYPTO_ECB=m | 1011 | |
969 | CONFIG_CRYPTO_CBC=y | 1012 | # |
970 | CONFIG_CRYPTO_PCBC=m | 1013 | # Ciphers |
971 | CONFIG_CRYPTO_LRW=m | 1014 | # |
972 | CONFIG_CRYPTO_XTS=m | ||
973 | CONFIG_CRYPTO_CTR=m | ||
974 | CONFIG_CRYPTO_GCM=m | ||
975 | CONFIG_CRYPTO_CCM=m | ||
976 | CONFIG_CRYPTO_CRYPTD=m | ||
977 | CONFIG_CRYPTO_DES=y | ||
978 | CONFIG_CRYPTO_FCRYPT=m | ||
979 | CONFIG_CRYPTO_BLOWFISH=m | ||
980 | CONFIG_CRYPTO_TWOFISH=m | ||
981 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
982 | CONFIG_CRYPTO_SERPENT=m | ||
983 | CONFIG_CRYPTO_AES=m | 1015 | CONFIG_CRYPTO_AES=m |
1016 | CONFIG_CRYPTO_ANUBIS=m | ||
1017 | CONFIG_CRYPTO_ARC4=m | ||
1018 | CONFIG_CRYPTO_BLOWFISH=m | ||
1019 | CONFIG_CRYPTO_CAMELLIA=m | ||
984 | CONFIG_CRYPTO_CAST5=m | 1020 | CONFIG_CRYPTO_CAST5=m |
985 | CONFIG_CRYPTO_CAST6=m | 1021 | CONFIG_CRYPTO_CAST6=m |
986 | CONFIG_CRYPTO_TEA=m | 1022 | CONFIG_CRYPTO_DES=y |
987 | CONFIG_CRYPTO_ARC4=m | 1023 | CONFIG_CRYPTO_FCRYPT=m |
988 | CONFIG_CRYPTO_KHAZAD=m | 1024 | CONFIG_CRYPTO_KHAZAD=m |
989 | CONFIG_CRYPTO_ANUBIS=m | ||
990 | CONFIG_CRYPTO_SEED=m | ||
991 | CONFIG_CRYPTO_SALSA20=m | 1025 | CONFIG_CRYPTO_SALSA20=m |
1026 | CONFIG_CRYPTO_SEED=m | ||
1027 | CONFIG_CRYPTO_SERPENT=m | ||
1028 | CONFIG_CRYPTO_TEA=m | ||
1029 | CONFIG_CRYPTO_TWOFISH=m | ||
1030 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1031 | |||
1032 | # | ||
1033 | # Compression | ||
1034 | # | ||
992 | CONFIG_CRYPTO_DEFLATE=m | 1035 | CONFIG_CRYPTO_DEFLATE=m |
993 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
994 | CONFIG_CRYPTO_CRC32C=m | ||
995 | CONFIG_CRYPTO_CAMELLIA=m | ||
996 | CONFIG_CRYPTO_TEST=m | ||
997 | CONFIG_CRYPTO_AUTHENC=m | ||
998 | CONFIG_CRYPTO_LZO=m | 1036 | CONFIG_CRYPTO_LZO=m |
999 | # CONFIG_CRYPTO_HW is not set | 1037 | # CONFIG_CRYPTO_HW is not set |
1000 | 1038 | ||
@@ -1002,9 +1040,11 @@ CONFIG_CRYPTO_LZO=m | |||
1002 | # Library routines | 1040 | # Library routines |
1003 | # | 1041 | # |
1004 | CONFIG_BITREVERSE=y | 1042 | CONFIG_BITREVERSE=y |
1043 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1044 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1005 | CONFIG_CRC_CCITT=m | 1045 | CONFIG_CRC_CCITT=m |
1006 | CONFIG_CRC16=m | 1046 | CONFIG_CRC16=m |
1007 | # CONFIG_CRC_ITU_T is not set | 1047 | CONFIG_CRC_ITU_T=m |
1008 | CONFIG_CRC32=y | 1048 | CONFIG_CRC32=y |
1009 | # CONFIG_CRC7 is not set | 1049 | # CONFIG_CRC7 is not set |
1010 | CONFIG_LIBCRC32C=m | 1050 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/atari_defconfig b/arch/m68k/configs/atari_defconfig index ba7f971bb026..073ae4bbe264 100644 --- a/arch/m68k/configs/atari_defconfig +++ b/arch/m68k/configs/atari_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:09 2008 | 4 | # Sun May 18 14:44:43 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -141,6 +144,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
141 | CONFIG_NEED_MULTIPLE_NODES=y | 144 | CONFIG_NEED_MULTIPLE_NODES=y |
142 | # CONFIG_SPARSEMEM_STATIC is not set | 145 | # CONFIG_SPARSEMEM_STATIC is not set |
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
147 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 148 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
145 | # CONFIG_RESOURCES_64BIT is not set | 149 | # CONFIG_RESOURCES_64BIT is not set |
146 | CONFIG_ZONE_DMA_FLAG=1 | 150 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -218,8 +222,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
218 | CONFIG_INET6_XFRM_MODE_BEET=m | 222 | CONFIG_INET6_XFRM_MODE_BEET=m |
219 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
220 | CONFIG_IPV6_SIT=m | 224 | CONFIG_IPV6_SIT=m |
225 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
221 | CONFIG_IPV6_TUNNEL=m | 226 | CONFIG_IPV6_TUNNEL=m |
222 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 227 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
228 | # CONFIG_IPV6_MROUTE is not set | ||
223 | # CONFIG_NETWORK_SECMARK is not set | 229 | # CONFIG_NETWORK_SECMARK is not set |
224 | CONFIG_NETFILTER=y | 230 | CONFIG_NETFILTER=y |
225 | # CONFIG_NETFILTER_DEBUG is not set | 231 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -235,6 +241,7 @@ CONFIG_NF_CONNTRACK=m | |||
235 | CONFIG_NF_CT_ACCT=y | 241 | CONFIG_NF_CT_ACCT=y |
236 | CONFIG_NF_CONNTRACK_MARK=y | 242 | CONFIG_NF_CONNTRACK_MARK=y |
237 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 243 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
244 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
238 | CONFIG_NF_CT_PROTO_GRE=m | 245 | CONFIG_NF_CT_PROTO_GRE=m |
239 | CONFIG_NF_CT_PROTO_SCTP=m | 246 | CONFIG_NF_CT_PROTO_SCTP=m |
240 | CONFIG_NF_CT_PROTO_UDPLITE=m | 247 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -313,6 +320,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
313 | CONFIG_IP_NF_TARGET_NETMAP=m | 320 | CONFIG_IP_NF_TARGET_NETMAP=m |
314 | CONFIG_NF_NAT_SNMP_BASIC=m | 321 | CONFIG_NF_NAT_SNMP_BASIC=m |
315 | CONFIG_NF_NAT_PROTO_GRE=m | 322 | CONFIG_NF_NAT_PROTO_GRE=m |
323 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
324 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
316 | CONFIG_NF_NAT_FTP=m | 325 | CONFIG_NF_NAT_FTP=m |
317 | CONFIG_NF_NAT_IRC=m | 326 | CONFIG_NF_NAT_IRC=m |
318 | CONFIG_NF_NAT_TFTP=m | 327 | CONFIG_NF_NAT_TFTP=m |
@@ -406,8 +415,6 @@ CONFIG_IEEE80211=m | |||
406 | CONFIG_IEEE80211_CRYPT_WEP=m | 415 | CONFIG_IEEE80211_CRYPT_WEP=m |
407 | CONFIG_IEEE80211_CRYPT_CCMP=m | 416 | CONFIG_IEEE80211_CRYPT_CCMP=m |
408 | CONFIG_IEEE80211_CRYPT_TKIP=m | 417 | CONFIG_IEEE80211_CRYPT_TKIP=m |
409 | CONFIG_IEEE80211_SOFTMAC=m | ||
410 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
411 | # CONFIG_RFKILL is not set | 418 | # CONFIG_RFKILL is not set |
412 | # CONFIG_NET_9P is not set | 419 | # CONFIG_NET_9P is not set |
413 | 420 | ||
@@ -469,11 +476,10 @@ CONFIG_IDE_PROC_FS=y | |||
469 | # | 476 | # |
470 | # IDE chipset support/bugfixes | 477 | # IDE chipset support/bugfixes |
471 | # | 478 | # |
472 | # CONFIG_IDE_GENERIC is not set | ||
473 | # CONFIG_BLK_DEV_PLATFORM is not set | 479 | # CONFIG_BLK_DEV_PLATFORM is not set |
474 | CONFIG_BLK_DEV_FALCON_IDE=y | 480 | CONFIG_BLK_DEV_FALCON_IDE=y |
475 | # CONFIG_BLK_DEV_IDEDMA is not set | 481 | # CONFIG_BLK_DEV_IDEDMA is not set |
476 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set | 482 | # CONFIG_BLK_DEV_HD_ONLY is not set |
477 | # CONFIG_BLK_DEV_HD is not set | 483 | # CONFIG_BLK_DEV_HD is not set |
478 | 484 | ||
479 | # | 485 | # |
@@ -572,6 +578,7 @@ CONFIG_ATARILANCE=m | |||
572 | # | 578 | # |
573 | # CONFIG_WLAN_PRE80211 is not set | 579 | # CONFIG_WLAN_PRE80211 is not set |
574 | # CONFIG_WLAN_80211 is not set | 580 | # CONFIG_WLAN_80211 is not set |
581 | # CONFIG_IWLWIFI_LEDS is not set | ||
575 | # CONFIG_WAN is not set | 582 | # CONFIG_WAN is not set |
576 | # CONFIG_PLIP is not set | 583 | # CONFIG_PLIP is not set |
577 | CONFIG_PPP=m | 584 | CONFIG_PPP=m |
@@ -662,6 +669,7 @@ CONFIG_VT=y | |||
662 | CONFIG_VT_CONSOLE=y | 669 | CONFIG_VT_CONSOLE=y |
663 | CONFIG_HW_CONSOLE=y | 670 | CONFIG_HW_CONSOLE=y |
664 | CONFIG_VT_HW_CONSOLE_BINDING=y | 671 | CONFIG_VT_HW_CONSOLE_BINDING=y |
672 | # CONFIG_DEVKMEM is not set | ||
665 | # CONFIG_SERIAL_NONSTANDARD is not set | 673 | # CONFIG_SERIAL_NONSTANDARD is not set |
666 | 674 | ||
667 | # | 675 | # |
@@ -687,12 +695,7 @@ CONFIG_GEN_RTC_X=y | |||
687 | # CONFIG_RAW_DRIVER is not set | 695 | # CONFIG_RAW_DRIVER is not set |
688 | # CONFIG_TCG_TPM is not set | 696 | # CONFIG_TCG_TPM is not set |
689 | # CONFIG_I2C is not set | 697 | # CONFIG_I2C is not set |
690 | |||
691 | # | ||
692 | # SPI support | ||
693 | # | ||
694 | # CONFIG_SPI is not set | 698 | # CONFIG_SPI is not set |
695 | # CONFIG_SPI_MASTER is not set | ||
696 | # CONFIG_W1 is not set | 699 | # CONFIG_W1 is not set |
697 | # CONFIG_POWER_SUPPLY is not set | 700 | # CONFIG_POWER_SUPPLY is not set |
698 | # CONFIG_HWMON is not set | 701 | # CONFIG_HWMON is not set |
@@ -709,12 +712,22 @@ CONFIG_SSB_POSSIBLE=y | |||
709 | # Multifunction device drivers | 712 | # Multifunction device drivers |
710 | # | 713 | # |
711 | # CONFIG_MFD_SM501 is not set | 714 | # CONFIG_MFD_SM501 is not set |
715 | # CONFIG_HTC_PASIC3 is not set | ||
712 | 716 | ||
713 | # | 717 | # |
714 | # Multimedia devices | 718 | # Multimedia devices |
715 | # | 719 | # |
720 | |||
721 | # | ||
722 | # Multimedia core support | ||
723 | # | ||
716 | # CONFIG_VIDEO_DEV is not set | 724 | # CONFIG_VIDEO_DEV is not set |
717 | # CONFIG_DVB_CORE is not set | 725 | # CONFIG_DVB_CORE is not set |
726 | # CONFIG_VIDEO_MEDIA is not set | ||
727 | |||
728 | # | ||
729 | # Multimedia drivers | ||
730 | # | ||
718 | # CONFIG_DAB is not set | 731 | # CONFIG_DAB is not set |
719 | 732 | ||
720 | # | 733 | # |
@@ -732,8 +745,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
732 | # CONFIG_FB_SYS_FILLRECT is not set | 745 | # CONFIG_FB_SYS_FILLRECT is not set |
733 | # CONFIG_FB_SYS_COPYAREA is not set | 746 | # CONFIG_FB_SYS_COPYAREA is not set |
734 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 747 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
748 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
735 | # CONFIG_FB_SYS_FOPS is not set | 749 | # CONFIG_FB_SYS_FOPS is not set |
736 | CONFIG_FB_DEFERRED_IO=y | ||
737 | # CONFIG_FB_SVGALIB is not set | 750 | # CONFIG_FB_SVGALIB is not set |
738 | # CONFIG_FB_MACMODES is not set | 751 | # CONFIG_FB_MACMODES is not set |
739 | # CONFIG_FB_BACKLIGHT is not set | 752 | # CONFIG_FB_BACKLIGHT is not set |
@@ -784,12 +797,9 @@ CONFIG_HIDRAW=y | |||
784 | # CONFIG_MMC is not set | 797 | # CONFIG_MMC is not set |
785 | # CONFIG_MEMSTICK is not set | 798 | # CONFIG_MEMSTICK is not set |
786 | # CONFIG_NEW_LEDS is not set | 799 | # CONFIG_NEW_LEDS is not set |
800 | # CONFIG_ACCESSIBILITY is not set | ||
787 | # CONFIG_RTC_CLASS is not set | 801 | # CONFIG_RTC_CLASS is not set |
788 | # CONFIG_AUXDISPLAY is not set | 802 | # CONFIG_AUXDISPLAY is not set |
789 | |||
790 | # | ||
791 | # Userspace I/O | ||
792 | # | ||
793 | # CONFIG_UIO is not set | 803 | # CONFIG_UIO is not set |
794 | 804 | ||
795 | # | 805 | # |
@@ -821,16 +831,15 @@ CONFIG_JFS_FS=m | |||
821 | # CONFIG_JFS_SECURITY is not set | 831 | # CONFIG_JFS_SECURITY is not set |
822 | # CONFIG_JFS_DEBUG is not set | 832 | # CONFIG_JFS_DEBUG is not set |
823 | # CONFIG_JFS_STATISTICS is not set | 833 | # CONFIG_JFS_STATISTICS is not set |
824 | CONFIG_FS_POSIX_ACL=y | 834 | # CONFIG_FS_POSIX_ACL is not set |
825 | CONFIG_XFS_FS=m | 835 | CONFIG_XFS_FS=m |
826 | # CONFIG_XFS_QUOTA is not set | 836 | # CONFIG_XFS_QUOTA is not set |
827 | # CONFIG_XFS_SECURITY is not set | ||
828 | # CONFIG_XFS_POSIX_ACL is not set | 837 | # CONFIG_XFS_POSIX_ACL is not set |
829 | # CONFIG_XFS_RT is not set | 838 | # CONFIG_XFS_RT is not set |
830 | CONFIG_GFS2_FS=m | 839 | # CONFIG_XFS_DEBUG is not set |
831 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
832 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
833 | CONFIG_OCFS2_FS=m | 840 | CONFIG_OCFS2_FS=m |
841 | CONFIG_OCFS2_FS_O2CB=m | ||
842 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
834 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 843 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
835 | # CONFIG_OCFS2_DEBUG_FS is not set | 844 | # CONFIG_OCFS2_DEBUG_FS is not set |
836 | CONFIG_DNOTIFY=y | 845 | CONFIG_DNOTIFY=y |
@@ -902,12 +911,10 @@ CONFIG_NFS_FS=m | |||
902 | CONFIG_NFS_V3=y | 911 | CONFIG_NFS_V3=y |
903 | # CONFIG_NFS_V3_ACL is not set | 912 | # CONFIG_NFS_V3_ACL is not set |
904 | # CONFIG_NFS_V4 is not set | 913 | # CONFIG_NFS_V4 is not set |
905 | # CONFIG_NFS_DIRECTIO is not set | ||
906 | CONFIG_NFSD=m | 914 | CONFIG_NFSD=m |
907 | CONFIG_NFSD_V3=y | 915 | CONFIG_NFSD_V3=y |
908 | # CONFIG_NFSD_V3_ACL is not set | 916 | # CONFIG_NFSD_V3_ACL is not set |
909 | # CONFIG_NFSD_V4 is not set | 917 | # CONFIG_NFSD_V4 is not set |
910 | CONFIG_NFSD_TCP=y | ||
911 | CONFIG_LOCKD=m | 918 | CONFIG_LOCKD=m |
912 | CONFIG_LOCKD_V4=y | 919 | CONFIG_LOCKD_V4=y |
913 | CONFIG_EXPORTFS=m | 920 | CONFIG_EXPORTFS=m |
@@ -980,6 +987,7 @@ CONFIG_DLM=m | |||
980 | # CONFIG_PRINTK_TIME is not set | 987 | # CONFIG_PRINTK_TIME is not set |
981 | CONFIG_ENABLE_WARN_DEPRECATED=y | 988 | CONFIG_ENABLE_WARN_DEPRECATED=y |
982 | CONFIG_ENABLE_MUST_CHECK=y | 989 | CONFIG_ENABLE_MUST_CHECK=y |
990 | CONFIG_FRAME_WARN=1024 | ||
983 | CONFIG_MAGIC_SYSRQ=y | 991 | CONFIG_MAGIC_SYSRQ=y |
984 | # CONFIG_UNUSED_SYMBOLS is not set | 992 | # CONFIG_UNUSED_SYMBOLS is not set |
985 | # CONFIG_DEBUG_FS is not set | 993 | # CONFIG_DEBUG_FS is not set |
@@ -999,53 +1007,82 @@ CONFIG_ASYNC_CORE=m | |||
999 | CONFIG_ASYNC_MEMCPY=m | 1007 | CONFIG_ASYNC_MEMCPY=m |
1000 | CONFIG_ASYNC_XOR=m | 1008 | CONFIG_ASYNC_XOR=m |
1001 | CONFIG_CRYPTO=y | 1009 | CONFIG_CRYPTO=y |
1010 | |||
1011 | # | ||
1012 | # Crypto core or helper | ||
1013 | # | ||
1002 | CONFIG_CRYPTO_ALGAPI=y | 1014 | CONFIG_CRYPTO_ALGAPI=y |
1003 | CONFIG_CRYPTO_AEAD=m | 1015 | CONFIG_CRYPTO_AEAD=m |
1004 | CONFIG_CRYPTO_BLKCIPHER=m | 1016 | CONFIG_CRYPTO_BLKCIPHER=m |
1005 | CONFIG_CRYPTO_SEQIV=m | ||
1006 | CONFIG_CRYPTO_HASH=y | 1017 | CONFIG_CRYPTO_HASH=y |
1007 | CONFIG_CRYPTO_MANAGER=y | 1018 | CONFIG_CRYPTO_MANAGER=y |
1019 | CONFIG_CRYPTO_GF128MUL=m | ||
1020 | CONFIG_CRYPTO_NULL=m | ||
1021 | CONFIG_CRYPTO_CRYPTD=m | ||
1022 | CONFIG_CRYPTO_AUTHENC=m | ||
1023 | CONFIG_CRYPTO_TEST=m | ||
1024 | |||
1025 | # | ||
1026 | # Authenticated Encryption with Associated Data | ||
1027 | # | ||
1028 | CONFIG_CRYPTO_CCM=m | ||
1029 | CONFIG_CRYPTO_GCM=m | ||
1030 | CONFIG_CRYPTO_SEQIV=m | ||
1031 | |||
1032 | # | ||
1033 | # Block modes | ||
1034 | # | ||
1035 | CONFIG_CRYPTO_CBC=m | ||
1036 | CONFIG_CRYPTO_CTR=m | ||
1037 | CONFIG_CRYPTO_CTS=m | ||
1038 | CONFIG_CRYPTO_ECB=m | ||
1039 | CONFIG_CRYPTO_LRW=m | ||
1040 | CONFIG_CRYPTO_PCBC=m | ||
1041 | CONFIG_CRYPTO_XTS=m | ||
1042 | |||
1043 | # | ||
1044 | # Hash modes | ||
1045 | # | ||
1008 | CONFIG_CRYPTO_HMAC=y | 1046 | CONFIG_CRYPTO_HMAC=y |
1009 | CONFIG_CRYPTO_XCBC=m | 1047 | CONFIG_CRYPTO_XCBC=m |
1010 | CONFIG_CRYPTO_NULL=m | 1048 | |
1049 | # | ||
1050 | # Digest | ||
1051 | # | ||
1052 | CONFIG_CRYPTO_CRC32C=m | ||
1011 | CONFIG_CRYPTO_MD4=m | 1053 | CONFIG_CRYPTO_MD4=m |
1012 | CONFIG_CRYPTO_MD5=m | 1054 | CONFIG_CRYPTO_MD5=m |
1055 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1013 | CONFIG_CRYPTO_SHA1=m | 1056 | CONFIG_CRYPTO_SHA1=m |
1014 | CONFIG_CRYPTO_SHA256=m | 1057 | CONFIG_CRYPTO_SHA256=m |
1015 | CONFIG_CRYPTO_SHA512=m | 1058 | CONFIG_CRYPTO_SHA512=m |
1016 | CONFIG_CRYPTO_WP512=m | ||
1017 | CONFIG_CRYPTO_TGR192=m | 1059 | CONFIG_CRYPTO_TGR192=m |
1018 | CONFIG_CRYPTO_GF128MUL=m | 1060 | CONFIG_CRYPTO_WP512=m |
1019 | CONFIG_CRYPTO_ECB=m | 1061 | |
1020 | CONFIG_CRYPTO_CBC=m | 1062 | # |
1021 | CONFIG_CRYPTO_PCBC=m | 1063 | # Ciphers |
1022 | CONFIG_CRYPTO_LRW=m | 1064 | # |
1023 | CONFIG_CRYPTO_XTS=m | ||
1024 | CONFIG_CRYPTO_CTR=m | ||
1025 | CONFIG_CRYPTO_GCM=m | ||
1026 | CONFIG_CRYPTO_CCM=m | ||
1027 | CONFIG_CRYPTO_CRYPTD=m | ||
1028 | CONFIG_CRYPTO_DES=m | ||
1029 | CONFIG_CRYPTO_FCRYPT=m | ||
1030 | CONFIG_CRYPTO_BLOWFISH=m | ||
1031 | CONFIG_CRYPTO_TWOFISH=m | ||
1032 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1033 | CONFIG_CRYPTO_SERPENT=m | ||
1034 | CONFIG_CRYPTO_AES=m | 1065 | CONFIG_CRYPTO_AES=m |
1066 | CONFIG_CRYPTO_ANUBIS=m | ||
1067 | CONFIG_CRYPTO_ARC4=m | ||
1068 | CONFIG_CRYPTO_BLOWFISH=m | ||
1069 | CONFIG_CRYPTO_CAMELLIA=m | ||
1035 | CONFIG_CRYPTO_CAST5=m | 1070 | CONFIG_CRYPTO_CAST5=m |
1036 | CONFIG_CRYPTO_CAST6=m | 1071 | CONFIG_CRYPTO_CAST6=m |
1037 | CONFIG_CRYPTO_TEA=m | 1072 | CONFIG_CRYPTO_DES=m |
1038 | CONFIG_CRYPTO_ARC4=m | 1073 | CONFIG_CRYPTO_FCRYPT=m |
1039 | CONFIG_CRYPTO_KHAZAD=m | 1074 | CONFIG_CRYPTO_KHAZAD=m |
1040 | CONFIG_CRYPTO_ANUBIS=m | ||
1041 | CONFIG_CRYPTO_SEED=m | ||
1042 | CONFIG_CRYPTO_SALSA20=m | 1075 | CONFIG_CRYPTO_SALSA20=m |
1076 | CONFIG_CRYPTO_SEED=m | ||
1077 | CONFIG_CRYPTO_SERPENT=m | ||
1078 | CONFIG_CRYPTO_TEA=m | ||
1079 | CONFIG_CRYPTO_TWOFISH=m | ||
1080 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1081 | |||
1082 | # | ||
1083 | # Compression | ||
1084 | # | ||
1043 | CONFIG_CRYPTO_DEFLATE=m | 1085 | CONFIG_CRYPTO_DEFLATE=m |
1044 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1045 | CONFIG_CRYPTO_CRC32C=m | ||
1046 | CONFIG_CRYPTO_CAMELLIA=m | ||
1047 | CONFIG_CRYPTO_TEST=m | ||
1048 | CONFIG_CRYPTO_AUTHENC=m | ||
1049 | CONFIG_CRYPTO_LZO=m | 1086 | CONFIG_CRYPTO_LZO=m |
1050 | # CONFIG_CRYPTO_HW is not set | 1087 | # CONFIG_CRYPTO_HW is not set |
1051 | 1088 | ||
@@ -1053,9 +1090,11 @@ CONFIG_CRYPTO_LZO=m | |||
1053 | # Library routines | 1090 | # Library routines |
1054 | # | 1091 | # |
1055 | CONFIG_BITREVERSE=y | 1092 | CONFIG_BITREVERSE=y |
1093 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1094 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1056 | CONFIG_CRC_CCITT=m | 1095 | CONFIG_CRC_CCITT=m |
1057 | CONFIG_CRC16=y | 1096 | CONFIG_CRC16=y |
1058 | # CONFIG_CRC_ITU_T is not set | 1097 | CONFIG_CRC_ITU_T=m |
1059 | CONFIG_CRC32=y | 1098 | CONFIG_CRC32=y |
1060 | # CONFIG_CRC7 is not set | 1099 | # CONFIG_CRC7 is not set |
1061 | CONFIG_LIBCRC32C=m | 1100 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/bvme6000_defconfig b/arch/m68k/configs/bvme6000_defconfig index ed98eff708c4..0789ede2e9ee 100644 --- a/arch/m68k/configs/bvme6000_defconfig +++ b/arch/m68k/configs/bvme6000_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:10 2008 | 4 | # Sun May 18 14:44:45 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -144,6 +147,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
144 | CONFIG_NEED_MULTIPLE_NODES=y | 147 | CONFIG_NEED_MULTIPLE_NODES=y |
145 | # CONFIG_SPARSEMEM_STATIC is not set | 148 | # CONFIG_SPARSEMEM_STATIC is not set |
146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 149 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
150 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
147 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 151 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
148 | # CONFIG_RESOURCES_64BIT is not set | 152 | # CONFIG_RESOURCES_64BIT is not set |
149 | CONFIG_ZONE_DMA_FLAG=1 | 153 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -222,8 +226,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | 226 | CONFIG_INET6_XFRM_MODE_BEET=m |
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 227 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
224 | CONFIG_IPV6_SIT=m | 228 | CONFIG_IPV6_SIT=m |
229 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
225 | CONFIG_IPV6_TUNNEL=m | 230 | CONFIG_IPV6_TUNNEL=m |
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 231 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
232 | # CONFIG_IPV6_MROUTE is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | 233 | # CONFIG_NETWORK_SECMARK is not set |
228 | CONFIG_NETFILTER=y | 234 | CONFIG_NETFILTER=y |
229 | # CONFIG_NETFILTER_DEBUG is not set | 235 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -239,6 +245,7 @@ CONFIG_NF_CONNTRACK=m | |||
239 | CONFIG_NF_CT_ACCT=y | 245 | CONFIG_NF_CT_ACCT=y |
240 | CONFIG_NF_CONNTRACK_MARK=y | 246 | CONFIG_NF_CONNTRACK_MARK=y |
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 247 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
248 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | 249 | CONFIG_NF_CT_PROTO_GRE=m |
243 | CONFIG_NF_CT_PROTO_SCTP=m | 250 | CONFIG_NF_CT_PROTO_SCTP=m |
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | 251 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -317,6 +324,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
317 | CONFIG_IP_NF_TARGET_NETMAP=m | 324 | CONFIG_IP_NF_TARGET_NETMAP=m |
318 | CONFIG_NF_NAT_SNMP_BASIC=m | 325 | CONFIG_NF_NAT_SNMP_BASIC=m |
319 | CONFIG_NF_NAT_PROTO_GRE=m | 326 | CONFIG_NF_NAT_PROTO_GRE=m |
327 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
328 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
320 | CONFIG_NF_NAT_FTP=m | 329 | CONFIG_NF_NAT_FTP=m |
321 | CONFIG_NF_NAT_IRC=m | 330 | CONFIG_NF_NAT_IRC=m |
322 | CONFIG_NF_NAT_TFTP=m | 331 | CONFIG_NF_NAT_TFTP=m |
@@ -410,8 +419,6 @@ CONFIG_IEEE80211=m | |||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | 419 | CONFIG_IEEE80211_CRYPT_WEP=m |
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | 420 | CONFIG_IEEE80211_CRYPT_CCMP=m |
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | 421 | CONFIG_IEEE80211_CRYPT_TKIP=m |
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | 422 | # CONFIG_RFKILL is not set |
416 | # CONFIG_NET_9P is not set | 423 | # CONFIG_NET_9P is not set |
417 | 424 | ||
@@ -543,6 +550,7 @@ CONFIG_BVME6000_NET=y | |||
543 | # | 550 | # |
544 | # CONFIG_WLAN_PRE80211 is not set | 551 | # CONFIG_WLAN_PRE80211 is not set |
545 | # CONFIG_WLAN_80211 is not set | 552 | # CONFIG_WLAN_80211 is not set |
553 | # CONFIG_IWLWIFI_LEDS is not set | ||
546 | # CONFIG_WAN is not set | 554 | # CONFIG_WAN is not set |
547 | CONFIG_PPP=m | 555 | CONFIG_PPP=m |
548 | # CONFIG_PPP_MULTILINK is not set | 556 | # CONFIG_PPP_MULTILINK is not set |
@@ -626,6 +634,7 @@ CONFIG_VT=y | |||
626 | CONFIG_VT_CONSOLE=y | 634 | CONFIG_VT_CONSOLE=y |
627 | CONFIG_HW_CONSOLE=y | 635 | CONFIG_HW_CONSOLE=y |
628 | CONFIG_VT_HW_CONSOLE_BINDING=y | 636 | CONFIG_VT_HW_CONSOLE_BINDING=y |
637 | # CONFIG_DEVKMEM is not set | ||
629 | # CONFIG_SERIAL_NONSTANDARD is not set | 638 | # CONFIG_SERIAL_NONSTANDARD is not set |
630 | 639 | ||
631 | # | 640 | # |
@@ -647,12 +656,7 @@ CONFIG_GEN_RTC_X=y | |||
647 | # CONFIG_RAW_DRIVER is not set | 656 | # CONFIG_RAW_DRIVER is not set |
648 | # CONFIG_TCG_TPM is not set | 657 | # CONFIG_TCG_TPM is not set |
649 | # CONFIG_I2C is not set | 658 | # CONFIG_I2C is not set |
650 | |||
651 | # | ||
652 | # SPI support | ||
653 | # | ||
654 | # CONFIG_SPI is not set | 659 | # CONFIG_SPI is not set |
655 | # CONFIG_SPI_MASTER is not set | ||
656 | # CONFIG_W1 is not set | 660 | # CONFIG_W1 is not set |
657 | # CONFIG_POWER_SUPPLY is not set | 661 | # CONFIG_POWER_SUPPLY is not set |
658 | # CONFIG_HWMON is not set | 662 | # CONFIG_HWMON is not set |
@@ -669,12 +673,22 @@ CONFIG_SSB_POSSIBLE=y | |||
669 | # Multifunction device drivers | 673 | # Multifunction device drivers |
670 | # | 674 | # |
671 | # CONFIG_MFD_SM501 is not set | 675 | # CONFIG_MFD_SM501 is not set |
676 | # CONFIG_HTC_PASIC3 is not set | ||
672 | 677 | ||
673 | # | 678 | # |
674 | # Multimedia devices | 679 | # Multimedia devices |
675 | # | 680 | # |
681 | |||
682 | # | ||
683 | # Multimedia core support | ||
684 | # | ||
676 | # CONFIG_VIDEO_DEV is not set | 685 | # CONFIG_VIDEO_DEV is not set |
677 | # CONFIG_DVB_CORE is not set | 686 | # CONFIG_DVB_CORE is not set |
687 | # CONFIG_VIDEO_MEDIA is not set | ||
688 | |||
689 | # | ||
690 | # Multimedia drivers | ||
691 | # | ||
678 | # CONFIG_DAB is not set | 692 | # CONFIG_DAB is not set |
679 | 693 | ||
680 | # | 694 | # |
@@ -707,11 +721,8 @@ CONFIG_HIDRAW=y | |||
707 | # CONFIG_MMC is not set | 721 | # CONFIG_MMC is not set |
708 | # CONFIG_MEMSTICK is not set | 722 | # CONFIG_MEMSTICK is not set |
709 | # CONFIG_NEW_LEDS is not set | 723 | # CONFIG_NEW_LEDS is not set |
724 | # CONFIG_ACCESSIBILITY is not set | ||
710 | # CONFIG_RTC_CLASS is not set | 725 | # CONFIG_RTC_CLASS is not set |
711 | |||
712 | # | ||
713 | # Userspace I/O | ||
714 | # | ||
715 | # CONFIG_UIO is not set | 726 | # CONFIG_UIO is not set |
716 | 727 | ||
717 | # | 728 | # |
@@ -739,16 +750,15 @@ CONFIG_JFS_FS=m | |||
739 | # CONFIG_JFS_SECURITY is not set | 750 | # CONFIG_JFS_SECURITY is not set |
740 | # CONFIG_JFS_DEBUG is not set | 751 | # CONFIG_JFS_DEBUG is not set |
741 | # CONFIG_JFS_STATISTICS is not set | 752 | # CONFIG_JFS_STATISTICS is not set |
742 | CONFIG_FS_POSIX_ACL=y | 753 | # CONFIG_FS_POSIX_ACL is not set |
743 | CONFIG_XFS_FS=m | 754 | CONFIG_XFS_FS=m |
744 | # CONFIG_XFS_QUOTA is not set | 755 | # CONFIG_XFS_QUOTA is not set |
745 | # CONFIG_XFS_SECURITY is not set | ||
746 | # CONFIG_XFS_POSIX_ACL is not set | 756 | # CONFIG_XFS_POSIX_ACL is not set |
747 | # CONFIG_XFS_RT is not set | 757 | # CONFIG_XFS_RT is not set |
748 | CONFIG_GFS2_FS=m | 758 | # CONFIG_XFS_DEBUG is not set |
749 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
750 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
751 | CONFIG_OCFS2_FS=m | 759 | CONFIG_OCFS2_FS=m |
760 | CONFIG_OCFS2_FS_O2CB=m | ||
761 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
752 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 762 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
753 | # CONFIG_OCFS2_DEBUG_FS is not set | 763 | # CONFIG_OCFS2_DEBUG_FS is not set |
754 | CONFIG_DNOTIFY=y | 764 | CONFIG_DNOTIFY=y |
@@ -820,12 +830,10 @@ CONFIG_NFS_FS=y | |||
820 | CONFIG_NFS_V3=y | 830 | CONFIG_NFS_V3=y |
821 | # CONFIG_NFS_V3_ACL is not set | 831 | # CONFIG_NFS_V3_ACL is not set |
822 | CONFIG_NFS_V4=y | 832 | CONFIG_NFS_V4=y |
823 | # CONFIG_NFS_DIRECTIO is not set | ||
824 | CONFIG_NFSD=m | 833 | CONFIG_NFSD=m |
825 | CONFIG_NFSD_V3=y | 834 | CONFIG_NFSD_V3=y |
826 | # CONFIG_NFSD_V3_ACL is not set | 835 | # CONFIG_NFSD_V3_ACL is not set |
827 | # CONFIG_NFSD_V4 is not set | 836 | # CONFIG_NFSD_V4 is not set |
828 | CONFIG_NFSD_TCP=y | ||
829 | CONFIG_ROOT_NFS=y | 837 | CONFIG_ROOT_NFS=y |
830 | CONFIG_LOCKD=y | 838 | CONFIG_LOCKD=y |
831 | CONFIG_LOCKD_V4=y | 839 | CONFIG_LOCKD_V4=y |
@@ -900,6 +908,7 @@ CONFIG_DLM=m | |||
900 | # CONFIG_PRINTK_TIME is not set | 908 | # CONFIG_PRINTK_TIME is not set |
901 | CONFIG_ENABLE_WARN_DEPRECATED=y | 909 | CONFIG_ENABLE_WARN_DEPRECATED=y |
902 | CONFIG_ENABLE_MUST_CHECK=y | 910 | CONFIG_ENABLE_MUST_CHECK=y |
911 | CONFIG_FRAME_WARN=1024 | ||
903 | CONFIG_MAGIC_SYSRQ=y | 912 | CONFIG_MAGIC_SYSRQ=y |
904 | # CONFIG_UNUSED_SYMBOLS is not set | 913 | # CONFIG_UNUSED_SYMBOLS is not set |
905 | # CONFIG_DEBUG_FS is not set | 914 | # CONFIG_DEBUG_FS is not set |
@@ -919,53 +928,82 @@ CONFIG_ASYNC_CORE=m | |||
919 | CONFIG_ASYNC_MEMCPY=m | 928 | CONFIG_ASYNC_MEMCPY=m |
920 | CONFIG_ASYNC_XOR=m | 929 | CONFIG_ASYNC_XOR=m |
921 | CONFIG_CRYPTO=y | 930 | CONFIG_CRYPTO=y |
931 | |||
932 | # | ||
933 | # Crypto core or helper | ||
934 | # | ||
922 | CONFIG_CRYPTO_ALGAPI=y | 935 | CONFIG_CRYPTO_ALGAPI=y |
923 | CONFIG_CRYPTO_AEAD=m | 936 | CONFIG_CRYPTO_AEAD=m |
924 | CONFIG_CRYPTO_BLKCIPHER=y | 937 | CONFIG_CRYPTO_BLKCIPHER=y |
925 | CONFIG_CRYPTO_SEQIV=m | ||
926 | CONFIG_CRYPTO_HASH=y | 938 | CONFIG_CRYPTO_HASH=y |
927 | CONFIG_CRYPTO_MANAGER=y | 939 | CONFIG_CRYPTO_MANAGER=y |
940 | CONFIG_CRYPTO_GF128MUL=m | ||
941 | CONFIG_CRYPTO_NULL=m | ||
942 | CONFIG_CRYPTO_CRYPTD=m | ||
943 | CONFIG_CRYPTO_AUTHENC=m | ||
944 | CONFIG_CRYPTO_TEST=m | ||
945 | |||
946 | # | ||
947 | # Authenticated Encryption with Associated Data | ||
948 | # | ||
949 | CONFIG_CRYPTO_CCM=m | ||
950 | CONFIG_CRYPTO_GCM=m | ||
951 | CONFIG_CRYPTO_SEQIV=m | ||
952 | |||
953 | # | ||
954 | # Block modes | ||
955 | # | ||
956 | CONFIG_CRYPTO_CBC=y | ||
957 | CONFIG_CRYPTO_CTR=m | ||
958 | CONFIG_CRYPTO_CTS=m | ||
959 | CONFIG_CRYPTO_ECB=m | ||
960 | CONFIG_CRYPTO_LRW=m | ||
961 | CONFIG_CRYPTO_PCBC=m | ||
962 | CONFIG_CRYPTO_XTS=m | ||
963 | |||
964 | # | ||
965 | # Hash modes | ||
966 | # | ||
928 | CONFIG_CRYPTO_HMAC=y | 967 | CONFIG_CRYPTO_HMAC=y |
929 | CONFIG_CRYPTO_XCBC=m | 968 | CONFIG_CRYPTO_XCBC=m |
930 | CONFIG_CRYPTO_NULL=m | 969 | |
970 | # | ||
971 | # Digest | ||
972 | # | ||
973 | CONFIG_CRYPTO_CRC32C=m | ||
931 | CONFIG_CRYPTO_MD4=m | 974 | CONFIG_CRYPTO_MD4=m |
932 | CONFIG_CRYPTO_MD5=y | 975 | CONFIG_CRYPTO_MD5=y |
976 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
933 | CONFIG_CRYPTO_SHA1=m | 977 | CONFIG_CRYPTO_SHA1=m |
934 | CONFIG_CRYPTO_SHA256=m | 978 | CONFIG_CRYPTO_SHA256=m |
935 | CONFIG_CRYPTO_SHA512=m | 979 | CONFIG_CRYPTO_SHA512=m |
936 | CONFIG_CRYPTO_WP512=m | ||
937 | CONFIG_CRYPTO_TGR192=m | 980 | CONFIG_CRYPTO_TGR192=m |
938 | CONFIG_CRYPTO_GF128MUL=m | 981 | CONFIG_CRYPTO_WP512=m |
939 | CONFIG_CRYPTO_ECB=m | 982 | |
940 | CONFIG_CRYPTO_CBC=y | 983 | # |
941 | CONFIG_CRYPTO_PCBC=m | 984 | # Ciphers |
942 | CONFIG_CRYPTO_LRW=m | 985 | # |
943 | CONFIG_CRYPTO_XTS=m | ||
944 | CONFIG_CRYPTO_CTR=m | ||
945 | CONFIG_CRYPTO_GCM=m | ||
946 | CONFIG_CRYPTO_CCM=m | ||
947 | CONFIG_CRYPTO_CRYPTD=m | ||
948 | CONFIG_CRYPTO_DES=y | ||
949 | CONFIG_CRYPTO_FCRYPT=m | ||
950 | CONFIG_CRYPTO_BLOWFISH=m | ||
951 | CONFIG_CRYPTO_TWOFISH=m | ||
952 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
953 | CONFIG_CRYPTO_SERPENT=m | ||
954 | CONFIG_CRYPTO_AES=m | 986 | CONFIG_CRYPTO_AES=m |
987 | CONFIG_CRYPTO_ANUBIS=m | ||
988 | CONFIG_CRYPTO_ARC4=m | ||
989 | CONFIG_CRYPTO_BLOWFISH=m | ||
990 | CONFIG_CRYPTO_CAMELLIA=m | ||
955 | CONFIG_CRYPTO_CAST5=m | 991 | CONFIG_CRYPTO_CAST5=m |
956 | CONFIG_CRYPTO_CAST6=m | 992 | CONFIG_CRYPTO_CAST6=m |
957 | CONFIG_CRYPTO_TEA=m | 993 | CONFIG_CRYPTO_DES=y |
958 | CONFIG_CRYPTO_ARC4=m | 994 | CONFIG_CRYPTO_FCRYPT=m |
959 | CONFIG_CRYPTO_KHAZAD=m | 995 | CONFIG_CRYPTO_KHAZAD=m |
960 | CONFIG_CRYPTO_ANUBIS=m | ||
961 | CONFIG_CRYPTO_SEED=m | ||
962 | CONFIG_CRYPTO_SALSA20=m | 996 | CONFIG_CRYPTO_SALSA20=m |
997 | CONFIG_CRYPTO_SEED=m | ||
998 | CONFIG_CRYPTO_SERPENT=m | ||
999 | CONFIG_CRYPTO_TEA=m | ||
1000 | CONFIG_CRYPTO_TWOFISH=m | ||
1001 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1002 | |||
1003 | # | ||
1004 | # Compression | ||
1005 | # | ||
963 | CONFIG_CRYPTO_DEFLATE=m | 1006 | CONFIG_CRYPTO_DEFLATE=m |
964 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
965 | CONFIG_CRYPTO_CRC32C=m | ||
966 | CONFIG_CRYPTO_CAMELLIA=m | ||
967 | CONFIG_CRYPTO_TEST=m | ||
968 | CONFIG_CRYPTO_AUTHENC=m | ||
969 | CONFIG_CRYPTO_LZO=m | 1007 | CONFIG_CRYPTO_LZO=m |
970 | # CONFIG_CRYPTO_HW is not set | 1008 | # CONFIG_CRYPTO_HW is not set |
971 | 1009 | ||
@@ -973,9 +1011,11 @@ CONFIG_CRYPTO_LZO=m | |||
973 | # Library routines | 1011 | # Library routines |
974 | # | 1012 | # |
975 | CONFIG_BITREVERSE=m | 1013 | CONFIG_BITREVERSE=m |
1014 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1015 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
976 | CONFIG_CRC_CCITT=m | 1016 | CONFIG_CRC_CCITT=m |
977 | CONFIG_CRC16=m | 1017 | CONFIG_CRC16=m |
978 | # CONFIG_CRC_ITU_T is not set | 1018 | CONFIG_CRC_ITU_T=m |
979 | CONFIG_CRC32=m | 1019 | CONFIG_CRC32=m |
980 | # CONFIG_CRC7 is not set | 1020 | # CONFIG_CRC7 is not set |
981 | CONFIG_LIBCRC32C=m | 1021 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/hp300_defconfig b/arch/m68k/configs/hp300_defconfig index 38b68c70e567..3e140bf49b22 100644 --- a/arch/m68k/configs/hp300_defconfig +++ b/arch/m68k/configs/hp300_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:12 2008 | 4 | # Sun May 18 14:44:46 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -142,6 +145,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
142 | CONFIG_NEED_MULTIPLE_NODES=y | 145 | CONFIG_NEED_MULTIPLE_NODES=y |
143 | # CONFIG_SPARSEMEM_STATIC is not set | 146 | # CONFIG_SPARSEMEM_STATIC is not set |
144 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 147 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
148 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
145 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 149 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
146 | # CONFIG_RESOURCES_64BIT is not set | 150 | # CONFIG_RESOURCES_64BIT is not set |
147 | CONFIG_ZONE_DMA_FLAG=1 | 151 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -221,8 +225,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
221 | CONFIG_INET6_XFRM_MODE_BEET=m | 225 | CONFIG_INET6_XFRM_MODE_BEET=m |
222 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 226 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
223 | CONFIG_IPV6_SIT=m | 227 | CONFIG_IPV6_SIT=m |
228 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
224 | CONFIG_IPV6_TUNNEL=m | 229 | CONFIG_IPV6_TUNNEL=m |
225 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 230 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
231 | # CONFIG_IPV6_MROUTE is not set | ||
226 | # CONFIG_NETWORK_SECMARK is not set | 232 | # CONFIG_NETWORK_SECMARK is not set |
227 | CONFIG_NETFILTER=y | 233 | CONFIG_NETFILTER=y |
228 | # CONFIG_NETFILTER_DEBUG is not set | 234 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -238,6 +244,7 @@ CONFIG_NF_CONNTRACK=m | |||
238 | CONFIG_NF_CT_ACCT=y | 244 | CONFIG_NF_CT_ACCT=y |
239 | CONFIG_NF_CONNTRACK_MARK=y | 245 | CONFIG_NF_CONNTRACK_MARK=y |
240 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 246 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
247 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
241 | CONFIG_NF_CT_PROTO_GRE=m | 248 | CONFIG_NF_CT_PROTO_GRE=m |
242 | CONFIG_NF_CT_PROTO_SCTP=m | 249 | CONFIG_NF_CT_PROTO_SCTP=m |
243 | CONFIG_NF_CT_PROTO_UDPLITE=m | 250 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -316,6 +323,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
316 | CONFIG_IP_NF_TARGET_NETMAP=m | 323 | CONFIG_IP_NF_TARGET_NETMAP=m |
317 | CONFIG_NF_NAT_SNMP_BASIC=m | 324 | CONFIG_NF_NAT_SNMP_BASIC=m |
318 | CONFIG_NF_NAT_PROTO_GRE=m | 325 | CONFIG_NF_NAT_PROTO_GRE=m |
326 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
327 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
319 | CONFIG_NF_NAT_FTP=m | 328 | CONFIG_NF_NAT_FTP=m |
320 | CONFIG_NF_NAT_IRC=m | 329 | CONFIG_NF_NAT_IRC=m |
321 | CONFIG_NF_NAT_TFTP=m | 330 | CONFIG_NF_NAT_TFTP=m |
@@ -409,8 +418,6 @@ CONFIG_IEEE80211=m | |||
409 | CONFIG_IEEE80211_CRYPT_WEP=m | 418 | CONFIG_IEEE80211_CRYPT_WEP=m |
410 | CONFIG_IEEE80211_CRYPT_CCMP=m | 419 | CONFIG_IEEE80211_CRYPT_CCMP=m |
411 | CONFIG_IEEE80211_CRYPT_TKIP=m | 420 | CONFIG_IEEE80211_CRYPT_TKIP=m |
412 | CONFIG_IEEE80211_SOFTMAC=m | ||
413 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
414 | # CONFIG_RFKILL is not set | 421 | # CONFIG_RFKILL is not set |
415 | # CONFIG_NET_9P is not set | 422 | # CONFIG_NET_9P is not set |
416 | 423 | ||
@@ -540,6 +547,7 @@ CONFIG_HPLANCE=y | |||
540 | # | 547 | # |
541 | # CONFIG_WLAN_PRE80211 is not set | 548 | # CONFIG_WLAN_PRE80211 is not set |
542 | # CONFIG_WLAN_80211 is not set | 549 | # CONFIG_WLAN_80211 is not set |
550 | # CONFIG_IWLWIFI_LEDS is not set | ||
543 | # CONFIG_WAN is not set | 551 | # CONFIG_WAN is not set |
544 | CONFIG_PPP=m | 552 | CONFIG_PPP=m |
545 | # CONFIG_PPP_MULTILINK is not set | 553 | # CONFIG_PPP_MULTILINK is not set |
@@ -631,6 +639,7 @@ CONFIG_VT=y | |||
631 | CONFIG_VT_CONSOLE=y | 639 | CONFIG_VT_CONSOLE=y |
632 | CONFIG_HW_CONSOLE=y | 640 | CONFIG_HW_CONSOLE=y |
633 | CONFIG_VT_HW_CONSOLE_BINDING=y | 641 | CONFIG_VT_HW_CONSOLE_BINDING=y |
642 | # CONFIG_DEVKMEM is not set | ||
634 | # CONFIG_SERIAL_NONSTANDARD is not set | 643 | # CONFIG_SERIAL_NONSTANDARD is not set |
635 | 644 | ||
636 | # | 645 | # |
@@ -652,12 +661,7 @@ CONFIG_GEN_RTC_X=y | |||
652 | # CONFIG_RAW_DRIVER is not set | 661 | # CONFIG_RAW_DRIVER is not set |
653 | # CONFIG_TCG_TPM is not set | 662 | # CONFIG_TCG_TPM is not set |
654 | # CONFIG_I2C is not set | 663 | # CONFIG_I2C is not set |
655 | |||
656 | # | ||
657 | # SPI support | ||
658 | # | ||
659 | # CONFIG_SPI is not set | 664 | # CONFIG_SPI is not set |
660 | # CONFIG_SPI_MASTER is not set | ||
661 | # CONFIG_W1 is not set | 665 | # CONFIG_W1 is not set |
662 | # CONFIG_POWER_SUPPLY is not set | 666 | # CONFIG_POWER_SUPPLY is not set |
663 | # CONFIG_HWMON is not set | 667 | # CONFIG_HWMON is not set |
@@ -674,12 +678,22 @@ CONFIG_SSB_POSSIBLE=y | |||
674 | # Multifunction device drivers | 678 | # Multifunction device drivers |
675 | # | 679 | # |
676 | # CONFIG_MFD_SM501 is not set | 680 | # CONFIG_MFD_SM501 is not set |
681 | # CONFIG_HTC_PASIC3 is not set | ||
677 | 682 | ||
678 | # | 683 | # |
679 | # Multimedia devices | 684 | # Multimedia devices |
680 | # | 685 | # |
686 | |||
687 | # | ||
688 | # Multimedia core support | ||
689 | # | ||
681 | # CONFIG_VIDEO_DEV is not set | 690 | # CONFIG_VIDEO_DEV is not set |
682 | # CONFIG_DVB_CORE is not set | 691 | # CONFIG_DVB_CORE is not set |
692 | # CONFIG_VIDEO_MEDIA is not set | ||
693 | |||
694 | # | ||
695 | # Multimedia drivers | ||
696 | # | ||
683 | # CONFIG_DAB is not set | 697 | # CONFIG_DAB is not set |
684 | 698 | ||
685 | # | 699 | # |
@@ -690,15 +704,15 @@ CONFIG_SSB_POSSIBLE=y | |||
690 | CONFIG_FB=y | 704 | CONFIG_FB=y |
691 | # CONFIG_FIRMWARE_EDID is not set | 705 | # CONFIG_FIRMWARE_EDID is not set |
692 | # CONFIG_FB_DDC is not set | 706 | # CONFIG_FB_DDC is not set |
693 | CONFIG_FB_CFB_FILLRECT=y | 707 | # CONFIG_FB_CFB_FILLRECT is not set |
694 | # CONFIG_FB_CFB_COPYAREA is not set | 708 | # CONFIG_FB_CFB_COPYAREA is not set |
695 | CONFIG_FB_CFB_IMAGEBLIT=y | 709 | CONFIG_FB_CFB_IMAGEBLIT=y |
696 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | 710 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set |
697 | # CONFIG_FB_SYS_FILLRECT is not set | 711 | # CONFIG_FB_SYS_FILLRECT is not set |
698 | # CONFIG_FB_SYS_COPYAREA is not set | 712 | # CONFIG_FB_SYS_COPYAREA is not set |
699 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 713 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
714 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
700 | # CONFIG_FB_SYS_FOPS is not set | 715 | # CONFIG_FB_SYS_FOPS is not set |
701 | CONFIG_FB_DEFERRED_IO=y | ||
702 | # CONFIG_FB_SVGALIB is not set | 716 | # CONFIG_FB_SVGALIB is not set |
703 | # CONFIG_FB_MACMODES is not set | 717 | # CONFIG_FB_MACMODES is not set |
704 | # CONFIG_FB_BACKLIGHT is not set | 718 | # CONFIG_FB_BACKLIGHT is not set |
@@ -746,11 +760,8 @@ CONFIG_HIDRAW=y | |||
746 | # CONFIG_MMC is not set | 760 | # CONFIG_MMC is not set |
747 | # CONFIG_MEMSTICK is not set | 761 | # CONFIG_MEMSTICK is not set |
748 | # CONFIG_NEW_LEDS is not set | 762 | # CONFIG_NEW_LEDS is not set |
763 | # CONFIG_ACCESSIBILITY is not set | ||
749 | # CONFIG_RTC_CLASS is not set | 764 | # CONFIG_RTC_CLASS is not set |
750 | |||
751 | # | ||
752 | # Userspace I/O | ||
753 | # | ||
754 | # CONFIG_UIO is not set | 765 | # CONFIG_UIO is not set |
755 | 766 | ||
756 | # | 767 | # |
@@ -776,16 +787,15 @@ CONFIG_JFS_FS=m | |||
776 | # CONFIG_JFS_SECURITY is not set | 787 | # CONFIG_JFS_SECURITY is not set |
777 | # CONFIG_JFS_DEBUG is not set | 788 | # CONFIG_JFS_DEBUG is not set |
778 | # CONFIG_JFS_STATISTICS is not set | 789 | # CONFIG_JFS_STATISTICS is not set |
779 | CONFIG_FS_POSIX_ACL=y | 790 | # CONFIG_FS_POSIX_ACL is not set |
780 | CONFIG_XFS_FS=m | 791 | CONFIG_XFS_FS=m |
781 | # CONFIG_XFS_QUOTA is not set | 792 | # CONFIG_XFS_QUOTA is not set |
782 | # CONFIG_XFS_SECURITY is not set | ||
783 | # CONFIG_XFS_POSIX_ACL is not set | 793 | # CONFIG_XFS_POSIX_ACL is not set |
784 | # CONFIG_XFS_RT is not set | 794 | # CONFIG_XFS_RT is not set |
785 | CONFIG_GFS2_FS=m | 795 | # CONFIG_XFS_DEBUG is not set |
786 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
787 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
788 | CONFIG_OCFS2_FS=m | 796 | CONFIG_OCFS2_FS=m |
797 | CONFIG_OCFS2_FS_O2CB=m | ||
798 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
789 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 799 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
790 | # CONFIG_OCFS2_DEBUG_FS is not set | 800 | # CONFIG_OCFS2_DEBUG_FS is not set |
791 | CONFIG_DNOTIFY=y | 801 | CONFIG_DNOTIFY=y |
@@ -857,12 +867,10 @@ CONFIG_NFS_FS=y | |||
857 | CONFIG_NFS_V3=y | 867 | CONFIG_NFS_V3=y |
858 | # CONFIG_NFS_V3_ACL is not set | 868 | # CONFIG_NFS_V3_ACL is not set |
859 | CONFIG_NFS_V4=y | 869 | CONFIG_NFS_V4=y |
860 | # CONFIG_NFS_DIRECTIO is not set | ||
861 | CONFIG_NFSD=m | 870 | CONFIG_NFSD=m |
862 | CONFIG_NFSD_V3=y | 871 | CONFIG_NFSD_V3=y |
863 | # CONFIG_NFSD_V3_ACL is not set | 872 | # CONFIG_NFSD_V3_ACL is not set |
864 | # CONFIG_NFSD_V4 is not set | 873 | # CONFIG_NFSD_V4 is not set |
865 | CONFIG_NFSD_TCP=y | ||
866 | CONFIG_ROOT_NFS=y | 874 | CONFIG_ROOT_NFS=y |
867 | CONFIG_LOCKD=y | 875 | CONFIG_LOCKD=y |
868 | CONFIG_LOCKD_V4=y | 876 | CONFIG_LOCKD_V4=y |
@@ -936,6 +944,7 @@ CONFIG_DLM=m | |||
936 | # CONFIG_PRINTK_TIME is not set | 944 | # CONFIG_PRINTK_TIME is not set |
937 | CONFIG_ENABLE_WARN_DEPRECATED=y | 945 | CONFIG_ENABLE_WARN_DEPRECATED=y |
938 | CONFIG_ENABLE_MUST_CHECK=y | 946 | CONFIG_ENABLE_MUST_CHECK=y |
947 | CONFIG_FRAME_WARN=1024 | ||
939 | CONFIG_MAGIC_SYSRQ=y | 948 | CONFIG_MAGIC_SYSRQ=y |
940 | # CONFIG_UNUSED_SYMBOLS is not set | 949 | # CONFIG_UNUSED_SYMBOLS is not set |
941 | # CONFIG_DEBUG_FS is not set | 950 | # CONFIG_DEBUG_FS is not set |
@@ -955,53 +964,82 @@ CONFIG_ASYNC_CORE=m | |||
955 | CONFIG_ASYNC_MEMCPY=m | 964 | CONFIG_ASYNC_MEMCPY=m |
956 | CONFIG_ASYNC_XOR=m | 965 | CONFIG_ASYNC_XOR=m |
957 | CONFIG_CRYPTO=y | 966 | CONFIG_CRYPTO=y |
967 | |||
968 | # | ||
969 | # Crypto core or helper | ||
970 | # | ||
958 | CONFIG_CRYPTO_ALGAPI=y | 971 | CONFIG_CRYPTO_ALGAPI=y |
959 | CONFIG_CRYPTO_AEAD=m | 972 | CONFIG_CRYPTO_AEAD=m |
960 | CONFIG_CRYPTO_BLKCIPHER=y | 973 | CONFIG_CRYPTO_BLKCIPHER=y |
961 | CONFIG_CRYPTO_SEQIV=m | ||
962 | CONFIG_CRYPTO_HASH=y | 974 | CONFIG_CRYPTO_HASH=y |
963 | CONFIG_CRYPTO_MANAGER=y | 975 | CONFIG_CRYPTO_MANAGER=y |
976 | CONFIG_CRYPTO_GF128MUL=m | ||
977 | CONFIG_CRYPTO_NULL=m | ||
978 | CONFIG_CRYPTO_CRYPTD=m | ||
979 | CONFIG_CRYPTO_AUTHENC=m | ||
980 | CONFIG_CRYPTO_TEST=m | ||
981 | |||
982 | # | ||
983 | # Authenticated Encryption with Associated Data | ||
984 | # | ||
985 | CONFIG_CRYPTO_CCM=m | ||
986 | CONFIG_CRYPTO_GCM=m | ||
987 | CONFIG_CRYPTO_SEQIV=m | ||
988 | |||
989 | # | ||
990 | # Block modes | ||
991 | # | ||
992 | CONFIG_CRYPTO_CBC=y | ||
993 | CONFIG_CRYPTO_CTR=m | ||
994 | CONFIG_CRYPTO_CTS=m | ||
995 | CONFIG_CRYPTO_ECB=m | ||
996 | CONFIG_CRYPTO_LRW=m | ||
997 | CONFIG_CRYPTO_PCBC=m | ||
998 | CONFIG_CRYPTO_XTS=m | ||
999 | |||
1000 | # | ||
1001 | # Hash modes | ||
1002 | # | ||
964 | CONFIG_CRYPTO_HMAC=y | 1003 | CONFIG_CRYPTO_HMAC=y |
965 | CONFIG_CRYPTO_XCBC=m | 1004 | CONFIG_CRYPTO_XCBC=m |
966 | CONFIG_CRYPTO_NULL=m | 1005 | |
1006 | # | ||
1007 | # Digest | ||
1008 | # | ||
1009 | CONFIG_CRYPTO_CRC32C=m | ||
967 | CONFIG_CRYPTO_MD4=m | 1010 | CONFIG_CRYPTO_MD4=m |
968 | CONFIG_CRYPTO_MD5=y | 1011 | CONFIG_CRYPTO_MD5=y |
1012 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
969 | CONFIG_CRYPTO_SHA1=m | 1013 | CONFIG_CRYPTO_SHA1=m |
970 | CONFIG_CRYPTO_SHA256=m | 1014 | CONFIG_CRYPTO_SHA256=m |
971 | CONFIG_CRYPTO_SHA512=m | 1015 | CONFIG_CRYPTO_SHA512=m |
972 | CONFIG_CRYPTO_WP512=m | ||
973 | CONFIG_CRYPTO_TGR192=m | 1016 | CONFIG_CRYPTO_TGR192=m |
974 | CONFIG_CRYPTO_GF128MUL=m | 1017 | CONFIG_CRYPTO_WP512=m |
975 | CONFIG_CRYPTO_ECB=m | 1018 | |
976 | CONFIG_CRYPTO_CBC=y | 1019 | # |
977 | CONFIG_CRYPTO_PCBC=m | 1020 | # Ciphers |
978 | CONFIG_CRYPTO_LRW=m | 1021 | # |
979 | CONFIG_CRYPTO_XTS=m | ||
980 | CONFIG_CRYPTO_CTR=m | ||
981 | CONFIG_CRYPTO_GCM=m | ||
982 | CONFIG_CRYPTO_CCM=m | ||
983 | CONFIG_CRYPTO_CRYPTD=m | ||
984 | CONFIG_CRYPTO_DES=y | ||
985 | CONFIG_CRYPTO_FCRYPT=m | ||
986 | CONFIG_CRYPTO_BLOWFISH=m | ||
987 | CONFIG_CRYPTO_TWOFISH=m | ||
988 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
989 | CONFIG_CRYPTO_SERPENT=m | ||
990 | CONFIG_CRYPTO_AES=m | 1022 | CONFIG_CRYPTO_AES=m |
1023 | CONFIG_CRYPTO_ANUBIS=m | ||
1024 | CONFIG_CRYPTO_ARC4=m | ||
1025 | CONFIG_CRYPTO_BLOWFISH=m | ||
1026 | CONFIG_CRYPTO_CAMELLIA=m | ||
991 | CONFIG_CRYPTO_CAST5=m | 1027 | CONFIG_CRYPTO_CAST5=m |
992 | CONFIG_CRYPTO_CAST6=m | 1028 | CONFIG_CRYPTO_CAST6=m |
993 | CONFIG_CRYPTO_TEA=m | 1029 | CONFIG_CRYPTO_DES=y |
994 | CONFIG_CRYPTO_ARC4=m | 1030 | CONFIG_CRYPTO_FCRYPT=m |
995 | CONFIG_CRYPTO_KHAZAD=m | 1031 | CONFIG_CRYPTO_KHAZAD=m |
996 | CONFIG_CRYPTO_ANUBIS=m | ||
997 | CONFIG_CRYPTO_SEED=m | ||
998 | CONFIG_CRYPTO_SALSA20=m | 1032 | CONFIG_CRYPTO_SALSA20=m |
1033 | CONFIG_CRYPTO_SEED=m | ||
1034 | CONFIG_CRYPTO_SERPENT=m | ||
1035 | CONFIG_CRYPTO_TEA=m | ||
1036 | CONFIG_CRYPTO_TWOFISH=m | ||
1037 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1038 | |||
1039 | # | ||
1040 | # Compression | ||
1041 | # | ||
999 | CONFIG_CRYPTO_DEFLATE=m | 1042 | CONFIG_CRYPTO_DEFLATE=m |
1000 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1001 | CONFIG_CRYPTO_CRC32C=m | ||
1002 | CONFIG_CRYPTO_CAMELLIA=m | ||
1003 | CONFIG_CRYPTO_TEST=m | ||
1004 | CONFIG_CRYPTO_AUTHENC=m | ||
1005 | CONFIG_CRYPTO_LZO=m | 1043 | CONFIG_CRYPTO_LZO=m |
1006 | # CONFIG_CRYPTO_HW is not set | 1044 | # CONFIG_CRYPTO_HW is not set |
1007 | 1045 | ||
@@ -1009,9 +1047,11 @@ CONFIG_CRYPTO_LZO=m | |||
1009 | # Library routines | 1047 | # Library routines |
1010 | # | 1048 | # |
1011 | CONFIG_BITREVERSE=y | 1049 | CONFIG_BITREVERSE=y |
1050 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1051 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1012 | CONFIG_CRC_CCITT=m | 1052 | CONFIG_CRC_CCITT=m |
1013 | CONFIG_CRC16=m | 1053 | CONFIG_CRC16=m |
1014 | # CONFIG_CRC_ITU_T is not set | 1054 | CONFIG_CRC_ITU_T=m |
1015 | CONFIG_CRC32=y | 1055 | CONFIG_CRC32=y |
1016 | # CONFIG_CRC7 is not set | 1056 | # CONFIG_CRC7 is not set |
1017 | CONFIG_LIBCRC32C=m | 1057 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/mac_defconfig b/arch/m68k/configs/mac_defconfig index 738bca695a88..ba3a91792cbf 100644 --- a/arch/m68k/configs/mac_defconfig +++ b/arch/m68k/configs/mac_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:14 2008 | 4 | # Sun May 18 14:44:47 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -143,6 +146,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
143 | CONFIG_NEED_MULTIPLE_NODES=y | 146 | CONFIG_NEED_MULTIPLE_NODES=y |
144 | # CONFIG_SPARSEMEM_STATIC is not set | 147 | # CONFIG_SPARSEMEM_STATIC is not set |
145 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 148 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
149 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
146 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 150 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
147 | # CONFIG_RESOURCES_64BIT is not set | 151 | # CONFIG_RESOURCES_64BIT is not set |
148 | CONFIG_ZONE_DMA_FLAG=1 | 152 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -219,8 +223,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
219 | CONFIG_INET6_XFRM_MODE_BEET=m | 223 | CONFIG_INET6_XFRM_MODE_BEET=m |
220 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 224 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
221 | CONFIG_IPV6_SIT=m | 225 | CONFIG_IPV6_SIT=m |
226 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
222 | CONFIG_IPV6_TUNNEL=m | 227 | CONFIG_IPV6_TUNNEL=m |
223 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 228 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
229 | # CONFIG_IPV6_MROUTE is not set | ||
224 | # CONFIG_NETWORK_SECMARK is not set | 230 | # CONFIG_NETWORK_SECMARK is not set |
225 | CONFIG_NETFILTER=y | 231 | CONFIG_NETFILTER=y |
226 | # CONFIG_NETFILTER_DEBUG is not set | 232 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -236,6 +242,7 @@ CONFIG_NF_CONNTRACK=m | |||
236 | CONFIG_NF_CT_ACCT=y | 242 | CONFIG_NF_CT_ACCT=y |
237 | CONFIG_NF_CONNTRACK_MARK=y | 243 | CONFIG_NF_CONNTRACK_MARK=y |
238 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 244 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
245 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
239 | CONFIG_NF_CT_PROTO_GRE=m | 246 | CONFIG_NF_CT_PROTO_GRE=m |
240 | CONFIG_NF_CT_PROTO_SCTP=m | 247 | CONFIG_NF_CT_PROTO_SCTP=m |
241 | CONFIG_NF_CT_PROTO_UDPLITE=m | 248 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -314,6 +321,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
314 | CONFIG_IP_NF_TARGET_NETMAP=m | 321 | CONFIG_IP_NF_TARGET_NETMAP=m |
315 | CONFIG_NF_NAT_SNMP_BASIC=m | 322 | CONFIG_NF_NAT_SNMP_BASIC=m |
316 | CONFIG_NF_NAT_PROTO_GRE=m | 323 | CONFIG_NF_NAT_PROTO_GRE=m |
324 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
325 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
317 | CONFIG_NF_NAT_FTP=m | 326 | CONFIG_NF_NAT_FTP=m |
318 | CONFIG_NF_NAT_IRC=m | 327 | CONFIG_NF_NAT_IRC=m |
319 | CONFIG_NF_NAT_TFTP=m | 328 | CONFIG_NF_NAT_TFTP=m |
@@ -410,8 +419,6 @@ CONFIG_IEEE80211=m | |||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | 419 | CONFIG_IEEE80211_CRYPT_WEP=m |
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | 420 | CONFIG_IEEE80211_CRYPT_CCMP=m |
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | 421 | CONFIG_IEEE80211_CRYPT_TKIP=m |
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | 422 | # CONFIG_RFKILL is not set |
416 | # CONFIG_NET_9P is not set | 423 | # CONFIG_NET_9P is not set |
417 | 424 | ||
@@ -467,11 +474,10 @@ CONFIG_IDE_PROC_FS=y | |||
467 | # | 474 | # |
468 | # IDE chipset support/bugfixes | 475 | # IDE chipset support/bugfixes |
469 | # | 476 | # |
470 | # CONFIG_IDE_GENERIC is not set | ||
471 | # CONFIG_BLK_DEV_PLATFORM is not set | 477 | # CONFIG_BLK_DEV_PLATFORM is not set |
472 | CONFIG_BLK_DEV_MAC_IDE=y | 478 | CONFIG_BLK_DEV_MAC_IDE=y |
473 | # CONFIG_BLK_DEV_IDEDMA is not set | 479 | # CONFIG_BLK_DEV_IDEDMA is not set |
474 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set | 480 | # CONFIG_BLK_DEV_HD_ONLY is not set |
475 | # CONFIG_BLK_DEV_HD is not set | 481 | # CONFIG_BLK_DEV_HD is not set |
476 | 482 | ||
477 | # | 483 | # |
@@ -520,6 +526,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
520 | CONFIG_ISCSI_TCP=m | 526 | CONFIG_ISCSI_TCP=m |
521 | # CONFIG_SCSI_DEBUG is not set | 527 | # CONFIG_SCSI_DEBUG is not set |
522 | CONFIG_MAC_SCSI=y | 528 | CONFIG_MAC_SCSI=y |
529 | CONFIG_SCSI_MAC_ESP=y | ||
523 | CONFIG_MD=y | 530 | CONFIG_MD=y |
524 | CONFIG_BLK_DEV_MD=m | 531 | CONFIG_BLK_DEV_MD=m |
525 | CONFIG_MD_LINEAR=m | 532 | CONFIG_MD_LINEAR=m |
@@ -580,6 +587,7 @@ CONFIG_MACMACE=y | |||
580 | # | 587 | # |
581 | # CONFIG_WLAN_PRE80211 is not set | 588 | # CONFIG_WLAN_PRE80211 is not set |
582 | # CONFIG_WLAN_80211 is not set | 589 | # CONFIG_WLAN_80211 is not set |
590 | # CONFIG_IWLWIFI_LEDS is not set | ||
583 | # CONFIG_WAN is not set | 591 | # CONFIG_WAN is not set |
584 | CONFIG_PPP=m | 592 | CONFIG_PPP=m |
585 | # CONFIG_PPP_MULTILINK is not set | 593 | # CONFIG_PPP_MULTILINK is not set |
@@ -665,6 +673,7 @@ CONFIG_VT=y | |||
665 | CONFIG_VT_CONSOLE=y | 673 | CONFIG_VT_CONSOLE=y |
666 | CONFIG_HW_CONSOLE=y | 674 | CONFIG_HW_CONSOLE=y |
667 | CONFIG_VT_HW_CONSOLE_BINDING=y | 675 | CONFIG_VT_HW_CONSOLE_BINDING=y |
676 | # CONFIG_DEVKMEM is not set | ||
668 | # CONFIG_SERIAL_NONSTANDARD is not set | 677 | # CONFIG_SERIAL_NONSTANDARD is not set |
669 | 678 | ||
670 | # | 679 | # |
@@ -686,12 +695,7 @@ CONFIG_GEN_RTC_X=y | |||
686 | # CONFIG_RAW_DRIVER is not set | 695 | # CONFIG_RAW_DRIVER is not set |
687 | # CONFIG_TCG_TPM is not set | 696 | # CONFIG_TCG_TPM is not set |
688 | # CONFIG_I2C is not set | 697 | # CONFIG_I2C is not set |
689 | |||
690 | # | ||
691 | # SPI support | ||
692 | # | ||
693 | # CONFIG_SPI is not set | 698 | # CONFIG_SPI is not set |
694 | # CONFIG_SPI_MASTER is not set | ||
695 | # CONFIG_W1 is not set | 699 | # CONFIG_W1 is not set |
696 | # CONFIG_POWER_SUPPLY is not set | 700 | # CONFIG_POWER_SUPPLY is not set |
697 | # CONFIG_HWMON is not set | 701 | # CONFIG_HWMON is not set |
@@ -708,12 +712,22 @@ CONFIG_SSB_POSSIBLE=y | |||
708 | # Multifunction device drivers | 712 | # Multifunction device drivers |
709 | # | 713 | # |
710 | # CONFIG_MFD_SM501 is not set | 714 | # CONFIG_MFD_SM501 is not set |
715 | # CONFIG_HTC_PASIC3 is not set | ||
711 | 716 | ||
712 | # | 717 | # |
713 | # Multimedia devices | 718 | # Multimedia devices |
714 | # | 719 | # |
720 | |||
721 | # | ||
722 | # Multimedia core support | ||
723 | # | ||
715 | # CONFIG_VIDEO_DEV is not set | 724 | # CONFIG_VIDEO_DEV is not set |
716 | # CONFIG_DVB_CORE is not set | 725 | # CONFIG_DVB_CORE is not set |
726 | # CONFIG_VIDEO_MEDIA is not set | ||
727 | |||
728 | # | ||
729 | # Multimedia drivers | ||
730 | # | ||
717 | # CONFIG_DAB is not set | 731 | # CONFIG_DAB is not set |
718 | 732 | ||
719 | # | 733 | # |
@@ -731,8 +745,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
731 | # CONFIG_FB_SYS_FILLRECT is not set | 745 | # CONFIG_FB_SYS_FILLRECT is not set |
732 | # CONFIG_FB_SYS_COPYAREA is not set | 746 | # CONFIG_FB_SYS_COPYAREA is not set |
733 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 747 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
748 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
734 | # CONFIG_FB_SYS_FOPS is not set | 749 | # CONFIG_FB_SYS_FOPS is not set |
735 | CONFIG_FB_DEFERRED_IO=y | ||
736 | # CONFIG_FB_SVGALIB is not set | 750 | # CONFIG_FB_SVGALIB is not set |
737 | CONFIG_FB_MACMODES=y | 751 | CONFIG_FB_MACMODES=y |
738 | # CONFIG_FB_BACKLIGHT is not set | 752 | # CONFIG_FB_BACKLIGHT is not set |
@@ -783,11 +797,8 @@ CONFIG_HIDRAW=y | |||
783 | # CONFIG_MMC is not set | 797 | # CONFIG_MMC is not set |
784 | # CONFIG_MEMSTICK is not set | 798 | # CONFIG_MEMSTICK is not set |
785 | # CONFIG_NEW_LEDS is not set | 799 | # CONFIG_NEW_LEDS is not set |
800 | # CONFIG_ACCESSIBILITY is not set | ||
786 | # CONFIG_RTC_CLASS is not set | 801 | # CONFIG_RTC_CLASS is not set |
787 | |||
788 | # | ||
789 | # Userspace I/O | ||
790 | # | ||
791 | # CONFIG_UIO is not set | 802 | # CONFIG_UIO is not set |
792 | 803 | ||
793 | # | 804 | # |
@@ -816,16 +827,15 @@ CONFIG_JFS_FS=m | |||
816 | # CONFIG_JFS_SECURITY is not set | 827 | # CONFIG_JFS_SECURITY is not set |
817 | # CONFIG_JFS_DEBUG is not set | 828 | # CONFIG_JFS_DEBUG is not set |
818 | # CONFIG_JFS_STATISTICS is not set | 829 | # CONFIG_JFS_STATISTICS is not set |
819 | CONFIG_FS_POSIX_ACL=y | 830 | # CONFIG_FS_POSIX_ACL is not set |
820 | CONFIG_XFS_FS=m | 831 | CONFIG_XFS_FS=m |
821 | # CONFIG_XFS_QUOTA is not set | 832 | # CONFIG_XFS_QUOTA is not set |
822 | # CONFIG_XFS_SECURITY is not set | ||
823 | # CONFIG_XFS_POSIX_ACL is not set | 833 | # CONFIG_XFS_POSIX_ACL is not set |
824 | # CONFIG_XFS_RT is not set | 834 | # CONFIG_XFS_RT is not set |
825 | CONFIG_GFS2_FS=m | 835 | # CONFIG_XFS_DEBUG is not set |
826 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
827 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
828 | CONFIG_OCFS2_FS=m | 836 | CONFIG_OCFS2_FS=m |
837 | CONFIG_OCFS2_FS_O2CB=m | ||
838 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
829 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 839 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
830 | # CONFIG_OCFS2_DEBUG_FS is not set | 840 | # CONFIG_OCFS2_DEBUG_FS is not set |
831 | CONFIG_DNOTIFY=y | 841 | CONFIG_DNOTIFY=y |
@@ -897,12 +907,10 @@ CONFIG_NFS_FS=m | |||
897 | CONFIG_NFS_V3=y | 907 | CONFIG_NFS_V3=y |
898 | # CONFIG_NFS_V3_ACL is not set | 908 | # CONFIG_NFS_V3_ACL is not set |
899 | CONFIG_NFS_V4=y | 909 | CONFIG_NFS_V4=y |
900 | # CONFIG_NFS_DIRECTIO is not set | ||
901 | CONFIG_NFSD=m | 910 | CONFIG_NFSD=m |
902 | CONFIG_NFSD_V3=y | 911 | CONFIG_NFSD_V3=y |
903 | # CONFIG_NFSD_V3_ACL is not set | 912 | # CONFIG_NFSD_V3_ACL is not set |
904 | # CONFIG_NFSD_V4 is not set | 913 | # CONFIG_NFSD_V4 is not set |
905 | CONFIG_NFSD_TCP=y | ||
906 | CONFIG_LOCKD=m | 914 | CONFIG_LOCKD=m |
907 | CONFIG_LOCKD_V4=y | 915 | CONFIG_LOCKD_V4=y |
908 | CONFIG_EXPORTFS=m | 916 | CONFIG_EXPORTFS=m |
@@ -976,6 +984,7 @@ CONFIG_DLM=m | |||
976 | # CONFIG_PRINTK_TIME is not set | 984 | # CONFIG_PRINTK_TIME is not set |
977 | CONFIG_ENABLE_WARN_DEPRECATED=y | 985 | CONFIG_ENABLE_WARN_DEPRECATED=y |
978 | CONFIG_ENABLE_MUST_CHECK=y | 986 | CONFIG_ENABLE_MUST_CHECK=y |
987 | CONFIG_FRAME_WARN=1024 | ||
979 | CONFIG_MAGIC_SYSRQ=y | 988 | CONFIG_MAGIC_SYSRQ=y |
980 | # CONFIG_UNUSED_SYMBOLS is not set | 989 | # CONFIG_UNUSED_SYMBOLS is not set |
981 | # CONFIG_DEBUG_FS is not set | 990 | # CONFIG_DEBUG_FS is not set |
@@ -995,53 +1004,82 @@ CONFIG_ASYNC_CORE=m | |||
995 | CONFIG_ASYNC_MEMCPY=m | 1004 | CONFIG_ASYNC_MEMCPY=m |
996 | CONFIG_ASYNC_XOR=m | 1005 | CONFIG_ASYNC_XOR=m |
997 | CONFIG_CRYPTO=y | 1006 | CONFIG_CRYPTO=y |
1007 | |||
1008 | # | ||
1009 | # Crypto core or helper | ||
1010 | # | ||
998 | CONFIG_CRYPTO_ALGAPI=y | 1011 | CONFIG_CRYPTO_ALGAPI=y |
999 | CONFIG_CRYPTO_AEAD=m | 1012 | CONFIG_CRYPTO_AEAD=m |
1000 | CONFIG_CRYPTO_BLKCIPHER=m | 1013 | CONFIG_CRYPTO_BLKCIPHER=m |
1001 | CONFIG_CRYPTO_SEQIV=m | ||
1002 | CONFIG_CRYPTO_HASH=y | 1014 | CONFIG_CRYPTO_HASH=y |
1003 | CONFIG_CRYPTO_MANAGER=y | 1015 | CONFIG_CRYPTO_MANAGER=y |
1016 | CONFIG_CRYPTO_GF128MUL=m | ||
1017 | CONFIG_CRYPTO_NULL=m | ||
1018 | CONFIG_CRYPTO_CRYPTD=m | ||
1019 | CONFIG_CRYPTO_AUTHENC=m | ||
1020 | CONFIG_CRYPTO_TEST=m | ||
1021 | |||
1022 | # | ||
1023 | # Authenticated Encryption with Associated Data | ||
1024 | # | ||
1025 | CONFIG_CRYPTO_CCM=m | ||
1026 | CONFIG_CRYPTO_GCM=m | ||
1027 | CONFIG_CRYPTO_SEQIV=m | ||
1028 | |||
1029 | # | ||
1030 | # Block modes | ||
1031 | # | ||
1032 | CONFIG_CRYPTO_CBC=m | ||
1033 | CONFIG_CRYPTO_CTR=m | ||
1034 | CONFIG_CRYPTO_CTS=m | ||
1035 | CONFIG_CRYPTO_ECB=m | ||
1036 | CONFIG_CRYPTO_LRW=m | ||
1037 | CONFIG_CRYPTO_PCBC=m | ||
1038 | CONFIG_CRYPTO_XTS=m | ||
1039 | |||
1040 | # | ||
1041 | # Hash modes | ||
1042 | # | ||
1004 | CONFIG_CRYPTO_HMAC=y | 1043 | CONFIG_CRYPTO_HMAC=y |
1005 | CONFIG_CRYPTO_XCBC=m | 1044 | CONFIG_CRYPTO_XCBC=m |
1006 | CONFIG_CRYPTO_NULL=m | 1045 | |
1046 | # | ||
1047 | # Digest | ||
1048 | # | ||
1049 | CONFIG_CRYPTO_CRC32C=m | ||
1007 | CONFIG_CRYPTO_MD4=m | 1050 | CONFIG_CRYPTO_MD4=m |
1008 | CONFIG_CRYPTO_MD5=m | 1051 | CONFIG_CRYPTO_MD5=m |
1052 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1009 | CONFIG_CRYPTO_SHA1=m | 1053 | CONFIG_CRYPTO_SHA1=m |
1010 | CONFIG_CRYPTO_SHA256=m | 1054 | CONFIG_CRYPTO_SHA256=m |
1011 | CONFIG_CRYPTO_SHA512=m | 1055 | CONFIG_CRYPTO_SHA512=m |
1012 | CONFIG_CRYPTO_WP512=m | ||
1013 | CONFIG_CRYPTO_TGR192=m | 1056 | CONFIG_CRYPTO_TGR192=m |
1014 | CONFIG_CRYPTO_GF128MUL=m | 1057 | CONFIG_CRYPTO_WP512=m |
1015 | CONFIG_CRYPTO_ECB=m | 1058 | |
1016 | CONFIG_CRYPTO_CBC=m | 1059 | # |
1017 | CONFIG_CRYPTO_PCBC=m | 1060 | # Ciphers |
1018 | CONFIG_CRYPTO_LRW=m | 1061 | # |
1019 | CONFIG_CRYPTO_XTS=m | ||
1020 | CONFIG_CRYPTO_CTR=m | ||
1021 | CONFIG_CRYPTO_GCM=m | ||
1022 | CONFIG_CRYPTO_CCM=m | ||
1023 | CONFIG_CRYPTO_CRYPTD=m | ||
1024 | CONFIG_CRYPTO_DES=m | ||
1025 | CONFIG_CRYPTO_FCRYPT=m | ||
1026 | CONFIG_CRYPTO_BLOWFISH=m | ||
1027 | CONFIG_CRYPTO_TWOFISH=m | ||
1028 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1029 | CONFIG_CRYPTO_SERPENT=m | ||
1030 | CONFIG_CRYPTO_AES=m | 1062 | CONFIG_CRYPTO_AES=m |
1063 | CONFIG_CRYPTO_ANUBIS=m | ||
1064 | CONFIG_CRYPTO_ARC4=m | ||
1065 | CONFIG_CRYPTO_BLOWFISH=m | ||
1066 | CONFIG_CRYPTO_CAMELLIA=m | ||
1031 | CONFIG_CRYPTO_CAST5=m | 1067 | CONFIG_CRYPTO_CAST5=m |
1032 | CONFIG_CRYPTO_CAST6=m | 1068 | CONFIG_CRYPTO_CAST6=m |
1033 | CONFIG_CRYPTO_TEA=m | 1069 | CONFIG_CRYPTO_DES=m |
1034 | CONFIG_CRYPTO_ARC4=m | 1070 | CONFIG_CRYPTO_FCRYPT=m |
1035 | CONFIG_CRYPTO_KHAZAD=m | 1071 | CONFIG_CRYPTO_KHAZAD=m |
1036 | CONFIG_CRYPTO_ANUBIS=m | ||
1037 | CONFIG_CRYPTO_SEED=m | ||
1038 | CONFIG_CRYPTO_SALSA20=m | 1072 | CONFIG_CRYPTO_SALSA20=m |
1073 | CONFIG_CRYPTO_SEED=m | ||
1074 | CONFIG_CRYPTO_SERPENT=m | ||
1075 | CONFIG_CRYPTO_TEA=m | ||
1076 | CONFIG_CRYPTO_TWOFISH=m | ||
1077 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1078 | |||
1079 | # | ||
1080 | # Compression | ||
1081 | # | ||
1039 | CONFIG_CRYPTO_DEFLATE=m | 1082 | CONFIG_CRYPTO_DEFLATE=m |
1040 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1041 | CONFIG_CRYPTO_CRC32C=m | ||
1042 | CONFIG_CRYPTO_CAMELLIA=m | ||
1043 | CONFIG_CRYPTO_TEST=m | ||
1044 | CONFIG_CRYPTO_AUTHENC=m | ||
1045 | CONFIG_CRYPTO_LZO=m | 1083 | CONFIG_CRYPTO_LZO=m |
1046 | # CONFIG_CRYPTO_HW is not set | 1084 | # CONFIG_CRYPTO_HW is not set |
1047 | 1085 | ||
@@ -1049,9 +1087,11 @@ CONFIG_CRYPTO_LZO=m | |||
1049 | # Library routines | 1087 | # Library routines |
1050 | # | 1088 | # |
1051 | CONFIG_BITREVERSE=y | 1089 | CONFIG_BITREVERSE=y |
1090 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1091 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1052 | CONFIG_CRC_CCITT=m | 1092 | CONFIG_CRC_CCITT=m |
1053 | CONFIG_CRC16=m | 1093 | CONFIG_CRC16=m |
1054 | # CONFIG_CRC_ITU_T is not set | 1094 | CONFIG_CRC_ITU_T=m |
1055 | CONFIG_CRC32=y | 1095 | CONFIG_CRC32=y |
1056 | # CONFIG_CRC7 is not set | 1096 | # CONFIG_CRC7 is not set |
1057 | CONFIG_LIBCRC32C=m | 1097 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/multi_defconfig b/arch/m68k/configs/multi_defconfig new file mode 100644 index 000000000000..4d23f99227f9 --- /dev/null +++ b/arch/m68k/configs/multi_defconfig | |||
@@ -0,0 +1,1269 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.26-rc2 | ||
4 | # Sun May 18 14:42:31 2008 | ||
5 | # | ||
6 | CONFIG_M68K=y | ||
7 | CONFIG_MMU=y | ||
8 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
9 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
10 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
11 | CONFIG_GENERIC_HWEIGHT=y | ||
12 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
13 | CONFIG_TIME_LOW_RES=y | ||
14 | CONFIG_GENERIC_IOMAP=y | ||
15 | CONFIG_NO_IOPORT=y | ||
16 | # CONFIG_NO_DMA is not set | ||
17 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
18 | CONFIG_HZ=100 | ||
19 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
20 | |||
21 | # | ||
22 | # General setup | ||
23 | # | ||
24 | CONFIG_EXPERIMENTAL=y | ||
25 | CONFIG_BROKEN_ON_SMP=y | ||
26 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
27 | CONFIG_LOCALVERSION="-multi" | ||
28 | CONFIG_LOCALVERSION_AUTO=y | ||
29 | CONFIG_SWAP=y | ||
30 | CONFIG_SYSVIPC=y | ||
31 | CONFIG_SYSVIPC_SYSCTL=y | ||
32 | CONFIG_POSIX_MQUEUE=y | ||
33 | CONFIG_BSD_PROCESS_ACCT=y | ||
34 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
35 | # CONFIG_TASKSTATS is not set | ||
36 | # CONFIG_AUDIT is not set | ||
37 | # CONFIG_IKCONFIG is not set | ||
38 | CONFIG_LOG_BUF_SHIFT=14 | ||
39 | # CONFIG_CGROUPS is not set | ||
40 | # CONFIG_GROUP_SCHED is not set | ||
41 | # CONFIG_SYSFS_DEPRECATED_V2 is not set | ||
42 | CONFIG_RELAY=y | ||
43 | CONFIG_NAMESPACES=y | ||
44 | # CONFIG_UTS_NS is not set | ||
45 | # CONFIG_IPC_NS is not set | ||
46 | # CONFIG_USER_NS is not set | ||
47 | # CONFIG_PID_NS is not set | ||
48 | CONFIG_BLK_DEV_INITRD=y | ||
49 | CONFIG_INITRAMFS_SOURCE="" | ||
50 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
51 | CONFIG_SYSCTL=y | ||
52 | # CONFIG_EMBEDDED is not set | ||
53 | CONFIG_UID16=y | ||
54 | CONFIG_SYSCTL_SYSCALL=y | ||
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
56 | CONFIG_KALLSYMS=y | ||
57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
58 | CONFIG_HOTPLUG=y | ||
59 | CONFIG_PRINTK=y | ||
60 | CONFIG_BUG=y | ||
61 | CONFIG_ELF_CORE=y | ||
62 | # CONFIG_COMPAT_BRK is not set | ||
63 | CONFIG_BASE_FULL=y | ||
64 | CONFIG_FUTEX=y | ||
65 | CONFIG_ANON_INODES=y | ||
66 | CONFIG_EPOLL=y | ||
67 | CONFIG_SIGNALFD=y | ||
68 | CONFIG_TIMERFD=y | ||
69 | CONFIG_EVENTFD=y | ||
70 | CONFIG_SHMEM=y | ||
71 | CONFIG_VM_EVENT_COUNTERS=y | ||
72 | CONFIG_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 | ||
77 | # CONFIG_HAVE_OPROFILE is not set | ||
78 | # CONFIG_HAVE_KPROBES is not set | ||
79 | # CONFIG_HAVE_KRETPROBES is not set | ||
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
81 | CONFIG_PROC_PAGE_MONITOR=y | ||
82 | CONFIG_SLABINFO=y | ||
83 | CONFIG_RT_MUTEXES=y | ||
84 | # CONFIG_TINY_SHMEM is not set | ||
85 | CONFIG_BASE_SMALL=0 | ||
86 | CONFIG_MODULES=y | ||
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
88 | CONFIG_MODULE_UNLOAD=y | ||
89 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
90 | # CONFIG_MODVERSIONS is not set | ||
91 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
92 | CONFIG_KMOD=y | ||
93 | CONFIG_BLOCK=y | ||
94 | # CONFIG_LBD is not set | ||
95 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
96 | # CONFIG_LSF is not set | ||
97 | CONFIG_BLK_DEV_BSG=y | ||
98 | |||
99 | # | ||
100 | # IO Schedulers | ||
101 | # | ||
102 | CONFIG_IOSCHED_NOOP=y | ||
103 | CONFIG_IOSCHED_AS=y | ||
104 | CONFIG_IOSCHED_DEADLINE=y | ||
105 | CONFIG_IOSCHED_CFQ=y | ||
106 | CONFIG_DEFAULT_AS=y | ||
107 | # CONFIG_DEFAULT_DEADLINE is not set | ||
108 | # CONFIG_DEFAULT_CFQ is not set | ||
109 | # CONFIG_DEFAULT_NOOP is not set | ||
110 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
111 | CONFIG_CLASSIC_RCU=y | ||
112 | |||
113 | # | ||
114 | # Platform dependent setup | ||
115 | # | ||
116 | # CONFIG_SUN3 is not set | ||
117 | CONFIG_AMIGA=y | ||
118 | CONFIG_ATARI=y | ||
119 | CONFIG_MAC=y | ||
120 | CONFIG_NUBUS=y | ||
121 | CONFIG_M68K_L2_CACHE=y | ||
122 | CONFIG_APOLLO=y | ||
123 | CONFIG_VME=y | ||
124 | CONFIG_MVME147=y | ||
125 | CONFIG_MVME16x=y | ||
126 | CONFIG_BVME6000=y | ||
127 | CONFIG_HP300=y | ||
128 | CONFIG_DIO=y | ||
129 | CONFIG_SUN3X=y | ||
130 | CONFIG_Q40=y | ||
131 | |||
132 | # | ||
133 | # Processor type | ||
134 | # | ||
135 | CONFIG_M68020=y | ||
136 | CONFIG_M68030=y | ||
137 | CONFIG_M68040=y | ||
138 | CONFIG_M68060=y | ||
139 | CONFIG_MMU_MOTOROLA=y | ||
140 | # CONFIG_M68KFPU_EMU is not set | ||
141 | # CONFIG_ADVANCED is not set | ||
142 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
143 | CONFIG_NODES_SHIFT=3 | ||
144 | CONFIG_SELECT_MEMORY_MODEL=y | ||
145 | # CONFIG_FLATMEM_MANUAL is not set | ||
146 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
147 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
148 | CONFIG_DISCONTIGMEM=y | ||
149 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
150 | CONFIG_NEED_MULTIPLE_NODES=y | ||
151 | # CONFIG_SPARSEMEM_STATIC is not set | ||
152 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
153 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
154 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
155 | # CONFIG_RESOURCES_64BIT is not set | ||
156 | CONFIG_ZONE_DMA_FLAG=1 | ||
157 | CONFIG_BOUNCE=y | ||
158 | CONFIG_VIRT_TO_BUS=y | ||
159 | |||
160 | # | ||
161 | # General setup | ||
162 | # | ||
163 | CONFIG_BINFMT_ELF=y | ||
164 | CONFIG_BINFMT_AOUT=m | ||
165 | CONFIG_BINFMT_MISC=m | ||
166 | CONFIG_ZORRO=y | ||
167 | CONFIG_AMIGA_PCMCIA=y | ||
168 | CONFIG_STRAM_PROC=y | ||
169 | CONFIG_HEARTBEAT=y | ||
170 | CONFIG_PROC_HARDWARE=y | ||
171 | CONFIG_ISA=y | ||
172 | CONFIG_GENERIC_ISA_DMA=y | ||
173 | CONFIG_ZONE_DMA=y | ||
174 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
175 | CONFIG_ZORRO_NAMES=y | ||
176 | |||
177 | # | ||
178 | # Networking | ||
179 | # | ||
180 | CONFIG_NET=y | ||
181 | |||
182 | # | ||
183 | # Networking options | ||
184 | # | ||
185 | CONFIG_PACKET=y | ||
186 | # CONFIG_PACKET_MMAP is not set | ||
187 | CONFIG_UNIX=y | ||
188 | CONFIG_XFRM=y | ||
189 | # CONFIG_XFRM_USER is not set | ||
190 | # CONFIG_XFRM_SUB_POLICY is not set | ||
191 | CONFIG_XFRM_MIGRATE=y | ||
192 | # CONFIG_XFRM_STATISTICS is not set | ||
193 | CONFIG_NET_KEY=y | ||
194 | CONFIG_NET_KEY_MIGRATE=y | ||
195 | CONFIG_INET=y | ||
196 | # CONFIG_IP_MULTICAST is not set | ||
197 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
198 | CONFIG_IP_FIB_HASH=y | ||
199 | CONFIG_IP_PNP=y | ||
200 | CONFIG_IP_PNP_DHCP=y | ||
201 | CONFIG_IP_PNP_BOOTP=y | ||
202 | CONFIG_IP_PNP_RARP=y | ||
203 | CONFIG_NET_IPIP=m | ||
204 | CONFIG_NET_IPGRE=m | ||
205 | # CONFIG_ARPD is not set | ||
206 | CONFIG_SYN_COOKIES=y | ||
207 | CONFIG_INET_AH=m | ||
208 | CONFIG_INET_ESP=m | ||
209 | CONFIG_INET_IPCOMP=m | ||
210 | CONFIG_INET_XFRM_TUNNEL=m | ||
211 | CONFIG_INET_TUNNEL=m | ||
212 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | ||
213 | CONFIG_INET_XFRM_MODE_TUNNEL=m | ||
214 | CONFIG_INET_XFRM_MODE_BEET=m | ||
215 | CONFIG_INET_LRO=m | ||
216 | CONFIG_INET_DIAG=m | ||
217 | CONFIG_INET_TCP_DIAG=m | ||
218 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
219 | CONFIG_TCP_CONG_CUBIC=y | ||
220 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
221 | # CONFIG_TCP_MD5SIG is not set | ||
222 | # CONFIG_IP_VS is not set | ||
223 | CONFIG_IPV6=m | ||
224 | CONFIG_IPV6_PRIVACY=y | ||
225 | CONFIG_IPV6_ROUTER_PREF=y | ||
226 | CONFIG_IPV6_ROUTE_INFO=y | ||
227 | # CONFIG_IPV6_OPTIMISTIC_DAD is not set | ||
228 | CONFIG_INET6_AH=m | ||
229 | CONFIG_INET6_ESP=m | ||
230 | CONFIG_INET6_IPCOMP=m | ||
231 | # CONFIG_IPV6_MIP6 is not set | ||
232 | CONFIG_INET6_XFRM_TUNNEL=m | ||
233 | CONFIG_INET6_TUNNEL=m | ||
234 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
235 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
236 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
237 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
238 | CONFIG_IPV6_SIT=m | ||
239 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
240 | CONFIG_IPV6_TUNNEL=m | ||
241 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | ||
242 | # CONFIG_IPV6_MROUTE is not set | ||
243 | # CONFIG_NETWORK_SECMARK is not set | ||
244 | CONFIG_NETFILTER=y | ||
245 | # CONFIG_NETFILTER_DEBUG is not set | ||
246 | CONFIG_NETFILTER_ADVANCED=y | ||
247 | |||
248 | # | ||
249 | # Core Netfilter Configuration | ||
250 | # | ||
251 | CONFIG_NETFILTER_NETLINK=m | ||
252 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
253 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
254 | CONFIG_NF_CONNTRACK=m | ||
255 | CONFIG_NF_CT_ACCT=y | ||
256 | CONFIG_NF_CONNTRACK_MARK=y | ||
257 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
258 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
259 | CONFIG_NF_CT_PROTO_GRE=m | ||
260 | CONFIG_NF_CT_PROTO_SCTP=m | ||
261 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
262 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
263 | CONFIG_NF_CONNTRACK_FTP=m | ||
264 | CONFIG_NF_CONNTRACK_H323=m | ||
265 | CONFIG_NF_CONNTRACK_IRC=m | ||
266 | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
267 | CONFIG_NF_CONNTRACK_PPTP=m | ||
268 | CONFIG_NF_CONNTRACK_SANE=m | ||
269 | CONFIG_NF_CONNTRACK_SIP=m | ||
270 | CONFIG_NF_CONNTRACK_TFTP=m | ||
271 | # CONFIG_NF_CT_NETLINK is not set | ||
272 | CONFIG_NETFILTER_XTABLES=m | ||
273 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
274 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
275 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
276 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
277 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
278 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
279 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
280 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
281 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
282 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
283 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
284 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
285 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
286 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
287 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
288 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
289 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
290 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
291 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
292 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
293 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
294 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
295 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
296 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
297 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
298 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
299 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
300 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
301 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
302 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
303 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
304 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
305 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
306 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
307 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
308 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
309 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
310 | CONFIG_NETFILTER_XT_MATCH_TIME=m | ||
311 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
312 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
313 | |||
314 | # | ||
315 | # IP: Netfilter Configuration | ||
316 | # | ||
317 | CONFIG_NF_CONNTRACK_IPV4=m | ||
318 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | ||
319 | CONFIG_IP_NF_QUEUE=m | ||
320 | CONFIG_IP_NF_IPTABLES=m | ||
321 | CONFIG_IP_NF_MATCH_RECENT=m | ||
322 | CONFIG_IP_NF_MATCH_ECN=m | ||
323 | CONFIG_IP_NF_MATCH_AH=m | ||
324 | CONFIG_IP_NF_MATCH_TTL=m | ||
325 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
326 | CONFIG_IP_NF_FILTER=m | ||
327 | CONFIG_IP_NF_TARGET_REJECT=m | ||
328 | CONFIG_IP_NF_TARGET_LOG=m | ||
329 | CONFIG_IP_NF_TARGET_ULOG=m | ||
330 | CONFIG_NF_NAT=m | ||
331 | CONFIG_NF_NAT_NEEDED=y | ||
332 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
333 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
334 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
335 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
336 | CONFIG_NF_NAT_PROTO_GRE=m | ||
337 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
338 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
339 | CONFIG_NF_NAT_FTP=m | ||
340 | CONFIG_NF_NAT_IRC=m | ||
341 | CONFIG_NF_NAT_TFTP=m | ||
342 | CONFIG_NF_NAT_AMANDA=m | ||
343 | CONFIG_NF_NAT_PPTP=m | ||
344 | CONFIG_NF_NAT_H323=m | ||
345 | CONFIG_NF_NAT_SIP=m | ||
346 | CONFIG_IP_NF_MANGLE=m | ||
347 | CONFIG_IP_NF_TARGET_ECN=m | ||
348 | CONFIG_IP_NF_TARGET_TTL=m | ||
349 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
350 | CONFIG_IP_NF_RAW=m | ||
351 | CONFIG_IP_NF_ARPTABLES=m | ||
352 | CONFIG_IP_NF_ARPFILTER=m | ||
353 | CONFIG_IP_NF_ARP_MANGLE=m | ||
354 | |||
355 | # | ||
356 | # IPv6: Netfilter Configuration | ||
357 | # | ||
358 | CONFIG_NF_CONNTRACK_IPV6=m | ||
359 | CONFIG_IP6_NF_QUEUE=m | ||
360 | CONFIG_IP6_NF_IPTABLES=m | ||
361 | CONFIG_IP6_NF_MATCH_RT=m | ||
362 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
363 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
364 | CONFIG_IP6_NF_MATCH_HL=m | ||
365 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
366 | CONFIG_IP6_NF_MATCH_AH=m | ||
367 | CONFIG_IP6_NF_MATCH_MH=m | ||
368 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
369 | CONFIG_IP6_NF_FILTER=m | ||
370 | CONFIG_IP6_NF_TARGET_LOG=m | ||
371 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
372 | CONFIG_IP6_NF_MANGLE=m | ||
373 | CONFIG_IP6_NF_TARGET_HL=m | ||
374 | CONFIG_IP6_NF_RAW=m | ||
375 | CONFIG_IP_DCCP=m | ||
376 | CONFIG_INET_DCCP_DIAG=m | ||
377 | CONFIG_IP_DCCP_ACKVEC=y | ||
378 | |||
379 | # | ||
380 | # DCCP CCIDs Configuration (EXPERIMENTAL) | ||
381 | # | ||
382 | CONFIG_IP_DCCP_CCID2=m | ||
383 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | ||
384 | CONFIG_IP_DCCP_CCID3=m | ||
385 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | ||
386 | CONFIG_IP_DCCP_CCID3_RTO=100 | ||
387 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
388 | CONFIG_IP_SCTP=m | ||
389 | # CONFIG_SCTP_DBG_MSG is not set | ||
390 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
391 | # CONFIG_SCTP_HMAC_NONE is not set | ||
392 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
393 | CONFIG_SCTP_HMAC_MD5=y | ||
394 | # CONFIG_TIPC is not set | ||
395 | # CONFIG_ATM is not set | ||
396 | # CONFIG_BRIDGE is not set | ||
397 | # CONFIG_VLAN_8021Q is not set | ||
398 | # CONFIG_DECNET is not set | ||
399 | CONFIG_LLC=m | ||
400 | # CONFIG_LLC2 is not set | ||
401 | # CONFIG_IPX is not set | ||
402 | CONFIG_ATALK=m | ||
403 | CONFIG_DEV_APPLETALK=m | ||
404 | # CONFIG_COPS is not set | ||
405 | CONFIG_IPDDP=m | ||
406 | CONFIG_IPDDP_ENCAP=y | ||
407 | CONFIG_IPDDP_DECAP=y | ||
408 | # CONFIG_X25 is not set | ||
409 | # CONFIG_LAPB is not set | ||
410 | # CONFIG_ECONET is not set | ||
411 | # CONFIG_WAN_ROUTER is not set | ||
412 | # CONFIG_NET_SCHED is not set | ||
413 | CONFIG_NET_CLS_ROUTE=y | ||
414 | |||
415 | # | ||
416 | # Network testing | ||
417 | # | ||
418 | # CONFIG_NET_PKTGEN is not set | ||
419 | # CONFIG_HAMRADIO is not set | ||
420 | # CONFIG_CAN is not set | ||
421 | # CONFIG_IRDA is not set | ||
422 | # CONFIG_BT is not set | ||
423 | # CONFIG_AF_RXRPC is not set | ||
424 | |||
425 | # | ||
426 | # Wireless | ||
427 | # | ||
428 | # CONFIG_CFG80211 is not set | ||
429 | CONFIG_WIRELESS_EXT=y | ||
430 | # CONFIG_MAC80211 is not set | ||
431 | CONFIG_IEEE80211=m | ||
432 | # CONFIG_IEEE80211_DEBUG is not set | ||
433 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
434 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
435 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
436 | # CONFIG_RFKILL is not set | ||
437 | # CONFIG_NET_9P is not set | ||
438 | |||
439 | # | ||
440 | # Device Drivers | ||
441 | # | ||
442 | |||
443 | # | ||
444 | # Generic Driver Options | ||
445 | # | ||
446 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
447 | CONFIG_STANDALONE=y | ||
448 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
449 | CONFIG_FW_LOADER=m | ||
450 | # CONFIG_SYS_HYPERVISOR is not set | ||
451 | CONFIG_CONNECTOR=m | ||
452 | # CONFIG_MTD is not set | ||
453 | CONFIG_PARPORT=m | ||
454 | # CONFIG_PARPORT_PC is not set | ||
455 | CONFIG_PARPORT_AMIGA=m | ||
456 | CONFIG_PARPORT_MFC3=m | ||
457 | CONFIG_PARPORT_ATARI=m | ||
458 | # CONFIG_PARPORT_GSC is not set | ||
459 | # CONFIG_PARPORT_AX88796 is not set | ||
460 | CONFIG_PARPORT_1284=y | ||
461 | CONFIG_PARPORT_NOT_PC=y | ||
462 | # CONFIG_PNP is not set | ||
463 | CONFIG_BLK_DEV=y | ||
464 | CONFIG_AMIGA_FLOPPY=y | ||
465 | CONFIG_ATARI_FLOPPY=y | ||
466 | CONFIG_AMIGA_Z2RAM=y | ||
467 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
468 | CONFIG_BLK_DEV_LOOP=y | ||
469 | CONFIG_BLK_DEV_CRYPTOLOOP=m | ||
470 | CONFIG_BLK_DEV_NBD=m | ||
471 | CONFIG_BLK_DEV_RAM=y | ||
472 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
473 | CONFIG_BLK_DEV_RAM_SIZE=4096 | ||
474 | # CONFIG_BLK_DEV_XIP is not set | ||
475 | CONFIG_CDROM_PKTCDVD=m | ||
476 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
477 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
478 | CONFIG_ATA_OVER_ETH=m | ||
479 | CONFIG_MISC_DEVICES=y | ||
480 | # CONFIG_EEPROM_93CX6 is not set | ||
481 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
482 | CONFIG_HAVE_IDE=y | ||
483 | CONFIG_IDE=y | ||
484 | CONFIG_BLK_DEV_IDE=y | ||
485 | |||
486 | # | ||
487 | # Please see Documentation/ide/ide.txt for help/info on IDE drives | ||
488 | # | ||
489 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
490 | CONFIG_BLK_DEV_IDEDISK=y | ||
491 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
492 | CONFIG_BLK_DEV_IDECD=y | ||
493 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
494 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
495 | CONFIG_BLK_DEV_IDEFLOPPY=m | ||
496 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
497 | # CONFIG_IDE_TASK_IOCTL is not set | ||
498 | CONFIG_IDE_PROC_FS=y | ||
499 | |||
500 | # | ||
501 | # IDE chipset support/bugfixes | ||
502 | # | ||
503 | # CONFIG_BLK_DEV_PLATFORM is not set | ||
504 | CONFIG_BLK_DEV_GAYLE=y | ||
505 | CONFIG_BLK_DEV_IDEDOUBLER=y | ||
506 | CONFIG_BLK_DEV_BUDDHA=y | ||
507 | CONFIG_BLK_DEV_FALCON_IDE=y | ||
508 | CONFIG_BLK_DEV_MAC_IDE=y | ||
509 | CONFIG_BLK_DEV_Q40IDE=y | ||
510 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
511 | # CONFIG_BLK_DEV_HD_ONLY is not set | ||
512 | # CONFIG_BLK_DEV_HD is not set | ||
513 | |||
514 | # | ||
515 | # SCSI device support | ||
516 | # | ||
517 | CONFIG_RAID_ATTRS=m | ||
518 | CONFIG_SCSI=y | ||
519 | CONFIG_SCSI_DMA=y | ||
520 | CONFIG_SCSI_TGT=m | ||
521 | # CONFIG_SCSI_NETLINK is not set | ||
522 | CONFIG_SCSI_PROC_FS=y | ||
523 | |||
524 | # | ||
525 | # SCSI support type (disk, tape, CD-ROM) | ||
526 | # | ||
527 | CONFIG_BLK_DEV_SD=y | ||
528 | CONFIG_CHR_DEV_ST=m | ||
529 | CONFIG_CHR_DEV_OSST=m | ||
530 | CONFIG_BLK_DEV_SR=y | ||
531 | CONFIG_BLK_DEV_SR_VENDOR=y | ||
532 | CONFIG_CHR_DEV_SG=m | ||
533 | # CONFIG_CHR_DEV_SCH is not set | ||
534 | |||
535 | # | ||
536 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
537 | # | ||
538 | # CONFIG_SCSI_MULTI_LUN is not set | ||
539 | CONFIG_SCSI_CONSTANTS=y | ||
540 | # CONFIG_SCSI_LOGGING is not set | ||
541 | # CONFIG_SCSI_SCAN_ASYNC is not set | ||
542 | CONFIG_SCSI_WAIT_SCAN=m | ||
543 | |||
544 | # | ||
545 | # SCSI Transports | ||
546 | # | ||
547 | CONFIG_SCSI_SPI_ATTRS=y | ||
548 | # CONFIG_SCSI_FC_ATTRS is not set | ||
549 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
550 | CONFIG_SCSI_SAS_ATTRS=m | ||
551 | CONFIG_SCSI_SAS_LIBSAS=m | ||
552 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
553 | # CONFIG_SCSI_SAS_LIBSAS_DEBUG is not set | ||
554 | CONFIG_SCSI_SRP_ATTRS=m | ||
555 | CONFIG_SCSI_SRP_TGT_ATTRS=y | ||
556 | CONFIG_SCSI_LOWLEVEL=y | ||
557 | CONFIG_ISCSI_TCP=m | ||
558 | # CONFIG_SCSI_AHA152X is not set | ||
559 | # CONFIG_SCSI_AIC7XXX_OLD is not set | ||
560 | # CONFIG_SCSI_ADVANSYS is not set | ||
561 | # CONFIG_SCSI_IN2000 is not set | ||
562 | # CONFIG_SCSI_DTC3280 is not set | ||
563 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | ||
564 | # CONFIG_SCSI_GENERIC_NCR5380 is not set | ||
565 | # CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set | ||
566 | # CONFIG_SCSI_NCR53C406A is not set | ||
567 | CONFIG_53C700_BE_BUS=y | ||
568 | # CONFIG_SCSI_PAS16 is not set | ||
569 | # CONFIG_SCSI_QLOGIC_FAS is not set | ||
570 | # CONFIG_SCSI_SYM53C416 is not set | ||
571 | # CONFIG_SCSI_T128 is not set | ||
572 | # CONFIG_SCSI_DEBUG is not set | ||
573 | CONFIG_A3000_SCSI=y | ||
574 | CONFIG_A2091_SCSI=y | ||
575 | CONFIG_GVP11_SCSI=y | ||
576 | CONFIG_SCSI_A4000T=y | ||
577 | CONFIG_SCSI_ZORRO7XX=y | ||
578 | CONFIG_ATARI_SCSI=y | ||
579 | # CONFIG_ATARI_SCSI_TOSHIBA_DELAY is not set | ||
580 | # CONFIG_ATARI_SCSI_RESET_BOOT is not set | ||
581 | CONFIG_MAC_SCSI=y | ||
582 | CONFIG_SCSI_MAC_ESP=y | ||
583 | CONFIG_MVME147_SCSI=y | ||
584 | CONFIG_MVME16x_SCSI=y | ||
585 | CONFIG_BVME6000_SCSI=y | ||
586 | CONFIG_SUN3X_ESP=y | ||
587 | CONFIG_MD=y | ||
588 | CONFIG_BLK_DEV_MD=m | ||
589 | CONFIG_MD_LINEAR=m | ||
590 | CONFIG_MD_RAID0=m | ||
591 | CONFIG_MD_RAID1=m | ||
592 | # CONFIG_MD_RAID10 is not set | ||
593 | CONFIG_MD_RAID456=m | ||
594 | CONFIG_MD_RAID5_RESHAPE=y | ||
595 | CONFIG_MD_MULTIPATH=m | ||
596 | # CONFIG_MD_FAULTY is not set | ||
597 | CONFIG_BLK_DEV_DM=m | ||
598 | # CONFIG_DM_DEBUG is not set | ||
599 | CONFIG_DM_CRYPT=m | ||
600 | CONFIG_DM_SNAPSHOT=m | ||
601 | CONFIG_DM_MIRROR=m | ||
602 | CONFIG_DM_ZERO=m | ||
603 | CONFIG_DM_MULTIPATH=m | ||
604 | CONFIG_DM_MULTIPATH_EMC=m | ||
605 | CONFIG_DM_MULTIPATH_RDAC=m | ||
606 | CONFIG_DM_MULTIPATH_HP=m | ||
607 | # CONFIG_DM_DELAY is not set | ||
608 | CONFIG_DM_UEVENT=y | ||
609 | CONFIG_MACINTOSH_DRIVERS=y | ||
610 | CONFIG_ADB=y | ||
611 | CONFIG_ADB_MACII=y | ||
612 | CONFIG_ADB_MACIISI=y | ||
613 | CONFIG_ADB_IOP=y | ||
614 | CONFIG_ADB_PMU68K=y | ||
615 | CONFIG_ADB_CUDA=y | ||
616 | CONFIG_INPUT_ADBHID=y | ||
617 | CONFIG_MAC_EMUMOUSEBTN=y | ||
618 | CONFIG_NETDEVICES=y | ||
619 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
620 | CONFIG_DUMMY=m | ||
621 | # CONFIG_BONDING is not set | ||
622 | CONFIG_MACVLAN=m | ||
623 | CONFIG_EQUALIZER=m | ||
624 | # CONFIG_TUN is not set | ||
625 | CONFIG_VETH=m | ||
626 | # CONFIG_ARCNET is not set | ||
627 | # CONFIG_PHYLIB is not set | ||
628 | CONFIG_NET_ETHERNET=y | ||
629 | CONFIG_MII=m | ||
630 | CONFIG_ARIADNE=m | ||
631 | CONFIG_A2065=m | ||
632 | CONFIG_HYDRA=m | ||
633 | CONFIG_ZORRO8390=m | ||
634 | CONFIG_APNE=m | ||
635 | CONFIG_APOLLO_ELPLUS=y | ||
636 | CONFIG_MAC8390=y | ||
637 | CONFIG_MAC89x0=m | ||
638 | CONFIG_MACSONIC=m | ||
639 | CONFIG_MACMACE=y | ||
640 | CONFIG_MVME147_NET=y | ||
641 | CONFIG_MVME16x_NET=y | ||
642 | CONFIG_BVME6000_NET=y | ||
643 | CONFIG_ATARILANCE=m | ||
644 | CONFIG_SUN3LANCE=y | ||
645 | CONFIG_HPLANCE=y | ||
646 | # CONFIG_NET_VENDOR_3COM is not set | ||
647 | # CONFIG_NET_VENDOR_SMC is not set | ||
648 | # CONFIG_NET_VENDOR_RACAL is not set | ||
649 | # CONFIG_AT1700 is not set | ||
650 | # CONFIG_DEPCA is not set | ||
651 | # CONFIG_HP100 is not set | ||
652 | # CONFIG_NET_ISA is not set | ||
653 | CONFIG_NE2000=m | ||
654 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
655 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
656 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
657 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
658 | # CONFIG_NET_PCI is not set | ||
659 | # CONFIG_B44 is not set | ||
660 | # CONFIG_NET_POCKET is not set | ||
661 | # CONFIG_NETDEV_1000 is not set | ||
662 | # CONFIG_NETDEV_10000 is not set | ||
663 | # CONFIG_TR is not set | ||
664 | |||
665 | # | ||
666 | # Wireless LAN | ||
667 | # | ||
668 | # CONFIG_WLAN_PRE80211 is not set | ||
669 | # CONFIG_WLAN_80211 is not set | ||
670 | # CONFIG_IWLWIFI_LEDS is not set | ||
671 | # CONFIG_WAN is not set | ||
672 | # CONFIG_PLIP is not set | ||
673 | CONFIG_PPP=m | ||
674 | # CONFIG_PPP_MULTILINK is not set | ||
675 | CONFIG_PPP_FILTER=y | ||
676 | CONFIG_PPP_ASYNC=m | ||
677 | CONFIG_PPP_SYNC_TTY=m | ||
678 | CONFIG_PPP_DEFLATE=m | ||
679 | CONFIG_PPP_BSDCOMP=m | ||
680 | CONFIG_PPP_MPPE=m | ||
681 | CONFIG_PPPOE=m | ||
682 | CONFIG_PPPOL2TP=m | ||
683 | CONFIG_SLIP=m | ||
684 | CONFIG_SLIP_COMPRESSED=y | ||
685 | CONFIG_SLHC=m | ||
686 | CONFIG_SLIP_SMART=y | ||
687 | CONFIG_SLIP_MODE_SLIP6=y | ||
688 | CONFIG_NETCONSOLE=m | ||
689 | CONFIG_NETCONSOLE_DYNAMIC=y | ||
690 | CONFIG_NETPOLL=y | ||
691 | # CONFIG_NETPOLL_TRAP is not set | ||
692 | CONFIG_NET_POLL_CONTROLLER=y | ||
693 | # CONFIG_ISDN is not set | ||
694 | # CONFIG_PHONE is not set | ||
695 | |||
696 | # | ||
697 | # Input device support | ||
698 | # | ||
699 | CONFIG_INPUT=y | ||
700 | CONFIG_INPUT_FF_MEMLESS=m | ||
701 | # CONFIG_INPUT_POLLDEV is not set | ||
702 | |||
703 | # | ||
704 | # Userland interfaces | ||
705 | # | ||
706 | CONFIG_INPUT_MOUSEDEV=y | ||
707 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
708 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
709 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
710 | # CONFIG_INPUT_JOYDEV is not set | ||
711 | # CONFIG_INPUT_EVDEV is not set | ||
712 | # CONFIG_INPUT_EVBUG is not set | ||
713 | |||
714 | # | ||
715 | # Input Device Drivers | ||
716 | # | ||
717 | CONFIG_INPUT_KEYBOARD=y | ||
718 | # CONFIG_KEYBOARD_ATKBD is not set | ||
719 | CONFIG_KEYBOARD_SUNKBD=y | ||
720 | # CONFIG_KEYBOARD_LKKBD is not set | ||
721 | # CONFIG_KEYBOARD_XTKBD is not set | ||
722 | # CONFIG_KEYBOARD_NEWTON is not set | ||
723 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
724 | CONFIG_KEYBOARD_AMIGA=y | ||
725 | CONFIG_ATARI_KBD_CORE=y | ||
726 | CONFIG_KEYBOARD_ATARI=y | ||
727 | CONFIG_KEYBOARD_HIL_OLD=y | ||
728 | CONFIG_KEYBOARD_HIL=y | ||
729 | CONFIG_INPUT_MOUSE=y | ||
730 | CONFIG_MOUSE_PS2=y | ||
731 | CONFIG_MOUSE_PS2_ALPS=y | ||
732 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
733 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
734 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
735 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
736 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
737 | CONFIG_MOUSE_SERIAL=m | ||
738 | # CONFIG_MOUSE_INPORT is not set | ||
739 | # CONFIG_MOUSE_LOGIBM is not set | ||
740 | # CONFIG_MOUSE_PC110PAD is not set | ||
741 | CONFIG_MOUSE_AMIGA=m | ||
742 | CONFIG_MOUSE_ATARI=m | ||
743 | # CONFIG_MOUSE_VSXXXAA is not set | ||
744 | CONFIG_MOUSE_HIL=m | ||
745 | CONFIG_INPUT_JOYSTICK=y | ||
746 | # CONFIG_JOYSTICK_ANALOG is not set | ||
747 | # CONFIG_JOYSTICK_A3D is not set | ||
748 | # CONFIG_JOYSTICK_ADI is not set | ||
749 | # CONFIG_JOYSTICK_COBRA is not set | ||
750 | # CONFIG_JOYSTICK_GF2K is not set | ||
751 | # CONFIG_JOYSTICK_GRIP is not set | ||
752 | # CONFIG_JOYSTICK_GRIP_MP is not set | ||
753 | # CONFIG_JOYSTICK_GUILLEMOT is not set | ||
754 | # CONFIG_JOYSTICK_INTERACT is not set | ||
755 | # CONFIG_JOYSTICK_SIDEWINDER is not set | ||
756 | # CONFIG_JOYSTICK_TMDC is not set | ||
757 | # CONFIG_JOYSTICK_IFORCE is not set | ||
758 | # CONFIG_JOYSTICK_WARRIOR is not set | ||
759 | # CONFIG_JOYSTICK_MAGELLAN is not set | ||
760 | # CONFIG_JOYSTICK_SPACEORB is not set | ||
761 | # CONFIG_JOYSTICK_SPACEBALL is not set | ||
762 | # CONFIG_JOYSTICK_STINGER is not set | ||
763 | # CONFIG_JOYSTICK_TWIDJOY is not set | ||
764 | # CONFIG_JOYSTICK_ZHENHUA is not set | ||
765 | # CONFIG_JOYSTICK_DB9 is not set | ||
766 | # CONFIG_JOYSTICK_GAMECON is not set | ||
767 | # CONFIG_JOYSTICK_TURBOGRAFX is not set | ||
768 | CONFIG_JOYSTICK_AMIGA=m | ||
769 | # CONFIG_JOYSTICK_JOYDUMP is not set | ||
770 | # CONFIG_INPUT_TABLET is not set | ||
771 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
772 | CONFIG_INPUT_MISC=y | ||
773 | CONFIG_INPUT_M68K_BEEP=m | ||
774 | # CONFIG_INPUT_UINPUT is not set | ||
775 | CONFIG_HP_SDC_RTC=m | ||
776 | |||
777 | # | ||
778 | # Hardware I/O ports | ||
779 | # | ||
780 | CONFIG_SERIO=y | ||
781 | # CONFIG_SERIO_SERPORT is not set | ||
782 | CONFIG_SERIO_Q40KBD=m | ||
783 | # CONFIG_SERIO_PARKBD is not set | ||
784 | CONFIG_HP_SDC=y | ||
785 | CONFIG_HIL_MLC=y | ||
786 | CONFIG_SERIO_LIBPS2=y | ||
787 | # CONFIG_SERIO_RAW is not set | ||
788 | # CONFIG_GAMEPORT is not set | ||
789 | |||
790 | # | ||
791 | # Character devices | ||
792 | # | ||
793 | CONFIG_VT=y | ||
794 | CONFIG_VT_CONSOLE=y | ||
795 | CONFIG_HW_CONSOLE=y | ||
796 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
797 | # CONFIG_DEVKMEM is not set | ||
798 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
799 | CONFIG_A2232=m | ||
800 | |||
801 | # | ||
802 | # Serial drivers | ||
803 | # | ||
804 | # CONFIG_SERIAL_8250 is not set | ||
805 | |||
806 | # | ||
807 | # Non-8250 serial port support | ||
808 | # | ||
809 | CONFIG_UNIX98_PTYS=y | ||
810 | CONFIG_LEGACY_PTYS=y | ||
811 | CONFIG_LEGACY_PTY_COUNT=256 | ||
812 | CONFIG_PRINTER=m | ||
813 | # CONFIG_LP_CONSOLE is not set | ||
814 | # CONFIG_PPDEV is not set | ||
815 | # CONFIG_IPMI_HANDLER is not set | ||
816 | # CONFIG_HW_RANDOM is not set | ||
817 | CONFIG_NVRAM=y | ||
818 | CONFIG_GEN_RTC=m | ||
819 | CONFIG_GEN_RTC_X=y | ||
820 | # CONFIG_DTLK is not set | ||
821 | # CONFIG_R3964 is not set | ||
822 | # CONFIG_RAW_DRIVER is not set | ||
823 | # CONFIG_TCG_TPM is not set | ||
824 | # CONFIG_I2C is not set | ||
825 | # CONFIG_SPI is not set | ||
826 | # CONFIG_W1 is not set | ||
827 | # CONFIG_POWER_SUPPLY is not set | ||
828 | # CONFIG_HWMON is not set | ||
829 | # CONFIG_THERMAL is not set | ||
830 | # CONFIG_WATCHDOG is not set | ||
831 | |||
832 | # | ||
833 | # Sonics Silicon Backplane | ||
834 | # | ||
835 | CONFIG_SSB_POSSIBLE=y | ||
836 | # CONFIG_SSB is not set | ||
837 | |||
838 | # | ||
839 | # Multifunction device drivers | ||
840 | # | ||
841 | # CONFIG_MFD_SM501 is not set | ||
842 | # CONFIG_HTC_PASIC3 is not set | ||
843 | |||
844 | # | ||
845 | # Multimedia devices | ||
846 | # | ||
847 | |||
848 | # | ||
849 | # Multimedia core support | ||
850 | # | ||
851 | # CONFIG_VIDEO_DEV is not set | ||
852 | # CONFIG_DVB_CORE is not set | ||
853 | # CONFIG_VIDEO_MEDIA is not set | ||
854 | |||
855 | # | ||
856 | # Multimedia drivers | ||
857 | # | ||
858 | # CONFIG_DAB is not set | ||
859 | |||
860 | # | ||
861 | # Graphics support | ||
862 | # | ||
863 | # CONFIG_VGASTATE is not set | ||
864 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
865 | CONFIG_FB=y | ||
866 | # CONFIG_FIRMWARE_EDID is not set | ||
867 | # CONFIG_FB_DDC is not set | ||
868 | CONFIG_FB_CFB_FILLRECT=y | ||
869 | CONFIG_FB_CFB_COPYAREA=y | ||
870 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
871 | # CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set | ||
872 | # CONFIG_FB_SYS_FILLRECT is not set | ||
873 | # CONFIG_FB_SYS_COPYAREA is not set | ||
874 | # CONFIG_FB_SYS_IMAGEBLIT is not set | ||
875 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
876 | # CONFIG_FB_SYS_FOPS is not set | ||
877 | # CONFIG_FB_SVGALIB is not set | ||
878 | CONFIG_FB_MACMODES=y | ||
879 | # CONFIG_FB_BACKLIGHT is not set | ||
880 | # CONFIG_FB_MODE_HELPERS is not set | ||
881 | # CONFIG_FB_TILEBLITTING is not set | ||
882 | |||
883 | # | ||
884 | # Frame buffer hardware drivers | ||
885 | # | ||
886 | CONFIG_FB_CIRRUS=y | ||
887 | CONFIG_FB_APOLLO=y | ||
888 | CONFIG_FB_Q40=y | ||
889 | CONFIG_FB_AMIGA=y | ||
890 | CONFIG_FB_AMIGA_OCS=y | ||
891 | CONFIG_FB_AMIGA_ECS=y | ||
892 | CONFIG_FB_AMIGA_AGA=y | ||
893 | CONFIG_FB_FM2=y | ||
894 | CONFIG_FB_ATARI=y | ||
895 | CONFIG_FB_VALKYRIE=y | ||
896 | CONFIG_FB_MAC=y | ||
897 | CONFIG_FB_HP300=y | ||
898 | # CONFIG_FB_UVESA is not set | ||
899 | # CONFIG_FB_S1D13XXX is not set | ||
900 | # CONFIG_FB_ATY is not set | ||
901 | # CONFIG_FB_VIRTUAL is not set | ||
902 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
903 | |||
904 | # | ||
905 | # Display device support | ||
906 | # | ||
907 | # CONFIG_DISPLAY_SUPPORT is not set | ||
908 | |||
909 | # | ||
910 | # Console display driver support | ||
911 | # | ||
912 | CONFIG_DUMMY_CONSOLE=y | ||
913 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
914 | # CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set | ||
915 | # CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set | ||
916 | # CONFIG_FONTS is not set | ||
917 | CONFIG_FONT_8x8=y | ||
918 | CONFIG_FONT_8x16=y | ||
919 | CONFIG_FONT_6x11=y | ||
920 | CONFIG_FONT_PEARL_8x8=y | ||
921 | CONFIG_LOGO=y | ||
922 | CONFIG_LOGO_LINUX_MONO=y | ||
923 | CONFIG_LOGO_LINUX_VGA16=y | ||
924 | CONFIG_LOGO_LINUX_CLUT224=y | ||
925 | CONFIG_LOGO_MAC_CLUT224=y | ||
926 | |||
927 | # | ||
928 | # Sound | ||
929 | # | ||
930 | CONFIG_SOUND=m | ||
931 | CONFIG_DMASOUND_ATARI=m | ||
932 | CONFIG_DMASOUND_PAULA=m | ||
933 | CONFIG_DMASOUND_Q40=m | ||
934 | CONFIG_DMASOUND=m | ||
935 | CONFIG_HID_SUPPORT=y | ||
936 | CONFIG_HID=m | ||
937 | # CONFIG_HID_DEBUG is not set | ||
938 | CONFIG_HIDRAW=y | ||
939 | # CONFIG_USB_SUPPORT is not set | ||
940 | # CONFIG_MMC is not set | ||
941 | # CONFIG_MEMSTICK is not set | ||
942 | # CONFIG_NEW_LEDS is not set | ||
943 | # CONFIG_ACCESSIBILITY is not set | ||
944 | # CONFIG_RTC_CLASS is not set | ||
945 | # CONFIG_AUXDISPLAY is not set | ||
946 | # CONFIG_UIO is not set | ||
947 | |||
948 | # | ||
949 | # Character devices | ||
950 | # | ||
951 | CONFIG_ATARI_MFPSER=m | ||
952 | CONFIG_ATARI_SCC=y | ||
953 | CONFIG_ATARI_SCC_DMA=y | ||
954 | CONFIG_ATARI_MIDI=m | ||
955 | CONFIG_ATARI_DSP56K=m | ||
956 | CONFIG_AMIGA_BUILTIN_SERIAL=y | ||
957 | CONFIG_MULTIFACE_III_TTY=m | ||
958 | CONFIG_MAC_SCC=y | ||
959 | CONFIG_MAC_HID=y | ||
960 | CONFIG_MVME147_SCC=y | ||
961 | CONFIG_SERIAL167=y | ||
962 | CONFIG_MVME162_SCC=y | ||
963 | CONFIG_BVME6000_SCC=y | ||
964 | CONFIG_DN_SERIAL=y | ||
965 | CONFIG_SERIAL_CONSOLE=y | ||
966 | |||
967 | # | ||
968 | # File systems | ||
969 | # | ||
970 | CONFIG_EXT2_FS=y | ||
971 | # CONFIG_EXT2_FS_XATTR is not set | ||
972 | # CONFIG_EXT2_FS_XIP is not set | ||
973 | CONFIG_EXT3_FS=y | ||
974 | # CONFIG_EXT3_FS_XATTR is not set | ||
975 | # CONFIG_EXT4DEV_FS is not set | ||
976 | CONFIG_JBD=y | ||
977 | CONFIG_REISERFS_FS=m | ||
978 | # CONFIG_REISERFS_CHECK is not set | ||
979 | # CONFIG_REISERFS_PROC_INFO is not set | ||
980 | # CONFIG_REISERFS_FS_XATTR is not set | ||
981 | CONFIG_JFS_FS=m | ||
982 | # CONFIG_JFS_POSIX_ACL is not set | ||
983 | # CONFIG_JFS_SECURITY is not set | ||
984 | # CONFIG_JFS_DEBUG is not set | ||
985 | # CONFIG_JFS_STATISTICS is not set | ||
986 | # CONFIG_FS_POSIX_ACL is not set | ||
987 | CONFIG_XFS_FS=m | ||
988 | # CONFIG_XFS_QUOTA is not set | ||
989 | # CONFIG_XFS_POSIX_ACL is not set | ||
990 | # CONFIG_XFS_RT is not set | ||
991 | # CONFIG_XFS_DEBUG is not set | ||
992 | CONFIG_OCFS2_FS=m | ||
993 | CONFIG_OCFS2_FS_O2CB=m | ||
994 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
995 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | ||
996 | # CONFIG_OCFS2_DEBUG_FS is not set | ||
997 | CONFIG_DNOTIFY=y | ||
998 | CONFIG_INOTIFY=y | ||
999 | CONFIG_INOTIFY_USER=y | ||
1000 | CONFIG_QUOTA=y | ||
1001 | CONFIG_QUOTA_NETLINK_INTERFACE=y | ||
1002 | # CONFIG_PRINT_QUOTA_WARNING is not set | ||
1003 | # CONFIG_QFMT_V1 is not set | ||
1004 | # CONFIG_QFMT_V2 is not set | ||
1005 | CONFIG_QUOTACTL=y | ||
1006 | CONFIG_AUTOFS_FS=m | ||
1007 | CONFIG_AUTOFS4_FS=m | ||
1008 | CONFIG_FUSE_FS=m | ||
1009 | |||
1010 | # | ||
1011 | # CD-ROM/DVD Filesystems | ||
1012 | # | ||
1013 | CONFIG_ISO9660_FS=y | ||
1014 | CONFIG_JOLIET=y | ||
1015 | CONFIG_ZISOFS=y | ||
1016 | CONFIG_UDF_FS=m | ||
1017 | CONFIG_UDF_NLS=y | ||
1018 | |||
1019 | # | ||
1020 | # DOS/FAT/NT Filesystems | ||
1021 | # | ||
1022 | CONFIG_FAT_FS=y | ||
1023 | CONFIG_MSDOS_FS=y | ||
1024 | CONFIG_VFAT_FS=m | ||
1025 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
1026 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
1027 | # CONFIG_NTFS_FS is not set | ||
1028 | |||
1029 | # | ||
1030 | # Pseudo filesystems | ||
1031 | # | ||
1032 | CONFIG_PROC_FS=y | ||
1033 | CONFIG_PROC_KCORE=y | ||
1034 | CONFIG_PROC_SYSCTL=y | ||
1035 | CONFIG_SYSFS=y | ||
1036 | CONFIG_TMPFS=y | ||
1037 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
1038 | # CONFIG_HUGETLB_PAGE is not set | ||
1039 | CONFIG_CONFIGFS_FS=m | ||
1040 | |||
1041 | # | ||
1042 | # Miscellaneous filesystems | ||
1043 | # | ||
1044 | # CONFIG_ADFS_FS is not set | ||
1045 | CONFIG_AFFS_FS=m | ||
1046 | CONFIG_HFS_FS=y | ||
1047 | CONFIG_HFSPLUS_FS=y | ||
1048 | # CONFIG_BEFS_FS is not set | ||
1049 | # CONFIG_BFS_FS is not set | ||
1050 | # CONFIG_EFS_FS is not set | ||
1051 | CONFIG_CRAMFS=m | ||
1052 | # CONFIG_VXFS_FS is not set | ||
1053 | CONFIG_MINIX_FS=y | ||
1054 | CONFIG_HPFS_FS=m | ||
1055 | # CONFIG_QNX4FS_FS is not set | ||
1056 | # CONFIG_ROMFS_FS is not set | ||
1057 | CONFIG_SYSV_FS=m | ||
1058 | CONFIG_UFS_FS=m | ||
1059 | # CONFIG_UFS_FS_WRITE is not set | ||
1060 | # CONFIG_UFS_DEBUG is not set | ||
1061 | CONFIG_NETWORK_FILESYSTEMS=y | ||
1062 | CONFIG_NFS_FS=y | ||
1063 | CONFIG_NFS_V3=y | ||
1064 | # CONFIG_NFS_V3_ACL is not set | ||
1065 | CONFIG_NFS_V4=y | ||
1066 | CONFIG_NFSD=m | ||
1067 | CONFIG_NFSD_V3=y | ||
1068 | # CONFIG_NFSD_V3_ACL is not set | ||
1069 | # CONFIG_NFSD_V4 is not set | ||
1070 | CONFIG_ROOT_NFS=y | ||
1071 | CONFIG_LOCKD=y | ||
1072 | CONFIG_LOCKD_V4=y | ||
1073 | CONFIG_EXPORTFS=m | ||
1074 | CONFIG_NFS_COMMON=y | ||
1075 | CONFIG_SUNRPC=y | ||
1076 | CONFIG_SUNRPC_GSS=y | ||
1077 | CONFIG_SUNRPC_BIND34=y | ||
1078 | CONFIG_RPCSEC_GSS_KRB5=y | ||
1079 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
1080 | CONFIG_SMB_FS=m | ||
1081 | CONFIG_SMB_NLS_DEFAULT=y | ||
1082 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
1083 | # CONFIG_CIFS is not set | ||
1084 | # CONFIG_NCP_FS is not set | ||
1085 | CONFIG_CODA_FS=m | ||
1086 | # CONFIG_CODA_FS_OLD_API is not set | ||
1087 | # CONFIG_AFS_FS is not set | ||
1088 | |||
1089 | # | ||
1090 | # Partition Types | ||
1091 | # | ||
1092 | # CONFIG_PARTITION_ADVANCED is not set | ||
1093 | CONFIG_AMIGA_PARTITION=y | ||
1094 | CONFIG_ATARI_PARTITION=y | ||
1095 | CONFIG_MAC_PARTITION=y | ||
1096 | CONFIG_MSDOS_PARTITION=y | ||
1097 | CONFIG_SUN_PARTITION=y | ||
1098 | CONFIG_SYSV68_PARTITION=y | ||
1099 | CONFIG_NLS=y | ||
1100 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1101 | CONFIG_NLS_CODEPAGE_437=y | ||
1102 | CONFIG_NLS_CODEPAGE_737=m | ||
1103 | CONFIG_NLS_CODEPAGE_775=m | ||
1104 | CONFIG_NLS_CODEPAGE_850=m | ||
1105 | CONFIG_NLS_CODEPAGE_852=m | ||
1106 | CONFIG_NLS_CODEPAGE_855=m | ||
1107 | CONFIG_NLS_CODEPAGE_857=m | ||
1108 | CONFIG_NLS_CODEPAGE_860=m | ||
1109 | CONFIG_NLS_CODEPAGE_861=m | ||
1110 | CONFIG_NLS_CODEPAGE_862=m | ||
1111 | CONFIG_NLS_CODEPAGE_863=m | ||
1112 | CONFIG_NLS_CODEPAGE_864=m | ||
1113 | CONFIG_NLS_CODEPAGE_865=m | ||
1114 | CONFIG_NLS_CODEPAGE_866=m | ||
1115 | CONFIG_NLS_CODEPAGE_869=m | ||
1116 | CONFIG_NLS_CODEPAGE_936=m | ||
1117 | CONFIG_NLS_CODEPAGE_950=m | ||
1118 | CONFIG_NLS_CODEPAGE_932=m | ||
1119 | CONFIG_NLS_CODEPAGE_949=m | ||
1120 | CONFIG_NLS_CODEPAGE_874=m | ||
1121 | CONFIG_NLS_ISO8859_8=m | ||
1122 | CONFIG_NLS_CODEPAGE_1250=m | ||
1123 | CONFIG_NLS_CODEPAGE_1251=m | ||
1124 | CONFIG_NLS_ASCII=m | ||
1125 | CONFIG_NLS_ISO8859_1=y | ||
1126 | CONFIG_NLS_ISO8859_2=m | ||
1127 | CONFIG_NLS_ISO8859_3=m | ||
1128 | CONFIG_NLS_ISO8859_4=m | ||
1129 | CONFIG_NLS_ISO8859_5=m | ||
1130 | CONFIG_NLS_ISO8859_6=m | ||
1131 | CONFIG_NLS_ISO8859_7=m | ||
1132 | CONFIG_NLS_ISO8859_9=m | ||
1133 | CONFIG_NLS_ISO8859_13=m | ||
1134 | CONFIG_NLS_ISO8859_14=m | ||
1135 | CONFIG_NLS_ISO8859_15=m | ||
1136 | CONFIG_NLS_KOI8_R=m | ||
1137 | CONFIG_NLS_KOI8_U=m | ||
1138 | CONFIG_NLS_UTF8=y | ||
1139 | CONFIG_DLM=m | ||
1140 | # CONFIG_DLM_DEBUG is not set | ||
1141 | |||
1142 | # | ||
1143 | # Kernel hacking | ||
1144 | # | ||
1145 | # CONFIG_PRINTK_TIME is not set | ||
1146 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
1147 | CONFIG_ENABLE_MUST_CHECK=y | ||
1148 | CONFIG_FRAME_WARN=1024 | ||
1149 | CONFIG_MAGIC_SYSRQ=y | ||
1150 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1151 | # CONFIG_DEBUG_FS is not set | ||
1152 | # CONFIG_HEADERS_CHECK is not set | ||
1153 | # CONFIG_DEBUG_KERNEL is not set | ||
1154 | CONFIG_DEBUG_BUGVERBOSE=y | ||
1155 | # CONFIG_SAMPLES is not set | ||
1156 | |||
1157 | # | ||
1158 | # Security options | ||
1159 | # | ||
1160 | # CONFIG_KEYS is not set | ||
1161 | # CONFIG_SECURITY is not set | ||
1162 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
1163 | CONFIG_XOR_BLOCKS=m | ||
1164 | CONFIG_ASYNC_CORE=m | ||
1165 | CONFIG_ASYNC_MEMCPY=m | ||
1166 | CONFIG_ASYNC_XOR=m | ||
1167 | CONFIG_CRYPTO=y | ||
1168 | |||
1169 | # | ||
1170 | # Crypto core or helper | ||
1171 | # | ||
1172 | CONFIG_CRYPTO_ALGAPI=y | ||
1173 | CONFIG_CRYPTO_AEAD=m | ||
1174 | CONFIG_CRYPTO_BLKCIPHER=y | ||
1175 | CONFIG_CRYPTO_HASH=y | ||
1176 | CONFIG_CRYPTO_MANAGER=y | ||
1177 | CONFIG_CRYPTO_GF128MUL=m | ||
1178 | CONFIG_CRYPTO_NULL=m | ||
1179 | CONFIG_CRYPTO_CRYPTD=m | ||
1180 | CONFIG_CRYPTO_AUTHENC=m | ||
1181 | CONFIG_CRYPTO_TEST=m | ||
1182 | |||
1183 | # | ||
1184 | # Authenticated Encryption with Associated Data | ||
1185 | # | ||
1186 | CONFIG_CRYPTO_CCM=m | ||
1187 | CONFIG_CRYPTO_GCM=m | ||
1188 | CONFIG_CRYPTO_SEQIV=m | ||
1189 | |||
1190 | # | ||
1191 | # Block modes | ||
1192 | # | ||
1193 | CONFIG_CRYPTO_CBC=y | ||
1194 | CONFIG_CRYPTO_CTR=m | ||
1195 | CONFIG_CRYPTO_CTS=m | ||
1196 | CONFIG_CRYPTO_ECB=m | ||
1197 | CONFIG_CRYPTO_LRW=m | ||
1198 | CONFIG_CRYPTO_PCBC=m | ||
1199 | CONFIG_CRYPTO_XTS=m | ||
1200 | |||
1201 | # | ||
1202 | # Hash modes | ||
1203 | # | ||
1204 | CONFIG_CRYPTO_HMAC=y | ||
1205 | CONFIG_CRYPTO_XCBC=m | ||
1206 | |||
1207 | # | ||
1208 | # Digest | ||
1209 | # | ||
1210 | CONFIG_CRYPTO_CRC32C=m | ||
1211 | CONFIG_CRYPTO_MD4=m | ||
1212 | CONFIG_CRYPTO_MD5=y | ||
1213 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1214 | CONFIG_CRYPTO_SHA1=m | ||
1215 | CONFIG_CRYPTO_SHA256=m | ||
1216 | CONFIG_CRYPTO_SHA512=m | ||
1217 | CONFIG_CRYPTO_TGR192=m | ||
1218 | CONFIG_CRYPTO_WP512=m | ||
1219 | |||
1220 | # | ||
1221 | # Ciphers | ||
1222 | # | ||
1223 | CONFIG_CRYPTO_AES=m | ||
1224 | CONFIG_CRYPTO_ANUBIS=m | ||
1225 | CONFIG_CRYPTO_ARC4=m | ||
1226 | CONFIG_CRYPTO_BLOWFISH=m | ||
1227 | CONFIG_CRYPTO_CAMELLIA=m | ||
1228 | CONFIG_CRYPTO_CAST5=m | ||
1229 | CONFIG_CRYPTO_CAST6=m | ||
1230 | CONFIG_CRYPTO_DES=y | ||
1231 | CONFIG_CRYPTO_FCRYPT=m | ||
1232 | CONFIG_CRYPTO_KHAZAD=m | ||
1233 | CONFIG_CRYPTO_SALSA20=m | ||
1234 | CONFIG_CRYPTO_SEED=m | ||
1235 | CONFIG_CRYPTO_SERPENT=m | ||
1236 | CONFIG_CRYPTO_TEA=m | ||
1237 | CONFIG_CRYPTO_TWOFISH=m | ||
1238 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1239 | |||
1240 | # | ||
1241 | # Compression | ||
1242 | # | ||
1243 | CONFIG_CRYPTO_DEFLATE=m | ||
1244 | CONFIG_CRYPTO_LZO=m | ||
1245 | # CONFIG_CRYPTO_HW is not set | ||
1246 | |||
1247 | # | ||
1248 | # Library routines | ||
1249 | # | ||
1250 | CONFIG_BITREVERSE=y | ||
1251 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1252 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1253 | CONFIG_CRC_CCITT=m | ||
1254 | CONFIG_CRC16=y | ||
1255 | CONFIG_CRC_ITU_T=m | ||
1256 | CONFIG_CRC32=y | ||
1257 | # CONFIG_CRC7 is not set | ||
1258 | CONFIG_LIBCRC32C=m | ||
1259 | CONFIG_ZLIB_INFLATE=y | ||
1260 | CONFIG_ZLIB_DEFLATE=m | ||
1261 | CONFIG_LZO_COMPRESS=m | ||
1262 | CONFIG_LZO_DECOMPRESS=m | ||
1263 | CONFIG_TEXTSEARCH=y | ||
1264 | CONFIG_TEXTSEARCH_KMP=m | ||
1265 | CONFIG_TEXTSEARCH_BM=m | ||
1266 | CONFIG_TEXTSEARCH_FSM=m | ||
1267 | CONFIG_PLIST=y | ||
1268 | CONFIG_HAS_IOMEM=y | ||
1269 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/m68k/configs/mvme147_defconfig b/arch/m68k/configs/mvme147_defconfig index f40b1724254b..188847fed824 100644 --- a/arch/m68k/configs/mvme147_defconfig +++ b/arch/m68k/configs/mvme147_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:17 2008 | 4 | # Sun May 18 14:44:49 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -144,6 +147,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
144 | CONFIG_NEED_MULTIPLE_NODES=y | 147 | CONFIG_NEED_MULTIPLE_NODES=y |
145 | # CONFIG_SPARSEMEM_STATIC is not set | 148 | # CONFIG_SPARSEMEM_STATIC is not set |
146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 149 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
150 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
147 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 151 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
148 | # CONFIG_RESOURCES_64BIT is not set | 152 | # CONFIG_RESOURCES_64BIT is not set |
149 | CONFIG_ZONE_DMA_FLAG=1 | 153 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -222,8 +226,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | 226 | CONFIG_INET6_XFRM_MODE_BEET=m |
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 227 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
224 | CONFIG_IPV6_SIT=m | 228 | CONFIG_IPV6_SIT=m |
229 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
225 | CONFIG_IPV6_TUNNEL=m | 230 | CONFIG_IPV6_TUNNEL=m |
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 231 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
232 | # CONFIG_IPV6_MROUTE is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | 233 | # CONFIG_NETWORK_SECMARK is not set |
228 | CONFIG_NETFILTER=y | 234 | CONFIG_NETFILTER=y |
229 | # CONFIG_NETFILTER_DEBUG is not set | 235 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -239,6 +245,7 @@ CONFIG_NF_CONNTRACK=m | |||
239 | CONFIG_NF_CT_ACCT=y | 245 | CONFIG_NF_CT_ACCT=y |
240 | CONFIG_NF_CONNTRACK_MARK=y | 246 | CONFIG_NF_CONNTRACK_MARK=y |
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 247 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
248 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | 249 | CONFIG_NF_CT_PROTO_GRE=m |
243 | CONFIG_NF_CT_PROTO_SCTP=m | 250 | CONFIG_NF_CT_PROTO_SCTP=m |
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | 251 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -317,6 +324,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
317 | CONFIG_IP_NF_TARGET_NETMAP=m | 324 | CONFIG_IP_NF_TARGET_NETMAP=m |
318 | CONFIG_NF_NAT_SNMP_BASIC=m | 325 | CONFIG_NF_NAT_SNMP_BASIC=m |
319 | CONFIG_NF_NAT_PROTO_GRE=m | 326 | CONFIG_NF_NAT_PROTO_GRE=m |
327 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
328 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
320 | CONFIG_NF_NAT_FTP=m | 329 | CONFIG_NF_NAT_FTP=m |
321 | CONFIG_NF_NAT_IRC=m | 330 | CONFIG_NF_NAT_IRC=m |
322 | CONFIG_NF_NAT_TFTP=m | 331 | CONFIG_NF_NAT_TFTP=m |
@@ -410,8 +419,6 @@ CONFIG_IEEE80211=m | |||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | 419 | CONFIG_IEEE80211_CRYPT_WEP=m |
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | 420 | CONFIG_IEEE80211_CRYPT_CCMP=m |
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | 421 | CONFIG_IEEE80211_CRYPT_TKIP=m |
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | 422 | # CONFIG_RFKILL is not set |
416 | # CONFIG_NET_9P is not set | 423 | # CONFIG_NET_9P is not set |
417 | 424 | ||
@@ -542,6 +549,7 @@ CONFIG_MVME147_NET=y | |||
542 | # | 549 | # |
543 | # CONFIG_WLAN_PRE80211 is not set | 550 | # CONFIG_WLAN_PRE80211 is not set |
544 | # CONFIG_WLAN_80211 is not set | 551 | # CONFIG_WLAN_80211 is not set |
552 | # CONFIG_IWLWIFI_LEDS is not set | ||
545 | # CONFIG_WAN is not set | 553 | # CONFIG_WAN is not set |
546 | CONFIG_PPP=m | 554 | CONFIG_PPP=m |
547 | # CONFIG_PPP_MULTILINK is not set | 555 | # CONFIG_PPP_MULTILINK is not set |
@@ -625,6 +633,7 @@ CONFIG_VT=y | |||
625 | CONFIG_VT_CONSOLE=y | 633 | CONFIG_VT_CONSOLE=y |
626 | CONFIG_HW_CONSOLE=y | 634 | CONFIG_HW_CONSOLE=y |
627 | CONFIG_VT_HW_CONSOLE_BINDING=y | 635 | CONFIG_VT_HW_CONSOLE_BINDING=y |
636 | # CONFIG_DEVKMEM is not set | ||
628 | # CONFIG_SERIAL_NONSTANDARD is not set | 637 | # CONFIG_SERIAL_NONSTANDARD is not set |
629 | 638 | ||
630 | # | 639 | # |
@@ -646,12 +655,7 @@ CONFIG_GEN_RTC_X=y | |||
646 | # CONFIG_RAW_DRIVER is not set | 655 | # CONFIG_RAW_DRIVER is not set |
647 | # CONFIG_TCG_TPM is not set | 656 | # CONFIG_TCG_TPM is not set |
648 | # CONFIG_I2C is not set | 657 | # CONFIG_I2C is not set |
649 | |||
650 | # | ||
651 | # SPI support | ||
652 | # | ||
653 | # CONFIG_SPI is not set | 658 | # CONFIG_SPI is not set |
654 | # CONFIG_SPI_MASTER is not set | ||
655 | # CONFIG_W1 is not set | 659 | # CONFIG_W1 is not set |
656 | # CONFIG_POWER_SUPPLY is not set | 660 | # CONFIG_POWER_SUPPLY is not set |
657 | # CONFIG_HWMON is not set | 661 | # CONFIG_HWMON is not set |
@@ -668,12 +672,22 @@ CONFIG_SSB_POSSIBLE=y | |||
668 | # Multifunction device drivers | 672 | # Multifunction device drivers |
669 | # | 673 | # |
670 | # CONFIG_MFD_SM501 is not set | 674 | # CONFIG_MFD_SM501 is not set |
675 | # CONFIG_HTC_PASIC3 is not set | ||
671 | 676 | ||
672 | # | 677 | # |
673 | # Multimedia devices | 678 | # Multimedia devices |
674 | # | 679 | # |
680 | |||
681 | # | ||
682 | # Multimedia core support | ||
683 | # | ||
675 | # CONFIG_VIDEO_DEV is not set | 684 | # CONFIG_VIDEO_DEV is not set |
676 | # CONFIG_DVB_CORE is not set | 685 | # CONFIG_DVB_CORE is not set |
686 | # CONFIG_VIDEO_MEDIA is not set | ||
687 | |||
688 | # | ||
689 | # Multimedia drivers | ||
690 | # | ||
677 | # CONFIG_DAB is not set | 691 | # CONFIG_DAB is not set |
678 | 692 | ||
679 | # | 693 | # |
@@ -706,11 +720,8 @@ CONFIG_HIDRAW=y | |||
706 | # CONFIG_MMC is not set | 720 | # CONFIG_MMC is not set |
707 | # CONFIG_MEMSTICK is not set | 721 | # CONFIG_MEMSTICK is not set |
708 | # CONFIG_NEW_LEDS is not set | 722 | # CONFIG_NEW_LEDS is not set |
723 | # CONFIG_ACCESSIBILITY is not set | ||
709 | # CONFIG_RTC_CLASS is not set | 724 | # CONFIG_RTC_CLASS is not set |
710 | |||
711 | # | ||
712 | # Userspace I/O | ||
713 | # | ||
714 | # CONFIG_UIO is not set | 725 | # CONFIG_UIO is not set |
715 | 726 | ||
716 | # | 727 | # |
@@ -738,16 +749,15 @@ CONFIG_JFS_FS=m | |||
738 | # CONFIG_JFS_SECURITY is not set | 749 | # CONFIG_JFS_SECURITY is not set |
739 | # CONFIG_JFS_DEBUG is not set | 750 | # CONFIG_JFS_DEBUG is not set |
740 | # CONFIG_JFS_STATISTICS is not set | 751 | # CONFIG_JFS_STATISTICS is not set |
741 | CONFIG_FS_POSIX_ACL=y | 752 | # CONFIG_FS_POSIX_ACL is not set |
742 | CONFIG_XFS_FS=m | 753 | CONFIG_XFS_FS=m |
743 | # CONFIG_XFS_QUOTA is not set | 754 | # CONFIG_XFS_QUOTA is not set |
744 | # CONFIG_XFS_SECURITY is not set | ||
745 | # CONFIG_XFS_POSIX_ACL is not set | 755 | # CONFIG_XFS_POSIX_ACL is not set |
746 | # CONFIG_XFS_RT is not set | 756 | # CONFIG_XFS_RT is not set |
747 | CONFIG_GFS2_FS=m | 757 | # CONFIG_XFS_DEBUG is not set |
748 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
749 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
750 | CONFIG_OCFS2_FS=m | 758 | CONFIG_OCFS2_FS=m |
759 | CONFIG_OCFS2_FS_O2CB=m | ||
760 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
751 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 761 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
752 | # CONFIG_OCFS2_DEBUG_FS is not set | 762 | # CONFIG_OCFS2_DEBUG_FS is not set |
753 | CONFIG_DNOTIFY=y | 763 | CONFIG_DNOTIFY=y |
@@ -819,12 +829,10 @@ CONFIG_NFS_FS=y | |||
819 | CONFIG_NFS_V3=y | 829 | CONFIG_NFS_V3=y |
820 | # CONFIG_NFS_V3_ACL is not set | 830 | # CONFIG_NFS_V3_ACL is not set |
821 | CONFIG_NFS_V4=y | 831 | CONFIG_NFS_V4=y |
822 | # CONFIG_NFS_DIRECTIO is not set | ||
823 | CONFIG_NFSD=m | 832 | CONFIG_NFSD=m |
824 | CONFIG_NFSD_V3=y | 833 | CONFIG_NFSD_V3=y |
825 | # CONFIG_NFSD_V3_ACL is not set | 834 | # CONFIG_NFSD_V3_ACL is not set |
826 | # CONFIG_NFSD_V4 is not set | 835 | # CONFIG_NFSD_V4 is not set |
827 | CONFIG_NFSD_TCP=y | ||
828 | CONFIG_ROOT_NFS=y | 836 | CONFIG_ROOT_NFS=y |
829 | CONFIG_LOCKD=y | 837 | CONFIG_LOCKD=y |
830 | CONFIG_LOCKD_V4=y | 838 | CONFIG_LOCKD_V4=y |
@@ -899,6 +907,7 @@ CONFIG_DLM=m | |||
899 | # CONFIG_PRINTK_TIME is not set | 907 | # CONFIG_PRINTK_TIME is not set |
900 | CONFIG_ENABLE_WARN_DEPRECATED=y | 908 | CONFIG_ENABLE_WARN_DEPRECATED=y |
901 | CONFIG_ENABLE_MUST_CHECK=y | 909 | CONFIG_ENABLE_MUST_CHECK=y |
910 | CONFIG_FRAME_WARN=1024 | ||
902 | CONFIG_MAGIC_SYSRQ=y | 911 | CONFIG_MAGIC_SYSRQ=y |
903 | # CONFIG_UNUSED_SYMBOLS is not set | 912 | # CONFIG_UNUSED_SYMBOLS is not set |
904 | # CONFIG_DEBUG_FS is not set | 913 | # CONFIG_DEBUG_FS is not set |
@@ -918,53 +927,82 @@ CONFIG_ASYNC_CORE=m | |||
918 | CONFIG_ASYNC_MEMCPY=m | 927 | CONFIG_ASYNC_MEMCPY=m |
919 | CONFIG_ASYNC_XOR=m | 928 | CONFIG_ASYNC_XOR=m |
920 | CONFIG_CRYPTO=y | 929 | CONFIG_CRYPTO=y |
930 | |||
931 | # | ||
932 | # Crypto core or helper | ||
933 | # | ||
921 | CONFIG_CRYPTO_ALGAPI=y | 934 | CONFIG_CRYPTO_ALGAPI=y |
922 | CONFIG_CRYPTO_AEAD=m | 935 | CONFIG_CRYPTO_AEAD=m |
923 | CONFIG_CRYPTO_BLKCIPHER=y | 936 | CONFIG_CRYPTO_BLKCIPHER=y |
924 | CONFIG_CRYPTO_SEQIV=m | ||
925 | CONFIG_CRYPTO_HASH=y | 937 | CONFIG_CRYPTO_HASH=y |
926 | CONFIG_CRYPTO_MANAGER=y | 938 | CONFIG_CRYPTO_MANAGER=y |
939 | CONFIG_CRYPTO_GF128MUL=m | ||
940 | CONFIG_CRYPTO_NULL=m | ||
941 | CONFIG_CRYPTO_CRYPTD=m | ||
942 | CONFIG_CRYPTO_AUTHENC=m | ||
943 | CONFIG_CRYPTO_TEST=m | ||
944 | |||
945 | # | ||
946 | # Authenticated Encryption with Associated Data | ||
947 | # | ||
948 | CONFIG_CRYPTO_CCM=m | ||
949 | CONFIG_CRYPTO_GCM=m | ||
950 | CONFIG_CRYPTO_SEQIV=m | ||
951 | |||
952 | # | ||
953 | # Block modes | ||
954 | # | ||
955 | CONFIG_CRYPTO_CBC=y | ||
956 | CONFIG_CRYPTO_CTR=m | ||
957 | CONFIG_CRYPTO_CTS=m | ||
958 | CONFIG_CRYPTO_ECB=m | ||
959 | CONFIG_CRYPTO_LRW=m | ||
960 | CONFIG_CRYPTO_PCBC=m | ||
961 | CONFIG_CRYPTO_XTS=m | ||
962 | |||
963 | # | ||
964 | # Hash modes | ||
965 | # | ||
927 | CONFIG_CRYPTO_HMAC=y | 966 | CONFIG_CRYPTO_HMAC=y |
928 | CONFIG_CRYPTO_XCBC=m | 967 | CONFIG_CRYPTO_XCBC=m |
929 | CONFIG_CRYPTO_NULL=m | 968 | |
969 | # | ||
970 | # Digest | ||
971 | # | ||
972 | CONFIG_CRYPTO_CRC32C=m | ||
930 | CONFIG_CRYPTO_MD4=m | 973 | CONFIG_CRYPTO_MD4=m |
931 | CONFIG_CRYPTO_MD5=y | 974 | CONFIG_CRYPTO_MD5=y |
975 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
932 | CONFIG_CRYPTO_SHA1=m | 976 | CONFIG_CRYPTO_SHA1=m |
933 | CONFIG_CRYPTO_SHA256=m | 977 | CONFIG_CRYPTO_SHA256=m |
934 | CONFIG_CRYPTO_SHA512=m | 978 | CONFIG_CRYPTO_SHA512=m |
935 | CONFIG_CRYPTO_WP512=m | ||
936 | CONFIG_CRYPTO_TGR192=m | 979 | CONFIG_CRYPTO_TGR192=m |
937 | CONFIG_CRYPTO_GF128MUL=m | 980 | CONFIG_CRYPTO_WP512=m |
938 | CONFIG_CRYPTO_ECB=m | 981 | |
939 | CONFIG_CRYPTO_CBC=y | 982 | # |
940 | CONFIG_CRYPTO_PCBC=m | 983 | # Ciphers |
941 | CONFIG_CRYPTO_LRW=m | 984 | # |
942 | CONFIG_CRYPTO_XTS=m | ||
943 | CONFIG_CRYPTO_CTR=m | ||
944 | CONFIG_CRYPTO_GCM=m | ||
945 | CONFIG_CRYPTO_CCM=m | ||
946 | CONFIG_CRYPTO_CRYPTD=m | ||
947 | CONFIG_CRYPTO_DES=y | ||
948 | CONFIG_CRYPTO_FCRYPT=m | ||
949 | CONFIG_CRYPTO_BLOWFISH=m | ||
950 | CONFIG_CRYPTO_TWOFISH=m | ||
951 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
952 | CONFIG_CRYPTO_SERPENT=m | ||
953 | CONFIG_CRYPTO_AES=m | 985 | CONFIG_CRYPTO_AES=m |
986 | CONFIG_CRYPTO_ANUBIS=m | ||
987 | CONFIG_CRYPTO_ARC4=m | ||
988 | CONFIG_CRYPTO_BLOWFISH=m | ||
989 | CONFIG_CRYPTO_CAMELLIA=m | ||
954 | CONFIG_CRYPTO_CAST5=m | 990 | CONFIG_CRYPTO_CAST5=m |
955 | CONFIG_CRYPTO_CAST6=m | 991 | CONFIG_CRYPTO_CAST6=m |
956 | CONFIG_CRYPTO_TEA=m | 992 | CONFIG_CRYPTO_DES=y |
957 | CONFIG_CRYPTO_ARC4=m | 993 | CONFIG_CRYPTO_FCRYPT=m |
958 | CONFIG_CRYPTO_KHAZAD=m | 994 | CONFIG_CRYPTO_KHAZAD=m |
959 | CONFIG_CRYPTO_ANUBIS=m | ||
960 | CONFIG_CRYPTO_SEED=m | ||
961 | CONFIG_CRYPTO_SALSA20=m | 995 | CONFIG_CRYPTO_SALSA20=m |
996 | CONFIG_CRYPTO_SEED=m | ||
997 | CONFIG_CRYPTO_SERPENT=m | ||
998 | CONFIG_CRYPTO_TEA=m | ||
999 | CONFIG_CRYPTO_TWOFISH=m | ||
1000 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1001 | |||
1002 | # | ||
1003 | # Compression | ||
1004 | # | ||
962 | CONFIG_CRYPTO_DEFLATE=m | 1005 | CONFIG_CRYPTO_DEFLATE=m |
963 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
964 | CONFIG_CRYPTO_CRC32C=m | ||
965 | CONFIG_CRYPTO_CAMELLIA=m | ||
966 | CONFIG_CRYPTO_TEST=m | ||
967 | CONFIG_CRYPTO_AUTHENC=m | ||
968 | CONFIG_CRYPTO_LZO=m | 1006 | CONFIG_CRYPTO_LZO=m |
969 | # CONFIG_CRYPTO_HW is not set | 1007 | # CONFIG_CRYPTO_HW is not set |
970 | 1008 | ||
@@ -972,9 +1010,11 @@ CONFIG_CRYPTO_LZO=m | |||
972 | # Library routines | 1010 | # Library routines |
973 | # | 1011 | # |
974 | CONFIG_BITREVERSE=y | 1012 | CONFIG_BITREVERSE=y |
1013 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1014 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
975 | CONFIG_CRC_CCITT=m | 1015 | CONFIG_CRC_CCITT=m |
976 | CONFIG_CRC16=m | 1016 | CONFIG_CRC16=m |
977 | # CONFIG_CRC_ITU_T is not set | 1017 | CONFIG_CRC_ITU_T=m |
978 | CONFIG_CRC32=y | 1018 | CONFIG_CRC32=y |
979 | # CONFIG_CRC7 is not set | 1019 | # CONFIG_CRC7 is not set |
980 | CONFIG_LIBCRC32C=m | 1020 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/mvme16x_defconfig b/arch/m68k/configs/mvme16x_defconfig index e9ccc774334e..983e53d990c8 100644 --- a/arch/m68k/configs/mvme16x_defconfig +++ b/arch/m68k/configs/mvme16x_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:19 2008 | 4 | # Sun May 18 14:44:50 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -144,6 +147,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
144 | CONFIG_NEED_MULTIPLE_NODES=y | 147 | CONFIG_NEED_MULTIPLE_NODES=y |
145 | # CONFIG_SPARSEMEM_STATIC is not set | 148 | # CONFIG_SPARSEMEM_STATIC is not set |
146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 149 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
150 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
147 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 151 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
148 | # CONFIG_RESOURCES_64BIT is not set | 152 | # CONFIG_RESOURCES_64BIT is not set |
149 | CONFIG_ZONE_DMA_FLAG=1 | 153 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -222,8 +226,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
222 | CONFIG_INET6_XFRM_MODE_BEET=m | 226 | CONFIG_INET6_XFRM_MODE_BEET=m |
223 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 227 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
224 | CONFIG_IPV6_SIT=m | 228 | CONFIG_IPV6_SIT=m |
229 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
225 | CONFIG_IPV6_TUNNEL=m | 230 | CONFIG_IPV6_TUNNEL=m |
226 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 231 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
232 | # CONFIG_IPV6_MROUTE is not set | ||
227 | # CONFIG_NETWORK_SECMARK is not set | 233 | # CONFIG_NETWORK_SECMARK is not set |
228 | CONFIG_NETFILTER=y | 234 | CONFIG_NETFILTER=y |
229 | # CONFIG_NETFILTER_DEBUG is not set | 235 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -239,6 +245,7 @@ CONFIG_NF_CONNTRACK=m | |||
239 | CONFIG_NF_CT_ACCT=y | 245 | CONFIG_NF_CT_ACCT=y |
240 | CONFIG_NF_CONNTRACK_MARK=y | 246 | CONFIG_NF_CONNTRACK_MARK=y |
241 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 247 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
248 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
242 | CONFIG_NF_CT_PROTO_GRE=m | 249 | CONFIG_NF_CT_PROTO_GRE=m |
243 | CONFIG_NF_CT_PROTO_SCTP=m | 250 | CONFIG_NF_CT_PROTO_SCTP=m |
244 | CONFIG_NF_CT_PROTO_UDPLITE=m | 251 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -317,6 +324,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
317 | CONFIG_IP_NF_TARGET_NETMAP=m | 324 | CONFIG_IP_NF_TARGET_NETMAP=m |
318 | CONFIG_NF_NAT_SNMP_BASIC=m | 325 | CONFIG_NF_NAT_SNMP_BASIC=m |
319 | CONFIG_NF_NAT_PROTO_GRE=m | 326 | CONFIG_NF_NAT_PROTO_GRE=m |
327 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
328 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
320 | CONFIG_NF_NAT_FTP=m | 329 | CONFIG_NF_NAT_FTP=m |
321 | CONFIG_NF_NAT_IRC=m | 330 | CONFIG_NF_NAT_IRC=m |
322 | CONFIG_NF_NAT_TFTP=m | 331 | CONFIG_NF_NAT_TFTP=m |
@@ -410,8 +419,6 @@ CONFIG_IEEE80211=m | |||
410 | CONFIG_IEEE80211_CRYPT_WEP=m | 419 | CONFIG_IEEE80211_CRYPT_WEP=m |
411 | CONFIG_IEEE80211_CRYPT_CCMP=m | 420 | CONFIG_IEEE80211_CRYPT_CCMP=m |
412 | CONFIG_IEEE80211_CRYPT_TKIP=m | 421 | CONFIG_IEEE80211_CRYPT_TKIP=m |
413 | CONFIG_IEEE80211_SOFTMAC=m | ||
414 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
415 | # CONFIG_RFKILL is not set | 422 | # CONFIG_RFKILL is not set |
416 | # CONFIG_NET_9P is not set | 423 | # CONFIG_NET_9P is not set |
417 | 424 | ||
@@ -543,6 +550,7 @@ CONFIG_MVME16x_NET=y | |||
543 | # | 550 | # |
544 | # CONFIG_WLAN_PRE80211 is not set | 551 | # CONFIG_WLAN_PRE80211 is not set |
545 | # CONFIG_WLAN_80211 is not set | 552 | # CONFIG_WLAN_80211 is not set |
553 | # CONFIG_IWLWIFI_LEDS is not set | ||
546 | # CONFIG_WAN is not set | 554 | # CONFIG_WAN is not set |
547 | CONFIG_PPP=m | 555 | CONFIG_PPP=m |
548 | # CONFIG_PPP_MULTILINK is not set | 556 | # CONFIG_PPP_MULTILINK is not set |
@@ -626,6 +634,7 @@ CONFIG_VT=y | |||
626 | CONFIG_VT_CONSOLE=y | 634 | CONFIG_VT_CONSOLE=y |
627 | CONFIG_HW_CONSOLE=y | 635 | CONFIG_HW_CONSOLE=y |
628 | CONFIG_VT_HW_CONSOLE_BINDING=y | 636 | CONFIG_VT_HW_CONSOLE_BINDING=y |
637 | # CONFIG_DEVKMEM is not set | ||
629 | # CONFIG_SERIAL_NONSTANDARD is not set | 638 | # CONFIG_SERIAL_NONSTANDARD is not set |
630 | 639 | ||
631 | # | 640 | # |
@@ -647,12 +656,7 @@ CONFIG_GEN_RTC_X=y | |||
647 | # CONFIG_RAW_DRIVER is not set | 656 | # CONFIG_RAW_DRIVER is not set |
648 | # CONFIG_TCG_TPM is not set | 657 | # CONFIG_TCG_TPM is not set |
649 | # CONFIG_I2C is not set | 658 | # CONFIG_I2C is not set |
650 | |||
651 | # | ||
652 | # SPI support | ||
653 | # | ||
654 | # CONFIG_SPI is not set | 659 | # CONFIG_SPI is not set |
655 | # CONFIG_SPI_MASTER is not set | ||
656 | # CONFIG_W1 is not set | 660 | # CONFIG_W1 is not set |
657 | # CONFIG_POWER_SUPPLY is not set | 661 | # CONFIG_POWER_SUPPLY is not set |
658 | # CONFIG_HWMON is not set | 662 | # CONFIG_HWMON is not set |
@@ -669,12 +673,22 @@ CONFIG_SSB_POSSIBLE=y | |||
669 | # Multifunction device drivers | 673 | # Multifunction device drivers |
670 | # | 674 | # |
671 | # CONFIG_MFD_SM501 is not set | 675 | # CONFIG_MFD_SM501 is not set |
676 | # CONFIG_HTC_PASIC3 is not set | ||
672 | 677 | ||
673 | # | 678 | # |
674 | # Multimedia devices | 679 | # Multimedia devices |
675 | # | 680 | # |
681 | |||
682 | # | ||
683 | # Multimedia core support | ||
684 | # | ||
676 | # CONFIG_VIDEO_DEV is not set | 685 | # CONFIG_VIDEO_DEV is not set |
677 | # CONFIG_DVB_CORE is not set | 686 | # CONFIG_DVB_CORE is not set |
687 | # CONFIG_VIDEO_MEDIA is not set | ||
688 | |||
689 | # | ||
690 | # Multimedia drivers | ||
691 | # | ||
678 | # CONFIG_DAB is not set | 692 | # CONFIG_DAB is not set |
679 | 693 | ||
680 | # | 694 | # |
@@ -707,11 +721,8 @@ CONFIG_HIDRAW=y | |||
707 | # CONFIG_MMC is not set | 721 | # CONFIG_MMC is not set |
708 | # CONFIG_MEMSTICK is not set | 722 | # CONFIG_MEMSTICK is not set |
709 | # CONFIG_NEW_LEDS is not set | 723 | # CONFIG_NEW_LEDS is not set |
724 | # CONFIG_ACCESSIBILITY is not set | ||
710 | # CONFIG_RTC_CLASS is not set | 725 | # CONFIG_RTC_CLASS is not set |
711 | |||
712 | # | ||
713 | # Userspace I/O | ||
714 | # | ||
715 | # CONFIG_UIO is not set | 726 | # CONFIG_UIO is not set |
716 | 727 | ||
717 | # | 728 | # |
@@ -740,16 +751,15 @@ CONFIG_JFS_FS=m | |||
740 | # CONFIG_JFS_SECURITY is not set | 751 | # CONFIG_JFS_SECURITY is not set |
741 | # CONFIG_JFS_DEBUG is not set | 752 | # CONFIG_JFS_DEBUG is not set |
742 | # CONFIG_JFS_STATISTICS is not set | 753 | # CONFIG_JFS_STATISTICS is not set |
743 | CONFIG_FS_POSIX_ACL=y | 754 | # CONFIG_FS_POSIX_ACL is not set |
744 | CONFIG_XFS_FS=m | 755 | CONFIG_XFS_FS=m |
745 | # CONFIG_XFS_QUOTA is not set | 756 | # CONFIG_XFS_QUOTA is not set |
746 | # CONFIG_XFS_SECURITY is not set | ||
747 | # CONFIG_XFS_POSIX_ACL is not set | 757 | # CONFIG_XFS_POSIX_ACL is not set |
748 | # CONFIG_XFS_RT is not set | 758 | # CONFIG_XFS_RT is not set |
749 | CONFIG_GFS2_FS=m | 759 | # CONFIG_XFS_DEBUG is not set |
750 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
751 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
752 | CONFIG_OCFS2_FS=m | 760 | CONFIG_OCFS2_FS=m |
761 | CONFIG_OCFS2_FS_O2CB=m | ||
762 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
753 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 763 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
754 | # CONFIG_OCFS2_DEBUG_FS is not set | 764 | # CONFIG_OCFS2_DEBUG_FS is not set |
755 | CONFIG_DNOTIFY=y | 765 | CONFIG_DNOTIFY=y |
@@ -821,12 +831,10 @@ CONFIG_NFS_FS=y | |||
821 | CONFIG_NFS_V3=y | 831 | CONFIG_NFS_V3=y |
822 | # CONFIG_NFS_V3_ACL is not set | 832 | # CONFIG_NFS_V3_ACL is not set |
823 | CONFIG_NFS_V4=y | 833 | CONFIG_NFS_V4=y |
824 | # CONFIG_NFS_DIRECTIO is not set | ||
825 | CONFIG_NFSD=m | 834 | CONFIG_NFSD=m |
826 | CONFIG_NFSD_V3=y | 835 | CONFIG_NFSD_V3=y |
827 | # CONFIG_NFSD_V3_ACL is not set | 836 | # CONFIG_NFSD_V3_ACL is not set |
828 | # CONFIG_NFSD_V4 is not set | 837 | # CONFIG_NFSD_V4 is not set |
829 | CONFIG_NFSD_TCP=y | ||
830 | CONFIG_ROOT_NFS=y | 838 | CONFIG_ROOT_NFS=y |
831 | CONFIG_LOCKD=y | 839 | CONFIG_LOCKD=y |
832 | CONFIG_LOCKD_V4=y | 840 | CONFIG_LOCKD_V4=y |
@@ -901,6 +909,7 @@ CONFIG_DLM=m | |||
901 | # CONFIG_PRINTK_TIME is not set | 909 | # CONFIG_PRINTK_TIME is not set |
902 | CONFIG_ENABLE_WARN_DEPRECATED=y | 910 | CONFIG_ENABLE_WARN_DEPRECATED=y |
903 | CONFIG_ENABLE_MUST_CHECK=y | 911 | CONFIG_ENABLE_MUST_CHECK=y |
912 | CONFIG_FRAME_WARN=1024 | ||
904 | CONFIG_MAGIC_SYSRQ=y | 913 | CONFIG_MAGIC_SYSRQ=y |
905 | # CONFIG_UNUSED_SYMBOLS is not set | 914 | # CONFIG_UNUSED_SYMBOLS is not set |
906 | # CONFIG_DEBUG_FS is not set | 915 | # CONFIG_DEBUG_FS is not set |
@@ -920,53 +929,82 @@ CONFIG_ASYNC_CORE=m | |||
920 | CONFIG_ASYNC_MEMCPY=m | 929 | CONFIG_ASYNC_MEMCPY=m |
921 | CONFIG_ASYNC_XOR=m | 930 | CONFIG_ASYNC_XOR=m |
922 | CONFIG_CRYPTO=y | 931 | CONFIG_CRYPTO=y |
932 | |||
933 | # | ||
934 | # Crypto core or helper | ||
935 | # | ||
923 | CONFIG_CRYPTO_ALGAPI=y | 936 | CONFIG_CRYPTO_ALGAPI=y |
924 | CONFIG_CRYPTO_AEAD=m | 937 | CONFIG_CRYPTO_AEAD=m |
925 | CONFIG_CRYPTO_BLKCIPHER=y | 938 | CONFIG_CRYPTO_BLKCIPHER=y |
926 | CONFIG_CRYPTO_SEQIV=m | ||
927 | CONFIG_CRYPTO_HASH=y | 939 | CONFIG_CRYPTO_HASH=y |
928 | CONFIG_CRYPTO_MANAGER=y | 940 | CONFIG_CRYPTO_MANAGER=y |
941 | CONFIG_CRYPTO_GF128MUL=m | ||
942 | CONFIG_CRYPTO_NULL=m | ||
943 | CONFIG_CRYPTO_CRYPTD=m | ||
944 | CONFIG_CRYPTO_AUTHENC=m | ||
945 | CONFIG_CRYPTO_TEST=m | ||
946 | |||
947 | # | ||
948 | # Authenticated Encryption with Associated Data | ||
949 | # | ||
950 | CONFIG_CRYPTO_CCM=m | ||
951 | CONFIG_CRYPTO_GCM=m | ||
952 | CONFIG_CRYPTO_SEQIV=m | ||
953 | |||
954 | # | ||
955 | # Block modes | ||
956 | # | ||
957 | CONFIG_CRYPTO_CBC=y | ||
958 | CONFIG_CRYPTO_CTR=m | ||
959 | CONFIG_CRYPTO_CTS=m | ||
960 | CONFIG_CRYPTO_ECB=m | ||
961 | CONFIG_CRYPTO_LRW=m | ||
962 | CONFIG_CRYPTO_PCBC=m | ||
963 | CONFIG_CRYPTO_XTS=m | ||
964 | |||
965 | # | ||
966 | # Hash modes | ||
967 | # | ||
929 | CONFIG_CRYPTO_HMAC=y | 968 | CONFIG_CRYPTO_HMAC=y |
930 | CONFIG_CRYPTO_XCBC=m | 969 | CONFIG_CRYPTO_XCBC=m |
931 | CONFIG_CRYPTO_NULL=m | 970 | |
971 | # | ||
972 | # Digest | ||
973 | # | ||
974 | CONFIG_CRYPTO_CRC32C=m | ||
932 | CONFIG_CRYPTO_MD4=m | 975 | CONFIG_CRYPTO_MD4=m |
933 | CONFIG_CRYPTO_MD5=y | 976 | CONFIG_CRYPTO_MD5=y |
977 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
934 | CONFIG_CRYPTO_SHA1=m | 978 | CONFIG_CRYPTO_SHA1=m |
935 | CONFIG_CRYPTO_SHA256=m | 979 | CONFIG_CRYPTO_SHA256=m |
936 | CONFIG_CRYPTO_SHA512=m | 980 | CONFIG_CRYPTO_SHA512=m |
937 | CONFIG_CRYPTO_WP512=m | ||
938 | CONFIG_CRYPTO_TGR192=m | 981 | CONFIG_CRYPTO_TGR192=m |
939 | CONFIG_CRYPTO_GF128MUL=m | 982 | CONFIG_CRYPTO_WP512=m |
940 | CONFIG_CRYPTO_ECB=m | 983 | |
941 | CONFIG_CRYPTO_CBC=y | 984 | # |
942 | CONFIG_CRYPTO_PCBC=m | 985 | # Ciphers |
943 | CONFIG_CRYPTO_LRW=m | 986 | # |
944 | CONFIG_CRYPTO_XTS=m | ||
945 | CONFIG_CRYPTO_CTR=m | ||
946 | CONFIG_CRYPTO_GCM=m | ||
947 | CONFIG_CRYPTO_CCM=m | ||
948 | CONFIG_CRYPTO_CRYPTD=m | ||
949 | CONFIG_CRYPTO_DES=y | ||
950 | CONFIG_CRYPTO_FCRYPT=m | ||
951 | CONFIG_CRYPTO_BLOWFISH=m | ||
952 | CONFIG_CRYPTO_TWOFISH=m | ||
953 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
954 | CONFIG_CRYPTO_SERPENT=m | ||
955 | CONFIG_CRYPTO_AES=m | 987 | CONFIG_CRYPTO_AES=m |
988 | CONFIG_CRYPTO_ANUBIS=m | ||
989 | CONFIG_CRYPTO_ARC4=m | ||
990 | CONFIG_CRYPTO_BLOWFISH=m | ||
991 | CONFIG_CRYPTO_CAMELLIA=m | ||
956 | CONFIG_CRYPTO_CAST5=m | 992 | CONFIG_CRYPTO_CAST5=m |
957 | CONFIG_CRYPTO_CAST6=m | 993 | CONFIG_CRYPTO_CAST6=m |
958 | CONFIG_CRYPTO_TEA=m | 994 | CONFIG_CRYPTO_DES=y |
959 | CONFIG_CRYPTO_ARC4=m | 995 | CONFIG_CRYPTO_FCRYPT=m |
960 | CONFIG_CRYPTO_KHAZAD=m | 996 | CONFIG_CRYPTO_KHAZAD=m |
961 | CONFIG_CRYPTO_ANUBIS=m | ||
962 | CONFIG_CRYPTO_SEED=m | ||
963 | CONFIG_CRYPTO_SALSA20=m | 997 | CONFIG_CRYPTO_SALSA20=m |
998 | CONFIG_CRYPTO_SEED=m | ||
999 | CONFIG_CRYPTO_SERPENT=m | ||
1000 | CONFIG_CRYPTO_TEA=m | ||
1001 | CONFIG_CRYPTO_TWOFISH=m | ||
1002 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1003 | |||
1004 | # | ||
1005 | # Compression | ||
1006 | # | ||
964 | CONFIG_CRYPTO_DEFLATE=m | 1007 | CONFIG_CRYPTO_DEFLATE=m |
965 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
966 | CONFIG_CRYPTO_CRC32C=m | ||
967 | CONFIG_CRYPTO_CAMELLIA=m | ||
968 | CONFIG_CRYPTO_TEST=m | ||
969 | CONFIG_CRYPTO_AUTHENC=m | ||
970 | CONFIG_CRYPTO_LZO=m | 1008 | CONFIG_CRYPTO_LZO=m |
971 | # CONFIG_CRYPTO_HW is not set | 1009 | # CONFIG_CRYPTO_HW is not set |
972 | 1010 | ||
@@ -974,9 +1012,11 @@ CONFIG_CRYPTO_LZO=m | |||
974 | # Library routines | 1012 | # Library routines |
975 | # | 1013 | # |
976 | CONFIG_BITREVERSE=y | 1014 | CONFIG_BITREVERSE=y |
1015 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1016 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
977 | CONFIG_CRC_CCITT=m | 1017 | CONFIG_CRC_CCITT=m |
978 | CONFIG_CRC16=m | 1018 | CONFIG_CRC16=m |
979 | # CONFIG_CRC_ITU_T is not set | 1019 | CONFIG_CRC_ITU_T=m |
980 | CONFIG_CRC32=y | 1020 | CONFIG_CRC32=y |
981 | # CONFIG_CRC7 is not set | 1021 | # CONFIG_CRC7 is not set |
982 | CONFIG_LIBCRC32C=m | 1022 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/q40_defconfig b/arch/m68k/configs/q40_defconfig index 165658fe73eb..7707f3fb0a70 100644 --- a/arch/m68k/configs/q40_defconfig +++ b/arch/m68k/configs/q40_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:20 2008 | 4 | # Sun May 18 14:44:51 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -12,7 +12,6 @@ CONFIG_GENERIC_HWEIGHT=y | |||
12 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 12 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
13 | CONFIG_TIME_LOW_RES=y | 13 | CONFIG_TIME_LOW_RES=y |
14 | CONFIG_GENERIC_IOMAP=y | 14 | CONFIG_GENERIC_IOMAP=y |
15 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
16 | CONFIG_NO_IOPORT=y | 15 | CONFIG_NO_IOPORT=y |
17 | # CONFIG_NO_DMA is not set | 16 | # CONFIG_NO_DMA is not set |
18 | CONFIG_ARCH_SUPPORTS_AOUT=y | 17 | CONFIG_ARCH_SUPPORTS_AOUT=y |
@@ -53,6 +52,7 @@ CONFIG_SYSCTL=y | |||
53 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
54 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
55 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
56 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
58 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -77,12 +77,14 @@ CONFIG_SLAB=y | |||
77 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
78 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
79 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
80 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
81 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
82 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
83 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
84 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
85 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
86 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
87 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
88 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -142,6 +144,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
142 | CONFIG_NEED_MULTIPLE_NODES=y | 144 | CONFIG_NEED_MULTIPLE_NODES=y |
143 | # CONFIG_SPARSEMEM_STATIC is not set | 145 | # CONFIG_SPARSEMEM_STATIC is not set |
144 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
147 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
145 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 148 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
146 | # CONFIG_RESOURCES_64BIT is not set | 149 | # CONFIG_RESOURCES_64BIT is not set |
147 | CONFIG_ZONE_DMA_FLAG=1 | 150 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -220,8 +223,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
220 | CONFIG_INET6_XFRM_MODE_BEET=m | 223 | CONFIG_INET6_XFRM_MODE_BEET=m |
221 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 224 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
222 | CONFIG_IPV6_SIT=m | 225 | CONFIG_IPV6_SIT=m |
226 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
223 | CONFIG_IPV6_TUNNEL=m | 227 | CONFIG_IPV6_TUNNEL=m |
224 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 228 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
229 | # CONFIG_IPV6_MROUTE is not set | ||
225 | # CONFIG_NETWORK_SECMARK is not set | 230 | # CONFIG_NETWORK_SECMARK is not set |
226 | CONFIG_NETFILTER=y | 231 | CONFIG_NETFILTER=y |
227 | # CONFIG_NETFILTER_DEBUG is not set | 232 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -237,6 +242,7 @@ CONFIG_NF_CONNTRACK=m | |||
237 | CONFIG_NF_CT_ACCT=y | 242 | CONFIG_NF_CT_ACCT=y |
238 | CONFIG_NF_CONNTRACK_MARK=y | 243 | CONFIG_NF_CONNTRACK_MARK=y |
239 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 244 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
245 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
240 | CONFIG_NF_CT_PROTO_GRE=m | 246 | CONFIG_NF_CT_PROTO_GRE=m |
241 | CONFIG_NF_CT_PROTO_SCTP=m | 247 | CONFIG_NF_CT_PROTO_SCTP=m |
242 | CONFIG_NF_CT_PROTO_UDPLITE=m | 248 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -315,6 +321,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
315 | CONFIG_IP_NF_TARGET_NETMAP=m | 321 | CONFIG_IP_NF_TARGET_NETMAP=m |
316 | CONFIG_NF_NAT_SNMP_BASIC=m | 322 | CONFIG_NF_NAT_SNMP_BASIC=m |
317 | CONFIG_NF_NAT_PROTO_GRE=m | 323 | CONFIG_NF_NAT_PROTO_GRE=m |
324 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
325 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
318 | CONFIG_NF_NAT_FTP=m | 326 | CONFIG_NF_NAT_FTP=m |
319 | CONFIG_NF_NAT_IRC=m | 327 | CONFIG_NF_NAT_IRC=m |
320 | CONFIG_NF_NAT_TFTP=m | 328 | CONFIG_NF_NAT_TFTP=m |
@@ -408,8 +416,6 @@ CONFIG_IEEE80211=m | |||
408 | CONFIG_IEEE80211_CRYPT_WEP=m | 416 | CONFIG_IEEE80211_CRYPT_WEP=m |
409 | CONFIG_IEEE80211_CRYPT_CCMP=m | 417 | CONFIG_IEEE80211_CRYPT_CCMP=m |
410 | CONFIG_IEEE80211_CRYPT_TKIP=m | 418 | CONFIG_IEEE80211_CRYPT_TKIP=m |
411 | CONFIG_IEEE80211_SOFTMAC=m | ||
412 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
413 | # CONFIG_RFKILL is not set | 419 | # CONFIG_RFKILL is not set |
414 | # CONFIG_NET_9P is not set | 420 | # CONFIG_NET_9P is not set |
415 | 421 | ||
@@ -430,7 +436,6 @@ CONFIG_CONNECTOR=m | |||
430 | # CONFIG_PARPORT is not set | 436 | # CONFIG_PARPORT is not set |
431 | # CONFIG_PNP is not set | 437 | # CONFIG_PNP is not set |
432 | CONFIG_BLK_DEV=y | 438 | CONFIG_BLK_DEV=y |
433 | # CONFIG_BLK_DEV_FD is not set | ||
434 | # CONFIG_BLK_DEV_COW_COMMON is not set | 439 | # CONFIG_BLK_DEV_COW_COMMON is not set |
435 | CONFIG_BLK_DEV_LOOP=y | 440 | CONFIG_BLK_DEV_LOOP=y |
436 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 441 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
@@ -467,25 +472,10 @@ CONFIG_IDE_PROC_FS=y | |||
467 | # | 472 | # |
468 | # IDE chipset support/bugfixes | 473 | # IDE chipset support/bugfixes |
469 | # | 474 | # |
470 | # CONFIG_IDE_GENERIC is not set | ||
471 | # CONFIG_BLK_DEV_PLATFORM is not set | 475 | # CONFIG_BLK_DEV_PLATFORM is not set |
472 | CONFIG_BLK_DEV_Q40IDE=y | 476 | CONFIG_BLK_DEV_Q40IDE=y |
473 | |||
474 | # | ||
475 | # Other IDE chipsets support | ||
476 | # | ||
477 | |||
478 | # | ||
479 | # Note: most of these also require special kernel boot parameters | ||
480 | # | ||
481 | # CONFIG_BLK_DEV_4DRIVES is not set | ||
482 | # CONFIG_BLK_DEV_ALI14XX is not set | ||
483 | # CONFIG_BLK_DEV_DTC2278 is not set | ||
484 | # CONFIG_BLK_DEV_HT6560B is not set | ||
485 | # CONFIG_BLK_DEV_QD65XX is not set | ||
486 | # CONFIG_BLK_DEV_UMC8672 is not set | ||
487 | # CONFIG_BLK_DEV_IDEDMA is not set | 477 | # CONFIG_BLK_DEV_IDEDMA is not set |
488 | # CONFIG_IDE_ARCH_OBSOLETE_INIT is not set | 478 | # CONFIG_BLK_DEV_HD_ONLY is not set |
489 | # CONFIG_BLK_DEV_HD is not set | 479 | # CONFIG_BLK_DEV_HD is not set |
490 | 480 | ||
491 | # | 481 | # |
@@ -603,6 +593,7 @@ CONFIG_NE2000=m | |||
603 | # | 593 | # |
604 | # CONFIG_WLAN_PRE80211 is not set | 594 | # CONFIG_WLAN_PRE80211 is not set |
605 | # CONFIG_WLAN_80211 is not set | 595 | # CONFIG_WLAN_80211 is not set |
596 | # CONFIG_IWLWIFI_LEDS is not set | ||
606 | # CONFIG_WAN is not set | 597 | # CONFIG_WAN is not set |
607 | CONFIG_PPP=m | 598 | CONFIG_PPP=m |
608 | # CONFIG_PPP_MULTILINK is not set | 599 | # CONFIG_PPP_MULTILINK is not set |
@@ -692,6 +683,7 @@ CONFIG_VT=y | |||
692 | CONFIG_VT_CONSOLE=y | 683 | CONFIG_VT_CONSOLE=y |
693 | CONFIG_HW_CONSOLE=y | 684 | CONFIG_HW_CONSOLE=y |
694 | CONFIG_VT_HW_CONSOLE_BINDING=y | 685 | CONFIG_VT_HW_CONSOLE_BINDING=y |
686 | # CONFIG_DEVKMEM is not set | ||
695 | # CONFIG_SERIAL_NONSTANDARD is not set | 687 | # CONFIG_SERIAL_NONSTANDARD is not set |
696 | 688 | ||
697 | # | 689 | # |
@@ -714,12 +706,7 @@ CONFIG_GEN_RTC_X=y | |||
714 | # CONFIG_RAW_DRIVER is not set | 706 | # CONFIG_RAW_DRIVER is not set |
715 | # CONFIG_TCG_TPM is not set | 707 | # CONFIG_TCG_TPM is not set |
716 | # CONFIG_I2C is not set | 708 | # CONFIG_I2C is not set |
717 | |||
718 | # | ||
719 | # SPI support | ||
720 | # | ||
721 | # CONFIG_SPI is not set | 709 | # CONFIG_SPI is not set |
722 | # CONFIG_SPI_MASTER is not set | ||
723 | # CONFIG_W1 is not set | 710 | # CONFIG_W1 is not set |
724 | # CONFIG_POWER_SUPPLY is not set | 711 | # CONFIG_POWER_SUPPLY is not set |
725 | # CONFIG_HWMON is not set | 712 | # CONFIG_HWMON is not set |
@@ -736,12 +723,22 @@ CONFIG_SSB_POSSIBLE=y | |||
736 | # Multifunction device drivers | 723 | # Multifunction device drivers |
737 | # | 724 | # |
738 | # CONFIG_MFD_SM501 is not set | 725 | # CONFIG_MFD_SM501 is not set |
726 | # CONFIG_HTC_PASIC3 is not set | ||
739 | 727 | ||
740 | # | 728 | # |
741 | # Multimedia devices | 729 | # Multimedia devices |
742 | # | 730 | # |
731 | |||
732 | # | ||
733 | # Multimedia core support | ||
734 | # | ||
743 | # CONFIG_VIDEO_DEV is not set | 735 | # CONFIG_VIDEO_DEV is not set |
744 | # CONFIG_DVB_CORE is not set | 736 | # CONFIG_DVB_CORE is not set |
737 | # CONFIG_VIDEO_MEDIA is not set | ||
738 | |||
739 | # | ||
740 | # Multimedia drivers | ||
741 | # | ||
745 | # CONFIG_DAB is not set | 742 | # CONFIG_DAB is not set |
746 | 743 | ||
747 | # | 744 | # |
@@ -759,8 +756,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
759 | # CONFIG_FB_SYS_FILLRECT is not set | 756 | # CONFIG_FB_SYS_FILLRECT is not set |
760 | # CONFIG_FB_SYS_COPYAREA is not set | 757 | # CONFIG_FB_SYS_COPYAREA is not set |
761 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 758 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
759 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
762 | # CONFIG_FB_SYS_FOPS is not set | 760 | # CONFIG_FB_SYS_FOPS is not set |
763 | CONFIG_FB_DEFERRED_IO=y | ||
764 | # CONFIG_FB_SVGALIB is not set | 761 | # CONFIG_FB_SVGALIB is not set |
765 | # CONFIG_FB_MACMODES is not set | 762 | # CONFIG_FB_MACMODES is not set |
766 | # CONFIG_FB_BACKLIGHT is not set | 763 | # CONFIG_FB_BACKLIGHT is not set |
@@ -810,11 +807,8 @@ CONFIG_HIDRAW=y | |||
810 | # CONFIG_MMC is not set | 807 | # CONFIG_MMC is not set |
811 | # CONFIG_MEMSTICK is not set | 808 | # CONFIG_MEMSTICK is not set |
812 | # CONFIG_NEW_LEDS is not set | 809 | # CONFIG_NEW_LEDS is not set |
810 | # CONFIG_ACCESSIBILITY is not set | ||
813 | # CONFIG_RTC_CLASS is not set | 811 | # CONFIG_RTC_CLASS is not set |
814 | |||
815 | # | ||
816 | # Userspace I/O | ||
817 | # | ||
818 | # CONFIG_UIO is not set | 812 | # CONFIG_UIO is not set |
819 | 813 | ||
820 | # | 814 | # |
@@ -840,16 +834,15 @@ CONFIG_JFS_FS=m | |||
840 | # CONFIG_JFS_SECURITY is not set | 834 | # CONFIG_JFS_SECURITY is not set |
841 | # CONFIG_JFS_DEBUG is not set | 835 | # CONFIG_JFS_DEBUG is not set |
842 | # CONFIG_JFS_STATISTICS is not set | 836 | # CONFIG_JFS_STATISTICS is not set |
843 | CONFIG_FS_POSIX_ACL=y | 837 | # CONFIG_FS_POSIX_ACL is not set |
844 | CONFIG_XFS_FS=m | 838 | CONFIG_XFS_FS=m |
845 | # CONFIG_XFS_QUOTA is not set | 839 | # CONFIG_XFS_QUOTA is not set |
846 | # CONFIG_XFS_SECURITY is not set | ||
847 | # CONFIG_XFS_POSIX_ACL is not set | 840 | # CONFIG_XFS_POSIX_ACL is not set |
848 | # CONFIG_XFS_RT is not set | 841 | # CONFIG_XFS_RT is not set |
849 | CONFIG_GFS2_FS=m | 842 | # CONFIG_XFS_DEBUG is not set |
850 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
851 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
852 | CONFIG_OCFS2_FS=m | 843 | CONFIG_OCFS2_FS=m |
844 | CONFIG_OCFS2_FS_O2CB=m | ||
845 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
853 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 846 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
854 | # CONFIG_OCFS2_DEBUG_FS is not set | 847 | # CONFIG_OCFS2_DEBUG_FS is not set |
855 | CONFIG_DNOTIFY=y | 848 | CONFIG_DNOTIFY=y |
@@ -921,12 +914,10 @@ CONFIG_NFS_FS=y | |||
921 | CONFIG_NFS_V3=y | 914 | CONFIG_NFS_V3=y |
922 | # CONFIG_NFS_V3_ACL is not set | 915 | # CONFIG_NFS_V3_ACL is not set |
923 | CONFIG_NFS_V4=y | 916 | CONFIG_NFS_V4=y |
924 | # CONFIG_NFS_DIRECTIO is not set | ||
925 | CONFIG_NFSD=m | 917 | CONFIG_NFSD=m |
926 | CONFIG_NFSD_V3=y | 918 | CONFIG_NFSD_V3=y |
927 | # CONFIG_NFSD_V3_ACL is not set | 919 | # CONFIG_NFSD_V3_ACL is not set |
928 | # CONFIG_NFSD_V4 is not set | 920 | # CONFIG_NFSD_V4 is not set |
929 | CONFIG_NFSD_TCP=y | ||
930 | CONFIG_LOCKD=y | 921 | CONFIG_LOCKD=y |
931 | CONFIG_LOCKD_V4=y | 922 | CONFIG_LOCKD_V4=y |
932 | CONFIG_EXPORTFS=m | 923 | CONFIG_EXPORTFS=m |
@@ -999,6 +990,7 @@ CONFIG_DLM=m | |||
999 | # CONFIG_PRINTK_TIME is not set | 990 | # CONFIG_PRINTK_TIME is not set |
1000 | CONFIG_ENABLE_WARN_DEPRECATED=y | 991 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1001 | CONFIG_ENABLE_MUST_CHECK=y | 992 | CONFIG_ENABLE_MUST_CHECK=y |
993 | CONFIG_FRAME_WARN=1024 | ||
1002 | CONFIG_MAGIC_SYSRQ=y | 994 | CONFIG_MAGIC_SYSRQ=y |
1003 | # CONFIG_UNUSED_SYMBOLS is not set | 995 | # CONFIG_UNUSED_SYMBOLS is not set |
1004 | # CONFIG_DEBUG_FS is not set | 996 | # CONFIG_DEBUG_FS is not set |
@@ -1018,53 +1010,82 @@ CONFIG_ASYNC_CORE=m | |||
1018 | CONFIG_ASYNC_MEMCPY=m | 1010 | CONFIG_ASYNC_MEMCPY=m |
1019 | CONFIG_ASYNC_XOR=m | 1011 | CONFIG_ASYNC_XOR=m |
1020 | CONFIG_CRYPTO=y | 1012 | CONFIG_CRYPTO=y |
1013 | |||
1014 | # | ||
1015 | # Crypto core or helper | ||
1016 | # | ||
1021 | CONFIG_CRYPTO_ALGAPI=y | 1017 | CONFIG_CRYPTO_ALGAPI=y |
1022 | CONFIG_CRYPTO_AEAD=m | 1018 | CONFIG_CRYPTO_AEAD=m |
1023 | CONFIG_CRYPTO_BLKCIPHER=y | 1019 | CONFIG_CRYPTO_BLKCIPHER=y |
1024 | CONFIG_CRYPTO_SEQIV=m | ||
1025 | CONFIG_CRYPTO_HASH=y | 1020 | CONFIG_CRYPTO_HASH=y |
1026 | CONFIG_CRYPTO_MANAGER=y | 1021 | CONFIG_CRYPTO_MANAGER=y |
1022 | CONFIG_CRYPTO_GF128MUL=m | ||
1023 | CONFIG_CRYPTO_NULL=m | ||
1024 | CONFIG_CRYPTO_CRYPTD=m | ||
1025 | CONFIG_CRYPTO_AUTHENC=m | ||
1026 | CONFIG_CRYPTO_TEST=m | ||
1027 | |||
1028 | # | ||
1029 | # Authenticated Encryption with Associated Data | ||
1030 | # | ||
1031 | CONFIG_CRYPTO_CCM=m | ||
1032 | CONFIG_CRYPTO_GCM=m | ||
1033 | CONFIG_CRYPTO_SEQIV=m | ||
1034 | |||
1035 | # | ||
1036 | # Block modes | ||
1037 | # | ||
1038 | CONFIG_CRYPTO_CBC=y | ||
1039 | CONFIG_CRYPTO_CTR=m | ||
1040 | CONFIG_CRYPTO_CTS=m | ||
1041 | CONFIG_CRYPTO_ECB=m | ||
1042 | CONFIG_CRYPTO_LRW=m | ||
1043 | CONFIG_CRYPTO_PCBC=m | ||
1044 | CONFIG_CRYPTO_XTS=m | ||
1045 | |||
1046 | # | ||
1047 | # Hash modes | ||
1048 | # | ||
1027 | CONFIG_CRYPTO_HMAC=y | 1049 | CONFIG_CRYPTO_HMAC=y |
1028 | CONFIG_CRYPTO_XCBC=m | 1050 | CONFIG_CRYPTO_XCBC=m |
1029 | CONFIG_CRYPTO_NULL=m | 1051 | |
1052 | # | ||
1053 | # Digest | ||
1054 | # | ||
1055 | CONFIG_CRYPTO_CRC32C=m | ||
1030 | CONFIG_CRYPTO_MD4=m | 1056 | CONFIG_CRYPTO_MD4=m |
1031 | CONFIG_CRYPTO_MD5=y | 1057 | CONFIG_CRYPTO_MD5=y |
1058 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1032 | CONFIG_CRYPTO_SHA1=m | 1059 | CONFIG_CRYPTO_SHA1=m |
1033 | CONFIG_CRYPTO_SHA256=m | 1060 | CONFIG_CRYPTO_SHA256=m |
1034 | CONFIG_CRYPTO_SHA512=m | 1061 | CONFIG_CRYPTO_SHA512=m |
1035 | CONFIG_CRYPTO_WP512=m | ||
1036 | CONFIG_CRYPTO_TGR192=m | 1062 | CONFIG_CRYPTO_TGR192=m |
1037 | CONFIG_CRYPTO_GF128MUL=m | 1063 | CONFIG_CRYPTO_WP512=m |
1038 | CONFIG_CRYPTO_ECB=m | 1064 | |
1039 | CONFIG_CRYPTO_CBC=y | 1065 | # |
1040 | CONFIG_CRYPTO_PCBC=m | 1066 | # Ciphers |
1041 | CONFIG_CRYPTO_LRW=m | 1067 | # |
1042 | CONFIG_CRYPTO_XTS=m | ||
1043 | CONFIG_CRYPTO_CTR=m | ||
1044 | CONFIG_CRYPTO_GCM=m | ||
1045 | CONFIG_CRYPTO_CCM=m | ||
1046 | CONFIG_CRYPTO_CRYPTD=m | ||
1047 | CONFIG_CRYPTO_DES=y | ||
1048 | CONFIG_CRYPTO_FCRYPT=m | ||
1049 | CONFIG_CRYPTO_BLOWFISH=m | ||
1050 | CONFIG_CRYPTO_TWOFISH=m | ||
1051 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1052 | CONFIG_CRYPTO_SERPENT=m | ||
1053 | CONFIG_CRYPTO_AES=m | 1068 | CONFIG_CRYPTO_AES=m |
1069 | CONFIG_CRYPTO_ANUBIS=m | ||
1070 | CONFIG_CRYPTO_ARC4=m | ||
1071 | CONFIG_CRYPTO_BLOWFISH=m | ||
1072 | CONFIG_CRYPTO_CAMELLIA=m | ||
1054 | CONFIG_CRYPTO_CAST5=m | 1073 | CONFIG_CRYPTO_CAST5=m |
1055 | CONFIG_CRYPTO_CAST6=m | 1074 | CONFIG_CRYPTO_CAST6=m |
1056 | CONFIG_CRYPTO_TEA=m | 1075 | CONFIG_CRYPTO_DES=y |
1057 | CONFIG_CRYPTO_ARC4=m | 1076 | CONFIG_CRYPTO_FCRYPT=m |
1058 | CONFIG_CRYPTO_KHAZAD=m | 1077 | CONFIG_CRYPTO_KHAZAD=m |
1059 | CONFIG_CRYPTO_ANUBIS=m | ||
1060 | CONFIG_CRYPTO_SEED=m | ||
1061 | CONFIG_CRYPTO_SALSA20=m | 1078 | CONFIG_CRYPTO_SALSA20=m |
1079 | CONFIG_CRYPTO_SEED=m | ||
1080 | CONFIG_CRYPTO_SERPENT=m | ||
1081 | CONFIG_CRYPTO_TEA=m | ||
1082 | CONFIG_CRYPTO_TWOFISH=m | ||
1083 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1084 | |||
1085 | # | ||
1086 | # Compression | ||
1087 | # | ||
1062 | CONFIG_CRYPTO_DEFLATE=m | 1088 | CONFIG_CRYPTO_DEFLATE=m |
1063 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1064 | CONFIG_CRYPTO_CRC32C=m | ||
1065 | CONFIG_CRYPTO_CAMELLIA=m | ||
1066 | CONFIG_CRYPTO_TEST=m | ||
1067 | CONFIG_CRYPTO_AUTHENC=m | ||
1068 | CONFIG_CRYPTO_LZO=m | 1089 | CONFIG_CRYPTO_LZO=m |
1069 | # CONFIG_CRYPTO_HW is not set | 1090 | # CONFIG_CRYPTO_HW is not set |
1070 | 1091 | ||
@@ -1072,9 +1093,11 @@ CONFIG_CRYPTO_LZO=m | |||
1072 | # Library routines | 1093 | # Library routines |
1073 | # | 1094 | # |
1074 | CONFIG_BITREVERSE=y | 1095 | CONFIG_BITREVERSE=y |
1096 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1097 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1075 | CONFIG_CRC_CCITT=m | 1098 | CONFIG_CRC_CCITT=m |
1076 | CONFIG_CRC16=m | 1099 | CONFIG_CRC16=m |
1077 | # CONFIG_CRC_ITU_T is not set | 1100 | CONFIG_CRC_ITU_T=m |
1078 | CONFIG_CRC32=y | 1101 | CONFIG_CRC32=y |
1079 | # CONFIG_CRC7 is not set | 1102 | # CONFIG_CRC7 is not set |
1080 | CONFIG_LIBCRC32C=m | 1103 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/sun3_defconfig b/arch/m68k/configs/sun3_defconfig index bd2b9c4927c4..a765f6f15d2c 100644 --- a/arch/m68k/configs/sun3_defconfig +++ b/arch/m68k/configs/sun3_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:22 2008 | 4 | # Sun May 18 14:44:53 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -130,6 +133,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
130 | CONFIG_NEED_MULTIPLE_NODES=y | 133 | CONFIG_NEED_MULTIPLE_NODES=y |
131 | # CONFIG_SPARSEMEM_STATIC is not set | 134 | # CONFIG_SPARSEMEM_STATIC is not set |
132 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 135 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
136 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
133 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 137 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
134 | # CONFIG_RESOURCES_64BIT is not set | 138 | # CONFIG_RESOURCES_64BIT is not set |
135 | CONFIG_ZONE_DMA_FLAG=1 | 139 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -208,8 +212,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
208 | CONFIG_INET6_XFRM_MODE_BEET=m | 212 | CONFIG_INET6_XFRM_MODE_BEET=m |
209 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 213 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
210 | CONFIG_IPV6_SIT=m | 214 | CONFIG_IPV6_SIT=m |
215 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
211 | CONFIG_IPV6_TUNNEL=m | 216 | CONFIG_IPV6_TUNNEL=m |
212 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 217 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
218 | # CONFIG_IPV6_MROUTE is not set | ||
213 | # CONFIG_NETWORK_SECMARK is not set | 219 | # CONFIG_NETWORK_SECMARK is not set |
214 | CONFIG_NETFILTER=y | 220 | CONFIG_NETFILTER=y |
215 | # CONFIG_NETFILTER_DEBUG is not set | 221 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -225,6 +231,7 @@ CONFIG_NF_CONNTRACK=m | |||
225 | CONFIG_NF_CT_ACCT=y | 231 | CONFIG_NF_CT_ACCT=y |
226 | CONFIG_NF_CONNTRACK_MARK=y | 232 | CONFIG_NF_CONNTRACK_MARK=y |
227 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 233 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
234 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
228 | CONFIG_NF_CT_PROTO_GRE=m | 235 | CONFIG_NF_CT_PROTO_GRE=m |
229 | CONFIG_NF_CT_PROTO_SCTP=m | 236 | CONFIG_NF_CT_PROTO_SCTP=m |
230 | CONFIG_NF_CT_PROTO_UDPLITE=m | 237 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -303,6 +310,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
303 | CONFIG_IP_NF_TARGET_NETMAP=m | 310 | CONFIG_IP_NF_TARGET_NETMAP=m |
304 | CONFIG_NF_NAT_SNMP_BASIC=m | 311 | CONFIG_NF_NAT_SNMP_BASIC=m |
305 | CONFIG_NF_NAT_PROTO_GRE=m | 312 | CONFIG_NF_NAT_PROTO_GRE=m |
313 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
314 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
306 | CONFIG_NF_NAT_FTP=m | 315 | CONFIG_NF_NAT_FTP=m |
307 | CONFIG_NF_NAT_IRC=m | 316 | CONFIG_NF_NAT_IRC=m |
308 | CONFIG_NF_NAT_TFTP=m | 317 | CONFIG_NF_NAT_TFTP=m |
@@ -396,8 +405,6 @@ CONFIG_IEEE80211=m | |||
396 | CONFIG_IEEE80211_CRYPT_WEP=m | 405 | CONFIG_IEEE80211_CRYPT_WEP=m |
397 | CONFIG_IEEE80211_CRYPT_CCMP=m | 406 | CONFIG_IEEE80211_CRYPT_CCMP=m |
398 | CONFIG_IEEE80211_CRYPT_TKIP=m | 407 | CONFIG_IEEE80211_CRYPT_TKIP=m |
399 | CONFIG_IEEE80211_SOFTMAC=m | ||
400 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
401 | # CONFIG_RFKILL is not set | 408 | # CONFIG_RFKILL is not set |
402 | # CONFIG_NET_9P is not set | 409 | # CONFIG_NET_9P is not set |
403 | 410 | ||
@@ -529,6 +536,7 @@ CONFIG_SUN3_82586=y | |||
529 | # | 536 | # |
530 | # CONFIG_WLAN_PRE80211 is not set | 537 | # CONFIG_WLAN_PRE80211 is not set |
531 | # CONFIG_WLAN_80211 is not set | 538 | # CONFIG_WLAN_80211 is not set |
539 | # CONFIG_IWLWIFI_LEDS is not set | ||
532 | # CONFIG_WAN is not set | 540 | # CONFIG_WAN is not set |
533 | CONFIG_PPP=m | 541 | CONFIG_PPP=m |
534 | # CONFIG_PPP_MULTILINK is not set | 542 | # CONFIG_PPP_MULTILINK is not set |
@@ -612,6 +620,7 @@ CONFIG_VT=y | |||
612 | CONFIG_VT_CONSOLE=y | 620 | CONFIG_VT_CONSOLE=y |
613 | CONFIG_HW_CONSOLE=y | 621 | CONFIG_HW_CONSOLE=y |
614 | CONFIG_VT_HW_CONSOLE_BINDING=y | 622 | CONFIG_VT_HW_CONSOLE_BINDING=y |
623 | # CONFIG_DEVKMEM is not set | ||
615 | # CONFIG_SERIAL_NONSTANDARD is not set | 624 | # CONFIG_SERIAL_NONSTANDARD is not set |
616 | 625 | ||
617 | # | 626 | # |
@@ -633,12 +642,7 @@ CONFIG_GEN_RTC_X=y | |||
633 | # CONFIG_RAW_DRIVER is not set | 642 | # CONFIG_RAW_DRIVER is not set |
634 | # CONFIG_TCG_TPM is not set | 643 | # CONFIG_TCG_TPM is not set |
635 | # CONFIG_I2C is not set | 644 | # CONFIG_I2C is not set |
636 | |||
637 | # | ||
638 | # SPI support | ||
639 | # | ||
640 | # CONFIG_SPI is not set | 645 | # CONFIG_SPI is not set |
641 | # CONFIG_SPI_MASTER is not set | ||
642 | # CONFIG_W1 is not set | 646 | # CONFIG_W1 is not set |
643 | # CONFIG_POWER_SUPPLY is not set | 647 | # CONFIG_POWER_SUPPLY is not set |
644 | # CONFIG_HWMON is not set | 648 | # CONFIG_HWMON is not set |
@@ -655,12 +659,22 @@ CONFIG_SSB_POSSIBLE=y | |||
655 | # Multifunction device drivers | 659 | # Multifunction device drivers |
656 | # | 660 | # |
657 | # CONFIG_MFD_SM501 is not set | 661 | # CONFIG_MFD_SM501 is not set |
662 | # CONFIG_HTC_PASIC3 is not set | ||
658 | 663 | ||
659 | # | 664 | # |
660 | # Multimedia devices | 665 | # Multimedia devices |
661 | # | 666 | # |
667 | |||
668 | # | ||
669 | # Multimedia core support | ||
670 | # | ||
662 | # CONFIG_VIDEO_DEV is not set | 671 | # CONFIG_VIDEO_DEV is not set |
663 | # CONFIG_DVB_CORE is not set | 672 | # CONFIG_DVB_CORE is not set |
673 | # CONFIG_VIDEO_MEDIA is not set | ||
674 | |||
675 | # | ||
676 | # Multimedia drivers | ||
677 | # | ||
664 | # CONFIG_DAB is not set | 678 | # CONFIG_DAB is not set |
665 | 679 | ||
666 | # | 680 | # |
@@ -678,8 +692,8 @@ CONFIG_FB=y | |||
678 | # CONFIG_FB_SYS_FILLRECT is not set | 692 | # CONFIG_FB_SYS_FILLRECT is not set |
679 | # CONFIG_FB_SYS_COPYAREA is not set | 693 | # CONFIG_FB_SYS_COPYAREA is not set |
680 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 694 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
695 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
681 | # CONFIG_FB_SYS_FOPS is not set | 696 | # CONFIG_FB_SYS_FOPS is not set |
682 | CONFIG_FB_DEFERRED_IO=y | ||
683 | # CONFIG_FB_SVGALIB is not set | 697 | # CONFIG_FB_SVGALIB is not set |
684 | # CONFIG_FB_MACMODES is not set | 698 | # CONFIG_FB_MACMODES is not set |
685 | # CONFIG_FB_BACKLIGHT is not set | 699 | # CONFIG_FB_BACKLIGHT is not set |
@@ -726,11 +740,8 @@ CONFIG_HIDRAW=y | |||
726 | # CONFIG_MMC is not set | 740 | # CONFIG_MMC is not set |
727 | # CONFIG_MEMSTICK is not set | 741 | # CONFIG_MEMSTICK is not set |
728 | # CONFIG_NEW_LEDS is not set | 742 | # CONFIG_NEW_LEDS is not set |
743 | # CONFIG_ACCESSIBILITY is not set | ||
729 | # CONFIG_RTC_CLASS is not set | 744 | # CONFIG_RTC_CLASS is not set |
730 | |||
731 | # | ||
732 | # Userspace I/O | ||
733 | # | ||
734 | # CONFIG_UIO is not set | 745 | # CONFIG_UIO is not set |
735 | 746 | ||
736 | # | 747 | # |
@@ -756,16 +767,15 @@ CONFIG_JFS_FS=m | |||
756 | # CONFIG_JFS_SECURITY is not set | 767 | # CONFIG_JFS_SECURITY is not set |
757 | # CONFIG_JFS_DEBUG is not set | 768 | # CONFIG_JFS_DEBUG is not set |
758 | # CONFIG_JFS_STATISTICS is not set | 769 | # CONFIG_JFS_STATISTICS is not set |
759 | CONFIG_FS_POSIX_ACL=y | 770 | # CONFIG_FS_POSIX_ACL is not set |
760 | CONFIG_XFS_FS=m | 771 | CONFIG_XFS_FS=m |
761 | # CONFIG_XFS_QUOTA is not set | 772 | # CONFIG_XFS_QUOTA is not set |
762 | # CONFIG_XFS_SECURITY is not set | ||
763 | # CONFIG_XFS_POSIX_ACL is not set | 773 | # CONFIG_XFS_POSIX_ACL is not set |
764 | # CONFIG_XFS_RT is not set | 774 | # CONFIG_XFS_RT is not set |
765 | CONFIG_GFS2_FS=m | 775 | # CONFIG_XFS_DEBUG is not set |
766 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
767 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
768 | CONFIG_OCFS2_FS=m | 776 | CONFIG_OCFS2_FS=m |
777 | CONFIG_OCFS2_FS_O2CB=m | ||
778 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
769 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 779 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
770 | # CONFIG_OCFS2_DEBUG_FS is not set | 780 | # CONFIG_OCFS2_DEBUG_FS is not set |
771 | CONFIG_DNOTIFY=y | 781 | CONFIG_DNOTIFY=y |
@@ -837,12 +847,10 @@ CONFIG_NFS_FS=y | |||
837 | CONFIG_NFS_V3=y | 847 | CONFIG_NFS_V3=y |
838 | # CONFIG_NFS_V3_ACL is not set | 848 | # CONFIG_NFS_V3_ACL is not set |
839 | CONFIG_NFS_V4=y | 849 | CONFIG_NFS_V4=y |
840 | # CONFIG_NFS_DIRECTIO is not set | ||
841 | CONFIG_NFSD=m | 850 | CONFIG_NFSD=m |
842 | CONFIG_NFSD_V3=y | 851 | CONFIG_NFSD_V3=y |
843 | # CONFIG_NFSD_V3_ACL is not set | 852 | # CONFIG_NFSD_V3_ACL is not set |
844 | # CONFIG_NFSD_V4 is not set | 853 | # CONFIG_NFSD_V4 is not set |
845 | CONFIG_NFSD_TCP=y | ||
846 | CONFIG_ROOT_NFS=y | 854 | CONFIG_ROOT_NFS=y |
847 | CONFIG_LOCKD=y | 855 | CONFIG_LOCKD=y |
848 | CONFIG_LOCKD_V4=y | 856 | CONFIG_LOCKD_V4=y |
@@ -917,6 +925,7 @@ CONFIG_DLM=m | |||
917 | # CONFIG_PRINTK_TIME is not set | 925 | # CONFIG_PRINTK_TIME is not set |
918 | CONFIG_ENABLE_WARN_DEPRECATED=y | 926 | CONFIG_ENABLE_WARN_DEPRECATED=y |
919 | CONFIG_ENABLE_MUST_CHECK=y | 927 | CONFIG_ENABLE_MUST_CHECK=y |
928 | CONFIG_FRAME_WARN=1024 | ||
920 | CONFIG_MAGIC_SYSRQ=y | 929 | CONFIG_MAGIC_SYSRQ=y |
921 | # CONFIG_UNUSED_SYMBOLS is not set | 930 | # CONFIG_UNUSED_SYMBOLS is not set |
922 | # CONFIG_DEBUG_FS is not set | 931 | # CONFIG_DEBUG_FS is not set |
@@ -936,53 +945,82 @@ CONFIG_ASYNC_CORE=m | |||
936 | CONFIG_ASYNC_MEMCPY=m | 945 | CONFIG_ASYNC_MEMCPY=m |
937 | CONFIG_ASYNC_XOR=m | 946 | CONFIG_ASYNC_XOR=m |
938 | CONFIG_CRYPTO=y | 947 | CONFIG_CRYPTO=y |
948 | |||
949 | # | ||
950 | # Crypto core or helper | ||
951 | # | ||
939 | CONFIG_CRYPTO_ALGAPI=y | 952 | CONFIG_CRYPTO_ALGAPI=y |
940 | CONFIG_CRYPTO_AEAD=m | 953 | CONFIG_CRYPTO_AEAD=m |
941 | CONFIG_CRYPTO_BLKCIPHER=y | 954 | CONFIG_CRYPTO_BLKCIPHER=y |
942 | CONFIG_CRYPTO_SEQIV=m | ||
943 | CONFIG_CRYPTO_HASH=y | 955 | CONFIG_CRYPTO_HASH=y |
944 | CONFIG_CRYPTO_MANAGER=y | 956 | CONFIG_CRYPTO_MANAGER=y |
957 | CONFIG_CRYPTO_GF128MUL=m | ||
958 | CONFIG_CRYPTO_NULL=m | ||
959 | CONFIG_CRYPTO_CRYPTD=m | ||
960 | CONFIG_CRYPTO_AUTHENC=m | ||
961 | CONFIG_CRYPTO_TEST=m | ||
962 | |||
963 | # | ||
964 | # Authenticated Encryption with Associated Data | ||
965 | # | ||
966 | CONFIG_CRYPTO_CCM=m | ||
967 | CONFIG_CRYPTO_GCM=m | ||
968 | CONFIG_CRYPTO_SEQIV=m | ||
969 | |||
970 | # | ||
971 | # Block modes | ||
972 | # | ||
973 | CONFIG_CRYPTO_CBC=y | ||
974 | CONFIG_CRYPTO_CTR=m | ||
975 | CONFIG_CRYPTO_CTS=m | ||
976 | CONFIG_CRYPTO_ECB=m | ||
977 | CONFIG_CRYPTO_LRW=m | ||
978 | CONFIG_CRYPTO_PCBC=m | ||
979 | CONFIG_CRYPTO_XTS=m | ||
980 | |||
981 | # | ||
982 | # Hash modes | ||
983 | # | ||
945 | CONFIG_CRYPTO_HMAC=y | 984 | CONFIG_CRYPTO_HMAC=y |
946 | CONFIG_CRYPTO_XCBC=m | 985 | CONFIG_CRYPTO_XCBC=m |
947 | CONFIG_CRYPTO_NULL=m | 986 | |
987 | # | ||
988 | # Digest | ||
989 | # | ||
990 | CONFIG_CRYPTO_CRC32C=m | ||
948 | CONFIG_CRYPTO_MD4=m | 991 | CONFIG_CRYPTO_MD4=m |
949 | CONFIG_CRYPTO_MD5=y | 992 | CONFIG_CRYPTO_MD5=y |
993 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
950 | CONFIG_CRYPTO_SHA1=m | 994 | CONFIG_CRYPTO_SHA1=m |
951 | CONFIG_CRYPTO_SHA256=m | 995 | CONFIG_CRYPTO_SHA256=m |
952 | CONFIG_CRYPTO_SHA512=m | 996 | CONFIG_CRYPTO_SHA512=m |
953 | CONFIG_CRYPTO_WP512=m | ||
954 | CONFIG_CRYPTO_TGR192=m | 997 | CONFIG_CRYPTO_TGR192=m |
955 | CONFIG_CRYPTO_GF128MUL=m | 998 | CONFIG_CRYPTO_WP512=m |
956 | CONFIG_CRYPTO_ECB=m | 999 | |
957 | CONFIG_CRYPTO_CBC=y | 1000 | # |
958 | CONFIG_CRYPTO_PCBC=m | 1001 | # Ciphers |
959 | CONFIG_CRYPTO_LRW=m | 1002 | # |
960 | CONFIG_CRYPTO_XTS=m | ||
961 | CONFIG_CRYPTO_CTR=m | ||
962 | CONFIG_CRYPTO_GCM=m | ||
963 | CONFIG_CRYPTO_CCM=m | ||
964 | CONFIG_CRYPTO_CRYPTD=m | ||
965 | CONFIG_CRYPTO_DES=y | ||
966 | CONFIG_CRYPTO_FCRYPT=m | ||
967 | CONFIG_CRYPTO_BLOWFISH=m | ||
968 | CONFIG_CRYPTO_TWOFISH=m | ||
969 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
970 | CONFIG_CRYPTO_SERPENT=m | ||
971 | CONFIG_CRYPTO_AES=m | 1003 | CONFIG_CRYPTO_AES=m |
1004 | CONFIG_CRYPTO_ANUBIS=m | ||
1005 | CONFIG_CRYPTO_ARC4=m | ||
1006 | CONFIG_CRYPTO_BLOWFISH=m | ||
1007 | CONFIG_CRYPTO_CAMELLIA=m | ||
972 | CONFIG_CRYPTO_CAST5=m | 1008 | CONFIG_CRYPTO_CAST5=m |
973 | CONFIG_CRYPTO_CAST6=m | 1009 | CONFIG_CRYPTO_CAST6=m |
974 | CONFIG_CRYPTO_TEA=m | 1010 | CONFIG_CRYPTO_DES=y |
975 | CONFIG_CRYPTO_ARC4=m | 1011 | CONFIG_CRYPTO_FCRYPT=m |
976 | CONFIG_CRYPTO_KHAZAD=m | 1012 | CONFIG_CRYPTO_KHAZAD=m |
977 | CONFIG_CRYPTO_ANUBIS=m | ||
978 | CONFIG_CRYPTO_SEED=m | ||
979 | CONFIG_CRYPTO_SALSA20=m | 1013 | CONFIG_CRYPTO_SALSA20=m |
1014 | CONFIG_CRYPTO_SEED=m | ||
1015 | CONFIG_CRYPTO_SERPENT=m | ||
1016 | CONFIG_CRYPTO_TEA=m | ||
1017 | CONFIG_CRYPTO_TWOFISH=m | ||
1018 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1019 | |||
1020 | # | ||
1021 | # Compression | ||
1022 | # | ||
980 | CONFIG_CRYPTO_DEFLATE=m | 1023 | CONFIG_CRYPTO_DEFLATE=m |
981 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
982 | CONFIG_CRYPTO_CRC32C=m | ||
983 | CONFIG_CRYPTO_CAMELLIA=m | ||
984 | CONFIG_CRYPTO_TEST=m | ||
985 | CONFIG_CRYPTO_AUTHENC=m | ||
986 | CONFIG_CRYPTO_LZO=m | 1024 | CONFIG_CRYPTO_LZO=m |
987 | # CONFIG_CRYPTO_HW is not set | 1025 | # CONFIG_CRYPTO_HW is not set |
988 | 1026 | ||
@@ -990,9 +1028,11 @@ CONFIG_CRYPTO_LZO=m | |||
990 | # Library routines | 1028 | # Library routines |
991 | # | 1029 | # |
992 | CONFIG_BITREVERSE=y | 1030 | CONFIG_BITREVERSE=y |
1031 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1032 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
993 | CONFIG_CRC_CCITT=m | 1033 | CONFIG_CRC_CCITT=m |
994 | CONFIG_CRC16=m | 1034 | CONFIG_CRC16=m |
995 | # CONFIG_CRC_ITU_T is not set | 1035 | CONFIG_CRC_ITU_T=m |
996 | CONFIG_CRC32=y | 1036 | CONFIG_CRC32=y |
997 | # CONFIG_CRC7 is not set | 1037 | # CONFIG_CRC7 is not set |
998 | CONFIG_LIBCRC32C=m | 1038 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/configs/sun3x_defconfig b/arch/m68k/configs/sun3x_defconfig index f18154f1ef1f..431513937498 100644 --- a/arch/m68k/configs/sun3x_defconfig +++ b/arch/m68k/configs/sun3x_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc8 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Wed Apr 2 20:46:23 2008 | 4 | # Sun May 18 14:44:54 2008 |
5 | # | 5 | # |
6 | CONFIG_M68K=y | 6 | CONFIG_M68K=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -52,6 +52,7 @@ CONFIG_SYSCTL=y | |||
52 | # CONFIG_EMBEDDED is not set | 52 | # CONFIG_EMBEDDED is not set |
53 | CONFIG_UID16=y | 53 | CONFIG_UID16=y |
54 | CONFIG_SYSCTL_SYSCALL=y | 54 | CONFIG_SYSCTL_SYSCALL=y |
55 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
55 | CONFIG_KALLSYMS=y | 56 | CONFIG_KALLSYMS=y |
56 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 57 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
57 | CONFIG_HOTPLUG=y | 58 | CONFIG_HOTPLUG=y |
@@ -76,12 +77,14 @@ CONFIG_SLAB=y | |||
76 | # CONFIG_HAVE_OPROFILE is not set | 77 | # CONFIG_HAVE_OPROFILE is not set |
77 | # CONFIG_HAVE_KPROBES is not set | 78 | # CONFIG_HAVE_KPROBES is not set |
78 | # CONFIG_HAVE_KRETPROBES is not set | 79 | # CONFIG_HAVE_KRETPROBES is not set |
80 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
79 | CONFIG_PROC_PAGE_MONITOR=y | 81 | CONFIG_PROC_PAGE_MONITOR=y |
80 | CONFIG_SLABINFO=y | 82 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 83 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 84 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 85 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 86 | CONFIG_MODULES=y |
87 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | CONFIG_MODULE_UNLOAD=y | 88 | CONFIG_MODULE_UNLOAD=y |
86 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 89 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
87 | # CONFIG_MODVERSIONS is not set | 90 | # CONFIG_MODVERSIONS is not set |
@@ -141,6 +144,7 @@ CONFIG_FLAT_NODE_MEM_MAP=y | |||
141 | CONFIG_NEED_MULTIPLE_NODES=y | 144 | CONFIG_NEED_MULTIPLE_NODES=y |
142 | # CONFIG_SPARSEMEM_STATIC is not set | 145 | # CONFIG_SPARSEMEM_STATIC is not set |
143 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 146 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
147 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
144 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 148 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
145 | # CONFIG_RESOURCES_64BIT is not set | 149 | # CONFIG_RESOURCES_64BIT is not set |
146 | CONFIG_ZONE_DMA_FLAG=1 | 150 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -219,8 +223,10 @@ CONFIG_INET6_XFRM_MODE_TUNNEL=m | |||
219 | CONFIG_INET6_XFRM_MODE_BEET=m | 223 | CONFIG_INET6_XFRM_MODE_BEET=m |
220 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | 224 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m |
221 | CONFIG_IPV6_SIT=m | 225 | CONFIG_IPV6_SIT=m |
226 | CONFIG_IPV6_NDISC_NODETYPE=y | ||
222 | CONFIG_IPV6_TUNNEL=m | 227 | CONFIG_IPV6_TUNNEL=m |
223 | # CONFIG_IPV6_MULTIPLE_TABLES is not set | 228 | # CONFIG_IPV6_MULTIPLE_TABLES is not set |
229 | # CONFIG_IPV6_MROUTE is not set | ||
224 | # CONFIG_NETWORK_SECMARK is not set | 230 | # CONFIG_NETWORK_SECMARK is not set |
225 | CONFIG_NETFILTER=y | 231 | CONFIG_NETFILTER=y |
226 | # CONFIG_NETFILTER_DEBUG is not set | 232 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -236,6 +242,7 @@ CONFIG_NF_CONNTRACK=m | |||
236 | CONFIG_NF_CT_ACCT=y | 242 | CONFIG_NF_CT_ACCT=y |
237 | CONFIG_NF_CONNTRACK_MARK=y | 243 | CONFIG_NF_CONNTRACK_MARK=y |
238 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 244 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
245 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
239 | CONFIG_NF_CT_PROTO_GRE=m | 246 | CONFIG_NF_CT_PROTO_GRE=m |
240 | CONFIG_NF_CT_PROTO_SCTP=m | 247 | CONFIG_NF_CT_PROTO_SCTP=m |
241 | CONFIG_NF_CT_PROTO_UDPLITE=m | 248 | CONFIG_NF_CT_PROTO_UDPLITE=m |
@@ -314,6 +321,8 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
314 | CONFIG_IP_NF_TARGET_NETMAP=m | 321 | CONFIG_IP_NF_TARGET_NETMAP=m |
315 | CONFIG_NF_NAT_SNMP_BASIC=m | 322 | CONFIG_NF_NAT_SNMP_BASIC=m |
316 | CONFIG_NF_NAT_PROTO_GRE=m | 323 | CONFIG_NF_NAT_PROTO_GRE=m |
324 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
325 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
317 | CONFIG_NF_NAT_FTP=m | 326 | CONFIG_NF_NAT_FTP=m |
318 | CONFIG_NF_NAT_IRC=m | 327 | CONFIG_NF_NAT_IRC=m |
319 | CONFIG_NF_NAT_TFTP=m | 328 | CONFIG_NF_NAT_TFTP=m |
@@ -407,8 +416,6 @@ CONFIG_IEEE80211=m | |||
407 | CONFIG_IEEE80211_CRYPT_WEP=m | 416 | CONFIG_IEEE80211_CRYPT_WEP=m |
408 | CONFIG_IEEE80211_CRYPT_CCMP=m | 417 | CONFIG_IEEE80211_CRYPT_CCMP=m |
409 | CONFIG_IEEE80211_CRYPT_TKIP=m | 418 | CONFIG_IEEE80211_CRYPT_TKIP=m |
410 | CONFIG_IEEE80211_SOFTMAC=m | ||
411 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
412 | # CONFIG_RFKILL is not set | 419 | # CONFIG_RFKILL is not set |
413 | # CONFIG_NET_9P is not set | 420 | # CONFIG_NET_9P is not set |
414 | 421 | ||
@@ -539,6 +546,7 @@ CONFIG_SUN3LANCE=y | |||
539 | # | 546 | # |
540 | # CONFIG_WLAN_PRE80211 is not set | 547 | # CONFIG_WLAN_PRE80211 is not set |
541 | # CONFIG_WLAN_80211 is not set | 548 | # CONFIG_WLAN_80211 is not set |
549 | # CONFIG_IWLWIFI_LEDS is not set | ||
542 | # CONFIG_WAN is not set | 550 | # CONFIG_WAN is not set |
543 | CONFIG_PPP=m | 551 | CONFIG_PPP=m |
544 | # CONFIG_PPP_MULTILINK is not set | 552 | # CONFIG_PPP_MULTILINK is not set |
@@ -622,6 +630,7 @@ CONFIG_VT=y | |||
622 | CONFIG_VT_CONSOLE=y | 630 | CONFIG_VT_CONSOLE=y |
623 | CONFIG_HW_CONSOLE=y | 631 | CONFIG_HW_CONSOLE=y |
624 | CONFIG_VT_HW_CONSOLE_BINDING=y | 632 | CONFIG_VT_HW_CONSOLE_BINDING=y |
633 | # CONFIG_DEVKMEM is not set | ||
625 | # CONFIG_SERIAL_NONSTANDARD is not set | 634 | # CONFIG_SERIAL_NONSTANDARD is not set |
626 | 635 | ||
627 | # | 636 | # |
@@ -643,12 +652,7 @@ CONFIG_GEN_RTC_X=y | |||
643 | # CONFIG_RAW_DRIVER is not set | 652 | # CONFIG_RAW_DRIVER is not set |
644 | # CONFIG_TCG_TPM is not set | 653 | # CONFIG_TCG_TPM is not set |
645 | # CONFIG_I2C is not set | 654 | # CONFIG_I2C is not set |
646 | |||
647 | # | ||
648 | # SPI support | ||
649 | # | ||
650 | # CONFIG_SPI is not set | 655 | # CONFIG_SPI is not set |
651 | # CONFIG_SPI_MASTER is not set | ||
652 | # CONFIG_W1 is not set | 656 | # CONFIG_W1 is not set |
653 | # CONFIG_POWER_SUPPLY is not set | 657 | # CONFIG_POWER_SUPPLY is not set |
654 | # CONFIG_HWMON is not set | 658 | # CONFIG_HWMON is not set |
@@ -665,12 +669,22 @@ CONFIG_SSB_POSSIBLE=y | |||
665 | # Multifunction device drivers | 669 | # Multifunction device drivers |
666 | # | 670 | # |
667 | # CONFIG_MFD_SM501 is not set | 671 | # CONFIG_MFD_SM501 is not set |
672 | # CONFIG_HTC_PASIC3 is not set | ||
668 | 673 | ||
669 | # | 674 | # |
670 | # Multimedia devices | 675 | # Multimedia devices |
671 | # | 676 | # |
677 | |||
678 | # | ||
679 | # Multimedia core support | ||
680 | # | ||
672 | # CONFIG_VIDEO_DEV is not set | 681 | # CONFIG_VIDEO_DEV is not set |
673 | # CONFIG_DVB_CORE is not set | 682 | # CONFIG_DVB_CORE is not set |
683 | # CONFIG_VIDEO_MEDIA is not set | ||
684 | |||
685 | # | ||
686 | # Multimedia drivers | ||
687 | # | ||
674 | # CONFIG_DAB is not set | 688 | # CONFIG_DAB is not set |
675 | 689 | ||
676 | # | 690 | # |
@@ -688,8 +702,8 @@ CONFIG_FB=y | |||
688 | # CONFIG_FB_SYS_FILLRECT is not set | 702 | # CONFIG_FB_SYS_FILLRECT is not set |
689 | # CONFIG_FB_SYS_COPYAREA is not set | 703 | # CONFIG_FB_SYS_COPYAREA is not set |
690 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 704 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
705 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
691 | # CONFIG_FB_SYS_FOPS is not set | 706 | # CONFIG_FB_SYS_FOPS is not set |
692 | CONFIG_FB_DEFERRED_IO=y | ||
693 | # CONFIG_FB_SVGALIB is not set | 707 | # CONFIG_FB_SVGALIB is not set |
694 | # CONFIG_FB_MACMODES is not set | 708 | # CONFIG_FB_MACMODES is not set |
695 | # CONFIG_FB_BACKLIGHT is not set | 709 | # CONFIG_FB_BACKLIGHT is not set |
@@ -736,11 +750,8 @@ CONFIG_HIDRAW=y | |||
736 | # CONFIG_MMC is not set | 750 | # CONFIG_MMC is not set |
737 | # CONFIG_MEMSTICK is not set | 751 | # CONFIG_MEMSTICK is not set |
738 | # CONFIG_NEW_LEDS is not set | 752 | # CONFIG_NEW_LEDS is not set |
753 | # CONFIG_ACCESSIBILITY is not set | ||
739 | # CONFIG_RTC_CLASS is not set | 754 | # CONFIG_RTC_CLASS is not set |
740 | |||
741 | # | ||
742 | # Userspace I/O | ||
743 | # | ||
744 | # CONFIG_UIO is not set | 755 | # CONFIG_UIO is not set |
745 | 756 | ||
746 | # | 757 | # |
@@ -766,16 +777,15 @@ CONFIG_JFS_FS=m | |||
766 | # CONFIG_JFS_SECURITY is not set | 777 | # CONFIG_JFS_SECURITY is not set |
767 | # CONFIG_JFS_DEBUG is not set | 778 | # CONFIG_JFS_DEBUG is not set |
768 | # CONFIG_JFS_STATISTICS is not set | 779 | # CONFIG_JFS_STATISTICS is not set |
769 | CONFIG_FS_POSIX_ACL=y | 780 | # CONFIG_FS_POSIX_ACL is not set |
770 | CONFIG_XFS_FS=m | 781 | CONFIG_XFS_FS=m |
771 | # CONFIG_XFS_QUOTA is not set | 782 | # CONFIG_XFS_QUOTA is not set |
772 | # CONFIG_XFS_SECURITY is not set | ||
773 | # CONFIG_XFS_POSIX_ACL is not set | 783 | # CONFIG_XFS_POSIX_ACL is not set |
774 | # CONFIG_XFS_RT is not set | 784 | # CONFIG_XFS_RT is not set |
775 | CONFIG_GFS2_FS=m | 785 | # CONFIG_XFS_DEBUG is not set |
776 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | ||
777 | CONFIG_GFS2_FS_LOCKING_DLM=m | ||
778 | CONFIG_OCFS2_FS=m | 786 | CONFIG_OCFS2_FS=m |
787 | CONFIG_OCFS2_FS_O2CB=m | ||
788 | CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m | ||
779 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set | 789 | # CONFIG_OCFS2_DEBUG_MASKLOG is not set |
780 | # CONFIG_OCFS2_DEBUG_FS is not set | 790 | # CONFIG_OCFS2_DEBUG_FS is not set |
781 | CONFIG_DNOTIFY=y | 791 | CONFIG_DNOTIFY=y |
@@ -847,12 +857,10 @@ CONFIG_NFS_FS=y | |||
847 | CONFIG_NFS_V3=y | 857 | CONFIG_NFS_V3=y |
848 | # CONFIG_NFS_V3_ACL is not set | 858 | # CONFIG_NFS_V3_ACL is not set |
849 | CONFIG_NFS_V4=y | 859 | CONFIG_NFS_V4=y |
850 | # CONFIG_NFS_DIRECTIO is not set | ||
851 | CONFIG_NFSD=m | 860 | CONFIG_NFSD=m |
852 | CONFIG_NFSD_V3=y | 861 | CONFIG_NFSD_V3=y |
853 | # CONFIG_NFSD_V3_ACL is not set | 862 | # CONFIG_NFSD_V3_ACL is not set |
854 | # CONFIG_NFSD_V4 is not set | 863 | # CONFIG_NFSD_V4 is not set |
855 | CONFIG_NFSD_TCP=y | ||
856 | CONFIG_ROOT_NFS=y | 864 | CONFIG_ROOT_NFS=y |
857 | CONFIG_LOCKD=y | 865 | CONFIG_LOCKD=y |
858 | CONFIG_LOCKD_V4=y | 866 | CONFIG_LOCKD_V4=y |
@@ -927,6 +935,7 @@ CONFIG_DLM=m | |||
927 | # CONFIG_PRINTK_TIME is not set | 935 | # CONFIG_PRINTK_TIME is not set |
928 | CONFIG_ENABLE_WARN_DEPRECATED=y | 936 | CONFIG_ENABLE_WARN_DEPRECATED=y |
929 | CONFIG_ENABLE_MUST_CHECK=y | 937 | CONFIG_ENABLE_MUST_CHECK=y |
938 | CONFIG_FRAME_WARN=1024 | ||
930 | CONFIG_MAGIC_SYSRQ=y | 939 | CONFIG_MAGIC_SYSRQ=y |
931 | # CONFIG_UNUSED_SYMBOLS is not set | 940 | # CONFIG_UNUSED_SYMBOLS is not set |
932 | # CONFIG_DEBUG_FS is not set | 941 | # CONFIG_DEBUG_FS is not set |
@@ -946,53 +955,82 @@ CONFIG_ASYNC_CORE=m | |||
946 | CONFIG_ASYNC_MEMCPY=m | 955 | CONFIG_ASYNC_MEMCPY=m |
947 | CONFIG_ASYNC_XOR=m | 956 | CONFIG_ASYNC_XOR=m |
948 | CONFIG_CRYPTO=y | 957 | CONFIG_CRYPTO=y |
958 | |||
959 | # | ||
960 | # Crypto core or helper | ||
961 | # | ||
949 | CONFIG_CRYPTO_ALGAPI=y | 962 | CONFIG_CRYPTO_ALGAPI=y |
950 | CONFIG_CRYPTO_AEAD=m | 963 | CONFIG_CRYPTO_AEAD=m |
951 | CONFIG_CRYPTO_BLKCIPHER=y | 964 | CONFIG_CRYPTO_BLKCIPHER=y |
952 | CONFIG_CRYPTO_SEQIV=m | ||
953 | CONFIG_CRYPTO_HASH=y | 965 | CONFIG_CRYPTO_HASH=y |
954 | CONFIG_CRYPTO_MANAGER=y | 966 | CONFIG_CRYPTO_MANAGER=y |
967 | CONFIG_CRYPTO_GF128MUL=m | ||
968 | CONFIG_CRYPTO_NULL=m | ||
969 | CONFIG_CRYPTO_CRYPTD=m | ||
970 | CONFIG_CRYPTO_AUTHENC=m | ||
971 | CONFIG_CRYPTO_TEST=m | ||
972 | |||
973 | # | ||
974 | # Authenticated Encryption with Associated Data | ||
975 | # | ||
976 | CONFIG_CRYPTO_CCM=m | ||
977 | CONFIG_CRYPTO_GCM=m | ||
978 | CONFIG_CRYPTO_SEQIV=m | ||
979 | |||
980 | # | ||
981 | # Block modes | ||
982 | # | ||
983 | CONFIG_CRYPTO_CBC=y | ||
984 | CONFIG_CRYPTO_CTR=m | ||
985 | CONFIG_CRYPTO_CTS=m | ||
986 | CONFIG_CRYPTO_ECB=m | ||
987 | CONFIG_CRYPTO_LRW=m | ||
988 | CONFIG_CRYPTO_PCBC=m | ||
989 | CONFIG_CRYPTO_XTS=m | ||
990 | |||
991 | # | ||
992 | # Hash modes | ||
993 | # | ||
955 | CONFIG_CRYPTO_HMAC=y | 994 | CONFIG_CRYPTO_HMAC=y |
956 | CONFIG_CRYPTO_XCBC=m | 995 | CONFIG_CRYPTO_XCBC=m |
957 | CONFIG_CRYPTO_NULL=m | 996 | |
997 | # | ||
998 | # Digest | ||
999 | # | ||
1000 | CONFIG_CRYPTO_CRC32C=m | ||
958 | CONFIG_CRYPTO_MD4=m | 1001 | CONFIG_CRYPTO_MD4=m |
959 | CONFIG_CRYPTO_MD5=y | 1002 | CONFIG_CRYPTO_MD5=y |
1003 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
960 | CONFIG_CRYPTO_SHA1=m | 1004 | CONFIG_CRYPTO_SHA1=m |
961 | CONFIG_CRYPTO_SHA256=m | 1005 | CONFIG_CRYPTO_SHA256=m |
962 | CONFIG_CRYPTO_SHA512=m | 1006 | CONFIG_CRYPTO_SHA512=m |
963 | CONFIG_CRYPTO_WP512=m | ||
964 | CONFIG_CRYPTO_TGR192=m | 1007 | CONFIG_CRYPTO_TGR192=m |
965 | CONFIG_CRYPTO_GF128MUL=m | 1008 | CONFIG_CRYPTO_WP512=m |
966 | CONFIG_CRYPTO_ECB=m | 1009 | |
967 | CONFIG_CRYPTO_CBC=y | 1010 | # |
968 | CONFIG_CRYPTO_PCBC=m | 1011 | # Ciphers |
969 | CONFIG_CRYPTO_LRW=m | 1012 | # |
970 | CONFIG_CRYPTO_XTS=m | ||
971 | CONFIG_CRYPTO_CTR=m | ||
972 | CONFIG_CRYPTO_GCM=m | ||
973 | CONFIG_CRYPTO_CCM=m | ||
974 | CONFIG_CRYPTO_CRYPTD=m | ||
975 | CONFIG_CRYPTO_DES=y | ||
976 | CONFIG_CRYPTO_FCRYPT=m | ||
977 | CONFIG_CRYPTO_BLOWFISH=m | ||
978 | CONFIG_CRYPTO_TWOFISH=m | ||
979 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
980 | CONFIG_CRYPTO_SERPENT=m | ||
981 | CONFIG_CRYPTO_AES=m | 1013 | CONFIG_CRYPTO_AES=m |
1014 | CONFIG_CRYPTO_ANUBIS=m | ||
1015 | CONFIG_CRYPTO_ARC4=m | ||
1016 | CONFIG_CRYPTO_BLOWFISH=m | ||
1017 | CONFIG_CRYPTO_CAMELLIA=m | ||
982 | CONFIG_CRYPTO_CAST5=m | 1018 | CONFIG_CRYPTO_CAST5=m |
983 | CONFIG_CRYPTO_CAST6=m | 1019 | CONFIG_CRYPTO_CAST6=m |
984 | CONFIG_CRYPTO_TEA=m | 1020 | CONFIG_CRYPTO_DES=y |
985 | CONFIG_CRYPTO_ARC4=m | 1021 | CONFIG_CRYPTO_FCRYPT=m |
986 | CONFIG_CRYPTO_KHAZAD=m | 1022 | CONFIG_CRYPTO_KHAZAD=m |
987 | CONFIG_CRYPTO_ANUBIS=m | ||
988 | CONFIG_CRYPTO_SEED=m | ||
989 | CONFIG_CRYPTO_SALSA20=m | 1023 | CONFIG_CRYPTO_SALSA20=m |
1024 | CONFIG_CRYPTO_SEED=m | ||
1025 | CONFIG_CRYPTO_SERPENT=m | ||
1026 | CONFIG_CRYPTO_TEA=m | ||
1027 | CONFIG_CRYPTO_TWOFISH=m | ||
1028 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1029 | |||
1030 | # | ||
1031 | # Compression | ||
1032 | # | ||
990 | CONFIG_CRYPTO_DEFLATE=m | 1033 | CONFIG_CRYPTO_DEFLATE=m |
991 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
992 | CONFIG_CRYPTO_CRC32C=m | ||
993 | CONFIG_CRYPTO_CAMELLIA=m | ||
994 | CONFIG_CRYPTO_TEST=m | ||
995 | CONFIG_CRYPTO_AUTHENC=m | ||
996 | CONFIG_CRYPTO_LZO=m | 1034 | CONFIG_CRYPTO_LZO=m |
997 | # CONFIG_CRYPTO_HW is not set | 1035 | # CONFIG_CRYPTO_HW is not set |
998 | 1036 | ||
@@ -1000,9 +1038,11 @@ CONFIG_CRYPTO_LZO=m | |||
1000 | # Library routines | 1038 | # Library routines |
1001 | # | 1039 | # |
1002 | CONFIG_BITREVERSE=y | 1040 | CONFIG_BITREVERSE=y |
1041 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1042 | # CONFIG_GENERIC_FIND_NEXT_BIT is not set | ||
1003 | CONFIG_CRC_CCITT=m | 1043 | CONFIG_CRC_CCITT=m |
1004 | CONFIG_CRC16=m | 1044 | CONFIG_CRC16=m |
1005 | # CONFIG_CRC_ITU_T is not set | 1045 | CONFIG_CRC_ITU_T=m |
1006 | CONFIG_CRC32=y | 1046 | CONFIG_CRC32=y |
1007 | # CONFIG_CRC7 is not set | 1047 | # CONFIG_CRC7 is not set |
1008 | CONFIG_LIBCRC32C=m | 1048 | CONFIG_LIBCRC32C=m |
diff --git a/arch/m68k/kernel/head.S b/arch/m68k/kernel/head.S index faa6764f1d13..f513f530de91 100644 --- a/arch/m68k/kernel/head.S +++ b/arch/m68k/kernel/head.S | |||
@@ -1434,7 +1434,7 @@ L(mmu_fixup_done): | |||
1434 | #endif | 1434 | #endif |
1435 | 1435 | ||
1436 | #ifdef CONFIG_HP300 | 1436 | #ifdef CONFIG_HP300 |
1437 | is_not_hp300(1f) | 1437 | is_not_hp300(2f) |
1438 | /* | 1438 | /* |
1439 | * Fix up the iobase register to point to the new location of the LEDs. | 1439 | * Fix up the iobase register to point to the new location of the LEDs. |
1440 | */ | 1440 | */ |
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index 5de4e4ed76ab..7888cdf91f5d 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c | |||
@@ -41,7 +41,6 @@ | |||
41 | * setup. | 41 | * setup. |
42 | */ | 42 | */ |
43 | static struct fs_struct init_fs = INIT_FS; | 43 | static struct fs_struct init_fs = INIT_FS; |
44 | static struct files_struct init_files = INIT_FILES; | ||
45 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 44 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
46 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 45 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
47 | struct mm_struct init_mm = INIT_MM(init_mm); | 46 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/m68k/kernel/setup.c b/arch/m68k/kernel/setup.c index bba650312fd9..a9fb83a8c180 100644 --- a/arch/m68k/kernel/setup.c +++ b/arch/m68k/kernel/setup.c | |||
@@ -41,11 +41,12 @@ | |||
41 | #endif | 41 | #endif |
42 | 42 | ||
43 | unsigned long m68k_machtype; | 43 | unsigned long m68k_machtype; |
44 | unsigned long m68k_cputype; | ||
45 | EXPORT_SYMBOL(m68k_machtype); | 44 | EXPORT_SYMBOL(m68k_machtype); |
45 | unsigned long m68k_cputype; | ||
46 | EXPORT_SYMBOL(m68k_cputype); | 46 | EXPORT_SYMBOL(m68k_cputype); |
47 | unsigned long m68k_fputype; | 47 | unsigned long m68k_fputype; |
48 | unsigned long m68k_mmutype; | 48 | unsigned long m68k_mmutype; |
49 | EXPORT_SYMBOL(m68k_mmutype); | ||
49 | #ifdef CONFIG_VME | 50 | #ifdef CONFIG_VME |
50 | unsigned long vme_brdtype; | 51 | unsigned long vme_brdtype; |
51 | EXPORT_SYMBOL(vme_brdtype); | 52 | EXPORT_SYMBOL(vme_brdtype); |
@@ -345,19 +346,19 @@ void __init setup_arch(char **cmdline_p) | |||
345 | 346 | ||
346 | /* set ISA defs early as possible */ | 347 | /* set ISA defs early as possible */ |
347 | #if defined(CONFIG_ISA) && defined(MULTI_ISA) | 348 | #if defined(CONFIG_ISA) && defined(MULTI_ISA) |
348 | #if defined(CONFIG_Q40) | ||
349 | if (MACH_IS_Q40) { | 349 | if (MACH_IS_Q40) { |
350 | isa_type = Q40_ISA; | 350 | isa_type = ISA_TYPE_Q40; |
351 | isa_sex = 0; | 351 | isa_sex = 0; |
352 | } | 352 | } |
353 | #elif defined(CONFIG_GG2) | 353 | #ifdef CONFIG_GG2 |
354 | if (MACH_IS_AMIGA && AMIGAHW_PRESENT(GG2_ISA)) { | 354 | if (MACH_IS_AMIGA && AMIGAHW_PRESENT(GG2_ISA)) { |
355 | isa_type = GG2_ISA; | 355 | isa_type = ISA_TYPE_GG2; |
356 | isa_sex = 0; | 356 | isa_sex = 0; |
357 | } | 357 | } |
358 | #elif defined(CONFIG_AMIGA_PCMCIA) | 358 | #endif |
359 | #ifdef CONFIG_AMIGA_PCMCIA | ||
359 | if (MACH_IS_AMIGA && AMIGAHW_PRESENT(PCMCIA)) { | 360 | if (MACH_IS_AMIGA && AMIGAHW_PRESENT(PCMCIA)) { |
360 | isa_type = AG_ISA; | 361 | isa_type = ISA_TYPE_AG; |
361 | isa_sex = 1; | 362 | isa_sex = 1; |
362 | } | 363 | } |
363 | #endif | 364 | #endif |
diff --git a/arch/m68k/lib/string.c b/arch/m68k/lib/string.c index 891e1347bc4e..4253f870e54f 100644 --- a/arch/m68k/lib/string.c +++ b/arch/m68k/lib/string.c | |||
@@ -15,6 +15,12 @@ char *strcpy(char *dest, const char *src) | |||
15 | } | 15 | } |
16 | EXPORT_SYMBOL(strcpy); | 16 | EXPORT_SYMBOL(strcpy); |
17 | 17 | ||
18 | char *strcat(char *dest, const char *src) | ||
19 | { | ||
20 | return __kernel_strcpy(dest + __kernel_strlen(dest), src); | ||
21 | } | ||
22 | EXPORT_SYMBOL(strcat); | ||
23 | |||
18 | void *memset(void *s, int c, size_t count) | 24 | void *memset(void *s, int c, size_t count) |
19 | { | 25 | { |
20 | void *xs = s; | 26 | void *xs = s; |
diff --git a/arch/m68knommu/kernel/init_task.c b/arch/m68knommu/kernel/init_task.c index 3897043a126a..344c01aede08 100644 --- a/arch/m68knommu/kernel/init_task.c +++ b/arch/m68knommu/kernel/init_task.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | 14 | ||
15 | static struct fs_struct init_fs = INIT_FS; | 15 | static struct fs_struct init_fs = INIT_FS; |
16 | static struct files_struct init_files = INIT_FILES; | ||
17 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 16 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
18 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 17 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
19 | struct mm_struct init_mm = INIT_MM(init_mm); | 18 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/mips/kernel/init_task.c b/arch/mips/kernel/init_task.c index aeda7f58391b..d72487ad7c15 100644 --- a/arch/mips/kernel/init_task.c +++ b/arch/mips/kernel/init_task.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <asm/pgtable.h> | 10 | #include <asm/pgtable.h> |
11 | 11 | ||
12 | static struct fs_struct init_fs = INIT_FS; | 12 | static struct fs_struct init_fs = INIT_FS; |
13 | static struct files_struct init_files = INIT_FILES; | ||
14 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 13 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
15 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 14 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
16 | struct mm_struct init_mm = INIT_MM(init_mm); | 15 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/mn10300/kernel/init_task.c b/arch/mn10300/kernel/init_task.c index 39fe6882dd1d..af16f6e5c918 100644 --- a/arch/mn10300/kernel/init_task.c +++ b/arch/mn10300/kernel/init_task.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | 20 | ||
21 | static struct fs_struct init_fs = INIT_FS; | 21 | static struct fs_struct init_fs = INIT_FS; |
22 | static struct files_struct init_files = INIT_FILES; | ||
23 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 22 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
24 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 23 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
25 | struct mm_struct init_mm = INIT_MM(init_mm); | 24 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/parisc/hpux/gate.S b/arch/parisc/hpux/gate.S index 38a1c1b8d4e8..f0b18ce89842 100644 --- a/arch/parisc/hpux/gate.S +++ b/arch/parisc/hpux/gate.S | |||
@@ -13,9 +13,10 @@ | |||
13 | #include <asm/unistd.h> | 13 | #include <asm/unistd.h> |
14 | #include <asm/errno.h> | 14 | #include <asm/errno.h> |
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <linux/init.h> | ||
16 | 17 | ||
17 | .level LEVEL | 18 | .level LEVEL |
18 | .text | 19 | __HEAD |
19 | 20 | ||
20 | .import hpux_call_table | 21 | .import hpux_call_table |
21 | .import hpux_syscall_exit,code | 22 | .import hpux_syscall_exit,code |
diff --git a/arch/parisc/hpux/wrappers.S b/arch/parisc/hpux/wrappers.S index 58c53c879c02..ccd3a50c0995 100644 --- a/arch/parisc/hpux/wrappers.S +++ b/arch/parisc/hpux/wrappers.S | |||
@@ -28,9 +28,10 @@ | |||
28 | #include <asm/assembly.h> | 28 | #include <asm/assembly.h> |
29 | #include <asm/signal.h> | 29 | #include <asm/signal.h> |
30 | #include <linux/linkage.h> | 30 | #include <linux/linkage.h> |
31 | #include <linux/init.h> | ||
31 | 32 | ||
32 | .level LEVEL | 33 | .level LEVEL |
33 | .text | 34 | __HEAD |
34 | 35 | ||
35 | /* These should probably go in a header file somewhere. | 36 | /* These should probably go in a header file somewhere. |
36 | * They are duplicated in kernel/wrappers.S | 37 | * They are duplicated in kernel/wrappers.S |
diff --git a/arch/parisc/kernel/Makefile b/arch/parisc/kernel/Makefile index 1f6585a56f97..016d3fc4111c 100644 --- a/arch/parisc/kernel/Makefile +++ b/arch/parisc/kernel/Makefile | |||
@@ -4,9 +4,6 @@ | |||
4 | 4 | ||
5 | extra-y := init_task.o head.o vmlinux.lds | 5 | extra-y := init_task.o head.o vmlinux.lds |
6 | 6 | ||
7 | AFLAGS_entry.o := -traditional | ||
8 | AFLAGS_pacache.o := -traditional | ||
9 | |||
10 | obj-y := cache.o pacache.o setup.o traps.o time.o irq.o \ | 7 | obj-y := cache.o pacache.o setup.o traps.o time.o irq.o \ |
11 | pa7300lc.o syscall.o entry.o sys_parisc.o firmware.o \ | 8 | pa7300lc.o syscall.o entry.o sys_parisc.o firmware.o \ |
12 | ptrace.o hardware.o inventory.o drivers.o \ | 9 | ptrace.o hardware.o inventory.o drivers.o \ |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 111d47284eac..5d0837458c19 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -38,18 +38,11 @@ | |||
38 | #include <asm/thread_info.h> | 38 | #include <asm/thread_info.h> |
39 | 39 | ||
40 | #include <linux/linkage.h> | 40 | #include <linux/linkage.h> |
41 | #include <linux/init.h> | ||
41 | 42 | ||
42 | #ifdef CONFIG_64BIT | 43 | #ifdef CONFIG_64BIT |
43 | #define CMPIB cmpib,* | ||
44 | #define CMPB cmpb,* | ||
45 | #define COND(x) *x | ||
46 | |||
47 | .level 2.0w | 44 | .level 2.0w |
48 | #else | 45 | #else |
49 | #define CMPIB cmpib, | ||
50 | #define CMPB cmpb, | ||
51 | #define COND(x) x | ||
52 | |||
53 | .level 2.0 | 46 | .level 2.0 |
54 | #endif | 47 | #endif |
55 | 48 | ||
@@ -629,7 +622,7 @@ | |||
629 | * the static part of the kernel address space. | 622 | * the static part of the kernel address space. |
630 | */ | 623 | */ |
631 | 624 | ||
632 | .text | 625 | __HEAD |
633 | 626 | ||
634 | .align PAGE_SIZE | 627 | .align PAGE_SIZE |
635 | 628 | ||
@@ -957,9 +950,9 @@ intr_check_sig: | |||
957 | * Only do signals if we are returning to user space | 950 | * Only do signals if we are returning to user space |
958 | */ | 951 | */ |
959 | LDREG PT_IASQ0(%r16), %r20 | 952 | LDREG PT_IASQ0(%r16), %r20 |
960 | CMPIB=,n 0,%r20,intr_restore /* backward */ | 953 | cmpib,COND(=),n 0,%r20,intr_restore /* backward */ |
961 | LDREG PT_IASQ1(%r16), %r20 | 954 | LDREG PT_IASQ1(%r16), %r20 |
962 | CMPIB=,n 0,%r20,intr_restore /* backward */ | 955 | cmpib,COND(=),n 0,%r20,intr_restore /* backward */ |
963 | 956 | ||
964 | copy %r0, %r25 /* long in_syscall = 0 */ | 957 | copy %r0, %r25 /* long in_syscall = 0 */ |
965 | #ifdef CONFIG_64BIT | 958 | #ifdef CONFIG_64BIT |
@@ -1013,10 +1006,10 @@ intr_do_resched: | |||
1013 | * we jump back to intr_restore. | 1006 | * we jump back to intr_restore. |
1014 | */ | 1007 | */ |
1015 | LDREG PT_IASQ0(%r16), %r20 | 1008 | LDREG PT_IASQ0(%r16), %r20 |
1016 | CMPIB= 0, %r20, intr_do_preempt | 1009 | cmpib,COND(=) 0, %r20, intr_do_preempt |
1017 | nop | 1010 | nop |
1018 | LDREG PT_IASQ1(%r16), %r20 | 1011 | LDREG PT_IASQ1(%r16), %r20 |
1019 | CMPIB= 0, %r20, intr_do_preempt | 1012 | cmpib,COND(=) 0, %r20, intr_do_preempt |
1020 | nop | 1013 | nop |
1021 | 1014 | ||
1022 | #ifdef CONFIG_64BIT | 1015 | #ifdef CONFIG_64BIT |
@@ -1045,7 +1038,7 @@ intr_do_preempt: | |||
1045 | /* current_thread_info()->preempt_count */ | 1038 | /* current_thread_info()->preempt_count */ |
1046 | mfctl %cr30, %r1 | 1039 | mfctl %cr30, %r1 |
1047 | LDREG TI_PRE_COUNT(%r1), %r19 | 1040 | LDREG TI_PRE_COUNT(%r1), %r19 |
1048 | CMPIB<> 0, %r19, intr_restore /* if preempt_count > 0 */ | 1041 | cmpib,COND(<>) 0, %r19, intr_restore /* if preempt_count > 0 */ |
1049 | nop /* prev insn branched backwards */ | 1042 | nop /* prev insn branched backwards */ |
1050 | 1043 | ||
1051 | /* check if we interrupted a critical path */ | 1044 | /* check if we interrupted a critical path */ |
@@ -1064,7 +1057,7 @@ intr_do_preempt: | |||
1064 | */ | 1057 | */ |
1065 | 1058 | ||
1066 | intr_extint: | 1059 | intr_extint: |
1067 | CMPIB=,n 0,%r16,1f | 1060 | cmpib,COND(=),n 0,%r16,1f |
1068 | 1061 | ||
1069 | get_stack_use_cr30 | 1062 | get_stack_use_cr30 |
1070 | b,n 2f | 1063 | b,n 2f |
@@ -1099,7 +1092,7 @@ ENDPROC(syscall_exit_rfi) | |||
1099 | 1092 | ||
1100 | ENTRY(intr_save) /* for os_hpmc */ | 1093 | ENTRY(intr_save) /* for os_hpmc */ |
1101 | mfsp %sr7,%r16 | 1094 | mfsp %sr7,%r16 |
1102 | CMPIB=,n 0,%r16,1f | 1095 | cmpib,COND(=),n 0,%r16,1f |
1103 | get_stack_use_cr30 | 1096 | get_stack_use_cr30 |
1104 | b 2f | 1097 | b 2f |
1105 | copy %r8,%r26 | 1098 | copy %r8,%r26 |
@@ -1121,7 +1114,7 @@ ENTRY(intr_save) /* for os_hpmc */ | |||
1121 | * adjust isr/ior below. | 1114 | * adjust isr/ior below. |
1122 | */ | 1115 | */ |
1123 | 1116 | ||
1124 | CMPIB=,n 6,%r26,skip_save_ior | 1117 | cmpib,COND(=),n 6,%r26,skip_save_ior |
1125 | 1118 | ||
1126 | 1119 | ||
1127 | mfctl %cr20, %r16 /* isr */ | 1120 | mfctl %cr20, %r16 /* isr */ |
@@ -1450,11 +1443,11 @@ nadtlb_emulate: | |||
1450 | bb,>=,n %r9,26,nadtlb_nullify /* m bit not set, just nullify */ | 1443 | bb,>=,n %r9,26,nadtlb_nullify /* m bit not set, just nullify */ |
1451 | BL get_register,%r25 | 1444 | BL get_register,%r25 |
1452 | extrw,u %r9,15,5,%r8 /* Get index register # */ | 1445 | extrw,u %r9,15,5,%r8 /* Get index register # */ |
1453 | CMPIB=,n -1,%r1,nadtlb_fault /* have to use slow path */ | 1446 | cmpib,COND(=),n -1,%r1,nadtlb_fault /* have to use slow path */ |
1454 | copy %r1,%r24 | 1447 | copy %r1,%r24 |
1455 | BL get_register,%r25 | 1448 | BL get_register,%r25 |
1456 | extrw,u %r9,10,5,%r8 /* Get base register # */ | 1449 | extrw,u %r9,10,5,%r8 /* Get base register # */ |
1457 | CMPIB=,n -1,%r1,nadtlb_fault /* have to use slow path */ | 1450 | cmpib,COND(=),n -1,%r1,nadtlb_fault /* have to use slow path */ |
1458 | BL set_register,%r25 | 1451 | BL set_register,%r25 |
1459 | add,l %r1,%r24,%r1 /* doesn't affect c/b bits */ | 1452 | add,l %r1,%r24,%r1 /* doesn't affect c/b bits */ |
1460 | 1453 | ||
@@ -1486,7 +1479,7 @@ nadtlb_probe_check: | |||
1486 | cmpb,<>,n %r16,%r17,nadtlb_fault /* Must be probe,[rw]*/ | 1479 | cmpb,<>,n %r16,%r17,nadtlb_fault /* Must be probe,[rw]*/ |
1487 | BL get_register,%r25 /* Find the target register */ | 1480 | BL get_register,%r25 /* Find the target register */ |
1488 | extrw,u %r9,31,5,%r8 /* Get target register */ | 1481 | extrw,u %r9,31,5,%r8 /* Get target register */ |
1489 | CMPIB=,n -1,%r1,nadtlb_fault /* have to use slow path */ | 1482 | cmpib,COND(=),n -1,%r1,nadtlb_fault /* have to use slow path */ |
1490 | BL set_register,%r25 | 1483 | BL set_register,%r25 |
1491 | copy %r0,%r1 /* Write zero to target register */ | 1484 | copy %r0,%r1 /* Write zero to target register */ |
1492 | b nadtlb_nullify /* Nullify return insn */ | 1485 | b nadtlb_nullify /* Nullify return insn */ |
@@ -1570,12 +1563,12 @@ dbit_trap_20w: | |||
1570 | L3_ptep ptp,pte,t0,va,dbit_fault | 1563 | L3_ptep ptp,pte,t0,va,dbit_fault |
1571 | 1564 | ||
1572 | #ifdef CONFIG_SMP | 1565 | #ifdef CONFIG_SMP |
1573 | CMPIB=,n 0,spc,dbit_nolock_20w | 1566 | cmpib,COND(=),n 0,spc,dbit_nolock_20w |
1574 | load32 PA(pa_dbit_lock),t0 | 1567 | load32 PA(pa_dbit_lock),t0 |
1575 | 1568 | ||
1576 | dbit_spin_20w: | 1569 | dbit_spin_20w: |
1577 | LDCW 0(t0),t1 | 1570 | LDCW 0(t0),t1 |
1578 | cmpib,= 0,t1,dbit_spin_20w | 1571 | cmpib,COND(=) 0,t1,dbit_spin_20w |
1579 | nop | 1572 | nop |
1580 | 1573 | ||
1581 | dbit_nolock_20w: | 1574 | dbit_nolock_20w: |
@@ -1586,7 +1579,7 @@ dbit_nolock_20w: | |||
1586 | 1579 | ||
1587 | idtlbt pte,prot | 1580 | idtlbt pte,prot |
1588 | #ifdef CONFIG_SMP | 1581 | #ifdef CONFIG_SMP |
1589 | CMPIB=,n 0,spc,dbit_nounlock_20w | 1582 | cmpib,COND(=),n 0,spc,dbit_nounlock_20w |
1590 | ldi 1,t1 | 1583 | ldi 1,t1 |
1591 | stw t1,0(t0) | 1584 | stw t1,0(t0) |
1592 | 1585 | ||
@@ -1606,7 +1599,7 @@ dbit_trap_11: | |||
1606 | L2_ptep ptp,pte,t0,va,dbit_fault | 1599 | L2_ptep ptp,pte,t0,va,dbit_fault |
1607 | 1600 | ||
1608 | #ifdef CONFIG_SMP | 1601 | #ifdef CONFIG_SMP |
1609 | CMPIB=,n 0,spc,dbit_nolock_11 | 1602 | cmpib,COND(=),n 0,spc,dbit_nolock_11 |
1610 | load32 PA(pa_dbit_lock),t0 | 1603 | load32 PA(pa_dbit_lock),t0 |
1611 | 1604 | ||
1612 | dbit_spin_11: | 1605 | dbit_spin_11: |
@@ -1628,7 +1621,7 @@ dbit_nolock_11: | |||
1628 | 1621 | ||
1629 | mtsp t1, %sr1 /* Restore sr1 */ | 1622 | mtsp t1, %sr1 /* Restore sr1 */ |
1630 | #ifdef CONFIG_SMP | 1623 | #ifdef CONFIG_SMP |
1631 | CMPIB=,n 0,spc,dbit_nounlock_11 | 1624 | cmpib,COND(=),n 0,spc,dbit_nounlock_11 |
1632 | ldi 1,t1 | 1625 | ldi 1,t1 |
1633 | stw t1,0(t0) | 1626 | stw t1,0(t0) |
1634 | 1627 | ||
@@ -1646,7 +1639,7 @@ dbit_trap_20: | |||
1646 | L2_ptep ptp,pte,t0,va,dbit_fault | 1639 | L2_ptep ptp,pte,t0,va,dbit_fault |
1647 | 1640 | ||
1648 | #ifdef CONFIG_SMP | 1641 | #ifdef CONFIG_SMP |
1649 | CMPIB=,n 0,spc,dbit_nolock_20 | 1642 | cmpib,COND(=),n 0,spc,dbit_nolock_20 |
1650 | load32 PA(pa_dbit_lock),t0 | 1643 | load32 PA(pa_dbit_lock),t0 |
1651 | 1644 | ||
1652 | dbit_spin_20: | 1645 | dbit_spin_20: |
@@ -1665,7 +1658,7 @@ dbit_nolock_20: | |||
1665 | idtlbt pte,prot | 1658 | idtlbt pte,prot |
1666 | 1659 | ||
1667 | #ifdef CONFIG_SMP | 1660 | #ifdef CONFIG_SMP |
1668 | CMPIB=,n 0,spc,dbit_nounlock_20 | 1661 | cmpib,COND(=),n 0,spc,dbit_nounlock_20 |
1669 | ldi 1,t1 | 1662 | ldi 1,t1 |
1670 | stw t1,0(t0) | 1663 | stw t1,0(t0) |
1671 | 1664 | ||
@@ -1994,7 +1987,7 @@ ENTRY(syscall_exit) | |||
1994 | 1987 | ||
1995 | /* We can't use "CMPIB<> PER_HPUX" since "im5" field is sign extended */ | 1988 | /* We can't use "CMPIB<> PER_HPUX" since "im5" field is sign extended */ |
1996 | ldo -PER_HPUX(%r19), %r19 | 1989 | ldo -PER_HPUX(%r19), %r19 |
1997 | CMPIB<>,n 0,%r19,1f | 1990 | cmpib,COND(<>),n 0,%r19,1f |
1998 | 1991 | ||
1999 | /* Save other hpux returns if personality is PER_HPUX */ | 1992 | /* Save other hpux returns if personality is PER_HPUX */ |
2000 | STREG %r22,TASK_PT_GR22(%r1) | 1993 | STREG %r22,TASK_PT_GR22(%r1) |
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S index ec2482dc1beb..5680a2c3b13d 100644 --- a/arch/parisc/kernel/head.S +++ b/arch/parisc/kernel/head.S | |||
@@ -32,7 +32,7 @@ ENTRY(boot_args) | |||
32 | .word 0 /* arg3 */ | 32 | .word 0 /* arg3 */ |
33 | END(boot_args) | 33 | END(boot_args) |
34 | 34 | ||
35 | .section .text.head | 35 | __HEAD |
36 | .align 4 | 36 | .align 4 |
37 | .import init_thread_union,data | 37 | .import init_thread_union,data |
38 | .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ | 38 | .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ |
diff --git a/arch/parisc/kernel/hpmc.S b/arch/parisc/kernel/hpmc.S index 2cbf13b3ef11..068322eb8c9b 100644 --- a/arch/parisc/kernel/hpmc.S +++ b/arch/parisc/kernel/hpmc.S | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <asm/pdc.h> | 47 | #include <asm/pdc.h> |
48 | 48 | ||
49 | #include <linux/linkage.h> | 49 | #include <linux/linkage.h> |
50 | #include <linux/init.h> | ||
50 | 51 | ||
51 | /* | 52 | /* |
52 | * stack for os_hpmc, the HPMC handler. | 53 | * stack for os_hpmc, the HPMC handler. |
@@ -76,7 +77,7 @@ ENTRY(hpmc_pim_data) | |||
76 | .block HPMC_PIM_DATA_SIZE | 77 | .block HPMC_PIM_DATA_SIZE |
77 | END(hpmc_pim_data) | 78 | END(hpmc_pim_data) |
78 | 79 | ||
79 | .text | 80 | __HEAD |
80 | 81 | ||
81 | .import intr_save, code | 82 | .import intr_save, code |
82 | ENTRY(os_hpmc) | 83 | ENTRY(os_hpmc) |
diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c index 26198a074d67..f5941c086551 100644 --- a/arch/parisc/kernel/init_task.c +++ b/arch/parisc/kernel/init_task.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/pgalloc.h> | 35 | #include <asm/pgalloc.h> |
36 | 36 | ||
37 | static struct fs_struct init_fs = INIT_FS; | 37 | static struct fs_struct init_fs = INIT_FS; |
38 | static struct files_struct init_files = INIT_FILES; | ||
39 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 38 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
40 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 39 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
41 | struct mm_struct init_mm = INIT_MM(init_mm); | 40 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/parisc/kernel/inventory.c b/arch/parisc/kernel/inventory.c index 4845a6444633..bd1f7f1ff74e 100644 --- a/arch/parisc/kernel/inventory.c +++ b/arch/parisc/kernel/inventory.c | |||
@@ -499,7 +499,7 @@ add_system_map_addresses(struct parisc_device *dev, int num_addrs, | |||
499 | dev->addr = kmalloc(num_addrs * sizeof(unsigned long), GFP_KERNEL); | 499 | dev->addr = kmalloc(num_addrs * sizeof(unsigned long), GFP_KERNEL); |
500 | if(!dev->addr) { | 500 | if(!dev->addr) { |
501 | printk(KERN_ERR "%s %s(): memory allocation failure\n", | 501 | printk(KERN_ERR "%s %s(): memory allocation failure\n", |
502 | __FILE__, __FUNCTION__); | 502 | __FILE__, __func__); |
503 | return; | 503 | return; |
504 | } | 504 | } |
505 | 505 | ||
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 5901092e0196..e3246a5ca74f 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -37,8 +37,9 @@ | |||
37 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
38 | #include <asm/cache.h> | 38 | #include <asm/cache.h> |
39 | #include <linux/linkage.h> | 39 | #include <linux/linkage.h> |
40 | #include <linux/init.h> | ||
40 | 41 | ||
41 | .text | 42 | __HEAD |
42 | .align 128 | 43 | .align 128 |
43 | 44 | ||
44 | ENTRY(flush_tlb_all_local) | 45 | ENTRY(flush_tlb_all_local) |
@@ -85,7 +86,7 @@ ENTRY(flush_tlb_all_local) | |||
85 | LDREG ITLB_OFF_COUNT(%r1), %arg2 | 86 | LDREG ITLB_OFF_COUNT(%r1), %arg2 |
86 | LDREG ITLB_LOOP(%r1), %arg3 | 87 | LDREG ITLB_LOOP(%r1), %arg3 |
87 | 88 | ||
88 | ADDIB= -1, %arg3, fitoneloop /* Preadjust and test */ | 89 | addib,COND(=) -1, %arg3, fitoneloop /* Preadjust and test */ |
89 | movb,<,n %arg3, %r31, fitdone /* If loop < 0, skip */ | 90 | movb,<,n %arg3, %r31, fitdone /* If loop < 0, skip */ |
90 | copy %arg0, %r28 /* Init base addr */ | 91 | copy %arg0, %r28 /* Init base addr */ |
91 | 92 | ||
@@ -95,14 +96,14 @@ fitmanyloop: /* Loop if LOOP >= 2 */ | |||
95 | copy %arg2, %r29 /* Init middle loop count */ | 96 | copy %arg2, %r29 /* Init middle loop count */ |
96 | 97 | ||
97 | fitmanymiddle: /* Loop if LOOP >= 2 */ | 98 | fitmanymiddle: /* Loop if LOOP >= 2 */ |
98 | ADDIB> -1, %r31, fitmanymiddle /* Adjusted inner loop decr */ | 99 | addib,COND(>) -1, %r31, fitmanymiddle /* Adjusted inner loop decr */ |
99 | pitlbe 0(%sr1, %r28) | 100 | pitlbe 0(%sr1, %r28) |
100 | pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */ | 101 | pitlbe,m %arg1(%sr1, %r28) /* Last pitlbe and addr adjust */ |
101 | ADDIB> -1, %r29, fitmanymiddle /* Middle loop decr */ | 102 | addib,COND(>) -1, %r29, fitmanymiddle /* Middle loop decr */ |
102 | copy %arg3, %r31 /* Re-init inner loop count */ | 103 | copy %arg3, %r31 /* Re-init inner loop count */ |
103 | 104 | ||
104 | movb,tr %arg0, %r28, fitmanyloop /* Re-init base addr */ | 105 | movb,tr %arg0, %r28, fitmanyloop /* Re-init base addr */ |
105 | ADDIB<=,n -1, %r22, fitdone /* Outer loop count decr */ | 106 | addib,COND(<=),n -1, %r22, fitdone /* Outer loop count decr */ |
106 | 107 | ||
107 | fitoneloop: /* Loop if LOOP = 1 */ | 108 | fitoneloop: /* Loop if LOOP = 1 */ |
108 | mtsp %r20, %sr1 | 109 | mtsp %r20, %sr1 |
@@ -110,10 +111,10 @@ fitoneloop: /* Loop if LOOP = 1 */ | |||
110 | copy %arg2, %r29 /* init middle loop count */ | 111 | copy %arg2, %r29 /* init middle loop count */ |
111 | 112 | ||
112 | fitonemiddle: /* Loop if LOOP = 1 */ | 113 | fitonemiddle: /* Loop if LOOP = 1 */ |
113 | ADDIB> -1, %r29, fitonemiddle /* Middle loop count decr */ | 114 | addib,COND(>) -1, %r29, fitonemiddle /* Middle loop count decr */ |
114 | pitlbe,m %arg1(%sr1, %r28) /* pitlbe for one loop */ | 115 | pitlbe,m %arg1(%sr1, %r28) /* pitlbe for one loop */ |
115 | 116 | ||
116 | ADDIB> -1, %r22, fitoneloop /* Outer loop count decr */ | 117 | addib,COND(>) -1, %r22, fitoneloop /* Outer loop count decr */ |
117 | add %r21, %r20, %r20 /* increment space */ | 118 | add %r21, %r20, %r20 /* increment space */ |
118 | 119 | ||
119 | fitdone: | 120 | fitdone: |
@@ -128,7 +129,7 @@ fitdone: | |||
128 | LDREG DTLB_OFF_COUNT(%r1), %arg2 | 129 | LDREG DTLB_OFF_COUNT(%r1), %arg2 |
129 | LDREG DTLB_LOOP(%r1), %arg3 | 130 | LDREG DTLB_LOOP(%r1), %arg3 |
130 | 131 | ||
131 | ADDIB= -1, %arg3, fdtoneloop /* Preadjust and test */ | 132 | addib,COND(=) -1, %arg3, fdtoneloop /* Preadjust and test */ |
132 | movb,<,n %arg3, %r31, fdtdone /* If loop < 0, skip */ | 133 | movb,<,n %arg3, %r31, fdtdone /* If loop < 0, skip */ |
133 | copy %arg0, %r28 /* Init base addr */ | 134 | copy %arg0, %r28 /* Init base addr */ |
134 | 135 | ||
@@ -138,14 +139,14 @@ fdtmanyloop: /* Loop if LOOP >= 2 */ | |||
138 | copy %arg2, %r29 /* Init middle loop count */ | 139 | copy %arg2, %r29 /* Init middle loop count */ |
139 | 140 | ||
140 | fdtmanymiddle: /* Loop if LOOP >= 2 */ | 141 | fdtmanymiddle: /* Loop if LOOP >= 2 */ |
141 | ADDIB> -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */ | 142 | addib,COND(>) -1, %r31, fdtmanymiddle /* Adjusted inner loop decr */ |
142 | pdtlbe 0(%sr1, %r28) | 143 | pdtlbe 0(%sr1, %r28) |
143 | pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */ | 144 | pdtlbe,m %arg1(%sr1, %r28) /* Last pdtlbe and addr adjust */ |
144 | ADDIB> -1, %r29, fdtmanymiddle /* Middle loop decr */ | 145 | addib,COND(>) -1, %r29, fdtmanymiddle /* Middle loop decr */ |
145 | copy %arg3, %r31 /* Re-init inner loop count */ | 146 | copy %arg3, %r31 /* Re-init inner loop count */ |
146 | 147 | ||
147 | movb,tr %arg0, %r28, fdtmanyloop /* Re-init base addr */ | 148 | movb,tr %arg0, %r28, fdtmanyloop /* Re-init base addr */ |
148 | ADDIB<=,n -1, %r22,fdtdone /* Outer loop count decr */ | 149 | addib,COND(<=),n -1, %r22,fdtdone /* Outer loop count decr */ |
149 | 150 | ||
150 | fdtoneloop: /* Loop if LOOP = 1 */ | 151 | fdtoneloop: /* Loop if LOOP = 1 */ |
151 | mtsp %r20, %sr1 | 152 | mtsp %r20, %sr1 |
@@ -153,10 +154,10 @@ fdtoneloop: /* Loop if LOOP = 1 */ | |||
153 | copy %arg2, %r29 /* init middle loop count */ | 154 | copy %arg2, %r29 /* init middle loop count */ |
154 | 155 | ||
155 | fdtonemiddle: /* Loop if LOOP = 1 */ | 156 | fdtonemiddle: /* Loop if LOOP = 1 */ |
156 | ADDIB> -1, %r29, fdtonemiddle /* Middle loop count decr */ | 157 | addib,COND(>) -1, %r29, fdtonemiddle /* Middle loop count decr */ |
157 | pdtlbe,m %arg1(%sr1, %r28) /* pdtlbe for one loop */ | 158 | pdtlbe,m %arg1(%sr1, %r28) /* pdtlbe for one loop */ |
158 | 159 | ||
159 | ADDIB> -1, %r22, fdtoneloop /* Outer loop count decr */ | 160 | addib,COND(>) -1, %r22, fdtoneloop /* Outer loop count decr */ |
160 | add %r21, %r20, %r20 /* increment space */ | 161 | add %r21, %r20, %r20 /* increment space */ |
161 | 162 | ||
162 | 163 | ||
@@ -209,18 +210,18 @@ ENTRY(flush_instruction_cache_local) | |||
209 | LDREG ICACHE_COUNT(%r1), %arg2 | 210 | LDREG ICACHE_COUNT(%r1), %arg2 |
210 | LDREG ICACHE_LOOP(%r1), %arg3 | 211 | LDREG ICACHE_LOOP(%r1), %arg3 |
211 | rsm PSW_SM_I, %r22 /* No mmgt ops during loop*/ | 212 | rsm PSW_SM_I, %r22 /* No mmgt ops during loop*/ |
212 | ADDIB= -1, %arg3, fioneloop /* Preadjust and test */ | 213 | addib,COND(=) -1, %arg3, fioneloop /* Preadjust and test */ |
213 | movb,<,n %arg3, %r31, fisync /* If loop < 0, do sync */ | 214 | movb,<,n %arg3, %r31, fisync /* If loop < 0, do sync */ |
214 | 215 | ||
215 | fimanyloop: /* Loop if LOOP >= 2 */ | 216 | fimanyloop: /* Loop if LOOP >= 2 */ |
216 | ADDIB> -1, %r31, fimanyloop /* Adjusted inner loop decr */ | 217 | addib,COND(>) -1, %r31, fimanyloop /* Adjusted inner loop decr */ |
217 | fice %r0(%sr1, %arg0) | 218 | fice %r0(%sr1, %arg0) |
218 | fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */ | 219 | fice,m %arg1(%sr1, %arg0) /* Last fice and addr adjust */ |
219 | movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */ | 220 | movb,tr %arg3, %r31, fimanyloop /* Re-init inner loop count */ |
220 | ADDIB<=,n -1, %arg2, fisync /* Outer loop decr */ | 221 | addib,COND(<=),n -1, %arg2, fisync /* Outer loop decr */ |
221 | 222 | ||
222 | fioneloop: /* Loop if LOOP = 1 */ | 223 | fioneloop: /* Loop if LOOP = 1 */ |
223 | ADDIB> -1, %arg2, fioneloop /* Outer loop count decr */ | 224 | addib,COND(>) -1, %arg2, fioneloop /* Outer loop count decr */ |
224 | fice,m %arg1(%sr1, %arg0) /* Fice for one loop */ | 225 | fice,m %arg1(%sr1, %arg0) /* Fice for one loop */ |
225 | 226 | ||
226 | fisync: | 227 | fisync: |
@@ -250,18 +251,18 @@ ENTRY(flush_data_cache_local) | |||
250 | LDREG DCACHE_COUNT(%r1), %arg2 | 251 | LDREG DCACHE_COUNT(%r1), %arg2 |
251 | LDREG DCACHE_LOOP(%r1), %arg3 | 252 | LDREG DCACHE_LOOP(%r1), %arg3 |
252 | rsm PSW_SM_I, %r22 | 253 | rsm PSW_SM_I, %r22 |
253 | ADDIB= -1, %arg3, fdoneloop /* Preadjust and test */ | 254 | addib,COND(=) -1, %arg3, fdoneloop /* Preadjust and test */ |
254 | movb,<,n %arg3, %r31, fdsync /* If loop < 0, do sync */ | 255 | movb,<,n %arg3, %r31, fdsync /* If loop < 0, do sync */ |
255 | 256 | ||
256 | fdmanyloop: /* Loop if LOOP >= 2 */ | 257 | fdmanyloop: /* Loop if LOOP >= 2 */ |
257 | ADDIB> -1, %r31, fdmanyloop /* Adjusted inner loop decr */ | 258 | addib,COND(>) -1, %r31, fdmanyloop /* Adjusted inner loop decr */ |
258 | fdce %r0(%sr1, %arg0) | 259 | fdce %r0(%sr1, %arg0) |
259 | fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */ | 260 | fdce,m %arg1(%sr1, %arg0) /* Last fdce and addr adjust */ |
260 | movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */ | 261 | movb,tr %arg3, %r31, fdmanyloop /* Re-init inner loop count */ |
261 | ADDIB<=,n -1, %arg2, fdsync /* Outer loop decr */ | 262 | addib,COND(<=),n -1, %arg2, fdsync /* Outer loop decr */ |
262 | 263 | ||
263 | fdoneloop: /* Loop if LOOP = 1 */ | 264 | fdoneloop: /* Loop if LOOP = 1 */ |
264 | ADDIB> -1, %arg2, fdoneloop /* Outer loop count decr */ | 265 | addib,COND(>) -1, %arg2, fdoneloop /* Outer loop count decr */ |
265 | fdce,m %arg1(%sr1, %arg0) /* Fdce for one loop */ | 266 | fdce,m %arg1(%sr1, %arg0) /* Fdce for one loop */ |
266 | 267 | ||
267 | fdsync: | 268 | fdsync: |
@@ -342,7 +343,7 @@ ENTRY(copy_user_page_asm) | |||
342 | * non-taken backward branch. Note that .+4 is a backwards branch. | 343 | * non-taken backward branch. Note that .+4 is a backwards branch. |
343 | * The ldd should only get executed if the branch is taken. | 344 | * The ldd should only get executed if the branch is taken. |
344 | */ | 345 | */ |
345 | ADDIB>,n -1, %r1, 1b /* bundle 10 */ | 346 | addib,COND(>),n -1, %r1, 1b /* bundle 10 */ |
346 | ldd 0(%r25), %r19 /* start next loads */ | 347 | ldd 0(%r25), %r19 /* start next loads */ |
347 | 348 | ||
348 | #else | 349 | #else |
@@ -391,7 +392,7 @@ ENTRY(copy_user_page_asm) | |||
391 | stw %r21, 56(%r26) | 392 | stw %r21, 56(%r26) |
392 | stw %r22, 60(%r26) | 393 | stw %r22, 60(%r26) |
393 | ldo 64(%r26), %r26 | 394 | ldo 64(%r26), %r26 |
394 | ADDIB>,n -1, %r1, 1b | 395 | addib,COND(>),n -1, %r1, 1b |
395 | ldw 0(%r25), %r19 | 396 | ldw 0(%r25), %r19 |
396 | #endif | 397 | #endif |
397 | bv %r0(%r2) | 398 | bv %r0(%r2) |
@@ -515,7 +516,7 @@ ENTRY(copy_user_page_asm) | |||
515 | stw %r21, 56(%r28) | 516 | stw %r21, 56(%r28) |
516 | stw %r22, 60(%r28) | 517 | stw %r22, 60(%r28) |
517 | ldo 64(%r28), %r28 | 518 | ldo 64(%r28), %r28 |
518 | ADDIB> -1, %r1,1b | 519 | addib,COND(>) -1, %r1,1b |
519 | ldo 64(%r29), %r29 | 520 | ldo 64(%r29), %r29 |
520 | 521 | ||
521 | bv %r0(%r2) | 522 | bv %r0(%r2) |
@@ -574,7 +575,7 @@ ENTRY(__clear_user_page_asm) | |||
574 | std %r0, 104(%r28) | 575 | std %r0, 104(%r28) |
575 | std %r0, 112(%r28) | 576 | std %r0, 112(%r28) |
576 | std %r0, 120(%r28) | 577 | std %r0, 120(%r28) |
577 | ADDIB> -1, %r1, 1b | 578 | addib,COND(>) -1, %r1, 1b |
578 | ldo 128(%r28), %r28 | 579 | ldo 128(%r28), %r28 |
579 | 580 | ||
580 | #else /* ! CONFIG_64BIT */ | 581 | #else /* ! CONFIG_64BIT */ |
@@ -597,7 +598,7 @@ ENTRY(__clear_user_page_asm) | |||
597 | stw %r0, 52(%r28) | 598 | stw %r0, 52(%r28) |
598 | stw %r0, 56(%r28) | 599 | stw %r0, 56(%r28) |
599 | stw %r0, 60(%r28) | 600 | stw %r0, 60(%r28) |
600 | ADDIB> -1, %r1, 1b | 601 | addib,COND(>) -1, %r1, 1b |
601 | ldo 64(%r28), %r28 | 602 | ldo 64(%r28), %r28 |
602 | #endif /* CONFIG_64BIT */ | 603 | #endif /* CONFIG_64BIT */ |
603 | 604 | ||
@@ -640,7 +641,7 @@ ENTRY(flush_kernel_dcache_page_asm) | |||
640 | fdc,m %r23(%r26) | 641 | fdc,m %r23(%r26) |
641 | fdc,m %r23(%r26) | 642 | fdc,m %r23(%r26) |
642 | fdc,m %r23(%r26) | 643 | fdc,m %r23(%r26) |
643 | CMPB<< %r26, %r25,1b | 644 | cmpb,COND(<<) %r26, %r25,1b |
644 | fdc,m %r23(%r26) | 645 | fdc,m %r23(%r26) |
645 | 646 | ||
646 | sync | 647 | sync |
@@ -683,7 +684,7 @@ ENTRY(flush_user_dcache_page) | |||
683 | fdc,m %r23(%sr3, %r26) | 684 | fdc,m %r23(%sr3, %r26) |
684 | fdc,m %r23(%sr3, %r26) | 685 | fdc,m %r23(%sr3, %r26) |
685 | fdc,m %r23(%sr3, %r26) | 686 | fdc,m %r23(%sr3, %r26) |
686 | CMPB<< %r26, %r25,1b | 687 | cmpb,COND(<<) %r26, %r25,1b |
687 | fdc,m %r23(%sr3, %r26) | 688 | fdc,m %r23(%sr3, %r26) |
688 | 689 | ||
689 | sync | 690 | sync |
@@ -726,7 +727,7 @@ ENTRY(flush_user_icache_page) | |||
726 | fic,m %r23(%sr3, %r26) | 727 | fic,m %r23(%sr3, %r26) |
727 | fic,m %r23(%sr3, %r26) | 728 | fic,m %r23(%sr3, %r26) |
728 | fic,m %r23(%sr3, %r26) | 729 | fic,m %r23(%sr3, %r26) |
729 | CMPB<< %r26, %r25,1b | 730 | cmpb,COND(<<) %r26, %r25,1b |
730 | fic,m %r23(%sr3, %r26) | 731 | fic,m %r23(%sr3, %r26) |
731 | 732 | ||
732 | sync | 733 | sync |
@@ -769,7 +770,7 @@ ENTRY(purge_kernel_dcache_page) | |||
769 | pdc,m %r23(%r26) | 770 | pdc,m %r23(%r26) |
770 | pdc,m %r23(%r26) | 771 | pdc,m %r23(%r26) |
771 | pdc,m %r23(%r26) | 772 | pdc,m %r23(%r26) |
772 | CMPB<< %r26, %r25, 1b | 773 | cmpb,COND(<<) %r26, %r25, 1b |
773 | pdc,m %r23(%r26) | 774 | pdc,m %r23(%r26) |
774 | 775 | ||
775 | sync | 776 | sync |
@@ -833,7 +834,7 @@ ENTRY(flush_alias_page) | |||
833 | fdc,m %r23(%r28) | 834 | fdc,m %r23(%r28) |
834 | fdc,m %r23(%r28) | 835 | fdc,m %r23(%r28) |
835 | fdc,m %r23(%r28) | 836 | fdc,m %r23(%r28) |
836 | CMPB<< %r28, %r29, 1b | 837 | cmpb,COND(<<) %r28, %r29, 1b |
837 | fdc,m %r23(%r28) | 838 | fdc,m %r23(%r28) |
838 | 839 | ||
839 | sync | 840 | sync |
@@ -856,7 +857,7 @@ flush_user_dcache_range_asm: | |||
856 | ldo -1(%r23), %r21 | 857 | ldo -1(%r23), %r21 |
857 | ANDCM %r26, %r21, %r26 | 858 | ANDCM %r26, %r21, %r26 |
858 | 859 | ||
859 | 1: CMPB<<,n %r26, %r25, 1b | 860 | 1: cmpb,COND(<<),n %r26, %r25, 1b |
860 | fdc,m %r23(%sr3, %r26) | 861 | fdc,m %r23(%sr3, %r26) |
861 | 862 | ||
862 | sync | 863 | sync |
@@ -877,7 +878,7 @@ ENTRY(flush_kernel_dcache_range_asm) | |||
877 | ldo -1(%r23), %r21 | 878 | ldo -1(%r23), %r21 |
878 | ANDCM %r26, %r21, %r26 | 879 | ANDCM %r26, %r21, %r26 |
879 | 880 | ||
880 | 1: CMPB<<,n %r26, %r25,1b | 881 | 1: cmpb,COND(<<),n %r26, %r25,1b |
881 | fdc,m %r23(%r26) | 882 | fdc,m %r23(%r26) |
882 | 883 | ||
883 | sync | 884 | sync |
@@ -899,7 +900,7 @@ ENTRY(flush_user_icache_range_asm) | |||
899 | ldo -1(%r23), %r21 | 900 | ldo -1(%r23), %r21 |
900 | ANDCM %r26, %r21, %r26 | 901 | ANDCM %r26, %r21, %r26 |
901 | 902 | ||
902 | 1: CMPB<<,n %r26, %r25,1b | 903 | 1: cmpb,COND(<<),n %r26, %r25,1b |
903 | fic,m %r23(%sr3, %r26) | 904 | fic,m %r23(%sr3, %r26) |
904 | 905 | ||
905 | sync | 906 | sync |
@@ -942,7 +943,7 @@ ENTRY(flush_kernel_icache_page) | |||
942 | fic,m %r23(%sr4, %r26) | 943 | fic,m %r23(%sr4, %r26) |
943 | fic,m %r23(%sr4, %r26) | 944 | fic,m %r23(%sr4, %r26) |
944 | fic,m %r23(%sr4, %r26) | 945 | fic,m %r23(%sr4, %r26) |
945 | CMPB<< %r26, %r25, 1b | 946 | cmpb,COND(<<) %r26, %r25, 1b |
946 | fic,m %r23(%sr4, %r26) | 947 | fic,m %r23(%sr4, %r26) |
947 | 948 | ||
948 | sync | 949 | sync |
@@ -963,7 +964,7 @@ ENTRY(flush_kernel_icache_range_asm) | |||
963 | ldo -1(%r23), %r21 | 964 | ldo -1(%r23), %r21 |
964 | ANDCM %r26, %r21, %r26 | 965 | ANDCM %r26, %r21, %r26 |
965 | 966 | ||
966 | 1: CMPB<<,n %r26, %r25, 1b | 967 | 1: cmpb,COND(<<),n %r26, %r25, 1b |
967 | fic,m %r23(%sr4, %r26) | 968 | fic,m %r23(%sr4, %r26) |
968 | 969 | ||
969 | sync | 970 | sync |
diff --git a/arch/parisc/kernel/perf_asm.S b/arch/parisc/kernel/perf_asm.S index 43874ca3ed67..d411dfb5b6d1 100644 --- a/arch/parisc/kernel/perf_asm.S +++ b/arch/parisc/kernel/perf_asm.S | |||
@@ -20,6 +20,8 @@ | |||
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <asm/assembly.h> | 22 | #include <asm/assembly.h> |
23 | |||
24 | #include <linux/init.h> | ||
23 | #include <linux/linkage.h> | 25 | #include <linux/linkage.h> |
24 | 26 | ||
25 | #ifdef CONFIG_64BIT | 27 | #ifdef CONFIG_64BIT |
@@ -41,7 +43,7 @@ | |||
41 | ; The coprocessor only needs to be enabled when | 43 | ; The coprocessor only needs to be enabled when |
42 | ; starting/stopping the coprocessor with the pmenb/pmdis. | 44 | ; starting/stopping the coprocessor with the pmenb/pmdis. |
43 | ; | 45 | ; |
44 | .text | 46 | __HEAD |
45 | 47 | ||
46 | ENTRY(perf_intrigue_enable_perf_counters) | 48 | ENTRY(perf_intrigue_enable_perf_counters) |
47 | .proc | 49 | .proc |
diff --git a/arch/parisc/kernel/real2.S b/arch/parisc/kernel/real2.S index 7a92695d95a6..47fbdae6efd5 100644 --- a/arch/parisc/kernel/real2.S +++ b/arch/parisc/kernel/real2.S | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <asm/assembly.h> | 12 | #include <asm/assembly.h> |
13 | 13 | ||
14 | #include <linux/linkage.h> | 14 | #include <linux/linkage.h> |
15 | #include <linux/init.h> | ||
15 | 16 | ||
16 | .section .bss | 17 | .section .bss |
17 | .export real_stack | 18 | .export real_stack |
@@ -39,7 +40,7 @@ save_cr_end: | |||
39 | /************************ 32-bit real-mode calls ***********************/ | 40 | /************************ 32-bit real-mode calls ***********************/ |
40 | /* This can be called in both narrow and wide kernels */ | 41 | /* This can be called in both narrow and wide kernels */ |
41 | 42 | ||
42 | .text | 43 | __HEAD |
43 | 44 | ||
44 | /* unsigned long real32_call_asm(unsigned int *sp, | 45 | /* unsigned long real32_call_asm(unsigned int *sp, |
45 | * unsigned int *arg0p, | 46 | * unsigned int *arg0p, |
@@ -113,7 +114,7 @@ ENDPROC(real32_call_asm) | |||
113 | # define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where) | 114 | # define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where) |
114 | # define POP_CR(r, where) LDREG,mb -REG_SZ(where), %r1 ! mtctl %r1, r | 115 | # define POP_CR(r, where) LDREG,mb -REG_SZ(where), %r1 ! mtctl %r1, r |
115 | 116 | ||
116 | .text | 117 | __HEAD |
117 | save_control_regs: | 118 | save_control_regs: |
118 | load32 PA(save_cr_space), %r28 | 119 | load32 PA(save_cr_space), %r28 |
119 | PUSH_CR(%cr24, %r28) | 120 | PUSH_CR(%cr24, %r28) |
@@ -145,7 +146,7 @@ restore_control_regs: | |||
145 | /* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for | 146 | /* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for |
146 | * more general-purpose use by the several places which need RFIs | 147 | * more general-purpose use by the several places which need RFIs |
147 | */ | 148 | */ |
148 | .text | 149 | __HEAD |
149 | .align 128 | 150 | .align 128 |
150 | rfi_virt2real: | 151 | rfi_virt2real: |
151 | /* switch to real mode... */ | 152 | /* switch to real mode... */ |
@@ -180,7 +181,7 @@ rfi_v2r_1: | |||
180 | bv 0(%r2) | 181 | bv 0(%r2) |
181 | nop | 182 | nop |
182 | 183 | ||
183 | .text | 184 | __HEAD |
184 | .align 128 | 185 | .align 128 |
185 | rfi_real2virt: | 186 | rfi_real2virt: |
186 | rsm PSW_SM_I,%r0 | 187 | rsm PSW_SM_I,%r0 |
@@ -218,7 +219,7 @@ rfi_r2v_1: | |||
218 | 219 | ||
219 | /************************ 64-bit real-mode calls ***********************/ | 220 | /************************ 64-bit real-mode calls ***********************/ |
220 | /* This is only usable in wide kernels right now and will probably stay so */ | 221 | /* This is only usable in wide kernels right now and will probably stay so */ |
221 | .text | 222 | __HEAD |
222 | /* unsigned long real64_call_asm(unsigned long *sp, | 223 | /* unsigned long real64_call_asm(unsigned long *sp, |
223 | * unsigned long *arg0p, | 224 | * unsigned long *arg0p, |
224 | * unsigned long fn) | 225 | * unsigned long fn) |
@@ -276,7 +277,7 @@ ENDPROC(real64_call_asm) | |||
276 | 277 | ||
277 | #endif | 278 | #endif |
278 | 279 | ||
279 | .text | 280 | __HEAD |
280 | /* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html | 281 | /* http://lists.parisc-linux.org/hypermail/parisc-linux/10916.html |
281 | ** GCC 3.3 and later has a new function in libgcc.a for | 282 | ** GCC 3.3 and later has a new function in libgcc.a for |
282 | ** comparing function pointers. | 283 | ** comparing function pointers. |
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S index 69b6eebc466e..ae509d8cd03f 100644 --- a/arch/parisc/kernel/syscall.S +++ b/arch/parisc/kernel/syscall.S | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
18 | 18 | ||
19 | #include <linux/linkage.h> | 19 | #include <linux/linkage.h> |
20 | #include <linux/init.h> | ||
20 | 21 | ||
21 | /* We fill the empty parts of the gateway page with | 22 | /* We fill the empty parts of the gateway page with |
22 | * something that will kill the kernel or a | 23 | * something that will kill the kernel or a |
@@ -26,7 +27,7 @@ | |||
26 | 27 | ||
27 | .level LEVEL | 28 | .level LEVEL |
28 | 29 | ||
29 | .text | 30 | __HEAD |
30 | 31 | ||
31 | .import syscall_exit,code | 32 | .import syscall_exit,code |
32 | .import syscall_exit_rfi,code | 33 | .import syscall_exit_rfi,code |
@@ -636,7 +637,7 @@ END(sys_call_table64) | |||
636 | All light-weight-syscall atomic operations | 637 | All light-weight-syscall atomic operations |
637 | will use this set of locks | 638 | will use this set of locks |
638 | */ | 639 | */ |
639 | .section .data | 640 | .section .data, "aw" |
640 | .align PAGE_SIZE | 641 | .align PAGE_SIZE |
641 | ENTRY(lws_lock_start) | 642 | ENTRY(lws_lock_start) |
642 | /* lws locks */ | 643 | /* lws locks */ |
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index 9dc6dc42f9cf..675f1d098f05 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -275,7 +275,7 @@ KERN_CRIT " || ||\n"); | |||
275 | 275 | ||
276 | /* Wot's wrong wif bein' racy? */ | 276 | /* Wot's wrong wif bein' racy? */ |
277 | if (current->thread.flags & PARISC_KERNEL_DEATH) { | 277 | if (current->thread.flags & PARISC_KERNEL_DEATH) { |
278 | printk(KERN_CRIT "%s() recursion detected.\n", __FUNCTION__); | 278 | printk(KERN_CRIT "%s() recursion detected.\n", __func__); |
279 | local_irq_enable(); | 279 | local_irq_enable(); |
280 | while (1); | 280 | while (1); |
281 | } | 281 | } |
diff --git a/arch/parisc/kernel/unaligned.c b/arch/parisc/kernel/unaligned.c index aebf3c168871..e6f4b7a4b7e3 100644 --- a/arch/parisc/kernel/unaligned.c +++ b/arch/parisc/kernel/unaligned.c | |||
@@ -30,7 +30,7 @@ | |||
30 | /* #define DEBUG_UNALIGNED 1 */ | 30 | /* #define DEBUG_UNALIGNED 1 */ |
31 | 31 | ||
32 | #ifdef DEBUG_UNALIGNED | 32 | #ifdef DEBUG_UNALIGNED |
33 | #define DPRINTF(fmt, args...) do { printk(KERN_DEBUG "%s:%d:%s ", __FILE__, __LINE__, __FUNCTION__ ); printk(KERN_DEBUG fmt, ##args ); } while (0) | 33 | #define DPRINTF(fmt, args...) do { printk(KERN_DEBUG "%s:%d:%s ", __FILE__, __LINE__, __func__ ); printk(KERN_DEBUG fmt, ##args ); } while (0) |
34 | #else | 34 | #else |
35 | #define DPRINTF(fmt, args...) | 35 | #define DPRINTF(fmt, args...) |
36 | #endif | 36 | #endif |
@@ -460,7 +460,8 @@ void handle_unaligned(struct pt_regs *regs) | |||
460 | goto force_sigbus; | 460 | goto force_sigbus; |
461 | } | 461 | } |
462 | 462 | ||
463 | if (unaligned_count > 5 && jiffies - last_time > 5*HZ) { | 463 | if (unaligned_count > 5 && |
464 | time_after(jiffies, last_time + 5 * HZ)) { | ||
464 | unaligned_count = 0; | 465 | unaligned_count = 0; |
465 | last_time = jiffies; | 466 | last_time = jiffies; |
466 | } | 467 | } |
diff --git a/arch/parisc/lib/fixup.S b/arch/parisc/lib/fixup.S index d172d4245cdc..4821ad6d5269 100644 --- a/arch/parisc/lib/fixup.S +++ b/arch/parisc/lib/fixup.S | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <asm/assembly.h> | 23 | #include <asm/assembly.h> |
24 | #include <asm/errno.h> | 24 | #include <asm/errno.h> |
25 | #include <linux/linkage.h> | 25 | #include <linux/linkage.h> |
26 | #include <linux/init.h> | ||
26 | 27 | ||
27 | #ifdef CONFIG_SMP | 28 | #ifdef CONFIG_SMP |
28 | .macro get_fault_ip t1 t2 | 29 | .macro get_fault_ip t1 t2 |
@@ -55,7 +56,7 @@ | |||
55 | 56 | ||
56 | .level LEVEL | 57 | .level LEVEL |
57 | 58 | ||
58 | .text | 59 | __HEAD |
59 | .section .fixup, "ax" | 60 | .section .fixup, "ax" |
60 | 61 | ||
61 | /* get_user() fixups, store -EFAULT in r8, and 0 in r9 */ | 62 | /* get_user() fixups, store -EFAULT in r8, and 0 in r9 */ |
diff --git a/arch/parisc/lib/lusercopy.S b/arch/parisc/lib/lusercopy.S index 1bd23ccec17b..b0d885350846 100644 --- a/arch/parisc/lib/lusercopy.S +++ b/arch/parisc/lib/lusercopy.S | |||
@@ -33,11 +33,12 @@ | |||
33 | */ | 33 | */ |
34 | 34 | ||
35 | 35 | ||
36 | .text | ||
37 | |||
38 | #include <asm/assembly.h> | 36 | #include <asm/assembly.h> |
39 | #include <asm/errno.h> | 37 | #include <asm/errno.h> |
40 | #include <linux/linkage.h> | 38 | #include <linux/linkage.h> |
39 | #include <linux/init.h> | ||
40 | |||
41 | __HEAD | ||
41 | 42 | ||
42 | /* | 43 | /* |
43 | * get_sr gets the appropriate space value into | 44 | * get_sr gets the appropriate space value into |
diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c index d22042d33100..2d68431fc22e 100644 --- a/arch/parisc/lib/memcpy.c +++ b/arch/parisc/lib/memcpy.c | |||
@@ -91,7 +91,7 @@ DECLARE_PER_CPU(struct exception_data, exception_data); | |||
91 | #define THRESHOLD 16 | 91 | #define THRESHOLD 16 |
92 | 92 | ||
93 | #ifdef DEBUG_MEMCPY | 93 | #ifdef DEBUG_MEMCPY |
94 | #define DPRINTF(fmt, args...) do { printk(KERN_DEBUG "%s:%d:%s ", __FILE__, __LINE__, __FUNCTION__ ); printk(KERN_DEBUG fmt, ##args ); } while (0) | 94 | #define DPRINTF(fmt, args...) do { printk(KERN_DEBUG "%s:%d:%s ", __FILE__, __LINE__, __func__ ); printk(KERN_DEBUG fmt, ##args ); } while (0) |
95 | #else | 95 | #else |
96 | #define DPRINTF(fmt, args...) | 96 | #define DPRINTF(fmt, args...) |
97 | #endif | 97 | #endif |
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index b0ed709d5743..78fe252b92c3 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
@@ -555,8 +555,6 @@ void show_mem(void) | |||
555 | 555 | ||
556 | printk(KERN_INFO "Mem-info:\n"); | 556 | printk(KERN_INFO "Mem-info:\n"); |
557 | show_free_areas(); | 557 | show_free_areas(); |
558 | printk(KERN_INFO "Free swap: %6ldkB\n", | ||
559 | nr_swap_pages<<(PAGE_SHIFT-10)); | ||
560 | #ifndef CONFIG_DISCONTIGMEM | 558 | #ifndef CONFIG_DISCONTIGMEM |
561 | i = max_mapnr; | 559 | i = max_mapnr; |
562 | while (i-- > 0) { | 560 | while (i-- > 0) { |
diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore index 2347294ff35b..2f50acd11a60 100644 --- a/arch/powerpc/boot/.gitignore +++ b/arch/powerpc/boot/.gitignore | |||
@@ -20,21 +20,19 @@ kernel-vmlinux.strip.gz | |||
20 | mktree | 20 | mktree |
21 | uImage | 21 | uImage |
22 | cuImage.* | 22 | cuImage.* |
23 | dtbImage.* | ||
23 | treeImage.* | 24 | treeImage.* |
24 | zImage | 25 | zImage |
26 | zImage.initrd | ||
25 | zImage.bin.* | 27 | zImage.bin.* |
26 | zImage.chrp | 28 | zImage.chrp |
27 | zImage.coff | 29 | zImage.coff |
28 | zImage.coff.lds | 30 | zImage.holly |
29 | zImage.ep* | ||
30 | zImage.iseries | 31 | zImage.iseries |
31 | zImage.*lds | 32 | zImage.*lds |
32 | zImage.miboot | 33 | zImage.miboot |
33 | zImage.pmac | 34 | zImage.pmac |
34 | zImage.pseries | 35 | zImage.pseries |
35 | zImage.redboot* | ||
36 | zImage.sandpoint | ||
37 | zImage.vmode | ||
38 | zconf.h | 36 | zconf.h |
39 | zlib.h | 37 | zlib.h |
40 | zutil.h | 38 | zutil.h |
diff --git a/arch/powerpc/boot/4xx.c b/arch/powerpc/boot/4xx.c index 758edf1c5815..5c878436f348 100644 --- a/arch/powerpc/boot/4xx.c +++ b/arch/powerpc/boot/4xx.c | |||
@@ -21,6 +21,25 @@ | |||
21 | #include "reg.h" | 21 | #include "reg.h" |
22 | #include "dcr.h" | 22 | #include "dcr.h" |
23 | 23 | ||
24 | static unsigned long chip_11_errata(unsigned long memsize) | ||
25 | { | ||
26 | unsigned long pvr; | ||
27 | |||
28 | pvr = mfpvr(); | ||
29 | |||
30 | switch (pvr & 0xf0000ff0) { | ||
31 | case 0x40000850: | ||
32 | case 0x400008d0: | ||
33 | case 0x200008d0: | ||
34 | memsize -= 4096; | ||
35 | break; | ||
36 | default: | ||
37 | break; | ||
38 | } | ||
39 | |||
40 | return memsize; | ||
41 | } | ||
42 | |||
24 | /* Read the 4xx SDRAM controller to get size of system memory. */ | 43 | /* Read the 4xx SDRAM controller to get size of system memory. */ |
25 | void ibm4xx_sdram_fixup_memsize(void) | 44 | void ibm4xx_sdram_fixup_memsize(void) |
26 | { | 45 | { |
@@ -34,6 +53,7 @@ void ibm4xx_sdram_fixup_memsize(void) | |||
34 | memsize += SDRAM_CONFIG_BANK_SIZE(bank_config); | 53 | memsize += SDRAM_CONFIG_BANK_SIZE(bank_config); |
35 | } | 54 | } |
36 | 55 | ||
56 | memsize = chip_11_errata(memsize); | ||
37 | dt_fixup_memory(0, memsize); | 57 | dt_fixup_memory(0, memsize); |
38 | } | 58 | } |
39 | 59 | ||
@@ -199,6 +219,7 @@ void ibm4xx_denali_fixup_memsize(void) | |||
199 | bank = 4; /* 4 banks */ | 219 | bank = 4; /* 4 banks */ |
200 | 220 | ||
201 | memsize = cs * (1 << (col+row)) * bank * dpath; | 221 | memsize = cs * (1 << (col+row)) * bank * dpath; |
222 | memsize = chip_11_errata(memsize); | ||
202 | dt_fixup_memory(0, memsize); | 223 | dt_fixup_memory(0, memsize); |
203 | } | 224 | } |
204 | 225 | ||
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 7822d25c9d31..f5e0b2a5af57 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -99,7 +99,7 @@ $(obj)/zImage.lds $(obj)/zImage.coff.lds $(obj)/zImage.ps3.lds: $(obj)/%: $(srct | |||
99 | @cp $< $@ | 99 | @cp $< $@ |
100 | 100 | ||
101 | clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ | 101 | clean-files := $(zlib) $(zlibheader) $(zliblinuxheader) \ |
102 | empty.c zImage zImage.coff.lds zImage.ps3.lds zImage.lds | 102 | empty.c zImage.coff.lds zImage.ps3.lds zImage.lds |
103 | 103 | ||
104 | quiet_cmd_bootcc = BOOTCC $@ | 104 | quiet_cmd_bootcc = BOOTCC $@ |
105 | cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< | 105 | cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< |
@@ -339,7 +339,9 @@ install: $(CONFIGURE) $(addprefix $(obj)/, $(image-y)) | |||
339 | sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $< | 339 | sh -x $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" vmlinux System.map "$(INSTALL_PATH)" $< |
340 | 340 | ||
341 | # anything not in $(targets) | 341 | # anything not in $(targets) |
342 | clean-files += $(image-) $(initrd-) zImage zImage.initrd cuImage.* treeImage.* \ | 342 | clean-files += $(image-) $(initrd-) cuImage.* dtbImage.* treeImage.* \ |
343 | zImage zImage.initrd zImage.chrp zImage.coff zImage.holly \ | ||
344 | zImage.iseries zImage.miboot zImage.pmac zImage.pseries \ | ||
343 | otheros.bld *.dtb | 345 | otheros.bld *.dtb |
344 | 346 | ||
345 | # clean up files cached by wrapper | 347 | # clean up files cached by wrapper |
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts index eac8e1b59496..fea592574004 100644 --- a/arch/powerpc/boot/dts/mpc8377_mds.dts +++ b/arch/powerpc/boot/dts/mpc8377_mds.dts | |||
@@ -268,6 +268,41 @@ | |||
268 | interrupt-parent = <&ipic>; | 268 | interrupt-parent = <&ipic>; |
269 | }; | 269 | }; |
270 | 270 | ||
271 | dma@82a8 { | ||
272 | #address-cells = <1>; | ||
273 | #size-cells = <1>; | ||
274 | compatible = "fsl,mpc8377-dma", "fsl,elo-dma"; | ||
275 | reg = <0x82a8 4>; | ||
276 | ranges = <0 0x8100 0x1a8>; | ||
277 | interrupt-parent = <&ipic>; | ||
278 | interrupts = <0x47 8>; | ||
279 | cell-index = <0>; | ||
280 | dma-channel@0 { | ||
281 | compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel"; | ||
282 | reg = <0 0x80>; | ||
283 | interrupt-parent = <&ipic>; | ||
284 | interrupts = <0x47 8>; | ||
285 | }; | ||
286 | dma-channel@80 { | ||
287 | compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel"; | ||
288 | reg = <0x80 0x80>; | ||
289 | interrupt-parent = <&ipic>; | ||
290 | interrupts = <0x47 8>; | ||
291 | }; | ||
292 | dma-channel@100 { | ||
293 | compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel"; | ||
294 | reg = <0x100 0x80>; | ||
295 | interrupt-parent = <&ipic>; | ||
296 | interrupts = <0x47 8>; | ||
297 | }; | ||
298 | dma-channel@180 { | ||
299 | compatible = "fsl,mpc8377-dma-channel", "fsl,elo-dma-channel"; | ||
300 | reg = <0x180 0x28>; | ||
301 | interrupt-parent = <&ipic>; | ||
302 | interrupts = <0x47 8>; | ||
303 | }; | ||
304 | }; | ||
305 | |||
271 | /* IPIC | 306 | /* IPIC |
272 | * interrupts cell = <intr #, sense> | 307 | * interrupts cell = <intr #, sense> |
273 | * sense values match linux IORESOURCE_IRQ_* defines: | 308 | * sense values match linux IORESOURCE_IRQ_* defines: |
diff --git a/arch/powerpc/boot/dts/mpc8610_hpcd.dts b/arch/powerpc/boot/dts/mpc8610_hpcd.dts index bba234eb14a9..fa9b6bbeb5af 100644 --- a/arch/powerpc/boot/dts/mpc8610_hpcd.dts +++ b/arch/powerpc/boot/dts/mpc8610_hpcd.dts | |||
@@ -46,9 +46,63 @@ | |||
46 | reg = <0x00000000 0x20000000>; // 512M at 0x0 | 46 | reg = <0x00000000 0x20000000>; // 512M at 0x0 |
47 | }; | 47 | }; |
48 | 48 | ||
49 | board-control@e8000000 { | 49 | localbus@e0005000 { |
50 | compatible = "fsl,fpga-pixis"; | 50 | #address-cells = <2>; |
51 | reg = <0xe8000000 32>; // pixis at 0xe8000000 | 51 | #size-cells = <1>; |
52 | compatible = "fsl,mpc8610-elbc", "fsl,elbc", "simple-bus"; | ||
53 | reg = <0xe0005000 0x1000>; | ||
54 | interrupts = <19 2>; | ||
55 | interrupt-parent = <&mpic>; | ||
56 | ranges = <0 0 0xf8000000 0x08000000 | ||
57 | 1 0 0xf0000000 0x08000000 | ||
58 | 2 0 0xe8400000 0x00008000 | ||
59 | 4 0 0xe8440000 0x00008000 | ||
60 | 5 0 0xe8480000 0x00008000 | ||
61 | 6 0 0xe84c0000 0x00008000 | ||
62 | 3 0 0xe8000000 0x00000020>; | ||
63 | |||
64 | flash@0,0 { | ||
65 | compatible = "cfi-flash"; | ||
66 | reg = <0 0 0x8000000>; | ||
67 | bank-width = <2>; | ||
68 | device-width = <1>; | ||
69 | }; | ||
70 | |||
71 | flash@1,0 { | ||
72 | compatible = "cfi-flash"; | ||
73 | reg = <1 0 0x8000000>; | ||
74 | bank-width = <2>; | ||
75 | device-width = <1>; | ||
76 | }; | ||
77 | |||
78 | flash@2,0 { | ||
79 | compatible = "fsl,mpc8610-fcm-nand", | ||
80 | "fsl,elbc-fcm-nand"; | ||
81 | reg = <2 0 0x8000>; | ||
82 | }; | ||
83 | |||
84 | flash@4,0 { | ||
85 | compatible = "fsl,mpc8610-fcm-nand", | ||
86 | "fsl,elbc-fcm-nand"; | ||
87 | reg = <4 0 0x8000>; | ||
88 | }; | ||
89 | |||
90 | flash@5,0 { | ||
91 | compatible = "fsl,mpc8610-fcm-nand", | ||
92 | "fsl,elbc-fcm-nand"; | ||
93 | reg = <5 0 0x8000>; | ||
94 | }; | ||
95 | |||
96 | flash@6,0 { | ||
97 | compatible = "fsl,mpc8610-fcm-nand", | ||
98 | "fsl,elbc-fcm-nand"; | ||
99 | reg = <6 0 0x8000>; | ||
100 | }; | ||
101 | |||
102 | board-control@3,0 { | ||
103 | compatible = "fsl,fpga-pixis"; | ||
104 | reg = <3 0 0x20>; | ||
105 | }; | ||
52 | }; | 106 | }; |
53 | 107 | ||
54 | soc@e0000000 { | 108 | soc@e0000000 { |
@@ -197,14 +251,14 @@ | |||
197 | dma@c300 { | 251 | dma@c300 { |
198 | #address-cells = <1>; | 252 | #address-cells = <1>; |
199 | #size-cells = <1>; | 253 | #size-cells = <1>; |
200 | compatible = "fsl,mpc8610-dma", "fsl,mpc8540-dma"; | 254 | compatible = "fsl,mpc8610-dma", "fsl,eloplus-dma"; |
201 | cell-index = <1>; | 255 | cell-index = <1>; |
202 | reg = <0xc300 0x4>; /* DMA general status register */ | 256 | reg = <0xc300 0x4>; /* DMA general status register */ |
203 | ranges = <0x0 0xc100 0x200>; | 257 | ranges = <0x0 0xc100 0x200>; |
204 | 258 | ||
205 | dma-channel@0 { | 259 | dma-channel@0 { |
206 | compatible = "fsl,mpc8610-dma-channel", | 260 | compatible = "fsl,mpc8610-dma-channel", |
207 | "fsl,mpc8540-dma-channel"; | 261 | "fsl,eloplus-dma-channel"; |
208 | cell-index = <0>; | 262 | cell-index = <0>; |
209 | reg = <0x0 0x80>; | 263 | reg = <0x0 0x80>; |
210 | interrupt-parent = <&mpic>; | 264 | interrupt-parent = <&mpic>; |
@@ -212,7 +266,7 @@ | |||
212 | }; | 266 | }; |
213 | dma-channel@1 { | 267 | dma-channel@1 { |
214 | compatible = "fsl,mpc8610-dma-channel", | 268 | compatible = "fsl,mpc8610-dma-channel", |
215 | "fsl,mpc8540-dma-channel"; | 269 | "fsl,eloplus-dma-channel"; |
216 | cell-index = <1>; | 270 | cell-index = <1>; |
217 | reg = <0x80 0x80>; | 271 | reg = <0x80 0x80>; |
218 | interrupt-parent = <&mpic>; | 272 | interrupt-parent = <&mpic>; |
@@ -220,7 +274,7 @@ | |||
220 | }; | 274 | }; |
221 | dma-channel@2 { | 275 | dma-channel@2 { |
222 | compatible = "fsl,mpc8610-dma-channel", | 276 | compatible = "fsl,mpc8610-dma-channel", |
223 | "fsl,mpc8540-dma-channel"; | 277 | "fsl,eloplus-dma-channel"; |
224 | cell-index = <2>; | 278 | cell-index = <2>; |
225 | reg = <0x100 0x80>; | 279 | reg = <0x100 0x80>; |
226 | interrupt-parent = <&mpic>; | 280 | interrupt-parent = <&mpic>; |
@@ -228,7 +282,7 @@ | |||
228 | }; | 282 | }; |
229 | dma-channel@3 { | 283 | dma-channel@3 { |
230 | compatible = "fsl,mpc8610-dma-channel", | 284 | compatible = "fsl,mpc8610-dma-channel", |
231 | "fsl,mpc8540-dma-channel"; | 285 | "fsl,eloplus-dma-channel"; |
232 | cell-index = <3>; | 286 | cell-index = <3>; |
233 | reg = <0x180 0x80>; | 287 | reg = <0x180 0x80>; |
234 | interrupt-parent = <&mpic>; | 288 | interrupt-parent = <&mpic>; |
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts index b86e65d926c1..22d967178fe9 100644 --- a/arch/powerpc/boot/dts/sbc8548.dts +++ b/arch/powerpc/boot/dts/sbc8548.dts | |||
@@ -52,6 +52,99 @@ | |||
52 | reg = <0x00000000 0x10000000>; | 52 | reg = <0x00000000 0x10000000>; |
53 | }; | 53 | }; |
54 | 54 | ||
55 | localbus@e0000000 { | ||
56 | #address-cells = <2>; | ||
57 | #size-cells = <1>; | ||
58 | compatible = "simple-bus"; | ||
59 | reg = <0xe0000000 0x5000>; | ||
60 | interrupt-parent = <&mpic>; | ||
61 | |||
62 | ranges = <0x0 0x0 0xff800000 0x00800000 /*8MB Flash*/ | ||
63 | 0x3 0x0 0xf0000000 0x04000000 /*64MB SDRAM*/ | ||
64 | 0x4 0x0 0xf4000000 0x04000000 /*64MB SDRAM*/ | ||
65 | 0x5 0x0 0xf8000000 0x00b10000 /* EPLD */ | ||
66 | 0x6 0x0 0xfb800000 0x04000000>; /*64MB Flash*/ | ||
67 | |||
68 | |||
69 | flash@0,0 { | ||
70 | #address-cells = <1>; | ||
71 | #size-cells = <1>; | ||
72 | compatible = "cfi-flash"; | ||
73 | reg = <0x0 0x0 0x800000>; | ||
74 | bank-width = <1>; | ||
75 | device-width = <1>; | ||
76 | partition@0x0 { | ||
77 | label = "space"; | ||
78 | reg = <0x00000000 0x00100000>; | ||
79 | }; | ||
80 | partition@0x100000 { | ||
81 | label = "bootloader"; | ||
82 | reg = <0x00100000 0x00700000>; | ||
83 | read-only; | ||
84 | }; | ||
85 | }; | ||
86 | |||
87 | epld@5,0 { | ||
88 | compatible = "wrs,epld-localbus"; | ||
89 | #address-cells = <2>; | ||
90 | #size-cells = <1>; | ||
91 | reg = <0x5 0x0 0x00b10000>; | ||
92 | ranges = < | ||
93 | 0x0 0x0 0x5 0x000000 0x1fff /* LED */ | ||
94 | 0x1 0x0 0x5 0x100000 0x1fff /* Switches */ | ||
95 | 0x3 0x0 0x5 0x300000 0x1fff /* HW Rev. */ | ||
96 | 0xb 0x0 0x5 0xb00000 0x1fff /* EEPROM */ | ||
97 | >; | ||
98 | |||
99 | led@0,0 { | ||
100 | compatible = "led"; | ||
101 | reg = <0x0 0x0 0x1fff>; | ||
102 | }; | ||
103 | |||
104 | switches@1,0 { | ||
105 | compatible = "switches"; | ||
106 | reg = <0x1 0x0 0x1fff>; | ||
107 | }; | ||
108 | |||
109 | hw-rev@3,0 { | ||
110 | compatible = "hw-rev"; | ||
111 | reg = <0x3 0x0 0x1fff>; | ||
112 | }; | ||
113 | |||
114 | eeprom@b,0 { | ||
115 | compatible = "eeprom"; | ||
116 | reg = <0xb 0 0x1fff>; | ||
117 | }; | ||
118 | |||
119 | }; | ||
120 | |||
121 | alt-flash@6,0 { | ||
122 | #address-cells = <1>; | ||
123 | #size-cells = <1>; | ||
124 | reg = <0x6 0x0 0x04000000>; | ||
125 | compatible = "cfi-flash"; | ||
126 | bank-width = <4>; | ||
127 | device-width = <1>; | ||
128 | partition@0x0 { | ||
129 | label = "bootloader"; | ||
130 | reg = <0x00000000 0x00100000>; | ||
131 | read-only; | ||
132 | }; | ||
133 | partition@0x00100000 { | ||
134 | label = "file-system"; | ||
135 | reg = <0x00100000 0x01f00000>; | ||
136 | }; | ||
137 | partition@0x02000000 { | ||
138 | label = "boot-config"; | ||
139 | reg = <0x02000000 0x00100000>; | ||
140 | }; | ||
141 | partition@0x02100000 { | ||
142 | label = "space"; | ||
143 | reg = <0x02100000 0x01f00000>; | ||
144 | }; | ||
145 | }; | ||
146 | }; | ||
147 | |||
55 | soc8548@e0000000 { | 148 | soc8548@e0000000 { |
56 | #address-cells = <1>; | 149 | #address-cells = <1>; |
57 | #size-cells = <1>; | 150 | #size-cells = <1>; |
@@ -59,6 +152,7 @@ | |||
59 | ranges = <0x00000000 0xe0000000 0x00100000>; | 152 | ranges = <0x00000000 0xe0000000 0x00100000>; |
60 | reg = <0xe0000000 0x00001000>; // CCSRBAR | 153 | reg = <0xe0000000 0x00001000>; // CCSRBAR |
61 | bus-frequency = <0>; | 154 | bus-frequency = <0>; |
155 | compatible = "simple-bus"; | ||
62 | 156 | ||
63 | memory-controller@2000 { | 157 | memory-controller@2000 { |
64 | compatible = "fsl,8548-memory-controller"; | 158 | compatible = "fsl,8548-memory-controller"; |
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig index d7fd298bd234..05360d4ef1b1 100644 --- a/arch/powerpc/configs/chrp32_defconfig +++ b/arch/powerpc/configs/chrp32_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Thu Mar 27 13:55:37 2008 | 4 | # Tue May 20 20:00:44 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -32,6 +32,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
32 | CONFIG_GENERIC_HARDIRQS=y | 32 | CONFIG_GENERIC_HARDIRQS=y |
33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
34 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
35 | CONFIG_STACKTRACE_SUPPORT=y | ||
36 | CONFIG_LOCKDEP_SUPPORT=y | ||
35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 37 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
36 | CONFIG_ARCH_HAS_ILOG2_U32=y | 38 | CONFIG_ARCH_HAS_ILOG2_U32=y |
37 | CONFIG_GENERIC_HWEIGHT=y | 39 | CONFIG_GENERIC_HWEIGHT=y |
@@ -88,6 +90,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
88 | CONFIG_SYSCTL=y | 90 | CONFIG_SYSCTL=y |
89 | # CONFIG_EMBEDDED is not set | 91 | # CONFIG_EMBEDDED is not set |
90 | CONFIG_SYSCTL_SYSCALL=y | 92 | CONFIG_SYSCTL_SYSCALL=y |
93 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
91 | CONFIG_KALLSYMS=y | 94 | CONFIG_KALLSYMS=y |
92 | # CONFIG_KALLSYMS_ALL is not set | 95 | # CONFIG_KALLSYMS_ALL is not set |
93 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 96 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -95,6 +98,7 @@ CONFIG_HOTPLUG=y | |||
95 | CONFIG_PRINTK=y | 98 | CONFIG_PRINTK=y |
96 | CONFIG_BUG=y | 99 | CONFIG_BUG=y |
97 | CONFIG_ELF_CORE=y | 100 | CONFIG_ELF_CORE=y |
101 | CONFIG_PCSPKR_PLATFORM=y | ||
98 | # CONFIG_COMPAT_BRK is not set | 102 | # CONFIG_COMPAT_BRK is not set |
99 | CONFIG_BASE_FULL=y | 103 | CONFIG_BASE_FULL=y |
100 | CONFIG_FUTEX=y | 104 | CONFIG_FUTEX=y |
@@ -115,12 +119,14 @@ CONFIG_HAVE_OPROFILE=y | |||
115 | # CONFIG_KPROBES is not set | 119 | # CONFIG_KPROBES is not set |
116 | CONFIG_HAVE_KPROBES=y | 120 | CONFIG_HAVE_KPROBES=y |
117 | CONFIG_HAVE_KRETPROBES=y | 121 | CONFIG_HAVE_KRETPROBES=y |
122 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
118 | CONFIG_PROC_PAGE_MONITOR=y | 123 | CONFIG_PROC_PAGE_MONITOR=y |
119 | CONFIG_SLABINFO=y | 124 | CONFIG_SLABINFO=y |
120 | CONFIG_RT_MUTEXES=y | 125 | CONFIG_RT_MUTEXES=y |
121 | # CONFIG_TINY_SHMEM is not set | 126 | # CONFIG_TINY_SHMEM is not set |
122 | CONFIG_BASE_SMALL=0 | 127 | CONFIG_BASE_SMALL=0 |
123 | CONFIG_MODULES=y | 128 | CONFIG_MODULES=y |
129 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
124 | CONFIG_MODULE_UNLOAD=y | 130 | CONFIG_MODULE_UNLOAD=y |
125 | CONFIG_MODULE_FORCE_UNLOAD=y | 131 | CONFIG_MODULE_FORCE_UNLOAD=y |
126 | # CONFIG_MODVERSIONS is not set | 132 | # CONFIG_MODVERSIONS is not set |
@@ -217,11 +223,13 @@ CONFIG_FLATMEM=y | |||
217 | CONFIG_FLAT_NODE_MEM_MAP=y | 223 | CONFIG_FLAT_NODE_MEM_MAP=y |
218 | # CONFIG_SPARSEMEM_STATIC is not set | 224 | # CONFIG_SPARSEMEM_STATIC is not set |
219 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 225 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
226 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
220 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 227 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
221 | # CONFIG_RESOURCES_64BIT is not set | 228 | # CONFIG_RESOURCES_64BIT is not set |
222 | CONFIG_ZONE_DMA_FLAG=1 | 229 | CONFIG_ZONE_DMA_FLAG=1 |
223 | CONFIG_BOUNCE=y | 230 | CONFIG_BOUNCE=y |
224 | CONFIG_VIRT_TO_BUS=y | 231 | CONFIG_VIRT_TO_BUS=y |
232 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
225 | CONFIG_PROC_DEVICETREE=y | 233 | CONFIG_PROC_DEVICETREE=y |
226 | # CONFIG_CMDLINE_BOOL is not set | 234 | # CONFIG_CMDLINE_BOOL is not set |
227 | # CONFIG_PM is not set | 235 | # CONFIG_PM is not set |
@@ -245,6 +253,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
245 | # CONFIG_PCI_DEBUG is not set | 253 | # CONFIG_PCI_DEBUG is not set |
246 | # CONFIG_PCCARD is not set | 254 | # CONFIG_PCCARD is not set |
247 | # CONFIG_HOTPLUG_PCI is not set | 255 | # CONFIG_HOTPLUG_PCI is not set |
256 | # CONFIG_HAS_RAPIDIO is not set | ||
248 | 257 | ||
249 | # | 258 | # |
250 | # Advanced setup | 259 | # Advanced setup |
@@ -254,11 +263,11 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
254 | # | 263 | # |
255 | # Default settings for advanced configuration options are used | 264 | # Default settings for advanced configuration options are used |
256 | # | 265 | # |
257 | CONFIG_HIGHMEM_START=0xfe000000 | ||
258 | CONFIG_LOWMEM_SIZE=0x30000000 | 266 | CONFIG_LOWMEM_SIZE=0x30000000 |
267 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
259 | CONFIG_KERNEL_START=0xc0000000 | 268 | CONFIG_KERNEL_START=0xc0000000 |
269 | CONFIG_PHYSICAL_START=0x00000000 | ||
260 | CONFIG_TASK_SIZE=0xc0000000 | 270 | CONFIG_TASK_SIZE=0xc0000000 |
261 | CONFIG_BOOT_LOAD=0x00800000 | ||
262 | 271 | ||
263 | # | 272 | # |
264 | # Networking | 273 | # Networking |
@@ -299,8 +308,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
299 | # CONFIG_TCP_MD5SIG is not set | 308 | # CONFIG_TCP_MD5SIG is not set |
300 | # CONFIG_IP_VS is not set | 309 | # CONFIG_IP_VS is not set |
301 | # CONFIG_IPV6 is not set | 310 | # CONFIG_IPV6 is not set |
302 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
303 | # CONFIG_INET6_TUNNEL is not set | ||
304 | # CONFIG_NETWORK_SECMARK is not set | 311 | # CONFIG_NETWORK_SECMARK is not set |
305 | CONFIG_NETFILTER=y | 312 | CONFIG_NETFILTER=y |
306 | # CONFIG_NETFILTER_DEBUG is not set | 313 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -398,6 +405,7 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
398 | # CONFIG_CONNECTOR is not set | 405 | # CONFIG_CONNECTOR is not set |
399 | # CONFIG_MTD is not set | 406 | # CONFIG_MTD is not set |
400 | CONFIG_OF_DEVICE=y | 407 | CONFIG_OF_DEVICE=y |
408 | CONFIG_OF_I2C=y | ||
401 | # CONFIG_PARPORT is not set | 409 | # CONFIG_PARPORT is not set |
402 | # CONFIG_PNP is not set | 410 | # CONFIG_PNP is not set |
403 | CONFIG_BLK_DEV=y | 411 | CONFIG_BLK_DEV=y |
@@ -484,22 +492,8 @@ CONFIG_BLK_DEV_SL82C105=y | |||
484 | # CONFIG_BLK_DEV_TRM290 is not set | 492 | # CONFIG_BLK_DEV_TRM290 is not set |
485 | CONFIG_BLK_DEV_VIA82CXXX=y | 493 | CONFIG_BLK_DEV_VIA82CXXX=y |
486 | # CONFIG_BLK_DEV_TC86C001 is not set | 494 | # CONFIG_BLK_DEV_TC86C001 is not set |
487 | |||
488 | # | ||
489 | # Other IDE chipsets support | ||
490 | # | ||
491 | |||
492 | # | ||
493 | # Note: most of these also require special kernel boot parameters | ||
494 | # | ||
495 | # CONFIG_BLK_DEV_4DRIVES is not set | ||
496 | # CONFIG_BLK_DEV_ALI14XX is not set | ||
497 | # CONFIG_BLK_DEV_DTC2278 is not set | ||
498 | # CONFIG_BLK_DEV_HT6560B is not set | ||
499 | # CONFIG_BLK_DEV_QD65XX is not set | ||
500 | # CONFIG_BLK_DEV_UMC8672 is not set | ||
501 | CONFIG_BLK_DEV_IDEDMA=y | 495 | CONFIG_BLK_DEV_IDEDMA=y |
502 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 496 | # CONFIG_BLK_DEV_HD_ONLY is not set |
503 | # CONFIG_BLK_DEV_HD is not set | 497 | # CONFIG_BLK_DEV_HD is not set |
504 | 498 | ||
505 | # | 499 | # |
@@ -641,7 +635,6 @@ CONFIG_DE4X5=y | |||
641 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 635 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
642 | CONFIG_NET_PCI=y | 636 | CONFIG_NET_PCI=y |
643 | CONFIG_PCNET32=y | 637 | CONFIG_PCNET32=y |
644 | # CONFIG_PCNET32_NAPI is not set | ||
645 | # CONFIG_AMD8111_ETH is not set | 638 | # CONFIG_AMD8111_ETH is not set |
646 | # CONFIG_ADAPTEC_STARFIRE is not set | 639 | # CONFIG_ADAPTEC_STARFIRE is not set |
647 | # CONFIG_AC3200 is not set | 640 | # CONFIG_AC3200 is not set |
@@ -684,7 +677,6 @@ CONFIG_NETDEV_1000=y | |||
684 | # CONFIG_SIS190 is not set | 677 | # CONFIG_SIS190 is not set |
685 | # CONFIG_SKGE is not set | 678 | # CONFIG_SKGE is not set |
686 | # CONFIG_SKY2 is not set | 679 | # CONFIG_SKY2 is not set |
687 | # CONFIG_SK98LIN is not set | ||
688 | # CONFIG_VIA_VELOCITY is not set | 680 | # CONFIG_VIA_VELOCITY is not set |
689 | # CONFIG_TIGON3 is not set | 681 | # CONFIG_TIGON3 is not set |
690 | # CONFIG_BNX2 is not set | 682 | # CONFIG_BNX2 is not set |
@@ -703,6 +695,7 @@ CONFIG_NETDEV_10000=y | |||
703 | # CONFIG_MLX4_CORE is not set | 695 | # CONFIG_MLX4_CORE is not set |
704 | # CONFIG_TEHUTI is not set | 696 | # CONFIG_TEHUTI is not set |
705 | # CONFIG_BNX2X is not set | 697 | # CONFIG_BNX2X is not set |
698 | # CONFIG_SFC is not set | ||
706 | # CONFIG_TR is not set | 699 | # CONFIG_TR is not set |
707 | 700 | ||
708 | # | 701 | # |
@@ -710,6 +703,7 @@ CONFIG_NETDEV_10000=y | |||
710 | # | 703 | # |
711 | # CONFIG_WLAN_PRE80211 is not set | 704 | # CONFIG_WLAN_PRE80211 is not set |
712 | # CONFIG_WLAN_80211 is not set | 705 | # CONFIG_WLAN_80211 is not set |
706 | # CONFIG_IWLWIFI_LEDS is not set | ||
713 | 707 | ||
714 | # | 708 | # |
715 | # USB Network Adapters | 709 | # USB Network Adapters |
@@ -813,6 +807,7 @@ CONFIG_VT=y | |||
813 | CONFIG_VT_CONSOLE=y | 807 | CONFIG_VT_CONSOLE=y |
814 | CONFIG_HW_CONSOLE=y | 808 | CONFIG_HW_CONSOLE=y |
815 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 809 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
810 | CONFIG_DEVKMEM=y | ||
816 | # CONFIG_SERIAL_NONSTANDARD is not set | 811 | # CONFIG_SERIAL_NONSTANDARD is not set |
817 | # CONFIG_NOZOMI is not set | 812 | # CONFIG_NOZOMI is not set |
818 | 813 | ||
@@ -853,13 +848,7 @@ CONFIG_DEVPORT=y | |||
853 | CONFIG_I2C=y | 848 | CONFIG_I2C=y |
854 | CONFIG_I2C_BOARDINFO=y | 849 | CONFIG_I2C_BOARDINFO=y |
855 | # CONFIG_I2C_CHARDEV is not set | 850 | # CONFIG_I2C_CHARDEV is not set |
856 | |||
857 | # | ||
858 | # I2C Algorithms | ||
859 | # | ||
860 | CONFIG_I2C_ALGOBIT=y | 851 | CONFIG_I2C_ALGOBIT=y |
861 | # CONFIG_I2C_ALGOPCF is not set | ||
862 | # CONFIG_I2C_ALGOPCA is not set | ||
863 | 852 | ||
864 | # | 853 | # |
865 | # I2C Hardware Bus support | 854 | # I2C Hardware Bus support |
@@ -890,6 +879,7 @@ CONFIG_I2C_ALGOBIT=y | |||
890 | # CONFIG_I2C_VIAPRO is not set | 879 | # CONFIG_I2C_VIAPRO is not set |
891 | # CONFIG_I2C_VOODOO3 is not set | 880 | # CONFIG_I2C_VOODOO3 is not set |
892 | # CONFIG_I2C_PCA_ISA is not set | 881 | # CONFIG_I2C_PCA_ISA is not set |
882 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
893 | 883 | ||
894 | # | 884 | # |
895 | # Miscellaneous I2C Chip support | 885 | # Miscellaneous I2C Chip support |
@@ -899,19 +889,13 @@ CONFIG_I2C_ALGOBIT=y | |||
899 | # CONFIG_SENSORS_PCF8574 is not set | 889 | # CONFIG_SENSORS_PCF8574 is not set |
900 | # CONFIG_PCF8575 is not set | 890 | # CONFIG_PCF8575 is not set |
901 | # CONFIG_SENSORS_PCF8591 is not set | 891 | # CONFIG_SENSORS_PCF8591 is not set |
902 | # CONFIG_TPS65010 is not set | ||
903 | # CONFIG_SENSORS_MAX6875 is not set | 892 | # CONFIG_SENSORS_MAX6875 is not set |
904 | # CONFIG_SENSORS_TSL2550 is not set | 893 | # CONFIG_SENSORS_TSL2550 is not set |
905 | # CONFIG_I2C_DEBUG_CORE is not set | 894 | # CONFIG_I2C_DEBUG_CORE is not set |
906 | # CONFIG_I2C_DEBUG_ALGO is not set | 895 | # CONFIG_I2C_DEBUG_ALGO is not set |
907 | # CONFIG_I2C_DEBUG_BUS is not set | 896 | # CONFIG_I2C_DEBUG_BUS is not set |
908 | # CONFIG_I2C_DEBUG_CHIP is not set | 897 | # CONFIG_I2C_DEBUG_CHIP is not set |
909 | |||
910 | # | ||
911 | # SPI support | ||
912 | # | ||
913 | # CONFIG_SPI is not set | 898 | # CONFIG_SPI is not set |
914 | # CONFIG_SPI_MASTER is not set | ||
915 | # CONFIG_W1 is not set | 899 | # CONFIG_W1 is not set |
916 | # CONFIG_POWER_SUPPLY is not set | 900 | # CONFIG_POWER_SUPPLY is not set |
917 | # CONFIG_HWMON is not set | 901 | # CONFIG_HWMON is not set |
@@ -928,12 +912,22 @@ CONFIG_SSB_POSSIBLE=y | |||
928 | # Multifunction device drivers | 912 | # Multifunction device drivers |
929 | # | 913 | # |
930 | # CONFIG_MFD_SM501 is not set | 914 | # CONFIG_MFD_SM501 is not set |
915 | # CONFIG_HTC_PASIC3 is not set | ||
931 | 916 | ||
932 | # | 917 | # |
933 | # Multimedia devices | 918 | # Multimedia devices |
934 | # | 919 | # |
920 | |||
921 | # | ||
922 | # Multimedia core support | ||
923 | # | ||
935 | # CONFIG_VIDEO_DEV is not set | 924 | # CONFIG_VIDEO_DEV is not set |
936 | # CONFIG_DVB_CORE is not set | 925 | # CONFIG_DVB_CORE is not set |
926 | # CONFIG_VIDEO_MEDIA is not set | ||
927 | |||
928 | # | ||
929 | # Multimedia drivers | ||
930 | # | ||
937 | # CONFIG_DAB is not set | 931 | # CONFIG_DAB is not set |
938 | 932 | ||
939 | # | 933 | # |
@@ -953,8 +947,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
953 | # CONFIG_FB_SYS_FILLRECT is not set | 947 | # CONFIG_FB_SYS_FILLRECT is not set |
954 | # CONFIG_FB_SYS_COPYAREA is not set | 948 | # CONFIG_FB_SYS_COPYAREA is not set |
955 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 949 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
950 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
956 | # CONFIG_FB_SYS_FOPS is not set | 951 | # CONFIG_FB_SYS_FOPS is not set |
957 | CONFIG_FB_DEFERRED_IO=y | ||
958 | # CONFIG_FB_SVGALIB is not set | 952 | # CONFIG_FB_SVGALIB is not set |
959 | CONFIG_FB_MACMODES=y | 953 | CONFIG_FB_MACMODES=y |
960 | CONFIG_FB_BACKLIGHT=y | 954 | CONFIG_FB_BACKLIGHT=y |
@@ -1072,11 +1066,13 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1072 | # | 1066 | # |
1073 | # USB Host Controller Drivers | 1067 | # USB Host Controller Drivers |
1074 | # | 1068 | # |
1069 | # CONFIG_USB_C67X00_HCD is not set | ||
1075 | CONFIG_USB_EHCI_HCD=m | 1070 | CONFIG_USB_EHCI_HCD=m |
1076 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1071 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1077 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1072 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1078 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1073 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1079 | # CONFIG_USB_ISP116X_HCD is not set | 1074 | # CONFIG_USB_ISP116X_HCD is not set |
1075 | # CONFIG_USB_ISP1760_HCD is not set | ||
1080 | CONFIG_USB_OHCI_HCD=y | 1076 | CONFIG_USB_OHCI_HCD=y |
1081 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1077 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
1082 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 1078 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
@@ -1112,6 +1108,7 @@ CONFIG_USB_STORAGE=m | |||
1112 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1108 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1113 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1109 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
1114 | # CONFIG_USB_STORAGE_KARMA is not set | 1110 | # CONFIG_USB_STORAGE_KARMA is not set |
1111 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1115 | # CONFIG_USB_LIBUSUAL is not set | 1112 | # CONFIG_USB_LIBUSUAL is not set |
1116 | 1113 | ||
1117 | # | 1114 | # |
@@ -1153,14 +1150,11 @@ CONFIG_USB_MON=y | |||
1153 | # CONFIG_MMC is not set | 1150 | # CONFIG_MMC is not set |
1154 | # CONFIG_MEMSTICK is not set | 1151 | # CONFIG_MEMSTICK is not set |
1155 | # CONFIG_NEW_LEDS is not set | 1152 | # CONFIG_NEW_LEDS is not set |
1153 | # CONFIG_ACCESSIBILITY is not set | ||
1156 | # CONFIG_INFINIBAND is not set | 1154 | # CONFIG_INFINIBAND is not set |
1157 | # CONFIG_EDAC is not set | 1155 | # CONFIG_EDAC is not set |
1158 | # CONFIG_RTC_CLASS is not set | 1156 | # CONFIG_RTC_CLASS is not set |
1159 | # CONFIG_DMADEVICES is not set | 1157 | # CONFIG_DMADEVICES is not set |
1160 | |||
1161 | # | ||
1162 | # Userspace I/O | ||
1163 | # | ||
1164 | # CONFIG_UIO is not set | 1158 | # CONFIG_UIO is not set |
1165 | 1159 | ||
1166 | # | 1160 | # |
@@ -1180,7 +1174,6 @@ CONFIG_FS_MBCACHE=y | |||
1180 | # CONFIG_JFS_FS is not set | 1174 | # CONFIG_JFS_FS is not set |
1181 | # CONFIG_FS_POSIX_ACL is not set | 1175 | # CONFIG_FS_POSIX_ACL is not set |
1182 | # CONFIG_XFS_FS is not set | 1176 | # CONFIG_XFS_FS is not set |
1183 | # CONFIG_GFS2_FS is not set | ||
1184 | # CONFIG_OCFS2_FS is not set | 1177 | # CONFIG_OCFS2_FS is not set |
1185 | CONFIG_DNOTIFY=y | 1178 | CONFIG_DNOTIFY=y |
1186 | CONFIG_INOTIFY=y | 1179 | CONFIG_INOTIFY=y |
@@ -1314,6 +1307,7 @@ CONFIG_NLS_ISO8859_1=m | |||
1314 | # Library routines | 1307 | # Library routines |
1315 | # | 1308 | # |
1316 | CONFIG_BITREVERSE=y | 1309 | CONFIG_BITREVERSE=y |
1310 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1317 | CONFIG_CRC_CCITT=m | 1311 | CONFIG_CRC_CCITT=m |
1318 | # CONFIG_CRC16 is not set | 1312 | # CONFIG_CRC16 is not set |
1319 | # CONFIG_CRC_ITU_T is not set | 1313 | # CONFIG_CRC_ITU_T is not set |
@@ -1334,6 +1328,7 @@ CONFIG_HAVE_LMB=y | |||
1334 | # CONFIG_PRINTK_TIME is not set | 1328 | # CONFIG_PRINTK_TIME is not set |
1335 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1329 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1336 | CONFIG_ENABLE_MUST_CHECK=y | 1330 | CONFIG_ENABLE_MUST_CHECK=y |
1331 | CONFIG_FRAME_WARN=1024 | ||
1337 | CONFIG_MAGIC_SYSRQ=y | 1332 | CONFIG_MAGIC_SYSRQ=y |
1338 | # CONFIG_UNUSED_SYMBOLS is not set | 1333 | # CONFIG_UNUSED_SYMBOLS is not set |
1339 | # CONFIG_DEBUG_FS is not set | 1334 | # CONFIG_DEBUG_FS is not set |
@@ -1344,6 +1339,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1344 | CONFIG_SCHED_DEBUG=y | 1339 | CONFIG_SCHED_DEBUG=y |
1345 | # CONFIG_SCHEDSTATS is not set | 1340 | # CONFIG_SCHEDSTATS is not set |
1346 | # CONFIG_TIMER_STATS is not set | 1341 | # CONFIG_TIMER_STATS is not set |
1342 | # CONFIG_DEBUG_OBJECTS is not set | ||
1347 | # CONFIG_SLUB_DEBUG_ON is not set | 1343 | # CONFIG_SLUB_DEBUG_ON is not set |
1348 | # CONFIG_SLUB_STATS is not set | 1344 | # CONFIG_SLUB_STATS is not set |
1349 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1345 | # CONFIG_DEBUG_RT_MUTEXES is not set |
@@ -1357,6 +1353,7 @@ CONFIG_DEBUG_SPINLOCK_SLEEP=y | |||
1357 | CONFIG_DEBUG_BUGVERBOSE=y | 1353 | CONFIG_DEBUG_BUGVERBOSE=y |
1358 | # CONFIG_DEBUG_INFO is not set | 1354 | # CONFIG_DEBUG_INFO is not set |
1359 | # CONFIG_DEBUG_VM is not set | 1355 | # CONFIG_DEBUG_VM is not set |
1356 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1360 | # CONFIG_DEBUG_LIST is not set | 1357 | # CONFIG_DEBUG_LIST is not set |
1361 | # CONFIG_DEBUG_SG is not set | 1358 | # CONFIG_DEBUG_SG is not set |
1362 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1359 | # CONFIG_BOOT_PRINTK_DELAY is not set |
@@ -1371,6 +1368,7 @@ CONFIG_DEBUGGER=y | |||
1371 | CONFIG_XMON=y | 1368 | CONFIG_XMON=y |
1372 | CONFIG_XMON_DEFAULT=y | 1369 | CONFIG_XMON_DEFAULT=y |
1373 | CONFIG_XMON_DISASSEMBLY=y | 1370 | CONFIG_XMON_DISASSEMBLY=y |
1371 | CONFIG_IRQSTACKS=y | ||
1374 | # CONFIG_BDI_SWITCH is not set | 1372 | # CONFIG_BDI_SWITCH is not set |
1375 | # CONFIG_BOOTX_TEXT is not set | 1373 | # CONFIG_BOOTX_TEXT is not set |
1376 | # CONFIG_PPC_EARLY_DEBUG is not set | 1374 | # CONFIG_PPC_EARLY_DEBUG is not set |
@@ -1382,50 +1380,80 @@ CONFIG_XMON_DISASSEMBLY=y | |||
1382 | # CONFIG_SECURITY is not set | 1380 | # CONFIG_SECURITY is not set |
1383 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1381 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1384 | CONFIG_CRYPTO=y | 1382 | CONFIG_CRYPTO=y |
1383 | |||
1384 | # | ||
1385 | # Crypto core or helper | ||
1386 | # | ||
1385 | CONFIG_CRYPTO_ALGAPI=m | 1387 | CONFIG_CRYPTO_ALGAPI=m |
1386 | CONFIG_CRYPTO_BLKCIPHER=m | 1388 | CONFIG_CRYPTO_BLKCIPHER=m |
1387 | # CONFIG_CRYPTO_SEQIV is not set | ||
1388 | CONFIG_CRYPTO_MANAGER=m | 1389 | CONFIG_CRYPTO_MANAGER=m |
1390 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1391 | # CONFIG_CRYPTO_NULL is not set | ||
1392 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1393 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1394 | # CONFIG_CRYPTO_TEST is not set | ||
1395 | |||
1396 | # | ||
1397 | # Authenticated Encryption with Associated Data | ||
1398 | # | ||
1399 | # CONFIG_CRYPTO_CCM is not set | ||
1400 | # CONFIG_CRYPTO_GCM is not set | ||
1401 | # CONFIG_CRYPTO_SEQIV is not set | ||
1402 | |||
1403 | # | ||
1404 | # Block modes | ||
1405 | # | ||
1406 | CONFIG_CRYPTO_CBC=m | ||
1407 | # CONFIG_CRYPTO_CTR is not set | ||
1408 | # CONFIG_CRYPTO_CTS is not set | ||
1409 | CONFIG_CRYPTO_ECB=m | ||
1410 | # CONFIG_CRYPTO_LRW is not set | ||
1411 | CONFIG_CRYPTO_PCBC=m | ||
1412 | # CONFIG_CRYPTO_XTS is not set | ||
1413 | |||
1414 | # | ||
1415 | # Hash modes | ||
1416 | # | ||
1389 | # CONFIG_CRYPTO_HMAC is not set | 1417 | # CONFIG_CRYPTO_HMAC is not set |
1390 | # CONFIG_CRYPTO_XCBC is not set | 1418 | # CONFIG_CRYPTO_XCBC is not set |
1391 | # CONFIG_CRYPTO_NULL is not set | 1419 | |
1420 | # | ||
1421 | # Digest | ||
1422 | # | ||
1423 | # CONFIG_CRYPTO_CRC32C is not set | ||
1392 | # CONFIG_CRYPTO_MD4 is not set | 1424 | # CONFIG_CRYPTO_MD4 is not set |
1393 | # CONFIG_CRYPTO_MD5 is not set | 1425 | # CONFIG_CRYPTO_MD5 is not set |
1426 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1394 | CONFIG_CRYPTO_SHA1=m | 1427 | CONFIG_CRYPTO_SHA1=m |
1395 | # CONFIG_CRYPTO_SHA256 is not set | 1428 | # CONFIG_CRYPTO_SHA256 is not set |
1396 | # CONFIG_CRYPTO_SHA512 is not set | 1429 | # CONFIG_CRYPTO_SHA512 is not set |
1397 | # CONFIG_CRYPTO_WP512 is not set | ||
1398 | # CONFIG_CRYPTO_TGR192 is not set | 1430 | # CONFIG_CRYPTO_TGR192 is not set |
1399 | # CONFIG_CRYPTO_GF128MUL is not set | 1431 | # CONFIG_CRYPTO_WP512 is not set |
1400 | CONFIG_CRYPTO_ECB=m | 1432 | |
1401 | CONFIG_CRYPTO_CBC=m | 1433 | # |
1402 | CONFIG_CRYPTO_PCBC=m | 1434 | # Ciphers |
1403 | # CONFIG_CRYPTO_LRW is not set | 1435 | # |
1404 | # CONFIG_CRYPTO_XTS is not set | ||
1405 | # CONFIG_CRYPTO_CTR is not set | ||
1406 | # CONFIG_CRYPTO_GCM is not set | ||
1407 | # CONFIG_CRYPTO_CCM is not set | ||
1408 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1409 | # CONFIG_CRYPTO_DES is not set | ||
1410 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1411 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1412 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1413 | # CONFIG_CRYPTO_SERPENT is not set | ||
1414 | # CONFIG_CRYPTO_AES is not set | 1436 | # CONFIG_CRYPTO_AES is not set |
1437 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1438 | CONFIG_CRYPTO_ARC4=m | ||
1439 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1440 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1415 | # CONFIG_CRYPTO_CAST5 is not set | 1441 | # CONFIG_CRYPTO_CAST5 is not set |
1416 | # CONFIG_CRYPTO_CAST6 is not set | 1442 | # CONFIG_CRYPTO_CAST6 is not set |
1417 | # CONFIG_CRYPTO_TEA is not set | 1443 | # CONFIG_CRYPTO_DES is not set |
1418 | CONFIG_CRYPTO_ARC4=m | 1444 | # CONFIG_CRYPTO_FCRYPT is not set |
1419 | # CONFIG_CRYPTO_KHAZAD is not set | 1445 | # CONFIG_CRYPTO_KHAZAD is not set |
1420 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1421 | # CONFIG_CRYPTO_SEED is not set | ||
1422 | # CONFIG_CRYPTO_SALSA20 is not set | 1446 | # CONFIG_CRYPTO_SALSA20 is not set |
1447 | # CONFIG_CRYPTO_SEED is not set | ||
1448 | # CONFIG_CRYPTO_SERPENT is not set | ||
1449 | # CONFIG_CRYPTO_TEA is not set | ||
1450 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1451 | |||
1452 | # | ||
1453 | # Compression | ||
1454 | # | ||
1423 | # CONFIG_CRYPTO_DEFLATE is not set | 1455 | # CONFIG_CRYPTO_DEFLATE is not set |
1424 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1425 | # CONFIG_CRYPTO_CRC32C is not set | ||
1426 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1427 | # CONFIG_CRYPTO_TEST is not set | ||
1428 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1429 | # CONFIG_CRYPTO_LZO is not set | 1456 | # CONFIG_CRYPTO_LZO is not set |
1430 | # CONFIG_CRYPTO_HW is not set | 1457 | # CONFIG_CRYPTO_HW is not set |
1431 | # CONFIG_PPC_CLOCK is not set | 1458 | # CONFIG_PPC_CLOCK is not set |
1459 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig index 88338a9f5e95..db34909831a2 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Thu Mar 27 13:55:43 2008 | 4 | # Tue May 20 20:01:18 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -29,6 +29,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
29 | CONFIG_GENERIC_HARDIRQS=y | 29 | CONFIG_GENERIC_HARDIRQS=y |
30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
31 | CONFIG_IRQ_PER_CPU=y | 31 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_STACKTRACE_SUPPORT=y | ||
33 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
34 | CONFIG_LOCKDEP_SUPPORT=y | ||
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 36 | CONFIG_ARCH_HAS_ILOG2_U32=y |
34 | CONFIG_ARCH_HAS_ILOG2_U64=y | 37 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -91,6 +94,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
91 | CONFIG_SYSCTL=y | 94 | CONFIG_SYSCTL=y |
92 | # CONFIG_EMBEDDED is not set | 95 | # CONFIG_EMBEDDED is not set |
93 | CONFIG_SYSCTL_SYSCALL=y | 96 | CONFIG_SYSCTL_SYSCALL=y |
97 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
94 | CONFIG_KALLSYMS=y | 98 | CONFIG_KALLSYMS=y |
95 | # CONFIG_KALLSYMS_ALL is not set | 99 | # CONFIG_KALLSYMS_ALL is not set |
96 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 100 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -119,12 +123,14 @@ CONFIG_HAVE_OPROFILE=y | |||
119 | # CONFIG_KPROBES is not set | 123 | # CONFIG_KPROBES is not set |
120 | CONFIG_HAVE_KPROBES=y | 124 | CONFIG_HAVE_KPROBES=y |
121 | CONFIG_HAVE_KRETPROBES=y | 125 | CONFIG_HAVE_KRETPROBES=y |
126 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
122 | CONFIG_PROC_PAGE_MONITOR=y | 127 | CONFIG_PROC_PAGE_MONITOR=y |
123 | CONFIG_SLABINFO=y | 128 | CONFIG_SLABINFO=y |
124 | CONFIG_RT_MUTEXES=y | 129 | CONFIG_RT_MUTEXES=y |
125 | # CONFIG_TINY_SHMEM is not set | 130 | # CONFIG_TINY_SHMEM is not set |
126 | CONFIG_BASE_SMALL=0 | 131 | CONFIG_BASE_SMALL=0 |
127 | CONFIG_MODULES=y | 132 | CONFIG_MODULES=y |
133 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
128 | CONFIG_MODULE_UNLOAD=y | 134 | CONFIG_MODULE_UNLOAD=y |
129 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 135 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
130 | CONFIG_MODVERSIONS=y | 136 | CONFIG_MODVERSIONS=y |
@@ -165,11 +171,11 @@ CONFIG_PPC_PMAC=y | |||
165 | CONFIG_PPC_PMAC64=y | 171 | CONFIG_PPC_PMAC64=y |
166 | # CONFIG_PPC_MAPLE is not set | 172 | # CONFIG_PPC_MAPLE is not set |
167 | # CONFIG_PPC_PASEMI is not set | 173 | # CONFIG_PPC_PASEMI is not set |
168 | # CONFIG_PPC_CELLEB is not set | ||
169 | # CONFIG_PPC_PS3 is not set | 174 | # CONFIG_PPC_PS3 is not set |
170 | # CONFIG_PPC_CELL is not set | 175 | # CONFIG_PPC_CELL is not set |
171 | # CONFIG_PPC_CELL_NATIVE is not set | 176 | # CONFIG_PPC_CELL_NATIVE is not set |
172 | # CONFIG_PPC_IBM_CELL_BLADE is not set | 177 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
178 | # CONFIG_PPC_CELLEB is not set | ||
173 | # CONFIG_PQ2ADS is not set | 179 | # CONFIG_PQ2ADS is not set |
174 | CONFIG_PPC_NATIVE=y | 180 | CONFIG_PPC_NATIVE=y |
175 | # CONFIG_IPIC is not set | 181 | # CONFIG_IPIC is not set |
@@ -190,6 +196,7 @@ CONFIG_CPU_FREQ_TABLE=y | |||
190 | CONFIG_CPU_FREQ_STAT=y | 196 | CONFIG_CPU_FREQ_STAT=y |
191 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 197 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
192 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 198 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y |
199 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
193 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 200 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set |
194 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | 201 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set |
195 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | 202 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set |
@@ -224,7 +231,6 @@ CONFIG_PREEMPT_NONE=y | |||
224 | CONFIG_BINFMT_ELF=y | 231 | CONFIG_BINFMT_ELF=y |
225 | CONFIG_COMPAT_BINFMT_ELF=y | 232 | CONFIG_COMPAT_BINFMT_ELF=y |
226 | # CONFIG_BINFMT_MISC is not set | 233 | # CONFIG_BINFMT_MISC is not set |
227 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
228 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 234 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
229 | CONFIG_IOMMU_VMERGE=y | 235 | CONFIG_IOMMU_VMERGE=y |
230 | CONFIG_IOMMU_HELPER=y | 236 | CONFIG_IOMMU_HELPER=y |
@@ -248,12 +254,14 @@ CONFIG_FLATMEM=y | |||
248 | CONFIG_FLAT_NODE_MEM_MAP=y | 254 | CONFIG_FLAT_NODE_MEM_MAP=y |
249 | # CONFIG_SPARSEMEM_STATIC is not set | 255 | # CONFIG_SPARSEMEM_STATIC is not set |
250 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 256 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
257 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
251 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 258 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
252 | CONFIG_RESOURCES_64BIT=y | 259 | CONFIG_RESOURCES_64BIT=y |
253 | CONFIG_ZONE_DMA_FLAG=1 | 260 | CONFIG_ZONE_DMA_FLAG=1 |
254 | CONFIG_BOUNCE=y | 261 | CONFIG_BOUNCE=y |
255 | # CONFIG_PPC_HAS_HASH_64K is not set | 262 | # CONFIG_PPC_HAS_HASH_64K is not set |
256 | # CONFIG_PPC_64K_PAGES is not set | 263 | # CONFIG_PPC_64K_PAGES is not set |
264 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
257 | # CONFIG_SCHED_SMT is not set | 265 | # CONFIG_SCHED_SMT is not set |
258 | CONFIG_PROC_DEVICETREE=y | 266 | CONFIG_PROC_DEVICETREE=y |
259 | # CONFIG_CMDLINE_BOOL is not set | 267 | # CONFIG_CMDLINE_BOOL is not set |
@@ -278,7 +286,10 @@ CONFIG_PCI_MSI=y | |||
278 | # CONFIG_PCI_DEBUG is not set | 286 | # CONFIG_PCI_DEBUG is not set |
279 | # CONFIG_PCCARD is not set | 287 | # CONFIG_PCCARD is not set |
280 | # CONFIG_HOTPLUG_PCI is not set | 288 | # CONFIG_HOTPLUG_PCI is not set |
289 | # CONFIG_HAS_RAPIDIO is not set | ||
290 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
281 | CONFIG_KERNEL_START=0xc000000000000000 | 291 | CONFIG_KERNEL_START=0xc000000000000000 |
292 | CONFIG_PHYSICAL_START=0x00000000 | ||
282 | 293 | ||
283 | # | 294 | # |
284 | # Networking | 295 | # Networking |
@@ -325,8 +336,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
325 | # CONFIG_TCP_MD5SIG is not set | 336 | # CONFIG_TCP_MD5SIG is not set |
326 | # CONFIG_IP_VS is not set | 337 | # CONFIG_IP_VS is not set |
327 | # CONFIG_IPV6 is not set | 338 | # CONFIG_IPV6 is not set |
328 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
329 | # CONFIG_INET6_TUNNEL is not set | ||
330 | # CONFIG_NETWORK_SECMARK is not set | 339 | # CONFIG_NETWORK_SECMARK is not set |
331 | CONFIG_NETFILTER=y | 340 | CONFIG_NETFILTER=y |
332 | # CONFIG_NETFILTER_DEBUG is not set | 341 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -342,6 +351,7 @@ CONFIG_NF_CONNTRACK=m | |||
342 | # CONFIG_NF_CT_ACCT is not set | 351 | # CONFIG_NF_CT_ACCT is not set |
343 | CONFIG_NF_CONNTRACK_MARK=y | 352 | CONFIG_NF_CONNTRACK_MARK=y |
344 | CONFIG_NF_CONNTRACK_EVENTS=y | 353 | CONFIG_NF_CONNTRACK_EVENTS=y |
354 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
345 | # CONFIG_NF_CT_PROTO_SCTP is not set | 355 | # CONFIG_NF_CT_PROTO_SCTP is not set |
346 | # CONFIG_NF_CT_PROTO_UDPLITE is not set | 356 | # CONFIG_NF_CT_PROTO_UDPLITE is not set |
347 | # CONFIG_NF_CONNTRACK_AMANDA is not set | 357 | # CONFIG_NF_CONNTRACK_AMANDA is not set |
@@ -418,6 +428,7 @@ CONFIG_FW_LOADER=y | |||
418 | # CONFIG_CONNECTOR is not set | 428 | # CONFIG_CONNECTOR is not set |
419 | # CONFIG_MTD is not set | 429 | # CONFIG_MTD is not set |
420 | CONFIG_OF_DEVICE=y | 430 | CONFIG_OF_DEVICE=y |
431 | CONFIG_OF_I2C=y | ||
421 | # CONFIG_PARPORT is not set | 432 | # CONFIG_PARPORT is not set |
422 | CONFIG_BLK_DEV=y | 433 | CONFIG_BLK_DEV=y |
423 | # CONFIG_BLK_DEV_FD is not set | 434 | # CONFIG_BLK_DEV_FD is not set |
@@ -465,7 +476,6 @@ CONFIG_IDE_PROC_FS=y | |||
465 | # | 476 | # |
466 | # IDE chipset support/bugfixes | 477 | # IDE chipset support/bugfixes |
467 | # | 478 | # |
468 | CONFIG_IDE_GENERIC=y | ||
469 | # CONFIG_BLK_DEV_PLATFORM is not set | 479 | # CONFIG_BLK_DEV_PLATFORM is not set |
470 | CONFIG_BLK_DEV_IDEDMA_SFF=y | 480 | CONFIG_BLK_DEV_IDEDMA_SFF=y |
471 | 481 | ||
@@ -506,7 +516,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y | |||
506 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 516 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
507 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 517 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
508 | CONFIG_BLK_DEV_IDEDMA=y | 518 | CONFIG_BLK_DEV_IDEDMA=y |
509 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 519 | # CONFIG_BLK_DEV_HD_ONLY is not set |
510 | # CONFIG_BLK_DEV_HD is not set | 520 | # CONFIG_BLK_DEV_HD is not set |
511 | 521 | ||
512 | # | 522 | # |
@@ -584,61 +594,10 @@ CONFIG_SCSI_LOWLEVEL=y | |||
584 | # CONFIG_SCSI_SRP is not set | 594 | # CONFIG_SCSI_SRP is not set |
585 | CONFIG_ATA=y | 595 | CONFIG_ATA=y |
586 | # CONFIG_ATA_NONSTANDARD is not set | 596 | # CONFIG_ATA_NONSTANDARD is not set |
597 | CONFIG_SATA_PMP=y | ||
587 | # CONFIG_SATA_AHCI is not set | 598 | # CONFIG_SATA_AHCI is not set |
588 | CONFIG_SATA_SVW=y | ||
589 | # CONFIG_ATA_PIIX is not set | ||
590 | # CONFIG_SATA_MV is not set | ||
591 | # CONFIG_SATA_NV is not set | ||
592 | # CONFIG_PDC_ADMA is not set | ||
593 | # CONFIG_SATA_QSTOR is not set | ||
594 | # CONFIG_SATA_PROMISE is not set | ||
595 | # CONFIG_SATA_SX4 is not set | ||
596 | # CONFIG_SATA_SIL is not set | ||
597 | # CONFIG_SATA_SIL24 is not set | 599 | # CONFIG_SATA_SIL24 is not set |
598 | # CONFIG_SATA_SIS is not set | 600 | # CONFIG_ATA_SFF is not set |
599 | # CONFIG_SATA_ULI is not set | ||
600 | # CONFIG_SATA_VIA is not set | ||
601 | # CONFIG_SATA_VITESSE is not set | ||
602 | # CONFIG_SATA_INIC162X is not set | ||
603 | # CONFIG_PATA_ALI is not set | ||
604 | # CONFIG_PATA_AMD is not set | ||
605 | # CONFIG_PATA_ARTOP is not set | ||
606 | # CONFIG_PATA_ATIIXP is not set | ||
607 | # CONFIG_PATA_CMD640_PCI is not set | ||
608 | # CONFIG_PATA_CMD64X is not set | ||
609 | # CONFIG_PATA_CS5520 is not set | ||
610 | # CONFIG_PATA_CS5530 is not set | ||
611 | # CONFIG_PATA_CYPRESS is not set | ||
612 | # CONFIG_PATA_EFAR is not set | ||
613 | # CONFIG_ATA_GENERIC is not set | ||
614 | # CONFIG_PATA_HPT366 is not set | ||
615 | # CONFIG_PATA_HPT37X is not set | ||
616 | # CONFIG_PATA_HPT3X2N is not set | ||
617 | # CONFIG_PATA_HPT3X3 is not set | ||
618 | # CONFIG_PATA_IT821X is not set | ||
619 | # CONFIG_PATA_IT8213 is not set | ||
620 | # CONFIG_PATA_JMICRON is not set | ||
621 | # CONFIG_PATA_TRIFLEX is not set | ||
622 | # CONFIG_PATA_MARVELL is not set | ||
623 | # CONFIG_PATA_MPIIX is not set | ||
624 | # CONFIG_PATA_OLDPIIX is not set | ||
625 | # CONFIG_PATA_NETCELL is not set | ||
626 | # CONFIG_PATA_NINJA32 is not set | ||
627 | # CONFIG_PATA_NS87410 is not set | ||
628 | # CONFIG_PATA_NS87415 is not set | ||
629 | # CONFIG_PATA_OPTI is not set | ||
630 | # CONFIG_PATA_OPTIDMA is not set | ||
631 | # CONFIG_PATA_PDC_OLD is not set | ||
632 | # CONFIG_PATA_RADISYS is not set | ||
633 | # CONFIG_PATA_RZ1000 is not set | ||
634 | # CONFIG_PATA_SC1200 is not set | ||
635 | # CONFIG_PATA_SERVERWORKS is not set | ||
636 | # CONFIG_PATA_PDC2027X is not set | ||
637 | # CONFIG_PATA_SIL680 is not set | ||
638 | # CONFIG_PATA_SIS is not set | ||
639 | # CONFIG_PATA_VIA is not set | ||
640 | # CONFIG_PATA_WINBOND is not set | ||
641 | # CONFIG_PATA_PLATFORM is not set | ||
642 | CONFIG_MD=y | 601 | CONFIG_MD=y |
643 | CONFIG_BLK_DEV_MD=y | 602 | CONFIG_BLK_DEV_MD=y |
644 | CONFIG_MD_LINEAR=y | 603 | CONFIG_MD_LINEAR=y |
@@ -740,7 +699,6 @@ CONFIG_E1000=y | |||
740 | # CONFIG_SIS190 is not set | 699 | # CONFIG_SIS190 is not set |
741 | # CONFIG_SKGE is not set | 700 | # CONFIG_SKGE is not set |
742 | # CONFIG_SKY2 is not set | 701 | # CONFIG_SKY2 is not set |
743 | # CONFIG_SK98LIN is not set | ||
744 | # CONFIG_VIA_VELOCITY is not set | 702 | # CONFIG_VIA_VELOCITY is not set |
745 | CONFIG_TIGON3=y | 703 | CONFIG_TIGON3=y |
746 | # CONFIG_BNX2 is not set | 704 | # CONFIG_BNX2 is not set |
@@ -755,10 +713,10 @@ CONFIG_NETDEV_10000=y | |||
755 | # CONFIG_MYRI10GE is not set | 713 | # CONFIG_MYRI10GE is not set |
756 | # CONFIG_NETXEN_NIC is not set | 714 | # CONFIG_NETXEN_NIC is not set |
757 | # CONFIG_NIU is not set | 715 | # CONFIG_NIU is not set |
758 | # CONFIG_PASEMI_MAC is not set | ||
759 | # CONFIG_MLX4_CORE is not set | 716 | # CONFIG_MLX4_CORE is not set |
760 | # CONFIG_TEHUTI is not set | 717 | # CONFIG_TEHUTI is not set |
761 | # CONFIG_BNX2X is not set | 718 | # CONFIG_BNX2X is not set |
719 | # CONFIG_SFC is not set | ||
762 | CONFIG_TR=y | 720 | CONFIG_TR=y |
763 | CONFIG_IBMOL=y | 721 | CONFIG_IBMOL=y |
764 | # CONFIG_3C359 is not set | 722 | # CONFIG_3C359 is not set |
@@ -769,6 +727,7 @@ CONFIG_IBMOL=y | |||
769 | # | 727 | # |
770 | # CONFIG_WLAN_PRE80211 is not set | 728 | # CONFIG_WLAN_PRE80211 is not set |
771 | # CONFIG_WLAN_80211 is not set | 729 | # CONFIG_WLAN_80211 is not set |
730 | # CONFIG_IWLWIFI_LEDS is not set | ||
772 | 731 | ||
773 | # | 732 | # |
774 | # USB Network Adapters | 733 | # USB Network Adapters |
@@ -865,6 +824,7 @@ CONFIG_VT=y | |||
865 | CONFIG_VT_CONSOLE=y | 824 | CONFIG_VT_CONSOLE=y |
866 | CONFIG_HW_CONSOLE=y | 825 | CONFIG_HW_CONSOLE=y |
867 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 826 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
827 | CONFIG_DEVKMEM=y | ||
868 | # CONFIG_SERIAL_NONSTANDARD is not set | 828 | # CONFIG_SERIAL_NONSTANDARD is not set |
869 | # CONFIG_NOZOMI is not set | 829 | # CONFIG_NOZOMI is not set |
870 | 830 | ||
@@ -895,13 +855,7 @@ CONFIG_DEVPORT=y | |||
895 | CONFIG_I2C=y | 855 | CONFIG_I2C=y |
896 | CONFIG_I2C_BOARDINFO=y | 856 | CONFIG_I2C_BOARDINFO=y |
897 | CONFIG_I2C_CHARDEV=y | 857 | CONFIG_I2C_CHARDEV=y |
898 | |||
899 | # | ||
900 | # I2C Algorithms | ||
901 | # | ||
902 | CONFIG_I2C_ALGOBIT=y | 858 | CONFIG_I2C_ALGOBIT=y |
903 | # CONFIG_I2C_ALGOPCF is not set | ||
904 | # CONFIG_I2C_ALGOPCA is not set | ||
905 | 859 | ||
906 | # | 860 | # |
907 | # I2C Hardware Bus support | 861 | # I2C Hardware Bus support |
@@ -930,6 +884,7 @@ CONFIG_I2C_POWERMAC=y | |||
930 | # CONFIG_I2C_VIA is not set | 884 | # CONFIG_I2C_VIA is not set |
931 | # CONFIG_I2C_VIAPRO is not set | 885 | # CONFIG_I2C_VIAPRO is not set |
932 | # CONFIG_I2C_VOODOO3 is not set | 886 | # CONFIG_I2C_VOODOO3 is not set |
887 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
933 | 888 | ||
934 | # | 889 | # |
935 | # Miscellaneous I2C Chip support | 890 | # Miscellaneous I2C Chip support |
@@ -939,19 +894,13 @@ CONFIG_I2C_POWERMAC=y | |||
939 | # CONFIG_SENSORS_PCF8574 is not set | 894 | # CONFIG_SENSORS_PCF8574 is not set |
940 | # CONFIG_PCF8575 is not set | 895 | # CONFIG_PCF8575 is not set |
941 | # CONFIG_SENSORS_PCF8591 is not set | 896 | # CONFIG_SENSORS_PCF8591 is not set |
942 | # CONFIG_TPS65010 is not set | ||
943 | # CONFIG_SENSORS_MAX6875 is not set | 897 | # CONFIG_SENSORS_MAX6875 is not set |
944 | # CONFIG_SENSORS_TSL2550 is not set | 898 | # CONFIG_SENSORS_TSL2550 is not set |
945 | # CONFIG_I2C_DEBUG_CORE is not set | 899 | # CONFIG_I2C_DEBUG_CORE is not set |
946 | # CONFIG_I2C_DEBUG_ALGO is not set | 900 | # CONFIG_I2C_DEBUG_ALGO is not set |
947 | # CONFIG_I2C_DEBUG_BUS is not set | 901 | # CONFIG_I2C_DEBUG_BUS is not set |
948 | # CONFIG_I2C_DEBUG_CHIP is not set | 902 | # CONFIG_I2C_DEBUG_CHIP is not set |
949 | |||
950 | # | ||
951 | # SPI support | ||
952 | # | ||
953 | # CONFIG_SPI is not set | 903 | # CONFIG_SPI is not set |
954 | # CONFIG_SPI_MASTER is not set | ||
955 | # CONFIG_W1 is not set | 904 | # CONFIG_W1 is not set |
956 | # CONFIG_POWER_SUPPLY is not set | 905 | # CONFIG_POWER_SUPPLY is not set |
957 | # CONFIG_HWMON is not set | 906 | # CONFIG_HWMON is not set |
@@ -968,12 +917,22 @@ CONFIG_SSB_POSSIBLE=y | |||
968 | # Multifunction device drivers | 917 | # Multifunction device drivers |
969 | # | 918 | # |
970 | # CONFIG_MFD_SM501 is not set | 919 | # CONFIG_MFD_SM501 is not set |
920 | # CONFIG_HTC_PASIC3 is not set | ||
971 | 921 | ||
972 | # | 922 | # |
973 | # Multimedia devices | 923 | # Multimedia devices |
974 | # | 924 | # |
925 | |||
926 | # | ||
927 | # Multimedia core support | ||
928 | # | ||
975 | # CONFIG_VIDEO_DEV is not set | 929 | # CONFIG_VIDEO_DEV is not set |
976 | # CONFIG_DVB_CORE is not set | 930 | # CONFIG_DVB_CORE is not set |
931 | # CONFIG_VIDEO_MEDIA is not set | ||
932 | |||
933 | # | ||
934 | # Multimedia drivers | ||
935 | # | ||
977 | CONFIG_DAB=y | 936 | CONFIG_DAB=y |
978 | # CONFIG_USB_DABUSB is not set | 937 | # CONFIG_USB_DABUSB is not set |
979 | 938 | ||
@@ -995,8 +954,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
995 | # CONFIG_FB_SYS_FILLRECT is not set | 954 | # CONFIG_FB_SYS_FILLRECT is not set |
996 | # CONFIG_FB_SYS_COPYAREA is not set | 955 | # CONFIG_FB_SYS_COPYAREA is not set |
997 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 956 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
957 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
998 | # CONFIG_FB_SYS_FOPS is not set | 958 | # CONFIG_FB_SYS_FOPS is not set |
999 | CONFIG_FB_DEFERRED_IO=y | ||
1000 | # CONFIG_FB_SVGALIB is not set | 959 | # CONFIG_FB_SVGALIB is not set |
1001 | CONFIG_FB_MACMODES=y | 960 | CONFIG_FB_MACMODES=y |
1002 | CONFIG_FB_BACKLIGHT=y | 961 | CONFIG_FB_BACKLIGHT=y |
@@ -1112,6 +1071,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1112 | # CONFIG_SND_AU8810 is not set | 1071 | # CONFIG_SND_AU8810 is not set |
1113 | # CONFIG_SND_AU8820 is not set | 1072 | # CONFIG_SND_AU8820 is not set |
1114 | # CONFIG_SND_AU8830 is not set | 1073 | # CONFIG_SND_AU8830 is not set |
1074 | # CONFIG_SND_AW2 is not set | ||
1115 | # CONFIG_SND_AZT3328 is not set | 1075 | # CONFIG_SND_AZT3328 is not set |
1116 | # CONFIG_SND_BT87X is not set | 1076 | # CONFIG_SND_BT87X is not set |
1117 | # CONFIG_SND_CA0106 is not set | 1077 | # CONFIG_SND_CA0106 is not set |
@@ -1198,11 +1158,11 @@ CONFIG_SND_USB_AUDIO=m | |||
1198 | # CONFIG_SND_SOC is not set | 1158 | # CONFIG_SND_SOC is not set |
1199 | 1159 | ||
1200 | # | 1160 | # |
1201 | # SoC Audio support for SuperH | 1161 | # ALSA SoC audio for Freescale SOCs |
1202 | # | 1162 | # |
1203 | 1163 | ||
1204 | # | 1164 | # |
1205 | # ALSA SoC audio for Freescale SOCs | 1165 | # SoC Audio for the Texas Instruments OMAP |
1206 | # | 1166 | # |
1207 | 1167 | ||
1208 | # | 1168 | # |
@@ -1222,6 +1182,7 @@ CONFIG_USB_HID=y | |||
1222 | CONFIG_HID_FF=y | 1182 | CONFIG_HID_FF=y |
1223 | CONFIG_HID_PID=y | 1183 | CONFIG_HID_PID=y |
1224 | CONFIG_LOGITECH_FF=y | 1184 | CONFIG_LOGITECH_FF=y |
1185 | # CONFIG_LOGIRUMBLEPAD2_FF is not set | ||
1225 | # CONFIG_PANTHERLORD_FF is not set | 1186 | # CONFIG_PANTHERLORD_FF is not set |
1226 | CONFIG_THRUSTMASTER_FF=y | 1187 | CONFIG_THRUSTMASTER_FF=y |
1227 | # CONFIG_ZEROPLUS_FF is not set | 1188 | # CONFIG_ZEROPLUS_FF is not set |
@@ -1245,11 +1206,13 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1245 | # | 1206 | # |
1246 | # USB Host Controller Drivers | 1207 | # USB Host Controller Drivers |
1247 | # | 1208 | # |
1209 | # CONFIG_USB_C67X00_HCD is not set | ||
1248 | CONFIG_USB_EHCI_HCD=y | 1210 | CONFIG_USB_EHCI_HCD=y |
1249 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1211 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1250 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1212 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1251 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1213 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1252 | # CONFIG_USB_ISP116X_HCD is not set | 1214 | # CONFIG_USB_ISP116X_HCD is not set |
1215 | # CONFIG_USB_ISP1760_HCD is not set | ||
1253 | CONFIG_USB_OHCI_HCD=y | 1216 | CONFIG_USB_OHCI_HCD=y |
1254 | CONFIG_USB_OHCI_HCD_PPC_OF=y | 1217 | CONFIG_USB_OHCI_HCD_PPC_OF=y |
1255 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y | 1218 | CONFIG_USB_OHCI_HCD_PPC_OF_BE=y |
@@ -1288,6 +1251,7 @@ CONFIG_USB_STORAGE_JUMPSHOT=y | |||
1288 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1251 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1289 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1252 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
1290 | # CONFIG_USB_STORAGE_KARMA is not set | 1253 | # CONFIG_USB_STORAGE_KARMA is not set |
1254 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1291 | # CONFIG_USB_LIBUSUAL is not set | 1255 | # CONFIG_USB_LIBUSUAL is not set |
1292 | 1256 | ||
1293 | # | 1257 | # |
@@ -1342,9 +1306,11 @@ CONFIG_USB_SERIAL_KOBIL_SCT=m | |||
1342 | CONFIG_USB_SERIAL_MCT_U232=m | 1306 | CONFIG_USB_SERIAL_MCT_U232=m |
1343 | # CONFIG_USB_SERIAL_MOS7720 is not set | 1307 | # CONFIG_USB_SERIAL_MOS7720 is not set |
1344 | # CONFIG_USB_SERIAL_MOS7840 is not set | 1308 | # CONFIG_USB_SERIAL_MOS7840 is not set |
1309 | # CONFIG_USB_SERIAL_MOTOROLA is not set | ||
1345 | # CONFIG_USB_SERIAL_NAVMAN is not set | 1310 | # CONFIG_USB_SERIAL_NAVMAN is not set |
1346 | CONFIG_USB_SERIAL_PL2303=m | 1311 | CONFIG_USB_SERIAL_PL2303=m |
1347 | # CONFIG_USB_SERIAL_OTI6858 is not set | 1312 | # CONFIG_USB_SERIAL_OTI6858 is not set |
1313 | # CONFIG_USB_SERIAL_SPCP8X5 is not set | ||
1348 | # CONFIG_USB_SERIAL_HP4X is not set | 1314 | # CONFIG_USB_SERIAL_HP4X is not set |
1349 | CONFIG_USB_SERIAL_SAFE=m | 1315 | CONFIG_USB_SERIAL_SAFE=m |
1350 | CONFIG_USB_SERIAL_SAFE_PADDED=y | 1316 | CONFIG_USB_SERIAL_SAFE_PADDED=y |
@@ -1383,14 +1349,11 @@ CONFIG_USB_APPLEDISPLAY=m | |||
1383 | # CONFIG_MMC is not set | 1349 | # CONFIG_MMC is not set |
1384 | # CONFIG_MEMSTICK is not set | 1350 | # CONFIG_MEMSTICK is not set |
1385 | # CONFIG_NEW_LEDS is not set | 1351 | # CONFIG_NEW_LEDS is not set |
1352 | # CONFIG_ACCESSIBILITY is not set | ||
1386 | # CONFIG_INFINIBAND is not set | 1353 | # CONFIG_INFINIBAND is not set |
1387 | # CONFIG_EDAC is not set | 1354 | # CONFIG_EDAC is not set |
1388 | # CONFIG_RTC_CLASS is not set | 1355 | # CONFIG_RTC_CLASS is not set |
1389 | # CONFIG_DMADEVICES is not set | 1356 | # CONFIG_DMADEVICES is not set |
1390 | |||
1391 | # | ||
1392 | # Userspace I/O | ||
1393 | # | ||
1394 | # CONFIG_UIO is not set | 1357 | # CONFIG_UIO is not set |
1395 | 1358 | ||
1396 | # | 1359 | # |
@@ -1420,9 +1383,9 @@ CONFIG_REISERFS_FS_SECURITY=y | |||
1420 | CONFIG_FS_POSIX_ACL=y | 1383 | CONFIG_FS_POSIX_ACL=y |
1421 | CONFIG_XFS_FS=m | 1384 | CONFIG_XFS_FS=m |
1422 | # CONFIG_XFS_QUOTA is not set | 1385 | # CONFIG_XFS_QUOTA is not set |
1423 | CONFIG_XFS_SECURITY=y | ||
1424 | CONFIG_XFS_POSIX_ACL=y | 1386 | CONFIG_XFS_POSIX_ACL=y |
1425 | # CONFIG_XFS_RT is not set | 1387 | # CONFIG_XFS_RT is not set |
1388 | # CONFIG_XFS_DEBUG is not set | ||
1426 | # CONFIG_GFS2_FS is not set | 1389 | # CONFIG_GFS2_FS is not set |
1427 | # CONFIG_OCFS2_FS is not set | 1390 | # CONFIG_OCFS2_FS is not set |
1428 | CONFIG_DNOTIFY=y | 1391 | CONFIG_DNOTIFY=y |
@@ -1488,13 +1451,11 @@ CONFIG_NFS_FS=y | |||
1488 | CONFIG_NFS_V3=y | 1451 | CONFIG_NFS_V3=y |
1489 | CONFIG_NFS_V3_ACL=y | 1452 | CONFIG_NFS_V3_ACL=y |
1490 | CONFIG_NFS_V4=y | 1453 | CONFIG_NFS_V4=y |
1491 | # CONFIG_NFS_DIRECTIO is not set | ||
1492 | CONFIG_NFSD=y | 1454 | CONFIG_NFSD=y |
1493 | CONFIG_NFSD_V2_ACL=y | 1455 | CONFIG_NFSD_V2_ACL=y |
1494 | CONFIG_NFSD_V3=y | 1456 | CONFIG_NFSD_V3=y |
1495 | CONFIG_NFSD_V3_ACL=y | 1457 | CONFIG_NFSD_V3_ACL=y |
1496 | CONFIG_NFSD_V4=y | 1458 | CONFIG_NFSD_V4=y |
1497 | CONFIG_NFSD_TCP=y | ||
1498 | CONFIG_LOCKD=y | 1459 | CONFIG_LOCKD=y |
1499 | CONFIG_LOCKD_V4=y | 1460 | CONFIG_LOCKD_V4=y |
1500 | CONFIG_EXPORTFS=y | 1461 | CONFIG_EXPORTFS=y |
@@ -1583,9 +1544,10 @@ CONFIG_NLS_UTF8=y | |||
1583 | # Library routines | 1544 | # Library routines |
1584 | # | 1545 | # |
1585 | CONFIG_BITREVERSE=y | 1546 | CONFIG_BITREVERSE=y |
1547 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1586 | CONFIG_CRC_CCITT=m | 1548 | CONFIG_CRC_CCITT=m |
1587 | # CONFIG_CRC16 is not set | 1549 | # CONFIG_CRC16 is not set |
1588 | # CONFIG_CRC_ITU_T is not set | 1550 | CONFIG_CRC_ITU_T=m |
1589 | CONFIG_CRC32=y | 1551 | CONFIG_CRC32=y |
1590 | # CONFIG_CRC7 is not set | 1552 | # CONFIG_CRC7 is not set |
1591 | CONFIG_LIBCRC32C=m | 1553 | CONFIG_LIBCRC32C=m |
@@ -1603,6 +1565,7 @@ CONFIG_HAVE_LMB=y | |||
1603 | # CONFIG_PRINTK_TIME is not set | 1565 | # CONFIG_PRINTK_TIME is not set |
1604 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1566 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1605 | CONFIG_ENABLE_MUST_CHECK=y | 1567 | CONFIG_ENABLE_MUST_CHECK=y |
1568 | CONFIG_FRAME_WARN=2048 | ||
1606 | CONFIG_MAGIC_SYSRQ=y | 1569 | CONFIG_MAGIC_SYSRQ=y |
1607 | # CONFIG_UNUSED_SYMBOLS is not set | 1570 | # CONFIG_UNUSED_SYMBOLS is not set |
1608 | CONFIG_DEBUG_FS=y | 1571 | CONFIG_DEBUG_FS=y |
@@ -1613,18 +1576,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1613 | CONFIG_SCHED_DEBUG=y | 1576 | CONFIG_SCHED_DEBUG=y |
1614 | # CONFIG_SCHEDSTATS is not set | 1577 | # CONFIG_SCHEDSTATS is not set |
1615 | # CONFIG_TIMER_STATS is not set | 1578 | # CONFIG_TIMER_STATS is not set |
1579 | # CONFIG_DEBUG_OBJECTS is not set | ||
1616 | # CONFIG_SLUB_DEBUG_ON is not set | 1580 | # CONFIG_SLUB_DEBUG_ON is not set |
1617 | # CONFIG_SLUB_STATS is not set | 1581 | # CONFIG_SLUB_STATS is not set |
1618 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1582 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1619 | # CONFIG_RT_MUTEX_TESTER is not set | 1583 | # CONFIG_RT_MUTEX_TESTER is not set |
1620 | # CONFIG_DEBUG_SPINLOCK is not set | 1584 | # CONFIG_DEBUG_SPINLOCK is not set |
1621 | CONFIG_DEBUG_MUTEXES=y | 1585 | CONFIG_DEBUG_MUTEXES=y |
1586 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1587 | # CONFIG_PROVE_LOCKING is not set | ||
1588 | # CONFIG_LOCK_STAT is not set | ||
1622 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1589 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1623 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1590 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1624 | # CONFIG_DEBUG_KOBJECT is not set | 1591 | # CONFIG_DEBUG_KOBJECT is not set |
1625 | CONFIG_DEBUG_BUGVERBOSE=y | 1592 | CONFIG_DEBUG_BUGVERBOSE=y |
1626 | # CONFIG_DEBUG_INFO is not set | 1593 | # CONFIG_DEBUG_INFO is not set |
1627 | # CONFIG_DEBUG_VM is not set | 1594 | # CONFIG_DEBUG_VM is not set |
1595 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1628 | # CONFIG_DEBUG_LIST is not set | 1596 | # CONFIG_DEBUG_LIST is not set |
1629 | # CONFIG_DEBUG_SG is not set | 1597 | # CONFIG_DEBUG_SG is not set |
1630 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1598 | # CONFIG_BOOT_PRINTK_DELAY is not set |
@@ -1648,53 +1616,83 @@ CONFIG_BOOTX_TEXT=y | |||
1648 | # CONFIG_SECURITY is not set | 1616 | # CONFIG_SECURITY is not set |
1649 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1617 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1650 | CONFIG_CRYPTO=y | 1618 | CONFIG_CRYPTO=y |
1619 | |||
1620 | # | ||
1621 | # Crypto core or helper | ||
1622 | # | ||
1651 | CONFIG_CRYPTO_ALGAPI=y | 1623 | CONFIG_CRYPTO_ALGAPI=y |
1652 | CONFIG_CRYPTO_AEAD=m | 1624 | CONFIG_CRYPTO_AEAD=m |
1653 | CONFIG_CRYPTO_BLKCIPHER=y | 1625 | CONFIG_CRYPTO_BLKCIPHER=y |
1654 | # CONFIG_CRYPTO_SEQIV is not set | ||
1655 | CONFIG_CRYPTO_HASH=y | 1626 | CONFIG_CRYPTO_HASH=y |
1656 | CONFIG_CRYPTO_MANAGER=y | 1627 | CONFIG_CRYPTO_MANAGER=y |
1628 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1629 | CONFIG_CRYPTO_NULL=m | ||
1630 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1631 | CONFIG_CRYPTO_AUTHENC=m | ||
1632 | CONFIG_CRYPTO_TEST=m | ||
1633 | |||
1634 | # | ||
1635 | # Authenticated Encryption with Associated Data | ||
1636 | # | ||
1637 | # CONFIG_CRYPTO_CCM is not set | ||
1638 | # CONFIG_CRYPTO_GCM is not set | ||
1639 | # CONFIG_CRYPTO_SEQIV is not set | ||
1640 | |||
1641 | # | ||
1642 | # Block modes | ||
1643 | # | ||
1644 | CONFIG_CRYPTO_CBC=y | ||
1645 | # CONFIG_CRYPTO_CTR is not set | ||
1646 | # CONFIG_CRYPTO_CTS is not set | ||
1647 | CONFIG_CRYPTO_ECB=m | ||
1648 | # CONFIG_CRYPTO_LRW is not set | ||
1649 | CONFIG_CRYPTO_PCBC=m | ||
1650 | # CONFIG_CRYPTO_XTS is not set | ||
1651 | |||
1652 | # | ||
1653 | # Hash modes | ||
1654 | # | ||
1657 | CONFIG_CRYPTO_HMAC=y | 1655 | CONFIG_CRYPTO_HMAC=y |
1658 | # CONFIG_CRYPTO_XCBC is not set | 1656 | # CONFIG_CRYPTO_XCBC is not set |
1659 | CONFIG_CRYPTO_NULL=m | 1657 | |
1658 | # | ||
1659 | # Digest | ||
1660 | # | ||
1661 | CONFIG_CRYPTO_CRC32C=m | ||
1660 | CONFIG_CRYPTO_MD4=m | 1662 | CONFIG_CRYPTO_MD4=m |
1661 | CONFIG_CRYPTO_MD5=y | 1663 | CONFIG_CRYPTO_MD5=y |
1664 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1662 | CONFIG_CRYPTO_SHA1=m | 1665 | CONFIG_CRYPTO_SHA1=m |
1663 | CONFIG_CRYPTO_SHA256=m | 1666 | CONFIG_CRYPTO_SHA256=m |
1664 | CONFIG_CRYPTO_SHA512=m | 1667 | CONFIG_CRYPTO_SHA512=m |
1665 | CONFIG_CRYPTO_WP512=m | ||
1666 | # CONFIG_CRYPTO_TGR192 is not set | 1668 | # CONFIG_CRYPTO_TGR192 is not set |
1667 | # CONFIG_CRYPTO_GF128MUL is not set | 1669 | CONFIG_CRYPTO_WP512=m |
1668 | CONFIG_CRYPTO_ECB=m | 1670 | |
1669 | CONFIG_CRYPTO_CBC=y | 1671 | # |
1670 | CONFIG_CRYPTO_PCBC=m | 1672 | # Ciphers |
1671 | # CONFIG_CRYPTO_LRW is not set | 1673 | # |
1672 | # CONFIG_CRYPTO_XTS is not set | ||
1673 | # CONFIG_CRYPTO_CTR is not set | ||
1674 | # CONFIG_CRYPTO_GCM is not set | ||
1675 | # CONFIG_CRYPTO_CCM is not set | ||
1676 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1677 | CONFIG_CRYPTO_DES=y | ||
1678 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1679 | CONFIG_CRYPTO_BLOWFISH=m | ||
1680 | CONFIG_CRYPTO_TWOFISH=m | ||
1681 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1682 | CONFIG_CRYPTO_SERPENT=m | ||
1683 | CONFIG_CRYPTO_AES=m | 1674 | CONFIG_CRYPTO_AES=m |
1675 | CONFIG_CRYPTO_ANUBIS=m | ||
1676 | CONFIG_CRYPTO_ARC4=m | ||
1677 | CONFIG_CRYPTO_BLOWFISH=m | ||
1678 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1684 | CONFIG_CRYPTO_CAST5=m | 1679 | CONFIG_CRYPTO_CAST5=m |
1685 | CONFIG_CRYPTO_CAST6=m | 1680 | CONFIG_CRYPTO_CAST6=m |
1686 | CONFIG_CRYPTO_TEA=m | 1681 | CONFIG_CRYPTO_DES=y |
1687 | CONFIG_CRYPTO_ARC4=m | 1682 | # CONFIG_CRYPTO_FCRYPT is not set |
1688 | CONFIG_CRYPTO_KHAZAD=m | 1683 | CONFIG_CRYPTO_KHAZAD=m |
1689 | CONFIG_CRYPTO_ANUBIS=m | ||
1690 | # CONFIG_CRYPTO_SEED is not set | ||
1691 | # CONFIG_CRYPTO_SALSA20 is not set | 1684 | # CONFIG_CRYPTO_SALSA20 is not set |
1685 | # CONFIG_CRYPTO_SEED is not set | ||
1686 | CONFIG_CRYPTO_SERPENT=m | ||
1687 | CONFIG_CRYPTO_TEA=m | ||
1688 | CONFIG_CRYPTO_TWOFISH=m | ||
1689 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1690 | |||
1691 | # | ||
1692 | # Compression | ||
1693 | # | ||
1692 | CONFIG_CRYPTO_DEFLATE=m | 1694 | CONFIG_CRYPTO_DEFLATE=m |
1693 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1694 | CONFIG_CRYPTO_CRC32C=m | ||
1695 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1696 | CONFIG_CRYPTO_TEST=m | ||
1697 | CONFIG_CRYPTO_AUTHENC=m | ||
1698 | # CONFIG_CRYPTO_LZO is not set | 1695 | # CONFIG_CRYPTO_LZO is not set |
1699 | # CONFIG_CRYPTO_HW is not set | 1696 | # CONFIG_CRYPTO_HW is not set |
1700 | # CONFIG_PPC_CLOCK is not set | 1697 | # CONFIG_PPC_CLOCK is not set |
1698 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig index b3128fb7ce7e..63f0bdb6340d 100644 --- a/arch/powerpc/configs/iseries_defconfig +++ b/arch/powerpc/configs/iseries_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Thu Mar 27 13:55:45 2008 | 4 | # Tue May 20 20:01:36 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
32 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
33 | CONFIG_STACKTRACE_SUPPORT=y | ||
34 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
35 | CONFIG_ARCH_HAS_ILOG2_U64=y | 38 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -91,6 +94,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
91 | CONFIG_SYSCTL=y | 94 | CONFIG_SYSCTL=y |
92 | # CONFIG_EMBEDDED is not set | 95 | # CONFIG_EMBEDDED is not set |
93 | CONFIG_SYSCTL_SYSCALL=y | 96 | CONFIG_SYSCTL_SYSCALL=y |
97 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
94 | CONFIG_KALLSYMS=y | 98 | CONFIG_KALLSYMS=y |
95 | # CONFIG_KALLSYMS_ALL is not set | 99 | # CONFIG_KALLSYMS_ALL is not set |
96 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 100 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -118,12 +122,14 @@ CONFIG_HAVE_OPROFILE=y | |||
118 | # CONFIG_KPROBES is not set | 122 | # CONFIG_KPROBES is not set |
119 | CONFIG_HAVE_KPROBES=y | 123 | CONFIG_HAVE_KPROBES=y |
120 | CONFIG_HAVE_KRETPROBES=y | 124 | CONFIG_HAVE_KRETPROBES=y |
125 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
121 | CONFIG_PROC_PAGE_MONITOR=y | 126 | CONFIG_PROC_PAGE_MONITOR=y |
122 | CONFIG_SLABINFO=y | 127 | CONFIG_SLABINFO=y |
123 | CONFIG_RT_MUTEXES=y | 128 | CONFIG_RT_MUTEXES=y |
124 | # CONFIG_TINY_SHMEM is not set | 129 | # CONFIG_TINY_SHMEM is not set |
125 | CONFIG_BASE_SMALL=0 | 130 | CONFIG_BASE_SMALL=0 |
126 | CONFIG_MODULES=y | 131 | CONFIG_MODULES=y |
132 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
127 | CONFIG_MODULE_UNLOAD=y | 133 | CONFIG_MODULE_UNLOAD=y |
128 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 134 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
129 | CONFIG_MODVERSIONS=y | 135 | CONFIG_MODVERSIONS=y |
@@ -172,11 +178,11 @@ CONFIG_VIOPATH=y | |||
172 | # CONFIG_PPC_PMAC is not set | 178 | # CONFIG_PPC_PMAC is not set |
173 | # CONFIG_PPC_MAPLE is not set | 179 | # CONFIG_PPC_MAPLE is not set |
174 | # CONFIG_PPC_PASEMI is not set | 180 | # CONFIG_PPC_PASEMI is not set |
175 | # CONFIG_PPC_CELLEB is not set | ||
176 | # CONFIG_PPC_PS3 is not set | 181 | # CONFIG_PPC_PS3 is not set |
177 | # CONFIG_PPC_CELL is not set | 182 | # CONFIG_PPC_CELL is not set |
178 | # CONFIG_PPC_CELL_NATIVE is not set | 183 | # CONFIG_PPC_CELL_NATIVE is not set |
179 | # CONFIG_PPC_IBM_CELL_BLADE is not set | 184 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
185 | # CONFIG_PPC_CELLEB is not set | ||
180 | # CONFIG_PQ2ADS is not set | 186 | # CONFIG_PQ2ADS is not set |
181 | # CONFIG_IPIC is not set | 187 | # CONFIG_IPIC is not set |
182 | # CONFIG_MPIC is not set | 188 | # CONFIG_MPIC is not set |
@@ -212,7 +218,6 @@ CONFIG_PREEMPT_NONE=y | |||
212 | CONFIG_BINFMT_ELF=y | 218 | CONFIG_BINFMT_ELF=y |
213 | CONFIG_COMPAT_BINFMT_ELF=y | 219 | CONFIG_COMPAT_BINFMT_ELF=y |
214 | # CONFIG_BINFMT_MISC is not set | 220 | # CONFIG_BINFMT_MISC is not set |
215 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
216 | CONFIG_IOMMU_VMERGE=y | 221 | CONFIG_IOMMU_VMERGE=y |
217 | CONFIG_IOMMU_HELPER=y | 222 | CONFIG_IOMMU_HELPER=y |
218 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 223 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
@@ -234,12 +239,14 @@ CONFIG_FLATMEM=y | |||
234 | CONFIG_FLAT_NODE_MEM_MAP=y | 239 | CONFIG_FLAT_NODE_MEM_MAP=y |
235 | # CONFIG_SPARSEMEM_STATIC is not set | 240 | # CONFIG_SPARSEMEM_STATIC is not set |
236 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 241 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
242 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
237 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 243 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
238 | CONFIG_RESOURCES_64BIT=y | 244 | CONFIG_RESOURCES_64BIT=y |
239 | CONFIG_ZONE_DMA_FLAG=1 | 245 | CONFIG_ZONE_DMA_FLAG=1 |
240 | CONFIG_BOUNCE=y | 246 | CONFIG_BOUNCE=y |
241 | # CONFIG_PPC_HAS_HASH_64K is not set | 247 | # CONFIG_PPC_HAS_HASH_64K is not set |
242 | # CONFIG_PPC_64K_PAGES is not set | 248 | # CONFIG_PPC_64K_PAGES is not set |
249 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
243 | # CONFIG_SCHED_SMT is not set | 250 | # CONFIG_SCHED_SMT is not set |
244 | CONFIG_PROC_DEVICETREE=y | 251 | CONFIG_PROC_DEVICETREE=y |
245 | # CONFIG_CMDLINE_BOOL is not set | 252 | # CONFIG_CMDLINE_BOOL is not set |
@@ -263,7 +270,10 @@ CONFIG_ARCH_SUPPORTS_MSI=y | |||
263 | # CONFIG_PCI_DEBUG is not set | 270 | # CONFIG_PCI_DEBUG is not set |
264 | # CONFIG_PCCARD is not set | 271 | # CONFIG_PCCARD is not set |
265 | # CONFIG_HOTPLUG_PCI is not set | 272 | # CONFIG_HOTPLUG_PCI is not set |
273 | # CONFIG_HAS_RAPIDIO is not set | ||
274 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
266 | CONFIG_KERNEL_START=0xc000000000000000 | 275 | CONFIG_KERNEL_START=0xc000000000000000 |
276 | CONFIG_PHYSICAL_START=0x00000000 | ||
267 | 277 | ||
268 | # | 278 | # |
269 | # Networking | 279 | # Networking |
@@ -310,8 +320,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
310 | # CONFIG_TCP_MD5SIG is not set | 320 | # CONFIG_TCP_MD5SIG is not set |
311 | # CONFIG_IP_VS is not set | 321 | # CONFIG_IP_VS is not set |
312 | # CONFIG_IPV6 is not set | 322 | # CONFIG_IPV6 is not set |
313 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
314 | # CONFIG_INET6_TUNNEL is not set | ||
315 | # CONFIG_NETWORK_SECMARK is not set | 323 | # CONFIG_NETWORK_SECMARK is not set |
316 | CONFIG_NETFILTER=y | 324 | CONFIG_NETFILTER=y |
317 | # CONFIG_NETFILTER_DEBUG is not set | 325 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -327,6 +335,7 @@ CONFIG_NF_CONNTRACK=m | |||
327 | # CONFIG_NF_CT_ACCT is not set | 335 | # CONFIG_NF_CT_ACCT is not set |
328 | CONFIG_NF_CONNTRACK_MARK=y | 336 | CONFIG_NF_CONNTRACK_MARK=y |
329 | CONFIG_NF_CONNTRACK_EVENTS=y | 337 | CONFIG_NF_CONNTRACK_EVENTS=y |
338 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
330 | # CONFIG_NF_CT_PROTO_SCTP is not set | 339 | # CONFIG_NF_CT_PROTO_SCTP is not set |
331 | # CONFIG_NF_CT_PROTO_UDPLITE is not set | 340 | # CONFIG_NF_CT_PROTO_UDPLITE is not set |
332 | # CONFIG_NF_CONNTRACK_AMANDA is not set | 341 | # CONFIG_NF_CONNTRACK_AMANDA is not set |
@@ -631,7 +640,6 @@ CONFIG_MII=y | |||
631 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 640 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
632 | CONFIG_NET_PCI=y | 641 | CONFIG_NET_PCI=y |
633 | CONFIG_PCNET32=y | 642 | CONFIG_PCNET32=y |
634 | CONFIG_PCNET32_NAPI=y | ||
635 | # CONFIG_AMD8111_ETH is not set | 643 | # CONFIG_AMD8111_ETH is not set |
636 | # CONFIG_ADAPTEC_STARFIRE is not set | 644 | # CONFIG_ADAPTEC_STARFIRE is not set |
637 | # CONFIG_B44 is not set | 645 | # CONFIG_B44 is not set |
@@ -667,7 +675,6 @@ CONFIG_E1000=m | |||
667 | # CONFIG_SIS190 is not set | 675 | # CONFIG_SIS190 is not set |
668 | # CONFIG_SKGE is not set | 676 | # CONFIG_SKGE is not set |
669 | # CONFIG_SKY2 is not set | 677 | # CONFIG_SKY2 is not set |
670 | # CONFIG_SK98LIN is not set | ||
671 | # CONFIG_VIA_VELOCITY is not set | 678 | # CONFIG_VIA_VELOCITY is not set |
672 | # CONFIG_TIGON3 is not set | 679 | # CONFIG_TIGON3 is not set |
673 | # CONFIG_BNX2 is not set | 680 | # CONFIG_BNX2 is not set |
@@ -682,10 +689,10 @@ CONFIG_NETDEV_10000=y | |||
682 | # CONFIG_MYRI10GE is not set | 689 | # CONFIG_MYRI10GE is not set |
683 | # CONFIG_NETXEN_NIC is not set | 690 | # CONFIG_NETXEN_NIC is not set |
684 | # CONFIG_NIU is not set | 691 | # CONFIG_NIU is not set |
685 | # CONFIG_PASEMI_MAC is not set | ||
686 | # CONFIG_MLX4_CORE is not set | 692 | # CONFIG_MLX4_CORE is not set |
687 | # CONFIG_TEHUTI is not set | 693 | # CONFIG_TEHUTI is not set |
688 | # CONFIG_BNX2X is not set | 694 | # CONFIG_BNX2X is not set |
695 | # CONFIG_SFC is not set | ||
689 | CONFIG_TR=y | 696 | CONFIG_TR=y |
690 | CONFIG_IBMOL=y | 697 | CONFIG_IBMOL=y |
691 | # CONFIG_3C359 is not set | 698 | # CONFIG_3C359 is not set |
@@ -696,6 +703,7 @@ CONFIG_IBMOL=y | |||
696 | # | 703 | # |
697 | # CONFIG_WLAN_PRE80211 is not set | 704 | # CONFIG_WLAN_PRE80211 is not set |
698 | # CONFIG_WLAN_80211 is not set | 705 | # CONFIG_WLAN_80211 is not set |
706 | # CONFIG_IWLWIFI_LEDS is not set | ||
699 | # CONFIG_WAN is not set | 707 | # CONFIG_WAN is not set |
700 | CONFIG_ISERIES_VETH=y | 708 | CONFIG_ISERIES_VETH=y |
701 | # CONFIG_FDDI is not set | 709 | # CONFIG_FDDI is not set |
@@ -762,6 +770,7 @@ CONFIG_VT=y | |||
762 | CONFIG_VT_CONSOLE=y | 770 | CONFIG_VT_CONSOLE=y |
763 | CONFIG_HW_CONSOLE=y | 771 | CONFIG_HW_CONSOLE=y |
764 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 772 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
773 | CONFIG_DEVKMEM=y | ||
765 | # CONFIG_SERIAL_NONSTANDARD is not set | 774 | # CONFIG_SERIAL_NONSTANDARD is not set |
766 | # CONFIG_NOZOMI is not set | 775 | # CONFIG_NOZOMI is not set |
767 | 776 | ||
@@ -793,12 +802,7 @@ CONFIG_MAX_RAW_DEVS=256 | |||
793 | # CONFIG_TCG_TPM is not set | 802 | # CONFIG_TCG_TPM is not set |
794 | CONFIG_DEVPORT=y | 803 | CONFIG_DEVPORT=y |
795 | # CONFIG_I2C is not set | 804 | # CONFIG_I2C is not set |
796 | |||
797 | # | ||
798 | # SPI support | ||
799 | # | ||
800 | # CONFIG_SPI is not set | 805 | # CONFIG_SPI is not set |
801 | # CONFIG_SPI_MASTER is not set | ||
802 | # CONFIG_W1 is not set | 806 | # CONFIG_W1 is not set |
803 | # CONFIG_POWER_SUPPLY is not set | 807 | # CONFIG_POWER_SUPPLY is not set |
804 | # CONFIG_HWMON is not set | 808 | # CONFIG_HWMON is not set |
@@ -815,12 +819,22 @@ CONFIG_SSB_POSSIBLE=y | |||
815 | # Multifunction device drivers | 819 | # Multifunction device drivers |
816 | # | 820 | # |
817 | # CONFIG_MFD_SM501 is not set | 821 | # CONFIG_MFD_SM501 is not set |
822 | # CONFIG_HTC_PASIC3 is not set | ||
818 | 823 | ||
819 | # | 824 | # |
820 | # Multimedia devices | 825 | # Multimedia devices |
821 | # | 826 | # |
827 | |||
828 | # | ||
829 | # Multimedia core support | ||
830 | # | ||
822 | # CONFIG_VIDEO_DEV is not set | 831 | # CONFIG_VIDEO_DEV is not set |
823 | # CONFIG_DVB_CORE is not set | 832 | # CONFIG_DVB_CORE is not set |
833 | # CONFIG_VIDEO_MEDIA is not set | ||
834 | |||
835 | # | ||
836 | # Multimedia drivers | ||
837 | # | ||
824 | # CONFIG_DAB is not set | 838 | # CONFIG_DAB is not set |
825 | 839 | ||
826 | # | 840 | # |
@@ -854,14 +868,11 @@ CONFIG_DUMMY_CONSOLE=y | |||
854 | # CONFIG_MMC is not set | 868 | # CONFIG_MMC is not set |
855 | # CONFIG_MEMSTICK is not set | 869 | # CONFIG_MEMSTICK is not set |
856 | # CONFIG_NEW_LEDS is not set | 870 | # CONFIG_NEW_LEDS is not set |
871 | # CONFIG_ACCESSIBILITY is not set | ||
857 | # CONFIG_INFINIBAND is not set | 872 | # CONFIG_INFINIBAND is not set |
858 | # CONFIG_EDAC is not set | 873 | # CONFIG_EDAC is not set |
859 | # CONFIG_RTC_CLASS is not set | 874 | # CONFIG_RTC_CLASS is not set |
860 | # CONFIG_DMADEVICES is not set | 875 | # CONFIG_DMADEVICES is not set |
861 | |||
862 | # | ||
863 | # Userspace I/O | ||
864 | # | ||
865 | # CONFIG_UIO is not set | 876 | # CONFIG_UIO is not set |
866 | 877 | ||
867 | # | 878 | # |
@@ -895,9 +906,9 @@ CONFIG_JFS_SECURITY=y | |||
895 | CONFIG_FS_POSIX_ACL=y | 906 | CONFIG_FS_POSIX_ACL=y |
896 | CONFIG_XFS_FS=m | 907 | CONFIG_XFS_FS=m |
897 | # CONFIG_XFS_QUOTA is not set | 908 | # CONFIG_XFS_QUOTA is not set |
898 | CONFIG_XFS_SECURITY=y | ||
899 | CONFIG_XFS_POSIX_ACL=y | 909 | CONFIG_XFS_POSIX_ACL=y |
900 | # CONFIG_XFS_RT is not set | 910 | # CONFIG_XFS_RT is not set |
911 | # CONFIG_XFS_DEBUG is not set | ||
901 | CONFIG_GFS2_FS=m | 912 | CONFIG_GFS2_FS=m |
902 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | 913 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m |
903 | CONFIG_GFS2_FS_LOCKING_DLM=m | 914 | CONFIG_GFS2_FS_LOCKING_DLM=m |
@@ -966,13 +977,11 @@ CONFIG_NFS_FS=y | |||
966 | CONFIG_NFS_V3=y | 977 | CONFIG_NFS_V3=y |
967 | CONFIG_NFS_V3_ACL=y | 978 | CONFIG_NFS_V3_ACL=y |
968 | CONFIG_NFS_V4=y | 979 | CONFIG_NFS_V4=y |
969 | # CONFIG_NFS_DIRECTIO is not set | ||
970 | CONFIG_NFSD=m | 980 | CONFIG_NFSD=m |
971 | CONFIG_NFSD_V2_ACL=y | 981 | CONFIG_NFSD_V2_ACL=y |
972 | CONFIG_NFSD_V3=y | 982 | CONFIG_NFSD_V3=y |
973 | CONFIG_NFSD_V3_ACL=y | 983 | CONFIG_NFSD_V3_ACL=y |
974 | CONFIG_NFSD_V4=y | 984 | CONFIG_NFSD_V4=y |
975 | CONFIG_NFSD_TCP=y | ||
976 | CONFIG_LOCKD=y | 985 | CONFIG_LOCKD=y |
977 | CONFIG_LOCKD_V4=y | 986 | CONFIG_LOCKD_V4=y |
978 | CONFIG_EXPORTFS=m | 987 | CONFIG_EXPORTFS=m |
@@ -1047,9 +1056,10 @@ CONFIG_DLM=m | |||
1047 | # Library routines | 1056 | # Library routines |
1048 | # | 1057 | # |
1049 | CONFIG_BITREVERSE=y | 1058 | CONFIG_BITREVERSE=y |
1059 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1050 | CONFIG_CRC_CCITT=m | 1060 | CONFIG_CRC_CCITT=m |
1051 | # CONFIG_CRC16 is not set | 1061 | # CONFIG_CRC16 is not set |
1052 | # CONFIG_CRC_ITU_T is not set | 1062 | CONFIG_CRC_ITU_T=m |
1053 | CONFIG_CRC32=y | 1063 | CONFIG_CRC32=y |
1054 | # CONFIG_CRC7 is not set | 1064 | # CONFIG_CRC7 is not set |
1055 | CONFIG_LIBCRC32C=m | 1065 | CONFIG_LIBCRC32C=m |
@@ -1071,6 +1081,7 @@ CONFIG_HAVE_LMB=y | |||
1071 | # CONFIG_PRINTK_TIME is not set | 1081 | # CONFIG_PRINTK_TIME is not set |
1072 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1082 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1073 | CONFIG_ENABLE_MUST_CHECK=y | 1083 | CONFIG_ENABLE_MUST_CHECK=y |
1084 | CONFIG_FRAME_WARN=2048 | ||
1074 | CONFIG_MAGIC_SYSRQ=y | 1085 | CONFIG_MAGIC_SYSRQ=y |
1075 | # CONFIG_UNUSED_SYMBOLS is not set | 1086 | # CONFIG_UNUSED_SYMBOLS is not set |
1076 | CONFIG_DEBUG_FS=y | 1087 | CONFIG_DEBUG_FS=y |
@@ -1081,18 +1092,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1081 | CONFIG_SCHED_DEBUG=y | 1092 | CONFIG_SCHED_DEBUG=y |
1082 | # CONFIG_SCHEDSTATS is not set | 1093 | # CONFIG_SCHEDSTATS is not set |
1083 | # CONFIG_TIMER_STATS is not set | 1094 | # CONFIG_TIMER_STATS is not set |
1095 | # CONFIG_DEBUG_OBJECTS is not set | ||
1084 | # CONFIG_SLUB_DEBUG_ON is not set | 1096 | # CONFIG_SLUB_DEBUG_ON is not set |
1085 | # CONFIG_SLUB_STATS is not set | 1097 | # CONFIG_SLUB_STATS is not set |
1086 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1098 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1087 | # CONFIG_RT_MUTEX_TESTER is not set | 1099 | # CONFIG_RT_MUTEX_TESTER is not set |
1088 | # CONFIG_DEBUG_SPINLOCK is not set | 1100 | # CONFIG_DEBUG_SPINLOCK is not set |
1089 | # CONFIG_DEBUG_MUTEXES is not set | 1101 | # CONFIG_DEBUG_MUTEXES is not set |
1102 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1103 | # CONFIG_PROVE_LOCKING is not set | ||
1104 | # CONFIG_LOCK_STAT is not set | ||
1090 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1105 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1091 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1106 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1092 | # CONFIG_DEBUG_KOBJECT is not set | 1107 | # CONFIG_DEBUG_KOBJECT is not set |
1093 | CONFIG_DEBUG_BUGVERBOSE=y | 1108 | CONFIG_DEBUG_BUGVERBOSE=y |
1094 | # CONFIG_DEBUG_INFO is not set | 1109 | # CONFIG_DEBUG_INFO is not set |
1095 | # CONFIG_DEBUG_VM is not set | 1110 | # CONFIG_DEBUG_VM is not set |
1111 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1096 | # CONFIG_DEBUG_LIST is not set | 1112 | # CONFIG_DEBUG_LIST is not set |
1097 | # CONFIG_DEBUG_SG is not set | 1113 | # CONFIG_DEBUG_SG is not set |
1098 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1114 | # CONFIG_BOOT_PRINTK_DELAY is not set |
@@ -1116,53 +1132,83 @@ CONFIG_IRQSTACKS=y | |||
1116 | # CONFIG_SECURITY is not set | 1132 | # CONFIG_SECURITY is not set |
1117 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1133 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1118 | CONFIG_CRYPTO=y | 1134 | CONFIG_CRYPTO=y |
1135 | |||
1136 | # | ||
1137 | # Crypto core or helper | ||
1138 | # | ||
1119 | CONFIG_CRYPTO_ALGAPI=y | 1139 | CONFIG_CRYPTO_ALGAPI=y |
1120 | CONFIG_CRYPTO_AEAD=m | 1140 | CONFIG_CRYPTO_AEAD=m |
1121 | CONFIG_CRYPTO_BLKCIPHER=y | 1141 | CONFIG_CRYPTO_BLKCIPHER=y |
1122 | # CONFIG_CRYPTO_SEQIV is not set | ||
1123 | CONFIG_CRYPTO_HASH=y | 1142 | CONFIG_CRYPTO_HASH=y |
1124 | CONFIG_CRYPTO_MANAGER=y | 1143 | CONFIG_CRYPTO_MANAGER=y |
1144 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1145 | CONFIG_CRYPTO_NULL=m | ||
1146 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1147 | CONFIG_CRYPTO_AUTHENC=m | ||
1148 | CONFIG_CRYPTO_TEST=m | ||
1149 | |||
1150 | # | ||
1151 | # Authenticated Encryption with Associated Data | ||
1152 | # | ||
1153 | # CONFIG_CRYPTO_CCM is not set | ||
1154 | # CONFIG_CRYPTO_GCM is not set | ||
1155 | # CONFIG_CRYPTO_SEQIV is not set | ||
1156 | |||
1157 | # | ||
1158 | # Block modes | ||
1159 | # | ||
1160 | CONFIG_CRYPTO_CBC=y | ||
1161 | # CONFIG_CRYPTO_CTR is not set | ||
1162 | # CONFIG_CRYPTO_CTS is not set | ||
1163 | CONFIG_CRYPTO_ECB=m | ||
1164 | # CONFIG_CRYPTO_LRW is not set | ||
1165 | CONFIG_CRYPTO_PCBC=m | ||
1166 | # CONFIG_CRYPTO_XTS is not set | ||
1167 | |||
1168 | # | ||
1169 | # Hash modes | ||
1170 | # | ||
1125 | CONFIG_CRYPTO_HMAC=y | 1171 | CONFIG_CRYPTO_HMAC=y |
1126 | # CONFIG_CRYPTO_XCBC is not set | 1172 | # CONFIG_CRYPTO_XCBC is not set |
1127 | CONFIG_CRYPTO_NULL=m | 1173 | |
1174 | # | ||
1175 | # Digest | ||
1176 | # | ||
1177 | CONFIG_CRYPTO_CRC32C=m | ||
1128 | CONFIG_CRYPTO_MD4=m | 1178 | CONFIG_CRYPTO_MD4=m |
1129 | CONFIG_CRYPTO_MD5=y | 1179 | CONFIG_CRYPTO_MD5=y |
1180 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1130 | CONFIG_CRYPTO_SHA1=m | 1181 | CONFIG_CRYPTO_SHA1=m |
1131 | CONFIG_CRYPTO_SHA256=m | 1182 | CONFIG_CRYPTO_SHA256=m |
1132 | CONFIG_CRYPTO_SHA512=m | 1183 | CONFIG_CRYPTO_SHA512=m |
1133 | CONFIG_CRYPTO_WP512=m | ||
1134 | CONFIG_CRYPTO_TGR192=m | 1184 | CONFIG_CRYPTO_TGR192=m |
1135 | # CONFIG_CRYPTO_GF128MUL is not set | 1185 | CONFIG_CRYPTO_WP512=m |
1136 | CONFIG_CRYPTO_ECB=m | 1186 | |
1137 | CONFIG_CRYPTO_CBC=y | 1187 | # |
1138 | CONFIG_CRYPTO_PCBC=m | 1188 | # Ciphers |
1139 | # CONFIG_CRYPTO_LRW is not set | 1189 | # |
1140 | # CONFIG_CRYPTO_XTS is not set | ||
1141 | # CONFIG_CRYPTO_CTR is not set | ||
1142 | # CONFIG_CRYPTO_GCM is not set | ||
1143 | # CONFIG_CRYPTO_CCM is not set | ||
1144 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1145 | CONFIG_CRYPTO_DES=y | ||
1146 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1147 | CONFIG_CRYPTO_BLOWFISH=m | ||
1148 | CONFIG_CRYPTO_TWOFISH=m | ||
1149 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1150 | CONFIG_CRYPTO_SERPENT=m | ||
1151 | CONFIG_CRYPTO_AES=m | 1190 | CONFIG_CRYPTO_AES=m |
1191 | CONFIG_CRYPTO_ANUBIS=m | ||
1192 | CONFIG_CRYPTO_ARC4=m | ||
1193 | CONFIG_CRYPTO_BLOWFISH=m | ||
1194 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1152 | CONFIG_CRYPTO_CAST5=m | 1195 | CONFIG_CRYPTO_CAST5=m |
1153 | CONFIG_CRYPTO_CAST6=m | 1196 | CONFIG_CRYPTO_CAST6=m |
1154 | CONFIG_CRYPTO_TEA=m | 1197 | CONFIG_CRYPTO_DES=y |
1155 | CONFIG_CRYPTO_ARC4=m | 1198 | # CONFIG_CRYPTO_FCRYPT is not set |
1156 | CONFIG_CRYPTO_KHAZAD=m | 1199 | CONFIG_CRYPTO_KHAZAD=m |
1157 | CONFIG_CRYPTO_ANUBIS=m | ||
1158 | CONFIG_CRYPTO_SEED=m | ||
1159 | # CONFIG_CRYPTO_SALSA20 is not set | 1200 | # CONFIG_CRYPTO_SALSA20 is not set |
1201 | CONFIG_CRYPTO_SEED=m | ||
1202 | CONFIG_CRYPTO_SERPENT=m | ||
1203 | CONFIG_CRYPTO_TEA=m | ||
1204 | CONFIG_CRYPTO_TWOFISH=m | ||
1205 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1206 | |||
1207 | # | ||
1208 | # Compression | ||
1209 | # | ||
1160 | CONFIG_CRYPTO_DEFLATE=m | 1210 | CONFIG_CRYPTO_DEFLATE=m |
1161 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1162 | CONFIG_CRYPTO_CRC32C=m | ||
1163 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1164 | CONFIG_CRYPTO_TEST=m | ||
1165 | CONFIG_CRYPTO_AUTHENC=m | ||
1166 | # CONFIG_CRYPTO_LZO is not set | 1211 | # CONFIG_CRYPTO_LZO is not set |
1167 | # CONFIG_CRYPTO_HW is not set | 1212 | # CONFIG_CRYPTO_HW is not set |
1168 | # CONFIG_PPC_CLOCK is not set | 1213 | # CONFIG_PPC_CLOCK is not set |
1214 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/configs/mpc8610_hpcd_defconfig b/arch/powerpc/configs/mpc8610_hpcd_defconfig index 9270afe7594d..7e5b9ce58d89 100644 --- a/arch/powerpc/configs/mpc8610_hpcd_defconfig +++ b/arch/powerpc/configs/mpc8610_hpcd_defconfig | |||
@@ -358,7 +358,93 @@ CONFIG_FW_LOADER=y | |||
358 | # CONFIG_DEBUG_DEVRES is not set | 358 | # CONFIG_DEBUG_DEVRES is not set |
359 | # CONFIG_SYS_HYPERVISOR is not set | 359 | # CONFIG_SYS_HYPERVISOR is not set |
360 | # CONFIG_CONNECTOR is not set | 360 | # CONFIG_CONNECTOR is not set |
361 | # CONFIG_MTD is not set | 361 | CONFIG_MTD=y |
362 | # CONFIG_MTD_DEBUG is not set | ||
363 | # CONFIG_MTD_CONCAT is not set | ||
364 | CONFIG_MTD_PARTITIONS=y | ||
365 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
366 | CONFIG_MTD_CMDLINE_PARTS=y | ||
367 | # CONFIG_MTD_OF_PARTS is not set | ||
368 | # CONFIG_MTD_AR7_PARTS is not set | ||
369 | |||
370 | # | ||
371 | # User Modules And Translation Layers | ||
372 | # | ||
373 | CONFIG_MTD_CHAR=y | ||
374 | CONFIG_MTD_BLKDEVS=y | ||
375 | CONFIG_MTD_BLOCK=y | ||
376 | # CONFIG_FTL is not set | ||
377 | # CONFIG_NFTL is not set | ||
378 | # CONFIG_INFTL is not set | ||
379 | # CONFIG_RFD_FTL is not set | ||
380 | # CONFIG_SSFDC is not set | ||
381 | # CONFIG_MTD_OOPS is not set | ||
382 | |||
383 | # | ||
384 | # RAM/ROM/Flash chip drivers | ||
385 | # | ||
386 | CONFIG_MTD_CFI=y | ||
387 | # CONFIG_MTD_JEDECPROBE is not set | ||
388 | CONFIG_MTD_GEN_PROBE=y | ||
389 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
390 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
391 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
392 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
393 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
394 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
395 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
396 | CONFIG_MTD_CFI_I1=y | ||
397 | CONFIG_MTD_CFI_I2=y | ||
398 | # CONFIG_MTD_CFI_I4 is not set | ||
399 | # CONFIG_MTD_CFI_I8 is not set | ||
400 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
401 | CONFIG_MTD_CFI_AMDSTD=y | ||
402 | # CONFIG_MTD_CFI_STAA is not set | ||
403 | CONFIG_MTD_CFI_UTIL=y | ||
404 | # CONFIG_MTD_RAM is not set | ||
405 | # CONFIG_MTD_ROM is not set | ||
406 | # CONFIG_MTD_ABSENT is not set | ||
407 | |||
408 | # | ||
409 | # Mapping drivers for chip access | ||
410 | # | ||
411 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
412 | # CONFIG_MTD_PHYSMAP is not set | ||
413 | CONFIG_MTD_PHYSMAP_OF=y | ||
414 | # CONFIG_MTD_INTEL_VR_NOR is not set | ||
415 | # CONFIG_MTD_PLATRAM is not set | ||
416 | |||
417 | # | ||
418 | # Self-contained MTD device drivers | ||
419 | # | ||
420 | # CONFIG_MTD_PMC551 is not set | ||
421 | # CONFIG_MTD_SLRAM is not set | ||
422 | # CONFIG_MTD_PHRAM is not set | ||
423 | # CONFIG_MTD_MTDRAM is not set | ||
424 | # CONFIG_MTD_BLOCK2MTD is not set | ||
425 | |||
426 | # | ||
427 | # Disk-On-Chip Device Drivers | ||
428 | # | ||
429 | # CONFIG_MTD_DOC2000 is not set | ||
430 | # CONFIG_MTD_DOC2001 is not set | ||
431 | # CONFIG_MTD_DOC2001PLUS is not set | ||
432 | CONFIG_MTD_NAND=y | ||
433 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
434 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
435 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
436 | CONFIG_MTD_NAND_IDS=y | ||
437 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
438 | # CONFIG_MTD_NAND_CAFE is not set | ||
439 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
440 | # CONFIG_MTD_NAND_PLATFORM is not set | ||
441 | CONFIG_MTD_NAND_FSL_ELBC=y | ||
442 | # CONFIG_MTD_ONENAND is not set | ||
443 | |||
444 | # | ||
445 | # UBI - Unsorted block images | ||
446 | # | ||
447 | # CONFIG_MTD_UBI is not set | ||
362 | CONFIG_OF_DEVICE=y | 448 | CONFIG_OF_DEVICE=y |
363 | # CONFIG_PARPORT is not set | 449 | # CONFIG_PARPORT is not set |
364 | CONFIG_BLK_DEV=y | 450 | CONFIG_BLK_DEV=y |
@@ -567,14 +653,11 @@ CONFIG_MII=y | |||
567 | # CONFIG_NET_VENDOR_3COM is not set | 653 | # CONFIG_NET_VENDOR_3COM is not set |
568 | CONFIG_NET_TULIP=y | 654 | CONFIG_NET_TULIP=y |
569 | # CONFIG_DE2104X is not set | 655 | # CONFIG_DE2104X is not set |
570 | CONFIG_TULIP=y | 656 | # CONFIG_TULIP is not set |
571 | # CONFIG_TULIP_MWI is not set | ||
572 | CONFIG_TULIP_MMIO=y | ||
573 | # CONFIG_TULIP_NAPI is not set | ||
574 | # CONFIG_DE4X5 is not set | 657 | # CONFIG_DE4X5 is not set |
575 | # CONFIG_WINBOND_840 is not set | 658 | # CONFIG_WINBOND_840 is not set |
576 | # CONFIG_DM9102 is not set | 659 | # CONFIG_DM9102 is not set |
577 | # CONFIG_ULI526X is not set | 660 | CONFIG_ULI526X=y |
578 | # CONFIG_HP100 is not set | 661 | # CONFIG_HP100 is not set |
579 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | 662 | # CONFIG_IBM_NEW_EMAC_ZMII is not set |
580 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | 663 | # CONFIG_IBM_NEW_EMAC_RGMII is not set |
diff --git a/arch/powerpc/configs/pasemi_defconfig b/arch/powerpc/configs/pasemi_defconfig index 09f306248f2e..199e5f59d7a6 100644 --- a/arch/powerpc/configs/pasemi_defconfig +++ b/arch/powerpc/configs/pasemi_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Tue Mar 25 10:25:48 2008 | 4 | # Tue May 27 16:08:06 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -29,6 +29,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
29 | CONFIG_GENERIC_HARDIRQS=y | 29 | CONFIG_GENERIC_HARDIRQS=y |
30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
31 | CONFIG_IRQ_PER_CPU=y | 31 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_STACKTRACE_SUPPORT=y | ||
33 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
34 | CONFIG_LOCKDEP_SUPPORT=y | ||
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 36 | CONFIG_ARCH_HAS_ILOG2_U32=y |
34 | CONFIG_ARCH_HAS_ILOG2_U64=y | 37 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -87,6 +90,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
87 | CONFIG_SYSCTL=y | 90 | CONFIG_SYSCTL=y |
88 | # CONFIG_EMBEDDED is not set | 91 | # CONFIG_EMBEDDED is not set |
89 | CONFIG_SYSCTL_SYSCALL=y | 92 | CONFIG_SYSCTL_SYSCALL=y |
93 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
90 | CONFIG_KALLSYMS=y | 94 | CONFIG_KALLSYMS=y |
91 | # CONFIG_KALLSYMS_ALL is not set | 95 | # CONFIG_KALLSYMS_ALL is not set |
92 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 96 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -115,12 +119,14 @@ CONFIG_HAVE_OPROFILE=y | |||
115 | # CONFIG_KPROBES is not set | 119 | # CONFIG_KPROBES is not set |
116 | CONFIG_HAVE_KPROBES=y | 120 | CONFIG_HAVE_KPROBES=y |
117 | CONFIG_HAVE_KRETPROBES=y | 121 | CONFIG_HAVE_KRETPROBES=y |
122 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
118 | CONFIG_PROC_PAGE_MONITOR=y | 123 | CONFIG_PROC_PAGE_MONITOR=y |
119 | CONFIG_SLABINFO=y | 124 | CONFIG_SLABINFO=y |
120 | CONFIG_RT_MUTEXES=y | 125 | CONFIG_RT_MUTEXES=y |
121 | # CONFIG_TINY_SHMEM is not set | 126 | # CONFIG_TINY_SHMEM is not set |
122 | CONFIG_BASE_SMALL=0 | 127 | CONFIG_BASE_SMALL=0 |
123 | CONFIG_MODULES=y | 128 | CONFIG_MODULES=y |
129 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
124 | CONFIG_MODULE_UNLOAD=y | 130 | CONFIG_MODULE_UNLOAD=y |
125 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 131 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
126 | # CONFIG_MODVERSIONS is not set | 132 | # CONFIG_MODVERSIONS is not set |
@@ -167,11 +173,11 @@ CONFIG_PPC_PASEMI=y | |||
167 | CONFIG_PPC_PASEMI_IOMMU=y | 173 | CONFIG_PPC_PASEMI_IOMMU=y |
168 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set | 174 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set |
169 | CONFIG_PPC_PASEMI_MDIO=y | 175 | CONFIG_PPC_PASEMI_MDIO=y |
170 | # CONFIG_PPC_CELLEB is not set | ||
171 | # CONFIG_PPC_PS3 is not set | 176 | # CONFIG_PPC_PS3 is not set |
172 | # CONFIG_PPC_CELL is not set | 177 | # CONFIG_PPC_CELL is not set |
173 | # CONFIG_PPC_CELL_NATIVE is not set | 178 | # CONFIG_PPC_CELL_NATIVE is not set |
174 | # CONFIG_PPC_IBM_CELL_BLADE is not set | 179 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
180 | # CONFIG_PPC_CELLEB is not set | ||
175 | # CONFIG_PQ2ADS is not set | 181 | # CONFIG_PQ2ADS is not set |
176 | CONFIG_PPC_NATIVE=y | 182 | CONFIG_PPC_NATIVE=y |
177 | # CONFIG_IPIC is not set | 183 | # CONFIG_IPIC is not set |
@@ -192,6 +198,7 @@ CONFIG_CPU_FREQ_DEBUG=y | |||
192 | CONFIG_CPU_FREQ_STAT=y | 198 | CONFIG_CPU_FREQ_STAT=y |
193 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 199 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
194 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 200 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y |
201 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
195 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 202 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set |
196 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | 203 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set |
197 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | 204 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set |
@@ -226,7 +233,6 @@ CONFIG_PREEMPT_NONE=y | |||
226 | CONFIG_BINFMT_ELF=y | 233 | CONFIG_BINFMT_ELF=y |
227 | CONFIG_COMPAT_BINFMT_ELF=y | 234 | CONFIG_COMPAT_BINFMT_ELF=y |
228 | # CONFIG_BINFMT_MISC is not set | 235 | # CONFIG_BINFMT_MISC is not set |
229 | CONFIG_FORCE_MAX_ZONEORDER=9 | ||
230 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 236 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
231 | CONFIG_IOMMU_VMERGE=y | 237 | CONFIG_IOMMU_VMERGE=y |
232 | CONFIG_IOMMU_HELPER=y | 238 | CONFIG_IOMMU_HELPER=y |
@@ -249,12 +255,14 @@ CONFIG_FLATMEM=y | |||
249 | CONFIG_FLAT_NODE_MEM_MAP=y | 255 | CONFIG_FLAT_NODE_MEM_MAP=y |
250 | # CONFIG_SPARSEMEM_STATIC is not set | 256 | # CONFIG_SPARSEMEM_STATIC is not set |
251 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 257 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
258 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
252 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 259 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
253 | CONFIG_RESOURCES_64BIT=y | 260 | CONFIG_RESOURCES_64BIT=y |
254 | CONFIG_ZONE_DMA_FLAG=1 | 261 | CONFIG_ZONE_DMA_FLAG=1 |
255 | CONFIG_BOUNCE=y | 262 | CONFIG_BOUNCE=y |
256 | CONFIG_PPC_HAS_HASH_64K=y | 263 | CONFIG_PPC_HAS_HASH_64K=y |
257 | CONFIG_PPC_64K_PAGES=y | 264 | CONFIG_PPC_64K_PAGES=y |
265 | CONFIG_FORCE_MAX_ZONEORDER=9 | ||
258 | # CONFIG_PPC_SUBPAGE_PROT is not set | 266 | # CONFIG_PPC_SUBPAGE_PROT is not set |
259 | # CONFIG_SCHED_SMT is not set | 267 | # CONFIG_SCHED_SMT is not set |
260 | CONFIG_PROC_DEVICETREE=y | 268 | CONFIG_PROC_DEVICETREE=y |
@@ -290,9 +298,12 @@ CONFIG_CARDBUS=y | |||
290 | # CONFIG_YENTA is not set | 298 | # CONFIG_YENTA is not set |
291 | # CONFIG_PD6729 is not set | 299 | # CONFIG_PD6729 is not set |
292 | # CONFIG_I82092 is not set | 300 | # CONFIG_I82092 is not set |
293 | # CONFIG_ELECTRA_CF is not set | 301 | CONFIG_ELECTRA_CF=y |
294 | # CONFIG_HOTPLUG_PCI is not set | 302 | # CONFIG_HOTPLUG_PCI is not set |
303 | # CONFIG_HAS_RAPIDIO is not set | ||
304 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
295 | CONFIG_KERNEL_START=0xc000000000000000 | 305 | CONFIG_KERNEL_START=0xc000000000000000 |
306 | CONFIG_PHYSICAL_START=0x00000000 | ||
296 | 307 | ||
297 | # | 308 | # |
298 | # Networking | 309 | # Networking |
@@ -341,8 +352,6 @@ CONFIG_TCP_CONG_CUBIC=y | |||
341 | CONFIG_DEFAULT_TCP_CONG="cubic" | 352 | CONFIG_DEFAULT_TCP_CONG="cubic" |
342 | # CONFIG_TCP_MD5SIG is not set | 353 | # CONFIG_TCP_MD5SIG is not set |
343 | # CONFIG_IPV6 is not set | 354 | # CONFIG_IPV6 is not set |
344 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
345 | # CONFIG_INET6_TUNNEL is not set | ||
346 | # CONFIG_NETWORK_SECMARK is not set | 355 | # CONFIG_NETWORK_SECMARK is not set |
347 | # CONFIG_NETFILTER is not set | 356 | # CONFIG_NETFILTER is not set |
348 | # CONFIG_IP_DCCP is not set | 357 | # CONFIG_IP_DCCP is not set |
@@ -473,6 +482,7 @@ CONFIG_MTD_NAND_PASEMI=y | |||
473 | # | 482 | # |
474 | # CONFIG_MTD_UBI is not set | 483 | # CONFIG_MTD_UBI is not set |
475 | CONFIG_OF_DEVICE=y | 484 | CONFIG_OF_DEVICE=y |
485 | CONFIG_OF_I2C=y | ||
476 | # CONFIG_PARPORT is not set | 486 | # CONFIG_PARPORT is not set |
477 | CONFIG_BLK_DEV=y | 487 | CONFIG_BLK_DEV=y |
478 | # CONFIG_BLK_DEV_FD is not set | 488 | # CONFIG_BLK_DEV_FD is not set |
@@ -520,7 +530,6 @@ CONFIG_IDE_PROC_FS=y | |||
520 | # | 530 | # |
521 | # IDE chipset support/bugfixes | 531 | # IDE chipset support/bugfixes |
522 | # | 532 | # |
523 | # CONFIG_IDE_GENERIC is not set | ||
524 | # CONFIG_BLK_DEV_PLATFORM is not set | 533 | # CONFIG_BLK_DEV_PLATFORM is not set |
525 | 534 | ||
526 | # | 535 | # |
@@ -554,7 +563,7 @@ CONFIG_IDE_PROC_FS=y | |||
554 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 563 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
555 | # CONFIG_BLK_DEV_TC86C001 is not set | 564 | # CONFIG_BLK_DEV_TC86C001 is not set |
556 | # CONFIG_BLK_DEV_IDEDMA is not set | 565 | # CONFIG_BLK_DEV_IDEDMA is not set |
557 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 566 | # CONFIG_BLK_DEV_HD_ONLY is not set |
558 | # CONFIG_BLK_DEV_HD is not set | 567 | # CONFIG_BLK_DEV_HD is not set |
559 | 568 | ||
560 | # | 569 | # |
@@ -632,7 +641,10 @@ CONFIG_SCSI_LOWLEVEL=y | |||
632 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | 641 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
633 | CONFIG_ATA=y | 642 | CONFIG_ATA=y |
634 | # CONFIG_ATA_NONSTANDARD is not set | 643 | # CONFIG_ATA_NONSTANDARD is not set |
644 | CONFIG_SATA_PMP=y | ||
635 | # CONFIG_SATA_AHCI is not set | 645 | # CONFIG_SATA_AHCI is not set |
646 | CONFIG_SATA_SIL24=y | ||
647 | CONFIG_ATA_SFF=y | ||
636 | # CONFIG_SATA_SVW is not set | 648 | # CONFIG_SATA_SVW is not set |
637 | # CONFIG_ATA_PIIX is not set | 649 | # CONFIG_ATA_PIIX is not set |
638 | CONFIG_SATA_MV=y | 650 | CONFIG_SATA_MV=y |
@@ -642,7 +654,6 @@ CONFIG_SATA_MV=y | |||
642 | # CONFIG_SATA_PROMISE is not set | 654 | # CONFIG_SATA_PROMISE is not set |
643 | # CONFIG_SATA_SX4 is not set | 655 | # CONFIG_SATA_SX4 is not set |
644 | # CONFIG_SATA_SIL is not set | 656 | # CONFIG_SATA_SIL is not set |
645 | CONFIG_SATA_SIL24=y | ||
646 | # CONFIG_SATA_SIS is not set | 657 | # CONFIG_SATA_SIS is not set |
647 | # CONFIG_SATA_ULI is not set | 658 | # CONFIG_SATA_ULI is not set |
648 | # CONFIG_SATA_VIA is not set | 659 | # CONFIG_SATA_VIA is not set |
@@ -689,6 +700,7 @@ CONFIG_PATA_PCMCIA=y | |||
689 | # CONFIG_PATA_WINBOND is not set | 700 | # CONFIG_PATA_WINBOND is not set |
690 | CONFIG_PATA_PLATFORM=y | 701 | CONFIG_PATA_PLATFORM=y |
691 | CONFIG_PATA_OF_PLATFORM=y | 702 | CONFIG_PATA_OF_PLATFORM=y |
703 | # CONFIG_PATA_SCH is not set | ||
692 | CONFIG_MD=y | 704 | CONFIG_MD=y |
693 | CONFIG_BLK_DEV_MD=y | 705 | CONFIG_BLK_DEV_MD=y |
694 | CONFIG_MD_LINEAR=y | 706 | CONFIG_MD_LINEAR=y |
@@ -791,7 +803,6 @@ CONFIG_E1000_NAPI=y | |||
791 | # CONFIG_SIS190 is not set | 803 | # CONFIG_SIS190 is not set |
792 | # CONFIG_SKGE is not set | 804 | # CONFIG_SKGE is not set |
793 | # CONFIG_SKY2 is not set | 805 | # CONFIG_SKY2 is not set |
794 | # CONFIG_SK98LIN is not set | ||
795 | # CONFIG_VIA_VELOCITY is not set | 806 | # CONFIG_VIA_VELOCITY is not set |
796 | CONFIG_TIGON3=y | 807 | CONFIG_TIGON3=y |
797 | # CONFIG_BNX2 is not set | 808 | # CONFIG_BNX2 is not set |
@@ -810,6 +821,7 @@ CONFIG_PASEMI_MAC=y | |||
810 | # CONFIG_MLX4_CORE is not set | 821 | # CONFIG_MLX4_CORE is not set |
811 | # CONFIG_TEHUTI is not set | 822 | # CONFIG_TEHUTI is not set |
812 | # CONFIG_BNX2X is not set | 823 | # CONFIG_BNX2X is not set |
824 | # CONFIG_SFC is not set | ||
813 | # CONFIG_TR is not set | 825 | # CONFIG_TR is not set |
814 | 826 | ||
815 | # | 827 | # |
@@ -817,6 +829,7 @@ CONFIG_PASEMI_MAC=y | |||
817 | # | 829 | # |
818 | # CONFIG_WLAN_PRE80211 is not set | 830 | # CONFIG_WLAN_PRE80211 is not set |
819 | # CONFIG_WLAN_80211 is not set | 831 | # CONFIG_WLAN_80211 is not set |
832 | # CONFIG_IWLWIFI_LEDS is not set | ||
820 | 833 | ||
821 | # | 834 | # |
822 | # USB Network Adapters | 835 | # USB Network Adapters |
@@ -890,6 +903,7 @@ CONFIG_VT=y | |||
890 | CONFIG_VT_CONSOLE=y | 903 | CONFIG_VT_CONSOLE=y |
891 | CONFIG_HW_CONSOLE=y | 904 | CONFIG_HW_CONSOLE=y |
892 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 905 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
906 | CONFIG_DEVKMEM=y | ||
893 | # CONFIG_SERIAL_NONSTANDARD is not set | 907 | # CONFIG_SERIAL_NONSTANDARD is not set |
894 | # CONFIG_NOZOMI is not set | 908 | # CONFIG_NOZOMI is not set |
895 | 909 | ||
@@ -917,7 +931,6 @@ CONFIG_LEGACY_PTY_COUNT=4 | |||
917 | # CONFIG_IPMI_HANDLER is not set | 931 | # CONFIG_IPMI_HANDLER is not set |
918 | CONFIG_HW_RANDOM=y | 932 | CONFIG_HW_RANDOM=y |
919 | CONFIG_HW_RANDOM_PASEMI=y | 933 | CONFIG_HW_RANDOM_PASEMI=y |
920 | # CONFIG_GEN_RTC is not set | ||
921 | # CONFIG_R3964 is not set | 934 | # CONFIG_R3964 is not set |
922 | # CONFIG_APPLICOM is not set | 935 | # CONFIG_APPLICOM is not set |
923 | 936 | ||
@@ -936,13 +949,7 @@ CONFIG_DEVPORT=y | |||
936 | CONFIG_I2C=y | 949 | CONFIG_I2C=y |
937 | CONFIG_I2C_BOARDINFO=y | 950 | CONFIG_I2C_BOARDINFO=y |
938 | CONFIG_I2C_CHARDEV=y | 951 | CONFIG_I2C_CHARDEV=y |
939 | |||
940 | # | ||
941 | # I2C Algorithms | ||
942 | # | ||
943 | CONFIG_I2C_ALGOBIT=y | 952 | CONFIG_I2C_ALGOBIT=y |
944 | CONFIG_I2C_ALGOPCF=y | ||
945 | CONFIG_I2C_ALGOPCA=y | ||
946 | 953 | ||
947 | # | 954 | # |
948 | # I2C Hardware Bus support | 955 | # I2C Hardware Bus support |
@@ -971,6 +978,7 @@ CONFIG_I2C_PASEMI=y | |||
971 | # CONFIG_I2C_VIA is not set | 978 | # CONFIG_I2C_VIA is not set |
972 | # CONFIG_I2C_VIAPRO is not set | 979 | # CONFIG_I2C_VIAPRO is not set |
973 | # CONFIG_I2C_VOODOO3 is not set | 980 | # CONFIG_I2C_VOODOO3 is not set |
981 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
974 | 982 | ||
975 | # | 983 | # |
976 | # Miscellaneous I2C Chip support | 984 | # Miscellaneous I2C Chip support |
@@ -980,19 +988,13 @@ CONFIG_SENSORS_EEPROM=y | |||
980 | # CONFIG_SENSORS_PCF8574 is not set | 988 | # CONFIG_SENSORS_PCF8574 is not set |
981 | # CONFIG_PCF8575 is not set | 989 | # CONFIG_PCF8575 is not set |
982 | # CONFIG_SENSORS_PCF8591 is not set | 990 | # CONFIG_SENSORS_PCF8591 is not set |
983 | # CONFIG_TPS65010 is not set | ||
984 | # CONFIG_SENSORS_MAX6875 is not set | 991 | # CONFIG_SENSORS_MAX6875 is not set |
985 | # CONFIG_SENSORS_TSL2550 is not set | 992 | # CONFIG_SENSORS_TSL2550 is not set |
986 | # CONFIG_I2C_DEBUG_CORE is not set | 993 | # CONFIG_I2C_DEBUG_CORE is not set |
987 | # CONFIG_I2C_DEBUG_ALGO is not set | 994 | # CONFIG_I2C_DEBUG_ALGO is not set |
988 | # CONFIG_I2C_DEBUG_BUS is not set | 995 | # CONFIG_I2C_DEBUG_BUS is not set |
989 | # CONFIG_I2C_DEBUG_CHIP is not set | 996 | # CONFIG_I2C_DEBUG_CHIP is not set |
990 | |||
991 | # | ||
992 | # SPI support | ||
993 | # | ||
994 | # CONFIG_SPI is not set | 997 | # CONFIG_SPI is not set |
995 | # CONFIG_SPI_MASTER is not set | ||
996 | # CONFIG_W1 is not set | 998 | # CONFIG_W1 is not set |
997 | # CONFIG_POWER_SUPPLY is not set | 999 | # CONFIG_POWER_SUPPLY is not set |
998 | CONFIG_HWMON=y | 1000 | CONFIG_HWMON=y |
@@ -1062,12 +1064,22 @@ CONFIG_SSB_POSSIBLE=y | |||
1062 | # Multifunction device drivers | 1064 | # Multifunction device drivers |
1063 | # | 1065 | # |
1064 | # CONFIG_MFD_SM501 is not set | 1066 | # CONFIG_MFD_SM501 is not set |
1067 | # CONFIG_HTC_PASIC3 is not set | ||
1065 | 1068 | ||
1066 | # | 1069 | # |
1067 | # Multimedia devices | 1070 | # Multimedia devices |
1068 | # | 1071 | # |
1072 | |||
1073 | # | ||
1074 | # Multimedia core support | ||
1075 | # | ||
1069 | # CONFIG_VIDEO_DEV is not set | 1076 | # CONFIG_VIDEO_DEV is not set |
1070 | # CONFIG_DVB_CORE is not set | 1077 | # CONFIG_DVB_CORE is not set |
1078 | # CONFIG_VIDEO_MEDIA is not set | ||
1079 | |||
1080 | # | ||
1081 | # Multimedia drivers | ||
1082 | # | ||
1071 | CONFIG_DAB=y | 1083 | CONFIG_DAB=y |
1072 | # CONFIG_USB_DABUSB is not set | 1084 | # CONFIG_USB_DABUSB is not set |
1073 | 1085 | ||
@@ -1094,8 +1106,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
1094 | # CONFIG_FB_SYS_FILLRECT is not set | 1106 | # CONFIG_FB_SYS_FILLRECT is not set |
1095 | # CONFIG_FB_SYS_COPYAREA is not set | 1107 | # CONFIG_FB_SYS_COPYAREA is not set |
1096 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 1108 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
1109 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
1097 | # CONFIG_FB_SYS_FOPS is not set | 1110 | # CONFIG_FB_SYS_FOPS is not set |
1098 | CONFIG_FB_DEFERRED_IO=y | ||
1099 | # CONFIG_FB_SVGALIB is not set | 1111 | # CONFIG_FB_SVGALIB is not set |
1100 | CONFIG_FB_MACMODES=y | 1112 | CONFIG_FB_MACMODES=y |
1101 | CONFIG_FB_BACKLIGHT=y | 1113 | CONFIG_FB_BACKLIGHT=y |
@@ -1213,6 +1225,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1213 | # CONFIG_SND_AU8810 is not set | 1225 | # CONFIG_SND_AU8810 is not set |
1214 | # CONFIG_SND_AU8820 is not set | 1226 | # CONFIG_SND_AU8820 is not set |
1215 | # CONFIG_SND_AU8830 is not set | 1227 | # CONFIG_SND_AU8830 is not set |
1228 | # CONFIG_SND_AW2 is not set | ||
1216 | # CONFIG_SND_AZT3328 is not set | 1229 | # CONFIG_SND_AZT3328 is not set |
1217 | # CONFIG_SND_BT87X is not set | 1230 | # CONFIG_SND_BT87X is not set |
1218 | # CONFIG_SND_CA0106 is not set | 1231 | # CONFIG_SND_CA0106 is not set |
@@ -1292,11 +1305,11 @@ CONFIG_SND_USB_USX2Y=y | |||
1292 | # CONFIG_SND_SOC is not set | 1305 | # CONFIG_SND_SOC is not set |
1293 | 1306 | ||
1294 | # | 1307 | # |
1295 | # SoC Audio support for SuperH | 1308 | # ALSA SoC audio for Freescale SOCs |
1296 | # | 1309 | # |
1297 | 1310 | ||
1298 | # | 1311 | # |
1299 | # ALSA SoC audio for Freescale SOCs | 1312 | # SoC Audio for the Texas Instruments OMAP |
1300 | # | 1313 | # |
1301 | 1314 | ||
1302 | # | 1315 | # |
@@ -1334,11 +1347,13 @@ CONFIG_USB_DEVICEFS=y | |||
1334 | # | 1347 | # |
1335 | # USB Host Controller Drivers | 1348 | # USB Host Controller Drivers |
1336 | # | 1349 | # |
1350 | # CONFIG_USB_C67X00_HCD is not set | ||
1337 | CONFIG_USB_EHCI_HCD=y | 1351 | CONFIG_USB_EHCI_HCD=y |
1338 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1352 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1339 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1353 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1340 | CONFIG_USB_EHCI_HCD_PPC_OF=y | 1354 | CONFIG_USB_EHCI_HCD_PPC_OF=y |
1341 | # CONFIG_USB_ISP116X_HCD is not set | 1355 | # CONFIG_USB_ISP116X_HCD is not set |
1356 | # CONFIG_USB_ISP1760_HCD is not set | ||
1342 | CONFIG_USB_OHCI_HCD=y | 1357 | CONFIG_USB_OHCI_HCD=y |
1343 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1358 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
1344 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 1359 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
@@ -1354,6 +1369,7 @@ CONFIG_USB_SL811_HCD=y | |||
1354 | # | 1369 | # |
1355 | # CONFIG_USB_ACM is not set | 1370 | # CONFIG_USB_ACM is not set |
1356 | # CONFIG_USB_PRINTER is not set | 1371 | # CONFIG_USB_PRINTER is not set |
1372 | # CONFIG_USB_WDM is not set | ||
1357 | 1373 | ||
1358 | # | 1374 | # |
1359 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 1375 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
@@ -1375,6 +1391,7 @@ CONFIG_USB_STORAGE=y | |||
1375 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1391 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1376 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1392 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
1377 | # CONFIG_USB_STORAGE_KARMA is not set | 1393 | # CONFIG_USB_STORAGE_KARMA is not set |
1394 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1378 | CONFIG_USB_LIBUSUAL=y | 1395 | CONFIG_USB_LIBUSUAL=y |
1379 | 1396 | ||
1380 | # | 1397 | # |
@@ -1416,6 +1433,7 @@ CONFIG_USB_LIBUSUAL=y | |||
1416 | # CONFIG_MMC is not set | 1433 | # CONFIG_MMC is not set |
1417 | # CONFIG_MEMSTICK is not set | 1434 | # CONFIG_MEMSTICK is not set |
1418 | # CONFIG_NEW_LEDS is not set | 1435 | # CONFIG_NEW_LEDS is not set |
1436 | # CONFIG_ACCESSIBILITY is not set | ||
1419 | # CONFIG_INFINIBAND is not set | 1437 | # CONFIG_INFINIBAND is not set |
1420 | CONFIG_EDAC=y | 1438 | CONFIG_EDAC=y |
1421 | 1439 | ||
@@ -1475,10 +1493,6 @@ CONFIG_RTC_DRV_DS1307=y | |||
1475 | # on-CPU RTC drivers | 1493 | # on-CPU RTC drivers |
1476 | # | 1494 | # |
1477 | # CONFIG_DMADEVICES is not set | 1495 | # CONFIG_DMADEVICES is not set |
1478 | |||
1479 | # | ||
1480 | # Userspace I/O | ||
1481 | # | ||
1482 | # CONFIG_UIO is not set | 1496 | # CONFIG_UIO is not set |
1483 | 1497 | ||
1484 | # | 1498 | # |
@@ -1576,12 +1590,10 @@ CONFIG_NFS_FS=y | |||
1576 | CONFIG_NFS_V3=y | 1590 | CONFIG_NFS_V3=y |
1577 | # CONFIG_NFS_V3_ACL is not set | 1591 | # CONFIG_NFS_V3_ACL is not set |
1578 | # CONFIG_NFS_V4 is not set | 1592 | # CONFIG_NFS_V4 is not set |
1579 | # CONFIG_NFS_DIRECTIO is not set | ||
1580 | CONFIG_NFSD=y | 1593 | CONFIG_NFSD=y |
1581 | CONFIG_NFSD_V3=y | 1594 | CONFIG_NFSD_V3=y |
1582 | # CONFIG_NFSD_V3_ACL is not set | 1595 | # CONFIG_NFSD_V3_ACL is not set |
1583 | CONFIG_NFSD_V4=y | 1596 | CONFIG_NFSD_V4=y |
1584 | CONFIG_NFSD_TCP=y | ||
1585 | CONFIG_ROOT_NFS=y | 1597 | CONFIG_ROOT_NFS=y |
1586 | CONFIG_LOCKD=y | 1598 | CONFIG_LOCKD=y |
1587 | CONFIG_LOCKD_V4=y | 1599 | CONFIG_LOCKD_V4=y |
@@ -1665,9 +1677,10 @@ CONFIG_NLS_ISO8859_1=y | |||
1665 | # Library routines | 1677 | # Library routines |
1666 | # | 1678 | # |
1667 | CONFIG_BITREVERSE=y | 1679 | CONFIG_BITREVERSE=y |
1680 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1668 | CONFIG_CRC_CCITT=y | 1681 | CONFIG_CRC_CCITT=y |
1669 | # CONFIG_CRC16 is not set | 1682 | # CONFIG_CRC16 is not set |
1670 | # CONFIG_CRC_ITU_T is not set | 1683 | CONFIG_CRC_ITU_T=y |
1671 | CONFIG_CRC32=y | 1684 | CONFIG_CRC32=y |
1672 | # CONFIG_CRC7 is not set | 1685 | # CONFIG_CRC7 is not set |
1673 | CONFIG_LIBCRC32C=m | 1686 | CONFIG_LIBCRC32C=m |
@@ -1677,6 +1690,7 @@ CONFIG_PLIST=y | |||
1677 | CONFIG_HAS_IOMEM=y | 1690 | CONFIG_HAS_IOMEM=y |
1678 | CONFIG_HAS_IOPORT=y | 1691 | CONFIG_HAS_IOPORT=y |
1679 | CONFIG_HAS_DMA=y | 1692 | CONFIG_HAS_DMA=y |
1693 | CONFIG_HAVE_LMB=y | ||
1680 | 1694 | ||
1681 | # | 1695 | # |
1682 | # Kernel hacking | 1696 | # Kernel hacking |
@@ -1684,6 +1698,7 @@ CONFIG_HAS_DMA=y | |||
1684 | # CONFIG_PRINTK_TIME is not set | 1698 | # CONFIG_PRINTK_TIME is not set |
1685 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1699 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1686 | CONFIG_ENABLE_MUST_CHECK=y | 1700 | CONFIG_ENABLE_MUST_CHECK=y |
1701 | CONFIG_FRAME_WARN=2048 | ||
1687 | CONFIG_MAGIC_SYSRQ=y | 1702 | CONFIG_MAGIC_SYSRQ=y |
1688 | # CONFIG_UNUSED_SYMBOLS is not set | 1703 | # CONFIG_UNUSED_SYMBOLS is not set |
1689 | # CONFIG_DEBUG_FS is not set | 1704 | # CONFIG_DEBUG_FS is not set |
@@ -1694,18 +1709,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1694 | # CONFIG_SCHED_DEBUG is not set | 1709 | # CONFIG_SCHED_DEBUG is not set |
1695 | # CONFIG_SCHEDSTATS is not set | 1710 | # CONFIG_SCHEDSTATS is not set |
1696 | # CONFIG_TIMER_STATS is not set | 1711 | # CONFIG_TIMER_STATS is not set |
1712 | # CONFIG_DEBUG_OBJECTS is not set | ||
1697 | # CONFIG_SLUB_DEBUG_ON is not set | 1713 | # CONFIG_SLUB_DEBUG_ON is not set |
1698 | # CONFIG_SLUB_STATS is not set | 1714 | # CONFIG_SLUB_STATS is not set |
1699 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1715 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1700 | # CONFIG_RT_MUTEX_TESTER is not set | 1716 | # CONFIG_RT_MUTEX_TESTER is not set |
1701 | # CONFIG_DEBUG_SPINLOCK is not set | 1717 | # CONFIG_DEBUG_SPINLOCK is not set |
1702 | # CONFIG_DEBUG_MUTEXES is not set | 1718 | # CONFIG_DEBUG_MUTEXES is not set |
1719 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1720 | # CONFIG_PROVE_LOCKING is not set | ||
1721 | # CONFIG_LOCK_STAT is not set | ||
1703 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1722 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1704 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1723 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1705 | # CONFIG_DEBUG_KOBJECT is not set | 1724 | # CONFIG_DEBUG_KOBJECT is not set |
1706 | CONFIG_DEBUG_BUGVERBOSE=y | 1725 | CONFIG_DEBUG_BUGVERBOSE=y |
1707 | # CONFIG_DEBUG_INFO is not set | 1726 | # CONFIG_DEBUG_INFO is not set |
1708 | # CONFIG_DEBUG_VM is not set | 1727 | # CONFIG_DEBUG_VM is not set |
1728 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1709 | # CONFIG_DEBUG_LIST is not set | 1729 | # CONFIG_DEBUG_LIST is not set |
1710 | # CONFIG_DEBUG_SG is not set | 1730 | # CONFIG_DEBUG_SG is not set |
1711 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1731 | # CONFIG_BOOT_PRINTK_DELAY is not set |
@@ -1735,53 +1755,83 @@ CONFIG_ASYNC_CORE=y | |||
1735 | CONFIG_ASYNC_MEMCPY=y | 1755 | CONFIG_ASYNC_MEMCPY=y |
1736 | CONFIG_ASYNC_XOR=y | 1756 | CONFIG_ASYNC_XOR=y |
1737 | CONFIG_CRYPTO=y | 1757 | CONFIG_CRYPTO=y |
1758 | |||
1759 | # | ||
1760 | # Crypto core or helper | ||
1761 | # | ||
1738 | CONFIG_CRYPTO_ALGAPI=y | 1762 | CONFIG_CRYPTO_ALGAPI=y |
1739 | CONFIG_CRYPTO_AEAD=y | 1763 | CONFIG_CRYPTO_AEAD=y |
1740 | CONFIG_CRYPTO_BLKCIPHER=y | 1764 | CONFIG_CRYPTO_BLKCIPHER=y |
1741 | # CONFIG_CRYPTO_SEQIV is not set | ||
1742 | CONFIG_CRYPTO_HASH=y | 1765 | CONFIG_CRYPTO_HASH=y |
1743 | CONFIG_CRYPTO_MANAGER=y | 1766 | CONFIG_CRYPTO_MANAGER=y |
1767 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1768 | # CONFIG_CRYPTO_NULL is not set | ||
1769 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1770 | CONFIG_CRYPTO_AUTHENC=y | ||
1771 | # CONFIG_CRYPTO_TEST is not set | ||
1772 | |||
1773 | # | ||
1774 | # Authenticated Encryption with Associated Data | ||
1775 | # | ||
1776 | # CONFIG_CRYPTO_CCM is not set | ||
1777 | # CONFIG_CRYPTO_GCM is not set | ||
1778 | # CONFIG_CRYPTO_SEQIV is not set | ||
1779 | |||
1780 | # | ||
1781 | # Block modes | ||
1782 | # | ||
1783 | CONFIG_CRYPTO_CBC=y | ||
1784 | # CONFIG_CRYPTO_CTR is not set | ||
1785 | # CONFIG_CRYPTO_CTS is not set | ||
1786 | # CONFIG_CRYPTO_ECB is not set | ||
1787 | # CONFIG_CRYPTO_LRW is not set | ||
1788 | # CONFIG_CRYPTO_PCBC is not set | ||
1789 | # CONFIG_CRYPTO_XTS is not set | ||
1790 | |||
1791 | # | ||
1792 | # Hash modes | ||
1793 | # | ||
1744 | CONFIG_CRYPTO_HMAC=y | 1794 | CONFIG_CRYPTO_HMAC=y |
1745 | # CONFIG_CRYPTO_XCBC is not set | 1795 | # CONFIG_CRYPTO_XCBC is not set |
1746 | # CONFIG_CRYPTO_NULL is not set | 1796 | |
1797 | # | ||
1798 | # Digest | ||
1799 | # | ||
1800 | # CONFIG_CRYPTO_CRC32C is not set | ||
1747 | CONFIG_CRYPTO_MD4=y | 1801 | CONFIG_CRYPTO_MD4=y |
1748 | CONFIG_CRYPTO_MD5=y | 1802 | CONFIG_CRYPTO_MD5=y |
1803 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1749 | CONFIG_CRYPTO_SHA1=y | 1804 | CONFIG_CRYPTO_SHA1=y |
1750 | CONFIG_CRYPTO_SHA256=y | 1805 | CONFIG_CRYPTO_SHA256=y |
1751 | CONFIG_CRYPTO_SHA512=y | 1806 | CONFIG_CRYPTO_SHA512=y |
1752 | # CONFIG_CRYPTO_WP512 is not set | ||
1753 | # CONFIG_CRYPTO_TGR192 is not set | 1807 | # CONFIG_CRYPTO_TGR192 is not set |
1754 | # CONFIG_CRYPTO_GF128MUL is not set | 1808 | # CONFIG_CRYPTO_WP512 is not set |
1755 | # CONFIG_CRYPTO_ECB is not set | 1809 | |
1756 | CONFIG_CRYPTO_CBC=y | 1810 | # |
1757 | # CONFIG_CRYPTO_PCBC is not set | 1811 | # Ciphers |
1758 | # CONFIG_CRYPTO_LRW is not set | 1812 | # |
1759 | # CONFIG_CRYPTO_XTS is not set | ||
1760 | # CONFIG_CRYPTO_CTR is not set | ||
1761 | # CONFIG_CRYPTO_GCM is not set | ||
1762 | # CONFIG_CRYPTO_CCM is not set | ||
1763 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1764 | CONFIG_CRYPTO_DES=y | ||
1765 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1766 | CONFIG_CRYPTO_BLOWFISH=y | ||
1767 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1768 | # CONFIG_CRYPTO_SERPENT is not set | ||
1769 | CONFIG_CRYPTO_AES=y | 1813 | CONFIG_CRYPTO_AES=y |
1814 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1815 | # CONFIG_CRYPTO_ARC4 is not set | ||
1816 | CONFIG_CRYPTO_BLOWFISH=y | ||
1817 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1770 | # CONFIG_CRYPTO_CAST5 is not set | 1818 | # CONFIG_CRYPTO_CAST5 is not set |
1771 | # CONFIG_CRYPTO_CAST6 is not set | 1819 | # CONFIG_CRYPTO_CAST6 is not set |
1772 | # CONFIG_CRYPTO_TEA is not set | 1820 | CONFIG_CRYPTO_DES=y |
1773 | # CONFIG_CRYPTO_ARC4 is not set | 1821 | # CONFIG_CRYPTO_FCRYPT is not set |
1774 | # CONFIG_CRYPTO_KHAZAD is not set | 1822 | # CONFIG_CRYPTO_KHAZAD is not set |
1775 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1776 | # CONFIG_CRYPTO_SEED is not set | ||
1777 | # CONFIG_CRYPTO_SALSA20 is not set | 1823 | # CONFIG_CRYPTO_SALSA20 is not set |
1824 | # CONFIG_CRYPTO_SEED is not set | ||
1825 | # CONFIG_CRYPTO_SERPENT is not set | ||
1826 | # CONFIG_CRYPTO_TEA is not set | ||
1827 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1828 | |||
1829 | # | ||
1830 | # Compression | ||
1831 | # | ||
1778 | # CONFIG_CRYPTO_DEFLATE is not set | 1832 | # CONFIG_CRYPTO_DEFLATE is not set |
1779 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1780 | # CONFIG_CRYPTO_CRC32C is not set | ||
1781 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1782 | # CONFIG_CRYPTO_TEST is not set | ||
1783 | CONFIG_CRYPTO_AUTHENC=y | ||
1784 | # CONFIG_CRYPTO_LZO is not set | 1833 | # CONFIG_CRYPTO_LZO is not set |
1785 | CONFIG_CRYPTO_HW=y | 1834 | CONFIG_CRYPTO_HW=y |
1786 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | 1835 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set |
1787 | # CONFIG_PPC_CLOCK is not set | 1836 | # CONFIG_PPC_CLOCK is not set |
1837 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig index fca114252ac7..3688e4bb6fc2 100644 --- a/arch/powerpc/configs/pmac32_defconfig +++ b/arch/powerpc/configs/pmac32_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Thu Mar 27 13:56:21 2008 | 4 | # Tue May 20 20:02:24 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -31,6 +31,8 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
31 | CONFIG_GENERIC_HARDIRQS=y | 31 | CONFIG_GENERIC_HARDIRQS=y |
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | 32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set |
33 | CONFIG_IRQ_PER_CPU=y | 33 | CONFIG_IRQ_PER_CPU=y |
34 | CONFIG_STACKTRACE_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
34 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
35 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
36 | CONFIG_GENERIC_HWEIGHT=y | 38 | CONFIG_GENERIC_HWEIGHT=y |
@@ -91,6 +93,7 @@ CONFIG_INITRAMFS_SOURCE="" | |||
91 | CONFIG_SYSCTL=y | 93 | CONFIG_SYSCTL=y |
92 | # CONFIG_EMBEDDED is not set | 94 | # CONFIG_EMBEDDED is not set |
93 | CONFIG_SYSCTL_SYSCALL=y | 95 | CONFIG_SYSCTL_SYSCALL=y |
96 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
94 | CONFIG_KALLSYMS=y | 97 | CONFIG_KALLSYMS=y |
95 | # CONFIG_KALLSYMS_ALL is not set | 98 | # CONFIG_KALLSYMS_ALL is not set |
96 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 99 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -119,12 +122,14 @@ CONFIG_HAVE_OPROFILE=y | |||
119 | # CONFIG_KPROBES is not set | 122 | # CONFIG_KPROBES is not set |
120 | CONFIG_HAVE_KPROBES=y | 123 | CONFIG_HAVE_KPROBES=y |
121 | CONFIG_HAVE_KRETPROBES=y | 124 | CONFIG_HAVE_KRETPROBES=y |
125 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
122 | CONFIG_PROC_PAGE_MONITOR=y | 126 | CONFIG_PROC_PAGE_MONITOR=y |
123 | CONFIG_SLABINFO=y | 127 | CONFIG_SLABINFO=y |
124 | CONFIG_RT_MUTEXES=y | 128 | CONFIG_RT_MUTEXES=y |
125 | # CONFIG_TINY_SHMEM is not set | 129 | # CONFIG_TINY_SHMEM is not set |
126 | CONFIG_BASE_SMALL=0 | 130 | CONFIG_BASE_SMALL=0 |
127 | CONFIG_MODULES=y | 131 | CONFIG_MODULES=y |
132 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
128 | CONFIG_MODULE_UNLOAD=y | 133 | CONFIG_MODULE_UNLOAD=y |
129 | CONFIG_MODULE_FORCE_UNLOAD=y | 134 | CONFIG_MODULE_FORCE_UNLOAD=y |
130 | # CONFIG_MODVERSIONS is not set | 135 | # CONFIG_MODVERSIONS is not set |
@@ -185,6 +190,7 @@ CONFIG_CPU_FREQ_TABLE=y | |||
185 | CONFIG_CPU_FREQ_STAT=y | 190 | CONFIG_CPU_FREQ_STAT=y |
186 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 191 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
187 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 192 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y |
193 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
188 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 194 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set |
189 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | 195 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set |
190 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | 196 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set |
@@ -236,16 +242,17 @@ CONFIG_FLATMEM=y | |||
236 | CONFIG_FLAT_NODE_MEM_MAP=y | 242 | CONFIG_FLAT_NODE_MEM_MAP=y |
237 | # CONFIG_SPARSEMEM_STATIC is not set | 243 | # CONFIG_SPARSEMEM_STATIC is not set |
238 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | 244 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set |
245 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
239 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 246 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
240 | # CONFIG_RESOURCES_64BIT is not set | 247 | # CONFIG_RESOURCES_64BIT is not set |
241 | CONFIG_ZONE_DMA_FLAG=1 | 248 | CONFIG_ZONE_DMA_FLAG=1 |
242 | CONFIG_BOUNCE=y | 249 | CONFIG_BOUNCE=y |
243 | CONFIG_VIRT_TO_BUS=y | 250 | CONFIG_VIRT_TO_BUS=y |
251 | CONFIG_FORCE_MAX_ZONEORDER=11 | ||
244 | CONFIG_PROC_DEVICETREE=y | 252 | CONFIG_PROC_DEVICETREE=y |
245 | # CONFIG_CMDLINE_BOOL is not set | 253 | # CONFIG_CMDLINE_BOOL is not set |
246 | CONFIG_ARCH_WANTS_FREEZER_CONTROL=y | 254 | CONFIG_ARCH_WANTS_FREEZER_CONTROL=y |
247 | CONFIG_PM=y | 255 | CONFIG_PM=y |
248 | # CONFIG_PM_LEGACY is not set | ||
249 | CONFIG_PM_DEBUG=y | 256 | CONFIG_PM_DEBUG=y |
250 | # CONFIG_PM_VERBOSE is not set | 257 | # CONFIG_PM_VERBOSE is not set |
251 | CONFIG_CAN_PM_TRACE=y | 258 | CONFIG_CAN_PM_TRACE=y |
@@ -292,6 +299,7 @@ CONFIG_YENTA_TOSHIBA=y | |||
292 | # CONFIG_I82092 is not set | 299 | # CONFIG_I82092 is not set |
293 | CONFIG_PCCARD_NONSTATIC=m | 300 | CONFIG_PCCARD_NONSTATIC=m |
294 | # CONFIG_HOTPLUG_PCI is not set | 301 | # CONFIG_HOTPLUG_PCI is not set |
302 | # CONFIG_HAS_RAPIDIO is not set | ||
295 | 303 | ||
296 | # | 304 | # |
297 | # Advanced setup | 305 | # Advanced setup |
@@ -301,11 +309,11 @@ CONFIG_PCCARD_NONSTATIC=m | |||
301 | # | 309 | # |
302 | # Default settings for advanced configuration options are used | 310 | # Default settings for advanced configuration options are used |
303 | # | 311 | # |
304 | CONFIG_HIGHMEM_START=0xfe000000 | ||
305 | CONFIG_LOWMEM_SIZE=0x30000000 | 312 | CONFIG_LOWMEM_SIZE=0x30000000 |
313 | CONFIG_PAGE_OFFSET=0xc0000000 | ||
306 | CONFIG_KERNEL_START=0xc0000000 | 314 | CONFIG_KERNEL_START=0xc0000000 |
315 | CONFIG_PHYSICAL_START=0x00000000 | ||
307 | CONFIG_TASK_SIZE=0xc0000000 | 316 | CONFIG_TASK_SIZE=0xc0000000 |
308 | CONFIG_BOOT_LOAD=0x00800000 | ||
309 | 317 | ||
310 | # | 318 | # |
311 | # Networking | 319 | # Networking |
@@ -352,8 +360,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
352 | # CONFIG_TCP_MD5SIG is not set | 360 | # CONFIG_TCP_MD5SIG is not set |
353 | # CONFIG_IP_VS is not set | 361 | # CONFIG_IP_VS is not set |
354 | # CONFIG_IPV6 is not set | 362 | # CONFIG_IPV6 is not set |
355 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
356 | # CONFIG_INET6_TUNNEL is not set | ||
357 | # CONFIG_NETWORK_SECMARK is not set | 363 | # CONFIG_NETWORK_SECMARK is not set |
358 | CONFIG_NETFILTER=y | 364 | CONFIG_NETFILTER=y |
359 | # CONFIG_NETFILTER_DEBUG is not set | 365 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -369,6 +375,7 @@ CONFIG_NF_CONNTRACK=m | |||
369 | # CONFIG_NF_CT_ACCT is not set | 375 | # CONFIG_NF_CT_ACCT is not set |
370 | # CONFIG_NF_CONNTRACK_MARK is not set | 376 | # CONFIG_NF_CONNTRACK_MARK is not set |
371 | # CONFIG_NF_CONNTRACK_EVENTS is not set | 377 | # CONFIG_NF_CONNTRACK_EVENTS is not set |
378 | CONFIG_NF_CT_PROTO_DCCP=m | ||
372 | # CONFIG_NF_CT_PROTO_SCTP is not set | 379 | # CONFIG_NF_CT_PROTO_SCTP is not set |
373 | # CONFIG_NF_CT_PROTO_UDPLITE is not set | 380 | # CONFIG_NF_CT_PROTO_UDPLITE is not set |
374 | # CONFIG_NF_CONNTRACK_AMANDA is not set | 381 | # CONFIG_NF_CONNTRACK_AMANDA is not set |
@@ -445,6 +452,7 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m | |||
445 | CONFIG_IP_NF_TARGET_REDIRECT=m | 452 | CONFIG_IP_NF_TARGET_REDIRECT=m |
446 | CONFIG_IP_NF_TARGET_NETMAP=m | 453 | CONFIG_IP_NF_TARGET_NETMAP=m |
447 | # CONFIG_NF_NAT_SNMP_BASIC is not set | 454 | # CONFIG_NF_NAT_SNMP_BASIC is not set |
455 | CONFIG_NF_NAT_PROTO_DCCP=m | ||
448 | CONFIG_NF_NAT_FTP=m | 456 | CONFIG_NF_NAT_FTP=m |
449 | CONFIG_NF_NAT_IRC=m | 457 | CONFIG_NF_NAT_IRC=m |
450 | CONFIG_NF_NAT_TFTP=m | 458 | CONFIG_NF_NAT_TFTP=m |
@@ -586,7 +594,6 @@ CONFIG_MAC80211=m | |||
586 | # Rate control algorithm selection | 594 | # Rate control algorithm selection |
587 | # | 595 | # |
588 | CONFIG_MAC80211_RC_DEFAULT_PID=y | 596 | CONFIG_MAC80211_RC_DEFAULT_PID=y |
589 | # CONFIG_MAC80211_RC_DEFAULT_SIMPLE is not set | ||
590 | # CONFIG_MAC80211_RC_DEFAULT_NONE is not set | 597 | # CONFIG_MAC80211_RC_DEFAULT_NONE is not set |
591 | 598 | ||
592 | # | 599 | # |
@@ -598,7 +605,7 @@ CONFIG_MAC80211_RC_DEFAULT_PID=y | |||
598 | # | 605 | # |
599 | CONFIG_MAC80211_RC_DEFAULT="pid" | 606 | CONFIG_MAC80211_RC_DEFAULT="pid" |
600 | CONFIG_MAC80211_RC_PID=y | 607 | CONFIG_MAC80211_RC_PID=y |
601 | # CONFIG_MAC80211_RC_SIMPLE is not set | 608 | # CONFIG_MAC80211_MESH is not set |
602 | CONFIG_MAC80211_LEDS=y | 609 | CONFIG_MAC80211_LEDS=y |
603 | # CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set | 610 | # CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set |
604 | # CONFIG_MAC80211_DEBUG is not set | 611 | # CONFIG_MAC80211_DEBUG is not set |
@@ -607,7 +614,6 @@ CONFIG_IEEE80211=m | |||
607 | CONFIG_IEEE80211_CRYPT_WEP=m | 614 | CONFIG_IEEE80211_CRYPT_WEP=m |
608 | CONFIG_IEEE80211_CRYPT_CCMP=m | 615 | CONFIG_IEEE80211_CRYPT_CCMP=m |
609 | CONFIG_IEEE80211_CRYPT_TKIP=m | 616 | CONFIG_IEEE80211_CRYPT_TKIP=m |
610 | # CONFIG_IEEE80211_SOFTMAC is not set | ||
611 | # CONFIG_RFKILL is not set | 617 | # CONFIG_RFKILL is not set |
612 | # CONFIG_NET_9P is not set | 618 | # CONFIG_NET_9P is not set |
613 | 619 | ||
@@ -629,6 +635,7 @@ CONFIG_CONNECTOR=y | |||
629 | CONFIG_PROC_EVENTS=y | 635 | CONFIG_PROC_EVENTS=y |
630 | # CONFIG_MTD is not set | 636 | # CONFIG_MTD is not set |
631 | CONFIG_OF_DEVICE=y | 637 | CONFIG_OF_DEVICE=y |
638 | CONFIG_OF_I2C=y | ||
632 | # CONFIG_PARPORT is not set | 639 | # CONFIG_PARPORT is not set |
633 | CONFIG_BLK_DEV=y | 640 | CONFIG_BLK_DEV=y |
634 | # CONFIG_BLK_DEV_FD is not set | 641 | # CONFIG_BLK_DEV_FD is not set |
@@ -720,7 +727,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y | |||
720 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 727 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
721 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 728 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
722 | CONFIG_BLK_DEV_IDEDMA=y | 729 | CONFIG_BLK_DEV_IDEDMA=y |
723 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 730 | # CONFIG_BLK_DEV_HD_ONLY is not set |
724 | # CONFIG_BLK_DEV_HD is not set | 731 | # CONFIG_BLK_DEV_HD is not set |
725 | 732 | ||
726 | # | 733 | # |
@@ -906,7 +913,6 @@ CONFIG_SUNGEM=y | |||
906 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 913 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
907 | CONFIG_NET_PCI=y | 914 | CONFIG_NET_PCI=y |
908 | CONFIG_PCNET32=y | 915 | CONFIG_PCNET32=y |
909 | # CONFIG_PCNET32_NAPI is not set | ||
910 | # CONFIG_AMD8111_ETH is not set | 916 | # CONFIG_AMD8111_ETH is not set |
911 | # CONFIG_ADAPTEC_STARFIRE is not set | 917 | # CONFIG_ADAPTEC_STARFIRE is not set |
912 | # CONFIG_B44 is not set | 918 | # CONFIG_B44 is not set |
@@ -940,7 +946,6 @@ CONFIG_NETDEV_1000=y | |||
940 | # CONFIG_SIS190 is not set | 946 | # CONFIG_SIS190 is not set |
941 | # CONFIG_SKGE is not set | 947 | # CONFIG_SKGE is not set |
942 | # CONFIG_SKY2 is not set | 948 | # CONFIG_SKY2 is not set |
943 | # CONFIG_SK98LIN is not set | ||
944 | # CONFIG_VIA_VELOCITY is not set | 949 | # CONFIG_VIA_VELOCITY is not set |
945 | # CONFIG_TIGON3 is not set | 950 | # CONFIG_TIGON3 is not set |
946 | # CONFIG_BNX2 is not set | 951 | # CONFIG_BNX2 is not set |
@@ -959,6 +964,7 @@ CONFIG_NETDEV_10000=y | |||
959 | # CONFIG_MLX4_CORE is not set | 964 | # CONFIG_MLX4_CORE is not set |
960 | # CONFIG_TEHUTI is not set | 965 | # CONFIG_TEHUTI is not set |
961 | # CONFIG_BNX2X is not set | 966 | # CONFIG_BNX2X is not set |
967 | # CONFIG_SFC is not set | ||
962 | # CONFIG_TR is not set | 968 | # CONFIG_TR is not set |
963 | 969 | ||
964 | # | 970 | # |
@@ -992,6 +998,8 @@ CONFIG_P54_COMMON=m | |||
992 | # CONFIG_P54_USB is not set | 998 | # CONFIG_P54_USB is not set |
993 | # CONFIG_P54_PCI is not set | 999 | # CONFIG_P54_PCI is not set |
994 | # CONFIG_ATH5K is not set | 1000 | # CONFIG_ATH5K is not set |
1001 | # CONFIG_IWLCORE is not set | ||
1002 | # CONFIG_IWLWIFI_LEDS is not set | ||
995 | # CONFIG_IWL4965 is not set | 1003 | # CONFIG_IWL4965 is not set |
996 | # CONFIG_IWL3945 is not set | 1004 | # CONFIG_IWL3945 is not set |
997 | # CONFIG_HOSTAP is not set | 1005 | # CONFIG_HOSTAP is not set |
@@ -1110,6 +1118,7 @@ CONFIG_VT=y | |||
1110 | CONFIG_VT_CONSOLE=y | 1118 | CONFIG_VT_CONSOLE=y |
1111 | CONFIG_HW_CONSOLE=y | 1119 | CONFIG_HW_CONSOLE=y |
1112 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 1120 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
1121 | CONFIG_DEVKMEM=y | ||
1113 | # CONFIG_SERIAL_NONSTANDARD is not set | 1122 | # CONFIG_SERIAL_NONSTANDARD is not set |
1114 | # CONFIG_NOZOMI is not set | 1123 | # CONFIG_NOZOMI is not set |
1115 | 1124 | ||
@@ -1156,13 +1165,7 @@ CONFIG_DEVPORT=y | |||
1156 | CONFIG_I2C=y | 1165 | CONFIG_I2C=y |
1157 | CONFIG_I2C_BOARDINFO=y | 1166 | CONFIG_I2C_BOARDINFO=y |
1158 | CONFIG_I2C_CHARDEV=m | 1167 | CONFIG_I2C_CHARDEV=m |
1159 | |||
1160 | # | ||
1161 | # I2C Algorithms | ||
1162 | # | ||
1163 | CONFIG_I2C_ALGOBIT=y | 1168 | CONFIG_I2C_ALGOBIT=y |
1164 | # CONFIG_I2C_ALGOPCF is not set | ||
1165 | # CONFIG_I2C_ALGOPCA is not set | ||
1166 | 1169 | ||
1167 | # | 1170 | # |
1168 | # I2C Hardware Bus support | 1171 | # I2C Hardware Bus support |
@@ -1192,6 +1195,7 @@ CONFIG_I2C_POWERMAC=y | |||
1192 | # CONFIG_I2C_VIA is not set | 1195 | # CONFIG_I2C_VIA is not set |
1193 | # CONFIG_I2C_VIAPRO is not set | 1196 | # CONFIG_I2C_VIAPRO is not set |
1194 | # CONFIG_I2C_VOODOO3 is not set | 1197 | # CONFIG_I2C_VOODOO3 is not set |
1198 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
1195 | 1199 | ||
1196 | # | 1200 | # |
1197 | # Miscellaneous I2C Chip support | 1201 | # Miscellaneous I2C Chip support |
@@ -1201,19 +1205,13 @@ CONFIG_I2C_POWERMAC=y | |||
1201 | # CONFIG_SENSORS_PCF8574 is not set | 1205 | # CONFIG_SENSORS_PCF8574 is not set |
1202 | # CONFIG_PCF8575 is not set | 1206 | # CONFIG_PCF8575 is not set |
1203 | # CONFIG_SENSORS_PCF8591 is not set | 1207 | # CONFIG_SENSORS_PCF8591 is not set |
1204 | # CONFIG_TPS65010 is not set | ||
1205 | # CONFIG_SENSORS_MAX6875 is not set | 1208 | # CONFIG_SENSORS_MAX6875 is not set |
1206 | # CONFIG_SENSORS_TSL2550 is not set | 1209 | # CONFIG_SENSORS_TSL2550 is not set |
1207 | # CONFIG_I2C_DEBUG_CORE is not set | 1210 | # CONFIG_I2C_DEBUG_CORE is not set |
1208 | # CONFIG_I2C_DEBUG_ALGO is not set | 1211 | # CONFIG_I2C_DEBUG_ALGO is not set |
1209 | # CONFIG_I2C_DEBUG_BUS is not set | 1212 | # CONFIG_I2C_DEBUG_BUS is not set |
1210 | # CONFIG_I2C_DEBUG_CHIP is not set | 1213 | # CONFIG_I2C_DEBUG_CHIP is not set |
1211 | |||
1212 | # | ||
1213 | # SPI support | ||
1214 | # | ||
1215 | # CONFIG_SPI is not set | 1214 | # CONFIG_SPI is not set |
1216 | # CONFIG_SPI_MASTER is not set | ||
1217 | # CONFIG_W1 is not set | 1215 | # CONFIG_W1 is not set |
1218 | CONFIG_POWER_SUPPLY=y | 1216 | CONFIG_POWER_SUPPLY=y |
1219 | # CONFIG_POWER_SUPPLY_DEBUG is not set | 1217 | # CONFIG_POWER_SUPPLY_DEBUG is not set |
@@ -1230,6 +1228,7 @@ CONFIG_BATTERY_PMU=y | |||
1230 | # | 1228 | # |
1231 | CONFIG_SSB_POSSIBLE=y | 1229 | CONFIG_SSB_POSSIBLE=y |
1232 | CONFIG_SSB=m | 1230 | CONFIG_SSB=m |
1231 | CONFIG_SSB_SPROM=y | ||
1233 | CONFIG_SSB_PCIHOST_POSSIBLE=y | 1232 | CONFIG_SSB_PCIHOST_POSSIBLE=y |
1234 | CONFIG_SSB_PCIHOST=y | 1233 | CONFIG_SSB_PCIHOST=y |
1235 | CONFIG_SSB_B43_PCI_BRIDGE=y | 1234 | CONFIG_SSB_B43_PCI_BRIDGE=y |
@@ -1243,12 +1242,22 @@ CONFIG_SSB_DRIVER_PCICORE=y | |||
1243 | # Multifunction device drivers | 1242 | # Multifunction device drivers |
1244 | # | 1243 | # |
1245 | # CONFIG_MFD_SM501 is not set | 1244 | # CONFIG_MFD_SM501 is not set |
1245 | # CONFIG_HTC_PASIC3 is not set | ||
1246 | 1246 | ||
1247 | # | 1247 | # |
1248 | # Multimedia devices | 1248 | # Multimedia devices |
1249 | # | 1249 | # |
1250 | |||
1251 | # | ||
1252 | # Multimedia core support | ||
1253 | # | ||
1250 | # CONFIG_VIDEO_DEV is not set | 1254 | # CONFIG_VIDEO_DEV is not set |
1251 | # CONFIG_DVB_CORE is not set | 1255 | # CONFIG_DVB_CORE is not set |
1256 | # CONFIG_VIDEO_MEDIA is not set | ||
1257 | |||
1258 | # | ||
1259 | # Multimedia drivers | ||
1260 | # | ||
1252 | # CONFIG_DAB is not set | 1261 | # CONFIG_DAB is not set |
1253 | 1262 | ||
1254 | # | 1263 | # |
@@ -1276,8 +1285,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
1276 | # CONFIG_FB_SYS_FILLRECT is not set | 1285 | # CONFIG_FB_SYS_FILLRECT is not set |
1277 | # CONFIG_FB_SYS_COPYAREA is not set | 1286 | # CONFIG_FB_SYS_COPYAREA is not set |
1278 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 1287 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
1288 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
1279 | # CONFIG_FB_SYS_FOPS is not set | 1289 | # CONFIG_FB_SYS_FOPS is not set |
1280 | CONFIG_FB_DEFERRED_IO=y | ||
1281 | # CONFIG_FB_SVGALIB is not set | 1290 | # CONFIG_FB_SVGALIB is not set |
1282 | CONFIG_FB_MACMODES=y | 1291 | CONFIG_FB_MACMODES=y |
1283 | CONFIG_FB_BACKLIGHT=y | 1292 | CONFIG_FB_BACKLIGHT=y |
@@ -1413,6 +1422,7 @@ CONFIG_SND_DUMMY=m | |||
1413 | # CONFIG_SND_AU8810 is not set | 1422 | # CONFIG_SND_AU8810 is not set |
1414 | # CONFIG_SND_AU8820 is not set | 1423 | # CONFIG_SND_AU8820 is not set |
1415 | # CONFIG_SND_AU8830 is not set | 1424 | # CONFIG_SND_AU8830 is not set |
1425 | # CONFIG_SND_AW2 is not set | ||
1416 | # CONFIG_SND_AZT3328 is not set | 1426 | # CONFIG_SND_AZT3328 is not set |
1417 | # CONFIG_SND_BT87X is not set | 1427 | # CONFIG_SND_BT87X is not set |
1418 | # CONFIG_SND_CA0106 is not set | 1428 | # CONFIG_SND_CA0106 is not set |
@@ -1505,11 +1515,11 @@ CONFIG_SND_USB_AUDIO=m | |||
1505 | # CONFIG_SND_SOC is not set | 1515 | # CONFIG_SND_SOC is not set |
1506 | 1516 | ||
1507 | # | 1517 | # |
1508 | # SoC Audio support for SuperH | 1518 | # ALSA SoC audio for Freescale SOCs |
1509 | # | 1519 | # |
1510 | 1520 | ||
1511 | # | 1521 | # |
1512 | # ALSA SoC audio for Freescale SOCs | 1522 | # SoC Audio for the Texas Instruments OMAP |
1513 | # | 1523 | # |
1514 | 1524 | ||
1515 | # | 1525 | # |
@@ -1543,17 +1553,18 @@ CONFIG_USB_DEVICEFS=y | |||
1543 | CONFIG_USB_DEVICE_CLASS=y | 1553 | CONFIG_USB_DEVICE_CLASS=y |
1544 | CONFIG_USB_DYNAMIC_MINORS=y | 1554 | CONFIG_USB_DYNAMIC_MINORS=y |
1545 | # CONFIG_USB_SUSPEND is not set | 1555 | # CONFIG_USB_SUSPEND is not set |
1546 | # CONFIG_USB_PERSIST is not set | ||
1547 | # CONFIG_USB_OTG is not set | 1556 | # CONFIG_USB_OTG is not set |
1548 | 1557 | ||
1549 | # | 1558 | # |
1550 | # USB Host Controller Drivers | 1559 | # USB Host Controller Drivers |
1551 | # | 1560 | # |
1561 | # CONFIG_USB_C67X00_HCD is not set | ||
1552 | CONFIG_USB_EHCI_HCD=m | 1562 | CONFIG_USB_EHCI_HCD=m |
1553 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1563 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1554 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1564 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1555 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1565 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1556 | # CONFIG_USB_ISP116X_HCD is not set | 1566 | # CONFIG_USB_ISP116X_HCD is not set |
1567 | # CONFIG_USB_ISP1760_HCD is not set | ||
1557 | CONFIG_USB_OHCI_HCD=y | 1568 | CONFIG_USB_OHCI_HCD=y |
1558 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1569 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
1559 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 1570 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
@@ -1587,7 +1598,9 @@ CONFIG_USB_STORAGE=m | |||
1587 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1598 | # CONFIG_USB_STORAGE_SDDR55 is not set |
1588 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1599 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
1589 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1600 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1601 | CONFIG_USB_STORAGE_ONETOUCH=y | ||
1590 | # CONFIG_USB_STORAGE_KARMA is not set | 1602 | # CONFIG_USB_STORAGE_KARMA is not set |
1603 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1591 | # CONFIG_USB_LIBUSUAL is not set | 1604 | # CONFIG_USB_LIBUSUAL is not set |
1592 | 1605 | ||
1593 | # | 1606 | # |
@@ -1642,9 +1655,11 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | |||
1642 | # CONFIG_USB_SERIAL_MCT_U232 is not set | 1655 | # CONFIG_USB_SERIAL_MCT_U232 is not set |
1643 | # CONFIG_USB_SERIAL_MOS7720 is not set | 1656 | # CONFIG_USB_SERIAL_MOS7720 is not set |
1644 | # CONFIG_USB_SERIAL_MOS7840 is not set | 1657 | # CONFIG_USB_SERIAL_MOS7840 is not set |
1658 | # CONFIG_USB_SERIAL_MOTOROLA is not set | ||
1645 | # CONFIG_USB_SERIAL_NAVMAN is not set | 1659 | # CONFIG_USB_SERIAL_NAVMAN is not set |
1646 | # CONFIG_USB_SERIAL_PL2303 is not set | 1660 | # CONFIG_USB_SERIAL_PL2303 is not set |
1647 | # CONFIG_USB_SERIAL_OTI6858 is not set | 1661 | # CONFIG_USB_SERIAL_OTI6858 is not set |
1662 | # CONFIG_USB_SERIAL_SPCP8X5 is not set | ||
1648 | # CONFIG_USB_SERIAL_HP4X is not set | 1663 | # CONFIG_USB_SERIAL_HP4X is not set |
1649 | # CONFIG_USB_SERIAL_SAFE is not set | 1664 | # CONFIG_USB_SERIAL_SAFE is not set |
1650 | # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set | 1665 | # CONFIG_USB_SERIAL_SIERRAWIRELESS is not set |
@@ -1695,14 +1710,12 @@ CONFIG_LEDS_TRIGGERS=y | |||
1695 | # CONFIG_LEDS_TRIGGER_TIMER is not set | 1710 | # CONFIG_LEDS_TRIGGER_TIMER is not set |
1696 | CONFIG_LEDS_TRIGGER_IDE_DISK=y | 1711 | CONFIG_LEDS_TRIGGER_IDE_DISK=y |
1697 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set | 1712 | # CONFIG_LEDS_TRIGGER_HEARTBEAT is not set |
1713 | CONFIG_LEDS_TRIGGER_DEFAULT_ON=y | ||
1714 | # CONFIG_ACCESSIBILITY is not set | ||
1698 | # CONFIG_INFINIBAND is not set | 1715 | # CONFIG_INFINIBAND is not set |
1699 | # CONFIG_EDAC is not set | 1716 | # CONFIG_EDAC is not set |
1700 | # CONFIG_RTC_CLASS is not set | 1717 | # CONFIG_RTC_CLASS is not set |
1701 | # CONFIG_DMADEVICES is not set | 1718 | # CONFIG_DMADEVICES is not set |
1702 | |||
1703 | # | ||
1704 | # Userspace I/O | ||
1705 | # | ||
1706 | # CONFIG_UIO is not set | 1719 | # CONFIG_UIO is not set |
1707 | 1720 | ||
1708 | # | 1721 | # |
@@ -1786,13 +1799,11 @@ CONFIG_NFS_FS=y | |||
1786 | CONFIG_NFS_V3=y | 1799 | CONFIG_NFS_V3=y |
1787 | CONFIG_NFS_V3_ACL=y | 1800 | CONFIG_NFS_V3_ACL=y |
1788 | CONFIG_NFS_V4=y | 1801 | CONFIG_NFS_V4=y |
1789 | # CONFIG_NFS_DIRECTIO is not set | ||
1790 | CONFIG_NFSD=m | 1802 | CONFIG_NFSD=m |
1791 | CONFIG_NFSD_V2_ACL=y | 1803 | CONFIG_NFSD_V2_ACL=y |
1792 | CONFIG_NFSD_V3=y | 1804 | CONFIG_NFSD_V3=y |
1793 | CONFIG_NFSD_V3_ACL=y | 1805 | CONFIG_NFSD_V3_ACL=y |
1794 | CONFIG_NFSD_V4=y | 1806 | CONFIG_NFSD_V4=y |
1795 | CONFIG_NFSD_TCP=y | ||
1796 | CONFIG_LOCKD=y | 1807 | CONFIG_LOCKD=y |
1797 | CONFIG_LOCKD_V4=y | 1808 | CONFIG_LOCKD_V4=y |
1798 | CONFIG_EXPORTFS=m | 1809 | CONFIG_EXPORTFS=m |
@@ -1877,9 +1888,10 @@ CONFIG_NLS_UTF8=m | |||
1877 | # Library routines | 1888 | # Library routines |
1878 | # | 1889 | # |
1879 | CONFIG_BITREVERSE=y | 1890 | CONFIG_BITREVERSE=y |
1891 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1880 | CONFIG_CRC_CCITT=y | 1892 | CONFIG_CRC_CCITT=y |
1881 | CONFIG_CRC16=y | 1893 | CONFIG_CRC16=y |
1882 | # CONFIG_CRC_ITU_T is not set | 1894 | CONFIG_CRC_ITU_T=m |
1883 | CONFIG_CRC32=y | 1895 | CONFIG_CRC32=y |
1884 | # CONFIG_CRC7 is not set | 1896 | # CONFIG_CRC7 is not set |
1885 | CONFIG_LIBCRC32C=m | 1897 | CONFIG_LIBCRC32C=m |
@@ -1901,6 +1913,7 @@ CONFIG_HAVE_LMB=y | |||
1901 | # CONFIG_PRINTK_TIME is not set | 1913 | # CONFIG_PRINTK_TIME is not set |
1902 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1914 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1903 | CONFIG_ENABLE_MUST_CHECK=y | 1915 | CONFIG_ENABLE_MUST_CHECK=y |
1916 | CONFIG_FRAME_WARN=1024 | ||
1904 | CONFIG_MAGIC_SYSRQ=y | 1917 | CONFIG_MAGIC_SYSRQ=y |
1905 | # CONFIG_UNUSED_SYMBOLS is not set | 1918 | # CONFIG_UNUSED_SYMBOLS is not set |
1906 | # CONFIG_DEBUG_FS is not set | 1919 | # CONFIG_DEBUG_FS is not set |
@@ -1911,6 +1924,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1911 | CONFIG_SCHED_DEBUG=y | 1924 | CONFIG_SCHED_DEBUG=y |
1912 | # CONFIG_SCHEDSTATS is not set | 1925 | # CONFIG_SCHEDSTATS is not set |
1913 | # CONFIG_TIMER_STATS is not set | 1926 | # CONFIG_TIMER_STATS is not set |
1927 | # CONFIG_DEBUG_OBJECTS is not set | ||
1914 | # CONFIG_SLUB_DEBUG_ON is not set | 1928 | # CONFIG_SLUB_DEBUG_ON is not set |
1915 | # CONFIG_SLUB_STATS is not set | 1929 | # CONFIG_SLUB_STATS is not set |
1916 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1930 | # CONFIG_DEBUG_RT_MUTEXES is not set |
@@ -1923,6 +1937,7 @@ CONFIG_SCHED_DEBUG=y | |||
1923 | CONFIG_DEBUG_BUGVERBOSE=y | 1937 | CONFIG_DEBUG_BUGVERBOSE=y |
1924 | # CONFIG_DEBUG_INFO is not set | 1938 | # CONFIG_DEBUG_INFO is not set |
1925 | # CONFIG_DEBUG_VM is not set | 1939 | # CONFIG_DEBUG_VM is not set |
1940 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1926 | # CONFIG_DEBUG_LIST is not set | 1941 | # CONFIG_DEBUG_LIST is not set |
1927 | # CONFIG_DEBUG_SG is not set | 1942 | # CONFIG_DEBUG_SG is not set |
1928 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1943 | # CONFIG_BOOT_PRINTK_DELAY is not set |
@@ -1936,6 +1951,7 @@ CONFIG_DEBUGGER=y | |||
1936 | CONFIG_XMON=y | 1951 | CONFIG_XMON=y |
1937 | CONFIG_XMON_DEFAULT=y | 1952 | CONFIG_XMON_DEFAULT=y |
1938 | CONFIG_XMON_DISASSEMBLY=y | 1953 | CONFIG_XMON_DISASSEMBLY=y |
1954 | CONFIG_IRQSTACKS=y | ||
1939 | # CONFIG_BDI_SWITCH is not set | 1955 | # CONFIG_BDI_SWITCH is not set |
1940 | CONFIG_BOOTX_TEXT=y | 1956 | CONFIG_BOOTX_TEXT=y |
1941 | # CONFIG_PPC_EARLY_DEBUG is not set | 1957 | # CONFIG_PPC_EARLY_DEBUG is not set |
@@ -1947,54 +1963,84 @@ CONFIG_BOOTX_TEXT=y | |||
1947 | # CONFIG_SECURITY is not set | 1963 | # CONFIG_SECURITY is not set |
1948 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1964 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1949 | CONFIG_CRYPTO=y | 1965 | CONFIG_CRYPTO=y |
1966 | |||
1967 | # | ||
1968 | # Crypto core or helper | ||
1969 | # | ||
1950 | CONFIG_CRYPTO_ALGAPI=y | 1970 | CONFIG_CRYPTO_ALGAPI=y |
1951 | CONFIG_CRYPTO_AEAD=y | 1971 | CONFIG_CRYPTO_AEAD=y |
1952 | CONFIG_CRYPTO_BLKCIPHER=y | 1972 | CONFIG_CRYPTO_BLKCIPHER=y |
1953 | # CONFIG_CRYPTO_SEQIV is not set | ||
1954 | CONFIG_CRYPTO_HASH=y | 1973 | CONFIG_CRYPTO_HASH=y |
1955 | CONFIG_CRYPTO_MANAGER=y | 1974 | CONFIG_CRYPTO_MANAGER=y |
1975 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1976 | CONFIG_CRYPTO_NULL=m | ||
1977 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1978 | CONFIG_CRYPTO_AUTHENC=y | ||
1979 | # CONFIG_CRYPTO_TEST is not set | ||
1980 | |||
1981 | # | ||
1982 | # Authenticated Encryption with Associated Data | ||
1983 | # | ||
1984 | # CONFIG_CRYPTO_CCM is not set | ||
1985 | # CONFIG_CRYPTO_GCM is not set | ||
1986 | # CONFIG_CRYPTO_SEQIV is not set | ||
1987 | |||
1988 | # | ||
1989 | # Block modes | ||
1990 | # | ||
1991 | CONFIG_CRYPTO_CBC=y | ||
1992 | # CONFIG_CRYPTO_CTR is not set | ||
1993 | # CONFIG_CRYPTO_CTS is not set | ||
1994 | CONFIG_CRYPTO_ECB=m | ||
1995 | # CONFIG_CRYPTO_LRW is not set | ||
1996 | CONFIG_CRYPTO_PCBC=m | ||
1997 | # CONFIG_CRYPTO_XTS is not set | ||
1998 | |||
1999 | # | ||
2000 | # Hash modes | ||
2001 | # | ||
1956 | CONFIG_CRYPTO_HMAC=y | 2002 | CONFIG_CRYPTO_HMAC=y |
1957 | # CONFIG_CRYPTO_XCBC is not set | 2003 | # CONFIG_CRYPTO_XCBC is not set |
1958 | CONFIG_CRYPTO_NULL=m | 2004 | |
2005 | # | ||
2006 | # Digest | ||
2007 | # | ||
2008 | CONFIG_CRYPTO_CRC32C=m | ||
1959 | CONFIG_CRYPTO_MD4=m | 2009 | CONFIG_CRYPTO_MD4=m |
1960 | CONFIG_CRYPTO_MD5=y | 2010 | CONFIG_CRYPTO_MD5=y |
2011 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1961 | CONFIG_CRYPTO_SHA1=y | 2012 | CONFIG_CRYPTO_SHA1=y |
1962 | CONFIG_CRYPTO_SHA256=m | 2013 | CONFIG_CRYPTO_SHA256=m |
1963 | CONFIG_CRYPTO_SHA512=m | 2014 | CONFIG_CRYPTO_SHA512=m |
1964 | CONFIG_CRYPTO_WP512=m | ||
1965 | CONFIG_CRYPTO_TGR192=m | 2015 | CONFIG_CRYPTO_TGR192=m |
1966 | # CONFIG_CRYPTO_GF128MUL is not set | 2016 | CONFIG_CRYPTO_WP512=m |
1967 | CONFIG_CRYPTO_ECB=m | 2017 | |
1968 | CONFIG_CRYPTO_CBC=y | 2018 | # |
1969 | CONFIG_CRYPTO_PCBC=m | 2019 | # Ciphers |
1970 | # CONFIG_CRYPTO_LRW is not set | 2020 | # |
1971 | # CONFIG_CRYPTO_XTS is not set | ||
1972 | # CONFIG_CRYPTO_CTR is not set | ||
1973 | # CONFIG_CRYPTO_GCM is not set | ||
1974 | # CONFIG_CRYPTO_CCM is not set | ||
1975 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1976 | CONFIG_CRYPTO_DES=y | ||
1977 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1978 | CONFIG_CRYPTO_BLOWFISH=m | ||
1979 | CONFIG_CRYPTO_TWOFISH=m | ||
1980 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1981 | CONFIG_CRYPTO_SERPENT=m | ||
1982 | CONFIG_CRYPTO_AES=m | 2021 | CONFIG_CRYPTO_AES=m |
2022 | CONFIG_CRYPTO_ANUBIS=m | ||
2023 | CONFIG_CRYPTO_ARC4=m | ||
2024 | CONFIG_CRYPTO_BLOWFISH=m | ||
2025 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1983 | CONFIG_CRYPTO_CAST5=m | 2026 | CONFIG_CRYPTO_CAST5=m |
1984 | CONFIG_CRYPTO_CAST6=m | 2027 | CONFIG_CRYPTO_CAST6=m |
1985 | CONFIG_CRYPTO_TEA=m | 2028 | CONFIG_CRYPTO_DES=y |
1986 | CONFIG_CRYPTO_ARC4=m | 2029 | # CONFIG_CRYPTO_FCRYPT is not set |
1987 | CONFIG_CRYPTO_KHAZAD=m | 2030 | CONFIG_CRYPTO_KHAZAD=m |
1988 | CONFIG_CRYPTO_ANUBIS=m | ||
1989 | # CONFIG_CRYPTO_SEED is not set | ||
1990 | # CONFIG_CRYPTO_SALSA20 is not set | 2031 | # CONFIG_CRYPTO_SALSA20 is not set |
2032 | # CONFIG_CRYPTO_SEED is not set | ||
2033 | CONFIG_CRYPTO_SERPENT=m | ||
2034 | CONFIG_CRYPTO_TEA=m | ||
2035 | CONFIG_CRYPTO_TWOFISH=m | ||
2036 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
2037 | |||
2038 | # | ||
2039 | # Compression | ||
2040 | # | ||
1991 | CONFIG_CRYPTO_DEFLATE=m | 2041 | CONFIG_CRYPTO_DEFLATE=m |
1992 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1993 | CONFIG_CRYPTO_CRC32C=m | ||
1994 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1995 | # CONFIG_CRYPTO_TEST is not set | ||
1996 | CONFIG_CRYPTO_AUTHENC=y | ||
1997 | # CONFIG_CRYPTO_LZO is not set | 2042 | # CONFIG_CRYPTO_LZO is not set |
1998 | CONFIG_CRYPTO_HW=y | 2043 | CONFIG_CRYPTO_HW=y |
1999 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | 2044 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set |
2000 | # CONFIG_PPC_CLOCK is not set | 2045 | # CONFIG_PPC_CLOCK is not set |
2046 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index 970282b1a004..40f84fa2bd29 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Thu Mar 27 13:56:24 2008 | 4 | # Tue May 20 20:03:02 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
32 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
33 | CONFIG_STACKTRACE_SUPPORT=y | ||
34 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
35 | CONFIG_ARCH_HAS_ILOG2_U64=y | 38 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -82,6 +85,7 @@ CONFIG_LOG_BUF_SHIFT=17 | |||
82 | CONFIG_CGROUPS=y | 85 | CONFIG_CGROUPS=y |
83 | # CONFIG_CGROUP_DEBUG is not set | 86 | # CONFIG_CGROUP_DEBUG is not set |
84 | # CONFIG_CGROUP_NS is not set | 87 | # CONFIG_CGROUP_NS is not set |
88 | # CONFIG_CGROUP_DEVICE is not set | ||
85 | CONFIG_CPUSETS=y | 89 | CONFIG_CPUSETS=y |
86 | # CONFIG_GROUP_SCHED is not set | 90 | # CONFIG_GROUP_SCHED is not set |
87 | # CONFIG_CGROUP_CPUACCT is not set | 91 | # CONFIG_CGROUP_CPUACCT is not set |
@@ -101,6 +105,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
101 | CONFIG_SYSCTL=y | 105 | CONFIG_SYSCTL=y |
102 | # CONFIG_EMBEDDED is not set | 106 | # CONFIG_EMBEDDED is not set |
103 | CONFIG_SYSCTL_SYSCALL=y | 107 | CONFIG_SYSCTL_SYSCALL=y |
108 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
104 | CONFIG_KALLSYMS=y | 109 | CONFIG_KALLSYMS=y |
105 | CONFIG_KALLSYMS_ALL=y | 110 | CONFIG_KALLSYMS_ALL=y |
106 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 111 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -108,6 +113,7 @@ CONFIG_HOTPLUG=y | |||
108 | CONFIG_PRINTK=y | 113 | CONFIG_PRINTK=y |
109 | CONFIG_BUG=y | 114 | CONFIG_BUG=y |
110 | CONFIG_ELF_CORE=y | 115 | CONFIG_ELF_CORE=y |
116 | CONFIG_PCSPKR_PLATFORM=y | ||
111 | # CONFIG_COMPAT_BRK is not set | 117 | # CONFIG_COMPAT_BRK is not set |
112 | CONFIG_BASE_FULL=y | 118 | CONFIG_BASE_FULL=y |
113 | CONFIG_FUTEX=y | 119 | CONFIG_FUTEX=y |
@@ -129,12 +135,14 @@ CONFIG_HAVE_OPROFILE=y | |||
129 | # CONFIG_KPROBES is not set | 135 | # CONFIG_KPROBES is not set |
130 | CONFIG_HAVE_KPROBES=y | 136 | CONFIG_HAVE_KPROBES=y |
131 | CONFIG_HAVE_KRETPROBES=y | 137 | CONFIG_HAVE_KRETPROBES=y |
138 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
132 | CONFIG_PROC_PAGE_MONITOR=y | 139 | CONFIG_PROC_PAGE_MONITOR=y |
133 | CONFIG_SLABINFO=y | 140 | CONFIG_SLABINFO=y |
134 | CONFIG_RT_MUTEXES=y | 141 | CONFIG_RT_MUTEXES=y |
135 | # CONFIG_TINY_SHMEM is not set | 142 | # CONFIG_TINY_SHMEM is not set |
136 | CONFIG_BASE_SMALL=0 | 143 | CONFIG_BASE_SMALL=0 |
137 | CONFIG_MODULES=y | 144 | CONFIG_MODULES=y |
145 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
138 | CONFIG_MODULE_UNLOAD=y | 146 | CONFIG_MODULE_UNLOAD=y |
139 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 147 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
140 | CONFIG_MODVERSIONS=y | 148 | CONFIG_MODVERSIONS=y |
@@ -194,11 +202,11 @@ CONFIG_PPC_PASEMI=y | |||
194 | CONFIG_PPC_PASEMI_IOMMU=y | 202 | CONFIG_PPC_PASEMI_IOMMU=y |
195 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set | 203 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set |
196 | CONFIG_PPC_PASEMI_MDIO=y | 204 | CONFIG_PPC_PASEMI_MDIO=y |
197 | CONFIG_PPC_CELLEB=y | ||
198 | # CONFIG_PPC_PS3 is not set | 205 | # CONFIG_PPC_PS3 is not set |
199 | CONFIG_PPC_CELL=y | 206 | CONFIG_PPC_CELL=y |
200 | CONFIG_PPC_CELL_NATIVE=y | 207 | CONFIG_PPC_CELL_NATIVE=y |
201 | CONFIG_PPC_IBM_CELL_BLADE=y | 208 | CONFIG_PPC_IBM_CELL_BLADE=y |
209 | CONFIG_PPC_CELLEB=y | ||
202 | 210 | ||
203 | # | 211 | # |
204 | # Cell Broadband Engine options | 212 | # Cell Broadband Engine options |
@@ -241,6 +249,7 @@ CONFIG_CPU_FREQ_TABLE=y | |||
241 | CONFIG_CPU_FREQ_STAT=y | 249 | CONFIG_CPU_FREQ_STAT=y |
242 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set | 250 | # CONFIG_CPU_FREQ_STAT_DETAILS is not set |
243 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y | 251 | CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y |
252 | # CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set | ||
244 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set | 253 | # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set |
245 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set | 254 | # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set |
246 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set | 255 | # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set |
@@ -277,7 +286,6 @@ CONFIG_PREEMPT_NONE=y | |||
277 | CONFIG_BINFMT_ELF=y | 286 | CONFIG_BINFMT_ELF=y |
278 | CONFIG_COMPAT_BINFMT_ELF=y | 287 | CONFIG_COMPAT_BINFMT_ELF=y |
279 | CONFIG_BINFMT_MISC=m | 288 | CONFIG_BINFMT_MISC=m |
280 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
281 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 289 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
282 | CONFIG_IOMMU_VMERGE=y | 290 | CONFIG_IOMMU_VMERGE=y |
283 | CONFIG_IOMMU_HELPER=y | 291 | CONFIG_IOMMU_HELPER=y |
@@ -307,6 +315,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | |||
307 | CONFIG_SPARSEMEM_VMEMMAP=y | 315 | CONFIG_SPARSEMEM_VMEMMAP=y |
308 | CONFIG_MEMORY_HOTPLUG=y | 316 | CONFIG_MEMORY_HOTPLUG=y |
309 | CONFIG_MEMORY_HOTPLUG_SPARSE=y | 317 | CONFIG_MEMORY_HOTPLUG_SPARSE=y |
318 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
310 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 319 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
311 | CONFIG_RESOURCES_64BIT=y | 320 | CONFIG_RESOURCES_64BIT=y |
312 | CONFIG_ZONE_DMA_FLAG=1 | 321 | CONFIG_ZONE_DMA_FLAG=1 |
@@ -314,6 +323,7 @@ CONFIG_BOUNCE=y | |||
314 | CONFIG_ARCH_MEMORY_PROBE=y | 323 | CONFIG_ARCH_MEMORY_PROBE=y |
315 | CONFIG_PPC_HAS_HASH_64K=y | 324 | CONFIG_PPC_HAS_HASH_64K=y |
316 | # CONFIG_PPC_64K_PAGES is not set | 325 | # CONFIG_PPC_64K_PAGES is not set |
326 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
317 | # CONFIG_SCHED_SMT is not set | 327 | # CONFIG_SCHED_SMT is not set |
318 | CONFIG_PROC_DEVICETREE=y | 328 | CONFIG_PROC_DEVICETREE=y |
319 | # CONFIG_CMDLINE_BOOL is not set | 329 | # CONFIG_CMDLINE_BOOL is not set |
@@ -356,7 +366,10 @@ CONFIG_HOTPLUG_PCI=m | |||
356 | # CONFIG_HOTPLUG_PCI_SHPC is not set | 366 | # CONFIG_HOTPLUG_PCI_SHPC is not set |
357 | CONFIG_HOTPLUG_PCI_RPA=m | 367 | CONFIG_HOTPLUG_PCI_RPA=m |
358 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m | 368 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m |
369 | # CONFIG_HAS_RAPIDIO is not set | ||
370 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
359 | CONFIG_KERNEL_START=0xc000000000000000 | 371 | CONFIG_KERNEL_START=0xc000000000000000 |
372 | CONFIG_PHYSICAL_START=0x00000000 | ||
360 | 373 | ||
361 | # | 374 | # |
362 | # Networking | 375 | # Networking |
@@ -406,8 +419,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
406 | # CONFIG_TCP_MD5SIG is not set | 419 | # CONFIG_TCP_MD5SIG is not set |
407 | # CONFIG_IP_VS is not set | 420 | # CONFIG_IP_VS is not set |
408 | # CONFIG_IPV6 is not set | 421 | # CONFIG_IPV6 is not set |
409 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
410 | # CONFIG_INET6_TUNNEL is not set | ||
411 | # CONFIG_NETWORK_SECMARK is not set | 422 | # CONFIG_NETWORK_SECMARK is not set |
412 | CONFIG_NETFILTER=y | 423 | CONFIG_NETFILTER=y |
413 | # CONFIG_NETFILTER_DEBUG is not set | 424 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -423,6 +434,7 @@ CONFIG_NF_CONNTRACK=m | |||
423 | CONFIG_NF_CT_ACCT=y | 434 | CONFIG_NF_CT_ACCT=y |
424 | CONFIG_NF_CONNTRACK_MARK=y | 435 | CONFIG_NF_CONNTRACK_MARK=y |
425 | CONFIG_NF_CONNTRACK_EVENTS=y | 436 | CONFIG_NF_CONNTRACK_EVENTS=y |
437 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
426 | CONFIG_NF_CT_PROTO_GRE=m | 438 | CONFIG_NF_CT_PROTO_GRE=m |
427 | CONFIG_NF_CT_PROTO_SCTP=m | 439 | CONFIG_NF_CT_PROTO_SCTP=m |
428 | # CONFIG_NF_CT_PROTO_UDPLITE is not set | 440 | # CONFIG_NF_CT_PROTO_UDPLITE is not set |
@@ -501,6 +513,7 @@ CONFIG_IP_NF_TARGET_REDIRECT=m | |||
501 | CONFIG_IP_NF_TARGET_NETMAP=m | 513 | CONFIG_IP_NF_TARGET_NETMAP=m |
502 | CONFIG_NF_NAT_SNMP_BASIC=m | 514 | CONFIG_NF_NAT_SNMP_BASIC=m |
503 | CONFIG_NF_NAT_PROTO_GRE=m | 515 | CONFIG_NF_NAT_PROTO_GRE=m |
516 | CONFIG_NF_NAT_PROTO_SCTP=m | ||
504 | CONFIG_NF_NAT_FTP=m | 517 | CONFIG_NF_NAT_FTP=m |
505 | CONFIG_NF_NAT_IRC=m | 518 | CONFIG_NF_NAT_IRC=m |
506 | CONFIG_NF_NAT_TFTP=m | 519 | CONFIG_NF_NAT_TFTP=m |
@@ -571,6 +584,7 @@ CONFIG_FW_LOADER=y | |||
571 | # CONFIG_CONNECTOR is not set | 584 | # CONFIG_CONNECTOR is not set |
572 | # CONFIG_MTD is not set | 585 | # CONFIG_MTD is not set |
573 | CONFIG_OF_DEVICE=y | 586 | CONFIG_OF_DEVICE=y |
587 | CONFIG_OF_I2C=y | ||
574 | # CONFIG_PARPORT is not set | 588 | # CONFIG_PARPORT is not set |
575 | CONFIG_BLK_DEV=y | 589 | CONFIG_BLK_DEV=y |
576 | CONFIG_BLK_DEV_FD=y | 590 | CONFIG_BLK_DEV_FD=y |
@@ -618,7 +632,6 @@ CONFIG_IDE_PROC_FS=y | |||
618 | # | 632 | # |
619 | # IDE chipset support/bugfixes | 633 | # IDE chipset support/bugfixes |
620 | # | 634 | # |
621 | CONFIG_IDE_GENERIC=y | ||
622 | # CONFIG_BLK_DEV_PLATFORM is not set | 635 | # CONFIG_BLK_DEV_PLATFORM is not set |
623 | CONFIG_BLK_DEV_IDEDMA_SFF=y | 636 | CONFIG_BLK_DEV_IDEDMA_SFF=y |
624 | 637 | ||
@@ -661,7 +674,7 @@ CONFIG_BLK_DEV_IDE_PMAC=y | |||
661 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 674 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
662 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 675 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
663 | CONFIG_BLK_DEV_IDEDMA=y | 676 | CONFIG_BLK_DEV_IDEDMA=y |
664 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 677 | # CONFIG_BLK_DEV_HD_ONLY is not set |
665 | # CONFIG_BLK_DEV_HD is not set | 678 | # CONFIG_BLK_DEV_HD is not set |
666 | 679 | ||
667 | # | 680 | # |
@@ -747,64 +760,10 @@ CONFIG_SCSI_DEBUG=m | |||
747 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set | 760 | # CONFIG_SCSI_LOWLEVEL_PCMCIA is not set |
748 | CONFIG_ATA=y | 761 | CONFIG_ATA=y |
749 | CONFIG_ATA_NONSTANDARD=y | 762 | CONFIG_ATA_NONSTANDARD=y |
763 | CONFIG_SATA_PMP=y | ||
750 | # CONFIG_SATA_AHCI is not set | 764 | # CONFIG_SATA_AHCI is not set |
751 | CONFIG_SATA_SVW=y | ||
752 | # CONFIG_ATA_PIIX is not set | ||
753 | CONFIG_SATA_MV=y | ||
754 | # CONFIG_SATA_NV is not set | ||
755 | # CONFIG_PDC_ADMA is not set | ||
756 | # CONFIG_SATA_QSTOR is not set | ||
757 | # CONFIG_SATA_PROMISE is not set | ||
758 | # CONFIG_SATA_SX4 is not set | ||
759 | # CONFIG_SATA_SIL is not set | ||
760 | CONFIG_SATA_SIL24=y | 765 | CONFIG_SATA_SIL24=y |
761 | # CONFIG_SATA_SIS is not set | 766 | # CONFIG_ATA_SFF is not set |
762 | # CONFIG_SATA_ULI is not set | ||
763 | # CONFIG_SATA_VIA is not set | ||
764 | # CONFIG_SATA_VITESSE is not set | ||
765 | # CONFIG_SATA_INIC162X is not set | ||
766 | # CONFIG_PATA_ALI is not set | ||
767 | # CONFIG_PATA_AMD is not set | ||
768 | # CONFIG_PATA_ARTOP is not set | ||
769 | # CONFIG_PATA_ATIIXP is not set | ||
770 | # CONFIG_PATA_CMD640_PCI is not set | ||
771 | # CONFIG_PATA_CMD64X is not set | ||
772 | # CONFIG_PATA_CS5520 is not set | ||
773 | # CONFIG_PATA_CS5530 is not set | ||
774 | # CONFIG_PATA_CYPRESS is not set | ||
775 | # CONFIG_PATA_EFAR is not set | ||
776 | # CONFIG_ATA_GENERIC is not set | ||
777 | # CONFIG_PATA_HPT366 is not set | ||
778 | # CONFIG_PATA_HPT37X is not set | ||
779 | # CONFIG_PATA_HPT3X2N is not set | ||
780 | # CONFIG_PATA_HPT3X3 is not set | ||
781 | # CONFIG_PATA_IT821X is not set | ||
782 | # CONFIG_PATA_IT8213 is not set | ||
783 | # CONFIG_PATA_JMICRON is not set | ||
784 | # CONFIG_PATA_TRIFLEX is not set | ||
785 | # CONFIG_PATA_MARVELL is not set | ||
786 | # CONFIG_PATA_MPIIX is not set | ||
787 | # CONFIG_PATA_OLDPIIX is not set | ||
788 | # CONFIG_PATA_NETCELL is not set | ||
789 | # CONFIG_PATA_NINJA32 is not set | ||
790 | # CONFIG_PATA_NS87410 is not set | ||
791 | # CONFIG_PATA_NS87415 is not set | ||
792 | # CONFIG_PATA_OPTI is not set | ||
793 | # CONFIG_PATA_OPTIDMA is not set | ||
794 | CONFIG_PATA_PCMCIA=y | ||
795 | # CONFIG_PATA_PDC_OLD is not set | ||
796 | # CONFIG_PATA_RADISYS is not set | ||
797 | # CONFIG_PATA_RZ1000 is not set | ||
798 | # CONFIG_PATA_SC1200 is not set | ||
799 | # CONFIG_PATA_SERVERWORKS is not set | ||
800 | # CONFIG_PATA_PDC2027X is not set | ||
801 | # CONFIG_PATA_SIL680 is not set | ||
802 | # CONFIG_PATA_SIS is not set | ||
803 | # CONFIG_PATA_VIA is not set | ||
804 | CONFIG_PATA_WINBOND=y | ||
805 | CONFIG_PATA_PLATFORM=y | ||
806 | # CONFIG_PATA_OF_PLATFORM is not set | ||
807 | CONFIG_PATA_SCC=y | ||
808 | CONFIG_MD=y | 767 | CONFIG_MD=y |
809 | CONFIG_BLK_DEV_MD=y | 768 | CONFIG_BLK_DEV_MD=y |
810 | CONFIG_MD_LINEAR=y | 769 | CONFIG_MD_LINEAR=y |
@@ -866,6 +825,7 @@ CONFIG_WINDFARM=y | |||
866 | CONFIG_WINDFARM_PM81=y | 825 | CONFIG_WINDFARM_PM81=y |
867 | CONFIG_WINDFARM_PM91=y | 826 | CONFIG_WINDFARM_PM91=y |
868 | CONFIG_WINDFARM_PM112=y | 827 | CONFIG_WINDFARM_PM112=y |
828 | CONFIG_WINDFARM_PM121=y | ||
869 | # CONFIG_PMAC_RACKMETER is not set | 829 | # CONFIG_PMAC_RACKMETER is not set |
870 | CONFIG_NETDEVICES=y | 830 | CONFIG_NETDEVICES=y |
871 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | 831 | # CONFIG_NETDEVICES_MULTIQUEUE is not set |
@@ -911,7 +871,6 @@ CONFIG_IBM_NEW_EMAC_TAH=y | |||
911 | CONFIG_IBM_NEW_EMAC_EMAC4=y | 871 | CONFIG_IBM_NEW_EMAC_EMAC4=y |
912 | CONFIG_NET_PCI=y | 872 | CONFIG_NET_PCI=y |
913 | CONFIG_PCNET32=y | 873 | CONFIG_PCNET32=y |
914 | # CONFIG_PCNET32_NAPI is not set | ||
915 | # CONFIG_AMD8111_ETH is not set | 874 | # CONFIG_AMD8111_ETH is not set |
916 | # CONFIG_ADAPTEC_STARFIRE is not set | 875 | # CONFIG_ADAPTEC_STARFIRE is not set |
917 | # CONFIG_B44 is not set | 876 | # CONFIG_B44 is not set |
@@ -947,7 +906,6 @@ CONFIG_E1000=y | |||
947 | # CONFIG_SIS190 is not set | 906 | # CONFIG_SIS190 is not set |
948 | # CONFIG_SKGE is not set | 907 | # CONFIG_SKGE is not set |
949 | # CONFIG_SKY2 is not set | 908 | # CONFIG_SKY2 is not set |
950 | # CONFIG_SK98LIN is not set | ||
951 | # CONFIG_VIA_VELOCITY is not set | 909 | # CONFIG_VIA_VELOCITY is not set |
952 | CONFIG_TIGON3=y | 910 | CONFIG_TIGON3=y |
953 | # CONFIG_BNX2 is not set | 911 | # CONFIG_BNX2 is not set |
@@ -969,6 +927,7 @@ CONFIG_PASEMI_MAC=y | |||
969 | # CONFIG_MLX4_CORE is not set | 927 | # CONFIG_MLX4_CORE is not set |
970 | # CONFIG_TEHUTI is not set | 928 | # CONFIG_TEHUTI is not set |
971 | # CONFIG_BNX2X is not set | 929 | # CONFIG_BNX2X is not set |
930 | # CONFIG_SFC is not set | ||
972 | CONFIG_TR=y | 931 | CONFIG_TR=y |
973 | CONFIG_IBMOL=y | 932 | CONFIG_IBMOL=y |
974 | # CONFIG_3C359 is not set | 933 | # CONFIG_3C359 is not set |
@@ -979,6 +938,7 @@ CONFIG_IBMOL=y | |||
979 | # | 938 | # |
980 | # CONFIG_WLAN_PRE80211 is not set | 939 | # CONFIG_WLAN_PRE80211 is not set |
981 | # CONFIG_WLAN_80211 is not set | 940 | # CONFIG_WLAN_80211 is not set |
941 | # CONFIG_IWLWIFI_LEDS is not set | ||
982 | 942 | ||
983 | # | 943 | # |
984 | # USB Network Adapters | 944 | # USB Network Adapters |
@@ -1083,6 +1043,7 @@ CONFIG_VT=y | |||
1083 | CONFIG_VT_CONSOLE=y | 1043 | CONFIG_VT_CONSOLE=y |
1084 | CONFIG_HW_CONSOLE=y | 1044 | CONFIG_HW_CONSOLE=y |
1085 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 1045 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
1046 | CONFIG_DEVKMEM=y | ||
1086 | # CONFIG_SERIAL_NONSTANDARD is not set | 1047 | # CONFIG_SERIAL_NONSTANDARD is not set |
1087 | # CONFIG_NOZOMI is not set | 1048 | # CONFIG_NOZOMI is not set |
1088 | 1049 | ||
@@ -1121,8 +1082,6 @@ CONFIG_HVC_BEAT=y | |||
1121 | CONFIG_HVCS=m | 1082 | CONFIG_HVCS=m |
1122 | # CONFIG_IPMI_HANDLER is not set | 1083 | # CONFIG_IPMI_HANDLER is not set |
1123 | # CONFIG_HW_RANDOM is not set | 1084 | # CONFIG_HW_RANDOM is not set |
1124 | CONFIG_GEN_RTC=y | ||
1125 | # CONFIG_GEN_RTC_X is not set | ||
1126 | # CONFIG_R3964 is not set | 1085 | # CONFIG_R3964 is not set |
1127 | # CONFIG_APPLICOM is not set | 1086 | # CONFIG_APPLICOM is not set |
1128 | 1087 | ||
@@ -1141,13 +1100,7 @@ CONFIG_DEVPORT=y | |||
1141 | CONFIG_I2C=y | 1100 | CONFIG_I2C=y |
1142 | CONFIG_I2C_BOARDINFO=y | 1101 | CONFIG_I2C_BOARDINFO=y |
1143 | CONFIG_I2C_CHARDEV=y | 1102 | CONFIG_I2C_CHARDEV=y |
1144 | |||
1145 | # | ||
1146 | # I2C Algorithms | ||
1147 | # | ||
1148 | CONFIG_I2C_ALGOBIT=y | 1103 | CONFIG_I2C_ALGOBIT=y |
1149 | # CONFIG_I2C_ALGOPCF is not set | ||
1150 | # CONFIG_I2C_ALGOPCA is not set | ||
1151 | 1104 | ||
1152 | # | 1105 | # |
1153 | # I2C Hardware Bus support | 1106 | # I2C Hardware Bus support |
@@ -1177,6 +1130,7 @@ CONFIG_I2C_PASEMI=y | |||
1177 | # CONFIG_I2C_VIA is not set | 1130 | # CONFIG_I2C_VIA is not set |
1178 | # CONFIG_I2C_VIAPRO is not set | 1131 | # CONFIG_I2C_VIAPRO is not set |
1179 | # CONFIG_I2C_VOODOO3 is not set | 1132 | # CONFIG_I2C_VOODOO3 is not set |
1133 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
1180 | 1134 | ||
1181 | # | 1135 | # |
1182 | # Miscellaneous I2C Chip support | 1136 | # Miscellaneous I2C Chip support |
@@ -1186,19 +1140,13 @@ CONFIG_I2C_PASEMI=y | |||
1186 | # CONFIG_SENSORS_PCF8574 is not set | 1140 | # CONFIG_SENSORS_PCF8574 is not set |
1187 | # CONFIG_PCF8575 is not set | 1141 | # CONFIG_PCF8575 is not set |
1188 | # CONFIG_SENSORS_PCF8591 is not set | 1142 | # CONFIG_SENSORS_PCF8591 is not set |
1189 | # CONFIG_TPS65010 is not set | ||
1190 | # CONFIG_SENSORS_MAX6875 is not set | 1143 | # CONFIG_SENSORS_MAX6875 is not set |
1191 | # CONFIG_SENSORS_TSL2550 is not set | 1144 | # CONFIG_SENSORS_TSL2550 is not set |
1192 | # CONFIG_I2C_DEBUG_CORE is not set | 1145 | # CONFIG_I2C_DEBUG_CORE is not set |
1193 | # CONFIG_I2C_DEBUG_ALGO is not set | 1146 | # CONFIG_I2C_DEBUG_ALGO is not set |
1194 | # CONFIG_I2C_DEBUG_BUS is not set | 1147 | # CONFIG_I2C_DEBUG_BUS is not set |
1195 | # CONFIG_I2C_DEBUG_CHIP is not set | 1148 | # CONFIG_I2C_DEBUG_CHIP is not set |
1196 | |||
1197 | # | ||
1198 | # SPI support | ||
1199 | # | ||
1200 | # CONFIG_SPI is not set | 1149 | # CONFIG_SPI is not set |
1201 | # CONFIG_SPI_MASTER is not set | ||
1202 | # CONFIG_W1 is not set | 1150 | # CONFIG_W1 is not set |
1203 | # CONFIG_POWER_SUPPLY is not set | 1151 | # CONFIG_POWER_SUPPLY is not set |
1204 | # CONFIG_HWMON is not set | 1152 | # CONFIG_HWMON is not set |
@@ -1215,12 +1163,22 @@ CONFIG_SSB_POSSIBLE=y | |||
1215 | # Multifunction device drivers | 1163 | # Multifunction device drivers |
1216 | # | 1164 | # |
1217 | # CONFIG_MFD_SM501 is not set | 1165 | # CONFIG_MFD_SM501 is not set |
1166 | # CONFIG_HTC_PASIC3 is not set | ||
1218 | 1167 | ||
1219 | # | 1168 | # |
1220 | # Multimedia devices | 1169 | # Multimedia devices |
1221 | # | 1170 | # |
1171 | |||
1172 | # | ||
1173 | # Multimedia core support | ||
1174 | # | ||
1222 | # CONFIG_VIDEO_DEV is not set | 1175 | # CONFIG_VIDEO_DEV is not set |
1223 | # CONFIG_DVB_CORE is not set | 1176 | # CONFIG_DVB_CORE is not set |
1177 | # CONFIG_VIDEO_MEDIA is not set | ||
1178 | |||
1179 | # | ||
1180 | # Multimedia drivers | ||
1181 | # | ||
1224 | # CONFIG_DAB is not set | 1182 | # CONFIG_DAB is not set |
1225 | 1183 | ||
1226 | # | 1184 | # |
@@ -1240,8 +1198,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
1240 | # CONFIG_FB_SYS_FILLRECT is not set | 1198 | # CONFIG_FB_SYS_FILLRECT is not set |
1241 | # CONFIG_FB_SYS_COPYAREA is not set | 1199 | # CONFIG_FB_SYS_COPYAREA is not set |
1242 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 1200 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
1201 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
1243 | # CONFIG_FB_SYS_FOPS is not set | 1202 | # CONFIG_FB_SYS_FOPS is not set |
1244 | CONFIG_FB_DEFERRED_IO=y | ||
1245 | # CONFIG_FB_SVGALIB is not set | 1203 | # CONFIG_FB_SVGALIB is not set |
1246 | CONFIG_FB_MACMODES=y | 1204 | CONFIG_FB_MACMODES=y |
1247 | CONFIG_FB_BACKLIGHT=y | 1205 | CONFIG_FB_BACKLIGHT=y |
@@ -1363,6 +1321,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1363 | # CONFIG_SND_AU8810 is not set | 1321 | # CONFIG_SND_AU8810 is not set |
1364 | # CONFIG_SND_AU8820 is not set | 1322 | # CONFIG_SND_AU8820 is not set |
1365 | # CONFIG_SND_AU8830 is not set | 1323 | # CONFIG_SND_AU8830 is not set |
1324 | # CONFIG_SND_AW2 is not set | ||
1366 | # CONFIG_SND_AZT3328 is not set | 1325 | # CONFIG_SND_AZT3328 is not set |
1367 | # CONFIG_SND_BT87X is not set | 1326 | # CONFIG_SND_BT87X is not set |
1368 | # CONFIG_SND_CA0106 is not set | 1327 | # CONFIG_SND_CA0106 is not set |
@@ -1455,11 +1414,11 @@ CONFIG_SND_AOA_SOUNDBUS_I2S=m | |||
1455 | # CONFIG_SND_SOC is not set | 1414 | # CONFIG_SND_SOC is not set |
1456 | 1415 | ||
1457 | # | 1416 | # |
1458 | # SoC Audio support for SuperH | 1417 | # ALSA SoC audio for Freescale SOCs |
1459 | # | 1418 | # |
1460 | 1419 | ||
1461 | # | 1420 | # |
1462 | # ALSA SoC audio for Freescale SOCs | 1421 | # SoC Audio for the Texas Instruments OMAP |
1463 | # | 1422 | # |
1464 | 1423 | ||
1465 | # | 1424 | # |
@@ -1497,12 +1456,14 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1497 | # | 1456 | # |
1498 | # USB Host Controller Drivers | 1457 | # USB Host Controller Drivers |
1499 | # | 1458 | # |
1459 | # CONFIG_USB_C67X00_HCD is not set | ||
1500 | CONFIG_USB_EHCI_HCD=y | 1460 | CONFIG_USB_EHCI_HCD=y |
1501 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1461 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1502 | CONFIG_USB_EHCI_TT_NEWSCHED=y | 1462 | CONFIG_USB_EHCI_TT_NEWSCHED=y |
1503 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | 1463 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y |
1504 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1464 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1505 | # CONFIG_USB_ISP116X_HCD is not set | 1465 | # CONFIG_USB_ISP116X_HCD is not set |
1466 | # CONFIG_USB_ISP1760_HCD is not set | ||
1506 | CONFIG_USB_OHCI_HCD=y | 1467 | CONFIG_USB_OHCI_HCD=y |
1507 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1468 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
1508 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 1469 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
@@ -1538,6 +1499,7 @@ CONFIG_USB_STORAGE=m | |||
1538 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1499 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1539 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1500 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
1540 | # CONFIG_USB_STORAGE_KARMA is not set | 1501 | # CONFIG_USB_STORAGE_KARMA is not set |
1502 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1541 | # CONFIG_USB_LIBUSUAL is not set | 1503 | # CONFIG_USB_LIBUSUAL is not set |
1542 | 1504 | ||
1543 | # | 1505 | # |
@@ -1579,6 +1541,7 @@ CONFIG_USB_APPLEDISPLAY=m | |||
1579 | # CONFIG_MMC is not set | 1541 | # CONFIG_MMC is not set |
1580 | # CONFIG_MEMSTICK is not set | 1542 | # CONFIG_MEMSTICK is not set |
1581 | # CONFIG_NEW_LEDS is not set | 1543 | # CONFIG_NEW_LEDS is not set |
1544 | # CONFIG_ACCESSIBILITY is not set | ||
1582 | CONFIG_INFINIBAND=m | 1545 | CONFIG_INFINIBAND=m |
1583 | # CONFIG_INFINIBAND_USER_MAD is not set | 1546 | # CONFIG_INFINIBAND_USER_MAD is not set |
1584 | # CONFIG_INFINIBAND_USER_ACCESS is not set | 1547 | # CONFIG_INFINIBAND_USER_ACCESS is not set |
@@ -1607,10 +1570,6 @@ CONFIG_EDAC_PASEMI=y | |||
1607 | # CONFIG_EDAC_CELL is not set | 1570 | # CONFIG_EDAC_CELL is not set |
1608 | CONFIG_RTC_LIB=y | 1571 | CONFIG_RTC_LIB=y |
1609 | CONFIG_RTC_CLASS=y | 1572 | CONFIG_RTC_CLASS=y |
1610 | |||
1611 | # | ||
1612 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1613 | # | ||
1614 | CONFIG_RTC_HCTOSYS=y | 1573 | CONFIG_RTC_HCTOSYS=y |
1615 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1574 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
1616 | # CONFIG_RTC_DEBUG is not set | 1575 | # CONFIG_RTC_DEBUG is not set |
@@ -1659,10 +1618,6 @@ CONFIG_RTC_DRV_DS1307=y | |||
1659 | # on-CPU RTC drivers | 1618 | # on-CPU RTC drivers |
1660 | # | 1619 | # |
1661 | # CONFIG_DMADEVICES is not set | 1620 | # CONFIG_DMADEVICES is not set |
1662 | |||
1663 | # | ||
1664 | # Userspace I/O | ||
1665 | # | ||
1666 | # CONFIG_UIO is not set | 1621 | # CONFIG_UIO is not set |
1667 | 1622 | ||
1668 | # | 1623 | # |
@@ -1696,9 +1651,9 @@ CONFIG_JFS_SECURITY=y | |||
1696 | CONFIG_FS_POSIX_ACL=y | 1651 | CONFIG_FS_POSIX_ACL=y |
1697 | CONFIG_XFS_FS=m | 1652 | CONFIG_XFS_FS=m |
1698 | # CONFIG_XFS_QUOTA is not set | 1653 | # CONFIG_XFS_QUOTA is not set |
1699 | CONFIG_XFS_SECURITY=y | ||
1700 | CONFIG_XFS_POSIX_ACL=y | 1654 | CONFIG_XFS_POSIX_ACL=y |
1701 | # CONFIG_XFS_RT is not set | 1655 | # CONFIG_XFS_RT is not set |
1656 | # CONFIG_XFS_DEBUG is not set | ||
1702 | # CONFIG_GFS2_FS is not set | 1657 | # CONFIG_GFS2_FS is not set |
1703 | # CONFIG_OCFS2_FS is not set | 1658 | # CONFIG_OCFS2_FS is not set |
1704 | CONFIG_DNOTIFY=y | 1659 | CONFIG_DNOTIFY=y |
@@ -1764,13 +1719,11 @@ CONFIG_NFS_FS=y | |||
1764 | CONFIG_NFS_V3=y | 1719 | CONFIG_NFS_V3=y |
1765 | CONFIG_NFS_V3_ACL=y | 1720 | CONFIG_NFS_V3_ACL=y |
1766 | CONFIG_NFS_V4=y | 1721 | CONFIG_NFS_V4=y |
1767 | # CONFIG_NFS_DIRECTIO is not set | ||
1768 | CONFIG_NFSD=m | 1722 | CONFIG_NFSD=m |
1769 | CONFIG_NFSD_V2_ACL=y | 1723 | CONFIG_NFSD_V2_ACL=y |
1770 | CONFIG_NFSD_V3=y | 1724 | CONFIG_NFSD_V3=y |
1771 | CONFIG_NFSD_V3_ACL=y | 1725 | CONFIG_NFSD_V3_ACL=y |
1772 | CONFIG_NFSD_V4=y | 1726 | CONFIG_NFSD_V4=y |
1773 | CONFIG_NFSD_TCP=y | ||
1774 | CONFIG_ROOT_NFS=y | 1727 | CONFIG_ROOT_NFS=y |
1775 | CONFIG_LOCKD=y | 1728 | CONFIG_LOCKD=y |
1776 | CONFIG_LOCKD_V4=y | 1729 | CONFIG_LOCKD_V4=y |
@@ -1862,9 +1815,10 @@ CONFIG_NLS_UTF8=m | |||
1862 | # Library routines | 1815 | # Library routines |
1863 | # | 1816 | # |
1864 | CONFIG_BITREVERSE=y | 1817 | CONFIG_BITREVERSE=y |
1818 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1865 | CONFIG_CRC_CCITT=m | 1819 | CONFIG_CRC_CCITT=m |
1866 | # CONFIG_CRC16 is not set | 1820 | # CONFIG_CRC16 is not set |
1867 | # CONFIG_CRC_ITU_T is not set | 1821 | CONFIG_CRC_ITU_T=m |
1868 | CONFIG_CRC32=y | 1822 | CONFIG_CRC32=y |
1869 | # CONFIG_CRC7 is not set | 1823 | # CONFIG_CRC7 is not set |
1870 | CONFIG_LIBCRC32C=m | 1824 | CONFIG_LIBCRC32C=m |
@@ -1888,6 +1842,7 @@ CONFIG_HAVE_LMB=y | |||
1888 | # CONFIG_PRINTK_TIME is not set | 1842 | # CONFIG_PRINTK_TIME is not set |
1889 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1843 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1890 | CONFIG_ENABLE_MUST_CHECK=y | 1844 | CONFIG_ENABLE_MUST_CHECK=y |
1845 | CONFIG_FRAME_WARN=2048 | ||
1891 | CONFIG_MAGIC_SYSRQ=y | 1846 | CONFIG_MAGIC_SYSRQ=y |
1892 | # CONFIG_UNUSED_SYMBOLS is not set | 1847 | # CONFIG_UNUSED_SYMBOLS is not set |
1893 | CONFIG_DEBUG_FS=y | 1848 | CONFIG_DEBUG_FS=y |
@@ -1898,18 +1853,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1898 | CONFIG_SCHED_DEBUG=y | 1853 | CONFIG_SCHED_DEBUG=y |
1899 | # CONFIG_SCHEDSTATS is not set | 1854 | # CONFIG_SCHEDSTATS is not set |
1900 | # CONFIG_TIMER_STATS is not set | 1855 | # CONFIG_TIMER_STATS is not set |
1856 | # CONFIG_DEBUG_OBJECTS is not set | ||
1901 | # CONFIG_SLUB_DEBUG_ON is not set | 1857 | # CONFIG_SLUB_DEBUG_ON is not set |
1902 | # CONFIG_SLUB_STATS is not set | 1858 | # CONFIG_SLUB_STATS is not set |
1903 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1859 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1904 | # CONFIG_RT_MUTEX_TESTER is not set | 1860 | # CONFIG_RT_MUTEX_TESTER is not set |
1905 | # CONFIG_DEBUG_SPINLOCK is not set | 1861 | # CONFIG_DEBUG_SPINLOCK is not set |
1906 | CONFIG_DEBUG_MUTEXES=y | 1862 | CONFIG_DEBUG_MUTEXES=y |
1863 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1864 | # CONFIG_PROVE_LOCKING is not set | ||
1865 | # CONFIG_LOCK_STAT is not set | ||
1907 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1866 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1908 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1867 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1909 | # CONFIG_DEBUG_KOBJECT is not set | 1868 | # CONFIG_DEBUG_KOBJECT is not set |
1910 | CONFIG_DEBUG_BUGVERBOSE=y | 1869 | CONFIG_DEBUG_BUGVERBOSE=y |
1911 | # CONFIG_DEBUG_INFO is not set | 1870 | # CONFIG_DEBUG_INFO is not set |
1912 | # CONFIG_DEBUG_VM is not set | 1871 | # CONFIG_DEBUG_VM is not set |
1872 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1913 | # CONFIG_DEBUG_LIST is not set | 1873 | # CONFIG_DEBUG_LIST is not set |
1914 | # CONFIG_DEBUG_SG is not set | 1874 | # CONFIG_DEBUG_SG is not set |
1915 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1875 | # CONFIG_BOOT_PRINTK_DELAY is not set |
@@ -1941,53 +1901,83 @@ CONFIG_ASYNC_CORE=y | |||
1941 | CONFIG_ASYNC_MEMCPY=y | 1901 | CONFIG_ASYNC_MEMCPY=y |
1942 | CONFIG_ASYNC_XOR=y | 1902 | CONFIG_ASYNC_XOR=y |
1943 | CONFIG_CRYPTO=y | 1903 | CONFIG_CRYPTO=y |
1904 | |||
1905 | # | ||
1906 | # Crypto core or helper | ||
1907 | # | ||
1944 | CONFIG_CRYPTO_ALGAPI=y | 1908 | CONFIG_CRYPTO_ALGAPI=y |
1945 | CONFIG_CRYPTO_AEAD=m | 1909 | CONFIG_CRYPTO_AEAD=m |
1946 | CONFIG_CRYPTO_BLKCIPHER=y | 1910 | CONFIG_CRYPTO_BLKCIPHER=y |
1947 | CONFIG_CRYPTO_SEQIV=m | ||
1948 | CONFIG_CRYPTO_HASH=y | 1911 | CONFIG_CRYPTO_HASH=y |
1949 | CONFIG_CRYPTO_MANAGER=y | 1912 | CONFIG_CRYPTO_MANAGER=y |
1913 | CONFIG_CRYPTO_GF128MUL=m | ||
1914 | CONFIG_CRYPTO_NULL=m | ||
1915 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1916 | CONFIG_CRYPTO_AUTHENC=m | ||
1917 | CONFIG_CRYPTO_TEST=m | ||
1918 | |||
1919 | # | ||
1920 | # Authenticated Encryption with Associated Data | ||
1921 | # | ||
1922 | CONFIG_CRYPTO_CCM=m | ||
1923 | CONFIG_CRYPTO_GCM=m | ||
1924 | CONFIG_CRYPTO_SEQIV=m | ||
1925 | |||
1926 | # | ||
1927 | # Block modes | ||
1928 | # | ||
1929 | CONFIG_CRYPTO_CBC=y | ||
1930 | CONFIG_CRYPTO_CTR=m | ||
1931 | # CONFIG_CRYPTO_CTS is not set | ||
1932 | CONFIG_CRYPTO_ECB=m | ||
1933 | # CONFIG_CRYPTO_LRW is not set | ||
1934 | CONFIG_CRYPTO_PCBC=m | ||
1935 | # CONFIG_CRYPTO_XTS is not set | ||
1936 | |||
1937 | # | ||
1938 | # Hash modes | ||
1939 | # | ||
1950 | CONFIG_CRYPTO_HMAC=y | 1940 | CONFIG_CRYPTO_HMAC=y |
1951 | # CONFIG_CRYPTO_XCBC is not set | 1941 | # CONFIG_CRYPTO_XCBC is not set |
1952 | CONFIG_CRYPTO_NULL=m | 1942 | |
1943 | # | ||
1944 | # Digest | ||
1945 | # | ||
1946 | CONFIG_CRYPTO_CRC32C=m | ||
1953 | CONFIG_CRYPTO_MD4=m | 1947 | CONFIG_CRYPTO_MD4=m |
1954 | CONFIG_CRYPTO_MD5=y | 1948 | CONFIG_CRYPTO_MD5=y |
1949 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1955 | CONFIG_CRYPTO_SHA1=m | 1950 | CONFIG_CRYPTO_SHA1=m |
1956 | CONFIG_CRYPTO_SHA256=m | 1951 | CONFIG_CRYPTO_SHA256=m |
1957 | CONFIG_CRYPTO_SHA512=m | 1952 | CONFIG_CRYPTO_SHA512=m |
1958 | CONFIG_CRYPTO_WP512=m | ||
1959 | CONFIG_CRYPTO_TGR192=m | 1953 | CONFIG_CRYPTO_TGR192=m |
1960 | CONFIG_CRYPTO_GF128MUL=m | 1954 | CONFIG_CRYPTO_WP512=m |
1961 | CONFIG_CRYPTO_ECB=m | 1955 | |
1962 | CONFIG_CRYPTO_CBC=y | 1956 | # |
1963 | CONFIG_CRYPTO_PCBC=m | 1957 | # Ciphers |
1964 | # CONFIG_CRYPTO_LRW is not set | 1958 | # |
1965 | # CONFIG_CRYPTO_XTS is not set | ||
1966 | CONFIG_CRYPTO_CTR=m | ||
1967 | CONFIG_CRYPTO_GCM=m | ||
1968 | CONFIG_CRYPTO_CCM=m | ||
1969 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1970 | CONFIG_CRYPTO_DES=y | ||
1971 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1972 | CONFIG_CRYPTO_BLOWFISH=m | ||
1973 | CONFIG_CRYPTO_TWOFISH=m | ||
1974 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1975 | CONFIG_CRYPTO_SERPENT=m | ||
1976 | CONFIG_CRYPTO_AES=m | 1959 | CONFIG_CRYPTO_AES=m |
1960 | CONFIG_CRYPTO_ANUBIS=m | ||
1961 | CONFIG_CRYPTO_ARC4=m | ||
1962 | CONFIG_CRYPTO_BLOWFISH=m | ||
1963 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1977 | CONFIG_CRYPTO_CAST5=m | 1964 | CONFIG_CRYPTO_CAST5=m |
1978 | CONFIG_CRYPTO_CAST6=m | 1965 | CONFIG_CRYPTO_CAST6=m |
1979 | CONFIG_CRYPTO_TEA=m | 1966 | CONFIG_CRYPTO_DES=y |
1980 | CONFIG_CRYPTO_ARC4=m | 1967 | # CONFIG_CRYPTO_FCRYPT is not set |
1981 | CONFIG_CRYPTO_KHAZAD=m | 1968 | CONFIG_CRYPTO_KHAZAD=m |
1982 | CONFIG_CRYPTO_ANUBIS=m | ||
1983 | # CONFIG_CRYPTO_SEED is not set | ||
1984 | CONFIG_CRYPTO_SALSA20=m | 1969 | CONFIG_CRYPTO_SALSA20=m |
1970 | # CONFIG_CRYPTO_SEED is not set | ||
1971 | CONFIG_CRYPTO_SERPENT=m | ||
1972 | CONFIG_CRYPTO_TEA=m | ||
1973 | CONFIG_CRYPTO_TWOFISH=m | ||
1974 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1975 | |||
1976 | # | ||
1977 | # Compression | ||
1978 | # | ||
1985 | CONFIG_CRYPTO_DEFLATE=m | 1979 | CONFIG_CRYPTO_DEFLATE=m |
1986 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1987 | CONFIG_CRYPTO_CRC32C=m | ||
1988 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1989 | CONFIG_CRYPTO_TEST=m | ||
1990 | CONFIG_CRYPTO_AUTHENC=m | ||
1991 | CONFIG_CRYPTO_LZO=m | 1980 | CONFIG_CRYPTO_LZO=m |
1992 | # CONFIG_CRYPTO_HW is not set | 1981 | # CONFIG_CRYPTO_HW is not set |
1993 | # CONFIG_PPC_CLOCK is not set | 1982 | # CONFIG_PPC_CLOCK is not set |
1983 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 3e2593c60b12..adaa05fb0478 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25-rc6 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Thu Mar 27 13:56:28 2008 | 4 | # Tue May 20 20:03:28 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -30,6 +30,9 @@ CONFIG_GENERIC_CLOCKEVENTS=y | |||
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | 31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y |
32 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
33 | CONFIG_STACKTRACE_SUPPORT=y | ||
34 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
35 | CONFIG_LOCKDEP_SUPPORT=y | ||
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 36 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | 37 | CONFIG_ARCH_HAS_ILOG2_U32=y |
35 | CONFIG_ARCH_HAS_ILOG2_U64=y | 38 | CONFIG_ARCH_HAS_ILOG2_U64=y |
@@ -81,6 +84,7 @@ CONFIG_LOG_BUF_SHIFT=17 | |||
81 | CONFIG_CGROUPS=y | 84 | CONFIG_CGROUPS=y |
82 | # CONFIG_CGROUP_DEBUG is not set | 85 | # CONFIG_CGROUP_DEBUG is not set |
83 | CONFIG_CGROUP_NS=y | 86 | CONFIG_CGROUP_NS=y |
87 | CONFIG_CGROUP_DEVICE=y | ||
84 | CONFIG_CPUSETS=y | 88 | CONFIG_CPUSETS=y |
85 | # CONFIG_GROUP_SCHED is not set | 89 | # CONFIG_GROUP_SCHED is not set |
86 | CONFIG_CGROUP_CPUACCT=y | 90 | CONFIG_CGROUP_CPUACCT=y |
@@ -100,6 +104,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y | |||
100 | CONFIG_SYSCTL=y | 104 | CONFIG_SYSCTL=y |
101 | # CONFIG_EMBEDDED is not set | 105 | # CONFIG_EMBEDDED is not set |
102 | CONFIG_SYSCTL_SYSCALL=y | 106 | CONFIG_SYSCTL_SYSCALL=y |
107 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
103 | CONFIG_KALLSYMS=y | 108 | CONFIG_KALLSYMS=y |
104 | CONFIG_KALLSYMS_ALL=y | 109 | CONFIG_KALLSYMS_ALL=y |
105 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 110 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -107,6 +112,7 @@ CONFIG_HOTPLUG=y | |||
107 | CONFIG_PRINTK=y | 112 | CONFIG_PRINTK=y |
108 | CONFIG_BUG=y | 113 | CONFIG_BUG=y |
109 | CONFIG_ELF_CORE=y | 114 | CONFIG_ELF_CORE=y |
115 | CONFIG_PCSPKR_PLATFORM=y | ||
110 | # CONFIG_COMPAT_BRK is not set | 116 | # CONFIG_COMPAT_BRK is not set |
111 | CONFIG_BASE_FULL=y | 117 | CONFIG_BASE_FULL=y |
112 | CONFIG_FUTEX=y | 118 | CONFIG_FUTEX=y |
@@ -129,12 +135,14 @@ CONFIG_KPROBES=y | |||
129 | CONFIG_KRETPROBES=y | 135 | CONFIG_KRETPROBES=y |
130 | CONFIG_HAVE_KPROBES=y | 136 | CONFIG_HAVE_KPROBES=y |
131 | CONFIG_HAVE_KRETPROBES=y | 137 | CONFIG_HAVE_KRETPROBES=y |
138 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
132 | CONFIG_PROC_PAGE_MONITOR=y | 139 | CONFIG_PROC_PAGE_MONITOR=y |
133 | CONFIG_SLABINFO=y | 140 | CONFIG_SLABINFO=y |
134 | CONFIG_RT_MUTEXES=y | 141 | CONFIG_RT_MUTEXES=y |
135 | # CONFIG_TINY_SHMEM is not set | 142 | # CONFIG_TINY_SHMEM is not set |
136 | CONFIG_BASE_SMALL=0 | 143 | CONFIG_BASE_SMALL=0 |
137 | CONFIG_MODULES=y | 144 | CONFIG_MODULES=y |
145 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
138 | CONFIG_MODULE_UNLOAD=y | 146 | CONFIG_MODULE_UNLOAD=y |
139 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 147 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
140 | CONFIG_MODVERSIONS=y | 148 | CONFIG_MODVERSIONS=y |
@@ -178,11 +186,11 @@ CONFIG_LPARCFG=y | |||
178 | # CONFIG_PPC_PMAC is not set | 186 | # CONFIG_PPC_PMAC is not set |
179 | # CONFIG_PPC_MAPLE is not set | 187 | # CONFIG_PPC_MAPLE is not set |
180 | # CONFIG_PPC_PASEMI is not set | 188 | # CONFIG_PPC_PASEMI is not set |
181 | # CONFIG_PPC_CELLEB is not set | ||
182 | # CONFIG_PPC_PS3 is not set | 189 | # CONFIG_PPC_PS3 is not set |
183 | # CONFIG_PPC_CELL is not set | 190 | # CONFIG_PPC_CELL is not set |
184 | # CONFIG_PPC_CELL_NATIVE is not set | 191 | # CONFIG_PPC_CELL_NATIVE is not set |
185 | # CONFIG_PPC_IBM_CELL_BLADE is not set | 192 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
193 | # CONFIG_PPC_CELLEB is not set | ||
186 | # CONFIG_PQ2ADS is not set | 194 | # CONFIG_PQ2ADS is not set |
187 | CONFIG_PPC_NATIVE=y | 195 | CONFIG_PPC_NATIVE=y |
188 | # CONFIG_UDBG_RTAS_CONSOLE is not set | 196 | # CONFIG_UDBG_RTAS_CONSOLE is not set |
@@ -225,7 +233,6 @@ CONFIG_PREEMPT_NONE=y | |||
225 | CONFIG_BINFMT_ELF=y | 233 | CONFIG_BINFMT_ELF=y |
226 | CONFIG_COMPAT_BINFMT_ELF=y | 234 | CONFIG_COMPAT_BINFMT_ELF=y |
227 | CONFIG_BINFMT_MISC=m | 235 | CONFIG_BINFMT_MISC=m |
228 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
229 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 236 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
230 | CONFIG_IOMMU_VMERGE=y | 237 | CONFIG_IOMMU_VMERGE=y |
231 | CONFIG_IOMMU_HELPER=y | 238 | CONFIG_IOMMU_HELPER=y |
@@ -255,6 +262,7 @@ CONFIG_SPARSEMEM_EXTREME=y | |||
255 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 262 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
256 | CONFIG_SPARSEMEM_VMEMMAP=y | 263 | CONFIG_SPARSEMEM_VMEMMAP=y |
257 | # CONFIG_MEMORY_HOTPLUG is not set | 264 | # CONFIG_MEMORY_HOTPLUG is not set |
265 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
258 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 266 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
259 | CONFIG_MIGRATION=y | 267 | CONFIG_MIGRATION=y |
260 | CONFIG_RESOURCES_64BIT=y | 268 | CONFIG_RESOURCES_64BIT=y |
@@ -263,6 +271,7 @@ CONFIG_BOUNCE=y | |||
263 | CONFIG_NODES_SPAN_OTHER_NODES=y | 271 | CONFIG_NODES_SPAN_OTHER_NODES=y |
264 | # CONFIG_PPC_HAS_HASH_64K is not set | 272 | # CONFIG_PPC_HAS_HASH_64K is not set |
265 | # CONFIG_PPC_64K_PAGES is not set | 273 | # CONFIG_PPC_64K_PAGES is not set |
274 | CONFIG_FORCE_MAX_ZONEORDER=13 | ||
266 | CONFIG_SCHED_SMT=y | 275 | CONFIG_SCHED_SMT=y |
267 | CONFIG_PROC_DEVICETREE=y | 276 | CONFIG_PROC_DEVICETREE=y |
268 | # CONFIG_CMDLINE_BOOL is not set | 277 | # CONFIG_CMDLINE_BOOL is not set |
@@ -291,7 +300,10 @@ CONFIG_HOTPLUG_PCI=m | |||
291 | # CONFIG_HOTPLUG_PCI_SHPC is not set | 300 | # CONFIG_HOTPLUG_PCI_SHPC is not set |
292 | CONFIG_HOTPLUG_PCI_RPA=m | 301 | CONFIG_HOTPLUG_PCI_RPA=m |
293 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m | 302 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m |
303 | # CONFIG_HAS_RAPIDIO is not set | ||
304 | CONFIG_PAGE_OFFSET=0xc000000000000000 | ||
294 | CONFIG_KERNEL_START=0xc000000000000000 | 305 | CONFIG_KERNEL_START=0xc000000000000000 |
306 | CONFIG_PHYSICAL_START=0x00000000 | ||
295 | 307 | ||
296 | # | 308 | # |
297 | # Networking | 309 | # Networking |
@@ -338,8 +350,6 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
338 | # CONFIG_TCP_MD5SIG is not set | 350 | # CONFIG_TCP_MD5SIG is not set |
339 | # CONFIG_IP_VS is not set | 351 | # CONFIG_IP_VS is not set |
340 | # CONFIG_IPV6 is not set | 352 | # CONFIG_IPV6 is not set |
341 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
342 | # CONFIG_INET6_TUNNEL is not set | ||
343 | # CONFIG_NETWORK_SECMARK is not set | 353 | # CONFIG_NETWORK_SECMARK is not set |
344 | CONFIG_NETFILTER=y | 354 | CONFIG_NETFILTER=y |
345 | # CONFIG_NETFILTER_DEBUG is not set | 355 | # CONFIG_NETFILTER_DEBUG is not set |
@@ -355,6 +365,7 @@ CONFIG_NF_CONNTRACK=m | |||
355 | CONFIG_NF_CT_ACCT=y | 365 | CONFIG_NF_CT_ACCT=y |
356 | CONFIG_NF_CONNTRACK_MARK=y | 366 | CONFIG_NF_CONNTRACK_MARK=y |
357 | CONFIG_NF_CONNTRACK_EVENTS=y | 367 | CONFIG_NF_CONNTRACK_EVENTS=y |
368 | # CONFIG_NF_CT_PROTO_DCCP is not set | ||
358 | # CONFIG_NF_CT_PROTO_SCTP is not set | 369 | # CONFIG_NF_CT_PROTO_SCTP is not set |
359 | CONFIG_NF_CT_PROTO_UDPLITE=m | 370 | CONFIG_NF_CT_PROTO_UDPLITE=m |
360 | # CONFIG_NF_CONNTRACK_AMANDA is not set | 371 | # CONFIG_NF_CONNTRACK_AMANDA is not set |
@@ -426,6 +437,7 @@ CONFIG_IP_NF_TARGET_MASQUERADE=m | |||
426 | CONFIG_IP_NF_TARGET_REDIRECT=m | 437 | CONFIG_IP_NF_TARGET_REDIRECT=m |
427 | CONFIG_IP_NF_TARGET_NETMAP=m | 438 | CONFIG_IP_NF_TARGET_NETMAP=m |
428 | CONFIG_NF_NAT_SNMP_BASIC=m | 439 | CONFIG_NF_NAT_SNMP_BASIC=m |
440 | CONFIG_NF_NAT_PROTO_UDPLITE=m | ||
429 | CONFIG_NF_NAT_FTP=m | 441 | CONFIG_NF_NAT_FTP=m |
430 | CONFIG_NF_NAT_IRC=m | 442 | CONFIG_NF_NAT_IRC=m |
431 | CONFIG_NF_NAT_TFTP=m | 443 | CONFIG_NF_NAT_TFTP=m |
@@ -492,6 +504,7 @@ CONFIG_FW_LOADER=y | |||
492 | # CONFIG_CONNECTOR is not set | 504 | # CONFIG_CONNECTOR is not set |
493 | # CONFIG_MTD is not set | 505 | # CONFIG_MTD is not set |
494 | CONFIG_OF_DEVICE=y | 506 | CONFIG_OF_DEVICE=y |
507 | CONFIG_OF_I2C=y | ||
495 | CONFIG_PARPORT=m | 508 | CONFIG_PARPORT=m |
496 | CONFIG_PARPORT_PC=m | 509 | CONFIG_PARPORT_PC=m |
497 | # CONFIG_PARPORT_SERIAL is not set | 510 | # CONFIG_PARPORT_SERIAL is not set |
@@ -545,7 +558,6 @@ CONFIG_IDE_PROC_FS=y | |||
545 | # | 558 | # |
546 | # IDE chipset support/bugfixes | 559 | # IDE chipset support/bugfixes |
547 | # | 560 | # |
548 | CONFIG_IDE_GENERIC=y | ||
549 | # CONFIG_BLK_DEV_PLATFORM is not set | 561 | # CONFIG_BLK_DEV_PLATFORM is not set |
550 | CONFIG_BLK_DEV_IDEDMA_SFF=y | 562 | CONFIG_BLK_DEV_IDEDMA_SFF=y |
551 | 563 | ||
@@ -584,7 +596,7 @@ CONFIG_BLK_DEV_AMD74XX=y | |||
584 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 596 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
585 | # CONFIG_BLK_DEV_TC86C001 is not set | 597 | # CONFIG_BLK_DEV_TC86C001 is not set |
586 | CONFIG_BLK_DEV_IDEDMA=y | 598 | CONFIG_BLK_DEV_IDEDMA=y |
587 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 599 | # CONFIG_BLK_DEV_HD_ONLY is not set |
588 | # CONFIG_BLK_DEV_HD is not set | 600 | # CONFIG_BLK_DEV_HD is not set |
589 | 601 | ||
590 | # | 602 | # |
@@ -671,61 +683,10 @@ CONFIG_SCSI_LPFC=m | |||
671 | # CONFIG_SCSI_SRP is not set | 683 | # CONFIG_SCSI_SRP is not set |
672 | CONFIG_ATA=y | 684 | CONFIG_ATA=y |
673 | # CONFIG_ATA_NONSTANDARD is not set | 685 | # CONFIG_ATA_NONSTANDARD is not set |
686 | CONFIG_SATA_PMP=y | ||
674 | # CONFIG_SATA_AHCI is not set | 687 | # CONFIG_SATA_AHCI is not set |
675 | # CONFIG_SATA_SVW is not set | ||
676 | # CONFIG_ATA_PIIX is not set | ||
677 | # CONFIG_SATA_MV is not set | ||
678 | # CONFIG_SATA_NV is not set | ||
679 | # CONFIG_PDC_ADMA is not set | ||
680 | # CONFIG_SATA_QSTOR is not set | ||
681 | # CONFIG_SATA_PROMISE is not set | ||
682 | # CONFIG_SATA_SX4 is not set | ||
683 | # CONFIG_SATA_SIL is not set | ||
684 | # CONFIG_SATA_SIL24 is not set | 688 | # CONFIG_SATA_SIL24 is not set |
685 | # CONFIG_SATA_SIS is not set | 689 | # CONFIG_ATA_SFF is not set |
686 | # CONFIG_SATA_ULI is not set | ||
687 | # CONFIG_SATA_VIA is not set | ||
688 | # CONFIG_SATA_VITESSE is not set | ||
689 | # CONFIG_SATA_INIC162X is not set | ||
690 | # CONFIG_PATA_ALI is not set | ||
691 | # CONFIG_PATA_AMD is not set | ||
692 | # CONFIG_PATA_ARTOP is not set | ||
693 | # CONFIG_PATA_ATIIXP is not set | ||
694 | # CONFIG_PATA_CMD640_PCI is not set | ||
695 | # CONFIG_PATA_CMD64X is not set | ||
696 | # CONFIG_PATA_CS5520 is not set | ||
697 | # CONFIG_PATA_CS5530 is not set | ||
698 | # CONFIG_PATA_CYPRESS is not set | ||
699 | # CONFIG_PATA_EFAR is not set | ||
700 | # CONFIG_ATA_GENERIC is not set | ||
701 | # CONFIG_PATA_HPT366 is not set | ||
702 | # CONFIG_PATA_HPT37X is not set | ||
703 | # CONFIG_PATA_HPT3X2N is not set | ||
704 | # CONFIG_PATA_HPT3X3 is not set | ||
705 | # CONFIG_PATA_IT821X is not set | ||
706 | # CONFIG_PATA_IT8213 is not set | ||
707 | # CONFIG_PATA_JMICRON is not set | ||
708 | # CONFIG_PATA_TRIFLEX is not set | ||
709 | # CONFIG_PATA_MARVELL is not set | ||
710 | # CONFIG_PATA_MPIIX is not set | ||
711 | # CONFIG_PATA_OLDPIIX is not set | ||
712 | # CONFIG_PATA_NETCELL is not set | ||
713 | # CONFIG_PATA_NINJA32 is not set | ||
714 | # CONFIG_PATA_NS87410 is not set | ||
715 | # CONFIG_PATA_NS87415 is not set | ||
716 | # CONFIG_PATA_OPTI is not set | ||
717 | # CONFIG_PATA_OPTIDMA is not set | ||
718 | # CONFIG_PATA_PDC_OLD is not set | ||
719 | # CONFIG_PATA_RADISYS is not set | ||
720 | # CONFIG_PATA_RZ1000 is not set | ||
721 | # CONFIG_PATA_SC1200 is not set | ||
722 | # CONFIG_PATA_SERVERWORKS is not set | ||
723 | # CONFIG_PATA_PDC2027X is not set | ||
724 | # CONFIG_PATA_SIL680 is not set | ||
725 | # CONFIG_PATA_SIS is not set | ||
726 | # CONFIG_PATA_VIA is not set | ||
727 | CONFIG_PATA_WINBOND=y | ||
728 | # CONFIG_PATA_PLATFORM is not set | ||
729 | CONFIG_MD=y | 690 | CONFIG_MD=y |
730 | CONFIG_BLK_DEV_MD=y | 691 | CONFIG_BLK_DEV_MD=y |
731 | CONFIG_MD_LINEAR=y | 692 | CONFIG_MD_LINEAR=y |
@@ -783,7 +744,6 @@ CONFIG_IBMVETH=y | |||
783 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 744 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
784 | CONFIG_NET_PCI=y | 745 | CONFIG_NET_PCI=y |
785 | CONFIG_PCNET32=y | 746 | CONFIG_PCNET32=y |
786 | # CONFIG_PCNET32_NAPI is not set | ||
787 | # CONFIG_AMD8111_ETH is not set | 747 | # CONFIG_AMD8111_ETH is not set |
788 | # CONFIG_ADAPTEC_STARFIRE is not set | 748 | # CONFIG_ADAPTEC_STARFIRE is not set |
789 | # CONFIG_B44 is not set | 749 | # CONFIG_B44 is not set |
@@ -820,7 +780,6 @@ CONFIG_E1000=y | |||
820 | # CONFIG_SIS190 is not set | 780 | # CONFIG_SIS190 is not set |
821 | # CONFIG_SKGE is not set | 781 | # CONFIG_SKGE is not set |
822 | # CONFIG_SKY2 is not set | 782 | # CONFIG_SKY2 is not set |
823 | # CONFIG_SK98LIN is not set | ||
824 | # CONFIG_VIA_VELOCITY is not set | 783 | # CONFIG_VIA_VELOCITY is not set |
825 | CONFIG_TIGON3=y | 784 | CONFIG_TIGON3=y |
826 | # CONFIG_BNX2 is not set | 785 | # CONFIG_BNX2 is not set |
@@ -829,7 +788,6 @@ CONFIG_TIGON3=y | |||
829 | CONFIG_NETDEV_10000=y | 788 | CONFIG_NETDEV_10000=y |
830 | # CONFIG_CHELSIO_T1 is not set | 789 | # CONFIG_CHELSIO_T1 is not set |
831 | # CONFIG_CHELSIO_T3 is not set | 790 | # CONFIG_CHELSIO_T3 is not set |
832 | CONFIG_EHEA=m | ||
833 | # CONFIG_IXGBE is not set | 791 | # CONFIG_IXGBE is not set |
834 | CONFIG_IXGB=m | 792 | CONFIG_IXGB=m |
835 | # CONFIG_IXGB_NAPI is not set | 793 | # CONFIG_IXGB_NAPI is not set |
@@ -838,10 +796,10 @@ CONFIG_S2IO=m | |||
838 | # CONFIG_MYRI10GE is not set | 796 | # CONFIG_MYRI10GE is not set |
839 | # CONFIG_NETXEN_NIC is not set | 797 | # CONFIG_NETXEN_NIC is not set |
840 | # CONFIG_NIU is not set | 798 | # CONFIG_NIU is not set |
841 | # CONFIG_PASEMI_MAC is not set | ||
842 | # CONFIG_MLX4_CORE is not set | 799 | # CONFIG_MLX4_CORE is not set |
843 | # CONFIG_TEHUTI is not set | 800 | # CONFIG_TEHUTI is not set |
844 | # CONFIG_BNX2X is not set | 801 | # CONFIG_BNX2X is not set |
802 | # CONFIG_SFC is not set | ||
845 | CONFIG_TR=y | 803 | CONFIG_TR=y |
846 | CONFIG_IBMOL=y | 804 | CONFIG_IBMOL=y |
847 | # CONFIG_3C359 is not set | 805 | # CONFIG_3C359 is not set |
@@ -852,6 +810,7 @@ CONFIG_IBMOL=y | |||
852 | # | 810 | # |
853 | # CONFIG_WLAN_PRE80211 is not set | 811 | # CONFIG_WLAN_PRE80211 is not set |
854 | # CONFIG_WLAN_80211 is not set | 812 | # CONFIG_WLAN_80211 is not set |
813 | # CONFIG_IWLWIFI_LEDS is not set | ||
855 | 814 | ||
856 | # | 815 | # |
857 | # USB Network Adapters | 816 | # USB Network Adapters |
@@ -956,6 +915,7 @@ CONFIG_VT=y | |||
956 | CONFIG_VT_CONSOLE=y | 915 | CONFIG_VT_CONSOLE=y |
957 | CONFIG_HW_CONSOLE=y | 916 | CONFIG_HW_CONSOLE=y |
958 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 917 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
918 | CONFIG_DEVKMEM=y | ||
959 | # CONFIG_SERIAL_NONSTANDARD is not set | 919 | # CONFIG_SERIAL_NONSTANDARD is not set |
960 | # CONFIG_NOZOMI is not set | 920 | # CONFIG_NOZOMI is not set |
961 | 921 | ||
@@ -1000,13 +960,7 @@ CONFIG_DEVPORT=y | |||
1000 | CONFIG_I2C=y | 960 | CONFIG_I2C=y |
1001 | CONFIG_I2C_BOARDINFO=y | 961 | CONFIG_I2C_BOARDINFO=y |
1002 | # CONFIG_I2C_CHARDEV is not set | 962 | # CONFIG_I2C_CHARDEV is not set |
1003 | |||
1004 | # | ||
1005 | # I2C Algorithms | ||
1006 | # | ||
1007 | CONFIG_I2C_ALGOBIT=y | 963 | CONFIG_I2C_ALGOBIT=y |
1008 | # CONFIG_I2C_ALGOPCF is not set | ||
1009 | # CONFIG_I2C_ALGOPCA is not set | ||
1010 | 964 | ||
1011 | # | 965 | # |
1012 | # I2C Hardware Bus support | 966 | # I2C Hardware Bus support |
@@ -1035,6 +989,7 @@ CONFIG_I2C_ALGOBIT=y | |||
1035 | # CONFIG_I2C_VIA is not set | 989 | # CONFIG_I2C_VIA is not set |
1036 | # CONFIG_I2C_VIAPRO is not set | 990 | # CONFIG_I2C_VIAPRO is not set |
1037 | # CONFIG_I2C_VOODOO3 is not set | 991 | # CONFIG_I2C_VOODOO3 is not set |
992 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
1038 | 993 | ||
1039 | # | 994 | # |
1040 | # Miscellaneous I2C Chip support | 995 | # Miscellaneous I2C Chip support |
@@ -1044,19 +999,13 @@ CONFIG_I2C_ALGOBIT=y | |||
1044 | # CONFIG_SENSORS_PCF8574 is not set | 999 | # CONFIG_SENSORS_PCF8574 is not set |
1045 | # CONFIG_PCF8575 is not set | 1000 | # CONFIG_PCF8575 is not set |
1046 | # CONFIG_SENSORS_PCF8591 is not set | 1001 | # CONFIG_SENSORS_PCF8591 is not set |
1047 | # CONFIG_TPS65010 is not set | ||
1048 | # CONFIG_SENSORS_MAX6875 is not set | 1002 | # CONFIG_SENSORS_MAX6875 is not set |
1049 | # CONFIG_SENSORS_TSL2550 is not set | 1003 | # CONFIG_SENSORS_TSL2550 is not set |
1050 | # CONFIG_I2C_DEBUG_CORE is not set | 1004 | # CONFIG_I2C_DEBUG_CORE is not set |
1051 | # CONFIG_I2C_DEBUG_ALGO is not set | 1005 | # CONFIG_I2C_DEBUG_ALGO is not set |
1052 | # CONFIG_I2C_DEBUG_BUS is not set | 1006 | # CONFIG_I2C_DEBUG_BUS is not set |
1053 | # CONFIG_I2C_DEBUG_CHIP is not set | 1007 | # CONFIG_I2C_DEBUG_CHIP is not set |
1054 | |||
1055 | # | ||
1056 | # SPI support | ||
1057 | # | ||
1058 | # CONFIG_SPI is not set | 1008 | # CONFIG_SPI is not set |
1059 | # CONFIG_SPI_MASTER is not set | ||
1060 | # CONFIG_W1 is not set | 1009 | # CONFIG_W1 is not set |
1061 | # CONFIG_POWER_SUPPLY is not set | 1010 | # CONFIG_POWER_SUPPLY is not set |
1062 | # CONFIG_HWMON is not set | 1011 | # CONFIG_HWMON is not set |
@@ -1073,12 +1022,22 @@ CONFIG_SSB_POSSIBLE=y | |||
1073 | # Multifunction device drivers | 1022 | # Multifunction device drivers |
1074 | # | 1023 | # |
1075 | # CONFIG_MFD_SM501 is not set | 1024 | # CONFIG_MFD_SM501 is not set |
1025 | # CONFIG_HTC_PASIC3 is not set | ||
1076 | 1026 | ||
1077 | # | 1027 | # |
1078 | # Multimedia devices | 1028 | # Multimedia devices |
1079 | # | 1029 | # |
1030 | |||
1031 | # | ||
1032 | # Multimedia core support | ||
1033 | # | ||
1080 | # CONFIG_VIDEO_DEV is not set | 1034 | # CONFIG_VIDEO_DEV is not set |
1081 | # CONFIG_DVB_CORE is not set | 1035 | # CONFIG_DVB_CORE is not set |
1036 | # CONFIG_VIDEO_MEDIA is not set | ||
1037 | |||
1038 | # | ||
1039 | # Multimedia drivers | ||
1040 | # | ||
1082 | # CONFIG_DAB is not set | 1041 | # CONFIG_DAB is not set |
1083 | 1042 | ||
1084 | # | 1043 | # |
@@ -1098,8 +1057,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
1098 | # CONFIG_FB_SYS_FILLRECT is not set | 1057 | # CONFIG_FB_SYS_FILLRECT is not set |
1099 | # CONFIG_FB_SYS_COPYAREA is not set | 1058 | # CONFIG_FB_SYS_COPYAREA is not set |
1100 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 1059 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
1060 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
1101 | # CONFIG_FB_SYS_FOPS is not set | 1061 | # CONFIG_FB_SYS_FOPS is not set |
1102 | CONFIG_FB_DEFERRED_IO=y | ||
1103 | # CONFIG_FB_SVGALIB is not set | 1062 | # CONFIG_FB_SVGALIB is not set |
1104 | CONFIG_FB_MACMODES=y | 1063 | CONFIG_FB_MACMODES=y |
1105 | CONFIG_FB_BACKLIGHT=y | 1064 | CONFIG_FB_BACKLIGHT=y |
@@ -1209,11 +1168,13 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1209 | # | 1168 | # |
1210 | # USB Host Controller Drivers | 1169 | # USB Host Controller Drivers |
1211 | # | 1170 | # |
1171 | # CONFIG_USB_C67X00_HCD is not set | ||
1212 | CONFIG_USB_EHCI_HCD=y | 1172 | CONFIG_USB_EHCI_HCD=y |
1213 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1173 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1214 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1174 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1215 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | 1175 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set |
1216 | # CONFIG_USB_ISP116X_HCD is not set | 1176 | # CONFIG_USB_ISP116X_HCD is not set |
1177 | # CONFIG_USB_ISP1760_HCD is not set | ||
1217 | CONFIG_USB_OHCI_HCD=y | 1178 | CONFIG_USB_OHCI_HCD=y |
1218 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1179 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
1219 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 1180 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
@@ -1247,7 +1208,9 @@ CONFIG_USB_STORAGE=y | |||
1247 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1208 | # CONFIG_USB_STORAGE_SDDR55 is not set |
1248 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1209 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
1249 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1210 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1211 | CONFIG_USB_STORAGE_ONETOUCH=y | ||
1250 | # CONFIG_USB_STORAGE_KARMA is not set | 1212 | # CONFIG_USB_STORAGE_KARMA is not set |
1213 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1251 | # CONFIG_USB_LIBUSUAL is not set | 1214 | # CONFIG_USB_LIBUSUAL is not set |
1252 | 1215 | ||
1253 | # | 1216 | # |
@@ -1290,6 +1253,7 @@ CONFIG_USB_MON=y | |||
1290 | # CONFIG_MMC is not set | 1253 | # CONFIG_MMC is not set |
1291 | # CONFIG_MEMSTICK is not set | 1254 | # CONFIG_MEMSTICK is not set |
1292 | # CONFIG_NEW_LEDS is not set | 1255 | # CONFIG_NEW_LEDS is not set |
1256 | # CONFIG_ACCESSIBILITY is not set | ||
1293 | CONFIG_INFINIBAND=m | 1257 | CONFIG_INFINIBAND=m |
1294 | CONFIG_INFINIBAND_USER_MAD=m | 1258 | CONFIG_INFINIBAND_USER_MAD=m |
1295 | CONFIG_INFINIBAND_USER_ACCESS=m | 1259 | CONFIG_INFINIBAND_USER_ACCESS=m |
@@ -1312,10 +1276,6 @@ CONFIG_INFINIBAND_SRP=m | |||
1312 | # CONFIG_RTC_CLASS is not set | 1276 | # CONFIG_RTC_CLASS is not set |
1313 | # CONFIG_DMADEVICES is not set | 1277 | # CONFIG_DMADEVICES is not set |
1314 | # CONFIG_AUXDISPLAY is not set | 1278 | # CONFIG_AUXDISPLAY is not set |
1315 | |||
1316 | # | ||
1317 | # Userspace I/O | ||
1318 | # | ||
1319 | # CONFIG_UIO is not set | 1279 | # CONFIG_UIO is not set |
1320 | 1280 | ||
1321 | # | 1281 | # |
@@ -1349,11 +1309,12 @@ CONFIG_JFS_SECURITY=y | |||
1349 | CONFIG_FS_POSIX_ACL=y | 1309 | CONFIG_FS_POSIX_ACL=y |
1350 | CONFIG_XFS_FS=m | 1310 | CONFIG_XFS_FS=m |
1351 | # CONFIG_XFS_QUOTA is not set | 1311 | # CONFIG_XFS_QUOTA is not set |
1352 | CONFIG_XFS_SECURITY=y | ||
1353 | CONFIG_XFS_POSIX_ACL=y | 1312 | CONFIG_XFS_POSIX_ACL=y |
1354 | # CONFIG_XFS_RT is not set | 1313 | # CONFIG_XFS_RT is not set |
1314 | # CONFIG_XFS_DEBUG is not set | ||
1355 | # CONFIG_GFS2_FS is not set | 1315 | # CONFIG_GFS2_FS is not set |
1356 | CONFIG_OCFS2_FS=m | 1316 | CONFIG_OCFS2_FS=m |
1317 | CONFIG_OCFS2_FS_O2CB=m | ||
1357 | CONFIG_OCFS2_DEBUG_MASKLOG=y | 1318 | CONFIG_OCFS2_DEBUG_MASKLOG=y |
1358 | # CONFIG_OCFS2_DEBUG_FS is not set | 1319 | # CONFIG_OCFS2_DEBUG_FS is not set |
1359 | CONFIG_DNOTIFY=y | 1320 | CONFIG_DNOTIFY=y |
@@ -1419,13 +1380,11 @@ CONFIG_NFS_FS=y | |||
1419 | CONFIG_NFS_V3=y | 1380 | CONFIG_NFS_V3=y |
1420 | CONFIG_NFS_V3_ACL=y | 1381 | CONFIG_NFS_V3_ACL=y |
1421 | CONFIG_NFS_V4=y | 1382 | CONFIG_NFS_V4=y |
1422 | # CONFIG_NFS_DIRECTIO is not set | ||
1423 | CONFIG_NFSD=y | 1383 | CONFIG_NFSD=y |
1424 | CONFIG_NFSD_V2_ACL=y | 1384 | CONFIG_NFSD_V2_ACL=y |
1425 | CONFIG_NFSD_V3=y | 1385 | CONFIG_NFSD_V3=y |
1426 | CONFIG_NFSD_V3_ACL=y | 1386 | CONFIG_NFSD_V3_ACL=y |
1427 | CONFIG_NFSD_V4=y | 1387 | CONFIG_NFSD_V4=y |
1428 | CONFIG_NFSD_TCP=y | ||
1429 | CONFIG_LOCKD=y | 1388 | CONFIG_LOCKD=y |
1430 | CONFIG_LOCKD_V4=y | 1389 | CONFIG_LOCKD_V4=y |
1431 | CONFIG_EXPORTFS=y | 1390 | CONFIG_EXPORTFS=y |
@@ -1500,9 +1459,10 @@ CONFIG_NLS_ISO8859_1=y | |||
1500 | # Library routines | 1459 | # Library routines |
1501 | # | 1460 | # |
1502 | CONFIG_BITREVERSE=y | 1461 | CONFIG_BITREVERSE=y |
1462 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1503 | CONFIG_CRC_CCITT=m | 1463 | CONFIG_CRC_CCITT=m |
1504 | # CONFIG_CRC16 is not set | 1464 | # CONFIG_CRC16 is not set |
1505 | # CONFIG_CRC_ITU_T is not set | 1465 | CONFIG_CRC_ITU_T=m |
1506 | CONFIG_CRC32=y | 1466 | CONFIG_CRC32=y |
1507 | # CONFIG_CRC7 is not set | 1467 | # CONFIG_CRC7 is not set |
1508 | CONFIG_LIBCRC32C=m | 1468 | CONFIG_LIBCRC32C=m |
@@ -1526,6 +1486,7 @@ CONFIG_HAVE_LMB=y | |||
1526 | # CONFIG_PRINTK_TIME is not set | 1486 | # CONFIG_PRINTK_TIME is not set |
1527 | CONFIG_ENABLE_WARN_DEPRECATED=y | 1487 | CONFIG_ENABLE_WARN_DEPRECATED=y |
1528 | CONFIG_ENABLE_MUST_CHECK=y | 1488 | CONFIG_ENABLE_MUST_CHECK=y |
1489 | CONFIG_FRAME_WARN=2048 | ||
1529 | CONFIG_MAGIC_SYSRQ=y | 1490 | CONFIG_MAGIC_SYSRQ=y |
1530 | # CONFIG_UNUSED_SYMBOLS is not set | 1491 | # CONFIG_UNUSED_SYMBOLS is not set |
1531 | CONFIG_DEBUG_FS=y | 1492 | CONFIG_DEBUG_FS=y |
@@ -1536,18 +1497,23 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1536 | CONFIG_SCHED_DEBUG=y | 1497 | CONFIG_SCHED_DEBUG=y |
1537 | # CONFIG_SCHEDSTATS is not set | 1498 | # CONFIG_SCHEDSTATS is not set |
1538 | # CONFIG_TIMER_STATS is not set | 1499 | # CONFIG_TIMER_STATS is not set |
1500 | # CONFIG_DEBUG_OBJECTS is not set | ||
1539 | # CONFIG_SLUB_DEBUG_ON is not set | 1501 | # CONFIG_SLUB_DEBUG_ON is not set |
1540 | # CONFIG_SLUB_STATS is not set | 1502 | # CONFIG_SLUB_STATS is not set |
1541 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1503 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1542 | # CONFIG_RT_MUTEX_TESTER is not set | 1504 | # CONFIG_RT_MUTEX_TESTER is not set |
1543 | # CONFIG_DEBUG_SPINLOCK is not set | 1505 | # CONFIG_DEBUG_SPINLOCK is not set |
1544 | # CONFIG_DEBUG_MUTEXES is not set | 1506 | # CONFIG_DEBUG_MUTEXES is not set |
1507 | # CONFIG_DEBUG_LOCK_ALLOC is not set | ||
1508 | # CONFIG_PROVE_LOCKING is not set | ||
1509 | # CONFIG_LOCK_STAT is not set | ||
1545 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1510 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
1546 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | 1511 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set |
1547 | # CONFIG_DEBUG_KOBJECT is not set | 1512 | # CONFIG_DEBUG_KOBJECT is not set |
1548 | CONFIG_DEBUG_BUGVERBOSE=y | 1513 | CONFIG_DEBUG_BUGVERBOSE=y |
1549 | # CONFIG_DEBUG_INFO is not set | 1514 | # CONFIG_DEBUG_INFO is not set |
1550 | # CONFIG_DEBUG_VM is not set | 1515 | # CONFIG_DEBUG_VM is not set |
1516 | # CONFIG_DEBUG_WRITECOUNT is not set | ||
1551 | # CONFIG_DEBUG_LIST is not set | 1517 | # CONFIG_DEBUG_LIST is not set |
1552 | # CONFIG_DEBUG_SG is not set | 1518 | # CONFIG_DEBUG_SG is not set |
1553 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1519 | # CONFIG_BOOT_PRINTK_DELAY is not set |
@@ -1577,53 +1543,83 @@ CONFIG_VIRQ_DEBUG=y | |||
1577 | # CONFIG_SECURITY is not set | 1543 | # CONFIG_SECURITY is not set |
1578 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1544 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1579 | CONFIG_CRYPTO=y | 1545 | CONFIG_CRYPTO=y |
1546 | |||
1547 | # | ||
1548 | # Crypto core or helper | ||
1549 | # | ||
1580 | CONFIG_CRYPTO_ALGAPI=y | 1550 | CONFIG_CRYPTO_ALGAPI=y |
1581 | CONFIG_CRYPTO_AEAD=m | 1551 | CONFIG_CRYPTO_AEAD=m |
1582 | CONFIG_CRYPTO_BLKCIPHER=y | 1552 | CONFIG_CRYPTO_BLKCIPHER=y |
1583 | CONFIG_CRYPTO_SEQIV=m | ||
1584 | CONFIG_CRYPTO_HASH=y | 1553 | CONFIG_CRYPTO_HASH=y |
1585 | CONFIG_CRYPTO_MANAGER=y | 1554 | CONFIG_CRYPTO_MANAGER=y |
1555 | CONFIG_CRYPTO_GF128MUL=m | ||
1556 | CONFIG_CRYPTO_NULL=m | ||
1557 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1558 | CONFIG_CRYPTO_AUTHENC=m | ||
1559 | CONFIG_CRYPTO_TEST=m | ||
1560 | |||
1561 | # | ||
1562 | # Authenticated Encryption with Associated Data | ||
1563 | # | ||
1564 | CONFIG_CRYPTO_CCM=m | ||
1565 | CONFIG_CRYPTO_GCM=m | ||
1566 | CONFIG_CRYPTO_SEQIV=m | ||
1567 | |||
1568 | # | ||
1569 | # Block modes | ||
1570 | # | ||
1571 | CONFIG_CRYPTO_CBC=y | ||
1572 | CONFIG_CRYPTO_CTR=m | ||
1573 | # CONFIG_CRYPTO_CTS is not set | ||
1574 | CONFIG_CRYPTO_ECB=m | ||
1575 | # CONFIG_CRYPTO_LRW is not set | ||
1576 | CONFIG_CRYPTO_PCBC=m | ||
1577 | # CONFIG_CRYPTO_XTS is not set | ||
1578 | |||
1579 | # | ||
1580 | # Hash modes | ||
1581 | # | ||
1586 | CONFIG_CRYPTO_HMAC=y | 1582 | CONFIG_CRYPTO_HMAC=y |
1587 | # CONFIG_CRYPTO_XCBC is not set | 1583 | # CONFIG_CRYPTO_XCBC is not set |
1588 | CONFIG_CRYPTO_NULL=m | 1584 | |
1585 | # | ||
1586 | # Digest | ||
1587 | # | ||
1588 | CONFIG_CRYPTO_CRC32C=m | ||
1589 | CONFIG_CRYPTO_MD4=m | 1589 | CONFIG_CRYPTO_MD4=m |
1590 | CONFIG_CRYPTO_MD5=y | 1590 | CONFIG_CRYPTO_MD5=y |
1591 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1591 | CONFIG_CRYPTO_SHA1=m | 1592 | CONFIG_CRYPTO_SHA1=m |
1592 | CONFIG_CRYPTO_SHA256=m | 1593 | CONFIG_CRYPTO_SHA256=m |
1593 | CONFIG_CRYPTO_SHA512=m | 1594 | CONFIG_CRYPTO_SHA512=m |
1594 | CONFIG_CRYPTO_WP512=m | ||
1595 | CONFIG_CRYPTO_TGR192=m | 1595 | CONFIG_CRYPTO_TGR192=m |
1596 | CONFIG_CRYPTO_GF128MUL=m | 1596 | CONFIG_CRYPTO_WP512=m |
1597 | CONFIG_CRYPTO_ECB=m | 1597 | |
1598 | CONFIG_CRYPTO_CBC=y | 1598 | # |
1599 | CONFIG_CRYPTO_PCBC=m | 1599 | # Ciphers |
1600 | # CONFIG_CRYPTO_LRW is not set | 1600 | # |
1601 | # CONFIG_CRYPTO_XTS is not set | ||
1602 | CONFIG_CRYPTO_CTR=m | ||
1603 | CONFIG_CRYPTO_GCM=m | ||
1604 | CONFIG_CRYPTO_CCM=m | ||
1605 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1606 | CONFIG_CRYPTO_DES=y | ||
1607 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1608 | CONFIG_CRYPTO_BLOWFISH=m | ||
1609 | CONFIG_CRYPTO_TWOFISH=m | ||
1610 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1611 | CONFIG_CRYPTO_SERPENT=m | ||
1612 | CONFIG_CRYPTO_AES=m | 1601 | CONFIG_CRYPTO_AES=m |
1602 | CONFIG_CRYPTO_ANUBIS=m | ||
1603 | CONFIG_CRYPTO_ARC4=m | ||
1604 | CONFIG_CRYPTO_BLOWFISH=m | ||
1605 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1613 | CONFIG_CRYPTO_CAST5=m | 1606 | CONFIG_CRYPTO_CAST5=m |
1614 | CONFIG_CRYPTO_CAST6=m | 1607 | CONFIG_CRYPTO_CAST6=m |
1615 | CONFIG_CRYPTO_TEA=m | 1608 | CONFIG_CRYPTO_DES=y |
1616 | CONFIG_CRYPTO_ARC4=m | 1609 | # CONFIG_CRYPTO_FCRYPT is not set |
1617 | CONFIG_CRYPTO_KHAZAD=m | 1610 | CONFIG_CRYPTO_KHAZAD=m |
1618 | CONFIG_CRYPTO_ANUBIS=m | ||
1619 | # CONFIG_CRYPTO_SEED is not set | ||
1620 | CONFIG_CRYPTO_SALSA20=m | 1611 | CONFIG_CRYPTO_SALSA20=m |
1612 | # CONFIG_CRYPTO_SEED is not set | ||
1613 | CONFIG_CRYPTO_SERPENT=m | ||
1614 | CONFIG_CRYPTO_TEA=m | ||
1615 | CONFIG_CRYPTO_TWOFISH=m | ||
1616 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1617 | |||
1618 | # | ||
1619 | # Compression | ||
1620 | # | ||
1621 | CONFIG_CRYPTO_DEFLATE=m | 1621 | CONFIG_CRYPTO_DEFLATE=m |
1622 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1623 | CONFIG_CRYPTO_CRC32C=m | ||
1624 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1625 | CONFIG_CRYPTO_TEST=m | ||
1626 | CONFIG_CRYPTO_AUTHENC=m | ||
1627 | CONFIG_CRYPTO_LZO=m | 1622 | CONFIG_CRYPTO_LZO=m |
1628 | # CONFIG_CRYPTO_HW is not set | 1623 | # CONFIG_CRYPTO_HW is not set |
1629 | # CONFIG_PPC_CLOCK is not set | 1624 | # CONFIG_PPC_CLOCK is not set |
1625 | # CONFIG_VIRTUALIZATION is not set | ||
diff --git a/arch/powerpc/kernel/init_task.c b/arch/powerpc/kernel/init_task.c index 941043ae040f..4c85b8d56478 100644 --- a/arch/powerpc/kernel/init_task.c +++ b/arch/powerpc/kernel/init_task.c | |||
@@ -8,7 +8,6 @@ | |||
8 | #include <asm/uaccess.h> | 8 | #include <asm/uaccess.h> |
9 | 9 | ||
10 | static struct fs_struct init_fs = INIT_FS; | 10 | static struct fs_struct init_fs = INIT_FS; |
11 | static struct files_struct init_files = INIT_FILES; | ||
12 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 11 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
13 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 12 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
14 | struct mm_struct init_mm = INIT_MM(init_mm); | 13 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh index 8e24fc1821e8..31729a9387df 100644 --- a/arch/powerpc/kernel/prom_init_check.sh +++ b/arch/powerpc/kernel/prom_init_check.sh | |||
@@ -20,7 +20,7 @@ WHITELIST="add_reloc_offset __bss_start __bss_stop copy_and_flush | |||
20 | _end enter_prom memcpy memset reloc_offset __secondary_hold | 20 | _end enter_prom memcpy memset reloc_offset __secondary_hold |
21 | __secondary_hold_acknowledge __secondary_hold_spinloop __start | 21 | __secondary_hold_acknowledge __secondary_hold_spinloop __start |
22 | strcmp strcpy strlcpy strlen strncmp strstr logo_linux_clut224 | 22 | strcmp strcpy strlcpy strlen strncmp strstr logo_linux_clut224 |
23 | reloc_got2" | 23 | reloc_got2 kernstart_addr" |
24 | 24 | ||
25 | NM="$1" | 25 | NM="$1" |
26 | OBJ="$2" | 26 | OBJ="$2" |
diff --git a/arch/powerpc/mm/hash_low_32.S b/arch/powerpc/mm/hash_low_32.S index ddeaf9e38ad5..b9ba7d930801 100644 --- a/arch/powerpc/mm/hash_low_32.S +++ b/arch/powerpc/mm/hash_low_32.S | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: hashtable.S,v 1.6 1999/10/08 01:56:15 paulus Exp $ | ||
3 | * | ||
4 | * PowerPC version | 2 | * PowerPC version |
5 | * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) | 3 | * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) |
6 | * Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP | 4 | * Rewritten by Cort Dougan (cort@cs.nmt.edu) for PReP |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 2b5a399f6fa6..0f2d239d94c4 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -94,6 +94,9 @@ unsigned long htab_hash_mask; | |||
94 | int mmu_linear_psize = MMU_PAGE_4K; | 94 | int mmu_linear_psize = MMU_PAGE_4K; |
95 | int mmu_virtual_psize = MMU_PAGE_4K; | 95 | int mmu_virtual_psize = MMU_PAGE_4K; |
96 | int mmu_vmalloc_psize = MMU_PAGE_4K; | 96 | int mmu_vmalloc_psize = MMU_PAGE_4K; |
97 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
98 | int mmu_vmemmap_psize = MMU_PAGE_4K; | ||
99 | #endif | ||
97 | int mmu_io_psize = MMU_PAGE_4K; | 100 | int mmu_io_psize = MMU_PAGE_4K; |
98 | int mmu_kernel_ssize = MMU_SEGSIZE_256M; | 101 | int mmu_kernel_ssize = MMU_SEGSIZE_256M; |
99 | int mmu_highuser_ssize = MMU_SEGSIZE_256M; | 102 | int mmu_highuser_ssize = MMU_SEGSIZE_256M; |
@@ -387,11 +390,32 @@ static void __init htab_init_page_sizes(void) | |||
387 | } | 390 | } |
388 | #endif /* CONFIG_PPC_64K_PAGES */ | 391 | #endif /* CONFIG_PPC_64K_PAGES */ |
389 | 392 | ||
393 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
394 | /* We try to use 16M pages for vmemmap if that is supported | ||
395 | * and we have at least 1G of RAM at boot | ||
396 | */ | ||
397 | if (mmu_psize_defs[MMU_PAGE_16M].shift && | ||
398 | lmb_phys_mem_size() >= 0x40000000) | ||
399 | mmu_vmemmap_psize = MMU_PAGE_16M; | ||
400 | else if (mmu_psize_defs[MMU_PAGE_64K].shift) | ||
401 | mmu_vmemmap_psize = MMU_PAGE_64K; | ||
402 | else | ||
403 | mmu_vmemmap_psize = MMU_PAGE_4K; | ||
404 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ | ||
405 | |||
390 | printk(KERN_DEBUG "Page orders: linear mapping = %d, " | 406 | printk(KERN_DEBUG "Page orders: linear mapping = %d, " |
391 | "virtual = %d, io = %d\n", | 407 | "virtual = %d, io = %d" |
408 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
409 | ", vmemmap = %d" | ||
410 | #endif | ||
411 | "\n", | ||
392 | mmu_psize_defs[mmu_linear_psize].shift, | 412 | mmu_psize_defs[mmu_linear_psize].shift, |
393 | mmu_psize_defs[mmu_virtual_psize].shift, | 413 | mmu_psize_defs[mmu_virtual_psize].shift, |
394 | mmu_psize_defs[mmu_io_psize].shift); | 414 | mmu_psize_defs[mmu_io_psize].shift |
415 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
416 | ,mmu_psize_defs[mmu_vmemmap_psize].shift | ||
417 | #endif | ||
418 | ); | ||
395 | 419 | ||
396 | #ifdef CONFIG_HUGETLB_PAGE | 420 | #ifdef CONFIG_HUGETLB_PAGE |
397 | /* Init large page size. Currently, we pick 16M or 1M depending | 421 | /* Init large page size. Currently, we pick 16M or 1M depending |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index c5ac532a0161..6aa65375abf5 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -19,6 +19,8 @@ | |||
19 | * | 19 | * |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #undef DEBUG | ||
23 | |||
22 | #include <linux/signal.h> | 24 | #include <linux/signal.h> |
23 | #include <linux/sched.h> | 25 | #include <linux/sched.h> |
24 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
@@ -208,12 +210,12 @@ int __meminit vmemmap_populated(unsigned long start, int page_size) | |||
208 | } | 210 | } |
209 | 211 | ||
210 | int __meminit vmemmap_populate(struct page *start_page, | 212 | int __meminit vmemmap_populate(struct page *start_page, |
211 | unsigned long nr_pages, int node) | 213 | unsigned long nr_pages, int node) |
212 | { | 214 | { |
213 | unsigned long mode_rw; | 215 | unsigned long mode_rw; |
214 | unsigned long start = (unsigned long)start_page; | 216 | unsigned long start = (unsigned long)start_page; |
215 | unsigned long end = (unsigned long)(start_page + nr_pages); | 217 | unsigned long end = (unsigned long)(start_page + nr_pages); |
216 | unsigned long page_size = 1 << mmu_psize_defs[mmu_linear_psize].shift; | 218 | unsigned long page_size = 1 << mmu_psize_defs[mmu_vmemmap_psize].shift; |
217 | 219 | ||
218 | mode_rw = _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_COHERENT | PP_RWXX; | 220 | mode_rw = _PAGE_ACCESSED | _PAGE_DIRTY | _PAGE_COHERENT | PP_RWXX; |
219 | 221 | ||
@@ -235,11 +237,11 @@ int __meminit vmemmap_populate(struct page *start_page, | |||
235 | start, p, __pa(p)); | 237 | start, p, __pa(p)); |
236 | 238 | ||
237 | mapped = htab_bolt_mapping(start, start + page_size, | 239 | mapped = htab_bolt_mapping(start, start + page_size, |
238 | __pa(p), mode_rw, mmu_linear_psize, | 240 | __pa(p), mode_rw, mmu_vmemmap_psize, |
239 | mmu_kernel_ssize); | 241 | mmu_kernel_ssize); |
240 | BUG_ON(mapped < 0); | 242 | BUG_ON(mapped < 0); |
241 | } | 243 | } |
242 | 244 | ||
243 | return 0; | 245 | return 0; |
244 | } | 246 | } |
245 | #endif | 247 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ |
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 80d1babb230d..e0ff59f21135 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c | |||
@@ -402,7 +402,7 @@ void __set_fixmap (enum fixed_addresses idx, phys_addr_t phys, pgprot_t flags) | |||
402 | return; | 402 | return; |
403 | } | 403 | } |
404 | 404 | ||
405 | map_page(address, phys, flags); | 405 | map_page(address, phys, pgprot_val(flags)); |
406 | fixmaps++; | 406 | fixmaps++; |
407 | } | 407 | } |
408 | 408 | ||
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c index cf8705e32d60..89497fb04280 100644 --- a/arch/powerpc/mm/slb.c +++ b/arch/powerpc/mm/slb.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #include <asm/udbg.h> | 28 | #include <asm/udbg.h> |
29 | 29 | ||
30 | #ifdef DEBUG | 30 | #ifdef DEBUG |
31 | #define DBG(fmt...) udbg_printf(fmt) | 31 | #define DBG(fmt...) printk(fmt) |
32 | #else | 32 | #else |
33 | #define DBG pr_debug | 33 | #define DBG pr_debug |
34 | #endif | 34 | #endif |
@@ -263,13 +263,19 @@ void slb_initialize(void) | |||
263 | extern unsigned int *slb_miss_kernel_load_linear; | 263 | extern unsigned int *slb_miss_kernel_load_linear; |
264 | extern unsigned int *slb_miss_kernel_load_io; | 264 | extern unsigned int *slb_miss_kernel_load_io; |
265 | extern unsigned int *slb_compare_rr_to_size; | 265 | extern unsigned int *slb_compare_rr_to_size; |
266 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
267 | extern unsigned int *slb_miss_kernel_load_vmemmap; | ||
268 | unsigned long vmemmap_llp; | ||
269 | #endif | ||
266 | 270 | ||
267 | /* Prepare our SLB miss handler based on our page size */ | 271 | /* Prepare our SLB miss handler based on our page size */ |
268 | linear_llp = mmu_psize_defs[mmu_linear_psize].sllp; | 272 | linear_llp = mmu_psize_defs[mmu_linear_psize].sllp; |
269 | io_llp = mmu_psize_defs[mmu_io_psize].sllp; | 273 | io_llp = mmu_psize_defs[mmu_io_psize].sllp; |
270 | vmalloc_llp = mmu_psize_defs[mmu_vmalloc_psize].sllp; | 274 | vmalloc_llp = mmu_psize_defs[mmu_vmalloc_psize].sllp; |
271 | get_paca()->vmalloc_sllp = SLB_VSID_KERNEL | vmalloc_llp; | 275 | get_paca()->vmalloc_sllp = SLB_VSID_KERNEL | vmalloc_llp; |
272 | 276 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | |
277 | vmemmap_llp = mmu_psize_defs[mmu_vmemmap_psize].sllp; | ||
278 | #endif | ||
273 | if (!slb_encoding_inited) { | 279 | if (!slb_encoding_inited) { |
274 | slb_encoding_inited = 1; | 280 | slb_encoding_inited = 1; |
275 | patch_slb_encoding(slb_miss_kernel_load_linear, | 281 | patch_slb_encoding(slb_miss_kernel_load_linear, |
@@ -281,6 +287,12 @@ void slb_initialize(void) | |||
281 | 287 | ||
282 | DBG("SLB: linear LLP = %04lx\n", linear_llp); | 288 | DBG("SLB: linear LLP = %04lx\n", linear_llp); |
283 | DBG("SLB: io LLP = %04lx\n", io_llp); | 289 | DBG("SLB: io LLP = %04lx\n", io_llp); |
290 | |||
291 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
292 | patch_slb_encoding(slb_miss_kernel_load_vmemmap, | ||
293 | SLB_VSID_KERNEL | vmemmap_llp); | ||
294 | DBG("SLB: vmemmap LLP = %04lx\n", vmemmap_llp); | ||
295 | #endif | ||
284 | } | 296 | } |
285 | 297 | ||
286 | get_paca()->stab_rr = SLB_NUM_BOLTED; | 298 | get_paca()->stab_rr = SLB_NUM_BOLTED; |
diff --git a/arch/powerpc/mm/slb_low.S b/arch/powerpc/mm/slb_low.S index 657f6b37e9df..bc44dc4b5c67 100644 --- a/arch/powerpc/mm/slb_low.S +++ b/arch/powerpc/mm/slb_low.S | |||
@@ -47,8 +47,7 @@ _GLOBAL(slb_allocate_realmode) | |||
47 | * it to VSID 0, which is reserved as a bad VSID - one which | 47 | * it to VSID 0, which is reserved as a bad VSID - one which |
48 | * will never have any pages in it. */ | 48 | * will never have any pages in it. */ |
49 | 49 | ||
50 | /* Check if hitting the linear mapping of the vmalloc/ioremap | 50 | /* Check if hitting the linear mapping or some other kernel space |
51 | * kernel space | ||
52 | */ | 51 | */ |
53 | bne cr7,1f | 52 | bne cr7,1f |
54 | 53 | ||
@@ -62,7 +61,18 @@ BEGIN_FTR_SECTION | |||
62 | END_FTR_SECTION_IFCLR(CPU_FTR_1T_SEGMENT) | 61 | END_FTR_SECTION_IFCLR(CPU_FTR_1T_SEGMENT) |
63 | b slb_finish_load_1T | 62 | b slb_finish_load_1T |
64 | 63 | ||
65 | 1: /* vmalloc/ioremap mapping encoding bits, the "li" instructions below | 64 | 1: |
65 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | ||
66 | /* Check virtual memmap region. To be patches at kernel boot */ | ||
67 | cmpldi cr0,r9,0xf | ||
68 | bne 1f | ||
69 | _GLOBAL(slb_miss_kernel_load_vmemmap) | ||
70 | li r11,0 | ||
71 | b 6f | ||
72 | 1: | ||
73 | #endif /* CONFIG_SPARSEMEM_VMEMMAP */ | ||
74 | |||
75 | /* vmalloc/ioremap mapping encoding bits, the "li" instructions below | ||
66 | * will be patched by the kernel at boot | 76 | * will be patched by the kernel at boot |
67 | */ | 77 | */ |
68 | BEGIN_FTR_SECTION | 78 | BEGIN_FTR_SECTION |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c index 25f8bc75e838..43a459f63e31 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/fsl_devices.h> | 32 | #include <linux/fsl_devices.h> |
33 | #include <linux/of_platform.h> | 33 | #include <linux/of_platform.h> |
34 | #include <linux/of_device.h> | 34 | #include <linux/of_device.h> |
35 | #include <linux/phy.h> | ||
35 | 36 | ||
36 | #include <asm/system.h> | 37 | #include <asm/system.h> |
37 | #include <asm/atomic.h> | 38 | #include <asm/atomic.h> |
@@ -56,6 +57,95 @@ | |||
56 | #define DBG(fmt...) | 57 | #define DBG(fmt...) |
57 | #endif | 58 | #endif |
58 | 59 | ||
60 | #define MV88E1111_SCR 0x10 | ||
61 | #define MV88E1111_SCR_125CLK 0x0010 | ||
62 | static int mpc8568_fixup_125_clock(struct phy_device *phydev) | ||
63 | { | ||
64 | int scr; | ||
65 | int err; | ||
66 | |||
67 | /* Workaround for the 125 CLK Toggle */ | ||
68 | scr = phy_read(phydev, MV88E1111_SCR); | ||
69 | |||
70 | if (scr < 0) | ||
71 | return scr; | ||
72 | |||
73 | err = phy_write(phydev, MV88E1111_SCR, scr & ~(MV88E1111_SCR_125CLK)); | ||
74 | |||
75 | if (err) | ||
76 | return err; | ||
77 | |||
78 | err = phy_write(phydev, MII_BMCR, BMCR_RESET); | ||
79 | |||
80 | if (err) | ||
81 | return err; | ||
82 | |||
83 | scr = phy_read(phydev, MV88E1111_SCR); | ||
84 | |||
85 | if (scr < 0) | ||
86 | return err; | ||
87 | |||
88 | err = phy_write(phydev, MV88E1111_SCR, scr | 0x0008); | ||
89 | |||
90 | return err; | ||
91 | } | ||
92 | |||
93 | static int mpc8568_mds_phy_fixups(struct phy_device *phydev) | ||
94 | { | ||
95 | int temp; | ||
96 | int err; | ||
97 | |||
98 | /* Errata */ | ||
99 | err = phy_write(phydev,29, 0x0006); | ||
100 | |||
101 | if (err) | ||
102 | return err; | ||
103 | |||
104 | temp = phy_read(phydev, 30); | ||
105 | |||
106 | if (temp < 0) | ||
107 | return temp; | ||
108 | |||
109 | temp = (temp & (~0x8000)) | 0x4000; | ||
110 | err = phy_write(phydev,30, temp); | ||
111 | |||
112 | if (err) | ||
113 | return err; | ||
114 | |||
115 | err = phy_write(phydev,29, 0x000a); | ||
116 | |||
117 | if (err) | ||
118 | return err; | ||
119 | |||
120 | temp = phy_read(phydev, 30); | ||
121 | |||
122 | if (temp < 0) | ||
123 | return temp; | ||
124 | |||
125 | temp = phy_read(phydev, 30); | ||
126 | |||
127 | if (temp < 0) | ||
128 | return temp; | ||
129 | |||
130 | temp &= ~0x0020; | ||
131 | |||
132 | err = phy_write(phydev,30,temp); | ||
133 | |||
134 | if (err) | ||
135 | return err; | ||
136 | |||
137 | /* Disable automatic MDI/MDIX selection */ | ||
138 | temp = phy_read(phydev, 16); | ||
139 | |||
140 | if (temp < 0) | ||
141 | return temp; | ||
142 | |||
143 | temp &= ~0x0060; | ||
144 | err = phy_write(phydev,16,temp); | ||
145 | |||
146 | return err; | ||
147 | } | ||
148 | |||
59 | /* ************************************************************************ | 149 | /* ************************************************************************ |
60 | * | 150 | * |
61 | * Setup the architecture | 151 | * Setup the architecture |
@@ -64,7 +154,7 @@ | |||
64 | static void __init mpc85xx_mds_setup_arch(void) | 154 | static void __init mpc85xx_mds_setup_arch(void) |
65 | { | 155 | { |
66 | struct device_node *np; | 156 | struct device_node *np; |
67 | static u8 *bcsr_regs = NULL; | 157 | static u8 __iomem *bcsr_regs = NULL; |
68 | 158 | ||
69 | if (ppc_md.progress) | 159 | if (ppc_md.progress) |
70 | ppc_md.progress("mpc85xx_mds_setup_arch()", 0); | 160 | ppc_md.progress("mpc85xx_mds_setup_arch()", 0); |
@@ -138,6 +228,35 @@ static void __init mpc85xx_mds_setup_arch(void) | |||
138 | #endif /* CONFIG_QUICC_ENGINE */ | 228 | #endif /* CONFIG_QUICC_ENGINE */ |
139 | } | 229 | } |
140 | 230 | ||
231 | |||
232 | static int __init board_fixups(void) | ||
233 | { | ||
234 | char phy_id[BUS_ID_SIZE]; | ||
235 | char *compstrs[2] = {"fsl,gianfar-mdio", "fsl,ucc-mdio"}; | ||
236 | struct device_node *mdio; | ||
237 | struct resource res; | ||
238 | int i; | ||
239 | |||
240 | for (i = 0; i < ARRAY_SIZE(compstrs); i++) { | ||
241 | mdio = of_find_compatible_node(NULL, NULL, compstrs[i]); | ||
242 | |||
243 | of_address_to_resource(mdio, 0, &res); | ||
244 | snprintf(phy_id, BUS_ID_SIZE, "%x:%02x", res.start, 1); | ||
245 | |||
246 | phy_register_fixup_for_id(phy_id, mpc8568_fixup_125_clock); | ||
247 | phy_register_fixup_for_id(phy_id, mpc8568_mds_phy_fixups); | ||
248 | |||
249 | /* Register a workaround for errata */ | ||
250 | snprintf(phy_id, BUS_ID_SIZE, "%x:%02x", res.start, 7); | ||
251 | phy_register_fixup_for_id(phy_id, mpc8568_mds_phy_fixups); | ||
252 | |||
253 | of_node_put(mdio); | ||
254 | } | ||
255 | |||
256 | return 0; | ||
257 | } | ||
258 | machine_arch_initcall(mpc85xx_mds, board_fixups); | ||
259 | |||
141 | static struct of_device_id mpc85xx_ids[] = { | 260 | static struct of_device_id mpc85xx_ids[] = { |
142 | { .type = "soc", }, | 261 | { .type = "soc", }, |
143 | { .compatible = "soc", }, | 262 | { .compatible = "soc", }, |
diff --git a/arch/powerpc/platforms/85xx/sbc8548.c b/arch/powerpc/platforms/85xx/sbc8548.c index 488facb99fe8..b9246ea0928a 100644 --- a/arch/powerpc/platforms/85xx/sbc8548.c +++ b/arch/powerpc/platforms/85xx/sbc8548.c | |||
@@ -49,6 +49,8 @@ | |||
49 | #include <sysdev/fsl_soc.h> | 49 | #include <sysdev/fsl_soc.h> |
50 | #include <sysdev/fsl_pci.h> | 50 | #include <sysdev/fsl_pci.h> |
51 | 51 | ||
52 | static int sbc_rev; | ||
53 | |||
52 | static void __init sbc8548_pic_init(void) | 54 | static void __init sbc8548_pic_init(void) |
53 | { | 55 | { |
54 | struct mpic *mpic; | 56 | struct mpic *mpic; |
@@ -79,6 +81,30 @@ static void __init sbc8548_pic_init(void) | |||
79 | mpic_init(mpic); | 81 | mpic_init(mpic); |
80 | } | 82 | } |
81 | 83 | ||
84 | /* Extract the HW Rev from the EPLD on the board */ | ||
85 | static int __init sbc8548_hw_rev(void) | ||
86 | { | ||
87 | struct device_node *np; | ||
88 | struct resource res; | ||
89 | unsigned int *rev; | ||
90 | int board_rev = 0; | ||
91 | |||
92 | np = of_find_compatible_node(NULL, NULL, "hw-rev"); | ||
93 | if (np == NULL) { | ||
94 | printk("No HW-REV found in DTB.\n"); | ||
95 | return -ENODEV; | ||
96 | } | ||
97 | |||
98 | of_address_to_resource(np, 0, &res); | ||
99 | of_node_put(np); | ||
100 | |||
101 | rev = ioremap(res.start,sizeof(unsigned int)); | ||
102 | board_rev = (*rev) >> 28; | ||
103 | iounmap(rev); | ||
104 | |||
105 | return board_rev; | ||
106 | } | ||
107 | |||
82 | /* | 108 | /* |
83 | * Setup the architecture | 109 | * Setup the architecture |
84 | */ | 110 | */ |
@@ -104,6 +130,7 @@ static void __init sbc8548_setup_arch(void) | |||
104 | } | 130 | } |
105 | } | 131 | } |
106 | #endif | 132 | #endif |
133 | sbc_rev = sbc8548_hw_rev(); | ||
107 | } | 134 | } |
108 | 135 | ||
109 | static void sbc8548_show_cpuinfo(struct seq_file *m) | 136 | static void sbc8548_show_cpuinfo(struct seq_file *m) |
@@ -115,7 +142,7 @@ static void sbc8548_show_cpuinfo(struct seq_file *m) | |||
115 | svid = mfspr(SPRN_SVR); | 142 | svid = mfspr(SPRN_SVR); |
116 | 143 | ||
117 | seq_printf(m, "Vendor\t\t: Wind River\n"); | 144 | seq_printf(m, "Vendor\t\t: Wind River\n"); |
118 | seq_printf(m, "Machine\t\t: SBC8548\n"); | 145 | seq_printf(m, "Machine\t\t: SBC8548 v%d\n", sbc_rev); |
119 | seq_printf(m, "PVR\t\t: 0x%x\n", pvid); | 146 | seq_printf(m, "PVR\t\t: 0x%x\n", pvid); |
120 | seq_printf(m, "SVR\t\t: 0x%x\n", svid); | 147 | seq_printf(m, "SVR\t\t: 0x%x\n", svid); |
121 | 148 | ||
@@ -130,6 +157,7 @@ static void sbc8548_show_cpuinfo(struct seq_file *m) | |||
130 | static struct of_device_id __initdata of_bus_ids[] = { | 157 | static struct of_device_id __initdata of_bus_ids[] = { |
131 | { .name = "soc", }, | 158 | { .name = "soc", }, |
132 | { .type = "soc", }, | 159 | { .type = "soc", }, |
160 | { .compatible = "simple-bus", }, | ||
133 | {}, | 161 | {}, |
134 | }; | 162 | }; |
135 | 163 | ||
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c index 5e1e8cf14e75..dea13208bf64 100644 --- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c +++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c | |||
@@ -43,6 +43,7 @@ static unsigned char *pixis_bdcfg0, *pixis_arch; | |||
43 | 43 | ||
44 | static struct of_device_id __initdata mpc8610_ids[] = { | 44 | static struct of_device_id __initdata mpc8610_ids[] = { |
45 | { .compatible = "fsl,mpc8610-immr", }, | 45 | { .compatible = "fsl,mpc8610-immr", }, |
46 | { .compatible = "simple-bus", }, | ||
46 | {} | 47 | {} |
47 | }; | 48 | }; |
48 | 49 | ||
@@ -216,11 +217,21 @@ void mpc8610hpcd_set_gamma_table(int monitor_port, char *gamma_table_base) | |||
216 | } | 217 | } |
217 | } | 218 | } |
218 | 219 | ||
220 | #define PX_BRDCFG0_DVISEL (1 << 3) | ||
221 | #define PX_BRDCFG0_DLINK (1 << 4) | ||
222 | #define PX_BRDCFG0_DIU_MASK (PX_BRDCFG0_DVISEL | PX_BRDCFG0_DLINK) | ||
223 | |||
219 | void mpc8610hpcd_set_monitor_port(int monitor_port) | 224 | void mpc8610hpcd_set_monitor_port(int monitor_port) |
220 | { | 225 | { |
221 | static const u8 bdcfg[] = {0xBD, 0xB5, 0xA5}; | 226 | static const u8 bdcfg[] = { |
227 | PX_BRDCFG0_DVISEL | PX_BRDCFG0_DLINK, | ||
228 | PX_BRDCFG0_DLINK, | ||
229 | 0, | ||
230 | }; | ||
231 | |||
222 | if (monitor_port < 3) | 232 | if (monitor_port < 3) |
223 | *pixis_bdcfg0 = bdcfg[monitor_port]; | 233 | clrsetbits_8(pixis_bdcfg0, PX_BRDCFG0_DIU_MASK, |
234 | bdcfg[monitor_port]); | ||
224 | } | 235 | } |
225 | 236 | ||
226 | void mpc8610hpcd_set_pixel_clock(unsigned int pixclock) | 237 | void mpc8610hpcd_set_pixel_clock(unsigned int pixclock) |
diff --git a/arch/powerpc/platforms/cell/io-workarounds.c b/arch/powerpc/platforms/cell/io-workarounds.c index 3b84e8be314c..b5f84e8f0899 100644 --- a/arch/powerpc/platforms/cell/io-workarounds.c +++ b/arch/powerpc/platforms/cell/io-workarounds.c | |||
@@ -118,7 +118,7 @@ static void iowa_##name at \ | |||
118 | #undef DEF_PCI_AC_RET | 118 | #undef DEF_PCI_AC_RET |
119 | #undef DEF_PCI_AC_NORET | 119 | #undef DEF_PCI_AC_NORET |
120 | 120 | ||
121 | static struct ppc_pci_io __initdata iowa_pci_io = { | 121 | static const struct ppc_pci_io __devinitconst iowa_pci_io = { |
122 | 122 | ||
123 | #define DEF_PCI_AC_RET(name, ret, at, al, space, aa) .name = iowa_##name, | 123 | #define DEF_PCI_AC_RET(name, ret, at, al, space, aa) .name = iowa_##name, |
124 | #define DEF_PCI_AC_NORET(name, at, al, space, aa) .name = iowa_##name, | 124 | #define DEF_PCI_AC_NORET(name, at, al, space, aa) .name = iowa_##name, |
@@ -146,7 +146,7 @@ static void __iomem *iowa_ioremap(unsigned long addr, unsigned long size, | |||
146 | } | 146 | } |
147 | 147 | ||
148 | /* Regist new bus to support workaround */ | 148 | /* Regist new bus to support workaround */ |
149 | void __init iowa_register_bus(struct pci_controller *phb, | 149 | void __devinit iowa_register_bus(struct pci_controller *phb, |
150 | struct ppc_pci_io *ops, | 150 | struct ppc_pci_io *ops, |
151 | int (*initfunc)(struct iowa_bus *, void *), void *data) | 151 | int (*initfunc)(struct iowa_bus *, void *), void *data) |
152 | { | 152 | { |
@@ -173,7 +173,7 @@ void __init iowa_register_bus(struct pci_controller *phb, | |||
173 | } | 173 | } |
174 | 174 | ||
175 | /* enable IO workaround */ | 175 | /* enable IO workaround */ |
176 | void __init io_workaround_init(void) | 176 | void __devinit io_workaround_init(void) |
177 | { | 177 | { |
178 | static int io_workaround_inited; | 178 | static int io_workaround_inited; |
179 | 179 | ||
diff --git a/arch/powerpc/platforms/cell/io-workarounds.h b/arch/powerpc/platforms/cell/io-workarounds.h index 79d8ed3d510f..6efc7782ebf2 100644 --- a/arch/powerpc/platforms/cell/io-workarounds.h +++ b/arch/powerpc/platforms/cell/io-workarounds.h | |||
@@ -31,9 +31,9 @@ struct iowa_bus { | |||
31 | void *private; | 31 | void *private; |
32 | }; | 32 | }; |
33 | 33 | ||
34 | void __init io_workaround_init(void); | 34 | void __devinit io_workaround_init(void); |
35 | void __init iowa_register_bus(struct pci_controller *, struct ppc_pci_io *, | 35 | void __devinit iowa_register_bus(struct pci_controller *, struct ppc_pci_io *, |
36 | int (*)(struct iowa_bus *, void *), void *); | 36 | int (*)(struct iowa_bus *, void *), void *); |
37 | struct iowa_bus *iowa_mem_find_bus(const PCI_IO_ADDR); | 37 | struct iowa_bus *iowa_mem_find_bus(const PCI_IO_ADDR); |
38 | struct iowa_bus *iowa_pio_find_bus(unsigned long); | 38 | struct iowa_bus *iowa_pio_find_bus(unsigned long); |
39 | 39 | ||
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c index 80911a373400..c81341ff75b5 100644 --- a/arch/powerpc/platforms/cell/spufs/file.c +++ b/arch/powerpc/platforms/cell/spufs/file.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/marker.h> | 32 | #include <linux/marker.h> |
33 | 33 | ||
34 | #include <asm/io.h> | 34 | #include <asm/io.h> |
35 | #include <asm/time.h> | ||
35 | #include <asm/spu.h> | 36 | #include <asm/spu.h> |
36 | #include <asm/spu_info.h> | 37 | #include <asm/spu_info.h> |
37 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c index 2e411f23462b..745dd51ec37f 100644 --- a/arch/powerpc/platforms/cell/spufs/sched.c +++ b/arch/powerpc/platforms/cell/spufs/sched.c | |||
@@ -659,7 +659,7 @@ static struct spu *find_victim(struct spu_context *ctx) | |||
659 | 659 | ||
660 | victim->stats.invol_ctx_switch++; | 660 | victim->stats.invol_ctx_switch++; |
661 | spu->stats.invol_ctx_switch++; | 661 | spu->stats.invol_ctx_switch++; |
662 | if (test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags)) | 662 | if (test_bit(SPU_SCHED_SPU_RUN, &victim->sched_flags)) |
663 | spu_add_to_rq(victim); | 663 | spu_add_to_rq(victim); |
664 | 664 | ||
665 | mutex_unlock(&victim->state_mutex); | 665 | mutex_unlock(&victim->state_mutex); |
diff --git a/arch/powerpc/platforms/pasemi/misc.c b/arch/powerpc/platforms/pasemi/misc.c index ded7d152d00c..e0ab299763c1 100644 --- a/arch/powerpc/platforms/pasemi/misc.c +++ b/arch/powerpc/platforms/pasemi/misc.c | |||
@@ -24,12 +24,11 @@ | |||
24 | */ | 24 | */ |
25 | struct i2c_driver_device { | 25 | struct i2c_driver_device { |
26 | char *of_device; | 26 | char *of_device; |
27 | char *i2c_driver; | ||
28 | char *i2c_type; | 27 | char *i2c_type; |
29 | }; | 28 | }; |
30 | 29 | ||
31 | static struct i2c_driver_device i2c_devices[] __initdata = { | 30 | static struct i2c_driver_device i2c_devices[] __initdata = { |
32 | {"dallas,ds1338", "rtc-ds1307", "ds1338"}, | 31 | {"dallas,ds1338", "ds1338"}, |
33 | }; | 32 | }; |
34 | 33 | ||
35 | static int __init find_i2c_driver(struct device_node *node, | 34 | static int __init find_i2c_driver(struct device_node *node, |
@@ -40,9 +39,7 @@ static int __init find_i2c_driver(struct device_node *node, | |||
40 | for (i = 0; i < ARRAY_SIZE(i2c_devices); i++) { | 39 | for (i = 0; i < ARRAY_SIZE(i2c_devices); i++) { |
41 | if (!of_device_is_compatible(node, i2c_devices[i].of_device)) | 40 | if (!of_device_is_compatible(node, i2c_devices[i].of_device)) |
42 | continue; | 41 | continue; |
43 | if (strlcpy(info->driver_name, i2c_devices[i].i2c_driver, | 42 | if (strlcpy(info->type, i2c_devices[i].i2c_type, |
44 | KOBJ_NAME_LEN) >= KOBJ_NAME_LEN || | ||
45 | strlcpy(info->type, i2c_devices[i].i2c_type, | ||
46 | I2C_NAME_SIZE) >= I2C_NAME_SIZE) | 43 | I2C_NAME_SIZE) >= I2C_NAME_SIZE) |
47 | return -ENOMEM; | 44 | return -ENOMEM; |
48 | return 0; | 45 | return 0; |
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c index 5b3fb2b321ab..3a58ffabccd9 100644 --- a/arch/powerpc/platforms/ps3/mm.c +++ b/arch/powerpc/platforms/ps3/mm.c | |||
@@ -317,6 +317,9 @@ static int __init ps3_mm_add_memory(void) | |||
317 | return result; | 317 | return result; |
318 | } | 318 | } |
319 | 319 | ||
320 | lmb_add(start_addr, map.r1.size); | ||
321 | lmb_analyze(); | ||
322 | |||
320 | result = online_pages(start_pfn, nr_pages); | 323 | result = online_pages(start_pfn, nr_pages); |
321 | 324 | ||
322 | if (result) | 325 | if (result) |
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 8619f2a3f1f6..7680001676a6 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -1331,6 +1331,9 @@ void mpic_irq_set_priority(unsigned int irq, unsigned int pri) | |||
1331 | unsigned long flags; | 1331 | unsigned long flags; |
1332 | u32 reg; | 1332 | u32 reg; |
1333 | 1333 | ||
1334 | if (!mpic) | ||
1335 | return; | ||
1336 | |||
1334 | spin_lock_irqsave(&mpic_lock, flags); | 1337 | spin_lock_irqsave(&mpic_lock, flags); |
1335 | if (is_ipi) { | 1338 | if (is_ipi) { |
1336 | reg = mpic_ipi_read(src - mpic->ipi_vecs[0]) & | 1339 | reg = mpic_ipi_read(src - mpic->ipi_vecs[0]) & |
@@ -1346,23 +1349,6 @@ void mpic_irq_set_priority(unsigned int irq, unsigned int pri) | |||
1346 | spin_unlock_irqrestore(&mpic_lock, flags); | 1349 | spin_unlock_irqrestore(&mpic_lock, flags); |
1347 | } | 1350 | } |
1348 | 1351 | ||
1349 | unsigned int mpic_irq_get_priority(unsigned int irq) | ||
1350 | { | ||
1351 | unsigned int is_ipi; | ||
1352 | struct mpic *mpic = mpic_find(irq, &is_ipi); | ||
1353 | unsigned int src = mpic_irq_to_hw(irq); | ||
1354 | unsigned long flags; | ||
1355 | u32 reg; | ||
1356 | |||
1357 | spin_lock_irqsave(&mpic_lock, flags); | ||
1358 | if (is_ipi) | ||
1359 | reg = mpic_ipi_read(src = mpic->ipi_vecs[0]); | ||
1360 | else | ||
1361 | reg = mpic_irq_read(src, MPIC_INFO(IRQ_VECTOR_PRI)); | ||
1362 | spin_unlock_irqrestore(&mpic_lock, flags); | ||
1363 | return (reg & MPIC_VECPRI_PRIORITY_MASK) >> MPIC_VECPRI_PRIORITY_SHIFT; | ||
1364 | } | ||
1365 | |||
1366 | void mpic_setup_this_cpu(void) | 1352 | void mpic_setup_this_cpu(void) |
1367 | { | 1353 | { |
1368 | #ifdef CONFIG_SMP | 1354 | #ifdef CONFIG_SMP |
diff --git a/arch/ppc/kernel/ppc_ksyms.c b/arch/ppc/kernel/ppc_ksyms.c index 602c268fc8a2..5d529bcbeee9 100644 --- a/arch/ppc/kernel/ppc_ksyms.c +++ b/arch/ppc/kernel/ppc_ksyms.c | |||
@@ -60,8 +60,10 @@ long long __ashrdi3(long long, int); | |||
60 | long long __ashldi3(long long, int); | 60 | long long __ashldi3(long long, int); |
61 | long long __lshrdi3(long long, int); | 61 | long long __lshrdi3(long long, int); |
62 | 62 | ||
63 | EXPORT_SYMBOL(empty_zero_page); | ||
63 | EXPORT_SYMBOL(clear_pages); | 64 | EXPORT_SYMBOL(clear_pages); |
64 | EXPORT_SYMBOL(clear_user_page); | 65 | EXPORT_SYMBOL(clear_user_page); |
66 | EXPORT_SYMBOL(copy_page); | ||
65 | EXPORT_SYMBOL(transfer_to_handler); | 67 | EXPORT_SYMBOL(transfer_to_handler); |
66 | EXPORT_SYMBOL(do_IRQ); | 68 | EXPORT_SYMBOL(do_IRQ); |
67 | EXPORT_SYMBOL(machine_check_exception); | 69 | EXPORT_SYMBOL(machine_check_exception); |
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig index 1d035082e78e..93acb3c1859d 100644 --- a/arch/s390/Kconfig +++ b/arch/s390/Kconfig | |||
@@ -308,6 +308,9 @@ config ARCH_SPARSEMEM_ENABLE | |||
308 | config ARCH_SPARSEMEM_DEFAULT | 308 | config ARCH_SPARSEMEM_DEFAULT |
309 | def_bool y | 309 | def_bool y |
310 | 310 | ||
311 | config ARCH_SELECT_MEMORY_MODEL | ||
312 | def_bool y | ||
313 | |||
311 | source "mm/Kconfig" | 314 | source "mm/Kconfig" |
312 | 315 | ||
313 | comment "I/O subsystem configuration" | 316 | comment "I/O subsystem configuration" |
diff --git a/arch/s390/appldata/appldata_base.c b/arch/s390/appldata/appldata_base.c index 655d52543e2d..ad40729bec3d 100644 --- a/arch/s390/appldata/appldata_base.c +++ b/arch/s390/appldata/appldata_base.c | |||
@@ -130,6 +130,7 @@ static void appldata_work_fn(struct work_struct *work) | |||
130 | 130 | ||
131 | P_DEBUG(" -= Work Queue =-\n"); | 131 | P_DEBUG(" -= Work Queue =-\n"); |
132 | i = 0; | 132 | i = 0; |
133 | get_online_cpus(); | ||
133 | spin_lock(&appldata_ops_lock); | 134 | spin_lock(&appldata_ops_lock); |
134 | list_for_each(lh, &appldata_ops_list) { | 135 | list_for_each(lh, &appldata_ops_list) { |
135 | ops = list_entry(lh, struct appldata_ops, list); | 136 | ops = list_entry(lh, struct appldata_ops, list); |
@@ -140,6 +141,7 @@ static void appldata_work_fn(struct work_struct *work) | |||
140 | } | 141 | } |
141 | } | 142 | } |
142 | spin_unlock(&appldata_ops_lock); | 143 | spin_unlock(&appldata_ops_lock); |
144 | put_online_cpus(); | ||
143 | } | 145 | } |
144 | 146 | ||
145 | /* | 147 | /* |
@@ -266,12 +268,14 @@ appldata_timer_handler(ctl_table *ctl, int write, struct file *filp, | |||
266 | len = *lenp; | 268 | len = *lenp; |
267 | if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len)) | 269 | if (copy_from_user(buf, buffer, len > sizeof(buf) ? sizeof(buf) : len)) |
268 | return -EFAULT; | 270 | return -EFAULT; |
271 | get_online_cpus(); | ||
269 | spin_lock(&appldata_timer_lock); | 272 | spin_lock(&appldata_timer_lock); |
270 | if (buf[0] == '1') | 273 | if (buf[0] == '1') |
271 | __appldata_vtimer_setup(APPLDATA_ADD_TIMER); | 274 | __appldata_vtimer_setup(APPLDATA_ADD_TIMER); |
272 | else if (buf[0] == '0') | 275 | else if (buf[0] == '0') |
273 | __appldata_vtimer_setup(APPLDATA_DEL_TIMER); | 276 | __appldata_vtimer_setup(APPLDATA_DEL_TIMER); |
274 | spin_unlock(&appldata_timer_lock); | 277 | spin_unlock(&appldata_timer_lock); |
278 | put_online_cpus(); | ||
275 | out: | 279 | out: |
276 | *lenp = len; | 280 | *lenp = len; |
277 | *ppos += len; | 281 | *ppos += len; |
@@ -314,10 +318,12 @@ appldata_interval_handler(ctl_table *ctl, int write, struct file *filp, | |||
314 | return -EINVAL; | 318 | return -EINVAL; |
315 | } | 319 | } |
316 | 320 | ||
321 | get_online_cpus(); | ||
317 | spin_lock(&appldata_timer_lock); | 322 | spin_lock(&appldata_timer_lock); |
318 | appldata_interval = interval; | 323 | appldata_interval = interval; |
319 | __appldata_vtimer_setup(APPLDATA_MOD_TIMER); | 324 | __appldata_vtimer_setup(APPLDATA_MOD_TIMER); |
320 | spin_unlock(&appldata_timer_lock); | 325 | spin_unlock(&appldata_timer_lock); |
326 | put_online_cpus(); | ||
321 | 327 | ||
322 | P_INFO("Monitoring CPU interval set to %u milliseconds.\n", | 328 | P_INFO("Monitoring CPU interval set to %u milliseconds.\n", |
323 | interval); | 329 | interval); |
@@ -556,8 +562,10 @@ static int __init appldata_init(void) | |||
556 | return -ENOMEM; | 562 | return -ENOMEM; |
557 | } | 563 | } |
558 | 564 | ||
565 | get_online_cpus(); | ||
559 | for_each_online_cpu(i) | 566 | for_each_online_cpu(i) |
560 | appldata_online_cpu(i); | 567 | appldata_online_cpu(i); |
568 | put_online_cpus(); | ||
561 | 569 | ||
562 | /* Register cpu hotplug notifier */ | 570 | /* Register cpu hotplug notifier */ |
563 | register_hotcpu_notifier(&appldata_nb); | 571 | register_hotcpu_notifier(&appldata_nb); |
diff --git a/arch/s390/defconfig b/arch/s390/defconfig index aa341d0ea1e6..c5cdb975d590 100644 --- a/arch/s390/defconfig +++ b/arch/s390/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25 | 3 | # Linux kernel version: 2.6.26-rc4 |
4 | # Wed Apr 30 11:07:45 2008 | 4 | # Fri May 30 09:49:33 2008 |
5 | # | 5 | # |
6 | CONFIG_SCHED_MC=y | 6 | CONFIG_SCHED_MC=y |
7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
@@ -103,6 +103,7 @@ CONFIG_RT_MUTEXES=y | |||
103 | # CONFIG_TINY_SHMEM is not set | 103 | # CONFIG_TINY_SHMEM is not set |
104 | CONFIG_BASE_SMALL=0 | 104 | CONFIG_BASE_SMALL=0 |
105 | CONFIG_MODULES=y | 105 | CONFIG_MODULES=y |
106 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
106 | CONFIG_MODULE_UNLOAD=y | 107 | CONFIG_MODULE_UNLOAD=y |
107 | # CONFIG_MODULE_FORCE_UNLOAD is not set | 108 | # CONFIG_MODULE_FORCE_UNLOAD is not set |
108 | CONFIG_MODVERSIONS=y | 109 | CONFIG_MODVERSIONS=y |
@@ -173,6 +174,7 @@ CONFIG_PREEMPT=y | |||
173 | # CONFIG_PREEMPT_RCU is not set | 174 | # CONFIG_PREEMPT_RCU is not set |
174 | CONFIG_ARCH_SPARSEMEM_ENABLE=y | 175 | CONFIG_ARCH_SPARSEMEM_ENABLE=y |
175 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y | 176 | CONFIG_ARCH_SPARSEMEM_DEFAULT=y |
177 | CONFIG_ARCH_SELECT_MEMORY_MODEL=y | ||
176 | CONFIG_SELECT_MEMORY_MODEL=y | 178 | CONFIG_SELECT_MEMORY_MODEL=y |
177 | # CONFIG_FLATMEM_MANUAL is not set | 179 | # CONFIG_FLATMEM_MANUAL is not set |
178 | # CONFIG_DISCONTIGMEM_MANUAL is not set | 180 | # CONFIG_DISCONTIGMEM_MANUAL is not set |
@@ -210,6 +212,7 @@ CONFIG_FORCE_MAX_ZONEORDER=9 | |||
210 | CONFIG_PFAULT=y | 212 | CONFIG_PFAULT=y |
211 | # CONFIG_SHARED_KERNEL is not set | 213 | # CONFIG_SHARED_KERNEL is not set |
212 | # CONFIG_CMM is not set | 214 | # CONFIG_CMM is not set |
215 | # CONFIG_PAGE_STATES is not set | ||
213 | CONFIG_VIRT_TIMER=y | 216 | CONFIG_VIRT_TIMER=y |
214 | CONFIG_VIRT_CPU_ACCOUNTING=y | 217 | CONFIG_VIRT_CPU_ACCOUNTING=y |
215 | # CONFIG_APPLDATA_BASE is not set | 218 | # CONFIG_APPLDATA_BASE is not set |
@@ -620,6 +623,7 @@ CONFIG_S390_VMUR=m | |||
620 | # | 623 | # |
621 | # CONFIG_MEMSTICK is not set | 624 | # CONFIG_MEMSTICK is not set |
622 | # CONFIG_NEW_LEDS is not set | 625 | # CONFIG_NEW_LEDS is not set |
626 | CONFIG_ACCESSIBILITY=y | ||
623 | 627 | ||
624 | # | 628 | # |
625 | # File systems | 629 | # File systems |
@@ -754,11 +758,12 @@ CONFIG_FRAME_WARN=2048 | |||
754 | CONFIG_MAGIC_SYSRQ=y | 758 | CONFIG_MAGIC_SYSRQ=y |
755 | # CONFIG_UNUSED_SYMBOLS is not set | 759 | # CONFIG_UNUSED_SYMBOLS is not set |
756 | CONFIG_DEBUG_FS=y | 760 | CONFIG_DEBUG_FS=y |
757 | CONFIG_HEADERS_CHECK=y | 761 | # CONFIG_HEADERS_CHECK is not set |
758 | CONFIG_DEBUG_KERNEL=y | 762 | CONFIG_DEBUG_KERNEL=y |
759 | # CONFIG_SCHED_DEBUG is not set | 763 | # CONFIG_SCHED_DEBUG is not set |
760 | # CONFIG_SCHEDSTATS is not set | 764 | # CONFIG_SCHEDSTATS is not set |
761 | # CONFIG_TIMER_STATS is not set | 765 | # CONFIG_TIMER_STATS is not set |
766 | # CONFIG_DEBUG_OBJECTS is not set | ||
762 | # CONFIG_DEBUG_SLAB is not set | 767 | # CONFIG_DEBUG_SLAB is not set |
763 | CONFIG_DEBUG_PREEMPT=y | 768 | CONFIG_DEBUG_PREEMPT=y |
764 | # CONFIG_DEBUG_RT_MUTEXES is not set | 769 | # CONFIG_DEBUG_RT_MUTEXES is not set |
diff --git a/arch/s390/kernel/debug.c b/arch/s390/kernel/debug.c index dff0568e67ec..c93d1296cc0a 100644 --- a/arch/s390/kernel/debug.c +++ b/arch/s390/kernel/debug.c | |||
@@ -71,7 +71,7 @@ static ssize_t debug_input(struct file *file, const char __user *user_buf, | |||
71 | size_t user_len, loff_t * offset); | 71 | size_t user_len, loff_t * offset); |
72 | static int debug_open(struct inode *inode, struct file *file); | 72 | static int debug_open(struct inode *inode, struct file *file); |
73 | static int debug_close(struct inode *inode, struct file *file); | 73 | static int debug_close(struct inode *inode, struct file *file); |
74 | static debug_info_t* debug_info_create(char *name, int pages_per_area, | 74 | static debug_info_t *debug_info_create(const char *name, int pages_per_area, |
75 | int nr_areas, int buf_size, mode_t mode); | 75 | int nr_areas, int buf_size, mode_t mode); |
76 | static void debug_info_get(debug_info_t *); | 76 | static void debug_info_get(debug_info_t *); |
77 | static void debug_info_put(debug_info_t *); | 77 | static void debug_info_put(debug_info_t *); |
@@ -234,8 +234,8 @@ fail_malloc_areas: | |||
234 | */ | 234 | */ |
235 | 235 | ||
236 | static debug_info_t* | 236 | static debug_info_t* |
237 | debug_info_alloc(char *name, int pages_per_area, int nr_areas, int buf_size, | 237 | debug_info_alloc(const char *name, int pages_per_area, int nr_areas, |
238 | int level, int mode) | 238 | int buf_size, int level, int mode) |
239 | { | 239 | { |
240 | debug_info_t* rc; | 240 | debug_info_t* rc; |
241 | 241 | ||
@@ -326,8 +326,8 @@ debug_info_free(debug_info_t* db_info){ | |||
326 | */ | 326 | */ |
327 | 327 | ||
328 | static debug_info_t* | 328 | static debug_info_t* |
329 | debug_info_create(char *name, int pages_per_area, int nr_areas, int buf_size, | 329 | debug_info_create(const char *name, int pages_per_area, int nr_areas, |
330 | mode_t mode) | 330 | int buf_size, mode_t mode) |
331 | { | 331 | { |
332 | debug_info_t* rc; | 332 | debug_info_t* rc; |
333 | 333 | ||
@@ -684,9 +684,9 @@ debug_close(struct inode *inode, struct file *file) | |||
684 | * - Returns handle for debug area | 684 | * - Returns handle for debug area |
685 | */ | 685 | */ |
686 | 686 | ||
687 | debug_info_t *debug_register_mode(char *name, int pages_per_area, int nr_areas, | 687 | debug_info_t *debug_register_mode(const char *name, int pages_per_area, |
688 | int buf_size, mode_t mode, uid_t uid, | 688 | int nr_areas, int buf_size, mode_t mode, |
689 | gid_t gid) | 689 | uid_t uid, gid_t gid) |
690 | { | 690 | { |
691 | debug_info_t *rc = NULL; | 691 | debug_info_t *rc = NULL; |
692 | 692 | ||
@@ -722,8 +722,8 @@ EXPORT_SYMBOL(debug_register_mode); | |||
722 | * - returns handle for debug area | 722 | * - returns handle for debug area |
723 | */ | 723 | */ |
724 | 724 | ||
725 | debug_info_t *debug_register(char *name, int pages_per_area, int nr_areas, | 725 | debug_info_t *debug_register(const char *name, int pages_per_area, |
726 | int buf_size) | 726 | int nr_areas, int buf_size) |
727 | { | 727 | { |
728 | return debug_register_mode(name, pages_per_area, nr_areas, buf_size, | 728 | return debug_register_mode(name, pages_per_area, nr_areas, buf_size, |
729 | S_IRUSR | S_IWUSR, 0, 0); | 729 | S_IRUSR | S_IWUSR, 0, 0); |
diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c index c14a336f6300..d2f270c995d9 100644 --- a/arch/s390/kernel/dis.c +++ b/arch/s390/kernel/dis.c | |||
@@ -208,7 +208,7 @@ static const unsigned char formats[][7] = { | |||
208 | [INSTR_RRF_F0FF] = { 0xff, F_16,F_24,F_28,0,0,0 }, /* e.g. madbr */ | 208 | [INSTR_RRF_F0FF] = { 0xff, F_16,F_24,F_28,0,0,0 }, /* e.g. madbr */ |
209 | [INSTR_RRF_FUFF] = { 0xff, F_24,F_16,F_28,U4_20,0,0 },/* e.g. didbr */ | 209 | [INSTR_RRF_FUFF] = { 0xff, F_24,F_16,F_28,U4_20,0,0 },/* e.g. didbr */ |
210 | [INSTR_RRF_RURR] = { 0xff, R_24,R_28,R_16,U4_20,0,0 },/* e.g. .insn */ | 210 | [INSTR_RRF_RURR] = { 0xff, R_24,R_28,R_16,U4_20,0,0 },/* e.g. .insn */ |
211 | [INSTR_RRF_R0RR] = { 0xff, R_24,R_28,R_16,0,0,0 }, /* e.g. idte */ | 211 | [INSTR_RRF_R0RR] = { 0xff, R_24,R_16,R_28,0,0,0 }, /* e.g. idte */ |
212 | [INSTR_RRF_U0FF] = { 0xff, F_24,U4_16,F_28,0,0,0 }, /* e.g. fixr */ | 212 | [INSTR_RRF_U0FF] = { 0xff, F_24,U4_16,F_28,0,0,0 }, /* e.g. fixr */ |
213 | [INSTR_RRF_U0RF] = { 0xff, R_24,U4_16,F_28,0,0,0 }, /* e.g. cfebr */ | 213 | [INSTR_RRF_U0RF] = { 0xff, R_24,U4_16,F_28,0,0,0 }, /* e.g. cfebr */ |
214 | [INSTR_RRF_M0RR] = { 0xff, R_24,R_28,M_16,0,0,0 }, /* e.g. sske */ | 214 | [INSTR_RRF_M0RR] = { 0xff, R_24,R_28,M_16,0,0,0 }, /* e.g. sske */ |
diff --git a/arch/s390/kernel/init_task.c b/arch/s390/kernel/init_task.c index d494161b05b4..7ad003969251 100644 --- a/arch/s390/kernel/init_task.c +++ b/arch/s390/kernel/init_task.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
18 | 18 | ||
19 | static struct fs_struct init_fs = INIT_FS; | 19 | static struct fs_struct init_fs = INIT_FS; |
20 | static struct files_struct init_files = INIT_FILES; | ||
21 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 20 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
22 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 21 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
23 | struct mm_struct init_mm = INIT_MM(init_mm); | 22 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/s390/kernel/irq.c b/arch/s390/kernel/irq.c index c59a86dca584..e7c5bfb7c755 100644 --- a/arch/s390/kernel/irq.c +++ b/arch/s390/kernel/irq.c | |||
@@ -25,6 +25,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
25 | static const char *intrclass_names[] = { "EXT", "I/O", }; | 25 | static const char *intrclass_names[] = { "EXT", "I/O", }; |
26 | int i = *(loff_t *) v, j; | 26 | int i = *(loff_t *) v, j; |
27 | 27 | ||
28 | get_online_cpus(); | ||
28 | if (i == 0) { | 29 | if (i == 0) { |
29 | seq_puts(p, " "); | 30 | seq_puts(p, " "); |
30 | for_each_online_cpu(j) | 31 | for_each_online_cpu(j) |
@@ -43,7 +44,7 @@ int show_interrupts(struct seq_file *p, void *v) | |||
43 | seq_putc(p, '\n'); | 44 | seq_putc(p, '\n'); |
44 | 45 | ||
45 | } | 46 | } |
46 | 47 | put_online_cpus(); | |
47 | return 0; | 48 | return 0; |
48 | } | 49 | } |
49 | 50 | ||
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 0aeb290060d9..42b1d12ebb10 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -139,7 +139,6 @@ static void __smp_call_function_map(void (*func) (void *info), void *info, | |||
139 | if (wait) | 139 | if (wait) |
140 | data.finished = CPU_MASK_NONE; | 140 | data.finished = CPU_MASK_NONE; |
141 | 141 | ||
142 | spin_lock(&call_lock); | ||
143 | call_data = &data; | 142 | call_data = &data; |
144 | 143 | ||
145 | for_each_cpu_mask(cpu, map) | 144 | for_each_cpu_mask(cpu, map) |
@@ -151,7 +150,6 @@ static void __smp_call_function_map(void (*func) (void *info), void *info, | |||
151 | if (wait) | 150 | if (wait) |
152 | while (!cpus_equal(map, data.finished)) | 151 | while (!cpus_equal(map, data.finished)) |
153 | cpu_relax(); | 152 | cpu_relax(); |
154 | spin_unlock(&call_lock); | ||
155 | out: | 153 | out: |
156 | if (local) { | 154 | if (local) { |
157 | local_irq_disable(); | 155 | local_irq_disable(); |
@@ -177,11 +175,11 @@ int smp_call_function(void (*func) (void *info), void *info, int nonatomic, | |||
177 | { | 175 | { |
178 | cpumask_t map; | 176 | cpumask_t map; |
179 | 177 | ||
180 | preempt_disable(); | 178 | spin_lock(&call_lock); |
181 | map = cpu_online_map; | 179 | map = cpu_online_map; |
182 | cpu_clear(smp_processor_id(), map); | 180 | cpu_clear(smp_processor_id(), map); |
183 | __smp_call_function_map(func, info, nonatomic, wait, map); | 181 | __smp_call_function_map(func, info, nonatomic, wait, map); |
184 | preempt_enable(); | 182 | spin_unlock(&call_lock); |
185 | return 0; | 183 | return 0; |
186 | } | 184 | } |
187 | EXPORT_SYMBOL(smp_call_function); | 185 | EXPORT_SYMBOL(smp_call_function); |
@@ -202,10 +200,10 @@ EXPORT_SYMBOL(smp_call_function); | |||
202 | int smp_call_function_single(int cpu, void (*func) (void *info), void *info, | 200 | int smp_call_function_single(int cpu, void (*func) (void *info), void *info, |
203 | int nonatomic, int wait) | 201 | int nonatomic, int wait) |
204 | { | 202 | { |
205 | preempt_disable(); | 203 | spin_lock(&call_lock); |
206 | __smp_call_function_map(func, info, nonatomic, wait, | 204 | __smp_call_function_map(func, info, nonatomic, wait, |
207 | cpumask_of_cpu(cpu)); | 205 | cpumask_of_cpu(cpu)); |
208 | preempt_enable(); | 206 | spin_unlock(&call_lock); |
209 | return 0; | 207 | return 0; |
210 | } | 208 | } |
211 | EXPORT_SYMBOL(smp_call_function_single); | 209 | EXPORT_SYMBOL(smp_call_function_single); |
@@ -228,10 +226,10 @@ EXPORT_SYMBOL(smp_call_function_single); | |||
228 | int smp_call_function_mask(cpumask_t mask, void (*func)(void *), void *info, | 226 | int smp_call_function_mask(cpumask_t mask, void (*func)(void *), void *info, |
229 | int wait) | 227 | int wait) |
230 | { | 228 | { |
231 | preempt_disable(); | 229 | spin_lock(&call_lock); |
232 | cpu_clear(smp_processor_id(), mask); | 230 | cpu_clear(smp_processor_id(), mask); |
233 | __smp_call_function_map(func, info, 0, wait, mask); | 231 | __smp_call_function_map(func, info, 0, wait, mask); |
234 | preempt_enable(); | 232 | spin_unlock(&call_lock); |
235 | return 0; | 233 | return 0; |
236 | } | 234 | } |
237 | EXPORT_SYMBOL(smp_call_function_mask); | 235 | EXPORT_SYMBOL(smp_call_function_mask); |
@@ -592,7 +590,9 @@ int __cpuinit start_secondary(void *cpuvoid) | |||
592 | pfault_init(); | 590 | pfault_init(); |
593 | 591 | ||
594 | /* Mark this cpu as online */ | 592 | /* Mark this cpu as online */ |
593 | spin_lock(&call_lock); | ||
595 | cpu_set(smp_processor_id(), cpu_online_map); | 594 | cpu_set(smp_processor_id(), cpu_online_map); |
595 | spin_unlock(&call_lock); | ||
596 | /* Switch on interrupts */ | 596 | /* Switch on interrupts */ |
597 | local_irq_enable(); | 597 | local_irq_enable(); |
598 | /* Print info about this processor */ | 598 | /* Print info about this processor */ |
@@ -1089,7 +1089,7 @@ out: | |||
1089 | 1089 | ||
1090 | #ifdef CONFIG_HOTPLUG_CPU | 1090 | #ifdef CONFIG_HOTPLUG_CPU |
1091 | 1091 | ||
1092 | int smp_rescan_cpus(void) | 1092 | int __ref smp_rescan_cpus(void) |
1093 | { | 1093 | { |
1094 | cpumask_t newcpus; | 1094 | cpumask_t newcpus; |
1095 | int cpu; | 1095 | int cpu; |
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index 29f3a63806b9..05598649b326 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c | |||
@@ -44,37 +44,34 @@ char empty_zero_page[PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE))); | |||
44 | 44 | ||
45 | void show_mem(void) | 45 | void show_mem(void) |
46 | { | 46 | { |
47 | int i, total = 0, reserved = 0; | 47 | unsigned long i, total = 0, reserved = 0; |
48 | int shared = 0, cached = 0; | 48 | unsigned long shared = 0, cached = 0; |
49 | unsigned long flags; | ||
49 | struct page *page; | 50 | struct page *page; |
51 | pg_data_t *pgdat; | ||
50 | 52 | ||
51 | printk("Mem-info:\n"); | 53 | printk("Mem-info:\n"); |
52 | show_free_areas(); | 54 | show_free_areas(); |
53 | i = max_mapnr; | 55 | for_each_online_pgdat(pgdat) { |
54 | while (i-- > 0) { | 56 | pgdat_resize_lock(pgdat, &flags); |
55 | if (!pfn_valid(i)) | 57 | for (i = 0; i < pgdat->node_spanned_pages; i++) { |
56 | continue; | 58 | if (!pfn_valid(pgdat->node_start_pfn + i)) |
57 | page = pfn_to_page(i); | 59 | continue; |
58 | total++; | 60 | page = pfn_to_page(pgdat->node_start_pfn + i); |
59 | if (PageReserved(page)) | 61 | total++; |
60 | reserved++; | 62 | if (PageReserved(page)) |
61 | else if (PageSwapCache(page)) | 63 | reserved++; |
62 | cached++; | 64 | else if (PageSwapCache(page)) |
63 | else if (page_count(page)) | 65 | cached++; |
64 | shared += page_count(page) - 1; | 66 | else if (page_count(page)) |
67 | shared += page_count(page) - 1; | ||
68 | } | ||
69 | pgdat_resize_unlock(pgdat, &flags); | ||
65 | } | 70 | } |
66 | printk("%d pages of RAM\n", total); | 71 | printk("%ld pages of RAM\n", total); |
67 | printk("%d reserved pages\n", reserved); | 72 | printk("%ld reserved pages\n", reserved); |
68 | printk("%d pages shared\n", shared); | 73 | printk("%ld pages shared\n", shared); |
69 | printk("%d pages swap cached\n", cached); | 74 | printk("%ld pages swap cached\n", cached); |
70 | |||
71 | printk("%lu pages dirty\n", global_page_state(NR_FILE_DIRTY)); | ||
72 | printk("%lu pages writeback\n", global_page_state(NR_WRITEBACK)); | ||
73 | printk("%lu pages mapped\n", global_page_state(NR_FILE_MAPPED)); | ||
74 | printk("%lu pages slab\n", | ||
75 | global_page_state(NR_SLAB_RECLAIMABLE) + | ||
76 | global_page_state(NR_SLAB_UNRECLAIMABLE)); | ||
77 | printk("%lu pages pagetables\n", global_page_state(NR_PAGETABLE)); | ||
78 | } | 75 | } |
79 | 76 | ||
80 | /* | 77 | /* |
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c index beccacf907f3..f591188fa2c0 100644 --- a/arch/s390/mm/vmem.c +++ b/arch/s390/mm/vmem.c | |||
@@ -60,7 +60,7 @@ static inline pmd_t *vmem_pmd_alloc(void) | |||
60 | return pmd; | 60 | return pmd; |
61 | } | 61 | } |
62 | 62 | ||
63 | static pte_t __init_refok *vmem_pte_alloc(void) | 63 | static pte_t __ref *vmem_pte_alloc(void) |
64 | { | 64 | { |
65 | pte_t *pte; | 65 | pte_t *pte; |
66 | 66 | ||
@@ -221,6 +221,7 @@ int __meminit vmemmap_populate(struct page *start, unsigned long nr, int node) | |||
221 | *pt_dir = pte; | 221 | *pt_dir = pte; |
222 | } | 222 | } |
223 | } | 223 | } |
224 | memset(start, 0, nr * sizeof(struct page)); | ||
224 | ret = 0; | 225 | ret = 0; |
225 | out: | 226 | out: |
226 | flush_tlb_kernel_range(start_addr, end_addr); | 227 | flush_tlb_kernel_range(start_addr, end_addr); |
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 8a68160079a9..9a854c8e5274 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -281,7 +281,6 @@ config CPU_SUBTYPE_SH7723 | |||
281 | select CPU_SH4A | 281 | select CPU_SH4A |
282 | select CPU_SHX2 | 282 | select CPU_SHX2 |
283 | select ARCH_SPARSEMEM_ENABLE | 283 | select ARCH_SPARSEMEM_ENABLE |
284 | select SYS_SUPPORTS_NUMA | ||
285 | help | 284 | help |
286 | Select SH7723 if you have an SH-MobileR2 CPU. | 285 | Select SH7723 if you have an SH-MobileR2 CPU. |
287 | 286 | ||
diff --git a/arch/sh/boards/renesas/rts7751r2d/setup.c b/arch/sh/boards/renesas/rts7751r2d/setup.c index 452d0d6459a4..2308e8753bcd 100644 --- a/arch/sh/boards/renesas/rts7751r2d/setup.c +++ b/arch/sh/boards/renesas/rts7751r2d/setup.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/ata_platform.h> | 13 | #include <linux/ata_platform.h> |
14 | #include <linux/serial_8250.h> | ||
15 | #include <linux/sm501.h> | 14 | #include <linux/sm501.h> |
16 | #include <linux/sm501-regs.h> | 15 | #include <linux/sm501-regs.h> |
17 | #include <linux/pm.h> | 16 | #include <linux/pm.h> |
@@ -109,27 +108,6 @@ static struct platform_device heartbeat_device = { | |||
109 | .resource = heartbeat_resources, | 108 | .resource = heartbeat_resources, |
110 | }; | 109 | }; |
111 | 110 | ||
112 | static struct plat_serial8250_port uart_platform_data[] = { | ||
113 | { | ||
114 | .membase = (void __iomem *)0xb3e30000, | ||
115 | .mapbase = 0xb3e30000, | ||
116 | .iotype = UPIO_MEM, | ||
117 | .irq = IRQ_VOYAGER, | ||
118 | .flags = UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ, | ||
119 | .regshift = 2, | ||
120 | .uartclk = (9600 * 16), | ||
121 | }, | ||
122 | { 0 }, | ||
123 | }; | ||
124 | |||
125 | static struct platform_device uart_device = { | ||
126 | .name = "serial8250", | ||
127 | .id = PLAT8250_DEV_PLATFORM, | ||
128 | .dev = { | ||
129 | .platform_data = uart_platform_data, | ||
130 | }, | ||
131 | }; | ||
132 | |||
133 | static struct resource sm501_resources[] = { | 111 | static struct resource sm501_resources[] = { |
134 | [0] = { | 112 | [0] = { |
135 | .start = 0x10000000, | 113 | .start = 0x10000000, |
@@ -185,11 +163,7 @@ static struct sm501_platdata_fb sm501_fb_pdata = { | |||
185 | }; | 163 | }; |
186 | 164 | ||
187 | static struct sm501_initdata sm501_initdata = { | 165 | static struct sm501_initdata sm501_initdata = { |
188 | .gpio_high = { | 166 | .devices = SM501_USE_USB_HOST | SM501_USE_UART0, |
189 | .set = 0x00001fe0, | ||
190 | .mask = 0x0, | ||
191 | }, | ||
192 | .devices = SM501_USE_USB_HOST, | ||
193 | }; | 167 | }; |
194 | 168 | ||
195 | static struct sm501_platdata sm501_platform_data = { | 169 | static struct sm501_platdata sm501_platform_data = { |
@@ -208,7 +182,6 @@ static struct platform_device sm501_device = { | |||
208 | }; | 182 | }; |
209 | 183 | ||
210 | static struct platform_device *rts7751r2d_devices[] __initdata = { | 184 | static struct platform_device *rts7751r2d_devices[] __initdata = { |
211 | &uart_device, | ||
212 | &sm501_device, | 185 | &sm501_device, |
213 | &heartbeat_device, | 186 | &heartbeat_device, |
214 | &spi_sh_sci_device, | 187 | &spi_sh_sci_device, |
@@ -272,16 +245,6 @@ static void __init rts7751r2d_setup(char **cmdline_p) | |||
272 | 245 | ||
273 | sm501_reg = (void __iomem *)0xb3e00000 + SM501_DRAM_CONTROL; | 246 | sm501_reg = (void __iomem *)0xb3e00000 + SM501_DRAM_CONTROL; |
274 | writel(readl(sm501_reg) | 0x00f107c0, sm501_reg); | 247 | writel(readl(sm501_reg) | 0x00f107c0, sm501_reg); |
275 | |||
276 | /* | ||
277 | * Power Mode Gate - Enable UART0 | ||
278 | */ | ||
279 | |||
280 | sm501_reg = (void __iomem *)0xb3e00000 + SM501_POWER_MODE_0_GATE; | ||
281 | writel(readl(sm501_reg) | (1 << SM501_GATE_UART0), sm501_reg); | ||
282 | |||
283 | sm501_reg = (void __iomem *)0xb3e00000 + SM501_POWER_MODE_1_GATE; | ||
284 | writel(readl(sm501_reg) | (1 << SM501_GATE_UART0), sm501_reg); | ||
285 | } | 248 | } |
286 | 249 | ||
287 | /* | 250 | /* |
diff --git a/arch/sh/configs/migor_defconfig b/arch/sh/configs/migor_defconfig index ee5900817f8f..287408b2ace6 100644 --- a/arch/sh/configs/migor_defconfig +++ b/arch/sh/configs/migor_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24 | 3 | # Linux kernel version: 2.6.26-rc3 |
4 | # Wed Feb 6 21:52:20 2008 | 4 | # Thu May 22 14:30:07 2008 |
5 | # | 5 | # |
6 | CONFIG_SUPERH=y | 6 | CONFIG_SUPERH=y |
7 | CONFIG_SUPERH32=y | 7 | CONFIG_SUPERH32=y |
@@ -20,6 +20,7 @@ CONFIG_LOCKDEP_SUPPORT=y | |||
20 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | 20 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set |
21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
22 | CONFIG_ARCH_NO_VIRT_TO_BUS=y | 22 | CONFIG_ARCH_NO_VIRT_TO_BUS=y |
23 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
23 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 24 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
24 | 25 | ||
25 | # | 26 | # |
@@ -36,18 +37,16 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
36 | # CONFIG_POSIX_MQUEUE is not set | 37 | # CONFIG_POSIX_MQUEUE is not set |
37 | # CONFIG_BSD_PROCESS_ACCT is not set | 38 | # CONFIG_BSD_PROCESS_ACCT is not set |
38 | # CONFIG_TASKSTATS is not set | 39 | # CONFIG_TASKSTATS is not set |
39 | # CONFIG_USER_NS is not set | ||
40 | # CONFIG_PID_NS is not set | ||
41 | # CONFIG_AUDIT is not set | 40 | # CONFIG_AUDIT is not set |
42 | CONFIG_IKCONFIG=y | 41 | CONFIG_IKCONFIG=y |
43 | CONFIG_IKCONFIG_PROC=y | 42 | CONFIG_IKCONFIG_PROC=y |
44 | CONFIG_LOG_BUF_SHIFT=14 | 43 | CONFIG_LOG_BUF_SHIFT=14 |
45 | # CONFIG_CGROUPS is not set | 44 | # CONFIG_CGROUPS is not set |
46 | CONFIG_FAIR_GROUP_SCHED=y | 45 | # CONFIG_GROUP_SCHED is not set |
47 | CONFIG_FAIR_USER_SCHED=y | ||
48 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
49 | CONFIG_SYSFS_DEPRECATED=y | 46 | CONFIG_SYSFS_DEPRECATED=y |
47 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
50 | # CONFIG_RELAY is not set | 48 | # CONFIG_RELAY is not set |
49 | # CONFIG_NAMESPACES is not set | ||
51 | CONFIG_BLK_DEV_INITRD=y | 50 | CONFIG_BLK_DEV_INITRD=y |
52 | CONFIG_INITRAMFS_SOURCE="" | 51 | CONFIG_INITRAMFS_SOURCE="" |
53 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 52 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
@@ -61,11 +60,13 @@ CONFIG_HOTPLUG=y | |||
61 | CONFIG_PRINTK=y | 60 | CONFIG_PRINTK=y |
62 | CONFIG_BUG=y | 61 | CONFIG_BUG=y |
63 | CONFIG_ELF_CORE=y | 62 | CONFIG_ELF_CORE=y |
63 | CONFIG_COMPAT_BRK=y | ||
64 | CONFIG_BASE_FULL=y | 64 | CONFIG_BASE_FULL=y |
65 | CONFIG_FUTEX=y | 65 | CONFIG_FUTEX=y |
66 | CONFIG_ANON_INODES=y | 66 | CONFIG_ANON_INODES=y |
67 | CONFIG_EPOLL=y | 67 | CONFIG_EPOLL=y |
68 | CONFIG_SIGNALFD=y | 68 | CONFIG_SIGNALFD=y |
69 | CONFIG_TIMERFD=y | ||
69 | CONFIG_EVENTFD=y | 70 | CONFIG_EVENTFD=y |
70 | CONFIG_SHMEM=y | 71 | CONFIG_SHMEM=y |
71 | CONFIG_VM_EVENT_COUNTERS=y | 72 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -77,11 +78,15 @@ CONFIG_PROFILING=y | |||
77 | CONFIG_OPROFILE=y | 78 | CONFIG_OPROFILE=y |
78 | CONFIG_HAVE_OPROFILE=y | 79 | CONFIG_HAVE_OPROFILE=y |
79 | # CONFIG_HAVE_KPROBES is not set | 80 | # CONFIG_HAVE_KPROBES is not set |
81 | # CONFIG_HAVE_KRETPROBES is not set | ||
82 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
83 | CONFIG_PROC_PAGE_MONITOR=y | ||
80 | CONFIG_SLABINFO=y | 84 | CONFIG_SLABINFO=y |
81 | CONFIG_RT_MUTEXES=y | 85 | CONFIG_RT_MUTEXES=y |
82 | # CONFIG_TINY_SHMEM is not set | 86 | # CONFIG_TINY_SHMEM is not set |
83 | CONFIG_BASE_SMALL=0 | 87 | CONFIG_BASE_SMALL=0 |
84 | CONFIG_MODULES=y | 88 | CONFIG_MODULES=y |
89 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
85 | # CONFIG_MODULE_UNLOAD is not set | 90 | # CONFIG_MODULE_UNLOAD is not set |
86 | # CONFIG_MODVERSIONS is not set | 91 | # CONFIG_MODVERSIONS is not set |
87 | # CONFIG_MODULE_SRCVERSION_ALL is not set | 92 | # CONFIG_MODULE_SRCVERSION_ALL is not set |
@@ -105,7 +110,6 @@ CONFIG_DEFAULT_AS=y | |||
105 | # CONFIG_DEFAULT_NOOP is not set | 110 | # CONFIG_DEFAULT_NOOP is not set |
106 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 111 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
107 | CONFIG_CLASSIC_RCU=y | 112 | CONFIG_CLASSIC_RCU=y |
108 | # CONFIG_PREEMPT_RCU is not set | ||
109 | 113 | ||
110 | # | 114 | # |
111 | # System type | 115 | # System type |
@@ -118,6 +122,7 @@ CONFIG_CPU_SHX2=y | |||
118 | # CONFIG_CPU_SUBTYPE_SH7203 is not set | 122 | # CONFIG_CPU_SUBTYPE_SH7203 is not set |
119 | # CONFIG_CPU_SUBTYPE_SH7206 is not set | 123 | # CONFIG_CPU_SUBTYPE_SH7206 is not set |
120 | # CONFIG_CPU_SUBTYPE_SH7263 is not set | 124 | # CONFIG_CPU_SUBTYPE_SH7263 is not set |
125 | # CONFIG_CPU_SUBTYPE_MXG is not set | ||
121 | # CONFIG_CPU_SUBTYPE_SH7705 is not set | 126 | # CONFIG_CPU_SUBTYPE_SH7705 is not set |
122 | # CONFIG_CPU_SUBTYPE_SH7706 is not set | 127 | # CONFIG_CPU_SUBTYPE_SH7706 is not set |
123 | # CONFIG_CPU_SUBTYPE_SH7707 is not set | 128 | # CONFIG_CPU_SUBTYPE_SH7707 is not set |
@@ -135,6 +140,7 @@ CONFIG_CPU_SHX2=y | |||
135 | # CONFIG_CPU_SUBTYPE_SH7751R is not set | 140 | # CONFIG_CPU_SUBTYPE_SH7751R is not set |
136 | # CONFIG_CPU_SUBTYPE_SH7760 is not set | 141 | # CONFIG_CPU_SUBTYPE_SH7760 is not set |
137 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set | 142 | # CONFIG_CPU_SUBTYPE_SH4_202 is not set |
143 | # CONFIG_CPU_SUBTYPE_SH7723 is not set | ||
138 | # CONFIG_CPU_SUBTYPE_SH7763 is not set | 144 | # CONFIG_CPU_SUBTYPE_SH7763 is not set |
139 | # CONFIG_CPU_SUBTYPE_SH7770 is not set | 145 | # CONFIG_CPU_SUBTYPE_SH7770 is not set |
140 | # CONFIG_CPU_SUBTYPE_SH7780 is not set | 146 | # CONFIG_CPU_SUBTYPE_SH7780 is not set |
@@ -142,6 +148,7 @@ CONFIG_CPU_SHX2=y | |||
142 | # CONFIG_CPU_SUBTYPE_SHX3 is not set | 148 | # CONFIG_CPU_SUBTYPE_SHX3 is not set |
143 | # CONFIG_CPU_SUBTYPE_SH7343 is not set | 149 | # CONFIG_CPU_SUBTYPE_SH7343 is not set |
144 | CONFIG_CPU_SUBTYPE_SH7722=y | 150 | CONFIG_CPU_SUBTYPE_SH7722=y |
151 | # CONFIG_CPU_SUBTYPE_SH7366 is not set | ||
145 | # CONFIG_CPU_SUBTYPE_SH5_101 is not set | 152 | # CONFIG_CPU_SUBTYPE_SH5_101 is not set |
146 | # CONFIG_CPU_SUBTYPE_SH5_103 is not set | 153 | # CONFIG_CPU_SUBTYPE_SH5_103 is not set |
147 | 154 | ||
@@ -255,7 +262,6 @@ CONFIG_HZ=250 | |||
255 | CONFIG_PREEMPT_NONE=y | 262 | CONFIG_PREEMPT_NONE=y |
256 | # CONFIG_PREEMPT_VOLUNTARY is not set | 263 | # CONFIG_PREEMPT_VOLUNTARY is not set |
257 | # CONFIG_PREEMPT is not set | 264 | # CONFIG_PREEMPT is not set |
258 | CONFIG_RCU_TRACE=y | ||
259 | CONFIG_GUSA=y | 265 | CONFIG_GUSA=y |
260 | 266 | ||
261 | # | 267 | # |
@@ -323,8 +329,6 @@ CONFIG_TCP_CONG_CUBIC=y | |||
323 | CONFIG_DEFAULT_TCP_CONG="cubic" | 329 | CONFIG_DEFAULT_TCP_CONG="cubic" |
324 | # CONFIG_TCP_MD5SIG is not set | 330 | # CONFIG_TCP_MD5SIG is not set |
325 | # CONFIG_IPV6 is not set | 331 | # CONFIG_IPV6 is not set |
326 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
327 | # CONFIG_INET6_TUNNEL is not set | ||
328 | # CONFIG_NETWORK_SECMARK is not set | 332 | # CONFIG_NETWORK_SECMARK is not set |
329 | # CONFIG_NETFILTER is not set | 333 | # CONFIG_NETFILTER is not set |
330 | # CONFIG_IP_DCCP is not set | 334 | # CONFIG_IP_DCCP is not set |
@@ -376,7 +380,90 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
376 | CONFIG_FW_LOADER=m | 380 | CONFIG_FW_LOADER=m |
377 | # CONFIG_SYS_HYPERVISOR is not set | 381 | # CONFIG_SYS_HYPERVISOR is not set |
378 | # CONFIG_CONNECTOR is not set | 382 | # CONFIG_CONNECTOR is not set |
379 | # CONFIG_MTD is not set | 383 | CONFIG_MTD=y |
384 | # CONFIG_MTD_DEBUG is not set | ||
385 | CONFIG_MTD_CONCAT=y | ||
386 | CONFIG_MTD_PARTITIONS=y | ||
387 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
388 | CONFIG_MTD_CMDLINE_PARTS=y | ||
389 | # CONFIG_MTD_AR7_PARTS is not set | ||
390 | |||
391 | # | ||
392 | # User Modules And Translation Layers | ||
393 | # | ||
394 | CONFIG_MTD_CHAR=y | ||
395 | CONFIG_MTD_BLKDEVS=y | ||
396 | CONFIG_MTD_BLOCK=y | ||
397 | # CONFIG_FTL is not set | ||
398 | # CONFIG_NFTL is not set | ||
399 | # CONFIG_INFTL is not set | ||
400 | # CONFIG_RFD_FTL is not set | ||
401 | # CONFIG_SSFDC is not set | ||
402 | # CONFIG_MTD_OOPS is not set | ||
403 | |||
404 | # | ||
405 | # RAM/ROM/Flash chip drivers | ||
406 | # | ||
407 | CONFIG_MTD_CFI=y | ||
408 | # CONFIG_MTD_JEDECPROBE is not set | ||
409 | CONFIG_MTD_GEN_PROBE=y | ||
410 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
411 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
412 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
413 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
414 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
415 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
416 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
417 | CONFIG_MTD_CFI_I1=y | ||
418 | CONFIG_MTD_CFI_I2=y | ||
419 | # CONFIG_MTD_CFI_I4 is not set | ||
420 | # CONFIG_MTD_CFI_I8 is not set | ||
421 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
422 | CONFIG_MTD_CFI_AMDSTD=y | ||
423 | # CONFIG_MTD_CFI_STAA is not set | ||
424 | CONFIG_MTD_CFI_UTIL=y | ||
425 | # CONFIG_MTD_RAM is not set | ||
426 | # CONFIG_MTD_ROM is not set | ||
427 | # CONFIG_MTD_ABSENT is not set | ||
428 | |||
429 | # | ||
430 | # Mapping drivers for chip access | ||
431 | # | ||
432 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
433 | CONFIG_MTD_PHYSMAP=y | ||
434 | CONFIG_MTD_PHYSMAP_START=0xffffffff | ||
435 | CONFIG_MTD_PHYSMAP_LEN=0 | ||
436 | CONFIG_MTD_PHYSMAP_BANKWIDTH=0 | ||
437 | # CONFIG_MTD_PLATRAM is not set | ||
438 | |||
439 | # | ||
440 | # Self-contained MTD device drivers | ||
441 | # | ||
442 | # CONFIG_MTD_SLRAM is not set | ||
443 | # CONFIG_MTD_PHRAM is not set | ||
444 | # CONFIG_MTD_MTDRAM is not set | ||
445 | # CONFIG_MTD_BLOCK2MTD is not set | ||
446 | |||
447 | # | ||
448 | # Disk-On-Chip Device Drivers | ||
449 | # | ||
450 | # CONFIG_MTD_DOC2000 is not set | ||
451 | # CONFIG_MTD_DOC2001 is not set | ||
452 | # CONFIG_MTD_DOC2001PLUS is not set | ||
453 | CONFIG_MTD_NAND=y | ||
454 | # CONFIG_MTD_NAND_VERIFY_WRITE is not set | ||
455 | # CONFIG_MTD_NAND_ECC_SMC is not set | ||
456 | # CONFIG_MTD_NAND_MUSEUM_IDS is not set | ||
457 | CONFIG_MTD_NAND_IDS=y | ||
458 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
459 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
460 | CONFIG_MTD_NAND_PLATFORM=y | ||
461 | # CONFIG_MTD_ONENAND is not set | ||
462 | |||
463 | # | ||
464 | # UBI - Unsorted block images | ||
465 | # | ||
466 | # CONFIG_MTD_UBI is not set | ||
380 | # CONFIG_PARPORT is not set | 467 | # CONFIG_PARPORT is not set |
381 | CONFIG_BLK_DEV=y | 468 | CONFIG_BLK_DEV=y |
382 | # CONFIG_BLK_DEV_COW_COMMON is not set | 469 | # CONFIG_BLK_DEV_COW_COMMON is not set |
@@ -385,11 +472,13 @@ CONFIG_BLK_DEV=y | |||
385 | CONFIG_BLK_DEV_RAM=y | 472 | CONFIG_BLK_DEV_RAM=y |
386 | CONFIG_BLK_DEV_RAM_COUNT=16 | 473 | CONFIG_BLK_DEV_RAM_COUNT=16 |
387 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 474 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
388 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 475 | # CONFIG_BLK_DEV_XIP is not set |
389 | # CONFIG_CDROM_PKTCDVD is not set | 476 | # CONFIG_CDROM_PKTCDVD is not set |
390 | # CONFIG_ATA_OVER_ETH is not set | 477 | # CONFIG_ATA_OVER_ETH is not set |
391 | CONFIG_MISC_DEVICES=y | 478 | CONFIG_MISC_DEVICES=y |
392 | # CONFIG_EEPROM_93CX6 is not set | 479 | # CONFIG_EEPROM_93CX6 is not set |
480 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
481 | CONFIG_HAVE_IDE=y | ||
393 | # CONFIG_IDE is not set | 482 | # CONFIG_IDE is not set |
394 | 483 | ||
395 | # | 484 | # |
@@ -461,6 +550,7 @@ CONFIG_SMC91X=y | |||
461 | # | 550 | # |
462 | # CONFIG_WLAN_PRE80211 is not set | 551 | # CONFIG_WLAN_PRE80211 is not set |
463 | # CONFIG_WLAN_80211 is not set | 552 | # CONFIG_WLAN_80211 is not set |
553 | # CONFIG_IWLWIFI_LEDS is not set | ||
464 | # CONFIG_WAN is not set | 554 | # CONFIG_WAN is not set |
465 | # CONFIG_PPP is not set | 555 | # CONFIG_PPP is not set |
466 | # CONFIG_SLIP is not set | 556 | # CONFIG_SLIP is not set |
@@ -482,13 +572,20 @@ CONFIG_INPUT=y | |||
482 | # | 572 | # |
483 | # CONFIG_INPUT_MOUSEDEV is not set | 573 | # CONFIG_INPUT_MOUSEDEV is not set |
484 | # CONFIG_INPUT_JOYDEV is not set | 574 | # CONFIG_INPUT_JOYDEV is not set |
485 | # CONFIG_INPUT_EVDEV is not set | 575 | CONFIG_INPUT_EVDEV=y |
486 | # CONFIG_INPUT_EVBUG is not set | 576 | # CONFIG_INPUT_EVBUG is not set |
487 | 577 | ||
488 | # | 578 | # |
489 | # Input Device Drivers | 579 | # Input Device Drivers |
490 | # | 580 | # |
491 | # CONFIG_INPUT_KEYBOARD is not set | 581 | CONFIG_INPUT_KEYBOARD=y |
582 | # CONFIG_KEYBOARD_ATKBD is not set | ||
583 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
584 | # CONFIG_KEYBOARD_LKKBD is not set | ||
585 | # CONFIG_KEYBOARD_XTKBD is not set | ||
586 | # CONFIG_KEYBOARD_NEWTON is not set | ||
587 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
588 | CONFIG_KEYBOARD_SH_KEYSC=y | ||
492 | # CONFIG_INPUT_MOUSE is not set | 589 | # CONFIG_INPUT_MOUSE is not set |
493 | # CONFIG_INPUT_JOYSTICK is not set | 590 | # CONFIG_INPUT_JOYSTICK is not set |
494 | # CONFIG_INPUT_TABLET is not set | 591 | # CONFIG_INPUT_TABLET is not set |
@@ -508,6 +605,7 @@ CONFIG_VT=y | |||
508 | CONFIG_VT_CONSOLE=y | 605 | CONFIG_VT_CONSOLE=y |
509 | CONFIG_HW_CONSOLE=y | 606 | CONFIG_HW_CONSOLE=y |
510 | CONFIG_VT_HW_CONSOLE_BINDING=y | 607 | CONFIG_VT_HW_CONSOLE_BINDING=y |
608 | CONFIG_DEVKMEM=y | ||
511 | # CONFIG_SERIAL_NONSTANDARD is not set | 609 | # CONFIG_SERIAL_NONSTANDARD is not set |
512 | 610 | ||
513 | # | 611 | # |
@@ -531,16 +629,40 @@ CONFIG_HW_RANDOM=y | |||
531 | # CONFIG_R3964 is not set | 629 | # CONFIG_R3964 is not set |
532 | # CONFIG_RAW_DRIVER is not set | 630 | # CONFIG_RAW_DRIVER is not set |
533 | # CONFIG_TCG_TPM is not set | 631 | # CONFIG_TCG_TPM is not set |
534 | # CONFIG_I2C is not set | 632 | CONFIG_I2C=y |
535 | 633 | CONFIG_I2C_BOARDINFO=y | |
536 | # | 634 | # CONFIG_I2C_CHARDEV is not set |
537 | # SPI support | 635 | |
538 | # | 636 | # |
637 | # I2C Hardware Bus support | ||
638 | # | ||
639 | # CONFIG_I2C_OCORES is not set | ||
640 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
641 | # CONFIG_I2C_SIMTEC is not set | ||
642 | # CONFIG_I2C_TAOS_EVM is not set | ||
643 | # CONFIG_I2C_STUB is not set | ||
644 | # CONFIG_I2C_PCA_PLATFORM is not set | ||
645 | CONFIG_I2C_SH_MOBILE=y | ||
646 | |||
647 | # | ||
648 | # Miscellaneous I2C Chip support | ||
649 | # | ||
650 | # CONFIG_DS1682 is not set | ||
651 | # CONFIG_SENSORS_EEPROM is not set | ||
652 | # CONFIG_SENSORS_PCF8574 is not set | ||
653 | # CONFIG_PCF8575 is not set | ||
654 | # CONFIG_SENSORS_PCF8591 is not set | ||
655 | # CONFIG_SENSORS_MAX6875 is not set | ||
656 | # CONFIG_SENSORS_TSL2550 is not set | ||
657 | # CONFIG_I2C_DEBUG_CORE is not set | ||
658 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
659 | # CONFIG_I2C_DEBUG_BUS is not set | ||
660 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
539 | # CONFIG_SPI is not set | 661 | # CONFIG_SPI is not set |
540 | # CONFIG_SPI_MASTER is not set | ||
541 | # CONFIG_W1 is not set | 662 | # CONFIG_W1 is not set |
542 | # CONFIG_POWER_SUPPLY is not set | 663 | # CONFIG_POWER_SUPPLY is not set |
543 | # CONFIG_HWMON is not set | 664 | # CONFIG_HWMON is not set |
665 | # CONFIG_THERMAL is not set | ||
544 | # CONFIG_WATCHDOG is not set | 666 | # CONFIG_WATCHDOG is not set |
545 | 667 | ||
546 | # | 668 | # |
@@ -553,12 +675,22 @@ CONFIG_SSB_POSSIBLE=y | |||
553 | # Multifunction device drivers | 675 | # Multifunction device drivers |
554 | # | 676 | # |
555 | # CONFIG_MFD_SM501 is not set | 677 | # CONFIG_MFD_SM501 is not set |
678 | # CONFIG_HTC_PASIC3 is not set | ||
556 | 679 | ||
557 | # | 680 | # |
558 | # Multimedia devices | 681 | # Multimedia devices |
559 | # | 682 | # |
683 | |||
684 | # | ||
685 | # Multimedia core support | ||
686 | # | ||
560 | # CONFIG_VIDEO_DEV is not set | 687 | # CONFIG_VIDEO_DEV is not set |
561 | # CONFIG_DVB_CORE is not set | 688 | # CONFIG_DVB_CORE is not set |
689 | # CONFIG_VIDEO_MEDIA is not set | ||
690 | |||
691 | # | ||
692 | # Multimedia drivers | ||
693 | # | ||
562 | # CONFIG_DAB is not set | 694 | # CONFIG_DAB is not set |
563 | 695 | ||
564 | # | 696 | # |
@@ -592,6 +724,8 @@ CONFIG_USB_ARCH_HAS_HCD=y | |||
592 | # CONFIG_USB_ARCH_HAS_OHCI is not set | 724 | # CONFIG_USB_ARCH_HAS_OHCI is not set |
593 | # CONFIG_USB_ARCH_HAS_EHCI is not set | 725 | # CONFIG_USB_ARCH_HAS_EHCI is not set |
594 | # CONFIG_USB is not set | 726 | # CONFIG_USB is not set |
727 | # CONFIG_USB_OTG_WHITELIST is not set | ||
728 | # CONFIG_USB_OTG_BLACKLIST_HUB is not set | ||
595 | 729 | ||
596 | # | 730 | # |
597 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 731 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
@@ -608,6 +742,7 @@ CONFIG_USB_GADGET_SELECTED=y | |||
608 | CONFIG_USB_GADGET_M66592=y | 742 | CONFIG_USB_GADGET_M66592=y |
609 | CONFIG_USB_M66592=y | 743 | CONFIG_USB_M66592=y |
610 | CONFIG_SUPERH_BUILT_IN_M66592=y | 744 | CONFIG_SUPERH_BUILT_IN_M66592=y |
745 | # CONFIG_USB_GADGET_PXA27X is not set | ||
611 | # CONFIG_USB_GADGET_GOKU is not set | 746 | # CONFIG_USB_GADGET_GOKU is not set |
612 | # CONFIG_USB_GADGET_LH7A40X is not set | 747 | # CONFIG_USB_GADGET_LH7A40X is not set |
613 | # CONFIG_USB_GADGET_OMAP is not set | 748 | # CONFIG_USB_GADGET_OMAP is not set |
@@ -623,7 +758,9 @@ CONFIG_USB_G_SERIAL=y | |||
623 | # CONFIG_USB_MIDI_GADGET is not set | 758 | # CONFIG_USB_MIDI_GADGET is not set |
624 | # CONFIG_USB_G_PRINTER is not set | 759 | # CONFIG_USB_G_PRINTER is not set |
625 | # CONFIG_MMC is not set | 760 | # CONFIG_MMC is not set |
761 | # CONFIG_MEMSTICK is not set | ||
626 | # CONFIG_NEW_LEDS is not set | 762 | # CONFIG_NEW_LEDS is not set |
763 | # CONFIG_ACCESSIBILITY is not set | ||
627 | CONFIG_RTC_LIB=y | 764 | CONFIG_RTC_LIB=y |
628 | CONFIG_RTC_CLASS=y | 765 | CONFIG_RTC_CLASS=y |
629 | CONFIG_RTC_HCTOSYS=y | 766 | CONFIG_RTC_HCTOSYS=y |
@@ -640,15 +777,31 @@ CONFIG_RTC_INTF_DEV=y | |||
640 | # CONFIG_RTC_DRV_TEST is not set | 777 | # CONFIG_RTC_DRV_TEST is not set |
641 | 778 | ||
642 | # | 779 | # |
780 | # I2C RTC drivers | ||
781 | # | ||
782 | # CONFIG_RTC_DRV_DS1307 is not set | ||
783 | # CONFIG_RTC_DRV_DS1374 is not set | ||
784 | # CONFIG_RTC_DRV_DS1672 is not set | ||
785 | # CONFIG_RTC_DRV_MAX6900 is not set | ||
786 | CONFIG_RTC_DRV_RS5C372=y | ||
787 | # CONFIG_RTC_DRV_ISL1208 is not set | ||
788 | # CONFIG_RTC_DRV_X1205 is not set | ||
789 | # CONFIG_RTC_DRV_PCF8563 is not set | ||
790 | # CONFIG_RTC_DRV_PCF8583 is not set | ||
791 | # CONFIG_RTC_DRV_M41T80 is not set | ||
792 | # CONFIG_RTC_DRV_S35390A is not set | ||
793 | |||
794 | # | ||
643 | # SPI RTC drivers | 795 | # SPI RTC drivers |
644 | # | 796 | # |
645 | 797 | ||
646 | # | 798 | # |
647 | # Platform RTC drivers | 799 | # Platform RTC drivers |
648 | # | 800 | # |
801 | # CONFIG_RTC_DRV_DS1511 is not set | ||
649 | # CONFIG_RTC_DRV_DS1553 is not set | 802 | # CONFIG_RTC_DRV_DS1553 is not set |
650 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
651 | # CONFIG_RTC_DRV_DS1742 is not set | 803 | # CONFIG_RTC_DRV_DS1742 is not set |
804 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
652 | # CONFIG_RTC_DRV_M48T86 is not set | 805 | # CONFIG_RTC_DRV_M48T86 is not set |
653 | # CONFIG_RTC_DRV_M48T59 is not set | 806 | # CONFIG_RTC_DRV_M48T59 is not set |
654 | # CONFIG_RTC_DRV_V3020 is not set | 807 | # CONFIG_RTC_DRV_V3020 is not set |
@@ -657,10 +810,6 @@ CONFIG_RTC_INTF_DEV=y | |||
657 | # on-CPU RTC drivers | 810 | # on-CPU RTC drivers |
658 | # | 811 | # |
659 | CONFIG_RTC_DRV_SH=y | 812 | CONFIG_RTC_DRV_SH=y |
660 | |||
661 | # | ||
662 | # Userspace I/O | ||
663 | # | ||
664 | # CONFIG_UIO is not set | 813 | # CONFIG_UIO is not set |
665 | 814 | ||
666 | # | 815 | # |
@@ -673,13 +822,10 @@ CONFIG_RTC_DRV_SH=y | |||
673 | # CONFIG_JFS_FS is not set | 822 | # CONFIG_JFS_FS is not set |
674 | # CONFIG_FS_POSIX_ACL is not set | 823 | # CONFIG_FS_POSIX_ACL is not set |
675 | # CONFIG_XFS_FS is not set | 824 | # CONFIG_XFS_FS is not set |
676 | # CONFIG_GFS2_FS is not set | ||
677 | # CONFIG_OCFS2_FS is not set | 825 | # CONFIG_OCFS2_FS is not set |
678 | # CONFIG_MINIX_FS is not set | 826 | # CONFIG_DNOTIFY is not set |
679 | # CONFIG_ROMFS_FS is not set | ||
680 | # CONFIG_INOTIFY is not set | 827 | # CONFIG_INOTIFY is not set |
681 | # CONFIG_QUOTA is not set | 828 | # CONFIG_QUOTA is not set |
682 | # CONFIG_DNOTIFY is not set | ||
683 | # CONFIG_AUTOFS_FS is not set | 829 | # CONFIG_AUTOFS_FS is not set |
684 | # CONFIG_AUTOFS4_FS is not set | 830 | # CONFIG_AUTOFS4_FS is not set |
685 | # CONFIG_FUSE_FS is not set | 831 | # CONFIG_FUSE_FS is not set |
@@ -720,10 +866,13 @@ CONFIG_TMPFS=y | |||
720 | # CONFIG_BEFS_FS is not set | 866 | # CONFIG_BEFS_FS is not set |
721 | # CONFIG_BFS_FS is not set | 867 | # CONFIG_BFS_FS is not set |
722 | # CONFIG_EFS_FS is not set | 868 | # CONFIG_EFS_FS is not set |
869 | # CONFIG_JFFS2_FS is not set | ||
723 | # CONFIG_CRAMFS is not set | 870 | # CONFIG_CRAMFS is not set |
724 | # CONFIG_VXFS_FS is not set | 871 | # CONFIG_VXFS_FS is not set |
872 | # CONFIG_MINIX_FS is not set | ||
725 | # CONFIG_HPFS_FS is not set | 873 | # CONFIG_HPFS_FS is not set |
726 | # CONFIG_QNX4FS_FS is not set | 874 | # CONFIG_QNX4FS_FS is not set |
875 | # CONFIG_ROMFS_FS is not set | ||
727 | # CONFIG_SYSV_FS is not set | 876 | # CONFIG_SYSV_FS is not set |
728 | # CONFIG_UFS_FS is not set | 877 | # CONFIG_UFS_FS is not set |
729 | # CONFIG_NETWORK_FILESYSTEMS is not set | 878 | # CONFIG_NETWORK_FILESYSTEMS is not set |
@@ -743,6 +892,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
743 | # CONFIG_PRINTK_TIME is not set | 892 | # CONFIG_PRINTK_TIME is not set |
744 | CONFIG_ENABLE_WARN_DEPRECATED=y | 893 | CONFIG_ENABLE_WARN_DEPRECATED=y |
745 | CONFIG_ENABLE_MUST_CHECK=y | 894 | CONFIG_ENABLE_MUST_CHECK=y |
895 | CONFIG_FRAME_WARN=1024 | ||
746 | # CONFIG_MAGIC_SYSRQ is not set | 896 | # CONFIG_MAGIC_SYSRQ is not set |
747 | # CONFIG_UNUSED_SYMBOLS is not set | 897 | # CONFIG_UNUSED_SYMBOLS is not set |
748 | CONFIG_DEBUG_FS=y | 898 | CONFIG_DEBUG_FS=y |
@@ -763,48 +913,77 @@ CONFIG_EARLY_PRINTK=y | |||
763 | # CONFIG_SECURITY is not set | 913 | # CONFIG_SECURITY is not set |
764 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 914 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
765 | CONFIG_CRYPTO=y | 915 | CONFIG_CRYPTO=y |
766 | # CONFIG_CRYPTO_SEQIV is not set | 916 | |
917 | # | ||
918 | # Crypto core or helper | ||
919 | # | ||
767 | # CONFIG_CRYPTO_MANAGER is not set | 920 | # CONFIG_CRYPTO_MANAGER is not set |
921 | # CONFIG_CRYPTO_GF128MUL is not set | ||
922 | # CONFIG_CRYPTO_NULL is not set | ||
923 | # CONFIG_CRYPTO_CRYPTD is not set | ||
924 | # CONFIG_CRYPTO_AUTHENC is not set | ||
925 | # CONFIG_CRYPTO_TEST is not set | ||
926 | |||
927 | # | ||
928 | # Authenticated Encryption with Associated Data | ||
929 | # | ||
930 | # CONFIG_CRYPTO_CCM is not set | ||
931 | # CONFIG_CRYPTO_GCM is not set | ||
932 | # CONFIG_CRYPTO_SEQIV is not set | ||
933 | |||
934 | # | ||
935 | # Block modes | ||
936 | # | ||
937 | # CONFIG_CRYPTO_CBC is not set | ||
938 | # CONFIG_CRYPTO_CTR is not set | ||
939 | # CONFIG_CRYPTO_CTS is not set | ||
940 | # CONFIG_CRYPTO_ECB is not set | ||
941 | # CONFIG_CRYPTO_LRW is not set | ||
942 | # CONFIG_CRYPTO_PCBC is not set | ||
943 | # CONFIG_CRYPTO_XTS is not set | ||
944 | |||
945 | # | ||
946 | # Hash modes | ||
947 | # | ||
768 | # CONFIG_CRYPTO_HMAC is not set | 948 | # CONFIG_CRYPTO_HMAC is not set |
769 | # CONFIG_CRYPTO_XCBC is not set | 949 | # CONFIG_CRYPTO_XCBC is not set |
770 | # CONFIG_CRYPTO_NULL is not set | 950 | |
951 | # | ||
952 | # Digest | ||
953 | # | ||
954 | # CONFIG_CRYPTO_CRC32C is not set | ||
771 | # CONFIG_CRYPTO_MD4 is not set | 955 | # CONFIG_CRYPTO_MD4 is not set |
772 | # CONFIG_CRYPTO_MD5 is not set | 956 | # CONFIG_CRYPTO_MD5 is not set |
957 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
773 | # CONFIG_CRYPTO_SHA1 is not set | 958 | # CONFIG_CRYPTO_SHA1 is not set |
774 | # CONFIG_CRYPTO_SHA256 is not set | 959 | # CONFIG_CRYPTO_SHA256 is not set |
775 | # CONFIG_CRYPTO_SHA512 is not set | 960 | # CONFIG_CRYPTO_SHA512 is not set |
776 | # CONFIG_CRYPTO_WP512 is not set | ||
777 | # CONFIG_CRYPTO_TGR192 is not set | 961 | # CONFIG_CRYPTO_TGR192 is not set |
778 | # CONFIG_CRYPTO_GF128MUL is not set | 962 | # CONFIG_CRYPTO_WP512 is not set |
779 | # CONFIG_CRYPTO_ECB is not set | 963 | |
780 | # CONFIG_CRYPTO_CBC is not set | 964 | # |
781 | # CONFIG_CRYPTO_PCBC is not set | 965 | # Ciphers |
782 | # CONFIG_CRYPTO_LRW is not set | 966 | # |
783 | # CONFIG_CRYPTO_XTS is not set | ||
784 | # CONFIG_CRYPTO_CTR is not set | ||
785 | # CONFIG_CRYPTO_GCM is not set | ||
786 | # CONFIG_CRYPTO_CCM is not set | ||
787 | # CONFIG_CRYPTO_CRYPTD is not set | ||
788 | # CONFIG_CRYPTO_DES is not set | ||
789 | # CONFIG_CRYPTO_FCRYPT is not set | ||
790 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
791 | # CONFIG_CRYPTO_TWOFISH is not set | ||
792 | # CONFIG_CRYPTO_SERPENT is not set | ||
793 | # CONFIG_CRYPTO_AES is not set | 967 | # CONFIG_CRYPTO_AES is not set |
968 | # CONFIG_CRYPTO_ANUBIS is not set | ||
969 | # CONFIG_CRYPTO_ARC4 is not set | ||
970 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
971 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
794 | # CONFIG_CRYPTO_CAST5 is not set | 972 | # CONFIG_CRYPTO_CAST5 is not set |
795 | # CONFIG_CRYPTO_CAST6 is not set | 973 | # CONFIG_CRYPTO_CAST6 is not set |
796 | # CONFIG_CRYPTO_TEA is not set | 974 | # CONFIG_CRYPTO_DES is not set |
797 | # CONFIG_CRYPTO_ARC4 is not set | 975 | # CONFIG_CRYPTO_FCRYPT is not set |
798 | # CONFIG_CRYPTO_KHAZAD is not set | 976 | # CONFIG_CRYPTO_KHAZAD is not set |
799 | # CONFIG_CRYPTO_ANUBIS is not set | ||
800 | # CONFIG_CRYPTO_SEED is not set | ||
801 | # CONFIG_CRYPTO_SALSA20 is not set | 977 | # CONFIG_CRYPTO_SALSA20 is not set |
978 | # CONFIG_CRYPTO_SEED is not set | ||
979 | # CONFIG_CRYPTO_SERPENT is not set | ||
980 | # CONFIG_CRYPTO_TEA is not set | ||
981 | # CONFIG_CRYPTO_TWOFISH is not set | ||
982 | |||
983 | # | ||
984 | # Compression | ||
985 | # | ||
802 | # CONFIG_CRYPTO_DEFLATE is not set | 986 | # CONFIG_CRYPTO_DEFLATE is not set |
803 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
804 | # CONFIG_CRYPTO_CRC32C is not set | ||
805 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
806 | # CONFIG_CRYPTO_TEST is not set | ||
807 | # CONFIG_CRYPTO_AUTHENC is not set | ||
808 | # CONFIG_CRYPTO_LZO is not set | 987 | # CONFIG_CRYPTO_LZO is not set |
809 | CONFIG_CRYPTO_HW=y | 988 | CONFIG_CRYPTO_HW=y |
810 | 989 | ||
@@ -812,6 +991,7 @@ CONFIG_CRYPTO_HW=y | |||
812 | # Library routines | 991 | # Library routines |
813 | # | 992 | # |
814 | CONFIG_BITREVERSE=y | 993 | CONFIG_BITREVERSE=y |
994 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
815 | # CONFIG_CRC_CCITT is not set | 995 | # CONFIG_CRC_CCITT is not set |
816 | # CONFIG_CRC16 is not set | 996 | # CONFIG_CRC16 is not set |
817 | # CONFIG_CRC_ITU_T is not set | 997 | # CONFIG_CRC_ITU_T is not set |
diff --git a/arch/sh/drivers/heartbeat.c b/arch/sh/drivers/heartbeat.c index ab77b0e0fa0e..938817e34e2b 100644 --- a/arch/sh/drivers/heartbeat.c +++ b/arch/sh/drivers/heartbeat.c | |||
@@ -154,4 +154,4 @@ module_exit(heartbeat_exit); | |||
154 | 154 | ||
155 | MODULE_VERSION(DRV_VERSION); | 155 | MODULE_VERSION(DRV_VERSION); |
156 | MODULE_AUTHOR("Paul Mundt"); | 156 | MODULE_AUTHOR("Paul Mundt"); |
157 | MODULE_LICENSE("GPLv2"); | 157 | MODULE_LICENSE("GPL v2"); |
diff --git a/arch/sh/kernel/cpu/sh4/probe.c b/arch/sh/kernel/cpu/sh4/probe.c index ebceb0dadff5..be4926969181 100644 --- a/arch/sh/kernel/cpu/sh4/probe.c +++ b/arch/sh/kernel/cpu/sh4/probe.c | |||
@@ -132,6 +132,7 @@ int __init detect_cpu_and_cache_system(void) | |||
132 | 132 | ||
133 | switch (prr) { | 133 | switch (prr) { |
134 | case 0x50: | 134 | case 0x50: |
135 | case 0x51: | ||
135 | boot_cpu_data.type = CPU_SH7723; | 136 | boot_cpu_data.type = CPU_SH7723; |
136 | boot_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_L2_CACHE; | 137 | boot_cpu_data.flags |= CPU_HAS_FPU | CPU_HAS_L2_CACHE; |
137 | break; | 138 | break; |
diff --git a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c index 805535aa505e..27fa81bef6a0 100644 --- a/arch/sh/kernel/cpu/sh4a/clock-sh7785.c +++ b/arch/sh/kernel/cpu/sh4a/clock-sh7785.c | |||
@@ -26,7 +26,7 @@ static int pfc_divisors[] = { 1, 1, 1, 1, 1, 1, 1, 18, | |||
26 | 26 | ||
27 | static void master_clk_init(struct clk *clk) | 27 | static void master_clk_init(struct clk *clk) |
28 | { | 28 | { |
29 | clk->rate *= 36; | 29 | clk->rate *= pfc_divisors[ctrl_inl(FRQMR1) & 0x000f]; |
30 | } | 30 | } |
31 | 31 | ||
32 | static struct clk_ops sh7785_master_clk_ops = { | 32 | static struct clk_ops sh7785_master_clk_ops = { |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c index 069314037049..62ebccf18b3c 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | static struct resource usbf_resources[] = { | 17 | static struct resource usbf_resources[] = { |
18 | [0] = { | 18 | [0] = { |
19 | .name = "USBF", | 19 | .name = "m66592_udc", |
20 | .start = 0x04480000, | 20 | .start = 0x04480000, |
21 | .end = 0x044800FF, | 21 | .end = 0x044800FF, |
22 | .flags = IORESOURCE_MEM, | 22 | .flags = IORESOURCE_MEM, |
diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c index 16925cf28db8..566ce79b9abf 100644 --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c | |||
@@ -153,7 +153,7 @@ static struct intc_vect vectors[] __initdata = { | |||
153 | INTC_VECT(VIO_VOUI,0x8E0), | 153 | INTC_VECT(VIO_VOUI,0x8E0), |
154 | 154 | ||
155 | INTC_VECT(SCIFA_SCIFA0,0x900), | 155 | INTC_VECT(SCIFA_SCIFA0,0x900), |
156 | INTC_VECT(VPU_VPUI,0x920), | 156 | INTC_VECT(VPU_VPUI,0x980), |
157 | INTC_VECT(TPU_TPUI,0x9A0), | 157 | INTC_VECT(TPU_TPUI,0x9A0), |
158 | INTC_VECT(ADC_ADI,0x9E0), | 158 | INTC_VECT(ADC_ADI,0x9E0), |
159 | INTC_VECT(USB_USI0,0xA20), | 159 | INTC_VECT(USB_USI0,0xA20), |
@@ -292,9 +292,3 @@ void __init plat_irq_setup(void) | |||
292 | { | 292 | { |
293 | register_intc_controller(&intc_desc); | 293 | register_intc_controller(&intc_desc); |
294 | } | 294 | } |
295 | |||
296 | void __init plat_mem_setup(void) | ||
297 | { | ||
298 | /* Register the URAM space as Node 1 */ | ||
299 | setup_bootmem_node(1, 0x055f0000, 0x05610000); | ||
300 | } | ||
diff --git a/arch/sh/kernel/entry-common.S b/arch/sh/kernel/entry-common.S index 926b2e7b11c1..718bd2356b34 100644 --- a/arch/sh/kernel/entry-common.S +++ b/arch/sh/kernel/entry-common.S | |||
@@ -1,9 +1,6 @@ | |||
1 | /* $Id: entry.S,v 1.37 2004/06/11 13:02:46 doyu Exp $ | 1 | /* |
2 | * | ||
3 | * linux/arch/sh/entry.S | ||
4 | * | ||
5 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka | 2 | * Copyright (C) 1999, 2000, 2002 Niibe Yutaka |
6 | * Copyright (C) 2003 Paul Mundt | 3 | * Copyright (C) 2003 - 2008 Paul Mundt |
7 | * | 4 | * |
8 | * This file is subject to the terms and conditions of the GNU General Public | 5 | * This file is subject to the terms and conditions of the GNU General Public |
9 | * License. See the file "COPYING" in the main directory of this archive | 6 | * License. See the file "COPYING" in the main directory of this archive |
@@ -262,6 +259,7 @@ __restore_all: | |||
262 | 259 | ||
263 | .align 2 | 260 | .align 2 |
264 | syscall_badsys: ! Bad syscall number | 261 | syscall_badsys: ! Bad syscall number |
262 | get_current_thread_info r8, r0 | ||
265 | mov #-ENOSYS, r0 | 263 | mov #-ENOSYS, r0 |
266 | bra resume_userspace | 264 | bra resume_userspace |
267 | mov.l r0, @(OFF_R0,r15) ! Return value | 265 | mov.l r0, @(OFF_R0,r15) ! Return value |
@@ -281,7 +279,9 @@ debug_trap: | |||
281 | mov.l 1f, r8 | 279 | mov.l 1f, r8 |
282 | add r0, r8 | 280 | add r0, r8 |
283 | mov.l @r8, r8 | 281 | mov.l @r8, r8 |
284 | jmp @r8 | 282 | jsr @r8 |
283 | nop | ||
284 | bra __restore_all | ||
285 | nop | 285 | nop |
286 | 286 | ||
287 | .align 2 | 287 | .align 2 |
diff --git a/arch/sh/kernel/head_32.S b/arch/sh/kernel/head_32.S index d67d7ed09f22..ae0a382a82eb 100644 --- a/arch/sh/kernel/head_32.S +++ b/arch/sh/kernel/head_32.S | |||
@@ -30,8 +30,8 @@ ENTRY(empty_zero_page) | |||
30 | .long 0 /* RAMDISK_FLAGS */ | 30 | .long 0 /* RAMDISK_FLAGS */ |
31 | .long 0x0200 /* ORIG_ROOT_DEV */ | 31 | .long 0x0200 /* ORIG_ROOT_DEV */ |
32 | .long 1 /* LOADER_TYPE */ | 32 | .long 1 /* LOADER_TYPE */ |
33 | .long 0x00360000 /* INITRD_START */ | 33 | .long 0x00000000 /* INITRD_START */ |
34 | .long 0x000a0000 /* INITRD_SIZE */ | 34 | .long 0x00000000 /* INITRD_SIZE */ |
35 | #ifdef CONFIG_32BIT | 35 | #ifdef CONFIG_32BIT |
36 | .long 0x53453f00 + 32 /* "SE?" = 32 bit */ | 36 | .long 0x53453f00 + 32 /* "SE?" = 32 bit */ |
37 | #else | 37 | #else |
diff --git a/arch/sh/kernel/init_task.c b/arch/sh/kernel/init_task.c index f9bcc606127e..b151a25cb14d 100644 --- a/arch/sh/kernel/init_task.c +++ b/arch/sh/kernel/init_task.c | |||
@@ -8,7 +8,6 @@ | |||
8 | #include <asm/pgtable.h> | 8 | #include <asm/pgtable.h> |
9 | 9 | ||
10 | static struct fs_struct init_fs = INIT_FS; | 10 | static struct fs_struct init_fs = INIT_FS; |
11 | static struct files_struct init_files = INIT_FILES; | ||
12 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 11 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
13 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 12 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
14 | struct pt_regs fake_swapper_regs; | 13 | struct pt_regs fake_swapper_regs; |
diff --git a/arch/sh/kernel/kgdb_stub.c b/arch/sh/kernel/kgdb_stub.c index 832641bbd47d..bf8ac4c71640 100644 --- a/arch/sh/kernel/kgdb_stub.c +++ b/arch/sh/kernel/kgdb_stub.c | |||
@@ -274,8 +274,7 @@ static char *mem_to_hex(const char *mem, char *buf, const int count) | |||
274 | } | 274 | } |
275 | for (i = 0; i < count; i++) { | 275 | for (i = 0; i < count; i++) { |
276 | ch = *mem++; | 276 | ch = *mem++; |
277 | *buf++ = highhex(ch); | 277 | buf = pack_hex_byte(buf, ch); |
278 | *buf++ = lowhex(ch); | ||
279 | } | 278 | } |
280 | *buf = 0; | 279 | *buf = 0; |
281 | return (buf); | 280 | return (buf); |
@@ -427,8 +426,8 @@ static void put_packet(char *buffer) | |||
427 | 426 | ||
428 | /* '#' Separator, put high and low components of checksum */ | 427 | /* '#' Separator, put high and low components of checksum */ |
429 | put_debug_char('#'); | 428 | put_debug_char('#'); |
430 | put_debug_char(highhex(checksum)); | 429 | put_debug_char(hex_asc_hi(checksum)); |
431 | put_debug_char(lowhex(checksum)); | 430 | put_debug_char(hex_asc_lo(checksum)); |
432 | } | 431 | } |
433 | while ((get_debug_char()) != '+'); /* While no ack */ | 432 | while ((get_debug_char()) != '+'); /* While no ack */ |
434 | } | 433 | } |
@@ -650,8 +649,8 @@ static void undo_single_step(void) | |||
650 | static void send_signal_msg(const int signum) | 649 | static void send_signal_msg(const int signum) |
651 | { | 650 | { |
652 | out_buffer[0] = 'S'; | 651 | out_buffer[0] = 'S'; |
653 | out_buffer[1] = highhex(signum); | 652 | out_buffer[1] = hex_asc_hi(signum); |
654 | out_buffer[2] = lowhex(signum); | 653 | out_buffer[2] = hex_asc_lo(signum); |
655 | out_buffer[3] = 0; | 654 | out_buffer[3] = 0; |
656 | put_packet(out_buffer); | 655 | put_packet(out_buffer); |
657 | } | 656 | } |
diff --git a/arch/sh/kernel/setup.c b/arch/sh/kernel/setup.c index 516bde9c50fa..bca2bbc575db 100644 --- a/arch/sh/kernel/setup.c +++ b/arch/sh/kernel/setup.c | |||
@@ -292,6 +292,17 @@ void __init setup_arch(char **cmdline_p) | |||
292 | 292 | ||
293 | ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); | 293 | ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV); |
294 | 294 | ||
295 | printk(KERN_NOTICE "Boot params:\n" | ||
296 | "... MOUNT_ROOT_RDONLY - %08lx\n" | ||
297 | "... RAMDISK_FLAGS - %08lx\n" | ||
298 | "... ORIG_ROOT_DEV - %08lx\n" | ||
299 | "... LOADER_TYPE - %08lx\n" | ||
300 | "... INITRD_START - %08lx\n" | ||
301 | "... INITRD_SIZE - %08lx\n", | ||
302 | MOUNT_ROOT_RDONLY, RAMDISK_FLAGS, | ||
303 | ORIG_ROOT_DEV, LOADER_TYPE, | ||
304 | INITRD_START, INITRD_SIZE); | ||
305 | |||
295 | #ifdef CONFIG_BLK_DEV_RAM | 306 | #ifdef CONFIG_BLK_DEV_RAM |
296 | rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK; | 307 | rd_image_start = RAMDISK_FLAGS & RAMDISK_IMAGE_START_MASK; |
297 | rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0); | 308 | rd_prompt = ((RAMDISK_FLAGS & RAMDISK_PROMPT_FLAG) != 0); |
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index a3bdc68ef02c..438f1ebcc453 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c | |||
@@ -4,6 +4,7 @@ | |||
4 | #include <linux/kdebug.h> | 4 | #include <linux/kdebug.h> |
5 | #include <linux/signal.h> | 5 | #include <linux/signal.h> |
6 | #include <linux/sched.h> | 6 | #include <linux/sched.h> |
7 | #include <linux/uaccess.h> | ||
7 | #include <asm/system.h> | 8 | #include <asm/system.h> |
8 | 9 | ||
9 | #ifdef CONFIG_BUG | 10 | #ifdef CONFIG_BUG |
@@ -21,7 +22,14 @@ static void handle_BUG(struct pt_regs *regs) | |||
21 | 22 | ||
22 | int is_valid_bugaddr(unsigned long addr) | 23 | int is_valid_bugaddr(unsigned long addr) |
23 | { | 24 | { |
24 | return addr >= PAGE_OFFSET; | 25 | unsigned short opcode; |
26 | |||
27 | if (addr < PAGE_OFFSET) | ||
28 | return 0; | ||
29 | if (probe_kernel_address((u16 *)addr, opcode)) | ||
30 | return 0; | ||
31 | |||
32 | return opcode == TRAPA_BUG_OPCODE; | ||
25 | } | 33 | } |
26 | #endif | 34 | #endif |
27 | 35 | ||
diff --git a/arch/sh/lib/memcpy-sh4.S b/arch/sh/lib/memcpy-sh4.S index 560bc17eebdd..459fa92a7c53 100644 --- a/arch/sh/lib/memcpy-sh4.S +++ b/arch/sh/lib/memcpy-sh4.S | |||
@@ -126,10 +126,10 @@ | |||
126 | 126 | ||
127 | mov.l r3,@-r0 ! 30 LS | 127 | mov.l r3,@-r0 ! 30 LS |
128 | #else | 128 | #else |
129 | 3: mov r1,r3 ! OPQR | 129 | 3: mov r7,r3 ! OPQR |
130 | shlr8 r3 ! xOPQ | 130 | shlr8 r3 ! xOPQ |
131 | mov.l @(r0,r5),r1 ! KLMN | 131 | mov.l @(r0,r5),r7 ! KLMN |
132 | mov r1,r6 | 132 | mov r7,r6 |
133 | shll16 r6 | 133 | shll16 r6 |
134 | shll8 r6 ! Nxxx | 134 | shll8 r6 ! Nxxx |
135 | or r6,r3 ! NOPQ | 135 | or r6,r3 ! NOPQ |
@@ -733,24 +733,24 @@ ENTRY(memcpy) | |||
733 | movca.l r0,@r1 ! 40 LS (latency=3-7) | 733 | movca.l r0,@r1 ! 40 LS (latency=3-7) |
734 | add #-0x1c, r1 ! 50 EX | 734 | add #-0x1c, r1 ! 50 EX |
735 | 735 | ||
736 | mov.l r3, @(0x1c,r1) ! 33 LS | 736 | mov.l r3, @(0x18,r1) ! 33 LS |
737 | xtrct r11, r10 ! 48 EX | 737 | xtrct r11, r10 ! 48 EX |
738 | 738 | ||
739 | mov.l r6, @(0x18,r1) ! 33 LS | 739 | mov.l r6, @(0x14,r1) ! 33 LS |
740 | xtrct r12, r11 ! 48 EX | 740 | xtrct r12, r11 ! 48 EX |
741 | 741 | ||
742 | mov.l r7, @(0x14,r1) ! 33 LS | 742 | mov.l r7, @(0x10,r1) ! 33 LS |
743 | 743 | ||
744 | mov.l r8, @(0x10,r1) ! 33 LS | 744 | mov.l r8, @(0x0c,r1) ! 33 LS |
745 | add #-0x3e, r5 ! 50 EX | 745 | add #-0x1e, r5 ! 50 EX |
746 | 746 | ||
747 | mov.l r9, @(0x0c,r1) ! 33 LS | 747 | mov.l r9, @(0x08,r1) ! 33 LS |
748 | cmp/eq r2,r1 ! 54 MT | 748 | cmp/eq r2,r1 ! 54 MT |
749 | 749 | ||
750 | mov.l r10, @(0x08,r1) ! 33 LS | 750 | mov.l r10, @(0x04,r1) ! 33 LS |
751 | bf/s 2b ! 109 BR | 751 | bf/s 2b ! 109 BR |
752 | 752 | ||
753 | mov.l r11, @(0x04,r1) ! 33 LS | 753 | mov.l r11, @(0x00,r1) ! 33 LS |
754 | #endif | 754 | #endif |
755 | 755 | ||
756 | mov.l @r15+, r12 | 756 | mov.l @r15+, r12 |
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index d211fdb24584..789724e61e83 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: config.in,v 1.113 2002/01/24 22:14:44 davem Exp $ | ||
2 | # For a description of the syntax of this configuration file, | 1 | # For a description of the syntax of this configuration file, |
3 | # see Documentation/kbuild/kconfig-language.txt. | 2 | # see Documentation/kbuild/kconfig-language.txt. |
4 | # | 3 | # |
diff --git a/arch/sparc/boot/Makefile b/arch/sparc/boot/Makefile index b365084316ac..22d331e1e941 100644 --- a/arch/sparc/boot/Makefile +++ b/arch/sparc/boot/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.10 2000/02/23 08:17:46 jj Exp $ | ||
2 | # Makefile for the Sparc boot stuff. | 1 | # Makefile for the Sparc boot stuff. |
3 | # | 2 | # |
4 | # Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 3 | # Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/boot/btfixupprep.c b/arch/sparc/boot/btfixupprep.c index dc7b0546e3bb..52a4208fe4f0 100644 --- a/arch/sparc/boot/btfixupprep.c +++ b/arch/sparc/boot/btfixupprep.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: btfixupprep.c,v 1.6 2001/08/22 15:27:47 davem Exp $ | 1 | /* |
2 | Simple utility to prepare vmlinux image for sparc. | 2 | Simple utility to prepare vmlinux image for sparc. |
3 | Resolves all BTFIXUP uses and settings and creates | 3 | Resolves all BTFIXUP uses and settings and creates |
4 | a special .s object to link to the image. | 4 | a special .s object to link to the image. |
diff --git a/arch/sparc/boot/piggyback.c b/arch/sparc/boot/piggyback.c index 6962cc68ed5b..c9f500c1a8b2 100644 --- a/arch/sparc/boot/piggyback.c +++ b/arch/sparc/boot/piggyback.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: piggyback.c,v 1.4 2000/12/05 00:48:57 anton Exp $ | 1 | /* |
2 | Simple utility to make a single-image install kernel with initial ramdisk | 2 | Simple utility to make a single-image install kernel with initial ramdisk |
3 | for Sparc tftpbooting without need to set up nfs. | 3 | for Sparc tftpbooting without need to set up nfs. |
4 | 4 | ||
diff --git a/arch/sparc/kernel/ebus.c b/arch/sparc/kernel/ebus.c index 96344ff2bbe1..92c6fc07e59c 100644 --- a/arch/sparc/kernel/ebus.c +++ b/arch/sparc/kernel/ebus.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ebus.c,v 1.20 2002/01/05 01:13:43 davem Exp $ | 1 | /* |
2 | * ebus.c: PCI to EBus bridge device. | 2 | * ebus.c: PCI to EBus bridge device. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) |
diff --git a/arch/sparc/kernel/etrap.S b/arch/sparc/kernel/etrap.S index a8b35bed12a2..f37d961d67a6 100644 --- a/arch/sparc/kernel/etrap.S +++ b/arch/sparc/kernel/etrap.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: etrap.S,v 1.31 2000/01/08 16:38:18 anton Exp $ | 1 | /* |
2 | * etrap.S: Sparc trap window preparation for entry into the | 2 | * etrap.S: Sparc trap window preparation for entry into the |
3 | * Linux kernel. | 3 | * Linux kernel. |
4 | * | 4 | * |
diff --git a/arch/sparc/kernel/head.S b/arch/sparc/kernel/head.S index 8bec05fa5795..3bfd6085a91d 100644 --- a/arch/sparc/kernel/head.S +++ b/arch/sparc/kernel/head.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: head.S,v 1.105 2001/08/12 09:08:56 davem Exp $ | 1 | /* |
2 | * head.S: The initial boot code for the Sparc port of Linux. | 2 | * head.S: The initial boot code for the Sparc port of Linux. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/idprom.c b/arch/sparc/kernel/idprom.c index 3a5bad525394..7220562cdb34 100644 --- a/arch/sparc/kernel/idprom.c +++ b/arch/sparc/kernel/idprom.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: idprom.c,v 1.24 1999/08/31 06:54:20 davem Exp $ | 1 | /* |
2 | * idprom.c: Routines to load the idprom into kernel addresses and | 2 | * idprom.c: Routines to load the idprom into kernel addresses and |
3 | * interpret the data contained within. | 3 | * interpret the data contained within. |
4 | * | 4 | * |
diff --git a/arch/sparc/kernel/init_task.c b/arch/sparc/kernel/init_task.c index d9d4f96360c7..8e64ebc445ef 100644 --- a/arch/sparc/kernel/init_task.c +++ b/arch/sparc/kernel/init_task.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <asm/uaccess.h> | 9 | #include <asm/uaccess.h> |
10 | 10 | ||
11 | static struct fs_struct init_fs = INIT_FS; | 11 | static struct fs_struct init_fs = INIT_FS; |
12 | static struct files_struct init_files = INIT_FILES; | ||
13 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 12 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
14 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 13 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
15 | struct mm_struct init_mm = INIT_MM(init_mm); | 14 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index ad0ede24ca1d..7b17522f59bf 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ioport.c,v 1.45 2001/10/30 04:54:21 davem Exp $ | 1 | /* |
2 | * ioport.c: Simple io mapping allocator. | 2 | * ioport.c: Simple io mapping allocator. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/irq.c b/arch/sparc/kernel/irq.c index 01a6756ba371..087390b092b0 100644 --- a/arch/sparc/kernel/irq.c +++ b/arch/sparc/kernel/irq.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: irq.c,v 1.114 2001/12/11 04:55:51 davem Exp $ | 1 | /* |
2 | * arch/sparc/kernel/irq.c: Interrupt request handling routines. On the | 2 | * arch/sparc/kernel/irq.c: Interrupt request handling routines. On the |
3 | * Sparc the IRQs are basically 'cast in stone' | 3 | * Sparc the IRQs are basically 'cast in stone' |
4 | * and you are supposed to probe the prom's device | 4 | * and you are supposed to probe the prom's device |
diff --git a/arch/sparc/kernel/muldiv.c b/arch/sparc/kernel/muldiv.c index 37b9a4942232..e352239e72c8 100644 --- a/arch/sparc/kernel/muldiv.c +++ b/arch/sparc/kernel/muldiv.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: muldiv.c,v 1.5 1997/12/15 20:07:20 ecd Exp $ | 1 | /* |
2 | * muldiv.c: Hardware multiply/division illegal instruction trap | 2 | * muldiv.c: Hardware multiply/division illegal instruction trap |
3 | * for sun4c/sun4 (which do not have those instructions) | 3 | * for sun4c/sun4 (which do not have those instructions) |
4 | * | 4 | * |
diff --git a/arch/sparc/kernel/rtrap.S b/arch/sparc/kernel/rtrap.S index ab818cdc4cc0..ce30082ab266 100644 --- a/arch/sparc/kernel/rtrap.S +++ b/arch/sparc/kernel/rtrap.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: rtrap.S,v 1.58 2002/01/31 03:30:05 davem Exp $ | 1 | /* |
2 | * rtrap.S: Return from Sparc trap low-level code. | 2 | * rtrap.S: Return from Sparc trap low-level code. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/setup.c b/arch/sparc/kernel/setup.c index 8a55c4f0df84..a0ea0bc6f471 100644 --- a/arch/sparc/kernel/setup.c +++ b/arch/sparc/kernel/setup.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: setup.c,v 1.126 2001/11/13 00:49:27 davem Exp $ | 1 | /* |
2 | * linux/arch/sparc/kernel/setup.c | 2 | * linux/arch/sparc/kernel/setup.c |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/sparc_ksyms.c b/arch/sparc/kernel/sparc_ksyms.c index aa8ee06cf488..b23cea5ca5d1 100644 --- a/arch/sparc/kernel/sparc_ksyms.c +++ b/arch/sparc/kernel/sparc_ksyms.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sparc_ksyms.c,v 1.107 2001/07/17 16:17:33 anton Exp $ | 1 | /* |
2 | * arch/sparc/kernel/ksyms.c: Sparc specific ksyms support. | 2 | * arch/sparc/kernel/ksyms.c: Sparc specific ksyms support. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/sun4d_irq.c b/arch/sparc/kernel/sun4d_irq.c index e0efab2a6bef..8ac5661cafff 100644 --- a/arch/sparc/kernel/sun4d_irq.c +++ b/arch/sparc/kernel/sun4d_irq.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sun4d_irq.c,v 1.29 2001/12/11 04:55:51 davem Exp $ | 1 | /* |
2 | * arch/sparc/kernel/sun4d_irq.c: | 2 | * arch/sparc/kernel/sun4d_irq.c: |
3 | * SS1000/SC2000 interrupt handling. | 3 | * SS1000/SC2000 interrupt handling. |
4 | * | 4 | * |
diff --git a/arch/sparc/kernel/trampoline.S b/arch/sparc/kernel/trampoline.S index 2dcdaa1fd8cd..356c56aebc62 100644 --- a/arch/sparc/kernel/trampoline.S +++ b/arch/sparc/kernel/trampoline.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: trampoline.S,v 1.14 2002/01/11 08:45:38 davem Exp $ | 1 | /* |
2 | * trampoline.S: SMP cpu boot-up trampoline code. | 2 | * trampoline.S: SMP cpu boot-up trampoline code. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/traps.c b/arch/sparc/kernel/traps.c index d404e7994527..978e9d85949e 100644 --- a/arch/sparc/kernel/traps.c +++ b/arch/sparc/kernel/traps.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: traps.c,v 1.64 2000/09/03 15:00:49 anton Exp $ | 1 | /* |
2 | * arch/sparc/kernel/traps.c | 2 | * arch/sparc/kernel/traps.c |
3 | * | 3 | * |
4 | * Copyright 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/unaligned.c b/arch/sparc/kernel/unaligned.c index 33857be16661..c2a28c5ad650 100644 --- a/arch/sparc/kernel/unaligned.c +++ b/arch/sparc/kernel/unaligned.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: unaligned.c,v 1.23 2001/12/21 00:54:31 davem Exp $ | 1 | /* |
2 | * unaligned.c: Unaligned load/store trap handling with special | 2 | * unaligned.c: Unaligned load/store trap handling with special |
3 | * cases for the kernel to do them more quickly. | 3 | * cases for the kernel to do them more quickly. |
4 | * | 4 | * |
diff --git a/arch/sparc/kernel/wof.S b/arch/sparc/kernel/wof.S index 083b1215d515..4bce38dfe3c5 100644 --- a/arch/sparc/kernel/wof.S +++ b/arch/sparc/kernel/wof.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: wof.S,v 1.40 2000/01/08 16:38:18 anton Exp $ | 1 | /* |
2 | * wof.S: Sparc window overflow handler. | 2 | * wof.S: Sparc window overflow handler. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/kernel/wuf.S b/arch/sparc/kernel/wuf.S index d1a266bf103a..82e5145b0f77 100644 --- a/arch/sparc/kernel/wuf.S +++ b/arch/sparc/kernel/wuf.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: wuf.S,v 1.39 2000/01/08 16:38:18 anton Exp $ | 1 | /* |
2 | * wuf.S: Window underflow trap handler for the Sparc. | 2 | * wuf.S: Window underflow trap handler for the Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller | 4 | * Copyright (C) 1995 David S. Miller |
diff --git a/arch/sparc/lib/Makefile b/arch/sparc/lib/Makefile index 76effdbea075..6e303e10c3b9 100644 --- a/arch/sparc/lib/Makefile +++ b/arch/sparc/lib/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.35 2000/12/15 00:41:18 davem Exp $ | ||
2 | # Makefile for Sparc library files.. | 1 | # Makefile for Sparc library files.. |
3 | # | 2 | # |
4 | 3 | ||
diff --git a/arch/sparc/lib/ashldi3.S b/arch/sparc/lib/ashldi3.S index 52418a0cb3dd..17912e608716 100644 --- a/arch/sparc/lib/ashldi3.S +++ b/arch/sparc/lib/ashldi3.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ashldi3.S,v 1.2 1999/11/19 04:11:46 davem Exp $ | 1 | /* |
2 | * ashldi3.S: GCC emits these for certain drivers playing | 2 | * ashldi3.S: GCC emits these for certain drivers playing |
3 | * with long longs. | 3 | * with long longs. |
4 | * | 4 | * |
diff --git a/arch/sparc/lib/ashrdi3.S b/arch/sparc/lib/ashrdi3.S index 2848237598a4..85398fd6dcc9 100644 --- a/arch/sparc/lib/ashrdi3.S +++ b/arch/sparc/lib/ashrdi3.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ashrdi3.S,v 1.4 1999/11/19 04:11:49 davem Exp $ | 1 | /* |
2 | * ashrdi3.S: The filesystem code creates all kinds of references to | 2 | * ashrdi3.S: The filesystem code creates all kinds of references to |
3 | * this little routine on the sparc with gcc. | 3 | * this little routine on the sparc with gcc. |
4 | * | 4 | * |
diff --git a/arch/sparc/lib/blockops.S b/arch/sparc/lib/blockops.S index a7c7ffaa4a94..804be87f9a42 100644 --- a/arch/sparc/lib/blockops.S +++ b/arch/sparc/lib/blockops.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: blockops.S,v 1.8 1998/01/30 10:58:44 jj Exp $ | 1 | /* |
2 | * blockops.S: Common block zero optimized routines. | 2 | * blockops.S: Common block zero optimized routines. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/lib/locks.S b/arch/sparc/lib/locks.S index b1df55cb2215..64f53f2b673d 100644 --- a/arch/sparc/lib/locks.S +++ b/arch/sparc/lib/locks.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: locks.S,v 1.16 2000/02/26 11:02:47 anton Exp $ | 1 | /* |
2 | * locks.S: SMP low-level lock primitives on Sparc. | 2 | * locks.S: SMP low-level lock primitives on Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/lib/lshrdi3.S b/arch/sparc/lib/lshrdi3.S index 35abf5b2bd15..47a1354c1602 100644 --- a/arch/sparc/lib/lshrdi3.S +++ b/arch/sparc/lib/lshrdi3.S | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: lshrdi3.S,v 1.1 1999/03/21 06:37:45 davem Exp $ */ | ||
2 | 1 | ||
3 | .globl __lshrdi3 | 2 | .globl __lshrdi3 |
4 | __lshrdi3: | 3 | __lshrdi3: |
diff --git a/arch/sparc/lib/memscan.S b/arch/sparc/lib/memscan.S index 28e78ff090ac..4ff1657dfc24 100644 --- a/arch/sparc/lib/memscan.S +++ b/arch/sparc/lib/memscan.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: memscan.S,v 1.4 1996/09/08 02:01:20 davem Exp $ | 1 | /* |
2 | * memscan.S: Optimized memscan for the Sparc. | 2 | * memscan.S: Optimized memscan for the Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/lib/mul.S b/arch/sparc/lib/mul.S index da693560d878..c45470d0b0ce 100644 --- a/arch/sparc/lib/mul.S +++ b/arch/sparc/lib/mul.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: mul.S,v 1.4 1996/09/30 02:22:32 davem Exp $ | 1 | /* |
2 | * mul.S: This routine was taken from glibc-1.09 and is covered | 2 | * mul.S: This routine was taken from glibc-1.09 and is covered |
3 | * by the GNU Library General Public License Version 2. | 3 | * by the GNU Library General Public License Version 2. |
4 | */ | 4 | */ |
diff --git a/arch/sparc/lib/rem.S b/arch/sparc/lib/rem.S index bf015a90d07e..42fb86252815 100644 --- a/arch/sparc/lib/rem.S +++ b/arch/sparc/lib/rem.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: rem.S,v 1.7 1996/09/30 02:22:34 davem Exp $ | 1 | /* |
2 | * rem.S: This routine was taken from glibc-1.09 and is covered | 2 | * rem.S: This routine was taken from glibc-1.09 and is covered |
3 | * by the GNU Library General Public License Version 2. | 3 | * by the GNU Library General Public License Version 2. |
4 | */ | 4 | */ |
diff --git a/arch/sparc/lib/rwsem.S b/arch/sparc/lib/rwsem.S index f406b1f22791..9675268e7fde 100644 --- a/arch/sparc/lib/rwsem.S +++ b/arch/sparc/lib/rwsem.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: rwsem.S,v 1.5 2000/05/09 17:40:13 davem Exp $ | 1 | /* |
2 | * Assembly part of rw semaphores. | 2 | * Assembly part of rw semaphores. |
3 | * | 3 | * |
4 | * Copyright (C) 1999 Jakub Jelinek (jakub@redhat.com) | 4 | * Copyright (C) 1999 Jakub Jelinek (jakub@redhat.com) |
diff --git a/arch/sparc/lib/sdiv.S b/arch/sparc/lib/sdiv.S index af9451629d0b..f0a0d4e4db78 100644 --- a/arch/sparc/lib/sdiv.S +++ b/arch/sparc/lib/sdiv.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sdiv.S,v 1.6 1996/10/02 17:37:00 davem Exp $ | 1 | /* |
2 | * sdiv.S: This routine was taken from glibc-1.09 and is covered | 2 | * sdiv.S: This routine was taken from glibc-1.09 and is covered |
3 | * by the GNU Library General Public License Version 2. | 3 | * by the GNU Library General Public License Version 2. |
4 | */ | 4 | */ |
diff --git a/arch/sparc/lib/strncmp.S b/arch/sparc/lib/strncmp.S index 615626805d4b..494ec664537a 100644 --- a/arch/sparc/lib/strncmp.S +++ b/arch/sparc/lib/strncmp.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: strncmp.S,v 1.2 1996/09/09 02:47:20 davem Exp $ | 1 | /* |
2 | * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc | 2 | * strncmp.S: Hand optimized Sparc assembly of GCC output from GNU libc |
3 | * generic strncmp routine. | 3 | * generic strncmp routine. |
4 | */ | 4 | */ |
diff --git a/arch/sparc/lib/udiv.S b/arch/sparc/lib/udiv.S index 169e01da6715..2101405bdfcb 100644 --- a/arch/sparc/lib/udiv.S +++ b/arch/sparc/lib/udiv.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: udiv.S,v 1.4 1996/09/30 02:22:38 davem Exp $ | 1 | /* |
2 | * udiv.S: This routine was taken from glibc-1.09 and is covered | 2 | * udiv.S: This routine was taken from glibc-1.09 and is covered |
3 | * by the GNU Library General Public License Version 2. | 3 | * by the GNU Library General Public License Version 2. |
4 | */ | 4 | */ |
diff --git a/arch/sparc/lib/umul.S b/arch/sparc/lib/umul.S index f0e5b20a2536..1f36ae682529 100644 --- a/arch/sparc/lib/umul.S +++ b/arch/sparc/lib/umul.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: umul.S,v 1.4 1996/09/30 02:22:39 davem Exp $ | 1 | /* |
2 | * umul.S: This routine was taken from glibc-1.09 and is covered | 2 | * umul.S: This routine was taken from glibc-1.09 and is covered |
3 | * by the GNU Library General Public License Version 2. | 3 | * by the GNU Library General Public License Version 2. |
4 | */ | 4 | */ |
diff --git a/arch/sparc/lib/urem.S b/arch/sparc/lib/urem.S index 6b92bdc8b04c..77123eb83c44 100644 --- a/arch/sparc/lib/urem.S +++ b/arch/sparc/lib/urem.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: urem.S,v 1.4 1996/09/30 02:22:42 davem Exp $ | 1 | /* |
2 | * urem.S: This routine was taken from glibc-1.09 and is covered | 2 | * urem.S: This routine was taken from glibc-1.09 and is covered |
3 | * by the GNU Library General Public License Version 2. | 3 | * by the GNU Library General Public License Version 2. |
4 | */ | 4 | */ |
diff --git a/arch/sparc/math-emu/ashldi3.S b/arch/sparc/math-emu/ashldi3.S index eab1d097296a..7230ff5c7aa1 100644 --- a/arch/sparc/math-emu/ashldi3.S +++ b/arch/sparc/math-emu/ashldi3.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ashldi3.S,v 1.1 1998/04/06 16:09:28 jj Exp $ | 1 | /* |
2 | * ashldi3.S: Math-emu code creates all kinds of references to | 2 | * ashldi3.S: Math-emu code creates all kinds of references to |
3 | * this little routine on the sparc with gcc. | 3 | * this little routine on the sparc with gcc. |
4 | * | 4 | * |
diff --git a/arch/sparc/mm/Makefile b/arch/sparc/mm/Makefile index 16eeba4b991a..109c8b22cb38 100644 --- a/arch/sparc/mm/Makefile +++ b/arch/sparc/mm/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.38 2000/12/15 00:41:22 davem Exp $ | ||
2 | # Makefile for the linux Sparc-specific parts of the memory manager. | 1 | # Makefile for the linux Sparc-specific parts of the memory manager. |
3 | # | 2 | # |
4 | 3 | ||
diff --git a/arch/sparc/mm/fault.c b/arch/sparc/mm/fault.c index abd50795a7b6..0a3cd8f6cfe4 100644 --- a/arch/sparc/mm/fault.c +++ b/arch/sparc/mm/fault.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: fault.c,v 1.122 2001/11/17 07:19:26 davem Exp $ | 1 | /* |
2 | * fault.c: Page fault handlers for the Sparc. | 2 | * fault.c: Page fault handlers for the Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/mm/generic.c b/arch/sparc/mm/generic.c index 1ef7fa03fefe..a289261da9fd 100644 --- a/arch/sparc/mm/generic.c +++ b/arch/sparc/mm/generic.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: generic.c,v 1.14 2001/12/21 04:56:15 davem Exp $ | 1 | /* |
2 | * generic.c: Generic Sparc mm routines that are not dependent upon | 2 | * generic.c: Generic Sparc mm routines that are not dependent upon |
3 | * MMU type but are Sparc specific. | 3 | * MMU type but are Sparc specific. |
4 | * | 4 | * |
diff --git a/arch/sparc/mm/hypersparc.S b/arch/sparc/mm/hypersparc.S index d29cc24c5bba..44aad32eeb4e 100644 --- a/arch/sparc/mm/hypersparc.S +++ b/arch/sparc/mm/hypersparc.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: hypersparc.S,v 1.18 2001/12/21 04:56:15 davem Exp $ | 1 | /* |
2 | * hypersparc.S: High speed Hypersparc mmu/cache operations. | 2 | * hypersparc.S: High speed Hypersparc mmu/cache operations. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/mm/init.c b/arch/sparc/mm/init.c index b89837accc88..7794ecb896e3 100644 --- a/arch/sparc/mm/init.c +++ b/arch/sparc/mm/init.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: init.c,v 1.103 2001/11/19 19:03:08 davem Exp $ | 1 | /* |
2 | * linux/arch/sparc/mm/init.c | 2 | * linux/arch/sparc/mm/init.c |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c index b86dfce8eee4..f167835db3df 100644 --- a/arch/sparc/mm/io-unit.c +++ b/arch/sparc/mm/io-unit.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: io-unit.c,v 1.24 2001/12/17 07:05:09 davem Exp $ | 1 | /* |
2 | * io-unit.c: IO-UNIT specific routines for memory management. | 2 | * io-unit.c: IO-UNIT specific routines for memory management. |
3 | * | 3 | * |
4 | * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 4 | * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
diff --git a/arch/sparc/mm/loadmmu.c b/arch/sparc/mm/loadmmu.c index 2d9cd65160a4..652be05acbea 100644 --- a/arch/sparc/mm/loadmmu.c +++ b/arch/sparc/mm/loadmmu.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: loadmmu.c,v 1.56 2000/02/08 20:24:21 davem Exp $ | 1 | /* |
2 | * loadmmu.c: This code loads up all the mm function pointers once the | 2 | * loadmmu.c: This code loads up all the mm function pointers once the |
3 | * machine type has been determined. It also sets the static | 3 | * machine type has been determined. It also sets the static |
4 | * mmu values such as PAGE_NONE, etc. | 4 | * mmu values such as PAGE_NONE, etc. |
diff --git a/arch/sparc/mm/nosrmmu.c b/arch/sparc/mm/nosrmmu.c index 9e215659697e..3701f70fc30a 100644 --- a/arch/sparc/mm/nosrmmu.c +++ b/arch/sparc/mm/nosrmmu.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: nosrmmu.c,v 1.5 1999/11/19 04:11:54 davem Exp $ | 1 | /* |
2 | * nosrmmu.c: This file is a bunch of dummies for sun4 compiles, | 2 | * nosrmmu.c: This file is a bunch of dummies for sun4 compiles, |
3 | * so that it does not need srmmu and avoid ifdefs. | 3 | * so that it does not need srmmu and avoid ifdefs. |
4 | * | 4 | * |
diff --git a/arch/sparc/mm/nosun4c.c b/arch/sparc/mm/nosun4c.c index ea2e2105341d..196263f895b7 100644 --- a/arch/sparc/mm/nosun4c.c +++ b/arch/sparc/mm/nosun4c.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: nosun4c.c,v 1.3 2000/02/14 04:52:36 jj Exp $ | 1 | /* |
2 | * nosun4c.c: This file is a bunch of dummies for SMP compiles, | 2 | * nosun4c.c: This file is a bunch of dummies for SMP compiles, |
3 | * so that it does not need sun4c and avoid ifdefs. | 3 | * so that it does not need sun4c and avoid ifdefs. |
4 | * | 4 | * |
diff --git a/arch/sparc/mm/swift.S b/arch/sparc/mm/swift.S index 9f4cd396a0fa..c801c3953a00 100644 --- a/arch/sparc/mm/swift.S +++ b/arch/sparc/mm/swift.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: swift.S,v 1.9 2002/01/08 11:11:59 davem Exp $ | 1 | /* |
2 | * swift.S: MicroSparc-II mmu/cache operations. | 2 | * swift.S: MicroSparc-II mmu/cache operations. |
3 | * | 3 | * |
4 | * Copyright (C) 1999 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 1999 David S. Miller (davem@redhat.com) |
diff --git a/arch/sparc/mm/tsunami.S b/arch/sparc/mm/tsunami.S index 4988e6a310bb..db0d6de33a87 100644 --- a/arch/sparc/mm/tsunami.S +++ b/arch/sparc/mm/tsunami.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: tsunami.S,v 1.7 2001/12/21 04:56:15 davem Exp $ | 1 | /* |
2 | * tsunami.S: High speed MicroSparc-I mmu/cache operations. | 2 | * tsunami.S: High speed MicroSparc-I mmu/cache operations. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/mm/viking.S b/arch/sparc/mm/viking.S index 754c622548a5..6dfcc13d3100 100644 --- a/arch/sparc/mm/viking.S +++ b/arch/sparc/mm/viking.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: viking.S,v 1.19 2001/12/21 04:56:15 davem Exp $ | 1 | /* |
2 | * viking.S: High speed Viking cache/mmu operations | 2 | * viking.S: High speed Viking cache/mmu operations |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) |
diff --git a/arch/sparc/prom/Makefile b/arch/sparc/prom/Makefile index 2b217ee40703..7f5eacfcfbcf 100644 --- a/arch/sparc/prom/Makefile +++ b/arch/sparc/prom/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.8 2000/12/15 00:41:22 davem Exp $ | ||
2 | # Makefile for the Sun Boot PROM interface library under | 1 | # Makefile for the Sun Boot PROM interface library under |
3 | # Linux. | 2 | # Linux. |
4 | # | 3 | # |
diff --git a/arch/sparc/prom/bootstr.c b/arch/sparc/prom/bootstr.c index cfdeac2788d1..5a35c768ff7c 100644 --- a/arch/sparc/prom/bootstr.c +++ b/arch/sparc/prom/bootstr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: bootstr.c,v 1.20 2000/02/08 20:24:23 davem Exp $ | 1 | /* |
2 | * bootstr.c: Boot string/argument acquisition from the PROM. | 2 | * bootstr.c: Boot string/argument acquisition from the PROM. |
3 | * | 3 | * |
4 | * Copyright(C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright(C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/prom/console.c b/arch/sparc/prom/console.c index 2a007a784415..790057a34616 100644 --- a/arch/sparc/prom/console.c +++ b/arch/sparc/prom/console.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: console.c,v 1.25 2001/10/30 04:54:22 davem Exp $ | 1 | /* |
2 | * console.c: Routines that deal with sending and receiving IO | 2 | * console.c: Routines that deal with sending and receiving IO |
3 | * to/from the current console device using the PROM. | 3 | * to/from the current console device using the PROM. |
4 | * | 4 | * |
diff --git a/arch/sparc/prom/devmap.c b/arch/sparc/prom/devmap.c index eb12073578ad..1e517915b0df 100644 --- a/arch/sparc/prom/devmap.c +++ b/arch/sparc/prom/devmap.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: devmap.c,v 1.7 2000/08/26 02:38:03 anton Exp $ | 1 | /* |
2 | * promdevmap.c: Map device/IO areas to virtual addresses. | 2 | * promdevmap.c: Map device/IO areas to virtual addresses. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/prom/devops.c b/arch/sparc/prom/devops.c index 61919b54f6cc..9f1a95c91ad1 100644 --- a/arch/sparc/prom/devops.c +++ b/arch/sparc/prom/devops.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: devops.c,v 1.13 2000/08/26 02:38:03 anton Exp $ | 1 | /* |
2 | * devops.c: Device operations using the PROM. | 2 | * devops.c: Device operations using the PROM. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/prom/init.c b/arch/sparc/prom/init.c index 2fa3a474e3a2..729f87066945 100644 --- a/arch/sparc/prom/init.c +++ b/arch/sparc/prom/init.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: init.c,v 1.14 2000/01/29 01:09:12 anton Exp $ | 1 | /* |
2 | * init.c: Initialize internal variables used by the PROM | 2 | * init.c: Initialize internal variables used by the PROM |
3 | * library functions. | 3 | * library functions. |
4 | * | 4 | * |
diff --git a/arch/sparc/prom/misc.c b/arch/sparc/prom/misc.c index d9fb3af41c1f..49b5057b9601 100644 --- a/arch/sparc/prom/misc.c +++ b/arch/sparc/prom/misc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: misc.c,v 1.18 2000/08/26 02:38:03 anton Exp $ | 1 | /* |
2 | * misc.c: Miscellaneous prom functions that don't belong | 2 | * misc.c: Miscellaneous prom functions that don't belong |
3 | * anywhere else. | 3 | * anywhere else. |
4 | * | 4 | * |
diff --git a/arch/sparc/prom/mp.c b/arch/sparc/prom/mp.c index 92fe3739fdb8..4c4dc79f65af 100644 --- a/arch/sparc/prom/mp.c +++ b/arch/sparc/prom/mp.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: mp.c,v 1.12 2000/08/26 02:38:03 anton Exp $ | 1 | /* |
2 | * mp.c: OpenBoot Prom Multiprocessor support routines. Don't call | 2 | * mp.c: OpenBoot Prom Multiprocessor support routines. Don't call |
3 | * these on a UP or else you will halt and catch fire. ;) | 3 | * these on a UP or else you will halt and catch fire. ;) |
4 | * | 4 | * |
diff --git a/arch/sparc/prom/palloc.c b/arch/sparc/prom/palloc.c index 84ce8bc54473..20be339cc2ce 100644 --- a/arch/sparc/prom/palloc.c +++ b/arch/sparc/prom/palloc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: palloc.c,v 1.4 1996/04/25 06:09:48 davem Exp $ | 1 | /* |
2 | * palloc.c: Memory allocation from the Sun PROM. | 2 | * palloc.c: Memory allocation from the Sun PROM. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/prom/ranges.c b/arch/sparc/prom/ranges.c index a2920323c900..f9b7def35f6e 100644 --- a/arch/sparc/prom/ranges.c +++ b/arch/sparc/prom/ranges.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ranges.c,v 1.15 2001/12/19 00:29:51 davem Exp $ | 1 | /* |
2 | * ranges.c: Handle ranges in newer proms for obio/sbus. | 2 | * ranges.c: Handle ranges in newer proms for obio/sbus. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc/prom/segment.c b/arch/sparc/prom/segment.c index 09d6460165ab..04fd03a7f926 100644 --- a/arch/sparc/prom/segment.c +++ b/arch/sparc/prom/segment.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: segment.c,v 1.7 2000/08/26 02:38:03 anton Exp $ | 1 | /* |
2 | * segment.c: Prom routine to map segments in other contexts before | 2 | * segment.c: Prom routine to map segments in other contexts before |
3 | * a standalone is completely mapped. This is for sun4 and | 3 | * a standalone is completely mapped. This is for sun4 and |
4 | * sun4c architectures only. | 4 | * sun4c architectures only. |
diff --git a/arch/sparc/prom/tree.c b/arch/sparc/prom/tree.c index 5ec246573a98..f228fe057b24 100644 --- a/arch/sparc/prom/tree.c +++ b/arch/sparc/prom/tree.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: tree.c,v 1.26 2000/08/26 02:38:03 anton Exp $ | 1 | /* |
2 | * tree.c: Basic device tree traversal/scanning for the Linux | 2 | * tree.c: Basic device tree traversal/scanning for the Linux |
3 | * prom library. | 3 | * prom library. |
4 | * | 4 | * |
diff --git a/arch/sparc64/Makefile b/arch/sparc64/Makefile index 9cb75c852b45..4b8f2b084c21 100644 --- a/arch/sparc64/Makefile +++ b/arch/sparc64/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.52 2002/02/09 19:49:31 davem Exp $ | ||
2 | # sparc64/Makefile | 1 | # sparc64/Makefile |
3 | # | 2 | # |
4 | # Makefile for the architecture dependent flags and dependencies on the | 3 | # Makefile for the architecture dependent flags and dependencies on the |
diff --git a/arch/sparc64/boot/Makefile b/arch/sparc64/boot/Makefile index 6968a6da57da..0458b5244f09 100644 --- a/arch/sparc64/boot/Makefile +++ b/arch/sparc64/boot/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.4 1997/12/15 20:08:56 ecd Exp $ | ||
2 | # Makefile for the Sparc64 boot stuff. | 1 | # Makefile for the Sparc64 boot stuff. |
3 | # | 2 | # |
4 | # Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 3 | # Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/boot/piggyback.c b/arch/sparc64/boot/piggyback.c index 36f907408c60..de364bfed0bb 100644 --- a/arch/sparc64/boot/piggyback.c +++ b/arch/sparc64/boot/piggyback.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: piggyback.c,v 1.2 2000/09/19 14:34:39 anton Exp $ | 1 | /* |
2 | Simple utility to make a single-image install kernel with initial ramdisk | 2 | Simple utility to make a single-image install kernel with initial ramdisk |
3 | for Sparc64 tftpbooting without need to set up nfs. | 3 | for Sparc64 tftpbooting without need to set up nfs. |
4 | 4 | ||
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig index aff93c9d13f4..76eb832527f2 100644 --- a/arch/sparc64/defconfig +++ b/arch/sparc64/defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.25 | 3 | # Linux kernel version: 2.6.26-rc2 |
4 | # Sat Apr 26 03:11:06 2008 | 4 | # Fri May 16 13:36:07 2008 |
5 | # | 5 | # |
6 | CONFIG_SPARC=y | 6 | CONFIG_SPARC=y |
7 | CONFIG_SPARC64=y | 7 | CONFIG_SPARC64=y |
@@ -74,6 +74,7 @@ CONFIG_SYSCTL=y | |||
74 | # CONFIG_EMBEDDED is not set | 74 | # CONFIG_EMBEDDED is not set |
75 | CONFIG_UID16=y | 75 | CONFIG_UID16=y |
76 | CONFIG_SYSCTL_SYSCALL=y | 76 | CONFIG_SYSCTL_SYSCALL=y |
77 | CONFIG_SYSCTL_SYSCALL_CHECK=y | ||
77 | CONFIG_KALLSYMS=y | 78 | CONFIG_KALLSYMS=y |
78 | # CONFIG_KALLSYMS_ALL is not set | 79 | # CONFIG_KALLSYMS_ALL is not set |
79 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 80 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
@@ -103,12 +104,14 @@ CONFIG_KPROBES=y | |||
103 | CONFIG_KRETPROBES=y | 104 | CONFIG_KRETPROBES=y |
104 | CONFIG_HAVE_KPROBES=y | 105 | CONFIG_HAVE_KPROBES=y |
105 | CONFIG_HAVE_KRETPROBES=y | 106 | CONFIG_HAVE_KRETPROBES=y |
107 | # CONFIG_HAVE_DMA_ATTRS is not set | ||
106 | CONFIG_PROC_PAGE_MONITOR=y | 108 | CONFIG_PROC_PAGE_MONITOR=y |
107 | CONFIG_SLABINFO=y | 109 | CONFIG_SLABINFO=y |
108 | CONFIG_RT_MUTEXES=y | 110 | CONFIG_RT_MUTEXES=y |
109 | # CONFIG_TINY_SHMEM is not set | 111 | # CONFIG_TINY_SHMEM is not set |
110 | CONFIG_BASE_SMALL=0 | 112 | CONFIG_BASE_SMALL=0 |
111 | CONFIG_MODULES=y | 113 | CONFIG_MODULES=y |
114 | # CONFIG_MODULE_FORCE_LOAD is not set | ||
112 | CONFIG_MODULE_UNLOAD=y | 115 | CONFIG_MODULE_UNLOAD=y |
113 | CONFIG_MODULE_FORCE_UNLOAD=y | 116 | CONFIG_MODULE_FORCE_UNLOAD=y |
114 | CONFIG_MODVERSIONS=y | 117 | CONFIG_MODVERSIONS=y |
@@ -170,6 +173,7 @@ CONFIG_HAVE_MEMORY_PRESENT=y | |||
170 | CONFIG_SPARSEMEM_EXTREME=y | 173 | CONFIG_SPARSEMEM_EXTREME=y |
171 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | 174 | CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y |
172 | CONFIG_SPARSEMEM_VMEMMAP=y | 175 | CONFIG_SPARSEMEM_VMEMMAP=y |
176 | CONFIG_PAGEFLAGS_EXTENDED=y | ||
173 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 177 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
174 | CONFIG_MIGRATION=y | 178 | CONFIG_MIGRATION=y |
175 | CONFIG_RESOURCES_64BIT=y | 179 | CONFIG_RESOURCES_64BIT=y |
@@ -402,7 +406,6 @@ CONFIG_IDEPCI_PCIBUS_ORDER=y | |||
402 | CONFIG_BLK_DEV_IDEDMA_PCI=y | 406 | CONFIG_BLK_DEV_IDEDMA_PCI=y |
403 | # CONFIG_BLK_DEV_AEC62XX is not set | 407 | # CONFIG_BLK_DEV_AEC62XX is not set |
404 | CONFIG_BLK_DEV_ALI15X3=y | 408 | CONFIG_BLK_DEV_ALI15X3=y |
405 | # CONFIG_WDC_ALI15X3 is not set | ||
406 | # CONFIG_BLK_DEV_AMD74XX is not set | 409 | # CONFIG_BLK_DEV_AMD74XX is not set |
407 | # CONFIG_BLK_DEV_CMD64X is not set | 410 | # CONFIG_BLK_DEV_CMD64X is not set |
408 | # CONFIG_BLK_DEV_TRIFLEX is not set | 411 | # CONFIG_BLK_DEV_TRIFLEX is not set |
@@ -609,6 +612,7 @@ CONFIG_NIU=m | |||
609 | # CONFIG_MLX4_CORE is not set | 612 | # CONFIG_MLX4_CORE is not set |
610 | # CONFIG_TEHUTI is not set | 613 | # CONFIG_TEHUTI is not set |
611 | # CONFIG_BNX2X is not set | 614 | # CONFIG_BNX2X is not set |
615 | # CONFIG_SFC is not set | ||
612 | # CONFIG_TR is not set | 616 | # CONFIG_TR is not set |
613 | 617 | ||
614 | # | 618 | # |
@@ -717,6 +721,7 @@ CONFIG_VT=y | |||
717 | CONFIG_VT_CONSOLE=y | 721 | CONFIG_VT_CONSOLE=y |
718 | CONFIG_HW_CONSOLE=y | 722 | CONFIG_HW_CONSOLE=y |
719 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 723 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
724 | # CONFIG_DEVKMEM is not set | ||
720 | # CONFIG_SERIAL_NONSTANDARD is not set | 725 | # CONFIG_SERIAL_NONSTANDARD is not set |
721 | # CONFIG_NOZOMI is not set | 726 | # CONFIG_NOZOMI is not set |
722 | 727 | ||
@@ -793,12 +798,7 @@ CONFIG_I2C_ALGOBIT=y | |||
793 | # CONFIG_I2C_DEBUG_ALGO is not set | 798 | # CONFIG_I2C_DEBUG_ALGO is not set |
794 | # CONFIG_I2C_DEBUG_BUS is not set | 799 | # CONFIG_I2C_DEBUG_BUS is not set |
795 | # CONFIG_I2C_DEBUG_CHIP is not set | 800 | # CONFIG_I2C_DEBUG_CHIP is not set |
796 | |||
797 | # | ||
798 | # SPI support | ||
799 | # | ||
800 | # CONFIG_SPI is not set | 801 | # CONFIG_SPI is not set |
801 | # CONFIG_SPI_MASTER is not set | ||
802 | # CONFIG_W1 is not set | 802 | # CONFIG_W1 is not set |
803 | # CONFIG_POWER_SUPPLY is not set | 803 | # CONFIG_POWER_SUPPLY is not set |
804 | CONFIG_HWMON=y | 804 | CONFIG_HWMON=y |
@@ -873,8 +873,17 @@ CONFIG_SSB_POSSIBLE=y | |||
873 | # | 873 | # |
874 | # Multimedia devices | 874 | # Multimedia devices |
875 | # | 875 | # |
876 | |||
877 | # | ||
878 | # Multimedia core support | ||
879 | # | ||
876 | # CONFIG_VIDEO_DEV is not set | 880 | # CONFIG_VIDEO_DEV is not set |
877 | # CONFIG_DVB_CORE is not set | 881 | # CONFIG_DVB_CORE is not set |
882 | # CONFIG_VIDEO_MEDIA is not set | ||
883 | |||
884 | # | ||
885 | # Multimedia drivers | ||
886 | # | ||
878 | # CONFIG_DAB is not set | 887 | # CONFIG_DAB is not set |
879 | 888 | ||
880 | # | 889 | # |
@@ -893,8 +902,8 @@ CONFIG_FB_CFB_IMAGEBLIT=y | |||
893 | # CONFIG_FB_SYS_FILLRECT is not set | 902 | # CONFIG_FB_SYS_FILLRECT is not set |
894 | # CONFIG_FB_SYS_COPYAREA is not set | 903 | # CONFIG_FB_SYS_COPYAREA is not set |
895 | # CONFIG_FB_SYS_IMAGEBLIT is not set | 904 | # CONFIG_FB_SYS_IMAGEBLIT is not set |
905 | # CONFIG_FB_FOREIGN_ENDIAN is not set | ||
896 | # CONFIG_FB_SYS_FOPS is not set | 906 | # CONFIG_FB_SYS_FOPS is not set |
897 | CONFIG_FB_DEFERRED_IO=y | ||
898 | # CONFIG_FB_SVGALIB is not set | 907 | # CONFIG_FB_SVGALIB is not set |
899 | # CONFIG_FB_MACMODES is not set | 908 | # CONFIG_FB_MACMODES is not set |
900 | # CONFIG_FB_BACKLIGHT is not set | 909 | # CONFIG_FB_BACKLIGHT is not set |
@@ -1100,6 +1109,10 @@ CONFIG_SND_SUN_CS4231=m | |||
1100 | # | 1109 | # |
1101 | 1110 | ||
1102 | # | 1111 | # |
1112 | # SoC Audio for the Texas Instruments OMAP | ||
1113 | # | ||
1114 | |||
1115 | # | ||
1103 | # Open Sound System | 1116 | # Open Sound System |
1104 | # | 1117 | # |
1105 | # CONFIG_SOUND_PRIME is not set | 1118 | # CONFIG_SOUND_PRIME is not set |
@@ -1135,10 +1148,12 @@ CONFIG_USB_DEVICEFS=y | |||
1135 | # | 1148 | # |
1136 | # USB Host Controller Drivers | 1149 | # USB Host Controller Drivers |
1137 | # | 1150 | # |
1151 | # CONFIG_USB_C67X00_HCD is not set | ||
1138 | CONFIG_USB_EHCI_HCD=m | 1152 | CONFIG_USB_EHCI_HCD=m |
1139 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1153 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1140 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1154 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1141 | # CONFIG_USB_ISP116X_HCD is not set | 1155 | # CONFIG_USB_ISP116X_HCD is not set |
1156 | # CONFIG_USB_ISP1760_HCD is not set | ||
1142 | CONFIG_USB_OHCI_HCD=y | 1157 | CONFIG_USB_OHCI_HCD=y |
1143 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set | 1158 | # CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set |
1144 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set | 1159 | # CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set |
@@ -1173,6 +1188,7 @@ CONFIG_USB_STORAGE=m | |||
1173 | # CONFIG_USB_STORAGE_ALAUDA is not set | 1188 | # CONFIG_USB_STORAGE_ALAUDA is not set |
1174 | # CONFIG_USB_STORAGE_ONETOUCH is not set | 1189 | # CONFIG_USB_STORAGE_ONETOUCH is not set |
1175 | # CONFIG_USB_STORAGE_KARMA is not set | 1190 | # CONFIG_USB_STORAGE_KARMA is not set |
1191 | # CONFIG_USB_STORAGE_CYPRESS_ATACB is not set | ||
1176 | # CONFIG_USB_LIBUSUAL is not set | 1192 | # CONFIG_USB_LIBUSUAL is not set |
1177 | 1193 | ||
1178 | # | 1194 | # |
@@ -1214,6 +1230,7 @@ CONFIG_USB_STORAGE=m | |||
1214 | # CONFIG_MMC is not set | 1230 | # CONFIG_MMC is not set |
1215 | # CONFIG_MEMSTICK is not set | 1231 | # CONFIG_MEMSTICK is not set |
1216 | # CONFIG_NEW_LEDS is not set | 1232 | # CONFIG_NEW_LEDS is not set |
1233 | # CONFIG_ACCESSIBILITY is not set | ||
1217 | # CONFIG_INFINIBAND is not set | 1234 | # CONFIG_INFINIBAND is not set |
1218 | # CONFIG_RTC_CLASS is not set | 1235 | # CONFIG_RTC_CLASS is not set |
1219 | # CONFIG_UIO is not set | 1236 | # CONFIG_UIO is not set |
@@ -1367,6 +1384,7 @@ CONFIG_TRACE_IRQFLAGS_SUPPORT=y | |||
1367 | CONFIG_PRINTK_TIME=y | 1384 | CONFIG_PRINTK_TIME=y |
1368 | # CONFIG_ENABLE_WARN_DEPRECATED is not set | 1385 | # CONFIG_ENABLE_WARN_DEPRECATED is not set |
1369 | CONFIG_ENABLE_MUST_CHECK=y | 1386 | CONFIG_ENABLE_MUST_CHECK=y |
1387 | CONFIG_FRAME_WARN=2048 | ||
1370 | CONFIG_MAGIC_SYSRQ=y | 1388 | CONFIG_MAGIC_SYSRQ=y |
1371 | # CONFIG_UNUSED_SYMBOLS is not set | 1389 | # CONFIG_UNUSED_SYMBOLS is not set |
1372 | CONFIG_DEBUG_FS=y | 1390 | CONFIG_DEBUG_FS=y |
@@ -1377,6 +1395,7 @@ CONFIG_DETECT_SOFTLOCKUP=y | |||
1377 | # CONFIG_SCHED_DEBUG is not set | 1395 | # CONFIG_SCHED_DEBUG is not set |
1378 | CONFIG_SCHEDSTATS=y | 1396 | CONFIG_SCHEDSTATS=y |
1379 | # CONFIG_TIMER_STATS is not set | 1397 | # CONFIG_TIMER_STATS is not set |
1398 | # CONFIG_DEBUG_OBJECTS is not set | ||
1380 | # CONFIG_SLUB_DEBUG_ON is not set | 1399 | # CONFIG_SLUB_DEBUG_ON is not set |
1381 | # CONFIG_SLUB_STATS is not set | 1400 | # CONFIG_SLUB_STATS is not set |
1382 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1401 | # CONFIG_DEBUG_RT_MUTEXES is not set |
@@ -1402,6 +1421,8 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1402 | # CONFIG_LKDTM is not set | 1421 | # CONFIG_LKDTM is not set |
1403 | # CONFIG_FAULT_INJECTION is not set | 1422 | # CONFIG_FAULT_INJECTION is not set |
1404 | # CONFIG_SAMPLES is not set | 1423 | # CONFIG_SAMPLES is not set |
1424 | CONFIG_HAVE_ARCH_KGDB=y | ||
1425 | # CONFIG_KGDB is not set | ||
1405 | # CONFIG_DEBUG_STACK_USAGE is not set | 1426 | # CONFIG_DEBUG_STACK_USAGE is not set |
1406 | # CONFIG_DEBUG_DCFLUSH is not set | 1427 | # CONFIG_DEBUG_DCFLUSH is not set |
1407 | # CONFIG_STACK_DEBUG is not set | 1428 | # CONFIG_STACK_DEBUG is not set |
@@ -1503,6 +1524,7 @@ CONFIG_CRYPTO_HW=y | |||
1503 | # Library routines | 1524 | # Library routines |
1504 | # | 1525 | # |
1505 | CONFIG_BITREVERSE=y | 1526 | CONFIG_BITREVERSE=y |
1527 | # CONFIG_GENERIC_FIND_FIRST_BIT is not set | ||
1506 | CONFIG_CRC_CCITT=m | 1528 | CONFIG_CRC_CCITT=m |
1507 | CONFIG_CRC16=m | 1529 | CONFIG_CRC16=m |
1508 | # CONFIG_CRC_ITU_T is not set | 1530 | # CONFIG_CRC_ITU_T is not set |
diff --git a/arch/sparc64/kernel/dtlb_prot.S b/arch/sparc64/kernel/dtlb_prot.S index e0a920162604..b2c2c5be281c 100644 --- a/arch/sparc64/kernel/dtlb_prot.S +++ b/arch/sparc64/kernel/dtlb_prot.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: dtlb_prot.S,v 1.22 2001/04/11 23:40:32 davem Exp $ | 1 | /* |
2 | * dtlb_prot.S: DTLB protection trap strategy. | 2 | * dtlb_prot.S: DTLB protection trap strategy. |
3 | * This is included directly into the trap table. | 3 | * This is included directly into the trap table. |
4 | * | 4 | * |
diff --git a/arch/sparc64/kernel/ebus.c b/arch/sparc64/kernel/ebus.c index bc2632274840..c49d0388b793 100644 --- a/arch/sparc64/kernel/ebus.c +++ b/arch/sparc64/kernel/ebus.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ebus.c,v 1.64 2001/11/08 04:41:33 davem Exp $ | 1 | /* |
2 | * ebus.c: PCI to EBus bridge device. | 2 | * ebus.c: PCI to EBus bridge device. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) |
diff --git a/arch/sparc64/kernel/etrap.S b/arch/sparc64/kernel/etrap.S index f25e1da3fd03..29ce489bc188 100644 --- a/arch/sparc64/kernel/etrap.S +++ b/arch/sparc64/kernel/etrap.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: etrap.S,v 1.46 2002/02/09 19:49:30 davem Exp $ | 1 | /* |
2 | * etrap.S: Preparing for entry into the kernel on Sparc V9. | 2 | * etrap.S: Preparing for entry into the kernel on Sparc V9. |
3 | * | 3 | * |
4 | * Copyright (C) 1996, 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996, 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/kernel/idprom.c b/arch/sparc64/kernel/idprom.c index 3b6789e09a72..5b45a808c621 100644 --- a/arch/sparc64/kernel/idprom.c +++ b/arch/sparc64/kernel/idprom.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: idprom.c,v 1.3 1999/08/31 06:54:53 davem Exp $ | 1 | /* |
2 | * idprom.c: Routines to load the idprom into kernel addresses and | 2 | * idprom.c: Routines to load the idprom into kernel addresses and |
3 | * interpret the data contained within. | 3 | * interpret the data contained within. |
4 | * | 4 | * |
diff --git a/arch/sparc64/kernel/init_task.c b/arch/sparc64/kernel/init_task.c index 90007cf88bac..d2b312381c19 100644 --- a/arch/sparc64/kernel/init_task.c +++ b/arch/sparc64/kernel/init_task.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <asm/processor.h> | 10 | #include <asm/processor.h> |
11 | 11 | ||
12 | static struct fs_struct init_fs = INIT_FS; | 12 | static struct fs_struct init_fs = INIT_FS; |
13 | static struct files_struct init_files = INIT_FILES; | ||
14 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 13 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
15 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 14 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
16 | struct mm_struct init_mm = INIT_MM(init_mm); | 15 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c index 4129c0449856..2084f81a76e1 100644 --- a/arch/sparc64/kernel/process.c +++ b/arch/sparc64/kernel/process.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* arch/sparc64/kernel/process.c | 1 | /* arch/sparc64/kernel/process.c |
2 | * | 2 | * |
3 | * Copyright (C) 1995, 1996 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1995, 1996, 2008 David S. Miller (davem@davemloft.net) |
4 | * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1996 Eddie C. Dost (ecd@skynet.be) |
5 | * Copyright (C) 1997, 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 5 | * Copyright (C) 1997, 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
6 | */ | 6 | */ |
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
31 | #include <linux/cpu.h> | 31 | #include <linux/cpu.h> |
32 | #include <linux/elfcore.h> | 32 | #include <linux/elfcore.h> |
33 | #include <linux/sysrq.h> | ||
33 | 34 | ||
34 | #include <asm/oplib.h> | 35 | #include <asm/oplib.h> |
35 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
@@ -49,6 +50,8 @@ | |||
49 | #include <asm/sstate.h> | 50 | #include <asm/sstate.h> |
50 | #include <asm/reboot.h> | 51 | #include <asm/reboot.h> |
51 | #include <asm/syscalls.h> | 52 | #include <asm/syscalls.h> |
53 | #include <asm/irq_regs.h> | ||
54 | #include <asm/smp.h> | ||
52 | 55 | ||
53 | /* #define VERBOSE_SHOWREGS */ | 56 | /* #define VERBOSE_SHOWREGS */ |
54 | 57 | ||
@@ -298,6 +301,118 @@ void show_regs(struct pt_regs *regs) | |||
298 | #endif | 301 | #endif |
299 | } | 302 | } |
300 | 303 | ||
304 | #ifdef CONFIG_MAGIC_SYSRQ | ||
305 | struct global_reg_snapshot global_reg_snapshot[NR_CPUS]; | ||
306 | static DEFINE_SPINLOCK(global_reg_snapshot_lock); | ||
307 | |||
308 | static void __global_reg_self(struct thread_info *tp, struct pt_regs *regs, | ||
309 | int this_cpu) | ||
310 | { | ||
311 | flushw_all(); | ||
312 | |||
313 | global_reg_snapshot[this_cpu].tstate = regs->tstate; | ||
314 | global_reg_snapshot[this_cpu].tpc = regs->tpc; | ||
315 | global_reg_snapshot[this_cpu].tnpc = regs->tnpc; | ||
316 | global_reg_snapshot[this_cpu].o7 = regs->u_regs[UREG_I7]; | ||
317 | |||
318 | if (regs->tstate & TSTATE_PRIV) { | ||
319 | struct reg_window *rw; | ||
320 | |||
321 | rw = (struct reg_window *) | ||
322 | (regs->u_regs[UREG_FP] + STACK_BIAS); | ||
323 | global_reg_snapshot[this_cpu].i7 = rw->ins[6]; | ||
324 | } else | ||
325 | global_reg_snapshot[this_cpu].i7 = 0; | ||
326 | |||
327 | global_reg_snapshot[this_cpu].thread = tp; | ||
328 | } | ||
329 | |||
330 | /* In order to avoid hangs we do not try to synchronize with the | ||
331 | * global register dump client cpus. The last store they make is to | ||
332 | * the thread pointer, so do a short poll waiting for that to become | ||
333 | * non-NULL. | ||
334 | */ | ||
335 | static void __global_reg_poll(struct global_reg_snapshot *gp) | ||
336 | { | ||
337 | int limit = 0; | ||
338 | |||
339 | while (!gp->thread && ++limit < 100) { | ||
340 | barrier(); | ||
341 | udelay(1); | ||
342 | } | ||
343 | } | ||
344 | |||
345 | static void sysrq_handle_globreg(int key, struct tty_struct *tty) | ||
346 | { | ||
347 | struct thread_info *tp = current_thread_info(); | ||
348 | struct pt_regs *regs = get_irq_regs(); | ||
349 | #ifdef CONFIG_KALLSYMS | ||
350 | char buffer[KSYM_SYMBOL_LEN]; | ||
351 | #endif | ||
352 | unsigned long flags; | ||
353 | int this_cpu, cpu; | ||
354 | |||
355 | if (!regs) | ||
356 | regs = tp->kregs; | ||
357 | |||
358 | spin_lock_irqsave(&global_reg_snapshot_lock, flags); | ||
359 | |||
360 | memset(global_reg_snapshot, 0, sizeof(global_reg_snapshot)); | ||
361 | |||
362 | this_cpu = raw_smp_processor_id(); | ||
363 | |||
364 | __global_reg_self(tp, regs, this_cpu); | ||
365 | |||
366 | smp_fetch_global_regs(); | ||
367 | |||
368 | for_each_online_cpu(cpu) { | ||
369 | struct global_reg_snapshot *gp = &global_reg_snapshot[cpu]; | ||
370 | struct thread_info *tp; | ||
371 | |||
372 | __global_reg_poll(gp); | ||
373 | |||
374 | tp = gp->thread; | ||
375 | printk("%c CPU[%3d]: TSTATE[%016lx] TPC[%016lx] TNPC[%016lx] TASK[%s:%d]\n", | ||
376 | (cpu == this_cpu ? '*' : ' '), cpu, | ||
377 | gp->tstate, gp->tpc, gp->tnpc, | ||
378 | ((tp && tp->task) ? tp->task->comm : "NULL"), | ||
379 | ((tp && tp->task) ? tp->task->pid : -1)); | ||
380 | #ifdef CONFIG_KALLSYMS | ||
381 | if (gp->tstate & TSTATE_PRIV) { | ||
382 | sprint_symbol(buffer, gp->tpc); | ||
383 | printk(" TPC[%s] ", buffer); | ||
384 | sprint_symbol(buffer, gp->o7); | ||
385 | printk("O7[%s] ", buffer); | ||
386 | sprint_symbol(buffer, gp->i7); | ||
387 | printk("I7[%s]\n", buffer); | ||
388 | } else | ||
389 | #endif | ||
390 | { | ||
391 | printk(" TPC[%lx] O7[%lx] I7[%lx]\n", | ||
392 | gp->tpc, gp->o7, gp->i7); | ||
393 | } | ||
394 | } | ||
395 | |||
396 | memset(global_reg_snapshot, 0, sizeof(global_reg_snapshot)); | ||
397 | |||
398 | spin_unlock_irqrestore(&global_reg_snapshot_lock, flags); | ||
399 | } | ||
400 | |||
401 | static struct sysrq_key_op sparc_globalreg_op = { | ||
402 | .handler = sysrq_handle_globreg, | ||
403 | .help_msg = "Globalregs", | ||
404 | .action_msg = "Show Global CPU Regs", | ||
405 | }; | ||
406 | |||
407 | static int __init sparc_globreg_init(void) | ||
408 | { | ||
409 | return register_sysrq_key('y', &sparc_globalreg_op); | ||
410 | } | ||
411 | |||
412 | core_initcall(sparc_globreg_init); | ||
413 | |||
414 | #endif | ||
415 | |||
301 | unsigned long thread_saved_pc(struct task_struct *tsk) | 416 | unsigned long thread_saved_pc(struct task_struct *tsk) |
302 | { | 417 | { |
303 | struct thread_info *ti = task_thread_info(tsk); | 418 | struct thread_info *ti = task_thread_info(tsk); |
@@ -542,20 +657,39 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | |||
542 | struct task_struct *p, struct pt_regs *regs) | 657 | struct task_struct *p, struct pt_regs *regs) |
543 | { | 658 | { |
544 | struct thread_info *t = task_thread_info(p); | 659 | struct thread_info *t = task_thread_info(p); |
660 | struct sparc_stackf *parent_sf; | ||
661 | unsigned long child_stack_sz; | ||
545 | char *child_trap_frame; | 662 | char *child_trap_frame; |
663 | int kernel_thread; | ||
546 | 664 | ||
547 | /* Calculate offset to stack_frame & pt_regs */ | 665 | kernel_thread = (regs->tstate & TSTATE_PRIV) ? 1 : 0; |
548 | child_trap_frame = task_stack_page(p) + (THREAD_SIZE - (TRACEREG_SZ+STACKFRAME_SZ)); | 666 | parent_sf = ((struct sparc_stackf *) regs) - 1; |
549 | memcpy(child_trap_frame, (((struct sparc_stackf *)regs)-1), (TRACEREG_SZ+STACKFRAME_SZ)); | ||
550 | 667 | ||
551 | t->flags = (t->flags & ~((0xffUL << TI_FLAG_CWP_SHIFT) | (0xffUL << TI_FLAG_CURRENT_DS_SHIFT))) | | 668 | /* Calculate offset to stack_frame & pt_regs */ |
669 | child_stack_sz = ((STACKFRAME_SZ + TRACEREG_SZ) + | ||
670 | (kernel_thread ? STACKFRAME_SZ : 0)); | ||
671 | child_trap_frame = (task_stack_page(p) + | ||
672 | (THREAD_SIZE - child_stack_sz)); | ||
673 | memcpy(child_trap_frame, parent_sf, child_stack_sz); | ||
674 | |||
675 | t->flags = (t->flags & ~((0xffUL << TI_FLAG_CWP_SHIFT) | | ||
676 | (0xffUL << TI_FLAG_CURRENT_DS_SHIFT))) | | ||
552 | (((regs->tstate + 1) & TSTATE_CWP) << TI_FLAG_CWP_SHIFT); | 677 | (((regs->tstate + 1) & TSTATE_CWP) << TI_FLAG_CWP_SHIFT); |
553 | t->new_child = 1; | 678 | t->new_child = 1; |
554 | t->ksp = ((unsigned long) child_trap_frame) - STACK_BIAS; | 679 | t->ksp = ((unsigned long) child_trap_frame) - STACK_BIAS; |
555 | t->kregs = (struct pt_regs *)(child_trap_frame+sizeof(struct sparc_stackf)); | 680 | t->kregs = (struct pt_regs *) (child_trap_frame + |
681 | sizeof(struct sparc_stackf)); | ||
556 | t->fpsaved[0] = 0; | 682 | t->fpsaved[0] = 0; |
557 | 683 | ||
558 | if (regs->tstate & TSTATE_PRIV) { | 684 | if (kernel_thread) { |
685 | struct sparc_stackf *child_sf = (struct sparc_stackf *) | ||
686 | (child_trap_frame + (STACKFRAME_SZ + TRACEREG_SZ)); | ||
687 | |||
688 | /* Zero terminate the stack backtrace. */ | ||
689 | child_sf->fp = NULL; | ||
690 | t->kregs->u_regs[UREG_FP] = | ||
691 | ((unsigned long) child_sf) - STACK_BIAS; | ||
692 | |||
559 | /* Special case, if we are spawning a kernel thread from | 693 | /* Special case, if we are spawning a kernel thread from |
560 | * a userspace task (via KMOD, NFS, or similar) we must | 694 | * a userspace task (via KMOD, NFS, or similar) we must |
561 | * disable performance counters in the child because the | 695 | * disable performance counters in the child because the |
@@ -566,12 +700,7 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long sp, | |||
566 | t->pcr_reg = 0; | 700 | t->pcr_reg = 0; |
567 | t->flags &= ~_TIF_PERFCTR; | 701 | t->flags &= ~_TIF_PERFCTR; |
568 | } | 702 | } |
569 | t->kregs->u_regs[UREG_FP] = t->ksp; | ||
570 | t->flags |= ((long)ASI_P << TI_FLAG_CURRENT_DS_SHIFT); | 703 | t->flags |= ((long)ASI_P << TI_FLAG_CURRENT_DS_SHIFT); |
571 | flush_register_windows(); | ||
572 | memcpy((void *)(t->ksp + STACK_BIAS), | ||
573 | (void *)(regs->u_regs[UREG_FP] + STACK_BIAS), | ||
574 | sizeof(struct sparc_stackf)); | ||
575 | t->kregs->u_regs[UREG_G6] = (unsigned long) t; | 704 | t->kregs->u_regs[UREG_G6] = (unsigned long) t; |
576 | t->kregs->u_regs[UREG_G4] = (unsigned long) t->task; | 705 | t->kregs->u_regs[UREG_G4] = (unsigned long) t->task; |
577 | } else { | 706 | } else { |
diff --git a/arch/sparc64/kernel/rtrap.S b/arch/sparc64/kernel/rtrap.S index 16689b2930db..c6fc695fe1fe 100644 --- a/arch/sparc64/kernel/rtrap.S +++ b/arch/sparc64/kernel/rtrap.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: rtrap.S,v 1.61 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * rtrap.S: Preparing for return from trap on Sparc V9. | 2 | * rtrap.S: Preparing for return from trap on Sparc V9. |
3 | * | 3 | * |
4 | * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 4 | * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
@@ -363,6 +363,7 @@ kern_rtt: rdpr %canrestore, %g1 | |||
363 | brz,pn %g1, kern_rtt_fill | 363 | brz,pn %g1, kern_rtt_fill |
364 | nop | 364 | nop |
365 | kern_rtt_restore: | 365 | kern_rtt_restore: |
366 | stw %g0, [%sp + PTREGS_OFF + PT_V9_MAGIC] | ||
366 | restore | 367 | restore |
367 | retry | 368 | retry |
368 | 369 | ||
diff --git a/arch/sparc64/kernel/sbus.c b/arch/sparc64/kernel/sbus.c index fa2827c4a3ad..e33a8a660e9e 100644 --- a/arch/sparc64/kernel/sbus.c +++ b/arch/sparc64/kernel/sbus.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sbus.c,v 1.19 2002/01/23 11:27:32 davem Exp $ | 1 | /* |
2 | * sbus.c: UltraSparc SBUS controller support. | 2 | * sbus.c: UltraSparc SBUS controller support. |
3 | * | 3 | * |
4 | * Copyright (C) 1999 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 1999 David S. Miller (davem@redhat.com) |
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c index da5e6ee0c661..c8b03a4f68bf 100644 --- a/arch/sparc64/kernel/setup.c +++ b/arch/sparc64/kernel/setup.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: setup.c,v 1.72 2002/02/09 19:49:30 davem Exp $ | 1 | /* |
2 | * linux/arch/sparc64/kernel/setup.c | 2 | * linux/arch/sparc64/kernel/setup.c |
3 | * | 3 | * |
4 | * Copyright (C) 1995,1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995,1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/kernel/signal.c b/arch/sparc64/kernel/signal.c index 6e4dc67d16af..9667e96fd513 100644 --- a/arch/sparc64/kernel/signal.c +++ b/arch/sparc64/kernel/signal.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: signal.c,v 1.60 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * arch/sparc64/kernel/signal.c | 2 | * arch/sparc64/kernel/signal.c |
3 | * | 3 | * |
4 | * Copyright (C) 1991, 1992 Linus Torvalds | 4 | * Copyright (C) 1991, 1992 Linus Torvalds |
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 0d6403a630ac..fa63c68a1819 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -900,6 +900,9 @@ extern unsigned long xcall_flush_tlb_mm; | |||
900 | extern unsigned long xcall_flush_tlb_pending; | 900 | extern unsigned long xcall_flush_tlb_pending; |
901 | extern unsigned long xcall_flush_tlb_kernel_range; | 901 | extern unsigned long xcall_flush_tlb_kernel_range; |
902 | extern unsigned long xcall_report_regs; | 902 | extern unsigned long xcall_report_regs; |
903 | #ifdef CONFIG_MAGIC_SYSRQ | ||
904 | extern unsigned long xcall_fetch_glob_regs; | ||
905 | #endif | ||
903 | extern unsigned long xcall_receive_signal; | 906 | extern unsigned long xcall_receive_signal; |
904 | extern unsigned long xcall_new_mmu_context_version; | 907 | extern unsigned long xcall_new_mmu_context_version; |
905 | #ifdef CONFIG_KGDB | 908 | #ifdef CONFIG_KGDB |
@@ -1080,6 +1083,13 @@ void smp_report_regs(void) | |||
1080 | smp_cross_call(&xcall_report_regs, 0, 0, 0); | 1083 | smp_cross_call(&xcall_report_regs, 0, 0, 0); |
1081 | } | 1084 | } |
1082 | 1085 | ||
1086 | #ifdef CONFIG_MAGIC_SYSRQ | ||
1087 | void smp_fetch_global_regs(void) | ||
1088 | { | ||
1089 | smp_cross_call(&xcall_fetch_glob_regs, 0, 0, 0); | ||
1090 | } | ||
1091 | #endif | ||
1092 | |||
1083 | /* We know that the window frames of the user have been flushed | 1093 | /* We know that the window frames of the user have been flushed |
1084 | * to the stack before we get here because all callers of us | 1094 | * to the stack before we get here because all callers of us |
1085 | * are flush_tlb_*() routines, and these run after flush_cache_*() | 1095 | * are flush_tlb_*() routines, and these run after flush_cache_*() |
diff --git a/arch/sparc64/kernel/stacktrace.c b/arch/sparc64/kernel/stacktrace.c index 01b52f561af4..c73ce3f4197e 100644 --- a/arch/sparc64/kernel/stacktrace.c +++ b/arch/sparc64/kernel/stacktrace.c | |||
@@ -19,7 +19,7 @@ void save_stack_trace(struct stack_trace *trace) | |||
19 | fp = ksp + STACK_BIAS; | 19 | fp = ksp + STACK_BIAS; |
20 | thread_base = (unsigned long) tp; | 20 | thread_base = (unsigned long) tp; |
21 | do { | 21 | do { |
22 | struct reg_window *rw; | 22 | struct sparc_stackf *sf; |
23 | struct pt_regs *regs; | 23 | struct pt_regs *regs; |
24 | unsigned long pc; | 24 | unsigned long pc; |
25 | 25 | ||
@@ -28,15 +28,17 @@ void save_stack_trace(struct stack_trace *trace) | |||
28 | fp >= (thread_base + THREAD_SIZE)) | 28 | fp >= (thread_base + THREAD_SIZE)) |
29 | break; | 29 | break; |
30 | 30 | ||
31 | rw = (struct reg_window *) fp; | 31 | sf = (struct sparc_stackf *) fp; |
32 | regs = (struct pt_regs *) (rw + 1); | 32 | regs = (struct pt_regs *) (sf + 1); |
33 | 33 | ||
34 | if ((regs->magic & ~0x1ff) == PT_REGS_MAGIC) { | 34 | if ((regs->magic & ~0x1ff) == PT_REGS_MAGIC) { |
35 | if (!(regs->tstate & TSTATE_PRIV)) | ||
36 | break; | ||
35 | pc = regs->tpc; | 37 | pc = regs->tpc; |
36 | fp = regs->u_regs[UREG_I6] + STACK_BIAS; | 38 | fp = regs->u_regs[UREG_I6] + STACK_BIAS; |
37 | } else { | 39 | } else { |
38 | pc = rw->ins[7]; | 40 | pc = sf->callers_pc; |
39 | fp = rw->ins[6] + STACK_BIAS; | 41 | fp = (unsigned long)sf->fp + STACK_BIAS; |
40 | } | 42 | } |
41 | 43 | ||
42 | if (trace->skip > 0) | 44 | if (trace->skip > 0) |
diff --git a/arch/sparc64/kernel/starfire.c b/arch/sparc64/kernel/starfire.c index b930fee7708a..7461581b3bb9 100644 --- a/arch/sparc64/kernel/starfire.c +++ b/arch/sparc64/kernel/starfire.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: starfire.c,v 1.10 2001/04/14 21:13:45 davem Exp $ | 1 | /* |
2 | * starfire.c: Starfire/E10000 support. | 2 | * starfire.c: Starfire/E10000 support. |
3 | * | 3 | * |
4 | * Copyright (C) 1998 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 1998 David S. Miller (davem@redhat.com) |
diff --git a/arch/sparc64/kernel/sys32.S b/arch/sparc64/kernel/sys32.S index 010a737908ee..ade18ba0c686 100644 --- a/arch/sparc64/kernel/sys32.S +++ b/arch/sparc64/kernel/sys32.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sys32.S,v 1.12 2000/03/24 04:17:37 davem Exp $ | 1 | /* |
2 | * sys32.S: I-cache tricks for 32-bit compatibility layer simple | 2 | * sys32.S: I-cache tricks for 32-bit compatibility layer simple |
3 | * conversions. | 3 | * conversions. |
4 | * | 4 | * |
diff --git a/arch/sparc64/kernel/trampoline.S b/arch/sparc64/kernel/trampoline.S index 56ff55211341..704a3afcfd06 100644 --- a/arch/sparc64/kernel/trampoline.S +++ b/arch/sparc64/kernel/trampoline.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: trampoline.S,v 1.26 2002/02/09 19:49:30 davem Exp $ | 1 | /* |
2 | * trampoline.S: Jump start slave processors on sparc64. | 2 | * trampoline.S: Jump start slave processors on sparc64. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/kernel/traps.c b/arch/sparc64/kernel/traps.c index d9b8d46707d1..369749262653 100644 --- a/arch/sparc64/kernel/traps.c +++ b/arch/sparc64/kernel/traps.c | |||
@@ -2116,7 +2116,7 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) | |||
2116 | printk("\n"); | 2116 | printk("\n"); |
2117 | #endif | 2117 | #endif |
2118 | do { | 2118 | do { |
2119 | struct reg_window *rw; | 2119 | struct sparc_stackf *sf; |
2120 | struct pt_regs *regs; | 2120 | struct pt_regs *regs; |
2121 | unsigned long pc; | 2121 | unsigned long pc; |
2122 | 2122 | ||
@@ -2124,15 +2124,17 @@ void show_stack(struct task_struct *tsk, unsigned long *_ksp) | |||
2124 | if (fp < (thread_base + sizeof(struct thread_info)) || | 2124 | if (fp < (thread_base + sizeof(struct thread_info)) || |
2125 | fp >= (thread_base + THREAD_SIZE)) | 2125 | fp >= (thread_base + THREAD_SIZE)) |
2126 | break; | 2126 | break; |
2127 | rw = (struct reg_window *)fp; | 2127 | sf = (struct sparc_stackf *) fp; |
2128 | regs = (struct pt_regs *) (rw + 1); | 2128 | regs = (struct pt_regs *) (sf + 1); |
2129 | 2129 | ||
2130 | if ((regs->magic & ~0x1ff) == PT_REGS_MAGIC) { | 2130 | if ((regs->magic & ~0x1ff) == PT_REGS_MAGIC) { |
2131 | if (!(regs->tstate & TSTATE_PRIV)) | ||
2132 | break; | ||
2131 | pc = regs->tpc; | 2133 | pc = regs->tpc; |
2132 | fp = regs->u_regs[UREG_I6] + STACK_BIAS; | 2134 | fp = regs->u_regs[UREG_I6] + STACK_BIAS; |
2133 | } else { | 2135 | } else { |
2134 | pc = rw->ins[7]; | 2136 | pc = sf->callers_pc; |
2135 | fp = rw->ins[6] + STACK_BIAS; | 2137 | fp = (unsigned long)sf->fp + STACK_BIAS; |
2136 | } | 2138 | } |
2137 | 2139 | ||
2138 | printk(" [%016lx] ", pc); | 2140 | printk(" [%016lx] ", pc); |
diff --git a/arch/sparc64/kernel/unaligned.c b/arch/sparc64/kernel/unaligned.c index 1a511e9f0d3e..afa7fc4f5193 100644 --- a/arch/sparc64/kernel/unaligned.c +++ b/arch/sparc64/kernel/unaligned.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: unaligned.c,v 1.24 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * unaligned.c: Unaligned load/store trap handling with special | 2 | * unaligned.c: Unaligned load/store trap handling with special |
3 | * cases for the kernel to do them more quickly. | 3 | * cases for the kernel to do them more quickly. |
4 | * | 4 | * |
diff --git a/arch/sparc64/lib/PeeCeeI.c b/arch/sparc64/lib/PeeCeeI.c index 3c6cfbb20360..8b313f11bc8d 100644 --- a/arch/sparc64/lib/PeeCeeI.c +++ b/arch/sparc64/lib/PeeCeeI.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: PeeCeeI.c,v 1.4 1999/09/06 01:17:35 davem Exp $ | 1 | /* |
2 | * PeeCeeI.c: The emerging standard... | 2 | * PeeCeeI.c: The emerging standard... |
3 | * | 3 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/lib/VISsave.S b/arch/sparc64/lib/VISsave.S index a0ded5c5aa5c..b320ae9e2e2e 100644 --- a/arch/sparc64/lib/VISsave.S +++ b/arch/sparc64/lib/VISsave.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: VISsave.S,v 1.6 2002/02/09 19:49:30 davem Exp $ | 1 | /* |
2 | * VISsave.S: Code for saving FPU register state for | 2 | * VISsave.S: Code for saving FPU register state for |
3 | * VIS routines. One should not call this directly, | 3 | * VIS routines. One should not call this directly, |
4 | * but use macros provided in <asm/visasm.h>. | 4 | * but use macros provided in <asm/visasm.h>. |
diff --git a/arch/sparc64/lib/memcmp.S b/arch/sparc64/lib/memcmp.S index c90ad96c51b9..d3fdaa898566 100644 --- a/arch/sparc64/lib/memcmp.S +++ b/arch/sparc64/lib/memcmp.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: memcmp.S,v 1.3 2000/03/23 07:51:08 davem Exp $ | 1 | /* |
2 | * Sparc64 optimized memcmp code. | 2 | * Sparc64 optimized memcmp code. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 4 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
diff --git a/arch/sparc64/lib/memscan.S b/arch/sparc64/lib/memscan.S index 5e72d4911417..5686dfa5dc15 100644 --- a/arch/sparc64/lib/memscan.S +++ b/arch/sparc64/lib/memscan.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: memscan.S,v 1.3 2000/01/31 04:59:10 davem Exp $ | 1 | /* |
2 | * memscan.S: Optimized memscan for Sparc64. | 2 | * memscan.S: Optimized memscan for Sparc64. |
3 | * | 3 | * |
4 | * Copyright (C) 1997,1998 Jakub Jelinek (jj@ultra.linux.cz) | 4 | * Copyright (C) 1997,1998 Jakub Jelinek (jj@ultra.linux.cz) |
diff --git a/arch/sparc64/lib/strncmp.S b/arch/sparc64/lib/strncmp.S index 6f14f53dbabe..980e83751556 100644 --- a/arch/sparc64/lib/strncmp.S +++ b/arch/sparc64/lib/strncmp.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: strncmp.S,v 1.2 1997/03/11 17:51:44 jj Exp $ | 1 | /* |
2 | * Sparc64 optimized strncmp code. | 2 | * Sparc64 optimized strncmp code. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 4 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
diff --git a/arch/sparc64/lib/strncpy_from_user.S b/arch/sparc64/lib/strncpy_from_user.S index b2f499f79427..511c8f136f95 100644 --- a/arch/sparc64/lib/strncpy_from_user.S +++ b/arch/sparc64/lib/strncpy_from_user.S | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: strncpy_from_user.S,v 1.6 1999/05/25 16:53:05 jj Exp $ | 1 | /* |
2 | * strncpy_from_user.S: Sparc64 strncpy from userspace. | 2 | * strncpy_from_user.S: Sparc64 strncpy from userspace. |
3 | * | 3 | * |
4 | * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz) | 4 | * Copyright (C) 1997, 1999 Jakub Jelinek (jj@ultra.linux.cz) |
diff --git a/arch/sparc64/math-emu/math.c b/arch/sparc64/math-emu/math.c index 6ee496c2864a..add053e0f3b3 100644 --- a/arch/sparc64/math-emu/math.c +++ b/arch/sparc64/math-emu/math.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: math.c,v 1.11 1999/12/20 05:02:25 davem Exp $ | 1 | /* |
2 | * arch/sparc64/math-emu/math.c | 2 | * arch/sparc64/math-emu/math.c |
3 | * | 3 | * |
4 | * Copyright (C) 1997,1999 Jakub Jelinek (jj@ultra.linux.cz) | 4 | * Copyright (C) 1997,1999 Jakub Jelinek (jj@ultra.linux.cz) |
diff --git a/arch/sparc64/math-emu/sfp-util.h b/arch/sparc64/math-emu/sfp-util.h index 31e474738cf6..425d3cf01af4 100644 --- a/arch/sparc64/math-emu/sfp-util.h +++ b/arch/sparc64/math-emu/sfp-util.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sfp-util.h,v 1.5 2001/06/10 06:48:46 davem Exp $ | 1 | /* |
2 | * arch/sparc64/math-emu/sfp-util.h | 2 | * arch/sparc64/math-emu/sfp-util.h |
3 | * | 3 | * |
4 | * Copyright (C) 1999 Jakub Jelinek (jj@ultra.linux.cz) | 4 | * Copyright (C) 1999 Jakub Jelinek (jj@ultra.linux.cz) |
diff --git a/arch/sparc64/mm/Makefile b/arch/sparc64/mm/Makefile index e415bf942bcd..68d04c0370f4 100644 --- a/arch/sparc64/mm/Makefile +++ b/arch/sparc64/mm/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.8 2000/12/14 22:57:25 davem Exp $ | ||
2 | # Makefile for the linux Sparc64-specific parts of the memory manager. | 1 | # Makefile for the linux Sparc64-specific parts of the memory manager. |
3 | # | 2 | # |
4 | 3 | ||
diff --git a/arch/sparc64/mm/fault.c b/arch/sparc64/mm/fault.c index 2650d0d33ac2..236f4d228d2b 100644 --- a/arch/sparc64/mm/fault.c +++ b/arch/sparc64/mm/fault.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: fault.c,v 1.59 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * arch/sparc64/mm/fault.c: Page fault handlers for the 64-bit Sparc. | 2 | * arch/sparc64/mm/fault.c: Page fault handlers for the 64-bit Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/mm/generic.c b/arch/sparc64/mm/generic.c index af9d81db0b38..f362c2037013 100644 --- a/arch/sparc64/mm/generic.c +++ b/arch/sparc64/mm/generic.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: generic.c,v 1.18 2001/12/21 04:56:15 davem Exp $ | 1 | /* |
2 | * generic.c: Generic Sparc mm routines that are not dependent upon | 2 | * generic.c: Generic Sparc mm routines that are not dependent upon |
3 | * MMU type but are Sparc specific. | 3 | * MMU type but are Sparc specific. |
4 | * | 4 | * |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index a9828d748e2c..84898c44dd4d 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: init.c,v 1.209 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * arch/sparc64/mm/init.c | 2 | * arch/sparc64/mm/init.c |
3 | * | 3 | * |
4 | * Copyright (C) 1996-1999 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996-1999 David S. Miller (davem@caip.rutgers.edu) |
@@ -768,7 +768,7 @@ static void __init find_ramdisk(unsigned long phys_base) | |||
768 | initrd_start = ramdisk_image; | 768 | initrd_start = ramdisk_image; |
769 | initrd_end = ramdisk_image + sparc_ramdisk_size; | 769 | initrd_end = ramdisk_image + sparc_ramdisk_size; |
770 | 770 | ||
771 | lmb_reserve(initrd_start, initrd_end); | 771 | lmb_reserve(initrd_start, sparc_ramdisk_size); |
772 | 772 | ||
773 | initrd_start += PAGE_OFFSET; | 773 | initrd_start += PAGE_OFFSET; |
774 | initrd_end += PAGE_OFFSET; | 774 | initrd_end += PAGE_OFFSET; |
diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S index 796e005dad8b..9bb2d90a9df6 100644 --- a/arch/sparc64/mm/ultra.S +++ b/arch/sparc64/mm/ultra.S | |||
@@ -1,7 +1,7 @@ | |||
1 | /* $Id: ultra.S,v 1.72 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * ultra.S: Don't expand these all over the place... | 2 | * ultra.S: Don't expand these all over the place... |
3 | * | 3 | * |
4 | * Copyright (C) 1997, 2000 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 1997, 2000, 2008 David S. Miller (davem@davemloft.net) |
5 | */ | 5 | */ |
6 | 6 | ||
7 | #include <asm/asi.h> | 7 | #include <asm/asi.h> |
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/thread_info.h> | 15 | #include <asm/thread_info.h> |
16 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
17 | #include <asm/hypervisor.h> | 17 | #include <asm/hypervisor.h> |
18 | #include <asm/cpudata.h> | ||
18 | 19 | ||
19 | /* Basically, most of the Spitfire vs. Cheetah madness | 20 | /* Basically, most of the Spitfire vs. Cheetah madness |
20 | * has to do with the fact that Cheetah does not support | 21 | * has to do with the fact that Cheetah does not support |
@@ -514,6 +515,32 @@ xcall_report_regs: | |||
514 | b rtrap_xcall | 515 | b rtrap_xcall |
515 | ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1 | 516 | ldx [%sp + PTREGS_OFF + PT_V9_TSTATE], %l1 |
516 | 517 | ||
518 | #ifdef CONFIG_MAGIC_SYSRQ | ||
519 | .globl xcall_fetch_glob_regs | ||
520 | xcall_fetch_glob_regs: | ||
521 | sethi %hi(global_reg_snapshot), %g1 | ||
522 | or %g1, %lo(global_reg_snapshot), %g1 | ||
523 | __GET_CPUID(%g2) | ||
524 | sllx %g2, 6, %g3 | ||
525 | add %g1, %g3, %g1 | ||
526 | rdpr %tstate, %g7 | ||
527 | stx %g7, [%g1 + GR_SNAP_TSTATE] | ||
528 | rdpr %tpc, %g7 | ||
529 | stx %g7, [%g1 + GR_SNAP_TPC] | ||
530 | rdpr %tnpc, %g7 | ||
531 | stx %g7, [%g1 + GR_SNAP_TNPC] | ||
532 | stx %o7, [%g1 + GR_SNAP_O7] | ||
533 | stx %i7, [%g1 + GR_SNAP_I7] | ||
534 | sethi %hi(trap_block), %g7 | ||
535 | or %g7, %lo(trap_block), %g7 | ||
536 | sllx %g2, TRAP_BLOCK_SZ_SHIFT, %g2 | ||
537 | add %g7, %g2, %g7 | ||
538 | ldx [%g7 + TRAP_PER_CPU_THREAD], %g3 | ||
539 | membar #StoreStore | ||
540 | stx %g3, [%g1 + GR_SNAP_THREAD] | ||
541 | retry | ||
542 | #endif /* CONFIG_MAGIC_SYSRQ */ | ||
543 | |||
517 | #ifdef DCACHE_ALIASING_POSSIBLE | 544 | #ifdef DCACHE_ALIASING_POSSIBLE |
518 | .align 32 | 545 | .align 32 |
519 | .globl xcall_flush_dcache_page_cheetah | 546 | .globl xcall_flush_dcache_page_cheetah |
diff --git a/arch/sparc64/prom/Makefile b/arch/sparc64/prom/Makefile index 3d33ed27bc27..8c94483ca54d 100644 --- a/arch/sparc64/prom/Makefile +++ b/arch/sparc64/prom/Makefile | |||
@@ -1,4 +1,3 @@ | |||
1 | # $Id: Makefile,v 1.7 2000/12/14 22:57:25 davem Exp $ | ||
2 | # Makefile for the Sun Boot PROM interface library under | 1 | # Makefile for the Sun Boot PROM interface library under |
3 | # Linux. | 2 | # Linux. |
4 | # | 3 | # |
diff --git a/arch/sparc64/prom/bootstr.c b/arch/sparc64/prom/bootstr.c index a7278614e99d..ab9ccc63b388 100644 --- a/arch/sparc64/prom/bootstr.c +++ b/arch/sparc64/prom/bootstr.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: bootstr.c,v 1.6 1999/08/31 06:55:01 davem Exp $ | 1 | /* |
2 | * bootstr.c: Boot string/argument acquisition from the PROM. | 2 | * bootstr.c: Boot string/argument acquisition from the PROM. |
3 | * | 3 | * |
4 | * Copyright(C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright(C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/prom/devops.c b/arch/sparc64/prom/devops.c index 4641839eb39a..9dbd803e46e1 100644 --- a/arch/sparc64/prom/devops.c +++ b/arch/sparc64/prom/devops.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: devops.c,v 1.3 1997/10/29 07:43:28 ecd Exp $ | 1 | /* |
2 | * devops.c: Device operations using the PROM. | 2 | * devops.c: Device operations using the PROM. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/arch/sparc64/prom/init.c b/arch/sparc64/prom/init.c index 87e7c7ea0ee6..7b00f89490a4 100644 --- a/arch/sparc64/prom/init.c +++ b/arch/sparc64/prom/init.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: init.c,v 1.10 1999/09/21 14:35:59 davem Exp $ | 1 | /* |
2 | * init.c: Initialize internal variables used by the PROM | 2 | * init.c: Initialize internal variables used by the PROM |
3 | * library functions. | 3 | * library functions. |
4 | * | 4 | * |
diff --git a/arch/sparc64/prom/misc.c b/arch/sparc64/prom/misc.c index 47a877a15abd..9b0c0760901e 100644 --- a/arch/sparc64/prom/misc.c +++ b/arch/sparc64/prom/misc.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: misc.c,v 1.20 2001/09/21 03:17:07 kanoj Exp $ | 1 | /* |
2 | * misc.c: Miscellaneous prom functions that don't belong | 2 | * misc.c: Miscellaneous prom functions that don't belong |
3 | * anywhere else. | 3 | * anywhere else. |
4 | * | 4 | * |
diff --git a/arch/sparc64/prom/p1275.c b/arch/sparc64/prom/p1275.c index 7fcccc0e19cf..4b7c937bba61 100644 --- a/arch/sparc64/prom/p1275.c +++ b/arch/sparc64/prom/p1275.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: p1275.c,v 1.22 2001/10/18 09:40:00 davem Exp $ | 1 | /* |
2 | * p1275.c: Sun IEEE 1275 PROM low level interface routines | 2 | * p1275.c: Sun IEEE 1275 PROM low level interface routines |
3 | * | 3 | * |
4 | * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 4 | * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
diff --git a/arch/sparc64/prom/tree.c b/arch/sparc64/prom/tree.c index a99ccd7fb1b0..281aea44790b 100644 --- a/arch/sparc64/prom/tree.c +++ b/arch/sparc64/prom/tree.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: tree.c,v 1.10 1998/01/10 22:39:00 ecd Exp $ | 1 | /* |
2 | * tree.c: Basic device tree traversal/scanning for the Linux | 2 | * tree.c: Basic device tree traversal/scanning for the Linux |
3 | * prom library. | 3 | * prom library. |
4 | * | 4 | * |
diff --git a/arch/um/Kconfig b/arch/um/Kconfig index dba8e05f0287..6976812cfb18 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig | |||
@@ -259,6 +259,8 @@ if BROKEN | |||
259 | source "drivers/mtd/Kconfig" | 259 | source "drivers/mtd/Kconfig" |
260 | endif | 260 | endif |
261 | 261 | ||
262 | source "drivers/leds/Kconfig" | ||
263 | |||
262 | #This is just to shut up some Kconfig warnings, so no prompt. | 264 | #This is just to shut up some Kconfig warnings, so no prompt. |
263 | config INPUT | 265 | config INPUT |
264 | bool | 266 | bool |
diff --git a/arch/um/drivers/pcap_user.c b/arch/um/drivers/pcap_user.c index e9809356c530..5f903587d69e 100644 --- a/arch/um/drivers/pcap_user.c +++ b/arch/um/drivers/pcap_user.c | |||
@@ -50,7 +50,7 @@ static int pcap_open(void *data) | |||
50 | return -EIO; | 50 | return -EIO; |
51 | } | 51 | } |
52 | 52 | ||
53 | pri->compiled = kmalloc(sizeof(struct bpf_program), | 53 | pri->compiled = uml_kmalloc(sizeof(struct bpf_program), |
54 | UM_GFP_KERNEL); | 54 | UM_GFP_KERNEL); |
55 | if (pri->compiled == NULL) { | 55 | if (pri->compiled == NULL) { |
56 | printk(UM_KERN_ERR "pcap_open : kmalloc failed\n"); | 56 | printk(UM_KERN_ERR "pcap_open : kmalloc failed\n"); |
diff --git a/arch/um/kernel/init_task.c b/arch/um/kernel/init_task.c index dcfceca95052..910eda8fca18 100644 --- a/arch/um/kernel/init_task.c +++ b/arch/um/kernel/init_task.c | |||
@@ -12,7 +12,6 @@ | |||
12 | 12 | ||
13 | static struct fs_struct init_fs = INIT_FS; | 13 | static struct fs_struct init_fs = INIT_FS; |
14 | struct mm_struct init_mm = INIT_MM(init_mm); | 14 | struct mm_struct init_mm = INIT_MM(init_mm); |
15 | static struct files_struct init_files = INIT_FILES; | ||
16 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 15 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
17 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 16 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
18 | EXPORT_SYMBOL(init_mm); | 17 | EXPORT_SYMBOL(init_mm); |
diff --git a/arch/um/kernel/ksyms.c b/arch/um/kernel/ksyms.c index 66e2a305a8d6..ccc02a616c22 100644 --- a/arch/um/kernel/ksyms.c +++ b/arch/um/kernel/ksyms.c | |||
@@ -60,6 +60,11 @@ EXPORT_SYMBOL(os_rcv_fd); | |||
60 | EXPORT_SYMBOL(run_helper); | 60 | EXPORT_SYMBOL(run_helper); |
61 | EXPORT_SYMBOL(start_thread); | 61 | EXPORT_SYMBOL(start_thread); |
62 | 62 | ||
63 | EXPORT_SYMBOL(add_sigio_fd); | ||
64 | EXPORT_SYMBOL(ignore_sigio_fd); | ||
65 | EXPORT_SYMBOL(deactivate_fd); | ||
66 | EXPORT_SYMBOL(sigio_broken); | ||
67 | |||
63 | #ifdef CONFIG_SMP | 68 | #ifdef CONFIG_SMP |
64 | 69 | ||
65 | /* required for SMP */ | 70 | /* required for SMP */ |
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c index c6183e7aec3d..b487cbead1bd 100644 --- a/arch/um/os-Linux/sys-i386/registers.c +++ b/arch/um/os-Linux/sys-i386/registers.c | |||
@@ -5,6 +5,7 @@ | |||
5 | */ | 5 | */ |
6 | 6 | ||
7 | #include <errno.h> | 7 | #include <errno.h> |
8 | #include <sys/ptrace.h> | ||
8 | #include <asm/user.h> | 9 | #include <asm/user.h> |
9 | #include "kern_constants.h" | 10 | #include "kern_constants.h" |
10 | #include "longjmp.h" | 11 | #include "longjmp.h" |
diff --git a/arch/um/sys-x86_64/ksyms.c b/arch/um/sys-x86_64/ksyms.c index 4d7d1a812d8f..6604673a849d 100644 --- a/arch/um/sys-x86_64/ksyms.c +++ b/arch/um/sys-x86_64/ksyms.c | |||
@@ -1,5 +1,7 @@ | |||
1 | #include "linux/module.h" | 1 | #include <linux/module.h> |
2 | #include "asm/string.h" | 2 | #include <asm/string.h> |
3 | #include <asm/checksum.h> | ||
3 | 4 | ||
4 | /*XXX: we need them because they would be exported by x86_64 */ | 5 | /*XXX: we need them because they would be exported by x86_64 */ |
5 | EXPORT_SYMBOL(__memcpy); | 6 | EXPORT_SYMBOL(__memcpy); |
7 | EXPORT_SYMBOL(csum_partial); | ||
diff --git a/arch/v850/kernel/init_task.c b/arch/v850/kernel/init_task.c index ed2f93cf7c66..44b274dff33f 100644 --- a/arch/v850/kernel/init_task.c +++ b/arch/v850/kernel/init_task.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
22 | 22 | ||
23 | static struct fs_struct init_fs = INIT_FS; | 23 | static struct fs_struct init_fs = INIT_FS; |
24 | static struct files_struct init_files = INIT_FILES; | ||
25 | static struct signal_struct init_signals = INIT_SIGNALS (init_signals); | 24 | static struct signal_struct init_signals = INIT_SIGNALS (init_signals); |
26 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 25 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
27 | struct mm_struct init_mm = INIT_MM (init_mm); | 26 | struct mm_struct init_mm = INIT_MM (init_mm); |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index fe361ae7ef2f..dcbec34154cf 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -26,17 +26,10 @@ config X86 | |||
26 | select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64) | 26 | select HAVE_KVM if ((X86_32 && !X86_VOYAGER && !X86_VISWS && !X86_NUMAQ) || X86_64) |
27 | select HAVE_ARCH_KGDB if !X86_VOYAGER | 27 | select HAVE_ARCH_KGDB if !X86_VOYAGER |
28 | 28 | ||
29 | config DEFCONFIG_LIST | 29 | config ARCH_DEFCONFIG |
30 | string | 30 | string |
31 | depends on X86_32 | 31 | default "arch/x86/configs/i386_defconfig" if X86_32 |
32 | option defconfig_list | 32 | default "arch/x86/configs/x86_64_defconfig" if X86_64 |
33 | default "arch/x86/configs/i386_defconfig" | ||
34 | |||
35 | config DEFCONFIG_LIST | ||
36 | string | ||
37 | depends on X86_64 | ||
38 | option defconfig_list | ||
39 | default "arch/x86/configs/x86_64_defconfig" | ||
40 | 33 | ||
41 | 34 | ||
42 | config GENERIC_LOCKBREAK | 35 | config GENERIC_LOCKBREAK |
diff --git a/arch/x86/boot/printf.c b/arch/x86/boot/printf.c index c1d00c0274c4..50e47cdbdddd 100644 --- a/arch/x86/boot/printf.c +++ b/arch/x86/boot/printf.c | |||
@@ -56,7 +56,7 @@ static char *number(char *str, long num, int base, int size, int precision, | |||
56 | if (type & LEFT) | 56 | if (type & LEFT) |
57 | type &= ~ZEROPAD; | 57 | type &= ~ZEROPAD; |
58 | if (base < 2 || base > 36) | 58 | if (base < 2 || base > 36) |
59 | return 0; | 59 | return NULL; |
60 | c = (type & ZEROPAD) ? '0' : ' '; | 60 | c = (type & ZEROPAD) ? '0' : ' '; |
61 | sign = 0; | 61 | sign = 0; |
62 | if (type & SIGN) { | 62 | if (type & SIGN) { |
diff --git a/arch/x86/kernel/apic_64.c b/arch/x86/kernel/apic_64.c index 5910020c3f24..0633cfd0dc29 100644 --- a/arch/x86/kernel/apic_64.c +++ b/arch/x86/kernel/apic_64.c | |||
@@ -534,7 +534,7 @@ int setup_profiling_timer(unsigned int multiplier) | |||
534 | */ | 534 | */ |
535 | void clear_local_APIC(void) | 535 | void clear_local_APIC(void) |
536 | { | 536 | { |
537 | int maxlvt = lapic_get_maxlvt(); | 537 | int maxlvt; |
538 | u32 v; | 538 | u32 v; |
539 | 539 | ||
540 | /* APIC hasn't been mapped yet */ | 540 | /* APIC hasn't been mapped yet */ |
diff --git a/arch/x86/kernel/cpu/cpufreq/longrun.c b/arch/x86/kernel/cpu/cpufreq/longrun.c index af4a867a097c..777a7ff075de 100644 --- a/arch/x86/kernel/cpu/cpufreq/longrun.c +++ b/arch/x86/kernel/cpu/cpufreq/longrun.c | |||
@@ -245,7 +245,7 @@ static unsigned int __init longrun_determine_freqs(unsigned int *low_freq, | |||
245 | if ((ecx > 95) || (ecx == 0) || (eax < ebx)) | 245 | if ((ecx > 95) || (ecx == 0) || (eax < ebx)) |
246 | return -EIO; | 246 | return -EIO; |
247 | 247 | ||
248 | edx = (eax - ebx) / (100 - ecx); | 248 | edx = ((eax - ebx) * 100) / (100 - ecx); |
249 | *low_freq = edx * 1000; /* back to kHz */ | 249 | *low_freq = edx * 1000; /* back to kHz */ |
250 | 250 | ||
251 | dprintk("low frequency is %u kHz\n", *low_freq); | 251 | dprintk("low frequency is %u kHz\n", *low_freq); |
diff --git a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c index 46d4034d9f37..206791eb46e3 100644 --- a/arch/x86/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/x86/kernel/cpu/cpufreq/powernow-k8.c | |||
@@ -1127,12 +1127,23 @@ static int __cpuinit powernowk8_cpu_init(struct cpufreq_policy *pol) | |||
1127 | * an UP version, and is deprecated by AMD. | 1127 | * an UP version, and is deprecated by AMD. |
1128 | */ | 1128 | */ |
1129 | if (num_online_cpus() != 1) { | 1129 | if (num_online_cpus() != 1) { |
1130 | printk(KERN_ERR PFX "MP systems not supported by PSB BIOS structure\n"); | 1130 | #ifndef CONFIG_ACPI_PROCESSOR |
1131 | printk(KERN_ERR PFX "ACPI Processor support is required " | ||
1132 | "for SMP systems but is absent. Please load the " | ||
1133 | "ACPI Processor module before starting this " | ||
1134 | "driver.\n"); | ||
1135 | #else | ||
1136 | printk(KERN_ERR PFX "Your BIOS does not provide ACPI " | ||
1137 | "_PSS objects in a way that Linux understands. " | ||
1138 | "Please report this to the Linux ACPI maintainers" | ||
1139 | " and complain to your BIOS vendor.\n"); | ||
1140 | #endif | ||
1131 | kfree(data); | 1141 | kfree(data); |
1132 | return -ENODEV; | 1142 | return -ENODEV; |
1133 | } | 1143 | } |
1134 | if (pol->cpu != 0) { | 1144 | if (pol->cpu != 0) { |
1135 | printk(KERN_ERR PFX "No _PSS objects for CPU other than CPU0\n"); | 1145 | printk(KERN_ERR PFX "No ACPI _PSS objects for CPU other than " |
1146 | "CPU0. Complain to your BIOS vendor.\n"); | ||
1136 | kfree(data); | 1147 | kfree(data); |
1137 | return -ENODEV; | 1148 | return -ENODEV; |
1138 | } | 1149 | } |
diff --git a/arch/x86/kernel/init_task.c b/arch/x86/kernel/init_task.c index 3d01e47777db..a4f93b4120c1 100644 --- a/arch/x86/kernel/init_task.c +++ b/arch/x86/kernel/init_task.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/desc.h> | 11 | #include <asm/desc.h> |
12 | 12 | ||
13 | static struct fs_struct init_fs = INIT_FS; | 13 | static struct fs_struct init_fs = INIT_FS; |
14 | static struct files_struct init_files = INIT_FILES; | ||
15 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 14 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
16 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 15 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
17 | struct mm_struct init_mm = INIT_MM(init_mm); | 16 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c index 4bc1be5d5472..08a30986d472 100644 --- a/arch/x86/kernel/kvmclock.c +++ b/arch/x86/kernel/kvmclock.c | |||
@@ -53,7 +53,7 @@ static cycle_t kvm_clock_read(void); | |||
53 | * have elapsed since the hypervisor wrote the data. So we try to account for | 53 | * have elapsed since the hypervisor wrote the data. So we try to account for |
54 | * that with system time | 54 | * that with system time |
55 | */ | 55 | */ |
56 | unsigned long kvm_get_wallclock(void) | 56 | static unsigned long kvm_get_wallclock(void) |
57 | { | 57 | { |
58 | u32 wc_sec, wc_nsec; | 58 | u32 wc_sec, wc_nsec; |
59 | u64 delta; | 59 | u64 delta; |
@@ -86,7 +86,7 @@ unsigned long kvm_get_wallclock(void) | |||
86 | return ts.tv_sec + 1; | 86 | return ts.tv_sec + 1; |
87 | } | 87 | } |
88 | 88 | ||
89 | int kvm_set_wallclock(unsigned long now) | 89 | static int kvm_set_wallclock(unsigned long now) |
90 | { | 90 | { |
91 | return 0; | 91 | return 0; |
92 | } | 92 | } |
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 67e9b4a1e89d..ba370dc8685b 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
@@ -99,15 +99,6 @@ static void mwait_idle(void) | |||
99 | local_irq_enable(); | 99 | local_irq_enable(); |
100 | } | 100 | } |
101 | 101 | ||
102 | |||
103 | static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c) | ||
104 | { | ||
105 | if (force_mwait) | ||
106 | return 1; | ||
107 | /* Any C1 states supported? */ | ||
108 | return c->cpuid_level >= 5 && ((cpuid_edx(5) >> 4) & 0xf) > 0; | ||
109 | } | ||
110 | |||
111 | /* | 102 | /* |
112 | * On SMP it's slightly faster (but much more power-consuming!) | 103 | * On SMP it's slightly faster (but much more power-consuming!) |
113 | * to poll the ->work.need_resched flag instead of waiting for the | 104 | * to poll the ->work.need_resched flag instead of waiting for the |
@@ -119,6 +110,33 @@ static void poll_idle(void) | |||
119 | cpu_relax(); | 110 | cpu_relax(); |
120 | } | 111 | } |
121 | 112 | ||
113 | /* | ||
114 | * mwait selection logic: | ||
115 | * | ||
116 | * It depends on the CPU. For AMD CPUs that support MWAIT this is | ||
117 | * wrong. Family 0x10 and 0x11 CPUs will enter C1 on HLT. Powersavings | ||
118 | * then depend on a clock divisor and current Pstate of the core. If | ||
119 | * all cores of a processor are in halt state (C1) the processor can | ||
120 | * enter the C1E (C1 enhanced) state. If mwait is used this will never | ||
121 | * happen. | ||
122 | * | ||
123 | * idle=mwait overrides this decision and forces the usage of mwait. | ||
124 | */ | ||
125 | static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c) | ||
126 | { | ||
127 | if (force_mwait) | ||
128 | return 1; | ||
129 | |||
130 | if (c->x86_vendor == X86_VENDOR_AMD) { | ||
131 | switch(c->x86) { | ||
132 | case 0x10: | ||
133 | case 0x11: | ||
134 | return 0; | ||
135 | } | ||
136 | } | ||
137 | return 1; | ||
138 | } | ||
139 | |||
122 | void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c) | 140 | void __cpuinit select_idle_routine(const struct cpuinfo_x86 *c) |
123 | { | 141 | { |
124 | static int selected; | 142 | static int selected; |
diff --git a/arch/x86/kernel/tsc_32.c b/arch/x86/kernel/tsc_32.c index e4790728b224..068759db63dd 100644 --- a/arch/x86/kernel/tsc_32.c +++ b/arch/x86/kernel/tsc_32.c | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | #include "mach_timer.h" | 15 | #include "mach_timer.h" |
16 | 16 | ||
17 | static int tsc_enabled; | 17 | static int tsc_disabled; |
18 | 18 | ||
19 | /* | 19 | /* |
20 | * On some systems the TSC frequency does not | 20 | * On some systems the TSC frequency does not |
@@ -28,8 +28,8 @@ EXPORT_SYMBOL_GPL(tsc_khz); | |||
28 | static int __init tsc_setup(char *str) | 28 | static int __init tsc_setup(char *str) |
29 | { | 29 | { |
30 | printk(KERN_WARNING "notsc: Kernel compiled with CONFIG_X86_TSC, " | 30 | printk(KERN_WARNING "notsc: Kernel compiled with CONFIG_X86_TSC, " |
31 | "cannot disable TSC completely.\n"); | 31 | "cannot disable TSC completely.\n"); |
32 | mark_tsc_unstable("user disabled TSC"); | 32 | tsc_disabled = 1; |
33 | return 1; | 33 | return 1; |
34 | } | 34 | } |
35 | #else | 35 | #else |
@@ -120,7 +120,7 @@ unsigned long long native_sched_clock(void) | |||
120 | * very important for it to be as fast as the platform | 120 | * very important for it to be as fast as the platform |
121 | * can achive it. ) | 121 | * can achive it. ) |
122 | */ | 122 | */ |
123 | if (unlikely(!tsc_enabled && !tsc_unstable)) | 123 | if (unlikely(tsc_disabled)) |
124 | /* No locking but a rare wrong value is not a big deal: */ | 124 | /* No locking but a rare wrong value is not a big deal: */ |
125 | return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); | 125 | return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ); |
126 | 126 | ||
@@ -322,7 +322,6 @@ void mark_tsc_unstable(char *reason) | |||
322 | { | 322 | { |
323 | if (!tsc_unstable) { | 323 | if (!tsc_unstable) { |
324 | tsc_unstable = 1; | 324 | tsc_unstable = 1; |
325 | tsc_enabled = 0; | ||
326 | printk("Marking TSC unstable due to: %s.\n", reason); | 325 | printk("Marking TSC unstable due to: %s.\n", reason); |
327 | /* Can be called before registration */ | 326 | /* Can be called before registration */ |
328 | if (clocksource_tsc.mult) | 327 | if (clocksource_tsc.mult) |
@@ -336,7 +335,7 @@ EXPORT_SYMBOL_GPL(mark_tsc_unstable); | |||
336 | static int __init dmi_mark_tsc_unstable(const struct dmi_system_id *d) | 335 | static int __init dmi_mark_tsc_unstable(const struct dmi_system_id *d) |
337 | { | 336 | { |
338 | printk(KERN_NOTICE "%s detected: marking TSC unstable.\n", | 337 | printk(KERN_NOTICE "%s detected: marking TSC unstable.\n", |
339 | d->ident); | 338 | d->ident); |
340 | tsc_unstable = 1; | 339 | tsc_unstable = 1; |
341 | return 0; | 340 | return 0; |
342 | } | 341 | } |
@@ -403,14 +402,22 @@ void __init tsc_init(void) | |||
403 | { | 402 | { |
404 | int cpu; | 403 | int cpu; |
405 | 404 | ||
406 | if (!cpu_has_tsc) | 405 | if (!cpu_has_tsc || tsc_disabled) { |
406 | /* Disable the TSC in case of !cpu_has_tsc */ | ||
407 | tsc_disabled = 1; | ||
407 | return; | 408 | return; |
409 | } | ||
408 | 410 | ||
409 | cpu_khz = calculate_cpu_khz(); | 411 | cpu_khz = calculate_cpu_khz(); |
410 | tsc_khz = cpu_khz; | 412 | tsc_khz = cpu_khz; |
411 | 413 | ||
412 | if (!cpu_khz) { | 414 | if (!cpu_khz) { |
413 | mark_tsc_unstable("could not calculate TSC khz"); | 415 | mark_tsc_unstable("could not calculate TSC khz"); |
416 | /* | ||
417 | * We need to disable the TSC completely in this case | ||
418 | * to prevent sched_clock() from using it. | ||
419 | */ | ||
420 | tsc_disabled = 1; | ||
414 | return; | 421 | return; |
415 | } | 422 | } |
416 | 423 | ||
@@ -441,8 +448,6 @@ void __init tsc_init(void) | |||
441 | if (check_tsc_unstable()) { | 448 | if (check_tsc_unstable()) { |
442 | clocksource_tsc.rating = 0; | 449 | clocksource_tsc.rating = 0; |
443 | clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS; | 450 | clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS; |
444 | } else | 451 | } |
445 | tsc_enabled = 1; | ||
446 | |||
447 | clocksource_register(&clocksource_tsc); | 452 | clocksource_register(&clocksource_tsc); |
448 | } | 453 | } |
diff --git a/arch/x86/kernel/tsc_64.c b/arch/x86/kernel/tsc_64.c index fcc16e58609e..1784b8077a12 100644 --- a/arch/x86/kernel/tsc_64.c +++ b/arch/x86/kernel/tsc_64.c | |||
@@ -227,14 +227,14 @@ void __init tsc_calibrate(void) | |||
227 | /* hpet or pmtimer available ? */ | 227 | /* hpet or pmtimer available ? */ |
228 | if (!hpet && !pm1 && !pm2) { | 228 | if (!hpet && !pm1 && !pm2) { |
229 | printk(KERN_INFO "TSC calibrated against PIT\n"); | 229 | printk(KERN_INFO "TSC calibrated against PIT\n"); |
230 | return; | 230 | goto out; |
231 | } | 231 | } |
232 | 232 | ||
233 | /* Check, whether the sampling was disturbed by an SMI */ | 233 | /* Check, whether the sampling was disturbed by an SMI */ |
234 | if (tsc1 == ULONG_MAX || tsc2 == ULONG_MAX) { | 234 | if (tsc1 == ULONG_MAX || tsc2 == ULONG_MAX) { |
235 | printk(KERN_WARNING "TSC calibration disturbed by SMI, " | 235 | printk(KERN_WARNING "TSC calibration disturbed by SMI, " |
236 | "using PIT calibration result\n"); | 236 | "using PIT calibration result\n"); |
237 | return; | 237 | goto out; |
238 | } | 238 | } |
239 | 239 | ||
240 | tsc2 = (tsc2 - tsc1) * 1000000L; | 240 | tsc2 = (tsc2 - tsc1) * 1000000L; |
@@ -255,6 +255,7 @@ void __init tsc_calibrate(void) | |||
255 | 255 | ||
256 | tsc_khz = tsc2 / tsc1; | 256 | tsc_khz = tsc2 / tsc1; |
257 | 257 | ||
258 | out: | ||
258 | for_each_possible_cpu(cpu) | 259 | for_each_possible_cpu(cpu) |
259 | set_cyc2ns_scale(tsc_khz, cpu); | 260 | set_cyc2ns_scale(tsc_khz, cpu); |
260 | } | 261 | } |
diff --git a/arch/x86/kvm/i8254.c b/arch/x86/kvm/i8254.c index 3324d90038e4..7c077a9d9777 100644 --- a/arch/x86/kvm/i8254.c +++ b/arch/x86/kvm/i8254.c | |||
@@ -216,7 +216,7 @@ int pit_has_pending_timer(struct kvm_vcpu *vcpu) | |||
216 | { | 216 | { |
217 | struct kvm_pit *pit = vcpu->kvm->arch.vpit; | 217 | struct kvm_pit *pit = vcpu->kvm->arch.vpit; |
218 | 218 | ||
219 | if (pit && vcpu->vcpu_id == 0) | 219 | if (pit && vcpu->vcpu_id == 0 && pit->pit_state.inject_pending) |
220 | return atomic_read(&pit->pit_state.pit_timer.pending); | 220 | return atomic_read(&pit->pit_state.pit_timer.pending); |
221 | 221 | ||
222 | return 0; | 222 | return 0; |
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 36809d79788b..c297c50eba63 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c | |||
@@ -957,7 +957,7 @@ int apic_has_pending_timer(struct kvm_vcpu *vcpu) | |||
957 | { | 957 | { |
958 | struct kvm_lapic *lapic = vcpu->arch.apic; | 958 | struct kvm_lapic *lapic = vcpu->arch.apic; |
959 | 959 | ||
960 | if (lapic) | 960 | if (lapic && apic_enabled(lapic) && apic_lvt_enabled(lapic, APIC_LVTT)) |
961 | return atomic_read(&lapic->timer.pending); | 961 | return atomic_read(&lapic->timer.pending); |
962 | 962 | ||
963 | return 0; | 963 | return 0; |
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c index 36c5406b1813..7246b60afb96 100644 --- a/arch/x86/kvm/mmu.c +++ b/arch/x86/kvm/mmu.c | |||
@@ -1996,7 +1996,7 @@ static struct shrinker mmu_shrinker = { | |||
1996 | .seeks = DEFAULT_SEEKS * 10, | 1996 | .seeks = DEFAULT_SEEKS * 10, |
1997 | }; | 1997 | }; |
1998 | 1998 | ||
1999 | void mmu_destroy_caches(void) | 1999 | static void mmu_destroy_caches(void) |
2000 | { | 2000 | { |
2001 | if (pte_chain_cache) | 2001 | if (pte_chain_cache) |
2002 | kmem_cache_destroy(pte_chain_cache); | 2002 | kmem_cache_destroy(pte_chain_cache); |
diff --git a/arch/x86/kvm/x86_emulate.c b/arch/x86/kvm/x86_emulate.c index f2a696d6a243..8a96320ab071 100644 --- a/arch/x86/kvm/x86_emulate.c +++ b/arch/x86/kvm/x86_emulate.c | |||
@@ -677,8 +677,9 @@ static int decode_modrm(struct x86_emulate_ctxt *ctxt, | |||
677 | c->use_modrm_ea = 1; | 677 | c->use_modrm_ea = 1; |
678 | 678 | ||
679 | if (c->modrm_mod == 3) { | 679 | if (c->modrm_mod == 3) { |
680 | c->modrm_val = *(unsigned long *) | 680 | c->modrm_ptr = decode_register(c->modrm_rm, |
681 | decode_register(c->modrm_rm, c->regs, c->d & ByteOp); | 681 | c->regs, c->d & ByteOp); |
682 | c->modrm_val = *(unsigned long *)c->modrm_ptr; | ||
682 | return rc; | 683 | return rc; |
683 | } | 684 | } |
684 | 685 | ||
@@ -1005,6 +1006,7 @@ done_prefixes: | |||
1005 | if ((c->d & ModRM) && c->modrm_mod == 3) { | 1006 | if ((c->d & ModRM) && c->modrm_mod == 3) { |
1006 | c->src.type = OP_REG; | 1007 | c->src.type = OP_REG; |
1007 | c->src.val = c->modrm_val; | 1008 | c->src.val = c->modrm_val; |
1009 | c->src.ptr = c->modrm_ptr; | ||
1008 | break; | 1010 | break; |
1009 | } | 1011 | } |
1010 | c->src.type = OP_MEM; | 1012 | c->src.type = OP_MEM; |
@@ -1049,6 +1051,7 @@ done_prefixes: | |||
1049 | if ((c->d & ModRM) && c->modrm_mod == 3) { | 1051 | if ((c->d & ModRM) && c->modrm_mod == 3) { |
1050 | c->dst.type = OP_REG; | 1052 | c->dst.type = OP_REG; |
1051 | c->dst.val = c->dst.orig_val = c->modrm_val; | 1053 | c->dst.val = c->dst.orig_val = c->modrm_val; |
1054 | c->dst.ptr = c->modrm_ptr; | ||
1052 | break; | 1055 | break; |
1053 | } | 1056 | } |
1054 | c->dst.type = OP_MEM; | 1057 | c->dst.type = OP_MEM; |
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c index af65b2da3ba0..5c7e2fd52075 100644 --- a/arch/x86/lguest/boot.c +++ b/arch/x86/lguest/boot.c | |||
@@ -582,8 +582,9 @@ static void __init lguest_init_IRQ(void) | |||
582 | int vector = FIRST_EXTERNAL_VECTOR + i; | 582 | int vector = FIRST_EXTERNAL_VECTOR + i; |
583 | if (vector != SYSCALL_VECTOR) { | 583 | if (vector != SYSCALL_VECTOR) { |
584 | set_intr_gate(vector, interrupt[i]); | 584 | set_intr_gate(vector, interrupt[i]); |
585 | set_irq_chip_and_handler(i, &lguest_irq_controller, | 585 | set_irq_chip_and_handler_name(i, &lguest_irq_controller, |
586 | handle_level_irq); | 586 | handle_level_irq, |
587 | "level"); | ||
587 | } | 588 | } |
588 | } | 589 | } |
589 | /* This call is required to set up for 4k stacks, where we have | 590 | /* This call is required to set up for 4k stacks, where we have |
diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index bcb1a8e4b2db..de3a99812450 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c | |||
@@ -28,7 +28,7 @@ | |||
28 | #ifdef CONFIG_X86_PAT | 28 | #ifdef CONFIG_X86_PAT |
29 | int __read_mostly pat_wc_enabled = 1; | 29 | int __read_mostly pat_wc_enabled = 1; |
30 | 30 | ||
31 | void __init pat_disable(char *reason) | 31 | void __cpuinit pat_disable(char *reason) |
32 | { | 32 | { |
33 | pat_wc_enabled = 0; | 33 | pat_wc_enabled = 0; |
34 | printk(KERN_INFO "%s\n", reason); | 34 | printk(KERN_INFO "%s\n", reason); |
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 8545c8a9d107..6e64aaf00d1d 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
@@ -302,18 +302,18 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { | |||
302 | }, | 302 | }, |
303 | { | 303 | { |
304 | .callback = set_bf_sort, | 304 | .callback = set_bf_sort, |
305 | .ident = "HP ProLiant DL385 G2", | 305 | .ident = "HP ProLiant DL360", |
306 | .matches = { | 306 | .matches = { |
307 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), | 307 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), |
308 | DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL385 G2"), | 308 | DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL360"), |
309 | }, | 309 | }, |
310 | }, | 310 | }, |
311 | { | 311 | { |
312 | .callback = set_bf_sort, | 312 | .callback = set_bf_sort, |
313 | .ident = "HP ProLiant DL585 G2", | 313 | .ident = "HP ProLiant DL380", |
314 | .matches = { | 314 | .matches = { |
315 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), | 315 | DMI_MATCH(DMI_SYS_VENDOR, "HP"), |
316 | DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL585 G2"), | 316 | DMI_MATCH(DMI_PRODUCT_NAME, "ProLiant DL380"), |
317 | }, | 317 | }, |
318 | }, | 318 | }, |
319 | #ifdef __i386__ | 319 | #ifdef __i386__ |
diff --git a/arch/x86/vdso/vclock_gettime.c b/arch/x86/vdso/vclock_gettime.c index 23476c2ebfc4..efa2ba7c6005 100644 --- a/arch/x86/vdso/vclock_gettime.c +++ b/arch/x86/vdso/vclock_gettime.c | |||
@@ -106,9 +106,9 @@ int __vdso_gettimeofday(struct timeval *tv, struct timezone *tz) | |||
106 | do_realtime((struct timespec *)tv); | 106 | do_realtime((struct timespec *)tv); |
107 | tv->tv_usec /= 1000; | 107 | tv->tv_usec /= 1000; |
108 | if (unlikely(tz != NULL)) { | 108 | if (unlikely(tz != NULL)) { |
109 | /* This relies on gcc inlining the memcpy. We'll notice | 109 | /* Avoid memcpy. Some old compilers fail to inline it */ |
110 | if it ever fails to do so. */ | 110 | tz->tz_minuteswest = gtod->sys_tz.tz_minuteswest; |
111 | memcpy(tz, >od->sys_tz, sizeof(struct timezone)); | 111 | tz->tz_dsttime = gtod->sys_tz.tz_dsttime; |
112 | } | 112 | } |
113 | return 0; | 113 | return 0; |
114 | } | 114 | } |
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c index 126766d43aea..3525ef523a74 100644 --- a/arch/x86/xen/mmu.c +++ b/arch/x86/xen/mmu.c | |||
@@ -60,7 +60,7 @@ xmaddr_t arbitrary_virt_to_machine(unsigned long address) | |||
60 | { | 60 | { |
61 | unsigned int level; | 61 | unsigned int level; |
62 | pte_t *pte = lookup_address(address, &level); | 62 | pte_t *pte = lookup_address(address, &level); |
63 | unsigned offset = address & PAGE_MASK; | 63 | unsigned offset = address & ~PAGE_MASK; |
64 | 64 | ||
65 | BUG_ON(pte == NULL); | 65 | BUG_ON(pte == NULL); |
66 | 66 | ||
diff --git a/arch/xtensa/kernel/init_task.c b/arch/xtensa/kernel/init_task.c index 021b4f46ff94..3df469dbe814 100644 --- a/arch/xtensa/kernel/init_task.c +++ b/arch/xtensa/kernel/init_task.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/uaccess.h> | 22 | #include <asm/uaccess.h> |
23 | 23 | ||
24 | static struct fs_struct init_fs = INIT_FS; | 24 | static struct fs_struct init_fs = INIT_FS; |
25 | static struct files_struct init_files = INIT_FILES; | ||
26 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); | 25 | static struct signal_struct init_signals = INIT_SIGNALS(init_signals); |
27 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); | 26 | static struct sighand_struct init_sighand = INIT_SIGHAND(init_sighand); |
28 | struct mm_struct init_mm = INIT_MM(init_mm); | 27 | struct mm_struct init_mm = INIT_MM(init_mm); |
diff --git a/block/blk-core.c b/block/blk-core.c index 6a9cc0d22a61..1905aaba49fb 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -806,35 +806,32 @@ static struct request *get_request_wait(struct request_queue *q, int rw_flags, | |||
806 | rq = get_request(q, rw_flags, bio, GFP_NOIO); | 806 | rq = get_request(q, rw_flags, bio, GFP_NOIO); |
807 | while (!rq) { | 807 | while (!rq) { |
808 | DEFINE_WAIT(wait); | 808 | DEFINE_WAIT(wait); |
809 | struct io_context *ioc; | ||
809 | struct request_list *rl = &q->rq; | 810 | struct request_list *rl = &q->rq; |
810 | 811 | ||
811 | prepare_to_wait_exclusive(&rl->wait[rw], &wait, | 812 | prepare_to_wait_exclusive(&rl->wait[rw], &wait, |
812 | TASK_UNINTERRUPTIBLE); | 813 | TASK_UNINTERRUPTIBLE); |
813 | 814 | ||
814 | rq = get_request(q, rw_flags, bio, GFP_NOIO); | 815 | blk_add_trace_generic(q, bio, rw, BLK_TA_SLEEPRQ); |
815 | |||
816 | if (!rq) { | ||
817 | struct io_context *ioc; | ||
818 | 816 | ||
819 | blk_add_trace_generic(q, bio, rw, BLK_TA_SLEEPRQ); | 817 | __generic_unplug_device(q); |
820 | 818 | spin_unlock_irq(q->queue_lock); | |
821 | __generic_unplug_device(q); | 819 | io_schedule(); |
822 | spin_unlock_irq(q->queue_lock); | ||
823 | io_schedule(); | ||
824 | 820 | ||
825 | /* | 821 | /* |
826 | * After sleeping, we become a "batching" process and | 822 | * After sleeping, we become a "batching" process and |
827 | * will be able to allocate at least one request, and | 823 | * will be able to allocate at least one request, and |
828 | * up to a big batch of them for a small period time. | 824 | * up to a big batch of them for a small period time. |
829 | * See ioc_batching, ioc_set_batching | 825 | * See ioc_batching, ioc_set_batching |
830 | */ | 826 | */ |
831 | ioc = current_io_context(GFP_NOIO, q->node); | 827 | ioc = current_io_context(GFP_NOIO, q->node); |
832 | ioc_set_batching(q, ioc); | 828 | ioc_set_batching(q, ioc); |
833 | 829 | ||
834 | spin_lock_irq(q->queue_lock); | 830 | spin_lock_irq(q->queue_lock); |
835 | } | ||
836 | finish_wait(&rl->wait[rw], &wait); | 831 | finish_wait(&rl->wait[rw], &wait); |
837 | } | 832 | |
833 | rq = get_request(q, rw_flags, bio, GFP_NOIO); | ||
834 | }; | ||
838 | 835 | ||
839 | return rq; | 836 | return rq; |
840 | } | 837 | } |
diff --git a/block/blktrace.c b/block/blktrace.c index b2cbb4e5d767..7ae87cc4a163 100644 --- a/block/blktrace.c +++ b/block/blktrace.c | |||
@@ -75,6 +75,23 @@ static void trace_note_time(struct blk_trace *bt) | |||
75 | local_irq_restore(flags); | 75 | local_irq_restore(flags); |
76 | } | 76 | } |
77 | 77 | ||
78 | void __trace_note_message(struct blk_trace *bt, const char *fmt, ...) | ||
79 | { | ||
80 | int n; | ||
81 | va_list args; | ||
82 | char *buf; | ||
83 | |||
84 | preempt_disable(); | ||
85 | buf = per_cpu_ptr(bt->msg_data, smp_processor_id()); | ||
86 | va_start(args, fmt); | ||
87 | n = vscnprintf(buf, BLK_TN_MAX_MSG, fmt, args); | ||
88 | va_end(args); | ||
89 | |||
90 | trace_note(bt, 0, BLK_TN_MESSAGE, buf, n); | ||
91 | preempt_enable(); | ||
92 | } | ||
93 | EXPORT_SYMBOL_GPL(__trace_note_message); | ||
94 | |||
78 | static int act_log_check(struct blk_trace *bt, u32 what, sector_t sector, | 95 | static int act_log_check(struct blk_trace *bt, u32 what, sector_t sector, |
79 | pid_t pid) | 96 | pid_t pid) |
80 | { | 97 | { |
@@ -232,6 +249,7 @@ static void blk_trace_cleanup(struct blk_trace *bt) | |||
232 | debugfs_remove(bt->dropped_file); | 249 | debugfs_remove(bt->dropped_file); |
233 | blk_remove_tree(bt->dir); | 250 | blk_remove_tree(bt->dir); |
234 | free_percpu(bt->sequence); | 251 | free_percpu(bt->sequence); |
252 | free_percpu(bt->msg_data); | ||
235 | kfree(bt); | 253 | kfree(bt); |
236 | } | 254 | } |
237 | 255 | ||
@@ -346,6 +364,10 @@ int do_blk_trace_setup(struct request_queue *q, char *name, dev_t dev, | |||
346 | if (!bt->sequence) | 364 | if (!bt->sequence) |
347 | goto err; | 365 | goto err; |
348 | 366 | ||
367 | bt->msg_data = __alloc_percpu(BLK_TN_MAX_MSG); | ||
368 | if (!bt->msg_data) | ||
369 | goto err; | ||
370 | |||
349 | ret = -ENOENT; | 371 | ret = -ENOENT; |
350 | dir = blk_create_tree(buts->name); | 372 | dir = blk_create_tree(buts->name); |
351 | if (!dir) | 373 | if (!dir) |
@@ -392,6 +414,7 @@ err: | |||
392 | if (bt->dropped_file) | 414 | if (bt->dropped_file) |
393 | debugfs_remove(bt->dropped_file); | 415 | debugfs_remove(bt->dropped_file); |
394 | free_percpu(bt->sequence); | 416 | free_percpu(bt->sequence); |
417 | free_percpu(bt->msg_data); | ||
395 | if (bt->rchan) | 418 | if (bt->rchan) |
396 | relay_close(bt->rchan); | 419 | relay_close(bt->rchan); |
397 | kfree(bt); | 420 | kfree(bt); |
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c index b399c62936e0..d01b411c72f0 100644 --- a/block/cfq-iosched.c +++ b/block/cfq-iosched.c | |||
@@ -124,6 +124,8 @@ struct cfq_data { | |||
124 | struct cfq_queue { | 124 | struct cfq_queue { |
125 | /* reference count */ | 125 | /* reference count */ |
126 | atomic_t ref; | 126 | atomic_t ref; |
127 | /* various state flags, see below */ | ||
128 | unsigned int flags; | ||
127 | /* parent cfq_data */ | 129 | /* parent cfq_data */ |
128 | struct cfq_data *cfqd; | 130 | struct cfq_data *cfqd; |
129 | /* service_tree member */ | 131 | /* service_tree member */ |
@@ -138,14 +140,14 @@ struct cfq_queue { | |||
138 | int queued[2]; | 140 | int queued[2]; |
139 | /* currently allocated requests */ | 141 | /* currently allocated requests */ |
140 | int allocated[2]; | 142 | int allocated[2]; |
141 | /* pending metadata requests */ | ||
142 | int meta_pending; | ||
143 | /* fifo list of requests in sort_list */ | 143 | /* fifo list of requests in sort_list */ |
144 | struct list_head fifo; | 144 | struct list_head fifo; |
145 | 145 | ||
146 | unsigned long slice_end; | 146 | unsigned long slice_end; |
147 | long slice_resid; | 147 | long slice_resid; |
148 | 148 | ||
149 | /* pending metadata requests */ | ||
150 | int meta_pending; | ||
149 | /* number of requests that are on the dispatch list or inside driver */ | 151 | /* number of requests that are on the dispatch list or inside driver */ |
150 | int dispatched; | 152 | int dispatched; |
151 | 153 | ||
@@ -153,8 +155,6 @@ struct cfq_queue { | |||
153 | unsigned short ioprio, org_ioprio; | 155 | unsigned short ioprio, org_ioprio; |
154 | unsigned short ioprio_class, org_ioprio_class; | 156 | unsigned short ioprio_class, org_ioprio_class; |
155 | 157 | ||
156 | /* various state flags, see below */ | ||
157 | unsigned int flags; | ||
158 | }; | 158 | }; |
159 | 159 | ||
160 | enum cfqq_state_flags { | 160 | enum cfqq_state_flags { |
@@ -1142,6 +1142,9 @@ static void cfq_put_queue(struct cfq_queue *cfqq) | |||
1142 | kmem_cache_free(cfq_pool, cfqq); | 1142 | kmem_cache_free(cfq_pool, cfqq); |
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | /* | ||
1146 | * Must always be called with the rcu_read_lock() held | ||
1147 | */ | ||
1145 | static void | 1148 | static void |
1146 | __call_for_each_cic(struct io_context *ioc, | 1149 | __call_for_each_cic(struct io_context *ioc, |
1147 | void (*func)(struct io_context *, struct cfq_io_context *)) | 1150 | void (*func)(struct io_context *, struct cfq_io_context *)) |
@@ -1197,6 +1200,11 @@ static void cic_free_func(struct io_context *ioc, struct cfq_io_context *cic) | |||
1197 | cfq_cic_free(cic); | 1200 | cfq_cic_free(cic); |
1198 | } | 1201 | } |
1199 | 1202 | ||
1203 | /* | ||
1204 | * Must be called with rcu_read_lock() held or preemption otherwise disabled. | ||
1205 | * Only two callers of this - ->dtor() which is called with the rcu_read_lock(), | ||
1206 | * and ->trim() which is called with the task lock held | ||
1207 | */ | ||
1200 | static void cfq_free_io_context(struct io_context *ioc) | 1208 | static void cfq_free_io_context(struct io_context *ioc) |
1201 | { | 1209 | { |
1202 | /* | 1210 | /* |
@@ -1502,20 +1510,24 @@ static struct cfq_io_context * | |||
1502 | cfq_cic_lookup(struct cfq_data *cfqd, struct io_context *ioc) | 1510 | cfq_cic_lookup(struct cfq_data *cfqd, struct io_context *ioc) |
1503 | { | 1511 | { |
1504 | struct cfq_io_context *cic; | 1512 | struct cfq_io_context *cic; |
1513 | unsigned long flags; | ||
1505 | void *k; | 1514 | void *k; |
1506 | 1515 | ||
1507 | if (unlikely(!ioc)) | 1516 | if (unlikely(!ioc)) |
1508 | return NULL; | 1517 | return NULL; |
1509 | 1518 | ||
1519 | rcu_read_lock(); | ||
1520 | |||
1510 | /* | 1521 | /* |
1511 | * we maintain a last-hit cache, to avoid browsing over the tree | 1522 | * we maintain a last-hit cache, to avoid browsing over the tree |
1512 | */ | 1523 | */ |
1513 | cic = rcu_dereference(ioc->ioc_data); | 1524 | cic = rcu_dereference(ioc->ioc_data); |
1514 | if (cic && cic->key == cfqd) | 1525 | if (cic && cic->key == cfqd) { |
1526 | rcu_read_unlock(); | ||
1515 | return cic; | 1527 | return cic; |
1528 | } | ||
1516 | 1529 | ||
1517 | do { | 1530 | do { |
1518 | rcu_read_lock(); | ||
1519 | cic = radix_tree_lookup(&ioc->radix_root, (unsigned long) cfqd); | 1531 | cic = radix_tree_lookup(&ioc->radix_root, (unsigned long) cfqd); |
1520 | rcu_read_unlock(); | 1532 | rcu_read_unlock(); |
1521 | if (!cic) | 1533 | if (!cic) |
@@ -1524,10 +1536,13 @@ cfq_cic_lookup(struct cfq_data *cfqd, struct io_context *ioc) | |||
1524 | k = cic->key; | 1536 | k = cic->key; |
1525 | if (unlikely(!k)) { | 1537 | if (unlikely(!k)) { |
1526 | cfq_drop_dead_cic(cfqd, ioc, cic); | 1538 | cfq_drop_dead_cic(cfqd, ioc, cic); |
1539 | rcu_read_lock(); | ||
1527 | continue; | 1540 | continue; |
1528 | } | 1541 | } |
1529 | 1542 | ||
1543 | spin_lock_irqsave(&ioc->lock, flags); | ||
1530 | rcu_assign_pointer(ioc->ioc_data, cic); | 1544 | rcu_assign_pointer(ioc->ioc_data, cic); |
1545 | spin_unlock_irqrestore(&ioc->lock, flags); | ||
1531 | break; | 1546 | break; |
1532 | } while (1); | 1547 | } while (1); |
1533 | 1548 | ||
@@ -2134,6 +2149,10 @@ static void *cfq_init_queue(struct request_queue *q) | |||
2134 | 2149 | ||
2135 | static void cfq_slab_kill(void) | 2150 | static void cfq_slab_kill(void) |
2136 | { | 2151 | { |
2152 | /* | ||
2153 | * Caller already ensured that pending RCU callbacks are completed, | ||
2154 | * so we should have no busy allocations at this point. | ||
2155 | */ | ||
2137 | if (cfq_pool) | 2156 | if (cfq_pool) |
2138 | kmem_cache_destroy(cfq_pool); | 2157 | kmem_cache_destroy(cfq_pool); |
2139 | if (cfq_ioc_pool) | 2158 | if (cfq_ioc_pool) |
@@ -2292,6 +2311,11 @@ static void __exit cfq_exit(void) | |||
2292 | ioc_gone = &all_gone; | 2311 | ioc_gone = &all_gone; |
2293 | /* ioc_gone's update must be visible before reading ioc_count */ | 2312 | /* ioc_gone's update must be visible before reading ioc_count */ |
2294 | smp_wmb(); | 2313 | smp_wmb(); |
2314 | |||
2315 | /* | ||
2316 | * this also protects us from entering cfq_slab_kill() with | ||
2317 | * pending RCU callbacks | ||
2318 | */ | ||
2295 | if (elv_ioc_count_read(ioc_count)) | 2319 | if (elv_ioc_count_read(ioc_count)) |
2296 | wait_for_completion(ioc_gone); | 2320 | wait_for_completion(ioc_gone); |
2297 | cfq_slab_kill(); | 2321 | cfq_slab_kill(); |
diff --git a/block/elevator.c b/block/elevator.c index 980f8ae147b4..902dd1344d56 100644 --- a/block/elevator.c +++ b/block/elevator.c | |||
@@ -1110,6 +1110,8 @@ static int elevator_switch(struct request_queue *q, struct elevator_type *new_e) | |||
1110 | queue_flag_clear(QUEUE_FLAG_ELVSWITCH, q); | 1110 | queue_flag_clear(QUEUE_FLAG_ELVSWITCH, q); |
1111 | spin_unlock_irq(q->queue_lock); | 1111 | spin_unlock_irq(q->queue_lock); |
1112 | 1112 | ||
1113 | blk_add_trace_msg(q, "elv switch: %s", e->elevator_type->elevator_name); | ||
1114 | |||
1113 | return 1; | 1115 | return 1; |
1114 | 1116 | ||
1115 | fail_register: | 1117 | fail_register: |
diff --git a/crypto/cts.c b/crypto/cts.c index c4e70bfb4970..ccf9c5de3958 100644 --- a/crypto/cts.c +++ b/crypto/cts.c | |||
@@ -89,6 +89,9 @@ static int cts_cbc_encrypt(struct crypto_cts_ctx *ctx, | |||
89 | if (lastn < 0) | 89 | if (lastn < 0) |
90 | return -EINVAL; | 90 | return -EINVAL; |
91 | 91 | ||
92 | sg_init_table(sgsrc, 1); | ||
93 | sg_init_table(sgdst, 1); | ||
94 | |||
92 | memset(s, 0, sizeof(s)); | 95 | memset(s, 0, sizeof(s)); |
93 | scatterwalk_map_and_copy(s, src, offset, nbytes, 0); | 96 | scatterwalk_map_and_copy(s, src, offset, nbytes, 0); |
94 | 97 | ||
@@ -172,6 +175,9 @@ static int cts_cbc_decrypt(struct crypto_cts_ctx *ctx, | |||
172 | if (lastn < 0) | 175 | if (lastn < 0) |
173 | return -EINVAL; | 176 | return -EINVAL; |
174 | 177 | ||
178 | sg_init_table(sgsrc, 1); | ||
179 | sg_init_table(sgdst, 1); | ||
180 | |||
175 | scatterwalk_map_and_copy(s, src, offset, nbytes, 0); | 181 | scatterwalk_map_and_copy(s, src, offset, nbytes, 0); |
176 | 182 | ||
177 | lcldesc.tfm = ctx->child; | 183 | lcldesc.tfm = ctx->child; |
diff --git a/drivers/acpi/dispatcher/dsmethod.c b/drivers/acpi/dispatcher/dsmethod.c index e48a3ea03117..2509809a36cf 100644 --- a/drivers/acpi/dispatcher/dsmethod.c +++ b/drivers/acpi/dispatcher/dsmethod.c | |||
@@ -565,7 +565,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc, | |||
565 | 565 | ||
566 | acpi_os_release_mutex(method_desc->method. | 566 | acpi_os_release_mutex(method_desc->method. |
567 | mutex->mutex.os_mutex); | 567 | mutex->mutex.os_mutex); |
568 | method_desc->method.mutex->mutex.thread_id = 0; | 568 | method_desc->method.mutex->mutex.thread_id = NULL; |
569 | } | 569 | } |
570 | } | 570 | } |
571 | 571 | ||
diff --git a/drivers/acpi/executer/exmutex.c b/drivers/acpi/executer/exmutex.c index c873ab40cd0e..a8bf3d713e28 100644 --- a/drivers/acpi/executer/exmutex.c +++ b/drivers/acpi/executer/exmutex.c | |||
@@ -326,7 +326,7 @@ acpi_status acpi_ex_release_mutex_object(union acpi_operand_object *obj_desc) | |||
326 | 326 | ||
327 | /* Clear mutex info */ | 327 | /* Clear mutex info */ |
328 | 328 | ||
329 | obj_desc->mutex.thread_id = 0; | 329 | obj_desc->mutex.thread_id = NULL; |
330 | return_ACPI_STATUS(status); | 330 | return_ACPI_STATUS(status); |
331 | } | 331 | } |
332 | 332 | ||
@@ -463,7 +463,7 @@ void acpi_ex_release_all_mutexes(struct acpi_thread_state *thread) | |||
463 | /* Mark mutex unowned */ | 463 | /* Mark mutex unowned */ |
464 | 464 | ||
465 | obj_desc->mutex.owner_thread = NULL; | 465 | obj_desc->mutex.owner_thread = NULL; |
466 | obj_desc->mutex.thread_id = 0; | 466 | obj_desc->mutex.thread_id = NULL; |
467 | 467 | ||
468 | /* Update Thread sync_level (Last mutex is the important one) */ | 468 | /* Update Thread sync_level (Last mutex is the important one) */ |
469 | 469 | ||
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 97f83fb2ee2e..544b7d6c617c 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -502,10 +502,10 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
502 | { PCI_VDEVICE(NVIDIA, 0x0bcd), board_ahci }, /* MCP7B */ | 502 | { PCI_VDEVICE(NVIDIA, 0x0bcd), board_ahci }, /* MCP7B */ |
503 | { PCI_VDEVICE(NVIDIA, 0x0bce), board_ahci }, /* MCP7B */ | 503 | { PCI_VDEVICE(NVIDIA, 0x0bce), board_ahci }, /* MCP7B */ |
504 | { PCI_VDEVICE(NVIDIA, 0x0bcf), board_ahci }, /* MCP7B */ | 504 | { PCI_VDEVICE(NVIDIA, 0x0bcf), board_ahci }, /* MCP7B */ |
505 | { PCI_VDEVICE(NVIDIA, 0x0bd0), board_ahci }, /* MCP7B */ | 505 | { PCI_VDEVICE(NVIDIA, 0x0bc4), board_ahci }, /* MCP7B */ |
506 | { PCI_VDEVICE(NVIDIA, 0x0bd1), board_ahci }, /* MCP7B */ | 506 | { PCI_VDEVICE(NVIDIA, 0x0bc5), board_ahci }, /* MCP7B */ |
507 | { PCI_VDEVICE(NVIDIA, 0x0bd2), board_ahci }, /* MCP7B */ | 507 | { PCI_VDEVICE(NVIDIA, 0x0bc6), board_ahci }, /* MCP7B */ |
508 | { PCI_VDEVICE(NVIDIA, 0x0bd3), board_ahci }, /* MCP7B */ | 508 | { PCI_VDEVICE(NVIDIA, 0x0bc7), board_ahci }, /* MCP7B */ |
509 | 509 | ||
510 | /* SiS */ | 510 | /* SiS */ |
511 | { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ | 511 | { PCI_VDEVICE(SI, 0x1184), board_ahci }, /* SiS 966 */ |
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index a9027b8fbdd5..3548ee7014ca 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c | |||
@@ -247,10 +247,11 @@ static const struct pci_device_id piix_pci_tbl[] = { | |||
247 | { 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, | 247 | { 0x8086, 0x2820, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, |
248 | /* SATA Controller 2 IDE (ICH8) */ | 248 | /* SATA Controller 2 IDE (ICH8) */ |
249 | { 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, | 249 | { 0x8086, 0x2825, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_2port_sata }, |
250 | /* Mobile SATA Controller IDE (ICH8M) */ | ||
251 | { 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, | ||
252 | /* Mobile SATA Controller IDE (ICH8M), Apple */ | 250 | /* Mobile SATA Controller IDE (ICH8M), Apple */ |
253 | { 0x8086, 0x2828, 0x106b, 0x00a0, 0, 0, ich8m_apple_sata }, | 251 | { 0x8086, 0x2828, 0x106b, 0x00a0, 0, 0, ich8m_apple_sata }, |
252 | { 0x8086, 0x2828, 0x106b, 0x00a1, 0, 0, ich8m_apple_sata }, | ||
253 | /* Mobile SATA Controller IDE (ICH8M) */ | ||
254 | { 0x8086, 0x2828, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, | ||
254 | /* SATA Controller IDE (ICH9) */ | 255 | /* SATA Controller IDE (ICH9) */ |
255 | { 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, | 256 | { 0x8086, 0x2920, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich8_sata }, |
256 | /* SATA Controller IDE (ICH9) */ | 257 | /* SATA Controller IDE (ICH9) */ |
@@ -526,7 +527,7 @@ static struct ata_port_info piix_port_info[] = { | |||
526 | 527 | ||
527 | [ich8m_apple_sata] = | 528 | [ich8m_apple_sata] = |
528 | { | 529 | { |
529 | .flags = PIIX_SATA_FLAGS | PIIX_FLAG_SIDPR, | 530 | .flags = PIIX_SATA_FLAGS, |
530 | .pio_mask = 0x1f, /* pio0-4 */ | 531 | .pio_mask = 0x1f, /* pio0-4 */ |
531 | .mwdma_mask = 0x07, /* mwdma0-2 */ | 532 | .mwdma_mask = 0x07, /* mwdma0-2 */ |
532 | .udma_mask = ATA_UDMA6, | 533 | .udma_mask = ATA_UDMA6, |
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c index 70b77e0899a8..dbf6ca781f66 100644 --- a/drivers/ata/libata-acpi.c +++ b/drivers/ata/libata-acpi.c | |||
@@ -118,8 +118,8 @@ static void ata_acpi_associate_ide_port(struct ata_port *ap) | |||
118 | ap->pflags |= ATA_PFLAG_INIT_GTM_VALID; | 118 | ap->pflags |= ATA_PFLAG_INIT_GTM_VALID; |
119 | } | 119 | } |
120 | 120 | ||
121 | static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device *dev, | 121 | static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device |
122 | u32 event) | 122 | *dev, u32 event) |
123 | { | 123 | { |
124 | char event_string[12]; | 124 | char event_string[12]; |
125 | char *envp[] = { event_string, NULL }; | 125 | char *envp[] = { event_string, NULL }; |
@@ -127,6 +127,9 @@ static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device *dev, | |||
127 | struct kobject *kobj = NULL; | 127 | struct kobject *kobj = NULL; |
128 | int wait = 0; | 128 | int wait = 0; |
129 | unsigned long flags; | 129 | unsigned long flags; |
130 | acpi_handle handle, tmphandle; | ||
131 | unsigned long sta; | ||
132 | acpi_status status; | ||
130 | 133 | ||
131 | if (!ap) | 134 | if (!ap) |
132 | ap = dev->link->ap; | 135 | ap = dev->link->ap; |
@@ -134,32 +137,57 @@ static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device *dev, | |||
134 | 137 | ||
135 | spin_lock_irqsave(ap->lock, flags); | 138 | spin_lock_irqsave(ap->lock, flags); |
136 | 139 | ||
140 | if (dev) | ||
141 | handle = dev->acpi_handle; | ||
142 | else | ||
143 | handle = ap->acpi_handle; | ||
144 | |||
145 | status = acpi_get_handle(handle, "_EJ0", &tmphandle); | ||
146 | if (ACPI_FAILURE(status)) { | ||
147 | /* This device is not ejectable */ | ||
148 | spin_unlock_irqrestore(ap->lock, flags); | ||
149 | return; | ||
150 | } | ||
151 | |||
152 | status = acpi_evaluate_integer(handle, "_STA", NULL, &sta); | ||
153 | if (ACPI_FAILURE(status)) { | ||
154 | printk ("Unable to determine bay status\n"); | ||
155 | spin_unlock_irqrestore(ap->lock, flags); | ||
156 | return; | ||
157 | } | ||
158 | |||
137 | switch (event) { | 159 | switch (event) { |
138 | case ACPI_NOTIFY_BUS_CHECK: | 160 | case ACPI_NOTIFY_BUS_CHECK: |
139 | case ACPI_NOTIFY_DEVICE_CHECK: | 161 | case ACPI_NOTIFY_DEVICE_CHECK: |
140 | ata_ehi_push_desc(ehi, "ACPI event"); | 162 | ata_ehi_push_desc(ehi, "ACPI event"); |
141 | ata_ehi_hotplugged(ehi); | 163 | if (!sta) { |
142 | ata_port_freeze(ap); | 164 | /* Device has been unplugged */ |
143 | break; | 165 | if (dev) |
144 | 166 | dev->flags |= ATA_DFLAG_DETACH; | |
145 | case ACPI_NOTIFY_EJECT_REQUEST: | 167 | else { |
146 | ata_ehi_push_desc(ehi, "ACPI event"); | 168 | struct ata_link *tlink; |
147 | if (dev) | 169 | struct ata_device *tdev; |
148 | dev->flags |= ATA_DFLAG_DETACH; | 170 | |
149 | else { | 171 | ata_port_for_each_link(tlink, ap) { |
150 | struct ata_link *tlink; | 172 | ata_link_for_each_dev(tdev, tlink) { |
151 | struct ata_device *tdev; | 173 | tdev->flags |= |
152 | 174 | ATA_DFLAG_DETACH; | |
153 | ata_port_for_each_link(tlink, ap) | 175 | } |
154 | ata_link_for_each_dev(tdev, tlink) | 176 | } |
155 | tdev->flags |= ATA_DFLAG_DETACH; | 177 | } |
178 | ata_port_schedule_eh(ap); | ||
179 | wait = 1; | ||
180 | } else { | ||
181 | ata_ehi_hotplugged(ehi); | ||
182 | ata_port_freeze(ap); | ||
156 | } | 183 | } |
157 | |||
158 | ata_port_schedule_eh(ap); | ||
159 | wait = 1; | ||
160 | break; | ||
161 | } | 184 | } |
162 | 185 | ||
186 | spin_unlock_irqrestore(ap->lock, flags); | ||
187 | |||
188 | if (wait) | ||
189 | ata_port_wait_eh(ap); | ||
190 | |||
163 | if (dev) { | 191 | if (dev) { |
164 | if (dev->sdev) | 192 | if (dev->sdev) |
165 | kobj = &dev->sdev->sdev_gendev.kobj; | 193 | kobj = &dev->sdev->sdev_gendev.kobj; |
@@ -170,11 +198,6 @@ static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device *dev, | |||
170 | sprintf(event_string, "BAY_EVENT=%d", event); | 198 | sprintf(event_string, "BAY_EVENT=%d", event); |
171 | kobject_uevent_env(kobj, KOBJ_CHANGE, envp); | 199 | kobject_uevent_env(kobj, KOBJ_CHANGE, envp); |
172 | } | 200 | } |
173 | |||
174 | spin_unlock_irqrestore(ap->lock, flags); | ||
175 | |||
176 | if (wait) | ||
177 | ata_port_wait_eh(ap); | ||
178 | } | 201 | } |
179 | 202 | ||
180 | static void ata_acpi_dev_notify(acpi_handle handle, u32 event, void *data) | 203 | static void ata_acpi_dev_notify(acpi_handle handle, u32 event, void *data) |
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 927b692d723c..cc816ca623d3 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c | |||
@@ -2126,6 +2126,13 @@ int ata_dev_configure(struct ata_device *dev) | |||
2126 | dev->horkage |= ata_dev_blacklisted(dev); | 2126 | dev->horkage |= ata_dev_blacklisted(dev); |
2127 | ata_force_horkage(dev); | 2127 | ata_force_horkage(dev); |
2128 | 2128 | ||
2129 | if (dev->horkage & ATA_HORKAGE_DISABLE) { | ||
2130 | ata_dev_printk(dev, KERN_INFO, | ||
2131 | "unsupported device, disabling\n"); | ||
2132 | ata_dev_disable(dev); | ||
2133 | return 0; | ||
2134 | } | ||
2135 | |||
2129 | /* let ACPI work its magic */ | 2136 | /* let ACPI work its magic */ |
2130 | rc = ata_acpi_on_devcfg(dev); | 2137 | rc = ata_acpi_on_devcfg(dev); |
2131 | if (rc) | 2138 | if (rc) |
@@ -3490,22 +3497,11 @@ int sata_link_resume(struct ata_link *link, const unsigned long *params, | |||
3490 | if ((rc = sata_link_debounce(link, params, deadline))) | 3497 | if ((rc = sata_link_debounce(link, params, deadline))) |
3491 | return rc; | 3498 | return rc; |
3492 | 3499 | ||
3493 | /* Clear SError. PMP and some host PHYs require this to | 3500 | /* clear SError, some PHYs require this even for SRST to work */ |
3494 | * operate and clearing should be done before checking PHY | ||
3495 | * online status to avoid race condition (hotplugging between | ||
3496 | * link resume and status check). | ||
3497 | */ | ||
3498 | if (!(rc = sata_scr_read(link, SCR_ERROR, &serror))) | 3501 | if (!(rc = sata_scr_read(link, SCR_ERROR, &serror))) |
3499 | rc = sata_scr_write(link, SCR_ERROR, serror); | 3502 | rc = sata_scr_write(link, SCR_ERROR, serror); |
3500 | if (rc == 0 || rc == -EINVAL) { | ||
3501 | unsigned long flags; | ||
3502 | 3503 | ||
3503 | spin_lock_irqsave(link->ap->lock, flags); | 3504 | return rc != -EINVAL ? rc : 0; |
3504 | link->eh_info.serror = 0; | ||
3505 | spin_unlock_irqrestore(link->ap->lock, flags); | ||
3506 | rc = 0; | ||
3507 | } | ||
3508 | return rc; | ||
3509 | } | 3505 | } |
3510 | 3506 | ||
3511 | /** | 3507 | /** |
@@ -3653,9 +3649,13 @@ int sata_link_hardreset(struct ata_link *link, const unsigned long *timing, | |||
3653 | if (check_ready) | 3649 | if (check_ready) |
3654 | rc = ata_wait_ready(link, deadline, check_ready); | 3650 | rc = ata_wait_ready(link, deadline, check_ready); |
3655 | out: | 3651 | out: |
3656 | if (rc && rc != -EAGAIN) | 3652 | if (rc && rc != -EAGAIN) { |
3653 | /* online is set iff link is online && reset succeeded */ | ||
3654 | if (online) | ||
3655 | *online = false; | ||
3657 | ata_link_printk(link, KERN_ERR, | 3656 | ata_link_printk(link, KERN_ERR, |
3658 | "COMRESET failed (errno=%d)\n", rc); | 3657 | "COMRESET failed (errno=%d)\n", rc); |
3658 | } | ||
3659 | DPRINTK("EXIT, rc=%d\n", rc); | 3659 | DPRINTK("EXIT, rc=%d\n", rc); |
3660 | return rc; | 3660 | return rc; |
3661 | } | 3661 | } |
@@ -3700,8 +3700,14 @@ int sata_std_hardreset(struct ata_link *link, unsigned int *class, | |||
3700 | */ | 3700 | */ |
3701 | void ata_std_postreset(struct ata_link *link, unsigned int *classes) | 3701 | void ata_std_postreset(struct ata_link *link, unsigned int *classes) |
3702 | { | 3702 | { |
3703 | u32 serror; | ||
3704 | |||
3703 | DPRINTK("ENTER\n"); | 3705 | DPRINTK("ENTER\n"); |
3704 | 3706 | ||
3707 | /* reset complete, clear SError */ | ||
3708 | if (!sata_scr_read(link, SCR_ERROR, &serror)) | ||
3709 | sata_scr_write(link, SCR_ERROR, serror); | ||
3710 | |||
3705 | /* print link status */ | 3711 | /* print link status */ |
3706 | sata_print_link_status(link); | 3712 | sata_print_link_status(link); |
3707 | 3713 | ||
@@ -3894,8 +3900,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = { | |||
3894 | { "SAMSUNG CD-ROM SN-124", "N001", ATA_HORKAGE_NODMA }, | 3900 | { "SAMSUNG CD-ROM SN-124", "N001", ATA_HORKAGE_NODMA }, |
3895 | { "Seagate STT20000A", NULL, ATA_HORKAGE_NODMA }, | 3901 | { "Seagate STT20000A", NULL, ATA_HORKAGE_NODMA }, |
3896 | /* Odd clown on sil3726/4726 PMPs */ | 3902 | /* Odd clown on sil3726/4726 PMPs */ |
3897 | { "Config Disk", NULL, ATA_HORKAGE_NODMA | | 3903 | { "Config Disk", NULL, ATA_HORKAGE_DISABLE }, |
3898 | ATA_HORKAGE_SKIP_PM }, | ||
3899 | 3904 | ||
3900 | /* Weird ATAPI devices */ | 3905 | /* Weird ATAPI devices */ |
3901 | { "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 }, | 3906 | { "TORiSAN DVD-ROM DRD-N216", NULL, ATA_HORKAGE_MAX_SEC_128 }, |
@@ -5398,7 +5403,7 @@ static void ata_host_stop(struct device *gendev, void *res) | |||
5398 | */ | 5403 | */ |
5399 | static void ata_finalize_port_ops(struct ata_port_operations *ops) | 5404 | static void ata_finalize_port_ops(struct ata_port_operations *ops) |
5400 | { | 5405 | { |
5401 | static spinlock_t lock = SPIN_LOCK_UNLOCKED; | 5406 | static DEFINE_SPINLOCK(lock); |
5402 | const struct ata_port_operations *cur; | 5407 | const struct ata_port_operations *cur; |
5403 | void **begin = (void **)ops; | 5408 | void **begin = (void **)ops; |
5404 | void **end = (void **)&ops->inherits; | 5409 | void **end = (void **)&ops->inherits; |
@@ -5616,7 +5621,7 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) | |||
5616 | spin_lock_irqsave(ap->lock, flags); | 5621 | spin_lock_irqsave(ap->lock, flags); |
5617 | 5622 | ||
5618 | ehi->probe_mask |= ATA_ALL_DEVICES; | 5623 | ehi->probe_mask |= ATA_ALL_DEVICES; |
5619 | ehi->action |= ATA_EH_RESET; | 5624 | ehi->action |= ATA_EH_RESET | ATA_EH_LPM; |
5620 | ehi->flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET; | 5625 | ehi->flags |= ATA_EHI_NO_AUTOPSY | ATA_EHI_QUIET; |
5621 | 5626 | ||
5622 | ap->pflags &= ~ATA_PFLAG_INITIALIZING; | 5627 | ap->pflags &= ~ATA_PFLAG_INITIALIZING; |
@@ -5649,7 +5654,6 @@ int ata_host_register(struct ata_host *host, struct scsi_host_template *sht) | |||
5649 | struct ata_port *ap = host->ports[i]; | 5654 | struct ata_port *ap = host->ports[i]; |
5650 | 5655 | ||
5651 | ata_scsi_scan_host(ap, 1); | 5656 | ata_scsi_scan_host(ap, 1); |
5652 | ata_lpm_schedule(ap, ap->pm_policy); | ||
5653 | } | 5657 | } |
5654 | 5658 | ||
5655 | return 0; | 5659 | return 0; |
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 62e033146bed..7894d83ea1eb 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
@@ -1308,12 +1308,7 @@ static void ata_eh_analyze_serror(struct ata_link *link) | |||
1308 | unsigned int err_mask = 0, action = 0; | 1308 | unsigned int err_mask = 0, action = 0; |
1309 | u32 hotplug_mask; | 1309 | u32 hotplug_mask; |
1310 | 1310 | ||
1311 | if (serror & SERR_PERSISTENT) { | 1311 | if (serror & (SERR_PERSISTENT | SERR_DATA)) { |
1312 | err_mask |= AC_ERR_ATA_BUS; | ||
1313 | action |= ATA_EH_RESET; | ||
1314 | } | ||
1315 | if (serror & | ||
1316 | (SERR_DATA_RECOVERED | SERR_COMM_RECOVERED | SERR_DATA)) { | ||
1317 | err_mask |= AC_ERR_ATA_BUS; | 1312 | err_mask |= AC_ERR_ATA_BUS; |
1318 | action |= ATA_EH_RESET; | 1313 | action |= ATA_EH_RESET; |
1319 | } | 1314 | } |
@@ -2047,19 +2042,11 @@ static int ata_do_reset(struct ata_link *link, ata_reset_fn_t reset, | |||
2047 | unsigned int *classes, unsigned long deadline) | 2042 | unsigned int *classes, unsigned long deadline) |
2048 | { | 2043 | { |
2049 | struct ata_device *dev; | 2044 | struct ata_device *dev; |
2050 | int rc; | ||
2051 | 2045 | ||
2052 | ata_link_for_each_dev(dev, link) | 2046 | ata_link_for_each_dev(dev, link) |
2053 | classes[dev->devno] = ATA_DEV_UNKNOWN; | 2047 | classes[dev->devno] = ATA_DEV_UNKNOWN; |
2054 | 2048 | ||
2055 | rc = reset(link, classes, deadline); | 2049 | return reset(link, classes, deadline); |
2056 | |||
2057 | /* convert all ATA_DEV_UNKNOWN to ATA_DEV_NONE */ | ||
2058 | ata_link_for_each_dev(dev, link) | ||
2059 | if (classes[dev->devno] == ATA_DEV_UNKNOWN) | ||
2060 | classes[dev->devno] = ATA_DEV_NONE; | ||
2061 | |||
2062 | return rc; | ||
2063 | } | 2050 | } |
2064 | 2051 | ||
2065 | static int ata_eh_followup_srst_needed(struct ata_link *link, | 2052 | static int ata_eh_followup_srst_needed(struct ata_link *link, |
@@ -2096,9 +2083,11 @@ int ata_eh_reset(struct ata_link *link, int classify, | |||
2096 | ata_reset_fn_t reset; | 2083 | ata_reset_fn_t reset; |
2097 | unsigned long flags; | 2084 | unsigned long flags; |
2098 | u32 sstatus; | 2085 | u32 sstatus; |
2099 | int rc; | 2086 | int nr_known, rc; |
2100 | 2087 | ||
2101 | /* about to reset */ | 2088 | /* |
2089 | * Prepare to reset | ||
2090 | */ | ||
2102 | spin_lock_irqsave(ap->lock, flags); | 2091 | spin_lock_irqsave(ap->lock, flags); |
2103 | ap->pflags |= ATA_PFLAG_RESETTING; | 2092 | ap->pflags |= ATA_PFLAG_RESETTING; |
2104 | spin_unlock_irqrestore(ap->lock, flags); | 2093 | spin_unlock_irqrestore(ap->lock, flags); |
@@ -2124,16 +2113,8 @@ int ata_eh_reset(struct ata_link *link, int classify, | |||
2124 | ap->ops->set_piomode(ap, dev); | 2113 | ap->ops->set_piomode(ap, dev); |
2125 | } | 2114 | } |
2126 | 2115 | ||
2127 | if (!softreset && !hardreset) { | ||
2128 | if (verbose) | ||
2129 | ata_link_printk(link, KERN_INFO, "no reset method " | ||
2130 | "available, skipping reset\n"); | ||
2131 | if (!(lflags & ATA_LFLAG_ASSUME_CLASS)) | ||
2132 | lflags |= ATA_LFLAG_ASSUME_ATA; | ||
2133 | goto done; | ||
2134 | } | ||
2135 | |||
2136 | /* prefer hardreset */ | 2116 | /* prefer hardreset */ |
2117 | reset = NULL; | ||
2137 | ehc->i.action &= ~ATA_EH_RESET; | 2118 | ehc->i.action &= ~ATA_EH_RESET; |
2138 | if (hardreset) { | 2119 | if (hardreset) { |
2139 | reset = hardreset; | 2120 | reset = hardreset; |
@@ -2141,11 +2122,6 @@ int ata_eh_reset(struct ata_link *link, int classify, | |||
2141 | } else if (softreset) { | 2122 | } else if (softreset) { |
2142 | reset = softreset; | 2123 | reset = softreset; |
2143 | ehc->i.action = ATA_EH_SOFTRESET; | 2124 | ehc->i.action = ATA_EH_SOFTRESET; |
2144 | } else { | ||
2145 | ata_link_printk(link, KERN_ERR, "BUG: no reset method, " | ||
2146 | "please report to linux-ide@vger.kernel.org\n"); | ||
2147 | dump_stack(); | ||
2148 | return -EINVAL; | ||
2149 | } | 2125 | } |
2150 | 2126 | ||
2151 | if (prereset) { | 2127 | if (prereset) { |
@@ -2165,55 +2141,71 @@ int ata_eh_reset(struct ata_link *link, int classify, | |||
2165 | "prereset failed (errno=%d)\n", rc); | 2141 | "prereset failed (errno=%d)\n", rc); |
2166 | goto out; | 2142 | goto out; |
2167 | } | 2143 | } |
2168 | } | ||
2169 | 2144 | ||
2170 | /* prereset() might have cleared ATA_EH_RESET */ | 2145 | /* prereset() might have cleared ATA_EH_RESET. If so, |
2171 | if (!(ehc->i.action & ATA_EH_RESET)) { | 2146 | * bang classes and return. |
2172 | /* prereset told us not to reset, bang classes and return */ | 2147 | */ |
2173 | ata_link_for_each_dev(dev, link) | 2148 | if (reset && !(ehc->i.action & ATA_EH_RESET)) { |
2174 | classes[dev->devno] = ATA_DEV_NONE; | 2149 | ata_link_for_each_dev(dev, link) |
2175 | rc = 0; | 2150 | classes[dev->devno] = ATA_DEV_NONE; |
2176 | goto out; | 2151 | rc = 0; |
2152 | goto out; | ||
2153 | } | ||
2177 | } | 2154 | } |
2178 | 2155 | ||
2179 | retry: | 2156 | retry: |
2157 | /* | ||
2158 | * Perform reset | ||
2159 | */ | ||
2160 | if (ata_is_host_link(link)) | ||
2161 | ata_eh_freeze_port(ap); | ||
2162 | |||
2180 | deadline = jiffies + ata_eh_reset_timeouts[try++]; | 2163 | deadline = jiffies + ata_eh_reset_timeouts[try++]; |
2181 | 2164 | ||
2182 | /* shut up during boot probing */ | 2165 | if (reset) { |
2183 | if (verbose) | 2166 | if (verbose) |
2184 | ata_link_printk(link, KERN_INFO, "%s resetting link\n", | 2167 | ata_link_printk(link, KERN_INFO, "%s resetting link\n", |
2185 | reset == softreset ? "soft" : "hard"); | 2168 | reset == softreset ? "soft" : "hard"); |
2186 | 2169 | ||
2187 | /* mark that this EH session started with reset */ | 2170 | /* mark that this EH session started with reset */ |
2188 | if (reset == hardreset) | 2171 | if (reset == hardreset) |
2189 | ehc->i.flags |= ATA_EHI_DID_HARDRESET; | 2172 | ehc->i.flags |= ATA_EHI_DID_HARDRESET; |
2190 | else | 2173 | else |
2191 | ehc->i.flags |= ATA_EHI_DID_SOFTRESET; | 2174 | ehc->i.flags |= ATA_EHI_DID_SOFTRESET; |
2192 | 2175 | ||
2193 | rc = ata_do_reset(link, reset, classes, deadline); | 2176 | rc = ata_do_reset(link, reset, classes, deadline); |
2194 | 2177 | ||
2195 | if (reset == hardreset && | 2178 | if (reset == hardreset && |
2196 | ata_eh_followup_srst_needed(link, rc, classify, classes)) { | 2179 | ata_eh_followup_srst_needed(link, rc, classify, classes)) { |
2197 | /* okay, let's do follow-up softreset */ | 2180 | /* okay, let's do follow-up softreset */ |
2198 | reset = softreset; | 2181 | reset = softreset; |
2199 | 2182 | ||
2200 | if (!reset) { | 2183 | if (!reset) { |
2201 | ata_link_printk(link, KERN_ERR, | 2184 | ata_link_printk(link, KERN_ERR, |
2202 | "follow-up softreset required " | 2185 | "follow-up softreset required " |
2203 | "but no softreset avaliable\n"); | 2186 | "but no softreset avaliable\n"); |
2204 | rc = -EINVAL; | 2187 | rc = -EINVAL; |
2205 | goto fail; | 2188 | goto fail; |
2189 | } | ||
2190 | |||
2191 | ata_eh_about_to_do(link, NULL, ATA_EH_RESET); | ||
2192 | rc = ata_do_reset(link, reset, classes, deadline); | ||
2206 | } | 2193 | } |
2207 | 2194 | ||
2208 | ata_eh_about_to_do(link, NULL, ATA_EH_RESET); | 2195 | /* -EAGAIN can happen if we skipped followup SRST */ |
2209 | rc = ata_do_reset(link, reset, classes, deadline); | 2196 | if (rc && rc != -EAGAIN) |
2197 | goto fail; | ||
2198 | } else { | ||
2199 | if (verbose) | ||
2200 | ata_link_printk(link, KERN_INFO, "no reset method " | ||
2201 | "available, skipping reset\n"); | ||
2202 | if (!(lflags & ATA_LFLAG_ASSUME_CLASS)) | ||
2203 | lflags |= ATA_LFLAG_ASSUME_ATA; | ||
2210 | } | 2204 | } |
2211 | 2205 | ||
2212 | /* -EAGAIN can happen if we skipped followup SRST */ | 2206 | /* |
2213 | if (rc && rc != -EAGAIN) | 2207 | * Post-reset processing |
2214 | goto fail; | 2208 | */ |
2215 | |||
2216 | done: | ||
2217 | ata_link_for_each_dev(dev, link) { | 2209 | ata_link_for_each_dev(dev, link) { |
2218 | /* After the reset, the device state is PIO 0 and the | 2210 | /* After the reset, the device state is PIO 0 and the |
2219 | * controller state is undefined. Reset also wakes up | 2211 | * controller state is undefined. Reset also wakes up |
@@ -2236,9 +2228,53 @@ int ata_eh_reset(struct ata_link *link, int classify, | |||
2236 | if (sata_scr_read(link, SCR_STATUS, &sstatus) == 0) | 2228 | if (sata_scr_read(link, SCR_STATUS, &sstatus) == 0) |
2237 | link->sata_spd = (sstatus >> 4) & 0xf; | 2229 | link->sata_spd = (sstatus >> 4) & 0xf; |
2238 | 2230 | ||
2231 | /* thaw the port */ | ||
2232 | if (ata_is_host_link(link)) | ||
2233 | ata_eh_thaw_port(ap); | ||
2234 | |||
2235 | /* postreset() should clear hardware SError. Although SError | ||
2236 | * is cleared during link resume, clearing SError here is | ||
2237 | * necessary as some PHYs raise hotplug events after SRST. | ||
2238 | * This introduces race condition where hotplug occurs between | ||
2239 | * reset and here. This race is mediated by cross checking | ||
2240 | * link onlineness and classification result later. | ||
2241 | */ | ||
2239 | if (postreset) | 2242 | if (postreset) |
2240 | postreset(link, classes); | 2243 | postreset(link, classes); |
2241 | 2244 | ||
2245 | /* clear cached SError */ | ||
2246 | spin_lock_irqsave(link->ap->lock, flags); | ||
2247 | link->eh_info.serror = 0; | ||
2248 | spin_unlock_irqrestore(link->ap->lock, flags); | ||
2249 | |||
2250 | /* Make sure onlineness and classification result correspond. | ||
2251 | * Hotplug could have happened during reset and some | ||
2252 | * controllers fail to wait while a drive is spinning up after | ||
2253 | * being hotplugged causing misdetection. By cross checking | ||
2254 | * link onlineness and classification result, those conditions | ||
2255 | * can be reliably detected and retried. | ||
2256 | */ | ||
2257 | nr_known = 0; | ||
2258 | ata_link_for_each_dev(dev, link) { | ||
2259 | /* convert all ATA_DEV_UNKNOWN to ATA_DEV_NONE */ | ||
2260 | if (classes[dev->devno] == ATA_DEV_UNKNOWN) | ||
2261 | classes[dev->devno] = ATA_DEV_NONE; | ||
2262 | else | ||
2263 | nr_known++; | ||
2264 | } | ||
2265 | |||
2266 | if (classify && !nr_known && ata_link_online(link)) { | ||
2267 | if (try < max_tries) { | ||
2268 | ata_link_printk(link, KERN_WARNING, "link online but " | ||
2269 | "device misclassified, retrying\n"); | ||
2270 | rc = -EAGAIN; | ||
2271 | goto fail; | ||
2272 | } | ||
2273 | ata_link_printk(link, KERN_WARNING, | ||
2274 | "link online but device misclassified, " | ||
2275 | "device detection might fail\n"); | ||
2276 | } | ||
2277 | |||
2242 | /* reset successful, schedule revalidation */ | 2278 | /* reset successful, schedule revalidation */ |
2243 | ata_eh_done(link, NULL, ATA_EH_RESET); | 2279 | ata_eh_done(link, NULL, ATA_EH_RESET); |
2244 | ehc->i.action |= ATA_EH_REVALIDATE; | 2280 | ehc->i.action |= ATA_EH_REVALIDATE; |
@@ -2587,7 +2623,7 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, | |||
2587 | struct ata_link *link; | 2623 | struct ata_link *link; |
2588 | struct ata_device *dev; | 2624 | struct ata_device *dev; |
2589 | int nr_failed_devs, nr_disabled_devs; | 2625 | int nr_failed_devs, nr_disabled_devs; |
2590 | int reset, rc; | 2626 | int rc; |
2591 | unsigned long flags; | 2627 | unsigned long flags; |
2592 | 2628 | ||
2593 | DPRINTK("ENTER\n"); | 2629 | DPRINTK("ENTER\n"); |
@@ -2630,7 +2666,6 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, | |||
2630 | rc = 0; | 2666 | rc = 0; |
2631 | nr_failed_devs = 0; | 2667 | nr_failed_devs = 0; |
2632 | nr_disabled_devs = 0; | 2668 | nr_disabled_devs = 0; |
2633 | reset = 0; | ||
2634 | 2669 | ||
2635 | /* if UNLOADING, finish immediately */ | 2670 | /* if UNLOADING, finish immediately */ |
2636 | if (ap->pflags & ATA_PFLAG_UNLOADING) | 2671 | if (ap->pflags & ATA_PFLAG_UNLOADING) |
@@ -2644,40 +2679,24 @@ int ata_eh_recover(struct ata_port *ap, ata_prereset_fn_t prereset, | |||
2644 | if (ata_eh_skip_recovery(link)) | 2679 | if (ata_eh_skip_recovery(link)) |
2645 | ehc->i.action = 0; | 2680 | ehc->i.action = 0; |
2646 | 2681 | ||
2647 | /* do we need to reset? */ | ||
2648 | if (ehc->i.action & ATA_EH_RESET) | ||
2649 | reset = 1; | ||
2650 | |||
2651 | ata_link_for_each_dev(dev, link) | 2682 | ata_link_for_each_dev(dev, link) |
2652 | ehc->classes[dev->devno] = ATA_DEV_UNKNOWN; | 2683 | ehc->classes[dev->devno] = ATA_DEV_UNKNOWN; |
2653 | } | 2684 | } |
2654 | 2685 | ||
2655 | /* reset */ | 2686 | /* reset */ |
2656 | if (reset) { | 2687 | ata_port_for_each_link(link, ap) { |
2657 | /* if PMP is attached, this function only deals with | 2688 | struct ata_eh_context *ehc = &link->eh_context; |
2658 | * downstream links, port should stay thawed. | ||
2659 | */ | ||
2660 | if (!sata_pmp_attached(ap)) | ||
2661 | ata_eh_freeze_port(ap); | ||
2662 | |||
2663 | ata_port_for_each_link(link, ap) { | ||
2664 | struct ata_eh_context *ehc = &link->eh_context; | ||
2665 | 2689 | ||
2666 | if (!(ehc->i.action & ATA_EH_RESET)) | 2690 | if (!(ehc->i.action & ATA_EH_RESET)) |
2667 | continue; | 2691 | continue; |
2668 | 2692 | ||
2669 | rc = ata_eh_reset(link, ata_link_nr_vacant(link), | 2693 | rc = ata_eh_reset(link, ata_link_nr_vacant(link), |
2670 | prereset, softreset, hardreset, | 2694 | prereset, softreset, hardreset, postreset); |
2671 | postreset); | 2695 | if (rc) { |
2672 | if (rc) { | 2696 | ata_link_printk(link, KERN_ERR, |
2673 | ata_link_printk(link, KERN_ERR, | 2697 | "reset failed, giving up\n"); |
2674 | "reset failed, giving up\n"); | 2698 | goto out; |
2675 | goto out; | ||
2676 | } | ||
2677 | } | 2699 | } |
2678 | |||
2679 | if (!sata_pmp_attached(ap)) | ||
2680 | ata_eh_thaw_port(ap); | ||
2681 | } | 2700 | } |
2682 | 2701 | ||
2683 | /* the rest */ | 2702 | /* the rest */ |
diff --git a/drivers/ata/libata-pmp.c b/drivers/ata/libata-pmp.c index ff1822a7da38..7daf4c0f6216 100644 --- a/drivers/ata/libata-pmp.c +++ b/drivers/ata/libata-pmp.c | |||
@@ -48,7 +48,7 @@ static unsigned int sata_pmp_read(struct ata_link *link, int reg, u32 *r_val) | |||
48 | tf.device = link->pmp; | 48 | tf.device = link->pmp; |
49 | 49 | ||
50 | err_mask = ata_exec_internal(pmp_dev, &tf, NULL, DMA_NONE, NULL, 0, | 50 | err_mask = ata_exec_internal(pmp_dev, &tf, NULL, DMA_NONE, NULL, 0, |
51 | SATA_PMP_SCR_TIMEOUT); | 51 | SATA_PMP_RW_TIMEOUT); |
52 | if (err_mask) | 52 | if (err_mask) |
53 | return err_mask; | 53 | return err_mask; |
54 | 54 | ||
@@ -88,7 +88,7 @@ static unsigned int sata_pmp_write(struct ata_link *link, int reg, u32 val) | |||
88 | tf.lbah = (val >> 24) & 0xff; | 88 | tf.lbah = (val >> 24) & 0xff; |
89 | 89 | ||
90 | return ata_exec_internal(pmp_dev, &tf, NULL, DMA_NONE, NULL, 0, | 90 | return ata_exec_internal(pmp_dev, &tf, NULL, DMA_NONE, NULL, 0, |
91 | SATA_PMP_SCR_TIMEOUT); | 91 | SATA_PMP_RW_TIMEOUT); |
92 | } | 92 | } |
93 | 93 | ||
94 | /** | 94 | /** |
@@ -257,19 +257,6 @@ static int sata_pmp_configure(struct ata_device *dev, int print_info) | |||
257 | goto fail; | 257 | goto fail; |
258 | } | 258 | } |
259 | 259 | ||
260 | /* turn off notification till fan-out ports are reset and configured */ | ||
261 | if (gscr[SATA_PMP_GSCR_FEAT_EN] & SATA_PMP_FEAT_NOTIFY) { | ||
262 | gscr[SATA_PMP_GSCR_FEAT_EN] &= ~SATA_PMP_FEAT_NOTIFY; | ||
263 | |||
264 | err_mask = sata_pmp_write(dev->link, SATA_PMP_GSCR_FEAT_EN, | ||
265 | gscr[SATA_PMP_GSCR_FEAT_EN]); | ||
266 | if (err_mask) { | ||
267 | rc = -EIO; | ||
268 | reason = "failed to write GSCR_FEAT_EN"; | ||
269 | goto fail; | ||
270 | } | ||
271 | } | ||
272 | |||
273 | if (print_info) { | 260 | if (print_info) { |
274 | ata_dev_printk(dev, KERN_INFO, "Port Multiplier %s, " | 261 | ata_dev_printk(dev, KERN_INFO, "Port Multiplier %s, " |
275 | "0x%04x:0x%04x r%d, %d ports, feat 0x%x/0x%x\n", | 262 | "0x%04x:0x%04x r%d, %d ports, feat 0x%x/0x%x\n", |
@@ -335,9 +322,12 @@ static void sata_pmp_quirks(struct ata_port *ap) | |||
335 | if (vendor == 0x1095 && devid == 0x3726) { | 322 | if (vendor == 0x1095 && devid == 0x3726) { |
336 | /* sil3726 quirks */ | 323 | /* sil3726 quirks */ |
337 | ata_port_for_each_link(link, ap) { | 324 | ata_port_for_each_link(link, ap) { |
338 | /* class code report is unreliable */ | 325 | /* Class code report is unreliable and SRST |
326 | * times out under certain configurations. | ||
327 | */ | ||
339 | if (link->pmp < 5) | 328 | if (link->pmp < 5) |
340 | link->flags |= ATA_LFLAG_ASSUME_ATA; | 329 | link->flags |= ATA_LFLAG_NO_SRST | |
330 | ATA_LFLAG_ASSUME_ATA; | ||
341 | 331 | ||
342 | /* port 5 is for SEMB device and it doesn't like SRST */ | 332 | /* port 5 is for SEMB device and it doesn't like SRST */ |
343 | if (link->pmp == 5) | 333 | if (link->pmp == 5) |
@@ -700,8 +690,6 @@ static int sata_pmp_eh_recover_pmp(struct ata_port *ap, | |||
700 | if (ehc->i.action & ATA_EH_RESET) { | 690 | if (ehc->i.action & ATA_EH_RESET) { |
701 | struct ata_link *tlink; | 691 | struct ata_link *tlink; |
702 | 692 | ||
703 | ata_eh_freeze_port(ap); | ||
704 | |||
705 | /* reset */ | 693 | /* reset */ |
706 | rc = ata_eh_reset(link, 0, prereset, softreset, hardreset, | 694 | rc = ata_eh_reset(link, 0, prereset, softreset, hardreset, |
707 | postreset); | 695 | postreset); |
@@ -711,8 +699,6 @@ static int sata_pmp_eh_recover_pmp(struct ata_port *ap, | |||
711 | goto fail; | 699 | goto fail; |
712 | } | 700 | } |
713 | 701 | ||
714 | ata_eh_thaw_port(ap); | ||
715 | |||
716 | /* PMP is reset, SErrors cannot be trusted, scan all */ | 702 | /* PMP is reset, SErrors cannot be trusted, scan all */ |
717 | ata_port_for_each_link(tlink, ap) { | 703 | ata_port_for_each_link(tlink, ap) { |
718 | struct ata_eh_context *ehc = &tlink->eh_context; | 704 | struct ata_eh_context *ehc = &tlink->eh_context; |
@@ -864,6 +850,7 @@ static int sata_pmp_eh_recover(struct ata_port *ap) | |||
864 | struct ata_link *pmp_link = &ap->link; | 850 | struct ata_link *pmp_link = &ap->link; |
865 | struct ata_device *pmp_dev = pmp_link->device; | 851 | struct ata_device *pmp_dev = pmp_link->device; |
866 | struct ata_eh_context *pmp_ehc = &pmp_link->eh_context; | 852 | struct ata_eh_context *pmp_ehc = &pmp_link->eh_context; |
853 | u32 *gscr = pmp_dev->gscr; | ||
867 | struct ata_link *link; | 854 | struct ata_link *link; |
868 | struct ata_device *dev; | 855 | struct ata_device *dev; |
869 | unsigned int err_mask; | 856 | unsigned int err_mask; |
@@ -901,6 +888,22 @@ static int sata_pmp_eh_recover(struct ata_port *ap) | |||
901 | if (rc) | 888 | if (rc) |
902 | goto pmp_fail; | 889 | goto pmp_fail; |
903 | 890 | ||
891 | /* PHY event notification can disturb reset and other recovery | ||
892 | * operations. Turn it off. | ||
893 | */ | ||
894 | if (gscr[SATA_PMP_GSCR_FEAT_EN] & SATA_PMP_FEAT_NOTIFY) { | ||
895 | gscr[SATA_PMP_GSCR_FEAT_EN] &= ~SATA_PMP_FEAT_NOTIFY; | ||
896 | |||
897 | err_mask = sata_pmp_write(pmp_link, SATA_PMP_GSCR_FEAT_EN, | ||
898 | gscr[SATA_PMP_GSCR_FEAT_EN]); | ||
899 | if (err_mask) { | ||
900 | ata_link_printk(pmp_link, KERN_WARNING, | ||
901 | "failed to disable NOTIFY (err_mask=0x%x)\n", | ||
902 | err_mask); | ||
903 | goto pmp_fail; | ||
904 | } | ||
905 | } | ||
906 | |||
904 | /* handle disabled links */ | 907 | /* handle disabled links */ |
905 | rc = sata_pmp_eh_handle_disabled_links(ap); | 908 | rc = sata_pmp_eh_handle_disabled_links(ap); |
906 | if (rc) | 909 | if (rc) |
@@ -923,10 +926,10 @@ static int sata_pmp_eh_recover(struct ata_port *ap) | |||
923 | 926 | ||
924 | /* enable notification */ | 927 | /* enable notification */ |
925 | if (pmp_dev->flags & ATA_DFLAG_AN) { | 928 | if (pmp_dev->flags & ATA_DFLAG_AN) { |
926 | pmp_dev->gscr[SATA_PMP_GSCR_FEAT_EN] |= SATA_PMP_FEAT_NOTIFY; | 929 | gscr[SATA_PMP_GSCR_FEAT_EN] |= SATA_PMP_FEAT_NOTIFY; |
927 | 930 | ||
928 | err_mask = sata_pmp_write(pmp_dev->link, SATA_PMP_GSCR_FEAT_EN, | 931 | err_mask = sata_pmp_write(pmp_link, SATA_PMP_GSCR_FEAT_EN, |
929 | pmp_dev->gscr[SATA_PMP_GSCR_FEAT_EN]); | 932 | gscr[SATA_PMP_GSCR_FEAT_EN]); |
930 | if (err_mask) { | 933 | if (err_mask) { |
931 | ata_dev_printk(pmp_dev, KERN_ERR, "failed to write " | 934 | ata_dev_printk(pmp_dev, KERN_ERR, "failed to write " |
932 | "PMP_FEAT_EN (Emask=0x%x)\n", err_mask); | 935 | "PMP_FEAT_EN (Emask=0x%x)\n", err_mask); |
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 3ce43920e459..2e6e1622dc6d 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c | |||
@@ -1082,12 +1082,6 @@ static unsigned int ata_scsi_start_stop_xlat(struct ata_queued_cmd *qc) | |||
1082 | if (((cdb[4] >> 4) & 0xf) != 0) | 1082 | if (((cdb[4] >> 4) & 0xf) != 0) |
1083 | goto invalid_fld; /* power conditions not supported */ | 1083 | goto invalid_fld; /* power conditions not supported */ |
1084 | 1084 | ||
1085 | if (qc->dev->horkage & ATA_HORKAGE_SKIP_PM) { | ||
1086 | /* the device lacks PM support, finish without doing anything */ | ||
1087 | scmd->result = SAM_STAT_GOOD; | ||
1088 | return 1; | ||
1089 | } | ||
1090 | |||
1091 | if (cdb[4] & 0x1) { | 1085 | if (cdb[4] & 0x1) { |
1092 | tf->nsect = 1; /* 1 sector, lba=0 */ | 1086 | tf->nsect = 1; /* 1 sector, lba=0 */ |
1093 | 1087 | ||
@@ -1643,6 +1637,7 @@ defer: | |||
1643 | 1637 | ||
1644 | /** | 1638 | /** |
1645 | * ata_scsi_rbuf_get - Map response buffer. | 1639 | * ata_scsi_rbuf_get - Map response buffer. |
1640 | * @cmd: SCSI command containing buffer to be mapped. | ||
1646 | * @flags: unsigned long variable to store irq enable status | 1641 | * @flags: unsigned long variable to store irq enable status |
1647 | * @copy_in: copy in from user buffer | 1642 | * @copy_in: copy in from user buffer |
1648 | * | 1643 | * |
@@ -1960,7 +1955,7 @@ static unsigned int ata_msense_ctl_mode(u8 *buf) | |||
1960 | 1955 | ||
1961 | /** | 1956 | /** |
1962 | * ata_msense_rw_recovery - Simulate MODE SENSE r/w error recovery page | 1957 | * ata_msense_rw_recovery - Simulate MODE SENSE r/w error recovery page |
1963 | * @bufp: output buffer | 1958 | * @buf: output buffer |
1964 | * | 1959 | * |
1965 | * Generate a generic MODE SENSE r/w error recovery page. | 1960 | * Generate a generic MODE SENSE r/w error recovery page. |
1966 | * | 1961 | * |
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index fcabe46f262b..0f3e659db99a 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
@@ -177,11 +177,11 @@ static void ali_program_modes(struct ata_port *ap, struct ata_device *adev, stru | |||
177 | u8 udma; | 177 | u8 udma; |
178 | 178 | ||
179 | if (t != NULL) { | 179 | if (t != NULL) { |
180 | t->setup = FIT(t->setup, 1, 8) & 7; | 180 | t->setup = clamp_val(t->setup, 1, 8) & 7; |
181 | t->act8b = FIT(t->act8b, 1, 8) & 7; | 181 | t->act8b = clamp_val(t->act8b, 1, 8) & 7; |
182 | t->rec8b = FIT(t->rec8b, 1, 16) & 15; | 182 | t->rec8b = clamp_val(t->rec8b, 1, 16) & 15; |
183 | t->active = FIT(t->active, 1, 8) & 7; | 183 | t->active = clamp_val(t->active, 1, 8) & 7; |
184 | t->recover = FIT(t->recover, 1, 16) & 15; | 184 | t->recover = clamp_val(t->recover, 1, 16) & 15; |
185 | 185 | ||
186 | pci_write_config_byte(pdev, cas, t->setup); | 186 | pci_write_config_byte(pdev, cas, t->setup); |
187 | pci_write_config_byte(pdev, cbt, (t->act8b << 4) | t->rec8b); | 187 | pci_write_config_byte(pdev, cbt, (t->act8b << 4) | t->rec8b); |
diff --git a/drivers/ata/pata_amd.c b/drivers/ata/pata_amd.c index 26665c396485..57dd00f463d3 100644 --- a/drivers/ata/pata_amd.c +++ b/drivers/ata/pata_amd.c | |||
@@ -84,32 +84,32 @@ static void timing_setup(struct ata_port *ap, struct ata_device *adev, int offse | |||
84 | 84 | ||
85 | /* Configure the address set up timing */ | 85 | /* Configure the address set up timing */ |
86 | pci_read_config_byte(pdev, offset + 0x0C, &t); | 86 | pci_read_config_byte(pdev, offset + 0x0C, &t); |
87 | t = (t & ~(3 << ((3 - dn) << 1))) | ((FIT(at.setup, 1, 4) - 1) << ((3 - dn) << 1)); | 87 | t = (t & ~(3 << ((3 - dn) << 1))) | ((clamp_val(at.setup, 1, 4) - 1) << ((3 - dn) << 1)); |
88 | pci_write_config_byte(pdev, offset + 0x0C , t); | 88 | pci_write_config_byte(pdev, offset + 0x0C , t); |
89 | 89 | ||
90 | /* Configure the 8bit I/O timing */ | 90 | /* Configure the 8bit I/O timing */ |
91 | pci_write_config_byte(pdev, offset + 0x0E + (1 - (dn >> 1)), | 91 | pci_write_config_byte(pdev, offset + 0x0E + (1 - (dn >> 1)), |
92 | ((FIT(at.act8b, 1, 16) - 1) << 4) | (FIT(at.rec8b, 1, 16) - 1)); | 92 | ((clamp_val(at.act8b, 1, 16) - 1) << 4) | (clamp_val(at.rec8b, 1, 16) - 1)); |
93 | 93 | ||
94 | /* Drive timing */ | 94 | /* Drive timing */ |
95 | pci_write_config_byte(pdev, offset + 0x08 + (3 - dn), | 95 | pci_write_config_byte(pdev, offset + 0x08 + (3 - dn), |
96 | ((FIT(at.active, 1, 16) - 1) << 4) | (FIT(at.recover, 1, 16) - 1)); | 96 | ((clamp_val(at.active, 1, 16) - 1) << 4) | (clamp_val(at.recover, 1, 16) - 1)); |
97 | 97 | ||
98 | switch (clock) { | 98 | switch (clock) { |
99 | case 1: | 99 | case 1: |
100 | t = at.udma ? (0xc0 | (FIT(at.udma, 2, 5) - 2)) : 0x03; | 100 | t = at.udma ? (0xc0 | (clamp_val(at.udma, 2, 5) - 2)) : 0x03; |
101 | break; | 101 | break; |
102 | 102 | ||
103 | case 2: | 103 | case 2: |
104 | t = at.udma ? (0xc0 | amd_cyc2udma[FIT(at.udma, 2, 10)]) : 0x03; | 104 | t = at.udma ? (0xc0 | amd_cyc2udma[clamp_val(at.udma, 2, 10)]) : 0x03; |
105 | break; | 105 | break; |
106 | 106 | ||
107 | case 3: | 107 | case 3: |
108 | t = at.udma ? (0xc0 | amd_cyc2udma[FIT(at.udma, 1, 10)]) : 0x03; | 108 | t = at.udma ? (0xc0 | amd_cyc2udma[clamp_val(at.udma, 1, 10)]) : 0x03; |
109 | break; | 109 | break; |
110 | 110 | ||
111 | case 4: | 111 | case 4: |
112 | t = at.udma ? (0xc0 | amd_cyc2udma[FIT(at.udma, 1, 15)]) : 0x03; | 112 | t = at.udma ? (0xc0 | amd_cyc2udma[clamp_val(at.udma, 1, 15)]) : 0x03; |
113 | break; | 113 | break; |
114 | 114 | ||
115 | default: | 115 | default: |
diff --git a/drivers/ata/pata_at32.c b/drivers/ata/pata_at32.c index 5e104385d6a3..82fb6e273169 100644 --- a/drivers/ata/pata_at32.c +++ b/drivers/ata/pata_at32.c | |||
@@ -291,8 +291,6 @@ static int __init pata_at32_probe(struct platform_device *pdev) | |||
291 | if (!info) | 291 | if (!info) |
292 | return -ENOMEM; | 292 | return -ENOMEM; |
293 | 293 | ||
294 | memset(info, 0, sizeof(struct at32_ide_info)); | ||
295 | |||
296 | info->irq = irq; | 294 | info->irq = irq; |
297 | info->cs = board->cs; | 295 | info->cs = board->cs; |
298 | 296 | ||
diff --git a/drivers/ata/pata_bf54x.c b/drivers/ata/pata_bf54x.c index 9ab89732cf94..55516103626a 100644 --- a/drivers/ata/pata_bf54x.c +++ b/drivers/ata/pata_bf54x.c | |||
@@ -911,7 +911,10 @@ static void bfin_bmdma_start(struct ata_queued_cmd *qc) | |||
911 | /* Reset all transfer count */ | 911 | /* Reset all transfer count */ |
912 | ATAPI_SET_CONTROL(base, ATAPI_GET_CONTROL(base) | TFRCNT_RST); | 912 | ATAPI_SET_CONTROL(base, ATAPI_GET_CONTROL(base) | TFRCNT_RST); |
913 | 913 | ||
914 | /* Set transfer length to buffer len */ | 914 | /* Set ATAPI state machine contorl in terminate sequence */ |
915 | ATAPI_SET_CONTROL(base, ATAPI_GET_CONTROL(base) | END_ON_TERM); | ||
916 | |||
917 | /* Set transfer length to buffer len */ | ||
915 | for_each_sg(qc->sg, sg, qc->n_elem, si) { | 918 | for_each_sg(qc->sg, sg, qc->n_elem, si) { |
916 | ATAPI_SET_XFER_LEN(base, (sg_dma_len(sg) >> 1)); | 919 | ATAPI_SET_XFER_LEN(base, (sg_dma_len(sg) >> 1)); |
917 | } | 920 | } |
diff --git a/drivers/ata/pata_cypress.c b/drivers/ata/pata_cypress.c index a9c3218e22fd..2ff62608ae37 100644 --- a/drivers/ata/pata_cypress.c +++ b/drivers/ata/pata_cypress.c | |||
@@ -62,14 +62,14 @@ static void cy82c693_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
62 | return; | 62 | return; |
63 | } | 63 | } |
64 | 64 | ||
65 | time_16 = FIT(t.recover, 0, 15) | (FIT(t.active, 0, 15) << 4); | 65 | time_16 = clamp_val(t.recover, 0, 15) | (clamp_val(t.active, 0, 15) << 4); |
66 | time_8 = FIT(t.act8b, 0, 15) | (FIT(t.rec8b, 0, 15) << 4); | 66 | time_8 = clamp_val(t.act8b, 0, 15) | (clamp_val(t.rec8b, 0, 15) << 4); |
67 | 67 | ||
68 | if (adev->devno == 0) { | 68 | if (adev->devno == 0) { |
69 | pci_read_config_dword(pdev, CY82_IDE_ADDRSETUP, &addr); | 69 | pci_read_config_dword(pdev, CY82_IDE_ADDRSETUP, &addr); |
70 | 70 | ||
71 | addr &= ~0x0F; /* Mask bits */ | 71 | addr &= ~0x0F; /* Mask bits */ |
72 | addr |= FIT(t.setup, 0, 15); | 72 | addr |= clamp_val(t.setup, 0, 15); |
73 | 73 | ||
74 | pci_write_config_dword(pdev, CY82_IDE_ADDRSETUP, addr); | 74 | pci_write_config_dword(pdev, CY82_IDE_ADDRSETUP, addr); |
75 | pci_write_config_byte(pdev, CY82_IDE_MASTER_IOR, time_16); | 75 | pci_write_config_byte(pdev, CY82_IDE_MASTER_IOR, time_16); |
@@ -79,7 +79,7 @@ static void cy82c693_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
79 | pci_read_config_dword(pdev, CY82_IDE_ADDRSETUP, &addr); | 79 | pci_read_config_dword(pdev, CY82_IDE_ADDRSETUP, &addr); |
80 | 80 | ||
81 | addr &= ~0xF0; /* Mask bits */ | 81 | addr &= ~0xF0; /* Mask bits */ |
82 | addr |= (FIT(t.setup, 0, 15) << 4); | 82 | addr |= (clamp_val(t.setup, 0, 15) << 4); |
83 | 83 | ||
84 | pci_write_config_dword(pdev, CY82_IDE_ADDRSETUP, addr); | 84 | pci_write_config_dword(pdev, CY82_IDE_ADDRSETUP, addr); |
85 | pci_write_config_byte(pdev, CY82_IDE_SLAVE_IOR, time_16); | 85 | pci_write_config_byte(pdev, CY82_IDE_SLAVE_IOR, time_16); |
diff --git a/drivers/ata/pata_legacy.c b/drivers/ata/pata_legacy.c index 7af4b29cc422..fe7cc8ed4ea4 100644 --- a/drivers/ata/pata_legacy.c +++ b/drivers/ata/pata_legacy.c | |||
@@ -343,8 +343,8 @@ static void ht6560a_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
343 | /* Get the timing data in cycles. For now play safe at 50Mhz */ | 343 | /* Get the timing data in cycles. For now play safe at 50Mhz */ |
344 | ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000); | 344 | ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000); |
345 | 345 | ||
346 | active = FIT(t.active, 2, 15); | 346 | active = clamp_val(t.active, 2, 15); |
347 | recover = FIT(t.recover, 4, 15); | 347 | recover = clamp_val(t.recover, 4, 15); |
348 | 348 | ||
349 | inb(0x3E6); | 349 | inb(0x3E6); |
350 | inb(0x3E6); | 350 | inb(0x3E6); |
@@ -377,8 +377,8 @@ static void ht6560b_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
377 | /* Get the timing data in cycles. For now play safe at 50Mhz */ | 377 | /* Get the timing data in cycles. For now play safe at 50Mhz */ |
378 | ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000); | 378 | ata_timing_compute(adev, adev->pio_mode, &t, 20000, 1000); |
379 | 379 | ||
380 | active = FIT(t.active, 2, 15); | 380 | active = clamp_val(t.active, 2, 15); |
381 | recover = FIT(t.recover, 2, 16); | 381 | recover = clamp_val(t.recover, 2, 16); |
382 | recover &= 0x15; | 382 | recover &= 0x15; |
383 | 383 | ||
384 | inb(0x3E6); | 384 | inb(0x3E6); |
@@ -462,9 +462,9 @@ static void opti82c611a_set_piomode(struct ata_port *ap, | |||
462 | ata_timing_merge(&t, &tp, &t, ATA_TIMING_SETUP); | 462 | ata_timing_merge(&t, &tp, &t, ATA_TIMING_SETUP); |
463 | } | 463 | } |
464 | 464 | ||
465 | active = FIT(t.active, 2, 17) - 2; | 465 | active = clamp_val(t.active, 2, 17) - 2; |
466 | recover = FIT(t.recover, 1, 16) - 1; | 466 | recover = clamp_val(t.recover, 1, 16) - 1; |
467 | setup = FIT(t.setup, 1, 4) - 1; | 467 | setup = clamp_val(t.setup, 1, 4) - 1; |
468 | 468 | ||
469 | /* Select the right timing bank for write timing */ | 469 | /* Select the right timing bank for write timing */ |
470 | rc = ioread8(ap->ioaddr.lbal_addr); | 470 | rc = ioread8(ap->ioaddr.lbal_addr); |
@@ -541,9 +541,9 @@ static void opti82c46x_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
541 | ata_timing_merge(&t, &tp, &t, ATA_TIMING_SETUP); | 541 | ata_timing_merge(&t, &tp, &t, ATA_TIMING_SETUP); |
542 | } | 542 | } |
543 | 543 | ||
544 | active = FIT(t.active, 2, 17) - 2; | 544 | active = clamp_val(t.active, 2, 17) - 2; |
545 | recover = FIT(t.recover, 1, 16) - 1; | 545 | recover = clamp_val(t.recover, 1, 16) - 1; |
546 | setup = FIT(t.setup, 1, 4) - 1; | 546 | setup = clamp_val(t.setup, 1, 4) - 1; |
547 | 547 | ||
548 | /* Select the right timing bank for write timing */ | 548 | /* Select the right timing bank for write timing */ |
549 | rc = ioread8(ap->ioaddr.lbal_addr); | 549 | rc = ioread8(ap->ioaddr.lbal_addr); |
@@ -624,11 +624,11 @@ static void qdi6500_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
624 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); | 624 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); |
625 | 625 | ||
626 | if (ld_qdi->fast) { | 626 | if (ld_qdi->fast) { |
627 | active = 8 - FIT(t.active, 1, 8); | 627 | active = 8 - clamp_val(t.active, 1, 8); |
628 | recovery = 18 - FIT(t.recover, 3, 18); | 628 | recovery = 18 - clamp_val(t.recover, 3, 18); |
629 | } else { | 629 | } else { |
630 | active = 9 - FIT(t.active, 2, 9); | 630 | active = 9 - clamp_val(t.active, 2, 9); |
631 | recovery = 15 - FIT(t.recover, 0, 15); | 631 | recovery = 15 - clamp_val(t.recover, 0, 15); |
632 | } | 632 | } |
633 | timing = (recovery << 4) | active | 0x08; | 633 | timing = (recovery << 4) | active | 0x08; |
634 | 634 | ||
@@ -658,11 +658,11 @@ static void qdi6580dp_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
658 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); | 658 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); |
659 | 659 | ||
660 | if (ld_qdi->fast) { | 660 | if (ld_qdi->fast) { |
661 | active = 8 - FIT(t.active, 1, 8); | 661 | active = 8 - clamp_val(t.active, 1, 8); |
662 | recovery = 18 - FIT(t.recover, 3, 18); | 662 | recovery = 18 - clamp_val(t.recover, 3, 18); |
663 | } else { | 663 | } else { |
664 | active = 9 - FIT(t.active, 2, 9); | 664 | active = 9 - clamp_val(t.active, 2, 9); |
665 | recovery = 15 - FIT(t.recover, 0, 15); | 665 | recovery = 15 - clamp_val(t.recover, 0, 15); |
666 | } | 666 | } |
667 | timing = (recovery << 4) | active | 0x08; | 667 | timing = (recovery << 4) | active | 0x08; |
668 | 668 | ||
@@ -695,11 +695,11 @@ static void qdi6580_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
695 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); | 695 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); |
696 | 696 | ||
697 | if (ld_qdi->fast) { | 697 | if (ld_qdi->fast) { |
698 | active = 8 - FIT(t.active, 1, 8); | 698 | active = 8 - clamp_val(t.active, 1, 8); |
699 | recovery = 18 - FIT(t.recover, 3, 18); | 699 | recovery = 18 - clamp_val(t.recover, 3, 18); |
700 | } else { | 700 | } else { |
701 | active = 9 - FIT(t.active, 2, 9); | 701 | active = 9 - clamp_val(t.active, 2, 9); |
702 | recovery = 15 - FIT(t.recover, 0, 15); | 702 | recovery = 15 - clamp_val(t.recover, 0, 15); |
703 | } | 703 | } |
704 | timing = (recovery << 4) | active | 0x08; | 704 | timing = (recovery << 4) | active | 0x08; |
705 | ld_qdi->clock[adev->devno] = timing; | 705 | ld_qdi->clock[adev->devno] = timing; |
@@ -830,8 +830,8 @@ static void winbond_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
830 | else | 830 | else |
831 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); | 831 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); |
832 | 832 | ||
833 | active = (FIT(t.active, 3, 17) - 1) & 0x0F; | 833 | active = (clamp_val(t.active, 3, 17) - 1) & 0x0F; |
834 | recovery = (FIT(t.recover, 1, 15) + 1) & 0x0F; | 834 | recovery = (clamp_val(t.recover, 1, 15) + 1) & 0x0F; |
835 | timing = (active << 4) | recovery; | 835 | timing = (active << 4) | recovery; |
836 | winbond_writecfg(ld_winbond->timing, timing, reg); | 836 | winbond_writecfg(ld_winbond->timing, timing, reg); |
837 | 837 | ||
@@ -842,7 +842,7 @@ static void winbond_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
842 | reg |= 0x08; /* FIFO off */ | 842 | reg |= 0x08; /* FIFO off */ |
843 | if (!ata_pio_need_iordy(adev)) | 843 | if (!ata_pio_need_iordy(adev)) |
844 | reg |= 0x02; /* IORDY off */ | 844 | reg |= 0x02; /* IORDY off */ |
845 | reg |= (FIT(t.setup, 0, 3) << 6); | 845 | reg |= (clamp_val(t.setup, 0, 3) << 6); |
846 | winbond_writecfg(ld_winbond->timing, timing + 1, reg); | 846 | winbond_writecfg(ld_winbond->timing, timing + 1, reg); |
847 | } | 847 | } |
848 | 848 | ||
diff --git a/drivers/ata/pata_ns87410.c b/drivers/ata/pata_ns87410.c index 76d2455bc453..be756b7ef07e 100644 --- a/drivers/ata/pata_ns87410.c +++ b/drivers/ata/pata_ns87410.c | |||
@@ -91,9 +91,9 @@ static void ns87410_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
91 | return; | 91 | return; |
92 | } | 92 | } |
93 | 93 | ||
94 | at.active = FIT(at.active, 2, 16) - 2; | 94 | at.active = clamp_val(at.active, 2, 16) - 2; |
95 | at.setup = FIT(at.setup, 1, 4) - 1; | 95 | at.setup = clamp_val(at.setup, 1, 4) - 1; |
96 | at.recover = FIT(at.recover, 1, 12) - 1; | 96 | at.recover = clamp_val(at.recover, 1, 12) - 1; |
97 | 97 | ||
98 | idetcr = (at.setup << 6) | (recoverbits[at.recover] << 3) | activebits[at.active]; | 98 | idetcr = (at.setup << 6) | (recoverbits[at.recover] << 3) | activebits[at.active]; |
99 | 99 | ||
diff --git a/drivers/ata/pata_ns87415.c b/drivers/ata/pata_ns87415.c index ae92b0049bd5..e0aa7eaaee0a 100644 --- a/drivers/ata/pata_ns87415.c +++ b/drivers/ata/pata_ns87415.c | |||
@@ -66,8 +66,8 @@ static void ns87415_set_mode(struct ata_port *ap, struct ata_device *adev, u8 mo | |||
66 | 66 | ||
67 | ata_timing_compute(adev, adev->pio_mode, &t, T, 0); | 67 | ata_timing_compute(adev, adev->pio_mode, &t, T, 0); |
68 | 68 | ||
69 | clocking = 17 - FIT(t.active, 2, 17); | 69 | clocking = 17 - clamp_val(t.active, 2, 17); |
70 | clocking |= (16 - FIT(t.recover, 1, 16)) << 4; | 70 | clocking |= (16 - clamp_val(t.recover, 1, 16)) << 4; |
71 | /* Use the same timing for read and write bytes */ | 71 | /* Use the same timing for read and write bytes */ |
72 | clocking |= (clocking << 8); | 72 | clocking |= (clocking << 8); |
73 | pci_write_config_word(dev, timing, clocking); | 73 | pci_write_config_word(dev, timing, clocking); |
diff --git a/drivers/ata/pata_qdi.c b/drivers/ata/pata_qdi.c index bf45cf017753..97e5b090d7c2 100644 --- a/drivers/ata/pata_qdi.c +++ b/drivers/ata/pata_qdi.c | |||
@@ -60,11 +60,11 @@ static void qdi6500_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
60 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); | 60 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); |
61 | 61 | ||
62 | if (qdi->fast) { | 62 | if (qdi->fast) { |
63 | active = 8 - FIT(t.active, 1, 8); | 63 | active = 8 - clamp_val(t.active, 1, 8); |
64 | recovery = 18 - FIT(t.recover, 3, 18); | 64 | recovery = 18 - clamp_val(t.recover, 3, 18); |
65 | } else { | 65 | } else { |
66 | active = 9 - FIT(t.active, 2, 9); | 66 | active = 9 - clamp_val(t.active, 2, 9); |
67 | recovery = 15 - FIT(t.recover, 0, 15); | 67 | recovery = 15 - clamp_val(t.recover, 0, 15); |
68 | } | 68 | } |
69 | timing = (recovery << 4) | active | 0x08; | 69 | timing = (recovery << 4) | active | 0x08; |
70 | 70 | ||
@@ -84,11 +84,11 @@ static void qdi6580_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
84 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); | 84 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); |
85 | 85 | ||
86 | if (qdi->fast) { | 86 | if (qdi->fast) { |
87 | active = 8 - FIT(t.active, 1, 8); | 87 | active = 8 - clamp_val(t.active, 1, 8); |
88 | recovery = 18 - FIT(t.recover, 3, 18); | 88 | recovery = 18 - clamp_val(t.recover, 3, 18); |
89 | } else { | 89 | } else { |
90 | active = 9 - FIT(t.active, 2, 9); | 90 | active = 9 - clamp_val(t.active, 2, 9); |
91 | recovery = 15 - FIT(t.recover, 0, 15); | 91 | recovery = 15 - clamp_val(t.recover, 0, 15); |
92 | } | 92 | } |
93 | timing = (recovery << 4) | active | 0x08; | 93 | timing = (recovery << 4) | active | 0x08; |
94 | 94 | ||
diff --git a/drivers/ata/pata_sl82c105.c b/drivers/ata/pata_sl82c105.c index 70d94fb28a5f..69877bd81815 100644 --- a/drivers/ata/pata_sl82c105.c +++ b/drivers/ata/pata_sl82c105.c | |||
@@ -216,7 +216,7 @@ static int sl82c105_qc_defer(struct ata_queued_cmd *qc) | |||
216 | struct ata_port *alt = host->ports[1 ^ qc->ap->port_no]; | 216 | struct ata_port *alt = host->ports[1 ^ qc->ap->port_no]; |
217 | int rc; | 217 | int rc; |
218 | 218 | ||
219 | /* First apply the usual rules */ | 219 | /* First apply the usual rules */ |
220 | rc = ata_std_qc_defer(qc); | 220 | rc = ata_std_qc_defer(qc); |
221 | if (rc != 0) | 221 | if (rc != 0) |
222 | return rc; | 222 | return rc; |
diff --git a/drivers/ata/pata_via.c b/drivers/ata/pata_via.c index 2fea6cbe7755..708ed144ede9 100644 --- a/drivers/ata/pata_via.c +++ b/drivers/ata/pata_via.c | |||
@@ -259,15 +259,15 @@ static void via_do_set_mode(struct ata_port *ap, struct ata_device *adev, int mo | |||
259 | 259 | ||
260 | pci_read_config_byte(pdev, 0x4C, &setup); | 260 | pci_read_config_byte(pdev, 0x4C, &setup); |
261 | setup &= ~(3 << shift); | 261 | setup &= ~(3 << shift); |
262 | setup |= FIT(t.setup, 1, 4) << shift; /* 1,4 or 1,4 - 1 FIXME */ | 262 | setup |= clamp_val(t.setup, 1, 4) << shift; /* 1,4 or 1,4 - 1 FIXME */ |
263 | pci_write_config_byte(pdev, 0x4C, setup); | 263 | pci_write_config_byte(pdev, 0x4C, setup); |
264 | } | 264 | } |
265 | 265 | ||
266 | /* Load the PIO mode bits */ | 266 | /* Load the PIO mode bits */ |
267 | pci_write_config_byte(pdev, 0x4F - ap->port_no, | 267 | pci_write_config_byte(pdev, 0x4F - ap->port_no, |
268 | ((FIT(t.act8b, 1, 16) - 1) << 4) | (FIT(t.rec8b, 1, 16) - 1)); | 268 | ((clamp_val(t.act8b, 1, 16) - 1) << 4) | (clamp_val(t.rec8b, 1, 16) - 1)); |
269 | pci_write_config_byte(pdev, 0x48 + offset, | 269 | pci_write_config_byte(pdev, 0x48 + offset, |
270 | ((FIT(t.active, 1, 16) - 1) << 4) | (FIT(t.recover, 1, 16) - 1)); | 270 | ((clamp_val(t.active, 1, 16) - 1) << 4) | (clamp_val(t.recover, 1, 16) - 1)); |
271 | 271 | ||
272 | /* Load the UDMA bits according to type */ | 272 | /* Load the UDMA bits according to type */ |
273 | switch(udma_type) { | 273 | switch(udma_type) { |
@@ -275,16 +275,16 @@ static void via_do_set_mode(struct ata_port *ap, struct ata_device *adev, int mo | |||
275 | /* BUG() ? */ | 275 | /* BUG() ? */ |
276 | /* fall through */ | 276 | /* fall through */ |
277 | case 33: | 277 | case 33: |
278 | ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 5) - 2)) : 0x03; | 278 | ut = t.udma ? (0xe0 | (clamp_val(t.udma, 2, 5) - 2)) : 0x03; |
279 | break; | 279 | break; |
280 | case 66: | 280 | case 66: |
281 | ut = t.udma ? (0xe8 | (FIT(t.udma, 2, 9) - 2)) : 0x0f; | 281 | ut = t.udma ? (0xe8 | (clamp_val(t.udma, 2, 9) - 2)) : 0x0f; |
282 | break; | 282 | break; |
283 | case 100: | 283 | case 100: |
284 | ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 9) - 2)) : 0x07; | 284 | ut = t.udma ? (0xe0 | (clamp_val(t.udma, 2, 9) - 2)) : 0x07; |
285 | break; | 285 | break; |
286 | case 133: | 286 | case 133: |
287 | ut = t.udma ? (0xe0 | (FIT(t.udma, 2, 9) - 2)) : 0x07; | 287 | ut = t.udma ? (0xe0 | (clamp_val(t.udma, 2, 9) - 2)) : 0x07; |
288 | break; | 288 | break; |
289 | } | 289 | } |
290 | 290 | ||
diff --git a/drivers/ata/pata_winbond.c b/drivers/ata/pata_winbond.c index 6e52a3573fbf..474528f8fe3d 100644 --- a/drivers/ata/pata_winbond.c +++ b/drivers/ata/pata_winbond.c | |||
@@ -75,8 +75,8 @@ static void winbond_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
75 | else | 75 | else |
76 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); | 76 | ata_timing_compute(adev, adev->pio_mode, &t, 30303, 1000); |
77 | 77 | ||
78 | active = (FIT(t.active, 3, 17) - 1) & 0x0F; | 78 | active = (clamp_val(t.active, 3, 17) - 1) & 0x0F; |
79 | recovery = (FIT(t.recover, 1, 15) + 1) & 0x0F; | 79 | recovery = (clamp_val(t.recover, 1, 15) + 1) & 0x0F; |
80 | timing = (active << 4) | recovery; | 80 | timing = (active << 4) | recovery; |
81 | winbond_writecfg(winbond->config, timing, reg); | 81 | winbond_writecfg(winbond->config, timing, reg); |
82 | 82 | ||
@@ -87,7 +87,7 @@ static void winbond_set_piomode(struct ata_port *ap, struct ata_device *adev) | |||
87 | reg |= 0x08; /* FIFO off */ | 87 | reg |= 0x08; /* FIFO off */ |
88 | if (!ata_pio_need_iordy(adev)) | 88 | if (!ata_pio_need_iordy(adev)) |
89 | reg |= 0x02; /* IORDY off */ | 89 | reg |= 0x02; /* IORDY off */ |
90 | reg |= (FIT(t.setup, 0, 3) << 6); | 90 | reg |= (clamp_val(t.setup, 0, 3) << 6); |
91 | winbond_writecfg(winbond->config, timing + 1, reg); | 91 | winbond_writecfg(winbond->config, timing + 1, reg); |
92 | } | 92 | } |
93 | 93 | ||
diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index 853559e32315..3924e7209a44 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c | |||
@@ -34,7 +34,7 @@ enum { | |||
34 | 34 | ||
35 | SATA_FSL_HOST_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | | 35 | SATA_FSL_HOST_FLAGS = (ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | |
36 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | | 36 | ATA_FLAG_MMIO | ATA_FLAG_PIO_DMA | |
37 | ATA_FLAG_NCQ), | 37 | ATA_FLAG_PMP | ATA_FLAG_NCQ), |
38 | 38 | ||
39 | SATA_FSL_MAX_CMDS = SATA_FSL_QUEUE_DEPTH, | 39 | SATA_FSL_MAX_CMDS = SATA_FSL_QUEUE_DEPTH, |
40 | SATA_FSL_CMD_HDR_SIZE = 16, /* 4 DWORDS */ | 40 | SATA_FSL_CMD_HDR_SIZE = 16, /* 4 DWORDS */ |
@@ -395,7 +395,7 @@ static void sata_fsl_qc_prep(struct ata_queued_cmd *qc) | |||
395 | cd = (struct command_desc *)pp->cmdentry + tag; | 395 | cd = (struct command_desc *)pp->cmdentry + tag; |
396 | cd_paddr = pp->cmdentry_paddr + tag * SATA_FSL_CMD_DESC_SIZE; | 396 | cd_paddr = pp->cmdentry_paddr + tag * SATA_FSL_CMD_DESC_SIZE; |
397 | 397 | ||
398 | ata_tf_to_fis(&qc->tf, 0, 1, (u8 *) &cd->cfis); | 398 | ata_tf_to_fis(&qc->tf, qc->dev->link->pmp, 1, (u8 *) &cd->cfis); |
399 | 399 | ||
400 | VPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x\n", | 400 | VPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x\n", |
401 | cd->cfis[0], cd->cfis[1], cd->cfis[2]); | 401 | cd->cfis[0], cd->cfis[1], cd->cfis[2]); |
@@ -438,6 +438,8 @@ static unsigned int sata_fsl_qc_issue(struct ata_queued_cmd *qc) | |||
438 | ioread32(CA + hcr_base), | 438 | ioread32(CA + hcr_base), |
439 | ioread32(CE + hcr_base), ioread32(CC + hcr_base)); | 439 | ioread32(CE + hcr_base), ioread32(CC + hcr_base)); |
440 | 440 | ||
441 | iowrite32(qc->dev->link->pmp, CQPMP + hcr_base); | ||
442 | |||
441 | /* Simply queue command to the controller/device */ | 443 | /* Simply queue command to the controller/device */ |
442 | iowrite32(1 << tag, CQ + hcr_base); | 444 | iowrite32(1 << tag, CQ + hcr_base); |
443 | 445 | ||
@@ -558,11 +560,36 @@ static void sata_fsl_thaw(struct ata_port *ap) | |||
558 | ioread32(hcr_base + HCONTROL), ioread32(hcr_base + HSTATUS)); | 560 | ioread32(hcr_base + HCONTROL), ioread32(hcr_base + HSTATUS)); |
559 | } | 561 | } |
560 | 562 | ||
563 | static void sata_fsl_pmp_attach(struct ata_port *ap) | ||
564 | { | ||
565 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; | ||
566 | void __iomem *hcr_base = host_priv->hcr_base; | ||
567 | u32 temp; | ||
568 | |||
569 | temp = ioread32(hcr_base + HCONTROL); | ||
570 | iowrite32((temp | HCONTROL_PMP_ATTACHED), hcr_base + HCONTROL); | ||
571 | } | ||
572 | |||
573 | static void sata_fsl_pmp_detach(struct ata_port *ap) | ||
574 | { | ||
575 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; | ||
576 | void __iomem *hcr_base = host_priv->hcr_base; | ||
577 | u32 temp; | ||
578 | |||
579 | temp = ioread32(hcr_base + HCONTROL); | ||
580 | temp &= ~HCONTROL_PMP_ATTACHED; | ||
581 | iowrite32(temp, hcr_base + HCONTROL); | ||
582 | |||
583 | /* enable interrupts on the controller/port */ | ||
584 | temp = ioread32(hcr_base + HCONTROL); | ||
585 | iowrite32((temp | DEFAULT_PORT_IRQ_ENABLE_MASK), hcr_base + HCONTROL); | ||
586 | |||
587 | } | ||
588 | |||
561 | static int sata_fsl_port_start(struct ata_port *ap) | 589 | static int sata_fsl_port_start(struct ata_port *ap) |
562 | { | 590 | { |
563 | struct device *dev = ap->host->dev; | 591 | struct device *dev = ap->host->dev; |
564 | struct sata_fsl_port_priv *pp; | 592 | struct sata_fsl_port_priv *pp; |
565 | int retval; | ||
566 | void *mem; | 593 | void *mem; |
567 | dma_addr_t mem_dma; | 594 | dma_addr_t mem_dma; |
568 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; | 595 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; |
@@ -688,12 +715,13 @@ static int sata_fsl_prereset(struct ata_link *link, unsigned long deadline) | |||
688 | } | 715 | } |
689 | 716 | ||
690 | static int sata_fsl_softreset(struct ata_link *link, unsigned int *class, | 717 | static int sata_fsl_softreset(struct ata_link *link, unsigned int *class, |
691 | unsigned long deadline) | 718 | unsigned long deadline) |
692 | { | 719 | { |
693 | struct ata_port *ap = link->ap; | 720 | struct ata_port *ap = link->ap; |
694 | struct sata_fsl_port_priv *pp = ap->private_data; | 721 | struct sata_fsl_port_priv *pp = ap->private_data; |
695 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; | 722 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; |
696 | void __iomem *hcr_base = host_priv->hcr_base; | 723 | void __iomem *hcr_base = host_priv->hcr_base; |
724 | int pmp = sata_srst_pmp(link); | ||
697 | u32 temp; | 725 | u32 temp; |
698 | struct ata_taskfile tf; | 726 | struct ata_taskfile tf; |
699 | u8 *cfis; | 727 | u8 *cfis; |
@@ -703,6 +731,9 @@ static int sata_fsl_softreset(struct ata_link *link, unsigned int *class, | |||
703 | 731 | ||
704 | DPRINTK("in xx_softreset\n"); | 732 | DPRINTK("in xx_softreset\n"); |
705 | 733 | ||
734 | if (pmp != SATA_PMP_CTRL_PORT) | ||
735 | goto issue_srst; | ||
736 | |||
706 | try_offline_again: | 737 | try_offline_again: |
707 | /* | 738 | /* |
708 | * Force host controller to go off-line, aborting current operations | 739 | * Force host controller to go off-line, aborting current operations |
@@ -746,6 +777,7 @@ try_offline_again: | |||
746 | 777 | ||
747 | temp = ioread32(hcr_base + HCONTROL); | 778 | temp = ioread32(hcr_base + HCONTROL); |
748 | temp |= (HCONTROL_ONLINE_PHY_RST | HCONTROL_SNOOP_ENABLE); | 779 | temp |= (HCONTROL_ONLINE_PHY_RST | HCONTROL_SNOOP_ENABLE); |
780 | temp |= HCONTROL_PMP_ATTACHED; | ||
749 | iowrite32(temp, hcr_base + HCONTROL); | 781 | iowrite32(temp, hcr_base + HCONTROL); |
750 | 782 | ||
751 | temp = ata_wait_register(hcr_base + HSTATUS, ONLINE, 0, 1, 500); | 783 | temp = ata_wait_register(hcr_base + HSTATUS, ONLINE, 0, 1, 500); |
@@ -771,7 +803,8 @@ try_offline_again: | |||
771 | ata_port_printk(ap, KERN_WARNING, | 803 | ata_port_printk(ap, KERN_WARNING, |
772 | "No Device OR PHYRDY change,Hstatus = 0x%x\n", | 804 | "No Device OR PHYRDY change,Hstatus = 0x%x\n", |
773 | ioread32(hcr_base + HSTATUS)); | 805 | ioread32(hcr_base + HSTATUS)); |
774 | goto err; | 806 | *class = ATA_DEV_NONE; |
807 | goto out; | ||
775 | } | 808 | } |
776 | 809 | ||
777 | /* | 810 | /* |
@@ -783,7 +816,8 @@ try_offline_again: | |||
783 | 816 | ||
784 | if ((temp & 0xFF) != 0x18) { | 817 | if ((temp & 0xFF) != 0x18) { |
785 | ata_port_printk(ap, KERN_WARNING, "No Signature Update\n"); | 818 | ata_port_printk(ap, KERN_WARNING, "No Signature Update\n"); |
786 | goto err; | 819 | *class = ATA_DEV_NONE; |
820 | goto out; | ||
787 | } else { | 821 | } else { |
788 | ata_port_printk(ap, KERN_INFO, | 822 | ata_port_printk(ap, KERN_INFO, |
789 | "Signature Update detected @ %d msecs\n", | 823 | "Signature Update detected @ %d msecs\n", |
@@ -798,6 +832,7 @@ try_offline_again: | |||
798 | * reached here, we can send a command to the target device | 832 | * reached here, we can send a command to the target device |
799 | */ | 833 | */ |
800 | 834 | ||
835 | issue_srst: | ||
801 | DPRINTK("Sending SRST/device reset\n"); | 836 | DPRINTK("Sending SRST/device reset\n"); |
802 | 837 | ||
803 | ata_tf_init(link->device, &tf); | 838 | ata_tf_init(link->device, &tf); |
@@ -808,7 +843,7 @@ try_offline_again: | |||
808 | SRST_CMD | CMD_DESC_SNOOP_ENABLE, 0, 0, 5); | 843 | SRST_CMD | CMD_DESC_SNOOP_ENABLE, 0, 0, 5); |
809 | 844 | ||
810 | tf.ctl |= ATA_SRST; /* setup SRST bit in taskfile control reg */ | 845 | tf.ctl |= ATA_SRST; /* setup SRST bit in taskfile control reg */ |
811 | ata_tf_to_fis(&tf, 0, 0, cfis); | 846 | ata_tf_to_fis(&tf, pmp, 0, cfis); |
812 | 847 | ||
813 | DPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x, 0x%x\n", | 848 | DPRINTK("Dumping cfis : 0x%x, 0x%x, 0x%x, 0x%x\n", |
814 | cfis[0], cfis[1], cfis[2], cfis[3]); | 849 | cfis[0], cfis[1], cfis[2], cfis[3]); |
@@ -854,8 +889,10 @@ try_offline_again: | |||
854 | sata_fsl_setup_cmd_hdr_entry(pp, 0, CMD_DESC_SNOOP_ENABLE, 0, 0, 5); | 889 | sata_fsl_setup_cmd_hdr_entry(pp, 0, CMD_DESC_SNOOP_ENABLE, 0, 0, 5); |
855 | 890 | ||
856 | tf.ctl &= ~ATA_SRST; /* 2nd H2D Ctl. register FIS */ | 891 | tf.ctl &= ~ATA_SRST; /* 2nd H2D Ctl. register FIS */ |
857 | ata_tf_to_fis(&tf, 0, 0, cfis); | 892 | ata_tf_to_fis(&tf, pmp, 0, cfis); |
858 | 893 | ||
894 | if (pmp != SATA_PMP_CTRL_PORT) | ||
895 | iowrite32(pmp, CQPMP + hcr_base); | ||
859 | iowrite32(1, CQ + hcr_base); | 896 | iowrite32(1, CQ + hcr_base); |
860 | msleep(150); /* ?? */ | 897 | msleep(150); /* ?? */ |
861 | 898 | ||
@@ -886,12 +923,21 @@ try_offline_again: | |||
886 | VPRINTK("cereg = 0x%x\n", ioread32(hcr_base + CE)); | 923 | VPRINTK("cereg = 0x%x\n", ioread32(hcr_base + CE)); |
887 | } | 924 | } |
888 | 925 | ||
926 | out: | ||
889 | return 0; | 927 | return 0; |
890 | 928 | ||
891 | err: | 929 | err: |
892 | return -EIO; | 930 | return -EIO; |
893 | } | 931 | } |
894 | 932 | ||
933 | static void sata_fsl_error_handler(struct ata_port *ap) | ||
934 | { | ||
935 | |||
936 | DPRINTK("in xx_error_handler\n"); | ||
937 | sata_pmp_error_handler(ap); | ||
938 | |||
939 | } | ||
940 | |||
895 | static void sata_fsl_post_internal_cmd(struct ata_queued_cmd *qc) | 941 | static void sata_fsl_post_internal_cmd(struct ata_queued_cmd *qc) |
896 | { | 942 | { |
897 | if (qc->flags & ATA_QCFLAG_FAILED) | 943 | if (qc->flags & ATA_QCFLAG_FAILED) |
@@ -905,18 +951,21 @@ static void sata_fsl_post_internal_cmd(struct ata_queued_cmd *qc) | |||
905 | 951 | ||
906 | static void sata_fsl_error_intr(struct ata_port *ap) | 952 | static void sata_fsl_error_intr(struct ata_port *ap) |
907 | { | 953 | { |
908 | struct ata_link *link = &ap->link; | ||
909 | struct ata_eh_info *ehi = &link->eh_info; | ||
910 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; | 954 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; |
911 | void __iomem *hcr_base = host_priv->hcr_base; | 955 | void __iomem *hcr_base = host_priv->hcr_base; |
912 | u32 hstatus, dereg, cereg = 0, SError = 0; | 956 | u32 hstatus, dereg=0, cereg = 0, SError = 0; |
913 | unsigned int err_mask = 0, action = 0; | 957 | unsigned int err_mask = 0, action = 0; |
914 | struct ata_queued_cmd *qc; | 958 | int freeze = 0, abort=0; |
915 | int freeze = 0; | 959 | struct ata_link *link = NULL; |
960 | struct ata_queued_cmd *qc = NULL; | ||
961 | struct ata_eh_info *ehi; | ||
916 | 962 | ||
917 | hstatus = ioread32(hcr_base + HSTATUS); | 963 | hstatus = ioread32(hcr_base + HSTATUS); |
918 | cereg = ioread32(hcr_base + CE); | 964 | cereg = ioread32(hcr_base + CE); |
919 | 965 | ||
966 | /* first, analyze and record host port events */ | ||
967 | link = &ap->link; | ||
968 | ehi = &link->eh_info; | ||
920 | ata_ehi_clear_desc(ehi); | 969 | ata_ehi_clear_desc(ehi); |
921 | 970 | ||
922 | /* | 971 | /* |
@@ -926,42 +975,28 @@ static void sata_fsl_error_intr(struct ata_port *ap) | |||
926 | sata_fsl_scr_read(ap, SCR_ERROR, &SError); | 975 | sata_fsl_scr_read(ap, SCR_ERROR, &SError); |
927 | if (unlikely(SError & 0xFFFF0000)) { | 976 | if (unlikely(SError & 0xFFFF0000)) { |
928 | sata_fsl_scr_write(ap, SCR_ERROR, SError); | 977 | sata_fsl_scr_write(ap, SCR_ERROR, SError); |
929 | err_mask |= AC_ERR_ATA_BUS; | ||
930 | } | 978 | } |
931 | 979 | ||
932 | DPRINTK("error_intr,hStat=0x%x,CE=0x%x,DE =0x%x,SErr=0x%x\n", | 980 | DPRINTK("error_intr,hStat=0x%x,CE=0x%x,DE =0x%x,SErr=0x%x\n", |
933 | hstatus, cereg, ioread32(hcr_base + DE), SError); | 981 | hstatus, cereg, ioread32(hcr_base + DE), SError); |
934 | 982 | ||
935 | /* handle single device errors */ | 983 | /* handle fatal errors */ |
936 | if (cereg) { | 984 | if (hstatus & FATAL_ERROR_DECODE) { |
937 | /* | 985 | ehi->err_mask |= AC_ERR_ATA_BUS; |
938 | * clear the command error, also clears queue to the device | 986 | ehi->action |= ATA_EH_SOFTRESET; |
939 | * in error, and we can (re)issue commands to this device. | ||
940 | * When a device is in error all commands queued into the | ||
941 | * host controller and at the device are considered aborted | ||
942 | * and the queue for that device is stopped. Now, after | ||
943 | * clearing the device error, we can issue commands to the | ||
944 | * device to interrogate it to find the source of the error. | ||
945 | */ | ||
946 | dereg = ioread32(hcr_base + DE); | ||
947 | iowrite32(dereg, hcr_base + DE); | ||
948 | iowrite32(cereg, hcr_base + CE); | ||
949 | 987 | ||
950 | DPRINTK("single device error, CE=0x%x, DE=0x%x\n", | ||
951 | ioread32(hcr_base + CE), ioread32(hcr_base + DE)); | ||
952 | /* | 988 | /* |
953 | * We should consider this as non fatal error, and TF must | 989 | * Ignore serror in case of fatal errors as we always want |
954 | * be updated as done below. | 990 | * to do a soft-reset of the FSL SATA controller. Analyzing |
991 | * serror may cause libata to schedule a hard-reset action, | ||
992 | * and hard-reset currently does not do controller | ||
993 | * offline/online, causing command timeouts and leads to an | ||
994 | * un-recoverable state, hence make libATA ignore | ||
995 | * autopsy in case of fatal errors. | ||
955 | */ | 996 | */ |
956 | 997 | ||
957 | err_mask |= AC_ERR_DEV; | 998 | ehi->flags |= ATA_EHI_NO_AUTOPSY; |
958 | } | ||
959 | 999 | ||
960 | /* handle fatal errors */ | ||
961 | if (hstatus & FATAL_ERROR_DECODE) { | ||
962 | err_mask |= AC_ERR_ATA_BUS; | ||
963 | action |= ATA_EH_RESET; | ||
964 | /* how will fatal error interrupts be completed ?? */ | ||
965 | freeze = 1; | 1000 | freeze = 1; |
966 | } | 1001 | } |
967 | 1002 | ||
@@ -971,30 +1006,83 @@ static void sata_fsl_error_intr(struct ata_port *ap) | |||
971 | 1006 | ||
972 | /* Setup a soft-reset EH action */ | 1007 | /* Setup a soft-reset EH action */ |
973 | ata_ehi_hotplugged(ehi); | 1008 | ata_ehi_hotplugged(ehi); |
1009 | ata_ehi_push_desc(ehi, "%s", "PHY RDY changed"); | ||
974 | freeze = 1; | 1010 | freeze = 1; |
975 | } | 1011 | } |
976 | 1012 | ||
977 | /* record error info */ | 1013 | /* handle single device errors */ |
978 | qc = ata_qc_from_tag(ap, link->active_tag); | 1014 | if (cereg) { |
1015 | /* | ||
1016 | * clear the command error, also clears queue to the device | ||
1017 | * in error, and we can (re)issue commands to this device. | ||
1018 | * When a device is in error all commands queued into the | ||
1019 | * host controller and at the device are considered aborted | ||
1020 | * and the queue for that device is stopped. Now, after | ||
1021 | * clearing the device error, we can issue commands to the | ||
1022 | * device to interrogate it to find the source of the error. | ||
1023 | */ | ||
1024 | abort = 1; | ||
1025 | |||
1026 | DPRINTK("single device error, CE=0x%x, DE=0x%x\n", | ||
1027 | ioread32(hcr_base + CE), ioread32(hcr_base + DE)); | ||
979 | 1028 | ||
980 | if (qc) | 1029 | /* find out the offending link and qc */ |
1030 | if (ap->nr_pmp_links) { | ||
1031 | dereg = ioread32(hcr_base + DE); | ||
1032 | iowrite32(dereg, hcr_base + DE); | ||
1033 | iowrite32(cereg, hcr_base + CE); | ||
1034 | |||
1035 | if (dereg < ap->nr_pmp_links) { | ||
1036 | link = &ap->pmp_link[dereg]; | ||
1037 | ehi = &link->eh_info; | ||
1038 | qc = ata_qc_from_tag(ap, link->active_tag); | ||
1039 | /* | ||
1040 | * We should consider this as non fatal error, | ||
1041 | * and TF must be updated as done below. | ||
1042 | */ | ||
1043 | |||
1044 | err_mask |= AC_ERR_DEV; | ||
1045 | |||
1046 | } else { | ||
1047 | err_mask |= AC_ERR_HSM; | ||
1048 | action |= ATA_EH_HARDRESET; | ||
1049 | freeze = 1; | ||
1050 | } | ||
1051 | } else { | ||
1052 | dereg = ioread32(hcr_base + DE); | ||
1053 | iowrite32(dereg, hcr_base + DE); | ||
1054 | iowrite32(cereg, hcr_base + CE); | ||
1055 | |||
1056 | qc = ata_qc_from_tag(ap, link->active_tag); | ||
1057 | /* | ||
1058 | * We should consider this as non fatal error, | ||
1059 | * and TF must be updated as done below. | ||
1060 | */ | ||
1061 | err_mask |= AC_ERR_DEV; | ||
1062 | } | ||
1063 | } | ||
1064 | |||
1065 | /* record error info */ | ||
1066 | if (qc) { | ||
981 | qc->err_mask |= err_mask; | 1067 | qc->err_mask |= err_mask; |
982 | else | 1068 | } else |
983 | ehi->err_mask |= err_mask; | 1069 | ehi->err_mask |= err_mask; |
984 | 1070 | ||
985 | ehi->action |= action; | 1071 | ehi->action |= action; |
986 | ehi->serror |= SError; | ||
987 | 1072 | ||
988 | /* freeze or abort */ | 1073 | /* freeze or abort */ |
989 | if (freeze) | 1074 | if (freeze) |
990 | ata_port_freeze(ap); | 1075 | ata_port_freeze(ap); |
991 | else | 1076 | else if (abort) { |
992 | ata_port_abort(ap); | 1077 | if (qc) |
1078 | ata_link_abort(qc->dev->link); | ||
1079 | else | ||
1080 | ata_port_abort(ap); | ||
1081 | } | ||
993 | } | 1082 | } |
994 | 1083 | ||
995 | static void sata_fsl_host_intr(struct ata_port *ap) | 1084 | static void sata_fsl_host_intr(struct ata_port *ap) |
996 | { | 1085 | { |
997 | struct ata_link *link = &ap->link; | ||
998 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; | 1086 | struct sata_fsl_host_priv *host_priv = ap->host->private_data; |
999 | void __iomem *hcr_base = host_priv->hcr_base; | 1087 | void __iomem *hcr_base = host_priv->hcr_base; |
1000 | u32 hstatus, qc_active = 0; | 1088 | u32 hstatus, qc_active = 0; |
@@ -1017,10 +1105,19 @@ static void sata_fsl_host_intr(struct ata_port *ap) | |||
1017 | return; | 1105 | return; |
1018 | } | 1106 | } |
1019 | 1107 | ||
1020 | if (link->sactive) { /* only true for NCQ commands */ | 1108 | /* Read command completed register */ |
1109 | qc_active = ioread32(hcr_base + CC); | ||
1110 | |||
1111 | VPRINTK("Status of all queues :\n"); | ||
1112 | VPRINTK("qc_active/CC = 0x%x, CA = 0x%x, CE=0x%x,CQ=0x%x,apqa=0x%x\n", | ||
1113 | qc_active, | ||
1114 | ioread32(hcr_base + CA), | ||
1115 | ioread32(hcr_base + CE), | ||
1116 | ioread32(hcr_base + CQ), | ||
1117 | ap->qc_active); | ||
1118 | |||
1119 | if (qc_active & ap->qc_active) { | ||
1021 | int i; | 1120 | int i; |
1022 | /* Read command completed register */ | ||
1023 | qc_active = ioread32(hcr_base + CC); | ||
1024 | /* clear CC bit, this will also complete the interrupt */ | 1121 | /* clear CC bit, this will also complete the interrupt */ |
1025 | iowrite32(qc_active, hcr_base + CC); | 1122 | iowrite32(qc_active, hcr_base + CC); |
1026 | 1123 | ||
@@ -1032,8 +1129,9 @@ static void sata_fsl_host_intr(struct ata_port *ap) | |||
1032 | for (i = 0; i < SATA_FSL_QUEUE_DEPTH; i++) { | 1129 | for (i = 0; i < SATA_FSL_QUEUE_DEPTH; i++) { |
1033 | if (qc_active & (1 << i)) { | 1130 | if (qc_active & (1 << i)) { |
1034 | qc = ata_qc_from_tag(ap, i); | 1131 | qc = ata_qc_from_tag(ap, i); |
1035 | if (qc) | 1132 | if (qc) { |
1036 | ata_qc_complete(qc); | 1133 | ata_qc_complete(qc); |
1134 | } | ||
1037 | DPRINTK | 1135 | DPRINTK |
1038 | ("completing ncq cmd,tag=%d,CC=0x%x,CA=0x%x\n", | 1136 | ("completing ncq cmd,tag=%d,CC=0x%x,CA=0x%x\n", |
1039 | i, ioread32(hcr_base + CC), | 1137 | i, ioread32(hcr_base + CC), |
@@ -1042,19 +1140,21 @@ static void sata_fsl_host_intr(struct ata_port *ap) | |||
1042 | } | 1140 | } |
1043 | return; | 1141 | return; |
1044 | 1142 | ||
1045 | } else if (ap->qc_active) { | 1143 | } else if ((ap->qc_active & (1 << ATA_TAG_INTERNAL))) { |
1046 | iowrite32(1, hcr_base + CC); | 1144 | iowrite32(1, hcr_base + CC); |
1047 | qc = ata_qc_from_tag(ap, link->active_tag); | 1145 | qc = ata_qc_from_tag(ap, ATA_TAG_INTERNAL); |
1048 | 1146 | ||
1049 | DPRINTK("completing non-ncq cmd, tag=%d,CC=0x%x\n", | 1147 | DPRINTK("completing non-ncq cmd, CC=0x%x\n", |
1050 | link->active_tag, ioread32(hcr_base + CC)); | 1148 | ioread32(hcr_base + CC)); |
1051 | 1149 | ||
1052 | if (qc) | 1150 | if (qc) { |
1053 | ata_qc_complete(qc); | 1151 | ata_qc_complete(qc); |
1152 | } | ||
1054 | } else { | 1153 | } else { |
1055 | /* Spurious Interrupt!! */ | 1154 | /* Spurious Interrupt!! */ |
1056 | DPRINTK("spurious interrupt!!, CC = 0x%x\n", | 1155 | DPRINTK("spurious interrupt!!, CC = 0x%x\n", |
1057 | ioread32(hcr_base + CC)); | 1156 | ioread32(hcr_base + CC)); |
1157 | iowrite32(qc_active, hcr_base + CC); | ||
1058 | return; | 1158 | return; |
1059 | } | 1159 | } |
1060 | } | 1160 | } |
@@ -1130,9 +1230,6 @@ static int sata_fsl_init_controller(struct ata_host *host) | |||
1130 | iowrite32(0x00000FFFF, hcr_base + CE); | 1230 | iowrite32(0x00000FFFF, hcr_base + CE); |
1131 | iowrite32(0x00000FFFF, hcr_base + DE); | 1231 | iowrite32(0x00000FFFF, hcr_base + DE); |
1132 | 1232 | ||
1133 | /* initially assuming no Port multiplier, set CQPMP to 0 */ | ||
1134 | iowrite32(0x0, hcr_base + CQPMP); | ||
1135 | |||
1136 | /* | 1233 | /* |
1137 | * host controller will be brought on-line, during xx_port_start() | 1234 | * host controller will be brought on-line, during xx_port_start() |
1138 | * callback, that should also initiate the OOB, COMINIT sequence | 1235 | * callback, that should also initiate the OOB, COMINIT sequence |
@@ -1154,8 +1251,8 @@ static struct scsi_host_template sata_fsl_sht = { | |||
1154 | .dma_boundary = ATA_DMA_BOUNDARY, | 1251 | .dma_boundary = ATA_DMA_BOUNDARY, |
1155 | }; | 1252 | }; |
1156 | 1253 | ||
1157 | static const struct ata_port_operations sata_fsl_ops = { | 1254 | static struct ata_port_operations sata_fsl_ops = { |
1158 | .inherits = &sata_port_ops, | 1255 | .inherits = &sata_pmp_port_ops, |
1159 | 1256 | ||
1160 | .qc_prep = sata_fsl_qc_prep, | 1257 | .qc_prep = sata_fsl_qc_prep, |
1161 | .qc_issue = sata_fsl_qc_issue, | 1258 | .qc_issue = sata_fsl_qc_issue, |
@@ -1168,10 +1265,15 @@ static const struct ata_port_operations sata_fsl_ops = { | |||
1168 | .thaw = sata_fsl_thaw, | 1265 | .thaw = sata_fsl_thaw, |
1169 | .prereset = sata_fsl_prereset, | 1266 | .prereset = sata_fsl_prereset, |
1170 | .softreset = sata_fsl_softreset, | 1267 | .softreset = sata_fsl_softreset, |
1268 | .pmp_softreset = sata_fsl_softreset, | ||
1269 | .error_handler = sata_fsl_error_handler, | ||
1171 | .post_internal_cmd = sata_fsl_post_internal_cmd, | 1270 | .post_internal_cmd = sata_fsl_post_internal_cmd, |
1172 | 1271 | ||
1173 | .port_start = sata_fsl_port_start, | 1272 | .port_start = sata_fsl_port_start, |
1174 | .port_stop = sata_fsl_port_stop, | 1273 | .port_stop = sata_fsl_port_stop, |
1274 | |||
1275 | .pmp_attach = sata_fsl_pmp_attach, | ||
1276 | .pmp_detach = sata_fsl_pmp_detach, | ||
1175 | }; | 1277 | }; |
1176 | 1278 | ||
1177 | static const struct ata_port_info sata_fsl_port_info[] = { | 1279 | static const struct ata_port_info sata_fsl_port_info[] = { |
diff --git a/drivers/ata/sata_mv.c b/drivers/ata/sata_mv.c index bb73b2222627..acf347f71a2f 100644 --- a/drivers/ata/sata_mv.c +++ b/drivers/ata/sata_mv.c | |||
@@ -72,7 +72,7 @@ | |||
72 | #include <linux/libata.h> | 72 | #include <linux/libata.h> |
73 | 73 | ||
74 | #define DRV_NAME "sata_mv" | 74 | #define DRV_NAME "sata_mv" |
75 | #define DRV_VERSION "1.20" | 75 | #define DRV_VERSION "1.24" |
76 | 76 | ||
77 | enum { | 77 | enum { |
78 | /* BAR's are enumerated in terms of pci_resource_start() terms */ | 78 | /* BAR's are enumerated in terms of pci_resource_start() terms */ |
@@ -122,14 +122,17 @@ enum { | |||
122 | /* Host Flags */ | 122 | /* Host Flags */ |
123 | MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */ | 123 | MV_FLAG_DUAL_HC = (1 << 30), /* two SATA Host Controllers */ |
124 | MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */ | 124 | MV_FLAG_IRQ_COALESCE = (1 << 29), /* IRQ coalescing capability */ |
125 | /* SoC integrated controllers, no PCI interface */ | ||
126 | MV_FLAG_SOC = (1 << 28), | ||
127 | 125 | ||
128 | MV_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | | 126 | MV_COMMON_FLAGS = ATA_FLAG_SATA | ATA_FLAG_NO_LEGACY | |
129 | ATA_FLAG_MMIO | ATA_FLAG_NO_ATAPI | | 127 | ATA_FLAG_MMIO | ATA_FLAG_NO_ATAPI | |
130 | ATA_FLAG_PIO_POLLING, | 128 | ATA_FLAG_PIO_POLLING, |
129 | |||
131 | MV_6XXX_FLAGS = MV_FLAG_IRQ_COALESCE, | 130 | MV_6XXX_FLAGS = MV_FLAG_IRQ_COALESCE, |
132 | 131 | ||
132 | MV_GENIIE_FLAGS = MV_COMMON_FLAGS | MV_6XXX_FLAGS | | ||
133 | ATA_FLAG_PMP | ATA_FLAG_ACPI_SATA | | ||
134 | ATA_FLAG_NCQ | ATA_FLAG_AN, | ||
135 | |||
133 | CRQB_FLAG_READ = (1 << 0), | 136 | CRQB_FLAG_READ = (1 << 0), |
134 | CRQB_TAG_SHIFT = 1, | 137 | CRQB_TAG_SHIFT = 1, |
135 | CRQB_IOID_SHIFT = 6, /* CRQB Gen-II/IIE IO Id shift */ | 138 | CRQB_IOID_SHIFT = 6, /* CRQB Gen-II/IIE IO Id shift */ |
@@ -197,13 +200,6 @@ enum { | |||
197 | HC_MAIN_RSVD = (0x7f << 25), /* bits 31-25 */ | 200 | HC_MAIN_RSVD = (0x7f << 25), /* bits 31-25 */ |
198 | HC_MAIN_RSVD_5 = (0x1fff << 19), /* bits 31-19 */ | 201 | HC_MAIN_RSVD_5 = (0x1fff << 19), /* bits 31-19 */ |
199 | HC_MAIN_RSVD_SOC = (0x3fffffb << 6), /* bits 31-9, 7-6 */ | 202 | HC_MAIN_RSVD_SOC = (0x3fffffb << 6), /* bits 31-9, 7-6 */ |
200 | HC_MAIN_MASKED_IRQS = (TRAN_LO_DONE | TRAN_HI_DONE | | ||
201 | PORTS_0_3_COAL_DONE | PORTS_4_7_COAL_DONE | | ||
202 | PORTS_0_7_COAL_DONE | GPIO_INT | TWSI_INT | | ||
203 | HC_MAIN_RSVD), | ||
204 | HC_MAIN_MASKED_IRQS_5 = (PORTS_0_3_COAL_DONE | PORTS_4_7_COAL_DONE | | ||
205 | HC_MAIN_RSVD_5), | ||
206 | HC_MAIN_MASKED_IRQS_SOC = (PORTS_0_3_COAL_DONE | HC_MAIN_RSVD_SOC), | ||
207 | 203 | ||
208 | /* SATAHC registers */ | 204 | /* SATAHC registers */ |
209 | HC_CFG_OFS = 0, | 205 | HC_CFG_OFS = 0, |
@@ -221,6 +217,7 @@ enum { | |||
221 | SATA_STATUS_OFS = 0x300, /* ctrl, err regs follow status */ | 217 | SATA_STATUS_OFS = 0x300, /* ctrl, err regs follow status */ |
222 | SATA_ACTIVE_OFS = 0x350, | 218 | SATA_ACTIVE_OFS = 0x350, |
223 | SATA_FIS_IRQ_CAUSE_OFS = 0x364, | 219 | SATA_FIS_IRQ_CAUSE_OFS = 0x364, |
220 | SATA_FIS_IRQ_AN = (1 << 9), /* async notification */ | ||
224 | 221 | ||
225 | LTMODE_OFS = 0x30c, | 222 | LTMODE_OFS = 0x30c, |
226 | LTMODE_BIT8 = (1 << 8), /* unknown, but necessary */ | 223 | LTMODE_BIT8 = (1 << 8), /* unknown, but necessary */ |
@@ -357,12 +354,12 @@ enum { | |||
357 | MV_HP_ERRATA_50XXB2 = (1 << 2), | 354 | MV_HP_ERRATA_50XXB2 = (1 << 2), |
358 | MV_HP_ERRATA_60X1B2 = (1 << 3), | 355 | MV_HP_ERRATA_60X1B2 = (1 << 3), |
359 | MV_HP_ERRATA_60X1C0 = (1 << 4), | 356 | MV_HP_ERRATA_60X1C0 = (1 << 4), |
360 | MV_HP_ERRATA_XX42A0 = (1 << 5), | ||
361 | MV_HP_GEN_I = (1 << 6), /* Generation I: 50xx */ | 357 | MV_HP_GEN_I = (1 << 6), /* Generation I: 50xx */ |
362 | MV_HP_GEN_II = (1 << 7), /* Generation II: 60xx */ | 358 | MV_HP_GEN_II = (1 << 7), /* Generation II: 60xx */ |
363 | MV_HP_GEN_IIE = (1 << 8), /* Generation IIE: 6042/7042 */ | 359 | MV_HP_GEN_IIE = (1 << 8), /* Generation IIE: 6042/7042 */ |
364 | MV_HP_PCIE = (1 << 9), /* PCIe bus/regs: 7042 */ | 360 | MV_HP_PCIE = (1 << 9), /* PCIe bus/regs: 7042 */ |
365 | MV_HP_CUT_THROUGH = (1 << 10), /* can use EDMA cut-through */ | 361 | MV_HP_CUT_THROUGH = (1 << 10), /* can use EDMA cut-through */ |
362 | MV_HP_FLAG_SOC = (1 << 11), /* SystemOnChip, no PCI */ | ||
366 | 363 | ||
367 | /* Port private flags (pp_flags) */ | 364 | /* Port private flags (pp_flags) */ |
368 | MV_PP_FLAG_EDMA_EN = (1 << 0), /* is EDMA engine enabled? */ | 365 | MV_PP_FLAG_EDMA_EN = (1 << 0), /* is EDMA engine enabled? */ |
@@ -375,7 +372,7 @@ enum { | |||
375 | #define IS_GEN_II(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_II) | 372 | #define IS_GEN_II(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_II) |
376 | #define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE) | 373 | #define IS_GEN_IIE(hpriv) ((hpriv)->hp_flags & MV_HP_GEN_IIE) |
377 | #define IS_PCIE(hpriv) ((hpriv)->hp_flags & MV_HP_PCIE) | 374 | #define IS_PCIE(hpriv) ((hpriv)->hp_flags & MV_HP_PCIE) |
378 | #define HAS_PCI(host) (!((host)->ports[0]->flags & MV_FLAG_SOC)) | 375 | #define IS_SOC(hpriv) ((hpriv)->hp_flags & MV_HP_FLAG_SOC) |
379 | 376 | ||
380 | #define WINDOW_CTRL(i) (0x20030 + ((i) << 4)) | 377 | #define WINDOW_CTRL(i) (0x20030 + ((i) << 4)) |
381 | #define WINDOW_BASE(i) (0x20034 + ((i) << 4)) | 378 | #define WINDOW_BASE(i) (0x20034 + ((i) << 4)) |
@@ -459,6 +456,7 @@ struct mv_port_signal { | |||
459 | 456 | ||
460 | struct mv_host_priv { | 457 | struct mv_host_priv { |
461 | u32 hp_flags; | 458 | u32 hp_flags; |
459 | u32 main_irq_mask; | ||
462 | struct mv_port_signal signal[8]; | 460 | struct mv_port_signal signal[8]; |
463 | const struct mv_hw_ops *ops; | 461 | const struct mv_hw_ops *ops; |
464 | int n_ports; | 462 | int n_ports; |
@@ -640,25 +638,19 @@ static const struct ata_port_info mv_port_info[] = { | |||
640 | .port_ops = &mv6_ops, | 638 | .port_ops = &mv6_ops, |
641 | }, | 639 | }, |
642 | { /* chip_6042 */ | 640 | { /* chip_6042 */ |
643 | .flags = MV_COMMON_FLAGS | MV_6XXX_FLAGS | | 641 | .flags = MV_GENIIE_FLAGS, |
644 | ATA_FLAG_PMP | ATA_FLAG_ACPI_SATA | | ||
645 | ATA_FLAG_NCQ, | ||
646 | .pio_mask = 0x1f, /* pio0-4 */ | 642 | .pio_mask = 0x1f, /* pio0-4 */ |
647 | .udma_mask = ATA_UDMA6, | 643 | .udma_mask = ATA_UDMA6, |
648 | .port_ops = &mv_iie_ops, | 644 | .port_ops = &mv_iie_ops, |
649 | }, | 645 | }, |
650 | { /* chip_7042 */ | 646 | { /* chip_7042 */ |
651 | .flags = MV_COMMON_FLAGS | MV_6XXX_FLAGS | | 647 | .flags = MV_GENIIE_FLAGS, |
652 | ATA_FLAG_PMP | ATA_FLAG_ACPI_SATA | | ||
653 | ATA_FLAG_NCQ, | ||
654 | .pio_mask = 0x1f, /* pio0-4 */ | 648 | .pio_mask = 0x1f, /* pio0-4 */ |
655 | .udma_mask = ATA_UDMA6, | 649 | .udma_mask = ATA_UDMA6, |
656 | .port_ops = &mv_iie_ops, | 650 | .port_ops = &mv_iie_ops, |
657 | }, | 651 | }, |
658 | { /* chip_soc */ | 652 | { /* chip_soc */ |
659 | .flags = MV_COMMON_FLAGS | MV_6XXX_FLAGS | | 653 | .flags = MV_GENIIE_FLAGS, |
660 | ATA_FLAG_PMP | ATA_FLAG_ACPI_SATA | | ||
661 | ATA_FLAG_NCQ | MV_FLAG_SOC, | ||
662 | .pio_mask = 0x1f, /* pio0-4 */ | 654 | .pio_mask = 0x1f, /* pio0-4 */ |
663 | .udma_mask = ATA_UDMA6, | 655 | .udma_mask = ATA_UDMA6, |
664 | .port_ops = &mv_iie_ops, | 656 | .port_ops = &mv_iie_ops, |
@@ -818,12 +810,7 @@ static void mv_set_edma_ptrs(void __iomem *port_mmio, | |||
818 | writel((pp->crqb_dma >> 16) >> 16, port_mmio + EDMA_REQ_Q_BASE_HI_OFS); | 810 | writel((pp->crqb_dma >> 16) >> 16, port_mmio + EDMA_REQ_Q_BASE_HI_OFS); |
819 | writelfl((pp->crqb_dma & EDMA_REQ_Q_BASE_LO_MASK) | index, | 811 | writelfl((pp->crqb_dma & EDMA_REQ_Q_BASE_LO_MASK) | index, |
820 | port_mmio + EDMA_REQ_Q_IN_PTR_OFS); | 812 | port_mmio + EDMA_REQ_Q_IN_PTR_OFS); |
821 | 813 | writelfl(index, port_mmio + EDMA_REQ_Q_OUT_PTR_OFS); | |
822 | if (hpriv->hp_flags & MV_HP_ERRATA_XX42A0) | ||
823 | writelfl((pp->crqb_dma & 0xffffffff) | index, | ||
824 | port_mmio + EDMA_REQ_Q_OUT_PTR_OFS); | ||
825 | else | ||
826 | writelfl(index, port_mmio + EDMA_REQ_Q_OUT_PTR_OFS); | ||
827 | 814 | ||
828 | /* | 815 | /* |
829 | * initialize response queue | 816 | * initialize response queue |
@@ -833,17 +820,38 @@ static void mv_set_edma_ptrs(void __iomem *port_mmio, | |||
833 | 820 | ||
834 | WARN_ON(pp->crpb_dma & 0xff); | 821 | WARN_ON(pp->crpb_dma & 0xff); |
835 | writel((pp->crpb_dma >> 16) >> 16, port_mmio + EDMA_RSP_Q_BASE_HI_OFS); | 822 | writel((pp->crpb_dma >> 16) >> 16, port_mmio + EDMA_RSP_Q_BASE_HI_OFS); |
836 | 823 | writelfl(index, port_mmio + EDMA_RSP_Q_IN_PTR_OFS); | |
837 | if (hpriv->hp_flags & MV_HP_ERRATA_XX42A0) | ||
838 | writelfl((pp->crpb_dma & 0xffffffff) | index, | ||
839 | port_mmio + EDMA_RSP_Q_IN_PTR_OFS); | ||
840 | else | ||
841 | writelfl(index, port_mmio + EDMA_RSP_Q_IN_PTR_OFS); | ||
842 | |||
843 | writelfl((pp->crpb_dma & EDMA_RSP_Q_BASE_LO_MASK) | index, | 824 | writelfl((pp->crpb_dma & EDMA_RSP_Q_BASE_LO_MASK) | index, |
844 | port_mmio + EDMA_RSP_Q_OUT_PTR_OFS); | 825 | port_mmio + EDMA_RSP_Q_OUT_PTR_OFS); |
845 | } | 826 | } |
846 | 827 | ||
828 | static void mv_set_main_irq_mask(struct ata_host *host, | ||
829 | u32 disable_bits, u32 enable_bits) | ||
830 | { | ||
831 | struct mv_host_priv *hpriv = host->private_data; | ||
832 | u32 old_mask, new_mask; | ||
833 | |||
834 | old_mask = hpriv->main_irq_mask; | ||
835 | new_mask = (old_mask & ~disable_bits) | enable_bits; | ||
836 | if (new_mask != old_mask) { | ||
837 | hpriv->main_irq_mask = new_mask; | ||
838 | writelfl(new_mask, hpriv->main_irq_mask_addr); | ||
839 | } | ||
840 | } | ||
841 | |||
842 | static void mv_enable_port_irqs(struct ata_port *ap, | ||
843 | unsigned int port_bits) | ||
844 | { | ||
845 | unsigned int shift, hardport, port = ap->port_no; | ||
846 | u32 disable_bits, enable_bits; | ||
847 | |||
848 | MV_PORT_TO_SHIFT_AND_HARDPORT(port, shift, hardport); | ||
849 | |||
850 | disable_bits = (DONE_IRQ | ERR_IRQ) << shift; | ||
851 | enable_bits = port_bits << shift; | ||
852 | mv_set_main_irq_mask(ap->host, disable_bits, enable_bits); | ||
853 | } | ||
854 | |||
847 | /** | 855 | /** |
848 | * mv_start_dma - Enable eDMA engine | 856 | * mv_start_dma - Enable eDMA engine |
849 | * @base: port base address | 857 | * @base: port base address |
@@ -886,9 +894,11 @@ static void mv_start_dma(struct ata_port *ap, void __iomem *port_mmio, | |||
886 | mv_edma_cfg(ap, want_ncq); | 894 | mv_edma_cfg(ap, want_ncq); |
887 | 895 | ||
888 | /* clear FIS IRQ Cause */ | 896 | /* clear FIS IRQ Cause */ |
889 | writelfl(0, port_mmio + SATA_FIS_IRQ_CAUSE_OFS); | 897 | if (IS_GEN_IIE(hpriv)) |
898 | writelfl(0, port_mmio + SATA_FIS_IRQ_CAUSE_OFS); | ||
890 | 899 | ||
891 | mv_set_edma_ptrs(port_mmio, hpriv, pp); | 900 | mv_set_edma_ptrs(port_mmio, hpriv, pp); |
901 | mv_enable_port_irqs(ap, DONE_IRQ|ERR_IRQ); | ||
892 | 902 | ||
893 | writelfl(EDMA_EN, port_mmio + EDMA_CMD_OFS); | 903 | writelfl(EDMA_EN, port_mmio + EDMA_CMD_OFS); |
894 | pp->pp_flags |= MV_PP_FLAG_EDMA_EN; | 904 | pp->pp_flags |= MV_PP_FLAG_EDMA_EN; |
@@ -1231,7 +1241,7 @@ static void mv_edma_cfg(struct ata_port *ap, int want_ncq) | |||
1231 | 1241 | ||
1232 | cfg |= (1 << 23); /* do not mask PM field in rx'd FIS */ | 1242 | cfg |= (1 << 23); /* do not mask PM field in rx'd FIS */ |
1233 | cfg |= (1 << 22); /* enab 4-entry host queue cache */ | 1243 | cfg |= (1 << 22); /* enab 4-entry host queue cache */ |
1234 | if (HAS_PCI(ap->host)) | 1244 | if (!IS_SOC(hpriv)) |
1235 | cfg |= (1 << 18); /* enab early completion */ | 1245 | cfg |= (1 << 18); /* enab early completion */ |
1236 | if (hpriv->hp_flags & MV_HP_CUT_THROUGH) | 1246 | if (hpriv->hp_flags & MV_HP_CUT_THROUGH) |
1237 | cfg |= (1 << 17); /* enab cut-thru (dis stor&forwrd) */ | 1247 | cfg |= (1 << 17); /* enab cut-thru (dis stor&forwrd) */ |
@@ -1341,6 +1351,7 @@ out_port_free_dma_mem: | |||
1341 | static void mv_port_stop(struct ata_port *ap) | 1351 | static void mv_port_stop(struct ata_port *ap) |
1342 | { | 1352 | { |
1343 | mv_stop_edma(ap); | 1353 | mv_stop_edma(ap); |
1354 | mv_enable_port_irqs(ap, 0); | ||
1344 | mv_port_free_dma_mem(ap); | 1355 | mv_port_free_dma_mem(ap); |
1345 | } | 1356 | } |
1346 | 1357 | ||
@@ -1582,6 +1593,7 @@ static unsigned int mv_qc_issue(struct ata_queued_cmd *qc) | |||
1582 | * shadow block, etc registers. | 1593 | * shadow block, etc registers. |
1583 | */ | 1594 | */ |
1584 | mv_stop_edma(ap); | 1595 | mv_stop_edma(ap); |
1596 | mv_enable_port_irqs(ap, ERR_IRQ); | ||
1585 | mv_pmp_select(ap, qc->dev->link->pmp); | 1597 | mv_pmp_select(ap, qc->dev->link->pmp); |
1586 | return ata_sff_qc_issue(qc); | 1598 | return ata_sff_qc_issue(qc); |
1587 | } | 1599 | } |
@@ -1670,6 +1682,18 @@ static void mv_pmp_eh_prep(struct ata_port *ap, unsigned int pmp_map) | |||
1670 | } | 1682 | } |
1671 | } | 1683 | } |
1672 | 1684 | ||
1685 | static int mv_req_q_empty(struct ata_port *ap) | ||
1686 | { | ||
1687 | void __iomem *port_mmio = mv_ap_base(ap); | ||
1688 | u32 in_ptr, out_ptr; | ||
1689 | |||
1690 | in_ptr = (readl(port_mmio + EDMA_REQ_Q_IN_PTR_OFS) | ||
1691 | >> EDMA_REQ_Q_PTR_SHIFT) & MV_MAX_Q_DEPTH_MASK; | ||
1692 | out_ptr = (readl(port_mmio + EDMA_REQ_Q_OUT_PTR_OFS) | ||
1693 | >> EDMA_REQ_Q_PTR_SHIFT) & MV_MAX_Q_DEPTH_MASK; | ||
1694 | return (in_ptr == out_ptr); /* 1 == queue_is_empty */ | ||
1695 | } | ||
1696 | |||
1673 | static int mv_handle_fbs_ncq_dev_err(struct ata_port *ap) | 1697 | static int mv_handle_fbs_ncq_dev_err(struct ata_port *ap) |
1674 | { | 1698 | { |
1675 | struct mv_port_priv *pp = ap->private_data; | 1699 | struct mv_port_priv *pp = ap->private_data; |
@@ -1703,7 +1727,7 @@ static int mv_handle_fbs_ncq_dev_err(struct ata_port *ap) | |||
1703 | ap->qc_active, failed_links, | 1727 | ap->qc_active, failed_links, |
1704 | ap->nr_active_links); | 1728 | ap->nr_active_links); |
1705 | 1729 | ||
1706 | if (ap->nr_active_links <= failed_links) { | 1730 | if (ap->nr_active_links <= failed_links && mv_req_q_empty(ap)) { |
1707 | mv_process_crpb_entries(ap, pp); | 1731 | mv_process_crpb_entries(ap, pp); |
1708 | mv_stop_edma(ap); | 1732 | mv_stop_edma(ap); |
1709 | mv_eh_freeze(ap); | 1733 | mv_eh_freeze(ap); |
@@ -1812,6 +1836,7 @@ static void mv_err_intr(struct ata_port *ap) | |||
1812 | { | 1836 | { |
1813 | void __iomem *port_mmio = mv_ap_base(ap); | 1837 | void __iomem *port_mmio = mv_ap_base(ap); |
1814 | u32 edma_err_cause, eh_freeze_mask, serr = 0; | 1838 | u32 edma_err_cause, eh_freeze_mask, serr = 0; |
1839 | u32 fis_cause = 0; | ||
1815 | struct mv_port_priv *pp = ap->private_data; | 1840 | struct mv_port_priv *pp = ap->private_data; |
1816 | struct mv_host_priv *hpriv = ap->host->private_data; | 1841 | struct mv_host_priv *hpriv = ap->host->private_data; |
1817 | unsigned int action = 0, err_mask = 0; | 1842 | unsigned int action = 0, err_mask = 0; |
@@ -1821,16 +1846,19 @@ static void mv_err_intr(struct ata_port *ap) | |||
1821 | 1846 | ||
1822 | /* | 1847 | /* |
1823 | * Read and clear the SError and err_cause bits. | 1848 | * Read and clear the SError and err_cause bits. |
1849 | * For GenIIe, if EDMA_ERR_TRANS_IRQ_7 is set, we also must read/clear | ||
1850 | * the FIS_IRQ_CAUSE register before clearing edma_err_cause. | ||
1824 | */ | 1851 | */ |
1825 | sata_scr_read(&ap->link, SCR_ERROR, &serr); | 1852 | sata_scr_read(&ap->link, SCR_ERROR, &serr); |
1826 | sata_scr_write_flush(&ap->link, SCR_ERROR, serr); | 1853 | sata_scr_write_flush(&ap->link, SCR_ERROR, serr); |
1827 | 1854 | ||
1828 | edma_err_cause = readl(port_mmio + EDMA_ERR_IRQ_CAUSE_OFS); | 1855 | edma_err_cause = readl(port_mmio + EDMA_ERR_IRQ_CAUSE_OFS); |
1856 | if (IS_GEN_IIE(hpriv) && (edma_err_cause & EDMA_ERR_TRANS_IRQ_7)) { | ||
1857 | fis_cause = readl(port_mmio + SATA_FIS_IRQ_CAUSE_OFS); | ||
1858 | writelfl(~fis_cause, port_mmio + SATA_FIS_IRQ_CAUSE_OFS); | ||
1859 | } | ||
1829 | writelfl(~edma_err_cause, port_mmio + EDMA_ERR_IRQ_CAUSE_OFS); | 1860 | writelfl(~edma_err_cause, port_mmio + EDMA_ERR_IRQ_CAUSE_OFS); |
1830 | 1861 | ||
1831 | ata_port_printk(ap, KERN_INFO, "%s: err_cause=%08x pp_flags=0x%x\n", | ||
1832 | __func__, edma_err_cause, pp->pp_flags); | ||
1833 | |||
1834 | if (edma_err_cause & EDMA_ERR_DEV) { | 1862 | if (edma_err_cause & EDMA_ERR_DEV) { |
1835 | /* | 1863 | /* |
1836 | * Device errors during FIS-based switching operation | 1864 | * Device errors during FIS-based switching operation |
@@ -1844,6 +1872,18 @@ static void mv_err_intr(struct ata_port *ap) | |||
1844 | ata_ehi_clear_desc(ehi); | 1872 | ata_ehi_clear_desc(ehi); |
1845 | ata_ehi_push_desc(ehi, "edma_err_cause=%08x pp_flags=%08x", | 1873 | ata_ehi_push_desc(ehi, "edma_err_cause=%08x pp_flags=%08x", |
1846 | edma_err_cause, pp->pp_flags); | 1874 | edma_err_cause, pp->pp_flags); |
1875 | |||
1876 | if (IS_GEN_IIE(hpriv) && (edma_err_cause & EDMA_ERR_TRANS_IRQ_7)) { | ||
1877 | ata_ehi_push_desc(ehi, "fis_cause=%08x", fis_cause); | ||
1878 | if (fis_cause & SATA_FIS_IRQ_AN) { | ||
1879 | u32 ec = edma_err_cause & | ||
1880 | ~(EDMA_ERR_TRANS_IRQ_7 | EDMA_ERR_IRQ_TRANSIENT); | ||
1881 | sata_async_notification(ap); | ||
1882 | if (!ec) | ||
1883 | return; /* Just an AN; no need for the nukes */ | ||
1884 | ata_ehi_push_desc(ehi, "SDB notify"); | ||
1885 | } | ||
1886 | } | ||
1847 | /* | 1887 | /* |
1848 | * All generations share these EDMA error cause bits: | 1888 | * All generations share these EDMA error cause bits: |
1849 | */ | 1889 | */ |
@@ -2162,20 +2202,20 @@ static irqreturn_t mv_interrupt(int irq, void *dev_instance) | |||
2162 | struct ata_host *host = dev_instance; | 2202 | struct ata_host *host = dev_instance; |
2163 | struct mv_host_priv *hpriv = host->private_data; | 2203 | struct mv_host_priv *hpriv = host->private_data; |
2164 | unsigned int handled = 0; | 2204 | unsigned int handled = 0; |
2165 | u32 main_irq_cause, main_irq_mask; | 2205 | u32 main_irq_cause, pending_irqs; |
2166 | 2206 | ||
2167 | spin_lock(&host->lock); | 2207 | spin_lock(&host->lock); |
2168 | main_irq_cause = readl(hpriv->main_irq_cause_addr); | 2208 | main_irq_cause = readl(hpriv->main_irq_cause_addr); |
2169 | main_irq_mask = readl(hpriv->main_irq_mask_addr); | 2209 | pending_irqs = main_irq_cause & hpriv->main_irq_mask; |
2170 | /* | 2210 | /* |
2171 | * Deal with cases where we either have nothing pending, or have read | 2211 | * Deal with cases where we either have nothing pending, or have read |
2172 | * a bogus register value which can indicate HW removal or PCI fault. | 2212 | * a bogus register value which can indicate HW removal or PCI fault. |
2173 | */ | 2213 | */ |
2174 | if ((main_irq_cause & main_irq_mask) && (main_irq_cause != 0xffffffffU)) { | 2214 | if (pending_irqs && main_irq_cause != 0xffffffffU) { |
2175 | if (unlikely((main_irq_cause & PCI_ERR) && HAS_PCI(host))) | 2215 | if (unlikely((pending_irqs & PCI_ERR) && !IS_SOC(hpriv))) |
2176 | handled = mv_pci_error(host, hpriv->base); | 2216 | handled = mv_pci_error(host, hpriv->base); |
2177 | else | 2217 | else |
2178 | handled = mv_host_intr(host, main_irq_cause); | 2218 | handled = mv_host_intr(host, pending_irqs); |
2179 | } | 2219 | } |
2180 | spin_unlock(&host->lock); | 2220 | spin_unlock(&host->lock); |
2181 | return IRQ_RETVAL(handled); | 2221 | return IRQ_RETVAL(handled); |
@@ -2373,7 +2413,6 @@ static void mv_reset_pci_bus(struct ata_host *host, void __iomem *mmio) | |||
2373 | ZERO(MV_PCI_DISC_TIMER); | 2413 | ZERO(MV_PCI_DISC_TIMER); |
2374 | ZERO(MV_PCI_MSI_TRIGGER); | 2414 | ZERO(MV_PCI_MSI_TRIGGER); |
2375 | writel(0x000100ff, mmio + MV_PCI_XBAR_TMOUT_OFS); | 2415 | writel(0x000100ff, mmio + MV_PCI_XBAR_TMOUT_OFS); |
2376 | ZERO(PCI_HC_MAIN_IRQ_MASK_OFS); | ||
2377 | ZERO(MV_PCI_SERR_MASK); | 2416 | ZERO(MV_PCI_SERR_MASK); |
2378 | ZERO(hpriv->irq_cause_ofs); | 2417 | ZERO(hpriv->irq_cause_ofs); |
2379 | ZERO(hpriv->irq_mask_ofs); | 2418 | ZERO(hpriv->irq_mask_ofs); |
@@ -2495,7 +2534,7 @@ static void mv6_phy_errata(struct mv_host_priv *hpriv, void __iomem *mmio, | |||
2495 | hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0); | 2534 | hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0); |
2496 | int fix_phy_mode4 = | 2535 | int fix_phy_mode4 = |
2497 | hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0); | 2536 | hp_flags & (MV_HP_ERRATA_60X1B2 | MV_HP_ERRATA_60X1C0); |
2498 | u32 m2, tmp; | 2537 | u32 m2, m3; |
2499 | 2538 | ||
2500 | if (fix_phy_mode2) { | 2539 | if (fix_phy_mode2) { |
2501 | m2 = readl(port_mmio + PHY_MODE2); | 2540 | m2 = readl(port_mmio + PHY_MODE2); |
@@ -2512,28 +2551,37 @@ static void mv6_phy_errata(struct mv_host_priv *hpriv, void __iomem *mmio, | |||
2512 | udelay(200); | 2551 | udelay(200); |
2513 | } | 2552 | } |
2514 | 2553 | ||
2515 | /* who knows what this magic does */ | 2554 | /* |
2516 | tmp = readl(port_mmio + PHY_MODE3); | 2555 | * Gen-II/IIe PHY_MODE3 errata RM#2: |
2517 | tmp &= ~0x7F800000; | 2556 | * Achieves better receiver noise performance than the h/w default: |
2518 | tmp |= 0x2A800000; | 2557 | */ |
2519 | writel(tmp, port_mmio + PHY_MODE3); | 2558 | m3 = readl(port_mmio + PHY_MODE3); |
2559 | m3 = (m3 & 0x1f) | (0x5555601 << 5); | ||
2560 | |||
2561 | /* Guideline 88F5182 (GL# SATA-S11) */ | ||
2562 | if (IS_SOC(hpriv)) | ||
2563 | m3 &= ~0x1c; | ||
2520 | 2564 | ||
2521 | if (fix_phy_mode4) { | 2565 | if (fix_phy_mode4) { |
2522 | u32 m4; | 2566 | u32 m4; |
2523 | 2567 | ||
2524 | m4 = readl(port_mmio + PHY_MODE4); | 2568 | m4 = readl(port_mmio + PHY_MODE4); |
2525 | 2569 | ||
2526 | if (hp_flags & MV_HP_ERRATA_60X1B2) | ||
2527 | tmp = readl(port_mmio + PHY_MODE3); | ||
2528 | |||
2529 | /* workaround for errata FEr SATA#10 (part 1) */ | 2570 | /* workaround for errata FEr SATA#10 (part 1) */ |
2530 | m4 = (m4 & ~(1 << 1)) | (1 << 0); | 2571 | m4 = (m4 & ~(1 << 1)) | (1 << 0); |
2531 | 2572 | ||
2532 | writel(m4, port_mmio + PHY_MODE4); | 2573 | /* enforce bit restrictions on GenIIe devices */ |
2574 | if (IS_GEN_IIE(hpriv)) | ||
2575 | m4 = (m4 & ~0x5DE3FFFC) | (1 << 2); | ||
2533 | 2576 | ||
2534 | if (hp_flags & MV_HP_ERRATA_60X1B2) | 2577 | writel(m4, port_mmio + PHY_MODE4); |
2535 | writel(tmp, port_mmio + PHY_MODE3); | ||
2536 | } | 2578 | } |
2579 | /* | ||
2580 | * Workaround for 60x1-B2 errata SATA#13: | ||
2581 | * Any write to PHY_MODE4 (above) may corrupt PHY_MODE3, | ||
2582 | * so we must always rewrite PHY_MODE3 after PHY_MODE4. | ||
2583 | */ | ||
2584 | writel(m3, port_mmio + PHY_MODE3); | ||
2537 | 2585 | ||
2538 | /* Revert values of pre-emphasis and signal amps to the saved ones */ | 2586 | /* Revert values of pre-emphasis and signal amps to the saved ones */ |
2539 | m2 = readl(port_mmio + PHY_MODE2); | 2587 | m2 = readl(port_mmio + PHY_MODE2); |
@@ -2728,6 +2776,7 @@ static int mv_hardreset(struct ata_link *link, unsigned int *class, | |||
2728 | 2776 | ||
2729 | rc = sata_link_hardreset(link, timing, deadline + extra, | 2777 | rc = sata_link_hardreset(link, timing, deadline + extra, |
2730 | &online, NULL); | 2778 | &online, NULL); |
2779 | rc = online ? -EAGAIN : rc; | ||
2731 | if (rc) | 2780 | if (rc) |
2732 | return rc; | 2781 | return rc; |
2733 | sata_scr_read(link, SCR_STATUS, &sstatus); | 2782 | sata_scr_read(link, SCR_STATUS, &sstatus); |
@@ -2744,32 +2793,18 @@ static int mv_hardreset(struct ata_link *link, unsigned int *class, | |||
2744 | 2793 | ||
2745 | static void mv_eh_freeze(struct ata_port *ap) | 2794 | static void mv_eh_freeze(struct ata_port *ap) |
2746 | { | 2795 | { |
2747 | struct mv_host_priv *hpriv = ap->host->private_data; | ||
2748 | unsigned int shift, hardport, port = ap->port_no; | ||
2749 | u32 main_irq_mask; | ||
2750 | |||
2751 | /* FIXME: handle coalescing completion events properly */ | ||
2752 | |||
2753 | mv_stop_edma(ap); | 2796 | mv_stop_edma(ap); |
2754 | MV_PORT_TO_SHIFT_AND_HARDPORT(port, shift, hardport); | 2797 | mv_enable_port_irqs(ap, 0); |
2755 | |||
2756 | /* disable assertion of portN err, done events */ | ||
2757 | main_irq_mask = readl(hpriv->main_irq_mask_addr); | ||
2758 | main_irq_mask &= ~((DONE_IRQ | ERR_IRQ) << shift); | ||
2759 | writelfl(main_irq_mask, hpriv->main_irq_mask_addr); | ||
2760 | } | 2798 | } |
2761 | 2799 | ||
2762 | static void mv_eh_thaw(struct ata_port *ap) | 2800 | static void mv_eh_thaw(struct ata_port *ap) |
2763 | { | 2801 | { |
2764 | struct mv_host_priv *hpriv = ap->host->private_data; | 2802 | struct mv_host_priv *hpriv = ap->host->private_data; |
2765 | unsigned int shift, hardport, port = ap->port_no; | 2803 | unsigned int port = ap->port_no; |
2804 | unsigned int hardport = mv_hardport_from_port(port); | ||
2766 | void __iomem *hc_mmio = mv_hc_base_from_port(hpriv->base, port); | 2805 | void __iomem *hc_mmio = mv_hc_base_from_port(hpriv->base, port); |
2767 | void __iomem *port_mmio = mv_ap_base(ap); | 2806 | void __iomem *port_mmio = mv_ap_base(ap); |
2768 | u32 main_irq_mask, hc_irq_cause; | 2807 | u32 hc_irq_cause; |
2769 | |||
2770 | /* FIXME: handle coalescing completion events properly */ | ||
2771 | |||
2772 | MV_PORT_TO_SHIFT_AND_HARDPORT(port, shift, hardport); | ||
2773 | 2808 | ||
2774 | /* clear EDMA errors on this port */ | 2809 | /* clear EDMA errors on this port */ |
2775 | writel(0, port_mmio + EDMA_ERR_IRQ_CAUSE_OFS); | 2810 | writel(0, port_mmio + EDMA_ERR_IRQ_CAUSE_OFS); |
@@ -2779,10 +2814,7 @@ static void mv_eh_thaw(struct ata_port *ap) | |||
2779 | hc_irq_cause &= ~((DEV_IRQ | DMA_IRQ) << hardport); | 2814 | hc_irq_cause &= ~((DEV_IRQ | DMA_IRQ) << hardport); |
2780 | writelfl(hc_irq_cause, hc_mmio + HC_IRQ_CAUSE_OFS); | 2815 | writelfl(hc_irq_cause, hc_mmio + HC_IRQ_CAUSE_OFS); |
2781 | 2816 | ||
2782 | /* enable assertion of portN err, done events */ | 2817 | mv_enable_port_irqs(ap, ERR_IRQ); |
2783 | main_irq_mask = readl(hpriv->main_irq_mask_addr); | ||
2784 | main_irq_mask |= ((DONE_IRQ | ERR_IRQ) << shift); | ||
2785 | writelfl(main_irq_mask, hpriv->main_irq_mask_addr); | ||
2786 | } | 2818 | } |
2787 | 2819 | ||
2788 | /** | 2820 | /** |
@@ -2840,7 +2872,7 @@ static unsigned int mv_in_pcix_mode(struct ata_host *host) | |||
2840 | void __iomem *mmio = hpriv->base; | 2872 | void __iomem *mmio = hpriv->base; |
2841 | u32 reg; | 2873 | u32 reg; |
2842 | 2874 | ||
2843 | if (!HAS_PCI(host) || !IS_PCIE(hpriv)) | 2875 | if (IS_SOC(hpriv) || !IS_PCIE(hpriv)) |
2844 | return 0; /* not PCI-X capable */ | 2876 | return 0; /* not PCI-X capable */ |
2845 | reg = readl(mmio + MV_PCI_MODE_OFS); | 2877 | reg = readl(mmio + MV_PCI_MODE_OFS); |
2846 | if ((reg & MV_PCI_MODE_MASK) == 0) | 2878 | if ((reg & MV_PCI_MODE_MASK) == 0) |
@@ -2967,10 +2999,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx) | |||
2967 | hp_flags |= MV_HP_CUT_THROUGH; | 2999 | hp_flags |= MV_HP_CUT_THROUGH; |
2968 | 3000 | ||
2969 | switch (pdev->revision) { | 3001 | switch (pdev->revision) { |
2970 | case 0x0: | 3002 | case 0x2: /* Rev.B0: the first/only public release */ |
2971 | hp_flags |= MV_HP_ERRATA_XX42A0; | ||
2972 | break; | ||
2973 | case 0x1: | ||
2974 | hp_flags |= MV_HP_ERRATA_60X1C0; | 3003 | hp_flags |= MV_HP_ERRATA_60X1C0; |
2975 | break; | 3004 | break; |
2976 | default: | 3005 | default: |
@@ -2982,7 +3011,7 @@ static int mv_chip_id(struct ata_host *host, unsigned int board_idx) | |||
2982 | break; | 3011 | break; |
2983 | case chip_soc: | 3012 | case chip_soc: |
2984 | hpriv->ops = &mv_soc_ops; | 3013 | hpriv->ops = &mv_soc_ops; |
2985 | hp_flags |= MV_HP_ERRATA_60X1C0; | 3014 | hp_flags |= MV_HP_FLAG_SOC | MV_HP_ERRATA_60X1C0; |
2986 | break; | 3015 | break; |
2987 | 3016 | ||
2988 | default: | 3017 | default: |
@@ -3026,16 +3055,16 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx) | |||
3026 | if (rc) | 3055 | if (rc) |
3027 | goto done; | 3056 | goto done; |
3028 | 3057 | ||
3029 | if (HAS_PCI(host)) { | 3058 | if (IS_SOC(hpriv)) { |
3030 | hpriv->main_irq_cause_addr = mmio + PCI_HC_MAIN_IRQ_CAUSE_OFS; | ||
3031 | hpriv->main_irq_mask_addr = mmio + PCI_HC_MAIN_IRQ_MASK_OFS; | ||
3032 | } else { | ||
3033 | hpriv->main_irq_cause_addr = mmio + SOC_HC_MAIN_IRQ_CAUSE_OFS; | 3059 | hpriv->main_irq_cause_addr = mmio + SOC_HC_MAIN_IRQ_CAUSE_OFS; |
3034 | hpriv->main_irq_mask_addr = mmio + SOC_HC_MAIN_IRQ_MASK_OFS; | 3060 | hpriv->main_irq_mask_addr = mmio + SOC_HC_MAIN_IRQ_MASK_OFS; |
3061 | } else { | ||
3062 | hpriv->main_irq_cause_addr = mmio + PCI_HC_MAIN_IRQ_CAUSE_OFS; | ||
3063 | hpriv->main_irq_mask_addr = mmio + PCI_HC_MAIN_IRQ_MASK_OFS; | ||
3035 | } | 3064 | } |
3036 | 3065 | ||
3037 | /* global interrupt mask: 0 == mask everything */ | 3066 | /* global interrupt mask: 0 == mask everything */ |
3038 | writel(0, hpriv->main_irq_mask_addr); | 3067 | mv_set_main_irq_mask(host, ~0, 0); |
3039 | 3068 | ||
3040 | n_hc = mv_get_hc_count(host->ports[0]->flags); | 3069 | n_hc = mv_get_hc_count(host->ports[0]->flags); |
3041 | 3070 | ||
@@ -3057,7 +3086,7 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx) | |||
3057 | mv_port_init(&ap->ioaddr, port_mmio); | 3086 | mv_port_init(&ap->ioaddr, port_mmio); |
3058 | 3087 | ||
3059 | #ifdef CONFIG_PCI | 3088 | #ifdef CONFIG_PCI |
3060 | if (HAS_PCI(host)) { | 3089 | if (!IS_SOC(hpriv)) { |
3061 | unsigned int offset = port_mmio - mmio; | 3090 | unsigned int offset = port_mmio - mmio; |
3062 | ata_port_pbar_desc(ap, MV_PRIMARY_BAR, -1, "mmio"); | 3091 | ata_port_pbar_desc(ap, MV_PRIMARY_BAR, -1, "mmio"); |
3063 | ata_port_pbar_desc(ap, MV_PRIMARY_BAR, offset, "port"); | 3092 | ata_port_pbar_desc(ap, MV_PRIMARY_BAR, offset, "port"); |
@@ -3077,31 +3106,18 @@ static int mv_init_host(struct ata_host *host, unsigned int board_idx) | |||
3077 | writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS); | 3106 | writelfl(0, hc_mmio + HC_IRQ_CAUSE_OFS); |
3078 | } | 3107 | } |
3079 | 3108 | ||
3080 | if (HAS_PCI(host)) { | 3109 | if (!IS_SOC(hpriv)) { |
3081 | /* Clear any currently outstanding host interrupt conditions */ | 3110 | /* Clear any currently outstanding host interrupt conditions */ |
3082 | writelfl(0, mmio + hpriv->irq_cause_ofs); | 3111 | writelfl(0, mmio + hpriv->irq_cause_ofs); |
3083 | 3112 | ||
3084 | /* and unmask interrupt generation for host regs */ | 3113 | /* and unmask interrupt generation for host regs */ |
3085 | writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs); | 3114 | writelfl(hpriv->unmask_all_irqs, mmio + hpriv->irq_mask_ofs); |
3086 | if (IS_GEN_I(hpriv)) | 3115 | |
3087 | writelfl(~HC_MAIN_MASKED_IRQS_5, | 3116 | /* |
3088 | hpriv->main_irq_mask_addr); | 3117 | * enable only global host interrupts for now. |
3089 | else | 3118 | * The per-port interrupts get done later as ports are set up. |
3090 | writelfl(~HC_MAIN_MASKED_IRQS, | 3119 | */ |
3091 | hpriv->main_irq_mask_addr); | 3120 | mv_set_main_irq_mask(host, 0, PCI_ERR); |
3092 | |||
3093 | VPRINTK("HC MAIN IRQ cause/mask=0x%08x/0x%08x " | ||
3094 | "PCI int cause/mask=0x%08x/0x%08x\n", | ||
3095 | readl(hpriv->main_irq_cause_addr), | ||
3096 | readl(hpriv->main_irq_mask_addr), | ||
3097 | readl(mmio + hpriv->irq_cause_ofs), | ||
3098 | readl(mmio + hpriv->irq_mask_ofs)); | ||
3099 | } else { | ||
3100 | writelfl(~HC_MAIN_MASKED_IRQS_SOC, | ||
3101 | hpriv->main_irq_mask_addr); | ||
3102 | VPRINTK("HC MAIN IRQ cause/mask=0x%08x/0x%08x\n", | ||
3103 | readl(hpriv->main_irq_cause_addr), | ||
3104 | readl(hpriv->main_irq_mask_addr)); | ||
3105 | } | 3121 | } |
3106 | done: | 3122 | done: |
3107 | return rc; | 3123 | return rc; |
diff --git a/drivers/ata/sata_promise.c b/drivers/ata/sata_promise.c index 5a10dc5048ad..030665ba76b7 100644 --- a/drivers/ata/sata_promise.c +++ b/drivers/ata/sata_promise.c | |||
@@ -53,7 +53,15 @@ enum { | |||
53 | PDC_MMIO_BAR = 3, | 53 | PDC_MMIO_BAR = 3, |
54 | PDC_MAX_PRD = LIBATA_MAX_PRD - 1, /* -1 for ASIC PRD bug workaround */ | 54 | PDC_MAX_PRD = LIBATA_MAX_PRD - 1, /* -1 for ASIC PRD bug workaround */ |
55 | 55 | ||
56 | /* register offsets */ | 56 | /* host register offsets (from host->iomap[PDC_MMIO_BAR]) */ |
57 | PDC_INT_SEQMASK = 0x40, /* Mask of asserted SEQ INTs */ | ||
58 | PDC_FLASH_CTL = 0x44, /* Flash control register */ | ||
59 | PDC_SATA_PLUG_CSR = 0x6C, /* SATA Plug control/status reg */ | ||
60 | PDC2_SATA_PLUG_CSR = 0x60, /* SATAII Plug control/status reg */ | ||
61 | PDC_TBG_MODE = 0x41C, /* TBG mode (not SATAII) */ | ||
62 | PDC_SLEW_CTL = 0x470, /* slew rate control reg (not SATAII) */ | ||
63 | |||
64 | /* per-port ATA register offsets (from ap->ioaddr.cmd_addr) */ | ||
57 | PDC_FEATURE = 0x04, /* Feature/Error reg (per port) */ | 65 | PDC_FEATURE = 0x04, /* Feature/Error reg (per port) */ |
58 | PDC_SECTOR_COUNT = 0x08, /* Sector count reg (per port) */ | 66 | PDC_SECTOR_COUNT = 0x08, /* Sector count reg (per port) */ |
59 | PDC_SECTOR_NUMBER = 0x0C, /* Sector number reg (per port) */ | 67 | PDC_SECTOR_NUMBER = 0x0C, /* Sector number reg (per port) */ |
@@ -63,14 +71,11 @@ enum { | |||
63 | PDC_COMMAND = 0x1C, /* Command/status reg (per port) */ | 71 | PDC_COMMAND = 0x1C, /* Command/status reg (per port) */ |
64 | PDC_ALTSTATUS = 0x38, /* Alternate-status/device-control reg (per port) */ | 72 | PDC_ALTSTATUS = 0x38, /* Alternate-status/device-control reg (per port) */ |
65 | PDC_PKT_SUBMIT = 0x40, /* Command packet pointer addr */ | 73 | PDC_PKT_SUBMIT = 0x40, /* Command packet pointer addr */ |
66 | PDC_INT_SEQMASK = 0x40, /* Mask of asserted SEQ INTs */ | ||
67 | PDC_FLASH_CTL = 0x44, /* Flash control register */ | ||
68 | PDC_GLOBAL_CTL = 0x48, /* Global control/status (per port) */ | 74 | PDC_GLOBAL_CTL = 0x48, /* Global control/status (per port) */ |
69 | PDC_CTLSTAT = 0x60, /* IDE control and status (per port) */ | 75 | PDC_CTLSTAT = 0x60, /* IDE control and status (per port) */ |
70 | PDC_SATA_PLUG_CSR = 0x6C, /* SATA Plug control/status reg */ | 76 | |
71 | PDC2_SATA_PLUG_CSR = 0x60, /* SATAII Plug control/status reg */ | 77 | /* per-port SATA register offsets (from ap->ioaddr.scr_addr) */ |
72 | PDC_TBG_MODE = 0x41C, /* TBG mode (not SATAII) */ | 78 | PDC_PHYMODE4 = 0x14, |
73 | PDC_SLEW_CTL = 0x470, /* slew rate control reg (not SATAII) */ | ||
74 | 79 | ||
75 | /* PDC_GLOBAL_CTL bit definitions */ | 80 | /* PDC_GLOBAL_CTL bit definitions */ |
76 | PDC_PH_ERR = (1 << 8), /* PCI error while loading packet */ | 81 | PDC_PH_ERR = (1 << 8), /* PCI error while loading packet */ |
@@ -134,7 +139,7 @@ struct pdc_port_priv { | |||
134 | 139 | ||
135 | static int pdc_sata_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val); | 140 | static int pdc_sata_scr_read(struct ata_port *ap, unsigned int sc_reg, u32 *val); |
136 | static int pdc_sata_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val); | 141 | static int pdc_sata_scr_write(struct ata_port *ap, unsigned int sc_reg, u32 val); |
137 | static int pdc_ata_init_one (struct pci_dev *pdev, const struct pci_device_id *ent); | 142 | static int pdc_ata_init_one(struct pci_dev *pdev, const struct pci_device_id *ent); |
138 | static int pdc_common_port_start(struct ata_port *ap); | 143 | static int pdc_common_port_start(struct ata_port *ap); |
139 | static int pdc_sata_port_start(struct ata_port *ap); | 144 | static int pdc_sata_port_start(struct ata_port *ap); |
140 | static void pdc_qc_prep(struct ata_queued_cmd *qc); | 145 | static void pdc_qc_prep(struct ata_queued_cmd *qc); |
@@ -332,12 +337,12 @@ static int pdc_sata_port_start(struct ata_port *ap) | |||
332 | 337 | ||
333 | /* fix up PHYMODE4 align timing */ | 338 | /* fix up PHYMODE4 align timing */ |
334 | if (ap->flags & PDC_FLAG_GEN_II) { | 339 | if (ap->flags & PDC_FLAG_GEN_II) { |
335 | void __iomem *mmio = ap->ioaddr.scr_addr; | 340 | void __iomem *sata_mmio = ap->ioaddr.scr_addr; |
336 | unsigned int tmp; | 341 | unsigned int tmp; |
337 | 342 | ||
338 | tmp = readl(mmio + 0x014); | 343 | tmp = readl(sata_mmio + PDC_PHYMODE4); |
339 | tmp = (tmp & ~3) | 1; /* set bits 1:0 = 0:1 */ | 344 | tmp = (tmp & ~3) | 1; /* set bits 1:0 = 0:1 */ |
340 | writel(tmp, mmio + 0x014); | 345 | writel(tmp, sata_mmio + PDC_PHYMODE4); |
341 | } | 346 | } |
342 | 347 | ||
343 | return 0; | 348 | return 0; |
@@ -345,32 +350,32 @@ static int pdc_sata_port_start(struct ata_port *ap) | |||
345 | 350 | ||
346 | static void pdc_reset_port(struct ata_port *ap) | 351 | static void pdc_reset_port(struct ata_port *ap) |
347 | { | 352 | { |
348 | void __iomem *mmio = ap->ioaddr.cmd_addr + PDC_CTLSTAT; | 353 | void __iomem *ata_ctlstat_mmio = ap->ioaddr.cmd_addr + PDC_CTLSTAT; |
349 | unsigned int i; | 354 | unsigned int i; |
350 | u32 tmp; | 355 | u32 tmp; |
351 | 356 | ||
352 | for (i = 11; i > 0; i--) { | 357 | for (i = 11; i > 0; i--) { |
353 | tmp = readl(mmio); | 358 | tmp = readl(ata_ctlstat_mmio); |
354 | if (tmp & PDC_RESET) | 359 | if (tmp & PDC_RESET) |
355 | break; | 360 | break; |
356 | 361 | ||
357 | udelay(100); | 362 | udelay(100); |
358 | 363 | ||
359 | tmp |= PDC_RESET; | 364 | tmp |= PDC_RESET; |
360 | writel(tmp, mmio); | 365 | writel(tmp, ata_ctlstat_mmio); |
361 | } | 366 | } |
362 | 367 | ||
363 | tmp &= ~PDC_RESET; | 368 | tmp &= ~PDC_RESET; |
364 | writel(tmp, mmio); | 369 | writel(tmp, ata_ctlstat_mmio); |
365 | readl(mmio); /* flush */ | 370 | readl(ata_ctlstat_mmio); /* flush */ |
366 | } | 371 | } |
367 | 372 | ||
368 | static int pdc_pata_cable_detect(struct ata_port *ap) | 373 | static int pdc_pata_cable_detect(struct ata_port *ap) |
369 | { | 374 | { |
370 | u8 tmp; | 375 | u8 tmp; |
371 | void __iomem *mmio = ap->ioaddr.cmd_addr + PDC_CTLSTAT + 0x03; | 376 | void __iomem *ata_mmio = ap->ioaddr.cmd_addr; |
372 | 377 | ||
373 | tmp = readb(mmio); | 378 | tmp = readb(ata_mmio + PDC_CTLSTAT + 3); |
374 | if (tmp & 0x01) | 379 | if (tmp & 0x01) |
375 | return ATA_CBL_PATA40; | 380 | return ATA_CBL_PATA40; |
376 | return ATA_CBL_PATA80; | 381 | return ATA_CBL_PATA80; |
@@ -557,31 +562,25 @@ static void pdc_qc_prep(struct ata_queued_cmd *qc) | |||
557 | switch (qc->tf.protocol) { | 562 | switch (qc->tf.protocol) { |
558 | case ATA_PROT_DMA: | 563 | case ATA_PROT_DMA: |
559 | pdc_fill_sg(qc); | 564 | pdc_fill_sg(qc); |
560 | /* fall through */ | 565 | /*FALLTHROUGH*/ |
561 | |||
562 | case ATA_PROT_NODATA: | 566 | case ATA_PROT_NODATA: |
563 | i = pdc_pkt_header(&qc->tf, qc->ap->prd_dma, | 567 | i = pdc_pkt_header(&qc->tf, qc->ap->prd_dma, |
564 | qc->dev->devno, pp->pkt); | 568 | qc->dev->devno, pp->pkt); |
565 | |||
566 | if (qc->tf.flags & ATA_TFLAG_LBA48) | 569 | if (qc->tf.flags & ATA_TFLAG_LBA48) |
567 | i = pdc_prep_lba48(&qc->tf, pp->pkt, i); | 570 | i = pdc_prep_lba48(&qc->tf, pp->pkt, i); |
568 | else | 571 | else |
569 | i = pdc_prep_lba28(&qc->tf, pp->pkt, i); | 572 | i = pdc_prep_lba28(&qc->tf, pp->pkt, i); |
570 | |||
571 | pdc_pkt_footer(&qc->tf, pp->pkt, i); | 573 | pdc_pkt_footer(&qc->tf, pp->pkt, i); |
572 | break; | 574 | break; |
573 | |||
574 | case ATAPI_PROT_PIO: | 575 | case ATAPI_PROT_PIO: |
575 | pdc_fill_sg(qc); | 576 | pdc_fill_sg(qc); |
576 | break; | 577 | break; |
577 | |||
578 | case ATAPI_PROT_DMA: | 578 | case ATAPI_PROT_DMA: |
579 | pdc_fill_sg(qc); | 579 | pdc_fill_sg(qc); |
580 | /*FALLTHROUGH*/ | 580 | /*FALLTHROUGH*/ |
581 | case ATAPI_PROT_NODATA: | 581 | case ATAPI_PROT_NODATA: |
582 | pdc_atapi_pkt(qc); | 582 | pdc_atapi_pkt(qc); |
583 | break; | 583 | break; |
584 | |||
585 | default: | 584 | default: |
586 | break; | 585 | break; |
587 | } | 586 | } |
@@ -611,7 +610,7 @@ static unsigned int pdc_sata_ata_port_to_ata_no(const struct ata_port *ap) | |||
611 | unsigned int nr_ports = pdc_sata_nr_ports(ap); | 610 | unsigned int nr_ports = pdc_sata_nr_ports(ap); |
612 | unsigned int i; | 611 | unsigned int i; |
613 | 612 | ||
614 | for(i = 0; i < nr_ports && host->ports[i] != ap; ++i) | 613 | for (i = 0; i < nr_ports && host->ports[i] != ap; ++i) |
615 | ; | 614 | ; |
616 | BUG_ON(i >= nr_ports); | 615 | BUG_ON(i >= nr_ports); |
617 | return pdc_port_no_to_ata_no(i, pdc_is_sataii_tx4(ap->flags)); | 616 | return pdc_port_no_to_ata_no(i, pdc_is_sataii_tx4(ap->flags)); |
@@ -624,14 +623,14 @@ static unsigned int pdc_sata_hotplug_offset(const struct ata_port *ap) | |||
624 | 623 | ||
625 | static void pdc_freeze(struct ata_port *ap) | 624 | static void pdc_freeze(struct ata_port *ap) |
626 | { | 625 | { |
627 | void __iomem *mmio = ap->ioaddr.cmd_addr; | 626 | void __iomem *ata_mmio = ap->ioaddr.cmd_addr; |
628 | u32 tmp; | 627 | u32 tmp; |
629 | 628 | ||
630 | tmp = readl(mmio + PDC_CTLSTAT); | 629 | tmp = readl(ata_mmio + PDC_CTLSTAT); |
631 | tmp |= PDC_IRQ_DISABLE; | 630 | tmp |= PDC_IRQ_DISABLE; |
632 | tmp &= ~PDC_DMA_ENABLE; | 631 | tmp &= ~PDC_DMA_ENABLE; |
633 | writel(tmp, mmio + PDC_CTLSTAT); | 632 | writel(tmp, ata_mmio + PDC_CTLSTAT); |
634 | readl(mmio + PDC_CTLSTAT); /* flush */ | 633 | readl(ata_mmio + PDC_CTLSTAT); /* flush */ |
635 | } | 634 | } |
636 | 635 | ||
637 | static void pdc_sata_freeze(struct ata_port *ap) | 636 | static void pdc_sata_freeze(struct ata_port *ap) |
@@ -659,17 +658,17 @@ static void pdc_sata_freeze(struct ata_port *ap) | |||
659 | 658 | ||
660 | static void pdc_thaw(struct ata_port *ap) | 659 | static void pdc_thaw(struct ata_port *ap) |
661 | { | 660 | { |
662 | void __iomem *mmio = ap->ioaddr.cmd_addr; | 661 | void __iomem *ata_mmio = ap->ioaddr.cmd_addr; |
663 | u32 tmp; | 662 | u32 tmp; |
664 | 663 | ||
665 | /* clear IRQ */ | 664 | /* clear IRQ */ |
666 | readl(mmio + PDC_INT_SEQMASK); | 665 | readl(ata_mmio + PDC_COMMAND); |
667 | 666 | ||
668 | /* turn IRQ back on */ | 667 | /* turn IRQ back on */ |
669 | tmp = readl(mmio + PDC_CTLSTAT); | 668 | tmp = readl(ata_mmio + PDC_CTLSTAT); |
670 | tmp &= ~PDC_IRQ_DISABLE; | 669 | tmp &= ~PDC_IRQ_DISABLE; |
671 | writel(tmp, mmio + PDC_CTLSTAT); | 670 | writel(tmp, ata_mmio + PDC_CTLSTAT); |
672 | readl(mmio + PDC_CTLSTAT); /* flush */ | 671 | readl(ata_mmio + PDC_CTLSTAT); /* flush */ |
673 | } | 672 | } |
674 | 673 | ||
675 | static void pdc_sata_thaw(struct ata_port *ap) | 674 | static void pdc_sata_thaw(struct ata_port *ap) |
@@ -743,11 +742,11 @@ static void pdc_error_intr(struct ata_port *ap, struct ata_queued_cmd *qc, | |||
743 | ata_port_abort(ap); | 742 | ata_port_abort(ap); |
744 | } | 743 | } |
745 | 744 | ||
746 | static inline unsigned int pdc_host_intr(struct ata_port *ap, | 745 | static unsigned int pdc_host_intr(struct ata_port *ap, |
747 | struct ata_queued_cmd *qc) | 746 | struct ata_queued_cmd *qc) |
748 | { | 747 | { |
749 | unsigned int handled = 0; | 748 | unsigned int handled = 0; |
750 | void __iomem *port_mmio = ap->ioaddr.cmd_addr; | 749 | void __iomem *ata_mmio = ap->ioaddr.cmd_addr; |
751 | u32 port_status, err_mask; | 750 | u32 port_status, err_mask; |
752 | 751 | ||
753 | err_mask = PDC_ERR_MASK; | 752 | err_mask = PDC_ERR_MASK; |
@@ -755,7 +754,7 @@ static inline unsigned int pdc_host_intr(struct ata_port *ap, | |||
755 | err_mask &= ~PDC1_ERR_MASK; | 754 | err_mask &= ~PDC1_ERR_MASK; |
756 | else | 755 | else |
757 | err_mask &= ~PDC2_ERR_MASK; | 756 | err_mask &= ~PDC2_ERR_MASK; |
758 | port_status = readl(port_mmio + PDC_GLOBAL_CTL); | 757 | port_status = readl(ata_mmio + PDC_GLOBAL_CTL); |
759 | if (unlikely(port_status & err_mask)) { | 758 | if (unlikely(port_status & err_mask)) { |
760 | pdc_error_intr(ap, qc, port_status, err_mask); | 759 | pdc_error_intr(ap, qc, port_status, err_mask); |
761 | return 1; | 760 | return 1; |
@@ -770,7 +769,6 @@ static inline unsigned int pdc_host_intr(struct ata_port *ap, | |||
770 | ata_qc_complete(qc); | 769 | ata_qc_complete(qc); |
771 | handled = 1; | 770 | handled = 1; |
772 | break; | 771 | break; |
773 | |||
774 | default: | 772 | default: |
775 | ap->stats.idle_irq++; | 773 | ap->stats.idle_irq++; |
776 | break; | 774 | break; |
@@ -781,10 +779,9 @@ static inline unsigned int pdc_host_intr(struct ata_port *ap, | |||
781 | 779 | ||
782 | static void pdc_irq_clear(struct ata_port *ap) | 780 | static void pdc_irq_clear(struct ata_port *ap) |
783 | { | 781 | { |
784 | struct ata_host *host = ap->host; | 782 | void __iomem *ata_mmio = ap->ioaddr.cmd_addr; |
785 | void __iomem *mmio = host->iomap[PDC_MMIO_BAR]; | ||
786 | 783 | ||
787 | readl(mmio + PDC_INT_SEQMASK); | 784 | readl(ata_mmio + PDC_COMMAND); |
788 | } | 785 | } |
789 | 786 | ||
790 | static irqreturn_t pdc_interrupt(int irq, void *dev_instance) | 787 | static irqreturn_t pdc_interrupt(int irq, void *dev_instance) |
@@ -794,7 +791,7 @@ static irqreturn_t pdc_interrupt(int irq, void *dev_instance) | |||
794 | u32 mask = 0; | 791 | u32 mask = 0; |
795 | unsigned int i, tmp; | 792 | unsigned int i, tmp; |
796 | unsigned int handled = 0; | 793 | unsigned int handled = 0; |
797 | void __iomem *mmio_base; | 794 | void __iomem *host_mmio; |
798 | unsigned int hotplug_offset, ata_no; | 795 | unsigned int hotplug_offset, ata_no; |
799 | u32 hotplug_status; | 796 | u32 hotplug_status; |
800 | int is_sataii_tx4; | 797 | int is_sataii_tx4; |
@@ -806,7 +803,7 @@ static irqreturn_t pdc_interrupt(int irq, void *dev_instance) | |||
806 | return IRQ_NONE; | 803 | return IRQ_NONE; |
807 | } | 804 | } |
808 | 805 | ||
809 | mmio_base = host->iomap[PDC_MMIO_BAR]; | 806 | host_mmio = host->iomap[PDC_MMIO_BAR]; |
810 | 807 | ||
811 | spin_lock(&host->lock); | 808 | spin_lock(&host->lock); |
812 | 809 | ||
@@ -815,26 +812,26 @@ static irqreturn_t pdc_interrupt(int irq, void *dev_instance) | |||
815 | hotplug_offset = PDC2_SATA_PLUG_CSR; | 812 | hotplug_offset = PDC2_SATA_PLUG_CSR; |
816 | else | 813 | else |
817 | hotplug_offset = PDC_SATA_PLUG_CSR; | 814 | hotplug_offset = PDC_SATA_PLUG_CSR; |
818 | hotplug_status = readl(mmio_base + hotplug_offset); | 815 | hotplug_status = readl(host_mmio + hotplug_offset); |
819 | if (hotplug_status & 0xff) | 816 | if (hotplug_status & 0xff) |
820 | writel(hotplug_status | 0xff, mmio_base + hotplug_offset); | 817 | writel(hotplug_status | 0xff, host_mmio + hotplug_offset); |
821 | hotplug_status &= 0xff; /* clear uninteresting bits */ | 818 | hotplug_status &= 0xff; /* clear uninteresting bits */ |
822 | 819 | ||
823 | /* reading should also clear interrupts */ | 820 | /* reading should also clear interrupts */ |
824 | mask = readl(mmio_base + PDC_INT_SEQMASK); | 821 | mask = readl(host_mmio + PDC_INT_SEQMASK); |
825 | 822 | ||
826 | if (mask == 0xffffffff && hotplug_status == 0) { | 823 | if (mask == 0xffffffff && hotplug_status == 0) { |
827 | VPRINTK("QUICK EXIT 2\n"); | 824 | VPRINTK("QUICK EXIT 2\n"); |
828 | goto done_irq; | 825 | goto done_irq; |
829 | } | 826 | } |
830 | 827 | ||
831 | mask &= 0xffff; /* only 16 tags possible */ | 828 | mask &= 0xffff; /* only 16 SEQIDs possible */ |
832 | if (mask == 0 && hotplug_status == 0) { | 829 | if (mask == 0 && hotplug_status == 0) { |
833 | VPRINTK("QUICK EXIT 3\n"); | 830 | VPRINTK("QUICK EXIT 3\n"); |
834 | goto done_irq; | 831 | goto done_irq; |
835 | } | 832 | } |
836 | 833 | ||
837 | writel(mask, mmio_base + PDC_INT_SEQMASK); | 834 | writel(mask, host_mmio + PDC_INT_SEQMASK); |
838 | 835 | ||
839 | is_sataii_tx4 = pdc_is_sataii_tx4(host->ports[0]->flags); | 836 | is_sataii_tx4 = pdc_is_sataii_tx4(host->ports[0]->flags); |
840 | 837 | ||
@@ -875,23 +872,24 @@ done_irq: | |||
875 | return IRQ_RETVAL(handled); | 872 | return IRQ_RETVAL(handled); |
876 | } | 873 | } |
877 | 874 | ||
878 | static inline void pdc_packet_start(struct ata_queued_cmd *qc) | 875 | static void pdc_packet_start(struct ata_queued_cmd *qc) |
879 | { | 876 | { |
880 | struct ata_port *ap = qc->ap; | 877 | struct ata_port *ap = qc->ap; |
881 | struct pdc_port_priv *pp = ap->private_data; | 878 | struct pdc_port_priv *pp = ap->private_data; |
882 | void __iomem *mmio = ap->host->iomap[PDC_MMIO_BAR]; | 879 | void __iomem *host_mmio = ap->host->iomap[PDC_MMIO_BAR]; |
880 | void __iomem *ata_mmio = ap->ioaddr.cmd_addr; | ||
883 | unsigned int port_no = ap->port_no; | 881 | unsigned int port_no = ap->port_no; |
884 | u8 seq = (u8) (port_no + 1); | 882 | u8 seq = (u8) (port_no + 1); |
885 | 883 | ||
886 | VPRINTK("ENTER, ap %p\n", ap); | 884 | VPRINTK("ENTER, ap %p\n", ap); |
887 | 885 | ||
888 | writel(0x00000001, mmio + (seq * 4)); | 886 | writel(0x00000001, host_mmio + (seq * 4)); |
889 | readl(mmio + (seq * 4)); /* flush */ | 887 | readl(host_mmio + (seq * 4)); /* flush */ |
890 | 888 | ||
891 | pp->pkt[2] = seq; | 889 | pp->pkt[2] = seq; |
892 | wmb(); /* flush PRD, pkt writes */ | 890 | wmb(); /* flush PRD, pkt writes */ |
893 | writel(pp->pkt_dma, ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT); | 891 | writel(pp->pkt_dma, ata_mmio + PDC_PKT_SUBMIT); |
894 | readl(ap->ioaddr.cmd_addr + PDC_PKT_SUBMIT); /* flush */ | 892 | readl(ata_mmio + PDC_PKT_SUBMIT); /* flush */ |
895 | } | 893 | } |
896 | 894 | ||
897 | static unsigned int pdc_qc_issue(struct ata_queued_cmd *qc) | 895 | static unsigned int pdc_qc_issue(struct ata_queued_cmd *qc) |
@@ -909,11 +907,9 @@ static unsigned int pdc_qc_issue(struct ata_queued_cmd *qc) | |||
909 | case ATA_PROT_DMA: | 907 | case ATA_PROT_DMA: |
910 | pdc_packet_start(qc); | 908 | pdc_packet_start(qc); |
911 | return 0; | 909 | return 0; |
912 | |||
913 | default: | 910 | default: |
914 | break; | 911 | break; |
915 | } | 912 | } |
916 | |||
917 | return ata_sff_qc_issue(qc); | 913 | return ata_sff_qc_issue(qc); |
918 | } | 914 | } |
919 | 915 | ||
@@ -987,7 +983,7 @@ static void pdc_ata_setup_port(struct ata_port *ap, | |||
987 | 983 | ||
988 | static void pdc_host_init(struct ata_host *host) | 984 | static void pdc_host_init(struct ata_host *host) |
989 | { | 985 | { |
990 | void __iomem *mmio = host->iomap[PDC_MMIO_BAR]; | 986 | void __iomem *host_mmio = host->iomap[PDC_MMIO_BAR]; |
991 | int is_gen2 = host->ports[0]->flags & PDC_FLAG_GEN_II; | 987 | int is_gen2 = host->ports[0]->flags & PDC_FLAG_GEN_II; |
992 | int hotplug_offset; | 988 | int hotplug_offset; |
993 | u32 tmp; | 989 | u32 tmp; |
@@ -1004,38 +1000,38 @@ static void pdc_host_init(struct ata_host *host) | |||
1004 | */ | 1000 | */ |
1005 | 1001 | ||
1006 | /* enable BMR_BURST, maybe change FIFO_SHD to 8 dwords */ | 1002 | /* enable BMR_BURST, maybe change FIFO_SHD to 8 dwords */ |
1007 | tmp = readl(mmio + PDC_FLASH_CTL); | 1003 | tmp = readl(host_mmio + PDC_FLASH_CTL); |
1008 | tmp |= 0x02000; /* bit 13 (enable bmr burst) */ | 1004 | tmp |= 0x02000; /* bit 13 (enable bmr burst) */ |
1009 | if (!is_gen2) | 1005 | if (!is_gen2) |
1010 | tmp |= 0x10000; /* bit 16 (fifo threshold at 8 dw) */ | 1006 | tmp |= 0x10000; /* bit 16 (fifo threshold at 8 dw) */ |
1011 | writel(tmp, mmio + PDC_FLASH_CTL); | 1007 | writel(tmp, host_mmio + PDC_FLASH_CTL); |
1012 | 1008 | ||
1013 | /* clear plug/unplug flags for all ports */ | 1009 | /* clear plug/unplug flags for all ports */ |
1014 | tmp = readl(mmio + hotplug_offset); | 1010 | tmp = readl(host_mmio + hotplug_offset); |
1015 | writel(tmp | 0xff, mmio + hotplug_offset); | 1011 | writel(tmp | 0xff, host_mmio + hotplug_offset); |
1016 | 1012 | ||
1017 | /* unmask plug/unplug ints */ | 1013 | /* unmask plug/unplug ints */ |
1018 | tmp = readl(mmio + hotplug_offset); | 1014 | tmp = readl(host_mmio + hotplug_offset); |
1019 | writel(tmp & ~0xff0000, mmio + hotplug_offset); | 1015 | writel(tmp & ~0xff0000, host_mmio + hotplug_offset); |
1020 | 1016 | ||
1021 | /* don't initialise TBG or SLEW on 2nd generation chips */ | 1017 | /* don't initialise TBG or SLEW on 2nd generation chips */ |
1022 | if (is_gen2) | 1018 | if (is_gen2) |
1023 | return; | 1019 | return; |
1024 | 1020 | ||
1025 | /* reduce TBG clock to 133 Mhz. */ | 1021 | /* reduce TBG clock to 133 Mhz. */ |
1026 | tmp = readl(mmio + PDC_TBG_MODE); | 1022 | tmp = readl(host_mmio + PDC_TBG_MODE); |
1027 | tmp &= ~0x30000; /* clear bit 17, 16*/ | 1023 | tmp &= ~0x30000; /* clear bit 17, 16*/ |
1028 | tmp |= 0x10000; /* set bit 17:16 = 0:1 */ | 1024 | tmp |= 0x10000; /* set bit 17:16 = 0:1 */ |
1029 | writel(tmp, mmio + PDC_TBG_MODE); | 1025 | writel(tmp, host_mmio + PDC_TBG_MODE); |
1030 | 1026 | ||
1031 | readl(mmio + PDC_TBG_MODE); /* flush */ | 1027 | readl(host_mmio + PDC_TBG_MODE); /* flush */ |
1032 | msleep(10); | 1028 | msleep(10); |
1033 | 1029 | ||
1034 | /* adjust slew rate control register. */ | 1030 | /* adjust slew rate control register. */ |
1035 | tmp = readl(mmio + PDC_SLEW_CTL); | 1031 | tmp = readl(host_mmio + PDC_SLEW_CTL); |
1036 | tmp &= 0xFFFFF03F; /* clear bit 11 ~ 6 */ | 1032 | tmp &= 0xFFFFF03F; /* clear bit 11 ~ 6 */ |
1037 | tmp |= 0x00000900; /* set bit 11-9 = 100b , bit 8-6 = 100 */ | 1033 | tmp |= 0x00000900; /* set bit 11-9 = 100b , bit 8-6 = 100 */ |
1038 | writel(tmp, mmio + PDC_SLEW_CTL); | 1034 | writel(tmp, host_mmio + PDC_SLEW_CTL); |
1039 | } | 1035 | } |
1040 | 1036 | ||
1041 | static int pdc_ata_init_one(struct pci_dev *pdev, | 1037 | static int pdc_ata_init_one(struct pci_dev *pdev, |
@@ -1045,7 +1041,7 @@ static int pdc_ata_init_one(struct pci_dev *pdev, | |||
1045 | const struct ata_port_info *pi = &pdc_port_info[ent->driver_data]; | 1041 | const struct ata_port_info *pi = &pdc_port_info[ent->driver_data]; |
1046 | const struct ata_port_info *ppi[PDC_MAX_PORTS]; | 1042 | const struct ata_port_info *ppi[PDC_MAX_PORTS]; |
1047 | struct ata_host *host; | 1043 | struct ata_host *host; |
1048 | void __iomem *base; | 1044 | void __iomem *host_mmio; |
1049 | int n_ports, i, rc; | 1045 | int n_ports, i, rc; |
1050 | int is_sataii_tx4; | 1046 | int is_sataii_tx4; |
1051 | 1047 | ||
@@ -1062,7 +1058,7 @@ static int pdc_ata_init_one(struct pci_dev *pdev, | |||
1062 | pcim_pin_device(pdev); | 1058 | pcim_pin_device(pdev); |
1063 | if (rc) | 1059 | if (rc) |
1064 | return rc; | 1060 | return rc; |
1065 | base = pcim_iomap_table(pdev)[PDC_MMIO_BAR]; | 1061 | host_mmio = pcim_iomap_table(pdev)[PDC_MMIO_BAR]; |
1066 | 1062 | ||
1067 | /* determine port configuration and setup host */ | 1063 | /* determine port configuration and setup host */ |
1068 | n_ports = 2; | 1064 | n_ports = 2; |
@@ -1072,7 +1068,7 @@ static int pdc_ata_init_one(struct pci_dev *pdev, | |||
1072 | ppi[i] = pi; | 1068 | ppi[i] = pi; |
1073 | 1069 | ||
1074 | if (pi->flags & PDC_FLAG_SATA_PATA) { | 1070 | if (pi->flags & PDC_FLAG_SATA_PATA) { |
1075 | u8 tmp = readb(base + PDC_FLASH_CTL+1); | 1071 | u8 tmp = readb(host_mmio + PDC_FLASH_CTL + 1); |
1076 | if (!(tmp & 0x80)) | 1072 | if (!(tmp & 0x80)) |
1077 | ppi[n_ports++] = pi + 1; | 1073 | ppi[n_ports++] = pi + 1; |
1078 | } | 1074 | } |
@@ -1088,13 +1084,13 @@ static int pdc_ata_init_one(struct pci_dev *pdev, | |||
1088 | for (i = 0; i < host->n_ports; i++) { | 1084 | for (i = 0; i < host->n_ports; i++) { |
1089 | struct ata_port *ap = host->ports[i]; | 1085 | struct ata_port *ap = host->ports[i]; |
1090 | unsigned int ata_no = pdc_port_no_to_ata_no(i, is_sataii_tx4); | 1086 | unsigned int ata_no = pdc_port_no_to_ata_no(i, is_sataii_tx4); |
1091 | unsigned int port_offset = 0x200 + ata_no * 0x80; | 1087 | unsigned int ata_offset = 0x200 + ata_no * 0x80; |
1092 | unsigned int scr_offset = 0x400 + ata_no * 0x100; | 1088 | unsigned int scr_offset = 0x400 + ata_no * 0x100; |
1093 | 1089 | ||
1094 | pdc_ata_setup_port(ap, base + port_offset, base + scr_offset); | 1090 | pdc_ata_setup_port(ap, host_mmio + ata_offset, host_mmio + scr_offset); |
1095 | 1091 | ||
1096 | ata_port_pbar_desc(ap, PDC_MMIO_BAR, -1, "mmio"); | 1092 | ata_port_pbar_desc(ap, PDC_MMIO_BAR, -1, "mmio"); |
1097 | ata_port_pbar_desc(ap, PDC_MMIO_BAR, port_offset, "port"); | 1093 | ata_port_pbar_desc(ap, PDC_MMIO_BAR, ata_offset, "ata"); |
1098 | } | 1094 | } |
1099 | 1095 | ||
1100 | /* initialize adapter */ | 1096 | /* initialize adapter */ |
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 27a110110077..8ee6b5b4ede7 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
@@ -899,14 +899,25 @@ static bool sil24_qc_fill_rtf(struct ata_queued_cmd *qc) | |||
899 | 899 | ||
900 | static void sil24_pmp_attach(struct ata_port *ap) | 900 | static void sil24_pmp_attach(struct ata_port *ap) |
901 | { | 901 | { |
902 | u32 *gscr = ap->link.device->gscr; | ||
903 | |||
902 | sil24_config_pmp(ap, 1); | 904 | sil24_config_pmp(ap, 1); |
903 | sil24_init_port(ap); | 905 | sil24_init_port(ap); |
906 | |||
907 | if (sata_pmp_gscr_vendor(gscr) == 0x11ab && | ||
908 | sata_pmp_gscr_devid(gscr) == 0x4140) { | ||
909 | ata_port_printk(ap, KERN_INFO, | ||
910 | "disabling NCQ support due to sil24-mv4140 quirk\n"); | ||
911 | ap->flags &= ~ATA_FLAG_NCQ; | ||
912 | } | ||
904 | } | 913 | } |
905 | 914 | ||
906 | static void sil24_pmp_detach(struct ata_port *ap) | 915 | static void sil24_pmp_detach(struct ata_port *ap) |
907 | { | 916 | { |
908 | sil24_init_port(ap); | 917 | sil24_init_port(ap); |
909 | sil24_config_pmp(ap, 0); | 918 | sil24_config_pmp(ap, 0); |
919 | |||
920 | ap->flags |= ATA_FLAG_NCQ; | ||
910 | } | 921 | } |
911 | 922 | ||
912 | static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, | 923 | static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, |
diff --git a/drivers/base/core.c b/drivers/base/core.c index 3eeac5a78581..422cfcad486d 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -760,6 +760,21 @@ static void device_remove_class_symlinks(struct device *dev) | |||
760 | } | 760 | } |
761 | 761 | ||
762 | /** | 762 | /** |
763 | * dev_set_name - set a device name | ||
764 | * @dev: device | ||
765 | */ | ||
766 | int dev_set_name(struct device *dev, const char *fmt, ...) | ||
767 | { | ||
768 | va_list vargs; | ||
769 | |||
770 | va_start(vargs, fmt); | ||
771 | vsnprintf(dev->bus_id, sizeof(dev->bus_id), fmt, vargs); | ||
772 | va_end(vargs); | ||
773 | return 0; | ||
774 | } | ||
775 | EXPORT_SYMBOL_GPL(dev_set_name); | ||
776 | |||
777 | /** | ||
763 | * device_add - add device to device hierarchy. | 778 | * device_add - add device to device hierarchy. |
764 | * @dev: device. | 779 | * @dev: device. |
765 | * | 780 | * |
@@ -1084,11 +1099,13 @@ static void device_create_release(struct device *dev) | |||
1084 | } | 1099 | } |
1085 | 1100 | ||
1086 | /** | 1101 | /** |
1087 | * device_create - creates a device and registers it with sysfs | 1102 | * device_create_vargs - creates a device and registers it with sysfs |
1088 | * @class: pointer to the struct class that this device should be registered to | 1103 | * @class: pointer to the struct class that this device should be registered to |
1089 | * @parent: pointer to the parent struct device of this new device, if any | 1104 | * @parent: pointer to the parent struct device of this new device, if any |
1090 | * @devt: the dev_t for the char device to be added | 1105 | * @devt: the dev_t for the char device to be added |
1106 | * @drvdata: the data to be added to the device for callbacks | ||
1091 | * @fmt: string for the device's name | 1107 | * @fmt: string for the device's name |
1108 | * @args: va_list for the device's name | ||
1092 | * | 1109 | * |
1093 | * This function can be used by char device classes. A struct device | 1110 | * This function can be used by char device classes. A struct device |
1094 | * will be created in sysfs, registered to the specified class. | 1111 | * will be created in sysfs, registered to the specified class. |
@@ -1104,10 +1121,10 @@ static void device_create_release(struct device *dev) | |||
1104 | * Note: the struct class passed to this function must have previously | 1121 | * Note: the struct class passed to this function must have previously |
1105 | * been created with a call to class_create(). | 1122 | * been created with a call to class_create(). |
1106 | */ | 1123 | */ |
1107 | struct device *device_create(struct class *class, struct device *parent, | 1124 | struct device *device_create_vargs(struct class *class, struct device *parent, |
1108 | dev_t devt, const char *fmt, ...) | 1125 | dev_t devt, void *drvdata, const char *fmt, |
1126 | va_list args) | ||
1109 | { | 1127 | { |
1110 | va_list args; | ||
1111 | struct device *dev = NULL; | 1128 | struct device *dev = NULL; |
1112 | int retval = -ENODEV; | 1129 | int retval = -ENODEV; |
1113 | 1130 | ||
@@ -1124,10 +1141,9 @@ struct device *device_create(struct class *class, struct device *parent, | |||
1124 | dev->class = class; | 1141 | dev->class = class; |
1125 | dev->parent = parent; | 1142 | dev->parent = parent; |
1126 | dev->release = device_create_release; | 1143 | dev->release = device_create_release; |
1144 | dev_set_drvdata(dev, drvdata); | ||
1127 | 1145 | ||
1128 | va_start(args, fmt); | ||
1129 | vsnprintf(dev->bus_id, BUS_ID_SIZE, fmt, args); | 1146 | vsnprintf(dev->bus_id, BUS_ID_SIZE, fmt, args); |
1130 | va_end(args); | ||
1131 | retval = device_register(dev); | 1147 | retval = device_register(dev); |
1132 | if (retval) | 1148 | if (retval) |
1133 | goto error; | 1149 | goto error; |
@@ -1138,6 +1154,78 @@ error: | |||
1138 | kfree(dev); | 1154 | kfree(dev); |
1139 | return ERR_PTR(retval); | 1155 | return ERR_PTR(retval); |
1140 | } | 1156 | } |
1157 | EXPORT_SYMBOL_GPL(device_create_vargs); | ||
1158 | |||
1159 | /** | ||
1160 | * device_create_drvdata - creates a device and registers it with sysfs | ||
1161 | * @class: pointer to the struct class that this device should be registered to | ||
1162 | * @parent: pointer to the parent struct device of this new device, if any | ||
1163 | * @devt: the dev_t for the char device to be added | ||
1164 | * @drvdata: the data to be added to the device for callbacks | ||
1165 | * @fmt: string for the device's name | ||
1166 | * | ||
1167 | * This function can be used by char device classes. A struct device | ||
1168 | * will be created in sysfs, registered to the specified class. | ||
1169 | * | ||
1170 | * A "dev" file will be created, showing the dev_t for the device, if | ||
1171 | * the dev_t is not 0,0. | ||
1172 | * If a pointer to a parent struct device is passed in, the newly created | ||
1173 | * struct device will be a child of that device in sysfs. | ||
1174 | * The pointer to the struct device will be returned from the call. | ||
1175 | * Any further sysfs files that might be required can be created using this | ||
1176 | * pointer. | ||
1177 | * | ||
1178 | * Note: the struct class passed to this function must have previously | ||
1179 | * been created with a call to class_create(). | ||
1180 | */ | ||
1181 | struct device *device_create_drvdata(struct class *class, | ||
1182 | struct device *parent, | ||
1183 | dev_t devt, | ||
1184 | void *drvdata, | ||
1185 | const char *fmt, ...) | ||
1186 | { | ||
1187 | va_list vargs; | ||
1188 | struct device *dev; | ||
1189 | |||
1190 | va_start(vargs, fmt); | ||
1191 | dev = device_create_vargs(class, parent, devt, drvdata, fmt, vargs); | ||
1192 | va_end(vargs); | ||
1193 | return dev; | ||
1194 | } | ||
1195 | EXPORT_SYMBOL_GPL(device_create_drvdata); | ||
1196 | |||
1197 | /** | ||
1198 | * device_create - creates a device and registers it with sysfs | ||
1199 | * @class: pointer to the struct class that this device should be registered to | ||
1200 | * @parent: pointer to the parent struct device of this new device, if any | ||
1201 | * @devt: the dev_t for the char device to be added | ||
1202 | * @fmt: string for the device's name | ||
1203 | * | ||
1204 | * This function can be used by char device classes. A struct device | ||
1205 | * will be created in sysfs, registered to the specified class. | ||
1206 | * | ||
1207 | * A "dev" file will be created, showing the dev_t for the device, if | ||
1208 | * the dev_t is not 0,0. | ||
1209 | * If a pointer to a parent struct device is passed in, the newly created | ||
1210 | * struct device will be a child of that device in sysfs. | ||
1211 | * The pointer to the struct device will be returned from the call. | ||
1212 | * Any further sysfs files that might be required can be created using this | ||
1213 | * pointer. | ||
1214 | * | ||
1215 | * Note: the struct class passed to this function must have previously | ||
1216 | * been created with a call to class_create(). | ||
1217 | */ | ||
1218 | struct device *device_create(struct class *class, struct device *parent, | ||
1219 | dev_t devt, const char *fmt, ...) | ||
1220 | { | ||
1221 | va_list vargs; | ||
1222 | struct device *dev; | ||
1223 | |||
1224 | va_start(vargs, fmt); | ||
1225 | dev = device_create_vargs(class, parent, devt, NULL, fmt, vargs); | ||
1226 | va_end(vargs); | ||
1227 | return dev; | ||
1228 | } | ||
1141 | EXPORT_SYMBOL_GPL(device_create); | 1229 | EXPORT_SYMBOL_GPL(device_create); |
1142 | 1230 | ||
1143 | static int __match_devt(struct device *dev, void *data) | 1231 | static int __match_devt(struct device *dev, void *data) |
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c index 7b76fd3b93a4..45cc3d9eacb8 100644 --- a/drivers/base/power/main.c +++ b/drivers/base/power/main.c | |||
@@ -418,7 +418,7 @@ void __suspend_report_result(const char *function, void *fn, int ret) | |||
418 | { | 418 | { |
419 | if (ret) { | 419 | if (ret) { |
420 | printk(KERN_ERR "%s(): ", function); | 420 | printk(KERN_ERR "%s(): ", function); |
421 | print_fn_descriptor_symbol("%s() returns ", (unsigned long)fn); | 421 | print_fn_descriptor_symbol("%s returns ", fn); |
422 | printk("%d\n", ret); | 422 | printk("%d\n", ret); |
423 | } | 423 | } |
424 | } | 424 | } |
diff --git a/drivers/block/amiflop.c b/drivers/block/amiflop.c index c9751b2b57e6..7516baff3bb9 100644 --- a/drivers/block/amiflop.c +++ b/drivers/block/amiflop.c | |||
@@ -1714,10 +1714,10 @@ static int __init amiga_floppy_init(void) | |||
1714 | int i, ret; | 1714 | int i, ret; |
1715 | 1715 | ||
1716 | if (!MACH_IS_AMIGA) | 1716 | if (!MACH_IS_AMIGA) |
1717 | return -ENXIO; | 1717 | return -ENODEV; |
1718 | 1718 | ||
1719 | if (!AMIGAHW_PRESENT(AMI_FLOPPY)) | 1719 | if (!AMIGAHW_PRESENT(AMI_FLOPPY)) |
1720 | return -ENXIO; | 1720 | return -ENODEV; |
1721 | 1721 | ||
1722 | if (register_blkdev(FLOPPY_MAJOR,"fd")) | 1722 | if (register_blkdev(FLOPPY_MAJOR,"fd")) |
1723 | return -EBUSY; | 1723 | return -EBUSY; |
@@ -1755,7 +1755,7 @@ static int __init amiga_floppy_init(void) | |||
1755 | if (!floppy_queue) | 1755 | if (!floppy_queue) |
1756 | goto out_queue; | 1756 | goto out_queue; |
1757 | 1757 | ||
1758 | ret = -ENXIO; | 1758 | ret = -ENODEV; |
1759 | if (fd_probe_drives() < 1) /* No usable drives */ | 1759 | if (fd_probe_drives() < 1) /* No usable drives */ |
1760 | goto out_probe; | 1760 | goto out_probe; |
1761 | 1761 | ||
diff --git a/drivers/block/brd.c b/drivers/block/brd.c index a196ef7f147f..680cdfc00b90 100644 --- a/drivers/block/brd.c +++ b/drivers/block/brd.c | |||
@@ -447,6 +447,7 @@ static struct brd_device *brd_alloc(int i) | |||
447 | disk->fops = &brd_fops; | 447 | disk->fops = &brd_fops; |
448 | disk->private_data = brd; | 448 | disk->private_data = brd; |
449 | disk->queue = brd->brd_queue; | 449 | disk->queue = brd->brd_queue; |
450 | disk->flags |= GENHD_FL_SUPPRESS_PARTITION_INFO; | ||
450 | sprintf(disk->disk_name, "ram%d", i); | 451 | sprintf(disk->disk_name, "ram%d", i); |
451 | set_capacity(disk, rd_size * 2); | 452 | set_capacity(disk, rd_size * 2); |
452 | 453 | ||
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index ebfe038d859e..f1c8feb5510b 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * Authors: Dave Boutcher <boutcher@us.ibm.com> | 3 | * Authors: Dave Boutcher <boutcher@us.ibm.com> |
4 | * Ryan Arnold <ryanarn@us.ibm.com> | 4 | * Ryan Arnold <ryanarn@us.ibm.com> |
5 | * Colin Devilbiss <devilbis@us.ibm.com> | 5 | * Colin Devilbiss <devilbis@us.ibm.com> |
6 | * Stephen Rothwell <sfr@au1.ibm.com> | 6 | * Stephen Rothwell |
7 | * | 7 | * |
8 | * (C) Copyright 2000-2004 IBM Corporation | 8 | * (C) Copyright 2000-2004 IBM Corporation |
9 | * | 9 | * |
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 84e064ffee52..dd7ea203f940 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c | |||
@@ -260,6 +260,10 @@ static int virtblk_probe(struct virtio_device *vdev) | |||
260 | if (virtio_has_feature(vdev, VIRTIO_BLK_F_BARRIER)) | 260 | if (virtio_has_feature(vdev, VIRTIO_BLK_F_BARRIER)) |
261 | blk_queue_ordered(vblk->disk->queue, QUEUE_ORDERED_TAG, NULL); | 261 | blk_queue_ordered(vblk->disk->queue, QUEUE_ORDERED_TAG, NULL); |
262 | 262 | ||
263 | /* If disk is read-only in the host, the guest should obey */ | ||
264 | if (virtio_has_feature(vdev, VIRTIO_BLK_F_RO)) | ||
265 | set_disk_ro(vblk->disk, 1); | ||
266 | |||
263 | /* Host must always specify the capacity. */ | 267 | /* Host must always specify the capacity. */ |
264 | vdev->config->get(vdev, offsetof(struct virtio_blk_config, capacity), | 268 | vdev->config->get(vdev, offsetof(struct virtio_blk_config, capacity), |
265 | &cap, sizeof(cap)); | 269 | &cap, sizeof(cap)); |
@@ -311,6 +315,7 @@ static void virtblk_remove(struct virtio_device *vdev) | |||
311 | /* Stop all the virtqueues. */ | 315 | /* Stop all the virtqueues. */ |
312 | vdev->config->reset(vdev); | 316 | vdev->config->reset(vdev); |
313 | 317 | ||
318 | del_gendisk(vblk->disk); | ||
314 | blk_cleanup_queue(vblk->disk->queue); | 319 | blk_cleanup_queue(vblk->disk->queue); |
315 | put_disk(vblk->disk); | 320 | put_disk(vblk->disk); |
316 | mempool_destroy(vblk->pool); | 321 | mempool_destroy(vblk->pool); |
@@ -325,7 +330,7 @@ static struct virtio_device_id id_table[] = { | |||
325 | 330 | ||
326 | static unsigned int features[] = { | 331 | static unsigned int features[] = { |
327 | VIRTIO_BLK_F_BARRIER, VIRTIO_BLK_F_SEG_MAX, VIRTIO_BLK_F_SIZE_MAX, | 332 | VIRTIO_BLK_F_BARRIER, VIRTIO_BLK_F_SEG_MAX, VIRTIO_BLK_F_SIZE_MAX, |
328 | VIRTIO_BLK_F_GEOMETRY, | 333 | VIRTIO_BLK_F_GEOMETRY, VIRTIO_BLK_F_RO, |
329 | }; | 334 | }; |
330 | 335 | ||
331 | static struct virtio_driver virtio_blk = { | 336 | static struct virtio_driver virtio_blk = { |
diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c index 2d5853cbd4b0..be20a67f1fa8 100644 --- a/drivers/block/z2ram.c +++ b/drivers/block/z2ram.c | |||
@@ -332,7 +332,7 @@ z2_init(void) | |||
332 | int ret; | 332 | int ret; |
333 | 333 | ||
334 | if (!MACH_IS_AMIGA) | 334 | if (!MACH_IS_AMIGA) |
335 | return -ENXIO; | 335 | return -ENODEV; |
336 | 336 | ||
337 | ret = -EBUSY; | 337 | ret = -EBUSY; |
338 | if (register_blkdev(Z2RAM_MAJOR, DEVICE_NAME)) | 338 | if (register_blkdev(Z2RAM_MAJOR, DEVICE_NAME)) |
diff --git a/drivers/cdrom/viocd.c b/drivers/cdrom/viocd.c index 5245a4a0ba74..9d0dfe6e0d63 100644 --- a/drivers/cdrom/viocd.c +++ b/drivers/cdrom/viocd.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * Authors: Dave Boutcher <boutcher@us.ibm.com> | 6 | * Authors: Dave Boutcher <boutcher@us.ibm.com> |
7 | * Ryan Arnold <ryanarn@us.ibm.com> | 7 | * Ryan Arnold <ryanarn@us.ibm.com> |
8 | * Colin Devilbiss <devilbis@us.ibm.com> | 8 | * Colin Devilbiss <devilbis@us.ibm.com> |
9 | * Stephen Rothwell <sfr@au1.ibm.com> | 9 | * Stephen Rothwell |
10 | * | 10 | * |
11 | * (C) Copyright 2000-2004 IBM Corporation | 11 | * (C) Copyright 2000-2004 IBM Corporation |
12 | * | 12 | * |
diff --git a/drivers/char/drm/drm.h b/drivers/char/drm/drm.h index 6874f31ca8ca..3a05c6d5ebe1 100644 --- a/drivers/char/drm/drm.h +++ b/drivers/char/drm/drm.h | |||
@@ -471,7 +471,6 @@ struct drm_irq_busid { | |||
471 | enum drm_vblank_seq_type { | 471 | enum drm_vblank_seq_type { |
472 | _DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */ | 472 | _DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */ |
473 | _DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */ | 473 | _DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */ |
474 | _DRM_VBLANK_FLIP = 0x8000000, /**< Scheduled buffer swap should flip */ | ||
475 | _DRM_VBLANK_NEXTONMISS = 0x10000000, /**< If missed, wait for next vblank */ | 474 | _DRM_VBLANK_NEXTONMISS = 0x10000000, /**< If missed, wait for next vblank */ |
476 | _DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */ | 475 | _DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */ |
477 | _DRM_VBLANK_SIGNAL = 0x40000000 /**< Send signal instead of blocking */ | 476 | _DRM_VBLANK_SIGNAL = 0x40000000 /**< Send signal instead of blocking */ |
@@ -504,21 +503,6 @@ union drm_wait_vblank { | |||
504 | struct drm_wait_vblank_reply reply; | 503 | struct drm_wait_vblank_reply reply; |
505 | }; | 504 | }; |
506 | 505 | ||
507 | enum drm_modeset_ctl_cmd { | ||
508 | _DRM_PRE_MODESET = 1, | ||
509 | _DRM_POST_MODESET = 2, | ||
510 | }; | ||
511 | |||
512 | /** | ||
513 | * DRM_IOCTL_MODESET_CTL ioctl argument type | ||
514 | * | ||
515 | * \sa drmModesetCtl(). | ||
516 | */ | ||
517 | struct drm_modeset_ctl { | ||
518 | unsigned long arg; | ||
519 | enum drm_modeset_ctl_cmd cmd; | ||
520 | }; | ||
521 | |||
522 | /** | 506 | /** |
523 | * DRM_IOCTL_AGP_ENABLE ioctl argument type. | 507 | * DRM_IOCTL_AGP_ENABLE ioctl argument type. |
524 | * | 508 | * |
@@ -603,7 +587,6 @@ struct drm_set_version { | |||
603 | #define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client) | 587 | #define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client) |
604 | #define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats) | 588 | #define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats) |
605 | #define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version) | 589 | #define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version) |
606 | #define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl) | ||
607 | 590 | ||
608 | #define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique) | 591 | #define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique) |
609 | #define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth) | 592 | #define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth) |
diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h index 213b3ca3468e..0764b662b339 100644 --- a/drivers/char/drm/drmP.h +++ b/drivers/char/drm/drmP.h | |||
@@ -100,8 +100,10 @@ struct drm_device; | |||
100 | #define DRIVER_HAVE_DMA 0x20 | 100 | #define DRIVER_HAVE_DMA 0x20 |
101 | #define DRIVER_HAVE_IRQ 0x40 | 101 | #define DRIVER_HAVE_IRQ 0x40 |
102 | #define DRIVER_IRQ_SHARED 0x80 | 102 | #define DRIVER_IRQ_SHARED 0x80 |
103 | #define DRIVER_IRQ_VBL 0x100 | ||
103 | #define DRIVER_DMA_QUEUE 0x200 | 104 | #define DRIVER_DMA_QUEUE 0x200 |
104 | #define DRIVER_FB_DMA 0x400 | 105 | #define DRIVER_FB_DMA 0x400 |
106 | #define DRIVER_IRQ_VBL2 0x800 | ||
105 | 107 | ||
106 | /***********************************************************************/ | 108 | /***********************************************************************/ |
107 | /** \name Begin the DRM... */ | 109 | /** \name Begin the DRM... */ |
@@ -577,52 +579,10 @@ struct drm_driver { | |||
577 | int (*context_dtor) (struct drm_device *dev, int context); | 579 | int (*context_dtor) (struct drm_device *dev, int context); |
578 | int (*kernel_context_switch) (struct drm_device *dev, int old, | 580 | int (*kernel_context_switch) (struct drm_device *dev, int old, |
579 | int new); | 581 | int new); |
580 | void (*kernel_context_switch_unlock) (struct drm_device * dev); | 582 | void (*kernel_context_switch_unlock) (struct drm_device *dev); |
581 | /** | 583 | int (*vblank_wait) (struct drm_device *dev, unsigned int *sequence); |
582 | * get_vblank_counter - get raw hardware vblank counter | 584 | int (*vblank_wait2) (struct drm_device *dev, unsigned int *sequence); |
583 | * @dev: DRM device | 585 | int (*dri_library_name) (struct drm_device *dev, char *buf); |
584 | * @crtc: counter to fetch | ||
585 | * | ||
586 | * Driver callback for fetching a raw hardware vblank counter | ||
587 | * for @crtc. If a device doesn't have a hardware counter, the | ||
588 | * driver can simply return the value of drm_vblank_count and | ||
589 | * make the enable_vblank() and disable_vblank() hooks into no-ops, | ||
590 | * leaving interrupts enabled at all times. | ||
591 | * | ||
592 | * Wraparound handling and loss of events due to modesetting is dealt | ||
593 | * with in the DRM core code. | ||
594 | * | ||
595 | * RETURNS | ||
596 | * Raw vblank counter value. | ||
597 | */ | ||
598 | u32 (*get_vblank_counter) (struct drm_device *dev, int crtc); | ||
599 | |||
600 | /** | ||
601 | * enable_vblank - enable vblank interrupt events | ||
602 | * @dev: DRM device | ||
603 | * @crtc: which irq to enable | ||
604 | * | ||
605 | * Enable vblank interrupts for @crtc. If the device doesn't have | ||
606 | * a hardware vblank counter, this routine should be a no-op, since | ||
607 | * interrupts will have to stay on to keep the count accurate. | ||
608 | * | ||
609 | * RETURNS | ||
610 | * Zero on success, appropriate errno if the given @crtc's vblank | ||
611 | * interrupt cannot be enabled. | ||
612 | */ | ||
613 | int (*enable_vblank) (struct drm_device *dev, int crtc); | ||
614 | |||
615 | /** | ||
616 | * disable_vblank - disable vblank interrupt events | ||
617 | * @dev: DRM device | ||
618 | * @crtc: which irq to enable | ||
619 | * | ||
620 | * Disable vblank interrupts for @crtc. If the device doesn't have | ||
621 | * a hardware vblank counter, this routine should be a no-op, since | ||
622 | * interrupts will have to stay on to keep the count accurate. | ||
623 | */ | ||
624 | void (*disable_vblank) (struct drm_device *dev, int crtc); | ||
625 | int (*dri_library_name) (struct drm_device *dev, char * buf); | ||
626 | 586 | ||
627 | /** | 587 | /** |
628 | * Called by \c drm_device_is_agp. Typically used to determine if a | 588 | * Called by \c drm_device_is_agp. Typically used to determine if a |
@@ -641,7 +601,7 @@ struct drm_driver { | |||
641 | 601 | ||
642 | irqreturn_t(*irq_handler) (DRM_IRQ_ARGS); | 602 | irqreturn_t(*irq_handler) (DRM_IRQ_ARGS); |
643 | void (*irq_preinstall) (struct drm_device *dev); | 603 | void (*irq_preinstall) (struct drm_device *dev); |
644 | int (*irq_postinstall) (struct drm_device *dev); | 604 | void (*irq_postinstall) (struct drm_device *dev); |
645 | void (*irq_uninstall) (struct drm_device *dev); | 605 | void (*irq_uninstall) (struct drm_device *dev); |
646 | void (*reclaim_buffers) (struct drm_device *dev, | 606 | void (*reclaim_buffers) (struct drm_device *dev, |
647 | struct drm_file * file_priv); | 607 | struct drm_file * file_priv); |
@@ -770,21 +730,13 @@ struct drm_device { | |||
770 | /** \name VBLANK IRQ support */ | 730 | /** \name VBLANK IRQ support */ |
771 | /*@{ */ | 731 | /*@{ */ |
772 | 732 | ||
773 | wait_queue_head_t *vbl_queue; /**< VBLANK wait queue */ | 733 | wait_queue_head_t vbl_queue; /**< VBLANK wait queue */ |
774 | atomic_t *_vblank_count; /**< number of VBLANK interrupts (driver must alloc the right number of counters) */ | 734 | atomic_t vbl_received; |
735 | atomic_t vbl_received2; /**< number of secondary VBLANK interrupts */ | ||
775 | spinlock_t vbl_lock; | 736 | spinlock_t vbl_lock; |
776 | struct list_head *vbl_sigs; /**< signal list to send on VBLANK */ | 737 | struct list_head vbl_sigs; /**< signal list to send on VBLANK */ |
777 | atomic_t vbl_signal_pending; /* number of signals pending on all crtcs*/ | 738 | struct list_head vbl_sigs2; /**< signals to send on secondary VBLANK */ |
778 | atomic_t *vblank_refcount; /* number of users of vblank interrupts per crtc */ | 739 | unsigned int vbl_pending; |
779 | u32 *last_vblank; /* protected by dev->vbl_lock, used */ | ||
780 | /* for wraparound handling */ | ||
781 | u32 *vblank_offset; /* used to track how many vblanks */ | ||
782 | int *vblank_enabled; /* so we don't call enable more than | ||
783 | once per disable */ | ||
784 | u32 *vblank_premodeset; /* were lost during modeset */ | ||
785 | struct timer_list vblank_disable_timer; | ||
786 | |||
787 | unsigned long max_vblank_count; /**< size of vblank counter register */ | ||
788 | spinlock_t tasklet_lock; /**< For drm_locked_tasklet */ | 740 | spinlock_t tasklet_lock; /**< For drm_locked_tasklet */ |
789 | void (*locked_tasklet_func)(struct drm_device *dev); | 741 | void (*locked_tasklet_func)(struct drm_device *dev); |
790 | 742 | ||
@@ -804,7 +756,6 @@ struct drm_device { | |||
804 | #ifdef __alpha__ | 756 | #ifdef __alpha__ |
805 | struct pci_controller *hose; | 757 | struct pci_controller *hose; |
806 | #endif | 758 | #endif |
807 | int num_crtcs; /**< Number of CRTCs on this device */ | ||
808 | struct drm_sg_mem *sg; /**< Scatter gather memory */ | 759 | struct drm_sg_mem *sg; /**< Scatter gather memory */ |
809 | void *dev_private; /**< device private data */ | 760 | void *dev_private; /**< device private data */ |
810 | struct drm_sigdata sigdata; /**< For block_all_signals */ | 761 | struct drm_sigdata sigdata; /**< For block_all_signals */ |
@@ -1039,19 +990,11 @@ extern void drm_driver_irq_preinstall(struct drm_device *dev); | |||
1039 | extern void drm_driver_irq_postinstall(struct drm_device *dev); | 990 | extern void drm_driver_irq_postinstall(struct drm_device *dev); |
1040 | extern void drm_driver_irq_uninstall(struct drm_device *dev); | 991 | extern void drm_driver_irq_uninstall(struct drm_device *dev); |
1041 | 992 | ||
1042 | extern int drm_vblank_init(struct drm_device *dev, int num_crtcs); | 993 | extern int drm_wait_vblank(struct drm_device *dev, void *data, |
1043 | extern int drm_wait_vblank(struct drm_device *dev, void *data, struct drm_file *filp); | ||
1044 | extern int drm_vblank_wait(struct drm_device * dev, unsigned int *vbl_seq); | ||
1045 | extern void drm_locked_tasklet(struct drm_device *dev, void(*func)(struct drm_device*)); | ||
1046 | extern u32 drm_vblank_count(struct drm_device *dev, int crtc); | ||
1047 | extern void drm_update_vblank_count(struct drm_device *dev, int crtc); | ||
1048 | extern void drm_handle_vblank(struct drm_device *dev, int crtc); | ||
1049 | extern int drm_vblank_get(struct drm_device *dev, int crtc); | ||
1050 | extern void drm_vblank_put(struct drm_device *dev, int crtc); | ||
1051 | |||
1052 | /* Modesetting support */ | ||
1053 | extern int drm_modeset_ctl(struct drm_device *dev, void *data, | ||
1054 | struct drm_file *file_priv); | 994 | struct drm_file *file_priv); |
995 | extern int drm_vblank_wait(struct drm_device *dev, unsigned int *vbl_seq); | ||
996 | extern void drm_vbl_send_signals(struct drm_device *dev); | ||
997 | extern void drm_locked_tasklet(struct drm_device *dev, void(*func)(struct drm_device*)); | ||
1055 | 998 | ||
1056 | /* AGP/GART support (drm_agpsupport.h) */ | 999 | /* AGP/GART support (drm_agpsupport.h) */ |
1057 | extern struct drm_agp_head *drm_agp_init(struct drm_device *dev); | 1000 | extern struct drm_agp_head *drm_agp_init(struct drm_device *dev); |
diff --git a/drivers/char/drm/drm_fops.c b/drivers/char/drm/drm_fops.c index 68f0da801ed8..d2e6da85f58a 100644 --- a/drivers/char/drm/drm_fops.c +++ b/drivers/char/drm/drm_fops.c | |||
@@ -323,7 +323,6 @@ int drm_release(struct inode *inode, struct file *filp) | |||
323 | struct drm_file *file_priv = filp->private_data; | 323 | struct drm_file *file_priv = filp->private_data; |
324 | struct drm_device *dev = file_priv->minor->dev; | 324 | struct drm_device *dev = file_priv->minor->dev; |
325 | int retcode = 0; | 325 | int retcode = 0; |
326 | unsigned long irqflags; | ||
327 | 326 | ||
328 | lock_kernel(); | 327 | lock_kernel(); |
329 | 328 | ||
@@ -355,11 +354,9 @@ int drm_release(struct inode *inode, struct file *filp) | |||
355 | */ | 354 | */ |
356 | 355 | ||
357 | do{ | 356 | do{ |
358 | spin_lock_irqsave(&dev->lock.spinlock, | 357 | spin_lock_bh(&dev->lock.spinlock); |
359 | irqflags); | ||
360 | locked = dev->lock.idle_has_lock; | 358 | locked = dev->lock.idle_has_lock; |
361 | spin_unlock_irqrestore(&dev->lock.spinlock, | 359 | spin_unlock_bh(&dev->lock.spinlock); |
362 | irqflags); | ||
363 | if (locked) | 360 | if (locked) |
364 | break; | 361 | break; |
365 | schedule(); | 362 | schedule(); |
diff --git a/drivers/char/drm/drm_irq.c b/drivers/char/drm/drm_irq.c index 286f9d61e7d5..089c015c01d1 100644 --- a/drivers/char/drm/drm_irq.c +++ b/drivers/char/drm/drm_irq.c | |||
@@ -71,117 +71,6 @@ int drm_irq_by_busid(struct drm_device *dev, void *data, | |||
71 | return 0; | 71 | return 0; |
72 | } | 72 | } |
73 | 73 | ||
74 | static void vblank_disable_fn(unsigned long arg) | ||
75 | { | ||
76 | struct drm_device *dev = (struct drm_device *)arg; | ||
77 | unsigned long irqflags; | ||
78 | int i; | ||
79 | |||
80 | for (i = 0; i < dev->num_crtcs; i++) { | ||
81 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | ||
82 | if (atomic_read(&dev->vblank_refcount[i]) == 0 && | ||
83 | dev->vblank_enabled[i]) { | ||
84 | dev->driver->disable_vblank(dev, i); | ||
85 | dev->vblank_enabled[i] = 0; | ||
86 | } | ||
87 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | ||
88 | } | ||
89 | } | ||
90 | |||
91 | static void drm_vblank_cleanup(struct drm_device *dev) | ||
92 | { | ||
93 | /* Bail if the driver didn't call drm_vblank_init() */ | ||
94 | if (dev->num_crtcs == 0) | ||
95 | return; | ||
96 | |||
97 | del_timer(&dev->vblank_disable_timer); | ||
98 | |||
99 | vblank_disable_fn((unsigned long)dev); | ||
100 | |||
101 | drm_free(dev->vbl_queue, sizeof(*dev->vbl_queue) * dev->num_crtcs, | ||
102 | DRM_MEM_DRIVER); | ||
103 | drm_free(dev->vbl_sigs, sizeof(*dev->vbl_sigs) * dev->num_crtcs, | ||
104 | DRM_MEM_DRIVER); | ||
105 | drm_free(dev->_vblank_count, sizeof(*dev->_vblank_count) * | ||
106 | dev->num_crtcs, DRM_MEM_DRIVER); | ||
107 | drm_free(dev->vblank_refcount, sizeof(*dev->vblank_refcount) * | ||
108 | dev->num_crtcs, DRM_MEM_DRIVER); | ||
109 | drm_free(dev->vblank_enabled, sizeof(*dev->vblank_enabled) * | ||
110 | dev->num_crtcs, DRM_MEM_DRIVER); | ||
111 | drm_free(dev->last_vblank, sizeof(*dev->last_vblank) * dev->num_crtcs, | ||
112 | DRM_MEM_DRIVER); | ||
113 | drm_free(dev->vblank_premodeset, sizeof(*dev->vblank_premodeset) * | ||
114 | dev->num_crtcs, DRM_MEM_DRIVER); | ||
115 | drm_free(dev->vblank_offset, sizeof(*dev->vblank_offset) * dev->num_crtcs, | ||
116 | DRM_MEM_DRIVER); | ||
117 | |||
118 | dev->num_crtcs = 0; | ||
119 | } | ||
120 | |||
121 | int drm_vblank_init(struct drm_device *dev, int num_crtcs) | ||
122 | { | ||
123 | int i, ret = -ENOMEM; | ||
124 | |||
125 | setup_timer(&dev->vblank_disable_timer, vblank_disable_fn, | ||
126 | (unsigned long)dev); | ||
127 | spin_lock_init(&dev->vbl_lock); | ||
128 | atomic_set(&dev->vbl_signal_pending, 0); | ||
129 | dev->num_crtcs = num_crtcs; | ||
130 | |||
131 | dev->vbl_queue = drm_alloc(sizeof(wait_queue_head_t) * num_crtcs, | ||
132 | DRM_MEM_DRIVER); | ||
133 | if (!dev->vbl_queue) | ||
134 | goto err; | ||
135 | |||
136 | dev->vbl_sigs = drm_alloc(sizeof(struct list_head) * num_crtcs, | ||
137 | DRM_MEM_DRIVER); | ||
138 | if (!dev->vbl_sigs) | ||
139 | goto err; | ||
140 | |||
141 | dev->_vblank_count = drm_alloc(sizeof(atomic_t) * num_crtcs, | ||
142 | DRM_MEM_DRIVER); | ||
143 | if (!dev->_vblank_count) | ||
144 | goto err; | ||
145 | |||
146 | dev->vblank_refcount = drm_alloc(sizeof(atomic_t) * num_crtcs, | ||
147 | DRM_MEM_DRIVER); | ||
148 | if (!dev->vblank_refcount) | ||
149 | goto err; | ||
150 | |||
151 | dev->vblank_enabled = drm_calloc(num_crtcs, sizeof(int), | ||
152 | DRM_MEM_DRIVER); | ||
153 | if (!dev->vblank_enabled) | ||
154 | goto err; | ||
155 | |||
156 | dev->last_vblank = drm_calloc(num_crtcs, sizeof(u32), DRM_MEM_DRIVER); | ||
157 | if (!dev->last_vblank) | ||
158 | goto err; | ||
159 | |||
160 | dev->vblank_premodeset = drm_calloc(num_crtcs, sizeof(u32), | ||
161 | DRM_MEM_DRIVER); | ||
162 | if (!dev->vblank_premodeset) | ||
163 | goto err; | ||
164 | |||
165 | dev->vblank_offset = drm_calloc(num_crtcs, sizeof(u32), DRM_MEM_DRIVER); | ||
166 | if (!dev->vblank_offset) | ||
167 | goto err; | ||
168 | |||
169 | /* Zero per-crtc vblank stuff */ | ||
170 | for (i = 0; i < num_crtcs; i++) { | ||
171 | init_waitqueue_head(&dev->vbl_queue[i]); | ||
172 | INIT_LIST_HEAD(&dev->vbl_sigs[i]); | ||
173 | atomic_set(&dev->_vblank_count[i], 0); | ||
174 | atomic_set(&dev->vblank_refcount[i], 0); | ||
175 | } | ||
176 | |||
177 | return 0; | ||
178 | |||
179 | err: | ||
180 | drm_vblank_cleanup(dev); | ||
181 | return ret; | ||
182 | } | ||
183 | EXPORT_SYMBOL(drm_vblank_init); | ||
184 | |||
185 | /** | 74 | /** |
186 | * Install IRQ handler. | 75 | * Install IRQ handler. |
187 | * | 76 | * |
@@ -220,6 +109,17 @@ static int drm_irq_install(struct drm_device * dev) | |||
220 | 109 | ||
221 | DRM_DEBUG("irq=%d\n", dev->irq); | 110 | DRM_DEBUG("irq=%d\n", dev->irq); |
222 | 111 | ||
112 | if (drm_core_check_feature(dev, DRIVER_IRQ_VBL)) { | ||
113 | init_waitqueue_head(&dev->vbl_queue); | ||
114 | |||
115 | spin_lock_init(&dev->vbl_lock); | ||
116 | |||
117 | INIT_LIST_HEAD(&dev->vbl_sigs); | ||
118 | INIT_LIST_HEAD(&dev->vbl_sigs2); | ||
119 | |||
120 | dev->vbl_pending = 0; | ||
121 | } | ||
122 | |||
223 | /* Before installing handler */ | 123 | /* Before installing handler */ |
224 | dev->driver->irq_preinstall(dev); | 124 | dev->driver->irq_preinstall(dev); |
225 | 125 | ||
@@ -237,14 +137,9 @@ static int drm_irq_install(struct drm_device * dev) | |||
237 | } | 137 | } |
238 | 138 | ||
239 | /* After installing handler */ | 139 | /* After installing handler */ |
240 | ret = dev->driver->irq_postinstall(dev); | 140 | dev->driver->irq_postinstall(dev); |
241 | if (ret < 0) { | ||
242 | mutex_lock(&dev->struct_mutex); | ||
243 | dev->irq_enabled = 0; | ||
244 | mutex_unlock(&dev->struct_mutex); | ||
245 | } | ||
246 | 141 | ||
247 | return ret; | 142 | return 0; |
248 | } | 143 | } |
249 | 144 | ||
250 | /** | 145 | /** |
@@ -275,8 +170,6 @@ int drm_irq_uninstall(struct drm_device * dev) | |||
275 | 170 | ||
276 | free_irq(dev->irq, dev); | 171 | free_irq(dev->irq, dev); |
277 | 172 | ||
278 | drm_vblank_cleanup(dev); | ||
279 | |||
280 | dev->locked_tasklet_func = NULL; | 173 | dev->locked_tasklet_func = NULL; |
281 | 174 | ||
282 | return 0; | 175 | return 0; |
@@ -321,148 +214,6 @@ int drm_control(struct drm_device *dev, void *data, | |||
321 | } | 214 | } |
322 | 215 | ||
323 | /** | 216 | /** |
324 | * drm_vblank_count - retrieve "cooked" vblank counter value | ||
325 | * @dev: DRM device | ||
326 | * @crtc: which counter to retrieve | ||
327 | * | ||
328 | * Fetches the "cooked" vblank count value that represents the number of | ||
329 | * vblank events since the system was booted, including lost events due to | ||
330 | * modesetting activity. | ||
331 | */ | ||
332 | u32 drm_vblank_count(struct drm_device *dev, int crtc) | ||
333 | { | ||
334 | return atomic_read(&dev->_vblank_count[crtc]) + | ||
335 | dev->vblank_offset[crtc]; | ||
336 | } | ||
337 | EXPORT_SYMBOL(drm_vblank_count); | ||
338 | |||
339 | /** | ||
340 | * drm_update_vblank_count - update the master vblank counter | ||
341 | * @dev: DRM device | ||
342 | * @crtc: counter to update | ||
343 | * | ||
344 | * Call back into the driver to update the appropriate vblank counter | ||
345 | * (specified by @crtc). Deal with wraparound, if it occurred, and | ||
346 | * update the last read value so we can deal with wraparound on the next | ||
347 | * call if necessary. | ||
348 | */ | ||
349 | void drm_update_vblank_count(struct drm_device *dev, int crtc) | ||
350 | { | ||
351 | unsigned long irqflags; | ||
352 | u32 cur_vblank, diff; | ||
353 | |||
354 | /* | ||
355 | * Interrupts were disabled prior to this call, so deal with counter | ||
356 | * wrap if needed. | ||
357 | * NOTE! It's possible we lost a full dev->max_vblank_count events | ||
358 | * here if the register is small or we had vblank interrupts off for | ||
359 | * a long time. | ||
360 | */ | ||
361 | cur_vblank = dev->driver->get_vblank_counter(dev, crtc); | ||
362 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | ||
363 | if (cur_vblank < dev->last_vblank[crtc]) { | ||
364 | diff = dev->max_vblank_count - | ||
365 | dev->last_vblank[crtc]; | ||
366 | diff += cur_vblank; | ||
367 | } else { | ||
368 | diff = cur_vblank - dev->last_vblank[crtc]; | ||
369 | } | ||
370 | dev->last_vblank[crtc] = cur_vblank; | ||
371 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | ||
372 | |||
373 | atomic_add(diff, &dev->_vblank_count[crtc]); | ||
374 | } | ||
375 | EXPORT_SYMBOL(drm_update_vblank_count); | ||
376 | |||
377 | /** | ||
378 | * drm_vblank_get - get a reference count on vblank events | ||
379 | * @dev: DRM device | ||
380 | * @crtc: which CRTC to own | ||
381 | * | ||
382 | * Acquire a reference count on vblank events to avoid having them disabled | ||
383 | * while in use. Note callers will probably want to update the master counter | ||
384 | * using drm_update_vblank_count() above before calling this routine so that | ||
385 | * wakeups occur on the right vblank event. | ||
386 | * | ||
387 | * RETURNS | ||
388 | * Zero on success, nonzero on failure. | ||
389 | */ | ||
390 | int drm_vblank_get(struct drm_device *dev, int crtc) | ||
391 | { | ||
392 | unsigned long irqflags; | ||
393 | int ret = 0; | ||
394 | |||
395 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | ||
396 | /* Going from 0->1 means we have to enable interrupts again */ | ||
397 | if (atomic_add_return(1, &dev->vblank_refcount[crtc]) == 1 && | ||
398 | !dev->vblank_enabled[crtc]) { | ||
399 | ret = dev->driver->enable_vblank(dev, crtc); | ||
400 | if (ret) | ||
401 | atomic_dec(&dev->vblank_refcount[crtc]); | ||
402 | else | ||
403 | dev->vblank_enabled[crtc] = 1; | ||
404 | } | ||
405 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | ||
406 | |||
407 | return ret; | ||
408 | } | ||
409 | EXPORT_SYMBOL(drm_vblank_get); | ||
410 | |||
411 | /** | ||
412 | * drm_vblank_put - give up ownership of vblank events | ||
413 | * @dev: DRM device | ||
414 | * @crtc: which counter to give up | ||
415 | * | ||
416 | * Release ownership of a given vblank counter, turning off interrupts | ||
417 | * if possible. | ||
418 | */ | ||
419 | void drm_vblank_put(struct drm_device *dev, int crtc) | ||
420 | { | ||
421 | /* Last user schedules interrupt disable */ | ||
422 | if (atomic_dec_and_test(&dev->vblank_refcount[crtc])) | ||
423 | mod_timer(&dev->vblank_disable_timer, jiffies + 5*DRM_HZ); | ||
424 | } | ||
425 | EXPORT_SYMBOL(drm_vblank_put); | ||
426 | |||
427 | /** | ||
428 | * drm_modeset_ctl - handle vblank event counter changes across mode switch | ||
429 | * @DRM_IOCTL_ARGS: standard ioctl arguments | ||
430 | * | ||
431 | * Applications should call the %_DRM_PRE_MODESET and %_DRM_POST_MODESET | ||
432 | * ioctls around modesetting so that any lost vblank events are accounted for. | ||
433 | */ | ||
434 | int drm_modeset_ctl(struct drm_device *dev, void *data, | ||
435 | struct drm_file *file_priv) | ||
436 | { | ||
437 | struct drm_modeset_ctl *modeset = data; | ||
438 | int crtc, ret = 0; | ||
439 | u32 new; | ||
440 | |||
441 | crtc = modeset->arg; | ||
442 | if (crtc >= dev->num_crtcs) { | ||
443 | ret = -EINVAL; | ||
444 | goto out; | ||
445 | } | ||
446 | |||
447 | switch (modeset->cmd) { | ||
448 | case _DRM_PRE_MODESET: | ||
449 | dev->vblank_premodeset[crtc] = | ||
450 | dev->driver->get_vblank_counter(dev, crtc); | ||
451 | break; | ||
452 | case _DRM_POST_MODESET: | ||
453 | new = dev->driver->get_vblank_counter(dev, crtc); | ||
454 | dev->vblank_offset[crtc] = dev->vblank_premodeset[crtc] - new; | ||
455 | break; | ||
456 | default: | ||
457 | ret = -EINVAL; | ||
458 | break; | ||
459 | } | ||
460 | |||
461 | out: | ||
462 | return ret; | ||
463 | } | ||
464 | |||
465 | /** | ||
466 | * Wait for VBLANK. | 217 | * Wait for VBLANK. |
467 | * | 218 | * |
468 | * \param inode device inode. | 219 | * \param inode device inode. |
@@ -481,13 +232,12 @@ out: | |||
481 | * | 232 | * |
482 | * If a signal is not requested, then calls vblank_wait(). | 233 | * If a signal is not requested, then calls vblank_wait(). |
483 | */ | 234 | */ |
484 | int drm_wait_vblank(struct drm_device *dev, void *data, | 235 | int drm_wait_vblank(struct drm_device *dev, void *data, struct drm_file *file_priv) |
485 | struct drm_file *file_priv) | ||
486 | { | 236 | { |
487 | union drm_wait_vblank *vblwait = data; | 237 | union drm_wait_vblank *vblwait = data; |
488 | struct timeval now; | 238 | struct timeval now; |
489 | int ret = 0; | 239 | int ret = 0; |
490 | unsigned int flags, seq, crtc; | 240 | unsigned int flags, seq; |
491 | 241 | ||
492 | if ((!dev->irq) || (!dev->irq_enabled)) | 242 | if ((!dev->irq) || (!dev->irq_enabled)) |
493 | return -EINVAL; | 243 | return -EINVAL; |
@@ -501,13 +251,13 @@ int drm_wait_vblank(struct drm_device *dev, void *data, | |||
501 | } | 251 | } |
502 | 252 | ||
503 | flags = vblwait->request.type & _DRM_VBLANK_FLAGS_MASK; | 253 | flags = vblwait->request.type & _DRM_VBLANK_FLAGS_MASK; |
504 | crtc = flags & _DRM_VBLANK_SECONDARY ? 1 : 0; | ||
505 | 254 | ||
506 | if (crtc >= dev->num_crtcs) | 255 | if (!drm_core_check_feature(dev, (flags & _DRM_VBLANK_SECONDARY) ? |
256 | DRIVER_IRQ_VBL2 : DRIVER_IRQ_VBL)) | ||
507 | return -EINVAL; | 257 | return -EINVAL; |
508 | 258 | ||
509 | drm_update_vblank_count(dev, crtc); | 259 | seq = atomic_read((flags & _DRM_VBLANK_SECONDARY) ? &dev->vbl_received2 |
510 | seq = drm_vblank_count(dev, crtc); | 260 | : &dev->vbl_received); |
511 | 261 | ||
512 | switch (vblwait->request.type & _DRM_VBLANK_TYPES_MASK) { | 262 | switch (vblwait->request.type & _DRM_VBLANK_TYPES_MASK) { |
513 | case _DRM_VBLANK_RELATIVE: | 263 | case _DRM_VBLANK_RELATIVE: |
@@ -526,7 +276,8 @@ int drm_wait_vblank(struct drm_device *dev, void *data, | |||
526 | 276 | ||
527 | if (flags & _DRM_VBLANK_SIGNAL) { | 277 | if (flags & _DRM_VBLANK_SIGNAL) { |
528 | unsigned long irqflags; | 278 | unsigned long irqflags; |
529 | struct list_head *vbl_sigs = &dev->vbl_sigs[crtc]; | 279 | struct list_head *vbl_sigs = (flags & _DRM_VBLANK_SECONDARY) |
280 | ? &dev->vbl_sigs2 : &dev->vbl_sigs; | ||
530 | struct drm_vbl_sig *vbl_sig; | 281 | struct drm_vbl_sig *vbl_sig; |
531 | 282 | ||
532 | spin_lock_irqsave(&dev->vbl_lock, irqflags); | 283 | spin_lock_irqsave(&dev->vbl_lock, irqflags); |
@@ -547,26 +298,22 @@ int drm_wait_vblank(struct drm_device *dev, void *data, | |||
547 | } | 298 | } |
548 | } | 299 | } |
549 | 300 | ||
550 | if (atomic_read(&dev->vbl_signal_pending) >= 100) { | 301 | if (dev->vbl_pending >= 100) { |
551 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | 302 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); |
552 | return -EBUSY; | 303 | return -EBUSY; |
553 | } | 304 | } |
554 | 305 | ||
306 | dev->vbl_pending++; | ||
307 | |||
555 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); | 308 | spin_unlock_irqrestore(&dev->vbl_lock, irqflags); |
556 | 309 | ||
557 | vbl_sig = drm_calloc(1, sizeof(struct drm_vbl_sig), | 310 | if (! |
558 | DRM_MEM_DRIVER); | 311 | (vbl_sig = |
559 | if (!vbl_sig) | 312 | drm_alloc(sizeof(struct drm_vbl_sig), DRM_MEM_DRIVER))) { |
560 | return -ENOMEM; | 313 | return -ENOMEM; |
561 | |||
562 | ret = drm_vblank_get(dev, crtc); | ||
563 | if (ret) { | ||
564 | drm_free(vbl_sig, sizeof(struct drm_vbl_sig), | ||
565 | DRM_MEM_DRIVER); | ||
566 | return ret; | ||
567 | } | 314 | } |
568 | 315 | ||
569 | atomic_inc(&dev->vbl_signal_pending); | 316 | memset((void *)vbl_sig, 0, sizeof(*vbl_sig)); |
570 | 317 | ||
571 | vbl_sig->sequence = vblwait->request.sequence; | 318 | vbl_sig->sequence = vblwait->request.sequence; |
572 | vbl_sig->info.si_signo = vblwait->request.signal; | 319 | vbl_sig->info.si_signo = vblwait->request.signal; |
@@ -580,20 +327,17 @@ int drm_wait_vblank(struct drm_device *dev, void *data, | |||
580 | 327 | ||
581 | vblwait->reply.sequence = seq; | 328 | vblwait->reply.sequence = seq; |
582 | } else { | 329 | } else { |
583 | unsigned long cur_vblank; | 330 | if (flags & _DRM_VBLANK_SECONDARY) { |
584 | 331 | if (dev->driver->vblank_wait2) | |
585 | ret = drm_vblank_get(dev, crtc); | 332 | ret = dev->driver->vblank_wait2(dev, &vblwait->request.sequence); |
586 | if (ret) | 333 | } else if (dev->driver->vblank_wait) |
587 | return ret; | 334 | ret = |
588 | DRM_WAIT_ON(ret, dev->vbl_queue[crtc], 3 * DRM_HZ, | 335 | dev->driver->vblank_wait(dev, |
589 | (((cur_vblank = drm_vblank_count(dev, crtc)) | 336 | &vblwait->request.sequence); |
590 | - vblwait->request.sequence) <= (1 << 23))); | ||
591 | drm_vblank_put(dev, crtc); | ||
592 | do_gettimeofday(&now); | ||
593 | 337 | ||
338 | do_gettimeofday(&now); | ||
594 | vblwait->reply.tval_sec = now.tv_sec; | 339 | vblwait->reply.tval_sec = now.tv_sec; |
595 | vblwait->reply.tval_usec = now.tv_usec; | 340 | vblwait->reply.tval_usec = now.tv_usec; |
596 | vblwait->reply.sequence = cur_vblank; | ||
597 | } | 341 | } |
598 | 342 | ||
599 | done: | 343 | done: |
@@ -604,57 +348,44 @@ int drm_wait_vblank(struct drm_device *dev, void *data, | |||
604 | * Send the VBLANK signals. | 348 | * Send the VBLANK signals. |
605 | * | 349 | * |
606 | * \param dev DRM device. | 350 | * \param dev DRM device. |
607 | * \param crtc CRTC where the vblank event occurred | ||
608 | * | 351 | * |
609 | * Sends a signal for each task in drm_device::vbl_sigs and empties the list. | 352 | * Sends a signal for each task in drm_device::vbl_sigs and empties the list. |
610 | * | 353 | * |
611 | * If a signal is not requested, then calls vblank_wait(). | 354 | * If a signal is not requested, then calls vblank_wait(). |
612 | */ | 355 | */ |
613 | static void drm_vbl_send_signals(struct drm_device * dev, int crtc) | 356 | void drm_vbl_send_signals(struct drm_device * dev) |
614 | { | 357 | { |
615 | struct drm_vbl_sig *vbl_sig, *tmp; | ||
616 | struct list_head *vbl_sigs; | ||
617 | unsigned int vbl_seq; | ||
618 | unsigned long flags; | 358 | unsigned long flags; |
359 | int i; | ||
619 | 360 | ||
620 | spin_lock_irqsave(&dev->vbl_lock, flags); | 361 | spin_lock_irqsave(&dev->vbl_lock, flags); |
621 | 362 | ||
622 | vbl_sigs = &dev->vbl_sigs[crtc]; | 363 | for (i = 0; i < 2; i++) { |
623 | vbl_seq = drm_vblank_count(dev, crtc); | 364 | struct drm_vbl_sig *vbl_sig, *tmp; |
365 | struct list_head *vbl_sigs = i ? &dev->vbl_sigs2 : &dev->vbl_sigs; | ||
366 | unsigned int vbl_seq = atomic_read(i ? &dev->vbl_received2 : | ||
367 | &dev->vbl_received); | ||
624 | 368 | ||
625 | list_for_each_entry_safe(vbl_sig, tmp, vbl_sigs, head) { | 369 | list_for_each_entry_safe(vbl_sig, tmp, vbl_sigs, head) { |
626 | if ((vbl_seq - vbl_sig->sequence) <= (1 << 23)) { | 370 | if ((vbl_seq - vbl_sig->sequence) <= (1 << 23)) { |
627 | vbl_sig->info.si_code = vbl_seq; | 371 | vbl_sig->info.si_code = vbl_seq; |
628 | send_sig_info(vbl_sig->info.si_signo, | 372 | send_sig_info(vbl_sig->info.si_signo, |
629 | &vbl_sig->info, vbl_sig->task); | 373 | &vbl_sig->info, vbl_sig->task); |
630 | 374 | ||
631 | list_del(&vbl_sig->head); | 375 | list_del(&vbl_sig->head); |
632 | 376 | ||
633 | drm_free(vbl_sig, sizeof(*vbl_sig), | 377 | drm_free(vbl_sig, sizeof(*vbl_sig), |
634 | DRM_MEM_DRIVER); | 378 | DRM_MEM_DRIVER); |
635 | atomic_dec(&dev->vbl_signal_pending); | 379 | |
636 | drm_vblank_put(dev, crtc); | 380 | dev->vbl_pending--; |
637 | } | 381 | } |
382 | } | ||
638 | } | 383 | } |
639 | 384 | ||
640 | spin_unlock_irqrestore(&dev->vbl_lock, flags); | 385 | spin_unlock_irqrestore(&dev->vbl_lock, flags); |
641 | } | 386 | } |
642 | 387 | ||
643 | /** | 388 | EXPORT_SYMBOL(drm_vbl_send_signals); |
644 | * drm_handle_vblank - handle a vblank event | ||
645 | * @dev: DRM device | ||
646 | * @crtc: where this event occurred | ||
647 | * | ||
648 | * Drivers should call this routine in their vblank interrupt handlers to | ||
649 | * update the vblank counter and send any signals that may be pending. | ||
650 | */ | ||
651 | void drm_handle_vblank(struct drm_device *dev, int crtc) | ||
652 | { | ||
653 | drm_update_vblank_count(dev, crtc); | ||
654 | DRM_WAKEUP(&dev->vbl_queue[crtc]); | ||
655 | drm_vbl_send_signals(dev, crtc); | ||
656 | } | ||
657 | EXPORT_SYMBOL(drm_handle_vblank); | ||
658 | 389 | ||
659 | /** | 390 | /** |
660 | * Tasklet wrapper function. | 391 | * Tasklet wrapper function. |
diff --git a/drivers/char/drm/drm_lock.c b/drivers/char/drm/drm_lock.c index 12dcdd1832f0..0998723cde79 100644 --- a/drivers/char/drm/drm_lock.c +++ b/drivers/char/drm/drm_lock.c | |||
@@ -53,7 +53,6 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv) | |||
53 | DECLARE_WAITQUEUE(entry, current); | 53 | DECLARE_WAITQUEUE(entry, current); |
54 | struct drm_lock *lock = data; | 54 | struct drm_lock *lock = data; |
55 | int ret = 0; | 55 | int ret = 0; |
56 | unsigned long irqflags; | ||
57 | 56 | ||
58 | ++file_priv->lock_count; | 57 | ++file_priv->lock_count; |
59 | 58 | ||
@@ -72,9 +71,9 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv) | |||
72 | return -EINVAL; | 71 | return -EINVAL; |
73 | 72 | ||
74 | add_wait_queue(&dev->lock.lock_queue, &entry); | 73 | add_wait_queue(&dev->lock.lock_queue, &entry); |
75 | spin_lock_irqsave(&dev->lock.spinlock, irqflags); | 74 | spin_lock_bh(&dev->lock.spinlock); |
76 | dev->lock.user_waiters++; | 75 | dev->lock.user_waiters++; |
77 | spin_unlock_irqrestore(&dev->lock.spinlock, irqflags); | 76 | spin_unlock_bh(&dev->lock.spinlock); |
78 | for (;;) { | 77 | for (;;) { |
79 | __set_current_state(TASK_INTERRUPTIBLE); | 78 | __set_current_state(TASK_INTERRUPTIBLE); |
80 | if (!dev->lock.hw_lock) { | 79 | if (!dev->lock.hw_lock) { |
@@ -96,9 +95,9 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv) | |||
96 | break; | 95 | break; |
97 | } | 96 | } |
98 | } | 97 | } |
99 | spin_lock_irqsave(&dev->lock.spinlock, irqflags); | 98 | spin_lock_bh(&dev->lock.spinlock); |
100 | dev->lock.user_waiters--; | 99 | dev->lock.user_waiters--; |
101 | spin_unlock_irqrestore(&dev->lock.spinlock, irqflags); | 100 | spin_unlock_bh(&dev->lock.spinlock); |
102 | __set_current_state(TASK_RUNNING); | 101 | __set_current_state(TASK_RUNNING); |
103 | remove_wait_queue(&dev->lock.lock_queue, &entry); | 102 | remove_wait_queue(&dev->lock.lock_queue, &entry); |
104 | 103 | ||
@@ -199,9 +198,8 @@ int drm_lock_take(struct drm_lock_data *lock_data, | |||
199 | { | 198 | { |
200 | unsigned int old, new, prev; | 199 | unsigned int old, new, prev; |
201 | volatile unsigned int *lock = &lock_data->hw_lock->lock; | 200 | volatile unsigned int *lock = &lock_data->hw_lock->lock; |
202 | unsigned long irqflags; | ||
203 | 201 | ||
204 | spin_lock_irqsave(&lock_data->spinlock, irqflags); | 202 | spin_lock_bh(&lock_data->spinlock); |
205 | do { | 203 | do { |
206 | old = *lock; | 204 | old = *lock; |
207 | if (old & _DRM_LOCK_HELD) | 205 | if (old & _DRM_LOCK_HELD) |
@@ -213,7 +211,7 @@ int drm_lock_take(struct drm_lock_data *lock_data, | |||
213 | } | 211 | } |
214 | prev = cmpxchg(lock, old, new); | 212 | prev = cmpxchg(lock, old, new); |
215 | } while (prev != old); | 213 | } while (prev != old); |
216 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); | 214 | spin_unlock_bh(&lock_data->spinlock); |
217 | 215 | ||
218 | if (_DRM_LOCKING_CONTEXT(old) == context) { | 216 | if (_DRM_LOCKING_CONTEXT(old) == context) { |
219 | if (old & _DRM_LOCK_HELD) { | 217 | if (old & _DRM_LOCK_HELD) { |
@@ -274,16 +272,15 @@ int drm_lock_free(struct drm_lock_data *lock_data, unsigned int context) | |||
274 | { | 272 | { |
275 | unsigned int old, new, prev; | 273 | unsigned int old, new, prev; |
276 | volatile unsigned int *lock = &lock_data->hw_lock->lock; | 274 | volatile unsigned int *lock = &lock_data->hw_lock->lock; |
277 | unsigned long irqflags; | ||
278 | 275 | ||
279 | spin_lock_irqsave(&lock_data->spinlock, irqflags); | 276 | spin_lock_bh(&lock_data->spinlock); |
280 | if (lock_data->kernel_waiters != 0) { | 277 | if (lock_data->kernel_waiters != 0) { |
281 | drm_lock_transfer(lock_data, 0); | 278 | drm_lock_transfer(lock_data, 0); |
282 | lock_data->idle_has_lock = 1; | 279 | lock_data->idle_has_lock = 1; |
283 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); | 280 | spin_unlock_bh(&lock_data->spinlock); |
284 | return 1; | 281 | return 1; |
285 | } | 282 | } |
286 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); | 283 | spin_unlock_bh(&lock_data->spinlock); |
287 | 284 | ||
288 | do { | 285 | do { |
289 | old = *lock; | 286 | old = *lock; |
@@ -347,20 +344,19 @@ static int drm_notifier(void *priv) | |||
347 | void drm_idlelock_take(struct drm_lock_data *lock_data) | 344 | void drm_idlelock_take(struct drm_lock_data *lock_data) |
348 | { | 345 | { |
349 | int ret = 0; | 346 | int ret = 0; |
350 | unsigned long irqflags; | ||
351 | 347 | ||
352 | spin_lock_irqsave(&lock_data->spinlock, irqflags); | 348 | spin_lock_bh(&lock_data->spinlock); |
353 | lock_data->kernel_waiters++; | 349 | lock_data->kernel_waiters++; |
354 | if (!lock_data->idle_has_lock) { | 350 | if (!lock_data->idle_has_lock) { |
355 | 351 | ||
356 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); | 352 | spin_unlock_bh(&lock_data->spinlock); |
357 | ret = drm_lock_take(lock_data, DRM_KERNEL_CONTEXT); | 353 | ret = drm_lock_take(lock_data, DRM_KERNEL_CONTEXT); |
358 | spin_lock_irqsave(&lock_data->spinlock, irqflags); | 354 | spin_lock_bh(&lock_data->spinlock); |
359 | 355 | ||
360 | if (ret == 1) | 356 | if (ret == 1) |
361 | lock_data->idle_has_lock = 1; | 357 | lock_data->idle_has_lock = 1; |
362 | } | 358 | } |
363 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); | 359 | spin_unlock_bh(&lock_data->spinlock); |
364 | } | 360 | } |
365 | EXPORT_SYMBOL(drm_idlelock_take); | 361 | EXPORT_SYMBOL(drm_idlelock_take); |
366 | 362 | ||
@@ -368,9 +364,8 @@ void drm_idlelock_release(struct drm_lock_data *lock_data) | |||
368 | { | 364 | { |
369 | unsigned int old, prev; | 365 | unsigned int old, prev; |
370 | volatile unsigned int *lock = &lock_data->hw_lock->lock; | 366 | volatile unsigned int *lock = &lock_data->hw_lock->lock; |
371 | unsigned long irqflags; | ||
372 | 367 | ||
373 | spin_lock_irqsave(&lock_data->spinlock, irqflags); | 368 | spin_lock_bh(&lock_data->spinlock); |
374 | if (--lock_data->kernel_waiters == 0) { | 369 | if (--lock_data->kernel_waiters == 0) { |
375 | if (lock_data->idle_has_lock) { | 370 | if (lock_data->idle_has_lock) { |
376 | do { | 371 | do { |
@@ -381,7 +376,7 @@ void drm_idlelock_release(struct drm_lock_data *lock_data) | |||
381 | lock_data->idle_has_lock = 0; | 376 | lock_data->idle_has_lock = 0; |
382 | } | 377 | } |
383 | } | 378 | } |
384 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); | 379 | spin_unlock_bh(&lock_data->spinlock); |
385 | } | 380 | } |
386 | EXPORT_SYMBOL(drm_idlelock_release); | 381 | EXPORT_SYMBOL(drm_idlelock_release); |
387 | 382 | ||
diff --git a/drivers/char/drm/drm_sysfs.c b/drivers/char/drm/drm_sysfs.c index 9a32169e88fb..af211a0ef179 100644 --- a/drivers/char/drm/drm_sysfs.c +++ b/drivers/char/drm/drm_sysfs.c | |||
@@ -34,8 +34,6 @@ static int drm_sysfs_suspend(struct device *dev, pm_message_t state) | |||
34 | struct drm_minor *drm_minor = to_drm_minor(dev); | 34 | struct drm_minor *drm_minor = to_drm_minor(dev); |
35 | struct drm_device *drm_dev = drm_minor->dev; | 35 | struct drm_device *drm_dev = drm_minor->dev; |
36 | 36 | ||
37 | printk(KERN_ERR "%s\n", __func__); | ||
38 | |||
39 | if (drm_dev->driver->suspend) | 37 | if (drm_dev->driver->suspend) |
40 | return drm_dev->driver->suspend(drm_dev, state); | 38 | return drm_dev->driver->suspend(drm_dev, state); |
41 | 39 | ||
diff --git a/drivers/char/drm/i915_dma.c b/drivers/char/drm/i915_dma.c index f47e46e3529f..88974342933c 100644 --- a/drivers/char/drm/i915_dma.c +++ b/drivers/char/drm/i915_dma.c | |||
@@ -415,13 +415,10 @@ static void i915_emit_breadcrumb(struct drm_device *dev) | |||
415 | drm_i915_private_t *dev_priv = dev->dev_private; | 415 | drm_i915_private_t *dev_priv = dev->dev_private; |
416 | RING_LOCALS; | 416 | RING_LOCALS; |
417 | 417 | ||
418 | if (++dev_priv->counter > BREADCRUMB_MASK) { | 418 | dev_priv->sarea_priv->last_enqueue = ++dev_priv->counter; |
419 | dev_priv->counter = 1; | ||
420 | DRM_DEBUG("Breadcrumb counter wrapped around\n"); | ||
421 | } | ||
422 | 419 | ||
423 | if (dev_priv->sarea_priv) | 420 | if (dev_priv->counter > 0x7FFFFFFFUL) |
424 | dev_priv->sarea_priv->last_enqueue = dev_priv->counter; | 421 | dev_priv->sarea_priv->last_enqueue = dev_priv->counter = 1; |
425 | 422 | ||
426 | BEGIN_LP_RING(4); | 423 | BEGIN_LP_RING(4); |
427 | OUT_RING(CMD_STORE_DWORD_IDX); | 424 | OUT_RING(CMD_STORE_DWORD_IDX); |
@@ -431,26 +428,6 @@ static void i915_emit_breadcrumb(struct drm_device *dev) | |||
431 | ADVANCE_LP_RING(); | 428 | ADVANCE_LP_RING(); |
432 | } | 429 | } |
433 | 430 | ||
434 | int i915_emit_mi_flush(struct drm_device *dev, uint32_t flush) | ||
435 | { | ||
436 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
437 | uint32_t flush_cmd = CMD_MI_FLUSH; | ||
438 | RING_LOCALS; | ||
439 | |||
440 | flush_cmd |= flush; | ||
441 | |||
442 | i915_kernel_lost_context(dev); | ||
443 | |||
444 | BEGIN_LP_RING(4); | ||
445 | OUT_RING(flush_cmd); | ||
446 | OUT_RING(0); | ||
447 | OUT_RING(0); | ||
448 | OUT_RING(0); | ||
449 | ADVANCE_LP_RING(); | ||
450 | |||
451 | return 0; | ||
452 | } | ||
453 | |||
454 | static int i915_dispatch_cmdbuffer(struct drm_device * dev, | 431 | static int i915_dispatch_cmdbuffer(struct drm_device * dev, |
455 | drm_i915_cmdbuffer_t * cmd) | 432 | drm_i915_cmdbuffer_t * cmd) |
456 | { | 433 | { |
@@ -534,74 +511,52 @@ static int i915_dispatch_batchbuffer(struct drm_device * dev, | |||
534 | return 0; | 511 | return 0; |
535 | } | 512 | } |
536 | 513 | ||
537 | static void i915_do_dispatch_flip(struct drm_device * dev, int plane, int sync) | 514 | static int i915_dispatch_flip(struct drm_device * dev) |
538 | { | 515 | { |
539 | drm_i915_private_t *dev_priv = dev->dev_private; | 516 | drm_i915_private_t *dev_priv = dev->dev_private; |
540 | u32 num_pages, current_page, next_page, dspbase; | ||
541 | int shift = 2 * plane, x, y; | ||
542 | RING_LOCALS; | 517 | RING_LOCALS; |
543 | 518 | ||
544 | /* Calculate display base offset */ | 519 | DRM_DEBUG("%s: page=%d pfCurrentPage=%d\n", |
545 | num_pages = dev_priv->sarea_priv->third_handle ? 3 : 2; | 520 | __FUNCTION__, |
546 | current_page = (dev_priv->sarea_priv->pf_current_page >> shift) & 0x3; | 521 | dev_priv->current_page, |
547 | next_page = (current_page + 1) % num_pages; | 522 | dev_priv->sarea_priv->pf_current_page); |
548 | 523 | ||
549 | switch (next_page) { | 524 | i915_kernel_lost_context(dev); |
550 | default: | 525 | |
551 | case 0: | 526 | BEGIN_LP_RING(2); |
552 | dspbase = dev_priv->sarea_priv->front_offset; | 527 | OUT_RING(INST_PARSER_CLIENT | INST_OP_FLUSH | INST_FLUSH_MAP_CACHE); |
553 | break; | 528 | OUT_RING(0); |
554 | case 1: | 529 | ADVANCE_LP_RING(); |
555 | dspbase = dev_priv->sarea_priv->back_offset; | ||
556 | break; | ||
557 | case 2: | ||
558 | dspbase = dev_priv->sarea_priv->third_offset; | ||
559 | break; | ||
560 | } | ||
561 | 530 | ||
562 | if (plane == 0) { | 531 | BEGIN_LP_RING(6); |
563 | x = dev_priv->sarea_priv->planeA_x; | 532 | OUT_RING(CMD_OP_DISPLAYBUFFER_INFO | ASYNC_FLIP); |
564 | y = dev_priv->sarea_priv->planeA_y; | 533 | OUT_RING(0); |
534 | if (dev_priv->current_page == 0) { | ||
535 | OUT_RING(dev_priv->back_offset); | ||
536 | dev_priv->current_page = 1; | ||
565 | } else { | 537 | } else { |
566 | x = dev_priv->sarea_priv->planeB_x; | 538 | OUT_RING(dev_priv->front_offset); |
567 | y = dev_priv->sarea_priv->planeB_y; | 539 | dev_priv->current_page = 0; |
568 | } | 540 | } |
541 | OUT_RING(0); | ||
542 | ADVANCE_LP_RING(); | ||
569 | 543 | ||
570 | dspbase += (y * dev_priv->sarea_priv->pitch + x) * dev_priv->cpp; | 544 | BEGIN_LP_RING(2); |
545 | OUT_RING(MI_WAIT_FOR_EVENT | MI_WAIT_FOR_PLANE_A_FLIP); | ||
546 | OUT_RING(0); | ||
547 | ADVANCE_LP_RING(); | ||
571 | 548 | ||
572 | DRM_DEBUG("plane=%d current_page=%d dspbase=0x%x\n", plane, current_page, | 549 | dev_priv->sarea_priv->last_enqueue = dev_priv->counter++; |
573 | dspbase); | ||
574 | 550 | ||
575 | BEGIN_LP_RING(4); | 551 | BEGIN_LP_RING(4); |
576 | OUT_RING(sync ? 0 : | 552 | OUT_RING(CMD_STORE_DWORD_IDX); |
577 | (MI_WAIT_FOR_EVENT | (plane ? MI_WAIT_FOR_PLANE_B_FLIP : | 553 | OUT_RING(20); |
578 | MI_WAIT_FOR_PLANE_A_FLIP))); | 554 | OUT_RING(dev_priv->counter); |
579 | OUT_RING(CMD_OP_DISPLAYBUFFER_INFO | (sync ? 0 : ASYNC_FLIP) | | 555 | OUT_RING(0); |
580 | (plane ? DISPLAY_PLANE_B : DISPLAY_PLANE_A)); | ||
581 | OUT_RING(dev_priv->sarea_priv->pitch * dev_priv->cpp); | ||
582 | OUT_RING(dspbase); | ||
583 | ADVANCE_LP_RING(); | 556 | ADVANCE_LP_RING(); |
584 | 557 | ||
585 | dev_priv->sarea_priv->pf_current_page &= ~(0x3 << shift); | 558 | dev_priv->sarea_priv->pf_current_page = dev_priv->current_page; |
586 | dev_priv->sarea_priv->pf_current_page |= next_page << shift; | 559 | return 0; |
587 | } | ||
588 | |||
589 | void i915_dispatch_flip(struct drm_device * dev, int planes, int sync) | ||
590 | { | ||
591 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
592 | int i; | ||
593 | |||
594 | DRM_DEBUG("planes=0x%x pfCurrentPage=%d\n", | ||
595 | planes, dev_priv->sarea_priv->pf_current_page); | ||
596 | |||
597 | i915_emit_mi_flush(dev, MI_READ_FLUSH | MI_EXE_FLUSH); | ||
598 | |||
599 | for (i = 0; i < 2; i++) | ||
600 | if (planes & (1 << i)) | ||
601 | i915_do_dispatch_flip(dev, i, sync); | ||
602 | |||
603 | i915_emit_breadcrumb(dev); | ||
604 | |||
605 | } | 560 | } |
606 | 561 | ||
607 | static int i915_quiescent(struct drm_device * dev) | 562 | static int i915_quiescent(struct drm_device * dev) |
@@ -624,6 +579,7 @@ static int i915_batchbuffer(struct drm_device *dev, void *data, | |||
624 | struct drm_file *file_priv) | 579 | struct drm_file *file_priv) |
625 | { | 580 | { |
626 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 581 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
582 | u32 *hw_status = dev_priv->hw_status_page; | ||
627 | drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) | 583 | drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) |
628 | dev_priv->sarea_priv; | 584 | dev_priv->sarea_priv; |
629 | drm_i915_batchbuffer_t *batch = data; | 585 | drm_i915_batchbuffer_t *batch = data; |
@@ -646,7 +602,7 @@ static int i915_batchbuffer(struct drm_device *dev, void *data, | |||
646 | 602 | ||
647 | ret = i915_dispatch_batchbuffer(dev, batch); | 603 | ret = i915_dispatch_batchbuffer(dev, batch); |
648 | 604 | ||
649 | sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); | 605 | sarea_priv->last_dispatch = (int)hw_status[5]; |
650 | return ret; | 606 | return ret; |
651 | } | 607 | } |
652 | 608 | ||
@@ -654,6 +610,7 @@ static int i915_cmdbuffer(struct drm_device *dev, void *data, | |||
654 | struct drm_file *file_priv) | 610 | struct drm_file *file_priv) |
655 | { | 611 | { |
656 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 612 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
613 | u32 *hw_status = dev_priv->hw_status_page; | ||
657 | drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) | 614 | drm_i915_sarea_t *sarea_priv = (drm_i915_sarea_t *) |
658 | dev_priv->sarea_priv; | 615 | dev_priv->sarea_priv; |
659 | drm_i915_cmdbuffer_t *cmdbuf = data; | 616 | drm_i915_cmdbuffer_t *cmdbuf = data; |
@@ -678,51 +635,18 @@ static int i915_cmdbuffer(struct drm_device *dev, void *data, | |||
678 | return ret; | 635 | return ret; |
679 | } | 636 | } |
680 | 637 | ||
681 | sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); | 638 | sarea_priv->last_dispatch = (int)hw_status[5]; |
682 | return 0; | ||
683 | } | ||
684 | |||
685 | static int i915_do_cleanup_pageflip(struct drm_device * dev) | ||
686 | { | ||
687 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
688 | int i, planes, num_pages = dev_priv->sarea_priv->third_handle ? 3 : 2; | ||
689 | |||
690 | DRM_DEBUG("\n"); | ||
691 | |||
692 | for (i = 0, planes = 0; i < 2; i++) | ||
693 | if (dev_priv->sarea_priv->pf_current_page & (0x3 << (2 * i))) { | ||
694 | dev_priv->sarea_priv->pf_current_page = | ||
695 | (dev_priv->sarea_priv->pf_current_page & | ||
696 | ~(0x3 << (2 * i))) | ((num_pages - 1) << (2 * i)); | ||
697 | |||
698 | planes |= 1 << i; | ||
699 | } | ||
700 | |||
701 | if (planes) | ||
702 | i915_dispatch_flip(dev, planes, 0); | ||
703 | |||
704 | return 0; | 639 | return 0; |
705 | } | 640 | } |
706 | 641 | ||
707 | static int i915_flip_bufs(struct drm_device *dev, void *data, | 642 | static int i915_flip_bufs(struct drm_device *dev, void *data, |
708 | struct drm_file *file_priv) | 643 | struct drm_file *file_priv) |
709 | { | 644 | { |
710 | drm_i915_flip_t *param = data; | 645 | DRM_DEBUG("%s\n", __FUNCTION__); |
711 | |||
712 | DRM_DEBUG("\n"); | ||
713 | 646 | ||
714 | LOCK_TEST_WITH_RETURN(dev, file_priv); | 647 | LOCK_TEST_WITH_RETURN(dev, file_priv); |
715 | 648 | ||
716 | /* This is really planes */ | 649 | return i915_dispatch_flip(dev); |
717 | if (param->pipes & ~0x3) { | ||
718 | DRM_ERROR("Invalid planes 0x%x, only <= 0x3 is valid\n", | ||
719 | param->pipes); | ||
720 | return -EINVAL; | ||
721 | } | ||
722 | |||
723 | i915_dispatch_flip(dev, param->pipes, 0); | ||
724 | |||
725 | return 0; | ||
726 | } | 650 | } |
727 | 651 | ||
728 | static int i915_getparam(struct drm_device *dev, void *data, | 652 | static int i915_getparam(struct drm_device *dev, void *data, |
@@ -883,8 +807,6 @@ void i915_driver_lastclose(struct drm_device * dev) | |||
883 | if (!dev_priv) | 807 | if (!dev_priv) |
884 | return; | 808 | return; |
885 | 809 | ||
886 | if (drm_getsarea(dev) && dev_priv->sarea_priv) | ||
887 | i915_do_cleanup_pageflip(dev); | ||
888 | if (dev_priv->agp_heap) | 810 | if (dev_priv->agp_heap) |
889 | i915_mem_takedown(&(dev_priv->agp_heap)); | 811 | i915_mem_takedown(&(dev_priv->agp_heap)); |
890 | 812 | ||
diff --git a/drivers/char/drm/i915_drm.h b/drivers/char/drm/i915_drm.h index 0431c00e2289..05c66cf03a9e 100644 --- a/drivers/char/drm/i915_drm.h +++ b/drivers/char/drm/i915_drm.h | |||
@@ -105,29 +105,14 @@ typedef struct _drm_i915_sarea { | |||
105 | unsigned int rotated_tiled; | 105 | unsigned int rotated_tiled; |
106 | unsigned int rotated2_tiled; | 106 | unsigned int rotated2_tiled; |
107 | 107 | ||
108 | int planeA_x; | 108 | int pipeA_x; |
109 | int planeA_y; | 109 | int pipeA_y; |
110 | int planeA_w; | 110 | int pipeA_w; |
111 | int planeA_h; | 111 | int pipeA_h; |
112 | int planeB_x; | 112 | int pipeB_x; |
113 | int planeB_y; | 113 | int pipeB_y; |
114 | int planeB_w; | 114 | int pipeB_w; |
115 | int planeB_h; | 115 | int pipeB_h; |
116 | |||
117 | /* Triple buffering */ | ||
118 | drm_handle_t third_handle; | ||
119 | int third_offset; | ||
120 | int third_size; | ||
121 | unsigned int third_tiled; | ||
122 | |||
123 | /* buffer object handles for the static buffers. May change | ||
124 | * over the lifetime of the client, though it doesn't in our current | ||
125 | * implementation. | ||
126 | */ | ||
127 | unsigned int front_bo_handle; | ||
128 | unsigned int back_bo_handle; | ||
129 | unsigned int third_bo_handle; | ||
130 | unsigned int depth_bo_handle; | ||
131 | } drm_i915_sarea_t; | 116 | } drm_i915_sarea_t; |
132 | 117 | ||
133 | /* Flags for perf_boxes | 118 | /* Flags for perf_boxes |
@@ -161,7 +146,7 @@ typedef struct _drm_i915_sarea { | |||
161 | 146 | ||
162 | #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) | 147 | #define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t) |
163 | #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) | 148 | #define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH) |
164 | #define DRM_IOCTL_I915_FLIP DRM_IOW( DRM_COMMAND_BASE + DRM_I915_FLIP, drm_i915_flip_t) | 149 | #define DRM_IOCTL_I915_FLIP DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLIP) |
165 | #define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t) | 150 | #define DRM_IOCTL_I915_BATCHBUFFER DRM_IOW( DRM_COMMAND_BASE + DRM_I915_BATCHBUFFER, drm_i915_batchbuffer_t) |
166 | #define DRM_IOCTL_I915_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t) | 151 | #define DRM_IOCTL_I915_IRQ_EMIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_IRQ_EMIT, drm_i915_irq_emit_t) |
167 | #define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t) | 152 | #define DRM_IOCTL_I915_IRQ_WAIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_IRQ_WAIT, drm_i915_irq_wait_t) |
@@ -176,18 +161,6 @@ typedef struct _drm_i915_sarea { | |||
176 | #define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t) | 161 | #define DRM_IOCTL_I915_GET_VBLANK_PIPE DRM_IOR( DRM_COMMAND_BASE + DRM_I915_GET_VBLANK_PIPE, drm_i915_vblank_pipe_t) |
177 | #define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t) | 162 | #define DRM_IOCTL_I915_VBLANK_SWAP DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_VBLANK_SWAP, drm_i915_vblank_swap_t) |
178 | 163 | ||
179 | /* Asynchronous page flipping: | ||
180 | */ | ||
181 | typedef struct drm_i915_flip { | ||
182 | /* | ||
183 | * This is really talking about planes, and we could rename it | ||
184 | * except for the fact that some of the duplicated i915_drm.h files | ||
185 | * out there check for HAVE_I915_FLIP and so might pick up this | ||
186 | * version. | ||
187 | */ | ||
188 | int pipes; | ||
189 | } drm_i915_flip_t; | ||
190 | |||
191 | /* Allow drivers to submit batchbuffers directly to hardware, relying | 164 | /* Allow drivers to submit batchbuffers directly to hardware, relying |
192 | * on the security mechanisms provided by hardware. | 165 | * on the security mechanisms provided by hardware. |
193 | */ | 166 | */ |
diff --git a/drivers/char/drm/i915_drv.c b/drivers/char/drm/i915_drv.c index bb8f1b2fb383..e8f3d682e3b1 100644 --- a/drivers/char/drm/i915_drv.c +++ b/drivers/char/drm/i915_drv.c | |||
@@ -147,7 +147,7 @@ static void i915_save_vga(struct drm_device *dev) | |||
147 | i915_write_indexed(cr_index, cr_data, 0x11, | 147 | i915_write_indexed(cr_index, cr_data, 0x11, |
148 | i915_read_indexed(cr_index, cr_data, 0x11) & | 148 | i915_read_indexed(cr_index, cr_data, 0x11) & |
149 | (~0x80)); | 149 | (~0x80)); |
150 | for (i = 0; i < 0x24; i++) | 150 | for (i = 0; i <= 0x24; i++) |
151 | dev_priv->saveCR[i] = | 151 | dev_priv->saveCR[i] = |
152 | i915_read_indexed(cr_index, cr_data, i); | 152 | i915_read_indexed(cr_index, cr_data, i); |
153 | /* Make sure we don't turn off CR group 0 writes */ | 153 | /* Make sure we don't turn off CR group 0 writes */ |
@@ -156,7 +156,7 @@ static void i915_save_vga(struct drm_device *dev) | |||
156 | /* Attribute controller registers */ | 156 | /* Attribute controller registers */ |
157 | inb(st01); | 157 | inb(st01); |
158 | dev_priv->saveAR_INDEX = inb(VGA_AR_INDEX); | 158 | dev_priv->saveAR_INDEX = inb(VGA_AR_INDEX); |
159 | for (i = 0; i < 20; i++) | 159 | for (i = 0; i <= 0x14; i++) |
160 | dev_priv->saveAR[i] = i915_read_ar(st01, i, 0); | 160 | dev_priv->saveAR[i] = i915_read_ar(st01, i, 0); |
161 | inb(st01); | 161 | inb(st01); |
162 | outb(dev_priv->saveAR_INDEX, VGA_AR_INDEX); | 162 | outb(dev_priv->saveAR_INDEX, VGA_AR_INDEX); |
@@ -206,7 +206,7 @@ static void i915_restore_vga(struct drm_device *dev) | |||
206 | /* CRT controller regs */ | 206 | /* CRT controller regs */ |
207 | /* Enable CR group 0 writes */ | 207 | /* Enable CR group 0 writes */ |
208 | i915_write_indexed(cr_index, cr_data, 0x11, dev_priv->saveCR[0x11]); | 208 | i915_write_indexed(cr_index, cr_data, 0x11, dev_priv->saveCR[0x11]); |
209 | for (i = 0; i < 0x24; i++) | 209 | for (i = 0; i <= 0x24; i++) |
210 | i915_write_indexed(cr_index, cr_data, i, dev_priv->saveCR[i]); | 210 | i915_write_indexed(cr_index, cr_data, i, dev_priv->saveCR[i]); |
211 | 211 | ||
212 | /* Graphics controller regs */ | 212 | /* Graphics controller regs */ |
@@ -223,7 +223,7 @@ static void i915_restore_vga(struct drm_device *dev) | |||
223 | 223 | ||
224 | /* Attribute controller registers */ | 224 | /* Attribute controller registers */ |
225 | inb(st01); | 225 | inb(st01); |
226 | for (i = 0; i < 20; i++) | 226 | for (i = 0; i <= 0x14; i++) |
227 | i915_write_ar(st01, i, dev_priv->saveAR[i], 0); | 227 | i915_write_ar(st01, i, dev_priv->saveAR[i], 0); |
228 | inb(st01); /* switch back to index mode */ | 228 | inb(st01); /* switch back to index mode */ |
229 | outb(dev_priv->saveAR_INDEX | 0x20, VGA_AR_INDEX); | 229 | outb(dev_priv->saveAR_INDEX | 0x20, VGA_AR_INDEX); |
@@ -256,6 +256,9 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state) | |||
256 | pci_save_state(dev->pdev); | 256 | pci_save_state(dev->pdev); |
257 | pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB); | 257 | pci_read_config_byte(dev->pdev, LBB, &dev_priv->saveLBB); |
258 | 258 | ||
259 | /* Display arbitration control */ | ||
260 | dev_priv->saveDSPARB = I915_READ(DSPARB); | ||
261 | |||
259 | /* Pipe & plane A info */ | 262 | /* Pipe & plane A info */ |
260 | dev_priv->savePIPEACONF = I915_READ(PIPEACONF); | 263 | dev_priv->savePIPEACONF = I915_READ(PIPEACONF); |
261 | dev_priv->savePIPEASRC = I915_READ(PIPEASRC); | 264 | dev_priv->savePIPEASRC = I915_READ(PIPEASRC); |
@@ -349,6 +352,7 @@ static int i915_suspend(struct drm_device *dev, pm_message_t state) | |||
349 | dev_priv->saveVGACNTRL = I915_READ(VGACNTRL); | 352 | dev_priv->saveVGACNTRL = I915_READ(VGACNTRL); |
350 | 353 | ||
351 | /* Clock gating state */ | 354 | /* Clock gating state */ |
355 | dev_priv->saveD_STATE = I915_READ(D_STATE); | ||
352 | dev_priv->saveDSPCLK_GATE_D = I915_READ(DSPCLK_GATE_D); | 356 | dev_priv->saveDSPCLK_GATE_D = I915_READ(DSPCLK_GATE_D); |
353 | 357 | ||
354 | /* Cache mode state */ | 358 | /* Cache mode state */ |
@@ -388,6 +392,8 @@ static int i915_resume(struct drm_device *dev) | |||
388 | 392 | ||
389 | pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB); | 393 | pci_write_config_byte(dev->pdev, LBB, dev_priv->saveLBB); |
390 | 394 | ||
395 | I915_WRITE(DSPARB, dev_priv->saveDSPARB); | ||
396 | |||
391 | /* Pipe & plane A info */ | 397 | /* Pipe & plane A info */ |
392 | /* Prime the clock */ | 398 | /* Prime the clock */ |
393 | if (dev_priv->saveDPLL_A & DPLL_VCO_ENABLE) { | 399 | if (dev_priv->saveDPLL_A & DPLL_VCO_ENABLE) { |
@@ -507,6 +513,7 @@ static int i915_resume(struct drm_device *dev) | |||
507 | udelay(150); | 513 | udelay(150); |
508 | 514 | ||
509 | /* Clock gating state */ | 515 | /* Clock gating state */ |
516 | I915_WRITE (D_STATE, dev_priv->saveD_STATE); | ||
510 | I915_WRITE (DSPCLK_GATE_D, dev_priv->saveDSPCLK_GATE_D); | 517 | I915_WRITE (DSPCLK_GATE_D, dev_priv->saveDSPCLK_GATE_D); |
511 | 518 | ||
512 | /* Cache mode state */ | 519 | /* Cache mode state */ |
@@ -533,7 +540,8 @@ static struct drm_driver driver = { | |||
533 | */ | 540 | */ |
534 | .driver_features = | 541 | .driver_features = |
535 | DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | /* DRIVER_USE_MTRR |*/ | 542 | DRIVER_USE_AGP | DRIVER_REQUIRE_AGP | /* DRIVER_USE_MTRR |*/ |
536 | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED, | 543 | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | DRIVER_IRQ_VBL | |
544 | DRIVER_IRQ_VBL2, | ||
537 | .load = i915_driver_load, | 545 | .load = i915_driver_load, |
538 | .unload = i915_driver_unload, | 546 | .unload = i915_driver_unload, |
539 | .lastclose = i915_driver_lastclose, | 547 | .lastclose = i915_driver_lastclose, |
@@ -541,9 +549,8 @@ static struct drm_driver driver = { | |||
541 | .suspend = i915_suspend, | 549 | .suspend = i915_suspend, |
542 | .resume = i915_resume, | 550 | .resume = i915_resume, |
543 | .device_is_agp = i915_driver_device_is_agp, | 551 | .device_is_agp = i915_driver_device_is_agp, |
544 | .get_vblank_counter = i915_get_vblank_counter, | 552 | .vblank_wait = i915_driver_vblank_wait, |
545 | .enable_vblank = i915_enable_vblank, | 553 | .vblank_wait2 = i915_driver_vblank_wait2, |
546 | .disable_vblank = i915_disable_vblank, | ||
547 | .irq_preinstall = i915_driver_irq_preinstall, | 554 | .irq_preinstall = i915_driver_irq_preinstall, |
548 | .irq_postinstall = i915_driver_irq_postinstall, | 555 | .irq_postinstall = i915_driver_irq_postinstall, |
549 | .irq_uninstall = i915_driver_irq_uninstall, | 556 | .irq_uninstall = i915_driver_irq_uninstall, |
diff --git a/drivers/char/drm/i915_drv.h b/drivers/char/drm/i915_drv.h index db7001f22561..1b20f7c0639c 100644 --- a/drivers/char/drm/i915_drv.h +++ b/drivers/char/drm/i915_drv.h | |||
@@ -76,9 +76,8 @@ struct mem_block { | |||
76 | typedef struct _drm_i915_vbl_swap { | 76 | typedef struct _drm_i915_vbl_swap { |
77 | struct list_head head; | 77 | struct list_head head; |
78 | drm_drawable_t drw_id; | 78 | drm_drawable_t drw_id; |
79 | unsigned int plane; | 79 | unsigned int pipe; |
80 | unsigned int sequence; | 80 | unsigned int sequence; |
81 | int flip; | ||
82 | } drm_i915_vbl_swap_t; | 81 | } drm_i915_vbl_swap_t; |
83 | 82 | ||
84 | typedef struct drm_i915_private { | 83 | typedef struct drm_i915_private { |
@@ -91,7 +90,7 @@ typedef struct drm_i915_private { | |||
91 | drm_dma_handle_t *status_page_dmah; | 90 | drm_dma_handle_t *status_page_dmah; |
92 | void *hw_status_page; | 91 | void *hw_status_page; |
93 | dma_addr_t dma_status_page; | 92 | dma_addr_t dma_status_page; |
94 | uint32_t counter; | 93 | unsigned long counter; |
95 | unsigned int status_gfx_addr; | 94 | unsigned int status_gfx_addr; |
96 | drm_local_map_t hws_map; | 95 | drm_local_map_t hws_map; |
97 | 96 | ||
@@ -104,18 +103,13 @@ typedef struct drm_i915_private { | |||
104 | 103 | ||
105 | wait_queue_head_t irq_queue; | 104 | wait_queue_head_t irq_queue; |
106 | atomic_t irq_received; | 105 | atomic_t irq_received; |
107 | atomic_t irq_emited; | 106 | atomic_t irq_emitted; |
108 | 107 | ||
109 | int tex_lru_log_granularity; | 108 | int tex_lru_log_granularity; |
110 | int allow_batchbuffer; | 109 | int allow_batchbuffer; |
111 | struct mem_block *agp_heap; | 110 | struct mem_block *agp_heap; |
112 | unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; | 111 | unsigned int sr01, adpa, ppcr, dvob, dvoc, lvds; |
113 | int vblank_pipe; | 112 | int vblank_pipe; |
114 | spinlock_t user_irq_lock; | ||
115 | int user_irq_refcount; | ||
116 | int fence_irq_on; | ||
117 | uint32_t irq_enable_reg; | ||
118 | int irq_enabled; | ||
119 | 113 | ||
120 | spinlock_t swaps_lock; | 114 | spinlock_t swaps_lock; |
121 | drm_i915_vbl_swap_t vbl_swaps; | 115 | drm_i915_vbl_swap_t vbl_swaps; |
@@ -125,6 +119,7 @@ typedef struct drm_i915_private { | |||
125 | u8 saveLBB; | 119 | u8 saveLBB; |
126 | u32 saveDSPACNTR; | 120 | u32 saveDSPACNTR; |
127 | u32 saveDSPBCNTR; | 121 | u32 saveDSPBCNTR; |
122 | u32 saveDSPARB; | ||
128 | u32 savePIPEACONF; | 123 | u32 savePIPEACONF; |
129 | u32 savePIPEBCONF; | 124 | u32 savePIPEBCONF; |
130 | u32 savePIPEASRC; | 125 | u32 savePIPEASRC; |
@@ -194,6 +189,7 @@ typedef struct drm_i915_private { | |||
194 | u32 saveIIR; | 189 | u32 saveIIR; |
195 | u32 saveIMR; | 190 | u32 saveIMR; |
196 | u32 saveCACHE_MODE_0; | 191 | u32 saveCACHE_MODE_0; |
192 | u32 saveD_STATE; | ||
197 | u32 saveDSPCLK_GATE_D; | 193 | u32 saveDSPCLK_GATE_D; |
198 | u32 saveMI_ARB_STATE; | 194 | u32 saveMI_ARB_STATE; |
199 | u32 saveSWF0[16]; | 195 | u32 saveSWF0[16]; |
@@ -203,10 +199,10 @@ typedef struct drm_i915_private { | |||
203 | u8 saveSR[8]; | 199 | u8 saveSR[8]; |
204 | u8 saveGR[25]; | 200 | u8 saveGR[25]; |
205 | u8 saveAR_INDEX; | 201 | u8 saveAR_INDEX; |
206 | u8 saveAR[20]; | 202 | u8 saveAR[21]; |
207 | u8 saveDACMASK; | 203 | u8 saveDACMASK; |
208 | u8 saveDACDATA[256*3]; /* 256 3-byte colors */ | 204 | u8 saveDACDATA[256*3]; /* 256 3-byte colors */ |
209 | u8 saveCR[36]; | 205 | u8 saveCR[37]; |
210 | } drm_i915_private_t; | 206 | } drm_i915_private_t; |
211 | 207 | ||
212 | extern struct drm_ioctl_desc i915_ioctls[]; | 208 | extern struct drm_ioctl_desc i915_ioctls[]; |
@@ -222,7 +218,7 @@ extern void i915_driver_preclose(struct drm_device *dev, | |||
222 | extern int i915_driver_device_is_agp(struct drm_device * dev); | 218 | extern int i915_driver_device_is_agp(struct drm_device * dev); |
223 | extern long i915_compat_ioctl(struct file *filp, unsigned int cmd, | 219 | extern long i915_compat_ioctl(struct file *filp, unsigned int cmd, |
224 | unsigned long arg); | 220 | unsigned long arg); |
225 | extern void i915_dispatch_flip(struct drm_device * dev, int pipes, int sync); | 221 | |
226 | /* i915_irq.c */ | 222 | /* i915_irq.c */ |
227 | extern int i915_irq_emit(struct drm_device *dev, void *data, | 223 | extern int i915_irq_emit(struct drm_device *dev, void *data, |
228 | struct drm_file *file_priv); | 224 | struct drm_file *file_priv); |
@@ -233,7 +229,7 @@ extern int i915_driver_vblank_wait(struct drm_device *dev, unsigned int *sequenc | |||
233 | extern int i915_driver_vblank_wait2(struct drm_device *dev, unsigned int *sequence); | 229 | extern int i915_driver_vblank_wait2(struct drm_device *dev, unsigned int *sequence); |
234 | extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS); | 230 | extern irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS); |
235 | extern void i915_driver_irq_preinstall(struct drm_device * dev); | 231 | extern void i915_driver_irq_preinstall(struct drm_device * dev); |
236 | extern int i915_driver_irq_postinstall(struct drm_device * dev); | 232 | extern void i915_driver_irq_postinstall(struct drm_device * dev); |
237 | extern void i915_driver_irq_uninstall(struct drm_device * dev); | 233 | extern void i915_driver_irq_uninstall(struct drm_device * dev); |
238 | extern int i915_vblank_pipe_set(struct drm_device *dev, void *data, | 234 | extern int i915_vblank_pipe_set(struct drm_device *dev, void *data, |
239 | struct drm_file *file_priv); | 235 | struct drm_file *file_priv); |
@@ -241,9 +237,6 @@ extern int i915_vblank_pipe_get(struct drm_device *dev, void *data, | |||
241 | struct drm_file *file_priv); | 237 | struct drm_file *file_priv); |
242 | extern int i915_vblank_swap(struct drm_device *dev, void *data, | 238 | extern int i915_vblank_swap(struct drm_device *dev, void *data, |
243 | struct drm_file *file_priv); | 239 | struct drm_file *file_priv); |
244 | extern int i915_enable_vblank(struct drm_device *dev, int crtc); | ||
245 | extern void i915_disable_vblank(struct drm_device *dev, int crtc); | ||
246 | extern u32 i915_get_vblank_counter(struct drm_device *dev, int crtc); | ||
247 | 240 | ||
248 | /* i915_mem.c */ | 241 | /* i915_mem.c */ |
249 | extern int i915_mem_alloc(struct drm_device *dev, void *data, | 242 | extern int i915_mem_alloc(struct drm_device *dev, void *data, |
@@ -388,91 +381,21 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | |||
388 | 381 | ||
389 | /* Interrupt bits: | 382 | /* Interrupt bits: |
390 | */ | 383 | */ |
391 | #define I915_PIPE_CONTROL_NOTIFY_INTERRUPT (1<<18) | 384 | #define USER_INT_FLAG (1<<1) |
392 | #define I915_DISPLAY_PORT_INTERRUPT (1<<17) | 385 | #define VSYNC_PIPEB_FLAG (1<<5) |
393 | #define I915_RENDER_COMMAND_PARSER_ERROR_INTERRUPT (1<<15) | 386 | #define VSYNC_PIPEA_FLAG (1<<7) |
394 | #define I915_GMCH_THERMAL_SENSOR_EVENT_INTERRUPT (1<<14) | 387 | #define HWB_OOM_FLAG (1<<13) /* binner out of memory */ |
395 | #define I915_HWB_OOM_INTERRUPT (1<<13) /* binner out of memory */ | ||
396 | #define I915_SYNC_STATUS_INTERRUPT (1<<12) | ||
397 | #define I915_DISPLAY_PLANE_A_FLIP_PENDING_INTERRUPT (1<<11) | ||
398 | #define I915_DISPLAY_PLANE_B_FLIP_PENDING_INTERRUPT (1<<10) | ||
399 | #define I915_OVERLAY_PLANE_FLIP_PENDING_INTERRUPT (1<<9) | ||
400 | #define I915_DISPLAY_PLANE_C_FLIP_PENDING_INTERRUPT (1<<8) | ||
401 | #define I915_DISPLAY_PIPE_A_VBLANK_INTERRUPT (1<<7) | ||
402 | #define I915_DISPLAY_PIPE_A_EVENT_INTERRUPT (1<<6) | ||
403 | #define I915_DISPLAY_PIPE_B_VBLANK_INTERRUPT (1<<5) | ||
404 | #define I915_DISPLAY_PIPE_B_EVENT_INTERRUPT (1<<4) | ||
405 | #define I915_DEBUG_INTERRUPT (1<<2) | ||
406 | #define I915_USER_INTERRUPT (1<<1) | ||
407 | |||
408 | 388 | ||
409 | #define I915REG_HWSTAM 0x02098 | 389 | #define I915REG_HWSTAM 0x02098 |
410 | #define I915REG_INT_IDENTITY_R 0x020a4 | 390 | #define I915REG_INT_IDENTITY_R 0x020a4 |
411 | #define I915REG_INT_MASK_R 0x020a8 | 391 | #define I915REG_INT_MASK_R 0x020a8 |
412 | #define I915REG_INT_ENABLE_R 0x020a0 | 392 | #define I915REG_INT_ENABLE_R 0x020a0 |
413 | #define I915REG_INSTPM 0x020c0 | ||
414 | |||
415 | #define PIPEADSL 0x70000 | ||
416 | #define PIPEBDSL 0x71000 | ||
417 | 393 | ||
418 | #define I915REG_PIPEASTAT 0x70024 | 394 | #define I915REG_PIPEASTAT 0x70024 |
419 | #define I915REG_PIPEBSTAT 0x71024 | 395 | #define I915REG_PIPEBSTAT 0x71024 |
420 | /* | ||
421 | * The two pipe frame counter registers are not synchronized, so | ||
422 | * reading a stable value is somewhat tricky. The following code | ||
423 | * should work: | ||
424 | * | ||
425 | * do { | ||
426 | * high1 = ((INREG(PIPEAFRAMEHIGH) & PIPE_FRAME_HIGH_MASK) >> | ||
427 | * PIPE_FRAME_HIGH_SHIFT; | ||
428 | * low1 = ((INREG(PIPEAFRAMEPIXEL) & PIPE_FRAME_LOW_MASK) >> | ||
429 | * PIPE_FRAME_LOW_SHIFT); | ||
430 | * high2 = ((INREG(PIPEAFRAMEHIGH) & PIPE_FRAME_HIGH_MASK) >> | ||
431 | * PIPE_FRAME_HIGH_SHIFT); | ||
432 | * } while (high1 != high2); | ||
433 | * frame = (high1 << 8) | low1; | ||
434 | */ | ||
435 | #define PIPEAFRAMEHIGH 0x70040 | ||
436 | #define PIPEBFRAMEHIGH 0x71040 | ||
437 | #define PIPE_FRAME_HIGH_MASK 0x0000ffff | ||
438 | #define PIPE_FRAME_HIGH_SHIFT 0 | ||
439 | #define PIPEAFRAMEPIXEL 0x70044 | ||
440 | #define PIPEBFRAMEPIXEL 0x71044 | ||
441 | 396 | ||
442 | #define PIPE_FRAME_LOW_MASK 0xff000000 | 397 | #define I915_VBLANK_INTERRUPT_ENABLE (1UL<<17) |
443 | #define PIPE_FRAME_LOW_SHIFT 24 | 398 | #define I915_VBLANK_CLEAR (1UL<<1) |
444 | /* | ||
445 | * Pixel within the current frame is counted in the PIPEAFRAMEPIXEL register | ||
446 | * and is 24 bits wide. | ||
447 | */ | ||
448 | #define PIPE_PIXEL_MASK 0x00ffffff | ||
449 | #define PIPE_PIXEL_SHIFT 0 | ||
450 | |||
451 | #define I915_FIFO_UNDERRUN_STATUS (1UL<<31) | ||
452 | #define I915_CRC_ERROR_ENABLE (1UL<<29) | ||
453 | #define I915_CRC_DONE_ENABLE (1UL<<28) | ||
454 | #define I915_GMBUS_EVENT_ENABLE (1UL<<27) | ||
455 | #define I915_VSYNC_INTERRUPT_ENABLE (1UL<<25) | ||
456 | #define I915_DISPLAY_LINE_COMPARE_ENABLE (1UL<<24) | ||
457 | #define I915_DPST_EVENT_ENABLE (1UL<<23) | ||
458 | #define I915_LEGACY_BLC_EVENT_ENABLE (1UL<<22) | ||
459 | #define I915_ODD_FIELD_INTERRUPT_ENABLE (1UL<<21) | ||
460 | #define I915_EVEN_FIELD_INTERRUPT_ENABLE (1UL<<20) | ||
461 | #define I915_START_VBLANK_INTERRUPT_ENABLE (1UL<<18) /* 965 or later */ | ||
462 | #define I915_VBLANK_INTERRUPT_ENABLE (1UL<<17) | ||
463 | #define I915_OVERLAY_UPDATED_ENABLE (1UL<<16) | ||
464 | #define I915_CRC_ERROR_INTERRUPT_STATUS (1UL<<13) | ||
465 | #define I915_CRC_DONE_INTERRUPT_STATUS (1UL<<12) | ||
466 | #define I915_GMBUS_INTERRUPT_STATUS (1UL<<11) | ||
467 | #define I915_VSYNC_INTERRUPT_STATUS (1UL<<9) | ||
468 | #define I915_DISPLAY_LINE_COMPARE_STATUS (1UL<<8) | ||
469 | #define I915_DPST_EVENT_STATUS (1UL<<7) | ||
470 | #define I915_LEGACY_BLC_EVENT_STATUS (1UL<<6) | ||
471 | #define I915_ODD_FIELD_INTERRUPT_STATUS (1UL<<5) | ||
472 | #define I915_EVEN_FIELD_INTERRUPT_STATUS (1UL<<4) | ||
473 | #define I915_START_VBLANK_INTERRUPT_STATUS (1UL<<2) /* 965 or later */ | ||
474 | #define I915_VBLANK_INTERRUPT_STATUS (1UL<<1) | ||
475 | #define I915_OVERLAY_UPDATED_STATUS (1UL<<0) | ||
476 | 399 | ||
477 | #define SRX_INDEX 0x3c4 | 400 | #define SRX_INDEX 0x3c4 |
478 | #define SRX_DATA 0x3c5 | 401 | #define SRX_DATA 0x3c5 |
@@ -749,6 +672,8 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | |||
749 | /** P1 value is 2 greater than this field */ | 672 | /** P1 value is 2 greater than this field */ |
750 | # define VGA0_PD_P1_MASK (0x1f << 0) | 673 | # define VGA0_PD_P1_MASK (0x1f << 0) |
751 | 674 | ||
675 | /* PCI D state control register */ | ||
676 | #define D_STATE 0x6104 | ||
752 | #define DSPCLK_GATE_D 0x6200 | 677 | #define DSPCLK_GATE_D 0x6200 |
753 | 678 | ||
754 | /* I830 CRTC registers */ | 679 | /* I830 CRTC registers */ |
@@ -1059,6 +984,12 @@ extern int i915_wait_ring(struct drm_device * dev, int n, const char *caller); | |||
1059 | #define PIPECONF_INTERLACE_W_FIELD_INDICATION (6 << 21) | 984 | #define PIPECONF_INTERLACE_W_FIELD_INDICATION (6 << 21) |
1060 | #define PIPECONF_INTERLACE_FIELD_0_ONLY (7 << 21) | 985 | #define PIPECONF_INTERLACE_FIELD_0_ONLY (7 << 21) |
1061 | 986 | ||
987 | #define DSPARB 0x70030 | ||
988 | #define DSPARB_CSTART_MASK (0x7f << 7) | ||
989 | #define DSPARB_CSTART_SHIFT 7 | ||
990 | #define DSPARB_BSTART_MASK (0x7f) | ||
991 | #define DSPARB_BSTART_SHIFT 0 | ||
992 | |||
1062 | #define PIPEBCONF 0x71008 | 993 | #define PIPEBCONF 0x71008 |
1063 | #define PIPEBCONF_ENABLE (1<<31) | 994 | #define PIPEBCONF_ENABLE (1<<31) |
1064 | #define PIPEBCONF_DISABLE 0 | 995 | #define PIPEBCONF_DISABLE 0 |
diff --git a/drivers/char/drm/i915_irq.c b/drivers/char/drm/i915_irq.c index 023ce66ef3ab..f7f16e7a8bf3 100644 --- a/drivers/char/drm/i915_irq.c +++ b/drivers/char/drm/i915_irq.c | |||
@@ -38,109 +38,6 @@ | |||
38 | #define MAX_NOPID ((u32)~0) | 38 | #define MAX_NOPID ((u32)~0) |
39 | 39 | ||
40 | /** | 40 | /** |
41 | * i915_get_pipe - return the the pipe associated with a given plane | ||
42 | * @dev: DRM device | ||
43 | * @plane: plane to look for | ||
44 | * | ||
45 | * The Intel Mesa & 2D drivers call the vblank routines with a plane number | ||
46 | * rather than a pipe number, since they may not always be equal. This routine | ||
47 | * maps the given @plane back to a pipe number. | ||
48 | */ | ||
49 | static int | ||
50 | i915_get_pipe(struct drm_device *dev, int plane) | ||
51 | { | ||
52 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||
53 | u32 dspcntr; | ||
54 | |||
55 | dspcntr = plane ? I915_READ(DSPBCNTR) : I915_READ(DSPACNTR); | ||
56 | |||
57 | return dspcntr & DISPPLANE_SEL_PIPE_MASK ? 1 : 0; | ||
58 | } | ||
59 | |||
60 | /** | ||
61 | * i915_get_plane - return the the plane associated with a given pipe | ||
62 | * @dev: DRM device | ||
63 | * @pipe: pipe to look for | ||
64 | * | ||
65 | * The Intel Mesa & 2D drivers call the vblank routines with a plane number | ||
66 | * rather than a plane number, since they may not always be equal. This routine | ||
67 | * maps the given @pipe back to a plane number. | ||
68 | */ | ||
69 | static int | ||
70 | i915_get_plane(struct drm_device *dev, int pipe) | ||
71 | { | ||
72 | if (i915_get_pipe(dev, 0) == pipe) | ||
73 | return 0; | ||
74 | return 1; | ||
75 | } | ||
76 | |||
77 | /** | ||
78 | * i915_pipe_enabled - check if a pipe is enabled | ||
79 | * @dev: DRM device | ||
80 | * @pipe: pipe to check | ||
81 | * | ||
82 | * Reading certain registers when the pipe is disabled can hang the chip. | ||
83 | * Use this routine to make sure the PLL is running and the pipe is active | ||
84 | * before reading such registers if unsure. | ||
85 | */ | ||
86 | static int | ||
87 | i915_pipe_enabled(struct drm_device *dev, int pipe) | ||
88 | { | ||
89 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||
90 | unsigned long pipeconf = pipe ? PIPEBCONF : PIPEACONF; | ||
91 | |||
92 | if (I915_READ(pipeconf) & PIPEACONF_ENABLE) | ||
93 | return 1; | ||
94 | |||
95 | return 0; | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * Emit a synchronous flip. | ||
100 | * | ||
101 | * This function must be called with the drawable spinlock held. | ||
102 | */ | ||
103 | static void | ||
104 | i915_dispatch_vsync_flip(struct drm_device *dev, struct drm_drawable_info *drw, | ||
105 | int plane) | ||
106 | { | ||
107 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||
108 | drm_i915_sarea_t *sarea_priv = dev_priv->sarea_priv; | ||
109 | u16 x1, y1, x2, y2; | ||
110 | int pf_planes = 1 << plane; | ||
111 | |||
112 | /* If the window is visible on the other plane, we have to flip on that | ||
113 | * plane as well. | ||
114 | */ | ||
115 | if (plane == 1) { | ||
116 | x1 = sarea_priv->planeA_x; | ||
117 | y1 = sarea_priv->planeA_y; | ||
118 | x2 = x1 + sarea_priv->planeA_w; | ||
119 | y2 = y1 + sarea_priv->planeA_h; | ||
120 | } else { | ||
121 | x1 = sarea_priv->planeB_x; | ||
122 | y1 = sarea_priv->planeB_y; | ||
123 | x2 = x1 + sarea_priv->planeB_w; | ||
124 | y2 = y1 + sarea_priv->planeB_h; | ||
125 | } | ||
126 | |||
127 | if (x2 > 0 && y2 > 0) { | ||
128 | int i, num_rects = drw->num_rects; | ||
129 | struct drm_clip_rect *rect = drw->rects; | ||
130 | |||
131 | for (i = 0; i < num_rects; i++) | ||
132 | if (!(rect[i].x1 >= x2 || rect[i].y1 >= y2 || | ||
133 | rect[i].x2 <= x1 || rect[i].y2 <= y1)) { | ||
134 | pf_planes = 0x3; | ||
135 | |||
136 | break; | ||
137 | } | ||
138 | } | ||
139 | |||
140 | i915_dispatch_flip(dev, pf_planes, 1); | ||
141 | } | ||
142 | |||
143 | /** | ||
144 | * Emit blits for scheduled buffer swaps. | 41 | * Emit blits for scheduled buffer swaps. |
145 | * | 42 | * |
146 | * This function will be called with the HW lock held. | 43 | * This function will be called with the HW lock held. |
@@ -148,19 +45,20 @@ i915_dispatch_vsync_flip(struct drm_device *dev, struct drm_drawable_info *drw, | |||
148 | static void i915_vblank_tasklet(struct drm_device *dev) | 45 | static void i915_vblank_tasklet(struct drm_device *dev) |
149 | { | 46 | { |
150 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 47 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
48 | unsigned long irqflags; | ||
151 | struct list_head *list, *tmp, hits, *hit; | 49 | struct list_head *list, *tmp, hits, *hit; |
152 | int nhits, nrects, slice[2], upper[2], lower[2], i, num_pages; | 50 | int nhits, nrects, slice[2], upper[2], lower[2], i; |
153 | unsigned counter[2]; | 51 | unsigned counter[2] = { atomic_read(&dev->vbl_received), |
52 | atomic_read(&dev->vbl_received2) }; | ||
154 | struct drm_drawable_info *drw; | 53 | struct drm_drawable_info *drw; |
155 | drm_i915_sarea_t *sarea_priv = dev_priv->sarea_priv; | 54 | drm_i915_sarea_t *sarea_priv = dev_priv->sarea_priv; |
156 | u32 cpp = dev_priv->cpp, offsets[3]; | 55 | u32 cpp = dev_priv->cpp; |
157 | u32 cmd = (cpp == 4) ? (XY_SRC_COPY_BLT_CMD | | 56 | u32 cmd = (cpp == 4) ? (XY_SRC_COPY_BLT_CMD | |
158 | XY_SRC_COPY_BLT_WRITE_ALPHA | | 57 | XY_SRC_COPY_BLT_WRITE_ALPHA | |
159 | XY_SRC_COPY_BLT_WRITE_RGB) | 58 | XY_SRC_COPY_BLT_WRITE_RGB) |
160 | : XY_SRC_COPY_BLT_CMD; | 59 | : XY_SRC_COPY_BLT_CMD; |
161 | u32 src_pitch = sarea_priv->pitch * cpp; | 60 | u32 src_pitch = sarea_priv->pitch * cpp; |
162 | u32 dst_pitch = sarea_priv->pitch * cpp; | 61 | u32 dst_pitch = sarea_priv->pitch * cpp; |
163 | /* COPY rop (0xcc), map cpp to magic color depth constants */ | ||
164 | u32 ropcpp = (0xcc << 16) | ((cpp - 1) << 24); | 62 | u32 ropcpp = (0xcc << 16) | ((cpp - 1) << 24); |
165 | RING_LOCALS; | 63 | RING_LOCALS; |
166 | 64 | ||
@@ -173,34 +71,24 @@ static void i915_vblank_tasklet(struct drm_device *dev) | |||
173 | src_pitch >>= 2; | 71 | src_pitch >>= 2; |
174 | } | 72 | } |
175 | 73 | ||
176 | counter[0] = drm_vblank_count(dev, 0); | ||
177 | counter[1] = drm_vblank_count(dev, 1); | ||
178 | |||
179 | DRM_DEBUG("\n"); | 74 | DRM_DEBUG("\n"); |
180 | 75 | ||
181 | INIT_LIST_HEAD(&hits); | 76 | INIT_LIST_HEAD(&hits); |
182 | 77 | ||
183 | nhits = nrects = 0; | 78 | nhits = nrects = 0; |
184 | 79 | ||
185 | /* No irqsave/restore necessary. This tasklet may be run in an | 80 | spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); |
186 | * interrupt context or normal context, but we don't have to worry | ||
187 | * about getting interrupted by something acquiring the lock, because | ||
188 | * we are the interrupt context thing that acquires the lock. | ||
189 | */ | ||
190 | spin_lock(&dev_priv->swaps_lock); | ||
191 | 81 | ||
192 | /* Find buffer swaps scheduled for this vertical blank */ | 82 | /* Find buffer swaps scheduled for this vertical blank */ |
193 | list_for_each_safe(list, tmp, &dev_priv->vbl_swaps.head) { | 83 | list_for_each_safe(list, tmp, &dev_priv->vbl_swaps.head) { |
194 | drm_i915_vbl_swap_t *vbl_swap = | 84 | drm_i915_vbl_swap_t *vbl_swap = |
195 | list_entry(list, drm_i915_vbl_swap_t, head); | 85 | list_entry(list, drm_i915_vbl_swap_t, head); |
196 | int pipe = i915_get_pipe(dev, vbl_swap->plane); | ||
197 | 86 | ||
198 | if ((counter[pipe] - vbl_swap->sequence) > (1<<23)) | 87 | if ((counter[vbl_swap->pipe] - vbl_swap->sequence) > (1<<23)) |
199 | continue; | 88 | continue; |
200 | 89 | ||
201 | list_del(list); | 90 | list_del(list); |
202 | dev_priv->swaps_pending--; | 91 | dev_priv->swaps_pending--; |
203 | drm_vblank_put(dev, pipe); | ||
204 | 92 | ||
205 | spin_unlock(&dev_priv->swaps_lock); | 93 | spin_unlock(&dev_priv->swaps_lock); |
206 | spin_lock(&dev->drw_lock); | 94 | spin_lock(&dev->drw_lock); |
@@ -238,23 +126,43 @@ static void i915_vblank_tasklet(struct drm_device *dev) | |||
238 | spin_lock(&dev_priv->swaps_lock); | 126 | spin_lock(&dev_priv->swaps_lock); |
239 | } | 127 | } |
240 | 128 | ||
241 | spin_unlock(&dev_priv->swaps_lock); | 129 | if (nhits == 0) { |
242 | 130 | spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); | |
243 | if (nhits == 0) | ||
244 | return; | 131 | return; |
132 | } | ||
133 | |||
134 | spin_unlock(&dev_priv->swaps_lock); | ||
245 | 135 | ||
246 | i915_kernel_lost_context(dev); | 136 | i915_kernel_lost_context(dev); |
247 | 137 | ||
248 | upper[0] = upper[1] = 0; | 138 | if (IS_I965G(dev)) { |
249 | slice[0] = max(sarea_priv->planeA_h / nhits, 1); | 139 | BEGIN_LP_RING(4); |
250 | slice[1] = max(sarea_priv->planeB_h / nhits, 1); | 140 | |
251 | lower[0] = sarea_priv->planeA_y + slice[0]; | 141 | OUT_RING(GFX_OP_DRAWRECT_INFO_I965); |
252 | lower[1] = sarea_priv->planeB_y + slice[0]; | 142 | OUT_RING(0); |
143 | OUT_RING(((sarea_priv->width - 1) & 0xffff) | ((sarea_priv->height - 1) << 16)); | ||
144 | OUT_RING(0); | ||
145 | ADVANCE_LP_RING(); | ||
146 | } else { | ||
147 | BEGIN_LP_RING(6); | ||
253 | 148 | ||
254 | offsets[0] = sarea_priv->front_offset; | 149 | OUT_RING(GFX_OP_DRAWRECT_INFO); |
255 | offsets[1] = sarea_priv->back_offset; | 150 | OUT_RING(0); |
256 | offsets[2] = sarea_priv->third_offset; | 151 | OUT_RING(0); |
257 | num_pages = sarea_priv->third_handle ? 3 : 2; | 152 | OUT_RING(sarea_priv->width | sarea_priv->height << 16); |
153 | OUT_RING(sarea_priv->width | sarea_priv->height << 16); | ||
154 | OUT_RING(0); | ||
155 | |||
156 | ADVANCE_LP_RING(); | ||
157 | } | ||
158 | |||
159 | sarea_priv->ctxOwner = DRM_KERNEL_CONTEXT; | ||
160 | |||
161 | upper[0] = upper[1] = 0; | ||
162 | slice[0] = max(sarea_priv->pipeA_h / nhits, 1); | ||
163 | slice[1] = max(sarea_priv->pipeB_h / nhits, 1); | ||
164 | lower[0] = sarea_priv->pipeA_y + slice[0]; | ||
165 | lower[1] = sarea_priv->pipeB_y + slice[0]; | ||
258 | 166 | ||
259 | spin_lock(&dev->drw_lock); | 167 | spin_lock(&dev->drw_lock); |
260 | 168 | ||
@@ -266,8 +174,6 @@ static void i915_vblank_tasklet(struct drm_device *dev) | |||
266 | for (i = 0; i++ < nhits; | 174 | for (i = 0; i++ < nhits; |
267 | upper[0] = lower[0], lower[0] += slice[0], | 175 | upper[0] = lower[0], lower[0] += slice[0], |
268 | upper[1] = lower[1], lower[1] += slice[1]) { | 176 | upper[1] = lower[1], lower[1] += slice[1]) { |
269 | int init_drawrect = 1; | ||
270 | |||
271 | if (i == nhits) | 177 | if (i == nhits) |
272 | lower[0] = lower[1] = sarea_priv->height; | 178 | lower[0] = lower[1] = sarea_priv->height; |
273 | 179 | ||
@@ -275,7 +181,7 @@ static void i915_vblank_tasklet(struct drm_device *dev) | |||
275 | drm_i915_vbl_swap_t *swap_hit = | 181 | drm_i915_vbl_swap_t *swap_hit = |
276 | list_entry(hit, drm_i915_vbl_swap_t, head); | 182 | list_entry(hit, drm_i915_vbl_swap_t, head); |
277 | struct drm_clip_rect *rect; | 183 | struct drm_clip_rect *rect; |
278 | int num_rects, plane, front, back; | 184 | int num_rects, pipe; |
279 | unsigned short top, bottom; | 185 | unsigned short top, bottom; |
280 | 186 | ||
281 | drw = drm_get_drawable_info(dev, swap_hit->drw_id); | 187 | drw = drm_get_drawable_info(dev, swap_hit->drw_id); |
@@ -283,50 +189,10 @@ static void i915_vblank_tasklet(struct drm_device *dev) | |||
283 | if (!drw) | 189 | if (!drw) |
284 | continue; | 190 | continue; |
285 | 191 | ||
286 | plane = swap_hit->plane; | ||
287 | |||
288 | if (swap_hit->flip) { | ||
289 | i915_dispatch_vsync_flip(dev, drw, plane); | ||
290 | continue; | ||
291 | } | ||
292 | |||
293 | if (init_drawrect) { | ||
294 | int width = sarea_priv->width; | ||
295 | int height = sarea_priv->height; | ||
296 | if (IS_I965G(dev)) { | ||
297 | BEGIN_LP_RING(4); | ||
298 | |||
299 | OUT_RING(GFX_OP_DRAWRECT_INFO_I965); | ||
300 | OUT_RING(0); | ||
301 | OUT_RING(((width - 1) & 0xffff) | ((height - 1) << 16)); | ||
302 | OUT_RING(0); | ||
303 | |||
304 | ADVANCE_LP_RING(); | ||
305 | } else { | ||
306 | BEGIN_LP_RING(6); | ||
307 | |||
308 | OUT_RING(GFX_OP_DRAWRECT_INFO); | ||
309 | OUT_RING(0); | ||
310 | OUT_RING(0); | ||
311 | OUT_RING(((width - 1) & 0xffff) | ((height - 1) << 16)); | ||
312 | OUT_RING(0); | ||
313 | OUT_RING(0); | ||
314 | |||
315 | ADVANCE_LP_RING(); | ||
316 | } | ||
317 | |||
318 | sarea_priv->ctxOwner = DRM_KERNEL_CONTEXT; | ||
319 | |||
320 | init_drawrect = 0; | ||
321 | } | ||
322 | |||
323 | rect = drw->rects; | 192 | rect = drw->rects; |
324 | top = upper[plane]; | 193 | pipe = swap_hit->pipe; |
325 | bottom = lower[plane]; | 194 | top = upper[pipe]; |
326 | 195 | bottom = lower[pipe]; | |
327 | front = (dev_priv->sarea_priv->pf_current_page >> | ||
328 | (2 * plane)) & 0x3; | ||
329 | back = (front + 1) % num_pages; | ||
330 | 196 | ||
331 | for (num_rects = drw->num_rects; num_rects--; rect++) { | 197 | for (num_rects = drw->num_rects; num_rects--; rect++) { |
332 | int y1 = max(rect->y1, top); | 198 | int y1 = max(rect->y1, top); |
@@ -341,17 +207,17 @@ static void i915_vblank_tasklet(struct drm_device *dev) | |||
341 | OUT_RING(ropcpp | dst_pitch); | 207 | OUT_RING(ropcpp | dst_pitch); |
342 | OUT_RING((y1 << 16) | rect->x1); | 208 | OUT_RING((y1 << 16) | rect->x1); |
343 | OUT_RING((y2 << 16) | rect->x2); | 209 | OUT_RING((y2 << 16) | rect->x2); |
344 | OUT_RING(offsets[front]); | 210 | OUT_RING(sarea_priv->front_offset); |
345 | OUT_RING((y1 << 16) | rect->x1); | 211 | OUT_RING((y1 << 16) | rect->x1); |
346 | OUT_RING(src_pitch); | 212 | OUT_RING(src_pitch); |
347 | OUT_RING(offsets[back]); | 213 | OUT_RING(sarea_priv->back_offset); |
348 | 214 | ||
349 | ADVANCE_LP_RING(); | 215 | ADVANCE_LP_RING(); |
350 | } | 216 | } |
351 | } | 217 | } |
352 | } | 218 | } |
353 | 219 | ||
354 | spin_unlock(&dev->drw_lock); | 220 | spin_unlock_irqrestore(&dev->drw_lock, irqflags); |
355 | 221 | ||
356 | list_for_each_safe(hit, tmp, &hits) { | 222 | list_for_each_safe(hit, tmp, &hits) { |
357 | drm_i915_vbl_swap_t *swap_hit = | 223 | drm_i915_vbl_swap_t *swap_hit = |
@@ -363,112 +229,67 @@ static void i915_vblank_tasklet(struct drm_device *dev) | |||
363 | } | 229 | } |
364 | } | 230 | } |
365 | 231 | ||
366 | u32 i915_get_vblank_counter(struct drm_device *dev, int plane) | ||
367 | { | ||
368 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||
369 | unsigned long high_frame; | ||
370 | unsigned long low_frame; | ||
371 | u32 high1, high2, low, count; | ||
372 | int pipe; | ||
373 | |||
374 | pipe = i915_get_pipe(dev, plane); | ||
375 | high_frame = pipe ? PIPEBFRAMEHIGH : PIPEAFRAMEHIGH; | ||
376 | low_frame = pipe ? PIPEBFRAMEPIXEL : PIPEAFRAMEPIXEL; | ||
377 | |||
378 | if (!i915_pipe_enabled(dev, pipe)) { | ||
379 | printk(KERN_ERR "trying to get vblank count for disabled " | ||
380 | "pipe %d\n", pipe); | ||
381 | return 0; | ||
382 | } | ||
383 | |||
384 | /* | ||
385 | * High & low register fields aren't synchronized, so make sure | ||
386 | * we get a low value that's stable across two reads of the high | ||
387 | * register. | ||
388 | */ | ||
389 | do { | ||
390 | high1 = ((I915_READ(high_frame) & PIPE_FRAME_HIGH_MASK) >> | ||
391 | PIPE_FRAME_HIGH_SHIFT); | ||
392 | low = ((I915_READ(low_frame) & PIPE_FRAME_LOW_MASK) >> | ||
393 | PIPE_FRAME_LOW_SHIFT); | ||
394 | high2 = ((I915_READ(high_frame) & PIPE_FRAME_HIGH_MASK) >> | ||
395 | PIPE_FRAME_HIGH_SHIFT); | ||
396 | } while (high1 != high2); | ||
397 | |||
398 | count = (high1 << 8) | low; | ||
399 | |||
400 | /* count may be reset by other driver(e.g. 2D driver), | ||
401 | we have no way to know if it is wrapped or resetted | ||
402 | when count is zero. do a rough guess. | ||
403 | */ | ||
404 | if (count == 0 && dev->last_vblank[pipe] < dev->max_vblank_count/2) | ||
405 | dev->last_vblank[pipe] = 0; | ||
406 | |||
407 | return count; | ||
408 | } | ||
409 | |||
410 | irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS) | 232 | irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS) |
411 | { | 233 | { |
412 | struct drm_device *dev = (struct drm_device *) arg; | 234 | struct drm_device *dev = (struct drm_device *) arg; |
413 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 235 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
414 | u32 iir; | 236 | u16 temp; |
415 | u32 pipea_stats, pipeb_stats; | 237 | u32 pipea_stats, pipeb_stats; |
416 | int vblank = 0; | ||
417 | |||
418 | iir = I915_READ(I915REG_INT_IDENTITY_R); | ||
419 | if (iir == 0) { | ||
420 | DRM_DEBUG ("iir 0x%08x im 0x%08x ie 0x%08x pipea 0x%08x pipeb 0x%08x\n", | ||
421 | iir, | ||
422 | I915_READ(I915REG_INT_MASK_R), | ||
423 | I915_READ(I915REG_INT_ENABLE_R), | ||
424 | I915_READ(I915REG_PIPEASTAT), | ||
425 | I915_READ(I915REG_PIPEBSTAT)); | ||
426 | return IRQ_NONE; | ||
427 | } | ||
428 | 238 | ||
429 | /* | 239 | pipea_stats = I915_READ(I915REG_PIPEASTAT); |
430 | * Clear the PIPE(A|B)STAT regs before the IIR otherwise | 240 | pipeb_stats = I915_READ(I915REG_PIPEBSTAT); |
431 | * we may get extra interrupts. | ||
432 | */ | ||
433 | if (iir & I915_DISPLAY_PIPE_A_EVENT_INTERRUPT) { | ||
434 | pipea_stats = I915_READ(I915REG_PIPEASTAT); | ||
435 | if (pipea_stats & (I915_START_VBLANK_INTERRUPT_STATUS| | ||
436 | I915_VBLANK_INTERRUPT_STATUS)) | ||
437 | { | ||
438 | vblank++; | ||
439 | drm_handle_vblank(dev, i915_get_plane(dev, 0)); | ||
440 | } | ||
441 | I915_WRITE(I915REG_PIPEASTAT, pipea_stats); | ||
442 | } | ||
443 | if (iir & I915_DISPLAY_PIPE_B_EVENT_INTERRUPT) { | ||
444 | pipeb_stats = I915_READ(I915REG_PIPEBSTAT); | ||
445 | if (pipeb_stats & (I915_START_VBLANK_INTERRUPT_STATUS| | ||
446 | I915_VBLANK_INTERRUPT_STATUS)) | ||
447 | { | ||
448 | vblank++; | ||
449 | drm_handle_vblank(dev, i915_get_plane(dev, 1)); | ||
450 | } | ||
451 | I915_WRITE(I915REG_PIPEBSTAT, pipeb_stats); | ||
452 | } | ||
453 | 241 | ||
454 | if (dev_priv->sarea_priv) | 242 | temp = I915_READ16(I915REG_INT_IDENTITY_R); |
455 | dev_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); | ||
456 | 243 | ||
457 | I915_WRITE(I915REG_INT_IDENTITY_R, iir); | 244 | temp &= (USER_INT_FLAG | VSYNC_PIPEA_FLAG | VSYNC_PIPEB_FLAG); |
458 | (void) I915_READ(I915REG_INT_IDENTITY_R); /* Flush posted write */ | ||
459 | 245 | ||
460 | if (iir & I915_USER_INTERRUPT) { | 246 | DRM_DEBUG("%s flag=%08x\n", __FUNCTION__, temp); |
247 | |||
248 | if (temp == 0) | ||
249 | return IRQ_NONE; | ||
250 | |||
251 | I915_WRITE16(I915REG_INT_IDENTITY_R, temp); | ||
252 | (void) I915_READ16(I915REG_INT_IDENTITY_R); | ||
253 | DRM_READMEMORYBARRIER(); | ||
254 | |||
255 | dev_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); | ||
256 | |||
257 | if (temp & USER_INT_FLAG) | ||
461 | DRM_WAKEUP(&dev_priv->irq_queue); | 258 | DRM_WAKEUP(&dev_priv->irq_queue); |
462 | } | 259 | |
463 | if (vblank) { | 260 | if (temp & (VSYNC_PIPEA_FLAG | VSYNC_PIPEB_FLAG)) { |
261 | int vblank_pipe = dev_priv->vblank_pipe; | ||
262 | |||
263 | if ((vblank_pipe & | ||
264 | (DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B)) | ||
265 | == (DRM_I915_VBLANK_PIPE_A | DRM_I915_VBLANK_PIPE_B)) { | ||
266 | if (temp & VSYNC_PIPEA_FLAG) | ||
267 | atomic_inc(&dev->vbl_received); | ||
268 | if (temp & VSYNC_PIPEB_FLAG) | ||
269 | atomic_inc(&dev->vbl_received2); | ||
270 | } else if (((temp & VSYNC_PIPEA_FLAG) && | ||
271 | (vblank_pipe & DRM_I915_VBLANK_PIPE_A)) || | ||
272 | ((temp & VSYNC_PIPEB_FLAG) && | ||
273 | (vblank_pipe & DRM_I915_VBLANK_PIPE_B))) | ||
274 | atomic_inc(&dev->vbl_received); | ||
275 | |||
276 | DRM_WAKEUP(&dev->vbl_queue); | ||
277 | drm_vbl_send_signals(dev); | ||
278 | |||
464 | if (dev_priv->swaps_pending > 0) | 279 | if (dev_priv->swaps_pending > 0) |
465 | drm_locked_tasklet(dev, i915_vblank_tasklet); | 280 | drm_locked_tasklet(dev, i915_vblank_tasklet); |
281 | I915_WRITE(I915REG_PIPEASTAT, | ||
282 | pipea_stats|I915_VBLANK_INTERRUPT_ENABLE| | ||
283 | I915_VBLANK_CLEAR); | ||
284 | I915_WRITE(I915REG_PIPEBSTAT, | ||
285 | pipeb_stats|I915_VBLANK_INTERRUPT_ENABLE| | ||
286 | I915_VBLANK_CLEAR); | ||
466 | } | 287 | } |
467 | 288 | ||
468 | return IRQ_HANDLED; | 289 | return IRQ_HANDLED; |
469 | } | 290 | } |
470 | 291 | ||
471 | static int i915_emit_irq(struct drm_device *dev) | 292 | static int i915_emit_irq(struct drm_device * dev) |
472 | { | 293 | { |
473 | drm_i915_private_t *dev_priv = dev->dev_private; | 294 | drm_i915_private_t *dev_priv = dev->dev_private; |
474 | RING_LOCALS; | 295 | RING_LOCALS; |
@@ -515,12 +336,42 @@ static int i915_wait_irq(struct drm_device * dev, int irq_nr) | |||
515 | READ_BREADCRUMB(dev_priv), (int)dev_priv->counter); | 336 | READ_BREADCRUMB(dev_priv), (int)dev_priv->counter); |
516 | } | 337 | } |
517 | 338 | ||
518 | if (dev_priv->sarea_priv) | 339 | dev_priv->sarea_priv->last_dispatch = READ_BREADCRUMB(dev_priv); |
519 | dev_priv->sarea_priv->last_dispatch = | ||
520 | READ_BREADCRUMB(dev_priv); | ||
521 | return ret; | 340 | return ret; |
522 | } | 341 | } |
523 | 342 | ||
343 | static int i915_driver_vblank_do_wait(struct drm_device *dev, unsigned int *sequence, | ||
344 | atomic_t *counter) | ||
345 | { | ||
346 | drm_i915_private_t *dev_priv = dev->dev_private; | ||
347 | unsigned int cur_vblank; | ||
348 | int ret = 0; | ||
349 | |||
350 | if (!dev_priv) { | ||
351 | DRM_ERROR("called with no initialization\n"); | ||
352 | return -EINVAL; | ||
353 | } | ||
354 | |||
355 | DRM_WAIT_ON(ret, dev->vbl_queue, 3 * DRM_HZ, | ||
356 | (((cur_vblank = atomic_read(counter)) | ||
357 | - *sequence) <= (1<<23))); | ||
358 | |||
359 | *sequence = cur_vblank; | ||
360 | |||
361 | return ret; | ||
362 | } | ||
363 | |||
364 | |||
365 | int i915_driver_vblank_wait(struct drm_device *dev, unsigned int *sequence) | ||
366 | { | ||
367 | return i915_driver_vblank_do_wait(dev, sequence, &dev->vbl_received); | ||
368 | } | ||
369 | |||
370 | int i915_driver_vblank_wait2(struct drm_device *dev, unsigned int *sequence) | ||
371 | { | ||
372 | return i915_driver_vblank_do_wait(dev, sequence, &dev->vbl_received2); | ||
373 | } | ||
374 | |||
524 | /* Needs the lock as it touches the ring. | 375 | /* Needs the lock as it touches the ring. |
525 | */ | 376 | */ |
526 | int i915_irq_emit(struct drm_device *dev, void *data, | 377 | int i915_irq_emit(struct drm_device *dev, void *data, |
@@ -563,96 +414,18 @@ int i915_irq_wait(struct drm_device *dev, void *data, | |||
563 | return i915_wait_irq(dev, irqwait->irq_seq); | 414 | return i915_wait_irq(dev, irqwait->irq_seq); |
564 | } | 415 | } |
565 | 416 | ||
566 | int i915_enable_vblank(struct drm_device *dev, int plane) | ||
567 | { | ||
568 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||
569 | int pipe = i915_get_pipe(dev, plane); | ||
570 | u32 pipestat_reg = 0; | ||
571 | u32 pipestat; | ||
572 | |||
573 | switch (pipe) { | ||
574 | case 0: | ||
575 | pipestat_reg = I915REG_PIPEASTAT; | ||
576 | dev_priv->irq_enable_reg |= I915_DISPLAY_PIPE_A_EVENT_INTERRUPT; | ||
577 | break; | ||
578 | case 1: | ||
579 | pipestat_reg = I915REG_PIPEBSTAT; | ||
580 | dev_priv->irq_enable_reg |= I915_DISPLAY_PIPE_B_EVENT_INTERRUPT; | ||
581 | break; | ||
582 | default: | ||
583 | DRM_ERROR("tried to enable vblank on non-existent pipe %d\n", | ||
584 | pipe); | ||
585 | break; | ||
586 | } | ||
587 | |||
588 | if (pipestat_reg) | ||
589 | { | ||
590 | pipestat = I915_READ (pipestat_reg); | ||
591 | /* | ||
592 | * Older chips didn't have the start vblank interrupt, | ||
593 | * but | ||
594 | */ | ||
595 | if (IS_I965G (dev)) | ||
596 | pipestat |= I915_START_VBLANK_INTERRUPT_ENABLE; | ||
597 | else | ||
598 | pipestat |= I915_VBLANK_INTERRUPT_ENABLE; | ||
599 | /* | ||
600 | * Clear any pending status | ||
601 | */ | ||
602 | pipestat |= (I915_START_VBLANK_INTERRUPT_STATUS | | ||
603 | I915_VBLANK_INTERRUPT_STATUS); | ||
604 | I915_WRITE(pipestat_reg, pipestat); | ||
605 | } | ||
606 | I915_WRITE(I915REG_INT_ENABLE_R, dev_priv->irq_enable_reg); | ||
607 | |||
608 | return 0; | ||
609 | } | ||
610 | |||
611 | void i915_disable_vblank(struct drm_device *dev, int plane) | ||
612 | { | ||
613 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | ||
614 | int pipe = i915_get_pipe(dev, plane); | ||
615 | u32 pipestat_reg = 0; | ||
616 | u32 pipestat; | ||
617 | |||
618 | switch (pipe) { | ||
619 | case 0: | ||
620 | pipestat_reg = I915REG_PIPEASTAT; | ||
621 | dev_priv->irq_enable_reg &= ~I915_DISPLAY_PIPE_A_EVENT_INTERRUPT; | ||
622 | break; | ||
623 | case 1: | ||
624 | pipestat_reg = I915REG_PIPEBSTAT; | ||
625 | dev_priv->irq_enable_reg &= ~I915_DISPLAY_PIPE_B_EVENT_INTERRUPT; | ||
626 | break; | ||
627 | default: | ||
628 | DRM_ERROR("tried to disable vblank on non-existent pipe %d\n", | ||
629 | pipe); | ||
630 | break; | ||
631 | } | ||
632 | |||
633 | I915_WRITE(I915REG_INT_ENABLE_R, dev_priv->irq_enable_reg); | ||
634 | if (pipestat_reg) | ||
635 | { | ||
636 | pipestat = I915_READ (pipestat_reg); | ||
637 | pipestat &= ~(I915_START_VBLANK_INTERRUPT_ENABLE | | ||
638 | I915_VBLANK_INTERRUPT_ENABLE); | ||
639 | /* | ||
640 | * Clear any pending status | ||
641 | */ | ||
642 | pipestat |= (I915_START_VBLANK_INTERRUPT_STATUS | | ||
643 | I915_VBLANK_INTERRUPT_STATUS); | ||
644 | I915_WRITE(pipestat_reg, pipestat); | ||
645 | } | ||
646 | } | ||
647 | |||
648 | static void i915_enable_interrupt (struct drm_device *dev) | 417 | static void i915_enable_interrupt (struct drm_device *dev) |
649 | { | 418 | { |
650 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 419 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
420 | u16 flag; | ||
651 | 421 | ||
652 | dev_priv->irq_enable_reg |= I915_USER_INTERRUPT; | 422 | flag = 0; |
423 | if (dev_priv->vblank_pipe & DRM_I915_VBLANK_PIPE_A) | ||
424 | flag |= VSYNC_PIPEA_FLAG; | ||
425 | if (dev_priv->vblank_pipe & DRM_I915_VBLANK_PIPE_B) | ||
426 | flag |= VSYNC_PIPEB_FLAG; | ||
653 | 427 | ||
654 | I915_WRITE(I915REG_INT_ENABLE_R, dev_priv->irq_enable_reg); | 428 | I915_WRITE16(I915REG_INT_ENABLE_R, USER_INT_FLAG | flag); |
655 | dev_priv->irq_enabled = 1; | ||
656 | } | 429 | } |
657 | 430 | ||
658 | /* Set the vblank monitor pipe | 431 | /* Set the vblank monitor pipe |
@@ -675,6 +448,8 @@ int i915_vblank_pipe_set(struct drm_device *dev, void *data, | |||
675 | 448 | ||
676 | dev_priv->vblank_pipe = pipe->pipe; | 449 | dev_priv->vblank_pipe = pipe->pipe; |
677 | 450 | ||
451 | i915_enable_interrupt (dev); | ||
452 | |||
678 | return 0; | 453 | return 0; |
679 | } | 454 | } |
680 | 455 | ||
@@ -692,9 +467,9 @@ int i915_vblank_pipe_get(struct drm_device *dev, void *data, | |||
692 | 467 | ||
693 | flag = I915_READ(I915REG_INT_ENABLE_R); | 468 | flag = I915_READ(I915REG_INT_ENABLE_R); |
694 | pipe->pipe = 0; | 469 | pipe->pipe = 0; |
695 | if (flag & I915_DISPLAY_PIPE_A_EVENT_INTERRUPT) | 470 | if (flag & VSYNC_PIPEA_FLAG) |
696 | pipe->pipe |= DRM_I915_VBLANK_PIPE_A; | 471 | pipe->pipe |= DRM_I915_VBLANK_PIPE_A; |
697 | if (flag & I915_DISPLAY_PIPE_B_EVENT_INTERRUPT) | 472 | if (flag & VSYNC_PIPEB_FLAG) |
698 | pipe->pipe |= DRM_I915_VBLANK_PIPE_B; | 473 | pipe->pipe |= DRM_I915_VBLANK_PIPE_B; |
699 | 474 | ||
700 | return 0; | 475 | return 0; |
@@ -709,30 +484,27 @@ int i915_vblank_swap(struct drm_device *dev, void *data, | |||
709 | drm_i915_private_t *dev_priv = dev->dev_private; | 484 | drm_i915_private_t *dev_priv = dev->dev_private; |
710 | drm_i915_vblank_swap_t *swap = data; | 485 | drm_i915_vblank_swap_t *swap = data; |
711 | drm_i915_vbl_swap_t *vbl_swap; | 486 | drm_i915_vbl_swap_t *vbl_swap; |
712 | unsigned int pipe, seqtype, curseq, plane; | 487 | unsigned int pipe, seqtype, curseq; |
713 | unsigned long irqflags; | 488 | unsigned long irqflags; |
714 | struct list_head *list; | 489 | struct list_head *list; |
715 | int ret; | ||
716 | 490 | ||
717 | if (!dev_priv) { | 491 | if (!dev_priv) { |
718 | DRM_ERROR("%s called with no initialization\n", __func__); | 492 | DRM_ERROR("%s called with no initialization\n", __func__); |
719 | return -EINVAL; | 493 | return -EINVAL; |
720 | } | 494 | } |
721 | 495 | ||
722 | if (!dev_priv->sarea_priv || dev_priv->sarea_priv->rotation) { | 496 | if (dev_priv->sarea_priv->rotation) { |
723 | DRM_DEBUG("Rotation not supported\n"); | 497 | DRM_DEBUG("Rotation not supported\n"); |
724 | return -EINVAL; | 498 | return -EINVAL; |
725 | } | 499 | } |
726 | 500 | ||
727 | if (swap->seqtype & ~(_DRM_VBLANK_RELATIVE | _DRM_VBLANK_ABSOLUTE | | 501 | if (swap->seqtype & ~(_DRM_VBLANK_RELATIVE | _DRM_VBLANK_ABSOLUTE | |
728 | _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS | | 502 | _DRM_VBLANK_SECONDARY | _DRM_VBLANK_NEXTONMISS)) { |
729 | _DRM_VBLANK_FLIP)) { | ||
730 | DRM_ERROR("Invalid sequence type 0x%x\n", swap->seqtype); | 503 | DRM_ERROR("Invalid sequence type 0x%x\n", swap->seqtype); |
731 | return -EINVAL; | 504 | return -EINVAL; |
732 | } | 505 | } |
733 | 506 | ||
734 | plane = (swap->seqtype & _DRM_VBLANK_SECONDARY) ? 1 : 0; | 507 | pipe = (swap->seqtype & _DRM_VBLANK_SECONDARY) ? 1 : 0; |
735 | pipe = i915_get_pipe(dev, plane); | ||
736 | 508 | ||
737 | seqtype = swap->seqtype & (_DRM_VBLANK_RELATIVE | _DRM_VBLANK_ABSOLUTE); | 509 | seqtype = swap->seqtype & (_DRM_VBLANK_RELATIVE | _DRM_VBLANK_ABSOLUTE); |
738 | 510 | ||
@@ -743,11 +515,6 @@ int i915_vblank_swap(struct drm_device *dev, void *data, | |||
743 | 515 | ||
744 | spin_lock_irqsave(&dev->drw_lock, irqflags); | 516 | spin_lock_irqsave(&dev->drw_lock, irqflags); |
745 | 517 | ||
746 | /* It makes no sense to schedule a swap for a drawable that doesn't have | ||
747 | * valid information at this point. E.g. this could mean that the X | ||
748 | * server is too old to push drawable information to the DRM, in which | ||
749 | * case all such swaps would become ineffective. | ||
750 | */ | ||
751 | if (!drm_get_drawable_info(dev, swap->drawable)) { | 518 | if (!drm_get_drawable_info(dev, swap->drawable)) { |
752 | spin_unlock_irqrestore(&dev->drw_lock, irqflags); | 519 | spin_unlock_irqrestore(&dev->drw_lock, irqflags); |
753 | DRM_DEBUG("Invalid drawable ID %d\n", swap->drawable); | 520 | DRM_DEBUG("Invalid drawable ID %d\n", swap->drawable); |
@@ -756,8 +523,7 @@ int i915_vblank_swap(struct drm_device *dev, void *data, | |||
756 | 523 | ||
757 | spin_unlock_irqrestore(&dev->drw_lock, irqflags); | 524 | spin_unlock_irqrestore(&dev->drw_lock, irqflags); |
758 | 525 | ||
759 | drm_update_vblank_count(dev, pipe); | 526 | curseq = atomic_read(pipe ? &dev->vbl_received2 : &dev->vbl_received); |
760 | curseq = drm_vblank_count(dev, pipe); | ||
761 | 527 | ||
762 | if (seqtype == _DRM_VBLANK_RELATIVE) | 528 | if (seqtype == _DRM_VBLANK_RELATIVE) |
763 | swap->sequence += curseq; | 529 | swap->sequence += curseq; |
@@ -771,43 +537,14 @@ int i915_vblank_swap(struct drm_device *dev, void *data, | |||
771 | } | 537 | } |
772 | } | 538 | } |
773 | 539 | ||
774 | if (swap->seqtype & _DRM_VBLANK_FLIP) { | ||
775 | swap->sequence--; | ||
776 | |||
777 | if ((curseq - swap->sequence) <= (1<<23)) { | ||
778 | struct drm_drawable_info *drw; | ||
779 | |||
780 | LOCK_TEST_WITH_RETURN(dev, file_priv); | ||
781 | |||
782 | spin_lock_irqsave(&dev->drw_lock, irqflags); | ||
783 | |||
784 | drw = drm_get_drawable_info(dev, swap->drawable); | ||
785 | |||
786 | if (!drw) { | ||
787 | spin_unlock_irqrestore(&dev->drw_lock, | ||
788 | irqflags); | ||
789 | DRM_DEBUG("Invalid drawable ID %d\n", | ||
790 | swap->drawable); | ||
791 | return -EINVAL; | ||
792 | } | ||
793 | |||
794 | i915_dispatch_vsync_flip(dev, drw, plane); | ||
795 | |||
796 | spin_unlock_irqrestore(&dev->drw_lock, irqflags); | ||
797 | |||
798 | return 0; | ||
799 | } | ||
800 | } | ||
801 | |||
802 | spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); | 540 | spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); |
803 | 541 | ||
804 | list_for_each(list, &dev_priv->vbl_swaps.head) { | 542 | list_for_each(list, &dev_priv->vbl_swaps.head) { |
805 | vbl_swap = list_entry(list, drm_i915_vbl_swap_t, head); | 543 | vbl_swap = list_entry(list, drm_i915_vbl_swap_t, head); |
806 | 544 | ||
807 | if (vbl_swap->drw_id == swap->drawable && | 545 | if (vbl_swap->drw_id == swap->drawable && |
808 | vbl_swap->plane == plane && | 546 | vbl_swap->pipe == pipe && |
809 | vbl_swap->sequence == swap->sequence) { | 547 | vbl_swap->sequence == swap->sequence) { |
810 | vbl_swap->flip = (swap->seqtype & _DRM_VBLANK_FLIP); | ||
811 | spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); | 548 | spin_unlock_irqrestore(&dev_priv->swaps_lock, irqflags); |
812 | DRM_DEBUG("Already scheduled\n"); | 549 | DRM_DEBUG("Already scheduled\n"); |
813 | return 0; | 550 | return 0; |
@@ -830,19 +567,9 @@ int i915_vblank_swap(struct drm_device *dev, void *data, | |||
830 | 567 | ||
831 | DRM_DEBUG("\n"); | 568 | DRM_DEBUG("\n"); |
832 | 569 | ||
833 | ret = drm_vblank_get(dev, pipe); | ||
834 | if (ret) { | ||
835 | drm_free(vbl_swap, sizeof(*vbl_swap), DRM_MEM_DRIVER); | ||
836 | return ret; | ||
837 | } | ||
838 | |||
839 | vbl_swap->drw_id = swap->drawable; | 570 | vbl_swap->drw_id = swap->drawable; |
840 | vbl_swap->plane = plane; | 571 | vbl_swap->pipe = pipe; |
841 | vbl_swap->sequence = swap->sequence; | 572 | vbl_swap->sequence = swap->sequence; |
842 | vbl_swap->flip = (swap->seqtype & _DRM_VBLANK_FLIP); | ||
843 | |||
844 | if (vbl_swap->flip) | ||
845 | swap->sequence++; | ||
846 | 573 | ||
847 | spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); | 574 | spin_lock_irqsave(&dev_priv->swaps_lock, irqflags); |
848 | 575 | ||
@@ -860,57 +587,37 @@ void i915_driver_irq_preinstall(struct drm_device * dev) | |||
860 | { | 587 | { |
861 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 588 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
862 | 589 | ||
863 | I915_WRITE16(I915REG_HWSTAM, 0xeffe); | 590 | I915_WRITE16(I915REG_HWSTAM, 0xfffe); |
864 | I915_WRITE16(I915REG_INT_MASK_R, 0x0); | 591 | I915_WRITE16(I915REG_INT_MASK_R, 0x0); |
865 | I915_WRITE16(I915REG_INT_ENABLE_R, 0x0); | 592 | I915_WRITE16(I915REG_INT_ENABLE_R, 0x0); |
866 | } | 593 | } |
867 | 594 | ||
868 | int i915_driver_irq_postinstall(struct drm_device * dev) | 595 | void i915_driver_irq_postinstall(struct drm_device * dev) |
869 | { | 596 | { |
870 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 597 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
871 | int ret, num_pipes = 2; | ||
872 | 598 | ||
873 | spin_lock_init(&dev_priv->swaps_lock); | 599 | spin_lock_init(&dev_priv->swaps_lock); |
874 | INIT_LIST_HEAD(&dev_priv->vbl_swaps.head); | 600 | INIT_LIST_HEAD(&dev_priv->vbl_swaps.head); |
875 | dev_priv->swaps_pending = 0; | 601 | dev_priv->swaps_pending = 0; |
876 | 602 | ||
877 | dev_priv->user_irq_refcount = 0; | 603 | if (!dev_priv->vblank_pipe) |
878 | dev_priv->irq_enable_reg = 0; | 604 | dev_priv->vblank_pipe = DRM_I915_VBLANK_PIPE_A; |
879 | |||
880 | ret = drm_vblank_init(dev, num_pipes); | ||
881 | if (ret) | ||
882 | return ret; | ||
883 | |||
884 | dev->max_vblank_count = 0xffffff; /* only 24 bits of frame count */ | ||
885 | |||
886 | i915_enable_interrupt(dev); | 605 | i915_enable_interrupt(dev); |
887 | DRM_INIT_WAITQUEUE(&dev_priv->irq_queue); | 606 | DRM_INIT_WAITQUEUE(&dev_priv->irq_queue); |
888 | |||
889 | /* | ||
890 | * Initialize the hardware status page IRQ location. | ||
891 | */ | ||
892 | |||
893 | I915_WRITE(I915REG_INSTPM, (1 << 5) | (1 << 21)); | ||
894 | return 0; | ||
895 | } | 607 | } |
896 | 608 | ||
897 | void i915_driver_irq_uninstall(struct drm_device * dev) | 609 | void i915_driver_irq_uninstall(struct drm_device * dev) |
898 | { | 610 | { |
899 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; | 611 | drm_i915_private_t *dev_priv = (drm_i915_private_t *) dev->dev_private; |
900 | u32 temp; | 612 | u16 temp; |
901 | 613 | ||
902 | if (!dev_priv) | 614 | if (!dev_priv) |
903 | return; | 615 | return; |
904 | 616 | ||
905 | dev_priv->irq_enabled = 0; | 617 | I915_WRITE16(I915REG_HWSTAM, 0xffff); |
906 | I915_WRITE(I915REG_HWSTAM, 0xffffffff); | 618 | I915_WRITE16(I915REG_INT_MASK_R, 0xffff); |
907 | I915_WRITE(I915REG_INT_MASK_R, 0xffffffff); | 619 | I915_WRITE16(I915REG_INT_ENABLE_R, 0x0); |
908 | I915_WRITE(I915REG_INT_ENABLE_R, 0x0); | 620 | |
909 | 621 | temp = I915_READ16(I915REG_INT_IDENTITY_R); | |
910 | temp = I915_READ(I915REG_PIPEASTAT); | 622 | I915_WRITE16(I915REG_INT_IDENTITY_R, temp); |
911 | I915_WRITE(I915REG_PIPEASTAT, temp); | ||
912 | temp = I915_READ(I915REG_PIPEBSTAT); | ||
913 | I915_WRITE(I915REG_PIPEBSTAT, temp); | ||
914 | temp = I915_READ(I915REG_INT_IDENTITY_R); | ||
915 | I915_WRITE(I915REG_INT_IDENTITY_R, temp); | ||
916 | } | 623 | } |
diff --git a/drivers/char/drm/mga_drv.c b/drivers/char/drm/mga_drv.c index 6b3790939e76..5572939fc7d1 100644 --- a/drivers/char/drm/mga_drv.c +++ b/drivers/char/drm/mga_drv.c | |||
@@ -45,16 +45,15 @@ static struct pci_device_id pciidlist[] = { | |||
45 | static struct drm_driver driver = { | 45 | static struct drm_driver driver = { |
46 | .driver_features = | 46 | .driver_features = |
47 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | | 47 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | |
48 | DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED, | 48 | DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | |
49 | DRIVER_IRQ_VBL, | ||
49 | .dev_priv_size = sizeof(drm_mga_buf_priv_t), | 50 | .dev_priv_size = sizeof(drm_mga_buf_priv_t), |
50 | .load = mga_driver_load, | 51 | .load = mga_driver_load, |
51 | .unload = mga_driver_unload, | 52 | .unload = mga_driver_unload, |
52 | .lastclose = mga_driver_lastclose, | 53 | .lastclose = mga_driver_lastclose, |
53 | .dma_quiescent = mga_driver_dma_quiescent, | 54 | .dma_quiescent = mga_driver_dma_quiescent, |
54 | .device_is_agp = mga_driver_device_is_agp, | 55 | .device_is_agp = mga_driver_device_is_agp, |
55 | .get_vblank_counter = mga_get_vblank_counter, | 56 | .vblank_wait = mga_driver_vblank_wait, |
56 | .enable_vblank = mga_enable_vblank, | ||
57 | .disable_vblank = mga_disable_vblank, | ||
58 | .irq_preinstall = mga_driver_irq_preinstall, | 57 | .irq_preinstall = mga_driver_irq_preinstall, |
59 | .irq_postinstall = mga_driver_irq_postinstall, | 58 | .irq_postinstall = mga_driver_irq_postinstall, |
60 | .irq_uninstall = mga_driver_irq_uninstall, | 59 | .irq_uninstall = mga_driver_irq_uninstall, |
diff --git a/drivers/char/drm/mga_drv.h b/drivers/char/drm/mga_drv.h index 8f7291f36363..f6ebd24bd587 100644 --- a/drivers/char/drm/mga_drv.h +++ b/drivers/char/drm/mga_drv.h | |||
@@ -120,7 +120,6 @@ typedef struct drm_mga_private { | |||
120 | u32 clear_cmd; | 120 | u32 clear_cmd; |
121 | u32 maccess; | 121 | u32 maccess; |
122 | 122 | ||
123 | atomic_t vbl_received; /**< Number of vblanks received. */ | ||
124 | wait_queue_head_t fence_queue; | 123 | wait_queue_head_t fence_queue; |
125 | atomic_t last_fence_retired; | 124 | atomic_t last_fence_retired; |
126 | u32 next_fence_to_post; | 125 | u32 next_fence_to_post; |
@@ -182,14 +181,11 @@ extern int mga_warp_install_microcode(drm_mga_private_t * dev_priv); | |||
182 | extern int mga_warp_init(drm_mga_private_t * dev_priv); | 181 | extern int mga_warp_init(drm_mga_private_t * dev_priv); |
183 | 182 | ||
184 | /* mga_irq.c */ | 183 | /* mga_irq.c */ |
185 | extern int mga_enable_vblank(struct drm_device *dev, int crtc); | ||
186 | extern void mga_disable_vblank(struct drm_device *dev, int crtc); | ||
187 | extern u32 mga_get_vblank_counter(struct drm_device *dev, int crtc); | ||
188 | extern int mga_driver_fence_wait(struct drm_device * dev, unsigned int *sequence); | 184 | extern int mga_driver_fence_wait(struct drm_device * dev, unsigned int *sequence); |
189 | extern int mga_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence); | 185 | extern int mga_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence); |
190 | extern irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS); | 186 | extern irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS); |
191 | extern void mga_driver_irq_preinstall(struct drm_device * dev); | 187 | extern void mga_driver_irq_preinstall(struct drm_device * dev); |
192 | extern int mga_driver_irq_postinstall(struct drm_device * dev); | 188 | extern void mga_driver_irq_postinstall(struct drm_device * dev); |
193 | extern void mga_driver_irq_uninstall(struct drm_device * dev); | 189 | extern void mga_driver_irq_uninstall(struct drm_device * dev); |
194 | extern long mga_compat_ioctl(struct file *filp, unsigned int cmd, | 190 | extern long mga_compat_ioctl(struct file *filp, unsigned int cmd, |
195 | unsigned long arg); | 191 | unsigned long arg); |
diff --git a/drivers/char/drm/mga_irq.c b/drivers/char/drm/mga_irq.c index 06852fb4b278..9302cb8f0f83 100644 --- a/drivers/char/drm/mga_irq.c +++ b/drivers/char/drm/mga_irq.c | |||
@@ -35,20 +35,6 @@ | |||
35 | #include "mga_drm.h" | 35 | #include "mga_drm.h" |
36 | #include "mga_drv.h" | 36 | #include "mga_drv.h" |
37 | 37 | ||
38 | u32 mga_get_vblank_counter(struct drm_device *dev, int crtc) | ||
39 | { | ||
40 | const drm_mga_private_t *const dev_priv = | ||
41 | (drm_mga_private_t *) dev->dev_private; | ||
42 | |||
43 | if (crtc != 0) { | ||
44 | return 0; | ||
45 | } | ||
46 | |||
47 | |||
48 | return atomic_read(&dev_priv->vbl_received); | ||
49 | } | ||
50 | |||
51 | |||
52 | irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS) | 38 | irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS) |
53 | { | 39 | { |
54 | struct drm_device *dev = (struct drm_device *) arg; | 40 | struct drm_device *dev = (struct drm_device *) arg; |
@@ -61,8 +47,9 @@ irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS) | |||
61 | /* VBLANK interrupt */ | 47 | /* VBLANK interrupt */ |
62 | if (status & MGA_VLINEPEN) { | 48 | if (status & MGA_VLINEPEN) { |
63 | MGA_WRITE(MGA_ICLEAR, MGA_VLINEICLR); | 49 | MGA_WRITE(MGA_ICLEAR, MGA_VLINEICLR); |
64 | atomic_inc(&dev_priv->vbl_received); | 50 | atomic_inc(&dev->vbl_received); |
65 | drm_handle_vblank(dev, 0); | 51 | DRM_WAKEUP(&dev->vbl_queue); |
52 | drm_vbl_send_signals(dev); | ||
66 | handled = 1; | 53 | handled = 1; |
67 | } | 54 | } |
68 | 55 | ||
@@ -91,34 +78,22 @@ irqreturn_t mga_driver_irq_handler(DRM_IRQ_ARGS) | |||
91 | return IRQ_NONE; | 78 | return IRQ_NONE; |
92 | } | 79 | } |
93 | 80 | ||
94 | int mga_enable_vblank(struct drm_device *dev, int crtc) | 81 | int mga_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence) |
95 | { | 82 | { |
96 | drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; | 83 | unsigned int cur_vblank; |
97 | 84 | int ret = 0; | |
98 | if (crtc != 0) { | ||
99 | DRM_ERROR("tried to enable vblank on non-existent crtc %d\n", | ||
100 | crtc); | ||
101 | return 0; | ||
102 | } | ||
103 | |||
104 | MGA_WRITE(MGA_IEN, MGA_VLINEIEN | MGA_SOFTRAPEN); | ||
105 | return 0; | ||
106 | } | ||
107 | 85 | ||
86 | /* Assume that the user has missed the current sequence number | ||
87 | * by about a day rather than she wants to wait for years | ||
88 | * using vertical blanks... | ||
89 | */ | ||
90 | DRM_WAIT_ON(ret, dev->vbl_queue, 3 * DRM_HZ, | ||
91 | (((cur_vblank = atomic_read(&dev->vbl_received)) | ||
92 | - *sequence) <= (1 << 23))); | ||
108 | 93 | ||
109 | void mga_disable_vblank(struct drm_device *dev, int crtc) | 94 | *sequence = cur_vblank; |
110 | { | ||
111 | if (crtc != 0) { | ||
112 | DRM_ERROR("tried to disable vblank on non-existent crtc %d\n", | ||
113 | crtc); | ||
114 | } | ||
115 | 95 | ||
116 | /* Do *NOT* disable the vertical refresh interrupt. MGA doesn't have | 96 | return ret; |
117 | * a nice hardware counter that tracks the number of refreshes when | ||
118 | * the interrupt is disabled, and the kernel doesn't know the refresh | ||
119 | * rate to calculate an estimate. | ||
120 | */ | ||
121 | /* MGA_WRITE(MGA_IEN, MGA_VLINEIEN | MGA_SOFTRAPEN); */ | ||
122 | } | 97 | } |
123 | 98 | ||
124 | int mga_driver_fence_wait(struct drm_device * dev, unsigned int *sequence) | 99 | int mga_driver_fence_wait(struct drm_device * dev, unsigned int *sequence) |
@@ -150,22 +125,14 @@ void mga_driver_irq_preinstall(struct drm_device * dev) | |||
150 | MGA_WRITE(MGA_ICLEAR, ~0); | 125 | MGA_WRITE(MGA_ICLEAR, ~0); |
151 | } | 126 | } |
152 | 127 | ||
153 | int mga_driver_irq_postinstall(struct drm_device * dev) | 128 | void mga_driver_irq_postinstall(struct drm_device * dev) |
154 | { | 129 | { |
155 | drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; | 130 | drm_mga_private_t *dev_priv = (drm_mga_private_t *) dev->dev_private; |
156 | int ret; | ||
157 | |||
158 | ret = drm_vblank_init(dev, 1); | ||
159 | if (ret) | ||
160 | return ret; | ||
161 | 131 | ||
162 | DRM_INIT_WAITQUEUE(&dev_priv->fence_queue); | 132 | DRM_INIT_WAITQUEUE(&dev_priv->fence_queue); |
163 | 133 | ||
164 | /* Turn on soft trap interrupt. Vertical blank interrupts are enabled | 134 | /* Turn on vertical blank interrupt and soft trap interrupt. */ |
165 | * in mga_enable_vblank. | 135 | MGA_WRITE(MGA_IEN, MGA_VLINEIEN | MGA_SOFTRAPEN); |
166 | */ | ||
167 | MGA_WRITE(MGA_IEN, MGA_SOFTRAPEN); | ||
168 | return 0; | ||
169 | } | 136 | } |
170 | 137 | ||
171 | void mga_driver_irq_uninstall(struct drm_device * dev) | 138 | void mga_driver_irq_uninstall(struct drm_device * dev) |
diff --git a/drivers/char/drm/r128_drv.c b/drivers/char/drm/r128_drv.c index 2888aa01ebc7..6108e7587e12 100644 --- a/drivers/char/drm/r128_drv.c +++ b/drivers/char/drm/r128_drv.c | |||
@@ -43,13 +43,12 @@ static struct pci_device_id pciidlist[] = { | |||
43 | static struct drm_driver driver = { | 43 | static struct drm_driver driver = { |
44 | .driver_features = | 44 | .driver_features = |
45 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG | | 45 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG | |
46 | DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED, | 46 | DRIVER_HAVE_DMA | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED | |
47 | DRIVER_IRQ_VBL, | ||
47 | .dev_priv_size = sizeof(drm_r128_buf_priv_t), | 48 | .dev_priv_size = sizeof(drm_r128_buf_priv_t), |
48 | .preclose = r128_driver_preclose, | 49 | .preclose = r128_driver_preclose, |
49 | .lastclose = r128_driver_lastclose, | 50 | .lastclose = r128_driver_lastclose, |
50 | .get_vblank_counter = r128_get_vblank_counter, | 51 | .vblank_wait = r128_driver_vblank_wait, |
51 | .enable_vblank = r128_enable_vblank, | ||
52 | .disable_vblank = r128_disable_vblank, | ||
53 | .irq_preinstall = r128_driver_irq_preinstall, | 52 | .irq_preinstall = r128_driver_irq_preinstall, |
54 | .irq_postinstall = r128_driver_irq_postinstall, | 53 | .irq_postinstall = r128_driver_irq_postinstall, |
55 | .irq_uninstall = r128_driver_irq_uninstall, | 54 | .irq_uninstall = r128_driver_irq_uninstall, |
diff --git a/drivers/char/drm/r128_drv.h b/drivers/char/drm/r128_drv.h index 80af9e09e75d..011105e51ac6 100644 --- a/drivers/char/drm/r128_drv.h +++ b/drivers/char/drm/r128_drv.h | |||
@@ -97,8 +97,6 @@ typedef struct drm_r128_private { | |||
97 | u32 crtc_offset; | 97 | u32 crtc_offset; |
98 | u32 crtc_offset_cntl; | 98 | u32 crtc_offset_cntl; |
99 | 99 | ||
100 | atomic_t vbl_received; | ||
101 | |||
102 | u32 color_fmt; | 100 | u32 color_fmt; |
103 | unsigned int front_offset; | 101 | unsigned int front_offset; |
104 | unsigned int front_pitch; | 102 | unsigned int front_pitch; |
@@ -151,12 +149,11 @@ extern int r128_wait_ring(drm_r128_private_t * dev_priv, int n); | |||
151 | extern int r128_do_cce_idle(drm_r128_private_t * dev_priv); | 149 | extern int r128_do_cce_idle(drm_r128_private_t * dev_priv); |
152 | extern int r128_do_cleanup_cce(struct drm_device * dev); | 150 | extern int r128_do_cleanup_cce(struct drm_device * dev); |
153 | 151 | ||
154 | extern int r128_enable_vblank(struct drm_device *dev, int crtc); | 152 | extern int r128_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence); |
155 | extern void r128_disable_vblank(struct drm_device *dev, int crtc); | 153 | |
156 | extern u32 r128_get_vblank_counter(struct drm_device *dev, int crtc); | ||
157 | extern irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS); | 154 | extern irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS); |
158 | extern void r128_driver_irq_preinstall(struct drm_device * dev); | 155 | extern void r128_driver_irq_preinstall(struct drm_device * dev); |
159 | extern int r128_driver_irq_postinstall(struct drm_device * dev); | 156 | extern void r128_driver_irq_postinstall(struct drm_device * dev); |
160 | extern void r128_driver_irq_uninstall(struct drm_device * dev); | 157 | extern void r128_driver_irq_uninstall(struct drm_device * dev); |
161 | extern void r128_driver_lastclose(struct drm_device * dev); | 158 | extern void r128_driver_lastclose(struct drm_device * dev); |
162 | extern void r128_driver_preclose(struct drm_device * dev, | 159 | extern void r128_driver_preclose(struct drm_device * dev, |
diff --git a/drivers/char/drm/r128_irq.c b/drivers/char/drm/r128_irq.c index 5b95bd898f95..c76fdca7662d 100644 --- a/drivers/char/drm/r128_irq.c +++ b/drivers/char/drm/r128_irq.c | |||
@@ -35,16 +35,6 @@ | |||
35 | #include "r128_drm.h" | 35 | #include "r128_drm.h" |
36 | #include "r128_drv.h" | 36 | #include "r128_drv.h" |
37 | 37 | ||
38 | u32 r128_get_vblank_counter(struct drm_device *dev, int crtc) | ||
39 | { | ||
40 | const drm_r128_private_t *dev_priv = dev->dev_private; | ||
41 | |||
42 | if (crtc != 0) | ||
43 | return 0; | ||
44 | |||
45 | return atomic_read(&dev_priv->vbl_received); | ||
46 | } | ||
47 | |||
48 | irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS) | 38 | irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS) |
49 | { | 39 | { |
50 | struct drm_device *dev = (struct drm_device *) arg; | 40 | struct drm_device *dev = (struct drm_device *) arg; |
@@ -56,38 +46,30 @@ irqreturn_t r128_driver_irq_handler(DRM_IRQ_ARGS) | |||
56 | /* VBLANK interrupt */ | 46 | /* VBLANK interrupt */ |
57 | if (status & R128_CRTC_VBLANK_INT) { | 47 | if (status & R128_CRTC_VBLANK_INT) { |
58 | R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK); | 48 | R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK); |
59 | atomic_inc(&dev_priv->vbl_received); | 49 | atomic_inc(&dev->vbl_received); |
60 | drm_handle_vblank(dev, 0); | 50 | DRM_WAKEUP(&dev->vbl_queue); |
51 | drm_vbl_send_signals(dev); | ||
61 | return IRQ_HANDLED; | 52 | return IRQ_HANDLED; |
62 | } | 53 | } |
63 | return IRQ_NONE; | 54 | return IRQ_NONE; |
64 | } | 55 | } |
65 | 56 | ||
66 | int r128_enable_vblank(struct drm_device *dev, int crtc) | 57 | int r128_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence) |
67 | { | 58 | { |
68 | drm_r128_private_t *dev_priv = dev->dev_private; | 59 | unsigned int cur_vblank; |
69 | 60 | int ret = 0; | |
70 | if (crtc != 0) { | ||
71 | DRM_ERROR("%s: bad crtc %d\n", __FUNCTION__, crtc); | ||
72 | return -EINVAL; | ||
73 | } | ||
74 | 61 | ||
75 | R128_WRITE(R128_GEN_INT_CNTL, R128_CRTC_VBLANK_INT_EN); | 62 | /* Assume that the user has missed the current sequence number |
76 | return 0; | 63 | * by about a day rather than she wants to wait for years |
77 | } | 64 | * using vertical blanks... |
65 | */ | ||
66 | DRM_WAIT_ON(ret, dev->vbl_queue, 3 * DRM_HZ, | ||
67 | (((cur_vblank = atomic_read(&dev->vbl_received)) | ||
68 | - *sequence) <= (1 << 23))); | ||
78 | 69 | ||
79 | void r128_disable_vblank(struct drm_device *dev, int crtc) | 70 | *sequence = cur_vblank; |
80 | { | ||
81 | if (crtc != 0) | ||
82 | DRM_ERROR("%s: bad crtc %d\n", __FUNCTION__, crtc); | ||
83 | 71 | ||
84 | /* | 72 | return ret; |
85 | * FIXME: implement proper interrupt disable by using the vblank | ||
86 | * counter register (if available) | ||
87 | * | ||
88 | * R128_WRITE(R128_GEN_INT_CNTL, | ||
89 | * R128_READ(R128_GEN_INT_CNTL) & ~R128_CRTC_VBLANK_INT_EN); | ||
90 | */ | ||
91 | } | 73 | } |
92 | 74 | ||
93 | void r128_driver_irq_preinstall(struct drm_device * dev) | 75 | void r128_driver_irq_preinstall(struct drm_device * dev) |
@@ -100,9 +82,12 @@ void r128_driver_irq_preinstall(struct drm_device * dev) | |||
100 | R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK); | 82 | R128_WRITE(R128_GEN_INT_STATUS, R128_CRTC_VBLANK_INT_AK); |
101 | } | 83 | } |
102 | 84 | ||
103 | int r128_driver_irq_postinstall(struct drm_device * dev) | 85 | void r128_driver_irq_postinstall(struct drm_device * dev) |
104 | { | 86 | { |
105 | return drm_vblank_init(dev, 1); | 87 | drm_r128_private_t *dev_priv = (drm_r128_private_t *) dev->dev_private; |
88 | |||
89 | /* Turn on VBL interrupt */ | ||
90 | R128_WRITE(R128_GEN_INT_CNTL, R128_CRTC_VBLANK_INT_EN); | ||
106 | } | 91 | } |
107 | 92 | ||
108 | void r128_driver_irq_uninstall(struct drm_device * dev) | 93 | void r128_driver_irq_uninstall(struct drm_device * dev) |
diff --git a/drivers/char/drm/radeon_drv.c b/drivers/char/drm/radeon_drv.c index a2610319624d..349ac3d3b848 100644 --- a/drivers/char/drm/radeon_drv.c +++ b/drivers/char/drm/radeon_drv.c | |||
@@ -59,7 +59,8 @@ static struct pci_device_id pciidlist[] = { | |||
59 | static struct drm_driver driver = { | 59 | static struct drm_driver driver = { |
60 | .driver_features = | 60 | .driver_features = |
61 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG | | 61 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG | |
62 | DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED, | 62 | DRIVER_HAVE_IRQ | DRIVER_HAVE_DMA | DRIVER_IRQ_SHARED | |
63 | DRIVER_IRQ_VBL | DRIVER_IRQ_VBL2, | ||
63 | .dev_priv_size = sizeof(drm_radeon_buf_priv_t), | 64 | .dev_priv_size = sizeof(drm_radeon_buf_priv_t), |
64 | .load = radeon_driver_load, | 65 | .load = radeon_driver_load, |
65 | .firstopen = radeon_driver_firstopen, | 66 | .firstopen = radeon_driver_firstopen, |
@@ -68,9 +69,8 @@ static struct drm_driver driver = { | |||
68 | .postclose = radeon_driver_postclose, | 69 | .postclose = radeon_driver_postclose, |
69 | .lastclose = radeon_driver_lastclose, | 70 | .lastclose = radeon_driver_lastclose, |
70 | .unload = radeon_driver_unload, | 71 | .unload = radeon_driver_unload, |
71 | .get_vblank_counter = radeon_get_vblank_counter, | 72 | .vblank_wait = radeon_driver_vblank_wait, |
72 | .enable_vblank = radeon_enable_vblank, | 73 | .vblank_wait2 = radeon_driver_vblank_wait2, |
73 | .disable_vblank = radeon_disable_vblank, | ||
74 | .dri_library_name = dri_library_name, | 74 | .dri_library_name = dri_library_name, |
75 | .irq_preinstall = radeon_driver_irq_preinstall, | 75 | .irq_preinstall = radeon_driver_irq_preinstall, |
76 | .irq_postinstall = radeon_driver_irq_postinstall, | 76 | .irq_postinstall = radeon_driver_irq_postinstall, |
diff --git a/drivers/char/drm/radeon_drv.h b/drivers/char/drm/radeon_drv.h index b791420bd3d9..173ae620223a 100644 --- a/drivers/char/drm/radeon_drv.h +++ b/drivers/char/drm/radeon_drv.h | |||
@@ -304,9 +304,6 @@ typedef struct drm_radeon_private { | |||
304 | 304 | ||
305 | u32 scratch_ages[5]; | 305 | u32 scratch_ages[5]; |
306 | 306 | ||
307 | unsigned int crtc_last_cnt; | ||
308 | unsigned int crtc2_last_cnt; | ||
309 | |||
310 | /* starting from here on, data is preserved accross an open */ | 307 | /* starting from here on, data is preserved accross an open */ |
311 | uint32_t flags; /* see radeon_chip_flags */ | 308 | uint32_t flags; /* see radeon_chip_flags */ |
312 | unsigned long fb_aper_offset; | 309 | unsigned long fb_aper_offset; |
@@ -377,13 +374,13 @@ extern int radeon_irq_emit(struct drm_device *dev, void *data, struct drm_file * | |||
377 | extern int radeon_irq_wait(struct drm_device *dev, void *data, struct drm_file *file_priv); | 374 | extern int radeon_irq_wait(struct drm_device *dev, void *data, struct drm_file *file_priv); |
378 | 375 | ||
379 | extern void radeon_do_release(struct drm_device * dev); | 376 | extern void radeon_do_release(struct drm_device * dev); |
380 | extern u32 radeon_get_vblank_counter(struct drm_device *dev, int crtc); | 377 | extern int radeon_driver_vblank_wait(struct drm_device * dev, |
381 | extern int radeon_enable_vblank(struct drm_device *dev, int crtc); | 378 | unsigned int *sequence); |
382 | extern void radeon_disable_vblank(struct drm_device *dev, int crtc); | 379 | extern int radeon_driver_vblank_wait2(struct drm_device * dev, |
383 | extern void radeon_do_release(struct drm_device * dev); | 380 | unsigned int *sequence); |
384 | extern irqreturn_t radeon_driver_irq_handler(DRM_IRQ_ARGS); | 381 | extern irqreturn_t radeon_driver_irq_handler(DRM_IRQ_ARGS); |
385 | extern void radeon_driver_irq_preinstall(struct drm_device * dev); | 382 | extern void radeon_driver_irq_preinstall(struct drm_device * dev); |
386 | extern int radeon_driver_irq_postinstall(struct drm_device * dev); | 383 | extern void radeon_driver_irq_postinstall(struct drm_device * dev); |
387 | extern void radeon_driver_irq_uninstall(struct drm_device * dev); | 384 | extern void radeon_driver_irq_uninstall(struct drm_device * dev); |
388 | extern int radeon_vblank_crtc_get(struct drm_device *dev); | 385 | extern int radeon_vblank_crtc_get(struct drm_device *dev); |
389 | extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value); | 386 | extern int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value); |
@@ -561,12 +558,6 @@ extern int r300_do_cp_cmdbuf(struct drm_device * dev, | |||
561 | ? DRM_READ32( dev_priv->ring_rptr, RADEON_SCRATCHOFF(x) ) \ | 558 | ? DRM_READ32( dev_priv->ring_rptr, RADEON_SCRATCHOFF(x) ) \ |
562 | : RADEON_READ( RADEON_SCRATCH_REG0 + 4*(x) ) ) | 559 | : RADEON_READ( RADEON_SCRATCH_REG0 + 4*(x) ) ) |
563 | 560 | ||
564 | #define RADEON_CRTC_CRNT_FRAME 0x0214 | ||
565 | #define RADEON_CRTC2_CRNT_FRAME 0x0314 | ||
566 | |||
567 | #define RADEON_CRTC_STATUS 0x005c | ||
568 | #define RADEON_CRTC2_STATUS 0x03fc | ||
569 | |||
570 | #define RADEON_GEN_INT_CNTL 0x0040 | 561 | #define RADEON_GEN_INT_CNTL 0x0040 |
571 | # define RADEON_CRTC_VBLANK_MASK (1 << 0) | 562 | # define RADEON_CRTC_VBLANK_MASK (1 << 0) |
572 | # define RADEON_CRTC2_VBLANK_MASK (1 << 9) | 563 | # define RADEON_CRTC2_VBLANK_MASK (1 << 9) |
diff --git a/drivers/char/drm/radeon_irq.c b/drivers/char/drm/radeon_irq.c index 507d6b747a13..009af3814b6f 100644 --- a/drivers/char/drm/radeon_irq.c +++ b/drivers/char/drm/radeon_irq.c | |||
@@ -35,61 +35,12 @@ | |||
35 | #include "radeon_drm.h" | 35 | #include "radeon_drm.h" |
36 | #include "radeon_drv.h" | 36 | #include "radeon_drv.h" |
37 | 37 | ||
38 | static void radeon_irq_set_state(struct drm_device *dev, u32 mask, int state) | 38 | static __inline__ u32 radeon_acknowledge_irqs(drm_radeon_private_t * dev_priv, |
39 | u32 mask) | ||
39 | { | 40 | { |
40 | drm_radeon_private_t *dev_priv = dev->dev_private; | 41 | u32 irqs = RADEON_READ(RADEON_GEN_INT_STATUS) & mask; |
41 | |||
42 | if (state) | ||
43 | dev_priv->irq_enable_reg |= mask; | ||
44 | else | ||
45 | dev_priv->irq_enable_reg &= ~mask; | ||
46 | |||
47 | RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); | ||
48 | } | ||
49 | |||
50 | int radeon_enable_vblank(struct drm_device *dev, int crtc) | ||
51 | { | ||
52 | switch (crtc) { | ||
53 | case 0: | ||
54 | radeon_irq_set_state(dev, RADEON_CRTC_VBLANK_MASK, 1); | ||
55 | break; | ||
56 | case 1: | ||
57 | radeon_irq_set_state(dev, RADEON_CRTC2_VBLANK_MASK, 1); | ||
58 | break; | ||
59 | default: | ||
60 | DRM_ERROR("tried to enable vblank on non-existent crtc %d\n", | ||
61 | crtc); | ||
62 | return EINVAL; | ||
63 | } | ||
64 | |||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | void radeon_disable_vblank(struct drm_device *dev, int crtc) | ||
69 | { | ||
70 | switch (crtc) { | ||
71 | case 0: | ||
72 | radeon_irq_set_state(dev, RADEON_CRTC_VBLANK_MASK, 0); | ||
73 | break; | ||
74 | case 1: | ||
75 | radeon_irq_set_state(dev, RADEON_CRTC2_VBLANK_MASK, 0); | ||
76 | break; | ||
77 | default: | ||
78 | DRM_ERROR("tried to enable vblank on non-existent crtc %d\n", | ||
79 | crtc); | ||
80 | break; | ||
81 | } | ||
82 | } | ||
83 | |||
84 | static __inline__ u32 radeon_acknowledge_irqs(drm_radeon_private_t * dev_priv) | ||
85 | { | ||
86 | u32 irqs = RADEON_READ(RADEON_GEN_INT_STATUS) & | ||
87 | (RADEON_SW_INT_TEST | RADEON_CRTC_VBLANK_STAT | | ||
88 | RADEON_CRTC2_VBLANK_STAT); | ||
89 | |||
90 | if (irqs) | 42 | if (irqs) |
91 | RADEON_WRITE(RADEON_GEN_INT_STATUS, irqs); | 43 | RADEON_WRITE(RADEON_GEN_INT_STATUS, irqs); |
92 | |||
93 | return irqs; | 44 | return irqs; |
94 | } | 45 | } |
95 | 46 | ||
@@ -121,21 +72,39 @@ irqreturn_t radeon_driver_irq_handler(DRM_IRQ_ARGS) | |||
121 | /* Only consider the bits we're interested in - others could be used | 72 | /* Only consider the bits we're interested in - others could be used |
122 | * outside the DRM | 73 | * outside the DRM |
123 | */ | 74 | */ |
124 | stat = radeon_acknowledge_irqs(dev_priv); | 75 | stat = radeon_acknowledge_irqs(dev_priv, (RADEON_SW_INT_TEST_ACK | |
76 | RADEON_CRTC_VBLANK_STAT | | ||
77 | RADEON_CRTC2_VBLANK_STAT)); | ||
125 | if (!stat) | 78 | if (!stat) |
126 | return IRQ_NONE; | 79 | return IRQ_NONE; |
127 | 80 | ||
128 | stat &= dev_priv->irq_enable_reg; | 81 | stat &= dev_priv->irq_enable_reg; |
129 | 82 | ||
130 | /* SW interrupt */ | 83 | /* SW interrupt */ |
131 | if (stat & RADEON_SW_INT_TEST) | 84 | if (stat & RADEON_SW_INT_TEST) { |
132 | DRM_WAKEUP(&dev_priv->swi_queue); | 85 | DRM_WAKEUP(&dev_priv->swi_queue); |
86 | } | ||
133 | 87 | ||
134 | /* VBLANK interrupt */ | 88 | /* VBLANK interrupt */ |
135 | if (stat & RADEON_CRTC_VBLANK_STAT) | 89 | if (stat & (RADEON_CRTC_VBLANK_STAT|RADEON_CRTC2_VBLANK_STAT)) { |
136 | drm_handle_vblank(dev, 0); | 90 | int vblank_crtc = dev_priv->vblank_crtc; |
137 | if (stat & RADEON_CRTC2_VBLANK_STAT) | 91 | |
138 | drm_handle_vblank(dev, 1); | 92 | if ((vblank_crtc & |
93 | (DRM_RADEON_VBLANK_CRTC1 | DRM_RADEON_VBLANK_CRTC2)) == | ||
94 | (DRM_RADEON_VBLANK_CRTC1 | DRM_RADEON_VBLANK_CRTC2)) { | ||
95 | if (stat & RADEON_CRTC_VBLANK_STAT) | ||
96 | atomic_inc(&dev->vbl_received); | ||
97 | if (stat & RADEON_CRTC2_VBLANK_STAT) | ||
98 | atomic_inc(&dev->vbl_received2); | ||
99 | } else if (((stat & RADEON_CRTC_VBLANK_STAT) && | ||
100 | (vblank_crtc & DRM_RADEON_VBLANK_CRTC1)) || | ||
101 | ((stat & RADEON_CRTC2_VBLANK_STAT) && | ||
102 | (vblank_crtc & DRM_RADEON_VBLANK_CRTC2))) | ||
103 | atomic_inc(&dev->vbl_received); | ||
104 | |||
105 | DRM_WAKEUP(&dev->vbl_queue); | ||
106 | drm_vbl_send_signals(dev); | ||
107 | } | ||
139 | 108 | ||
140 | return IRQ_HANDLED; | 109 | return IRQ_HANDLED; |
141 | } | 110 | } |
@@ -175,27 +144,54 @@ static int radeon_wait_irq(struct drm_device * dev, int swi_nr) | |||
175 | return ret; | 144 | return ret; |
176 | } | 145 | } |
177 | 146 | ||
178 | u32 radeon_get_vblank_counter(struct drm_device *dev, int crtc) | 147 | static int radeon_driver_vblank_do_wait(struct drm_device * dev, |
148 | unsigned int *sequence, int crtc) | ||
179 | { | 149 | { |
180 | drm_radeon_private_t *dev_priv = dev->dev_private; | 150 | drm_radeon_private_t *dev_priv = |
181 | u32 crtc_cnt_reg, crtc_status_reg; | 151 | (drm_radeon_private_t *) dev->dev_private; |
182 | 152 | unsigned int cur_vblank; | |
153 | int ret = 0; | ||
154 | int ack = 0; | ||
155 | atomic_t *counter; | ||
183 | if (!dev_priv) { | 156 | if (!dev_priv) { |
184 | DRM_ERROR("called with no initialization\n"); | 157 | DRM_ERROR("called with no initialization\n"); |
185 | return -EINVAL; | 158 | return -EINVAL; |
186 | } | 159 | } |
187 | 160 | ||
188 | if (crtc == 0) { | 161 | if (crtc == DRM_RADEON_VBLANK_CRTC1) { |
189 | crtc_cnt_reg = RADEON_CRTC_CRNT_FRAME; | 162 | counter = &dev->vbl_received; |
190 | crtc_status_reg = RADEON_CRTC_STATUS; | 163 | ack |= RADEON_CRTC_VBLANK_STAT; |
191 | } else if (crtc == 1) { | 164 | } else if (crtc == DRM_RADEON_VBLANK_CRTC2) { |
192 | crtc_cnt_reg = RADEON_CRTC2_CRNT_FRAME; | 165 | counter = &dev->vbl_received2; |
193 | crtc_status_reg = RADEON_CRTC2_STATUS; | 166 | ack |= RADEON_CRTC2_VBLANK_STAT; |
194 | } else { | 167 | } else |
195 | return -EINVAL; | 168 | return -EINVAL; |
196 | } | ||
197 | 169 | ||
198 | return RADEON_READ(crtc_cnt_reg) + (RADEON_READ(crtc_status_reg) & 1); | 170 | radeon_acknowledge_irqs(dev_priv, ack); |
171 | |||
172 | dev_priv->stats.boxes |= RADEON_BOX_WAIT_IDLE; | ||
173 | |||
174 | /* Assume that the user has missed the current sequence number | ||
175 | * by about a day rather than she wants to wait for years | ||
176 | * using vertical blanks... | ||
177 | */ | ||
178 | DRM_WAIT_ON(ret, dev->vbl_queue, 3 * DRM_HZ, | ||
179 | (((cur_vblank = atomic_read(counter)) | ||
180 | - *sequence) <= (1 << 23))); | ||
181 | |||
182 | *sequence = cur_vblank; | ||
183 | |||
184 | return ret; | ||
185 | } | ||
186 | |||
187 | int radeon_driver_vblank_wait(struct drm_device *dev, unsigned int *sequence) | ||
188 | { | ||
189 | return radeon_driver_vblank_do_wait(dev, sequence, DRM_RADEON_VBLANK_CRTC1); | ||
190 | } | ||
191 | |||
192 | int radeon_driver_vblank_wait2(struct drm_device *dev, unsigned int *sequence) | ||
193 | { | ||
194 | return radeon_driver_vblank_do_wait(dev, sequence, DRM_RADEON_VBLANK_CRTC2); | ||
199 | } | 195 | } |
200 | 196 | ||
201 | /* Needs the lock as it touches the ring. | 197 | /* Needs the lock as it touches the ring. |
@@ -238,6 +234,21 @@ int radeon_irq_wait(struct drm_device *dev, void *data, struct drm_file *file_pr | |||
238 | return radeon_wait_irq(dev, irqwait->irq_seq); | 234 | return radeon_wait_irq(dev, irqwait->irq_seq); |
239 | } | 235 | } |
240 | 236 | ||
237 | static void radeon_enable_interrupt(struct drm_device *dev) | ||
238 | { | ||
239 | drm_radeon_private_t *dev_priv = (drm_radeon_private_t *) dev->dev_private; | ||
240 | |||
241 | dev_priv->irq_enable_reg = RADEON_SW_INT_ENABLE; | ||
242 | if (dev_priv->vblank_crtc & DRM_RADEON_VBLANK_CRTC1) | ||
243 | dev_priv->irq_enable_reg |= RADEON_CRTC_VBLANK_MASK; | ||
244 | |||
245 | if (dev_priv->vblank_crtc & DRM_RADEON_VBLANK_CRTC2) | ||
246 | dev_priv->irq_enable_reg |= RADEON_CRTC2_VBLANK_MASK; | ||
247 | |||
248 | RADEON_WRITE(RADEON_GEN_INT_CNTL, dev_priv->irq_enable_reg); | ||
249 | dev_priv->irq_enabled = 1; | ||
250 | } | ||
251 | |||
241 | /* drm_dma.h hooks | 252 | /* drm_dma.h hooks |
242 | */ | 253 | */ |
243 | void radeon_driver_irq_preinstall(struct drm_device * dev) | 254 | void radeon_driver_irq_preinstall(struct drm_device * dev) |
@@ -249,27 +260,20 @@ void radeon_driver_irq_preinstall(struct drm_device * dev) | |||
249 | RADEON_WRITE(RADEON_GEN_INT_CNTL, 0); | 260 | RADEON_WRITE(RADEON_GEN_INT_CNTL, 0); |
250 | 261 | ||
251 | /* Clear bits if they're already high */ | 262 | /* Clear bits if they're already high */ |
252 | radeon_acknowledge_irqs(dev_priv); | 263 | radeon_acknowledge_irqs(dev_priv, (RADEON_SW_INT_TEST_ACK | |
264 | RADEON_CRTC_VBLANK_STAT | | ||
265 | RADEON_CRTC2_VBLANK_STAT)); | ||
253 | } | 266 | } |
254 | 267 | ||
255 | int radeon_driver_irq_postinstall(struct drm_device * dev) | 268 | void radeon_driver_irq_postinstall(struct drm_device * dev) |
256 | { | 269 | { |
257 | drm_radeon_private_t *dev_priv = | 270 | drm_radeon_private_t *dev_priv = |
258 | (drm_radeon_private_t *) dev->dev_private; | 271 | (drm_radeon_private_t *) dev->dev_private; |
259 | int ret; | ||
260 | 272 | ||
261 | atomic_set(&dev_priv->swi_emitted, 0); | 273 | atomic_set(&dev_priv->swi_emitted, 0); |
262 | DRM_INIT_WAITQUEUE(&dev_priv->swi_queue); | 274 | DRM_INIT_WAITQUEUE(&dev_priv->swi_queue); |
263 | 275 | ||
264 | ret = drm_vblank_init(dev, 2); | 276 | radeon_enable_interrupt(dev); |
265 | if (ret) | ||
266 | return ret; | ||
267 | |||
268 | dev->max_vblank_count = 0x001fffff; | ||
269 | |||
270 | radeon_irq_set_state(dev, RADEON_SW_INT_ENABLE, 1); | ||
271 | |||
272 | return 0; | ||
273 | } | 277 | } |
274 | 278 | ||
275 | void radeon_driver_irq_uninstall(struct drm_device * dev) | 279 | void radeon_driver_irq_uninstall(struct drm_device * dev) |
@@ -311,5 +315,6 @@ int radeon_vblank_crtc_set(struct drm_device *dev, int64_t value) | |||
311 | return -EINVAL; | 315 | return -EINVAL; |
312 | } | 316 | } |
313 | dev_priv->vblank_crtc = (unsigned int)value; | 317 | dev_priv->vblank_crtc = (unsigned int)value; |
318 | radeon_enable_interrupt(dev); | ||
314 | return 0; | 319 | return 0; |
315 | } | 320 | } |
diff --git a/drivers/char/drm/via_drv.c b/drivers/char/drm/via_drv.c index 37870a4a3dc7..80c01cdfa37d 100644 --- a/drivers/char/drm/via_drv.c +++ b/drivers/char/drm/via_drv.c | |||
@@ -40,13 +40,11 @@ static struct pci_device_id pciidlist[] = { | |||
40 | static struct drm_driver driver = { | 40 | static struct drm_driver driver = { |
41 | .driver_features = | 41 | .driver_features = |
42 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_HAVE_IRQ | | 42 | DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_HAVE_IRQ | |
43 | DRIVER_IRQ_SHARED, | 43 | DRIVER_IRQ_SHARED | DRIVER_IRQ_VBL, |
44 | .load = via_driver_load, | 44 | .load = via_driver_load, |
45 | .unload = via_driver_unload, | 45 | .unload = via_driver_unload, |
46 | .context_dtor = via_final_context, | 46 | .context_dtor = via_final_context, |
47 | .get_vblank_counter = via_get_vblank_counter, | 47 | .vblank_wait = via_driver_vblank_wait, |
48 | .enable_vblank = via_enable_vblank, | ||
49 | .disable_vblank = via_disable_vblank, | ||
50 | .irq_preinstall = via_driver_irq_preinstall, | 48 | .irq_preinstall = via_driver_irq_preinstall, |
51 | .irq_postinstall = via_driver_irq_postinstall, | 49 | .irq_postinstall = via_driver_irq_postinstall, |
52 | .irq_uninstall = via_driver_irq_uninstall, | 50 | .irq_uninstall = via_driver_irq_uninstall, |
diff --git a/drivers/char/drm/via_drv.h b/drivers/char/drm/via_drv.h index fe67030e39ac..2daae81874cd 100644 --- a/drivers/char/drm/via_drv.h +++ b/drivers/char/drm/via_drv.h | |||
@@ -75,7 +75,6 @@ typedef struct drm_via_private { | |||
75 | struct timeval last_vblank; | 75 | struct timeval last_vblank; |
76 | int last_vblank_valid; | 76 | int last_vblank_valid; |
77 | unsigned usec_per_vblank; | 77 | unsigned usec_per_vblank; |
78 | atomic_t vbl_received; | ||
79 | drm_via_state_t hc_state; | 78 | drm_via_state_t hc_state; |
80 | char pci_buf[VIA_PCI_BUF_SIZE]; | 79 | char pci_buf[VIA_PCI_BUF_SIZE]; |
81 | const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE]; | 80 | const uint32_t *fire_offsets[VIA_FIRE_BUF_SIZE]; |
@@ -131,13 +130,11 @@ extern int via_init_context(struct drm_device * dev, int context); | |||
131 | extern int via_final_context(struct drm_device * dev, int context); | 130 | extern int via_final_context(struct drm_device * dev, int context); |
132 | 131 | ||
133 | extern int via_do_cleanup_map(struct drm_device * dev); | 132 | extern int via_do_cleanup_map(struct drm_device * dev); |
134 | extern u32 via_get_vblank_counter(struct drm_device *dev, int crtc); | 133 | extern int via_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence); |
135 | extern int via_enable_vblank(struct drm_device *dev, int crtc); | ||
136 | extern void via_disable_vblank(struct drm_device *dev, int crtc); | ||
137 | 134 | ||
138 | extern irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS); | 135 | extern irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS); |
139 | extern void via_driver_irq_preinstall(struct drm_device * dev); | 136 | extern void via_driver_irq_preinstall(struct drm_device * dev); |
140 | extern int via_driver_irq_postinstall(struct drm_device * dev); | 137 | extern void via_driver_irq_postinstall(struct drm_device * dev); |
141 | extern void via_driver_irq_uninstall(struct drm_device * dev); | 138 | extern void via_driver_irq_uninstall(struct drm_device * dev); |
142 | 139 | ||
143 | extern int via_dma_cleanup(struct drm_device * dev); | 140 | extern int via_dma_cleanup(struct drm_device * dev); |
diff --git a/drivers/char/drm/via_irq.c b/drivers/char/drm/via_irq.c index f1ab6fc7c07e..c6bb978a1106 100644 --- a/drivers/char/drm/via_irq.c +++ b/drivers/char/drm/via_irq.c | |||
@@ -92,17 +92,8 @@ static int via_irqmap_unichrome[] = {-1, -1, -1, 0, -1, 1}; | |||
92 | static unsigned time_diff(struct timeval *now, struct timeval *then) | 92 | static unsigned time_diff(struct timeval *now, struct timeval *then) |
93 | { | 93 | { |
94 | return (now->tv_usec >= then->tv_usec) ? | 94 | return (now->tv_usec >= then->tv_usec) ? |
95 | now->tv_usec - then->tv_usec : | 95 | now->tv_usec - then->tv_usec : |
96 | 1000000 - (then->tv_usec - now->tv_usec); | 96 | 1000000 - (then->tv_usec - now->tv_usec); |
97 | } | ||
98 | |||
99 | u32 via_get_vblank_counter(struct drm_device *dev, int crtc) | ||
100 | { | ||
101 | drm_via_private_t *dev_priv = dev->dev_private; | ||
102 | if (crtc != 0) | ||
103 | return 0; | ||
104 | |||
105 | return atomic_read(&dev_priv->vbl_received); | ||
106 | } | 97 | } |
107 | 98 | ||
108 | irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) | 99 | irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) |
@@ -117,8 +108,8 @@ irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) | |||
117 | 108 | ||
118 | status = VIA_READ(VIA_REG_INTERRUPT); | 109 | status = VIA_READ(VIA_REG_INTERRUPT); |
119 | if (status & VIA_IRQ_VBLANK_PENDING) { | 110 | if (status & VIA_IRQ_VBLANK_PENDING) { |
120 | atomic_inc(&dev_priv->vbl_received); | 111 | atomic_inc(&dev->vbl_received); |
121 | if (!(atomic_read(&dev_priv->vbl_received) & 0x0F)) { | 112 | if (!(atomic_read(&dev->vbl_received) & 0x0F)) { |
122 | do_gettimeofday(&cur_vblank); | 113 | do_gettimeofday(&cur_vblank); |
123 | if (dev_priv->last_vblank_valid) { | 114 | if (dev_priv->last_vblank_valid) { |
124 | dev_priv->usec_per_vblank = | 115 | dev_priv->usec_per_vblank = |
@@ -128,11 +119,12 @@ irqreturn_t via_driver_irq_handler(DRM_IRQ_ARGS) | |||
128 | dev_priv->last_vblank = cur_vblank; | 119 | dev_priv->last_vblank = cur_vblank; |
129 | dev_priv->last_vblank_valid = 1; | 120 | dev_priv->last_vblank_valid = 1; |
130 | } | 121 | } |
131 | if (!(atomic_read(&dev_priv->vbl_received) & 0xFF)) { | 122 | if (!(atomic_read(&dev->vbl_received) & 0xFF)) { |
132 | DRM_DEBUG("US per vblank is: %u\n", | 123 | DRM_DEBUG("US per vblank is: %u\n", |
133 | dev_priv->usec_per_vblank); | 124 | dev_priv->usec_per_vblank); |
134 | } | 125 | } |
135 | drm_handle_vblank(dev, 0); | 126 | DRM_WAKEUP(&dev->vbl_queue); |
127 | drm_vbl_send_signals(dev); | ||
136 | handled = 1; | 128 | handled = 1; |
137 | } | 129 | } |
138 | 130 | ||
@@ -171,34 +163,31 @@ static __inline__ void viadrv_acknowledge_irqs(drm_via_private_t * dev_priv) | |||
171 | } | 163 | } |
172 | } | 164 | } |
173 | 165 | ||
174 | int via_enable_vblank(struct drm_device *dev, int crtc) | 166 | int via_driver_vblank_wait(struct drm_device * dev, unsigned int *sequence) |
175 | { | 167 | { |
176 | drm_via_private_t *dev_priv = dev->dev_private; | 168 | drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; |
177 | u32 status; | 169 | unsigned int cur_vblank; |
170 | int ret = 0; | ||
178 | 171 | ||
179 | if (crtc != 0) { | 172 | DRM_DEBUG("\n"); |
180 | DRM_ERROR("%s: bad crtc %d\n", __FUNCTION__, crtc); | 173 | if (!dev_priv) { |
174 | DRM_ERROR("called with no initialization\n"); | ||
181 | return -EINVAL; | 175 | return -EINVAL; |
182 | } | 176 | } |
183 | 177 | ||
184 | status = VIA_READ(VIA_REG_INTERRUPT); | 178 | viadrv_acknowledge_irqs(dev_priv); |
185 | VIA_WRITE(VIA_REG_INTERRUPT, status & VIA_IRQ_VBLANK_ENABLE); | ||
186 | 179 | ||
187 | VIA_WRITE8(0x83d4, 0x11); | 180 | /* Assume that the user has missed the current sequence number |
188 | VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30); | 181 | * by about a day rather than she wants to wait for years |
182 | * using vertical blanks... | ||
183 | */ | ||
189 | 184 | ||
190 | return 0; | 185 | DRM_WAIT_ON(ret, dev->vbl_queue, 3 * DRM_HZ, |
191 | } | 186 | (((cur_vblank = atomic_read(&dev->vbl_received)) - |
187 | *sequence) <= (1 << 23))); | ||
192 | 188 | ||
193 | void via_disable_vblank(struct drm_device *dev, int crtc) | 189 | *sequence = cur_vblank; |
194 | { | 190 | return ret; |
195 | drm_via_private_t *dev_priv = dev->dev_private; | ||
196 | |||
197 | VIA_WRITE8(0x83d4, 0x11); | ||
198 | VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) & ~0x30); | ||
199 | |||
200 | if (crtc != 0) | ||
201 | DRM_ERROR("%s: bad crtc %d\n", __FUNCTION__, crtc); | ||
202 | } | 191 | } |
203 | 192 | ||
204 | static int | 193 | static int |
@@ -303,25 +292,23 @@ void via_driver_irq_preinstall(struct drm_device * dev) | |||
303 | } | 292 | } |
304 | } | 293 | } |
305 | 294 | ||
306 | int via_driver_irq_postinstall(struct drm_device * dev) | 295 | void via_driver_irq_postinstall(struct drm_device * dev) |
307 | { | 296 | { |
308 | drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; | 297 | drm_via_private_t *dev_priv = (drm_via_private_t *) dev->dev_private; |
309 | u32 status; | 298 | u32 status; |
310 | 299 | ||
311 | DRM_DEBUG("via_driver_irq_postinstall\n"); | 300 | DRM_DEBUG("\n"); |
312 | if (!dev_priv) | 301 | if (dev_priv) { |
313 | return -EINVAL; | 302 | status = VIA_READ(VIA_REG_INTERRUPT); |
303 | VIA_WRITE(VIA_REG_INTERRUPT, status | VIA_IRQ_GLOBAL | ||
304 | | dev_priv->irq_enable_mask); | ||
314 | 305 | ||
315 | drm_vblank_init(dev, 1); | 306 | /* Some magic, oh for some data sheets ! */ |
316 | status = VIA_READ(VIA_REG_INTERRUPT); | ||
317 | VIA_WRITE(VIA_REG_INTERRUPT, status | VIA_IRQ_GLOBAL | ||
318 | | dev_priv->irq_enable_mask); | ||
319 | 307 | ||
320 | /* Some magic, oh for some data sheets ! */ | 308 | VIA_WRITE8(0x83d4, 0x11); |
321 | VIA_WRITE8(0x83d4, 0x11); | 309 | VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30); |
322 | VIA_WRITE8(0x83d5, VIA_READ8(0x83d5) | 0x30); | ||
323 | 310 | ||
324 | return 0; | 311 | } |
325 | } | 312 | } |
326 | 313 | ||
327 | void via_driver_irq_uninstall(struct drm_device * dev) | 314 | void via_driver_irq_uninstall(struct drm_device * dev) |
diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig index 8d6c2089d2a8..efd0b4db7c8e 100644 --- a/drivers/char/hw_random/Kconfig +++ b/drivers/char/hw_random/Kconfig | |||
@@ -112,3 +112,12 @@ config HW_RANDOM_PASEMI | |||
112 | 112 | ||
113 | If unsure, say Y. | 113 | If unsure, say Y. |
114 | 114 | ||
115 | config HW_RANDOM_VIRTIO | ||
116 | tristate "VirtIO Random Number Generator support" | ||
117 | depends on HW_RANDOM && VIRTIO | ||
118 | ---help--- | ||
119 | This driver provides kernel-side support for the virtual Random Number | ||
120 | Generator hardware. | ||
121 | |||
122 | To compile this driver as a module, choose M here: the | ||
123 | module will be called virtio-rng. If unsure, say N. | ||
diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile index c8b7300e2fb1..b4940ddbb35f 100644 --- a/drivers/char/hw_random/Makefile +++ b/drivers/char/hw_random/Makefile | |||
@@ -11,3 +11,4 @@ obj-$(CONFIG_HW_RANDOM_VIA) += via-rng.o | |||
11 | obj-$(CONFIG_HW_RANDOM_IXP4XX) += ixp4xx-rng.o | 11 | obj-$(CONFIG_HW_RANDOM_IXP4XX) += ixp4xx-rng.o |
12 | obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng.o | 12 | obj-$(CONFIG_HW_RANDOM_OMAP) += omap-rng.o |
13 | obj-$(CONFIG_HW_RANDOM_PASEMI) += pasemi-rng.o | 13 | obj-$(CONFIG_HW_RANDOM_PASEMI) += pasemi-rng.o |
14 | obj-$(CONFIG_HW_RANDOM_VIRTIO) += virtio-rng.o | ||
diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/virtio-rng.c new file mode 100644 index 000000000000..d0e563e4fc39 --- /dev/null +++ b/drivers/char/hw_random/virtio-rng.c | |||
@@ -0,0 +1,155 @@ | |||
1 | /* | ||
2 | * Randomness driver for virtio | ||
3 | * Copyright (C) 2007, 2008 Rusty Russell IBM Corporation | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify | ||
6 | * it under the terms of the GNU General Public License as published by | ||
7 | * the Free Software Foundation; either version 2 of the License, or | ||
8 | * (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
18 | */ | ||
19 | #include <linux/err.h> | ||
20 | #include <linux/hw_random.h> | ||
21 | #include <linux/scatterlist.h> | ||
22 | #include <linux/spinlock.h> | ||
23 | #include <linux/virtio.h> | ||
24 | #include <linux/virtio_rng.h> | ||
25 | |||
26 | /* The host will fill any buffer we give it with sweet, sweet randomness. We | ||
27 | * give it 64 bytes at a time, and the hwrng framework takes it 4 bytes at a | ||
28 | * time. */ | ||
29 | #define RANDOM_DATA_SIZE 64 | ||
30 | |||
31 | static struct virtqueue *vq; | ||
32 | static u32 *random_data; | ||
33 | static unsigned int data_left; | ||
34 | static DECLARE_COMPLETION(have_data); | ||
35 | |||
36 | static void random_recv_done(struct virtqueue *vq) | ||
37 | { | ||
38 | int len; | ||
39 | |||
40 | /* We never get spurious callbacks. */ | ||
41 | if (!vq->vq_ops->get_buf(vq, &len)) | ||
42 | BUG(); | ||
43 | |||
44 | data_left = len / sizeof(random_data[0]); | ||
45 | complete(&have_data); | ||
46 | } | ||
47 | |||
48 | static void register_buffer(void) | ||
49 | { | ||
50 | struct scatterlist sg; | ||
51 | |||
52 | sg_init_one(&sg, random_data, RANDOM_DATA_SIZE); | ||
53 | /* There should always be room for one buffer. */ | ||
54 | if (vq->vq_ops->add_buf(vq, &sg, 0, 1, random_data) != 0) | ||
55 | BUG(); | ||
56 | vq->vq_ops->kick(vq); | ||
57 | } | ||
58 | |||
59 | /* At least we don't udelay() in a loop like some other drivers. */ | ||
60 | static int virtio_data_present(struct hwrng *rng, int wait) | ||
61 | { | ||
62 | if (data_left) | ||
63 | return 1; | ||
64 | |||
65 | if (!wait) | ||
66 | return 0; | ||
67 | |||
68 | wait_for_completion(&have_data); | ||
69 | return 1; | ||
70 | } | ||
71 | |||
72 | /* virtio_data_present() must have succeeded before this is called. */ | ||
73 | static int virtio_data_read(struct hwrng *rng, u32 *data) | ||
74 | { | ||
75 | BUG_ON(!data_left); | ||
76 | |||
77 | *data = random_data[--data_left]; | ||
78 | |||
79 | if (!data_left) { | ||
80 | init_completion(&have_data); | ||
81 | register_buffer(); | ||
82 | } | ||
83 | return sizeof(*data); | ||
84 | } | ||
85 | |||
86 | static struct hwrng virtio_hwrng = { | ||
87 | .name = "virtio", | ||
88 | .data_present = virtio_data_present, | ||
89 | .data_read = virtio_data_read, | ||
90 | }; | ||
91 | |||
92 | static int virtrng_probe(struct virtio_device *vdev) | ||
93 | { | ||
94 | int err; | ||
95 | |||
96 | /* We expect a single virtqueue. */ | ||
97 | vq = vdev->config->find_vq(vdev, 0, random_recv_done); | ||
98 | if (IS_ERR(vq)) | ||
99 | return PTR_ERR(vq); | ||
100 | |||
101 | err = hwrng_register(&virtio_hwrng); | ||
102 | if (err) { | ||
103 | vdev->config->del_vq(vq); | ||
104 | return err; | ||
105 | } | ||
106 | |||
107 | register_buffer(); | ||
108 | return 0; | ||
109 | } | ||
110 | |||
111 | static void virtrng_remove(struct virtio_device *vdev) | ||
112 | { | ||
113 | vdev->config->reset(vdev); | ||
114 | hwrng_unregister(&virtio_hwrng); | ||
115 | vdev->config->del_vq(vq); | ||
116 | } | ||
117 | |||
118 | static struct virtio_device_id id_table[] = { | ||
119 | { VIRTIO_ID_RNG, VIRTIO_DEV_ANY_ID }, | ||
120 | { 0 }, | ||
121 | }; | ||
122 | |||
123 | static struct virtio_driver virtio_rng = { | ||
124 | .driver.name = KBUILD_MODNAME, | ||
125 | .driver.owner = THIS_MODULE, | ||
126 | .id_table = id_table, | ||
127 | .probe = virtrng_probe, | ||
128 | .remove = __devexit_p(virtrng_remove), | ||
129 | }; | ||
130 | |||
131 | static int __init init(void) | ||
132 | { | ||
133 | int err; | ||
134 | |||
135 | random_data = kmalloc(RANDOM_DATA_SIZE, GFP_KERNEL); | ||
136 | if (!random_data) | ||
137 | return -ENOMEM; | ||
138 | |||
139 | err = register_virtio_driver(&virtio_rng); | ||
140 | if (err) | ||
141 | kfree(random_data); | ||
142 | return err; | ||
143 | } | ||
144 | |||
145 | static void __exit fini(void) | ||
146 | { | ||
147 | kfree(random_data); | ||
148 | unregister_virtio_driver(&virtio_rng); | ||
149 | } | ||
150 | module_init(init); | ||
151 | module_exit(fini); | ||
152 | |||
153 | MODULE_DEVICE_TABLE(virtio, id_table); | ||
154 | MODULE_DESCRIPTION("Virtio random number driver"); | ||
155 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/char/ip2/Makefile b/drivers/char/ip2/Makefile index 6bfe2543ddc2..939618f62fe1 100644 --- a/drivers/char/ip2/Makefile +++ b/drivers/char/ip2/Makefile | |||
@@ -2,7 +2,7 @@ | |||
2 | # Makefile for the Computone IntelliPort Plus Driver | 2 | # Makefile for the Computone IntelliPort Plus Driver |
3 | # | 3 | # |
4 | 4 | ||
5 | obj-$(CONFIG_COMPUTONE) += ip2.o ip2main.o | 5 | obj-$(CONFIG_COMPUTONE) += ip2.o |
6 | 6 | ||
7 | ip2-objs := ip2base.o | 7 | ip2-objs := ip2base.o ip2main.o |
8 | 8 | ||
diff --git a/drivers/char/ip2/ip2main.c b/drivers/char/ip2/ip2main.c index 70957acaa960..c12cf8fc4be0 100644 --- a/drivers/char/ip2/ip2main.c +++ b/drivers/char/ip2/ip2main.c | |||
@@ -346,27 +346,6 @@ have_requested_irq( char irq ) | |||
346 | } | 346 | } |
347 | 347 | ||
348 | /******************************************************************************/ | 348 | /******************************************************************************/ |
349 | /* Function: init_module() */ | ||
350 | /* Parameters: None */ | ||
351 | /* Returns: Success (0) */ | ||
352 | /* */ | ||
353 | /* Description: */ | ||
354 | /* This is a required entry point for an installable module. It simply calls */ | ||
355 | /* the driver initialisation function and returns what it returns. */ | ||
356 | /******************************************************************************/ | ||
357 | #ifdef MODULE | ||
358 | static int __init | ||
359 | ip2_init_module(void) | ||
360 | { | ||
361 | #ifdef IP2DEBUG_INIT | ||
362 | printk (KERN_DEBUG "Loading module ...\n" ); | ||
363 | #endif | ||
364 | return 0; | ||
365 | } | ||
366 | module_init(ip2_init_module); | ||
367 | #endif /* MODULE */ | ||
368 | |||
369 | /******************************************************************************/ | ||
370 | /* Function: cleanup_module() */ | 349 | /* Function: cleanup_module() */ |
371 | /* Parameters: None */ | 350 | /* Parameters: None */ |
372 | /* Returns: Nothing */ | 351 | /* Returns: Nothing */ |
@@ -779,8 +758,6 @@ out: | |||
779 | return err; | 758 | return err; |
780 | } | 759 | } |
781 | 760 | ||
782 | EXPORT_SYMBOL(ip2_loadmain); | ||
783 | |||
784 | /******************************************************************************/ | 761 | /******************************************************************************/ |
785 | /* Function: ip2_init_board() */ | 762 | /* Function: ip2_init_board() */ |
786 | /* Parameters: Index of board in configuration structure */ | 763 | /* Parameters: Index of board in configuration structure */ |
diff --git a/drivers/char/n_tty.c b/drivers/char/n_tty.c index 19105ec203f7..8096389b0dc2 100644 --- a/drivers/char/n_tty.c +++ b/drivers/char/n_tty.c | |||
@@ -282,16 +282,20 @@ static int opost(unsigned char c, struct tty_struct *tty) | |||
282 | if (O_ONLRET(tty)) | 282 | if (O_ONLRET(tty)) |
283 | tty->column = 0; | 283 | tty->column = 0; |
284 | if (O_ONLCR(tty)) { | 284 | if (O_ONLCR(tty)) { |
285 | if (space < 2) | 285 | if (space < 2) { |
286 | unlock_kernel(); | ||
286 | return -1; | 287 | return -1; |
288 | } | ||
287 | tty_put_char(tty, '\r'); | 289 | tty_put_char(tty, '\r'); |
288 | tty->column = 0; | 290 | tty->column = 0; |
289 | } | 291 | } |
290 | tty->canon_column = tty->column; | 292 | tty->canon_column = tty->column; |
291 | break; | 293 | break; |
292 | case '\r': | 294 | case '\r': |
293 | if (O_ONOCR(tty) && tty->column == 0) | 295 | if (O_ONOCR(tty) && tty->column == 0) { |
296 | unlock_kernel(); | ||
294 | return 0; | 297 | return 0; |
298 | } | ||
295 | if (O_OCRNL(tty)) { | 299 | if (O_OCRNL(tty)) { |
296 | c = '\n'; | 300 | c = '\n'; |
297 | if (O_ONLRET(tty)) | 301 | if (O_ONLRET(tty)) |
@@ -303,10 +307,13 @@ static int opost(unsigned char c, struct tty_struct *tty) | |||
303 | case '\t': | 307 | case '\t': |
304 | spaces = 8 - (tty->column & 7); | 308 | spaces = 8 - (tty->column & 7); |
305 | if (O_TABDLY(tty) == XTABS) { | 309 | if (O_TABDLY(tty) == XTABS) { |
306 | if (space < spaces) | 310 | if (space < spaces) { |
311 | unlock_kernel(); | ||
307 | return -1; | 312 | return -1; |
313 | } | ||
308 | tty->column += spaces; | 314 | tty->column += spaces; |
309 | tty->ops->write(tty, " ", spaces); | 315 | tty->ops->write(tty, " ", spaces); |
316 | unlock_kernel(); | ||
310 | return 0; | 317 | return 0; |
311 | } | 318 | } |
312 | tty->column += spaces; | 319 | tty->column += spaces; |
diff --git a/drivers/char/snsc_event.c b/drivers/char/snsc_event.c index 53b3d44f8c06..55a95892ccf9 100644 --- a/drivers/char/snsc_event.c +++ b/drivers/char/snsc_event.c | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/sched.h> | 19 | #include <linux/sched.h> |
20 | #include <linux/byteorder/generic.h> | 20 | #include <asm/byteorder.h> |
21 | #include <asm/sn/sn_sal.h> | 21 | #include <asm/sn/sn_sal.h> |
22 | #include <asm/unaligned.h> | 22 | #include <asm/unaligned.h> |
23 | #include "snsc.h" | 23 | #include "snsc.h" |
diff --git a/drivers/char/sysrq.c b/drivers/char/sysrq.c index 9e9bad8bdcf4..dbce1263bdff 100644 --- a/drivers/char/sysrq.c +++ b/drivers/char/sysrq.c | |||
@@ -402,6 +402,7 @@ static struct sysrq_key_op *sysrq_key_table[36] = { | |||
402 | &sysrq_showstate_blocked_op, /* w */ | 402 | &sysrq_showstate_blocked_op, /* w */ |
403 | /* x: May be registered on ppc/powerpc for xmon */ | 403 | /* x: May be registered on ppc/powerpc for xmon */ |
404 | NULL, /* x */ | 404 | NULL, /* x */ |
405 | /* y: May be registered on sparc64 for global register dump */ | ||
405 | NULL, /* y */ | 406 | NULL, /* y */ |
406 | NULL /* z */ | 407 | NULL /* z */ |
407 | }; | 408 | }; |
diff --git a/drivers/char/viocons.c b/drivers/char/viocons.c index 3d3e1c2b310f..65fb848e1cce 100644 --- a/drivers/char/viocons.c +++ b/drivers/char/viocons.c | |||
@@ -7,7 +7,7 @@ | |||
7 | * Authors: Dave Boutcher <boutcher@us.ibm.com> | 7 | * Authors: Dave Boutcher <boutcher@us.ibm.com> |
8 | * Ryan Arnold <ryanarn@us.ibm.com> | 8 | * Ryan Arnold <ryanarn@us.ibm.com> |
9 | * Colin Devilbiss <devilbis@us.ibm.com> | 9 | * Colin Devilbiss <devilbis@us.ibm.com> |
10 | * Stephen Rothwell <sfr@au1.ibm.com> | 10 | * Stephen Rothwell |
11 | * | 11 | * |
12 | * (C) Copyright 2000, 2001, 2002, 2003, 2004 IBM Corporation | 12 | * (C) Copyright 2000, 2001, 2002, 2003, 2004 IBM Corporation |
13 | * | 13 | * |
diff --git a/drivers/char/viotape.c b/drivers/char/viotape.c index 58aad63831f4..c39ddaff5e8f 100644 --- a/drivers/char/viotape.c +++ b/drivers/char/viotape.c | |||
@@ -6,7 +6,7 @@ | |||
6 | * Authors: Dave Boutcher <boutcher@us.ibm.com> | 6 | * Authors: Dave Boutcher <boutcher@us.ibm.com> |
7 | * Ryan Arnold <ryanarn@us.ibm.com> | 7 | * Ryan Arnold <ryanarn@us.ibm.com> |
8 | * Colin Devilbiss <devilbis@us.ibm.com> | 8 | * Colin Devilbiss <devilbis@us.ibm.com> |
9 | * Stephen Rothwell <sfr@au1.ibm.com> | 9 | * Stephen Rothwell |
10 | * | 10 | * |
11 | * (C) Copyright 2000-2004 IBM Corporation | 11 | * (C) Copyright 2000-2004 IBM Corporation |
12 | * | 12 | * |
diff --git a/drivers/char/vme_scc.c b/drivers/char/vme_scc.c index e122a0e87bb0..f17ac043b551 100644 --- a/drivers/char/vme_scc.c +++ b/drivers/char/vme_scc.c | |||
@@ -89,9 +89,7 @@ static void scc_break_ctl(struct tty_struct *tty, int break_state); | |||
89 | 89 | ||
90 | static struct tty_driver *scc_driver; | 90 | static struct tty_driver *scc_driver; |
91 | 91 | ||
92 | struct scc_port scc_ports[2]; | 92 | static struct scc_port scc_ports[2]; |
93 | |||
94 | int scc_initialized = 0; | ||
95 | 93 | ||
96 | /*--------------------------------------------------------------------------- | 94 | /*--------------------------------------------------------------------------- |
97 | * Interface from generic_serial.c back here | 95 | * Interface from generic_serial.c back here |
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 7fce038fa57e..86f0a2430624 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -928,13 +928,13 @@ static int cpufreq_add_dev(struct sys_device *sys_dev) | |||
928 | policy->user_policy.policy = policy->policy; | 928 | policy->user_policy.policy = policy->policy; |
929 | policy->user_policy.governor = policy->governor; | 929 | policy->user_policy.governor = policy->governor; |
930 | 930 | ||
931 | unlock_policy_rwsem_write(cpu); | ||
932 | |||
933 | if (ret) { | 931 | if (ret) { |
934 | dprintk("setting policy failed\n"); | 932 | dprintk("setting policy failed\n"); |
935 | goto err_out_unregister; | 933 | goto err_out_unregister; |
936 | } | 934 | } |
937 | 935 | ||
936 | unlock_policy_rwsem_write(cpu); | ||
937 | |||
938 | kobject_uevent(&policy->kobj, KOBJ_ADD); | 938 | kobject_uevent(&policy->kobj, KOBJ_ADD); |
939 | module_put(cpufreq_driver->owner); | 939 | module_put(cpufreq_driver->owner); |
940 | dprintk("initialization complete\n"); | 940 | dprintk("initialization complete\n"); |
diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c index ae6cd60d5c14..b64c6bc445e3 100644 --- a/drivers/cpufreq/freq_table.c +++ b/drivers/cpufreq/freq_table.c | |||
@@ -2,6 +2,11 @@ | |||
2 | * linux/drivers/cpufreq/freq_table.c | 2 | * linux/drivers/cpufreq/freq_table.c |
3 | * | 3 | * |
4 | * Copyright (C) 2002 - 2003 Dominik Brodowski | 4 | * Copyright (C) 2002 - 2003 Dominik Brodowski |
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 | * | ||
5 | */ | 10 | */ |
6 | 11 | ||
7 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c index 762b729672e0..0ec0f431e6a1 100644 --- a/drivers/dma/iop-adma.c +++ b/drivers/dma/iop-adma.c | |||
@@ -821,10 +821,10 @@ static int __devinit iop_adma_memcpy_self_test(struct iop_adma_device *device) | |||
821 | 821 | ||
822 | dev_dbg(device->common.dev, "%s\n", __func__); | 822 | dev_dbg(device->common.dev, "%s\n", __func__); |
823 | 823 | ||
824 | src = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL); | 824 | src = kmalloc(IOP_ADMA_TEST_SIZE, GFP_KERNEL); |
825 | if (!src) | 825 | if (!src) |
826 | return -ENOMEM; | 826 | return -ENOMEM; |
827 | dest = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL); | 827 | dest = kzalloc(IOP_ADMA_TEST_SIZE, GFP_KERNEL); |
828 | if (!dest) { | 828 | if (!dest) { |
829 | kfree(src); | 829 | kfree(src); |
830 | return -ENOMEM; | 830 | return -ENOMEM; |
@@ -834,8 +834,6 @@ static int __devinit iop_adma_memcpy_self_test(struct iop_adma_device *device) | |||
834 | for (i = 0; i < IOP_ADMA_TEST_SIZE; i++) | 834 | for (i = 0; i < IOP_ADMA_TEST_SIZE; i++) |
835 | ((u8 *) src)[i] = (u8)i; | 835 | ((u8 *) src)[i] = (u8)i; |
836 | 836 | ||
837 | memset(dest, 0, IOP_ADMA_TEST_SIZE); | ||
838 | |||
839 | /* Start copy, using first DMA channel */ | 837 | /* Start copy, using first DMA channel */ |
840 | dma_chan = container_of(device->common.channels.next, | 838 | dma_chan = container_of(device->common.channels.next, |
841 | struct dma_chan, | 839 | struct dma_chan, |
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c index 065732ddf40c..d49361bfe670 100644 --- a/drivers/edac/mpc85xx_edac.c +++ b/drivers/edac/mpc85xx_edac.c | |||
@@ -20,7 +20,6 @@ | |||
20 | 20 | ||
21 | #include <linux/of_platform.h> | 21 | #include <linux/of_platform.h> |
22 | #include <linux/of_device.h> | 22 | #include <linux/of_device.h> |
23 | #include <asm/mpc85xx.h> | ||
24 | #include "edac_module.h" | 23 | #include "edac_module.h" |
25 | #include "edac_core.h" | 24 | #include "edac_core.h" |
26 | #include "mpc85xx_edac.h" | 25 | #include "mpc85xx_edac.h" |
@@ -43,8 +42,6 @@ static u32 orig_pci_err_en; | |||
43 | static u32 orig_l2_err_disable; | 42 | static u32 orig_l2_err_disable; |
44 | static u32 orig_hid1; | 43 | static u32 orig_hid1; |
45 | 44 | ||
46 | static const char *mpc85xx_ctl_name = "MPC85xx"; | ||
47 | |||
48 | /************************ MC SYSFS parts ***********************************/ | 45 | /************************ MC SYSFS parts ***********************************/ |
49 | 46 | ||
50 | static ssize_t mpc85xx_mc_inject_data_hi_show(struct mem_ctl_info *mci, | 47 | static ssize_t mpc85xx_mc_inject_data_hi_show(struct mem_ctl_info *mci, |
diff --git a/drivers/firewire/fw-cdev.c b/drivers/firewire/fw-cdev.c index 4a541921a14a..dda14015e873 100644 --- a/drivers/firewire/fw-cdev.c +++ b/drivers/firewire/fw-cdev.c | |||
@@ -113,6 +113,11 @@ static int fw_device_op_open(struct inode *inode, struct file *file) | |||
113 | if (device == NULL) | 113 | if (device == NULL) |
114 | return -ENODEV; | 114 | return -ENODEV; |
115 | 115 | ||
116 | if (fw_device_is_shutdown(device)) { | ||
117 | fw_device_put(device); | ||
118 | return -ENODEV; | ||
119 | } | ||
120 | |||
116 | client = kzalloc(sizeof(*client), GFP_KERNEL); | 121 | client = kzalloc(sizeof(*client), GFP_KERNEL); |
117 | if (client == NULL) { | 122 | if (client == NULL) { |
118 | fw_device_put(device); | 123 | fw_device_put(device); |
@@ -901,6 +906,9 @@ fw_device_op_ioctl(struct file *file, | |||
901 | { | 906 | { |
902 | struct client *client = file->private_data; | 907 | struct client *client = file->private_data; |
903 | 908 | ||
909 | if (fw_device_is_shutdown(client->device)) | ||
910 | return -ENODEV; | ||
911 | |||
904 | return dispatch_ioctl(client, cmd, (void __user *) arg); | 912 | return dispatch_ioctl(client, cmd, (void __user *) arg); |
905 | } | 913 | } |
906 | 914 | ||
@@ -911,6 +919,9 @@ fw_device_op_compat_ioctl(struct file *file, | |||
911 | { | 919 | { |
912 | struct client *client = file->private_data; | 920 | struct client *client = file->private_data; |
913 | 921 | ||
922 | if (fw_device_is_shutdown(client->device)) | ||
923 | return -ENODEV; | ||
924 | |||
914 | return dispatch_ioctl(client, cmd, compat_ptr(arg)); | 925 | return dispatch_ioctl(client, cmd, compat_ptr(arg)); |
915 | } | 926 | } |
916 | #endif | 927 | #endif |
@@ -922,6 +933,9 @@ static int fw_device_op_mmap(struct file *file, struct vm_area_struct *vma) | |||
922 | unsigned long size; | 933 | unsigned long size; |
923 | int page_count, retval; | 934 | int page_count, retval; |
924 | 935 | ||
936 | if (fw_device_is_shutdown(client->device)) | ||
937 | return -ENODEV; | ||
938 | |||
925 | /* FIXME: We could support multiple buffers, but we don't. */ | 939 | /* FIXME: We could support multiple buffers, but we don't. */ |
926 | if (client->buffer.pages != NULL) | 940 | if (client->buffer.pages != NULL) |
927 | return -EBUSY; | 941 | return -EBUSY; |
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c index 7f138c6195ff..beaf6b3a37dc 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c | |||
@@ -127,7 +127,7 @@ int __init gpiochip_reserve(int start, int ngpio) | |||
127 | unsigned long flags; | 127 | unsigned long flags; |
128 | int i; | 128 | int i; |
129 | 129 | ||
130 | if (!gpio_is_valid(start) || !gpio_is_valid(start + ngpio)) | 130 | if (!gpio_is_valid(start) || !gpio_is_valid(start + ngpio - 1)) |
131 | return -EINVAL; | 131 | return -EINVAL; |
132 | 132 | ||
133 | spin_lock_irqsave(&gpio_lock, flags); | 133 | spin_lock_irqsave(&gpio_lock, flags); |
@@ -170,7 +170,7 @@ int gpiochip_add(struct gpio_chip *chip) | |||
170 | unsigned id; | 170 | unsigned id; |
171 | int base = chip->base; | 171 | int base = chip->base; |
172 | 172 | ||
173 | if ((!gpio_is_valid(base) || !gpio_is_valid(base + chip->ngpio)) | 173 | if ((!gpio_is_valid(base) || !gpio_is_valid(base + chip->ngpio - 1)) |
174 | && base >= 0) { | 174 | && base >= 0) { |
175 | status = -EINVAL; | 175 | status = -EINVAL; |
176 | goto fail; | 176 | goto fail; |
@@ -207,7 +207,7 @@ fail: | |||
207 | /* failures here can mean systems won't boot... */ | 207 | /* failures here can mean systems won't boot... */ |
208 | if (status) | 208 | if (status) |
209 | pr_err("gpiochip_add: gpios %d..%d (%s) not registered\n", | 209 | pr_err("gpiochip_add: gpios %d..%d (%s) not registered\n", |
210 | chip->base, chip->base + chip->ngpio, | 210 | chip->base, chip->base + chip->ngpio - 1, |
211 | chip->label ? : "generic"); | 211 | chip->label ? : "generic"); |
212 | return status; | 212 | return status; |
213 | } | 213 | } |
diff --git a/drivers/gpio/mcp23s08.c b/drivers/gpio/mcp23s08.c index 7fb5b9d009d4..7f92fdd5f0e2 100644 --- a/drivers/gpio/mcp23s08.c +++ b/drivers/gpio/mcp23s08.c | |||
@@ -168,7 +168,7 @@ static void mcp23s08_dbg_show(struct seq_file *s, struct gpio_chip *chip) | |||
168 | { | 168 | { |
169 | struct mcp23s08 *mcp; | 169 | struct mcp23s08 *mcp; |
170 | char bank; | 170 | char bank; |
171 | unsigned t; | 171 | int t; |
172 | unsigned mask; | 172 | unsigned mask; |
173 | 173 | ||
174 | mcp = container_of(chip, struct mcp23s08, chip); | 174 | mcp = container_of(chip, struct mcp23s08, chip); |
diff --git a/drivers/gpio/pca953x.c b/drivers/gpio/pca953x.c index 93f916720b13..7e40e8a55edf 100644 --- a/drivers/gpio/pca953x.c +++ b/drivers/gpio/pca953x.c | |||
@@ -30,6 +30,7 @@ static const struct i2c_device_id pca953x_id[] = { | |||
30 | { "pca9537", 4, }, | 30 | { "pca9537", 4, }, |
31 | { "pca9538", 8, }, | 31 | { "pca9538", 8, }, |
32 | { "pca9539", 16, }, | 32 | { "pca9539", 16, }, |
33 | { "pca9554", 8, }, | ||
33 | { "pca9555", 16, }, | 34 | { "pca9555", 16, }, |
34 | { "pca9557", 8, }, | 35 | { "pca9557", 8, }, |
35 | /* REVISIT several pca955x parts should work here too */ | 36 | /* REVISIT several pca955x parts should work here too */ |
diff --git a/drivers/hid/hid-debug.c b/drivers/hid/hid-debug.c index f88714b06000..47ac1a7d66e1 100644 --- a/drivers/hid/hid-debug.c +++ b/drivers/hid/hid-debug.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: hid-debug.h,v 1.8 2001/09/25 09:37:57 vojtech Exp $ | ||
3 | * | ||
4 | * (c) 1999 Andreas Gal <gal@cs.uni-magdeburg.de> | 2 | * (c) 1999 Andreas Gal <gal@cs.uni-magdeburg.de> |
5 | * (c) 2000-2001 Vojtech Pavlik <vojtech@ucw.cz> | 3 | * (c) 2000-2001 Vojtech Pavlik <vojtech@ucw.cz> |
6 | * (c) 2007 Jiri Kosina | 4 | * (c) 2007 Jiri Kosina |
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index c3eb3f13e2ca..5c52a20ad344 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: hid-input.c,v 1.2 2002/04/23 00:59:25 rdamazio Exp $ | ||
3 | * | ||
4 | * Copyright (c) 2000-2001 Vojtech Pavlik | 2 | * Copyright (c) 2000-2001 Vojtech Pavlik |
5 | * Copyright (c) 2006-2007 Jiri Kosina | 3 | * Copyright (c) 2006-2007 Jiri Kosina |
6 | * | 4 | * |
@@ -218,8 +216,9 @@ int hidinput_apple_event(struct hid_device *hid, struct input_dev *input, | |||
218 | } | 216 | } |
219 | } | 217 | } |
220 | 218 | ||
221 | if (test_bit(usage->code, hid->pb_pressed_numlock) || | 219 | if (hid->quirks & HID_QUIRK_APPLE_NUMLOCK_EMULATION && ( |
222 | test_bit(LED_NUML, input->led)) { | 220 | test_bit(usage->code, hid->pb_pressed_numlock) || |
221 | test_bit(LED_NUML, input->led))) { | ||
223 | trans = find_translation(powerbook_numlock_keys, usage->code); | 222 | trans = find_translation(powerbook_numlock_keys, usage->code); |
224 | 223 | ||
225 | if (trans) { | 224 | if (trans) { |
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index d3f8d9194f30..1df832a8fcbc 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c | |||
@@ -325,6 +325,10 @@ | |||
325 | #define USB_DEVICE_ID_MGE_UPS 0xffff | 325 | #define USB_DEVICE_ID_MGE_UPS 0xffff |
326 | #define USB_DEVICE_ID_MGE_UPS1 0x0001 | 326 | #define USB_DEVICE_ID_MGE_UPS1 0x0001 |
327 | 327 | ||
328 | #define USB_VENDOR_ID_MICROCHIP 0x04d8 | ||
329 | #define USB_DEVICE_ID_PICKIT1 0x0032 | ||
330 | #define USB_DEVICE_ID_PICKIT2 0x0033 | ||
331 | |||
328 | #define USB_VENDOR_ID_MICROSOFT 0x045e | 332 | #define USB_VENDOR_ID_MICROSOFT 0x045e |
329 | #define USB_DEVICE_ID_SIDEWINDER_GV 0x003b | 333 | #define USB_DEVICE_ID_SIDEWINDER_GV 0x003b |
330 | #define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d | 334 | #define USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0 0x009d |
@@ -371,6 +375,9 @@ | |||
371 | #define USB_VENDOR_ID_SONY 0x054c | 375 | #define USB_VENDOR_ID_SONY 0x054c |
372 | #define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 | 376 | #define USB_DEVICE_ID_SONY_PS3_CONTROLLER 0x0268 |
373 | 377 | ||
378 | #define USB_VENDOR_ID_SOUNDGRAPH 0x15c2 | ||
379 | #define USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD 0x0038 | ||
380 | |||
374 | #define USB_VENDOR_ID_SUN 0x0430 | 381 | #define USB_VENDOR_ID_SUN 0x0430 |
375 | #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab | 382 | #define USB_DEVICE_ID_RARITAN_KVM_DONGLE 0xcdab |
376 | 383 | ||
@@ -567,6 +574,7 @@ static const struct hid_blacklist { | |||
567 | { USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE }, | 574 | { USB_VENDOR_ID_PANJIT, 0x0002, HID_QUIRK_IGNORE }, |
568 | { USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE }, | 575 | { USB_VENDOR_ID_PANJIT, 0x0003, HID_QUIRK_IGNORE }, |
569 | { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE }, | 576 | { USB_VENDOR_ID_PANJIT, 0x0004, HID_QUIRK_IGNORE }, |
577 | { USB_VENDOR_ID_SOUNDGRAPH, USB_DEVICE_ID_SOUNDGRAPH_IMON_LCD, HID_QUIRK_IGNORE }, | ||
570 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO, HID_QUIRK_IGNORE }, | 578 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_LABPRO, HID_QUIRK_IGNORE }, |
571 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE }, | 579 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_GOTEMP, HID_QUIRK_IGNORE }, |
572 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE }, | 580 | { USB_VENDOR_ID_VERNIER, USB_DEVICE_ID_VERNIER_SKIP, HID_QUIRK_IGNORE }, |
@@ -580,6 +588,9 @@ static const struct hid_blacklist { | |||
580 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE }, | 588 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_FLAIR, HID_QUIRK_IGNORE }, |
581 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE }, | 589 | { USB_VENDOR_ID_ACECAD, USB_DEVICE_ID_ACECAD_302, HID_QUIRK_IGNORE }, |
582 | 590 | ||
591 | { USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT1, HID_QUIRK_IGNORE }, | ||
592 | { USB_VENDOR_ID_MICROCHIP, USB_DEVICE_ID_PICKIT2, HID_QUIRK_IGNORE }, | ||
593 | |||
583 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP }, | 594 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_ELITE_KBD, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP }, |
584 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP }, | 595 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_CORDLESS_DESKTOP_LX500, HID_QUIRK_LOGITECH_IGNORE_DOUBLED_WHEEL | HID_QUIRK_LOGITECH_EXPANDED_KEYMAP }, |
585 | 596 | ||
@@ -611,28 +622,28 @@ static const struct hid_blacklist { | |||
611 | 622 | ||
612 | { USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, | 623 | { USB_VENDOR_ID_WISEGROUP_LTD, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS, HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, |
613 | 624 | ||
614 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 625 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
615 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 626 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
616 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 627 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
617 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, | 628 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, |
618 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 629 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
619 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 630 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
620 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, | 631 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, |
621 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 632 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
622 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 633 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
623 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, | 634 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD}, |
624 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 635 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
625 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI, HID_QUIRK_APPLE_HAS_FN }, | 636 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ANSI, HID_QUIRK_APPLE_HAS_FN }, |
626 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, | 637 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, |
627 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN }, | 638 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN }, |
628 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 639 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
629 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 640 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
630 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 641 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
631 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_HAS_FN }, | 642 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN }, |
632 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, | 643 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, |
633 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS, HID_QUIRK_APPLE_HAS_FN }, | 644 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_JIS, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN }, |
634 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 645 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
635 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 646 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY, HID_QUIRK_APPLE_NUMLOCK_EMULATION | HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
636 | 647 | ||
637 | { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, | 648 | { USB_VENDOR_ID_DELL, USB_DEVICE_ID_DELL_W7658, HID_QUIRK_RESET_LEDS }, |
638 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS }, | 649 | { USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_KBD, HID_QUIRK_RESET_LEDS }, |
diff --git a/drivers/hid/usbhid/usbkbd.c b/drivers/hid/usbhid/usbkbd.c index 5d9dbb47e4a8..3cd46d2e53c1 100644 --- a/drivers/hid/usbhid/usbkbd.c +++ b/drivers/hid/usbhid/usbkbd.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: usbkbd.c,v 1.27 2001/12/27 10:37:41 vojtech Exp $ | ||
3 | * | ||
4 | * Copyright (c) 1999-2001 Vojtech Pavlik | 2 | * Copyright (c) 1999-2001 Vojtech Pavlik |
5 | * | 3 | * |
6 | * USB HIDBP Keyboard support | 4 | * USB HIDBP Keyboard support |
diff --git a/drivers/hid/usbhid/usbmouse.c b/drivers/hid/usbhid/usbmouse.c index df0d96d989de..703e9d0e8714 100644 --- a/drivers/hid/usbhid/usbmouse.c +++ b/drivers/hid/usbhid/usbmouse.c | |||
@@ -1,6 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: usbmouse.c,v 1.15 2001/12/27 10:37:41 vojtech Exp $ | ||
3 | * | ||
4 | * Copyright (c) 1999-2001 Vojtech Pavlik | 2 | * Copyright (c) 1999-2001 Vojtech Pavlik |
5 | * | 3 | * |
6 | * USB HIDBP Mouse support | 4 | * USB HIDBP Mouse support |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 4dc76bc45c9d..00ff53348491 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
@@ -330,6 +330,20 @@ config SENSORS_CORETEMP | |||
330 | sensor inside your CPU. Supported all are all known variants | 330 | sensor inside your CPU. Supported all are all known variants |
331 | of Intel Core family. | 331 | of Intel Core family. |
332 | 332 | ||
333 | config SENSORS_IBMAEM | ||
334 | tristate "IBM Active Energy Manager temperature/power sensors and control" | ||
335 | select IPMI_SI | ||
336 | depends on IPMI_HANDLER | ||
337 | help | ||
338 | If you say yes here you get support for the temperature and | ||
339 | power sensors and capping hardware in various IBM System X | ||
340 | servers that support Active Energy Manager. This includes | ||
341 | the x3350, x3550, x3650, x3655, x3755, x3850 M2, x3950 M2, | ||
342 | and certain HS2x/LS2x/QS2x blades. | ||
343 | |||
344 | This driver can also be built as a module. If so, the module | ||
345 | will be called ibmaem. | ||
346 | |||
333 | config SENSORS_IBMPEX | 347 | config SENSORS_IBMPEX |
334 | tristate "IBM PowerExecutive temperature/power sensors" | 348 | tristate "IBM PowerExecutive temperature/power sensors" |
335 | select IPMI_SI | 349 | select IPMI_SI |
diff --git a/drivers/hwmon/Makefile b/drivers/hwmon/Makefile index 3bdb05a5cbd7..d098677e08de 100644 --- a/drivers/hwmon/Makefile +++ b/drivers/hwmon/Makefile | |||
@@ -41,6 +41,7 @@ obj-$(CONFIG_SENSORS_GL518SM) += gl518sm.o | |||
41 | obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o | 41 | obj-$(CONFIG_SENSORS_GL520SM) += gl520sm.o |
42 | obj-$(CONFIG_SENSORS_HDAPS) += hdaps.o | 42 | obj-$(CONFIG_SENSORS_HDAPS) += hdaps.o |
43 | obj-$(CONFIG_SENSORS_I5K_AMB) += i5k_amb.o | 43 | obj-$(CONFIG_SENSORS_I5K_AMB) += i5k_amb.o |
44 | obj-$(CONFIG_SENSORS_IBMAEM) += ibmaem.o | ||
44 | obj-$(CONFIG_SENSORS_IBMPEX) += ibmpex.o | 45 | obj-$(CONFIG_SENSORS_IBMPEX) += ibmpex.o |
45 | obj-$(CONFIG_SENSORS_IT87) += it87.o | 46 | obj-$(CONFIG_SENSORS_IT87) += it87.o |
46 | obj-$(CONFIG_SENSORS_K8TEMP) += k8temp.o | 47 | obj-$(CONFIG_SENSORS_K8TEMP) += k8temp.o |
diff --git a/drivers/hwmon/hdaps.c b/drivers/hwmon/hdaps.c index bab5fd2e4dfd..88e89653daaf 100644 --- a/drivers/hwmon/hdaps.c +++ b/drivers/hwmon/hdaps.c | |||
@@ -515,6 +515,7 @@ static struct dmi_system_id __initdata hdaps_whitelist[] = { | |||
515 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R50"), | 515 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R50"), |
516 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R51"), | 516 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R51"), |
517 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R52"), | 517 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad R52"), |
518 | HDAPS_DMI_MATCH_INVERT("LENOVO", "ThinkPad R61i"), | ||
518 | HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T41p"), | 519 | HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T41p"), |
519 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T41"), | 520 | HDAPS_DMI_MATCH_NORMAL("IBM", "ThinkPad T41"), |
520 | HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T42p"), | 521 | HDAPS_DMI_MATCH_INVERT("IBM", "ThinkPad T42p"), |
diff --git a/drivers/hwmon/i5k_amb.c b/drivers/hwmon/i5k_amb.c index 6ac5c6f53585..f9e2ed621f7b 100644 --- a/drivers/hwmon/i5k_amb.c +++ b/drivers/hwmon/i5k_amb.c | |||
@@ -111,6 +111,7 @@ struct i5k_amb_data { | |||
111 | void __iomem *amb_mmio; | 111 | void __iomem *amb_mmio; |
112 | struct i5k_device_attribute *attrs; | 112 | struct i5k_device_attribute *attrs; |
113 | unsigned int num_attrs; | 113 | unsigned int num_attrs; |
114 | unsigned long chipset_id; | ||
114 | }; | 115 | }; |
115 | 116 | ||
116 | static ssize_t show_name(struct device *dev, struct device_attribute *devattr, | 117 | static ssize_t show_name(struct device *dev, struct device_attribute *devattr, |
@@ -382,7 +383,8 @@ err: | |||
382 | return res; | 383 | return res; |
383 | } | 384 | } |
384 | 385 | ||
385 | static int __devinit i5k_find_amb_registers(struct i5k_amb_data *data) | 386 | static int __devinit i5k_find_amb_registers(struct i5k_amb_data *data, |
387 | unsigned long devid) | ||
386 | { | 388 | { |
387 | struct pci_dev *pcidev; | 389 | struct pci_dev *pcidev; |
388 | u32 val32; | 390 | u32 val32; |
@@ -390,7 +392,7 @@ static int __devinit i5k_find_amb_registers(struct i5k_amb_data *data) | |||
390 | 392 | ||
391 | /* Find AMB register memory space */ | 393 | /* Find AMB register memory space */ |
392 | pcidev = pci_get_device(PCI_VENDOR_ID_INTEL, | 394 | pcidev = pci_get_device(PCI_VENDOR_ID_INTEL, |
393 | PCI_DEVICE_ID_INTEL_5000_ERR, | 395 | devid, |
394 | NULL); | 396 | NULL); |
395 | if (!pcidev) | 397 | if (!pcidev) |
396 | return -ENODEV; | 398 | return -ENODEV; |
@@ -409,6 +411,8 @@ static int __devinit i5k_find_amb_registers(struct i5k_amb_data *data) | |||
409 | goto out; | 411 | goto out; |
410 | } | 412 | } |
411 | 413 | ||
414 | data->chipset_id = devid; | ||
415 | |||
412 | res = 0; | 416 | res = 0; |
413 | out: | 417 | out: |
414 | pci_dev_put(pcidev); | 418 | pci_dev_put(pcidev); |
@@ -441,10 +445,30 @@ out: | |||
441 | return res; | 445 | return res; |
442 | } | 446 | } |
443 | 447 | ||
448 | static unsigned long i5k_channel_pci_id(struct i5k_amb_data *data, | ||
449 | unsigned long channel) | ||
450 | { | ||
451 | switch (data->chipset_id) { | ||
452 | case PCI_DEVICE_ID_INTEL_5000_ERR: | ||
453 | return PCI_DEVICE_ID_INTEL_5000_FBD0 + channel; | ||
454 | case PCI_DEVICE_ID_INTEL_5400_ERR: | ||
455 | return PCI_DEVICE_ID_INTEL_5400_FBD0 + channel; | ||
456 | default: | ||
457 | BUG(); | ||
458 | } | ||
459 | } | ||
460 | |||
461 | static unsigned long chipset_ids[] = { | ||
462 | PCI_DEVICE_ID_INTEL_5000_ERR, | ||
463 | PCI_DEVICE_ID_INTEL_5400_ERR, | ||
464 | 0 | ||
465 | }; | ||
466 | |||
444 | static int __devinit i5k_amb_probe(struct platform_device *pdev) | 467 | static int __devinit i5k_amb_probe(struct platform_device *pdev) |
445 | { | 468 | { |
446 | struct i5k_amb_data *data; | 469 | struct i5k_amb_data *data; |
447 | struct resource *reso; | 470 | struct resource *reso; |
471 | int i; | ||
448 | int res = -ENODEV; | 472 | int res = -ENODEV; |
449 | 473 | ||
450 | data = kzalloc(sizeof(*data), GFP_KERNEL); | 474 | data = kzalloc(sizeof(*data), GFP_KERNEL); |
@@ -452,19 +476,24 @@ static int __devinit i5k_amb_probe(struct platform_device *pdev) | |||
452 | return -ENOMEM; | 476 | return -ENOMEM; |
453 | 477 | ||
454 | /* Figure out where the AMB registers live */ | 478 | /* Figure out where the AMB registers live */ |
455 | res = i5k_find_amb_registers(data); | 479 | i = 0; |
480 | do { | ||
481 | res = i5k_find_amb_registers(data, chipset_ids[i]); | ||
482 | i++; | ||
483 | } while (res && chipset_ids[i]); | ||
484 | |||
456 | if (res) | 485 | if (res) |
457 | goto err; | 486 | goto err; |
458 | 487 | ||
459 | /* Copy the DIMM presence map for the first two channels */ | 488 | /* Copy the DIMM presence map for the first two channels */ |
460 | res = i5k_channel_probe(&data->amb_present[0], | 489 | res = i5k_channel_probe(&data->amb_present[0], |
461 | PCI_DEVICE_ID_INTEL_5000_FBD0); | 490 | i5k_channel_pci_id(data, 0)); |
462 | if (res) | 491 | if (res) |
463 | goto err; | 492 | goto err; |
464 | 493 | ||
465 | /* Copy the DIMM presence map for the optional second two channels */ | 494 | /* Copy the DIMM presence map for the optional second two channels */ |
466 | i5k_channel_probe(&data->amb_present[2], | 495 | i5k_channel_probe(&data->amb_present[2], |
467 | PCI_DEVICE_ID_INTEL_5000_FBD1); | 496 | i5k_channel_pci_id(data, 1)); |
468 | 497 | ||
469 | /* Set up resource regions */ | 498 | /* Set up resource regions */ |
470 | reso = request_mem_region(data->amb_base, data->amb_len, DRVNAME); | 499 | reso = request_mem_region(data->amb_base, data->amb_len, DRVNAME); |
diff --git a/drivers/hwmon/ibmaem.c b/drivers/hwmon/ibmaem.c new file mode 100644 index 000000000000..5c006c9a4311 --- /dev/null +++ b/drivers/hwmon/ibmaem.c | |||
@@ -0,0 +1,1111 @@ | |||
1 | /* | ||
2 | * A hwmon driver for the IBM Active Energy Manager temperature/power sensors | ||
3 | * and capping functionality. | ||
4 | * Copyright (C) 2008 IBM | ||
5 | * | ||
6 | * Author: Darrick J. Wong <djwong@us.ibm.com> | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License as published by | ||
10 | * the Free Software Foundation; either version 2 of the License, or | ||
11 | * (at your option) any later version. | ||
12 | * | ||
13 | * This program is distributed in the hope that it will be useful, | ||
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
16 | * GNU General Public License for more details. | ||
17 | * | ||
18 | * You should have received a copy of the GNU General Public License | ||
19 | * along with this program; if not, write to the Free Software | ||
20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | |||
23 | #include <linux/ipmi.h> | ||
24 | #include <linux/module.h> | ||
25 | #include <linux/hwmon.h> | ||
26 | #include <linux/hwmon-sysfs.h> | ||
27 | #include <linux/jiffies.h> | ||
28 | #include <linux/mutex.h> | ||
29 | #include <linux/kdev_t.h> | ||
30 | #include <linux/spinlock.h> | ||
31 | #include <linux/idr.h> | ||
32 | #include <linux/sched.h> | ||
33 | #include <linux/platform_device.h> | ||
34 | #include <linux/math64.h> | ||
35 | #include <linux/time.h> | ||
36 | |||
37 | #define REFRESH_INTERVAL (HZ) | ||
38 | #define IPMI_TIMEOUT (30 * HZ) | ||
39 | #define DRVNAME "aem" | ||
40 | |||
41 | #define AEM_NETFN 0x2E | ||
42 | |||
43 | #define AEM_FIND_FW_CMD 0x80 | ||
44 | #define AEM_ELEMENT_CMD 0x81 | ||
45 | #define AEM_FW_INSTANCE_CMD 0x82 | ||
46 | |||
47 | #define AEM_READ_ELEMENT_CFG 0x80 | ||
48 | #define AEM_READ_BUFFER 0x81 | ||
49 | #define AEM_READ_REGISTER 0x82 | ||
50 | #define AEM_WRITE_REGISTER 0x83 | ||
51 | #define AEM_SET_REG_MASK 0x84 | ||
52 | #define AEM_CLEAR_REG_MASK 0x85 | ||
53 | #define AEM_READ_ELEMENT_CFG2 0x86 | ||
54 | |||
55 | #define AEM_CONTROL_ELEMENT 0 | ||
56 | #define AEM_ENERGY_ELEMENT 1 | ||
57 | #define AEM_CLOCK_ELEMENT 4 | ||
58 | #define AEM_POWER_CAP_ELEMENT 7 | ||
59 | #define AEM_EXHAUST_ELEMENT 9 | ||
60 | #define AEM_POWER_ELEMENT 10 | ||
61 | |||
62 | #define AEM_MODULE_TYPE_ID 0x0001 | ||
63 | |||
64 | #define AEM2_NUM_ENERGY_REGS 2 | ||
65 | #define AEM2_NUM_PCAP_REGS 6 | ||
66 | #define AEM2_NUM_TEMP_REGS 2 | ||
67 | #define AEM2_NUM_SENSORS 14 | ||
68 | |||
69 | #define AEM1_NUM_ENERGY_REGS 1 | ||
70 | #define AEM1_NUM_SENSORS 3 | ||
71 | |||
72 | /* AEM 2.x has more energy registers */ | ||
73 | #define AEM_NUM_ENERGY_REGS AEM2_NUM_ENERGY_REGS | ||
74 | /* AEM 2.x needs more sensor files */ | ||
75 | #define AEM_NUM_SENSORS AEM2_NUM_SENSORS | ||
76 | |||
77 | #define POWER_CAP 0 | ||
78 | #define POWER_CAP_MAX_HOTPLUG 1 | ||
79 | #define POWER_CAP_MAX 2 | ||
80 | #define POWER_CAP_MIN_WARNING 3 | ||
81 | #define POWER_CAP_MIN 4 | ||
82 | #define POWER_AUX 5 | ||
83 | |||
84 | #define AEM_DEFAULT_POWER_INTERVAL 1000 | ||
85 | #define AEM_MIN_POWER_INTERVAL 200 | ||
86 | #define UJ_PER_MJ 1000L | ||
87 | |||
88 | static DEFINE_IDR(aem_idr); | ||
89 | static DEFINE_SPINLOCK(aem_idr_lock); | ||
90 | |||
91 | static struct device_driver aem_driver = { | ||
92 | .name = DRVNAME, | ||
93 | .bus = &platform_bus_type, | ||
94 | }; | ||
95 | |||
96 | struct aem_ipmi_data { | ||
97 | struct completion read_complete; | ||
98 | struct ipmi_addr address; | ||
99 | ipmi_user_t user; | ||
100 | int interface; | ||
101 | |||
102 | struct kernel_ipmi_msg tx_message; | ||
103 | long tx_msgid; | ||
104 | |||
105 | void *rx_msg_data; | ||
106 | unsigned short rx_msg_len; | ||
107 | unsigned char rx_result; | ||
108 | int rx_recv_type; | ||
109 | |||
110 | struct device *bmc_device; | ||
111 | }; | ||
112 | |||
113 | struct aem_ro_sensor_template { | ||
114 | char *label; | ||
115 | ssize_t (*show)(struct device *dev, | ||
116 | struct device_attribute *devattr, | ||
117 | char *buf); | ||
118 | int index; | ||
119 | }; | ||
120 | |||
121 | struct aem_rw_sensor_template { | ||
122 | char *label; | ||
123 | ssize_t (*show)(struct device *dev, | ||
124 | struct device_attribute *devattr, | ||
125 | char *buf); | ||
126 | ssize_t (*set)(struct device *dev, | ||
127 | struct device_attribute *devattr, | ||
128 | const char *buf, size_t count); | ||
129 | int index; | ||
130 | }; | ||
131 | |||
132 | struct aem_data { | ||
133 | struct list_head list; | ||
134 | |||
135 | struct device *hwmon_dev; | ||
136 | struct platform_device *pdev; | ||
137 | struct mutex lock; | ||
138 | char valid; | ||
139 | unsigned long last_updated; /* In jiffies */ | ||
140 | u8 ver_major; | ||
141 | u8 ver_minor; | ||
142 | u8 module_handle; | ||
143 | int id; | ||
144 | struct aem_ipmi_data ipmi; | ||
145 | |||
146 | /* Function to update sensors */ | ||
147 | void (*update)(struct aem_data *data); | ||
148 | |||
149 | /* | ||
150 | * AEM 1.x sensors: | ||
151 | * Available sensors: | ||
152 | * Energy meter | ||
153 | * Power meter | ||
154 | * | ||
155 | * AEM 2.x sensors: | ||
156 | * Two energy meters | ||
157 | * Two power meters | ||
158 | * Two temperature sensors | ||
159 | * Six power cap registers | ||
160 | */ | ||
161 | |||
162 | /* sysfs attrs */ | ||
163 | struct sensor_device_attribute sensors[AEM_NUM_SENSORS]; | ||
164 | |||
165 | /* energy use in mJ */ | ||
166 | u64 energy[AEM_NUM_ENERGY_REGS]; | ||
167 | |||
168 | /* power sampling interval in ms */ | ||
169 | unsigned long power_period[AEM_NUM_ENERGY_REGS]; | ||
170 | |||
171 | /* Everything past here is for AEM2 only */ | ||
172 | |||
173 | /* power caps in dW */ | ||
174 | u16 pcap[AEM2_NUM_PCAP_REGS]; | ||
175 | |||
176 | /* exhaust temperature in C */ | ||
177 | u8 temp[AEM2_NUM_TEMP_REGS]; | ||
178 | }; | ||
179 | |||
180 | /* Data structures returned by the AEM firmware */ | ||
181 | struct aem_iana_id { | ||
182 | u8 bytes[3]; | ||
183 | }; | ||
184 | static struct aem_iana_id system_x_id = { | ||
185 | .bytes = {0x4D, 0x4F, 0x00} | ||
186 | }; | ||
187 | |||
188 | /* These are used to find AEM1 instances */ | ||
189 | struct aem_find_firmware_req { | ||
190 | struct aem_iana_id id; | ||
191 | u8 rsvd; | ||
192 | u16 index; | ||
193 | u16 module_type_id; | ||
194 | } __packed; | ||
195 | |||
196 | struct aem_find_firmware_resp { | ||
197 | struct aem_iana_id id; | ||
198 | u8 num_instances; | ||
199 | } __packed; | ||
200 | |||
201 | /* These are used to find AEM2 instances */ | ||
202 | struct aem_find_instance_req { | ||
203 | struct aem_iana_id id; | ||
204 | u8 instance_number; | ||
205 | u16 module_type_id; | ||
206 | } __packed; | ||
207 | |||
208 | struct aem_find_instance_resp { | ||
209 | struct aem_iana_id id; | ||
210 | u8 num_instances; | ||
211 | u8 major; | ||
212 | u8 minor; | ||
213 | u8 module_handle; | ||
214 | u16 record_id; | ||
215 | } __packed; | ||
216 | |||
217 | /* These are used to query sensors */ | ||
218 | struct aem_read_sensor_req { | ||
219 | struct aem_iana_id id; | ||
220 | u8 module_handle; | ||
221 | u8 element; | ||
222 | u8 subcommand; | ||
223 | u8 reg; | ||
224 | u8 rx_buf_size; | ||
225 | } __packed; | ||
226 | |||
227 | struct aem_read_sensor_resp { | ||
228 | struct aem_iana_id id; | ||
229 | u8 bytes[0]; | ||
230 | } __packed; | ||
231 | |||
232 | /* Data structures to talk to the IPMI layer */ | ||
233 | struct aem_driver_data { | ||
234 | struct list_head aem_devices; | ||
235 | struct ipmi_smi_watcher bmc_events; | ||
236 | struct ipmi_user_hndl ipmi_hndlrs; | ||
237 | }; | ||
238 | |||
239 | static void aem_register_bmc(int iface, struct device *dev); | ||
240 | static void aem_bmc_gone(int iface); | ||
241 | static void aem_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data); | ||
242 | |||
243 | static void aem_remove_sensors(struct aem_data *data); | ||
244 | static int aem_init_aem1(struct aem_ipmi_data *probe); | ||
245 | static int aem_init_aem2(struct aem_ipmi_data *probe); | ||
246 | static int aem1_find_sensors(struct aem_data *data); | ||
247 | static int aem2_find_sensors(struct aem_data *data); | ||
248 | static void update_aem1_sensors(struct aem_data *data); | ||
249 | static void update_aem2_sensors(struct aem_data *data); | ||
250 | |||
251 | static struct aem_driver_data driver_data = { | ||
252 | .aem_devices = LIST_HEAD_INIT(driver_data.aem_devices), | ||
253 | .bmc_events = { | ||
254 | .owner = THIS_MODULE, | ||
255 | .new_smi = aem_register_bmc, | ||
256 | .smi_gone = aem_bmc_gone, | ||
257 | }, | ||
258 | .ipmi_hndlrs = { | ||
259 | .ipmi_recv_hndl = aem_msg_handler, | ||
260 | }, | ||
261 | }; | ||
262 | |||
263 | /* Functions to talk to the IPMI layer */ | ||
264 | |||
265 | /* Initialize IPMI address, message buffers and user data */ | ||
266 | static int aem_init_ipmi_data(struct aem_ipmi_data *data, int iface, | ||
267 | struct device *bmc) | ||
268 | { | ||
269 | int err; | ||
270 | |||
271 | init_completion(&data->read_complete); | ||
272 | data->bmc_device = bmc; | ||
273 | |||
274 | /* Initialize IPMI address */ | ||
275 | data->address.addr_type = IPMI_SYSTEM_INTERFACE_ADDR_TYPE; | ||
276 | data->address.channel = IPMI_BMC_CHANNEL; | ||
277 | data->address.data[0] = 0; | ||
278 | data->interface = iface; | ||
279 | |||
280 | /* Initialize message buffers */ | ||
281 | data->tx_msgid = 0; | ||
282 | data->tx_message.netfn = AEM_NETFN; | ||
283 | |||
284 | /* Create IPMI messaging interface user */ | ||
285 | err = ipmi_create_user(data->interface, &driver_data.ipmi_hndlrs, | ||
286 | data, &data->user); | ||
287 | if (err < 0) { | ||
288 | dev_err(bmc, "Unable to register user with IPMI " | ||
289 | "interface %d\n", data->interface); | ||
290 | return -EACCES; | ||
291 | } | ||
292 | |||
293 | return 0; | ||
294 | } | ||
295 | |||
296 | /* Send an IPMI command */ | ||
297 | static int aem_send_message(struct aem_ipmi_data *data) | ||
298 | { | ||
299 | int err; | ||
300 | |||
301 | err = ipmi_validate_addr(&data->address, sizeof(data->address)); | ||
302 | if (err) | ||
303 | goto out; | ||
304 | |||
305 | data->tx_msgid++; | ||
306 | err = ipmi_request_settime(data->user, &data->address, data->tx_msgid, | ||
307 | &data->tx_message, data, 0, 0, 0); | ||
308 | if (err) | ||
309 | goto out1; | ||
310 | |||
311 | return 0; | ||
312 | out1: | ||
313 | dev_err(data->bmc_device, "request_settime=%x\n", err); | ||
314 | return err; | ||
315 | out: | ||
316 | dev_err(data->bmc_device, "validate_addr=%x\n", err); | ||
317 | return err; | ||
318 | } | ||
319 | |||
320 | /* Dispatch IPMI messages to callers */ | ||
321 | static void aem_msg_handler(struct ipmi_recv_msg *msg, void *user_msg_data) | ||
322 | { | ||
323 | unsigned short rx_len; | ||
324 | struct aem_ipmi_data *data = user_msg_data; | ||
325 | |||
326 | if (msg->msgid != data->tx_msgid) { | ||
327 | dev_err(data->bmc_device, "Mismatch between received msgid " | ||
328 | "(%02x) and transmitted msgid (%02x)!\n", | ||
329 | (int)msg->msgid, | ||
330 | (int)data->tx_msgid); | ||
331 | ipmi_free_recv_msg(msg); | ||
332 | return; | ||
333 | } | ||
334 | |||
335 | data->rx_recv_type = msg->recv_type; | ||
336 | if (msg->msg.data_len > 0) | ||
337 | data->rx_result = msg->msg.data[0]; | ||
338 | else | ||
339 | data->rx_result = IPMI_UNKNOWN_ERR_COMPLETION_CODE; | ||
340 | |||
341 | if (msg->msg.data_len > 1) { | ||
342 | rx_len = msg->msg.data_len - 1; | ||
343 | if (data->rx_msg_len < rx_len) | ||
344 | rx_len = data->rx_msg_len; | ||
345 | data->rx_msg_len = rx_len; | ||
346 | memcpy(data->rx_msg_data, msg->msg.data + 1, data->rx_msg_len); | ||
347 | } else | ||
348 | data->rx_msg_len = 0; | ||
349 | |||
350 | ipmi_free_recv_msg(msg); | ||
351 | complete(&data->read_complete); | ||
352 | } | ||
353 | |||
354 | /* ID functions */ | ||
355 | |||
356 | /* Obtain an id */ | ||
357 | static int aem_idr_get(int *id) | ||
358 | { | ||
359 | int i, err; | ||
360 | |||
361 | again: | ||
362 | if (unlikely(!idr_pre_get(&aem_idr, GFP_KERNEL))) | ||
363 | return -ENOMEM; | ||
364 | |||
365 | spin_lock(&aem_idr_lock); | ||
366 | err = idr_get_new(&aem_idr, NULL, &i); | ||
367 | spin_unlock(&aem_idr_lock); | ||
368 | |||
369 | if (unlikely(err == -EAGAIN)) | ||
370 | goto again; | ||
371 | else if (unlikely(err)) | ||
372 | return err; | ||
373 | |||
374 | *id = i & MAX_ID_MASK; | ||
375 | return 0; | ||
376 | } | ||
377 | |||
378 | /* Release an object ID */ | ||
379 | static void aem_idr_put(int id) | ||
380 | { | ||
381 | spin_lock(&aem_idr_lock); | ||
382 | idr_remove(&aem_idr, id); | ||
383 | spin_unlock(&aem_idr_lock); | ||
384 | } | ||
385 | |||
386 | /* Sensor support functions */ | ||
387 | |||
388 | /* Read a sensor value */ | ||
389 | static int aem_read_sensor(struct aem_data *data, u8 elt, u8 reg, | ||
390 | void *buf, size_t size) | ||
391 | { | ||
392 | int rs_size, res; | ||
393 | struct aem_read_sensor_req rs_req; | ||
394 | struct aem_read_sensor_resp *rs_resp; | ||
395 | struct aem_ipmi_data *ipmi = &data->ipmi; | ||
396 | |||
397 | /* AEM registers are 1, 2, 4 or 8 bytes */ | ||
398 | switch (size) { | ||
399 | case 1: | ||
400 | case 2: | ||
401 | case 4: | ||
402 | case 8: | ||
403 | break; | ||
404 | default: | ||
405 | return -EINVAL; | ||
406 | } | ||
407 | |||
408 | rs_req.id = system_x_id; | ||
409 | rs_req.module_handle = data->module_handle; | ||
410 | rs_req.element = elt; | ||
411 | rs_req.subcommand = AEM_READ_REGISTER; | ||
412 | rs_req.reg = reg; | ||
413 | rs_req.rx_buf_size = size; | ||
414 | |||
415 | ipmi->tx_message.cmd = AEM_ELEMENT_CMD; | ||
416 | ipmi->tx_message.data = (char *)&rs_req; | ||
417 | ipmi->tx_message.data_len = sizeof(rs_req); | ||
418 | |||
419 | rs_size = sizeof(*rs_resp) + size; | ||
420 | rs_resp = kzalloc(rs_size, GFP_KERNEL); | ||
421 | if (!rs_resp) | ||
422 | return -ENOMEM; | ||
423 | |||
424 | ipmi->rx_msg_data = rs_resp; | ||
425 | ipmi->rx_msg_len = rs_size; | ||
426 | |||
427 | aem_send_message(ipmi); | ||
428 | |||
429 | res = wait_for_completion_timeout(&ipmi->read_complete, IPMI_TIMEOUT); | ||
430 | if (!res) | ||
431 | return -ETIMEDOUT; | ||
432 | |||
433 | if (ipmi->rx_result || ipmi->rx_msg_len != rs_size || | ||
434 | memcmp(&rs_resp->id, &system_x_id, sizeof(system_x_id))) { | ||
435 | kfree(rs_resp); | ||
436 | return -ENOENT; | ||
437 | } | ||
438 | |||
439 | switch (size) { | ||
440 | case 1: { | ||
441 | u8 *x = buf; | ||
442 | *x = rs_resp->bytes[0]; | ||
443 | break; | ||
444 | } | ||
445 | case 2: { | ||
446 | u16 *x = buf; | ||
447 | *x = be16_to_cpup((u16 *)rs_resp->bytes); | ||
448 | break; | ||
449 | } | ||
450 | case 4: { | ||
451 | u32 *x = buf; | ||
452 | *x = be32_to_cpup((u32 *)rs_resp->bytes); | ||
453 | break; | ||
454 | } | ||
455 | case 8: { | ||
456 | u64 *x = buf; | ||
457 | *x = be64_to_cpup((u64 *)rs_resp->bytes); | ||
458 | break; | ||
459 | } | ||
460 | } | ||
461 | |||
462 | return 0; | ||
463 | } | ||
464 | |||
465 | /* Update AEM energy registers */ | ||
466 | static void update_aem_energy(struct aem_data *data) | ||
467 | { | ||
468 | aem_read_sensor(data, AEM_ENERGY_ELEMENT, 0, &data->energy[0], 8); | ||
469 | if (data->ver_major < 2) | ||
470 | return; | ||
471 | aem_read_sensor(data, AEM_ENERGY_ELEMENT, 1, &data->energy[1], 8); | ||
472 | } | ||
473 | |||
474 | /* Update all AEM1 sensors */ | ||
475 | static void update_aem1_sensors(struct aem_data *data) | ||
476 | { | ||
477 | mutex_lock(&data->lock); | ||
478 | if (time_before(jiffies, data->last_updated + REFRESH_INTERVAL) && | ||
479 | data->valid) | ||
480 | goto out; | ||
481 | |||
482 | update_aem_energy(data); | ||
483 | out: | ||
484 | mutex_unlock(&data->lock); | ||
485 | } | ||
486 | |||
487 | /* Update all AEM2 sensors */ | ||
488 | static void update_aem2_sensors(struct aem_data *data) | ||
489 | { | ||
490 | int i; | ||
491 | |||
492 | mutex_lock(&data->lock); | ||
493 | if (time_before(jiffies, data->last_updated + REFRESH_INTERVAL) && | ||
494 | data->valid) | ||
495 | goto out; | ||
496 | |||
497 | update_aem_energy(data); | ||
498 | aem_read_sensor(data, AEM_EXHAUST_ELEMENT, 0, &data->temp[0], 1); | ||
499 | aem_read_sensor(data, AEM_EXHAUST_ELEMENT, 1, &data->temp[1], 1); | ||
500 | |||
501 | for (i = POWER_CAP; i <= POWER_AUX; i++) | ||
502 | aem_read_sensor(data, AEM_POWER_CAP_ELEMENT, i, | ||
503 | &data->pcap[i], 2); | ||
504 | out: | ||
505 | mutex_unlock(&data->lock); | ||
506 | } | ||
507 | |||
508 | /* Delete an AEM instance */ | ||
509 | static void aem_delete(struct aem_data *data) | ||
510 | { | ||
511 | list_del(&data->list); | ||
512 | aem_remove_sensors(data); | ||
513 | hwmon_device_unregister(data->hwmon_dev); | ||
514 | ipmi_destroy_user(data->ipmi.user); | ||
515 | dev_set_drvdata(&data->pdev->dev, NULL); | ||
516 | platform_device_unregister(data->pdev); | ||
517 | aem_idr_put(data->id); | ||
518 | kfree(data); | ||
519 | } | ||
520 | |||
521 | /* Probe functions for AEM1 devices */ | ||
522 | |||
523 | /* Retrieve version and module handle for an AEM1 instance */ | ||
524 | static int aem_find_aem1_count(struct aem_ipmi_data *data) | ||
525 | { | ||
526 | int res; | ||
527 | struct aem_find_firmware_req ff_req; | ||
528 | struct aem_find_firmware_resp ff_resp; | ||
529 | |||
530 | ff_req.id = system_x_id; | ||
531 | ff_req.index = 0; | ||
532 | ff_req.module_type_id = cpu_to_be16(AEM_MODULE_TYPE_ID); | ||
533 | |||
534 | data->tx_message.cmd = AEM_FIND_FW_CMD; | ||
535 | data->tx_message.data = (char *)&ff_req; | ||
536 | data->tx_message.data_len = sizeof(ff_req); | ||
537 | |||
538 | data->rx_msg_data = &ff_resp; | ||
539 | data->rx_msg_len = sizeof(ff_resp); | ||
540 | |||
541 | aem_send_message(data); | ||
542 | |||
543 | res = wait_for_completion_timeout(&data->read_complete, IPMI_TIMEOUT); | ||
544 | if (!res) | ||
545 | return -ETIMEDOUT; | ||
546 | |||
547 | if (data->rx_result || data->rx_msg_len != sizeof(ff_resp) || | ||
548 | memcmp(&ff_resp.id, &system_x_id, sizeof(system_x_id))) | ||
549 | return -ENOENT; | ||
550 | |||
551 | return ff_resp.num_instances; | ||
552 | } | ||
553 | |||
554 | /* Find and initialize one AEM1 instance */ | ||
555 | static int aem_init_aem1_inst(struct aem_ipmi_data *probe, u8 module_handle) | ||
556 | { | ||
557 | struct aem_data *data; | ||
558 | int i; | ||
559 | int res = -ENOMEM; | ||
560 | |||
561 | data = kzalloc(sizeof(*data), GFP_KERNEL); | ||
562 | if (!data) | ||
563 | return res; | ||
564 | mutex_init(&data->lock); | ||
565 | |||
566 | /* Copy instance data */ | ||
567 | data->ver_major = 1; | ||
568 | data->ver_minor = 0; | ||
569 | data->module_handle = module_handle; | ||
570 | for (i = 0; i < AEM1_NUM_ENERGY_REGS; i++) | ||
571 | data->power_period[i] = AEM_DEFAULT_POWER_INTERVAL; | ||
572 | |||
573 | /* Create sub-device for this fw instance */ | ||
574 | if (aem_idr_get(&data->id)) | ||
575 | goto id_err; | ||
576 | |||
577 | data->pdev = platform_device_alloc(DRVNAME, data->id); | ||
578 | if (!data->pdev) | ||
579 | goto dev_err; | ||
580 | data->pdev->dev.driver = &aem_driver; | ||
581 | |||
582 | res = platform_device_add(data->pdev); | ||
583 | if (res) | ||
584 | goto ipmi_err; | ||
585 | |||
586 | dev_set_drvdata(&data->pdev->dev, data); | ||
587 | |||
588 | /* Set up IPMI interface */ | ||
589 | if (aem_init_ipmi_data(&data->ipmi, probe->interface, | ||
590 | probe->bmc_device)) | ||
591 | goto ipmi_err; | ||
592 | |||
593 | /* Register with hwmon */ | ||
594 | data->hwmon_dev = hwmon_device_register(&data->pdev->dev); | ||
595 | |||
596 | if (IS_ERR(data->hwmon_dev)) { | ||
597 | dev_err(&data->pdev->dev, "Unable to register hwmon " | ||
598 | "device for IPMI interface %d\n", | ||
599 | probe->interface); | ||
600 | goto hwmon_reg_err; | ||
601 | } | ||
602 | |||
603 | data->update = update_aem1_sensors; | ||
604 | |||
605 | /* Find sensors */ | ||
606 | if (aem1_find_sensors(data)) | ||
607 | goto sensor_err; | ||
608 | |||
609 | /* Add to our list of AEM devices */ | ||
610 | list_add_tail(&data->list, &driver_data.aem_devices); | ||
611 | |||
612 | dev_info(data->ipmi.bmc_device, "Found AEM v%d.%d at 0x%X\n", | ||
613 | data->ver_major, data->ver_minor, | ||
614 | data->module_handle); | ||
615 | return 0; | ||
616 | |||
617 | sensor_err: | ||
618 | hwmon_device_unregister(data->hwmon_dev); | ||
619 | hwmon_reg_err: | ||
620 | ipmi_destroy_user(data->ipmi.user); | ||
621 | ipmi_err: | ||
622 | dev_set_drvdata(&data->pdev->dev, NULL); | ||
623 | platform_device_unregister(data->pdev); | ||
624 | dev_err: | ||
625 | aem_idr_put(data->id); | ||
626 | id_err: | ||
627 | kfree(data); | ||
628 | |||
629 | return res; | ||
630 | } | ||
631 | |||
632 | /* Find and initialize all AEM1 instances */ | ||
633 | static int aem_init_aem1(struct aem_ipmi_data *probe) | ||
634 | { | ||
635 | int num, i, err; | ||
636 | |||
637 | num = aem_find_aem1_count(probe); | ||
638 | for (i = 0; i < num; i++) { | ||
639 | err = aem_init_aem1_inst(probe, i); | ||
640 | if (err) { | ||
641 | dev_err(probe->bmc_device, | ||
642 | "Error %d initializing AEM1 0x%X\n", | ||
643 | err, i); | ||
644 | return err; | ||
645 | } | ||
646 | } | ||
647 | |||
648 | return 0; | ||
649 | } | ||
650 | |||
651 | /* Probe functions for AEM2 devices */ | ||
652 | |||
653 | /* Retrieve version and module handle for an AEM2 instance */ | ||
654 | static int aem_find_aem2(struct aem_ipmi_data *data, | ||
655 | struct aem_find_instance_resp *fi_resp, | ||
656 | int instance_num) | ||
657 | { | ||
658 | int res; | ||
659 | struct aem_find_instance_req fi_req; | ||
660 | |||
661 | fi_req.id = system_x_id; | ||
662 | fi_req.instance_number = instance_num; | ||
663 | fi_req.module_type_id = cpu_to_be16(AEM_MODULE_TYPE_ID); | ||
664 | |||
665 | data->tx_message.cmd = AEM_FW_INSTANCE_CMD; | ||
666 | data->tx_message.data = (char *)&fi_req; | ||
667 | data->tx_message.data_len = sizeof(fi_req); | ||
668 | |||
669 | data->rx_msg_data = fi_resp; | ||
670 | data->rx_msg_len = sizeof(*fi_resp); | ||
671 | |||
672 | aem_send_message(data); | ||
673 | |||
674 | res = wait_for_completion_timeout(&data->read_complete, IPMI_TIMEOUT); | ||
675 | if (!res) | ||
676 | return -ETIMEDOUT; | ||
677 | |||
678 | if (data->rx_result || data->rx_msg_len != sizeof(*fi_resp) || | ||
679 | memcmp(&fi_resp->id, &system_x_id, sizeof(system_x_id))) | ||
680 | return -ENOENT; | ||
681 | |||
682 | return 0; | ||
683 | } | ||
684 | |||
685 | /* Find and initialize one AEM2 instance */ | ||
686 | static int aem_init_aem2_inst(struct aem_ipmi_data *probe, | ||
687 | struct aem_find_instance_resp *fi_resp) | ||
688 | { | ||
689 | struct aem_data *data; | ||
690 | int i; | ||
691 | int res = -ENOMEM; | ||
692 | |||
693 | data = kzalloc(sizeof(*data), GFP_KERNEL); | ||
694 | if (!data) | ||
695 | return res; | ||
696 | mutex_init(&data->lock); | ||
697 | |||
698 | /* Copy instance data */ | ||
699 | data->ver_major = fi_resp->major; | ||
700 | data->ver_minor = fi_resp->minor; | ||
701 | data->module_handle = fi_resp->module_handle; | ||
702 | for (i = 0; i < AEM2_NUM_ENERGY_REGS; i++) | ||
703 | data->power_period[i] = AEM_DEFAULT_POWER_INTERVAL; | ||
704 | |||
705 | /* Create sub-device for this fw instance */ | ||
706 | if (aem_idr_get(&data->id)) | ||
707 | goto id_err; | ||
708 | |||
709 | data->pdev = platform_device_alloc(DRVNAME, data->id); | ||
710 | if (!data->pdev) | ||
711 | goto dev_err; | ||
712 | data->pdev->dev.driver = &aem_driver; | ||
713 | |||
714 | res = platform_device_add(data->pdev); | ||
715 | if (res) | ||
716 | goto ipmi_err; | ||
717 | |||
718 | dev_set_drvdata(&data->pdev->dev, data); | ||
719 | |||
720 | /* Set up IPMI interface */ | ||
721 | if (aem_init_ipmi_data(&data->ipmi, probe->interface, | ||
722 | probe->bmc_device)) | ||
723 | goto ipmi_err; | ||
724 | |||
725 | /* Register with hwmon */ | ||
726 | data->hwmon_dev = hwmon_device_register(&data->pdev->dev); | ||
727 | |||
728 | if (IS_ERR(data->hwmon_dev)) { | ||
729 | dev_err(&data->pdev->dev, "Unable to register hwmon " | ||
730 | "device for IPMI interface %d\n", | ||
731 | probe->interface); | ||
732 | goto hwmon_reg_err; | ||
733 | } | ||
734 | |||
735 | data->update = update_aem2_sensors; | ||
736 | |||
737 | /* Find sensors */ | ||
738 | if (aem2_find_sensors(data)) | ||
739 | goto sensor_err; | ||
740 | |||
741 | /* Add to our list of AEM devices */ | ||
742 | list_add_tail(&data->list, &driver_data.aem_devices); | ||
743 | |||
744 | dev_info(data->ipmi.bmc_device, "Found AEM v%d.%d at 0x%X\n", | ||
745 | data->ver_major, data->ver_minor, | ||
746 | data->module_handle); | ||
747 | return 0; | ||
748 | |||
749 | sensor_err: | ||
750 | hwmon_device_unregister(data->hwmon_dev); | ||
751 | hwmon_reg_err: | ||
752 | ipmi_destroy_user(data->ipmi.user); | ||
753 | ipmi_err: | ||
754 | dev_set_drvdata(&data->pdev->dev, NULL); | ||
755 | platform_device_unregister(data->pdev); | ||
756 | dev_err: | ||
757 | aem_idr_put(data->id); | ||
758 | id_err: | ||
759 | kfree(data); | ||
760 | |||
761 | return res; | ||
762 | } | ||
763 | |||
764 | /* Find and initialize all AEM2 instances */ | ||
765 | static int aem_init_aem2(struct aem_ipmi_data *probe) | ||
766 | { | ||
767 | struct aem_find_instance_resp fi_resp; | ||
768 | int err; | ||
769 | int i = 0; | ||
770 | |||
771 | while (!aem_find_aem2(probe, &fi_resp, i)) { | ||
772 | if (fi_resp.major != 2) { | ||
773 | dev_err(probe->bmc_device, "Unknown AEM v%d; please " | ||
774 | "report this to the maintainer.\n", | ||
775 | fi_resp.major); | ||
776 | i++; | ||
777 | continue; | ||
778 | } | ||
779 | err = aem_init_aem2_inst(probe, &fi_resp); | ||
780 | if (err) { | ||
781 | dev_err(probe->bmc_device, | ||
782 | "Error %d initializing AEM2 0x%X\n", | ||
783 | err, fi_resp.module_handle); | ||
784 | return err; | ||
785 | } | ||
786 | i++; | ||
787 | } | ||
788 | |||
789 | return 0; | ||
790 | } | ||
791 | |||
792 | /* Probe a BMC for AEM firmware instances */ | ||
793 | static void aem_register_bmc(int iface, struct device *dev) | ||
794 | { | ||
795 | struct aem_ipmi_data probe; | ||
796 | |||
797 | if (aem_init_ipmi_data(&probe, iface, dev)) | ||
798 | return; | ||
799 | |||
800 | /* Ignore probe errors; they won't cause problems */ | ||
801 | aem_init_aem1(&probe); | ||
802 | aem_init_aem2(&probe); | ||
803 | |||
804 | ipmi_destroy_user(probe.user); | ||
805 | } | ||
806 | |||
807 | /* Handle BMC deletion */ | ||
808 | static void aem_bmc_gone(int iface) | ||
809 | { | ||
810 | struct aem_data *p1, *next1; | ||
811 | |||
812 | list_for_each_entry_safe(p1, next1, &driver_data.aem_devices, list) | ||
813 | if (p1->ipmi.interface == iface) | ||
814 | aem_delete(p1); | ||
815 | } | ||
816 | |||
817 | /* sysfs support functions */ | ||
818 | |||
819 | /* AEM device name */ | ||
820 | static ssize_t show_name(struct device *dev, struct device_attribute *devattr, | ||
821 | char *buf) | ||
822 | { | ||
823 | struct aem_data *data = dev_get_drvdata(dev); | ||
824 | |||
825 | return sprintf(buf, "%s%d\n", DRVNAME, data->ver_major); | ||
826 | } | ||
827 | static SENSOR_DEVICE_ATTR(name, S_IRUGO, show_name, NULL, 0); | ||
828 | |||
829 | /* AEM device version */ | ||
830 | static ssize_t show_version(struct device *dev, | ||
831 | struct device_attribute *devattr, | ||
832 | char *buf) | ||
833 | { | ||
834 | struct aem_data *data = dev_get_drvdata(dev); | ||
835 | |||
836 | return sprintf(buf, "%d.%d\n", data->ver_major, data->ver_minor); | ||
837 | } | ||
838 | static SENSOR_DEVICE_ATTR(version, S_IRUGO, show_version, NULL, 0); | ||
839 | |||
840 | /* Display power use */ | ||
841 | static ssize_t aem_show_power(struct device *dev, | ||
842 | struct device_attribute *devattr, | ||
843 | char *buf) | ||
844 | { | ||
845 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | ||
846 | struct aem_data *data = dev_get_drvdata(dev); | ||
847 | u64 before, after, delta, time; | ||
848 | signed long leftover; | ||
849 | struct timespec b, a; | ||
850 | |||
851 | mutex_lock(&data->lock); | ||
852 | update_aem_energy(data); | ||
853 | getnstimeofday(&b); | ||
854 | before = data->energy[attr->index]; | ||
855 | |||
856 | leftover = schedule_timeout_interruptible( | ||
857 | msecs_to_jiffies(data->power_period[attr->index]) | ||
858 | ); | ||
859 | if (leftover) { | ||
860 | mutex_unlock(&data->lock); | ||
861 | return 0; | ||
862 | } | ||
863 | |||
864 | update_aem_energy(data); | ||
865 | getnstimeofday(&a); | ||
866 | after = data->energy[attr->index]; | ||
867 | mutex_unlock(&data->lock); | ||
868 | |||
869 | time = timespec_to_ns(&a) - timespec_to_ns(&b); | ||
870 | delta = (after - before) * UJ_PER_MJ; | ||
871 | |||
872 | return sprintf(buf, "%llu\n", | ||
873 | (unsigned long long)div64_u64(delta * NSEC_PER_SEC, time)); | ||
874 | } | ||
875 | |||
876 | /* Display energy use */ | ||
877 | static ssize_t aem_show_energy(struct device *dev, | ||
878 | struct device_attribute *devattr, | ||
879 | char *buf) | ||
880 | { | ||
881 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | ||
882 | struct aem_data *a = dev_get_drvdata(dev); | ||
883 | a->update(a); | ||
884 | |||
885 | return sprintf(buf, "%llu\n", | ||
886 | (unsigned long long)a->energy[attr->index] * 1000); | ||
887 | } | ||
888 | |||
889 | /* Display power interval registers */ | ||
890 | static ssize_t aem_show_power_period(struct device *dev, | ||
891 | struct device_attribute *devattr, | ||
892 | char *buf) | ||
893 | { | ||
894 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | ||
895 | struct aem_data *a = dev_get_drvdata(dev); | ||
896 | a->update(a); | ||
897 | |||
898 | return sprintf(buf, "%lu\n", a->power_period[attr->index]); | ||
899 | } | ||
900 | |||
901 | /* Set power interval registers */ | ||
902 | static ssize_t aem_set_power_period(struct device *dev, | ||
903 | struct device_attribute *devattr, | ||
904 | const char *buf, size_t count) | ||
905 | { | ||
906 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | ||
907 | struct aem_data *a = dev_get_drvdata(dev); | ||
908 | unsigned long temp; | ||
909 | int res; | ||
910 | |||
911 | res = strict_strtoul(buf, 10, &temp); | ||
912 | if (res) | ||
913 | return res; | ||
914 | |||
915 | if (temp < AEM_MIN_POWER_INTERVAL) | ||
916 | return -EINVAL; | ||
917 | |||
918 | mutex_lock(&a->lock); | ||
919 | a->power_period[attr->index] = temp; | ||
920 | mutex_unlock(&a->lock); | ||
921 | |||
922 | return count; | ||
923 | } | ||
924 | |||
925 | /* Discover sensors on an AEM device */ | ||
926 | static int aem_register_sensors(struct aem_data *data, | ||
927 | struct aem_ro_sensor_template *ro, | ||
928 | struct aem_rw_sensor_template *rw) | ||
929 | { | ||
930 | struct device *dev = &data->pdev->dev; | ||
931 | struct sensor_device_attribute *sensors = data->sensors; | ||
932 | int err; | ||
933 | |||
934 | /* Set up read-only sensors */ | ||
935 | while (ro->label) { | ||
936 | sensors->dev_attr.attr.name = ro->label; | ||
937 | sensors->dev_attr.attr.mode = S_IRUGO; | ||
938 | sensors->dev_attr.show = ro->show; | ||
939 | sensors->index = ro->index; | ||
940 | |||
941 | err = device_create_file(dev, &sensors->dev_attr); | ||
942 | if (err) { | ||
943 | sensors->dev_attr.attr.name = NULL; | ||
944 | goto error; | ||
945 | } | ||
946 | sensors++; | ||
947 | ro++; | ||
948 | } | ||
949 | |||
950 | /* Set up read-write sensors */ | ||
951 | while (rw->label) { | ||
952 | sensors->dev_attr.attr.name = rw->label; | ||
953 | sensors->dev_attr.attr.mode = S_IRUGO | S_IWUSR; | ||
954 | sensors->dev_attr.show = rw->show; | ||
955 | sensors->dev_attr.store = rw->set; | ||
956 | sensors->index = rw->index; | ||
957 | |||
958 | err = device_create_file(dev, &sensors->dev_attr); | ||
959 | if (err) { | ||
960 | sensors->dev_attr.attr.name = NULL; | ||
961 | goto error; | ||
962 | } | ||
963 | sensors++; | ||
964 | rw++; | ||
965 | } | ||
966 | |||
967 | err = device_create_file(dev, &sensor_dev_attr_name.dev_attr); | ||
968 | if (err) | ||
969 | goto error; | ||
970 | err = device_create_file(dev, &sensor_dev_attr_version.dev_attr); | ||
971 | return err; | ||
972 | |||
973 | error: | ||
974 | aem_remove_sensors(data); | ||
975 | return err; | ||
976 | } | ||
977 | |||
978 | /* sysfs support functions for AEM2 sensors */ | ||
979 | |||
980 | /* Display temperature use */ | ||
981 | static ssize_t aem2_show_temp(struct device *dev, | ||
982 | struct device_attribute *devattr, | ||
983 | char *buf) | ||
984 | { | ||
985 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | ||
986 | struct aem_data *a = dev_get_drvdata(dev); | ||
987 | a->update(a); | ||
988 | |||
989 | return sprintf(buf, "%u\n", a->temp[attr->index] * 1000); | ||
990 | } | ||
991 | |||
992 | /* Display power-capping registers */ | ||
993 | static ssize_t aem2_show_pcap_value(struct device *dev, | ||
994 | struct device_attribute *devattr, | ||
995 | char *buf) | ||
996 | { | ||
997 | struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); | ||
998 | struct aem_data *a = dev_get_drvdata(dev); | ||
999 | a->update(a); | ||
1000 | |||
1001 | return sprintf(buf, "%u\n", a->pcap[attr->index] * 100000); | ||
1002 | } | ||
1003 | |||
1004 | /* Remove sensors attached to an AEM device */ | ||
1005 | static void aem_remove_sensors(struct aem_data *data) | ||
1006 | { | ||
1007 | int i; | ||
1008 | |||
1009 | for (i = 0; i < AEM_NUM_SENSORS; i++) { | ||
1010 | if (!data->sensors[i].dev_attr.attr.name) | ||
1011 | continue; | ||
1012 | device_remove_file(&data->pdev->dev, | ||
1013 | &data->sensors[i].dev_attr); | ||
1014 | } | ||
1015 | |||
1016 | device_remove_file(&data->pdev->dev, | ||
1017 | &sensor_dev_attr_name.dev_attr); | ||
1018 | device_remove_file(&data->pdev->dev, | ||
1019 | &sensor_dev_attr_version.dev_attr); | ||
1020 | } | ||
1021 | |||
1022 | /* Sensor probe functions */ | ||
1023 | |||
1024 | /* Description of AEM1 sensors */ | ||
1025 | static struct aem_ro_sensor_template aem1_ro_sensors[] = { | ||
1026 | {"energy1_input", aem_show_energy, 0}, | ||
1027 | {"power1_average", aem_show_power, 0}, | ||
1028 | {NULL, NULL, 0}, | ||
1029 | }; | ||
1030 | |||
1031 | static struct aem_rw_sensor_template aem1_rw_sensors[] = { | ||
1032 | {"power1_average_interval", aem_show_power_period, aem_set_power_period, 0}, | ||
1033 | {NULL, NULL, NULL, 0}, | ||
1034 | }; | ||
1035 | |||
1036 | /* Description of AEM2 sensors */ | ||
1037 | static struct aem_ro_sensor_template aem2_ro_sensors[] = { | ||
1038 | {"energy1_input", aem_show_energy, 0}, | ||
1039 | {"energy2_input", aem_show_energy, 1}, | ||
1040 | {"power1_average", aem_show_power, 0}, | ||
1041 | {"power2_average", aem_show_power, 1}, | ||
1042 | {"temp1_input", aem2_show_temp, 0}, | ||
1043 | {"temp2_input", aem2_show_temp, 1}, | ||
1044 | |||
1045 | {"power4_average", aem2_show_pcap_value, POWER_CAP_MAX_HOTPLUG}, | ||
1046 | {"power5_average", aem2_show_pcap_value, POWER_CAP_MAX}, | ||
1047 | {"power6_average", aem2_show_pcap_value, POWER_CAP_MIN_WARNING}, | ||
1048 | {"power7_average", aem2_show_pcap_value, POWER_CAP_MIN}, | ||
1049 | |||
1050 | {"power3_average", aem2_show_pcap_value, POWER_AUX}, | ||
1051 | {"power_cap", aem2_show_pcap_value, POWER_CAP}, | ||
1052 | {NULL, NULL, 0}, | ||
1053 | }; | ||
1054 | |||
1055 | static struct aem_rw_sensor_template aem2_rw_sensors[] = { | ||
1056 | {"power1_average_interval", aem_show_power_period, aem_set_power_period, 0}, | ||
1057 | {"power2_average_interval", aem_show_power_period, aem_set_power_period, 1}, | ||
1058 | {NULL, NULL, NULL, 0}, | ||
1059 | }; | ||
1060 | |||
1061 | /* Set up AEM1 sensor attrs */ | ||
1062 | static int aem1_find_sensors(struct aem_data *data) | ||
1063 | { | ||
1064 | return aem_register_sensors(data, aem1_ro_sensors, aem1_rw_sensors); | ||
1065 | } | ||
1066 | |||
1067 | /* Set up AEM2 sensor attrs */ | ||
1068 | static int aem2_find_sensors(struct aem_data *data) | ||
1069 | { | ||
1070 | return aem_register_sensors(data, aem2_ro_sensors, aem2_rw_sensors); | ||
1071 | } | ||
1072 | |||
1073 | /* Module init/exit routines */ | ||
1074 | |||
1075 | static int __init aem_init(void) | ||
1076 | { | ||
1077 | int res; | ||
1078 | |||
1079 | res = driver_register(&aem_driver); | ||
1080 | if (res) { | ||
1081 | printk(KERN_ERR "Can't register aem driver\n"); | ||
1082 | return res; | ||
1083 | } | ||
1084 | |||
1085 | res = ipmi_smi_watcher_register(&driver_data.bmc_events); | ||
1086 | if (res) | ||
1087 | goto ipmi_reg_err; | ||
1088 | return 0; | ||
1089 | |||
1090 | ipmi_reg_err: | ||
1091 | driver_unregister(&aem_driver); | ||
1092 | return res; | ||
1093 | |||
1094 | } | ||
1095 | |||
1096 | static void __exit aem_exit(void) | ||
1097 | { | ||
1098 | struct aem_data *p1, *next1; | ||
1099 | |||
1100 | ipmi_smi_watcher_unregister(&driver_data.bmc_events); | ||
1101 | driver_unregister(&aem_driver); | ||
1102 | list_for_each_entry_safe(p1, next1, &driver_data.aem_devices, list) | ||
1103 | aem_delete(p1); | ||
1104 | } | ||
1105 | |||
1106 | MODULE_AUTHOR("Darrick J. Wong <djwong@us.ibm.com>"); | ||
1107 | MODULE_DESCRIPTION("IBM Active Energy Manager power/temp sensor driver"); | ||
1108 | MODULE_LICENSE("GPL"); | ||
1109 | |||
1110 | module_init(aem_init); | ||
1111 | module_exit(aem_exit); | ||
diff --git a/drivers/i2c/busses/i2c-amd756.c b/drivers/i2c/busses/i2c-amd756.c index 2fa43183d375..43508d61eb7c 100644 --- a/drivers/i2c/busses/i2c-amd756.c +++ b/drivers/i2c/busses/i2c-amd756.c | |||
@@ -290,7 +290,7 @@ static u32 amd756_func(struct i2c_adapter *adapter) | |||
290 | { | 290 | { |
291 | return I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | | 291 | return I2C_FUNC_SMBUS_QUICK | I2C_FUNC_SMBUS_BYTE | |
292 | I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA | | 292 | I2C_FUNC_SMBUS_BYTE_DATA | I2C_FUNC_SMBUS_WORD_DATA | |
293 | I2C_FUNC_SMBUS_BLOCK_DATA | I2C_FUNC_SMBUS_PROC_CALL; | 293 | I2C_FUNC_SMBUS_BLOCK_DATA; |
294 | } | 294 | } |
295 | 295 | ||
296 | static const struct i2c_algorithm smbus_algorithm = { | 296 | static const struct i2c_algorithm smbus_algorithm = { |
diff --git a/drivers/i2c/busses/i2c-nforce2.c b/drivers/i2c/busses/i2c-nforce2.c index 3dac920e53ea..43c9f8df9509 100644 --- a/drivers/i2c/busses/i2c-nforce2.c +++ b/drivers/i2c/busses/i2c-nforce2.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/init.h> | 50 | #include <linux/init.h> |
51 | #include <linux/i2c.h> | 51 | #include <linux/i2c.h> |
52 | #include <linux/delay.h> | 52 | #include <linux/delay.h> |
53 | #include <linux/dmi.h> | ||
53 | #include <asm/io.h> | 54 | #include <asm/io.h> |
54 | 55 | ||
55 | MODULE_LICENSE("GPL"); | 56 | MODULE_LICENSE("GPL"); |
@@ -109,6 +110,18 @@ struct nforce2_smbus { | |||
109 | /* Misc definitions */ | 110 | /* Misc definitions */ |
110 | #define MAX_TIMEOUT 100 | 111 | #define MAX_TIMEOUT 100 |
111 | 112 | ||
113 | /* We disable the second SMBus channel on these boards */ | ||
114 | static struct dmi_system_id __devinitdata nforce2_dmi_blacklist2[] = { | ||
115 | { | ||
116 | .ident = "DFI Lanparty NF4 Expert", | ||
117 | .matches = { | ||
118 | DMI_MATCH(DMI_BOARD_VENDOR, "DFI Corp,LTD"), | ||
119 | DMI_MATCH(DMI_BOARD_NAME, "LP UT NF4 Expert"), | ||
120 | }, | ||
121 | }, | ||
122 | { } | ||
123 | }; | ||
124 | |||
112 | static struct pci_driver nforce2_driver; | 125 | static struct pci_driver nforce2_driver; |
113 | 126 | ||
114 | static void nforce2_abort(struct i2c_adapter *adap) | 127 | static void nforce2_abort(struct i2c_adapter *adap) |
@@ -367,10 +380,17 @@ static int __devinit nforce2_probe(struct pci_dev *dev, const struct pci_device_ | |||
367 | smbuses[0].base = 0; /* to have a check value */ | 380 | smbuses[0].base = 0; /* to have a check value */ |
368 | } | 381 | } |
369 | /* SMBus adapter 2 */ | 382 | /* SMBus adapter 2 */ |
370 | res2 = nforce2_probe_smb(dev, 5, NFORCE_PCI_SMB2, &smbuses[1], "SMB2"); | 383 | if (dmi_check_system(nforce2_dmi_blacklist2)) { |
371 | if (res2 < 0) { | 384 | dev_err(&dev->dev, "Disabling SMB2 for safety reasons.\n"); |
372 | dev_err(&dev->dev, "Error probing SMB2.\n"); | 385 | res2 = -EPERM; |
373 | smbuses[1].base = 0; /* to have a check value */ | 386 | smbuses[1].base = 0; |
387 | } else { | ||
388 | res2 = nforce2_probe_smb(dev, 5, NFORCE_PCI_SMB2, &smbuses[1], | ||
389 | "SMB2"); | ||
390 | if (res2 < 0) { | ||
391 | dev_err(&dev->dev, "Error probing SMB2.\n"); | ||
392 | smbuses[1].base = 0; /* to have a check value */ | ||
393 | } | ||
374 | } | 394 | } |
375 | if ((res1 < 0) && (res2 < 0)) { | 395 | if ((res1 < 0) && (res2 < 0)) { |
376 | /* we did not find even one of the SMBuses, so we give up */ | 396 | /* we did not find even one of the SMBuses, so we give up */ |
diff --git a/drivers/i2c/chips/max6875.c b/drivers/i2c/chips/max6875.c index fb7ea5637eca..cf507b3f60f3 100644 --- a/drivers/i2c/chips/max6875.c +++ b/drivers/i2c/chips/max6875.c | |||
@@ -207,9 +207,6 @@ static int max6875_detect(struct i2c_adapter *adapter, int address, int kind) | |||
207 | fake_client->flags = 0; | 207 | fake_client->flags = 0; |
208 | strlcpy(fake_client->name, "max6875 subclient", I2C_NAME_SIZE); | 208 | strlcpy(fake_client->name, "max6875 subclient", I2C_NAME_SIZE); |
209 | 209 | ||
210 | /* Prevent 24RF08 corruption (in case of user error) */ | ||
211 | i2c_smbus_write_quick(real_client, 0); | ||
212 | |||
213 | if ((err = i2c_attach_client(real_client)) != 0) | 210 | if ((err = i2c_attach_client(real_client)) != 0) |
214 | goto exit_kfree2; | 211 | goto exit_kfree2; |
215 | 212 | ||
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index c99ebeadb558..d0175f4f8fc6 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -74,10 +74,7 @@ static int i2c_device_match(struct device *dev, struct device_driver *drv) | |||
74 | if (driver->id_table) | 74 | if (driver->id_table) |
75 | return i2c_match_id(driver->id_table, client) != NULL; | 75 | return i2c_match_id(driver->id_table, client) != NULL; |
76 | 76 | ||
77 | /* new style drivers use the same kind of driver matching policy | 77 | return 0; |
78 | * as platform devices or SPI: compare device and driver IDs. | ||
79 | */ | ||
80 | return strcmp(client->driver_name, drv->name) == 0; | ||
81 | } | 78 | } |
82 | 79 | ||
83 | #ifdef CONFIG_HOTPLUG | 80 | #ifdef CONFIG_HOTPLUG |
@@ -91,14 +88,9 @@ static int i2c_device_uevent(struct device *dev, struct kobj_uevent_env *env) | |||
91 | if (dev->driver) | 88 | if (dev->driver) |
92 | return 0; | 89 | return 0; |
93 | 90 | ||
94 | if (client->driver_name[0]) { | 91 | if (add_uevent_var(env, "MODALIAS=%s%s", |
95 | if (add_uevent_var(env, "MODALIAS=%s", client->driver_name)) | 92 | I2C_MODULE_PREFIX, client->name)) |
96 | return -ENOMEM; | 93 | return -ENOMEM; |
97 | } else { | ||
98 | if (add_uevent_var(env, "MODALIAS=%s%s", | ||
99 | I2C_MODULE_PREFIX, client->name)) | ||
100 | return -ENOMEM; | ||
101 | } | ||
102 | dev_dbg(dev, "uevent\n"); | 94 | dev_dbg(dev, "uevent\n"); |
103 | return 0; | 95 | return 0; |
104 | } | 96 | } |
@@ -206,9 +198,7 @@ static ssize_t show_client_name(struct device *dev, struct device_attribute *att | |||
206 | static ssize_t show_modalias(struct device *dev, struct device_attribute *attr, char *buf) | 198 | static ssize_t show_modalias(struct device *dev, struct device_attribute *attr, char *buf) |
207 | { | 199 | { |
208 | struct i2c_client *client = to_i2c_client(dev); | 200 | struct i2c_client *client = to_i2c_client(dev); |
209 | return client->driver_name[0] | 201 | return sprintf(buf, "%s%s\n", I2C_MODULE_PREFIX, client->name); |
210 | ? sprintf(buf, "%s\n", client->driver_name) | ||
211 | : sprintf(buf, "%s%s\n", I2C_MODULE_PREFIX, client->name); | ||
212 | } | 202 | } |
213 | 203 | ||
214 | static struct device_attribute i2c_dev_attrs[] = { | 204 | static struct device_attribute i2c_dev_attrs[] = { |
@@ -282,8 +272,6 @@ i2c_new_device(struct i2c_adapter *adap, struct i2c_board_info const *info) | |||
282 | client->addr = info->addr; | 272 | client->addr = info->addr; |
283 | client->irq = info->irq; | 273 | client->irq = info->irq; |
284 | 274 | ||
285 | strlcpy(client->driver_name, info->driver_name, | ||
286 | sizeof(client->driver_name)); | ||
287 | strlcpy(client->name, info->type, sizeof(client->name)); | 275 | strlcpy(client->name, info->type, sizeof(client->name)); |
288 | 276 | ||
289 | /* a new style driver may be bound to this device when we | 277 | /* a new style driver may be bound to this device when we |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 34b0d4f26b58..655ec7ef568a 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
@@ -648,13 +648,12 @@ static int ide_register_port(ide_hwif_t *hwif) | |||
648 | 648 | ||
649 | get_device(&hwif->gendev); | 649 | get_device(&hwif->gendev); |
650 | 650 | ||
651 | hwif->portdev = device_create(ide_port_class, &hwif->gendev, | 651 | hwif->portdev = device_create_drvdata(ide_port_class, &hwif->gendev, |
652 | MKDEV(0, 0), hwif->name); | 652 | MKDEV(0, 0), hwif, hwif->name); |
653 | if (IS_ERR(hwif->portdev)) { | 653 | if (IS_ERR(hwif->portdev)) { |
654 | ret = PTR_ERR(hwif->portdev); | 654 | ret = PTR_ERR(hwif->portdev); |
655 | device_unregister(&hwif->gendev); | 655 | device_unregister(&hwif->gendev); |
656 | } | 656 | } |
657 | dev_set_drvdata(hwif->portdev, hwif); | ||
658 | out: | 657 | out: |
659 | return ret; | 658 | return ret; |
660 | } | 659 | } |
diff --git a/drivers/ide/legacy/macide.c b/drivers/ide/legacy/macide.c index 1f527bbf8d96..caa2632dd08e 100644 --- a/drivers/ide/legacy/macide.c +++ b/drivers/ide/legacy/macide.c | |||
@@ -95,6 +95,9 @@ static int __init macide_init(void) | |||
95 | int irq; | 95 | int irq; |
96 | hw_regs_t hw; | 96 | hw_regs_t hw; |
97 | 97 | ||
98 | if (!MACH_IS_MAC) | ||
99 | return -ENODEV; | ||
100 | |||
98 | switch (macintosh_config->ide_type) { | 101 | switch (macintosh_config->ide_type) { |
99 | case MAC_IDE_QUADRA: | 102 | case MAC_IDE_QUADRA: |
100 | base = IDE_BASE; | 103 | base = IDE_BASE; |
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c index 16b9d0ad154e..a5ceff287a28 100644 --- a/drivers/ieee1394/sbp2.c +++ b/drivers/ieee1394/sbp2.c | |||
@@ -1539,15 +1539,13 @@ static void sbp2_prep_command_orb_sg(struct sbp2_command_orb *orb, | |||
1539 | 1539 | ||
1540 | static void sbp2_create_command_orb(struct sbp2_lu *lu, | 1540 | static void sbp2_create_command_orb(struct sbp2_lu *lu, |
1541 | struct sbp2_command_info *cmd, | 1541 | struct sbp2_command_info *cmd, |
1542 | unchar *scsi_cmd, | 1542 | struct scsi_cmnd *SCpnt) |
1543 | unsigned int scsi_use_sg, | ||
1544 | unsigned int scsi_request_bufflen, | ||
1545 | struct scatterlist *sg, | ||
1546 | enum dma_data_direction dma_dir) | ||
1547 | { | 1543 | { |
1548 | struct sbp2_fwhost_info *hi = lu->hi; | 1544 | struct sbp2_fwhost_info *hi = lu->hi; |
1549 | struct sbp2_command_orb *orb = &cmd->command_orb; | 1545 | struct sbp2_command_orb *orb = &cmd->command_orb; |
1550 | u32 orb_direction; | 1546 | u32 orb_direction; |
1547 | unsigned int scsi_request_bufflen = scsi_bufflen(SCpnt); | ||
1548 | enum dma_data_direction dma_dir = SCpnt->sc_data_direction; | ||
1551 | 1549 | ||
1552 | /* | 1550 | /* |
1553 | * Set-up our command ORB. | 1551 | * Set-up our command ORB. |
@@ -1580,13 +1578,14 @@ static void sbp2_create_command_orb(struct sbp2_lu *lu, | |||
1580 | orb->data_descriptor_lo = 0x0; | 1578 | orb->data_descriptor_lo = 0x0; |
1581 | orb->misc |= ORB_SET_DIRECTION(1); | 1579 | orb->misc |= ORB_SET_DIRECTION(1); |
1582 | } else | 1580 | } else |
1583 | sbp2_prep_command_orb_sg(orb, hi, cmd, scsi_use_sg, sg, | 1581 | sbp2_prep_command_orb_sg(orb, hi, cmd, scsi_sg_count(SCpnt), |
1582 | scsi_sglist(SCpnt), | ||
1584 | orb_direction, dma_dir); | 1583 | orb_direction, dma_dir); |
1585 | 1584 | ||
1586 | sbp2util_cpu_to_be32_buffer(orb, sizeof(*orb)); | 1585 | sbp2util_cpu_to_be32_buffer(orb, sizeof(*orb)); |
1587 | 1586 | ||
1588 | memset(orb->cdb, 0, 12); | 1587 | memset(orb->cdb, 0, sizeof(orb->cdb)); |
1589 | memcpy(orb->cdb, scsi_cmd, COMMAND_SIZE(*scsi_cmd)); | 1588 | memcpy(orb->cdb, SCpnt->cmnd, SCpnt->cmd_len); |
1590 | } | 1589 | } |
1591 | 1590 | ||
1592 | static void sbp2_link_orb_command(struct sbp2_lu *lu, | 1591 | static void sbp2_link_orb_command(struct sbp2_lu *lu, |
@@ -1669,16 +1668,13 @@ static void sbp2_link_orb_command(struct sbp2_lu *lu, | |||
1669 | static int sbp2_send_command(struct sbp2_lu *lu, struct scsi_cmnd *SCpnt, | 1668 | static int sbp2_send_command(struct sbp2_lu *lu, struct scsi_cmnd *SCpnt, |
1670 | void (*done)(struct scsi_cmnd *)) | 1669 | void (*done)(struct scsi_cmnd *)) |
1671 | { | 1670 | { |
1672 | unchar *scsi_cmd = (unchar *)SCpnt->cmnd; | ||
1673 | struct sbp2_command_info *cmd; | 1671 | struct sbp2_command_info *cmd; |
1674 | 1672 | ||
1675 | cmd = sbp2util_allocate_command_orb(lu, SCpnt, done); | 1673 | cmd = sbp2util_allocate_command_orb(lu, SCpnt, done); |
1676 | if (!cmd) | 1674 | if (!cmd) |
1677 | return -EIO; | 1675 | return -EIO; |
1678 | 1676 | ||
1679 | sbp2_create_command_orb(lu, cmd, scsi_cmd, scsi_sg_count(SCpnt), | 1677 | sbp2_create_command_orb(lu, cmd, SCpnt); |
1680 | scsi_bufflen(SCpnt), scsi_sglist(SCpnt), | ||
1681 | SCpnt->sc_data_direction); | ||
1682 | sbp2_link_orb_command(lu, cmd); | 1678 | sbp2_link_orb_command(lu, cmd); |
1683 | 1679 | ||
1684 | return 0; | 1680 | return 0; |
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index fbe16d5250a4..1adf2efd3cb3 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c | |||
@@ -747,7 +747,9 @@ static int handle_outgoing_dr_smp(struct ib_mad_agent_private *mad_agent_priv, | |||
747 | break; | 747 | break; |
748 | case IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_CONSUMED: | 748 | case IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_CONSUMED: |
749 | kmem_cache_free(ib_mad_cache, mad_priv); | 749 | kmem_cache_free(ib_mad_cache, mad_priv); |
750 | break; | 750 | kfree(local); |
751 | ret = 1; | ||
752 | goto out; | ||
751 | case IB_MAD_RESULT_SUCCESS: | 753 | case IB_MAD_RESULT_SUCCESS: |
752 | /* Treat like an incoming receive MAD */ | 754 | /* Treat like an incoming receive MAD */ |
753 | port_priv = ib_get_mad_port(mad_agent_priv->agent.device, | 755 | port_priv = ib_get_mad_port(mad_agent_priv->agent.device, |
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c index 3aa2db54eae4..840ede9ae965 100644 --- a/drivers/infiniband/core/user_mad.c +++ b/drivers/infiniband/core/user_mad.c | |||
@@ -1005,8 +1005,9 @@ static int ib_umad_init_port(struct ib_device *device, int port_num, | |||
1005 | if (cdev_add(port->cdev, base_dev + port->dev_num, 1)) | 1005 | if (cdev_add(port->cdev, base_dev + port->dev_num, 1)) |
1006 | goto err_cdev; | 1006 | goto err_cdev; |
1007 | 1007 | ||
1008 | port->dev = device_create(umad_class, device->dma_device, | 1008 | port->dev = device_create_drvdata(umad_class, device->dma_device, |
1009 | port->cdev->dev, "umad%d", port->dev_num); | 1009 | port->cdev->dev, port, |
1010 | "umad%d", port->dev_num); | ||
1010 | if (IS_ERR(port->dev)) | 1011 | if (IS_ERR(port->dev)) |
1011 | goto err_cdev; | 1012 | goto err_cdev; |
1012 | 1013 | ||
@@ -1024,15 +1025,12 @@ static int ib_umad_init_port(struct ib_device *device, int port_num, | |||
1024 | if (cdev_add(port->sm_cdev, base_dev + port->dev_num + IB_UMAD_MAX_PORTS, 1)) | 1025 | if (cdev_add(port->sm_cdev, base_dev + port->dev_num + IB_UMAD_MAX_PORTS, 1)) |
1025 | goto err_sm_cdev; | 1026 | goto err_sm_cdev; |
1026 | 1027 | ||
1027 | port->sm_dev = device_create(umad_class, device->dma_device, | 1028 | port->sm_dev = device_create_drvdata(umad_class, device->dma_device, |
1028 | port->sm_cdev->dev, | 1029 | port->sm_cdev->dev, port, |
1029 | "issm%d", port->dev_num); | 1030 | "issm%d", port->dev_num); |
1030 | if (IS_ERR(port->sm_dev)) | 1031 | if (IS_ERR(port->sm_dev)) |
1031 | goto err_sm_cdev; | 1032 | goto err_sm_cdev; |
1032 | 1033 | ||
1033 | dev_set_drvdata(port->dev, port); | ||
1034 | dev_set_drvdata(port->sm_dev, port); | ||
1035 | |||
1036 | if (device_create_file(port->sm_dev, &dev_attr_ibdev)) | 1034 | if (device_create_file(port->sm_dev, &dev_attr_ibdev)) |
1037 | goto err_sm_dev; | 1035 | goto err_sm_dev; |
1038 | if (device_create_file(port->sm_dev, &dev_attr_port)) | 1036 | if (device_create_file(port->sm_dev, &dev_attr_port)) |
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c index cc1afa28c181..f806da184b51 100644 --- a/drivers/infiniband/core/uverbs_main.c +++ b/drivers/infiniband/core/uverbs_main.c | |||
@@ -755,14 +755,15 @@ static void ib_uverbs_add_one(struct ib_device *device) | |||
755 | if (cdev_add(uverbs_dev->cdev, IB_UVERBS_BASE_DEV + uverbs_dev->devnum, 1)) | 755 | if (cdev_add(uverbs_dev->cdev, IB_UVERBS_BASE_DEV + uverbs_dev->devnum, 1)) |
756 | goto err_cdev; | 756 | goto err_cdev; |
757 | 757 | ||
758 | uverbs_dev->dev = device_create(uverbs_class, device->dma_device, | 758 | uverbs_dev->dev = device_create_drvdata(uverbs_class, |
759 | uverbs_dev->cdev->dev, | 759 | device->dma_device, |
760 | "uverbs%d", uverbs_dev->devnum); | 760 | uverbs_dev->cdev->dev, |
761 | uverbs_dev, | ||
762 | "uverbs%d", | ||
763 | uverbs_dev->devnum); | ||
761 | if (IS_ERR(uverbs_dev->dev)) | 764 | if (IS_ERR(uverbs_dev->dev)) |
762 | goto err_cdev; | 765 | goto err_cdev; |
763 | 766 | ||
764 | dev_set_drvdata(uverbs_dev->dev, uverbs_dev); | ||
765 | |||
766 | if (device_create_file(uverbs_dev->dev, &dev_attr_ibdev)) | 767 | if (device_create_file(uverbs_dev->dev, &dev_attr_ibdev)) |
767 | goto err_class; | 768 | goto err_class; |
768 | if (device_create_file(uverbs_dev->dev, &dev_attr_abi_version)) | 769 | if (device_create_file(uverbs_dev->dev, &dev_attr_abi_version)) |
diff --git a/drivers/infiniband/hw/cxgb3/iwch_qp.c b/drivers/infiniband/hw/cxgb3/iwch_qp.c index 79dbe5beae52..992613799228 100644 --- a/drivers/infiniband/hw/cxgb3/iwch_qp.c +++ b/drivers/infiniband/hw/cxgb3/iwch_qp.c | |||
@@ -229,7 +229,7 @@ int iwch_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
229 | struct ib_send_wr **bad_wr) | 229 | struct ib_send_wr **bad_wr) |
230 | { | 230 | { |
231 | int err = 0; | 231 | int err = 0; |
232 | u8 t3_wr_flit_cnt; | 232 | u8 uninitialized_var(t3_wr_flit_cnt); |
233 | enum t3_wr_opcode t3_wr_opcode = 0; | 233 | enum t3_wr_opcode t3_wr_opcode = 0; |
234 | enum t3_wr_flags t3_wr_flags; | 234 | enum t3_wr_flags t3_wr_flags; |
235 | struct iwch_qp *qhp; | 235 | struct iwch_qp *qhp; |
diff --git a/drivers/infiniband/hw/ipath/ipath_sdma.c b/drivers/infiniband/hw/ipath/ipath_sdma.c index 3697449c1ba4..0a8c1b8091a2 100644 --- a/drivers/infiniband/hw/ipath/ipath_sdma.c +++ b/drivers/infiniband/hw/ipath/ipath_sdma.c | |||
@@ -345,7 +345,7 @@ resched: | |||
345 | * state change | 345 | * state change |
346 | */ | 346 | */ |
347 | if (jiffies > dd->ipath_sdma_abort_jiffies) { | 347 | if (jiffies > dd->ipath_sdma_abort_jiffies) { |
348 | ipath_dbg("looping with status 0x%016llx\n", | 348 | ipath_dbg("looping with status 0x%08lx\n", |
349 | dd->ipath_sdma_status); | 349 | dd->ipath_sdma_status); |
350 | dd->ipath_sdma_abort_jiffies = jiffies + 5 * HZ; | 350 | dd->ipath_sdma_abort_jiffies = jiffies + 5 * HZ; |
351 | } | 351 | } |
@@ -615,7 +615,7 @@ void ipath_restart_sdma(struct ipath_devdata *dd) | |||
615 | } | 615 | } |
616 | spin_unlock_irqrestore(&dd->ipath_sdma_lock, flags); | 616 | spin_unlock_irqrestore(&dd->ipath_sdma_lock, flags); |
617 | if (!needed) { | 617 | if (!needed) { |
618 | ipath_dbg("invalid attempt to restart SDMA, status 0x%016llx\n", | 618 | ipath_dbg("invalid attempt to restart SDMA, status 0x%08lx\n", |
619 | dd->ipath_sdma_status); | 619 | dd->ipath_sdma_status); |
620 | goto bail; | 620 | goto bail; |
621 | } | 621 | } |
diff --git a/drivers/infiniband/hw/ipath/ipath_uc.c b/drivers/infiniband/hw/ipath/ipath_uc.c index 7fd18e833907..0596ec16fcbd 100644 --- a/drivers/infiniband/hw/ipath/ipath_uc.c +++ b/drivers/infiniband/hw/ipath/ipath_uc.c | |||
@@ -407,12 +407,11 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, | |||
407 | dev->n_pkt_drops++; | 407 | dev->n_pkt_drops++; |
408 | goto done; | 408 | goto done; |
409 | } | 409 | } |
410 | /* XXX Need to free SGEs */ | 410 | wc.opcode = IB_WC_RECV; |
411 | last_imm: | 411 | last_imm: |
412 | ipath_copy_sge(&qp->r_sge, data, tlen); | 412 | ipath_copy_sge(&qp->r_sge, data, tlen); |
413 | wc.wr_id = qp->r_wr_id; | 413 | wc.wr_id = qp->r_wr_id; |
414 | wc.status = IB_WC_SUCCESS; | 414 | wc.status = IB_WC_SUCCESS; |
415 | wc.opcode = IB_WC_RECV; | ||
416 | wc.qp = &qp->ibqp; | 415 | wc.qp = &qp->ibqp; |
417 | wc.src_qp = qp->remote_qpn; | 416 | wc.src_qp = qp->remote_qpn; |
418 | wc.slid = qp->remote_ah_attr.dlid; | 417 | wc.slid = qp->remote_ah_attr.dlid; |
@@ -514,6 +513,7 @@ void ipath_uc_rcv(struct ipath_ibdev *dev, struct ipath_ib_header *hdr, | |||
514 | goto done; | 513 | goto done; |
515 | } | 514 | } |
516 | wc.byte_len = qp->r_len; | 515 | wc.byte_len = qp->r_len; |
516 | wc.opcode = IB_WC_RECV_RDMA_WITH_IMM; | ||
517 | goto last_imm; | 517 | goto last_imm; |
518 | 518 | ||
519 | case OP(RDMA_WRITE_LAST): | 519 | case OP(RDMA_WRITE_LAST): |
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c index 8e02ecfec188..a80df22deae8 100644 --- a/drivers/infiniband/hw/mlx4/qp.c +++ b/drivers/infiniband/hw/mlx4/qp.c | |||
@@ -333,6 +333,9 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap, | |||
333 | cap->max_inline_data + sizeof (struct mlx4_wqe_inline_seg)) + | 333 | cap->max_inline_data + sizeof (struct mlx4_wqe_inline_seg)) + |
334 | send_wqe_overhead(type, qp->flags); | 334 | send_wqe_overhead(type, qp->flags); |
335 | 335 | ||
336 | if (s > dev->dev->caps.max_sq_desc_sz) | ||
337 | return -EINVAL; | ||
338 | |||
336 | /* | 339 | /* |
337 | * Hermon supports shrinking WQEs, such that a single work | 340 | * Hermon supports shrinking WQEs, such that a single work |
338 | * request can include multiple units of 1 << wqe_shift. This | 341 | * request can include multiple units of 1 << wqe_shift. This |
@@ -372,9 +375,6 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap, | |||
372 | qp->sq.wqe_shift = ilog2(roundup_pow_of_two(s)); | 375 | qp->sq.wqe_shift = ilog2(roundup_pow_of_two(s)); |
373 | 376 | ||
374 | for (;;) { | 377 | for (;;) { |
375 | if (1 << qp->sq.wqe_shift > dev->dev->caps.max_sq_desc_sz) | ||
376 | return -EINVAL; | ||
377 | |||
378 | qp->sq_max_wqes_per_wr = DIV_ROUND_UP(s, 1U << qp->sq.wqe_shift); | 378 | qp->sq_max_wqes_per_wr = DIV_ROUND_UP(s, 1U << qp->sq.wqe_shift); |
379 | 379 | ||
380 | /* | 380 | /* |
@@ -395,7 +395,8 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap, | |||
395 | ++qp->sq.wqe_shift; | 395 | ++qp->sq.wqe_shift; |
396 | } | 396 | } |
397 | 397 | ||
398 | qp->sq.max_gs = ((qp->sq_max_wqes_per_wr << qp->sq.wqe_shift) - | 398 | qp->sq.max_gs = (min(dev->dev->caps.max_sq_desc_sz, |
399 | (qp->sq_max_wqes_per_wr << qp->sq.wqe_shift)) - | ||
399 | send_wqe_overhead(type, qp->flags)) / | 400 | send_wqe_overhead(type, qp->flags)) / |
400 | sizeof (struct mlx4_wqe_data_seg); | 401 | sizeof (struct mlx4_wqe_data_seg); |
401 | 402 | ||
@@ -411,7 +412,9 @@ static int set_kernel_sq_size(struct mlx4_ib_dev *dev, struct ib_qp_cap *cap, | |||
411 | 412 | ||
412 | cap->max_send_wr = qp->sq.max_post = | 413 | cap->max_send_wr = qp->sq.max_post = |
413 | (qp->sq.wqe_cnt - qp->sq_spare_wqes) / qp->sq_max_wqes_per_wr; | 414 | (qp->sq.wqe_cnt - qp->sq_spare_wqes) / qp->sq_max_wqes_per_wr; |
414 | cap->max_send_sge = qp->sq.max_gs; | 415 | cap->max_send_sge = min(qp->sq.max_gs, |
416 | min(dev->dev->caps.max_sq_sg, | ||
417 | dev->dev->caps.max_rq_sg)); | ||
415 | /* We don't support inline sends for kernel QPs (yet) */ | 418 | /* We don't support inline sends for kernel QPs (yet) */ |
416 | cap->max_inline_data = 0; | 419 | cap->max_inline_data = 0; |
417 | 420 | ||
@@ -1457,7 +1460,7 @@ int mlx4_ib_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, | |||
1457 | unsigned ind; | 1460 | unsigned ind; |
1458 | int uninitialized_var(stamp); | 1461 | int uninitialized_var(stamp); |
1459 | int uninitialized_var(size); | 1462 | int uninitialized_var(size); |
1460 | unsigned seglen; | 1463 | unsigned uninitialized_var(seglen); |
1461 | int i; | 1464 | int i; |
1462 | 1465 | ||
1463 | spin_lock_irqsave(&qp->sq.lock, flags); | 1466 | spin_lock_irqsave(&qp->sq.lock, flags); |
diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c index 9ebadd6e0cfb..200cf13fc9bb 100644 --- a/drivers/infiniband/hw/mthca/mthca_main.c +++ b/drivers/infiniband/hw/mthca/mthca_main.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include "mthca_cmd.h" | 45 | #include "mthca_cmd.h" |
46 | #include "mthca_profile.h" | 46 | #include "mthca_profile.h" |
47 | #include "mthca_memfree.h" | 47 | #include "mthca_memfree.h" |
48 | #include "mthca_wqe.h" | ||
48 | 49 | ||
49 | MODULE_AUTHOR("Roland Dreier"); | 50 | MODULE_AUTHOR("Roland Dreier"); |
50 | MODULE_DESCRIPTION("Mellanox InfiniBand HCA low-level driver"); | 51 | MODULE_DESCRIPTION("Mellanox InfiniBand HCA low-level driver"); |
@@ -200,7 +201,18 @@ static int mthca_dev_lim(struct mthca_dev *mdev, struct mthca_dev_lim *dev_lim) | |||
200 | mdev->limits.gid_table_len = dev_lim->max_gids; | 201 | mdev->limits.gid_table_len = dev_lim->max_gids; |
201 | mdev->limits.pkey_table_len = dev_lim->max_pkeys; | 202 | mdev->limits.pkey_table_len = dev_lim->max_pkeys; |
202 | mdev->limits.local_ca_ack_delay = dev_lim->local_ca_ack_delay; | 203 | mdev->limits.local_ca_ack_delay = dev_lim->local_ca_ack_delay; |
203 | mdev->limits.max_sg = dev_lim->max_sg; | 204 | /* |
205 | * Need to allow for worst case send WQE overhead and check | ||
206 | * whether max_desc_sz imposes a lower limit than max_sg; UD | ||
207 | * send has the biggest overhead. | ||
208 | */ | ||
209 | mdev->limits.max_sg = min_t(int, dev_lim->max_sg, | ||
210 | (dev_lim->max_desc_sz - | ||
211 | sizeof (struct mthca_next_seg) - | ||
212 | (mthca_is_memfree(mdev) ? | ||
213 | sizeof (struct mthca_arbel_ud_seg) : | ||
214 | sizeof (struct mthca_tavor_ud_seg))) / | ||
215 | sizeof (struct mthca_data_seg)); | ||
204 | mdev->limits.max_wqes = dev_lim->max_qp_sz; | 216 | mdev->limits.max_wqes = dev_lim->max_qp_sz; |
205 | mdev->limits.max_qp_init_rdma = dev_lim->max_requester_per_qp; | 217 | mdev->limits.max_qp_init_rdma = dev_lim->max_requester_per_qp; |
206 | mdev->limits.reserved_qps = dev_lim->reserved_qps; | 218 | mdev->limits.reserved_qps = dev_lim->reserved_qps; |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index d00a2c174aee..3f663fb852c1 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -194,7 +194,13 @@ static int ipoib_mcast_join_finish(struct ipoib_mcast *mcast, | |||
194 | /* Set the cached Q_Key before we attach if it's the broadcast group */ | 194 | /* Set the cached Q_Key before we attach if it's the broadcast group */ |
195 | if (!memcmp(mcast->mcmember.mgid.raw, priv->dev->broadcast + 4, | 195 | if (!memcmp(mcast->mcmember.mgid.raw, priv->dev->broadcast + 4, |
196 | sizeof (union ib_gid))) { | 196 | sizeof (union ib_gid))) { |
197 | spin_lock_irq(&priv->lock); | ||
198 | if (!priv->broadcast) { | ||
199 | spin_unlock_irq(&priv->lock); | ||
200 | return -EAGAIN; | ||
201 | } | ||
197 | priv->qkey = be32_to_cpu(priv->broadcast->mcmember.qkey); | 202 | priv->qkey = be32_to_cpu(priv->broadcast->mcmember.qkey); |
203 | spin_unlock_irq(&priv->lock); | ||
198 | priv->tx_wr.wr.ud.remote_qkey = priv->qkey; | 204 | priv->tx_wr.wr.ud.remote_qkey = priv->qkey; |
199 | } | 205 | } |
200 | 206 | ||
diff --git a/drivers/input/keyboard/aaed2000_kbd.c b/drivers/input/keyboard/aaed2000_kbd.c index a293e8b3f508..8a77bfcd05bc 100644 --- a/drivers/input/keyboard/aaed2000_kbd.c +++ b/drivers/input/keyboard/aaed2000_kbd.c | |||
@@ -183,4 +183,4 @@ module_exit(aaedkbd_exit); | |||
183 | 183 | ||
184 | MODULE_AUTHOR("Nicolas Bellido Y Ortega"); | 184 | MODULE_AUTHOR("Nicolas Bellido Y Ortega"); |
185 | MODULE_DESCRIPTION("AAED-2000 Keyboard Driver"); | 185 | MODULE_DESCRIPTION("AAED-2000 Keyboard Driver"); |
186 | MODULE_LICENSE("GPLv2"); | 186 | MODULE_LICENSE("GPL v2"); |
diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c index 4a95adc4cc78..af58a6f1e898 100644 --- a/drivers/input/keyboard/atkbd.c +++ b/drivers/input/keyboard/atkbd.c | |||
@@ -807,6 +807,8 @@ static int atkbd_activate(struct atkbd *atkbd) | |||
807 | static void atkbd_cleanup(struct serio *serio) | 807 | static void atkbd_cleanup(struct serio *serio) |
808 | { | 808 | { |
809 | struct atkbd *atkbd = serio_get_drvdata(serio); | 809 | struct atkbd *atkbd = serio_get_drvdata(serio); |
810 | |||
811 | atkbd_disable(atkbd); | ||
810 | ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_BAT); | 812 | ps2_command(&atkbd->ps2dev, NULL, ATKBD_CMD_RESET_BAT); |
811 | } | 813 | } |
812 | 814 | ||
diff --git a/drivers/input/keyboard/corgikbd.c b/drivers/input/keyboard/corgikbd.c index 29fbec6218b9..1aa46ae12630 100644 --- a/drivers/input/keyboard/corgikbd.c +++ b/drivers/input/keyboard/corgikbd.c | |||
@@ -412,5 +412,5 @@ module_exit(corgikbd_exit); | |||
412 | 412 | ||
413 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); | 413 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); |
414 | MODULE_DESCRIPTION("Corgi Keyboard Driver"); | 414 | MODULE_DESCRIPTION("Corgi Keyboard Driver"); |
415 | MODULE_LICENSE("GPLv2"); | 415 | MODULE_LICENSE("GPL v2"); |
416 | MODULE_ALIAS("platform:corgi-keyboard"); | 416 | MODULE_ALIAS("platform:corgi-keyboard"); |
diff --git a/drivers/input/keyboard/hilkbd.c b/drivers/input/keyboard/hilkbd.c index 50d80ecf0b80..aacf71f3cd44 100644 --- a/drivers/input/keyboard/hilkbd.c +++ b/drivers/input/keyboard/hilkbd.c | |||
@@ -217,6 +217,10 @@ hil_keyb_init(void) | |||
217 | return -ENOMEM; | 217 | return -ENOMEM; |
218 | 218 | ||
219 | #if defined(CONFIG_HP300) | 219 | #if defined(CONFIG_HP300) |
220 | if (!MACH_IS_HP300) { | ||
221 | err = -ENODEV; | ||
222 | goto err1; | ||
223 | } | ||
220 | if (!hwreg_present((void *)(HILBASE + HIL_DATA))) { | 224 | if (!hwreg_present((void *)(HILBASE + HIL_DATA))) { |
221 | printk(KERN_ERR "HIL: hardware register was not found\n"); | 225 | printk(KERN_ERR "HIL: hardware register was not found\n"); |
222 | err = -ENODEV; | 226 | err = -ENODEV; |
diff --git a/drivers/input/keyboard/jornada680_kbd.c b/drivers/input/keyboard/jornada680_kbd.c index 9387da343f97..781fc6102860 100644 --- a/drivers/input/keyboard/jornada680_kbd.c +++ b/drivers/input/keyboard/jornada680_kbd.c | |||
@@ -275,5 +275,5 @@ module_exit(jornada680kbd_exit); | |||
275 | 275 | ||
276 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); | 276 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); |
277 | MODULE_DESCRIPTION("HP Jornada 620/660/680/690 Keyboard Driver"); | 277 | MODULE_DESCRIPTION("HP Jornada 620/660/680/690 Keyboard Driver"); |
278 | MODULE_LICENSE("GPLv2"); | 278 | MODULE_LICENSE("GPL v2"); |
279 | MODULE_ALIAS("platform:jornada680_kbd"); | 279 | MODULE_ALIAS("platform:jornada680_kbd"); |
diff --git a/drivers/input/keyboard/jornada720_kbd.c b/drivers/input/keyboard/jornada720_kbd.c index a1164a0c7736..ce650af6d649 100644 --- a/drivers/input/keyboard/jornada720_kbd.c +++ b/drivers/input/keyboard/jornada720_kbd.c | |||
@@ -29,7 +29,7 @@ | |||
29 | 29 | ||
30 | MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>"); | 30 | MODULE_AUTHOR("Kristoffer Ericson <Kristoffer.Ericson@gmail.com>"); |
31 | MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver"); | 31 | MODULE_DESCRIPTION("HP Jornada 710/720/728 keyboard driver"); |
32 | MODULE_LICENSE("GPLv2"); | 32 | MODULE_LICENSE("GPL v2"); |
33 | 33 | ||
34 | static unsigned short jornada_std_keymap[128] = { /* ROW */ | 34 | static unsigned short jornada_std_keymap[128] = { /* ROW */ |
35 | 0, KEY_ESC, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, /* #1 */ | 35 | 0, KEY_ESC, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, /* #1 */ |
diff --git a/drivers/input/keyboard/pxa27x_keypad.c b/drivers/input/keyboard/pxa27x_keypad.c index 3dea0c5077a9..45767e73f071 100644 --- a/drivers/input/keyboard/pxa27x_keypad.c +++ b/drivers/input/keyboard/pxa27x_keypad.c | |||
@@ -136,6 +136,9 @@ static void pxa27x_keypad_build_keycode(struct pxa27x_keypad *keypad) | |||
136 | set_bit(code, input_dev->keybit); | 136 | set_bit(code, input_dev->keybit); |
137 | } | 137 | } |
138 | 138 | ||
139 | for (i = 0; i < pdata->direct_key_num; i++) | ||
140 | set_bit(pdata->direct_key_map[i], input_dev->keybit); | ||
141 | |||
139 | keypad->rotary_up_key[0] = pdata->rotary0_up_key; | 142 | keypad->rotary_up_key[0] = pdata->rotary0_up_key; |
140 | keypad->rotary_up_key[1] = pdata->rotary1_up_key; | 143 | keypad->rotary_up_key[1] = pdata->rotary1_up_key; |
141 | keypad->rotary_down_key[0] = pdata->rotary0_down_key; | 144 | keypad->rotary_down_key[0] = pdata->rotary0_down_key; |
@@ -143,17 +146,21 @@ static void pxa27x_keypad_build_keycode(struct pxa27x_keypad *keypad) | |||
143 | keypad->rotary_rel_code[0] = pdata->rotary0_rel_code; | 146 | keypad->rotary_rel_code[0] = pdata->rotary0_rel_code; |
144 | keypad->rotary_rel_code[1] = pdata->rotary1_rel_code; | 147 | keypad->rotary_rel_code[1] = pdata->rotary1_rel_code; |
145 | 148 | ||
146 | if (pdata->rotary0_up_key && pdata->rotary0_down_key) { | 149 | if (pdata->enable_rotary0) { |
147 | set_bit(pdata->rotary0_up_key, input_dev->keybit); | 150 | if (pdata->rotary0_up_key && pdata->rotary0_down_key) { |
148 | set_bit(pdata->rotary0_down_key, input_dev->keybit); | 151 | set_bit(pdata->rotary0_up_key, input_dev->keybit); |
149 | } else | 152 | set_bit(pdata->rotary0_down_key, input_dev->keybit); |
150 | set_bit(pdata->rotary0_rel_code, input_dev->relbit); | 153 | } else |
151 | 154 | set_bit(pdata->rotary0_rel_code, input_dev->relbit); | |
152 | if (pdata->rotary1_up_key && pdata->rotary1_down_key) { | 155 | } |
153 | set_bit(pdata->rotary1_up_key, input_dev->keybit); | 156 | |
154 | set_bit(pdata->rotary1_down_key, input_dev->keybit); | 157 | if (pdata->enable_rotary1) { |
155 | } else | 158 | if (pdata->rotary1_up_key && pdata->rotary1_down_key) { |
156 | set_bit(pdata->rotary1_rel_code, input_dev->relbit); | 159 | set_bit(pdata->rotary1_up_key, input_dev->keybit); |
160 | set_bit(pdata->rotary1_down_key, input_dev->keybit); | ||
161 | } else | ||
162 | set_bit(pdata->rotary1_rel_code, input_dev->relbit); | ||
163 | } | ||
157 | } | 164 | } |
158 | 165 | ||
159 | static inline unsigned int lookup_matrix_keycode( | 166 | static inline unsigned int lookup_matrix_keycode( |
@@ -484,8 +491,13 @@ static int __devinit pxa27x_keypad_probe(struct platform_device *pdev) | |||
484 | keypad->input_dev = input_dev; | 491 | keypad->input_dev = input_dev; |
485 | input_set_drvdata(input_dev, keypad); | 492 | input_set_drvdata(input_dev, keypad); |
486 | 493 | ||
487 | input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP) | | 494 | input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP); |
488 | BIT_MASK(EV_REL); | 495 | if ((keypad->pdata->enable_rotary0 && |
496 | keypad->pdata->rotary0_rel_code) || | ||
497 | (keypad->pdata->enable_rotary1 && | ||
498 | keypad->pdata->rotary1_rel_code)) { | ||
499 | input_dev->evbit[0] |= BIT_MASK(EV_REL); | ||
500 | } | ||
489 | 501 | ||
490 | pxa27x_keypad_build_keycode(keypad); | 502 | pxa27x_keypad_build_keycode(keypad); |
491 | platform_set_drvdata(pdev, keypad); | 503 | platform_set_drvdata(pdev, keypad); |
diff --git a/drivers/input/keyboard/spitzkbd.c b/drivers/input/keyboard/spitzkbd.c index 61e401bc9109..1aa37181c40f 100644 --- a/drivers/input/keyboard/spitzkbd.c +++ b/drivers/input/keyboard/spitzkbd.c | |||
@@ -494,5 +494,5 @@ module_exit(spitzkbd_exit); | |||
494 | 494 | ||
495 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); | 495 | MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>"); |
496 | MODULE_DESCRIPTION("Spitz Keyboard Driver"); | 496 | MODULE_DESCRIPTION("Spitz Keyboard Driver"); |
497 | MODULE_LICENSE("GPLv2"); | 497 | MODULE_LICENSE("GPL v2"); |
498 | MODULE_ALIAS("platform:spitz-keyboard"); | 498 | MODULE_ALIAS("platform:spitz-keyboard"); |
diff --git a/drivers/input/misc/apanel.c b/drivers/input/misc/apanel.c index 9531d8c7444f..d82f7f727f7a 100644 --- a/drivers/input/misc/apanel.c +++ b/drivers/input/misc/apanel.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/ioport.h> | 21 | #include <linux/ioport.h> |
22 | #include <linux/io.h> | 22 | #include <linux/io.h> |
23 | #include <linux/module.h> | ||
24 | #include <linux/input-polldev.h> | 23 | #include <linux/input-polldev.h> |
25 | #include <linux/i2c.h> | 24 | #include <linux/i2c.h> |
26 | #include <linux/workqueue.h> | 25 | #include <linux/workqueue.h> |
diff --git a/drivers/input/misc/hp_sdc_rtc.c b/drivers/input/misc/hp_sdc_rtc.c index ab76ea442fa5..45e5d05b01de 100644 --- a/drivers/input/misc/hp_sdc_rtc.c +++ b/drivers/input/misc/hp_sdc_rtc.c | |||
@@ -691,6 +691,11 @@ static int __init hp_sdc_rtc_init(void) | |||
691 | { | 691 | { |
692 | int ret; | 692 | int ret; |
693 | 693 | ||
694 | #ifdef __mc68000__ | ||
695 | if (!MACH_IS_HP300) | ||
696 | return -ENODEV; | ||
697 | #endif | ||
698 | |||
694 | init_MUTEX(&i8042tregs); | 699 | init_MUTEX(&i8042tregs); |
695 | 700 | ||
696 | if ((ret = hp_sdc_request_timer_irq(&hp_sdc_rtc_isr))) | 701 | if ((ret = hp_sdc_request_timer_irq(&hp_sdc_rtc_isr))) |
diff --git a/drivers/input/serio/hp_sdc_mlc.c b/drivers/input/serio/hp_sdc_mlc.c index f1fd3b638a37..587398f5c9df 100644 --- a/drivers/input/serio/hp_sdc_mlc.c +++ b/drivers/input/serio/hp_sdc_mlc.c | |||
@@ -306,6 +306,11 @@ static int __init hp_sdc_mlc_init(void) | |||
306 | { | 306 | { |
307 | hil_mlc *mlc = &hp_sdc_mlc; | 307 | hil_mlc *mlc = &hp_sdc_mlc; |
308 | 308 | ||
309 | #ifdef __mc68000__ | ||
310 | if (!MACH_IS_HP300) | ||
311 | return -ENODEV; | ||
312 | #endif | ||
313 | |||
309 | printk(KERN_INFO PREFIX "Registering the System Domain Controller's HIL MLC.\n"); | 314 | printk(KERN_INFO PREFIX "Registering the System Domain Controller's HIL MLC.\n"); |
310 | 315 | ||
311 | hp_sdc_mlc_priv.emtestmode = 0; | 316 | hp_sdc_mlc_priv.emtestmode = 0; |
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index 5ece9f56babc..9aafa96cb746 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
@@ -331,6 +331,13 @@ static struct dmi_system_id __initdata i8042_dmi_dritek_table[] = { | |||
331 | }, | 331 | }, |
332 | }, | 332 | }, |
333 | { | 333 | { |
334 | .ident = "Acer TravelMate 660", | ||
335 | .matches = { | ||
336 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
337 | DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 660"), | ||
338 | }, | ||
339 | }, | ||
340 | { | ||
334 | .ident = "Acer TravelMate 2490", | 341 | .ident = "Acer TravelMate 2490", |
335 | .matches = { | 342 | .matches = { |
336 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | 343 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), |
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 65a74cfc187b..592ff55b62d0 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c | |||
@@ -885,6 +885,20 @@ static long i8042_panic_blink(long count) | |||
885 | 885 | ||
886 | #undef DELAY | 886 | #undef DELAY |
887 | 887 | ||
888 | #ifdef CONFIG_X86 | ||
889 | static void i8042_dritek_enable(void) | ||
890 | { | ||
891 | char param = 0x90; | ||
892 | int error; | ||
893 | |||
894 | error = i8042_command(¶m, 0x1059); | ||
895 | if (error) | ||
896 | printk(KERN_WARNING | ||
897 | "Failed to enable DRITEK extension: %d\n", | ||
898 | error); | ||
899 | } | ||
900 | #endif | ||
901 | |||
888 | #ifdef CONFIG_PM | 902 | #ifdef CONFIG_PM |
889 | /* | 903 | /* |
890 | * Here we try to restore the original BIOS settings. We only want to | 904 | * Here we try to restore the original BIOS settings. We only want to |
@@ -942,6 +956,12 @@ static int i8042_resume(struct platform_device *dev) | |||
942 | return -EIO; | 956 | return -EIO; |
943 | } | 957 | } |
944 | 958 | ||
959 | |||
960 | #ifdef CONFIG_X86 | ||
961 | if (i8042_dritek) | ||
962 | i8042_dritek_enable(); | ||
963 | #endif | ||
964 | |||
945 | if (i8042_mux_present) { | 965 | if (i8042_mux_present) { |
946 | if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports()) | 966 | if (i8042_set_mux_mode(1, NULL) || i8042_enable_mux_ports()) |
947 | printk(KERN_WARNING | 967 | printk(KERN_WARNING |
@@ -1160,6 +1180,11 @@ static int __devinit i8042_probe(struct platform_device *dev) | |||
1160 | if (error) | 1180 | if (error) |
1161 | return error; | 1181 | return error; |
1162 | 1182 | ||
1183 | #ifdef CONFIG_X86 | ||
1184 | if (i8042_dritek) | ||
1185 | i8042_dritek_enable(); | ||
1186 | #endif | ||
1187 | |||
1163 | if (!i8042_noaux) { | 1188 | if (!i8042_noaux) { |
1164 | error = i8042_setup_aux(); | 1189 | error = i8042_setup_aux(); |
1165 | if (error && error != -ENODEV && error != -EBUSY) | 1190 | if (error && error != -ENODEV && error != -EBUSY) |
@@ -1171,14 +1196,6 @@ static int __devinit i8042_probe(struct platform_device *dev) | |||
1171 | if (error) | 1196 | if (error) |
1172 | goto out_fail; | 1197 | goto out_fail; |
1173 | } | 1198 | } |
1174 | #ifdef CONFIG_X86 | ||
1175 | if (i8042_dritek) { | ||
1176 | char param = 0x90; | ||
1177 | error = i8042_command(¶m, 0x1059); | ||
1178 | if (error) | ||
1179 | goto out_fail; | ||
1180 | } | ||
1181 | #endif | ||
1182 | /* | 1199 | /* |
1183 | * Ok, everything is ready, let's register all serio ports | 1200 | * Ok, everything is ready, let's register all serio ports |
1184 | */ | 1201 | */ |
diff --git a/drivers/input/serio/q40kbd.c b/drivers/input/serio/q40kbd.c index cb89aff2e160..d962a8d78b14 100644 --- a/drivers/input/serio/q40kbd.c +++ b/drivers/input/serio/q40kbd.c | |||
@@ -156,7 +156,7 @@ static int __init q40kbd_init(void) | |||
156 | int error; | 156 | int error; |
157 | 157 | ||
158 | if (!MACH_IS_Q40) | 158 | if (!MACH_IS_Q40) |
159 | return -EIO; | 159 | return -ENODEV; |
160 | 160 | ||
161 | error = platform_driver_register(&q40kbd_driver); | 161 | error = platform_driver_register(&q40kbd_driver); |
162 | if (error) | 162 | if (error) |
diff --git a/drivers/input/tablet/gtco.c b/drivers/input/tablet/gtco.c index c5a8661a1baa..1e748e46d12e 100644 --- a/drivers/input/tablet/gtco.c +++ b/drivers/input/tablet/gtco.c | |||
@@ -830,7 +830,7 @@ static int gtco_probe(struct usb_interface *usbinterface, | |||
830 | struct gtco *gtco; | 830 | struct gtco *gtco; |
831 | struct input_dev *input_dev; | 831 | struct input_dev *input_dev; |
832 | struct hid_descriptor *hid_desc; | 832 | struct hid_descriptor *hid_desc; |
833 | char *report = NULL; | 833 | char *report; |
834 | int result = 0, retry; | 834 | int result = 0, retry; |
835 | int error; | 835 | int error; |
836 | struct usb_endpoint_descriptor *endpoint; | 836 | struct usb_endpoint_descriptor *endpoint; |
@@ -916,12 +916,16 @@ static int gtco_probe(struct usb_interface *usbinterface, | |||
916 | le16_to_cpu(hid_desc->wDescriptorLength), | 916 | le16_to_cpu(hid_desc->wDescriptorLength), |
917 | 5000); /* 5 secs */ | 917 | 5000); /* 5 secs */ |
918 | 918 | ||
919 | if (result == le16_to_cpu(hid_desc->wDescriptorLength)) | 919 | dbg("usb_control_msg result: %d", result); |
920 | if (result == le16_to_cpu(hid_desc->wDescriptorLength)) { | ||
921 | parse_hid_report_descriptor(gtco, report, result); | ||
920 | break; | 922 | break; |
923 | } | ||
921 | } | 924 | } |
922 | 925 | ||
926 | kfree(report); | ||
927 | |||
923 | /* If we didn't get the report, fail */ | 928 | /* If we didn't get the report, fail */ |
924 | dbg("usb_control_msg result: :%d", result); | ||
925 | if (result != le16_to_cpu(hid_desc->wDescriptorLength)) { | 929 | if (result != le16_to_cpu(hid_desc->wDescriptorLength)) { |
926 | err("Failed to get HID Report Descriptor of size: %d", | 930 | err("Failed to get HID Report Descriptor of size: %d", |
927 | hid_desc->wDescriptorLength); | 931 | hid_desc->wDescriptorLength); |
@@ -929,12 +933,6 @@ static int gtco_probe(struct usb_interface *usbinterface, | |||
929 | goto err_free_urb; | 933 | goto err_free_urb; |
930 | } | 934 | } |
931 | 935 | ||
932 | /* Now we parse the report */ | ||
933 | parse_hid_report_descriptor(gtco, report, result); | ||
934 | |||
935 | /* Now we delete it */ | ||
936 | kfree(report); | ||
937 | |||
938 | /* Create a device file node */ | 936 | /* Create a device file node */ |
939 | usb_make_path(gtco->usbdev, gtco->usbpath, sizeof(gtco->usbpath)); | 937 | usb_make_path(gtco->usbdev, gtco->usbpath, sizeof(gtco->usbpath)); |
940 | strlcat(gtco->usbpath, "/input0", sizeof(gtco->usbpath)); | 938 | strlcat(gtco->usbpath, "/input0", sizeof(gtco->usbpath)); |
@@ -988,7 +986,6 @@ static int gtco_probe(struct usb_interface *usbinterface, | |||
988 | usb_buffer_free(gtco->usbdev, REPORT_MAX_SIZE, | 986 | usb_buffer_free(gtco->usbdev, REPORT_MAX_SIZE, |
989 | gtco->buffer, gtco->buf_dma); | 987 | gtco->buffer, gtco->buf_dma); |
990 | err_free_devs: | 988 | err_free_devs: |
991 | kfree(report); | ||
992 | input_free_device(input_dev); | 989 | input_free_device(input_dev); |
993 | kfree(gtco); | 990 | kfree(gtco); |
994 | return error; | 991 | return error; |
diff --git a/drivers/input/touchscreen/jornada720_ts.c b/drivers/input/touchscreen/jornada720_ts.c index 742242111bf1..1aca108b1031 100644 --- a/drivers/input/touchscreen/jornada720_ts.c +++ b/drivers/input/touchscreen/jornada720_ts.c | |||
@@ -24,7 +24,7 @@ | |||
24 | 24 | ||
25 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); | 25 | MODULE_AUTHOR("Kristoffer Ericson <kristoffer.ericson@gmail.com>"); |
26 | MODULE_DESCRIPTION("HP Jornada 710/720/728 touchscreen driver"); | 26 | MODULE_DESCRIPTION("HP Jornada 710/720/728 touchscreen driver"); |
27 | MODULE_LICENSE("GPLv2"); | 27 | MODULE_LICENSE("GPL v2"); |
28 | 28 | ||
29 | struct jornada_ts { | 29 | struct jornada_ts { |
30 | struct input_dev *dev; | 30 | struct input_dev *dev; |
diff --git a/drivers/input/touchscreen/wm9713.c b/drivers/input/touchscreen/wm9713.c index 01278bd7e65c..838458792ea0 100644 --- a/drivers/input/touchscreen/wm9713.c +++ b/drivers/input/touchscreen/wm9713.c | |||
@@ -85,6 +85,15 @@ module_param(delay, int, 0); | |||
85 | MODULE_PARM_DESC(delay, "Set adc sample delay."); | 85 | MODULE_PARM_DESC(delay, "Set adc sample delay."); |
86 | 86 | ||
87 | /* | 87 | /* |
88 | * Set five_wire = 1 to use a 5 wire touchscreen. | ||
89 | * | ||
90 | * NOTE: Five wire mode does not allow for readback of pressure. | ||
91 | */ | ||
92 | static int five_wire; | ||
93 | module_param(five_wire, int, 0); | ||
94 | MODULE_PARM_DESC(five_wire, "Set to '1' to use 5-wire touchscreen."); | ||
95 | |||
96 | /* | ||
88 | * Set adc mask function. | 97 | * Set adc mask function. |
89 | * | 98 | * |
90 | * Sources of glitch noise, such as signals driving an LCD display, may feed | 99 | * Sources of glitch noise, such as signals driving an LCD display, may feed |
@@ -162,6 +171,19 @@ static void wm9713_phy_init(struct wm97xx *wm) | |||
162 | 64000 / rpu); | 171 | 64000 / rpu); |
163 | } | 172 | } |
164 | 173 | ||
174 | /* Five wire panel? */ | ||
175 | if (five_wire) { | ||
176 | dig3 |= WM9713_45W; | ||
177 | dev_info(wm->dev, "setting 5-wire touchscreen mode."); | ||
178 | |||
179 | if (pil) { | ||
180 | dev_warn(wm->dev, | ||
181 | "Pressure measurement not supported in 5 " | ||
182 | "wire mode, disabling\n"); | ||
183 | pil = 0; | ||
184 | } | ||
185 | } | ||
186 | |||
165 | /* touchpanel pressure */ | 187 | /* touchpanel pressure */ |
166 | if (pil == 2) { | 188 | if (pil == 2) { |
167 | dig3 |= WM9712_PIL; | 189 | dig3 |= WM9712_PIL; |
diff --git a/drivers/input/touchscreen/wm97xx-core.c b/drivers/input/touchscreen/wm97xx-core.c index e9c7ea46b6e3..cdc24ad314e0 100644 --- a/drivers/input/touchscreen/wm97xx-core.c +++ b/drivers/input/touchscreen/wm97xx-core.c | |||
@@ -608,6 +608,17 @@ static int wm97xx_probe(struct device *dev) | |||
608 | goto alloc_err; | 608 | goto alloc_err; |
609 | } | 609 | } |
610 | 610 | ||
611 | /* set up physical characteristics */ | ||
612 | wm->codec->phy_init(wm); | ||
613 | |||
614 | /* load gpio cache */ | ||
615 | wm->gpio[0] = wm97xx_reg_read(wm, AC97_GPIO_CFG); | ||
616 | wm->gpio[1] = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); | ||
617 | wm->gpio[2] = wm97xx_reg_read(wm, AC97_GPIO_STICKY); | ||
618 | wm->gpio[3] = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP); | ||
619 | wm->gpio[4] = wm97xx_reg_read(wm, AC97_GPIO_STATUS); | ||
620 | wm->gpio[5] = wm97xx_reg_read(wm, AC97_MISC_AFE); | ||
621 | |||
611 | wm->input_dev = input_allocate_device(); | 622 | wm->input_dev = input_allocate_device(); |
612 | if (wm->input_dev == NULL) { | 623 | if (wm->input_dev == NULL) { |
613 | ret = -ENOMEM; | 624 | ret = -ENOMEM; |
@@ -616,6 +627,7 @@ static int wm97xx_probe(struct device *dev) | |||
616 | 627 | ||
617 | /* set up touch configuration */ | 628 | /* set up touch configuration */ |
618 | wm->input_dev->name = "wm97xx touchscreen"; | 629 | wm->input_dev->name = "wm97xx touchscreen"; |
630 | wm->input_dev->phys = "wm97xx"; | ||
619 | wm->input_dev->open = wm97xx_ts_input_open; | 631 | wm->input_dev->open = wm97xx_ts_input_open; |
620 | wm->input_dev->close = wm97xx_ts_input_close; | 632 | wm->input_dev->close = wm97xx_ts_input_close; |
621 | set_bit(EV_ABS, wm->input_dev->evbit); | 633 | set_bit(EV_ABS, wm->input_dev->evbit); |
@@ -634,17 +646,6 @@ static int wm97xx_probe(struct device *dev) | |||
634 | if (ret < 0) | 646 | if (ret < 0) |
635 | goto dev_alloc_err; | 647 | goto dev_alloc_err; |
636 | 648 | ||
637 | /* set up physical characteristics */ | ||
638 | wm->codec->phy_init(wm); | ||
639 | |||
640 | /* load gpio cache */ | ||
641 | wm->gpio[0] = wm97xx_reg_read(wm, AC97_GPIO_CFG); | ||
642 | wm->gpio[1] = wm97xx_reg_read(wm, AC97_GPIO_POLARITY); | ||
643 | wm->gpio[2] = wm97xx_reg_read(wm, AC97_GPIO_STICKY); | ||
644 | wm->gpio[3] = wm97xx_reg_read(wm, AC97_GPIO_WAKEUP); | ||
645 | wm->gpio[4] = wm97xx_reg_read(wm, AC97_GPIO_STATUS); | ||
646 | wm->gpio[5] = wm97xx_reg_read(wm, AC97_MISC_AFE); | ||
647 | |||
648 | /* register our battery device */ | 649 | /* register our battery device */ |
649 | wm->battery_dev = platform_device_alloc("wm97xx-battery", -1); | 650 | wm->battery_dev = platform_device_alloc("wm97xx-battery", -1); |
650 | if (!wm->battery_dev) { | 651 | if (!wm->battery_dev) { |
@@ -801,7 +802,7 @@ void wm97xx_unregister_mach_ops(struct wm97xx *wm) | |||
801 | EXPORT_SYMBOL_GPL(wm97xx_unregister_mach_ops); | 802 | EXPORT_SYMBOL_GPL(wm97xx_unregister_mach_ops); |
802 | 803 | ||
803 | static struct device_driver wm97xx_driver = { | 804 | static struct device_driver wm97xx_driver = { |
804 | .name = "ac97", | 805 | .name = "wm97xx-ts", |
805 | .bus = &ac97_bus_type, | 806 | .bus = &ac97_bus_type, |
806 | .owner = THIS_MODULE, | 807 | .owner = THIS_MODULE, |
807 | .probe = wm97xx_probe, | 808 | .probe = wm97xx_probe, |
diff --git a/drivers/isdn/hysdn/hycapi.c b/drivers/isdn/hysdn/hycapi.c index d3999a8e9f88..53f6ad1235db 100644 --- a/drivers/isdn/hysdn/hycapi.c +++ b/drivers/isdn/hysdn/hycapi.c | |||
@@ -462,11 +462,11 @@ static int hycapi_read_proc(char *page, char **start, off_t off, | |||
462 | default: s = "???"; break; | 462 | default: s = "???"; break; |
463 | } | 463 | } |
464 | len += sprintf(page+len, "%-16s %s\n", "type", s); | 464 | len += sprintf(page+len, "%-16s %s\n", "type", s); |
465 | if ((s = cinfo->version[VER_DRIVER]) != 0) | 465 | if ((s = cinfo->version[VER_DRIVER]) != NULL) |
466 | len += sprintf(page+len, "%-16s %s\n", "ver_driver", s); | 466 | len += sprintf(page+len, "%-16s %s\n", "ver_driver", s); |
467 | if ((s = cinfo->version[VER_CARDTYPE]) != 0) | 467 | if ((s = cinfo->version[VER_CARDTYPE]) != NULL) |
468 | len += sprintf(page+len, "%-16s %s\n", "ver_cardtype", s); | 468 | len += sprintf(page+len, "%-16s %s\n", "ver_cardtype", s); |
469 | if ((s = cinfo->version[VER_SERIAL]) != 0) | 469 | if ((s = cinfo->version[VER_SERIAL]) != NULL) |
470 | len += sprintf(page+len, "%-16s %s\n", "ver_serial", s); | 470 | len += sprintf(page+len, "%-16s %s\n", "ver_serial", s); |
471 | 471 | ||
472 | len += sprintf(page+len, "%-16s %s\n", "cardname", cinfo->cardname); | 472 | len += sprintf(page+len, "%-16s %s\n", "cardname", cinfo->cardname); |
diff --git a/drivers/leds/led-class.c b/drivers/leds/led-class.c index b3c54be74556..559a40861c39 100644 --- a/drivers/leds/led-class.c +++ b/drivers/leds/led-class.c | |||
@@ -103,13 +103,11 @@ int led_classdev_register(struct device *parent, struct led_classdev *led_cdev) | |||
103 | { | 103 | { |
104 | int rc; | 104 | int rc; |
105 | 105 | ||
106 | led_cdev->dev = device_create(leds_class, parent, 0, "%s", | 106 | led_cdev->dev = device_create_drvdata(leds_class, parent, 0, led_cdev, |
107 | led_cdev->name); | 107 | "%s", led_cdev->name); |
108 | if (IS_ERR(led_cdev->dev)) | 108 | if (IS_ERR(led_cdev->dev)) |
109 | return PTR_ERR(led_cdev->dev); | 109 | return PTR_ERR(led_cdev->dev); |
110 | 110 | ||
111 | dev_set_drvdata(led_cdev->dev, led_cdev); | ||
112 | |||
113 | /* register the attributes */ | 111 | /* register the attributes */ |
114 | rc = device_create_file(led_cdev->dev, &dev_attr_brightness); | 112 | rc = device_create_file(led_cdev->dev, &dev_attr_brightness); |
115 | if (rc) | 113 | if (rc) |
diff --git a/drivers/lguest/lguest_device.c b/drivers/lguest/lguest_device.c index 8080249957af..1a8de57289eb 100644 --- a/drivers/lguest/lguest_device.c +++ b/drivers/lguest/lguest_device.c | |||
@@ -20,14 +20,11 @@ | |||
20 | /* The pointer to our (page) of device descriptions. */ | 20 | /* The pointer to our (page) of device descriptions. */ |
21 | static void *lguest_devices; | 21 | static void *lguest_devices; |
22 | 22 | ||
23 | /* Unique numbering for lguest devices. */ | ||
24 | static unsigned int dev_index; | ||
25 | |||
26 | /* For Guests, device memory can be used as normal memory, so we cast away the | 23 | /* For Guests, device memory can be used as normal memory, so we cast away the |
27 | * __iomem to quieten sparse. */ | 24 | * __iomem to quieten sparse. */ |
28 | static inline void *lguest_map(unsigned long phys_addr, unsigned long pages) | 25 | static inline void *lguest_map(unsigned long phys_addr, unsigned long pages) |
29 | { | 26 | { |
30 | return (__force void *)ioremap(phys_addr, PAGE_SIZE*pages); | 27 | return (__force void *)ioremap_cache(phys_addr, PAGE_SIZE*pages); |
31 | } | 28 | } |
32 | 29 | ||
33 | static inline void lguest_unmap(void *addr) | 30 | static inline void lguest_unmap(void *addr) |
@@ -325,8 +322,10 @@ static struct device lguest_root = { | |||
325 | * As Andrew Tridgell says, "Untested code is buggy code". | 322 | * As Andrew Tridgell says, "Untested code is buggy code". |
326 | * | 323 | * |
327 | * It's worth reading this carefully: we start with a pointer to the new device | 324 | * It's worth reading this carefully: we start with a pointer to the new device |
328 | * descriptor in the "lguest_devices" page. */ | 325 | * descriptor in the "lguest_devices" page, and the offset into the device |
329 | static void add_lguest_device(struct lguest_device_desc *d) | 326 | * descriptor page so we can uniquely identify it if things go badly wrong. */ |
327 | static void add_lguest_device(struct lguest_device_desc *d, | ||
328 | unsigned int offset) | ||
330 | { | 329 | { |
331 | struct lguest_device *ldev; | 330 | struct lguest_device *ldev; |
332 | 331 | ||
@@ -334,18 +333,14 @@ static void add_lguest_device(struct lguest_device_desc *d) | |||
334 | * it. */ | 333 | * it. */ |
335 | ldev = kzalloc(sizeof(*ldev), GFP_KERNEL); | 334 | ldev = kzalloc(sizeof(*ldev), GFP_KERNEL); |
336 | if (!ldev) { | 335 | if (!ldev) { |
337 | printk(KERN_EMERG "Cannot allocate lguest dev %u\n", | 336 | printk(KERN_EMERG "Cannot allocate lguest dev %u type %u\n", |
338 | dev_index++); | 337 | offset, d->type); |
339 | return; | 338 | return; |
340 | } | 339 | } |
341 | 340 | ||
342 | /* This devices' parent is the lguest/ dir. */ | 341 | /* This devices' parent is the lguest/ dir. */ |
343 | ldev->vdev.dev.parent = &lguest_root; | 342 | ldev->vdev.dev.parent = &lguest_root; |
344 | /* We have a unique device index thanks to the dev_index counter. */ | 343 | /* We have a unique device index thanks to the dev_index counter. */ |
345 | ldev->vdev.index = dev_index++; | ||
346 | /* The device type comes straight from the descriptor. There's also a | ||
347 | * device vendor field in the virtio_device struct, which we leave as | ||
348 | * 0. */ | ||
349 | ldev->vdev.id.device = d->type; | 344 | ldev->vdev.id.device = d->type; |
350 | /* We have a simple set of routines for querying the device's | 345 | /* We have a simple set of routines for querying the device's |
351 | * configuration information and setting its status. */ | 346 | * configuration information and setting its status. */ |
@@ -357,8 +352,8 @@ static void add_lguest_device(struct lguest_device_desc *d) | |||
357 | * virtio_device and calls device_register(). This makes the bus | 352 | * virtio_device and calls device_register(). This makes the bus |
358 | * infrastructure look for a matching driver. */ | 353 | * infrastructure look for a matching driver. */ |
359 | if (register_virtio_device(&ldev->vdev) != 0) { | 354 | if (register_virtio_device(&ldev->vdev) != 0) { |
360 | printk(KERN_ERR "Failed to register lguest device %u\n", | 355 | printk(KERN_ERR "Failed to register lguest dev %u type %u\n", |
361 | ldev->vdev.index); | 356 | offset, d->type); |
362 | kfree(ldev); | 357 | kfree(ldev); |
363 | } | 358 | } |
364 | } | 359 | } |
@@ -379,7 +374,7 @@ static void scan_devices(void) | |||
379 | break; | 374 | break; |
380 | 375 | ||
381 | printk("Device at %i has size %u\n", i, desc_size(d)); | 376 | printk("Device at %i has size %u\n", i, desc_size(d)); |
382 | add_lguest_device(d); | 377 | add_lguest_device(d, i); |
383 | } | 378 | } |
384 | } | 379 | } |
385 | 380 | ||
diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c index b8b9e44f7f4e..dbaad39020a1 100644 --- a/drivers/macintosh/adb.c +++ b/drivers/macintosh/adb.c | |||
@@ -334,7 +334,7 @@ int __init adb_init(void) | |||
334 | return 0; | 334 | return 0; |
335 | } | 335 | } |
336 | 336 | ||
337 | __initcall(adb_init); | 337 | device_initcall(adb_init); |
338 | 338 | ||
339 | static int | 339 | static int |
340 | do_adb_reset_bus(void) | 340 | do_adb_reset_bus(void) |
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c index c14dacdacfac..b26927ce889c 100644 --- a/drivers/md/bitmap.c +++ b/drivers/md/bitmap.c | |||
@@ -203,17 +203,6 @@ static void bitmap_checkfree(struct bitmap *bitmap, unsigned long page) | |||
203 | * bitmap file handling - read and write the bitmap file and its superblock | 203 | * bitmap file handling - read and write the bitmap file and its superblock |
204 | */ | 204 | */ |
205 | 205 | ||
206 | /* copy the pathname of a file to a buffer */ | ||
207 | char *file_path(struct file *file, char *buf, int count) | ||
208 | { | ||
209 | if (!buf) | ||
210 | return NULL; | ||
211 | |||
212 | buf = d_path(&file->f_path, buf, count); | ||
213 | |||
214 | return IS_ERR(buf) ? NULL : buf; | ||
215 | } | ||
216 | |||
217 | /* | 206 | /* |
218 | * basic page I/O operations | 207 | * basic page I/O operations |
219 | */ | 208 | */ |
@@ -721,11 +710,13 @@ static void bitmap_file_kick(struct bitmap *bitmap) | |||
721 | if (bitmap->file) { | 710 | if (bitmap->file) { |
722 | path = kmalloc(PAGE_SIZE, GFP_KERNEL); | 711 | path = kmalloc(PAGE_SIZE, GFP_KERNEL); |
723 | if (path) | 712 | if (path) |
724 | ptr = file_path(bitmap->file, path, PAGE_SIZE); | 713 | ptr = d_path(&bitmap->file->f_path, path, |
714 | PAGE_SIZE); | ||
715 | |||
725 | 716 | ||
726 | printk(KERN_ALERT | 717 | printk(KERN_ALERT |
727 | "%s: kicking failed bitmap file %s from array!\n", | 718 | "%s: kicking failed bitmap file %s from array!\n", |
728 | bmname(bitmap), ptr ? ptr : ""); | 719 | bmname(bitmap), IS_ERR(ptr) ? "" : ptr); |
729 | 720 | ||
730 | kfree(path); | 721 | kfree(path); |
731 | } else | 722 | } else |
diff --git a/drivers/md/md.c b/drivers/md/md.c index 83eb78b00137..51c19f86ff99 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -74,6 +74,8 @@ static DEFINE_SPINLOCK(pers_lock); | |||
74 | 74 | ||
75 | static void md_print_devices(void); | 75 | static void md_print_devices(void); |
76 | 76 | ||
77 | static DECLARE_WAIT_QUEUE_HEAD(resync_wait); | ||
78 | |||
77 | #define MD_BUG(x...) { printk("md: bug in file %s, line %d\n", __FILE__, __LINE__); md_print_devices(); } | 79 | #define MD_BUG(x...) { printk("md: bug in file %s, line %d\n", __FILE__, __LINE__); md_print_devices(); } |
78 | 80 | ||
79 | /* | 81 | /* |
@@ -3013,6 +3015,36 @@ degraded_show(mddev_t *mddev, char *page) | |||
3013 | static struct md_sysfs_entry md_degraded = __ATTR_RO(degraded); | 3015 | static struct md_sysfs_entry md_degraded = __ATTR_RO(degraded); |
3014 | 3016 | ||
3015 | static ssize_t | 3017 | static ssize_t |
3018 | sync_force_parallel_show(mddev_t *mddev, char *page) | ||
3019 | { | ||
3020 | return sprintf(page, "%d\n", mddev->parallel_resync); | ||
3021 | } | ||
3022 | |||
3023 | static ssize_t | ||
3024 | sync_force_parallel_store(mddev_t *mddev, const char *buf, size_t len) | ||
3025 | { | ||
3026 | long n; | ||
3027 | |||
3028 | if (strict_strtol(buf, 10, &n)) | ||
3029 | return -EINVAL; | ||
3030 | |||
3031 | if (n != 0 && n != 1) | ||
3032 | return -EINVAL; | ||
3033 | |||
3034 | mddev->parallel_resync = n; | ||
3035 | |||
3036 | if (mddev->sync_thread) | ||
3037 | wake_up(&resync_wait); | ||
3038 | |||
3039 | return len; | ||
3040 | } | ||
3041 | |||
3042 | /* force parallel resync, even with shared block devices */ | ||
3043 | static struct md_sysfs_entry md_sync_force_parallel = | ||
3044 | __ATTR(sync_force_parallel, S_IRUGO|S_IWUSR, | ||
3045 | sync_force_parallel_show, sync_force_parallel_store); | ||
3046 | |||
3047 | static ssize_t | ||
3016 | sync_speed_show(mddev_t *mddev, char *page) | 3048 | sync_speed_show(mddev_t *mddev, char *page) |
3017 | { | 3049 | { |
3018 | unsigned long resync, dt, db; | 3050 | unsigned long resync, dt, db; |
@@ -3187,6 +3219,7 @@ static struct attribute *md_redundancy_attrs[] = { | |||
3187 | &md_sync_min.attr, | 3219 | &md_sync_min.attr, |
3188 | &md_sync_max.attr, | 3220 | &md_sync_max.attr, |
3189 | &md_sync_speed.attr, | 3221 | &md_sync_speed.attr, |
3222 | &md_sync_force_parallel.attr, | ||
3190 | &md_sync_completed.attr, | 3223 | &md_sync_completed.attr, |
3191 | &md_max_sync.attr, | 3224 | &md_max_sync.attr, |
3192 | &md_suspend_lo.attr, | 3225 | &md_suspend_lo.attr, |
@@ -3691,6 +3724,8 @@ static int do_md_stop(mddev_t * mddev, int mode) | |||
3691 | 3724 | ||
3692 | module_put(mddev->pers->owner); | 3725 | module_put(mddev->pers->owner); |
3693 | mddev->pers = NULL; | 3726 | mddev->pers = NULL; |
3727 | /* tell userspace to handle 'inactive' */ | ||
3728 | sysfs_notify(&mddev->kobj, NULL, "array_state"); | ||
3694 | 3729 | ||
3695 | set_capacity(disk, 0); | 3730 | set_capacity(disk, 0); |
3696 | mddev->changed = 1; | 3731 | mddev->changed = 1; |
@@ -3987,8 +4022,8 @@ static int get_bitmap_file(mddev_t * mddev, void __user * arg) | |||
3987 | if (!buf) | 4022 | if (!buf) |
3988 | goto out; | 4023 | goto out; |
3989 | 4024 | ||
3990 | ptr = file_path(mddev->bitmap->file, buf, sizeof(file->pathname)); | 4025 | ptr = d_path(&mddev->bitmap->file->f_path, buf, sizeof(file->pathname)); |
3991 | if (!ptr) | 4026 | if (IS_ERR(ptr)) |
3992 | goto out; | 4027 | goto out; |
3993 | 4028 | ||
3994 | strcpy(file->pathname, ptr); | 4029 | strcpy(file->pathname, ptr); |
@@ -5399,7 +5434,7 @@ void md_done_sync(mddev_t *mddev, int blocks, int ok) | |||
5399 | atomic_sub(blocks, &mddev->recovery_active); | 5434 | atomic_sub(blocks, &mddev->recovery_active); |
5400 | wake_up(&mddev->recovery_wait); | 5435 | wake_up(&mddev->recovery_wait); |
5401 | if (!ok) { | 5436 | if (!ok) { |
5402 | set_bit(MD_RECOVERY_ERR, &mddev->recovery); | 5437 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); |
5403 | md_wakeup_thread(mddev->thread); | 5438 | md_wakeup_thread(mddev->thread); |
5404 | // stop recovery, signal do_sync .... | 5439 | // stop recovery, signal do_sync .... |
5405 | } | 5440 | } |
@@ -5435,8 +5470,11 @@ void md_write_start(mddev_t *mddev, struct bio *bi) | |||
5435 | md_wakeup_thread(mddev->thread); | 5470 | md_wakeup_thread(mddev->thread); |
5436 | } | 5471 | } |
5437 | spin_unlock_irq(&mddev->write_lock); | 5472 | spin_unlock_irq(&mddev->write_lock); |
5473 | sysfs_notify(&mddev->kobj, NULL, "array_state"); | ||
5438 | } | 5474 | } |
5439 | wait_event(mddev->sb_wait, mddev->flags==0); | 5475 | wait_event(mddev->sb_wait, |
5476 | !test_bit(MD_CHANGE_CLEAN, &mddev->flags) && | ||
5477 | !test_bit(MD_CHANGE_PENDING, &mddev->flags)); | ||
5440 | } | 5478 | } |
5441 | 5479 | ||
5442 | void md_write_end(mddev_t *mddev) | 5480 | void md_write_end(mddev_t *mddev) |
@@ -5471,13 +5509,17 @@ void md_allow_write(mddev_t *mddev) | |||
5471 | mddev->safemode = 1; | 5509 | mddev->safemode = 1; |
5472 | spin_unlock_irq(&mddev->write_lock); | 5510 | spin_unlock_irq(&mddev->write_lock); |
5473 | md_update_sb(mddev, 0); | 5511 | md_update_sb(mddev, 0); |
5512 | |||
5513 | sysfs_notify(&mddev->kobj, NULL, "array_state"); | ||
5514 | /* wait for the dirty state to be recorded in the metadata */ | ||
5515 | wait_event(mddev->sb_wait, | ||
5516 | !test_bit(MD_CHANGE_CLEAN, &mddev->flags) && | ||
5517 | !test_bit(MD_CHANGE_PENDING, &mddev->flags)); | ||
5474 | } else | 5518 | } else |
5475 | spin_unlock_irq(&mddev->write_lock); | 5519 | spin_unlock_irq(&mddev->write_lock); |
5476 | } | 5520 | } |
5477 | EXPORT_SYMBOL_GPL(md_allow_write); | 5521 | EXPORT_SYMBOL_GPL(md_allow_write); |
5478 | 5522 | ||
5479 | static DECLARE_WAIT_QUEUE_HEAD(resync_wait); | ||
5480 | |||
5481 | #define SYNC_MARKS 10 | 5523 | #define SYNC_MARKS 10 |
5482 | #define SYNC_MARK_STEP (3*HZ) | 5524 | #define SYNC_MARK_STEP (3*HZ) |
5483 | void md_do_sync(mddev_t *mddev) | 5525 | void md_do_sync(mddev_t *mddev) |
@@ -5541,8 +5583,9 @@ void md_do_sync(mddev_t *mddev) | |||
5541 | for_each_mddev(mddev2, tmp) { | 5583 | for_each_mddev(mddev2, tmp) { |
5542 | if (mddev2 == mddev) | 5584 | if (mddev2 == mddev) |
5543 | continue; | 5585 | continue; |
5544 | if (mddev2->curr_resync && | 5586 | if (!mddev->parallel_resync |
5545 | match_mddev_units(mddev,mddev2)) { | 5587 | && mddev2->curr_resync |
5588 | && match_mddev_units(mddev, mddev2)) { | ||
5546 | DEFINE_WAIT(wq); | 5589 | DEFINE_WAIT(wq); |
5547 | if (mddev < mddev2 && mddev->curr_resync == 2) { | 5590 | if (mddev < mddev2 && mddev->curr_resync == 2) { |
5548 | /* arbitrarily yield */ | 5591 | /* arbitrarily yield */ |
@@ -5647,7 +5690,7 @@ void md_do_sync(mddev_t *mddev) | |||
5647 | sectors = mddev->pers->sync_request(mddev, j, &skipped, | 5690 | sectors = mddev->pers->sync_request(mddev, j, &skipped, |
5648 | currspeed < speed_min(mddev)); | 5691 | currspeed < speed_min(mddev)); |
5649 | if (sectors == 0) { | 5692 | if (sectors == 0) { |
5650 | set_bit(MD_RECOVERY_ERR, &mddev->recovery); | 5693 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); |
5651 | goto out; | 5694 | goto out; |
5652 | } | 5695 | } |
5653 | 5696 | ||
@@ -5670,8 +5713,7 @@ void md_do_sync(mddev_t *mddev) | |||
5670 | 5713 | ||
5671 | last_check = io_sectors; | 5714 | last_check = io_sectors; |
5672 | 5715 | ||
5673 | if (test_bit(MD_RECOVERY_INTR, &mddev->recovery) || | 5716 | if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) |
5674 | test_bit(MD_RECOVERY_ERR, &mddev->recovery)) | ||
5675 | break; | 5717 | break; |
5676 | 5718 | ||
5677 | repeat: | 5719 | repeat: |
@@ -5725,8 +5767,7 @@ void md_do_sync(mddev_t *mddev) | |||
5725 | /* tell personality that we are finished */ | 5767 | /* tell personality that we are finished */ |
5726 | mddev->pers->sync_request(mddev, max_sectors, &skipped, 1); | 5768 | mddev->pers->sync_request(mddev, max_sectors, &skipped, 1); |
5727 | 5769 | ||
5728 | if (!test_bit(MD_RECOVERY_ERR, &mddev->recovery) && | 5770 | if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) && |
5729 | !test_bit(MD_RECOVERY_CHECK, &mddev->recovery) && | ||
5730 | mddev->curr_resync > 2) { | 5771 | mddev->curr_resync > 2) { |
5731 | if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { | 5772 | if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { |
5732 | if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { | 5773 | if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { |
@@ -5795,7 +5836,10 @@ static int remove_and_add_spares(mddev_t *mddev) | |||
5795 | } | 5836 | } |
5796 | 5837 | ||
5797 | if (mddev->degraded) { | 5838 | if (mddev->degraded) { |
5798 | rdev_for_each(rdev, rtmp, mddev) | 5839 | rdev_for_each(rdev, rtmp, mddev) { |
5840 | if (rdev->raid_disk >= 0 && | ||
5841 | !test_bit(In_sync, &rdev->flags)) | ||
5842 | spares++; | ||
5799 | if (rdev->raid_disk < 0 | 5843 | if (rdev->raid_disk < 0 |
5800 | && !test_bit(Faulty, &rdev->flags)) { | 5844 | && !test_bit(Faulty, &rdev->flags)) { |
5801 | rdev->recovery_offset = 0; | 5845 | rdev->recovery_offset = 0; |
@@ -5813,6 +5857,7 @@ static int remove_and_add_spares(mddev_t *mddev) | |||
5813 | } else | 5857 | } else |
5814 | break; | 5858 | break; |
5815 | } | 5859 | } |
5860 | } | ||
5816 | } | 5861 | } |
5817 | return spares; | 5862 | return spares; |
5818 | } | 5863 | } |
@@ -5826,7 +5871,7 @@ static int remove_and_add_spares(mddev_t *mddev) | |||
5826 | * to do that as needed. | 5871 | * to do that as needed. |
5827 | * When it is determined that resync is needed, we set MD_RECOVERY_RUNNING in | 5872 | * When it is determined that resync is needed, we set MD_RECOVERY_RUNNING in |
5828 | * "->recovery" and create a thread at ->sync_thread. | 5873 | * "->recovery" and create a thread at ->sync_thread. |
5829 | * When the thread finishes it sets MD_RECOVERY_DONE (and might set MD_RECOVERY_ERR) | 5874 | * When the thread finishes it sets MD_RECOVERY_DONE |
5830 | * and wakeups up this thread which will reap the thread and finish up. | 5875 | * and wakeups up this thread which will reap the thread and finish up. |
5831 | * This thread also removes any faulty devices (with nr_pending == 0). | 5876 | * This thread also removes any faulty devices (with nr_pending == 0). |
5832 | * | 5877 | * |
@@ -5901,8 +5946,7 @@ void md_check_recovery(mddev_t *mddev) | |||
5901 | /* resync has finished, collect result */ | 5946 | /* resync has finished, collect result */ |
5902 | md_unregister_thread(mddev->sync_thread); | 5947 | md_unregister_thread(mddev->sync_thread); |
5903 | mddev->sync_thread = NULL; | 5948 | mddev->sync_thread = NULL; |
5904 | if (!test_bit(MD_RECOVERY_ERR, &mddev->recovery) && | 5949 | if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { |
5905 | !test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { | ||
5906 | /* success...*/ | 5950 | /* success...*/ |
5907 | /* activate any spares */ | 5951 | /* activate any spares */ |
5908 | mddev->pers->spare_active(mddev); | 5952 | mddev->pers->spare_active(mddev); |
@@ -5926,7 +5970,6 @@ void md_check_recovery(mddev_t *mddev) | |||
5926 | * might be left set | 5970 | * might be left set |
5927 | */ | 5971 | */ |
5928 | clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); | 5972 | clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); |
5929 | clear_bit(MD_RECOVERY_ERR, &mddev->recovery); | ||
5930 | clear_bit(MD_RECOVERY_INTR, &mddev->recovery); | 5973 | clear_bit(MD_RECOVERY_INTR, &mddev->recovery); |
5931 | clear_bit(MD_RECOVERY_DONE, &mddev->recovery); | 5974 | clear_bit(MD_RECOVERY_DONE, &mddev->recovery); |
5932 | 5975 | ||
diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c index 4f4d1f383842..e968116e0de9 100644 --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c | |||
@@ -327,7 +327,8 @@ static int multipath_remove_disk(mddev_t *mddev, int number) | |||
327 | if (rdev) { | 327 | if (rdev) { |
328 | if (test_bit(In_sync, &rdev->flags) || | 328 | if (test_bit(In_sync, &rdev->flags) || |
329 | atomic_read(&rdev->nr_pending)) { | 329 | atomic_read(&rdev->nr_pending)) { |
330 | printk(KERN_ERR "hot-remove-disk, slot %d is identified" " but is still operational!\n", number); | 330 | printk(KERN_ERR "hot-remove-disk, slot %d is identified" |
331 | " but is still operational!\n", number); | ||
331 | err = -EBUSY; | 332 | err = -EBUSY; |
332 | goto abort; | 333 | goto abort; |
333 | } | 334 | } |
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index ac409b7d83f5..c610b947218a 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
@@ -773,7 +773,7 @@ static int make_request(struct request_queue *q, struct bio * bio) | |||
773 | r1bio_t *r1_bio; | 773 | r1bio_t *r1_bio; |
774 | struct bio *read_bio; | 774 | struct bio *read_bio; |
775 | int i, targets = 0, disks; | 775 | int i, targets = 0, disks; |
776 | struct bitmap *bitmap = mddev->bitmap; | 776 | struct bitmap *bitmap; |
777 | unsigned long flags; | 777 | unsigned long flags; |
778 | struct bio_list bl; | 778 | struct bio_list bl; |
779 | struct page **behind_pages = NULL; | 779 | struct page **behind_pages = NULL; |
@@ -802,6 +802,8 @@ static int make_request(struct request_queue *q, struct bio * bio) | |||
802 | 802 | ||
803 | wait_barrier(conf); | 803 | wait_barrier(conf); |
804 | 804 | ||
805 | bitmap = mddev->bitmap; | ||
806 | |||
805 | disk_stat_inc(mddev->gendisk, ios[rw]); | 807 | disk_stat_inc(mddev->gendisk, ios[rw]); |
806 | disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio)); | 808 | disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio)); |
807 | 809 | ||
@@ -1025,7 +1027,7 @@ static void error(mddev_t *mddev, mdk_rdev_t *rdev) | |||
1025 | /* | 1027 | /* |
1026 | * if recovery is running, make sure it aborts. | 1028 | * if recovery is running, make sure it aborts. |
1027 | */ | 1029 | */ |
1028 | set_bit(MD_RECOVERY_ERR, &mddev->recovery); | 1030 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); |
1029 | } else | 1031 | } else |
1030 | set_bit(Faulty, &rdev->flags); | 1032 | set_bit(Faulty, &rdev->flags); |
1031 | set_bit(MD_CHANGE_DEVS, &mddev->flags); | 1033 | set_bit(MD_CHANGE_DEVS, &mddev->flags); |
@@ -1146,6 +1148,14 @@ static int raid1_remove_disk(mddev_t *mddev, int number) | |||
1146 | err = -EBUSY; | 1148 | err = -EBUSY; |
1147 | goto abort; | 1149 | goto abort; |
1148 | } | 1150 | } |
1151 | /* Only remove non-faulty devices is recovery | ||
1152 | * is not possible. | ||
1153 | */ | ||
1154 | if (!test_bit(Faulty, &rdev->flags) && | ||
1155 | mddev->degraded < conf->raid_disks) { | ||
1156 | err = -EBUSY; | ||
1157 | goto abort; | ||
1158 | } | ||
1149 | p->rdev = NULL; | 1159 | p->rdev = NULL; |
1150 | synchronize_rcu(); | 1160 | synchronize_rcu(); |
1151 | if (atomic_read(&rdev->nr_pending)) { | 1161 | if (atomic_read(&rdev->nr_pending)) { |
@@ -1282,6 +1292,7 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio) | |||
1282 | rdev_dec_pending(conf->mirrors[i].rdev, mddev); | 1292 | rdev_dec_pending(conf->mirrors[i].rdev, mddev); |
1283 | } else { | 1293 | } else { |
1284 | /* fixup the bio for reuse */ | 1294 | /* fixup the bio for reuse */ |
1295 | int size; | ||
1285 | sbio->bi_vcnt = vcnt; | 1296 | sbio->bi_vcnt = vcnt; |
1286 | sbio->bi_size = r1_bio->sectors << 9; | 1297 | sbio->bi_size = r1_bio->sectors << 9; |
1287 | sbio->bi_idx = 0; | 1298 | sbio->bi_idx = 0; |
@@ -1295,10 +1306,20 @@ static void sync_request_write(mddev_t *mddev, r1bio_t *r1_bio) | |||
1295 | sbio->bi_sector = r1_bio->sector + | 1306 | sbio->bi_sector = r1_bio->sector + |
1296 | conf->mirrors[i].rdev->data_offset; | 1307 | conf->mirrors[i].rdev->data_offset; |
1297 | sbio->bi_bdev = conf->mirrors[i].rdev->bdev; | 1308 | sbio->bi_bdev = conf->mirrors[i].rdev->bdev; |
1298 | for (j = 0; j < vcnt ; j++) | 1309 | size = sbio->bi_size; |
1299 | memcpy(page_address(sbio->bi_io_vec[j].bv_page), | 1310 | for (j = 0; j < vcnt ; j++) { |
1311 | struct bio_vec *bi; | ||
1312 | bi = &sbio->bi_io_vec[j]; | ||
1313 | bi->bv_offset = 0; | ||
1314 | if (size > PAGE_SIZE) | ||
1315 | bi->bv_len = PAGE_SIZE; | ||
1316 | else | ||
1317 | bi->bv_len = size; | ||
1318 | size -= PAGE_SIZE; | ||
1319 | memcpy(page_address(bi->bv_page), | ||
1300 | page_address(pbio->bi_io_vec[j].bv_page), | 1320 | page_address(pbio->bi_io_vec[j].bv_page), |
1301 | PAGE_SIZE); | 1321 | PAGE_SIZE); |
1322 | } | ||
1302 | 1323 | ||
1303 | } | 1324 | } |
1304 | } | 1325 | } |
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 8536ede1e712..1de17da34a95 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
@@ -1020,7 +1020,7 @@ static void error(mddev_t *mddev, mdk_rdev_t *rdev) | |||
1020 | /* | 1020 | /* |
1021 | * if recovery is running, make sure it aborts. | 1021 | * if recovery is running, make sure it aborts. |
1022 | */ | 1022 | */ |
1023 | set_bit(MD_RECOVERY_ERR, &mddev->recovery); | 1023 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); |
1024 | } | 1024 | } |
1025 | set_bit(Faulty, &rdev->flags); | 1025 | set_bit(Faulty, &rdev->flags); |
1026 | set_bit(MD_CHANGE_DEVS, &mddev->flags); | 1026 | set_bit(MD_CHANGE_DEVS, &mddev->flags); |
@@ -1171,6 +1171,14 @@ static int raid10_remove_disk(mddev_t *mddev, int number) | |||
1171 | err = -EBUSY; | 1171 | err = -EBUSY; |
1172 | goto abort; | 1172 | goto abort; |
1173 | } | 1173 | } |
1174 | /* Only remove faulty devices in recovery | ||
1175 | * is not possible. | ||
1176 | */ | ||
1177 | if (!test_bit(Faulty, &rdev->flags) && | ||
1178 | enough(conf)) { | ||
1179 | err = -EBUSY; | ||
1180 | goto abort; | ||
1181 | } | ||
1174 | p->rdev = NULL; | 1182 | p->rdev = NULL; |
1175 | synchronize_rcu(); | 1183 | synchronize_rcu(); |
1176 | if (atomic_read(&rdev->nr_pending)) { | 1184 | if (atomic_read(&rdev->nr_pending)) { |
@@ -1237,6 +1245,7 @@ static void end_sync_write(struct bio *bio, int error) | |||
1237 | 1245 | ||
1238 | if (!uptodate) | 1246 | if (!uptodate) |
1239 | md_error(mddev, conf->mirrors[d].rdev); | 1247 | md_error(mddev, conf->mirrors[d].rdev); |
1248 | |||
1240 | update_head_pos(i, r10_bio); | 1249 | update_head_pos(i, r10_bio); |
1241 | 1250 | ||
1242 | while (atomic_dec_and_test(&r10_bio->remaining)) { | 1251 | while (atomic_dec_and_test(&r10_bio->remaining)) { |
@@ -1844,7 +1853,8 @@ static sector_t sync_request(mddev_t *mddev, sector_t sector_nr, int *skipped, i | |||
1844 | if (rb2) | 1853 | if (rb2) |
1845 | atomic_dec(&rb2->remaining); | 1854 | atomic_dec(&rb2->remaining); |
1846 | r10_bio = rb2; | 1855 | r10_bio = rb2; |
1847 | if (!test_and_set_bit(MD_RECOVERY_ERR, &mddev->recovery)) | 1856 | if (!test_and_set_bit(MD_RECOVERY_INTR, |
1857 | &mddev->recovery)) | ||
1848 | printk(KERN_INFO "raid10: %s: insufficient working devices for recovery.\n", | 1858 | printk(KERN_INFO "raid10: %s: insufficient working devices for recovery.\n", |
1849 | mdname(mddev)); | 1859 | mdname(mddev)); |
1850 | break; | 1860 | break; |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 93fde48c0f42..425958a76b84 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -94,6 +94,8 @@ | |||
94 | #define __inline__ | 94 | #define __inline__ |
95 | #endif | 95 | #endif |
96 | 96 | ||
97 | #define printk_rl(args...) ((void) (printk_ratelimit() && printk(args))) | ||
98 | |||
97 | #if !RAID6_USE_EMPTY_ZERO_PAGE | 99 | #if !RAID6_USE_EMPTY_ZERO_PAGE |
98 | /* In .bss so it's zeroed */ | 100 | /* In .bss so it's zeroed */ |
99 | const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(256))); | 101 | const char raid6_empty_zero_page[PAGE_SIZE] __attribute__((aligned(256))); |
@@ -1143,10 +1145,12 @@ static void raid5_end_read_request(struct bio * bi, int error) | |||
1143 | set_bit(R5_UPTODATE, &sh->dev[i].flags); | 1145 | set_bit(R5_UPTODATE, &sh->dev[i].flags); |
1144 | if (test_bit(R5_ReadError, &sh->dev[i].flags)) { | 1146 | if (test_bit(R5_ReadError, &sh->dev[i].flags)) { |
1145 | rdev = conf->disks[i].rdev; | 1147 | rdev = conf->disks[i].rdev; |
1146 | printk(KERN_INFO "raid5:%s: read error corrected (%lu sectors at %llu on %s)\n", | 1148 | printk_rl(KERN_INFO "raid5:%s: read error corrected" |
1147 | mdname(conf->mddev), STRIPE_SECTORS, | 1149 | " (%lu sectors at %llu on %s)\n", |
1148 | (unsigned long long)(sh->sector + rdev->data_offset), | 1150 | mdname(conf->mddev), STRIPE_SECTORS, |
1149 | bdevname(rdev->bdev, b)); | 1151 | (unsigned long long)(sh->sector |
1152 | + rdev->data_offset), | ||
1153 | bdevname(rdev->bdev, b)); | ||
1150 | clear_bit(R5_ReadError, &sh->dev[i].flags); | 1154 | clear_bit(R5_ReadError, &sh->dev[i].flags); |
1151 | clear_bit(R5_ReWrite, &sh->dev[i].flags); | 1155 | clear_bit(R5_ReWrite, &sh->dev[i].flags); |
1152 | } | 1156 | } |
@@ -1160,16 +1164,22 @@ static void raid5_end_read_request(struct bio * bi, int error) | |||
1160 | clear_bit(R5_UPTODATE, &sh->dev[i].flags); | 1164 | clear_bit(R5_UPTODATE, &sh->dev[i].flags); |
1161 | atomic_inc(&rdev->read_errors); | 1165 | atomic_inc(&rdev->read_errors); |
1162 | if (conf->mddev->degraded) | 1166 | if (conf->mddev->degraded) |
1163 | printk(KERN_WARNING "raid5:%s: read error not correctable (sector %llu on %s).\n", | 1167 | printk_rl(KERN_WARNING |
1164 | mdname(conf->mddev), | 1168 | "raid5:%s: read error not correctable " |
1165 | (unsigned long long)(sh->sector + rdev->data_offset), | 1169 | "(sector %llu on %s).\n", |
1166 | bdn); | 1170 | mdname(conf->mddev), |
1171 | (unsigned long long)(sh->sector | ||
1172 | + rdev->data_offset), | ||
1173 | bdn); | ||
1167 | else if (test_bit(R5_ReWrite, &sh->dev[i].flags)) | 1174 | else if (test_bit(R5_ReWrite, &sh->dev[i].flags)) |
1168 | /* Oh, no!!! */ | 1175 | /* Oh, no!!! */ |
1169 | printk(KERN_WARNING "raid5:%s: read error NOT corrected!! (sector %llu on %s).\n", | 1176 | printk_rl(KERN_WARNING |
1170 | mdname(conf->mddev), | 1177 | "raid5:%s: read error NOT corrected!! " |
1171 | (unsigned long long)(sh->sector + rdev->data_offset), | 1178 | "(sector %llu on %s).\n", |
1172 | bdn); | 1179 | mdname(conf->mddev), |
1180 | (unsigned long long)(sh->sector | ||
1181 | + rdev->data_offset), | ||
1182 | bdn); | ||
1173 | else if (atomic_read(&rdev->read_errors) | 1183 | else if (atomic_read(&rdev->read_errors) |
1174 | > conf->max_nr_stripes) | 1184 | > conf->max_nr_stripes) |
1175 | printk(KERN_WARNING | 1185 | printk(KERN_WARNING |
@@ -1258,7 +1268,7 @@ static void error(mddev_t *mddev, mdk_rdev_t *rdev) | |||
1258 | /* | 1268 | /* |
1259 | * if recovery was running, make sure it aborts. | 1269 | * if recovery was running, make sure it aborts. |
1260 | */ | 1270 | */ |
1261 | set_bit(MD_RECOVERY_ERR, &mddev->recovery); | 1271 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); |
1262 | } | 1272 | } |
1263 | set_bit(Faulty, &rdev->flags); | 1273 | set_bit(Faulty, &rdev->flags); |
1264 | printk (KERN_ALERT | 1274 | printk (KERN_ALERT |
@@ -4564,6 +4574,14 @@ static int raid5_remove_disk(mddev_t *mddev, int number) | |||
4564 | err = -EBUSY; | 4574 | err = -EBUSY; |
4565 | goto abort; | 4575 | goto abort; |
4566 | } | 4576 | } |
4577 | /* Only remove non-faulty devices if recovery | ||
4578 | * isn't possible. | ||
4579 | */ | ||
4580 | if (!test_bit(Faulty, &rdev->flags) && | ||
4581 | mddev->degraded <= conf->max_degraded) { | ||
4582 | err = -EBUSY; | ||
4583 | goto abort; | ||
4584 | } | ||
4567 | p->rdev = NULL; | 4585 | p->rdev = NULL; |
4568 | synchronize_rcu(); | 4586 | synchronize_rcu(); |
4569 | if (atomic_read(&rdev->nr_pending)) { | 4587 | if (atomic_read(&rdev->nr_pending)) { |
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 89d8d37838a3..3b26fbd3e558 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig | |||
@@ -901,7 +901,7 @@ endif # V4L_USB_DRIVERS | |||
901 | 901 | ||
902 | config SOC_CAMERA | 902 | config SOC_CAMERA |
903 | tristate "SoC camera support" | 903 | tristate "SoC camera support" |
904 | depends on VIDEO_V4L2 | 904 | depends on VIDEO_V4L2 && HAS_DMA |
905 | select VIDEOBUF_DMA_SG | 905 | select VIDEOBUF_DMA_SG |
906 | help | 906 | help |
907 | SoC Camera is a common API to several cameras, not connecting | 907 | SoC Camera is a common API to several cameras, not connecting |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index 2ca3e9cfb2bb..0165aac533bf 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c | |||
@@ -2613,7 +2613,7 @@ static int vidiocgmbuf(struct file *file, void *priv, struct video_mbuf *mbuf) | |||
2613 | struct bttv_fh *fh = priv; | 2613 | struct bttv_fh *fh = priv; |
2614 | 2614 | ||
2615 | mutex_lock(&fh->cap.vb_lock); | 2615 | mutex_lock(&fh->cap.vb_lock); |
2616 | retval = videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize, | 2616 | retval = __videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize, |
2617 | V4L2_MEMORY_MMAP); | 2617 | V4L2_MEMORY_MMAP); |
2618 | if (retval < 0) { | 2618 | if (retval < 0) { |
2619 | mutex_unlock(&fh->cap.vb_lock); | 2619 | mutex_unlock(&fh->cap.vb_lock); |
diff --git a/drivers/media/video/cs5345.c b/drivers/media/video/cs5345.c index 2a429f9e32cd..03411503457e 100644 --- a/drivers/media/video/cs5345.c +++ b/drivers/media/video/cs5345.c | |||
@@ -160,10 +160,17 @@ static int cs5345_probe(struct i2c_client *client, | |||
160 | 160 | ||
161 | /* ----------------------------------------------------------------------- */ | 161 | /* ----------------------------------------------------------------------- */ |
162 | 162 | ||
163 | static const struct i2c_device_id cs5345_id[] = { | ||
164 | { "cs5345", 0 }, | ||
165 | { } | ||
166 | }; | ||
167 | MODULE_DEVICE_TABLE(i2c, cs5345_id); | ||
168 | |||
163 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 169 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
164 | .name = "cs5345", | 170 | .name = "cs5345", |
165 | .driverid = I2C_DRIVERID_CS5345, | 171 | .driverid = I2C_DRIVERID_CS5345, |
166 | .command = cs5345_command, | 172 | .command = cs5345_command, |
167 | .probe = cs5345_probe, | 173 | .probe = cs5345_probe, |
174 | .id_table = cs5345_id, | ||
168 | }; | 175 | }; |
169 | 176 | ||
diff --git a/drivers/media/video/cs53l32a.c b/drivers/media/video/cs53l32a.c index 2dfd0afc62db..d965af860ab2 100644 --- a/drivers/media/video/cs53l32a.c +++ b/drivers/media/video/cs53l32a.c | |||
@@ -144,7 +144,8 @@ static int cs53l32a_probe(struct i2c_client *client, | |||
144 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | 144 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) |
145 | return -EIO; | 145 | return -EIO; |
146 | 146 | ||
147 | snprintf(client->name, sizeof(client->name) - 1, "cs53l32a"); | 147 | if (!id) |
148 | strlcpy(client->name, "cs53l32a", sizeof(client->name)); | ||
148 | 149 | ||
149 | v4l_info(client, "chip found @ 0x%x (%s)\n", | 150 | v4l_info(client, "chip found @ 0x%x (%s)\n", |
150 | client->addr << 1, client->adapter->name); | 151 | client->addr << 1, client->adapter->name); |
@@ -175,10 +176,17 @@ static int cs53l32a_probe(struct i2c_client *client, | |||
175 | return 0; | 176 | return 0; |
176 | } | 177 | } |
177 | 178 | ||
179 | static const struct i2c_device_id cs53l32a_id[] = { | ||
180 | { "cs53l32a", 0 }, | ||
181 | { } | ||
182 | }; | ||
183 | MODULE_DEVICE_TABLE(i2c, cs53l32a_id); | ||
184 | |||
178 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 185 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
179 | .name = "cs53l32a", | 186 | .name = "cs53l32a", |
180 | .driverid = I2C_DRIVERID_CS53L32A, | 187 | .driverid = I2C_DRIVERID_CS53L32A, |
181 | .command = cs53l32a_command, | 188 | .command = cs53l32a_command, |
182 | .probe = cs53l32a_probe, | 189 | .probe = cs53l32a_probe, |
190 | .id_table = cs53l32a_id, | ||
183 | }; | 191 | }; |
184 | 192 | ||
diff --git a/drivers/media/video/cx18/cx18-i2c.c b/drivers/media/video/cx18/cx18-i2c.c index 4f08a4058d1a..1d6c51a75313 100644 --- a/drivers/media/video/cx18/cx18-i2c.c +++ b/drivers/media/video/cx18/cx18-i2c.c | |||
@@ -74,7 +74,7 @@ static const u8 hw_bus[] = { | |||
74 | }; | 74 | }; |
75 | 75 | ||
76 | /* This array should match the CX18_HW_ defines */ | 76 | /* This array should match the CX18_HW_ defines */ |
77 | static const char * const hw_drivernames[] = { | 77 | static const char * const hw_devicenames[] = { |
78 | "tuner", | 78 | "tuner", |
79 | "tveeprom", | 79 | "tveeprom", |
80 | "cs5345", | 80 | "cs5345", |
@@ -95,8 +95,7 @@ int cx18_i2c_register(struct cx18 *cx, unsigned idx) | |||
95 | id = hw_driverids[idx]; | 95 | id = hw_driverids[idx]; |
96 | bus = hw_bus[idx]; | 96 | bus = hw_bus[idx]; |
97 | memset(&info, 0, sizeof(info)); | 97 | memset(&info, 0, sizeof(info)); |
98 | strlcpy(info.driver_name, hw_drivernames[idx], | 98 | strlcpy(info.type, hw_devicenames[idx], sizeof(info.type)); |
99 | sizeof(info.driver_name)); | ||
100 | info.addr = hw_addrs[idx]; | 99 | info.addr = hw_addrs[idx]; |
101 | for (i = 0; i < I2C_CLIENTS_MAX; i++) | 100 | for (i = 0; i < I2C_CLIENTS_MAX; i++) |
102 | if (cx->i2c_clients[i] == NULL) | 101 | if (cx->i2c_clients[i] == NULL) |
@@ -279,7 +278,7 @@ static const char *cx18_i2c_id_name(u32 id) | |||
279 | 278 | ||
280 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) | 279 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) |
281 | if (hw_driverids[i] == id) | 280 | if (hw_driverids[i] == id) |
282 | return hw_drivernames[i]; | 281 | return hw_devicenames[i]; |
283 | return "unknown device"; | 282 | return "unknown device"; |
284 | } | 283 | } |
285 | 284 | ||
@@ -290,7 +289,7 @@ static const char *cx18_i2c_hw_name(u32 hw) | |||
290 | 289 | ||
291 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) | 290 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) |
292 | if (1 << i == hw) | 291 | if (1 << i == hw) |
293 | return hw_drivernames[i]; | 292 | return hw_devicenames[i]; |
294 | return "unknown device"; | 293 | return "unknown device"; |
295 | } | 294 | } |
296 | 295 | ||
diff --git a/drivers/media/video/cx25840/cx25840-core.c b/drivers/media/video/cx25840/cx25840-core.c index 88823810497c..607efdcd22f8 100644 --- a/drivers/media/video/cx25840/cx25840-core.c +++ b/drivers/media/video/cx25840/cx25840-core.c | |||
@@ -1284,10 +1284,17 @@ static int cx25840_remove(struct i2c_client *client) | |||
1284 | return 0; | 1284 | return 0; |
1285 | } | 1285 | } |
1286 | 1286 | ||
1287 | static const struct i2c_device_id cx25840_id[] = { | ||
1288 | { "cx25840", 0 }, | ||
1289 | { } | ||
1290 | }; | ||
1291 | MODULE_DEVICE_TABLE(i2c, cx25840_id); | ||
1292 | |||
1287 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 1293 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
1288 | .name = "cx25840", | 1294 | .name = "cx25840", |
1289 | .driverid = I2C_DRIVERID_CX25840, | 1295 | .driverid = I2C_DRIVERID_CX25840, |
1290 | .command = cx25840_command, | 1296 | .command = cx25840_command, |
1291 | .probe = cx25840_probe, | 1297 | .probe = cx25840_probe, |
1292 | .remove = cx25840_remove, | 1298 | .remove = cx25840_remove, |
1299 | .id_table = cx25840_id, | ||
1293 | }; | 1300 | }; |
diff --git a/drivers/media/video/et61x251/et61x251_core.c b/drivers/media/video/et61x251/et61x251_core.c index 5e749c528a62..15d037ae25c5 100644 --- a/drivers/media/video/et61x251/et61x251_core.c +++ b/drivers/media/video/et61x251/et61x251_core.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <linux/mm.h> | 34 | #include <linux/mm.h> |
35 | #include <linux/vmalloc.h> | 35 | #include <linux/vmalloc.h> |
36 | #include <linux/page-flags.h> | 36 | #include <linux/page-flags.h> |
37 | #include <linux/byteorder/generic.h> | 37 | #include <asm/byteorder.h> |
38 | #include <asm/page.h> | 38 | #include <asm/page.h> |
39 | #include <asm/uaccess.h> | 39 | #include <asm/uaccess.h> |
40 | 40 | ||
diff --git a/drivers/media/video/ivtv/ivtv-i2c.c b/drivers/media/video/ivtv/ivtv-i2c.c index 771adf47e944..32129f3ea836 100644 --- a/drivers/media/video/ivtv/ivtv-i2c.c +++ b/drivers/media/video/ivtv/ivtv-i2c.c | |||
@@ -136,7 +136,7 @@ static const u8 hw_addrs[] = { | |||
136 | }; | 136 | }; |
137 | 137 | ||
138 | /* This array should match the IVTV_HW_ defines */ | 138 | /* This array should match the IVTV_HW_ defines */ |
139 | static const char * const hw_drivernames[] = { | 139 | static const char * const hw_devicenames[] = { |
140 | "cx25840", | 140 | "cx25840", |
141 | "saa7115", | 141 | "saa7115", |
142 | "saa7127", | 142 | "saa7127", |
@@ -145,7 +145,7 @@ static const char * const hw_drivernames[] = { | |||
145 | "wm8775", | 145 | "wm8775", |
146 | "cs53l32a", | 146 | "cs53l32a", |
147 | "tveeprom", | 147 | "tveeprom", |
148 | "saa7115", | 148 | "saa7114", |
149 | "upd64031a", | 149 | "upd64031a", |
150 | "upd64083", | 150 | "upd64083", |
151 | "saa717x", | 151 | "saa717x", |
@@ -167,8 +167,7 @@ int ivtv_i2c_register(struct ivtv *itv, unsigned idx) | |||
167 | return -1; | 167 | return -1; |
168 | id = hw_driverids[idx]; | 168 | id = hw_driverids[idx]; |
169 | memset(&info, 0, sizeof(info)); | 169 | memset(&info, 0, sizeof(info)); |
170 | strlcpy(info.driver_name, hw_drivernames[idx], | 170 | strlcpy(info.type, hw_devicenames[idx], sizeof(info.type)); |
171 | sizeof(info.driver_name)); | ||
172 | info.addr = hw_addrs[idx]; | 171 | info.addr = hw_addrs[idx]; |
173 | for (i = 0; itv->i2c_clients[i] && i < I2C_CLIENTS_MAX; i++) {} | 172 | for (i = 0; itv->i2c_clients[i] && i < I2C_CLIENTS_MAX; i++) {} |
174 | 173 | ||
@@ -657,7 +656,7 @@ static const char *ivtv_i2c_id_name(u32 id) | |||
657 | 656 | ||
658 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) | 657 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) |
659 | if (hw_driverids[i] == id) | 658 | if (hw_driverids[i] == id) |
660 | return hw_drivernames[i]; | 659 | return hw_devicenames[i]; |
661 | return "unknown device"; | 660 | return "unknown device"; |
662 | } | 661 | } |
663 | 662 | ||
@@ -668,7 +667,7 @@ static const char *ivtv_i2c_hw_name(u32 hw) | |||
668 | 667 | ||
669 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) | 668 | for (i = 0; i < ARRAY_SIZE(hw_driverids); i++) |
670 | if (1 << i == hw) | 669 | if (1 << i == hw) |
671 | return hw_drivernames[i]; | 670 | return hw_devicenames[i]; |
672 | return "unknown device"; | 671 | return "unknown device"; |
673 | } | 672 | } |
674 | 673 | ||
@@ -770,7 +769,7 @@ int init_ivtv_i2c(struct ivtv *itv) | |||
770 | * same size and GPIO must be the last entry. | 769 | * same size and GPIO must be the last entry. |
771 | */ | 770 | */ |
772 | if (ARRAY_SIZE(hw_driverids) != ARRAY_SIZE(hw_addrs) || | 771 | if (ARRAY_SIZE(hw_driverids) != ARRAY_SIZE(hw_addrs) || |
773 | ARRAY_SIZE(hw_drivernames) != ARRAY_SIZE(hw_addrs) || | 772 | ARRAY_SIZE(hw_devicenames) != ARRAY_SIZE(hw_addrs) || |
774 | IVTV_HW_GPIO != (1 << (ARRAY_SIZE(hw_addrs) - 1)) || | 773 | IVTV_HW_GPIO != (1 << (ARRAY_SIZE(hw_addrs) - 1)) || |
775 | hw_driverids[ARRAY_SIZE(hw_addrs) - 1]) { | 774 | hw_driverids[ARRAY_SIZE(hw_addrs) - 1]) { |
776 | IVTV_ERR("Mismatched I2C hardware arrays\n"); | 775 | IVTV_ERR("Mismatched I2C hardware arrays\n"); |
diff --git a/drivers/media/video/m52790.c b/drivers/media/video/m52790.c index 5b9dfa2c51b4..8e0160d275ca 100644 --- a/drivers/media/video/m52790.c +++ b/drivers/media/video/m52790.c | |||
@@ -135,8 +135,6 @@ static int m52790_probe(struct i2c_client *client, | |||
135 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | 135 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) |
136 | return -EIO; | 136 | return -EIO; |
137 | 137 | ||
138 | snprintf(client->name, sizeof(client->name) - 1, "m52790"); | ||
139 | |||
140 | v4l_info(client, "chip found @ 0x%x (%s)\n", | 138 | v4l_info(client, "chip found @ 0x%x (%s)\n", |
141 | client->addr << 1, client->adapter->name); | 139 | client->addr << 1, client->adapter->name); |
142 | 140 | ||
@@ -159,11 +157,18 @@ static int m52790_remove(struct i2c_client *client) | |||
159 | 157 | ||
160 | /* ----------------------------------------------------------------------- */ | 158 | /* ----------------------------------------------------------------------- */ |
161 | 159 | ||
160 | static const struct i2c_device_id m52790_id[] = { | ||
161 | { "m52790", 0 }, | ||
162 | { } | ||
163 | }; | ||
164 | MODULE_DEVICE_TABLE(i2c, m52790_id); | ||
165 | |||
162 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 166 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
163 | .name = "m52790", | 167 | .name = "m52790", |
164 | .driverid = I2C_DRIVERID_M52790, | 168 | .driverid = I2C_DRIVERID_M52790, |
165 | .command = m52790_command, | 169 | .command = m52790_command, |
166 | .probe = m52790_probe, | 170 | .probe = m52790_probe, |
167 | .remove = m52790_remove, | 171 | .remove = m52790_remove, |
172 | .id_table = m52790_id, | ||
168 | }; | 173 | }; |
169 | 174 | ||
diff --git a/drivers/media/video/msp3400-driver.c b/drivers/media/video/msp3400-driver.c index e6273162e123..310dbaba55ff 100644 --- a/drivers/media/video/msp3400-driver.c +++ b/drivers/media/video/msp3400-driver.c | |||
@@ -815,7 +815,8 @@ static int msp_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
815 | int msp_product, msp_prod_hi, msp_prod_lo; | 815 | int msp_product, msp_prod_hi, msp_prod_lo; |
816 | int msp_rom; | 816 | int msp_rom; |
817 | 817 | ||
818 | snprintf(client->name, sizeof(client->name) - 1, "msp3400"); | 818 | if (!id) |
819 | strlcpy(client->name, "msp3400", sizeof(client->name)); | ||
819 | 820 | ||
820 | if (msp_reset(client) == -1) { | 821 | if (msp_reset(client) == -1) { |
821 | v4l_dbg(1, msp_debug, client, "msp3400 not found\n"); | 822 | v4l_dbg(1, msp_debug, client, "msp3400 not found\n"); |
@@ -864,9 +865,6 @@ static int msp_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
864 | msp_revision = (state->rev1 & 0x0f) + '@'; | 865 | msp_revision = (state->rev1 & 0x0f) + '@'; |
865 | msp_hard = ((state->rev1 >> 8) & 0xff) + '@'; | 866 | msp_hard = ((state->rev1 >> 8) & 0xff) + '@'; |
866 | msp_rom = state->rev2 & 0x1f; | 867 | msp_rom = state->rev2 & 0x1f; |
867 | snprintf(client->name, sizeof(client->name), "MSP%d4%02d%c-%c%d", | ||
868 | msp_family, msp_product, | ||
869 | msp_revision, msp_hard, msp_rom); | ||
870 | /* Rev B=2, C=3, D=4, G=7 */ | 868 | /* Rev B=2, C=3, D=4, G=7 */ |
871 | state->ident = msp_family * 10000 + 4000 + msp_product * 10 + | 869 | state->ident = msp_family * 10000 + 4000 + msp_product * 10 + |
872 | msp_revision - '@'; | 870 | msp_revision - '@'; |
@@ -931,7 +929,9 @@ static int msp_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
931 | } | 929 | } |
932 | 930 | ||
933 | /* hello world :-) */ | 931 | /* hello world :-) */ |
934 | v4l_info(client, "%s found @ 0x%x (%s)\n", client->name, | 932 | v4l_info(client, "MSP%d4%02d%c-%c%d found @ 0x%x (%s)\n", |
933 | msp_family, msp_product, | ||
934 | msp_revision, msp_hard, msp_rom, | ||
935 | client->addr << 1, client->adapter->name); | 935 | client->addr << 1, client->adapter->name); |
936 | v4l_info(client, "%s ", client->name); | 936 | v4l_info(client, "%s ", client->name); |
937 | if (state->has_nicam && state->has_radio) | 937 | if (state->has_nicam && state->has_radio) |
@@ -987,6 +987,12 @@ static int msp_remove(struct i2c_client *client) | |||
987 | 987 | ||
988 | /* ----------------------------------------------------------------------- */ | 988 | /* ----------------------------------------------------------------------- */ |
989 | 989 | ||
990 | static const struct i2c_device_id msp_id[] = { | ||
991 | { "msp3400", 0 }, | ||
992 | { } | ||
993 | }; | ||
994 | MODULE_DEVICE_TABLE(i2c, msp_id); | ||
995 | |||
990 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 996 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
991 | .name = "msp3400", | 997 | .name = "msp3400", |
992 | .driverid = I2C_DRIVERID_MSP3400, | 998 | .driverid = I2C_DRIVERID_MSP3400, |
@@ -995,6 +1001,7 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
995 | .remove = msp_remove, | 1001 | .remove = msp_remove, |
996 | .suspend = msp_suspend, | 1002 | .suspend = msp_suspend, |
997 | .resume = msp_resume, | 1003 | .resume = msp_resume, |
1004 | .id_table = msp_id, | ||
998 | }; | 1005 | }; |
999 | 1006 | ||
1000 | 1007 | ||
diff --git a/drivers/media/video/saa7115.c b/drivers/media/video/saa7115.c index e684108637ad..435c083cc542 100644 --- a/drivers/media/video/saa7115.c +++ b/drivers/media/video/saa7115.c | |||
@@ -1456,14 +1456,13 @@ static int saa7115_probe(struct i2c_client *client, | |||
1456 | struct saa711x_state *state; | 1456 | struct saa711x_state *state; |
1457 | int i; | 1457 | int i; |
1458 | char name[17]; | 1458 | char name[17]; |
1459 | u8 chip_id; | 1459 | char chip_id; |
1460 | int autodetect = !id || id->driver_data == 1; | ||
1460 | 1461 | ||
1461 | /* Check if the adapter supports the needed features */ | 1462 | /* Check if the adapter supports the needed features */ |
1462 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | 1463 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) |
1463 | return -EIO; | 1464 | return -EIO; |
1464 | 1465 | ||
1465 | snprintf(client->name, sizeof(client->name) - 1, "saa7115"); | ||
1466 | |||
1467 | for (i = 0; i < 0x0f; i++) { | 1466 | for (i = 0; i < 0x0f; i++) { |
1468 | saa711x_write(client, 0, i); | 1467 | saa711x_write(client, 0, i); |
1469 | name[i] = (saa711x_read(client, 0) & 0x0f) + '0'; | 1468 | name[i] = (saa711x_read(client, 0) & 0x0f) + '0'; |
@@ -1472,8 +1471,7 @@ static int saa7115_probe(struct i2c_client *client, | |||
1472 | } | 1471 | } |
1473 | name[i] = '\0'; | 1472 | name[i] = '\0'; |
1474 | 1473 | ||
1475 | saa711x_write(client, 0, 5); | 1474 | chip_id = name[5]; |
1476 | chip_id = saa711x_read(client, 0) & 0x0f; | ||
1477 | 1475 | ||
1478 | /* Check whether this chip is part of the saa711x series */ | 1476 | /* Check whether this chip is part of the saa711x series */ |
1479 | if (memcmp(name, "1f711", 5)) { | 1477 | if (memcmp(name, "1f711", 5)) { |
@@ -1482,8 +1480,14 @@ static int saa7115_probe(struct i2c_client *client, | |||
1482 | return -ENODEV; | 1480 | return -ENODEV; |
1483 | } | 1481 | } |
1484 | 1482 | ||
1485 | snprintf(client->name, sizeof(client->name) - 1, "saa711%d",chip_id); | 1483 | /* Safety check */ |
1486 | v4l_info(client, "saa711%d found (%s) @ 0x%x (%s)\n", chip_id, name, client->addr << 1, client->adapter->name); | 1484 | if (!autodetect && id->name[6] != chip_id) { |
1485 | v4l_warn(client, "found saa711%c while %s was expected\n", | ||
1486 | chip_id, id->name); | ||
1487 | } | ||
1488 | snprintf(client->name, sizeof(client->name), "saa711%c", chip_id); | ||
1489 | v4l_info(client, "saa711%c found (%s) @ 0x%x (%s)\n", chip_id, name, | ||
1490 | client->addr << 1, client->adapter->name); | ||
1487 | 1491 | ||
1488 | state = kzalloc(sizeof(struct saa711x_state), GFP_KERNEL); | 1492 | state = kzalloc(sizeof(struct saa711x_state), GFP_KERNEL); |
1489 | i2c_set_clientdata(client, state); | 1493 | i2c_set_clientdata(client, state); |
@@ -1499,19 +1503,19 @@ static int saa7115_probe(struct i2c_client *client, | |||
1499 | state->hue = 0; | 1503 | state->hue = 0; |
1500 | state->sat = 64; | 1504 | state->sat = 64; |
1501 | switch (chip_id) { | 1505 | switch (chip_id) { |
1502 | case 1: | 1506 | case '1': |
1503 | state->ident = V4L2_IDENT_SAA7111; | 1507 | state->ident = V4L2_IDENT_SAA7111; |
1504 | break; | 1508 | break; |
1505 | case 3: | 1509 | case '3': |
1506 | state->ident = V4L2_IDENT_SAA7113; | 1510 | state->ident = V4L2_IDENT_SAA7113; |
1507 | break; | 1511 | break; |
1508 | case 4: | 1512 | case '4': |
1509 | state->ident = V4L2_IDENT_SAA7114; | 1513 | state->ident = V4L2_IDENT_SAA7114; |
1510 | break; | 1514 | break; |
1511 | case 5: | 1515 | case '5': |
1512 | state->ident = V4L2_IDENT_SAA7115; | 1516 | state->ident = V4L2_IDENT_SAA7115; |
1513 | break; | 1517 | break; |
1514 | case 8: | 1518 | case '8': |
1515 | state->ident = V4L2_IDENT_SAA7118; | 1519 | state->ident = V4L2_IDENT_SAA7118; |
1516 | break; | 1520 | break; |
1517 | default: | 1521 | default: |
@@ -1553,6 +1557,17 @@ static int saa7115_remove(struct i2c_client *client) | |||
1553 | return 0; | 1557 | return 0; |
1554 | } | 1558 | } |
1555 | 1559 | ||
1560 | static const struct i2c_device_id saa7115_id[] = { | ||
1561 | { "saa711x", 1 }, /* autodetect */ | ||
1562 | { "saa7111", 0 }, | ||
1563 | { "saa7113", 0 }, | ||
1564 | { "saa7114", 0 }, | ||
1565 | { "saa7115", 0 }, | ||
1566 | { "saa7118", 0 }, | ||
1567 | { } | ||
1568 | }; | ||
1569 | MODULE_DEVICE_TABLE(i2c, saa7115_id); | ||
1570 | |||
1556 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 1571 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
1557 | .name = "saa7115", | 1572 | .name = "saa7115", |
1558 | .driverid = I2C_DRIVERID_SAA711X, | 1573 | .driverid = I2C_DRIVERID_SAA711X, |
@@ -1560,5 +1575,6 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
1560 | .probe = saa7115_probe, | 1575 | .probe = saa7115_probe, |
1561 | .remove = saa7115_remove, | 1576 | .remove = saa7115_remove, |
1562 | .legacy_class = I2C_CLASS_TV_ANALOG | I2C_CLASS_TV_DIGITAL, | 1577 | .legacy_class = I2C_CLASS_TV_ANALOG | I2C_CLASS_TV_DIGITAL, |
1578 | .id_table = saa7115_id, | ||
1563 | }; | 1579 | }; |
1564 | 1580 | ||
diff --git a/drivers/media/video/saa7127.c b/drivers/media/video/saa7127.c index e750cd65c1c3..79d11a658bdf 100644 --- a/drivers/media/video/saa7127.c +++ b/drivers/media/video/saa7127.c | |||
@@ -672,8 +672,6 @@ static int saa7127_probe(struct i2c_client *client, | |||
672 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | 672 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) |
673 | return -EIO; | 673 | return -EIO; |
674 | 674 | ||
675 | snprintf(client->name, sizeof(client->name) - 1, "saa7127"); | ||
676 | |||
677 | v4l_dbg(1, debug, client, "detecting saa7127 client on address 0x%x\n", | 675 | v4l_dbg(1, debug, client, "detecting saa7127 client on address 0x%x\n", |
678 | client->addr << 1); | 676 | client->addr << 1); |
679 | 677 | ||
@@ -741,11 +739,18 @@ static int saa7127_remove(struct i2c_client *client) | |||
741 | 739 | ||
742 | /* ----------------------------------------------------------------------- */ | 740 | /* ----------------------------------------------------------------------- */ |
743 | 741 | ||
742 | static struct i2c_device_id saa7127_id[] = { | ||
743 | { "saa7127", 0 }, | ||
744 | { } | ||
745 | }; | ||
746 | MODULE_DEVICE_TABLE(i2c, saa7127_id); | ||
747 | |||
744 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 748 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
745 | .name = "saa7127", | 749 | .name = "saa7127", |
746 | .driverid = I2C_DRIVERID_SAA7127, | 750 | .driverid = I2C_DRIVERID_SAA7127, |
747 | .command = saa7127_command, | 751 | .command = saa7127_command, |
748 | .probe = saa7127_probe, | 752 | .probe = saa7127_probe, |
749 | .remove = saa7127_remove, | 753 | .remove = saa7127_remove, |
754 | .id_table = saa7127_id, | ||
750 | }; | 755 | }; |
751 | 756 | ||
diff --git a/drivers/media/video/saa717x.c b/drivers/media/video/saa717x.c index 72c4081feff5..2220f9569941 100644 --- a/drivers/media/video/saa717x.c +++ b/drivers/media/video/saa717x.c | |||
@@ -1429,8 +1429,6 @@ static int saa717x_probe(struct i2c_client *client, | |||
1429 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | 1429 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) |
1430 | return -EIO; | 1430 | return -EIO; |
1431 | 1431 | ||
1432 | snprintf(client->name, sizeof(client->name) - 1, "saa717x"); | ||
1433 | |||
1434 | if (saa717x_write(client, 0x5a4, 0xfe) && | 1432 | if (saa717x_write(client, 0x5a4, 0xfe) && |
1435 | saa717x_write(client, 0x5a5, 0x0f) && | 1433 | saa717x_write(client, 0x5a5, 0x0f) && |
1436 | saa717x_write(client, 0x5a6, 0x00) && | 1434 | saa717x_write(client, 0x5a6, 0x00) && |
@@ -1507,6 +1505,12 @@ static int saa717x_remove(struct i2c_client *client) | |||
1507 | 1505 | ||
1508 | /* ----------------------------------------------------------------------- */ | 1506 | /* ----------------------------------------------------------------------- */ |
1509 | 1507 | ||
1508 | static const struct i2c_device_id saa717x_id[] = { | ||
1509 | { "saa717x", 0 }, | ||
1510 | { } | ||
1511 | }; | ||
1512 | MODULE_DEVICE_TABLE(i2c, saa717x_id); | ||
1513 | |||
1510 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 1514 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
1511 | .name = "saa717x", | 1515 | .name = "saa717x", |
1512 | .driverid = I2C_DRIVERID_SAA717X, | 1516 | .driverid = I2C_DRIVERID_SAA717X, |
@@ -1514,4 +1518,5 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
1514 | .probe = saa717x_probe, | 1518 | .probe = saa717x_probe, |
1515 | .remove = saa717x_remove, | 1519 | .remove = saa717x_remove, |
1516 | .legacy_class = I2C_CLASS_TV_ANALOG | I2C_CLASS_TV_DIGITAL, | 1520 | .legacy_class = I2C_CLASS_TV_ANALOG | I2C_CLASS_TV_DIGITAL, |
1521 | .id_table = saa717x_id, | ||
1517 | }; | 1522 | }; |
diff --git a/drivers/media/video/sn9c102/sn9c102_core.c b/drivers/media/video/sn9c102/sn9c102_core.c index 5748b1e1a128..7f9c7bcf3c85 100644 --- a/drivers/media/video/sn9c102/sn9c102_core.c +++ b/drivers/media/video/sn9c102/sn9c102_core.c | |||
@@ -34,7 +34,7 @@ | |||
34 | #include <linux/mm.h> | 34 | #include <linux/mm.h> |
35 | #include <linux/vmalloc.h> | 35 | #include <linux/vmalloc.h> |
36 | #include <linux/page-flags.h> | 36 | #include <linux/page-flags.h> |
37 | #include <linux/byteorder/generic.h> | 37 | #include <asm/byteorder.h> |
38 | #include <asm/page.h> | 38 | #include <asm/page.h> |
39 | #include <asm/uaccess.h> | 39 | #include <asm/uaccess.h> |
40 | 40 | ||
diff --git a/drivers/media/video/tuner-core.c b/drivers/media/video/tuner-core.c index 5a75788b92ae..a0f7bc1edaa2 100644 --- a/drivers/media/video/tuner-core.c +++ b/drivers/media/video/tuner-core.c | |||
@@ -92,6 +92,7 @@ struct tuner { | |||
92 | unsigned int type; /* chip type id */ | 92 | unsigned int type; /* chip type id */ |
93 | unsigned int config; | 93 | unsigned int config; |
94 | int (*tuner_callback) (void *dev, int command, int arg); | 94 | int (*tuner_callback) (void *dev, int command, int arg); |
95 | const char *name; | ||
95 | }; | 96 | }; |
96 | 97 | ||
97 | /* standard i2c insmod options */ | 98 | /* standard i2c insmod options */ |
@@ -330,13 +331,13 @@ static void tuner_i2c_address_check(struct tuner *t) | |||
330 | tuner_warn("Support for tuners in i2c address range 0x64 thru 0x6f\n"); | 331 | tuner_warn("Support for tuners in i2c address range 0x64 thru 0x6f\n"); |
331 | tuner_warn("will soon be dropped. This message indicates that your\n"); | 332 | tuner_warn("will soon be dropped. This message indicates that your\n"); |
332 | tuner_warn("hardware has a %s tuner at i2c address 0x%02x.\n", | 333 | tuner_warn("hardware has a %s tuner at i2c address 0x%02x.\n", |
333 | t->i2c->name, t->i2c->addr); | 334 | t->name, t->i2c->addr); |
334 | tuner_warn("To ensure continued support for your device, please\n"); | 335 | tuner_warn("To ensure continued support for your device, please\n"); |
335 | tuner_warn("send a copy of this message, along with full dmesg\n"); | 336 | tuner_warn("send a copy of this message, along with full dmesg\n"); |
336 | tuner_warn("output to v4l-dvb-maintainer@linuxtv.org\n"); | 337 | tuner_warn("output to v4l-dvb-maintainer@linuxtv.org\n"); |
337 | tuner_warn("Please use subject line: \"obsolete tuner i2c address.\"\n"); | 338 | tuner_warn("Please use subject line: \"obsolete tuner i2c address.\"\n"); |
338 | tuner_warn("driver: %s, addr: 0x%02x, type: %d (%s)\n", | 339 | tuner_warn("driver: %s, addr: 0x%02x, type: %d (%s)\n", |
339 | t->i2c->adapter->name, t->i2c->addr, t->type, t->i2c->name); | 340 | t->i2c->adapter->name, t->i2c->addr, t->type, t->name); |
340 | tuner_warn("====================== WARNING! ======================\n"); | 341 | tuner_warn("====================== WARNING! ======================\n"); |
341 | } | 342 | } |
342 | 343 | ||
@@ -470,19 +471,17 @@ static void set_type(struct i2c_client *c, unsigned int type, | |||
470 | if ((NULL == analog_ops->set_params) && | 471 | if ((NULL == analog_ops->set_params) && |
471 | (fe_tuner_ops->set_analog_params)) { | 472 | (fe_tuner_ops->set_analog_params)) { |
472 | 473 | ||
473 | strlcpy(t->i2c->name, fe_tuner_ops->info.name, | 474 | t->name = fe_tuner_ops->info.name; |
474 | sizeof(t->i2c->name)); | ||
475 | 475 | ||
476 | t->fe.analog_demod_priv = t; | 476 | t->fe.analog_demod_priv = t; |
477 | memcpy(analog_ops, &tuner_core_ops, | 477 | memcpy(analog_ops, &tuner_core_ops, |
478 | sizeof(struct analog_demod_ops)); | 478 | sizeof(struct analog_demod_ops)); |
479 | 479 | ||
480 | } else { | 480 | } else { |
481 | strlcpy(t->i2c->name, analog_ops->info.name, | 481 | t->name = analog_ops->info.name; |
482 | sizeof(t->i2c->name)); | ||
483 | } | 482 | } |
484 | 483 | ||
485 | tuner_dbg("type set to %s\n", t->i2c->name); | 484 | tuner_dbg("type set to %s\n", t->name); |
486 | 485 | ||
487 | if (t->mode_mask == T_UNINITIALIZED) | 486 | if (t->mode_mask == T_UNINITIALIZED) |
488 | t->mode_mask = new_mode_mask; | 487 | t->mode_mask = new_mode_mask; |
@@ -1115,7 +1114,7 @@ static int tuner_probe(struct i2c_client *client, | |||
1115 | if (NULL == t) | 1114 | if (NULL == t) |
1116 | return -ENOMEM; | 1115 | return -ENOMEM; |
1117 | t->i2c = client; | 1116 | t->i2c = client; |
1118 | strlcpy(client->name, "(tuner unset)", sizeof(client->name)); | 1117 | t->name = "(tuner unset)"; |
1119 | i2c_set_clientdata(client, t); | 1118 | i2c_set_clientdata(client, t); |
1120 | t->type = UNSET; | 1119 | t->type = UNSET; |
1121 | t->audmode = V4L2_TUNER_MODE_STEREO; | 1120 | t->audmode = V4L2_TUNER_MODE_STEREO; |
@@ -1278,6 +1277,15 @@ static int tuner_remove(struct i2c_client *client) | |||
1278 | 1277 | ||
1279 | /* ----------------------------------------------------------------------- */ | 1278 | /* ----------------------------------------------------------------------- */ |
1280 | 1279 | ||
1280 | /* This driver supports many devices and the idea is to let the driver | ||
1281 | detect which device is present. So rather than listing all supported | ||
1282 | devices here, we pretend to support a single, fake device type. */ | ||
1283 | static const struct i2c_device_id tuner_id[] = { | ||
1284 | { "tuner", }, /* autodetect */ | ||
1285 | { } | ||
1286 | }; | ||
1287 | MODULE_DEVICE_TABLE(i2c, tuner_id); | ||
1288 | |||
1281 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 1289 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
1282 | .name = "tuner", | 1290 | .name = "tuner", |
1283 | .driverid = I2C_DRIVERID_TUNER, | 1291 | .driverid = I2C_DRIVERID_TUNER, |
@@ -1287,6 +1295,7 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
1287 | .suspend = tuner_suspend, | 1295 | .suspend = tuner_suspend, |
1288 | .resume = tuner_resume, | 1296 | .resume = tuner_resume, |
1289 | .legacy_probe = tuner_legacy_probe, | 1297 | .legacy_probe = tuner_legacy_probe, |
1298 | .id_table = tuner_id, | ||
1290 | }; | 1299 | }; |
1291 | 1300 | ||
1292 | 1301 | ||
diff --git a/drivers/media/video/upd64031a.c b/drivers/media/video/upd64031a.c index 93bfd19dec7d..b4628874933b 100644 --- a/drivers/media/video/upd64031a.c +++ b/drivers/media/video/upd64031a.c | |||
@@ -228,6 +228,11 @@ static int upd64031a_remove(struct i2c_client *client) | |||
228 | 228 | ||
229 | /* ----------------------------------------------------------------------- */ | 229 | /* ----------------------------------------------------------------------- */ |
230 | 230 | ||
231 | static const struct i2c_device_id upd64031a_id[] = { | ||
232 | { "upd64031a", 0 }, | ||
233 | { } | ||
234 | }; | ||
235 | MODULE_DEVICE_TABLE(i2c, upd64031a_id); | ||
231 | 236 | ||
232 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 237 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
233 | .name = "upd64031a", | 238 | .name = "upd64031a", |
@@ -235,4 +240,5 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
235 | .command = upd64031a_command, | 240 | .command = upd64031a_command, |
236 | .probe = upd64031a_probe, | 241 | .probe = upd64031a_probe, |
237 | .remove = upd64031a_remove, | 242 | .remove = upd64031a_remove, |
243 | .id_table = upd64031a_id, | ||
238 | }; | 244 | }; |
diff --git a/drivers/media/video/upd64083.c b/drivers/media/video/upd64083.c index 9ab712a56ce0..9521ce004dcc 100644 --- a/drivers/media/video/upd64083.c +++ b/drivers/media/video/upd64083.c | |||
@@ -205,6 +205,11 @@ static int upd64083_remove(struct i2c_client *client) | |||
205 | 205 | ||
206 | /* ----------------------------------------------------------------------- */ | 206 | /* ----------------------------------------------------------------------- */ |
207 | 207 | ||
208 | static const struct i2c_device_id upd64083_id[] = { | ||
209 | { "upd64083", 0 }, | ||
210 | { } | ||
211 | }; | ||
212 | MODULE_DEVICE_TABLE(i2c, upd64083_id); | ||
208 | 213 | ||
209 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 214 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
210 | .name = "upd64083", | 215 | .name = "upd64083", |
@@ -212,4 +217,5 @@ static struct v4l2_i2c_driver_data v4l2_i2c_data = { | |||
212 | .command = upd64083_command, | 217 | .command = upd64083_command, |
213 | .probe = upd64083_probe, | 218 | .probe = upd64083_probe, |
214 | .remove = upd64083_remove, | 219 | .remove = upd64083_remove, |
220 | .id_table = upd64083_id, | ||
215 | }; | 221 | }; |
diff --git a/drivers/media/video/videobuf-core.c b/drivers/media/video/videobuf-core.c index 982f4463896c..0a88c44ace00 100644 --- a/drivers/media/video/videobuf-core.c +++ b/drivers/media/video/videobuf-core.c | |||
@@ -331,7 +331,7 @@ int videobuf_mmap_free(struct videobuf_queue *q) | |||
331 | } | 331 | } |
332 | 332 | ||
333 | /* Locking: Caller holds q->vb_lock */ | 333 | /* Locking: Caller holds q->vb_lock */ |
334 | static int __videobuf_mmap_setup(struct videobuf_queue *q, | 334 | int __videobuf_mmap_setup(struct videobuf_queue *q, |
335 | unsigned int bcount, unsigned int bsize, | 335 | unsigned int bcount, unsigned int bsize, |
336 | enum v4l2_memory memory) | 336 | enum v4l2_memory memory) |
337 | { | 337 | { |
@@ -1129,6 +1129,7 @@ EXPORT_SYMBOL_GPL(videobuf_read_stream); | |||
1129 | EXPORT_SYMBOL_GPL(videobuf_read_one); | 1129 | EXPORT_SYMBOL_GPL(videobuf_read_one); |
1130 | EXPORT_SYMBOL_GPL(videobuf_poll_stream); | 1130 | EXPORT_SYMBOL_GPL(videobuf_poll_stream); |
1131 | 1131 | ||
1132 | EXPORT_SYMBOL_GPL(__videobuf_mmap_setup); | ||
1132 | EXPORT_SYMBOL_GPL(videobuf_mmap_setup); | 1133 | EXPORT_SYMBOL_GPL(videobuf_mmap_setup); |
1133 | EXPORT_SYMBOL_GPL(videobuf_mmap_free); | 1134 | EXPORT_SYMBOL_GPL(videobuf_mmap_free); |
1134 | EXPORT_SYMBOL_GPL(videobuf_mmap_mapper); | 1135 | EXPORT_SYMBOL_GPL(videobuf_mmap_mapper); |
diff --git a/drivers/media/video/vp27smpx.c b/drivers/media/video/vp27smpx.c index fac0deba24af..a1f76ee032e7 100644 --- a/drivers/media/video/vp27smpx.c +++ b/drivers/media/video/vp27smpx.c | |||
@@ -130,8 +130,6 @@ static int vp27smpx_probe(struct i2c_client *client, | |||
130 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | 130 | if (!i2c_check_functionality(client->adapter, I2C_FUNC_SMBUS_BYTE_DATA)) |
131 | return -EIO; | 131 | return -EIO; |
132 | 132 | ||
133 | snprintf(client->name, sizeof(client->name) - 1, "vp27smpx"); | ||
134 | |||
135 | v4l_info(client, "chip found @ 0x%x (%s)\n", | 133 | v4l_info(client, "chip found @ 0x%x (%s)\n", |
136 | client->addr << 1, client->adapter->name); | 134 | client->addr << 1, client->adapter->name); |
137 | 135 | ||
@@ -154,11 +152,18 @@ static int vp27smpx_remove(struct i2c_client *client) | |||
154 | 152 | ||
155 | /* ----------------------------------------------------------------------- */ | 153 | /* ----------------------------------------------------------------------- */ |
156 | 154 | ||
155 | static const struct i2c_device_id vp27smpx_id[] = { | ||
156 | { "vp27smpx", 0 }, | ||
157 | { } | ||
158 | }; | ||
159 | MODULE_DEVICE_TABLE(i2c, vp27smpx_id); | ||
160 | |||
157 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 161 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
158 | .name = "vp27smpx", | 162 | .name = "vp27smpx", |
159 | .driverid = I2C_DRIVERID_VP27SMPX, | 163 | .driverid = I2C_DRIVERID_VP27SMPX, |
160 | .command = vp27smpx_command, | 164 | .command = vp27smpx_command, |
161 | .probe = vp27smpx_probe, | 165 | .probe = vp27smpx_probe, |
162 | .remove = vp27smpx_remove, | 166 | .remove = vp27smpx_remove, |
167 | .id_table = vp27smpx_id, | ||
163 | }; | 168 | }; |
164 | 169 | ||
diff --git a/drivers/media/video/wm8739.c b/drivers/media/video/wm8739.c index 0f8ed8461fba..fc50299caa36 100644 --- a/drivers/media/video/wm8739.c +++ b/drivers/media/video/wm8739.c | |||
@@ -313,11 +313,18 @@ static int wm8739_remove(struct i2c_client *client) | |||
313 | return 0; | 313 | return 0; |
314 | } | 314 | } |
315 | 315 | ||
316 | static const struct i2c_device_id wm8739_id[] = { | ||
317 | { "wm8739", 0 }, | ||
318 | { } | ||
319 | }; | ||
320 | MODULE_DEVICE_TABLE(i2c, wm8739_id); | ||
321 | |||
316 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 322 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
317 | .name = "wm8739", | 323 | .name = "wm8739", |
318 | .driverid = I2C_DRIVERID_WM8739, | 324 | .driverid = I2C_DRIVERID_WM8739, |
319 | .command = wm8739_command, | 325 | .command = wm8739_command, |
320 | .probe = wm8739_probe, | 326 | .probe = wm8739_probe, |
321 | .remove = wm8739_remove, | 327 | .remove = wm8739_remove, |
328 | .id_table = wm8739_id, | ||
322 | }; | 329 | }; |
323 | 330 | ||
diff --git a/drivers/media/video/wm8775.c b/drivers/media/video/wm8775.c index 67a409e60c46..506378a508b9 100644 --- a/drivers/media/video/wm8775.c +++ b/drivers/media/video/wm8775.c | |||
@@ -216,11 +216,18 @@ static int wm8775_remove(struct i2c_client *client) | |||
216 | return 0; | 216 | return 0; |
217 | } | 217 | } |
218 | 218 | ||
219 | static const struct i2c_device_id wm8775_id[] = { | ||
220 | { "wm8775", 0 }, | ||
221 | { } | ||
222 | }; | ||
223 | MODULE_DEVICE_TABLE(i2c, wm8775_id); | ||
224 | |||
219 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { | 225 | static struct v4l2_i2c_driver_data v4l2_i2c_data = { |
220 | .name = "wm8775", | 226 | .name = "wm8775", |
221 | .driverid = I2C_DRIVERID_WM8775, | 227 | .driverid = I2C_DRIVERID_WM8775, |
222 | .command = wm8775_command, | 228 | .command = wm8775_command, |
223 | .probe = wm8775_probe, | 229 | .probe = wm8775_probe, |
224 | .remove = wm8775_remove, | 230 | .remove = wm8775_remove, |
231 | .id_table = wm8775_id, | ||
225 | }; | 232 | }; |
226 | 233 | ||
diff --git a/drivers/media/video/zc0301/zc0301_core.c b/drivers/media/video/zc0301/zc0301_core.c index 363dd2b9475c..e5c4e9f5193f 100644 --- a/drivers/media/video/zc0301/zc0301_core.c +++ b/drivers/media/video/zc0301/zc0301_core.c | |||
@@ -38,7 +38,7 @@ | |||
38 | #include <linux/mm.h> | 38 | #include <linux/mm.h> |
39 | #include <linux/vmalloc.h> | 39 | #include <linux/vmalloc.h> |
40 | #include <linux/page-flags.h> | 40 | #include <linux/page-flags.h> |
41 | #include <linux/byteorder/generic.h> | 41 | #include <asm/byteorder.h> |
42 | #include <asm/page.h> | 42 | #include <asm/page.h> |
43 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
44 | 44 | ||
diff --git a/drivers/media/video/zoran_device.c b/drivers/media/video/zoran_device.c index 7b60533efe45..37629ffd34c3 100644 --- a/drivers/media/video/zoran_device.c +++ b/drivers/media/video/zoran_device.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/kernel.h> | 31 | #include <linux/kernel.h> |
32 | #include <linux/module.h> | 32 | #include <linux/module.h> |
33 | #include <linux/vmalloc.h> | 33 | #include <linux/vmalloc.h> |
34 | #include <linux/byteorder/generic.h> | ||
35 | 34 | ||
36 | #include <linux/interrupt.h> | 35 | #include <linux/interrupt.h> |
37 | #include <linux/proc_fs.h> | 36 | #include <linux/proc_fs.h> |
@@ -47,6 +46,7 @@ | |||
47 | #include <linux/delay.h> | 46 | #include <linux/delay.h> |
48 | #include <linux/wait.h> | 47 | #include <linux/wait.h> |
49 | 48 | ||
49 | #include <asm/byteorder.h> | ||
50 | #include <asm/io.h> | 50 | #include <asm/io.h> |
51 | 51 | ||
52 | #include "videocodec.h" | 52 | #include "videocodec.h" |
diff --git a/drivers/media/video/zoran_driver.c b/drivers/media/video/zoran_driver.c index 0134bec1e399..345c77e46837 100644 --- a/drivers/media/video/zoran_driver.c +++ b/drivers/media/video/zoran_driver.c | |||
@@ -52,7 +52,6 @@ | |||
52 | #include <linux/pci.h> | 52 | #include <linux/pci.h> |
53 | #include <linux/vmalloc.h> | 53 | #include <linux/vmalloc.h> |
54 | #include <linux/wait.h> | 54 | #include <linux/wait.h> |
55 | #include <linux/byteorder/generic.h> | ||
56 | 55 | ||
57 | #include <linux/interrupt.h> | 56 | #include <linux/interrupt.h> |
58 | #include <linux/i2c.h> | 57 | #include <linux/i2c.h> |
@@ -74,6 +73,7 @@ | |||
74 | #include <media/v4l2-common.h> | 73 | #include <media/v4l2-common.h> |
75 | #include "videocodec.h" | 74 | #include "videocodec.h" |
76 | 75 | ||
76 | #include <asm/byteorder.h> | ||
77 | #include <asm/io.h> | 77 | #include <asm/io.h> |
78 | #include <asm/uaccess.h> | 78 | #include <asm/uaccess.h> |
79 | #include <linux/proc_fs.h> | 79 | #include <linux/proc_fs.h> |
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig index 2566479937c9..ae96bd6242f2 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig | |||
@@ -24,7 +24,7 @@ config MFD_ASIC3 | |||
24 | 24 | ||
25 | config HTC_EGPIO | 25 | config HTC_EGPIO |
26 | bool "HTC EGPIO support" | 26 | bool "HTC EGPIO support" |
27 | depends on GENERIC_HARDIRQS && HAVE_GPIO_LIB | 27 | depends on GENERIC_HARDIRQS && HAVE_GPIO_LIB && ARM |
28 | help | 28 | help |
29 | This driver supports the CPLD egpio chip present on | 29 | This driver supports the CPLD egpio chip present on |
30 | several HTC phones. It provides basic support for input | 30 | several HTC phones. It provides basic support for input |
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c index 3f28f6eabdbf..a0ce0b2fa03e 100644 --- a/drivers/misc/thinkpad_acpi.c +++ b/drivers/misc/thinkpad_acpi.c | |||
@@ -3821,7 +3821,7 @@ TPACPI_HANDLE(led, ec, "SLED", /* 570 */ | |||
3821 | #define TPACPI_LED_NUMLEDS 8 | 3821 | #define TPACPI_LED_NUMLEDS 8 |
3822 | static struct tpacpi_led_classdev *tpacpi_leds; | 3822 | static struct tpacpi_led_classdev *tpacpi_leds; |
3823 | static enum led_status_t tpacpi_led_state_cache[TPACPI_LED_NUMLEDS]; | 3823 | static enum led_status_t tpacpi_led_state_cache[TPACPI_LED_NUMLEDS]; |
3824 | static const char const *tpacpi_led_names[TPACPI_LED_NUMLEDS] = { | 3824 | static const char * const tpacpi_led_names[TPACPI_LED_NUMLEDS] = { |
3825 | /* there's a limit of 19 chars + NULL before 2.6.26 */ | 3825 | /* there's a limit of 19 chars + NULL before 2.6.26 */ |
3826 | "tpacpi::power", | 3826 | "tpacpi::power", |
3827 | "tpacpi:orange:batt", | 3827 | "tpacpi:orange:batt", |
@@ -3860,10 +3860,10 @@ static int led_get_status(unsigned int led) | |||
3860 | static int led_set_status(unsigned int led, enum led_status_t ledstatus) | 3860 | static int led_set_status(unsigned int led, enum led_status_t ledstatus) |
3861 | { | 3861 | { |
3862 | /* off, on, blink. Index is led_status_t */ | 3862 | /* off, on, blink. Index is led_status_t */ |
3863 | static const int const led_sled_arg1[] = { 0, 1, 3 }; | 3863 | static const int led_sled_arg1[] = { 0, 1, 3 }; |
3864 | static const int const led_exp_hlbl[] = { 0, 0, 1 }; /* led# * */ | 3864 | static const int led_exp_hlbl[] = { 0, 0, 1 }; /* led# * */ |
3865 | static const int const led_exp_hlcl[] = { 0, 1, 1 }; /* led# * */ | 3865 | static const int led_exp_hlcl[] = { 0, 1, 1 }; /* led# * */ |
3866 | static const int const led_led_arg1[] = { 0, 0x80, 0xc0 }; | 3866 | static const int led_led_arg1[] = { 0, 0x80, 0xc0 }; |
3867 | 3867 | ||
3868 | int rc = 0; | 3868 | int rc = 0; |
3869 | 3869 | ||
diff --git a/drivers/mmc/card/Kconfig b/drivers/mmc/card/Kconfig index aa8a4e461942..dd0f398ee2f5 100644 --- a/drivers/mmc/card/Kconfig +++ b/drivers/mmc/card/Kconfig | |||
@@ -39,3 +39,15 @@ config SDIO_UART | |||
39 | SDIO function driver for SDIO cards that implements the UART | 39 | SDIO function driver for SDIO cards that implements the UART |
40 | class, as well as the GPS class which appears like a UART. | 40 | class, as well as the GPS class which appears like a UART. |
41 | 41 | ||
42 | config MMC_TEST | ||
43 | tristate "MMC host test driver" | ||
44 | default n | ||
45 | help | ||
46 | Development driver that performs a series of reads and writes | ||
47 | to a memory card in order to expose certain well known bugs | ||
48 | in host controllers. The tests are executed by writing to the | ||
49 | "test" file in sysfs under each card. Note that whatever is | ||
50 | on your card will be overwritten by these tests. | ||
51 | |||
52 | This driver is only of interest to those developing or | ||
53 | testing a host driver. Most people should say N here. | ||
diff --git a/drivers/mmc/card/Makefile b/drivers/mmc/card/Makefile index fc5a784cfa1a..0d407514f67d 100644 --- a/drivers/mmc/card/Makefile +++ b/drivers/mmc/card/Makefile | |||
@@ -8,6 +8,7 @@ endif | |||
8 | 8 | ||
9 | obj-$(CONFIG_MMC_BLOCK) += mmc_block.o | 9 | obj-$(CONFIG_MMC_BLOCK) += mmc_block.o |
10 | mmc_block-objs := block.o queue.o | 10 | mmc_block-objs := block.o queue.o |
11 | obj-$(CONFIG_MMC_TEST) += mmc_test.o | ||
11 | 12 | ||
12 | obj-$(CONFIG_SDIO_UART) += sdio_uart.o | 13 | obj-$(CONFIG_SDIO_UART) += sdio_uart.o |
13 | 14 | ||
diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c new file mode 100644 index 000000000000..ffadee549a41 --- /dev/null +++ b/drivers/mmc/card/mmc_test.c | |||
@@ -0,0 +1,892 @@ | |||
1 | /* | ||
2 | * linux/drivers/mmc/card/mmc_test.c | ||
3 | * | ||
4 | * Copyright 2007 Pierre Ossman | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or (at | ||
9 | * your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #include <linux/mmc/core.h> | ||
13 | #include <linux/mmc/card.h> | ||
14 | #include <linux/mmc/host.h> | ||
15 | #include <linux/mmc/mmc.h> | ||
16 | |||
17 | #include <linux/scatterlist.h> | ||
18 | |||
19 | #define RESULT_OK 0 | ||
20 | #define RESULT_FAIL 1 | ||
21 | #define RESULT_UNSUP_HOST 2 | ||
22 | #define RESULT_UNSUP_CARD 3 | ||
23 | |||
24 | #define BUFFER_SIZE (PAGE_SIZE * 4) | ||
25 | |||
26 | struct mmc_test_card { | ||
27 | struct mmc_card *card; | ||
28 | |||
29 | u8 *buffer; | ||
30 | }; | ||
31 | |||
32 | /*******************************************************************/ | ||
33 | /* Helper functions */ | ||
34 | /*******************************************************************/ | ||
35 | |||
36 | static int mmc_test_set_blksize(struct mmc_test_card *test, unsigned size) | ||
37 | { | ||
38 | struct mmc_command cmd; | ||
39 | int ret; | ||
40 | |||
41 | cmd.opcode = MMC_SET_BLOCKLEN; | ||
42 | cmd.arg = size; | ||
43 | cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; | ||
44 | ret = mmc_wait_for_cmd(test->card->host, &cmd, 0); | ||
45 | if (ret) | ||
46 | return ret; | ||
47 | |||
48 | return 0; | ||
49 | } | ||
50 | |||
51 | static int __mmc_test_transfer(struct mmc_test_card *test, int write, | ||
52 | unsigned broken_xfer, u8 *buffer, unsigned addr, | ||
53 | unsigned blocks, unsigned blksz) | ||
54 | { | ||
55 | int ret, busy; | ||
56 | |||
57 | struct mmc_request mrq; | ||
58 | struct mmc_command cmd; | ||
59 | struct mmc_command stop; | ||
60 | struct mmc_data data; | ||
61 | |||
62 | struct scatterlist sg; | ||
63 | |||
64 | memset(&mrq, 0, sizeof(struct mmc_request)); | ||
65 | |||
66 | mrq.cmd = &cmd; | ||
67 | mrq.data = &data; | ||
68 | |||
69 | memset(&cmd, 0, sizeof(struct mmc_command)); | ||
70 | |||
71 | if (broken_xfer) { | ||
72 | if (blocks > 1) { | ||
73 | cmd.opcode = write ? | ||
74 | MMC_WRITE_BLOCK : MMC_READ_SINGLE_BLOCK; | ||
75 | } else { | ||
76 | cmd.opcode = MMC_SEND_STATUS; | ||
77 | } | ||
78 | } else { | ||
79 | if (blocks > 1) { | ||
80 | cmd.opcode = write ? | ||
81 | MMC_WRITE_MULTIPLE_BLOCK : MMC_READ_MULTIPLE_BLOCK; | ||
82 | } else { | ||
83 | cmd.opcode = write ? | ||
84 | MMC_WRITE_BLOCK : MMC_READ_SINGLE_BLOCK; | ||
85 | } | ||
86 | } | ||
87 | |||
88 | if (broken_xfer && blocks == 1) | ||
89 | cmd.arg = test->card->rca << 16; | ||
90 | else | ||
91 | cmd.arg = addr; | ||
92 | cmd.flags = MMC_RSP_R1 | MMC_CMD_ADTC; | ||
93 | |||
94 | memset(&stop, 0, sizeof(struct mmc_command)); | ||
95 | |||
96 | if (!broken_xfer && (blocks > 1)) { | ||
97 | stop.opcode = MMC_STOP_TRANSMISSION; | ||
98 | stop.arg = 0; | ||
99 | stop.flags = MMC_RSP_R1B | MMC_CMD_AC; | ||
100 | |||
101 | mrq.stop = &stop; | ||
102 | } | ||
103 | |||
104 | memset(&data, 0, sizeof(struct mmc_data)); | ||
105 | |||
106 | data.blksz = blksz; | ||
107 | data.blocks = blocks; | ||
108 | data.flags = write ? MMC_DATA_WRITE : MMC_DATA_READ; | ||
109 | data.sg = &sg; | ||
110 | data.sg_len = 1; | ||
111 | |||
112 | sg_init_one(&sg, buffer, blocks * blksz); | ||
113 | |||
114 | mmc_set_data_timeout(&data, test->card); | ||
115 | |||
116 | mmc_wait_for_req(test->card->host, &mrq); | ||
117 | |||
118 | ret = 0; | ||
119 | |||
120 | if (broken_xfer) { | ||
121 | if (!ret && cmd.error) | ||
122 | ret = cmd.error; | ||
123 | if (!ret && data.error == 0) | ||
124 | ret = RESULT_FAIL; | ||
125 | if (!ret && data.error != -ETIMEDOUT) | ||
126 | ret = data.error; | ||
127 | if (!ret && stop.error) | ||
128 | ret = stop.error; | ||
129 | if (blocks > 1) { | ||
130 | if (!ret && data.bytes_xfered > blksz) | ||
131 | ret = RESULT_FAIL; | ||
132 | } else { | ||
133 | if (!ret && data.bytes_xfered > 0) | ||
134 | ret = RESULT_FAIL; | ||
135 | } | ||
136 | } else { | ||
137 | if (!ret && cmd.error) | ||
138 | ret = cmd.error; | ||
139 | if (!ret && data.error) | ||
140 | ret = data.error; | ||
141 | if (!ret && stop.error) | ||
142 | ret = stop.error; | ||
143 | if (!ret && data.bytes_xfered != blocks * blksz) | ||
144 | ret = RESULT_FAIL; | ||
145 | } | ||
146 | |||
147 | if (ret == -EINVAL) | ||
148 | ret = RESULT_UNSUP_HOST; | ||
149 | |||
150 | busy = 0; | ||
151 | do { | ||
152 | int ret2; | ||
153 | |||
154 | memset(&cmd, 0, sizeof(struct mmc_command)); | ||
155 | |||
156 | cmd.opcode = MMC_SEND_STATUS; | ||
157 | cmd.arg = test->card->rca << 16; | ||
158 | cmd.flags = MMC_RSP_R1 | MMC_CMD_AC; | ||
159 | |||
160 | ret2 = mmc_wait_for_cmd(test->card->host, &cmd, 0); | ||
161 | if (ret2) | ||
162 | break; | ||
163 | |||
164 | if (!busy && !(cmd.resp[0] & R1_READY_FOR_DATA)) { | ||
165 | busy = 1; | ||
166 | printk(KERN_INFO "%s: Warning: Host did not " | ||
167 | "wait for busy state to end.\n", | ||
168 | mmc_hostname(test->card->host)); | ||
169 | } | ||
170 | } while (!(cmd.resp[0] & R1_READY_FOR_DATA)); | ||
171 | |||
172 | return ret; | ||
173 | } | ||
174 | |||
175 | static int mmc_test_transfer(struct mmc_test_card *test, int write, | ||
176 | u8 *buffer, unsigned addr, unsigned blocks, unsigned blksz) | ||
177 | { | ||
178 | return __mmc_test_transfer(test, write, 0, buffer, | ||
179 | addr, blocks, blksz); | ||
180 | } | ||
181 | |||
182 | static int mmc_test_prepare_verify(struct mmc_test_card *test, int write) | ||
183 | { | ||
184 | int ret, i; | ||
185 | |||
186 | ret = mmc_test_set_blksize(test, 512); | ||
187 | if (ret) | ||
188 | return ret; | ||
189 | |||
190 | if (write) | ||
191 | memset(test->buffer, 0xDF, BUFFER_SIZE); | ||
192 | else { | ||
193 | for (i = 0;i < BUFFER_SIZE;i++) | ||
194 | test->buffer[i] = i; | ||
195 | } | ||
196 | |||
197 | for (i = 0;i < BUFFER_SIZE / 512;i++) { | ||
198 | ret = mmc_test_transfer(test, 1, test->buffer + i * 512, | ||
199 | i * 512, 1, 512); | ||
200 | if (ret) | ||
201 | return ret; | ||
202 | } | ||
203 | |||
204 | return 0; | ||
205 | } | ||
206 | |||
207 | static int mmc_test_prepare_verify_write(struct mmc_test_card *test) | ||
208 | { | ||
209 | return mmc_test_prepare_verify(test, 1); | ||
210 | } | ||
211 | |||
212 | static int mmc_test_prepare_verify_read(struct mmc_test_card *test) | ||
213 | { | ||
214 | return mmc_test_prepare_verify(test, 0); | ||
215 | } | ||
216 | |||
217 | static int mmc_test_verified_transfer(struct mmc_test_card *test, int write, | ||
218 | u8 *buffer, unsigned addr, unsigned blocks, unsigned blksz) | ||
219 | { | ||
220 | int ret, i, sectors; | ||
221 | |||
222 | /* | ||
223 | * It is assumed that the above preparation has been done. | ||
224 | */ | ||
225 | |||
226 | memset(test->buffer, 0, BUFFER_SIZE); | ||
227 | |||
228 | if (write) { | ||
229 | for (i = 0;i < blocks * blksz;i++) | ||
230 | buffer[i] = i; | ||
231 | } | ||
232 | |||
233 | ret = mmc_test_set_blksize(test, blksz); | ||
234 | if (ret) | ||
235 | return ret; | ||
236 | |||
237 | ret = mmc_test_transfer(test, write, buffer, addr, blocks, blksz); | ||
238 | if (ret) | ||
239 | return ret; | ||
240 | |||
241 | if (write) { | ||
242 | ret = mmc_test_set_blksize(test, 512); | ||
243 | if (ret) | ||
244 | return ret; | ||
245 | |||
246 | sectors = (blocks * blksz + 511) / 512; | ||
247 | if ((sectors * 512) == (blocks * blksz)) | ||
248 | sectors++; | ||
249 | |||
250 | if ((sectors * 512) > BUFFER_SIZE) | ||
251 | return -EINVAL; | ||
252 | |||
253 | memset(test->buffer, 0, sectors * 512); | ||
254 | |||
255 | for (i = 0;i < sectors;i++) { | ||
256 | ret = mmc_test_transfer(test, 0, | ||
257 | test->buffer + i * 512, | ||
258 | addr + i * 512, 1, 512); | ||
259 | if (ret) | ||
260 | return ret; | ||
261 | } | ||
262 | |||
263 | for (i = 0;i < blocks * blksz;i++) { | ||
264 | if (test->buffer[i] != (u8)i) | ||
265 | return RESULT_FAIL; | ||
266 | } | ||
267 | |||
268 | for (;i < sectors * 512;i++) { | ||
269 | if (test->buffer[i] != 0xDF) | ||
270 | return RESULT_FAIL; | ||
271 | } | ||
272 | } else { | ||
273 | for (i = 0;i < blocks * blksz;i++) { | ||
274 | if (buffer[i] != (u8)i) | ||
275 | return RESULT_FAIL; | ||
276 | } | ||
277 | } | ||
278 | |||
279 | return 0; | ||
280 | } | ||
281 | |||
282 | static int mmc_test_cleanup_verify(struct mmc_test_card *test) | ||
283 | { | ||
284 | int ret, i; | ||
285 | |||
286 | ret = mmc_test_set_blksize(test, 512); | ||
287 | if (ret) | ||
288 | return ret; | ||
289 | |||
290 | memset(test->buffer, 0, BUFFER_SIZE); | ||
291 | |||
292 | for (i = 0;i < BUFFER_SIZE / 512;i++) { | ||
293 | ret = mmc_test_transfer(test, 1, test->buffer + i * 512, | ||
294 | i * 512, 1, 512); | ||
295 | if (ret) | ||
296 | return ret; | ||
297 | } | ||
298 | |||
299 | return 0; | ||
300 | } | ||
301 | |||
302 | /*******************************************************************/ | ||
303 | /* Tests */ | ||
304 | /*******************************************************************/ | ||
305 | |||
306 | struct mmc_test_case { | ||
307 | const char *name; | ||
308 | |||
309 | int (*prepare)(struct mmc_test_card *); | ||
310 | int (*run)(struct mmc_test_card *); | ||
311 | int (*cleanup)(struct mmc_test_card *); | ||
312 | }; | ||
313 | |||
314 | static int mmc_test_basic_write(struct mmc_test_card *test) | ||
315 | { | ||
316 | int ret; | ||
317 | |||
318 | ret = mmc_test_set_blksize(test, 512); | ||
319 | if (ret) | ||
320 | return ret; | ||
321 | |||
322 | ret = mmc_test_transfer(test, 1, test->buffer, 0, 1, 512); | ||
323 | if (ret) | ||
324 | return ret; | ||
325 | |||
326 | return 0; | ||
327 | } | ||
328 | |||
329 | static int mmc_test_basic_read(struct mmc_test_card *test) | ||
330 | { | ||
331 | int ret; | ||
332 | |||
333 | ret = mmc_test_set_blksize(test, 512); | ||
334 | if (ret) | ||
335 | return ret; | ||
336 | |||
337 | ret = mmc_test_transfer(test, 0, test->buffer, 0, 1, 512); | ||
338 | if (ret) | ||
339 | return ret; | ||
340 | |||
341 | return 0; | ||
342 | } | ||
343 | |||
344 | static int mmc_test_verify_write(struct mmc_test_card *test) | ||
345 | { | ||
346 | int ret; | ||
347 | |||
348 | ret = mmc_test_verified_transfer(test, 1, test->buffer, 0, 1, 512); | ||
349 | if (ret) | ||
350 | return ret; | ||
351 | |||
352 | return 0; | ||
353 | } | ||
354 | |||
355 | static int mmc_test_verify_read(struct mmc_test_card *test) | ||
356 | { | ||
357 | int ret; | ||
358 | |||
359 | ret = mmc_test_verified_transfer(test, 0, test->buffer, 0, 1, 512); | ||
360 | if (ret) | ||
361 | return ret; | ||
362 | |||
363 | return 0; | ||
364 | } | ||
365 | |||
366 | static int mmc_test_multi_write(struct mmc_test_card *test) | ||
367 | { | ||
368 | int ret; | ||
369 | unsigned int size; | ||
370 | |||
371 | if (test->card->host->max_blk_count == 1) | ||
372 | return RESULT_UNSUP_HOST; | ||
373 | |||
374 | size = PAGE_SIZE * 2; | ||
375 | size = min(size, test->card->host->max_req_size); | ||
376 | size = min(size, test->card->host->max_seg_size); | ||
377 | size = min(size, test->card->host->max_blk_count * 512); | ||
378 | |||
379 | if (size < 1024) | ||
380 | return RESULT_UNSUP_HOST; | ||
381 | |||
382 | ret = mmc_test_verified_transfer(test, 1, test->buffer, 0, | ||
383 | size / 512, 512); | ||
384 | if (ret) | ||
385 | return ret; | ||
386 | |||
387 | return 0; | ||
388 | } | ||
389 | |||
390 | static int mmc_test_multi_read(struct mmc_test_card *test) | ||
391 | { | ||
392 | int ret; | ||
393 | unsigned int size; | ||
394 | |||
395 | if (test->card->host->max_blk_count == 1) | ||
396 | return RESULT_UNSUP_HOST; | ||
397 | |||
398 | size = PAGE_SIZE * 2; | ||
399 | size = min(size, test->card->host->max_req_size); | ||
400 | size = min(size, test->card->host->max_seg_size); | ||
401 | size = min(size, test->card->host->max_blk_count * 512); | ||
402 | |||
403 | if (size < 1024) | ||
404 | return RESULT_UNSUP_HOST; | ||
405 | |||
406 | ret = mmc_test_verified_transfer(test, 0, test->buffer, 0, | ||
407 | size / 512, 512); | ||
408 | if (ret) | ||
409 | return ret; | ||
410 | |||
411 | return 0; | ||
412 | } | ||
413 | |||
414 | static int mmc_test_pow2_write(struct mmc_test_card *test) | ||
415 | { | ||
416 | int ret, i; | ||
417 | |||
418 | if (!test->card->csd.write_partial) | ||
419 | return RESULT_UNSUP_CARD; | ||
420 | |||
421 | for (i = 1; i < 512;i <<= 1) { | ||
422 | ret = mmc_test_verified_transfer(test, 1, | ||
423 | test->buffer, 0, 1, i); | ||
424 | if (ret) | ||
425 | return ret; | ||
426 | } | ||
427 | |||
428 | return 0; | ||
429 | } | ||
430 | |||
431 | static int mmc_test_pow2_read(struct mmc_test_card *test) | ||
432 | { | ||
433 | int ret, i; | ||
434 | |||
435 | if (!test->card->csd.read_partial) | ||
436 | return RESULT_UNSUP_CARD; | ||
437 | |||
438 | for (i = 1; i < 512;i <<= 1) { | ||
439 | ret = mmc_test_verified_transfer(test, 0, | ||
440 | test->buffer, 0, 1, i); | ||
441 | if (ret) | ||
442 | return ret; | ||
443 | } | ||
444 | |||
445 | return 0; | ||
446 | } | ||
447 | |||
448 | static int mmc_test_weird_write(struct mmc_test_card *test) | ||
449 | { | ||
450 | int ret, i; | ||
451 | |||
452 | if (!test->card->csd.write_partial) | ||
453 | return RESULT_UNSUP_CARD; | ||
454 | |||
455 | for (i = 3; i < 512;i += 7) { | ||
456 | ret = mmc_test_verified_transfer(test, 1, | ||
457 | test->buffer, 0, 1, i); | ||
458 | if (ret) | ||
459 | return ret; | ||
460 | } | ||
461 | |||
462 | return 0; | ||
463 | } | ||
464 | |||
465 | static int mmc_test_weird_read(struct mmc_test_card *test) | ||
466 | { | ||
467 | int ret, i; | ||
468 | |||
469 | if (!test->card->csd.read_partial) | ||
470 | return RESULT_UNSUP_CARD; | ||
471 | |||
472 | for (i = 3; i < 512;i += 7) { | ||
473 | ret = mmc_test_verified_transfer(test, 0, | ||
474 | test->buffer, 0, 1, i); | ||
475 | if (ret) | ||
476 | return ret; | ||
477 | } | ||
478 | |||
479 | return 0; | ||
480 | } | ||
481 | |||
482 | static int mmc_test_align_write(struct mmc_test_card *test) | ||
483 | { | ||
484 | int ret, i; | ||
485 | |||
486 | for (i = 1;i < 4;i++) { | ||
487 | ret = mmc_test_verified_transfer(test, 1, test->buffer + i, | ||
488 | 0, 1, 512); | ||
489 | if (ret) | ||
490 | return ret; | ||
491 | } | ||
492 | |||
493 | return 0; | ||
494 | } | ||
495 | |||
496 | static int mmc_test_align_read(struct mmc_test_card *test) | ||
497 | { | ||
498 | int ret, i; | ||
499 | |||
500 | for (i = 1;i < 4;i++) { | ||
501 | ret = mmc_test_verified_transfer(test, 0, test->buffer + i, | ||
502 | 0, 1, 512); | ||
503 | if (ret) | ||
504 | return ret; | ||
505 | } | ||
506 | |||
507 | return 0; | ||
508 | } | ||
509 | |||
510 | static int mmc_test_align_multi_write(struct mmc_test_card *test) | ||
511 | { | ||
512 | int ret, i; | ||
513 | unsigned int size; | ||
514 | |||
515 | if (test->card->host->max_blk_count == 1) | ||
516 | return RESULT_UNSUP_HOST; | ||
517 | |||
518 | size = PAGE_SIZE * 2; | ||
519 | size = min(size, test->card->host->max_req_size); | ||
520 | size = min(size, test->card->host->max_seg_size); | ||
521 | size = min(size, test->card->host->max_blk_count * 512); | ||
522 | |||
523 | if (size < 1024) | ||
524 | return RESULT_UNSUP_HOST; | ||
525 | |||
526 | for (i = 1;i < 4;i++) { | ||
527 | ret = mmc_test_verified_transfer(test, 1, test->buffer + i, | ||
528 | 0, size / 512, 512); | ||
529 | if (ret) | ||
530 | return ret; | ||
531 | } | ||
532 | |||
533 | return 0; | ||
534 | } | ||
535 | |||
536 | static int mmc_test_align_multi_read(struct mmc_test_card *test) | ||
537 | { | ||
538 | int ret, i; | ||
539 | unsigned int size; | ||
540 | |||
541 | if (test->card->host->max_blk_count == 1) | ||
542 | return RESULT_UNSUP_HOST; | ||
543 | |||
544 | size = PAGE_SIZE * 2; | ||
545 | size = min(size, test->card->host->max_req_size); | ||
546 | size = min(size, test->card->host->max_seg_size); | ||
547 | size = min(size, test->card->host->max_blk_count * 512); | ||
548 | |||
549 | if (size < 1024) | ||
550 | return RESULT_UNSUP_HOST; | ||
551 | |||
552 | for (i = 1;i < 4;i++) { | ||
553 | ret = mmc_test_verified_transfer(test, 0, test->buffer + i, | ||
554 | 0, size / 512, 512); | ||
555 | if (ret) | ||
556 | return ret; | ||
557 | } | ||
558 | |||
559 | return 0; | ||
560 | } | ||
561 | |||
562 | static int mmc_test_xfersize_write(struct mmc_test_card *test) | ||
563 | { | ||
564 | int ret; | ||
565 | |||
566 | ret = mmc_test_set_blksize(test, 512); | ||
567 | if (ret) | ||
568 | return ret; | ||
569 | |||
570 | ret = __mmc_test_transfer(test, 1, 1, test->buffer, 0, 1, 512); | ||
571 | if (ret) | ||
572 | return ret; | ||
573 | |||
574 | return 0; | ||
575 | } | ||
576 | |||
577 | static int mmc_test_xfersize_read(struct mmc_test_card *test) | ||
578 | { | ||
579 | int ret; | ||
580 | |||
581 | ret = mmc_test_set_blksize(test, 512); | ||
582 | if (ret) | ||
583 | return ret; | ||
584 | |||
585 | ret = __mmc_test_transfer(test, 0, 1, test->buffer, 0, 1, 512); | ||
586 | if (ret) | ||
587 | return ret; | ||
588 | |||
589 | return 0; | ||
590 | } | ||
591 | |||
592 | static int mmc_test_multi_xfersize_write(struct mmc_test_card *test) | ||
593 | { | ||
594 | int ret; | ||
595 | |||
596 | if (test->card->host->max_blk_count == 1) | ||
597 | return RESULT_UNSUP_HOST; | ||
598 | |||
599 | ret = mmc_test_set_blksize(test, 512); | ||
600 | if (ret) | ||
601 | return ret; | ||
602 | |||
603 | ret = __mmc_test_transfer(test, 1, 1, test->buffer, 0, 2, 512); | ||
604 | if (ret) | ||
605 | return ret; | ||
606 | |||
607 | return 0; | ||
608 | } | ||
609 | |||
610 | static int mmc_test_multi_xfersize_read(struct mmc_test_card *test) | ||
611 | { | ||
612 | int ret; | ||
613 | |||
614 | if (test->card->host->max_blk_count == 1) | ||
615 | return RESULT_UNSUP_HOST; | ||
616 | |||
617 | ret = mmc_test_set_blksize(test, 512); | ||
618 | if (ret) | ||
619 | return ret; | ||
620 | |||
621 | ret = __mmc_test_transfer(test, 0, 1, test->buffer, 0, 2, 512); | ||
622 | if (ret) | ||
623 | return ret; | ||
624 | |||
625 | return 0; | ||
626 | } | ||
627 | |||
628 | static const struct mmc_test_case mmc_test_cases[] = { | ||
629 | { | ||
630 | .name = "Basic write (no data verification)", | ||
631 | .run = mmc_test_basic_write, | ||
632 | }, | ||
633 | |||
634 | { | ||
635 | .name = "Basic read (no data verification)", | ||
636 | .run = mmc_test_basic_read, | ||
637 | }, | ||
638 | |||
639 | { | ||
640 | .name = "Basic write (with data verification)", | ||
641 | .prepare = mmc_test_prepare_verify_write, | ||
642 | .run = mmc_test_verify_write, | ||
643 | .cleanup = mmc_test_cleanup_verify, | ||
644 | }, | ||
645 | |||
646 | { | ||
647 | .name = "Basic read (with data verification)", | ||
648 | .prepare = mmc_test_prepare_verify_read, | ||
649 | .run = mmc_test_verify_read, | ||
650 | .cleanup = mmc_test_cleanup_verify, | ||
651 | }, | ||
652 | |||
653 | { | ||
654 | .name = "Multi-block write", | ||
655 | .prepare = mmc_test_prepare_verify_write, | ||
656 | .run = mmc_test_multi_write, | ||
657 | .cleanup = mmc_test_cleanup_verify, | ||
658 | }, | ||
659 | |||
660 | { | ||
661 | .name = "Multi-block read", | ||
662 | .prepare = mmc_test_prepare_verify_read, | ||
663 | .run = mmc_test_multi_read, | ||
664 | .cleanup = mmc_test_cleanup_verify, | ||
665 | }, | ||
666 | |||
667 | { | ||
668 | .name = "Power of two block writes", | ||
669 | .prepare = mmc_test_prepare_verify_write, | ||
670 | .run = mmc_test_pow2_write, | ||
671 | .cleanup = mmc_test_cleanup_verify, | ||
672 | }, | ||
673 | |||
674 | { | ||
675 | .name = "Power of two block reads", | ||
676 | .prepare = mmc_test_prepare_verify_read, | ||
677 | .run = mmc_test_pow2_read, | ||
678 | .cleanup = mmc_test_cleanup_verify, | ||
679 | }, | ||
680 | |||
681 | { | ||
682 | .name = "Weird sized block writes", | ||
683 | .prepare = mmc_test_prepare_verify_write, | ||
684 | .run = mmc_test_weird_write, | ||
685 | .cleanup = mmc_test_cleanup_verify, | ||
686 | }, | ||
687 | |||
688 | { | ||
689 | .name = "Weird sized block reads", | ||
690 | .prepare = mmc_test_prepare_verify_read, | ||
691 | .run = mmc_test_weird_read, | ||
692 | .cleanup = mmc_test_cleanup_verify, | ||
693 | }, | ||
694 | |||
695 | { | ||
696 | .name = "Badly aligned write", | ||
697 | .prepare = mmc_test_prepare_verify_write, | ||
698 | .run = mmc_test_align_write, | ||
699 | .cleanup = mmc_test_cleanup_verify, | ||
700 | }, | ||
701 | |||
702 | { | ||
703 | .name = "Badly aligned read", | ||
704 | .prepare = mmc_test_prepare_verify_read, | ||
705 | .run = mmc_test_align_read, | ||
706 | .cleanup = mmc_test_cleanup_verify, | ||
707 | }, | ||
708 | |||
709 | { | ||
710 | .name = "Badly aligned multi-block write", | ||
711 | .prepare = mmc_test_prepare_verify_write, | ||
712 | .run = mmc_test_align_multi_write, | ||
713 | .cleanup = mmc_test_cleanup_verify, | ||
714 | }, | ||
715 | |||
716 | { | ||
717 | .name = "Badly aligned multi-block read", | ||
718 | .prepare = mmc_test_prepare_verify_read, | ||
719 | .run = mmc_test_align_multi_read, | ||
720 | .cleanup = mmc_test_cleanup_verify, | ||
721 | }, | ||
722 | |||
723 | { | ||
724 | .name = "Correct xfer_size at write (start failure)", | ||
725 | .run = mmc_test_xfersize_write, | ||
726 | }, | ||
727 | |||
728 | { | ||
729 | .name = "Correct xfer_size at read (start failure)", | ||
730 | .run = mmc_test_xfersize_read, | ||
731 | }, | ||
732 | |||
733 | { | ||
734 | .name = "Correct xfer_size at write (midway failure)", | ||
735 | .run = mmc_test_multi_xfersize_write, | ||
736 | }, | ||
737 | |||
738 | { | ||
739 | .name = "Correct xfer_size at read (midway failure)", | ||
740 | .run = mmc_test_multi_xfersize_read, | ||
741 | }, | ||
742 | }; | ||
743 | |||
744 | static struct mutex mmc_test_lock; | ||
745 | |||
746 | static void mmc_test_run(struct mmc_test_card *test) | ||
747 | { | ||
748 | int i, ret; | ||
749 | |||
750 | printk(KERN_INFO "%s: Starting tests of card %s...\n", | ||
751 | mmc_hostname(test->card->host), mmc_card_id(test->card)); | ||
752 | |||
753 | mmc_claim_host(test->card->host); | ||
754 | |||
755 | for (i = 0;i < ARRAY_SIZE(mmc_test_cases);i++) { | ||
756 | printk(KERN_INFO "%s: Test case %d. %s...\n", | ||
757 | mmc_hostname(test->card->host), i + 1, | ||
758 | mmc_test_cases[i].name); | ||
759 | |||
760 | if (mmc_test_cases[i].prepare) { | ||
761 | ret = mmc_test_cases[i].prepare(test); | ||
762 | if (ret) { | ||
763 | printk(KERN_INFO "%s: Result: Prepare " | ||
764 | "stage failed! (%d)\n", | ||
765 | mmc_hostname(test->card->host), | ||
766 | ret); | ||
767 | continue; | ||
768 | } | ||
769 | } | ||
770 | |||
771 | ret = mmc_test_cases[i].run(test); | ||
772 | switch (ret) { | ||
773 | case RESULT_OK: | ||
774 | printk(KERN_INFO "%s: Result: OK\n", | ||
775 | mmc_hostname(test->card->host)); | ||
776 | break; | ||
777 | case RESULT_FAIL: | ||
778 | printk(KERN_INFO "%s: Result: FAILED\n", | ||
779 | mmc_hostname(test->card->host)); | ||
780 | break; | ||
781 | case RESULT_UNSUP_HOST: | ||
782 | printk(KERN_INFO "%s: Result: UNSUPPORTED " | ||
783 | "(by host)\n", | ||
784 | mmc_hostname(test->card->host)); | ||
785 | break; | ||
786 | case RESULT_UNSUP_CARD: | ||
787 | printk(KERN_INFO "%s: Result: UNSUPPORTED " | ||
788 | "(by card)\n", | ||
789 | mmc_hostname(test->card->host)); | ||
790 | break; | ||
791 | default: | ||
792 | printk(KERN_INFO "%s: Result: ERROR (%d)\n", | ||
793 | mmc_hostname(test->card->host), ret); | ||
794 | } | ||
795 | |||
796 | if (mmc_test_cases[i].cleanup) { | ||
797 | ret = mmc_test_cases[i].cleanup(test); | ||
798 | if (ret) { | ||
799 | printk(KERN_INFO "%s: Warning: Cleanup " | ||
800 | "stage failed! (%d)\n", | ||
801 | mmc_hostname(test->card->host), | ||
802 | ret); | ||
803 | } | ||
804 | } | ||
805 | } | ||
806 | |||
807 | mmc_release_host(test->card->host); | ||
808 | |||
809 | printk(KERN_INFO "%s: Tests completed.\n", | ||
810 | mmc_hostname(test->card->host)); | ||
811 | } | ||
812 | |||
813 | static ssize_t mmc_test_show(struct device *dev, | ||
814 | struct device_attribute *attr, char *buf) | ||
815 | { | ||
816 | mutex_lock(&mmc_test_lock); | ||
817 | mutex_unlock(&mmc_test_lock); | ||
818 | |||
819 | return 0; | ||
820 | } | ||
821 | |||
822 | static ssize_t mmc_test_store(struct device *dev, | ||
823 | struct device_attribute *attr, const char *buf, size_t count) | ||
824 | { | ||
825 | struct mmc_card *card; | ||
826 | struct mmc_test_card *test; | ||
827 | |||
828 | card = container_of(dev, struct mmc_card, dev); | ||
829 | |||
830 | test = kzalloc(sizeof(struct mmc_test_card), GFP_KERNEL); | ||
831 | if (!test) | ||
832 | return -ENOMEM; | ||
833 | |||
834 | test->card = card; | ||
835 | |||
836 | test->buffer = kzalloc(BUFFER_SIZE, GFP_KERNEL); | ||
837 | if (test->buffer) { | ||
838 | mutex_lock(&mmc_test_lock); | ||
839 | mmc_test_run(test); | ||
840 | mutex_unlock(&mmc_test_lock); | ||
841 | } | ||
842 | |||
843 | kfree(test->buffer); | ||
844 | kfree(test); | ||
845 | |||
846 | return count; | ||
847 | } | ||
848 | |||
849 | static DEVICE_ATTR(test, S_IWUSR | S_IRUGO, mmc_test_show, mmc_test_store); | ||
850 | |||
851 | static int mmc_test_probe(struct mmc_card *card) | ||
852 | { | ||
853 | int ret; | ||
854 | |||
855 | mutex_init(&mmc_test_lock); | ||
856 | |||
857 | ret = device_create_file(&card->dev, &dev_attr_test); | ||
858 | if (ret) | ||
859 | return ret; | ||
860 | |||
861 | return 0; | ||
862 | } | ||
863 | |||
864 | static void mmc_test_remove(struct mmc_card *card) | ||
865 | { | ||
866 | device_remove_file(&card->dev, &dev_attr_test); | ||
867 | } | ||
868 | |||
869 | static struct mmc_driver mmc_driver = { | ||
870 | .drv = { | ||
871 | .name = "mmc_test", | ||
872 | }, | ||
873 | .probe = mmc_test_probe, | ||
874 | .remove = mmc_test_remove, | ||
875 | }; | ||
876 | |||
877 | static int __init mmc_test_init(void) | ||
878 | { | ||
879 | return mmc_register_driver(&mmc_driver); | ||
880 | } | ||
881 | |||
882 | static void __exit mmc_test_exit(void) | ||
883 | { | ||
884 | mmc_unregister_driver(&mmc_driver); | ||
885 | } | ||
886 | |||
887 | module_init(mmc_test_init); | ||
888 | module_exit(mmc_test_exit); | ||
889 | |||
890 | MODULE_LICENSE("GPL"); | ||
891 | MODULE_DESCRIPTION("Multimedia Card (MMC) host test driver"); | ||
892 | MODULE_AUTHOR("Pierre Ossman"); | ||
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig index 3b3cd0e74715..dead61754ad7 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig | |||
@@ -119,7 +119,7 @@ config MMC_TIFM_SD | |||
119 | 119 | ||
120 | config MMC_SPI | 120 | config MMC_SPI |
121 | tristate "MMC/SD over SPI" | 121 | tristate "MMC/SD over SPI" |
122 | depends on MMC && SPI_MASTER && !HIGHMEM | 122 | depends on MMC && SPI_MASTER && !HIGHMEM && HAS_DMA |
123 | select CRC7 | 123 | select CRC7 |
124 | select CRC_ITU_T | 124 | select CRC_ITU_T |
125 | help | 125 | help |
diff --git a/drivers/mmc/host/at91_mci.c b/drivers/mmc/host/at91_mci.c index a28fc2f68ce2..8979ad330a4d 100644 --- a/drivers/mmc/host/at91_mci.c +++ b/drivers/mmc/host/at91_mci.c | |||
@@ -663,9 +663,12 @@ static void at91_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) | |||
663 | gpio_set_value(host->board->vcc_pin, 0); | 663 | gpio_set_value(host->board->vcc_pin, 0); |
664 | break; | 664 | break; |
665 | case MMC_POWER_UP: | 665 | case MMC_POWER_UP: |
666 | case MMC_POWER_ON: | ||
667 | gpio_set_value(host->board->vcc_pin, 1); | 666 | gpio_set_value(host->board->vcc_pin, 1); |
668 | break; | 667 | break; |
668 | case MMC_POWER_ON: | ||
669 | break; | ||
670 | default: | ||
671 | WARN_ON(1); | ||
669 | } | 672 | } |
670 | } | 673 | } |
671 | } | 674 | } |
diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c index 14759e9f42ad..549517c35675 100644 --- a/drivers/mmc/host/omap.c +++ b/drivers/mmc/host/omap.c | |||
@@ -1003,7 +1003,7 @@ static void mmc_omap_dma_cb(int lch, u16 ch_status, void *data) | |||
1003 | 1003 | ||
1004 | static int mmc_omap_get_dma_channel(struct mmc_omap_host *host, struct mmc_data *data) | 1004 | static int mmc_omap_get_dma_channel(struct mmc_omap_host *host, struct mmc_data *data) |
1005 | { | 1005 | { |
1006 | const char *dev_name; | 1006 | const char *dma_dev_name; |
1007 | int sync_dev, dma_ch, is_read, r; | 1007 | int sync_dev, dma_ch, is_read, r; |
1008 | 1008 | ||
1009 | is_read = !(data->flags & MMC_DATA_WRITE); | 1009 | is_read = !(data->flags & MMC_DATA_WRITE); |
@@ -1018,21 +1018,21 @@ static int mmc_omap_get_dma_channel(struct mmc_omap_host *host, struct mmc_data | |||
1018 | if (is_read) { | 1018 | if (is_read) { |
1019 | if (host->id == 1) { | 1019 | if (host->id == 1) { |
1020 | sync_dev = OMAP_DMA_MMC_RX; | 1020 | sync_dev = OMAP_DMA_MMC_RX; |
1021 | dev_name = "MMC1 read"; | 1021 | dma_dev_name = "MMC1 read"; |
1022 | } else { | 1022 | } else { |
1023 | sync_dev = OMAP_DMA_MMC2_RX; | 1023 | sync_dev = OMAP_DMA_MMC2_RX; |
1024 | dev_name = "MMC2 read"; | 1024 | dma_dev_name = "MMC2 read"; |
1025 | } | 1025 | } |
1026 | } else { | 1026 | } else { |
1027 | if (host->id == 1) { | 1027 | if (host->id == 1) { |
1028 | sync_dev = OMAP_DMA_MMC_TX; | 1028 | sync_dev = OMAP_DMA_MMC_TX; |
1029 | dev_name = "MMC1 write"; | 1029 | dma_dev_name = "MMC1 write"; |
1030 | } else { | 1030 | } else { |
1031 | sync_dev = OMAP_DMA_MMC2_TX; | 1031 | sync_dev = OMAP_DMA_MMC2_TX; |
1032 | dev_name = "MMC2 write"; | 1032 | dma_dev_name = "MMC2 write"; |
1033 | } | 1033 | } |
1034 | } | 1034 | } |
1035 | r = omap_request_dma(sync_dev, dev_name, mmc_omap_dma_cb, | 1035 | r = omap_request_dma(sync_dev, dma_dev_name, mmc_omap_dma_cb, |
1036 | host, &dma_ch); | 1036 | host, &dma_ch); |
1037 | if (r != 0) { | 1037 | if (r != 0) { |
1038 | dev_dbg(mmc_dev(host->mmc), "omap_request_dma() failed with %d\n", r); | 1038 | dev_dbg(mmc_dev(host->mmc), "omap_request_dma() failed with %d\n", r); |
diff --git a/drivers/mtd/maps/ck804xrom.c b/drivers/mtd/maps/ck804xrom.c index 59d8fb49270a..effaf7cdefab 100644 --- a/drivers/mtd/maps/ck804xrom.c +++ b/drivers/mtd/maps/ck804xrom.c | |||
@@ -331,15 +331,15 @@ static void __devexit ck804xrom_remove_one (struct pci_dev *pdev) | |||
331 | } | 331 | } |
332 | 332 | ||
333 | static struct pci_device_id ck804xrom_pci_tbl[] = { | 333 | static struct pci_device_id ck804xrom_pci_tbl[] = { |
334 | { PCI_VENDOR_ID_NVIDIA, 0x0051, PCI_ANY_ID, PCI_ANY_ID, DEV_CK804 }, | 334 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0051), .driver_data = DEV_CK804 }, |
335 | { PCI_VENDOR_ID_NVIDIA, 0x0360, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 335 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0360), .driver_data = DEV_MCP55 }, |
336 | { PCI_VENDOR_ID_NVIDIA, 0x0361, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 336 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0361), .driver_data = DEV_MCP55 }, |
337 | { PCI_VENDOR_ID_NVIDIA, 0x0362, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 337 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0362), .driver_data = DEV_MCP55 }, |
338 | { PCI_VENDOR_ID_NVIDIA, 0x0363, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 338 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0363), .driver_data = DEV_MCP55 }, |
339 | { PCI_VENDOR_ID_NVIDIA, 0x0364, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 339 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0364), .driver_data = DEV_MCP55 }, |
340 | { PCI_VENDOR_ID_NVIDIA, 0x0365, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 340 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0365), .driver_data = DEV_MCP55 }, |
341 | { PCI_VENDOR_ID_NVIDIA, 0x0366, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 341 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0366), .driver_data = DEV_MCP55 }, |
342 | { PCI_VENDOR_ID_NVIDIA, 0x0367, PCI_ANY_ID, PCI_ANY_ID, DEV_MCP55 }, | 342 | { PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, 0x0367), .driver_data = DEV_MCP55 }, |
343 | { 0, } | 343 | { 0, } |
344 | }; | 344 | }; |
345 | 345 | ||
diff --git a/drivers/net/82596.c b/drivers/net/82596.c index 2797da7eeee6..da292e647eb1 100644 --- a/drivers/net/82596.c +++ b/drivers/net/82596.c | |||
@@ -1162,6 +1162,7 @@ struct net_device * __init i82596_probe(int unit) | |||
1162 | memcpy(eth_addr, (void *) 0xfffc1f2c, 6); /* YUCK! Get addr from NOVRAM */ | 1162 | memcpy(eth_addr, (void *) 0xfffc1f2c, 6); /* YUCK! Get addr from NOVRAM */ |
1163 | dev->base_addr = MVME_I596_BASE; | 1163 | dev->base_addr = MVME_I596_BASE; |
1164 | dev->irq = (unsigned) MVME16x_IRQ_I596; | 1164 | dev->irq = (unsigned) MVME16x_IRQ_I596; |
1165 | goto found; | ||
1165 | } | 1166 | } |
1166 | #endif | 1167 | #endif |
1167 | #ifdef ENABLE_BVME6000_NET | 1168 | #ifdef ENABLE_BVME6000_NET |
@@ -1176,6 +1177,7 @@ struct net_device * __init i82596_probe(int unit) | |||
1176 | rtc[3] = msr; | 1177 | rtc[3] = msr; |
1177 | dev->base_addr = BVME_I596_BASE; | 1178 | dev->base_addr = BVME_I596_BASE; |
1178 | dev->irq = (unsigned) BVME_IRQ_I596; | 1179 | dev->irq = (unsigned) BVME_IRQ_I596; |
1180 | goto found; | ||
1179 | } | 1181 | } |
1180 | #endif | 1182 | #endif |
1181 | #ifdef ENABLE_APRICOT | 1183 | #ifdef ENABLE_APRICOT |
@@ -1212,8 +1214,13 @@ struct net_device * __init i82596_probe(int unit) | |||
1212 | } | 1214 | } |
1213 | 1215 | ||
1214 | dev->irq = 10; | 1216 | dev->irq = 10; |
1217 | goto found; | ||
1215 | } | 1218 | } |
1216 | #endif | 1219 | #endif |
1220 | err = -ENODEV; | ||
1221 | goto out; | ||
1222 | |||
1223 | found: | ||
1217 | dev->mem_start = (int)__get_free_pages(GFP_ATOMIC, 0); | 1224 | dev->mem_start = (int)__get_free_pages(GFP_ATOMIC, 0); |
1218 | if (!dev->mem_start) { | 1225 | if (!dev->mem_start) { |
1219 | err = -ENOMEM; | 1226 | err = -ENOMEM; |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 654a78c31087..c537f53ffcb9 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -1353,7 +1353,7 @@ config APRICOT | |||
1353 | 1353 | ||
1354 | config B44 | 1354 | config B44 |
1355 | tristate "Broadcom 440x/47xx ethernet support" | 1355 | tristate "Broadcom 440x/47xx ethernet support" |
1356 | depends on SSB_POSSIBLE | 1356 | depends on SSB_POSSIBLE && HAS_DMA |
1357 | select SSB | 1357 | select SSB |
1358 | select MII | 1358 | select MII |
1359 | help | 1359 | help |
diff --git a/drivers/net/apne.c b/drivers/net/apne.c index 47a8275d3962..867f6fff543c 100644 --- a/drivers/net/apne.c +++ b/drivers/net/apne.c | |||
@@ -127,6 +127,9 @@ struct net_device * __init apne_probe(int unit) | |||
127 | #endif | 127 | #endif |
128 | int err; | 128 | int err; |
129 | 129 | ||
130 | if (!MACH_IS_AMIGA) | ||
131 | return ERR_PTR(-ENODEV); | ||
132 | |||
130 | if (apne_owned) | 133 | if (apne_owned) |
131 | return ERR_PTR(-ENODEV); | 134 | return ERR_PTR(-ENODEV); |
132 | 135 | ||
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c index db04bfb3460f..32dc391e63cc 100644 --- a/drivers/net/atlx/atl1.c +++ b/drivers/net/atlx/atl1.c | |||
@@ -2024,6 +2024,7 @@ rrd_ok: | |||
2024 | /* Good Receive */ | 2024 | /* Good Receive */ |
2025 | pci_unmap_page(adapter->pdev, buffer_info->dma, | 2025 | pci_unmap_page(adapter->pdev, buffer_info->dma, |
2026 | buffer_info->length, PCI_DMA_FROMDEVICE); | 2026 | buffer_info->length, PCI_DMA_FROMDEVICE); |
2027 | buffer_info->dma = 0; | ||
2027 | skb = buffer_info->skb; | 2028 | skb = buffer_info->skb; |
2028 | length = le16_to_cpu(rrd->xsz.xsum_sz.pkt_size); | 2029 | length = le16_to_cpu(rrd->xsz.xsum_sz.pkt_size); |
2029 | 2030 | ||
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c index 348371fda597..fba87abe78ee 100644 --- a/drivers/net/cs89x0.c +++ b/drivers/net/cs89x0.c | |||
@@ -1394,7 +1394,11 @@ net_open(struct net_device *dev) | |||
1394 | #endif | 1394 | #endif |
1395 | if (!result) { | 1395 | if (!result) { |
1396 | printk(KERN_ERR "%s: EEPROM is configured for unavailable media\n", dev->name); | 1396 | printk(KERN_ERR "%s: EEPROM is configured for unavailable media\n", dev->name); |
1397 | release_irq: | 1397 | release_dma: |
1398 | #if ALLOW_DMA | ||
1399 | free_dma(dev->dma); | ||
1400 | #endif | ||
1401 | release_irq: | ||
1398 | #if ALLOW_DMA | 1402 | #if ALLOW_DMA |
1399 | release_dma_buff(lp); | 1403 | release_dma_buff(lp); |
1400 | #endif | 1404 | #endif |
@@ -1442,12 +1446,12 @@ net_open(struct net_device *dev) | |||
1442 | if ((result = detect_bnc(dev)) != DETECTED_NONE) | 1446 | if ((result = detect_bnc(dev)) != DETECTED_NONE) |
1443 | break; | 1447 | break; |
1444 | printk(KERN_ERR "%s: no media detected\n", dev->name); | 1448 | printk(KERN_ERR "%s: no media detected\n", dev->name); |
1445 | goto release_irq; | 1449 | goto release_dma; |
1446 | } | 1450 | } |
1447 | switch(result) { | 1451 | switch(result) { |
1448 | case DETECTED_NONE: | 1452 | case DETECTED_NONE: |
1449 | printk(KERN_ERR "%s: no network cable attached to configured media\n", dev->name); | 1453 | printk(KERN_ERR "%s: no network cable attached to configured media\n", dev->name); |
1450 | goto release_irq; | 1454 | goto release_dma; |
1451 | case DETECTED_RJ45H: | 1455 | case DETECTED_RJ45H: |
1452 | printk(KERN_INFO "%s: using half-duplex 10Base-T (RJ-45)\n", dev->name); | 1456 | printk(KERN_INFO "%s: using half-duplex 10Base-T (RJ-45)\n", dev->name); |
1453 | break; | 1457 | break; |
diff --git a/drivers/net/irda/Kconfig b/drivers/net/irda/Kconfig index ce816ba9c40d..e6317557a531 100644 --- a/drivers/net/irda/Kconfig +++ b/drivers/net/irda/Kconfig | |||
@@ -329,6 +329,7 @@ config PXA_FICP | |||
329 | config MCS_FIR | 329 | config MCS_FIR |
330 | tristate "MosChip MCS7780 IrDA-USB dongle" | 330 | tristate "MosChip MCS7780 IrDA-USB dongle" |
331 | depends on IRDA && USB && EXPERIMENTAL | 331 | depends on IRDA && USB && EXPERIMENTAL |
332 | select CRC32 | ||
332 | help | 333 | help |
333 | Say Y or M here if you want to build support for the MosChip | 334 | Say Y or M here if you want to build support for the MosChip |
334 | MCS7780 IrDA-USB bridge device driver. | 335 | MCS7780 IrDA-USB bridge device driver. |
diff --git a/drivers/net/irda/irda-usb.c b/drivers/net/irda/irda-usb.c index 9081234ab458..6f50ed7b183f 100644 --- a/drivers/net/irda/irda-usb.c +++ b/drivers/net/irda/irda-usb.c | |||
@@ -1120,7 +1120,7 @@ static int stir421x_patch_device(struct irda_usb_cb *self) | |||
1120 | } | 1120 | } |
1121 | } | 1121 | } |
1122 | 1122 | ||
1123 | if (self->usbdev->descriptor.bcdDevice == fw_version) { | 1123 | if (self->usbdev->descriptor.bcdDevice == cpu_to_le16(fw_version)) { |
1124 | /* | 1124 | /* |
1125 | * If we're here, we've found a correct patch | 1125 | * If we're here, we've found a correct patch |
1126 | * The actual image starts after the "STMP" keyword | 1126 | * The actual image starts after the "STMP" keyword |
diff --git a/drivers/net/irda/irda-usb.h b/drivers/net/irda/irda-usb.h index e846c38224a3..a0ca9c1fe196 100644 --- a/drivers/net/irda/irda-usb.h +++ b/drivers/net/irda/irda-usb.h | |||
@@ -117,11 +117,11 @@ | |||
117 | struct irda_class_desc { | 117 | struct irda_class_desc { |
118 | __u8 bLength; | 118 | __u8 bLength; |
119 | __u8 bDescriptorType; | 119 | __u8 bDescriptorType; |
120 | __u16 bcdSpecRevision; | 120 | __le16 bcdSpecRevision; |
121 | __u8 bmDataSize; | 121 | __u8 bmDataSize; |
122 | __u8 bmWindowSize; | 122 | __u8 bmWindowSize; |
123 | __u8 bmMinTurnaroundTime; | 123 | __u8 bmMinTurnaroundTime; |
124 | __u16 wBaudRate; | 124 | __le16 wBaudRate; |
125 | __u8 bmAdditionalBOFs; | 125 | __u8 bmAdditionalBOFs; |
126 | __u8 bIrdaRateSniff; | 126 | __u8 bIrdaRateSniff; |
127 | __u8 bMaxUnicastList; | 127 | __u8 bMaxUnicastList; |
diff --git a/drivers/net/mac89x0.c b/drivers/net/mac89x0.c index 2a66e5b7cebc..4ce8afd481c3 100644 --- a/drivers/net/mac89x0.c +++ b/drivers/net/mac89x0.c | |||
@@ -183,6 +183,9 @@ struct net_device * __init mac89x0_probe(int unit) | |||
183 | int err = -ENODEV; | 183 | int err = -ENODEV; |
184 | DECLARE_MAC_BUF(mac); | 184 | DECLARE_MAC_BUF(mac); |
185 | 185 | ||
186 | if (!MACH_IS_MAC) | ||
187 | return ERR_PTR(-ENODEV); | ||
188 | |||
186 | dev = alloc_etherdev(sizeof(struct net_local)); | 189 | dev = alloc_etherdev(sizeof(struct net_local)); |
187 | if (!dev) | 190 | if (!dev) |
188 | return ERR_PTR(-ENOMEM); | 191 | return ERR_PTR(-ENOMEM); |
diff --git a/drivers/net/macmace.c b/drivers/net/macmace.c index 18770527df99..51ad3765e075 100644 --- a/drivers/net/macmace.c +++ b/drivers/net/macmace.c | |||
@@ -781,6 +781,9 @@ static int __init mac_mace_init_module(void) | |||
781 | { | 781 | { |
782 | int err; | 782 | int err; |
783 | 783 | ||
784 | if (!MACH_IS_MAC) | ||
785 | return -ENODEV; | ||
786 | |||
784 | if ((err = platform_driver_register(&mac_mace_driver))) { | 787 | if ((err = platform_driver_register(&mac_mace_driver))) { |
785 | printk(KERN_ERR "Driver registration failed\n"); | 788 | printk(KERN_ERR "Driver registration failed\n"); |
786 | return err; | 789 | return err; |
diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c index 93007d38df57..9a68d2ea5f3e 100644 --- a/drivers/net/myri10ge/myri10ge.c +++ b/drivers/net/myri10ge/myri10ge.c | |||
@@ -76,7 +76,7 @@ | |||
76 | #include "myri10ge_mcp.h" | 76 | #include "myri10ge_mcp.h" |
77 | #include "myri10ge_mcp_gen_header.h" | 77 | #include "myri10ge_mcp_gen_header.h" |
78 | 78 | ||
79 | #define MYRI10GE_VERSION_STR "1.3.2-1.287" | 79 | #define MYRI10GE_VERSION_STR "1.3.99-1.347" |
80 | 80 | ||
81 | MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); | 81 | MODULE_DESCRIPTION("Myricom 10G driver (10GbE)"); |
82 | MODULE_AUTHOR("Maintainer: help@myri.com"); | 82 | MODULE_AUTHOR("Maintainer: help@myri.com"); |
diff --git a/drivers/net/pppol2tp.c b/drivers/net/pppol2tp.c index 8db342f2fdc9..70cfdb46aa27 100644 --- a/drivers/net/pppol2tp.c +++ b/drivers/net/pppol2tp.c | |||
@@ -240,12 +240,15 @@ static inline struct pppol2tp_session *pppol2tp_sock_to_session(struct sock *sk) | |||
240 | if (sk == NULL) | 240 | if (sk == NULL) |
241 | return NULL; | 241 | return NULL; |
242 | 242 | ||
243 | sock_hold(sk); | ||
243 | session = (struct pppol2tp_session *)(sk->sk_user_data); | 244 | session = (struct pppol2tp_session *)(sk->sk_user_data); |
244 | if (session == NULL) | 245 | if (session == NULL) { |
245 | return NULL; | 246 | sock_put(sk); |
247 | goto out; | ||
248 | } | ||
246 | 249 | ||
247 | BUG_ON(session->magic != L2TP_SESSION_MAGIC); | 250 | BUG_ON(session->magic != L2TP_SESSION_MAGIC); |
248 | 251 | out: | |
249 | return session; | 252 | return session; |
250 | } | 253 | } |
251 | 254 | ||
@@ -256,12 +259,15 @@ static inline struct pppol2tp_tunnel *pppol2tp_sock_to_tunnel(struct sock *sk) | |||
256 | if (sk == NULL) | 259 | if (sk == NULL) |
257 | return NULL; | 260 | return NULL; |
258 | 261 | ||
262 | sock_hold(sk); | ||
259 | tunnel = (struct pppol2tp_tunnel *)(sk->sk_user_data); | 263 | tunnel = (struct pppol2tp_tunnel *)(sk->sk_user_data); |
260 | if (tunnel == NULL) | 264 | if (tunnel == NULL) { |
261 | return NULL; | 265 | sock_put(sk); |
266 | goto out; | ||
267 | } | ||
262 | 268 | ||
263 | BUG_ON(tunnel->magic != L2TP_TUNNEL_MAGIC); | 269 | BUG_ON(tunnel->magic != L2TP_TUNNEL_MAGIC); |
264 | 270 | out: | |
265 | return tunnel; | 271 | return tunnel; |
266 | } | 272 | } |
267 | 273 | ||
@@ -716,12 +722,14 @@ discard: | |||
716 | session->stats.rx_errors++; | 722 | session->stats.rx_errors++; |
717 | kfree_skb(skb); | 723 | kfree_skb(skb); |
718 | sock_put(session->sock); | 724 | sock_put(session->sock); |
725 | sock_put(sock); | ||
719 | 726 | ||
720 | return 0; | 727 | return 0; |
721 | 728 | ||
722 | error: | 729 | error: |
723 | /* Put UDP header back */ | 730 | /* Put UDP header back */ |
724 | __skb_push(skb, sizeof(struct udphdr)); | 731 | __skb_push(skb, sizeof(struct udphdr)); |
732 | sock_put(sock); | ||
725 | 733 | ||
726 | no_tunnel: | 734 | no_tunnel: |
727 | return 1; | 735 | return 1; |
@@ -745,10 +753,13 @@ static int pppol2tp_udp_encap_recv(struct sock *sk, struct sk_buff *skb) | |||
745 | "%s: received %d bytes\n", tunnel->name, skb->len); | 753 | "%s: received %d bytes\n", tunnel->name, skb->len); |
746 | 754 | ||
747 | if (pppol2tp_recv_core(sk, skb)) | 755 | if (pppol2tp_recv_core(sk, skb)) |
748 | goto pass_up; | 756 | goto pass_up_put; |
749 | 757 | ||
758 | sock_put(sk); | ||
750 | return 0; | 759 | return 0; |
751 | 760 | ||
761 | pass_up_put: | ||
762 | sock_put(sk); | ||
752 | pass_up: | 763 | pass_up: |
753 | return 1; | 764 | return 1; |
754 | } | 765 | } |
@@ -858,7 +869,7 @@ static int pppol2tp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msgh | |||
858 | 869 | ||
859 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); | 870 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); |
860 | if (tunnel == NULL) | 871 | if (tunnel == NULL) |
861 | goto error; | 872 | goto error_put_sess; |
862 | 873 | ||
863 | /* What header length is configured for this session? */ | 874 | /* What header length is configured for this session? */ |
864 | hdr_len = pppol2tp_l2tp_header_len(session); | 875 | hdr_len = pppol2tp_l2tp_header_len(session); |
@@ -870,7 +881,7 @@ static int pppol2tp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msgh | |||
870 | sizeof(ppph) + total_len, | 881 | sizeof(ppph) + total_len, |
871 | 0, GFP_KERNEL); | 882 | 0, GFP_KERNEL); |
872 | if (!skb) | 883 | if (!skb) |
873 | goto error; | 884 | goto error_put_sess_tun; |
874 | 885 | ||
875 | /* Reserve space for headers. */ | 886 | /* Reserve space for headers. */ |
876 | skb_reserve(skb, NET_SKB_PAD); | 887 | skb_reserve(skb, NET_SKB_PAD); |
@@ -900,7 +911,7 @@ static int pppol2tp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msgh | |||
900 | error = memcpy_fromiovec(skb->data, m->msg_iov, total_len); | 911 | error = memcpy_fromiovec(skb->data, m->msg_iov, total_len); |
901 | if (error < 0) { | 912 | if (error < 0) { |
902 | kfree_skb(skb); | 913 | kfree_skb(skb); |
903 | goto error; | 914 | goto error_put_sess_tun; |
904 | } | 915 | } |
905 | skb_put(skb, total_len); | 916 | skb_put(skb, total_len); |
906 | 917 | ||
@@ -947,10 +958,33 @@ static int pppol2tp_sendmsg(struct kiocb *iocb, struct socket *sock, struct msgh | |||
947 | session->stats.tx_errors++; | 958 | session->stats.tx_errors++; |
948 | } | 959 | } |
949 | 960 | ||
961 | return error; | ||
962 | |||
963 | error_put_sess_tun: | ||
964 | sock_put(session->tunnel_sock); | ||
965 | error_put_sess: | ||
966 | sock_put(sk); | ||
950 | error: | 967 | error: |
951 | return error; | 968 | return error; |
952 | } | 969 | } |
953 | 970 | ||
971 | /* Automatically called when the skb is freed. | ||
972 | */ | ||
973 | static void pppol2tp_sock_wfree(struct sk_buff *skb) | ||
974 | { | ||
975 | sock_put(skb->sk); | ||
976 | } | ||
977 | |||
978 | /* For data skbs that we transmit, we associate with the tunnel socket | ||
979 | * but don't do accounting. | ||
980 | */ | ||
981 | static inline void pppol2tp_skb_set_owner_w(struct sk_buff *skb, struct sock *sk) | ||
982 | { | ||
983 | sock_hold(sk); | ||
984 | skb->sk = sk; | ||
985 | skb->destructor = pppol2tp_sock_wfree; | ||
986 | } | ||
987 | |||
954 | /* Transmit function called by generic PPP driver. Sends PPP frame | 988 | /* Transmit function called by generic PPP driver. Sends PPP frame |
955 | * over PPPoL2TP socket. | 989 | * over PPPoL2TP socket. |
956 | * | 990 | * |
@@ -993,10 +1027,10 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb) | |||
993 | 1027 | ||
994 | sk_tun = session->tunnel_sock; | 1028 | sk_tun = session->tunnel_sock; |
995 | if (sk_tun == NULL) | 1029 | if (sk_tun == NULL) |
996 | goto abort; | 1030 | goto abort_put_sess; |
997 | tunnel = pppol2tp_sock_to_tunnel(sk_tun); | 1031 | tunnel = pppol2tp_sock_to_tunnel(sk_tun); |
998 | if (tunnel == NULL) | 1032 | if (tunnel == NULL) |
999 | goto abort; | 1033 | goto abort_put_sess; |
1000 | 1034 | ||
1001 | /* What header length is configured for this session? */ | 1035 | /* What header length is configured for this session? */ |
1002 | hdr_len = pppol2tp_l2tp_header_len(session); | 1036 | hdr_len = pppol2tp_l2tp_header_len(session); |
@@ -1009,7 +1043,7 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb) | |||
1009 | sizeof(struct udphdr) + hdr_len + sizeof(ppph); | 1043 | sizeof(struct udphdr) + hdr_len + sizeof(ppph); |
1010 | old_headroom = skb_headroom(skb); | 1044 | old_headroom = skb_headroom(skb); |
1011 | if (skb_cow_head(skb, headroom)) | 1045 | if (skb_cow_head(skb, headroom)) |
1012 | goto abort; | 1046 | goto abort_put_sess_tun; |
1013 | 1047 | ||
1014 | new_headroom = skb_headroom(skb); | 1048 | new_headroom = skb_headroom(skb); |
1015 | skb_orphan(skb); | 1049 | skb_orphan(skb); |
@@ -1069,7 +1103,7 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb) | |||
1069 | /* Get routing info from the tunnel socket */ | 1103 | /* Get routing info from the tunnel socket */ |
1070 | dst_release(skb->dst); | 1104 | dst_release(skb->dst); |
1071 | skb->dst = dst_clone(__sk_dst_get(sk_tun)); | 1105 | skb->dst = dst_clone(__sk_dst_get(sk_tun)); |
1072 | skb->sk = sk_tun; | 1106 | pppol2tp_skb_set_owner_w(skb, sk_tun); |
1073 | 1107 | ||
1074 | /* Queue the packet to IP for output */ | 1108 | /* Queue the packet to IP for output */ |
1075 | len = skb->len; | 1109 | len = skb->len; |
@@ -1086,8 +1120,14 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb) | |||
1086 | session->stats.tx_errors++; | 1120 | session->stats.tx_errors++; |
1087 | } | 1121 | } |
1088 | 1122 | ||
1123 | sock_put(sk_tun); | ||
1124 | sock_put(sk); | ||
1089 | return 1; | 1125 | return 1; |
1090 | 1126 | ||
1127 | abort_put_sess_tun: | ||
1128 | sock_put(sk_tun); | ||
1129 | abort_put_sess: | ||
1130 | sock_put(sk); | ||
1091 | abort: | 1131 | abort: |
1092 | /* Free the original skb */ | 1132 | /* Free the original skb */ |
1093 | kfree_skb(skb); | 1133 | kfree_skb(skb); |
@@ -1191,7 +1231,7 @@ static void pppol2tp_tunnel_destruct(struct sock *sk) | |||
1191 | { | 1231 | { |
1192 | struct pppol2tp_tunnel *tunnel; | 1232 | struct pppol2tp_tunnel *tunnel; |
1193 | 1233 | ||
1194 | tunnel = pppol2tp_sock_to_tunnel(sk); | 1234 | tunnel = sk->sk_user_data; |
1195 | if (tunnel == NULL) | 1235 | if (tunnel == NULL) |
1196 | goto end; | 1236 | goto end; |
1197 | 1237 | ||
@@ -1230,10 +1270,12 @@ static void pppol2tp_session_destruct(struct sock *sk) | |||
1230 | if (sk->sk_user_data != NULL) { | 1270 | if (sk->sk_user_data != NULL) { |
1231 | struct pppol2tp_tunnel *tunnel; | 1271 | struct pppol2tp_tunnel *tunnel; |
1232 | 1272 | ||
1233 | session = pppol2tp_sock_to_session(sk); | 1273 | session = sk->sk_user_data; |
1234 | if (session == NULL) | 1274 | if (session == NULL) |
1235 | goto out; | 1275 | goto out; |
1236 | 1276 | ||
1277 | BUG_ON(session->magic != L2TP_SESSION_MAGIC); | ||
1278 | |||
1237 | /* Don't use pppol2tp_sock_to_tunnel() here to | 1279 | /* Don't use pppol2tp_sock_to_tunnel() here to |
1238 | * get the tunnel context because the tunnel | 1280 | * get the tunnel context because the tunnel |
1239 | * socket might have already been closed (its | 1281 | * socket might have already been closed (its |
@@ -1279,6 +1321,7 @@ out: | |||
1279 | static int pppol2tp_release(struct socket *sock) | 1321 | static int pppol2tp_release(struct socket *sock) |
1280 | { | 1322 | { |
1281 | struct sock *sk = sock->sk; | 1323 | struct sock *sk = sock->sk; |
1324 | struct pppol2tp_session *session; | ||
1282 | int error; | 1325 | int error; |
1283 | 1326 | ||
1284 | if (!sk) | 1327 | if (!sk) |
@@ -1296,9 +1339,18 @@ static int pppol2tp_release(struct socket *sock) | |||
1296 | sock_orphan(sk); | 1339 | sock_orphan(sk); |
1297 | sock->sk = NULL; | 1340 | sock->sk = NULL; |
1298 | 1341 | ||
1342 | session = pppol2tp_sock_to_session(sk); | ||
1343 | |||
1299 | /* Purge any queued data */ | 1344 | /* Purge any queued data */ |
1300 | skb_queue_purge(&sk->sk_receive_queue); | 1345 | skb_queue_purge(&sk->sk_receive_queue); |
1301 | skb_queue_purge(&sk->sk_write_queue); | 1346 | skb_queue_purge(&sk->sk_write_queue); |
1347 | if (session != NULL) { | ||
1348 | struct sk_buff *skb; | ||
1349 | while ((skb = skb_dequeue(&session->reorder_q))) { | ||
1350 | kfree_skb(skb); | ||
1351 | sock_put(sk); | ||
1352 | } | ||
1353 | } | ||
1302 | 1354 | ||
1303 | release_sock(sk); | 1355 | release_sock(sk); |
1304 | 1356 | ||
@@ -1601,7 +1653,7 @@ static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr, | |||
1601 | 1653 | ||
1602 | error = ppp_register_channel(&po->chan); | 1654 | error = ppp_register_channel(&po->chan); |
1603 | if (error) | 1655 | if (error) |
1604 | goto end; | 1656 | goto end_put_tun; |
1605 | 1657 | ||
1606 | /* This is how we get the session context from the socket. */ | 1658 | /* This is how we get the session context from the socket. */ |
1607 | sk->sk_user_data = session; | 1659 | sk->sk_user_data = session; |
@@ -1621,6 +1673,8 @@ out_no_ppp: | |||
1621 | PRINTK(session->debug, PPPOL2TP_MSG_CONTROL, KERN_INFO, | 1673 | PRINTK(session->debug, PPPOL2TP_MSG_CONTROL, KERN_INFO, |
1622 | "%s: created\n", session->name); | 1674 | "%s: created\n", session->name); |
1623 | 1675 | ||
1676 | end_put_tun: | ||
1677 | sock_put(tunnel_sock); | ||
1624 | end: | 1678 | end: |
1625 | release_sock(sk); | 1679 | release_sock(sk); |
1626 | 1680 | ||
@@ -1668,6 +1722,7 @@ static int pppol2tp_getname(struct socket *sock, struct sockaddr *uaddr, | |||
1668 | *usockaddr_len = len; | 1722 | *usockaddr_len = len; |
1669 | 1723 | ||
1670 | error = 0; | 1724 | error = 0; |
1725 | sock_put(sock->sk); | ||
1671 | 1726 | ||
1672 | end: | 1727 | end: |
1673 | return error; | 1728 | return error; |
@@ -1906,14 +1961,17 @@ static int pppol2tp_ioctl(struct socket *sock, unsigned int cmd, | |||
1906 | err = -EBADF; | 1961 | err = -EBADF; |
1907 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); | 1962 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); |
1908 | if (tunnel == NULL) | 1963 | if (tunnel == NULL) |
1909 | goto end; | 1964 | goto end_put_sess; |
1910 | 1965 | ||
1911 | err = pppol2tp_tunnel_ioctl(tunnel, cmd, arg); | 1966 | err = pppol2tp_tunnel_ioctl(tunnel, cmd, arg); |
1912 | goto end; | 1967 | sock_put(session->tunnel_sock); |
1968 | goto end_put_sess; | ||
1913 | } | 1969 | } |
1914 | 1970 | ||
1915 | err = pppol2tp_session_ioctl(session, cmd, arg); | 1971 | err = pppol2tp_session_ioctl(session, cmd, arg); |
1916 | 1972 | ||
1973 | end_put_sess: | ||
1974 | sock_put(sk); | ||
1917 | end: | 1975 | end: |
1918 | return err; | 1976 | return err; |
1919 | } | 1977 | } |
@@ -2059,14 +2117,17 @@ static int pppol2tp_setsockopt(struct socket *sock, int level, int optname, | |||
2059 | err = -EBADF; | 2117 | err = -EBADF; |
2060 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); | 2118 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); |
2061 | if (tunnel == NULL) | 2119 | if (tunnel == NULL) |
2062 | goto end; | 2120 | goto end_put_sess; |
2063 | 2121 | ||
2064 | err = pppol2tp_tunnel_setsockopt(sk, tunnel, optname, val); | 2122 | err = pppol2tp_tunnel_setsockopt(sk, tunnel, optname, val); |
2123 | sock_put(session->tunnel_sock); | ||
2065 | } else | 2124 | } else |
2066 | err = pppol2tp_session_setsockopt(sk, session, optname, val); | 2125 | err = pppol2tp_session_setsockopt(sk, session, optname, val); |
2067 | 2126 | ||
2068 | err = 0; | 2127 | err = 0; |
2069 | 2128 | ||
2129 | end_put_sess: | ||
2130 | sock_put(sk); | ||
2070 | end: | 2131 | end: |
2071 | return err; | 2132 | return err; |
2072 | } | 2133 | } |
@@ -2181,20 +2242,24 @@ static int pppol2tp_getsockopt(struct socket *sock, int level, | |||
2181 | err = -EBADF; | 2242 | err = -EBADF; |
2182 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); | 2243 | tunnel = pppol2tp_sock_to_tunnel(session->tunnel_sock); |
2183 | if (tunnel == NULL) | 2244 | if (tunnel == NULL) |
2184 | goto end; | 2245 | goto end_put_sess; |
2185 | 2246 | ||
2186 | err = pppol2tp_tunnel_getsockopt(sk, tunnel, optname, &val); | 2247 | err = pppol2tp_tunnel_getsockopt(sk, tunnel, optname, &val); |
2248 | sock_put(session->tunnel_sock); | ||
2187 | } else | 2249 | } else |
2188 | err = pppol2tp_session_getsockopt(sk, session, optname, &val); | 2250 | err = pppol2tp_session_getsockopt(sk, session, optname, &val); |
2189 | 2251 | ||
2190 | err = -EFAULT; | 2252 | err = -EFAULT; |
2191 | if (put_user(len, (int __user *) optlen)) | 2253 | if (put_user(len, (int __user *) optlen)) |
2192 | goto end; | 2254 | goto end_put_sess; |
2193 | 2255 | ||
2194 | if (copy_to_user((void __user *) optval, &val, len)) | 2256 | if (copy_to_user((void __user *) optval, &val, len)) |
2195 | goto end; | 2257 | goto end_put_sess; |
2196 | 2258 | ||
2197 | err = 0; | 2259 | err = 0; |
2260 | |||
2261 | end_put_sess: | ||
2262 | sock_put(sk); | ||
2198 | end: | 2263 | end: |
2199 | return err; | 2264 | return err; |
2200 | } | 2265 | } |
diff --git a/drivers/net/sc92031.c b/drivers/net/sc92031.c index b4b63805ee8f..61955f8d8011 100644 --- a/drivers/net/sc92031.c +++ b/drivers/net/sc92031.c | |||
@@ -972,7 +972,7 @@ static int sc92031_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
972 | skb_copy_and_csum_dev(skb, priv->tx_bufs + entry * TX_BUF_SIZE); | 972 | skb_copy_and_csum_dev(skb, priv->tx_bufs + entry * TX_BUF_SIZE); |
973 | 973 | ||
974 | len = skb->len; | 974 | len = skb->len; |
975 | if (unlikely(len < ETH_ZLEN)) { | 975 | if (len < ETH_ZLEN) { |
976 | memset(priv->tx_bufs + entry * TX_BUF_SIZE + len, | 976 | memset(priv->tx_bufs + entry * TX_BUF_SIZE + len, |
977 | 0, ETH_ZLEN - len); | 977 | 0, ETH_ZLEN - len); |
978 | len = ETH_ZLEN; | 978 | len = ETH_ZLEN; |
diff --git a/drivers/net/sfc/falcon_xmac.c b/drivers/net/sfc/falcon_xmac.c index dbdcee4b0f8d..55c0d9760be8 100644 --- a/drivers/net/sfc/falcon_xmac.c +++ b/drivers/net/sfc/falcon_xmac.c | |||
@@ -459,7 +459,7 @@ static int falcon_check_xaui_link_up(struct efx_nic *efx) | |||
459 | tries--; | 459 | tries--; |
460 | } | 460 | } |
461 | 461 | ||
462 | EFX_ERR(efx, "Failed to bring XAUI link back up in %d tries!\n", | 462 | EFX_LOG(efx, "Failed to bring XAUI link back up in %d tries!\n", |
463 | max_tries); | 463 | max_tries); |
464 | return 0; | 464 | return 0; |
465 | } | 465 | } |
diff --git a/drivers/net/sun3lance.c b/drivers/net/sun3lance.c index f8d46134daca..359452a06c67 100644 --- a/drivers/net/sun3lance.c +++ b/drivers/net/sun3lance.c | |||
@@ -250,6 +250,9 @@ struct net_device * __init sun3lance_probe(int unit) | |||
250 | static int found; | 250 | static int found; |
251 | int err = -ENODEV; | 251 | int err = -ENODEV; |
252 | 252 | ||
253 | if (!MACH_IS_SUN3 && !MACH_IS_SUN3X) | ||
254 | return ERR_PTR(-ENODEV); | ||
255 | |||
253 | /* check that this machine has an onboard lance */ | 256 | /* check that this machine has an onboard lance */ |
254 | switch(idprom->id_machtype) { | 257 | switch(idprom->id_machtype) { |
255 | case SM_SUN3|SM_3_50: | 258 | case SM_SUN3|SM_3_50: |
diff --git a/drivers/net/sunhme.c b/drivers/net/sunhme.c index b4e7f30ea4e8..1aa425be3067 100644 --- a/drivers/net/sunhme.c +++ b/drivers/net/sunhme.c | |||
@@ -111,7 +111,7 @@ static __inline__ void tx_add_log(struct happy_meal *hp, unsigned int a, unsigne | |||
111 | struct hme_tx_logent *tlp; | 111 | struct hme_tx_logent *tlp; |
112 | unsigned long flags; | 112 | unsigned long flags; |
113 | 113 | ||
114 | save_and_cli(flags); | 114 | local_irq_save(flags); |
115 | tlp = &tx_log[txlog_cur_entry]; | 115 | tlp = &tx_log[txlog_cur_entry]; |
116 | tlp->tstamp = (unsigned int)jiffies; | 116 | tlp->tstamp = (unsigned int)jiffies; |
117 | tlp->tx_new = hp->tx_new; | 117 | tlp->tx_new = hp->tx_new; |
@@ -119,7 +119,7 @@ static __inline__ void tx_add_log(struct happy_meal *hp, unsigned int a, unsigne | |||
119 | tlp->action = a; | 119 | tlp->action = a; |
120 | tlp->status = s; | 120 | tlp->status = s; |
121 | txlog_cur_entry = (txlog_cur_entry + 1) & (TX_LOG_LEN - 1); | 121 | txlog_cur_entry = (txlog_cur_entry + 1) & (TX_LOG_LEN - 1); |
122 | restore_flags(flags); | 122 | local_irq_restore(flags); |
123 | } | 123 | } |
124 | static __inline__ void tx_dump_log(void) | 124 | static __inline__ void tx_dump_log(void) |
125 | { | 125 | { |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index d9f248f23b97..633c128a6228 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -1828,6 +1828,21 @@ static void tg3_frob_aux_power(struct tg3 *tp) | |||
1828 | GRC_LCLCTRL_GPIO_OUTPUT0 | | 1828 | GRC_LCLCTRL_GPIO_OUTPUT0 | |
1829 | GRC_LCLCTRL_GPIO_OUTPUT1), | 1829 | GRC_LCLCTRL_GPIO_OUTPUT1), |
1830 | 100); | 1830 | 100); |
1831 | } else if (tp->pdev->device == PCI_DEVICE_ID_TIGON3_5761) { | ||
1832 | /* The 5761 non-e device swaps GPIO 0 and GPIO 2. */ | ||
1833 | u32 grc_local_ctrl = GRC_LCLCTRL_GPIO_OE0 | | ||
1834 | GRC_LCLCTRL_GPIO_OE1 | | ||
1835 | GRC_LCLCTRL_GPIO_OE2 | | ||
1836 | GRC_LCLCTRL_GPIO_OUTPUT0 | | ||
1837 | GRC_LCLCTRL_GPIO_OUTPUT1 | | ||
1838 | tp->grc_local_ctrl; | ||
1839 | tw32_wait_f(GRC_LOCAL_CTRL, grc_local_ctrl, 100); | ||
1840 | |||
1841 | grc_local_ctrl |= GRC_LCLCTRL_GPIO_OUTPUT2; | ||
1842 | tw32_wait_f(GRC_LOCAL_CTRL, grc_local_ctrl, 100); | ||
1843 | |||
1844 | grc_local_ctrl &= ~GRC_LCLCTRL_GPIO_OUTPUT0; | ||
1845 | tw32_wait_f(GRC_LOCAL_CTRL, grc_local_ctrl, 100); | ||
1831 | } else { | 1846 | } else { |
1832 | u32 no_gpio2; | 1847 | u32 no_gpio2; |
1833 | u32 grc_local_ctrl = 0; | 1848 | u32 grc_local_ctrl = 0; |
@@ -3534,8 +3549,7 @@ static int tg3_setup_fiber_mii_phy(struct tg3 *tp, int force_reset) | |||
3534 | err |= tg3_readphy(tp, MII_BMCR, &bmcr); | 3549 | err |= tg3_readphy(tp, MII_BMCR, &bmcr); |
3535 | 3550 | ||
3536 | if ((tp->link_config.autoneg == AUTONEG_ENABLE) && !force_reset && | 3551 | if ((tp->link_config.autoneg == AUTONEG_ENABLE) && !force_reset && |
3537 | (tp->tg3_flags2 & TG3_FLG2_PARALLEL_DETECT) && | 3552 | (tp->tg3_flags2 & TG3_FLG2_PARALLEL_DETECT)) { |
3538 | tp->link_config.flowctrl == tp->link_config.active_flowctrl) { | ||
3539 | /* do nothing, just check for link up at the end */ | 3553 | /* do nothing, just check for link up at the end */ |
3540 | } else if (tp->link_config.autoneg == AUTONEG_ENABLE) { | 3554 | } else if (tp->link_config.autoneg == AUTONEG_ENABLE) { |
3541 | u32 adv, new_adv; | 3555 | u32 adv, new_adv; |
@@ -9008,7 +9022,7 @@ static int tg3_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
9008 | (cmd->speed == SPEED_1000)) | 9022 | (cmd->speed == SPEED_1000)) |
9009 | return -EINVAL; | 9023 | return -EINVAL; |
9010 | else if ((cmd->speed == SPEED_1000) && | 9024 | else if ((cmd->speed == SPEED_1000) && |
9011 | (tp->tg3_flags2 & TG3_FLAG_10_100_ONLY)) | 9025 | (tp->tg3_flags & TG3_FLAG_10_100_ONLY)) |
9012 | return -EINVAL; | 9026 | return -EINVAL; |
9013 | 9027 | ||
9014 | tg3_full_lock(tp, 0); | 9028 | tg3_full_lock(tp, 0); |
@@ -12275,6 +12289,15 @@ static int __devinit tg3_get_invariants(struct tg3 *tp) | |||
12275 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755) | 12289 | if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5755) |
12276 | tp->grc_local_ctrl |= GRC_LCLCTRL_GPIO_UART_SEL; | 12290 | tp->grc_local_ctrl |= GRC_LCLCTRL_GPIO_UART_SEL; |
12277 | 12291 | ||
12292 | if (tp->pdev->device == PCI_DEVICE_ID_TIGON3_5761) { | ||
12293 | /* Turn off the debug UART. */ | ||
12294 | tp->grc_local_ctrl |= GRC_LCLCTRL_GPIO_UART_SEL; | ||
12295 | if (tp->tg3_flags2 & TG3_FLG2_IS_NIC) | ||
12296 | /* Keep VMain power. */ | ||
12297 | tp->grc_local_ctrl |= GRC_LCLCTRL_GPIO_OE0 | | ||
12298 | GRC_LCLCTRL_GPIO_OUTPUT0; | ||
12299 | } | ||
12300 | |||
12278 | /* Force the chip into D0. */ | 12301 | /* Force the chip into D0. */ |
12279 | err = tg3_set_power_state(tp, PCI_D0); | 12302 | err = tg3_set_power_state(tp, PCI_D0); |
12280 | if (err) { | 12303 | if (err) { |
diff --git a/drivers/net/tulip/tulip_core.c b/drivers/net/tulip/tulip_core.c index f9d13fa05d64..55670b5eb611 100644 --- a/drivers/net/tulip/tulip_core.c +++ b/drivers/net/tulip/tulip_core.c | |||
@@ -1729,12 +1729,15 @@ static int tulip_suspend (struct pci_dev *pdev, pm_message_t state) | |||
1729 | if (!dev) | 1729 | if (!dev) |
1730 | return -EINVAL; | 1730 | return -EINVAL; |
1731 | 1731 | ||
1732 | if (netif_running(dev)) | 1732 | if (!netif_running(dev)) |
1733 | tulip_down(dev); | 1733 | goto save_state; |
1734 | |||
1735 | tulip_down(dev); | ||
1734 | 1736 | ||
1735 | netif_device_detach(dev); | 1737 | netif_device_detach(dev); |
1736 | free_irq(dev->irq, dev); | 1738 | free_irq(dev->irq, dev); |
1737 | 1739 | ||
1740 | save_state: | ||
1738 | pci_save_state(pdev); | 1741 | pci_save_state(pdev); |
1739 | pci_disable_device(pdev); | 1742 | pci_disable_device(pdev); |
1740 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); | 1743 | pci_set_power_state(pdev, pci_choose_state(pdev, state)); |
@@ -1754,6 +1757,9 @@ static int tulip_resume(struct pci_dev *pdev) | |||
1754 | pci_set_power_state(pdev, PCI_D0); | 1757 | pci_set_power_state(pdev, PCI_D0); |
1755 | pci_restore_state(pdev); | 1758 | pci_restore_state(pdev); |
1756 | 1759 | ||
1760 | if (!netif_running(dev)) | ||
1761 | return 0; | ||
1762 | |||
1757 | if ((retval = pci_enable_device(pdev))) { | 1763 | if ((retval = pci_enable_device(pdev))) { |
1758 | printk (KERN_ERR "tulip: pci_enable_device failed in resume\n"); | 1764 | printk (KERN_ERR "tulip: pci_enable_device failed in resume\n"); |
1759 | return retval; | 1765 | return retval; |
diff --git a/drivers/net/ucc_geth_ethtool.c b/drivers/net/ucc_geth_ethtool.c index 5f176f2b1c17..cfbbfee55836 100644 --- a/drivers/net/ucc_geth_ethtool.c +++ b/drivers/net/ucc_geth_ethtool.c | |||
@@ -73,6 +73,7 @@ static char tx_fw_stat_gstrings[][ETH_GSTRING_LEN] = { | |||
73 | "tx-frames-ok", | 73 | "tx-frames-ok", |
74 | "tx-excessive-differ-frames", | 74 | "tx-excessive-differ-frames", |
75 | "tx-256-511-frames", | 75 | "tx-256-511-frames", |
76 | "tx-512-1023-frames", | ||
76 | "tx-1024-1518-frames", | 77 | "tx-1024-1518-frames", |
77 | "tx-jumbo-frames", | 78 | "tx-jumbo-frames", |
78 | }; | 79 | }; |
@@ -308,7 +309,7 @@ static void uec_get_strings(struct net_device *netdev, u32 stringset, u8 *buf) | |||
308 | buf += UEC_TX_FW_STATS_LEN * ETH_GSTRING_LEN; | 309 | buf += UEC_TX_FW_STATS_LEN * ETH_GSTRING_LEN; |
309 | } | 310 | } |
310 | if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_RX) | 311 | if (stats_mode & UCC_GETH_STATISTICS_GATHERING_MODE_FIRMWARE_RX) |
311 | memcpy(buf, tx_fw_stat_gstrings, UEC_RX_FW_STATS_LEN * | 312 | memcpy(buf, rx_fw_stat_gstrings, UEC_RX_FW_STATS_LEN * |
312 | ETH_GSTRING_LEN); | 313 | ETH_GSTRING_LEN); |
313 | } | 314 | } |
314 | 315 | ||
diff --git a/drivers/net/usb/cdc_subset.c b/drivers/net/usb/cdc_subset.c index 0ec7936cbe21..c66b9c324f54 100644 --- a/drivers/net/usb/cdc_subset.c +++ b/drivers/net/usb/cdc_subset.c | |||
@@ -218,7 +218,7 @@ static const struct driver_info blob_info = { | |||
218 | /*-------------------------------------------------------------------------*/ | 218 | /*-------------------------------------------------------------------------*/ |
219 | 219 | ||
220 | #ifndef HAVE_HARDWARE | 220 | #ifndef HAVE_HARDWARE |
221 | #error You need to configure some hardware for this driver | 221 | #warning You need to configure some hardware for this driver |
222 | #endif | 222 | #endif |
223 | 223 | ||
224 | /* | 224 | /* |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index fe7cdf2a2a23..5450eac9e263 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -47,6 +47,9 @@ struct virtnet_info | |||
47 | /* Number of input buffers, and max we've ever had. */ | 47 | /* Number of input buffers, and max we've ever had. */ |
48 | unsigned int num, max; | 48 | unsigned int num, max; |
49 | 49 | ||
50 | /* For cleaning up after transmission. */ | ||
51 | struct tasklet_struct tasklet; | ||
52 | |||
50 | /* Receive & send queues. */ | 53 | /* Receive & send queues. */ |
51 | struct sk_buff_head recv; | 54 | struct sk_buff_head recv; |
52 | struct sk_buff_head send; | 55 | struct sk_buff_head send; |
@@ -68,8 +71,13 @@ static void skb_xmit_done(struct virtqueue *svq) | |||
68 | 71 | ||
69 | /* Suppress further interrupts. */ | 72 | /* Suppress further interrupts. */ |
70 | svq->vq_ops->disable_cb(svq); | 73 | svq->vq_ops->disable_cb(svq); |
74 | |||
71 | /* We were waiting for more output buffers. */ | 75 | /* We were waiting for more output buffers. */ |
72 | netif_wake_queue(vi->dev); | 76 | netif_wake_queue(vi->dev); |
77 | |||
78 | /* Make sure we re-xmit last_xmit_skb: if there are no more packets | ||
79 | * queued, start_xmit won't be called. */ | ||
80 | tasklet_schedule(&vi->tasklet); | ||
73 | } | 81 | } |
74 | 82 | ||
75 | static void receive_skb(struct net_device *dev, struct sk_buff *skb, | 83 | static void receive_skb(struct net_device *dev, struct sk_buff *skb, |
@@ -278,6 +286,18 @@ static int xmit_skb(struct virtnet_info *vi, struct sk_buff *skb) | |||
278 | return vi->svq->vq_ops->add_buf(vi->svq, sg, num, 0, skb); | 286 | return vi->svq->vq_ops->add_buf(vi->svq, sg, num, 0, skb); |
279 | } | 287 | } |
280 | 288 | ||
289 | static void xmit_tasklet(unsigned long data) | ||
290 | { | ||
291 | struct virtnet_info *vi = (void *)data; | ||
292 | |||
293 | netif_tx_lock_bh(vi->dev); | ||
294 | if (vi->last_xmit_skb && xmit_skb(vi, vi->last_xmit_skb) == 0) { | ||
295 | vi->svq->vq_ops->kick(vi->svq); | ||
296 | vi->last_xmit_skb = NULL; | ||
297 | } | ||
298 | netif_tx_unlock_bh(vi->dev); | ||
299 | } | ||
300 | |||
281 | static int start_xmit(struct sk_buff *skb, struct net_device *dev) | 301 | static int start_xmit(struct sk_buff *skb, struct net_device *dev) |
282 | { | 302 | { |
283 | struct virtnet_info *vi = netdev_priv(dev); | 303 | struct virtnet_info *vi = netdev_priv(dev); |
@@ -287,21 +307,25 @@ again: | |||
287 | free_old_xmit_skbs(vi); | 307 | free_old_xmit_skbs(vi); |
288 | 308 | ||
289 | /* If we has a buffer left over from last time, send it now. */ | 309 | /* If we has a buffer left over from last time, send it now. */ |
290 | if (vi->last_xmit_skb) { | 310 | if (unlikely(vi->last_xmit_skb)) { |
291 | if (xmit_skb(vi, vi->last_xmit_skb) != 0) { | 311 | if (xmit_skb(vi, vi->last_xmit_skb) != 0) { |
292 | /* Drop this skb: we only queue one. */ | 312 | /* Drop this skb: we only queue one. */ |
293 | vi->dev->stats.tx_dropped++; | 313 | vi->dev->stats.tx_dropped++; |
294 | kfree_skb(skb); | 314 | kfree_skb(skb); |
315 | skb = NULL; | ||
295 | goto stop_queue; | 316 | goto stop_queue; |
296 | } | 317 | } |
297 | vi->last_xmit_skb = NULL; | 318 | vi->last_xmit_skb = NULL; |
298 | } | 319 | } |
299 | 320 | ||
300 | /* Put new one in send queue and do transmit */ | 321 | /* Put new one in send queue and do transmit */ |
301 | __skb_queue_head(&vi->send, skb); | 322 | if (likely(skb)) { |
302 | if (xmit_skb(vi, skb) != 0) { | 323 | __skb_queue_head(&vi->send, skb); |
303 | vi->last_xmit_skb = skb; | 324 | if (xmit_skb(vi, skb) != 0) { |
304 | goto stop_queue; | 325 | vi->last_xmit_skb = skb; |
326 | skb = NULL; | ||
327 | goto stop_queue; | ||
328 | } | ||
305 | } | 329 | } |
306 | done: | 330 | done: |
307 | vi->svq->vq_ops->kick(vi->svq); | 331 | vi->svq->vq_ops->kick(vi->svq); |
@@ -428,6 +452,8 @@ static int virtnet_probe(struct virtio_device *vdev) | |||
428 | skb_queue_head_init(&vi->recv); | 452 | skb_queue_head_init(&vi->recv); |
429 | skb_queue_head_init(&vi->send); | 453 | skb_queue_head_init(&vi->send); |
430 | 454 | ||
455 | tasklet_init(&vi->tasklet, xmit_tasklet, (unsigned long)vi); | ||
456 | |||
431 | err = register_netdev(dev); | 457 | err = register_netdev(dev); |
432 | if (err) { | 458 | if (err) { |
433 | pr_debug("virtio_net: registering device failed\n"); | 459 | pr_debug("virtio_net: registering device failed\n"); |
diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c index 17ced37e55ed..1e1446bf4b48 100644 --- a/drivers/net/wireless/airo.c +++ b/drivers/net/wireless/airo.c | |||
@@ -2906,7 +2906,7 @@ EXPORT_SYMBOL(init_airo_card); | |||
2906 | 2906 | ||
2907 | static int waitbusy (struct airo_info *ai) { | 2907 | static int waitbusy (struct airo_info *ai) { |
2908 | int delay = 0; | 2908 | int delay = 0; |
2909 | while ((IN4500 (ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) { | 2909 | while ((IN4500(ai, COMMAND) & COMMAND_BUSY) && (delay < 10000)) { |
2910 | udelay (10); | 2910 | udelay (10); |
2911 | if ((++delay % 20) == 0) | 2911 | if ((++delay % 20) == 0) |
2912 | OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY); | 2912 | OUT4500(ai, EVACK, EV_CLEARCOMMANDBUSY); |
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c index f978a9d5190b..7bb2646ae0ef 100644 --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c | |||
@@ -47,6 +47,7 @@ | |||
47 | #include <linux/string.h> | 47 | #include <linux/string.h> |
48 | #include <linux/ctype.h> | 48 | #include <linux/ctype.h> |
49 | #include <linux/timer.h> | 49 | #include <linux/timer.h> |
50 | #include <asm/byteorder.h> | ||
50 | #include <asm/io.h> | 51 | #include <asm/io.h> |
51 | #include <asm/system.h> | 52 | #include <asm/system.h> |
52 | #include <asm/uaccess.h> | 53 | #include <asm/uaccess.h> |
@@ -60,7 +61,6 @@ | |||
60 | #include <linux/delay.h> | 61 | #include <linux/delay.h> |
61 | #include <linux/wireless.h> | 62 | #include <linux/wireless.h> |
62 | #include <net/iw_handler.h> | 63 | #include <net/iw_handler.h> |
63 | #include <linux/byteorder/generic.h> | ||
64 | #include <linux/crc32.h> | 64 | #include <linux/crc32.h> |
65 | #include <linux/proc_fs.h> | 65 | #include <linux/proc_fs.h> |
66 | #include <linux/device.h> | 66 | #include <linux/device.h> |
diff --git a/drivers/net/wireless/b43/Kconfig b/drivers/net/wireless/b43/Kconfig index f51b2d9b085b..1fa043d1802c 100644 --- a/drivers/net/wireless/b43/Kconfig +++ b/drivers/net/wireless/b43/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | config B43 | 1 | config B43 |
2 | tristate "Broadcom 43xx wireless support (mac80211 stack)" | 2 | tristate "Broadcom 43xx wireless support (mac80211 stack)" |
3 | depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 | 3 | depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA |
4 | select SSB | 4 | select SSB |
5 | select FW_LOADER | 5 | select FW_LOADER |
6 | select HW_RANDOM | 6 | select HW_RANDOM |
diff --git a/drivers/net/wireless/b43/b43.h b/drivers/net/wireless/b43/b43.h index e919189919bb..239e71c3d1b1 100644 --- a/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h | |||
@@ -755,6 +755,7 @@ struct b43_wl { | |||
755 | struct sk_buff *current_beacon; | 755 | struct sk_buff *current_beacon; |
756 | bool beacon0_uploaded; | 756 | bool beacon0_uploaded; |
757 | bool beacon1_uploaded; | 757 | bool beacon1_uploaded; |
758 | bool beacon_templates_virgin; /* Never wrote the templates? */ | ||
758 | struct work_struct beacon_update_trigger; | 759 | struct work_struct beacon_update_trigger; |
759 | 760 | ||
760 | /* The current QOS parameters for the 4 queues. | 761 | /* The current QOS parameters for the 4 queues. |
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c index f9c14c66434e..1e31e0bca744 100644 --- a/drivers/net/wireless/b43/main.c +++ b/drivers/net/wireless/b43/main.c | |||
@@ -1550,6 +1550,30 @@ static void b43_write_probe_resp_template(struct b43_wldev *dev, | |||
1550 | kfree(probe_resp_data); | 1550 | kfree(probe_resp_data); |
1551 | } | 1551 | } |
1552 | 1552 | ||
1553 | static void b43_upload_beacon0(struct b43_wldev *dev) | ||
1554 | { | ||
1555 | struct b43_wl *wl = dev->wl; | ||
1556 | |||
1557 | if (wl->beacon0_uploaded) | ||
1558 | return; | ||
1559 | b43_write_beacon_template(dev, 0x68, 0x18); | ||
1560 | /* FIXME: Probe resp upload doesn't really belong here, | ||
1561 | * but we don't use that feature anyway. */ | ||
1562 | b43_write_probe_resp_template(dev, 0x268, 0x4A, | ||
1563 | &__b43_ratetable[3]); | ||
1564 | wl->beacon0_uploaded = 1; | ||
1565 | } | ||
1566 | |||
1567 | static void b43_upload_beacon1(struct b43_wldev *dev) | ||
1568 | { | ||
1569 | struct b43_wl *wl = dev->wl; | ||
1570 | |||
1571 | if (wl->beacon1_uploaded) | ||
1572 | return; | ||
1573 | b43_write_beacon_template(dev, 0x468, 0x1A); | ||
1574 | wl->beacon1_uploaded = 1; | ||
1575 | } | ||
1576 | |||
1553 | static void handle_irq_beacon(struct b43_wldev *dev) | 1577 | static void handle_irq_beacon(struct b43_wldev *dev) |
1554 | { | 1578 | { |
1555 | struct b43_wl *wl = dev->wl; | 1579 | struct b43_wl *wl = dev->wl; |
@@ -1575,24 +1599,27 @@ static void handle_irq_beacon(struct b43_wldev *dev) | |||
1575 | return; | 1599 | return; |
1576 | } | 1600 | } |
1577 | 1601 | ||
1578 | if (!beacon0_valid) { | 1602 | if (unlikely(wl->beacon_templates_virgin)) { |
1579 | if (!wl->beacon0_uploaded) { | 1603 | /* We never uploaded a beacon before. |
1580 | b43_write_beacon_template(dev, 0x68, 0x18); | 1604 | * Upload both templates now, but only mark one valid. */ |
1581 | b43_write_probe_resp_template(dev, 0x268, 0x4A, | 1605 | wl->beacon_templates_virgin = 0; |
1582 | &__b43_ratetable[3]); | 1606 | b43_upload_beacon0(dev); |
1583 | wl->beacon0_uploaded = 1; | 1607 | b43_upload_beacon1(dev); |
1584 | } | ||
1585 | cmd = b43_read32(dev, B43_MMIO_MACCMD); | 1608 | cmd = b43_read32(dev, B43_MMIO_MACCMD); |
1586 | cmd |= B43_MACCMD_BEACON0_VALID; | 1609 | cmd |= B43_MACCMD_BEACON0_VALID; |
1587 | b43_write32(dev, B43_MMIO_MACCMD, cmd); | 1610 | b43_write32(dev, B43_MMIO_MACCMD, cmd); |
1588 | } else if (!beacon1_valid) { | 1611 | } else { |
1589 | if (!wl->beacon1_uploaded) { | 1612 | if (!beacon0_valid) { |
1590 | b43_write_beacon_template(dev, 0x468, 0x1A); | 1613 | b43_upload_beacon0(dev); |
1591 | wl->beacon1_uploaded = 1; | 1614 | cmd = b43_read32(dev, B43_MMIO_MACCMD); |
1615 | cmd |= B43_MACCMD_BEACON0_VALID; | ||
1616 | b43_write32(dev, B43_MMIO_MACCMD, cmd); | ||
1617 | } else if (!beacon1_valid) { | ||
1618 | b43_upload_beacon1(dev); | ||
1619 | cmd = b43_read32(dev, B43_MMIO_MACCMD); | ||
1620 | cmd |= B43_MACCMD_BEACON1_VALID; | ||
1621 | b43_write32(dev, B43_MMIO_MACCMD, cmd); | ||
1592 | } | 1622 | } |
1593 | cmd = b43_read32(dev, B43_MMIO_MACCMD); | ||
1594 | cmd |= B43_MACCMD_BEACON1_VALID; | ||
1595 | b43_write32(dev, B43_MMIO_MACCMD, cmd); | ||
1596 | } | 1623 | } |
1597 | } | 1624 | } |
1598 | 1625 | ||
@@ -4172,6 +4199,9 @@ static int b43_op_start(struct ieee80211_hw *hw) | |||
4172 | wl->filter_flags = 0; | 4199 | wl->filter_flags = 0; |
4173 | wl->radiotap_enabled = 0; | 4200 | wl->radiotap_enabled = 0; |
4174 | b43_qos_clear(wl); | 4201 | b43_qos_clear(wl); |
4202 | wl->beacon0_uploaded = 0; | ||
4203 | wl->beacon1_uploaded = 0; | ||
4204 | wl->beacon_templates_virgin = 1; | ||
4175 | 4205 | ||
4176 | /* First register RFkill. | 4206 | /* First register RFkill. |
4177 | * LEDs that are registered later depend on it. */ | 4207 | * LEDs that are registered later depend on it. */ |
@@ -4338,7 +4368,9 @@ static void b43_chip_reset(struct work_struct *work) | |||
4338 | goto out; | 4368 | goto out; |
4339 | } | 4369 | } |
4340 | } | 4370 | } |
4341 | out: | 4371 | out: |
4372 | if (err) | ||
4373 | wl->current_dev = NULL; /* Failed to init the dev. */ | ||
4342 | mutex_unlock(&wl->mutex); | 4374 | mutex_unlock(&wl->mutex); |
4343 | if (err) | 4375 | if (err) |
4344 | b43err(wl, "Controller restart FAILED\n"); | 4376 | b43err(wl, "Controller restart FAILED\n"); |
@@ -4479,9 +4511,11 @@ static void b43_one_core_detach(struct ssb_device *dev) | |||
4479 | struct b43_wldev *wldev; | 4511 | struct b43_wldev *wldev; |
4480 | struct b43_wl *wl; | 4512 | struct b43_wl *wl; |
4481 | 4513 | ||
4514 | /* Do not cancel ieee80211-workqueue based work here. | ||
4515 | * See comment in b43_remove(). */ | ||
4516 | |||
4482 | wldev = ssb_get_drvdata(dev); | 4517 | wldev = ssb_get_drvdata(dev); |
4483 | wl = wldev->wl; | 4518 | wl = wldev->wl; |
4484 | cancel_work_sync(&wldev->restart_work); | ||
4485 | b43_debugfs_remove_device(wldev); | 4519 | b43_debugfs_remove_device(wldev); |
4486 | b43_wireless_core_detach(wldev); | 4520 | b43_wireless_core_detach(wldev); |
4487 | list_del(&wldev->list); | 4521 | list_del(&wldev->list); |
@@ -4666,6 +4700,10 @@ static void b43_remove(struct ssb_device *dev) | |||
4666 | struct b43_wl *wl = ssb_get_devtypedata(dev); | 4700 | struct b43_wl *wl = ssb_get_devtypedata(dev); |
4667 | struct b43_wldev *wldev = ssb_get_drvdata(dev); | 4701 | struct b43_wldev *wldev = ssb_get_drvdata(dev); |
4668 | 4702 | ||
4703 | /* We must cancel any work here before unregistering from ieee80211, | ||
4704 | * as the ieee80211 unreg will destroy the workqueue. */ | ||
4705 | cancel_work_sync(&wldev->restart_work); | ||
4706 | |||
4669 | B43_WARN_ON(!wl); | 4707 | B43_WARN_ON(!wl); |
4670 | if (wl->current_dev == wldev) | 4708 | if (wl->current_dev == wldev) |
4671 | ieee80211_unregister_hw(wl->hw); | 4709 | ieee80211_unregister_hw(wl->hw); |
diff --git a/drivers/net/wireless/b43legacy/Kconfig b/drivers/net/wireless/b43legacy/Kconfig index 13c65faf0247..aef2298d37ac 100644 --- a/drivers/net/wireless/b43legacy/Kconfig +++ b/drivers/net/wireless/b43legacy/Kconfig | |||
@@ -1,6 +1,6 @@ | |||
1 | config B43LEGACY | 1 | config B43LEGACY |
2 | tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)" | 2 | tristate "Broadcom 43xx-legacy wireless support (mac80211 stack)" |
3 | depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 | 3 | depends on SSB_POSSIBLE && MAC80211 && WLAN_80211 && HAS_DMA |
4 | select SSB | 4 | select SSB |
5 | select FW_LOADER | 5 | select FW_LOADER |
6 | select HW_RANDOM | 6 | select HW_RANDOM |
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c index f706ca65f159..5f533b93ad5d 100644 --- a/drivers/net/wireless/b43legacy/main.c +++ b/drivers/net/wireless/b43legacy/main.c | |||
@@ -3036,7 +3036,6 @@ static void b43legacy_set_pretbtt(struct b43legacy_wldev *dev) | |||
3036 | /* Locking: wl->mutex */ | 3036 | /* Locking: wl->mutex */ |
3037 | static void b43legacy_wireless_core_exit(struct b43legacy_wldev *dev) | 3037 | static void b43legacy_wireless_core_exit(struct b43legacy_wldev *dev) |
3038 | { | 3038 | { |
3039 | struct b43legacy_wl *wl = dev->wl; | ||
3040 | struct b43legacy_phy *phy = &dev->phy; | 3039 | struct b43legacy_phy *phy = &dev->phy; |
3041 | u32 macctl; | 3040 | u32 macctl; |
3042 | 3041 | ||
@@ -3051,12 +3050,6 @@ static void b43legacy_wireless_core_exit(struct b43legacy_wldev *dev) | |||
3051 | macctl |= B43legacy_MACCTL_PSM_JMP0; | 3050 | macctl |= B43legacy_MACCTL_PSM_JMP0; |
3052 | b43legacy_write32(dev, B43legacy_MMIO_MACCTL, macctl); | 3051 | b43legacy_write32(dev, B43legacy_MMIO_MACCTL, macctl); |
3053 | 3052 | ||
3054 | mutex_unlock(&wl->mutex); | ||
3055 | /* Must unlock as it would otherwise deadlock. No races here. | ||
3056 | * Cancel possibly pending workqueues. */ | ||
3057 | cancel_work_sync(&dev->restart_work); | ||
3058 | mutex_lock(&wl->mutex); | ||
3059 | |||
3060 | b43legacy_leds_exit(dev); | 3053 | b43legacy_leds_exit(dev); |
3061 | b43legacy_rng_exit(dev->wl); | 3054 | b43legacy_rng_exit(dev->wl); |
3062 | b43legacy_pio_free(dev); | 3055 | b43legacy_pio_free(dev); |
@@ -3482,6 +3475,8 @@ static void b43legacy_chip_reset(struct work_struct *work) | |||
3482 | } | 3475 | } |
3483 | } | 3476 | } |
3484 | out: | 3477 | out: |
3478 | if (err) | ||
3479 | wl->current_dev = NULL; /* Failed to init the dev. */ | ||
3485 | mutex_unlock(&wl->mutex); | 3480 | mutex_unlock(&wl->mutex); |
3486 | if (err) | 3481 | if (err) |
3487 | b43legacyerr(wl, "Controller restart FAILED\n"); | 3482 | b43legacyerr(wl, "Controller restart FAILED\n"); |
@@ -3614,9 +3609,11 @@ static void b43legacy_one_core_detach(struct ssb_device *dev) | |||
3614 | struct b43legacy_wldev *wldev; | 3609 | struct b43legacy_wldev *wldev; |
3615 | struct b43legacy_wl *wl; | 3610 | struct b43legacy_wl *wl; |
3616 | 3611 | ||
3612 | /* Do not cancel ieee80211-workqueue based work here. | ||
3613 | * See comment in b43legacy_remove(). */ | ||
3614 | |||
3617 | wldev = ssb_get_drvdata(dev); | 3615 | wldev = ssb_get_drvdata(dev); |
3618 | wl = wldev->wl; | 3616 | wl = wldev->wl; |
3619 | cancel_work_sync(&wldev->restart_work); | ||
3620 | b43legacy_debugfs_remove_device(wldev); | 3617 | b43legacy_debugfs_remove_device(wldev); |
3621 | b43legacy_wireless_core_detach(wldev); | 3618 | b43legacy_wireless_core_detach(wldev); |
3622 | list_del(&wldev->list); | 3619 | list_del(&wldev->list); |
@@ -3784,6 +3781,10 @@ static void b43legacy_remove(struct ssb_device *dev) | |||
3784 | struct b43legacy_wl *wl = ssb_get_devtypedata(dev); | 3781 | struct b43legacy_wl *wl = ssb_get_devtypedata(dev); |
3785 | struct b43legacy_wldev *wldev = ssb_get_drvdata(dev); | 3782 | struct b43legacy_wldev *wldev = ssb_get_drvdata(dev); |
3786 | 3783 | ||
3784 | /* We must cancel any work here before unregistering from ieee80211, | ||
3785 | * as the ieee80211 unreg will destroy the workqueue. */ | ||
3786 | cancel_work_sync(&wldev->restart_work); | ||
3787 | |||
3787 | B43legacy_WARN_ON(!wl); | 3788 | B43legacy_WARN_ON(!wl); |
3788 | if (wl->current_dev == wldev) | 3789 | if (wl->current_dev == wldev) |
3789 | ieee80211_unregister_hw(wl->hw); | 3790 | ieee80211_unregister_hw(wl->hw); |
diff --git a/drivers/net/wireless/ipw2200.c b/drivers/net/wireless/ipw2200.c index d74c061994ae..6e704608947c 100644 --- a/drivers/net/wireless/ipw2200.c +++ b/drivers/net/wireless/ipw2200.c | |||
@@ -1753,6 +1753,8 @@ static int ipw_radio_kill_sw(struct ipw_priv *priv, int disable_radio) | |||
1753 | 1753 | ||
1754 | if (priv->workqueue) { | 1754 | if (priv->workqueue) { |
1755 | cancel_delayed_work(&priv->request_scan); | 1755 | cancel_delayed_work(&priv->request_scan); |
1756 | cancel_delayed_work(&priv->request_direct_scan); | ||
1757 | cancel_delayed_work(&priv->request_passive_scan); | ||
1756 | cancel_delayed_work(&priv->scan_event); | 1758 | cancel_delayed_work(&priv->scan_event); |
1757 | } | 1759 | } |
1758 | queue_work(priv->workqueue, &priv->down); | 1760 | queue_work(priv->workqueue, &priv->down); |
@@ -2005,6 +2007,8 @@ static void ipw_irq_tasklet(struct ipw_priv *priv) | |||
2005 | wake_up_interruptible(&priv->wait_command_queue); | 2007 | wake_up_interruptible(&priv->wait_command_queue); |
2006 | priv->status &= ~(STATUS_ASSOCIATED | STATUS_ASSOCIATING); | 2008 | priv->status &= ~(STATUS_ASSOCIATED | STATUS_ASSOCIATING); |
2007 | cancel_delayed_work(&priv->request_scan); | 2009 | cancel_delayed_work(&priv->request_scan); |
2010 | cancel_delayed_work(&priv->request_direct_scan); | ||
2011 | cancel_delayed_work(&priv->request_passive_scan); | ||
2008 | cancel_delayed_work(&priv->scan_event); | 2012 | cancel_delayed_work(&priv->scan_event); |
2009 | schedule_work(&priv->link_down); | 2013 | schedule_work(&priv->link_down); |
2010 | queue_delayed_work(priv->workqueue, &priv->rf_kill, 2 * HZ); | 2014 | queue_delayed_work(priv->workqueue, &priv->rf_kill, 2 * HZ); |
@@ -4712,6 +4716,12 @@ static void ipw_rx_notification(struct ipw_priv *priv, | |||
4712 | priv->status &= ~STATUS_SCAN_FORCED; | 4716 | priv->status &= ~STATUS_SCAN_FORCED; |
4713 | #endif /* CONFIG_IPW2200_MONITOR */ | 4717 | #endif /* CONFIG_IPW2200_MONITOR */ |
4714 | 4718 | ||
4719 | /* Do queued direct scans first */ | ||
4720 | if (priv->status & STATUS_DIRECT_SCAN_PENDING) { | ||
4721 | queue_delayed_work(priv->workqueue, | ||
4722 | &priv->request_direct_scan, 0); | ||
4723 | } | ||
4724 | |||
4715 | if (!(priv->status & (STATUS_ASSOCIATED | | 4725 | if (!(priv->status & (STATUS_ASSOCIATED | |
4716 | STATUS_ASSOCIATING | | 4726 | STATUS_ASSOCIATING | |
4717 | STATUS_ROAMING | | 4727 | STATUS_ROAMING | |
@@ -6267,7 +6277,7 @@ static void ipw_add_scan_channels(struct ipw_priv *priv, | |||
6267 | } | 6277 | } |
6268 | } | 6278 | } |
6269 | 6279 | ||
6270 | static int ipw_request_scan_helper(struct ipw_priv *priv, int type) | 6280 | static int ipw_request_scan_helper(struct ipw_priv *priv, int type, int direct) |
6271 | { | 6281 | { |
6272 | struct ipw_scan_request_ext scan; | 6282 | struct ipw_scan_request_ext scan; |
6273 | int err = 0, scan_type; | 6283 | int err = 0, scan_type; |
@@ -6278,22 +6288,31 @@ static int ipw_request_scan_helper(struct ipw_priv *priv, int type) | |||
6278 | 6288 | ||
6279 | mutex_lock(&priv->mutex); | 6289 | mutex_lock(&priv->mutex); |
6280 | 6290 | ||
6291 | if (direct && (priv->direct_scan_ssid_len == 0)) { | ||
6292 | IPW_DEBUG_HC("Direct scan requested but no SSID to scan for\n"); | ||
6293 | priv->status &= ~STATUS_DIRECT_SCAN_PENDING; | ||
6294 | goto done; | ||
6295 | } | ||
6296 | |||
6281 | if (priv->status & STATUS_SCANNING) { | 6297 | if (priv->status & STATUS_SCANNING) { |
6282 | IPW_DEBUG_HC("Concurrent scan requested. Ignoring.\n"); | 6298 | IPW_DEBUG_HC("Concurrent scan requested. Queuing.\n"); |
6283 | priv->status |= STATUS_SCAN_PENDING; | 6299 | priv->status |= direct ? STATUS_DIRECT_SCAN_PENDING : |
6300 | STATUS_SCAN_PENDING; | ||
6284 | goto done; | 6301 | goto done; |
6285 | } | 6302 | } |
6286 | 6303 | ||
6287 | if (!(priv->status & STATUS_SCAN_FORCED) && | 6304 | if (!(priv->status & STATUS_SCAN_FORCED) && |
6288 | priv->status & STATUS_SCAN_ABORTING) { | 6305 | priv->status & STATUS_SCAN_ABORTING) { |
6289 | IPW_DEBUG_HC("Scan request while abort pending. Queuing.\n"); | 6306 | IPW_DEBUG_HC("Scan request while abort pending. Queuing.\n"); |
6290 | priv->status |= STATUS_SCAN_PENDING; | 6307 | priv->status |= direct ? STATUS_DIRECT_SCAN_PENDING : |
6308 | STATUS_SCAN_PENDING; | ||
6291 | goto done; | 6309 | goto done; |
6292 | } | 6310 | } |
6293 | 6311 | ||
6294 | if (priv->status & STATUS_RF_KILL_MASK) { | 6312 | if (priv->status & STATUS_RF_KILL_MASK) { |
6295 | IPW_DEBUG_HC("Aborting scan due to RF Kill activation\n"); | 6313 | IPW_DEBUG_HC("Queuing scan due to RF Kill activation\n"); |
6296 | priv->status |= STATUS_SCAN_PENDING; | 6314 | priv->status |= direct ? STATUS_DIRECT_SCAN_PENDING : |
6315 | STATUS_SCAN_PENDING; | ||
6297 | goto done; | 6316 | goto done; |
6298 | } | 6317 | } |
6299 | 6318 | ||
@@ -6321,6 +6340,7 @@ static int ipw_request_scan_helper(struct ipw_priv *priv, int type) | |||
6321 | cpu_to_le16(20); | 6340 | cpu_to_le16(20); |
6322 | 6341 | ||
6323 | scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = cpu_to_le16(120); | 6342 | scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = cpu_to_le16(120); |
6343 | scan.dwell_time[IPW_SCAN_ACTIVE_DIRECT_SCAN] = cpu_to_le16(20); | ||
6324 | 6344 | ||
6325 | #ifdef CONFIG_IPW2200_MONITOR | 6345 | #ifdef CONFIG_IPW2200_MONITOR |
6326 | if (priv->ieee->iw_mode == IW_MODE_MONITOR) { | 6346 | if (priv->ieee->iw_mode == IW_MODE_MONITOR) { |
@@ -6360,13 +6380,23 @@ static int ipw_request_scan_helper(struct ipw_priv *priv, int type) | |||
6360 | cpu_to_le16(2000); | 6380 | cpu_to_le16(2000); |
6361 | } else { | 6381 | } else { |
6362 | #endif /* CONFIG_IPW2200_MONITOR */ | 6382 | #endif /* CONFIG_IPW2200_MONITOR */ |
6363 | /* If we are roaming, then make this a directed scan for the | 6383 | /* Honor direct scans first, otherwise if we are roaming make |
6364 | * current network. Otherwise, ensure that every other scan | 6384 | * this a direct scan for the current network. Finally, |
6365 | * is a fast channel hop scan */ | 6385 | * ensure that every other scan is a fast channel hop scan */ |
6366 | if ((priv->status & STATUS_ROAMING) | 6386 | if (direct) { |
6367 | || (!(priv->status & STATUS_ASSOCIATED) | 6387 | err = ipw_send_ssid(priv, priv->direct_scan_ssid, |
6368 | && (priv->config & CFG_STATIC_ESSID) | 6388 | priv->direct_scan_ssid_len); |
6369 | && (le32_to_cpu(scan.full_scan_index) % 2))) { | 6389 | if (err) { |
6390 | IPW_DEBUG_HC("Attempt to send SSID command " | ||
6391 | "failed\n"); | ||
6392 | goto done; | ||
6393 | } | ||
6394 | |||
6395 | scan_type = IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN; | ||
6396 | } else if ((priv->status & STATUS_ROAMING) | ||
6397 | || (!(priv->status & STATUS_ASSOCIATED) | ||
6398 | && (priv->config & CFG_STATIC_ESSID) | ||
6399 | && (le32_to_cpu(scan.full_scan_index) % 2))) { | ||
6370 | err = ipw_send_ssid(priv, priv->essid, priv->essid_len); | 6400 | err = ipw_send_ssid(priv, priv->essid, priv->essid_len); |
6371 | if (err) { | 6401 | if (err) { |
6372 | IPW_DEBUG_HC("Attempt to send SSID command " | 6402 | IPW_DEBUG_HC("Attempt to send SSID command " |
@@ -6391,7 +6421,12 @@ send_request: | |||
6391 | } | 6421 | } |
6392 | 6422 | ||
6393 | priv->status |= STATUS_SCANNING; | 6423 | priv->status |= STATUS_SCANNING; |
6394 | priv->status &= ~STATUS_SCAN_PENDING; | 6424 | if (direct) { |
6425 | priv->status &= ~STATUS_DIRECT_SCAN_PENDING; | ||
6426 | priv->direct_scan_ssid_len = 0; | ||
6427 | } else | ||
6428 | priv->status &= ~STATUS_SCAN_PENDING; | ||
6429 | |||
6395 | queue_delayed_work(priv->workqueue, &priv->scan_check, | 6430 | queue_delayed_work(priv->workqueue, &priv->scan_check, |
6396 | IPW_SCAN_CHECK_WATCHDOG); | 6431 | IPW_SCAN_CHECK_WATCHDOG); |
6397 | done: | 6432 | done: |
@@ -6402,15 +6437,22 @@ done: | |||
6402 | static void ipw_request_passive_scan(struct work_struct *work) | 6437 | static void ipw_request_passive_scan(struct work_struct *work) |
6403 | { | 6438 | { |
6404 | struct ipw_priv *priv = | 6439 | struct ipw_priv *priv = |
6405 | container_of(work, struct ipw_priv, request_passive_scan); | 6440 | container_of(work, struct ipw_priv, request_passive_scan.work); |
6406 | ipw_request_scan_helper(priv, IW_SCAN_TYPE_PASSIVE); | 6441 | ipw_request_scan_helper(priv, IW_SCAN_TYPE_PASSIVE, 0); |
6407 | } | 6442 | } |
6408 | 6443 | ||
6409 | static void ipw_request_scan(struct work_struct *work) | 6444 | static void ipw_request_scan(struct work_struct *work) |
6410 | { | 6445 | { |
6411 | struct ipw_priv *priv = | 6446 | struct ipw_priv *priv = |
6412 | container_of(work, struct ipw_priv, request_scan.work); | 6447 | container_of(work, struct ipw_priv, request_scan.work); |
6413 | ipw_request_scan_helper(priv, IW_SCAN_TYPE_ACTIVE); | 6448 | ipw_request_scan_helper(priv, IW_SCAN_TYPE_ACTIVE, 0); |
6449 | } | ||
6450 | |||
6451 | static void ipw_request_direct_scan(struct work_struct *work) | ||
6452 | { | ||
6453 | struct ipw_priv *priv = | ||
6454 | container_of(work, struct ipw_priv, request_direct_scan.work); | ||
6455 | ipw_request_scan_helper(priv, IW_SCAN_TYPE_ACTIVE, 1); | ||
6414 | } | 6456 | } |
6415 | 6457 | ||
6416 | static void ipw_bg_abort_scan(struct work_struct *work) | 6458 | static void ipw_bg_abort_scan(struct work_struct *work) |
@@ -7558,8 +7600,31 @@ static int ipw_associate(void *data) | |||
7558 | priv->ieee->iw_mode == IW_MODE_ADHOC && | 7600 | priv->ieee->iw_mode == IW_MODE_ADHOC && |
7559 | priv->config & CFG_ADHOC_CREATE && | 7601 | priv->config & CFG_ADHOC_CREATE && |
7560 | priv->config & CFG_STATIC_ESSID && | 7602 | priv->config & CFG_STATIC_ESSID && |
7561 | priv->config & CFG_STATIC_CHANNEL && | 7603 | priv->config & CFG_STATIC_CHANNEL) { |
7562 | !list_empty(&priv->ieee->network_free_list)) { | 7604 | /* Use oldest network if the free list is empty */ |
7605 | if (list_empty(&priv->ieee->network_free_list)) { | ||
7606 | struct ieee80211_network *oldest = NULL; | ||
7607 | struct ieee80211_network *target; | ||
7608 | DECLARE_MAC_BUF(mac); | ||
7609 | |||
7610 | list_for_each_entry(target, &priv->ieee->network_list, list) { | ||
7611 | if ((oldest == NULL) || | ||
7612 | (target->last_scanned < oldest->last_scanned)) | ||
7613 | oldest = target; | ||
7614 | } | ||
7615 | |||
7616 | /* If there are no more slots, expire the oldest */ | ||
7617 | list_del(&oldest->list); | ||
7618 | target = oldest; | ||
7619 | IPW_DEBUG_ASSOC("Expired '%s' (%s) from " | ||
7620 | "network list.\n", | ||
7621 | escape_essid(target->ssid, | ||
7622 | target->ssid_len), | ||
7623 | print_mac(mac, target->bssid)); | ||
7624 | list_add_tail(&target->list, | ||
7625 | &priv->ieee->network_free_list); | ||
7626 | } | ||
7627 | |||
7563 | element = priv->ieee->network_free_list.next; | 7628 | element = priv->ieee->network_free_list.next; |
7564 | network = list_entry(element, struct ieee80211_network, list); | 7629 | network = list_entry(element, struct ieee80211_network, list); |
7565 | ipw_adhoc_create(priv, network); | 7630 | ipw_adhoc_create(priv, network); |
@@ -9454,99 +9519,38 @@ static int ipw_wx_get_retry(struct net_device *dev, | |||
9454 | return 0; | 9519 | return 0; |
9455 | } | 9520 | } |
9456 | 9521 | ||
9457 | static int ipw_request_direct_scan(struct ipw_priv *priv, char *essid, | ||
9458 | int essid_len) | ||
9459 | { | ||
9460 | struct ipw_scan_request_ext scan; | ||
9461 | int err = 0, scan_type; | ||
9462 | |||
9463 | if (!(priv->status & STATUS_INIT) || | ||
9464 | (priv->status & STATUS_EXIT_PENDING)) | ||
9465 | return 0; | ||
9466 | |||
9467 | mutex_lock(&priv->mutex); | ||
9468 | |||
9469 | if (priv->status & STATUS_RF_KILL_MASK) { | ||
9470 | IPW_DEBUG_HC("Aborting scan due to RF kill activation\n"); | ||
9471 | priv->status |= STATUS_SCAN_PENDING; | ||
9472 | goto done; | ||
9473 | } | ||
9474 | |||
9475 | IPW_DEBUG_HC("starting request direct scan!\n"); | ||
9476 | |||
9477 | if (priv->status & (STATUS_SCANNING | STATUS_SCAN_ABORTING)) { | ||
9478 | /* We should not sleep here; otherwise we will block most | ||
9479 | * of the system (for instance, we hold rtnl_lock when we | ||
9480 | * get here). | ||
9481 | */ | ||
9482 | err = -EAGAIN; | ||
9483 | goto done; | ||
9484 | } | ||
9485 | memset(&scan, 0, sizeof(scan)); | ||
9486 | |||
9487 | if (priv->config & CFG_SPEED_SCAN) | ||
9488 | scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_SCAN] = | ||
9489 | cpu_to_le16(30); | ||
9490 | else | ||
9491 | scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_SCAN] = | ||
9492 | cpu_to_le16(20); | ||
9493 | |||
9494 | scan.dwell_time[IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN] = | ||
9495 | cpu_to_le16(20); | ||
9496 | scan.dwell_time[IPW_SCAN_PASSIVE_FULL_DWELL_SCAN] = cpu_to_le16(120); | ||
9497 | scan.dwell_time[IPW_SCAN_ACTIVE_DIRECT_SCAN] = cpu_to_le16(20); | ||
9498 | |||
9499 | scan.full_scan_index = cpu_to_le32(ieee80211_get_scans(priv->ieee)); | ||
9500 | |||
9501 | err = ipw_send_ssid(priv, essid, essid_len); | ||
9502 | if (err) { | ||
9503 | IPW_DEBUG_HC("Attempt to send SSID command failed\n"); | ||
9504 | goto done; | ||
9505 | } | ||
9506 | scan_type = IPW_SCAN_ACTIVE_BROADCAST_AND_DIRECT_SCAN; | ||
9507 | |||
9508 | ipw_add_scan_channels(priv, &scan, scan_type); | ||
9509 | |||
9510 | err = ipw_send_scan_request_ext(priv, &scan); | ||
9511 | if (err) { | ||
9512 | IPW_DEBUG_HC("Sending scan command failed: %08X\n", err); | ||
9513 | goto done; | ||
9514 | } | ||
9515 | |||
9516 | priv->status |= STATUS_SCANNING; | ||
9517 | |||
9518 | done: | ||
9519 | mutex_unlock(&priv->mutex); | ||
9520 | return err; | ||
9521 | } | ||
9522 | |||
9523 | static int ipw_wx_set_scan(struct net_device *dev, | 9522 | static int ipw_wx_set_scan(struct net_device *dev, |
9524 | struct iw_request_info *info, | 9523 | struct iw_request_info *info, |
9525 | union iwreq_data *wrqu, char *extra) | 9524 | union iwreq_data *wrqu, char *extra) |
9526 | { | 9525 | { |
9527 | struct ipw_priv *priv = ieee80211_priv(dev); | 9526 | struct ipw_priv *priv = ieee80211_priv(dev); |
9528 | struct iw_scan_req *req = (struct iw_scan_req *)extra; | 9527 | struct iw_scan_req *req = (struct iw_scan_req *)extra; |
9528 | struct delayed_work *work = NULL; | ||
9529 | 9529 | ||
9530 | mutex_lock(&priv->mutex); | 9530 | mutex_lock(&priv->mutex); |
9531 | |||
9531 | priv->user_requested_scan = 1; | 9532 | priv->user_requested_scan = 1; |
9532 | mutex_unlock(&priv->mutex); | ||
9533 | 9533 | ||
9534 | if (wrqu->data.length == sizeof(struct iw_scan_req)) { | 9534 | if (wrqu->data.length == sizeof(struct iw_scan_req)) { |
9535 | if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { | 9535 | if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { |
9536 | ipw_request_direct_scan(priv, req->essid, | 9536 | int len = min((int)req->essid_len, |
9537 | req->essid_len); | 9537 | (int)sizeof(priv->direct_scan_ssid)); |
9538 | return 0; | 9538 | memcpy(priv->direct_scan_ssid, req->essid, len); |
9539 | } | 9539 | priv->direct_scan_ssid_len = len; |
9540 | if (req->scan_type == IW_SCAN_TYPE_PASSIVE) { | 9540 | work = &priv->request_direct_scan; |
9541 | queue_work(priv->workqueue, | 9541 | } else if (req->scan_type == IW_SCAN_TYPE_PASSIVE) { |
9542 | &priv->request_passive_scan); | 9542 | work = &priv->request_passive_scan; |
9543 | return 0; | ||
9544 | } | 9543 | } |
9544 | } else { | ||
9545 | /* Normal active broadcast scan */ | ||
9546 | work = &priv->request_scan; | ||
9545 | } | 9547 | } |
9546 | 9548 | ||
9549 | mutex_unlock(&priv->mutex); | ||
9550 | |||
9547 | IPW_DEBUG_WX("Start scan\n"); | 9551 | IPW_DEBUG_WX("Start scan\n"); |
9548 | 9552 | ||
9549 | queue_delayed_work(priv->workqueue, &priv->request_scan, 0); | 9553 | queue_delayed_work(priv->workqueue, work, 0); |
9550 | 9554 | ||
9551 | return 0; | 9555 | return 0; |
9552 | } | 9556 | } |
@@ -10708,6 +10712,8 @@ static void ipw_link_up(struct ipw_priv *priv) | |||
10708 | } | 10712 | } |
10709 | 10713 | ||
10710 | cancel_delayed_work(&priv->request_scan); | 10714 | cancel_delayed_work(&priv->request_scan); |
10715 | cancel_delayed_work(&priv->request_direct_scan); | ||
10716 | cancel_delayed_work(&priv->request_passive_scan); | ||
10711 | cancel_delayed_work(&priv->scan_event); | 10717 | cancel_delayed_work(&priv->scan_event); |
10712 | ipw_reset_stats(priv); | 10718 | ipw_reset_stats(priv); |
10713 | /* Ensure the rate is updated immediately */ | 10719 | /* Ensure the rate is updated immediately */ |
@@ -10738,6 +10744,8 @@ static void ipw_link_down(struct ipw_priv *priv) | |||
10738 | 10744 | ||
10739 | /* Cancel any queued work ... */ | 10745 | /* Cancel any queued work ... */ |
10740 | cancel_delayed_work(&priv->request_scan); | 10746 | cancel_delayed_work(&priv->request_scan); |
10747 | cancel_delayed_work(&priv->request_direct_scan); | ||
10748 | cancel_delayed_work(&priv->request_passive_scan); | ||
10741 | cancel_delayed_work(&priv->adhoc_check); | 10749 | cancel_delayed_work(&priv->adhoc_check); |
10742 | cancel_delayed_work(&priv->gather_stats); | 10750 | cancel_delayed_work(&priv->gather_stats); |
10743 | 10751 | ||
@@ -10777,8 +10785,9 @@ static int __devinit ipw_setup_deferred_work(struct ipw_priv *priv) | |||
10777 | INIT_WORK(&priv->up, ipw_bg_up); | 10785 | INIT_WORK(&priv->up, ipw_bg_up); |
10778 | INIT_WORK(&priv->down, ipw_bg_down); | 10786 | INIT_WORK(&priv->down, ipw_bg_down); |
10779 | INIT_DELAYED_WORK(&priv->request_scan, ipw_request_scan); | 10787 | INIT_DELAYED_WORK(&priv->request_scan, ipw_request_scan); |
10788 | INIT_DELAYED_WORK(&priv->request_direct_scan, ipw_request_direct_scan); | ||
10789 | INIT_DELAYED_WORK(&priv->request_passive_scan, ipw_request_passive_scan); | ||
10780 | INIT_DELAYED_WORK(&priv->scan_event, ipw_scan_event); | 10790 | INIT_DELAYED_WORK(&priv->scan_event, ipw_scan_event); |
10781 | INIT_WORK(&priv->request_passive_scan, ipw_request_passive_scan); | ||
10782 | INIT_DELAYED_WORK(&priv->gather_stats, ipw_bg_gather_stats); | 10791 | INIT_DELAYED_WORK(&priv->gather_stats, ipw_bg_gather_stats); |
10783 | INIT_WORK(&priv->abort_scan, ipw_bg_abort_scan); | 10792 | INIT_WORK(&priv->abort_scan, ipw_bg_abort_scan); |
10784 | INIT_WORK(&priv->roam, ipw_bg_roam); | 10793 | INIT_WORK(&priv->roam, ipw_bg_roam); |
@@ -11812,6 +11821,8 @@ static void __devexit ipw_pci_remove(struct pci_dev *pdev) | |||
11812 | cancel_delayed_work(&priv->adhoc_check); | 11821 | cancel_delayed_work(&priv->adhoc_check); |
11813 | cancel_delayed_work(&priv->gather_stats); | 11822 | cancel_delayed_work(&priv->gather_stats); |
11814 | cancel_delayed_work(&priv->request_scan); | 11823 | cancel_delayed_work(&priv->request_scan); |
11824 | cancel_delayed_work(&priv->request_direct_scan); | ||
11825 | cancel_delayed_work(&priv->request_passive_scan); | ||
11815 | cancel_delayed_work(&priv->scan_event); | 11826 | cancel_delayed_work(&priv->scan_event); |
11816 | cancel_delayed_work(&priv->rf_kill); | 11827 | cancel_delayed_work(&priv->rf_kill); |
11817 | cancel_delayed_work(&priv->scan_check); | 11828 | cancel_delayed_work(&priv->scan_check); |
diff --git a/drivers/net/wireless/ipw2200.h b/drivers/net/wireless/ipw2200.h index cd3295b66dd6..d4ab28b73b32 100644 --- a/drivers/net/wireless/ipw2200.h +++ b/drivers/net/wireless/ipw2200.h | |||
@@ -1037,6 +1037,7 @@ struct ipw_cmd { /* XXX */ | |||
1037 | #define STATUS_DISASSOC_PENDING (1<<12) | 1037 | #define STATUS_DISASSOC_PENDING (1<<12) |
1038 | #define STATUS_STATE_PENDING (1<<13) | 1038 | #define STATUS_STATE_PENDING (1<<13) |
1039 | 1039 | ||
1040 | #define STATUS_DIRECT_SCAN_PENDING (1<<19) | ||
1040 | #define STATUS_SCAN_PENDING (1<<20) | 1041 | #define STATUS_SCAN_PENDING (1<<20) |
1041 | #define STATUS_SCANNING (1<<21) | 1042 | #define STATUS_SCANNING (1<<21) |
1042 | #define STATUS_SCAN_ABORTING (1<<22) | 1043 | #define STATUS_SCAN_ABORTING (1<<22) |
@@ -1292,6 +1293,8 @@ struct ipw_priv { | |||
1292 | struct iw_public_data wireless_data; | 1293 | struct iw_public_data wireless_data; |
1293 | 1294 | ||
1294 | int user_requested_scan; | 1295 | int user_requested_scan; |
1296 | u8 direct_scan_ssid[IW_ESSID_MAX_SIZE]; | ||
1297 | u8 direct_scan_ssid_len; | ||
1295 | 1298 | ||
1296 | struct workqueue_struct *workqueue; | 1299 | struct workqueue_struct *workqueue; |
1297 | 1300 | ||
@@ -1301,8 +1304,9 @@ struct ipw_priv { | |||
1301 | struct work_struct system_config; | 1304 | struct work_struct system_config; |
1302 | struct work_struct rx_replenish; | 1305 | struct work_struct rx_replenish; |
1303 | struct delayed_work request_scan; | 1306 | struct delayed_work request_scan; |
1307 | struct delayed_work request_direct_scan; | ||
1308 | struct delayed_work request_passive_scan; | ||
1304 | struct delayed_work scan_event; | 1309 | struct delayed_work scan_event; |
1305 | struct work_struct request_passive_scan; | ||
1306 | struct work_struct adapter_restart; | 1310 | struct work_struct adapter_restart; |
1307 | struct delayed_work rf_kill; | 1311 | struct delayed_work rf_kill; |
1308 | struct work_struct up; | 1312 | struct work_struct up; |
diff --git a/drivers/net/wireless/iwlwifi/iwl-3945-led.c b/drivers/net/wireless/iwlwifi/iwl-3945-led.c index d200d08fb086..8b1528e52d43 100644 --- a/drivers/net/wireless/iwlwifi/iwl-3945-led.c +++ b/drivers/net/wireless/iwlwifi/iwl-3945-led.c | |||
@@ -229,14 +229,15 @@ static int iwl3945_led_register_led(struct iwl3945_priv *priv, | |||
229 | led->led_dev.brightness_set = iwl3945_led_brightness_set; | 229 | led->led_dev.brightness_set = iwl3945_led_brightness_set; |
230 | led->led_dev.default_trigger = trigger; | 230 | led->led_dev.default_trigger = trigger; |
231 | 231 | ||
232 | led->priv = priv; | ||
233 | led->type = type; | ||
234 | |||
232 | ret = led_classdev_register(device, &led->led_dev); | 235 | ret = led_classdev_register(device, &led->led_dev); |
233 | if (ret) { | 236 | if (ret) { |
234 | IWL_ERROR("Error: failed to register led handler.\n"); | 237 | IWL_ERROR("Error: failed to register led handler.\n"); |
235 | return ret; | 238 | return ret; |
236 | } | 239 | } |
237 | 240 | ||
238 | led->priv = priv; | ||
239 | led->type = type; | ||
240 | led->registered = 1; | 241 | led->registered = 1; |
241 | 242 | ||
242 | if (set_led && led->led_on) | 243 | if (set_led && led->led_on) |
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c index a955f9c1b9ee..d8f2b4d33fd9 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965-rs.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965-rs.c | |||
@@ -1145,7 +1145,6 @@ static s32 rs_get_best_rate(struct iwl_priv *priv, | |||
1145 | 1145 | ||
1146 | /* Higher rate not available, use the original */ | 1146 | /* Higher rate not available, use the original */ |
1147 | } else { | 1147 | } else { |
1148 | new_rate = rate; | ||
1149 | break; | 1148 | break; |
1150 | } | 1149 | } |
1151 | } | 1150 | } |
@@ -1977,7 +1976,7 @@ lq_update: | |||
1977 | * 2) Not just finishing up a search | 1976 | * 2) Not just finishing up a search |
1978 | * 3) Allowing a new search | 1977 | * 3) Allowing a new search |
1979 | */ | 1978 | */ |
1980 | if (!update_lq && !done_search && !lq_sta->stay_in_tbl) { | 1979 | if (!update_lq && !done_search && !lq_sta->stay_in_tbl && window->counter) { |
1981 | /* Save current throughput to compare with "search" throughput*/ | 1980 | /* Save current throughput to compare with "search" throughput*/ |
1982 | lq_sta->last_tpt = current_tpt; | 1981 | lq_sta->last_tpt = current_tpt; |
1983 | 1982 | ||
diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c index cf261d3487fd..75427e61898d 100644 --- a/drivers/net/wireless/libertas/cmd.c +++ b/drivers/net/wireless/libertas/cmd.c | |||
@@ -1858,6 +1858,9 @@ static void lbs_send_confirmsleep(struct lbs_private *priv) | |||
1858 | 1858 | ||
1859 | spin_lock_irqsave(&priv->driver_lock, flags); | 1859 | spin_lock_irqsave(&priv->driver_lock, flags); |
1860 | 1860 | ||
1861 | /* We don't get a response on the sleep-confirmation */ | ||
1862 | priv->dnld_sent = DNLD_RES_RECEIVED; | ||
1863 | |||
1861 | /* If nothing to do, go back to sleep (?) */ | 1864 | /* If nothing to do, go back to sleep (?) */ |
1862 | if (!__kfifo_len(priv->event_fifo) && !priv->resp_len[priv->resp_idx]) | 1865 | if (!__kfifo_len(priv->event_fifo) && !priv->resp_len[priv->resp_idx]) |
1863 | priv->psstate = PS_STATE_SLEEP; | 1866 | priv->psstate = PS_STATE_SLEEP; |
@@ -1920,12 +1923,12 @@ void lbs_ps_confirm_sleep(struct lbs_private *priv) | |||
1920 | 1923 | ||
1921 | lbs_deb_enter(LBS_DEB_HOST); | 1924 | lbs_deb_enter(LBS_DEB_HOST); |
1922 | 1925 | ||
1926 | spin_lock_irqsave(&priv->driver_lock, flags); | ||
1923 | if (priv->dnld_sent) { | 1927 | if (priv->dnld_sent) { |
1924 | allowed = 0; | 1928 | allowed = 0; |
1925 | lbs_deb_host("dnld_sent was set\n"); | 1929 | lbs_deb_host("dnld_sent was set\n"); |
1926 | } | 1930 | } |
1927 | 1931 | ||
1928 | spin_lock_irqsave(&priv->driver_lock, flags); | ||
1929 | /* In-progress command? */ | 1932 | /* In-progress command? */ |
1930 | if (priv->cur_cmd) { | 1933 | if (priv->cur_cmd) { |
1931 | allowed = 0; | 1934 | allowed = 0; |
diff --git a/drivers/net/wireless/libertas/debugfs.c b/drivers/net/wireless/libertas/debugfs.c index ad2fabca9116..0aa0ce3b2c42 100644 --- a/drivers/net/wireless/libertas/debugfs.c +++ b/drivers/net/wireless/libertas/debugfs.c | |||
@@ -312,8 +312,8 @@ static ssize_t lbs_threshold_write(uint16_t tlv_type, uint16_t event_mask, | |||
312 | if (tlv_type != TLV_TYPE_BCNMISS) | 312 | if (tlv_type != TLV_TYPE_BCNMISS) |
313 | tlv->freq = freq; | 313 | tlv->freq = freq; |
314 | 314 | ||
315 | /* The command header, the event mask, and the one TLV */ | 315 | /* The command header, the action, the event mask, and one TLV */ |
316 | events->hdr.size = cpu_to_le16(sizeof(events->hdr) + 2 + sizeof(*tlv)); | 316 | events->hdr.size = cpu_to_le16(sizeof(events->hdr) + 4 + sizeof(*tlv)); |
317 | 317 | ||
318 | ret = lbs_cmd_with_response(priv, CMD_802_11_SUBSCRIBE_EVENT, events); | 318 | ret = lbs_cmd_with_response(priv, CMD_802_11_SUBSCRIBE_EVENT, events); |
319 | 319 | ||
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c index b7ab3590b586..abd6d9ed8f4b 100644 --- a/drivers/net/wireless/libertas/main.c +++ b/drivers/net/wireless/libertas/main.c | |||
@@ -765,8 +765,8 @@ static int lbs_thread(void *data) | |||
765 | lbs_deb_thread("4: currenttxskb %p, dnld_sent %d\n", | 765 | lbs_deb_thread("4: currenttxskb %p, dnld_sent %d\n", |
766 | priv->currenttxskb, priv->dnld_sent); | 766 | priv->currenttxskb, priv->dnld_sent); |
767 | 767 | ||
768 | spin_lock_irq(&priv->driver_lock); | ||
769 | /* Process any pending command response */ | 768 | /* Process any pending command response */ |
769 | spin_lock_irq(&priv->driver_lock); | ||
770 | resp_idx = priv->resp_idx; | 770 | resp_idx = priv->resp_idx; |
771 | if (priv->resp_len[resp_idx]) { | 771 | if (priv->resp_len[resp_idx]) { |
772 | spin_unlock_irq(&priv->driver_lock); | 772 | spin_unlock_irq(&priv->driver_lock); |
diff --git a/drivers/net/wireless/p54/p54usb.c b/drivers/net/wireless/p54/p54usb.c index 98ddbb3b3273..1610a7308c1d 100644 --- a/drivers/net/wireless/p54/p54usb.c +++ b/drivers/net/wireless/p54/p54usb.c | |||
@@ -49,6 +49,7 @@ static struct usb_device_id p54u_table[] __devinitdata = { | |||
49 | {USB_DEVICE(0x5041, 0x2235)}, /* Linksys WUSB54G Portable */ | 49 | {USB_DEVICE(0x5041, 0x2235)}, /* Linksys WUSB54G Portable */ |
50 | 50 | ||
51 | /* Version 2 devices (3887) */ | 51 | /* Version 2 devices (3887) */ |
52 | {USB_DEVICE(0x0471, 0x1230)}, /* Philips CPWUA054/00 */ | ||
52 | {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */ | 53 | {USB_DEVICE(0x050d, 0x7050)}, /* Belkin F5D7050 ver 1000 */ |
53 | {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */ | 54 | {USB_DEVICE(0x0572, 0x2000)}, /* Cohiba Proto board */ |
54 | {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */ | 55 | {USB_DEVICE(0x0572, 0x2002)}, /* Cohiba Proto board */ |
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c index ed310f84f28b..3954897d0678 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c | |||
@@ -116,6 +116,7 @@ MODULE_PARM_DESC(workaround_interval, | |||
116 | #define OID_802_11_ENCRYPTION_STATUS ccpu2(0x0d01011b) | 116 | #define OID_802_11_ENCRYPTION_STATUS ccpu2(0x0d01011b) |
117 | #define OID_802_11_ADD_KEY ccpu2(0x0d01011d) | 117 | #define OID_802_11_ADD_KEY ccpu2(0x0d01011d) |
118 | #define OID_802_11_REMOVE_KEY ccpu2(0x0d01011e) | 118 | #define OID_802_11_REMOVE_KEY ccpu2(0x0d01011e) |
119 | #define OID_802_11_ASSOCIATION_INFORMATION ccpu2(0x0d01011f) | ||
119 | #define OID_802_11_PMKID ccpu2(0x0d010123) | 120 | #define OID_802_11_PMKID ccpu2(0x0d010123) |
120 | #define OID_802_11_NETWORK_TYPES_SUPPORTED ccpu2(0x0d010203) | 121 | #define OID_802_11_NETWORK_TYPES_SUPPORTED ccpu2(0x0d010203) |
121 | #define OID_802_11_NETWORK_TYPE_IN_USE ccpu2(0x0d010204) | 122 | #define OID_802_11_NETWORK_TYPE_IN_USE ccpu2(0x0d010204) |
@@ -271,6 +272,26 @@ struct ndis_config_param { | |||
271 | __le32 value_length; | 272 | __le32 value_length; |
272 | } __attribute__((packed)); | 273 | } __attribute__((packed)); |
273 | 274 | ||
275 | struct ndis_80211_assoc_info { | ||
276 | __le32 length; | ||
277 | __le16 req_ies; | ||
278 | struct req_ie { | ||
279 | __le16 capa; | ||
280 | __le16 listen_interval; | ||
281 | u8 cur_ap_address[6]; | ||
282 | } req_ie; | ||
283 | __le32 req_ie_length; | ||
284 | __le32 offset_req_ies; | ||
285 | __le16 resp_ies; | ||
286 | struct resp_ie { | ||
287 | __le16 capa; | ||
288 | __le16 status_code; | ||
289 | __le16 assoc_id; | ||
290 | } resp_ie; | ||
291 | __le32 resp_ie_length; | ||
292 | __le32 offset_resp_ies; | ||
293 | } __attribute__((packed)); | ||
294 | |||
274 | /* these have to match what is in wpa_supplicant */ | 295 | /* these have to match what is in wpa_supplicant */ |
275 | enum wpa_alg { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP }; | 296 | enum wpa_alg { WPA_ALG_NONE, WPA_ALG_WEP, WPA_ALG_TKIP, WPA_ALG_CCMP }; |
276 | enum wpa_cipher { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP, | 297 | enum wpa_cipher { CIPHER_NONE, CIPHER_WEP40, CIPHER_TKIP, CIPHER_CCMP, |
@@ -674,6 +695,12 @@ static int get_bssid(struct usbnet *usbdev, u8 bssid[ETH_ALEN]) | |||
674 | return ret; | 695 | return ret; |
675 | } | 696 | } |
676 | 697 | ||
698 | static int get_association_info(struct usbnet *usbdev, | ||
699 | struct ndis_80211_assoc_info *info, int len) | ||
700 | { | ||
701 | return rndis_query_oid(usbdev, OID_802_11_ASSOCIATION_INFORMATION, | ||
702 | info, &len); | ||
703 | } | ||
677 | 704 | ||
678 | static int is_associated(struct usbnet *usbdev) | 705 | static int is_associated(struct usbnet *usbdev) |
679 | { | 706 | { |
@@ -2182,11 +2209,40 @@ static void rndis_wext_worker(struct work_struct *work) | |||
2182 | struct usbnet *usbdev = priv->usbdev; | 2209 | struct usbnet *usbdev = priv->usbdev; |
2183 | union iwreq_data evt; | 2210 | union iwreq_data evt; |
2184 | unsigned char bssid[ETH_ALEN]; | 2211 | unsigned char bssid[ETH_ALEN]; |
2185 | int ret; | 2212 | struct ndis_80211_assoc_info *info; |
2213 | int assoc_size = sizeof(*info) + IW_CUSTOM_MAX + 32; | ||
2214 | int ret, offset; | ||
2186 | 2215 | ||
2187 | if (test_and_clear_bit(WORK_CONNECTION_EVENT, &priv->work_pending)) { | 2216 | if (test_and_clear_bit(WORK_CONNECTION_EVENT, &priv->work_pending)) { |
2188 | ret = get_bssid(usbdev, bssid); | 2217 | info = kzalloc(assoc_size, GFP_KERNEL); |
2218 | if (!info) | ||
2219 | goto get_bssid; | ||
2220 | |||
2221 | /* Get association info IEs from device and send them back to | ||
2222 | * userspace. */ | ||
2223 | ret = get_association_info(usbdev, info, assoc_size); | ||
2224 | if (!ret) { | ||
2225 | evt.data.length = le32_to_cpu(info->req_ie_length); | ||
2226 | if (evt.data.length > 0) { | ||
2227 | offset = le32_to_cpu(info->offset_req_ies); | ||
2228 | wireless_send_event(usbdev->net, | ||
2229 | IWEVASSOCREQIE, &evt, | ||
2230 | (char *)info + offset); | ||
2231 | } | ||
2232 | |||
2233 | evt.data.length = le32_to_cpu(info->resp_ie_length); | ||
2234 | if (evt.data.length > 0) { | ||
2235 | offset = le32_to_cpu(info->offset_resp_ies); | ||
2236 | wireless_send_event(usbdev->net, | ||
2237 | IWEVASSOCRESPIE, &evt, | ||
2238 | (char *)info + offset); | ||
2239 | } | ||
2240 | } | ||
2241 | |||
2242 | kfree(info); | ||
2189 | 2243 | ||
2244 | get_bssid: | ||
2245 | ret = get_bssid(usbdev, bssid); | ||
2190 | if (!ret) { | 2246 | if (!ret) { |
2191 | evt.data.flags = 0; | 2247 | evt.data.flags = 0; |
2192 | evt.data.length = 0; | 2248 | evt.data.length = 0; |
@@ -2414,6 +2470,11 @@ static int bcm4320_early_init(struct usbnet *dev) | |||
2414 | else if (priv->param_power_save > 2) | 2470 | else if (priv->param_power_save > 2) |
2415 | priv->param_power_save = 2; | 2471 | priv->param_power_save = 2; |
2416 | 2472 | ||
2473 | if (priv->param_power_output < 0) | ||
2474 | priv->param_power_output = 0; | ||
2475 | else if (priv->param_power_output > 3) | ||
2476 | priv->param_power_output = 3; | ||
2477 | |||
2417 | if (priv->param_roamtrigger < -80) | 2478 | if (priv->param_roamtrigger < -80) |
2418 | priv->param_roamtrigger = -80; | 2479 | priv->param_roamtrigger = -80; |
2419 | else if (priv->param_roamtrigger > -60) | 2480 | else if (priv->param_roamtrigger > -60) |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 5c7220ea46e6..15ec797c5ec1 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -328,6 +328,11 @@ static inline int rt2x00_get_link_ant_rssi(struct link *link) | |||
328 | return DEFAULT_RSSI; | 328 | return DEFAULT_RSSI; |
329 | } | 329 | } |
330 | 330 | ||
331 | static inline void rt2x00_reset_link_ant_rssi(struct link *link) | ||
332 | { | ||
333 | link->ant.rssi_ant = 0; | ||
334 | } | ||
335 | |||
331 | static inline int rt2x00_get_link_ant_rssi_history(struct link *link, | 336 | static inline int rt2x00_get_link_ant_rssi_history(struct link *link, |
332 | enum antenna ant) | 337 | enum antenna ant) |
333 | { | 338 | { |
diff --git a/drivers/net/wireless/rt2x00/rt2x00config.c b/drivers/net/wireless/rt2x00/rt2x00config.c index a9930a03f450..48608e8cc8b4 100644 --- a/drivers/net/wireless/rt2x00/rt2x00config.c +++ b/drivers/net/wireless/rt2x00/rt2x00config.c | |||
@@ -129,6 +129,7 @@ void rt2x00lib_config_antenna(struct rt2x00_dev *rt2x00dev, | |||
129 | */ | 129 | */ |
130 | rt2x00dev->ops->lib->config(rt2x00dev, &libconf, CONFIG_UPDATE_ANTENNA); | 130 | rt2x00dev->ops->lib->config(rt2x00dev, &libconf, CONFIG_UPDATE_ANTENNA); |
131 | rt2x00lib_reset_link_tuner(rt2x00dev); | 131 | rt2x00lib_reset_link_tuner(rt2x00dev); |
132 | rt2x00_reset_link_ant_rssi(&rt2x00dev->link); | ||
132 | 133 | ||
133 | rt2x00dev->link.ant.active.rx = libconf.ant.rx; | 134 | rt2x00dev->link.ant.active.rx = libconf.ant.rx; |
134 | rt2x00dev->link.ant.active.tx = libconf.ant.tx; | 135 | rt2x00dev->link.ant.active.tx = libconf.ant.tx; |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 69e233610c94..f7a44170c025 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -481,9 +481,9 @@ void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev) | |||
481 | if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags)) | 481 | if (!test_bit(DEVICE_ENABLED_RADIO, &rt2x00dev->flags)) |
482 | return; | 482 | return; |
483 | 483 | ||
484 | ieee80211_iterate_active_interfaces(rt2x00dev->hw, | 484 | ieee80211_iterate_active_interfaces_atomic(rt2x00dev->hw, |
485 | rt2x00lib_beacondone_iter, | 485 | rt2x00lib_beacondone_iter, |
486 | rt2x00dev); | 486 | rt2x00dev); |
487 | 487 | ||
488 | queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work); | 488 | queue_work(rt2x00dev->hw->workqueue, &rt2x00dev->intf_work); |
489 | } | 489 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index c05e05b58887..b02dbc8a666e 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
@@ -114,6 +114,7 @@ int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
114 | */ | 114 | */ |
115 | if (!test_bit(DEVICE_PRESENT, &rt2x00dev->flags)) { | 115 | if (!test_bit(DEVICE_PRESENT, &rt2x00dev->flags)) { |
116 | ieee80211_stop_queues(hw); | 116 | ieee80211_stop_queues(hw); |
117 | dev_kfree_skb_any(skb); | ||
117 | return NETDEV_TX_OK; | 118 | return NETDEV_TX_OK; |
118 | } | 119 | } |
119 | 120 | ||
diff --git a/drivers/net/wireless/rtl8180_grf5101.c b/drivers/net/wireless/rtl8180_grf5101.c index 5d47935dbac3..947ee55f18b2 100644 --- a/drivers/net/wireless/rtl8180_grf5101.c +++ b/drivers/net/wireless/rtl8180_grf5101.c | |||
@@ -88,7 +88,7 @@ static void grf5101_rf_set_channel(struct ieee80211_hw *dev, | |||
88 | write_grf5101(dev, 0x0B, chan); | 88 | write_grf5101(dev, 0x0B, chan); |
89 | write_grf5101(dev, 0x07, 0x1000); | 89 | write_grf5101(dev, 0x07, 0x1000); |
90 | 90 | ||
91 | grf5101_write_phy_antenna(dev, chan); | 91 | grf5101_write_phy_antenna(dev, channel); |
92 | } | 92 | } |
93 | 93 | ||
94 | static void grf5101_rf_stop(struct ieee80211_hw *dev) | 94 | static void grf5101_rf_stop(struct ieee80211_hw *dev) |
diff --git a/drivers/net/wireless/rtl8180_max2820.c b/drivers/net/wireless/rtl8180_max2820.c index a34dfd382b6d..6c825fd7f3b6 100644 --- a/drivers/net/wireless/rtl8180_max2820.c +++ b/drivers/net/wireless/rtl8180_max2820.c | |||
@@ -78,7 +78,8 @@ static void max2820_rf_set_channel(struct ieee80211_hw *dev, | |||
78 | struct ieee80211_conf *conf) | 78 | struct ieee80211_conf *conf) |
79 | { | 79 | { |
80 | struct rtl8180_priv *priv = dev->priv; | 80 | struct rtl8180_priv *priv = dev->priv; |
81 | int channel = ieee80211_frequency_to_channel(conf->channel->center_freq); | 81 | int channel = conf ? |
82 | ieee80211_frequency_to_channel(conf->channel->center_freq) : 1; | ||
82 | unsigned int chan_idx = channel - 1; | 83 | unsigned int chan_idx = channel - 1; |
83 | u32 txpw = priv->channels[chan_idx].hw_value & 0xFF; | 84 | u32 txpw = priv->channels[chan_idx].hw_value & 0xFF; |
84 | u32 chan = max2820_chan[chan_idx]; | 85 | u32 chan = max2820_chan[chan_idx]; |
@@ -87,7 +88,7 @@ static void max2820_rf_set_channel(struct ieee80211_hw *dev, | |||
87 | * sa2400, for MAXIM we do this directly from BB */ | 88 | * sa2400, for MAXIM we do this directly from BB */ |
88 | rtl8180_write_phy(dev, 3, txpw); | 89 | rtl8180_write_phy(dev, 3, txpw); |
89 | 90 | ||
90 | max2820_write_phy_antenna(dev, chan); | 91 | max2820_write_phy_antenna(dev, channel); |
91 | write_max2820(dev, 3, chan); | 92 | write_max2820(dev, 3, chan); |
92 | } | 93 | } |
93 | 94 | ||
diff --git a/drivers/net/wireless/rtl8180_sa2400.c b/drivers/net/wireless/rtl8180_sa2400.c index 0311b4ea124c..cea4e0ccb92d 100644 --- a/drivers/net/wireless/rtl8180_sa2400.c +++ b/drivers/net/wireless/rtl8180_sa2400.c | |||
@@ -86,7 +86,7 @@ static void sa2400_rf_set_channel(struct ieee80211_hw *dev, | |||
86 | 86 | ||
87 | write_sa2400(dev, 7, txpw); | 87 | write_sa2400(dev, 7, txpw); |
88 | 88 | ||
89 | sa2400_write_phy_antenna(dev, chan); | 89 | sa2400_write_phy_antenna(dev, channel); |
90 | 90 | ||
91 | write_sa2400(dev, 0, chan); | 91 | write_sa2400(dev, 0, chan); |
92 | write_sa2400(dev, 1, 0xbb50); | 92 | write_sa2400(dev, 1, 0xbb50); |
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c index d2378d083a35..6d86b365f150 100644 --- a/drivers/net/wireless/zd1211rw/zd_mac.c +++ b/drivers/net/wireless/zd1211rw/zd_mac.c | |||
@@ -647,7 +647,7 @@ int zd_mac_rx(struct ieee80211_hw *hw, const u8 *buffer, unsigned int length) | |||
647 | fc = le16_to_cpu(*((__le16 *) buffer)); | 647 | fc = le16_to_cpu(*((__le16 *) buffer)); |
648 | 648 | ||
649 | is_qos = ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) && | 649 | is_qos = ((fc & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) && |
650 | ((fc & IEEE80211_FCTL_STYPE) == IEEE80211_STYPE_QOS_DATA); | 650 | (fc & IEEE80211_STYPE_QOS_DATA); |
651 | is_4addr = (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == | 651 | is_4addr = (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == |
652 | (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS); | 652 | (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS); |
653 | need_padding = is_qos ^ is_4addr; | 653 | need_padding = is_qos ^ is_4addr; |
diff --git a/drivers/of/base.c b/drivers/of/base.c index 9bd7c4a31253..23ffb7c0caf2 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c | |||
@@ -65,6 +65,9 @@ struct property *of_find_property(const struct device_node *np, | |||
65 | { | 65 | { |
66 | struct property *pp; | 66 | struct property *pp; |
67 | 67 | ||
68 | if (!np) | ||
69 | return NULL; | ||
70 | |||
68 | read_lock(&devtree_lock); | 71 | read_lock(&devtree_lock); |
69 | for (pp = np->properties; pp != 0; pp = pp->next) { | 72 | for (pp = np->properties; pp != 0; pp = pp->next) { |
70 | if (of_prop_cmp(pp->name, name) == 0) { | 73 | if (of_prop_cmp(pp->name, name) == 0) { |
diff --git a/drivers/parisc/asp.c b/drivers/parisc/asp.c index 558420bc9f88..821369135369 100644 --- a/drivers/parisc/asp.c +++ b/drivers/parisc/asp.c | |||
@@ -88,7 +88,7 @@ asp_init_chip(struct parisc_device *dev) | |||
88 | ret = -EBUSY; | 88 | ret = -EBUSY; |
89 | dev->irq = gsc_claim_irq(&gsc_irq, ASP_GSC_IRQ); | 89 | dev->irq = gsc_claim_irq(&gsc_irq, ASP_GSC_IRQ); |
90 | if (dev->irq < 0) { | 90 | if (dev->irq < 0) { |
91 | printk(KERN_ERR "%s(): cannot get GSC irq\n", __FUNCTION__); | 91 | printk(KERN_ERR "%s(): cannot get GSC irq\n", __func__); |
92 | goto out; | 92 | goto out; |
93 | } | 93 | } |
94 | 94 | ||
diff --git a/drivers/parisc/ccio-dma.c b/drivers/parisc/ccio-dma.c index 07d2a8d4498f..b30e38f3a50d 100644 --- a/drivers/parisc/ccio-dma.c +++ b/drivers/parisc/ccio-dma.c | |||
@@ -359,7 +359,7 @@ ccio_alloc_range(struct ioc *ioc, struct device *dev, size_t size) | |||
359 | BUG_ON((pages_needed * IOVP_SIZE) > DMA_CHUNK_SIZE); | 359 | BUG_ON((pages_needed * IOVP_SIZE) > DMA_CHUNK_SIZE); |
360 | 360 | ||
361 | DBG_RES("%s() size: %d pages_needed %d\n", | 361 | DBG_RES("%s() size: %d pages_needed %d\n", |
362 | __FUNCTION__, size, pages_needed); | 362 | __func__, size, pages_needed); |
363 | 363 | ||
364 | /* | 364 | /* |
365 | ** "seek and ye shall find"...praying never hurts either... | 365 | ** "seek and ye shall find"...praying never hurts either... |
@@ -395,16 +395,16 @@ ccio_alloc_range(struct ioc *ioc, struct device *dev, size_t size) | |||
395 | #endif | 395 | #endif |
396 | } else { | 396 | } else { |
397 | panic("%s: %s() Too many pages to map. pages_needed: %u\n", | 397 | panic("%s: %s() Too many pages to map. pages_needed: %u\n", |
398 | __FILE__, __FUNCTION__, pages_needed); | 398 | __FILE__, __func__, pages_needed); |
399 | } | 399 | } |
400 | 400 | ||
401 | panic("%s: %s() I/O MMU is out of mapping resources.\n", __FILE__, | 401 | panic("%s: %s() I/O MMU is out of mapping resources.\n", __FILE__, |
402 | __FUNCTION__); | 402 | __func__); |
403 | 403 | ||
404 | resource_found: | 404 | resource_found: |
405 | 405 | ||
406 | DBG_RES("%s() res_idx %d res_hint: %d\n", | 406 | DBG_RES("%s() res_idx %d res_hint: %d\n", |
407 | __FUNCTION__, res_idx, ioc->res_hint); | 407 | __func__, res_idx, ioc->res_hint); |
408 | 408 | ||
409 | #ifdef CCIO_SEARCH_TIME | 409 | #ifdef CCIO_SEARCH_TIME |
410 | { | 410 | { |
@@ -450,7 +450,7 @@ ccio_free_range(struct ioc *ioc, dma_addr_t iova, unsigned long pages_mapped) | |||
450 | BUG_ON(pages_mapped > BITS_PER_LONG); | 450 | BUG_ON(pages_mapped > BITS_PER_LONG); |
451 | 451 | ||
452 | DBG_RES("%s(): res_idx: %d pages_mapped %d\n", | 452 | DBG_RES("%s(): res_idx: %d pages_mapped %d\n", |
453 | __FUNCTION__, res_idx, pages_mapped); | 453 | __func__, res_idx, pages_mapped); |
454 | 454 | ||
455 | #ifdef CCIO_MAP_STATS | 455 | #ifdef CCIO_MAP_STATS |
456 | ioc->used_pages -= pages_mapped; | 456 | ioc->used_pages -= pages_mapped; |
@@ -474,7 +474,7 @@ ccio_free_range(struct ioc *ioc, dma_addr_t iova, unsigned long pages_mapped) | |||
474 | #endif | 474 | #endif |
475 | } else { | 475 | } else { |
476 | panic("%s:%s() Too many pages to unmap.\n", __FILE__, | 476 | panic("%s:%s() Too many pages to unmap.\n", __FILE__, |
477 | __FUNCTION__); | 477 | __func__); |
478 | } | 478 | } |
479 | } | 479 | } |
480 | 480 | ||
@@ -775,7 +775,7 @@ ccio_map_single(struct device *dev, void *addr, size_t size, | |||
775 | pdir_start = &(ioc->pdir_base[idx]); | 775 | pdir_start = &(ioc->pdir_base[idx]); |
776 | 776 | ||
777 | DBG_RUN("%s() 0x%p -> 0x%lx size: %0x%x\n", | 777 | DBG_RUN("%s() 0x%p -> 0x%lx size: %0x%x\n", |
778 | __FUNCTION__, addr, (long)iovp | offset, size); | 778 | __func__, addr, (long)iovp | offset, size); |
779 | 779 | ||
780 | /* If not cacheline aligned, force SAFE_DMA on the whole mess */ | 780 | /* If not cacheline aligned, force SAFE_DMA on the whole mess */ |
781 | if((size % L1_CACHE_BYTES) || ((unsigned long)addr % L1_CACHE_BYTES)) | 781 | if((size % L1_CACHE_BYTES) || ((unsigned long)addr % L1_CACHE_BYTES)) |
@@ -820,7 +820,7 @@ ccio_unmap_single(struct device *dev, dma_addr_t iova, size_t size, | |||
820 | ioc = GET_IOC(dev); | 820 | ioc = GET_IOC(dev); |
821 | 821 | ||
822 | DBG_RUN("%s() iovp 0x%lx/%x\n", | 822 | DBG_RUN("%s() iovp 0x%lx/%x\n", |
823 | __FUNCTION__, (long)iova, size); | 823 | __func__, (long)iova, size); |
824 | 824 | ||
825 | iova ^= offset; /* clear offset bits */ | 825 | iova ^= offset; /* clear offset bits */ |
826 | size += offset; | 826 | size += offset; |
@@ -922,7 +922,7 @@ ccio_map_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
922 | BUG_ON(!dev); | 922 | BUG_ON(!dev); |
923 | ioc = GET_IOC(dev); | 923 | ioc = GET_IOC(dev); |
924 | 924 | ||
925 | DBG_RUN_SG("%s() START %d entries\n", __FUNCTION__, nents); | 925 | DBG_RUN_SG("%s() START %d entries\n", __func__, nents); |
926 | 926 | ||
927 | /* Fast path single entry scatterlists. */ | 927 | /* Fast path single entry scatterlists. */ |
928 | if (nents == 1) { | 928 | if (nents == 1) { |
@@ -966,7 +966,7 @@ ccio_map_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
966 | 966 | ||
967 | BUG_ON(coalesced != filled); | 967 | BUG_ON(coalesced != filled); |
968 | 968 | ||
969 | DBG_RUN_SG("%s() DONE %d mappings\n", __FUNCTION__, filled); | 969 | DBG_RUN_SG("%s() DONE %d mappings\n", __func__, filled); |
970 | 970 | ||
971 | for (i = 0; i < filled; i++) | 971 | for (i = 0; i < filled; i++) |
972 | current_len += sg_dma_len(sglist + i); | 972 | current_len += sg_dma_len(sglist + i); |
@@ -995,7 +995,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
995 | ioc = GET_IOC(dev); | 995 | ioc = GET_IOC(dev); |
996 | 996 | ||
997 | DBG_RUN_SG("%s() START %d entries, %08lx,%x\n", | 997 | DBG_RUN_SG("%s() START %d entries, %08lx,%x\n", |
998 | __FUNCTION__, nents, sg_virt_addr(sglist), sglist->length); | 998 | __func__, nents, sg_virt_addr(sglist), sglist->length); |
999 | 999 | ||
1000 | #ifdef CCIO_MAP_STATS | 1000 | #ifdef CCIO_MAP_STATS |
1001 | ioc->usg_calls++; | 1001 | ioc->usg_calls++; |
@@ -1011,7 +1011,7 @@ ccio_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
1011 | ++sglist; | 1011 | ++sglist; |
1012 | } | 1012 | } |
1013 | 1013 | ||
1014 | DBG_RUN_SG("%s() DONE (nents %d)\n", __FUNCTION__, nents); | 1014 | DBG_RUN_SG("%s() DONE (nents %d)\n", __func__, nents); |
1015 | } | 1015 | } |
1016 | 1016 | ||
1017 | static struct hppa_dma_ops ccio_ops = { | 1017 | static struct hppa_dma_ops ccio_ops = { |
@@ -1225,7 +1225,7 @@ static int | |||
1225 | ccio_get_iotlb_size(struct parisc_device *dev) | 1225 | ccio_get_iotlb_size(struct parisc_device *dev) |
1226 | { | 1226 | { |
1227 | if (dev->spa_shift == 0) { | 1227 | if (dev->spa_shift == 0) { |
1228 | panic("%s() : Can't determine I/O TLB size.\n", __FUNCTION__); | 1228 | panic("%s() : Can't determine I/O TLB size.\n", __func__); |
1229 | } | 1229 | } |
1230 | return (1 << dev->spa_shift); | 1230 | return (1 << dev->spa_shift); |
1231 | } | 1231 | } |
@@ -1315,7 +1315,7 @@ ccio_ioc_init(struct ioc *ioc) | |||
1315 | BUG_ON((1 << get_order(ioc->pdir_size)) != (ioc->pdir_size >> PAGE_SHIFT)); | 1315 | BUG_ON((1 << get_order(ioc->pdir_size)) != (ioc->pdir_size >> PAGE_SHIFT)); |
1316 | 1316 | ||
1317 | DBG_INIT("%s() hpa 0x%p mem %luMB IOV %dMB (%d bits)\n", | 1317 | DBG_INIT("%s() hpa 0x%p mem %luMB IOV %dMB (%d bits)\n", |
1318 | __FUNCTION__, ioc->ioc_regs, | 1318 | __func__, ioc->ioc_regs, |
1319 | (unsigned long) num_physpages >> (20 - PAGE_SHIFT), | 1319 | (unsigned long) num_physpages >> (20 - PAGE_SHIFT), |
1320 | iova_space_size>>20, | 1320 | iova_space_size>>20, |
1321 | iov_order + PAGE_SHIFT); | 1321 | iov_order + PAGE_SHIFT); |
@@ -1323,7 +1323,7 @@ ccio_ioc_init(struct ioc *ioc) | |||
1323 | ioc->pdir_base = (u64 *)__get_free_pages(GFP_KERNEL, | 1323 | ioc->pdir_base = (u64 *)__get_free_pages(GFP_KERNEL, |
1324 | get_order(ioc->pdir_size)); | 1324 | get_order(ioc->pdir_size)); |
1325 | if(NULL == ioc->pdir_base) { | 1325 | if(NULL == ioc->pdir_base) { |
1326 | panic("%s() could not allocate I/O Page Table\n", __FUNCTION__); | 1326 | panic("%s() could not allocate I/O Page Table\n", __func__); |
1327 | } | 1327 | } |
1328 | memset(ioc->pdir_base, 0, ioc->pdir_size); | 1328 | memset(ioc->pdir_base, 0, ioc->pdir_size); |
1329 | 1329 | ||
@@ -1332,12 +1332,12 @@ ccio_ioc_init(struct ioc *ioc) | |||
1332 | 1332 | ||
1333 | /* resource map size dictated by pdir_size */ | 1333 | /* resource map size dictated by pdir_size */ |
1334 | ioc->res_size = (ioc->pdir_size / sizeof(u64)) >> 3; | 1334 | ioc->res_size = (ioc->pdir_size / sizeof(u64)) >> 3; |
1335 | DBG_INIT("%s() res_size 0x%x\n", __FUNCTION__, ioc->res_size); | 1335 | DBG_INIT("%s() res_size 0x%x\n", __func__, ioc->res_size); |
1336 | 1336 | ||
1337 | ioc->res_map = (u8 *)__get_free_pages(GFP_KERNEL, | 1337 | ioc->res_map = (u8 *)__get_free_pages(GFP_KERNEL, |
1338 | get_order(ioc->res_size)); | 1338 | get_order(ioc->res_size)); |
1339 | if(NULL == ioc->res_map) { | 1339 | if(NULL == ioc->res_map) { |
1340 | panic("%s() could not allocate resource map\n", __FUNCTION__); | 1340 | panic("%s() could not allocate resource map\n", __func__); |
1341 | } | 1341 | } |
1342 | memset(ioc->res_map, 0, ioc->res_size); | 1342 | memset(ioc->res_map, 0, ioc->res_size); |
1343 | 1343 | ||
@@ -1409,7 +1409,7 @@ ccio_init_resource(struct resource *res, char *name, void __iomem *ioaddr) | |||
1409 | result = insert_resource(&iomem_resource, res); | 1409 | result = insert_resource(&iomem_resource, res); |
1410 | if (result < 0) { | 1410 | if (result < 0) { |
1411 | printk(KERN_ERR "%s() failed to claim CCIO bus address space (%08lx,%08lx)\n", | 1411 | printk(KERN_ERR "%s() failed to claim CCIO bus address space (%08lx,%08lx)\n", |
1412 | __FUNCTION__, res->start, res->end); | 1412 | __func__, res->start, res->end); |
1413 | } | 1413 | } |
1414 | } | 1414 | } |
1415 | 1415 | ||
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c index d9c6322a721b..fd56128525d1 100644 --- a/drivers/parisc/dino.c +++ b/drivers/parisc/dino.c | |||
@@ -180,7 +180,7 @@ static int dino_cfg_read(struct pci_bus *bus, unsigned int devfn, int where, | |||
180 | void __iomem *base_addr = d->hba.base_addr; | 180 | void __iomem *base_addr = d->hba.base_addr; |
181 | unsigned long flags; | 181 | unsigned long flags; |
182 | 182 | ||
183 | DBG("%s: %p, %d, %d, %d\n", __FUNCTION__, base_addr, devfn, where, | 183 | DBG("%s: %p, %d, %d, %d\n", __func__, base_addr, devfn, where, |
184 | size); | 184 | size); |
185 | spin_lock_irqsave(&d->dinosaur_pen, flags); | 185 | spin_lock_irqsave(&d->dinosaur_pen, flags); |
186 | 186 | ||
@@ -215,7 +215,7 @@ static int dino_cfg_write(struct pci_bus *bus, unsigned int devfn, int where, | |||
215 | void __iomem *base_addr = d->hba.base_addr; | 215 | void __iomem *base_addr = d->hba.base_addr; |
216 | unsigned long flags; | 216 | unsigned long flags; |
217 | 217 | ||
218 | DBG("%s: %p, %d, %d, %d\n", __FUNCTION__, base_addr, devfn, where, | 218 | DBG("%s: %p, %d, %d, %d\n", __func__, base_addr, devfn, where, |
219 | size); | 219 | size); |
220 | spin_lock_irqsave(&d->dinosaur_pen, flags); | 220 | spin_lock_irqsave(&d->dinosaur_pen, flags); |
221 | 221 | ||
@@ -301,7 +301,7 @@ static void dino_disable_irq(unsigned int irq) | |||
301 | struct dino_device *dino_dev = irq_desc[irq].chip_data; | 301 | struct dino_device *dino_dev = irq_desc[irq].chip_data; |
302 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); | 302 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); |
303 | 303 | ||
304 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); | 304 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __func__, dino_dev, irq); |
305 | 305 | ||
306 | /* Clear the matching bit in the IMR register */ | 306 | /* Clear the matching bit in the IMR register */ |
307 | dino_dev->imr &= ~(DINO_MASK_IRQ(local_irq)); | 307 | dino_dev->imr &= ~(DINO_MASK_IRQ(local_irq)); |
@@ -314,7 +314,7 @@ static void dino_enable_irq(unsigned int irq) | |||
314 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); | 314 | int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); |
315 | u32 tmp; | 315 | u32 tmp; |
316 | 316 | ||
317 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); | 317 | DBG(KERN_WARNING "%s(0x%p, %d)\n", __func__, dino_dev, irq); |
318 | 318 | ||
319 | /* | 319 | /* |
320 | ** clear pending IRQ bits | 320 | ** clear pending IRQ bits |
@@ -340,7 +340,7 @@ static void dino_enable_irq(unsigned int irq) | |||
340 | tmp = __raw_readl(dino_dev->hba.base_addr+DINO_ILR); | 340 | tmp = __raw_readl(dino_dev->hba.base_addr+DINO_ILR); |
341 | if (tmp & DINO_MASK_IRQ(local_irq)) { | 341 | if (tmp & DINO_MASK_IRQ(local_irq)) { |
342 | DBG(KERN_WARNING "%s(): IRQ asserted! (ILR 0x%x)\n", | 342 | DBG(KERN_WARNING "%s(): IRQ asserted! (ILR 0x%x)\n", |
343 | __FUNCTION__, tmp); | 343 | __func__, tmp); |
344 | gsc_writel(dino_dev->txn_data, dino_dev->txn_addr); | 344 | gsc_writel(dino_dev->txn_data, dino_dev->txn_addr); |
345 | } | 345 | } |
346 | } | 346 | } |
@@ -388,7 +388,7 @@ ilr_again: | |||
388 | int local_irq = __ffs(mask); | 388 | int local_irq = __ffs(mask); |
389 | int irq = dino_dev->global_irq[local_irq]; | 389 | int irq = dino_dev->global_irq[local_irq]; |
390 | DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n", | 390 | DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n", |
391 | __FUNCTION__, irq, intr_dev, mask); | 391 | __func__, irq, intr_dev, mask); |
392 | __do_IRQ(irq); | 392 | __do_IRQ(irq); |
393 | mask &= ~(1 << local_irq); | 393 | mask &= ~(1 << local_irq); |
394 | } while (mask); | 394 | } while (mask); |
@@ -566,7 +566,7 @@ dino_fixup_bus(struct pci_bus *bus) | |||
566 | int port_base = HBA_PORT_BASE(dino_dev->hba.hba_num); | 566 | int port_base = HBA_PORT_BASE(dino_dev->hba.hba_num); |
567 | 567 | ||
568 | DBG(KERN_WARNING "%s(0x%p) bus %d platform_data 0x%p\n", | 568 | DBG(KERN_WARNING "%s(0x%p) bus %d platform_data 0x%p\n", |
569 | __FUNCTION__, bus, bus->secondary, | 569 | __func__, bus, bus->secondary, |
570 | bus->bridge->platform_data); | 570 | bus->bridge->platform_data); |
571 | 571 | ||
572 | /* Firmware doesn't set up card-mode dino, so we have to */ | 572 | /* Firmware doesn't set up card-mode dino, so we have to */ |
diff --git a/drivers/parisc/gsc.c b/drivers/parisc/gsc.c index 1b3e3fd12d95..f7d088b897ee 100644 --- a/drivers/parisc/gsc.c +++ b/drivers/parisc/gsc.c | |||
@@ -112,7 +112,7 @@ static void gsc_asic_disable_irq(unsigned int irq) | |||
112 | int local_irq = gsc_find_local_irq(irq, irq_dev->global_irq, 32); | 112 | int local_irq = gsc_find_local_irq(irq, irq_dev->global_irq, 32); |
113 | u32 imr; | 113 | u32 imr; |
114 | 114 | ||
115 | DEBPRINTK(KERN_DEBUG "%s(%d) %s: IMR 0x%x\n", __FUNCTION__, irq, | 115 | DEBPRINTK(KERN_DEBUG "%s(%d) %s: IMR 0x%x\n", __func__, irq, |
116 | irq_dev->name, imr); | 116 | irq_dev->name, imr); |
117 | 117 | ||
118 | /* Disable the IRQ line by clearing the bit in the IMR */ | 118 | /* Disable the IRQ line by clearing the bit in the IMR */ |
@@ -127,7 +127,7 @@ static void gsc_asic_enable_irq(unsigned int irq) | |||
127 | int local_irq = gsc_find_local_irq(irq, irq_dev->global_irq, 32); | 127 | int local_irq = gsc_find_local_irq(irq, irq_dev->global_irq, 32); |
128 | u32 imr; | 128 | u32 imr; |
129 | 129 | ||
130 | DEBPRINTK(KERN_DEBUG "%s(%d) %s: IMR 0x%x\n", __FUNCTION__, irq, | 130 | DEBPRINTK(KERN_DEBUG "%s(%d) %s: IMR 0x%x\n", __func__, irq, |
131 | irq_dev->name, imr); | 131 | irq_dev->name, imr); |
132 | 132 | ||
133 | /* Enable the IRQ line by setting the bit in the IMR */ | 133 | /* Enable the IRQ line by setting the bit in the IMR */ |
diff --git a/drivers/parisc/lasi.c b/drivers/parisc/lasi.c index cb3d28176129..bee510098ce8 100644 --- a/drivers/parisc/lasi.c +++ b/drivers/parisc/lasi.c | |||
@@ -193,7 +193,7 @@ lasi_init_chip(struct parisc_device *dev) | |||
193 | dev->irq = gsc_alloc_irq(&gsc_irq); | 193 | dev->irq = gsc_alloc_irq(&gsc_irq); |
194 | if (dev->irq < 0) { | 194 | if (dev->irq < 0) { |
195 | printk(KERN_ERR "%s(): cannot get GSC irq\n", | 195 | printk(KERN_ERR "%s(): cannot get GSC irq\n", |
196 | __FUNCTION__); | 196 | __func__); |
197 | kfree(lasi); | 197 | kfree(lasi); |
198 | return -EBUSY; | 198 | return -EBUSY; |
199 | } | 199 | } |
diff --git a/drivers/parisc/lba_pci.c b/drivers/parisc/lba_pci.c index 66ce61048361..a28c8946deaa 100644 --- a/drivers/parisc/lba_pci.c +++ b/drivers/parisc/lba_pci.c | |||
@@ -377,12 +377,12 @@ static int elroy_cfg_read(struct pci_bus *bus, unsigned int devfn, int pos, int | |||
377 | /* original - Generate config cycle on broken elroy | 377 | /* original - Generate config cycle on broken elroy |
378 | with risk we will miss PCI bus errors. */ | 378 | with risk we will miss PCI bus errors. */ |
379 | *data = lba_rd_cfg(d, tok, pos, size); | 379 | *data = lba_rd_cfg(d, tok, pos, size); |
380 | DBG_CFG("%s(%x+%2x) -> 0x%x (a)\n", __FUNCTION__, tok, pos, *data); | 380 | DBG_CFG("%s(%x+%2x) -> 0x%x (a)\n", __func__, tok, pos, *data); |
381 | return 0; | 381 | return 0; |
382 | } | 382 | } |
383 | 383 | ||
384 | if (LBA_SKIP_PROBE(d) && !lba_device_present(bus->secondary, devfn, d)) { | 384 | if (LBA_SKIP_PROBE(d) && !lba_device_present(bus->secondary, devfn, d)) { |
385 | DBG_CFG("%s(%x+%2x) -> -1 (b)\n", __FUNCTION__, tok, pos); | 385 | DBG_CFG("%s(%x+%2x) -> -1 (b)\n", __func__, tok, pos); |
386 | /* either don't want to look or know device isn't present. */ | 386 | /* either don't want to look or know device isn't present. */ |
387 | *data = ~0U; | 387 | *data = ~0U; |
388 | return(0); | 388 | return(0); |
@@ -398,7 +398,7 @@ static int elroy_cfg_read(struct pci_bus *bus, unsigned int devfn, int pos, int | |||
398 | case 2: *data = READ_REG16(data_reg + (pos & 2)); break; | 398 | case 2: *data = READ_REG16(data_reg + (pos & 2)); break; |
399 | case 4: *data = READ_REG32(data_reg); break; | 399 | case 4: *data = READ_REG32(data_reg); break; |
400 | } | 400 | } |
401 | DBG_CFG("%s(%x+%2x) -> 0x%x (c)\n", __FUNCTION__, tok, pos, *data); | 401 | DBG_CFG("%s(%x+%2x) -> 0x%x (c)\n", __func__, tok, pos, *data); |
402 | return 0; | 402 | return 0; |
403 | } | 403 | } |
404 | 404 | ||
@@ -441,16 +441,16 @@ static int elroy_cfg_write(struct pci_bus *bus, unsigned int devfn, int pos, int | |||
441 | if (!LBA_SKIP_PROBE(d)) { | 441 | if (!LBA_SKIP_PROBE(d)) { |
442 | /* Original Workaround */ | 442 | /* Original Workaround */ |
443 | lba_wr_cfg(d, tok, pos, (u32) data, size); | 443 | lba_wr_cfg(d, tok, pos, (u32) data, size); |
444 | DBG_CFG("%s(%x+%2x) = 0x%x (a)\n", __FUNCTION__, tok, pos,data); | 444 | DBG_CFG("%s(%x+%2x) = 0x%x (a)\n", __func__, tok, pos,data); |
445 | return 0; | 445 | return 0; |
446 | } | 446 | } |
447 | 447 | ||
448 | if (LBA_SKIP_PROBE(d) && (!lba_device_present(bus->secondary, devfn, d))) { | 448 | if (LBA_SKIP_PROBE(d) && (!lba_device_present(bus->secondary, devfn, d))) { |
449 | DBG_CFG("%s(%x+%2x) = 0x%x (b)\n", __FUNCTION__, tok, pos,data); | 449 | DBG_CFG("%s(%x+%2x) = 0x%x (b)\n", __func__, tok, pos,data); |
450 | return 1; /* New Workaround */ | 450 | return 1; /* New Workaround */ |
451 | } | 451 | } |
452 | 452 | ||
453 | DBG_CFG("%s(%x+%2x) = 0x%x (c)\n", __FUNCTION__, tok, pos, data); | 453 | DBG_CFG("%s(%x+%2x) = 0x%x (c)\n", __func__, tok, pos, data); |
454 | 454 | ||
455 | /* Basic Algorithm */ | 455 | /* Basic Algorithm */ |
456 | LBA_CFG_ADDR_SETUP(d, tok | pos); | 456 | LBA_CFG_ADDR_SETUP(d, tok | pos); |
@@ -521,7 +521,7 @@ static int mercury_cfg_write(struct pci_bus *bus, unsigned int devfn, int pos, i | |||
521 | if ((pos > 255) || (devfn > 255)) | 521 | if ((pos > 255) || (devfn > 255)) |
522 | return -EINVAL; | 522 | return -EINVAL; |
523 | 523 | ||
524 | DBG_CFG("%s(%x+%2x) <- 0x%x (c)\n", __FUNCTION__, tok, pos, data); | 524 | DBG_CFG("%s(%x+%2x) <- 0x%x (c)\n", __func__, tok, pos, data); |
525 | 525 | ||
526 | LBA_CFG_TR4_ADDR_SETUP(d, tok | pos); | 526 | LBA_CFG_TR4_ADDR_SETUP(d, tok | pos); |
527 | switch(size) { | 527 | switch(size) { |
@@ -890,7 +890,7 @@ LBA_PORT_IN(32, 0) | |||
890 | #define LBA_PORT_OUT(size, mask) \ | 890 | #define LBA_PORT_OUT(size, mask) \ |
891 | static void lba_astro_out##size (struct pci_hba_data *d, u16 addr, u##size val) \ | 891 | static void lba_astro_out##size (struct pci_hba_data *d, u16 addr, u##size val) \ |
892 | { \ | 892 | { \ |
893 | DBG_PORT("%s(0x%p, 0x%x, 0x%x)\n", __FUNCTION__, d, addr, val); \ | 893 | DBG_PORT("%s(0x%p, 0x%x, 0x%x)\n", __func__, d, addr, val); \ |
894 | WRITE_REG##size(val, astro_iop_base + addr); \ | 894 | WRITE_REG##size(val, astro_iop_base + addr); \ |
895 | if (LBA_DEV(d)->hw_rev < 3) \ | 895 | if (LBA_DEV(d)->hw_rev < 3) \ |
896 | lba_t32 = READ_U32(d->base_addr + LBA_FUNC_ID); \ | 896 | lba_t32 = READ_U32(d->base_addr + LBA_FUNC_ID); \ |
@@ -932,7 +932,7 @@ static struct pci_port_ops lba_astro_port_ops = { | |||
932 | static u##size lba_pat_in##size (struct pci_hba_data *l, u16 addr) \ | 932 | static u##size lba_pat_in##size (struct pci_hba_data *l, u16 addr) \ |
933 | { \ | 933 | { \ |
934 | u##size t; \ | 934 | u##size t; \ |
935 | DBG_PORT("%s(0x%p, 0x%x) ->", __FUNCTION__, l, addr); \ | 935 | DBG_PORT("%s(0x%p, 0x%x) ->", __func__, l, addr); \ |
936 | t = READ_REG##size(PIOP_TO_GMMIO(LBA_DEV(l), addr)); \ | 936 | t = READ_REG##size(PIOP_TO_GMMIO(LBA_DEV(l), addr)); \ |
937 | DBG_PORT(" 0x%x\n", t); \ | 937 | DBG_PORT(" 0x%x\n", t); \ |
938 | return (t); \ | 938 | return (t); \ |
@@ -948,7 +948,7 @@ LBA_PORT_IN(32, 0) | |||
948 | static void lba_pat_out##size (struct pci_hba_data *l, u16 addr, u##size val) \ | 948 | static void lba_pat_out##size (struct pci_hba_data *l, u16 addr, u##size val) \ |
949 | { \ | 949 | { \ |
950 | void __iomem *where = PIOP_TO_GMMIO(LBA_DEV(l), addr); \ | 950 | void __iomem *where = PIOP_TO_GMMIO(LBA_DEV(l), addr); \ |
951 | DBG_PORT("%s(0x%p, 0x%x, 0x%x)\n", __FUNCTION__, l, addr, val); \ | 951 | DBG_PORT("%s(0x%p, 0x%x, 0x%x)\n", __func__, l, addr, val); \ |
952 | WRITE_REG##size(val, where); \ | 952 | WRITE_REG##size(val, where); \ |
953 | /* flush the I/O down to the elroy at least */ \ | 953 | /* flush the I/O down to the elroy at least */ \ |
954 | lba_t32 = READ_U32(l->base_addr + LBA_FUNC_ID); \ | 954 | lba_t32 = READ_U32(l->base_addr + LBA_FUNC_ID); \ |
@@ -1584,7 +1584,7 @@ void lba_set_iregs(struct parisc_device *lba, u32 ibase, u32 imask) | |||
1584 | WARN_ON((ibase & 0x001fffff) != 0); | 1584 | WARN_ON((ibase & 0x001fffff) != 0); |
1585 | WARN_ON((imask & 0x001fffff) != 0); | 1585 | WARN_ON((imask & 0x001fffff) != 0); |
1586 | 1586 | ||
1587 | DBG("%s() ibase 0x%x imask 0x%x\n", __FUNCTION__, ibase, imask); | 1587 | DBG("%s() ibase 0x%x imask 0x%x\n", __func__, ibase, imask); |
1588 | WRITE_REG32( imask, base_addr + LBA_IMASK); | 1588 | WRITE_REG32( imask, base_addr + LBA_IMASK); |
1589 | WRITE_REG32( ibase, base_addr + LBA_IBASE); | 1589 | WRITE_REG32( ibase, base_addr + LBA_IBASE); |
1590 | iounmap(base_addr); | 1590 | iounmap(base_addr); |
diff --git a/drivers/parisc/led.c b/drivers/parisc/led.c index 703b85edb004..f9b12664f9fb 100644 --- a/drivers/parisc/led.c +++ b/drivers/parisc/led.c | |||
@@ -569,7 +569,7 @@ int __init register_led_driver(int model, unsigned long cmd_reg, unsigned long d | |||
569 | 569 | ||
570 | default: | 570 | default: |
571 | printk(KERN_ERR "%s: Wrong LCD/LED model %d !\n", | 571 | printk(KERN_ERR "%s: Wrong LCD/LED model %d !\n", |
572 | __FUNCTION__, lcd_info.model); | 572 | __func__, lcd_info.model); |
573 | return 1; | 573 | return 1; |
574 | } | 574 | } |
575 | 575 | ||
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c index afc849bd3f58..bc73b96346ff 100644 --- a/drivers/parisc/sba_iommu.c +++ b/drivers/parisc/sba_iommu.c | |||
@@ -384,7 +384,7 @@ sba_search_bitmap(struct ioc *ioc, struct device *dev, | |||
384 | } | 384 | } |
385 | mask = RESMAP_MASK(bits_wanted) >> bitshiftcnt; | 385 | mask = RESMAP_MASK(bits_wanted) >> bitshiftcnt; |
386 | 386 | ||
387 | DBG_RES("%s() o %ld %p", __FUNCTION__, o, res_ptr); | 387 | DBG_RES("%s() o %ld %p", __func__, o, res_ptr); |
388 | while(res_ptr < res_end) | 388 | while(res_ptr < res_end) |
389 | { | 389 | { |
390 | DBG_RES(" %p %lx %lx\n", res_ptr, mask, *res_ptr); | 390 | DBG_RES(" %p %lx %lx\n", res_ptr, mask, *res_ptr); |
@@ -454,7 +454,7 @@ sba_alloc_range(struct ioc *ioc, struct device *dev, size_t size) | |||
454 | #endif | 454 | #endif |
455 | 455 | ||
456 | DBG_RES("%s(%x) %d -> %lx hint %x/%x\n", | 456 | DBG_RES("%s(%x) %d -> %lx hint %x/%x\n", |
457 | __FUNCTION__, size, pages_needed, pide, | 457 | __func__, size, pages_needed, pide, |
458 | (uint) ((unsigned long) ioc->res_hint - (unsigned long) ioc->res_map), | 458 | (uint) ((unsigned long) ioc->res_hint - (unsigned long) ioc->res_map), |
459 | ioc->res_bitshift ); | 459 | ioc->res_bitshift ); |
460 | 460 | ||
@@ -497,7 +497,7 @@ sba_free_range(struct ioc *ioc, dma_addr_t iova, size_t size) | |||
497 | unsigned long m = RESMAP_MASK(bits_not_wanted) >> (pide & (BITS_PER_LONG - 1)); | 497 | unsigned long m = RESMAP_MASK(bits_not_wanted) >> (pide & (BITS_PER_LONG - 1)); |
498 | 498 | ||
499 | DBG_RES("%s( ,%x,%x) %x/%lx %x %p %lx\n", | 499 | DBG_RES("%s( ,%x,%x) %x/%lx %x %p %lx\n", |
500 | __FUNCTION__, (uint) iova, size, | 500 | __func__, (uint) iova, size, |
501 | bits_not_wanted, m, pide, res_ptr, *res_ptr); | 501 | bits_not_wanted, m, pide, res_ptr, *res_ptr); |
502 | 502 | ||
503 | #ifdef SBA_COLLECT_STATS | 503 | #ifdef SBA_COLLECT_STATS |
@@ -740,7 +740,7 @@ sba_map_single(struct device *dev, void *addr, size_t size, | |||
740 | iovp = (dma_addr_t) pide << IOVP_SHIFT; | 740 | iovp = (dma_addr_t) pide << IOVP_SHIFT; |
741 | 741 | ||
742 | DBG_RUN("%s() 0x%p -> 0x%lx\n", | 742 | DBG_RUN("%s() 0x%p -> 0x%lx\n", |
743 | __FUNCTION__, addr, (long) iovp | offset); | 743 | __func__, addr, (long) iovp | offset); |
744 | 744 | ||
745 | pdir_start = &(ioc->pdir_base[pide]); | 745 | pdir_start = &(ioc->pdir_base[pide]); |
746 | 746 | ||
@@ -798,7 +798,7 @@ sba_unmap_single(struct device *dev, dma_addr_t iova, size_t size, | |||
798 | unsigned long flags; | 798 | unsigned long flags; |
799 | dma_addr_t offset; | 799 | dma_addr_t offset; |
800 | 800 | ||
801 | DBG_RUN("%s() iovp 0x%lx/%x\n", __FUNCTION__, (long) iova, size); | 801 | DBG_RUN("%s() iovp 0x%lx/%x\n", __func__, (long) iova, size); |
802 | 802 | ||
803 | ioc = GET_IOC(dev); | 803 | ioc = GET_IOC(dev); |
804 | offset = iova & ~IOVP_MASK; | 804 | offset = iova & ~IOVP_MASK; |
@@ -937,7 +937,7 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
937 | int coalesced, filled = 0; | 937 | int coalesced, filled = 0; |
938 | unsigned long flags; | 938 | unsigned long flags; |
939 | 939 | ||
940 | DBG_RUN_SG("%s() START %d entries\n", __FUNCTION__, nents); | 940 | DBG_RUN_SG("%s() START %d entries\n", __func__, nents); |
941 | 941 | ||
942 | ioc = GET_IOC(dev); | 942 | ioc = GET_IOC(dev); |
943 | 943 | ||
@@ -998,7 +998,7 @@ sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
998 | 998 | ||
999 | spin_unlock_irqrestore(&ioc->res_lock, flags); | 999 | spin_unlock_irqrestore(&ioc->res_lock, flags); |
1000 | 1000 | ||
1001 | DBG_RUN_SG("%s() DONE %d mappings\n", __FUNCTION__, filled); | 1001 | DBG_RUN_SG("%s() DONE %d mappings\n", __func__, filled); |
1002 | 1002 | ||
1003 | return filled; | 1003 | return filled; |
1004 | } | 1004 | } |
@@ -1023,7 +1023,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
1023 | #endif | 1023 | #endif |
1024 | 1024 | ||
1025 | DBG_RUN_SG("%s() START %d entries, %p,%x\n", | 1025 | DBG_RUN_SG("%s() START %d entries, %p,%x\n", |
1026 | __FUNCTION__, nents, sg_virt_addr(sglist), sglist->length); | 1026 | __func__, nents, sg_virt_addr(sglist), sglist->length); |
1027 | 1027 | ||
1028 | ioc = GET_IOC(dev); | 1028 | ioc = GET_IOC(dev); |
1029 | 1029 | ||
@@ -1047,7 +1047,7 @@ sba_unmap_sg(struct device *dev, struct scatterlist *sglist, int nents, | |||
1047 | ++sglist; | 1047 | ++sglist; |
1048 | } | 1048 | } |
1049 | 1049 | ||
1050 | DBG_RUN_SG("%s() DONE (nents %d)\n", __FUNCTION__, nents); | 1050 | DBG_RUN_SG("%s() DONE (nents %d)\n", __func__, nents); |
1051 | 1051 | ||
1052 | #ifdef ASSERT_PDIR_SANITY | 1052 | #ifdef ASSERT_PDIR_SANITY |
1053 | spin_lock_irqsave(&ioc->res_lock, flags); | 1053 | spin_lock_irqsave(&ioc->res_lock, flags); |
@@ -1118,7 +1118,7 @@ sba_alloc_pdir(unsigned int pdir_size) | |||
1118 | pdir_base = __get_free_pages(GFP_KERNEL, pdir_order); | 1118 | pdir_base = __get_free_pages(GFP_KERNEL, pdir_order); |
1119 | if (NULL == (void *) pdir_base) { | 1119 | if (NULL == (void *) pdir_base) { |
1120 | panic("%s() could not allocate I/O Page Table\n", | 1120 | panic("%s() could not allocate I/O Page Table\n", |
1121 | __FUNCTION__); | 1121 | __func__); |
1122 | } | 1122 | } |
1123 | 1123 | ||
1124 | /* If this is not PA8700 (PCX-W2) | 1124 | /* If this is not PA8700 (PCX-W2) |
@@ -1261,7 +1261,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1261 | ioc->pdir_size = (iova_space_size / IOVP_SIZE) * sizeof(u64); | 1261 | ioc->pdir_size = (iova_space_size / IOVP_SIZE) * sizeof(u64); |
1262 | 1262 | ||
1263 | DBG_INIT("%s() hpa 0x%p IOV %dMB (%d bits)\n", | 1263 | DBG_INIT("%s() hpa 0x%p IOV %dMB (%d bits)\n", |
1264 | __FUNCTION__, ioc->ioc_hpa, iova_space_size >> 20, | 1264 | __func__, ioc->ioc_hpa, iova_space_size >> 20, |
1265 | iov_order + PAGE_SHIFT); | 1265 | iov_order + PAGE_SHIFT); |
1266 | 1266 | ||
1267 | ioc->pdir_base = (void *) __get_free_pages(GFP_KERNEL, | 1267 | ioc->pdir_base = (void *) __get_free_pages(GFP_KERNEL, |
@@ -1272,7 +1272,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1272 | memset(ioc->pdir_base, 0, ioc->pdir_size); | 1272 | memset(ioc->pdir_base, 0, ioc->pdir_size); |
1273 | 1273 | ||
1274 | DBG_INIT("%s() pdir %p size %x\n", | 1274 | DBG_INIT("%s() pdir %p size %x\n", |
1275 | __FUNCTION__, ioc->pdir_base, ioc->pdir_size); | 1275 | __func__, ioc->pdir_base, ioc->pdir_size); |
1276 | 1276 | ||
1277 | #ifdef SBA_HINT_SUPPORT | 1277 | #ifdef SBA_HINT_SUPPORT |
1278 | ioc->hint_shift_pdir = iov_order + PAGE_SHIFT; | 1278 | ioc->hint_shift_pdir = iov_order + PAGE_SHIFT; |
@@ -1354,7 +1354,7 @@ sba_ioc_init_pluto(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1354 | 1354 | ||
1355 | if (agp_found && sba_reserve_agpgart) { | 1355 | if (agp_found && sba_reserve_agpgart) { |
1356 | printk(KERN_INFO "%s: reserving %dMb of IOVA space for agpgart\n", | 1356 | printk(KERN_INFO "%s: reserving %dMb of IOVA space for agpgart\n", |
1357 | __FUNCTION__, (iova_space_size/2) >> 20); | 1357 | __func__, (iova_space_size/2) >> 20); |
1358 | ioc->pdir_size /= 2; | 1358 | ioc->pdir_size /= 2; |
1359 | ioc->pdir_base[PDIR_INDEX(iova_space_size/2)] = SBA_AGPGART_COOKIE; | 1359 | ioc->pdir_base[PDIR_INDEX(iova_space_size/2)] = SBA_AGPGART_COOKIE; |
1360 | } | 1360 | } |
@@ -1406,7 +1406,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1406 | ioc->pdir_size = pdir_size = (iova_space_size/IOVP_SIZE) * sizeof(u64); | 1406 | ioc->pdir_size = pdir_size = (iova_space_size/IOVP_SIZE) * sizeof(u64); |
1407 | 1407 | ||
1408 | DBG_INIT("%s() hpa 0x%lx mem %ldMB IOV %dMB (%d bits)\n", | 1408 | DBG_INIT("%s() hpa 0x%lx mem %ldMB IOV %dMB (%d bits)\n", |
1409 | __FUNCTION__, | 1409 | __func__, |
1410 | ioc->ioc_hpa, | 1410 | ioc->ioc_hpa, |
1411 | (unsigned long) num_physpages >> (20 - PAGE_SHIFT), | 1411 | (unsigned long) num_physpages >> (20 - PAGE_SHIFT), |
1412 | iova_space_size>>20, | 1412 | iova_space_size>>20, |
@@ -1415,7 +1415,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1415 | ioc->pdir_base = sba_alloc_pdir(pdir_size); | 1415 | ioc->pdir_base = sba_alloc_pdir(pdir_size); |
1416 | 1416 | ||
1417 | DBG_INIT("%s() pdir %p size %x\n", | 1417 | DBG_INIT("%s() pdir %p size %x\n", |
1418 | __FUNCTION__, ioc->pdir_base, pdir_size); | 1418 | __func__, ioc->pdir_base, pdir_size); |
1419 | 1419 | ||
1420 | #ifdef SBA_HINT_SUPPORT | 1420 | #ifdef SBA_HINT_SUPPORT |
1421 | /* FIXME : DMA HINTs not used */ | 1421 | /* FIXME : DMA HINTs not used */ |
@@ -1443,7 +1443,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1443 | #endif | 1443 | #endif |
1444 | 1444 | ||
1445 | DBG_INIT("%s() IOV base 0x%lx mask 0x%0lx\n", | 1445 | DBG_INIT("%s() IOV base 0x%lx mask 0x%0lx\n", |
1446 | __FUNCTION__, ioc->ibase, ioc->imask); | 1446 | __func__, ioc->ibase, ioc->imask); |
1447 | 1447 | ||
1448 | /* | 1448 | /* |
1449 | ** FIXME: Hint registers are programmed with default hint | 1449 | ** FIXME: Hint registers are programmed with default hint |
@@ -1470,7 +1470,7 @@ sba_ioc_init(struct parisc_device *sba, struct ioc *ioc, int ioc_num) | |||
1470 | 1470 | ||
1471 | ioc->ibase = 0; /* used by SBA_IOVA and related macros */ | 1471 | ioc->ibase = 0; /* used by SBA_IOVA and related macros */ |
1472 | 1472 | ||
1473 | DBG_INIT("%s() DONE\n", __FUNCTION__); | 1473 | DBG_INIT("%s() DONE\n", __func__); |
1474 | } | 1474 | } |
1475 | 1475 | ||
1476 | 1476 | ||
@@ -1544,7 +1544,7 @@ printk("sba_hw_init(): mem_boot 0x%x 0x%x 0x%x 0x%x\n", PAGE0->mem_boot.hpa, | |||
1544 | if (!IS_PLUTO(sba_dev->dev)) { | 1544 | if (!IS_PLUTO(sba_dev->dev)) { |
1545 | ioc_ctl = READ_REG(sba_dev->sba_hpa+IOC_CTRL); | 1545 | ioc_ctl = READ_REG(sba_dev->sba_hpa+IOC_CTRL); |
1546 | DBG_INIT("%s() hpa 0x%lx ioc_ctl 0x%Lx ->", | 1546 | DBG_INIT("%s() hpa 0x%lx ioc_ctl 0x%Lx ->", |
1547 | __FUNCTION__, sba_dev->sba_hpa, ioc_ctl); | 1547 | __func__, sba_dev->sba_hpa, ioc_ctl); |
1548 | ioc_ctl &= ~(IOC_CTRL_RM | IOC_CTRL_NC | IOC_CTRL_CE); | 1548 | ioc_ctl &= ~(IOC_CTRL_RM | IOC_CTRL_NC | IOC_CTRL_CE); |
1549 | ioc_ctl |= IOC_CTRL_DD | IOC_CTRL_D4 | IOC_CTRL_TC; | 1549 | ioc_ctl |= IOC_CTRL_DD | IOC_CTRL_D4 | IOC_CTRL_TC; |
1550 | /* j6700 v1.6 firmware sets 0x294f */ | 1550 | /* j6700 v1.6 firmware sets 0x294f */ |
@@ -1675,7 +1675,7 @@ sba_common_init(struct sba_device *sba_dev) | |||
1675 | 1675 | ||
1676 | res_size >>= 3; /* convert bit count to byte count */ | 1676 | res_size >>= 3; /* convert bit count to byte count */ |
1677 | DBG_INIT("%s() res_size 0x%x\n", | 1677 | DBG_INIT("%s() res_size 0x%x\n", |
1678 | __FUNCTION__, res_size); | 1678 | __func__, res_size); |
1679 | 1679 | ||
1680 | sba_dev->ioc[i].res_size = res_size; | 1680 | sba_dev->ioc[i].res_size = res_size; |
1681 | sba_dev->ioc[i].res_map = (char *) __get_free_pages(GFP_KERNEL, get_order(res_size)); | 1681 | sba_dev->ioc[i].res_map = (char *) __get_free_pages(GFP_KERNEL, get_order(res_size)); |
@@ -1688,7 +1688,7 @@ sba_common_init(struct sba_device *sba_dev) | |||
1688 | if (NULL == sba_dev->ioc[i].res_map) | 1688 | if (NULL == sba_dev->ioc[i].res_map) |
1689 | { | 1689 | { |
1690 | panic("%s:%s() could not allocate resource map\n", | 1690 | panic("%s:%s() could not allocate resource map\n", |
1691 | __FILE__, __FUNCTION__ ); | 1691 | __FILE__, __func__ ); |
1692 | } | 1692 | } |
1693 | 1693 | ||
1694 | memset(sba_dev->ioc[i].res_map, 0, res_size); | 1694 | memset(sba_dev->ioc[i].res_map, 0, res_size); |
@@ -1725,7 +1725,7 @@ sba_common_init(struct sba_device *sba_dev) | |||
1725 | #endif | 1725 | #endif |
1726 | 1726 | ||
1727 | DBG_INIT("%s() %d res_map %x %p\n", | 1727 | DBG_INIT("%s() %d res_map %x %p\n", |
1728 | __FUNCTION__, i, res_size, sba_dev->ioc[i].res_map); | 1728 | __func__, i, res_size, sba_dev->ioc[i].res_map); |
1729 | } | 1729 | } |
1730 | 1730 | ||
1731 | spin_lock_init(&sba_dev->sba_lock); | 1731 | spin_lock_init(&sba_dev->sba_lock); |
diff --git a/drivers/parisc/wax.c b/drivers/parisc/wax.c index 813c2c24ab1e..892a83bbe73d 100644 --- a/drivers/parisc/wax.c +++ b/drivers/parisc/wax.c | |||
@@ -93,7 +93,7 @@ wax_init_chip(struct parisc_device *dev) | |||
93 | dev->irq = gsc_claim_irq(&gsc_irq, WAX_GSC_IRQ); | 93 | dev->irq = gsc_claim_irq(&gsc_irq, WAX_GSC_IRQ); |
94 | if (dev->irq < 0) { | 94 | if (dev->irq < 0) { |
95 | printk(KERN_ERR "%s(): cannot get GSC irq\n", | 95 | printk(KERN_ERR "%s(): cannot get GSC irq\n", |
96 | __FUNCTION__); | 96 | __func__); |
97 | kfree(wax); | 97 | kfree(wax); |
98 | return -EBUSY; | 98 | return -EBUSY; |
99 | } | 99 | } |
diff --git a/drivers/pci/hotplug/pci_hotplug_core.c b/drivers/pci/hotplug/pci_hotplug_core.c index 925ba16355ce..a11021e8ce37 100644 --- a/drivers/pci/hotplug/pci_hotplug_core.c +++ b/drivers/pci/hotplug/pci_hotplug_core.c | |||
@@ -619,6 +619,7 @@ static struct hotplug_slot *get_slot_from_name (const char *name) | |||
619 | int pci_hp_register (struct hotplug_slot *slot) | 619 | int pci_hp_register (struct hotplug_slot *slot) |
620 | { | 620 | { |
621 | int result; | 621 | int result; |
622 | struct hotplug_slot *tmp; | ||
622 | 623 | ||
623 | if (slot == NULL) | 624 | if (slot == NULL) |
624 | return -ENODEV; | 625 | return -ENODEV; |
@@ -630,7 +631,11 @@ int pci_hp_register (struct hotplug_slot *slot) | |||
630 | return -EINVAL; | 631 | return -EINVAL; |
631 | } | 632 | } |
632 | 633 | ||
633 | /* this can fail if we have already registered a slot with the same name */ | 634 | /* Check if we have already registered a slot with the same name. */ |
635 | tmp = get_slot_from_name(slot->name); | ||
636 | if (tmp) | ||
637 | return -EEXIST; | ||
638 | |||
634 | slot->kobj.kset = pci_hotplug_slots_kset; | 639 | slot->kobj.kset = pci_hotplug_slots_kset; |
635 | result = kobject_init_and_add(&slot->kobj, &hotplug_slot_ktype, NULL, | 640 | result = kobject_init_and_add(&slot->kobj, &hotplug_slot_ktype, NULL, |
636 | "%s", slot->name); | 641 | "%s", slot->name); |
diff --git a/drivers/pci/hotplug/pciehp.h b/drivers/pci/hotplug/pciehp.h index 8264a7680435..79c9ddaad3fb 100644 --- a/drivers/pci/hotplug/pciehp.h +++ b/drivers/pci/hotplug/pciehp.h | |||
@@ -97,6 +97,7 @@ struct controller { | |||
97 | u8 cap_base; | 97 | u8 cap_base; |
98 | struct timer_list poll_timer; | 98 | struct timer_list poll_timer; |
99 | volatile int cmd_busy; | 99 | volatile int cmd_busy; |
100 | unsigned int no_cmd_complete:1; | ||
100 | }; | 101 | }; |
101 | 102 | ||
102 | #define INT_BUTTON_IGNORE 0 | 103 | #define INT_BUTTON_IGNORE 0 |
@@ -135,6 +136,7 @@ struct controller { | |||
135 | #define PWR_LED_PRSN 0x00000010 | 136 | #define PWR_LED_PRSN 0x00000010 |
136 | #define HP_SUPR_RM_SUP 0x00000020 | 137 | #define HP_SUPR_RM_SUP 0x00000020 |
137 | #define EMI_PRSN 0x00020000 | 138 | #define EMI_PRSN 0x00020000 |
139 | #define NO_CMD_CMPL_SUP 0x00040000 | ||
138 | 140 | ||
139 | #define ATTN_BUTTN(ctrl) ((ctrl)->slot_cap & ATTN_BUTTN_PRSN) | 141 | #define ATTN_BUTTN(ctrl) ((ctrl)->slot_cap & ATTN_BUTTN_PRSN) |
140 | #define POWER_CTRL(ctrl) ((ctrl)->slot_cap & PWR_CTRL_PRSN) | 142 | #define POWER_CTRL(ctrl) ((ctrl)->slot_cap & PWR_CTRL_PRSN) |
@@ -143,13 +145,14 @@ struct controller { | |||
143 | #define PWR_LED(ctrl) ((ctrl)->slot_cap & PWR_LED_PRSN) | 145 | #define PWR_LED(ctrl) ((ctrl)->slot_cap & PWR_LED_PRSN) |
144 | #define HP_SUPR_RM(ctrl) ((ctrl)->slot_cap & HP_SUPR_RM_SUP) | 146 | #define HP_SUPR_RM(ctrl) ((ctrl)->slot_cap & HP_SUPR_RM_SUP) |
145 | #define EMI(ctrl) ((ctrl)->slot_cap & EMI_PRSN) | 147 | #define EMI(ctrl) ((ctrl)->slot_cap & EMI_PRSN) |
148 | #define NO_CMD_CMPL(ctrl) ((ctrl)->slot_cap & NO_CMD_CMPL_SUP) | ||
146 | 149 | ||
147 | extern int pciehp_sysfs_enable_slot(struct slot *slot); | 150 | extern int pciehp_sysfs_enable_slot(struct slot *slot); |
148 | extern int pciehp_sysfs_disable_slot(struct slot *slot); | 151 | extern int pciehp_sysfs_disable_slot(struct slot *slot); |
149 | extern u8 pciehp_handle_attention_button(u8 hp_slot, struct controller *ctrl); | 152 | extern u8 pciehp_handle_attention_button(struct slot *p_slot); |
150 | extern u8 pciehp_handle_switch_change(u8 hp_slot, struct controller *ctrl); | 153 | extern u8 pciehp_handle_switch_change(struct slot *p_slot); |
151 | extern u8 pciehp_handle_presence_change(u8 hp_slot, struct controller *ctrl); | 154 | extern u8 pciehp_handle_presence_change(struct slot *p_slot); |
152 | extern u8 pciehp_handle_power_fault(u8 hp_slot, struct controller *ctrl); | 155 | extern u8 pciehp_handle_power_fault(struct slot *p_slot); |
153 | extern int pciehp_configure_device(struct slot *p_slot); | 156 | extern int pciehp_configure_device(struct slot *p_slot); |
154 | extern int pciehp_unconfigure_device(struct slot *p_slot); | 157 | extern int pciehp_unconfigure_device(struct slot *p_slot); |
155 | extern void pciehp_queue_pushbutton_work(struct work_struct *work); | 158 | extern void pciehp_queue_pushbutton_work(struct work_struct *work); |
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 43d8ddb2d679..48a2ed378914 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c | |||
@@ -254,7 +254,11 @@ static int init_slots(struct controller *ctrl) | |||
254 | slot->hp_slot, slot->number, ctrl->slot_device_offset); | 254 | slot->hp_slot, slot->number, ctrl->slot_device_offset); |
255 | retval = pci_hp_register(hotplug_slot); | 255 | retval = pci_hp_register(hotplug_slot); |
256 | if (retval) { | 256 | if (retval) { |
257 | err ("pci_hp_register failed with error %d\n", retval); | 257 | err("pci_hp_register failed with error %d\n", retval); |
258 | if (retval == -EEXIST) | ||
259 | err("Failed to register slot because of name " | ||
260 | "collision. Try \'pciehp_slot_with_bus\' " | ||
261 | "module option.\n"); | ||
258 | goto error_info; | 262 | goto error_info; |
259 | } | 263 | } |
260 | /* create additional sysfs entries */ | 264 | /* create additional sysfs entries */ |
diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c index 0a7aa628e955..96a5d55a4983 100644 --- a/drivers/pci/hotplug/pciehp_ctrl.c +++ b/drivers/pci/hotplug/pciehp_ctrl.c | |||
@@ -55,16 +55,13 @@ static int queue_interrupt_event(struct slot *p_slot, u32 event_type) | |||
55 | return 0; | 55 | return 0; |
56 | } | 56 | } |
57 | 57 | ||
58 | u8 pciehp_handle_attention_button(u8 hp_slot, struct controller *ctrl) | 58 | u8 pciehp_handle_attention_button(struct slot *p_slot) |
59 | { | 59 | { |
60 | struct slot *p_slot; | ||
61 | u32 event_type; | 60 | u32 event_type; |
62 | 61 | ||
63 | /* Attention Button Change */ | 62 | /* Attention Button Change */ |
64 | dbg("pciehp: Attention button interrupt received.\n"); | 63 | dbg("pciehp: Attention button interrupt received.\n"); |
65 | 64 | ||
66 | p_slot = pciehp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset); | ||
67 | |||
68 | /* | 65 | /* |
69 | * Button pressed - See if need to TAKE ACTION!!! | 66 | * Button pressed - See if need to TAKE ACTION!!! |
70 | */ | 67 | */ |
@@ -76,18 +73,15 @@ u8 pciehp_handle_attention_button(u8 hp_slot, struct controller *ctrl) | |||
76 | return 0; | 73 | return 0; |
77 | } | 74 | } |
78 | 75 | ||
79 | u8 pciehp_handle_switch_change(u8 hp_slot, struct controller *ctrl) | 76 | u8 pciehp_handle_switch_change(struct slot *p_slot) |
80 | { | 77 | { |
81 | struct slot *p_slot; | ||
82 | u8 getstatus; | 78 | u8 getstatus; |
83 | u32 event_type; | 79 | u32 event_type; |
84 | 80 | ||
85 | /* Switch Change */ | 81 | /* Switch Change */ |
86 | dbg("pciehp: Switch interrupt received.\n"); | 82 | dbg("pciehp: Switch interrupt received.\n"); |
87 | 83 | ||
88 | p_slot = pciehp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset); | ||
89 | p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); | 84 | p_slot->hpc_ops->get_latch_status(p_slot, &getstatus); |
90 | |||
91 | if (getstatus) { | 85 | if (getstatus) { |
92 | /* | 86 | /* |
93 | * Switch opened | 87 | * Switch opened |
@@ -107,17 +101,14 @@ u8 pciehp_handle_switch_change(u8 hp_slot, struct controller *ctrl) | |||
107 | return 1; | 101 | return 1; |
108 | } | 102 | } |
109 | 103 | ||
110 | u8 pciehp_handle_presence_change(u8 hp_slot, struct controller *ctrl) | 104 | u8 pciehp_handle_presence_change(struct slot *p_slot) |
111 | { | 105 | { |
112 | struct slot *p_slot; | ||
113 | u32 event_type; | 106 | u32 event_type; |
114 | u8 presence_save; | 107 | u8 presence_save; |
115 | 108 | ||
116 | /* Presence Change */ | 109 | /* Presence Change */ |
117 | dbg("pciehp: Presence/Notify input change.\n"); | 110 | dbg("pciehp: Presence/Notify input change.\n"); |
118 | 111 | ||
119 | p_slot = pciehp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset); | ||
120 | |||
121 | /* Switch is open, assume a presence change | 112 | /* Switch is open, assume a presence change |
122 | * Save the presence state | 113 | * Save the presence state |
123 | */ | 114 | */ |
@@ -141,16 +132,13 @@ u8 pciehp_handle_presence_change(u8 hp_slot, struct controller *ctrl) | |||
141 | return 1; | 132 | return 1; |
142 | } | 133 | } |
143 | 134 | ||
144 | u8 pciehp_handle_power_fault(u8 hp_slot, struct controller *ctrl) | 135 | u8 pciehp_handle_power_fault(struct slot *p_slot) |
145 | { | 136 | { |
146 | struct slot *p_slot; | ||
147 | u32 event_type; | 137 | u32 event_type; |
148 | 138 | ||
149 | /* power fault */ | 139 | /* power fault */ |
150 | dbg("pciehp: Power fault interrupt received.\n"); | 140 | dbg("pciehp: Power fault interrupt received.\n"); |
151 | 141 | ||
152 | p_slot = pciehp_find_slot(ctrl, hp_slot + ctrl->slot_device_offset); | ||
153 | |||
154 | if ( !(p_slot->hpc_ops->query_power_fault(p_slot))) { | 142 | if ( !(p_slot->hpc_ops->query_power_fault(p_slot))) { |
155 | /* | 143 | /* |
156 | * power fault Cleared | 144 | * power fault Cleared |
@@ -163,7 +151,7 @@ u8 pciehp_handle_power_fault(u8 hp_slot, struct controller *ctrl) | |||
163 | */ | 151 | */ |
164 | info("Power fault on Slot(%s)\n", p_slot->name); | 152 | info("Power fault on Slot(%s)\n", p_slot->name); |
165 | event_type = INT_POWER_FAULT; | 153 | event_type = INT_POWER_FAULT; |
166 | info("power fault bit %x set\n", hp_slot); | 154 | info("power fault bit %x set\n", 0); |
167 | } | 155 | } |
168 | 156 | ||
169 | queue_interrupt_event(p_slot, event_type); | 157 | queue_interrupt_event(p_slot, event_type); |
@@ -186,6 +174,13 @@ static void set_slot_off(struct controller *ctrl, struct slot * pslot) | |||
186 | } | 174 | } |
187 | } | 175 | } |
188 | 176 | ||
177 | /* | ||
178 | * After turning power off, we must wait for at least 1 second | ||
179 | * before taking any action that relies on power having been | ||
180 | * removed from the slot/adapter. | ||
181 | */ | ||
182 | msleep(1000); | ||
183 | |||
189 | if (PWR_LED(ctrl)) | 184 | if (PWR_LED(ctrl)) |
190 | pslot->hpc_ops->green_led_off(pslot); | 185 | pslot->hpc_ops->green_led_off(pslot); |
191 | 186 | ||
@@ -289,6 +284,13 @@ static int remove_board(struct slot *p_slot) | |||
289 | } | 284 | } |
290 | } | 285 | } |
291 | 286 | ||
287 | /* | ||
288 | * After turning power off, we must wait for at least 1 second | ||
289 | * before taking any action that relies on power having been | ||
290 | * removed from the slot/adapter. | ||
291 | */ | ||
292 | msleep(1000); | ||
293 | |||
292 | if (PWR_LED(ctrl)) | 294 | if (PWR_LED(ctrl)) |
293 | /* turn off Green LED */ | 295 | /* turn off Green LED */ |
294 | p_slot->hpc_ops->green_led_off(p_slot); | 296 | p_slot->hpc_ops->green_led_off(p_slot); |
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index 891f81a0400c..79f104963166 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c | |||
@@ -247,14 +247,38 @@ static inline void pciehp_free_irq(struct controller *ctrl) | |||
247 | free_irq(ctrl->pci_dev->irq, ctrl); | 247 | free_irq(ctrl->pci_dev->irq, ctrl); |
248 | } | 248 | } |
249 | 249 | ||
250 | static inline int pcie_wait_cmd(struct controller *ctrl) | 250 | static inline int pcie_poll_cmd(struct controller *ctrl) |
251 | { | ||
252 | u16 slot_status; | ||
253 | int timeout = 1000; | ||
254 | |||
255 | if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status)) | ||
256 | if (slot_status & CMD_COMPLETED) | ||
257 | goto completed; | ||
258 | for (timeout = 1000; timeout > 0; timeout -= 100) { | ||
259 | msleep(100); | ||
260 | if (!pciehp_readw(ctrl, SLOTSTATUS, &slot_status)) | ||
261 | if (slot_status & CMD_COMPLETED) | ||
262 | goto completed; | ||
263 | } | ||
264 | return 0; /* timeout */ | ||
265 | |||
266 | completed: | ||
267 | pciehp_writew(ctrl, SLOTSTATUS, CMD_COMPLETED); | ||
268 | return timeout; | ||
269 | } | ||
270 | |||
271 | static inline int pcie_wait_cmd(struct controller *ctrl, int poll) | ||
251 | { | 272 | { |
252 | int retval = 0; | 273 | int retval = 0; |
253 | unsigned int msecs = pciehp_poll_mode ? 2500 : 1000; | 274 | unsigned int msecs = pciehp_poll_mode ? 2500 : 1000; |
254 | unsigned long timeout = msecs_to_jiffies(msecs); | 275 | unsigned long timeout = msecs_to_jiffies(msecs); |
255 | int rc; | 276 | int rc; |
256 | 277 | ||
257 | rc = wait_event_interruptible_timeout(ctrl->queue, | 278 | if (poll) |
279 | rc = pcie_poll_cmd(ctrl); | ||
280 | else | ||
281 | rc = wait_event_interruptible_timeout(ctrl->queue, | ||
258 | !ctrl->cmd_busy, timeout); | 282 | !ctrl->cmd_busy, timeout); |
259 | if (!rc) | 283 | if (!rc) |
260 | dbg("Command not completed in 1000 msec\n"); | 284 | dbg("Command not completed in 1000 msec\n"); |
@@ -286,12 +310,28 @@ static int pcie_write_cmd(struct controller *ctrl, u16 cmd, u16 mask) | |||
286 | goto out; | 310 | goto out; |
287 | } | 311 | } |
288 | 312 | ||
289 | if ((slot_status & CMD_COMPLETED) == CMD_COMPLETED ) { | 313 | if (slot_status & CMD_COMPLETED) { |
290 | /* After 1 sec and CMD_COMPLETED still not set, just | 314 | if (!ctrl->no_cmd_complete) { |
291 | proceed forward to issue the next command according | 315 | /* |
292 | to spec. Just print out the error message */ | 316 | * After 1 sec and CMD_COMPLETED still not set, just |
293 | dbg("%s: CMD_COMPLETED not clear after 1 sec.\n", | 317 | * proceed forward to issue the next command according |
294 | __func__); | 318 | * to spec. Just print out the error message. |
319 | */ | ||
320 | dbg("%s: CMD_COMPLETED not clear after 1 sec.\n", | ||
321 | __func__); | ||
322 | } else if (!NO_CMD_CMPL(ctrl)) { | ||
323 | /* | ||
324 | * This controller semms to notify of command completed | ||
325 | * event even though it supports none of power | ||
326 | * controller, attention led, power led and EMI. | ||
327 | */ | ||
328 | dbg("%s: Unexpected CMD_COMPLETED. Need to wait for " | ||
329 | "command completed event.\n", __func__); | ||
330 | ctrl->no_cmd_complete = 0; | ||
331 | } else { | ||
332 | dbg("%s: Unexpected CMD_COMPLETED. Maybe the " | ||
333 | "controller is broken.\n", __func__); | ||
334 | } | ||
295 | } | 335 | } |
296 | 336 | ||
297 | retval = pciehp_readw(ctrl, SLOTCTRL, &slot_ctrl); | 337 | retval = pciehp_readw(ctrl, SLOTCTRL, &slot_ctrl); |
@@ -315,8 +355,18 @@ static int pcie_write_cmd(struct controller *ctrl, u16 cmd, u16 mask) | |||
315 | /* | 355 | /* |
316 | * Wait for command completion. | 356 | * Wait for command completion. |
317 | */ | 357 | */ |
318 | if (!retval) | 358 | if (!retval && !ctrl->no_cmd_complete) { |
319 | retval = pcie_wait_cmd(ctrl); | 359 | int poll = 0; |
360 | /* | ||
361 | * if hotplug interrupt is not enabled or command | ||
362 | * completed interrupt is not enabled, we need to poll | ||
363 | * command completed event. | ||
364 | */ | ||
365 | if (!(slot_ctrl & HP_INTR_ENABLE) || | ||
366 | !(slot_ctrl & CMD_CMPL_INTR_ENABLE)) | ||
367 | poll = 1; | ||
368 | retval = pcie_wait_cmd(ctrl, poll); | ||
369 | } | ||
320 | out: | 370 | out: |
321 | mutex_unlock(&ctrl->ctrl_lock); | 371 | mutex_unlock(&ctrl->ctrl_lock); |
322 | return retval; | 372 | return retval; |
@@ -704,13 +754,6 @@ static int hpc_power_off_slot(struct slot * slot) | |||
704 | } | 754 | } |
705 | dbg("%s: SLOTCTRL %x write cmd %x\n", | 755 | dbg("%s: SLOTCTRL %x write cmd %x\n", |
706 | __func__, ctrl->cap_base + SLOTCTRL, slot_cmd); | 756 | __func__, ctrl->cap_base + SLOTCTRL, slot_cmd); |
707 | |||
708 | /* | ||
709 | * After turning power off, we must wait for at least 1 second | ||
710 | * before taking any action that relies on power having been | ||
711 | * removed from the slot/adapter. | ||
712 | */ | ||
713 | msleep(1000); | ||
714 | out: | 757 | out: |
715 | if (changed) | 758 | if (changed) |
716 | pcie_unmask_bad_dllp(ctrl); | 759 | pcie_unmask_bad_dllp(ctrl); |
@@ -722,6 +765,7 @@ static irqreturn_t pcie_isr(int irq, void *dev_id) | |||
722 | { | 765 | { |
723 | struct controller *ctrl = (struct controller *)dev_id; | 766 | struct controller *ctrl = (struct controller *)dev_id; |
724 | u16 detected, intr_loc; | 767 | u16 detected, intr_loc; |
768 | struct slot *p_slot; | ||
725 | 769 | ||
726 | /* | 770 | /* |
727 | * In order to guarantee that all interrupt events are | 771 | * In order to guarantee that all interrupt events are |
@@ -756,21 +800,38 @@ static irqreturn_t pcie_isr(int irq, void *dev_id) | |||
756 | wake_up_interruptible(&ctrl->queue); | 800 | wake_up_interruptible(&ctrl->queue); |
757 | } | 801 | } |
758 | 802 | ||
803 | if (!(intr_loc & ~CMD_COMPLETED)) | ||
804 | return IRQ_HANDLED; | ||
805 | |||
806 | /* | ||
807 | * Return without handling events if this handler routine is | ||
808 | * called before controller initialization is done. This may | ||
809 | * happen if hotplug event or another interrupt that shares | ||
810 | * the IRQ with pciehp arrives before slot initialization is | ||
811 | * done after interrupt handler is registered. | ||
812 | * | ||
813 | * FIXME - Need more structural fixes. We need to be ready to | ||
814 | * handle the event before installing interrupt handler. | ||
815 | */ | ||
816 | p_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); | ||
817 | if (!p_slot || !p_slot->hpc_ops) | ||
818 | return IRQ_HANDLED; | ||
819 | |||
759 | /* Check MRL Sensor Changed */ | 820 | /* Check MRL Sensor Changed */ |
760 | if (intr_loc & MRL_SENS_CHANGED) | 821 | if (intr_loc & MRL_SENS_CHANGED) |
761 | pciehp_handle_switch_change(0, ctrl); | 822 | pciehp_handle_switch_change(p_slot); |
762 | 823 | ||
763 | /* Check Attention Button Pressed */ | 824 | /* Check Attention Button Pressed */ |
764 | if (intr_loc & ATTN_BUTTN_PRESSED) | 825 | if (intr_loc & ATTN_BUTTN_PRESSED) |
765 | pciehp_handle_attention_button(0, ctrl); | 826 | pciehp_handle_attention_button(p_slot); |
766 | 827 | ||
767 | /* Check Presence Detect Changed */ | 828 | /* Check Presence Detect Changed */ |
768 | if (intr_loc & PRSN_DETECT_CHANGED) | 829 | if (intr_loc & PRSN_DETECT_CHANGED) |
769 | pciehp_handle_presence_change(0, ctrl); | 830 | pciehp_handle_presence_change(p_slot); |
770 | 831 | ||
771 | /* Check Power Fault Detected */ | 832 | /* Check Power Fault Detected */ |
772 | if (intr_loc & PWR_FAULT_DETECTED) | 833 | if (intr_loc & PWR_FAULT_DETECTED) |
773 | pciehp_handle_power_fault(0, ctrl); | 834 | pciehp_handle_power_fault(p_slot); |
774 | 835 | ||
775 | return IRQ_HANDLED; | 836 | return IRQ_HANDLED; |
776 | } | 837 | } |
@@ -1028,6 +1089,12 @@ static int pciehp_acpi_get_hp_hw_control_from_firmware(struct pci_dev *dev) | |||
1028 | static int pcie_init_hardware_part1(struct controller *ctrl, | 1089 | static int pcie_init_hardware_part1(struct controller *ctrl, |
1029 | struct pcie_device *dev) | 1090 | struct pcie_device *dev) |
1030 | { | 1091 | { |
1092 | /* Clear all remaining event bits in Slot Status register */ | ||
1093 | if (pciehp_writew(ctrl, SLOTSTATUS, 0x1f)) { | ||
1094 | err("%s: Cannot write to SLOTSTATUS register\n", __func__); | ||
1095 | return -1; | ||
1096 | } | ||
1097 | |||
1031 | /* Mask Hot-plug Interrupt Enable */ | 1098 | /* Mask Hot-plug Interrupt Enable */ |
1032 | if (pcie_write_cmd(ctrl, 0, HP_INTR_ENABLE | CMD_CMPL_INTR_ENABLE)) { | 1099 | if (pcie_write_cmd(ctrl, 0, HP_INTR_ENABLE | CMD_CMPL_INTR_ENABLE)) { |
1033 | err("%s: Cannot mask hotplug interrupt enable\n", __func__); | 1100 | err("%s: Cannot mask hotplug interrupt enable\n", __func__); |
@@ -1040,16 +1107,6 @@ int pcie_init_hardware_part2(struct controller *ctrl, struct pcie_device *dev) | |||
1040 | { | 1107 | { |
1041 | u16 cmd, mask; | 1108 | u16 cmd, mask; |
1042 | 1109 | ||
1043 | /* | ||
1044 | * We need to clear all events before enabling hotplug interrupt | ||
1045 | * notification mechanism in order for hotplug controler to | ||
1046 | * generate interrupts. | ||
1047 | */ | ||
1048 | if (pciehp_writew(ctrl, SLOTSTATUS, 0x1f)) { | ||
1049 | err("%s: Cannot write to SLOTSTATUS register\n", __FUNCTION__); | ||
1050 | return -1; | ||
1051 | } | ||
1052 | |||
1053 | cmd = PRSN_DETECT_ENABLE; | 1110 | cmd = PRSN_DETECT_ENABLE; |
1054 | if (ATTN_BUTTN(ctrl)) | 1111 | if (ATTN_BUTTN(ctrl)) |
1055 | cmd |= ATTN_BUTTN_ENABLE; | 1112 | cmd |= ATTN_BUTTN_ENABLE; |
@@ -1116,6 +1173,7 @@ static inline void dbg_ctrl(struct controller *ctrl) | |||
1116 | dbg(" Power Indicator : %3s\n", PWR_LED(ctrl) ? "yes" : "no"); | 1173 | dbg(" Power Indicator : %3s\n", PWR_LED(ctrl) ? "yes" : "no"); |
1117 | dbg(" Hot-Plug Surprise : %3s\n", HP_SUPR_RM(ctrl) ? "yes" : "no"); | 1174 | dbg(" Hot-Plug Surprise : %3s\n", HP_SUPR_RM(ctrl) ? "yes" : "no"); |
1118 | dbg(" EMI Present : %3s\n", EMI(ctrl) ? "yes" : "no"); | 1175 | dbg(" EMI Present : %3s\n", EMI(ctrl) ? "yes" : "no"); |
1176 | dbg(" Comamnd Completed : %3s\n", NO_CMD_CMPL(ctrl)? "no" : "yes"); | ||
1119 | pciehp_readw(ctrl, SLOTSTATUS, ®16); | 1177 | pciehp_readw(ctrl, SLOTSTATUS, ®16); |
1120 | dbg("Slot Status : 0x%04x\n", reg16); | 1178 | dbg("Slot Status : 0x%04x\n", reg16); |
1121 | pciehp_readw(ctrl, SLOTSTATUS, ®16); | 1179 | pciehp_readw(ctrl, SLOTSTATUS, ®16); |
@@ -1147,6 +1205,15 @@ int pcie_init(struct controller *ctrl, struct pcie_device *dev) | |||
1147 | mutex_init(&ctrl->ctrl_lock); | 1205 | mutex_init(&ctrl->ctrl_lock); |
1148 | init_waitqueue_head(&ctrl->queue); | 1206 | init_waitqueue_head(&ctrl->queue); |
1149 | dbg_ctrl(ctrl); | 1207 | dbg_ctrl(ctrl); |
1208 | /* | ||
1209 | * Controller doesn't notify of command completion if the "No | ||
1210 | * Command Completed Support" bit is set in Slot Capability | ||
1211 | * register or the controller supports none of power | ||
1212 | * controller, attention led, power led and EMI. | ||
1213 | */ | ||
1214 | if (NO_CMD_CMPL(ctrl) || | ||
1215 | !(POWER_CTRL(ctrl) | ATTN_LED(ctrl) | PWR_LED(ctrl) | EMI(ctrl))) | ||
1216 | ctrl->no_cmd_complete = 1; | ||
1150 | 1217 | ||
1151 | info("HPC vendor_id %x device_id %x ss_vid %x ss_did %x\n", | 1218 | info("HPC vendor_id %x device_id %x ss_vid %x ss_did %x\n", |
1152 | pdev->vendor, pdev->device, | 1219 | pdev->vendor, pdev->device, |
diff --git a/drivers/pci/hotplug/rpadlpar_sysfs.c b/drivers/pci/hotplug/rpadlpar_sysfs.c index e32148a8fa12..779c5db71be4 100644 --- a/drivers/pci/hotplug/rpadlpar_sysfs.c +++ b/drivers/pci/hotplug/rpadlpar_sysfs.c | |||
@@ -18,8 +18,12 @@ | |||
18 | #include "rpadlpar.h" | 18 | #include "rpadlpar.h" |
19 | 19 | ||
20 | #define DLPAR_KOBJ_NAME "control" | 20 | #define DLPAR_KOBJ_NAME "control" |
21 | #define ADD_SLOT_ATTR_NAME "add_slot" | 21 | |
22 | #define REMOVE_SLOT_ATTR_NAME "remove_slot" | 22 | /* Those two have no quotes because they are passed to __ATTR() which |
23 | * stringifies the argument (yuck !) | ||
24 | */ | ||
25 | #define ADD_SLOT_ATTR_NAME add_slot | ||
26 | #define REMOVE_SLOT_ATTR_NAME remove_slot | ||
23 | 27 | ||
24 | #define MAX_DRC_NAME_LEN 64 | 28 | #define MAX_DRC_NAME_LEN 64 |
25 | 29 | ||
diff --git a/drivers/pci/hotplug/shpchp_core.c b/drivers/pci/hotplug/shpchp_core.c index 1648076600fc..97848654652a 100644 --- a/drivers/pci/hotplug/shpchp_core.c +++ b/drivers/pci/hotplug/shpchp_core.c | |||
@@ -162,6 +162,10 @@ static int init_slots(struct controller *ctrl) | |||
162 | retval = pci_hp_register(slot->hotplug_slot); | 162 | retval = pci_hp_register(slot->hotplug_slot); |
163 | if (retval) { | 163 | if (retval) { |
164 | err("pci_hp_register failed with error %d\n", retval); | 164 | err("pci_hp_register failed with error %d\n", retval); |
165 | if (retval == -EEXIST) | ||
166 | err("Failed to register slot because of name " | ||
167 | "collision. Try \'shpchp_slot_with_bus\' " | ||
168 | "module option.\n"); | ||
165 | goto error_info; | 169 | goto error_info; |
166 | } | 170 | } |
167 | 171 | ||
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index 61fedb2448b6..f82495583e63 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c | |||
@@ -506,6 +506,23 @@ static void free_link_state(struct pci_dev *pdev) | |||
506 | pdev->link_state = NULL; | 506 | pdev->link_state = NULL; |
507 | } | 507 | } |
508 | 508 | ||
509 | static int pcie_aspm_sanity_check(struct pci_dev *pdev) | ||
510 | { | ||
511 | struct pci_dev *child_dev; | ||
512 | int child_pos; | ||
513 | |||
514 | /* | ||
515 | * Some functions in a slot might not all be PCIE functions, very | ||
516 | * strange. Disable ASPM for the whole slot | ||
517 | */ | ||
518 | list_for_each_entry(child_dev, &pdev->subordinate->devices, bus_list) { | ||
519 | child_pos = pci_find_capability(child_dev, PCI_CAP_ID_EXP); | ||
520 | if (!child_pos) | ||
521 | return -EINVAL; | ||
522 | } | ||
523 | return 0; | ||
524 | } | ||
525 | |||
509 | /* | 526 | /* |
510 | * pcie_aspm_init_link_state: Initiate PCI express link state. | 527 | * pcie_aspm_init_link_state: Initiate PCI express link state. |
511 | * It is called after the pcie and its children devices are scaned. | 528 | * It is called after the pcie and its children devices are scaned. |
@@ -526,6 +543,9 @@ void pcie_aspm_init_link_state(struct pci_dev *pdev) | |||
526 | if (list_empty(&pdev->subordinate->devices)) | 543 | if (list_empty(&pdev->subordinate->devices)) |
527 | goto out; | 544 | goto out; |
528 | 545 | ||
546 | if (pcie_aspm_sanity_check(pdev)) | ||
547 | goto out; | ||
548 | |||
529 | mutex_lock(&aspm_lock); | 549 | mutex_lock(&aspm_lock); |
530 | 550 | ||
531 | link_state = kzalloc(sizeof(*link_state), GFP_KERNEL); | 551 | link_state = kzalloc(sizeof(*link_state), GFP_KERNEL); |
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index f2d9c770f51a..dabb563f51d9 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -1503,8 +1503,7 @@ static void pci_do_fixups(struct pci_dev *dev, struct pci_fixup *f, struct pci_f | |||
1503 | (f->device == dev->device || f->device == (u16) PCI_ANY_ID)) { | 1503 | (f->device == dev->device || f->device == (u16) PCI_ANY_ID)) { |
1504 | #ifdef DEBUG | 1504 | #ifdef DEBUG |
1505 | dev_dbg(&dev->dev, "calling "); | 1505 | dev_dbg(&dev->dev, "calling "); |
1506 | print_fn_descriptor_symbol("%s()\n", | 1506 | print_fn_descriptor_symbol("%s\n", f->hook); |
1507 | (unsigned long) f->hook); | ||
1508 | #endif | 1507 | #endif |
1509 | f->hook(dev); | 1508 | f->hook(dev); |
1510 | } | 1509 | } |
diff --git a/drivers/pcmcia/electra_cf.c b/drivers/pcmcia/electra_cf.c index 0a6cea1316b4..52d0aa8c2e7a 100644 --- a/drivers/pcmcia/electra_cf.c +++ b/drivers/pcmcia/electra_cf.c | |||
@@ -352,6 +352,7 @@ static struct of_device_id electra_cf_match[] = { | |||
352 | }, | 352 | }, |
353 | {}, | 353 | {}, |
354 | }; | 354 | }; |
355 | MODULE_DEVICE_TABLE(of, electra_cf_match); | ||
355 | 356 | ||
356 | static struct of_platform_driver electra_cf_driver = { | 357 | static struct of_platform_driver electra_cf_driver = { |
357 | .name = (char *)driver_name, | 358 | .name = (char *)driver_name, |
diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c index ffdb12a59c40..e2b7de4cb05e 100644 --- a/drivers/pnp/quirks.c +++ b/drivers/pnp/quirks.c | |||
@@ -331,8 +331,7 @@ void pnp_fixup_device(struct pnp_dev *dev) | |||
331 | continue; | 331 | continue; |
332 | #ifdef DEBUG | 332 | #ifdef DEBUG |
333 | dev_dbg(&dev->dev, "%s: calling ", f->id); | 333 | dev_dbg(&dev->dev, "%s: calling ", f->id); |
334 | print_fn_descriptor_symbol("%s\n", | 334 | print_fn_descriptor_symbol("%s\n", f->quirk_function); |
335 | (unsigned long) f->quirk_function); | ||
336 | #endif | 335 | #endif |
337 | f->quirk_function(dev); | 336 | f->quirk_function(dev); |
338 | } | 337 | } |
diff --git a/drivers/power/power_supply_core.c b/drivers/power/power_supply_core.c index 138dd76ee347..af1633eb3b70 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/power_supply_core.c | |||
@@ -91,15 +91,13 @@ int power_supply_register(struct device *parent, struct power_supply *psy) | |||
91 | { | 91 | { |
92 | int rc = 0; | 92 | int rc = 0; |
93 | 93 | ||
94 | psy->dev = device_create(power_supply_class, parent, 0, | 94 | psy->dev = device_create_drvdata(power_supply_class, parent, 0, |
95 | "%s", psy->name); | 95 | psy, "%s", psy->name); |
96 | if (IS_ERR(psy->dev)) { | 96 | if (IS_ERR(psy->dev)) { |
97 | rc = PTR_ERR(psy->dev); | 97 | rc = PTR_ERR(psy->dev); |
98 | goto dev_create_failed; | 98 | goto dev_create_failed; |
99 | } | 99 | } |
100 | 100 | ||
101 | dev_set_drvdata(psy->dev, psy); | ||
102 | |||
103 | INIT_WORK(&psy->changed_work, power_supply_changed_work); | 101 | INIT_WORK(&psy->changed_work, power_supply_changed_work); |
104 | 102 | ||
105 | rc = power_supply_create_attrs(psy); | 103 | rc = power_supply_create_attrs(psy); |
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index ac6d4d3218b3..1a4025683362 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -63,6 +63,7 @@ static void dasd_return_cqr_cb(struct dasd_ccw_req *, void *); | |||
63 | */ | 63 | */ |
64 | static wait_queue_head_t dasd_init_waitq; | 64 | static wait_queue_head_t dasd_init_waitq; |
65 | static wait_queue_head_t dasd_flush_wq; | 65 | static wait_queue_head_t dasd_flush_wq; |
66 | static wait_queue_head_t generic_waitq; | ||
66 | 67 | ||
67 | /* | 68 | /* |
68 | * Allocate memory for a new device structure. | 69 | * Allocate memory for a new device structure. |
@@ -925,6 +926,8 @@ static void dasd_handle_killed_request(struct ccw_device *cdev, | |||
925 | struct dasd_ccw_req *cqr; | 926 | struct dasd_ccw_req *cqr; |
926 | struct dasd_device *device; | 927 | struct dasd_device *device; |
927 | 928 | ||
929 | if (!intparm) | ||
930 | return; | ||
928 | cqr = (struct dasd_ccw_req *) intparm; | 931 | cqr = (struct dasd_ccw_req *) intparm; |
929 | if (cqr->status != DASD_CQR_IN_IO) { | 932 | if (cqr->status != DASD_CQR_IN_IO) { |
930 | MESSAGE(KERN_DEBUG, | 933 | MESSAGE(KERN_DEBUG, |
@@ -976,17 +979,16 @@ void dasd_int_handler(struct ccw_device *cdev, unsigned long intparm, | |||
976 | if (IS_ERR(irb)) { | 979 | if (IS_ERR(irb)) { |
977 | switch (PTR_ERR(irb)) { | 980 | switch (PTR_ERR(irb)) { |
978 | case -EIO: | 981 | case -EIO: |
979 | dasd_handle_killed_request(cdev, intparm); | ||
980 | break; | 982 | break; |
981 | case -ETIMEDOUT: | 983 | case -ETIMEDOUT: |
982 | printk(KERN_WARNING"%s(%s): request timed out\n", | 984 | printk(KERN_WARNING"%s(%s): request timed out\n", |
983 | __func__, cdev->dev.bus_id); | 985 | __func__, cdev->dev.bus_id); |
984 | //FIXME - dasd uses own timeout interface... | ||
985 | break; | 986 | break; |
986 | default: | 987 | default: |
987 | printk(KERN_WARNING"%s(%s): unknown error %ld\n", | 988 | printk(KERN_WARNING"%s(%s): unknown error %ld\n", |
988 | __func__, cdev->dev.bus_id, PTR_ERR(irb)); | 989 | __func__, cdev->dev.bus_id, PTR_ERR(irb)); |
989 | } | 990 | } |
991 | dasd_handle_killed_request(cdev, intparm); | ||
990 | return; | 992 | return; |
991 | } | 993 | } |
992 | 994 | ||
@@ -1150,11 +1152,15 @@ static void __dasd_device_process_final_queue(struct dasd_device *device, | |||
1150 | struct list_head *l, *n; | 1152 | struct list_head *l, *n; |
1151 | struct dasd_ccw_req *cqr; | 1153 | struct dasd_ccw_req *cqr; |
1152 | struct dasd_block *block; | 1154 | struct dasd_block *block; |
1155 | void (*callback)(struct dasd_ccw_req *, void *data); | ||
1156 | void *callback_data; | ||
1153 | 1157 | ||
1154 | list_for_each_safe(l, n, final_queue) { | 1158 | list_for_each_safe(l, n, final_queue) { |
1155 | cqr = list_entry(l, struct dasd_ccw_req, devlist); | 1159 | cqr = list_entry(l, struct dasd_ccw_req, devlist); |
1156 | list_del_init(&cqr->devlist); | 1160 | list_del_init(&cqr->devlist); |
1157 | block = cqr->block; | 1161 | block = cqr->block; |
1162 | callback = cqr->callback; | ||
1163 | callback_data = cqr->callback_data; | ||
1158 | if (block) | 1164 | if (block) |
1159 | spin_lock_bh(&block->queue_lock); | 1165 | spin_lock_bh(&block->queue_lock); |
1160 | switch (cqr->status) { | 1166 | switch (cqr->status) { |
@@ -1175,7 +1181,7 @@ static void __dasd_device_process_final_queue(struct dasd_device *device, | |||
1175 | BUG(); | 1181 | BUG(); |
1176 | } | 1182 | } |
1177 | if (cqr->callback != NULL) | 1183 | if (cqr->callback != NULL) |
1178 | (cqr->callback)(cqr, cqr->callback_data); | 1184 | (callback)(cqr, callback_data); |
1179 | if (block) | 1185 | if (block) |
1180 | spin_unlock_bh(&block->queue_lock); | 1186 | spin_unlock_bh(&block->queue_lock); |
1181 | } | 1187 | } |
@@ -1405,17 +1411,15 @@ static inline int _wait_for_wakeup(struct dasd_ccw_req *cqr) | |||
1405 | */ | 1411 | */ |
1406 | int dasd_sleep_on(struct dasd_ccw_req *cqr) | 1412 | int dasd_sleep_on(struct dasd_ccw_req *cqr) |
1407 | { | 1413 | { |
1408 | wait_queue_head_t wait_q; | ||
1409 | struct dasd_device *device; | 1414 | struct dasd_device *device; |
1410 | int rc; | 1415 | int rc; |
1411 | 1416 | ||
1412 | device = cqr->startdev; | 1417 | device = cqr->startdev; |
1413 | 1418 | ||
1414 | init_waitqueue_head (&wait_q); | ||
1415 | cqr->callback = dasd_wakeup_cb; | 1419 | cqr->callback = dasd_wakeup_cb; |
1416 | cqr->callback_data = (void *) &wait_q; | 1420 | cqr->callback_data = (void *) &generic_waitq; |
1417 | dasd_add_request_tail(cqr); | 1421 | dasd_add_request_tail(cqr); |
1418 | wait_event(wait_q, _wait_for_wakeup(cqr)); | 1422 | wait_event(generic_waitq, _wait_for_wakeup(cqr)); |
1419 | 1423 | ||
1420 | /* Request status is either done or failed. */ | 1424 | /* Request status is either done or failed. */ |
1421 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; | 1425 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; |
@@ -1428,20 +1432,18 @@ int dasd_sleep_on(struct dasd_ccw_req *cqr) | |||
1428 | */ | 1432 | */ |
1429 | int dasd_sleep_on_interruptible(struct dasd_ccw_req *cqr) | 1433 | int dasd_sleep_on_interruptible(struct dasd_ccw_req *cqr) |
1430 | { | 1434 | { |
1431 | wait_queue_head_t wait_q; | ||
1432 | struct dasd_device *device; | 1435 | struct dasd_device *device; |
1433 | int rc; | 1436 | int rc; |
1434 | 1437 | ||
1435 | device = cqr->startdev; | 1438 | device = cqr->startdev; |
1436 | init_waitqueue_head (&wait_q); | ||
1437 | cqr->callback = dasd_wakeup_cb; | 1439 | cqr->callback = dasd_wakeup_cb; |
1438 | cqr->callback_data = (void *) &wait_q; | 1440 | cqr->callback_data = (void *) &generic_waitq; |
1439 | dasd_add_request_tail(cqr); | 1441 | dasd_add_request_tail(cqr); |
1440 | rc = wait_event_interruptible(wait_q, _wait_for_wakeup(cqr)); | 1442 | rc = wait_event_interruptible(generic_waitq, _wait_for_wakeup(cqr)); |
1441 | if (rc == -ERESTARTSYS) { | 1443 | if (rc == -ERESTARTSYS) { |
1442 | dasd_cancel_req(cqr); | 1444 | dasd_cancel_req(cqr); |
1443 | /* wait (non-interruptible) for final status */ | 1445 | /* wait (non-interruptible) for final status */ |
1444 | wait_event(wait_q, _wait_for_wakeup(cqr)); | 1446 | wait_event(generic_waitq, _wait_for_wakeup(cqr)); |
1445 | } | 1447 | } |
1446 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; | 1448 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; |
1447 | return rc; | 1449 | return rc; |
@@ -1465,7 +1467,6 @@ static inline int _dasd_term_running_cqr(struct dasd_device *device) | |||
1465 | 1467 | ||
1466 | int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr) | 1468 | int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr) |
1467 | { | 1469 | { |
1468 | wait_queue_head_t wait_q; | ||
1469 | struct dasd_device *device; | 1470 | struct dasd_device *device; |
1470 | int rc; | 1471 | int rc; |
1471 | 1472 | ||
@@ -1477,9 +1478,8 @@ int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr) | |||
1477 | return rc; | 1478 | return rc; |
1478 | } | 1479 | } |
1479 | 1480 | ||
1480 | init_waitqueue_head (&wait_q); | ||
1481 | cqr->callback = dasd_wakeup_cb; | 1481 | cqr->callback = dasd_wakeup_cb; |
1482 | cqr->callback_data = (void *) &wait_q; | 1482 | cqr->callback_data = (void *) &generic_waitq; |
1483 | cqr->status = DASD_CQR_QUEUED; | 1483 | cqr->status = DASD_CQR_QUEUED; |
1484 | list_add(&cqr->devlist, &device->ccw_queue); | 1484 | list_add(&cqr->devlist, &device->ccw_queue); |
1485 | 1485 | ||
@@ -1488,7 +1488,7 @@ int dasd_sleep_on_immediatly(struct dasd_ccw_req *cqr) | |||
1488 | 1488 | ||
1489 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); | 1489 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); |
1490 | 1490 | ||
1491 | wait_event(wait_q, _wait_for_wakeup(cqr)); | 1491 | wait_event(generic_waitq, _wait_for_wakeup(cqr)); |
1492 | 1492 | ||
1493 | /* Request status is either done or failed. */ | 1493 | /* Request status is either done or failed. */ |
1494 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; | 1494 | rc = (cqr->status == DASD_CQR_DONE) ? 0 : -EIO; |
@@ -2429,6 +2429,7 @@ static int __init dasd_init(void) | |||
2429 | 2429 | ||
2430 | init_waitqueue_head(&dasd_init_waitq); | 2430 | init_waitqueue_head(&dasd_init_waitq); |
2431 | init_waitqueue_head(&dasd_flush_wq); | 2431 | init_waitqueue_head(&dasd_flush_wq); |
2432 | init_waitqueue_head(&generic_waitq); | ||
2432 | 2433 | ||
2433 | /* register 'common' DASD debug area, used for all DBF_XXX calls */ | 2434 | /* register 'common' DASD debug area, used for all DBF_XXX calls */ |
2434 | dasd_debug_area = debug_register("dasd", 1, 1, 8 * sizeof(long)); | 2435 | dasd_debug_area = debug_register("dasd", 1, 1, 8 * sizeof(long)); |
diff --git a/drivers/s390/block/dasd_devmap.c b/drivers/s390/block/dasd_devmap.c index f4fb40257348..d774e79476fe 100644 --- a/drivers/s390/block/dasd_devmap.c +++ b/drivers/s390/block/dasd_devmap.c | |||
@@ -86,10 +86,10 @@ static DEFINE_SPINLOCK(dasd_devmap_lock); | |||
86 | static struct list_head dasd_hashlists[256]; | 86 | static struct list_head dasd_hashlists[256]; |
87 | int dasd_max_devindex; | 87 | int dasd_max_devindex; |
88 | 88 | ||
89 | static struct dasd_devmap *dasd_add_busid(char *, int); | 89 | static struct dasd_devmap *dasd_add_busid(const char *, int); |
90 | 90 | ||
91 | static inline int | 91 | static inline int |
92 | dasd_hash_busid(char *bus_id) | 92 | dasd_hash_busid(const char *bus_id) |
93 | { | 93 | { |
94 | int hash, i; | 94 | int hash, i; |
95 | 95 | ||
@@ -394,7 +394,7 @@ dasd_parse(void) | |||
394 | * devices. | 394 | * devices. |
395 | */ | 395 | */ |
396 | static struct dasd_devmap * | 396 | static struct dasd_devmap * |
397 | dasd_add_busid(char *bus_id, int features) | 397 | dasd_add_busid(const char *bus_id, int features) |
398 | { | 398 | { |
399 | struct dasd_devmap *devmap, *new, *tmp; | 399 | struct dasd_devmap *devmap, *new, *tmp; |
400 | int hash; | 400 | int hash; |
@@ -430,7 +430,7 @@ dasd_add_busid(char *bus_id, int features) | |||
430 | * Find devmap for device with given bus_id. | 430 | * Find devmap for device with given bus_id. |
431 | */ | 431 | */ |
432 | static struct dasd_devmap * | 432 | static struct dasd_devmap * |
433 | dasd_find_busid(char *bus_id) | 433 | dasd_find_busid(const char *bus_id) |
434 | { | 434 | { |
435 | struct dasd_devmap *devmap, *tmp; | 435 | struct dasd_devmap *devmap, *tmp; |
436 | int hash; | 436 | int hash; |
@@ -452,7 +452,7 @@ dasd_find_busid(char *bus_id) | |||
452 | * Check if busid has been added to the list of dasd ranges. | 452 | * Check if busid has been added to the list of dasd ranges. |
453 | */ | 453 | */ |
454 | int | 454 | int |
455 | dasd_busid_known(char *bus_id) | 455 | dasd_busid_known(const char *bus_id) |
456 | { | 456 | { |
457 | return IS_ERR(dasd_find_busid(bus_id)) ? -ENOENT : 0; | 457 | return IS_ERR(dasd_find_busid(bus_id)) ? -ENOENT : 0; |
458 | } | 458 | } |
diff --git a/drivers/s390/block/dasd_int.h b/drivers/s390/block/dasd_int.h index 6c624bf44617..fb2f931cf844 100644 --- a/drivers/s390/block/dasd_int.h +++ b/drivers/s390/block/dasd_int.h | |||
@@ -598,7 +598,7 @@ struct dasd_device *dasd_device_from_cdev_locked(struct ccw_device *); | |||
598 | struct dasd_device *dasd_device_from_devindex(int); | 598 | struct dasd_device *dasd_device_from_devindex(int); |
599 | 599 | ||
600 | int dasd_parse(void); | 600 | int dasd_parse(void); |
601 | int dasd_busid_known(char *); | 601 | int dasd_busid_known(const char *); |
602 | 602 | ||
603 | /* externals in dasd_gendisk.c */ | 603 | /* externals in dasd_gendisk.c */ |
604 | int dasd_gendisk_init(void); | 604 | int dasd_gendisk_init(void); |
diff --git a/drivers/s390/char/raw3270.c b/drivers/s390/char/raw3270.c index 0d98f1ff2edd..848ef7e8523f 100644 --- a/drivers/s390/char/raw3270.c +++ b/drivers/s390/char/raw3270.c | |||
@@ -549,7 +549,6 @@ raw3270_start_init(struct raw3270 *rp, struct raw3270_view *view, | |||
549 | struct raw3270_request *rq) | 549 | struct raw3270_request *rq) |
550 | { | 550 | { |
551 | unsigned long flags; | 551 | unsigned long flags; |
552 | wait_queue_head_t wq; | ||
553 | int rc; | 552 | int rc; |
554 | 553 | ||
555 | #ifdef CONFIG_TN3270_CONSOLE | 554 | #ifdef CONFIG_TN3270_CONSOLE |
@@ -566,20 +565,20 @@ raw3270_start_init(struct raw3270 *rp, struct raw3270_view *view, | |||
566 | return rq->rc; | 565 | return rq->rc; |
567 | } | 566 | } |
568 | #endif | 567 | #endif |
569 | init_waitqueue_head(&wq); | ||
570 | rq->callback = raw3270_wake_init; | 568 | rq->callback = raw3270_wake_init; |
571 | rq->callback_data = &wq; | 569 | rq->callback_data = &raw3270_wait_queue; |
572 | spin_lock_irqsave(get_ccwdev_lock(view->dev->cdev), flags); | 570 | spin_lock_irqsave(get_ccwdev_lock(view->dev->cdev), flags); |
573 | rc = __raw3270_start(rp, view, rq); | 571 | rc = __raw3270_start(rp, view, rq); |
574 | spin_unlock_irqrestore(get_ccwdev_lock(view->dev->cdev), flags); | 572 | spin_unlock_irqrestore(get_ccwdev_lock(view->dev->cdev), flags); |
575 | if (rc) | 573 | if (rc) |
576 | return rc; | 574 | return rc; |
577 | /* Now wait for the completion. */ | 575 | /* Now wait for the completion. */ |
578 | rc = wait_event_interruptible(wq, raw3270_request_final(rq)); | 576 | rc = wait_event_interruptible(raw3270_wait_queue, |
577 | raw3270_request_final(rq)); | ||
579 | if (rc == -ERESTARTSYS) { /* Interrupted by a signal. */ | 578 | if (rc == -ERESTARTSYS) { /* Interrupted by a signal. */ |
580 | raw3270_halt_io(view->dev, rq); | 579 | raw3270_halt_io(view->dev, rq); |
581 | /* No wait for the halt to complete. */ | 580 | /* No wait for the halt to complete. */ |
582 | wait_event(wq, raw3270_request_final(rq)); | 581 | wait_event(raw3270_wait_queue, raw3270_request_final(rq)); |
583 | return -ERESTARTSYS; | 582 | return -ERESTARTSYS; |
584 | } | 583 | } |
585 | return rq->rc; | 584 | return rq->rc; |
diff --git a/drivers/s390/char/sclp_config.c b/drivers/s390/char/sclp_config.c index 9e784d5f7f57..ad05a87bc480 100644 --- a/drivers/s390/char/sclp_config.c +++ b/drivers/s390/char/sclp_config.c | |||
@@ -40,7 +40,7 @@ static void sclp_cpu_capability_notify(struct work_struct *work) | |||
40 | put_online_cpus(); | 40 | put_online_cpus(); |
41 | } | 41 | } |
42 | 42 | ||
43 | static void sclp_cpu_change_notify(struct work_struct *work) | 43 | static void __ref sclp_cpu_change_notify(struct work_struct *work) |
44 | { | 44 | { |
45 | smp_rescan_cpus(); | 45 | smp_rescan_cpus(); |
46 | } | 46 | } |
diff --git a/drivers/s390/char/sclp_vt220.c b/drivers/s390/char/sclp_vt220.c index 35707c04e613..62576af36f47 100644 --- a/drivers/s390/char/sclp_vt220.c +++ b/drivers/s390/char/sclp_vt220.c | |||
@@ -71,9 +71,6 @@ static struct list_head sclp_vt220_outqueue; | |||
71 | /* Number of requests in outqueue */ | 71 | /* Number of requests in outqueue */ |
72 | static int sclp_vt220_outqueue_count; | 72 | static int sclp_vt220_outqueue_count; |
73 | 73 | ||
74 | /* Wait queue used to delay write requests while we've run out of buffers */ | ||
75 | static wait_queue_head_t sclp_vt220_waitq; | ||
76 | |||
77 | /* Timer used for delaying write requests to merge subsequent messages into | 74 | /* Timer used for delaying write requests to merge subsequent messages into |
78 | * a single buffer */ | 75 | * a single buffer */ |
79 | static struct timer_list sclp_vt220_timer; | 76 | static struct timer_list sclp_vt220_timer; |
@@ -133,7 +130,6 @@ sclp_vt220_process_queue(struct sclp_vt220_request *request) | |||
133 | } while (request && __sclp_vt220_emit(request)); | 130 | } while (request && __sclp_vt220_emit(request)); |
134 | if (request == NULL && sclp_vt220_flush_later) | 131 | if (request == NULL && sclp_vt220_flush_later) |
135 | sclp_vt220_emit_current(); | 132 | sclp_vt220_emit_current(); |
136 | wake_up(&sclp_vt220_waitq); | ||
137 | /* Check if the tty needs a wake up call */ | 133 | /* Check if the tty needs a wake up call */ |
138 | if (sclp_vt220_tty != NULL) { | 134 | if (sclp_vt220_tty != NULL) { |
139 | tty_wakeup(sclp_vt220_tty); | 135 | tty_wakeup(sclp_vt220_tty); |
@@ -383,7 +379,7 @@ sclp_vt220_timeout(unsigned long data) | |||
383 | */ | 379 | */ |
384 | static int | 380 | static int |
385 | __sclp_vt220_write(const unsigned char *buf, int count, int do_schedule, | 381 | __sclp_vt220_write(const unsigned char *buf, int count, int do_schedule, |
386 | int convertlf, int may_schedule) | 382 | int convertlf, int may_fail) |
387 | { | 383 | { |
388 | unsigned long flags; | 384 | unsigned long flags; |
389 | void *page; | 385 | void *page; |
@@ -395,15 +391,14 @@ __sclp_vt220_write(const unsigned char *buf, int count, int do_schedule, | |||
395 | overall_written = 0; | 391 | overall_written = 0; |
396 | spin_lock_irqsave(&sclp_vt220_lock, flags); | 392 | spin_lock_irqsave(&sclp_vt220_lock, flags); |
397 | do { | 393 | do { |
398 | /* Create a sclp output buffer if none exists yet */ | 394 | /* Create an sclp output buffer if none exists yet */ |
399 | if (sclp_vt220_current_request == NULL) { | 395 | if (sclp_vt220_current_request == NULL) { |
400 | while (list_empty(&sclp_vt220_empty)) { | 396 | while (list_empty(&sclp_vt220_empty)) { |
401 | spin_unlock_irqrestore(&sclp_vt220_lock, flags); | 397 | spin_unlock_irqrestore(&sclp_vt220_lock, flags); |
402 | if (in_interrupt() || !may_schedule) | 398 | if (may_fail) |
403 | sclp_sync_wait(); | 399 | goto out; |
404 | else | 400 | else |
405 | wait_event(sclp_vt220_waitq, | 401 | sclp_sync_wait(); |
406 | !list_empty(&sclp_vt220_empty)); | ||
407 | spin_lock_irqsave(&sclp_vt220_lock, flags); | 402 | spin_lock_irqsave(&sclp_vt220_lock, flags); |
408 | } | 403 | } |
409 | page = (void *) sclp_vt220_empty.next; | 404 | page = (void *) sclp_vt220_empty.next; |
@@ -437,6 +432,7 @@ __sclp_vt220_write(const unsigned char *buf, int count, int do_schedule, | |||
437 | add_timer(&sclp_vt220_timer); | 432 | add_timer(&sclp_vt220_timer); |
438 | } | 433 | } |
439 | spin_unlock_irqrestore(&sclp_vt220_lock, flags); | 434 | spin_unlock_irqrestore(&sclp_vt220_lock, flags); |
435 | out: | ||
440 | return overall_written; | 436 | return overall_written; |
441 | } | 437 | } |
442 | 438 | ||
@@ -520,19 +516,11 @@ sclp_vt220_close(struct tty_struct *tty, struct file *filp) | |||
520 | * character to the tty device. If the kernel uses this routine, | 516 | * character to the tty device. If the kernel uses this routine, |
521 | * it must call the flush_chars() routine (if defined) when it is | 517 | * it must call the flush_chars() routine (if defined) when it is |
522 | * done stuffing characters into the driver. | 518 | * done stuffing characters into the driver. |
523 | * | ||
524 | * NOTE: include/linux/tty_driver.h specifies that a character should be | ||
525 | * ignored if there is no room in the queue. This driver implements a different | ||
526 | * semantic in that it will block when there is no more room left. | ||
527 | * | ||
528 | * FIXME: putchar can currently be called from BH and other non blocking | ||
529 | * handlers so this semantic isn't a good idea. | ||
530 | */ | 519 | */ |
531 | static int | 520 | static int |
532 | sclp_vt220_put_char(struct tty_struct *tty, unsigned char ch) | 521 | sclp_vt220_put_char(struct tty_struct *tty, unsigned char ch) |
533 | { | 522 | { |
534 | __sclp_vt220_write(&ch, 1, 0, 0, 1); | 523 | return __sclp_vt220_write(&ch, 1, 0, 0, 1); |
535 | return 1; | ||
536 | } | 524 | } |
537 | 525 | ||
538 | /* | 526 | /* |
@@ -653,7 +641,6 @@ static int __init __sclp_vt220_init(void) | |||
653 | spin_lock_init(&sclp_vt220_lock); | 641 | spin_lock_init(&sclp_vt220_lock); |
654 | INIT_LIST_HEAD(&sclp_vt220_empty); | 642 | INIT_LIST_HEAD(&sclp_vt220_empty); |
655 | INIT_LIST_HEAD(&sclp_vt220_outqueue); | 643 | INIT_LIST_HEAD(&sclp_vt220_outqueue); |
656 | init_waitqueue_head(&sclp_vt220_waitq); | ||
657 | init_timer(&sclp_vt220_timer); | 644 | init_timer(&sclp_vt220_timer); |
658 | sclp_vt220_current_request = NULL; | 645 | sclp_vt220_current_request = NULL; |
659 | sclp_vt220_buffered_chars = 0; | 646 | sclp_vt220_buffered_chars = 0; |
diff --git a/drivers/s390/char/tape.h b/drivers/s390/char/tape.h index dddf8d62c153..d0d565a05dfe 100644 --- a/drivers/s390/char/tape.h +++ b/drivers/s390/char/tape.h | |||
@@ -231,6 +231,9 @@ struct tape_device { | |||
231 | /* Request queue. */ | 231 | /* Request queue. */ |
232 | struct list_head req_queue; | 232 | struct list_head req_queue; |
233 | 233 | ||
234 | /* Request wait queue. */ | ||
235 | wait_queue_head_t wait_queue; | ||
236 | |||
234 | /* Each tape device has (currently) two minor numbers. */ | 237 | /* Each tape device has (currently) two minor numbers. */ |
235 | int first_minor; | 238 | int first_minor; |
236 | 239 | ||
diff --git a/drivers/s390/char/tape_block.c b/drivers/s390/char/tape_block.c index ddc4a114e7f4..95da72bc17e8 100644 --- a/drivers/s390/char/tape_block.c +++ b/drivers/s390/char/tape_block.c | |||
@@ -179,11 +179,11 @@ tapeblock_requeue(struct work_struct *work) { | |||
179 | tapeblock_end_request(req, -EIO); | 179 | tapeblock_end_request(req, -EIO); |
180 | continue; | 180 | continue; |
181 | } | 181 | } |
182 | blkdev_dequeue_request(req); | ||
183 | nr_queued++; | ||
182 | spin_unlock_irq(&device->blk_data.request_queue_lock); | 184 | spin_unlock_irq(&device->blk_data.request_queue_lock); |
183 | rc = tapeblock_start_request(device, req); | 185 | rc = tapeblock_start_request(device, req); |
184 | spin_lock_irq(&device->blk_data.request_queue_lock); | 186 | spin_lock_irq(&device->blk_data.request_queue_lock); |
185 | blkdev_dequeue_request(req); | ||
186 | nr_queued++; | ||
187 | } | 187 | } |
188 | spin_unlock_irq(&device->blk_data.request_queue_lock); | 188 | spin_unlock_irq(&device->blk_data.request_queue_lock); |
189 | atomic_set(&device->blk_data.requeue_scheduled, 0); | 189 | atomic_set(&device->blk_data.requeue_scheduled, 0); |
diff --git a/drivers/s390/char/tape_core.c b/drivers/s390/char/tape_core.c index 7ad8cf157641..c20e3c548343 100644 --- a/drivers/s390/char/tape_core.c +++ b/drivers/s390/char/tape_core.c | |||
@@ -76,32 +76,9 @@ const char *tape_op_verbose[TO_SIZE] = | |||
76 | [TO_KEKL_QUERY] = "KLQ",[TO_RDC] = "RDC", | 76 | [TO_KEKL_QUERY] = "KLQ",[TO_RDC] = "RDC", |
77 | }; | 77 | }; |
78 | 78 | ||
79 | static int | 79 | static int devid_to_int(struct ccw_dev_id *dev_id) |
80 | busid_to_int(char *bus_id) | ||
81 | { | 80 | { |
82 | int dec; | 81 | return dev_id->devno + (dev_id->ssid << 16); |
83 | int d; | ||
84 | char * s; | ||
85 | |||
86 | for(s = bus_id, d = 0; *s != '\0' && *s != '.'; s++) | ||
87 | d = (d * 10) + (*s - '0'); | ||
88 | dec = d; | ||
89 | for(s++, d = 0; *s != '\0' && *s != '.'; s++) | ||
90 | d = (d * 10) + (*s - '0'); | ||
91 | dec = (dec << 8) + d; | ||
92 | |||
93 | for(s++; *s != '\0'; s++) { | ||
94 | if (*s >= '0' && *s <= '9') { | ||
95 | d = *s - '0'; | ||
96 | } else if (*s >= 'a' && *s <= 'f') { | ||
97 | d = *s - 'a' + 10; | ||
98 | } else { | ||
99 | d = *s - 'A' + 10; | ||
100 | } | ||
101 | dec = (dec << 4) + d; | ||
102 | } | ||
103 | |||
104 | return dec; | ||
105 | } | 82 | } |
106 | 83 | ||
107 | /* | 84 | /* |
@@ -472,6 +449,7 @@ tape_alloc_device(void) | |||
472 | INIT_LIST_HEAD(&device->req_queue); | 449 | INIT_LIST_HEAD(&device->req_queue); |
473 | INIT_LIST_HEAD(&device->node); | 450 | INIT_LIST_HEAD(&device->node); |
474 | init_waitqueue_head(&device->state_change_wq); | 451 | init_waitqueue_head(&device->state_change_wq); |
452 | init_waitqueue_head(&device->wait_queue); | ||
475 | device->tape_state = TS_INIT; | 453 | device->tape_state = TS_INIT; |
476 | device->medium_state = MS_UNKNOWN; | 454 | device->medium_state = MS_UNKNOWN; |
477 | *device->modeset_byte = 0; | 455 | *device->modeset_byte = 0; |
@@ -551,6 +529,7 @@ tape_generic_probe(struct ccw_device *cdev) | |||
551 | { | 529 | { |
552 | struct tape_device *device; | 530 | struct tape_device *device; |
553 | int ret; | 531 | int ret; |
532 | struct ccw_dev_id dev_id; | ||
554 | 533 | ||
555 | device = tape_alloc_device(); | 534 | device = tape_alloc_device(); |
556 | if (IS_ERR(device)) | 535 | if (IS_ERR(device)) |
@@ -565,7 +544,8 @@ tape_generic_probe(struct ccw_device *cdev) | |||
565 | cdev->dev.driver_data = device; | 544 | cdev->dev.driver_data = device; |
566 | cdev->handler = __tape_do_irq; | 545 | cdev->handler = __tape_do_irq; |
567 | device->cdev = cdev; | 546 | device->cdev = cdev; |
568 | device->cdev_id = busid_to_int(cdev->dev.bus_id); | 547 | ccw_device_get_id(cdev, &dev_id); |
548 | device->cdev_id = devid_to_int(&dev_id); | ||
569 | PRINT_INFO("tape device %s found\n", cdev->dev.bus_id); | 549 | PRINT_INFO("tape device %s found\n", cdev->dev.bus_id); |
570 | return ret; | 550 | return ret; |
571 | } | 551 | } |
@@ -975,21 +955,19 @@ __tape_wake_up(struct tape_request *request, void *data) | |||
975 | int | 955 | int |
976 | tape_do_io(struct tape_device *device, struct tape_request *request) | 956 | tape_do_io(struct tape_device *device, struct tape_request *request) |
977 | { | 957 | { |
978 | wait_queue_head_t wq; | ||
979 | int rc; | 958 | int rc; |
980 | 959 | ||
981 | init_waitqueue_head(&wq); | ||
982 | spin_lock_irq(get_ccwdev_lock(device->cdev)); | 960 | spin_lock_irq(get_ccwdev_lock(device->cdev)); |
983 | /* Setup callback */ | 961 | /* Setup callback */ |
984 | request->callback = __tape_wake_up; | 962 | request->callback = __tape_wake_up; |
985 | request->callback_data = &wq; | 963 | request->callback_data = &device->wait_queue; |
986 | /* Add request to request queue and try to start it. */ | 964 | /* Add request to request queue and try to start it. */ |
987 | rc = __tape_start_request(device, request); | 965 | rc = __tape_start_request(device, request); |
988 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); | 966 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); |
989 | if (rc) | 967 | if (rc) |
990 | return rc; | 968 | return rc; |
991 | /* Request added to the queue. Wait for its completion. */ | 969 | /* Request added to the queue. Wait for its completion. */ |
992 | wait_event(wq, (request->callback == NULL)); | 970 | wait_event(device->wait_queue, (request->callback == NULL)); |
993 | /* Get rc from request */ | 971 | /* Get rc from request */ |
994 | return request->rc; | 972 | return request->rc; |
995 | } | 973 | } |
@@ -1010,20 +988,19 @@ int | |||
1010 | tape_do_io_interruptible(struct tape_device *device, | 988 | tape_do_io_interruptible(struct tape_device *device, |
1011 | struct tape_request *request) | 989 | struct tape_request *request) |
1012 | { | 990 | { |
1013 | wait_queue_head_t wq; | ||
1014 | int rc; | 991 | int rc; |
1015 | 992 | ||
1016 | init_waitqueue_head(&wq); | ||
1017 | spin_lock_irq(get_ccwdev_lock(device->cdev)); | 993 | spin_lock_irq(get_ccwdev_lock(device->cdev)); |
1018 | /* Setup callback */ | 994 | /* Setup callback */ |
1019 | request->callback = __tape_wake_up_interruptible; | 995 | request->callback = __tape_wake_up_interruptible; |
1020 | request->callback_data = &wq; | 996 | request->callback_data = &device->wait_queue; |
1021 | rc = __tape_start_request(device, request); | 997 | rc = __tape_start_request(device, request); |
1022 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); | 998 | spin_unlock_irq(get_ccwdev_lock(device->cdev)); |
1023 | if (rc) | 999 | if (rc) |
1024 | return rc; | 1000 | return rc; |
1025 | /* Request added to the queue. Wait for its completion. */ | 1001 | /* Request added to the queue. Wait for its completion. */ |
1026 | rc = wait_event_interruptible(wq, (request->callback == NULL)); | 1002 | rc = wait_event_interruptible(device->wait_queue, |
1003 | (request->callback == NULL)); | ||
1027 | if (rc != -ERESTARTSYS) | 1004 | if (rc != -ERESTARTSYS) |
1028 | /* Request finished normally. */ | 1005 | /* Request finished normally. */ |
1029 | return request->rc; | 1006 | return request->rc; |
@@ -1036,7 +1013,7 @@ tape_do_io_interruptible(struct tape_device *device, | |||
1036 | /* Wait for the interrupt that acknowledges the halt. */ | 1013 | /* Wait for the interrupt that acknowledges the halt. */ |
1037 | do { | 1014 | do { |
1038 | rc = wait_event_interruptible( | 1015 | rc = wait_event_interruptible( |
1039 | wq, | 1016 | device->wait_queue, |
1040 | (request->callback == NULL) | 1017 | (request->callback == NULL) |
1041 | ); | 1018 | ); |
1042 | } while (rc == -ERESTARTSYS); | 1019 | } while (rc == -ERESTARTSYS); |
diff --git a/drivers/s390/char/vmlogrdr.c b/drivers/s390/char/vmlogrdr.c index d364e0bfae12..2c2428cc05d8 100644 --- a/drivers/s390/char/vmlogrdr.c +++ b/drivers/s390/char/vmlogrdr.c | |||
@@ -762,10 +762,10 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv) | |||
762 | device_unregister(dev); | 762 | device_unregister(dev); |
763 | return ret; | 763 | return ret; |
764 | } | 764 | } |
765 | priv->class_device = device_create(vmlogrdr_class, dev, | 765 | priv->class_device = device_create_drvdata(vmlogrdr_class, dev, |
766 | MKDEV(vmlogrdr_major, | 766 | MKDEV(vmlogrdr_major, |
767 | priv->minor_num), | 767 | priv->minor_num), |
768 | "%s", dev->bus_id); | 768 | priv, "%s", dev->bus_id); |
769 | if (IS_ERR(priv->class_device)) { | 769 | if (IS_ERR(priv->class_device)) { |
770 | ret = PTR_ERR(priv->class_device); | 770 | ret = PTR_ERR(priv->class_device); |
771 | priv->class_device=NULL; | 771 | priv->class_device=NULL; |
@@ -773,7 +773,6 @@ static int vmlogrdr_register_device(struct vmlogrdr_priv_t *priv) | |||
773 | device_unregister(dev); | 773 | device_unregister(dev); |
774 | return ret; | 774 | return ret; |
775 | } | 775 | } |
776 | dev->driver_data = priv; | ||
777 | priv->device = dev; | 776 | priv->device = dev; |
778 | return 0; | 777 | return 0; |
779 | } | 778 | } |
@@ -858,7 +857,7 @@ static int __init vmlogrdr_init(void) | |||
858 | for (i=0; i < MAXMINOR; ++i ) { | 857 | for (i=0; i < MAXMINOR; ++i ) { |
859 | sys_ser[i].buffer = (char *) get_zeroed_page(GFP_KERNEL); | 858 | sys_ser[i].buffer = (char *) get_zeroed_page(GFP_KERNEL); |
860 | if (!sys_ser[i].buffer) { | 859 | if (!sys_ser[i].buffer) { |
861 | rc = ENOMEM; | 860 | rc = -ENOMEM; |
862 | break; | 861 | break; |
863 | } | 862 | } |
864 | sys_ser[i].current_position = sys_ser[i].buffer; | 863 | sys_ser[i].current_position = sys_ser[i].buffer; |
diff --git a/drivers/s390/cio/blacklist.c b/drivers/s390/cio/blacklist.c index 9c21b8f43f9b..a4a5f2efea48 100644 --- a/drivers/s390/cio/blacklist.c +++ b/drivers/s390/cio/blacklist.c | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <asm/cio.h> | 20 | #include <asm/cio.h> |
21 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
22 | #include <asm/cio.h> | ||
23 | 22 | ||
24 | #include "blacklist.h" | 23 | #include "blacklist.h" |
25 | #include "cio.h" | 24 | #include "cio.h" |
diff --git a/drivers/s390/cio/device_pgid.c b/drivers/s390/cio/device_pgid.c index ba559053402e..5cf7be008e98 100644 --- a/drivers/s390/cio/device_pgid.c +++ b/drivers/s390/cio/device_pgid.c | |||
@@ -243,16 +243,10 @@ __ccw_device_do_pgid(struct ccw_device *cdev, __u8 func) | |||
243 | /* Setup sense path group id channel program. */ | 243 | /* Setup sense path group id channel program. */ |
244 | cdev->private->pgid[0].inf.fc = func; | 244 | cdev->private->pgid[0].inf.fc = func; |
245 | ccw = cdev->private->iccws; | 245 | ccw = cdev->private->iccws; |
246 | if (!cdev->private->flags.pgid_single) { | 246 | if (cdev->private->flags.pgid_single) |
247 | cdev->private->pgid[0].inf.fc |= SPID_FUNC_MULTI_PATH; | ||
248 | ccw->cmd_code = CCW_CMD_SUSPEND_RECONN; | ||
249 | ccw->cda = 0; | ||
250 | ccw->count = 0; | ||
251 | ccw->flags = CCW_FLAG_SLI | CCW_FLAG_CC; | ||
252 | ccw++; | ||
253 | } else | ||
254 | cdev->private->pgid[0].inf.fc |= SPID_FUNC_SINGLE_PATH; | 247 | cdev->private->pgid[0].inf.fc |= SPID_FUNC_SINGLE_PATH; |
255 | 248 | else | |
249 | cdev->private->pgid[0].inf.fc |= SPID_FUNC_MULTI_PATH; | ||
256 | ccw->cmd_code = CCW_CMD_SET_PGID; | 250 | ccw->cmd_code = CCW_CMD_SET_PGID; |
257 | ccw->cda = (__u32) __pa (&cdev->private->pgid[0]); | 251 | ccw->cda = (__u32) __pa (&cdev->private->pgid[0]); |
258 | ccw->count = sizeof (struct pgid); | 252 | ccw->count = sizeof (struct pgid); |
diff --git a/drivers/s390/kvm/kvm_virtio.c b/drivers/s390/kvm/kvm_virtio.c index 47a7e6200b26..5ab34340919b 100644 --- a/drivers/s390/kvm/kvm_virtio.c +++ b/drivers/s390/kvm/kvm_virtio.c | |||
@@ -31,11 +31,6 @@ | |||
31 | */ | 31 | */ |
32 | static void *kvm_devices; | 32 | static void *kvm_devices; |
33 | 33 | ||
34 | /* | ||
35 | * Unique numbering for kvm devices. | ||
36 | */ | ||
37 | static unsigned int dev_index; | ||
38 | |||
39 | struct kvm_device { | 34 | struct kvm_device { |
40 | struct virtio_device vdev; | 35 | struct virtio_device vdev; |
41 | struct kvm_device_desc *desc; | 36 | struct kvm_device_desc *desc; |
@@ -78,27 +73,32 @@ static unsigned desc_size(const struct kvm_device_desc *desc) | |||
78 | + desc->config_len; | 73 | + desc->config_len; |
79 | } | 74 | } |
80 | 75 | ||
81 | /* | 76 | /* This gets the device's feature bits. */ |
82 | * This tests (and acknowleges) a feature bit. | 77 | static u32 kvm_get_features(struct virtio_device *vdev) |
83 | */ | ||
84 | static bool kvm_feature(struct virtio_device *vdev, unsigned fbit) | ||
85 | { | 78 | { |
79 | unsigned int i; | ||
80 | u32 features = 0; | ||
86 | struct kvm_device_desc *desc = to_kvmdev(vdev)->desc; | 81 | struct kvm_device_desc *desc = to_kvmdev(vdev)->desc; |
87 | u8 *features; | 82 | u8 *in_features = kvm_vq_features(desc); |
88 | 83 | ||
89 | if (fbit / 8 > desc->feature_len) | 84 | for (i = 0; i < min(desc->feature_len * 8, 32); i++) |
90 | return false; | 85 | if (in_features[i / 8] & (1 << (i % 8))) |
86 | features |= (1 << i); | ||
87 | return features; | ||
88 | } | ||
91 | 89 | ||
92 | features = kvm_vq_features(desc); | 90 | static void kvm_set_features(struct virtio_device *vdev, u32 features) |
93 | if (!(features[fbit / 8] & (1 << (fbit % 8)))) | 91 | { |
94 | return false; | 92 | unsigned int i; |
93 | struct kvm_device_desc *desc = to_kvmdev(vdev)->desc; | ||
94 | /* Second half of bitmap is features we accept. */ | ||
95 | u8 *out_features = kvm_vq_features(desc) + desc->feature_len; | ||
95 | 96 | ||
96 | /* | 97 | memset(out_features, 0, desc->feature_len); |
97 | * We set the matching bit in the other half of the bitmap to tell the | 98 | for (i = 0; i < min(desc->feature_len * 8, 32); i++) { |
98 | * Host we want to use this feature. | 99 | if (features & (1 << i)) |
99 | */ | 100 | out_features[i / 8] |= (1 << (i % 8)); |
100 | features[desc->feature_len + fbit / 8] |= (1 << (fbit % 8)); | 101 | } |
101 | return true; | ||
102 | } | 102 | } |
103 | 103 | ||
104 | /* | 104 | /* |
@@ -221,7 +221,8 @@ static void kvm_del_vq(struct virtqueue *vq) | |||
221 | * The config ops structure as defined by virtio config | 221 | * The config ops structure as defined by virtio config |
222 | */ | 222 | */ |
223 | static struct virtio_config_ops kvm_vq_configspace_ops = { | 223 | static struct virtio_config_ops kvm_vq_configspace_ops = { |
224 | .feature = kvm_feature, | 224 | .get_features = kvm_get_features, |
225 | .set_features = kvm_set_features, | ||
225 | .get = kvm_get, | 226 | .get = kvm_get, |
226 | .set = kvm_set, | 227 | .set = kvm_set, |
227 | .get_status = kvm_get_status, | 228 | .get_status = kvm_get_status, |
@@ -244,26 +245,25 @@ static struct device kvm_root = { | |||
244 | * adds a new device and register it with virtio | 245 | * adds a new device and register it with virtio |
245 | * appropriate drivers are loaded by the device model | 246 | * appropriate drivers are loaded by the device model |
246 | */ | 247 | */ |
247 | static void add_kvm_device(struct kvm_device_desc *d) | 248 | static void add_kvm_device(struct kvm_device_desc *d, unsigned int offset) |
248 | { | 249 | { |
249 | struct kvm_device *kdev; | 250 | struct kvm_device *kdev; |
250 | 251 | ||
251 | kdev = kzalloc(sizeof(*kdev), GFP_KERNEL); | 252 | kdev = kzalloc(sizeof(*kdev), GFP_KERNEL); |
252 | if (!kdev) { | 253 | if (!kdev) { |
253 | printk(KERN_EMERG "Cannot allocate kvm dev %u\n", | 254 | printk(KERN_EMERG "Cannot allocate kvm dev %u type %u\n", |
254 | dev_index++); | 255 | offset, d->type); |
255 | return; | 256 | return; |
256 | } | 257 | } |
257 | 258 | ||
258 | kdev->vdev.dev.parent = &kvm_root; | 259 | kdev->vdev.dev.parent = &kvm_root; |
259 | kdev->vdev.index = dev_index++; | ||
260 | kdev->vdev.id.device = d->type; | 260 | kdev->vdev.id.device = d->type; |
261 | kdev->vdev.config = &kvm_vq_configspace_ops; | 261 | kdev->vdev.config = &kvm_vq_configspace_ops; |
262 | kdev->desc = d; | 262 | kdev->desc = d; |
263 | 263 | ||
264 | if (register_virtio_device(&kdev->vdev) != 0) { | 264 | if (register_virtio_device(&kdev->vdev) != 0) { |
265 | printk(KERN_ERR "Failed to register kvm device %u\n", | 265 | printk(KERN_ERR "Failed to register kvm device %u type %u\n", |
266 | kdev->vdev.index); | 266 | offset, d->type); |
267 | kfree(kdev); | 267 | kfree(kdev); |
268 | } | 268 | } |
269 | } | 269 | } |
@@ -283,7 +283,7 @@ static void scan_devices(void) | |||
283 | if (d->type == 0) | 283 | if (d->type == 0) |
284 | break; | 284 | break; |
285 | 285 | ||
286 | add_kvm_device(d); | 286 | add_kvm_device(d, i); |
287 | } | 287 | } |
288 | } | 288 | } |
289 | 289 | ||
diff --git a/drivers/sbus/char/bpp.c b/drivers/sbus/char/bpp.c index b87037ec9805..03c966059471 100644 --- a/drivers/sbus/char/bpp.c +++ b/drivers/sbus/char/bpp.c | |||
@@ -869,7 +869,7 @@ static void probeLptPort(unsigned idx) | |||
869 | instances[idx].mode = COMPATIBILITY; | 869 | instances[idx].mode = COMPATIBILITY; |
870 | instances[idx].run_length = 0; | 870 | instances[idx].run_length = 0; |
871 | instances[idx].run_flag = 0; | 871 | instances[idx].run_flag = 0; |
872 | if (!request_region(lpAddr,3, dev_name)) return; | 872 | if (!request_region(lpAddr,3, bpp_dev_name)) return; |
873 | 873 | ||
874 | /* | 874 | /* |
875 | * First, make sure the instance exists. Do this by writing to | 875 | * First, make sure the instance exists. Do this by writing to |
@@ -1021,7 +1021,7 @@ static int __init bpp_init(void) | |||
1021 | if (rc == 0) | 1021 | if (rc == 0) |
1022 | return -ENODEV; | 1022 | return -ENODEV; |
1023 | 1023 | ||
1024 | rc = register_chrdev(BPP_MAJOR, dev_name, &bpp_fops); | 1024 | rc = register_chrdev(BPP_MAJOR, bpp_dev_name, &bpp_fops); |
1025 | if (rc < 0) | 1025 | if (rc < 0) |
1026 | return rc; | 1026 | return rc; |
1027 | 1027 | ||
@@ -1037,7 +1037,7 @@ static void __exit bpp_cleanup(void) | |||
1037 | { | 1037 | { |
1038 | unsigned idx; | 1038 | unsigned idx; |
1039 | 1039 | ||
1040 | unregister_chrdev(BPP_MAJOR, dev_name); | 1040 | unregister_chrdev(BPP_MAJOR, bpp_dev_name); |
1041 | 1041 | ||
1042 | for (idx = 0; idx < BPP_NO; idx++) { | 1042 | for (idx = 0; idx < BPP_NO; idx++) { |
1043 | if (instances[idx].present) | 1043 | if (instances[idx].present) |
diff --git a/drivers/scsi/3w-9xxx.c b/drivers/scsi/3w-9xxx.c index b31faeccb9cd..867f6fd5c2c0 100644 --- a/drivers/scsi/3w-9xxx.c +++ b/drivers/scsi/3w-9xxx.c | |||
@@ -1278,7 +1278,7 @@ static irqreturn_t twa_interrupt(int irq, void *dev_instance) | |||
1278 | error = 0; | 1278 | error = 0; |
1279 | /* Check for command packet errors */ | 1279 | /* Check for command packet errors */ |
1280 | if (full_command_packet->command.newcommand.status != 0) { | 1280 | if (full_command_packet->command.newcommand.status != 0) { |
1281 | if (tw_dev->srb[request_id] != 0) { | 1281 | if (tw_dev->srb[request_id] != NULL) { |
1282 | error = twa_fill_sense(tw_dev, request_id, 1, 1); | 1282 | error = twa_fill_sense(tw_dev, request_id, 1, 1); |
1283 | } else { | 1283 | } else { |
1284 | /* Skip ioctl error prints */ | 1284 | /* Skip ioctl error prints */ |
@@ -1290,7 +1290,7 @@ static irqreturn_t twa_interrupt(int irq, void *dev_instance) | |||
1290 | 1290 | ||
1291 | /* Check for correct state */ | 1291 | /* Check for correct state */ |
1292 | if (tw_dev->state[request_id] != TW_S_POSTED) { | 1292 | if (tw_dev->state[request_id] != TW_S_POSTED) { |
1293 | if (tw_dev->srb[request_id] != 0) { | 1293 | if (tw_dev->srb[request_id] != NULL) { |
1294 | TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1a, "Received a request id that wasn't posted"); | 1294 | TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1a, "Received a request id that wasn't posted"); |
1295 | TW_CLEAR_ALL_INTERRUPTS(tw_dev); | 1295 | TW_CLEAR_ALL_INTERRUPTS(tw_dev); |
1296 | goto twa_interrupt_bail; | 1296 | goto twa_interrupt_bail; |
@@ -1298,7 +1298,7 @@ static irqreturn_t twa_interrupt(int irq, void *dev_instance) | |||
1298 | } | 1298 | } |
1299 | 1299 | ||
1300 | /* Check for internal command completion */ | 1300 | /* Check for internal command completion */ |
1301 | if (tw_dev->srb[request_id] == 0) { | 1301 | if (tw_dev->srb[request_id] == NULL) { |
1302 | if (request_id != tw_dev->chrdev_request_id) { | 1302 | if (request_id != tw_dev->chrdev_request_id) { |
1303 | if (twa_aen_complete(tw_dev, request_id)) | 1303 | if (twa_aen_complete(tw_dev, request_id)) |
1304 | TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1b, "Error completing AEN during attention interrupt"); | 1304 | TW_PRINTK(tw_dev->host, TW_DRIVER, 0x1b, "Error completing AEN during attention interrupt"); |
diff --git a/drivers/scsi/aha152x.c b/drivers/scsi/aha152x.c index 1dca1775f4b1..0899cb61e3dd 100644 --- a/drivers/scsi/aha152x.c +++ b/drivers/scsi/aha152x.c | |||
@@ -3582,7 +3582,7 @@ static int checksetup(struct aha152x_setup *setup) | |||
3582 | if (i == ARRAY_SIZE(ports)) | 3582 | if (i == ARRAY_SIZE(ports)) |
3583 | return 0; | 3583 | return 0; |
3584 | 3584 | ||
3585 | if ( request_region(setup->io_port, IO_RANGE, "aha152x")==0 ) { | 3585 | if (!request_region(setup->io_port, IO_RANGE, "aha152x")) { |
3586 | printk(KERN_ERR "aha152x: io port 0x%x busy.\n", setup->io_port); | 3586 | printk(KERN_ERR "aha152x: io port 0x%x busy.\n", setup->io_port); |
3587 | return 0; | 3587 | return 0; |
3588 | } | 3588 | } |
@@ -3842,7 +3842,7 @@ static int __init aha152x_init(void) | |||
3842 | if ((setup_count == 1) && (setup[0].io_port == ports[i])) | 3842 | if ((setup_count == 1) && (setup[0].io_port == ports[i])) |
3843 | continue; | 3843 | continue; |
3844 | 3844 | ||
3845 | if ( request_region(ports[i], IO_RANGE, "aha152x")==0 ) { | 3845 | if (!request_region(ports[i], IO_RANGE, "aha152x")) { |
3846 | printk(KERN_ERR "aha152x: io port 0x%x busy.\n", ports[i]); | 3846 | printk(KERN_ERR "aha152x: io port 0x%x busy.\n", ports[i]); |
3847 | continue; | 3847 | continue; |
3848 | } | 3848 | } |
diff --git a/drivers/scsi/atp870u.c b/drivers/scsi/atp870u.c index db6de5e6afb3..7d311541c76c 100644 --- a/drivers/scsi/atp870u.c +++ b/drivers/scsi/atp870u.c | |||
@@ -747,7 +747,7 @@ static void send_s870(struct atp_unit *dev,unsigned char c) | |||
747 | dev->quhd[c] = 0; | 747 | dev->quhd[c] = 0; |
748 | } | 748 | } |
749 | workreq = dev->quereq[c][dev->quhd[c]]; | 749 | workreq = dev->quereq[c][dev->quhd[c]]; |
750 | if (dev->id[c][scmd_id(workreq)].curr_req == 0) { | 750 | if (dev->id[c][scmd_id(workreq)].curr_req == NULL) { |
751 | dev->id[c][scmd_id(workreq)].curr_req = workreq; | 751 | dev->id[c][scmd_id(workreq)].curr_req = workreq; |
752 | dev->last_cmd[c] = scmd_id(workreq); | 752 | dev->last_cmd[c] = scmd_id(workreq); |
753 | goto cmd_subp; | 753 | goto cmd_subp; |
diff --git a/drivers/scsi/ch.c b/drivers/scsi/ch.c index 75c84d7b9ce8..c4b938bc30d3 100644 --- a/drivers/scsi/ch.c +++ b/drivers/scsi/ch.c | |||
@@ -910,9 +910,9 @@ static int ch_probe(struct device *dev) | |||
910 | ch->minor = minor; | 910 | ch->minor = minor; |
911 | sprintf(ch->name,"ch%d",ch->minor); | 911 | sprintf(ch->name,"ch%d",ch->minor); |
912 | 912 | ||
913 | class_dev = device_create(ch_sysfs_class, dev, | 913 | class_dev = device_create_drvdata(ch_sysfs_class, dev, |
914 | MKDEV(SCSI_CHANGER_MAJOR,ch->minor), | 914 | MKDEV(SCSI_CHANGER_MAJOR, ch->minor), |
915 | "s%s", ch->name); | 915 | ch, "s%s", ch->name); |
916 | if (IS_ERR(class_dev)) { | 916 | if (IS_ERR(class_dev)) { |
917 | printk(KERN_WARNING "ch%d: device_create failed\n", | 917 | printk(KERN_WARNING "ch%d: device_create failed\n", |
918 | ch->minor); | 918 | ch->minor); |
@@ -926,7 +926,6 @@ static int ch_probe(struct device *dev) | |||
926 | if (init) | 926 | if (init) |
927 | ch_init_elem(ch); | 927 | ch_init_elem(ch); |
928 | 928 | ||
929 | dev_set_drvdata(dev, ch); | ||
930 | sdev_printk(KERN_INFO, sd, "Attached scsi changer %s\n", ch->name); | 929 | sdev_printk(KERN_INFO, sd, "Attached scsi changer %s\n", ch->name); |
931 | 930 | ||
932 | return 0; | 931 | return 0; |
diff --git a/drivers/scsi/hptiop.c b/drivers/scsi/hptiop.c index aaa48e0c8ed0..da876d3924be 100644 --- a/drivers/scsi/hptiop.c +++ b/drivers/scsi/hptiop.c | |||
@@ -444,7 +444,7 @@ static void __iomem *hptiop_map_pci_bar(struct hptiop_hba *hba, int index) | |||
444 | if (!(pci_resource_flags(pcidev, index) & IORESOURCE_MEM)) { | 444 | if (!(pci_resource_flags(pcidev, index) & IORESOURCE_MEM)) { |
445 | printk(KERN_ERR "scsi%d: pci resource invalid\n", | 445 | printk(KERN_ERR "scsi%d: pci resource invalid\n", |
446 | hba->host->host_no); | 446 | hba->host->host_no); |
447 | return 0; | 447 | return NULL; |
448 | } | 448 | } |
449 | 449 | ||
450 | mem_base_phy = pci_resource_start(pcidev, index); | 450 | mem_base_phy = pci_resource_start(pcidev, index); |
@@ -454,7 +454,7 @@ static void __iomem *hptiop_map_pci_bar(struct hptiop_hba *hba, int index) | |||
454 | if (!mem_base_virt) { | 454 | if (!mem_base_virt) { |
455 | printk(KERN_ERR "scsi%d: Fail to ioremap memory space\n", | 455 | printk(KERN_ERR "scsi%d: Fail to ioremap memory space\n", |
456 | hba->host->host_no); | 456 | hba->host->host_no); |
457 | return 0; | 457 | return NULL; |
458 | } | 458 | } |
459 | return mem_base_virt; | 459 | return mem_base_virt; |
460 | } | 460 | } |
@@ -476,11 +476,11 @@ static void hptiop_unmap_pci_bar_itl(struct hptiop_hba *hba) | |||
476 | static int hptiop_map_pci_bar_mv(struct hptiop_hba *hba) | 476 | static int hptiop_map_pci_bar_mv(struct hptiop_hba *hba) |
477 | { | 477 | { |
478 | hba->u.mv.regs = hptiop_map_pci_bar(hba, 0); | 478 | hba->u.mv.regs = hptiop_map_pci_bar(hba, 0); |
479 | if (hba->u.mv.regs == 0) | 479 | if (hba->u.mv.regs == NULL) |
480 | return -1; | 480 | return -1; |
481 | 481 | ||
482 | hba->u.mv.mu = hptiop_map_pci_bar(hba, 2); | 482 | hba->u.mv.mu = hptiop_map_pci_bar(hba, 2); |
483 | if (hba->u.mv.mu == 0) { | 483 | if (hba->u.mv.mu == NULL) { |
484 | iounmap(hba->u.mv.regs); | 484 | iounmap(hba->u.mv.regs); |
485 | return -1; | 485 | return -1; |
486 | } | 486 | } |
@@ -1210,8 +1210,8 @@ static void hptiop_remove(struct pci_dev *pcidev) | |||
1210 | 1210 | ||
1211 | static struct hptiop_adapter_ops hptiop_itl_ops = { | 1211 | static struct hptiop_adapter_ops hptiop_itl_ops = { |
1212 | .iop_wait_ready = iop_wait_ready_itl, | 1212 | .iop_wait_ready = iop_wait_ready_itl, |
1213 | .internal_memalloc = 0, | 1213 | .internal_memalloc = NULL, |
1214 | .internal_memfree = 0, | 1214 | .internal_memfree = NULL, |
1215 | .map_pci_bar = hptiop_map_pci_bar_itl, | 1215 | .map_pci_bar = hptiop_map_pci_bar_itl, |
1216 | .unmap_pci_bar = hptiop_unmap_pci_bar_itl, | 1216 | .unmap_pci_bar = hptiop_unmap_pci_bar_itl, |
1217 | .enable_intr = hptiop_enable_intr_itl, | 1217 | .enable_intr = hptiop_enable_intr_itl, |
diff --git a/drivers/scsi/mac_esp.c b/drivers/scsi/mac_esp.c index cd37bd69a115..887682a24e36 100644 --- a/drivers/scsi/mac_esp.c +++ b/drivers/scsi/mac_esp.c | |||
@@ -650,7 +650,7 @@ static void __exit mac_esp_exit(void) | |||
650 | 650 | ||
651 | MODULE_DESCRIPTION("Mac ESP SCSI driver"); | 651 | MODULE_DESCRIPTION("Mac ESP SCSI driver"); |
652 | MODULE_AUTHOR("Finn Thain <fthain@telegraphics.com.au>"); | 652 | MODULE_AUTHOR("Finn Thain <fthain@telegraphics.com.au>"); |
653 | MODULE_LICENSE("GPLv2"); | 653 | MODULE_LICENSE("GPL v2"); |
654 | MODULE_VERSION(DRV_VERSION); | 654 | MODULE_VERSION(DRV_VERSION); |
655 | 655 | ||
656 | module_init(mac_esp_init); | 656 | module_init(mac_esp_init); |
diff --git a/drivers/scsi/osst.c b/drivers/scsi/osst.c index 31f7aec44d90..243d8becd30f 100644 --- a/drivers/scsi/osst.c +++ b/drivers/scsi/osst.c | |||
@@ -5695,13 +5695,12 @@ static int osst_sysfs_add(dev_t dev, struct device *device, struct osst_tape * S | |||
5695 | struct device *osst_member; | 5695 | struct device *osst_member; |
5696 | int err; | 5696 | int err; |
5697 | 5697 | ||
5698 | osst_member = device_create(osst_sysfs_class, device, dev, "%s", name); | 5698 | osst_member = device_create_drvdata(osst_sysfs_class, device, dev, STp, "%s", name); |
5699 | if (IS_ERR(osst_member)) { | 5699 | if (IS_ERR(osst_member)) { |
5700 | printk(KERN_WARNING "osst :W: Unable to add sysfs class member %s\n", name); | 5700 | printk(KERN_WARNING "osst :W: Unable to add sysfs class member %s\n", name); |
5701 | return PTR_ERR(osst_member); | 5701 | return PTR_ERR(osst_member); |
5702 | } | 5702 | } |
5703 | 5703 | ||
5704 | dev_set_drvdata(osst_member, STp); | ||
5705 | err = device_create_file(osst_member, &dev_attr_ADR_rev); | 5704 | err = device_create_file(osst_member, &dev_attr_ADR_rev); |
5706 | if (err) | 5705 | if (err) |
5707 | goto err_out; | 5706 | goto err_out; |
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c index 51e2f299dbbb..3754ab87f89a 100644 --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c | |||
@@ -2811,7 +2811,7 @@ qla1280_64bit_start_scsi(struct scsi_qla_host *ha, struct srb * sp) | |||
2811 | 2811 | ||
2812 | /* Check for room in outstanding command list. */ | 2812 | /* Check for room in outstanding command list. */ |
2813 | for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS && | 2813 | for (cnt = 0; cnt < MAX_OUTSTANDING_COMMANDS && |
2814 | ha->outstanding_cmds[cnt] != 0; cnt++); | 2814 | ha->outstanding_cmds[cnt] != NULL; cnt++); |
2815 | 2815 | ||
2816 | if (cnt >= MAX_OUTSTANDING_COMMANDS) { | 2816 | if (cnt >= MAX_OUTSTANDING_COMMANDS) { |
2817 | status = 1; | 2817 | status = 1; |
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index c9d7f721b9e2..ea0edd1b2e76 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c | |||
@@ -1441,17 +1441,18 @@ sg_add(struct device *cl_dev, struct class_interface *cl_intf) | |||
1441 | if (sg_sysfs_valid) { | 1441 | if (sg_sysfs_valid) { |
1442 | struct device *sg_class_member; | 1442 | struct device *sg_class_member; |
1443 | 1443 | ||
1444 | sg_class_member = device_create(sg_sysfs_class, cl_dev->parent, | 1444 | sg_class_member = device_create_drvdata(sg_sysfs_class, |
1445 | MKDEV(SCSI_GENERIC_MAJOR, | 1445 | cl_dev->parent, |
1446 | sdp->index), | 1446 | MKDEV(SCSI_GENERIC_MAJOR, |
1447 | "%s", disk->disk_name); | 1447 | sdp->index), |
1448 | sdp, | ||
1449 | "%s", disk->disk_name); | ||
1448 | if (IS_ERR(sg_class_member)) { | 1450 | if (IS_ERR(sg_class_member)) { |
1449 | printk(KERN_ERR "sg_add: " | 1451 | printk(KERN_ERR "sg_add: " |
1450 | "device_create failed\n"); | 1452 | "device_create failed\n"); |
1451 | error = PTR_ERR(sg_class_member); | 1453 | error = PTR_ERR(sg_class_member); |
1452 | goto cdev_add_err; | 1454 | goto cdev_add_err; |
1453 | } | 1455 | } |
1454 | dev_set_drvdata(sg_class_member, sdp); | ||
1455 | error = sysfs_create_link(&scsidp->sdev_gendev.kobj, | 1456 | error = sysfs_create_link(&scsidp->sdev_gendev.kobj, |
1456 | &sg_class_member->kobj, "generic"); | 1457 | &sg_class_member->kobj, "generic"); |
1457 | if (error) | 1458 | if (error) |
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c index e8db66ad0bde..6e5a5bb31311 100644 --- a/drivers/scsi/st.c +++ b/drivers/scsi/st.c | |||
@@ -4424,17 +4424,19 @@ static int do_create_class_files(struct scsi_tape *STp, int dev_num, int mode) | |||
4424 | snprintf(name, 10, "%s%s%s", rew ? "n" : "", | 4424 | snprintf(name, 10, "%s%s%s", rew ? "n" : "", |
4425 | STp->disk->disk_name, st_formats[i]); | 4425 | STp->disk->disk_name, st_formats[i]); |
4426 | st_class_member = | 4426 | st_class_member = |
4427 | device_create(st_sysfs_class, &STp->device->sdev_gendev, | 4427 | device_create_drvdata(st_sysfs_class, |
4428 | MKDEV(SCSI_TAPE_MAJOR, | 4428 | &STp->device->sdev_gendev, |
4429 | TAPE_MINOR(dev_num, mode, rew)), | 4429 | MKDEV(SCSI_TAPE_MAJOR, |
4430 | "%s", name); | 4430 | TAPE_MINOR(dev_num, |
4431 | mode, rew)), | ||
4432 | &STp->modes[mode], | ||
4433 | "%s", name); | ||
4431 | if (IS_ERR(st_class_member)) { | 4434 | if (IS_ERR(st_class_member)) { |
4432 | printk(KERN_WARNING "st%d: device_create failed\n", | 4435 | printk(KERN_WARNING "st%d: device_create failed\n", |
4433 | dev_num); | 4436 | dev_num); |
4434 | error = PTR_ERR(st_class_member); | 4437 | error = PTR_ERR(st_class_member); |
4435 | goto out; | 4438 | goto out; |
4436 | } | 4439 | } |
4437 | dev_set_drvdata(st_class_member, &STp->modes[mode]); | ||
4438 | 4440 | ||
4439 | error = device_create_file(st_class_member, | 4441 | error = device_create_file(st_class_member, |
4440 | &dev_attr_defined); | 4442 | &dev_attr_defined); |
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c index a1ca9b7bf2d5..1bc00b721e9d 100644 --- a/drivers/serial/8250.c +++ b/drivers/serial/8250.c | |||
@@ -93,7 +93,6 @@ static unsigned int nr_uarts = CONFIG_SERIAL_8250_RUNTIME_UARTS; | |||
93 | #define CONFIG_HUB6 1 | 93 | #define CONFIG_HUB6 1 |
94 | 94 | ||
95 | #include <asm/serial.h> | 95 | #include <asm/serial.h> |
96 | |||
97 | /* | 96 | /* |
98 | * SERIAL_PORT_DFNS tells us about built-in ports that have no | 97 | * SERIAL_PORT_DFNS tells us about built-in ports that have no |
99 | * standard enumeration mechanism. Platforms that can find all | 98 | * standard enumeration mechanism. Platforms that can find all |
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index 53fa19cf2f06..788c3559522d 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
@@ -2602,7 +2602,12 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
2602 | { PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS200, | 2602 | { PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS200, |
2603 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, /* 135a.0811 */ | 2603 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, /* 135a.0811 */ |
2604 | pbn_b2_2_115200 }, | 2604 | pbn_b2_2_115200 }, |
2605 | 2605 | /* | |
2606 | * IntaShield IS-400 | ||
2607 | */ | ||
2608 | { PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS400, | ||
2609 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, /* 135a.0dc0 */ | ||
2610 | pbn_b2_4_115200 }, | ||
2606 | /* | 2611 | /* |
2607 | * Perle PCI-RAS cards | 2612 | * Perle PCI-RAS cards |
2608 | */ | 2613 | */ |
diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig index 62e6eb136a3c..9bc42763623c 100644 --- a/drivers/serial/Kconfig +++ b/drivers/serial/Kconfig | |||
@@ -1361,7 +1361,7 @@ config SERIAL_SC26XX_CONSOLE | |||
1361 | 1361 | ||
1362 | config SERIAL_BFIN_SPORT | 1362 | config SERIAL_BFIN_SPORT |
1363 | tristate "Blackfin SPORT emulate UART (EXPERIMENTAL)" | 1363 | tristate "Blackfin SPORT emulate UART (EXPERIMENTAL)" |
1364 | depends on BFIN && EXPERIMENTAL | 1364 | depends on BLACKFIN && EXPERIMENTAL |
1365 | select SERIAL_CORE | 1365 | select SERIAL_CORE |
1366 | help | 1366 | help |
1367 | Enble support SPORT emulate UART on Blackfin series. | 1367 | Enble support SPORT emulate UART on Blackfin series. |
diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c index eab032733790..53b03c629aff 100644 --- a/drivers/serial/serial_core.c +++ b/drivers/serial/serial_core.c | |||
@@ -2054,6 +2054,8 @@ int uart_suspend_port(struct uart_driver *drv, struct uart_port *port) | |||
2054 | int uart_resume_port(struct uart_driver *drv, struct uart_port *port) | 2054 | int uart_resume_port(struct uart_driver *drv, struct uart_port *port) |
2055 | { | 2055 | { |
2056 | struct uart_state *state = drv->state + port->line; | 2056 | struct uart_state *state = drv->state + port->line; |
2057 | struct device *tty_dev; | ||
2058 | struct uart_match match = {port, drv}; | ||
2057 | 2059 | ||
2058 | mutex_lock(&state->mutex); | 2060 | mutex_lock(&state->mutex); |
2059 | 2061 | ||
@@ -2063,7 +2065,8 @@ int uart_resume_port(struct uart_driver *drv, struct uart_port *port) | |||
2063 | return 0; | 2065 | return 0; |
2064 | } | 2066 | } |
2065 | 2067 | ||
2066 | if (!port->suspended) { | 2068 | tty_dev = device_find_child(port->dev, &match, serial_match_port); |
2069 | if (!port->suspended && device_may_wakeup(tty_dev)) { | ||
2067 | disable_irq_wake(port->irq); | 2070 | disable_irq_wake(port->irq); |
2068 | mutex_unlock(&state->mutex); | 2071 | mutex_unlock(&state->mutex); |
2069 | return 0; | 2072 | return 0; |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 8fdafc27fce8..ce6ee92b3a1b 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -184,15 +184,15 @@ static void put_string(struct sci_port *sci_port, const char *buffer, int count) | |||
184 | int h, l; | 184 | int h, l; |
185 | 185 | ||
186 | c = *p++; | 186 | c = *p++; |
187 | h = highhex(c); | 187 | h = hex_asc_hi(c); |
188 | l = lowhex(c); | 188 | l = hex_asc_lo(c); |
189 | put_char(port, h); | 189 | put_char(port, h); |
190 | put_char(port, l); | 190 | put_char(port, l); |
191 | checksum += h + l; | 191 | checksum += h + l; |
192 | } | 192 | } |
193 | put_char(port, '#'); | 193 | put_char(port, '#'); |
194 | put_char(port, highhex(checksum)); | 194 | put_char(port, hex_asc_hi(checksum)); |
195 | put_char(port, lowhex(checksum)); | 195 | put_char(port, hex_asc_lo(checksum)); |
196 | } while (get_char(port) != '+'); | 196 | } while (get_char(port) != '+'); |
197 | } else | 197 | } else |
198 | #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */ | 198 | #endif /* CONFIG_SH_STANDARD_BIOS || CONFIG_SH_KGDB */ |
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c index 145c0281495d..2847336742d7 100644 --- a/drivers/serial/sunhv.c +++ b/drivers/serial/sunhv.c | |||
@@ -499,7 +499,6 @@ static void sunhv_console_write_bychar(struct console *con, const char *s, unsig | |||
499 | } else | 499 | } else |
500 | spin_lock(&port->lock); | 500 | spin_lock(&port->lock); |
501 | 501 | ||
502 | spin_lock_irqsave(&port->lock, flags); | ||
503 | for (i = 0; i < n; i++) { | 502 | for (i = 0; i < n; i++) { |
504 | if (*s == '\n') | 503 | if (*s == '\n') |
505 | sunhv_console_putchar(port, '\r'); | 504 | sunhv_console_putchar(port, '\r'); |
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c index b3518ca9f04e..41620c0fb046 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c | |||
@@ -68,6 +68,7 @@ static unsigned long minors[N_SPI_MINORS / BITS_PER_LONG]; | |||
68 | 68 | ||
69 | struct spidev_data { | 69 | struct spidev_data { |
70 | struct device dev; | 70 | struct device dev; |
71 | spinlock_t spi_lock; | ||
71 | struct spi_device *spi; | 72 | struct spi_device *spi; |
72 | struct list_head device_entry; | 73 | struct list_head device_entry; |
73 | 74 | ||
@@ -85,12 +86,75 @@ MODULE_PARM_DESC(bufsiz, "data bytes in biggest supported SPI message"); | |||
85 | 86 | ||
86 | /*-------------------------------------------------------------------------*/ | 87 | /*-------------------------------------------------------------------------*/ |
87 | 88 | ||
89 | /* | ||
90 | * We can't use the standard synchronous wrappers for file I/O; we | ||
91 | * need to protect against async removal of the underlying spi_device. | ||
92 | */ | ||
93 | static void spidev_complete(void *arg) | ||
94 | { | ||
95 | complete(arg); | ||
96 | } | ||
97 | |||
98 | static ssize_t | ||
99 | spidev_sync(struct spidev_data *spidev, struct spi_message *message) | ||
100 | { | ||
101 | DECLARE_COMPLETION_ONSTACK(done); | ||
102 | int status; | ||
103 | |||
104 | message->complete = spidev_complete; | ||
105 | message->context = &done; | ||
106 | |||
107 | spin_lock_irq(&spidev->spi_lock); | ||
108 | if (spidev->spi == NULL) | ||
109 | status = -ESHUTDOWN; | ||
110 | else | ||
111 | status = spi_async(spidev->spi, message); | ||
112 | spin_unlock_irq(&spidev->spi_lock); | ||
113 | |||
114 | if (status == 0) { | ||
115 | wait_for_completion(&done); | ||
116 | status = message->status; | ||
117 | if (status == 0) | ||
118 | status = message->actual_length; | ||
119 | } | ||
120 | return status; | ||
121 | } | ||
122 | |||
123 | static inline ssize_t | ||
124 | spidev_sync_write(struct spidev_data *spidev, size_t len) | ||
125 | { | ||
126 | struct spi_transfer t = { | ||
127 | .tx_buf = spidev->buffer, | ||
128 | .len = len, | ||
129 | }; | ||
130 | struct spi_message m; | ||
131 | |||
132 | spi_message_init(&m); | ||
133 | spi_message_add_tail(&t, &m); | ||
134 | return spidev_sync(spidev, &m); | ||
135 | } | ||
136 | |||
137 | static inline ssize_t | ||
138 | spidev_sync_read(struct spidev_data *spidev, size_t len) | ||
139 | { | ||
140 | struct spi_transfer t = { | ||
141 | .rx_buf = spidev->buffer, | ||
142 | .len = len, | ||
143 | }; | ||
144 | struct spi_message m; | ||
145 | |||
146 | spi_message_init(&m); | ||
147 | spi_message_add_tail(&t, &m); | ||
148 | return spidev_sync(spidev, &m); | ||
149 | } | ||
150 | |||
151 | /*-------------------------------------------------------------------------*/ | ||
152 | |||
88 | /* Read-only message with current device setup */ | 153 | /* Read-only message with current device setup */ |
89 | static ssize_t | 154 | static ssize_t |
90 | spidev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) | 155 | spidev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) |
91 | { | 156 | { |
92 | struct spidev_data *spidev; | 157 | struct spidev_data *spidev; |
93 | struct spi_device *spi; | ||
94 | ssize_t status = 0; | 158 | ssize_t status = 0; |
95 | 159 | ||
96 | /* chipselect only toggles at start or end of operation */ | 160 | /* chipselect only toggles at start or end of operation */ |
@@ -98,10 +162,9 @@ spidev_read(struct file *filp, char __user *buf, size_t count, loff_t *f_pos) | |||
98 | return -EMSGSIZE; | 162 | return -EMSGSIZE; |
99 | 163 | ||
100 | spidev = filp->private_data; | 164 | spidev = filp->private_data; |
101 | spi = spidev->spi; | ||
102 | 165 | ||
103 | mutex_lock(&spidev->buf_lock); | 166 | mutex_lock(&spidev->buf_lock); |
104 | status = spi_read(spi, spidev->buffer, count); | 167 | status = spidev_sync_read(spidev, count); |
105 | if (status == 0) { | 168 | if (status == 0) { |
106 | unsigned long missing; | 169 | unsigned long missing; |
107 | 170 | ||
@@ -122,7 +185,6 @@ spidev_write(struct file *filp, const char __user *buf, | |||
122 | size_t count, loff_t *f_pos) | 185 | size_t count, loff_t *f_pos) |
123 | { | 186 | { |
124 | struct spidev_data *spidev; | 187 | struct spidev_data *spidev; |
125 | struct spi_device *spi; | ||
126 | ssize_t status = 0; | 188 | ssize_t status = 0; |
127 | unsigned long missing; | 189 | unsigned long missing; |
128 | 190 | ||
@@ -131,12 +193,11 @@ spidev_write(struct file *filp, const char __user *buf, | |||
131 | return -EMSGSIZE; | 193 | return -EMSGSIZE; |
132 | 194 | ||
133 | spidev = filp->private_data; | 195 | spidev = filp->private_data; |
134 | spi = spidev->spi; | ||
135 | 196 | ||
136 | mutex_lock(&spidev->buf_lock); | 197 | mutex_lock(&spidev->buf_lock); |
137 | missing = copy_from_user(spidev->buffer, buf, count); | 198 | missing = copy_from_user(spidev->buffer, buf, count); |
138 | if (missing == 0) { | 199 | if (missing == 0) { |
139 | status = spi_write(spi, spidev->buffer, count); | 200 | status = spidev_sync_write(spidev, count); |
140 | if (status == 0) | 201 | if (status == 0) |
141 | status = count; | 202 | status = count; |
142 | } else | 203 | } else |
@@ -153,7 +214,6 @@ static int spidev_message(struct spidev_data *spidev, | |||
153 | struct spi_transfer *k_xfers; | 214 | struct spi_transfer *k_xfers; |
154 | struct spi_transfer *k_tmp; | 215 | struct spi_transfer *k_tmp; |
155 | struct spi_ioc_transfer *u_tmp; | 216 | struct spi_ioc_transfer *u_tmp; |
156 | struct spi_device *spi = spidev->spi; | ||
157 | unsigned n, total; | 217 | unsigned n, total; |
158 | u8 *buf; | 218 | u8 *buf; |
159 | int status = -EFAULT; | 219 | int status = -EFAULT; |
@@ -215,7 +275,7 @@ static int spidev_message(struct spidev_data *spidev, | |||
215 | spi_message_add_tail(k_tmp, &msg); | 275 | spi_message_add_tail(k_tmp, &msg); |
216 | } | 276 | } |
217 | 277 | ||
218 | status = spi_sync(spi, &msg); | 278 | status = spidev_sync(spidev, &msg); |
219 | if (status < 0) | 279 | if (status < 0) |
220 | goto done; | 280 | goto done; |
221 | 281 | ||
@@ -269,8 +329,16 @@ spidev_ioctl(struct inode *inode, struct file *filp, | |||
269 | if (err) | 329 | if (err) |
270 | return -EFAULT; | 330 | return -EFAULT; |
271 | 331 | ||
332 | /* guard against device removal before, or while, | ||
333 | * we issue this ioctl. | ||
334 | */ | ||
272 | spidev = filp->private_data; | 335 | spidev = filp->private_data; |
273 | spi = spidev->spi; | 336 | spin_lock_irq(&spidev->spi_lock); |
337 | spi = spi_dev_get(spidev->spi); | ||
338 | spin_unlock_irq(&spidev->spi_lock); | ||
339 | |||
340 | if (spi == NULL) | ||
341 | return -ESHUTDOWN; | ||
274 | 342 | ||
275 | switch (cmd) { | 343 | switch (cmd) { |
276 | /* read requests */ | 344 | /* read requests */ |
@@ -356,8 +424,10 @@ spidev_ioctl(struct inode *inode, struct file *filp, | |||
356 | default: | 424 | default: |
357 | /* segmented and/or full-duplex I/O request */ | 425 | /* segmented and/or full-duplex I/O request */ |
358 | if (_IOC_NR(cmd) != _IOC_NR(SPI_IOC_MESSAGE(0)) | 426 | if (_IOC_NR(cmd) != _IOC_NR(SPI_IOC_MESSAGE(0)) |
359 | || _IOC_DIR(cmd) != _IOC_WRITE) | 427 | || _IOC_DIR(cmd) != _IOC_WRITE) { |
360 | return -ENOTTY; | 428 | retval = -ENOTTY; |
429 | break; | ||
430 | } | ||
361 | 431 | ||
362 | tmp = _IOC_SIZE(cmd); | 432 | tmp = _IOC_SIZE(cmd); |
363 | if ((tmp % sizeof(struct spi_ioc_transfer)) != 0) { | 433 | if ((tmp % sizeof(struct spi_ioc_transfer)) != 0) { |
@@ -385,6 +455,7 @@ spidev_ioctl(struct inode *inode, struct file *filp, | |||
385 | kfree(ioc); | 455 | kfree(ioc); |
386 | break; | 456 | break; |
387 | } | 457 | } |
458 | spi_dev_put(spi); | ||
388 | return retval; | 459 | return retval; |
389 | } | 460 | } |
390 | 461 | ||
@@ -488,6 +559,7 @@ static int spidev_probe(struct spi_device *spi) | |||
488 | 559 | ||
489 | /* Initialize the driver data */ | 560 | /* Initialize the driver data */ |
490 | spidev->spi = spi; | 561 | spidev->spi = spi; |
562 | spin_lock_init(&spidev->spi_lock); | ||
491 | mutex_init(&spidev->buf_lock); | 563 | mutex_init(&spidev->buf_lock); |
492 | 564 | ||
493 | INIT_LIST_HEAD(&spidev->device_entry); | 565 | INIT_LIST_HEAD(&spidev->device_entry); |
@@ -526,13 +598,17 @@ static int spidev_remove(struct spi_device *spi) | |||
526 | { | 598 | { |
527 | struct spidev_data *spidev = dev_get_drvdata(&spi->dev); | 599 | struct spidev_data *spidev = dev_get_drvdata(&spi->dev); |
528 | 600 | ||
529 | mutex_lock(&device_list_lock); | 601 | /* make sure ops on existing fds can abort cleanly */ |
602 | spin_lock_irq(&spidev->spi_lock); | ||
603 | spidev->spi = NULL; | ||
604 | spin_unlock_irq(&spidev->spi_lock); | ||
530 | 605 | ||
606 | /* prevent new opens */ | ||
607 | mutex_lock(&device_list_lock); | ||
531 | list_del(&spidev->device_entry); | 608 | list_del(&spidev->device_entry); |
532 | dev_set_drvdata(&spi->dev, NULL); | 609 | dev_set_drvdata(&spi->dev, NULL); |
533 | clear_bit(MINOR(spidev->dev.devt), minors); | 610 | clear_bit(MINOR(spidev->dev.devt), minors); |
534 | device_unregister(&spidev->dev); | 611 | device_unregister(&spidev->dev); |
535 | |||
536 | mutex_unlock(&device_list_lock); | 612 | mutex_unlock(&device_list_lock); |
537 | 613 | ||
538 | return 0; | 614 | return 0; |
diff --git a/drivers/ssb/driver_pcicore.c b/drivers/ssb/driver_pcicore.c index 75def13e797d..d28c53868093 100644 --- a/drivers/ssb/driver_pcicore.c +++ b/drivers/ssb/driver_pcicore.c | |||
@@ -537,12 +537,12 @@ int ssb_pcicore_dev_irqvecs_enable(struct ssb_pcicore *pc, | |||
537 | int err = 0; | 537 | int err = 0; |
538 | u32 tmp; | 538 | u32 tmp; |
539 | 539 | ||
540 | might_sleep(); | ||
541 | |||
542 | if (!pdev) | 540 | if (!pdev) |
543 | goto out; | 541 | goto out; |
544 | bus = pdev->bus; | 542 | bus = pdev->bus; |
545 | 543 | ||
544 | might_sleep_if(pdev->id.coreid != SSB_DEV_PCI); | ||
545 | |||
546 | /* Enable interrupts for this device. */ | 546 | /* Enable interrupts for this device. */ |
547 | if (bus->host_pci && | 547 | if (bus->host_pci && |
548 | ((pdev->id.revision >= 6) || (pdev->id.coreid == SSB_DEV_PCIE))) { | 548 | ((pdev->id.revision >= 6) || (pdev->id.coreid == SSB_DEV_PCIE))) { |
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c index 55cc7b80422a..0a12e90ad416 100644 --- a/drivers/uio/uio.c +++ b/drivers/uio/uio.c | |||
@@ -649,15 +649,14 @@ int __uio_register_device(struct module *owner, | |||
649 | if (ret) | 649 | if (ret) |
650 | goto err_get_minor; | 650 | goto err_get_minor; |
651 | 651 | ||
652 | idev->dev = device_create(uio_class->class, parent, | 652 | idev->dev = device_create_drvdata(uio_class->class, parent, |
653 | MKDEV(uio_major, idev->minor), | 653 | MKDEV(uio_major, idev->minor), idev, |
654 | "uio%d", idev->minor); | 654 | "uio%d", idev->minor); |
655 | if (IS_ERR(idev->dev)) { | 655 | if (IS_ERR(idev->dev)) { |
656 | printk(KERN_ERR "UIO: device register failed\n"); | 656 | printk(KERN_ERR "UIO: device register failed\n"); |
657 | ret = PTR_ERR(idev->dev); | 657 | ret = PTR_ERR(idev->dev); |
658 | goto err_device_create; | 658 | goto err_device_create; |
659 | } | 659 | } |
660 | dev_set_drvdata(idev->dev, idev); | ||
661 | 660 | ||
662 | ret = uio_dev_add_attributes(idev); | 661 | ret = uio_dev_add_attributes(idev); |
663 | if (ret) | 662 | if (ret) |
diff --git a/drivers/usb/class/Kconfig b/drivers/usb/class/Kconfig index 3a9102d2591b..66f17ed88cb5 100644 --- a/drivers/usb/class/Kconfig +++ b/drivers/usb/class/Kconfig | |||
@@ -29,3 +29,14 @@ config USB_PRINTER | |||
29 | To compile this driver as a module, choose M here: the | 29 | To compile this driver as a module, choose M here: the |
30 | module will be called usblp. | 30 | module will be called usblp. |
31 | 31 | ||
32 | config USB_WDM | ||
33 | tristate "USB Wireless Device Management support" | ||
34 | depends on USB | ||
35 | ---help--- | ||
36 | This driver supports the WMC Device Management functionality | ||
37 | of cell phones compliant to the CDC WMC specification. You can use | ||
38 | AT commands over this device. | ||
39 | |||
40 | To compile this driver as a module, choose M here: the | ||
41 | module will be called cdc-wdm. | ||
42 | |||
diff --git a/drivers/usb/class/Makefile b/drivers/usb/class/Makefile index cc391e6c2af8..535d59a30600 100644 --- a/drivers/usb/class/Makefile +++ b/drivers/usb/class/Makefile | |||
@@ -5,3 +5,4 @@ | |||
5 | 5 | ||
6 | obj-$(CONFIG_USB_ACM) += cdc-acm.o | 6 | obj-$(CONFIG_USB_ACM) += cdc-acm.o |
7 | obj-$(CONFIG_USB_PRINTER) += usblp.o | 7 | obj-$(CONFIG_USB_PRINTER) += usblp.o |
8 | obj-$(CONFIG_USB_WDM) += cdc-wdm.o | ||
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c new file mode 100644 index 000000000000..107666d4e2ec --- /dev/null +++ b/drivers/usb/class/cdc-wdm.c | |||
@@ -0,0 +1,740 @@ | |||
1 | /* | ||
2 | * cdc-wdm.c | ||
3 | * | ||
4 | * This driver supports USB CDC WCM Device Management. | ||
5 | * | ||
6 | * Copyright (c) 2007-2008 Oliver Neukum | ||
7 | * | ||
8 | * Some code taken from cdc-acm.c | ||
9 | * | ||
10 | * Released under the GPLv2. | ||
11 | * | ||
12 | * Many thanks to Carl Nordbeck | ||
13 | */ | ||
14 | #include <linux/kernel.h> | ||
15 | #include <linux/errno.h> | ||
16 | #include <linux/slab.h> | ||
17 | #include <linux/module.h> | ||
18 | #include <linux/smp_lock.h> | ||
19 | #include <linux/mutex.h> | ||
20 | #include <linux/uaccess.h> | ||
21 | #include <linux/bitops.h> | ||
22 | #include <linux/poll.h> | ||
23 | #include <linux/usb.h> | ||
24 | #include <linux/usb/cdc.h> | ||
25 | #include <asm/byteorder.h> | ||
26 | #include <asm/unaligned.h> | ||
27 | |||
28 | /* | ||
29 | * Version Information | ||
30 | */ | ||
31 | #define DRIVER_VERSION "v0.02" | ||
32 | #define DRIVER_AUTHOR "Oliver Neukum" | ||
33 | |||
34 | static struct usb_device_id wdm_ids[] = { | ||
35 | { | ||
36 | .match_flags = USB_DEVICE_ID_MATCH_INT_CLASS | | ||
37 | USB_DEVICE_ID_MATCH_INT_SUBCLASS, | ||
38 | .bInterfaceClass = USB_CLASS_COMM, | ||
39 | .bInterfaceSubClass = USB_CDC_SUBCLASS_DMM | ||
40 | }, | ||
41 | { } | ||
42 | }; | ||
43 | |||
44 | #define WDM_MINOR_BASE 176 | ||
45 | |||
46 | |||
47 | #define WDM_IN_USE 1 | ||
48 | #define WDM_DISCONNECTING 2 | ||
49 | #define WDM_RESULT 3 | ||
50 | #define WDM_READ 4 | ||
51 | #define WDM_INT_STALL 5 | ||
52 | #define WDM_POLL_RUNNING 6 | ||
53 | |||
54 | |||
55 | #define WDM_MAX 16 | ||
56 | |||
57 | |||
58 | static DEFINE_MUTEX(wdm_mutex); | ||
59 | |||
60 | /* --- method tables --- */ | ||
61 | |||
62 | struct wdm_device { | ||
63 | u8 *inbuf; /* buffer for response */ | ||
64 | u8 *outbuf; /* buffer for command */ | ||
65 | u8 *sbuf; /* buffer for status */ | ||
66 | u8 *ubuf; /* buffer for copy to user space */ | ||
67 | |||
68 | struct urb *command; | ||
69 | struct urb *response; | ||
70 | struct urb *validity; | ||
71 | struct usb_interface *intf; | ||
72 | struct usb_ctrlrequest *orq; | ||
73 | struct usb_ctrlrequest *irq; | ||
74 | spinlock_t iuspin; | ||
75 | |||
76 | unsigned long flags; | ||
77 | u16 bufsize; | ||
78 | u16 wMaxCommand; | ||
79 | u16 wMaxPacketSize; | ||
80 | u16 bMaxPacketSize0; | ||
81 | __le16 inum; | ||
82 | int reslength; | ||
83 | int length; | ||
84 | int read; | ||
85 | int count; | ||
86 | dma_addr_t shandle; | ||
87 | dma_addr_t ihandle; | ||
88 | struct mutex wlock; | ||
89 | struct mutex rlock; | ||
90 | wait_queue_head_t wait; | ||
91 | struct work_struct rxwork; | ||
92 | int werr; | ||
93 | int rerr; | ||
94 | }; | ||
95 | |||
96 | static struct usb_driver wdm_driver; | ||
97 | |||
98 | /* --- callbacks --- */ | ||
99 | static void wdm_out_callback(struct urb *urb) | ||
100 | { | ||
101 | struct wdm_device *desc; | ||
102 | desc = urb->context; | ||
103 | spin_lock(&desc->iuspin); | ||
104 | desc->werr = urb->status; | ||
105 | spin_unlock(&desc->iuspin); | ||
106 | clear_bit(WDM_IN_USE, &desc->flags); | ||
107 | kfree(desc->outbuf); | ||
108 | wake_up(&desc->wait); | ||
109 | } | ||
110 | |||
111 | static void wdm_in_callback(struct urb *urb) | ||
112 | { | ||
113 | struct wdm_device *desc = urb->context; | ||
114 | int status = urb->status; | ||
115 | |||
116 | spin_lock(&desc->iuspin); | ||
117 | |||
118 | if (status) { | ||
119 | switch (status) { | ||
120 | case -ENOENT: | ||
121 | dev_dbg(&desc->intf->dev, | ||
122 | "nonzero urb status received: -ENOENT"); | ||
123 | break; | ||
124 | case -ECONNRESET: | ||
125 | dev_dbg(&desc->intf->dev, | ||
126 | "nonzero urb status received: -ECONNRESET"); | ||
127 | break; | ||
128 | case -ESHUTDOWN: | ||
129 | dev_dbg(&desc->intf->dev, | ||
130 | "nonzero urb status received: -ESHUTDOWN"); | ||
131 | break; | ||
132 | case -EPIPE: | ||
133 | err("nonzero urb status received: -EPIPE"); | ||
134 | break; | ||
135 | default: | ||
136 | err("Unexpected error %d", status); | ||
137 | break; | ||
138 | } | ||
139 | } | ||
140 | |||
141 | desc->rerr = status; | ||
142 | desc->reslength = urb->actual_length; | ||
143 | memmove(desc->ubuf + desc->length, desc->inbuf, desc->reslength); | ||
144 | desc->length += desc->reslength; | ||
145 | wake_up(&desc->wait); | ||
146 | |||
147 | set_bit(WDM_READ, &desc->flags); | ||
148 | spin_unlock(&desc->iuspin); | ||
149 | } | ||
150 | |||
151 | static void wdm_int_callback(struct urb *urb) | ||
152 | { | ||
153 | int rv = 0; | ||
154 | int status = urb->status; | ||
155 | struct wdm_device *desc; | ||
156 | struct usb_ctrlrequest *req; | ||
157 | struct usb_cdc_notification *dr; | ||
158 | |||
159 | desc = urb->context; | ||
160 | req = desc->irq; | ||
161 | dr = (struct usb_cdc_notification *)desc->sbuf; | ||
162 | |||
163 | if (status) { | ||
164 | switch (status) { | ||
165 | case -ESHUTDOWN: | ||
166 | case -ENOENT: | ||
167 | case -ECONNRESET: | ||
168 | return; /* unplug */ | ||
169 | case -EPIPE: | ||
170 | set_bit(WDM_INT_STALL, &desc->flags); | ||
171 | err("Stall on int endpoint"); | ||
172 | goto sw; /* halt is cleared in work */ | ||
173 | default: | ||
174 | err("nonzero urb status received: %d", status); | ||
175 | break; | ||
176 | } | ||
177 | } | ||
178 | |||
179 | if (urb->actual_length < sizeof(struct usb_cdc_notification)) { | ||
180 | err("wdm_int_callback - %d bytes", urb->actual_length); | ||
181 | goto exit; | ||
182 | } | ||
183 | |||
184 | switch (dr->bNotificationType) { | ||
185 | case USB_CDC_NOTIFY_RESPONSE_AVAILABLE: | ||
186 | dev_dbg(&desc->intf->dev, | ||
187 | "NOTIFY_RESPONSE_AVAILABLE received: index %d len %d", | ||
188 | dr->wIndex, dr->wLength); | ||
189 | break; | ||
190 | |||
191 | case USB_CDC_NOTIFY_NETWORK_CONNECTION: | ||
192 | |||
193 | dev_dbg(&desc->intf->dev, | ||
194 | "NOTIFY_NETWORK_CONNECTION %s network", | ||
195 | dr->wValue ? "connected to" : "disconnected from"); | ||
196 | goto exit; | ||
197 | default: | ||
198 | clear_bit(WDM_POLL_RUNNING, &desc->flags); | ||
199 | err("unknown notification %d received: index %d len %d", | ||
200 | dr->bNotificationType, dr->wIndex, dr->wLength); | ||
201 | goto exit; | ||
202 | } | ||
203 | |||
204 | req->bRequestType = (USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE); | ||
205 | req->bRequest = USB_CDC_GET_ENCAPSULATED_RESPONSE; | ||
206 | req->wValue = 0; | ||
207 | req->wIndex = desc->inum; | ||
208 | req->wLength = cpu_to_le16(desc->bMaxPacketSize0); | ||
209 | |||
210 | usb_fill_control_urb( | ||
211 | desc->response, | ||
212 | interface_to_usbdev(desc->intf), | ||
213 | /* using common endpoint 0 */ | ||
214 | usb_rcvctrlpipe(interface_to_usbdev(desc->intf), 0), | ||
215 | (unsigned char *)req, | ||
216 | desc->inbuf, | ||
217 | desc->bMaxPacketSize0, | ||
218 | wdm_in_callback, | ||
219 | desc | ||
220 | ); | ||
221 | desc->response->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; | ||
222 | spin_lock(&desc->iuspin); | ||
223 | clear_bit(WDM_READ, &desc->flags); | ||
224 | if (!test_bit(WDM_DISCONNECTING, &desc->flags)) { | ||
225 | rv = usb_submit_urb(desc->response, GFP_ATOMIC); | ||
226 | dev_dbg(&desc->intf->dev, "%s: usb_submit_urb %d", | ||
227 | __func__, rv); | ||
228 | } | ||
229 | spin_unlock(&desc->iuspin); | ||
230 | if (rv < 0) { | ||
231 | if (rv == -EPERM) | ||
232 | return; | ||
233 | if (rv == -ENOMEM) { | ||
234 | sw: | ||
235 | rv = schedule_work(&desc->rxwork); | ||
236 | if (rv) | ||
237 | err("Cannot schedule work"); | ||
238 | } | ||
239 | } | ||
240 | exit: | ||
241 | rv = usb_submit_urb(urb, GFP_ATOMIC); | ||
242 | if (rv) | ||
243 | err("%s - usb_submit_urb failed with result %d", | ||
244 | __func__, rv); | ||
245 | |||
246 | } | ||
247 | |||
248 | static void kill_urbs(struct wdm_device *desc) | ||
249 | { | ||
250 | usb_kill_urb(desc->command); | ||
251 | usb_kill_urb(desc->validity); | ||
252 | usb_kill_urb(desc->response); | ||
253 | } | ||
254 | |||
255 | static void free_urbs(struct wdm_device *desc) | ||
256 | { | ||
257 | usb_free_urb(desc->validity); | ||
258 | usb_free_urb(desc->response); | ||
259 | usb_free_urb(desc->command); | ||
260 | } | ||
261 | |||
262 | static void cleanup(struct wdm_device *desc) | ||
263 | { | ||
264 | usb_buffer_free(interface_to_usbdev(desc->intf), | ||
265 | desc->wMaxPacketSize, | ||
266 | desc->sbuf, | ||
267 | desc->validity->transfer_dma); | ||
268 | usb_buffer_free(interface_to_usbdev(desc->intf), | ||
269 | desc->wMaxPacketSize, | ||
270 | desc->inbuf, | ||
271 | desc->response->transfer_dma); | ||
272 | kfree(desc->orq); | ||
273 | kfree(desc->irq); | ||
274 | kfree(desc->ubuf); | ||
275 | free_urbs(desc); | ||
276 | kfree(desc); | ||
277 | } | ||
278 | |||
279 | static ssize_t wdm_write | ||
280 | (struct file *file, const char __user *buffer, size_t count, loff_t *ppos) | ||
281 | { | ||
282 | u8 *buf; | ||
283 | int rv = -EMSGSIZE, r, we; | ||
284 | struct wdm_device *desc = file->private_data; | ||
285 | struct usb_ctrlrequest *req; | ||
286 | |||
287 | if (count > desc->wMaxCommand) | ||
288 | count = desc->wMaxCommand; | ||
289 | |||
290 | spin_lock_irq(&desc->iuspin); | ||
291 | we = desc->werr; | ||
292 | desc->werr = 0; | ||
293 | spin_unlock_irq(&desc->iuspin); | ||
294 | if (we < 0) | ||
295 | return -EIO; | ||
296 | |||
297 | r = mutex_lock_interruptible(&desc->wlock); /* concurrent writes */ | ||
298 | rv = -ERESTARTSYS; | ||
299 | if (r) | ||
300 | goto outnl; | ||
301 | |||
302 | r = wait_event_interruptible(desc->wait, !test_bit(WDM_IN_USE, | ||
303 | &desc->flags)); | ||
304 | if (r < 0) | ||
305 | goto out; | ||
306 | |||
307 | if (test_bit(WDM_DISCONNECTING, &desc->flags)) { | ||
308 | rv = -ENODEV; | ||
309 | goto out; | ||
310 | } | ||
311 | |||
312 | desc->outbuf = buf = kmalloc(count, GFP_KERNEL); | ||
313 | if (!buf) { | ||
314 | rv = -ENOMEM; | ||
315 | goto out; | ||
316 | } | ||
317 | |||
318 | r = copy_from_user(buf, buffer, count); | ||
319 | if (r > 0) { | ||
320 | kfree(buf); | ||
321 | rv = -EFAULT; | ||
322 | goto out; | ||
323 | } | ||
324 | |||
325 | req = desc->orq; | ||
326 | usb_fill_control_urb( | ||
327 | desc->command, | ||
328 | interface_to_usbdev(desc->intf), | ||
329 | /* using common endpoint 0 */ | ||
330 | usb_sndctrlpipe(interface_to_usbdev(desc->intf), 0), | ||
331 | (unsigned char *)req, | ||
332 | buf, | ||
333 | count, | ||
334 | wdm_out_callback, | ||
335 | desc | ||
336 | ); | ||
337 | |||
338 | req->bRequestType = (USB_DIR_OUT | USB_TYPE_CLASS | | ||
339 | USB_RECIP_INTERFACE); | ||
340 | req->bRequest = USB_CDC_SEND_ENCAPSULATED_COMMAND; | ||
341 | req->wValue = 0; | ||
342 | req->wIndex = desc->inum; | ||
343 | req->wLength = cpu_to_le16(count); | ||
344 | set_bit(WDM_IN_USE, &desc->flags); | ||
345 | |||
346 | rv = usb_submit_urb(desc->command, GFP_KERNEL); | ||
347 | if (rv < 0) { | ||
348 | kfree(buf); | ||
349 | clear_bit(WDM_IN_USE, &desc->flags); | ||
350 | } else { | ||
351 | dev_dbg(&desc->intf->dev, "Tx URB has been submitted index=%d", | ||
352 | req->wIndex); | ||
353 | } | ||
354 | out: | ||
355 | mutex_unlock(&desc->wlock); | ||
356 | outnl: | ||
357 | return rv < 0 ? rv : count; | ||
358 | } | ||
359 | |||
360 | static ssize_t wdm_read | ||
361 | (struct file *file, char __user *buffer, size_t count, loff_t *ppos) | ||
362 | { | ||
363 | int rv, cntr; | ||
364 | int i = 0; | ||
365 | struct wdm_device *desc = file->private_data; | ||
366 | |||
367 | |||
368 | rv = mutex_lock_interruptible(&desc->rlock); /*concurrent reads */ | ||
369 | if (rv < 0) | ||
370 | return -ERESTARTSYS; | ||
371 | |||
372 | if (desc->length == 0) { | ||
373 | desc->read = 0; | ||
374 | retry: | ||
375 | i++; | ||
376 | rv = wait_event_interruptible(desc->wait, | ||
377 | test_bit(WDM_READ, &desc->flags)); | ||
378 | |||
379 | if (rv < 0) { | ||
380 | rv = -ERESTARTSYS; | ||
381 | goto err; | ||
382 | } | ||
383 | |||
384 | spin_lock_irq(&desc->iuspin); | ||
385 | |||
386 | if (desc->rerr) { /* read completed, error happened */ | ||
387 | int t = desc->rerr; | ||
388 | desc->rerr = 0; | ||
389 | spin_unlock_irq(&desc->iuspin); | ||
390 | err("reading had resulted in %d", t); | ||
391 | rv = -EIO; | ||
392 | goto err; | ||
393 | } | ||
394 | /* | ||
395 | * recheck whether we've lost the race | ||
396 | * against the completion handler | ||
397 | */ | ||
398 | if (!test_bit(WDM_READ, &desc->flags)) { /* lost race */ | ||
399 | spin_unlock_irq(&desc->iuspin); | ||
400 | goto retry; | ||
401 | } | ||
402 | if (!desc->reslength) { /* zero length read */ | ||
403 | spin_unlock_irq(&desc->iuspin); | ||
404 | goto retry; | ||
405 | } | ||
406 | clear_bit(WDM_READ, &desc->flags); | ||
407 | spin_unlock_irq(&desc->iuspin); | ||
408 | } | ||
409 | |||
410 | cntr = count > desc->length ? desc->length : count; | ||
411 | rv = copy_to_user(buffer, desc->ubuf, cntr); | ||
412 | if (rv > 0) { | ||
413 | rv = -EFAULT; | ||
414 | goto err; | ||
415 | } | ||
416 | |||
417 | for (i = 0; i < desc->length - cntr; i++) | ||
418 | desc->ubuf[i] = desc->ubuf[i + cntr]; | ||
419 | |||
420 | desc->length -= cntr; | ||
421 | rv = cntr; | ||
422 | |||
423 | err: | ||
424 | mutex_unlock(&desc->rlock); | ||
425 | if (rv < 0) | ||
426 | err("wdm_read: exit error"); | ||
427 | return rv; | ||
428 | } | ||
429 | |||
430 | static int wdm_flush(struct file *file, fl_owner_t id) | ||
431 | { | ||
432 | struct wdm_device *desc = file->private_data; | ||
433 | |||
434 | wait_event(desc->wait, !test_bit(WDM_IN_USE, &desc->flags)); | ||
435 | if (desc->werr < 0) | ||
436 | err("Error in flush path: %d", desc->werr); | ||
437 | |||
438 | return desc->werr; | ||
439 | } | ||
440 | |||
441 | static unsigned int wdm_poll(struct file *file, struct poll_table_struct *wait) | ||
442 | { | ||
443 | struct wdm_device *desc = file->private_data; | ||
444 | unsigned long flags; | ||
445 | unsigned int mask = 0; | ||
446 | |||
447 | spin_lock_irqsave(&desc->iuspin, flags); | ||
448 | if (test_bit(WDM_DISCONNECTING, &desc->flags)) { | ||
449 | mask = POLLERR; | ||
450 | spin_unlock_irqrestore(&desc->iuspin, flags); | ||
451 | goto desc_out; | ||
452 | } | ||
453 | if (test_bit(WDM_READ, &desc->flags)) | ||
454 | mask = POLLIN | POLLRDNORM; | ||
455 | if (desc->rerr || desc->werr) | ||
456 | mask |= POLLERR; | ||
457 | if (!test_bit(WDM_IN_USE, &desc->flags)) | ||
458 | mask |= POLLOUT | POLLWRNORM; | ||
459 | spin_unlock_irqrestore(&desc->iuspin, flags); | ||
460 | |||
461 | poll_wait(file, &desc->wait, wait); | ||
462 | |||
463 | desc_out: | ||
464 | return mask; | ||
465 | } | ||
466 | |||
467 | static int wdm_open(struct inode *inode, struct file *file) | ||
468 | { | ||
469 | int minor = iminor(inode); | ||
470 | int rv = -ENODEV; | ||
471 | struct usb_interface *intf; | ||
472 | struct wdm_device *desc; | ||
473 | |||
474 | mutex_lock(&wdm_mutex); | ||
475 | intf = usb_find_interface(&wdm_driver, minor); | ||
476 | if (!intf) | ||
477 | goto out; | ||
478 | |||
479 | desc = usb_get_intfdata(intf); | ||
480 | if (test_bit(WDM_DISCONNECTING, &desc->flags)) | ||
481 | goto out; | ||
482 | |||
483 | desc->count++; | ||
484 | file->private_data = desc; | ||
485 | |||
486 | rv = usb_submit_urb(desc->validity, GFP_KERNEL); | ||
487 | |||
488 | if (rv < 0) { | ||
489 | desc->count--; | ||
490 | err("Error submitting int urb - %d", rv); | ||
491 | goto out; | ||
492 | } | ||
493 | rv = 0; | ||
494 | |||
495 | out: | ||
496 | mutex_unlock(&wdm_mutex); | ||
497 | return rv; | ||
498 | } | ||
499 | |||
500 | static int wdm_release(struct inode *inode, struct file *file) | ||
501 | { | ||
502 | struct wdm_device *desc = file->private_data; | ||
503 | |||
504 | mutex_lock(&wdm_mutex); | ||
505 | desc->count--; | ||
506 | if (!desc->count) { | ||
507 | dev_dbg(&desc->intf->dev, "wdm_release: cleanup"); | ||
508 | kill_urbs(desc); | ||
509 | } | ||
510 | mutex_unlock(&wdm_mutex); | ||
511 | return 0; | ||
512 | } | ||
513 | |||
514 | static const struct file_operations wdm_fops = { | ||
515 | .owner = THIS_MODULE, | ||
516 | .read = wdm_read, | ||
517 | .write = wdm_write, | ||
518 | .open = wdm_open, | ||
519 | .flush = wdm_flush, | ||
520 | .release = wdm_release, | ||
521 | .poll = wdm_poll | ||
522 | }; | ||
523 | |||
524 | static struct usb_class_driver wdm_class = { | ||
525 | .name = "cdc-wdm%d", | ||
526 | .fops = &wdm_fops, | ||
527 | .minor_base = WDM_MINOR_BASE, | ||
528 | }; | ||
529 | |||
530 | /* --- error handling --- */ | ||
531 | static void wdm_rxwork(struct work_struct *work) | ||
532 | { | ||
533 | struct wdm_device *desc = container_of(work, struct wdm_device, rxwork); | ||
534 | unsigned long flags; | ||
535 | int rv; | ||
536 | |||
537 | spin_lock_irqsave(&desc->iuspin, flags); | ||
538 | if (test_bit(WDM_DISCONNECTING, &desc->flags)) { | ||
539 | spin_unlock_irqrestore(&desc->iuspin, flags); | ||
540 | } else { | ||
541 | spin_unlock_irqrestore(&desc->iuspin, flags); | ||
542 | rv = usb_submit_urb(desc->response, GFP_KERNEL); | ||
543 | if (rv < 0 && rv != -EPERM) { | ||
544 | spin_lock_irqsave(&desc->iuspin, flags); | ||
545 | if (!test_bit(WDM_DISCONNECTING, &desc->flags)) | ||
546 | schedule_work(&desc->rxwork); | ||
547 | spin_unlock_irqrestore(&desc->iuspin, flags); | ||
548 | } | ||
549 | } | ||
550 | } | ||
551 | |||
552 | /* --- hotplug --- */ | ||
553 | |||
554 | static int wdm_probe(struct usb_interface *intf, const struct usb_device_id *id) | ||
555 | { | ||
556 | int rv = -EINVAL; | ||
557 | struct usb_device *udev = interface_to_usbdev(intf); | ||
558 | struct wdm_device *desc; | ||
559 | struct usb_host_interface *iface; | ||
560 | struct usb_endpoint_descriptor *ep; | ||
561 | struct usb_cdc_dmm_desc *dmhd; | ||
562 | u8 *buffer = intf->altsetting->extra; | ||
563 | int buflen = intf->altsetting->extralen; | ||
564 | u16 maxcom = 0; | ||
565 | |||
566 | if (!buffer) | ||
567 | goto out; | ||
568 | |||
569 | while (buflen > 0) { | ||
570 | if (buffer [1] != USB_DT_CS_INTERFACE) { | ||
571 | err("skipping garbage"); | ||
572 | goto next_desc; | ||
573 | } | ||
574 | |||
575 | switch (buffer [2]) { | ||
576 | case USB_CDC_HEADER_TYPE: | ||
577 | break; | ||
578 | case USB_CDC_DMM_TYPE: | ||
579 | dmhd = (struct usb_cdc_dmm_desc *)buffer; | ||
580 | maxcom = le16_to_cpu(dmhd->wMaxCommand); | ||
581 | dev_dbg(&intf->dev, | ||
582 | "Finding maximum buffer length: %d", maxcom); | ||
583 | break; | ||
584 | default: | ||
585 | err("Ignoring extra header, type %d, length %d", | ||
586 | buffer[2], buffer[0]); | ||
587 | break; | ||
588 | } | ||
589 | next_desc: | ||
590 | buflen -= buffer[0]; | ||
591 | buffer += buffer[0]; | ||
592 | } | ||
593 | |||
594 | rv = -ENOMEM; | ||
595 | desc = kzalloc(sizeof(struct wdm_device), GFP_KERNEL); | ||
596 | if (!desc) | ||
597 | goto out; | ||
598 | mutex_init(&desc->wlock); | ||
599 | mutex_init(&desc->rlock); | ||
600 | spin_lock_init(&desc->iuspin); | ||
601 | init_waitqueue_head(&desc->wait); | ||
602 | desc->wMaxCommand = maxcom; | ||
603 | desc->inum = cpu_to_le16((u16)intf->cur_altsetting->desc.bInterfaceNumber); | ||
604 | desc->intf = intf; | ||
605 | INIT_WORK(&desc->rxwork, wdm_rxwork); | ||
606 | |||
607 | iface = &intf->altsetting[0]; | ||
608 | ep = &iface->endpoint[0].desc; | ||
609 | if (!usb_endpoint_is_int_in(ep)) { | ||
610 | rv = -EINVAL; | ||
611 | goto err; | ||
612 | } | ||
613 | |||
614 | desc->wMaxPacketSize = ep->wMaxPacketSize; | ||
615 | desc->bMaxPacketSize0 = cpu_to_le16(udev->descriptor.bMaxPacketSize0); | ||
616 | |||
617 | desc->orq = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL); | ||
618 | if (!desc->orq) | ||
619 | goto err; | ||
620 | desc->irq = kmalloc(sizeof(struct usb_ctrlrequest), GFP_KERNEL); | ||
621 | if (!desc->irq) | ||
622 | goto err; | ||
623 | |||
624 | desc->validity = usb_alloc_urb(0, GFP_KERNEL); | ||
625 | if (!desc->validity) | ||
626 | goto err; | ||
627 | |||
628 | desc->response = usb_alloc_urb(0, GFP_KERNEL); | ||
629 | if (!desc->response) | ||
630 | goto err; | ||
631 | |||
632 | desc->command = usb_alloc_urb(0, GFP_KERNEL); | ||
633 | if (!desc->command) | ||
634 | goto err; | ||
635 | |||
636 | desc->ubuf = kmalloc(desc->wMaxCommand, GFP_KERNEL); | ||
637 | if (!desc->ubuf) | ||
638 | goto err; | ||
639 | |||
640 | desc->sbuf = usb_buffer_alloc(interface_to_usbdev(intf), | ||
641 | desc->wMaxPacketSize, | ||
642 | GFP_KERNEL, | ||
643 | &desc->validity->transfer_dma); | ||
644 | if (!desc->sbuf) | ||
645 | goto err; | ||
646 | |||
647 | desc->inbuf = usb_buffer_alloc(interface_to_usbdev(intf), | ||
648 | desc->bMaxPacketSize0, | ||
649 | GFP_KERNEL, | ||
650 | &desc->response->transfer_dma); | ||
651 | if (!desc->inbuf) | ||
652 | goto err2; | ||
653 | |||
654 | usb_fill_int_urb( | ||
655 | desc->validity, | ||
656 | interface_to_usbdev(intf), | ||
657 | usb_rcvintpipe(interface_to_usbdev(intf), ep->bEndpointAddress), | ||
658 | desc->sbuf, | ||
659 | desc->wMaxPacketSize, | ||
660 | wdm_int_callback, | ||
661 | desc, | ||
662 | ep->bInterval | ||
663 | ); | ||
664 | desc->validity->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; | ||
665 | |||
666 | usb_set_intfdata(intf, desc); | ||
667 | rv = usb_register_dev(intf, &wdm_class); | ||
668 | dev_info(&intf->dev, "cdc-wdm%d: USB WDM device\n", | ||
669 | intf->minor - WDM_MINOR_BASE); | ||
670 | if (rv < 0) | ||
671 | goto err; | ||
672 | out: | ||
673 | return rv; | ||
674 | err2: | ||
675 | usb_buffer_free(interface_to_usbdev(desc->intf), | ||
676 | desc->wMaxPacketSize, | ||
677 | desc->sbuf, | ||
678 | desc->validity->transfer_dma); | ||
679 | err: | ||
680 | free_urbs(desc); | ||
681 | kfree(desc->ubuf); | ||
682 | kfree(desc->orq); | ||
683 | kfree(desc->irq); | ||
684 | kfree(desc); | ||
685 | return rv; | ||
686 | } | ||
687 | |||
688 | static void wdm_disconnect(struct usb_interface *intf) | ||
689 | { | ||
690 | struct wdm_device *desc; | ||
691 | unsigned long flags; | ||
692 | |||
693 | usb_deregister_dev(intf, &wdm_class); | ||
694 | mutex_lock(&wdm_mutex); | ||
695 | desc = usb_get_intfdata(intf); | ||
696 | |||
697 | /* the spinlock makes sure no new urbs are generated in the callbacks */ | ||
698 | spin_lock_irqsave(&desc->iuspin, flags); | ||
699 | set_bit(WDM_DISCONNECTING, &desc->flags); | ||
700 | set_bit(WDM_READ, &desc->flags); | ||
701 | clear_bit(WDM_IN_USE, &desc->flags); | ||
702 | spin_unlock_irqrestore(&desc->iuspin, flags); | ||
703 | cancel_work_sync(&desc->rxwork); | ||
704 | kill_urbs(desc); | ||
705 | wake_up_all(&desc->wait); | ||
706 | if (!desc->count) | ||
707 | cleanup(desc); | ||
708 | mutex_unlock(&wdm_mutex); | ||
709 | } | ||
710 | |||
711 | static struct usb_driver wdm_driver = { | ||
712 | .name = "cdc_wdm", | ||
713 | .probe = wdm_probe, | ||
714 | .disconnect = wdm_disconnect, | ||
715 | .id_table = wdm_ids, | ||
716 | }; | ||
717 | |||
718 | /* --- low level module stuff --- */ | ||
719 | |||
720 | static int __init wdm_init(void) | ||
721 | { | ||
722 | int rv; | ||
723 | |||
724 | rv = usb_register(&wdm_driver); | ||
725 | |||
726 | return rv; | ||
727 | } | ||
728 | |||
729 | static void __exit wdm_exit(void) | ||
730 | { | ||
731 | usb_deregister(&wdm_driver); | ||
732 | } | ||
733 | |||
734 | module_init(wdm_init); | ||
735 | module_exit(wdm_exit); | ||
736 | |||
737 | MODULE_AUTHOR(DRIVER_AUTHOR); | ||
738 | MODULE_DESCRIPTION("USB Abstract Control Model driver for " | ||
739 | "USB WCM Device Management"); | ||
740 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c index c1cb94e9f242..7e912f21fd36 100644 --- a/drivers/usb/core/generic.c +++ b/drivers/usb/core/generic.c | |||
@@ -155,9 +155,6 @@ static int generic_probe(struct usb_device *udev) | |||
155 | { | 155 | { |
156 | int err, c; | 156 | int err, c; |
157 | 157 | ||
158 | /* put device-specific files into sysfs */ | ||
159 | usb_create_sysfs_dev_files(udev); | ||
160 | |||
161 | /* Choose and set the configuration. This registers the interfaces | 158 | /* Choose and set the configuration. This registers the interfaces |
162 | * with the driver core and lets interface drivers bind to them. | 159 | * with the driver core and lets interface drivers bind to them. |
163 | */ | 160 | */ |
@@ -189,8 +186,6 @@ static void generic_disconnect(struct usb_device *udev) | |||
189 | * unconfigure the device */ | 186 | * unconfigure the device */ |
190 | if (udev->actconfig) | 187 | if (udev->actconfig) |
191 | usb_set_configuration(udev, -1); | 188 | usb_set_configuration(udev, -1); |
192 | |||
193 | usb_remove_sysfs_dev_files(udev); | ||
194 | } | 189 | } |
195 | 190 | ||
196 | #ifdef CONFIG_PM | 191 | #ifdef CONFIG_PM |
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index bf10e9c4195e..09a53e7f3327 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c | |||
@@ -818,12 +818,12 @@ static int usb_register_bus(struct usb_bus *bus) | |||
818 | set_bit (busnum, busmap.busmap); | 818 | set_bit (busnum, busmap.busmap); |
819 | bus->busnum = busnum; | 819 | bus->busnum = busnum; |
820 | 820 | ||
821 | bus->dev = device_create(usb_host_class, bus->controller, MKDEV(0, 0), | 821 | bus->dev = device_create_drvdata(usb_host_class, bus->controller, |
822 | "usb_host%d", busnum); | 822 | MKDEV(0, 0), bus, |
823 | "usb_host%d", busnum); | ||
823 | result = PTR_ERR(bus->dev); | 824 | result = PTR_ERR(bus->dev); |
824 | if (IS_ERR(bus->dev)) | 825 | if (IS_ERR(bus->dev)) |
825 | goto error_create_class_dev; | 826 | goto error_create_class_dev; |
826 | dev_set_drvdata(bus->dev, bus); | ||
827 | 827 | ||
828 | /* Add it to the local list of buses */ | 828 | /* Add it to the local list of buses */ |
829 | list_add (&bus->bus_list, &usb_bus_list); | 829 | list_add (&bus->bus_list, &usb_bus_list); |
diff --git a/drivers/usb/core/hcd.h b/drivers/usb/core/hcd.h index 1e4b81e9eb50..a0bf5df6cb6f 100644 --- a/drivers/usb/core/hcd.h +++ b/drivers/usb/core/hcd.h | |||
@@ -213,6 +213,8 @@ struct hc_driver { | |||
213 | 213 | ||
214 | /* force handover of high-speed port to full-speed companion */ | 214 | /* force handover of high-speed port to full-speed companion */ |
215 | void (*relinquish_port)(struct usb_hcd *, int); | 215 | void (*relinquish_port)(struct usb_hcd *, int); |
216 | /* has a port been handed over to a companion? */ | ||
217 | int (*port_handed_over)(struct usb_hcd *, int); | ||
216 | }; | 218 | }; |
217 | 219 | ||
218 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); | 220 | extern int usb_hcd_link_urb_to_ep(struct usb_hcd *hcd, struct urb *urb); |
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index eb57fcc701d7..8eb4da332f56 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c | |||
@@ -1326,6 +1326,12 @@ void usb_disconnect(struct usb_device **pdev) | |||
1326 | 1326 | ||
1327 | usb_unlock_device(udev); | 1327 | usb_unlock_device(udev); |
1328 | 1328 | ||
1329 | /* Remove the device-specific files from sysfs. This must be | ||
1330 | * done with udev unlocked, because some of the attribute | ||
1331 | * routines try to acquire the device lock. | ||
1332 | */ | ||
1333 | usb_remove_sysfs_dev_files(udev); | ||
1334 | |||
1329 | /* Unregister the device. The device driver is responsible | 1335 | /* Unregister the device. The device driver is responsible |
1330 | * for removing the device files from usbfs and sysfs and for | 1336 | * for removing the device files from usbfs and sysfs and for |
1331 | * de-configuring the device. | 1337 | * de-configuring the device. |
@@ -1541,6 +1547,9 @@ int usb_new_device(struct usb_device *udev) | |||
1541 | goto fail; | 1547 | goto fail; |
1542 | } | 1548 | } |
1543 | 1549 | ||
1550 | /* put device-specific files into sysfs */ | ||
1551 | usb_create_sysfs_dev_files(udev); | ||
1552 | |||
1544 | /* Tell the world! */ | 1553 | /* Tell the world! */ |
1545 | announce_device(udev); | 1554 | announce_device(udev); |
1546 | return err; | 1555 | return err; |
@@ -2744,7 +2753,11 @@ loop: | |||
2744 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) | 2753 | if ((status == -ENOTCONN) || (status == -ENOTSUPP)) |
2745 | break; | 2754 | break; |
2746 | } | 2755 | } |
2747 | dev_err(hub_dev, "unable to enumerate USB device on port %d\n", port1); | 2756 | if (hub->hdev->parent || |
2757 | !hcd->driver->port_handed_over || | ||
2758 | !(hcd->driver->port_handed_over)(hcd, port1)) | ||
2759 | dev_err(hub_dev, "unable to enumerate USB device on port %d\n", | ||
2760 | port1); | ||
2748 | 2761 | ||
2749 | done: | 2762 | done: |
2750 | hub_port_disable(hub, port1, 1); | 2763 | hub_port_disable(hub, port1, 1); |
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c index 2e2019390290..3da1ab4b389d 100644 --- a/drivers/usb/core/quirks.c +++ b/drivers/usb/core/quirks.c | |||
@@ -47,6 +47,10 @@ static const struct usb_device_id usb_quirk_list[] = { | |||
47 | /* Edirol SD-20 */ | 47 | /* Edirol SD-20 */ |
48 | { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME }, | 48 | { USB_DEVICE(0x0582, 0x0027), .driver_info = USB_QUIRK_RESET_RESUME }, |
49 | 49 | ||
50 | /* Avision AV600U */ | ||
51 | { USB_DEVICE(0x0638, 0x0a13), .driver_info = | ||
52 | USB_QUIRK_STRING_FETCH_255 }, | ||
53 | |||
50 | /* M-Systems Flash Disk Pioneers */ | 54 | /* M-Systems Flash Disk Pioneers */ |
51 | { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, | 55 | { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME }, |
52 | 56 | ||
diff --git a/drivers/usb/core/sysfs.c b/drivers/usb/core/sysfs.c index c783cb111847..5e1f5d55bf04 100644 --- a/drivers/usb/core/sysfs.c +++ b/drivers/usb/core/sysfs.c | |||
@@ -588,35 +588,33 @@ read_descriptors(struct kobject *kobj, struct bin_attribute *attr, | |||
588 | container_of(kobj, struct device, kobj)); | 588 | container_of(kobj, struct device, kobj)); |
589 | size_t nleft = count; | 589 | size_t nleft = count; |
590 | size_t srclen, n; | 590 | size_t srclen, n; |
591 | int cfgno; | ||
592 | void *src; | ||
591 | 593 | ||
592 | usb_lock_device(udev); | 594 | /* The binary attribute begins with the device descriptor. |
593 | 595 | * Following that are the raw descriptor entries for all the | |
594 | /* The binary attribute begins with the device descriptor */ | 596 | * configurations (config plus subsidiary descriptors). |
595 | srclen = sizeof(struct usb_device_descriptor); | ||
596 | if (off < srclen) { | ||
597 | n = min_t(size_t, nleft, srclen - off); | ||
598 | memcpy(buf, off + (char *) &udev->descriptor, n); | ||
599 | nleft -= n; | ||
600 | buf += n; | ||
601 | off = 0; | ||
602 | } else { | ||
603 | off -= srclen; | ||
604 | } | ||
605 | |||
606 | /* Then follows the raw descriptor entry for the current | ||
607 | * configuration (config plus subsidiary descriptors). | ||
608 | */ | 597 | */ |
609 | if (udev->actconfig) { | 598 | for (cfgno = -1; cfgno < udev->descriptor.bNumConfigurations && |
610 | int cfgno = udev->actconfig - udev->config; | 599 | nleft > 0; ++cfgno) { |
611 | 600 | if (cfgno < 0) { | |
612 | srclen = __le16_to_cpu(udev->actconfig->desc.wTotalLength); | 601 | src = &udev->descriptor; |
602 | srclen = sizeof(struct usb_device_descriptor); | ||
603 | } else { | ||
604 | src = udev->rawdescriptors[cfgno]; | ||
605 | srclen = __le16_to_cpu(udev->config[cfgno].desc. | ||
606 | wTotalLength); | ||
607 | } | ||
613 | if (off < srclen) { | 608 | if (off < srclen) { |
614 | n = min_t(size_t, nleft, srclen - off); | 609 | n = min(nleft, srclen - (size_t) off); |
615 | memcpy(buf, off + udev->rawdescriptors[cfgno], n); | 610 | memcpy(buf, src + off, n); |
616 | nleft -= n; | 611 | nleft -= n; |
612 | buf += n; | ||
613 | off = 0; | ||
614 | } else { | ||
615 | off -= srclen; | ||
617 | } | 616 | } |
618 | } | 617 | } |
619 | usb_unlock_device(udev); | ||
620 | return count - nleft; | 618 | return count - nleft; |
621 | } | 619 | } |
622 | 620 | ||
diff --git a/drivers/usb/gadget/fsl_usb2_udc.c b/drivers/usb/gadget/fsl_usb2_udc.c index 651b82701394..18687543d7fa 100644 --- a/drivers/usb/gadget/fsl_usb2_udc.c +++ b/drivers/usb/gadget/fsl_usb2_udc.c | |||
@@ -1627,7 +1627,9 @@ static int reset_queues(struct fsl_udc *udc) | |||
1627 | udc_reset_ep_queue(udc, pipe); | 1627 | udc_reset_ep_queue(udc, pipe); |
1628 | 1628 | ||
1629 | /* report disconnect; the driver is already quiesced */ | 1629 | /* report disconnect; the driver is already quiesced */ |
1630 | spin_unlock(&udc->lock); | ||
1630 | udc->driver->disconnect(&udc->gadget); | 1631 | udc->driver->disconnect(&udc->gadget); |
1632 | spin_lock(&udc->lock); | ||
1631 | 1633 | ||
1632 | return 0; | 1634 | return 0; |
1633 | } | 1635 | } |
diff --git a/drivers/usb/gadget/pxa27x_udc.c b/drivers/usb/gadget/pxa27x_udc.c index 499b7a23f351..e02bfd4df3a6 100644 --- a/drivers/usb/gadget/pxa27x_udc.c +++ b/drivers/usb/gadget/pxa27x_udc.c | |||
@@ -1526,7 +1526,8 @@ static void udc_disable(struct pxa_udc *udc) | |||
1526 | 1526 | ||
1527 | ep0_idle(udc); | 1527 | ep0_idle(udc); |
1528 | udc->gadget.speed = USB_SPEED_UNKNOWN; | 1528 | udc->gadget.speed = USB_SPEED_UNKNOWN; |
1529 | udc->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT); | 1529 | if (udc->mach->udc_command) |
1530 | udc->mach->udc_command(PXA2XX_UDC_CMD_DISCONNECT); | ||
1530 | } | 1531 | } |
1531 | 1532 | ||
1532 | /** | 1533 | /** |
diff --git a/drivers/usb/host/ehci-au1xxx.c b/drivers/usb/host/ehci-au1xxx.c index 8b5f991e949c..08a4335401a9 100644 --- a/drivers/usb/host/ehci-au1xxx.c +++ b/drivers/usb/host/ehci-au1xxx.c | |||
@@ -223,6 +223,7 @@ static const struct hc_driver ehci_au1xxx_hc_driver = { | |||
223 | .bus_suspend = ehci_bus_suspend, | 223 | .bus_suspend = ehci_bus_suspend, |
224 | .bus_resume = ehci_bus_resume, | 224 | .bus_resume = ehci_bus_resume, |
225 | .relinquish_port = ehci_relinquish_port, | 225 | .relinquish_port = ehci_relinquish_port, |
226 | .port_handed_over = ehci_port_handed_over, | ||
226 | }; | 227 | }; |
227 | 228 | ||
228 | /*-------------------------------------------------------------------------*/ | 229 | /*-------------------------------------------------------------------------*/ |
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c index 6d9bed6c1f48..7370d6187c64 100644 --- a/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c | |||
@@ -269,7 +269,7 @@ static int ehci_fsl_setup(struct usb_hcd *hcd) | |||
269 | if (retval) | 269 | if (retval) |
270 | return retval; | 270 | return retval; |
271 | 271 | ||
272 | ehci->is_tdi_rh_tt = 1; | 272 | hcd->has_tt = 1; |
273 | 273 | ||
274 | ehci->sbrn = 0x20; | 274 | ehci->sbrn = 0x20; |
275 | 275 | ||
@@ -295,10 +295,6 @@ static const struct hc_driver ehci_fsl_hc_driver = { | |||
295 | */ | 295 | */ |
296 | .reset = ehci_fsl_setup, | 296 | .reset = ehci_fsl_setup, |
297 | .start = ehci_run, | 297 | .start = ehci_run, |
298 | #ifdef CONFIG_PM | ||
299 | .suspend = ehci_bus_suspend, | ||
300 | .resume = ehci_bus_resume, | ||
301 | #endif | ||
302 | .stop = ehci_stop, | 298 | .stop = ehci_stop, |
303 | .shutdown = ehci_shutdown, | 299 | .shutdown = ehci_shutdown, |
304 | 300 | ||
@@ -322,6 +318,7 @@ static const struct hc_driver ehci_fsl_hc_driver = { | |||
322 | .bus_suspend = ehci_bus_suspend, | 318 | .bus_suspend = ehci_bus_suspend, |
323 | .bus_resume = ehci_bus_resume, | 319 | .bus_resume = ehci_bus_resume, |
324 | .relinquish_port = ehci_relinquish_port, | 320 | .relinquish_port = ehci_relinquish_port, |
321 | .port_handed_over = ehci_port_handed_over, | ||
325 | }; | 322 | }; |
326 | 323 | ||
327 | static int ehci_fsl_drv_probe(struct platform_device *pdev) | 324 | static int ehci_fsl_drv_probe(struct platform_device *pdev) |
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c index 382587c4457c..740835bb8575 100644 --- a/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c | |||
@@ -609,7 +609,7 @@ static int ehci_hub_control ( | |||
609 | } | 609 | } |
610 | break; | 610 | break; |
611 | case USB_PORT_FEAT_C_SUSPEND: | 611 | case USB_PORT_FEAT_C_SUSPEND: |
612 | /* we auto-clear this feature */ | 612 | clear_bit(wIndex, &ehci->port_c_suspend); |
613 | break; | 613 | break; |
614 | case USB_PORT_FEAT_POWER: | 614 | case USB_PORT_FEAT_POWER: |
615 | if (HCS_PPC (ehci->hcs_params)) | 615 | if (HCS_PPC (ehci->hcs_params)) |
@@ -688,7 +688,7 @@ static int ehci_hub_control ( | |||
688 | /* resume completed? */ | 688 | /* resume completed? */ |
689 | else if (time_after_eq(jiffies, | 689 | else if (time_after_eq(jiffies, |
690 | ehci->reset_done[wIndex])) { | 690 | ehci->reset_done[wIndex])) { |
691 | status |= 1 << USB_PORT_FEAT_C_SUSPEND; | 691 | set_bit(wIndex, &ehci->port_c_suspend); |
692 | ehci->reset_done[wIndex] = 0; | 692 | ehci->reset_done[wIndex] = 0; |
693 | 693 | ||
694 | /* stop resume signaling */ | 694 | /* stop resume signaling */ |
@@ -765,6 +765,8 @@ static int ehci_hub_control ( | |||
765 | status |= 1 << USB_PORT_FEAT_RESET; | 765 | status |= 1 << USB_PORT_FEAT_RESET; |
766 | if (temp & PORT_POWER) | 766 | if (temp & PORT_POWER) |
767 | status |= 1 << USB_PORT_FEAT_POWER; | 767 | status |= 1 << USB_PORT_FEAT_POWER; |
768 | if (test_bit(wIndex, &ehci->port_c_suspend)) | ||
769 | status |= 1 << USB_PORT_FEAT_C_SUSPEND; | ||
768 | 770 | ||
769 | #ifndef VERBOSE_DEBUG | 771 | #ifndef VERBOSE_DEBUG |
770 | if (status & ~0xffff) /* only if wPortChange is interesting */ | 772 | if (status & ~0xffff) /* only if wPortChange is interesting */ |
@@ -875,3 +877,13 @@ static void ehci_relinquish_port(struct usb_hcd *hcd, int portnum) | |||
875 | set_owner(ehci, --portnum, PORT_OWNER); | 877 | set_owner(ehci, --portnum, PORT_OWNER); |
876 | } | 878 | } |
877 | 879 | ||
880 | static int ehci_port_handed_over(struct usb_hcd *hcd, int portnum) | ||
881 | { | ||
882 | struct ehci_hcd *ehci = hcd_to_ehci(hcd); | ||
883 | u32 __iomem *reg; | ||
884 | |||
885 | if (ehci_is_TDI(ehci)) | ||
886 | return 0; | ||
887 | reg = &ehci->regs->port_status[portnum - 1]; | ||
888 | return ehci_readl(ehci, reg) & PORT_OWNER; | ||
889 | } | ||
diff --git a/drivers/usb/host/ehci-ixp4xx.c b/drivers/usb/host/ehci-ixp4xx.c index 601c8795a854..9d042f220097 100644 --- a/drivers/usb/host/ehci-ixp4xx.c +++ b/drivers/usb/host/ehci-ixp4xx.c | |||
@@ -26,7 +26,7 @@ static int ixp4xx_ehci_init(struct usb_hcd *hcd) | |||
26 | + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); | 26 | + HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); |
27 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); | 27 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); |
28 | 28 | ||
29 | ehci->is_tdi_rh_tt = 1; | 29 | hcd->has_tt = 1; |
30 | ehci_reset(ehci); | 30 | ehci_reset(ehci); |
31 | 31 | ||
32 | retval = ehci_init(hcd); | 32 | retval = ehci_init(hcd); |
@@ -58,6 +58,8 @@ static const struct hc_driver ixp4xx_ehci_hc_driver = { | |||
58 | .bus_suspend = ehci_bus_suspend, | 58 | .bus_suspend = ehci_bus_suspend, |
59 | .bus_resume = ehci_bus_resume, | 59 | .bus_resume = ehci_bus_resume, |
60 | #endif | 60 | #endif |
61 | .relinquish_port = ehci_relinquish_port, | ||
62 | .port_handed_over = ehci_port_handed_over, | ||
61 | }; | 63 | }; |
62 | 64 | ||
63 | static int ixp4xx_ehci_probe(struct platform_device *pdev) | 65 | static int ixp4xx_ehci_probe(struct platform_device *pdev) |
diff --git a/drivers/usb/host/ehci-orion.c b/drivers/usb/host/ehci-orion.c index d187d0313742..ab625f0ba1d9 100644 --- a/drivers/usb/host/ehci-orion.c +++ b/drivers/usb/host/ehci-orion.c | |||
@@ -115,6 +115,8 @@ static int ehci_orion_setup(struct usb_hcd *hcd) | |||
115 | if (retval) | 115 | if (retval) |
116 | return retval; | 116 | return retval; |
117 | 117 | ||
118 | hcd->has_tt = 1; | ||
119 | |||
118 | ehci_reset(ehci); | 120 | ehci_reset(ehci); |
119 | ehci_port_power(ehci, 0); | 121 | ehci_port_power(ehci, 0); |
120 | 122 | ||
@@ -137,10 +139,6 @@ static const struct hc_driver ehci_orion_hc_driver = { | |||
137 | */ | 139 | */ |
138 | .reset = ehci_orion_setup, | 140 | .reset = ehci_orion_setup, |
139 | .start = ehci_run, | 141 | .start = ehci_run, |
140 | #ifdef CONFIG_PM | ||
141 | .suspend = ehci_bus_suspend, | ||
142 | .resume = ehci_bus_resume, | ||
143 | #endif | ||
144 | .stop = ehci_stop, | 142 | .stop = ehci_stop, |
145 | .shutdown = ehci_shutdown, | 143 | .shutdown = ehci_shutdown, |
146 | 144 | ||
@@ -163,6 +161,8 @@ static const struct hc_driver ehci_orion_hc_driver = { | |||
163 | .hub_control = ehci_hub_control, | 161 | .hub_control = ehci_hub_control, |
164 | .bus_suspend = ehci_bus_suspend, | 162 | .bus_suspend = ehci_bus_suspend, |
165 | .bus_resume = ehci_bus_resume, | 163 | .bus_resume = ehci_bus_resume, |
164 | .relinquish_port = ehci_relinquish_port, | ||
165 | .port_handed_over = ehci_port_handed_over, | ||
166 | }; | 166 | }; |
167 | 167 | ||
168 | static void __init | 168 | static void __init |
@@ -248,7 +248,7 @@ static int __init ehci_orion_drv_probe(struct platform_device *pdev) | |||
248 | ehci->regs = hcd->regs + 0x100 + | 248 | ehci->regs = hcd->regs + 0x100 + |
249 | HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); | 249 | HC_LENGTH(ehci_readl(ehci, &ehci->caps->hc_capbase)); |
250 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); | 250 | ehci->hcs_params = ehci_readl(ehci, &ehci->caps->hcs_params); |
251 | ehci->is_tdi_rh_tt = 1; | 251 | hcd->has_tt = 1; |
252 | ehci->sbrn = 0x20; | 252 | ehci->sbrn = 0x20; |
253 | 253 | ||
254 | /* | 254 | /* |
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c index 5bb7f6bb13f3..c46a58f9181d 100644 --- a/drivers/usb/host/ehci-pci.c +++ b/drivers/usb/host/ehci-pci.c | |||
@@ -129,7 +129,6 @@ static int ehci_pci_setup(struct usb_hcd *hcd) | |||
129 | switch (pdev->vendor) { | 129 | switch (pdev->vendor) { |
130 | case PCI_VENDOR_ID_TDI: | 130 | case PCI_VENDOR_ID_TDI: |
131 | if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { | 131 | if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { |
132 | ehci->is_tdi_rh_tt = 1; | ||
133 | hcd->has_tt = 1; | 132 | hcd->has_tt = 1; |
134 | tdi_reset(ehci); | 133 | tdi_reset(ehci); |
135 | } | 134 | } |
@@ -379,7 +378,8 @@ static const struct hc_driver ehci_pci_hc_driver = { | |||
379 | .hub_control = ehci_hub_control, | 378 | .hub_control = ehci_hub_control, |
380 | .bus_suspend = ehci_bus_suspend, | 379 | .bus_suspend = ehci_bus_suspend, |
381 | .bus_resume = ehci_bus_resume, | 380 | .bus_resume = ehci_bus_resume, |
382 | .relinquish_port = ehci_relinquish_port, | 381 | .relinquish_port = ehci_relinquish_port, |
382 | .port_handed_over = ehci_port_handed_over, | ||
383 | }; | 383 | }; |
384 | 384 | ||
385 | /*-------------------------------------------------------------------------*/ | 385 | /*-------------------------------------------------------------------------*/ |
diff --git a/drivers/usb/host/ehci-ppc-of.c b/drivers/usb/host/ehci-ppc-of.c index ee305b1f99ff..b018deed2e8f 100644 --- a/drivers/usb/host/ehci-ppc-of.c +++ b/drivers/usb/host/ehci-ppc-of.c | |||
@@ -76,6 +76,8 @@ static const struct hc_driver ehci_ppc_of_hc_driver = { | |||
76 | .bus_suspend = ehci_bus_suspend, | 76 | .bus_suspend = ehci_bus_suspend, |
77 | .bus_resume = ehci_bus_resume, | 77 | .bus_resume = ehci_bus_resume, |
78 | #endif | 78 | #endif |
79 | .relinquish_port = ehci_relinquish_port, | ||
80 | .port_handed_over = ehci_port_handed_over, | ||
79 | }; | 81 | }; |
80 | 82 | ||
81 | 83 | ||
diff --git a/drivers/usb/host/ehci-ppc-soc.c b/drivers/usb/host/ehci-ppc-soc.c index 6c76036783a1..529590eb4037 100644 --- a/drivers/usb/host/ehci-ppc-soc.c +++ b/drivers/usb/host/ehci-ppc-soc.c | |||
@@ -163,6 +163,7 @@ static const struct hc_driver ehci_ppc_soc_hc_driver = { | |||
163 | .bus_suspend = ehci_bus_suspend, | 163 | .bus_suspend = ehci_bus_suspend, |
164 | .bus_resume = ehci_bus_resume, | 164 | .bus_resume = ehci_bus_resume, |
165 | .relinquish_port = ehci_relinquish_port, | 165 | .relinquish_port = ehci_relinquish_port, |
166 | .port_handed_over = ehci_port_handed_over, | ||
166 | }; | 167 | }; |
167 | 168 | ||
168 | static int ehci_hcd_ppc_soc_drv_probe(struct platform_device *pdev) | 169 | static int ehci_hcd_ppc_soc_drv_probe(struct platform_device *pdev) |
diff --git a/drivers/usb/host/ehci-ps3.c b/drivers/usb/host/ehci-ps3.c index 69782221bcf3..37e6abeb794c 100644 --- a/drivers/usb/host/ehci-ps3.c +++ b/drivers/usb/host/ehci-ps3.c | |||
@@ -73,6 +73,7 @@ static const struct hc_driver ps3_ehci_hc_driver = { | |||
73 | .bus_resume = ehci_bus_resume, | 73 | .bus_resume = ehci_bus_resume, |
74 | #endif | 74 | #endif |
75 | .relinquish_port = ehci_relinquish_port, | 75 | .relinquish_port = ehci_relinquish_port, |
76 | .port_handed_over = ehci_port_handed_over, | ||
76 | }; | 77 | }; |
77 | 78 | ||
78 | static int ps3_ehci_probe(struct ps3_system_bus_device *dev) | 79 | static int ps3_ehci_probe(struct ps3_system_bus_device *dev) |
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c index be575e46eac3..b7853c8bac0f 100644 --- a/drivers/usb/host/ehci-sched.c +++ b/drivers/usb/host/ehci-sched.c | |||
@@ -1349,18 +1349,27 @@ iso_stream_schedule ( | |||
1349 | /* when's the last uframe this urb could start? */ | 1349 | /* when's the last uframe this urb could start? */ |
1350 | max = now + mod; | 1350 | max = now + mod; |
1351 | 1351 | ||
1352 | /* typical case: reuse current schedule. stream is still active, | 1352 | /* Typical case: reuse current schedule, stream is still active. |
1353 | * and no gaps from host falling behind (irq delays etc) | 1353 | * Hopefully there are no gaps from the host falling behind |
1354 | * (irq delays etc), but if there are we'll take the next | ||
1355 | * slot in the schedule, implicitly assuming URB_ISO_ASAP. | ||
1354 | */ | 1356 | */ |
1355 | if (likely (!list_empty (&stream->td_list))) { | 1357 | if (likely (!list_empty (&stream->td_list))) { |
1356 | start = stream->next_uframe; | 1358 | start = stream->next_uframe; |
1357 | if (start < now) | 1359 | if (start < now) |
1358 | start += mod; | 1360 | start += mod; |
1359 | if (likely ((start + sched->span) < max)) | 1361 | |
1360 | goto ready; | 1362 | /* Fell behind (by up to twice the slop amount)? */ |
1361 | /* else fell behind; someday, try to reschedule */ | 1363 | if (start >= max - 2 * 8 * SCHEDULE_SLOP) |
1362 | status = -EL2NSYNC; | 1364 | start += stream->interval * DIV_ROUND_UP( |
1363 | goto fail; | 1365 | max - start, stream->interval) - mod; |
1366 | |||
1367 | /* Tried to schedule too far into the future? */ | ||
1368 | if (unlikely((start + sched->span) >= max)) { | ||
1369 | status = -EFBIG; | ||
1370 | goto fail; | ||
1371 | } | ||
1372 | goto ready; | ||
1364 | } | 1373 | } |
1365 | 1374 | ||
1366 | /* need to schedule; when's the next (u)frame we could start? | 1375 | /* need to schedule; when's the next (u)frame we could start? |
@@ -1613,6 +1622,9 @@ itd_complete ( | |||
1613 | } else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) { | 1622 | } else if (likely ((t & EHCI_ISOC_ACTIVE) == 0)) { |
1614 | desc->status = 0; | 1623 | desc->status = 0; |
1615 | desc->actual_length = EHCI_ITD_LENGTH (t); | 1624 | desc->actual_length = EHCI_ITD_LENGTH (t); |
1625 | } else { | ||
1626 | /* URB was too late */ | ||
1627 | desc->status = -EXDEV; | ||
1616 | } | 1628 | } |
1617 | } | 1629 | } |
1618 | 1630 | ||
@@ -2095,7 +2107,7 @@ done: | |||
2095 | static void | 2107 | static void |
2096 | scan_periodic (struct ehci_hcd *ehci) | 2108 | scan_periodic (struct ehci_hcd *ehci) |
2097 | { | 2109 | { |
2098 | unsigned frame, clock, now_uframe, mod; | 2110 | unsigned now_uframe, frame, clock, clock_frame, mod; |
2099 | unsigned modified; | 2111 | unsigned modified; |
2100 | 2112 | ||
2101 | mod = ehci->periodic_size << 3; | 2113 | mod = ehci->periodic_size << 3; |
@@ -2111,6 +2123,7 @@ scan_periodic (struct ehci_hcd *ehci) | |||
2111 | else | 2123 | else |
2112 | clock = now_uframe + mod - 1; | 2124 | clock = now_uframe + mod - 1; |
2113 | clock %= mod; | 2125 | clock %= mod; |
2126 | clock_frame = clock >> 3; | ||
2114 | 2127 | ||
2115 | for (;;) { | 2128 | for (;;) { |
2116 | union ehci_shadow q, *q_p; | 2129 | union ehci_shadow q, *q_p; |
@@ -2157,22 +2170,26 @@ restart: | |||
2157 | case Q_TYPE_ITD: | 2170 | case Q_TYPE_ITD: |
2158 | /* If this ITD is still active, leave it for | 2171 | /* If this ITD is still active, leave it for |
2159 | * later processing ... check the next entry. | 2172 | * later processing ... check the next entry. |
2173 | * No need to check for activity unless the | ||
2174 | * frame is current. | ||
2160 | */ | 2175 | */ |
2161 | rmb (); | 2176 | if (frame == clock_frame && live) { |
2162 | for (uf = 0; uf < 8 && live; uf++) { | 2177 | rmb(); |
2163 | if (0 == (q.itd->hw_transaction [uf] | 2178 | for (uf = 0; uf < 8; uf++) { |
2164 | & ITD_ACTIVE(ehci))) | 2179 | if (q.itd->hw_transaction[uf] & |
2165 | continue; | 2180 | ITD_ACTIVE(ehci)) |
2166 | incomplete = true; | 2181 | break; |
2167 | q_p = &q.itd->itd_next; | 2182 | } |
2168 | hw_p = &q.itd->hw_next; | 2183 | if (uf < 8) { |
2169 | type = Q_NEXT_TYPE(ehci, | 2184 | incomplete = true; |
2185 | q_p = &q.itd->itd_next; | ||
2186 | hw_p = &q.itd->hw_next; | ||
2187 | type = Q_NEXT_TYPE(ehci, | ||
2170 | q.itd->hw_next); | 2188 | q.itd->hw_next); |
2171 | q = *q_p; | 2189 | q = *q_p; |
2172 | break; | 2190 | break; |
2191 | } | ||
2173 | } | 2192 | } |
2174 | if (uf < 8 && live) | ||
2175 | break; | ||
2176 | 2193 | ||
2177 | /* Take finished ITDs out of the schedule | 2194 | /* Take finished ITDs out of the schedule |
2178 | * and process them: recycle, maybe report | 2195 | * and process them: recycle, maybe report |
@@ -2189,9 +2206,12 @@ restart: | |||
2189 | case Q_TYPE_SITD: | 2206 | case Q_TYPE_SITD: |
2190 | /* If this SITD is still active, leave it for | 2207 | /* If this SITD is still active, leave it for |
2191 | * later processing ... check the next entry. | 2208 | * later processing ... check the next entry. |
2209 | * No need to check for activity unless the | ||
2210 | * frame is current. | ||
2192 | */ | 2211 | */ |
2193 | if ((q.sitd->hw_results & SITD_ACTIVE(ehci)) | 2212 | if (frame == clock_frame && live && |
2194 | && live) { | 2213 | (q.sitd->hw_results & |
2214 | SITD_ACTIVE(ehci))) { | ||
2195 | incomplete = true; | 2215 | incomplete = true; |
2196 | q_p = &q.sitd->sitd_next; | 2216 | q_p = &q.sitd->sitd_next; |
2197 | hw_p = &q.sitd->hw_next; | 2217 | hw_p = &q.sitd->hw_next; |
@@ -2260,6 +2280,7 @@ restart: | |||
2260 | 2280 | ||
2261 | /* rescan the rest of this frame, then ... */ | 2281 | /* rescan the rest of this frame, then ... */ |
2262 | clock = now; | 2282 | clock = now; |
2283 | clock_frame = clock >> 3; | ||
2263 | } else { | 2284 | } else { |
2264 | now_uframe++; | 2285 | now_uframe++; |
2265 | now_uframe %= mod; | 2286 | now_uframe %= mod; |
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h index bf92d209a1a9..35a03095757e 100644 --- a/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h | |||
@@ -97,6 +97,8 @@ struct ehci_hcd { /* one per controller */ | |||
97 | dedicated to the companion controller */ | 97 | dedicated to the companion controller */ |
98 | unsigned long owned_ports; /* which ports are | 98 | unsigned long owned_ports; /* which ports are |
99 | owned by the companion during a bus suspend */ | 99 | owned by the companion during a bus suspend */ |
100 | unsigned long port_c_suspend; /* which ports have | ||
101 | the change-suspend feature turned on */ | ||
100 | 102 | ||
101 | /* per-HC memory pools (could be per-bus, but ...) */ | 103 | /* per-HC memory pools (could be per-bus, but ...) */ |
102 | struct dma_pool *qh_pool; /* qh per active urb */ | 104 | struct dma_pool *qh_pool; /* qh per active urb */ |
@@ -112,7 +114,6 @@ struct ehci_hcd { /* one per controller */ | |||
112 | u32 command; | 114 | u32 command; |
113 | 115 | ||
114 | /* SILICON QUIRKS */ | 116 | /* SILICON QUIRKS */ |
115 | unsigned is_tdi_rh_tt:1; /* TDI roothub with TT */ | ||
116 | unsigned no_selective_suspend:1; | 117 | unsigned no_selective_suspend:1; |
117 | unsigned has_fsl_port_bug:1; /* FreeScale */ | 118 | unsigned has_fsl_port_bug:1; /* FreeScale */ |
118 | unsigned big_endian_mmio:1; | 119 | unsigned big_endian_mmio:1; |
@@ -678,7 +679,7 @@ struct ehci_fstn { | |||
678 | * needed (mostly in root hub code). | 679 | * needed (mostly in root hub code). |
679 | */ | 680 | */ |
680 | 681 | ||
681 | #define ehci_is_TDI(e) ((e)->is_tdi_rh_tt) | 682 | #define ehci_is_TDI(e) (ehci_to_hcd(e)->has_tt) |
682 | 683 | ||
683 | /* Returns the speed of a device attached to a port on the root hub. */ | 684 | /* Returns the speed of a device attached to a port on the root hub. */ |
684 | static inline unsigned int | 685 | static inline unsigned int |
diff --git a/drivers/usb/misc/Kconfig b/drivers/usb/misc/Kconfig index a53db1d4e07a..eb6c06979f3b 100644 --- a/drivers/usb/misc/Kconfig +++ b/drivers/usb/misc/Kconfig | |||
@@ -269,3 +269,14 @@ config USB_TEST | |||
269 | See <http://www.linux-usb.org/usbtest/> for more information, | 269 | See <http://www.linux-usb.org/usbtest/> for more information, |
270 | including sample test device firmware and "how to use it". | 270 | including sample test device firmware and "how to use it". |
271 | 271 | ||
272 | config USB_ISIGHTFW | ||
273 | tristate "iSight firmware loading support" | ||
274 | depends on USB | ||
275 | help | ||
276 | This driver loads firmware for USB Apple iSight cameras, allowing | ||
277 | them to be driven by the USB video class driver available at | ||
278 | http://linux-uvc.berlios.de | ||
279 | |||
280 | The firmware for this driver must be extracted from the MacOS | ||
281 | driver beforehand. Tools for doing so are available at | ||
282 | http://bersace03.free.fr | ||
diff --git a/drivers/usb/misc/Makefile b/drivers/usb/misc/Makefile index b68e6b774f1a..aba091cb5ec0 100644 --- a/drivers/usb/misc/Makefile +++ b/drivers/usb/misc/Makefile | |||
@@ -14,6 +14,7 @@ obj-$(CONFIG_USB_EMI62) += emi62.o | |||
14 | obj-$(CONFIG_USB_FTDI_ELAN) += ftdi-elan.o | 14 | obj-$(CONFIG_USB_FTDI_ELAN) += ftdi-elan.o |
15 | obj-$(CONFIG_USB_IDMOUSE) += idmouse.o | 15 | obj-$(CONFIG_USB_IDMOUSE) += idmouse.o |
16 | obj-$(CONFIG_USB_IOWARRIOR) += iowarrior.o | 16 | obj-$(CONFIG_USB_IOWARRIOR) += iowarrior.o |
17 | obj-$(CONFIG_USB_ISIGHTFW) += isight_firmware.o | ||
17 | obj-$(CONFIG_USB_LCD) += usblcd.o | 18 | obj-$(CONFIG_USB_LCD) += usblcd.o |
18 | obj-$(CONFIG_USB_LD) += ldusb.o | 19 | obj-$(CONFIG_USB_LD) += ldusb.o |
19 | obj-$(CONFIG_USB_LED) += usbled.o | 20 | obj-$(CONFIG_USB_LED) += usbled.o |
diff --git a/drivers/usb/misc/isight_firmware.c b/drivers/usb/misc/isight_firmware.c new file mode 100644 index 000000000000..390e04885536 --- /dev/null +++ b/drivers/usb/misc/isight_firmware.c | |||
@@ -0,0 +1,131 @@ | |||
1 | /* | ||
2 | * Driver for loading USB isight firmware | ||
3 | * | ||
4 | * Copyright (C) 2008 Matthew Garrett <mjg@redhat.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the Free | ||
8 | * Software Foundation, version 2. | ||
9 | * | ||
10 | * The USB isight cameras in recent Apples are roughly compatible with the USB | ||
11 | * video class specification, and can be driven by uvcvideo. However, they | ||
12 | * need firmware to be loaded beforehand. After firmware loading, the device | ||
13 | * detaches from the USB bus and reattaches with a new device ID. It can then | ||
14 | * be claimed by the uvc driver. | ||
15 | * | ||
16 | * The firmware is non-free and must be extracted by the user. Tools to do this | ||
17 | * are available at http://bersace03.free.fr/ift/ | ||
18 | * | ||
19 | * The isight firmware loading was reverse engineered by Johannes Berg | ||
20 | * <johannes@sipsolutions.de>, and this driver is based on code by Ronald | ||
21 | * Bultje <rbultje@ronald.bitfreak.net> | ||
22 | */ | ||
23 | |||
24 | #include <linux/usb.h> | ||
25 | #include <linux/firmware.h> | ||
26 | #include <linux/errno.h> | ||
27 | #include <linux/module.h> | ||
28 | |||
29 | static struct usb_device_id id_table[] = { | ||
30 | {USB_DEVICE(0x05ac, 0x8300)}, | ||
31 | {}, | ||
32 | }; | ||
33 | |||
34 | MODULE_DEVICE_TABLE(usb, id_table); | ||
35 | |||
36 | static int isight_firmware_load(struct usb_interface *intf, | ||
37 | const struct usb_device_id *id) | ||
38 | { | ||
39 | struct usb_device *dev = interface_to_usbdev(intf); | ||
40 | int llen, len, req, ret = 0; | ||
41 | const struct firmware *firmware; | ||
42 | unsigned char *buf; | ||
43 | unsigned char data[4]; | ||
44 | char *ptr; | ||
45 | |||
46 | if (request_firmware(&firmware, "isight.fw", &dev->dev) != 0) { | ||
47 | printk(KERN_ERR "Unable to load isight firmware\n"); | ||
48 | return -ENODEV; | ||
49 | } | ||
50 | |||
51 | ptr = firmware->data; | ||
52 | |||
53 | if (usb_control_msg | ||
54 | (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\1", 1, | ||
55 | 300) != 1) { | ||
56 | printk(KERN_ERR | ||
57 | "Failed to initialise isight firmware loader\n"); | ||
58 | ret = -ENODEV; | ||
59 | goto out; | ||
60 | } | ||
61 | |||
62 | while (1) { | ||
63 | memcpy(data, ptr, 4); | ||
64 | len = (data[0] << 8 | data[1]); | ||
65 | req = (data[2] << 8 | data[3]); | ||
66 | ptr += 4; | ||
67 | |||
68 | if (len == 0x8001) | ||
69 | break; /* success */ | ||
70 | else if (len == 0) | ||
71 | continue; | ||
72 | |||
73 | for (; len > 0; req += 50) { | ||
74 | llen = len > 50 ? 50 : len; | ||
75 | len -= llen; | ||
76 | |||
77 | buf = kmalloc(llen, GFP_KERNEL); | ||
78 | memcpy(buf, ptr, llen); | ||
79 | |||
80 | ptr += llen; | ||
81 | |||
82 | if (usb_control_msg | ||
83 | (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, req, 0, | ||
84 | buf, llen, 300) != llen) { | ||
85 | printk(KERN_ERR | ||
86 | "Failed to load isight firmware\n"); | ||
87 | kfree(buf); | ||
88 | ret = -ENODEV; | ||
89 | goto out; | ||
90 | } | ||
91 | |||
92 | kfree(buf); | ||
93 | } | ||
94 | } | ||
95 | if (usb_control_msg | ||
96 | (dev, usb_sndctrlpipe(dev, 0), 0xa0, 0x40, 0xe600, 0, "\0", 1, | ||
97 | 300) != 1) { | ||
98 | printk(KERN_ERR "isight firmware loading completion failed\n"); | ||
99 | ret = -ENODEV; | ||
100 | } | ||
101 | out: | ||
102 | release_firmware(firmware); | ||
103 | return ret; | ||
104 | } | ||
105 | |||
106 | static void isight_firmware_disconnect(struct usb_interface *intf) | ||
107 | { | ||
108 | } | ||
109 | |||
110 | static struct usb_driver isight_firmware_driver = { | ||
111 | .name = "isight_firmware", | ||
112 | .probe = isight_firmware_load, | ||
113 | .disconnect = isight_firmware_disconnect, | ||
114 | .id_table = id_table, | ||
115 | }; | ||
116 | |||
117 | static int __init isight_firmware_init(void) | ||
118 | { | ||
119 | return usb_register(&isight_firmware_driver); | ||
120 | } | ||
121 | |||
122 | static void __exit isight_firmware_exit(void) | ||
123 | { | ||
124 | usb_deregister(&isight_firmware_driver); | ||
125 | } | ||
126 | |||
127 | module_init(isight_firmware_init); | ||
128 | module_exit(isight_firmware_exit); | ||
129 | |||
130 | MODULE_LICENSE("GPL"); | ||
131 | MODULE_AUTHOR("Matthew Garrett <mjg@redhat.com>"); | ||
diff --git a/drivers/usb/misc/phidgetkit.c b/drivers/usb/misc/phidgetkit.c index 24230c638b8e..4cfa25b0f44e 100644 --- a/drivers/usb/misc/phidgetkit.c +++ b/drivers/usb/misc/phidgetkit.c | |||
@@ -595,14 +595,14 @@ static int interfacekit_probe(struct usb_interface *intf, const struct usb_devic | |||
595 | } while(value); | 595 | } while(value); |
596 | kit->dev_no = bit; | 596 | kit->dev_no = bit; |
597 | 597 | ||
598 | kit->dev = device_create(phidget_class, &kit->udev->dev, 0, | 598 | kit->dev = device_create_drvdata(phidget_class, &kit->udev->dev, |
599 | "interfacekit%d", kit->dev_no); | 599 | MKDEV(0, 0), kit, |
600 | "interfacekit%d", kit->dev_no); | ||
600 | if (IS_ERR(kit->dev)) { | 601 | if (IS_ERR(kit->dev)) { |
601 | rc = PTR_ERR(kit->dev); | 602 | rc = PTR_ERR(kit->dev); |
602 | kit->dev = NULL; | 603 | kit->dev = NULL; |
603 | goto out; | 604 | goto out; |
604 | } | 605 | } |
605 | dev_set_drvdata(kit->dev, kit); | ||
606 | 606 | ||
607 | if (usb_submit_urb(kit->irq, GFP_KERNEL)) { | 607 | if (usb_submit_urb(kit->irq, GFP_KERNEL)) { |
608 | rc = -EIO; | 608 | rc = -EIO; |
diff --git a/drivers/usb/misc/phidgetmotorcontrol.c b/drivers/usb/misc/phidgetmotorcontrol.c index f0113c17cc5a..9b4696f21b22 100644 --- a/drivers/usb/misc/phidgetmotorcontrol.c +++ b/drivers/usb/misc/phidgetmotorcontrol.c | |||
@@ -365,16 +365,15 @@ static int motorcontrol_probe(struct usb_interface *intf, const struct usb_devic | |||
365 | } while(value); | 365 | } while(value); |
366 | mc->dev_no = bit; | 366 | mc->dev_no = bit; |
367 | 367 | ||
368 | mc->dev = device_create(phidget_class, &mc->udev->dev, 0, | 368 | mc->dev = device_create_drvdata(phidget_class, &mc->udev->dev, |
369 | "motorcontrol%d", mc->dev_no); | 369 | MKDEV(0, 0), mc, |
370 | "motorcontrol%d", mc->dev_no); | ||
370 | if (IS_ERR(mc->dev)) { | 371 | if (IS_ERR(mc->dev)) { |
371 | rc = PTR_ERR(mc->dev); | 372 | rc = PTR_ERR(mc->dev); |
372 | mc->dev = NULL; | 373 | mc->dev = NULL; |
373 | goto out; | 374 | goto out; |
374 | } | 375 | } |
375 | 376 | ||
376 | dev_set_drvdata(mc->dev, mc); | ||
377 | |||
378 | if (usb_submit_urb(mc->irq, GFP_KERNEL)) { | 377 | if (usb_submit_urb(mc->irq, GFP_KERNEL)) { |
379 | rc = -EIO; | 378 | rc = -EIO; |
380 | goto out; | 379 | goto out; |
diff --git a/drivers/usb/misc/phidgetservo.c b/drivers/usb/misc/phidgetservo.c index 7d590c09434a..1ca7ddb41d4d 100644 --- a/drivers/usb/misc/phidgetservo.c +++ b/drivers/usb/misc/phidgetservo.c | |||
@@ -275,14 +275,14 @@ servo_probe(struct usb_interface *interface, const struct usb_device_id *id) | |||
275 | } while (value); | 275 | } while (value); |
276 | dev->dev_no = bit; | 276 | dev->dev_no = bit; |
277 | 277 | ||
278 | dev->dev = device_create(phidget_class, &dev->udev->dev, 0, | 278 | dev->dev = device_create_drvdata(phidget_class, &dev->udev->dev, |
279 | "servo%d", dev->dev_no); | 279 | MKDEV(0, 0), dev, |
280 | "servo%d", dev->dev_no); | ||
280 | if (IS_ERR(dev->dev)) { | 281 | if (IS_ERR(dev->dev)) { |
281 | rc = PTR_ERR(dev->dev); | 282 | rc = PTR_ERR(dev->dev); |
282 | dev->dev = NULL; | 283 | dev->dev = NULL; |
283 | goto out; | 284 | goto out; |
284 | } | 285 | } |
285 | dev_set_drvdata(dev->dev, dev); | ||
286 | 286 | ||
287 | servo_count = dev->type & SERVO_COUNT_QUAD ? 4 : 1; | 287 | servo_count = dev->type & SERVO_COUNT_QUAD ? 4 : 1; |
288 | 288 | ||
diff --git a/drivers/usb/serial/ch341.c b/drivers/usb/serial/ch341.c index ba28fdc9ccd2..1f7c86bd8297 100644 --- a/drivers/usb/serial/ch341.c +++ b/drivers/usb/serial/ch341.c | |||
@@ -28,6 +28,7 @@ static int debug; | |||
28 | 28 | ||
29 | static struct usb_device_id id_table [] = { | 29 | static struct usb_device_id id_table [] = { |
30 | { USB_DEVICE(0x4348, 0x5523) }, | 30 | { USB_DEVICE(0x4348, 0x5523) }, |
31 | { USB_DEVICE(0x1a86, 0x7523) }, | ||
31 | { }, | 32 | { }, |
32 | }; | 33 | }; |
33 | MODULE_DEVICE_TABLE(usb, id_table); | 34 | MODULE_DEVICE_TABLE(usb, id_table); |
diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c index 5b349ece7247..5234e7a3bd2c 100644 --- a/drivers/usb/serial/ftdi_sio.c +++ b/drivers/usb/serial/ftdi_sio.c | |||
@@ -174,8 +174,270 @@ static struct usb_device_id id_table_combined [] = { | |||
174 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_4_PID) }, | 174 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_4_PID) }, |
175 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_5_PID) }, | 175 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_5_PID) }, |
176 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_6_PID) }, | 176 | { USB_DEVICE(FTDI_VID, FTDI_MTXORB_6_PID) }, |
177 | { USB_DEVICE(MTXORB_VK_VID, MTXORB_VK_PID), | 177 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0100_PID) }, |
178 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0101_PID) }, | ||
179 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0102_PID) }, | ||
180 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0103_PID) }, | ||
181 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0104_PID) }, | ||
182 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0105_PID) }, | ||
183 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0106_PID) }, | ||
184 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0107_PID) }, | ||
185 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0108_PID) }, | ||
186 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0109_PID) }, | ||
187 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010A_PID) }, | ||
188 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010B_PID) }, | ||
189 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010C_PID) }, | ||
190 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010D_PID) }, | ||
191 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010E_PID) }, | ||
192 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_010F_PID) }, | ||
193 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0110_PID) }, | ||
194 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0111_PID) }, | ||
195 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0112_PID) }, | ||
196 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0113_PID) }, | ||
197 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0114_PID) }, | ||
198 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0115_PID) }, | ||
199 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0116_PID) }, | ||
200 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0117_PID) }, | ||
201 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0118_PID) }, | ||
202 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0119_PID) }, | ||
203 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011A_PID) }, | ||
204 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011B_PID) }, | ||
205 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011C_PID) }, | ||
206 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011D_PID) }, | ||
207 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011E_PID) }, | ||
208 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_011F_PID) }, | ||
209 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0120_PID) }, | ||
210 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0121_PID) }, | ||
211 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0122_PID) }, | ||
212 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0123_PID) }, | ||
213 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0124_PID) }, | ||
214 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0125_PID) }, | ||
215 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0126_PID) }, | ||
216 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0127_PID), | ||
178 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | 217 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, |
218 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0128_PID) }, | ||
219 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0129_PID) }, | ||
220 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012A_PID) }, | ||
221 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012B_PID) }, | ||
222 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012C_PID), | ||
223 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
224 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012D_PID) }, | ||
225 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012E_PID) }, | ||
226 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_012F_PID) }, | ||
227 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0130_PID) }, | ||
228 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0131_PID) }, | ||
229 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0132_PID) }, | ||
230 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0133_PID) }, | ||
231 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0134_PID) }, | ||
232 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0135_PID) }, | ||
233 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0136_PID) }, | ||
234 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0137_PID) }, | ||
235 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0138_PID) }, | ||
236 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0139_PID) }, | ||
237 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013A_PID) }, | ||
238 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013B_PID) }, | ||
239 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013C_PID) }, | ||
240 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013D_PID) }, | ||
241 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013E_PID) }, | ||
242 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_013F_PID) }, | ||
243 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0140_PID) }, | ||
244 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0141_PID) }, | ||
245 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0142_PID) }, | ||
246 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0143_PID) }, | ||
247 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0144_PID) }, | ||
248 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0145_PID) }, | ||
249 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0146_PID) }, | ||
250 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0147_PID) }, | ||
251 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0148_PID) }, | ||
252 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0149_PID) }, | ||
253 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014A_PID) }, | ||
254 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014B_PID) }, | ||
255 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014C_PID) }, | ||
256 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014D_PID) }, | ||
257 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014E_PID) }, | ||
258 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_014F_PID) }, | ||
259 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0150_PID) }, | ||
260 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0151_PID) }, | ||
261 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0152_PID) }, | ||
262 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0153_PID), | ||
263 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
264 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0154_PID), | ||
265 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
266 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0155_PID), | ||
267 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
268 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0156_PID), | ||
269 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
270 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0157_PID), | ||
271 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
272 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0158_PID), | ||
273 | .driver_info = (kernel_ulong_t)&ftdi_mtxorb_hack_quirk }, | ||
274 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0159_PID) }, | ||
275 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015A_PID) }, | ||
276 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015B_PID) }, | ||
277 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015C_PID) }, | ||
278 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015D_PID) }, | ||
279 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015E_PID) }, | ||
280 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_015F_PID) }, | ||
281 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0160_PID) }, | ||
282 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0161_PID) }, | ||
283 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0162_PID) }, | ||
284 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0163_PID) }, | ||
285 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0164_PID) }, | ||
286 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0165_PID) }, | ||
287 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0166_PID) }, | ||
288 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0167_PID) }, | ||
289 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0168_PID) }, | ||
290 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0169_PID) }, | ||
291 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016A_PID) }, | ||
292 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016B_PID) }, | ||
293 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016C_PID) }, | ||
294 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016D_PID) }, | ||
295 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016E_PID) }, | ||
296 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_016F_PID) }, | ||
297 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0170_PID) }, | ||
298 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0171_PID) }, | ||
299 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0172_PID) }, | ||
300 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0173_PID) }, | ||
301 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0174_PID) }, | ||
302 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0175_PID) }, | ||
303 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0176_PID) }, | ||
304 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0177_PID) }, | ||
305 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0178_PID) }, | ||
306 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0179_PID) }, | ||
307 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017A_PID) }, | ||
308 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017B_PID) }, | ||
309 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017C_PID) }, | ||
310 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017D_PID) }, | ||
311 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017E_PID) }, | ||
312 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_017F_PID) }, | ||
313 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0180_PID) }, | ||
314 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0181_PID) }, | ||
315 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0182_PID) }, | ||
316 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0183_PID) }, | ||
317 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0184_PID) }, | ||
318 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0185_PID) }, | ||
319 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0186_PID) }, | ||
320 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0187_PID) }, | ||
321 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0188_PID) }, | ||
322 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0189_PID) }, | ||
323 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018A_PID) }, | ||
324 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018B_PID) }, | ||
325 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018C_PID) }, | ||
326 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018D_PID) }, | ||
327 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018E_PID) }, | ||
328 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_018F_PID) }, | ||
329 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0190_PID) }, | ||
330 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0191_PID) }, | ||
331 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0192_PID) }, | ||
332 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0193_PID) }, | ||
333 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0194_PID) }, | ||
334 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0195_PID) }, | ||
335 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0196_PID) }, | ||
336 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0197_PID) }, | ||
337 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0198_PID) }, | ||
338 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_0199_PID) }, | ||
339 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019A_PID) }, | ||
340 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019B_PID) }, | ||
341 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019C_PID) }, | ||
342 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019D_PID) }, | ||
343 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019E_PID) }, | ||
344 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_019F_PID) }, | ||
345 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A0_PID) }, | ||
346 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A1_PID) }, | ||
347 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A2_PID) }, | ||
348 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A3_PID) }, | ||
349 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A4_PID) }, | ||
350 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A5_PID) }, | ||
351 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A6_PID) }, | ||
352 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A7_PID) }, | ||
353 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A8_PID) }, | ||
354 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01A9_PID) }, | ||
355 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AA_PID) }, | ||
356 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AB_PID) }, | ||
357 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AC_PID) }, | ||
358 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AD_PID) }, | ||
359 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AE_PID) }, | ||
360 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01AF_PID) }, | ||
361 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B0_PID) }, | ||
362 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B1_PID) }, | ||
363 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B2_PID) }, | ||
364 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B3_PID) }, | ||
365 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B4_PID) }, | ||
366 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B5_PID) }, | ||
367 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B6_PID) }, | ||
368 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B7_PID) }, | ||
369 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B8_PID) }, | ||
370 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01B9_PID) }, | ||
371 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BA_PID) }, | ||
372 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BB_PID) }, | ||
373 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BC_PID) }, | ||
374 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BD_PID) }, | ||
375 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BE_PID) }, | ||
376 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01BF_PID) }, | ||
377 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C0_PID) }, | ||
378 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C1_PID) }, | ||
379 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C2_PID) }, | ||
380 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C3_PID) }, | ||
381 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C4_PID) }, | ||
382 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C5_PID) }, | ||
383 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C6_PID) }, | ||
384 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C7_PID) }, | ||
385 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C8_PID) }, | ||
386 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01C9_PID) }, | ||
387 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CA_PID) }, | ||
388 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CB_PID) }, | ||
389 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CC_PID) }, | ||
390 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CD_PID) }, | ||
391 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CE_PID) }, | ||
392 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01CF_PID) }, | ||
393 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D0_PID) }, | ||
394 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D1_PID) }, | ||
395 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D2_PID) }, | ||
396 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D3_PID) }, | ||
397 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D4_PID) }, | ||
398 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D5_PID) }, | ||
399 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D6_PID) }, | ||
400 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D7_PID) }, | ||
401 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D8_PID) }, | ||
402 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01D9_PID) }, | ||
403 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DA_PID) }, | ||
404 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DB_PID) }, | ||
405 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DC_PID) }, | ||
406 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DD_PID) }, | ||
407 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DE_PID) }, | ||
408 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01DF_PID) }, | ||
409 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E0_PID) }, | ||
410 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E1_PID) }, | ||
411 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E2_PID) }, | ||
412 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E3_PID) }, | ||
413 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E4_PID) }, | ||
414 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E5_PID) }, | ||
415 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E6_PID) }, | ||
416 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E7_PID) }, | ||
417 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E8_PID) }, | ||
418 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01E9_PID) }, | ||
419 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EA_PID) }, | ||
420 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EB_PID) }, | ||
421 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EC_PID) }, | ||
422 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01ED_PID) }, | ||
423 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EE_PID) }, | ||
424 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01EF_PID) }, | ||
425 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F0_PID) }, | ||
426 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F1_PID) }, | ||
427 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F2_PID) }, | ||
428 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F3_PID) }, | ||
429 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F4_PID) }, | ||
430 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F5_PID) }, | ||
431 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F6_PID) }, | ||
432 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F7_PID) }, | ||
433 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F8_PID) }, | ||
434 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01F9_PID) }, | ||
435 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FA_PID) }, | ||
436 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FB_PID) }, | ||
437 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FC_PID) }, | ||
438 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FD_PID) }, | ||
439 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FE_PID) }, | ||
440 | { USB_DEVICE(MTXORB_VID,MTXORB_FTDI_RANGE_01FF_PID) }, | ||
179 | { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, | 441 | { USB_DEVICE(FTDI_VID, FTDI_PERLE_ULTRAPORT_PID) }, |
180 | { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, | 442 | { USB_DEVICE(FTDI_VID, FTDI_PIEGROUP_PID) }, |
181 | { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) }, | 443 | { USB_DEVICE(FTDI_VID, FTDI_TNC_X_PID) }, |
@@ -374,6 +636,7 @@ static struct usb_device_id id_table_combined [] = { | |||
374 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, | 636 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, |
375 | { USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID), | 637 | { USB_DEVICE(FTDI_VID, FTDI_OOCDLINK_PID), |
376 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, | 638 | .driver_info = (kernel_ulong_t)&ftdi_jtag_quirk }, |
639 | { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) }, | ||
377 | { }, /* Optional parameter entry */ | 640 | { }, /* Optional parameter entry */ |
378 | { } /* Terminating entry */ | 641 | { } /* Terminating entry */ |
379 | }; | 642 | }; |
diff --git a/drivers/usb/serial/ftdi_sio.h b/drivers/usb/serial/ftdi_sio.h index 504edf8c3a3f..06e0ecabb3eb 100644 --- a/drivers/usb/serial/ftdi_sio.h +++ b/drivers/usb/serial/ftdi_sio.h | |||
@@ -114,11 +114,268 @@ | |||
114 | #define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */ | 114 | #define FTDI_OOCDLINK_PID 0xbaf8 /* Amontec JTAGkey */ |
115 | 115 | ||
116 | /* | 116 | /* |
117 | * The following are the values for the Matrix Orbital VK204-25-USB | 117 | * The following are the values for the Matrix Orbital FTDI Range |
118 | * display, which use the FT232RL. | 118 | * Anything in this range will use an FT232RL. |
119 | */ | 119 | */ |
120 | #define MTXORB_VK_VID 0x1b3d | 120 | #define MTXORB_VID 0x1B3D |
121 | #define MTXORB_VK_PID 0x0158 | 121 | #define MTXORB_FTDI_RANGE_0100_PID 0x0100 |
122 | #define MTXORB_FTDI_RANGE_0101_PID 0x0101 | ||
123 | #define MTXORB_FTDI_RANGE_0102_PID 0x0102 | ||
124 | #define MTXORB_FTDI_RANGE_0103_PID 0x0103 | ||
125 | #define MTXORB_FTDI_RANGE_0104_PID 0x0104 | ||
126 | #define MTXORB_FTDI_RANGE_0105_PID 0x0105 | ||
127 | #define MTXORB_FTDI_RANGE_0106_PID 0x0106 | ||
128 | #define MTXORB_FTDI_RANGE_0107_PID 0x0107 | ||
129 | #define MTXORB_FTDI_RANGE_0108_PID 0x0108 | ||
130 | #define MTXORB_FTDI_RANGE_0109_PID 0x0109 | ||
131 | #define MTXORB_FTDI_RANGE_010A_PID 0x010A | ||
132 | #define MTXORB_FTDI_RANGE_010B_PID 0x010B | ||
133 | #define MTXORB_FTDI_RANGE_010C_PID 0x010C | ||
134 | #define MTXORB_FTDI_RANGE_010D_PID 0x010D | ||
135 | #define MTXORB_FTDI_RANGE_010E_PID 0x010E | ||
136 | #define MTXORB_FTDI_RANGE_010F_PID 0x010F | ||
137 | #define MTXORB_FTDI_RANGE_0110_PID 0x0110 | ||
138 | #define MTXORB_FTDI_RANGE_0111_PID 0x0111 | ||
139 | #define MTXORB_FTDI_RANGE_0112_PID 0x0112 | ||
140 | #define MTXORB_FTDI_RANGE_0113_PID 0x0113 | ||
141 | #define MTXORB_FTDI_RANGE_0114_PID 0x0114 | ||
142 | #define MTXORB_FTDI_RANGE_0115_PID 0x0115 | ||
143 | #define MTXORB_FTDI_RANGE_0116_PID 0x0116 | ||
144 | #define MTXORB_FTDI_RANGE_0117_PID 0x0117 | ||
145 | #define MTXORB_FTDI_RANGE_0118_PID 0x0118 | ||
146 | #define MTXORB_FTDI_RANGE_0119_PID 0x0119 | ||
147 | #define MTXORB_FTDI_RANGE_011A_PID 0x011A | ||
148 | #define MTXORB_FTDI_RANGE_011B_PID 0x011B | ||
149 | #define MTXORB_FTDI_RANGE_011C_PID 0x011C | ||
150 | #define MTXORB_FTDI_RANGE_011D_PID 0x011D | ||
151 | #define MTXORB_FTDI_RANGE_011E_PID 0x011E | ||
152 | #define MTXORB_FTDI_RANGE_011F_PID 0x011F | ||
153 | #define MTXORB_FTDI_RANGE_0120_PID 0x0120 | ||
154 | #define MTXORB_FTDI_RANGE_0121_PID 0x0121 | ||
155 | #define MTXORB_FTDI_RANGE_0122_PID 0x0122 | ||
156 | #define MTXORB_FTDI_RANGE_0123_PID 0x0123 | ||
157 | #define MTXORB_FTDI_RANGE_0124_PID 0x0124 | ||
158 | #define MTXORB_FTDI_RANGE_0125_PID 0x0125 | ||
159 | #define MTXORB_FTDI_RANGE_0126_PID 0x0126 | ||
160 | #define MTXORB_FTDI_RANGE_0127_PID 0x0127 | ||
161 | #define MTXORB_FTDI_RANGE_0128_PID 0x0128 | ||
162 | #define MTXORB_FTDI_RANGE_0129_PID 0x0129 | ||
163 | #define MTXORB_FTDI_RANGE_012A_PID 0x012A | ||
164 | #define MTXORB_FTDI_RANGE_012B_PID 0x012B | ||
165 | #define MTXORB_FTDI_RANGE_012C_PID 0x012C | ||
166 | #define MTXORB_FTDI_RANGE_012D_PID 0x012D | ||
167 | #define MTXORB_FTDI_RANGE_012E_PID 0x012E | ||
168 | #define MTXORB_FTDI_RANGE_012F_PID 0x012F | ||
169 | #define MTXORB_FTDI_RANGE_0130_PID 0x0130 | ||
170 | #define MTXORB_FTDI_RANGE_0131_PID 0x0131 | ||
171 | #define MTXORB_FTDI_RANGE_0132_PID 0x0132 | ||
172 | #define MTXORB_FTDI_RANGE_0133_PID 0x0133 | ||
173 | #define MTXORB_FTDI_RANGE_0134_PID 0x0134 | ||
174 | #define MTXORB_FTDI_RANGE_0135_PID 0x0135 | ||
175 | #define MTXORB_FTDI_RANGE_0136_PID 0x0136 | ||
176 | #define MTXORB_FTDI_RANGE_0137_PID 0x0137 | ||
177 | #define MTXORB_FTDI_RANGE_0138_PID 0x0138 | ||
178 | #define MTXORB_FTDI_RANGE_0139_PID 0x0139 | ||
179 | #define MTXORB_FTDI_RANGE_013A_PID 0x013A | ||
180 | #define MTXORB_FTDI_RANGE_013B_PID 0x013B | ||
181 | #define MTXORB_FTDI_RANGE_013C_PID 0x013C | ||
182 | #define MTXORB_FTDI_RANGE_013D_PID 0x013D | ||
183 | #define MTXORB_FTDI_RANGE_013E_PID 0x013E | ||
184 | #define MTXORB_FTDI_RANGE_013F_PID 0x013F | ||
185 | #define MTXORB_FTDI_RANGE_0140_PID 0x0140 | ||
186 | #define MTXORB_FTDI_RANGE_0141_PID 0x0141 | ||
187 | #define MTXORB_FTDI_RANGE_0142_PID 0x0142 | ||
188 | #define MTXORB_FTDI_RANGE_0143_PID 0x0143 | ||
189 | #define MTXORB_FTDI_RANGE_0144_PID 0x0144 | ||
190 | #define MTXORB_FTDI_RANGE_0145_PID 0x0145 | ||
191 | #define MTXORB_FTDI_RANGE_0146_PID 0x0146 | ||
192 | #define MTXORB_FTDI_RANGE_0147_PID 0x0147 | ||
193 | #define MTXORB_FTDI_RANGE_0148_PID 0x0148 | ||
194 | #define MTXORB_FTDI_RANGE_0149_PID 0x0149 | ||
195 | #define MTXORB_FTDI_RANGE_014A_PID 0x014A | ||
196 | #define MTXORB_FTDI_RANGE_014B_PID 0x014B | ||
197 | #define MTXORB_FTDI_RANGE_014C_PID 0x014C | ||
198 | #define MTXORB_FTDI_RANGE_014D_PID 0x014D | ||
199 | #define MTXORB_FTDI_RANGE_014E_PID 0x014E | ||
200 | #define MTXORB_FTDI_RANGE_014F_PID 0x014F | ||
201 | #define MTXORB_FTDI_RANGE_0150_PID 0x0150 | ||
202 | #define MTXORB_FTDI_RANGE_0151_PID 0x0151 | ||
203 | #define MTXORB_FTDI_RANGE_0152_PID 0x0152 | ||
204 | #define MTXORB_FTDI_RANGE_0153_PID 0x0153 | ||
205 | #define MTXORB_FTDI_RANGE_0154_PID 0x0154 | ||
206 | #define MTXORB_FTDI_RANGE_0155_PID 0x0155 | ||
207 | #define MTXORB_FTDI_RANGE_0156_PID 0x0156 | ||
208 | #define MTXORB_FTDI_RANGE_0157_PID 0x0157 | ||
209 | #define MTXORB_FTDI_RANGE_0158_PID 0x0158 | ||
210 | #define MTXORB_FTDI_RANGE_0159_PID 0x0159 | ||
211 | #define MTXORB_FTDI_RANGE_015A_PID 0x015A | ||
212 | #define MTXORB_FTDI_RANGE_015B_PID 0x015B | ||
213 | #define MTXORB_FTDI_RANGE_015C_PID 0x015C | ||
214 | #define MTXORB_FTDI_RANGE_015D_PID 0x015D | ||
215 | #define MTXORB_FTDI_RANGE_015E_PID 0x015E | ||
216 | #define MTXORB_FTDI_RANGE_015F_PID 0x015F | ||
217 | #define MTXORB_FTDI_RANGE_0160_PID 0x0160 | ||
218 | #define MTXORB_FTDI_RANGE_0161_PID 0x0161 | ||
219 | #define MTXORB_FTDI_RANGE_0162_PID 0x0162 | ||
220 | #define MTXORB_FTDI_RANGE_0163_PID 0x0163 | ||
221 | #define MTXORB_FTDI_RANGE_0164_PID 0x0164 | ||
222 | #define MTXORB_FTDI_RANGE_0165_PID 0x0165 | ||
223 | #define MTXORB_FTDI_RANGE_0166_PID 0x0166 | ||
224 | #define MTXORB_FTDI_RANGE_0167_PID 0x0167 | ||
225 | #define MTXORB_FTDI_RANGE_0168_PID 0x0168 | ||
226 | #define MTXORB_FTDI_RANGE_0169_PID 0x0169 | ||
227 | #define MTXORB_FTDI_RANGE_016A_PID 0x016A | ||
228 | #define MTXORB_FTDI_RANGE_016B_PID 0x016B | ||
229 | #define MTXORB_FTDI_RANGE_016C_PID 0x016C | ||
230 | #define MTXORB_FTDI_RANGE_016D_PID 0x016D | ||
231 | #define MTXORB_FTDI_RANGE_016E_PID 0x016E | ||
232 | #define MTXORB_FTDI_RANGE_016F_PID 0x016F | ||
233 | #define MTXORB_FTDI_RANGE_0170_PID 0x0170 | ||
234 | #define MTXORB_FTDI_RANGE_0171_PID 0x0171 | ||
235 | #define MTXORB_FTDI_RANGE_0172_PID 0x0172 | ||
236 | #define MTXORB_FTDI_RANGE_0173_PID 0x0173 | ||
237 | #define MTXORB_FTDI_RANGE_0174_PID 0x0174 | ||
238 | #define MTXORB_FTDI_RANGE_0175_PID 0x0175 | ||
239 | #define MTXORB_FTDI_RANGE_0176_PID 0x0176 | ||
240 | #define MTXORB_FTDI_RANGE_0177_PID 0x0177 | ||
241 | #define MTXORB_FTDI_RANGE_0178_PID 0x0178 | ||
242 | #define MTXORB_FTDI_RANGE_0179_PID 0x0179 | ||
243 | #define MTXORB_FTDI_RANGE_017A_PID 0x017A | ||
244 | #define MTXORB_FTDI_RANGE_017B_PID 0x017B | ||
245 | #define MTXORB_FTDI_RANGE_017C_PID 0x017C | ||
246 | #define MTXORB_FTDI_RANGE_017D_PID 0x017D | ||
247 | #define MTXORB_FTDI_RANGE_017E_PID 0x017E | ||
248 | #define MTXORB_FTDI_RANGE_017F_PID 0x017F | ||
249 | #define MTXORB_FTDI_RANGE_0180_PID 0x0180 | ||
250 | #define MTXORB_FTDI_RANGE_0181_PID 0x0181 | ||
251 | #define MTXORB_FTDI_RANGE_0182_PID 0x0182 | ||
252 | #define MTXORB_FTDI_RANGE_0183_PID 0x0183 | ||
253 | #define MTXORB_FTDI_RANGE_0184_PID 0x0184 | ||
254 | #define MTXORB_FTDI_RANGE_0185_PID 0x0185 | ||
255 | #define MTXORB_FTDI_RANGE_0186_PID 0x0186 | ||
256 | #define MTXORB_FTDI_RANGE_0187_PID 0x0187 | ||
257 | #define MTXORB_FTDI_RANGE_0188_PID 0x0188 | ||
258 | #define MTXORB_FTDI_RANGE_0189_PID 0x0189 | ||
259 | #define MTXORB_FTDI_RANGE_018A_PID 0x018A | ||
260 | #define MTXORB_FTDI_RANGE_018B_PID 0x018B | ||
261 | #define MTXORB_FTDI_RANGE_018C_PID 0x018C | ||
262 | #define MTXORB_FTDI_RANGE_018D_PID 0x018D | ||
263 | #define MTXORB_FTDI_RANGE_018E_PID 0x018E | ||
264 | #define MTXORB_FTDI_RANGE_018F_PID 0x018F | ||
265 | #define MTXORB_FTDI_RANGE_0190_PID 0x0190 | ||
266 | #define MTXORB_FTDI_RANGE_0191_PID 0x0191 | ||
267 | #define MTXORB_FTDI_RANGE_0192_PID 0x0192 | ||
268 | #define MTXORB_FTDI_RANGE_0193_PID 0x0193 | ||
269 | #define MTXORB_FTDI_RANGE_0194_PID 0x0194 | ||
270 | #define MTXORB_FTDI_RANGE_0195_PID 0x0195 | ||
271 | #define MTXORB_FTDI_RANGE_0196_PID 0x0196 | ||
272 | #define MTXORB_FTDI_RANGE_0197_PID 0x0197 | ||
273 | #define MTXORB_FTDI_RANGE_0198_PID 0x0198 | ||
274 | #define MTXORB_FTDI_RANGE_0199_PID 0x0199 | ||
275 | #define MTXORB_FTDI_RANGE_019A_PID 0x019A | ||
276 | #define MTXORB_FTDI_RANGE_019B_PID 0x019B | ||
277 | #define MTXORB_FTDI_RANGE_019C_PID 0x019C | ||
278 | #define MTXORB_FTDI_RANGE_019D_PID 0x019D | ||
279 | #define MTXORB_FTDI_RANGE_019E_PID 0x019E | ||
280 | #define MTXORB_FTDI_RANGE_019F_PID 0x019F | ||
281 | #define MTXORB_FTDI_RANGE_01A0_PID 0x01A0 | ||
282 | #define MTXORB_FTDI_RANGE_01A1_PID 0x01A1 | ||
283 | #define MTXORB_FTDI_RANGE_01A2_PID 0x01A2 | ||
284 | #define MTXORB_FTDI_RANGE_01A3_PID 0x01A3 | ||
285 | #define MTXORB_FTDI_RANGE_01A4_PID 0x01A4 | ||
286 | #define MTXORB_FTDI_RANGE_01A5_PID 0x01A5 | ||
287 | #define MTXORB_FTDI_RANGE_01A6_PID 0x01A6 | ||
288 | #define MTXORB_FTDI_RANGE_01A7_PID 0x01A7 | ||
289 | #define MTXORB_FTDI_RANGE_01A8_PID 0x01A8 | ||
290 | #define MTXORB_FTDI_RANGE_01A9_PID 0x01A9 | ||
291 | #define MTXORB_FTDI_RANGE_01AA_PID 0x01AA | ||
292 | #define MTXORB_FTDI_RANGE_01AB_PID 0x01AB | ||
293 | #define MTXORB_FTDI_RANGE_01AC_PID 0x01AC | ||
294 | #define MTXORB_FTDI_RANGE_01AD_PID 0x01AD | ||
295 | #define MTXORB_FTDI_RANGE_01AE_PID 0x01AE | ||
296 | #define MTXORB_FTDI_RANGE_01AF_PID 0x01AF | ||
297 | #define MTXORB_FTDI_RANGE_01B0_PID 0x01B0 | ||
298 | #define MTXORB_FTDI_RANGE_01B1_PID 0x01B1 | ||
299 | #define MTXORB_FTDI_RANGE_01B2_PID 0x01B2 | ||
300 | #define MTXORB_FTDI_RANGE_01B3_PID 0x01B3 | ||
301 | #define MTXORB_FTDI_RANGE_01B4_PID 0x01B4 | ||
302 | #define MTXORB_FTDI_RANGE_01B5_PID 0x01B5 | ||
303 | #define MTXORB_FTDI_RANGE_01B6_PID 0x01B6 | ||
304 | #define MTXORB_FTDI_RANGE_01B7_PID 0x01B7 | ||
305 | #define MTXORB_FTDI_RANGE_01B8_PID 0x01B8 | ||
306 | #define MTXORB_FTDI_RANGE_01B9_PID 0x01B9 | ||
307 | #define MTXORB_FTDI_RANGE_01BA_PID 0x01BA | ||
308 | #define MTXORB_FTDI_RANGE_01BB_PID 0x01BB | ||
309 | #define MTXORB_FTDI_RANGE_01BC_PID 0x01BC | ||
310 | #define MTXORB_FTDI_RANGE_01BD_PID 0x01BD | ||
311 | #define MTXORB_FTDI_RANGE_01BE_PID 0x01BE | ||
312 | #define MTXORB_FTDI_RANGE_01BF_PID 0x01BF | ||
313 | #define MTXORB_FTDI_RANGE_01C0_PID 0x01C0 | ||
314 | #define MTXORB_FTDI_RANGE_01C1_PID 0x01C1 | ||
315 | #define MTXORB_FTDI_RANGE_01C2_PID 0x01C2 | ||
316 | #define MTXORB_FTDI_RANGE_01C3_PID 0x01C3 | ||
317 | #define MTXORB_FTDI_RANGE_01C4_PID 0x01C4 | ||
318 | #define MTXORB_FTDI_RANGE_01C5_PID 0x01C5 | ||
319 | #define MTXORB_FTDI_RANGE_01C6_PID 0x01C6 | ||
320 | #define MTXORB_FTDI_RANGE_01C7_PID 0x01C7 | ||
321 | #define MTXORB_FTDI_RANGE_01C8_PID 0x01C8 | ||
322 | #define MTXORB_FTDI_RANGE_01C9_PID 0x01C9 | ||
323 | #define MTXORB_FTDI_RANGE_01CA_PID 0x01CA | ||
324 | #define MTXORB_FTDI_RANGE_01CB_PID 0x01CB | ||
325 | #define MTXORB_FTDI_RANGE_01CC_PID 0x01CC | ||
326 | #define MTXORB_FTDI_RANGE_01CD_PID 0x01CD | ||
327 | #define MTXORB_FTDI_RANGE_01CE_PID 0x01CE | ||
328 | #define MTXORB_FTDI_RANGE_01CF_PID 0x01CF | ||
329 | #define MTXORB_FTDI_RANGE_01D0_PID 0x01D0 | ||
330 | #define MTXORB_FTDI_RANGE_01D1_PID 0x01D1 | ||
331 | #define MTXORB_FTDI_RANGE_01D2_PID 0x01D2 | ||
332 | #define MTXORB_FTDI_RANGE_01D3_PID 0x01D3 | ||
333 | #define MTXORB_FTDI_RANGE_01D4_PID 0x01D4 | ||
334 | #define MTXORB_FTDI_RANGE_01D5_PID 0x01D5 | ||
335 | #define MTXORB_FTDI_RANGE_01D6_PID 0x01D6 | ||
336 | #define MTXORB_FTDI_RANGE_01D7_PID 0x01D7 | ||
337 | #define MTXORB_FTDI_RANGE_01D8_PID 0x01D8 | ||
338 | #define MTXORB_FTDI_RANGE_01D9_PID 0x01D9 | ||
339 | #define MTXORB_FTDI_RANGE_01DA_PID 0x01DA | ||
340 | #define MTXORB_FTDI_RANGE_01DB_PID 0x01DB | ||
341 | #define MTXORB_FTDI_RANGE_01DC_PID 0x01DC | ||
342 | #define MTXORB_FTDI_RANGE_01DD_PID 0x01DD | ||
343 | #define MTXORB_FTDI_RANGE_01DE_PID 0x01DE | ||
344 | #define MTXORB_FTDI_RANGE_01DF_PID 0x01DF | ||
345 | #define MTXORB_FTDI_RANGE_01E0_PID 0x01E0 | ||
346 | #define MTXORB_FTDI_RANGE_01E1_PID 0x01E1 | ||
347 | #define MTXORB_FTDI_RANGE_01E2_PID 0x01E2 | ||
348 | #define MTXORB_FTDI_RANGE_01E3_PID 0x01E3 | ||
349 | #define MTXORB_FTDI_RANGE_01E4_PID 0x01E4 | ||
350 | #define MTXORB_FTDI_RANGE_01E5_PID 0x01E5 | ||
351 | #define MTXORB_FTDI_RANGE_01E6_PID 0x01E6 | ||
352 | #define MTXORB_FTDI_RANGE_01E7_PID 0x01E7 | ||
353 | #define MTXORB_FTDI_RANGE_01E8_PID 0x01E8 | ||
354 | #define MTXORB_FTDI_RANGE_01E9_PID 0x01E9 | ||
355 | #define MTXORB_FTDI_RANGE_01EA_PID 0x01EA | ||
356 | #define MTXORB_FTDI_RANGE_01EB_PID 0x01EB | ||
357 | #define MTXORB_FTDI_RANGE_01EC_PID 0x01EC | ||
358 | #define MTXORB_FTDI_RANGE_01ED_PID 0x01ED | ||
359 | #define MTXORB_FTDI_RANGE_01EE_PID 0x01EE | ||
360 | #define MTXORB_FTDI_RANGE_01EF_PID 0x01EF | ||
361 | #define MTXORB_FTDI_RANGE_01F0_PID 0x01F0 | ||
362 | #define MTXORB_FTDI_RANGE_01F1_PID 0x01F1 | ||
363 | #define MTXORB_FTDI_RANGE_01F2_PID 0x01F2 | ||
364 | #define MTXORB_FTDI_RANGE_01F3_PID 0x01F3 | ||
365 | #define MTXORB_FTDI_RANGE_01F4_PID 0x01F4 | ||
366 | #define MTXORB_FTDI_RANGE_01F5_PID 0x01F5 | ||
367 | #define MTXORB_FTDI_RANGE_01F6_PID 0x01F6 | ||
368 | #define MTXORB_FTDI_RANGE_01F7_PID 0x01F7 | ||
369 | #define MTXORB_FTDI_RANGE_01F8_PID 0x01F8 | ||
370 | #define MTXORB_FTDI_RANGE_01F9_PID 0x01F9 | ||
371 | #define MTXORB_FTDI_RANGE_01FA_PID 0x01FA | ||
372 | #define MTXORB_FTDI_RANGE_01FB_PID 0x01FB | ||
373 | #define MTXORB_FTDI_RANGE_01FC_PID 0x01FC | ||
374 | #define MTXORB_FTDI_RANGE_01FD_PID 0x01FD | ||
375 | #define MTXORB_FTDI_RANGE_01FE_PID 0x01FE | ||
376 | #define MTXORB_FTDI_RANGE_01FF_PID 0x01FF | ||
377 | |||
378 | |||
122 | 379 | ||
123 | /* Interbiometrics USB I/O Board */ | 380 | /* Interbiometrics USB I/O Board */ |
124 | /* Developed for Interbiometrics by Rudolf Gugler */ | 381 | /* Developed for Interbiometrics by Rudolf Gugler */ |
@@ -592,6 +849,12 @@ | |||
592 | #define FIC_NEO1973_DEBUG_PID 0x5118 | 849 | #define FIC_NEO1973_DEBUG_PID 0x5118 |
593 | 850 | ||
594 | /* | 851 | /* |
852 | * RATOC REX-USB60F | ||
853 | */ | ||
854 | #define RATOC_VENDOR_ID 0x0584 | ||
855 | #define RATOC_PRODUCT_ID_USB60F 0xb020 | ||
856 | |||
857 | /* | ||
595 | * BmRequestType: 1100 0000b | 858 | * BmRequestType: 1100 0000b |
596 | * bRequest: FTDI_E2_READ | 859 | * bRequest: FTDI_E2_READ |
597 | * wValue: 0 | 860 | * wValue: 0 |
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c index e7e016e60333..43cfde83a93b 100644 --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c | |||
@@ -183,6 +183,7 @@ static int option_send_setup(struct usb_serial_port *port); | |||
183 | #define AXESSTEL_PRODUCT_MV110H 0x1000 | 183 | #define AXESSTEL_PRODUCT_MV110H 0x1000 |
184 | 184 | ||
185 | #define ONDA_VENDOR_ID 0x19d2 | 185 | #define ONDA_VENDOR_ID 0x19d2 |
186 | #define ONDA_PRODUCT_MSA501HS 0x0001 | ||
186 | #define ONDA_PRODUCT_ET502HS 0x0002 | 187 | #define ONDA_PRODUCT_ET502HS 0x0002 |
187 | 188 | ||
188 | #define BANDRICH_VENDOR_ID 0x1A8D | 189 | #define BANDRICH_VENDOR_ID 0x1A8D |
@@ -196,6 +197,9 @@ static int option_send_setup(struct usb_serial_port *port); | |||
196 | 197 | ||
197 | #define MAXON_VENDOR_ID 0x16d8 | 198 | #define MAXON_VENDOR_ID 0x16d8 |
198 | 199 | ||
200 | #define TELIT_VENDOR_ID 0x1bc7 | ||
201 | #define TELIT_PRODUCT_UC864E 0x1003 | ||
202 | |||
199 | static struct usb_device_id option_ids[] = { | 203 | static struct usb_device_id option_ids[] = { |
200 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, | 204 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_COLT) }, |
201 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, | 205 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_RICOLA) }, |
@@ -232,25 +236,25 @@ static struct usb_device_id option_ids[] = { | |||
232 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_EX) }, | 236 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_NETWORK_EX) }, |
233 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) }, | 237 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_MODEM) }, |
234 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_NETWORK) }, | 238 | { USB_DEVICE(OPTION_VENDOR_ID, OPTION_PRODUCT_ETNA_KOI_NETWORK) }, |
235 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600) }, | 239 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E600, 0xff, 0xff, 0xff) }, |
236 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, | 240 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220, 0xff, 0xff, 0xff) }, |
237 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, | 241 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E220BIS, 0xff, 0xff, 0xff) }, |
238 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401) }, | 242 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1401, 0xff, 0xff, 0xff) }, |
239 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403) }, | 243 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1403, 0xff, 0xff, 0xff) }, |
240 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405) }, | 244 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1405, 0xff, 0xff, 0xff) }, |
241 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406) }, | 245 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1406, 0xff, 0xff, 0xff) }, |
242 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408) }, | 246 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1408, 0xff, 0xff, 0xff) }, |
243 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409) }, | 247 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1409, 0xff, 0xff, 0xff) }, |
244 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410) }, | 248 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1410, 0xff, 0xff, 0xff) }, |
245 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411) }, | 249 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1411, 0xff, 0xff, 0xff) }, |
246 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412) }, | 250 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1412, 0xff, 0xff, 0xff) }, |
247 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413) }, | 251 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1413, 0xff, 0xff, 0xff) }, |
248 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414) }, | 252 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1414, 0xff, 0xff, 0xff) }, |
249 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415) }, | 253 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1415, 0xff, 0xff, 0xff) }, |
250 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416) }, | 254 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1416, 0xff, 0xff, 0xff) }, |
251 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417) }, | 255 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1417, 0xff, 0xff, 0xff) }, |
252 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418) }, | 256 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1418, 0xff, 0xff, 0xff) }, |
253 | { USB_DEVICE(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419) }, | 257 | { USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, HUAWEI_PRODUCT_E1419, 0xff, 0xff, 0xff) }, |
254 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) }, | 258 | { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_9508) }, |
255 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ | 259 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V640) }, /* Novatel Merlin V640/XV620 */ |
256 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ | 260 | { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_V620) }, /* Novatel Merlin V620/S620 */ |
@@ -297,13 +301,14 @@ static struct usb_device_id option_ids[] = { | |||
297 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, | 301 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, |
298 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, | 302 | { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, |
299 | { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) }, | 303 | { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) }, |
304 | { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) }, | ||
300 | { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) }, | 305 | { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) }, |
301 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) }, | 306 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) }, |
302 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, | 307 | { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, |
303 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, | 308 | { USB_DEVICE(KYOCERA_VENDOR_ID, KYOCERA_PRODUCT_KPC680) }, |
304 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ | 309 | { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ |
305 | { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ | 310 | { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ |
306 | { USB_DEVICE(0x19d2, 0x0001) }, /* Telstra NextG CDMA */ | 311 | { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, |
307 | { } /* Terminating entry */ | 312 | { } /* Terminating entry */ |
308 | }; | 313 | }; |
309 | MODULE_DEVICE_TABLE(usb, option_ids); | 314 | MODULE_DEVICE_TABLE(usb, option_ids); |
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c index c605fb68f807..103195abd417 100644 --- a/drivers/usb/serial/pl2303.c +++ b/drivers/usb/serial/pl2303.c | |||
@@ -56,6 +56,7 @@ static struct usb_device_id id_table [] = { | |||
56 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_RSAQ3) }, | 56 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_RSAQ3) }, |
57 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_PHAROS) }, | 57 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_PHAROS) }, |
58 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ALDIGA) }, | 58 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_ALDIGA) }, |
59 | { USB_DEVICE(PL2303_VENDOR_ID, PL2303_PRODUCT_ID_MMX) }, | ||
59 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, | 60 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID) }, |
60 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, | 61 | { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, |
61 | { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, | 62 | { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID) }, |
@@ -66,7 +67,6 @@ static struct usb_device_id id_table [] = { | |||
66 | { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID_2080) }, | 67 | { USB_DEVICE(ITEGNO_VENDOR_ID, ITEGNO_PRODUCT_ID_2080) }, |
67 | { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) }, | 68 | { USB_DEVICE(MA620_VENDOR_ID, MA620_PRODUCT_ID) }, |
68 | { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) }, | 69 | { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID) }, |
69 | { USB_DEVICE(RATOC_VENDOR_ID, RATOC_PRODUCT_ID_USB60F) }, | ||
70 | { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) }, | 70 | { USB_DEVICE(TRIPP_VENDOR_ID, TRIPP_PRODUCT_ID) }, |
71 | { USB_DEVICE(RADIOSHACK_VENDOR_ID, RADIOSHACK_PRODUCT_ID) }, | 71 | { USB_DEVICE(RADIOSHACK_VENDOR_ID, RADIOSHACK_PRODUCT_ID) }, |
72 | { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) }, | 72 | { USB_DEVICE(DCU10_VENDOR_ID, DCU10_PRODUCT_ID) }, |
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h index 10cf872e5ecb..cff160abb130 100644 --- a/drivers/usb/serial/pl2303.h +++ b/drivers/usb/serial/pl2303.h | |||
@@ -14,6 +14,7 @@ | |||
14 | #define PL2303_PRODUCT_ID_PHAROS 0xaaa0 | 14 | #define PL2303_PRODUCT_ID_PHAROS 0xaaa0 |
15 | #define PL2303_PRODUCT_ID_RSAQ3 0xaaa2 | 15 | #define PL2303_PRODUCT_ID_RSAQ3 0xaaa2 |
16 | #define PL2303_PRODUCT_ID_ALDIGA 0x0611 | 16 | #define PL2303_PRODUCT_ID_ALDIGA 0x0611 |
17 | #define PL2303_PRODUCT_ID_MMX 0x0612 | ||
17 | 18 | ||
18 | #define ATEN_VENDOR_ID 0x0557 | 19 | #define ATEN_VENDOR_ID 0x0557 |
19 | #define ATEN_VENDOR_ID2 0x0547 | 20 | #define ATEN_VENDOR_ID2 0x0547 |
@@ -36,7 +37,6 @@ | |||
36 | 37 | ||
37 | #define RATOC_VENDOR_ID 0x0584 | 38 | #define RATOC_VENDOR_ID 0x0584 |
38 | #define RATOC_PRODUCT_ID 0xb000 | 39 | #define RATOC_PRODUCT_ID 0xb000 |
39 | #define RATOC_PRODUCT_ID_USB60F 0xb020 | ||
40 | 40 | ||
41 | #define TRIPP_VENDOR_ID 0x2478 | 41 | #define TRIPP_VENDOR_ID 0x2478 |
42 | #define TRIPP_PRODUCT_ID 0x2008 | 42 | #define TRIPP_PRODUCT_ID 0x2008 |
diff --git a/drivers/usb/storage/unusual_devs.h b/drivers/usb/storage/unusual_devs.h index 1b09578cbb10..45fe3663fa7f 100644 --- a/drivers/usb/storage/unusual_devs.h +++ b/drivers/usb/storage/unusual_devs.h | |||
@@ -405,7 +405,7 @@ UNUSUAL_DEV( 0x04a5, 0x3010, 0x0100, 0x0100, | |||
405 | UNUSUAL_DEV( 0x04b4, 0x6830, 0x0000, 0x9999, | 405 | UNUSUAL_DEV( 0x04b4, 0x6830, 0x0000, 0x9999, |
406 | "Cypress", | 406 | "Cypress", |
407 | "Cypress AT2LP", | 407 | "Cypress AT2LP", |
408 | US_SC_CYP_ATACB, US_PR_BULK, NULL, | 408 | US_SC_CYP_ATACB, US_PR_DEVICE, NULL, |
409 | 0), | 409 | 0), |
410 | #endif | 410 | #endif |
411 | 411 | ||
@@ -1522,7 +1522,7 @@ UNUSUAL_DEV( 0x0fce, 0xe031, 0x0000, 0x0000, | |||
1522 | "Sony Ericsson", | 1522 | "Sony Ericsson", |
1523 | "M600i", | 1523 | "M600i", |
1524 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1524 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
1525 | US_FL_FIX_CAPACITY ), | 1525 | US_FL_IGNORE_RESIDUE | US_FL_FIX_CAPACITY ), |
1526 | 1526 | ||
1527 | /* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu> | 1527 | /* Reported by Kevin Cernekee <kpc-usbdev@gelato.uiuc.edu> |
1528 | * Tested on hardware version 1.10. | 1528 | * Tested on hardware version 1.10. |
@@ -1716,10 +1716,12 @@ UNUSUAL_DEV( 0x22b8, 0x3010, 0x0001, 0x0001, | |||
1716 | /* | 1716 | /* |
1717 | * Patch by Pete Zaitcev <zaitcev@redhat.com> | 1717 | * Patch by Pete Zaitcev <zaitcev@redhat.com> |
1718 | * Report by Mark Patton. Red Hat bz#208928. | 1718 | * Report by Mark Patton. Red Hat bz#208928. |
1719 | * Added support for rev 0x0002 (Motorola ROKR W5) | ||
1720 | * by Javier Smaldone <javier@smaldone.com.ar> | ||
1719 | */ | 1721 | */ |
1720 | UNUSUAL_DEV( 0x22b8, 0x4810, 0x0001, 0x0001, | 1722 | UNUSUAL_DEV( 0x22b8, 0x4810, 0x0001, 0x0002, |
1721 | "Motorola", | 1723 | "Motorola", |
1722 | "RAZR V3i", | 1724 | "RAZR V3i/ROKR W5", |
1723 | US_SC_DEVICE, US_PR_DEVICE, NULL, | 1725 | US_SC_DEVICE, US_PR_DEVICE, NULL, |
1724 | US_FL_FIX_CAPACITY), | 1726 | US_FL_FIX_CAPACITY), |
1725 | 1727 | ||
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index 2cdaf1ff8315..002b61b4f0f6 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
@@ -627,11 +627,9 @@ config FB_MAC | |||
627 | select FB_CFB_IMAGEBLIT | 627 | select FB_CFB_IMAGEBLIT |
628 | select FB_MACMODES | 628 | select FB_MACMODES |
629 | 629 | ||
630 | # bool ' Apple DAFB display support' CONFIG_FB_DAFB | ||
631 | config FB_HP300 | 630 | config FB_HP300 |
632 | bool | 631 | bool |
633 | depends on (FB = y) && HP300 | 632 | depends on (FB = y) && DIO |
634 | select FB_CFB_FILLRECT | ||
635 | select FB_CFB_IMAGEBLIT | 633 | select FB_CFB_IMAGEBLIT |
636 | default y | 634 | default y |
637 | 635 | ||
diff --git a/drivers/video/amifb.c b/drivers/video/amifb.c index e6492c1048bf..05a328c11a8b 100644 --- a/drivers/video/amifb.c +++ b/drivers/video/amifb.c | |||
@@ -2261,7 +2261,7 @@ int __init amifb_init(void) | |||
2261 | amifb_setup(option); | 2261 | amifb_setup(option); |
2262 | #endif | 2262 | #endif |
2263 | if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_VIDEO)) | 2263 | if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(AMI_VIDEO)) |
2264 | return -ENXIO; | 2264 | return -ENODEV; |
2265 | 2265 | ||
2266 | /* | 2266 | /* |
2267 | * We request all registers starting from bplpt[0] | 2267 | * We request all registers starting from bplpt[0] |
@@ -2333,7 +2333,7 @@ default_chipset: | |||
2333 | strcat(fb_info.fix.id, "Unknown"); | 2333 | strcat(fb_info.fix.id, "Unknown"); |
2334 | goto default_chipset; | 2334 | goto default_chipset; |
2335 | #else /* CONFIG_FB_AMIGA_OCS */ | 2335 | #else /* CONFIG_FB_AMIGA_OCS */ |
2336 | err = -ENXIO; | 2336 | err = -ENODEV; |
2337 | goto amifb_error; | 2337 | goto amifb_error; |
2338 | #endif /* CONFIG_FB_AMIGA_OCS */ | 2338 | #endif /* CONFIG_FB_AMIGA_OCS */ |
2339 | break; | 2339 | break; |
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c index e4bcf5376a99..bd4ac0bafecb 100644 --- a/drivers/video/aty/atyfb_base.c +++ b/drivers/video/aty/atyfb_base.c | |||
@@ -3356,7 +3356,7 @@ static int __devinit atyfb_setup_generic(struct pci_dev *pdev, struct fb_info *i | |||
3356 | 3356 | ||
3357 | info->fix.mmio_start = raddr; | 3357 | info->fix.mmio_start = raddr; |
3358 | par->ati_regbase = ioremap(info->fix.mmio_start, 0x1000); | 3358 | par->ati_regbase = ioremap(info->fix.mmio_start, 0x1000); |
3359 | if (par->ati_regbase == 0) | 3359 | if (par->ati_regbase == NULL) |
3360 | return -ENOMEM; | 3360 | return -ENOMEM; |
3361 | 3361 | ||
3362 | info->fix.mmio_start += par->aux_start ? 0x400 : 0xc00; | 3362 | info->fix.mmio_start += par->aux_start ? 0x400 : 0xc00; |
diff --git a/drivers/video/aty/radeon_base.c b/drivers/video/aty/radeon_base.c index 72cd0d2f14ec..400e9264e456 100644 --- a/drivers/video/aty/radeon_base.c +++ b/drivers/video/aty/radeon_base.c | |||
@@ -2277,8 +2277,8 @@ static int __devinit radeonfb_pci_register (struct pci_dev *pdev, | |||
2277 | do { | 2277 | do { |
2278 | rinfo->fb_base = ioremap (rinfo->fb_base_phys, | 2278 | rinfo->fb_base = ioremap (rinfo->fb_base_phys, |
2279 | rinfo->mapped_vram); | 2279 | rinfo->mapped_vram); |
2280 | } while ( rinfo->fb_base == 0 && | 2280 | } while (rinfo->fb_base == NULL && |
2281 | ((rinfo->mapped_vram /=2) >= MIN_MAPPED_VRAM) ); | 2281 | ((rinfo->mapped_vram /= 2) >= MIN_MAPPED_VRAM)); |
2282 | 2282 | ||
2283 | if (rinfo->fb_base == NULL) { | 2283 | if (rinfo->fb_base == NULL) { |
2284 | printk (KERN_ERR "radeonfb (%s): cannot map FB\n", | 2284 | printk (KERN_ERR "radeonfb (%s): cannot map FB\n", |
diff --git a/drivers/video/display/display-sysfs.c b/drivers/video/display/display-sysfs.c index 35477177bef4..6ef800bdf482 100644 --- a/drivers/video/display/display-sysfs.c +++ b/drivers/video/display/display-sysfs.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/ctype.h> | 26 | #include <linux/ctype.h> |
27 | #include <linux/idr.h> | 27 | #include <linux/idr.h> |
28 | #include <linux/err.h> | 28 | #include <linux/err.h> |
29 | #include <linux/kdev_t.h> | ||
29 | 30 | ||
30 | static ssize_t display_show_name(struct device *dev, | 31 | static ssize_t display_show_name(struct device *dev, |
31 | struct device_attribute *attr, char *buf) | 32 | struct device_attribute *attr, char *buf) |
@@ -152,10 +153,13 @@ struct display_device *display_device_register(struct display_driver *driver, | |||
152 | mutex_unlock(&allocated_dsp_lock); | 153 | mutex_unlock(&allocated_dsp_lock); |
153 | 154 | ||
154 | if (!ret) { | 155 | if (!ret) { |
155 | new_dev->dev = device_create(display_class, parent, 0, | 156 | new_dev->dev = device_create_drvdata(display_class, |
156 | "display%d", new_dev->idx); | 157 | parent, |
158 | MKDEV(0,0), | ||
159 | new_dev, | ||
160 | "display%d", | ||
161 | new_dev->idx); | ||
157 | if (!IS_ERR(new_dev->dev)) { | 162 | if (!IS_ERR(new_dev->dev)) { |
158 | dev_set_drvdata(new_dev->dev, new_dev); | ||
159 | new_dev->parent = parent; | 163 | new_dev->parent = parent; |
160 | new_dev->driver = driver; | 164 | new_dev->driver = driver; |
161 | mutex_init(&new_dev->lock); | 165 | mutex_init(&new_dev->lock); |
diff --git a/drivers/video/dnfb.c b/drivers/video/dnfb.c index b083ea7e9c69..606da043f4b4 100644 --- a/drivers/video/dnfb.c +++ b/drivers/video/dnfb.c | |||
@@ -284,6 +284,9 @@ int __init dnfb_init(void) | |||
284 | { | 284 | { |
285 | int ret; | 285 | int ret; |
286 | 286 | ||
287 | if (!MACH_IS_APOLLO) | ||
288 | return -ENODEV; | ||
289 | |||
287 | if (fb_get_options("dnfb", NULL)) | 290 | if (fb_get_options("dnfb", NULL)) |
288 | return -ENODEV; | 291 | return -ENODEV; |
289 | 292 | ||
diff --git a/drivers/video/hpfb.c b/drivers/video/hpfb.c index 2eb4fb159084..b8ebff1e8493 100644 --- a/drivers/video/hpfb.c +++ b/drivers/video/hpfb.c | |||
@@ -382,7 +382,7 @@ int __init hpfb_init(void) | |||
382 | #define INTFBPADDR 0x560000 | 382 | #define INTFBPADDR 0x560000 |
383 | 383 | ||
384 | if (!MACH_IS_HP300) | 384 | if (!MACH_IS_HP300) |
385 | return -ENXIO; | 385 | return -ENODEV; |
386 | 386 | ||
387 | if (fb_get_options("hpfb", NULL)) | 387 | if (fb_get_options("hpfb", NULL)) |
388 | return -ENODEV; | 388 | return -ENODEV; |
diff --git a/drivers/video/matrox/matroxfb_base.h b/drivers/video/matrox/matroxfb_base.h index f3107ad7e545..95883236c0cd 100644 --- a/drivers/video/matrox/matroxfb_base.h +++ b/drivers/video/matrox/matroxfb_base.h | |||
@@ -200,7 +200,7 @@ static inline int mga_ioremap(unsigned long phys, unsigned long size, int flags, | |||
200 | virt->vaddr = ioremap_nocache(phys, size); | 200 | virt->vaddr = ioremap_nocache(phys, size); |
201 | else | 201 | else |
202 | virt->vaddr = ioremap(phys, size); | 202 | virt->vaddr = ioremap(phys, size); |
203 | return (virt->vaddr == 0); /* 0, !0... 0, error_code in future */ | 203 | return (virt->vaddr == NULL); /* 0, !0... 0, error_code in future */ |
204 | } | 204 | } |
205 | 205 | ||
206 | static inline void mga_iounmap(vaddr_t va) { | 206 | static inline void mga_iounmap(vaddr_t va) { |
diff --git a/drivers/video/pxafb.c b/drivers/video/pxafb.c index 48aea39c35a5..274bc93ab7d8 100644 --- a/drivers/video/pxafb.c +++ b/drivers/video/pxafb.c | |||
@@ -355,9 +355,8 @@ static int pxafb_check_var(struct fb_var_screeninfo *var, struct fb_info *info) | |||
355 | } | 355 | } |
356 | 356 | ||
357 | #ifdef CONFIG_CPU_FREQ | 357 | #ifdef CONFIG_CPU_FREQ |
358 | pr_debug("pxafb: dma period = %d ps, clock = %d kHz\n", | 358 | pr_debug("pxafb: dma period = %d ps\n", |
359 | pxafb_display_dma_period(var), | 359 | pxafb_display_dma_period(var)); |
360 | get_clk_frequency_khz(0)); | ||
361 | #endif | 360 | #endif |
362 | 361 | ||
363 | return 0; | 362 | return 0; |
@@ -1352,7 +1351,6 @@ static struct pxafb_info * __init pxafb_init_fbinfo(struct device *dev) | |||
1352 | struct pxafb_info *fbi; | 1351 | struct pxafb_info *fbi; |
1353 | void *addr; | 1352 | void *addr; |
1354 | struct pxafb_mach_info *inf = dev->platform_data; | 1353 | struct pxafb_mach_info *inf = dev->platform_data; |
1355 | struct pxafb_mode_info *mode = inf->modes; | ||
1356 | 1354 | ||
1357 | /* Alloc the pxafb_info and pseudo_palette in one step */ | 1355 | /* Alloc the pxafb_info and pseudo_palette in one step */ |
1358 | fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL); | 1356 | fbi = kmalloc(sizeof(struct pxafb_info) + sizeof(u32) * 16, GFP_KERNEL); |
diff --git a/drivers/video/s3c2410fb.c b/drivers/video/s3c2410fb.c index 13b38cbbe4cf..f0598961c6b0 100644 --- a/drivers/video/s3c2410fb.c +++ b/drivers/video/s3c2410fb.c | |||
@@ -1,75 +1,15 @@ | |||
1 | /* | 1 | /* linux/drivers/video/s3c2410fb.c |
2 | * linux/drivers/video/s3c2410fb.c | 2 | * Copyright (c) 2004,2005 Arnaud Patard |
3 | * Copyright (c) Arnaud Patard, Ben Dooks | 3 | * Copyright (c) 2004-2008 Ben Dooks |
4 | * | ||
5 | * S3C2410 LCD Framebuffer Driver | ||
4 | * | 6 | * |
5 | * This file is subject to the terms and conditions of the GNU General Public | 7 | * This file is subject to the terms and conditions of the GNU General Public |
6 | * License. See the file COPYING in the main directory of this archive for | 8 | * License. See the file COPYING in the main directory of this archive for |
7 | * more details. | 9 | * more details. |
8 | * | 10 | * |
9 | * S3C2410 LCD Controller Frame Buffer Driver | 11 | * Driver based on skeletonfb.c, sa1100fb.c and others. |
10 | * based on skeletonfb.c, sa1100fb.c and others | 12 | */ |
11 | * | ||
12 | * ChangeLog | ||
13 | * 2005-04-07: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
14 | * - u32 state -> pm_message_t state | ||
15 | * - S3C2410_{VA,SZ}_LCD -> S3C24XX | ||
16 | * | ||
17 | * 2005-03-15: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
18 | * - Removed the ioctl | ||
19 | * - use readl/writel instead of __raw_writel/__raw_readl | ||
20 | * | ||
21 | * 2004-12-04: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
22 | * - Added the possibility to set on or off the | ||
23 | * debugging messages | ||
24 | * - Replaced 0 and 1 by on or off when reading the | ||
25 | * /sys files | ||
26 | * | ||
27 | * 2005-03-23: Ben Dooks <ben-linux@fluff.org> | ||
28 | * - added non 16bpp modes | ||
29 | * - updated platform information for range of x/y/bpp | ||
30 | * - add code to ensure palette is written correctly | ||
31 | * - add pixel clock divisor control | ||
32 | * | ||
33 | * 2004-11-11: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
34 | * - Removed the use of currcon as it no more exists | ||
35 | * - Added LCD power sysfs interface | ||
36 | * | ||
37 | * 2004-11-03: Ben Dooks <ben-linux@fluff.org> | ||
38 | * - minor cleanups | ||
39 | * - add suspend/resume support | ||
40 | * - s3c2410fb_setcolreg() not valid in >8bpp modes | ||
41 | * - removed last CONFIG_FB_S3C2410_FIXED | ||
42 | * - ensure lcd controller stopped before cleanup | ||
43 | * - added sysfs interface for backlight power | ||
44 | * - added mask for gpio configuration | ||
45 | * - ensured IRQs disabled during GPIO configuration | ||
46 | * - disable TPAL before enabling video | ||
47 | * | ||
48 | * 2004-09-20: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
49 | * - Suppress command line options | ||
50 | * | ||
51 | * 2004-09-15: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
52 | * - code cleanup | ||
53 | * | ||
54 | * 2004-09-07: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
55 | * - Renamed from h1940fb.c to s3c2410fb.c | ||
56 | * - Add support for different devices | ||
57 | * - Backlight support | ||
58 | * | ||
59 | * 2004-09-05: Herbert Pötzl <herbert@13thfloor.at> | ||
60 | * - added clock (de-)allocation code | ||
61 | * - added fixem fbmem option | ||
62 | * | ||
63 | * 2004-07-27: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
64 | * - code cleanup | ||
65 | * - added a forgotten return in h1940fb_init | ||
66 | * | ||
67 | * 2004-07-19: Herbert Pötzl <herbert@13thfloor.at> | ||
68 | * - code cleanup and extended debugging | ||
69 | * | ||
70 | * 2004-07-15: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
71 | * - First version | ||
72 | */ | ||
73 | 13 | ||
74 | #include <linux/module.h> | 14 | #include <linux/module.h> |
75 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
@@ -580,6 +520,27 @@ static int s3c2410fb_setcolreg(unsigned regno, | |||
580 | return 0; | 520 | return 0; |
581 | } | 521 | } |
582 | 522 | ||
523 | /* s3c2410fb_lcd_enable | ||
524 | * | ||
525 | * shutdown the lcd controller | ||
526 | */ | ||
527 | static void s3c2410fb_lcd_enable(struct s3c2410fb_info *fbi, int enable) | ||
528 | { | ||
529 | unsigned long flags; | ||
530 | |||
531 | local_irq_save(flags); | ||
532 | |||
533 | if (enable) | ||
534 | fbi->regs.lcdcon1 |= S3C2410_LCDCON1_ENVID; | ||
535 | else | ||
536 | fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID; | ||
537 | |||
538 | writel(fbi->regs.lcdcon1, fbi->io + S3C2410_LCDCON1); | ||
539 | |||
540 | local_irq_restore(flags); | ||
541 | } | ||
542 | |||
543 | |||
583 | /* | 544 | /* |
584 | * s3c2410fb_blank | 545 | * s3c2410fb_blank |
585 | * @blank_mode: the blank mode we want. | 546 | * @blank_mode: the blank mode we want. |
@@ -589,9 +550,6 @@ static int s3c2410fb_setcolreg(unsigned regno, | |||
589 | * blanking succeeded, != 0 if un-/blanking failed due to e.g. a | 550 | * blanking succeeded, != 0 if un-/blanking failed due to e.g. a |
590 | * video mode which doesn't support it. Implements VESA suspend | 551 | * video mode which doesn't support it. Implements VESA suspend |
591 | * and powerdown modes on hardware that supports disabling hsync/vsync: | 552 | * and powerdown modes on hardware that supports disabling hsync/vsync: |
592 | * blank_mode == 2: suspend vsync | ||
593 | * blank_mode == 3: suspend hsync | ||
594 | * blank_mode == 4: powerdown | ||
595 | * | 553 | * |
596 | * Returns negative errno on error, or zero on success. | 554 | * Returns negative errno on error, or zero on success. |
597 | * | 555 | * |
@@ -605,6 +563,12 @@ static int s3c2410fb_blank(int blank_mode, struct fb_info *info) | |||
605 | 563 | ||
606 | tpal_reg += is_s3c2412(fbi) ? S3C2412_TPAL : S3C2410_TPAL; | 564 | tpal_reg += is_s3c2412(fbi) ? S3C2412_TPAL : S3C2410_TPAL; |
607 | 565 | ||
566 | if (blank_mode == FB_BLANK_POWERDOWN) { | ||
567 | s3c2410fb_lcd_enable(fbi, 0); | ||
568 | } else { | ||
569 | s3c2410fb_lcd_enable(fbi, 1); | ||
570 | } | ||
571 | |||
608 | if (blank_mode == FB_BLANK_UNBLANK) | 572 | if (blank_mode == FB_BLANK_UNBLANK) |
609 | writel(0x0, tpal_reg); | 573 | writel(0x0, tpal_reg); |
610 | else { | 574 | else { |
@@ -948,7 +912,10 @@ static int __init s3c24xxfb_probe(struct platform_device *pdev, | |||
948 | } | 912 | } |
949 | 913 | ||
950 | /* create device files */ | 914 | /* create device files */ |
951 | device_create_file(&pdev->dev, &dev_attr_debug); | 915 | ret = device_create_file(&pdev->dev, &dev_attr_debug); |
916 | if (ret) { | ||
917 | printk(KERN_ERR "failed to add debug attribute\n"); | ||
918 | } | ||
952 | 919 | ||
953 | printk(KERN_INFO "fb%d: %s frame buffer device\n", | 920 | printk(KERN_INFO "fb%d: %s frame buffer device\n", |
954 | fbinfo->node, fbinfo->fix.id); | 921 | fbinfo->node, fbinfo->fix.id); |
@@ -983,21 +950,6 @@ static int __init s3c2412fb_probe(struct platform_device *pdev) | |||
983 | return s3c24xxfb_probe(pdev, DRV_S3C2412); | 950 | return s3c24xxfb_probe(pdev, DRV_S3C2412); |
984 | } | 951 | } |
985 | 952 | ||
986 | /* s3c2410fb_stop_lcd | ||
987 | * | ||
988 | * shutdown the lcd controller | ||
989 | */ | ||
990 | static void s3c2410fb_stop_lcd(struct s3c2410fb_info *fbi) | ||
991 | { | ||
992 | unsigned long flags; | ||
993 | |||
994 | local_irq_save(flags); | ||
995 | |||
996 | fbi->regs.lcdcon1 &= ~S3C2410_LCDCON1_ENVID; | ||
997 | writel(fbi->regs.lcdcon1, fbi->io + S3C2410_LCDCON1); | ||
998 | |||
999 | local_irq_restore(flags); | ||
1000 | } | ||
1001 | 953 | ||
1002 | /* | 954 | /* |
1003 | * Cleanup | 955 | * Cleanup |
@@ -1010,7 +962,7 @@ static int s3c2410fb_remove(struct platform_device *pdev) | |||
1010 | 962 | ||
1011 | unregister_framebuffer(fbinfo); | 963 | unregister_framebuffer(fbinfo); |
1012 | 964 | ||
1013 | s3c2410fb_stop_lcd(info); | 965 | s3c2410fb_lcd_enable(info, 0); |
1014 | msleep(1); | 966 | msleep(1); |
1015 | 967 | ||
1016 | s3c2410fb_unmap_video_memory(fbinfo); | 968 | s3c2410fb_unmap_video_memory(fbinfo); |
@@ -1043,7 +995,7 @@ static int s3c2410fb_suspend(struct platform_device *dev, pm_message_t state) | |||
1043 | struct fb_info *fbinfo = platform_get_drvdata(dev); | 995 | struct fb_info *fbinfo = platform_get_drvdata(dev); |
1044 | struct s3c2410fb_info *info = fbinfo->par; | 996 | struct s3c2410fb_info *info = fbinfo->par; |
1045 | 997 | ||
1046 | s3c2410fb_stop_lcd(info); | 998 | s3c2410fb_lcd_enable(info, 0); |
1047 | 999 | ||
1048 | /* sleep before disabling the clock, we need to ensure | 1000 | /* sleep before disabling the clock, we need to ensure |
1049 | * the LCD DMA engine is not going to get back on the bus | 1001 | * the LCD DMA engine is not going to get back on the bus |
@@ -1118,3 +1070,5 @@ MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>, " | |||
1118 | "Ben Dooks <ben-linux@fluff.org>"); | 1070 | "Ben Dooks <ben-linux@fluff.org>"); |
1119 | MODULE_DESCRIPTION("Framebuffer driver for the s3c2410"); | 1071 | MODULE_DESCRIPTION("Framebuffer driver for the s3c2410"); |
1120 | MODULE_LICENSE("GPL"); | 1072 | MODULE_LICENSE("GPL"); |
1073 | MODULE_ALIAS("platform:s3c2410-lcd"); | ||
1074 | MODULE_ALIAS("platform:s3c2412-lcd"); | ||
diff --git a/drivers/video/s3c2410fb.h b/drivers/video/s3c2410fb.h index dbb73b95e2ef..9a6ba3e9d1b8 100644 --- a/drivers/video/s3c2410fb.h +++ b/drivers/video/s3c2410fb.h | |||
@@ -1,26 +1,14 @@ | |||
1 | /* | 1 | /* |
2 | * linux/drivers/video/s3c2410fb.h | 2 | * linux/drivers/video/s3c2410fb.h |
3 | * Copyright (c) Arnaud Patard | 3 | * Copyright (c) 2004 Arnaud Patard |
4 | * | ||
5 | * S3C2410 LCD Framebuffer Driver | ||
4 | * | 6 | * |
5 | * This file is subject to the terms and conditions of the GNU General Public | 7 | * This file is subject to the terms and conditions of the GNU General Public |
6 | * License. See the file COPYING in the main directory of this archive for | 8 | * License. See the file COPYING in the main directory of this archive for |
7 | * more details. | 9 | * more details. |
8 | * | 10 | * |
9 | * S3C2410 LCD Controller Frame Buffer Driver | 11 | */ |
10 | * based on skeletonfb.c, sa1100fb.h | ||
11 | * | ||
12 | * ChangeLog | ||
13 | * | ||
14 | * 2004-12-04: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
15 | * - Moved dprintk to s3c2410fb.c | ||
16 | * | ||
17 | * 2004-09-07: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
18 | * - Renamed from h1940fb.h to s3c2410fb.h | ||
19 | * - Changed h1940 to s3c2410 | ||
20 | * | ||
21 | * 2004-07-15: Arnaud Patard <arnaud.patard@rtp-net.org> | ||
22 | * - First version | ||
23 | */ | ||
24 | 12 | ||
25 | #ifndef __S3C2410FB_H | 13 | #ifndef __S3C2410FB_H |
26 | #define __S3C2410FB_H | 14 | #define __S3C2410FB_H |
diff --git a/drivers/video/sis/sis_main.c b/drivers/video/sis/sis_main.c index 73803624c131..b9343844cd1f 100644 --- a/drivers/video/sis/sis_main.c +++ b/drivers/video/sis/sis_main.c | |||
@@ -5787,7 +5787,7 @@ sisfb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
5787 | } else { | 5787 | } else { |
5788 | struct sis_video_info *countvideo = card_list; | 5788 | struct sis_video_info *countvideo = card_list; |
5789 | ivideo->cardnumber = 1; | 5789 | ivideo->cardnumber = 1; |
5790 | while((countvideo = countvideo->next) != 0) | 5790 | while((countvideo = countvideo->next) != NULL) |
5791 | ivideo->cardnumber++; | 5791 | ivideo->cardnumber++; |
5792 | } | 5792 | } |
5793 | 5793 | ||
diff --git a/drivers/video/sm501fb.c b/drivers/video/sm501fb.c index 742b5c656d66..15d4a768b1f6 100644 --- a/drivers/video/sm501fb.c +++ b/drivers/video/sm501fb.c | |||
@@ -663,14 +663,14 @@ static void sm501fb_panel_power(struct sm501fb_info *fbi, int to) | |||
663 | sm501fb_sync_regs(fbi); | 663 | sm501fb_sync_regs(fbi); |
664 | mdelay(10); | 664 | mdelay(10); |
665 | 665 | ||
666 | if (pd->flags & SM501FB_FLAG_PANEL_USE_VBIASEN) { | 666 | if (!(pd->flags & SM501FB_FLAG_PANEL_NO_VBIASEN)) { |
667 | control |= SM501_DC_PANEL_CONTROL_BIAS; /* VBIASEN */ | 667 | control |= SM501_DC_PANEL_CONTROL_BIAS; /* VBIASEN */ |
668 | writel(control, ctrl_reg); | 668 | writel(control, ctrl_reg); |
669 | sm501fb_sync_regs(fbi); | 669 | sm501fb_sync_regs(fbi); |
670 | mdelay(10); | 670 | mdelay(10); |
671 | } | 671 | } |
672 | 672 | ||
673 | if (pd->flags & SM501FB_FLAG_PANEL_USE_FPEN) { | 673 | if (!(pd->flags & SM501FB_FLAG_PANEL_NO_FPEN)) { |
674 | control |= SM501_DC_PANEL_CONTROL_FPEN; | 674 | control |= SM501_DC_PANEL_CONTROL_FPEN; |
675 | writel(control, ctrl_reg); | 675 | writel(control, ctrl_reg); |
676 | sm501fb_sync_regs(fbi); | 676 | sm501fb_sync_regs(fbi); |
@@ -678,14 +678,14 @@ static void sm501fb_panel_power(struct sm501fb_info *fbi, int to) | |||
678 | } | 678 | } |
679 | } else if (!to && (control & SM501_DC_PANEL_CONTROL_VDD) != 0) { | 679 | } else if (!to && (control & SM501_DC_PANEL_CONTROL_VDD) != 0) { |
680 | /* disable panel power */ | 680 | /* disable panel power */ |
681 | if (pd->flags & SM501FB_FLAG_PANEL_USE_FPEN) { | 681 | if (!(pd->flags & SM501FB_FLAG_PANEL_NO_FPEN)) { |
682 | control &= ~SM501_DC_PANEL_CONTROL_FPEN; | 682 | control &= ~SM501_DC_PANEL_CONTROL_FPEN; |
683 | writel(control, ctrl_reg); | 683 | writel(control, ctrl_reg); |
684 | sm501fb_sync_regs(fbi); | 684 | sm501fb_sync_regs(fbi); |
685 | mdelay(10); | 685 | mdelay(10); |
686 | } | 686 | } |
687 | 687 | ||
688 | if (pd->flags & SM501FB_FLAG_PANEL_USE_VBIASEN) { | 688 | if (!(pd->flags & SM501FB_FLAG_PANEL_NO_VBIASEN)) { |
689 | control &= ~SM501_DC_PANEL_CONTROL_BIAS; | 689 | control &= ~SM501_DC_PANEL_CONTROL_BIAS; |
690 | writel(control, ctrl_reg); | 690 | writel(control, ctrl_reg); |
691 | sm501fb_sync_regs(fbi); | 691 | sm501fb_sync_regs(fbi); |
diff --git a/drivers/virtio/virtio.c b/drivers/virtio/virtio.c index 13866789b356..0f3c2bb7bf35 100644 --- a/drivers/virtio/virtio.c +++ b/drivers/virtio/virtio.c | |||
@@ -2,6 +2,9 @@ | |||
2 | #include <linux/spinlock.h> | 2 | #include <linux/spinlock.h> |
3 | #include <linux/virtio_config.h> | 3 | #include <linux/virtio_config.h> |
4 | 4 | ||
5 | /* Unique numbering for virtio devices. */ | ||
6 | static unsigned int dev_index; | ||
7 | |||
5 | static ssize_t device_show(struct device *_d, | 8 | static ssize_t device_show(struct device *_d, |
6 | struct device_attribute *attr, char *buf) | 9 | struct device_attribute *attr, char *buf) |
7 | { | 10 | { |
@@ -166,7 +169,10 @@ int register_virtio_device(struct virtio_device *dev) | |||
166 | int err; | 169 | int err; |
167 | 170 | ||
168 | dev->dev.bus = &virtio_bus; | 171 | dev->dev.bus = &virtio_bus; |
169 | sprintf(dev->dev.bus_id, "%u", dev->index); | 172 | |
173 | /* Assign a unique device index and hence name. */ | ||
174 | dev->index = dev_index++; | ||
175 | sprintf(dev->dev.bus_id, "virtio%u", dev->index); | ||
170 | 176 | ||
171 | /* We always start by resetting the device, in case a previous | 177 | /* We always start by resetting the device, in case a previous |
172 | * driver messed it up. This also tests that code path a little. */ | 178 | * driver messed it up. This also tests that code path a little. */ |
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 27e9fc9117cd..eae7236310e4 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c | |||
@@ -78,9 +78,6 @@ static struct device virtio_pci_root = { | |||
78 | .bus_id = "virtio-pci", | 78 | .bus_id = "virtio-pci", |
79 | }; | 79 | }; |
80 | 80 | ||
81 | /* Unique numbering for devices under the kvm root */ | ||
82 | static unsigned int dev_index; | ||
83 | |||
84 | /* Convert a generic virtio device to our structure */ | 81 | /* Convert a generic virtio device to our structure */ |
85 | static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) | 82 | static struct virtio_pci_device *to_vp_device(struct virtio_device *vdev) |
86 | { | 83 | { |
@@ -325,10 +322,6 @@ static int __devinit virtio_pci_probe(struct pci_dev *pci_dev, | |||
325 | if (vp_dev == NULL) | 322 | if (vp_dev == NULL) |
326 | return -ENOMEM; | 323 | return -ENOMEM; |
327 | 324 | ||
328 | snprintf(vp_dev->vdev.dev.bus_id, BUS_ID_SIZE, "virtio%d", dev_index); | ||
329 | vp_dev->vdev.index = dev_index; | ||
330 | dev_index++; | ||
331 | |||
332 | vp_dev->vdev.dev.parent = &virtio_pci_root; | 325 | vp_dev->vdev.dev.parent = &virtio_pci_root; |
333 | vp_dev->vdev.config = &virtio_pci_config_ops; | 326 | vp_dev->vdev.config = &virtio_pci_config_ops; |
334 | vp_dev->pci_dev = pci_dev; | 327 | vp_dev->pci_dev = pci_dev; |
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 937a49d6772c..72bf8bc09014 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c | |||
@@ -227,7 +227,6 @@ static bool vring_enable_cb(struct virtqueue *_vq) | |||
227 | struct vring_virtqueue *vq = to_vvq(_vq); | 227 | struct vring_virtqueue *vq = to_vvq(_vq); |
228 | 228 | ||
229 | START_USE(vq); | 229 | START_USE(vq); |
230 | BUG_ON(!(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)); | ||
231 | 230 | ||
232 | /* We optimistically turn back on interrupts, then check if there was | 231 | /* We optimistically turn back on interrupts, then check if there was |
233 | * more to do. */ | 232 | * more to do. */ |
@@ -254,13 +253,6 @@ irqreturn_t vring_interrupt(int irq, void *_vq) | |||
254 | if (unlikely(vq->broken)) | 253 | if (unlikely(vq->broken)) |
255 | return IRQ_HANDLED; | 254 | return IRQ_HANDLED; |
256 | 255 | ||
257 | /* Other side may have missed us turning off the interrupt, | ||
258 | * but we should preserve disable semantic for virtio users. */ | ||
259 | if (unlikely(vq->vring.avail->flags & VRING_AVAIL_F_NO_INTERRUPT)) { | ||
260 | pr_debug("virtqueue interrupt after disable for %p\n", vq); | ||
261 | return IRQ_HANDLED; | ||
262 | } | ||
263 | |||
264 | pr_debug("virtqueue callback for %p (%p)\n", vq, vq->vq.callback); | 256 | pr_debug("virtqueue callback for %p (%p)\n", vq, vq->vq.callback); |
265 | if (vq->vq.callback) | 257 | if (vq->vq.callback) |
266 | vq->vq.callback(&vq->vq); | 258 | vq->vq.callback(&vq->vq); |
diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig index 254d115cafab..ccb78f66c2b6 100644 --- a/drivers/watchdog/Kconfig +++ b/drivers/watchdog/Kconfig | |||
@@ -295,6 +295,19 @@ config ALIM7101_WDT | |||
295 | 295 | ||
296 | Most people will say N. | 296 | Most people will say N. |
297 | 297 | ||
298 | config GEODE_WDT | ||
299 | tristate "AMD Geode CS5535/CS5536 Watchdog" | ||
300 | depends on MGEODE_LX | ||
301 | help | ||
302 | This driver enables a watchdog capability built into the | ||
303 | CS5535/CS5536 companion chips for the AMD Geode GX and LX | ||
304 | processors. This watchdog watches your kernel to make sure | ||
305 | it doesn't freeze, and if it does, it reboots your computer after | ||
306 | a certain amount of time. | ||
307 | |||
308 | You can compile this driver directly into the kernel, or use | ||
309 | it as a module. The module will be called geodewdt. | ||
310 | |||
298 | config SC520_WDT | 311 | config SC520_WDT |
299 | tristate "AMD Elan SC520 processor Watchdog" | 312 | tristate "AMD Elan SC520 processor Watchdog" |
300 | depends on X86 | 313 | depends on X86 |
diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile index f3fb170fe5c6..25b352b664d9 100644 --- a/drivers/watchdog/Makefile +++ b/drivers/watchdog/Makefile | |||
@@ -59,6 +59,7 @@ obj-$(CONFIG_ACQUIRE_WDT) += acquirewdt.o | |||
59 | obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o | 59 | obj-$(CONFIG_ADVANTECH_WDT) += advantechwdt.o |
60 | obj-$(CONFIG_ALIM1535_WDT) += alim1535_wdt.o | 60 | obj-$(CONFIG_ALIM1535_WDT) += alim1535_wdt.o |
61 | obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o | 61 | obj-$(CONFIG_ALIM7101_WDT) += alim7101_wdt.o |
62 | obj-$(CONFIG_GEODE_WDT) += geodewdt.o | ||
62 | obj-$(CONFIG_SC520_WDT) += sc520_wdt.o | 63 | obj-$(CONFIG_SC520_WDT) += sc520_wdt.o |
63 | obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o | 64 | obj-$(CONFIG_EUROTECH_WDT) += eurotechwdt.o |
64 | obj-$(CONFIG_IB700_WDT) += ib700wdt.o | 65 | obj-$(CONFIG_IB700_WDT) += ib700wdt.o |
diff --git a/drivers/watchdog/bfin_wdt.c b/drivers/watchdog/bfin_wdt.c index 1237113dc14a..03b3e3d91e7c 100644 --- a/drivers/watchdog/bfin_wdt.c +++ b/drivers/watchdog/bfin_wdt.c | |||
@@ -29,7 +29,8 @@ | |||
29 | 29 | ||
30 | #define stamp(fmt, args...) pr_debug("%s:%i: " fmt "\n", __func__, __LINE__, ## args) | 30 | #define stamp(fmt, args...) pr_debug("%s:%i: " fmt "\n", __func__, __LINE__, ## args) |
31 | #define stampit() stamp("here i am") | 31 | #define stampit() stamp("here i am") |
32 | #define pr_init(fmt, args...) ({ static const __initdata char __fmt[] = fmt; printk(__fmt, ## args); }) | 32 | #define pr_devinit(fmt, args...) ({ static const __devinitconst char __fmt[] = fmt; printk(__fmt, ## args); }) |
33 | #define pr_init(fmt, args...) ({ static const __initconst char __fmt[] = fmt; printk(__fmt, ## args); }) | ||
33 | 34 | ||
34 | #define WATCHDOG_NAME "bfin-wdt" | 35 | #define WATCHDOG_NAME "bfin-wdt" |
35 | #define PFX WATCHDOG_NAME ": " | 36 | #define PFX WATCHDOG_NAME ": " |
@@ -377,20 +378,6 @@ static int bfin_wdt_resume(struct platform_device *pdev) | |||
377 | # define bfin_wdt_resume NULL | 378 | # define bfin_wdt_resume NULL |
378 | #endif | 379 | #endif |
379 | 380 | ||
380 | static struct platform_device bfin_wdt_device = { | ||
381 | .name = WATCHDOG_NAME, | ||
382 | .id = -1, | ||
383 | }; | ||
384 | |||
385 | static struct platform_driver bfin_wdt_driver = { | ||
386 | .driver = { | ||
387 | .name = WATCHDOG_NAME, | ||
388 | .owner = THIS_MODULE, | ||
389 | }, | ||
390 | .suspend = bfin_wdt_suspend, | ||
391 | .resume = bfin_wdt_resume, | ||
392 | }; | ||
393 | |||
394 | static const struct file_operations bfin_wdt_fops = { | 381 | static const struct file_operations bfin_wdt_fops = { |
395 | .owner = THIS_MODULE, | 382 | .owner = THIS_MODULE, |
396 | .llseek = no_llseek, | 383 | .llseek = no_llseek, |
@@ -418,11 +405,67 @@ static struct notifier_block bfin_wdt_notifier = { | |||
418 | }; | 405 | }; |
419 | 406 | ||
420 | /** | 407 | /** |
421 | * bfin_wdt_init - Initialize module | 408 | * bfin_wdt_probe - Initialize module |
422 | * | 409 | * |
423 | * Registers the device and notifier handler. Actual device | 410 | * Registers the misc device and notifier handler. Actual device |
424 | * initialization is handled by bfin_wdt_open(). | 411 | * initialization is handled by bfin_wdt_open(). |
425 | */ | 412 | */ |
413 | static int __devinit bfin_wdt_probe(struct platform_device *pdev) | ||
414 | { | ||
415 | int ret; | ||
416 | |||
417 | ret = register_reboot_notifier(&bfin_wdt_notifier); | ||
418 | if (ret) { | ||
419 | pr_devinit(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n", ret); | ||
420 | return ret; | ||
421 | } | ||
422 | |||
423 | ret = misc_register(&bfin_wdt_miscdev); | ||
424 | if (ret) { | ||
425 | pr_devinit(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | ||
426 | WATCHDOG_MINOR, ret); | ||
427 | unregister_reboot_notifier(&bfin_wdt_notifier); | ||
428 | return ret; | ||
429 | } | ||
430 | |||
431 | pr_devinit(KERN_INFO PFX "initialized: timeout=%d sec (nowayout=%d)\n", | ||
432 | timeout, nowayout); | ||
433 | |||
434 | return 0; | ||
435 | } | ||
436 | |||
437 | /** | ||
438 | * bfin_wdt_remove - Initialize module | ||
439 | * | ||
440 | * Unregisters the misc device and notifier handler. Actual device | ||
441 | * deinitialization is handled by bfin_wdt_close(). | ||
442 | */ | ||
443 | static int __devexit bfin_wdt_remove(struct platform_device *pdev) | ||
444 | { | ||
445 | misc_deregister(&bfin_wdt_miscdev); | ||
446 | unregister_reboot_notifier(&bfin_wdt_notifier); | ||
447 | return 0; | ||
448 | } | ||
449 | |||
450 | static struct platform_device *bfin_wdt_device; | ||
451 | |||
452 | static struct platform_driver bfin_wdt_driver = { | ||
453 | .probe = bfin_wdt_probe, | ||
454 | .remove = __devexit_p(bfin_wdt_remove), | ||
455 | .suspend = bfin_wdt_suspend, | ||
456 | .resume = bfin_wdt_resume, | ||
457 | .driver = { | ||
458 | .name = WATCHDOG_NAME, | ||
459 | .owner = THIS_MODULE, | ||
460 | }, | ||
461 | }; | ||
462 | |||
463 | /** | ||
464 | * bfin_wdt_init - Initialize module | ||
465 | * | ||
466 | * Checks the module params and registers the platform device & driver. | ||
467 | * Real work is in the platform probe function. | ||
468 | */ | ||
426 | static int __init bfin_wdt_init(void) | 469 | static int __init bfin_wdt_init(void) |
427 | { | 470 | { |
428 | int ret; | 471 | int ret; |
@@ -436,44 +479,32 @@ static int __init bfin_wdt_init(void) | |||
436 | /* Since this is an on-chip device and needs no board-specific | 479 | /* Since this is an on-chip device and needs no board-specific |
437 | * resources, we'll handle all the platform device stuff here. | 480 | * resources, we'll handle all the platform device stuff here. |
438 | */ | 481 | */ |
439 | ret = platform_device_register(&bfin_wdt_device); | 482 | ret = platform_driver_register(&bfin_wdt_driver); |
440 | if (ret) | ||
441 | return ret; | ||
442 | |||
443 | ret = platform_driver_probe(&bfin_wdt_driver, NULL); | ||
444 | if (ret) | ||
445 | return ret; | ||
446 | |||
447 | ret = register_reboot_notifier(&bfin_wdt_notifier); | ||
448 | if (ret) { | 483 | if (ret) { |
449 | pr_init(KERN_ERR PFX "cannot register reboot notifier (err=%d)\n", ret); | 484 | pr_init(KERN_ERR PFX "unable to register driver\n"); |
450 | return ret; | 485 | return ret; |
451 | } | 486 | } |
452 | 487 | ||
453 | ret = misc_register(&bfin_wdt_miscdev); | 488 | bfin_wdt_device = platform_device_register_simple(WATCHDOG_NAME, -1, NULL, 0); |
454 | if (ret) { | 489 | if (IS_ERR(bfin_wdt_device)) { |
455 | pr_init(KERN_ERR PFX "cannot register miscdev on minor=%d (err=%d)\n", | 490 | pr_init(KERN_ERR PFX "unable to register device\n"); |
456 | WATCHDOG_MINOR, ret); | 491 | platform_driver_unregister(&bfin_wdt_driver); |
457 | unregister_reboot_notifier(&bfin_wdt_notifier); | 492 | return PTR_ERR(bfin_wdt_device); |
458 | return ret; | ||
459 | } | 493 | } |
460 | 494 | ||
461 | pr_init(KERN_INFO PFX "initialized: timeout=%d sec (nowayout=%d)\n", | ||
462 | timeout, nowayout); | ||
463 | |||
464 | return 0; | 495 | return 0; |
465 | } | 496 | } |
466 | 497 | ||
467 | /** | 498 | /** |
468 | * bfin_wdt_exit - Deinitialize module | 499 | * bfin_wdt_exit - Deinitialize module |
469 | * | 500 | * |
470 | * Unregisters the device and notifier handler. Actual device | 501 | * Back out the platform device & driver steps. Real work is in the |
471 | * deinitialization is handled by bfin_wdt_close(). | 502 | * platform remove function. |
472 | */ | 503 | */ |
473 | static void __exit bfin_wdt_exit(void) | 504 | static void __exit bfin_wdt_exit(void) |
474 | { | 505 | { |
475 | misc_deregister(&bfin_wdt_miscdev); | 506 | platform_device_unregister(bfin_wdt_device); |
476 | unregister_reboot_notifier(&bfin_wdt_notifier); | 507 | platform_driver_unregister(&bfin_wdt_driver); |
477 | } | 508 | } |
478 | 509 | ||
479 | module_init(bfin_wdt_init); | 510 | module_init(bfin_wdt_init); |
diff --git a/drivers/watchdog/booke_wdt.c b/drivers/watchdog/booke_wdt.c index d362f5bf658a..c1ba0db48501 100644 --- a/drivers/watchdog/booke_wdt.c +++ b/drivers/watchdog/booke_wdt.c | |||
@@ -1,12 +1,10 @@ | |||
1 | /* | 1 | /* |
2 | * drivers/char/watchdog/booke_wdt.c | ||
3 | * | ||
4 | * Watchdog timer for PowerPC Book-E systems | 2 | * Watchdog timer for PowerPC Book-E systems |
5 | * | 3 | * |
6 | * Author: Matthew McClintock | 4 | * Author: Matthew McClintock |
7 | * Maintainer: Kumar Gala <galak@kernel.crashing.org> | 5 | * Maintainer: Kumar Gala <galak@kernel.crashing.org> |
8 | * | 6 | * |
9 | * Copyright 2005 Freescale Semiconductor Inc. | 7 | * Copyright 2005, 2008 Freescale Semiconductor Inc. |
10 | * | 8 | * |
11 | * This program is free software; you can redistribute it and/or modify it | 9 | * This program is free software; you can redistribute it and/or modify it |
12 | * under the terms of the GNU General Public License as published by the | 10 | * under the terms of the GNU General Public License as published by the |
@@ -16,6 +14,7 @@ | |||
16 | 14 | ||
17 | #include <linux/module.h> | 15 | #include <linux/module.h> |
18 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
17 | #include <linux/smp.h> | ||
19 | #include <linux/miscdevice.h> | 18 | #include <linux/miscdevice.h> |
20 | #include <linux/notifier.h> | 19 | #include <linux/notifier.h> |
21 | #include <linux/watchdog.h> | 20 | #include <linux/watchdog.h> |
@@ -38,7 +37,7 @@ | |||
38 | #define WDT_PERIOD_DEFAULT 3 /* Refer to the PPC40x and PPC4xx manuals */ | 37 | #define WDT_PERIOD_DEFAULT 3 /* Refer to the PPC40x and PPC4xx manuals */ |
39 | #endif /* for timing information */ | 38 | #endif /* for timing information */ |
40 | 39 | ||
41 | u32 booke_wdt_enabled = 0; | 40 | u32 booke_wdt_enabled; |
42 | u32 booke_wdt_period = WDT_PERIOD_DEFAULT; | 41 | u32 booke_wdt_period = WDT_PERIOD_DEFAULT; |
43 | 42 | ||
44 | #ifdef CONFIG_FSL_BOOKE | 43 | #ifdef CONFIG_FSL_BOOKE |
@@ -47,33 +46,31 @@ u32 booke_wdt_period = WDT_PERIOD_DEFAULT; | |||
47 | #define WDTP(x) (TCR_WP(x)) | 46 | #define WDTP(x) (TCR_WP(x)) |
48 | #endif | 47 | #endif |
49 | 48 | ||
50 | /* | 49 | static DEFINE_SPINLOCK(booke_wdt_lock); |
51 | * booke_wdt_ping: | 50 | |
52 | */ | 51 | static void __booke_wdt_ping(void *data) |
53 | static __inline__ void booke_wdt_ping(void) | ||
54 | { | 52 | { |
55 | mtspr(SPRN_TSR, TSR_ENW|TSR_WIS); | 53 | mtspr(SPRN_TSR, TSR_ENW|TSR_WIS); |
56 | } | 54 | } |
57 | 55 | ||
58 | /* | 56 | static void booke_wdt_ping(void) |
59 | * booke_wdt_enable: | 57 | { |
60 | */ | 58 | on_each_cpu(__booke_wdt_ping, NULL, 0, 0); |
61 | static __inline__ void booke_wdt_enable(void) | 59 | } |
60 | |||
61 | static void __booke_wdt_enable(void *data) | ||
62 | { | 62 | { |
63 | u32 val; | 63 | u32 val; |
64 | 64 | ||
65 | /* clear status before enabling watchdog */ | 65 | /* clear status before enabling watchdog */ |
66 | booke_wdt_ping(); | 66 | __booke_wdt_ping(NULL); |
67 | val = mfspr(SPRN_TCR); | 67 | val = mfspr(SPRN_TCR); |
68 | val |= (TCR_WIE|TCR_WRC(WRC_CHIP)|WDTP(booke_wdt_period)); | 68 | val |= (TCR_WIE|TCR_WRC(WRC_CHIP)|WDTP(booke_wdt_period)); |
69 | 69 | ||
70 | mtspr(SPRN_TCR, val); | 70 | mtspr(SPRN_TCR, val); |
71 | } | 71 | } |
72 | 72 | ||
73 | /* | 73 | static ssize_t booke_wdt_write(struct file *file, const char __user *buf, |
74 | * booke_wdt_write: | ||
75 | */ | ||
76 | static ssize_t booke_wdt_write (struct file *file, const char __user *buf, | ||
77 | size_t count, loff_t *ppos) | 74 | size_t count, loff_t *ppos) |
78 | { | 75 | { |
79 | booke_wdt_ping(); | 76 | booke_wdt_ping(); |
@@ -81,15 +78,11 @@ static ssize_t booke_wdt_write (struct file *file, const char __user *buf, | |||
81 | } | 78 | } |
82 | 79 | ||
83 | static struct watchdog_info ident = { | 80 | static struct watchdog_info ident = { |
84 | .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING, | 81 | .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING, |
85 | .firmware_version = 0, | 82 | .identity = "PowerPC Book-E Watchdog", |
86 | .identity = "PowerPC Book-E Watchdog", | ||
87 | }; | 83 | }; |
88 | 84 | ||
89 | /* | 85 | static int booke_wdt_ioctl(struct inode *inode, struct file *file, |
90 | * booke_wdt_ioctl: | ||
91 | */ | ||
92 | static int booke_wdt_ioctl (struct inode *inode, struct file *file, | ||
93 | unsigned int cmd, unsigned long arg) | 86 | unsigned int cmd, unsigned long arg) |
94 | { | 87 | { |
95 | u32 tmp = 0; | 88 | u32 tmp = 0; |
@@ -97,7 +90,7 @@ static int booke_wdt_ioctl (struct inode *inode, struct file *file, | |||
97 | 90 | ||
98 | switch (cmd) { | 91 | switch (cmd) { |
99 | case WDIOC_GETSUPPORT: | 92 | case WDIOC_GETSUPPORT: |
100 | if (copy_to_user ((struct watchdog_info __user *) arg, &ident, | 93 | if (copy_to_user((struct watchdog_info __user *)arg, &ident, |
101 | sizeof(struct watchdog_info))) | 94 | sizeof(struct watchdog_info))) |
102 | return -EFAULT; | 95 | return -EFAULT; |
103 | case WDIOC_GETSTATUS: | 96 | case WDIOC_GETSTATUS: |
@@ -132,33 +125,33 @@ static int booke_wdt_ioctl (struct inode *inode, struct file *file, | |||
132 | 125 | ||
133 | return 0; | 126 | return 0; |
134 | } | 127 | } |
135 | /* | 128 | |
136 | * booke_wdt_open: | 129 | static int booke_wdt_open(struct inode *inode, struct file *file) |
137 | */ | ||
138 | static int booke_wdt_open (struct inode *inode, struct file *file) | ||
139 | { | 130 | { |
131 | spin_lock(&booke_wdt_lock); | ||
140 | if (booke_wdt_enabled == 0) { | 132 | if (booke_wdt_enabled == 0) { |
141 | booke_wdt_enabled = 1; | 133 | booke_wdt_enabled = 1; |
142 | booke_wdt_enable(); | 134 | on_each_cpu(__booke_wdt_enable, NULL, 0, 0); |
143 | printk (KERN_INFO "PowerPC Book-E Watchdog Timer Enabled (wdt_period=%d)\n", | 135 | printk(KERN_INFO "PowerPC Book-E Watchdog Timer Enabled " |
144 | booke_wdt_period); | 136 | "(wdt_period=%d)\n", booke_wdt_period); |
145 | } | 137 | } |
138 | spin_unlock(&booke_wdt_lock); | ||
146 | 139 | ||
147 | return nonseekable_open(inode, file); | 140 | return nonseekable_open(inode, file); |
148 | } | 141 | } |
149 | 142 | ||
150 | static const struct file_operations booke_wdt_fops = { | 143 | static const struct file_operations booke_wdt_fops = { |
151 | .owner = THIS_MODULE, | 144 | .owner = THIS_MODULE, |
152 | .llseek = no_llseek, | 145 | .llseek = no_llseek, |
153 | .write = booke_wdt_write, | 146 | .write = booke_wdt_write, |
154 | .ioctl = booke_wdt_ioctl, | 147 | .ioctl = booke_wdt_ioctl, |
155 | .open = booke_wdt_open, | 148 | .open = booke_wdt_open, |
156 | }; | 149 | }; |
157 | 150 | ||
158 | static struct miscdevice booke_wdt_miscdev = { | 151 | static struct miscdevice booke_wdt_miscdev = { |
159 | .minor = WATCHDOG_MINOR, | 152 | .minor = WATCHDOG_MINOR, |
160 | .name = "watchdog", | 153 | .name = "watchdog", |
161 | .fops = &booke_wdt_fops, | 154 | .fops = &booke_wdt_fops, |
162 | }; | 155 | }; |
163 | 156 | ||
164 | static void __exit booke_wdt_exit(void) | 157 | static void __exit booke_wdt_exit(void) |
@@ -166,28 +159,27 @@ static void __exit booke_wdt_exit(void) | |||
166 | misc_deregister(&booke_wdt_miscdev); | 159 | misc_deregister(&booke_wdt_miscdev); |
167 | } | 160 | } |
168 | 161 | ||
169 | /* | ||
170 | * booke_wdt_init: | ||
171 | */ | ||
172 | static int __init booke_wdt_init(void) | 162 | static int __init booke_wdt_init(void) |
173 | { | 163 | { |
174 | int ret = 0; | 164 | int ret = 0; |
175 | 165 | ||
176 | printk (KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n"); | 166 | printk(KERN_INFO "PowerPC Book-E Watchdog Timer Loaded\n"); |
177 | ident.firmware_version = cur_cpu_spec->pvr_value; | 167 | ident.firmware_version = cur_cpu_spec->pvr_value; |
178 | 168 | ||
179 | ret = misc_register(&booke_wdt_miscdev); | 169 | ret = misc_register(&booke_wdt_miscdev); |
180 | if (ret) { | 170 | if (ret) { |
181 | printk (KERN_CRIT "Cannot register miscdev on minor=%d (err=%d)\n", | 171 | printk(KERN_CRIT "Cannot register miscdev on minor=%d: %d\n", |
182 | WATCHDOG_MINOR, ret); | 172 | WATCHDOG_MINOR, ret); |
183 | return ret; | 173 | return ret; |
184 | } | 174 | } |
185 | 175 | ||
176 | spin_lock(&booke_wdt_lock); | ||
186 | if (booke_wdt_enabled == 1) { | 177 | if (booke_wdt_enabled == 1) { |
187 | printk (KERN_INFO "PowerPC Book-E Watchdog Timer Enabled (wdt_period=%d)\n", | 178 | printk(KERN_INFO "PowerPC Book-E Watchdog Timer Enabled " |
188 | booke_wdt_period); | 179 | "(wdt_period=%d)\n", booke_wdt_period); |
189 | booke_wdt_enable(); | 180 | on_each_cpu(__booke_wdt_enable, NULL, 0, 0); |
190 | } | 181 | } |
182 | spin_unlock(&booke_wdt_lock); | ||
191 | 183 | ||
192 | return ret; | 184 | return ret; |
193 | } | 185 | } |
diff --git a/drivers/watchdog/geodewdt.c b/drivers/watchdog/geodewdt.c new file mode 100644 index 000000000000..30d09cbbad94 --- /dev/null +++ b/drivers/watchdog/geodewdt.c | |||
@@ -0,0 +1,308 @@ | |||
1 | /* Watchdog timer for the Geode GX/LX with the CS5535/CS5536 companion chip | ||
2 | * | ||
3 | * Copyright (C) 2006-2007, Advanced Micro Devices, Inc. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License | ||
7 | * as published by the Free Software Foundation; either version | ||
8 | * 2 of the License, or (at your option) any later version. | ||
9 | */ | ||
10 | |||
11 | |||
12 | #include <linux/module.h> | ||
13 | #include <linux/moduleparam.h> | ||
14 | #include <linux/types.h> | ||
15 | #include <linux/miscdevice.h> | ||
16 | #include <linux/watchdog.h> | ||
17 | #include <linux/fs.h> | ||
18 | #include <linux/platform_device.h> | ||
19 | #include <linux/reboot.h> | ||
20 | |||
21 | #include <asm/uaccess.h> | ||
22 | #include <asm/geode.h> | ||
23 | |||
24 | #define GEODEWDT_HZ 500 | ||
25 | #define GEODEWDT_SCALE 6 | ||
26 | #define GEODEWDT_MAX_SECONDS 131 | ||
27 | |||
28 | #define WDT_FLAGS_OPEN 1 | ||
29 | #define WDT_FLAGS_ORPHAN 2 | ||
30 | |||
31 | #define DRV_NAME "geodewdt" | ||
32 | #define WATCHDOG_NAME "Geode GX/LX WDT" | ||
33 | #define WATCHDOG_TIMEOUT 60 | ||
34 | |||
35 | static int timeout = WATCHDOG_TIMEOUT; | ||
36 | module_param(timeout, int, 0); | ||
37 | MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=131, default=" __MODULE_STRING(WATCHDOG_TIMEOUT) "."); | ||
38 | |||
39 | static int nowayout = WATCHDOG_NOWAYOUT; | ||
40 | module_param(nowayout, int, 0); | ||
41 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | ||
42 | |||
43 | static struct platform_device *geodewdt_platform_device; | ||
44 | static unsigned long wdt_flags; | ||
45 | static int wdt_timer; | ||
46 | static int safe_close; | ||
47 | |||
48 | static void geodewdt_ping(void) | ||
49 | { | ||
50 | /* Stop the counter */ | ||
51 | geode_mfgpt_write(wdt_timer, MFGPT_REG_SETUP, 0); | ||
52 | |||
53 | /* Reset the counter */ | ||
54 | geode_mfgpt_write(wdt_timer, MFGPT_REG_COUNTER, 0); | ||
55 | |||
56 | /* Enable the counter */ | ||
57 | geode_mfgpt_write(wdt_timer, MFGPT_REG_SETUP, MFGPT_SETUP_CNTEN); | ||
58 | } | ||
59 | |||
60 | static void geodewdt_disable(void) | ||
61 | { | ||
62 | geode_mfgpt_write(wdt_timer, MFGPT_REG_SETUP, 0); | ||
63 | geode_mfgpt_write(wdt_timer, MFGPT_REG_COUNTER, 0); | ||
64 | } | ||
65 | |||
66 | static int geodewdt_set_heartbeat(int val) | ||
67 | { | ||
68 | if (val < 1 || val > GEODEWDT_MAX_SECONDS) | ||
69 | return -EINVAL; | ||
70 | |||
71 | geode_mfgpt_write(wdt_timer, MFGPT_REG_SETUP, 0); | ||
72 | geode_mfgpt_write(wdt_timer, MFGPT_REG_CMP2, val * GEODEWDT_HZ); | ||
73 | geode_mfgpt_write(wdt_timer, MFGPT_REG_COUNTER, 0); | ||
74 | geode_mfgpt_write(wdt_timer, MFGPT_REG_SETUP, MFGPT_SETUP_CNTEN); | ||
75 | |||
76 | timeout = val; | ||
77 | return 0; | ||
78 | } | ||
79 | |||
80 | static int | ||
81 | geodewdt_open(struct inode *inode, struct file *file) | ||
82 | { | ||
83 | if (test_and_set_bit(WDT_FLAGS_OPEN, &wdt_flags)) | ||
84 | return -EBUSY; | ||
85 | |||
86 | if (!test_and_clear_bit(WDT_FLAGS_ORPHAN, &wdt_flags)) | ||
87 | __module_get(THIS_MODULE); | ||
88 | |||
89 | geodewdt_ping(); | ||
90 | return nonseekable_open(inode, file); | ||
91 | } | ||
92 | |||
93 | static int | ||
94 | geodewdt_release(struct inode *inode, struct file *file) | ||
95 | { | ||
96 | if (safe_close) { | ||
97 | geodewdt_disable(); | ||
98 | module_put(THIS_MODULE); | ||
99 | } | ||
100 | else { | ||
101 | printk(KERN_CRIT "Unexpected close - watchdog is not stopping.\n"); | ||
102 | geodewdt_ping(); | ||
103 | |||
104 | set_bit(WDT_FLAGS_ORPHAN, &wdt_flags); | ||
105 | } | ||
106 | |||
107 | clear_bit(WDT_FLAGS_OPEN, &wdt_flags); | ||
108 | safe_close = 0; | ||
109 | return 0; | ||
110 | } | ||
111 | |||
112 | static ssize_t | ||
113 | geodewdt_write(struct file *file, const char __user *data, size_t len, | ||
114 | loff_t *ppos) | ||
115 | { | ||
116 | if(len) { | ||
117 | if (!nowayout) { | ||
118 | size_t i; | ||
119 | safe_close = 0; | ||
120 | |||
121 | for (i = 0; i != len; i++) { | ||
122 | char c; | ||
123 | |||
124 | if (get_user(c, data + i)) | ||
125 | return -EFAULT; | ||
126 | |||
127 | if (c == 'V') | ||
128 | safe_close = 1; | ||
129 | } | ||
130 | } | ||
131 | |||
132 | geodewdt_ping(); | ||
133 | } | ||
134 | return len; | ||
135 | } | ||
136 | |||
137 | static int | ||
138 | geodewdt_ioctl(struct inode *inode, struct file *file, unsigned int cmd, | ||
139 | unsigned long arg) | ||
140 | { | ||
141 | void __user *argp = (void __user *)arg; | ||
142 | int __user *p = argp; | ||
143 | int interval; | ||
144 | |||
145 | static struct watchdog_info ident = { | ||
146 | .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | ||
147 | | WDIOF_MAGICCLOSE, | ||
148 | .firmware_version = 1, | ||
149 | .identity = WATCHDOG_NAME, | ||
150 | }; | ||
151 | |||
152 | switch(cmd) { | ||
153 | case WDIOC_GETSUPPORT: | ||
154 | return copy_to_user(argp, &ident, | ||
155 | sizeof(ident)) ? -EFAULT : 0; | ||
156 | break; | ||
157 | |||
158 | case WDIOC_GETSTATUS: | ||
159 | case WDIOC_GETBOOTSTATUS: | ||
160 | return put_user(0, p); | ||
161 | |||
162 | case WDIOC_KEEPALIVE: | ||
163 | geodewdt_ping(); | ||
164 | return 0; | ||
165 | |||
166 | case WDIOC_SETTIMEOUT: | ||
167 | if (get_user(interval, p)) | ||
168 | return -EFAULT; | ||
169 | |||
170 | if (geodewdt_set_heartbeat(interval)) | ||
171 | return -EINVAL; | ||
172 | |||
173 | /* Fall through */ | ||
174 | |||
175 | case WDIOC_GETTIMEOUT: | ||
176 | return put_user(timeout, p); | ||
177 | |||
178 | case WDIOC_SETOPTIONS: | ||
179 | { | ||
180 | int options, ret = -EINVAL; | ||
181 | |||
182 | if (get_user(options, p)) | ||
183 | return -EFAULT; | ||
184 | |||
185 | if (options & WDIOS_DISABLECARD) { | ||
186 | geodewdt_disable(); | ||
187 | ret = 0; | ||
188 | } | ||
189 | |||
190 | if (options & WDIOS_ENABLECARD) { | ||
191 | geodewdt_ping(); | ||
192 | ret = 0; | ||
193 | } | ||
194 | |||
195 | return ret; | ||
196 | } | ||
197 | default: | ||
198 | return -ENOTTY; | ||
199 | } | ||
200 | |||
201 | return 0; | ||
202 | } | ||
203 | |||
204 | static const struct file_operations geodewdt_fops = { | ||
205 | .owner = THIS_MODULE, | ||
206 | .llseek = no_llseek, | ||
207 | .write = geodewdt_write, | ||
208 | .ioctl = geodewdt_ioctl, | ||
209 | .open = geodewdt_open, | ||
210 | .release = geodewdt_release, | ||
211 | }; | ||
212 | |||
213 | static struct miscdevice geodewdt_miscdev = { | ||
214 | .minor = WATCHDOG_MINOR, | ||
215 | .name = "watchdog", | ||
216 | .fops = &geodewdt_fops | ||
217 | }; | ||
218 | |||
219 | static int __devinit | ||
220 | geodewdt_probe(struct platform_device *dev) | ||
221 | { | ||
222 | int ret, timer; | ||
223 | |||
224 | timer = geode_mfgpt_alloc_timer(MFGPT_TIMER_ANY, MFGPT_DOMAIN_WORKING); | ||
225 | |||
226 | if (timer == -1) { | ||
227 | printk(KERN_ERR "geodewdt: No timers were available\n"); | ||
228 | return -ENODEV; | ||
229 | } | ||
230 | |||
231 | wdt_timer = timer; | ||
232 | |||
233 | /* Set up the timer */ | ||
234 | |||
235 | geode_mfgpt_write(wdt_timer, MFGPT_REG_SETUP, | ||
236 | GEODEWDT_SCALE | (3 << 8)); | ||
237 | |||
238 | /* Set up comparator 2 to reset when the event fires */ | ||
239 | geode_mfgpt_toggle_event(wdt_timer, MFGPT_CMP2, MFGPT_EVENT_RESET, 1); | ||
240 | |||
241 | /* Set up the initial timeout */ | ||
242 | |||
243 | geode_mfgpt_write(wdt_timer, MFGPT_REG_CMP2, | ||
244 | timeout * GEODEWDT_HZ); | ||
245 | |||
246 | ret = misc_register(&geodewdt_miscdev); | ||
247 | |||
248 | return ret; | ||
249 | } | ||
250 | |||
251 | static int __devexit | ||
252 | geodewdt_remove(struct platform_device *dev) | ||
253 | { | ||
254 | misc_deregister(&geodewdt_miscdev); | ||
255 | return 0; | ||
256 | } | ||
257 | |||
258 | static void | ||
259 | geodewdt_shutdown(struct platform_device *dev) | ||
260 | { | ||
261 | geodewdt_disable(); | ||
262 | } | ||
263 | |||
264 | static struct platform_driver geodewdt_driver = { | ||
265 | .probe = geodewdt_probe, | ||
266 | .remove = __devexit_p(geodewdt_remove), | ||
267 | .shutdown = geodewdt_shutdown, | ||
268 | .driver = { | ||
269 | .owner = THIS_MODULE, | ||
270 | .name = DRV_NAME, | ||
271 | }, | ||
272 | }; | ||
273 | |||
274 | static int __init | ||
275 | geodewdt_init(void) | ||
276 | { | ||
277 | int ret; | ||
278 | |||
279 | ret = platform_driver_register(&geodewdt_driver); | ||
280 | if (ret) | ||
281 | return ret; | ||
282 | |||
283 | geodewdt_platform_device = platform_device_register_simple(DRV_NAME, -1, NULL, 0); | ||
284 | if (IS_ERR(geodewdt_platform_device)) { | ||
285 | ret = PTR_ERR(geodewdt_platform_device); | ||
286 | goto err; | ||
287 | } | ||
288 | |||
289 | return 0; | ||
290 | err: | ||
291 | platform_driver_unregister(&geodewdt_driver); | ||
292 | return ret; | ||
293 | } | ||
294 | |||
295 | static void __exit | ||
296 | geodewdt_exit(void) | ||
297 | { | ||
298 | platform_device_unregister(geodewdt_platform_device); | ||
299 | platform_driver_unregister(&geodewdt_driver); | ||
300 | } | ||
301 | |||
302 | module_init(geodewdt_init); | ||
303 | module_exit(geodewdt_exit); | ||
304 | |||
305 | MODULE_AUTHOR("Advanced Micro Devices, Inc"); | ||
306 | MODULE_DESCRIPTION("Geode GX/LX Watchdog Driver"); | ||
307 | MODULE_LICENSE("GPL"); | ||
308 | MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); | ||
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 6483d1066b95..6a63535fc04d 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c | |||
@@ -418,23 +418,20 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason, | |||
418 | static unsigned long rom_pl; | 418 | static unsigned long rom_pl; |
419 | static int die_nmi_called; | 419 | static int die_nmi_called; |
420 | 420 | ||
421 | if (ulReason != DIE_NMI && ulReason != DIE_NMI_IPI) | 421 | if (ulReason == DIE_NMI || ulReason == DIE_NMI_IPI) { |
422 | return NOTIFY_OK; | 422 | spin_lock_irqsave(&rom_lock, rom_pl); |
423 | 423 | if (!die_nmi_called) | |
424 | spin_lock_irqsave(&rom_lock, rom_pl); | 424 | asminline_call(&cmn_regs, cru_rom_addr); |
425 | if (!die_nmi_called) | 425 | die_nmi_called = 1; |
426 | asminline_call(&cmn_regs, cru_rom_addr); | 426 | spin_unlock_irqrestore(&rom_lock, rom_pl); |
427 | die_nmi_called = 1; | 427 | if (cmn_regs.u1.ral != 0) { |
428 | spin_unlock_irqrestore(&rom_lock, rom_pl); | 428 | panic("An NMI occurred, please see the Integrated " |
429 | if (cmn_regs.u1.ral == 0) { | 429 | "Management Log for details.\n"); |
430 | printk(KERN_WARNING "hpwdt: An NMI occurred, " | 430 | } |
431 | "but unable to determine source.\n"); | ||
432 | } else { | ||
433 | panic("An NMI occurred, please see the Integrated " | ||
434 | "Management Log for details.\n"); | ||
435 | } | 431 | } |
436 | 432 | ||
437 | return NOTIFY_STOP; | 433 | die_nmi_called = 0; |
434 | return NOTIFY_DONE; | ||
438 | } | 435 | } |
439 | 436 | ||
440 | /* | 437 | /* |
diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c index a0e6809e369f..95ba985bd341 100644 --- a/drivers/watchdog/iTCO_wdt.c +++ b/drivers/watchdog/iTCO_wdt.c | |||
@@ -41,9 +41,10 @@ | |||
41 | * 82801HH (ICH8DH) : document number 313056-003, 313057-009, | 41 | * 82801HH (ICH8DH) : document number 313056-003, 313057-009, |
42 | * 82801HO (ICH8DO) : document number 313056-003, 313057-009, | 42 | * 82801HO (ICH8DO) : document number 313056-003, 313057-009, |
43 | * 82801HEM (ICH8M-E) : document number 313056-003, 313057-009, | 43 | * 82801HEM (ICH8M-E) : document number 313056-003, 313057-009, |
44 | * 82801IB (ICH9) : document number 316972-001, 316973-001, | 44 | * 82801IB (ICH9) : document number 316972-001, 316973-006, |
45 | * 82801IR (ICH9R) : document number 316972-001, 316973-001, | 45 | * 82801IR (ICH9R) : document number 316972-001, 316973-006, |
46 | * 82801IH (ICH9DH) : document number 316972-001, 316973-001, | 46 | * 82801IH (ICH9DH) : document number 316972-001, 316973-006, |
47 | * 82801IO (ICH9DO) : document number 316972-001, 316973-006, | ||
47 | * 6300ESB (6300ESB) : document number 300641-003, 300884-010, | 48 | * 6300ESB (6300ESB) : document number 300641-003, 300884-010, |
48 | * 631xESB (631xESB) : document number 313082-001, 313075-005, | 49 | * 631xESB (631xESB) : document number 313082-001, 313075-005, |
49 | * 632xESB (632xESB) : document number 313082-001, 313075-005 | 50 | * 632xESB (632xESB) : document number 313082-001, 313075-005 |
@@ -55,8 +56,8 @@ | |||
55 | 56 | ||
56 | /* Module and version information */ | 57 | /* Module and version information */ |
57 | #define DRV_NAME "iTCO_wdt" | 58 | #define DRV_NAME "iTCO_wdt" |
58 | #define DRV_VERSION "1.02" | 59 | #define DRV_VERSION "1.03" |
59 | #define DRV_RELDATE "26-Jul-2007" | 60 | #define DRV_RELDATE "30-Apr-2008" |
60 | #define PFX DRV_NAME ": " | 61 | #define PFX DRV_NAME ": " |
61 | 62 | ||
62 | /* Includes */ | 63 | /* Includes */ |
@@ -104,6 +105,7 @@ enum iTCO_chipsets { | |||
104 | TCO_ICH9, /* ICH9 */ | 105 | TCO_ICH9, /* ICH9 */ |
105 | TCO_ICH9R, /* ICH9R */ | 106 | TCO_ICH9R, /* ICH9R */ |
106 | TCO_ICH9DH, /* ICH9DH */ | 107 | TCO_ICH9DH, /* ICH9DH */ |
108 | TCO_ICH9DO, /* ICH9DO */ | ||
107 | TCO_631XESB, /* 631xESB/632xESB */ | 109 | TCO_631XESB, /* 631xESB/632xESB */ |
108 | }; | 110 | }; |
109 | 111 | ||
@@ -136,6 +138,7 @@ static struct { | |||
136 | {"ICH9", 2}, | 138 | {"ICH9", 2}, |
137 | {"ICH9R", 2}, | 139 | {"ICH9R", 2}, |
138 | {"ICH9DH", 2}, | 140 | {"ICH9DH", 2}, |
141 | {"ICH9DO", 2}, | ||
139 | {"631xESB/632xESB", 2}, | 142 | {"631xESB/632xESB", 2}, |
140 | {NULL,0} | 143 | {NULL,0} |
141 | }; | 144 | }; |
@@ -181,6 +184,7 @@ static struct pci_device_id iTCO_wdt_pci_tbl[] = { | |||
181 | { ITCO_PCI_DEVICE(0x2918, TCO_ICH9 )}, | 184 | { ITCO_PCI_DEVICE(0x2918, TCO_ICH9 )}, |
182 | { ITCO_PCI_DEVICE(0x2916, TCO_ICH9R )}, | 185 | { ITCO_PCI_DEVICE(0x2916, TCO_ICH9R )}, |
183 | { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH9_2, TCO_ICH9DH )}, | 186 | { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH9_2, TCO_ICH9DH )}, |
187 | { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ICH9_4, TCO_ICH9DO )}, | ||
184 | { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ESB2_0, TCO_631XESB)}, | 188 | { ITCO_PCI_DEVICE(PCI_DEVICE_ID_INTEL_ESB2_0, TCO_631XESB)}, |
185 | { ITCO_PCI_DEVICE(0x2671, TCO_631XESB)}, | 189 | { ITCO_PCI_DEVICE(0x2671, TCO_631XESB)}, |
186 | { ITCO_PCI_DEVICE(0x2672, TCO_631XESB)}, | 190 | { ITCO_PCI_DEVICE(0x2672, TCO_631XESB)}, |
diff --git a/drivers/watchdog/w83697hf_wdt.c b/drivers/watchdog/w83697hf_wdt.c index c622a0e6c9ae..528b882420b6 100644 --- a/drivers/watchdog/w83697hf_wdt.c +++ b/drivers/watchdog/w83697hf_wdt.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #define WATCHDOG_NAME "w83697hf/hg WDT" | 44 | #define WATCHDOG_NAME "w83697hf/hg WDT" |
45 | #define PFX WATCHDOG_NAME ": " | 45 | #define PFX WATCHDOG_NAME ": " |
46 | #define WATCHDOG_TIMEOUT 60 /* 60 sec default timeout */ | 46 | #define WATCHDOG_TIMEOUT 60 /* 60 sec default timeout */ |
47 | #define WATCHDOG_EARLY_DISABLE 1 /* Disable until userland kicks in */ | ||
47 | 48 | ||
48 | static unsigned long wdt_is_open; | 49 | static unsigned long wdt_is_open; |
49 | static char expect_close; | 50 | static char expect_close; |
@@ -56,12 +57,16 @@ MODULE_PARM_DESC(wdt_io, "w83697hf/hg WDT io port (default 0x2e, 0 = autodetect) | |||
56 | 57 | ||
57 | static int timeout = WATCHDOG_TIMEOUT; /* in seconds */ | 58 | static int timeout = WATCHDOG_TIMEOUT; /* in seconds */ |
58 | module_param(timeout, int, 0); | 59 | module_param(timeout, int, 0); |
59 | MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=255, default=" __MODULE_STRING(WATCHDOG_TIMEOUT) "."); | 60 | MODULE_PARM_DESC(timeout, "Watchdog timeout in seconds. 1<= timeout <=255 (default=" __MODULE_STRING(WATCHDOG_TIMEOUT) ")"); |
60 | 61 | ||
61 | static int nowayout = WATCHDOG_NOWAYOUT; | 62 | static int nowayout = WATCHDOG_NOWAYOUT; |
62 | module_param(nowayout, int, 0); | 63 | module_param(nowayout, int, 0); |
63 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); | 64 | MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); |
64 | 65 | ||
66 | static int early_disable = WATCHDOG_EARLY_DISABLE; | ||
67 | module_param(early_disable, int, 0); | ||
68 | MODULE_PARM_DESC(early_disable, "Watchdog gets disabled at boot time (default=" __MODULE_STRING(WATCHDOG_EARLY_DISABLE) ")"); | ||
69 | |||
65 | /* | 70 | /* |
66 | * Kernel methods. | 71 | * Kernel methods. |
67 | */ | 72 | */ |
@@ -140,7 +145,7 @@ w83697hf_init(void) | |||
140 | w83697hf_deselect_wdt(); | 145 | w83697hf_deselect_wdt(); |
141 | } | 146 | } |
142 | 147 | ||
143 | static int | 148 | static void |
144 | wdt_ping(void) | 149 | wdt_ping(void) |
145 | { | 150 | { |
146 | spin_lock(&io_lock); | 151 | spin_lock(&io_lock); |
@@ -150,10 +155,9 @@ wdt_ping(void) | |||
150 | 155 | ||
151 | w83697hf_deselect_wdt(); | 156 | w83697hf_deselect_wdt(); |
152 | spin_unlock(&io_lock); | 157 | spin_unlock(&io_lock); |
153 | return 0; | ||
154 | } | 158 | } |
155 | 159 | ||
156 | static int | 160 | static void |
157 | wdt_enable(void) | 161 | wdt_enable(void) |
158 | { | 162 | { |
159 | spin_lock(&io_lock); | 163 | spin_lock(&io_lock); |
@@ -164,10 +168,9 @@ wdt_enable(void) | |||
164 | 168 | ||
165 | w83697hf_deselect_wdt(); | 169 | w83697hf_deselect_wdt(); |
166 | spin_unlock(&io_lock); | 170 | spin_unlock(&io_lock); |
167 | return 0; | ||
168 | } | 171 | } |
169 | 172 | ||
170 | static int | 173 | static void |
171 | wdt_disable(void) | 174 | wdt_disable(void) |
172 | { | 175 | { |
173 | spin_lock(&io_lock); | 176 | spin_lock(&io_lock); |
@@ -178,7 +181,22 @@ wdt_disable(void) | |||
178 | 181 | ||
179 | w83697hf_deselect_wdt(); | 182 | w83697hf_deselect_wdt(); |
180 | spin_unlock(&io_lock); | 183 | spin_unlock(&io_lock); |
181 | return 0; | 184 | } |
185 | |||
186 | static unsigned char | ||
187 | wdt_running(void) | ||
188 | { | ||
189 | unsigned char t; | ||
190 | |||
191 | spin_lock(&io_lock); | ||
192 | w83697hf_select_wdt(); | ||
193 | |||
194 | t = w83697hf_get_reg(0xF4); /* Read timer */ | ||
195 | |||
196 | w83697hf_deselect_wdt(); | ||
197 | spin_unlock(&io_lock); | ||
198 | |||
199 | return t; | ||
182 | } | 200 | } |
183 | 201 | ||
184 | static int | 202 | static int |
@@ -397,7 +415,11 @@ wdt_init(void) | |||
397 | } | 415 | } |
398 | 416 | ||
399 | w83697hf_init(); | 417 | w83697hf_init(); |
400 | wdt_disable(); /* Disable watchdog until first use */ | 418 | if (early_disable) { |
419 | if (wdt_running()) | ||
420 | printk (KERN_WARNING PFX "Stopping previously enabled watchdog until userland kicks in\n"); | ||
421 | wdt_disable(); | ||
422 | } | ||
401 | 423 | ||
402 | if (wdt_set_heartbeat(timeout)) { | 424 | if (wdt_set_heartbeat(timeout)) { |
403 | wdt_set_heartbeat(WATCHDOG_TIMEOUT); | 425 | wdt_set_heartbeat(WATCHDOG_TIMEOUT); |
diff --git a/fs/befs/endian.h b/fs/befs/endian.h index e254a20869f4..6cb84d896d05 100644 --- a/fs/befs/endian.h +++ b/fs/befs/endian.h | |||
@@ -9,7 +9,7 @@ | |||
9 | #ifndef LINUX_BEFS_ENDIAN | 9 | #ifndef LINUX_BEFS_ENDIAN |
10 | #define LINUX_BEFS_ENDIAN | 10 | #define LINUX_BEFS_ENDIAN |
11 | 11 | ||
12 | #include <linux/byteorder/generic.h> | 12 | #include <asm/byteorder.h> |
13 | 13 | ||
14 | static inline u64 | 14 | static inline u64 |
15 | fs64_to_cpu(const struct super_block *sb, fs64 n) | 15 | fs64_to_cpu(const struct super_block *sb, fs64 n) |
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index b25707fee2cc..0fa95b198e6e 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c | |||
@@ -256,7 +256,7 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, | |||
256 | return -EFAULT; | 256 | return -EFAULT; |
257 | len = strnlen_user((void __user *)p, MAX_ARG_STRLEN); | 257 | len = strnlen_user((void __user *)p, MAX_ARG_STRLEN); |
258 | if (!len || len > MAX_ARG_STRLEN) | 258 | if (!len || len > MAX_ARG_STRLEN) |
259 | return 0; | 259 | return -EINVAL; |
260 | p += len; | 260 | p += len; |
261 | } | 261 | } |
262 | if (__put_user(0, argv)) | 262 | if (__put_user(0, argv)) |
@@ -268,7 +268,7 @@ create_elf_tables(struct linux_binprm *bprm, struct elfhdr *exec, | |||
268 | return -EFAULT; | 268 | return -EFAULT; |
269 | len = strnlen_user((void __user *)p, MAX_ARG_STRLEN); | 269 | len = strnlen_user((void __user *)p, MAX_ARG_STRLEN); |
270 | if (!len || len > MAX_ARG_STRLEN) | 270 | if (!len || len > MAX_ARG_STRLEN) |
271 | return 0; | 271 | return -EINVAL; |
272 | p += len; | 272 | p += len; |
273 | } | 273 | } |
274 | if (__put_user(0, envp)) | 274 | if (__put_user(0, envp)) |
@@ -1900,7 +1900,7 @@ static int elf_core_dump(long signr, struct pt_regs *regs, struct file *file, un | |||
1900 | /* alloc memory for large data structures: too large to be on stack */ | 1900 | /* alloc memory for large data structures: too large to be on stack */ |
1901 | elf = kmalloc(sizeof(*elf), GFP_KERNEL); | 1901 | elf = kmalloc(sizeof(*elf), GFP_KERNEL); |
1902 | if (!elf) | 1902 | if (!elf) |
1903 | goto cleanup; | 1903 | goto out; |
1904 | 1904 | ||
1905 | segs = current->mm->map_count; | 1905 | segs = current->mm->map_count; |
1906 | #ifdef ELF_CORE_EXTRA_PHDRS | 1906 | #ifdef ELF_CORE_EXTRA_PHDRS |
@@ -2034,8 +2034,9 @@ end_coredump: | |||
2034 | set_fs(fs); | 2034 | set_fs(fs); |
2035 | 2035 | ||
2036 | cleanup: | 2036 | cleanup: |
2037 | kfree(elf); | ||
2038 | free_note_info(&info); | 2037 | free_note_info(&info); |
2038 | kfree(elf); | ||
2039 | out: | ||
2039 | return has_dumped; | 2040 | return has_dumped; |
2040 | } | 2041 | } |
2041 | 2042 | ||
diff --git a/fs/cifs/AUTHORS b/fs/cifs/AUTHORS index 8848e4dfa026..9c136d7803d9 100644 --- a/fs/cifs/AUTHORS +++ b/fs/cifs/AUTHORS | |||
@@ -36,6 +36,7 @@ Miklos Szeredi | |||
36 | Kazeon team for various fixes especially for 2.4 version. | 36 | Kazeon team for various fixes especially for 2.4 version. |
37 | Asser Ferno (Change Notify support) | 37 | Asser Ferno (Change Notify support) |
38 | Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup | 38 | Shaggy (Dave Kleikamp) for inumerable small fs suggestions and some good cleanup |
39 | Igor Mammedov (DFS support) | ||
39 | 40 | ||
40 | Test case and Bug Report contributors | 41 | Test case and Bug Report contributors |
41 | ------------------------------------- | 42 | ------------------------------------- |
diff --git a/fs/cifs/CHANGES b/fs/cifs/CHANGES index 8355e918fddf..28e3d5c5fcac 100644 --- a/fs/cifs/CHANGES +++ b/fs/cifs/CHANGES | |||
@@ -1,5 +1,7 @@ | |||
1 | Version 1.53 | 1 | Version 1.53 |
2 | ------------ | 2 | ------------ |
3 | DFS support added (Microsoft Distributed File System client support needed | ||
4 | for referrals which enable a hierarchical name space among servers). | ||
3 | 5 | ||
4 | Version 1.52 | 6 | Version 1.52 |
5 | ------------ | 7 | ------------ |
@@ -12,7 +14,8 @@ Add ability to modify cifs acls for handling chmod (when mounted with | |||
12 | cifsacl flag). Fix prefixpath path separator so we can handle mounts | 14 | cifsacl flag). Fix prefixpath path separator so we can handle mounts |
13 | with prefixpaths longer than one directory (one path component) when | 15 | with prefixpaths longer than one directory (one path component) when |
14 | mounted to Windows servers. Fix slow file open when cifsacl | 16 | mounted to Windows servers. Fix slow file open when cifsacl |
15 | enabled. | 17 | enabled. Fix memory leak in FindNext when the SMB call returns -EBADF. |
18 | |||
16 | 19 | ||
17 | Version 1.51 | 20 | Version 1.51 |
18 | ------------ | 21 | ------------ |
diff --git a/fs/cifs/README b/fs/cifs/README index 621aa1a85971..2bd6fe556f88 100644 --- a/fs/cifs/README +++ b/fs/cifs/README | |||
@@ -483,6 +483,11 @@ A partial list of the supported mount options follows: | |||
483 | sign Must use packet signing (helps avoid unwanted data modification | 483 | sign Must use packet signing (helps avoid unwanted data modification |
484 | by intermediate systems in the route). Note that signing | 484 | by intermediate systems in the route). Note that signing |
485 | does not work with lanman or plaintext authentication. | 485 | does not work with lanman or plaintext authentication. |
486 | seal Must seal (encrypt) all data on this mounted share before | ||
487 | sending on the network. Requires support for Unix Extensions. | ||
488 | Note that this differs from the sign mount option in that it | ||
489 | causes encryption of data sent over this mounted share but other | ||
490 | shares mounted to the same server are unaffected. | ||
486 | sec Security mode. Allowed values are: | 491 | sec Security mode. Allowed values are: |
487 | none attempt to connection as a null user (no name) | 492 | none attempt to connection as a null user (no name) |
488 | krb5 Use Kerberos version 5 authentication | 493 | krb5 Use Kerberos version 5 authentication |
diff --git a/fs/cifs/TODO b/fs/cifs/TODO index 92c9feac440f..5aff46c61e52 100644 --- a/fs/cifs/TODO +++ b/fs/cifs/TODO | |||
@@ -1,4 +1,4 @@ | |||
1 | Version 1.52 January 3, 2008 | 1 | Version 1.53 May 20, 2008 |
2 | 2 | ||
3 | A Partial List of Missing Features | 3 | A Partial List of Missing Features |
4 | ================================== | 4 | ================================== |
@@ -20,20 +20,21 @@ d) Cleanup now unneeded SessSetup code in | |||
20 | fs/cifs/connect.c and add back in NTLMSSP code if any servers | 20 | fs/cifs/connect.c and add back in NTLMSSP code if any servers |
21 | need it | 21 | need it |
22 | 22 | ||
23 | e) ms-dfs and ms-dfs host name resolution cleanup | 23 | e) fix NTLMv2 signing when two mounts with different users to same |
24 | |||
25 | f) fix NTLMv2 signing when two mounts with different users to same | ||
26 | server. | 24 | server. |
27 | 25 | ||
28 | g) Directory entry caching relies on a 1 second timer, rather than | 26 | f) Directory entry caching relies on a 1 second timer, rather than |
29 | using FindNotify or equivalent. - (started) | 27 | using FindNotify or equivalent. - (started) |
30 | 28 | ||
31 | h) quota support (needs minor kernel change since quota calls | 29 | g) quota support (needs minor kernel change since quota calls |
32 | to make it to network filesystems or deviceless filesystems) | 30 | to make it to network filesystems or deviceless filesystems) |
33 | 31 | ||
34 | i) investigate sync behavior (including syncpage) and check | 32 | h) investigate sync behavior (including syncpage) and check |
35 | for proper behavior of intr/nointr | 33 | for proper behavior of intr/nointr |
36 | 34 | ||
35 | i) improve support for very old servers (OS/2 and Win9x for example) | ||
36 | Including support for changing the time remotely (utimes command). | ||
37 | |||
37 | j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the | 38 | j) hook lower into the sockets api (as NFS/SunRPC does) to avoid the |
38 | extra copy in/out of the socket buffers in some cases. | 39 | extra copy in/out of the socket buffers in some cases. |
39 | 40 | ||
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c index f6fdecf6598c..d82374c9e329 100644 --- a/fs/cifs/cifs_dfs_ref.c +++ b/fs/cifs/cifs_dfs_ref.c | |||
@@ -219,53 +219,6 @@ static struct vfsmount *cifs_dfs_do_refmount(const struct vfsmount *mnt_parent, | |||
219 | 219 | ||
220 | } | 220 | } |
221 | 221 | ||
222 | static char *build_full_dfs_path_from_dentry(struct dentry *dentry) | ||
223 | { | ||
224 | char *full_path = NULL; | ||
225 | char *search_path; | ||
226 | char *tmp_path; | ||
227 | size_t l_max_len; | ||
228 | struct cifs_sb_info *cifs_sb; | ||
229 | |||
230 | if (dentry->d_inode == NULL) | ||
231 | return NULL; | ||
232 | |||
233 | cifs_sb = CIFS_SB(dentry->d_inode->i_sb); | ||
234 | |||
235 | if (cifs_sb->tcon == NULL) | ||
236 | return NULL; | ||
237 | |||
238 | search_path = build_path_from_dentry(dentry); | ||
239 | if (search_path == NULL) | ||
240 | return NULL; | ||
241 | |||
242 | if (cifs_sb->tcon->Flags & SMB_SHARE_IS_IN_DFS) { | ||
243 | int i; | ||
244 | /* we should use full path name for correct working with DFS */ | ||
245 | l_max_len = strnlen(cifs_sb->tcon->treeName, MAX_TREE_SIZE+1) + | ||
246 | strnlen(search_path, MAX_PATHCONF) + 1; | ||
247 | tmp_path = kmalloc(l_max_len, GFP_KERNEL); | ||
248 | if (tmp_path == NULL) { | ||
249 | kfree(search_path); | ||
250 | return NULL; | ||
251 | } | ||
252 | strncpy(tmp_path, cifs_sb->tcon->treeName, l_max_len); | ||
253 | tmp_path[l_max_len-1] = 0; | ||
254 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) | ||
255 | for (i = 0; i < l_max_len; i++) { | ||
256 | if (tmp_path[i] == '\\') | ||
257 | tmp_path[i] = '/'; | ||
258 | } | ||
259 | strncat(tmp_path, search_path, l_max_len - strlen(tmp_path)); | ||
260 | |||
261 | full_path = tmp_path; | ||
262 | kfree(search_path); | ||
263 | } else { | ||
264 | full_path = search_path; | ||
265 | } | ||
266 | return full_path; | ||
267 | } | ||
268 | |||
269 | static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd, | 222 | static int add_mount_helper(struct vfsmount *newmnt, struct nameidata *nd, |
270 | struct list_head *mntlist) | 223 | struct list_head *mntlist) |
271 | { | 224 | { |
@@ -333,7 +286,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
333 | goto out_err; | 286 | goto out_err; |
334 | } | 287 | } |
335 | 288 | ||
336 | full_path = build_full_dfs_path_from_dentry(dentry); | 289 | full_path = build_path_from_dentry(dentry); |
337 | if (full_path == NULL) { | 290 | if (full_path == NULL) { |
338 | rc = -ENOMEM; | 291 | rc = -ENOMEM; |
339 | goto out_err; | 292 | goto out_err; |
diff --git a/fs/cifs/cifs_fs_sb.h b/fs/cifs/cifs_fs_sb.h index 8ad2330ba061..877c85409f1f 100644 --- a/fs/cifs/cifs_fs_sb.h +++ b/fs/cifs/cifs_fs_sb.h | |||
@@ -30,6 +30,7 @@ | |||
30 | #define CIFS_MOUNT_CIFS_ACL 0x200 /* send ACL requests to non-POSIX srv */ | 30 | #define CIFS_MOUNT_CIFS_ACL 0x200 /* send ACL requests to non-POSIX srv */ |
31 | #define CIFS_MOUNT_OVERR_UID 0x400 /* override uid returned from server */ | 31 | #define CIFS_MOUNT_OVERR_UID 0x400 /* override uid returned from server */ |
32 | #define CIFS_MOUNT_OVERR_GID 0x800 /* override gid returned from server */ | 32 | #define CIFS_MOUNT_OVERR_GID 0x800 /* override gid returned from server */ |
33 | #define CIFS_MOUNT_DYNPERM 0x1000 /* allow in-memory only mode setting */ | ||
33 | 34 | ||
34 | struct cifs_sb_info { | 35 | struct cifs_sb_info { |
35 | struct cifsTconInfo *tcon; /* primary mount */ | 36 | struct cifsTconInfo *tcon; /* primary mount */ |
diff --git a/fs/cifs/cifs_spnego.c b/fs/cifs/cifs_spnego.c index 6653e29637a7..7013aaff6aed 100644 --- a/fs/cifs/cifs_spnego.c +++ b/fs/cifs/cifs_spnego.c | |||
@@ -119,6 +119,9 @@ cifs_get_spnego_key(struct cifsSesInfo *sesInfo) | |||
119 | dp = description + strlen(description); | 119 | dp = description + strlen(description); |
120 | sprintf(dp, ";uid=0x%x", sesInfo->linux_uid); | 120 | sprintf(dp, ";uid=0x%x", sesInfo->linux_uid); |
121 | 121 | ||
122 | dp = description + strlen(description); | ||
123 | sprintf(dp, ";user=%s", sesInfo->userName); | ||
124 | |||
122 | cFYI(1, ("key description = %s", description)); | 125 | cFYI(1, ("key description = %s", description)); |
123 | spnego_key = request_key(&cifs_spnego_key_type, description, ""); | 126 | spnego_key = request_key(&cifs_spnego_key_type, description, ""); |
124 | 127 | ||
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c index 427a7c695896..5df93fd6303f 100644 --- a/fs/cifs/cifsfs.c +++ b/fs/cifs/cifsfs.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * fs/cifs/cifsfs.c | 2 | * fs/cifs/cifsfs.c |
3 | * | 3 | * |
4 | * Copyright (C) International Business Machines Corp., 2002,2007 | 4 | * Copyright (C) International Business Machines Corp., 2002,2008 |
5 | * Author(s): Steve French (sfrench@us.ibm.com) | 5 | * Author(s): Steve French (sfrench@us.ibm.com) |
6 | * | 6 | * |
7 | * Common Internet FileSystem (CIFS) client | 7 | * Common Internet FileSystem (CIFS) client |
@@ -353,9 +353,41 @@ cifs_show_options(struct seq_file *s, struct vfsmount *m) | |||
353 | if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_GID) || | 353 | if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_OVERR_GID) || |
354 | !(cifs_sb->tcon->unix_ext)) | 354 | !(cifs_sb->tcon->unix_ext)) |
355 | seq_printf(s, ",gid=%d", cifs_sb->mnt_gid); | 355 | seq_printf(s, ",gid=%d", cifs_sb->mnt_gid); |
356 | if (!cifs_sb->tcon->unix_ext) { | ||
357 | seq_printf(s, ",file_mode=0%o,dir_mode=0%o", | ||
358 | cifs_sb->mnt_file_mode, | ||
359 | cifs_sb->mnt_dir_mode); | ||
360 | } | ||
361 | if (cifs_sb->tcon->seal) | ||
362 | seq_printf(s, ",seal"); | ||
363 | if (cifs_sb->tcon->nocase) | ||
364 | seq_printf(s, ",nocase"); | ||
365 | if (cifs_sb->tcon->retry) | ||
366 | seq_printf(s, ",hard"); | ||
356 | } | 367 | } |
357 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) | 368 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) |
358 | seq_printf(s, ",posixpaths"); | 369 | seq_printf(s, ",posixpaths"); |
370 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SET_UID) | ||
371 | seq_printf(s, ",setuids"); | ||
372 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) | ||
373 | seq_printf(s, ",serverino"); | ||
374 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DIRECT_IO) | ||
375 | seq_printf(s, ",directio"); | ||
376 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_XATTR) | ||
377 | seq_printf(s, ",nouser_xattr"); | ||
378 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR) | ||
379 | seq_printf(s, ",mapchars"); | ||
380 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) | ||
381 | seq_printf(s, ",sfu"); | ||
382 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_BRL) | ||
383 | seq_printf(s, ",nobrl"); | ||
384 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) | ||
385 | seq_printf(s, ",cifsacl"); | ||
386 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_DYNPERM) | ||
387 | seq_printf(s, ",dynperm"); | ||
388 | if (m->mnt_sb->s_flags & MS_POSIXACL) | ||
389 | seq_printf(s, ",acl"); | ||
390 | |||
359 | seq_printf(s, ",rsize=%d", cifs_sb->rsize); | 391 | seq_printf(s, ",rsize=%d", cifs_sb->rsize); |
360 | seq_printf(s, ",wsize=%d", cifs_sb->wsize); | 392 | seq_printf(s, ",wsize=%d", cifs_sb->wsize); |
361 | } | 393 | } |
@@ -657,7 +689,7 @@ const struct file_operations cifs_file_ops = { | |||
657 | .splice_read = generic_file_splice_read, | 689 | .splice_read = generic_file_splice_read, |
658 | .llseek = cifs_llseek, | 690 | .llseek = cifs_llseek, |
659 | #ifdef CONFIG_CIFS_POSIX | 691 | #ifdef CONFIG_CIFS_POSIX |
660 | .ioctl = cifs_ioctl, | 692 | .unlocked_ioctl = cifs_ioctl, |
661 | #endif /* CONFIG_CIFS_POSIX */ | 693 | #endif /* CONFIG_CIFS_POSIX */ |
662 | 694 | ||
663 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 695 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
@@ -677,7 +709,7 @@ const struct file_operations cifs_file_direct_ops = { | |||
677 | .flush = cifs_flush, | 709 | .flush = cifs_flush, |
678 | .splice_read = generic_file_splice_read, | 710 | .splice_read = generic_file_splice_read, |
679 | #ifdef CONFIG_CIFS_POSIX | 711 | #ifdef CONFIG_CIFS_POSIX |
680 | .ioctl = cifs_ioctl, | 712 | .unlocked_ioctl = cifs_ioctl, |
681 | #endif /* CONFIG_CIFS_POSIX */ | 713 | #endif /* CONFIG_CIFS_POSIX */ |
682 | .llseek = cifs_llseek, | 714 | .llseek = cifs_llseek, |
683 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 715 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
@@ -697,7 +729,7 @@ const struct file_operations cifs_file_nobrl_ops = { | |||
697 | .splice_read = generic_file_splice_read, | 729 | .splice_read = generic_file_splice_read, |
698 | .llseek = cifs_llseek, | 730 | .llseek = cifs_llseek, |
699 | #ifdef CONFIG_CIFS_POSIX | 731 | #ifdef CONFIG_CIFS_POSIX |
700 | .ioctl = cifs_ioctl, | 732 | .unlocked_ioctl = cifs_ioctl, |
701 | #endif /* CONFIG_CIFS_POSIX */ | 733 | #endif /* CONFIG_CIFS_POSIX */ |
702 | 734 | ||
703 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 735 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
@@ -716,7 +748,7 @@ const struct file_operations cifs_file_direct_nobrl_ops = { | |||
716 | .flush = cifs_flush, | 748 | .flush = cifs_flush, |
717 | .splice_read = generic_file_splice_read, | 749 | .splice_read = generic_file_splice_read, |
718 | #ifdef CONFIG_CIFS_POSIX | 750 | #ifdef CONFIG_CIFS_POSIX |
719 | .ioctl = cifs_ioctl, | 751 | .unlocked_ioctl = cifs_ioctl, |
720 | #endif /* CONFIG_CIFS_POSIX */ | 752 | #endif /* CONFIG_CIFS_POSIX */ |
721 | .llseek = cifs_llseek, | 753 | .llseek = cifs_llseek, |
722 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 754 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
@@ -731,7 +763,7 @@ const struct file_operations cifs_dir_ops = { | |||
731 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 763 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
732 | .dir_notify = cifs_dir_notify, | 764 | .dir_notify = cifs_dir_notify, |
733 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ | 765 | #endif /* CONFIG_CIFS_EXPERIMENTAL */ |
734 | .ioctl = cifs_ioctl, | 766 | .unlocked_ioctl = cifs_ioctl, |
735 | }; | 767 | }; |
736 | 768 | ||
737 | static void | 769 | static void |
diff --git a/fs/cifs/cifsfs.h b/fs/cifs/cifsfs.h index cd1301a09b3b..25a6cbd15529 100644 --- a/fs/cifs/cifsfs.h +++ b/fs/cifs/cifsfs.h | |||
@@ -95,8 +95,7 @@ extern int cifs_setxattr(struct dentry *, const char *, const void *, | |||
95 | size_t, int); | 95 | size_t, int); |
96 | extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t); | 96 | extern ssize_t cifs_getxattr(struct dentry *, const char *, void *, size_t); |
97 | extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); | 97 | extern ssize_t cifs_listxattr(struct dentry *, char *, size_t); |
98 | extern int cifs_ioctl(struct inode *inode, struct file *filep, | 98 | extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg); |
99 | unsigned int command, unsigned long arg); | ||
100 | 99 | ||
101 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 100 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
102 | extern const struct export_operations cifs_export_ops; | 101 | extern const struct export_operations cifs_export_ops; |
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h index b7d9f698e63e..08914053242b 100644 --- a/fs/cifs/cifsglob.h +++ b/fs/cifs/cifsglob.h | |||
@@ -281,6 +281,7 @@ struct cifsTconInfo { | |||
281 | bool ipc:1; /* set if connection to IPC$ eg for RPC/PIPES */ | 281 | bool ipc:1; /* set if connection to IPC$ eg for RPC/PIPES */ |
282 | bool retry:1; | 282 | bool retry:1; |
283 | bool nocase:1; | 283 | bool nocase:1; |
284 | bool seal:1; /* transport encryption for this mounted share */ | ||
284 | bool unix_ext:1; /* if false disable Linux extensions to CIFS protocol | 285 | bool unix_ext:1; /* if false disable Linux extensions to CIFS protocol |
285 | for this mount even if server would support */ | 286 | for this mount even if server would support */ |
286 | /* BB add field for back pointer to sb struct(s)? */ | 287 | /* BB add field for back pointer to sb struct(s)? */ |
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h index c43bf4b7a556..65d58b4e6a61 100644 --- a/fs/cifs/cifspdu.h +++ b/fs/cifs/cifspdu.h | |||
@@ -1904,19 +1904,26 @@ typedef struct smb_com_transaction2_get_dfs_refer_req { | |||
1904 | char RequestFileName[1]; | 1904 | char RequestFileName[1]; |
1905 | } __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_REQ; | 1905 | } __attribute__((packed)) TRANSACTION2_GET_DFS_REFER_REQ; |
1906 | 1906 | ||
1907 | #define DFS_VERSION cpu_to_le16(0x0003) | ||
1908 | |||
1909 | /* DFS server target type */ | ||
1910 | #define DFS_TYPE_LINK 0x0000 /* also for sysvol targets */ | ||
1911 | #define DFS_TYPE_ROOT 0x0001 | ||
1912 | |||
1913 | /* Referral Entry Flags */ | ||
1914 | #define DFS_NAME_LIST_REF 0x0200 | ||
1915 | |||
1907 | typedef struct dfs_referral_level_3 { | 1916 | typedef struct dfs_referral_level_3 { |
1908 | __le16 VersionNumber; | 1917 | __le16 VersionNumber; |
1909 | __le16 ReferralSize; | 1918 | __le16 Size; |
1910 | __le16 ServerType; /* 0x0001 = CIFS server */ | 1919 | __le16 ServerType; /* 0x0001 = root targets; 0x0000 = link targets */ |
1911 | __le16 ReferralFlags; /* or proximity - not clear which since it is | 1920 | __le16 ReferralEntryFlags; /* 0x0200 bit set only for domain |
1912 | always set to zero - SNIA spec says 0x01 | 1921 | or DC referral responce */ |
1913 | means strip off PathConsumed chars before | 1922 | __le32 TimeToLive; |
1914 | submitting RequestFileName to remote node */ | ||
1915 | __le16 TimeToLive; | ||
1916 | __le16 Proximity; | ||
1917 | __le16 DfsPathOffset; | 1923 | __le16 DfsPathOffset; |
1918 | __le16 DfsAlternatePathOffset; | 1924 | __le16 DfsAlternatePathOffset; |
1919 | __le16 NetworkAddressOffset; | 1925 | __le16 NetworkAddressOffset; /* offset of the link target */ |
1926 | __le16 ServiceSiteGuid; | ||
1920 | } __attribute__((packed)) REFERRAL3; | 1927 | } __attribute__((packed)) REFERRAL3; |
1921 | 1928 | ||
1922 | typedef struct smb_com_transaction_get_dfs_refer_rsp { | 1929 | typedef struct smb_com_transaction_get_dfs_refer_rsp { |
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index d481f6c5a2be..b9f5e935f821 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h | |||
@@ -93,7 +93,7 @@ extern struct timespec cnvrtDosUnixTm(__u16 date, __u16 time); | |||
93 | 93 | ||
94 | extern int cifs_get_inode_info(struct inode **pinode, | 94 | extern int cifs_get_inode_info(struct inode **pinode, |
95 | const unsigned char *search_path, | 95 | const unsigned char *search_path, |
96 | FILE_ALL_INFO * pfile_info, | 96 | FILE_ALL_INFO *pfile_info, |
97 | struct super_block *sb, int xid, const __u16 *pfid); | 97 | struct super_block *sb, int xid, const __u16 *pfid); |
98 | extern int cifs_get_inode_info_unix(struct inode **pinode, | 98 | extern int cifs_get_inode_info_unix(struct inode **pinode, |
99 | const unsigned char *search_path, | 99 | const unsigned char *search_path, |
@@ -130,7 +130,7 @@ extern int CIFSFindClose(const int, struct cifsTconInfo *tcon, | |||
130 | 130 | ||
131 | extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon, | 131 | extern int CIFSSMBQPathInfo(const int xid, struct cifsTconInfo *tcon, |
132 | const unsigned char *searchName, | 132 | const unsigned char *searchName, |
133 | FILE_ALL_INFO * findData, | 133 | FILE_ALL_INFO *findData, |
134 | int legacy /* whether to use old info level */, | 134 | int legacy /* whether to use old info level */, |
135 | const struct nls_table *nls_codepage, int remap); | 135 | const struct nls_table *nls_codepage, int remap); |
136 | extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, | 136 | extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, |
@@ -141,18 +141,15 @@ extern int SMBQueryInformation(const int xid, struct cifsTconInfo *tcon, | |||
141 | extern int CIFSSMBUnixQPathInfo(const int xid, | 141 | extern int CIFSSMBUnixQPathInfo(const int xid, |
142 | struct cifsTconInfo *tcon, | 142 | struct cifsTconInfo *tcon, |
143 | const unsigned char *searchName, | 143 | const unsigned char *searchName, |
144 | FILE_UNIX_BASIC_INFO * pFindData, | 144 | FILE_UNIX_BASIC_INFO *pFindData, |
145 | const struct nls_table *nls_codepage, int remap); | 145 | const struct nls_table *nls_codepage, int remap); |
146 | 146 | ||
147 | extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, | 147 | extern int CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, |
148 | const unsigned char *searchName, | 148 | const unsigned char *searchName, |
149 | unsigned char **targetUNCs, | 149 | struct dfs_info3_param **target_nodes, |
150 | unsigned int *number_of_UNC_in_array, | 150 | unsigned int *number_of_nodes_in_array, |
151 | const struct nls_table *nls_codepage, int remap); | 151 | const struct nls_table *nls_codepage, int remap); |
152 | 152 | ||
153 | extern int connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo, | ||
154 | const char *old_path, | ||
155 | const struct nls_table *nls_codepage, int remap); | ||
156 | extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, | 153 | extern int get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, |
157 | const char *old_path, | 154 | const char *old_path, |
158 | const struct nls_table *nls_codepage, | 155 | const struct nls_table *nls_codepage, |
diff --git a/fs/cifs/cifssmb.c b/fs/cifs/cifssmb.c index 95fbba4ea7d4..9b8b4cfdf993 100644 --- a/fs/cifs/cifssmb.c +++ b/fs/cifs/cifssmb.c | |||
@@ -81,6 +81,40 @@ static struct { | |||
81 | #endif /* CONFIG_CIFS_WEAK_PW_HASH */ | 81 | #endif /* CONFIG_CIFS_WEAK_PW_HASH */ |
82 | #endif /* CIFS_POSIX */ | 82 | #endif /* CIFS_POSIX */ |
83 | 83 | ||
84 | /* Allocates buffer into dst and copies smb string from src to it. | ||
85 | * caller is responsible for freeing dst if function returned 0. | ||
86 | * returns: | ||
87 | * on success - 0 | ||
88 | * on failure - errno | ||
89 | */ | ||
90 | static int | ||
91 | cifs_strncpy_to_host(char **dst, const char *src, const int maxlen, | ||
92 | const bool is_unicode, const struct nls_table *nls_codepage) | ||
93 | { | ||
94 | int plen; | ||
95 | |||
96 | if (is_unicode) { | ||
97 | plen = UniStrnlen((wchar_t *)src, maxlen); | ||
98 | *dst = kmalloc(plen + 2, GFP_KERNEL); | ||
99 | if (!*dst) | ||
100 | goto cifs_strncpy_to_host_ErrExit; | ||
101 | cifs_strfromUCS_le(*dst, (__le16 *)src, plen, nls_codepage); | ||
102 | } else { | ||
103 | plen = strnlen(src, maxlen); | ||
104 | *dst = kmalloc(plen + 2, GFP_KERNEL); | ||
105 | if (!*dst) | ||
106 | goto cifs_strncpy_to_host_ErrExit; | ||
107 | strncpy(*dst, src, plen); | ||
108 | } | ||
109 | (*dst)[plen] = 0; | ||
110 | (*dst)[plen+1] = 0; /* harmless for ASCII case, needed for Unicode */ | ||
111 | return 0; | ||
112 | |||
113 | cifs_strncpy_to_host_ErrExit: | ||
114 | cERROR(1, ("Failed to allocate buffer for string\n")); | ||
115 | return -ENOMEM; | ||
116 | } | ||
117 | |||
84 | 118 | ||
85 | /* Mark as invalid, all open files on tree connections since they | 119 | /* Mark as invalid, all open files on tree connections since they |
86 | were closed when session to server was lost */ | 120 | were closed when session to server was lost */ |
@@ -1166,6 +1200,20 @@ static __u16 convert_disposition(int disposition) | |||
1166 | return ofun; | 1200 | return ofun; |
1167 | } | 1201 | } |
1168 | 1202 | ||
1203 | static int | ||
1204 | access_flags_to_smbopen_mode(const int access_flags) | ||
1205 | { | ||
1206 | int masked_flags = access_flags & (GENERIC_READ | GENERIC_WRITE); | ||
1207 | |||
1208 | if (masked_flags == GENERIC_READ) | ||
1209 | return SMBOPEN_READ; | ||
1210 | else if (masked_flags == GENERIC_WRITE) | ||
1211 | return SMBOPEN_WRITE; | ||
1212 | |||
1213 | /* just go for read/write */ | ||
1214 | return SMBOPEN_READWRITE; | ||
1215 | } | ||
1216 | |||
1169 | int | 1217 | int |
1170 | SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon, | 1218 | SMBLegacyOpen(const int xid, struct cifsTconInfo *tcon, |
1171 | const char *fileName, const int openDisposition, | 1219 | const char *fileName, const int openDisposition, |
@@ -1207,13 +1255,7 @@ OldOpenRetry: | |||
1207 | pSMB->OpenFlags = cpu_to_le16(REQ_BATCHOPLOCK); | 1255 | pSMB->OpenFlags = cpu_to_le16(REQ_BATCHOPLOCK); |
1208 | 1256 | ||
1209 | pSMB->OpenFlags |= cpu_to_le16(REQ_MORE_INFO); | 1257 | pSMB->OpenFlags |= cpu_to_le16(REQ_MORE_INFO); |
1210 | /* BB fixme add conversion for access_flags to bits 0 - 2 of mode */ | 1258 | pSMB->Mode = cpu_to_le16(access_flags_to_smbopen_mode(access_flags)); |
1211 | /* 0 = read | ||
1212 | 1 = write | ||
1213 | 2 = rw | ||
1214 | 3 = execute | ||
1215 | */ | ||
1216 | pSMB->Mode = cpu_to_le16(2); | ||
1217 | pSMB->Mode |= cpu_to_le16(0x40); /* deny none */ | 1259 | pSMB->Mode |= cpu_to_le16(0x40); /* deny none */ |
1218 | /* set file as system file if special file such | 1260 | /* set file as system file if special file such |
1219 | as fifo and server expecting SFU style and | 1261 | as fifo and server expecting SFU style and |
@@ -1247,7 +1289,7 @@ OldOpenRetry: | |||
1247 | } else { | 1289 | } else { |
1248 | /* BB verify if wct == 15 */ | 1290 | /* BB verify if wct == 15 */ |
1249 | 1291 | ||
1250 | /* *pOplock = pSMBr->OplockLevel; */ /* BB take from action field BB */ | 1292 | /* *pOplock = pSMBr->OplockLevel; */ /* BB take from action field*/ |
1251 | 1293 | ||
1252 | *netfid = pSMBr->Fid; /* cifs fid stays in le */ | 1294 | *netfid = pSMBr->Fid; /* cifs fid stays in le */ |
1253 | /* Let caller know file was created so we can set the mode. */ | 1295 | /* Let caller know file was created so we can set the mode. */ |
@@ -1767,7 +1809,7 @@ CIFSSMBPosixLock(const int xid, struct cifsTconInfo *tcon, | |||
1767 | cFYI(1, ("Posix Lock")); | 1809 | cFYI(1, ("Posix Lock")); |
1768 | 1810 | ||
1769 | if (pLockData == NULL) | 1811 | if (pLockData == NULL) |
1770 | return EINVAL; | 1812 | return -EINVAL; |
1771 | 1813 | ||
1772 | rc = small_smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB); | 1814 | rc = small_smb_init(SMB_COM_TRANSACTION2, 15, tcon, (void **) &pSMB); |
1773 | 1815 | ||
@@ -1944,7 +1986,7 @@ renameRetry: | |||
1944 | /* protocol requires ASCII signature byte on Unicode string */ | 1986 | /* protocol requires ASCII signature byte on Unicode string */ |
1945 | pSMB->OldFileName[name_len + 1] = 0x00; | 1987 | pSMB->OldFileName[name_len + 1] = 0x00; |
1946 | name_len2 = | 1988 | name_len2 = |
1947 | cifsConvertToUCS((__le16 *) &pSMB->OldFileName[name_len + 2], | 1989 | cifsConvertToUCS((__le16 *)&pSMB->OldFileName[name_len + 2], |
1948 | toName, PATH_MAX, nls_codepage, remap); | 1990 | toName, PATH_MAX, nls_codepage, remap); |
1949 | name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ; | 1991 | name_len2 += 1 /* trailing null */ + 1 /* Signature word */ ; |
1950 | name_len2 *= 2; /* convert to bytes */ | 1992 | name_len2 *= 2; /* convert to bytes */ |
@@ -2117,8 +2159,7 @@ copyRetry: | |||
2117 | cFYI(1, ("Send error in copy = %d with %d files copied", | 2159 | cFYI(1, ("Send error in copy = %d with %d files copied", |
2118 | rc, le16_to_cpu(pSMBr->CopyCount))); | 2160 | rc, le16_to_cpu(pSMBr->CopyCount))); |
2119 | } | 2161 | } |
2120 | if (pSMB) | 2162 | cifs_buf_release(pSMB); |
2121 | cifs_buf_release(pSMB); | ||
2122 | 2163 | ||
2123 | if (rc == -EAGAIN) | 2164 | if (rc == -EAGAIN) |
2124 | goto copyRetry; | 2165 | goto copyRetry; |
@@ -2207,8 +2248,7 @@ createSymLinkRetry: | |||
2207 | if (rc) | 2248 | if (rc) |
2208 | cFYI(1, ("Send error in SetPathInfo create symlink = %d", rc)); | 2249 | cFYI(1, ("Send error in SetPathInfo create symlink = %d", rc)); |
2209 | 2250 | ||
2210 | if (pSMB) | 2251 | cifs_buf_release(pSMB); |
2211 | cifs_buf_release(pSMB); | ||
2212 | 2252 | ||
2213 | if (rc == -EAGAIN) | 2253 | if (rc == -EAGAIN) |
2214 | goto createSymLinkRetry; | 2254 | goto createSymLinkRetry; |
@@ -2925,7 +2965,8 @@ setAclRetry: | |||
2925 | } | 2965 | } |
2926 | params = 6 + name_len; | 2966 | params = 6 + name_len; |
2927 | pSMB->MaxParameterCount = cpu_to_le16(2); | 2967 | pSMB->MaxParameterCount = cpu_to_le16(2); |
2928 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB size from sess */ | 2968 | /* BB find max SMB size from sess */ |
2969 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
2929 | pSMB->MaxSetupCount = 0; | 2970 | pSMB->MaxSetupCount = 0; |
2930 | pSMB->Reserved = 0; | 2971 | pSMB->Reserved = 0; |
2931 | pSMB->Flags = 0; | 2972 | pSMB->Flags = 0; |
@@ -3322,7 +3363,8 @@ QPathInfoRetry: | |||
3322 | params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; | 3363 | params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; |
3323 | pSMB->TotalDataCount = 0; | 3364 | pSMB->TotalDataCount = 0; |
3324 | pSMB->MaxParameterCount = cpu_to_le16(2); | 3365 | pSMB->MaxParameterCount = cpu_to_le16(2); |
3325 | pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ | 3366 | /* BB find exact max SMB PDU from sess structure BB */ |
3367 | pSMB->MaxDataCount = cpu_to_le16(4000); | ||
3326 | pSMB->MaxSetupCount = 0; | 3368 | pSMB->MaxSetupCount = 0; |
3327 | pSMB->Reserved = 0; | 3369 | pSMB->Reserved = 0; |
3328 | pSMB->Flags = 0; | 3370 | pSMB->Flags = 0; |
@@ -3388,7 +3430,7 @@ QPathInfoRetry: | |||
3388 | int | 3430 | int |
3389 | CIFSSMBUnixQPathInfo(const int xid, struct cifsTconInfo *tcon, | 3431 | CIFSSMBUnixQPathInfo(const int xid, struct cifsTconInfo *tcon, |
3390 | const unsigned char *searchName, | 3432 | const unsigned char *searchName, |
3391 | FILE_UNIX_BASIC_INFO * pFindData, | 3433 | FILE_UNIX_BASIC_INFO *pFindData, |
3392 | const struct nls_table *nls_codepage, int remap) | 3434 | const struct nls_table *nls_codepage, int remap) |
3393 | { | 3435 | { |
3394 | /* SMB_QUERY_FILE_UNIX_BASIC */ | 3436 | /* SMB_QUERY_FILE_UNIX_BASIC */ |
@@ -3679,6 +3721,7 @@ int CIFSFindNext(const int xid, struct cifsTconInfo *tcon, | |||
3679 | if (rc) { | 3721 | if (rc) { |
3680 | if (rc == -EBADF) { | 3722 | if (rc == -EBADF) { |
3681 | psrch_inf->endOfSearch = true; | 3723 | psrch_inf->endOfSearch = true; |
3724 | cifs_buf_release(pSMB); | ||
3682 | rc = 0; /* search probably was closed at end of search*/ | 3725 | rc = 0; /* search probably was closed at end of search*/ |
3683 | } else | 3726 | } else |
3684 | cFYI(1, ("FindNext returned = %d", rc)); | 3727 | cFYI(1, ("FindNext returned = %d", rc)); |
@@ -3856,25 +3899,112 @@ GetInodeNumOut: | |||
3856 | return rc; | 3899 | return rc; |
3857 | } | 3900 | } |
3858 | 3901 | ||
3902 | /* parses DFS refferal V3 structure | ||
3903 | * caller is responsible for freeing target_nodes | ||
3904 | * returns: | ||
3905 | * on success - 0 | ||
3906 | * on failure - errno | ||
3907 | */ | ||
3908 | static int | ||
3909 | parse_DFS_referrals(TRANSACTION2_GET_DFS_REFER_RSP *pSMBr, | ||
3910 | unsigned int *num_of_nodes, | ||
3911 | struct dfs_info3_param **target_nodes, | ||
3912 | const struct nls_table *nls_codepage) | ||
3913 | { | ||
3914 | int i, rc = 0; | ||
3915 | char *data_end; | ||
3916 | bool is_unicode; | ||
3917 | struct dfs_referral_level_3 *ref; | ||
3918 | |||
3919 | is_unicode = pSMBr->hdr.Flags2 & SMBFLG2_UNICODE; | ||
3920 | *num_of_nodes = le16_to_cpu(pSMBr->NumberOfReferrals); | ||
3921 | |||
3922 | if (*num_of_nodes < 1) { | ||
3923 | cERROR(1, ("num_referrals: must be at least > 0," | ||
3924 | "but we get num_referrals = %d\n", *num_of_nodes)); | ||
3925 | rc = -EINVAL; | ||
3926 | goto parse_DFS_referrals_exit; | ||
3927 | } | ||
3928 | |||
3929 | ref = (struct dfs_referral_level_3 *) &(pSMBr->referrals); | ||
3930 | if (ref->VersionNumber != 3) { | ||
3931 | cERROR(1, ("Referrals of V%d version are not supported," | ||
3932 | "should be V3", ref->VersionNumber)); | ||
3933 | rc = -EINVAL; | ||
3934 | goto parse_DFS_referrals_exit; | ||
3935 | } | ||
3936 | |||
3937 | /* get the upper boundary of the resp buffer */ | ||
3938 | data_end = (char *)(&(pSMBr->PathConsumed)) + | ||
3939 | le16_to_cpu(pSMBr->t2.DataCount); | ||
3940 | |||
3941 | cFYI(1, ("num_referrals: %d dfs flags: 0x%x ... \n", | ||
3942 | *num_of_nodes, | ||
3943 | le16_to_cpu(pSMBr->DFSFlags))); | ||
3944 | |||
3945 | *target_nodes = kzalloc(sizeof(struct dfs_info3_param) * | ||
3946 | *num_of_nodes, GFP_KERNEL); | ||
3947 | if (*target_nodes == NULL) { | ||
3948 | cERROR(1, ("Failed to allocate buffer for target_nodes\n")); | ||
3949 | rc = -ENOMEM; | ||
3950 | goto parse_DFS_referrals_exit; | ||
3951 | } | ||
3952 | |||
3953 | /* collect neccessary data from referrals */ | ||
3954 | for (i = 0; i < *num_of_nodes; i++) { | ||
3955 | char *temp; | ||
3956 | int max_len; | ||
3957 | struct dfs_info3_param *node = (*target_nodes)+i; | ||
3958 | |||
3959 | node->flags = le16_to_cpu(pSMBr->DFSFlags); | ||
3960 | node->path_consumed = le16_to_cpu(pSMBr->PathConsumed); | ||
3961 | node->server_type = le16_to_cpu(ref->ServerType); | ||
3962 | node->ref_flag = le16_to_cpu(ref->ReferralEntryFlags); | ||
3963 | |||
3964 | /* copy DfsPath */ | ||
3965 | temp = (char *)ref + le16_to_cpu(ref->DfsPathOffset); | ||
3966 | max_len = data_end - temp; | ||
3967 | rc = cifs_strncpy_to_host(&(node->path_name), temp, | ||
3968 | max_len, is_unicode, nls_codepage); | ||
3969 | if (rc) | ||
3970 | goto parse_DFS_referrals_exit; | ||
3971 | |||
3972 | /* copy link target UNC */ | ||
3973 | temp = (char *)ref + le16_to_cpu(ref->NetworkAddressOffset); | ||
3974 | max_len = data_end - temp; | ||
3975 | rc = cifs_strncpy_to_host(&(node->node_name), temp, | ||
3976 | max_len, is_unicode, nls_codepage); | ||
3977 | if (rc) | ||
3978 | goto parse_DFS_referrals_exit; | ||
3979 | |||
3980 | ref += ref->Size; | ||
3981 | } | ||
3982 | |||
3983 | parse_DFS_referrals_exit: | ||
3984 | if (rc) { | ||
3985 | free_dfs_info_array(*target_nodes, *num_of_nodes); | ||
3986 | *target_nodes = NULL; | ||
3987 | *num_of_nodes = 0; | ||
3988 | } | ||
3989 | return rc; | ||
3990 | } | ||
3991 | |||
3859 | int | 3992 | int |
3860 | CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, | 3993 | CIFSGetDFSRefer(const int xid, struct cifsSesInfo *ses, |
3861 | const unsigned char *searchName, | 3994 | const unsigned char *searchName, |
3862 | unsigned char **targetUNCs, | 3995 | struct dfs_info3_param **target_nodes, |
3863 | unsigned int *number_of_UNC_in_array, | 3996 | unsigned int *num_of_nodes, |
3864 | const struct nls_table *nls_codepage, int remap) | 3997 | const struct nls_table *nls_codepage, int remap) |
3865 | { | 3998 | { |
3866 | /* TRANS2_GET_DFS_REFERRAL */ | 3999 | /* TRANS2_GET_DFS_REFERRAL */ |
3867 | TRANSACTION2_GET_DFS_REFER_REQ *pSMB = NULL; | 4000 | TRANSACTION2_GET_DFS_REFER_REQ *pSMB = NULL; |
3868 | TRANSACTION2_GET_DFS_REFER_RSP *pSMBr = NULL; | 4001 | TRANSACTION2_GET_DFS_REFER_RSP *pSMBr = NULL; |
3869 | struct dfs_referral_level_3 *referrals = NULL; | ||
3870 | int rc = 0; | 4002 | int rc = 0; |
3871 | int bytes_returned; | 4003 | int bytes_returned; |
3872 | int name_len; | 4004 | int name_len; |
3873 | unsigned int i; | ||
3874 | char *temp; | ||
3875 | __u16 params, byte_count; | 4005 | __u16 params, byte_count; |
3876 | *number_of_UNC_in_array = 0; | 4006 | *num_of_nodes = 0; |
3877 | *targetUNCs = NULL; | 4007 | *target_nodes = NULL; |
3878 | 4008 | ||
3879 | cFYI(1, ("In GetDFSRefer the path %s", searchName)); | 4009 | cFYI(1, ("In GetDFSRefer the path %s", searchName)); |
3880 | if (ses == NULL) | 4010 | if (ses == NULL) |
@@ -3921,7 +4051,8 @@ getDFSRetry: | |||
3921 | pSMB->DataCount = 0; | 4051 | pSMB->DataCount = 0; |
3922 | pSMB->DataOffset = 0; | 4052 | pSMB->DataOffset = 0; |
3923 | pSMB->MaxParameterCount = 0; | 4053 | pSMB->MaxParameterCount = 0; |
3924 | pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ | 4054 | /* BB find exact max SMB PDU from sess structure BB */ |
4055 | pSMB->MaxDataCount = cpu_to_le16(4000); | ||
3925 | pSMB->MaxSetupCount = 0; | 4056 | pSMB->MaxSetupCount = 0; |
3926 | pSMB->Reserved = 0; | 4057 | pSMB->Reserved = 0; |
3927 | pSMB->Flags = 0; | 4058 | pSMB->Flags = 0; |
@@ -3943,103 +4074,26 @@ getDFSRetry: | |||
3943 | (struct smb_hdr *) pSMBr, &bytes_returned, 0); | 4074 | (struct smb_hdr *) pSMBr, &bytes_returned, 0); |
3944 | if (rc) { | 4075 | if (rc) { |
3945 | cFYI(1, ("Send error in GetDFSRefer = %d", rc)); | 4076 | cFYI(1, ("Send error in GetDFSRefer = %d", rc)); |
3946 | } else { /* decode response */ | 4077 | goto GetDFSRefExit; |
3947 | /* BB Add logic to parse referrals here */ | 4078 | } |
3948 | rc = validate_t2((struct smb_t2_rsp *)pSMBr); | 4079 | rc = validate_t2((struct smb_t2_rsp *)pSMBr); |
3949 | 4080 | ||
3950 | /* BB Also check if enough total bytes returned? */ | 4081 | /* BB Also check if enough total bytes returned? */ |
3951 | if (rc || (pSMBr->ByteCount < 17)) | 4082 | if (rc || (pSMBr->ByteCount < 17)) { |
3952 | rc = -EIO; /* bad smb */ | 4083 | rc = -EIO; /* bad smb */ |
3953 | else { | 4084 | goto GetDFSRefExit; |
3954 | __u16 data_offset = le16_to_cpu(pSMBr->t2.DataOffset); | 4085 | } |
3955 | __u16 data_count = le16_to_cpu(pSMBr->t2.DataCount); | ||
3956 | 4086 | ||
3957 | cFYI(1, | 4087 | cFYI(1, ("Decoding GetDFSRefer response BCC: %d Offset %d", |
3958 | ("Decoding GetDFSRefer response BCC: %d Offset %d", | 4088 | pSMBr->ByteCount, |
3959 | pSMBr->ByteCount, data_offset)); | 4089 | le16_to_cpu(pSMBr->t2.DataOffset))); |
3960 | referrals = | ||
3961 | (struct dfs_referral_level_3 *) | ||
3962 | (8 /* sizeof start of data block */ + | ||
3963 | data_offset + | ||
3964 | (char *) &pSMBr->hdr.Protocol); | ||
3965 | cFYI(1, ("num_referrals: %d dfs flags: 0x%x ... \n" | ||
3966 | "for referral one refer size: 0x%x srv " | ||
3967 | "type: 0x%x refer flags: 0x%x ttl: 0x%x", | ||
3968 | le16_to_cpu(pSMBr->NumberOfReferrals), | ||
3969 | le16_to_cpu(pSMBr->DFSFlags), | ||
3970 | le16_to_cpu(referrals->ReferralSize), | ||
3971 | le16_to_cpu(referrals->ServerType), | ||
3972 | le16_to_cpu(referrals->ReferralFlags), | ||
3973 | le16_to_cpu(referrals->TimeToLive))); | ||
3974 | /* BB This field is actually two bytes in from start of | ||
3975 | data block so we could do safety check that DataBlock | ||
3976 | begins at address of pSMBr->NumberOfReferrals */ | ||
3977 | *number_of_UNC_in_array = | ||
3978 | le16_to_cpu(pSMBr->NumberOfReferrals); | ||
3979 | |||
3980 | /* BB Fix below so can return more than one referral */ | ||
3981 | if (*number_of_UNC_in_array > 1) | ||
3982 | *number_of_UNC_in_array = 1; | ||
3983 | |||
3984 | /* get the length of the strings describing refs */ | ||
3985 | name_len = 0; | ||
3986 | for (i = 0; i < *number_of_UNC_in_array; i++) { | ||
3987 | /* make sure that DfsPathOffset not past end */ | ||
3988 | __u16 offset = | ||
3989 | le16_to_cpu(referrals->DfsPathOffset); | ||
3990 | if (offset > data_count) { | ||
3991 | /* if invalid referral, stop here and do | ||
3992 | not try to copy any more */ | ||
3993 | *number_of_UNC_in_array = i; | ||
3994 | break; | ||
3995 | } | ||
3996 | temp = ((char *)referrals) + offset; | ||
3997 | 4090 | ||
3998 | if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) { | 4091 | /* parse returned result into more usable form */ |
3999 | name_len += UniStrnlen((wchar_t *)temp, | 4092 | rc = parse_DFS_referrals(pSMBr, num_of_nodes, |
4000 | data_count); | 4093 | target_nodes, nls_codepage); |
4001 | } else { | ||
4002 | name_len += strnlen(temp, data_count); | ||
4003 | } | ||
4004 | referrals++; | ||
4005 | /* BB add check that referral pointer does | ||
4006 | not fall off end PDU */ | ||
4007 | } | ||
4008 | /* BB add check for name_len bigger than bcc */ | ||
4009 | *targetUNCs = | ||
4010 | kmalloc(name_len+1+(*number_of_UNC_in_array), | ||
4011 | GFP_KERNEL); | ||
4012 | if (*targetUNCs == NULL) { | ||
4013 | rc = -ENOMEM; | ||
4014 | goto GetDFSRefExit; | ||
4015 | } | ||
4016 | /* copy the ref strings */ | ||
4017 | referrals = (struct dfs_referral_level_3 *) | ||
4018 | (8 /* sizeof data hdr */ + data_offset + | ||
4019 | (char *) &pSMBr->hdr.Protocol); | ||
4020 | |||
4021 | for (i = 0; i < *number_of_UNC_in_array; i++) { | ||
4022 | temp = ((char *)referrals) + | ||
4023 | le16_to_cpu(referrals->DfsPathOffset); | ||
4024 | if (pSMBr->hdr.Flags2 & SMBFLG2_UNICODE) { | ||
4025 | cifs_strfromUCS_le(*targetUNCs, | ||
4026 | (__le16 *) temp, | ||
4027 | name_len, | ||
4028 | nls_codepage); | ||
4029 | } else { | ||
4030 | strncpy(*targetUNCs, temp, name_len); | ||
4031 | } | ||
4032 | /* BB update target_uncs pointers */ | ||
4033 | referrals++; | ||
4034 | } | ||
4035 | temp = *targetUNCs; | ||
4036 | temp[name_len] = 0; | ||
4037 | } | ||
4038 | 4094 | ||
4039 | } | ||
4040 | GetDFSRefExit: | 4095 | GetDFSRefExit: |
4041 | if (pSMB) | 4096 | cifs_buf_release(pSMB); |
4042 | cifs_buf_release(pSMB); | ||
4043 | 4097 | ||
4044 | if (rc == -EAGAIN) | 4098 | if (rc == -EAGAIN) |
4045 | goto getDFSRetry; | 4099 | goto getDFSRetry; |
@@ -4229,7 +4283,8 @@ QFSAttributeRetry: | |||
4229 | params = 2; /* level */ | 4283 | params = 2; /* level */ |
4230 | pSMB->TotalDataCount = 0; | 4284 | pSMB->TotalDataCount = 0; |
4231 | pSMB->MaxParameterCount = cpu_to_le16(2); | 4285 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4232 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ | 4286 | /* BB find exact max SMB PDU from sess structure BB */ |
4287 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
4233 | pSMB->MaxSetupCount = 0; | 4288 | pSMB->MaxSetupCount = 0; |
4234 | pSMB->Reserved = 0; | 4289 | pSMB->Reserved = 0; |
4235 | pSMB->Flags = 0; | 4290 | pSMB->Flags = 0; |
@@ -4298,7 +4353,8 @@ QFSDeviceRetry: | |||
4298 | params = 2; /* level */ | 4353 | params = 2; /* level */ |
4299 | pSMB->TotalDataCount = 0; | 4354 | pSMB->TotalDataCount = 0; |
4300 | pSMB->MaxParameterCount = cpu_to_le16(2); | 4355 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4301 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ | 4356 | /* BB find exact max SMB PDU from sess structure BB */ |
4357 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
4302 | pSMB->MaxSetupCount = 0; | 4358 | pSMB->MaxSetupCount = 0; |
4303 | pSMB->Reserved = 0; | 4359 | pSMB->Reserved = 0; |
4304 | pSMB->Flags = 0; | 4360 | pSMB->Flags = 0; |
@@ -4369,7 +4425,8 @@ QFSUnixRetry: | |||
4369 | pSMB->DataCount = 0; | 4425 | pSMB->DataCount = 0; |
4370 | pSMB->DataOffset = 0; | 4426 | pSMB->DataOffset = 0; |
4371 | pSMB->MaxParameterCount = cpu_to_le16(2); | 4427 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4372 | pSMB->MaxDataCount = cpu_to_le16(100); /* BB find exact max SMB PDU from sess structure BB */ | 4428 | /* BB find exact max SMB PDU from sess structure BB */ |
4429 | pSMB->MaxDataCount = cpu_to_le16(100); | ||
4373 | pSMB->MaxSetupCount = 0; | 4430 | pSMB->MaxSetupCount = 0; |
4374 | pSMB->Reserved = 0; | 4431 | pSMB->Reserved = 0; |
4375 | pSMB->Flags = 0; | 4432 | pSMB->Flags = 0; |
@@ -4444,7 +4501,8 @@ SETFSUnixRetry: | |||
4444 | offset = param_offset + params; | 4501 | offset = param_offset + params; |
4445 | 4502 | ||
4446 | pSMB->MaxParameterCount = cpu_to_le16(4); | 4503 | pSMB->MaxParameterCount = cpu_to_le16(4); |
4447 | pSMB->MaxDataCount = cpu_to_le16(100); /* BB find exact max SMB PDU from sess structure BB */ | 4504 | /* BB find exact max SMB PDU from sess structure BB */ |
4505 | pSMB->MaxDataCount = cpu_to_le16(100); | ||
4448 | pSMB->SetupCount = 1; | 4506 | pSMB->SetupCount = 1; |
4449 | pSMB->Reserved3 = 0; | 4507 | pSMB->Reserved3 = 0; |
4450 | pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FS_INFORMATION); | 4508 | pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FS_INFORMATION); |
@@ -4512,7 +4570,8 @@ QFSPosixRetry: | |||
4512 | pSMB->DataCount = 0; | 4570 | pSMB->DataCount = 0; |
4513 | pSMB->DataOffset = 0; | 4571 | pSMB->DataOffset = 0; |
4514 | pSMB->MaxParameterCount = cpu_to_le16(2); | 4572 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4515 | pSMB->MaxDataCount = cpu_to_le16(100); /* BB find exact max SMB PDU from sess structure BB */ | 4573 | /* BB find exact max SMB PDU from sess structure BB */ |
4574 | pSMB->MaxDataCount = cpu_to_le16(100); | ||
4516 | pSMB->MaxSetupCount = 0; | 4575 | pSMB->MaxSetupCount = 0; |
4517 | pSMB->Reserved = 0; | 4576 | pSMB->Reserved = 0; |
4518 | pSMB->Flags = 0; | 4577 | pSMB->Flags = 0; |
@@ -4702,7 +4761,8 @@ CIFSSMBSetFileSize(const int xid, struct cifsTconInfo *tcon, __u64 size, | |||
4702 | 4761 | ||
4703 | count = sizeof(struct file_end_of_file_info); | 4762 | count = sizeof(struct file_end_of_file_info); |
4704 | pSMB->MaxParameterCount = cpu_to_le16(2); | 4763 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4705 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB PDU from sess */ | 4764 | /* BB find exact max SMB PDU from sess structure BB */ |
4765 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
4706 | pSMB->SetupCount = 1; | 4766 | pSMB->SetupCount = 1; |
4707 | pSMB->Reserved3 = 0; | 4767 | pSMB->Reserved3 = 0; |
4708 | pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION); | 4768 | pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION); |
@@ -4789,7 +4849,8 @@ CIFSSMBSetFileTimes(const int xid, struct cifsTconInfo *tcon, | |||
4789 | 4849 | ||
4790 | count = sizeof(FILE_BASIC_INFO); | 4850 | count = sizeof(FILE_BASIC_INFO); |
4791 | pSMB->MaxParameterCount = cpu_to_le16(2); | 4851 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4792 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB PDU from sess */ | 4852 | /* BB find max SMB PDU from sess */ |
4853 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
4793 | pSMB->SetupCount = 1; | 4854 | pSMB->SetupCount = 1; |
4794 | pSMB->Reserved3 = 0; | 4855 | pSMB->Reserved3 = 0; |
4795 | pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION); | 4856 | pSMB->SubCommand = cpu_to_le16(TRANS2_SET_FILE_INFORMATION); |
@@ -4856,7 +4917,8 @@ SetTimesRetry: | |||
4856 | params = 6 + name_len; | 4917 | params = 6 + name_len; |
4857 | count = sizeof(FILE_BASIC_INFO); | 4918 | count = sizeof(FILE_BASIC_INFO); |
4858 | pSMB->MaxParameterCount = cpu_to_le16(2); | 4919 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4859 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ | 4920 | /* BB find max SMB PDU from sess structure BB */ |
4921 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
4860 | pSMB->MaxSetupCount = 0; | 4922 | pSMB->MaxSetupCount = 0; |
4861 | pSMB->Reserved = 0; | 4923 | pSMB->Reserved = 0; |
4862 | pSMB->Flags = 0; | 4924 | pSMB->Flags = 0; |
@@ -4986,7 +5048,8 @@ setPermsRetry: | |||
4986 | params = 6 + name_len; | 5048 | params = 6 + name_len; |
4987 | count = sizeof(FILE_UNIX_BASIC_INFO); | 5049 | count = sizeof(FILE_UNIX_BASIC_INFO); |
4988 | pSMB->MaxParameterCount = cpu_to_le16(2); | 5050 | pSMB->MaxParameterCount = cpu_to_le16(2); |
4989 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find exact max SMB PDU from sess structure BB */ | 5051 | /* BB find max SMB PDU from sess structure BB */ |
5052 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
4990 | pSMB->MaxSetupCount = 0; | 5053 | pSMB->MaxSetupCount = 0; |
4991 | pSMB->Reserved = 0; | 5054 | pSMB->Reserved = 0; |
4992 | pSMB->Flags = 0; | 5055 | pSMB->Flags = 0; |
@@ -5051,8 +5114,7 @@ setPermsRetry: | |||
5051 | if (rc) | 5114 | if (rc) |
5052 | cFYI(1, ("SetPathInfo (perms) returned %d", rc)); | 5115 | cFYI(1, ("SetPathInfo (perms) returned %d", rc)); |
5053 | 5116 | ||
5054 | if (pSMB) | 5117 | cifs_buf_release(pSMB); |
5055 | cifs_buf_release(pSMB); | ||
5056 | if (rc == -EAGAIN) | 5118 | if (rc == -EAGAIN) |
5057 | goto setPermsRetry; | 5119 | goto setPermsRetry; |
5058 | return rc; | 5120 | return rc; |
@@ -5169,7 +5231,8 @@ QAllEAsRetry: | |||
5169 | params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; | 5231 | params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; |
5170 | pSMB->TotalDataCount = 0; | 5232 | pSMB->TotalDataCount = 0; |
5171 | pSMB->MaxParameterCount = cpu_to_le16(2); | 5233 | pSMB->MaxParameterCount = cpu_to_le16(2); |
5172 | pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ | 5234 | /* BB find exact max SMB PDU from sess structure BB */ |
5235 | pSMB->MaxDataCount = cpu_to_le16(4000); | ||
5173 | pSMB->MaxSetupCount = 0; | 5236 | pSMB->MaxSetupCount = 0; |
5174 | pSMB->Reserved = 0; | 5237 | pSMB->Reserved = 0; |
5175 | pSMB->Flags = 0; | 5238 | pSMB->Flags = 0; |
@@ -5273,8 +5336,7 @@ QAllEAsRetry: | |||
5273 | } | 5336 | } |
5274 | } | 5337 | } |
5275 | } | 5338 | } |
5276 | if (pSMB) | 5339 | cifs_buf_release(pSMB); |
5277 | cifs_buf_release(pSMB); | ||
5278 | if (rc == -EAGAIN) | 5340 | if (rc == -EAGAIN) |
5279 | goto QAllEAsRetry; | 5341 | goto QAllEAsRetry; |
5280 | 5342 | ||
@@ -5317,7 +5379,8 @@ QEARetry: | |||
5317 | params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; | 5379 | params = 2 /* level */ + 4 /* reserved */ + name_len /* includes NUL */; |
5318 | pSMB->TotalDataCount = 0; | 5380 | pSMB->TotalDataCount = 0; |
5319 | pSMB->MaxParameterCount = cpu_to_le16(2); | 5381 | pSMB->MaxParameterCount = cpu_to_le16(2); |
5320 | pSMB->MaxDataCount = cpu_to_le16(4000); /* BB find exact max SMB PDU from sess structure BB */ | 5382 | /* BB find exact max SMB PDU from sess structure BB */ |
5383 | pSMB->MaxDataCount = cpu_to_le16(4000); | ||
5321 | pSMB->MaxSetupCount = 0; | 5384 | pSMB->MaxSetupCount = 0; |
5322 | pSMB->Reserved = 0; | 5385 | pSMB->Reserved = 0; |
5323 | pSMB->Flags = 0; | 5386 | pSMB->Flags = 0; |
@@ -5422,8 +5485,7 @@ QEARetry: | |||
5422 | } | 5485 | } |
5423 | } | 5486 | } |
5424 | } | 5487 | } |
5425 | if (pSMB) | 5488 | cifs_buf_release(pSMB); |
5426 | cifs_buf_release(pSMB); | ||
5427 | if (rc == -EAGAIN) | 5489 | if (rc == -EAGAIN) |
5428 | goto QEARetry; | 5490 | goto QEARetry; |
5429 | 5491 | ||
@@ -5475,7 +5537,8 @@ SetEARetry: | |||
5475 | 5537 | ||
5476 | count = sizeof(*parm_data) + ea_value_len + name_len; | 5538 | count = sizeof(*parm_data) + ea_value_len + name_len; |
5477 | pSMB->MaxParameterCount = cpu_to_le16(2); | 5539 | pSMB->MaxParameterCount = cpu_to_le16(2); |
5478 | pSMB->MaxDataCount = cpu_to_le16(1000); /* BB find max SMB size from sess */ | 5540 | /* BB find max SMB PDU from sess */ |
5541 | pSMB->MaxDataCount = cpu_to_le16(1000); | ||
5479 | pSMB->MaxSetupCount = 0; | 5542 | pSMB->MaxSetupCount = 0; |
5480 | pSMB->Reserved = 0; | 5543 | pSMB->Reserved = 0; |
5481 | pSMB->Flags = 0; | 5544 | pSMB->Flags = 0; |
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c index f428bf3bf1a9..023434f72c15 100644 --- a/fs/cifs/connect.c +++ b/fs/cifs/connect.c | |||
@@ -60,7 +60,7 @@ struct smb_vol { | |||
60 | char *domainname; | 60 | char *domainname; |
61 | char *UNC; | 61 | char *UNC; |
62 | char *UNCip; | 62 | char *UNCip; |
63 | char *in6_addr; /* ipv6 address as human readable form of in6_addr */ | 63 | char *in6_addr; /* ipv6 address as human readable form of in6_addr */ |
64 | char *iocharset; /* local code page for mapping to and from Unicode */ | 64 | char *iocharset; /* local code page for mapping to and from Unicode */ |
65 | char source_rfc1001_name[16]; /* netbios name of client */ | 65 | char source_rfc1001_name[16]; /* netbios name of client */ |
66 | char target_rfc1001_name[16]; /* netbios name of server for Win9x/ME */ | 66 | char target_rfc1001_name[16]; /* netbios name of server for Win9x/ME */ |
@@ -75,19 +75,21 @@ struct smb_vol { | |||
75 | bool setuids:1; | 75 | bool setuids:1; |
76 | bool override_uid:1; | 76 | bool override_uid:1; |
77 | bool override_gid:1; | 77 | bool override_gid:1; |
78 | bool dynperm:1; | ||
78 | bool noperm:1; | 79 | bool noperm:1; |
79 | bool no_psx_acl:1; /* set if posix acl support should be disabled */ | 80 | bool no_psx_acl:1; /* set if posix acl support should be disabled */ |
80 | bool cifs_acl:1; | 81 | bool cifs_acl:1; |
81 | bool no_xattr:1; /* set if xattr (EA) support should be disabled*/ | 82 | bool no_xattr:1; /* set if xattr (EA) support should be disabled*/ |
82 | bool server_ino:1; /* use inode numbers from server ie UniqueId */ | 83 | bool server_ino:1; /* use inode numbers from server ie UniqueId */ |
83 | bool direct_io:1; | 84 | bool direct_io:1; |
84 | bool remap:1; /* set to remap seven reserved chars in filenames */ | 85 | bool remap:1; /* set to remap seven reserved chars in filenames */ |
85 | bool posix_paths:1; /* unset to not ask for posix pathnames. */ | 86 | bool posix_paths:1; /* unset to not ask for posix pathnames. */ |
86 | bool no_linux_ext:1; | 87 | bool no_linux_ext:1; |
87 | bool sfu_emul:1; | 88 | bool sfu_emul:1; |
88 | bool nullauth:1; /* attempt to authenticate with null user */ | 89 | bool nullauth:1; /* attempt to authenticate with null user */ |
89 | unsigned nocase; /* request case insensitive filenames */ | 90 | bool nocase:1; /* request case insensitive filenames */ |
90 | unsigned nobrl; /* disable sending byte range locks to srv */ | 91 | bool nobrl:1; /* disable sending byte range locks to srv */ |
92 | bool seal:1; /* request transport encryption on share */ | ||
91 | unsigned int rsize; | 93 | unsigned int rsize; |
92 | unsigned int wsize; | 94 | unsigned int wsize; |
93 | unsigned int sockopt; | 95 | unsigned int sockopt; |
@@ -1246,6 +1248,10 @@ cifs_parse_mount_options(char *options, const char *devname, | |||
1246 | vol->setuids = 1; | 1248 | vol->setuids = 1; |
1247 | } else if (strnicmp(data, "nosetuids", 9) == 0) { | 1249 | } else if (strnicmp(data, "nosetuids", 9) == 0) { |
1248 | vol->setuids = 0; | 1250 | vol->setuids = 0; |
1251 | } else if (strnicmp(data, "dynperm", 7) == 0) { | ||
1252 | vol->dynperm = true; | ||
1253 | } else if (strnicmp(data, "nodynperm", 9) == 0) { | ||
1254 | vol->dynperm = false; | ||
1249 | } else if (strnicmp(data, "nohard", 6) == 0) { | 1255 | } else if (strnicmp(data, "nohard", 6) == 0) { |
1250 | vol->retry = 0; | 1256 | vol->retry = 0; |
1251 | } else if (strnicmp(data, "nosoft", 6) == 0) { | 1257 | } else if (strnicmp(data, "nosoft", 6) == 0) { |
@@ -1268,8 +1274,12 @@ cifs_parse_mount_options(char *options, const char *devname, | |||
1268 | vol->no_psx_acl = 1; | 1274 | vol->no_psx_acl = 1; |
1269 | } else if (strnicmp(data, "sign", 4) == 0) { | 1275 | } else if (strnicmp(data, "sign", 4) == 0) { |
1270 | vol->secFlg |= CIFSSEC_MUST_SIGN; | 1276 | vol->secFlg |= CIFSSEC_MUST_SIGN; |
1271 | /* } else if (strnicmp(data, "seal",4) == 0) { | 1277 | } else if (strnicmp(data, "seal", 4) == 0) { |
1272 | vol->secFlg |= CIFSSEC_MUST_SEAL; */ | 1278 | /* we do not do the following in secFlags because seal |
1279 | is a per tree connection (mount) not a per socket | ||
1280 | or per-smb connection option in the protocol */ | ||
1281 | /* vol->secFlg |= CIFSSEC_MUST_SEAL; */ | ||
1282 | vol->seal = 1; | ||
1273 | } else if (strnicmp(data, "direct", 6) == 0) { | 1283 | } else if (strnicmp(data, "direct", 6) == 0) { |
1274 | vol->direct_io = 1; | 1284 | vol->direct_io = 1; |
1275 | } else if (strnicmp(data, "forcedirectio", 13) == 0) { | 1285 | } else if (strnicmp(data, "forcedirectio", 13) == 0) { |
@@ -1414,34 +1424,12 @@ find_unc(__be32 new_target_ip_addr, char *uncName, char *userName) | |||
1414 | } | 1424 | } |
1415 | 1425 | ||
1416 | int | 1426 | int |
1417 | connect_to_dfs_path(int xid, struct cifsSesInfo *pSesInfo, | ||
1418 | const char *old_path, const struct nls_table *nls_codepage, | ||
1419 | int remap) | ||
1420 | { | ||
1421 | struct dfs_info3_param *referrals = NULL; | ||
1422 | unsigned int num_referrals; | ||
1423 | int rc = 0; | ||
1424 | |||
1425 | rc = get_dfs_path(xid, pSesInfo, old_path, nls_codepage, | ||
1426 | &num_referrals, &referrals, remap); | ||
1427 | |||
1428 | /* BB Add in code to: if valid refrl, if not ip address contact | ||
1429 | the helper that resolves tcp names, mount to it, try to | ||
1430 | tcon to it unmount it if fail */ | ||
1431 | |||
1432 | kfree(referrals); | ||
1433 | |||
1434 | return rc; | ||
1435 | } | ||
1436 | |||
1437 | int | ||
1438 | get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, const char *old_path, | 1427 | get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, const char *old_path, |
1439 | const struct nls_table *nls_codepage, unsigned int *pnum_referrals, | 1428 | const struct nls_table *nls_codepage, unsigned int *pnum_referrals, |
1440 | struct dfs_info3_param **preferrals, int remap) | 1429 | struct dfs_info3_param **preferrals, int remap) |
1441 | { | 1430 | { |
1442 | char *temp_unc; | 1431 | char *temp_unc; |
1443 | int rc = 0; | 1432 | int rc = 0; |
1444 | unsigned char *targetUNCs; | ||
1445 | 1433 | ||
1446 | *pnum_referrals = 0; | 1434 | *pnum_referrals = 0; |
1447 | *preferrals = NULL; | 1435 | *preferrals = NULL; |
@@ -1464,7 +1452,7 @@ get_dfs_path(int xid, struct cifsSesInfo *pSesInfo, const char *old_path, | |||
1464 | kfree(temp_unc); | 1452 | kfree(temp_unc); |
1465 | } | 1453 | } |
1466 | if (rc == 0) | 1454 | if (rc == 0) |
1467 | rc = CIFSGetDFSRefer(xid, pSesInfo, old_path, &targetUNCs, | 1455 | rc = CIFSGetDFSRefer(xid, pSesInfo, old_path, preferrals, |
1468 | pnum_referrals, nls_codepage, remap); | 1456 | pnum_referrals, nls_codepage, remap); |
1469 | /* BB map targetUNCs to dfs_info3 structures, here or | 1457 | /* BB map targetUNCs to dfs_info3 structures, here or |
1470 | in CIFSGetDFSRefer BB */ | 1458 | in CIFSGetDFSRefer BB */ |
@@ -1815,7 +1803,7 @@ convert_delimiter(char *path, char delim) | |||
1815 | if (path == NULL) | 1803 | if (path == NULL) |
1816 | return; | 1804 | return; |
1817 | 1805 | ||
1818 | if (delim == '/') | 1806 | if (delim == '/') |
1819 | old_delim = '\\'; | 1807 | old_delim = '\\'; |
1820 | else | 1808 | else |
1821 | old_delim = '/'; | 1809 | old_delim = '/'; |
@@ -2125,6 +2113,8 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, | |||
2125 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_UID; | 2113 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_UID; |
2126 | if (volume_info.override_gid) | 2114 | if (volume_info.override_gid) |
2127 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_GID; | 2115 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_GID; |
2116 | if (volume_info.dynperm) | ||
2117 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DYNPERM; | ||
2128 | if (volume_info.direct_io) { | 2118 | if (volume_info.direct_io) { |
2129 | cFYI(1, ("mounting share using direct i/o")); | 2119 | cFYI(1, ("mounting share using direct i/o")); |
2130 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO; | 2120 | cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO; |
@@ -2141,6 +2131,9 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, | |||
2141 | for the retry flag is used */ | 2131 | for the retry flag is used */ |
2142 | tcon->retry = volume_info.retry; | 2132 | tcon->retry = volume_info.retry; |
2143 | tcon->nocase = volume_info.nocase; | 2133 | tcon->nocase = volume_info.nocase; |
2134 | if (tcon->seal != volume_info.seal) | ||
2135 | cERROR(1, ("transport encryption setting " | ||
2136 | "conflicts with existing tid")); | ||
2144 | } else { | 2137 | } else { |
2145 | tcon = tconInfoAlloc(); | 2138 | tcon = tconInfoAlloc(); |
2146 | if (tcon == NULL) | 2139 | if (tcon == NULL) |
@@ -2154,10 +2147,11 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, | |||
2154 | if ((strchr(volume_info.UNC + 3, '\\') == NULL) | 2147 | if ((strchr(volume_info.UNC + 3, '\\') == NULL) |
2155 | && (strchr(volume_info.UNC + 3, '/') == | 2148 | && (strchr(volume_info.UNC + 3, '/') == |
2156 | NULL)) { | 2149 | NULL)) { |
2157 | rc = connect_to_dfs_path(xid, pSesInfo, | 2150 | /* rc = connect_to_dfs_path(xid, pSesInfo, |
2158 | "", cifs_sb->local_nls, | 2151 | "", cifs_sb->local_nls, |
2159 | cifs_sb->mnt_cifs_flags & | 2152 | cifs_sb->mnt_cifs_flags & |
2160 | CIFS_MOUNT_MAP_SPECIAL_CHR); | 2153 | CIFS_MOUNT_MAP_SPECIAL_CHR);*/ |
2154 | cFYI(1, ("DFS root not supported")); | ||
2161 | rc = -ENODEV; | 2155 | rc = -ENODEV; |
2162 | goto out; | 2156 | goto out; |
2163 | } else { | 2157 | } else { |
@@ -2173,6 +2167,7 @@ cifs_mount(struct super_block *sb, struct cifs_sb_info *cifs_sb, | |||
2173 | atomic_inc(&pSesInfo->inUse); | 2167 | atomic_inc(&pSesInfo->inUse); |
2174 | tcon->retry = volume_info.retry; | 2168 | tcon->retry = volume_info.retry; |
2175 | tcon->nocase = volume_info.nocase; | 2169 | tcon->nocase = volume_info.nocase; |
2170 | tcon->seal = volume_info.seal; | ||
2176 | } | 2171 | } |
2177 | } | 2172 | } |
2178 | } | 2173 | } |
@@ -2314,9 +2309,10 @@ CIFSSessSetup(unsigned int xid, struct cifsSesInfo *ses, | |||
2314 | user = ses->userName; | 2309 | user = ses->userName; |
2315 | domain = ses->domainName; | 2310 | domain = ses->domainName; |
2316 | smb_buffer = cifs_buf_get(); | 2311 | smb_buffer = cifs_buf_get(); |
2317 | if (smb_buffer == NULL) { | 2312 | |
2313 | if (smb_buffer == NULL) | ||
2318 | return -ENOMEM; | 2314 | return -ENOMEM; |
2319 | } | 2315 | |
2320 | smb_buffer_response = smb_buffer; | 2316 | smb_buffer_response = smb_buffer; |
2321 | pSMBr = pSMB = (SESSION_SETUP_ANDX *) smb_buffer; | 2317 | pSMBr = pSMB = (SESSION_SETUP_ANDX *) smb_buffer; |
2322 | 2318 | ||
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c index e4e0078a0526..f0b5b5f3dd2e 100644 --- a/fs/cifs/dir.c +++ b/fs/cifs/dir.c | |||
@@ -49,18 +49,25 @@ build_path_from_dentry(struct dentry *direntry) | |||
49 | struct dentry *temp; | 49 | struct dentry *temp; |
50 | int namelen; | 50 | int namelen; |
51 | int pplen; | 51 | int pplen; |
52 | int dfsplen; | ||
52 | char *full_path; | 53 | char *full_path; |
53 | char dirsep; | 54 | char dirsep; |
55 | struct cifs_sb_info *cifs_sb; | ||
54 | 56 | ||
55 | if (direntry == NULL) | 57 | if (direntry == NULL) |
56 | return NULL; /* not much we can do if dentry is freed and | 58 | return NULL; /* not much we can do if dentry is freed and |
57 | we need to reopen the file after it was closed implicitly | 59 | we need to reopen the file after it was closed implicitly |
58 | when the server crashed */ | 60 | when the server crashed */ |
59 | 61 | ||
60 | dirsep = CIFS_DIR_SEP(CIFS_SB(direntry->d_sb)); | 62 | cifs_sb = CIFS_SB(direntry->d_sb); |
61 | pplen = CIFS_SB(direntry->d_sb)->prepathlen; | 63 | dirsep = CIFS_DIR_SEP(cifs_sb); |
64 | pplen = cifs_sb->prepathlen; | ||
65 | if (cifs_sb->tcon && (cifs_sb->tcon->Flags & SMB_SHARE_IS_IN_DFS)) | ||
66 | dfsplen = strnlen(cifs_sb->tcon->treeName, MAX_TREE_SIZE + 1); | ||
67 | else | ||
68 | dfsplen = 0; | ||
62 | cifs_bp_rename_retry: | 69 | cifs_bp_rename_retry: |
63 | namelen = pplen; | 70 | namelen = pplen + dfsplen; |
64 | for (temp = direntry; !IS_ROOT(temp);) { | 71 | for (temp = direntry; !IS_ROOT(temp);) { |
65 | namelen += (1 + temp->d_name.len); | 72 | namelen += (1 + temp->d_name.len); |
66 | temp = temp->d_parent; | 73 | temp = temp->d_parent; |
@@ -91,7 +98,7 @@ cifs_bp_rename_retry: | |||
91 | return NULL; | 98 | return NULL; |
92 | } | 99 | } |
93 | } | 100 | } |
94 | if (namelen != pplen) { | 101 | if (namelen != pplen + dfsplen) { |
95 | cERROR(1, | 102 | cERROR(1, |
96 | ("did not end path lookup where expected namelen is %d", | 103 | ("did not end path lookup where expected namelen is %d", |
97 | namelen)); | 104 | namelen)); |
@@ -107,7 +114,18 @@ cifs_bp_rename_retry: | |||
107 | since the '\' is a valid posix character so we can not switch | 114 | since the '\' is a valid posix character so we can not switch |
108 | those safely to '/' if any are found in the middle of the prepath */ | 115 | those safely to '/' if any are found in the middle of the prepath */ |
109 | /* BB test paths to Windows with '/' in the midst of prepath */ | 116 | /* BB test paths to Windows with '/' in the midst of prepath */ |
110 | strncpy(full_path, CIFS_SB(direntry->d_sb)->prepath, pplen); | 117 | |
118 | if (dfsplen) { | ||
119 | strncpy(full_path, cifs_sb->tcon->treeName, dfsplen); | ||
120 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) { | ||
121 | int i; | ||
122 | for (i = 0; i < dfsplen; i++) { | ||
123 | if (full_path[i] == '\\') | ||
124 | full_path[i] = '/'; | ||
125 | } | ||
126 | } | ||
127 | } | ||
128 | strncpy(full_path + dfsplen, CIFS_SB(direntry->d_sb)->prepath, pplen); | ||
111 | return full_path; | 129 | return full_path; |
112 | } | 130 | } |
113 | 131 | ||
@@ -590,7 +608,7 @@ static int cifs_ci_compare(struct dentry *dentry, struct qstr *a, | |||
590 | * case take precedence. If a is not a negative dentry, this | 608 | * case take precedence. If a is not a negative dentry, this |
591 | * should have no side effects | 609 | * should have no side effects |
592 | */ | 610 | */ |
593 | memcpy(a->name, b->name, a->len); | 611 | memcpy((void *)a->name, b->name, a->len); |
594 | return 0; | 612 | return 0; |
595 | } | 613 | } |
596 | return 1; | 614 | return 1; |
diff --git a/fs/cifs/dns_resolve.c b/fs/cifs/dns_resolve.c index 939e256f8497..f730ef35499e 100644 --- a/fs/cifs/dns_resolve.c +++ b/fs/cifs/dns_resolve.c | |||
@@ -134,10 +134,6 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr) | |||
134 | rkey = request_key(&key_type_dns_resolver, name, ""); | 134 | rkey = request_key(&key_type_dns_resolver, name, ""); |
135 | if (!IS_ERR(rkey)) { | 135 | if (!IS_ERR(rkey)) { |
136 | data = rkey->payload.data; | 136 | data = rkey->payload.data; |
137 | cFYI(1, ("%s: resolved: %s to %s", __func__, | ||
138 | rkey->description, | ||
139 | *ip_addr | ||
140 | )); | ||
141 | } else { | 137 | } else { |
142 | cERROR(1, ("%s: unable to resolve: %s", __func__, name)); | 138 | cERROR(1, ("%s: unable to resolve: %s", __func__, name)); |
143 | goto out; | 139 | goto out; |
@@ -150,6 +146,11 @@ skip_upcall: | |||
150 | if (*ip_addr) { | 146 | if (*ip_addr) { |
151 | memcpy(*ip_addr, data, len); | 147 | memcpy(*ip_addr, data, len); |
152 | (*ip_addr)[len] = '\0'; | 148 | (*ip_addr)[len] = '\0'; |
149 | if (!IS_ERR(rkey)) | ||
150 | cFYI(1, ("%s: resolved: %s to %s", __func__, | ||
151 | name, | ||
152 | *ip_addr | ||
153 | )); | ||
153 | rc = 0; | 154 | rc = 0; |
154 | } else { | 155 | } else { |
155 | rc = -ENOMEM; | 156 | rc = -ENOMEM; |
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index 31a0a33b9d95..8636cec2642c 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -75,7 +75,11 @@ static inline int cifs_convert_flags(unsigned int flags) | |||
75 | return (GENERIC_READ | GENERIC_WRITE); | 75 | return (GENERIC_READ | GENERIC_WRITE); |
76 | } | 76 | } |
77 | 77 | ||
78 | return 0x20197; | 78 | return (READ_CONTROL | FILE_WRITE_ATTRIBUTES | FILE_READ_ATTRIBUTES | |
79 | FILE_WRITE_EA | FILE_APPEND_DATA | FILE_WRITE_DATA | | ||
80 | FILE_READ_DATA); | ||
81 | |||
82 | |||
79 | } | 83 | } |
80 | 84 | ||
81 | static inline int cifs_get_disposition(unsigned int flags) | 85 | static inline int cifs_get_disposition(unsigned int flags) |
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index fcbdbb6ad7bf..129dbfe4dca7 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c | |||
@@ -161,118 +161,115 @@ static void cifs_unix_info_to_inode(struct inode *inode, | |||
161 | spin_unlock(&inode->i_lock); | 161 | spin_unlock(&inode->i_lock); |
162 | } | 162 | } |
163 | 163 | ||
164 | static const unsigned char *cifs_get_search_path(struct cifs_sb_info *cifs_sb, | ||
165 | const char *search_path) | ||
166 | { | ||
167 | int tree_len; | ||
168 | int path_len; | ||
169 | int i; | ||
170 | char *tmp_path; | ||
171 | struct cifsTconInfo *pTcon = cifs_sb->tcon; | ||
172 | |||
173 | if (!(pTcon->Flags & SMB_SHARE_IS_IN_DFS)) | ||
174 | return search_path; | ||
175 | 164 | ||
176 | /* use full path name for working with DFS */ | 165 | /* |
177 | tree_len = strnlen(pTcon->treeName, MAX_TREE_SIZE + 1); | 166 | * Needed to setup inode data for the directory which is the |
178 | path_len = strnlen(search_path, MAX_PATHCONF); | 167 | * junction to the new submount (ie to setup the fake directory |
179 | 168 | * which represents a DFS referral) | |
180 | tmp_path = kmalloc(tree_len+path_len+1, GFP_KERNEL); | 169 | */ |
181 | if (tmp_path == NULL) | 170 | static void fill_fake_finddataunix(FILE_UNIX_BASIC_INFO *pfnd_dat, |
182 | return search_path; | 171 | struct super_block *sb) |
172 | { | ||
173 | struct inode *pinode = NULL; | ||
174 | |||
175 | memset(pfnd_dat, 0, sizeof(FILE_UNIX_BASIC_INFO)); | ||
176 | |||
177 | /* __le64 pfnd_dat->EndOfFile = cpu_to_le64(0); | ||
178 | __le64 pfnd_dat->NumOfBytes = cpu_to_le64(0); | ||
179 | __u64 UniqueId = 0; */ | ||
180 | pfnd_dat->LastStatusChange = | ||
181 | cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
182 | pfnd_dat->LastAccessTime = | ||
183 | cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
184 | pfnd_dat->LastModificationTime = | ||
185 | cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
186 | pfnd_dat->Type = cpu_to_le32(UNIX_DIR); | ||
187 | pfnd_dat->Permissions = cpu_to_le64(S_IXUGO | S_IRWXU); | ||
188 | pfnd_dat->Nlinks = cpu_to_le64(2); | ||
189 | if (sb->s_root) | ||
190 | pinode = sb->s_root->d_inode; | ||
191 | if (pinode == NULL) | ||
192 | return; | ||
183 | 193 | ||
184 | strncpy(tmp_path, pTcon->treeName, tree_len); | 194 | /* fill in default values for the remaining based on root |
185 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_POSIX_PATHS) | 195 | inode since we can not query the server for this inode info */ |
186 | for (i = 0; i < tree_len; i++) { | 196 | pfnd_dat->DevMajor = cpu_to_le64(MAJOR(pinode->i_rdev)); |
187 | if (tmp_path[i] == '\\') | 197 | pfnd_dat->DevMinor = cpu_to_le64(MINOR(pinode->i_rdev)); |
188 | tmp_path[i] = '/'; | 198 | pfnd_dat->Uid = cpu_to_le64(pinode->i_uid); |
189 | } | 199 | pfnd_dat->Gid = cpu_to_le64(pinode->i_gid); |
190 | strncpy(tmp_path+tree_len, search_path, path_len); | ||
191 | tmp_path[tree_len+path_len] = 0; | ||
192 | return tmp_path; | ||
193 | } | 200 | } |
194 | 201 | ||
195 | int cifs_get_inode_info_unix(struct inode **pinode, | 202 | int cifs_get_inode_info_unix(struct inode **pinode, |
196 | const unsigned char *search_path, struct super_block *sb, int xid) | 203 | const unsigned char *full_path, struct super_block *sb, int xid) |
197 | { | 204 | { |
198 | int rc = 0; | 205 | int rc = 0; |
199 | FILE_UNIX_BASIC_INFO findData; | 206 | FILE_UNIX_BASIC_INFO find_data; |
200 | struct cifsTconInfo *pTcon; | 207 | struct cifsTconInfo *pTcon; |
201 | struct inode *inode; | 208 | struct inode *inode; |
202 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | 209 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); |
203 | const unsigned char *full_path; | ||
204 | bool is_dfs_referral = false; | 210 | bool is_dfs_referral = false; |
211 | struct cifsInodeInfo *cifsInfo; | ||
212 | __u64 num_of_bytes; | ||
213 | __u64 end_of_file; | ||
205 | 214 | ||
206 | pTcon = cifs_sb->tcon; | 215 | pTcon = cifs_sb->tcon; |
207 | cFYI(1, ("Getting info on %s", search_path)); | 216 | cFYI(1, ("Getting info on %s", full_path)); |
208 | 217 | ||
209 | full_path = cifs_get_search_path(cifs_sb, search_path); | ||
210 | |||
211 | try_again_CIFSSMBUnixQPathInfo: | ||
212 | /* could have done a find first instead but this returns more info */ | 218 | /* could have done a find first instead but this returns more info */ |
213 | rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &findData, | 219 | rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &find_data, |
214 | cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & | 220 | cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & |
215 | CIFS_MOUNT_MAP_SPECIAL_CHR); | 221 | CIFS_MOUNT_MAP_SPECIAL_CHR); |
216 | /* dump_mem("\nUnixQPathInfo return data", &findData, | ||
217 | sizeof(findData)); */ | ||
218 | if (rc) { | 222 | if (rc) { |
219 | if (rc == -EREMOTE && !is_dfs_referral) { | 223 | if (rc == -EREMOTE && !is_dfs_referral) { |
220 | is_dfs_referral = true; | 224 | is_dfs_referral = true; |
221 | if (full_path != search_path) { | 225 | cFYI(DBG2, ("DFS ref")); |
222 | kfree(full_path); | 226 | /* for DFS, server does not give us real inode data */ |
223 | full_path = search_path; | 227 | fill_fake_finddataunix(&find_data, sb); |
224 | } | 228 | rc = 0; |
225 | goto try_again_CIFSSMBUnixQPathInfo; | ||
226 | } | 229 | } |
227 | goto cgiiu_exit; | 230 | } |
228 | } else { | 231 | num_of_bytes = le64_to_cpu(find_data.NumOfBytes); |
229 | struct cifsInodeInfo *cifsInfo; | 232 | end_of_file = le64_to_cpu(find_data.EndOfFile); |
230 | __u64 num_of_bytes = le64_to_cpu(findData.NumOfBytes); | ||
231 | __u64 end_of_file = le64_to_cpu(findData.EndOfFile); | ||
232 | 233 | ||
233 | /* get new inode */ | 234 | /* get new inode */ |
235 | if (*pinode == NULL) { | ||
236 | *pinode = new_inode(sb); | ||
234 | if (*pinode == NULL) { | 237 | if (*pinode == NULL) { |
235 | *pinode = new_inode(sb); | 238 | rc = -ENOMEM; |
236 | if (*pinode == NULL) { | 239 | goto cgiiu_exit; |
237 | rc = -ENOMEM; | ||
238 | goto cgiiu_exit; | ||
239 | } | ||
240 | /* Is an i_ino of zero legal? */ | ||
241 | /* Are there sanity checks we can use to ensure that | ||
242 | the server is really filling in that field? */ | ||
243 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) { | ||
244 | (*pinode)->i_ino = | ||
245 | (unsigned long)findData.UniqueId; | ||
246 | } /* note ino incremented to unique num in new_inode */ | ||
247 | if (sb->s_flags & MS_NOATIME) | ||
248 | (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME; | ||
249 | |||
250 | insert_inode_hash(*pinode); | ||
251 | } | 240 | } |
241 | /* Is an i_ino of zero legal? */ | ||
242 | /* note ino incremented to unique num in new_inode */ | ||
243 | /* Are there sanity checks we can use to ensure that | ||
244 | the server is really filling in that field? */ | ||
245 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) | ||
246 | (*pinode)->i_ino = (unsigned long)find_data.UniqueId; | ||
252 | 247 | ||
253 | inode = *pinode; | 248 | if (sb->s_flags & MS_NOATIME) |
254 | cifsInfo = CIFS_I(inode); | 249 | (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME; |
255 | 250 | ||
256 | cFYI(1, ("Old time %ld", cifsInfo->time)); | 251 | insert_inode_hash(*pinode); |
257 | cifsInfo->time = jiffies; | 252 | } |
258 | cFYI(1, ("New time %ld", cifsInfo->time)); | ||
259 | /* this is ok to set on every inode revalidate */ | ||
260 | atomic_set(&cifsInfo->inUse, 1); | ||
261 | 253 | ||
262 | cifs_unix_info_to_inode(inode, &findData, 0); | 254 | inode = *pinode; |
255 | cifsInfo = CIFS_I(inode); | ||
263 | 256 | ||
257 | cFYI(1, ("Old time %ld", cifsInfo->time)); | ||
258 | cifsInfo->time = jiffies; | ||
259 | cFYI(1, ("New time %ld", cifsInfo->time)); | ||
260 | /* this is ok to set on every inode revalidate */ | ||
261 | atomic_set(&cifsInfo->inUse, 1); | ||
264 | 262 | ||
265 | if (num_of_bytes < end_of_file) | 263 | cifs_unix_info_to_inode(inode, &find_data, 0); |
266 | cFYI(1, ("allocation size less than end of file")); | ||
267 | cFYI(1, ("Size %ld and blocks %llu", | ||
268 | (unsigned long) inode->i_size, | ||
269 | (unsigned long long)inode->i_blocks)); | ||
270 | 264 | ||
271 | cifs_set_ops(inode, is_dfs_referral); | 265 | if (num_of_bytes < end_of_file) |
272 | } | 266 | cFYI(1, ("allocation size less than end of file")); |
267 | cFYI(1, ("Size %ld and blocks %llu", | ||
268 | (unsigned long) inode->i_size, | ||
269 | (unsigned long long)inode->i_blocks)); | ||
270 | |||
271 | cifs_set_ops(inode, is_dfs_referral); | ||
273 | cgiiu_exit: | 272 | cgiiu_exit: |
274 | if (full_path != search_path) | ||
275 | kfree(full_path); | ||
276 | return rc; | 273 | return rc; |
277 | } | 274 | } |
278 | 275 | ||
@@ -379,21 +376,51 @@ static int get_sfu_mode(struct inode *inode, | |||
379 | #endif | 376 | #endif |
380 | } | 377 | } |
381 | 378 | ||
379 | /* | ||
380 | * Needed to setup inode data for the directory which is the | ||
381 | * junction to the new submount (ie to setup the fake directory | ||
382 | * which represents a DFS referral) | ||
383 | */ | ||
384 | static void fill_fake_finddata(FILE_ALL_INFO *pfnd_dat, | ||
385 | struct super_block *sb) | ||
386 | { | ||
387 | memset(pfnd_dat, 0, sizeof(FILE_ALL_INFO)); | ||
388 | |||
389 | /* __le64 pfnd_dat->AllocationSize = cpu_to_le64(0); | ||
390 | __le64 pfnd_dat->EndOfFile = cpu_to_le64(0); | ||
391 | __u8 pfnd_dat->DeletePending = 0; | ||
392 | __u8 pfnd_data->Directory = 0; | ||
393 | __le32 pfnd_dat->EASize = 0; | ||
394 | __u64 pfnd_dat->IndexNumber = 0; | ||
395 | __u64 pfnd_dat->IndexNumber1 = 0; */ | ||
396 | pfnd_dat->CreationTime = | ||
397 | cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
398 | pfnd_dat->LastAccessTime = | ||
399 | cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
400 | pfnd_dat->LastWriteTime = | ||
401 | cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
402 | pfnd_dat->ChangeTime = | ||
403 | cpu_to_le64(cifs_UnixTimeToNT(CURRENT_TIME)); | ||
404 | pfnd_dat->Attributes = cpu_to_le32(ATTR_DIRECTORY); | ||
405 | pfnd_dat->NumberOfLinks = cpu_to_le32(2); | ||
406 | } | ||
407 | |||
382 | int cifs_get_inode_info(struct inode **pinode, | 408 | int cifs_get_inode_info(struct inode **pinode, |
383 | const unsigned char *search_path, FILE_ALL_INFO *pfindData, | 409 | const unsigned char *full_path, FILE_ALL_INFO *pfindData, |
384 | struct super_block *sb, int xid, const __u16 *pfid) | 410 | struct super_block *sb, int xid, const __u16 *pfid) |
385 | { | 411 | { |
386 | int rc = 0; | 412 | int rc = 0; |
413 | __u32 attr; | ||
414 | struct cifsInodeInfo *cifsInfo; | ||
387 | struct cifsTconInfo *pTcon; | 415 | struct cifsTconInfo *pTcon; |
388 | struct inode *inode; | 416 | struct inode *inode; |
389 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | 417 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); |
390 | const unsigned char *full_path = NULL; | ||
391 | char *buf = NULL; | 418 | char *buf = NULL; |
392 | bool adjustTZ = false; | 419 | bool adjustTZ = false; |
393 | bool is_dfs_referral = false; | 420 | bool is_dfs_referral = false; |
394 | 421 | ||
395 | pTcon = cifs_sb->tcon; | 422 | pTcon = cifs_sb->tcon; |
396 | cFYI(1, ("Getting info on %s", search_path)); | 423 | cFYI(1, ("Getting info on %s", full_path)); |
397 | 424 | ||
398 | if ((pfindData == NULL) && (*pinode != NULL)) { | 425 | if ((pfindData == NULL) && (*pinode != NULL)) { |
399 | if (CIFS_I(*pinode)->clientCanCacheRead) { | 426 | if (CIFS_I(*pinode)->clientCanCacheRead) { |
@@ -409,9 +436,6 @@ int cifs_get_inode_info(struct inode **pinode, | |||
409 | return -ENOMEM; | 436 | return -ENOMEM; |
410 | pfindData = (FILE_ALL_INFO *)buf; | 437 | pfindData = (FILE_ALL_INFO *)buf; |
411 | 438 | ||
412 | full_path = cifs_get_search_path(cifs_sb, search_path); | ||
413 | |||
414 | try_again_CIFSSMBQPathInfo: | ||
415 | /* could do find first instead but this returns more info */ | 439 | /* could do find first instead but this returns more info */ |
416 | rc = CIFSSMBQPathInfo(xid, pTcon, full_path, pfindData, | 440 | rc = CIFSSMBQPathInfo(xid, pTcon, full_path, pfindData, |
417 | 0 /* not legacy */, | 441 | 0 /* not legacy */, |
@@ -429,178 +453,168 @@ try_again_CIFSSMBQPathInfo: | |||
429 | } | 453 | } |
430 | } | 454 | } |
431 | /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */ | 455 | /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */ |
432 | if (rc) { | 456 | if (rc == -EREMOTE) { |
433 | if (rc == -EREMOTE && !is_dfs_referral) { | 457 | is_dfs_referral = true; |
434 | is_dfs_referral = true; | 458 | fill_fake_finddata(pfindData, sb); |
435 | if (full_path != search_path) { | 459 | rc = 0; |
436 | kfree(full_path); | 460 | } else if (rc) |
437 | full_path = search_path; | ||
438 | } | ||
439 | goto try_again_CIFSSMBQPathInfo; | ||
440 | } | ||
441 | goto cgii_exit; | 461 | goto cgii_exit; |
442 | } else { | ||
443 | struct cifsInodeInfo *cifsInfo; | ||
444 | __u32 attr = le32_to_cpu(pfindData->Attributes); | ||
445 | 462 | ||
446 | /* get new inode */ | 463 | attr = le32_to_cpu(pfindData->Attributes); |
447 | if (*pinode == NULL) { | ||
448 | *pinode = new_inode(sb); | ||
449 | if (*pinode == NULL) { | ||
450 | rc = -ENOMEM; | ||
451 | goto cgii_exit; | ||
452 | } | ||
453 | /* Is an i_ino of zero legal? Can we use that to check | ||
454 | if the server supports returning inode numbers? Are | ||
455 | there other sanity checks we can use to ensure that | ||
456 | the server is really filling in that field? */ | ||
457 | 464 | ||
458 | /* We can not use the IndexNumber field by default from | 465 | /* get new inode */ |
459 | Windows or Samba (in ALL_INFO buf) but we can request | 466 | if (*pinode == NULL) { |
460 | it explicitly. It may not be unique presumably if | 467 | *pinode = new_inode(sb); |
461 | the server has multiple devices mounted under one | 468 | if (*pinode == NULL) { |
462 | share */ | 469 | rc = -ENOMEM; |
463 | 470 | goto cgii_exit; | |
464 | /* There may be higher info levels that work but are | 471 | } |
465 | there Windows server or network appliances for which | 472 | /* Is an i_ino of zero legal? Can we use that to check |
466 | IndexNumber field is not guaranteed unique? */ | 473 | if the server supports returning inode numbers? Are |
467 | 474 | there other sanity checks we can use to ensure that | |
468 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) { | 475 | the server is really filling in that field? */ |
469 | int rc1 = 0; | 476 | |
470 | __u64 inode_num; | 477 | /* We can not use the IndexNumber field by default from |
471 | 478 | Windows or Samba (in ALL_INFO buf) but we can request | |
472 | rc1 = CIFSGetSrvInodeNumber(xid, pTcon, | 479 | it explicitly. It may not be unique presumably if |
473 | search_path, &inode_num, | 480 | the server has multiple devices mounted under one share */ |
481 | |||
482 | /* There may be higher info levels that work but are | ||
483 | there Windows server or network appliances for which | ||
484 | IndexNumber field is not guaranteed unique? */ | ||
485 | |||
486 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_SERVER_INUM) { | ||
487 | int rc1 = 0; | ||
488 | __u64 inode_num; | ||
489 | |||
490 | rc1 = CIFSGetSrvInodeNumber(xid, pTcon, | ||
491 | full_path, &inode_num, | ||
474 | cifs_sb->local_nls, | 492 | cifs_sb->local_nls, |
475 | cifs_sb->mnt_cifs_flags & | 493 | cifs_sb->mnt_cifs_flags & |
476 | CIFS_MOUNT_MAP_SPECIAL_CHR); | 494 | CIFS_MOUNT_MAP_SPECIAL_CHR); |
477 | if (rc1) { | 495 | if (rc1) { |
478 | cFYI(1, ("GetSrvInodeNum rc %d", rc1)); | 496 | cFYI(1, ("GetSrvInodeNum rc %d", rc1)); |
479 | /* BB EOPNOSUPP disable SERVER_INUM? */ | 497 | /* BB EOPNOSUPP disable SERVER_INUM? */ |
480 | } else /* do we need cast or hash to ino? */ | 498 | } else /* do we need cast or hash to ino? */ |
481 | (*pinode)->i_ino = inode_num; | 499 | (*pinode)->i_ino = inode_num; |
482 | } /* else ino incremented to unique num in new_inode*/ | 500 | } /* else ino incremented to unique num in new_inode*/ |
483 | if (sb->s_flags & MS_NOATIME) | 501 | if (sb->s_flags & MS_NOATIME) |
484 | (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME; | 502 | (*pinode)->i_flags |= S_NOATIME | S_NOCMTIME; |
485 | insert_inode_hash(*pinode); | 503 | insert_inode_hash(*pinode); |
486 | } | 504 | } |
487 | inode = *pinode; | 505 | inode = *pinode; |
488 | cifsInfo = CIFS_I(inode); | 506 | cifsInfo = CIFS_I(inode); |
489 | cifsInfo->cifsAttrs = attr; | 507 | cifsInfo->cifsAttrs = attr; |
490 | cFYI(1, ("Old time %ld", cifsInfo->time)); | 508 | cFYI(1, ("Old time %ld", cifsInfo->time)); |
491 | cifsInfo->time = jiffies; | 509 | cifsInfo->time = jiffies; |
492 | cFYI(1, ("New time %ld", cifsInfo->time)); | 510 | cFYI(1, ("New time %ld", cifsInfo->time)); |
493 | 511 | ||
494 | /* blksize needs to be multiple of two. So safer to default to | 512 | /* blksize needs to be multiple of two. So safer to default to |
495 | blksize and blkbits set in superblock so 2**blkbits and blksize | 513 | blksize and blkbits set in superblock so 2**blkbits and blksize |
496 | will match rather than setting to: | 514 | will match rather than setting to: |
497 | (pTcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFE00;*/ | 515 | (pTcon->ses->server->maxBuf - MAX_CIFS_HDR_SIZE) & 0xFFFFFE00;*/ |
498 | 516 | ||
499 | /* Linux can not store file creation time so ignore it */ | 517 | /* Linux can not store file creation time so ignore it */ |
500 | if (pfindData->LastAccessTime) | 518 | if (pfindData->LastAccessTime) |
501 | inode->i_atime = cifs_NTtimeToUnix | 519 | inode->i_atime = cifs_NTtimeToUnix |
502 | (le64_to_cpu(pfindData->LastAccessTime)); | 520 | (le64_to_cpu(pfindData->LastAccessTime)); |
503 | else /* do not need to use current_fs_time - time not stored */ | 521 | else /* do not need to use current_fs_time - time not stored */ |
504 | inode->i_atime = CURRENT_TIME; | 522 | inode->i_atime = CURRENT_TIME; |
505 | inode->i_mtime = | 523 | inode->i_mtime = |
506 | cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastWriteTime)); | 524 | cifs_NTtimeToUnix(le64_to_cpu(pfindData->LastWriteTime)); |
507 | inode->i_ctime = | 525 | inode->i_ctime = |
508 | cifs_NTtimeToUnix(le64_to_cpu(pfindData->ChangeTime)); | 526 | cifs_NTtimeToUnix(le64_to_cpu(pfindData->ChangeTime)); |
509 | cFYI(0, ("Attributes came in as 0x%x", attr)); | 527 | cFYI(DBG2, ("Attributes came in as 0x%x", attr)); |
510 | if (adjustTZ && (pTcon->ses) && (pTcon->ses->server)) { | 528 | if (adjustTZ && (pTcon->ses) && (pTcon->ses->server)) { |
511 | inode->i_ctime.tv_sec += pTcon->ses->server->timeAdj; | 529 | inode->i_ctime.tv_sec += pTcon->ses->server->timeAdj; |
512 | inode->i_mtime.tv_sec += pTcon->ses->server->timeAdj; | 530 | inode->i_mtime.tv_sec += pTcon->ses->server->timeAdj; |
513 | } | 531 | } |
514 | 532 | ||
515 | /* set default mode. will override for dirs below */ | 533 | /* set default mode. will override for dirs below */ |
516 | if (atomic_read(&cifsInfo->inUse) == 0) | 534 | if (atomic_read(&cifsInfo->inUse) == 0) |
517 | /* new inode, can safely set these fields */ | 535 | /* new inode, can safely set these fields */ |
518 | inode->i_mode = cifs_sb->mnt_file_mode; | 536 | inode->i_mode = cifs_sb->mnt_file_mode; |
519 | else /* since we set the inode type below we need to mask off | 537 | else /* since we set the inode type below we need to mask off |
520 | to avoid strange results if type changes and both | 538 | to avoid strange results if type changes and both |
521 | get orred in */ | 539 | get orred in */ |
522 | inode->i_mode &= ~S_IFMT; | 540 | inode->i_mode &= ~S_IFMT; |
523 | /* if (attr & ATTR_REPARSE) */ | 541 | /* if (attr & ATTR_REPARSE) */ |
524 | /* We no longer handle these as symlinks because we could not | 542 | /* We no longer handle these as symlinks because we could not |
525 | follow them due to the absolute path with drive letter */ | 543 | follow them due to the absolute path with drive letter */ |
526 | if (attr & ATTR_DIRECTORY) { | 544 | if (attr & ATTR_DIRECTORY) { |
527 | /* override default perms since we do not do byte range locking | 545 | /* override default perms since we do not do byte range locking |
528 | on dirs */ | 546 | on dirs */ |
529 | inode->i_mode = cifs_sb->mnt_dir_mode; | 547 | inode->i_mode = cifs_sb->mnt_dir_mode; |
530 | inode->i_mode |= S_IFDIR; | 548 | inode->i_mode |= S_IFDIR; |
531 | } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) && | 549 | } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) && |
532 | (cifsInfo->cifsAttrs & ATTR_SYSTEM) && | 550 | (cifsInfo->cifsAttrs & ATTR_SYSTEM) && |
533 | /* No need to le64 convert size of zero */ | 551 | /* No need to le64 convert size of zero */ |
534 | (pfindData->EndOfFile == 0)) { | 552 | (pfindData->EndOfFile == 0)) { |
535 | inode->i_mode = cifs_sb->mnt_file_mode; | 553 | inode->i_mode = cifs_sb->mnt_file_mode; |
536 | inode->i_mode |= S_IFIFO; | 554 | inode->i_mode |= S_IFIFO; |
537 | /* BB Finish for SFU style symlinks and devices */ | 555 | /* BB Finish for SFU style symlinks and devices */ |
538 | } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) && | 556 | } else if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) && |
539 | (cifsInfo->cifsAttrs & ATTR_SYSTEM)) { | 557 | (cifsInfo->cifsAttrs & ATTR_SYSTEM)) { |
540 | if (decode_sfu_inode(inode, | 558 | if (decode_sfu_inode(inode, le64_to_cpu(pfindData->EndOfFile), |
541 | le64_to_cpu(pfindData->EndOfFile), | 559 | full_path, cifs_sb, xid)) |
542 | search_path, | 560 | cFYI(1, ("Unrecognized sfu inode type")); |
543 | cifs_sb, xid)) | ||
544 | cFYI(1, ("Unrecognized sfu inode type")); | ||
545 | |||
546 | cFYI(1, ("sfu mode 0%o", inode->i_mode)); | ||
547 | } else { | ||
548 | inode->i_mode |= S_IFREG; | ||
549 | /* treat the dos attribute of read-only as read-only | ||
550 | mode e.g. 555 */ | ||
551 | if (cifsInfo->cifsAttrs & ATTR_READONLY) | ||
552 | inode->i_mode &= ~(S_IWUGO); | ||
553 | else if ((inode->i_mode & S_IWUGO) == 0) | ||
554 | /* the ATTR_READONLY flag may have been */ | ||
555 | /* changed on server -- set any w bits */ | ||
556 | /* allowed by mnt_file_mode */ | ||
557 | inode->i_mode |= (S_IWUGO & | ||
558 | cifs_sb->mnt_file_mode); | ||
559 | /* BB add code here - | ||
560 | validate if device or weird share or device type? */ | ||
561 | } | ||
562 | 561 | ||
563 | spin_lock(&inode->i_lock); | 562 | cFYI(1, ("sfu mode 0%o", inode->i_mode)); |
564 | if (is_size_safe_to_change(cifsInfo, | 563 | } else { |
565 | le64_to_cpu(pfindData->EndOfFile))) { | 564 | inode->i_mode |= S_IFREG; |
566 | /* can not safely shrink the file size here if the | 565 | /* treat dos attribute of read-only as read-only mode eg 555 */ |
567 | client is writing to it due to potential races */ | 566 | if (cifsInfo->cifsAttrs & ATTR_READONLY) |
568 | i_size_write(inode, le64_to_cpu(pfindData->EndOfFile)); | 567 | inode->i_mode &= ~(S_IWUGO); |
569 | 568 | else if ((inode->i_mode & S_IWUGO) == 0) | |
570 | /* 512 bytes (2**9) is the fake blocksize that must be | 569 | /* the ATTR_READONLY flag may have been */ |
571 | used for this calculation */ | 570 | /* changed on server -- set any w bits */ |
572 | inode->i_blocks = (512 - 1 + le64_to_cpu( | 571 | /* allowed by mnt_file_mode */ |
573 | pfindData->AllocationSize)) >> 9; | 572 | inode->i_mode |= (S_IWUGO & cifs_sb->mnt_file_mode); |
574 | } | 573 | /* BB add code to validate if device or weird share or device type? */ |
575 | spin_unlock(&inode->i_lock); | 574 | } |
575 | |||
576 | spin_lock(&inode->i_lock); | ||
577 | if (is_size_safe_to_change(cifsInfo, | ||
578 | le64_to_cpu(pfindData->EndOfFile))) { | ||
579 | /* can not safely shrink the file size here if the | ||
580 | client is writing to it due to potential races */ | ||
581 | i_size_write(inode, le64_to_cpu(pfindData->EndOfFile)); | ||
582 | |||
583 | /* 512 bytes (2**9) is the fake blocksize that must be | ||
584 | used for this calculation */ | ||
585 | inode->i_blocks = (512 - 1 + le64_to_cpu( | ||
586 | pfindData->AllocationSize)) >> 9; | ||
587 | } | ||
588 | spin_unlock(&inode->i_lock); | ||
576 | 589 | ||
577 | inode->i_nlink = le32_to_cpu(pfindData->NumberOfLinks); | 590 | inode->i_nlink = le32_to_cpu(pfindData->NumberOfLinks); |
578 | 591 | ||
579 | /* BB fill in uid and gid here? with help from winbind? | 592 | /* BB fill in uid and gid here? with help from winbind? |
580 | or retrieve from NTFS stream extended attribute */ | 593 | or retrieve from NTFS stream extended attribute */ |
581 | #ifdef CONFIG_CIFS_EXPERIMENTAL | 594 | #ifdef CONFIG_CIFS_EXPERIMENTAL |
582 | /* fill in 0777 bits from ACL */ | 595 | /* fill in 0777 bits from ACL */ |
583 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { | 596 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { |
584 | cFYI(1, ("Getting mode bits from ACL")); | 597 | cFYI(1, ("Getting mode bits from ACL")); |
585 | acl_to_uid_mode(inode, search_path, pfid); | 598 | acl_to_uid_mode(inode, full_path, pfid); |
586 | } | 599 | } |
587 | #endif | 600 | #endif |
588 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) { | 601 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) { |
589 | /* fill in remaining high mode bits e.g. SUID, VTX */ | 602 | /* fill in remaining high mode bits e.g. SUID, VTX */ |
590 | get_sfu_mode(inode, search_path, cifs_sb, xid); | 603 | get_sfu_mode(inode, full_path, cifs_sb, xid); |
591 | } else if (atomic_read(&cifsInfo->inUse) == 0) { | 604 | } else if (atomic_read(&cifsInfo->inUse) == 0) { |
592 | inode->i_uid = cifs_sb->mnt_uid; | 605 | inode->i_uid = cifs_sb->mnt_uid; |
593 | inode->i_gid = cifs_sb->mnt_gid; | 606 | inode->i_gid = cifs_sb->mnt_gid; |
594 | /* set so we do not keep refreshing these fields with | 607 | /* set so we do not keep refreshing these fields with |
595 | bad data after user has changed them in memory */ | 608 | bad data after user has changed them in memory */ |
596 | atomic_set(&cifsInfo->inUse, 1); | 609 | atomic_set(&cifsInfo->inUse, 1); |
597 | } | ||
598 | |||
599 | cifs_set_ops(inode, is_dfs_referral); | ||
600 | } | 610 | } |
611 | |||
612 | cifs_set_ops(inode, is_dfs_referral); | ||
613 | |||
614 | |||
615 | |||
616 | |||
601 | cgii_exit: | 617 | cgii_exit: |
602 | if (full_path != search_path) | ||
603 | kfree(full_path); | ||
604 | kfree(buf); | 618 | kfree(buf); |
605 | return rc; | 619 | return rc; |
606 | } | 620 | } |
@@ -1502,8 +1516,7 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs) | |||
1502 | int oplock = 0; | 1516 | int oplock = 0; |
1503 | 1517 | ||
1504 | rc = SMBLegacyOpen(xid, pTcon, full_path, | 1518 | rc = SMBLegacyOpen(xid, pTcon, full_path, |
1505 | FILE_OPEN, | 1519 | FILE_OPEN, GENERIC_WRITE, |
1506 | SYNCHRONIZE | FILE_WRITE_ATTRIBUTES, | ||
1507 | CREATE_NOT_DIR, &netfid, &oplock, | 1520 | CREATE_NOT_DIR, &netfid, &oplock, |
1508 | NULL, cifs_sb->local_nls, | 1521 | NULL, cifs_sb->local_nls, |
1509 | cifs_sb->mnt_cifs_flags & | 1522 | cifs_sb->mnt_cifs_flags & |
diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c index 5c792df13d62..0088a5b52564 100644 --- a/fs/cifs/ioctl.c +++ b/fs/cifs/ioctl.c | |||
@@ -30,9 +30,9 @@ | |||
30 | 30 | ||
31 | #define CIFS_IOC_CHECKUMOUNT _IO(0xCF, 2) | 31 | #define CIFS_IOC_CHECKUMOUNT _IO(0xCF, 2) |
32 | 32 | ||
33 | int cifs_ioctl(struct inode *inode, struct file *filep, | 33 | long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg) |
34 | unsigned int command, unsigned long arg) | ||
35 | { | 34 | { |
35 | struct inode *inode = filep->f_dentry->d_inode; | ||
36 | int rc = -ENOTTY; /* strange error - but the precedent */ | 36 | int rc = -ENOTTY; /* strange error - but the precedent */ |
37 | int xid; | 37 | int xid; |
38 | struct cifs_sb_info *cifs_sb; | 38 | struct cifs_sb_info *cifs_sb; |
diff --git a/fs/cifs/link.c b/fs/cifs/link.c index 1c2c3ce5020b..63f644000ce5 100644 --- a/fs/cifs/link.c +++ b/fs/cifs/link.c | |||
@@ -234,7 +234,6 @@ cifs_readlink(struct dentry *direntry, char __user *pBuffer, int buflen) | |||
234 | struct cifs_sb_info *cifs_sb; | 234 | struct cifs_sb_info *cifs_sb; |
235 | struct cifsTconInfo *pTcon; | 235 | struct cifsTconInfo *pTcon; |
236 | char *full_path = NULL; | 236 | char *full_path = NULL; |
237 | char *tmp_path = NULL; | ||
238 | char *tmpbuffer; | 237 | char *tmpbuffer; |
239 | int len; | 238 | int len; |
240 | __u16 fid; | 239 | __u16 fid; |
@@ -295,45 +294,9 @@ cifs_readlink(struct dentry *direntry, char __user *pBuffer, int buflen) | |||
295 | cFYI(1, ("Error closing junction point " | 294 | cFYI(1, ("Error closing junction point " |
296 | "(open for ioctl)")); | 295 | "(open for ioctl)")); |
297 | } | 296 | } |
298 | /* BB unwind this long, nested function, or remove BB */ | 297 | /* If it is a DFS junction earlier we would have gotten |
299 | if (rc == -EIO) { | 298 | PATH_NOT_COVERED returned from server so we do |
300 | /* Query if DFS Junction */ | 299 | not need to request the DFS info here */ |
301 | unsigned int num_referrals = 0; | ||
302 | struct dfs_info3_param *refs = NULL; | ||
303 | tmp_path = | ||
304 | kmalloc(MAX_TREE_SIZE + MAX_PATHCONF + 1, | ||
305 | GFP_KERNEL); | ||
306 | if (tmp_path) { | ||
307 | strncpy(tmp_path, pTcon->treeName, | ||
308 | MAX_TREE_SIZE); | ||
309 | strncat(tmp_path, full_path, | ||
310 | MAX_PATHCONF); | ||
311 | rc = get_dfs_path(xid, pTcon->ses, | ||
312 | tmp_path, | ||
313 | cifs_sb->local_nls, | ||
314 | &num_referrals, &refs, | ||
315 | cifs_sb->mnt_cifs_flags & | ||
316 | CIFS_MOUNT_MAP_SPECIAL_CHR); | ||
317 | cFYI(1, ("Get DFS for %s rc = %d ", | ||
318 | tmp_path, rc)); | ||
319 | if ((num_referrals == 0) && (rc == 0)) | ||
320 | rc = -EACCES; | ||
321 | else { | ||
322 | cFYI(1, ("num referral: %d", | ||
323 | num_referrals)); | ||
324 | if (refs && refs->path_name) { | ||
325 | strncpy(tmpbuffer, | ||
326 | refs->path_name, | ||
327 | len-1); | ||
328 | } | ||
329 | } | ||
330 | kfree(refs); | ||
331 | kfree(tmp_path); | ||
332 | } | ||
333 | /* BB add code like else decode referrals | ||
334 | then memcpy to tmpbuffer and free referrals | ||
335 | string array BB */ | ||
336 | } | ||
337 | } | 300 | } |
338 | } | 301 | } |
339 | /* BB Anything else to do to handle recursive links? */ | 302 | /* BB Anything else to do to handle recursive links? */ |
diff --git a/fs/cifs/netmisc.c b/fs/cifs/netmisc.c index 00f4cff400b3..8703d68f5b20 100644 --- a/fs/cifs/netmisc.c +++ b/fs/cifs/netmisc.c | |||
@@ -141,11 +141,11 @@ cifs_inet_pton(const int address_family, const char *cp, void *dst) | |||
141 | int ret = 0; | 141 | int ret = 0; |
142 | 142 | ||
143 | /* calculate length by finding first slash or NULL */ | 143 | /* calculate length by finding first slash or NULL */ |
144 | if (address_family == AF_INET) { | 144 | if (address_family == AF_INET) |
145 | ret = in4_pton(cp, -1 /* len */, dst, '\\', NULL); | 145 | ret = in4_pton(cp, -1 /* len */, dst, '\\', NULL); |
146 | } else if (address_family == AF_INET6) { | 146 | else if (address_family == AF_INET6) |
147 | ret = in6_pton(cp, -1 /* len */, dst , '\\', NULL); | 147 | ret = in6_pton(cp, -1 /* len */, dst , '\\', NULL); |
148 | } | 148 | |
149 | cFYI(DBG2, ("address conversion returned %d for %s", ret, cp)); | 149 | cFYI(DBG2, ("address conversion returned %d for %s", ret, cp)); |
150 | if (ret > 0) | 150 | if (ret > 0) |
151 | ret = 1; | 151 | ret = 1; |
diff --git a/fs/cifs/ntlmssp.h b/fs/cifs/ntlmssp.h index 7170a9b70f1e..c377d8065d99 100644 --- a/fs/cifs/ntlmssp.h +++ b/fs/cifs/ntlmssp.h | |||
@@ -64,7 +64,7 @@ typedef struct _SECURITY_BUFFER { | |||
64 | } __attribute__((packed)) SECURITY_BUFFER; | 64 | } __attribute__((packed)) SECURITY_BUFFER; |
65 | 65 | ||
66 | typedef struct _NEGOTIATE_MESSAGE { | 66 | typedef struct _NEGOTIATE_MESSAGE { |
67 | __u8 Signature[sizeof (NTLMSSP_SIGNATURE)]; | 67 | __u8 Signature[sizeof(NTLMSSP_SIGNATURE)]; |
68 | __le32 MessageType; /* 1 */ | 68 | __le32 MessageType; /* 1 */ |
69 | __le32 NegotiateFlags; | 69 | __le32 NegotiateFlags; |
70 | SECURITY_BUFFER DomainName; /* RFC 1001 style and ASCII */ | 70 | SECURITY_BUFFER DomainName; /* RFC 1001 style and ASCII */ |
@@ -74,7 +74,7 @@ typedef struct _NEGOTIATE_MESSAGE { | |||
74 | } __attribute__((packed)) NEGOTIATE_MESSAGE, *PNEGOTIATE_MESSAGE; | 74 | } __attribute__((packed)) NEGOTIATE_MESSAGE, *PNEGOTIATE_MESSAGE; |
75 | 75 | ||
76 | typedef struct _CHALLENGE_MESSAGE { | 76 | typedef struct _CHALLENGE_MESSAGE { |
77 | __u8 Signature[sizeof (NTLMSSP_SIGNATURE)]; | 77 | __u8 Signature[sizeof(NTLMSSP_SIGNATURE)]; |
78 | __le32 MessageType; /* 2 */ | 78 | __le32 MessageType; /* 2 */ |
79 | SECURITY_BUFFER TargetName; | 79 | SECURITY_BUFFER TargetName; |
80 | __le32 NegotiateFlags; | 80 | __le32 NegotiateFlags; |
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c index 34ec32100c72..713c25110197 100644 --- a/fs/cifs/readdir.c +++ b/fs/cifs/readdir.c | |||
@@ -670,8 +670,11 @@ static int find_cifs_entry(const int xid, struct cifsTconInfo *pTcon, | |||
670 | (index_to_find < first_entry_in_buffer)) { | 670 | (index_to_find < first_entry_in_buffer)) { |
671 | /* close and restart search */ | 671 | /* close and restart search */ |
672 | cFYI(1, ("search backing up - close and restart search")); | 672 | cFYI(1, ("search backing up - close and restart search")); |
673 | cifsFile->invalidHandle = true; | 673 | if (!cifsFile->srch_inf.endOfSearch && |
674 | CIFSFindClose(xid, pTcon, cifsFile->netfid); | 674 | !cifsFile->invalidHandle) { |
675 | cifsFile->invalidHandle = true; | ||
676 | CIFSFindClose(xid, pTcon, cifsFile->netfid); | ||
677 | } | ||
675 | kfree(cifsFile->search_resume_name); | 678 | kfree(cifsFile->search_resume_name); |
676 | cifsFile->search_resume_name = NULL; | 679 | cifsFile->search_resume_name = NULL; |
677 | if (cifsFile->srch_inf.ntwrk_buf_start) { | 680 | if (cifsFile->srch_inf.ntwrk_buf_start) { |
diff --git a/fs/compat.c b/fs/compat.c index 332a869d2c53..ed43e17a5dc6 100644 --- a/fs/compat.c +++ b/fs/compat.c | |||
@@ -1405,7 +1405,7 @@ int compat_do_execve(char * filename, | |||
1405 | /* execve success */ | 1405 | /* execve success */ |
1406 | security_bprm_free(bprm); | 1406 | security_bprm_free(bprm); |
1407 | acct_update_integrals(current); | 1407 | acct_update_integrals(current); |
1408 | kfree(bprm); | 1408 | free_bprm(bprm); |
1409 | return retval; | 1409 | return retval; |
1410 | } | 1410 | } |
1411 | 1411 | ||
@@ -1424,7 +1424,7 @@ out_file: | |||
1424 | } | 1424 | } |
1425 | 1425 | ||
1426 | out_kfree: | 1426 | out_kfree: |
1427 | kfree(bprm); | 1427 | free_bprm(bprm); |
1428 | 1428 | ||
1429 | out_ret: | 1429 | out_ret: |
1430 | return retval; | 1430 | return retval; |
diff --git a/fs/dlm/lowcomms.c b/fs/dlm/lowcomms.c index 7c1e5e5cccd8..637018c891ef 100644 --- a/fs/dlm/lowcomms.c +++ b/fs/dlm/lowcomms.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/pagemap.h> | 50 | #include <linux/pagemap.h> |
51 | #include <linux/idr.h> | 51 | #include <linux/idr.h> |
52 | #include <linux/file.h> | 52 | #include <linux/file.h> |
53 | #include <linux/mutex.h> | ||
53 | #include <linux/sctp.h> | 54 | #include <linux/sctp.h> |
54 | #include <net/sctp/user.h> | 55 | #include <net/sctp/user.h> |
55 | 56 | ||
@@ -138,7 +139,7 @@ static struct workqueue_struct *recv_workqueue; | |||
138 | static struct workqueue_struct *send_workqueue; | 139 | static struct workqueue_struct *send_workqueue; |
139 | 140 | ||
140 | static DEFINE_IDR(connections_idr); | 141 | static DEFINE_IDR(connections_idr); |
141 | static DECLARE_MUTEX(connections_lock); | 142 | static DEFINE_MUTEX(connections_lock); |
142 | static int max_nodeid; | 143 | static int max_nodeid; |
143 | static struct kmem_cache *con_cache; | 144 | static struct kmem_cache *con_cache; |
144 | 145 | ||
@@ -205,9 +206,9 @@ static struct connection *nodeid2con(int nodeid, gfp_t allocation) | |||
205 | { | 206 | { |
206 | struct connection *con; | 207 | struct connection *con; |
207 | 208 | ||
208 | down(&connections_lock); | 209 | mutex_lock(&connections_lock); |
209 | con = __nodeid2con(nodeid, allocation); | 210 | con = __nodeid2con(nodeid, allocation); |
210 | up(&connections_lock); | 211 | mutex_unlock(&connections_lock); |
211 | 212 | ||
212 | return con; | 213 | return con; |
213 | } | 214 | } |
@@ -218,15 +219,15 @@ static struct connection *assoc2con(int assoc_id) | |||
218 | int i; | 219 | int i; |
219 | struct connection *con; | 220 | struct connection *con; |
220 | 221 | ||
221 | down(&connections_lock); | 222 | mutex_lock(&connections_lock); |
222 | for (i=0; i<=max_nodeid; i++) { | 223 | for (i=0; i<=max_nodeid; i++) { |
223 | con = __nodeid2con(i, 0); | 224 | con = __nodeid2con(i, 0); |
224 | if (con && con->sctp_assoc == assoc_id) { | 225 | if (con && con->sctp_assoc == assoc_id) { |
225 | up(&connections_lock); | 226 | mutex_unlock(&connections_lock); |
226 | return con; | 227 | return con; |
227 | } | 228 | } |
228 | } | 229 | } |
229 | up(&connections_lock); | 230 | mutex_unlock(&connections_lock); |
230 | return NULL; | 231 | return NULL; |
231 | } | 232 | } |
232 | 233 | ||
@@ -381,7 +382,7 @@ static void sctp_init_failed(void) | |||
381 | int i; | 382 | int i; |
382 | struct connection *con; | 383 | struct connection *con; |
383 | 384 | ||
384 | down(&connections_lock); | 385 | mutex_lock(&connections_lock); |
385 | for (i=1; i<=max_nodeid; i++) { | 386 | for (i=1; i<=max_nodeid; i++) { |
386 | con = __nodeid2con(i, 0); | 387 | con = __nodeid2con(i, 0); |
387 | if (!con) | 388 | if (!con) |
@@ -393,7 +394,7 @@ static void sctp_init_failed(void) | |||
393 | } | 394 | } |
394 | } | 395 | } |
395 | } | 396 | } |
396 | up(&connections_lock); | 397 | mutex_unlock(&connections_lock); |
397 | } | 398 | } |
398 | 399 | ||
399 | /* Something happened to an association */ | 400 | /* Something happened to an association */ |
@@ -930,7 +931,7 @@ out_err: | |||
930 | * errors we try again until the max number of retries is reached. | 931 | * errors we try again until the max number of retries is reached. |
931 | */ | 932 | */ |
932 | if (result != -EHOSTUNREACH && result != -ENETUNREACH && | 933 | if (result != -EHOSTUNREACH && result != -ENETUNREACH && |
933 | result != -ENETDOWN && result != EINVAL | 934 | result != -ENETDOWN && result != -EINVAL |
934 | && result != -EPROTONOSUPPORT) { | 935 | && result != -EPROTONOSUPPORT) { |
935 | lowcomms_connect_sock(con); | 936 | lowcomms_connect_sock(con); |
936 | result = 0; | 937 | result = 0; |
@@ -1417,7 +1418,7 @@ void dlm_lowcomms_stop(void) | |||
1417 | /* Set all the flags to prevent any | 1418 | /* Set all the flags to prevent any |
1418 | socket activity. | 1419 | socket activity. |
1419 | */ | 1420 | */ |
1420 | down(&connections_lock); | 1421 | mutex_lock(&connections_lock); |
1421 | for (i = 0; i <= max_nodeid; i++) { | 1422 | for (i = 0; i <= max_nodeid; i++) { |
1422 | con = __nodeid2con(i, 0); | 1423 | con = __nodeid2con(i, 0); |
1423 | if (con) { | 1424 | if (con) { |
@@ -1426,11 +1427,11 @@ void dlm_lowcomms_stop(void) | |||
1426 | con->sock->sk->sk_user_data = NULL; | 1427 | con->sock->sk->sk_user_data = NULL; |
1427 | } | 1428 | } |
1428 | } | 1429 | } |
1429 | up(&connections_lock); | 1430 | mutex_unlock(&connections_lock); |
1430 | 1431 | ||
1431 | work_stop(); | 1432 | work_stop(); |
1432 | 1433 | ||
1433 | down(&connections_lock); | 1434 | mutex_lock(&connections_lock); |
1434 | clean_writequeues(); | 1435 | clean_writequeues(); |
1435 | 1436 | ||
1436 | for (i = 0; i <= max_nodeid; i++) { | 1437 | for (i = 0; i <= max_nodeid; i++) { |
@@ -1443,7 +1444,7 @@ void dlm_lowcomms_stop(void) | |||
1443 | } | 1444 | } |
1444 | } | 1445 | } |
1445 | max_nodeid = 0; | 1446 | max_nodeid = 0; |
1446 | up(&connections_lock); | 1447 | mutex_unlock(&connections_lock); |
1447 | kmem_cache_destroy(con_cache); | 1448 | kmem_cache_destroy(con_cache); |
1448 | idr_init(&connections_idr); | 1449 | idr_init(&connections_idr); |
1449 | } | 1450 | } |
diff --git a/fs/dlm/netlink.c b/fs/dlm/netlink.c index 714593621f4f..18bda83cc892 100644 --- a/fs/dlm/netlink.c +++ b/fs/dlm/netlink.c | |||
@@ -95,7 +95,7 @@ int __init dlm_netlink_init(void) | |||
95 | return rv; | 95 | return rv; |
96 | } | 96 | } |
97 | 97 | ||
98 | void __exit dlm_netlink_exit(void) | 98 | void dlm_netlink_exit(void) |
99 | { | 99 | { |
100 | genl_unregister_ops(&family, &dlm_nl_ops); | 100 | genl_unregister_ops(&family, &dlm_nl_ops); |
101 | genl_unregister_family(&family); | 101 | genl_unregister_family(&family); |
diff --git a/fs/dlm/plock.c b/fs/dlm/plock.c index d6d6e370f89c..78878c5781ca 100644 --- a/fs/dlm/plock.c +++ b/fs/dlm/plock.c | |||
@@ -379,7 +379,7 @@ static ssize_t dev_write(struct file *file, const char __user *u, size_t count, | |||
379 | struct plock_xop *xop; | 379 | struct plock_xop *xop; |
380 | xop = (struct plock_xop *)op; | 380 | xop = (struct plock_xop *)op; |
381 | if (xop->callback) | 381 | if (xop->callback) |
382 | count = dlm_plock_callback(op); | 382 | dlm_plock_callback(op); |
383 | else | 383 | else |
384 | wake_up(&recv_wq); | 384 | wake_up(&recv_wq); |
385 | } else | 385 | } else |
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c index cd62d75b2cc0..e2832bc7869a 100644 --- a/fs/ecryptfs/crypto.c +++ b/fs/ecryptfs/crypto.c | |||
@@ -1906,9 +1906,9 @@ int ecryptfs_get_tfm_and_mutex_for_cipher_name(struct crypto_blkcipher **tfm, | |||
1906 | goto out; | 1906 | goto out; |
1907 | } | 1907 | } |
1908 | } | 1908 | } |
1909 | mutex_unlock(&key_tfm_list_mutex); | ||
1910 | (*tfm) = key_tfm->key_tfm; | 1909 | (*tfm) = key_tfm->key_tfm; |
1911 | (*tfm_mutex) = &key_tfm->key_tfm_mutex; | 1910 | (*tfm_mutex) = &key_tfm->key_tfm_mutex; |
1912 | out: | 1911 | out: |
1912 | mutex_unlock(&key_tfm_list_mutex); | ||
1913 | return rc; | 1913 | return rc; |
1914 | } | 1914 | } |
diff --git a/fs/ecryptfs/miscdev.c b/fs/ecryptfs/miscdev.c index 6560da1a58ce..50c994a249a5 100644 --- a/fs/ecryptfs/miscdev.c +++ b/fs/ecryptfs/miscdev.c | |||
@@ -243,7 +243,6 @@ ecryptfs_miscdev_read(struct file *file, char __user *buf, size_t count, | |||
243 | struct ecryptfs_daemon *daemon; | 243 | struct ecryptfs_daemon *daemon; |
244 | struct ecryptfs_msg_ctx *msg_ctx; | 244 | struct ecryptfs_msg_ctx *msg_ctx; |
245 | size_t packet_length_size; | 245 | size_t packet_length_size; |
246 | u32 counter_nbo; | ||
247 | char packet_length[3]; | 246 | char packet_length[3]; |
248 | size_t i; | 247 | size_t i; |
249 | size_t total_length; | 248 | size_t total_length; |
@@ -328,20 +327,18 @@ check_list: | |||
328 | "pending message\n", __func__, count, total_length); | 327 | "pending message\n", __func__, count, total_length); |
329 | goto out_unlock_msg_ctx; | 328 | goto out_unlock_msg_ctx; |
330 | } | 329 | } |
331 | i = 0; | 330 | rc = -EFAULT; |
332 | buf[i++] = msg_ctx->type; | 331 | if (put_user(msg_ctx->type, buf)) |
333 | counter_nbo = cpu_to_be32(msg_ctx->counter); | 332 | goto out_unlock_msg_ctx; |
334 | memcpy(&buf[i], (char *)&counter_nbo, 4); | 333 | if (put_user(cpu_to_be32(msg_ctx->counter), (__be32 __user *)(buf + 1))) |
335 | i += 4; | 334 | goto out_unlock_msg_ctx; |
335 | i = 5; | ||
336 | if (msg_ctx->msg) { | 336 | if (msg_ctx->msg) { |
337 | memcpy(&buf[i], packet_length, packet_length_size); | 337 | if (copy_to_user(&buf[i], packet_length, packet_length_size)) |
338 | goto out_unlock_msg_ctx; | ||
338 | i += packet_length_size; | 339 | i += packet_length_size; |
339 | rc = copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size); | 340 | if (copy_to_user(&buf[i], msg_ctx->msg, msg_ctx->msg_size)) |
340 | if (rc) { | ||
341 | printk(KERN_ERR "%s: copy_to_user returned error " | ||
342 | "[%d]\n", __func__, rc); | ||
343 | goto out_unlock_msg_ctx; | 341 | goto out_unlock_msg_ctx; |
344 | } | ||
345 | i += msg_ctx->msg_size; | 342 | i += msg_ctx->msg_size; |
346 | } | 343 | } |
347 | rc = i; | 344 | rc = i; |
@@ -452,7 +449,8 @@ static ssize_t | |||
452 | ecryptfs_miscdev_write(struct file *file, const char __user *buf, | 449 | ecryptfs_miscdev_write(struct file *file, const char __user *buf, |
453 | size_t count, loff_t *ppos) | 450 | size_t count, loff_t *ppos) |
454 | { | 451 | { |
455 | u32 counter_nbo, seq; | 452 | __be32 counter_nbo; |
453 | u32 seq; | ||
456 | size_t packet_size, packet_size_length, i; | 454 | size_t packet_size, packet_size_length, i; |
457 | ssize_t sz = 0; | 455 | ssize_t sz = 0; |
458 | char *data; | 456 | char *data; |
@@ -485,7 +483,7 @@ ecryptfs_miscdev_write(struct file *file, const char __user *buf, | |||
485 | count); | 483 | count); |
486 | goto out_free; | 484 | goto out_free; |
487 | } | 485 | } |
488 | memcpy((char *)&counter_nbo, &data[i], 4); | 486 | memcpy(&counter_nbo, &data[i], 4); |
489 | seq = be32_to_cpu(counter_nbo); | 487 | seq = be32_to_cpu(counter_nbo); |
490 | i += 4; | 488 | i += 4; |
491 | rc = ecryptfs_parse_packet_length(&data[i], &packet_size, | 489 | rc = ecryptfs_parse_packet_length(&data[i], &packet_size, |
@@ -860,6 +860,7 @@ static int de_thread(struct task_struct *tsk) | |||
860 | 860 | ||
861 | no_thread_group: | 861 | no_thread_group: |
862 | exit_itimers(sig); | 862 | exit_itimers(sig); |
863 | flush_itimer_signals(); | ||
863 | if (leader) | 864 | if (leader) |
864 | release_task(leader); | 865 | release_task(leader); |
865 | 866 | ||
@@ -1251,6 +1252,12 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) | |||
1251 | 1252 | ||
1252 | EXPORT_SYMBOL(search_binary_handler); | 1253 | EXPORT_SYMBOL(search_binary_handler); |
1253 | 1254 | ||
1255 | void free_bprm(struct linux_binprm *bprm) | ||
1256 | { | ||
1257 | free_arg_pages(bprm); | ||
1258 | kfree(bprm); | ||
1259 | } | ||
1260 | |||
1254 | /* | 1261 | /* |
1255 | * sys_execve() executes a new program. | 1262 | * sys_execve() executes a new program. |
1256 | */ | 1263 | */ |
@@ -1320,17 +1327,15 @@ int do_execve(char * filename, | |||
1320 | retval = search_binary_handler(bprm,regs); | 1327 | retval = search_binary_handler(bprm,regs); |
1321 | if (retval >= 0) { | 1328 | if (retval >= 0) { |
1322 | /* execve success */ | 1329 | /* execve success */ |
1323 | free_arg_pages(bprm); | ||
1324 | security_bprm_free(bprm); | 1330 | security_bprm_free(bprm); |
1325 | acct_update_integrals(current); | 1331 | acct_update_integrals(current); |
1326 | kfree(bprm); | 1332 | free_bprm(bprm); |
1327 | if (displaced) | 1333 | if (displaced) |
1328 | put_files_struct(displaced); | 1334 | put_files_struct(displaced); |
1329 | return retval; | 1335 | return retval; |
1330 | } | 1336 | } |
1331 | 1337 | ||
1332 | out: | 1338 | out: |
1333 | free_arg_pages(bprm); | ||
1334 | if (bprm->security) | 1339 | if (bprm->security) |
1335 | security_bprm_free(bprm); | 1340 | security_bprm_free(bprm); |
1336 | 1341 | ||
@@ -1344,7 +1349,7 @@ out_file: | |||
1344 | fput(bprm->file); | 1349 | fput(bprm->file); |
1345 | } | 1350 | } |
1346 | out_kfree: | 1351 | out_kfree: |
1347 | kfree(bprm); | 1352 | free_bprm(bprm); |
1348 | 1353 | ||
1349 | out_files: | 1354 | out_files: |
1350 | if (displaced) | 1355 | if (displaced) |
diff --git a/fs/ext4/balloc.c b/fs/ext4/balloc.c index da994374ec3b..30494c5da843 100644 --- a/fs/ext4/balloc.c +++ b/fs/ext4/balloc.c | |||
@@ -287,11 +287,11 @@ read_block_bitmap(struct super_block *sb, ext4_group_t block_group) | |||
287 | (int)block_group, (unsigned long long)bitmap_blk); | 287 | (int)block_group, (unsigned long long)bitmap_blk); |
288 | return NULL; | 288 | return NULL; |
289 | } | 289 | } |
290 | if (!ext4_valid_block_bitmap(sb, desc, block_group, bh)) { | 290 | ext4_valid_block_bitmap(sb, desc, block_group, bh); |
291 | put_bh(bh); | 291 | /* |
292 | return NULL; | 292 | * file system mounted not to panic on error, |
293 | } | 293 | * continue with corrupt bitmap |
294 | 294 | */ | |
295 | return bh; | 295 | return bh; |
296 | } | 296 | } |
297 | /* | 297 | /* |
@@ -1770,7 +1770,12 @@ allocated: | |||
1770 | "Allocating block in system zone - " | 1770 | "Allocating block in system zone - " |
1771 | "blocks from %llu, length %lu", | 1771 | "blocks from %llu, length %lu", |
1772 | ret_block, num); | 1772 | ret_block, num); |
1773 | goto out; | 1773 | /* |
1774 | * claim_block marked the blocks we allocated | ||
1775 | * as in use. So we may want to selectively | ||
1776 | * mark some of the blocks as free | ||
1777 | */ | ||
1778 | goto retry_alloc; | ||
1774 | } | 1779 | } |
1775 | 1780 | ||
1776 | performed_allocation = 1; | 1781 | performed_allocation = 1; |
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index b128bdc0f55c..873ad9b3418c 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c | |||
@@ -2736,7 +2736,7 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac, | |||
2736 | struct ext4_sb_info *sbi; | 2736 | struct ext4_sb_info *sbi; |
2737 | struct super_block *sb; | 2737 | struct super_block *sb; |
2738 | ext4_fsblk_t block; | 2738 | ext4_fsblk_t block; |
2739 | int err; | 2739 | int err, len; |
2740 | 2740 | ||
2741 | BUG_ON(ac->ac_status != AC_STATUS_FOUND); | 2741 | BUG_ON(ac->ac_status != AC_STATUS_FOUND); |
2742 | BUG_ON(ac->ac_b_ex.fe_len <= 0); | 2742 | BUG_ON(ac->ac_b_ex.fe_len <= 0); |
@@ -2770,14 +2770,27 @@ ext4_mb_mark_diskspace_used(struct ext4_allocation_context *ac, | |||
2770 | + ac->ac_b_ex.fe_start | 2770 | + ac->ac_b_ex.fe_start |
2771 | + le32_to_cpu(es->s_first_data_block); | 2771 | + le32_to_cpu(es->s_first_data_block); |
2772 | 2772 | ||
2773 | if (block == ext4_block_bitmap(sb, gdp) || | 2773 | len = ac->ac_b_ex.fe_len; |
2774 | block == ext4_inode_bitmap(sb, gdp) || | 2774 | if (in_range(ext4_block_bitmap(sb, gdp), block, len) || |
2775 | in_range(block, ext4_inode_table(sb, gdp), | 2775 | in_range(ext4_inode_bitmap(sb, gdp), block, len) || |
2776 | EXT4_SB(sb)->s_itb_per_group)) { | 2776 | in_range(block, ext4_inode_table(sb, gdp), |
2777 | 2777 | EXT4_SB(sb)->s_itb_per_group) || | |
2778 | in_range(block + len - 1, ext4_inode_table(sb, gdp), | ||
2779 | EXT4_SB(sb)->s_itb_per_group)) { | ||
2778 | ext4_error(sb, __func__, | 2780 | ext4_error(sb, __func__, |
2779 | "Allocating block in system zone - block = %llu", | 2781 | "Allocating block in system zone - block = %llu", |
2780 | block); | 2782 | block); |
2783 | /* File system mounted not to panic on error | ||
2784 | * Fix the bitmap and repeat the block allocation | ||
2785 | * We leak some of the blocks here. | ||
2786 | */ | ||
2787 | mb_set_bits(sb_bgl_lock(sbi, ac->ac_b_ex.fe_group), | ||
2788 | bitmap_bh->b_data, ac->ac_b_ex.fe_start, | ||
2789 | ac->ac_b_ex.fe_len); | ||
2790 | err = ext4_journal_dirty_metadata(handle, bitmap_bh); | ||
2791 | if (!err) | ||
2792 | err = -EAGAIN; | ||
2793 | goto out_err; | ||
2781 | } | 2794 | } |
2782 | #ifdef AGGRESSIVE_CHECK | 2795 | #ifdef AGGRESSIVE_CHECK |
2783 | { | 2796 | { |
@@ -2880,12 +2893,11 @@ ext4_mb_normalize_request(struct ext4_allocation_context *ac, | |||
2880 | if (size < i_size_read(ac->ac_inode)) | 2893 | if (size < i_size_read(ac->ac_inode)) |
2881 | size = i_size_read(ac->ac_inode); | 2894 | size = i_size_read(ac->ac_inode); |
2882 | 2895 | ||
2883 | /* max available blocks in a free group */ | 2896 | /* max size of free chunks */ |
2884 | max = EXT4_BLOCKS_PER_GROUP(ac->ac_sb) - 1 - 1 - | 2897 | max = 2 << bsbits; |
2885 | EXT4_SB(ac->ac_sb)->s_itb_per_group; | ||
2886 | 2898 | ||
2887 | #define NRL_CHECK_SIZE(req, size, max,bits) \ | 2899 | #define NRL_CHECK_SIZE(req, size, max, chunk_size) \ |
2888 | (req <= (size) || max <= ((size) >> bits)) | 2900 | (req <= (size) || max <= (chunk_size)) |
2889 | 2901 | ||
2890 | /* first, try to predict filesize */ | 2902 | /* first, try to predict filesize */ |
2891 | /* XXX: should this table be tunable? */ | 2903 | /* XXX: should this table be tunable? */ |
@@ -2904,16 +2916,16 @@ ext4_mb_normalize_request(struct ext4_allocation_context *ac, | |||
2904 | size = 512 * 1024; | 2916 | size = 512 * 1024; |
2905 | } else if (size <= 1024 * 1024) { | 2917 | } else if (size <= 1024 * 1024) { |
2906 | size = 1024 * 1024; | 2918 | size = 1024 * 1024; |
2907 | } else if (NRL_CHECK_SIZE(size, 4 * 1024 * 1024, max, bsbits)) { | 2919 | } else if (NRL_CHECK_SIZE(size, 4 * 1024 * 1024, max, 2 * 1024)) { |
2908 | start_off = ((loff_t)ac->ac_o_ex.fe_logical >> | 2920 | start_off = ((loff_t)ac->ac_o_ex.fe_logical >> |
2909 | (20 - bsbits)) << 20; | 2921 | (21 - bsbits)) << 21; |
2910 | size = 1024 * 1024; | 2922 | size = 2 * 1024 * 1024; |
2911 | } else if (NRL_CHECK_SIZE(size, 8 * 1024 * 1024, max, bsbits)) { | 2923 | } else if (NRL_CHECK_SIZE(size, 8 * 1024 * 1024, max, 4 * 1024)) { |
2912 | start_off = ((loff_t)ac->ac_o_ex.fe_logical >> | 2924 | start_off = ((loff_t)ac->ac_o_ex.fe_logical >> |
2913 | (22 - bsbits)) << 22; | 2925 | (22 - bsbits)) << 22; |
2914 | size = 4 * 1024 * 1024; | 2926 | size = 4 * 1024 * 1024; |
2915 | } else if (NRL_CHECK_SIZE(ac->ac_o_ex.fe_len, | 2927 | } else if (NRL_CHECK_SIZE(ac->ac_o_ex.fe_len, |
2916 | (8<<20)>>bsbits, max, bsbits)) { | 2928 | (8<<20)>>bsbits, max, 8 * 1024)) { |
2917 | start_off = ((loff_t)ac->ac_o_ex.fe_logical >> | 2929 | start_off = ((loff_t)ac->ac_o_ex.fe_logical >> |
2918 | (23 - bsbits)) << 23; | 2930 | (23 - bsbits)) << 23; |
2919 | size = 8 * 1024 * 1024; | 2931 | size = 8 * 1024 * 1024; |
@@ -4033,7 +4045,6 @@ ext4_fsblk_t ext4_mb_new_blocks(handle_t *handle, | |||
4033 | 4045 | ||
4034 | ac->ac_op = EXT4_MB_HISTORY_ALLOC; | 4046 | ac->ac_op = EXT4_MB_HISTORY_ALLOC; |
4035 | ext4_mb_normalize_request(ac, ar); | 4047 | ext4_mb_normalize_request(ac, ar); |
4036 | |||
4037 | repeat: | 4048 | repeat: |
4038 | /* allocate space in core */ | 4049 | /* allocate space in core */ |
4039 | ext4_mb_regular_allocator(ac); | 4050 | ext4_mb_regular_allocator(ac); |
@@ -4047,10 +4058,21 @@ repeat: | |||
4047 | } | 4058 | } |
4048 | 4059 | ||
4049 | if (likely(ac->ac_status == AC_STATUS_FOUND)) { | 4060 | if (likely(ac->ac_status == AC_STATUS_FOUND)) { |
4050 | ext4_mb_mark_diskspace_used(ac, handle); | 4061 | *errp = ext4_mb_mark_diskspace_used(ac, handle); |
4051 | *errp = 0; | 4062 | if (*errp == -EAGAIN) { |
4052 | block = ext4_grp_offs_to_block(sb, &ac->ac_b_ex); | 4063 | ac->ac_b_ex.fe_group = 0; |
4053 | ar->len = ac->ac_b_ex.fe_len; | 4064 | ac->ac_b_ex.fe_start = 0; |
4065 | ac->ac_b_ex.fe_len = 0; | ||
4066 | ac->ac_status = AC_STATUS_CONTINUE; | ||
4067 | goto repeat; | ||
4068 | } else if (*errp) { | ||
4069 | ac->ac_b_ex.fe_len = 0; | ||
4070 | ar->len = 0; | ||
4071 | ext4_mb_show_ac(ac); | ||
4072 | } else { | ||
4073 | block = ext4_grp_offs_to_block(sb, &ac->ac_b_ex); | ||
4074 | ar->len = ac->ac_b_ex.fe_len; | ||
4075 | } | ||
4054 | } else { | 4076 | } else { |
4055 | freed = ext4_mb_discard_preallocations(sb, ac->ac_o_ex.fe_len); | 4077 | freed = ext4_mb_discard_preallocations(sb, ac->ac_o_ex.fe_len); |
4056 | if (freed) | 4078 | if (freed) |
@@ -4237,6 +4259,8 @@ do_more: | |||
4237 | ext4_error(sb, __func__, | 4259 | ext4_error(sb, __func__, |
4238 | "Freeing blocks in system zone - " | 4260 | "Freeing blocks in system zone - " |
4239 | "Block = %lu, count = %lu", block, count); | 4261 | "Block = %lu, count = %lu", block, count); |
4262 | /* err = 0. ext4_std_error should be a no op */ | ||
4263 | goto error_return; | ||
4240 | } | 4264 | } |
4241 | 4265 | ||
4242 | BUFFER_TRACE(bitmap_bh, "getting write access"); | 4266 | BUFFER_TRACE(bitmap_bh, "getting write access"); |
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 52dd0679a4e2..09d9359c8055 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -979,7 +979,7 @@ static int parse_options (char *options, struct super_block *sb, | |||
979 | int data_opt = 0; | 979 | int data_opt = 0; |
980 | int option; | 980 | int option; |
981 | #ifdef CONFIG_QUOTA | 981 | #ifdef CONFIG_QUOTA |
982 | int qtype; | 982 | int qtype, qfmt; |
983 | char *qname; | 983 | char *qname; |
984 | #endif | 984 | #endif |
985 | 985 | ||
@@ -1162,9 +1162,11 @@ static int parse_options (char *options, struct super_block *sb, | |||
1162 | case Opt_grpjquota: | 1162 | case Opt_grpjquota: |
1163 | qtype = GRPQUOTA; | 1163 | qtype = GRPQUOTA; |
1164 | set_qf_name: | 1164 | set_qf_name: |
1165 | if (sb_any_quota_enabled(sb)) { | 1165 | if ((sb_any_quota_enabled(sb) || |
1166 | sb_any_quota_suspended(sb)) && | ||
1167 | !sbi->s_qf_names[qtype]) { | ||
1166 | printk(KERN_ERR | 1168 | printk(KERN_ERR |
1167 | "EXT4-fs: Cannot change journalled " | 1169 | "EXT4-fs: Cannot change journaled " |
1168 | "quota options when quota turned on.\n"); | 1170 | "quota options when quota turned on.\n"); |
1169 | return 0; | 1171 | return 0; |
1170 | } | 1172 | } |
@@ -1200,9 +1202,11 @@ set_qf_name: | |||
1200 | case Opt_offgrpjquota: | 1202 | case Opt_offgrpjquota: |
1201 | qtype = GRPQUOTA; | 1203 | qtype = GRPQUOTA; |
1202 | clear_qf_name: | 1204 | clear_qf_name: |
1203 | if (sb_any_quota_enabled(sb)) { | 1205 | if ((sb_any_quota_enabled(sb) || |
1206 | sb_any_quota_suspended(sb)) && | ||
1207 | sbi->s_qf_names[qtype]) { | ||
1204 | printk(KERN_ERR "EXT4-fs: Cannot change " | 1208 | printk(KERN_ERR "EXT4-fs: Cannot change " |
1205 | "journalled quota options when " | 1209 | "journaled quota options when " |
1206 | "quota turned on.\n"); | 1210 | "quota turned on.\n"); |
1207 | return 0; | 1211 | return 0; |
1208 | } | 1212 | } |
@@ -1213,10 +1217,20 @@ clear_qf_name: | |||
1213 | sbi->s_qf_names[qtype] = NULL; | 1217 | sbi->s_qf_names[qtype] = NULL; |
1214 | break; | 1218 | break; |
1215 | case Opt_jqfmt_vfsold: | 1219 | case Opt_jqfmt_vfsold: |
1216 | sbi->s_jquota_fmt = QFMT_VFS_OLD; | 1220 | qfmt = QFMT_VFS_OLD; |
1217 | break; | 1221 | goto set_qf_format; |
1218 | case Opt_jqfmt_vfsv0: | 1222 | case Opt_jqfmt_vfsv0: |
1219 | sbi->s_jquota_fmt = QFMT_VFS_V0; | 1223 | qfmt = QFMT_VFS_V0; |
1224 | set_qf_format: | ||
1225 | if ((sb_any_quota_enabled(sb) || | ||
1226 | sb_any_quota_suspended(sb)) && | ||
1227 | sbi->s_jquota_fmt != qfmt) { | ||
1228 | printk(KERN_ERR "EXT4-fs: Cannot change " | ||
1229 | "journaled quota options when " | ||
1230 | "quota turned on.\n"); | ||
1231 | return 0; | ||
1232 | } | ||
1233 | sbi->s_jquota_fmt = qfmt; | ||
1220 | break; | 1234 | break; |
1221 | case Opt_quota: | 1235 | case Opt_quota: |
1222 | case Opt_usrquota: | 1236 | case Opt_usrquota: |
@@ -1241,6 +1255,9 @@ clear_qf_name: | |||
1241 | case Opt_quota: | 1255 | case Opt_quota: |
1242 | case Opt_usrquota: | 1256 | case Opt_usrquota: |
1243 | case Opt_grpquota: | 1257 | case Opt_grpquota: |
1258 | printk(KERN_ERR | ||
1259 | "EXT4-fs: quota options not supported.\n"); | ||
1260 | break; | ||
1244 | case Opt_usrjquota: | 1261 | case Opt_usrjquota: |
1245 | case Opt_grpjquota: | 1262 | case Opt_grpjquota: |
1246 | case Opt_offusrjquota: | 1263 | case Opt_offusrjquota: |
@@ -1248,7 +1265,7 @@ clear_qf_name: | |||
1248 | case Opt_jqfmt_vfsold: | 1265 | case Opt_jqfmt_vfsold: |
1249 | case Opt_jqfmt_vfsv0: | 1266 | case Opt_jqfmt_vfsv0: |
1250 | printk(KERN_ERR | 1267 | printk(KERN_ERR |
1251 | "EXT4-fs: journalled quota options not " | 1268 | "EXT4-fs: journaled quota options not " |
1252 | "supported.\n"); | 1269 | "supported.\n"); |
1253 | break; | 1270 | break; |
1254 | case Opt_noquota: | 1271 | case Opt_noquota: |
@@ -1333,14 +1350,14 @@ clear_qf_name: | |||
1333 | } | 1350 | } |
1334 | 1351 | ||
1335 | if (!sbi->s_jquota_fmt) { | 1352 | if (!sbi->s_jquota_fmt) { |
1336 | printk(KERN_ERR "EXT4-fs: journalled quota format " | 1353 | printk(KERN_ERR "EXT4-fs: journaled quota format " |
1337 | "not specified.\n"); | 1354 | "not specified.\n"); |
1338 | return 0; | 1355 | return 0; |
1339 | } | 1356 | } |
1340 | } else { | 1357 | } else { |
1341 | if (sbi->s_jquota_fmt) { | 1358 | if (sbi->s_jquota_fmt) { |
1342 | printk(KERN_ERR "EXT4-fs: journalled quota format " | 1359 | printk(KERN_ERR "EXT4-fs: journaled quota format " |
1343 | "specified with no journalling " | 1360 | "specified with no journaling " |
1344 | "enabled.\n"); | 1361 | "enabled.\n"); |
1345 | return 0; | 1362 | return 0; |
1346 | } | 1363 | } |
@@ -1581,7 +1598,7 @@ static void ext4_orphan_cleanup (struct super_block * sb, | |||
1581 | int ret = ext4_quota_on_mount(sb, i); | 1598 | int ret = ext4_quota_on_mount(sb, i); |
1582 | if (ret < 0) | 1599 | if (ret < 0) |
1583 | printk(KERN_ERR | 1600 | printk(KERN_ERR |
1584 | "EXT4-fs: Cannot turn on journalled " | 1601 | "EXT4-fs: Cannot turn on journaled " |
1585 | "quota: error %d\n", ret); | 1602 | "quota: error %d\n", ret); |
1586 | } | 1603 | } |
1587 | } | 1604 | } |
@@ -3106,7 +3123,7 @@ static int ext4_release_dquot(struct dquot *dquot) | |||
3106 | 3123 | ||
3107 | static int ext4_mark_dquot_dirty(struct dquot *dquot) | 3124 | static int ext4_mark_dquot_dirty(struct dquot *dquot) |
3108 | { | 3125 | { |
3109 | /* Are we journalling quotas? */ | 3126 | /* Are we journaling quotas? */ |
3110 | if (EXT4_SB(dquot->dq_sb)->s_qf_names[USRQUOTA] || | 3127 | if (EXT4_SB(dquot->dq_sb)->s_qf_names[USRQUOTA] || |
3111 | EXT4_SB(dquot->dq_sb)->s_qf_names[GRPQUOTA]) { | 3128 | EXT4_SB(dquot->dq_sb)->s_qf_names[GRPQUOTA]) { |
3112 | dquot_mark_dquot_dirty(dquot); | 3129 | dquot_mark_dquot_dirty(dquot); |
@@ -3153,23 +3170,42 @@ static int ext4_quota_on(struct super_block *sb, int type, int format_id, | |||
3153 | 3170 | ||
3154 | if (!test_opt(sb, QUOTA)) | 3171 | if (!test_opt(sb, QUOTA)) |
3155 | return -EINVAL; | 3172 | return -EINVAL; |
3156 | /* Not journalling quota? */ | 3173 | /* When remounting, no checks are needed and in fact, path is NULL */ |
3157 | if ((!EXT4_SB(sb)->s_qf_names[USRQUOTA] && | 3174 | if (remount) |
3158 | !EXT4_SB(sb)->s_qf_names[GRPQUOTA]) || remount) | ||
3159 | return vfs_quota_on(sb, type, format_id, path, remount); | 3175 | return vfs_quota_on(sb, type, format_id, path, remount); |
3176 | |||
3160 | err = path_lookup(path, LOOKUP_FOLLOW, &nd); | 3177 | err = path_lookup(path, LOOKUP_FOLLOW, &nd); |
3161 | if (err) | 3178 | if (err) |
3162 | return err; | 3179 | return err; |
3180 | |||
3163 | /* Quotafile not on the same filesystem? */ | 3181 | /* Quotafile not on the same filesystem? */ |
3164 | if (nd.path.mnt->mnt_sb != sb) { | 3182 | if (nd.path.mnt->mnt_sb != sb) { |
3165 | path_put(&nd.path); | 3183 | path_put(&nd.path); |
3166 | return -EXDEV; | 3184 | return -EXDEV; |
3167 | } | 3185 | } |
3168 | /* Quotafile not of fs root? */ | 3186 | /* Journaling quota? */ |
3169 | if (nd.path.dentry->d_parent->d_inode != sb->s_root->d_inode) | 3187 | if (EXT4_SB(sb)->s_qf_names[type]) { |
3170 | printk(KERN_WARNING | 3188 | /* Quotafile not of fs root? */ |
3171 | "EXT4-fs: Quota file not on filesystem root. " | 3189 | if (nd.path.dentry->d_parent->d_inode != sb->s_root->d_inode) |
3172 | "Journalled quota will not work.\n"); | 3190 | printk(KERN_WARNING |
3191 | "EXT4-fs: Quota file not on filesystem root. " | ||
3192 | "Journaled quota will not work.\n"); | ||
3193 | } | ||
3194 | |||
3195 | /* | ||
3196 | * When we journal data on quota file, we have to flush journal to see | ||
3197 | * all updates to the file when we bypass pagecache... | ||
3198 | */ | ||
3199 | if (ext4_should_journal_data(nd.path.dentry->d_inode)) { | ||
3200 | /* | ||
3201 | * We don't need to lock updates but journal_flush() could | ||
3202 | * otherwise be livelocked... | ||
3203 | */ | ||
3204 | jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal); | ||
3205 | jbd2_journal_flush(EXT4_SB(sb)->s_journal); | ||
3206 | jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal); | ||
3207 | } | ||
3208 | |||
3173 | path_put(&nd.path); | 3209 | path_put(&nd.path); |
3174 | return vfs_quota_on(sb, type, format_id, path, remount); | 3210 | return vfs_quota_on(sb, type, format_id, path, remount); |
3175 | } | 3211 | } |
@@ -26,6 +26,8 @@ struct fdtable_defer { | |||
26 | }; | 26 | }; |
27 | 27 | ||
28 | int sysctl_nr_open __read_mostly = 1024*1024; | 28 | int sysctl_nr_open __read_mostly = 1024*1024; |
29 | int sysctl_nr_open_min = BITS_PER_LONG; | ||
30 | int sysctl_nr_open_max = 1024 * 1024; /* raised later */ | ||
29 | 31 | ||
30 | /* | 32 | /* |
31 | * We use this list to defer free fdtables that have vmalloced | 33 | * We use this list to defer free fdtables that have vmalloced |
@@ -119,8 +121,6 @@ static void copy_fdtable(struct fdtable *nfdt, struct fdtable *ofdt) | |||
119 | unsigned int cpy, set; | 121 | unsigned int cpy, set; |
120 | 122 | ||
121 | BUG_ON(nfdt->max_fds < ofdt->max_fds); | 123 | BUG_ON(nfdt->max_fds < ofdt->max_fds); |
122 | if (ofdt->max_fds == 0) | ||
123 | return; | ||
124 | 124 | ||
125 | cpy = ofdt->max_fds * sizeof(struct file *); | 125 | cpy = ofdt->max_fds * sizeof(struct file *); |
126 | set = (nfdt->max_fds - ofdt->max_fds) * sizeof(struct file *); | 126 | set = (nfdt->max_fds - ofdt->max_fds) * sizeof(struct file *); |
@@ -261,6 +261,139 @@ int expand_files(struct files_struct *files, int nr) | |||
261 | return expand_fdtable(files, nr); | 261 | return expand_fdtable(files, nr); |
262 | } | 262 | } |
263 | 263 | ||
264 | static int count_open_files(struct fdtable *fdt) | ||
265 | { | ||
266 | int size = fdt->max_fds; | ||
267 | int i; | ||
268 | |||
269 | /* Find the last open fd */ | ||
270 | for (i = size/(8*sizeof(long)); i > 0; ) { | ||
271 | if (fdt->open_fds->fds_bits[--i]) | ||
272 | break; | ||
273 | } | ||
274 | i = (i+1) * 8 * sizeof(long); | ||
275 | return i; | ||
276 | } | ||
277 | |||
278 | /* | ||
279 | * Allocate a new files structure and copy contents from the | ||
280 | * passed in files structure. | ||
281 | * errorp will be valid only when the returned files_struct is NULL. | ||
282 | */ | ||
283 | struct files_struct *dup_fd(struct files_struct *oldf, int *errorp) | ||
284 | { | ||
285 | struct files_struct *newf; | ||
286 | struct file **old_fds, **new_fds; | ||
287 | int open_files, size, i; | ||
288 | struct fdtable *old_fdt, *new_fdt; | ||
289 | |||
290 | *errorp = -ENOMEM; | ||
291 | newf = kmem_cache_alloc(files_cachep, GFP_KERNEL); | ||
292 | if (!newf) | ||
293 | goto out; | ||
294 | |||
295 | atomic_set(&newf->count, 1); | ||
296 | |||
297 | spin_lock_init(&newf->file_lock); | ||
298 | newf->next_fd = 0; | ||
299 | new_fdt = &newf->fdtab; | ||
300 | new_fdt->max_fds = NR_OPEN_DEFAULT; | ||
301 | new_fdt->close_on_exec = (fd_set *)&newf->close_on_exec_init; | ||
302 | new_fdt->open_fds = (fd_set *)&newf->open_fds_init; | ||
303 | new_fdt->fd = &newf->fd_array[0]; | ||
304 | INIT_RCU_HEAD(&new_fdt->rcu); | ||
305 | new_fdt->next = NULL; | ||
306 | |||
307 | spin_lock(&oldf->file_lock); | ||
308 | old_fdt = files_fdtable(oldf); | ||
309 | open_files = count_open_files(old_fdt); | ||
310 | |||
311 | /* | ||
312 | * Check whether we need to allocate a larger fd array and fd set. | ||
313 | */ | ||
314 | while (unlikely(open_files > new_fdt->max_fds)) { | ||
315 | spin_unlock(&oldf->file_lock); | ||
316 | |||
317 | if (new_fdt != &newf->fdtab) { | ||
318 | free_fdarr(new_fdt); | ||
319 | free_fdset(new_fdt); | ||
320 | kfree(new_fdt); | ||
321 | } | ||
322 | |||
323 | new_fdt = alloc_fdtable(open_files - 1); | ||
324 | if (!new_fdt) { | ||
325 | *errorp = -ENOMEM; | ||
326 | goto out_release; | ||
327 | } | ||
328 | |||
329 | /* beyond sysctl_nr_open; nothing to do */ | ||
330 | if (unlikely(new_fdt->max_fds < open_files)) { | ||
331 | free_fdarr(new_fdt); | ||
332 | free_fdset(new_fdt); | ||
333 | kfree(new_fdt); | ||
334 | *errorp = -EMFILE; | ||
335 | goto out_release; | ||
336 | } | ||
337 | |||
338 | /* | ||
339 | * Reacquire the oldf lock and a pointer to its fd table | ||
340 | * who knows it may have a new bigger fd table. We need | ||
341 | * the latest pointer. | ||
342 | */ | ||
343 | spin_lock(&oldf->file_lock); | ||
344 | old_fdt = files_fdtable(oldf); | ||
345 | open_files = count_open_files(old_fdt); | ||
346 | } | ||
347 | |||
348 | old_fds = old_fdt->fd; | ||
349 | new_fds = new_fdt->fd; | ||
350 | |||
351 | memcpy(new_fdt->open_fds->fds_bits, | ||
352 | old_fdt->open_fds->fds_bits, open_files/8); | ||
353 | memcpy(new_fdt->close_on_exec->fds_bits, | ||
354 | old_fdt->close_on_exec->fds_bits, open_files/8); | ||
355 | |||
356 | for (i = open_files; i != 0; i--) { | ||
357 | struct file *f = *old_fds++; | ||
358 | if (f) { | ||
359 | get_file(f); | ||
360 | } else { | ||
361 | /* | ||
362 | * The fd may be claimed in the fd bitmap but not yet | ||
363 | * instantiated in the files array if a sibling thread | ||
364 | * is partway through open(). So make sure that this | ||
365 | * fd is available to the new process. | ||
366 | */ | ||
367 | FD_CLR(open_files - i, new_fdt->open_fds); | ||
368 | } | ||
369 | rcu_assign_pointer(*new_fds++, f); | ||
370 | } | ||
371 | spin_unlock(&oldf->file_lock); | ||
372 | |||
373 | /* compute the remainder to be cleared */ | ||
374 | size = (new_fdt->max_fds - open_files) * sizeof(struct file *); | ||
375 | |||
376 | /* This is long word aligned thus could use a optimized version */ | ||
377 | memset(new_fds, 0, size); | ||
378 | |||
379 | if (new_fdt->max_fds > open_files) { | ||
380 | int left = (new_fdt->max_fds-open_files)/8; | ||
381 | int start = open_files / (8 * sizeof(unsigned long)); | ||
382 | |||
383 | memset(&new_fdt->open_fds->fds_bits[start], 0, left); | ||
384 | memset(&new_fdt->close_on_exec->fds_bits[start], 0, left); | ||
385 | } | ||
386 | |||
387 | rcu_assign_pointer(newf->fdt, new_fdt); | ||
388 | |||
389 | return newf; | ||
390 | |||
391 | out_release: | ||
392 | kmem_cache_free(files_cachep, newf); | ||
393 | out: | ||
394 | return NULL; | ||
395 | } | ||
396 | |||
264 | static void __devinit fdtable_defer_list_init(int cpu) | 397 | static void __devinit fdtable_defer_list_init(int cpu) |
265 | { | 398 | { |
266 | struct fdtable_defer *fddef = &per_cpu(fdtable_defer_list, cpu); | 399 | struct fdtable_defer *fddef = &per_cpu(fdtable_defer_list, cpu); |
@@ -274,4 +407,19 @@ void __init files_defer_init(void) | |||
274 | int i; | 407 | int i; |
275 | for_each_possible_cpu(i) | 408 | for_each_possible_cpu(i) |
276 | fdtable_defer_list_init(i); | 409 | fdtable_defer_list_init(i); |
410 | sysctl_nr_open_max = min((size_t)INT_MAX, ~(size_t)0/sizeof(void *)) & | ||
411 | -BITS_PER_LONG; | ||
277 | } | 412 | } |
413 | |||
414 | struct files_struct init_files = { | ||
415 | .count = ATOMIC_INIT(1), | ||
416 | .fdt = &init_files.fdtab, | ||
417 | .fdtab = { | ||
418 | .max_fds = NR_OPEN_DEFAULT, | ||
419 | .fd = &init_files.fd_array[0], | ||
420 | .close_on_exec = (fd_set *)&init_files.close_on_exec_init, | ||
421 | .open_fds = (fd_set *)&init_files.open_fds_init, | ||
422 | .rcu = RCU_HEAD_INIT, | ||
423 | }, | ||
424 | .file_lock = __SPIN_LOCK_UNLOCKED(init_task.file_lock), | ||
425 | }; | ||
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index fb77e0962132..43e99513334a 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c | |||
@@ -488,7 +488,12 @@ static struct fuse_conn *new_conn(struct super_block *sb) | |||
488 | err = bdi_init(&fc->bdi); | 488 | err = bdi_init(&fc->bdi); |
489 | if (err) | 489 | if (err) |
490 | goto error_kfree; | 490 | goto error_kfree; |
491 | err = bdi_register_dev(&fc->bdi, fc->dev); | 491 | if (sb->s_bdev) { |
492 | err = bdi_register(&fc->bdi, NULL, "%u:%u-fuseblk", | ||
493 | MAJOR(fc->dev), MINOR(fc->dev)); | ||
494 | } else { | ||
495 | err = bdi_register_dev(&fc->bdi, fc->dev); | ||
496 | } | ||
492 | if (err) | 497 | if (err) |
493 | goto error_bdi_destroy; | 498 | goto error_bdi_destroy; |
494 | /* | 499 | /* |
diff --git a/fs/gfs2/glops.c b/fs/gfs2/glops.c index d31badadef8f..07d84d16cda4 100644 --- a/fs/gfs2/glops.c +++ b/fs/gfs2/glops.c | |||
@@ -249,7 +249,7 @@ static int inode_go_lock(struct gfs2_holder *gh) | |||
249 | struct gfs2_inode *ip = gl->gl_object; | 249 | struct gfs2_inode *ip = gl->gl_object; |
250 | int error = 0; | 250 | int error = 0; |
251 | 251 | ||
252 | if (!ip) | 252 | if (!ip || (gh->gh_flags & GL_SKIP)) |
253 | return 0; | 253 | return 0; |
254 | 254 | ||
255 | if (test_bit(GIF_INVALID, &ip->i_flags)) { | 255 | if (test_bit(GIF_INVALID, &ip->i_flags)) { |
diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index 9c2c0b90b22a..eabe5eac41da 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h | |||
@@ -236,6 +236,7 @@ enum { | |||
236 | GIF_INVALID = 0, | 236 | GIF_INVALID = 0, |
237 | GIF_QD_LOCKED = 1, | 237 | GIF_QD_LOCKED = 1, |
238 | GIF_SW_PAGED = 3, | 238 | GIF_SW_PAGED = 3, |
239 | GIF_USER = 4, /* user inode, not metadata addr space */ | ||
239 | }; | 240 | }; |
240 | 241 | ||
241 | struct gfs2_dinode_host { | 242 | struct gfs2_dinode_host { |
diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index 3a9ef526c308..09453d057e41 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c | |||
@@ -47,8 +47,7 @@ static int iget_test(struct inode *inode, void *opaque) | |||
47 | struct gfs2_inode *ip = GFS2_I(inode); | 47 | struct gfs2_inode *ip = GFS2_I(inode); |
48 | u64 *no_addr = opaque; | 48 | u64 *no_addr = opaque; |
49 | 49 | ||
50 | if (ip->i_no_addr == *no_addr && | 50 | if (ip->i_no_addr == *no_addr && test_bit(GIF_USER, &ip->i_flags)) |
51 | inode->i_private != NULL) | ||
52 | return 1; | 51 | return 1; |
53 | 52 | ||
54 | return 0; | 53 | return 0; |
@@ -61,6 +60,7 @@ static int iget_set(struct inode *inode, void *opaque) | |||
61 | 60 | ||
62 | inode->i_ino = (unsigned long)*no_addr; | 61 | inode->i_ino = (unsigned long)*no_addr; |
63 | ip->i_no_addr = *no_addr; | 62 | ip->i_no_addr = *no_addr; |
63 | set_bit(GIF_USER, &ip->i_flags); | ||
64 | return 0; | 64 | return 0; |
65 | } | 65 | } |
66 | 66 | ||
@@ -86,7 +86,7 @@ static int iget_skip_test(struct inode *inode, void *opaque) | |||
86 | struct gfs2_inode *ip = GFS2_I(inode); | 86 | struct gfs2_inode *ip = GFS2_I(inode); |
87 | struct gfs2_skip_data *data = opaque; | 87 | struct gfs2_skip_data *data = opaque; |
88 | 88 | ||
89 | if (ip->i_no_addr == data->no_addr && inode->i_private != NULL){ | 89 | if (ip->i_no_addr == data->no_addr && test_bit(GIF_USER, &ip->i_flags)){ |
90 | if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)){ | 90 | if (inode->i_state & (I_FREEING|I_CLEAR|I_WILL_FREE)){ |
91 | data->skipped = 1; | 91 | data->skipped = 1; |
92 | return 0; | 92 | return 0; |
@@ -105,6 +105,7 @@ static int iget_skip_set(struct inode *inode, void *opaque) | |||
105 | return 1; | 105 | return 1; |
106 | inode->i_ino = (unsigned long)(data->no_addr); | 106 | inode->i_ino = (unsigned long)(data->no_addr); |
107 | ip->i_no_addr = data->no_addr; | 107 | ip->i_no_addr = data->no_addr; |
108 | set_bit(GIF_USER, &ip->i_flags); | ||
108 | return 0; | 109 | return 0; |
109 | } | 110 | } |
110 | 111 | ||
@@ -166,7 +167,7 @@ void gfs2_set_iop(struct inode *inode) | |||
166 | * Returns: A VFS inode, or an error | 167 | * Returns: A VFS inode, or an error |
167 | */ | 168 | */ |
168 | 169 | ||
169 | struct inode *gfs2_inode_lookup(struct super_block *sb, | 170 | struct inode *gfs2_inode_lookup(struct super_block *sb, |
170 | unsigned int type, | 171 | unsigned int type, |
171 | u64 no_addr, | 172 | u64 no_addr, |
172 | u64 no_formal_ino, int skip_freeing) | 173 | u64 no_formal_ino, int skip_freeing) |
@@ -187,7 +188,6 @@ struct inode *gfs2_inode_lookup(struct super_block *sb, | |||
187 | 188 | ||
188 | if (inode->i_state & I_NEW) { | 189 | if (inode->i_state & I_NEW) { |
189 | struct gfs2_sbd *sdp = GFS2_SB(inode); | 190 | struct gfs2_sbd *sdp = GFS2_SB(inode); |
190 | inode->i_private = ip; | ||
191 | ip->i_no_formal_ino = no_formal_ino; | 191 | ip->i_no_formal_ino = no_formal_ino; |
192 | 192 | ||
193 | error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, &ip->i_gl); | 193 | error = gfs2_glock_get(sdp, no_addr, &gfs2_inode_glops, CREATE, &ip->i_gl); |
diff --git a/fs/gfs2/meta_io.c b/fs/gfs2/meta_io.c index 85aea27b4a86..78d75f892f82 100644 --- a/fs/gfs2/meta_io.c +++ b/fs/gfs2/meta_io.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. | 2 | * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. |
3 | * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. | 3 | * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. |
4 | * | 4 | * |
5 | * This copyrighted material is made available to anyone wishing to use, | 5 | * This copyrighted material is made available to anyone wishing to use, |
6 | * modify, copy, or redistribute it subject to the terms and conditions | 6 | * modify, copy, or redistribute it subject to the terms and conditions |
@@ -69,13 +69,15 @@ static const struct address_space_operations aspace_aops = { | |||
69 | struct inode *gfs2_aspace_get(struct gfs2_sbd *sdp) | 69 | struct inode *gfs2_aspace_get(struct gfs2_sbd *sdp) |
70 | { | 70 | { |
71 | struct inode *aspace; | 71 | struct inode *aspace; |
72 | struct gfs2_inode *ip; | ||
72 | 73 | ||
73 | aspace = new_inode(sdp->sd_vfs); | 74 | aspace = new_inode(sdp->sd_vfs); |
74 | if (aspace) { | 75 | if (aspace) { |
75 | mapping_set_gfp_mask(aspace->i_mapping, GFP_NOFS); | 76 | mapping_set_gfp_mask(aspace->i_mapping, GFP_NOFS); |
76 | aspace->i_mapping->a_ops = &aspace_aops; | 77 | aspace->i_mapping->a_ops = &aspace_aops; |
77 | aspace->i_size = ~0ULL; | 78 | aspace->i_size = ~0ULL; |
78 | aspace->i_private = NULL; | 79 | ip = GFS2_I(aspace); |
80 | clear_bit(GIF_USER, &ip->i_flags); | ||
79 | insert_inode_hash(aspace); | 81 | insert_inode_hash(aspace); |
80 | } | 82 | } |
81 | return aspace; | 83 | return aspace; |
diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index ef9c6c4f80f6..b2028c82e8d1 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c | |||
@@ -142,8 +142,8 @@ static int init_names(struct gfs2_sbd *sdp, int silent) | |||
142 | if (!table[0]) | 142 | if (!table[0]) |
143 | table = sdp->sd_vfs->s_id; | 143 | table = sdp->sd_vfs->s_id; |
144 | 144 | ||
145 | snprintf(sdp->sd_proto_name, GFS2_FSNAME_LEN, "%s", proto); | 145 | strlcpy(sdp->sd_proto_name, proto, GFS2_FSNAME_LEN); |
146 | snprintf(sdp->sd_table_name, GFS2_FSNAME_LEN, "%s", table); | 146 | strlcpy(sdp->sd_table_name, table, GFS2_FSNAME_LEN); |
147 | 147 | ||
148 | table = sdp->sd_table_name; | 148 | table = sdp->sd_table_name; |
149 | while ((table = strchr(table, '/'))) | 149 | while ((table = strchr(table, '/'))) |
diff --git a/fs/gfs2/ops_super.c b/fs/gfs2/ops_super.c index 2278c68b7e35..0b7cc920eb89 100644 --- a/fs/gfs2/ops_super.c +++ b/fs/gfs2/ops_super.c | |||
@@ -1,6 +1,6 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. | 2 | * Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. |
3 | * Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. | 3 | * Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. |
4 | * | 4 | * |
5 | * This copyrighted material is made available to anyone wishing to use, | 5 | * This copyrighted material is made available to anyone wishing to use, |
6 | * modify, copy, or redistribute it subject to the terms and conditions | 6 | * modify, copy, or redistribute it subject to the terms and conditions |
@@ -52,7 +52,7 @@ static int gfs2_write_inode(struct inode *inode, int sync) | |||
52 | struct gfs2_inode *ip = GFS2_I(inode); | 52 | struct gfs2_inode *ip = GFS2_I(inode); |
53 | 53 | ||
54 | /* Check this is a "normal" inode */ | 54 | /* Check this is a "normal" inode */ |
55 | if (inode->i_private) { | 55 | if (test_bit(GIF_USER, &ip->i_flags)) { |
56 | if (current->flags & PF_MEMALLOC) | 56 | if (current->flags & PF_MEMALLOC) |
57 | return 0; | 57 | return 0; |
58 | if (sync) | 58 | if (sync) |
@@ -297,8 +297,9 @@ static int gfs2_remount_fs(struct super_block *sb, int *flags, char *data) | |||
297 | */ | 297 | */ |
298 | static void gfs2_drop_inode(struct inode *inode) | 298 | static void gfs2_drop_inode(struct inode *inode) |
299 | { | 299 | { |
300 | if (inode->i_private && inode->i_nlink) { | 300 | struct gfs2_inode *ip = GFS2_I(inode); |
301 | struct gfs2_inode *ip = GFS2_I(inode); | 301 | |
302 | if (test_bit(GIF_USER, &ip->i_flags) && inode->i_nlink) { | ||
302 | struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl; | 303 | struct gfs2_glock *gl = ip->i_iopen_gh.gh_gl; |
303 | if (gl && test_bit(GLF_DEMOTE, &gl->gl_flags)) | 304 | if (gl && test_bit(GLF_DEMOTE, &gl->gl_flags)) |
304 | clear_nlink(inode); | 305 | clear_nlink(inode); |
@@ -314,12 +315,13 @@ static void gfs2_drop_inode(struct inode *inode) | |||
314 | 315 | ||
315 | static void gfs2_clear_inode(struct inode *inode) | 316 | static void gfs2_clear_inode(struct inode *inode) |
316 | { | 317 | { |
318 | struct gfs2_inode *ip = GFS2_I(inode); | ||
319 | |||
317 | /* This tells us its a "real" inode and not one which only | 320 | /* This tells us its a "real" inode and not one which only |
318 | * serves to contain an address space (see rgrp.c, meta_io.c) | 321 | * serves to contain an address space (see rgrp.c, meta_io.c) |
319 | * which therefore doesn't have its own glocks. | 322 | * which therefore doesn't have its own glocks. |
320 | */ | 323 | */ |
321 | if (inode->i_private) { | 324 | if (test_bit(GIF_USER, &ip->i_flags)) { |
322 | struct gfs2_inode *ip = GFS2_I(inode); | ||
323 | ip->i_gl->gl_object = NULL; | 325 | ip->i_gl->gl_object = NULL; |
324 | gfs2_glock_schedule_for_reclaim(ip->i_gl); | 326 | gfs2_glock_schedule_for_reclaim(ip->i_gl); |
325 | gfs2_glock_put(ip->i_gl); | 327 | gfs2_glock_put(ip->i_gl); |
@@ -419,7 +421,7 @@ static void gfs2_delete_inode(struct inode *inode) | |||
419 | struct gfs2_holder gh; | 421 | struct gfs2_holder gh; |
420 | int error; | 422 | int error; |
421 | 423 | ||
422 | if (!inode->i_private) | 424 | if (!test_bit(GIF_USER, &ip->i_flags)) |
423 | goto out; | 425 | goto out; |
424 | 426 | ||
425 | error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh); | 427 | error = gfs2_glock_nq_init(ip->i_gl, LM_ST_EXCLUSIVE, 0, &gh); |
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c index 7e8f0b1d6c6e..6387523a3153 100644 --- a/fs/gfs2/rgrp.c +++ b/fs/gfs2/rgrp.c | |||
@@ -1495,7 +1495,7 @@ u64 gfs2_alloc_block(struct gfs2_inode *ip, unsigned int *n) | |||
1495 | 1495 | ||
1496 | al->al_alloced += *n; | 1496 | al->al_alloced += *n; |
1497 | 1497 | ||
1498 | gfs2_statfs_change(sdp, 0, -*n, 0); | 1498 | gfs2_statfs_change(sdp, 0, -(s64)*n, 0); |
1499 | gfs2_quota_change(ip, *n, ip->i_inode.i_uid, ip->i_inode.i_gid); | 1499 | gfs2_quota_change(ip, *n, ip->i_inode.i_uid, ip->i_inode.i_gid); |
1500 | 1500 | ||
1501 | spin_lock(&sdp->sd_rindex_spin); | 1501 | spin_lock(&sdp->sd_rindex_spin); |
diff --git a/fs/hppfs/Makefile b/fs/hppfs/Makefile index 8a1f50344368..3a982bd975d2 100644 --- a/fs/hppfs/Makefile +++ b/fs/hppfs/Makefile | |||
@@ -3,7 +3,4 @@ | |||
3 | # Licensed under the GPL | 3 | # Licensed under the GPL |
4 | # | 4 | # |
5 | 5 | ||
6 | hppfs-objs := hppfs.o | 6 | obj-$(CONFIG_HPPFS) += hppfs.o |
7 | |||
8 | obj-y = | ||
9 | obj-$(CONFIG_HPPFS) += $(hppfs-objs) | ||
diff --git a/fs/jbd2/commit.c b/fs/jbd2/commit.c index e0139786f717..4d99685fdce4 100644 --- a/fs/jbd2/commit.c +++ b/fs/jbd2/commit.c | |||
@@ -560,7 +560,9 @@ void jbd2_journal_commit_transaction(journal_t *journal) | |||
560 | * transaction! Now comes the tricky part: we need to write out | 560 | * transaction! Now comes the tricky part: we need to write out |
561 | * metadata. Loop over the transaction's entire buffer list: | 561 | * metadata. Loop over the transaction's entire buffer list: |
562 | */ | 562 | */ |
563 | spin_lock(&journal->j_state_lock); | ||
563 | commit_transaction->t_state = T_COMMIT; | 564 | commit_transaction->t_state = T_COMMIT; |
565 | spin_unlock(&journal->j_state_lock); | ||
564 | 566 | ||
565 | stats.u.run.rs_logging = jiffies; | 567 | stats.u.run.rs_logging = jiffies; |
566 | stats.u.run.rs_flushing = jbd2_time_diff(stats.u.run.rs_flushing, | 568 | stats.u.run.rs_flushing = jbd2_time_diff(stats.u.run.rs_flushing, |
diff --git a/fs/namei.c b/fs/namei.c index 32fd9655485b..c7e43536c49a 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -2003,18 +2003,22 @@ struct dentry *lookup_create(struct nameidata *nd, int is_dir) | |||
2003 | if (IS_ERR(dentry)) | 2003 | if (IS_ERR(dentry)) |
2004 | goto fail; | 2004 | goto fail; |
2005 | 2005 | ||
2006 | if (dentry->d_inode) | ||
2007 | goto eexist; | ||
2006 | /* | 2008 | /* |
2007 | * Special case - lookup gave negative, but... we had foo/bar/ | 2009 | * Special case - lookup gave negative, but... we had foo/bar/ |
2008 | * From the vfs_mknod() POV we just have a negative dentry - | 2010 | * From the vfs_mknod() POV we just have a negative dentry - |
2009 | * all is fine. Let's be bastards - you had / on the end, you've | 2011 | * all is fine. Let's be bastards - you had / on the end, you've |
2010 | * been asking for (non-existent) directory. -ENOENT for you. | 2012 | * been asking for (non-existent) directory. -ENOENT for you. |
2011 | */ | 2013 | */ |
2012 | if (!is_dir && nd->last.name[nd->last.len] && !dentry->d_inode) | 2014 | if (unlikely(!is_dir && nd->last.name[nd->last.len])) { |
2013 | goto enoent; | 2015 | dput(dentry); |
2016 | dentry = ERR_PTR(-ENOENT); | ||
2017 | } | ||
2014 | return dentry; | 2018 | return dentry; |
2015 | enoent: | 2019 | eexist: |
2016 | dput(dentry); | 2020 | dput(dentry); |
2017 | dentry = ERR_PTR(-ENOENT); | 2021 | dentry = ERR_PTR(-EEXIST); |
2018 | fail: | 2022 | fail: |
2019 | return dentry; | 2023 | return dentry; |
2020 | } | 2024 | } |
diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c index 5606ae3d72d3..c1e7c8300629 100644 --- a/fs/nfs/callback.c +++ b/fs/nfs/callback.c | |||
@@ -182,7 +182,7 @@ static int nfs_callback_authenticate(struct svc_rqst *rqstp) | |||
182 | if (clp == NULL) | 182 | if (clp == NULL) |
183 | return SVC_DROP; | 183 | return SVC_DROP; |
184 | 184 | ||
185 | dprintk("%s: %s NFSv4 callback!\n", __FUNCTION__, | 185 | dprintk("%s: %s NFSv4 callback!\n", __func__, |
186 | svc_print_addr(rqstp, buf, sizeof(buf))); | 186 | svc_print_addr(rqstp, buf, sizeof(buf))); |
187 | nfs_put_client(clp); | 187 | nfs_put_client(clp); |
188 | 188 | ||
diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c index 15f7785048d3..f7e83e23cf9f 100644 --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c | |||
@@ -57,7 +57,7 @@ out_iput: | |||
57 | out_putclient: | 57 | out_putclient: |
58 | nfs_put_client(clp); | 58 | nfs_put_client(clp); |
59 | out: | 59 | out: |
60 | dprintk("%s: exit with status = %d\n", __FUNCTION__, ntohl(res->status)); | 60 | dprintk("%s: exit with status = %d\n", __func__, ntohl(res->status)); |
61 | return res->status; | 61 | return res->status; |
62 | } | 62 | } |
63 | 63 | ||
@@ -98,6 +98,6 @@ __be32 nfs4_callback_recall(struct cb_recallargs *args, void *dummy) | |||
98 | nfs_put_client(prev); | 98 | nfs_put_client(prev); |
99 | } while (clp != NULL); | 99 | } while (clp != NULL); |
100 | out: | 100 | out: |
101 | dprintk("%s: exit with status = %d\n", __FUNCTION__, ntohl(res)); | 101 | dprintk("%s: exit with status = %d\n", __func__, ntohl(res)); |
102 | return res; | 102 | return res; |
103 | } | 103 | } |
diff --git a/fs/nfs/callback_xdr.c b/fs/nfs/callback_xdr.c index 13619d24f023..dd0ef34b5845 100644 --- a/fs/nfs/callback_xdr.c +++ b/fs/nfs/callback_xdr.c | |||
@@ -141,7 +141,7 @@ static __be32 decode_compound_hdr_arg(struct xdr_stream *xdr, struct cb_compound | |||
141 | /* We do not like overly long tags! */ | 141 | /* We do not like overly long tags! */ |
142 | if (hdr->taglen > CB_OP_TAGLEN_MAXSZ - 12) { | 142 | if (hdr->taglen > CB_OP_TAGLEN_MAXSZ - 12) { |
143 | printk("NFSv4 CALLBACK %s: client sent tag of length %u\n", | 143 | printk("NFSv4 CALLBACK %s: client sent tag of length %u\n", |
144 | __FUNCTION__, hdr->taglen); | 144 | __func__, hdr->taglen); |
145 | return htonl(NFS4ERR_RESOURCE); | 145 | return htonl(NFS4ERR_RESOURCE); |
146 | } | 146 | } |
147 | p = read_buf(xdr, 12); | 147 | p = read_buf(xdr, 12); |
@@ -151,7 +151,7 @@ static __be32 decode_compound_hdr_arg(struct xdr_stream *xdr, struct cb_compound | |||
151 | /* Check minor version is zero. */ | 151 | /* Check minor version is zero. */ |
152 | if (minor_version != 0) { | 152 | if (minor_version != 0) { |
153 | printk(KERN_WARNING "%s: NFSv4 server callback with illegal minor version %u!\n", | 153 | printk(KERN_WARNING "%s: NFSv4 server callback with illegal minor version %u!\n", |
154 | __FUNCTION__, minor_version); | 154 | __func__, minor_version); |
155 | return htonl(NFS4ERR_MINOR_VERS_MISMATCH); | 155 | return htonl(NFS4ERR_MINOR_VERS_MISMATCH); |
156 | } | 156 | } |
157 | hdr->callback_ident = ntohl(*p++); | 157 | hdr->callback_ident = ntohl(*p++); |
@@ -179,7 +179,7 @@ static __be32 decode_getattr_args(struct svc_rqst *rqstp, struct xdr_stream *xdr | |||
179 | args->addr = svc_addr(rqstp); | 179 | args->addr = svc_addr(rqstp); |
180 | status = decode_bitmap(xdr, args->bitmap); | 180 | status = decode_bitmap(xdr, args->bitmap); |
181 | out: | 181 | out: |
182 | dprintk("%s: exit with status = %d\n", __FUNCTION__, ntohl(status)); | 182 | dprintk("%s: exit with status = %d\n", __func__, ntohl(status)); |
183 | return status; | 183 | return status; |
184 | } | 184 | } |
185 | 185 | ||
@@ -200,7 +200,7 @@ static __be32 decode_recall_args(struct svc_rqst *rqstp, struct xdr_stream *xdr, | |||
200 | args->truncate = ntohl(*p); | 200 | args->truncate = ntohl(*p); |
201 | status = decode_fh(xdr, &args->fh); | 201 | status = decode_fh(xdr, &args->fh); |
202 | out: | 202 | out: |
203 | dprintk("%s: exit with status = %d\n", __FUNCTION__, ntohl(status)); | 203 | dprintk("%s: exit with status = %d\n", __func__, ntohl(status)); |
204 | return status; | 204 | return status; |
205 | } | 205 | } |
206 | 206 | ||
@@ -349,7 +349,7 @@ static __be32 encode_getattr_res(struct svc_rqst *rqstp, struct xdr_stream *xdr, | |||
349 | status = encode_attr_mtime(xdr, res->bitmap, &res->mtime); | 349 | status = encode_attr_mtime(xdr, res->bitmap, &res->mtime); |
350 | *savep = htonl((unsigned int)((char *)xdr->p - (char *)(savep+1))); | 350 | *savep = htonl((unsigned int)((char *)xdr->p - (char *)(savep+1))); |
351 | out: | 351 | out: |
352 | dprintk("%s: exit with status = %d\n", __FUNCTION__, ntohl(status)); | 352 | dprintk("%s: exit with status = %d\n", __func__, ntohl(status)); |
353 | return status; | 353 | return status; |
354 | } | 354 | } |
355 | 355 | ||
@@ -363,7 +363,7 @@ static __be32 process_op(struct svc_rqst *rqstp, | |||
363 | long maxlen; | 363 | long maxlen; |
364 | __be32 res; | 364 | __be32 res; |
365 | 365 | ||
366 | dprintk("%s: start\n", __FUNCTION__); | 366 | dprintk("%s: start\n", __func__); |
367 | status = decode_op_hdr(xdr_in, &op_nr); | 367 | status = decode_op_hdr(xdr_in, &op_nr); |
368 | if (likely(status == 0)) { | 368 | if (likely(status == 0)) { |
369 | switch (op_nr) { | 369 | switch (op_nr) { |
@@ -392,7 +392,7 @@ static __be32 process_op(struct svc_rqst *rqstp, | |||
392 | status = res; | 392 | status = res; |
393 | if (op->encode_res != NULL && status == 0) | 393 | if (op->encode_res != NULL && status == 0) |
394 | status = op->encode_res(rqstp, xdr_out, resp); | 394 | status = op->encode_res(rqstp, xdr_out, resp); |
395 | dprintk("%s: done, status = %d\n", __FUNCTION__, ntohl(status)); | 395 | dprintk("%s: done, status = %d\n", __func__, ntohl(status)); |
396 | return status; | 396 | return status; |
397 | } | 397 | } |
398 | 398 | ||
@@ -401,37 +401,37 @@ static __be32 process_op(struct svc_rqst *rqstp, | |||
401 | */ | 401 | */ |
402 | static __be32 nfs4_callback_compound(struct svc_rqst *rqstp, void *argp, void *resp) | 402 | static __be32 nfs4_callback_compound(struct svc_rqst *rqstp, void *argp, void *resp) |
403 | { | 403 | { |
404 | struct cb_compound_hdr_arg hdr_arg; | 404 | struct cb_compound_hdr_arg hdr_arg = { 0 }; |
405 | struct cb_compound_hdr_res hdr_res; | 405 | struct cb_compound_hdr_res hdr_res = { NULL }; |
406 | struct xdr_stream xdr_in, xdr_out; | 406 | struct xdr_stream xdr_in, xdr_out; |
407 | __be32 *p; | 407 | __be32 *p; |
408 | __be32 status; | 408 | __be32 status; |
409 | unsigned int nops = 1; | 409 | unsigned int nops = 0; |
410 | 410 | ||
411 | dprintk("%s: start\n", __FUNCTION__); | 411 | dprintk("%s: start\n", __func__); |
412 | 412 | ||
413 | xdr_init_decode(&xdr_in, &rqstp->rq_arg, rqstp->rq_arg.head[0].iov_base); | 413 | xdr_init_decode(&xdr_in, &rqstp->rq_arg, rqstp->rq_arg.head[0].iov_base); |
414 | 414 | ||
415 | p = (__be32*)((char *)rqstp->rq_res.head[0].iov_base + rqstp->rq_res.head[0].iov_len); | 415 | p = (__be32*)((char *)rqstp->rq_res.head[0].iov_base + rqstp->rq_res.head[0].iov_len); |
416 | xdr_init_encode(&xdr_out, &rqstp->rq_res, p); | 416 | xdr_init_encode(&xdr_out, &rqstp->rq_res, p); |
417 | 417 | ||
418 | decode_compound_hdr_arg(&xdr_in, &hdr_arg); | 418 | status = decode_compound_hdr_arg(&xdr_in, &hdr_arg); |
419 | if (status == __constant_htonl(NFS4ERR_RESOURCE)) | ||
420 | return rpc_garbage_args; | ||
421 | |||
419 | hdr_res.taglen = hdr_arg.taglen; | 422 | hdr_res.taglen = hdr_arg.taglen; |
420 | hdr_res.tag = hdr_arg.tag; | 423 | hdr_res.tag = hdr_arg.tag; |
421 | hdr_res.nops = NULL; | 424 | if (encode_compound_hdr_res(&xdr_out, &hdr_res) != 0) |
422 | encode_compound_hdr_res(&xdr_out, &hdr_res); | 425 | return rpc_system_err; |
423 | 426 | ||
424 | for (;;) { | 427 | while (status == 0 && nops != hdr_arg.nops) { |
425 | status = process_op(rqstp, &xdr_in, argp, &xdr_out, resp); | 428 | status = process_op(rqstp, &xdr_in, argp, &xdr_out, resp); |
426 | if (status != 0) | ||
427 | break; | ||
428 | if (nops == hdr_arg.nops) | ||
429 | break; | ||
430 | nops++; | 429 | nops++; |
431 | } | 430 | } |
431 | |||
432 | *hdr_res.status = status; | 432 | *hdr_res.status = status; |
433 | *hdr_res.nops = htonl(nops); | 433 | *hdr_res.nops = htonl(nops); |
434 | dprintk("%s: done, status = %u\n", __FUNCTION__, ntohl(status)); | 434 | dprintk("%s: done, status = %u\n", __func__, ntohl(status)); |
435 | return rpc_success; | 435 | return rpc_success; |
436 | } | 436 | } |
437 | 437 | ||
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 89ac5bb0401c..f2a092ca69b5 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c | |||
@@ -488,7 +488,7 @@ static int nfs_create_rpc_client(struct nfs_client *clp, | |||
488 | clnt = rpc_create(&args); | 488 | clnt = rpc_create(&args); |
489 | if (IS_ERR(clnt)) { | 489 | if (IS_ERR(clnt)) { |
490 | dprintk("%s: cannot create RPC client. Error = %ld\n", | 490 | dprintk("%s: cannot create RPC client. Error = %ld\n", |
491 | __FUNCTION__, PTR_ERR(clnt)); | 491 | __func__, PTR_ERR(clnt)); |
492 | return PTR_ERR(clnt); | 492 | return PTR_ERR(clnt); |
493 | } | 493 | } |
494 | 494 | ||
@@ -576,7 +576,7 @@ static int nfs_init_server_rpcclient(struct nfs_server *server, | |||
576 | 576 | ||
577 | server->client = rpc_clone_client(clp->cl_rpcclient); | 577 | server->client = rpc_clone_client(clp->cl_rpcclient); |
578 | if (IS_ERR(server->client)) { | 578 | if (IS_ERR(server->client)) { |
579 | dprintk("%s: couldn't create rpc_client!\n", __FUNCTION__); | 579 | dprintk("%s: couldn't create rpc_client!\n", __func__); |
580 | return PTR_ERR(server->client); | 580 | return PTR_ERR(server->client); |
581 | } | 581 | } |
582 | 582 | ||
@@ -590,7 +590,7 @@ static int nfs_init_server_rpcclient(struct nfs_server *server, | |||
590 | 590 | ||
591 | auth = rpcauth_create(pseudoflavour, server->client); | 591 | auth = rpcauth_create(pseudoflavour, server->client); |
592 | if (IS_ERR(auth)) { | 592 | if (IS_ERR(auth)) { |
593 | dprintk("%s: couldn't create credcache!\n", __FUNCTION__); | 593 | dprintk("%s: couldn't create credcache!\n", __func__); |
594 | return PTR_ERR(auth); | 594 | return PTR_ERR(auth); |
595 | } | 595 | } |
596 | } | 596 | } |
@@ -985,7 +985,7 @@ static int nfs4_init_client(struct nfs_client *clp, | |||
985 | error = nfs_idmap_new(clp); | 985 | error = nfs_idmap_new(clp); |
986 | if (error < 0) { | 986 | if (error < 0) { |
987 | dprintk("%s: failed to create idmapper. Error = %d\n", | 987 | dprintk("%s: failed to create idmapper. Error = %d\n", |
988 | __FUNCTION__, error); | 988 | __func__, error); |
989 | goto error; | 989 | goto error; |
990 | } | 990 | } |
991 | __set_bit(NFS_CS_IDMAP, &clp->cl_res_state); | 991 | __set_bit(NFS_CS_IDMAP, &clp->cl_res_state); |
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index 00a5e4405e16..cc563cfa6940 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c | |||
@@ -60,7 +60,7 @@ static int nfs_delegation_claim_locks(struct nfs_open_context *ctx, struct nfs4_ | |||
60 | switch (status) { | 60 | switch (status) { |
61 | default: | 61 | default: |
62 | printk(KERN_ERR "%s: unhandled error %d.\n", | 62 | printk(KERN_ERR "%s: unhandled error %d.\n", |
63 | __FUNCTION__, status); | 63 | __func__, status); |
64 | case -NFS4ERR_EXPIRED: | 64 | case -NFS4ERR_EXPIRED: |
65 | /* kill_proc(fl->fl_pid, SIGLOST, 1); */ | 65 | /* kill_proc(fl->fl_pid, SIGLOST, 1); */ |
66 | case -NFS4ERR_STALE_CLIENTID: | 66 | case -NFS4ERR_STALE_CLIENTID: |
@@ -186,7 +186,7 @@ int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct | |||
186 | */ | 186 | */ |
187 | dfprintk(FILE, "%s: server %s handed out " | 187 | dfprintk(FILE, "%s: server %s handed out " |
188 | "a duplicate delegation!\n", | 188 | "a duplicate delegation!\n", |
189 | __FUNCTION__, clp->cl_hostname); | 189 | __func__, clp->cl_hostname); |
190 | if (delegation->type <= nfsi->delegation->type) { | 190 | if (delegation->type <= nfsi->delegation->type) { |
191 | freeme = delegation; | 191 | freeme = delegation; |
192 | delegation = NULL; | 192 | delegation = NULL; |
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index f288b3ecab4a..58d43daec084 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c | |||
@@ -180,7 +180,7 @@ int nfs_readdir_filler(nfs_readdir_descriptor_t *desc, struct page *page) | |||
180 | int error; | 180 | int error; |
181 | 181 | ||
182 | dfprintk(DIRCACHE, "NFS: %s: reading cookie %Lu into page %lu\n", | 182 | dfprintk(DIRCACHE, "NFS: %s: reading cookie %Lu into page %lu\n", |
183 | __FUNCTION__, (long long)desc->entry->cookie, | 183 | __func__, (long long)desc->entry->cookie, |
184 | page->index); | 184 | page->index); |
185 | 185 | ||
186 | again: | 186 | again: |
@@ -256,7 +256,7 @@ int find_dirent(nfs_readdir_descriptor_t *desc) | |||
256 | 256 | ||
257 | while((status = dir_decode(desc)) == 0) { | 257 | while((status = dir_decode(desc)) == 0) { |
258 | dfprintk(DIRCACHE, "NFS: %s: examining cookie %Lu\n", | 258 | dfprintk(DIRCACHE, "NFS: %s: examining cookie %Lu\n", |
259 | __FUNCTION__, (unsigned long long)entry->cookie); | 259 | __func__, (unsigned long long)entry->cookie); |
260 | if (entry->prev_cookie == *desc->dir_cookie) | 260 | if (entry->prev_cookie == *desc->dir_cookie) |
261 | break; | 261 | break; |
262 | if (loop_count++ > 200) { | 262 | if (loop_count++ > 200) { |
@@ -315,7 +315,7 @@ int find_dirent_page(nfs_readdir_descriptor_t *desc) | |||
315 | int status; | 315 | int status; |
316 | 316 | ||
317 | dfprintk(DIRCACHE, "NFS: %s: searching page %ld for target %Lu\n", | 317 | dfprintk(DIRCACHE, "NFS: %s: searching page %ld for target %Lu\n", |
318 | __FUNCTION__, desc->page_index, | 318 | __func__, desc->page_index, |
319 | (long long) *desc->dir_cookie); | 319 | (long long) *desc->dir_cookie); |
320 | 320 | ||
321 | /* If we find the page in the page_cache, we cannot be sure | 321 | /* If we find the page in the page_cache, we cannot be sure |
@@ -339,7 +339,7 @@ int find_dirent_page(nfs_readdir_descriptor_t *desc) | |||
339 | if (status < 0) | 339 | if (status < 0) |
340 | dir_page_release(desc); | 340 | dir_page_release(desc); |
341 | out: | 341 | out: |
342 | dfprintk(DIRCACHE, "NFS: %s: returns %d\n", __FUNCTION__, status); | 342 | dfprintk(DIRCACHE, "NFS: %s: returns %d\n", __func__, status); |
343 | return status; | 343 | return status; |
344 | } | 344 | } |
345 | 345 | ||
@@ -380,7 +380,7 @@ int readdir_search_pagecache(nfs_readdir_descriptor_t *desc) | |||
380 | } | 380 | } |
381 | } | 381 | } |
382 | 382 | ||
383 | dfprintk(DIRCACHE, "NFS: %s: returns %d\n", __FUNCTION__, res); | 383 | dfprintk(DIRCACHE, "NFS: %s: returns %d\n", __func__, res); |
384 | return res; | 384 | return res; |
385 | } | 385 | } |
386 | 386 | ||
@@ -506,7 +506,7 @@ int uncached_readdir(nfs_readdir_descriptor_t *desc, void *dirent, | |||
506 | desc->entry->eof = 0; | 506 | desc->entry->eof = 0; |
507 | out: | 507 | out: |
508 | dfprintk(DIRCACHE, "NFS: %s: returns %d\n", | 508 | dfprintk(DIRCACHE, "NFS: %s: returns %d\n", |
509 | __FUNCTION__, status); | 509 | __func__, status); |
510 | return status; | 510 | return status; |
511 | out_release: | 511 | out_release: |
512 | dir_page_release(desc); | 512 | dir_page_release(desc); |
@@ -780,7 +780,7 @@ static int nfs_lookup_revalidate(struct dentry * dentry, struct nameidata *nd) | |||
780 | 780 | ||
781 | if (is_bad_inode(inode)) { | 781 | if (is_bad_inode(inode)) { |
782 | dfprintk(LOOKUPCACHE, "%s: %s/%s has dud inode\n", | 782 | dfprintk(LOOKUPCACHE, "%s: %s/%s has dud inode\n", |
783 | __FUNCTION__, dentry->d_parent->d_name.name, | 783 | __func__, dentry->d_parent->d_name.name, |
784 | dentry->d_name.name); | 784 | dentry->d_name.name); |
785 | goto out_bad; | 785 | goto out_bad; |
786 | } | 786 | } |
@@ -808,7 +808,7 @@ static int nfs_lookup_revalidate(struct dentry * dentry, struct nameidata *nd) | |||
808 | unlock_kernel(); | 808 | unlock_kernel(); |
809 | dput(parent); | 809 | dput(parent); |
810 | dfprintk(LOOKUPCACHE, "NFS: %s(%s/%s) is valid\n", | 810 | dfprintk(LOOKUPCACHE, "NFS: %s(%s/%s) is valid\n", |
811 | __FUNCTION__, dentry->d_parent->d_name.name, | 811 | __func__, dentry->d_parent->d_name.name, |
812 | dentry->d_name.name); | 812 | dentry->d_name.name); |
813 | return 1; | 813 | return 1; |
814 | out_zap_parent: | 814 | out_zap_parent: |
@@ -827,7 +827,7 @@ out_zap_parent: | |||
827 | unlock_kernel(); | 827 | unlock_kernel(); |
828 | dput(parent); | 828 | dput(parent); |
829 | dfprintk(LOOKUPCACHE, "NFS: %s(%s/%s) is invalid\n", | 829 | dfprintk(LOOKUPCACHE, "NFS: %s(%s/%s) is invalid\n", |
830 | __FUNCTION__, dentry->d_parent->d_name.name, | 830 | __func__, dentry->d_parent->d_name.name, |
831 | dentry->d_name.name); | 831 | dentry->d_name.name); |
832 | return 0; | 832 | return 0; |
833 | } | 833 | } |
diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 3536b01164f9..d84a3d8f32af 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c | |||
@@ -526,7 +526,7 @@ static int do_vfs_lock(struct file *file, struct file_lock *fl) | |||
526 | if (res < 0) | 526 | if (res < 0) |
527 | dprintk(KERN_WARNING "%s: VFS is out of sync with lock manager" | 527 | dprintk(KERN_WARNING "%s: VFS is out of sync with lock manager" |
528 | " - error %d!\n", | 528 | " - error %d!\n", |
529 | __FUNCTION__, res); | 529 | __func__, res); |
530 | return res; | 530 | return res; |
531 | } | 531 | } |
532 | 532 | ||
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 5cb3345eb694..596c5d8e86f4 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -541,8 +541,7 @@ static void __put_nfs_open_context(struct nfs_open_context *ctx, int wait) | |||
541 | } | 541 | } |
542 | if (ctx->cred != NULL) | 542 | if (ctx->cred != NULL) |
543 | put_rpccred(ctx->cred); | 543 | put_rpccred(ctx->cred); |
544 | dput(ctx->path.dentry); | 544 | path_put(&ctx->path); |
545 | mntput(ctx->path.mnt); | ||
546 | kfree(ctx); | 545 | kfree(ctx); |
547 | } | 546 | } |
548 | 547 | ||
@@ -707,6 +706,13 @@ int nfs_attribute_timeout(struct inode *inode) | |||
707 | 706 | ||
708 | if (nfs_have_delegation(inode, FMODE_READ)) | 707 | if (nfs_have_delegation(inode, FMODE_READ)) |
709 | return 0; | 708 | return 0; |
709 | /* | ||
710 | * Special case: if the attribute timeout is set to 0, then always | ||
711 | * treat the cache as having expired (unless holding | ||
712 | * a delegation). | ||
713 | */ | ||
714 | if (nfsi->attrtimeo == 0) | ||
715 | return 1; | ||
710 | return !time_in_range(jiffies, nfsi->read_cache_jiffies, nfsi->read_cache_jiffies + nfsi->attrtimeo); | 716 | return !time_in_range(jiffies, nfsi->read_cache_jiffies, nfsi->read_cache_jiffies + nfsi->attrtimeo); |
711 | } | 717 | } |
712 | 718 | ||
@@ -995,7 +1001,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) | |||
995 | unsigned long now = jiffies; | 1001 | unsigned long now = jiffies; |
996 | 1002 | ||
997 | dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n", | 1003 | dfprintk(VFS, "NFS: %s(%s/%ld ct=%d info=0x%x)\n", |
998 | __FUNCTION__, inode->i_sb->s_id, inode->i_ino, | 1004 | __func__, inode->i_sb->s_id, inode->i_ino, |
999 | atomic_read(&inode->i_count), fattr->valid); | 1005 | atomic_read(&inode->i_count), fattr->valid); |
1000 | 1006 | ||
1001 | if (nfsi->fileid != fattr->fileid) | 1007 | if (nfsi->fileid != fattr->fileid) |
@@ -1119,7 +1125,7 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr) | |||
1119 | * Big trouble! The inode has become a different object. | 1125 | * Big trouble! The inode has become a different object. |
1120 | */ | 1126 | */ |
1121 | printk(KERN_DEBUG "%s: inode %ld mode changed, %07o to %07o\n", | 1127 | printk(KERN_DEBUG "%s: inode %ld mode changed, %07o to %07o\n", |
1122 | __FUNCTION__, inode->i_ino, inode->i_mode, fattr->mode); | 1128 | __func__, inode->i_ino, inode->i_mode, fattr->mode); |
1123 | out_err: | 1129 | out_err: |
1124 | /* | 1130 | /* |
1125 | * No need to worry about unhashing the dentry, as the | 1131 | * No need to worry about unhashing the dentry, as the |
diff --git a/fs/nfs/namespace.c b/fs/nfs/namespace.c index af4d0f1e402c..2f285ef76399 100644 --- a/fs/nfs/namespace.c +++ b/fs/nfs/namespace.c | |||
@@ -106,7 +106,7 @@ static void * nfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
106 | dprintk("--> nfs_follow_mountpoint()\n"); | 106 | dprintk("--> nfs_follow_mountpoint()\n"); |
107 | 107 | ||
108 | BUG_ON(IS_ROOT(dentry)); | 108 | BUG_ON(IS_ROOT(dentry)); |
109 | dprintk("%s: enter\n", __FUNCTION__); | 109 | dprintk("%s: enter\n", __func__); |
110 | dput(nd->path.dentry); | 110 | dput(nd->path.dentry); |
111 | nd->path.dentry = dget(dentry); | 111 | nd->path.dentry = dget(dentry); |
112 | 112 | ||
@@ -137,13 +137,12 @@ static void * nfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
137 | goto out_follow; | 137 | goto out_follow; |
138 | goto out_err; | 138 | goto out_err; |
139 | } | 139 | } |
140 | mntput(nd->path.mnt); | 140 | path_put(&nd->path); |
141 | dput(nd->path.dentry); | ||
142 | nd->path.mnt = mnt; | 141 | nd->path.mnt = mnt; |
143 | nd->path.dentry = dget(mnt->mnt_root); | 142 | nd->path.dentry = dget(mnt->mnt_root); |
144 | schedule_delayed_work(&nfs_automount_task, nfs_mountpoint_expiry_timeout); | 143 | schedule_delayed_work(&nfs_automount_task, nfs_mountpoint_expiry_timeout); |
145 | out: | 144 | out: |
146 | dprintk("%s: done, returned %d\n", __FUNCTION__, err); | 145 | dprintk("%s: done, returned %d\n", __func__, err); |
147 | 146 | ||
148 | dprintk("<-- nfs_follow_mountpoint() = %d\n", err); | 147 | dprintk("<-- nfs_follow_mountpoint() = %d\n", err); |
149 | return ERR_PTR(err); | 148 | return ERR_PTR(err); |
@@ -230,7 +229,7 @@ static struct vfsmount *nfs_do_submount(const struct vfsmount *mnt_parent, | |||
230 | 229 | ||
231 | dprintk("--> nfs_do_submount()\n"); | 230 | dprintk("--> nfs_do_submount()\n"); |
232 | 231 | ||
233 | dprintk("%s: submounting on %s/%s\n", __FUNCTION__, | 232 | dprintk("%s: submounting on %s/%s\n", __func__, |
234 | dentry->d_parent->d_name.name, | 233 | dentry->d_parent->d_name.name, |
235 | dentry->d_name.name); | 234 | dentry->d_name.name); |
236 | if (page == NULL) | 235 | if (page == NULL) |
@@ -243,7 +242,7 @@ static struct vfsmount *nfs_do_submount(const struct vfsmount *mnt_parent, | |||
243 | free_page: | 242 | free_page: |
244 | free_page((unsigned long)page); | 243 | free_page((unsigned long)page); |
245 | out: | 244 | out: |
246 | dprintk("%s: done\n", __FUNCTION__); | 245 | dprintk("%s: done\n", __func__); |
247 | 246 | ||
248 | dprintk("<-- nfs_do_submount() = %p\n", mnt); | 247 | dprintk("<-- nfs_do_submount() = %p\n", mnt); |
249 | return mnt; | 248 | return mnt; |
diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c index 549dbce714a4..c3523ad03ed1 100644 --- a/fs/nfs/nfs3proc.c +++ b/fs/nfs/nfs3proc.c | |||
@@ -63,15 +63,15 @@ do_proc_get_root(struct rpc_clnt *client, struct nfs_fh *fhandle, | |||
63 | }; | 63 | }; |
64 | int status; | 64 | int status; |
65 | 65 | ||
66 | dprintk("%s: call fsinfo\n", __FUNCTION__); | 66 | dprintk("%s: call fsinfo\n", __func__); |
67 | nfs_fattr_init(info->fattr); | 67 | nfs_fattr_init(info->fattr); |
68 | status = rpc_call_sync(client, &msg, 0); | 68 | status = rpc_call_sync(client, &msg, 0); |
69 | dprintk("%s: reply fsinfo: %d\n", __FUNCTION__, status); | 69 | dprintk("%s: reply fsinfo: %d\n", __func__, status); |
70 | if (!(info->fattr->valid & NFS_ATTR_FATTR)) { | 70 | if (!(info->fattr->valid & NFS_ATTR_FATTR)) { |
71 | msg.rpc_proc = &nfs3_procedures[NFS3PROC_GETATTR]; | 71 | msg.rpc_proc = &nfs3_procedures[NFS3PROC_GETATTR]; |
72 | msg.rpc_resp = info->fattr; | 72 | msg.rpc_resp = info->fattr; |
73 | status = rpc_call_sync(client, &msg, 0); | 73 | status = rpc_call_sync(client, &msg, 0); |
74 | dprintk("%s: reply getattr: %d\n", __FUNCTION__, status); | 74 | dprintk("%s: reply getattr: %d\n", __func__, status); |
75 | } | 75 | } |
76 | return status; | 76 | return status; |
77 | } | 77 | } |
diff --git a/fs/nfs/nfs4_fs.h b/fs/nfs/nfs4_fs.h index bd1b9d663fb9..ea790645fda6 100644 --- a/fs/nfs/nfs4_fs.h +++ b/fs/nfs/nfs4_fs.h | |||
@@ -206,7 +206,6 @@ struct rpc_cred *nfs4_get_renew_cred(struct nfs_client *clp); | |||
206 | 206 | ||
207 | extern struct nfs4_state_owner * nfs4_get_state_owner(struct nfs_server *, struct rpc_cred *); | 207 | extern struct nfs4_state_owner * nfs4_get_state_owner(struct nfs_server *, struct rpc_cred *); |
208 | extern void nfs4_put_state_owner(struct nfs4_state_owner *); | 208 | extern void nfs4_put_state_owner(struct nfs4_state_owner *); |
209 | extern void nfs4_drop_state_owner(struct nfs4_state_owner *); | ||
210 | extern struct nfs4_state * nfs4_get_open_state(struct inode *, struct nfs4_state_owner *); | 209 | extern struct nfs4_state * nfs4_get_open_state(struct inode *, struct nfs4_state_owner *); |
211 | extern void nfs4_put_open_state(struct nfs4_state *); | 210 | extern void nfs4_put_open_state(struct nfs4_state *); |
212 | extern void nfs4_close_state(struct path *, struct nfs4_state *, mode_t); | 211 | extern void nfs4_close_state(struct path *, struct nfs4_state *, mode_t); |
diff --git a/fs/nfs/nfs4namespace.c b/fs/nfs/nfs4namespace.c index 5f9ba41ed5bf..b112857301f7 100644 --- a/fs/nfs/nfs4namespace.c +++ b/fs/nfs/nfs4namespace.c | |||
@@ -86,7 +86,7 @@ static int nfs4_validate_fspath(const struct vfsmount *mnt_parent, | |||
86 | 86 | ||
87 | if (strncmp(path, fs_path, strlen(fs_path)) != 0) { | 87 | if (strncmp(path, fs_path, strlen(fs_path)) != 0) { |
88 | dprintk("%s: path %s does not begin with fsroot %s\n", | 88 | dprintk("%s: path %s does not begin with fsroot %s\n", |
89 | __FUNCTION__, path, fs_path); | 89 | __func__, path, fs_path); |
90 | return -ENOENT; | 90 | return -ENOENT; |
91 | } | 91 | } |
92 | 92 | ||
@@ -134,7 +134,7 @@ static struct vfsmount *nfs_follow_referral(const struct vfsmount *mnt_parent, | |||
134 | if (locations == NULL || locations->nlocations <= 0) | 134 | if (locations == NULL || locations->nlocations <= 0) |
135 | goto out; | 135 | goto out; |
136 | 136 | ||
137 | dprintk("%s: referral at %s/%s\n", __FUNCTION__, | 137 | dprintk("%s: referral at %s/%s\n", __func__, |
138 | dentry->d_parent->d_name.name, dentry->d_name.name); | 138 | dentry->d_parent->d_name.name, dentry->d_name.name); |
139 | 139 | ||
140 | page = (char *) __get_free_page(GFP_USER); | 140 | page = (char *) __get_free_page(GFP_USER); |
@@ -204,7 +204,7 @@ static struct vfsmount *nfs_follow_referral(const struct vfsmount *mnt_parent, | |||
204 | out: | 204 | out: |
205 | free_page((unsigned long) page); | 205 | free_page((unsigned long) page); |
206 | free_page((unsigned long) page2); | 206 | free_page((unsigned long) page2); |
207 | dprintk("%s: done\n", __FUNCTION__); | 207 | dprintk("%s: done\n", __func__); |
208 | return mnt; | 208 | return mnt; |
209 | } | 209 | } |
210 | 210 | ||
@@ -223,7 +223,7 @@ struct vfsmount *nfs_do_refmount(const struct vfsmount *mnt_parent, struct dentr | |||
223 | int err; | 223 | int err; |
224 | 224 | ||
225 | /* BUG_ON(IS_ROOT(dentry)); */ | 225 | /* BUG_ON(IS_ROOT(dentry)); */ |
226 | dprintk("%s: enter\n", __FUNCTION__); | 226 | dprintk("%s: enter\n", __func__); |
227 | 227 | ||
228 | page = alloc_page(GFP_KERNEL); | 228 | page = alloc_page(GFP_KERNEL); |
229 | if (page == NULL) | 229 | if (page == NULL) |
@@ -238,7 +238,7 @@ struct vfsmount *nfs_do_refmount(const struct vfsmount *mnt_parent, struct dentr | |||
238 | 238 | ||
239 | parent = dget_parent(dentry); | 239 | parent = dget_parent(dentry); |
240 | dprintk("%s: getting locations for %s/%s\n", | 240 | dprintk("%s: getting locations for %s/%s\n", |
241 | __FUNCTION__, parent->d_name.name, dentry->d_name.name); | 241 | __func__, parent->d_name.name, dentry->d_name.name); |
242 | 242 | ||
243 | err = nfs4_proc_fs_locations(parent->d_inode, &dentry->d_name, fs_locations, page); | 243 | err = nfs4_proc_fs_locations(parent->d_inode, &dentry->d_name, fs_locations, page); |
244 | dput(parent); | 244 | dput(parent); |
@@ -252,6 +252,6 @@ out_free: | |||
252 | __free_page(page); | 252 | __free_page(page); |
253 | kfree(fs_locations); | 253 | kfree(fs_locations); |
254 | out: | 254 | out: |
255 | dprintk("%s: done\n", __FUNCTION__); | 255 | dprintk("%s: done\n", __func__); |
256 | return mnt; | 256 | return mnt; |
257 | } | 257 | } |
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index dbc09271af02..1293e0acd82b 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c | |||
@@ -73,7 +73,7 @@ int nfs4_map_errors(int err) | |||
73 | { | 73 | { |
74 | if (err < -1000) { | 74 | if (err < -1000) { |
75 | dprintk("%s could not handle NFSv4 error %d\n", | 75 | dprintk("%s could not handle NFSv4 error %d\n", |
76 | __FUNCTION__, -err); | 76 | __func__, -err); |
77 | return -EIO; | 77 | return -EIO; |
78 | } | 78 | } |
79 | return err; | 79 | return err; |
@@ -306,8 +306,7 @@ static void nfs4_opendata_free(struct kref *kref) | |||
306 | nfs4_put_open_state(p->state); | 306 | nfs4_put_open_state(p->state); |
307 | nfs4_put_state_owner(p->owner); | 307 | nfs4_put_state_owner(p->owner); |
308 | dput(p->dir); | 308 | dput(p->dir); |
309 | dput(p->path.dentry); | 309 | path_put(&p->path); |
310 | mntput(p->path.mnt); | ||
311 | kfree(p); | 310 | kfree(p); |
312 | } | 311 | } |
313 | 312 | ||
@@ -1210,8 +1209,7 @@ static void nfs4_free_closedata(void *data) | |||
1210 | nfs4_put_open_state(calldata->state); | 1209 | nfs4_put_open_state(calldata->state); |
1211 | nfs_free_seqid(calldata->arg.seqid); | 1210 | nfs_free_seqid(calldata->arg.seqid); |
1212 | nfs4_put_state_owner(sp); | 1211 | nfs4_put_state_owner(sp); |
1213 | dput(calldata->path.dentry); | 1212 | path_put(&calldata->path); |
1214 | mntput(calldata->path.mnt); | ||
1215 | kfree(calldata); | 1213 | kfree(calldata); |
1216 | } | 1214 | } |
1217 | 1215 | ||
@@ -1578,7 +1576,7 @@ static int nfs4_get_referral(struct inode *dir, const struct qstr *name, struct | |||
1578 | goto out; | 1576 | goto out; |
1579 | /* Make sure server returned a different fsid for the referral */ | 1577 | /* Make sure server returned a different fsid for the referral */ |
1580 | if (nfs_fsid_equal(&NFS_SERVER(dir)->fsid, &locations->fattr.fsid)) { | 1578 | if (nfs_fsid_equal(&NFS_SERVER(dir)->fsid, &locations->fattr.fsid)) { |
1581 | dprintk("%s: server did not return a different fsid for a referral at %s\n", __FUNCTION__, name->name); | 1579 | dprintk("%s: server did not return a different fsid for a referral at %s\n", __func__, name->name); |
1582 | status = -EIO; | 1580 | status = -EIO; |
1583 | goto out; | 1581 | goto out; |
1584 | } | 1582 | } |
@@ -2211,7 +2209,7 @@ static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred, | |||
2211 | }; | 2209 | }; |
2212 | int status; | 2210 | int status; |
2213 | 2211 | ||
2214 | dprintk("%s: dentry = %s/%s, cookie = %Lu\n", __FUNCTION__, | 2212 | dprintk("%s: dentry = %s/%s, cookie = %Lu\n", __func__, |
2215 | dentry->d_parent->d_name.name, | 2213 | dentry->d_parent->d_name.name, |
2216 | dentry->d_name.name, | 2214 | dentry->d_name.name, |
2217 | (unsigned long long)cookie); | 2215 | (unsigned long long)cookie); |
@@ -2223,7 +2221,7 @@ static int _nfs4_proc_readdir(struct dentry *dentry, struct rpc_cred *cred, | |||
2223 | 2221 | ||
2224 | nfs_invalidate_atime(dir); | 2222 | nfs_invalidate_atime(dir); |
2225 | 2223 | ||
2226 | dprintk("%s: returns %d\n", __FUNCTION__, status); | 2224 | dprintk("%s: returns %d\n", __func__, status); |
2227 | return status; | 2225 | return status; |
2228 | } | 2226 | } |
2229 | 2227 | ||
@@ -3342,7 +3340,7 @@ static void nfs4_lock_prepare(struct rpc_task *task, void *calldata) | |||
3342 | struct nfs4_lockdata *data = calldata; | 3340 | struct nfs4_lockdata *data = calldata; |
3343 | struct nfs4_state *state = data->lsp->ls_state; | 3341 | struct nfs4_state *state = data->lsp->ls_state; |
3344 | 3342 | ||
3345 | dprintk("%s: begin!\n", __FUNCTION__); | 3343 | dprintk("%s: begin!\n", __func__); |
3346 | if (nfs_wait_on_sequence(data->arg.lock_seqid, task) != 0) | 3344 | if (nfs_wait_on_sequence(data->arg.lock_seqid, task) != 0) |
3347 | return; | 3345 | return; |
3348 | /* Do we need to do an open_to_lock_owner? */ | 3346 | /* Do we need to do an open_to_lock_owner? */ |
@@ -3356,14 +3354,14 @@ static void nfs4_lock_prepare(struct rpc_task *task, void *calldata) | |||
3356 | data->arg.new_lock_owner = 0; | 3354 | data->arg.new_lock_owner = 0; |
3357 | data->timestamp = jiffies; | 3355 | data->timestamp = jiffies; |
3358 | rpc_call_start(task); | 3356 | rpc_call_start(task); |
3359 | dprintk("%s: done!, ret = %d\n", __FUNCTION__, data->rpc_status); | 3357 | dprintk("%s: done!, ret = %d\n", __func__, data->rpc_status); |
3360 | } | 3358 | } |
3361 | 3359 | ||
3362 | static void nfs4_lock_done(struct rpc_task *task, void *calldata) | 3360 | static void nfs4_lock_done(struct rpc_task *task, void *calldata) |
3363 | { | 3361 | { |
3364 | struct nfs4_lockdata *data = calldata; | 3362 | struct nfs4_lockdata *data = calldata; |
3365 | 3363 | ||
3366 | dprintk("%s: begin!\n", __FUNCTION__); | 3364 | dprintk("%s: begin!\n", __func__); |
3367 | 3365 | ||
3368 | data->rpc_status = task->tk_status; | 3366 | data->rpc_status = task->tk_status; |
3369 | if (RPC_ASSASSINATED(task)) | 3367 | if (RPC_ASSASSINATED(task)) |
@@ -3381,14 +3379,14 @@ static void nfs4_lock_done(struct rpc_task *task, void *calldata) | |||
3381 | renew_lease(NFS_SERVER(data->ctx->path.dentry->d_inode), data->timestamp); | 3379 | renew_lease(NFS_SERVER(data->ctx->path.dentry->d_inode), data->timestamp); |
3382 | } | 3380 | } |
3383 | out: | 3381 | out: |
3384 | dprintk("%s: done, ret = %d!\n", __FUNCTION__, data->rpc_status); | 3382 | dprintk("%s: done, ret = %d!\n", __func__, data->rpc_status); |
3385 | } | 3383 | } |
3386 | 3384 | ||
3387 | static void nfs4_lock_release(void *calldata) | 3385 | static void nfs4_lock_release(void *calldata) |
3388 | { | 3386 | { |
3389 | struct nfs4_lockdata *data = calldata; | 3387 | struct nfs4_lockdata *data = calldata; |
3390 | 3388 | ||
3391 | dprintk("%s: begin!\n", __FUNCTION__); | 3389 | dprintk("%s: begin!\n", __func__); |
3392 | nfs_free_seqid(data->arg.open_seqid); | 3390 | nfs_free_seqid(data->arg.open_seqid); |
3393 | if (data->cancelled != 0) { | 3391 | if (data->cancelled != 0) { |
3394 | struct rpc_task *task; | 3392 | struct rpc_task *task; |
@@ -3396,13 +3394,13 @@ static void nfs4_lock_release(void *calldata) | |||
3396 | data->arg.lock_seqid); | 3394 | data->arg.lock_seqid); |
3397 | if (!IS_ERR(task)) | 3395 | if (!IS_ERR(task)) |
3398 | rpc_put_task(task); | 3396 | rpc_put_task(task); |
3399 | dprintk("%s: cancelling lock!\n", __FUNCTION__); | 3397 | dprintk("%s: cancelling lock!\n", __func__); |
3400 | } else | 3398 | } else |
3401 | nfs_free_seqid(data->arg.lock_seqid); | 3399 | nfs_free_seqid(data->arg.lock_seqid); |
3402 | nfs4_put_lock_state(data->lsp); | 3400 | nfs4_put_lock_state(data->lsp); |
3403 | put_nfs_open_context(data->ctx); | 3401 | put_nfs_open_context(data->ctx); |
3404 | kfree(data); | 3402 | kfree(data); |
3405 | dprintk("%s: done!\n", __FUNCTION__); | 3403 | dprintk("%s: done!\n", __func__); |
3406 | } | 3404 | } |
3407 | 3405 | ||
3408 | static const struct rpc_call_ops nfs4_lock_ops = { | 3406 | static const struct rpc_call_ops nfs4_lock_ops = { |
@@ -3428,7 +3426,7 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f | |||
3428 | }; | 3426 | }; |
3429 | int ret; | 3427 | int ret; |
3430 | 3428 | ||
3431 | dprintk("%s: begin!\n", __FUNCTION__); | 3429 | dprintk("%s: begin!\n", __func__); |
3432 | data = nfs4_alloc_lockdata(fl, nfs_file_open_context(fl->fl_file), | 3430 | data = nfs4_alloc_lockdata(fl, nfs_file_open_context(fl->fl_file), |
3433 | fl->fl_u.nfs4_fl.owner); | 3431 | fl->fl_u.nfs4_fl.owner); |
3434 | if (data == NULL) | 3432 | if (data == NULL) |
@@ -3451,7 +3449,7 @@ static int _nfs4_do_setlk(struct nfs4_state *state, int cmd, struct file_lock *f | |||
3451 | } else | 3449 | } else |
3452 | data->cancelled = 1; | 3450 | data->cancelled = 1; |
3453 | rpc_put_task(task); | 3451 | rpc_put_task(task); |
3454 | dprintk("%s: done, ret = %d!\n", __FUNCTION__, ret); | 3452 | dprintk("%s: done, ret = %d!\n", __func__, ret); |
3455 | return ret; | 3453 | return ret; |
3456 | } | 3454 | } |
3457 | 3455 | ||
@@ -3527,7 +3525,7 @@ static int _nfs4_proc_setlk(struct nfs4_state *state, int cmd, struct file_lock | |||
3527 | /* Note: we always want to sleep here! */ | 3525 | /* Note: we always want to sleep here! */ |
3528 | request->fl_flags = fl_flags | FL_SLEEP; | 3526 | request->fl_flags = fl_flags | FL_SLEEP; |
3529 | if (do_vfs_lock(request->fl_file, request) < 0) | 3527 | if (do_vfs_lock(request->fl_file, request) < 0) |
3530 | printk(KERN_WARNING "%s: VFS is out of sync with lock manager!\n", __FUNCTION__); | 3528 | printk(KERN_WARNING "%s: VFS is out of sync with lock manager!\n", __func__); |
3531 | out_unlock: | 3529 | out_unlock: |
3532 | up_read(&clp->cl_sem); | 3530 | up_read(&clp->cl_sem); |
3533 | out: | 3531 | out: |
@@ -3665,12 +3663,12 @@ int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name, | |||
3665 | }; | 3663 | }; |
3666 | int status; | 3664 | int status; |
3667 | 3665 | ||
3668 | dprintk("%s: start\n", __FUNCTION__); | 3666 | dprintk("%s: start\n", __func__); |
3669 | nfs_fattr_init(&fs_locations->fattr); | 3667 | nfs_fattr_init(&fs_locations->fattr); |
3670 | fs_locations->server = server; | 3668 | fs_locations->server = server; |
3671 | fs_locations->nlocations = 0; | 3669 | fs_locations->nlocations = 0; |
3672 | status = rpc_call_sync(server->client, &msg, 0); | 3670 | status = rpc_call_sync(server->client, &msg, 0); |
3673 | dprintk("%s: returned status = %d\n", __FUNCTION__, status); | 3671 | dprintk("%s: returned status = %d\n", __func__, status); |
3674 | return status; | 3672 | return status; |
3675 | } | 3673 | } |
3676 | 3674 | ||
diff --git a/fs/nfs/nfs4renewd.c b/fs/nfs/nfs4renewd.c index 5e2e4af1a0e6..3305acbbe2ae 100644 --- a/fs/nfs/nfs4renewd.c +++ b/fs/nfs/nfs4renewd.c | |||
@@ -66,7 +66,7 @@ nfs4_renew_state(struct work_struct *work) | |||
66 | unsigned long last, now; | 66 | unsigned long last, now; |
67 | 67 | ||
68 | down_read(&clp->cl_sem); | 68 | down_read(&clp->cl_sem); |
69 | dprintk("%s: start\n", __FUNCTION__); | 69 | dprintk("%s: start\n", __func__); |
70 | /* Are there any active superblocks? */ | 70 | /* Are there any active superblocks? */ |
71 | if (list_empty(&clp->cl_superblocks)) | 71 | if (list_empty(&clp->cl_superblocks)) |
72 | goto out; | 72 | goto out; |
@@ -92,17 +92,17 @@ nfs4_renew_state(struct work_struct *work) | |||
92 | spin_lock(&clp->cl_lock); | 92 | spin_lock(&clp->cl_lock); |
93 | } else | 93 | } else |
94 | dprintk("%s: failed to call renewd. Reason: lease not expired \n", | 94 | dprintk("%s: failed to call renewd. Reason: lease not expired \n", |
95 | __FUNCTION__); | 95 | __func__); |
96 | if (timeout < 5 * HZ) /* safeguard */ | 96 | if (timeout < 5 * HZ) /* safeguard */ |
97 | timeout = 5 * HZ; | 97 | timeout = 5 * HZ; |
98 | dprintk("%s: requeueing work. Lease period = %ld\n", | 98 | dprintk("%s: requeueing work. Lease period = %ld\n", |
99 | __FUNCTION__, (timeout + HZ - 1) / HZ); | 99 | __func__, (timeout + HZ - 1) / HZ); |
100 | cancel_delayed_work(&clp->cl_renewd); | 100 | cancel_delayed_work(&clp->cl_renewd); |
101 | schedule_delayed_work(&clp->cl_renewd, timeout); | 101 | schedule_delayed_work(&clp->cl_renewd, timeout); |
102 | spin_unlock(&clp->cl_lock); | 102 | spin_unlock(&clp->cl_lock); |
103 | out: | 103 | out: |
104 | up_read(&clp->cl_sem); | 104 | up_read(&clp->cl_sem); |
105 | dprintk("%s: done\n", __FUNCTION__); | 105 | dprintk("%s: done\n", __func__); |
106 | } | 106 | } |
107 | 107 | ||
108 | /* Must be called with clp->cl_sem locked for writes */ | 108 | /* Must be called with clp->cl_sem locked for writes */ |
@@ -117,7 +117,7 @@ nfs4_schedule_state_renewal(struct nfs_client *clp) | |||
117 | if (timeout < 5 * HZ) | 117 | if (timeout < 5 * HZ) |
118 | timeout = 5 * HZ; | 118 | timeout = 5 * HZ; |
119 | dprintk("%s: requeueing work. Lease period = %ld\n", | 119 | dprintk("%s: requeueing work. Lease period = %ld\n", |
120 | __FUNCTION__, (timeout + HZ - 1) / HZ); | 120 | __func__, (timeout + HZ - 1) / HZ); |
121 | cancel_delayed_work(&clp->cl_renewd); | 121 | cancel_delayed_work(&clp->cl_renewd); |
122 | schedule_delayed_work(&clp->cl_renewd, timeout); | 122 | schedule_delayed_work(&clp->cl_renewd, timeout); |
123 | set_bit(NFS_CS_RENEWD, &clp->cl_res_state); | 123 | set_bit(NFS_CS_RENEWD, &clp->cl_res_state); |
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 46eb624e4f16..856a8934f610 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c | |||
@@ -282,7 +282,7 @@ nfs4_alloc_state_owner(void) | |||
282 | return sp; | 282 | return sp; |
283 | } | 283 | } |
284 | 284 | ||
285 | void | 285 | static void |
286 | nfs4_drop_state_owner(struct nfs4_state_owner *sp) | 286 | nfs4_drop_state_owner(struct nfs4_state_owner *sp) |
287 | { | 287 | { |
288 | if (!RB_EMPTY_NODE(&sp->so_client_node)) { | 288 | if (!RB_EMPTY_NODE(&sp->so_client_node)) { |
@@ -828,7 +828,7 @@ static int nfs4_reclaim_locks(struct nfs4_state_recovery_ops *ops, struct nfs4_s | |||
828 | switch (status) { | 828 | switch (status) { |
829 | default: | 829 | default: |
830 | printk(KERN_ERR "%s: unhandled error %d. Zeroing state\n", | 830 | printk(KERN_ERR "%s: unhandled error %d. Zeroing state\n", |
831 | __FUNCTION__, status); | 831 | __func__, status); |
832 | case -NFS4ERR_EXPIRED: | 832 | case -NFS4ERR_EXPIRED: |
833 | case -NFS4ERR_NO_GRACE: | 833 | case -NFS4ERR_NO_GRACE: |
834 | case -NFS4ERR_RECLAIM_BAD: | 834 | case -NFS4ERR_RECLAIM_BAD: |
@@ -869,14 +869,14 @@ static int nfs4_reclaim_open_state(struct nfs4_state_recovery_ops *ops, struct n | |||
869 | list_for_each_entry(lock, &state->lock_states, ls_locks) { | 869 | list_for_each_entry(lock, &state->lock_states, ls_locks) { |
870 | if (!(lock->ls_flags & NFS_LOCK_INITIALIZED)) | 870 | if (!(lock->ls_flags & NFS_LOCK_INITIALIZED)) |
871 | printk("%s: Lock reclaim failed!\n", | 871 | printk("%s: Lock reclaim failed!\n", |
872 | __FUNCTION__); | 872 | __func__); |
873 | } | 873 | } |
874 | continue; | 874 | continue; |
875 | } | 875 | } |
876 | switch (status) { | 876 | switch (status) { |
877 | default: | 877 | default: |
878 | printk(KERN_ERR "%s: unhandled error %d. Zeroing state\n", | 878 | printk(KERN_ERR "%s: unhandled error %d. Zeroing state\n", |
879 | __FUNCTION__, status); | 879 | __func__, status); |
880 | case -ENOENT: | 880 | case -ENOENT: |
881 | case -NFS4ERR_RECLAIM_BAD: | 881 | case -NFS4ERR_RECLAIM_BAD: |
882 | case -NFS4ERR_RECLAIM_CONFLICT: | 882 | case -NFS4ERR_RECLAIM_CONFLICT: |
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c index 5a2d64927b35..b916297d2334 100644 --- a/fs/nfs/nfs4xdr.c +++ b/fs/nfs/nfs4xdr.c | |||
@@ -1831,7 +1831,7 @@ static int nfs4_xdr_enc_readdir(struct rpc_rqst *req, __be32 *p, const struct nf | |||
1831 | xdr_inline_pages(&req->rq_rcv_buf, replen, args->pages, | 1831 | xdr_inline_pages(&req->rq_rcv_buf, replen, args->pages, |
1832 | args->pgbase, args->count); | 1832 | args->pgbase, args->count); |
1833 | dprintk("%s: inlined page args = (%u, %p, %u, %u)\n", | 1833 | dprintk("%s: inlined page args = (%u, %p, %u, %u)\n", |
1834 | __FUNCTION__, replen, args->pages, | 1834 | __func__, replen, args->pages, |
1835 | args->pgbase, args->count); | 1835 | args->pgbase, args->count); |
1836 | 1836 | ||
1837 | out: | 1837 | out: |
@@ -2192,9 +2192,9 @@ out: | |||
2192 | p = xdr_inline_decode(xdr, nbytes); \ | 2192 | p = xdr_inline_decode(xdr, nbytes); \ |
2193 | if (unlikely(!p)) { \ | 2193 | if (unlikely(!p)) { \ |
2194 | dprintk("nfs: %s: prematurely hit end of receive" \ | 2194 | dprintk("nfs: %s: prematurely hit end of receive" \ |
2195 | " buffer\n", __FUNCTION__); \ | 2195 | " buffer\n", __func__); \ |
2196 | dprintk("nfs: %s: xdr->p=%p, bytes=%u, xdr->end=%p\n", \ | 2196 | dprintk("nfs: %s: xdr->p=%p, bytes=%u, xdr->end=%p\n", \ |
2197 | __FUNCTION__, xdr->p, nbytes, xdr->end); \ | 2197 | __func__, xdr->p, nbytes, xdr->end); \ |
2198 | return -EIO; \ | 2198 | return -EIO; \ |
2199 | } \ | 2199 | } \ |
2200 | } while (0) | 2200 | } while (0) |
@@ -2306,12 +2306,12 @@ static int decode_attr_type(struct xdr_stream *xdr, uint32_t *bitmap, uint32_t * | |||
2306 | READ_BUF(4); | 2306 | READ_BUF(4); |
2307 | READ32(*type); | 2307 | READ32(*type); |
2308 | if (*type < NF4REG || *type > NF4NAMEDATTR) { | 2308 | if (*type < NF4REG || *type > NF4NAMEDATTR) { |
2309 | dprintk("%s: bad type %d\n", __FUNCTION__, *type); | 2309 | dprintk("%s: bad type %d\n", __func__, *type); |
2310 | return -EIO; | 2310 | return -EIO; |
2311 | } | 2311 | } |
2312 | bitmap[0] &= ~FATTR4_WORD0_TYPE; | 2312 | bitmap[0] &= ~FATTR4_WORD0_TYPE; |
2313 | } | 2313 | } |
2314 | dprintk("%s: type=0%o\n", __FUNCTION__, nfs_type2fmt[*type].nfs2type); | 2314 | dprintk("%s: type=0%o\n", __func__, nfs_type2fmt[*type].nfs2type); |
2315 | return 0; | 2315 | return 0; |
2316 | } | 2316 | } |
2317 | 2317 | ||
@@ -2327,7 +2327,7 @@ static int decode_attr_change(struct xdr_stream *xdr, uint32_t *bitmap, uint64_t | |||
2327 | READ64(*change); | 2327 | READ64(*change); |
2328 | bitmap[0] &= ~FATTR4_WORD0_CHANGE; | 2328 | bitmap[0] &= ~FATTR4_WORD0_CHANGE; |
2329 | } | 2329 | } |
2330 | dprintk("%s: change attribute=%Lu\n", __FUNCTION__, | 2330 | dprintk("%s: change attribute=%Lu\n", __func__, |
2331 | (unsigned long long)*change); | 2331 | (unsigned long long)*change); |
2332 | return 0; | 2332 | return 0; |
2333 | } | 2333 | } |
@@ -2344,7 +2344,7 @@ static int decode_attr_size(struct xdr_stream *xdr, uint32_t *bitmap, uint64_t * | |||
2344 | READ64(*size); | 2344 | READ64(*size); |
2345 | bitmap[0] &= ~FATTR4_WORD0_SIZE; | 2345 | bitmap[0] &= ~FATTR4_WORD0_SIZE; |
2346 | } | 2346 | } |
2347 | dprintk("%s: file size=%Lu\n", __FUNCTION__, (unsigned long long)*size); | 2347 | dprintk("%s: file size=%Lu\n", __func__, (unsigned long long)*size); |
2348 | return 0; | 2348 | return 0; |
2349 | } | 2349 | } |
2350 | 2350 | ||
@@ -2360,7 +2360,7 @@ static int decode_attr_link_support(struct xdr_stream *xdr, uint32_t *bitmap, ui | |||
2360 | READ32(*res); | 2360 | READ32(*res); |
2361 | bitmap[0] &= ~FATTR4_WORD0_LINK_SUPPORT; | 2361 | bitmap[0] &= ~FATTR4_WORD0_LINK_SUPPORT; |
2362 | } | 2362 | } |
2363 | dprintk("%s: link support=%s\n", __FUNCTION__, *res == 0 ? "false" : "true"); | 2363 | dprintk("%s: link support=%s\n", __func__, *res == 0 ? "false" : "true"); |
2364 | return 0; | 2364 | return 0; |
2365 | } | 2365 | } |
2366 | 2366 | ||
@@ -2376,7 +2376,7 @@ static int decode_attr_symlink_support(struct xdr_stream *xdr, uint32_t *bitmap, | |||
2376 | READ32(*res); | 2376 | READ32(*res); |
2377 | bitmap[0] &= ~FATTR4_WORD0_SYMLINK_SUPPORT; | 2377 | bitmap[0] &= ~FATTR4_WORD0_SYMLINK_SUPPORT; |
2378 | } | 2378 | } |
2379 | dprintk("%s: symlink support=%s\n", __FUNCTION__, *res == 0 ? "false" : "true"); | 2379 | dprintk("%s: symlink support=%s\n", __func__, *res == 0 ? "false" : "true"); |
2380 | return 0; | 2380 | return 0; |
2381 | } | 2381 | } |
2382 | 2382 | ||
@@ -2394,7 +2394,7 @@ static int decode_attr_fsid(struct xdr_stream *xdr, uint32_t *bitmap, struct nfs | |||
2394 | READ64(fsid->minor); | 2394 | READ64(fsid->minor); |
2395 | bitmap[0] &= ~FATTR4_WORD0_FSID; | 2395 | bitmap[0] &= ~FATTR4_WORD0_FSID; |
2396 | } | 2396 | } |
2397 | dprintk("%s: fsid=(0x%Lx/0x%Lx)\n", __FUNCTION__, | 2397 | dprintk("%s: fsid=(0x%Lx/0x%Lx)\n", __func__, |
2398 | (unsigned long long)fsid->major, | 2398 | (unsigned long long)fsid->major, |
2399 | (unsigned long long)fsid->minor); | 2399 | (unsigned long long)fsid->minor); |
2400 | return 0; | 2400 | return 0; |
@@ -2412,7 +2412,7 @@ static int decode_attr_lease_time(struct xdr_stream *xdr, uint32_t *bitmap, uint | |||
2412 | READ32(*res); | 2412 | READ32(*res); |
2413 | bitmap[0] &= ~FATTR4_WORD0_LEASE_TIME; | 2413 | bitmap[0] &= ~FATTR4_WORD0_LEASE_TIME; |
2414 | } | 2414 | } |
2415 | dprintk("%s: file size=%u\n", __FUNCTION__, (unsigned int)*res); | 2415 | dprintk("%s: file size=%u\n", __func__, (unsigned int)*res); |
2416 | return 0; | 2416 | return 0; |
2417 | } | 2417 | } |
2418 | 2418 | ||
@@ -2428,7 +2428,7 @@ static int decode_attr_aclsupport(struct xdr_stream *xdr, uint32_t *bitmap, uint | |||
2428 | READ32(*res); | 2428 | READ32(*res); |
2429 | bitmap[0] &= ~FATTR4_WORD0_ACLSUPPORT; | 2429 | bitmap[0] &= ~FATTR4_WORD0_ACLSUPPORT; |
2430 | } | 2430 | } |
2431 | dprintk("%s: ACLs supported=%u\n", __FUNCTION__, (unsigned int)*res); | 2431 | dprintk("%s: ACLs supported=%u\n", __func__, (unsigned int)*res); |
2432 | return 0; | 2432 | return 0; |
2433 | } | 2433 | } |
2434 | 2434 | ||
@@ -2444,7 +2444,7 @@ static int decode_attr_fileid(struct xdr_stream *xdr, uint32_t *bitmap, uint64_t | |||
2444 | READ64(*fileid); | 2444 | READ64(*fileid); |
2445 | bitmap[0] &= ~FATTR4_WORD0_FILEID; | 2445 | bitmap[0] &= ~FATTR4_WORD0_FILEID; |
2446 | } | 2446 | } |
2447 | dprintk("%s: fileid=%Lu\n", __FUNCTION__, (unsigned long long)*fileid); | 2447 | dprintk("%s: fileid=%Lu\n", __func__, (unsigned long long)*fileid); |
2448 | return 0; | 2448 | return 0; |
2449 | } | 2449 | } |
2450 | 2450 | ||
@@ -2460,7 +2460,7 @@ static int decode_attr_mounted_on_fileid(struct xdr_stream *xdr, uint32_t *bitma | |||
2460 | READ64(*fileid); | 2460 | READ64(*fileid); |
2461 | bitmap[1] &= ~FATTR4_WORD1_MOUNTED_ON_FILEID; | 2461 | bitmap[1] &= ~FATTR4_WORD1_MOUNTED_ON_FILEID; |
2462 | } | 2462 | } |
2463 | dprintk("%s: fileid=%Lu\n", __FUNCTION__, (unsigned long long)*fileid); | 2463 | dprintk("%s: fileid=%Lu\n", __func__, (unsigned long long)*fileid); |
2464 | return 0; | 2464 | return 0; |
2465 | } | 2465 | } |
2466 | 2466 | ||
@@ -2477,7 +2477,7 @@ static int decode_attr_files_avail(struct xdr_stream *xdr, uint32_t *bitmap, uin | |||
2477 | READ64(*res); | 2477 | READ64(*res); |
2478 | bitmap[0] &= ~FATTR4_WORD0_FILES_AVAIL; | 2478 | bitmap[0] &= ~FATTR4_WORD0_FILES_AVAIL; |
2479 | } | 2479 | } |
2480 | dprintk("%s: files avail=%Lu\n", __FUNCTION__, (unsigned long long)*res); | 2480 | dprintk("%s: files avail=%Lu\n", __func__, (unsigned long long)*res); |
2481 | return status; | 2481 | return status; |
2482 | } | 2482 | } |
2483 | 2483 | ||
@@ -2494,7 +2494,7 @@ static int decode_attr_files_free(struct xdr_stream *xdr, uint32_t *bitmap, uint | |||
2494 | READ64(*res); | 2494 | READ64(*res); |
2495 | bitmap[0] &= ~FATTR4_WORD0_FILES_FREE; | 2495 | bitmap[0] &= ~FATTR4_WORD0_FILES_FREE; |
2496 | } | 2496 | } |
2497 | dprintk("%s: files free=%Lu\n", __FUNCTION__, (unsigned long long)*res); | 2497 | dprintk("%s: files free=%Lu\n", __func__, (unsigned long long)*res); |
2498 | return status; | 2498 | return status; |
2499 | } | 2499 | } |
2500 | 2500 | ||
@@ -2511,7 +2511,7 @@ static int decode_attr_files_total(struct xdr_stream *xdr, uint32_t *bitmap, uin | |||
2511 | READ64(*res); | 2511 | READ64(*res); |
2512 | bitmap[0] &= ~FATTR4_WORD0_FILES_TOTAL; | 2512 | bitmap[0] &= ~FATTR4_WORD0_FILES_TOTAL; |
2513 | } | 2513 | } |
2514 | dprintk("%s: files total=%Lu\n", __FUNCTION__, (unsigned long long)*res); | 2514 | dprintk("%s: files total=%Lu\n", __func__, (unsigned long long)*res); |
2515 | return status; | 2515 | return status; |
2516 | } | 2516 | } |
2517 | 2517 | ||
@@ -2569,7 +2569,7 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st | |||
2569 | status = 0; | 2569 | status = 0; |
2570 | if (unlikely(!(bitmap[0] & FATTR4_WORD0_FS_LOCATIONS))) | 2570 | if (unlikely(!(bitmap[0] & FATTR4_WORD0_FS_LOCATIONS))) |
2571 | goto out; | 2571 | goto out; |
2572 | dprintk("%s: fsroot ", __FUNCTION__); | 2572 | dprintk("%s: fsroot ", __func__); |
2573 | status = decode_pathname(xdr, &res->fs_path); | 2573 | status = decode_pathname(xdr, &res->fs_path); |
2574 | if (unlikely(status != 0)) | 2574 | if (unlikely(status != 0)) |
2575 | goto out; | 2575 | goto out; |
@@ -2586,7 +2586,7 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st | |||
2586 | READ32(m); | 2586 | READ32(m); |
2587 | 2587 | ||
2588 | loc->nservers = 0; | 2588 | loc->nservers = 0; |
2589 | dprintk("%s: servers ", __FUNCTION__); | 2589 | dprintk("%s: servers ", __func__); |
2590 | while (loc->nservers < m) { | 2590 | while (loc->nservers < m) { |
2591 | struct nfs4_string *server = &loc->servers[loc->nservers]; | 2591 | struct nfs4_string *server = &loc->servers[loc->nservers]; |
2592 | status = decode_opaque_inline(xdr, &server->len, &server->data); | 2592 | status = decode_opaque_inline(xdr, &server->len, &server->data); |
@@ -2599,7 +2599,7 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st | |||
2599 | unsigned int i; | 2599 | unsigned int i; |
2600 | dprintk("%s: using first %u of %u servers " | 2600 | dprintk("%s: using first %u of %u servers " |
2601 | "returned for location %u\n", | 2601 | "returned for location %u\n", |
2602 | __FUNCTION__, | 2602 | __func__, |
2603 | NFS4_FS_LOCATION_MAXSERVERS, | 2603 | NFS4_FS_LOCATION_MAXSERVERS, |
2604 | m, res->nlocations); | 2604 | m, res->nlocations); |
2605 | for (i = loc->nservers; i < m; i++) { | 2605 | for (i = loc->nservers; i < m; i++) { |
@@ -2618,7 +2618,7 @@ static int decode_attr_fs_locations(struct xdr_stream *xdr, uint32_t *bitmap, st | |||
2618 | res->nlocations++; | 2618 | res->nlocations++; |
2619 | } | 2619 | } |
2620 | out: | 2620 | out: |
2621 | dprintk("%s: fs_locations done, error = %d\n", __FUNCTION__, status); | 2621 | dprintk("%s: fs_locations done, error = %d\n", __func__, status); |
2622 | return status; | 2622 | return status; |
2623 | out_eio: | 2623 | out_eio: |
2624 | status = -EIO; | 2624 | status = -EIO; |
@@ -2638,7 +2638,7 @@ static int decode_attr_maxfilesize(struct xdr_stream *xdr, uint32_t *bitmap, uin | |||
2638 | READ64(*res); | 2638 | READ64(*res); |
2639 | bitmap[0] &= ~FATTR4_WORD0_MAXFILESIZE; | 2639 | bitmap[0] &= ~FATTR4_WORD0_MAXFILESIZE; |
2640 | } | 2640 | } |
2641 | dprintk("%s: maxfilesize=%Lu\n", __FUNCTION__, (unsigned long long)*res); | 2641 | dprintk("%s: maxfilesize=%Lu\n", __func__, (unsigned long long)*res); |
2642 | return status; | 2642 | return status; |
2643 | } | 2643 | } |
2644 | 2644 | ||
@@ -2655,7 +2655,7 @@ static int decode_attr_maxlink(struct xdr_stream *xdr, uint32_t *bitmap, uint32_ | |||
2655 | READ32(*maxlink); | 2655 | READ32(*maxlink); |
2656 | bitmap[0] &= ~FATTR4_WORD0_MAXLINK; | 2656 | bitmap[0] &= ~FATTR4_WORD0_MAXLINK; |
2657 | } | 2657 | } |
2658 | dprintk("%s: maxlink=%u\n", __FUNCTION__, *maxlink); | 2658 | dprintk("%s: maxlink=%u\n", __func__, *maxlink); |
2659 | return status; | 2659 | return status; |
2660 | } | 2660 | } |
2661 | 2661 | ||
@@ -2672,7 +2672,7 @@ static int decode_attr_maxname(struct xdr_stream *xdr, uint32_t *bitmap, uint32_ | |||
2672 | READ32(*maxname); | 2672 | READ32(*maxname); |
2673 | bitmap[0] &= ~FATTR4_WORD0_MAXNAME; | 2673 | bitmap[0] &= ~FATTR4_WORD0_MAXNAME; |
2674 | } | 2674 | } |
2675 | dprintk("%s: maxname=%u\n", __FUNCTION__, *maxname); | 2675 | dprintk("%s: maxname=%u\n", __func__, *maxname); |
2676 | return status; | 2676 | return status; |
2677 | } | 2677 | } |
2678 | 2678 | ||
@@ -2693,7 +2693,7 @@ static int decode_attr_maxread(struct xdr_stream *xdr, uint32_t *bitmap, uint32_ | |||
2693 | *res = (uint32_t)maxread; | 2693 | *res = (uint32_t)maxread; |
2694 | bitmap[0] &= ~FATTR4_WORD0_MAXREAD; | 2694 | bitmap[0] &= ~FATTR4_WORD0_MAXREAD; |
2695 | } | 2695 | } |
2696 | dprintk("%s: maxread=%lu\n", __FUNCTION__, (unsigned long)*res); | 2696 | dprintk("%s: maxread=%lu\n", __func__, (unsigned long)*res); |
2697 | return status; | 2697 | return status; |
2698 | } | 2698 | } |
2699 | 2699 | ||
@@ -2714,7 +2714,7 @@ static int decode_attr_maxwrite(struct xdr_stream *xdr, uint32_t *bitmap, uint32 | |||
2714 | *res = (uint32_t)maxwrite; | 2714 | *res = (uint32_t)maxwrite; |
2715 | bitmap[0] &= ~FATTR4_WORD0_MAXWRITE; | 2715 | bitmap[0] &= ~FATTR4_WORD0_MAXWRITE; |
2716 | } | 2716 | } |
2717 | dprintk("%s: maxwrite=%lu\n", __FUNCTION__, (unsigned long)*res); | 2717 | dprintk("%s: maxwrite=%lu\n", __func__, (unsigned long)*res); |
2718 | return status; | 2718 | return status; |
2719 | } | 2719 | } |
2720 | 2720 | ||
@@ -2731,7 +2731,7 @@ static int decode_attr_mode(struct xdr_stream *xdr, uint32_t *bitmap, uint32_t * | |||
2731 | *mode &= ~S_IFMT; | 2731 | *mode &= ~S_IFMT; |
2732 | bitmap[1] &= ~FATTR4_WORD1_MODE; | 2732 | bitmap[1] &= ~FATTR4_WORD1_MODE; |
2733 | } | 2733 | } |
2734 | dprintk("%s: file mode=0%o\n", __FUNCTION__, (unsigned int)*mode); | 2734 | dprintk("%s: file mode=0%o\n", __func__, (unsigned int)*mode); |
2735 | return 0; | 2735 | return 0; |
2736 | } | 2736 | } |
2737 | 2737 | ||
@@ -2747,7 +2747,7 @@ static int decode_attr_nlink(struct xdr_stream *xdr, uint32_t *bitmap, uint32_t | |||
2747 | READ32(*nlink); | 2747 | READ32(*nlink); |
2748 | bitmap[1] &= ~FATTR4_WORD1_NUMLINKS; | 2748 | bitmap[1] &= ~FATTR4_WORD1_NUMLINKS; |
2749 | } | 2749 | } |
2750 | dprintk("%s: nlink=%u\n", __FUNCTION__, (unsigned int)*nlink); | 2750 | dprintk("%s: nlink=%u\n", __func__, (unsigned int)*nlink); |
2751 | return 0; | 2751 | return 0; |
2752 | } | 2752 | } |
2753 | 2753 | ||
@@ -2766,13 +2766,13 @@ static int decode_attr_owner(struct xdr_stream *xdr, uint32_t *bitmap, struct nf | |||
2766 | if (len < XDR_MAX_NETOBJ) { | 2766 | if (len < XDR_MAX_NETOBJ) { |
2767 | if (nfs_map_name_to_uid(clp, (char *)p, len, uid) != 0) | 2767 | if (nfs_map_name_to_uid(clp, (char *)p, len, uid) != 0) |
2768 | dprintk("%s: nfs_map_name_to_uid failed!\n", | 2768 | dprintk("%s: nfs_map_name_to_uid failed!\n", |
2769 | __FUNCTION__); | 2769 | __func__); |
2770 | } else | 2770 | } else |
2771 | dprintk("%s: name too long (%u)!\n", | 2771 | dprintk("%s: name too long (%u)!\n", |
2772 | __FUNCTION__, len); | 2772 | __func__, len); |
2773 | bitmap[1] &= ~FATTR4_WORD1_OWNER; | 2773 | bitmap[1] &= ~FATTR4_WORD1_OWNER; |
2774 | } | 2774 | } |
2775 | dprintk("%s: uid=%d\n", __FUNCTION__, (int)*uid); | 2775 | dprintk("%s: uid=%d\n", __func__, (int)*uid); |
2776 | return 0; | 2776 | return 0; |
2777 | } | 2777 | } |
2778 | 2778 | ||
@@ -2791,13 +2791,13 @@ static int decode_attr_group(struct xdr_stream *xdr, uint32_t *bitmap, struct nf | |||
2791 | if (len < XDR_MAX_NETOBJ) { | 2791 | if (len < XDR_MAX_NETOBJ) { |
2792 | if (nfs_map_group_to_gid(clp, (char *)p, len, gid) != 0) | 2792 | if (nfs_map_group_to_gid(clp, (char *)p, len, gid) != 0) |
2793 | dprintk("%s: nfs_map_group_to_gid failed!\n", | 2793 | dprintk("%s: nfs_map_group_to_gid failed!\n", |
2794 | __FUNCTION__); | 2794 | __func__); |
2795 | } else | 2795 | } else |
2796 | dprintk("%s: name too long (%u)!\n", | 2796 | dprintk("%s: name too long (%u)!\n", |
2797 | __FUNCTION__, len); | 2797 | __func__, len); |
2798 | bitmap[1] &= ~FATTR4_WORD1_OWNER_GROUP; | 2798 | bitmap[1] &= ~FATTR4_WORD1_OWNER_GROUP; |
2799 | } | 2799 | } |
2800 | dprintk("%s: gid=%d\n", __FUNCTION__, (int)*gid); | 2800 | dprintk("%s: gid=%d\n", __func__, (int)*gid); |
2801 | return 0; | 2801 | return 0; |
2802 | } | 2802 | } |
2803 | 2803 | ||
@@ -2820,7 +2820,7 @@ static int decode_attr_rdev(struct xdr_stream *xdr, uint32_t *bitmap, dev_t *rde | |||
2820 | *rdev = tmp; | 2820 | *rdev = tmp; |
2821 | bitmap[1] &= ~ FATTR4_WORD1_RAWDEV; | 2821 | bitmap[1] &= ~ FATTR4_WORD1_RAWDEV; |
2822 | } | 2822 | } |
2823 | dprintk("%s: rdev=(0x%x:0x%x)\n", __FUNCTION__, major, minor); | 2823 | dprintk("%s: rdev=(0x%x:0x%x)\n", __func__, major, minor); |
2824 | return 0; | 2824 | return 0; |
2825 | } | 2825 | } |
2826 | 2826 | ||
@@ -2837,7 +2837,7 @@ static int decode_attr_space_avail(struct xdr_stream *xdr, uint32_t *bitmap, uin | |||
2837 | READ64(*res); | 2837 | READ64(*res); |
2838 | bitmap[1] &= ~FATTR4_WORD1_SPACE_AVAIL; | 2838 | bitmap[1] &= ~FATTR4_WORD1_SPACE_AVAIL; |
2839 | } | 2839 | } |
2840 | dprintk("%s: space avail=%Lu\n", __FUNCTION__, (unsigned long long)*res); | 2840 | dprintk("%s: space avail=%Lu\n", __func__, (unsigned long long)*res); |
2841 | return status; | 2841 | return status; |
2842 | } | 2842 | } |
2843 | 2843 | ||
@@ -2854,7 +2854,7 @@ static int decode_attr_space_free(struct xdr_stream *xdr, uint32_t *bitmap, uint | |||
2854 | READ64(*res); | 2854 | READ64(*res); |
2855 | bitmap[1] &= ~FATTR4_WORD1_SPACE_FREE; | 2855 | bitmap[1] &= ~FATTR4_WORD1_SPACE_FREE; |
2856 | } | 2856 | } |
2857 | dprintk("%s: space free=%Lu\n", __FUNCTION__, (unsigned long long)*res); | 2857 | dprintk("%s: space free=%Lu\n", __func__, (unsigned long long)*res); |
2858 | return status; | 2858 | return status; |
2859 | } | 2859 | } |
2860 | 2860 | ||
@@ -2871,7 +2871,7 @@ static int decode_attr_space_total(struct xdr_stream *xdr, uint32_t *bitmap, uin | |||
2871 | READ64(*res); | 2871 | READ64(*res); |
2872 | bitmap[1] &= ~FATTR4_WORD1_SPACE_TOTAL; | 2872 | bitmap[1] &= ~FATTR4_WORD1_SPACE_TOTAL; |
2873 | } | 2873 | } |
2874 | dprintk("%s: space total=%Lu\n", __FUNCTION__, (unsigned long long)*res); | 2874 | dprintk("%s: space total=%Lu\n", __func__, (unsigned long long)*res); |
2875 | return status; | 2875 | return status; |
2876 | } | 2876 | } |
2877 | 2877 | ||
@@ -2887,7 +2887,7 @@ static int decode_attr_space_used(struct xdr_stream *xdr, uint32_t *bitmap, uint | |||
2887 | READ64(*used); | 2887 | READ64(*used); |
2888 | bitmap[1] &= ~FATTR4_WORD1_SPACE_USED; | 2888 | bitmap[1] &= ~FATTR4_WORD1_SPACE_USED; |
2889 | } | 2889 | } |
2890 | dprintk("%s: space used=%Lu\n", __FUNCTION__, | 2890 | dprintk("%s: space used=%Lu\n", __func__, |
2891 | (unsigned long long)*used); | 2891 | (unsigned long long)*used); |
2892 | return 0; | 2892 | return 0; |
2893 | } | 2893 | } |
@@ -2918,7 +2918,7 @@ static int decode_attr_time_access(struct xdr_stream *xdr, uint32_t *bitmap, str | |||
2918 | status = decode_attr_time(xdr, time); | 2918 | status = decode_attr_time(xdr, time); |
2919 | bitmap[1] &= ~FATTR4_WORD1_TIME_ACCESS; | 2919 | bitmap[1] &= ~FATTR4_WORD1_TIME_ACCESS; |
2920 | } | 2920 | } |
2921 | dprintk("%s: atime=%ld\n", __FUNCTION__, (long)time->tv_sec); | 2921 | dprintk("%s: atime=%ld\n", __func__, (long)time->tv_sec); |
2922 | return status; | 2922 | return status; |
2923 | } | 2923 | } |
2924 | 2924 | ||
@@ -2934,7 +2934,7 @@ static int decode_attr_time_metadata(struct xdr_stream *xdr, uint32_t *bitmap, s | |||
2934 | status = decode_attr_time(xdr, time); | 2934 | status = decode_attr_time(xdr, time); |
2935 | bitmap[1] &= ~FATTR4_WORD1_TIME_METADATA; | 2935 | bitmap[1] &= ~FATTR4_WORD1_TIME_METADATA; |
2936 | } | 2936 | } |
2937 | dprintk("%s: ctime=%ld\n", __FUNCTION__, (long)time->tv_sec); | 2937 | dprintk("%s: ctime=%ld\n", __func__, (long)time->tv_sec); |
2938 | return status; | 2938 | return status; |
2939 | } | 2939 | } |
2940 | 2940 | ||
@@ -2950,7 +2950,7 @@ static int decode_attr_time_modify(struct xdr_stream *xdr, uint32_t *bitmap, str | |||
2950 | status = decode_attr_time(xdr, time); | 2950 | status = decode_attr_time(xdr, time); |
2951 | bitmap[1] &= ~FATTR4_WORD1_TIME_MODIFY; | 2951 | bitmap[1] &= ~FATTR4_WORD1_TIME_MODIFY; |
2952 | } | 2952 | } |
2953 | dprintk("%s: mtime=%ld\n", __FUNCTION__, (long)time->tv_sec); | 2953 | dprintk("%s: mtime=%ld\n", __func__, (long)time->tv_sec); |
2954 | return status; | 2954 | return status; |
2955 | } | 2955 | } |
2956 | 2956 | ||
@@ -2962,7 +2962,7 @@ static int verify_attr_len(struct xdr_stream *xdr, __be32 *savep, uint32_t attrl | |||
2962 | if (unlikely(attrwords != nwords)) { | 2962 | if (unlikely(attrwords != nwords)) { |
2963 | dprintk("%s: server returned incorrect attribute length: " | 2963 | dprintk("%s: server returned incorrect attribute length: " |
2964 | "%u %c %u\n", | 2964 | "%u %c %u\n", |
2965 | __FUNCTION__, | 2965 | __func__, |
2966 | attrwords << 2, | 2966 | attrwords << 2, |
2967 | (attrwords < nwords) ? '<' : '>', | 2967 | (attrwords < nwords) ? '<' : '>', |
2968 | nwords << 2); | 2968 | nwords << 2); |
@@ -3067,7 +3067,7 @@ static int decode_server_caps(struct xdr_stream *xdr, struct nfs4_server_caps_re | |||
3067 | goto xdr_error; | 3067 | goto xdr_error; |
3068 | status = verify_attr_len(xdr, savep, attrlen); | 3068 | status = verify_attr_len(xdr, savep, attrlen); |
3069 | xdr_error: | 3069 | xdr_error: |
3070 | dprintk("%s: xdr returned %d!\n", __FUNCTION__, -status); | 3070 | dprintk("%s: xdr returned %d!\n", __func__, -status); |
3071 | return status; | 3071 | return status; |
3072 | } | 3072 | } |
3073 | 3073 | ||
@@ -3100,7 +3100,7 @@ static int decode_statfs(struct xdr_stream *xdr, struct nfs_fsstat *fsstat) | |||
3100 | 3100 | ||
3101 | status = verify_attr_len(xdr, savep, attrlen); | 3101 | status = verify_attr_len(xdr, savep, attrlen); |
3102 | xdr_error: | 3102 | xdr_error: |
3103 | dprintk("%s: xdr returned %d!\n", __FUNCTION__, -status); | 3103 | dprintk("%s: xdr returned %d!\n", __func__, -status); |
3104 | return status; | 3104 | return status; |
3105 | } | 3105 | } |
3106 | 3106 | ||
@@ -3125,7 +3125,7 @@ static int decode_pathconf(struct xdr_stream *xdr, struct nfs_pathconf *pathconf | |||
3125 | 3125 | ||
3126 | status = verify_attr_len(xdr, savep, attrlen); | 3126 | status = verify_attr_len(xdr, savep, attrlen); |
3127 | xdr_error: | 3127 | xdr_error: |
3128 | dprintk("%s: xdr returned %d!\n", __FUNCTION__, -status); | 3128 | dprintk("%s: xdr returned %d!\n", __func__, -status); |
3129 | return status; | 3129 | return status; |
3130 | } | 3130 | } |
3131 | 3131 | ||
@@ -3193,7 +3193,7 @@ static int decode_getfattr(struct xdr_stream *xdr, struct nfs_fattr *fattr, cons | |||
3193 | if ((status = verify_attr_len(xdr, savep, attrlen)) == 0) | 3193 | if ((status = verify_attr_len(xdr, savep, attrlen)) == 0) |
3194 | fattr->valid = NFS_ATTR_FATTR | NFS_ATTR_FATTR_V3 | NFS_ATTR_FATTR_V4; | 3194 | fattr->valid = NFS_ATTR_FATTR | NFS_ATTR_FATTR_V3 | NFS_ATTR_FATTR_V4; |
3195 | xdr_error: | 3195 | xdr_error: |
3196 | dprintk("%s: xdr returned %d\n", __FUNCTION__, -status); | 3196 | dprintk("%s: xdr returned %d\n", __func__, -status); |
3197 | return status; | 3197 | return status; |
3198 | } | 3198 | } |
3199 | 3199 | ||
@@ -3226,7 +3226,7 @@ static int decode_fsinfo(struct xdr_stream *xdr, struct nfs_fsinfo *fsinfo) | |||
3226 | 3226 | ||
3227 | status = verify_attr_len(xdr, savep, attrlen); | 3227 | status = verify_attr_len(xdr, savep, attrlen); |
3228 | xdr_error: | 3228 | xdr_error: |
3229 | dprintk("%s: xdr returned %d!\n", __FUNCTION__, -status); | 3229 | dprintk("%s: xdr returned %d!\n", __func__, -status); |
3230 | return status; | 3230 | return status; |
3231 | } | 3231 | } |
3232 | 3232 | ||
@@ -3418,7 +3418,7 @@ static int decode_open(struct xdr_stream *xdr, struct nfs_openres *res) | |||
3418 | 3418 | ||
3419 | return decode_delegation(xdr, res); | 3419 | return decode_delegation(xdr, res); |
3420 | xdr_error: | 3420 | xdr_error: |
3421 | dprintk("%s: Bitmap too large! Length = %u\n", __FUNCTION__, bmlen); | 3421 | dprintk("%s: Bitmap too large! Length = %u\n", __func__, bmlen); |
3422 | return -EIO; | 3422 | return -EIO; |
3423 | } | 3423 | } |
3424 | 3424 | ||
@@ -3575,7 +3575,7 @@ short_pkt: | |||
3575 | * the call was successful, but incomplete. The caller can retry the | 3575 | * the call was successful, but incomplete. The caller can retry the |
3576 | * readdir starting at the last cookie. | 3576 | * readdir starting at the last cookie. |
3577 | */ | 3577 | */ |
3578 | dprintk("%s: short packet at entry %d\n", __FUNCTION__, nr); | 3578 | dprintk("%s: short packet at entry %d\n", __func__, nr); |
3579 | entry[0] = entry[1] = 0; | 3579 | entry[0] = entry[1] = 0; |
3580 | if (nr) | 3580 | if (nr) |
3581 | goto out; | 3581 | goto out; |
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c index 5ccf7faee19c..03599bfe81cf 100644 --- a/fs/nfs/proc.c +++ b/fs/nfs/proc.c | |||
@@ -63,17 +63,17 @@ nfs_proc_get_root(struct nfs_server *server, struct nfs_fh *fhandle, | |||
63 | }; | 63 | }; |
64 | int status; | 64 | int status; |
65 | 65 | ||
66 | dprintk("%s: call getattr\n", __FUNCTION__); | 66 | dprintk("%s: call getattr\n", __func__); |
67 | nfs_fattr_init(fattr); | 67 | nfs_fattr_init(fattr); |
68 | status = rpc_call_sync(server->nfs_client->cl_rpcclient, &msg, 0); | 68 | status = rpc_call_sync(server->nfs_client->cl_rpcclient, &msg, 0); |
69 | dprintk("%s: reply getattr: %d\n", __FUNCTION__, status); | 69 | dprintk("%s: reply getattr: %d\n", __func__, status); |
70 | if (status) | 70 | if (status) |
71 | return status; | 71 | return status; |
72 | dprintk("%s: call statfs\n", __FUNCTION__); | 72 | dprintk("%s: call statfs\n", __func__); |
73 | msg.rpc_proc = &nfs_procedures[NFSPROC_STATFS]; | 73 | msg.rpc_proc = &nfs_procedures[NFSPROC_STATFS]; |
74 | msg.rpc_resp = &fsinfo; | 74 | msg.rpc_resp = &fsinfo; |
75 | status = rpc_call_sync(server->nfs_client->cl_rpcclient, &msg, 0); | 75 | status = rpc_call_sync(server->nfs_client->cl_rpcclient, &msg, 0); |
76 | dprintk("%s: reply statfs: %d\n", __FUNCTION__, status); | 76 | dprintk("%s: reply statfs: %d\n", __func__, status); |
77 | if (status) | 77 | if (status) |
78 | return status; | 78 | return status; |
79 | info->rtmax = NFS_MAXDATA; | 79 | info->rtmax = NFS_MAXDATA; |
diff --git a/fs/nfs/read.c b/fs/nfs/read.c index 16f57e0af999..40d17987d0e8 100644 --- a/fs/nfs/read.c +++ b/fs/nfs/read.c | |||
@@ -329,7 +329,7 @@ int nfs_readpage_result(struct rpc_task *task, struct nfs_read_data *data) | |||
329 | { | 329 | { |
330 | int status; | 330 | int status; |
331 | 331 | ||
332 | dprintk("NFS: %s: %5u, (status %d)\n", __FUNCTION__, task->tk_pid, | 332 | dprintk("NFS: %s: %5u, (status %d)\n", __func__, task->tk_pid, |
333 | task->tk_status); | 333 | task->tk_status); |
334 | 334 | ||
335 | status = NFS_PROTO(data->inode)->read_done(task, data); | 335 | status = NFS_PROTO(data->inode)->read_done(task, data); |
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index 7226a506f3ca..2a4a024a4e7b 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -405,7 +405,7 @@ static int nfs_statfs(struct dentry *dentry, struct kstatfs *buf) | |||
405 | return 0; | 405 | return 0; |
406 | 406 | ||
407 | out_err: | 407 | out_err: |
408 | dprintk("%s: statfs error = %d\n", __FUNCTION__, -error); | 408 | dprintk("%s: statfs error = %d\n", __func__, -error); |
409 | unlock_kernel(); | 409 | unlock_kernel(); |
410 | return error; | 410 | return error; |
411 | } | 411 | } |
@@ -2015,6 +2015,10 @@ static int nfs4_get_sb(struct file_system_type *fs_type, | |||
2015 | goto error_splat_super; | 2015 | goto error_splat_super; |
2016 | } | 2016 | } |
2017 | 2017 | ||
2018 | error = security_sb_set_mnt_opts(s, &data.lsm_opts); | ||
2019 | if (error) | ||
2020 | goto error_splat_root; | ||
2021 | |||
2018 | s->s_flags |= MS_ACTIVE; | 2022 | s->s_flags |= MS_ACTIVE; |
2019 | mnt->mnt_sb = s; | 2023 | mnt->mnt_sb = s; |
2020 | mnt->mnt_root = mntroot; | 2024 | mnt->mnt_root = mntroot; |
@@ -2031,6 +2035,8 @@ out_free: | |||
2031 | nfs_free_server(server); | 2035 | nfs_free_server(server); |
2032 | goto out; | 2036 | goto out; |
2033 | 2037 | ||
2038 | error_splat_root: | ||
2039 | dput(mntroot); | ||
2034 | error_splat_super: | 2040 | error_splat_super: |
2035 | up_write(&s->s_umount); | 2041 | up_write(&s->s_umount); |
2036 | deactivate_super(s); | 2042 | deactivate_super(s); |
@@ -2114,6 +2120,8 @@ static int nfs4_xdev_get_sb(struct file_system_type *fs_type, int flags, | |||
2114 | mnt->mnt_sb = s; | 2120 | mnt->mnt_sb = s; |
2115 | mnt->mnt_root = mntroot; | 2121 | mnt->mnt_root = mntroot; |
2116 | 2122 | ||
2123 | security_sb_clone_mnt_opts(data->sb, s); | ||
2124 | |||
2117 | dprintk("<-- nfs4_xdev_get_sb() = 0\n"); | 2125 | dprintk("<-- nfs4_xdev_get_sb() = 0\n"); |
2118 | return 0; | 2126 | return 0; |
2119 | 2127 | ||
@@ -2197,6 +2205,8 @@ static int nfs4_referral_get_sb(struct file_system_type *fs_type, int flags, | |||
2197 | mnt->mnt_sb = s; | 2205 | mnt->mnt_sb = s; |
2198 | mnt->mnt_root = mntroot; | 2206 | mnt->mnt_root = mntroot; |
2199 | 2207 | ||
2208 | security_sb_clone_mnt_opts(data->sb, s); | ||
2209 | |||
2200 | dprintk("<-- nfs4_referral_get_sb() = 0\n"); | 2210 | dprintk("<-- nfs4_referral_get_sb() = 0\n"); |
2201 | return 0; | 2211 | return 0; |
2202 | 2212 | ||
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 1ade11d1ba07..6d8ace3e3259 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
@@ -415,7 +415,7 @@ nfs_dirty_request(struct nfs_page *req) | |||
415 | 415 | ||
416 | if (page == NULL || test_bit(PG_NEED_COMMIT, &req->wb_flags)) | 416 | if (page == NULL || test_bit(PG_NEED_COMMIT, &req->wb_flags)) |
417 | return 0; | 417 | return 0; |
418 | return !PageWriteback(req->wb_page); | 418 | return !PageWriteback(page); |
419 | } | 419 | } |
420 | 420 | ||
421 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) | 421 | #if defined(CONFIG_NFS_V3) || defined(CONFIG_NFS_V4) |
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c index 0b3ffa9840c2..4d4760e687c3 100644 --- a/fs/nfsd/nfs4callback.c +++ b/fs/nfsd/nfs4callback.c | |||
@@ -419,9 +419,9 @@ static int do_probe_callback(void *data) | |||
419 | out_release_client: | 419 | out_release_client: |
420 | rpc_shutdown_client(client); | 420 | rpc_shutdown_client(client); |
421 | out_err: | 421 | out_err: |
422 | put_nfs4_client(clp); | ||
423 | dprintk("NFSD: warning: no callback path to client %.*s\n", | 422 | dprintk("NFSD: warning: no callback path to client %.*s\n", |
424 | (int)clp->cl_name.len, clp->cl_name.data); | 423 | (int)clp->cl_name.len, clp->cl_name.data); |
424 | put_nfs4_client(clp); | ||
425 | return status; | 425 | return status; |
426 | } | 426 | } |
427 | 427 | ||
diff --git a/fs/ntfs/upcase.c b/fs/ntfs/upcase.c index 9101807dc81a..e2f72ca98037 100644 --- a/fs/ntfs/upcase.c +++ b/fs/ntfs/upcase.c | |||
@@ -77,11 +77,10 @@ ntfschar *generate_default_upcase(void) | |||
77 | uc[i] = cpu_to_le16(i); | 77 | uc[i] = cpu_to_le16(i); |
78 | for (r = 0; uc_run_table[r][0]; r++) | 78 | for (r = 0; uc_run_table[r][0]; r++) |
79 | for (i = uc_run_table[r][0]; i < uc_run_table[r][1]; i++) | 79 | for (i = uc_run_table[r][0]; i < uc_run_table[r][1]; i++) |
80 | uc[i] = cpu_to_le16(le16_to_cpu(uc[i]) + | 80 | le16_add_cpu(&uc[i], uc_run_table[r][2]); |
81 | uc_run_table[r][2]); | ||
82 | for (r = 0; uc_dup_table[r][0]; r++) | 81 | for (r = 0; uc_dup_table[r][0]; r++) |
83 | for (i = uc_dup_table[r][0]; i < uc_dup_table[r][1]; i += 2) | 82 | for (i = uc_dup_table[r][0]; i < uc_dup_table[r][1]; i += 2) |
84 | uc[i + 1] = cpu_to_le16(le16_to_cpu(uc[i + 1]) - 1); | 83 | le16_add_cpu(&uc[i + 1], -1); |
85 | for (r = 0; uc_word_table[r][0]; r++) | 84 | for (r = 0; uc_word_table[r][0]; r++) |
86 | uc[uc_word_table[r][0]] = cpu_to_le16(uc_word_table[r][1]); | 85 | uc[uc_word_table[r][0]] = cpu_to_le16(uc_word_table[r][1]); |
87 | return uc; | 86 | return uc; |
diff --git a/fs/ocfs2/alloc.c b/fs/ocfs2/alloc.c index 41f84c92094f..10bfb466e068 100644 --- a/fs/ocfs2/alloc.c +++ b/fs/ocfs2/alloc.c | |||
@@ -2788,7 +2788,7 @@ static int ocfs2_merge_rec_right(struct inode *inode, | |||
2788 | BUG_ON(index >= le16_to_cpu(el->l_next_free_rec)); | 2788 | BUG_ON(index >= le16_to_cpu(el->l_next_free_rec)); |
2789 | left_rec = &el->l_recs[index]; | 2789 | left_rec = &el->l_recs[index]; |
2790 | 2790 | ||
2791 | if (index == le16_to_cpu(el->l_next_free_rec - 1) && | 2791 | if (index == le16_to_cpu(el->l_next_free_rec) - 1 && |
2792 | le16_to_cpu(el->l_next_free_rec) == le16_to_cpu(el->l_count)) { | 2792 | le16_to_cpu(el->l_next_free_rec) == le16_to_cpu(el->l_count)) { |
2793 | /* we meet with a cross extent block merge. */ | 2793 | /* we meet with a cross extent block merge. */ |
2794 | ret = ocfs2_get_right_path(inode, left_path, &right_path); | 2794 | ret = ocfs2_get_right_path(inode, left_path, &right_path); |
@@ -2802,7 +2802,7 @@ static int ocfs2_merge_rec_right(struct inode *inode, | |||
2802 | BUG_ON(next_free <= 0); | 2802 | BUG_ON(next_free <= 0); |
2803 | right_rec = &right_el->l_recs[0]; | 2803 | right_rec = &right_el->l_recs[0]; |
2804 | if (ocfs2_is_empty_extent(right_rec)) { | 2804 | if (ocfs2_is_empty_extent(right_rec)) { |
2805 | BUG_ON(le16_to_cpu(next_free) <= 1); | 2805 | BUG_ON(next_free <= 1); |
2806 | right_rec = &right_el->l_recs[1]; | 2806 | right_rec = &right_el->l_recs[1]; |
2807 | } | 2807 | } |
2808 | 2808 | ||
diff --git a/fs/ocfs2/cluster/tcp.c b/fs/ocfs2/cluster/tcp.c index 1e44ad14881a..a27d61581bd6 100644 --- a/fs/ocfs2/cluster/tcp.c +++ b/fs/ocfs2/cluster/tcp.c | |||
@@ -142,53 +142,43 @@ static void o2net_idle_timer(unsigned long data); | |||
142 | static void o2net_sc_postpone_idle(struct o2net_sock_container *sc); | 142 | static void o2net_sc_postpone_idle(struct o2net_sock_container *sc); |
143 | static void o2net_sc_reset_idle_timer(struct o2net_sock_container *sc); | 143 | static void o2net_sc_reset_idle_timer(struct o2net_sock_container *sc); |
144 | 144 | ||
145 | static void o2net_init_nst(struct o2net_send_tracking *nst, u32 msgtype, | ||
146 | u32 msgkey, struct task_struct *task, u8 node) | ||
147 | { | ||
148 | #ifdef CONFIG_DEBUG_FS | 145 | #ifdef CONFIG_DEBUG_FS |
146 | void o2net_init_nst(struct o2net_send_tracking *nst, u32 msgtype, | ||
147 | u32 msgkey, struct task_struct *task, u8 node) | ||
148 | { | ||
149 | INIT_LIST_HEAD(&nst->st_net_debug_item); | 149 | INIT_LIST_HEAD(&nst->st_net_debug_item); |
150 | nst->st_task = task; | 150 | nst->st_task = task; |
151 | nst->st_msg_type = msgtype; | 151 | nst->st_msg_type = msgtype; |
152 | nst->st_msg_key = msgkey; | 152 | nst->st_msg_key = msgkey; |
153 | nst->st_node = node; | 153 | nst->st_node = node; |
154 | #endif | ||
155 | } | 154 | } |
156 | 155 | ||
157 | static void o2net_set_nst_sock_time(struct o2net_send_tracking *nst) | 156 | void o2net_set_nst_sock_time(struct o2net_send_tracking *nst) |
158 | { | 157 | { |
159 | #ifdef CONFIG_DEBUG_FS | ||
160 | do_gettimeofday(&nst->st_sock_time); | 158 | do_gettimeofday(&nst->st_sock_time); |
161 | #endif | ||
162 | } | 159 | } |
163 | 160 | ||
164 | static void o2net_set_nst_send_time(struct o2net_send_tracking *nst) | 161 | void o2net_set_nst_send_time(struct o2net_send_tracking *nst) |
165 | { | 162 | { |
166 | #ifdef CONFIG_DEBUG_FS | ||
167 | do_gettimeofday(&nst->st_send_time); | 163 | do_gettimeofday(&nst->st_send_time); |
168 | #endif | ||
169 | } | 164 | } |
170 | 165 | ||
171 | static void o2net_set_nst_status_time(struct o2net_send_tracking *nst) | 166 | void o2net_set_nst_status_time(struct o2net_send_tracking *nst) |
172 | { | 167 | { |
173 | #ifdef CONFIG_DEBUG_FS | ||
174 | do_gettimeofday(&nst->st_status_time); | 168 | do_gettimeofday(&nst->st_status_time); |
175 | #endif | ||
176 | } | 169 | } |
177 | 170 | ||
178 | static void o2net_set_nst_sock_container(struct o2net_send_tracking *nst, | 171 | void o2net_set_nst_sock_container(struct o2net_send_tracking *nst, |
179 | struct o2net_sock_container *sc) | 172 | struct o2net_sock_container *sc) |
180 | { | 173 | { |
181 | #ifdef CONFIG_DEBUG_FS | ||
182 | nst->st_sc = sc; | 174 | nst->st_sc = sc; |
183 | #endif | ||
184 | } | 175 | } |
185 | 176 | ||
186 | static void o2net_set_nst_msg_id(struct o2net_send_tracking *nst, u32 msg_id) | 177 | void o2net_set_nst_msg_id(struct o2net_send_tracking *nst, u32 msg_id) |
187 | { | 178 | { |
188 | #ifdef CONFIG_DEBUG_FS | ||
189 | nst->st_id = msg_id; | 179 | nst->st_id = msg_id; |
190 | #endif | ||
191 | } | 180 | } |
181 | #endif /* CONFIG_DEBUG_FS */ | ||
192 | 182 | ||
193 | static inline int o2net_reconnect_delay(void) | 183 | static inline int o2net_reconnect_delay(void) |
194 | { | 184 | { |
diff --git a/fs/ocfs2/cluster/tcp.h b/fs/ocfs2/cluster/tcp.h index a705d5d19036..fd6179eb26d4 100644 --- a/fs/ocfs2/cluster/tcp.h +++ b/fs/ocfs2/cluster/tcp.h | |||
@@ -128,23 +128,23 @@ void o2net_debug_del_nst(struct o2net_send_tracking *nst); | |||
128 | void o2net_debug_add_sc(struct o2net_sock_container *sc); | 128 | void o2net_debug_add_sc(struct o2net_sock_container *sc); |
129 | void o2net_debug_del_sc(struct o2net_sock_container *sc); | 129 | void o2net_debug_del_sc(struct o2net_sock_container *sc); |
130 | #else | 130 | #else |
131 | static int o2net_debugfs_init(void) | 131 | static inline int o2net_debugfs_init(void) |
132 | { | 132 | { |
133 | return 0; | 133 | return 0; |
134 | } | 134 | } |
135 | static void o2net_debugfs_exit(void) | 135 | static inline void o2net_debugfs_exit(void) |
136 | { | 136 | { |
137 | } | 137 | } |
138 | static void o2net_debug_add_nst(struct o2net_send_tracking *nst) | 138 | static inline void o2net_debug_add_nst(struct o2net_send_tracking *nst) |
139 | { | 139 | { |
140 | } | 140 | } |
141 | static void o2net_debug_del_nst(struct o2net_send_tracking *nst) | 141 | static inline void o2net_debug_del_nst(struct o2net_send_tracking *nst) |
142 | { | 142 | { |
143 | } | 143 | } |
144 | static void o2net_debug_add_sc(struct o2net_sock_container *sc) | 144 | static inline void o2net_debug_add_sc(struct o2net_sock_container *sc) |
145 | { | 145 | { |
146 | } | 146 | } |
147 | static void o2net_debug_del_sc(struct o2net_sock_container *sc) | 147 | static inline void o2net_debug_del_sc(struct o2net_sock_container *sc) |
148 | { | 148 | { |
149 | } | 149 | } |
150 | #endif /* CONFIG_DEBUG_FS */ | 150 | #endif /* CONFIG_DEBUG_FS */ |
diff --git a/fs/ocfs2/cluster/tcp_internal.h b/fs/ocfs2/cluster/tcp_internal.h index 8d58cfe410b1..18307ff81b77 100644 --- a/fs/ocfs2/cluster/tcp_internal.h +++ b/fs/ocfs2/cluster/tcp_internal.h | |||
@@ -224,10 +224,42 @@ struct o2net_send_tracking { | |||
224 | struct timeval st_send_time; | 224 | struct timeval st_send_time; |
225 | struct timeval st_status_time; | 225 | struct timeval st_status_time; |
226 | }; | 226 | }; |
227 | |||
228 | void o2net_init_nst(struct o2net_send_tracking *nst, u32 msgtype, | ||
229 | u32 msgkey, struct task_struct *task, u8 node); | ||
230 | void o2net_set_nst_sock_time(struct o2net_send_tracking *nst); | ||
231 | void o2net_set_nst_send_time(struct o2net_send_tracking *nst); | ||
232 | void o2net_set_nst_status_time(struct o2net_send_tracking *nst); | ||
233 | void o2net_set_nst_sock_container(struct o2net_send_tracking *nst, | ||
234 | struct o2net_sock_container *sc); | ||
235 | void o2net_set_nst_msg_id(struct o2net_send_tracking *nst, u32 msg_id); | ||
236 | |||
227 | #else | 237 | #else |
228 | struct o2net_send_tracking { | 238 | struct o2net_send_tracking { |
229 | u32 dummy; | 239 | u32 dummy; |
230 | }; | 240 | }; |
241 | |||
242 | static inline void o2net_init_nst(struct o2net_send_tracking *nst, u32 msgtype, | ||
243 | u32 msgkey, struct task_struct *task, u8 node) | ||
244 | { | ||
245 | } | ||
246 | static inline void o2net_set_nst_sock_time(struct o2net_send_tracking *nst) | ||
247 | { | ||
248 | } | ||
249 | static inline void o2net_set_nst_send_time(struct o2net_send_tracking *nst) | ||
250 | { | ||
251 | } | ||
252 | static inline void o2net_set_nst_status_time(struct o2net_send_tracking *nst) | ||
253 | { | ||
254 | } | ||
255 | static inline void o2net_set_nst_sock_container(struct o2net_send_tracking *nst, | ||
256 | struct o2net_sock_container *sc) | ||
257 | { | ||
258 | } | ||
259 | static inline void o2net_set_nst_msg_id(struct o2net_send_tracking *nst, | ||
260 | u32 msg_id) | ||
261 | { | ||
262 | } | ||
231 | #endif /* CONFIG_DEBUG_FS */ | 263 | #endif /* CONFIG_DEBUG_FS */ |
232 | 264 | ||
233 | #endif /* O2CLUSTER_TCP_INTERNAL_H */ | 265 | #endif /* O2CLUSTER_TCP_INTERNAL_H */ |
diff --git a/fs/ocfs2/dlm/dlmdebug.h b/fs/ocfs2/dlm/dlmdebug.h index d34a62a3a625..8c686d22f9c7 100644 --- a/fs/ocfs2/dlm/dlmdebug.h +++ b/fs/ocfs2/dlm/dlmdebug.h | |||
@@ -60,25 +60,25 @@ void dlm_destroy_debugfs_root(void); | |||
60 | 60 | ||
61 | #else | 61 | #else |
62 | 62 | ||
63 | static int dlm_debug_init(struct dlm_ctxt *dlm) | 63 | static inline int dlm_debug_init(struct dlm_ctxt *dlm) |
64 | { | 64 | { |
65 | return 0; | 65 | return 0; |
66 | } | 66 | } |
67 | static void dlm_debug_shutdown(struct dlm_ctxt *dlm) | 67 | static inline void dlm_debug_shutdown(struct dlm_ctxt *dlm) |
68 | { | 68 | { |
69 | } | 69 | } |
70 | static int dlm_create_debugfs_subroot(struct dlm_ctxt *dlm) | 70 | static inline int dlm_create_debugfs_subroot(struct dlm_ctxt *dlm) |
71 | { | 71 | { |
72 | return 0; | 72 | return 0; |
73 | } | 73 | } |
74 | static void dlm_destroy_debugfs_subroot(struct dlm_ctxt *dlm) | 74 | static inline void dlm_destroy_debugfs_subroot(struct dlm_ctxt *dlm) |
75 | { | 75 | { |
76 | } | 76 | } |
77 | static int dlm_create_debugfs_root(void) | 77 | static inline int dlm_create_debugfs_root(void) |
78 | { | 78 | { |
79 | return 0; | 79 | return 0; |
80 | } | 80 | } |
81 | static void dlm_destroy_debugfs_root(void) | 81 | static inline void dlm_destroy_debugfs_root(void) |
82 | { | 82 | { |
83 | } | 83 | } |
84 | 84 | ||
diff --git a/fs/ocfs2/stack_user.c b/fs/ocfs2/stack_user.c index b503772cd0ec..6b97d11f6bf8 100644 --- a/fs/ocfs2/stack_user.c +++ b/fs/ocfs2/stack_user.c | |||
@@ -61,7 +61,7 @@ | |||
61 | * negotiated by the client. The client negotiates based on the maximum | 61 | * negotiated by the client. The client negotiates based on the maximum |
62 | * version advertised in /sys/fs/ocfs2/max_locking_protocol. The major | 62 | * version advertised in /sys/fs/ocfs2/max_locking_protocol. The major |
63 | * number from the "SETV" message must match | 63 | * number from the "SETV" message must match |
64 | * user_stack.sp_proto->lp_max_version.pv_major, and the minor number | 64 | * ocfs2_user_plugin.sp_proto->lp_max_version.pv_major, and the minor number |
65 | * must be less than or equal to ...->lp_max_version.pv_minor. | 65 | * must be less than or equal to ...->lp_max_version.pv_minor. |
66 | * | 66 | * |
67 | * Once this information has been set, mounts will be allowed. From this | 67 | * Once this information has been set, mounts will be allowed. From this |
@@ -153,7 +153,7 @@ union ocfs2_control_message { | |||
153 | struct ocfs2_control_message_down u_down; | 153 | struct ocfs2_control_message_down u_down; |
154 | }; | 154 | }; |
155 | 155 | ||
156 | static struct ocfs2_stack_plugin user_stack; | 156 | static struct ocfs2_stack_plugin ocfs2_user_plugin; |
157 | 157 | ||
158 | static atomic_t ocfs2_control_opened; | 158 | static atomic_t ocfs2_control_opened; |
159 | static int ocfs2_control_this_node = -1; | 159 | static int ocfs2_control_this_node = -1; |
@@ -399,7 +399,7 @@ static int ocfs2_control_do_setversion_msg(struct file *file, | |||
399 | char *ptr = NULL; | 399 | char *ptr = NULL; |
400 | struct ocfs2_control_private *p = file->private_data; | 400 | struct ocfs2_control_private *p = file->private_data; |
401 | struct ocfs2_protocol_version *max = | 401 | struct ocfs2_protocol_version *max = |
402 | &user_stack.sp_proto->lp_max_version; | 402 | &ocfs2_user_plugin.sp_proto->lp_max_version; |
403 | 403 | ||
404 | if (ocfs2_control_get_handshake_state(file) != | 404 | if (ocfs2_control_get_handshake_state(file) != |
405 | OCFS2_CONTROL_HANDSHAKE_PROTOCOL) | 405 | OCFS2_CONTROL_HANDSHAKE_PROTOCOL) |
@@ -680,7 +680,7 @@ static void fsdlm_lock_ast_wrapper(void *astarg) | |||
680 | struct dlm_lksb *lksb = fsdlm_astarg_to_lksb(astarg); | 680 | struct dlm_lksb *lksb = fsdlm_astarg_to_lksb(astarg); |
681 | int status = lksb->sb_status; | 681 | int status = lksb->sb_status; |
682 | 682 | ||
683 | BUG_ON(user_stack.sp_proto == NULL); | 683 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); |
684 | 684 | ||
685 | /* | 685 | /* |
686 | * For now we're punting on the issue of other non-standard errors | 686 | * For now we're punting on the issue of other non-standard errors |
@@ -693,16 +693,16 @@ static void fsdlm_lock_ast_wrapper(void *astarg) | |||
693 | */ | 693 | */ |
694 | 694 | ||
695 | if (status == -DLM_EUNLOCK || status == -DLM_ECANCEL) | 695 | if (status == -DLM_EUNLOCK || status == -DLM_ECANCEL) |
696 | user_stack.sp_proto->lp_unlock_ast(astarg, 0); | 696 | ocfs2_user_plugin.sp_proto->lp_unlock_ast(astarg, 0); |
697 | else | 697 | else |
698 | user_stack.sp_proto->lp_lock_ast(astarg); | 698 | ocfs2_user_plugin.sp_proto->lp_lock_ast(astarg); |
699 | } | 699 | } |
700 | 700 | ||
701 | static void fsdlm_blocking_ast_wrapper(void *astarg, int level) | 701 | static void fsdlm_blocking_ast_wrapper(void *astarg, int level) |
702 | { | 702 | { |
703 | BUG_ON(user_stack.sp_proto == NULL); | 703 | BUG_ON(ocfs2_user_plugin.sp_proto == NULL); |
704 | 704 | ||
705 | user_stack.sp_proto->lp_blocking_ast(astarg, level); | 705 | ocfs2_user_plugin.sp_proto->lp_blocking_ast(astarg, level); |
706 | } | 706 | } |
707 | 707 | ||
708 | static int user_dlm_lock(struct ocfs2_cluster_connection *conn, | 708 | static int user_dlm_lock(struct ocfs2_cluster_connection *conn, |
@@ -838,7 +838,7 @@ static int user_cluster_this_node(unsigned int *this_node) | |||
838 | return 0; | 838 | return 0; |
839 | } | 839 | } |
840 | 840 | ||
841 | static struct ocfs2_stack_operations user_stack_ops = { | 841 | static struct ocfs2_stack_operations ocfs2_user_plugin_ops = { |
842 | .connect = user_cluster_connect, | 842 | .connect = user_cluster_connect, |
843 | .disconnect = user_cluster_disconnect, | 843 | .disconnect = user_cluster_disconnect, |
844 | .this_node = user_cluster_this_node, | 844 | .this_node = user_cluster_this_node, |
@@ -849,20 +849,20 @@ static struct ocfs2_stack_operations user_stack_ops = { | |||
849 | .dump_lksb = user_dlm_dump_lksb, | 849 | .dump_lksb = user_dlm_dump_lksb, |
850 | }; | 850 | }; |
851 | 851 | ||
852 | static struct ocfs2_stack_plugin user_stack = { | 852 | static struct ocfs2_stack_plugin ocfs2_user_plugin = { |
853 | .sp_name = "user", | 853 | .sp_name = "user", |
854 | .sp_ops = &user_stack_ops, | 854 | .sp_ops = &ocfs2_user_plugin_ops, |
855 | .sp_owner = THIS_MODULE, | 855 | .sp_owner = THIS_MODULE, |
856 | }; | 856 | }; |
857 | 857 | ||
858 | 858 | ||
859 | static int __init user_stack_init(void) | 859 | static int __init ocfs2_user_plugin_init(void) |
860 | { | 860 | { |
861 | int rc; | 861 | int rc; |
862 | 862 | ||
863 | rc = ocfs2_control_init(); | 863 | rc = ocfs2_control_init(); |
864 | if (!rc) { | 864 | if (!rc) { |
865 | rc = ocfs2_stack_glue_register(&user_stack); | 865 | rc = ocfs2_stack_glue_register(&ocfs2_user_plugin); |
866 | if (rc) | 866 | if (rc) |
867 | ocfs2_control_exit(); | 867 | ocfs2_control_exit(); |
868 | } | 868 | } |
@@ -870,14 +870,14 @@ static int __init user_stack_init(void) | |||
870 | return rc; | 870 | return rc; |
871 | } | 871 | } |
872 | 872 | ||
873 | static void __exit user_stack_exit(void) | 873 | static void __exit ocfs2_user_plugin_exit(void) |
874 | { | 874 | { |
875 | ocfs2_stack_glue_unregister(&user_stack); | 875 | ocfs2_stack_glue_unregister(&ocfs2_user_plugin); |
876 | ocfs2_control_exit(); | 876 | ocfs2_control_exit(); |
877 | } | 877 | } |
878 | 878 | ||
879 | MODULE_AUTHOR("Oracle"); | 879 | MODULE_AUTHOR("Oracle"); |
880 | MODULE_DESCRIPTION("ocfs2 driver for userspace cluster stacks"); | 880 | MODULE_DESCRIPTION("ocfs2 driver for userspace cluster stacks"); |
881 | MODULE_LICENSE("GPL"); | 881 | MODULE_LICENSE("GPL"); |
882 | module_init(user_stack_init); | 882 | module_init(ocfs2_user_plugin_init); |
883 | module_exit(user_stack_exit); | 883 | module_exit(ocfs2_user_plugin_exit); |
diff --git a/fs/proc/base.c b/fs/proc/base.c index 808cbdc193d3..c447e0743a3c 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -2441,7 +2441,7 @@ static const struct pid_entry tgid_base_stuff[] = { | |||
2441 | REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), | 2441 | REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), |
2442 | #ifdef CONFIG_AUDITSYSCALL | 2442 | #ifdef CONFIG_AUDITSYSCALL |
2443 | REG("loginuid", S_IWUSR|S_IRUGO, loginuid), | 2443 | REG("loginuid", S_IWUSR|S_IRUGO, loginuid), |
2444 | REG("sessionid", S_IRUSR, sessionid), | 2444 | REG("sessionid", S_IRUGO, sessionid), |
2445 | #endif | 2445 | #endif |
2446 | #ifdef CONFIG_FAULT_INJECTION | 2446 | #ifdef CONFIG_FAULT_INJECTION |
2447 | REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), | 2447 | REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), |
diff --git a/fs/proc/inode.c b/fs/proc/inode.c index 6f4e8dc97da1..b08d10017911 100644 --- a/fs/proc/inode.c +++ b/fs/proc/inode.c | |||
@@ -425,7 +425,8 @@ struct inode *proc_get_inode(struct super_block *sb, unsigned int ino, | |||
425 | } | 425 | } |
426 | } | 426 | } |
427 | unlock_new_inode(inode); | 427 | unlock_new_inode(inode); |
428 | } | 428 | } else |
429 | module_put(de->owner); | ||
429 | return inode; | 430 | return inode; |
430 | 431 | ||
431 | out_ino: | 432 | out_ino: |
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c index 74a323d2b850..32dc14cd8900 100644 --- a/fs/proc/proc_misc.c +++ b/fs/proc/proc_misc.c | |||
@@ -139,7 +139,7 @@ static int meminfo_read_proc(char *page, char **start, off_t off, | |||
139 | #define K(x) ((x) << (PAGE_SHIFT - 10)) | 139 | #define K(x) ((x) << (PAGE_SHIFT - 10)) |
140 | si_meminfo(&i); | 140 | si_meminfo(&i); |
141 | si_swapinfo(&i); | 141 | si_swapinfo(&i); |
142 | committed = atomic_read(&vm_committed_space); | 142 | committed = atomic_long_read(&vm_committed_space); |
143 | allowed = ((totalram_pages - hugetlb_total_pages()) | 143 | allowed = ((totalram_pages - hugetlb_total_pages()) |
144 | * sysctl_overcommit_ratio / 100) + total_swap_pages; | 144 | * sysctl_overcommit_ratio / 100) + total_swap_pages; |
145 | 145 | ||
diff --git a/fs/splice.c b/fs/splice.c index 78150038b584..aa5f6f60b305 100644 --- a/fs/splice.c +++ b/fs/splice.c | |||
@@ -58,8 +58,8 @@ static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe, | |||
58 | */ | 58 | */ |
59 | wait_on_page_writeback(page); | 59 | wait_on_page_writeback(page); |
60 | 60 | ||
61 | if (PagePrivate(page)) | 61 | if (PagePrivate(page) && !try_to_release_page(page, GFP_KERNEL)) |
62 | try_to_release_page(page, GFP_KERNEL); | 62 | goto out_unlock; |
63 | 63 | ||
64 | /* | 64 | /* |
65 | * If we succeeded in removing the mapping, set LRU flag | 65 | * If we succeeded in removing the mapping, set LRU flag |
@@ -75,6 +75,7 @@ static int page_cache_pipe_buf_steal(struct pipe_inode_info *pipe, | |||
75 | * Raced with truncate or failed to remove page from current | 75 | * Raced with truncate or failed to remove page from current |
76 | * address space, unlock and return failure. | 76 | * address space, unlock and return failure. |
77 | */ | 77 | */ |
78 | out_unlock: | ||
78 | unlock_page(page); | 79 | unlock_page(page); |
79 | return 1; | 80 | return 1; |
80 | } | 81 | } |
@@ -983,7 +984,7 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, | |||
983 | 984 | ||
984 | while (len) { | 985 | while (len) { |
985 | size_t read_len; | 986 | size_t read_len; |
986 | loff_t pos = sd->pos; | 987 | loff_t pos = sd->pos, prev_pos = pos; |
987 | 988 | ||
988 | ret = do_splice_to(in, &pos, pipe, len, flags); | 989 | ret = do_splice_to(in, &pos, pipe, len, flags); |
989 | if (unlikely(ret <= 0)) | 990 | if (unlikely(ret <= 0)) |
@@ -998,15 +999,19 @@ ssize_t splice_direct_to_actor(struct file *in, struct splice_desc *sd, | |||
998 | * could get stuck data in the internal pipe: | 999 | * could get stuck data in the internal pipe: |
999 | */ | 1000 | */ |
1000 | ret = actor(pipe, sd); | 1001 | ret = actor(pipe, sd); |
1001 | if (unlikely(ret <= 0)) | 1002 | if (unlikely(ret <= 0)) { |
1003 | sd->pos = prev_pos; | ||
1002 | goto out_release; | 1004 | goto out_release; |
1005 | } | ||
1003 | 1006 | ||
1004 | bytes += ret; | 1007 | bytes += ret; |
1005 | len -= ret; | 1008 | len -= ret; |
1006 | sd->pos = pos; | 1009 | sd->pos = pos; |
1007 | 1010 | ||
1008 | if (ret < read_len) | 1011 | if (ret < read_len) { |
1012 | sd->pos = prev_pos + ret; | ||
1009 | goto out_release; | 1013 | goto out_release; |
1014 | } | ||
1010 | } | 1015 | } |
1011 | 1016 | ||
1012 | done: | 1017 | done: |
@@ -1072,7 +1077,7 @@ long do_splice_direct(struct file *in, loff_t *ppos, struct file *out, | |||
1072 | 1077 | ||
1073 | ret = splice_direct_to_actor(in, &sd, direct_splice_actor); | 1078 | ret = splice_direct_to_actor(in, &sd, direct_splice_actor); |
1074 | if (ret > 0) | 1079 | if (ret > 0) |
1075 | *ppos += ret; | 1080 | *ppos = sd.pos; |
1076 | 1081 | ||
1077 | return ret; | 1082 | return ret; |
1078 | } | 1083 | } |
diff --git a/fs/xfs/linux-2.6/xfs_buf.c b/fs/xfs/linux-2.6/xfs_buf.c index 5105015a75ad..98e0e86093b4 100644 --- a/fs/xfs/linux-2.6/xfs_buf.c +++ b/fs/xfs/linux-2.6/xfs_buf.c | |||
@@ -387,6 +387,8 @@ _xfs_buf_lookup_pages( | |||
387 | if (unlikely(page == NULL)) { | 387 | if (unlikely(page == NULL)) { |
388 | if (flags & XBF_READ_AHEAD) { | 388 | if (flags & XBF_READ_AHEAD) { |
389 | bp->b_page_count = i; | 389 | bp->b_page_count = i; |
390 | for (i = 0; i < bp->b_page_count; i++) | ||
391 | unlock_page(bp->b_pages[i]); | ||
390 | return -ENOMEM; | 392 | return -ENOMEM; |
391 | } | 393 | } |
392 | 394 | ||
@@ -416,17 +418,24 @@ _xfs_buf_lookup_pages( | |||
416 | ASSERT(!PagePrivate(page)); | 418 | ASSERT(!PagePrivate(page)); |
417 | if (!PageUptodate(page)) { | 419 | if (!PageUptodate(page)) { |
418 | page_count--; | 420 | page_count--; |
419 | if (blocksize < PAGE_CACHE_SIZE && !PagePrivate(page)) { | 421 | if (blocksize >= PAGE_CACHE_SIZE) { |
422 | if (flags & XBF_READ) | ||
423 | bp->b_flags |= _XBF_PAGE_LOCKED; | ||
424 | } else if (!PagePrivate(page)) { | ||
420 | if (test_page_region(page, offset, nbytes)) | 425 | if (test_page_region(page, offset, nbytes)) |
421 | page_count++; | 426 | page_count++; |
422 | } | 427 | } |
423 | } | 428 | } |
424 | 429 | ||
425 | unlock_page(page); | ||
426 | bp->b_pages[i] = page; | 430 | bp->b_pages[i] = page; |
427 | offset = 0; | 431 | offset = 0; |
428 | } | 432 | } |
429 | 433 | ||
434 | if (!(bp->b_flags & _XBF_PAGE_LOCKED)) { | ||
435 | for (i = 0; i < bp->b_page_count; i++) | ||
436 | unlock_page(bp->b_pages[i]); | ||
437 | } | ||
438 | |||
430 | if (page_count == bp->b_page_count) | 439 | if (page_count == bp->b_page_count) |
431 | bp->b_flags |= XBF_DONE; | 440 | bp->b_flags |= XBF_DONE; |
432 | 441 | ||
@@ -746,6 +755,7 @@ xfs_buf_associate_memory( | |||
746 | bp->b_count_desired = len; | 755 | bp->b_count_desired = len; |
747 | bp->b_buffer_length = buflen; | 756 | bp->b_buffer_length = buflen; |
748 | bp->b_flags |= XBF_MAPPED; | 757 | bp->b_flags |= XBF_MAPPED; |
758 | bp->b_flags &= ~_XBF_PAGE_LOCKED; | ||
749 | 759 | ||
750 | return 0; | 760 | return 0; |
751 | } | 761 | } |
@@ -1093,8 +1103,10 @@ _xfs_buf_ioend( | |||
1093 | xfs_buf_t *bp, | 1103 | xfs_buf_t *bp, |
1094 | int schedule) | 1104 | int schedule) |
1095 | { | 1105 | { |
1096 | if (atomic_dec_and_test(&bp->b_io_remaining) == 1) | 1106 | if (atomic_dec_and_test(&bp->b_io_remaining) == 1) { |
1107 | bp->b_flags &= ~_XBF_PAGE_LOCKED; | ||
1097 | xfs_buf_ioend(bp, schedule); | 1108 | xfs_buf_ioend(bp, schedule); |
1109 | } | ||
1098 | } | 1110 | } |
1099 | 1111 | ||
1100 | STATIC void | 1112 | STATIC void |
@@ -1125,6 +1137,9 @@ xfs_buf_bio_end_io( | |||
1125 | 1137 | ||
1126 | if (--bvec >= bio->bi_io_vec) | 1138 | if (--bvec >= bio->bi_io_vec) |
1127 | prefetchw(&bvec->bv_page->flags); | 1139 | prefetchw(&bvec->bv_page->flags); |
1140 | |||
1141 | if (bp->b_flags & _XBF_PAGE_LOCKED) | ||
1142 | unlock_page(page); | ||
1128 | } while (bvec >= bio->bi_io_vec); | 1143 | } while (bvec >= bio->bi_io_vec); |
1129 | 1144 | ||
1130 | _xfs_buf_ioend(bp, 1); | 1145 | _xfs_buf_ioend(bp, 1); |
@@ -1163,7 +1178,8 @@ _xfs_buf_ioapply( | |||
1163 | * filesystem block size is not smaller than the page size. | 1178 | * filesystem block size is not smaller than the page size. |
1164 | */ | 1179 | */ |
1165 | if ((bp->b_buffer_length < PAGE_CACHE_SIZE) && | 1180 | if ((bp->b_buffer_length < PAGE_CACHE_SIZE) && |
1166 | (bp->b_flags & XBF_READ) && | 1181 | ((bp->b_flags & (XBF_READ|_XBF_PAGE_LOCKED)) == |
1182 | (XBF_READ|_XBF_PAGE_LOCKED)) && | ||
1167 | (blocksize >= PAGE_CACHE_SIZE)) { | 1183 | (blocksize >= PAGE_CACHE_SIZE)) { |
1168 | bio = bio_alloc(GFP_NOIO, 1); | 1184 | bio = bio_alloc(GFP_NOIO, 1); |
1169 | 1185 | ||
diff --git a/fs/xfs/linux-2.6/xfs_buf.h b/fs/xfs/linux-2.6/xfs_buf.h index 841d7883528d..f948ec7ba9a4 100644 --- a/fs/xfs/linux-2.6/xfs_buf.h +++ b/fs/xfs/linux-2.6/xfs_buf.h | |||
@@ -66,6 +66,25 @@ typedef enum { | |||
66 | _XBF_PAGES = (1 << 18), /* backed by refcounted pages */ | 66 | _XBF_PAGES = (1 << 18), /* backed by refcounted pages */ |
67 | _XBF_RUN_QUEUES = (1 << 19),/* run block device task queue */ | 67 | _XBF_RUN_QUEUES = (1 << 19),/* run block device task queue */ |
68 | _XBF_DELWRI_Q = (1 << 21), /* buffer on delwri queue */ | 68 | _XBF_DELWRI_Q = (1 << 21), /* buffer on delwri queue */ |
69 | |||
70 | /* | ||
71 | * Special flag for supporting metadata blocks smaller than a FSB. | ||
72 | * | ||
73 | * In this case we can have multiple xfs_buf_t on a single page and | ||
74 | * need to lock out concurrent xfs_buf_t readers as they only | ||
75 | * serialise access to the buffer. | ||
76 | * | ||
77 | * If the FSB size >= PAGE_CACHE_SIZE case, we have no serialisation | ||
78 | * between reads of the page. Hence we can have one thread read the | ||
79 | * page and modify it, but then race with another thread that thinks | ||
80 | * the page is not up-to-date and hence reads it again. | ||
81 | * | ||
82 | * The result is that the first modifcation to the page is lost. | ||
83 | * This sort of AGF/AGI reading race can happen when unlinking inodes | ||
84 | * that require truncation and results in the AGI unlinked list | ||
85 | * modifications being lost. | ||
86 | */ | ||
87 | _XBF_PAGE_LOCKED = (1 << 22), | ||
69 | } xfs_buf_flags_t; | 88 | } xfs_buf_flags_t; |
70 | 89 | ||
71 | typedef enum { | 90 | typedef enum { |
diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index 65e78c13d4ae..5f60363b9343 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c | |||
@@ -184,19 +184,24 @@ xfs_file_release( | |||
184 | return -xfs_release(XFS_I(inode)); | 184 | return -xfs_release(XFS_I(inode)); |
185 | } | 185 | } |
186 | 186 | ||
187 | /* | ||
188 | * We ignore the datasync flag here because a datasync is effectively | ||
189 | * identical to an fsync. That is, datasync implies that we need to write | ||
190 | * only the metadata needed to be able to access the data that is written | ||
191 | * if we crash after the call completes. Hence if we are writing beyond | ||
192 | * EOF we have to log the inode size change as well, which makes it a | ||
193 | * full fsync. If we don't write beyond EOF, the inode core will be | ||
194 | * clean in memory and so we don't need to log the inode, just like | ||
195 | * fsync. | ||
196 | */ | ||
187 | STATIC int | 197 | STATIC int |
188 | xfs_file_fsync( | 198 | xfs_file_fsync( |
189 | struct file *filp, | 199 | struct file *filp, |
190 | struct dentry *dentry, | 200 | struct dentry *dentry, |
191 | int datasync) | 201 | int datasync) |
192 | { | 202 | { |
193 | int flags = FSYNC_WAIT; | ||
194 | |||
195 | if (datasync) | ||
196 | flags |= FSYNC_DATA; | ||
197 | xfs_iflags_clear(XFS_I(dentry->d_inode), XFS_ITRUNCATED); | 203 | xfs_iflags_clear(XFS_I(dentry->d_inode), XFS_ITRUNCATED); |
198 | return -xfs_fsync(XFS_I(dentry->d_inode), flags, | 204 | return -xfs_fsync(XFS_I(dentry->d_inode)); |
199 | (xfs_off_t)0, (xfs_off_t)-1); | ||
200 | } | 205 | } |
201 | 206 | ||
202 | /* | 207 | /* |
diff --git a/fs/xfs/linux-2.6/xfs_vnode.h b/fs/xfs/linux-2.6/xfs_vnode.h index 9d73cb5c0fc7..25eb2a9e8d9b 100644 --- a/fs/xfs/linux-2.6/xfs_vnode.h +++ b/fs/xfs/linux-2.6/xfs_vnode.h | |||
@@ -230,14 +230,6 @@ static inline void vn_atime_to_time_t(bhv_vnode_t *vp, time_t *tt) | |||
230 | #define ATTR_NOSIZETOK 0x400 /* Don't get the SIZE token */ | 230 | #define ATTR_NOSIZETOK 0x400 /* Don't get the SIZE token */ |
231 | 231 | ||
232 | /* | 232 | /* |
233 | * Flags to vop_fsync/reclaim. | ||
234 | */ | ||
235 | #define FSYNC_NOWAIT 0 /* asynchronous flush */ | ||
236 | #define FSYNC_WAIT 0x1 /* synchronous fsync or forced reclaim */ | ||
237 | #define FSYNC_INVAL 0x2 /* flush and invalidate cached data */ | ||
238 | #define FSYNC_DATA 0x4 /* synchronous fsync of data only */ | ||
239 | |||
240 | /* | ||
241 | * Tracking vnode activity. | 233 | * Tracking vnode activity. |
242 | */ | 234 | */ |
243 | #if defined(XFS_INODE_TRACE) | 235 | #if defined(XFS_INODE_TRACE) |
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index cf0bb9c1d621..e569bf5d6cf0 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c | |||
@@ -2974,6 +2974,7 @@ xfs_iflush_cluster( | |||
2974 | xfs_mount_t *mp = ip->i_mount; | 2974 | xfs_mount_t *mp = ip->i_mount; |
2975 | xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino); | 2975 | xfs_perag_t *pag = xfs_get_perag(mp, ip->i_ino); |
2976 | unsigned long first_index, mask; | 2976 | unsigned long first_index, mask; |
2977 | unsigned long inodes_per_cluster; | ||
2977 | int ilist_size; | 2978 | int ilist_size; |
2978 | xfs_inode_t **ilist; | 2979 | xfs_inode_t **ilist; |
2979 | xfs_inode_t *iq; | 2980 | xfs_inode_t *iq; |
@@ -2985,8 +2986,9 @@ xfs_iflush_cluster( | |||
2985 | ASSERT(pag->pagi_inodeok); | 2986 | ASSERT(pag->pagi_inodeok); |
2986 | ASSERT(pag->pag_ici_init); | 2987 | ASSERT(pag->pag_ici_init); |
2987 | 2988 | ||
2988 | ilist_size = XFS_INODE_CLUSTER_SIZE(mp) * sizeof(xfs_inode_t *); | 2989 | inodes_per_cluster = XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog; |
2989 | ilist = kmem_alloc(ilist_size, KM_MAYFAIL); | 2990 | ilist_size = inodes_per_cluster * sizeof(xfs_inode_t *); |
2991 | ilist = kmem_alloc(ilist_size, KM_MAYFAIL|KM_NOFS); | ||
2990 | if (!ilist) | 2992 | if (!ilist) |
2991 | return 0; | 2993 | return 0; |
2992 | 2994 | ||
@@ -2995,8 +2997,7 @@ xfs_iflush_cluster( | |||
2995 | read_lock(&pag->pag_ici_lock); | 2997 | read_lock(&pag->pag_ici_lock); |
2996 | /* really need a gang lookup range call here */ | 2998 | /* really need a gang lookup range call here */ |
2997 | nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, (void**)ilist, | 2999 | nr_found = radix_tree_gang_lookup(&pag->pag_ici_root, (void**)ilist, |
2998 | first_index, | 3000 | first_index, inodes_per_cluster); |
2999 | XFS_INODE_CLUSTER_SIZE(mp)); | ||
3000 | if (nr_found == 0) | 3001 | if (nr_found == 0) |
3001 | goto out_free; | 3002 | goto out_free; |
3002 | 3003 | ||
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 70702a60b4bb..e475e3717eb3 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -856,18 +856,14 @@ xfs_readlink( | |||
856 | /* | 856 | /* |
857 | * xfs_fsync | 857 | * xfs_fsync |
858 | * | 858 | * |
859 | * This is called to sync the inode and its data out to disk. | 859 | * This is called to sync the inode and its data out to disk. We need to hold |
860 | * We need to hold the I/O lock while flushing the data, and | 860 | * the I/O lock while flushing the data, and the inode lock while flushing the |
861 | * the inode lock while flushing the inode. The inode lock CANNOT | 861 | * inode. The inode lock CANNOT be held while flushing the data, so acquire |
862 | * be held while flushing the data, so acquire after we're done | 862 | * after we're done with that. |
863 | * with that. | ||
864 | */ | 863 | */ |
865 | int | 864 | int |
866 | xfs_fsync( | 865 | xfs_fsync( |
867 | xfs_inode_t *ip, | 866 | xfs_inode_t *ip) |
868 | int flag, | ||
869 | xfs_off_t start, | ||
870 | xfs_off_t stop) | ||
871 | { | 867 | { |
872 | xfs_trans_t *tp; | 868 | xfs_trans_t *tp; |
873 | int error; | 869 | int error; |
@@ -875,103 +871,79 @@ xfs_fsync( | |||
875 | 871 | ||
876 | xfs_itrace_entry(ip); | 872 | xfs_itrace_entry(ip); |
877 | 873 | ||
878 | ASSERT(start >= 0 && stop >= -1); | ||
879 | |||
880 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) | 874 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) |
881 | return XFS_ERROR(EIO); | 875 | return XFS_ERROR(EIO); |
882 | 876 | ||
883 | if (flag & FSYNC_DATA) | 877 | /* capture size updates in I/O completion before writing the inode. */ |
884 | filemap_fdatawait(vn_to_inode(XFS_ITOV(ip))->i_mapping); | 878 | error = filemap_fdatawait(vn_to_inode(XFS_ITOV(ip))->i_mapping); |
879 | if (error) | ||
880 | return XFS_ERROR(error); | ||
885 | 881 | ||
886 | /* | 882 | /* |
887 | * We always need to make sure that the required inode state | 883 | * We always need to make sure that the required inode state is safe on |
888 | * is safe on disk. The vnode might be clean but because | 884 | * disk. The vnode might be clean but we still might need to force the |
889 | * of committed transactions that haven't hit the disk yet. | 885 | * log because of committed transactions that haven't hit the disk yet. |
890 | * Likewise, there could be unflushed non-transactional | 886 | * Likewise, there could be unflushed non-transactional changes to the |
891 | * changes to the inode core that have to go to disk. | 887 | * inode core that have to go to disk and this requires us to issue |
888 | * a synchronous transaction to capture these changes correctly. | ||
892 | * | 889 | * |
893 | * The following code depends on one assumption: that | 890 | * This code relies on the assumption that if the update_* fields |
894 | * any transaction that changes an inode logs the core | 891 | * of the inode are clear and the inode is unpinned then it is clean |
895 | * because it has to change some field in the inode core | 892 | * and no action is required. |
896 | * (typically nextents or nblocks). That assumption | ||
897 | * implies that any transactions against an inode will | ||
898 | * catch any non-transactional updates. If inode-altering | ||
899 | * transactions exist that violate this assumption, the | ||
900 | * code breaks. Right now, it figures that if the involved | ||
901 | * update_* field is clear and the inode is unpinned, the | ||
902 | * inode is clean. Either it's been flushed or it's been | ||
903 | * committed and the commit has hit the disk unpinning the inode. | ||
904 | * (Note that xfs_inode_item_format() called at commit clears | ||
905 | * the update_* fields.) | ||
906 | */ | 893 | */ |
907 | xfs_ilock(ip, XFS_ILOCK_SHARED); | 894 | xfs_ilock(ip, XFS_ILOCK_SHARED); |
908 | 895 | ||
909 | /* If we are flushing data then we care about update_size | 896 | if (!(ip->i_update_size || ip->i_update_core)) { |
910 | * being set, otherwise we care about update_core | ||
911 | */ | ||
912 | if ((flag & FSYNC_DATA) ? | ||
913 | (ip->i_update_size == 0) : | ||
914 | (ip->i_update_core == 0)) { | ||
915 | /* | 897 | /* |
916 | * Timestamps/size haven't changed since last inode | 898 | * Timestamps/size haven't changed since last inode flush or |
917 | * flush or inode transaction commit. That means | 899 | * inode transaction commit. That means either nothing got |
918 | * either nothing got written or a transaction | 900 | * written or a transaction committed which caught the updates. |
919 | * committed which caught the updates. If the | 901 | * If the latter happened and the transaction hasn't hit the |
920 | * latter happened and the transaction hasn't | 902 | * disk yet, the inode will be still be pinned. If it is, |
921 | * hit the disk yet, the inode will be still | 903 | * force the log. |
922 | * be pinned. If it is, force the log. | ||
923 | */ | 904 | */ |
924 | 905 | ||
925 | xfs_iunlock(ip, XFS_ILOCK_SHARED); | 906 | xfs_iunlock(ip, XFS_ILOCK_SHARED); |
926 | 907 | ||
927 | if (xfs_ipincount(ip)) { | 908 | if (xfs_ipincount(ip)) { |
928 | _xfs_log_force(ip->i_mount, (xfs_lsn_t)0, | 909 | error = _xfs_log_force(ip->i_mount, (xfs_lsn_t)0, |
929 | XFS_LOG_FORCE | | 910 | XFS_LOG_FORCE | XFS_LOG_SYNC, |
930 | ((flag & FSYNC_WAIT) | ||
931 | ? XFS_LOG_SYNC : 0), | ||
932 | &log_flushed); | 911 | &log_flushed); |
933 | } else { | 912 | } else { |
934 | /* | 913 | /* |
935 | * If the inode is not pinned and nothing | 914 | * If the inode is not pinned and nothing has changed |
936 | * has changed we don't need to flush the | 915 | * we don't need to flush the cache. |
937 | * cache. | ||
938 | */ | 916 | */ |
939 | changed = 0; | 917 | changed = 0; |
940 | } | 918 | } |
941 | error = 0; | ||
942 | } else { | 919 | } else { |
943 | /* | 920 | /* |
944 | * Kick off a transaction to log the inode | 921 | * Kick off a transaction to log the inode core to get the |
945 | * core to get the updates. Make it | 922 | * updates. The sync transaction will also force the log. |
946 | * sync if FSYNC_WAIT is passed in (which | ||
947 | * is done by everybody but specfs). The | ||
948 | * sync transaction will also force the log. | ||
949 | */ | 923 | */ |
950 | xfs_iunlock(ip, XFS_ILOCK_SHARED); | 924 | xfs_iunlock(ip, XFS_ILOCK_SHARED); |
951 | tp = xfs_trans_alloc(ip->i_mount, XFS_TRANS_FSYNC_TS); | 925 | tp = xfs_trans_alloc(ip->i_mount, XFS_TRANS_FSYNC_TS); |
952 | if ((error = xfs_trans_reserve(tp, 0, | 926 | error = xfs_trans_reserve(tp, 0, |
953 | XFS_FSYNC_TS_LOG_RES(ip->i_mount), | 927 | XFS_FSYNC_TS_LOG_RES(ip->i_mount), 0, 0, 0); |
954 | 0, 0, 0))) { | 928 | if (error) { |
955 | xfs_trans_cancel(tp, 0); | 929 | xfs_trans_cancel(tp, 0); |
956 | return error; | 930 | return error; |
957 | } | 931 | } |
958 | xfs_ilock(ip, XFS_ILOCK_EXCL); | 932 | xfs_ilock(ip, XFS_ILOCK_EXCL); |
959 | 933 | ||
960 | /* | 934 | /* |
961 | * Note - it's possible that we might have pushed | 935 | * Note - it's possible that we might have pushed ourselves out |
962 | * ourselves out of the way during trans_reserve | 936 | * of the way during trans_reserve which would flush the inode. |
963 | * which would flush the inode. But there's no | 937 | * But there's no guarantee that the inode buffer has actually |
964 | * guarantee that the inode buffer has actually | 938 | * gone out yet (it's delwri). Plus the buffer could be pinned |
965 | * gone out yet (it's delwri). Plus the buffer | 939 | * anyway if it's part of an inode in another recent |
966 | * could be pinned anyway if it's part of an | 940 | * transaction. So we play it safe and fire off the |
967 | * inode in another recent transaction. So we | 941 | * transaction anyway. |
968 | * play it safe and fire off the transaction anyway. | ||
969 | */ | 942 | */ |
970 | xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); | 943 | xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); |
971 | xfs_trans_ihold(tp, ip); | 944 | xfs_trans_ihold(tp, ip); |
972 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); | 945 | xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); |
973 | if (flag & FSYNC_WAIT) | 946 | xfs_trans_set_sync(tp); |
974 | xfs_trans_set_sync(tp); | ||
975 | error = _xfs_trans_commit(tp, 0, &log_flushed); | 947 | error = _xfs_trans_commit(tp, 0, &log_flushed); |
976 | 948 | ||
977 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | 949 | xfs_iunlock(ip, XFS_ILOCK_EXCL); |
diff --git a/fs/xfs/xfs_vnodeops.h b/fs/xfs/xfs_vnodeops.h index 8abe8f186e20..57335ba4ce53 100644 --- a/fs/xfs/xfs_vnodeops.h +++ b/fs/xfs/xfs_vnodeops.h | |||
@@ -18,8 +18,7 @@ int xfs_open(struct xfs_inode *ip); | |||
18 | int xfs_setattr(struct xfs_inode *ip, struct bhv_vattr *vap, int flags, | 18 | int xfs_setattr(struct xfs_inode *ip, struct bhv_vattr *vap, int flags, |
19 | struct cred *credp); | 19 | struct cred *credp); |
20 | int xfs_readlink(struct xfs_inode *ip, char *link); | 20 | int xfs_readlink(struct xfs_inode *ip, char *link); |
21 | int xfs_fsync(struct xfs_inode *ip, int flag, xfs_off_t start, | 21 | int xfs_fsync(struct xfs_inode *ip); |
22 | xfs_off_t stop); | ||
23 | int xfs_release(struct xfs_inode *ip); | 22 | int xfs_release(struct xfs_inode *ip); |
24 | int xfs_inactive(struct xfs_inode *ip); | 23 | int xfs_inactive(struct xfs_inode *ip); |
25 | int xfs_lookup(struct xfs_inode *dp, struct xfs_name *name, | 24 | int xfs_lookup(struct xfs_inode *dp, struct xfs_name *name, |
diff --git a/include/asm-arm/arch-omap/board-palmte.h b/include/asm-arm/arch-omap/board-palmte.h index cd22035a7160..6fac2c8935be 100644 --- a/include/asm-arm/arch-omap/board-palmte.h +++ b/include/asm-arm/arch-omap/board-palmte.h | |||
@@ -14,8 +14,6 @@ | |||
14 | #ifndef __OMAP_BOARD_PALMTE_H | 14 | #ifndef __OMAP_BOARD_PALMTE_H |
15 | #define __OMAP_BOARD_PALMTE_H | 15 | #define __OMAP_BOARD_PALMTE_H |
16 | 16 | ||
17 | #include <asm/arch/gpio.h> | ||
18 | |||
19 | #define PALMTE_USBDETECT_GPIO 0 | 17 | #define PALMTE_USBDETECT_GPIO 0 |
20 | #define PALMTE_USB_OR_DC_GPIO 1 | 18 | #define PALMTE_USB_OR_DC_GPIO 1 |
21 | #define PALMTE_TSC_GPIO 4 | 19 | #define PALMTE_TSC_GPIO 4 |
diff --git a/include/asm-arm/arch-omap/clock.h b/include/asm-arm/arch-omap/clock.h index 57523bdb642b..12a5e4de9518 100644 --- a/include/asm-arm/arch-omap/clock.h +++ b/include/asm-arm/arch-omap/clock.h | |||
@@ -73,6 +73,8 @@ struct clk { | |||
73 | #endif | 73 | #endif |
74 | }; | 74 | }; |
75 | 75 | ||
76 | struct cpufreq_frequency_table; | ||
77 | |||
76 | struct clk_functions { | 78 | struct clk_functions { |
77 | int (*clk_enable)(struct clk *clk); | 79 | int (*clk_enable)(struct clk *clk); |
78 | void (*clk_disable)(struct clk *clk); | 80 | void (*clk_disable)(struct clk *clk); |
@@ -83,6 +85,9 @@ struct clk_functions { | |||
83 | void (*clk_allow_idle)(struct clk *clk); | 85 | void (*clk_allow_idle)(struct clk *clk); |
84 | void (*clk_deny_idle)(struct clk *clk); | 86 | void (*clk_deny_idle)(struct clk *clk); |
85 | void (*clk_disable_unused)(struct clk *clk); | 87 | void (*clk_disable_unused)(struct clk *clk); |
88 | #ifdef CONFIG_CPU_FREQ | ||
89 | void (*clk_init_cpufreq_table)(struct cpufreq_frequency_table **); | ||
90 | #endif | ||
86 | }; | 91 | }; |
87 | 92 | ||
88 | extern unsigned int mpurate; | 93 | extern unsigned int mpurate; |
diff --git a/include/asm-arm/arch-omap/common.h b/include/asm-arm/arch-omap/common.h index 224e009e5296..36a3b62d4d8d 100644 --- a/include/asm-arm/arch-omap/common.h +++ b/include/asm-arm/arch-omap/common.h | |||
@@ -47,4 +47,8 @@ static inline int omap_register_i2c_bus(int bus_id, u32 clkrate, | |||
47 | } | 47 | } |
48 | #endif | 48 | #endif |
49 | 49 | ||
50 | void omap2_set_globals_242x(void); | ||
51 | void omap2_set_globals_243x(void); | ||
52 | void omap2_set_globals_343x(void); | ||
53 | |||
50 | #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ | 54 | #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ |
diff --git a/include/asm-arm/arch-omap/control.h b/include/asm-arm/arch-omap/control.h index 9944bb5d5330..59c0686f8be7 100644 --- a/include/asm-arm/arch-omap/control.h +++ b/include/asm-arm/arch-omap/control.h | |||
@@ -80,7 +80,7 @@ | |||
80 | #define OMAP24XX_CONTROL_SEC_TAP (OMAP2_CONTROL_GENERAL + 0x0064) | 80 | #define OMAP24XX_CONTROL_SEC_TAP (OMAP2_CONTROL_GENERAL + 0x0064) |
81 | #define OMAP24XX_CONTROL_OCM_PUB_RAM_ADD (OMAP2_CONTROL_GENERAL + 0x006c) | 81 | #define OMAP24XX_CONTROL_OCM_PUB_RAM_ADD (OMAP2_CONTROL_GENERAL + 0x006c) |
82 | #define OMAP24XX_CONTROL_EXT_SEC_RAM_START_ADD (OMAP2_CONTROL_GENERAL + 0x0070) | 82 | #define OMAP24XX_CONTROL_EXT_SEC_RAM_START_ADD (OMAP2_CONTROL_GENERAL + 0x0070) |
83 | #define OMAP24XX_CONTROL_EXT_SEC_RAM_STOP_ADD (OMAP2_CONTROL_GENERAL + 0x0074 | 83 | #define OMAP24XX_CONTROL_EXT_SEC_RAM_STOP_ADD (OMAP2_CONTROL_GENERAL + 0x0074) |
84 | #define OMAP24XX_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0080) | 84 | #define OMAP24XX_CONTROL_SEC_STATUS (OMAP2_CONTROL_GENERAL + 0x0080) |
85 | #define OMAP24XX_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0084) | 85 | #define OMAP24XX_CONTROL_SEC_ERR_STATUS (OMAP2_CONTROL_GENERAL + 0x0084) |
86 | #define OMAP24XX_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0088) | 86 | #define OMAP24XX_CONTROL_STATUS (OMAP2_CONTROL_GENERAL + 0x0088) |
diff --git a/include/asm-arm/arch-omap/entry-macro.S b/include/asm-arm/arch-omap/entry-macro.S index 74cd57221c8e..369093a45fcf 100644 --- a/include/asm-arm/arch-omap/entry-macro.S +++ b/include/asm-arm/arch-omap/entry-macro.S | |||
@@ -8,6 +8,7 @@ | |||
8 | * warranty of any kind, whether express or implied. | 8 | * warranty of any kind, whether express or implied. |
9 | */ | 9 | */ |
10 | #include <asm/hardware.h> | 10 | #include <asm/hardware.h> |
11 | #include <asm/arch/io.h> | ||
11 | #include <asm/arch/irqs.h> | 12 | #include <asm/arch/irqs.h> |
12 | 13 | ||
13 | #if defined(CONFIG_ARCH_OMAP1) | 14 | #if defined(CONFIG_ARCH_OMAP1) |
diff --git a/include/asm-arm/arch-omap/gpio.h b/include/asm-arm/arch-omap/gpio.h index 86621a04cd8f..5ee6a49864c3 100644 --- a/include/asm-arm/arch-omap/gpio.h +++ b/include/asm-arm/arch-omap/gpio.h | |||
@@ -26,7 +26,6 @@ | |||
26 | #ifndef __ASM_ARCH_OMAP_GPIO_H | 26 | #ifndef __ASM_ARCH_OMAP_GPIO_H |
27 | #define __ASM_ARCH_OMAP_GPIO_H | 27 | #define __ASM_ARCH_OMAP_GPIO_H |
28 | 28 | ||
29 | #include <asm/hardware.h> | ||
30 | #include <asm/arch/irqs.h> | 29 | #include <asm/arch/irqs.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | 31 | ||
diff --git a/include/asm-arm/arch-omap/hardware.h b/include/asm-arm/arch-omap/hardware.h index da572092e255..91d85b3417b7 100644 --- a/include/asm-arm/arch-omap/hardware.h +++ b/include/asm-arm/arch-omap/hardware.h | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <asm/types.h> | 41 | #include <asm/types.h> |
42 | #include <asm/arch/cpu.h> | 42 | #include <asm/arch/cpu.h> |
43 | #endif | 43 | #endif |
44 | #include <asm/arch/io.h> | ||
45 | #include <asm/arch/serial.h> | 44 | #include <asm/arch/serial.h> |
46 | 45 | ||
47 | /* | 46 | /* |
diff --git a/include/asm-arm/arch-omap/mmc.h b/include/asm-arm/arch-omap/mmc.h index c9588f49eb52..7cfc5f258560 100644 --- a/include/asm-arm/arch-omap/mmc.h +++ b/include/asm-arm/arch-omap/mmc.h | |||
@@ -15,21 +15,16 @@ | |||
15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
16 | #include <linux/mmc/host.h> | 16 | #include <linux/mmc/host.h> |
17 | 17 | ||
18 | #include <asm/arch/board.h> | ||
19 | |||
18 | #define OMAP_MMC_MAX_SLOTS 2 | 20 | #define OMAP_MMC_MAX_SLOTS 2 |
19 | 21 | ||
20 | struct omap_mmc_platform_data { | 22 | struct omap_mmc_platform_data { |
21 | struct omap_mmc_conf conf; | 23 | struct omap_mmc_conf conf; |
22 | 24 | ||
23 | unsigned enabled:1; | ||
24 | /* number of slots on board */ | 25 | /* number of slots on board */ |
25 | unsigned nr_slots:2; | 26 | unsigned nr_slots:2; |
26 | /* nomux means "standard" muxing is wrong on this board, and that | 27 | |
27 | * board-specific code handled it before common init logic. | ||
28 | */ | ||
29 | unsigned nomux:1; | ||
30 | /* 4 wire signaling is optional, and is only used for SD/SDIO and | ||
31 | * MMCv4 */ | ||
32 | unsigned wire4:1; | ||
33 | /* set if your board has components or wiring that limits the | 28 | /* set if your board has components or wiring that limits the |
34 | * maximum frequency on the MMC bus */ | 29 | * maximum frequency on the MMC bus */ |
35 | unsigned int max_freq; | 30 | unsigned int max_freq; |
@@ -40,6 +35,11 @@ struct omap_mmc_platform_data { | |||
40 | * not supported */ | 35 | * not supported */ |
41 | int (* init)(struct device *dev); | 36 | int (* init)(struct device *dev); |
42 | void (* cleanup)(struct device *dev); | 37 | void (* cleanup)(struct device *dev); |
38 | void (* shutdown)(struct device *dev); | ||
39 | |||
40 | /* To handle board related suspend/resume functionality for MMC */ | ||
41 | int (*suspend)(struct device *dev, int slot); | ||
42 | int (*resume)(struct device *dev, int slot); | ||
43 | 43 | ||
44 | struct omap_mmc_slot_data { | 44 | struct omap_mmc_slot_data { |
45 | int (* set_bus_mode)(struct device *dev, int slot, int bus_mode); | 45 | int (* set_bus_mode)(struct device *dev, int slot, int bus_mode); |
@@ -56,13 +56,19 @@ struct omap_mmc_platform_data { | |||
56 | 56 | ||
57 | const char *name; | 57 | const char *name; |
58 | u32 ocr_mask; | 58 | u32 ocr_mask; |
59 | |||
60 | /* Card detection IRQs */ | ||
61 | int card_detect_irq; | ||
62 | int (* card_detect)(int irq); | ||
63 | |||
64 | unsigned int ban_openended:1; | ||
65 | |||
59 | } slots[OMAP_MMC_MAX_SLOTS]; | 66 | } slots[OMAP_MMC_MAX_SLOTS]; |
60 | }; | 67 | }; |
61 | 68 | ||
62 | extern void omap_set_mmc_info(int host, const struct omap_mmc_platform_data *info); | 69 | extern void omap_set_mmc_info(int host, const struct omap_mmc_platform_data *info); |
63 | 70 | ||
64 | /* called from board-specific card detection service routine */ | 71 | /* called from board-specific card detection service routine */ |
65 | extern void omap_mmc_notify_card_detect(struct device *dev, int slot, int detected); | ||
66 | extern void omap_mmc_notify_cover_event(struct device *dev, int slot, int is_closed); | 72 | extern void omap_mmc_notify_cover_event(struct device *dev, int slot, int is_closed); |
67 | 73 | ||
68 | #endif | 74 | #endif |
diff --git a/include/asm-arm/arch-sa1100/collie.h b/include/asm-arm/arch-sa1100/collie.h index 14a344aa3cc7..762eba535813 100644 --- a/include/asm-arm/arch-sa1100/collie.h +++ b/include/asm-arm/arch-sa1100/collie.h | |||
@@ -34,9 +34,12 @@ | |||
34 | 34 | ||
35 | #define COLLIE_GPIO_ON_KEY GPIO_GPIO (0) | 35 | #define COLLIE_GPIO_ON_KEY GPIO_GPIO (0) |
36 | #define COLLIE_GPIO_AC_IN GPIO_GPIO (1) | 36 | #define COLLIE_GPIO_AC_IN GPIO_GPIO (1) |
37 | #define COLLIE_GPIO_SDIO_INT GPIO_GPIO (11) | ||
37 | #define COLLIE_GPIO_CF_IRQ GPIO_GPIO (14) | 38 | #define COLLIE_GPIO_CF_IRQ GPIO_GPIO (14) |
38 | #define COLLIE_GPIO_nREMOCON_INT GPIO_GPIO (15) | 39 | #define COLLIE_GPIO_nREMOCON_INT GPIO_GPIO (15) |
39 | #define COLLIE_GPIO_UCB1x00_RESET GPIO_GPIO (16) | 40 | #define COLLIE_GPIO_UCB1x00_RESET GPIO_GPIO (16) |
41 | #define COLLIE_GPIO_nMIC_ON GPIO_GPIO (17) | ||
42 | #define COLLIE_GPIO_nREMOCON_ON GPIO_GPIO (18) | ||
40 | #define COLLIE_GPIO_CO GPIO_GPIO (20) | 43 | #define COLLIE_GPIO_CO GPIO_GPIO (20) |
41 | #define COLLIE_GPIO_MCP_CLK GPIO_GPIO (21) | 44 | #define COLLIE_GPIO_MCP_CLK GPIO_GPIO (21) |
42 | #define COLLIE_GPIO_CF_CD GPIO_GPIO (22) | 45 | #define COLLIE_GPIO_CF_CD GPIO_GPIO (22) |
@@ -49,6 +52,7 @@ | |||
49 | 52 | ||
50 | #define COLLIE_IRQ_GPIO_ON_KEY IRQ_GPIO0 | 53 | #define COLLIE_IRQ_GPIO_ON_KEY IRQ_GPIO0 |
51 | #define COLLIE_IRQ_GPIO_AC_IN IRQ_GPIO1 | 54 | #define COLLIE_IRQ_GPIO_AC_IN IRQ_GPIO1 |
55 | #define COLLIE_IRQ_GPIO_SDIO_IRQ IRQ_GPIO11 | ||
52 | #define COLLIE_IRQ_GPIO_CF_IRQ IRQ_GPIO14 | 56 | #define COLLIE_IRQ_GPIO_CF_IRQ IRQ_GPIO14 |
53 | #define COLLIE_IRQ_GPIO_nREMOCON_INT IRQ_GPIO15 | 57 | #define COLLIE_IRQ_GPIO_nREMOCON_INT IRQ_GPIO15 |
54 | #define COLLIE_IRQ_GPIO_CO IRQ_GPIO20 | 58 | #define COLLIE_IRQ_GPIO_CO IRQ_GPIO20 |
diff --git a/include/asm-arm/arch-sa1100/irqs.h b/include/asm-arm/arch-sa1100/irqs.h index d7940683efb1..7bf80484bb77 100644 --- a/include/asm-arm/arch-sa1100/irqs.h +++ b/include/asm-arm/arch-sa1100/irqs.h | |||
@@ -141,7 +141,7 @@ | |||
141 | #define IRQ_LOCOMO_LT (IRQ_BOARD_END + 17) | 141 | #define IRQ_LOCOMO_LT (IRQ_BOARD_END + 17) |
142 | #define IRQ_LOCOMO_SPI_RFR (IRQ_BOARD_END + 18) | 142 | #define IRQ_LOCOMO_SPI_RFR (IRQ_BOARD_END + 18) |
143 | #define IRQ_LOCOMO_SPI_RFW (IRQ_BOARD_END + 19) | 143 | #define IRQ_LOCOMO_SPI_RFW (IRQ_BOARD_END + 19) |
144 | #define IRQ_LOCOMO_SPI_OVRN (IRQ_BOARD_END + 20) | 144 | #define IRQ_LOCOMO_SPI_REND (IRQ_BOARD_END + 20) |
145 | #define IRQ_LOCOMO_SPI_TEND (IRQ_BOARD_END + 21) | 145 | #define IRQ_LOCOMO_SPI_TEND (IRQ_BOARD_END + 21) |
146 | 146 | ||
147 | /* | 147 | /* |
diff --git a/include/asm-arm/hardware/locomo.h b/include/asm-arm/hardware/locomo.h index adab77780ed3..fb0645de6f31 100644 --- a/include/asm-arm/hardware/locomo.h +++ b/include/asm-arm/hardware/locomo.h | |||
@@ -58,6 +58,11 @@ | |||
58 | #define LOCOMO_SPIMD 0x00 /* SPI mode setting */ | 58 | #define LOCOMO_SPIMD 0x00 /* SPI mode setting */ |
59 | #define LOCOMO_SPICT 0x04 /* SPI mode control */ | 59 | #define LOCOMO_SPICT 0x04 /* SPI mode control */ |
60 | #define LOCOMO_SPIST 0x08 /* SPI status */ | 60 | #define LOCOMO_SPIST 0x08 /* SPI status */ |
61 | #define LOCOMO_SPI_TEND (1 << 3) /* Transfer end bit */ | ||
62 | #define LOCOMO_SPI_REND (1 << 2) /* Receive end bit */ | ||
63 | #define LOCOMO_SPI_RFW (1 << 1) /* write buffer bit */ | ||
64 | #define LOCOMO_SPI_RFR (1) /* read buffer bit */ | ||
65 | |||
61 | #define LOCOMO_SPIIS 0x10 /* SPI interrupt status */ | 66 | #define LOCOMO_SPIIS 0x10 /* SPI interrupt status */ |
62 | #define LOCOMO_SPIWE 0x14 /* SPI interrupt status write enable */ | 67 | #define LOCOMO_SPIWE 0x14 /* SPI interrupt status write enable */ |
63 | #define LOCOMO_SPIIE 0x18 /* SPI interrupt enable */ | 68 | #define LOCOMO_SPIIE 0x18 /* SPI interrupt enable */ |
@@ -66,16 +71,12 @@ | |||
66 | #define LOCOMO_SPIRD 0x24 /* SPI receive data read */ | 71 | #define LOCOMO_SPIRD 0x24 /* SPI receive data read */ |
67 | #define LOCOMO_SPITS 0x28 /* SPI transfer data shift */ | 72 | #define LOCOMO_SPITS 0x28 /* SPI transfer data shift */ |
68 | #define LOCOMO_SPIRS 0x2C /* SPI receive data shift */ | 73 | #define LOCOMO_SPIRS 0x2C /* SPI receive data shift */ |
69 | #define LOCOMO_SPI_TEND (1 << 3) /* Transfer end bit */ | ||
70 | #define LOCOMO_SPI_OVRN (1 << 2) /* Over Run bit */ | ||
71 | #define LOCOMO_SPI_RFW (1 << 1) /* write buffer bit */ | ||
72 | #define LOCOMO_SPI_RFR (1) /* read buffer bit */ | ||
73 | 74 | ||
74 | /* GPIO */ | 75 | /* GPIO */ |
75 | #define LOCOMO_GPD 0x90 /* GPIO direction */ | 76 | #define LOCOMO_GPD 0x90 /* GPIO direction */ |
76 | #define LOCOMO_GPE 0x94 /* GPIO input enable */ | 77 | #define LOCOMO_GPE 0x94 /* GPIO input enable */ |
77 | #define LOCOMO_GPL 0x98 /* GPIO level */ | 78 | #define LOCOMO_GPL 0x98 /* GPIO level */ |
78 | #define LOCOMO_GPO 0x9c /* GPIO out data setteing */ | 79 | #define LOCOMO_GPO 0x9c /* GPIO out data setting */ |
79 | #define LOCOMO_GRIE 0xa0 /* GPIO rise detection */ | 80 | #define LOCOMO_GRIE 0xa0 /* GPIO rise detection */ |
80 | #define LOCOMO_GFIE 0xa4 /* GPIO fall detection */ | 81 | #define LOCOMO_GFIE 0xa4 /* GPIO fall detection */ |
81 | #define LOCOMO_GIS 0xa8 /* GPIO edge detection status */ | 82 | #define LOCOMO_GIS 0xa8 /* GPIO edge detection status */ |
@@ -96,6 +97,9 @@ | |||
96 | #define LOCOMO_GPIO_DAC_SDATA LOCOMO_GPIO(10) | 97 | #define LOCOMO_GPIO_DAC_SDATA LOCOMO_GPIO(10) |
97 | #define LOCOMO_GPIO_DAC_SCK LOCOMO_GPIO(11) | 98 | #define LOCOMO_GPIO_DAC_SCK LOCOMO_GPIO(11) |
98 | #define LOCOMO_GPIO_DAC_SLOAD LOCOMO_GPIO(12) | 99 | #define LOCOMO_GPIO_DAC_SLOAD LOCOMO_GPIO(12) |
100 | #define LOCOMO_GPIO_CARD_DETECT LOCOMO_GPIO(13) | ||
101 | #define LOCOMO_GPIO_WRITE_PROT LOCOMO_GPIO(14) | ||
102 | #define LOCOMO_GPIO_CARD_POWER LOCOMO_GPIO(15) | ||
99 | 103 | ||
100 | /* Start the definitions of the devices. Each device has an initial | 104 | /* Start the definitions of the devices. Each device has an initial |
101 | * base address and a series of offsets from that base address. */ | 105 | * base address and a series of offsets from that base address. */ |
@@ -122,7 +126,7 @@ | |||
122 | /* Audio controller */ | 126 | /* Audio controller */ |
123 | #define LOCOMO_AUDIO 0x54 | 127 | #define LOCOMO_AUDIO 0x54 |
124 | #define LOCOMO_ACC 0x00 /* Audio clock */ | 128 | #define LOCOMO_ACC 0x00 /* Audio clock */ |
125 | #define LOCOMO_PAIF 0x7C /* PCM audio interface */ | 129 | #define LOCOMO_PAIF 0xD0 /* PCM audio interface */ |
126 | /* Audio clock */ | 130 | /* Audio clock */ |
127 | #define LOCOMO_ACC_XON 0x80 | 131 | #define LOCOMO_ACC_XON 0x80 |
128 | #define LOCOMO_ACC_XEN 0x40 | 132 | #define LOCOMO_ACC_XEN 0x40 |
@@ -162,7 +166,7 @@ extern struct bus_type locomo_bus_type; | |||
162 | #define LOCOMO_DEVID_AUDIO 3 | 166 | #define LOCOMO_DEVID_AUDIO 3 |
163 | #define LOCOMO_DEVID_LED 4 | 167 | #define LOCOMO_DEVID_LED 4 |
164 | #define LOCOMO_DEVID_UART 5 | 168 | #define LOCOMO_DEVID_UART 5 |
165 | #define LOCOMO_DEVID_SPI 6 | 169 | #define LOCOMO_DEVID_SPI 6 |
166 | 170 | ||
167 | struct locomo_dev { | 171 | struct locomo_dev { |
168 | struct device dev; | 172 | struct device dev; |
@@ -204,7 +208,6 @@ int locomo_gpio_read_level(struct device *dev, unsigned int bits); | |||
204 | int locomo_gpio_read_output(struct device *dev, unsigned int bits); | 208 | int locomo_gpio_read_output(struct device *dev, unsigned int bits); |
205 | void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set); | 209 | void locomo_gpio_write(struct device *dev, unsigned int bits, unsigned int set); |
206 | 210 | ||
207 | |||
208 | /* M62332 control function */ | 211 | /* M62332 control function */ |
209 | void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel); | 212 | void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel); |
210 | 213 | ||
diff --git a/include/asm-arm/page.h b/include/asm-arm/page.h index 5c22b0112106..8e05bdb5f12f 100644 --- a/include/asm-arm/page.h +++ b/include/asm-arm/page.h | |||
@@ -179,10 +179,10 @@ typedef unsigned long pgprot_t; | |||
179 | 179 | ||
180 | #endif /* STRICT_MM_TYPECHECKS */ | 180 | #endif /* STRICT_MM_TYPECHECKS */ |
181 | 181 | ||
182 | typedef struct page *pgtable_t; | ||
183 | |||
184 | #endif /* CONFIG_MMU */ | 182 | #endif /* CONFIG_MMU */ |
185 | 183 | ||
184 | typedef struct page *pgtable_t; | ||
185 | |||
186 | #include <asm/memory.h> | 186 | #include <asm/memory.h> |
187 | 187 | ||
188 | #endif /* !__ASSEMBLY__ */ | 188 | #endif /* !__ASSEMBLY__ */ |
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h index 6335de9a2bb3..514af792a598 100644 --- a/include/asm-arm/system.h +++ b/include/asm-arm/system.h | |||
@@ -48,20 +48,6 @@ | |||
48 | #define CPUID_TCM 2 | 48 | #define CPUID_TCM 2 |
49 | #define CPUID_TLBTYPE 3 | 49 | #define CPUID_TLBTYPE 3 |
50 | 50 | ||
51 | #ifdef CONFIG_CPU_CP15 | ||
52 | #define read_cpuid(reg) \ | ||
53 | ({ \ | ||
54 | unsigned int __val; \ | ||
55 | asm("mrc p15, 0, %0, c0, c0, " __stringify(reg) \ | ||
56 | : "=r" (__val) \ | ||
57 | : \ | ||
58 | : "cc"); \ | ||
59 | __val; \ | ||
60 | }) | ||
61 | #else | ||
62 | #define read_cpuid(reg) (processor_id) | ||
63 | #endif | ||
64 | |||
65 | /* | 51 | /* |
66 | * This is used to ensure the compiler did actually allocate the register we | 52 | * This is used to ensure the compiler did actually allocate the register we |
67 | * asked it for some inline assembly sequences. Apparently we can't trust | 53 | * asked it for some inline assembly sequences. Apparently we can't trust |
@@ -78,6 +64,21 @@ | |||
78 | #include <linux/stringify.h> | 64 | #include <linux/stringify.h> |
79 | #include <linux/irqflags.h> | 65 | #include <linux/irqflags.h> |
80 | 66 | ||
67 | #ifdef CONFIG_CPU_CP15 | ||
68 | #define read_cpuid(reg) \ | ||
69 | ({ \ | ||
70 | unsigned int __val; \ | ||
71 | asm("mrc p15, 0, %0, c0, c0, " __stringify(reg) \ | ||
72 | : "=r" (__val) \ | ||
73 | : \ | ||
74 | : "cc"); \ | ||
75 | __val; \ | ||
76 | }) | ||
77 | #else | ||
78 | extern unsigned int processor_id; | ||
79 | #define read_cpuid(reg) (processor_id) | ||
80 | #endif | ||
81 | |||
81 | /* | 82 | /* |
82 | * The CPU ID never changes at run time, so we might as well tell the | 83 | * The CPU ID never changes at run time, so we might as well tell the |
83 | * compiler that it's constant. Use this function to read the CPU ID | 84 | * compiler that it's constant. Use this function to read the CPU ID |
diff --git a/include/asm-blackfin/bfin-global.h b/include/asm-blackfin/bfin-global.h index 716df7c85923..76033831eb35 100644 --- a/include/asm-blackfin/bfin-global.h +++ b/include/asm-blackfin/bfin-global.h | |||
@@ -37,7 +37,9 @@ | |||
37 | #include <linux/linkage.h> | 37 | #include <linux/linkage.h> |
38 | #include <linux/types.h> | 38 | #include <linux/types.h> |
39 | 39 | ||
40 | #if defined(CONFIG_DMA_UNCACHED_2M) | 40 | #if defined(CONFIG_DMA_UNCACHED_4M) |
41 | # define DMA_UNCACHED_REGION (4 * 1024 * 1024) | ||
42 | #elif defined(CONFIG_DMA_UNCACHED_2M) | ||
41 | # define DMA_UNCACHED_REGION (2 * 1024 * 1024) | 43 | # define DMA_UNCACHED_REGION (2 * 1024 * 1024) |
42 | #elif defined(CONFIG_DMA_UNCACHED_1M) | 44 | #elif defined(CONFIG_DMA_UNCACHED_1M) |
43 | # define DMA_UNCACHED_REGION (1024 * 1024) | 45 | # define DMA_UNCACHED_REGION (1024 * 1024) |
@@ -103,13 +105,6 @@ extern int sram_free(const void*); | |||
103 | extern void *sram_alloc_with_lsl(size_t, unsigned long); | 105 | extern void *sram_alloc_with_lsl(size_t, unsigned long); |
104 | extern int sram_free_with_lsl(const void*); | 106 | extern int sram_free_with_lsl(const void*); |
105 | 107 | ||
106 | extern void led_on(int); | ||
107 | extern void led_off(int); | ||
108 | extern void led_toggle(int); | ||
109 | extern void led_disp_num(int); | ||
110 | extern void led_toggle_num(int); | ||
111 | extern void init_leds(void); | ||
112 | |||
113 | extern const char bfin_board_name[]; | 108 | extern const char bfin_board_name[]; |
114 | extern unsigned long wall_jiffies; | 109 | extern unsigned long wall_jiffies; |
115 | 110 | ||
diff --git a/include/asm-blackfin/checksum.h b/include/asm-blackfin/checksum.h index 2638f2586d2f..6f6af2b8e9e0 100644 --- a/include/asm-blackfin/checksum.h +++ b/include/asm-blackfin/checksum.h | |||
@@ -15,7 +15,7 @@ | |||
15 | * | 15 | * |
16 | * it's best to have buff aligned on a 32-bit boundary | 16 | * it's best to have buff aligned on a 32-bit boundary |
17 | */ | 17 | */ |
18 | unsigned int csum_partial(const unsigned char *buff, int len, unsigned int sum); | 18 | __wsum csum_partial(const void *buff, int len, __wsum sum); |
19 | 19 | ||
20 | /* | 20 | /* |
21 | * the same as csum_partial, but copies from src while it | 21 | * the same as csum_partial, but copies from src while it |
@@ -25,8 +25,8 @@ unsigned int csum_partial(const unsigned char *buff, int len, unsigned int sum); | |||
25 | * better 64-bit) boundary | 25 | * better 64-bit) boundary |
26 | */ | 26 | */ |
27 | 27 | ||
28 | unsigned int csum_partial_copy(const unsigned char *src, unsigned char *dst, | 28 | __wsum csum_partial_copy(const void *src, void *dst, |
29 | int len, int sum); | 29 | int len, __wsum sum); |
30 | 30 | ||
31 | /* | 31 | /* |
32 | * the same as csum_partial_copy, but copies from user space. | 32 | * the same as csum_partial_copy, but copies from user space. |
@@ -35,20 +35,19 @@ unsigned int csum_partial_copy(const unsigned char *src, unsigned char *dst, | |||
35 | * better 64-bit) boundary | 35 | * better 64-bit) boundary |
36 | */ | 36 | */ |
37 | 37 | ||
38 | extern unsigned int csum_partial_copy_from_user(const unsigned char *src, | 38 | extern __wsum csum_partial_copy_from_user(const void __user *src, void *dst, |
39 | unsigned char *dst, int len, | 39 | int len, __wsum sum, int *csum_err); |
40 | int sum, int *csum_err); | ||
41 | 40 | ||
42 | #define csum_partial_copy_nocheck(src, dst, len, sum) \ | 41 | #define csum_partial_copy_nocheck(src, dst, len, sum) \ |
43 | csum_partial_copy((src), (dst), (len), (sum)) | 42 | csum_partial_copy((src), (dst), (len), (sum)) |
44 | 43 | ||
45 | unsigned short ip_fast_csum(unsigned char *iph, unsigned int ihl); | 44 | __sum16 ip_fast_csum(unsigned char *iph, unsigned int ihl); |
46 | 45 | ||
47 | /* | 46 | /* |
48 | * Fold a partial checksum | 47 | * Fold a partial checksum |
49 | */ | 48 | */ |
50 | 49 | ||
51 | static inline unsigned int csum_fold(unsigned int sum) | 50 | static inline __sum16 csum_fold(__wsum sum) |
52 | { | 51 | { |
53 | while (sum >> 16) | 52 | while (sum >> 16) |
54 | sum = (sum & 0xffff) + (sum >> 16); | 53 | sum = (sum & 0xffff) + (sum >> 16); |
@@ -60,9 +59,9 @@ static inline unsigned int csum_fold(unsigned int sum) | |||
60 | * returns a 16-bit checksum, already complemented | 59 | * returns a 16-bit checksum, already complemented |
61 | */ | 60 | */ |
62 | 61 | ||
63 | static inline unsigned int | 62 | static inline __wsum |
64 | csum_tcpudp_nofold(unsigned long saddr, unsigned long daddr, unsigned short len, | 63 | csum_tcpudp_nofold(__be32 saddr, __be32 daddr, unsigned short len, |
65 | unsigned short proto, unsigned int sum) | 64 | unsigned short proto, __wsum sum) |
66 | { | 65 | { |
67 | 66 | ||
68 | __asm__ ("%0 = %0 + %1;\n\t" | 67 | __asm__ ("%0 = %0 + %1;\n\t" |
@@ -84,9 +83,9 @@ csum_tcpudp_nofold(unsigned long saddr, unsigned long daddr, unsigned short len, | |||
84 | return (sum); | 83 | return (sum); |
85 | } | 84 | } |
86 | 85 | ||
87 | static inline unsigned short int | 86 | static inline __sum16 |
88 | csum_tcpudp_magic(unsigned long saddr, unsigned long daddr, unsigned short len, | 87 | csum_tcpudp_magic(__be32 saddr, __be32 daddr, unsigned short len, |
89 | unsigned short proto, unsigned int sum) | 88 | unsigned short proto, __wsum sum) |
90 | { | 89 | { |
91 | return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); | 90 | return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); |
92 | } | 91 | } |
@@ -96,6 +95,6 @@ csum_tcpudp_magic(unsigned long saddr, unsigned long daddr, unsigned short len, | |||
96 | * in icmp.c | 95 | * in icmp.c |
97 | */ | 96 | */ |
98 | 97 | ||
99 | extern unsigned short ip_compute_csum(const unsigned char *buff, int len); | 98 | extern __sum16 ip_compute_csum(const void *buff, int len); |
100 | 99 | ||
101 | #endif /* _BFIN_CHECKSUM_H */ | 100 | #endif /* _BFIN_CHECKSUM_H */ |
diff --git a/include/asm-blackfin/gpio.h b/include/asm-blackfin/gpio.h index 27ff532a806c..ff95e9d88342 100644 --- a/include/asm-blackfin/gpio.h +++ b/include/asm-blackfin/gpio.h | |||
@@ -437,7 +437,6 @@ void gpio_set_value(unsigned gpio, int arg); | |||
437 | int gpio_get_value(unsigned gpio); | 437 | int gpio_get_value(unsigned gpio); |
438 | 438 | ||
439 | #ifndef BF548_FAMILY | 439 | #ifndef BF548_FAMILY |
440 | #define gpio_get_value(gpio) get_gpio_data(gpio) | ||
441 | #define gpio_set_value(gpio, value) set_gpio_data(gpio, value) | 440 | #define gpio_set_value(gpio, value) set_gpio_data(gpio, value) |
442 | #endif | 441 | #endif |
443 | 442 | ||
diff --git a/include/asm-blackfin/io.h b/include/asm-blackfin/io.h index 574fe56989d1..cbbf7ffdbbff 100644 --- a/include/asm-blackfin/io.h +++ b/include/asm-blackfin/io.h | |||
@@ -117,10 +117,12 @@ static inline unsigned int readl(const volatile void __iomem *addr) | |||
117 | 117 | ||
118 | extern void outsb(unsigned long port, const void *addr, unsigned long count); | 118 | extern void outsb(unsigned long port, const void *addr, unsigned long count); |
119 | extern void outsw(unsigned long port, const void *addr, unsigned long count); | 119 | extern void outsw(unsigned long port, const void *addr, unsigned long count); |
120 | extern void outsw_8(unsigned long port, const void *addr, unsigned long count); | ||
120 | extern void outsl(unsigned long port, const void *addr, unsigned long count); | 121 | extern void outsl(unsigned long port, const void *addr, unsigned long count); |
121 | 122 | ||
122 | extern void insb(unsigned long port, void *addr, unsigned long count); | 123 | extern void insb(unsigned long port, void *addr, unsigned long count); |
123 | extern void insw(unsigned long port, void *addr, unsigned long count); | 124 | extern void insw(unsigned long port, void *addr, unsigned long count); |
125 | extern void insw_8(unsigned long port, void *addr, unsigned long count); | ||
124 | extern void insl(unsigned long port, void *addr, unsigned long count); | 126 | extern void insl(unsigned long port, void *addr, unsigned long count); |
125 | extern void insl_16(unsigned long port, void *addr, unsigned long count); | 127 | extern void insl_16(unsigned long port, void *addr, unsigned long count); |
126 | 128 | ||
diff --git a/include/asm-blackfin/mach-bf527/anomaly.h b/include/asm-blackfin/mach-bf527/anomaly.h index 735fa02fafb2..4725268a5ada 100644 --- a/include/asm-blackfin/mach-bf527/anomaly.h +++ b/include/asm-blackfin/mach-bf527/anomaly.h | |||
@@ -15,12 +15,16 @@ | |||
15 | 15 | ||
16 | /* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot2 Not Supported */ | 16 | /* Multi-Issue Instruction with dsp32shiftimm in slot1 and P-reg Store in slot2 Not Supported */ |
17 | #define ANOMALY_05000074 (1) | 17 | #define ANOMALY_05000074 (1) |
18 | /* DMA_RUN Bit Is Not Valid after a Peripheral Receive Channel DMA Stops */ | ||
19 | #define ANOMALY_05000119 (1) | ||
18 | /* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ | 20 | /* Rx.H Cannot Be Used to Access 16-bit System MMR Registers */ |
19 | #define ANOMALY_05000122 (1) | 21 | #define ANOMALY_05000122 (1) |
20 | /* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */ | 22 | /* Spurious Hardware Error from an Access in the Shadow of a Conditional Branch */ |
21 | #define ANOMALY_05000245 (1) | 23 | #define ANOMALY_05000245 (1) |
22 | /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ | 24 | /* Sensitivity To Noise with Slow Input Edge Rates on External SPORT TX and RX Clocks */ |
23 | #define ANOMALY_05000265 (1) | 25 | #define ANOMALY_05000265 (1) |
26 | /* Errors when SSYNC, CSYNC, or Loads to LT, LB and LC Registers Are Interrupted */ | ||
27 | #define ANOMALY_05000312 (1) | ||
24 | /* Incorrect Access of OTP_STATUS During otp_write() Function */ | 28 | /* Incorrect Access of OTP_STATUS During otp_write() Function */ |
25 | #define ANOMALY_05000328 (1) | 29 | #define ANOMALY_05000328 (1) |
26 | /* Disallowed Configuration Prevents Subsequent Allowed Configuration on Host DMA Port */ | 30 | /* Disallowed Configuration Prevents Subsequent Allowed Configuration on Host DMA Port */ |
@@ -92,7 +96,6 @@ | |||
92 | #define ANOMALY_05000266 (0) | 96 | #define ANOMALY_05000266 (0) |
93 | #define ANOMALY_05000273 (0) | 97 | #define ANOMALY_05000273 (0) |
94 | #define ANOMALY_05000311 (0) | 98 | #define ANOMALY_05000311 (0) |
95 | #define ANOMALY_05000312 (0) | ||
96 | #define ANOMALY_05000323 (0) | 99 | #define ANOMALY_05000323 (0) |
97 | #define ANOMALY_05000363 (0) | 100 | #define ANOMALY_05000363 (0) |
98 | 101 | ||
diff --git a/include/asm-blackfin/mach-bf527/blackfin.h b/include/asm-blackfin/mach-bf527/blackfin.h index 2891727b6176..297821e2d79a 100644 --- a/include/asm-blackfin/mach-bf527/blackfin.h +++ b/include/asm-blackfin/mach-bf527/blackfin.h | |||
@@ -39,22 +39,22 @@ | |||
39 | #include "defBF522.h" | 39 | #include "defBF522.h" |
40 | #include "anomaly.h" | 40 | #include "anomaly.h" |
41 | 41 | ||
42 | #if defined(CONFIG_BF527) | 42 | #if defined(CONFIG_BF527) || defined(CONFIG_BF526) |
43 | #include "defBF527.h" | 43 | #include "defBF527.h" |
44 | #endif | 44 | #endif |
45 | 45 | ||
46 | #if defined(CONFIG_BF525) | 46 | #if defined(CONFIG_BF525) || defined(CONFIG_BF524) |
47 | #include "defBF525.h" | 47 | #include "defBF525.h" |
48 | #endif | 48 | #endif |
49 | 49 | ||
50 | #if !defined(__ASSEMBLY__) | 50 | #if !defined(__ASSEMBLY__) |
51 | #include "cdefBF522.h" | 51 | #include "cdefBF522.h" |
52 | 52 | ||
53 | #if defined(CONFIG_BF527) | 53 | #if defined(CONFIG_BF527) || defined(CONFIG_BF526) |
54 | #include "cdefBF527.h" | 54 | #include "cdefBF527.h" |
55 | #endif | 55 | #endif |
56 | 56 | ||
57 | #if defined(CONFIG_BF525) | 57 | #if defined(CONFIG_BF525) || defined(CONFIG_BF524) |
58 | #include "cdefBF525.h" | 58 | #include "cdefBF525.h" |
59 | #endif | 59 | #endif |
60 | #endif | 60 | #endif |
diff --git a/include/asm-blackfin/mach-bf533/anomaly.h b/include/asm-blackfin/mach-bf533/anomaly.h index 5a6dcc5fa36c..8f7ea112fd3a 100644 --- a/include/asm-blackfin/mach-bf533/anomaly.h +++ b/include/asm-blackfin/mach-bf533/anomaly.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * File: include/asm-blackfin/mach-bf533/anomaly.h | 2 | * File: include/asm-blackfin/mach-bf533/anomaly.h |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
4 | * | 4 | * |
5 | * Copyright (C) 2004-2007 Analog Devices Inc. | 5 | * Copyright (C) 2004-2008 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 6 | * Licensed under the GPL-2 or later. |
7 | */ | 7 | */ |
8 | 8 | ||
@@ -176,6 +176,21 @@ | |||
176 | #define ANOMALY_05000315 (1) | 176 | #define ANOMALY_05000315 (1) |
177 | /* Internal Voltage Regulator Values of 1.05V, 1.10V and 1.15V Not Allowed for LQFP Packages */ | 177 | /* Internal Voltage Regulator Values of 1.05V, 1.10V and 1.15V Not Allowed for LQFP Packages */ |
178 | #define ANOMALY_05000319 (ANOMALY_BF531 || ANOMALY_BF532) | 178 | #define ANOMALY_05000319 (ANOMALY_BF531 || ANOMALY_BF532) |
179 | /* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */ | ||
180 | #define ANOMALY_05000357 (1) | ||
181 | /* UART Break Signal Issues */ | ||
182 | #define ANOMALY_05000363 (__SILICON_REVISION__ < 5) | ||
183 | /* PPI Underflow Error Goes Undetected in ITU-R 656 Mode */ | ||
184 | #define ANOMALY_05000366 (1) | ||
185 | /* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */ | ||
186 | #define ANOMALY_05000371 (1) | ||
187 | /* PPI Does Not Start Properly In Specific Mode */ | ||
188 | #define ANOMALY_05000400 (__SILICON_REVISION__ >= 5) | ||
189 | /* SSYNC Stalls Processor when Executed from Non-Cacheable Memory */ | ||
190 | #define ANOMALY_05000402 (__SILICON_REVISION__ >= 5) | ||
191 | /* Level-Sensitive External GPIO Wakeups May Cause Indefinite Stall */ | ||
192 | #define ANOMALY_05000403 (1) | ||
193 | |||
179 | 194 | ||
180 | /* These anomalies have been "phased" out of analog.com anomaly sheets and are | 195 | /* These anomalies have been "phased" out of analog.com anomaly sheets and are |
181 | * here to show running on older silicon just isn't feasible. | 196 | * here to show running on older silicon just isn't feasible. |
@@ -249,20 +264,6 @@ | |||
249 | #define ANOMALY_05000192 (__SILICON_REVISION__ < 3) | 264 | #define ANOMALY_05000192 (__SILICON_REVISION__ < 3) |
250 | /* Internal Voltage Regulator may not start up */ | 265 | /* Internal Voltage Regulator may not start up */ |
251 | #define ANOMALY_05000206 (__SILICON_REVISION__ < 3) | 266 | #define ANOMALY_05000206 (__SILICON_REVISION__ < 3) |
252 | /* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */ | ||
253 | #define ANOMALY_05000357 (1) | ||
254 | /* UART Break Signal Issues */ | ||
255 | #define ANOMALY_05000363 (__SILICON_REVISION__ < 5) | ||
256 | /* PPI Underflow Error Goes Undetected in ITU-R 656 Mode */ | ||
257 | #define ANOMALY_05000366 (1) | ||
258 | /* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */ | ||
259 | #define ANOMALY_05000371 (1) | ||
260 | /* PPI Does Not Start Properly In Specific Mode */ | ||
261 | #define ANOMALY_05000400 (__SILICON_REVISION__ == 5) | ||
262 | /* SSYNC Stalls Processor when Executed from Non-Cacheable Memory */ | ||
263 | #define ANOMALY_05000402 (__SILICON_REVISION__ == 5) | ||
264 | /* Level-Sensitive External GPIO Wakeups May Cause Indefinite Stall */ | ||
265 | #define ANOMALY_05000403 (1) | ||
266 | 267 | ||
267 | /* Anomalies that don't exist on this proc */ | 268 | /* Anomalies that don't exist on this proc */ |
268 | #define ANOMALY_05000266 (0) | 269 | #define ANOMALY_05000266 (0) |
diff --git a/include/asm-blackfin/mach-bf537/anomaly.h b/include/asm-blackfin/mach-bf537/anomaly.h index a6b08facb242..8460ab9c324f 100644 --- a/include/asm-blackfin/mach-bf537/anomaly.h +++ b/include/asm-blackfin/mach-bf537/anomaly.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * File: include/asm-blackfin/mach-bf537/anomaly.h | 2 | * File: include/asm-blackfin/mach-bf537/anomaly.h |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
4 | * | 4 | * |
5 | * Copyright (C) 2004-2007 Analog Devices Inc. | 5 | * Copyright (C) 2004-2008 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 6 | * Licensed under the GPL-2 or later. |
7 | */ | 7 | */ |
8 | 8 | ||
@@ -132,8 +132,8 @@ | |||
132 | #define ANOMALY_05000322 (1) | 132 | #define ANOMALY_05000322 (1) |
133 | /* Ethernet MAC MDIO Reads Do Not Meet IEEE Specification */ | 133 | /* Ethernet MAC MDIO Reads Do Not Meet IEEE Specification */ |
134 | #define ANOMALY_05000341 (__SILICON_REVISION__ >= 3) | 134 | #define ANOMALY_05000341 (__SILICON_REVISION__ >= 3) |
135 | /* New Feature: UART Remains Enabled after UART Boot (Not Available on Older Silicon) */ | 135 | /* New Feature: UART Remains Enabled after UART Boot */ |
136 | #define ANOMALY_05000350 (__SILICON_REVISION__ < 3) | 136 | #define ANOMALY_05000350 (__SILICON_REVISION__ >= 3) |
137 | /* Regulator Programming Blocked when Hibernate Wakeup Source Remains Active */ | 137 | /* Regulator Programming Blocked when Hibernate Wakeup Source Remains Active */ |
138 | #define ANOMALY_05000355 (1) | 138 | #define ANOMALY_05000355 (1) |
139 | /* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */ | 139 | /* Serial Port (SPORT) Multichannel Transmit Failure when Channel 0 Is Disabled */ |
@@ -145,12 +145,10 @@ | |||
145 | /* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */ | 145 | /* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */ |
146 | #define ANOMALY_05000371 (1) | 146 | #define ANOMALY_05000371 (1) |
147 | /* SSYNC Stalls Processor when Executed from Non-Cacheable Memory */ | 147 | /* SSYNC Stalls Processor when Executed from Non-Cacheable Memory */ |
148 | #define ANOMALY_05000402 (__SILICON_REVISION__ >= 3) | 148 | #define ANOMALY_05000402 (__SILICON_REVISION__ >= 5) |
149 | /* Level-Sensitive External GPIO Wakeups May Cause Indefinite Stall */ | 149 | /* Level-Sensitive External GPIO Wakeups May Cause Indefinite Stall */ |
150 | #define ANOMALY_05000403 (1) | 150 | #define ANOMALY_05000403 (1) |
151 | 151 | ||
152 | |||
153 | |||
154 | /* Anomalies that don't exist on this proc */ | 152 | /* Anomalies that don't exist on this proc */ |
155 | #define ANOMALY_05000125 (0) | 153 | #define ANOMALY_05000125 (0) |
156 | #define ANOMALY_05000158 (0) | 154 | #define ANOMALY_05000158 (0) |
diff --git a/include/asm-blackfin/mach-bf548/anomaly.h b/include/asm-blackfin/mach-bf548/anomaly.h index 49d3cebc5293..3ad59655881a 100644 --- a/include/asm-blackfin/mach-bf548/anomaly.h +++ b/include/asm-blackfin/mach-bf548/anomaly.h | |||
@@ -75,6 +75,8 @@ | |||
75 | #define ANOMALY_05000365 (1) | 75 | #define ANOMALY_05000365 (1) |
76 | /* Addressing Conflict between Boot ROM and Asynchronous Memory */ | 76 | /* Addressing Conflict between Boot ROM and Asynchronous Memory */ |
77 | #define ANOMALY_05000369 (1) | 77 | #define ANOMALY_05000369 (1) |
78 | /* Possible RETS Register Corruption when Subroutine Is under 5 Cycles in Duration */ | ||
79 | #define ANOMALY_05000371 (1) | ||
78 | /* Mobile DDR Operation Not Functional */ | 80 | /* Mobile DDR Operation Not Functional */ |
79 | #define ANOMALY_05000377 (1) | 81 | #define ANOMALY_05000377 (1) |
80 | /* Security/Authentication Speedpath Causes Authentication To Fail To Initiate */ | 82 | /* Security/Authentication Speedpath Causes Authentication To Fail To Initiate */ |
diff --git a/include/asm-blackfin/mach-bf561/anomaly.h b/include/asm-blackfin/mach-bf561/anomaly.h index 82157caa96a2..5c5d7d7d695f 100644 --- a/include/asm-blackfin/mach-bf561/anomaly.h +++ b/include/asm-blackfin/mach-bf561/anomaly.h | |||
@@ -2,7 +2,7 @@ | |||
2 | * File: include/asm-blackfin/mach-bf561/anomaly.h | 2 | * File: include/asm-blackfin/mach-bf561/anomaly.h |
3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ | 3 | * Bugs: Enter bugs at http://blackfin.uclinux.org/ |
4 | * | 4 | * |
5 | * Copyright (C) 2004-2007 Analog Devices Inc. | 5 | * Copyright (C) 2004-2008 Analog Devices Inc. |
6 | * Licensed under the GPL-2 or later. | 6 | * Licensed under the GPL-2 or later. |
7 | */ | 7 | */ |
8 | 8 | ||
diff --git a/include/asm-blackfin/mach-bf561/dma.h b/include/asm-blackfin/mach-bf561/dma.h index 21d982003e75..8bc46cd89a02 100644 --- a/include/asm-blackfin/mach-bf561/dma.h +++ b/include/asm-blackfin/mach-bf561/dma.h | |||
@@ -25,11 +25,11 @@ | |||
25 | #define CH_MEM_STREAM1_SRC 27 /* RX */ | 25 | #define CH_MEM_STREAM1_SRC 27 /* RX */ |
26 | #define CH_MEM_STREAM2_DEST 28 | 26 | #define CH_MEM_STREAM2_DEST 28 |
27 | #define CH_MEM_STREAM2_SRC 29 | 27 | #define CH_MEM_STREAM2_SRC 29 |
28 | #define CH_MEM_STREAM3_SRC 30 | 28 | #define CH_MEM_STREAM3_DEST 30 |
29 | #define CH_MEM_STREAM3_DEST 31 | 29 | #define CH_MEM_STREAM3_SRC 31 |
30 | #define CH_IMEM_STREAM0_DEST 32 | 30 | #define CH_IMEM_STREAM0_DEST 32 |
31 | #define CH_IMEM_STREAM0_SRC 33 | 31 | #define CH_IMEM_STREAM0_SRC 33 |
32 | #define CH_IMEM_STREAM1_SRC 34 | 32 | #define CH_IMEM_STREAM1_DEST 34 |
33 | #define CH_IMEM_STREAM1_DEST 35 | 33 | #define CH_IMEM_STREAM1_SRC 35 |
34 | 34 | ||
35 | #endif | 35 | #endif |
diff --git a/include/asm-blackfin/serial.h b/include/asm-blackfin/serial.h new file mode 100644 index 000000000000..994dd869558c --- /dev/null +++ b/include/asm-blackfin/serial.h | |||
@@ -0,0 +1,5 @@ | |||
1 | /* | ||
2 | * include/asm-blackfin/serial.h | ||
3 | */ | ||
4 | |||
5 | #define SERIAL_EXTRA_IRQ_FLAGS IRQF_TRIGGER_HIGH | ||
diff --git a/include/asm-frv/mem-layout.h b/include/asm-frv/mem-layout.h index 734a1d0583b6..2947764fc0e0 100644 --- a/include/asm-frv/mem-layout.h +++ b/include/asm-frv/mem-layout.h | |||
@@ -31,6 +31,13 @@ | |||
31 | 31 | ||
32 | #define PAGE_MASK (~(PAGE_SIZE-1)) | 32 | #define PAGE_MASK (~(PAGE_SIZE-1)) |
33 | 33 | ||
34 | /* | ||
35 | * the slab must be aligned such that load- and store-double instructions don't | ||
36 | * fault if used | ||
37 | */ | ||
38 | #define ARCH_KMALLOC_MINALIGN 8 | ||
39 | #define ARCH_SLAB_MINALIGN 8 | ||
40 | |||
34 | /*****************************************************************************/ | 41 | /*****************************************************************************/ |
35 | /* | 42 | /* |
36 | * virtual memory layout from kernel's point of view | 43 | * virtual memory layout from kernel's point of view |
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index ecf675a59d21..6be061d09da9 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h | |||
@@ -1,8 +1,12 @@ | |||
1 | #ifndef _ASM_GENERIC_GPIO_H | 1 | #ifndef _ASM_GENERIC_GPIO_H |
2 | #define _ASM_GENERIC_GPIO_H | 2 | #define _ASM_GENERIC_GPIO_H |
3 | 3 | ||
4 | #include <linux/types.h> | ||
5 | |||
4 | #ifdef CONFIG_HAVE_GPIO_LIB | 6 | #ifdef CONFIG_HAVE_GPIO_LIB |
5 | 7 | ||
8 | #include <linux/compiler.h> | ||
9 | |||
6 | /* Platforms may implement their GPIO interface with library code, | 10 | /* Platforms may implement their GPIO interface with library code, |
7 | * at a small performance cost for non-inlined operations and some | 11 | * at a small performance cost for non-inlined operations and some |
8 | * extra memory (for code and for per-GPIO table entries). | 12 | * extra memory (for code and for per-GPIO table entries). |
@@ -74,7 +78,7 @@ struct gpio_chip { | |||
74 | 78 | ||
75 | extern const char *gpiochip_is_requested(struct gpio_chip *chip, | 79 | extern const char *gpiochip_is_requested(struct gpio_chip *chip, |
76 | unsigned offset); | 80 | unsigned offset); |
77 | extern int __init __must_check gpiochip_reserve(int start, int ngpio); | 81 | extern int __must_check gpiochip_reserve(int start, int ngpio); |
78 | 82 | ||
79 | /* add/remove chips */ | 83 | /* add/remove chips */ |
80 | extern int gpiochip_add(struct gpio_chip *chip); | 84 | extern int gpiochip_add(struct gpio_chip *chip); |
diff --git a/include/asm-ia64/kvm.h b/include/asm-ia64/kvm.h index eb2d3559d089..3f6a090cbd9a 100644 --- a/include/asm-ia64/kvm.h +++ b/include/asm-ia64/kvm.h | |||
@@ -22,14 +22,13 @@ | |||
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <asm/types.h> | 24 | #include <asm/types.h> |
25 | #include <asm/fpu.h> | ||
26 | 25 | ||
27 | #include <linux/ioctl.h> | 26 | #include <linux/ioctl.h> |
28 | 27 | ||
29 | /* Architectural interrupt line count. */ | 28 | /* Architectural interrupt line count. */ |
30 | #define KVM_NR_INTERRUPTS 256 | 29 | #define KVM_NR_INTERRUPTS 256 |
31 | 30 | ||
32 | #define KVM_IOAPIC_NUM_PINS 24 | 31 | #define KVM_IOAPIC_NUM_PINS 48 |
33 | 32 | ||
34 | struct kvm_ioapic_state { | 33 | struct kvm_ioapic_state { |
35 | __u64 base_address; | 34 | __u64 base_address; |
@@ -61,6 +60,13 @@ struct kvm_ioapic_state { | |||
61 | 60 | ||
62 | #define KVM_CONTEXT_SIZE 8*1024 | 61 | #define KVM_CONTEXT_SIZE 8*1024 |
63 | 62 | ||
63 | struct kvm_fpreg { | ||
64 | union { | ||
65 | unsigned long bits[2]; | ||
66 | long double __dummy; /* force 16-byte alignment */ | ||
67 | } u; | ||
68 | }; | ||
69 | |||
64 | union context { | 70 | union context { |
65 | /* 8K size */ | 71 | /* 8K size */ |
66 | char dummy[KVM_CONTEXT_SIZE]; | 72 | char dummy[KVM_CONTEXT_SIZE]; |
@@ -77,7 +83,7 @@ union context { | |||
77 | unsigned long ibr[8]; | 83 | unsigned long ibr[8]; |
78 | unsigned long dbr[8]; | 84 | unsigned long dbr[8]; |
79 | unsigned long pkr[8]; | 85 | unsigned long pkr[8]; |
80 | struct ia64_fpreg fr[128]; | 86 | struct kvm_fpreg fr[128]; |
81 | }; | 87 | }; |
82 | }; | 88 | }; |
83 | 89 | ||
diff --git a/include/asm-ia64/machvec.h b/include/asm-ia64/machvec.h index 9f020eb825c5..0721a5e8271e 100644 --- a/include/asm-ia64/machvec.h +++ b/include/asm-ia64/machvec.h | |||
@@ -126,6 +126,8 @@ extern void machvec_tlb_migrate_finish (struct mm_struct *); | |||
126 | # include <asm/machvec_hpzx1_swiotlb.h> | 126 | # include <asm/machvec_hpzx1_swiotlb.h> |
127 | # elif defined (CONFIG_IA64_SGI_SN2) | 127 | # elif defined (CONFIG_IA64_SGI_SN2) |
128 | # include <asm/machvec_sn2.h> | 128 | # include <asm/machvec_sn2.h> |
129 | # elif defined (CONFIG_IA64_SGI_UV) | ||
130 | # include <asm/machvec_uv.h> | ||
129 | # elif defined (CONFIG_IA64_GENERIC) | 131 | # elif defined (CONFIG_IA64_GENERIC) |
130 | 132 | ||
131 | # ifdef MACHVEC_PLATFORM_HEADER | 133 | # ifdef MACHVEC_PLATFORM_HEADER |
diff --git a/include/asm-ia64/machvec_uv.h b/include/asm-ia64/machvec_uv.h new file mode 100644 index 000000000000..2931447f3813 --- /dev/null +++ b/include/asm-ia64/machvec_uv.h | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * SGI UV Core Functions | ||
7 | * | ||
8 | * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved. | ||
9 | */ | ||
10 | |||
11 | #ifndef _ASM_IA64_MACHVEC_UV_H | ||
12 | #define _ASM_IA64_MACHVEC_UV_H | ||
13 | |||
14 | extern ia64_mv_setup_t uv_setup; | ||
15 | |||
16 | /* | ||
17 | * This stuff has dual use! | ||
18 | * | ||
19 | * For a generic kernel, the macros are used to initialize the | ||
20 | * platform's machvec structure. When compiling a non-generic kernel, | ||
21 | * the macros are used directly. | ||
22 | */ | ||
23 | #define platform_name "uv" | ||
24 | #define platform_setup uv_setup | ||
25 | |||
26 | #endif /* _ASM_IA64_MACHVEC_UV_H */ | ||
diff --git a/include/asm-ia64/patch.h b/include/asm-ia64/patch.h index a71543084fb4..295fe6ab4584 100644 --- a/include/asm-ia64/patch.h +++ b/include/asm-ia64/patch.h | |||
@@ -21,6 +21,7 @@ extern void ia64_patch_imm60 (u64 insn_addr, u64 val); /* patch "brl" w/ip-rel | |||
21 | extern void ia64_patch_mckinley_e9 (unsigned long start, unsigned long end); | 21 | extern void ia64_patch_mckinley_e9 (unsigned long start, unsigned long end); |
22 | extern void ia64_patch_vtop (unsigned long start, unsigned long end); | 22 | extern void ia64_patch_vtop (unsigned long start, unsigned long end); |
23 | extern void ia64_patch_phys_stack_reg(unsigned long val); | 23 | extern void ia64_patch_phys_stack_reg(unsigned long val); |
24 | extern void ia64_patch_rse (unsigned long start, unsigned long end); | ||
24 | extern void ia64_patch_gate (void); | 25 | extern void ia64_patch_gate (void); |
25 | 26 | ||
26 | #endif /* _ASM_IA64_PATCH_H */ | 27 | #endif /* _ASM_IA64_PATCH_H */ |
diff --git a/include/asm-ia64/ptrace.h b/include/asm-ia64/ptrace.h index 4b2a8d40ebc5..15f8dcfe6eee 100644 --- a/include/asm-ia64/ptrace.h +++ b/include/asm-ia64/ptrace.h | |||
@@ -76,7 +76,7 @@ | |||
76 | # define KERNEL_STACK_SIZE_ORDER 0 | 76 | # define KERNEL_STACK_SIZE_ORDER 0 |
77 | #endif | 77 | #endif |
78 | 78 | ||
79 | #define IA64_RBS_OFFSET ((IA64_TASK_SIZE + IA64_THREAD_INFO_SIZE + 15) & ~15) | 79 | #define IA64_RBS_OFFSET ((IA64_TASK_SIZE + IA64_THREAD_INFO_SIZE + 31) & ~31) |
80 | #define IA64_STK_OFFSET ((1 << KERNEL_STACK_SIZE_ORDER)*PAGE_SIZE) | 80 | #define IA64_STK_OFFSET ((1 << KERNEL_STACK_SIZE_ORDER)*PAGE_SIZE) |
81 | 81 | ||
82 | #define KERNEL_STACK_SIZE IA64_STK_OFFSET | 82 | #define KERNEL_STACK_SIZE IA64_STK_OFFSET |
diff --git a/include/asm-ia64/sections.h b/include/asm-ia64/sections.h index dc42a359894f..7286e4a9fe84 100644 --- a/include/asm-ia64/sections.h +++ b/include/asm-ia64/sections.h | |||
@@ -10,6 +10,7 @@ | |||
10 | 10 | ||
11 | extern char __per_cpu_start[], __per_cpu_end[], __phys_per_cpu_start[]; | 11 | extern char __per_cpu_start[], __per_cpu_end[], __phys_per_cpu_start[]; |
12 | extern char __start___vtop_patchlist[], __end___vtop_patchlist[]; | 12 | extern char __start___vtop_patchlist[], __end___vtop_patchlist[]; |
13 | extern char __start___rse_patchlist[], __end___rse_patchlist[]; | ||
13 | extern char __start___mckinley_e9_bundles[], __end___mckinley_e9_bundles[]; | 14 | extern char __start___mckinley_e9_bundles[], __end___mckinley_e9_bundles[]; |
14 | extern char __start___phys_stack_reg_patchlist[], __end___phys_stack_reg_patchlist[]; | 15 | extern char __start___phys_stack_reg_patchlist[], __end___phys_stack_reg_patchlist[]; |
15 | extern char __start_gate_section[]; | 16 | extern char __start_gate_section[]; |
diff --git a/include/asm-ia64/uv/uv_hub.h b/include/asm-ia64/uv/uv_hub.h new file mode 100644 index 000000000000..f607018af4a1 --- /dev/null +++ b/include/asm-ia64/uv/uv_hub.h | |||
@@ -0,0 +1,309 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * SGI UV architectural definitions | ||
7 | * | ||
8 | * Copyright (C) 2008 Silicon Graphics, Inc. All rights reserved. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_IA64_UV_HUB_H__ | ||
12 | #define __ASM_IA64_UV_HUB_H__ | ||
13 | |||
14 | #include <linux/numa.h> | ||
15 | #include <linux/percpu.h> | ||
16 | #include <asm/types.h> | ||
17 | #include <asm/percpu.h> | ||
18 | |||
19 | |||
20 | /* | ||
21 | * Addressing Terminology | ||
22 | * | ||
23 | * M - The low M bits of a physical address represent the offset | ||
24 | * into the blade local memory. RAM memory on a blade is physically | ||
25 | * contiguous (although various IO spaces may punch holes in | ||
26 | * it).. | ||
27 | * | ||
28 | * N - Number of bits in the node portion of a socket physical | ||
29 | * address. | ||
30 | * | ||
31 | * NASID - network ID of a router, Mbrick or Cbrick. Nasid values of | ||
32 | * routers always have low bit of 1, C/MBricks have low bit | ||
33 | * equal to 0. Most addressing macros that target UV hub chips | ||
34 | * right shift the NASID by 1 to exclude the always-zero bit. | ||
35 | * NASIDs contain up to 15 bits. | ||
36 | * | ||
37 | * GNODE - NASID right shifted by 1 bit. Most mmrs contain gnodes instead | ||
38 | * of nasids. | ||
39 | * | ||
40 | * PNODE - the low N bits of the GNODE. The PNODE is the most useful variant | ||
41 | * of the nasid for socket usage. | ||
42 | * | ||
43 | * | ||
44 | * NumaLink Global Physical Address Format: | ||
45 | * +--------------------------------+---------------------+ | ||
46 | * |00..000| GNODE | NodeOffset | | ||
47 | * +--------------------------------+---------------------+ | ||
48 | * |<-------53 - M bits --->|<--------M bits -----> | ||
49 | * | ||
50 | * M - number of node offset bits (35 .. 40) | ||
51 | * | ||
52 | * | ||
53 | * Memory/UV-HUB Processor Socket Address Format: | ||
54 | * +----------------+---------------+---------------------+ | ||
55 | * |00..000000000000| PNODE | NodeOffset | | ||
56 | * +----------------+---------------+---------------------+ | ||
57 | * <--- N bits --->|<--------M bits -----> | ||
58 | * | ||
59 | * M - number of node offset bits (35 .. 40) | ||
60 | * N - number of PNODE bits (0 .. 10) | ||
61 | * | ||
62 | * Note: M + N cannot currently exceed 44 (x86_64) or 46 (IA64). | ||
63 | * The actual values are configuration dependent and are set at | ||
64 | * boot time. M & N values are set by the hardware/BIOS at boot. | ||
65 | */ | ||
66 | |||
67 | |||
68 | /* | ||
69 | * Maximum number of bricks in all partitions and in all coherency domains. | ||
70 | * This is the total number of bricks accessible in the numalink fabric. It | ||
71 | * includes all C & M bricks. Routers are NOT included. | ||
72 | * | ||
73 | * This value is also the value of the maximum number of non-router NASIDs | ||
74 | * in the numalink fabric. | ||
75 | * | ||
76 | * NOTE: a brick may contain 1 or 2 OS nodes. Don't get these confused. | ||
77 | */ | ||
78 | #define UV_MAX_NUMALINK_BLADES 16384 | ||
79 | |||
80 | /* | ||
81 | * Maximum number of C/Mbricks within a software SSI (hardware may support | ||
82 | * more). | ||
83 | */ | ||
84 | #define UV_MAX_SSI_BLADES 1 | ||
85 | |||
86 | /* | ||
87 | * The largest possible NASID of a C or M brick (+ 2) | ||
88 | */ | ||
89 | #define UV_MAX_NASID_VALUE (UV_MAX_NUMALINK_NODES * 2) | ||
90 | |||
91 | /* | ||
92 | * The following defines attributes of the HUB chip. These attributes are | ||
93 | * frequently referenced and are kept in the per-cpu data areas of each cpu. | ||
94 | * They are kept together in a struct to minimize cache misses. | ||
95 | */ | ||
96 | struct uv_hub_info_s { | ||
97 | unsigned long global_mmr_base; | ||
98 | unsigned long gpa_mask; | ||
99 | unsigned long gnode_upper; | ||
100 | unsigned long lowmem_remap_top; | ||
101 | unsigned long lowmem_remap_base; | ||
102 | unsigned short pnode; | ||
103 | unsigned short pnode_mask; | ||
104 | unsigned short coherency_domain_number; | ||
105 | unsigned short numa_blade_id; | ||
106 | unsigned char blade_processor_id; | ||
107 | unsigned char m_val; | ||
108 | unsigned char n_val; | ||
109 | }; | ||
110 | DECLARE_PER_CPU(struct uv_hub_info_s, __uv_hub_info); | ||
111 | #define uv_hub_info (&__get_cpu_var(__uv_hub_info)) | ||
112 | #define uv_cpu_hub_info(cpu) (&per_cpu(__uv_hub_info, cpu)) | ||
113 | |||
114 | /* | ||
115 | * Local & Global MMR space macros. | ||
116 | * Note: macros are intended to be used ONLY by inline functions | ||
117 | * in this file - not by other kernel code. | ||
118 | * n - NASID (full 15-bit global nasid) | ||
119 | * g - GNODE (full 15-bit global nasid, right shifted 1) | ||
120 | * p - PNODE (local part of nsids, right shifted 1) | ||
121 | */ | ||
122 | #define UV_NASID_TO_PNODE(n) (((n) >> 1) & uv_hub_info->pnode_mask) | ||
123 | #define UV_PNODE_TO_NASID(p) (((p) << 1) | uv_hub_info->gnode_upper) | ||
124 | |||
125 | #define UV_LOCAL_MMR_BASE 0xf4000000UL | ||
126 | #define UV_GLOBAL_MMR32_BASE 0xf8000000UL | ||
127 | #define UV_GLOBAL_MMR64_BASE (uv_hub_info->global_mmr_base) | ||
128 | |||
129 | #define UV_GLOBAL_MMR32_PNODE_SHIFT 15 | ||
130 | #define UV_GLOBAL_MMR64_PNODE_SHIFT 26 | ||
131 | |||
132 | #define UV_GLOBAL_MMR32_PNODE_BITS(p) ((p) << (UV_GLOBAL_MMR32_PNODE_SHIFT)) | ||
133 | |||
134 | #define UV_GLOBAL_MMR64_PNODE_BITS(p) \ | ||
135 | ((unsigned long)(p) << UV_GLOBAL_MMR64_PNODE_SHIFT) | ||
136 | |||
137 | /* | ||
138 | * Macros for converting between kernel virtual addresses, socket local physical | ||
139 | * addresses, and UV global physical addresses. | ||
140 | * Note: use the standard __pa() & __va() macros for converting | ||
141 | * between socket virtual and socket physical addresses. | ||
142 | */ | ||
143 | |||
144 | /* socket phys RAM --> UV global physical address */ | ||
145 | static inline unsigned long uv_soc_phys_ram_to_gpa(unsigned long paddr) | ||
146 | { | ||
147 | if (paddr < uv_hub_info->lowmem_remap_top) | ||
148 | paddr += uv_hub_info->lowmem_remap_base; | ||
149 | return paddr | uv_hub_info->gnode_upper; | ||
150 | } | ||
151 | |||
152 | |||
153 | /* socket virtual --> UV global physical address */ | ||
154 | static inline unsigned long uv_gpa(void *v) | ||
155 | { | ||
156 | return __pa(v) | uv_hub_info->gnode_upper; | ||
157 | } | ||
158 | |||
159 | /* socket virtual --> UV global physical address */ | ||
160 | static inline void *uv_vgpa(void *v) | ||
161 | { | ||
162 | return (void *)uv_gpa(v); | ||
163 | } | ||
164 | |||
165 | /* UV global physical address --> socket virtual */ | ||
166 | static inline void *uv_va(unsigned long gpa) | ||
167 | { | ||
168 | return __va(gpa & uv_hub_info->gpa_mask); | ||
169 | } | ||
170 | |||
171 | /* pnode, offset --> socket virtual */ | ||
172 | static inline void *uv_pnode_offset_to_vaddr(int pnode, unsigned long offset) | ||
173 | { | ||
174 | return __va(((unsigned long)pnode << uv_hub_info->m_val) | offset); | ||
175 | } | ||
176 | |||
177 | |||
178 | /* | ||
179 | * Access global MMRs using the low memory MMR32 space. This region supports | ||
180 | * faster MMR access but not all MMRs are accessible in this space. | ||
181 | */ | ||
182 | static inline unsigned long *uv_global_mmr32_address(int pnode, | ||
183 | unsigned long offset) | ||
184 | { | ||
185 | return __va(UV_GLOBAL_MMR32_BASE | | ||
186 | UV_GLOBAL_MMR32_PNODE_BITS(pnode) | offset); | ||
187 | } | ||
188 | |||
189 | static inline void uv_write_global_mmr32(int pnode, unsigned long offset, | ||
190 | unsigned long val) | ||
191 | { | ||
192 | *uv_global_mmr32_address(pnode, offset) = val; | ||
193 | } | ||
194 | |||
195 | static inline unsigned long uv_read_global_mmr32(int pnode, | ||
196 | unsigned long offset) | ||
197 | { | ||
198 | return *uv_global_mmr32_address(pnode, offset); | ||
199 | } | ||
200 | |||
201 | /* | ||
202 | * Access Global MMR space using the MMR space located at the top of physical | ||
203 | * memory. | ||
204 | */ | ||
205 | static inline unsigned long *uv_global_mmr64_address(int pnode, | ||
206 | unsigned long offset) | ||
207 | { | ||
208 | return __va(UV_GLOBAL_MMR64_BASE | | ||
209 | UV_GLOBAL_MMR64_PNODE_BITS(pnode) | offset); | ||
210 | } | ||
211 | |||
212 | static inline void uv_write_global_mmr64(int pnode, unsigned long offset, | ||
213 | unsigned long val) | ||
214 | { | ||
215 | *uv_global_mmr64_address(pnode, offset) = val; | ||
216 | } | ||
217 | |||
218 | static inline unsigned long uv_read_global_mmr64(int pnode, | ||
219 | unsigned long offset) | ||
220 | { | ||
221 | return *uv_global_mmr64_address(pnode, offset); | ||
222 | } | ||
223 | |||
224 | /* | ||
225 | * Access hub local MMRs. Faster than using global space but only local MMRs | ||
226 | * are accessible. | ||
227 | */ | ||
228 | static inline unsigned long *uv_local_mmr_address(unsigned long offset) | ||
229 | { | ||
230 | return __va(UV_LOCAL_MMR_BASE | offset); | ||
231 | } | ||
232 | |||
233 | static inline unsigned long uv_read_local_mmr(unsigned long offset) | ||
234 | { | ||
235 | return *uv_local_mmr_address(offset); | ||
236 | } | ||
237 | |||
238 | static inline void uv_write_local_mmr(unsigned long offset, unsigned long val) | ||
239 | { | ||
240 | *uv_local_mmr_address(offset) = val; | ||
241 | } | ||
242 | |||
243 | /* | ||
244 | * Structures and definitions for converting between cpu, node, pnode, and blade | ||
245 | * numbers. | ||
246 | */ | ||
247 | |||
248 | /* Blade-local cpu number of current cpu. Numbered 0 .. <# cpus on the blade> */ | ||
249 | static inline int uv_blade_processor_id(void) | ||
250 | { | ||
251 | return smp_processor_id(); | ||
252 | } | ||
253 | |||
254 | /* Blade number of current cpu. Numnbered 0 .. <#blades -1> */ | ||
255 | static inline int uv_numa_blade_id(void) | ||
256 | { | ||
257 | return 0; | ||
258 | } | ||
259 | |||
260 | /* Convert a cpu number to the the UV blade number */ | ||
261 | static inline int uv_cpu_to_blade_id(int cpu) | ||
262 | { | ||
263 | return 0; | ||
264 | } | ||
265 | |||
266 | /* Convert linux node number to the UV blade number */ | ||
267 | static inline int uv_node_to_blade_id(int nid) | ||
268 | { | ||
269 | return 0; | ||
270 | } | ||
271 | |||
272 | /* Convert a blade id to the PNODE of the blade */ | ||
273 | static inline int uv_blade_to_pnode(int bid) | ||
274 | { | ||
275 | return 0; | ||
276 | } | ||
277 | |||
278 | /* Determine the number of possible cpus on a blade */ | ||
279 | static inline int uv_blade_nr_possible_cpus(int bid) | ||
280 | { | ||
281 | return num_possible_cpus(); | ||
282 | } | ||
283 | |||
284 | /* Determine the number of online cpus on a blade */ | ||
285 | static inline int uv_blade_nr_online_cpus(int bid) | ||
286 | { | ||
287 | return num_online_cpus(); | ||
288 | } | ||
289 | |||
290 | /* Convert a cpu id to the PNODE of the blade containing the cpu */ | ||
291 | static inline int uv_cpu_to_pnode(int cpu) | ||
292 | { | ||
293 | return 0; | ||
294 | } | ||
295 | |||
296 | /* Convert a linux node number to the PNODE of the blade */ | ||
297 | static inline int uv_node_to_pnode(int nid) | ||
298 | { | ||
299 | return 0; | ||
300 | } | ||
301 | |||
302 | /* Maximum possible number of blades */ | ||
303 | static inline int uv_num_possible_blades(void) | ||
304 | { | ||
305 | return 1; | ||
306 | } | ||
307 | |||
308 | #endif /* __ASM_IA64_UV_HUB__ */ | ||
309 | |||
diff --git a/include/asm-ia64/uv/uv_mmrs.h b/include/asm-ia64/uv/uv_mmrs.h new file mode 100644 index 000000000000..1cc1dbb0182f --- /dev/null +++ b/include/asm-ia64/uv/uv_mmrs.h | |||
@@ -0,0 +1,266 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * SGI UV MMR definitions | ||
7 | * | ||
8 | * Copyright (C) 2007-2008 Silicon Graphics, Inc. All rights reserved. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ASM_IA64_UV_MMRS__ | ||
12 | #define __ASM_IA64_UV_MMRS__ | ||
13 | |||
14 | /* | ||
15 | * AUTO GENERATED - Do not edit | ||
16 | */ | ||
17 | |||
18 | #define UV_MMR_ENABLE (1UL << 63) | ||
19 | |||
20 | /* ========================================================================= */ | ||
21 | /* UVH_NODE_ID */ | ||
22 | /* ========================================================================= */ | ||
23 | #define UVH_NODE_ID 0x0UL | ||
24 | |||
25 | #define UVH_NODE_ID_FORCE1_SHFT 0 | ||
26 | #define UVH_NODE_ID_FORCE1_MASK 0x0000000000000001UL | ||
27 | #define UVH_NODE_ID_MANUFACTURER_SHFT 1 | ||
28 | #define UVH_NODE_ID_MANUFACTURER_MASK 0x0000000000000ffeUL | ||
29 | #define UVH_NODE_ID_PART_NUMBER_SHFT 12 | ||
30 | #define UVH_NODE_ID_PART_NUMBER_MASK 0x000000000ffff000UL | ||
31 | #define UVH_NODE_ID_REVISION_SHFT 28 | ||
32 | #define UVH_NODE_ID_REVISION_MASK 0x00000000f0000000UL | ||
33 | #define UVH_NODE_ID_NODE_ID_SHFT 32 | ||
34 | #define UVH_NODE_ID_NODE_ID_MASK 0x00007fff00000000UL | ||
35 | #define UVH_NODE_ID_NODES_PER_BIT_SHFT 48 | ||
36 | #define UVH_NODE_ID_NODES_PER_BIT_MASK 0x007f000000000000UL | ||
37 | #define UVH_NODE_ID_NI_PORT_SHFT 56 | ||
38 | #define UVH_NODE_ID_NI_PORT_MASK 0x0f00000000000000UL | ||
39 | |||
40 | union uvh_node_id_u { | ||
41 | unsigned long v; | ||
42 | struct uvh_node_id_s { | ||
43 | unsigned long force1 : 1; /* RO */ | ||
44 | unsigned long manufacturer : 11; /* RO */ | ||
45 | unsigned long part_number : 16; /* RO */ | ||
46 | unsigned long revision : 4; /* RO */ | ||
47 | unsigned long node_id : 15; /* RW */ | ||
48 | unsigned long rsvd_47 : 1; /* */ | ||
49 | unsigned long nodes_per_bit : 7; /* RW */ | ||
50 | unsigned long rsvd_55 : 1; /* */ | ||
51 | unsigned long ni_port : 4; /* RO */ | ||
52 | unsigned long rsvd_60_63 : 4; /* */ | ||
53 | } s; | ||
54 | }; | ||
55 | |||
56 | /* ========================================================================= */ | ||
57 | /* UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR */ | ||
58 | /* ========================================================================= */ | ||
59 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR 0x16000d0UL | ||
60 | |||
61 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR_DEST_BASE_SHFT 24 | ||
62 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_0_MMR_DEST_BASE_MASK 0x00003fffff000000UL | ||
63 | |||
64 | union uvh_rh_gam_alias210_redirect_config_0_mmr_u { | ||
65 | unsigned long v; | ||
66 | struct uvh_rh_gam_alias210_redirect_config_0_mmr_s { | ||
67 | unsigned long rsvd_0_23 : 24; /* */ | ||
68 | unsigned long dest_base : 22; /* RW */ | ||
69 | unsigned long rsvd_46_63: 18; /* */ | ||
70 | } s; | ||
71 | }; | ||
72 | |||
73 | /* ========================================================================= */ | ||
74 | /* UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR */ | ||
75 | /* ========================================================================= */ | ||
76 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR 0x16000e0UL | ||
77 | |||
78 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR_DEST_BASE_SHFT 24 | ||
79 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_1_MMR_DEST_BASE_MASK 0x00003fffff000000UL | ||
80 | |||
81 | union uvh_rh_gam_alias210_redirect_config_1_mmr_u { | ||
82 | unsigned long v; | ||
83 | struct uvh_rh_gam_alias210_redirect_config_1_mmr_s { | ||
84 | unsigned long rsvd_0_23 : 24; /* */ | ||
85 | unsigned long dest_base : 22; /* RW */ | ||
86 | unsigned long rsvd_46_63: 18; /* */ | ||
87 | } s; | ||
88 | }; | ||
89 | |||
90 | /* ========================================================================= */ | ||
91 | /* UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR */ | ||
92 | /* ========================================================================= */ | ||
93 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR 0x16000f0UL | ||
94 | |||
95 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR_DEST_BASE_SHFT 24 | ||
96 | #define UVH_RH_GAM_ALIAS210_REDIRECT_CONFIG_2_MMR_DEST_BASE_MASK 0x00003fffff000000UL | ||
97 | |||
98 | union uvh_rh_gam_alias210_redirect_config_2_mmr_u { | ||
99 | unsigned long v; | ||
100 | struct uvh_rh_gam_alias210_redirect_config_2_mmr_s { | ||
101 | unsigned long rsvd_0_23 : 24; /* */ | ||
102 | unsigned long dest_base : 22; /* RW */ | ||
103 | unsigned long rsvd_46_63: 18; /* */ | ||
104 | } s; | ||
105 | }; | ||
106 | |||
107 | /* ========================================================================= */ | ||
108 | /* UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR */ | ||
109 | /* ========================================================================= */ | ||
110 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR 0x1600010UL | ||
111 | |||
112 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_SHFT 28 | ||
113 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_BASE_MASK 0x00003ffff0000000UL | ||
114 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_GR4_SHFT 46 | ||
115 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_GR4_MASK 0x0000400000000000UL | ||
116 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_N_GRU_SHFT 52 | ||
117 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_N_GRU_MASK 0x00f0000000000000UL | ||
118 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_ENABLE_SHFT 63 | ||
119 | #define UVH_RH_GAM_GRU_OVERLAY_CONFIG_MMR_ENABLE_MASK 0x8000000000000000UL | ||
120 | |||
121 | union uvh_rh_gam_gru_overlay_config_mmr_u { | ||
122 | unsigned long v; | ||
123 | struct uvh_rh_gam_gru_overlay_config_mmr_s { | ||
124 | unsigned long rsvd_0_27: 28; /* */ | ||
125 | unsigned long base : 18; /* RW */ | ||
126 | unsigned long gr4 : 1; /* RW */ | ||
127 | unsigned long rsvd_47_51: 5; /* */ | ||
128 | unsigned long n_gru : 4; /* RW */ | ||
129 | unsigned long rsvd_56_62: 7; /* */ | ||
130 | unsigned long enable : 1; /* RW */ | ||
131 | } s; | ||
132 | }; | ||
133 | |||
134 | /* ========================================================================= */ | ||
135 | /* UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR */ | ||
136 | /* ========================================================================= */ | ||
137 | #define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR 0x1600028UL | ||
138 | |||
139 | #define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_BASE_SHFT 26 | ||
140 | #define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_BASE_MASK 0x00003ffffc000000UL | ||
141 | #define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_DUAL_HUB_SHFT 46 | ||
142 | #define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_DUAL_HUB_MASK 0x0000400000000000UL | ||
143 | #define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_ENABLE_SHFT 63 | ||
144 | #define UVH_RH_GAM_MMR_OVERLAY_CONFIG_MMR_ENABLE_MASK 0x8000000000000000UL | ||
145 | |||
146 | union uvh_rh_gam_mmr_overlay_config_mmr_u { | ||
147 | unsigned long v; | ||
148 | struct uvh_rh_gam_mmr_overlay_config_mmr_s { | ||
149 | unsigned long rsvd_0_25: 26; /* */ | ||
150 | unsigned long base : 20; /* RW */ | ||
151 | unsigned long dual_hub : 1; /* RW */ | ||
152 | unsigned long rsvd_47_62: 16; /* */ | ||
153 | unsigned long enable : 1; /* RW */ | ||
154 | } s; | ||
155 | }; | ||
156 | |||
157 | /* ========================================================================= */ | ||
158 | /* UVH_RTC */ | ||
159 | /* ========================================================================= */ | ||
160 | #define UVH_RTC 0x28000UL | ||
161 | |||
162 | #define UVH_RTC_REAL_TIME_CLOCK_SHFT 0 | ||
163 | #define UVH_RTC_REAL_TIME_CLOCK_MASK 0x00ffffffffffffffUL | ||
164 | |||
165 | union uvh_rtc_u { | ||
166 | unsigned long v; | ||
167 | struct uvh_rtc_s { | ||
168 | unsigned long real_time_clock : 56; /* RW */ | ||
169 | unsigned long rsvd_56_63 : 8; /* */ | ||
170 | } s; | ||
171 | }; | ||
172 | |||
173 | /* ========================================================================= */ | ||
174 | /* UVH_SI_ADDR_MAP_CONFIG */ | ||
175 | /* ========================================================================= */ | ||
176 | #define UVH_SI_ADDR_MAP_CONFIG 0xc80000UL | ||
177 | |||
178 | #define UVH_SI_ADDR_MAP_CONFIG_M_SKT_SHFT 0 | ||
179 | #define UVH_SI_ADDR_MAP_CONFIG_M_SKT_MASK 0x000000000000003fUL | ||
180 | #define UVH_SI_ADDR_MAP_CONFIG_N_SKT_SHFT 8 | ||
181 | #define UVH_SI_ADDR_MAP_CONFIG_N_SKT_MASK 0x0000000000000f00UL | ||
182 | |||
183 | union uvh_si_addr_map_config_u { | ||
184 | unsigned long v; | ||
185 | struct uvh_si_addr_map_config_s { | ||
186 | unsigned long m_skt : 6; /* RW */ | ||
187 | unsigned long rsvd_6_7: 2; /* */ | ||
188 | unsigned long n_skt : 4; /* RW */ | ||
189 | unsigned long rsvd_12_63: 52; /* */ | ||
190 | } s; | ||
191 | }; | ||
192 | |||
193 | /* ========================================================================= */ | ||
194 | /* UVH_SI_ALIAS0_OVERLAY_CONFIG */ | ||
195 | /* ========================================================================= */ | ||
196 | #define UVH_SI_ALIAS0_OVERLAY_CONFIG 0xc80008UL | ||
197 | |||
198 | #define UVH_SI_ALIAS0_OVERLAY_CONFIG_BASE_SHFT 24 | ||
199 | #define UVH_SI_ALIAS0_OVERLAY_CONFIG_BASE_MASK 0x00000000ff000000UL | ||
200 | #define UVH_SI_ALIAS0_OVERLAY_CONFIG_M_ALIAS_SHFT 48 | ||
201 | #define UVH_SI_ALIAS0_OVERLAY_CONFIG_M_ALIAS_MASK 0x001f000000000000UL | ||
202 | #define UVH_SI_ALIAS0_OVERLAY_CONFIG_ENABLE_SHFT 63 | ||
203 | #define UVH_SI_ALIAS0_OVERLAY_CONFIG_ENABLE_MASK 0x8000000000000000UL | ||
204 | |||
205 | union uvh_si_alias0_overlay_config_u { | ||
206 | unsigned long v; | ||
207 | struct uvh_si_alias0_overlay_config_s { | ||
208 | unsigned long rsvd_0_23: 24; /* */ | ||
209 | unsigned long base : 8; /* RW */ | ||
210 | unsigned long rsvd_32_47: 16; /* */ | ||
211 | unsigned long m_alias : 5; /* RW */ | ||
212 | unsigned long rsvd_53_62: 10; /* */ | ||
213 | unsigned long enable : 1; /* RW */ | ||
214 | } s; | ||
215 | }; | ||
216 | |||
217 | /* ========================================================================= */ | ||
218 | /* UVH_SI_ALIAS1_OVERLAY_CONFIG */ | ||
219 | /* ========================================================================= */ | ||
220 | #define UVH_SI_ALIAS1_OVERLAY_CONFIG 0xc80010UL | ||
221 | |||
222 | #define UVH_SI_ALIAS1_OVERLAY_CONFIG_BASE_SHFT 24 | ||
223 | #define UVH_SI_ALIAS1_OVERLAY_CONFIG_BASE_MASK 0x00000000ff000000UL | ||
224 | #define UVH_SI_ALIAS1_OVERLAY_CONFIG_M_ALIAS_SHFT 48 | ||
225 | #define UVH_SI_ALIAS1_OVERLAY_CONFIG_M_ALIAS_MASK 0x001f000000000000UL | ||
226 | #define UVH_SI_ALIAS1_OVERLAY_CONFIG_ENABLE_SHFT 63 | ||
227 | #define UVH_SI_ALIAS1_OVERLAY_CONFIG_ENABLE_MASK 0x8000000000000000UL | ||
228 | |||
229 | union uvh_si_alias1_overlay_config_u { | ||
230 | unsigned long v; | ||
231 | struct uvh_si_alias1_overlay_config_s { | ||
232 | unsigned long rsvd_0_23: 24; /* */ | ||
233 | unsigned long base : 8; /* RW */ | ||
234 | unsigned long rsvd_32_47: 16; /* */ | ||
235 | unsigned long m_alias : 5; /* RW */ | ||
236 | unsigned long rsvd_53_62: 10; /* */ | ||
237 | unsigned long enable : 1; /* RW */ | ||
238 | } s; | ||
239 | }; | ||
240 | |||
241 | /* ========================================================================= */ | ||
242 | /* UVH_SI_ALIAS2_OVERLAY_CONFIG */ | ||
243 | /* ========================================================================= */ | ||
244 | #define UVH_SI_ALIAS2_OVERLAY_CONFIG 0xc80018UL | ||
245 | |||
246 | #define UVH_SI_ALIAS2_OVERLAY_CONFIG_BASE_SHFT 24 | ||
247 | #define UVH_SI_ALIAS2_OVERLAY_CONFIG_BASE_MASK 0x00000000ff000000UL | ||
248 | #define UVH_SI_ALIAS2_OVERLAY_CONFIG_M_ALIAS_SHFT 48 | ||
249 | #define UVH_SI_ALIAS2_OVERLAY_CONFIG_M_ALIAS_MASK 0x001f000000000000UL | ||
250 | #define UVH_SI_ALIAS2_OVERLAY_CONFIG_ENABLE_SHFT 63 | ||
251 | #define UVH_SI_ALIAS2_OVERLAY_CONFIG_ENABLE_MASK 0x8000000000000000UL | ||
252 | |||
253 | union uvh_si_alias2_overlay_config_u { | ||
254 | unsigned long v; | ||
255 | struct uvh_si_alias2_overlay_config_s { | ||
256 | unsigned long rsvd_0_23: 24; /* */ | ||
257 | unsigned long base : 8; /* RW */ | ||
258 | unsigned long rsvd_32_47: 16; /* */ | ||
259 | unsigned long m_alias : 5; /* RW */ | ||
260 | unsigned long rsvd_53_62: 10; /* */ | ||
261 | unsigned long enable : 1; /* RW */ | ||
262 | } s; | ||
263 | }; | ||
264 | |||
265 | |||
266 | #endif /* __ASM_IA64_UV_MMRS__ */ | ||
diff --git a/include/asm-m68k/bug.h b/include/asm-m68k/bug.h index 7b60776cc966..e5b528deb8a8 100644 --- a/include/asm-m68k/bug.h +++ b/include/asm-m68k/bug.h | |||
@@ -7,7 +7,7 @@ | |||
7 | #ifndef CONFIG_SUN3 | 7 | #ifndef CONFIG_SUN3 |
8 | #define BUG() do { \ | 8 | #define BUG() do { \ |
9 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | 9 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ |
10 | asm volatile("illegal"); \ | 10 | __builtin_trap(); \ |
11 | } while (0) | 11 | } while (0) |
12 | #else | 12 | #else |
13 | #define BUG() do { \ | 13 | #define BUG() do { \ |
@@ -17,7 +17,7 @@ | |||
17 | #endif | 17 | #endif |
18 | #else | 18 | #else |
19 | #define BUG() do { \ | 19 | #define BUG() do { \ |
20 | asm volatile("illegal"); \ | 20 | __builtin_trap(); \ |
21 | } while (0) | 21 | } while (0) |
22 | #endif | 22 | #endif |
23 | 23 | ||
diff --git a/include/asm-m68k/io.h b/include/asm-m68k/io.h index baf4f9b8acfc..657187f0c7c2 100644 --- a/include/asm-m68k/io.h +++ b/include/asm-m68k/io.h | |||
@@ -91,20 +91,20 @@ extern unsigned long gg2_isa_base; | |||
91 | #undef MULTI_ISA | 91 | #undef MULTI_ISA |
92 | #endif | 92 | #endif |
93 | 93 | ||
94 | #define Q40_ISA (1) | 94 | #define ISA_TYPE_Q40 (1) |
95 | #define GG2_ISA (2) | 95 | #define ISA_TYPE_GG2 (2) |
96 | #define AG_ISA (3) | 96 | #define ISA_TYPE_AG (3) |
97 | 97 | ||
98 | #if defined(CONFIG_Q40) && !defined(MULTI_ISA) | 98 | #if defined(CONFIG_Q40) && !defined(MULTI_ISA) |
99 | #define ISA_TYPE Q40_ISA | 99 | #define ISA_TYPE ISA_TYPE_Q40 |
100 | #define ISA_SEX 0 | 100 | #define ISA_SEX 0 |
101 | #endif | 101 | #endif |
102 | #if defined(CONFIG_AMIGA_PCMCIA) && !defined(MULTI_ISA) | 102 | #if defined(CONFIG_AMIGA_PCMCIA) && !defined(MULTI_ISA) |
103 | #define ISA_TYPE AG_ISA | 103 | #define ISA_TYPE ISA_TYPE_AG |
104 | #define ISA_SEX 1 | 104 | #define ISA_SEX 1 |
105 | #endif | 105 | #endif |
106 | #if defined(CONFIG_GG2) && !defined(MULTI_ISA) | 106 | #if defined(CONFIG_GG2) && !defined(MULTI_ISA) |
107 | #define ISA_TYPE GG2_ISA | 107 | #define ISA_TYPE ISA_TYPE_GG2 |
108 | #define ISA_SEX 0 | 108 | #define ISA_SEX 0 |
109 | #endif | 109 | #endif |
110 | 110 | ||
@@ -126,13 +126,13 @@ static inline u8 __iomem *isa_itb(unsigned long addr) | |||
126 | switch(ISA_TYPE) | 126 | switch(ISA_TYPE) |
127 | { | 127 | { |
128 | #ifdef CONFIG_Q40 | 128 | #ifdef CONFIG_Q40 |
129 | case Q40_ISA: return (u8 __iomem *)Q40_ISA_IO_B(addr); | 129 | case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_IO_B(addr); |
130 | #endif | 130 | #endif |
131 | #ifdef CONFIG_GG2 | 131 | #ifdef CONFIG_GG2 |
132 | case GG2_ISA: return (u8 __iomem *)GG2_ISA_IO_B(addr); | 132 | case ISA_TYPE_GG2: return (u8 __iomem *)GG2_ISA_IO_B(addr); |
133 | #endif | 133 | #endif |
134 | #ifdef CONFIG_AMIGA_PCMCIA | 134 | #ifdef CONFIG_AMIGA_PCMCIA |
135 | case AG_ISA: return (u8 __iomem *)AG_ISA_IO_B(addr); | 135 | case ISA_TYPE_AG: return (u8 __iomem *)AG_ISA_IO_B(addr); |
136 | #endif | 136 | #endif |
137 | default: return NULL; /* avoid warnings, just in case */ | 137 | default: return NULL; /* avoid warnings, just in case */ |
138 | } | 138 | } |
@@ -142,13 +142,13 @@ static inline u16 __iomem *isa_itw(unsigned long addr) | |||
142 | switch(ISA_TYPE) | 142 | switch(ISA_TYPE) |
143 | { | 143 | { |
144 | #ifdef CONFIG_Q40 | 144 | #ifdef CONFIG_Q40 |
145 | case Q40_ISA: return (u16 __iomem *)Q40_ISA_IO_W(addr); | 145 | case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_IO_W(addr); |
146 | #endif | 146 | #endif |
147 | #ifdef CONFIG_GG2 | 147 | #ifdef CONFIG_GG2 |
148 | case GG2_ISA: return (u16 __iomem *)GG2_ISA_IO_W(addr); | 148 | case ISA_TYPE_GG2: return (u16 __iomem *)GG2_ISA_IO_W(addr); |
149 | #endif | 149 | #endif |
150 | #ifdef CONFIG_AMIGA_PCMCIA | 150 | #ifdef CONFIG_AMIGA_PCMCIA |
151 | case AG_ISA: return (u16 __iomem *)AG_ISA_IO_W(addr); | 151 | case ISA_TYPE_AG: return (u16 __iomem *)AG_ISA_IO_W(addr); |
152 | #endif | 152 | #endif |
153 | default: return NULL; /* avoid warnings, just in case */ | 153 | default: return NULL; /* avoid warnings, just in case */ |
154 | } | 154 | } |
@@ -158,7 +158,7 @@ static inline u32 __iomem *isa_itl(unsigned long addr) | |||
158 | switch(ISA_TYPE) | 158 | switch(ISA_TYPE) |
159 | { | 159 | { |
160 | #ifdef CONFIG_AMIGA_PCMCIA | 160 | #ifdef CONFIG_AMIGA_PCMCIA |
161 | case AG_ISA: return (u32 __iomem *)AG_ISA_IO_W(addr); | 161 | case ISA_TYPE_AG: return (u32 __iomem *)AG_ISA_IO_W(addr); |
162 | #endif | 162 | #endif |
163 | default: return 0; /* avoid warnings, just in case */ | 163 | default: return 0; /* avoid warnings, just in case */ |
164 | } | 164 | } |
@@ -168,13 +168,13 @@ static inline u8 __iomem *isa_mtb(unsigned long addr) | |||
168 | switch(ISA_TYPE) | 168 | switch(ISA_TYPE) |
169 | { | 169 | { |
170 | #ifdef CONFIG_Q40 | 170 | #ifdef CONFIG_Q40 |
171 | case Q40_ISA: return (u8 __iomem *)Q40_ISA_MEM_B(addr); | 171 | case ISA_TYPE_Q40: return (u8 __iomem *)Q40_ISA_MEM_B(addr); |
172 | #endif | 172 | #endif |
173 | #ifdef CONFIG_GG2 | 173 | #ifdef CONFIG_GG2 |
174 | case GG2_ISA: return (u8 __iomem *)GG2_ISA_MEM_B(addr); | 174 | case ISA_TYPE_GG2: return (u8 __iomem *)GG2_ISA_MEM_B(addr); |
175 | #endif | 175 | #endif |
176 | #ifdef CONFIG_AMIGA_PCMCIA | 176 | #ifdef CONFIG_AMIGA_PCMCIA |
177 | case AG_ISA: return (u8 __iomem *)addr; | 177 | case ISA_TYPE_AG: return (u8 __iomem *)addr; |
178 | #endif | 178 | #endif |
179 | default: return NULL; /* avoid warnings, just in case */ | 179 | default: return NULL; /* avoid warnings, just in case */ |
180 | } | 180 | } |
@@ -184,13 +184,13 @@ static inline u16 __iomem *isa_mtw(unsigned long addr) | |||
184 | switch(ISA_TYPE) | 184 | switch(ISA_TYPE) |
185 | { | 185 | { |
186 | #ifdef CONFIG_Q40 | 186 | #ifdef CONFIG_Q40 |
187 | case Q40_ISA: return (u16 __iomem *)Q40_ISA_MEM_W(addr); | 187 | case ISA_TYPE_Q40: return (u16 __iomem *)Q40_ISA_MEM_W(addr); |
188 | #endif | 188 | #endif |
189 | #ifdef CONFIG_GG2 | 189 | #ifdef CONFIG_GG2 |
190 | case GG2_ISA: return (u16 __iomem *)GG2_ISA_MEM_W(addr); | 190 | case ISA_TYPE_GG2: return (u16 __iomem *)GG2_ISA_MEM_W(addr); |
191 | #endif | 191 | #endif |
192 | #ifdef CONFIG_AMIGA_PCMCIA | 192 | #ifdef CONFIG_AMIGA_PCMCIA |
193 | case AG_ISA: return (u16 __iomem *)addr; | 193 | case ISA_TYPE_AG: return (u16 __iomem *)addr; |
194 | #endif | 194 | #endif |
195 | default: return NULL; /* avoid warnings, just in case */ | 195 | default: return NULL; /* avoid warnings, just in case */ |
196 | } | 196 | } |
@@ -218,13 +218,13 @@ static inline void isa_delay(void) | |||
218 | switch(ISA_TYPE) | 218 | switch(ISA_TYPE) |
219 | { | 219 | { |
220 | #ifdef CONFIG_Q40 | 220 | #ifdef CONFIG_Q40 |
221 | case Q40_ISA: isa_outb(0,0x80); break; | 221 | case ISA_TYPE_Q40: isa_outb(0,0x80); break; |
222 | #endif | 222 | #endif |
223 | #ifdef CONFIG_GG2 | 223 | #ifdef CONFIG_GG2 |
224 | case GG2_ISA: break; | 224 | case ISA_TYPE_GG2: break; |
225 | #endif | 225 | #endif |
226 | #ifdef CONFIG_AMIGA_PCMCIA | 226 | #ifdef CONFIG_AMIGA_PCMCIA |
227 | case AG_ISA: break; | 227 | case ISA_TYPE_AG: break; |
228 | #endif | 228 | #endif |
229 | default: break; /* avoid warnings */ | 229 | default: break; /* avoid warnings */ |
230 | } | 230 | } |
diff --git a/include/asm-m68k/setup.h b/include/asm-m68k/setup.h index 2a8853cd6554..4dfb3952b375 100644 --- a/include/asm-m68k/setup.h +++ b/include/asm-m68k/setup.h | |||
@@ -248,7 +248,7 @@ extern unsigned long m68k_machtype; | |||
248 | #ifndef __ASSEMBLY__ | 248 | #ifndef __ASSEMBLY__ |
249 | extern unsigned long m68k_cputype; | 249 | extern unsigned long m68k_cputype; |
250 | extern unsigned long m68k_fputype; | 250 | extern unsigned long m68k_fputype; |
251 | extern unsigned long m68k_mmutype; /* Not really used yet */ | 251 | extern unsigned long m68k_mmutype; |
252 | #ifdef CONFIG_VME | 252 | #ifdef CONFIG_VME |
253 | extern unsigned long vme_brdtype; | 253 | extern unsigned long vme_brdtype; |
254 | #endif | 254 | #endif |
diff --git a/include/asm-m68k/uaccess.h b/include/asm-m68k/uaccess.h index 5c1264cf0c65..7107f3fbdbb6 100644 --- a/include/asm-m68k/uaccess.h +++ b/include/asm-m68k/uaccess.h | |||
@@ -14,7 +14,11 @@ | |||
14 | #define VERIFY_WRITE 1 | 14 | #define VERIFY_WRITE 1 |
15 | 15 | ||
16 | /* We let the MMU do all checking */ | 16 | /* We let the MMU do all checking */ |
17 | #define access_ok(type,addr,size) 1 | 17 | static inline int access_ok(int type, const void __user *addr, |
18 | unsigned long size) | ||
19 | { | ||
20 | return 1; | ||
21 | } | ||
18 | 22 | ||
19 | /* | 23 | /* |
20 | * The exception table consists of pairs of addresses: the first is the | 24 | * The exception table consists of pairs of addresses: the first is the |
diff --git a/include/asm-mips/gic.h b/include/asm-mips/gic.h index 01b2f92dc33d..3a492f225f00 100644 --- a/include/asm-mips/gic.h +++ b/include/asm-mips/gic.h | |||
@@ -330,7 +330,7 @@ | |||
330 | 330 | ||
331 | #define GIC_SH_RMASK_OFS 0x0300 | 331 | #define GIC_SH_RMASK_OFS 0x0300 |
332 | #define GIC_CLR_INTR_MASK(intr, val) \ | 332 | #define GIC_CLR_INTR_MASK(intr, val) \ |
333 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), ((val) << ((intr) % 32)) | 333 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), ((val) << ((intr) % 32))) |
334 | 334 | ||
335 | /* Register Map for Local Section */ | 335 | /* Register Map for Local Section */ |
336 | #define GIC_VPE_CTL_OFS 0x0000 | 336 | #define GIC_VPE_CTL_OFS 0x0000 |
diff --git a/include/asm-mips/mach-au1x00/au1000.h b/include/asm-mips/mach-au1x00/au1000.h index 363a14ee0ae5..1b5064dac007 100644 --- a/include/asm-mips/mach-au1x00/au1000.h +++ b/include/asm-mips/mach-au1x00/au1000.h | |||
@@ -1036,7 +1036,7 @@ enum soc_au1200_ints { | |||
1036 | #define USBD_INTSTAT 0xB020001C | 1036 | #define USBD_INTSTAT 0xB020001C |
1037 | # define USBDEV_INT_SOF (1 << 12) | 1037 | # define USBDEV_INT_SOF (1 << 12) |
1038 | # define USBDEV_INT_HF_BIT 6 | 1038 | # define USBDEV_INT_HF_BIT 6 |
1039 | # define USBDEV_INT_HF_MASK 0x3f << USBDEV_INT_HF_BIT) | 1039 | # define USBDEV_INT_HF_MASK (0x3f << USBDEV_INT_HF_BIT) |
1040 | # define USBDEV_INT_CMPLT_BIT 0 | 1040 | # define USBDEV_INT_CMPLT_BIT 0 |
1041 | # define USBDEV_INT_CMPLT_MASK (0x3f << USBDEV_INT_CMPLT_BIT) | 1041 | # define USBDEV_INT_CMPLT_MASK (0x3f << USBDEV_INT_CMPLT_BIT) |
1042 | #define USBD_CONFIG 0xB0200020 | 1042 | #define USBD_CONFIG 0xB0200020 |
diff --git a/include/asm-mn10300/ipcbuf.h b/include/asm-mn10300/ipcbuf.h index efbbef8d1c69..f6f63d448272 100644 --- a/include/asm-mn10300/ipcbuf.h +++ b/include/asm-mn10300/ipcbuf.h | |||
@@ -1,4 +1,4 @@ | |||
1 | #ifndef _ASM_IPCBUF_H_ | 1 | #ifndef _ASM_IPCBUF_H |
2 | #define _ASM_IPCBUF_H | 2 | #define _ASM_IPCBUF_H |
3 | 3 | ||
4 | /* | 4 | /* |
diff --git a/include/asm-parisc/assembly.h b/include/asm-parisc/assembly.h index 5587f0023881..ffb208840ecc 100644 --- a/include/asm-parisc/assembly.h +++ b/include/asm-parisc/assembly.h | |||
@@ -31,9 +31,8 @@ | |||
31 | #define STREGM std,ma | 31 | #define STREGM std,ma |
32 | #define SHRREG shrd | 32 | #define SHRREG shrd |
33 | #define SHLREG shld | 33 | #define SHLREG shld |
34 | #define ADDIB addib,* | ||
35 | #define CMPB cmpb,* | ||
36 | #define ANDCM andcm,* | 34 | #define ANDCM andcm,* |
35 | #define COND(x) * ## x | ||
37 | #define RP_OFFSET 16 | 36 | #define RP_OFFSET 16 |
38 | #define FRAME_SIZE 128 | 37 | #define FRAME_SIZE 128 |
39 | #define CALLEE_REG_FRAME_SIZE 144 | 38 | #define CALLEE_REG_FRAME_SIZE 144 |
@@ -46,9 +45,8 @@ | |||
46 | #define STREGM stwm | 45 | #define STREGM stwm |
47 | #define SHRREG shr | 46 | #define SHRREG shr |
48 | #define SHLREG shlw | 47 | #define SHLREG shlw |
49 | #define ADDIB addib, | ||
50 | #define CMPB cmpb, | ||
51 | #define ANDCM andcm | 48 | #define ANDCM andcm |
49 | #define COND(x) x | ||
52 | #define RP_OFFSET 20 | 50 | #define RP_OFFSET 20 |
53 | #define FRAME_SIZE 64 | 51 | #define FRAME_SIZE 64 |
54 | #define CALLEE_REG_FRAME_SIZE 128 | 52 | #define CALLEE_REG_FRAME_SIZE 128 |
diff --git a/include/asm-parisc/ioctl.h b/include/asm-parisc/ioctl.h index 68338d2bda4e..ec8efa02beda 100644 --- a/include/asm-parisc/ioctl.h +++ b/include/asm-parisc/ioctl.h | |||
@@ -32,21 +32,6 @@ | |||
32 | * NOTE: This limits the max parameter size to 16kB -1 ! | 32 | * NOTE: This limits the max parameter size to 16kB -1 ! |
33 | */ | 33 | */ |
34 | 34 | ||
35 | #define _IOC_NRBITS 8 | ||
36 | #define _IOC_TYPEBITS 8 | ||
37 | #define _IOC_SIZEBITS 14 | ||
38 | #define _IOC_DIRBITS 2 | ||
39 | |||
40 | #define _IOC_NRMASK ((1 << _IOC_NRBITS)-1) | ||
41 | #define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1) | ||
42 | #define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1) | ||
43 | #define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1) | ||
44 | |||
45 | #define _IOC_NRSHIFT 0 | ||
46 | #define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) | ||
47 | #define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) | ||
48 | #define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) | ||
49 | |||
50 | /* | 35 | /* |
51 | * Direction bits. | 36 | * Direction bits. |
52 | */ | 37 | */ |
@@ -54,40 +39,6 @@ | |||
54 | #define _IOC_WRITE 2U | 39 | #define _IOC_WRITE 2U |
55 | #define _IOC_READ 1U | 40 | #define _IOC_READ 1U |
56 | 41 | ||
57 | #define _IOC(dir,type,nr,size) \ | 42 | #include <asm-generic/ioctl.h> |
58 | (((dir) << _IOC_DIRSHIFT) | \ | ||
59 | ((type) << _IOC_TYPESHIFT) | \ | ||
60 | ((nr) << _IOC_NRSHIFT) | \ | ||
61 | ((size) << _IOC_SIZESHIFT)) | ||
62 | |||
63 | /* provoke compile error for invalid uses of size argument */ | ||
64 | extern unsigned int __invalid_size_argument_for_IOC; | ||
65 | #define _IOC_TYPECHECK(t) \ | ||
66 | ((sizeof(t) == sizeof(t[1]) && \ | ||
67 | sizeof(t) < (1 << _IOC_SIZEBITS)) ? \ | ||
68 | sizeof(t) : __invalid_size_argument_for_IOC) | ||
69 | |||
70 | /* used to create numbers */ | ||
71 | #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) | ||
72 | #define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) | ||
73 | #define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) | ||
74 | #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) | ||
75 | #define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) | ||
76 | #define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) | ||
77 | #define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) | ||
78 | |||
79 | /* used to decode ioctl numbers.. */ | ||
80 | #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) | ||
81 | #define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK) | ||
82 | #define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK) | ||
83 | #define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK) | ||
84 | |||
85 | /* ...and for the drivers/sound files... */ | ||
86 | |||
87 | #define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT) | ||
88 | #define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT) | ||
89 | #define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT) | ||
90 | #define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT) | ||
91 | #define IOCSIZE_SHIFT (_IOC_SIZESHIFT) | ||
92 | 43 | ||
93 | #endif /* _ASM_PARISC_IOCTL_H */ | 44 | #endif /* _ASM_PARISC_IOCTL_H */ |
diff --git a/include/asm-parisc/ioctls.h b/include/asm-parisc/ioctls.h index ee84e4172c36..6747fad07a3e 100644 --- a/include/asm-parisc/ioctls.h +++ b/include/asm-parisc/ioctls.h | |||
@@ -46,6 +46,10 @@ | |||
46 | #define TIOCSBRK 0x5427 /* BSD compatibility */ | 46 | #define TIOCSBRK 0x5427 /* BSD compatibility */ |
47 | #define TIOCCBRK 0x5428 /* BSD compatibility */ | 47 | #define TIOCCBRK 0x5428 /* BSD compatibility */ |
48 | #define TIOCGSID _IOR('T', 20, int) /* Return the session ID of FD */ | 48 | #define TIOCGSID _IOR('T', 20, int) /* Return the session ID of FD */ |
49 | #define TCGETS2 _IOR('T',0x2A, struct termios2) | ||
50 | #define TCSETS2 _IOW('T',0x2B, struct termios2) | ||
51 | #define TCSETSW2 _IOW('T',0x2C, struct termios2) | ||
52 | #define TCSETSF2 _IOW('T',0x2D, struct termios2) | ||
49 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 53 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
50 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 54 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
51 | 55 | ||
diff --git a/include/asm-parisc/termbits.h b/include/asm-parisc/termbits.h index e847fe979684..d8bbc73b16b7 100644 --- a/include/asm-parisc/termbits.h +++ b/include/asm-parisc/termbits.h | |||
@@ -141,6 +141,7 @@ struct ktermios { | |||
141 | #define HUPCL 0002000 | 141 | #define HUPCL 0002000 |
142 | #define CLOCAL 0004000 | 142 | #define CLOCAL 0004000 |
143 | #define CBAUDEX 0010000 | 143 | #define CBAUDEX 0010000 |
144 | #define BOTHER 0010000 | ||
144 | #define B57600 0010001 | 145 | #define B57600 0010001 |
145 | #define B115200 0010002 | 146 | #define B115200 0010002 |
146 | #define B230400 0010003 | 147 | #define B230400 0010003 |
@@ -156,10 +157,12 @@ struct ktermios { | |||
156 | #define B3000000 0010015 | 157 | #define B3000000 0010015 |
157 | #define B3500000 0010016 | 158 | #define B3500000 0010016 |
158 | #define B4000000 0010017 | 159 | #define B4000000 0010017 |
159 | #define CIBAUD 002003600000 /* input baud rate (not used) */ | 160 | #define CIBAUD 002003600000 /* input baud rate */ |
160 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ | 161 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ |
161 | #define CRTSCTS 020000000000 /* flow control */ | 162 | #define CRTSCTS 020000000000 /* flow control */ |
162 | 163 | ||
164 | #define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */ | ||
165 | |||
163 | 166 | ||
164 | /* c_lflag bits */ | 167 | /* c_lflag bits */ |
165 | #define ISIG 0000001 | 168 | #define ISIG 0000001 |
diff --git a/include/asm-parisc/termios.h b/include/asm-parisc/termios.h index 5345b3420475..a2a57a4548af 100644 --- a/include/asm-parisc/termios.h +++ b/include/asm-parisc/termios.h | |||
@@ -80,8 +80,10 @@ struct termio { | |||
80 | copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ | 80 | copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ |
81 | }) | 81 | }) |
82 | 82 | ||
83 | #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) | 83 | #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2)) |
84 | #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) | 84 | #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2)) |
85 | #define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios)) | ||
86 | #define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios)) | ||
85 | 87 | ||
86 | #endif /* __KERNEL__ */ | 88 | #endif /* __KERNEL__ */ |
87 | 89 | ||
diff --git a/include/asm-powerpc/io.h b/include/asm-powerpc/io.h index e0062d73db1c..89189488e286 100644 --- a/include/asm-powerpc/io.h +++ b/include/asm-powerpc/io.h | |||
@@ -100,7 +100,7 @@ static inline type name(const volatile type __iomem *addr) \ | |||
100 | { \ | 100 | { \ |
101 | type ret; \ | 101 | type ret; \ |
102 | __asm__ __volatile__("sync;" insn ";twi 0,%0,0;isync" \ | 102 | __asm__ __volatile__("sync;" insn ";twi 0,%0,0;isync" \ |
103 | : "=r" (ret) : "r" (addr), "m" (*addr)); \ | 103 | : "=r" (ret) : "r" (addr), "m" (*addr) : "memory"); \ |
104 | return ret; \ | 104 | return ret; \ |
105 | } | 105 | } |
106 | 106 | ||
@@ -108,8 +108,8 @@ static inline type name(const volatile type __iomem *addr) \ | |||
108 | static inline void name(volatile type __iomem *addr, type val) \ | 108 | static inline void name(volatile type __iomem *addr, type val) \ |
109 | { \ | 109 | { \ |
110 | __asm__ __volatile__("sync;" insn \ | 110 | __asm__ __volatile__("sync;" insn \ |
111 | : "=m" (*addr) : "r" (val), "r" (addr)); \ | 111 | : "=m" (*addr) : "r" (val), "r" (addr) : "memory"); \ |
112 | IO_SET_SYNC_FLAG(); \ | 112 | IO_SET_SYNC_FLAG(); \ |
113 | } | 113 | } |
114 | 114 | ||
115 | 115 | ||
@@ -333,7 +333,8 @@ static inline unsigned int name(unsigned int port) \ | |||
333 | " .long 3b,5b\n" \ | 333 | " .long 3b,5b\n" \ |
334 | ".previous" \ | 334 | ".previous" \ |
335 | : "=&r" (x) \ | 335 | : "=&r" (x) \ |
336 | : "r" (port + _IO_BASE)); \ | 336 | : "r" (port + _IO_BASE) \ |
337 | : "memory"); \ | ||
337 | return x; \ | 338 | return x; \ |
338 | } | 339 | } |
339 | 340 | ||
@@ -350,7 +351,8 @@ static inline void name(unsigned int val, unsigned int port) \ | |||
350 | " .long 0b,2b\n" \ | 351 | " .long 0b,2b\n" \ |
351 | " .long 1b,2b\n" \ | 352 | " .long 1b,2b\n" \ |
352 | ".previous" \ | 353 | ".previous" \ |
353 | : : "r" (val), "r" (port + _IO_BASE)); \ | 354 | : : "r" (val), "r" (port + _IO_BASE) \ |
355 | : "memory"); \ | ||
354 | } | 356 | } |
355 | 357 | ||
356 | __do_in_asm(_rec_inb, "lbzx") | 358 | __do_in_asm(_rec_inb, "lbzx") |
diff --git a/include/asm-powerpc/mmu-hash64.h b/include/asm-powerpc/mmu-hash64.h index 0dff76776044..39c5c5f62bf5 100644 --- a/include/asm-powerpc/mmu-hash64.h +++ b/include/asm-powerpc/mmu-hash64.h | |||
@@ -177,6 +177,7 @@ extern struct mmu_psize_def mmu_psize_defs[MMU_PAGE_COUNT]; | |||
177 | extern int mmu_linear_psize; | 177 | extern int mmu_linear_psize; |
178 | extern int mmu_virtual_psize; | 178 | extern int mmu_virtual_psize; |
179 | extern int mmu_vmalloc_psize; | 179 | extern int mmu_vmalloc_psize; |
180 | extern int mmu_vmemmap_psize; | ||
180 | extern int mmu_io_psize; | 181 | extern int mmu_io_psize; |
181 | extern int mmu_kernel_ssize; | 182 | extern int mmu_kernel_ssize; |
182 | extern int mmu_highuser_ssize; | 183 | extern int mmu_highuser_ssize; |
diff --git a/include/asm-powerpc/mpic.h b/include/asm-powerpc/mpic.h index 943c5a3fac8a..a4d0f876b427 100644 --- a/include/asm-powerpc/mpic.h +++ b/include/asm-powerpc/mpic.h | |||
@@ -428,12 +428,11 @@ extern void mpic_init(struct mpic *mpic); | |||
428 | */ | 428 | */ |
429 | 429 | ||
430 | 430 | ||
431 | /* Change/Read the priority of an interrupt. Default is 8 for irqs and | 431 | /* Change the priority of an interrupt. Default is 8 for irqs and |
432 | * 10 for IPIs. You can call this on both IPIs and IRQ numbers, but the | 432 | * 10 for IPIs. You can call this on both IPIs and IRQ numbers, but the |
433 | * IPI number is then the offset'ed (linux irq number mapped to the IPI) | 433 | * IPI number is then the offset'ed (linux irq number mapped to the IPI) |
434 | */ | 434 | */ |
435 | extern void mpic_irq_set_priority(unsigned int irq, unsigned int pri); | 435 | extern void mpic_irq_set_priority(unsigned int irq, unsigned int pri); |
436 | extern unsigned int mpic_irq_get_priority(unsigned int irq); | ||
437 | 436 | ||
438 | /* Setup a non-boot CPU */ | 437 | /* Setup a non-boot CPU */ |
439 | extern void mpic_setup_this_cpu(void); | 438 | extern void mpic_setup_this_cpu(void); |
diff --git a/include/asm-powerpc/pgtable-ppc64.h b/include/asm-powerpc/pgtable-ppc64.h index 27f18695f7d6..cc6a43ba41d0 100644 --- a/include/asm-powerpc/pgtable-ppc64.h +++ b/include/asm-powerpc/pgtable-ppc64.h | |||
@@ -65,15 +65,15 @@ | |||
65 | 65 | ||
66 | #define VMALLOC_REGION_ID (REGION_ID(VMALLOC_START)) | 66 | #define VMALLOC_REGION_ID (REGION_ID(VMALLOC_START)) |
67 | #define KERNEL_REGION_ID (REGION_ID(PAGE_OFFSET)) | 67 | #define KERNEL_REGION_ID (REGION_ID(PAGE_OFFSET)) |
68 | #define VMEMMAP_REGION_ID (0xfUL) | ||
68 | #define USER_REGION_ID (0UL) | 69 | #define USER_REGION_ID (0UL) |
69 | 70 | ||
70 | /* | 71 | /* |
71 | * Defines the address of the vmemap area, in the top 16th of the | 72 | * Defines the address of the vmemap area, in its own region |
72 | * kernel region. | ||
73 | */ | 73 | */ |
74 | #define VMEMMAP_BASE (ASM_CONST(CONFIG_KERNEL_START) + \ | 74 | #define VMEMMAP_BASE (VMEMMAP_REGION_ID << REGION_SHIFT) |
75 | (0xfUL << (REGION_SHIFT - 4))) | 75 | #define vmemmap ((struct page *)VMEMMAP_BASE) |
76 | #define vmemmap ((struct page *)VMEMMAP_BASE) | 76 | |
77 | 77 | ||
78 | /* | 78 | /* |
79 | * Common bits in a linux-style PTE. These match the bits in the | 79 | * Common bits in a linux-style PTE. These match the bits in the |
diff --git a/include/asm-powerpc/uaccess.h b/include/asm-powerpc/uaccess.h index 8e798e3758bc..1a0736f8803f 100644 --- a/include/asm-powerpc/uaccess.h +++ b/include/asm-powerpc/uaccess.h | |||
@@ -380,7 +380,7 @@ static inline unsigned long __copy_from_user_inatomic(void *to, | |||
380 | const void __user *from, unsigned long n) | 380 | const void __user *from, unsigned long n) |
381 | { | 381 | { |
382 | if (__builtin_constant_p(n) && (n <= 8)) { | 382 | if (__builtin_constant_p(n) && (n <= 8)) { |
383 | unsigned long ret; | 383 | unsigned long ret = 1; |
384 | 384 | ||
385 | switch (n) { | 385 | switch (n) { |
386 | case 1: | 386 | case 1: |
@@ -406,7 +406,7 @@ static inline unsigned long __copy_to_user_inatomic(void __user *to, | |||
406 | const void *from, unsigned long n) | 406 | const void *from, unsigned long n) |
407 | { | 407 | { |
408 | if (__builtin_constant_p(n) && (n <= 8)) { | 408 | if (__builtin_constant_p(n) && (n <= 8)) { |
409 | unsigned long ret; | 409 | unsigned long ret = 1; |
410 | 410 | ||
411 | switch (n) { | 411 | switch (n) { |
412 | case 1: | 412 | case 1: |
diff --git a/include/asm-s390/debug.h b/include/asm-s390/debug.h index 335baf4fc64f..9450ce6e32de 100644 --- a/include/asm-s390/debug.h +++ b/include/asm-s390/debug.h | |||
@@ -120,10 +120,10 @@ debug_entry_t* debug_exception_common(debug_info_t* id, int level, | |||
120 | 120 | ||
121 | /* Debug Feature API: */ | 121 | /* Debug Feature API: */ |
122 | 122 | ||
123 | debug_info_t* debug_register(char* name, int pages, int nr_areas, | 123 | debug_info_t *debug_register(const char *name, int pages, int nr_areas, |
124 | int buf_size); | 124 | int buf_size); |
125 | 125 | ||
126 | debug_info_t *debug_register_mode(char *name, int pages, int nr_areas, | 126 | debug_info_t *debug_register_mode(const char *name, int pages, int nr_areas, |
127 | int buf_size, mode_t mode, uid_t uid, | 127 | int buf_size, mode_t mode, uid_t uid, |
128 | gid_t gid); | 128 | gid_t gid); |
129 | 129 | ||
diff --git a/include/asm-s390/types.h b/include/asm-s390/types.h index 0e959e20e9a3..41c547656130 100644 --- a/include/asm-s390/types.h +++ b/include/asm-s390/types.h | |||
@@ -40,7 +40,13 @@ typedef __signed__ long saddr_t; | |||
40 | 40 | ||
41 | #ifndef __ASSEMBLY__ | 41 | #ifndef __ASSEMBLY__ |
42 | 42 | ||
43 | typedef u64 dma64_addr_t; | ||
44 | #ifdef __s390x__ | ||
45 | /* DMA addresses come in 32-bit and 64-bit flavours. */ | ||
46 | typedef u64 dma_addr_t; | ||
47 | #else | ||
43 | typedef u32 dma_addr_t; | 48 | typedef u32 dma_addr_t; |
49 | #endif | ||
44 | 50 | ||
45 | #ifndef __s390x__ | 51 | #ifndef __s390x__ |
46 | typedef union { | 52 | typedef union { |
diff --git a/include/asm-sh/kgdb.h b/include/asm-sh/kgdb.h index 4bc8cb187d11..24e42078f36f 100644 --- a/include/asm-sh/kgdb.h +++ b/include/asm-sh/kgdb.h | |||
@@ -66,18 +66,4 @@ extern int setjmp(jmp_buf __jmpb); | |||
66 | /* Forced breakpoint */ | 66 | /* Forced breakpoint */ |
67 | #define breakpoint() __asm__ __volatile__("trapa #0x3c") | 67 | #define breakpoint() __asm__ __volatile__("trapa #0x3c") |
68 | 68 | ||
69 | /* Taken from sh-stub.c of GDB 4.18 */ | ||
70 | static const char hexchars[] = "0123456789abcdef"; | ||
71 | |||
72 | /* Get high hex bits */ | ||
73 | static inline char highhex(const int x) | ||
74 | { | ||
75 | return hexchars[(x >> 4) & 0xf]; | ||
76 | } | ||
77 | |||
78 | /* Get low hex bits */ | ||
79 | static inline char lowhex(const int x) | ||
80 | { | ||
81 | return hexchars[x & 0xf]; | ||
82 | } | ||
83 | #endif | 69 | #endif |
diff --git a/include/asm-sparc/asi.h b/include/asm-sparc/asi.h index 58c3754da926..158f9b00d43f 100644 --- a/include/asm-sparc/asi.h +++ b/include/asm-sparc/asi.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: asi.h,v 1.18 1998/03/09 14:04:46 jj Exp $ */ | ||
2 | #ifndef _SPARC_ASI_H | 1 | #ifndef _SPARC_ASI_H |
3 | #define _SPARC_ASI_H | 2 | #define _SPARC_ASI_H |
4 | 3 | ||
diff --git a/include/asm-sparc/auxio.h b/include/asm-sparc/auxio.h index ee83aefb20dc..e552b8d68450 100644 --- a/include/asm-sparc/auxio.h +++ b/include/asm-sparc/auxio.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: auxio.h,v 1.18 1997/11/07 15:01:45 jj Exp $ | 1 | /* |
2 | * auxio.h: Definitions and code for the Auxiliary I/O register. | 2 | * auxio.h: Definitions and code for the Auxiliary I/O register. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/bitops.h b/include/asm-sparc/bitops.h index cb3cefab6e09..68b98a7e6454 100644 --- a/include/asm-sparc/bitops.h +++ b/include/asm-sparc/bitops.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: bitops.h,v 1.67 2001/11/19 18:36:34 davem Exp $ | 1 | /* |
2 | * bitops.h: Bit string operations on the Sparc. | 2 | * bitops.h: Bit string operations on the Sparc. |
3 | * | 3 | * |
4 | * Copyright 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/btfixup.h b/include/asm-sparc/btfixup.h index c2868d0f60b6..08277e6fb4cd 100644 --- a/include/asm-sparc/btfixup.h +++ b/include/asm-sparc/btfixup.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: btfixup.h,v 1.4 1998/03/09 14:04:43 jj Exp $ | 1 | /* |
2 | * asm-sparc/btfixup.h: Macros for boot time linking. | 2 | * asm-sparc/btfixup.h: Macros for boot time linking. |
3 | * | 3 | * |
4 | * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 4 | * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
diff --git a/include/asm-sparc/checksum.h b/include/asm-sparc/checksum.h index 34518ea7bf1b..d044ddb5a3cf 100644 --- a/include/asm-sparc/checksum.h +++ b/include/asm-sparc/checksum.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: checksum.h,v 1.33 2002/02/01 22:01:05 davem Exp $ */ | ||
2 | #ifndef __SPARC_CHECKSUM_H | 1 | #ifndef __SPARC_CHECKSUM_H |
3 | #define __SPARC_CHECKSUM_H | 2 | #define __SPARC_CHECKSUM_H |
4 | 3 | ||
diff --git a/include/asm-sparc/clock.h b/include/asm-sparc/clock.h index e708e6b50d2b..2cf99dadec56 100644 --- a/include/asm-sparc/clock.h +++ b/include/asm-sparc/clock.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: clock.h,v 1.3 1995/11/25 02:31:25 davem Exp $ | 1 | /* |
2 | * clock.h: Definitions for clock operations on the Sparc. | 2 | * clock.h: Definitions for clock operations on the Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/contregs.h b/include/asm-sparc/contregs.h index 0e05afe02d44..48fa8a4ef357 100644 --- a/include/asm-sparc/contregs.h +++ b/include/asm-sparc/contregs.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: contregs.h,v 1.8 2000/12/28 22:49:11 davem Exp $ */ | ||
2 | #ifndef _SPARC_CONTREGS_H | 1 | #ifndef _SPARC_CONTREGS_H |
3 | #define _SPARC_CONTREGS_H | 2 | #define _SPARC_CONTREGS_H |
4 | 3 | ||
diff --git a/include/asm-sparc/cypress.h b/include/asm-sparc/cypress.h index 99599533efbc..95e9772ea394 100644 --- a/include/asm-sparc/cypress.h +++ b/include/asm-sparc/cypress.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: cypress.h,v 1.6 1996/08/29 09:48:09 davem Exp $ | 1 | /* |
2 | * cypress.h: Cypress module specific definitions and defines. | 2 | * cypress.h: Cypress module specific definitions and defines. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/delay.h b/include/asm-sparc/delay.h index 48aa70eef997..bc9aba2bead6 100644 --- a/include/asm-sparc/delay.h +++ b/include/asm-sparc/delay.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: delay.h,v 1.11 2001/01/01 01:46:15 davem Exp $ | 1 | /* |
2 | * delay.h: Linux delay routines on the Sparc. | 2 | * delay.h: Linux delay routines on the Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu). | 4 | * Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu). |
diff --git a/include/asm-sparc/ebus.h b/include/asm-sparc/ebus.h index 54652887c127..491f85d662df 100644 --- a/include/asm-sparc/ebus.h +++ b/include/asm-sparc/ebus.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ebus.h,v 1.2 1999/09/11 23:05:55 zaitcev Exp $ | 1 | /* |
2 | * ebus.h: PCI to Ebus pseudo driver software state. | 2 | * ebus.h: PCI to Ebus pseudo driver software state. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) |
diff --git a/include/asm-sparc/ecc.h b/include/asm-sparc/ecc.h index 8e27ceccb76d..ccb84b66fef1 100644 --- a/include/asm-sparc/ecc.h +++ b/include/asm-sparc/ecc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ecc.h,v 1.3 1996/04/25 06:12:57 davem Exp $ | 1 | /* |
2 | * ecc.h: Definitions and defines for the external cache/memory | 2 | * ecc.h: Definitions and defines for the external cache/memory |
3 | * controller on the sun4m. | 3 | * controller on the sun4m. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/eeprom.h b/include/asm-sparc/eeprom.h index a8ff7496ddf5..e17beeceb405 100644 --- a/include/asm-sparc/eeprom.h +++ b/include/asm-sparc/eeprom.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: eeprom.h,v 1.3 1995/11/25 02:31:38 davem Exp $ | 1 | /* |
2 | * eeprom.h: Definitions for the Sun eeprom. | 2 | * eeprom.h: Definitions for the Sun eeprom. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/elf.h b/include/asm-sparc/elf.h index d2516eed3a38..d043f80bc2fd 100644 --- a/include/asm-sparc/elf.h +++ b/include/asm-sparc/elf.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: elf.h,v 1.22 2000/07/12 01:27:08 davem Exp $ */ | ||
2 | #ifndef __ASMSPARC_ELF_H | 1 | #ifndef __ASMSPARC_ELF_H |
3 | #define __ASMSPARC_ELF_H | 2 | #define __ASMSPARC_ELF_H |
4 | 3 | ||
diff --git a/include/asm-sparc/fcntl.h b/include/asm-sparc/fcntl.h index 5ec546349fc8..07bd2d80257f 100644 --- a/include/asm-sparc/fcntl.h +++ b/include/asm-sparc/fcntl.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: fcntl.h,v 1.16 2001/09/20 00:35:33 davem Exp $ */ | ||
2 | #ifndef _SPARC_FCNTL_H | 1 | #ifndef _SPARC_FCNTL_H |
3 | #define _SPARC_FCNTL_H | 2 | #define _SPARC_FCNTL_H |
4 | 3 | ||
diff --git a/include/asm-sparc/head.h b/include/asm-sparc/head.h index e6532c3e09c9..7c35491a8b53 100644 --- a/include/asm-sparc/head.h +++ b/include/asm-sparc/head.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: head.h,v 1.39 2000/05/26 22:18:45 ecd Exp $ */ | ||
2 | #ifndef __SPARC_HEAD_H | 1 | #ifndef __SPARC_HEAD_H |
3 | #define __SPARC_HEAD_H | 2 | #define __SPARC_HEAD_H |
4 | 3 | ||
diff --git a/include/asm-sparc/idprom.h b/include/asm-sparc/idprom.h index 59083ed85232..41adb417a4e5 100644 --- a/include/asm-sparc/idprom.h +++ b/include/asm-sparc/idprom.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: idprom.h,v 1.6 1996/08/04 10:35:07 ecd Exp $ | 1 | /* |
2 | * idprom.h: Macros and defines for idprom routines | 2 | * idprom.h: Macros and defines for idprom routines |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/io.h b/include/asm-sparc/io.h index 243bf8e9a058..3a3e7bdb06b3 100644 --- a/include/asm-sparc/io.h +++ b/include/asm-sparc/io.h | |||
@@ -1,6 +1,3 @@ | |||
1 | /* | ||
2 | * $Id: io.h,v 1.30 2001/12/21 01:23:21 davem Exp $ | ||
3 | */ | ||
4 | #ifndef __SPARC_IO_H | 1 | #ifndef __SPARC_IO_H |
5 | #define __SPARC_IO_H | 2 | #define __SPARC_IO_H |
6 | 3 | ||
diff --git a/include/asm-sparc/ioctl.h b/include/asm-sparc/ioctl.h index e6fc4de19940..7d6bd51321b9 100644 --- a/include/asm-sparc/ioctl.h +++ b/include/asm-sparc/ioctl.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: ioctl.h,v 1.6 1999/12/01 23:58:36 davem Exp $ */ | ||
2 | #ifndef _SPARC_IOCTL_H | 1 | #ifndef _SPARC_IOCTL_H |
3 | #define _SPARC_IOCTL_H | 2 | #define _SPARC_IOCTL_H |
4 | 3 | ||
diff --git a/include/asm-sparc/kdebug.h b/include/asm-sparc/kdebug.h index 631f15ffef73..f69fe7d84b3c 100644 --- a/include/asm-sparc/kdebug.h +++ b/include/asm-sparc/kdebug.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: kdebug.h,v 1.11 2000/06/04 06:23:53 anton Exp $ | 1 | /* |
2 | * kdebug.h: Defines and definitions for debugging the Linux kernel | 2 | * kdebug.h: Defines and definitions for debugging the Linux kernel |
3 | * under various kernel debuggers. | 3 | * under various kernel debuggers. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/machines.h b/include/asm-sparc/machines.h index d831350f5428..d6c6bf836206 100644 --- a/include/asm-sparc/machines.h +++ b/include/asm-sparc/machines.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: machines.h,v 1.4 1995/11/25 02:31:58 davem Exp $ | 1 | /* |
2 | * machines.h: Defines for taking apart the machine type value in the | 2 | * machines.h: Defines for taking apart the machine type value in the |
3 | * idprom and determining the kind of machine we are on. | 3 | * idprom and determining the kind of machine we are on. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/mbus.h b/include/asm-sparc/mbus.h index ecacdf4075d7..bb5ae614b166 100644 --- a/include/asm-sparc/mbus.h +++ b/include/asm-sparc/mbus.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: mbus.h,v 1.9 1997/06/24 15:48:12 jj Exp $ | 1 | /* |
2 | * mbus.h: Various defines for MBUS modules. | 2 | * mbus.h: Various defines for MBUS modules. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/memreg.h b/include/asm-sparc/memreg.h index 5fb95c828da6..845ad2b39183 100644 --- a/include/asm-sparc/memreg.h +++ b/include/asm-sparc/memreg.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: memreg.h,v 1.8 1996/08/29 09:48:23 davem Exp $ */ | ||
2 | #ifndef _SPARC_MEMREG_H | 1 | #ifndef _SPARC_MEMREG_H |
3 | #define _SPARC_MEMREG_H | 2 | #define _SPARC_MEMREG_H |
4 | /* memreg.h: Definitions of the values found in the synchronous | 3 | /* memreg.h: Definitions of the values found in the synchronous |
diff --git a/include/asm-sparc/mman.h b/include/asm-sparc/mman.h index 3d16b40bb8ef..fdfbbf0a4736 100644 --- a/include/asm-sparc/mman.h +++ b/include/asm-sparc/mman.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: mman.h,v 1.9 2000/03/15 02:44:23 davem Exp $ */ | ||
2 | #ifndef __SPARC_MMAN_H__ | 1 | #ifndef __SPARC_MMAN_H__ |
3 | #define __SPARC_MMAN_H__ | 2 | #define __SPARC_MMAN_H__ |
4 | 3 | ||
diff --git a/include/asm-sparc/mostek.h b/include/asm-sparc/mostek.h index 958d0513a6d4..29aad11b8f00 100644 --- a/include/asm-sparc/mostek.h +++ b/include/asm-sparc/mostek.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: mostek.h,v 1.13 2001/01/11 15:07:09 davem Exp $ | 1 | /* |
2 | * mostek.h: Describes the various Mostek time of day clock registers. | 2 | * mostek.h: Describes the various Mostek time of day clock registers. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/mpmbox.h b/include/asm-sparc/mpmbox.h index 0e1bc5801d8a..f8423039b242 100644 --- a/include/asm-sparc/mpmbox.h +++ b/include/asm-sparc/mpmbox.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: mpmbox.h,v 1.4 1996/04/25 06:13:19 davem Exp $ | 1 | /* |
2 | * mpmbox.h: Interface and defines for the OpenProm mailbox | 2 | * mpmbox.h: Interface and defines for the OpenProm mailbox |
3 | * facilities for MP machines under Linux. | 3 | * facilities for MP machines under Linux. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/msi.h b/include/asm-sparc/msi.h index ff72cbd946a4..724ca5667052 100644 --- a/include/asm-sparc/msi.h +++ b/include/asm-sparc/msi.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: msi.h,v 1.3 1996/08/29 09:48:25 davem Exp $ | 1 | /* |
2 | * msi.h: Defines specific to the MBus - Sbus - Interface. | 2 | * msi.h: Defines specific to the MBus - Sbus - Interface. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/mxcc.h b/include/asm-sparc/mxcc.h index 128fe9708135..c0517bd05bde 100644 --- a/include/asm-sparc/mxcc.h +++ b/include/asm-sparc/mxcc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: mxcc.h,v 1.7 1997/04/20 14:11:46 ecd Exp $ | 1 | /* |
2 | * mxcc.h: Definitions of the Viking MXCC registers | 2 | * mxcc.h: Definitions of the Viking MXCC registers |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/namei.h b/include/asm-sparc/namei.h index 618344d89cc4..0646102fb020 100644 --- a/include/asm-sparc/namei.h +++ b/include/asm-sparc/namei.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: namei.h,v 1.16 2000/04/13 00:55:54 davem Exp $ | 1 | /* |
2 | * linux/include/asm-sparc/namei.h | 2 | * linux/include/asm-sparc/namei.h |
3 | * | 3 | * |
4 | * Routines to handle famous /usr/gnemul/s*. | 4 | * Routines to handle famous /usr/gnemul/s*. |
diff --git a/include/asm-sparc/obio.h b/include/asm-sparc/obio.h index 47854a2a12cf..1a7544ceb574 100644 --- a/include/asm-sparc/obio.h +++ b/include/asm-sparc/obio.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: obio.h,v 1.4 1998/03/09 14:04:55 jj Exp $ | 1 | /* |
2 | * obio.h: Some useful locations in 0xFXXXXXXXX PA obio space on sun4d. | 2 | * obio.h: Some useful locations in 0xFXXXXXXXX PA obio space on sun4d. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Jakub Jelinek <jj@sunsite.mff.cuni.cz> | 4 | * Copyright (C) 1997 Jakub Jelinek <jj@sunsite.mff.cuni.cz> |
diff --git a/include/asm-sparc/openprom.h b/include/asm-sparc/openprom.h index 12929a20f536..ed4b6bc2b102 100644 --- a/include/asm-sparc/openprom.h +++ b/include/asm-sparc/openprom.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: openprom.h,v 1.24 2000/06/04 06:23:53 anton Exp $ */ | ||
2 | #ifndef __SPARC_OPENPROM_H | 1 | #ifndef __SPARC_OPENPROM_H |
3 | #define __SPARC_OPENPROM_H | 2 | #define __SPARC_OPENPROM_H |
4 | 3 | ||
diff --git a/include/asm-sparc/oplib.h b/include/asm-sparc/oplib.h index 7becc846544a..61c3ca6a8ac3 100644 --- a/include/asm-sparc/oplib.h +++ b/include/asm-sparc/oplib.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: oplib.h,v 1.23 2001/12/21 00:54:31 davem Exp $ | 1 | /* |
2 | * oplib.h: Describes the interface and available routines in the | 2 | * oplib.h: Describes the interface and available routines in the |
3 | * Linux Prom library. | 3 | * Linux Prom library. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/page.h b/include/asm-sparc/page.h index 1625a8c3e0d2..6aa9e4c910cf 100644 --- a/include/asm-sparc/page.h +++ b/include/asm-sparc/page.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: page.h,v 1.55 2000/10/30 21:01:41 davem Exp $ | 1 | /* |
2 | * page.h: Various defines and such for MMU operations on the Sparc for | 2 | * page.h: Various defines and such for MMU operations on the Sparc for |
3 | * the Linux kernel. | 3 | * the Linux kernel. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/param.h b/include/asm-sparc/param.h index 86ba59af9d2c..9836d9a3cb9a 100644 --- a/include/asm-sparc/param.h +++ b/include/asm-sparc/param.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: param.h,v 1.4 2000/10/30 21:01:41 davem Exp $ */ | ||
2 | #ifndef _ASMSPARC_PARAM_H | 1 | #ifndef _ASMSPARC_PARAM_H |
3 | #define _ASMSPARC_PARAM_H | 2 | #define _ASMSPARC_PARAM_H |
4 | 3 | ||
diff --git a/include/asm-sparc/pbm.h b/include/asm-sparc/pbm.h index fedd9c6e875c..458a4916d14d 100644 --- a/include/asm-sparc/pbm.h +++ b/include/asm-sparc/pbm.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: pbm.h,v 1.3 1999/12/20 17:06:35 zaitcev Exp $ | 1 | /* |
2 | * | 2 | * |
3 | * pbm.h: PCI bus module pseudo driver software state | 3 | * pbm.h: PCI bus module pseudo driver software state |
4 | * Adopted from sparc64 by V. Roganov and G. Raiko | 4 | * Adopted from sparc64 by V. Roganov and G. Raiko |
diff --git a/include/asm-sparc/pcic.h b/include/asm-sparc/pcic.h index dedea14d87c8..f20ef562b265 100644 --- a/include/asm-sparc/pcic.h +++ b/include/asm-sparc/pcic.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: pcic.h,v 1.4 1999/11/17 07:34:20 zaitcev Exp $ | 1 | /* |
2 | * pcic.h: JavaEngine 1 specific PCI definitions. | 2 | * pcic.h: JavaEngine 1 specific PCI definitions. |
3 | * | 3 | * |
4 | * Copyright (C) 1998 V. Roganov and G. Raiko | 4 | * Copyright (C) 1998 V. Roganov and G. Raiko |
diff --git a/include/asm-sparc/pgalloc.h b/include/asm-sparc/pgalloc.h index 6292cd00e5af..681582d26969 100644 --- a/include/asm-sparc/pgalloc.h +++ b/include/asm-sparc/pgalloc.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: pgalloc.h,v 1.16 2001/12/21 04:56:17 davem Exp $ */ | ||
2 | #ifndef _SPARC_PGALLOC_H | 1 | #ifndef _SPARC_PGALLOC_H |
3 | #define _SPARC_PGALLOC_H | 2 | #define _SPARC_PGALLOC_H |
4 | 3 | ||
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h index d84af6d95f5c..60512296b2ca 100644 --- a/include/asm-sparc/pgtable.h +++ b/include/asm-sparc/pgtable.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: pgtable.h,v 1.110 2001/12/21 04:56:17 davem Exp $ */ | ||
2 | #ifndef _SPARC_PGTABLE_H | 1 | #ifndef _SPARC_PGTABLE_H |
3 | #define _SPARC_PGTABLE_H | 2 | #define _SPARC_PGTABLE_H |
4 | 3 | ||
diff --git a/include/asm-sparc/pgtsrmmu.h b/include/asm-sparc/pgtsrmmu.h index edeb9811e728..808555fc1d58 100644 --- a/include/asm-sparc/pgtsrmmu.h +++ b/include/asm-sparc/pgtsrmmu.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: pgtsrmmu.h,v 1.31 2000/07/16 21:48:52 anton Exp $ | 1 | /* |
2 | * pgtsrmmu.h: SRMMU page table defines and code. | 2 | * pgtsrmmu.h: SRMMU page table defines and code. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/pgtsun4.h b/include/asm-sparc/pgtsun4.h index 60bda107f206..5a0d661fb82e 100644 --- a/include/asm-sparc/pgtsun4.h +++ b/include/asm-sparc/pgtsun4.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: pgtsun4.h,v 1.5 2000/06/05 06:08:46 anton Exp $ | 1 | /* |
2 | * pgtsun4.h: Sun4 specific pgtable.h defines and code. | 2 | * pgtsun4.h: Sun4 specific pgtable.h defines and code. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/pgtsun4c.h b/include/asm-sparc/pgtsun4c.h index f53b6dbc5fe3..aeb25e912179 100644 --- a/include/asm-sparc/pgtsun4c.h +++ b/include/asm-sparc/pgtsun4c.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: pgtsun4c.h,v 1.37 2000/06/05 06:08:46 anton Exp $ | 1 | /* |
2 | * pgtsun4c.h: Sun4c specific pgtable.h defines and code. | 2 | * pgtsun4c.h: Sun4c specific pgtable.h defines and code. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/psr.h b/include/asm-sparc/psr.h index 213970477a24..b8c0e5f0a66b 100644 --- a/include/asm-sparc/psr.h +++ b/include/asm-sparc/psr.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: psr.h,v 1.15 1997/10/04 08:54:22 ecd Exp $ | 1 | /* |
2 | * psr.h: This file holds the macros for masking off various parts of | 2 | * psr.h: This file holds the macros for masking off various parts of |
3 | * the processor status register on the Sparc. This is valid | 3 | * the processor status register on the Sparc. This is valid |
4 | * for Version 8. On the V9 this is renamed to the PSTATE | 4 | * for Version 8. On the V9 this is renamed to the PSTATE |
diff --git a/include/asm-sparc/ptrace.h b/include/asm-sparc/ptrace.h index 0afb867d6c1b..11f3bc2bb3f5 100644 --- a/include/asm-sparc/ptrace.h +++ b/include/asm-sparc/ptrace.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: ptrace.h,v 1.25 1997/03/04 16:27:25 jj Exp $ */ | ||
2 | #ifndef _SPARC_PTRACE_H | 1 | #ifndef _SPARC_PTRACE_H |
3 | #define _SPARC_PTRACE_H | 2 | #define _SPARC_PTRACE_H |
4 | 3 | ||
diff --git a/include/asm-sparc/resource.h b/include/asm-sparc/resource.h index 0514c304e130..985948a41299 100644 --- a/include/asm-sparc/resource.h +++ b/include/asm-sparc/resource.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: resource.h,v 1.12 2000/09/23 02:09:21 davem Exp $ | 1 | /* |
2 | * resource.h: Resource definitions. | 2 | * resource.h: Resource definitions. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/ross.h b/include/asm-sparc/ross.h index f2c14b5080ed..ecb6e81786a6 100644 --- a/include/asm-sparc/ross.h +++ b/include/asm-sparc/ross.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ross.h,v 1.13 1998/01/07 06:49:11 baccala Exp $ | 1 | /* |
2 | * ross.h: Ross module specific definitions and defines. | 2 | * ross.h: Ross module specific definitions and defines. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/rtc.h b/include/asm-sparc/rtc.h index f4f261dde699..f9ecb1fe2ecd 100644 --- a/include/asm-sparc/rtc.h +++ b/include/asm-sparc/rtc.h | |||
@@ -1,5 +1,4 @@ | |||
1 | /* $Id: rtc.h,v 1.2 1996/08/21 23:17:39 ecd Exp $ | 1 | /* |
2 | * | ||
3 | * rtc.h: Definitions for access to the Mostek real time clock | 2 | * rtc.h: Definitions for access to the Mostek real time clock |
4 | * | 3 | * |
5 | * Copyright (C) 1996 Thomas K. Dyas (tdyas@eden.rutgers.edu) | 4 | * Copyright (C) 1996 Thomas K. Dyas (tdyas@eden.rutgers.edu) |
diff --git a/include/asm-sparc/sbi.h b/include/asm-sparc/sbi.h index 86a603ac7b20..5eb7f1965d33 100644 --- a/include/asm-sparc/sbi.h +++ b/include/asm-sparc/sbi.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sbi.h,v 1.2 1998/03/09 14:04:48 jj Exp $ | 1 | /* |
2 | * sbi.h: SBI (Sbus Interface on sun4d) definitions | 2 | * sbi.h: SBI (Sbus Interface on sun4d) definitions |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Jakub Jelinek <jj@sunsite.mff.cuni.cz> | 4 | * Copyright (C) 1997 Jakub Jelinek <jj@sunsite.mff.cuni.cz> |
diff --git a/include/asm-sparc/sbus.h b/include/asm-sparc/sbus.h index 27d076c46964..f1d2fe1c9a30 100644 --- a/include/asm-sparc/sbus.h +++ b/include/asm-sparc/sbus.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sbus.h,v 1.22 2000/02/18 13:50:50 davem Exp $ | 1 | /* |
2 | * sbus.h: Defines for the Sun SBus. | 2 | * sbus.h: Defines for the Sun SBus. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/scatterlist.h b/include/asm-sparc/scatterlist.h index e08d3d775b08..c82609ca1d0f 100644 --- a/include/asm-sparc/scatterlist.h +++ b/include/asm-sparc/scatterlist.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: scatterlist.h,v 1.8 2001/12/17 07:05:15 davem Exp $ */ | ||
2 | #ifndef _SPARC_SCATTERLIST_H | 1 | #ifndef _SPARC_SCATTERLIST_H |
3 | #define _SPARC_SCATTERLIST_H | 2 | #define _SPARC_SCATTERLIST_H |
4 | 3 | ||
diff --git a/include/asm-sparc/shmparam.h b/include/asm-sparc/shmparam.h index bb93a6f74a38..59a1243c12f3 100644 --- a/include/asm-sparc/shmparam.h +++ b/include/asm-sparc/shmparam.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: shmparam.h,v 1.6 1999/12/09 10:32:41 davem Exp $ */ | ||
2 | #ifndef _ASMSPARC_SHMPARAM_H | 1 | #ifndef _ASMSPARC_SHMPARAM_H |
3 | #define _ASMSPARC_SHMPARAM_H | 2 | #define _ASMSPARC_SHMPARAM_H |
4 | 3 | ||
diff --git a/include/asm-sparc/sigcontext.h b/include/asm-sparc/sigcontext.h index 7fa2c7d01ab4..c5fb60dcbd75 100644 --- a/include/asm-sparc/sigcontext.h +++ b/include/asm-sparc/sigcontext.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: sigcontext.h,v 1.14 1999/09/06 08:22:05 jj Exp $ */ | ||
2 | #ifndef __SPARC_SIGCONTEXT_H | 1 | #ifndef __SPARC_SIGCONTEXT_H |
3 | #define __SPARC_SIGCONTEXT_H | 2 | #define __SPARC_SIGCONTEXT_H |
4 | 3 | ||
diff --git a/include/asm-sparc/siginfo.h b/include/asm-sparc/siginfo.h index 2c3ea8b22448..3c71af135c52 100644 --- a/include/asm-sparc/siginfo.h +++ b/include/asm-sparc/siginfo.h | |||
@@ -1,7 +1,3 @@ | |||
1 | /* $Id: siginfo.h,v 1.9 2002/02/08 03:57:18 davem Exp $ | ||
2 | * siginfo.c: | ||
3 | */ | ||
4 | |||
5 | #ifndef _SPARC_SIGINFO_H | 1 | #ifndef _SPARC_SIGINFO_H |
6 | #define _SPARC_SIGINFO_H | 2 | #define _SPARC_SIGINFO_H |
7 | 3 | ||
diff --git a/include/asm-sparc/signal.h b/include/asm-sparc/signal.h index 94071c75701f..683657d6e685 100644 --- a/include/asm-sparc/signal.h +++ b/include/asm-sparc/signal.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: signal.h,v 1.35 1999/09/06 08:22:04 jj Exp $ */ | ||
2 | #ifndef _ASMSPARC_SIGNAL_H | 1 | #ifndef _ASMSPARC_SIGNAL_H |
3 | #define _ASMSPARC_SIGNAL_H | 2 | #define _ASMSPARC_SIGNAL_H |
4 | 3 | ||
diff --git a/include/asm-sparc/smpprim.h b/include/asm-sparc/smpprim.h index e7b6d346ae10..eb849d862c64 100644 --- a/include/asm-sparc/smpprim.h +++ b/include/asm-sparc/smpprim.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: smpprim.h,v 1.5 1996/08/29 09:48:49 davem Exp $ | 1 | /* |
2 | * smpprim.h: SMP locking primitives on the Sparc | 2 | * smpprim.h: SMP locking primitives on the Sparc |
3 | * | 3 | * |
4 | * God knows we won't be actually using this code for some time | 4 | * God knows we won't be actually using this code for some time |
diff --git a/include/asm-sparc/socket.h b/include/asm-sparc/socket.h index a00e15df227c..bf50d0c2d583 100644 --- a/include/asm-sparc/socket.h +++ b/include/asm-sparc/socket.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: socket.h,v 1.17 2001/06/13 16:25:03 davem Exp $ */ | ||
2 | #ifndef _ASM_SOCKET_H | 1 | #ifndef _ASM_SOCKET_H |
3 | #define _ASM_SOCKET_H | 2 | #define _ASM_SOCKET_H |
4 | 3 | ||
diff --git a/include/asm-sparc/stat.h b/include/asm-sparc/stat.h index a5b4272f2894..2299e1d5d94c 100644 --- a/include/asm-sparc/stat.h +++ b/include/asm-sparc/stat.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: stat.h,v 1.12 2000/08/04 05:35:55 davem Exp $ */ | ||
2 | #ifndef _SPARC_STAT_H | 1 | #ifndef _SPARC_STAT_H |
3 | #define _SPARC_STAT_H | 2 | #define _SPARC_STAT_H |
4 | 3 | ||
diff --git a/include/asm-sparc/statfs.h b/include/asm-sparc/statfs.h index d623f144247d..304520fa8863 100644 --- a/include/asm-sparc/statfs.h +++ b/include/asm-sparc/statfs.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: statfs.h,v 1.4 1996/06/07 00:41:05 ecd Exp $ */ | ||
2 | #ifndef _SPARC_STATFS_H | 1 | #ifndef _SPARC_STATFS_H |
3 | #define _SPARC_STATFS_H | 2 | #define _SPARC_STATFS_H |
4 | 3 | ||
diff --git a/include/asm-sparc/string.h b/include/asm-sparc/string.h index cb1e923356c6..8d7c0dd4f299 100644 --- a/include/asm-sparc/string.h +++ b/include/asm-sparc/string.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: string.h,v 1.36 2001/12/21 00:54:31 davem Exp $ | 1 | /* |
2 | * string.h: External definitions for optimized assembly string | 2 | * string.h: External definitions for optimized assembly string |
3 | * routines for the Linux Kernel. | 3 | * routines for the Linux Kernel. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/sun4paddr.h b/include/asm-sparc/sun4paddr.h index d863bfd5f09a..d52985f19f42 100644 --- a/include/asm-sparc/sun4paddr.h +++ b/include/asm-sparc/sun4paddr.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sun4paddr.h,v 1.3 1998/07/28 16:53:27 jj Exp $ | 1 | /* |
2 | * sun4paddr.h: Various physical addresses on sun4 machines | 2 | * sun4paddr.h: Various physical addresses on sun4 machines |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Anton Blanchard (anton@progsoc.uts.edu.au) | 4 | * Copyright (C) 1997 Anton Blanchard (anton@progsoc.uts.edu.au) |
diff --git a/include/asm-sparc/sunbpp.h b/include/asm-sparc/sunbpp.h index 568db79b730d..92ee1a8ff3a2 100644 --- a/include/asm-sparc/sunbpp.h +++ b/include/asm-sparc/sunbpp.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sunbpp.h,v 1.1 1999/08/08 14:09:49 shadow Exp $ | 1 | /* |
2 | * include/asm-sparc/sunbpp.h | 2 | * include/asm-sparc/sunbpp.h |
3 | */ | 3 | */ |
4 | 4 | ||
diff --git a/include/asm-sparc/sysen.h b/include/asm-sparc/sysen.h index 692fa6f2296a..6af34abde6e7 100644 --- a/include/asm-sparc/sysen.h +++ b/include/asm-sparc/sysen.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sysen.h,v 1.3 1995/11/25 02:32:58 davem Exp $ | 1 | /* |
2 | * sysen.h: Bit fields within the "System Enable" register accessed via | 2 | * sysen.h: Bit fields within the "System Enable" register accessed via |
3 | * the ASI_CONTROL address space at address AC_SYSENABLE. | 3 | * the ASI_CONTROL address space at address AC_SYSENABLE. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/termios.h b/include/asm-sparc/termios.h index 733d40504e1e..f7b4409c35ff 100644 --- a/include/asm-sparc/termios.h +++ b/include/asm-sparc/termios.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: termios.h,v 1.32 2001/06/01 08:12:11 davem Exp $ */ | ||
2 | #ifndef _SPARC_TERMIOS_H | 1 | #ifndef _SPARC_TERMIOS_H |
3 | #define _SPARC_TERMIOS_H | 2 | #define _SPARC_TERMIOS_H |
4 | 3 | ||
diff --git a/include/asm-sparc/timer.h b/include/asm-sparc/timer.h index cb1fa1d1f184..d909565f9410 100644 --- a/include/asm-sparc/timer.h +++ b/include/asm-sparc/timer.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: timer.h,v 1.21 1999/04/20 13:22:51 anton Exp $ | 1 | /* |
2 | * timer.h: Definitions for the timer chips on the Sparc. | 2 | * timer.h: Definitions for the timer chips on the Sparc. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/traps.h b/include/asm-sparc/traps.h index f62c7f878ee1..bebdbf8f43a8 100644 --- a/include/asm-sparc/traps.h +++ b/include/asm-sparc/traps.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: traps.h,v 1.9 1998/03/09 14:04:53 jj Exp $ | 1 | /* |
2 | * traps.h: Format of entries for the Sparc trap table. | 2 | * traps.h: Format of entries for the Sparc trap table. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/tsunami.h b/include/asm-sparc/tsunami.h index 887add5c466b..5bbd1d523baa 100644 --- a/include/asm-sparc/tsunami.h +++ b/include/asm-sparc/tsunami.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: tsunami.h,v 1.5 1996/08/29 09:49:03 davem Exp $ | 1 | /* |
2 | * tsunami.h: Module specific definitions for Tsunami V8 Sparcs | 2 | * tsunami.h: Module specific definitions for Tsunami V8 Sparcs |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/turbosparc.h b/include/asm-sparc/turbosparc.h index 31d2350a5818..17c73282db0a 100644 --- a/include/asm-sparc/turbosparc.h +++ b/include/asm-sparc/turbosparc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: turbosparc.h,v 1.4 1998/08/16 16:02:42 ecd Exp $ | 1 | /* |
2 | * turbosparc.h: Defines specific to the TurboSparc module. | 2 | * turbosparc.h: Defines specific to the TurboSparc module. |
3 | * This is SRMMU stuff. | 3 | * This is SRMMU stuff. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/types.h b/include/asm-sparc/types.h index 1b08ef860a66..07734f942405 100644 --- a/include/asm-sparc/types.h +++ b/include/asm-sparc/types.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: types.h,v 1.13 2001/12/21 01:22:59 davem Exp $ */ | ||
2 | #ifndef _SPARC_TYPES_H | 1 | #ifndef _SPARC_TYPES_H |
3 | #define _SPARC_TYPES_H | 2 | #define _SPARC_TYPES_H |
4 | 3 | ||
diff --git a/include/asm-sparc/uaccess.h b/include/asm-sparc/uaccess.h index 366b11696ee3..47d5619d43fa 100644 --- a/include/asm-sparc/uaccess.h +++ b/include/asm-sparc/uaccess.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: uaccess.h,v 1.24 2001/10/30 04:32:24 davem Exp $ | 1 | /* |
2 | * uaccess.h: User space memore access functions. | 2 | * uaccess.h: User space memore access functions. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc/vac-ops.h b/include/asm-sparc/vac-ops.h index ab6f53b913ea..d10527611f11 100644 --- a/include/asm-sparc/vac-ops.h +++ b/include/asm-sparc/vac-ops.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: vac-ops.h,v 1.13 1998/01/30 10:59:59 jj Exp $ */ | ||
2 | #ifndef _SPARC_VAC_OPS_H | 1 | #ifndef _SPARC_VAC_OPS_H |
3 | #define _SPARC_VAC_OPS_H | 2 | #define _SPARC_VAC_OPS_H |
4 | 3 | ||
diff --git a/include/asm-sparc/vaddrs.h b/include/asm-sparc/vaddrs.h index 91097392c8cc..f6ca4779056c 100644 --- a/include/asm-sparc/vaddrs.h +++ b/include/asm-sparc/vaddrs.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: vaddrs.h,v 1.27 2001/07/04 00:18:18 davem Exp $ */ | ||
2 | #ifndef _SPARC_VADDRS_H | 1 | #ifndef _SPARC_VADDRS_H |
3 | #define _SPARC_VADDRS_H | 2 | #define _SPARC_VADDRS_H |
4 | 3 | ||
diff --git a/include/asm-sparc/viking.h b/include/asm-sparc/viking.h index 7541da71b9d6..989930aeb093 100644 --- a/include/asm-sparc/viking.h +++ b/include/asm-sparc/viking.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: viking.h,v 1.19 1997/04/20 14:11:48 ecd Exp $ | 1 | /* |
2 | * viking.h: Defines specific to the GNU/Viking MBUS module. | 2 | * viking.h: Defines specific to the GNU/Viking MBUS module. |
3 | * This is SRMMU stuff. | 3 | * This is SRMMU stuff. |
4 | * | 4 | * |
diff --git a/include/asm-sparc/winmacro.h b/include/asm-sparc/winmacro.h index 096f3d3d90c3..5b0a06dc3bcb 100644 --- a/include/asm-sparc/winmacro.h +++ b/include/asm-sparc/winmacro.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: winmacro.h,v 1.22 2000/05/09 17:40:15 davem Exp $ | 1 | /* |
2 | * winmacro.h: Window loading-unloading macros. | 2 | * winmacro.h: Window loading-unloading macros. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/apb.h b/include/asm-sparc64/apb.h index 80f0df289a66..8f3b57db810f 100644 --- a/include/asm-sparc64/apb.h +++ b/include/asm-sparc64/apb.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: apb.h,v 1.2 1998/04/01 20:41:49 ecd Exp $ | 1 | /* |
2 | * apb.h: Advanced PCI Bridge Configuration Registers and Bits | 2 | * apb.h: Advanced PCI Bridge Configuration Registers and Bits |
3 | * | 3 | * |
4 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be) |
diff --git a/include/asm-sparc64/asi.h b/include/asm-sparc64/asi.h index 662a21107ae6..bc57c405e7d3 100644 --- a/include/asm-sparc64/asi.h +++ b/include/asm-sparc64/asi.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: asi.h,v 1.5 2001/03/29 11:47:47 davem Exp $ */ | ||
2 | #ifndef _SPARC64_ASI_H | 1 | #ifndef _SPARC64_ASI_H |
3 | #define _SPARC64_ASI_H | 2 | #define _SPARC64_ASI_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/auxio.h b/include/asm-sparc64/auxio.h index 81a590a50a1f..c4100494c7a5 100644 --- a/include/asm-sparc64/auxio.h +++ b/include/asm-sparc64/auxio.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: auxio.h,v 1.3 2001/06/05 08:16:34 davem Exp $ | 1 | /* |
2 | * auxio.h: Definitions and code for the Auxiliary I/O registers. | 2 | * auxio.h: Definitions and code for the Auxiliary I/O registers. |
3 | * | 3 | * |
4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/bbc.h b/include/asm-sparc64/bbc.h index 368fce4eedba..423a85800aae 100644 --- a/include/asm-sparc64/bbc.h +++ b/include/asm-sparc64/bbc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: bbc.h,v 1.2 2001/03/26 23:47:18 davem Exp $ | 1 | /* |
2 | * bbc.h: Defines for BootBus Controller found on UltraSPARC-III | 2 | * bbc.h: Defines for BootBus Controller found on UltraSPARC-III |
3 | * systems. | 3 | * systems. |
4 | * | 4 | * |
diff --git a/include/asm-sparc64/bitops.h b/include/asm-sparc64/bitops.h index 11f9d8146cdf..bb87b8080220 100644 --- a/include/asm-sparc64/bitops.h +++ b/include/asm-sparc64/bitops.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: bitops.h,v 1.39 2002/01/30 01:40:00 davem Exp $ | 1 | /* |
2 | * bitops.h: Bit string operations on the V9. | 2 | * bitops.h: Bit string operations on the V9. |
3 | * | 3 | * |
4 | * Copyright 1996, 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright 1996, 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/chafsr.h b/include/asm-sparc64/chafsr.h index fd1688335ace..85c69b38220b 100644 --- a/include/asm-sparc64/chafsr.h +++ b/include/asm-sparc64/chafsr.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: chafsr.h,v 1.1 2001/03/28 10:56:34 davem Exp $ */ | ||
2 | #ifndef _SPARC64_CHAFSR_H | 1 | #ifndef _SPARC64_CHAFSR_H |
3 | #define _SPARC64_CHAFSR_H | 2 | #define _SPARC64_CHAFSR_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/checksum.h b/include/asm-sparc64/checksum.h index 70a006da7634..b290564c8ce0 100644 --- a/include/asm-sparc64/checksum.h +++ b/include/asm-sparc64/checksum.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: checksum.h,v 1.19 2002/02/09 19:49:31 davem Exp $ */ | ||
2 | #ifndef __SPARC64_CHECKSUM_H | 1 | #ifndef __SPARC64_CHECKSUM_H |
3 | #define __SPARC64_CHECKSUM_H | 2 | #define __SPARC64_CHECKSUM_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/chmctrl.h b/include/asm-sparc64/chmctrl.h index 53047f9f6423..859b4a4b0d30 100644 --- a/include/asm-sparc64/chmctrl.h +++ b/include/asm-sparc64/chmctrl.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: chmctrl.h,v 1.1 2001/03/29 11:43:28 davem Exp $ */ | ||
2 | #ifndef _SPARC64_CHMCTRL_H | 1 | #ifndef _SPARC64_CHMCTRL_H |
3 | #define _SPARC64_CHMCTRL_H | 2 | #define _SPARC64_CHMCTRL_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/dcr.h b/include/asm-sparc64/dcr.h index e9a3f305815d..620c9ba642e9 100644 --- a/include/asm-sparc64/dcr.h +++ b/include/asm-sparc64/dcr.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: dcr.h,v 1.4 2001/03/09 17:56:37 davem Exp $ */ | ||
2 | #ifndef _SPARC64_DCR_H | 1 | #ifndef _SPARC64_DCR_H |
3 | #define _SPARC64_DCR_H | 2 | #define _SPARC64_DCR_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/display7seg.h b/include/asm-sparc64/display7seg.h index 955a3502218e..c066a8964eab 100644 --- a/include/asm-sparc64/display7seg.h +++ b/include/asm-sparc64/display7seg.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: display7seg.h,v 1.2 2000/08/02 06:22:35 davem Exp $ | 1 | /* |
2 | * | 2 | * |
3 | * display7seg - Driver interface for the 7-segment display | 3 | * display7seg - Driver interface for the 7-segment display |
4 | * present on Sun Microsystems CP1400 and CP1500 | 4 | * present on Sun Microsystems CP1400 and CP1500 |
diff --git a/include/asm-sparc64/dma.h b/include/asm-sparc64/dma.h index a9fd06183972..9d4c024bd3b3 100644 --- a/include/asm-sparc64/dma.h +++ b/include/asm-sparc64/dma.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: dma.h,v 1.21 2001/12/13 04:16:52 davem Exp $ | 1 | /* |
2 | * include/asm-sparc64/dma.h | 2 | * include/asm-sparc64/dma.h |
3 | * | 3 | * |
4 | * Copyright 1996 (C) David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright 1996 (C) David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/ebus.h b/include/asm-sparc64/ebus.h index 9c1c6db2a790..fcc62b97ced5 100644 --- a/include/asm-sparc64/ebus.h +++ b/include/asm-sparc64/ebus.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ebus.h,v 1.10 2001/03/14 05:00:55 davem Exp $ | 1 | /* |
2 | * ebus.h: PCI to Ebus pseudo driver software state. | 2 | * ebus.h: PCI to Ebus pseudo driver software state. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) | 4 | * Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) |
diff --git a/include/asm-sparc64/elf.h b/include/asm-sparc64/elf.h index 11c8e68d712a..0818a1308f4e 100644 --- a/include/asm-sparc64/elf.h +++ b/include/asm-sparc64/elf.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: elf.h,v 1.32 2002/02/09 19:49:31 davem Exp $ */ | ||
2 | #ifndef __ASM_SPARC64_ELF_H | 1 | #ifndef __ASM_SPARC64_ELF_H |
3 | #define __ASM_SPARC64_ELF_H | 2 | #define __ASM_SPARC64_ELF_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/envctrl.h b/include/asm-sparc64/envctrl.h index 53a6653815eb..a5668a082b14 100644 --- a/include/asm-sparc64/envctrl.h +++ b/include/asm-sparc64/envctrl.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: envctrl.h,v 1.3 2000/11/03 00:37:40 davem Exp $ | 1 | /* |
2 | * | 2 | * |
3 | * envctrl.h: Definitions for access to the i2c environment | 3 | * envctrl.h: Definitions for access to the i2c environment |
4 | * monitoring on Ultrasparc systems. | 4 | * monitoring on Ultrasparc systems. |
diff --git a/include/asm-sparc64/estate.h b/include/asm-sparc64/estate.h index a719c3d2f6b1..520c08560d1b 100644 --- a/include/asm-sparc64/estate.h +++ b/include/asm-sparc64/estate.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: estate.h,v 1.1 2001/03/28 10:56:34 davem Exp $ */ | ||
2 | #ifndef _SPARC64_ESTATE_H | 1 | #ifndef _SPARC64_ESTATE_H |
3 | #define _SPARC64_ESTATE_H | 2 | #define _SPARC64_ESTATE_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/fcntl.h b/include/asm-sparc64/fcntl.h index 111f6b3b8925..8a09ca7aa2f2 100644 --- a/include/asm-sparc64/fcntl.h +++ b/include/asm-sparc64/fcntl.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: fcntl.h,v 1.12 2001/09/20 00:35:34 davem Exp $ */ | ||
2 | #ifndef _SPARC64_FCNTL_H | 1 | #ifndef _SPARC64_FCNTL_H |
3 | #define _SPARC64_FCNTL_H | 2 | #define _SPARC64_FCNTL_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/fhc.h b/include/asm-sparc64/fhc.h index 9e7f1b0d78b9..ddffcdfbc984 100644 --- a/include/asm-sparc64/fhc.h +++ b/include/asm-sparc64/fhc.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: fhc.h,v 1.5 1999/09/21 14:39:29 davem Exp $ | 1 | /* |
2 | * fhc.h: Structures for central/fhc pseudo driver on Sunfire/Starfire/Wildfire. | 2 | * fhc.h: Structures for central/fhc pseudo driver on Sunfire/Starfire/Wildfire. |
3 | * | 3 | * |
4 | * Copyright (C) 1997, 1999 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 1997, 1999 David S. Miller (davem@redhat.com) |
diff --git a/include/asm-sparc64/head.h b/include/asm-sparc64/head.h index 67960a751f4d..10e9dabc4c41 100644 --- a/include/asm-sparc64/head.h +++ b/include/asm-sparc64/head.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: head.h,v 1.30 1997/08/08 08:34:33 jj Exp $ */ | ||
2 | #ifndef _SPARC64_HEAD_H | 1 | #ifndef _SPARC64_HEAD_H |
3 | #define _SPARC64_HEAD_H | 2 | #define _SPARC64_HEAD_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h index c5fdabe0b42d..1282676da1cd 100644 --- a/include/asm-sparc64/ide.h +++ b/include/asm-sparc64/ide.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: ide.h,v 1.21 2001/09/25 20:21:48 kanoj Exp $ | 1 | /* |
2 | * ide.h: Ultra/PCI specific IDE glue. | 2 | * ide.h: Ultra/PCI specific IDE glue. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/idprom.h b/include/asm-sparc64/idprom.h index 77fbf987385f..a363fa0a112a 100644 --- a/include/asm-sparc64/idprom.h +++ b/include/asm-sparc64/idprom.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: idprom.h,v 1.2 1997/04/04 00:50:16 davem Exp $ | 1 | /* |
2 | * idprom.h: Macros and defines for idprom routines | 2 | * idprom.h: Macros and defines for idprom routines |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/ioctl.h b/include/asm-sparc64/ioctl.h index 253d0b57b316..d634c21b4724 100644 --- a/include/asm-sparc64/ioctl.h +++ b/include/asm-sparc64/ioctl.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: ioctl.h,v 1.2 1998/10/15 05:40:38 jj Exp $ */ | ||
2 | #ifndef _SPARC64_IOCTL_H | 1 | #ifndef _SPARC64_IOCTL_H |
3 | #define _SPARC64_IOCTL_H | 2 | #define _SPARC64_IOCTL_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/ioctls.h b/include/asm-sparc64/ioctls.h index c1be40647c99..94d1b75e512b 100644 --- a/include/asm-sparc64/ioctls.h +++ b/include/asm-sparc64/ioctls.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: ioctls.h,v 1.7 1998/02/23 02:49:41 davem Exp $ */ | ||
2 | #ifndef _ASM_SPARC64_IOCTLS_H | 1 | #ifndef _ASM_SPARC64_IOCTLS_H |
3 | #define _ASM_SPARC64_IOCTLS_H | 2 | #define _ASM_SPARC64_IOCTLS_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/lsu.h b/include/asm-sparc64/lsu.h index 79f109840c39..7190f8de90a0 100644 --- a/include/asm-sparc64/lsu.h +++ b/include/asm-sparc64/lsu.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: lsu.h,v 1.2 1997/04/04 00:50:22 davem Exp $ */ | ||
2 | #ifndef _SPARC64_LSU_H | 1 | #ifndef _SPARC64_LSU_H |
3 | #define _SPARC64_LSU_H | 2 | #define _SPARC64_LSU_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/mman.h b/include/asm-sparc64/mman.h index 625be4d61baf..d2ae67cd1bdc 100644 --- a/include/asm-sparc64/mman.h +++ b/include/asm-sparc64/mman.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: mman.h,v 1.2 2000/03/15 02:44:26 davem Exp $ */ | ||
2 | #ifndef __SPARC64_MMAN_H__ | 1 | #ifndef __SPARC64_MMAN_H__ |
3 | #define __SPARC64_MMAN_H__ | 2 | #define __SPARC64_MMAN_H__ |
4 | 3 | ||
diff --git a/include/asm-sparc64/mmu_context.h b/include/asm-sparc64/mmu_context.h index 9fc225ed5500..5693ab482606 100644 --- a/include/asm-sparc64/mmu_context.h +++ b/include/asm-sparc64/mmu_context.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: mmu_context.h,v 1.54 2002/02/09 19:49:31 davem Exp $ */ | ||
2 | #ifndef __SPARC64_MMU_CONTEXT_H | 1 | #ifndef __SPARC64_MMU_CONTEXT_H |
3 | #define __SPARC64_MMU_CONTEXT_H | 2 | #define __SPARC64_MMU_CONTEXT_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/namei.h b/include/asm-sparc64/namei.h index 275161f21213..cbc1b4c06891 100644 --- a/include/asm-sparc64/namei.h +++ b/include/asm-sparc64/namei.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: namei.h,v 1.17 2000/04/13 00:55:54 davem Exp $ | 1 | /* |
2 | * linux/include/asm-sparc64/namei.h | 2 | * linux/include/asm-sparc64/namei.h |
3 | * | 3 | * |
4 | * Routines to handle famous /usr/gnemul/s*. | 4 | * Routines to handle famous /usr/gnemul/s*. |
diff --git a/include/asm-sparc64/openprom.h b/include/asm-sparc64/openprom.h index 26ec046715c8..b69e4a8c9170 100644 --- a/include/asm-sparc64/openprom.h +++ b/include/asm-sparc64/openprom.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: openprom.h,v 1.9 2001/03/16 10:22:02 davem Exp $ */ | ||
2 | #ifndef __SPARC64_OPENPROM_H | 1 | #ifndef __SPARC64_OPENPROM_H |
3 | #define __SPARC64_OPENPROM_H | 2 | #define __SPARC64_OPENPROM_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/page.h b/include/asm-sparc64/page.h index 618117def0dc..93f0881b766e 100644 --- a/include/asm-sparc64/page.h +++ b/include/asm-sparc64/page.h | |||
@@ -1,5 +1,3 @@ | |||
1 | /* $Id: page.h,v 1.39 2002/02/09 19:49:31 davem Exp $ */ | ||
2 | |||
3 | #ifndef _SPARC64_PAGE_H | 1 | #ifndef _SPARC64_PAGE_H |
4 | #define _SPARC64_PAGE_H | 2 | #define _SPARC64_PAGE_H |
5 | 3 | ||
diff --git a/include/asm-sparc64/pgalloc.h b/include/asm-sparc64/pgalloc.h index 3ee2d406373b..326de104d014 100644 --- a/include/asm-sparc64/pgalloc.h +++ b/include/asm-sparc64/pgalloc.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: pgalloc.h,v 1.30 2001/12/21 04:56:17 davem Exp $ */ | ||
2 | #ifndef _SPARC64_PGALLOC_H | 1 | #ifndef _SPARC64_PGALLOC_H |
3 | #define _SPARC64_PGALLOC_H | 2 | #define _SPARC64_PGALLOC_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 0e200e7acec7..b87017747b5d 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: pgtable.h,v 1.156 2002/02/09 19:49:31 davem Exp $ | 1 | /* |
2 | * pgtable.h: SpitFire page table operations. | 2 | * pgtable.h: SpitFire page table operations. |
3 | * | 3 | * |
4 | * Copyright 1996,1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright 1996,1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/pil.h b/include/asm-sparc64/pil.h index 2f5d126f7163..eaac842d88c3 100644 --- a/include/asm-sparc64/pil.h +++ b/include/asm-sparc64/pil.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: pil.h,v 1.1 2002/01/23 11:27:36 davem Exp $ */ | ||
2 | #ifndef _SPARC64_PIL_H | 1 | #ifndef _SPARC64_PIL_H |
3 | #define _SPARC64_PIL_H | 2 | #define _SPARC64_PIL_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h index 885b6a1dcae4..26b4e5255761 100644 --- a/include/asm-sparc64/processor.h +++ b/include/asm-sparc64/processor.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: processor.h,v 1.83 2002/02/10 06:04:33 davem Exp $ | 1 | /* |
2 | * include/asm-sparc64/processor.h | 2 | * include/asm-sparc64/processor.h |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/psrcompat.h b/include/asm-sparc64/psrcompat.h index 3614ca04753f..44b6327dbbf5 100644 --- a/include/asm-sparc64/psrcompat.h +++ b/include/asm-sparc64/psrcompat.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: psrcompat.h,v 1.5 1998/10/06 09:28:39 jj Exp $ */ | ||
2 | #ifndef _SPARC64_PSRCOMPAT_H | 1 | #ifndef _SPARC64_PSRCOMPAT_H |
3 | #define _SPARC64_PSRCOMPAT_H | 2 | #define _SPARC64_PSRCOMPAT_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/pstate.h b/include/asm-sparc64/pstate.h index 949aebaf991d..a26a53777bb0 100644 --- a/include/asm-sparc64/pstate.h +++ b/include/asm-sparc64/pstate.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: pstate.h,v 1.6 1997/06/25 07:39:45 jj Exp $ */ | ||
2 | #ifndef _SPARC64_PSTATE_H | 1 | #ifndef _SPARC64_PSTATE_H |
3 | #define _SPARC64_PSTATE_H | 2 | #define _SPARC64_PSTATE_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/ptrace.h b/include/asm-sparc64/ptrace.h index 90972a5ada59..b163da79bb6d 100644 --- a/include/asm-sparc64/ptrace.h +++ b/include/asm-sparc64/ptrace.h | |||
@@ -128,6 +128,17 @@ struct sparc_trapf { | |||
128 | 128 | ||
129 | #ifdef __KERNEL__ | 129 | #ifdef __KERNEL__ |
130 | 130 | ||
131 | struct global_reg_snapshot { | ||
132 | unsigned long tstate; | ||
133 | unsigned long tpc; | ||
134 | unsigned long tnpc; | ||
135 | unsigned long o7; | ||
136 | unsigned long i7; | ||
137 | struct thread_info *thread; | ||
138 | unsigned long pad1; | ||
139 | unsigned long pad2; | ||
140 | }; | ||
141 | |||
131 | #define __ARCH_WANT_COMPAT_SYS_PTRACE | 142 | #define __ARCH_WANT_COMPAT_SYS_PTRACE |
132 | 143 | ||
133 | #define force_successful_syscall_return() \ | 144 | #define force_successful_syscall_return() \ |
@@ -295,6 +306,20 @@ extern void __show_regs(struct pt_regs *); | |||
295 | #define SF_XARG5 0x58 | 306 | #define SF_XARG5 0x58 |
296 | #define SF_XXARG 0x5c | 307 | #define SF_XXARG 0x5c |
297 | 308 | ||
309 | #ifdef __KERNEL__ | ||
310 | |||
311 | /* global_reg_snapshot offsets */ | ||
312 | #define GR_SNAP_TSTATE 0x00 | ||
313 | #define GR_SNAP_TPC 0x08 | ||
314 | #define GR_SNAP_TNPC 0x10 | ||
315 | #define GR_SNAP_O7 0x18 | ||
316 | #define GR_SNAP_I7 0x20 | ||
317 | #define GR_SNAP_THREAD 0x28 | ||
318 | #define GR_SNAP_PAD1 0x30 | ||
319 | #define GR_SNAP_PAD2 0x38 | ||
320 | |||
321 | #endif /* __KERNEL__ */ | ||
322 | |||
298 | /* Stuff for the ptrace system call */ | 323 | /* Stuff for the ptrace system call */ |
299 | #define PTRACE_SPARC_DETACH 11 | 324 | #define PTRACE_SPARC_DETACH 11 |
300 | #define PTRACE_GETREGS 12 | 325 | #define PTRACE_GETREGS 12 |
diff --git a/include/asm-sparc64/reg.h b/include/asm-sparc64/reg.h index fc68f90181b3..77aa4804a60d 100644 --- a/include/asm-sparc64/reg.h +++ b/include/asm-sparc64/reg.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: reg.h,v 1.6 1999/09/06 08:22:10 jj Exp $ | 1 | /* |
2 | * linux/asm-sparc64/reg.h | 2 | * linux/asm-sparc64/reg.h |
3 | * Layout of the registers as expected by gdb on the Sparc | 3 | * Layout of the registers as expected by gdb on the Sparc |
4 | * we should replace the user.h definitions with those in | 4 | * we should replace the user.h definitions with those in |
diff --git a/include/asm-sparc64/resource.h b/include/asm-sparc64/resource.h index aa469795a6b0..4f08fb5e4ca4 100644 --- a/include/asm-sparc64/resource.h +++ b/include/asm-sparc64/resource.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: resource.h,v 1.8 2000/09/23 02:09:21 davem Exp $ | 1 | /* |
2 | * resource.h: Resource definitions. | 2 | * resource.h: Resource definitions. |
3 | * | 3 | * |
4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/rtc.h b/include/asm-sparc64/rtc.h index cb17334595c9..f9ecb1fe2ecd 100644 --- a/include/asm-sparc64/rtc.h +++ b/include/asm-sparc64/rtc.h | |||
@@ -1,5 +1,4 @@ | |||
1 | /* $Id: rtc.h,v 1.1 1996/12/26 14:22:35 davem Exp $ | 1 | /* |
2 | * | ||
3 | * rtc.h: Definitions for access to the Mostek real time clock | 2 | * rtc.h: Definitions for access to the Mostek real time clock |
4 | * | 3 | * |
5 | * Copyright (C) 1996 Thomas K. Dyas (tdyas@eden.rutgers.edu) | 4 | * Copyright (C) 1996 Thomas K. Dyas (tdyas@eden.rutgers.edu) |
diff --git a/include/asm-sparc64/rwsem.h b/include/asm-sparc64/rwsem.h index 1294b7ce5d06..1dc129ac2feb 100644 --- a/include/asm-sparc64/rwsem.h +++ b/include/asm-sparc64/rwsem.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: rwsem.h,v 1.5 2001/11/18 00:12:56 davem Exp $ | 1 | /* |
2 | * rwsem.h: R/W semaphores implemented using CAS | 2 | * rwsem.h: R/W semaphores implemented using CAS |
3 | * | 3 | * |
4 | * Written by David S. Miller (davem@redhat.com), 2001. | 4 | * Written by David S. Miller (davem@redhat.com), 2001. |
diff --git a/include/asm-sparc64/scatterlist.h b/include/asm-sparc64/scatterlist.h index 6df23f070b1a..81bd058f9382 100644 --- a/include/asm-sparc64/scatterlist.h +++ b/include/asm-sparc64/scatterlist.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: scatterlist.h,v 1.11 2001/12/17 07:05:15 davem Exp $ */ | ||
2 | #ifndef _SPARC64_SCATTERLIST_H | 1 | #ifndef _SPARC64_SCATTERLIST_H |
3 | #define _SPARC64_SCATTERLIST_H | 2 | #define _SPARC64_SCATTERLIST_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/shmparam.h b/include/asm-sparc64/shmparam.h index 8c66fded8a32..1ed0d6701a9b 100644 --- a/include/asm-sparc64/shmparam.h +++ b/include/asm-sparc64/shmparam.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: shmparam.h,v 1.5 2001/09/24 21:17:57 kanoj Exp $ */ | ||
2 | #ifndef _ASMSPARC64_SHMPARAM_H | 1 | #ifndef _ASMSPARC64_SHMPARAM_H |
3 | #define _ASMSPARC64_SHMPARAM_H | 2 | #define _ASMSPARC64_SHMPARAM_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/sigcontext.h b/include/asm-sparc64/sigcontext.h index d8073373db8c..1c868d680cfc 100644 --- a/include/asm-sparc64/sigcontext.h +++ b/include/asm-sparc64/sigcontext.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: sigcontext.h,v 1.12 1999/09/06 08:22:09 jj Exp $ */ | ||
2 | #ifndef __SPARC64_SIGCONTEXT_H | 1 | #ifndef __SPARC64_SIGCONTEXT_H |
3 | #define __SPARC64_SIGCONTEXT_H | 2 | #define __SPARC64_SIGCONTEXT_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/signal.h b/include/asm-sparc64/signal.h index c49f32d38707..2a7c7934ac0a 100644 --- a/include/asm-sparc64/signal.h +++ b/include/asm-sparc64/signal.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: signal.h,v 1.9 1999/09/06 08:22:11 jj Exp $ */ | ||
2 | #ifndef _ASMSPARC64_SIGNAL_H | 1 | #ifndef _ASMSPARC64_SIGNAL_H |
3 | #define _ASMSPARC64_SIGNAL_H | 2 | #define _ASMSPARC64_SIGNAL_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h index 1c1c5ea5cea5..cd0311b2e19d 100644 --- a/include/asm-sparc64/smp.h +++ b/include/asm-sparc64/smp.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* smp.h: Sparc64 specific SMP stuff. | 1 | /* smp.h: Sparc64 specific SMP stuff. |
2 | * | 2 | * |
3 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1996, 2008 David S. Miller (davem@davemloft.net) |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #ifndef _SPARC64_SMP_H | 6 | #ifndef _SPARC64_SMP_H |
@@ -44,6 +44,8 @@ extern int hard_smp_processor_id(void); | |||
44 | extern void smp_fill_in_sib_core_maps(void); | 44 | extern void smp_fill_in_sib_core_maps(void); |
45 | extern void cpu_play_dead(void); | 45 | extern void cpu_play_dead(void); |
46 | 46 | ||
47 | extern void smp_fetch_global_regs(void); | ||
48 | |||
47 | #ifdef CONFIG_HOTPLUG_CPU | 49 | #ifdef CONFIG_HOTPLUG_CPU |
48 | extern int __cpu_disable(void); | 50 | extern int __cpu_disable(void); |
49 | extern void __cpu_die(unsigned int cpu); | 51 | extern void __cpu_die(unsigned int cpu); |
@@ -55,6 +57,7 @@ extern void __cpu_die(unsigned int cpu); | |||
55 | 57 | ||
56 | #define hard_smp_processor_id() 0 | 58 | #define hard_smp_processor_id() 0 |
57 | #define smp_fill_in_sib_core_maps() do { } while (0) | 59 | #define smp_fill_in_sib_core_maps() do { } while (0) |
60 | #define smp_fetch_global_regs() do { } while (0) | ||
58 | 61 | ||
59 | #endif /* !(CONFIG_SMP) */ | 62 | #endif /* !(CONFIG_SMP) */ |
60 | 63 | ||
diff --git a/include/asm-sparc64/socket.h b/include/asm-sparc64/socket.h index 8cf071fae3eb..5af688f56716 100644 --- a/include/asm-sparc64/socket.h +++ b/include/asm-sparc64/socket.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: socket.h,v 1.10 2001/06/13 16:25:03 davem Exp $ */ | ||
2 | #ifndef _ASM_SOCKET_H | 1 | #ifndef _ASM_SOCKET_H |
3 | #define _ASM_SOCKET_H | 2 | #define _ASM_SOCKET_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/starfire.h b/include/asm-sparc64/starfire.h index 48b50b5e35b0..07bafd31e33c 100644 --- a/include/asm-sparc64/starfire.h +++ b/include/asm-sparc64/starfire.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: starfire.h,v 1.2 2001/07/04 00:18:18 davem Exp $ | 1 | /* |
2 | * starfire.h: Group all starfire specific code together. | 2 | * starfire.h: Group all starfire specific code together. |
3 | * | 3 | * |
4 | * Copyright (C) 2000 Anton Blanchard (anton@samba.org) | 4 | * Copyright (C) 2000 Anton Blanchard (anton@samba.org) |
diff --git a/include/asm-sparc64/stat.h b/include/asm-sparc64/stat.h index 128c27e57f0b..9650fdea847f 100644 --- a/include/asm-sparc64/stat.h +++ b/include/asm-sparc64/stat.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: stat.h,v 1.7 2000/08/04 05:35:55 davem Exp $ */ | ||
2 | #ifndef _SPARC64_STAT_H | 1 | #ifndef _SPARC64_STAT_H |
3 | #define _SPARC64_STAT_H | 2 | #define _SPARC64_STAT_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/statfs.h b/include/asm-sparc64/statfs.h index 185b6c481b24..79b3c890a5fa 100644 --- a/include/asm-sparc64/statfs.h +++ b/include/asm-sparc64/statfs.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: statfs.h,v 1.2 1997/04/14 17:05:22 jj Exp $ */ | ||
2 | #ifndef _SPARC64_STATFS_H | 1 | #ifndef _SPARC64_STATFS_H |
3 | #define _SPARC64_STATFS_H | 2 | #define _SPARC64_STATFS_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/string.h b/include/asm-sparc64/string.h index c7d88622cb27..43161f2d17eb 100644 --- a/include/asm-sparc64/string.h +++ b/include/asm-sparc64/string.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: string.h,v 1.20 2001/09/27 04:36:24 kanoj Exp $ | 1 | /* |
2 | * string.h: External definitions for optimized assembly string | 2 | * string.h: External definitions for optimized assembly string |
3 | * routines for the Linux Kernel. | 3 | * routines for the Linux Kernel. |
4 | * | 4 | * |
diff --git a/include/asm-sparc64/sunbpp.h b/include/asm-sparc64/sunbpp.h index b441cc9c426c..8e171b7a9f4f 100644 --- a/include/asm-sparc64/sunbpp.h +++ b/include/asm-sparc64/sunbpp.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: sunbpp.h,v 1.1 1999/08/13 06:21:44 shadow Exp $ | 1 | /* |
2 | * include/asm-sparc64/sunbpp.h | 2 | * include/asm-sparc64/sunbpp.h |
3 | */ | 3 | */ |
4 | 4 | ||
diff --git a/include/asm-sparc64/termios.h b/include/asm-sparc64/termios.h index cacbea171ad7..1f5dab25dda5 100644 --- a/include/asm-sparc64/termios.h +++ b/include/asm-sparc64/termios.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: termios.h,v 1.11 2001/06/01 08:12:11 davem Exp $ */ | ||
2 | #ifndef _SPARC64_TERMIOS_H | 1 | #ifndef _SPARC64_TERMIOS_H |
3 | #define _SPARC64_TERMIOS_H | 2 | #define _SPARC64_TERMIOS_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/ttable.h b/include/asm-sparc64/ttable.h index 52d67d394107..0ba199587e07 100644 --- a/include/asm-sparc64/ttable.h +++ b/include/asm-sparc64/ttable.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: ttable.h,v 1.18 2002/02/09 19:49:32 davem Exp $ */ | ||
2 | #ifndef _SPARC64_TTABLE_H | 1 | #ifndef _SPARC64_TTABLE_H |
3 | #define _SPARC64_TTABLE_H | 2 | #define _SPARC64_TTABLE_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/types.h b/include/asm-sparc64/types.h index 5dbe04f4044a..b27ccc85202f 100644 --- a/include/asm-sparc64/types.h +++ b/include/asm-sparc64/types.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: types.h,v 1.4 2001/10/09 02:24:35 davem Exp $ */ | ||
2 | #ifndef _SPARC64_TYPES_H | 1 | #ifndef _SPARC64_TYPES_H |
3 | #define _SPARC64_TYPES_H | 2 | #define _SPARC64_TYPES_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/uaccess.h b/include/asm-sparc64/uaccess.h index d8547b87e730..5fcbaf68c3f6 100644 --- a/include/asm-sparc64/uaccess.h +++ b/include/asm-sparc64/uaccess.h | |||
@@ -1,4 +1,3 @@ | |||
1 | /* $Id: uaccess.h,v 1.35 2002/02/09 19:49:31 davem Exp $ */ | ||
2 | #ifndef _ASM_UACCESS_H | 1 | #ifndef _ASM_UACCESS_H |
3 | #define _ASM_UACCESS_H | 2 | #define _ASM_UACCESS_H |
4 | 3 | ||
diff --git a/include/asm-sparc64/uctx.h b/include/asm-sparc64/uctx.h index 6eaf16ef23f6..dc937c75ffdd 100644 --- a/include/asm-sparc64/uctx.h +++ b/include/asm-sparc64/uctx.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: uctx.h,v 1.1 1997/06/18 16:51:58 davem Exp $ | 1 | /* |
2 | * uctx.h: Sparc64 {set,get}context() register state layouts. | 2 | * uctx.h: Sparc64 {set,get}context() register state layouts. |
3 | * | 3 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) |
diff --git a/include/asm-sparc64/utrap.h b/include/asm-sparc64/utrap.h index 81b0ebf3736c..e49e5c46ad68 100644 --- a/include/asm-sparc64/utrap.h +++ b/include/asm-sparc64/utrap.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: utrap.h,v 1.1 1997/10/14 16:21:31 jj Exp $ | 1 | /* |
2 | * include/asm-sparc64/utrap.h | 2 | * include/asm-sparc64/utrap.h |
3 | * | 3 | * |
4 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 4 | * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
diff --git a/include/asm-sparc64/watchdog.h b/include/asm-sparc64/watchdog.h index 4d5b03b60e4d..5baf2d3919cf 100644 --- a/include/asm-sparc64/watchdog.h +++ b/include/asm-sparc64/watchdog.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $Id: watchdog.h,v 1.1 2001/01/18 04:47:44 davem Exp $ | 1 | /* |
2 | * | 2 | * |
3 | * watchdog - Driver interface for the hardware watchdog timers | 3 | * watchdog - Driver interface for the hardware watchdog timers |
4 | * present on Sun Microsystems boardsets | 4 | * present on Sun Microsystems boardsets |
diff --git a/include/asm-x86/kvm_x86_emulate.h b/include/asm-x86/kvm_x86_emulate.h index d6337f941c98..b877bbd2d3a7 100644 --- a/include/asm-x86/kvm_x86_emulate.h +++ b/include/asm-x86/kvm_x86_emulate.h | |||
@@ -135,6 +135,7 @@ struct decode_cache { | |||
135 | u8 modrm_rm; | 135 | u8 modrm_rm; |
136 | u8 use_modrm_ea; | 136 | u8 use_modrm_ea; |
137 | unsigned long modrm_ea; | 137 | unsigned long modrm_ea; |
138 | void *modrm_ptr; | ||
138 | unsigned long modrm_val; | 139 | unsigned long modrm_val; |
139 | struct fetch_cache fetch; | 140 | struct fetch_cache fetch; |
140 | }; | 141 | }; |
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h index b381f4a5a0bd..dc936dddf161 100644 --- a/include/asm-x86/page.h +++ b/include/asm-x86/page.h | |||
@@ -10,8 +10,16 @@ | |||
10 | 10 | ||
11 | #ifdef __KERNEL__ | 11 | #ifdef __KERNEL__ |
12 | 12 | ||
13 | #define PHYSICAL_PAGE_MASK (PAGE_MASK & __PHYSICAL_MASK) | 13 | #define __PHYSICAL_MASK ((phys_addr_t)(1ULL << __PHYSICAL_MASK_SHIFT) - 1) |
14 | #define PTE_MASK (_AT(long, PHYSICAL_PAGE_MASK)) | 14 | #define __VIRTUAL_MASK ((1UL << __VIRTUAL_MASK_SHIFT) - 1) |
15 | |||
16 | /* Cast PAGE_MASK to a signed type so that it is sign-extended if | ||
17 | virtual addresses are 32-bits but physical addresses are larger | ||
18 | (ie, 32-bit PAE). */ | ||
19 | #define PHYSICAL_PAGE_MASK (((signed long)PAGE_MASK) & __PHYSICAL_MASK) | ||
20 | |||
21 | /* PTE_MASK extracts the PFN from a (pte|pmd|pud|pgd)val_t */ | ||
22 | #define PTE_MASK ((pteval_t)PHYSICAL_PAGE_MASK) | ||
15 | 23 | ||
16 | #define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) | 24 | #define PMD_PAGE_SIZE (_AC(1, UL) << PMD_SHIFT) |
17 | #define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) | 25 | #define PMD_PAGE_MASK (~(PMD_PAGE_SIZE-1)) |
@@ -24,9 +32,6 @@ | |||
24 | /* to align the pointer to the (next) page boundary */ | 32 | /* to align the pointer to the (next) page boundary */ |
25 | #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) | 33 | #define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK) |
26 | 34 | ||
27 | #define __PHYSICAL_MASK _AT(phys_addr_t, (_AC(1,ULL) << __PHYSICAL_MASK_SHIFT) - 1) | ||
28 | #define __VIRTUAL_MASK ((_AC(1,UL) << __VIRTUAL_MASK_SHIFT) - 1) | ||
29 | |||
30 | #ifndef __ASSEMBLY__ | 35 | #ifndef __ASSEMBLY__ |
31 | #include <linux/types.h> | 36 | #include <linux/types.h> |
32 | #endif | 37 | #endif |
diff --git a/include/asm-x86/pgtable-3level.h b/include/asm-x86/pgtable-3level.h index 8b4a9d44b7f4..c93dbb6c2624 100644 --- a/include/asm-x86/pgtable-3level.h +++ b/include/asm-x86/pgtable-3level.h | |||
@@ -120,9 +120,9 @@ static inline void pud_clear(pud_t *pudp) | |||
120 | write_cr3(pgd); | 120 | write_cr3(pgd); |
121 | } | 121 | } |
122 | 122 | ||
123 | #define pud_page(pud) ((struct page *) __va(pud_val(pud) & PAGE_MASK)) | 123 | #define pud_page(pud) ((struct page *) __va(pud_val(pud) & PTE_MASK)) |
124 | 124 | ||
125 | #define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & PAGE_MASK)) | 125 | #define pud_page_vaddr(pud) ((unsigned long) __va(pud_val(pud) & PTE_MASK)) |
126 | 126 | ||
127 | 127 | ||
128 | /* Find an entry in the second-level page table.. */ | 128 | /* Find an entry in the second-level page table.. */ |
@@ -160,7 +160,7 @@ static inline int pte_none(pte_t pte) | |||
160 | 160 | ||
161 | static inline unsigned long pte_pfn(pte_t pte) | 161 | static inline unsigned long pte_pfn(pte_t pte) |
162 | { | 162 | { |
163 | return (pte_val(pte) & ~_PAGE_NX) >> PAGE_SHIFT; | 163 | return (pte_val(pte) & PTE_MASK) >> PAGE_SHIFT; |
164 | } | 164 | } |
165 | 165 | ||
166 | /* | 166 | /* |
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h index 55c3a0e3a8ce..97c271b2910b 100644 --- a/include/asm-x86/pgtable.h +++ b/include/asm-x86/pgtable.h | |||
@@ -57,6 +57,7 @@ | |||
57 | #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \ | 57 | #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | \ |
58 | _PAGE_DIRTY) | 58 | _PAGE_DIRTY) |
59 | 59 | ||
60 | /* Set of bits not changed in pte_modify */ | ||
60 | #define _PAGE_CHG_MASK (PTE_MASK | _PAGE_PCD | _PAGE_PWT | \ | 61 | #define _PAGE_CHG_MASK (PTE_MASK | _PAGE_PCD | _PAGE_PWT | \ |
61 | _PAGE_ACCESSED | _PAGE_DIRTY) | 62 | _PAGE_ACCESSED | _PAGE_DIRTY) |
62 | 63 | ||
@@ -304,7 +305,7 @@ static inline pgprot_t pgprot_modify(pgprot_t oldprot, pgprot_t newprot) | |||
304 | return __pgprot(preservebits | addbits); | 305 | return __pgprot(preservebits | addbits); |
305 | } | 306 | } |
306 | 307 | ||
307 | #define pte_pgprot(x) __pgprot(pte_val(x) & (0xfff | _PAGE_NX)) | 308 | #define pte_pgprot(x) __pgprot(pte_val(x) & ~PTE_MASK) |
308 | 309 | ||
309 | #define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) | 310 | #define canon_pgprot(p) __pgprot(pgprot_val(p) & __supported_pte_mask) |
310 | 311 | ||
diff --git a/include/asm-x86/pgtable_32.h b/include/asm-x86/pgtable_32.h index d7f0403bbecb..32ca03109a4c 100644 --- a/include/asm-x86/pgtable_32.h +++ b/include/asm-x86/pgtable_32.h | |||
@@ -88,7 +88,7 @@ extern unsigned long pg0[]; | |||
88 | /* To avoid harmful races, pmd_none(x) should check only the lower when PAE */ | 88 | /* To avoid harmful races, pmd_none(x) should check only the lower when PAE */ |
89 | #define pmd_none(x) (!(unsigned long)pmd_val((x))) | 89 | #define pmd_none(x) (!(unsigned long)pmd_val((x))) |
90 | #define pmd_present(x) (pmd_val((x)) & _PAGE_PRESENT) | 90 | #define pmd_present(x) (pmd_val((x)) & _PAGE_PRESENT) |
91 | #define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) | 91 | #define pmd_bad(x) ((pmd_val(x) & (~PTE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE) |
92 | 92 | ||
93 | #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) | 93 | #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT)) |
94 | 94 | ||
@@ -159,7 +159,7 @@ static inline int pud_large(pud_t pud) { return 0; } | |||
159 | #define pmd_page(pmd) (pfn_to_page(pmd_val((pmd)) >> PAGE_SHIFT)) | 159 | #define pmd_page(pmd) (pfn_to_page(pmd_val((pmd)) >> PAGE_SHIFT)) |
160 | 160 | ||
161 | #define pmd_page_vaddr(pmd) \ | 161 | #define pmd_page_vaddr(pmd) \ |
162 | ((unsigned long)__va(pmd_val((pmd)) & PAGE_MASK)) | 162 | ((unsigned long)__va(pmd_val((pmd)) & PTE_MASK)) |
163 | 163 | ||
164 | #if defined(CONFIG_HIGHPTE) | 164 | #if defined(CONFIG_HIGHPTE) |
165 | #define pte_offset_map(dir, address) \ | 165 | #define pte_offset_map(dir, address) \ |
diff --git a/include/asm-x86/pgtable_64.h b/include/asm-x86/pgtable_64.h index efe83dcbd412..1cc50d22d735 100644 --- a/include/asm-x86/pgtable_64.h +++ b/include/asm-x86/pgtable_64.h | |||
@@ -151,19 +151,19 @@ static inline void native_pgd_clear(pgd_t *pgd) | |||
151 | 151 | ||
152 | #ifndef __ASSEMBLY__ | 152 | #ifndef __ASSEMBLY__ |
153 | 153 | ||
154 | static inline unsigned long pgd_bad(pgd_t pgd) | 154 | static inline int pgd_bad(pgd_t pgd) |
155 | { | 155 | { |
156 | return pgd_val(pgd) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); | 156 | return (pgd_val(pgd) & ~(PTE_MASK | _PAGE_USER)) != _KERNPG_TABLE; |
157 | } | 157 | } |
158 | 158 | ||
159 | static inline unsigned long pud_bad(pud_t pud) | 159 | static inline int pud_bad(pud_t pud) |
160 | { | 160 | { |
161 | return pud_val(pud) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); | 161 | return (pud_val(pud) & ~(PTE_MASK | _PAGE_USER)) != _KERNPG_TABLE; |
162 | } | 162 | } |
163 | 163 | ||
164 | static inline unsigned long pmd_bad(pmd_t pmd) | 164 | static inline int pmd_bad(pmd_t pmd) |
165 | { | 165 | { |
166 | return pmd_val(pmd) & ~(PTE_MASK | _KERNPG_TABLE | _PAGE_USER); | 166 | return (pmd_val(pmd) & ~(PTE_MASK | _PAGE_USER)) != _KERNPG_TABLE; |
167 | } | 167 | } |
168 | 168 | ||
169 | #define pte_none(x) (!pte_val((x))) | 169 | #define pte_none(x) (!pte_val((x))) |
diff --git a/include/asm-x86/tlbflush.h b/include/asm-x86/tlbflush.h index 0c0674d94255..35c76ceb9f40 100644 --- a/include/asm-x86/tlbflush.h +++ b/include/asm-x86/tlbflush.h | |||
@@ -22,12 +22,23 @@ static inline void __native_flush_tlb(void) | |||
22 | 22 | ||
23 | static inline void __native_flush_tlb_global(void) | 23 | static inline void __native_flush_tlb_global(void) |
24 | { | 24 | { |
25 | unsigned long cr4 = read_cr4(); | 25 | unsigned long flags; |
26 | unsigned long cr4; | ||
26 | 27 | ||
28 | /* | ||
29 | * Read-modify-write to CR4 - protect it from preemption and | ||
30 | * from interrupts. (Use the raw variant because this code can | ||
31 | * be called from deep inside debugging code.) | ||
32 | */ | ||
33 | raw_local_irq_save(flags); | ||
34 | |||
35 | cr4 = read_cr4(); | ||
27 | /* clear PGE */ | 36 | /* clear PGE */ |
28 | write_cr4(cr4 & ~X86_CR4_PGE); | 37 | write_cr4(cr4 & ~X86_CR4_PGE); |
29 | /* write old PGE again and flush TLBs */ | 38 | /* write old PGE again and flush TLBs */ |
30 | write_cr4(cr4); | 39 | write_cr4(cr4); |
40 | |||
41 | raw_local_irq_restore(flags); | ||
31 | } | 42 | } |
32 | 43 | ||
33 | static inline void __native_flush_tlb_single(unsigned long addr) | 44 | static inline void __native_flush_tlb_single(unsigned long addr) |
diff --git a/include/asm-x86/xen/page.h b/include/asm-x86/xen/page.h index 01799305f02a..baf3a4dce28c 100644 --- a/include/asm-x86/xen/page.h +++ b/include/asm-x86/xen/page.h | |||
@@ -127,7 +127,7 @@ static inline void set_phys_to_machine(unsigned long pfn, unsigned long mfn) | |||
127 | 127 | ||
128 | static inline unsigned long pte_mfn(pte_t pte) | 128 | static inline unsigned long pte_mfn(pte_t pte) |
129 | { | 129 | { |
130 | return (pte.pte & ~_PAGE_NX) >> PAGE_SHIFT; | 130 | return (pte.pte & PTE_MASK) >> PAGE_SHIFT; |
131 | } | 131 | } |
132 | 132 | ||
133 | static inline pte_t mfn_pte(unsigned long page_nr, pgprot_t pgprot) | 133 | static inline pte_t mfn_pte(unsigned long page_nr, pgprot_t pgprot) |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 54a4cfb50ed0..93b98856007a 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -104,7 +104,6 @@ header-y += ixjuser.h | |||
104 | header-y += jffs2.h | 104 | header-y += jffs2.h |
105 | header-y += keyctl.h | 105 | header-y += keyctl.h |
106 | header-y += limits.h | 106 | header-y += limits.h |
107 | header-y += dlm_plock.h | ||
108 | header-y += magic.h | 107 | header-y += magic.h |
109 | header-y += major.h | 108 | header-y += major.h |
110 | header-y += matroxfb.h | 109 | header-y += matroxfb.h |
@@ -189,6 +188,7 @@ unifdef-y += cyclades.h | |||
189 | unifdef-y += dccp.h | 188 | unifdef-y += dccp.h |
190 | unifdef-y += dirent.h | 189 | unifdef-y += dirent.h |
191 | unifdef-y += dlm.h | 190 | unifdef-y += dlm.h |
191 | unifdef-y += dlm_plock.h | ||
192 | unifdef-y += edd.h | 192 | unifdef-y += edd.h |
193 | unifdef-y += elf.h | 193 | unifdef-y += elf.h |
194 | unifdef-y += elfcore.h | 194 | unifdef-y += elfcore.h |
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index b512e48f6d8e..ee0ed48e8348 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h | |||
@@ -99,6 +99,7 @@ extern int copy_strings_kernel(int argc,char ** argv,struct linux_binprm *bprm); | |||
99 | extern void compute_creds(struct linux_binprm *binprm); | 99 | extern void compute_creds(struct linux_binprm *binprm); |
100 | extern int do_coredump(long signr, int exit_code, struct pt_regs * regs); | 100 | extern int do_coredump(long signr, int exit_code, struct pt_regs * regs); |
101 | extern int set_binfmt(struct linux_binfmt *new); | 101 | extern int set_binfmt(struct linux_binfmt *new); |
102 | extern void free_bprm(struct linux_binprm *); | ||
102 | 103 | ||
103 | #endif /* __KERNEL__ */ | 104 | #endif /* __KERNEL__ */ |
104 | #endif /* _LINUX_BINFMTS_H */ | 105 | #endif /* _LINUX_BINFMTS_H */ |
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index cfc3147e5cf9..e3ef903aae88 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
@@ -55,6 +55,7 @@ enum blktrace_act { | |||
55 | enum blktrace_notify { | 55 | enum blktrace_notify { |
56 | __BLK_TN_PROCESS = 0, /* establish pid/name mapping */ | 56 | __BLK_TN_PROCESS = 0, /* establish pid/name mapping */ |
57 | __BLK_TN_TIMESTAMP, /* include system clock */ | 57 | __BLK_TN_TIMESTAMP, /* include system clock */ |
58 | __BLK_TN_MESSAGE, /* Character string message */ | ||
58 | }; | 59 | }; |
59 | 60 | ||
60 | 61 | ||
@@ -79,6 +80,7 @@ enum blktrace_notify { | |||
79 | 80 | ||
80 | #define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY)) | 81 | #define BLK_TN_PROCESS (__BLK_TN_PROCESS | BLK_TC_ACT(BLK_TC_NOTIFY)) |
81 | #define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY)) | 82 | #define BLK_TN_TIMESTAMP (__BLK_TN_TIMESTAMP | BLK_TC_ACT(BLK_TC_NOTIFY)) |
83 | #define BLK_TN_MESSAGE (__BLK_TN_MESSAGE | BLK_TC_ACT(BLK_TC_NOTIFY)) | ||
82 | 84 | ||
83 | #define BLK_IO_TRACE_MAGIC 0x65617400 | 85 | #define BLK_IO_TRACE_MAGIC 0x65617400 |
84 | #define BLK_IO_TRACE_VERSION 0x07 | 86 | #define BLK_IO_TRACE_VERSION 0x07 |
@@ -119,6 +121,7 @@ struct blk_trace { | |||
119 | int trace_state; | 121 | int trace_state; |
120 | struct rchan *rchan; | 122 | struct rchan *rchan; |
121 | unsigned long *sequence; | 123 | unsigned long *sequence; |
124 | unsigned char *msg_data; | ||
122 | u16 act_mask; | 125 | u16 act_mask; |
123 | u64 start_lba; | 126 | u64 start_lba; |
124 | u64 end_lba; | 127 | u64 end_lba; |
@@ -149,7 +152,28 @@ extern void blk_trace_shutdown(struct request_queue *); | |||
149 | extern void __blk_add_trace(struct blk_trace *, sector_t, int, int, u32, int, int, void *); | 152 | extern void __blk_add_trace(struct blk_trace *, sector_t, int, int, u32, int, int, void *); |
150 | extern int do_blk_trace_setup(struct request_queue *q, | 153 | extern int do_blk_trace_setup(struct request_queue *q, |
151 | char *name, dev_t dev, struct blk_user_trace_setup *buts); | 154 | char *name, dev_t dev, struct blk_user_trace_setup *buts); |
155 | extern void __trace_note_message(struct blk_trace *, const char *fmt, ...); | ||
152 | 156 | ||
157 | /** | ||
158 | * blk_add_trace_msg - Add a (simple) message to the blktrace stream | ||
159 | * @q: queue the io is for | ||
160 | * @fmt: format to print message in | ||
161 | * args... Variable argument list for format | ||
162 | * | ||
163 | * Description: | ||
164 | * Records a (simple) message onto the blktrace stream. | ||
165 | * | ||
166 | * NOTE: BLK_TN_MAX_MSG characters are output at most. | ||
167 | * NOTE: Can not use 'static inline' due to presence of var args... | ||
168 | * | ||
169 | **/ | ||
170 | #define blk_add_trace_msg(q, fmt, ...) \ | ||
171 | do { \ | ||
172 | struct blk_trace *bt = (q)->blk_trace; \ | ||
173 | if (unlikely(bt)) \ | ||
174 | __trace_note_message(bt, fmt, ##__VA_ARGS__); \ | ||
175 | } while (0) | ||
176 | #define BLK_TN_MAX_MSG 128 | ||
153 | 177 | ||
154 | /** | 178 | /** |
155 | * blk_add_trace_rq - Add a trace for a request oriented action | 179 | * blk_add_trace_rq - Add a trace for a request oriented action |
@@ -299,6 +323,8 @@ extern int blk_trace_remove(struct request_queue *q); | |||
299 | #define blk_trace_setup(q, name, dev, arg) (-ENOTTY) | 323 | #define blk_trace_setup(q, name, dev, arg) (-ENOTTY) |
300 | #define blk_trace_startstop(q, start) (-ENOTTY) | 324 | #define blk_trace_startstop(q, start) (-ENOTTY) |
301 | #define blk_trace_remove(q) (-ENOTTY) | 325 | #define blk_trace_remove(q) (-ENOTTY) |
326 | #define blk_add_trace_msg(q, fmt, ...) do { } while (0) | ||
327 | |||
302 | #endif /* CONFIG_BLK_DEV_IO_TRACE */ | 328 | #endif /* CONFIG_BLK_DEV_IO_TRACE */ |
303 | #endif /* __KERNEL__ */ | 329 | #endif /* __KERNEL__ */ |
304 | #endif | 330 | #endif |
diff --git a/include/linux/device.h b/include/linux/device.h index 15e9fa3ad3af..6a2d04c011bc 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -385,6 +385,9 @@ static inline const char *dev_name(struct device *dev) | |||
385 | return dev->bus_id; | 385 | return dev->bus_id; |
386 | } | 386 | } |
387 | 387 | ||
388 | extern int dev_set_name(struct device *dev, const char *name, ...) | ||
389 | __attribute__((format(printf, 2, 3))); | ||
390 | |||
388 | #ifdef CONFIG_NUMA | 391 | #ifdef CONFIG_NUMA |
389 | static inline int dev_to_node(struct device *dev) | 392 | static inline int dev_to_node(struct device *dev) |
390 | { | 393 | { |
@@ -449,9 +452,21 @@ extern int __must_check device_reprobe(struct device *dev); | |||
449 | /* | 452 | /* |
450 | * Easy functions for dynamically creating devices on the fly | 453 | * Easy functions for dynamically creating devices on the fly |
451 | */ | 454 | */ |
455 | extern struct device *device_create_vargs(struct class *cls, | ||
456 | struct device *parent, | ||
457 | dev_t devt, | ||
458 | void *drvdata, | ||
459 | const char *fmt, | ||
460 | va_list vargs); | ||
452 | extern struct device *device_create(struct class *cls, struct device *parent, | 461 | extern struct device *device_create(struct class *cls, struct device *parent, |
453 | dev_t devt, const char *fmt, ...) | 462 | dev_t devt, const char *fmt, ...) |
454 | __attribute__((format(printf, 4, 5))); | 463 | __attribute__((format(printf, 4, 5))); |
464 | extern struct device *device_create_drvdata(struct class *cls, | ||
465 | struct device *parent, | ||
466 | dev_t devt, | ||
467 | void *drvdata, | ||
468 | const char *fmt, ...) | ||
469 | __attribute__((format(printf, 5, 6))); | ||
455 | extern void device_destroy(struct class *cls, dev_t devt); | 470 | extern void device_destroy(struct class *cls, dev_t devt); |
456 | 471 | ||
457 | /* | 472 | /* |
diff --git a/include/linux/fdtable.h b/include/linux/fdtable.h index a118f3c0b240..4aab6f12cfab 100644 --- a/include/linux/fdtable.h +++ b/include/linux/fdtable.h | |||
@@ -93,6 +93,7 @@ struct files_struct *get_files_struct(struct task_struct *); | |||
93 | void put_files_struct(struct files_struct *fs); | 93 | void put_files_struct(struct files_struct *fs); |
94 | void reset_files_struct(struct files_struct *); | 94 | void reset_files_struct(struct files_struct *); |
95 | int unshare_files(struct files_struct **); | 95 | int unshare_files(struct files_struct **); |
96 | struct files_struct *dup_fd(struct files_struct *, int *); | ||
96 | 97 | ||
97 | extern struct kmem_cache *files_cachep; | 98 | extern struct kmem_cache *files_cachep; |
98 | 99 | ||
diff --git a/include/linux/gpio.h b/include/linux/gpio.h index 4987a84078ef..98be6c5762b9 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h | |||
@@ -8,6 +8,9 @@ | |||
8 | 8 | ||
9 | #else | 9 | #else |
10 | 10 | ||
11 | #include <linux/types.h> | ||
12 | #include <linux/errno.h> | ||
13 | |||
11 | /* | 14 | /* |
12 | * Some platforms don't support the GPIO programming interface. | 15 | * Some platforms don't support the GPIO programming interface. |
13 | * | 16 | * |
diff --git a/include/linux/hid.h b/include/linux/hid.h index 4ce3b7a979ba..fe56b86f2c67 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
@@ -2,8 +2,6 @@ | |||
2 | #define __HID_H | 2 | #define __HID_H |
3 | 3 | ||
4 | /* | 4 | /* |
5 | * $Id: hid.h,v 1.24 2001/12/27 10:37:41 vojtech Exp $ | ||
6 | * | ||
7 | * Copyright (c) 1999 Andreas Gal | 5 | * Copyright (c) 1999 Andreas Gal |
8 | * Copyright (c) 2000-2001 Vojtech Pavlik | 6 | * Copyright (c) 2000-2001 Vojtech Pavlik |
9 | * Copyright (c) 2006-2007 Jiri Kosina | 7 | * Copyright (c) 2006-2007 Jiri Kosina |
@@ -285,6 +283,7 @@ struct hid_item { | |||
285 | #define HID_QUIRK_HWHEEL_WHEEL_INVERT 0x04000000 | 283 | #define HID_QUIRK_HWHEEL_WHEEL_INVERT 0x04000000 |
286 | #define HID_QUIRK_MICROSOFT_KEYS 0x08000000 | 284 | #define HID_QUIRK_MICROSOFT_KEYS 0x08000000 |
287 | #define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 | 285 | #define HID_QUIRK_FULLSPEED_INTERVAL 0x10000000 |
286 | #define HID_QUIRK_APPLE_NUMLOCK_EMULATION 0x20000000 | ||
288 | 287 | ||
289 | /* | 288 | /* |
290 | * Separate quirks for runtime report descriptor fixup | 289 | * Separate quirks for runtime report descriptor fixup |
diff --git a/include/linux/hiddev.h b/include/linux/hiddev.h index acbdae6d7ae1..a416b904ba90 100644 --- a/include/linux/hiddev.h +++ b/include/linux/hiddev.h | |||
@@ -2,8 +2,6 @@ | |||
2 | #define _HIDDEV_H | 2 | #define _HIDDEV_H |
3 | 3 | ||
4 | /* | 4 | /* |
5 | * $Id: hiddev.h,v 1.2 2001/04/26 11:26:09 vojtech Exp $ | ||
6 | * | ||
7 | * Copyright (c) 1999-2000 Vojtech Pavlik | 5 | * Copyright (c) 1999-2000 Vojtech Pavlik |
8 | * | 6 | * |
9 | * Sponsored by SuSE | 7 | * Sponsored by SuSE |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 6716ec808c5e..fb9af6a0fe9c 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
@@ -155,8 +155,6 @@ struct i2c_driver { | |||
155 | * @driver: device's driver, hence pointer to access routines | 155 | * @driver: device's driver, hence pointer to access routines |
156 | * @dev: Driver model device node for the slave. | 156 | * @dev: Driver model device node for the slave. |
157 | * @irq: indicates the IRQ generated by this device (if any) | 157 | * @irq: indicates the IRQ generated by this device (if any) |
158 | * @driver_name: Identifies new-style driver used with this device; also | ||
159 | * used as the module name for hotplug/coldplug modprobe support. | ||
160 | * @list: list of active/busy clients (DEPRECATED) | 158 | * @list: list of active/busy clients (DEPRECATED) |
161 | * @released: used to synchronize client releases & detaches and references | 159 | * @released: used to synchronize client releases & detaches and references |
162 | * | 160 | * |
@@ -174,7 +172,6 @@ struct i2c_client { | |||
174 | struct i2c_driver *driver; /* and our access routines */ | 172 | struct i2c_driver *driver; /* and our access routines */ |
175 | struct device dev; /* the device structure */ | 173 | struct device dev; /* the device structure */ |
176 | int irq; /* irq issued by device (or -1) */ | 174 | int irq; /* irq issued by device (or -1) */ |
177 | char driver_name[KOBJ_NAME_LEN]; | ||
178 | struct list_head list; /* DEPRECATED */ | 175 | struct list_head list; /* DEPRECATED */ |
179 | struct completion released; | 176 | struct completion released; |
180 | }; | 177 | }; |
@@ -200,8 +197,7 @@ static inline void i2c_set_clientdata (struct i2c_client *dev, void *data) | |||
200 | 197 | ||
201 | /** | 198 | /** |
202 | * struct i2c_board_info - template for device creation | 199 | * struct i2c_board_info - template for device creation |
203 | * @driver_name: identifies the driver to be bound to the device | 200 | * @type: chip type, to initialize i2c_client.name |
204 | * @type: optional chip type information, to initialize i2c_client.name | ||
205 | * @flags: to initialize i2c_client.flags | 201 | * @flags: to initialize i2c_client.flags |
206 | * @addr: stored in i2c_client.addr | 202 | * @addr: stored in i2c_client.addr |
207 | * @platform_data: stored in i2c_client.dev.platform_data | 203 | * @platform_data: stored in i2c_client.dev.platform_data |
@@ -220,7 +216,6 @@ static inline void i2c_set_clientdata (struct i2c_client *dev, void *data) | |||
220 | * with the adapter already known. | 216 | * with the adapter already known. |
221 | */ | 217 | */ |
222 | struct i2c_board_info { | 218 | struct i2c_board_info { |
223 | char driver_name[KOBJ_NAME_LEN]; | ||
224 | char type[I2C_NAME_SIZE]; | 219 | char type[I2C_NAME_SIZE]; |
225 | unsigned short flags; | 220 | unsigned short flags; |
226 | unsigned short addr; | 221 | unsigned short addr; |
diff --git a/include/linux/i2c/pcf857x.h b/include/linux/i2c/pcf857x.h index ba8ea6e16476..0767a2a6b2f1 100644 --- a/include/linux/i2c/pcf857x.h +++ b/include/linux/i2c/pcf857x.h | |||
@@ -12,8 +12,7 @@ | |||
12 | * @context: optional parameter passed to setup() and teardown() | 12 | * @context: optional parameter passed to setup() and teardown() |
13 | * | 13 | * |
14 | * In addition to the I2C_BOARD_INFO() state appropriate to each chip, | 14 | * In addition to the I2C_BOARD_INFO() state appropriate to each chip, |
15 | * the i2c_board_info used with the pcf875x driver must provide the | 15 | * the i2c_board_info used with the pcf875x driver must provide its |
16 | * chip "type" ("pcf8574", "pcf8574a", "pcf8575", "pcf8575c") and its | ||
17 | * platform_data (pointer to one of these structures) with at least | 16 | * platform_data (pointer to one of these structures) with at least |
18 | * the gpio_base value initialized. | 17 | * the gpio_base value initialized. |
19 | * | 18 | * |
diff --git a/include/linux/in_route.h b/include/linux/in_route.h index 61f25c30a2a0..b261b8c915f0 100644 --- a/include/linux/in_route.h +++ b/include/linux/in_route.h | |||
@@ -10,19 +10,19 @@ | |||
10 | #define RTCF_NOPMTUDISC RTM_F_NOPMTUDISC | 10 | #define RTCF_NOPMTUDISC RTM_F_NOPMTUDISC |
11 | 11 | ||
12 | #define RTCF_NOTIFY 0x00010000 | 12 | #define RTCF_NOTIFY 0x00010000 |
13 | #define RTCF_DIRECTDST 0x00020000 | 13 | #define RTCF_DIRECTDST 0x00020000 /* unused */ |
14 | #define RTCF_REDIRECTED 0x00040000 | 14 | #define RTCF_REDIRECTED 0x00040000 |
15 | #define RTCF_TPROXY 0x00080000 | 15 | #define RTCF_TPROXY 0x00080000 /* unused */ |
16 | 16 | ||
17 | #define RTCF_FAST 0x00200000 | 17 | #define RTCF_FAST 0x00200000 /* unused */ |
18 | #define RTCF_MASQ 0x00400000 | 18 | #define RTCF_MASQ 0x00400000 /* unused */ |
19 | #define RTCF_SNAT 0x00800000 | 19 | #define RTCF_SNAT 0x00800000 /* unused */ |
20 | #define RTCF_DOREDIRECT 0x01000000 | 20 | #define RTCF_DOREDIRECT 0x01000000 |
21 | #define RTCF_DIRECTSRC 0x04000000 | 21 | #define RTCF_DIRECTSRC 0x04000000 |
22 | #define RTCF_DNAT 0x08000000 | 22 | #define RTCF_DNAT 0x08000000 |
23 | #define RTCF_BROADCAST 0x10000000 | 23 | #define RTCF_BROADCAST 0x10000000 |
24 | #define RTCF_MULTICAST 0x20000000 | 24 | #define RTCF_MULTICAST 0x20000000 |
25 | #define RTCF_REJECT 0x40000000 | 25 | #define RTCF_REJECT 0x40000000 /* unused */ |
26 | #define RTCF_LOCAL 0x80000000 | 26 | #define RTCF_LOCAL 0x80000000 |
27 | 27 | ||
28 | #define RTCF_NAT (RTCF_DNAT|RTCF_SNAT) | 28 | #define RTCF_NAT (RTCF_DNAT|RTCF_SNAT) |
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index 7009b0cdd06f..c6f51ad52d5b 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
@@ -117,7 +117,6 @@ struct in_ifaddr | |||
117 | __be32 ifa_address; | 117 | __be32 ifa_address; |
118 | __be32 ifa_mask; | 118 | __be32 ifa_mask; |
119 | __be32 ifa_broadcast; | 119 | __be32 ifa_broadcast; |
120 | __be32 ifa_anycast; | ||
121 | unsigned char ifa_scope; | 120 | unsigned char ifa_scope; |
122 | unsigned char ifa_flags; | 121 | unsigned char ifa_flags; |
123 | unsigned char ifa_prefixlen; | 122 | unsigned char ifa_prefixlen; |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index b24c2875aa05..9927a88674a3 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef _LINUX__INIT_TASK_H | 1 | #ifndef _LINUX__INIT_TASK_H |
2 | #define _LINUX__INIT_TASK_H | 2 | #define _LINUX__INIT_TASK_H |
3 | 3 | ||
4 | #include <linux/fdtable.h> | ||
5 | #include <linux/rcupdate.h> | 4 | #include <linux/rcupdate.h> |
6 | #include <linux/irqflags.h> | 5 | #include <linux/irqflags.h> |
7 | #include <linux/utsname.h> | 6 | #include <linux/utsname.h> |
@@ -12,27 +11,7 @@ | |||
12 | #include <linux/securebits.h> | 11 | #include <linux/securebits.h> |
13 | #include <net/net_namespace.h> | 12 | #include <net/net_namespace.h> |
14 | 13 | ||
15 | #define INIT_FDTABLE \ | 14 | extern struct files_struct init_files; |
16 | { \ | ||
17 | .max_fds = NR_OPEN_DEFAULT, \ | ||
18 | .fd = &init_files.fd_array[0], \ | ||
19 | .close_on_exec = (fd_set *)&init_files.close_on_exec_init, \ | ||
20 | .open_fds = (fd_set *)&init_files.open_fds_init, \ | ||
21 | .rcu = RCU_HEAD_INIT, \ | ||
22 | .next = NULL, \ | ||
23 | } | ||
24 | |||
25 | #define INIT_FILES \ | ||
26 | { \ | ||
27 | .count = ATOMIC_INIT(1), \ | ||
28 | .fdt = &init_files.fdtab, \ | ||
29 | .fdtab = INIT_FDTABLE, \ | ||
30 | .file_lock = __SPIN_LOCK_UNLOCKED(init_task.file_lock), \ | ||
31 | .next_fd = 0, \ | ||
32 | .close_on_exec_init = { { 0, } }, \ | ||
33 | .open_fds_init = { { 0, } }, \ | ||
34 | .fd_array = { NULL, } \ | ||
35 | } | ||
36 | 15 | ||
37 | #define INIT_KIOCTX(name, which_mm) \ | 16 | #define INIT_KIOCTX(name, which_mm) \ |
38 | { \ | 17 | { \ |
diff --git a/include/linux/input.h b/include/linux/input.h index 28a094fcfe20..e075c4b762fb 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -637,7 +637,9 @@ struct input_absinfo { | |||
637 | #define SW_LID 0x00 /* set = lid shut */ | 637 | #define SW_LID 0x00 /* set = lid shut */ |
638 | #define SW_TABLET_MODE 0x01 /* set = tablet mode */ | 638 | #define SW_TABLET_MODE 0x01 /* set = tablet mode */ |
639 | #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ | 639 | #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */ |
640 | #define SW_RADIO 0x03 /* set = radio enabled */ | 640 | #define SW_RFKILL_ALL 0x03 /* rfkill master switch, type "any" |
641 | set = radio enabled */ | ||
642 | #define SW_RADIO SW_RFKILL_ALL /* deprecated */ | ||
641 | #define SW_MAX 0x0f | 643 | #define SW_MAX 0x0f |
642 | #define SW_CNT (SW_MAX+1) | 644 | #define SW_CNT (SW_MAX+1) |
643 | 645 | ||
diff --git a/include/linux/kallsyms.h b/include/linux/kallsyms.h index 82de2fb62cb7..00c1801099fa 100644 --- a/include/linux/kallsyms.h +++ b/include/linux/kallsyms.h | |||
@@ -83,16 +83,6 @@ __attribute__((format(printf,1,2))); | |||
83 | static inline void __check_printsym_format(const char *fmt, ...) | 83 | static inline void __check_printsym_format(const char *fmt, ...) |
84 | { | 84 | { |
85 | } | 85 | } |
86 | /* ia64 and ppc64 use function descriptors, which contain the real address */ | ||
87 | #if defined(CONFIG_IA64) || defined(CONFIG_PPC64) | ||
88 | #define print_fn_descriptor_symbol(fmt, addr) \ | ||
89 | do { \ | ||
90 | unsigned long *__faddr = (unsigned long*) addr; \ | ||
91 | print_symbol(fmt, __faddr[0]); \ | ||
92 | } while (0) | ||
93 | #else | ||
94 | #define print_fn_descriptor_symbol(fmt, addr) print_symbol(fmt, addr) | ||
95 | #endif | ||
96 | 86 | ||
97 | static inline void print_symbol(const char *fmt, unsigned long addr) | 87 | static inline void print_symbol(const char *fmt, unsigned long addr) |
98 | { | 88 | { |
@@ -101,6 +91,20 @@ static inline void print_symbol(const char *fmt, unsigned long addr) | |||
101 | __builtin_extract_return_addr((void *)addr)); | 91 | __builtin_extract_return_addr((void *)addr)); |
102 | } | 92 | } |
103 | 93 | ||
94 | /* | ||
95 | * Pretty-print a function pointer. | ||
96 | * | ||
97 | * ia64 and ppc64 function pointers are really function descriptors, | ||
98 | * which contain a pointer the real address. | ||
99 | */ | ||
100 | static inline void print_fn_descriptor_symbol(const char *fmt, void *addr) | ||
101 | { | ||
102 | #if defined(CONFIG_IA64) || defined(CONFIG_PPC64) | ||
103 | addr = *(void **)addr; | ||
104 | #endif | ||
105 | print_symbol(fmt, (unsigned long)addr); | ||
106 | } | ||
107 | |||
104 | #ifndef CONFIG_64BIT | 108 | #ifndef CONFIG_64BIT |
105 | #define print_ip_sym(ip) \ | 109 | #define print_ip_sym(ip) \ |
106 | do { \ | 110 | do { \ |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 0f17643e0a6e..4a92fbafce9d 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -341,7 +341,7 @@ enum { | |||
341 | ATA_EH_PMP_TRIES = 5, | 341 | ATA_EH_PMP_TRIES = 5, |
342 | ATA_EH_PMP_LINK_TRIES = 3, | 342 | ATA_EH_PMP_LINK_TRIES = 3, |
343 | 343 | ||
344 | SATA_PMP_SCR_TIMEOUT = 250, | 344 | SATA_PMP_RW_TIMEOUT = 3000, /* PMP read/write timeout */ |
345 | 345 | ||
346 | /* Horkage types. May be set by libata or controller on drives | 346 | /* Horkage types. May be set by libata or controller on drives |
347 | (some horkage may be drive/controller pair dependant */ | 347 | (some horkage may be drive/controller pair dependant */ |
@@ -351,7 +351,7 @@ enum { | |||
351 | ATA_HORKAGE_NONCQ = (1 << 2), /* Don't use NCQ */ | 351 | ATA_HORKAGE_NONCQ = (1 << 2), /* Don't use NCQ */ |
352 | ATA_HORKAGE_MAX_SEC_128 = (1 << 3), /* Limit max sects to 128 */ | 352 | ATA_HORKAGE_MAX_SEC_128 = (1 << 3), /* Limit max sects to 128 */ |
353 | ATA_HORKAGE_BROKEN_HPA = (1 << 4), /* Broken HPA */ | 353 | ATA_HORKAGE_BROKEN_HPA = (1 << 4), /* Broken HPA */ |
354 | ATA_HORKAGE_SKIP_PM = (1 << 5), /* Skip PM operations */ | 354 | ATA_HORKAGE_DISABLE = (1 << 5), /* Disable it */ |
355 | ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */ | 355 | ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */ |
356 | ATA_HORKAGE_IPM = (1 << 7), /* Link PM problems */ | 356 | ATA_HORKAGE_IPM = (1 << 7), /* Link PM problems */ |
357 | ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */ | 357 | ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */ |
@@ -821,8 +821,6 @@ struct ata_timing { | |||
821 | unsigned short udma; /* t2CYCTYP/2 */ | 821 | unsigned short udma; /* t2CYCTYP/2 */ |
822 | }; | 822 | }; |
823 | 823 | ||
824 | #define FIT(v, vmin, vmax) max_t(short, min_t(short, v, vmax), vmin) | ||
825 | |||
826 | /* | 824 | /* |
827 | * Core layer - drivers/ata/libata-core.c | 825 | * Core layer - drivers/ata/libata-core.c |
828 | */ | 826 | */ |
diff --git a/include/linux/mman.h b/include/linux/mman.h index 87920a0852a3..dab8892e6ff1 100644 --- a/include/linux/mman.h +++ b/include/linux/mman.h | |||
@@ -17,14 +17,14 @@ | |||
17 | 17 | ||
18 | extern int sysctl_overcommit_memory; | 18 | extern int sysctl_overcommit_memory; |
19 | extern int sysctl_overcommit_ratio; | 19 | extern int sysctl_overcommit_ratio; |
20 | extern atomic_t vm_committed_space; | 20 | extern atomic_long_t vm_committed_space; |
21 | 21 | ||
22 | #ifdef CONFIG_SMP | 22 | #ifdef CONFIG_SMP |
23 | extern void vm_acct_memory(long pages); | 23 | extern void vm_acct_memory(long pages); |
24 | #else | 24 | #else |
25 | static inline void vm_acct_memory(long pages) | 25 | static inline void vm_acct_memory(long pages) |
26 | { | 26 | { |
27 | atomic_add(pages, &vm_committed_space); | 27 | atomic_long_add(pages, &vm_committed_space); |
28 | } | 28 | } |
29 | #endif | 29 | #endif |
30 | 30 | ||
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index c463cd8a15a4..443bc7cd8c62 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
@@ -703,7 +703,7 @@ extern struct pglist_data *next_online_pgdat(struct pglist_data *pgdat); | |||
703 | extern struct zone *next_zone(struct zone *zone); | 703 | extern struct zone *next_zone(struct zone *zone); |
704 | 704 | ||
705 | /** | 705 | /** |
706 | * for_each_pgdat - helper macro to iterate over all nodes | 706 | * for_each_online_pgdat - helper macro to iterate over all online nodes |
707 | * @pgdat - pointer to a pg_data_t variable | 707 | * @pgdat - pointer to a pg_data_t variable |
708 | */ | 708 | */ |
709 | #define for_each_online_pgdat(pgdat) \ | 709 | #define for_each_online_pgdat(pgdat) \ |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index d73eceaa7afb..69b2342d5ebb 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
@@ -375,7 +375,8 @@ struct virtio_device_id { | |||
375 | 375 | ||
376 | struct i2c_device_id { | 376 | struct i2c_device_id { |
377 | char name[I2C_NAME_SIZE]; | 377 | char name[I2C_NAME_SIZE]; |
378 | kernel_ulong_t driver_data; /* Data private to the driver */ | 378 | kernel_ulong_t driver_data /* Data private to the driver */ |
379 | __attribute__((aligned(sizeof(kernel_ulong_t)))); | ||
379 | }; | 380 | }; |
380 | 381 | ||
381 | 382 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 72c038560e7d..1bbb346066dd 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1761,6 +1761,7 @@ | |||
1761 | 1761 | ||
1762 | #define PCI_VENDOR_ID_INTASHIELD 0x135a | 1762 | #define PCI_VENDOR_ID_INTASHIELD 0x135a |
1763 | #define PCI_DEVICE_ID_INTASHIELD_IS200 0x0d80 | 1763 | #define PCI_DEVICE_ID_INTASHIELD_IS200 0x0d80 |
1764 | #define PCI_DEVICE_ID_INTASHIELD_IS400 0x0dc0 | ||
1764 | 1765 | ||
1765 | #define PCI_VENDOR_ID_QUATECH 0x135C | 1766 | #define PCI_VENDOR_ID_QUATECH 0x135C |
1766 | #define PCI_DEVICE_ID_QUATECH_QSC100 0x0010 | 1767 | #define PCI_DEVICE_ID_QUATECH_QSC100 0x0010 |
@@ -2384,6 +2385,9 @@ | |||
2384 | #define PCI_DEVICE_ID_INTEL_ICH10_4 0x3a30 | 2385 | #define PCI_DEVICE_ID_INTEL_ICH10_4 0x3a30 |
2385 | #define PCI_DEVICE_ID_INTEL_ICH10_5 0x3a60 | 2386 | #define PCI_DEVICE_ID_INTEL_ICH10_5 0x3a60 |
2386 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f | 2387 | #define PCI_DEVICE_ID_INTEL_IOAT_SNB 0x402f |
2388 | #define PCI_DEVICE_ID_INTEL_5400_ERR 0x4030 | ||
2389 | #define PCI_DEVICE_ID_INTEL_5400_FBD0 0x4035 | ||
2390 | #define PCI_DEVICE_ID_INTEL_5400_FBD1 0x4036 | ||
2387 | #define PCI_DEVICE_ID_INTEL_IOAT_SCNB 0x65ff | 2391 | #define PCI_DEVICE_ID_INTEL_IOAT_SCNB 0x65ff |
2388 | #define PCI_DEVICE_ID_INTEL_TOLAPAI_0 0x5031 | 2392 | #define PCI_DEVICE_ID_INTEL_TOLAPAI_0 0x5031 |
2389 | #define PCI_DEVICE_ID_INTEL_TOLAPAI_1 0x5032 | 2393 | #define PCI_DEVICE_ID_INTEL_TOLAPAI_1 0x5032 |
diff --git a/include/linux/raid/bitmap.h b/include/linux/raid/bitmap.h index 47fbcba11850..78bfdea24a8e 100644 --- a/include/linux/raid/bitmap.h +++ b/include/linux/raid/bitmap.h | |||
@@ -262,7 +262,6 @@ int bitmap_create(mddev_t *mddev); | |||
262 | void bitmap_flush(mddev_t *mddev); | 262 | void bitmap_flush(mddev_t *mddev); |
263 | void bitmap_destroy(mddev_t *mddev); | 263 | void bitmap_destroy(mddev_t *mddev); |
264 | 264 | ||
265 | char *file_path(struct file *file, char *buf, int count); | ||
266 | void bitmap_print_sb(struct bitmap *bitmap); | 265 | void bitmap_print_sb(struct bitmap *bitmap); |
267 | void bitmap_update_sb(struct bitmap *bitmap); | 266 | void bitmap_update_sb(struct bitmap *bitmap); |
268 | 267 | ||
diff --git a/include/linux/raid/md.h b/include/linux/raid/md.h index 81a1a02d4566..b7386ae9d288 100644 --- a/include/linux/raid/md.h +++ b/include/linux/raid/md.h | |||
@@ -72,6 +72,8 @@ | |||
72 | */ | 72 | */ |
73 | #define MD_PATCHLEVEL_VERSION 3 | 73 | #define MD_PATCHLEVEL_VERSION 3 |
74 | 74 | ||
75 | extern int mdp_major; | ||
76 | |||
75 | extern int register_md_personality (struct mdk_personality *p); | 77 | extern int register_md_personality (struct mdk_personality *p); |
76 | extern int unregister_md_personality (struct mdk_personality *p); | 78 | extern int unregister_md_personality (struct mdk_personality *p); |
77 | extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev), | 79 | extern mdk_thread_t * md_register_thread (void (*run) (mddev_t *mddev), |
diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h index 812ffa590cff..3dea9f545c8f 100644 --- a/include/linux/raid/md_k.h +++ b/include/linux/raid/md_k.h | |||
@@ -180,13 +180,15 @@ struct mddev_s | |||
180 | int sync_speed_min; | 180 | int sync_speed_min; |
181 | int sync_speed_max; | 181 | int sync_speed_max; |
182 | 182 | ||
183 | /* resync even though the same disks are shared among md-devices */ | ||
184 | int parallel_resync; | ||
185 | |||
183 | int ok_start_degraded; | 186 | int ok_start_degraded; |
184 | /* recovery/resync flags | 187 | /* recovery/resync flags |
185 | * NEEDED: we might need to start a resync/recover | 188 | * NEEDED: we might need to start a resync/recover |
186 | * RUNNING: a thread is running, or about to be started | 189 | * RUNNING: a thread is running, or about to be started |
187 | * SYNC: actually doing a resync, not a recovery | 190 | * SYNC: actually doing a resync, not a recovery |
188 | * ERR: and IO error was detected - abort the resync/recovery | 191 | * INTR: resync needs to be aborted for some reason |
189 | * INTR: someone requested a (clean) early abort. | ||
190 | * DONE: thread is done and is waiting to be reaped | 192 | * DONE: thread is done and is waiting to be reaped |
191 | * REQUEST: user-space has requested a sync (used with SYNC) | 193 | * REQUEST: user-space has requested a sync (used with SYNC) |
192 | * CHECK: user-space request for for check-only, no repair | 194 | * CHECK: user-space request for for check-only, no repair |
@@ -196,7 +198,6 @@ struct mddev_s | |||
196 | */ | 198 | */ |
197 | #define MD_RECOVERY_RUNNING 0 | 199 | #define MD_RECOVERY_RUNNING 0 |
198 | #define MD_RECOVERY_SYNC 1 | 200 | #define MD_RECOVERY_SYNC 1 |
199 | #define MD_RECOVERY_ERR 2 | ||
200 | #define MD_RECOVERY_INTR 3 | 201 | #define MD_RECOVERY_INTR 3 |
201 | #define MD_RECOVERY_DONE 4 | 202 | #define MD_RECOVERY_DONE 4 |
202 | #define MD_RECOVERY_NEEDED 5 | 203 | #define MD_RECOVERY_NEEDED 5 |
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index 44c81c744538..a2aec2c0cfb5 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h | |||
@@ -267,10 +267,10 @@ enum rtattr_type_t | |||
267 | RTA_PREFSRC, | 267 | RTA_PREFSRC, |
268 | RTA_METRICS, | 268 | RTA_METRICS, |
269 | RTA_MULTIPATH, | 269 | RTA_MULTIPATH, |
270 | RTA_PROTOINFO, | 270 | RTA_PROTOINFO, /* no longer used */ |
271 | RTA_FLOW, | 271 | RTA_FLOW, |
272 | RTA_CACHEINFO, | 272 | RTA_CACHEINFO, |
273 | RTA_SESSION, | 273 | RTA_SESSION, /* no longer used */ |
274 | RTA_MP_ALGO, /* no longer used */ | 274 | RTA_MP_ALGO, /* no longer used */ |
275 | RTA_TABLE, | 275 | RTA_TABLE, |
276 | __RTA_MAX | 276 | __RTA_MAX |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 5395a6176f4b..ae0be3c62375 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -766,7 +766,6 @@ struct sched_domain { | |||
766 | struct sched_domain *child; /* bottom domain must be null terminated */ | 766 | struct sched_domain *child; /* bottom domain must be null terminated */ |
767 | struct sched_group *groups; /* the balancing groups of the domain */ | 767 | struct sched_group *groups; /* the balancing groups of the domain */ |
768 | cpumask_t span; /* span of all CPUs in this domain */ | 768 | cpumask_t span; /* span of all CPUs in this domain */ |
769 | int first_cpu; /* cache of the first cpu in this domain */ | ||
770 | unsigned long min_interval; /* Minimum balance interval ms */ | 769 | unsigned long min_interval; /* Minimum balance interval ms */ |
771 | unsigned long max_interval; /* Maximum balance interval ms */ | 770 | unsigned long max_interval; /* Maximum balance interval ms */ |
772 | unsigned int busy_factor; /* less balancing by factor if busy */ | 771 | unsigned int busy_factor; /* less balancing by factor if busy */ |
@@ -1848,7 +1847,9 @@ extern void exit_thread(void); | |||
1848 | extern void exit_files(struct task_struct *); | 1847 | extern void exit_files(struct task_struct *); |
1849 | extern void __cleanup_signal(struct signal_struct *); | 1848 | extern void __cleanup_signal(struct signal_struct *); |
1850 | extern void __cleanup_sighand(struct sighand_struct *); | 1849 | extern void __cleanup_sighand(struct sighand_struct *); |
1850 | |||
1851 | extern void exit_itimers(struct signal_struct *); | 1851 | extern void exit_itimers(struct signal_struct *); |
1852 | extern void flush_itimer_signals(void); | ||
1852 | 1853 | ||
1853 | extern NORET_TYPE void do_group_exit(int); | 1854 | extern NORET_TYPE void do_group_exit(int); |
1854 | 1855 | ||
diff --git a/include/linux/sm501.h b/include/linux/sm501.h index bca134544700..95c1c39ba445 100644 --- a/include/linux/sm501.h +++ b/include/linux/sm501.h | |||
@@ -71,8 +71,8 @@ extern unsigned long sm501_gpio_get(struct device *dev, | |||
71 | #define SM501FB_FLAG_DISABLE_AT_EXIT (1<<1) | 71 | #define SM501FB_FLAG_DISABLE_AT_EXIT (1<<1) |
72 | #define SM501FB_FLAG_USE_HWCURSOR (1<<2) | 72 | #define SM501FB_FLAG_USE_HWCURSOR (1<<2) |
73 | #define SM501FB_FLAG_USE_HWACCEL (1<<3) | 73 | #define SM501FB_FLAG_USE_HWACCEL (1<<3) |
74 | #define SM501FB_FLAG_PANEL_USE_FPEN (1<<4) | 74 | #define SM501FB_FLAG_PANEL_NO_FPEN (1<<4) |
75 | #define SM501FB_FLAG_PANEL_USE_VBIASEN (1<<5) | 75 | #define SM501FB_FLAG_PANEL_NO_VBIASEN (1<<5) |
76 | 76 | ||
77 | struct sm501_platdata_fbsub { | 77 | struct sm501_platdata_fbsub { |
78 | struct fb_videomode *def_mode; | 78 | struct fb_videomode *def_mode; |
diff --git a/include/linux/spi/mmc_spi.h b/include/linux/spi/mmc_spi.h index e9bbe3ebd721..d5ca78b93a3b 100644 --- a/include/linux/spi/mmc_spi.h +++ b/include/linux/spi/mmc_spi.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __LINUX_SPI_MMC_SPI_H | 1 | #ifndef __LINUX_SPI_MMC_SPI_H |
2 | #define __LINUX_SPI_MMC_SPI_H | 2 | #define __LINUX_SPI_MMC_SPI_H |
3 | 3 | ||
4 | #include <linux/interrupt.h> | ||
5 | |||
4 | struct device; | 6 | struct device; |
5 | struct mmc_host; | 7 | struct mmc_host; |
6 | 8 | ||
diff --git a/include/linux/ssb/ssb_driver_gige.h b/include/linux/ssb/ssb_driver_gige.h index 01fbdf5fef22..942e38736901 100644 --- a/include/linux/ssb/ssb_driver_gige.h +++ b/include/linux/ssb/ssb_driver_gige.h | |||
@@ -100,7 +100,7 @@ extern char * nvram_get(const char *name); | |||
100 | /* Get the device MAC address */ | 100 | /* Get the device MAC address */ |
101 | static inline void ssb_gige_get_macaddr(struct pci_dev *pdev, u8 *macaddr) | 101 | static inline void ssb_gige_get_macaddr(struct pci_dev *pdev, u8 *macaddr) |
102 | { | 102 | { |
103 | #ifdef CONFIG_BCM947XX | 103 | #ifdef CONFIG_BCM47XX |
104 | char *res = nvram_get("et0macaddr"); | 104 | char *res = nvram_get("et0macaddr"); |
105 | if (res) | 105 | if (res) |
106 | memcpy(macaddr, res, 6); | 106 | memcpy(macaddr, res, 6); |
diff --git a/include/linux/sunrpc/svc_rdma.h b/include/linux/sunrpc/svc_rdma.h index c11bbcc081f9..05eb4664d0dd 100644 --- a/include/linux/sunrpc/svc_rdma.h +++ b/include/linux/sunrpc/svc_rdma.h | |||
@@ -71,7 +71,8 @@ extern atomic_t rdma_stat_sq_prod; | |||
71 | * completes. | 71 | * completes. |
72 | */ | 72 | */ |
73 | struct svc_rdma_op_ctxt { | 73 | struct svc_rdma_op_ctxt { |
74 | struct svc_rdma_op_ctxt *next; | 74 | struct svc_rdma_op_ctxt *read_hdr; |
75 | struct list_head free_list; | ||
75 | struct xdr_buf arg; | 76 | struct xdr_buf arg; |
76 | struct list_head dto_q; | 77 | struct list_head dto_q; |
77 | enum ib_wr_opcode wr_op; | 78 | enum ib_wr_opcode wr_op; |
@@ -85,7 +86,6 @@ struct svc_rdma_op_ctxt { | |||
85 | struct page *pages[RPCSVC_MAXPAGES]; | 86 | struct page *pages[RPCSVC_MAXPAGES]; |
86 | }; | 87 | }; |
87 | 88 | ||
88 | #define RDMACTXT_F_READ_DONE 1 | ||
89 | #define RDMACTXT_F_LAST_CTXT 2 | 89 | #define RDMACTXT_F_LAST_CTXT 2 |
90 | 90 | ||
91 | struct svcxprt_rdma { | 91 | struct svcxprt_rdma { |
@@ -104,7 +104,8 @@ struct svcxprt_rdma { | |||
104 | 104 | ||
105 | struct ib_pd *sc_pd; | 105 | struct ib_pd *sc_pd; |
106 | 106 | ||
107 | struct svc_rdma_op_ctxt *sc_ctxt_head; | 107 | atomic_t sc_ctxt_used; |
108 | struct list_head sc_ctxt_free; | ||
108 | int sc_ctxt_cnt; | 109 | int sc_ctxt_cnt; |
109 | int sc_ctxt_bump; | 110 | int sc_ctxt_bump; |
110 | int sc_ctxt_max; | 111 | int sc_ctxt_max; |
@@ -123,6 +124,7 @@ struct svcxprt_rdma { | |||
123 | struct list_head sc_dto_q; /* DTO tasklet I/O pending Q */ | 124 | struct list_head sc_dto_q; /* DTO tasklet I/O pending Q */ |
124 | struct list_head sc_read_complete_q; | 125 | struct list_head sc_read_complete_q; |
125 | spinlock_t sc_read_complete_lock; | 126 | spinlock_t sc_read_complete_lock; |
127 | struct work_struct sc_work; | ||
126 | }; | 128 | }; |
127 | /* sc_flags */ | 129 | /* sc_flags */ |
128 | #define RDMAXPRT_RQ_PENDING 1 | 130 | #define RDMAXPRT_RQ_PENDING 1 |
@@ -164,8 +166,8 @@ extern int svc_rdma_sendto(struct svc_rqst *); | |||
164 | 166 | ||
165 | /* svc_rdma_transport.c */ | 167 | /* svc_rdma_transport.c */ |
166 | extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *); | 168 | extern int svc_rdma_send(struct svcxprt_rdma *, struct ib_send_wr *); |
167 | extern int svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *, | 169 | extern void svc_rdma_send_error(struct svcxprt_rdma *, struct rpcrdma_msg *, |
168 | enum rpcrdma_errcode); | 170 | enum rpcrdma_errcode); |
169 | struct page *svc_rdma_get_page(void); | 171 | struct page *svc_rdma_get_page(void); |
170 | extern int svc_rdma_post_recv(struct svcxprt_rdma *); | 172 | extern int svc_rdma_post_recv(struct svcxprt_rdma *); |
171 | extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *); | 173 | extern int svc_rdma_create_listen(struct svc_serv *, int, struct sockaddr *); |
diff --git a/include/linux/topology.h b/include/linux/topology.h index 4bb7074a2c3a..24f3d2282e11 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -166,7 +166,9 @@ void arch_update_cpu_topology(void); | |||
166 | .busy_idx = 3, \ | 166 | .busy_idx = 3, \ |
167 | .idle_idx = 3, \ | 167 | .idle_idx = 3, \ |
168 | .flags = SD_LOAD_BALANCE \ | 168 | .flags = SD_LOAD_BALANCE \ |
169 | | SD_SERIALIZE, \ | 169 | | SD_BALANCE_NEWIDLE \ |
170 | | SD_WAKE_AFFINE \ | ||
171 | | SD_SERIALIZE, \ | ||
170 | .last_balance = jiffies, \ | 172 | .last_balance = jiffies, \ |
171 | .balance_interval = 64, \ | 173 | .balance_interval = 64, \ |
172 | } | 174 | } |
diff --git a/include/linux/types.h b/include/linux/types.h index 9dc2346627b4..d4a9ce6e2760 100644 --- a/include/linux/types.h +++ b/include/linux/types.h | |||
@@ -197,8 +197,6 @@ typedef u64 resource_size_t; | |||
197 | typedef u32 resource_size_t; | 197 | typedef u32 resource_size_t; |
198 | #endif | 198 | #endif |
199 | 199 | ||
200 | #endif /* __KERNEL__ */ | ||
201 | |||
202 | struct ustat { | 200 | struct ustat { |
203 | __kernel_daddr_t f_tfree; | 201 | __kernel_daddr_t f_tfree; |
204 | __kernel_ino_t f_tinode; | 202 | __kernel_ino_t f_tinode; |
@@ -206,4 +204,6 @@ struct ustat { | |||
206 | char f_fpack[6]; | 204 | char f_fpack[6]; |
207 | }; | 205 | }; |
208 | 206 | ||
207 | #endif /* __KERNEL__ */ | ||
208 | |||
209 | #endif /* _LINUX_TYPES_H */ | 209 | #endif /* _LINUX_TYPES_H */ |
diff --git a/include/linux/usb/cdc.h b/include/linux/usb/cdc.h index 71e52f2f6a38..ca228bb94218 100644 --- a/include/linux/usb/cdc.h +++ b/include/linux/usb/cdc.h | |||
@@ -130,6 +130,15 @@ struct usb_cdc_ether_desc { | |||
130 | __u8 bNumberPowerFilters; | 130 | __u8 bNumberPowerFilters; |
131 | } __attribute__ ((packed)); | 131 | } __attribute__ ((packed)); |
132 | 132 | ||
133 | /* "Telephone Control Model Functional Descriptor" from CDC WMC spec 6.3..3 */ | ||
134 | struct usb_cdc_dmm_desc { | ||
135 | __u8 bFunctionLength; | ||
136 | __u8 bDescriptorType; | ||
137 | __u8 bDescriptorSubtype; | ||
138 | __u16 bcdVersion; | ||
139 | __le16 wMaxCommand; | ||
140 | } __attribute__ ((packed)); | ||
141 | |||
133 | /* "MDLM Functional Descriptor" from CDC WMC spec 6.7.2.3 */ | 142 | /* "MDLM Functional Descriptor" from CDC WMC spec 6.7.2.3 */ |
134 | struct usb_cdc_mdlm_desc { | 143 | struct usb_cdc_mdlm_desc { |
135 | __u8 bLength; | 144 | __u8 bLength; |
diff --git a/include/linux/virtio_blk.h b/include/linux/virtio_blk.h index d4695a3356d0..5f79a5f9de79 100644 --- a/include/linux/virtio_blk.h +++ b/include/linux/virtio_blk.h | |||
@@ -10,18 +10,19 @@ | |||
10 | #define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */ | 10 | #define VIRTIO_BLK_F_SIZE_MAX 1 /* Indicates maximum segment size */ |
11 | #define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */ | 11 | #define VIRTIO_BLK_F_SEG_MAX 2 /* Indicates maximum # of segments */ |
12 | #define VIRTIO_BLK_F_GEOMETRY 4 /* Legacy geometry available */ | 12 | #define VIRTIO_BLK_F_GEOMETRY 4 /* Legacy geometry available */ |
13 | #define VIRTIO_BLK_F_RO 5 /* Disk is read-only */ | ||
13 | 14 | ||
14 | struct virtio_blk_config | 15 | struct virtio_blk_config |
15 | { | 16 | { |
16 | /* The capacity (in 512-byte sectors). */ | 17 | /* The capacity (in 512-byte sectors). */ |
17 | __le64 capacity; | 18 | __u64 capacity; |
18 | /* The maximum segment size (if VIRTIO_BLK_F_SIZE_MAX) */ | 19 | /* The maximum segment size (if VIRTIO_BLK_F_SIZE_MAX) */ |
19 | __le32 size_max; | 20 | __u32 size_max; |
20 | /* The maximum number of segments (if VIRTIO_BLK_F_SEG_MAX) */ | 21 | /* The maximum number of segments (if VIRTIO_BLK_F_SEG_MAX) */ |
21 | __le32 seg_max; | 22 | __u32 seg_max; |
22 | /* geometry the device (if VIRTIO_BLK_F_GEOMETRY) */ | 23 | /* geometry the device (if VIRTIO_BLK_F_GEOMETRY) */ |
23 | struct virtio_blk_geometry { | 24 | struct virtio_blk_geometry { |
24 | __le16 cylinders; | 25 | __u16 cylinders; |
25 | __u8 heads; | 26 | __u8 heads; |
26 | __u8 sectors; | 27 | __u8 sectors; |
27 | } geometry; | 28 | } geometry; |
diff --git a/include/linux/virtio_config.h b/include/linux/virtio_config.h index 50db245c81ad..f364bbf63c34 100644 --- a/include/linux/virtio_config.h +++ b/include/linux/virtio_config.h | |||
@@ -15,6 +15,10 @@ | |||
15 | /* We've given up on this device. */ | 15 | /* We've given up on this device. */ |
16 | #define VIRTIO_CONFIG_S_FAILED 0x80 | 16 | #define VIRTIO_CONFIG_S_FAILED 0x80 |
17 | 17 | ||
18 | /* Do we get callbacks when the ring is completely used, even if we've | ||
19 | * suppressed them? */ | ||
20 | #define VIRTIO_F_NOTIFY_ON_EMPTY 24 | ||
21 | |||
18 | #ifdef __KERNEL__ | 22 | #ifdef __KERNEL__ |
19 | #include <linux/virtio.h> | 23 | #include <linux/virtio.h> |
20 | 24 | ||
@@ -99,7 +103,7 @@ static inline bool virtio_has_feature(const struct virtio_device *vdev, | |||
99 | * The return value is -ENOENT if the feature doesn't exist. Otherwise | 103 | * The return value is -ENOENT if the feature doesn't exist. Otherwise |
100 | * the config value is copied into whatever is pointed to by v. */ | 104 | * the config value is copied into whatever is pointed to by v. */ |
101 | #define virtio_config_val(vdev, fbit, offset, v) \ | 105 | #define virtio_config_val(vdev, fbit, offset, v) \ |
102 | virtio_config_buf((vdev), (fbit), (offset), (v), sizeof(v)) | 106 | virtio_config_buf((vdev), (fbit), (offset), (v), sizeof(*v)) |
103 | 107 | ||
104 | static inline int virtio_config_buf(struct virtio_device *vdev, | 108 | static inline int virtio_config_buf(struct virtio_device *vdev, |
105 | unsigned int fbit, | 109 | unsigned int fbit, |
diff --git a/include/linux/virtio_rng.h b/include/linux/virtio_rng.h new file mode 100644 index 000000000000..331afb6c9f62 --- /dev/null +++ b/include/linux/virtio_rng.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef _LINUX_VIRTIO_RNG_H | ||
2 | #define _LINUX_VIRTIO_RNG_H | ||
3 | #include <linux/virtio_config.h> | ||
4 | |||
5 | /* The ID for virtio_rng */ | ||
6 | #define VIRTIO_ID_RNG 4 | ||
7 | |||
8 | #endif /* _LINUX_VIRTIO_RNG_H */ | ||
diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h index 4d13732e9cf0..6f69968eab24 100644 --- a/include/linux/wm97xx.h +++ b/include/linux/wm97xx.h | |||
@@ -100,6 +100,7 @@ | |||
100 | #define WM9713_ADCSEL_Y 0x0004 /* Y measurement */ | 100 | #define WM9713_ADCSEL_Y 0x0004 /* Y measurement */ |
101 | #define WM9713_ADCSEL_PRES 0x0008 /* Pressure measurement */ | 101 | #define WM9713_ADCSEL_PRES 0x0008 /* Pressure measurement */ |
102 | #define WM9713_COO 0x0001 /* enable coordinate mode */ | 102 | #define WM9713_COO 0x0001 /* enable coordinate mode */ |
103 | #define WM9713_45W 0x1000 /* set for 5 wire panel */ | ||
103 | #define WM9713_PDEN 0x0800 /* measure only when pen down */ | 104 | #define WM9713_PDEN 0x0800 /* measure only when pen down */ |
104 | #define WM9713_ADCSEL_MASK 0x00fe /* ADC selection mask */ | 105 | #define WM9713_ADCSEL_MASK 0x00fe /* ADC selection mask */ |
105 | #define WM9713_WAIT 0x0200 /* coordinate wait */ | 106 | #define WM9713_WAIT 0x0200 /* coordinate wait */ |
diff --git a/include/media/videobuf-core.h b/include/media/videobuf-core.h index 5b39a22533fe..874f1340d049 100644 --- a/include/media/videobuf-core.h +++ b/include/media/videobuf-core.h | |||
@@ -237,6 +237,9 @@ unsigned int videobuf_poll_stream(struct file *file, | |||
237 | int videobuf_mmap_setup(struct videobuf_queue *q, | 237 | int videobuf_mmap_setup(struct videobuf_queue *q, |
238 | unsigned int bcount, unsigned int bsize, | 238 | unsigned int bcount, unsigned int bsize, |
239 | enum v4l2_memory memory); | 239 | enum v4l2_memory memory); |
240 | int __videobuf_mmap_setup(struct videobuf_queue *q, | ||
241 | unsigned int bcount, unsigned int bsize, | ||
242 | enum v4l2_memory memory); | ||
240 | int videobuf_mmap_free(struct videobuf_queue *q); | 243 | int videobuf_mmap_free(struct videobuf_queue *q); |
241 | int videobuf_mmap_mapper(struct videobuf_queue *q, | 244 | int videobuf_mmap_mapper(struct videobuf_queue *q, |
242 | struct vm_area_struct *vma); | 245 | struct vm_area_struct *vma); |
diff --git a/include/net/addrconf.h b/include/net/addrconf.h index 0a2f0372df31..bbd3d583c6e6 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h | |||
@@ -94,6 +94,28 @@ extern void addrconf_join_solict(struct net_device *dev, | |||
94 | extern void addrconf_leave_solict(struct inet6_dev *idev, | 94 | extern void addrconf_leave_solict(struct inet6_dev *idev, |
95 | struct in6_addr *addr); | 95 | struct in6_addr *addr); |
96 | 96 | ||
97 | static inline unsigned long addrconf_timeout_fixup(u32 timeout, | ||
98 | unsigned unit) | ||
99 | { | ||
100 | if (timeout == 0xffffffff) | ||
101 | return ~0UL; | ||
102 | |||
103 | /* | ||
104 | * Avoid arithmetic overflow. | ||
105 | * Assuming unit is constant and non-zero, this "if" statement | ||
106 | * will go away on 64bit archs. | ||
107 | */ | ||
108 | if (0xfffffffe > LONG_MAX / unit && timeout > LONG_MAX / unit) | ||
109 | return LONG_MAX / unit; | ||
110 | |||
111 | return timeout; | ||
112 | } | ||
113 | |||
114 | static inline int addrconf_finite_timeout(unsigned long timeout) | ||
115 | { | ||
116 | return ~timeout; | ||
117 | } | ||
118 | |||
97 | /* | 119 | /* |
98 | * IPv6 Address Label subsystem (addrlabel.c) | 120 | * IPv6 Address Label subsystem (addrlabel.c) |
99 | */ | 121 | */ |
diff --git a/include/net/genetlink.h b/include/net/genetlink.h index decdda546829..747c255d1df0 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h | |||
@@ -162,9 +162,9 @@ static inline int genlmsg_end(struct sk_buff *skb, void *hdr) | |||
162 | * @skb: socket buffer the message is stored in | 162 | * @skb: socket buffer the message is stored in |
163 | * @hdr: generic netlink message header | 163 | * @hdr: generic netlink message header |
164 | */ | 164 | */ |
165 | static inline int genlmsg_cancel(struct sk_buff *skb, void *hdr) | 165 | static inline void genlmsg_cancel(struct sk_buff *skb, void *hdr) |
166 | { | 166 | { |
167 | return nlmsg_cancel(skb, hdr - GENL_HDRLEN - NLMSG_HDRLEN); | 167 | nlmsg_cancel(skb, hdr - GENL_HDRLEN - NLMSG_HDRLEN); |
168 | } | 168 | } |
169 | 169 | ||
170 | /** | 170 | /** |
diff --git a/include/net/netlink.h b/include/net/netlink.h index 112dcdf7e34e..dfc3701dfcc3 100644 --- a/include/net/netlink.h +++ b/include/net/netlink.h | |||
@@ -556,14 +556,12 @@ static inline void *nlmsg_get_pos(struct sk_buff *skb) | |||
556 | * @skb: socket buffer the message is stored in | 556 | * @skb: socket buffer the message is stored in |
557 | * @mark: mark to trim to | 557 | * @mark: mark to trim to |
558 | * | 558 | * |
559 | * Trims the message to the provided mark. Returns -1. | 559 | * Trims the message to the provided mark. |
560 | */ | 560 | */ |
561 | static inline int nlmsg_trim(struct sk_buff *skb, const void *mark) | 561 | static inline void nlmsg_trim(struct sk_buff *skb, const void *mark) |
562 | { | 562 | { |
563 | if (mark) | 563 | if (mark) |
564 | skb_trim(skb, (unsigned char *) mark - skb->data); | 564 | skb_trim(skb, (unsigned char *) mark - skb->data); |
565 | |||
566 | return -1; | ||
567 | } | 565 | } |
568 | 566 | ||
569 | /** | 567 | /** |
@@ -572,11 +570,11 @@ static inline int nlmsg_trim(struct sk_buff *skb, const void *mark) | |||
572 | * @nlh: netlink message header | 570 | * @nlh: netlink message header |
573 | * | 571 | * |
574 | * Removes the complete netlink message including all | 572 | * Removes the complete netlink message including all |
575 | * attributes from the socket buffer again. Returns -1. | 573 | * attributes from the socket buffer again. |
576 | */ | 574 | */ |
577 | static inline int nlmsg_cancel(struct sk_buff *skb, struct nlmsghdr *nlh) | 575 | static inline void nlmsg_cancel(struct sk_buff *skb, struct nlmsghdr *nlh) |
578 | { | 576 | { |
579 | return nlmsg_trim(skb, nlh); | 577 | nlmsg_trim(skb, nlh); |
580 | } | 578 | } |
581 | 579 | ||
582 | /** | 580 | /** |
@@ -775,7 +773,7 @@ static inline int __nla_parse_nested_compat(struct nlattr *tb[], int maxtype, | |||
775 | int nested_len = nla_len(nla) - NLA_ALIGN(len); | 773 | int nested_len = nla_len(nla) - NLA_ALIGN(len); |
776 | 774 | ||
777 | if (nested_len < 0) | 775 | if (nested_len < 0) |
778 | return -1; | 776 | return -EINVAL; |
779 | if (nested_len >= nla_attr_size(0)) | 777 | if (nested_len >= nla_attr_size(0)) |
780 | return nla_parse(tb, maxtype, nla_data(nla) + NLA_ALIGN(len), | 778 | return nla_parse(tb, maxtype, nla_data(nla) + NLA_ALIGN(len), |
781 | nested_len, policy); | 779 | nested_len, policy); |
@@ -1080,11 +1078,11 @@ static inline int nla_nest_compat_end(struct sk_buff *skb, struct nlattr *start) | |||
1080 | * @start: container attribute | 1078 | * @start: container attribute |
1081 | * | 1079 | * |
1082 | * Removes the container attribute and including all nested | 1080 | * Removes the container attribute and including all nested |
1083 | * attributes. Returns -1. | 1081 | * attributes. Returns -EMSGSIZE |
1084 | */ | 1082 | */ |
1085 | static inline int nla_nest_cancel(struct sk_buff *skb, struct nlattr *start) | 1083 | static inline void nla_nest_cancel(struct sk_buff *skb, struct nlattr *start) |
1086 | { | 1084 | { |
1087 | return nlmsg_trim(skb, start); | 1085 | nlmsg_trim(skb, start); |
1088 | } | 1086 | } |
1089 | 1087 | ||
1090 | /** | 1088 | /** |
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index e11151702bee..fbc27ac8a09e 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
@@ -549,7 +549,8 @@ struct sctp_af { | |||
549 | struct dst_entry *(*get_dst) (struct sctp_association *asoc, | 549 | struct dst_entry *(*get_dst) (struct sctp_association *asoc, |
550 | union sctp_addr *daddr, | 550 | union sctp_addr *daddr, |
551 | union sctp_addr *saddr); | 551 | union sctp_addr *saddr); |
552 | void (*get_saddr) (struct sctp_association *asoc, | 552 | void (*get_saddr) (struct sctp_sock *sk, |
553 | struct sctp_association *asoc, | ||
553 | struct dst_entry *dst, | 554 | struct dst_entry *dst, |
554 | union sctp_addr *daddr, | 555 | union sctp_addr *daddr, |
555 | union sctp_addr *saddr); | 556 | union sctp_addr *saddr); |
@@ -588,6 +589,7 @@ struct sctp_af { | |||
588 | int (*is_ce) (const struct sk_buff *sk); | 589 | int (*is_ce) (const struct sk_buff *sk); |
589 | void (*seq_dump_addr)(struct seq_file *seq, | 590 | void (*seq_dump_addr)(struct seq_file *seq, |
590 | union sctp_addr *addr); | 591 | union sctp_addr *addr); |
592 | void (*ecn_capable)(struct sock *sk); | ||
591 | __u16 net_header_len; | 593 | __u16 net_header_len; |
592 | int sockaddr_len; | 594 | int sockaddr_len; |
593 | sa_family_t sa_family; | 595 | sa_family_t sa_family; |
@@ -902,7 +904,10 @@ struct sctp_transport { | |||
902 | * calculation completes (i.e. the DATA chunk | 904 | * calculation completes (i.e. the DATA chunk |
903 | * is SACK'd) clear this flag. | 905 | * is SACK'd) clear this flag. |
904 | */ | 906 | */ |
905 | int rto_pending; | 907 | __u8 rto_pending; |
908 | |||
909 | /* Flag to track the current fast recovery state */ | ||
910 | __u8 fast_recovery; | ||
906 | 911 | ||
907 | /* | 912 | /* |
908 | * These are the congestion stats. | 913 | * These are the congestion stats. |
@@ -921,6 +926,9 @@ struct sctp_transport { | |||
921 | /* Data that has been sent, but not acknowledged. */ | 926 | /* Data that has been sent, but not acknowledged. */ |
922 | __u32 flight_size; | 927 | __u32 flight_size; |
923 | 928 | ||
929 | /* TSN marking the fast recovery exit point */ | ||
930 | __u32 fast_recovery_exit; | ||
931 | |||
924 | /* Destination */ | 932 | /* Destination */ |
925 | struct dst_entry *dst; | 933 | struct dst_entry *dst; |
926 | /* Source address. */ | 934 | /* Source address. */ |
@@ -1046,7 +1054,7 @@ void sctp_transport_route(struct sctp_transport *, union sctp_addr *, | |||
1046 | struct sctp_sock *); | 1054 | struct sctp_sock *); |
1047 | void sctp_transport_pmtu(struct sctp_transport *); | 1055 | void sctp_transport_pmtu(struct sctp_transport *); |
1048 | void sctp_transport_free(struct sctp_transport *); | 1056 | void sctp_transport_free(struct sctp_transport *); |
1049 | void sctp_transport_reset_timers(struct sctp_transport *); | 1057 | void sctp_transport_reset_timers(struct sctp_transport *, int); |
1050 | void sctp_transport_hold(struct sctp_transport *); | 1058 | void sctp_transport_hold(struct sctp_transport *); |
1051 | void sctp_transport_put(struct sctp_transport *); | 1059 | void sctp_transport_put(struct sctp_transport *); |
1052 | void sctp_transport_update_rto(struct sctp_transport *, __u32); | 1060 | void sctp_transport_update_rto(struct sctp_transport *, __u32); |
@@ -1136,6 +1144,9 @@ struct sctp_outq { | |||
1136 | /* How many unackd bytes do we have in-flight? */ | 1144 | /* How many unackd bytes do we have in-flight? */ |
1137 | __u32 outstanding_bytes; | 1145 | __u32 outstanding_bytes; |
1138 | 1146 | ||
1147 | /* Are we doing fast-rtx on this queue */ | ||
1148 | char fast_rtx; | ||
1149 | |||
1139 | /* Corked? */ | 1150 | /* Corked? */ |
1140 | char cork; | 1151 | char cork; |
1141 | 1152 | ||
diff --git a/include/net/transp_v6.h b/include/net/transp_v6.h index 27394e0447d8..112934a3288d 100644 --- a/include/net/transp_v6.h +++ b/include/net/transp_v6.h | |||
@@ -40,7 +40,8 @@ extern int datagram_recv_ctl(struct sock *sk, | |||
40 | struct msghdr *msg, | 40 | struct msghdr *msg, |
41 | struct sk_buff *skb); | 41 | struct sk_buff *skb); |
42 | 42 | ||
43 | extern int datagram_send_ctl(struct msghdr *msg, | 43 | extern int datagram_send_ctl(struct net *net, |
44 | struct msghdr *msg, | ||
44 | struct flowi *fl, | 45 | struct flowi *fl, |
45 | struct ipv6_txoptions *opt, | 46 | struct ipv6_txoptions *opt, |
46 | int *hlimit, int *tclass); | 47 | int *hlimit, int *tclass); |
diff --git a/include/net/udp.h b/include/net/udp.h index 3e55a99b0ba3..ccce83707046 100644 --- a/include/net/udp.h +++ b/include/net/udp.h | |||
@@ -135,6 +135,7 @@ extern void udp_err(struct sk_buff *, u32); | |||
135 | 135 | ||
136 | extern int udp_sendmsg(struct kiocb *iocb, struct sock *sk, | 136 | extern int udp_sendmsg(struct kiocb *iocb, struct sock *sk, |
137 | struct msghdr *msg, size_t len); | 137 | struct msghdr *msg, size_t len); |
138 | extern void udp_flush_pending_frames(struct sock *sk); | ||
138 | 139 | ||
139 | extern int udp_rcv(struct sk_buff *skb); | 140 | extern int udp_rcv(struct sk_buff *skb); |
140 | extern int udp_ioctl(struct sock *sk, int cmd, unsigned long arg); | 141 | extern int udp_ioctl(struct sock *sk, int cmd, unsigned long arg); |
diff --git a/init/Kconfig b/init/Kconfig index 6135d07f31ec..6199d1120900 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -13,6 +13,7 @@ config DEFCONFIG_LIST | |||
13 | default "/lib/modules/$UNAME_RELEASE/.config" | 13 | default "/lib/modules/$UNAME_RELEASE/.config" |
14 | default "/etc/kernel-config" | 14 | default "/etc/kernel-config" |
15 | default "/boot/config-$UNAME_RELEASE" | 15 | default "/boot/config-$UNAME_RELEASE" |
16 | default "$ARCH_DEFCONFIG" | ||
16 | default "arch/$ARCH/defconfig" | 17 | default "arch/$ARCH/defconfig" |
17 | 18 | ||
18 | menu "General setup" | 19 | menu "General setup" |
diff --git a/init/do_mounts_md.c b/init/do_mounts_md.c index 7473b0c59d4d..693d24694a6c 100644 --- a/init/do_mounts_md.c +++ b/init/do_mounts_md.c | |||
@@ -24,7 +24,6 @@ static struct { | |||
24 | 24 | ||
25 | static int md_setup_ents __initdata; | 25 | static int md_setup_ents __initdata; |
26 | 26 | ||
27 | extern int mdp_major; | ||
28 | /* | 27 | /* |
29 | * Parse the command-line parameters given our kernel, but do not | 28 | * Parse the command-line parameters given our kernel, but do not |
30 | * actually try to invoke the MD device now; that is handled by | 29 | * actually try to invoke the MD device now; that is handled by |
diff --git a/init/main.c b/init/main.c index f406fefa626c..f7fb20021d48 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -693,55 +693,57 @@ static int __init initcall_debug_setup(char *str) | |||
693 | } | 693 | } |
694 | __setup("initcall_debug", initcall_debug_setup); | 694 | __setup("initcall_debug", initcall_debug_setup); |
695 | 695 | ||
696 | extern initcall_t __initcall_start[], __initcall_end[]; | 696 | static void __init do_one_initcall(initcall_t fn) |
697 | |||
698 | static void __init do_initcalls(void) | ||
699 | { | 697 | { |
700 | initcall_t *call; | ||
701 | int count = preempt_count(); | 698 | int count = preempt_count(); |
699 | ktime_t t0, t1, delta; | ||
700 | char msgbuf[64]; | ||
701 | int result; | ||
702 | 702 | ||
703 | for (call = __initcall_start; call < __initcall_end; call++) { | 703 | if (initcall_debug) { |
704 | ktime_t t0, t1, delta; | 704 | print_fn_descriptor_symbol("calling %s\n", fn); |
705 | char msgbuf[40]; | 705 | t0 = ktime_get(); |
706 | int result; | 706 | } |
707 | |||
708 | if (initcall_debug) { | ||
709 | print_fn_descriptor_symbol("calling %s()\n", | ||
710 | (unsigned long) *call); | ||
711 | t0 = ktime_get(); | ||
712 | } | ||
713 | 707 | ||
714 | result = (*call)(); | 708 | result = fn(); |
715 | 709 | ||
716 | if (initcall_debug) { | 710 | if (initcall_debug) { |
717 | t1 = ktime_get(); | 711 | t1 = ktime_get(); |
718 | delta = ktime_sub(t1, t0); | 712 | delta = ktime_sub(t1, t0); |
719 | 713 | ||
720 | print_fn_descriptor_symbol("initcall %s()", | 714 | print_fn_descriptor_symbol("initcall %s", fn); |
721 | (unsigned long) *call); | 715 | printk(" returned %d after %Ld msecs\n", result, |
722 | printk(" returned %d after %Ld msecs\n", result, | 716 | (unsigned long long) delta.tv64 >> 20); |
723 | (unsigned long long) delta.tv64 >> 20); | 717 | } |
724 | } | ||
725 | 718 | ||
726 | msgbuf[0] = 0; | 719 | msgbuf[0] = 0; |
727 | 720 | ||
728 | if (result && result != -ENODEV && initcall_debug) | 721 | if (result && result != -ENODEV && initcall_debug) |
729 | sprintf(msgbuf, "error code %d ", result); | 722 | sprintf(msgbuf, "error code %d ", result); |
730 | 723 | ||
731 | if (preempt_count() != count) { | 724 | if (preempt_count() != count) { |
732 | strncat(msgbuf, "preemption imbalance ", sizeof(msgbuf)); | 725 | strlcat(msgbuf, "preemption imbalance ", sizeof(msgbuf)); |
733 | preempt_count() = count; | 726 | preempt_count() = count; |
734 | } | ||
735 | if (irqs_disabled()) { | ||
736 | strncat(msgbuf, "disabled interrupts ", sizeof(msgbuf)); | ||
737 | local_irq_enable(); | ||
738 | } | ||
739 | if (msgbuf[0]) { | ||
740 | print_fn_descriptor_symbol(KERN_WARNING "initcall %s()", | ||
741 | (unsigned long) *call); | ||
742 | printk(" returned with %s\n", msgbuf); | ||
743 | } | ||
744 | } | 727 | } |
728 | if (irqs_disabled()) { | ||
729 | strlcat(msgbuf, "disabled interrupts ", sizeof(msgbuf)); | ||
730 | local_irq_enable(); | ||
731 | } | ||
732 | if (msgbuf[0]) { | ||
733 | print_fn_descriptor_symbol(KERN_WARNING "initcall %s", fn); | ||
734 | printk(" returned with %s\n", msgbuf); | ||
735 | } | ||
736 | } | ||
737 | |||
738 | |||
739 | extern initcall_t __initcall_start[], __initcall_end[]; | ||
740 | |||
741 | static void __init do_initcalls(void) | ||
742 | { | ||
743 | initcall_t *call; | ||
744 | |||
745 | for (call = __initcall_start; call < __initcall_end; call++) | ||
746 | do_one_initcall(*call); | ||
745 | 747 | ||
746 | /* Make sure there is no pending stuff from the initcall sequence */ | 748 | /* Make sure there is no pending stuff from the initcall sequence */ |
747 | flush_scheduled_work(); | 749 | flush_scheduled_work(); |
diff --git a/kernel/audit.c b/kernel/audit.c index b7d3709cc452..e8692a5748c2 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -572,16 +572,17 @@ void audit_send_reply(int pid, int seq, int type, int done, int multi, | |||
572 | 572 | ||
573 | skb = audit_make_reply(pid, seq, type, done, multi, payload, size); | 573 | skb = audit_make_reply(pid, seq, type, done, multi, payload, size); |
574 | if (!skb) | 574 | if (!skb) |
575 | return; | 575 | goto out; |
576 | 576 | ||
577 | reply->pid = pid; | 577 | reply->pid = pid; |
578 | reply->skb = skb; | 578 | reply->skb = skb; |
579 | 579 | ||
580 | tsk = kthread_run(audit_send_reply_thread, reply, "audit_send_reply"); | 580 | tsk = kthread_run(audit_send_reply_thread, reply, "audit_send_reply"); |
581 | if (IS_ERR(tsk)) { | 581 | if (!IS_ERR(tsk)) |
582 | kfree(reply); | 582 | return; |
583 | kfree_skb(skb); | 583 | kfree_skb(skb); |
584 | } | 584 | out: |
585 | kfree(reply); | ||
585 | } | 586 | } |
586 | 587 | ||
587 | /* | 588 | /* |
diff --git a/kernel/audit_tree.c b/kernel/audit_tree.c index 9ef5e0aacc3c..f7921a2ecf16 100644 --- a/kernel/audit_tree.c +++ b/kernel/audit_tree.c | |||
@@ -172,10 +172,9 @@ static void insert_hash(struct audit_chunk *chunk) | |||
172 | struct audit_chunk *audit_tree_lookup(const struct inode *inode) | 172 | struct audit_chunk *audit_tree_lookup(const struct inode *inode) |
173 | { | 173 | { |
174 | struct list_head *list = chunk_hash(inode); | 174 | struct list_head *list = chunk_hash(inode); |
175 | struct list_head *pos; | 175 | struct audit_chunk *p; |
176 | 176 | ||
177 | list_for_each_rcu(pos, list) { | 177 | list_for_each_entry_rcu(p, list, hash) { |
178 | struct audit_chunk *p = container_of(pos, struct audit_chunk, hash); | ||
179 | if (p->watch.inode == inode) { | 178 | if (p->watch.inode == inode) { |
180 | get_inotify_watch(&p->watch); | 179 | get_inotify_watch(&p->watch); |
181 | return p; | 180 | return p; |
diff --git a/kernel/cgroup.c b/kernel/cgroup.c index fbc6fc8949b4..15ac0e1e4f4d 100644 --- a/kernel/cgroup.c +++ b/kernel/cgroup.c | |||
@@ -2903,7 +2903,7 @@ int cgroup_clone(struct task_struct *tsk, struct cgroup_subsys *subsys) | |||
2903 | cg = tsk->cgroups; | 2903 | cg = tsk->cgroups; |
2904 | parent = task_cgroup(tsk, subsys->subsys_id); | 2904 | parent = task_cgroup(tsk, subsys->subsys_id); |
2905 | 2905 | ||
2906 | snprintf(nodename, MAX_CGROUP_TYPE_NAMELEN, "node_%d", tsk->pid); | 2906 | snprintf(nodename, MAX_CGROUP_TYPE_NAMELEN, "%d", tsk->pid); |
2907 | 2907 | ||
2908 | /* Pin the hierarchy */ | 2908 | /* Pin the hierarchy */ |
2909 | atomic_inc(&parent->root->sb->s_active); | 2909 | atomic_inc(&parent->root->sb->s_active); |
diff --git a/kernel/exit.c b/kernel/exit.c index 1510f78a0ffa..8f6185e69b69 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
@@ -126,6 +126,12 @@ static void __exit_signal(struct task_struct *tsk) | |||
126 | 126 | ||
127 | __unhash_process(tsk); | 127 | __unhash_process(tsk); |
128 | 128 | ||
129 | /* | ||
130 | * Do this under ->siglock, we can race with another thread | ||
131 | * doing sigqueue_free() if we have SIGQUEUE_PREALLOC signals. | ||
132 | */ | ||
133 | flush_sigqueue(&tsk->pending); | ||
134 | |||
129 | tsk->signal = NULL; | 135 | tsk->signal = NULL; |
130 | tsk->sighand = NULL; | 136 | tsk->sighand = NULL; |
131 | spin_unlock(&sighand->siglock); | 137 | spin_unlock(&sighand->siglock); |
@@ -133,7 +139,6 @@ static void __exit_signal(struct task_struct *tsk) | |||
133 | 139 | ||
134 | __cleanup_sighand(sighand); | 140 | __cleanup_sighand(sighand); |
135 | clear_tsk_thread_flag(tsk,TIF_SIGPENDING); | 141 | clear_tsk_thread_flag(tsk,TIF_SIGPENDING); |
136 | flush_sigqueue(&tsk->pending); | ||
137 | if (sig) { | 142 | if (sig) { |
138 | flush_sigqueue(&sig->shared_pending); | 143 | flush_sigqueue(&sig->shared_pending); |
139 | taskstats_tgid_free(sig); | 144 | taskstats_tgid_free(sig); |
diff --git a/kernel/fork.c b/kernel/fork.c index 933e60ebccae..19908b26cf80 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -660,136 +660,6 @@ static int copy_fs(unsigned long clone_flags, struct task_struct *tsk) | |||
660 | return 0; | 660 | return 0; |
661 | } | 661 | } |
662 | 662 | ||
663 | static int count_open_files(struct fdtable *fdt) | ||
664 | { | ||
665 | int size = fdt->max_fds; | ||
666 | int i; | ||
667 | |||
668 | /* Find the last open fd */ | ||
669 | for (i = size/(8*sizeof(long)); i > 0; ) { | ||
670 | if (fdt->open_fds->fds_bits[--i]) | ||
671 | break; | ||
672 | } | ||
673 | i = (i+1) * 8 * sizeof(long); | ||
674 | return i; | ||
675 | } | ||
676 | |||
677 | static struct files_struct *alloc_files(void) | ||
678 | { | ||
679 | struct files_struct *newf; | ||
680 | struct fdtable *fdt; | ||
681 | |||
682 | newf = kmem_cache_alloc(files_cachep, GFP_KERNEL); | ||
683 | if (!newf) | ||
684 | goto out; | ||
685 | |||
686 | atomic_set(&newf->count, 1); | ||
687 | |||
688 | spin_lock_init(&newf->file_lock); | ||
689 | newf->next_fd = 0; | ||
690 | fdt = &newf->fdtab; | ||
691 | fdt->max_fds = NR_OPEN_DEFAULT; | ||
692 | fdt->close_on_exec = (fd_set *)&newf->close_on_exec_init; | ||
693 | fdt->open_fds = (fd_set *)&newf->open_fds_init; | ||
694 | fdt->fd = &newf->fd_array[0]; | ||
695 | INIT_RCU_HEAD(&fdt->rcu); | ||
696 | fdt->next = NULL; | ||
697 | rcu_assign_pointer(newf->fdt, fdt); | ||
698 | out: | ||
699 | return newf; | ||
700 | } | ||
701 | |||
702 | /* | ||
703 | * Allocate a new files structure and copy contents from the | ||
704 | * passed in files structure. | ||
705 | * errorp will be valid only when the returned files_struct is NULL. | ||
706 | */ | ||
707 | static struct files_struct *dup_fd(struct files_struct *oldf, int *errorp) | ||
708 | { | ||
709 | struct files_struct *newf; | ||
710 | struct file **old_fds, **new_fds; | ||
711 | int open_files, size, i; | ||
712 | struct fdtable *old_fdt, *new_fdt; | ||
713 | |||
714 | *errorp = -ENOMEM; | ||
715 | newf = alloc_files(); | ||
716 | if (!newf) | ||
717 | goto out; | ||
718 | |||
719 | spin_lock(&oldf->file_lock); | ||
720 | old_fdt = files_fdtable(oldf); | ||
721 | new_fdt = files_fdtable(newf); | ||
722 | open_files = count_open_files(old_fdt); | ||
723 | |||
724 | /* | ||
725 | * Check whether we need to allocate a larger fd array and fd set. | ||
726 | * Note: we're not a clone task, so the open count won't change. | ||
727 | */ | ||
728 | if (open_files > new_fdt->max_fds) { | ||
729 | new_fdt->max_fds = 0; | ||
730 | spin_unlock(&oldf->file_lock); | ||
731 | spin_lock(&newf->file_lock); | ||
732 | *errorp = expand_files(newf, open_files-1); | ||
733 | spin_unlock(&newf->file_lock); | ||
734 | if (*errorp < 0) | ||
735 | goto out_release; | ||
736 | new_fdt = files_fdtable(newf); | ||
737 | /* | ||
738 | * Reacquire the oldf lock and a pointer to its fd table | ||
739 | * who knows it may have a new bigger fd table. We need | ||
740 | * the latest pointer. | ||
741 | */ | ||
742 | spin_lock(&oldf->file_lock); | ||
743 | old_fdt = files_fdtable(oldf); | ||
744 | } | ||
745 | |||
746 | old_fds = old_fdt->fd; | ||
747 | new_fds = new_fdt->fd; | ||
748 | |||
749 | memcpy(new_fdt->open_fds->fds_bits, | ||
750 | old_fdt->open_fds->fds_bits, open_files/8); | ||
751 | memcpy(new_fdt->close_on_exec->fds_bits, | ||
752 | old_fdt->close_on_exec->fds_bits, open_files/8); | ||
753 | |||
754 | for (i = open_files; i != 0; i--) { | ||
755 | struct file *f = *old_fds++; | ||
756 | if (f) { | ||
757 | get_file(f); | ||
758 | } else { | ||
759 | /* | ||
760 | * The fd may be claimed in the fd bitmap but not yet | ||
761 | * instantiated in the files array if a sibling thread | ||
762 | * is partway through open(). So make sure that this | ||
763 | * fd is available to the new process. | ||
764 | */ | ||
765 | FD_CLR(open_files - i, new_fdt->open_fds); | ||
766 | } | ||
767 | rcu_assign_pointer(*new_fds++, f); | ||
768 | } | ||
769 | spin_unlock(&oldf->file_lock); | ||
770 | |||
771 | /* compute the remainder to be cleared */ | ||
772 | size = (new_fdt->max_fds - open_files) * sizeof(struct file *); | ||
773 | |||
774 | /* This is long word aligned thus could use a optimized version */ | ||
775 | memset(new_fds, 0, size); | ||
776 | |||
777 | if (new_fdt->max_fds > open_files) { | ||
778 | int left = (new_fdt->max_fds-open_files)/8; | ||
779 | int start = open_files / (8 * sizeof(unsigned long)); | ||
780 | |||
781 | memset(&new_fdt->open_fds->fds_bits[start], 0, left); | ||
782 | memset(&new_fdt->close_on_exec->fds_bits[start], 0, left); | ||
783 | } | ||
784 | |||
785 | return newf; | ||
786 | |||
787 | out_release: | ||
788 | kmem_cache_free(files_cachep, newf); | ||
789 | out: | ||
790 | return NULL; | ||
791 | } | ||
792 | |||
793 | static int copy_files(unsigned long clone_flags, struct task_struct * tsk) | 663 | static int copy_files(unsigned long clone_flags, struct task_struct * tsk) |
794 | { | 664 | { |
795 | struct files_struct *oldf, *newf; | 665 | struct files_struct *oldf, *newf; |
diff --git a/kernel/module.c b/kernel/module.c index f5e9491ef7ac..5f80478b746d 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -1337,7 +1337,19 @@ out_unreg: | |||
1337 | kobject_put(&mod->mkobj.kobj); | 1337 | kobject_put(&mod->mkobj.kobj); |
1338 | return err; | 1338 | return err; |
1339 | } | 1339 | } |
1340 | #endif | 1340 | |
1341 | static void mod_sysfs_fini(struct module *mod) | ||
1342 | { | ||
1343 | kobject_put(&mod->mkobj.kobj); | ||
1344 | } | ||
1345 | |||
1346 | #else /* CONFIG_SYSFS */ | ||
1347 | |||
1348 | static void mod_sysfs_fini(struct module *mod) | ||
1349 | { | ||
1350 | } | ||
1351 | |||
1352 | #endif /* CONFIG_SYSFS */ | ||
1341 | 1353 | ||
1342 | static void mod_kobject_remove(struct module *mod) | 1354 | static void mod_kobject_remove(struct module *mod) |
1343 | { | 1355 | { |
@@ -1345,7 +1357,7 @@ static void mod_kobject_remove(struct module *mod) | |||
1345 | module_param_sysfs_remove(mod); | 1357 | module_param_sysfs_remove(mod); |
1346 | kobject_put(mod->mkobj.drivers_dir); | 1358 | kobject_put(mod->mkobj.drivers_dir); |
1347 | kobject_put(mod->holders_dir); | 1359 | kobject_put(mod->holders_dir); |
1348 | kobject_put(&mod->mkobj.kobj); | 1360 | mod_sysfs_fini(mod); |
1349 | } | 1361 | } |
1350 | 1362 | ||
1351 | /* | 1363 | /* |
@@ -1780,7 +1792,7 @@ static struct module *load_module(void __user *umod, | |||
1780 | 1792 | ||
1781 | /* Sanity checks against insmoding binaries or wrong arch, | 1793 | /* Sanity checks against insmoding binaries or wrong arch, |
1782 | weird elf version */ | 1794 | weird elf version */ |
1783 | if (memcmp(hdr->e_ident, ELFMAG, 4) != 0 | 1795 | if (memcmp(hdr->e_ident, ELFMAG, SELFMAG) != 0 |
1784 | || hdr->e_type != ET_REL | 1796 | || hdr->e_type != ET_REL |
1785 | || !elf_check_arch(hdr) | 1797 | || !elf_check_arch(hdr) |
1786 | || hdr->e_shentsize != sizeof(*sechdrs)) { | 1798 | || hdr->e_shentsize != sizeof(*sechdrs)) { |
diff --git a/kernel/relay.c b/kernel/relay.c index bc24dcdc570f..7de644cdec43 100644 --- a/kernel/relay.c +++ b/kernel/relay.c | |||
@@ -1191,7 +1191,7 @@ static ssize_t relay_file_splice_read(struct file *in, | |||
1191 | ret = 0; | 1191 | ret = 0; |
1192 | spliced = 0; | 1192 | spliced = 0; |
1193 | 1193 | ||
1194 | while (len) { | 1194 | while (len && !spliced) { |
1195 | ret = subbuf_splice_actor(in, ppos, pipe, len, flags, &nonpad_ret); | 1195 | ret = subbuf_splice_actor(in, ppos, pipe, len, flags, &nonpad_ret); |
1196 | if (ret < 0) | 1196 | if (ret < 0) |
1197 | break; | 1197 | break; |
diff --git a/kernel/sched.c b/kernel/sched.c index cfa222a91539..bfb8ad8ed171 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -136,7 +136,7 @@ static inline void sg_inc_cpu_power(struct sched_group *sg, u32 val) | |||
136 | 136 | ||
137 | static inline int rt_policy(int policy) | 137 | static inline int rt_policy(int policy) |
138 | { | 138 | { |
139 | if (unlikely(policy == SCHED_FIFO) || unlikely(policy == SCHED_RR)) | 139 | if (unlikely(policy == SCHED_FIFO || policy == SCHED_RR)) |
140 | return 1; | 140 | return 1; |
141 | return 0; | 141 | return 0; |
142 | } | 142 | } |
@@ -398,43 +398,6 @@ struct cfs_rq { | |||
398 | */ | 398 | */ |
399 | struct list_head leaf_cfs_rq_list; | 399 | struct list_head leaf_cfs_rq_list; |
400 | struct task_group *tg; /* group that "owns" this runqueue */ | 400 | struct task_group *tg; /* group that "owns" this runqueue */ |
401 | |||
402 | #ifdef CONFIG_SMP | ||
403 | unsigned long task_weight; | ||
404 | unsigned long shares; | ||
405 | /* | ||
406 | * We need space to build a sched_domain wide view of the full task | ||
407 | * group tree, in order to avoid depending on dynamic memory allocation | ||
408 | * during the load balancing we place this in the per cpu task group | ||
409 | * hierarchy. This limits the load balancing to one instance per cpu, | ||
410 | * but more should not be needed anyway. | ||
411 | */ | ||
412 | struct aggregate_struct { | ||
413 | /* | ||
414 | * load = weight(cpus) * f(tg) | ||
415 | * | ||
416 | * Where f(tg) is the recursive weight fraction assigned to | ||
417 | * this group. | ||
418 | */ | ||
419 | unsigned long load; | ||
420 | |||
421 | /* | ||
422 | * part of the group weight distributed to this span. | ||
423 | */ | ||
424 | unsigned long shares; | ||
425 | |||
426 | /* | ||
427 | * The sum of all runqueue weights within this span. | ||
428 | */ | ||
429 | unsigned long rq_weight; | ||
430 | |||
431 | /* | ||
432 | * Weight contributed by tasks; this is the part we can | ||
433 | * influence by moving tasks around. | ||
434 | */ | ||
435 | unsigned long task_weight; | ||
436 | } aggregate; | ||
437 | #endif | ||
438 | #endif | 401 | #endif |
439 | }; | 402 | }; |
440 | 403 | ||
@@ -1368,9 +1331,6 @@ static void __resched_task(struct task_struct *p, int tif_bit) | |||
1368 | */ | 1331 | */ |
1369 | #define SRR(x, y) (((x) + (1UL << ((y) - 1))) >> (y)) | 1332 | #define SRR(x, y) (((x) + (1UL << ((y) - 1))) >> (y)) |
1370 | 1333 | ||
1371 | /* | ||
1372 | * delta *= weight / lw | ||
1373 | */ | ||
1374 | static unsigned long | 1334 | static unsigned long |
1375 | calc_delta_mine(unsigned long delta_exec, unsigned long weight, | 1335 | calc_delta_mine(unsigned long delta_exec, unsigned long weight, |
1376 | struct load_weight *lw) | 1336 | struct load_weight *lw) |
@@ -1393,6 +1353,12 @@ calc_delta_mine(unsigned long delta_exec, unsigned long weight, | |||
1393 | return (unsigned long)min(tmp, (u64)(unsigned long)LONG_MAX); | 1353 | return (unsigned long)min(tmp, (u64)(unsigned long)LONG_MAX); |
1394 | } | 1354 | } |
1395 | 1355 | ||
1356 | static inline unsigned long | ||
1357 | calc_delta_fair(unsigned long delta_exec, struct load_weight *lw) | ||
1358 | { | ||
1359 | return calc_delta_mine(delta_exec, NICE_0_LOAD, lw); | ||
1360 | } | ||
1361 | |||
1396 | static inline void update_load_add(struct load_weight *lw, unsigned long inc) | 1362 | static inline void update_load_add(struct load_weight *lw, unsigned long inc) |
1397 | { | 1363 | { |
1398 | lw->weight += inc; | 1364 | lw->weight += inc; |
@@ -1505,326 +1471,6 @@ static unsigned long source_load(int cpu, int type); | |||
1505 | static unsigned long target_load(int cpu, int type); | 1471 | static unsigned long target_load(int cpu, int type); |
1506 | static unsigned long cpu_avg_load_per_task(int cpu); | 1472 | static unsigned long cpu_avg_load_per_task(int cpu); |
1507 | static int task_hot(struct task_struct *p, u64 now, struct sched_domain *sd); | 1473 | static int task_hot(struct task_struct *p, u64 now, struct sched_domain *sd); |
1508 | |||
1509 | #ifdef CONFIG_FAIR_GROUP_SCHED | ||
1510 | |||
1511 | /* | ||
1512 | * Group load balancing. | ||
1513 | * | ||
1514 | * We calculate a few balance domain wide aggregate numbers; load and weight. | ||
1515 | * Given the pictures below, and assuming each item has equal weight: | ||
1516 | * | ||
1517 | * root 1 - thread | ||
1518 | * / | \ A - group | ||
1519 | * A 1 B | ||
1520 | * /|\ / \ | ||
1521 | * C 2 D 3 4 | ||
1522 | * | | | ||
1523 | * 5 6 | ||
1524 | * | ||
1525 | * load: | ||
1526 | * A and B get 1/3-rd of the total load. C and D get 1/3-rd of A's 1/3-rd, | ||
1527 | * which equals 1/9-th of the total load. | ||
1528 | * | ||
1529 | * shares: | ||
1530 | * The weight of this group on the selected cpus. | ||
1531 | * | ||
1532 | * rq_weight: | ||
1533 | * Direct sum of all the cpu's their rq weight, e.g. A would get 3 while | ||
1534 | * B would get 2. | ||
1535 | * | ||
1536 | * task_weight: | ||
1537 | * Part of the rq_weight contributed by tasks; all groups except B would | ||
1538 | * get 1, B gets 2. | ||
1539 | */ | ||
1540 | |||
1541 | static inline struct aggregate_struct * | ||
1542 | aggregate(struct task_group *tg, struct sched_domain *sd) | ||
1543 | { | ||
1544 | return &tg->cfs_rq[sd->first_cpu]->aggregate; | ||
1545 | } | ||
1546 | |||
1547 | typedef void (*aggregate_func)(struct task_group *, struct sched_domain *); | ||
1548 | |||
1549 | /* | ||
1550 | * Iterate the full tree, calling @down when first entering a node and @up when | ||
1551 | * leaving it for the final time. | ||
1552 | */ | ||
1553 | static | ||
1554 | void aggregate_walk_tree(aggregate_func down, aggregate_func up, | ||
1555 | struct sched_domain *sd) | ||
1556 | { | ||
1557 | struct task_group *parent, *child; | ||
1558 | |||
1559 | rcu_read_lock(); | ||
1560 | parent = &root_task_group; | ||
1561 | down: | ||
1562 | (*down)(parent, sd); | ||
1563 | list_for_each_entry_rcu(child, &parent->children, siblings) { | ||
1564 | parent = child; | ||
1565 | goto down; | ||
1566 | |||
1567 | up: | ||
1568 | continue; | ||
1569 | } | ||
1570 | (*up)(parent, sd); | ||
1571 | |||
1572 | child = parent; | ||
1573 | parent = parent->parent; | ||
1574 | if (parent) | ||
1575 | goto up; | ||
1576 | rcu_read_unlock(); | ||
1577 | } | ||
1578 | |||
1579 | /* | ||
1580 | * Calculate the aggregate runqueue weight. | ||
1581 | */ | ||
1582 | static | ||
1583 | void aggregate_group_weight(struct task_group *tg, struct sched_domain *sd) | ||
1584 | { | ||
1585 | unsigned long rq_weight = 0; | ||
1586 | unsigned long task_weight = 0; | ||
1587 | int i; | ||
1588 | |||
1589 | for_each_cpu_mask(i, sd->span) { | ||
1590 | rq_weight += tg->cfs_rq[i]->load.weight; | ||
1591 | task_weight += tg->cfs_rq[i]->task_weight; | ||
1592 | } | ||
1593 | |||
1594 | aggregate(tg, sd)->rq_weight = rq_weight; | ||
1595 | aggregate(tg, sd)->task_weight = task_weight; | ||
1596 | } | ||
1597 | |||
1598 | /* | ||
1599 | * Compute the weight of this group on the given cpus. | ||
1600 | */ | ||
1601 | static | ||
1602 | void aggregate_group_shares(struct task_group *tg, struct sched_domain *sd) | ||
1603 | { | ||
1604 | unsigned long shares = 0; | ||
1605 | int i; | ||
1606 | |||
1607 | for_each_cpu_mask(i, sd->span) | ||
1608 | shares += tg->cfs_rq[i]->shares; | ||
1609 | |||
1610 | if ((!shares && aggregate(tg, sd)->rq_weight) || shares > tg->shares) | ||
1611 | shares = tg->shares; | ||
1612 | |||
1613 | aggregate(tg, sd)->shares = shares; | ||
1614 | } | ||
1615 | |||
1616 | /* | ||
1617 | * Compute the load fraction assigned to this group, relies on the aggregate | ||
1618 | * weight and this group's parent's load, i.e. top-down. | ||
1619 | */ | ||
1620 | static | ||
1621 | void aggregate_group_load(struct task_group *tg, struct sched_domain *sd) | ||
1622 | { | ||
1623 | unsigned long load; | ||
1624 | |||
1625 | if (!tg->parent) { | ||
1626 | int i; | ||
1627 | |||
1628 | load = 0; | ||
1629 | for_each_cpu_mask(i, sd->span) | ||
1630 | load += cpu_rq(i)->load.weight; | ||
1631 | |||
1632 | } else { | ||
1633 | load = aggregate(tg->parent, sd)->load; | ||
1634 | |||
1635 | /* | ||
1636 | * shares is our weight in the parent's rq so | ||
1637 | * shares/parent->rq_weight gives our fraction of the load | ||
1638 | */ | ||
1639 | load *= aggregate(tg, sd)->shares; | ||
1640 | load /= aggregate(tg->parent, sd)->rq_weight + 1; | ||
1641 | } | ||
1642 | |||
1643 | aggregate(tg, sd)->load = load; | ||
1644 | } | ||
1645 | |||
1646 | static void __set_se_shares(struct sched_entity *se, unsigned long shares); | ||
1647 | |||
1648 | /* | ||
1649 | * Calculate and set the cpu's group shares. | ||
1650 | */ | ||
1651 | static void | ||
1652 | __update_group_shares_cpu(struct task_group *tg, struct sched_domain *sd, | ||
1653 | int tcpu) | ||
1654 | { | ||
1655 | int boost = 0; | ||
1656 | unsigned long shares; | ||
1657 | unsigned long rq_weight; | ||
1658 | |||
1659 | if (!tg->se[tcpu]) | ||
1660 | return; | ||
1661 | |||
1662 | rq_weight = tg->cfs_rq[tcpu]->load.weight; | ||
1663 | |||
1664 | /* | ||
1665 | * If there are currently no tasks on the cpu pretend there is one of | ||
1666 | * average load so that when a new task gets to run here it will not | ||
1667 | * get delayed by group starvation. | ||
1668 | */ | ||
1669 | if (!rq_weight) { | ||
1670 | boost = 1; | ||
1671 | rq_weight = NICE_0_LOAD; | ||
1672 | } | ||
1673 | |||
1674 | /* | ||
1675 | * \Sum shares * rq_weight | ||
1676 | * shares = ----------------------- | ||
1677 | * \Sum rq_weight | ||
1678 | * | ||
1679 | */ | ||
1680 | shares = aggregate(tg, sd)->shares * rq_weight; | ||
1681 | shares /= aggregate(tg, sd)->rq_weight + 1; | ||
1682 | |||
1683 | /* | ||
1684 | * record the actual number of shares, not the boosted amount. | ||
1685 | */ | ||
1686 | tg->cfs_rq[tcpu]->shares = boost ? 0 : shares; | ||
1687 | |||
1688 | if (shares < MIN_SHARES) | ||
1689 | shares = MIN_SHARES; | ||
1690 | else if (shares > MAX_SHARES) | ||
1691 | shares = MAX_SHARES; | ||
1692 | |||
1693 | __set_se_shares(tg->se[tcpu], shares); | ||
1694 | } | ||
1695 | |||
1696 | /* | ||
1697 | * Re-adjust the weights on the cpu the task came from and on the cpu the | ||
1698 | * task went to. | ||
1699 | */ | ||
1700 | static void | ||
1701 | __move_group_shares(struct task_group *tg, struct sched_domain *sd, | ||
1702 | int scpu, int dcpu) | ||
1703 | { | ||
1704 | unsigned long shares; | ||
1705 | |||
1706 | shares = tg->cfs_rq[scpu]->shares + tg->cfs_rq[dcpu]->shares; | ||
1707 | |||
1708 | __update_group_shares_cpu(tg, sd, scpu); | ||
1709 | __update_group_shares_cpu(tg, sd, dcpu); | ||
1710 | |||
1711 | /* | ||
1712 | * ensure we never loose shares due to rounding errors in the | ||
1713 | * above redistribution. | ||
1714 | */ | ||
1715 | shares -= tg->cfs_rq[scpu]->shares + tg->cfs_rq[dcpu]->shares; | ||
1716 | if (shares) | ||
1717 | tg->cfs_rq[dcpu]->shares += shares; | ||
1718 | } | ||
1719 | |||
1720 | /* | ||
1721 | * Because changing a group's shares changes the weight of the super-group | ||
1722 | * we need to walk up the tree and change all shares until we hit the root. | ||
1723 | */ | ||
1724 | static void | ||
1725 | move_group_shares(struct task_group *tg, struct sched_domain *sd, | ||
1726 | int scpu, int dcpu) | ||
1727 | { | ||
1728 | while (tg) { | ||
1729 | __move_group_shares(tg, sd, scpu, dcpu); | ||
1730 | tg = tg->parent; | ||
1731 | } | ||
1732 | } | ||
1733 | |||
1734 | static | ||
1735 | void aggregate_group_set_shares(struct task_group *tg, struct sched_domain *sd) | ||
1736 | { | ||
1737 | unsigned long shares = aggregate(tg, sd)->shares; | ||
1738 | int i; | ||
1739 | |||
1740 | for_each_cpu_mask(i, sd->span) { | ||
1741 | struct rq *rq = cpu_rq(i); | ||
1742 | unsigned long flags; | ||
1743 | |||
1744 | spin_lock_irqsave(&rq->lock, flags); | ||
1745 | __update_group_shares_cpu(tg, sd, i); | ||
1746 | spin_unlock_irqrestore(&rq->lock, flags); | ||
1747 | } | ||
1748 | |||
1749 | aggregate_group_shares(tg, sd); | ||
1750 | |||
1751 | /* | ||
1752 | * ensure we never loose shares due to rounding errors in the | ||
1753 | * above redistribution. | ||
1754 | */ | ||
1755 | shares -= aggregate(tg, sd)->shares; | ||
1756 | if (shares) { | ||
1757 | tg->cfs_rq[sd->first_cpu]->shares += shares; | ||
1758 | aggregate(tg, sd)->shares += shares; | ||
1759 | } | ||
1760 | } | ||
1761 | |||
1762 | /* | ||
1763 | * Calculate the accumulative weight and recursive load of each task group | ||
1764 | * while walking down the tree. | ||
1765 | */ | ||
1766 | static | ||
1767 | void aggregate_get_down(struct task_group *tg, struct sched_domain *sd) | ||
1768 | { | ||
1769 | aggregate_group_weight(tg, sd); | ||
1770 | aggregate_group_shares(tg, sd); | ||
1771 | aggregate_group_load(tg, sd); | ||
1772 | } | ||
1773 | |||
1774 | /* | ||
1775 | * Rebalance the cpu shares while walking back up the tree. | ||
1776 | */ | ||
1777 | static | ||
1778 | void aggregate_get_up(struct task_group *tg, struct sched_domain *sd) | ||
1779 | { | ||
1780 | aggregate_group_set_shares(tg, sd); | ||
1781 | } | ||
1782 | |||
1783 | static DEFINE_PER_CPU(spinlock_t, aggregate_lock); | ||
1784 | |||
1785 | static void __init init_aggregate(void) | ||
1786 | { | ||
1787 | int i; | ||
1788 | |||
1789 | for_each_possible_cpu(i) | ||
1790 | spin_lock_init(&per_cpu(aggregate_lock, i)); | ||
1791 | } | ||
1792 | |||
1793 | static int get_aggregate(struct sched_domain *sd) | ||
1794 | { | ||
1795 | if (!spin_trylock(&per_cpu(aggregate_lock, sd->first_cpu))) | ||
1796 | return 0; | ||
1797 | |||
1798 | aggregate_walk_tree(aggregate_get_down, aggregate_get_up, sd); | ||
1799 | return 1; | ||
1800 | } | ||
1801 | |||
1802 | static void put_aggregate(struct sched_domain *sd) | ||
1803 | { | ||
1804 | spin_unlock(&per_cpu(aggregate_lock, sd->first_cpu)); | ||
1805 | } | ||
1806 | |||
1807 | static void cfs_rq_set_shares(struct cfs_rq *cfs_rq, unsigned long shares) | ||
1808 | { | ||
1809 | cfs_rq->shares = shares; | ||
1810 | } | ||
1811 | |||
1812 | #else | ||
1813 | |||
1814 | static inline void init_aggregate(void) | ||
1815 | { | ||
1816 | } | ||
1817 | |||
1818 | static inline int get_aggregate(struct sched_domain *sd) | ||
1819 | { | ||
1820 | return 0; | ||
1821 | } | ||
1822 | |||
1823 | static inline void put_aggregate(struct sched_domain *sd) | ||
1824 | { | ||
1825 | } | ||
1826 | #endif | ||
1827 | |||
1828 | #else /* CONFIG_SMP */ | 1474 | #else /* CONFIG_SMP */ |
1829 | 1475 | ||
1830 | #ifdef CONFIG_FAIR_GROUP_SCHED | 1476 | #ifdef CONFIG_FAIR_GROUP_SCHED |
@@ -1845,14 +1491,26 @@ static void cfs_rq_set_shares(struct cfs_rq *cfs_rq, unsigned long shares) | |||
1845 | 1491 | ||
1846 | #define sched_class_highest (&rt_sched_class) | 1492 | #define sched_class_highest (&rt_sched_class) |
1847 | 1493 | ||
1848 | static void inc_nr_running(struct rq *rq) | 1494 | static inline void inc_load(struct rq *rq, const struct task_struct *p) |
1495 | { | ||
1496 | update_load_add(&rq->load, p->se.load.weight); | ||
1497 | } | ||
1498 | |||
1499 | static inline void dec_load(struct rq *rq, const struct task_struct *p) | ||
1500 | { | ||
1501 | update_load_sub(&rq->load, p->se.load.weight); | ||
1502 | } | ||
1503 | |||
1504 | static void inc_nr_running(struct task_struct *p, struct rq *rq) | ||
1849 | { | 1505 | { |
1850 | rq->nr_running++; | 1506 | rq->nr_running++; |
1507 | inc_load(rq, p); | ||
1851 | } | 1508 | } |
1852 | 1509 | ||
1853 | static void dec_nr_running(struct rq *rq) | 1510 | static void dec_nr_running(struct task_struct *p, struct rq *rq) |
1854 | { | 1511 | { |
1855 | rq->nr_running--; | 1512 | rq->nr_running--; |
1513 | dec_load(rq, p); | ||
1856 | } | 1514 | } |
1857 | 1515 | ||
1858 | static void set_load_weight(struct task_struct *p) | 1516 | static void set_load_weight(struct task_struct *p) |
@@ -1944,7 +1602,7 @@ static void activate_task(struct rq *rq, struct task_struct *p, int wakeup) | |||
1944 | rq->nr_uninterruptible--; | 1602 | rq->nr_uninterruptible--; |
1945 | 1603 | ||
1946 | enqueue_task(rq, p, wakeup); | 1604 | enqueue_task(rq, p, wakeup); |
1947 | inc_nr_running(rq); | 1605 | inc_nr_running(p, rq); |
1948 | } | 1606 | } |
1949 | 1607 | ||
1950 | /* | 1608 | /* |
@@ -1956,7 +1614,7 @@ static void deactivate_task(struct rq *rq, struct task_struct *p, int sleep) | |||
1956 | rq->nr_uninterruptible++; | 1614 | rq->nr_uninterruptible++; |
1957 | 1615 | ||
1958 | dequeue_task(rq, p, sleep); | 1616 | dequeue_task(rq, p, sleep); |
1959 | dec_nr_running(rq); | 1617 | dec_nr_running(p, rq); |
1960 | } | 1618 | } |
1961 | 1619 | ||
1962 | /** | 1620 | /** |
@@ -2609,7 +2267,7 @@ void wake_up_new_task(struct task_struct *p, unsigned long clone_flags) | |||
2609 | * management (if any): | 2267 | * management (if any): |
2610 | */ | 2268 | */ |
2611 | p->sched_class->task_new(rq, p); | 2269 | p->sched_class->task_new(rq, p); |
2612 | inc_nr_running(rq); | 2270 | inc_nr_running(p, rq); |
2613 | } | 2271 | } |
2614 | check_preempt_curr(rq, p); | 2272 | check_preempt_curr(rq, p); |
2615 | #ifdef CONFIG_SMP | 2273 | #ifdef CONFIG_SMP |
@@ -3600,12 +3258,9 @@ static int load_balance(int this_cpu, struct rq *this_rq, | |||
3600 | unsigned long imbalance; | 3258 | unsigned long imbalance; |
3601 | struct rq *busiest; | 3259 | struct rq *busiest; |
3602 | unsigned long flags; | 3260 | unsigned long flags; |
3603 | int unlock_aggregate; | ||
3604 | 3261 | ||
3605 | cpus_setall(*cpus); | 3262 | cpus_setall(*cpus); |
3606 | 3263 | ||
3607 | unlock_aggregate = get_aggregate(sd); | ||
3608 | |||
3609 | /* | 3264 | /* |
3610 | * When power savings policy is enabled for the parent domain, idle | 3265 | * When power savings policy is enabled for the parent domain, idle |
3611 | * sibling can pick up load irrespective of busy siblings. In this case, | 3266 | * sibling can pick up load irrespective of busy siblings. In this case, |
@@ -3721,9 +3376,8 @@ redo: | |||
3721 | 3376 | ||
3722 | if (!ld_moved && !sd_idle && sd->flags & SD_SHARE_CPUPOWER && | 3377 | if (!ld_moved && !sd_idle && sd->flags & SD_SHARE_CPUPOWER && |
3723 | !test_sd_parent(sd, SD_POWERSAVINGS_BALANCE)) | 3378 | !test_sd_parent(sd, SD_POWERSAVINGS_BALANCE)) |
3724 | ld_moved = -1; | 3379 | return -1; |
3725 | 3380 | return ld_moved; | |
3726 | goto out; | ||
3727 | 3381 | ||
3728 | out_balanced: | 3382 | out_balanced: |
3729 | schedstat_inc(sd, lb_balanced[idle]); | 3383 | schedstat_inc(sd, lb_balanced[idle]); |
@@ -3738,13 +3392,8 @@ out_one_pinned: | |||
3738 | 3392 | ||
3739 | if (!sd_idle && sd->flags & SD_SHARE_CPUPOWER && | 3393 | if (!sd_idle && sd->flags & SD_SHARE_CPUPOWER && |
3740 | !test_sd_parent(sd, SD_POWERSAVINGS_BALANCE)) | 3394 | !test_sd_parent(sd, SD_POWERSAVINGS_BALANCE)) |
3741 | ld_moved = -1; | 3395 | return -1; |
3742 | else | 3396 | return 0; |
3743 | ld_moved = 0; | ||
3744 | out: | ||
3745 | if (unlock_aggregate) | ||
3746 | put_aggregate(sd); | ||
3747 | return ld_moved; | ||
3748 | } | 3397 | } |
3749 | 3398 | ||
3750 | /* | 3399 | /* |
@@ -4430,7 +4079,7 @@ static inline void schedule_debug(struct task_struct *prev) | |||
4430 | * schedule() atomically, we ignore that path for now. | 4079 | * schedule() atomically, we ignore that path for now. |
4431 | * Otherwise, whine if we are scheduling when we should not be. | 4080 | * Otherwise, whine if we are scheduling when we should not be. |
4432 | */ | 4081 | */ |
4433 | if (unlikely(in_atomic_preempt_off()) && unlikely(!prev->exit_state)) | 4082 | if (unlikely(in_atomic_preempt_off() && !prev->exit_state)) |
4434 | __schedule_bug(prev); | 4083 | __schedule_bug(prev); |
4435 | 4084 | ||
4436 | profile_hit(SCHED_PROFILING, __builtin_return_address(0)); | 4085 | profile_hit(SCHED_PROFILING, __builtin_return_address(0)); |
@@ -4931,8 +4580,10 @@ void set_user_nice(struct task_struct *p, long nice) | |||
4931 | goto out_unlock; | 4580 | goto out_unlock; |
4932 | } | 4581 | } |
4933 | on_rq = p->se.on_rq; | 4582 | on_rq = p->se.on_rq; |
4934 | if (on_rq) | 4583 | if (on_rq) { |
4935 | dequeue_task(rq, p, 0); | 4584 | dequeue_task(rq, p, 0); |
4585 | dec_load(rq, p); | ||
4586 | } | ||
4936 | 4587 | ||
4937 | p->static_prio = NICE_TO_PRIO(nice); | 4588 | p->static_prio = NICE_TO_PRIO(nice); |
4938 | set_load_weight(p); | 4589 | set_load_weight(p); |
@@ -4942,6 +4593,7 @@ void set_user_nice(struct task_struct *p, long nice) | |||
4942 | 4593 | ||
4943 | if (on_rq) { | 4594 | if (on_rq) { |
4944 | enqueue_task(rq, p, 0); | 4595 | enqueue_task(rq, p, 0); |
4596 | inc_load(rq, p); | ||
4945 | /* | 4597 | /* |
4946 | * If the task increased its priority or is running and | 4598 | * If the task increased its priority or is running and |
4947 | * lowered its priority, then reschedule its CPU: | 4599 | * lowered its priority, then reschedule its CPU: |
@@ -7316,7 +6968,6 @@ static int __build_sched_domains(const cpumask_t *cpu_map, | |||
7316 | SD_INIT(sd, ALLNODES); | 6968 | SD_INIT(sd, ALLNODES); |
7317 | set_domain_attribute(sd, attr); | 6969 | set_domain_attribute(sd, attr); |
7318 | sd->span = *cpu_map; | 6970 | sd->span = *cpu_map; |
7319 | sd->first_cpu = first_cpu(sd->span); | ||
7320 | cpu_to_allnodes_group(i, cpu_map, &sd->groups, tmpmask); | 6971 | cpu_to_allnodes_group(i, cpu_map, &sd->groups, tmpmask); |
7321 | p = sd; | 6972 | p = sd; |
7322 | sd_allnodes = 1; | 6973 | sd_allnodes = 1; |
@@ -7327,7 +6978,6 @@ static int __build_sched_domains(const cpumask_t *cpu_map, | |||
7327 | SD_INIT(sd, NODE); | 6978 | SD_INIT(sd, NODE); |
7328 | set_domain_attribute(sd, attr); | 6979 | set_domain_attribute(sd, attr); |
7329 | sched_domain_node_span(cpu_to_node(i), &sd->span); | 6980 | sched_domain_node_span(cpu_to_node(i), &sd->span); |
7330 | sd->first_cpu = first_cpu(sd->span); | ||
7331 | sd->parent = p; | 6981 | sd->parent = p; |
7332 | if (p) | 6982 | if (p) |
7333 | p->child = sd; | 6983 | p->child = sd; |
@@ -7339,7 +6989,6 @@ static int __build_sched_domains(const cpumask_t *cpu_map, | |||
7339 | SD_INIT(sd, CPU); | 6989 | SD_INIT(sd, CPU); |
7340 | set_domain_attribute(sd, attr); | 6990 | set_domain_attribute(sd, attr); |
7341 | sd->span = *nodemask; | 6991 | sd->span = *nodemask; |
7342 | sd->first_cpu = first_cpu(sd->span); | ||
7343 | sd->parent = p; | 6992 | sd->parent = p; |
7344 | if (p) | 6993 | if (p) |
7345 | p->child = sd; | 6994 | p->child = sd; |
@@ -7351,7 +7000,6 @@ static int __build_sched_domains(const cpumask_t *cpu_map, | |||
7351 | SD_INIT(sd, MC); | 7000 | SD_INIT(sd, MC); |
7352 | set_domain_attribute(sd, attr); | 7001 | set_domain_attribute(sd, attr); |
7353 | sd->span = cpu_coregroup_map(i); | 7002 | sd->span = cpu_coregroup_map(i); |
7354 | sd->first_cpu = first_cpu(sd->span); | ||
7355 | cpus_and(sd->span, sd->span, *cpu_map); | 7003 | cpus_and(sd->span, sd->span, *cpu_map); |
7356 | sd->parent = p; | 7004 | sd->parent = p; |
7357 | p->child = sd; | 7005 | p->child = sd; |
@@ -7364,7 +7012,6 @@ static int __build_sched_domains(const cpumask_t *cpu_map, | |||
7364 | SD_INIT(sd, SIBLING); | 7012 | SD_INIT(sd, SIBLING); |
7365 | set_domain_attribute(sd, attr); | 7013 | set_domain_attribute(sd, attr); |
7366 | sd->span = per_cpu(cpu_sibling_map, i); | 7014 | sd->span = per_cpu(cpu_sibling_map, i); |
7367 | sd->first_cpu = first_cpu(sd->span); | ||
7368 | cpus_and(sd->span, sd->span, *cpu_map); | 7015 | cpus_and(sd->span, sd->span, *cpu_map); |
7369 | sd->parent = p; | 7016 | sd->parent = p; |
7370 | p->child = sd; | 7017 | p->child = sd; |
@@ -7568,8 +7215,8 @@ static int build_sched_domains(const cpumask_t *cpu_map) | |||
7568 | 7215 | ||
7569 | static cpumask_t *doms_cur; /* current sched domains */ | 7216 | static cpumask_t *doms_cur; /* current sched domains */ |
7570 | static int ndoms_cur; /* number of sched domains in 'doms_cur' */ | 7217 | static int ndoms_cur; /* number of sched domains in 'doms_cur' */ |
7571 | static struct sched_domain_attr *dattr_cur; /* attribues of custom domains | 7218 | static struct sched_domain_attr *dattr_cur; |
7572 | in 'doms_cur' */ | 7219 | /* attribues of custom domains in 'doms_cur' */ |
7573 | 7220 | ||
7574 | /* | 7221 | /* |
7575 | * Special case: If a kmalloc of a doms_cur partition (array of | 7222 | * Special case: If a kmalloc of a doms_cur partition (array of |
@@ -8034,7 +7681,6 @@ void __init sched_init(void) | |||
8034 | } | 7681 | } |
8035 | 7682 | ||
8036 | #ifdef CONFIG_SMP | 7683 | #ifdef CONFIG_SMP |
8037 | init_aggregate(); | ||
8038 | init_defrootdomain(); | 7684 | init_defrootdomain(); |
8039 | #endif | 7685 | #endif |
8040 | 7686 | ||
@@ -8599,11 +8245,14 @@ void sched_move_task(struct task_struct *tsk) | |||
8599 | #endif | 8245 | #endif |
8600 | 8246 | ||
8601 | #ifdef CONFIG_FAIR_GROUP_SCHED | 8247 | #ifdef CONFIG_FAIR_GROUP_SCHED |
8602 | static void __set_se_shares(struct sched_entity *se, unsigned long shares) | 8248 | static void set_se_shares(struct sched_entity *se, unsigned long shares) |
8603 | { | 8249 | { |
8604 | struct cfs_rq *cfs_rq = se->cfs_rq; | 8250 | struct cfs_rq *cfs_rq = se->cfs_rq; |
8251 | struct rq *rq = cfs_rq->rq; | ||
8605 | int on_rq; | 8252 | int on_rq; |
8606 | 8253 | ||
8254 | spin_lock_irq(&rq->lock); | ||
8255 | |||
8607 | on_rq = se->on_rq; | 8256 | on_rq = se->on_rq; |
8608 | if (on_rq) | 8257 | if (on_rq) |
8609 | dequeue_entity(cfs_rq, se, 0); | 8258 | dequeue_entity(cfs_rq, se, 0); |
@@ -8613,17 +8262,8 @@ static void __set_se_shares(struct sched_entity *se, unsigned long shares) | |||
8613 | 8262 | ||
8614 | if (on_rq) | 8263 | if (on_rq) |
8615 | enqueue_entity(cfs_rq, se, 0); | 8264 | enqueue_entity(cfs_rq, se, 0); |
8616 | } | ||
8617 | 8265 | ||
8618 | static void set_se_shares(struct sched_entity *se, unsigned long shares) | 8266 | spin_unlock_irq(&rq->lock); |
8619 | { | ||
8620 | struct cfs_rq *cfs_rq = se->cfs_rq; | ||
8621 | struct rq *rq = cfs_rq->rq; | ||
8622 | unsigned long flags; | ||
8623 | |||
8624 | spin_lock_irqsave(&rq->lock, flags); | ||
8625 | __set_se_shares(se, shares); | ||
8626 | spin_unlock_irqrestore(&rq->lock, flags); | ||
8627 | } | 8267 | } |
8628 | 8268 | ||
8629 | static DEFINE_MUTEX(shares_mutex); | 8269 | static DEFINE_MUTEX(shares_mutex); |
@@ -8662,13 +8302,8 @@ int sched_group_set_shares(struct task_group *tg, unsigned long shares) | |||
8662 | * w/o tripping rebalance_share or load_balance_fair. | 8302 | * w/o tripping rebalance_share or load_balance_fair. |
8663 | */ | 8303 | */ |
8664 | tg->shares = shares; | 8304 | tg->shares = shares; |
8665 | for_each_possible_cpu(i) { | 8305 | for_each_possible_cpu(i) |
8666 | /* | ||
8667 | * force a rebalance | ||
8668 | */ | ||
8669 | cfs_rq_set_shares(tg->cfs_rq[i], 0); | ||
8670 | set_se_shares(tg->se[i], shares); | 8306 | set_se_shares(tg->se[i], shares); |
8671 | } | ||
8672 | 8307 | ||
8673 | /* | 8308 | /* |
8674 | * Enable load balance activity on this group, by inserting it back on | 8309 | * Enable load balance activity on this group, by inserting it back on |
diff --git a/kernel/sched_clock.c b/kernel/sched_clock.c index 9c597e37f7de..ce05271219ab 100644 --- a/kernel/sched_clock.c +++ b/kernel/sched_clock.c | |||
@@ -59,22 +59,26 @@ static inline struct sched_clock_data *cpu_sdc(int cpu) | |||
59 | return &per_cpu(sched_clock_data, cpu); | 59 | return &per_cpu(sched_clock_data, cpu); |
60 | } | 60 | } |
61 | 61 | ||
62 | static __read_mostly int sched_clock_running; | ||
63 | |||
62 | void sched_clock_init(void) | 64 | void sched_clock_init(void) |
63 | { | 65 | { |
64 | u64 ktime_now = ktime_to_ns(ktime_get()); | 66 | u64 ktime_now = ktime_to_ns(ktime_get()); |
65 | u64 now = 0; | 67 | unsigned long now_jiffies = jiffies; |
66 | int cpu; | 68 | int cpu; |
67 | 69 | ||
68 | for_each_possible_cpu(cpu) { | 70 | for_each_possible_cpu(cpu) { |
69 | struct sched_clock_data *scd = cpu_sdc(cpu); | 71 | struct sched_clock_data *scd = cpu_sdc(cpu); |
70 | 72 | ||
71 | scd->lock = (raw_spinlock_t)__RAW_SPIN_LOCK_UNLOCKED; | 73 | scd->lock = (raw_spinlock_t)__RAW_SPIN_LOCK_UNLOCKED; |
72 | scd->prev_jiffies = jiffies; | 74 | scd->prev_jiffies = now_jiffies; |
73 | scd->prev_raw = now; | 75 | scd->prev_raw = 0; |
74 | scd->tick_raw = now; | 76 | scd->tick_raw = 0; |
75 | scd->tick_gtod = ktime_now; | 77 | scd->tick_gtod = ktime_now; |
76 | scd->clock = ktime_now; | 78 | scd->clock = ktime_now; |
77 | } | 79 | } |
80 | |||
81 | sched_clock_running = 1; | ||
78 | } | 82 | } |
79 | 83 | ||
80 | /* | 84 | /* |
@@ -136,6 +140,9 @@ u64 sched_clock_cpu(int cpu) | |||
136 | struct sched_clock_data *scd = cpu_sdc(cpu); | 140 | struct sched_clock_data *scd = cpu_sdc(cpu); |
137 | u64 now, clock; | 141 | u64 now, clock; |
138 | 142 | ||
143 | if (unlikely(!sched_clock_running)) | ||
144 | return 0ull; | ||
145 | |||
139 | WARN_ON_ONCE(!irqs_disabled()); | 146 | WARN_ON_ONCE(!irqs_disabled()); |
140 | now = sched_clock(); | 147 | now = sched_clock(); |
141 | 148 | ||
@@ -174,6 +181,9 @@ void sched_clock_tick(void) | |||
174 | struct sched_clock_data *scd = this_scd(); | 181 | struct sched_clock_data *scd = this_scd(); |
175 | u64 now, now_gtod; | 182 | u64 now, now_gtod; |
176 | 183 | ||
184 | if (unlikely(!sched_clock_running)) | ||
185 | return; | ||
186 | |||
177 | WARN_ON_ONCE(!irqs_disabled()); | 187 | WARN_ON_ONCE(!irqs_disabled()); |
178 | 188 | ||
179 | now = sched_clock(); | 189 | now = sched_clock(); |
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c index 5f06118fbc31..8bb713040ac9 100644 --- a/kernel/sched_debug.c +++ b/kernel/sched_debug.c | |||
@@ -167,11 +167,6 @@ void print_cfs_rq(struct seq_file *m, int cpu, struct cfs_rq *cfs_rq) | |||
167 | #endif | 167 | #endif |
168 | SEQ_printf(m, " .%-30s: %ld\n", "nr_spread_over", | 168 | SEQ_printf(m, " .%-30s: %ld\n", "nr_spread_over", |
169 | cfs_rq->nr_spread_over); | 169 | cfs_rq->nr_spread_over); |
170 | #ifdef CONFIG_FAIR_GROUP_SCHED | ||
171 | #ifdef CONFIG_SMP | ||
172 | SEQ_printf(m, " .%-30s: %lu\n", "shares", cfs_rq->shares); | ||
173 | #endif | ||
174 | #endif | ||
175 | } | 170 | } |
176 | 171 | ||
177 | static void print_cpu(struct seq_file *m, int cpu) | 172 | static void print_cpu(struct seq_file *m, int cpu) |
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index e24ecd39c4b8..08ae848b71d4 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -334,34 +334,6 @@ int sched_nr_latency_handler(struct ctl_table *table, int write, | |||
334 | #endif | 334 | #endif |
335 | 335 | ||
336 | /* | 336 | /* |
337 | * delta *= w / rw | ||
338 | */ | ||
339 | static inline unsigned long | ||
340 | calc_delta_weight(unsigned long delta, struct sched_entity *se) | ||
341 | { | ||
342 | for_each_sched_entity(se) { | ||
343 | delta = calc_delta_mine(delta, | ||
344 | se->load.weight, &cfs_rq_of(se)->load); | ||
345 | } | ||
346 | |||
347 | return delta; | ||
348 | } | ||
349 | |||
350 | /* | ||
351 | * delta *= rw / w | ||
352 | */ | ||
353 | static inline unsigned long | ||
354 | calc_delta_fair(unsigned long delta, struct sched_entity *se) | ||
355 | { | ||
356 | for_each_sched_entity(se) { | ||
357 | delta = calc_delta_mine(delta, | ||
358 | cfs_rq_of(se)->load.weight, &se->load); | ||
359 | } | ||
360 | |||
361 | return delta; | ||
362 | } | ||
363 | |||
364 | /* | ||
365 | * The idea is to set a period in which each task runs once. | 337 | * The idea is to set a period in which each task runs once. |
366 | * | 338 | * |
367 | * When there are too many tasks (sysctl_sched_nr_latency) we have to stretch | 339 | * When there are too many tasks (sysctl_sched_nr_latency) we have to stretch |
@@ -390,54 +362,47 @@ static u64 __sched_period(unsigned long nr_running) | |||
390 | */ | 362 | */ |
391 | static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) | 363 | static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) |
392 | { | 364 | { |
393 | return calc_delta_weight(__sched_period(cfs_rq->nr_running), se); | 365 | u64 slice = __sched_period(cfs_rq->nr_running); |
366 | |||
367 | for_each_sched_entity(se) { | ||
368 | cfs_rq = cfs_rq_of(se); | ||
369 | |||
370 | slice *= se->load.weight; | ||
371 | do_div(slice, cfs_rq->load.weight); | ||
372 | } | ||
373 | |||
374 | |||
375 | return slice; | ||
394 | } | 376 | } |
395 | 377 | ||
396 | /* | 378 | /* |
397 | * We calculate the vruntime slice of a to be inserted task | 379 | * We calculate the vruntime slice of a to be inserted task |
398 | * | 380 | * |
399 | * vs = s*rw/w = p | 381 | * vs = s/w = p/rw |
400 | */ | 382 | */ |
401 | static u64 sched_vslice_add(struct cfs_rq *cfs_rq, struct sched_entity *se) | 383 | static u64 sched_vslice_add(struct cfs_rq *cfs_rq, struct sched_entity *se) |
402 | { | 384 | { |
403 | unsigned long nr_running = cfs_rq->nr_running; | 385 | unsigned long nr_running = cfs_rq->nr_running; |
386 | unsigned long weight; | ||
387 | u64 vslice; | ||
404 | 388 | ||
405 | if (!se->on_rq) | 389 | if (!se->on_rq) |
406 | nr_running++; | 390 | nr_running++; |
407 | 391 | ||
408 | return __sched_period(nr_running); | 392 | vslice = __sched_period(nr_running); |
409 | } | ||
410 | |||
411 | /* | ||
412 | * The goal of calc_delta_asym() is to be asymmetrically around NICE_0_LOAD, in | ||
413 | * that it favours >=0 over <0. | ||
414 | * | ||
415 | * -20 | | ||
416 | * | | ||
417 | * 0 --------+------- | ||
418 | * .' | ||
419 | * 19 .' | ||
420 | * | ||
421 | */ | ||
422 | static unsigned long | ||
423 | calc_delta_asym(unsigned long delta, struct sched_entity *se) | ||
424 | { | ||
425 | struct load_weight lw = { | ||
426 | .weight = NICE_0_LOAD, | ||
427 | .inv_weight = 1UL << (WMULT_SHIFT-NICE_0_SHIFT) | ||
428 | }; | ||
429 | 393 | ||
430 | for_each_sched_entity(se) { | 394 | for_each_sched_entity(se) { |
431 | struct load_weight *se_lw = &se->load; | 395 | cfs_rq = cfs_rq_of(se); |
432 | 396 | ||
433 | if (se->load.weight < NICE_0_LOAD) | 397 | weight = cfs_rq->load.weight; |
434 | se_lw = &lw; | 398 | if (!se->on_rq) |
399 | weight += se->load.weight; | ||
435 | 400 | ||
436 | delta = calc_delta_mine(delta, | 401 | vslice *= NICE_0_LOAD; |
437 | cfs_rq_of(se)->load.weight, se_lw); | 402 | do_div(vslice, weight); |
438 | } | 403 | } |
439 | 404 | ||
440 | return delta; | 405 | return vslice; |
441 | } | 406 | } |
442 | 407 | ||
443 | /* | 408 | /* |
@@ -454,7 +419,11 @@ __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr, | |||
454 | 419 | ||
455 | curr->sum_exec_runtime += delta_exec; | 420 | curr->sum_exec_runtime += delta_exec; |
456 | schedstat_add(cfs_rq, exec_clock, delta_exec); | 421 | schedstat_add(cfs_rq, exec_clock, delta_exec); |
457 | delta_exec_weighted = calc_delta_fair(delta_exec, curr); | 422 | delta_exec_weighted = delta_exec; |
423 | if (unlikely(curr->load.weight != NICE_0_LOAD)) { | ||
424 | delta_exec_weighted = calc_delta_fair(delta_exec_weighted, | ||
425 | &curr->load); | ||
426 | } | ||
458 | curr->vruntime += delta_exec_weighted; | 427 | curr->vruntime += delta_exec_weighted; |
459 | } | 428 | } |
460 | 429 | ||
@@ -541,27 +510,10 @@ update_stats_curr_start(struct cfs_rq *cfs_rq, struct sched_entity *se) | |||
541 | * Scheduling class queueing methods: | 510 | * Scheduling class queueing methods: |
542 | */ | 511 | */ |
543 | 512 | ||
544 | #if defined CONFIG_SMP && defined CONFIG_FAIR_GROUP_SCHED | ||
545 | static void | ||
546 | add_cfs_task_weight(struct cfs_rq *cfs_rq, unsigned long weight) | ||
547 | { | ||
548 | cfs_rq->task_weight += weight; | ||
549 | } | ||
550 | #else | ||
551 | static inline void | ||
552 | add_cfs_task_weight(struct cfs_rq *cfs_rq, unsigned long weight) | ||
553 | { | ||
554 | } | ||
555 | #endif | ||
556 | |||
557 | static void | 513 | static void |
558 | account_entity_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se) | 514 | account_entity_enqueue(struct cfs_rq *cfs_rq, struct sched_entity *se) |
559 | { | 515 | { |
560 | update_load_add(&cfs_rq->load, se->load.weight); | 516 | update_load_add(&cfs_rq->load, se->load.weight); |
561 | if (!parent_entity(se)) | ||
562 | inc_cpu_load(rq_of(cfs_rq), se->load.weight); | ||
563 | if (entity_is_task(se)) | ||
564 | add_cfs_task_weight(cfs_rq, se->load.weight); | ||
565 | cfs_rq->nr_running++; | 517 | cfs_rq->nr_running++; |
566 | se->on_rq = 1; | 518 | se->on_rq = 1; |
567 | list_add(&se->group_node, &cfs_rq->tasks); | 519 | list_add(&se->group_node, &cfs_rq->tasks); |
@@ -571,10 +523,6 @@ static void | |||
571 | account_entity_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se) | 523 | account_entity_dequeue(struct cfs_rq *cfs_rq, struct sched_entity *se) |
572 | { | 524 | { |
573 | update_load_sub(&cfs_rq->load, se->load.weight); | 525 | update_load_sub(&cfs_rq->load, se->load.weight); |
574 | if (!parent_entity(se)) | ||
575 | dec_cpu_load(rq_of(cfs_rq), se->load.weight); | ||
576 | if (entity_is_task(se)) | ||
577 | add_cfs_task_weight(cfs_rq, -se->load.weight); | ||
578 | cfs_rq->nr_running--; | 526 | cfs_rq->nr_running--; |
579 | se->on_rq = 0; | 527 | se->on_rq = 0; |
580 | list_del_init(&se->group_node); | 528 | list_del_init(&se->group_node); |
@@ -661,17 +609,8 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
661 | 609 | ||
662 | if (!initial) { | 610 | if (!initial) { |
663 | /* sleeps upto a single latency don't count. */ | 611 | /* sleeps upto a single latency don't count. */ |
664 | if (sched_feat(NEW_FAIR_SLEEPERS)) { | 612 | if (sched_feat(NEW_FAIR_SLEEPERS)) |
665 | unsigned long thresh = sysctl_sched_latency; | 613 | vruntime -= sysctl_sched_latency; |
666 | |||
667 | /* | ||
668 | * convert the sleeper threshold into virtual time | ||
669 | */ | ||
670 | if (sched_feat(NORMALIZED_SLEEPER)) | ||
671 | thresh = calc_delta_fair(thresh, se); | ||
672 | |||
673 | vruntime -= thresh; | ||
674 | } | ||
675 | 614 | ||
676 | /* ensure we never gain time by being placed backwards. */ | 615 | /* ensure we never gain time by being placed backwards. */ |
677 | vruntime = max_vruntime(se->vruntime, vruntime); | 616 | vruntime = max_vruntime(se->vruntime, vruntime); |
@@ -1057,16 +996,27 @@ wake_affine(struct rq *rq, struct sched_domain *this_sd, struct rq *this_rq, | |||
1057 | struct task_struct *curr = this_rq->curr; | 996 | struct task_struct *curr = this_rq->curr; |
1058 | unsigned long tl = this_load; | 997 | unsigned long tl = this_load; |
1059 | unsigned long tl_per_task; | 998 | unsigned long tl_per_task; |
999 | int balanced; | ||
1060 | 1000 | ||
1061 | if (!(this_sd->flags & SD_WAKE_AFFINE)) | 1001 | if (!(this_sd->flags & SD_WAKE_AFFINE) || !sched_feat(AFFINE_WAKEUPS)) |
1062 | return 0; | 1002 | return 0; |
1063 | 1003 | ||
1064 | /* | 1004 | /* |
1005 | * If sync wakeup then subtract the (maximum possible) | ||
1006 | * effect of the currently running task from the load | ||
1007 | * of the current CPU: | ||
1008 | */ | ||
1009 | if (sync) | ||
1010 | tl -= current->se.load.weight; | ||
1011 | |||
1012 | balanced = 100*(tl + p->se.load.weight) <= imbalance*load; | ||
1013 | |||
1014 | /* | ||
1065 | * If the currently running task will sleep within | 1015 | * If the currently running task will sleep within |
1066 | * a reasonable amount of time then attract this newly | 1016 | * a reasonable amount of time then attract this newly |
1067 | * woken task: | 1017 | * woken task: |
1068 | */ | 1018 | */ |
1069 | if (sync && curr->sched_class == &fair_sched_class) { | 1019 | if (sync && balanced && curr->sched_class == &fair_sched_class) { |
1070 | if (curr->se.avg_overlap < sysctl_sched_migration_cost && | 1020 | if (curr->se.avg_overlap < sysctl_sched_migration_cost && |
1071 | p->se.avg_overlap < sysctl_sched_migration_cost) | 1021 | p->se.avg_overlap < sysctl_sched_migration_cost) |
1072 | return 1; | 1022 | return 1; |
@@ -1075,16 +1025,8 @@ wake_affine(struct rq *rq, struct sched_domain *this_sd, struct rq *this_rq, | |||
1075 | schedstat_inc(p, se.nr_wakeups_affine_attempts); | 1025 | schedstat_inc(p, se.nr_wakeups_affine_attempts); |
1076 | tl_per_task = cpu_avg_load_per_task(this_cpu); | 1026 | tl_per_task = cpu_avg_load_per_task(this_cpu); |
1077 | 1027 | ||
1078 | /* | ||
1079 | * If sync wakeup then subtract the (maximum possible) | ||
1080 | * effect of the currently running task from the load | ||
1081 | * of the current CPU: | ||
1082 | */ | ||
1083 | if (sync) | ||
1084 | tl -= current->se.load.weight; | ||
1085 | |||
1086 | if ((tl <= load && tl + target_load(prev_cpu, idx) <= tl_per_task) || | 1028 | if ((tl <= load && tl + target_load(prev_cpu, idx) <= tl_per_task) || |
1087 | 100*(tl + p->se.load.weight) <= imbalance*load) { | 1029 | balanced) { |
1088 | /* | 1030 | /* |
1089 | * This domain has SD_WAKE_AFFINE and | 1031 | * This domain has SD_WAKE_AFFINE and |
1090 | * p is cache cold in this domain, and | 1032 | * p is cache cold in this domain, and |
@@ -1169,10 +1111,11 @@ static unsigned long wakeup_gran(struct sched_entity *se) | |||
1169 | unsigned long gran = sysctl_sched_wakeup_granularity; | 1111 | unsigned long gran = sysctl_sched_wakeup_granularity; |
1170 | 1112 | ||
1171 | /* | 1113 | /* |
1172 | * More easily preempt - nice tasks, while not making it harder for | 1114 | * More easily preempt - nice tasks, while not making |
1173 | * + nice tasks. | 1115 | * it harder for + nice tasks. |
1174 | */ | 1116 | */ |
1175 | gran = calc_delta_asym(sysctl_sched_wakeup_granularity, se); | 1117 | if (unlikely(se->load.weight > NICE_0_LOAD)) |
1118 | gran = calc_delta_fair(gran, &se->load); | ||
1176 | 1119 | ||
1177 | return gran; | 1120 | return gran; |
1178 | } | 1121 | } |
@@ -1366,90 +1309,75 @@ static struct task_struct *load_balance_next_fair(void *arg) | |||
1366 | return __load_balance_iterator(cfs_rq, cfs_rq->balance_iterator); | 1309 | return __load_balance_iterator(cfs_rq, cfs_rq->balance_iterator); |
1367 | } | 1310 | } |
1368 | 1311 | ||
1369 | static unsigned long | 1312 | #ifdef CONFIG_FAIR_GROUP_SCHED |
1370 | __load_balance_fair(struct rq *this_rq, int this_cpu, struct rq *busiest, | 1313 | static int cfs_rq_best_prio(struct cfs_rq *cfs_rq) |
1371 | unsigned long max_load_move, struct sched_domain *sd, | ||
1372 | enum cpu_idle_type idle, int *all_pinned, int *this_best_prio, | ||
1373 | struct cfs_rq *cfs_rq) | ||
1374 | { | 1314 | { |
1375 | struct rq_iterator cfs_rq_iterator; | 1315 | struct sched_entity *curr; |
1316 | struct task_struct *p; | ||
1376 | 1317 | ||
1377 | cfs_rq_iterator.start = load_balance_start_fair; | 1318 | if (!cfs_rq->nr_running || !first_fair(cfs_rq)) |
1378 | cfs_rq_iterator.next = load_balance_next_fair; | 1319 | return MAX_PRIO; |
1379 | cfs_rq_iterator.arg = cfs_rq; | 1320 | |
1321 | curr = cfs_rq->curr; | ||
1322 | if (!curr) | ||
1323 | curr = __pick_next_entity(cfs_rq); | ||
1324 | |||
1325 | p = task_of(curr); | ||
1380 | 1326 | ||
1381 | return balance_tasks(this_rq, this_cpu, busiest, | 1327 | return p->prio; |
1382 | max_load_move, sd, idle, all_pinned, | ||
1383 | this_best_prio, &cfs_rq_iterator); | ||
1384 | } | 1328 | } |
1329 | #endif | ||
1385 | 1330 | ||
1386 | #ifdef CONFIG_FAIR_GROUP_SCHED | ||
1387 | static unsigned long | 1331 | static unsigned long |
1388 | load_balance_fair(struct rq *this_rq, int this_cpu, struct rq *busiest, | 1332 | load_balance_fair(struct rq *this_rq, int this_cpu, struct rq *busiest, |
1389 | unsigned long max_load_move, | 1333 | unsigned long max_load_move, |
1390 | struct sched_domain *sd, enum cpu_idle_type idle, | 1334 | struct sched_domain *sd, enum cpu_idle_type idle, |
1391 | int *all_pinned, int *this_best_prio) | 1335 | int *all_pinned, int *this_best_prio) |
1392 | { | 1336 | { |
1337 | struct cfs_rq *busy_cfs_rq; | ||
1393 | long rem_load_move = max_load_move; | 1338 | long rem_load_move = max_load_move; |
1394 | int busiest_cpu = cpu_of(busiest); | 1339 | struct rq_iterator cfs_rq_iterator; |
1395 | struct task_group *tg; | ||
1396 | |||
1397 | rcu_read_lock(); | ||
1398 | list_for_each_entry(tg, &task_groups, list) { | ||
1399 | long imbalance; | ||
1400 | unsigned long this_weight, busiest_weight; | ||
1401 | long rem_load, max_load, moved_load; | ||
1402 | |||
1403 | /* | ||
1404 | * empty group | ||
1405 | */ | ||
1406 | if (!aggregate(tg, sd)->task_weight) | ||
1407 | continue; | ||
1408 | |||
1409 | rem_load = rem_load_move * aggregate(tg, sd)->rq_weight; | ||
1410 | rem_load /= aggregate(tg, sd)->load + 1; | ||
1411 | |||
1412 | this_weight = tg->cfs_rq[this_cpu]->task_weight; | ||
1413 | busiest_weight = tg->cfs_rq[busiest_cpu]->task_weight; | ||
1414 | 1340 | ||
1415 | imbalance = (busiest_weight - this_weight) / 2; | 1341 | cfs_rq_iterator.start = load_balance_start_fair; |
1342 | cfs_rq_iterator.next = load_balance_next_fair; | ||
1416 | 1343 | ||
1417 | if (imbalance < 0) | 1344 | for_each_leaf_cfs_rq(busiest, busy_cfs_rq) { |
1418 | imbalance = busiest_weight; | 1345 | #ifdef CONFIG_FAIR_GROUP_SCHED |
1346 | struct cfs_rq *this_cfs_rq; | ||
1347 | long imbalance; | ||
1348 | unsigned long maxload; | ||
1419 | 1349 | ||
1420 | max_load = max(rem_load, imbalance); | 1350 | this_cfs_rq = cpu_cfs_rq(busy_cfs_rq, this_cpu); |
1421 | moved_load = __load_balance_fair(this_rq, this_cpu, busiest, | ||
1422 | max_load, sd, idle, all_pinned, this_best_prio, | ||
1423 | tg->cfs_rq[busiest_cpu]); | ||
1424 | 1351 | ||
1425 | if (!moved_load) | 1352 | imbalance = busy_cfs_rq->load.weight - this_cfs_rq->load.weight; |
1353 | /* Don't pull if this_cfs_rq has more load than busy_cfs_rq */ | ||
1354 | if (imbalance <= 0) | ||
1426 | continue; | 1355 | continue; |
1427 | 1356 | ||
1428 | move_group_shares(tg, sd, busiest_cpu, this_cpu); | 1357 | /* Don't pull more than imbalance/2 */ |
1358 | imbalance /= 2; | ||
1359 | maxload = min(rem_load_move, imbalance); | ||
1429 | 1360 | ||
1430 | moved_load *= aggregate(tg, sd)->load; | 1361 | *this_best_prio = cfs_rq_best_prio(this_cfs_rq); |
1431 | moved_load /= aggregate(tg, sd)->rq_weight + 1; | 1362 | #else |
1363 | # define maxload rem_load_move | ||
1364 | #endif | ||
1365 | /* | ||
1366 | * pass busy_cfs_rq argument into | ||
1367 | * load_balance_[start|next]_fair iterators | ||
1368 | */ | ||
1369 | cfs_rq_iterator.arg = busy_cfs_rq; | ||
1370 | rem_load_move -= balance_tasks(this_rq, this_cpu, busiest, | ||
1371 | maxload, sd, idle, all_pinned, | ||
1372 | this_best_prio, | ||
1373 | &cfs_rq_iterator); | ||
1432 | 1374 | ||
1433 | rem_load_move -= moved_load; | 1375 | if (rem_load_move <= 0) |
1434 | if (rem_load_move < 0) | ||
1435 | break; | 1376 | break; |
1436 | } | 1377 | } |
1437 | rcu_read_unlock(); | ||
1438 | 1378 | ||
1439 | return max_load_move - rem_load_move; | 1379 | return max_load_move - rem_load_move; |
1440 | } | 1380 | } |
1441 | #else | ||
1442 | static unsigned long | ||
1443 | load_balance_fair(struct rq *this_rq, int this_cpu, struct rq *busiest, | ||
1444 | unsigned long max_load_move, | ||
1445 | struct sched_domain *sd, enum cpu_idle_type idle, | ||
1446 | int *all_pinned, int *this_best_prio) | ||
1447 | { | ||
1448 | return __load_balance_fair(this_rq, this_cpu, busiest, | ||
1449 | max_load_move, sd, idle, all_pinned, | ||
1450 | this_best_prio, &busiest->cfs); | ||
1451 | } | ||
1452 | #endif | ||
1453 | 1381 | ||
1454 | static int | 1382 | static int |
1455 | move_one_task_fair(struct rq *this_rq, int this_cpu, struct rq *busiest, | 1383 | move_one_task_fair(struct rq *this_rq, int this_cpu, struct rq *busiest, |
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c index 060e87b0cb1c..3432d573205d 100644 --- a/kernel/sched_rt.c +++ b/kernel/sched_rt.c | |||
@@ -513,8 +513,6 @@ static void enqueue_task_rt(struct rq *rq, struct task_struct *p, int wakeup) | |||
513 | */ | 513 | */ |
514 | for_each_sched_rt_entity(rt_se) | 514 | for_each_sched_rt_entity(rt_se) |
515 | enqueue_rt_entity(rt_se); | 515 | enqueue_rt_entity(rt_se); |
516 | |||
517 | inc_cpu_load(rq, p->se.load.weight); | ||
518 | } | 516 | } |
519 | 517 | ||
520 | static void dequeue_task_rt(struct rq *rq, struct task_struct *p, int sleep) | 518 | static void dequeue_task_rt(struct rq *rq, struct task_struct *p, int sleep) |
@@ -534,8 +532,6 @@ static void dequeue_task_rt(struct rq *rq, struct task_struct *p, int sleep) | |||
534 | if (rt_rq && rt_rq->rt_nr_running) | 532 | if (rt_rq && rt_rq->rt_nr_running) |
535 | enqueue_rt_entity(rt_se); | 533 | enqueue_rt_entity(rt_se); |
536 | } | 534 | } |
537 | |||
538 | dec_cpu_load(rq, p->se.load.weight); | ||
539 | } | 535 | } |
540 | 536 | ||
541 | /* | 537 | /* |
diff --git a/kernel/sched_stats.h b/kernel/sched_stats.h index 5bae2e0c3ff2..a38878e0e49d 100644 --- a/kernel/sched_stats.h +++ b/kernel/sched_stats.h | |||
@@ -67,6 +67,7 @@ static int show_schedstat(struct seq_file *seq, void *v) | |||
67 | preempt_enable(); | 67 | preempt_enable(); |
68 | #endif | 68 | #endif |
69 | } | 69 | } |
70 | kfree(mask_str); | ||
70 | return 0; | 71 | return 0; |
71 | } | 72 | } |
72 | 73 | ||
diff --git a/kernel/signal.c b/kernel/signal.c index 72bb4f51f963..6c0958e52ea7 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
@@ -231,6 +231,40 @@ void flush_signals(struct task_struct *t) | |||
231 | spin_unlock_irqrestore(&t->sighand->siglock, flags); | 231 | spin_unlock_irqrestore(&t->sighand->siglock, flags); |
232 | } | 232 | } |
233 | 233 | ||
234 | static void __flush_itimer_signals(struct sigpending *pending) | ||
235 | { | ||
236 | sigset_t signal, retain; | ||
237 | struct sigqueue *q, *n; | ||
238 | |||
239 | signal = pending->signal; | ||
240 | sigemptyset(&retain); | ||
241 | |||
242 | list_for_each_entry_safe(q, n, &pending->list, list) { | ||
243 | int sig = q->info.si_signo; | ||
244 | |||
245 | if (likely(q->info.si_code != SI_TIMER)) { | ||
246 | sigaddset(&retain, sig); | ||
247 | } else { | ||
248 | sigdelset(&signal, sig); | ||
249 | list_del_init(&q->list); | ||
250 | __sigqueue_free(q); | ||
251 | } | ||
252 | } | ||
253 | |||
254 | sigorsets(&pending->signal, &signal, &retain); | ||
255 | } | ||
256 | |||
257 | void flush_itimer_signals(void) | ||
258 | { | ||
259 | struct task_struct *tsk = current; | ||
260 | unsigned long flags; | ||
261 | |||
262 | spin_lock_irqsave(&tsk->sighand->siglock, flags); | ||
263 | __flush_itimer_signals(&tsk->pending); | ||
264 | __flush_itimer_signals(&tsk->signal->shared_pending); | ||
265 | spin_unlock_irqrestore(&tsk->sighand->siglock, flags); | ||
266 | } | ||
267 | |||
234 | void ignore_signals(struct task_struct *t) | 268 | void ignore_signals(struct task_struct *t) |
235 | { | 269 | { |
236 | int i; | 270 | int i; |
@@ -1240,17 +1274,22 @@ void sigqueue_free(struct sigqueue *q) | |||
1240 | 1274 | ||
1241 | BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); | 1275 | BUG_ON(!(q->flags & SIGQUEUE_PREALLOC)); |
1242 | /* | 1276 | /* |
1243 | * If the signal is still pending remove it from the | 1277 | * We must hold ->siglock while testing q->list |
1244 | * pending queue. We must hold ->siglock while testing | 1278 | * to serialize with collect_signal() or with |
1245 | * q->list to serialize with collect_signal(). | 1279 | * __exit_signal()->flush_sigqueue(). |
1246 | */ | 1280 | */ |
1247 | spin_lock_irqsave(lock, flags); | 1281 | spin_lock_irqsave(lock, flags); |
1282 | q->flags &= ~SIGQUEUE_PREALLOC; | ||
1283 | /* | ||
1284 | * If it is queued it will be freed when dequeued, | ||
1285 | * like the "regular" sigqueue. | ||
1286 | */ | ||
1248 | if (!list_empty(&q->list)) | 1287 | if (!list_empty(&q->list)) |
1249 | list_del_init(&q->list); | 1288 | q = NULL; |
1250 | spin_unlock_irqrestore(lock, flags); | 1289 | spin_unlock_irqrestore(lock, flags); |
1251 | 1290 | ||
1252 | q->flags &= ~SIGQUEUE_PREALLOC; | 1291 | if (q) |
1253 | __sigqueue_free(q); | 1292 | __sigqueue_free(q); |
1254 | } | 1293 | } |
1255 | 1294 | ||
1256 | int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) | 1295 | int send_sigqueue(struct sigqueue *q, struct task_struct *t, int group) |
diff --git a/kernel/stop_machine.c b/kernel/stop_machine.c index 0101aeef7ed7..b7350bbfb076 100644 --- a/kernel/stop_machine.c +++ b/kernel/stop_machine.c | |||
@@ -62,8 +62,7 @@ static int stopmachine(void *cpu) | |||
62 | * help our sisters onto their CPUs. */ | 62 | * help our sisters onto their CPUs. */ |
63 | if (!prepared && !irqs_disabled) | 63 | if (!prepared && !irqs_disabled) |
64 | yield(); | 64 | yield(); |
65 | else | 65 | cpu_relax(); |
66 | cpu_relax(); | ||
67 | } | 66 | } |
68 | 67 | ||
69 | /* Ack: we are exiting. */ | 68 | /* Ack: we are exiting. */ |
@@ -106,8 +105,10 @@ static int stop_machine(void) | |||
106 | } | 105 | } |
107 | 106 | ||
108 | /* Wait for them all to come to life. */ | 107 | /* Wait for them all to come to life. */ |
109 | while (atomic_read(&stopmachine_thread_ack) != stopmachine_num_threads) | 108 | while (atomic_read(&stopmachine_thread_ack) != stopmachine_num_threads) { |
110 | yield(); | 109 | yield(); |
110 | cpu_relax(); | ||
111 | } | ||
111 | 112 | ||
112 | /* If some failed, kill them all. */ | 113 | /* If some failed, kill them all. */ |
113 | if (ret < 0) { | 114 | if (ret < 0) { |
diff --git a/kernel/sys.c b/kernel/sys.c index 895d2d4c9493..14e97282eb6c 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -1652,7 +1652,7 @@ asmlinkage long sys_umask(int mask) | |||
1652 | asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3, | 1652 | asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3, |
1653 | unsigned long arg4, unsigned long arg5) | 1653 | unsigned long arg4, unsigned long arg5) |
1654 | { | 1654 | { |
1655 | long uninitialized_var(error); | 1655 | long error = 0; |
1656 | 1656 | ||
1657 | if (security_task_prctl(option, arg2, arg3, arg4, arg5, &error)) | 1657 | if (security_task_prctl(option, arg2, arg3, arg4, arg5, &error)) |
1658 | return error; | 1658 | return error; |
@@ -1701,9 +1701,7 @@ asmlinkage long sys_prctl(int option, unsigned long arg2, unsigned long arg3, | |||
1701 | error = PR_TIMING_STATISTICAL; | 1701 | error = PR_TIMING_STATISTICAL; |
1702 | break; | 1702 | break; |
1703 | case PR_SET_TIMING: | 1703 | case PR_SET_TIMING: |
1704 | if (arg2 == PR_TIMING_STATISTICAL) | 1704 | if (arg2 != PR_TIMING_STATISTICAL) |
1705 | error = 0; | ||
1706 | else | ||
1707 | error = -EINVAL; | 1705 | error = -EINVAL; |
1708 | break; | 1706 | break; |
1709 | 1707 | ||
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index d7ffdc59816a..29116652dca8 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -81,6 +81,7 @@ extern int compat_log; | |||
81 | extern int maps_protect; | 81 | extern int maps_protect; |
82 | extern int sysctl_stat_interval; | 82 | extern int sysctl_stat_interval; |
83 | extern int latencytop_enabled; | 83 | extern int latencytop_enabled; |
84 | extern int sysctl_nr_open_min, sysctl_nr_open_max; | ||
84 | 85 | ||
85 | /* Constants used for minimum and maximum */ | 86 | /* Constants used for minimum and maximum */ |
86 | #if defined(CONFIG_DETECT_SOFTLOCKUP) || defined(CONFIG_HIGHMEM) | 87 | #if defined(CONFIG_DETECT_SOFTLOCKUP) || defined(CONFIG_HIGHMEM) |
@@ -1190,7 +1191,9 @@ static struct ctl_table fs_table[] = { | |||
1190 | .data = &sysctl_nr_open, | 1191 | .data = &sysctl_nr_open, |
1191 | .maxlen = sizeof(int), | 1192 | .maxlen = sizeof(int), |
1192 | .mode = 0644, | 1193 | .mode = 0644, |
1193 | .proc_handler = &proc_dointvec, | 1194 | .proc_handler = &proc_dointvec_minmax, |
1195 | .extra1 = &sysctl_nr_open_min, | ||
1196 | .extra2 = &sysctl_nr_open_max, | ||
1194 | }, | 1197 | }, |
1195 | { | 1198 | { |
1196 | .ctl_name = FS_DENTRY, | 1199 | .ctl_name = FS_DENTRY, |
@@ -48,7 +48,8 @@ void lmb_dump_all(void) | |||
48 | } | 48 | } |
49 | 49 | ||
50 | pr_info(" reserved.cnt = 0x%lx\n", lmb.reserved.cnt); | 50 | pr_info(" reserved.cnt = 0x%lx\n", lmb.reserved.cnt); |
51 | pr_info(" reserved.size = 0x%lx\n", lmb.reserved.size); | 51 | pr_info(" reserved.size = 0x%llx\n", |
52 | (unsigned long long)lmb.memory.size); | ||
52 | for (i=0; i < lmb.reserved.cnt ;i++) { | 53 | for (i=0; i < lmb.reserved.cnt ;i++) { |
53 | pr_info(" reserved.region[0x%lx].base = 0x%llx\n", | 54 | pr_info(" reserved.region[0x%lx].base = 0x%llx\n", |
54 | i, (unsigned long long)lmb.reserved.region[i].base); | 55 | i, (unsigned long long)lmb.reserved.region[i].base); |
diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 7c4f9e097095..f2e574dbc300 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c | |||
@@ -172,30 +172,22 @@ postcore_initcall(bdi_class_init); | |||
172 | int bdi_register(struct backing_dev_info *bdi, struct device *parent, | 172 | int bdi_register(struct backing_dev_info *bdi, struct device *parent, |
173 | const char *fmt, ...) | 173 | const char *fmt, ...) |
174 | { | 174 | { |
175 | char *name; | ||
176 | va_list args; | 175 | va_list args; |
177 | int ret = 0; | 176 | int ret = 0; |
178 | struct device *dev; | 177 | struct device *dev; |
179 | 178 | ||
180 | va_start(args, fmt); | 179 | va_start(args, fmt); |
181 | name = kvasprintf(GFP_KERNEL, fmt, args); | 180 | dev = device_create_vargs(bdi_class, parent, MKDEV(0, 0), bdi, fmt, args); |
182 | va_end(args); | 181 | va_end(args); |
183 | |||
184 | if (!name) | ||
185 | return -ENOMEM; | ||
186 | |||
187 | dev = device_create(bdi_class, parent, MKDEV(0, 0), name); | ||
188 | if (IS_ERR(dev)) { | 182 | if (IS_ERR(dev)) { |
189 | ret = PTR_ERR(dev); | 183 | ret = PTR_ERR(dev); |
190 | goto exit; | 184 | goto exit; |
191 | } | 185 | } |
192 | 186 | ||
193 | bdi->dev = dev; | 187 | bdi->dev = dev; |
194 | dev_set_drvdata(bdi->dev, bdi); | 188 | bdi_debug_register(bdi, dev_name(dev)); |
195 | bdi_debug_register(bdi, name); | ||
196 | 189 | ||
197 | exit: | 190 | exit: |
198 | kfree(name); | ||
199 | return ret; | 191 | return ret; |
200 | } | 192 | } |
201 | EXPORT_SYMBOL(bdi_register); | 193 | EXPORT_SYMBOL(bdi_register); |
diff --git a/mm/memory.c b/mm/memory.c index fb5608a120ed..19e0ae9beecb 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
@@ -2295,8 +2295,6 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma, | |||
2295 | vmf.flags = flags; | 2295 | vmf.flags = flags; |
2296 | vmf.page = NULL; | 2296 | vmf.page = NULL; |
2297 | 2297 | ||
2298 | BUG_ON(vma->vm_flags & VM_PFNMAP); | ||
2299 | |||
2300 | ret = vma->vm_ops->fault(vma, &vmf); | 2298 | ret = vma->vm_ops->fault(vma, &vmf); |
2301 | if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE))) | 2299 | if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE))) |
2302 | return ret; | 2300 | return ret; |
@@ -80,7 +80,7 @@ EXPORT_SYMBOL(vm_get_page_prot); | |||
80 | int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */ | 80 | int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */ |
81 | int sysctl_overcommit_ratio = 50; /* default is 50% */ | 81 | int sysctl_overcommit_ratio = 50; /* default is 50% */ |
82 | int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT; | 82 | int sysctl_max_map_count __read_mostly = DEFAULT_MAX_MAP_COUNT; |
83 | atomic_t vm_committed_space = ATOMIC_INIT(0); | 83 | atomic_long_t vm_committed_space = ATOMIC_LONG_INIT(0); |
84 | 84 | ||
85 | /* | 85 | /* |
86 | * Check that a process has enough memory to allocate a new virtual | 86 | * Check that a process has enough memory to allocate a new virtual |
@@ -177,7 +177,7 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin) | |||
177 | * cast `allowed' as a signed long because vm_committed_space | 177 | * cast `allowed' as a signed long because vm_committed_space |
178 | * sometimes has a negative value | 178 | * sometimes has a negative value |
179 | */ | 179 | */ |
180 | if (atomic_read(&vm_committed_space) < (long)allowed) | 180 | if (atomic_long_read(&vm_committed_space) < (long)allowed) |
181 | return 0; | 181 | return 0; |
182 | error: | 182 | error: |
183 | vm_unacct_memory(pages); | 183 | vm_unacct_memory(pages); |
diff --git a/mm/nommu.c b/mm/nommu.c index ef8c62cec697..dca93fcb8b7a 100644 --- a/mm/nommu.c +++ b/mm/nommu.c | |||
@@ -39,7 +39,7 @@ struct page *mem_map; | |||
39 | unsigned long max_mapnr; | 39 | unsigned long max_mapnr; |
40 | unsigned long num_physpages; | 40 | unsigned long num_physpages; |
41 | unsigned long askedalloc, realalloc; | 41 | unsigned long askedalloc, realalloc; |
42 | atomic_t vm_committed_space = ATOMIC_INIT(0); | 42 | atomic_long_t vm_committed_space = ATOMIC_LONG_INIT(0); |
43 | int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */ | 43 | int sysctl_overcommit_memory = OVERCOMMIT_GUESS; /* heuristic overcommit */ |
44 | int sysctl_overcommit_ratio = 50; /* default is 50% */ | 44 | int sysctl_overcommit_ratio = 50; /* default is 50% */ |
45 | int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT; | 45 | int sysctl_max_map_count = DEFAULT_MAX_MAP_COUNT; |
@@ -1410,7 +1410,7 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin) | |||
1410 | * cast `allowed' as a signed long because vm_committed_space | 1410 | * cast `allowed' as a signed long because vm_committed_space |
1411 | * sometimes has a negative value | 1411 | * sometimes has a negative value |
1412 | */ | 1412 | */ |
1413 | if (atomic_read(&vm_committed_space) < (long)allowed) | 1413 | if (atomic_long_read(&vm_committed_space) < (long)allowed) |
1414 | return 0; | 1414 | return 0; |
1415 | error: | 1415 | error: |
1416 | vm_unacct_memory(pages); | 1416 | vm_unacct_memory(pages); |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 63835579323a..8e83f02cd2d3 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
@@ -1396,6 +1396,9 @@ get_page_from_freelist(gfp_t gfp_mask, nodemask_t *nodemask, unsigned int order, | |||
1396 | 1396 | ||
1397 | (void)first_zones_zonelist(zonelist, high_zoneidx, nodemask, | 1397 | (void)first_zones_zonelist(zonelist, high_zoneidx, nodemask, |
1398 | &preferred_zone); | 1398 | &preferred_zone); |
1399 | if (!preferred_zone) | ||
1400 | return NULL; | ||
1401 | |||
1399 | classzone_idx = zone_idx(preferred_zone); | 1402 | classzone_idx = zone_idx(preferred_zone); |
1400 | 1403 | ||
1401 | zonelist_scan: | 1404 | zonelist_scan: |
@@ -2804,7 +2807,7 @@ int zone_wait_table_init(struct zone *zone, unsigned long zone_size_pages) | |||
2804 | alloc_size = zone->wait_table_hash_nr_entries | 2807 | alloc_size = zone->wait_table_hash_nr_entries |
2805 | * sizeof(wait_queue_head_t); | 2808 | * sizeof(wait_queue_head_t); |
2806 | 2809 | ||
2807 | if (system_state == SYSTEM_BOOTING) { | 2810 | if (!slab_is_available()) { |
2808 | zone->wait_table = (wait_queue_head_t *) | 2811 | zone->wait_table = (wait_queue_head_t *) |
2809 | alloc_bootmem_node(pgdat, alloc_size); | 2812 | alloc_bootmem_node(pgdat, alloc_size); |
2810 | } else { | 2813 | } else { |
@@ -3378,7 +3381,8 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat, | |||
3378 | * is used by this zone for memmap. This affects the watermark | 3381 | * is used by this zone for memmap. This affects the watermark |
3379 | * and per-cpu initialisations | 3382 | * and per-cpu initialisations |
3380 | */ | 3383 | */ |
3381 | memmap_pages = (size * sizeof(struct page)) >> PAGE_SHIFT; | 3384 | memmap_pages = |
3385 | PAGE_ALIGN(size * sizeof(struct page)) >> PAGE_SHIFT; | ||
3382 | if (realsize >= memmap_pages) { | 3386 | if (realsize >= memmap_pages) { |
3383 | realsize -= memmap_pages; | 3387 | realsize -= memmap_pages; |
3384 | printk(KERN_DEBUG | 3388 | printk(KERN_DEBUG |
@@ -469,8 +469,9 @@ void *__kmalloc_node(size_t size, gfp_t gfp, int node) | |||
469 | return ZERO_SIZE_PTR; | 469 | return ZERO_SIZE_PTR; |
470 | 470 | ||
471 | m = slob_alloc(size + align, gfp, align, node); | 471 | m = slob_alloc(size + align, gfp, align, node); |
472 | if (m) | 472 | if (!m) |
473 | *m = size; | 473 | return NULL; |
474 | *m = size; | ||
474 | return (void *)m + align; | 475 | return (void *)m + align; |
475 | } else { | 476 | } else { |
476 | void *ret; | 477 | void *ret; |
@@ -2726,9 +2726,10 @@ size_t ksize(const void *object) | |||
2726 | 2726 | ||
2727 | page = virt_to_head_page(object); | 2727 | page = virt_to_head_page(object); |
2728 | 2728 | ||
2729 | if (unlikely(!PageSlab(page))) | 2729 | if (unlikely(!PageSlab(page))) { |
2730 | WARN_ON(!PageCompound(page)); | ||
2730 | return PAGE_SIZE << compound_order(page); | 2731 | return PAGE_SIZE << compound_order(page); |
2731 | 2732 | } | |
2732 | s = page->slab; | 2733 | s = page->slab; |
2733 | 2734 | ||
2734 | #ifdef CONFIG_SLUB_DEBUG | 2735 | #ifdef CONFIG_SLUB_DEBUG |
@@ -503,7 +503,7 @@ void vm_acct_memory(long pages) | |||
503 | local = &__get_cpu_var(committed_space); | 503 | local = &__get_cpu_var(committed_space); |
504 | *local += pages; | 504 | *local += pages; |
505 | if (*local > ACCT_THRESHOLD || *local < -ACCT_THRESHOLD) { | 505 | if (*local > ACCT_THRESHOLD || *local < -ACCT_THRESHOLD) { |
506 | atomic_add(*local, &vm_committed_space); | 506 | atomic_long_add(*local, &vm_committed_space); |
507 | *local = 0; | 507 | *local = 0; |
508 | } | 508 | } |
509 | preempt_enable(); | 509 | preempt_enable(); |
@@ -520,7 +520,7 @@ static int cpu_swap_callback(struct notifier_block *nfb, | |||
520 | 520 | ||
521 | committed = &per_cpu(committed_space, (long)hcpu); | 521 | committed = &per_cpu(committed_space, (long)hcpu); |
522 | if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { | 522 | if (action == CPU_DEAD || action == CPU_DEAD_FROZEN) { |
523 | atomic_add(*committed, &vm_committed_space); | 523 | atomic_long_add(*committed, &vm_committed_space); |
524 | *committed = 0; | 524 | *committed = 0; |
525 | drain_cpu_pagevecs((long)hcpu); | 525 | drain_cpu_pagevecs((long)hcpu); |
526 | } | 526 | } |
diff --git a/net/ax25/ax25_subr.c b/net/ax25/ax25_subr.c index d8f215733175..034aa10a5198 100644 --- a/net/ax25/ax25_subr.c +++ b/net/ax25/ax25_subr.c | |||
@@ -64,20 +64,15 @@ void ax25_frames_acked(ax25_cb *ax25, unsigned short nr) | |||
64 | 64 | ||
65 | void ax25_requeue_frames(ax25_cb *ax25) | 65 | void ax25_requeue_frames(ax25_cb *ax25) |
66 | { | 66 | { |
67 | struct sk_buff *skb, *skb_prev = NULL; | 67 | struct sk_buff *skb; |
68 | 68 | ||
69 | /* | 69 | /* |
70 | * Requeue all the un-ack-ed frames on the output queue to be picked | 70 | * Requeue all the un-ack-ed frames on the output queue to be picked |
71 | * up by ax25_kick called from the timer. This arrangement handles the | 71 | * up by ax25_kick called from the timer. This arrangement handles the |
72 | * possibility of an empty output queue. | 72 | * possibility of an empty output queue. |
73 | */ | 73 | */ |
74 | while ((skb = skb_dequeue(&ax25->ack_queue)) != NULL) { | 74 | while ((skb = skb_dequeue_tail(&ax25->ack_queue)) != NULL) |
75 | if (skb_prev == NULL) | 75 | skb_queue_head(&ax25->write_queue, skb); |
76 | skb_queue_head(&ax25->write_queue, skb); | ||
77 | else | ||
78 | skb_append(skb_prev, skb, &ax25->write_queue); | ||
79 | skb_prev = skb; | ||
80 | } | ||
81 | } | 76 | } |
82 | 77 | ||
83 | /* | 78 | /* |
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index eb62558e9b09..0c2c93735e93 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
@@ -423,8 +423,8 @@ static int __rfcomm_dlc_close(struct rfcomm_dlc *d, int err) | |||
423 | 423 | ||
424 | rfcomm_dlc_lock(d); | 424 | rfcomm_dlc_lock(d); |
425 | d->state = BT_CLOSED; | 425 | d->state = BT_CLOSED; |
426 | rfcomm_dlc_unlock(d); | ||
427 | d->state_change(d, err); | 426 | d->state_change(d, err); |
427 | rfcomm_dlc_unlock(d); | ||
428 | 428 | ||
429 | skb_queue_purge(&d->tx_queue); | 429 | skb_queue_purge(&d->tx_queue); |
430 | rfcomm_dlc_unlink(d); | 430 | rfcomm_dlc_unlink(d); |
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index c3f749abb2d0..c9191871c1e0 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
@@ -566,11 +566,22 @@ static void rfcomm_dev_state_change(struct rfcomm_dlc *dlc, int err) | |||
566 | if (dlc->state == BT_CLOSED) { | 566 | if (dlc->state == BT_CLOSED) { |
567 | if (!dev->tty) { | 567 | if (!dev->tty) { |
568 | if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) { | 568 | if (test_bit(RFCOMM_RELEASE_ONHUP, &dev->flags)) { |
569 | if (rfcomm_dev_get(dev->id) == NULL) | 569 | /* Drop DLC lock here to avoid deadlock |
570 | * 1. rfcomm_dev_get will take rfcomm_dev_lock | ||
571 | * but in rfcomm_dev_add there's lock order: | ||
572 | * rfcomm_dev_lock -> dlc lock | ||
573 | * 2. rfcomm_dev_put will deadlock if it's | ||
574 | * the last reference | ||
575 | */ | ||
576 | rfcomm_dlc_unlock(dlc); | ||
577 | if (rfcomm_dev_get(dev->id) == NULL) { | ||
578 | rfcomm_dlc_lock(dlc); | ||
570 | return; | 579 | return; |
580 | } | ||
571 | 581 | ||
572 | rfcomm_dev_del(dev); | 582 | rfcomm_dev_del(dev); |
573 | rfcomm_dev_put(dev); | 583 | rfcomm_dev_put(dev); |
584 | rfcomm_dlc_lock(dlc); | ||
574 | } | 585 | } |
575 | } else | 586 | } else |
576 | tty_hangup(dev->tty); | 587 | tty_hangup(dev->tty); |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 5d9d7130bd6e..65f01f71b3f3 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -1714,7 +1714,8 @@ static int neightbl_fill_parms(struct sk_buff *skb, struct neigh_parms *parms) | |||
1714 | return nla_nest_end(skb, nest); | 1714 | return nla_nest_end(skb, nest); |
1715 | 1715 | ||
1716 | nla_put_failure: | 1716 | nla_put_failure: |
1717 | return nla_nest_cancel(skb, nest); | 1717 | nla_nest_cancel(skb, nest); |
1718 | return -EMSGSIZE; | ||
1718 | } | 1719 | } |
1719 | 1720 | ||
1720 | static int neightbl_fill_info(struct sk_buff *skb, struct neigh_table *tbl, | 1721 | static int neightbl_fill_info(struct sk_buff *skb, struct neigh_table *tbl, |
@@ -2057,9 +2058,9 @@ static int neigh_fill_info(struct sk_buff *skb, struct neighbour *neigh, | |||
2057 | goto nla_put_failure; | 2058 | goto nla_put_failure; |
2058 | } | 2059 | } |
2059 | 2060 | ||
2060 | ci.ndm_used = now - neigh->used; | 2061 | ci.ndm_used = jiffies_to_clock_t(now - neigh->used); |
2061 | ci.ndm_confirmed = now - neigh->confirmed; | 2062 | ci.ndm_confirmed = jiffies_to_clock_t(now - neigh->confirmed); |
2062 | ci.ndm_updated = now - neigh->updated; | 2063 | ci.ndm_updated = jiffies_to_clock_t(now - neigh->updated); |
2063 | ci.ndm_refcnt = atomic_read(&neigh->refcnt) - 1; | 2064 | ci.ndm_refcnt = atomic_read(&neigh->refcnt) - 1; |
2064 | read_unlock_bh(&neigh->lock); | 2065 | read_unlock_bh(&neigh->lock); |
2065 | 2066 | ||
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c index ca32ddb8ad17..6c8d7f0ea01a 100644 --- a/net/core/rtnetlink.c +++ b/net/core/rtnetlink.c | |||
@@ -498,7 +498,8 @@ int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics) | |||
498 | return nla_nest_end(skb, mx); | 498 | return nla_nest_end(skb, mx); |
499 | 499 | ||
500 | nla_put_failure: | 500 | nla_put_failure: |
501 | return nla_nest_cancel(skb, mx); | 501 | nla_nest_cancel(skb, mx); |
502 | return -EMSGSIZE; | ||
502 | } | 503 | } |
503 | 504 | ||
504 | int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, u32 id, | 505 | int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst, u32 id, |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 5c459f2b7985..1e556d312117 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -1445,6 +1445,7 @@ done: | |||
1445 | 1445 | ||
1446 | if (spd.nr_pages) { | 1446 | if (spd.nr_pages) { |
1447 | int ret; | 1447 | int ret; |
1448 | struct sock *sk = __skb->sk; | ||
1448 | 1449 | ||
1449 | /* | 1450 | /* |
1450 | * Drop the socket lock, otherwise we have reverse | 1451 | * Drop the socket lock, otherwise we have reverse |
@@ -1455,9 +1456,9 @@ done: | |||
1455 | * we call into ->sendpage() with the i_mutex lock held | 1456 | * we call into ->sendpage() with the i_mutex lock held |
1456 | * and networking will grab the socket lock. | 1457 | * and networking will grab the socket lock. |
1457 | */ | 1458 | */ |
1458 | release_sock(__skb->sk); | 1459 | release_sock(sk); |
1459 | ret = splice_to_pipe(pipe, &spd); | 1460 | ret = splice_to_pipe(pipe, &spd); |
1460 | lock_sock(__skb->sk); | 1461 | lock_sock(sk); |
1461 | return ret; | 1462 | return ret; |
1462 | } | 1463 | } |
1463 | 1464 | ||
diff --git a/net/core/user_dma.c b/net/core/user_dma.c index 0ad1cd57bc39..c77aff9c6eb3 100644 --- a/net/core/user_dma.c +++ b/net/core/user_dma.c | |||
@@ -75,7 +75,7 @@ int dma_skb_copy_datagram_iovec(struct dma_chan *chan, | |||
75 | 75 | ||
76 | end = start + skb_shinfo(skb)->frags[i].size; | 76 | end = start + skb_shinfo(skb)->frags[i].size; |
77 | copy = end - offset; | 77 | copy = end - offset; |
78 | if ((copy = end - offset) > 0) { | 78 | if (copy > 0) { |
79 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; | 79 | skb_frag_t *frag = &skb_shinfo(skb)->frags[i]; |
80 | struct page *page = frag->page; | 80 | struct page *page = frag->page; |
81 | 81 | ||
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c index cd61dea2eea1..f813077234b7 100644 --- a/net/dccp/ccids/ccid3.c +++ b/net/dccp/ccids/ccid3.c | |||
@@ -193,22 +193,17 @@ static inline void ccid3_hc_tx_update_s(struct ccid3_hc_tx_sock *hctx, int len) | |||
193 | 193 | ||
194 | /* | 194 | /* |
195 | * Update Window Counter using the algorithm from [RFC 4342, 8.1]. | 195 | * Update Window Counter using the algorithm from [RFC 4342, 8.1]. |
196 | * The algorithm is not applicable if RTT < 4 microseconds. | 196 | * As elsewhere, RTT > 0 is assumed by using dccp_sample_rtt(). |
197 | */ | 197 | */ |
198 | static inline void ccid3_hc_tx_update_win_count(struct ccid3_hc_tx_sock *hctx, | 198 | static inline void ccid3_hc_tx_update_win_count(struct ccid3_hc_tx_sock *hctx, |
199 | ktime_t now) | 199 | ktime_t now) |
200 | { | 200 | { |
201 | u32 quarter_rtts; | 201 | u32 delta = ktime_us_delta(now, hctx->ccid3hctx_t_last_win_count), |
202 | 202 | quarter_rtts = (4 * delta) / hctx->ccid3hctx_rtt; | |
203 | if (unlikely(hctx->ccid3hctx_rtt < 4)) /* avoid divide-by-zero */ | ||
204 | return; | ||
205 | |||
206 | quarter_rtts = ktime_us_delta(now, hctx->ccid3hctx_t_last_win_count); | ||
207 | quarter_rtts /= hctx->ccid3hctx_rtt / 4; | ||
208 | 203 | ||
209 | if (quarter_rtts > 0) { | 204 | if (quarter_rtts > 0) { |
210 | hctx->ccid3hctx_t_last_win_count = now; | 205 | hctx->ccid3hctx_t_last_win_count = now; |
211 | hctx->ccid3hctx_last_win_count += min_t(u32, quarter_rtts, 5); | 206 | hctx->ccid3hctx_last_win_count += min(quarter_rtts, 5U); |
212 | hctx->ccid3hctx_last_win_count &= 0xF; /* mod 16 */ | 207 | hctx->ccid3hctx_last_win_count &= 0xF; /* mod 16 */ |
213 | } | 208 | } |
214 | } | 209 | } |
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c index b348dd70c685..c22a3780c14e 100644 --- a/net/dccp/ipv4.c +++ b/net/dccp/ipv4.c | |||
@@ -739,8 +739,8 @@ int dccp_invalid_packet(struct sk_buff *skb) | |||
739 | * If P.type is not Data, Ack, or DataAck and P.X == 0 (the packet | 739 | * If P.type is not Data, Ack, or DataAck and P.X == 0 (the packet |
740 | * has short sequence numbers), drop packet and return | 740 | * has short sequence numbers), drop packet and return |
741 | */ | 741 | */ |
742 | if (dh->dccph_type >= DCCP_PKT_DATA && | 742 | if ((dh->dccph_type < DCCP_PKT_DATA || |
743 | dh->dccph_type <= DCCP_PKT_DATAACK && dh->dccph_x == 0) { | 743 | dh->dccph_type > DCCP_PKT_DATAACK) && dh->dccph_x == 0) { |
744 | DCCP_WARN("P.type (%s) not Data || [Data]Ack, while P.X == 0\n", | 744 | DCCP_WARN("P.type (%s) not Data || [Data]Ack, while P.X == 0\n", |
745 | dccp_packet_name(dh->dccph_type)); | 745 | dccp_packet_name(dh->dccph_type)); |
746 | return 1; | 746 | return 1; |
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c index 6848e4760f34..79a7ef6209ff 100644 --- a/net/ipv4/devinet.c +++ b/net/ipv4/devinet.c | |||
@@ -90,7 +90,6 @@ static const struct nla_policy ifa_ipv4_policy[IFA_MAX+1] = { | |||
90 | [IFA_LOCAL] = { .type = NLA_U32 }, | 90 | [IFA_LOCAL] = { .type = NLA_U32 }, |
91 | [IFA_ADDRESS] = { .type = NLA_U32 }, | 91 | [IFA_ADDRESS] = { .type = NLA_U32 }, |
92 | [IFA_BROADCAST] = { .type = NLA_U32 }, | 92 | [IFA_BROADCAST] = { .type = NLA_U32 }, |
93 | [IFA_ANYCAST] = { .type = NLA_U32 }, | ||
94 | [IFA_LABEL] = { .type = NLA_STRING, .len = IFNAMSIZ - 1 }, | 93 | [IFA_LABEL] = { .type = NLA_STRING, .len = IFNAMSIZ - 1 }, |
95 | }; | 94 | }; |
96 | 95 | ||
@@ -536,9 +535,6 @@ static struct in_ifaddr *rtm_to_ifaddr(struct net *net, struct nlmsghdr *nlh) | |||
536 | if (tb[IFA_BROADCAST]) | 535 | if (tb[IFA_BROADCAST]) |
537 | ifa->ifa_broadcast = nla_get_be32(tb[IFA_BROADCAST]); | 536 | ifa->ifa_broadcast = nla_get_be32(tb[IFA_BROADCAST]); |
538 | 537 | ||
539 | if (tb[IFA_ANYCAST]) | ||
540 | ifa->ifa_anycast = nla_get_be32(tb[IFA_ANYCAST]); | ||
541 | |||
542 | if (tb[IFA_LABEL]) | 538 | if (tb[IFA_LABEL]) |
543 | nla_strlcpy(ifa->ifa_label, tb[IFA_LABEL], IFNAMSIZ); | 539 | nla_strlcpy(ifa->ifa_label, tb[IFA_LABEL], IFNAMSIZ); |
544 | else | 540 | else |
@@ -745,7 +741,6 @@ int devinet_ioctl(struct net *net, unsigned int cmd, void __user *arg) | |||
745 | break; | 741 | break; |
746 | inet_del_ifa(in_dev, ifap, 0); | 742 | inet_del_ifa(in_dev, ifap, 0); |
747 | ifa->ifa_broadcast = 0; | 743 | ifa->ifa_broadcast = 0; |
748 | ifa->ifa_anycast = 0; | ||
749 | ifa->ifa_scope = 0; | 744 | ifa->ifa_scope = 0; |
750 | } | 745 | } |
751 | 746 | ||
@@ -1113,7 +1108,6 @@ static inline size_t inet_nlmsg_size(void) | |||
1113 | + nla_total_size(4) /* IFA_ADDRESS */ | 1108 | + nla_total_size(4) /* IFA_ADDRESS */ |
1114 | + nla_total_size(4) /* IFA_LOCAL */ | 1109 | + nla_total_size(4) /* IFA_LOCAL */ |
1115 | + nla_total_size(4) /* IFA_BROADCAST */ | 1110 | + nla_total_size(4) /* IFA_BROADCAST */ |
1116 | + nla_total_size(4) /* IFA_ANYCAST */ | ||
1117 | + nla_total_size(IFNAMSIZ); /* IFA_LABEL */ | 1111 | + nla_total_size(IFNAMSIZ); /* IFA_LABEL */ |
1118 | } | 1112 | } |
1119 | 1113 | ||
@@ -1143,9 +1137,6 @@ static int inet_fill_ifaddr(struct sk_buff *skb, struct in_ifaddr *ifa, | |||
1143 | if (ifa->ifa_broadcast) | 1137 | if (ifa->ifa_broadcast) |
1144 | NLA_PUT_BE32(skb, IFA_BROADCAST, ifa->ifa_broadcast); | 1138 | NLA_PUT_BE32(skb, IFA_BROADCAST, ifa->ifa_broadcast); |
1145 | 1139 | ||
1146 | if (ifa->ifa_anycast) | ||
1147 | NLA_PUT_BE32(skb, IFA_ANYCAST, ifa->ifa_anycast); | ||
1148 | |||
1149 | if (ifa->ifa_label[0]) | 1140 | if (ifa->ifa_label[0]) |
1150 | NLA_PUT_STRING(skb, IFA_LABEL, ifa->ifa_label); | 1141 | NLA_PUT_STRING(skb, IFA_LABEL, ifa->ifa_label); |
1151 | 1142 | ||
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 0f1557a4ac7a..0b2ac6a3d903 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
@@ -506,7 +506,6 @@ const struct nla_policy rtm_ipv4_policy[RTA_MAX+1] = { | |||
506 | [RTA_PREFSRC] = { .type = NLA_U32 }, | 506 | [RTA_PREFSRC] = { .type = NLA_U32 }, |
507 | [RTA_METRICS] = { .type = NLA_NESTED }, | 507 | [RTA_METRICS] = { .type = NLA_NESTED }, |
508 | [RTA_MULTIPATH] = { .len = sizeof(struct rtnexthop) }, | 508 | [RTA_MULTIPATH] = { .len = sizeof(struct rtnexthop) }, |
509 | [RTA_PROTOINFO] = { .type = NLA_U32 }, | ||
510 | [RTA_FLOW] = { .type = NLA_U32 }, | 509 | [RTA_FLOW] = { .type = NLA_U32 }, |
511 | }; | 510 | }; |
512 | 511 | ||
diff --git a/net/ipv4/raw.c b/net/ipv4/raw.c index fead049daf43..e7e091d365ff 100644 --- a/net/ipv4/raw.c +++ b/net/ipv4/raw.c | |||
@@ -608,6 +608,14 @@ static void raw_close(struct sock *sk, long timeout) | |||
608 | sk_common_release(sk); | 608 | sk_common_release(sk); |
609 | } | 609 | } |
610 | 610 | ||
611 | static int raw_destroy(struct sock *sk) | ||
612 | { | ||
613 | lock_sock(sk); | ||
614 | ip_flush_pending_frames(sk); | ||
615 | release_sock(sk); | ||
616 | return 0; | ||
617 | } | ||
618 | |||
611 | /* This gets rid of all the nasties in af_inet. -DaveM */ | 619 | /* This gets rid of all the nasties in af_inet. -DaveM */ |
612 | static int raw_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) | 620 | static int raw_bind(struct sock *sk, struct sockaddr *uaddr, int addr_len) |
613 | { | 621 | { |
@@ -820,6 +828,7 @@ struct proto raw_prot = { | |||
820 | .name = "RAW", | 828 | .name = "RAW", |
821 | .owner = THIS_MODULE, | 829 | .owner = THIS_MODULE, |
822 | .close = raw_close, | 830 | .close = raw_close, |
831 | .destroy = raw_destroy, | ||
823 | .connect = ip4_datagram_connect, | 832 | .connect = ip4_datagram_connect, |
824 | .disconnect = udp_disconnect, | 833 | .disconnect = udp_disconnect, |
825 | .ioctl = raw_ioctl, | 834 | .ioctl = raw_ioctl, |
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index df41026b60db..96be336064fb 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -1792,7 +1792,7 @@ static int __mkroute_input(struct sk_buff *skb, | |||
1792 | if (err) | 1792 | if (err) |
1793 | flags |= RTCF_DIRECTSRC; | 1793 | flags |= RTCF_DIRECTSRC; |
1794 | 1794 | ||
1795 | if (out_dev == in_dev && err && !(flags & RTCF_MASQ) && | 1795 | if (out_dev == in_dev && err && |
1796 | (IN_DEV_SHARED_MEDIA(out_dev) || | 1796 | (IN_DEV_SHARED_MEDIA(out_dev) || |
1797 | inet_addr_onlink(out_dev, saddr, FIB_RES_GW(*res)))) | 1797 | inet_addr_onlink(out_dev, saddr, FIB_RES_GW(*res)))) |
1798 | flags |= RTCF_DOREDIRECT; | 1798 | flags |= RTCF_DOREDIRECT; |
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index f88653138621..ab66683b8043 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -1227,7 +1227,14 @@ int tcp_read_sock(struct sock *sk, read_descriptor_t *desc, | |||
1227 | copied += used; | 1227 | copied += used; |
1228 | offset += used; | 1228 | offset += used; |
1229 | } | 1229 | } |
1230 | if (offset != skb->len) | 1230 | /* |
1231 | * If recv_actor drops the lock (e.g. TCP splice | ||
1232 | * receive) the skb pointer might be invalid when | ||
1233 | * getting here: tcp_collapse might have deleted it | ||
1234 | * while aggregating skbs from the socket queue. | ||
1235 | */ | ||
1236 | skb = tcp_recv_skb(sk, seq-1, &offset); | ||
1237 | if (!skb || (offset+1 != skb->len)) | ||
1231 | break; | 1238 | break; |
1232 | } | 1239 | } |
1233 | if (tcp_hdr(skb)->fin) { | 1240 | if (tcp_hdr(skb)->fin) { |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index b54d9d37b636..eba873e9b560 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1392,9 +1392,9 @@ static struct sk_buff *tcp_maybe_skipping_dsack(struct sk_buff *skb, | |||
1392 | 1392 | ||
1393 | if (before(next_dup->start_seq, skip_to_seq)) { | 1393 | if (before(next_dup->start_seq, skip_to_seq)) { |
1394 | skb = tcp_sacktag_skip(skb, sk, next_dup->start_seq, fack_count); | 1394 | skb = tcp_sacktag_skip(skb, sk, next_dup->start_seq, fack_count); |
1395 | tcp_sacktag_walk(skb, sk, NULL, | 1395 | skb = tcp_sacktag_walk(skb, sk, NULL, |
1396 | next_dup->start_seq, next_dup->end_seq, | 1396 | next_dup->start_seq, next_dup->end_seq, |
1397 | 1, fack_count, reord, flag); | 1397 | 1, fack_count, reord, flag); |
1398 | } | 1398 | } |
1399 | 1399 | ||
1400 | return skb; | 1400 | return skb; |
@@ -2483,6 +2483,20 @@ static inline void tcp_complete_cwr(struct sock *sk) | |||
2483 | tcp_ca_event(sk, CA_EVENT_COMPLETE_CWR); | 2483 | tcp_ca_event(sk, CA_EVENT_COMPLETE_CWR); |
2484 | } | 2484 | } |
2485 | 2485 | ||
2486 | static void tcp_try_keep_open(struct sock *sk) | ||
2487 | { | ||
2488 | struct tcp_sock *tp = tcp_sk(sk); | ||
2489 | int state = TCP_CA_Open; | ||
2490 | |||
2491 | if (tcp_left_out(tp) || tp->retrans_out || tp->undo_marker) | ||
2492 | state = TCP_CA_Disorder; | ||
2493 | |||
2494 | if (inet_csk(sk)->icsk_ca_state != state) { | ||
2495 | tcp_set_ca_state(sk, state); | ||
2496 | tp->high_seq = tp->snd_nxt; | ||
2497 | } | ||
2498 | } | ||
2499 | |||
2486 | static void tcp_try_to_open(struct sock *sk, int flag) | 2500 | static void tcp_try_to_open(struct sock *sk, int flag) |
2487 | { | 2501 | { |
2488 | struct tcp_sock *tp = tcp_sk(sk); | 2502 | struct tcp_sock *tp = tcp_sk(sk); |
@@ -2496,15 +2510,7 @@ static void tcp_try_to_open(struct sock *sk, int flag) | |||
2496 | tcp_enter_cwr(sk, 1); | 2510 | tcp_enter_cwr(sk, 1); |
2497 | 2511 | ||
2498 | if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) { | 2512 | if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) { |
2499 | int state = TCP_CA_Open; | 2513 | tcp_try_keep_open(sk); |
2500 | |||
2501 | if (tcp_left_out(tp) || tp->retrans_out || tp->undo_marker) | ||
2502 | state = TCP_CA_Disorder; | ||
2503 | |||
2504 | if (inet_csk(sk)->icsk_ca_state != state) { | ||
2505 | tcp_set_ca_state(sk, state); | ||
2506 | tp->high_seq = tp->snd_nxt; | ||
2507 | } | ||
2508 | tcp_moderate_cwnd(tp); | 2514 | tcp_moderate_cwnd(tp); |
2509 | } else { | 2515 | } else { |
2510 | tcp_cwnd_down(sk, flag); | 2516 | tcp_cwnd_down(sk, flag); |
@@ -3310,8 +3316,11 @@ no_queue: | |||
3310 | return 1; | 3316 | return 1; |
3311 | 3317 | ||
3312 | old_ack: | 3318 | old_ack: |
3313 | if (TCP_SKB_CB(skb)->sacked) | 3319 | if (TCP_SKB_CB(skb)->sacked) { |
3314 | tcp_sacktag_write_queue(sk, skb, prior_snd_una); | 3320 | tcp_sacktag_write_queue(sk, skb, prior_snd_una); |
3321 | if (icsk->icsk_ca_state == TCP_CA_Open) | ||
3322 | tcp_try_keep_open(sk); | ||
3323 | } | ||
3315 | 3324 | ||
3316 | uninteresting_ack: | 3325 | uninteresting_ack: |
3317 | SOCK_DEBUG(sk, "Ack %u out of %u:%u\n", ack, tp->snd_una, tp->snd_nxt); | 3326 | SOCK_DEBUG(sk, "Ack %u out of %u:%u\n", ack, tp->snd_una, tp->snd_nxt); |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index e399bde7813a..ad993ecb4810 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -2131,6 +2131,8 @@ void tcp_send_active_reset(struct sock *sk, gfp_t priority) | |||
2131 | TCP_SKB_CB(skb)->when = tcp_time_stamp; | 2131 | TCP_SKB_CB(skb)->when = tcp_time_stamp; |
2132 | if (tcp_transmit_skb(sk, skb, 0, priority)) | 2132 | if (tcp_transmit_skb(sk, skb, 0, priority)) |
2133 | NET_INC_STATS(LINUX_MIB_TCPABORTFAILED); | 2133 | NET_INC_STATS(LINUX_MIB_TCPABORTFAILED); |
2134 | |||
2135 | TCP_INC_STATS(TCP_MIB_OUTRSTS); | ||
2134 | } | 2136 | } |
2135 | 2137 | ||
2136 | /* WARNING: This routine must only be called when we have already sent | 2138 | /* WARNING: This routine must only be called when we have already sent |
diff --git a/net/ipv4/tunnel4.c b/net/ipv4/tunnel4.c index d3b709a6f264..cb1f0e83830b 100644 --- a/net/ipv4/tunnel4.c +++ b/net/ipv4/tunnel4.c | |||
@@ -97,7 +97,7 @@ static int tunnel64_rcv(struct sk_buff *skb) | |||
97 | { | 97 | { |
98 | struct xfrm_tunnel *handler; | 98 | struct xfrm_tunnel *handler; |
99 | 99 | ||
100 | if (!pskb_may_pull(skb, sizeof(struct iphdr))) | 100 | if (!pskb_may_pull(skb, sizeof(struct ipv6hdr))) |
101 | goto drop; | 101 | goto drop; |
102 | 102 | ||
103 | for (handler = tunnel64_handlers; handler; handler = handler->next) | 103 | for (handler = tunnel64_handlers; handler; handler = handler->next) |
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index db1cb7c96d63..56fcda3694ba 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c | |||
@@ -420,7 +420,7 @@ void udp_err(struct sk_buff *skb, u32 info) | |||
420 | /* | 420 | /* |
421 | * Throw away all pending data and cancel the corking. Socket is locked. | 421 | * Throw away all pending data and cancel the corking. Socket is locked. |
422 | */ | 422 | */ |
423 | static void udp_flush_pending_frames(struct sock *sk) | 423 | void udp_flush_pending_frames(struct sock *sk) |
424 | { | 424 | { |
425 | struct udp_sock *up = udp_sk(sk); | 425 | struct udp_sock *up = udp_sk(sk); |
426 | 426 | ||
@@ -430,6 +430,7 @@ static void udp_flush_pending_frames(struct sock *sk) | |||
430 | ip_flush_pending_frames(sk); | 430 | ip_flush_pending_frames(sk); |
431 | } | 431 | } |
432 | } | 432 | } |
433 | EXPORT_SYMBOL(udp_flush_pending_frames); | ||
433 | 434 | ||
434 | /** | 435 | /** |
435 | * udp4_hwcsum_outgoing - handle outgoing HW checksumming | 436 | * udp4_hwcsum_outgoing - handle outgoing HW checksumming |
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 3a835578fd1c..147588f4c7c0 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -731,8 +731,13 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp) | |||
731 | onlink = -1; | 731 | onlink = -1; |
732 | 732 | ||
733 | spin_lock(&ifa->lock); | 733 | spin_lock(&ifa->lock); |
734 | lifetime = min_t(unsigned long, | 734 | |
735 | ifa->valid_lft, 0x7fffffffUL/HZ); | 735 | lifetime = addrconf_timeout_fixup(ifa->valid_lft, HZ); |
736 | /* | ||
737 | * Note: Because this address is | ||
738 | * not permanent, lifetime < | ||
739 | * LONG_MAX / HZ here. | ||
740 | */ | ||
736 | if (time_before(expires, | 741 | if (time_before(expires, |
737 | ifa->tstamp + lifetime * HZ)) | 742 | ifa->tstamp + lifetime * HZ)) |
738 | expires = ifa->tstamp + lifetime * HZ; | 743 | expires = ifa->tstamp + lifetime * HZ; |
@@ -1722,7 +1727,6 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len) | |||
1722 | __u32 valid_lft; | 1727 | __u32 valid_lft; |
1723 | __u32 prefered_lft; | 1728 | __u32 prefered_lft; |
1724 | int addr_type; | 1729 | int addr_type; |
1725 | unsigned long rt_expires; | ||
1726 | struct inet6_dev *in6_dev; | 1730 | struct inet6_dev *in6_dev; |
1727 | 1731 | ||
1728 | pinfo = (struct prefix_info *) opt; | 1732 | pinfo = (struct prefix_info *) opt; |
@@ -1764,28 +1768,23 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len) | |||
1764 | * 2) Configure prefixes with the auto flag set | 1768 | * 2) Configure prefixes with the auto flag set |
1765 | */ | 1769 | */ |
1766 | 1770 | ||
1767 | if (valid_lft == INFINITY_LIFE_TIME) | 1771 | if (pinfo->onlink) { |
1768 | rt_expires = ~0UL; | 1772 | struct rt6_info *rt; |
1769 | else if (valid_lft >= 0x7FFFFFFF/HZ) { | 1773 | unsigned long rt_expires; |
1774 | |||
1770 | /* Avoid arithmetic overflow. Really, we could | 1775 | /* Avoid arithmetic overflow. Really, we could |
1771 | * save rt_expires in seconds, likely valid_lft, | 1776 | * save rt_expires in seconds, likely valid_lft, |
1772 | * but it would require division in fib gc, that it | 1777 | * but it would require division in fib gc, that it |
1773 | * not good. | 1778 | * not good. |
1774 | */ | 1779 | */ |
1775 | rt_expires = 0x7FFFFFFF - (0x7FFFFFFF % HZ); | 1780 | if (HZ > USER_HZ) |
1776 | } else | 1781 | rt_expires = addrconf_timeout_fixup(valid_lft, HZ); |
1777 | rt_expires = valid_lft * HZ; | 1782 | else |
1783 | rt_expires = addrconf_timeout_fixup(valid_lft, USER_HZ); | ||
1778 | 1784 | ||
1779 | /* | 1785 | if (addrconf_finite_timeout(rt_expires)) |
1780 | * We convert this (in jiffies) to clock_t later. | 1786 | rt_expires *= HZ; |
1781 | * Avoid arithmetic overflow there as well. | ||
1782 | * Overflow can happen only if HZ < USER_HZ. | ||
1783 | */ | ||
1784 | if (HZ < USER_HZ && ~rt_expires && rt_expires > 0x7FFFFFFF / USER_HZ) | ||
1785 | rt_expires = 0x7FFFFFFF / USER_HZ; | ||
1786 | 1787 | ||
1787 | if (pinfo->onlink) { | ||
1788 | struct rt6_info *rt; | ||
1789 | rt = rt6_lookup(dev_net(dev), &pinfo->prefix, NULL, | 1788 | rt = rt6_lookup(dev_net(dev), &pinfo->prefix, NULL, |
1790 | dev->ifindex, 1); | 1789 | dev->ifindex, 1); |
1791 | 1790 | ||
@@ -1794,7 +1793,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len) | |||
1794 | if (valid_lft == 0) { | 1793 | if (valid_lft == 0) { |
1795 | ip6_del_rt(rt); | 1794 | ip6_del_rt(rt); |
1796 | rt = NULL; | 1795 | rt = NULL; |
1797 | } else if (~rt_expires) { | 1796 | } else if (addrconf_finite_timeout(rt_expires)) { |
1798 | /* not infinity */ | 1797 | /* not infinity */ |
1799 | rt->rt6i_expires = jiffies + rt_expires; | 1798 | rt->rt6i_expires = jiffies + rt_expires; |
1800 | rt->rt6i_flags |= RTF_EXPIRES; | 1799 | rt->rt6i_flags |= RTF_EXPIRES; |
@@ -1803,9 +1802,9 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len) | |||
1803 | rt->rt6i_expires = 0; | 1802 | rt->rt6i_expires = 0; |
1804 | } | 1803 | } |
1805 | } else if (valid_lft) { | 1804 | } else if (valid_lft) { |
1806 | int flags = RTF_ADDRCONF | RTF_PREFIX_RT; | ||
1807 | clock_t expires = 0; | 1805 | clock_t expires = 0; |
1808 | if (~rt_expires) { | 1806 | int flags = RTF_ADDRCONF | RTF_PREFIX_RT; |
1807 | if (addrconf_finite_timeout(rt_expires)) { | ||
1809 | /* not infinity */ | 1808 | /* not infinity */ |
1810 | flags |= RTF_EXPIRES; | 1809 | flags |= RTF_EXPIRES; |
1811 | expires = jiffies_to_clock_t(rt_expires); | 1810 | expires = jiffies_to_clock_t(rt_expires); |
@@ -2027,7 +2026,7 @@ err_exit: | |||
2027 | * Manual configuration of address on an interface | 2026 | * Manual configuration of address on an interface |
2028 | */ | 2027 | */ |
2029 | static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx, | 2028 | static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx, |
2030 | int plen, __u8 ifa_flags, __u32 prefered_lft, | 2029 | unsigned int plen, __u8 ifa_flags, __u32 prefered_lft, |
2031 | __u32 valid_lft) | 2030 | __u32 valid_lft) |
2032 | { | 2031 | { |
2033 | struct inet6_ifaddr *ifp; | 2032 | struct inet6_ifaddr *ifp; |
@@ -2036,9 +2035,13 @@ static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx, | |||
2036 | int scope; | 2035 | int scope; |
2037 | u32 flags; | 2036 | u32 flags; |
2038 | clock_t expires; | 2037 | clock_t expires; |
2038 | unsigned long timeout; | ||
2039 | 2039 | ||
2040 | ASSERT_RTNL(); | 2040 | ASSERT_RTNL(); |
2041 | 2041 | ||
2042 | if (plen > 128) | ||
2043 | return -EINVAL; | ||
2044 | |||
2042 | /* check the lifetime */ | 2045 | /* check the lifetime */ |
2043 | if (!valid_lft || prefered_lft > valid_lft) | 2046 | if (!valid_lft || prefered_lft > valid_lft) |
2044 | return -EINVAL; | 2047 | return -EINVAL; |
@@ -2052,22 +2055,23 @@ static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx, | |||
2052 | 2055 | ||
2053 | scope = ipv6_addr_scope(pfx); | 2056 | scope = ipv6_addr_scope(pfx); |
2054 | 2057 | ||
2055 | if (valid_lft == INFINITY_LIFE_TIME) { | 2058 | timeout = addrconf_timeout_fixup(valid_lft, HZ); |
2056 | ifa_flags |= IFA_F_PERMANENT; | 2059 | if (addrconf_finite_timeout(timeout)) { |
2057 | flags = 0; | 2060 | expires = jiffies_to_clock_t(timeout * HZ); |
2058 | expires = 0; | 2061 | valid_lft = timeout; |
2059 | } else { | ||
2060 | if (valid_lft >= 0x7FFFFFFF/HZ) | ||
2061 | valid_lft = 0x7FFFFFFF/HZ; | ||
2062 | flags = RTF_EXPIRES; | 2062 | flags = RTF_EXPIRES; |
2063 | expires = jiffies_to_clock_t(valid_lft * HZ); | 2063 | } else { |
2064 | expires = 0; | ||
2065 | flags = 0; | ||
2066 | ifa_flags |= IFA_F_PERMANENT; | ||
2064 | } | 2067 | } |
2065 | 2068 | ||
2066 | if (prefered_lft == 0) | 2069 | timeout = addrconf_timeout_fixup(prefered_lft, HZ); |
2067 | ifa_flags |= IFA_F_DEPRECATED; | 2070 | if (addrconf_finite_timeout(timeout)) { |
2068 | else if ((prefered_lft >= 0x7FFFFFFF/HZ) && | 2071 | if (timeout == 0) |
2069 | (prefered_lft != INFINITY_LIFE_TIME)) | 2072 | ifa_flags |= IFA_F_DEPRECATED; |
2070 | prefered_lft = 0x7FFFFFFF/HZ; | 2073 | prefered_lft = timeout; |
2074 | } | ||
2071 | 2075 | ||
2072 | ifp = ipv6_add_addr(idev, pfx, plen, scope, ifa_flags); | 2076 | ifp = ipv6_add_addr(idev, pfx, plen, scope, ifa_flags); |
2073 | 2077 | ||
@@ -2095,12 +2099,15 @@ static int inet6_addr_add(struct net *net, int ifindex, struct in6_addr *pfx, | |||
2095 | } | 2099 | } |
2096 | 2100 | ||
2097 | static int inet6_addr_del(struct net *net, int ifindex, struct in6_addr *pfx, | 2101 | static int inet6_addr_del(struct net *net, int ifindex, struct in6_addr *pfx, |
2098 | int plen) | 2102 | unsigned int plen) |
2099 | { | 2103 | { |
2100 | struct inet6_ifaddr *ifp; | 2104 | struct inet6_ifaddr *ifp; |
2101 | struct inet6_dev *idev; | 2105 | struct inet6_dev *idev; |
2102 | struct net_device *dev; | 2106 | struct net_device *dev; |
2103 | 2107 | ||
2108 | if (plen > 128) | ||
2109 | return -EINVAL; | ||
2110 | |||
2104 | dev = __dev_get_by_index(net, ifindex); | 2111 | dev = __dev_get_by_index(net, ifindex); |
2105 | if (!dev) | 2112 | if (!dev) |
2106 | return -ENODEV; | 2113 | return -ENODEV; |
@@ -3169,26 +3176,28 @@ static int inet6_addr_modify(struct inet6_ifaddr *ifp, u8 ifa_flags, | |||
3169 | { | 3176 | { |
3170 | u32 flags; | 3177 | u32 flags; |
3171 | clock_t expires; | 3178 | clock_t expires; |
3179 | unsigned long timeout; | ||
3172 | 3180 | ||
3173 | if (!valid_lft || (prefered_lft > valid_lft)) | 3181 | if (!valid_lft || (prefered_lft > valid_lft)) |
3174 | return -EINVAL; | 3182 | return -EINVAL; |
3175 | 3183 | ||
3176 | if (valid_lft == INFINITY_LIFE_TIME) { | 3184 | timeout = addrconf_timeout_fixup(valid_lft, HZ); |
3177 | ifa_flags |= IFA_F_PERMANENT; | 3185 | if (addrconf_finite_timeout(timeout)) { |
3178 | flags = 0; | 3186 | expires = jiffies_to_clock_t(timeout * HZ); |
3179 | expires = 0; | 3187 | valid_lft = timeout; |
3180 | } else { | ||
3181 | if (valid_lft >= 0x7FFFFFFF/HZ) | ||
3182 | valid_lft = 0x7FFFFFFF/HZ; | ||
3183 | flags = RTF_EXPIRES; | 3188 | flags = RTF_EXPIRES; |
3184 | expires = jiffies_to_clock_t(valid_lft * HZ); | 3189 | } else { |
3190 | expires = 0; | ||
3191 | flags = 0; | ||
3192 | ifa_flags |= IFA_F_PERMANENT; | ||
3185 | } | 3193 | } |
3186 | 3194 | ||
3187 | if (prefered_lft == 0) | 3195 | timeout = addrconf_timeout_fixup(prefered_lft, HZ); |
3188 | ifa_flags |= IFA_F_DEPRECATED; | 3196 | if (addrconf_finite_timeout(timeout)) { |
3189 | else if ((prefered_lft >= 0x7FFFFFFF/HZ) && | 3197 | if (timeout == 0) |
3190 | (prefered_lft != INFINITY_LIFE_TIME)) | 3198 | ifa_flags |= IFA_F_DEPRECATED; |
3191 | prefered_lft = 0x7FFFFFFF/HZ; | 3199 | prefered_lft = timeout; |
3200 | } | ||
3192 | 3201 | ||
3193 | spin_lock_bh(&ifp->lock); | 3202 | spin_lock_bh(&ifp->lock); |
3194 | ifp->flags = (ifp->flags & ~(IFA_F_DEPRECATED | IFA_F_PERMANENT | IFA_F_NODAD | IFA_F_HOMEADDRESS)) | ifa_flags; | 3203 | ifp->flags = (ifp->flags & ~(IFA_F_DEPRECATED | IFA_F_PERMANENT | IFA_F_NODAD | IFA_F_HOMEADDRESS)) | ifa_flags; |
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 3c6aafb02183..e84b3fd17fb4 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -191,7 +191,7 @@ lookup_protocol: | |||
191 | np->mcast_hops = -1; | 191 | np->mcast_hops = -1; |
192 | np->mc_loop = 1; | 192 | np->mc_loop = 1; |
193 | np->pmtudisc = IPV6_PMTUDISC_WANT; | 193 | np->pmtudisc = IPV6_PMTUDISC_WANT; |
194 | np->ipv6only = init_net.ipv6.sysctl.bindv6only; | 194 | np->ipv6only = net->ipv6.sysctl.bindv6only; |
195 | 195 | ||
196 | /* Init the ipv4 part of the socket since we can have sockets | 196 | /* Init the ipv4 part of the socket since we can have sockets |
197 | * using v6 API for ipv4. | 197 | * using v6 API for ipv4. |
diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c index 94fa6ae77cfe..b9c2de84a8a2 100644 --- a/net/ipv6/datagram.c +++ b/net/ipv6/datagram.c | |||
@@ -496,7 +496,8 @@ int datagram_recv_ctl(struct sock *sk, struct msghdr *msg, struct sk_buff *skb) | |||
496 | return 0; | 496 | return 0; |
497 | } | 497 | } |
498 | 498 | ||
499 | int datagram_send_ctl(struct msghdr *msg, struct flowi *fl, | 499 | int datagram_send_ctl(struct net *net, |
500 | struct msghdr *msg, struct flowi *fl, | ||
500 | struct ipv6_txoptions *opt, | 501 | struct ipv6_txoptions *opt, |
501 | int *hlimit, int *tclass) | 502 | int *hlimit, int *tclass) |
502 | { | 503 | { |
@@ -509,7 +510,6 @@ int datagram_send_ctl(struct msghdr *msg, struct flowi *fl, | |||
509 | 510 | ||
510 | for (cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) { | 511 | for (cmsg = CMSG_FIRSTHDR(msg); cmsg; cmsg = CMSG_NXTHDR(msg, cmsg)) { |
511 | int addr_type; | 512 | int addr_type; |
512 | struct net_device *dev = NULL; | ||
513 | 513 | ||
514 | if (!CMSG_OK(msg, cmsg)) { | 514 | if (!CMSG_OK(msg, cmsg)) { |
515 | err = -EINVAL; | 515 | err = -EINVAL; |
@@ -522,6 +522,9 @@ int datagram_send_ctl(struct msghdr *msg, struct flowi *fl, | |||
522 | switch (cmsg->cmsg_type) { | 522 | switch (cmsg->cmsg_type) { |
523 | case IPV6_PKTINFO: | 523 | case IPV6_PKTINFO: |
524 | case IPV6_2292PKTINFO: | 524 | case IPV6_2292PKTINFO: |
525 | { | ||
526 | struct net_device *dev = NULL; | ||
527 | |||
525 | if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct in6_pktinfo))) { | 528 | if (cmsg->cmsg_len < CMSG_LEN(sizeof(struct in6_pktinfo))) { |
526 | err = -EINVAL; | 529 | err = -EINVAL; |
527 | goto exit_f; | 530 | goto exit_f; |
@@ -535,32 +538,32 @@ int datagram_send_ctl(struct msghdr *msg, struct flowi *fl, | |||
535 | fl->oif = src_info->ipi6_ifindex; | 538 | fl->oif = src_info->ipi6_ifindex; |
536 | } | 539 | } |
537 | 540 | ||
538 | addr_type = ipv6_addr_type(&src_info->ipi6_addr); | 541 | addr_type = __ipv6_addr_type(&src_info->ipi6_addr); |
539 | 542 | ||
540 | if (addr_type == IPV6_ADDR_ANY) | 543 | if (fl->oif) { |
541 | break; | 544 | dev = dev_get_by_index(net, fl->oif); |
545 | if (!dev) | ||
546 | return -ENODEV; | ||
547 | } else if (addr_type & IPV6_ADDR_LINKLOCAL) | ||
548 | return -EINVAL; | ||
542 | 549 | ||
543 | if (addr_type & IPV6_ADDR_LINKLOCAL) { | 550 | if (addr_type != IPV6_ADDR_ANY) { |
544 | if (!src_info->ipi6_ifindex) | 551 | int strict = __ipv6_addr_src_scope(addr_type) <= IPV6_ADDR_SCOPE_LINKLOCAL; |
545 | return -EINVAL; | 552 | if (!ipv6_chk_addr(net, &src_info->ipi6_addr, |
546 | else { | 553 | strict ? dev : NULL, 0)) |
547 | dev = dev_get_by_index(&init_net, src_info->ipi6_ifindex); | 554 | err = -EINVAL; |
548 | if (!dev) | 555 | else |
549 | return -ENODEV; | 556 | ipv6_addr_copy(&fl->fl6_src, &src_info->ipi6_addr); |
550 | } | ||
551 | } | ||
552 | if (!ipv6_chk_addr(&init_net, &src_info->ipi6_addr, | ||
553 | dev, 0)) { | ||
554 | if (dev) | ||
555 | dev_put(dev); | ||
556 | err = -EINVAL; | ||
557 | goto exit_f; | ||
558 | } | 557 | } |
558 | |||
559 | if (dev) | 559 | if (dev) |
560 | dev_put(dev); | 560 | dev_put(dev); |
561 | 561 | ||
562 | ipv6_addr_copy(&fl->fl6_src, &src_info->ipi6_addr); | 562 | if (err) |
563 | goto exit_f; | ||
564 | |||
563 | break; | 565 | break; |
566 | } | ||
564 | 567 | ||
565 | case IPV6_FLOWINFO: | 568 | case IPV6_FLOWINFO: |
566 | if (cmsg->cmsg_len < CMSG_LEN(4)) { | 569 | if (cmsg->cmsg_len < CMSG_LEN(4)) { |
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index eb7a940310f4..37a4e777e347 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c | |||
@@ -354,7 +354,7 @@ fl_create(struct net *net, struct in6_flowlabel_req *freq, char __user *optval, | |||
354 | msg.msg_control = (void*)(fl->opt+1); | 354 | msg.msg_control = (void*)(fl->opt+1); |
355 | flowi.oif = 0; | 355 | flowi.oif = 0; |
356 | 356 | ||
357 | err = datagram_send_ctl(&msg, &flowi, fl->opt, &junk, &junk); | 357 | err = datagram_send_ctl(net, &msg, &flowi, fl->opt, &junk, &junk); |
358 | if (err) | 358 | if (err) |
359 | goto done; | 359 | goto done; |
360 | err = -EINVAL; | 360 | err = -EINVAL; |
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c index 56d55fecf8ec..26b83e512a09 100644 --- a/net/ipv6/ipv6_sockglue.c +++ b/net/ipv6/ipv6_sockglue.c | |||
@@ -161,9 +161,17 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname, | |||
161 | struct ipv6_txoptions *opt; | 161 | struct ipv6_txoptions *opt; |
162 | struct sk_buff *pktopt; | 162 | struct sk_buff *pktopt; |
163 | 163 | ||
164 | if (sk->sk_protocol != IPPROTO_UDP && | 164 | if (sk->sk_type == SOCK_RAW) |
165 | sk->sk_protocol != IPPROTO_UDPLITE && | 165 | break; |
166 | sk->sk_protocol != IPPROTO_TCP) | 166 | |
167 | if (sk->sk_protocol == IPPROTO_UDP || | ||
168 | sk->sk_protocol == IPPROTO_UDPLITE) { | ||
169 | struct udp_sock *up = udp_sk(sk); | ||
170 | if (up->pending == AF_INET6) { | ||
171 | retv = -EBUSY; | ||
172 | break; | ||
173 | } | ||
174 | } else if (sk->sk_protocol != IPPROTO_TCP) | ||
167 | break; | 175 | break; |
168 | 176 | ||
169 | if (sk->sk_state != TCP_ESTABLISHED) { | 177 | if (sk->sk_state != TCP_ESTABLISHED) { |
@@ -416,7 +424,7 @@ sticky_done: | |||
416 | msg.msg_controllen = optlen; | 424 | msg.msg_controllen = optlen; |
417 | msg.msg_control = (void*)(opt+1); | 425 | msg.msg_control = (void*)(opt+1); |
418 | 426 | ||
419 | retv = datagram_send_ctl(&msg, &fl, opt, &junk, &junk); | 427 | retv = datagram_send_ctl(net, &msg, &fl, opt, &junk, &junk); |
420 | if (retv) | 428 | if (retv) |
421 | goto done; | 429 | goto done; |
422 | update: | 430 | update: |
@@ -832,7 +840,7 @@ static int ipv6_getsockopt_sticky(struct sock *sk, struct ipv6_txoptions *opt, | |||
832 | len = min_t(unsigned int, len, ipv6_optlen(hdr)); | 840 | len = min_t(unsigned int, len, ipv6_optlen(hdr)); |
833 | if (copy_to_user(optval, hdr, len)) | 841 | if (copy_to_user(optval, hdr, len)) |
834 | return -EFAULT; | 842 | return -EFAULT; |
835 | return ipv6_optlen(hdr); | 843 | return len; |
836 | } | 844 | } |
837 | 845 | ||
838 | static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, | 846 | static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, |
@@ -975,6 +983,9 @@ static int do_ipv6_getsockopt(struct sock *sk, int level, int optname, | |||
975 | len = ipv6_getsockopt_sticky(sk, np->opt, | 983 | len = ipv6_getsockopt_sticky(sk, np->opt, |
976 | optname, optval, len); | 984 | optname, optval, len); |
977 | release_sock(sk); | 985 | release_sock(sk); |
986 | /* check if ipv6_getsockopt_sticky() returns err code */ | ||
987 | if (len < 0) | ||
988 | return len; | ||
978 | return put_user(len, optlen); | 989 | return put_user(len, optlen); |
979 | } | 990 | } |
980 | 991 | ||
diff --git a/net/ipv6/netfilter/nf_conntrack_reasm.c b/net/ipv6/netfilter/nf_conntrack_reasm.c index 2dccad48058c..e65e26e210ee 100644 --- a/net/ipv6/netfilter/nf_conntrack_reasm.c +++ b/net/ipv6/netfilter/nf_conntrack_reasm.c | |||
@@ -209,7 +209,9 @@ fq_find(__be32 id, struct in6_addr *src, struct in6_addr *dst) | |||
209 | arg.dst = dst; | 209 | arg.dst = dst; |
210 | hash = ip6qhashfn(id, src, dst); | 210 | hash = ip6qhashfn(id, src, dst); |
211 | 211 | ||
212 | local_bh_disable(); | ||
212 | q = inet_frag_find(&nf_init_frags, &nf_frags, &arg, hash); | 213 | q = inet_frag_find(&nf_init_frags, &nf_frags, &arg, hash); |
214 | local_bh_enable(); | ||
213 | if (q == NULL) | 215 | if (q == NULL) |
214 | goto oom; | 216 | goto oom; |
215 | 217 | ||
@@ -638,10 +640,10 @@ struct sk_buff *nf_ct_frag6_gather(struct sk_buff *skb) | |||
638 | goto ret_orig; | 640 | goto ret_orig; |
639 | } | 641 | } |
640 | 642 | ||
641 | spin_lock(&fq->q.lock); | 643 | spin_lock_bh(&fq->q.lock); |
642 | 644 | ||
643 | if (nf_ct_frag6_queue(fq, clone, fhdr, nhoff) < 0) { | 645 | if (nf_ct_frag6_queue(fq, clone, fhdr, nhoff) < 0) { |
644 | spin_unlock(&fq->q.lock); | 646 | spin_unlock_bh(&fq->q.lock); |
645 | pr_debug("Can't insert skb to queue\n"); | 647 | pr_debug("Can't insert skb to queue\n"); |
646 | fq_put(fq); | 648 | fq_put(fq); |
647 | goto ret_orig; | 649 | goto ret_orig; |
@@ -653,7 +655,7 @@ struct sk_buff *nf_ct_frag6_gather(struct sk_buff *skb) | |||
653 | if (ret_skb == NULL) | 655 | if (ret_skb == NULL) |
654 | pr_debug("Can't reassemble fragmented packets\n"); | 656 | pr_debug("Can't reassemble fragmented packets\n"); |
655 | } | 657 | } |
656 | spin_unlock(&fq->q.lock); | 658 | spin_unlock_bh(&fq->q.lock); |
657 | 659 | ||
658 | fq_put(fq); | 660 | fq_put(fq); |
659 | return ret_skb; | 661 | return ret_skb; |
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index 232e0dc45bf5..8fee9a15b2d3 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c | |||
@@ -813,7 +813,7 @@ static int rawv6_sendmsg(struct kiocb *iocb, struct sock *sk, | |||
813 | memset(opt, 0, sizeof(struct ipv6_txoptions)); | 813 | memset(opt, 0, sizeof(struct ipv6_txoptions)); |
814 | opt->tot_len = sizeof(struct ipv6_txoptions); | 814 | opt->tot_len = sizeof(struct ipv6_txoptions); |
815 | 815 | ||
816 | err = datagram_send_ctl(msg, &fl, opt, &hlimit, &tclass); | 816 | err = datagram_send_ctl(sock_net(sk), msg, &fl, opt, &hlimit, &tclass); |
817 | if (err < 0) { | 817 | if (err < 0) { |
818 | fl6_sock_release(flowlabel); | 818 | fl6_sock_release(flowlabel); |
819 | return err; | 819 | return err; |
@@ -1164,6 +1164,14 @@ static void rawv6_close(struct sock *sk, long timeout) | |||
1164 | sk_common_release(sk); | 1164 | sk_common_release(sk); |
1165 | } | 1165 | } |
1166 | 1166 | ||
1167 | static int raw6_destroy(struct sock *sk) | ||
1168 | { | ||
1169 | lock_sock(sk); | ||
1170 | ip6_flush_pending_frames(sk); | ||
1171 | release_sock(sk); | ||
1172 | return 0; | ||
1173 | } | ||
1174 | |||
1167 | static int rawv6_init_sk(struct sock *sk) | 1175 | static int rawv6_init_sk(struct sock *sk) |
1168 | { | 1176 | { |
1169 | struct raw6_sock *rp = raw6_sk(sk); | 1177 | struct raw6_sock *rp = raw6_sk(sk); |
@@ -1187,6 +1195,7 @@ struct proto rawv6_prot = { | |||
1187 | .name = "RAWv6", | 1195 | .name = "RAWv6", |
1188 | .owner = THIS_MODULE, | 1196 | .owner = THIS_MODULE, |
1189 | .close = rawv6_close, | 1197 | .close = rawv6_close, |
1198 | .destroy = raw6_destroy, | ||
1190 | .connect = ip6_datagram_connect, | 1199 | .connect = ip6_datagram_connect, |
1191 | .disconnect = udp_disconnect, | 1200 | .disconnect = udp_disconnect, |
1192 | .ioctl = rawv6_ioctl, | 1201 | .ioctl = rawv6_ioctl, |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 48534c6c0735..220cffe9e63b 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -446,7 +446,7 @@ int rt6_route_rcv(struct net_device *dev, u8 *opt, int len, | |||
446 | struct route_info *rinfo = (struct route_info *) opt; | 446 | struct route_info *rinfo = (struct route_info *) opt; |
447 | struct in6_addr prefix_buf, *prefix; | 447 | struct in6_addr prefix_buf, *prefix; |
448 | unsigned int pref; | 448 | unsigned int pref; |
449 | u32 lifetime; | 449 | unsigned long lifetime; |
450 | struct rt6_info *rt; | 450 | struct rt6_info *rt; |
451 | 451 | ||
452 | if (len < sizeof(struct route_info)) { | 452 | if (len < sizeof(struct route_info)) { |
@@ -472,13 +472,7 @@ int rt6_route_rcv(struct net_device *dev, u8 *opt, int len, | |||
472 | if (pref == ICMPV6_ROUTER_PREF_INVALID) | 472 | if (pref == ICMPV6_ROUTER_PREF_INVALID) |
473 | pref = ICMPV6_ROUTER_PREF_MEDIUM; | 473 | pref = ICMPV6_ROUTER_PREF_MEDIUM; |
474 | 474 | ||
475 | lifetime = ntohl(rinfo->lifetime); | 475 | lifetime = addrconf_timeout_fixup(ntohl(rinfo->lifetime), HZ); |
476 | if (lifetime == 0xffffffff) { | ||
477 | /* infinity */ | ||
478 | } else if (lifetime > 0x7fffffff/HZ - 1) { | ||
479 | /* Avoid arithmetic overflow */ | ||
480 | lifetime = 0x7fffffff/HZ - 1; | ||
481 | } | ||
482 | 476 | ||
483 | if (rinfo->length == 3) | 477 | if (rinfo->length == 3) |
484 | prefix = (struct in6_addr *)rinfo->prefix; | 478 | prefix = (struct in6_addr *)rinfo->prefix; |
@@ -506,7 +500,7 @@ int rt6_route_rcv(struct net_device *dev, u8 *opt, int len, | |||
506 | (rt->rt6i_flags & ~RTF_PREF_MASK) | RTF_PREF(pref); | 500 | (rt->rt6i_flags & ~RTF_PREF_MASK) | RTF_PREF(pref); |
507 | 501 | ||
508 | if (rt) { | 502 | if (rt) { |
509 | if (lifetime == 0xffffffff) { | 503 | if (!addrconf_finite_timeout(lifetime)) { |
510 | rt->rt6i_flags &= ~RTF_EXPIRES; | 504 | rt->rt6i_flags &= ~RTF_EXPIRES; |
511 | } else { | 505 | } else { |
512 | rt->rt6i_expires = jiffies + HZ * lifetime; | 506 | rt->rt6i_expires = jiffies + HZ * lifetime; |
diff --git a/net/ipv6/tunnel6.c b/net/ipv6/tunnel6.c index 6323921b40be..669f280989c3 100644 --- a/net/ipv6/tunnel6.c +++ b/net/ipv6/tunnel6.c | |||
@@ -109,7 +109,7 @@ static int tunnel46_rcv(struct sk_buff *skb) | |||
109 | { | 109 | { |
110 | struct xfrm6_tunnel *handler; | 110 | struct xfrm6_tunnel *handler; |
111 | 111 | ||
112 | if (!pskb_may_pull(skb, sizeof(struct ipv6hdr))) | 112 | if (!pskb_may_pull(skb, sizeof(struct iphdr))) |
113 | goto drop; | 113 | goto drop; |
114 | 114 | ||
115 | for (handler = tunnel46_handlers; handler; handler = handler->next) | 115 | for (handler = tunnel46_handlers; handler; handler = handler->next) |
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 1fd784f3e2ec..dd309626ae9a 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -534,7 +534,9 @@ static void udp_v6_flush_pending_frames(struct sock *sk) | |||
534 | { | 534 | { |
535 | struct udp_sock *up = udp_sk(sk); | 535 | struct udp_sock *up = udp_sk(sk); |
536 | 536 | ||
537 | if (up->pending) { | 537 | if (up->pending == AF_INET) |
538 | udp_flush_pending_frames(sk); | ||
539 | else if (up->pending) { | ||
538 | up->len = 0; | 540 | up->len = 0; |
539 | up->pending = 0; | 541 | up->pending = 0; |
540 | ip6_flush_pending_frames(sk); | 542 | ip6_flush_pending_frames(sk); |
@@ -731,7 +733,7 @@ do_udp_sendmsg: | |||
731 | memset(opt, 0, sizeof(struct ipv6_txoptions)); | 733 | memset(opt, 0, sizeof(struct ipv6_txoptions)); |
732 | opt->tot_len = sizeof(*opt); | 734 | opt->tot_len = sizeof(*opt); |
733 | 735 | ||
734 | err = datagram_send_ctl(msg, &fl, opt, &hlimit, &tclass); | 736 | err = datagram_send_ctl(sock_net(sk), msg, &fl, opt, &hlimit, &tclass); |
735 | if (err < 0) { | 737 | if (err < 0) { |
736 | fl6_sock_release(flowlabel); | 738 | fl6_sock_release(flowlabel); |
737 | return err; | 739 | return err; |
@@ -848,12 +850,14 @@ do_append_data: | |||
848 | } else { | 850 | } else { |
849 | dst_release(dst); | 851 | dst_release(dst); |
850 | } | 852 | } |
853 | dst = NULL; | ||
851 | } | 854 | } |
852 | 855 | ||
853 | if (err > 0) | 856 | if (err > 0) |
854 | err = np->recverr ? net_xmit_errno(err) : 0; | 857 | err = np->recverr ? net_xmit_errno(err) : 0; |
855 | release_sock(sk); | 858 | release_sock(sk); |
856 | out: | 859 | out: |
860 | dst_release(dst); | ||
857 | fl6_sock_release(flowlabel); | 861 | fl6_sock_release(flowlabel); |
858 | if (!err) | 862 | if (!err) |
859 | return len; | 863 | return len; |
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c index ae54b20d0470..3eb5bcc75f99 100644 --- a/net/irda/af_irda.c +++ b/net/irda/af_irda.c | |||
@@ -1093,11 +1093,6 @@ static int irda_create(struct net *net, struct socket *sock, int protocol) | |||
1093 | 1093 | ||
1094 | init_waitqueue_head(&self->query_wait); | 1094 | init_waitqueue_head(&self->query_wait); |
1095 | 1095 | ||
1096 | /* Initialise networking socket struct */ | ||
1097 | sock_init_data(sock, sk); /* Note : set sk->sk_refcnt to 1 */ | ||
1098 | sk->sk_family = PF_IRDA; | ||
1099 | sk->sk_protocol = protocol; | ||
1100 | |||
1101 | switch (sock->type) { | 1096 | switch (sock->type) { |
1102 | case SOCK_STREAM: | 1097 | case SOCK_STREAM: |
1103 | sock->ops = &irda_stream_ops; | 1098 | sock->ops = &irda_stream_ops; |
@@ -1124,13 +1119,20 @@ static int irda_create(struct net *net, struct socket *sock, int protocol) | |||
1124 | self->max_sdu_size_rx = TTP_SAR_UNBOUND; | 1119 | self->max_sdu_size_rx = TTP_SAR_UNBOUND; |
1125 | break; | 1120 | break; |
1126 | default: | 1121 | default: |
1122 | sk_free(sk); | ||
1127 | return -ESOCKTNOSUPPORT; | 1123 | return -ESOCKTNOSUPPORT; |
1128 | } | 1124 | } |
1129 | break; | 1125 | break; |
1130 | default: | 1126 | default: |
1127 | sk_free(sk); | ||
1131 | return -ESOCKTNOSUPPORT; | 1128 | return -ESOCKTNOSUPPORT; |
1132 | } | 1129 | } |
1133 | 1130 | ||
1131 | /* Initialise networking socket struct */ | ||
1132 | sock_init_data(sock, sk); /* Note : set sk->sk_refcnt to 1 */ | ||
1133 | sk->sk_family = PF_IRDA; | ||
1134 | sk->sk_protocol = protocol; | ||
1135 | |||
1134 | /* Register as a client with IrLMP */ | 1136 | /* Register as a client with IrLMP */ |
1135 | self->ckey = irlmp_register_client(0, NULL, NULL, NULL); | 1137 | self->ckey = irlmp_register_client(0, NULL, NULL, NULL); |
1136 | self->mask.word = 0xffff; | 1138 | self->mask.word = 0xffff; |
diff --git a/net/llc/llc_sap.c b/net/llc/llc_sap.c index e2ddde755019..008de1fc42ca 100644 --- a/net/llc/llc_sap.c +++ b/net/llc/llc_sap.c | |||
@@ -286,12 +286,14 @@ void llc_build_and_send_xid_pkt(struct llc_sap *sap, struct sk_buff *skb, | |||
286 | * | 286 | * |
287 | * Sends received pdus to the sap state machine. | 287 | * Sends received pdus to the sap state machine. |
288 | */ | 288 | */ |
289 | static void llc_sap_rcv(struct llc_sap *sap, struct sk_buff *skb) | 289 | static void llc_sap_rcv(struct llc_sap *sap, struct sk_buff *skb, |
290 | struct sock *sk) | ||
290 | { | 291 | { |
291 | struct llc_sap_state_ev *ev = llc_sap_ev(skb); | 292 | struct llc_sap_state_ev *ev = llc_sap_ev(skb); |
292 | 293 | ||
293 | ev->type = LLC_SAP_EV_TYPE_PDU; | 294 | ev->type = LLC_SAP_EV_TYPE_PDU; |
294 | ev->reason = 0; | 295 | ev->reason = 0; |
296 | skb->sk = sk; | ||
295 | llc_sap_state_process(sap, skb); | 297 | llc_sap_state_process(sap, skb); |
296 | } | 298 | } |
297 | 299 | ||
@@ -360,8 +362,7 @@ static void llc_sap_mcast(struct llc_sap *sap, | |||
360 | break; | 362 | break; |
361 | 363 | ||
362 | sock_hold(sk); | 364 | sock_hold(sk); |
363 | skb_set_owner_r(skb1, sk); | 365 | llc_sap_rcv(sap, skb1, sk); |
364 | llc_sap_rcv(sap, skb1); | ||
365 | sock_put(sk); | 366 | sock_put(sk); |
366 | } | 367 | } |
367 | read_unlock_bh(&sap->sk_list.lock); | 368 | read_unlock_bh(&sap->sk_list.lock); |
@@ -381,8 +382,7 @@ void llc_sap_handler(struct llc_sap *sap, struct sk_buff *skb) | |||
381 | } else { | 382 | } else { |
382 | struct sock *sk = llc_lookup_dgram(sap, &laddr); | 383 | struct sock *sk = llc_lookup_dgram(sap, &laddr); |
383 | if (sk) { | 384 | if (sk) { |
384 | skb_set_owner_r(skb, sk); | 385 | llc_sap_rcv(sap, skb, sk); |
385 | llc_sap_rcv(sap, skb); | ||
386 | sock_put(sk); | 386 | sock_put(sk); |
387 | } else | 387 | } else |
388 | kfree_skb(skb); | 388 | kfree_skb(skb); |
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index dbf0563c397d..81087281b031 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c | |||
@@ -674,7 +674,7 @@ static int ieee80211_add_station(struct wiphy *wiphy, struct net_device *dev, | |||
674 | if (params->vlan) { | 674 | if (params->vlan) { |
675 | sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); | 675 | sdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); |
676 | 676 | ||
677 | if (sdata->vif.type != IEEE80211_IF_TYPE_VLAN || | 677 | if (sdata->vif.type != IEEE80211_IF_TYPE_VLAN && |
678 | sdata->vif.type != IEEE80211_IF_TYPE_AP) | 678 | sdata->vif.type != IEEE80211_IF_TYPE_AP) |
679 | return -EINVAL; | 679 | return -EINVAL; |
680 | } else | 680 | } else |
@@ -762,7 +762,7 @@ static int ieee80211_change_station(struct wiphy *wiphy, | |||
762 | if (params->vlan && params->vlan != sta->sdata->dev) { | 762 | if (params->vlan && params->vlan != sta->sdata->dev) { |
763 | vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); | 763 | vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan); |
764 | 764 | ||
765 | if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN || | 765 | if (vlansdata->vif.type != IEEE80211_IF_TYPE_VLAN && |
766 | vlansdata->vif.type != IEEE80211_IF_TYPE_AP) { | 766 | vlansdata->vif.type != IEEE80211_IF_TYPE_AP) { |
767 | rcu_read_unlock(); | 767 | rcu_read_unlock(); |
768 | return -EINVAL; | 768 | return -EINVAL; |
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h index 432011cd3647..884be4d100f1 100644 --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h | |||
@@ -853,7 +853,29 @@ u32 ieee80211_handle_ht(struct ieee80211_local *local, int enable_ht, | |||
853 | 853 | ||
854 | /* ieee80211_ioctl.c */ | 854 | /* ieee80211_ioctl.c */ |
855 | extern const struct iw_handler_def ieee80211_iw_handler_def; | 855 | extern const struct iw_handler_def ieee80211_iw_handler_def; |
856 | int ieee80211_set_freq(struct ieee80211_local *local, int freq); | 856 | |
857 | /* Least common multiple of the used rates (in 100 kbps). This is used to | ||
858 | * calculate rate_inv values for each rate so that only integers are needed. */ | ||
859 | #define CHAN_UTIL_RATE_LCM 95040 | ||
860 | /* 1 usec is 1/8 * (95040/10) = 1188 */ | ||
861 | #define CHAN_UTIL_PER_USEC 1188 | ||
862 | /* Amount of bits to shift the result right to scale the total utilization | ||
863 | * to values that will not wrap around 32-bit integers. */ | ||
864 | #define CHAN_UTIL_SHIFT 9 | ||
865 | /* Theoretical maximum of channel utilization counter in 10 ms (stat_time=1): | ||
866 | * (CHAN_UTIL_PER_USEC * 10000) >> CHAN_UTIL_SHIFT = 23203. So dividing the | ||
867 | * raw value with about 23 should give utilization in 10th of a percentage | ||
868 | * (1/1000). However, utilization is only estimated and not all intervals | ||
869 | * between frames etc. are calculated. 18 seems to give numbers that are closer | ||
870 | * to the real maximum. */ | ||
871 | #define CHAN_UTIL_PER_10MS 18 | ||
872 | #define CHAN_UTIL_HDR_LONG (202 * CHAN_UTIL_PER_USEC) | ||
873 | #define CHAN_UTIL_HDR_SHORT (40 * CHAN_UTIL_PER_USEC) | ||
874 | |||
875 | |||
876 | /* ieee80211_ioctl.c */ | ||
877 | int ieee80211_set_freq(struct net_device *dev, int freq); | ||
878 | |||
857 | /* ieee80211_sta.c */ | 879 | /* ieee80211_sta.c */ |
858 | void ieee80211_sta_timer(unsigned long data); | 880 | void ieee80211_sta_timer(unsigned long data); |
859 | void ieee80211_sta_work(struct work_struct *work); | 881 | void ieee80211_sta_work(struct work_struct *work); |
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index f79f6b9938a6..b182f018a187 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c | |||
@@ -516,6 +516,7 @@ static int ieee80211_stop(struct net_device *dev) | |||
516 | case IEEE80211_IF_TYPE_STA: | 516 | case IEEE80211_IF_TYPE_STA: |
517 | case IEEE80211_IF_TYPE_IBSS: | 517 | case IEEE80211_IF_TYPE_IBSS: |
518 | sdata->u.sta.state = IEEE80211_DISABLED; | 518 | sdata->u.sta.state = IEEE80211_DISABLED; |
519 | memset(sdata->u.sta.bssid, 0, ETH_ALEN); | ||
519 | del_timer_sync(&sdata->u.sta.timer); | 520 | del_timer_sync(&sdata->u.sta.timer); |
520 | /* | 521 | /* |
521 | * When we get here, the interface is marked down. | 522 | * When we get here, the interface is marked down. |
@@ -1314,7 +1315,7 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local, | |||
1314 | /* | 1315 | /* |
1315 | * Clear the TX filter mask for this STA when sending the next | 1316 | * Clear the TX filter mask for this STA when sending the next |
1316 | * packet. If the STA went to power save mode, this will happen | 1317 | * packet. If the STA went to power save mode, this will happen |
1317 | * happen when it wakes up for the next time. | 1318 | * when it wakes up for the next time. |
1318 | */ | 1319 | */ |
1319 | set_sta_flags(sta, WLAN_STA_CLEAR_PS_FILT); | 1320 | set_sta_flags(sta, WLAN_STA_CLEAR_PS_FILT); |
1320 | 1321 | ||
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index adbc1c804dd3..7f05820dc629 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -44,7 +44,7 @@ | |||
44 | #define IEEE80211_RETRY_AUTH_INTERVAL (1 * HZ) | 44 | #define IEEE80211_RETRY_AUTH_INTERVAL (1 * HZ) |
45 | #define IEEE80211_SCAN_INTERVAL (2 * HZ) | 45 | #define IEEE80211_SCAN_INTERVAL (2 * HZ) |
46 | #define IEEE80211_SCAN_INTERVAL_SLOW (15 * HZ) | 46 | #define IEEE80211_SCAN_INTERVAL_SLOW (15 * HZ) |
47 | #define IEEE80211_IBSS_JOIN_TIMEOUT (20 * HZ) | 47 | #define IEEE80211_IBSS_JOIN_TIMEOUT (7 * HZ) |
48 | 48 | ||
49 | #define IEEE80211_PROBE_DELAY (HZ / 33) | 49 | #define IEEE80211_PROBE_DELAY (HZ / 33) |
50 | #define IEEE80211_CHANNEL_TIME (HZ / 33) | 50 | #define IEEE80211_CHANNEL_TIME (HZ / 33) |
@@ -1337,7 +1337,7 @@ static void ieee80211_sta_process_addba_request(struct net_device *dev, | |||
1337 | 1337 | ||
1338 | /* prepare reordering buffer */ | 1338 | /* prepare reordering buffer */ |
1339 | tid_agg_rx->reorder_buf = | 1339 | tid_agg_rx->reorder_buf = |
1340 | kmalloc(buf_size * sizeof(struct sk_buf *), GFP_ATOMIC); | 1340 | kmalloc(buf_size * sizeof(struct sk_buff *), GFP_ATOMIC); |
1341 | if (!tid_agg_rx->reorder_buf) { | 1341 | if (!tid_agg_rx->reorder_buf) { |
1342 | if (net_ratelimit()) | 1342 | if (net_ratelimit()) |
1343 | printk(KERN_ERR "can not allocate reordering buffer " | 1343 | printk(KERN_ERR "can not allocate reordering buffer " |
@@ -1346,7 +1346,7 @@ static void ieee80211_sta_process_addba_request(struct net_device *dev, | |||
1346 | goto end; | 1346 | goto end; |
1347 | } | 1347 | } |
1348 | memset(tid_agg_rx->reorder_buf, 0, | 1348 | memset(tid_agg_rx->reorder_buf, 0, |
1349 | buf_size * sizeof(struct sk_buf *)); | 1349 | buf_size * sizeof(struct sk_buff *)); |
1350 | 1350 | ||
1351 | if (local->ops->ampdu_action) | 1351 | if (local->ops->ampdu_action) |
1352 | ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_START, | 1352 | ret = local->ops->ampdu_action(hw, IEEE80211_AMPDU_RX_START, |
@@ -1625,7 +1625,7 @@ void sta_addba_resp_timer_expired(unsigned long data) | |||
1625 | * only one argument, and both sta_info and TID are needed, so init | 1625 | * only one argument, and both sta_info and TID are needed, so init |
1626 | * flow in sta_info_create gives the TID as data, while the timer_to_id | 1626 | * flow in sta_info_create gives the TID as data, while the timer_to_id |
1627 | * array gives the sta through container_of */ | 1627 | * array gives the sta through container_of */ |
1628 | u16 tid = *(int *)data; | 1628 | u16 tid = *(u8 *)data; |
1629 | struct sta_info *temp_sta = container_of((void *)data, | 1629 | struct sta_info *temp_sta = container_of((void *)data, |
1630 | struct sta_info, timer_to_tid[tid]); | 1630 | struct sta_info, timer_to_tid[tid]); |
1631 | 1631 | ||
@@ -1673,7 +1673,7 @@ timer_expired_exit: | |||
1673 | static void sta_rx_agg_session_timer_expired(unsigned long data) | 1673 | static void sta_rx_agg_session_timer_expired(unsigned long data) |
1674 | { | 1674 | { |
1675 | /* not an elegant detour, but there is no choice as the timer passes | 1675 | /* not an elegant detour, but there is no choice as the timer passes |
1676 | * only one argument, and verious sta_info are needed here, so init | 1676 | * only one argument, and various sta_info are needed here, so init |
1677 | * flow in sta_info_create gives the TID as data, while the timer_to_id | 1677 | * flow in sta_info_create gives the TID as data, while the timer_to_id |
1678 | * array gives the sta through container_of */ | 1678 | * array gives the sta through container_of */ |
1679 | u8 *ptid = (u8 *)data; | 1679 | u8 *ptid = (u8 *)data; |
@@ -2348,6 +2348,7 @@ static int ieee80211_sta_join_ibss(struct net_device *dev, | |||
2348 | u8 *pos; | 2348 | u8 *pos; |
2349 | struct ieee80211_sub_if_data *sdata; | 2349 | struct ieee80211_sub_if_data *sdata; |
2350 | struct ieee80211_supported_band *sband; | 2350 | struct ieee80211_supported_band *sband; |
2351 | union iwreq_data wrqu; | ||
2351 | 2352 | ||
2352 | sband = local->hw.wiphy->bands[local->hw.conf.channel->band]; | 2353 | sband = local->hw.wiphy->bands[local->hw.conf.channel->band]; |
2353 | 2354 | ||
@@ -2370,13 +2371,10 @@ static int ieee80211_sta_join_ibss(struct net_device *dev, | |||
2370 | sdata->drop_unencrypted = bss->capability & | 2371 | sdata->drop_unencrypted = bss->capability & |
2371 | WLAN_CAPABILITY_PRIVACY ? 1 : 0; | 2372 | WLAN_CAPABILITY_PRIVACY ? 1 : 0; |
2372 | 2373 | ||
2373 | res = ieee80211_set_freq(local, bss->freq); | 2374 | res = ieee80211_set_freq(dev, bss->freq); |
2374 | 2375 | ||
2375 | if (local->oper_channel->flags & IEEE80211_CHAN_NO_IBSS) { | 2376 | if (res) |
2376 | printk(KERN_DEBUG "%s: IBSS not allowed on frequency " | 2377 | return res; |
2377 | "%d MHz\n", dev->name, local->oper_channel->center_freq); | ||
2378 | return -1; | ||
2379 | } | ||
2380 | 2378 | ||
2381 | /* Set beacon template */ | 2379 | /* Set beacon template */ |
2382 | skb = dev_alloc_skb(local->hw.extra_tx_headroom + 400); | 2380 | skb = dev_alloc_skb(local->hw.extra_tx_headroom + 400); |
@@ -2491,7 +2489,9 @@ static int ieee80211_sta_join_ibss(struct net_device *dev, | |||
2491 | ifsta->state = IEEE80211_IBSS_JOINED; | 2489 | ifsta->state = IEEE80211_IBSS_JOINED; |
2492 | mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL); | 2490 | mod_timer(&ifsta->timer, jiffies + IEEE80211_IBSS_MERGE_INTERVAL); |
2493 | 2491 | ||
2494 | ieee80211_rx_bss_put(dev, bss); | 2492 | memset(&wrqu, 0, sizeof(wrqu)); |
2493 | memcpy(wrqu.ap_addr.sa_data, bss->bssid, ETH_ALEN); | ||
2494 | wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); | ||
2495 | 2495 | ||
2496 | return res; | 2496 | return res; |
2497 | } | 2497 | } |
@@ -3518,7 +3518,7 @@ static int ieee80211_sta_config_auth(struct net_device *dev, | |||
3518 | spin_unlock_bh(&local->sta_bss_lock); | 3518 | spin_unlock_bh(&local->sta_bss_lock); |
3519 | 3519 | ||
3520 | if (selected) { | 3520 | if (selected) { |
3521 | ieee80211_set_freq(local, selected->freq); | 3521 | ieee80211_set_freq(dev, selected->freq); |
3522 | if (!(ifsta->flags & IEEE80211_STA_SSID_SET)) | 3522 | if (!(ifsta->flags & IEEE80211_STA_SSID_SET)) |
3523 | ieee80211_sta_set_ssid(dev, selected->ssid, | 3523 | ieee80211_sta_set_ssid(dev, selected->ssid, |
3524 | selected->ssid_len); | 3524 | selected->ssid_len); |
@@ -3553,6 +3553,7 @@ static int ieee80211_sta_create_ibss(struct net_device *dev, | |||
3553 | struct ieee80211_supported_band *sband; | 3553 | struct ieee80211_supported_band *sband; |
3554 | u8 bssid[ETH_ALEN], *pos; | 3554 | u8 bssid[ETH_ALEN], *pos; |
3555 | int i; | 3555 | int i; |
3556 | int ret; | ||
3556 | DECLARE_MAC_BUF(mac); | 3557 | DECLARE_MAC_BUF(mac); |
3557 | 3558 | ||
3558 | #if 0 | 3559 | #if 0 |
@@ -3599,7 +3600,9 @@ static int ieee80211_sta_create_ibss(struct net_device *dev, | |||
3599 | *pos++ = (u8) (rate / 5); | 3600 | *pos++ = (u8) (rate / 5); |
3600 | } | 3601 | } |
3601 | 3602 | ||
3602 | return ieee80211_sta_join_ibss(dev, ifsta, bss); | 3603 | ret = ieee80211_sta_join_ibss(dev, ifsta, bss); |
3604 | ieee80211_rx_bss_put(dev, bss); | ||
3605 | return ret; | ||
3603 | } | 3606 | } |
3604 | 3607 | ||
3605 | 3608 | ||
@@ -3647,10 +3650,13 @@ static int ieee80211_sta_find_ibss(struct net_device *dev, | |||
3647 | (bss = ieee80211_rx_bss_get(dev, bssid, | 3650 | (bss = ieee80211_rx_bss_get(dev, bssid, |
3648 | local->hw.conf.channel->center_freq, | 3651 | local->hw.conf.channel->center_freq, |
3649 | ifsta->ssid, ifsta->ssid_len))) { | 3652 | ifsta->ssid, ifsta->ssid_len))) { |
3653 | int ret; | ||
3650 | printk(KERN_DEBUG "%s: Selected IBSS BSSID %s" | 3654 | printk(KERN_DEBUG "%s: Selected IBSS BSSID %s" |
3651 | " based on configured SSID\n", | 3655 | " based on configured SSID\n", |
3652 | dev->name, print_mac(mac, bssid)); | 3656 | dev->name, print_mac(mac, bssid)); |
3653 | return ieee80211_sta_join_ibss(dev, ifsta, bss); | 3657 | ret = ieee80211_sta_join_ibss(dev, ifsta, bss); |
3658 | ieee80211_rx_bss_put(dev, bss); | ||
3659 | return ret; | ||
3654 | } | 3660 | } |
3655 | #ifdef CONFIG_MAC80211_IBSS_DEBUG | 3661 | #ifdef CONFIG_MAC80211_IBSS_DEBUG |
3656 | printk(KERN_DEBUG " did not try to join ibss\n"); | 3662 | printk(KERN_DEBUG " did not try to join ibss\n"); |
@@ -4127,18 +4133,17 @@ ieee80211_sta_scan_result(struct net_device *dev, | |||
4127 | 4133 | ||
4128 | memset(&iwe, 0, sizeof(iwe)); | 4134 | memset(&iwe, 0, sizeof(iwe)); |
4129 | iwe.cmd = SIOCGIWFREQ; | 4135 | iwe.cmd = SIOCGIWFREQ; |
4130 | iwe.u.freq.m = bss->freq; | 4136 | iwe.u.freq.m = ieee80211_frequency_to_channel(bss->freq); |
4131 | iwe.u.freq.e = 6; | 4137 | iwe.u.freq.e = 0; |
4132 | current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, | 4138 | current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, |
4133 | IW_EV_FREQ_LEN); | 4139 | IW_EV_FREQ_LEN); |
4134 | 4140 | ||
4135 | memset(&iwe, 0, sizeof(iwe)); | 4141 | memset(&iwe, 0, sizeof(iwe)); |
4136 | iwe.cmd = SIOCGIWFREQ; | 4142 | iwe.cmd = SIOCGIWFREQ; |
4137 | iwe.u.freq.m = ieee80211_frequency_to_channel(bss->freq); | 4143 | iwe.u.freq.m = bss->freq; |
4138 | iwe.u.freq.e = 0; | 4144 | iwe.u.freq.e = 6; |
4139 | current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, | 4145 | current_ev = iwe_stream_add_event(current_ev, end_buf, &iwe, |
4140 | IW_EV_FREQ_LEN); | 4146 | IW_EV_FREQ_LEN); |
4141 | |||
4142 | memset(&iwe, 0, sizeof(iwe)); | 4147 | memset(&iwe, 0, sizeof(iwe)); |
4143 | iwe.cmd = IWEVQUAL; | 4148 | iwe.cmd = IWEVQUAL; |
4144 | iwe.u.qual.qual = bss->qual; | 4149 | iwe.u.qual.qual = bss->qual; |
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 9400a9766a77..a3643fd86af9 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1116,7 +1116,7 @@ ieee80211_data_to_8023(struct ieee80211_rx_data *rx) | |||
1116 | u16 fc, hdrlen, ethertype; | 1116 | u16 fc, hdrlen, ethertype; |
1117 | u8 *payload; | 1117 | u8 *payload; |
1118 | u8 dst[ETH_ALEN]; | 1118 | u8 dst[ETH_ALEN]; |
1119 | u8 src[ETH_ALEN]; | 1119 | u8 src[ETH_ALEN] __aligned(2); |
1120 | struct sk_buff *skb = rx->skb; | 1120 | struct sk_buff *skb = rx->skb; |
1121 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 1121 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
1122 | DECLARE_MAC_BUF(mac); | 1122 | DECLARE_MAC_BUF(mac); |
@@ -1259,7 +1259,7 @@ ieee80211_data_to_8023(struct ieee80211_rx_data *rx) | |||
1259 | */ | 1259 | */ |
1260 | static bool ieee80211_frame_allowed(struct ieee80211_rx_data *rx) | 1260 | static bool ieee80211_frame_allowed(struct ieee80211_rx_data *rx) |
1261 | { | 1261 | { |
1262 | static const u8 pae_group_addr[ETH_ALEN] | 1262 | static const u8 pae_group_addr[ETH_ALEN] __aligned(2) |
1263 | = { 0x01, 0x80, 0xC2, 0x00, 0x00, 0x03 }; | 1263 | = { 0x01, 0x80, 0xC2, 0x00, 0x00, 0x03 }; |
1264 | struct ethhdr *ehdr = (struct ethhdr *) rx->skb->data; | 1264 | struct ethhdr *ehdr = (struct ethhdr *) rx->skb->data; |
1265 | 1265 | ||
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 5a77e2c01f49..6513bc2d2707 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -34,11 +34,11 @@ void *mac80211_wiphy_privid = &mac80211_wiphy_privid; | |||
34 | 34 | ||
35 | /* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */ | 35 | /* See IEEE 802.1H for LLC/SNAP encapsulation/decapsulation */ |
36 | /* Ethernet-II snap header (RFC1042 for most EtherTypes) */ | 36 | /* Ethernet-II snap header (RFC1042 for most EtherTypes) */ |
37 | const unsigned char rfc1042_header[] = | 37 | const unsigned char rfc1042_header[] __aligned(2) = |
38 | { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 }; | 38 | { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 }; |
39 | 39 | ||
40 | /* Bridge-Tunnel header (for EtherTypes ETH_P_AARP and ETH_P_IPX) */ | 40 | /* Bridge-Tunnel header (for EtherTypes ETH_P_AARP and ETH_P_IPX) */ |
41 | const unsigned char bridge_tunnel_header[] = | 41 | const unsigned char bridge_tunnel_header[] __aligned(2) = |
42 | { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 }; | 42 | { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8 }; |
43 | 43 | ||
44 | 44 | ||
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c index c2e2378af082..4806d96b9877 100644 --- a/net/mac80211/wext.c +++ b/net/mac80211/wext.c | |||
@@ -302,14 +302,22 @@ static int ieee80211_ioctl_giwmode(struct net_device *dev, | |||
302 | return 0; | 302 | return 0; |
303 | } | 303 | } |
304 | 304 | ||
305 | int ieee80211_set_freq(struct ieee80211_local *local, int freqMHz) | 305 | int ieee80211_set_freq(struct net_device *dev, int freqMHz) |
306 | { | 306 | { |
307 | int ret = -EINVAL; | 307 | int ret = -EINVAL; |
308 | struct ieee80211_channel *chan; | 308 | struct ieee80211_channel *chan; |
309 | struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); | ||
310 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | ||
309 | 311 | ||
310 | chan = ieee80211_get_channel(local->hw.wiphy, freqMHz); | 312 | chan = ieee80211_get_channel(local->hw.wiphy, freqMHz); |
311 | 313 | ||
312 | if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) { | 314 | if (chan && !(chan->flags & IEEE80211_CHAN_DISABLED)) { |
315 | if (sdata->vif.type == IEEE80211_IF_TYPE_IBSS && | ||
316 | chan->flags & IEEE80211_CHAN_NO_IBSS) { | ||
317 | printk(KERN_DEBUG "%s: IBSS not allowed on frequency " | ||
318 | "%d MHz\n", dev->name, chan->center_freq); | ||
319 | return ret; | ||
320 | } | ||
313 | local->oper_channel = chan; | 321 | local->oper_channel = chan; |
314 | 322 | ||
315 | if (local->sta_sw_scanning || local->sta_hw_scanning) | 323 | if (local->sta_sw_scanning || local->sta_hw_scanning) |
@@ -327,7 +335,6 @@ static int ieee80211_ioctl_siwfreq(struct net_device *dev, | |||
327 | struct iw_request_info *info, | 335 | struct iw_request_info *info, |
328 | struct iw_freq *freq, char *extra) | 336 | struct iw_freq *freq, char *extra) |
329 | { | 337 | { |
330 | struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); | ||
331 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 338 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
332 | 339 | ||
333 | if (sdata->vif.type == IEEE80211_IF_TYPE_STA) | 340 | if (sdata->vif.type == IEEE80211_IF_TYPE_STA) |
@@ -341,14 +348,14 @@ static int ieee80211_ioctl_siwfreq(struct net_device *dev, | |||
341 | IEEE80211_STA_AUTO_CHANNEL_SEL; | 348 | IEEE80211_STA_AUTO_CHANNEL_SEL; |
342 | return 0; | 349 | return 0; |
343 | } else | 350 | } else |
344 | return ieee80211_set_freq(local, | 351 | return ieee80211_set_freq(dev, |
345 | ieee80211_channel_to_frequency(freq->m)); | 352 | ieee80211_channel_to_frequency(freq->m)); |
346 | } else { | 353 | } else { |
347 | int i, div = 1000000; | 354 | int i, div = 1000000; |
348 | for (i = 0; i < freq->e; i++) | 355 | for (i = 0; i < freq->e; i++) |
349 | div /= 10; | 356 | div /= 10; |
350 | if (div > 0) | 357 | if (div > 0) |
351 | return ieee80211_set_freq(local, freq->m / div); | 358 | return ieee80211_set_freq(dev, freq->m / div); |
352 | else | 359 | else |
353 | return -EINVAL; | 360 | return -EINVAL; |
354 | } | 361 | } |
@@ -501,9 +508,14 @@ static int ieee80211_ioctl_giwap(struct net_device *dev, | |||
501 | sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 508 | sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
502 | if (sdata->vif.type == IEEE80211_IF_TYPE_STA || | 509 | if (sdata->vif.type == IEEE80211_IF_TYPE_STA || |
503 | sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { | 510 | sdata->vif.type == IEEE80211_IF_TYPE_IBSS) { |
504 | ap_addr->sa_family = ARPHRD_ETHER; | 511 | if (sdata->u.sta.state == IEEE80211_ASSOCIATED) { |
505 | memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN); | 512 | ap_addr->sa_family = ARPHRD_ETHER; |
506 | return 0; | 513 | memcpy(&ap_addr->sa_data, sdata->u.sta.bssid, ETH_ALEN); |
514 | return 0; | ||
515 | } else { | ||
516 | memset(&ap_addr->sa_data, 0, ETH_ALEN); | ||
517 | return 0; | ||
518 | } | ||
507 | } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) { | 519 | } else if (sdata->vif.type == IEEE80211_IF_TYPE_WDS) { |
508 | ap_addr->sa_family = ARPHRD_ETHER; | 520 | ap_addr->sa_family = ARPHRD_ETHER; |
509 | memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN); | 521 | memcpy(&ap_addr->sa_data, sdata->u.wds.remote_addr, ETH_ALEN); |
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c index e31beeb33b2b..e8f0dead267f 100644 --- a/net/netfilter/nf_conntrack_expect.c +++ b/net/netfilter/nf_conntrack_expect.c | |||
@@ -587,10 +587,10 @@ int __init nf_conntrack_expect_init(void) | |||
587 | return 0; | 587 | return 0; |
588 | 588 | ||
589 | err3: | 589 | err3: |
590 | kmem_cache_destroy(nf_ct_expect_cachep); | ||
591 | err2: | ||
590 | nf_ct_free_hashtable(nf_ct_expect_hash, nf_ct_expect_vmalloc, | 592 | nf_ct_free_hashtable(nf_ct_expect_hash, nf_ct_expect_vmalloc, |
591 | nf_ct_expect_hsize); | 593 | nf_ct_expect_hsize); |
592 | err2: | ||
593 | kmem_cache_destroy(nf_ct_expect_cachep); | ||
594 | err1: | 594 | err1: |
595 | return err; | 595 | return err; |
596 | } | 596 | } |
diff --git a/net/netfilter/xt_connlimit.c b/net/netfilter/xt_connlimit.c index 2e89a00df92c..70907f6baac3 100644 --- a/net/netfilter/xt_connlimit.c +++ b/net/netfilter/xt_connlimit.c | |||
@@ -73,7 +73,8 @@ connlimit_iphash6(const union nf_inet_addr *addr, | |||
73 | static inline bool already_closed(const struct nf_conn *conn) | 73 | static inline bool already_closed(const struct nf_conn *conn) |
74 | { | 74 | { |
75 | if (nf_ct_protonum(conn) == IPPROTO_TCP) | 75 | if (nf_ct_protonum(conn) == IPPROTO_TCP) |
76 | return conn->proto.tcp.state == TCP_CONNTRACK_TIME_WAIT; | 76 | return conn->proto.tcp.state == TCP_CONNTRACK_TIME_WAIT || |
77 | conn->proto.tcp.state == TCP_CONNTRACK_CLOSE; | ||
77 | else | 78 | else |
78 | return 0; | 79 | return 0; |
79 | } | 80 | } |
diff --git a/net/netlink/attr.c b/net/netlink/attr.c index feb326f4a752..47bbf45ae5d7 100644 --- a/net/netlink/attr.c +++ b/net/netlink/attr.c | |||
@@ -400,13 +400,13 @@ void __nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data) | |||
400 | * @attrlen: length of attribute payload | 400 | * @attrlen: length of attribute payload |
401 | * @data: head of attribute payload | 401 | * @data: head of attribute payload |
402 | * | 402 | * |
403 | * Returns -1 if the tailroom of the skb is insufficient to store | 403 | * Returns -EMSGSIZE if the tailroom of the skb is insufficient to store |
404 | * the attribute header and payload. | 404 | * the attribute header and payload. |
405 | */ | 405 | */ |
406 | int nla_put(struct sk_buff *skb, int attrtype, int attrlen, const void *data) | 406 | int nla_put(struct sk_buff *skb, int attrtype, int attrlen, const void *data) |
407 | { | 407 | { |
408 | if (unlikely(skb_tailroom(skb) < nla_total_size(attrlen))) | 408 | if (unlikely(skb_tailroom(skb) < nla_total_size(attrlen))) |
409 | return -1; | 409 | return -EMSGSIZE; |
410 | 410 | ||
411 | __nla_put(skb, attrtype, attrlen, data); | 411 | __nla_put(skb, attrtype, attrlen, data); |
412 | return 0; | 412 | return 0; |
@@ -418,13 +418,13 @@ int nla_put(struct sk_buff *skb, int attrtype, int attrlen, const void *data) | |||
418 | * @attrlen: length of attribute payload | 418 | * @attrlen: length of attribute payload |
419 | * @data: head of attribute payload | 419 | * @data: head of attribute payload |
420 | * | 420 | * |
421 | * Returns -1 if the tailroom of the skb is insufficient to store | 421 | * Returns -EMSGSIZE if the tailroom of the skb is insufficient to store |
422 | * the attribute payload. | 422 | * the attribute payload. |
423 | */ | 423 | */ |
424 | int nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data) | 424 | int nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data) |
425 | { | 425 | { |
426 | if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen))) | 426 | if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen))) |
427 | return -1; | 427 | return -EMSGSIZE; |
428 | 428 | ||
429 | __nla_put_nohdr(skb, attrlen, data); | 429 | __nla_put_nohdr(skb, attrlen, data); |
430 | return 0; | 430 | return 0; |
@@ -436,13 +436,13 @@ int nla_put_nohdr(struct sk_buff *skb, int attrlen, const void *data) | |||
436 | * @attrlen: length of attribute payload | 436 | * @attrlen: length of attribute payload |
437 | * @data: head of attribute payload | 437 | * @data: head of attribute payload |
438 | * | 438 | * |
439 | * Returns -1 if the tailroom of the skb is insufficient to store | 439 | * Returns -EMSGSIZE if the tailroom of the skb is insufficient to store |
440 | * the attribute payload. | 440 | * the attribute payload. |
441 | */ | 441 | */ |
442 | int nla_append(struct sk_buff *skb, int attrlen, const void *data) | 442 | int nla_append(struct sk_buff *skb, int attrlen, const void *data) |
443 | { | 443 | { |
444 | if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen))) | 444 | if (unlikely(skb_tailroom(skb) < NLA_ALIGN(attrlen))) |
445 | return -1; | 445 | return -EMSGSIZE; |
446 | 446 | ||
447 | memcpy(skb_put(skb, attrlen), data, attrlen); | 447 | memcpy(skb_put(skb, attrlen), data, attrlen); |
448 | return 0; | 448 | return 0; |
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c index d16929c9b4bc..f5aa23c3e886 100644 --- a/net/netlink/genetlink.c +++ b/net/netlink/genetlink.c | |||
@@ -554,7 +554,8 @@ static int ctrl_fill_info(struct genl_family *family, u32 pid, u32 seq, | |||
554 | return genlmsg_end(skb, hdr); | 554 | return genlmsg_end(skb, hdr); |
555 | 555 | ||
556 | nla_put_failure: | 556 | nla_put_failure: |
557 | return genlmsg_cancel(skb, hdr); | 557 | genlmsg_cancel(skb, hdr); |
558 | return -EMSGSIZE; | ||
558 | } | 559 | } |
559 | 560 | ||
560 | static int ctrl_fill_mcgrp_info(struct genl_multicast_group *grp, u32 pid, | 561 | static int ctrl_fill_mcgrp_info(struct genl_multicast_group *grp, u32 pid, |
@@ -590,7 +591,8 @@ static int ctrl_fill_mcgrp_info(struct genl_multicast_group *grp, u32 pid, | |||
590 | return genlmsg_end(skb, hdr); | 591 | return genlmsg_end(skb, hdr); |
591 | 592 | ||
592 | nla_put_failure: | 593 | nla_put_failure: |
593 | return genlmsg_cancel(skb, hdr); | 594 | genlmsg_cancel(skb, hdr); |
595 | return -EMSGSIZE; | ||
594 | } | 596 | } |
595 | 597 | ||
596 | static int ctrl_dumpfamily(struct sk_buff *skb, struct netlink_callback *cb) | 598 | static int ctrl_dumpfamily(struct sk_buff *skb, struct netlink_callback *cb) |
diff --git a/net/sched/sch_dsmark.c b/net/sched/sch_dsmark.c index 0df911fd67b1..64465bacbe79 100644 --- a/net/sched/sch_dsmark.c +++ b/net/sched/sch_dsmark.c | |||
@@ -444,7 +444,8 @@ static int dsmark_dump_class(struct Qdisc *sch, unsigned long cl, | |||
444 | return nla_nest_end(skb, opts); | 444 | return nla_nest_end(skb, opts); |
445 | 445 | ||
446 | nla_put_failure: | 446 | nla_put_failure: |
447 | return nla_nest_cancel(skb, opts); | 447 | nla_nest_cancel(skb, opts); |
448 | return -EMSGSIZE; | ||
448 | } | 449 | } |
449 | 450 | ||
450 | static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb) | 451 | static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb) |
@@ -466,7 +467,8 @@ static int dsmark_dump(struct Qdisc *sch, struct sk_buff *skb) | |||
466 | return nla_nest_end(skb, opts); | 467 | return nla_nest_end(skb, opts); |
467 | 468 | ||
468 | nla_put_failure: | 469 | nla_put_failure: |
469 | return nla_nest_cancel(skb, opts); | 470 | nla_nest_cancel(skb, opts); |
471 | return -EMSGSIZE; | ||
470 | } | 472 | } |
471 | 473 | ||
472 | static const struct Qdisc_class_ops dsmark_class_ops = { | 474 | static const struct Qdisc_class_ops dsmark_class_ops = { |
diff --git a/net/sched/sch_gred.c b/net/sched/sch_gred.c index 3a9d226ff1e4..c89fba56db56 100644 --- a/net/sched/sch_gred.c +++ b/net/sched/sch_gred.c | |||
@@ -582,7 +582,8 @@ append_opt: | |||
582 | return nla_nest_end(skb, opts); | 582 | return nla_nest_end(skb, opts); |
583 | 583 | ||
584 | nla_put_failure: | 584 | nla_put_failure: |
585 | return nla_nest_cancel(skb, opts); | 585 | nla_nest_cancel(skb, opts); |
586 | return -EMSGSIZE; | ||
586 | } | 587 | } |
587 | 588 | ||
588 | static void gred_destroy(struct Qdisc *sch) | 589 | static void gred_destroy(struct Qdisc *sch) |
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c index 87293d0db1d7..fdfaa3fcc16d 100644 --- a/net/sched/sch_hfsc.c +++ b/net/sched/sch_hfsc.c | |||
@@ -1360,7 +1360,7 @@ hfsc_dump_class(struct Qdisc *sch, unsigned long arg, struct sk_buff *skb, | |||
1360 | 1360 | ||
1361 | nla_put_failure: | 1361 | nla_put_failure: |
1362 | nla_nest_cancel(skb, nest); | 1362 | nla_nest_cancel(skb, nest); |
1363 | return -1; | 1363 | return -EMSGSIZE; |
1364 | } | 1364 | } |
1365 | 1365 | ||
1366 | static int | 1366 | static int |
diff --git a/net/sched/sch_red.c b/net/sched/sch_red.c index 3dcd493f4f4a..5c569853b9c0 100644 --- a/net/sched/sch_red.c +++ b/net/sched/sch_red.c | |||
@@ -281,7 +281,8 @@ static int red_dump(struct Qdisc *sch, struct sk_buff *skb) | |||
281 | return nla_nest_end(skb, opts); | 281 | return nla_nest_end(skb, opts); |
282 | 282 | ||
283 | nla_put_failure: | 283 | nla_put_failure: |
284 | return nla_nest_cancel(skb, opts); | 284 | nla_nest_cancel(skb, opts); |
285 | return -EMSGSIZE; | ||
285 | } | 286 | } |
286 | 287 | ||
287 | static int red_dump_stats(struct Qdisc *sch, struct gnet_dump *d) | 288 | static int red_dump_stats(struct Qdisc *sch, struct gnet_dump *d) |
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 7b79d1e781a8..d5cc731b6798 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
@@ -1206,6 +1206,9 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc) | |||
1206 | struct list_head *head = &asoc->peer.transport_addr_list; | 1206 | struct list_head *head = &asoc->peer.transport_addr_list; |
1207 | struct list_head *pos; | 1207 | struct list_head *pos; |
1208 | 1208 | ||
1209 | if (asoc->peer.transport_count == 1) | ||
1210 | return; | ||
1211 | |||
1209 | /* Find the next transport in a round-robin fashion. */ | 1212 | /* Find the next transport in a round-robin fashion. */ |
1210 | t = asoc->peer.retran_path; | 1213 | t = asoc->peer.retran_path; |
1211 | pos = &t->transports; | 1214 | pos = &t->transports; |
@@ -1220,6 +1223,15 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc) | |||
1220 | 1223 | ||
1221 | t = list_entry(pos, struct sctp_transport, transports); | 1224 | t = list_entry(pos, struct sctp_transport, transports); |
1222 | 1225 | ||
1226 | /* We have exhausted the list, but didn't find any | ||
1227 | * other active transports. If so, use the next | ||
1228 | * transport. | ||
1229 | */ | ||
1230 | if (t == asoc->peer.retran_path) { | ||
1231 | t = next; | ||
1232 | break; | ||
1233 | } | ||
1234 | |||
1223 | /* Try to find an active transport. */ | 1235 | /* Try to find an active transport. */ |
1224 | 1236 | ||
1225 | if ((t->state == SCTP_ACTIVE) || | 1237 | if ((t->state == SCTP_ACTIVE) || |
@@ -1232,15 +1244,6 @@ void sctp_assoc_update_retran_path(struct sctp_association *asoc) | |||
1232 | if (!next) | 1244 | if (!next) |
1233 | next = t; | 1245 | next = t; |
1234 | } | 1246 | } |
1235 | |||
1236 | /* We have exhausted the list, but didn't find any | ||
1237 | * other active transports. If so, use the next | ||
1238 | * transport. | ||
1239 | */ | ||
1240 | if (t == asoc->peer.retran_path) { | ||
1241 | t = next; | ||
1242 | break; | ||
1243 | } | ||
1244 | } | 1247 | } |
1245 | 1248 | ||
1246 | asoc->peer.retran_path = t; | 1249 | asoc->peer.retran_path = t; |
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index e45e44c60635..a2f4d4d51593 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c | |||
@@ -299,7 +299,8 @@ static inline int sctp_v6_addr_match_len(union sctp_addr *s1, | |||
299 | /* Fills in the source address(saddr) based on the destination address(daddr) | 299 | /* Fills in the source address(saddr) based on the destination address(daddr) |
300 | * and asoc's bind address list. | 300 | * and asoc's bind address list. |
301 | */ | 301 | */ |
302 | static void sctp_v6_get_saddr(struct sctp_association *asoc, | 302 | static void sctp_v6_get_saddr(struct sctp_sock *sk, |
303 | struct sctp_association *asoc, | ||
303 | struct dst_entry *dst, | 304 | struct dst_entry *dst, |
304 | union sctp_addr *daddr, | 305 | union sctp_addr *daddr, |
305 | union sctp_addr *saddr) | 306 | union sctp_addr *saddr) |
@@ -318,7 +319,7 @@ static void sctp_v6_get_saddr(struct sctp_association *asoc, | |||
318 | if (!asoc) { | 319 | if (!asoc) { |
319 | ipv6_dev_get_saddr(dst ? ip6_dst_idev(dst)->dev : NULL, | 320 | ipv6_dev_get_saddr(dst ? ip6_dst_idev(dst)->dev : NULL, |
320 | &daddr->v6.sin6_addr, | 321 | &daddr->v6.sin6_addr, |
321 | inet6_sk(asoc->base.sk)->srcprefs, | 322 | inet6_sk(&sk->inet.sk)->srcprefs, |
322 | &saddr->v6.sin6_addr); | 323 | &saddr->v6.sin6_addr); |
323 | SCTP_DEBUG_PRINTK("saddr from ipv6_get_saddr: " NIP6_FMT "\n", | 324 | SCTP_DEBUG_PRINTK("saddr from ipv6_get_saddr: " NIP6_FMT "\n", |
324 | NIP6(saddr->v6.sin6_addr)); | 325 | NIP6(saddr->v6.sin6_addr)); |
@@ -726,6 +727,11 @@ static void sctp_v6_seq_dump_addr(struct seq_file *seq, union sctp_addr *addr) | |||
726 | seq_printf(seq, NIP6_FMT " ", NIP6(addr->v6.sin6_addr)); | 727 | seq_printf(seq, NIP6_FMT " ", NIP6(addr->v6.sin6_addr)); |
727 | } | 728 | } |
728 | 729 | ||
730 | static void sctp_v6_ecn_capable(struct sock *sk) | ||
731 | { | ||
732 | inet6_sk(sk)->tclass |= INET_ECN_ECT_0; | ||
733 | } | ||
734 | |||
729 | /* Initialize a PF_INET6 socket msg_name. */ | 735 | /* Initialize a PF_INET6 socket msg_name. */ |
730 | static void sctp_inet6_msgname(char *msgname, int *addr_len) | 736 | static void sctp_inet6_msgname(char *msgname, int *addr_len) |
731 | { | 737 | { |
@@ -996,6 +1002,7 @@ static struct sctp_af sctp_af_inet6 = { | |||
996 | .skb_iif = sctp_v6_skb_iif, | 1002 | .skb_iif = sctp_v6_skb_iif, |
997 | .is_ce = sctp_v6_is_ce, | 1003 | .is_ce = sctp_v6_is_ce, |
998 | .seq_dump_addr = sctp_v6_seq_dump_addr, | 1004 | .seq_dump_addr = sctp_v6_seq_dump_addr, |
1005 | .ecn_capable = sctp_v6_ecn_capable, | ||
999 | .net_header_len = sizeof(struct ipv6hdr), | 1006 | .net_header_len = sizeof(struct ipv6hdr), |
1000 | .sockaddr_len = sizeof(struct sockaddr_in6), | 1007 | .sockaddr_len = sizeof(struct sockaddr_in6), |
1001 | #ifdef CONFIG_COMPAT | 1008 | #ifdef CONFIG_COMPAT |
diff --git a/net/sctp/output.c b/net/sctp/output.c index cf4f9fb6819d..6d45bae93b46 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c | |||
@@ -548,7 +548,7 @@ int sctp_packet_transmit(struct sctp_packet *packet) | |||
548 | * Note: The works for IPv6 layer checks this bit too later | 548 | * Note: The works for IPv6 layer checks this bit too later |
549 | * in transmission. See IP6_ECN_flow_xmit(). | 549 | * in transmission. See IP6_ECN_flow_xmit(). |
550 | */ | 550 | */ |
551 | INET_ECN_xmit(nskb->sk); | 551 | (*tp->af_specific->ecn_capable)(nskb->sk); |
552 | 552 | ||
553 | /* Set up the IP options. */ | 553 | /* Set up the IP options. */ |
554 | /* BUG: not implemented | 554 | /* BUG: not implemented |
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 59edfd25a19c..ace6770e9048 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
@@ -208,6 +208,7 @@ void sctp_outq_init(struct sctp_association *asoc, struct sctp_outq *q) | |||
208 | INIT_LIST_HEAD(&q->sacked); | 208 | INIT_LIST_HEAD(&q->sacked); |
209 | INIT_LIST_HEAD(&q->abandoned); | 209 | INIT_LIST_HEAD(&q->abandoned); |
210 | 210 | ||
211 | q->fast_rtx = 0; | ||
211 | q->outstanding_bytes = 0; | 212 | q->outstanding_bytes = 0; |
212 | q->empty = 1; | 213 | q->empty = 1; |
213 | q->cork = 0; | 214 | q->cork = 0; |
@@ -500,6 +501,7 @@ void sctp_retransmit(struct sctp_outq *q, struct sctp_transport *transport, | |||
500 | case SCTP_RTXR_FAST_RTX: | 501 | case SCTP_RTXR_FAST_RTX: |
501 | SCTP_INC_STATS(SCTP_MIB_FAST_RETRANSMITS); | 502 | SCTP_INC_STATS(SCTP_MIB_FAST_RETRANSMITS); |
502 | sctp_transport_lower_cwnd(transport, SCTP_LOWER_CWND_FAST_RTX); | 503 | sctp_transport_lower_cwnd(transport, SCTP_LOWER_CWND_FAST_RTX); |
504 | q->fast_rtx = 1; | ||
503 | break; | 505 | break; |
504 | case SCTP_RTXR_PMTUD: | 506 | case SCTP_RTXR_PMTUD: |
505 | SCTP_INC_STATS(SCTP_MIB_PMTUD_RETRANSMITS); | 507 | SCTP_INC_STATS(SCTP_MIB_PMTUD_RETRANSMITS); |
@@ -518,9 +520,15 @@ void sctp_retransmit(struct sctp_outq *q, struct sctp_transport *transport, | |||
518 | * the sender SHOULD try to advance the "Advanced.Peer.Ack.Point" by | 520 | * the sender SHOULD try to advance the "Advanced.Peer.Ack.Point" by |
519 | * following the procedures outlined in C1 - C5. | 521 | * following the procedures outlined in C1 - C5. |
520 | */ | 522 | */ |
521 | sctp_generate_fwdtsn(q, q->asoc->ctsn_ack_point); | 523 | if (reason == SCTP_RTXR_T3_RTX) |
524 | sctp_generate_fwdtsn(q, q->asoc->ctsn_ack_point); | ||
522 | 525 | ||
523 | error = sctp_outq_flush(q, /* rtx_timeout */ 1); | 526 | /* Flush the queues only on timeout, since fast_rtx is only |
527 | * triggered during sack processing and the queue | ||
528 | * will be flushed at the end. | ||
529 | */ | ||
530 | if (reason != SCTP_RTXR_FAST_RTX) | ||
531 | error = sctp_outq_flush(q, /* rtx_timeout */ 1); | ||
524 | 532 | ||
525 | if (error) | 533 | if (error) |
526 | q->asoc->base.sk->sk_err = -error; | 534 | q->asoc->base.sk->sk_err = -error; |
@@ -538,17 +546,23 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, | |||
538 | int rtx_timeout, int *start_timer) | 546 | int rtx_timeout, int *start_timer) |
539 | { | 547 | { |
540 | struct list_head *lqueue; | 548 | struct list_head *lqueue; |
541 | struct list_head *lchunk; | ||
542 | struct sctp_transport *transport = pkt->transport; | 549 | struct sctp_transport *transport = pkt->transport; |
543 | sctp_xmit_t status; | 550 | sctp_xmit_t status; |
544 | struct sctp_chunk *chunk, *chunk1; | 551 | struct sctp_chunk *chunk, *chunk1; |
545 | struct sctp_association *asoc; | 552 | struct sctp_association *asoc; |
553 | int fast_rtx; | ||
546 | int error = 0; | 554 | int error = 0; |
555 | int timer = 0; | ||
556 | int done = 0; | ||
547 | 557 | ||
548 | asoc = q->asoc; | 558 | asoc = q->asoc; |
549 | lqueue = &q->retransmit; | 559 | lqueue = &q->retransmit; |
560 | fast_rtx = q->fast_rtx; | ||
550 | 561 | ||
551 | /* RFC 2960 6.3.3 Handle T3-rtx Expiration | 562 | /* This loop handles time-out retransmissions, fast retransmissions, |
563 | * and retransmissions due to opening of whindow. | ||
564 | * | ||
565 | * RFC 2960 6.3.3 Handle T3-rtx Expiration | ||
552 | * | 566 | * |
553 | * E3) Determine how many of the earliest (i.e., lowest TSN) | 567 | * E3) Determine how many of the earliest (i.e., lowest TSN) |
554 | * outstanding DATA chunks for the address for which the | 568 | * outstanding DATA chunks for the address for which the |
@@ -563,12 +577,12 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, | |||
563 | * [Just to be painfully clear, if we are retransmitting | 577 | * [Just to be painfully clear, if we are retransmitting |
564 | * because a timeout just happened, we should send only ONE | 578 | * because a timeout just happened, we should send only ONE |
565 | * packet of retransmitted data.] | 579 | * packet of retransmitted data.] |
580 | * | ||
581 | * For fast retransmissions we also send only ONE packet. However, | ||
582 | * if we are just flushing the queue due to open window, we'll | ||
583 | * try to send as much as possible. | ||
566 | */ | 584 | */ |
567 | lchunk = sctp_list_dequeue(lqueue); | 585 | list_for_each_entry_safe(chunk, chunk1, lqueue, transmitted_list) { |
568 | |||
569 | while (lchunk) { | ||
570 | chunk = list_entry(lchunk, struct sctp_chunk, | ||
571 | transmitted_list); | ||
572 | 586 | ||
573 | /* Make sure that Gap Acked TSNs are not retransmitted. A | 587 | /* Make sure that Gap Acked TSNs are not retransmitted. A |
574 | * simple approach is just to move such TSNs out of the | 588 | * simple approach is just to move such TSNs out of the |
@@ -576,58 +590,60 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, | |||
576 | * next chunk. | 590 | * next chunk. |
577 | */ | 591 | */ |
578 | if (chunk->tsn_gap_acked) { | 592 | if (chunk->tsn_gap_acked) { |
579 | list_add_tail(lchunk, &transport->transmitted); | 593 | list_del(&chunk->transmitted_list); |
580 | lchunk = sctp_list_dequeue(lqueue); | 594 | list_add_tail(&chunk->transmitted_list, |
595 | &transport->transmitted); | ||
581 | continue; | 596 | continue; |
582 | } | 597 | } |
583 | 598 | ||
599 | /* If we are doing fast retransmit, ignore non-fast_rtransmit | ||
600 | * chunks | ||
601 | */ | ||
602 | if (fast_rtx && !chunk->fast_retransmit) | ||
603 | continue; | ||
604 | |||
584 | /* Attempt to append this chunk to the packet. */ | 605 | /* Attempt to append this chunk to the packet. */ |
585 | status = sctp_packet_append_chunk(pkt, chunk); | 606 | status = sctp_packet_append_chunk(pkt, chunk); |
586 | 607 | ||
587 | switch (status) { | 608 | switch (status) { |
588 | case SCTP_XMIT_PMTU_FULL: | 609 | case SCTP_XMIT_PMTU_FULL: |
589 | /* Send this packet. */ | 610 | /* Send this packet. */ |
590 | if ((error = sctp_packet_transmit(pkt)) == 0) | 611 | error = sctp_packet_transmit(pkt); |
591 | *start_timer = 1; | ||
592 | 612 | ||
593 | /* If we are retransmitting, we should only | 613 | /* If we are retransmitting, we should only |
594 | * send a single packet. | 614 | * send a single packet. |
595 | */ | 615 | */ |
596 | if (rtx_timeout) { | 616 | if (rtx_timeout || fast_rtx) |
597 | list_add(lchunk, lqueue); | 617 | done = 1; |
598 | lchunk = NULL; | ||
599 | } | ||
600 | 618 | ||
601 | /* Bundle lchunk in the next round. */ | 619 | /* Bundle next chunk in the next round. */ |
602 | break; | 620 | break; |
603 | 621 | ||
604 | case SCTP_XMIT_RWND_FULL: | 622 | case SCTP_XMIT_RWND_FULL: |
605 | /* Send this packet. */ | 623 | /* Send this packet. */ |
606 | if ((error = sctp_packet_transmit(pkt)) == 0) | 624 | error = sctp_packet_transmit(pkt); |
607 | *start_timer = 1; | ||
608 | 625 | ||
609 | /* Stop sending DATA as there is no more room | 626 | /* Stop sending DATA as there is no more room |
610 | * at the receiver. | 627 | * at the receiver. |
611 | */ | 628 | */ |
612 | list_add(lchunk, lqueue); | 629 | done = 1; |
613 | lchunk = NULL; | ||
614 | break; | 630 | break; |
615 | 631 | ||
616 | case SCTP_XMIT_NAGLE_DELAY: | 632 | case SCTP_XMIT_NAGLE_DELAY: |
617 | /* Send this packet. */ | 633 | /* Send this packet. */ |
618 | if ((error = sctp_packet_transmit(pkt)) == 0) | 634 | error = sctp_packet_transmit(pkt); |
619 | *start_timer = 1; | ||
620 | 635 | ||
621 | /* Stop sending DATA because of nagle delay. */ | 636 | /* Stop sending DATA because of nagle delay. */ |
622 | list_add(lchunk, lqueue); | 637 | done = 1; |
623 | lchunk = NULL; | ||
624 | break; | 638 | break; |
625 | 639 | ||
626 | default: | 640 | default: |
627 | /* The append was successful, so add this chunk to | 641 | /* The append was successful, so add this chunk to |
628 | * the transmitted list. | 642 | * the transmitted list. |
629 | */ | 643 | */ |
630 | list_add_tail(lchunk, &transport->transmitted); | 644 | list_del(&chunk->transmitted_list); |
645 | list_add_tail(&chunk->transmitted_list, | ||
646 | &transport->transmitted); | ||
631 | 647 | ||
632 | /* Mark the chunk as ineligible for fast retransmit | 648 | /* Mark the chunk as ineligible for fast retransmit |
633 | * after it is retransmitted. | 649 | * after it is retransmitted. |
@@ -635,27 +651,44 @@ static int sctp_outq_flush_rtx(struct sctp_outq *q, struct sctp_packet *pkt, | |||
635 | if (chunk->fast_retransmit > 0) | 651 | if (chunk->fast_retransmit > 0) |
636 | chunk->fast_retransmit = -1; | 652 | chunk->fast_retransmit = -1; |
637 | 653 | ||
638 | *start_timer = 1; | 654 | /* Force start T3-rtx timer when fast retransmitting |
639 | q->empty = 0; | 655 | * the earliest outstanding TSN |
656 | */ | ||
657 | if (!timer && fast_rtx && | ||
658 | ntohl(chunk->subh.data_hdr->tsn) == | ||
659 | asoc->ctsn_ack_point + 1) | ||
660 | timer = 2; | ||
640 | 661 | ||
641 | /* Retrieve a new chunk to bundle. */ | 662 | q->empty = 0; |
642 | lchunk = sctp_list_dequeue(lqueue); | ||
643 | break; | 663 | break; |
644 | } | 664 | } |
645 | 665 | ||
646 | /* If we are here due to a retransmit timeout or a fast | 666 | /* Set the timer if there were no errors */ |
647 | * retransmit and if there are any chunks left in the retransmit | 667 | if (!error && !timer) |
648 | * queue that could not fit in the PMTU sized packet, they need | 668 | timer = 1; |
649 | * to be marked as ineligible for a subsequent fast retransmit. | 669 | |
650 | */ | 670 | if (done) |
651 | if (rtx_timeout && !lchunk) { | 671 | break; |
652 | list_for_each_entry(chunk1, lqueue, transmitted_list) { | 672 | } |
653 | if (chunk1->fast_retransmit > 0) | 673 | |
654 | chunk1->fast_retransmit = -1; | 674 | /* If we are here due to a retransmit timeout or a fast |
655 | } | 675 | * retransmit and if there are any chunks left in the retransmit |
676 | * queue that could not fit in the PMTU sized packet, they need | ||
677 | * to be marked as ineligible for a subsequent fast retransmit. | ||
678 | */ | ||
679 | if (rtx_timeout || fast_rtx) { | ||
680 | list_for_each_entry(chunk1, lqueue, transmitted_list) { | ||
681 | if (chunk1->fast_retransmit > 0) | ||
682 | chunk1->fast_retransmit = -1; | ||
656 | } | 683 | } |
657 | } | 684 | } |
658 | 685 | ||
686 | *start_timer = timer; | ||
687 | |||
688 | /* Clear fast retransmit hint */ | ||
689 | if (fast_rtx) | ||
690 | q->fast_rtx = 0; | ||
691 | |||
659 | return error; | 692 | return error; |
660 | } | 693 | } |
661 | 694 | ||
@@ -862,7 +895,8 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
862 | rtx_timeout, &start_timer); | 895 | rtx_timeout, &start_timer); |
863 | 896 | ||
864 | if (start_timer) | 897 | if (start_timer) |
865 | sctp_transport_reset_timers(transport); | 898 | sctp_transport_reset_timers(transport, |
899 | start_timer-1); | ||
866 | 900 | ||
867 | /* This can happen on COOKIE-ECHO resend. Only | 901 | /* This can happen on COOKIE-ECHO resend. Only |
868 | * one chunk can get bundled with a COOKIE-ECHO. | 902 | * one chunk can get bundled with a COOKIE-ECHO. |
@@ -977,7 +1011,7 @@ int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
977 | list_add_tail(&chunk->transmitted_list, | 1011 | list_add_tail(&chunk->transmitted_list, |
978 | &transport->transmitted); | 1012 | &transport->transmitted); |
979 | 1013 | ||
980 | sctp_transport_reset_timers(transport); | 1014 | sctp_transport_reset_timers(transport, start_timer-1); |
981 | 1015 | ||
982 | q->empty = 0; | 1016 | q->empty = 0; |
983 | 1017 | ||
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index b8bd9e014498..d6af466091d2 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
@@ -473,11 +473,11 @@ static struct dst_entry *sctp_v4_get_dst(struct sctp_association *asoc, | |||
473 | /* Walk through the bind address list and look for a bind | 473 | /* Walk through the bind address list and look for a bind |
474 | * address that matches the source address of the returned dst. | 474 | * address that matches the source address of the returned dst. |
475 | */ | 475 | */ |
476 | sctp_v4_dst_saddr(&dst_saddr, dst, htons(bp->port)); | ||
476 | rcu_read_lock(); | 477 | rcu_read_lock(); |
477 | list_for_each_entry_rcu(laddr, &bp->address_list, list) { | 478 | list_for_each_entry_rcu(laddr, &bp->address_list, list) { |
478 | if (!laddr->valid || (laddr->state != SCTP_ADDR_SRC)) | 479 | if (!laddr->valid || (laddr->state != SCTP_ADDR_SRC)) |
479 | continue; | 480 | continue; |
480 | sctp_v4_dst_saddr(&dst_saddr, dst, htons(bp->port)); | ||
481 | if (sctp_v4_cmp_addr(&dst_saddr, &laddr->a)) | 481 | if (sctp_v4_cmp_addr(&dst_saddr, &laddr->a)) |
482 | goto out_unlock; | 482 | goto out_unlock; |
483 | } | 483 | } |
@@ -522,7 +522,8 @@ out: | |||
522 | /* For v4, the source address is cached in the route entry(dst). So no need | 522 | /* For v4, the source address is cached in the route entry(dst). So no need |
523 | * to cache it separately and hence this is an empty routine. | 523 | * to cache it separately and hence this is an empty routine. |
524 | */ | 524 | */ |
525 | static void sctp_v4_get_saddr(struct sctp_association *asoc, | 525 | static void sctp_v4_get_saddr(struct sctp_sock *sk, |
526 | struct sctp_association *asoc, | ||
526 | struct dst_entry *dst, | 527 | struct dst_entry *dst, |
527 | union sctp_addr *daddr, | 528 | union sctp_addr *daddr, |
528 | union sctp_addr *saddr) | 529 | union sctp_addr *saddr) |
@@ -619,6 +620,11 @@ static void sctp_v4_seq_dump_addr(struct seq_file *seq, union sctp_addr *addr) | |||
619 | seq_printf(seq, "%d.%d.%d.%d ", NIPQUAD(addr->v4.sin_addr)); | 620 | seq_printf(seq, "%d.%d.%d.%d ", NIPQUAD(addr->v4.sin_addr)); |
620 | } | 621 | } |
621 | 622 | ||
623 | static void sctp_v4_ecn_capable(struct sock *sk) | ||
624 | { | ||
625 | INET_ECN_xmit(sk); | ||
626 | } | ||
627 | |||
622 | /* Event handler for inet address addition/deletion events. | 628 | /* Event handler for inet address addition/deletion events. |
623 | * The sctp_local_addr_list needs to be protocted by a spin lock since | 629 | * The sctp_local_addr_list needs to be protocted by a spin lock since |
624 | * multiple notifiers (say IPv4 and IPv6) may be running at the same | 630 | * multiple notifiers (say IPv4 and IPv6) may be running at the same |
@@ -937,6 +943,7 @@ static struct sctp_af sctp_af_inet = { | |||
937 | .skb_iif = sctp_v4_skb_iif, | 943 | .skb_iif = sctp_v4_skb_iif, |
938 | .is_ce = sctp_v4_is_ce, | 944 | .is_ce = sctp_v4_is_ce, |
939 | .seq_dump_addr = sctp_v4_seq_dump_addr, | 945 | .seq_dump_addr = sctp_v4_seq_dump_addr, |
946 | .ecn_capable = sctp_v4_ecn_capable, | ||
940 | .net_header_len = sizeof(struct iphdr), | 947 | .net_header_len = sizeof(struct iphdr), |
941 | .sockaddr_len = sizeof(struct sockaddr_in), | 948 | .sockaddr_len = sizeof(struct sockaddr_in), |
942 | #ifdef CONFIG_COMPAT | 949 | #ifdef CONFIG_COMPAT |
diff --git a/net/sctp/transport.c b/net/sctp/transport.c index f4938f6c5abe..3f34f61221ec 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c | |||
@@ -79,6 +79,7 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer, | |||
79 | peer->rttvar = 0; | 79 | peer->rttvar = 0; |
80 | peer->srtt = 0; | 80 | peer->srtt = 0; |
81 | peer->rto_pending = 0; | 81 | peer->rto_pending = 0; |
82 | peer->fast_recovery = 0; | ||
82 | 83 | ||
83 | peer->last_time_heard = jiffies; | 84 | peer->last_time_heard = jiffies; |
84 | peer->last_time_used = jiffies; | 85 | peer->last_time_used = jiffies; |
@@ -190,7 +191,7 @@ static void sctp_transport_destroy(struct sctp_transport *transport) | |||
190 | /* Start T3_rtx timer if it is not already running and update the heartbeat | 191 | /* Start T3_rtx timer if it is not already running and update the heartbeat |
191 | * timer. This routine is called every time a DATA chunk is sent. | 192 | * timer. This routine is called every time a DATA chunk is sent. |
192 | */ | 193 | */ |
193 | void sctp_transport_reset_timers(struct sctp_transport *transport) | 194 | void sctp_transport_reset_timers(struct sctp_transport *transport, int force) |
194 | { | 195 | { |
195 | /* RFC 2960 6.3.2 Retransmission Timer Rules | 196 | /* RFC 2960 6.3.2 Retransmission Timer Rules |
196 | * | 197 | * |
@@ -200,7 +201,7 @@ void sctp_transport_reset_timers(struct sctp_transport *transport) | |||
200 | * address. | 201 | * address. |
201 | */ | 202 | */ |
202 | 203 | ||
203 | if (!timer_pending(&transport->T3_rtx_timer)) | 204 | if (force || !timer_pending(&transport->T3_rtx_timer)) |
204 | if (!mod_timer(&transport->T3_rtx_timer, | 205 | if (!mod_timer(&transport->T3_rtx_timer, |
205 | jiffies + transport->rto)) | 206 | jiffies + transport->rto)) |
206 | sctp_transport_hold(transport); | 207 | sctp_transport_hold(transport); |
@@ -291,7 +292,7 @@ void sctp_transport_route(struct sctp_transport *transport, | |||
291 | if (saddr) | 292 | if (saddr) |
292 | memcpy(&transport->saddr, saddr, sizeof(union sctp_addr)); | 293 | memcpy(&transport->saddr, saddr, sizeof(union sctp_addr)); |
293 | else | 294 | else |
294 | af->get_saddr(asoc, dst, daddr, &transport->saddr); | 295 | af->get_saddr(opt, asoc, dst, daddr, &transport->saddr); |
295 | 296 | ||
296 | transport->dst = dst; | 297 | transport->dst = dst; |
297 | if ((transport->param_flags & SPP_PMTUD_DISABLE) && transport->pathmtu) { | 298 | if ((transport->param_flags & SPP_PMTUD_DISABLE) && transport->pathmtu) { |
@@ -403,11 +404,16 @@ void sctp_transport_raise_cwnd(struct sctp_transport *transport, | |||
403 | cwnd = transport->cwnd; | 404 | cwnd = transport->cwnd; |
404 | flight_size = transport->flight_size; | 405 | flight_size = transport->flight_size; |
405 | 406 | ||
407 | /* See if we need to exit Fast Recovery first */ | ||
408 | if (transport->fast_recovery && | ||
409 | TSN_lte(transport->fast_recovery_exit, sack_ctsn)) | ||
410 | transport->fast_recovery = 0; | ||
411 | |||
406 | /* The appropriate cwnd increase algorithm is performed if, and only | 412 | /* The appropriate cwnd increase algorithm is performed if, and only |
407 | * if the cumulative TSN has advanced and the congestion window is | 413 | * if the cumulative TSN whould advanced and the congestion window is |
408 | * being fully utilized. | 414 | * being fully utilized. |
409 | */ | 415 | */ |
410 | if ((transport->asoc->ctsn_ack_point >= sack_ctsn) || | 416 | if (TSN_lte(sack_ctsn, transport->asoc->ctsn_ack_point) || |
411 | (flight_size < cwnd)) | 417 | (flight_size < cwnd)) |
412 | return; | 418 | return; |
413 | 419 | ||
@@ -416,17 +422,23 @@ void sctp_transport_raise_cwnd(struct sctp_transport *transport, | |||
416 | pmtu = transport->asoc->pathmtu; | 422 | pmtu = transport->asoc->pathmtu; |
417 | 423 | ||
418 | if (cwnd <= ssthresh) { | 424 | if (cwnd <= ssthresh) { |
419 | /* RFC 2960 7.2.1, sctpimpguide-05 2.14.2 When cwnd is less | 425 | /* RFC 4960 7.2.1 |
420 | * than or equal to ssthresh an SCTP endpoint MUST use the | 426 | * o When cwnd is less than or equal to ssthresh, an SCTP |
421 | * slow start algorithm to increase cwnd only if the current | 427 | * endpoint MUST use the slow-start algorithm to increase |
422 | * congestion window is being fully utilized and an incoming | 428 | * cwnd only if the current congestion window is being fully |
423 | * SACK advances the Cumulative TSN Ack Point. Only when these | 429 | * utilized, an incoming SACK advances the Cumulative TSN |
424 | * two conditions are met can the cwnd be increased otherwise | 430 | * Ack Point, and the data sender is not in Fast Recovery. |
425 | * the cwnd MUST not be increased. If these conditions are met | 431 | * Only when these three conditions are met can the cwnd be |
426 | * then cwnd MUST be increased by at most the lesser of | 432 | * increased; otherwise, the cwnd MUST not be increased. |
427 | * 1) the total size of the previously outstanding DATA | 433 | * If these conditions are met, then cwnd MUST be increased |
428 | * chunk(s) acknowledged, and 2) the destination's path MTU. | 434 | * by, at most, the lesser of 1) the total size of the |
435 | * previously outstanding DATA chunk(s) acknowledged, and | ||
436 | * 2) the destination's path MTU. This upper bound protects | ||
437 | * against the ACK-Splitting attack outlined in [SAVAGE99]. | ||
429 | */ | 438 | */ |
439 | if (transport->fast_recovery) | ||
440 | return; | ||
441 | |||
430 | if (bytes_acked > pmtu) | 442 | if (bytes_acked > pmtu) |
431 | cwnd += pmtu; | 443 | cwnd += pmtu; |
432 | else | 444 | else |
@@ -502,6 +514,13 @@ void sctp_transport_lower_cwnd(struct sctp_transport *transport, | |||
502 | * cwnd = ssthresh | 514 | * cwnd = ssthresh |
503 | * partial_bytes_acked = 0 | 515 | * partial_bytes_acked = 0 |
504 | */ | 516 | */ |
517 | if (transport->fast_recovery) | ||
518 | return; | ||
519 | |||
520 | /* Mark Fast recovery */ | ||
521 | transport->fast_recovery = 1; | ||
522 | transport->fast_recovery_exit = transport->asoc->next_tsn - 1; | ||
523 | |||
505 | transport->ssthresh = max(transport->cwnd/2, | 524 | transport->ssthresh = max(transport->cwnd/2, |
506 | 4*transport->asoc->pathmtu); | 525 | 4*transport->asoc->pathmtu); |
507 | transport->cwnd = transport->ssthresh; | 526 | transport->cwnd = transport->ssthresh; |
@@ -586,6 +605,7 @@ void sctp_transport_reset(struct sctp_transport *t) | |||
586 | t->flight_size = 0; | 605 | t->flight_size = 0; |
587 | t->error_count = 0; | 606 | t->error_count = 0; |
588 | t->rto_pending = 0; | 607 | t->rto_pending = 0; |
608 | t->fast_recovery = 0; | ||
589 | 609 | ||
590 | /* Initialize the state information for SFR-CACC */ | 610 | /* Initialize the state information for SFR-CACC */ |
591 | t->cacc.changeover_active = 0; | 611 | t->cacc.changeover_active = 0; |
diff --git a/net/sunrpc/auth_generic.c b/net/sunrpc/auth_generic.c index d927d9f57412..744b79fdcb19 100644 --- a/net/sunrpc/auth_generic.c +++ b/net/sunrpc/auth_generic.c | |||
@@ -17,8 +17,8 @@ | |||
17 | # define RPCDBG_FACILITY RPCDBG_AUTH | 17 | # define RPCDBG_FACILITY RPCDBG_AUTH |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #define RPC_ANONYMOUS_USERID ((uid_t)-2) | 20 | #define RPC_MACHINE_CRED_USERID ((uid_t)0) |
21 | #define RPC_ANONYMOUS_GROUPID ((gid_t)-2) | 21 | #define RPC_MACHINE_CRED_GROUPID ((gid_t)0) |
22 | 22 | ||
23 | struct generic_cred { | 23 | struct generic_cred { |
24 | struct rpc_cred gc_base; | 24 | struct rpc_cred gc_base; |
@@ -44,8 +44,8 @@ EXPORT_SYMBOL_GPL(rpc_lookup_cred); | |||
44 | struct rpc_cred *rpc_lookup_machine_cred(void) | 44 | struct rpc_cred *rpc_lookup_machine_cred(void) |
45 | { | 45 | { |
46 | struct auth_cred acred = { | 46 | struct auth_cred acred = { |
47 | .uid = RPC_ANONYMOUS_USERID, | 47 | .uid = RPC_MACHINE_CRED_USERID, |
48 | .gid = RPC_ANONYMOUS_GROUPID, | 48 | .gid = RPC_MACHINE_CRED_GROUPID, |
49 | .machine_cred = 1, | 49 | .machine_cred = 1, |
50 | }; | 50 | }; |
51 | 51 | ||
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index d8e8d79a8451..e46c825f4954 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c | |||
@@ -6,30 +6,9 @@ | |||
6 | 6 | ||
7 | #include <linux/sched.h> | 7 | #include <linux/sched.h> |
8 | #include <linux/errno.h> | 8 | #include <linux/errno.h> |
9 | #include <linux/fcntl.h> | ||
10 | #include <linux/net.h> | ||
11 | #include <linux/in.h> | ||
12 | #include <linux/inet.h> | ||
13 | #include <linux/udp.h> | ||
14 | #include <linux/tcp.h> | ||
15 | #include <linux/unistd.h> | ||
16 | #include <linux/slab.h> | ||
17 | #include <linux/netdevice.h> | ||
18 | #include <linux/skbuff.h> | ||
19 | #include <linux/file.h> | ||
20 | #include <linux/freezer.h> | 9 | #include <linux/freezer.h> |
21 | #include <linux/kthread.h> | 10 | #include <linux/kthread.h> |
22 | #include <net/sock.h> | 11 | #include <net/sock.h> |
23 | #include <net/checksum.h> | ||
24 | #include <net/ip.h> | ||
25 | #include <net/ipv6.h> | ||
26 | #include <net/tcp_states.h> | ||
27 | #include <linux/uaccess.h> | ||
28 | #include <asm/ioctls.h> | ||
29 | |||
30 | #include <linux/sunrpc/types.h> | ||
31 | #include <linux/sunrpc/clnt.h> | ||
32 | #include <linux/sunrpc/xdr.h> | ||
33 | #include <linux/sunrpc/stats.h> | 12 | #include <linux/sunrpc/stats.h> |
34 | #include <linux/sunrpc/svc_xprt.h> | 13 | #include <linux/sunrpc/svc_xprt.h> |
35 | 14 | ||
@@ -296,8 +275,6 @@ void svc_xprt_enqueue(struct svc_xprt *xprt) | |||
296 | if (!(xprt->xpt_flags & | 275 | if (!(xprt->xpt_flags & |
297 | ((1<<XPT_CONN)|(1<<XPT_DATA)|(1<<XPT_CLOSE)|(1<<XPT_DEFERRED)))) | 276 | ((1<<XPT_CONN)|(1<<XPT_DATA)|(1<<XPT_CLOSE)|(1<<XPT_DEFERRED)))) |
298 | return; | 277 | return; |
299 | if (test_bit(XPT_DEAD, &xprt->xpt_flags)) | ||
300 | return; | ||
301 | 278 | ||
302 | cpu = get_cpu(); | 279 | cpu = get_cpu(); |
303 | pool = svc_pool_for_cpu(xprt->xpt_server, cpu); | 280 | pool = svc_pool_for_cpu(xprt->xpt_server, cpu); |
diff --git a/net/sunrpc/svcauth_unix.c b/net/sunrpc/svcauth_unix.c index 3f30ee6006ae..f24800f2c098 100644 --- a/net/sunrpc/svcauth_unix.c +++ b/net/sunrpc/svcauth_unix.c | |||
@@ -278,7 +278,7 @@ static int ip_map_show(struct seq_file *m, | |||
278 | dom = im->m_client->h.name; | 278 | dom = im->m_client->h.name; |
279 | 279 | ||
280 | if (ipv6_addr_v4mapped(&addr)) { | 280 | if (ipv6_addr_v4mapped(&addr)) { |
281 | seq_printf(m, "%s" NIPQUAD_FMT "%s\n", | 281 | seq_printf(m, "%s " NIPQUAD_FMT " %s\n", |
282 | im->m_class, | 282 | im->m_class, |
283 | ntohl(addr.s6_addr32[3]) >> 24 & 0xff, | 283 | ntohl(addr.s6_addr32[3]) >> 24 & 0xff, |
284 | ntohl(addr.s6_addr32[3]) >> 16 & 0xff, | 284 | ntohl(addr.s6_addr32[3]) >> 16 & 0xff, |
@@ -286,7 +286,7 @@ static int ip_map_show(struct seq_file *m, | |||
286 | ntohl(addr.s6_addr32[3]) >> 0 & 0xff, | 286 | ntohl(addr.s6_addr32[3]) >> 0 & 0xff, |
287 | dom); | 287 | dom); |
288 | } else { | 288 | } else { |
289 | seq_printf(m, "%s" NIP6_FMT "%s\n", | 289 | seq_printf(m, "%s " NIP6_FMT " %s\n", |
290 | im->m_class, NIP6(addr), dom); | 290 | im->m_class, NIP6(addr), dom); |
291 | } | 291 | } |
292 | return 0; | 292 | return 0; |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c index c22d6b6f2db4..06ab4841537b 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c +++ b/net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | |||
@@ -260,11 +260,16 @@ static int rdma_read_max_sge(struct svcxprt_rdma *xprt, int sge_count) | |||
260 | * On our side, we need to read into a pagelist. The first page immediately | 260 | * On our side, we need to read into a pagelist. The first page immediately |
261 | * follows the RPC header. | 261 | * follows the RPC header. |
262 | * | 262 | * |
263 | * This function returns 1 to indicate success. The data is not yet in | 263 | * This function returns: |
264 | * 0 - No error and no read-list found. | ||
265 | * | ||
266 | * 1 - Successful read-list processing. The data is not yet in | ||
264 | * the pagelist and therefore the RPC request must be deferred. The | 267 | * the pagelist and therefore the RPC request must be deferred. The |
265 | * I/O completion will enqueue the transport again and | 268 | * I/O completion will enqueue the transport again and |
266 | * svc_rdma_recvfrom will complete the request. | 269 | * svc_rdma_recvfrom will complete the request. |
267 | * | 270 | * |
271 | * <0 - Error processing/posting read-list. | ||
272 | * | ||
268 | * NOTE: The ctxt must not be touched after the last WR has been posted | 273 | * NOTE: The ctxt must not be touched after the last WR has been posted |
269 | * because the I/O completion processing may occur on another | 274 | * because the I/O completion processing may occur on another |
270 | * processor and free / modify the context. Ne touche pas! | 275 | * processor and free / modify the context. Ne touche pas! |
@@ -284,7 +289,6 @@ static int rdma_read_xdr(struct svcxprt_rdma *xprt, | |||
284 | u64 sgl_offset; | 289 | u64 sgl_offset; |
285 | struct rpcrdma_read_chunk *ch; | 290 | struct rpcrdma_read_chunk *ch; |
286 | struct svc_rdma_op_ctxt *ctxt = NULL; | 291 | struct svc_rdma_op_ctxt *ctxt = NULL; |
287 | struct svc_rdma_op_ctxt *head; | ||
288 | struct svc_rdma_op_ctxt *tmp_sge_ctxt; | 292 | struct svc_rdma_op_ctxt *tmp_sge_ctxt; |
289 | struct svc_rdma_op_ctxt *tmp_ch_ctxt; | 293 | struct svc_rdma_op_ctxt *tmp_ch_ctxt; |
290 | struct chunk_sge *ch_sge_ary; | 294 | struct chunk_sge *ch_sge_ary; |
@@ -302,25 +306,19 @@ static int rdma_read_xdr(struct svcxprt_rdma *xprt, | |||
302 | ch_sge_ary = (struct chunk_sge *)tmp_ch_ctxt->sge; | 306 | ch_sge_ary = (struct chunk_sge *)tmp_ch_ctxt->sge; |
303 | 307 | ||
304 | svc_rdma_rcl_chunk_counts(ch, &ch_count, &byte_count); | 308 | svc_rdma_rcl_chunk_counts(ch, &ch_count, &byte_count); |
309 | if (ch_count > RPCSVC_MAXPAGES) | ||
310 | return -EINVAL; | ||
305 | sge_count = rdma_rcl_to_sge(xprt, rqstp, hdr_ctxt, rmsgp, | 311 | sge_count = rdma_rcl_to_sge(xprt, rqstp, hdr_ctxt, rmsgp, |
306 | sge, ch_sge_ary, | 312 | sge, ch_sge_ary, |
307 | ch_count, byte_count); | 313 | ch_count, byte_count); |
308 | head = svc_rdma_get_context(xprt); | ||
309 | sgl_offset = 0; | 314 | sgl_offset = 0; |
310 | ch_no = 0; | 315 | ch_no = 0; |
311 | 316 | ||
312 | for (ch = (struct rpcrdma_read_chunk *)&rmsgp->rm_body.rm_chunks[0]; | 317 | for (ch = (struct rpcrdma_read_chunk *)&rmsgp->rm_body.rm_chunks[0]; |
313 | ch->rc_discrim != 0; ch++, ch_no++) { | 318 | ch->rc_discrim != 0; ch++, ch_no++) { |
314 | next_sge: | 319 | next_sge: |
315 | if (!ctxt) | 320 | ctxt = svc_rdma_get_context(xprt); |
316 | ctxt = head; | ||
317 | else { | ||
318 | ctxt->next = svc_rdma_get_context(xprt); | ||
319 | ctxt = ctxt->next; | ||
320 | } | ||
321 | ctxt->next = NULL; | ||
322 | ctxt->direction = DMA_FROM_DEVICE; | 321 | ctxt->direction = DMA_FROM_DEVICE; |
323 | clear_bit(RDMACTXT_F_READ_DONE, &ctxt->flags); | ||
324 | clear_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); | 322 | clear_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); |
325 | 323 | ||
326 | /* Prepare READ WR */ | 324 | /* Prepare READ WR */ |
@@ -347,20 +345,15 @@ next_sge: | |||
347 | * the client and the RPC needs to be enqueued. | 345 | * the client and the RPC needs to be enqueued. |
348 | */ | 346 | */ |
349 | set_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); | 347 | set_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags); |
350 | ctxt->next = hdr_ctxt; | 348 | ctxt->read_hdr = hdr_ctxt; |
351 | hdr_ctxt->next = head; | ||
352 | } | 349 | } |
353 | /* Post the read */ | 350 | /* Post the read */ |
354 | err = svc_rdma_send(xprt, &read_wr); | 351 | err = svc_rdma_send(xprt, &read_wr); |
355 | if (err) { | 352 | if (err) { |
356 | printk(KERN_ERR "svcrdma: Error posting send = %d\n", | 353 | printk(KERN_ERR "svcrdma: Error %d posting RDMA_READ\n", |
357 | err); | 354 | err); |
358 | /* | 355 | set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags); |
359 | * Break the circular list so free knows when | 356 | svc_rdma_put_context(ctxt, 0); |
360 | * to stop if the error happened to occur on | ||
361 | * the last read | ||
362 | */ | ||
363 | ctxt->next = NULL; | ||
364 | goto out; | 357 | goto out; |
365 | } | 358 | } |
366 | atomic_inc(&rdma_stat_read); | 359 | atomic_inc(&rdma_stat_read); |
@@ -371,7 +364,7 @@ next_sge: | |||
371 | goto next_sge; | 364 | goto next_sge; |
372 | } | 365 | } |
373 | sgl_offset = 0; | 366 | sgl_offset = 0; |
374 | err = 0; | 367 | err = 1; |
375 | } | 368 | } |
376 | 369 | ||
377 | out: | 370 | out: |
@@ -389,25 +382,12 @@ next_sge: | |||
389 | while (rqstp->rq_resused) | 382 | while (rqstp->rq_resused) |
390 | rqstp->rq_respages[--rqstp->rq_resused] = NULL; | 383 | rqstp->rq_respages[--rqstp->rq_resused] = NULL; |
391 | 384 | ||
392 | if (err) { | 385 | return err; |
393 | printk(KERN_ERR "svcrdma : RDMA_READ error = %d\n", err); | ||
394 | set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags); | ||
395 | /* Free the linked list of read contexts */ | ||
396 | while (head != NULL) { | ||
397 | ctxt = head->next; | ||
398 | svc_rdma_put_context(head, 1); | ||
399 | head = ctxt; | ||
400 | } | ||
401 | return 0; | ||
402 | } | ||
403 | |||
404 | return 1; | ||
405 | } | 386 | } |
406 | 387 | ||
407 | static int rdma_read_complete(struct svc_rqst *rqstp, | 388 | static int rdma_read_complete(struct svc_rqst *rqstp, |
408 | struct svc_rdma_op_ctxt *data) | 389 | struct svc_rdma_op_ctxt *head) |
409 | { | 390 | { |
410 | struct svc_rdma_op_ctxt *head = data->next; | ||
411 | int page_no; | 391 | int page_no; |
412 | int ret; | 392 | int ret; |
413 | 393 | ||
@@ -433,21 +413,12 @@ static int rdma_read_complete(struct svc_rqst *rqstp, | |||
433 | rqstp->rq_arg.len = head->arg.len; | 413 | rqstp->rq_arg.len = head->arg.len; |
434 | rqstp->rq_arg.buflen = head->arg.buflen; | 414 | rqstp->rq_arg.buflen = head->arg.buflen; |
435 | 415 | ||
416 | /* Free the context */ | ||
417 | svc_rdma_put_context(head, 0); | ||
418 | |||
436 | /* XXX: What should this be? */ | 419 | /* XXX: What should this be? */ |
437 | rqstp->rq_prot = IPPROTO_MAX; | 420 | rqstp->rq_prot = IPPROTO_MAX; |
438 | 421 | svc_xprt_copy_addrs(rqstp, rqstp->rq_xprt); | |
439 | /* | ||
440 | * Free the contexts we used to build the RDMA_READ. We have | ||
441 | * to be careful here because the context list uses the same | ||
442 | * next pointer used to chain the contexts associated with the | ||
443 | * RDMA_READ | ||
444 | */ | ||
445 | data->next = NULL; /* terminate circular list */ | ||
446 | do { | ||
447 | data = head->next; | ||
448 | svc_rdma_put_context(head, 0); | ||
449 | head = data; | ||
450 | } while (head != NULL); | ||
451 | 422 | ||
452 | ret = rqstp->rq_arg.head[0].iov_len | 423 | ret = rqstp->rq_arg.head[0].iov_len |
453 | + rqstp->rq_arg.page_len | 424 | + rqstp->rq_arg.page_len |
@@ -457,8 +428,6 @@ static int rdma_read_complete(struct svc_rqst *rqstp, | |||
457 | ret, rqstp->rq_arg.len, rqstp->rq_arg.head[0].iov_base, | 428 | ret, rqstp->rq_arg.len, rqstp->rq_arg.head[0].iov_base, |
458 | rqstp->rq_arg.head[0].iov_len); | 429 | rqstp->rq_arg.head[0].iov_len); |
459 | 430 | ||
460 | /* Indicate that we've consumed an RQ credit */ | ||
461 | rqstp->rq_xprt_ctxt = rqstp->rq_xprt; | ||
462 | svc_xprt_received(rqstp->rq_xprt); | 431 | svc_xprt_received(rqstp->rq_xprt); |
463 | return ret; | 432 | return ret; |
464 | } | 433 | } |
@@ -480,13 +449,6 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) | |||
480 | 449 | ||
481 | dprintk("svcrdma: rqstp=%p\n", rqstp); | 450 | dprintk("svcrdma: rqstp=%p\n", rqstp); |
482 | 451 | ||
483 | /* | ||
484 | * The rq_xprt_ctxt indicates if we've consumed an RQ credit | ||
485 | * or not. It is used in the rdma xpo_release_rqst function to | ||
486 | * determine whether or not to return an RQ WQE to the RQ. | ||
487 | */ | ||
488 | rqstp->rq_xprt_ctxt = NULL; | ||
489 | |||
490 | spin_lock_bh(&rdma_xprt->sc_read_complete_lock); | 452 | spin_lock_bh(&rdma_xprt->sc_read_complete_lock); |
491 | if (!list_empty(&rdma_xprt->sc_read_complete_q)) { | 453 | if (!list_empty(&rdma_xprt->sc_read_complete_q)) { |
492 | ctxt = list_entry(rdma_xprt->sc_read_complete_q.next, | 454 | ctxt = list_entry(rdma_xprt->sc_read_complete_q.next, |
@@ -537,21 +499,22 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) | |||
537 | /* If the request is invalid, reply with an error */ | 499 | /* If the request is invalid, reply with an error */ |
538 | if (len < 0) { | 500 | if (len < 0) { |
539 | if (len == -ENOSYS) | 501 | if (len == -ENOSYS) |
540 | (void)svc_rdma_send_error(rdma_xprt, rmsgp, ERR_VERS); | 502 | svc_rdma_send_error(rdma_xprt, rmsgp, ERR_VERS); |
541 | goto close_out; | 503 | goto close_out; |
542 | } | 504 | } |
543 | 505 | ||
544 | /* Read read-list data. If we would need to wait, defer | 506 | /* Read read-list data. */ |
545 | * it. Not that in this case, we don't return the RQ credit | 507 | ret = rdma_read_xdr(rdma_xprt, rmsgp, rqstp, ctxt); |
546 | * until after the read completes. | 508 | if (ret > 0) { |
547 | */ | 509 | /* read-list posted, defer until data received from client. */ |
548 | if (rdma_read_xdr(rdma_xprt, rmsgp, rqstp, ctxt)) { | ||
549 | svc_xprt_received(xprt); | 510 | svc_xprt_received(xprt); |
550 | return 0; | 511 | return 0; |
551 | } | 512 | } |
552 | 513 | if (ret < 0) { | |
553 | /* Indicate we've consumed an RQ credit */ | 514 | /* Post of read-list failed, free context. */ |
554 | rqstp->rq_xprt_ctxt = rqstp->rq_xprt; | 515 | svc_rdma_put_context(ctxt, 1); |
516 | return 0; | ||
517 | } | ||
555 | 518 | ||
556 | ret = rqstp->rq_arg.head[0].iov_len | 519 | ret = rqstp->rq_arg.head[0].iov_len |
557 | + rqstp->rq_arg.page_len | 520 | + rqstp->rq_arg.page_len |
@@ -569,11 +532,8 @@ int svc_rdma_recvfrom(struct svc_rqst *rqstp) | |||
569 | return ret; | 532 | return ret; |
570 | 533 | ||
571 | close_out: | 534 | close_out: |
572 | if (ctxt) { | 535 | if (ctxt) |
573 | svc_rdma_put_context(ctxt, 1); | 536 | svc_rdma_put_context(ctxt, 1); |
574 | /* Indicate we've consumed an RQ credit */ | ||
575 | rqstp->rq_xprt_ctxt = rqstp->rq_xprt; | ||
576 | } | ||
577 | dprintk("svcrdma: transport %p is closing\n", xprt); | 537 | dprintk("svcrdma: transport %p is closing\n", xprt); |
578 | /* | 538 | /* |
579 | * Set the close bit and enqueue it. svc_recv will see the | 539 | * Set the close bit and enqueue it. svc_recv will see the |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c index 981f190c1b39..fb82b1b683f8 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c | |||
@@ -389,6 +389,17 @@ static int send_reply(struct svcxprt_rdma *rdma, | |||
389 | int page_no; | 389 | int page_no; |
390 | int ret; | 390 | int ret; |
391 | 391 | ||
392 | /* Post a recv buffer to handle another request. */ | ||
393 | ret = svc_rdma_post_recv(rdma); | ||
394 | if (ret) { | ||
395 | printk(KERN_INFO | ||
396 | "svcrdma: could not post a receive buffer, err=%d." | ||
397 | "Closing transport %p.\n", ret, rdma); | ||
398 | set_bit(XPT_CLOSE, &rdma->sc_xprt.xpt_flags); | ||
399 | svc_rdma_put_context(ctxt, 0); | ||
400 | return -ENOTCONN; | ||
401 | } | ||
402 | |||
392 | /* Prepare the context */ | 403 | /* Prepare the context */ |
393 | ctxt->pages[0] = page; | 404 | ctxt->pages[0] = page; |
394 | ctxt->count = 1; | 405 | ctxt->count = 1; |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c index af408fc12634..e132509d1db0 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c | |||
@@ -103,8 +103,8 @@ static int rdma_bump_context_cache(struct svcxprt_rdma *xprt) | |||
103 | spin_lock_bh(&xprt->sc_ctxt_lock); | 103 | spin_lock_bh(&xprt->sc_ctxt_lock); |
104 | if (ctxt) { | 104 | if (ctxt) { |
105 | at_least_one = 1; | 105 | at_least_one = 1; |
106 | ctxt->next = xprt->sc_ctxt_head; | 106 | INIT_LIST_HEAD(&ctxt->free_list); |
107 | xprt->sc_ctxt_head = ctxt; | 107 | list_add(&ctxt->free_list, &xprt->sc_ctxt_free); |
108 | } else { | 108 | } else { |
109 | /* kmalloc failed...give up for now */ | 109 | /* kmalloc failed...give up for now */ |
110 | xprt->sc_ctxt_cnt--; | 110 | xprt->sc_ctxt_cnt--; |
@@ -123,7 +123,7 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt) | |||
123 | 123 | ||
124 | while (1) { | 124 | while (1) { |
125 | spin_lock_bh(&xprt->sc_ctxt_lock); | 125 | spin_lock_bh(&xprt->sc_ctxt_lock); |
126 | if (unlikely(xprt->sc_ctxt_head == NULL)) { | 126 | if (unlikely(list_empty(&xprt->sc_ctxt_free))) { |
127 | /* Try to bump my cache. */ | 127 | /* Try to bump my cache. */ |
128 | spin_unlock_bh(&xprt->sc_ctxt_lock); | 128 | spin_unlock_bh(&xprt->sc_ctxt_lock); |
129 | 129 | ||
@@ -136,12 +136,15 @@ struct svc_rdma_op_ctxt *svc_rdma_get_context(struct svcxprt_rdma *xprt) | |||
136 | schedule_timeout_uninterruptible(msecs_to_jiffies(500)); | 136 | schedule_timeout_uninterruptible(msecs_to_jiffies(500)); |
137 | continue; | 137 | continue; |
138 | } | 138 | } |
139 | ctxt = xprt->sc_ctxt_head; | 139 | ctxt = list_entry(xprt->sc_ctxt_free.next, |
140 | xprt->sc_ctxt_head = ctxt->next; | 140 | struct svc_rdma_op_ctxt, |
141 | free_list); | ||
142 | list_del_init(&ctxt->free_list); | ||
141 | spin_unlock_bh(&xprt->sc_ctxt_lock); | 143 | spin_unlock_bh(&xprt->sc_ctxt_lock); |
142 | ctxt->xprt = xprt; | 144 | ctxt->xprt = xprt; |
143 | INIT_LIST_HEAD(&ctxt->dto_q); | 145 | INIT_LIST_HEAD(&ctxt->dto_q); |
144 | ctxt->count = 0; | 146 | ctxt->count = 0; |
147 | atomic_inc(&xprt->sc_ctxt_used); | ||
145 | break; | 148 | break; |
146 | } | 149 | } |
147 | return ctxt; | 150 | return ctxt; |
@@ -159,14 +162,15 @@ void svc_rdma_put_context(struct svc_rdma_op_ctxt *ctxt, int free_pages) | |||
159 | put_page(ctxt->pages[i]); | 162 | put_page(ctxt->pages[i]); |
160 | 163 | ||
161 | for (i = 0; i < ctxt->count; i++) | 164 | for (i = 0; i < ctxt->count; i++) |
162 | dma_unmap_single(xprt->sc_cm_id->device->dma_device, | 165 | ib_dma_unmap_single(xprt->sc_cm_id->device, |
163 | ctxt->sge[i].addr, | 166 | ctxt->sge[i].addr, |
164 | ctxt->sge[i].length, | 167 | ctxt->sge[i].length, |
165 | ctxt->direction); | 168 | ctxt->direction); |
169 | |||
166 | spin_lock_bh(&xprt->sc_ctxt_lock); | 170 | spin_lock_bh(&xprt->sc_ctxt_lock); |
167 | ctxt->next = xprt->sc_ctxt_head; | 171 | list_add(&ctxt->free_list, &xprt->sc_ctxt_free); |
168 | xprt->sc_ctxt_head = ctxt; | ||
169 | spin_unlock_bh(&xprt->sc_ctxt_lock); | 172 | spin_unlock_bh(&xprt->sc_ctxt_lock); |
173 | atomic_dec(&xprt->sc_ctxt_used); | ||
170 | } | 174 | } |
171 | 175 | ||
172 | /* ib_cq event handler */ | 176 | /* ib_cq event handler */ |
@@ -228,23 +232,8 @@ static void dto_tasklet_func(unsigned long data) | |||
228 | list_del_init(&xprt->sc_dto_q); | 232 | list_del_init(&xprt->sc_dto_q); |
229 | spin_unlock_irqrestore(&dto_lock, flags); | 233 | spin_unlock_irqrestore(&dto_lock, flags); |
230 | 234 | ||
231 | if (test_and_clear_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags)) { | 235 | rq_cq_reap(xprt); |
232 | ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP); | 236 | sq_cq_reap(xprt); |
233 | rq_cq_reap(xprt); | ||
234 | set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags); | ||
235 | /* | ||
236 | * If data arrived before established event, | ||
237 | * don't enqueue. This defers RPC I/O until the | ||
238 | * RDMA connection is complete. | ||
239 | */ | ||
240 | if (!test_bit(RDMAXPRT_CONN_PENDING, &xprt->sc_flags)) | ||
241 | svc_xprt_enqueue(&xprt->sc_xprt); | ||
242 | } | ||
243 | |||
244 | if (test_and_clear_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags)) { | ||
245 | ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP); | ||
246 | sq_cq_reap(xprt); | ||
247 | } | ||
248 | 237 | ||
249 | svc_xprt_put(&xprt->sc_xprt); | 238 | svc_xprt_put(&xprt->sc_xprt); |
250 | spin_lock_irqsave(&dto_lock, flags); | 239 | spin_lock_irqsave(&dto_lock, flags); |
@@ -263,11 +252,15 @@ static void rq_comp_handler(struct ib_cq *cq, void *cq_context) | |||
263 | struct svcxprt_rdma *xprt = cq_context; | 252 | struct svcxprt_rdma *xprt = cq_context; |
264 | unsigned long flags; | 253 | unsigned long flags; |
265 | 254 | ||
255 | /* Guard against unconditional flush call for destroyed QP */ | ||
256 | if (atomic_read(&xprt->sc_xprt.xpt_ref.refcount)==0) | ||
257 | return; | ||
258 | |||
266 | /* | 259 | /* |
267 | * Set the bit regardless of whether or not it's on the list | 260 | * Set the bit regardless of whether or not it's on the list |
268 | * because it may be on the list already due to an SQ | 261 | * because it may be on the list already due to an SQ |
269 | * completion. | 262 | * completion. |
270 | */ | 263 | */ |
271 | set_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags); | 264 | set_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags); |
272 | 265 | ||
273 | /* | 266 | /* |
@@ -290,6 +283,8 @@ static void rq_comp_handler(struct ib_cq *cq, void *cq_context) | |||
290 | * | 283 | * |
291 | * Take all completing WC off the CQE and enqueue the associated DTO | 284 | * Take all completing WC off the CQE and enqueue the associated DTO |
292 | * context on the dto_q for the transport. | 285 | * context on the dto_q for the transport. |
286 | * | ||
287 | * Note that caller must hold a transport reference. | ||
293 | */ | 288 | */ |
294 | static void rq_cq_reap(struct svcxprt_rdma *xprt) | 289 | static void rq_cq_reap(struct svcxprt_rdma *xprt) |
295 | { | 290 | { |
@@ -297,29 +292,47 @@ static void rq_cq_reap(struct svcxprt_rdma *xprt) | |||
297 | struct ib_wc wc; | 292 | struct ib_wc wc; |
298 | struct svc_rdma_op_ctxt *ctxt = NULL; | 293 | struct svc_rdma_op_ctxt *ctxt = NULL; |
299 | 294 | ||
295 | if (!test_and_clear_bit(RDMAXPRT_RQ_PENDING, &xprt->sc_flags)) | ||
296 | return; | ||
297 | |||
298 | ib_req_notify_cq(xprt->sc_rq_cq, IB_CQ_NEXT_COMP); | ||
300 | atomic_inc(&rdma_stat_rq_poll); | 299 | atomic_inc(&rdma_stat_rq_poll); |
301 | 300 | ||
302 | spin_lock_bh(&xprt->sc_rq_dto_lock); | ||
303 | while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) { | 301 | while ((ret = ib_poll_cq(xprt->sc_rq_cq, 1, &wc)) > 0) { |
304 | ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id; | 302 | ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id; |
305 | ctxt->wc_status = wc.status; | 303 | ctxt->wc_status = wc.status; |
306 | ctxt->byte_len = wc.byte_len; | 304 | ctxt->byte_len = wc.byte_len; |
307 | if (wc.status != IB_WC_SUCCESS) { | 305 | if (wc.status != IB_WC_SUCCESS) { |
308 | /* Close the transport */ | 306 | /* Close the transport */ |
307 | dprintk("svcrdma: transport closing putting ctxt %p\n", ctxt); | ||
309 | set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags); | 308 | set_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags); |
310 | svc_rdma_put_context(ctxt, 1); | 309 | svc_rdma_put_context(ctxt, 1); |
310 | svc_xprt_put(&xprt->sc_xprt); | ||
311 | continue; | 311 | continue; |
312 | } | 312 | } |
313 | spin_lock_bh(&xprt->sc_rq_dto_lock); | ||
313 | list_add_tail(&ctxt->dto_q, &xprt->sc_rq_dto_q); | 314 | list_add_tail(&ctxt->dto_q, &xprt->sc_rq_dto_q); |
315 | spin_unlock_bh(&xprt->sc_rq_dto_lock); | ||
316 | svc_xprt_put(&xprt->sc_xprt); | ||
314 | } | 317 | } |
315 | spin_unlock_bh(&xprt->sc_rq_dto_lock); | ||
316 | 318 | ||
317 | if (ctxt) | 319 | if (ctxt) |
318 | atomic_inc(&rdma_stat_rq_prod); | 320 | atomic_inc(&rdma_stat_rq_prod); |
321 | |||
322 | set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags); | ||
323 | /* | ||
324 | * If data arrived before established event, | ||
325 | * don't enqueue. This defers RPC I/O until the | ||
326 | * RDMA connection is complete. | ||
327 | */ | ||
328 | if (!test_bit(RDMAXPRT_CONN_PENDING, &xprt->sc_flags)) | ||
329 | svc_xprt_enqueue(&xprt->sc_xprt); | ||
319 | } | 330 | } |
320 | 331 | ||
321 | /* | 332 | /* |
322 | * Send Queue Completion Handler - potentially called on interrupt context. | 333 | * Send Queue Completion Handler - potentially called on interrupt context. |
334 | * | ||
335 | * Note that caller must hold a transport reference. | ||
323 | */ | 336 | */ |
324 | static void sq_cq_reap(struct svcxprt_rdma *xprt) | 337 | static void sq_cq_reap(struct svcxprt_rdma *xprt) |
325 | { | 338 | { |
@@ -328,6 +341,11 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt) | |||
328 | struct ib_cq *cq = xprt->sc_sq_cq; | 341 | struct ib_cq *cq = xprt->sc_sq_cq; |
329 | int ret; | 342 | int ret; |
330 | 343 | ||
344 | |||
345 | if (!test_and_clear_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags)) | ||
346 | return; | ||
347 | |||
348 | ib_req_notify_cq(xprt->sc_sq_cq, IB_CQ_NEXT_COMP); | ||
331 | atomic_inc(&rdma_stat_sq_poll); | 349 | atomic_inc(&rdma_stat_sq_poll); |
332 | while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) { | 350 | while ((ret = ib_poll_cq(cq, 1, &wc)) > 0) { |
333 | ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id; | 351 | ctxt = (struct svc_rdma_op_ctxt *)(unsigned long)wc.wr_id; |
@@ -349,14 +367,16 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt) | |||
349 | 367 | ||
350 | case IB_WR_RDMA_READ: | 368 | case IB_WR_RDMA_READ: |
351 | if (test_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags)) { | 369 | if (test_bit(RDMACTXT_F_LAST_CTXT, &ctxt->flags)) { |
370 | struct svc_rdma_op_ctxt *read_hdr = ctxt->read_hdr; | ||
371 | BUG_ON(!read_hdr); | ||
352 | set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags); | 372 | set_bit(XPT_DATA, &xprt->sc_xprt.xpt_flags); |
353 | set_bit(RDMACTXT_F_READ_DONE, &ctxt->flags); | ||
354 | spin_lock_bh(&xprt->sc_read_complete_lock); | 373 | spin_lock_bh(&xprt->sc_read_complete_lock); |
355 | list_add_tail(&ctxt->dto_q, | 374 | list_add_tail(&read_hdr->dto_q, |
356 | &xprt->sc_read_complete_q); | 375 | &xprt->sc_read_complete_q); |
357 | spin_unlock_bh(&xprt->sc_read_complete_lock); | 376 | spin_unlock_bh(&xprt->sc_read_complete_lock); |
358 | svc_xprt_enqueue(&xprt->sc_xprt); | 377 | svc_xprt_enqueue(&xprt->sc_xprt); |
359 | } | 378 | } |
379 | svc_rdma_put_context(ctxt, 0); | ||
360 | break; | 380 | break; |
361 | 381 | ||
362 | default: | 382 | default: |
@@ -365,6 +385,7 @@ static void sq_cq_reap(struct svcxprt_rdma *xprt) | |||
365 | wc.opcode, wc.status); | 385 | wc.opcode, wc.status); |
366 | break; | 386 | break; |
367 | } | 387 | } |
388 | svc_xprt_put(&xprt->sc_xprt); | ||
368 | } | 389 | } |
369 | 390 | ||
370 | if (ctxt) | 391 | if (ctxt) |
@@ -376,11 +397,15 @@ static void sq_comp_handler(struct ib_cq *cq, void *cq_context) | |||
376 | struct svcxprt_rdma *xprt = cq_context; | 397 | struct svcxprt_rdma *xprt = cq_context; |
377 | unsigned long flags; | 398 | unsigned long flags; |
378 | 399 | ||
400 | /* Guard against unconditional flush call for destroyed QP */ | ||
401 | if (atomic_read(&xprt->sc_xprt.xpt_ref.refcount)==0) | ||
402 | return; | ||
403 | |||
379 | /* | 404 | /* |
380 | * Set the bit regardless of whether or not it's on the list | 405 | * Set the bit regardless of whether or not it's on the list |
381 | * because it may be on the list already due to an RQ | 406 | * because it may be on the list already due to an RQ |
382 | * completion. | 407 | * completion. |
383 | */ | 408 | */ |
384 | set_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags); | 409 | set_bit(RDMAXPRT_SQ_PENDING, &xprt->sc_flags); |
385 | 410 | ||
386 | /* | 411 | /* |
@@ -407,28 +432,29 @@ static void create_context_cache(struct svcxprt_rdma *xprt, | |||
407 | xprt->sc_ctxt_max = ctxt_max; | 432 | xprt->sc_ctxt_max = ctxt_max; |
408 | xprt->sc_ctxt_bump = ctxt_bump; | 433 | xprt->sc_ctxt_bump = ctxt_bump; |
409 | xprt->sc_ctxt_cnt = 0; | 434 | xprt->sc_ctxt_cnt = 0; |
410 | xprt->sc_ctxt_head = NULL; | 435 | atomic_set(&xprt->sc_ctxt_used, 0); |
436 | |||
437 | INIT_LIST_HEAD(&xprt->sc_ctxt_free); | ||
411 | for (i = 0; i < ctxt_count; i++) { | 438 | for (i = 0; i < ctxt_count; i++) { |
412 | ctxt = kmalloc(sizeof(*ctxt), GFP_KERNEL); | 439 | ctxt = kmalloc(sizeof(*ctxt), GFP_KERNEL); |
413 | if (ctxt) { | 440 | if (ctxt) { |
414 | ctxt->next = xprt->sc_ctxt_head; | 441 | INIT_LIST_HEAD(&ctxt->free_list); |
415 | xprt->sc_ctxt_head = ctxt; | 442 | list_add(&ctxt->free_list, &xprt->sc_ctxt_free); |
416 | xprt->sc_ctxt_cnt++; | 443 | xprt->sc_ctxt_cnt++; |
417 | } | 444 | } |
418 | } | 445 | } |
419 | } | 446 | } |
420 | 447 | ||
421 | static void destroy_context_cache(struct svc_rdma_op_ctxt *ctxt) | 448 | static void destroy_context_cache(struct svcxprt_rdma *xprt) |
422 | { | 449 | { |
423 | struct svc_rdma_op_ctxt *next; | 450 | while (!list_empty(&xprt->sc_ctxt_free)) { |
424 | if (!ctxt) | 451 | struct svc_rdma_op_ctxt *ctxt; |
425 | return; | 452 | ctxt = list_entry(xprt->sc_ctxt_free.next, |
426 | 453 | struct svc_rdma_op_ctxt, | |
427 | do { | 454 | free_list); |
428 | next = ctxt->next; | 455 | list_del_init(&ctxt->free_list); |
429 | kfree(ctxt); | 456 | kfree(ctxt); |
430 | ctxt = next; | 457 | } |
431 | } while (next); | ||
432 | } | 458 | } |
433 | 459 | ||
434 | static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv, | 460 | static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv, |
@@ -465,7 +491,7 @@ static struct svcxprt_rdma *rdma_create_xprt(struct svc_serv *serv, | |||
465 | reqs + | 491 | reqs + |
466 | cma_xprt->sc_sq_depth + | 492 | cma_xprt->sc_sq_depth + |
467 | RPCRDMA_MAX_THREADS + 1); /* max */ | 493 | RPCRDMA_MAX_THREADS + 1); /* max */ |
468 | if (!cma_xprt->sc_ctxt_head) { | 494 | if (list_empty(&cma_xprt->sc_ctxt_free)) { |
469 | kfree(cma_xprt); | 495 | kfree(cma_xprt); |
470 | return NULL; | 496 | return NULL; |
471 | } | 497 | } |
@@ -520,7 +546,12 @@ int svc_rdma_post_recv(struct svcxprt_rdma *xprt) | |||
520 | recv_wr.num_sge = ctxt->count; | 546 | recv_wr.num_sge = ctxt->count; |
521 | recv_wr.wr_id = (u64)(unsigned long)ctxt; | 547 | recv_wr.wr_id = (u64)(unsigned long)ctxt; |
522 | 548 | ||
549 | svc_xprt_get(&xprt->sc_xprt); | ||
523 | ret = ib_post_recv(xprt->sc_qp, &recv_wr, &bad_recv_wr); | 550 | ret = ib_post_recv(xprt->sc_qp, &recv_wr, &bad_recv_wr); |
551 | if (ret) { | ||
552 | svc_xprt_put(&xprt->sc_xprt); | ||
553 | svc_rdma_put_context(ctxt, 1); | ||
554 | } | ||
524 | return ret; | 555 | return ret; |
525 | } | 556 | } |
526 | 557 | ||
@@ -539,6 +570,7 @@ static void handle_connect_req(struct rdma_cm_id *new_cma_id) | |||
539 | { | 570 | { |
540 | struct svcxprt_rdma *listen_xprt = new_cma_id->context; | 571 | struct svcxprt_rdma *listen_xprt = new_cma_id->context; |
541 | struct svcxprt_rdma *newxprt; | 572 | struct svcxprt_rdma *newxprt; |
573 | struct sockaddr *sa; | ||
542 | 574 | ||
543 | /* Create a new transport */ | 575 | /* Create a new transport */ |
544 | newxprt = rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, 0); | 576 | newxprt = rdma_create_xprt(listen_xprt->sc_xprt.xpt_server, 0); |
@@ -551,6 +583,12 @@ static void handle_connect_req(struct rdma_cm_id *new_cma_id) | |||
551 | dprintk("svcrdma: Creating newxprt=%p, cm_id=%p, listenxprt=%p\n", | 583 | dprintk("svcrdma: Creating newxprt=%p, cm_id=%p, listenxprt=%p\n", |
552 | newxprt, newxprt->sc_cm_id, listen_xprt); | 584 | newxprt, newxprt->sc_cm_id, listen_xprt); |
553 | 585 | ||
586 | /* Set the local and remote addresses in the transport */ | ||
587 | sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; | ||
588 | svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa)); | ||
589 | sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; | ||
590 | svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa)); | ||
591 | |||
554 | /* | 592 | /* |
555 | * Enqueue the new transport on the accept queue of the listening | 593 | * Enqueue the new transport on the accept queue of the listening |
556 | * transport | 594 | * transport |
@@ -627,6 +665,7 @@ static int rdma_cma_handler(struct rdma_cm_id *cma_id, | |||
627 | if (xprt) { | 665 | if (xprt) { |
628 | set_bit(XPT_CLOSE, &xprt->xpt_flags); | 666 | set_bit(XPT_CLOSE, &xprt->xpt_flags); |
629 | svc_xprt_enqueue(xprt); | 667 | svc_xprt_enqueue(xprt); |
668 | svc_xprt_put(xprt); | ||
630 | } | 669 | } |
631 | break; | 670 | break; |
632 | case RDMA_CM_EVENT_DEVICE_REMOVAL: | 671 | case RDMA_CM_EVENT_DEVICE_REMOVAL: |
@@ -661,31 +700,27 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv, | |||
661 | 700 | ||
662 | cma_xprt = rdma_create_xprt(serv, 1); | 701 | cma_xprt = rdma_create_xprt(serv, 1); |
663 | if (!cma_xprt) | 702 | if (!cma_xprt) |
664 | return ERR_PTR(ENOMEM); | 703 | return ERR_PTR(-ENOMEM); |
665 | xprt = &cma_xprt->sc_xprt; | 704 | xprt = &cma_xprt->sc_xprt; |
666 | 705 | ||
667 | listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP); | 706 | listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP); |
668 | if (IS_ERR(listen_id)) { | 707 | if (IS_ERR(listen_id)) { |
669 | svc_xprt_put(&cma_xprt->sc_xprt); | 708 | ret = PTR_ERR(listen_id); |
670 | dprintk("svcrdma: rdma_create_id failed = %ld\n", | 709 | dprintk("svcrdma: rdma_create_id failed = %d\n", ret); |
671 | PTR_ERR(listen_id)); | 710 | goto err0; |
672 | return (void *)listen_id; | ||
673 | } | 711 | } |
712 | |||
674 | ret = rdma_bind_addr(listen_id, sa); | 713 | ret = rdma_bind_addr(listen_id, sa); |
675 | if (ret) { | 714 | if (ret) { |
676 | rdma_destroy_id(listen_id); | ||
677 | svc_xprt_put(&cma_xprt->sc_xprt); | ||
678 | dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret); | 715 | dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret); |
679 | return ERR_PTR(ret); | 716 | goto err1; |
680 | } | 717 | } |
681 | cma_xprt->sc_cm_id = listen_id; | 718 | cma_xprt->sc_cm_id = listen_id; |
682 | 719 | ||
683 | ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG); | 720 | ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG); |
684 | if (ret) { | 721 | if (ret) { |
685 | rdma_destroy_id(listen_id); | ||
686 | svc_xprt_put(&cma_xprt->sc_xprt); | ||
687 | dprintk("svcrdma: rdma_listen failed = %d\n", ret); | 722 | dprintk("svcrdma: rdma_listen failed = %d\n", ret); |
688 | return ERR_PTR(ret); | 723 | goto err1; |
689 | } | 724 | } |
690 | 725 | ||
691 | /* | 726 | /* |
@@ -696,6 +731,12 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv, | |||
696 | svc_xprt_set_local(&cma_xprt->sc_xprt, sa, salen); | 731 | svc_xprt_set_local(&cma_xprt->sc_xprt, sa, salen); |
697 | 732 | ||
698 | return &cma_xprt->sc_xprt; | 733 | return &cma_xprt->sc_xprt; |
734 | |||
735 | err1: | ||
736 | rdma_destroy_id(listen_id); | ||
737 | err0: | ||
738 | kfree(cma_xprt); | ||
739 | return ERR_PTR(ret); | ||
699 | } | 740 | } |
700 | 741 | ||
701 | /* | 742 | /* |
@@ -716,7 +757,6 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) | |||
716 | struct rdma_conn_param conn_param; | 757 | struct rdma_conn_param conn_param; |
717 | struct ib_qp_init_attr qp_attr; | 758 | struct ib_qp_init_attr qp_attr; |
718 | struct ib_device_attr devattr; | 759 | struct ib_device_attr devattr; |
719 | struct sockaddr *sa; | ||
720 | int ret; | 760 | int ret; |
721 | int i; | 761 | int i; |
722 | 762 | ||
@@ -826,7 +866,6 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) | |||
826 | newxprt->sc_sq_depth = qp_attr.cap.max_send_wr; | 866 | newxprt->sc_sq_depth = qp_attr.cap.max_send_wr; |
827 | newxprt->sc_max_requests = qp_attr.cap.max_recv_wr; | 867 | newxprt->sc_max_requests = qp_attr.cap.max_recv_wr; |
828 | } | 868 | } |
829 | svc_xprt_get(&newxprt->sc_xprt); | ||
830 | newxprt->sc_qp = newxprt->sc_cm_id->qp; | 869 | newxprt->sc_qp = newxprt->sc_cm_id->qp; |
831 | 870 | ||
832 | /* Register all of physical memory */ | 871 | /* Register all of physical memory */ |
@@ -850,6 +889,13 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) | |||
850 | /* Swap out the handler */ | 889 | /* Swap out the handler */ |
851 | newxprt->sc_cm_id->event_handler = rdma_cma_handler; | 890 | newxprt->sc_cm_id->event_handler = rdma_cma_handler; |
852 | 891 | ||
892 | /* | ||
893 | * Arm the CQs for the SQ and RQ before accepting so we can't | ||
894 | * miss the first message | ||
895 | */ | ||
896 | ib_req_notify_cq(newxprt->sc_sq_cq, IB_CQ_NEXT_COMP); | ||
897 | ib_req_notify_cq(newxprt->sc_rq_cq, IB_CQ_NEXT_COMP); | ||
898 | |||
853 | /* Accept Connection */ | 899 | /* Accept Connection */ |
854 | set_bit(RDMAXPRT_CONN_PENDING, &newxprt->sc_flags); | 900 | set_bit(RDMAXPRT_CONN_PENDING, &newxprt->sc_flags); |
855 | memset(&conn_param, 0, sizeof conn_param); | 901 | memset(&conn_param, 0, sizeof conn_param); |
@@ -886,58 +932,26 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) | |||
886 | newxprt->sc_max_requests, | 932 | newxprt->sc_max_requests, |
887 | newxprt->sc_ord); | 933 | newxprt->sc_ord); |
888 | 934 | ||
889 | /* Set the local and remote addresses in the transport */ | ||
890 | sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.dst_addr; | ||
891 | svc_xprt_set_remote(&newxprt->sc_xprt, sa, svc_addr_len(sa)); | ||
892 | sa = (struct sockaddr *)&newxprt->sc_cm_id->route.addr.src_addr; | ||
893 | svc_xprt_set_local(&newxprt->sc_xprt, sa, svc_addr_len(sa)); | ||
894 | |||
895 | ib_req_notify_cq(newxprt->sc_sq_cq, IB_CQ_NEXT_COMP); | ||
896 | ib_req_notify_cq(newxprt->sc_rq_cq, IB_CQ_NEXT_COMP); | ||
897 | return &newxprt->sc_xprt; | 935 | return &newxprt->sc_xprt; |
898 | 936 | ||
899 | errout: | 937 | errout: |
900 | dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret); | 938 | dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret); |
901 | /* Take a reference in case the DTO handler runs */ | 939 | /* Take a reference in case the DTO handler runs */ |
902 | svc_xprt_get(&newxprt->sc_xprt); | 940 | svc_xprt_get(&newxprt->sc_xprt); |
903 | if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) { | 941 | if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) |
904 | ib_destroy_qp(newxprt->sc_qp); | 942 | ib_destroy_qp(newxprt->sc_qp); |
905 | svc_xprt_put(&newxprt->sc_xprt); | ||
906 | } | ||
907 | rdma_destroy_id(newxprt->sc_cm_id); | 943 | rdma_destroy_id(newxprt->sc_cm_id); |
908 | /* This call to put will destroy the transport */ | 944 | /* This call to put will destroy the transport */ |
909 | svc_xprt_put(&newxprt->sc_xprt); | 945 | svc_xprt_put(&newxprt->sc_xprt); |
910 | return NULL; | 946 | return NULL; |
911 | } | 947 | } |
912 | 948 | ||
913 | /* | ||
914 | * Post an RQ WQE to the RQ when the rqst is being released. This | ||
915 | * effectively returns an RQ credit to the client. The rq_xprt_ctxt | ||
916 | * will be null if the request is deferred due to an RDMA_READ or the | ||
917 | * transport had no data ready (EAGAIN). Note that an RPC deferred in | ||
918 | * svc_process will still return the credit, this is because the data | ||
919 | * is copied and no longer consume a WQE/WC. | ||
920 | */ | ||
921 | static void svc_rdma_release_rqst(struct svc_rqst *rqstp) | 949 | static void svc_rdma_release_rqst(struct svc_rqst *rqstp) |
922 | { | 950 | { |
923 | int err; | ||
924 | struct svcxprt_rdma *rdma = | ||
925 | container_of(rqstp->rq_xprt, struct svcxprt_rdma, sc_xprt); | ||
926 | if (rqstp->rq_xprt_ctxt) { | ||
927 | BUG_ON(rqstp->rq_xprt_ctxt != rdma); | ||
928 | err = svc_rdma_post_recv(rdma); | ||
929 | if (err) | ||
930 | dprintk("svcrdma: failed to post an RQ WQE error=%d\n", | ||
931 | err); | ||
932 | } | ||
933 | rqstp->rq_xprt_ctxt = NULL; | ||
934 | } | 951 | } |
935 | 952 | ||
936 | /* | 953 | /* |
937 | * When connected, an svc_xprt has at least three references: | 954 | * When connected, an svc_xprt has at least two references: |
938 | * | ||
939 | * - A reference held by the QP. We still hold that here because this | ||
940 | * code deletes the QP and puts the reference. | ||
941 | * | 955 | * |
942 | * - A reference held by the cm_id between the ESTABLISHED and | 956 | * - A reference held by the cm_id between the ESTABLISHED and |
943 | * DISCONNECTED events. If the remote peer disconnected first, this | 957 | * DISCONNECTED events. If the remote peer disconnected first, this |
@@ -946,7 +960,7 @@ static void svc_rdma_release_rqst(struct svc_rqst *rqstp) | |||
946 | * - A reference held by the svc_recv code that called this function | 960 | * - A reference held by the svc_recv code that called this function |
947 | * as part of close processing. | 961 | * as part of close processing. |
948 | * | 962 | * |
949 | * At a minimum two references should still be held. | 963 | * At a minimum one references should still be held. |
950 | */ | 964 | */ |
951 | static void svc_rdma_detach(struct svc_xprt *xprt) | 965 | static void svc_rdma_detach(struct svc_xprt *xprt) |
952 | { | 966 | { |
@@ -956,23 +970,53 @@ static void svc_rdma_detach(struct svc_xprt *xprt) | |||
956 | 970 | ||
957 | /* Disconnect and flush posted WQE */ | 971 | /* Disconnect and flush posted WQE */ |
958 | rdma_disconnect(rdma->sc_cm_id); | 972 | rdma_disconnect(rdma->sc_cm_id); |
959 | |||
960 | /* Destroy the QP if present (not a listener) */ | ||
961 | if (rdma->sc_qp && !IS_ERR(rdma->sc_qp)) { | ||
962 | ib_destroy_qp(rdma->sc_qp); | ||
963 | svc_xprt_put(xprt); | ||
964 | } | ||
965 | |||
966 | /* Destroy the CM ID */ | ||
967 | rdma_destroy_id(rdma->sc_cm_id); | ||
968 | } | 973 | } |
969 | 974 | ||
970 | static void svc_rdma_free(struct svc_xprt *xprt) | 975 | static void __svc_rdma_free(struct work_struct *work) |
971 | { | 976 | { |
972 | struct svcxprt_rdma *rdma = (struct svcxprt_rdma *)xprt; | 977 | struct svcxprt_rdma *rdma = |
978 | container_of(work, struct svcxprt_rdma, sc_work); | ||
973 | dprintk("svcrdma: svc_rdma_free(%p)\n", rdma); | 979 | dprintk("svcrdma: svc_rdma_free(%p)\n", rdma); |
980 | |||
974 | /* We should only be called from kref_put */ | 981 | /* We should only be called from kref_put */ |
975 | BUG_ON(atomic_read(&xprt->xpt_ref.refcount) != 0); | 982 | BUG_ON(atomic_read(&rdma->sc_xprt.xpt_ref.refcount) != 0); |
983 | |||
984 | /* | ||
985 | * Destroy queued, but not processed read completions. Note | ||
986 | * that this cleanup has to be done before destroying the | ||
987 | * cm_id because the device ptr is needed to unmap the dma in | ||
988 | * svc_rdma_put_context. | ||
989 | */ | ||
990 | spin_lock_bh(&rdma->sc_read_complete_lock); | ||
991 | while (!list_empty(&rdma->sc_read_complete_q)) { | ||
992 | struct svc_rdma_op_ctxt *ctxt; | ||
993 | ctxt = list_entry(rdma->sc_read_complete_q.next, | ||
994 | struct svc_rdma_op_ctxt, | ||
995 | dto_q); | ||
996 | list_del_init(&ctxt->dto_q); | ||
997 | svc_rdma_put_context(ctxt, 1); | ||
998 | } | ||
999 | spin_unlock_bh(&rdma->sc_read_complete_lock); | ||
1000 | |||
1001 | /* Destroy queued, but not processed recv completions */ | ||
1002 | spin_lock_bh(&rdma->sc_rq_dto_lock); | ||
1003 | while (!list_empty(&rdma->sc_rq_dto_q)) { | ||
1004 | struct svc_rdma_op_ctxt *ctxt; | ||
1005 | ctxt = list_entry(rdma->sc_rq_dto_q.next, | ||
1006 | struct svc_rdma_op_ctxt, | ||
1007 | dto_q); | ||
1008 | list_del_init(&ctxt->dto_q); | ||
1009 | svc_rdma_put_context(ctxt, 1); | ||
1010 | } | ||
1011 | spin_unlock_bh(&rdma->sc_rq_dto_lock); | ||
1012 | |||
1013 | /* Warn if we leaked a resource or under-referenced */ | ||
1014 | WARN_ON(atomic_read(&rdma->sc_ctxt_used) != 0); | ||
1015 | |||
1016 | /* Destroy the QP if present (not a listener) */ | ||
1017 | if (rdma->sc_qp && !IS_ERR(rdma->sc_qp)) | ||
1018 | ib_destroy_qp(rdma->sc_qp); | ||
1019 | |||
976 | if (rdma->sc_sq_cq && !IS_ERR(rdma->sc_sq_cq)) | 1020 | if (rdma->sc_sq_cq && !IS_ERR(rdma->sc_sq_cq)) |
977 | ib_destroy_cq(rdma->sc_sq_cq); | 1021 | ib_destroy_cq(rdma->sc_sq_cq); |
978 | 1022 | ||
@@ -985,10 +1029,21 @@ static void svc_rdma_free(struct svc_xprt *xprt) | |||
985 | if (rdma->sc_pd && !IS_ERR(rdma->sc_pd)) | 1029 | if (rdma->sc_pd && !IS_ERR(rdma->sc_pd)) |
986 | ib_dealloc_pd(rdma->sc_pd); | 1030 | ib_dealloc_pd(rdma->sc_pd); |
987 | 1031 | ||
988 | destroy_context_cache(rdma->sc_ctxt_head); | 1032 | /* Destroy the CM ID */ |
1033 | rdma_destroy_id(rdma->sc_cm_id); | ||
1034 | |||
1035 | destroy_context_cache(rdma); | ||
989 | kfree(rdma); | 1036 | kfree(rdma); |
990 | } | 1037 | } |
991 | 1038 | ||
1039 | static void svc_rdma_free(struct svc_xprt *xprt) | ||
1040 | { | ||
1041 | struct svcxprt_rdma *rdma = | ||
1042 | container_of(xprt, struct svcxprt_rdma, sc_xprt); | ||
1043 | INIT_WORK(&rdma->sc_work, __svc_rdma_free); | ||
1044 | schedule_work(&rdma->sc_work); | ||
1045 | } | ||
1046 | |||
992 | static int svc_rdma_has_wspace(struct svc_xprt *xprt) | 1047 | static int svc_rdma_has_wspace(struct svc_xprt *xprt) |
993 | { | 1048 | { |
994 | struct svcxprt_rdma *rdma = | 1049 | struct svcxprt_rdma *rdma = |
@@ -1018,7 +1073,7 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr) | |||
1018 | int ret; | 1073 | int ret; |
1019 | 1074 | ||
1020 | if (test_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags)) | 1075 | if (test_bit(XPT_CLOSE, &xprt->sc_xprt.xpt_flags)) |
1021 | return 0; | 1076 | return -ENOTCONN; |
1022 | 1077 | ||
1023 | BUG_ON(wr->send_flags != IB_SEND_SIGNALED); | 1078 | BUG_ON(wr->send_flags != IB_SEND_SIGNALED); |
1024 | BUG_ON(((struct svc_rdma_op_ctxt *)(unsigned long)wr->wr_id)->wr_op != | 1079 | BUG_ON(((struct svc_rdma_op_ctxt *)(unsigned long)wr->wr_id)->wr_op != |
@@ -1029,7 +1084,8 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr) | |||
1029 | if (xprt->sc_sq_depth == atomic_read(&xprt->sc_sq_count)) { | 1084 | if (xprt->sc_sq_depth == atomic_read(&xprt->sc_sq_count)) { |
1030 | spin_unlock_bh(&xprt->sc_lock); | 1085 | spin_unlock_bh(&xprt->sc_lock); |
1031 | atomic_inc(&rdma_stat_sq_starve); | 1086 | atomic_inc(&rdma_stat_sq_starve); |
1032 | /* See if we can reap some SQ WR */ | 1087 | |
1088 | /* See if we can opportunistically reap SQ WR to make room */ | ||
1033 | sq_cq_reap(xprt); | 1089 | sq_cq_reap(xprt); |
1034 | 1090 | ||
1035 | /* Wait until SQ WR available if SQ still full */ | 1091 | /* Wait until SQ WR available if SQ still full */ |
@@ -1041,22 +1097,25 @@ int svc_rdma_send(struct svcxprt_rdma *xprt, struct ib_send_wr *wr) | |||
1041 | continue; | 1097 | continue; |
1042 | } | 1098 | } |
1043 | /* Bumped used SQ WR count and post */ | 1099 | /* Bumped used SQ WR count and post */ |
1100 | svc_xprt_get(&xprt->sc_xprt); | ||
1044 | ret = ib_post_send(xprt->sc_qp, wr, &bad_wr); | 1101 | ret = ib_post_send(xprt->sc_qp, wr, &bad_wr); |
1045 | if (!ret) | 1102 | if (!ret) |
1046 | atomic_inc(&xprt->sc_sq_count); | 1103 | atomic_inc(&xprt->sc_sq_count); |
1047 | else | 1104 | else { |
1105 | svc_xprt_put(&xprt->sc_xprt); | ||
1048 | dprintk("svcrdma: failed to post SQ WR rc=%d, " | 1106 | dprintk("svcrdma: failed to post SQ WR rc=%d, " |
1049 | "sc_sq_count=%d, sc_sq_depth=%d\n", | 1107 | "sc_sq_count=%d, sc_sq_depth=%d\n", |
1050 | ret, atomic_read(&xprt->sc_sq_count), | 1108 | ret, atomic_read(&xprt->sc_sq_count), |
1051 | xprt->sc_sq_depth); | 1109 | xprt->sc_sq_depth); |
1110 | } | ||
1052 | spin_unlock_bh(&xprt->sc_lock); | 1111 | spin_unlock_bh(&xprt->sc_lock); |
1053 | break; | 1112 | break; |
1054 | } | 1113 | } |
1055 | return ret; | 1114 | return ret; |
1056 | } | 1115 | } |
1057 | 1116 | ||
1058 | int svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp, | 1117 | void svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp, |
1059 | enum rpcrdma_errcode err) | 1118 | enum rpcrdma_errcode err) |
1060 | { | 1119 | { |
1061 | struct ib_send_wr err_wr; | 1120 | struct ib_send_wr err_wr; |
1062 | struct ib_sge sge; | 1121 | struct ib_sge sge; |
@@ -1094,9 +1153,8 @@ int svc_rdma_send_error(struct svcxprt_rdma *xprt, struct rpcrdma_msg *rmsgp, | |||
1094 | /* Post It */ | 1153 | /* Post It */ |
1095 | ret = svc_rdma_send(xprt, &err_wr); | 1154 | ret = svc_rdma_send(xprt, &err_wr); |
1096 | if (ret) { | 1155 | if (ret) { |
1097 | dprintk("svcrdma: Error posting send = %d\n", ret); | 1156 | dprintk("svcrdma: Error %d posting send for protocol error\n", |
1157 | ret); | ||
1098 | svc_rdma_put_context(ctxt, 1); | 1158 | svc_rdma_put_context(ctxt, 1); |
1099 | } | 1159 | } |
1100 | |||
1101 | return ret; | ||
1102 | } | 1160 | } |
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 2bdd4dddc0e1..fb75f265b39c 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -187,7 +187,8 @@ static int nl80211_send_wiphy(struct sk_buff *msg, u32 pid, u32 seq, int flags, | |||
187 | return genlmsg_end(msg, hdr); | 187 | return genlmsg_end(msg, hdr); |
188 | 188 | ||
189 | nla_put_failure: | 189 | nla_put_failure: |
190 | return genlmsg_cancel(msg, hdr); | 190 | genlmsg_cancel(msg, hdr); |
191 | return -EMSGSIZE; | ||
191 | } | 192 | } |
192 | 193 | ||
193 | static int nl80211_dump_wiphy(struct sk_buff *skb, struct netlink_callback *cb) | 194 | static int nl80211_dump_wiphy(struct sk_buff *skb, struct netlink_callback *cb) |
@@ -273,7 +274,8 @@ static int nl80211_send_iface(struct sk_buff *msg, u32 pid, u32 seq, int flags, | |||
273 | return genlmsg_end(msg, hdr); | 274 | return genlmsg_end(msg, hdr); |
274 | 275 | ||
275 | nla_put_failure: | 276 | nla_put_failure: |
276 | return genlmsg_cancel(msg, hdr); | 277 | genlmsg_cancel(msg, hdr); |
278 | return -EMSGSIZE; | ||
277 | } | 279 | } |
278 | 280 | ||
279 | static int nl80211_dump_interface(struct sk_buff *skb, struct netlink_callback *cb) | 281 | static int nl80211_dump_interface(struct sk_buff *skb, struct netlink_callback *cb) |
@@ -928,7 +930,8 @@ static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq, | |||
928 | return genlmsg_end(msg, hdr); | 930 | return genlmsg_end(msg, hdr); |
929 | 931 | ||
930 | nla_put_failure: | 932 | nla_put_failure: |
931 | return genlmsg_cancel(msg, hdr); | 933 | genlmsg_cancel(msg, hdr); |
934 | return -EMSGSIZE; | ||
932 | } | 935 | } |
933 | 936 | ||
934 | static int nl80211_dump_station(struct sk_buff *skb, | 937 | static int nl80211_dump_station(struct sk_buff *skb, |
@@ -1267,7 +1270,8 @@ static int nl80211_send_mpath(struct sk_buff *msg, u32 pid, u32 seq, | |||
1267 | return genlmsg_end(msg, hdr); | 1270 | return genlmsg_end(msg, hdr); |
1268 | 1271 | ||
1269 | nla_put_failure: | 1272 | nla_put_failure: |
1270 | return genlmsg_cancel(msg, hdr); | 1273 | genlmsg_cancel(msg, hdr); |
1274 | return -EMSGSIZE; | ||
1271 | } | 1275 | } |
1272 | 1276 | ||
1273 | static int nl80211_dump_mpath(struct sk_buff *skb, | 1277 | static int nl80211_dump_mpath(struct sk_buff *skb, |
diff --git a/net/xfrm/xfrm_algo.c b/net/xfrm/xfrm_algo.c index ac765dd9c7f5..23a2cc04b8cd 100644 --- a/net/xfrm/xfrm_algo.c +++ b/net/xfrm/xfrm_algo.c | |||
@@ -200,8 +200,8 @@ static struct xfrm_algo_desc aalg_list[] = { | |||
200 | } | 200 | } |
201 | }, | 201 | }, |
202 | { | 202 | { |
203 | .name = "hmac(ripemd160)", | 203 | .name = "hmac(rmd160)", |
204 | .compat = "ripemd160", | 204 | .compat = "rmd160", |
205 | 205 | ||
206 | .uinfo = { | 206 | .uinfo = { |
207 | .auth = { | 207 | .auth = { |
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index a098a0454dc8..17092d6c7db3 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost | |||
@@ -43,7 +43,13 @@ _modpost: __modpost | |||
43 | include include/config/auto.conf | 43 | include include/config/auto.conf |
44 | include scripts/Kbuild.include | 44 | include scripts/Kbuild.include |
45 | 45 | ||
46 | # When building external modules load the Kbuild file to retreive EXTRA_SYMBOLS info | ||
46 | ifneq ($(KBUILD_EXTMOD),) | 47 | ifneq ($(KBUILD_EXTMOD),) |
48 | |||
49 | # set src + obj - they may be used when building the .mod.c file | ||
50 | obj := $(KBUILD_EXTMOD) | ||
51 | src := $(obj) | ||
52 | |||
47 | # Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS | 53 | # Include the module's Makefile to find KBUILD_EXTRA_SYMBOLS |
48 | include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \ | 54 | include $(if $(wildcard $(KBUILD_EXTMOD)/Kbuild), \ |
49 | $(KBUILD_EXTMOD)/Kbuild, $(KBUILD_EXTMOD)/Makefile) | 55 | $(KBUILD_EXTMOD)/Kbuild, $(KBUILD_EXTMOD)/Makefile) |
diff --git a/scripts/decodecode b/scripts/decodecode index 235d3938529d..235d3938529d 100644..100755 --- a/scripts/decodecode +++ b/scripts/decodecode | |||
diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c index 5d20a2e24cd1..ad2434b26970 100644 --- a/scripts/kallsyms.c +++ b/scripts/kallsyms.c | |||
@@ -108,6 +108,9 @@ static int read_symbol(FILE *in, struct sym_entry *s) | |||
108 | /* exclude also MIPS ELF local symbols ($L123 instead of .L123) */ | 108 | /* exclude also MIPS ELF local symbols ($L123 instead of .L123) */ |
109 | else if (str[0] == '$') | 109 | else if (str[0] == '$') |
110 | return -1; | 110 | return -1; |
111 | /* exclude debugging symbols */ | ||
112 | else if (stype == 'N') | ||
113 | return -1; | ||
111 | 114 | ||
112 | /* include the type field in the symbol name, so that it gets | 115 | /* include the type field in the symbol name, so that it gets |
113 | * compressed together */ | 116 | * compressed together */ |
diff --git a/scripts/kconfig/util.c b/scripts/kconfig/util.c index f8e73c039dc8..3cc9f9369036 100644 --- a/scripts/kconfig/util.c +++ b/scripts/kconfig/util.c | |||
@@ -77,7 +77,7 @@ struct gstr str_new(void) | |||
77 | { | 77 | { |
78 | struct gstr gs; | 78 | struct gstr gs; |
79 | gs.s = malloc(sizeof(char) * 64); | 79 | gs.s = malloc(sizeof(char) * 64); |
80 | gs.len = 16; | 80 | gs.len = 64; |
81 | strcpy(gs.s, "\0"); | 81 | strcpy(gs.s, "\0"); |
82 | return gs; | 82 | return gs; |
83 | } | 83 | } |
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 83cee18a02e9..88e3934a8b8c 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc | |||
@@ -1556,7 +1556,9 @@ sub create_parameterlist($$$) { | |||
1556 | push_parameter($2, "$type $1", $file); | 1556 | push_parameter($2, "$type $1", $file); |
1557 | } | 1557 | } |
1558 | elsif ($param =~ m/(.*?):(\d+)/) { | 1558 | elsif ($param =~ m/(.*?):(\d+)/) { |
1559 | push_parameter($1, "$type:$2", $file) | 1559 | if ($type ne "") { # skip unnamed bit-fields |
1560 | push_parameter($1, "$type:$2", $file) | ||
1561 | } | ||
1560 | } | 1562 | } |
1561 | else { | 1563 | else { |
1562 | push_parameter($param, $type, $file); | 1564 | push_parameter($param, $type, $file); |
diff --git a/scripts/mksysmap b/scripts/mksysmap index 4390fab9f5bd..6e133a0bae7a 100644 --- a/scripts/mksysmap +++ b/scripts/mksysmap | |||
@@ -32,6 +32,7 @@ | |||
32 | # For System.map filter away: | 32 | # For System.map filter away: |
33 | # a - local absolute symbols | 33 | # a - local absolute symbols |
34 | # U - undefined global symbols | 34 | # U - undefined global symbols |
35 | # N - debugging symbols | ||
35 | # w - local weak symbols | 36 | # w - local weak symbols |
36 | 37 | ||
37 | # readprofile starts reading symbols when _stext is found, and | 38 | # readprofile starts reading symbols when _stext is found, and |
@@ -40,5 +41,5 @@ | |||
40 | # so we just ignore them to let readprofile continue to work. | 41 | # so we just ignore them to let readprofile continue to work. |
41 | # (At least sparc64 has __crc_ in the middle). | 42 | # (At least sparc64 has __crc_ in the middle). |
42 | 43 | ||
43 | $NM -n $1 | grep -v '\( [aUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2 | 44 | $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2 |
44 | 45 | ||
diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c index 757294b4f322..508c5895c680 100644 --- a/scripts/mod/modpost.c +++ b/scripts/mod/modpost.c | |||
@@ -721,7 +721,7 @@ static int check_section(const char *modname, const char *sec) | |||
721 | /* consume all digits */ | 721 | /* consume all digits */ |
722 | while (*e && e != sec && isdigit(*e)) | 722 | while (*e && e != sec && isdigit(*e)) |
723 | e--; | 723 | e--; |
724 | if (*e == '.') { | 724 | if (*e == '.' && !strstr(sec, ".linkonce")) { |
725 | warn("%s (%s): unexpected section name.\n" | 725 | warn("%s (%s): unexpected section name.\n" |
726 | "The (.[number]+) following section name are " | 726 | "The (.[number]+) following section name are " |
727 | "ld generated and not expected.\n" | 727 | "ld generated and not expected.\n" |
diff --git a/scripts/ver_linux b/scripts/ver_linux index ab69ecefedbd..7ac0e309be09 100755 --- a/scripts/ver_linux +++ b/scripts/ver_linux | |||
@@ -12,12 +12,9 @@ echo ' ' | |||
12 | uname -a | 12 | uname -a |
13 | echo ' ' | 13 | echo ' ' |
14 | 14 | ||
15 | gcc --version 2>&1| head -n 1 | grep -v gcc | awk \ | 15 | gcc -dumpversion 2>&1| awk \ |
16 | 'NR==1{print "Gnu C ", $1}' | 16 | 'NR==1{print "Gnu C ", $1}' |
17 | 17 | ||
18 | gcc --version 2>&1| grep gcc | awk \ | ||
19 | 'NR==1{print "Gnu C ", $3}' | ||
20 | |||
21 | make --version 2>&1 | awk -F, '{print $1}' | awk \ | 18 | make --version 2>&1 | awk -F, '{print $1}' | awk \ |
22 | '/GNU Make/{print "Gnu make ",$NF}' | 19 | '/GNU Make/{print "Gnu make ",$NF}' |
23 | 20 | ||
diff --git a/sound/Kconfig b/sound/Kconfig index b2a2db47aff5..4247406160e7 100644 --- a/sound/Kconfig +++ b/sound/Kconfig | |||
@@ -28,11 +28,6 @@ config SOUND | |||
28 | and read <file:Documentation/sound/oss/README.modules>; the module | 28 | and read <file:Documentation/sound/oss/README.modules>; the module |
29 | will be called soundcore. | 29 | will be called soundcore. |
30 | 30 | ||
31 | I'm told that even without a sound card, you can make your computer | ||
32 | say more than an occasional beep, by programming the PC speaker. | ||
33 | Kernel patches and supporting utilities to do that are in the pcsp | ||
34 | package, available at <ftp://ftp.infradead.org/pub/pcsp/>. | ||
35 | |||
36 | source "sound/oss/dmasound/Kconfig" | 31 | source "sound/oss/dmasound/Kconfig" |
37 | 32 | ||
38 | if !M68K | 33 | if !M68K |
diff --git a/sound/core/sound.c b/sound/core/sound.c index 812f91b3de5b..6c8ab48c689a 100644 --- a/sound/core/sound.c +++ b/sound/core/sound.c | |||
@@ -259,8 +259,9 @@ int snd_register_device_for_dev(int type, struct snd_card *card, int dev, | |||
259 | return minor; | 259 | return minor; |
260 | } | 260 | } |
261 | snd_minors[minor] = preg; | 261 | snd_minors[minor] = preg; |
262 | preg->dev = device_create(sound_class, device, MKDEV(major, minor), | 262 | preg->dev = device_create_drvdata(sound_class, device, |
263 | "%s", name); | 263 | MKDEV(major, minor), |
264 | private_data, "%s", name); | ||
264 | if (IS_ERR(preg->dev)) { | 265 | if (IS_ERR(preg->dev)) { |
265 | snd_minors[minor] = NULL; | 266 | snd_minors[minor] = NULL; |
266 | mutex_unlock(&sound_mutex); | 267 | mutex_unlock(&sound_mutex); |
@@ -269,9 +270,6 @@ int snd_register_device_for_dev(int type, struct snd_card *card, int dev, | |||
269 | return minor; | 270 | return minor; |
270 | } | 271 | } |
271 | 272 | ||
272 | if (preg->dev) | ||
273 | dev_set_drvdata(preg->dev, private_data); | ||
274 | |||
275 | mutex_unlock(&sound_mutex); | 273 | mutex_unlock(&sound_mutex); |
276 | return 0; | 274 | return 0; |
277 | } | 275 | } |
diff --git a/sound/drivers/Kconfig b/sound/drivers/Kconfig index 379bcb074463..602b58e3b55d 100644 --- a/sound/drivers/Kconfig +++ b/sound/drivers/Kconfig | |||
@@ -5,9 +5,10 @@ menu "Generic devices" | |||
5 | 5 | ||
6 | 6 | ||
7 | config SND_PCSP | 7 | config SND_PCSP |
8 | tristate "PC-Speaker support" | 8 | tristate "PC-Speaker support (READ HELP!)" |
9 | depends on PCSPKR_PLATFORM && X86_PC && HIGH_RES_TIMERS | 9 | depends on PCSPKR_PLATFORM && X86_PC && HIGH_RES_TIMERS |
10 | depends on INPUT | 10 | depends on INPUT |
11 | depends on EXPERIMENTAL | ||
11 | depends on SND | 12 | depends on SND |
12 | select SND_PCM | 13 | select SND_PCM |
13 | help | 14 | help |
@@ -18,11 +19,21 @@ config SND_PCSP | |||
18 | 19 | ||
19 | You can compile this as a module which will be called snd-pcsp. | 20 | You can compile this as a module which will be called snd-pcsp. |
20 | 21 | ||
22 | WARNING: if you already have a soundcard, enabling this | ||
23 | driver may lead to a problem. Namely, it may get loaded | ||
24 | before the other sound driver of yours, making the | ||
25 | pc-speaker a default sound device. Which is likely not | ||
26 | what you want. To make this driver play nicely with other | ||
27 | sound driver, you can add this into your /etc/modprobe.conf: | ||
28 | options snd-pcsp index=2 | ||
29 | |||
21 | You don't need this driver if you only want your pc-speaker to beep. | 30 | You don't need this driver if you only want your pc-speaker to beep. |
22 | You don't need this driver if you have a tablet piezo beeper | 31 | You don't need this driver if you have a tablet piezo beeper |
23 | in your PC instead of the real speaker. | 32 | in your PC instead of the real speaker. |
24 | 33 | ||
25 | It should not hurt to say Y or M here in all other cases. | 34 | Say N if you have a sound card. |
35 | Say M if you don't. | ||
36 | Say Y only if you really know what you do. | ||
26 | 37 | ||
27 | config SND_MPU401_UART | 38 | config SND_MPU401_UART |
28 | tristate | 39 | tristate |
diff --git a/sound/drivers/pcsp/pcsp.c b/sound/drivers/pcsp/pcsp.c index 54a1f9036c66..1899cf0685bc 100644 --- a/sound/drivers/pcsp/pcsp.c +++ b/sound/drivers/pcsp/pcsp.c | |||
@@ -96,7 +96,7 @@ static int __devinit snd_card_pcsp_probe(int devnum, struct device *dev) | |||
96 | return -EINVAL; | 96 | return -EINVAL; |
97 | 97 | ||
98 | hrtimer_init(&pcsp_chip.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); | 98 | hrtimer_init(&pcsp_chip.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); |
99 | pcsp_chip.timer.cb_mode = HRTIMER_CB_IRQSAFE; | 99 | pcsp_chip.timer.cb_mode = HRTIMER_CB_SOFTIRQ; |
100 | pcsp_chip.timer.function = pcsp_do_timer; | 100 | pcsp_chip.timer.function = pcsp_do_timer; |
101 | 101 | ||
102 | card = snd_card_new(index, id, THIS_MODULE, 0); | 102 | card = snd_card_new(index, id, THIS_MODULE, 0); |
diff --git a/sound/drivers/pcsp/pcsp.h b/sound/drivers/pcsp/pcsp.h index f07cc1ee1fe7..1d661f795e8c 100644 --- a/sound/drivers/pcsp/pcsp.h +++ b/sound/drivers/pcsp/pcsp.h | |||
@@ -24,7 +24,8 @@ static DEFINE_SPINLOCK(i8253_lock); | |||
24 | /* default timer freq for PC-Speaker: 18643 Hz */ | 24 | /* default timer freq for PC-Speaker: 18643 Hz */ |
25 | #define DIV_18KHZ 64 | 25 | #define DIV_18KHZ 64 |
26 | #define MAX_DIV DIV_18KHZ | 26 | #define MAX_DIV DIV_18KHZ |
27 | #define CUR_DIV() (MAX_DIV >> chip->treble) | 27 | #define CALC_DIV(d) (MAX_DIV >> (d)) |
28 | #define CUR_DIV() CALC_DIV(chip->treble) | ||
28 | #define PCSP_MAX_TREBLE 1 | 29 | #define PCSP_MAX_TREBLE 1 |
29 | 30 | ||
30 | /* unfortunately, with hrtimers 37KHz does not work very well :( */ | 31 | /* unfortunately, with hrtimers 37KHz does not work very well :( */ |
@@ -36,7 +37,8 @@ static DEFINE_SPINLOCK(i8253_lock); | |||
36 | #define PCSP_DEFAULT_SDIV (DIV_18KHZ >> 1) | 37 | #define PCSP_DEFAULT_SDIV (DIV_18KHZ >> 1) |
37 | #define PCSP_DEFAULT_SRATE (PIT_TICK_RATE / PCSP_DEFAULT_SDIV) | 38 | #define PCSP_DEFAULT_SRATE (PIT_TICK_RATE / PCSP_DEFAULT_SDIV) |
38 | #define PCSP_INDEX_INC() (1 << (PCSP_MAX_TREBLE - chip->treble)) | 39 | #define PCSP_INDEX_INC() (1 << (PCSP_MAX_TREBLE - chip->treble)) |
39 | #define PCSP_RATE() (PIT_TICK_RATE / CUR_DIV()) | 40 | #define PCSP_CALC_RATE(i) (PIT_TICK_RATE / CALC_DIV(i)) |
41 | #define PCSP_RATE() PCSP_CALC_RATE(chip->treble) | ||
40 | #define PCSP_MIN_RATE__1 MAX_DIV/PIT_TICK_RATE | 42 | #define PCSP_MIN_RATE__1 MAX_DIV/PIT_TICK_RATE |
41 | #define PCSP_MAX_RATE__1 MIN_DIV/PIT_TICK_RATE | 43 | #define PCSP_MAX_RATE__1 MIN_DIV/PIT_TICK_RATE |
42 | #define PCSP_MAX_PERIOD_NS (1000000000ULL * PCSP_MIN_RATE__1) | 44 | #define PCSP_MAX_PERIOD_NS (1000000000ULL * PCSP_MIN_RATE__1) |
diff --git a/sound/drivers/pcsp/pcsp_lib.c b/sound/drivers/pcsp/pcsp_lib.c index ac6238e93513..e341f3f83b6a 100644 --- a/sound/drivers/pcsp/pcsp_lib.c +++ b/sound/drivers/pcsp/pcsp_lib.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/moduleparam.h> | 10 | #include <linux/moduleparam.h> |
11 | #include <sound/pcm.h> | 11 | #include <sound/pcm.h> |
12 | #include <linux/interrupt.h> | ||
13 | #include <asm/io.h> | 12 | #include <asm/io.h> |
14 | #include "pcsp.h" | 13 | #include "pcsp.h" |
15 | 14 | ||
@@ -18,36 +17,12 @@ module_param(nforce_wa, bool, 0444); | |||
18 | MODULE_PARM_DESC(nforce_wa, "Apply NForce chipset workaround " | 17 | MODULE_PARM_DESC(nforce_wa, "Apply NForce chipset workaround " |
19 | "(expect bad sound)"); | 18 | "(expect bad sound)"); |
20 | 19 | ||
21 | static void pcsp_start_timer(unsigned long dummy) | 20 | #define DMIX_WANTS_S16 1 |
22 | { | ||
23 | hrtimer_start(&pcsp_chip.timer, ktime_set(0, 0), HRTIMER_MODE_REL); | ||
24 | } | ||
25 | |||
26 | /* | ||
27 | * We need the hrtimer_start as a tasklet to avoid | ||
28 | * the nasty locking problem. :( | ||
29 | * The problem: | ||
30 | * - The timer handler is called with the cpu_base->lock | ||
31 | * already held by hrtimer code. | ||
32 | * - snd_pcm_period_elapsed() takes the | ||
33 | * substream->self_group.lock. | ||
34 | * So far so good. | ||
35 | * But the snd_pcsp_trigger() is called with the | ||
36 | * substream->self_group.lock held, and it calls | ||
37 | * hrtimer_start(), which takes the cpu_base->lock. | ||
38 | * You see the problem. We have the code pathes | ||
39 | * which take two locks in a reverse order. This | ||
40 | * can deadlock and the lock validator complains. | ||
41 | * The only solution I could find was to move the | ||
42 | * hrtimer_start() into a tasklet. -stsp | ||
43 | */ | ||
44 | static DECLARE_TASKLET(pcsp_start_timer_tasklet, pcsp_start_timer, 0); | ||
45 | 21 | ||
46 | enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) | 22 | enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) |
47 | { | 23 | { |
48 | unsigned long flags; | ||
49 | unsigned char timer_cnt, val; | 24 | unsigned char timer_cnt, val; |
50 | int periods_elapsed; | 25 | int fmt_size, periods_elapsed; |
51 | u64 ns; | 26 | u64 ns; |
52 | size_t period_bytes, buffer_bytes; | 27 | size_t period_bytes, buffer_bytes; |
53 | struct snd_pcm_substream *substream; | 28 | struct snd_pcm_substream *substream; |
@@ -64,9 +39,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) | |||
64 | return HRTIMER_RESTART; | 39 | return HRTIMER_RESTART; |
65 | } | 40 | } |
66 | 41 | ||
67 | /* hrtimer calls us from both hardirq and softirq contexts, | 42 | spin_lock_irq(&chip->substream_lock); |
68 | * so irqsave :( */ | ||
69 | spin_lock_irqsave(&chip->substream_lock, flags); | ||
70 | /* Takashi Iwai says regarding this extra lock: | 43 | /* Takashi Iwai says regarding this extra lock: |
71 | 44 | ||
72 | If the irq handler handles some data on the DMA buffer, it should | 45 | If the irq handler handles some data on the DMA buffer, it should |
@@ -92,8 +65,11 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) | |||
92 | goto exit_nr_unlock2; | 65 | goto exit_nr_unlock2; |
93 | 66 | ||
94 | runtime = substream->runtime; | 67 | runtime = substream->runtime; |
95 | /* assume it is u8 mono */ | 68 | fmt_size = snd_pcm_format_physical_width(runtime->format) >> 3; |
96 | val = runtime->dma_area[chip->playback_ptr]; | 69 | /* assume it is mono! */ |
70 | val = runtime->dma_area[chip->playback_ptr + fmt_size - 1]; | ||
71 | if (snd_pcm_format_signed(runtime->format)) | ||
72 | val ^= 0x80; | ||
97 | timer_cnt = val * CUR_DIV() / 256; | 73 | timer_cnt = val * CUR_DIV() / 256; |
98 | 74 | ||
99 | if (timer_cnt && chip->enable) { | 75 | if (timer_cnt && chip->enable) { |
@@ -111,12 +87,14 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) | |||
111 | 87 | ||
112 | period_bytes = snd_pcm_lib_period_bytes(substream); | 88 | period_bytes = snd_pcm_lib_period_bytes(substream); |
113 | buffer_bytes = snd_pcm_lib_buffer_bytes(substream); | 89 | buffer_bytes = snd_pcm_lib_buffer_bytes(substream); |
114 | chip->playback_ptr += PCSP_INDEX_INC(); | 90 | chip->playback_ptr += PCSP_INDEX_INC() * fmt_size; |
115 | periods_elapsed = chip->playback_ptr - chip->period_ptr; | 91 | periods_elapsed = chip->playback_ptr - chip->period_ptr; |
116 | if (periods_elapsed < 0) { | 92 | if (periods_elapsed < 0) { |
117 | printk(KERN_WARNING "PCSP: playback_ptr inconsistent " | 93 | #if PCSP_DEBUG |
94 | printk(KERN_INFO "PCSP: buffer_bytes mod period_bytes != 0 ? " | ||
118 | "(%zi %zi %zi)\n", | 95 | "(%zi %zi %zi)\n", |
119 | chip->playback_ptr, period_bytes, buffer_bytes); | 96 | chip->playback_ptr, period_bytes, buffer_bytes); |
97 | #endif | ||
120 | periods_elapsed += buffer_bytes; | 98 | periods_elapsed += buffer_bytes; |
121 | } | 99 | } |
122 | periods_elapsed /= period_bytes; | 100 | periods_elapsed /= period_bytes; |
@@ -132,7 +110,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) | |||
132 | chip->period_ptr %= buffer_bytes; | 110 | chip->period_ptr %= buffer_bytes; |
133 | } | 111 | } |
134 | 112 | ||
135 | spin_unlock_irqrestore(&chip->substream_lock, flags); | 113 | spin_unlock_irq(&chip->substream_lock); |
136 | 114 | ||
137 | if (!atomic_read(&chip->timer_active)) | 115 | if (!atomic_read(&chip->timer_active)) |
138 | return HRTIMER_NORESTART; | 116 | return HRTIMER_NORESTART; |
@@ -146,7 +124,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) | |||
146 | exit_nr_unlock2: | 124 | exit_nr_unlock2: |
147 | snd_pcm_stream_unlock(substream); | 125 | snd_pcm_stream_unlock(substream); |
148 | exit_nr_unlock1: | 126 | exit_nr_unlock1: |
149 | spin_unlock_irqrestore(&chip->substream_lock, flags); | 127 | spin_unlock_irq(&chip->substream_lock); |
150 | return HRTIMER_NORESTART; | 128 | return HRTIMER_NORESTART; |
151 | } | 129 | } |
152 | 130 | ||
@@ -167,7 +145,7 @@ static void pcsp_start_playing(struct snd_pcsp *chip) | |||
167 | atomic_set(&chip->timer_active, 1); | 145 | atomic_set(&chip->timer_active, 1); |
168 | chip->thalf = 0; | 146 | chip->thalf = 0; |
169 | 147 | ||
170 | tasklet_schedule(&pcsp_start_timer_tasklet); | 148 | hrtimer_start(&pcsp_chip.timer, ktime_set(0, 0), HRTIMER_MODE_REL); |
171 | } | 149 | } |
172 | 150 | ||
173 | static void pcsp_stop_playing(struct snd_pcsp *chip) | 151 | static void pcsp_stop_playing(struct snd_pcsp *chip) |
@@ -270,7 +248,11 @@ static struct snd_pcm_hardware snd_pcsp_playback = { | |||
270 | .info = (SNDRV_PCM_INFO_INTERLEAVED | | 248 | .info = (SNDRV_PCM_INFO_INTERLEAVED | |
271 | SNDRV_PCM_INFO_HALF_DUPLEX | | 249 | SNDRV_PCM_INFO_HALF_DUPLEX | |
272 | SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), | 250 | SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), |
273 | .formats = SNDRV_PCM_FMTBIT_U8, | 251 | .formats = (SNDRV_PCM_FMTBIT_U8 |
252 | #if DMIX_WANTS_S16 | ||
253 | | SNDRV_PCM_FMTBIT_S16_LE | ||
254 | #endif | ||
255 | ), | ||
274 | .rates = SNDRV_PCM_RATE_KNOT, | 256 | .rates = SNDRV_PCM_RATE_KNOT, |
275 | .rate_min = PCSP_DEFAULT_SRATE, | 257 | .rate_min = PCSP_DEFAULT_SRATE, |
276 | .rate_max = PCSP_DEFAULT_SRATE, | 258 | .rate_max = PCSP_DEFAULT_SRATE, |
diff --git a/sound/drivers/pcsp/pcsp_mixer.c b/sound/drivers/pcsp/pcsp_mixer.c index 64a695fef74e..caeb0f57fcca 100644 --- a/sound/drivers/pcsp/pcsp_mixer.c +++ b/sound/drivers/pcsp/pcsp_mixer.c | |||
@@ -50,7 +50,8 @@ static int pcsp_treble_info(struct snd_kcontrol *kcontrol, | |||
50 | uinfo->value.enumerated.items = chip->max_treble + 1; | 50 | uinfo->value.enumerated.items = chip->max_treble + 1; |
51 | if (uinfo->value.enumerated.item > chip->max_treble) | 51 | if (uinfo->value.enumerated.item > chip->max_treble) |
52 | uinfo->value.enumerated.item = chip->max_treble; | 52 | uinfo->value.enumerated.item = chip->max_treble; |
53 | sprintf(uinfo->value.enumerated.name, "%d", PCSP_RATE()); | 53 | sprintf(uinfo->value.enumerated.name, "%d", |
54 | PCSP_CALC_RATE(uinfo->value.enumerated.item)); | ||
54 | return 0; | 55 | return 0; |
55 | } | 56 | } |
56 | 57 | ||
diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig index 857008bb7167..3be2dc1025b5 100644 --- a/sound/oss/Kconfig +++ b/sound/oss/Kconfig | |||
@@ -79,7 +79,7 @@ config SOUND_TRIDENT | |||
79 | 79 | ||
80 | config SOUND_MSNDCLAS | 80 | config SOUND_MSNDCLAS |
81 | tristate "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" | 81 | tristate "Support for Turtle Beach MultiSound Classic, Tahiti, Monterey" |
82 | depends on SOUND_PRIME && (m || !STANDALONE) | 82 | depends on SOUND_PRIME && (m || !STANDALONE) && ISA |
83 | help | 83 | help |
84 | Say M here if you have a Turtle Beach MultiSound Classic, Tahiti or | 84 | Say M here if you have a Turtle Beach MultiSound Classic, Tahiti or |
85 | Monterey (not for the Pinnacle or Fiji). | 85 | Monterey (not for the Pinnacle or Fiji). |
@@ -143,7 +143,7 @@ config MSNDCLAS_IO | |||
143 | 143 | ||
144 | config SOUND_MSNDPIN | 144 | config SOUND_MSNDPIN |
145 | tristate "Support for Turtle Beach MultiSound Pinnacle, Fiji" | 145 | tristate "Support for Turtle Beach MultiSound Pinnacle, Fiji" |
146 | depends on SOUND_PRIME && (m || !STANDALONE) | 146 | depends on SOUND_PRIME && (m || !STANDALONE) && ISA |
147 | help | 147 | help |
148 | Say M here if you have a Turtle Beach MultiSound Pinnacle or Fiji. | 148 | Say M here if you have a Turtle Beach MultiSound Pinnacle or Fiji. |
149 | See <file:Documentation/sound/oss/MultiSound> for important information | 149 | See <file:Documentation/sound/oss/MultiSound> for important information |
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index e0a605adde42..ff1b922c610b 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
@@ -2858,6 +2858,7 @@ static const char *ad1988_models[AD1988_MODEL_LAST] = { | |||
2858 | static struct snd_pci_quirk ad1988_cfg_tbl[] = { | 2858 | static struct snd_pci_quirk ad1988_cfg_tbl[] = { |
2859 | SND_PCI_QUIRK(0x1043, 0x81ec, "Asus P5B-DLX", AD1988_6STACK_DIG), | 2859 | SND_PCI_QUIRK(0x1043, 0x81ec, "Asus P5B-DLX", AD1988_6STACK_DIG), |
2860 | SND_PCI_QUIRK(0x1043, 0x81f6, "Asus M2N-SLI", AD1988_6STACK_DIG), | 2860 | SND_PCI_QUIRK(0x1043, 0x81f6, "Asus M2N-SLI", AD1988_6STACK_DIG), |
2861 | SND_PCI_QUIRK(0x1043, 0x8277, "Asus P5K-E/WIFI-AP", AD1988_6STACK_DIG), | ||
2861 | {} | 2862 | {} |
2862 | }; | 2863 | }; |
2863 | 2864 | ||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6d4df45e81e0..8f31247c52bd 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -853,6 +853,7 @@ do_sku: | |||
853 | case 0x10ec0269: | 853 | case 0x10ec0269: |
854 | case 0x10ec0862: | 854 | case 0x10ec0862: |
855 | case 0x10ec0662: | 855 | case 0x10ec0662: |
856 | case 0x10ec0889: | ||
856 | snd_hda_codec_write(codec, 0x14, 0, | 857 | snd_hda_codec_write(codec, 0x14, 0, |
857 | AC_VERB_SET_EAPD_BTLENABLE, 2); | 858 | AC_VERB_SET_EAPD_BTLENABLE, 2); |
858 | snd_hda_codec_write(codec, 0x15, 0, | 859 | snd_hda_codec_write(codec, 0x15, 0, |
@@ -877,6 +878,7 @@ do_sku: | |||
877 | case 0x10ec0883: | 878 | case 0x10ec0883: |
878 | case 0x10ec0885: | 879 | case 0x10ec0885: |
879 | case 0x10ec0888: | 880 | case 0x10ec0888: |
881 | case 0x10ec0889: | ||
880 | snd_hda_codec_write(codec, 0x20, 0, | 882 | snd_hda_codec_write(codec, 0x20, 0, |
881 | AC_VERB_SET_COEF_INDEX, 7); | 883 | AC_VERB_SET_COEF_INDEX, 7); |
882 | tmp = snd_hda_codec_read(codec, 0x20, 0, | 884 | tmp = snd_hda_codec_read(codec, 0x20, 0, |
@@ -2981,7 +2983,7 @@ static struct snd_pci_quirk alc880_cfg_tbl[] = { | |||
2981 | /* SND_PCI_QUIRK(0x1043, 0x1964, "ASUS", ALC880_ASUS_DIG), */ | 2983 | /* SND_PCI_QUIRK(0x1043, 0x1964, "ASUS", ALC880_ASUS_DIG), */ |
2982 | SND_PCI_QUIRK(0x1043, 0x1973, "ASUS", ALC880_ASUS_DIG), | 2984 | SND_PCI_QUIRK(0x1043, 0x1973, "ASUS", ALC880_ASUS_DIG), |
2983 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS", ALC880_ASUS_DIG), | 2985 | SND_PCI_QUIRK(0x1043, 0x19b3, "ASUS", ALC880_ASUS_DIG), |
2984 | SND_PCI_QUIRK(0x1043, 0x814e, "ASUS", ALC880_ASUS), | 2986 | SND_PCI_QUIRK(0x1043, 0x814e, "ASUS P5GD1 w/SPDIF", ALC880_6ST_DIG), |
2985 | SND_PCI_QUIRK(0x1043, 0x8181, "ASUS P4GPL", ALC880_ASUS_DIG), | 2987 | SND_PCI_QUIRK(0x1043, 0x8181, "ASUS P4GPL", ALC880_ASUS_DIG), |
2986 | SND_PCI_QUIRK(0x1043, 0x8196, "ASUS P5GD1", ALC880_6ST), | 2988 | SND_PCI_QUIRK(0x1043, 0x8196, "ASUS P5GD1", ALC880_6ST), |
2987 | SND_PCI_QUIRK(0x1043, 0x81b4, "ASUS", ALC880_6ST), | 2989 | SND_PCI_QUIRK(0x1043, 0x81b4, "ASUS", ALC880_6ST), |
@@ -7743,6 +7745,7 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = { | |||
7743 | SND_PCI_QUIRK(0x103c, 0x2a60, "HP Lucknow", ALC888_3ST_HP), | 7745 | SND_PCI_QUIRK(0x103c, 0x2a60, "HP Lucknow", ALC888_3ST_HP), |
7744 | SND_PCI_QUIRK(0x103c, 0x2a61, "HP Nettle", ALC883_6ST_DIG), | 7746 | SND_PCI_QUIRK(0x103c, 0x2a61, "HP Nettle", ALC883_6ST_DIG), |
7745 | SND_PCI_QUIRK(0x1043, 0x8249, "Asus M2A-VM HDMI", ALC883_3ST_6ch_DIG), | 7747 | SND_PCI_QUIRK(0x1043, 0x8249, "Asus M2A-VM HDMI", ALC883_3ST_6ch_DIG), |
7748 | SND_PCI_QUIRK(0x105b, 0x0ce8, "Foxconn P35AX-S", ALC883_6ST_DIG), | ||
7746 | SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), | 7749 | SND_PCI_QUIRK(0x105b, 0x6668, "Foxconn", ALC883_6ST_DIG), |
7747 | SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), | 7750 | SND_PCI_QUIRK(0x1071, 0x8253, "Mitac 8252d", ALC883_MITAC), |
7748 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), | 7751 | SND_PCI_QUIRK(0x1071, 0x8258, "Evesham Voyaeger", ALC883_LAPTOP_EAPD), |
@@ -8757,35 +8760,39 @@ static struct hda_input_mux alc262_HP_D7000_capture_source = { | |||
8757 | }, | 8760 | }, |
8758 | }; | 8761 | }; |
8759 | 8762 | ||
8760 | /* mute/unmute internal speaker according to the hp jack and mute state */ | 8763 | /* mute/unmute internal speaker according to the hp jacks and mute state */ |
8761 | static void alc262_fujitsu_automute(struct hda_codec *codec, int force) | 8764 | static void alc262_fujitsu_automute(struct hda_codec *codec, int force) |
8762 | { | 8765 | { |
8763 | struct alc_spec *spec = codec->spec; | 8766 | struct alc_spec *spec = codec->spec; |
8764 | unsigned int mute; | 8767 | unsigned int mute; |
8765 | 8768 | ||
8766 | if (force || !spec->sense_updated) { | 8769 | if (force || !spec->sense_updated) { |
8767 | unsigned int present_int_hp, present_dock_hp; | 8770 | unsigned int present; |
8768 | /* need to execute and sync at first */ | 8771 | /* need to execute and sync at first */ |
8769 | snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0); | 8772 | snd_hda_codec_read(codec, 0x14, 0, AC_VERB_SET_PIN_SENSE, 0); |
8770 | present_int_hp = snd_hda_codec_read(codec, 0x14, 0, | 8773 | /* check laptop HP jack */ |
8771 | AC_VERB_GET_PIN_SENSE, 0); | 8774 | present = snd_hda_codec_read(codec, 0x14, 0, |
8772 | snd_hda_codec_read(codec, 0x1B, 0, AC_VERB_SET_PIN_SENSE, 0); | 8775 | AC_VERB_GET_PIN_SENSE, 0); |
8773 | present_dock_hp = snd_hda_codec_read(codec, 0x1b, 0, | 8776 | /* need to execute and sync at first */ |
8774 | AC_VERB_GET_PIN_SENSE, 0); | 8777 | snd_hda_codec_read(codec, 0x1b, 0, AC_VERB_SET_PIN_SENSE, 0); |
8775 | spec->jack_present = (present_int_hp & 0x80000000) != 0; | 8778 | /* check docking HP jack */ |
8776 | spec->jack_present |= (present_dock_hp & 0x80000000) != 0; | 8779 | present |= snd_hda_codec_read(codec, 0x1b, 0, |
8780 | AC_VERB_GET_PIN_SENSE, 0); | ||
8781 | if (present & AC_PINSENSE_PRESENCE) | ||
8782 | spec->jack_present = 1; | ||
8783 | else | ||
8784 | spec->jack_present = 0; | ||
8777 | spec->sense_updated = 1; | 8785 | spec->sense_updated = 1; |
8778 | } | 8786 | } |
8779 | if (spec->jack_present) { | 8787 | /* unmute internal speaker only if both HPs are unplugged and |
8780 | /* mute internal speaker */ | 8788 | * master switch is on |
8781 | snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, | 8789 | */ |
8782 | HDA_AMP_MUTE, HDA_AMP_MUTE); | 8790 | if (spec->jack_present) |
8783 | } else { | 8791 | mute = HDA_AMP_MUTE; |
8784 | /* unmute internal speaker if necessary */ | 8792 | else |
8785 | mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0); | 8793 | mute = snd_hda_codec_amp_read(codec, 0x14, 0, HDA_OUTPUT, 0); |
8786 | snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, | 8794 | snd_hda_codec_amp_stereo(codec, 0x15, HDA_OUTPUT, 0, |
8787 | HDA_AMP_MUTE, mute); | 8795 | HDA_AMP_MUTE, mute); |
8788 | } | ||
8789 | } | 8796 | } |
8790 | 8797 | ||
8791 | /* unsolicited event for HP jack sensing */ | 8798 | /* unsolicited event for HP jack sensing */ |
@@ -8797,6 +8804,11 @@ static void alc262_fujitsu_unsol_event(struct hda_codec *codec, | |||
8797 | alc262_fujitsu_automute(codec, 1); | 8804 | alc262_fujitsu_automute(codec, 1); |
8798 | } | 8805 | } |
8799 | 8806 | ||
8807 | static void alc262_fujitsu_init_hook(struct hda_codec *codec) | ||
8808 | { | ||
8809 | alc262_fujitsu_automute(codec, 1); | ||
8810 | } | ||
8811 | |||
8800 | /* bind volumes of both NID 0x0c and 0x0d */ | 8812 | /* bind volumes of both NID 0x0c and 0x0d */ |
8801 | static struct hda_bind_ctls alc262_fujitsu_bind_master_vol = { | 8813 | static struct hda_bind_ctls alc262_fujitsu_bind_master_vol = { |
8802 | .ops = &snd_hda_bind_vol, | 8814 | .ops = &snd_hda_bind_vol, |
@@ -9570,6 +9582,7 @@ static struct alc_config_preset alc262_presets[] = { | |||
9570 | .channel_mode = alc262_modes, | 9582 | .channel_mode = alc262_modes, |
9571 | .input_mux = &alc262_fujitsu_capture_source, | 9583 | .input_mux = &alc262_fujitsu_capture_source, |
9572 | .unsol_event = alc262_fujitsu_unsol_event, | 9584 | .unsol_event = alc262_fujitsu_unsol_event, |
9585 | .init_hook = alc262_fujitsu_init_hook, | ||
9573 | }, | 9586 | }, |
9574 | [ALC262_HP_BPC] = { | 9587 | [ALC262_HP_BPC] = { |
9575 | .mixers = { alc262_HP_BPC_mixer }, | 9588 | .mixers = { alc262_HP_BPC_mixer }, |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 393f7fd2b1be..a4f44a00bae8 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -840,7 +840,7 @@ static struct snd_kcontrol_new stac92hd71bxx_mixer[] = { | |||
840 | static struct snd_kcontrol_new stac925x_mixer[] = { | 840 | static struct snd_kcontrol_new stac925x_mixer[] = { |
841 | STAC_INPUT_SOURCE(1), | 841 | STAC_INPUT_SOURCE(1), |
842 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), | 842 | HDA_CODEC_VOLUME("Capture Volume", 0x09, 0, HDA_OUTPUT), |
843 | HDA_CODEC_MUTE("Capture Switch", 0x09, 0, HDA_OUTPUT), | 843 | HDA_CODEC_MUTE("Capture Switch", 0x14, 0, HDA_OUTPUT), |
844 | HDA_CODEC_VOLUME("Capture Mux Volume", 0x0f, 0, HDA_OUTPUT), | 844 | HDA_CODEC_VOLUME("Capture Mux Volume", 0x0f, 0, HDA_OUTPUT), |
845 | { } /* end */ | 845 | { } /* end */ |
846 | }; | 846 | }; |
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c index 52b1d81a26f7..e7e43524f8c7 100644 --- a/sound/pci/hda/patch_via.c +++ b/sound/pci/hda/patch_via.c | |||
@@ -447,6 +447,23 @@ static struct hda_pcm_stream vt1708_pcm_analog_playback = { | |||
447 | }, | 447 | }, |
448 | }; | 448 | }; |
449 | 449 | ||
450 | static struct hda_pcm_stream vt1708_pcm_analog_s16_playback = { | ||
451 | .substreams = 1, | ||
452 | .channels_min = 2, | ||
453 | .channels_max = 8, | ||
454 | .nid = 0x10, /* NID to query formats and rates */ | ||
455 | /* We got noisy outputs on the right channel on VT1708 when | ||
456 | * 24bit samples are used. Until any workaround is found, | ||
457 | * disable the 24bit format, so far. | ||
458 | */ | ||
459 | .formats = SNDRV_PCM_FMTBIT_S16_LE, | ||
460 | .ops = { | ||
461 | .open = via_playback_pcm_open, | ||
462 | .prepare = via_playback_pcm_prepare, | ||
463 | .cleanup = via_playback_pcm_cleanup | ||
464 | }, | ||
465 | }; | ||
466 | |||
450 | static struct hda_pcm_stream vt1708_pcm_analog_capture = { | 467 | static struct hda_pcm_stream vt1708_pcm_analog_capture = { |
451 | .substreams = 2, | 468 | .substreams = 2, |
452 | .channels_min = 2, | 469 | .channels_min = 2, |
@@ -899,6 +916,9 @@ static int patch_vt1708(struct hda_codec *codec) | |||
899 | 916 | ||
900 | spec->stream_name_analog = "VT1708 Analog"; | 917 | spec->stream_name_analog = "VT1708 Analog"; |
901 | spec->stream_analog_playback = &vt1708_pcm_analog_playback; | 918 | spec->stream_analog_playback = &vt1708_pcm_analog_playback; |
919 | /* disable 32bit format on VT1708 */ | ||
920 | if (codec->vendor_id == 0x11061708) | ||
921 | spec->stream_analog_playback = &vt1708_pcm_analog_s16_playback; | ||
902 | spec->stream_analog_capture = &vt1708_pcm_analog_capture; | 922 | spec->stream_analog_capture = &vt1708_pcm_analog_capture; |
903 | 923 | ||
904 | spec->stream_name_digital = "VT1708 Digital"; | 924 | spec->stream_name_digital = "VT1708 Digital"; |
diff --git a/sound/usb/caiaq/caiaq-device.c b/sound/usb/caiaq/caiaq-device.c index e97d8b2ac16a..a972f77bd785 100644 --- a/sound/usb/caiaq/caiaq-device.c +++ b/sound/usb/caiaq/caiaq-device.c | |||
@@ -351,8 +351,8 @@ static struct snd_card* create_card(struct usb_device* usb_dev) | |||
351 | dev = caiaqdev(card); | 351 | dev = caiaqdev(card); |
352 | dev->chip.dev = usb_dev; | 352 | dev->chip.dev = usb_dev; |
353 | dev->chip.card = card; | 353 | dev->chip.card = card; |
354 | dev->chip.usb_id = USB_ID(usb_dev->descriptor.idVendor, | 354 | dev->chip.usb_id = USB_ID(le16_to_cpu(usb_dev->descriptor.idVendor), |
355 | usb_dev->descriptor.idProduct); | 355 | le16_to_cpu(usb_dev->descriptor.idProduct)); |
356 | spin_lock_init(&dev->spinlock); | 356 | spin_lock_init(&dev->spinlock); |
357 | snd_card_set_dev(card, &usb_dev->dev); | 357 | snd_card_set_dev(card, &usb_dev->dev); |
358 | 358 | ||
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index f7ba099049ea..2d29e260da3d 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
@@ -758,25 +758,26 @@ void mark_page_dirty(struct kvm *kvm, gfn_t gfn) | |||
758 | */ | 758 | */ |
759 | void kvm_vcpu_block(struct kvm_vcpu *vcpu) | 759 | void kvm_vcpu_block(struct kvm_vcpu *vcpu) |
760 | { | 760 | { |
761 | DECLARE_WAITQUEUE(wait, current); | 761 | DEFINE_WAIT(wait); |
762 | 762 | ||
763 | add_wait_queue(&vcpu->wq, &wait); | 763 | for (;;) { |
764 | 764 | prepare_to_wait(&vcpu->wq, &wait, TASK_INTERRUPTIBLE); | |
765 | /* | 765 | |
766 | * We will block until either an interrupt or a signal wakes us up | 766 | if (kvm_cpu_has_interrupt(vcpu)) |
767 | */ | 767 | break; |
768 | while (!kvm_cpu_has_interrupt(vcpu) | 768 | if (kvm_cpu_has_pending_timer(vcpu)) |
769 | && !kvm_cpu_has_pending_timer(vcpu) | 769 | break; |
770 | && !signal_pending(current) | 770 | if (kvm_arch_vcpu_runnable(vcpu)) |
771 | && !kvm_arch_vcpu_runnable(vcpu)) { | 771 | break; |
772 | set_current_state(TASK_INTERRUPTIBLE); | 772 | if (signal_pending(current)) |
773 | break; | ||
774 | |||
773 | vcpu_put(vcpu); | 775 | vcpu_put(vcpu); |
774 | schedule(); | 776 | schedule(); |
775 | vcpu_load(vcpu); | 777 | vcpu_load(vcpu); |
776 | } | 778 | } |
777 | 779 | ||
778 | __set_current_state(TASK_RUNNING); | 780 | finish_wait(&vcpu->wq, &wait); |
779 | remove_wait_queue(&vcpu->wq, &wait); | ||
780 | } | 781 | } |
781 | 782 | ||
782 | void kvm_resched(struct kvm_vcpu *vcpu) | 783 | void kvm_resched(struct kvm_vcpu *vcpu) |