diff options
265 files changed, 2179 insertions, 3189 deletions
diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index 042073f656e5..fc8e7c7d182f 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX | |||
@@ -225,8 +225,6 @@ kprobes.txt | |||
225 | - documents the kernel probes debugging feature. | 225 | - documents the kernel probes debugging feature. |
226 | kref.txt | 226 | kref.txt |
227 | - docs on adding reference counters (krefs) to kernel objects. | 227 | - docs on adding reference counters (krefs) to kernel objects. |
228 | laptop-mode.txt | ||
229 | - how to conserve battery power using laptop-mode. | ||
230 | laptops/ | 228 | laptops/ |
231 | - directory with laptop related info and laptop driver documentation. | 229 | - directory with laptop related info and laptop driver documentation. |
232 | ldm.txt | 230 | ldm.txt |
@@ -301,12 +299,8 @@ pcmcia/ | |||
301 | - info on the Linux PCMCIA driver. | 299 | - info on the Linux PCMCIA driver. |
302 | pi-futex.txt | 300 | pi-futex.txt |
303 | - documentation on lightweight PI-futexes. | 301 | - documentation on lightweight PI-futexes. |
304 | pm.txt | ||
305 | - info on Linux power management support. | ||
306 | pnp.txt | 302 | pnp.txt |
307 | - Linux Plug and Play documentation. | 303 | - Linux Plug and Play documentation. |
308 | power_supply_class.txt | ||
309 | - Tells userspace about battery, UPS, AC or DC power supply properties | ||
310 | power/ | 304 | power/ |
311 | - directory with info on Linux PCI power management. | 305 | - directory with info on Linux PCI power management. |
312 | powerpc/ | 306 | powerpc/ |
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 5681e2fa1496..518ebe609e2b 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt | |||
@@ -1506,13 +1506,13 @@ laptop_mode | |||
1506 | ----------- | 1506 | ----------- |
1507 | 1507 | ||
1508 | laptop_mode is a knob that controls "laptop mode". All the things that are | 1508 | laptop_mode is a knob that controls "laptop mode". All the things that are |
1509 | controlled by this knob are discussed in Documentation/laptop-mode.txt. | 1509 | controlled by this knob are discussed in Documentation/laptops/laptop-mode.txt. |
1510 | 1510 | ||
1511 | block_dump | 1511 | block_dump |
1512 | ---------- | 1512 | ---------- |
1513 | 1513 | ||
1514 | block_dump enables block I/O debugging when set to a nonzero value. More | 1514 | block_dump enables block I/O debugging when set to a nonzero value. More |
1515 | information on block I/O debugging is in Documentation/laptop-mode.txt. | 1515 | information on block I/O debugging is in Documentation/laptops/laptop-mode.txt. |
1516 | 1516 | ||
1517 | swap_token_timeout | 1517 | swap_token_timeout |
1518 | ------------------ | 1518 | ------------------ |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 533e67febf81..49318b99e581 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -138,7 +138,7 @@ and is between 256 and 4096 characters. It is defined in the file | |||
138 | strict -- Be less tolerant of platforms that are not | 138 | strict -- Be less tolerant of platforms that are not |
139 | strictly ACPI specification compliant. | 139 | strictly ACPI specification compliant. |
140 | 140 | ||
141 | See also Documentation/pm.txt, pci=noacpi | 141 | See also Documentation/power/pm.txt, pci=noacpi |
142 | 142 | ||
143 | acpi_apic_instance= [ACPI, IOAPIC] | 143 | acpi_apic_instance= [ACPI, IOAPIC] |
144 | Format: <int> | 144 | Format: <int> |
diff --git a/Documentation/laptops/00-INDEX b/Documentation/laptops/00-INDEX index 729c2c062e10..ee5692b26dd4 100644 --- a/Documentation/laptops/00-INDEX +++ b/Documentation/laptops/00-INDEX | |||
@@ -2,6 +2,8 @@ | |||
2 | - This file | 2 | - This file |
3 | acer-wmi.txt | 3 | acer-wmi.txt |
4 | - information on the Acer Laptop WMI Extras driver. | 4 | - information on the Acer Laptop WMI Extras driver. |
5 | laptop-mode.txt | ||
6 | - how to conserve battery power using laptop-mode. | ||
5 | sony-laptop.txt | 7 | sony-laptop.txt |
6 | - Sony Notebook Control Driver (SNC) Readme. | 8 | - Sony Notebook Control Driver (SNC) Readme. |
7 | sonypi.txt | 9 | sonypi.txt |
diff --git a/Documentation/laptops/acer-wmi.txt b/Documentation/laptops/acer-wmi.txt index b06696329cff..23df051dbf69 100644 --- a/Documentation/laptops/acer-wmi.txt +++ b/Documentation/laptops/acer-wmi.txt | |||
@@ -48,7 +48,7 @@ DSDT. | |||
48 | 48 | ||
49 | To send me the DSDT, as root/sudo: | 49 | To send me the DSDT, as root/sudo: |
50 | 50 | ||
51 | cat /sys/firmware/acpi/DSDT > dsdt | 51 | cat /sys/firmware/acpi/tables/DSDT > dsdt |
52 | 52 | ||
53 | And send me the resulting 'dsdt' file. | 53 | And send me the resulting 'dsdt' file. |
54 | 54 | ||
@@ -169,7 +169,7 @@ can be added to acer-wmi. | |||
169 | 169 | ||
170 | The LED is exposed through the LED subsystem, and can be found in: | 170 | The LED is exposed through the LED subsystem, and can be found in: |
171 | 171 | ||
172 | /sys/devices/platform/acer-wmi/leds/acer-mail:green/ | 172 | /sys/devices/platform/acer-wmi/leds/acer-wmi::mail/ |
173 | 173 | ||
174 | The mail LED is autodetected, so if you don't have one, the LED device won't | 174 | The mail LED is autodetected, so if you don't have one, the LED device won't |
175 | be registered. | 175 | be registered. |
diff --git a/Documentation/laptop-mode.txt b/Documentation/laptops/laptop-mode.txt index eeedee11c8c2..eeedee11c8c2 100644 --- a/Documentation/laptop-mode.txt +++ b/Documentation/laptops/laptop-mode.txt | |||
diff --git a/Documentation/power/00-INDEX b/Documentation/power/00-INDEX index 8db4e41a052d..a55d7f1c836d 100644 --- a/Documentation/power/00-INDEX +++ b/Documentation/power/00-INDEX | |||
@@ -14,6 +14,12 @@ notifiers.txt | |||
14 | - Registering suspend notifiers in device drivers | 14 | - Registering suspend notifiers in device drivers |
15 | pci.txt | 15 | pci.txt |
16 | - How the PCI Subsystem Does Power Management | 16 | - How the PCI Subsystem Does Power Management |
17 | pm.txt | ||
18 | - info on Linux power management support. | ||
19 | pm_qos_interface.txt | ||
20 | - info on Linux PM Quality of Service interface | ||
21 | power_supply_class.txt | ||
22 | - Tells userspace about battery, UPS, AC or DC power supply properties | ||
17 | s2ram.txt | 23 | s2ram.txt |
18 | - How to get suspend to ram working (and debug it when it isn't) | 24 | - How to get suspend to ram working (and debug it when it isn't) |
19 | states.txt | 25 | states.txt |
diff --git a/Documentation/pm.txt b/Documentation/power/pm.txt index da8589a0e07d..be841507e43f 100644 --- a/Documentation/pm.txt +++ b/Documentation/power/pm.txt | |||
@@ -108,7 +108,7 @@ void pm_unregister_all(pm_callback cback); | |||
108 | * EINVAL if the request is not supported | 108 | * EINVAL if the request is not supported |
109 | * EBUSY if the device is now busy and cannot handle the request | 109 | * EBUSY if the device is now busy and cannot handle the request |
110 | * ENOMEM if the device was unable to handle the request due to memory | 110 | * ENOMEM if the device was unable to handle the request due to memory |
111 | * | 111 | * |
112 | * Details: The device request callback will be called before the | 112 | * Details: The device request callback will be called before the |
113 | * device/system enters a suspend state (ACPI D1-D3) or | 113 | * device/system enters a suspend state (ACPI D1-D3) or |
114 | * or after the device/system resumes from suspend (ACPI D0). | 114 | * or after the device/system resumes from suspend (ACPI D0). |
diff --git a/Documentation/pm_qos_interface.txt b/Documentation/power/pm_qos_interface.txt index 49adb1a33514..49adb1a33514 100644 --- a/Documentation/pm_qos_interface.txt +++ b/Documentation/power/pm_qos_interface.txt | |||
diff --git a/Documentation/power_supply_class.txt b/Documentation/power/power_supply_class.txt index a8686e5a6857..a8686e5a6857 100644 --- a/Documentation/power_supply_class.txt +++ b/Documentation/power/power_supply_class.txt | |||
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt index ba9c2da5a8c2..d9f28be75403 100644 --- a/Documentation/thermal/sysfs-api.txt +++ b/Documentation/thermal/sysfs-api.txt | |||
@@ -143,10 +143,10 @@ type Strings which represent the thermal zone type. | |||
143 | This is given by thermal zone driver as part of registration. | 143 | This is given by thermal zone driver as part of registration. |
144 | Eg: "ACPI thermal zone" indicates it's a ACPI thermal device | 144 | Eg: "ACPI thermal zone" indicates it's a ACPI thermal device |
145 | RO | 145 | RO |
146 | Optional | 146 | Required |
147 | 147 | ||
148 | temp Current temperature as reported by thermal zone (sensor) | 148 | temp Current temperature as reported by thermal zone (sensor) |
149 | Unit: degree Celsius | 149 | Unit: millidegree Celsius |
150 | RO | 150 | RO |
151 | Required | 151 | Required |
152 | 152 | ||
@@ -163,7 +163,7 @@ mode One of the predefined values in [kernel, user] | |||
163 | charge of the thermal management. | 163 | charge of the thermal management. |
164 | 164 | ||
165 | trip_point_[0-*]_temp The temperature above which trip point will be fired | 165 | trip_point_[0-*]_temp The temperature above which trip point will be fired |
166 | Unit: degree Celsius | 166 | Unit: millidegree Celsius |
167 | RO | 167 | RO |
168 | Optional | 168 | Optional |
169 | 169 | ||
@@ -193,7 +193,7 @@ type String which represents the type of device | |||
193 | eg. For memory controller device on intel_menlow platform: | 193 | eg. For memory controller device on intel_menlow platform: |
194 | this should be "Memory controller" | 194 | this should be "Memory controller" |
195 | RO | 195 | RO |
196 | Optional | 196 | Required |
197 | 197 | ||
198 | max_state The maximum permissible cooling state of this cooling device. | 198 | max_state The maximum permissible cooling state of this cooling device. |
199 | RO | 199 | RO |
@@ -219,16 +219,16 @@ the sys I/F structure will be built like this: | |||
219 | 219 | ||
220 | |thermal_zone1: | 220 | |thermal_zone1: |
221 | |-----type: ACPI thermal zone | 221 | |-----type: ACPI thermal zone |
222 | |-----temp: 37 | 222 | |-----temp: 37000 |
223 | |-----mode: kernel | 223 | |-----mode: kernel |
224 | |-----trip_point_0_temp: 100 | 224 | |-----trip_point_0_temp: 100000 |
225 | |-----trip_point_0_type: critical | 225 | |-----trip_point_0_type: critical |
226 | |-----trip_point_1_temp: 80 | 226 | |-----trip_point_1_temp: 80000 |
227 | |-----trip_point_1_type: passive | 227 | |-----trip_point_1_type: passive |
228 | |-----trip_point_2_temp: 70 | 228 | |-----trip_point_2_temp: 70000 |
229 | |-----trip_point_2_type: active[0] | 229 | |-----trip_point_2_type: active0 |
230 | |-----trip_point_3_temp: 60 | 230 | |-----trip_point_3_temp: 60000 |
231 | |-----trip_point_3_type: active[1] | 231 | |-----trip_point_3_type: active1 |
232 | |-----cdev0: --->/sys/class/thermal/cooling_device0 | 232 | |-----cdev0: --->/sys/class/thermal/cooling_device0 |
233 | |-----cdev0_trip_point: 1 /* cdev0 can be used for passive */ | 233 | |-----cdev0_trip_point: 1 /* cdev0 can be used for passive */ |
234 | |-----cdev1: --->/sys/class/thermal/cooling_device3 | 234 | |-----cdev1: --->/sys/class/thermal/cooling_device3 |
diff --git a/MAINTAINERS b/MAINTAINERS index 25f450fe1059..0f95a4a787a6 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -2052,43 +2052,19 @@ M: kernel@wantstofly.org | |||
2052 | L: netdev@vger.kernel.org | 2052 | L: netdev@vger.kernel.org |
2053 | S: Maintained | 2053 | S: Maintained |
2054 | 2054 | ||
2055 | INTEL PRO/100 ETHERNET SUPPORT | 2055 | INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/ixgb/ixgbe) |
2056 | P: Auke Kok | 2056 | P: Auke Kok |
2057 | M: auke-jan.h.kok@intel.com | 2057 | M: auke-jan.h.kok@intel.com |
2058 | P: Jesse Brandeburg | 2058 | P: Jesse Brandeburg |
2059 | M: jesse.brandeburg@intel.com | 2059 | M: jesse.brandeburg@intel.com |
2060 | P: Jeff Kirsher | 2060 | P: Jeff Kirsher |
2061 | M: jeffrey.t.kirsher@intel.com | 2061 | M: jeffrey.t.kirsher@intel.com |
2062 | P: Bruce Allan | ||
2063 | M: bruce.w.allan@intel.com | ||
2062 | P: John Ronciak | 2064 | P: John Ronciak |
2063 | M: john.ronciak@intel.com | 2065 | M: john.ronciak@intel.com |
2064 | L: e1000-devel@lists.sourceforge.net | 2066 | L: e1000-devel@lists.sourceforge.net |
2065 | W: http://sourceforge.net/projects/e1000/ | 2067 | W: http://e1000.sourceforge.net/ |
2066 | S: Supported | ||
2067 | |||
2068 | INTEL PRO/1000 GIGABIT ETHERNET SUPPORT | ||
2069 | P: Auke Kok | ||
2070 | M: auke-jan.h.kok@intel.com | ||
2071 | P: Jesse Brandeburg | ||
2072 | M: jesse.brandeburg@intel.com | ||
2073 | P: Jeff Kirsher | ||
2074 | M: jeffrey.t.kirsher@intel.com | ||
2075 | P: John Ronciak | ||
2076 | M: john.ronciak@intel.com | ||
2077 | L: e1000-devel@lists.sourceforge.net | ||
2078 | W: http://sourceforge.net/projects/e1000/ | ||
2079 | S: Supported | ||
2080 | |||
2081 | INTEL PRO/10GbE SUPPORT | ||
2082 | P: Ayyappan Veeraiyan | ||
2083 | M: ayyappan.veeraiyan@intel.com | ||
2084 | P: Auke Kok | ||
2085 | M: auke-jan.h.kok@intel.com | ||
2086 | P: Jesse Brandeburg | ||
2087 | M: jesse.brandeburg@intel.com | ||
2088 | P: John Ronciak | ||
2089 | M: john.ronciak@intel.com | ||
2090 | L: e1000-devel@lists.sourceforge.net | ||
2091 | W: http://sourceforge.net/projects/e1000/ | ||
2092 | S: Supported | 2068 | S: Supported |
2093 | 2069 | ||
2094 | INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT | 2070 | INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT |
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 002703b8c0b0..729cdbdf8036 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig | |||
@@ -330,6 +330,9 @@ config PCI_DOMAINS | |||
330 | config PCI_SYSCALL | 330 | config PCI_SYSCALL |
331 | def_bool PCI | 331 | def_bool PCI |
332 | 332 | ||
333 | config IOMMU_HELPER | ||
334 | def_bool PCI | ||
335 | |||
333 | config ALPHA_CORE_AGP | 336 | config ALPHA_CORE_AGP |
334 | bool | 337 | bool |
335 | depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL | 338 | depends on ALPHA_GENERIC || ALPHA_TITAN || ALPHA_MARVEL |
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c index e07a23fc5b74..4e1c08636edd 100644 --- a/arch/alpha/kernel/pci_iommu.c +++ b/arch/alpha/kernel/pci_iommu.c | |||
@@ -10,6 +10,7 @@ | |||
10 | #include <linux/scatterlist.h> | 10 | #include <linux/scatterlist.h> |
11 | #include <linux/log2.h> | 11 | #include <linux/log2.h> |
12 | #include <linux/dma-mapping.h> | 12 | #include <linux/dma-mapping.h> |
13 | #include <linux/iommu-helper.h> | ||
13 | 14 | ||
14 | #include <asm/io.h> | 15 | #include <asm/io.h> |
15 | #include <asm/hwrpb.h> | 16 | #include <asm/hwrpb.h> |
@@ -125,14 +126,6 @@ iommu_arena_new(struct pci_controller *hose, dma_addr_t base, | |||
125 | return iommu_arena_new_node(0, hose, base, window_size, align); | 126 | return iommu_arena_new_node(0, hose, base, window_size, align); |
126 | } | 127 | } |
127 | 128 | ||
128 | static inline int is_span_boundary(unsigned int index, unsigned int nr, | ||
129 | unsigned long shift, | ||
130 | unsigned long boundary_size) | ||
131 | { | ||
132 | shift = (shift + index) & (boundary_size - 1); | ||
133 | return shift + nr > boundary_size; | ||
134 | } | ||
135 | |||
136 | /* Must be called with the arena lock held */ | 129 | /* Must be called with the arena lock held */ |
137 | static long | 130 | static long |
138 | iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena, | 131 | iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena, |
@@ -147,7 +140,6 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena, | |||
147 | base = arena->dma_base >> PAGE_SHIFT; | 140 | base = arena->dma_base >> PAGE_SHIFT; |
148 | if (dev) { | 141 | if (dev) { |
149 | boundary_size = dma_get_seg_boundary(dev) + 1; | 142 | boundary_size = dma_get_seg_boundary(dev) + 1; |
150 | BUG_ON(!is_power_of_2(boundary_size)); | ||
151 | boundary_size >>= PAGE_SHIFT; | 143 | boundary_size >>= PAGE_SHIFT; |
152 | } else { | 144 | } else { |
153 | boundary_size = 1UL << (32 - PAGE_SHIFT); | 145 | boundary_size = 1UL << (32 - PAGE_SHIFT); |
@@ -161,7 +153,7 @@ iommu_arena_find_pages(struct device *dev, struct pci_iommu_arena *arena, | |||
161 | 153 | ||
162 | again: | 154 | again: |
163 | while (i < n && p+i < nent) { | 155 | while (i < n && p+i < nent) { |
164 | if (!i && is_span_boundary(p, n, base, boundary_size)) { | 156 | if (!i && iommu_is_span_boundary(p, n, base, boundary_size)) { |
165 | p = ALIGN(p + 1, mask + 1); | 157 | p = ALIGN(p + 1, mask + 1); |
166 | goto again; | 158 | goto again; |
167 | } | 159 | } |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 7b8ff66febe1..1a4649667ec8 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
@@ -251,6 +251,7 @@ define archhelp | |||
251 | echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)' | 251 | echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)' |
252 | echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' | 252 | echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' |
253 | echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)' | 253 | echo '* xipImage - XIP kernel image, if configured (arch/$(ARCH)/boot/xipImage)' |
254 | echo ' uImage - U-Boot wrapped zImage' | ||
254 | echo ' bootpImage - Combined zImage and initial RAM disk' | 255 | echo ' bootpImage - Combined zImage and initial RAM disk' |
255 | echo ' (supply initrd image via make variable INITRD=<path>)' | 256 | echo ' (supply initrd image via make variable INITRD=<path>)' |
256 | echo ' install - Install uncompressed kernel' | 257 | echo ' install - Install uncompressed kernel' |
diff --git a/arch/arm/common/it8152.c b/arch/arm/common/it8152.c index 97b7dc13d9aa..538262241483 100644 --- a/arch/arm/common/it8152.c +++ b/arch/arm/common/it8152.c | |||
@@ -274,7 +274,7 @@ static int it8152_pci_platform_notify_remove(struct device *dev) | |||
274 | int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size) | 274 | int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size) |
275 | { | 275 | { |
276 | dev_dbg(dev, "%s: dma_addr %08x, size %08x\n", | 276 | dev_dbg(dev, "%s: dma_addr %08x, size %08x\n", |
277 | __FUNCTION__, dma_addr, size); | 277 | __func__, dma_addr, size); |
278 | return (dev->bus == &pci_bus_type) && | 278 | return (dev->bus == &pci_bus_type) && |
279 | ((dma_addr + size - PHYS_OFFSET) >= SZ_64M); | 279 | ((dma_addr + size - PHYS_OFFSET) >= SZ_64M); |
280 | } | 280 | } |
@@ -289,7 +289,7 @@ int dma_needs_bounce(struct device *dev, dma_addr_t dma_addr, size_t size) | |||
289 | */ | 289 | */ |
290 | int pci_set_dma_mask(struct pci_dev *dev, u64 mask) | 290 | int pci_set_dma_mask(struct pci_dev *dev, u64 mask) |
291 | { | 291 | { |
292 | dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask); | 292 | dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask); |
293 | if (mask >= PHYS_OFFSET + SZ_64M - 1) | 293 | if (mask >= PHYS_OFFSET + SZ_64M - 1) |
294 | return 0; | 294 | return 0; |
295 | 295 | ||
@@ -299,7 +299,7 @@ int pci_set_dma_mask(struct pci_dev *dev, u64 mask) | |||
299 | int | 299 | int |
300 | pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) | 300 | pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) |
301 | { | 301 | { |
302 | dev_dbg(&dev->dev, "%s: %llx\n", __FUNCTION__, mask); | 302 | dev_dbg(&dev->dev, "%s: %llx\n", __func__, mask); |
303 | if (mask >= PHYS_OFFSET + SZ_64M - 1) | 303 | if (mask >= PHYS_OFFSET + SZ_64M - 1) |
304 | return 0; | 304 | return 0; |
305 | 305 | ||
diff --git a/arch/arm/configs/omap_h2_1610_defconfig b/arch/arm/configs/omap_h2_1610_defconfig index c2345af3707a..323c1deeb953 100644 --- a/arch/arm/configs/omap_h2_1610_defconfig +++ b/arch/arm/configs/omap_h2_1610_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-rc5 | 3 | # Linux kernel version: 2.6.25-rc3 |
4 | # Mon Dec 17 20:04:38 2007 | 4 | # Mon Mar 3 03:39:48 2008 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
22 | CONFIG_GENERIC_HWEIGHT=y | 22 | CONFIG_GENERIC_HWEIGHT=y |
23 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 23 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
24 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
24 | CONFIG_ZONE_DMA=y | 25 | CONFIG_ZONE_DMA=y |
25 | CONFIG_VECTORS_BASE=0xffff0000 | 26 | CONFIG_VECTORS_BASE=0xffff0000 |
26 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 27 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -40,17 +41,22 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
40 | # CONFIG_POSIX_MQUEUE is not set | 41 | # CONFIG_POSIX_MQUEUE is not set |
41 | # CONFIG_BSD_PROCESS_ACCT is not set | 42 | # CONFIG_BSD_PROCESS_ACCT is not set |
42 | # CONFIG_TASKSTATS is not set | 43 | # CONFIG_TASKSTATS is not set |
43 | # CONFIG_USER_NS is not set | ||
44 | # CONFIG_PID_NS is not set | ||
45 | # CONFIG_AUDIT is not set | 44 | # CONFIG_AUDIT is not set |
46 | # CONFIG_IKCONFIG is not set | 45 | # CONFIG_IKCONFIG is not set |
47 | CONFIG_LOG_BUF_SHIFT=14 | 46 | CONFIG_LOG_BUF_SHIFT=14 |
48 | # CONFIG_CGROUPS is not set | 47 | # CONFIG_CGROUPS is not set |
48 | CONFIG_GROUP_SCHED=y | ||
49 | CONFIG_FAIR_GROUP_SCHED=y | 49 | CONFIG_FAIR_GROUP_SCHED=y |
50 | CONFIG_FAIR_USER_SCHED=y | 50 | # CONFIG_RT_GROUP_SCHED is not set |
51 | # CONFIG_FAIR_CGROUP_SCHED is not set | 51 | CONFIG_USER_SCHED=y |
52 | # CONFIG_CGROUP_SCHED is not set | ||
52 | # CONFIG_SYSFS_DEPRECATED is not set | 53 | # CONFIG_SYSFS_DEPRECATED is not set |
53 | # CONFIG_RELAY is not set | 54 | # CONFIG_RELAY is not set |
55 | CONFIG_NAMESPACES=y | ||
56 | # CONFIG_UTS_NS is not set | ||
57 | # CONFIG_IPC_NS is not set | ||
58 | # CONFIG_USER_NS is not set | ||
59 | # CONFIG_PID_NS is not set | ||
54 | CONFIG_BLK_DEV_INITRD=y | 60 | CONFIG_BLK_DEV_INITRD=y |
55 | CONFIG_INITRAMFS_SOURCE="" | 61 | CONFIG_INITRAMFS_SOURCE="" |
56 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 62 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -64,17 +70,26 @@ CONFIG_HOTPLUG=y | |||
64 | CONFIG_PRINTK=y | 70 | CONFIG_PRINTK=y |
65 | CONFIG_BUG=y | 71 | CONFIG_BUG=y |
66 | CONFIG_ELF_CORE=y | 72 | CONFIG_ELF_CORE=y |
73 | CONFIG_COMPAT_BRK=y | ||
67 | CONFIG_BASE_FULL=y | 74 | CONFIG_BASE_FULL=y |
68 | CONFIG_FUTEX=y | 75 | CONFIG_FUTEX=y |
69 | CONFIG_ANON_INODES=y | 76 | CONFIG_ANON_INODES=y |
70 | CONFIG_EPOLL=y | 77 | CONFIG_EPOLL=y |
71 | CONFIG_SIGNALFD=y | 78 | CONFIG_SIGNALFD=y |
79 | CONFIG_TIMERFD=y | ||
72 | CONFIG_EVENTFD=y | 80 | CONFIG_EVENTFD=y |
73 | CONFIG_SHMEM=y | 81 | CONFIG_SHMEM=y |
74 | CONFIG_VM_EVENT_COUNTERS=y | 82 | CONFIG_VM_EVENT_COUNTERS=y |
75 | CONFIG_SLAB=y | 83 | CONFIG_SLAB=y |
76 | # CONFIG_SLUB is not set | 84 | # CONFIG_SLUB is not set |
77 | # CONFIG_SLOB is not set | 85 | # CONFIG_SLOB is not set |
86 | # CONFIG_PROFILING is not set | ||
87 | # CONFIG_MARKERS is not set | ||
88 | CONFIG_HAVE_OPROFILE=y | ||
89 | # CONFIG_KPROBES is not set | ||
90 | CONFIG_HAVE_KPROBES=y | ||
91 | CONFIG_PROC_PAGE_MONITOR=y | ||
92 | CONFIG_SLABINFO=y | ||
78 | CONFIG_RT_MUTEXES=y | 93 | CONFIG_RT_MUTEXES=y |
79 | # CONFIG_TINY_SHMEM is not set | 94 | # CONFIG_TINY_SHMEM is not set |
80 | CONFIG_BASE_SMALL=0 | 95 | CONFIG_BASE_SMALL=0 |
@@ -102,6 +117,8 @@ CONFIG_DEFAULT_AS=y | |||
102 | # CONFIG_DEFAULT_CFQ is not set | 117 | # CONFIG_DEFAULT_CFQ is not set |
103 | # CONFIG_DEFAULT_NOOP is not set | 118 | # CONFIG_DEFAULT_NOOP is not set |
104 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 119 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
120 | CONFIG_CLASSIC_RCU=y | ||
121 | # CONFIG_PREEMPT_RCU is not set | ||
105 | 122 | ||
106 | # | 123 | # |
107 | # System Type | 124 | # System Type |
@@ -130,6 +147,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
130 | # CONFIG_ARCH_KS8695 is not set | 147 | # CONFIG_ARCH_KS8695 is not set |
131 | # CONFIG_ARCH_NS9XXX is not set | 148 | # CONFIG_ARCH_NS9XXX is not set |
132 | # CONFIG_ARCH_MXC is not set | 149 | # CONFIG_ARCH_MXC is not set |
150 | # CONFIG_ARCH_ORION is not set | ||
133 | # CONFIG_ARCH_PNX4008 is not set | 151 | # CONFIG_ARCH_PNX4008 is not set |
134 | # CONFIG_ARCH_PXA is not set | 152 | # CONFIG_ARCH_PXA is not set |
135 | # CONFIG_ARCH_RPC is not set | 153 | # CONFIG_ARCH_RPC is not set |
@@ -139,6 +157,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory" | |||
139 | # CONFIG_ARCH_LH7A40X is not set | 157 | # CONFIG_ARCH_LH7A40X is not set |
140 | # CONFIG_ARCH_DAVINCI is not set | 158 | # CONFIG_ARCH_DAVINCI is not set |
141 | CONFIG_ARCH_OMAP=y | 159 | CONFIG_ARCH_OMAP=y |
160 | # CONFIG_ARCH_MSM7X00A is not set | ||
142 | 161 | ||
143 | # | 162 | # |
144 | # TI OMAP Implementations | 163 | # TI OMAP Implementations |
@@ -155,6 +174,7 @@ CONFIG_OMAP_MUX=y | |||
155 | # CONFIG_OMAP_MUX_DEBUG is not set | 174 | # CONFIG_OMAP_MUX_DEBUG is not set |
156 | CONFIG_OMAP_MUX_WARNINGS=y | 175 | CONFIG_OMAP_MUX_WARNINGS=y |
157 | CONFIG_OMAP_MCBSP=y | 176 | CONFIG_OMAP_MCBSP=y |
177 | # CONFIG_OMAP_MMU_FWK is not set | ||
158 | # CONFIG_OMAP_MPU_TIMER is not set | 178 | # CONFIG_OMAP_MPU_TIMER is not set |
159 | CONFIG_OMAP_32K_TIMER=y | 179 | CONFIG_OMAP_32K_TIMER=y |
160 | CONFIG_OMAP_32K_TIMER_HZ=128 | 180 | CONFIG_OMAP_32K_TIMER_HZ=128 |
@@ -266,6 +286,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0 | |||
266 | CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh" | 286 | CONFIG_CMDLINE="mem=32M console=ttyS0,115200n8 root=0801 ro init=/bin/sh" |
267 | # CONFIG_XIP_KERNEL is not set | 287 | # CONFIG_XIP_KERNEL is not set |
268 | # CONFIG_KEXEC is not set | 288 | # CONFIG_KEXEC is not set |
289 | # CONFIG_ATAGS_PROC is not set | ||
269 | 290 | ||
270 | # | 291 | # |
271 | # CPU Frequency scaling | 292 | # CPU Frequency scaling |
@@ -311,9 +332,10 @@ CONFIG_PM=y | |||
311 | # CONFIG_PM_LEGACY is not set | 332 | # CONFIG_PM_LEGACY is not set |
312 | # CONFIG_PM_DEBUG is not set | 333 | # CONFIG_PM_DEBUG is not set |
313 | CONFIG_PM_SLEEP=y | 334 | CONFIG_PM_SLEEP=y |
314 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
315 | CONFIG_SUSPEND=y | 335 | CONFIG_SUSPEND=y |
336 | CONFIG_SUSPEND_FREEZER=y | ||
316 | # CONFIG_APM_EMULATION is not set | 337 | # CONFIG_APM_EMULATION is not set |
338 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
317 | 339 | ||
318 | # | 340 | # |
319 | # Networking | 341 | # Networking |
@@ -330,6 +352,7 @@ CONFIG_XFRM=y | |||
330 | # CONFIG_XFRM_USER is not set | 352 | # CONFIG_XFRM_USER is not set |
331 | # CONFIG_XFRM_SUB_POLICY is not set | 353 | # CONFIG_XFRM_SUB_POLICY is not set |
332 | # CONFIG_XFRM_MIGRATE is not set | 354 | # CONFIG_XFRM_MIGRATE is not set |
355 | # CONFIG_XFRM_STATISTICS is not set | ||
333 | # CONFIG_NET_KEY is not set | 356 | # CONFIG_NET_KEY is not set |
334 | CONFIG_INET=y | 357 | CONFIG_INET=y |
335 | # CONFIG_IP_MULTICAST is not set | 358 | # CONFIG_IP_MULTICAST is not set |
@@ -384,6 +407,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
384 | # | 407 | # |
385 | # CONFIG_NET_PKTGEN is not set | 408 | # CONFIG_NET_PKTGEN is not set |
386 | # CONFIG_HAMRADIO is not set | 409 | # CONFIG_HAMRADIO is not set |
410 | # CONFIG_CAN is not set | ||
387 | # CONFIG_IRDA is not set | 411 | # CONFIG_IRDA is not set |
388 | # CONFIG_BT is not set | 412 | # CONFIG_BT is not set |
389 | # CONFIG_AF_RXRPC is not set | 413 | # CONFIG_AF_RXRPC is not set |
@@ -421,11 +445,13 @@ CONFIG_BLK_DEV_LOOP=y | |||
421 | CONFIG_BLK_DEV_RAM=y | 445 | CONFIG_BLK_DEV_RAM=y |
422 | CONFIG_BLK_DEV_RAM_COUNT=16 | 446 | CONFIG_BLK_DEV_RAM_COUNT=16 |
423 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 447 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
424 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 448 | # CONFIG_BLK_DEV_XIP is not set |
425 | # CONFIG_CDROM_PKTCDVD is not set | 449 | # CONFIG_CDROM_PKTCDVD is not set |
426 | CONFIG_ATA_OVER_ETH=m | 450 | CONFIG_ATA_OVER_ETH=m |
427 | CONFIG_MISC_DEVICES=y | 451 | CONFIG_MISC_DEVICES=y |
428 | # CONFIG_EEPROM_93CX6 is not set | 452 | # CONFIG_EEPROM_93CX6 is not set |
453 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
454 | # CONFIG_HAVE_IDE is not set | ||
429 | 455 | ||
430 | # | 456 | # |
431 | # SCSI device support | 457 | # SCSI device support |
@@ -489,6 +515,7 @@ CONFIG_SMC91X=y | |||
489 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 515 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
490 | # CONFIG_B44 is not set | 516 | # CONFIG_B44 is not set |
491 | CONFIG_NETDEV_1000=y | 517 | CONFIG_NETDEV_1000=y |
518 | # CONFIG_E1000E_ENABLED is not set | ||
492 | CONFIG_NETDEV_10000=y | 519 | CONFIG_NETDEV_10000=y |
493 | 520 | ||
494 | # | 521 | # |
@@ -512,7 +539,6 @@ CONFIG_SLIP_COMPRESSED=y | |||
512 | CONFIG_SLHC=y | 539 | CONFIG_SLHC=y |
513 | # CONFIG_SLIP_SMART is not set | 540 | # CONFIG_SLIP_SMART is not set |
514 | # CONFIG_SLIP_MODE_SLIP6 is not set | 541 | # CONFIG_SLIP_MODE_SLIP6 is not set |
515 | # CONFIG_SHAPER is not set | ||
516 | # CONFIG_NETCONSOLE is not set | 542 | # CONFIG_NETCONSOLE is not set |
517 | # CONFIG_NETPOLL is not set | 543 | # CONFIG_NETPOLL is not set |
518 | # CONFIG_NET_POLL_CONTROLLER is not set | 544 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -616,12 +642,10 @@ CONFIG_I2C_OMAP=y | |||
616 | # | 642 | # |
617 | # Miscellaneous I2C Chip support | 643 | # Miscellaneous I2C Chip support |
618 | # | 644 | # |
619 | # CONFIG_SENSORS_DS1337 is not set | ||
620 | # CONFIG_SENSORS_DS1374 is not set | ||
621 | # CONFIG_DS1682 is not set | 645 | # CONFIG_DS1682 is not set |
622 | # CONFIG_SENSORS_EEPROM is not set | 646 | # CONFIG_SENSORS_EEPROM is not set |
623 | # CONFIG_SENSORS_PCF8574 is not set | 647 | # CONFIG_SENSORS_PCF8574 is not set |
624 | # CONFIG_SENSORS_PCA9539 is not set | 648 | # CONFIG_PCF8575 is not set |
625 | # CONFIG_SENSORS_PCF8591 is not set | 649 | # CONFIG_SENSORS_PCF8591 is not set |
626 | # CONFIG_ISP1301_OMAP is not set | 650 | # CONFIG_ISP1301_OMAP is not set |
627 | CONFIG_TPS65010=y | 651 | CONFIG_TPS65010=y |
@@ -649,6 +673,7 @@ CONFIG_HWMON=y | |||
649 | # CONFIG_SENSORS_ADM1031 is not set | 673 | # CONFIG_SENSORS_ADM1031 is not set |
650 | # CONFIG_SENSORS_ADM9240 is not set | 674 | # CONFIG_SENSORS_ADM9240 is not set |
651 | # CONFIG_SENSORS_ADT7470 is not set | 675 | # CONFIG_SENSORS_ADT7470 is not set |
676 | # CONFIG_SENSORS_ADT7473 is not set | ||
652 | # CONFIG_SENSORS_ATXP1 is not set | 677 | # CONFIG_SENSORS_ATXP1 is not set |
653 | # CONFIG_SENSORS_DS1621 is not set | 678 | # CONFIG_SENSORS_DS1621 is not set |
654 | # CONFIG_SENSORS_F71805F is not set | 679 | # CONFIG_SENSORS_F71805F is not set |
@@ -676,6 +701,7 @@ CONFIG_HWMON=y | |||
676 | # CONFIG_SENSORS_SMSC47M1 is not set | 701 | # CONFIG_SENSORS_SMSC47M1 is not set |
677 | # CONFIG_SENSORS_SMSC47M192 is not set | 702 | # CONFIG_SENSORS_SMSC47M192 is not set |
678 | # CONFIG_SENSORS_SMSC47B397 is not set | 703 | # CONFIG_SENSORS_SMSC47B397 is not set |
704 | # CONFIG_SENSORS_ADS7828 is not set | ||
679 | # CONFIG_SENSORS_THMC50 is not set | 705 | # CONFIG_SENSORS_THMC50 is not set |
680 | # CONFIG_SENSORS_VT1211 is not set | 706 | # CONFIG_SENSORS_VT1211 is not set |
681 | # CONFIG_SENSORS_W83781D is not set | 707 | # CONFIG_SENSORS_W83781D is not set |
@@ -683,6 +709,7 @@ CONFIG_HWMON=y | |||
683 | # CONFIG_SENSORS_W83792D is not set | 709 | # CONFIG_SENSORS_W83792D is not set |
684 | # CONFIG_SENSORS_W83793 is not set | 710 | # CONFIG_SENSORS_W83793 is not set |
685 | # CONFIG_SENSORS_W83L785TS is not set | 711 | # CONFIG_SENSORS_W83L785TS is not set |
712 | # CONFIG_SENSORS_W83L786NG is not set | ||
686 | # CONFIG_SENSORS_W83627HF is not set | 713 | # CONFIG_SENSORS_W83627HF is not set |
687 | # CONFIG_SENSORS_W83627EHF is not set | 714 | # CONFIG_SENSORS_W83627EHF is not set |
688 | # CONFIG_HWMON_DEBUG_CHIP is not set | 715 | # CONFIG_HWMON_DEBUG_CHIP is not set |
@@ -705,6 +732,7 @@ CONFIG_SSB_POSSIBLE=y | |||
705 | # Multifunction device drivers | 732 | # Multifunction device drivers |
706 | # | 733 | # |
707 | # CONFIG_MFD_SM501 is not set | 734 | # CONFIG_MFD_SM501 is not set |
735 | # CONFIG_MFD_ASIC3 is not set | ||
708 | 736 | ||
709 | # | 737 | # |
710 | # Multimedia devices | 738 | # Multimedia devices |
@@ -802,10 +830,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
802 | # | 830 | # |
803 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 831 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
804 | # | 832 | # |
805 | |||
806 | # | ||
807 | # USB Gadget Support | ||
808 | # | ||
809 | # CONFIG_USB_GADGET is not set | 833 | # CONFIG_USB_GADGET is not set |
810 | # CONFIG_MMC is not set | 834 | # CONFIG_MMC is not set |
811 | # CONFIG_NEW_LEDS is not set | 835 | # CONFIG_NEW_LEDS is not set |
@@ -826,12 +850,10 @@ CONFIG_EXT2_FS=y | |||
826 | # CONFIG_XFS_FS is not set | 850 | # CONFIG_XFS_FS is not set |
827 | # CONFIG_GFS2_FS is not set | 851 | # CONFIG_GFS2_FS is not set |
828 | # CONFIG_OCFS2_FS is not set | 852 | # CONFIG_OCFS2_FS is not set |
829 | # CONFIG_MINIX_FS is not set | 853 | CONFIG_DNOTIFY=y |
830 | CONFIG_ROMFS_FS=y | ||
831 | CONFIG_INOTIFY=y | 854 | CONFIG_INOTIFY=y |
832 | CONFIG_INOTIFY_USER=y | 855 | CONFIG_INOTIFY_USER=y |
833 | # CONFIG_QUOTA is not set | 856 | # CONFIG_QUOTA is not set |
834 | CONFIG_DNOTIFY=y | ||
835 | # CONFIG_AUTOFS_FS is not set | 857 | # CONFIG_AUTOFS_FS is not set |
836 | # CONFIG_AUTOFS4_FS is not set | 858 | # CONFIG_AUTOFS4_FS is not set |
837 | # CONFIG_FUSE_FS is not set | 859 | # CONFIG_FUSE_FS is not set |
@@ -874,8 +896,10 @@ CONFIG_SYSFS=y | |||
874 | # CONFIG_EFS_FS is not set | 896 | # CONFIG_EFS_FS is not set |
875 | CONFIG_CRAMFS=y | 897 | CONFIG_CRAMFS=y |
876 | # CONFIG_VXFS_FS is not set | 898 | # CONFIG_VXFS_FS is not set |
899 | # CONFIG_MINIX_FS is not set | ||
877 | # CONFIG_HPFS_FS is not set | 900 | # CONFIG_HPFS_FS is not set |
878 | # CONFIG_QNX4FS_FS is not set | 901 | # CONFIG_QNX4FS_FS is not set |
902 | CONFIG_ROMFS_FS=y | ||
879 | # CONFIG_SYSV_FS is not set | 903 | # CONFIG_SYSV_FS is not set |
880 | # CONFIG_UFS_FS is not set | 904 | # CONFIG_UFS_FS is not set |
881 | CONFIG_NETWORK_FILESYSTEMS=y | 905 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -946,9 +970,6 @@ CONFIG_NLS_ISO8859_1=y | |||
946 | # CONFIG_NLS_KOI8_U is not set | 970 | # CONFIG_NLS_KOI8_U is not set |
947 | # CONFIG_NLS_UTF8 is not set | 971 | # CONFIG_NLS_UTF8 is not set |
948 | # CONFIG_DLM is not set | 972 | # CONFIG_DLM is not set |
949 | CONFIG_INSTRUMENTATION=y | ||
950 | # CONFIG_PROFILING is not set | ||
951 | # CONFIG_MARKERS is not set | ||
952 | 973 | ||
953 | # | 974 | # |
954 | # Kernel hacking | 975 | # Kernel hacking |
@@ -975,6 +996,7 @@ CONFIG_FRAME_POINTER=y | |||
975 | CONFIG_CRYPTO=y | 996 | CONFIG_CRYPTO=y |
976 | CONFIG_CRYPTO_ALGAPI=y | 997 | CONFIG_CRYPTO_ALGAPI=y |
977 | CONFIG_CRYPTO_BLKCIPHER=y | 998 | CONFIG_CRYPTO_BLKCIPHER=y |
999 | # CONFIG_CRYPTO_SEQIV is not set | ||
978 | CONFIG_CRYPTO_MANAGER=y | 1000 | CONFIG_CRYPTO_MANAGER=y |
979 | # CONFIG_CRYPTO_HMAC is not set | 1001 | # CONFIG_CRYPTO_HMAC is not set |
980 | # CONFIG_CRYPTO_XCBC is not set | 1002 | # CONFIG_CRYPTO_XCBC is not set |
@@ -992,6 +1014,9 @@ CONFIG_CRYPTO_CBC=y | |||
992 | CONFIG_CRYPTO_PCBC=m | 1014 | CONFIG_CRYPTO_PCBC=m |
993 | # CONFIG_CRYPTO_LRW is not set | 1015 | # CONFIG_CRYPTO_LRW is not set |
994 | # CONFIG_CRYPTO_XTS is not set | 1016 | # CONFIG_CRYPTO_XTS is not set |
1017 | # CONFIG_CRYPTO_CTR is not set | ||
1018 | # CONFIG_CRYPTO_GCM is not set | ||
1019 | # CONFIG_CRYPTO_CCM is not set | ||
995 | # CONFIG_CRYPTO_CRYPTD is not set | 1020 | # CONFIG_CRYPTO_CRYPTD is not set |
996 | CONFIG_CRYPTO_DES=y | 1021 | CONFIG_CRYPTO_DES=y |
997 | # CONFIG_CRYPTO_FCRYPT is not set | 1022 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1006,12 +1031,14 @@ CONFIG_CRYPTO_DES=y | |||
1006 | # CONFIG_CRYPTO_KHAZAD is not set | 1031 | # CONFIG_CRYPTO_KHAZAD is not set |
1007 | # CONFIG_CRYPTO_ANUBIS is not set | 1032 | # CONFIG_CRYPTO_ANUBIS is not set |
1008 | # CONFIG_CRYPTO_SEED is not set | 1033 | # CONFIG_CRYPTO_SEED is not set |
1034 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1009 | # CONFIG_CRYPTO_DEFLATE is not set | 1035 | # CONFIG_CRYPTO_DEFLATE is not set |
1010 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1036 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1011 | # CONFIG_CRYPTO_CRC32C is not set | 1037 | # CONFIG_CRYPTO_CRC32C is not set |
1012 | # CONFIG_CRYPTO_CAMELLIA is not set | 1038 | # CONFIG_CRYPTO_CAMELLIA is not set |
1013 | # CONFIG_CRYPTO_TEST is not set | 1039 | # CONFIG_CRYPTO_TEST is not set |
1014 | # CONFIG_CRYPTO_AUTHENC is not set | 1040 | # CONFIG_CRYPTO_AUTHENC is not set |
1041 | # CONFIG_CRYPTO_LZO is not set | ||
1015 | CONFIG_CRYPTO_HW=y | 1042 | CONFIG_CRYPTO_HW=y |
1016 | 1043 | ||
1017 | # | 1044 | # |
diff --git a/arch/arm/configs/omap_osk_5912_defconfig b/arch/arm/configs/omap_osk_5912_defconfig index d592a6487114..d4ca5e6e4ffa 100644 --- a/arch/arm/configs/omap_osk_5912_defconfig +++ b/arch/arm/configs/omap_osk_5912_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-rc5 | 3 | # Linux kernel version: 2.6.25-rc3 |
4 | # Mon Dec 17 21:12:45 2007 | 4 | # Mon Mar 3 03:35:17 2008 |
5 | # | 5 | # |
6 | CONFIG_ARM=y | 6 | CONFIG_ARM=y |
7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 7 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
@@ -21,6 +21,7 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y | |||
21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | 21 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set |
22 | CONFIG_GENERIC_HWEIGHT=y | 22 | CONFIG_GENERIC_HWEIGHT=y |
23 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 23 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
24 | CONFIG_ARCH_SUPPORTS_AOUT=y | ||
24 | CONFIG_ZONE_DMA=y | 25 | CONFIG_ZONE_DMA=y |
25 | CONFIG_VECTORS_BASE=0xffff0000 | 26 | CONFIG_VECTORS_BASE=0xffff0000 |
26 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 27 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -39,17 +40,22 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
39 | # CONFIG_POSIX_MQUEUE is not set | 40 | # CONFIG_POSIX_MQUEUE is not set |
40 | # CONFIG_BSD_PROCESS_ACCT is not set | 41 | # CONFIG_BSD_PROCESS_ACCT is not set |
41 | # CONFIG_TASKSTATS is not set | 42 | # CONFIG_TASKSTATS is not set |
42 | # CONFIG_USER_NS is not set | ||
43 | # CONFIG_PID_NS is not set | ||
44 | # CONFIG_AUDIT is not set | 43 | # CONFIG_AUDIT is not set |
45 | # CONFIG_IKCONFIG is not set | 44 | # CONFIG_IKCONFIG is not set |
46 | CONFIG_LOG_BUF_SHIFT=14 | 45 | CONFIG_LOG_BUF_SHIFT=14 |
47 | # CONFIG_CGROUPS is not set | 46 | # CONFIG_CGROUPS is not set |
47 | CONFIG_GROUP_SCHED=y | ||
48 | CONFIG_FAIR_GROUP_SCHED=y | 48 | CONFIG_FAIR_GROUP_SCHED=y |
49 | CONFIG_FAIR_USER_SCHED=y | 49 | # CONFIG_RT_GROUP_SCHED is not set |
50 | # CONFIG_FAIR_CGROUP_SCHED is not set | 50 | CONFIG_USER_SCHED=y |
51 | # CONFIG_CGROUP_SCHED is not set | ||
51 | # CONFIG_SYSFS_DEPRECATED is not set | 52 | # CONFIG_SYSFS_DEPRECATED is not set |
52 | # CONFIG_RELAY is not set | 53 | # CONFIG_RELAY is not set |
54 | CONFIG_NAMESPACES=y | ||
55 | # CONFIG_UTS_NS is not set | ||
56 | # CONFIG_IPC_NS is not set | ||
57 | # CONFIG_USER_NS is not set | ||
58 | # CONFIG_PID_NS is not set | ||
53 | CONFIG_BLK_DEV_INITRD=y | 59 | CONFIG_BLK_DEV_INITRD=y |
54 | CONFIG_INITRAMFS_SOURCE="" | 60 | CONFIG_INITRAMFS_SOURCE="" |
55 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 61 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -63,17 +69,26 @@ CONFIG_HOTPLUG=y | |||
63 | CONFIG_PRINTK=y | 69 | CONFIG_PRINTK=y |
64 | CONFIG_BUG=y | 70 | CONFIG_BUG=y |
65 | CONFIG_ELF_CORE=y | 71 | CONFIG_ELF_CORE=y |
72 | CONFIG_COMPAT_BRK=y | ||
66 | CONFIG_BASE_FULL=y | 73 | CONFIG_BASE_FULL=y |
67 | CONFIG_FUTEX=y | 74 | CONFIG_FUTEX=y |
68 | CONFIG_ANON_INODES=y | 75 | CONFIG_ANON_INODES=y |
69 | CONFIG_EPOLL=y | 76 | CONFIG_EPOLL=y |
70 | CONFIG_SIGNALFD=y | 77 | CONFIG_SIGNALFD=y |
78 | CONFIG_TIMERFD=y | ||
71 | CONFIG_EVENTFD=y | 79 | CONFIG_EVENTFD=y |
72 | CONFIG_SHMEM=y | 80 | CONFIG_SHMEM=y |
73 | CONFIG_VM_EVENT_COUNTERS=y | 81 | CONFIG_VM_EVENT_COUNTERS=y |
74 | CONFIG_SLAB=y | 82 | CONFIG_SLAB=y |
75 | # CONFIG_SLUB is not set | 83 | # CONFIG_SLUB is not set |
76 | # CONFIG_SLOB is not set | 84 | # CONFIG_SLOB is not set |
85 | # CONFIG_PROFILING is not set | ||
86 | # CONFIG_MARKERS is not set | ||
87 | CONFIG_HAVE_OPROFILE=y | ||
88 | # CONFIG_KPROBES is not set | ||
89 | CONFIG_HAVE_KPROBES=y | ||
90 | CONFIG_PROC_PAGE_MONITOR=y | ||
91 | CONFIG_SLABINFO=y | ||
77 | CONFIG_RT_MUTEXES=y | 92 | CONFIG_RT_MUTEXES=y |
78 | # CONFIG_TINY_SHMEM is not set | 93 | # CONFIG_TINY_SHMEM is not set |
79 | CONFIG_BASE_SMALL=0 | 94 | CONFIG_BASE_SMALL=0 |
@@ -101,6 +116,8 @@ CONFIG_IOSCHED_CFQ=y | |||
101 | CONFIG_DEFAULT_CFQ=y | 116 | CONFIG_DEFAULT_CFQ=y |
102 | # CONFIG_DEFAULT_NOOP is not set | 117 | # CONFIG_DEFAULT_NOOP is not set |
103 | CONFIG_DEFAULT_IOSCHED="cfq" | 118 | CONFIG_DEFAULT_IOSCHED="cfq" |
119 | CONFIG_CLASSIC_RCU=y | ||
120 | # CONFIG_PREEMPT_RCU is not set | ||
104 | 121 | ||
105 | # | 122 | # |
106 | # System Type | 123 | # System Type |
@@ -129,6 +146,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" | |||
129 | # CONFIG_ARCH_KS8695 is not set | 146 | # CONFIG_ARCH_KS8695 is not set |
130 | # CONFIG_ARCH_NS9XXX is not set | 147 | # CONFIG_ARCH_NS9XXX is not set |
131 | # CONFIG_ARCH_MXC is not set | 148 | # CONFIG_ARCH_MXC is not set |
149 | # CONFIG_ARCH_ORION is not set | ||
132 | # CONFIG_ARCH_PNX4008 is not set | 150 | # CONFIG_ARCH_PNX4008 is not set |
133 | # CONFIG_ARCH_PXA is not set | 151 | # CONFIG_ARCH_PXA is not set |
134 | # CONFIG_ARCH_RPC is not set | 152 | # CONFIG_ARCH_RPC is not set |
@@ -138,6 +156,7 @@ CONFIG_DEFAULT_IOSCHED="cfq" | |||
138 | # CONFIG_ARCH_LH7A40X is not set | 156 | # CONFIG_ARCH_LH7A40X is not set |
139 | # CONFIG_ARCH_DAVINCI is not set | 157 | # CONFIG_ARCH_DAVINCI is not set |
140 | CONFIG_ARCH_OMAP=y | 158 | CONFIG_ARCH_OMAP=y |
159 | # CONFIG_ARCH_MSM7X00A is not set | ||
141 | 160 | ||
142 | # | 161 | # |
143 | # TI OMAP Implementations | 162 | # TI OMAP Implementations |
@@ -154,6 +173,7 @@ CONFIG_OMAP_MUX=y | |||
154 | # CONFIG_OMAP_MUX_DEBUG is not set | 173 | # CONFIG_OMAP_MUX_DEBUG is not set |
155 | CONFIG_OMAP_MUX_WARNINGS=y | 174 | CONFIG_OMAP_MUX_WARNINGS=y |
156 | CONFIG_OMAP_MCBSP=y | 175 | CONFIG_OMAP_MCBSP=y |
176 | # CONFIG_OMAP_MMU_FWK is not set | ||
157 | # CONFIG_OMAP_MPU_TIMER is not set | 177 | # CONFIG_OMAP_MPU_TIMER is not set |
158 | CONFIG_OMAP_32K_TIMER=y | 178 | CONFIG_OMAP_32K_TIMER=y |
159 | CONFIG_OMAP_32K_TIMER_HZ=128 | 179 | CONFIG_OMAP_32K_TIMER_HZ=128 |
@@ -173,13 +193,13 @@ CONFIG_ARCH_OMAP16XX=y | |||
173 | # | 193 | # |
174 | # OMAP Board Type | 194 | # OMAP Board Type |
175 | # | 195 | # |
176 | # CONFIG_MACH_OMAP_INNOVATOR is not set | 196 | CONFIG_MACH_OMAP_INNOVATOR=y |
177 | # CONFIG_MACH_OMAP_H2 is not set | 197 | CONFIG_MACH_OMAP_H2=y |
178 | # CONFIG_MACH_OMAP_H3 is not set | 198 | CONFIG_MACH_OMAP_H3=y |
179 | CONFIG_MACH_OMAP_OSK=y | 199 | CONFIG_MACH_OMAP_OSK=y |
180 | # CONFIG_OMAP_OSK_MISTRAL is not set | 200 | # CONFIG_OMAP_OSK_MISTRAL is not set |
181 | # CONFIG_MACH_NOKIA770 is not set | 201 | CONFIG_MACH_NOKIA770=y |
182 | # CONFIG_MACH_OMAP_GENERIC is not set | 202 | CONFIG_MACH_OMAP_GENERIC=y |
183 | 203 | ||
184 | # | 204 | # |
185 | # OMAP CPU Speed | 205 | # OMAP CPU Speed |
@@ -275,6 +295,7 @@ CONFIG_ZBOOT_ROM_BSS=0x0 | |||
275 | CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw" | 295 | CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x10400000,8M root=/dev/ram0 rw" |
276 | # CONFIG_XIP_KERNEL is not set | 296 | # CONFIG_XIP_KERNEL is not set |
277 | # CONFIG_KEXEC is not set | 297 | # CONFIG_KEXEC is not set |
298 | # CONFIG_ATAGS_PROC is not set | ||
278 | 299 | ||
279 | # | 300 | # |
280 | # CPU Frequency scaling | 301 | # CPU Frequency scaling |
@@ -307,9 +328,10 @@ CONFIG_PM=y | |||
307 | # CONFIG_PM_LEGACY is not set | 328 | # CONFIG_PM_LEGACY is not set |
308 | # CONFIG_PM_DEBUG is not set | 329 | # CONFIG_PM_DEBUG is not set |
309 | CONFIG_PM_SLEEP=y | 330 | CONFIG_PM_SLEEP=y |
310 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
311 | CONFIG_SUSPEND=y | 331 | CONFIG_SUSPEND=y |
332 | CONFIG_SUSPEND_FREEZER=y | ||
312 | # CONFIG_APM_EMULATION is not set | 333 | # CONFIG_APM_EMULATION is not set |
334 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
313 | 335 | ||
314 | # | 336 | # |
315 | # Networking | 337 | # Networking |
@@ -326,6 +348,7 @@ CONFIG_XFRM=y | |||
326 | # CONFIG_XFRM_USER is not set | 348 | # CONFIG_XFRM_USER is not set |
327 | # CONFIG_XFRM_SUB_POLICY is not set | 349 | # CONFIG_XFRM_SUB_POLICY is not set |
328 | # CONFIG_XFRM_MIGRATE is not set | 350 | # CONFIG_XFRM_MIGRATE is not set |
351 | # CONFIG_XFRM_STATISTICS is not set | ||
329 | # CONFIG_NET_KEY is not set | 352 | # CONFIG_NET_KEY is not set |
330 | CONFIG_INET=y | 353 | CONFIG_INET=y |
331 | CONFIG_IP_MULTICAST=y | 354 | CONFIG_IP_MULTICAST=y |
@@ -381,6 +404,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
381 | # | 404 | # |
382 | # CONFIG_NET_PKTGEN is not set | 405 | # CONFIG_NET_PKTGEN is not set |
383 | # CONFIG_HAMRADIO is not set | 406 | # CONFIG_HAMRADIO is not set |
407 | # CONFIG_CAN is not set | ||
384 | # CONFIG_IRDA is not set | 408 | # CONFIG_IRDA is not set |
385 | # CONFIG_BT is not set | 409 | # CONFIG_BT is not set |
386 | # CONFIG_AF_RXRPC is not set | 410 | # CONFIG_AF_RXRPC is not set |
@@ -493,11 +517,13 @@ CONFIG_BLK_DEV_LOOP=y | |||
493 | CONFIG_BLK_DEV_RAM=y | 517 | CONFIG_BLK_DEV_RAM=y |
494 | CONFIG_BLK_DEV_RAM_COUNT=16 | 518 | CONFIG_BLK_DEV_RAM_COUNT=16 |
495 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 519 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
496 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 520 | # CONFIG_BLK_DEV_XIP is not set |
497 | # CONFIG_CDROM_PKTCDVD is not set | 521 | # CONFIG_CDROM_PKTCDVD is not set |
498 | # CONFIG_ATA_OVER_ETH is not set | 522 | # CONFIG_ATA_OVER_ETH is not set |
499 | CONFIG_MISC_DEVICES=y | 523 | CONFIG_MISC_DEVICES=y |
500 | # CONFIG_EEPROM_93CX6 is not set | 524 | # CONFIG_EEPROM_93CX6 is not set |
525 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
526 | CONFIG_HAVE_IDE=y | ||
501 | CONFIG_IDE=m | 527 | CONFIG_IDE=m |
502 | CONFIG_BLK_DEV_IDE=m | 528 | CONFIG_BLK_DEV_IDE=m |
503 | 529 | ||
@@ -519,7 +545,6 @@ CONFIG_IDE_PROC_FS=y | |||
519 | # | 545 | # |
520 | # CONFIG_IDE_GENERIC is not set | 546 | # CONFIG_IDE_GENERIC is not set |
521 | # CONFIG_BLK_DEV_PLATFORM is not set | 547 | # CONFIG_BLK_DEV_PLATFORM is not set |
522 | # CONFIG_IDE_ARM is not set | ||
523 | # CONFIG_BLK_DEV_IDEDMA is not set | 548 | # CONFIG_BLK_DEV_IDEDMA is not set |
524 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 549 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
525 | # CONFIG_BLK_DEV_HD is not set | 550 | # CONFIG_BLK_DEV_HD is not set |
@@ -553,6 +578,7 @@ CONFIG_SMC91X=y | |||
553 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 578 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
554 | # CONFIG_B44 is not set | 579 | # CONFIG_B44 is not set |
555 | CONFIG_NETDEV_1000=y | 580 | CONFIG_NETDEV_1000=y |
581 | # CONFIG_E1000E_ENABLED is not set | ||
556 | CONFIG_NETDEV_10000=y | 582 | CONFIG_NETDEV_10000=y |
557 | 583 | ||
558 | # | 584 | # |
@@ -574,7 +600,6 @@ CONFIG_PPP_MULTILINK=y | |||
574 | # CONFIG_PPPOL2TP is not set | 600 | # CONFIG_PPPOL2TP is not set |
575 | # CONFIG_SLIP is not set | 601 | # CONFIG_SLIP is not set |
576 | CONFIG_SLHC=y | 602 | CONFIG_SLHC=y |
577 | # CONFIG_SHAPER is not set | ||
578 | # CONFIG_NETCONSOLE is not set | 603 | # CONFIG_NETCONSOLE is not set |
579 | # CONFIG_NETPOLL is not set | 604 | # CONFIG_NETPOLL is not set |
580 | # CONFIG_NET_POLL_CONTROLLER is not set | 605 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -671,6 +696,7 @@ CONFIG_HW_RANDOM_OMAP=m | |||
671 | # CONFIG_SYNCLINK_CS is not set | 696 | # CONFIG_SYNCLINK_CS is not set |
672 | # CONFIG_CARDMAN_4000 is not set | 697 | # CONFIG_CARDMAN_4000 is not set |
673 | # CONFIG_CARDMAN_4040 is not set | 698 | # CONFIG_CARDMAN_4040 is not set |
699 | # CONFIG_IPWIRELESS is not set | ||
674 | # CONFIG_RAW_DRIVER is not set | 700 | # CONFIG_RAW_DRIVER is not set |
675 | # CONFIG_TCG_TPM is not set | 701 | # CONFIG_TCG_TPM is not set |
676 | CONFIG_I2C=y | 702 | CONFIG_I2C=y |
@@ -698,12 +724,10 @@ CONFIG_I2C_OMAP=y | |||
698 | # | 724 | # |
699 | # Miscellaneous I2C Chip support | 725 | # Miscellaneous I2C Chip support |
700 | # | 726 | # |
701 | # CONFIG_SENSORS_DS1337 is not set | ||
702 | # CONFIG_SENSORS_DS1374 is not set | ||
703 | # CONFIG_DS1682 is not set | 727 | # CONFIG_DS1682 is not set |
704 | # CONFIG_SENSORS_EEPROM is not set | 728 | # CONFIG_SENSORS_EEPROM is not set |
705 | # CONFIG_SENSORS_PCF8574 is not set | 729 | # CONFIG_SENSORS_PCF8574 is not set |
706 | # CONFIG_SENSORS_PCA9539 is not set | 730 | # CONFIG_PCF8575 is not set |
707 | # CONFIG_SENSORS_PCF8591 is not set | 731 | # CONFIG_SENSORS_PCF8591 is not set |
708 | # CONFIG_ISP1301_OMAP is not set | 732 | # CONFIG_ISP1301_OMAP is not set |
709 | CONFIG_TPS65010=y | 733 | CONFIG_TPS65010=y |
@@ -731,6 +755,7 @@ CONFIG_HWMON=y | |||
731 | # CONFIG_SENSORS_ADM1031 is not set | 755 | # CONFIG_SENSORS_ADM1031 is not set |
732 | # CONFIG_SENSORS_ADM9240 is not set | 756 | # CONFIG_SENSORS_ADM9240 is not set |
733 | # CONFIG_SENSORS_ADT7470 is not set | 757 | # CONFIG_SENSORS_ADT7470 is not set |
758 | # CONFIG_SENSORS_ADT7473 is not set | ||
734 | # CONFIG_SENSORS_ATXP1 is not set | 759 | # CONFIG_SENSORS_ATXP1 is not set |
735 | # CONFIG_SENSORS_DS1621 is not set | 760 | # CONFIG_SENSORS_DS1621 is not set |
736 | # CONFIG_SENSORS_F71805F is not set | 761 | # CONFIG_SENSORS_F71805F is not set |
@@ -758,6 +783,7 @@ CONFIG_HWMON=y | |||
758 | # CONFIG_SENSORS_SMSC47M1 is not set | 783 | # CONFIG_SENSORS_SMSC47M1 is not set |
759 | # CONFIG_SENSORS_SMSC47M192 is not set | 784 | # CONFIG_SENSORS_SMSC47M192 is not set |
760 | # CONFIG_SENSORS_SMSC47B397 is not set | 785 | # CONFIG_SENSORS_SMSC47B397 is not set |
786 | # CONFIG_SENSORS_ADS7828 is not set | ||
761 | # CONFIG_SENSORS_THMC50 is not set | 787 | # CONFIG_SENSORS_THMC50 is not set |
762 | # CONFIG_SENSORS_VT1211 is not set | 788 | # CONFIG_SENSORS_VT1211 is not set |
763 | # CONFIG_SENSORS_W83781D is not set | 789 | # CONFIG_SENSORS_W83781D is not set |
@@ -765,6 +791,7 @@ CONFIG_HWMON=y | |||
765 | # CONFIG_SENSORS_W83792D is not set | 791 | # CONFIG_SENSORS_W83792D is not set |
766 | # CONFIG_SENSORS_W83793 is not set | 792 | # CONFIG_SENSORS_W83793 is not set |
767 | # CONFIG_SENSORS_W83L785TS is not set | 793 | # CONFIG_SENSORS_W83L785TS is not set |
794 | # CONFIG_SENSORS_W83L786NG is not set | ||
768 | # CONFIG_SENSORS_W83627HF is not set | 795 | # CONFIG_SENSORS_W83627HF is not set |
769 | # CONFIG_SENSORS_W83627EHF is not set | 796 | # CONFIG_SENSORS_W83627EHF is not set |
770 | # CONFIG_HWMON_DEBUG_CHIP is not set | 797 | # CONFIG_HWMON_DEBUG_CHIP is not set |
@@ -780,6 +807,7 @@ CONFIG_SSB_POSSIBLE=y | |||
780 | # Multifunction device drivers | 807 | # Multifunction device drivers |
781 | # | 808 | # |
782 | # CONFIG_MFD_SM501 is not set | 809 | # CONFIG_MFD_SM501 is not set |
810 | # CONFIG_MFD_ASIC3 is not set | ||
783 | 811 | ||
784 | # | 812 | # |
785 | # Multimedia devices | 813 | # Multimedia devices |
@@ -865,10 +893,6 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
865 | # | 893 | # |
866 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | 894 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' |
867 | # | 895 | # |
868 | |||
869 | # | ||
870 | # USB Gadget Support | ||
871 | # | ||
872 | # CONFIG_USB_GADGET is not set | 896 | # CONFIG_USB_GADGET is not set |
873 | # CONFIG_MMC is not set | 897 | # CONFIG_MMC is not set |
874 | # CONFIG_NEW_LEDS is not set | 898 | # CONFIG_NEW_LEDS is not set |
@@ -889,12 +913,10 @@ CONFIG_EXT2_FS=y | |||
889 | # CONFIG_XFS_FS is not set | 913 | # CONFIG_XFS_FS is not set |
890 | # CONFIG_GFS2_FS is not set | 914 | # CONFIG_GFS2_FS is not set |
891 | # CONFIG_OCFS2_FS is not set | 915 | # CONFIG_OCFS2_FS is not set |
892 | # CONFIG_MINIX_FS is not set | 916 | CONFIG_DNOTIFY=y |
893 | # CONFIG_ROMFS_FS is not set | ||
894 | CONFIG_INOTIFY=y | 917 | CONFIG_INOTIFY=y |
895 | CONFIG_INOTIFY_USER=y | 918 | CONFIG_INOTIFY_USER=y |
896 | # CONFIG_QUOTA is not set | 919 | # CONFIG_QUOTA is not set |
897 | CONFIG_DNOTIFY=y | ||
898 | CONFIG_AUTOFS_FS=y | 920 | CONFIG_AUTOFS_FS=y |
899 | CONFIG_AUTOFS4_FS=y | 921 | CONFIG_AUTOFS4_FS=y |
900 | # CONFIG_FUSE_FS is not set | 922 | # CONFIG_FUSE_FS is not set |
@@ -948,8 +970,10 @@ CONFIG_JFFS2_RTIME=y | |||
948 | # CONFIG_JFFS2_RUBIN is not set | 970 | # CONFIG_JFFS2_RUBIN is not set |
949 | # CONFIG_CRAMFS is not set | 971 | # CONFIG_CRAMFS is not set |
950 | # CONFIG_VXFS_FS is not set | 972 | # CONFIG_VXFS_FS is not set |
973 | # CONFIG_MINIX_FS is not set | ||
951 | # CONFIG_HPFS_FS is not set | 974 | # CONFIG_HPFS_FS is not set |
952 | # CONFIG_QNX4FS_FS is not set | 975 | # CONFIG_QNX4FS_FS is not set |
976 | # CONFIG_ROMFS_FS is not set | ||
953 | # CONFIG_SYSV_FS is not set | 977 | # CONFIG_SYSV_FS is not set |
954 | # CONFIG_UFS_FS is not set | 978 | # CONFIG_UFS_FS is not set |
955 | CONFIG_NETWORK_FILESYSTEMS=y | 979 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1019,9 +1043,6 @@ CONFIG_NLS_ISO8859_1=m | |||
1019 | # CONFIG_NLS_KOI8_U is not set | 1043 | # CONFIG_NLS_KOI8_U is not set |
1020 | # CONFIG_NLS_UTF8 is not set | 1044 | # CONFIG_NLS_UTF8 is not set |
1021 | # CONFIG_DLM is not set | 1045 | # CONFIG_DLM is not set |
1022 | CONFIG_INSTRUMENTATION=y | ||
1023 | # CONFIG_PROFILING is not set | ||
1024 | # CONFIG_MARKERS is not set | ||
1025 | 1046 | ||
1026 | # | 1047 | # |
1027 | # Kernel hacking | 1048 | # Kernel hacking |
@@ -1045,7 +1066,51 @@ CONFIG_FRAME_POINTER=y | |||
1045 | # CONFIG_KEYS is not set | 1066 | # CONFIG_KEYS is not set |
1046 | # CONFIG_SECURITY is not set | 1067 | # CONFIG_SECURITY is not set |
1047 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1068 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1048 | # CONFIG_CRYPTO is not set | 1069 | CONFIG_CRYPTO=y |
1070 | # CONFIG_CRYPTO_SEQIV is not set | ||
1071 | # CONFIG_CRYPTO_MANAGER is not set | ||
1072 | # CONFIG_CRYPTO_HMAC is not set | ||
1073 | # CONFIG_CRYPTO_XCBC is not set | ||
1074 | # CONFIG_CRYPTO_NULL is not set | ||
1075 | # CONFIG_CRYPTO_MD4 is not set | ||
1076 | # CONFIG_CRYPTO_MD5 is not set | ||
1077 | # CONFIG_CRYPTO_SHA1 is not set | ||
1078 | # CONFIG_CRYPTO_SHA256 is not set | ||
1079 | # CONFIG_CRYPTO_SHA512 is not set | ||
1080 | # CONFIG_CRYPTO_WP512 is not set | ||
1081 | # CONFIG_CRYPTO_TGR192 is not set | ||
1082 | # CONFIG_CRYPTO_GF128MUL is not set | ||
1083 | # CONFIG_CRYPTO_ECB is not set | ||
1084 | # CONFIG_CRYPTO_CBC is not set | ||
1085 | # CONFIG_CRYPTO_PCBC is not set | ||
1086 | # CONFIG_CRYPTO_LRW is not set | ||
1087 | # CONFIG_CRYPTO_XTS is not set | ||
1088 | # CONFIG_CRYPTO_CTR is not set | ||
1089 | # CONFIG_CRYPTO_GCM is not set | ||
1090 | # CONFIG_CRYPTO_CCM is not set | ||
1091 | # CONFIG_CRYPTO_CRYPTD is not set | ||
1092 | # CONFIG_CRYPTO_DES is not set | ||
1093 | # CONFIG_CRYPTO_FCRYPT is not set | ||
1094 | # CONFIG_CRYPTO_BLOWFISH is not set | ||
1095 | # CONFIG_CRYPTO_TWOFISH is not set | ||
1096 | # CONFIG_CRYPTO_SERPENT is not set | ||
1097 | # CONFIG_CRYPTO_AES is not set | ||
1098 | # CONFIG_CRYPTO_CAST5 is not set | ||
1099 | # CONFIG_CRYPTO_CAST6 is not set | ||
1100 | # CONFIG_CRYPTO_TEA is not set | ||
1101 | # CONFIG_CRYPTO_ARC4 is not set | ||
1102 | # CONFIG_CRYPTO_KHAZAD is not set | ||
1103 | # CONFIG_CRYPTO_ANUBIS is not set | ||
1104 | # CONFIG_CRYPTO_SEED is not set | ||
1105 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1106 | # CONFIG_CRYPTO_DEFLATE is not set | ||
1107 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | ||
1108 | # CONFIG_CRYPTO_CRC32C is not set | ||
1109 | # CONFIG_CRYPTO_CAMELLIA is not set | ||
1110 | # CONFIG_CRYPTO_TEST is not set | ||
1111 | # CONFIG_CRYPTO_AUTHENC is not set | ||
1112 | # CONFIG_CRYPTO_LZO is not set | ||
1113 | CONFIG_CRYPTO_HW=y | ||
1049 | 1114 | ||
1050 | # | 1115 | # |
1051 | # Library routines | 1116 | # Library routines |
diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S index 024a9cf469b4..50f667febe29 100644 --- a/arch/arm/kernel/head-common.S +++ b/arch/arm/kernel/head-common.S | |||
@@ -11,6 +11,9 @@ | |||
11 | * | 11 | * |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #define ATAG_CORE 0x54410001 | ||
15 | #define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2) | ||
16 | |||
14 | .type __switch_data, %object | 17 | .type __switch_data, %object |
15 | __switch_data: | 18 | __switch_data: |
16 | .long __mmap_switched | 19 | .long __mmap_switched |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 7898cbc9861a..bff4c6e90dd5 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -29,9 +29,6 @@ | |||
29 | #define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET) | 29 | #define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET) |
30 | #define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET) | 30 | #define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET) |
31 | 31 | ||
32 | #define ATAG_CORE 0x54410001 | ||
33 | #define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2) | ||
34 | |||
35 | 32 | ||
36 | /* | 33 | /* |
37 | * swapper_pg_dir is the virtual address of the initial page table. | 34 | * swapper_pg_dir is the virtual address of the initial page table. |
diff --git a/arch/arm/kernel/kprobes.c b/arch/arm/kernel/kprobes.c index a22a98c43ca5..13e371aad879 100644 --- a/arch/arm/kernel/kprobes.c +++ b/arch/arm/kernel/kprobes.c | |||
@@ -431,6 +431,11 @@ int __kprobes longjmp_break_handler(struct kprobe *p, struct pt_regs *regs) | |||
431 | return 0; | 431 | return 0; |
432 | } | 432 | } |
433 | 433 | ||
434 | int __kprobes arch_trampoline_kprobe(struct kprobe *p) | ||
435 | { | ||
436 | return 0; | ||
437 | } | ||
438 | |||
434 | static struct undef_hook kprobes_break_hook = { | 439 | static struct undef_hook kprobes_break_hook = { |
435 | .instr_mask = 0xffffffff, | 440 | .instr_mask = 0xffffffff, |
436 | .instr_val = KPROBE_BREAKPOINT_INSTRUCTION, | 441 | .instr_val = KPROBE_BREAKPOINT_INSTRUCTION, |
diff --git a/arch/arm/mach-at91/board-sam9263ek.c b/arch/arm/mach-at91/board-sam9263ek.c index 38313abef657..bf103b24c937 100644 --- a/arch/arm/mach-at91/board-sam9263ek.c +++ b/arch/arm/mach-at91/board-sam9263ek.c | |||
@@ -245,10 +245,7 @@ static struct fb_monspecs at91fb_default_monspecs = { | |||
245 | 245 | ||
246 | static void at91_lcdc_power_control(int on) | 246 | static void at91_lcdc_power_control(int on) |
247 | { | 247 | { |
248 | if (on) | 248 | at91_set_gpio_value(AT91_PIN_PA30, on); |
249 | at91_set_gpio_value(AT91_PIN_PD12, 0); /* power up */ | ||
250 | else | ||
251 | at91_set_gpio_value(AT91_PIN_PD12, 1); /* power down */ | ||
252 | } | 249 | } |
253 | 250 | ||
254 | /* Driver datas */ | 251 | /* Driver datas */ |
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index f629c2b5f0c5..ee4964abcaf5 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c | |||
@@ -490,6 +490,11 @@ postcore_initcall(at91_gpio_debugfs_init); | |||
490 | 490 | ||
491 | /*--------------------------------------------------------------------------*/ | 491 | /*--------------------------------------------------------------------------*/ |
492 | 492 | ||
493 | /* This lock class tells lockdep that GPIO irqs are in a different | ||
494 | * category than their parents, so it won't report false recursion. | ||
495 | */ | ||
496 | static struct lock_class_key gpio_lock_class; | ||
497 | |||
493 | /* | 498 | /* |
494 | * Called from the processor-specific init to enable GPIO interrupt support. | 499 | * Called from the processor-specific init to enable GPIO interrupt support. |
495 | */ | 500 | */ |
@@ -510,6 +515,8 @@ void __init at91_gpio_irq_setup(void) | |||
510 | __raw_writel(~0, this->regbase + PIO_IDR); | 515 | __raw_writel(~0, this->regbase + PIO_IDR); |
511 | 516 | ||
512 | for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { | 517 | for (i = 0, pin = this->chipbase; i < 32; i++, pin++) { |
518 | lockdep_set_class(&irq_desc[pin].lock, &gpio_lock_class); | ||
519 | |||
513 | /* | 520 | /* |
514 | * Can use the "simple" and not "edge" handler since it's | 521 | * Can use the "simple" and not "edge" handler since it's |
515 | * shorter, and the AIC handles interrupts sanely. | 522 | * shorter, and the AIC handles interrupts sanely. |
diff --git a/arch/arm/mach-h720x/common.c b/arch/arm/mach-h720x/common.c index 7f31816896ad..45144ad2bed9 100644 --- a/arch/arm/mach-h720x/common.c +++ b/arch/arm/mach-h720x/common.c | |||
@@ -103,7 +103,7 @@ static void | |||
103 | h720x_gpio_handler(unsigned int mask, unsigned int irq, | 103 | h720x_gpio_handler(unsigned int mask, unsigned int irq, |
104 | struct irq_desc *desc) | 104 | struct irq_desc *desc) |
105 | { | 105 | { |
106 | IRQDBG("%s irq: %d\n",__FUNCTION__,irq); | 106 | IRQDBG("%s irq: %d\n", __func__, irq); |
107 | desc = irq_desc + irq; | 107 | desc = irq_desc + irq; |
108 | while (mask) { | 108 | while (mask) { |
109 | if (mask & 1) { | 109 | if (mask & 1) { |
@@ -123,7 +123,7 @@ h720x_gpioa_demux_handler(unsigned int irq_unused, struct irq_desc *desc) | |||
123 | 123 | ||
124 | mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT); | 124 | mask = CPU_REG(GPIO_A_VIRT,GPIO_STAT); |
125 | irq = IRQ_CHAINED_GPIOA(0); | 125 | irq = IRQ_CHAINED_GPIOA(0); |
126 | IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); | 126 | IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq); |
127 | h720x_gpio_handler(mask, irq, desc); | 127 | h720x_gpio_handler(mask, irq, desc); |
128 | } | 128 | } |
129 | 129 | ||
@@ -133,7 +133,7 @@ h720x_gpiob_demux_handler(unsigned int irq_unused, struct irq_desc *desc) | |||
133 | unsigned int mask, irq; | 133 | unsigned int mask, irq; |
134 | mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT); | 134 | mask = CPU_REG(GPIO_B_VIRT,GPIO_STAT); |
135 | irq = IRQ_CHAINED_GPIOB(0); | 135 | irq = IRQ_CHAINED_GPIOB(0); |
136 | IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); | 136 | IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq); |
137 | h720x_gpio_handler(mask, irq, desc); | 137 | h720x_gpio_handler(mask, irq, desc); |
138 | } | 138 | } |
139 | 139 | ||
@@ -144,7 +144,7 @@ h720x_gpioc_demux_handler(unsigned int irq_unused, struct irq_desc *desc) | |||
144 | 144 | ||
145 | mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT); | 145 | mask = CPU_REG(GPIO_C_VIRT,GPIO_STAT); |
146 | irq = IRQ_CHAINED_GPIOC(0); | 146 | irq = IRQ_CHAINED_GPIOC(0); |
147 | IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); | 147 | IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq); |
148 | h720x_gpio_handler(mask, irq, desc); | 148 | h720x_gpio_handler(mask, irq, desc); |
149 | } | 149 | } |
150 | 150 | ||
@@ -155,7 +155,7 @@ h720x_gpiod_demux_handler(unsigned int irq_unused, struct irq_desc *desc) | |||
155 | 155 | ||
156 | mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT); | 156 | mask = CPU_REG(GPIO_D_VIRT,GPIO_STAT); |
157 | irq = IRQ_CHAINED_GPIOD(0); | 157 | irq = IRQ_CHAINED_GPIOD(0); |
158 | IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); | 158 | IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq); |
159 | h720x_gpio_handler(mask, irq, desc); | 159 | h720x_gpio_handler(mask, irq, desc); |
160 | } | 160 | } |
161 | 161 | ||
@@ -167,7 +167,7 @@ h720x_gpioe_demux_handler(unsigned int irq_unused, struct irq_desc *desc) | |||
167 | 167 | ||
168 | mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT); | 168 | mask = CPU_REG(GPIO_E_VIRT,GPIO_STAT); |
169 | irq = IRQ_CHAINED_GPIOE(0); | 169 | irq = IRQ_CHAINED_GPIOE(0); |
170 | IRQDBG("%s mask: 0x%08x irq: %d\n",__FUNCTION__,mask,irq); | 170 | IRQDBG("%s mask: 0x%08x irq: %d\n", __func__, mask,irq); |
171 | h720x_gpio_handler(mask, irq, desc); | 171 | h720x_gpio_handler(mask, irq, desc); |
172 | } | 172 | } |
173 | #endif | 173 | #endif |
diff --git a/arch/arm/mach-imx/dma.c b/arch/arm/mach-imx/dma.c index bc6fb02d213b..a59ff2987cb7 100644 --- a/arch/arm/mach-imx/dma.c +++ b/arch/arm/mach-imx/dma.c | |||
@@ -54,7 +54,7 @@ static inline int imx_dma_sg_next(imx_dmach_t dma_ch, unsigned int lastcount) | |||
54 | 54 | ||
55 | if (!imxdma->name) { | 55 | if (!imxdma->name) { |
56 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", | 56 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", |
57 | __FUNCTION__, dma_ch); | 57 | __func__, dma_ch); |
58 | return 0; | 58 | return 0; |
59 | } | 59 | } |
60 | 60 | ||
@@ -288,7 +288,7 @@ imx_dma_setup_handlers(imx_dmach_t dma_ch, | |||
288 | 288 | ||
289 | if (!imxdma->name) { | 289 | if (!imxdma->name) { |
290 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", | 290 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", |
291 | __FUNCTION__, dma_ch); | 291 | __func__, dma_ch); |
292 | return -ENODEV; | 292 | return -ENODEV; |
293 | } | 293 | } |
294 | 294 | ||
@@ -321,7 +321,7 @@ void imx_dma_enable(imx_dmach_t dma_ch) | |||
321 | 321 | ||
322 | if (!imxdma->name) { | 322 | if (!imxdma->name) { |
323 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", | 323 | printk(KERN_CRIT "%s: called for not allocated channel %d\n", |
324 | __FUNCTION__, dma_ch); | 324 | __func__, dma_ch); |
325 | return; | 325 | return; |
326 | } | 326 | } |
327 | 327 | ||
@@ -365,7 +365,7 @@ int imx_dma_request(imx_dmach_t dma_ch, const char *name) | |||
365 | 365 | ||
366 | if (dma_ch >= IMX_DMA_CHANNELS) { | 366 | if (dma_ch >= IMX_DMA_CHANNELS) { |
367 | printk(KERN_CRIT "%s: called for non-existed channel %d\n", | 367 | printk(KERN_CRIT "%s: called for non-existed channel %d\n", |
368 | __FUNCTION__, dma_ch); | 368 | __func__, dma_ch); |
369 | return -EINVAL; | 369 | return -EINVAL; |
370 | } | 370 | } |
371 | 371 | ||
@@ -396,7 +396,7 @@ void imx_dma_free(imx_dmach_t dma_ch) | |||
396 | if (!imxdma->name) { | 396 | if (!imxdma->name) { |
397 | printk(KERN_CRIT | 397 | printk(KERN_CRIT |
398 | "%s: trying to free channel %d which is already freed\n", | 398 | "%s: trying to free channel %d which is already freed\n", |
399 | __FUNCTION__, dma_ch); | 399 | __func__, dma_ch); |
400 | return; | 400 | return; |
401 | } | 401 | } |
402 | 402 | ||
@@ -456,7 +456,7 @@ imx_dma_request_by_prio(imx_dmach_t * pdma_ch, const char *name, | |||
456 | } | 456 | } |
457 | } | 457 | } |
458 | 458 | ||
459 | printk(KERN_ERR "%s: no free DMA channel found\n", __FUNCTION__); | 459 | printk(KERN_ERR "%s: no free DMA channel found\n", __func__); |
460 | 460 | ||
461 | return -ENODEV; | 461 | return -ENODEV; |
462 | } | 462 | } |
diff --git a/arch/arm/mach-imx/irq.c b/arch/arm/mach-imx/irq.c index a7465db84893..e6695c4e623b 100644 --- a/arch/arm/mach-imx/irq.c +++ b/arch/arm/mach-imx/irq.c | |||
@@ -160,21 +160,21 @@ imx_gpio_irq_type(unsigned int _irq, unsigned int type) | |||
160 | static void | 160 | static void |
161 | imx_gpio_ack_irq(unsigned int irq) | 161 | imx_gpio_ack_irq(unsigned int irq) |
162 | { | 162 | { |
163 | DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq); | 163 | DEBUG_IRQ("%s: irq %d\n", __func__, irq); |
164 | ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32); | 164 | ISR(IRQ_TO_REG(irq)) = 1 << ((irq - IRQ_GPIOA(0)) % 32); |
165 | } | 165 | } |
166 | 166 | ||
167 | static void | 167 | static void |
168 | imx_gpio_mask_irq(unsigned int irq) | 168 | imx_gpio_mask_irq(unsigned int irq) |
169 | { | 169 | { |
170 | DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq); | 170 | DEBUG_IRQ("%s: irq %d\n", __func__, irq); |
171 | IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32)); | 171 | IMR(IRQ_TO_REG(irq)) &= ~( 1 << ((irq - IRQ_GPIOA(0)) % 32)); |
172 | } | 172 | } |
173 | 173 | ||
174 | static void | 174 | static void |
175 | imx_gpio_unmask_irq(unsigned int irq) | 175 | imx_gpio_unmask_irq(unsigned int irq) |
176 | { | 176 | { |
177 | DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, irq); | 177 | DEBUG_IRQ("%s: irq %d\n", __func__, irq); |
178 | IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32); | 178 | IMR(IRQ_TO_REG(irq)) |= 1 << ((irq - IRQ_GPIOA(0)) % 32); |
179 | } | 179 | } |
180 | 180 | ||
diff --git a/arch/arm/mach-iop13xx/iq81340mc.c b/arch/arm/mach-iop13xx/iq81340mc.c index 268a8d84999c..77b24cd1d88d 100644 --- a/arch/arm/mach-iop13xx/iq81340mc.c +++ b/arch/arm/mach-iop13xx/iq81340mc.c | |||
@@ -81,7 +81,7 @@ static void __init iq81340mc_init(void) | |||
81 | static void __init iq81340mc_timer_init(void) | 81 | static void __init iq81340mc_timer_init(void) |
82 | { | 82 | { |
83 | unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio(); | 83 | unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio(); |
84 | printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq); | 84 | printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq); |
85 | iop_init_time(bus_freq); | 85 | iop_init_time(bus_freq); |
86 | } | 86 | } |
87 | 87 | ||
diff --git a/arch/arm/mach-iop13xx/iq81340sc.c b/arch/arm/mach-iop13xx/iq81340sc.c index a51ffd2683e5..e8522b3b8163 100644 --- a/arch/arm/mach-iop13xx/iq81340sc.c +++ b/arch/arm/mach-iop13xx/iq81340sc.c | |||
@@ -83,7 +83,7 @@ static void __init iq81340sc_init(void) | |||
83 | static void __init iq81340sc_timer_init(void) | 83 | static void __init iq81340sc_timer_init(void) |
84 | { | 84 | { |
85 | unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio(); | 85 | unsigned long bus_freq = iop13xx_core_freq() / iop13xx_xsi_bus_ratio(); |
86 | printk(KERN_DEBUG "%s: bus frequency: %lu\n", __FUNCTION__, bus_freq); | 86 | printk(KERN_DEBUG "%s: bus frequency: %lu\n", __func__, bus_freq); |
87 | iop_init_time(bus_freq); | 87 | iop_init_time(bus_freq); |
88 | } | 88 | } |
89 | 89 | ||
diff --git a/arch/arm/mach-iop13xx/pci.c b/arch/arm/mach-iop13xx/pci.c index 99d94cb1bafd..7825c1aaa27b 100644 --- a/arch/arm/mach-iop13xx/pci.c +++ b/arch/arm/mach-iop13xx/pci.c | |||
@@ -94,13 +94,13 @@ void iop13xx_map_pci_memory(void) | |||
94 | , 0, iop13xx_atux_mem_size, MT_DEVICE); | 94 | , 0, iop13xx_atux_mem_size, MT_DEVICE); |
95 | if (!iop13xx_atux_mem_base) { | 95 | if (!iop13xx_atux_mem_base) { |
96 | printk("%s: atux allocation " | 96 | printk("%s: atux allocation " |
97 | "failed\n", __FUNCTION__); | 97 | "failed\n", __func__); |
98 | BUG(); | 98 | BUG(); |
99 | } | 99 | } |
100 | } else | 100 | } else |
101 | iop13xx_atux_mem_size = 0; | 101 | iop13xx_atux_mem_size = 0; |
102 | PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n", | 102 | PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n", |
103 | __FUNCTION__, atu, iop13xx_atux_mem_size, | 103 | __func__, atu, iop13xx_atux_mem_size, |
104 | iop13xx_atux_mem_base); | 104 | iop13xx_atux_mem_base); |
105 | break; | 105 | break; |
106 | case 1: | 106 | case 1: |
@@ -120,13 +120,13 @@ void iop13xx_map_pci_memory(void) | |||
120 | , 0, iop13xx_atue_mem_size, MT_DEVICE); | 120 | , 0, iop13xx_atue_mem_size, MT_DEVICE); |
121 | if (!iop13xx_atue_mem_base) { | 121 | if (!iop13xx_atue_mem_base) { |
122 | printk("%s: atue allocation " | 122 | printk("%s: atue allocation " |
123 | "failed\n", __FUNCTION__); | 123 | "failed\n", __func__); |
124 | BUG(); | 124 | BUG(); |
125 | } | 125 | } |
126 | } else | 126 | } else |
127 | iop13xx_atue_mem_size = 0; | 127 | iop13xx_atue_mem_size = 0; |
128 | PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n", | 128 | PRINTK("%s: atu: %d bus_size: %d mem_base: %x\n", |
129 | __FUNCTION__, atu, iop13xx_atue_mem_size, | 129 | __func__, atu, iop13xx_atue_mem_size, |
130 | iop13xx_atue_mem_base); | 130 | iop13xx_atue_mem_base); |
131 | break; | 131 | break; |
132 | } | 132 | } |
diff --git a/arch/arm/mach-iop13xx/setup.c b/arch/arm/mach-iop13xx/setup.c index bfe0c87e3397..246f6d478720 100644 --- a/arch/arm/mach-iop13xx/setup.c +++ b/arch/arm/mach-iop13xx/setup.c | |||
@@ -519,7 +519,7 @@ void __init iop13xx_platform_init(void) | |||
519 | if (iq8134x_flash_resource.end > iq8134x_flash_resource.start) | 519 | if (iq8134x_flash_resource.end > iq8134x_flash_resource.start) |
520 | iop13xx_devices[plat_idx++] = &iq8134x_flash; | 520 | iop13xx_devices[plat_idx++] = &iq8134x_flash; |
521 | else | 521 | else |
522 | printk(KERN_ERR "%s: Failed to probe flash size\n", __FUNCTION__); | 522 | printk(KERN_ERR "%s: Failed to probe flash size\n", __func__); |
523 | #endif | 523 | #endif |
524 | 524 | ||
525 | platform_add_devices(iop13xx_devices, plat_idx); | 525 | platform_add_devices(iop13xx_devices, plat_idx); |
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index bf04121d1a31..64be341109b3 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
@@ -87,7 +87,7 @@ static inline int check_master_abort(void) | |||
87 | if (isr & PCI_ISR_PFE) { | 87 | if (isr & PCI_ISR_PFE) { |
88 | /* make sure the Master Abort bit is reset */ | 88 | /* make sure the Master Abort bit is reset */ |
89 | *PCI_ISR = PCI_ISR_PFE; | 89 | *PCI_ISR = PCI_ISR_PFE; |
90 | pr_debug("%s failed\n", __FUNCTION__); | 90 | pr_debug("%s failed\n", __func__); |
91 | return 1; | 91 | return 1; |
92 | } | 92 | } |
93 | 93 | ||
diff --git a/arch/arm/mach-ixp4xx/gtwx5715-pci.c b/arch/arm/mach-ixp4xx/gtwx5715-pci.c index 0d5a42455820..49dec7868807 100644 --- a/arch/arm/mach-ixp4xx/gtwx5715-pci.c +++ b/arch/arm/mach-ixp4xx/gtwx5715-pci.c | |||
@@ -65,7 +65,7 @@ static int __init gtwx5715_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
65 | else | 65 | else |
66 | rc = gtwx5715_irqmap[slot][pin-1]; | 66 | rc = gtwx5715_irqmap[slot][pin-1]; |
67 | 67 | ||
68 | printk("%s: Mapped slot %d pin %d to IRQ %d\n", __FUNCTION__,slot, pin, rc); | 68 | printk("%s: Mapped slot %d pin %d to IRQ %d\n", __func__, slot, pin, rc); |
69 | return(rc); | 69 | return(rc); |
70 | } | 70 | } |
71 | 71 | ||
diff --git a/arch/arm/mach-netx/generic.c b/arch/arm/mach-netx/generic.c index b9ca8f98265d..fd7537f7d11e 100644 --- a/arch/arm/mach-netx/generic.c +++ b/arch/arm/mach-netx/generic.c | |||
@@ -133,7 +133,7 @@ netx_hif_ack_irq(unsigned int _irq) | |||
133 | val &= ~((1 << 24) << irq); | 133 | val &= ~((1 << 24) << irq); |
134 | writel(val, NETX_DPMAS_INT_EN); | 134 | writel(val, NETX_DPMAS_INT_EN); |
135 | 135 | ||
136 | DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq); | 136 | DEBUG_IRQ("%s: irq %d\n", __func__, _irq); |
137 | } | 137 | } |
138 | 138 | ||
139 | static void | 139 | static void |
@@ -145,7 +145,7 @@ netx_hif_mask_irq(unsigned int _irq) | |||
145 | val = readl(NETX_DPMAS_INT_EN); | 145 | val = readl(NETX_DPMAS_INT_EN); |
146 | val &= ~((1 << 24) << irq); | 146 | val &= ~((1 << 24) << irq); |
147 | writel(val, NETX_DPMAS_INT_EN); | 147 | writel(val, NETX_DPMAS_INT_EN); |
148 | DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq); | 148 | DEBUG_IRQ("%s: irq %d\n", __func__, _irq); |
149 | } | 149 | } |
150 | 150 | ||
151 | static void | 151 | static void |
@@ -157,7 +157,7 @@ netx_hif_unmask_irq(unsigned int _irq) | |||
157 | val = readl(NETX_DPMAS_INT_EN); | 157 | val = readl(NETX_DPMAS_INT_EN); |
158 | val |= (1 << 24) << irq; | 158 | val |= (1 << 24) << irq; |
159 | writel(val, NETX_DPMAS_INT_EN); | 159 | writel(val, NETX_DPMAS_INT_EN); |
160 | DEBUG_IRQ("%s: irq %d\n", __FUNCTION__, _irq); | 160 | DEBUG_IRQ("%s: irq %d\n", __func__, _irq); |
161 | } | 161 | } |
162 | 162 | ||
163 | static struct irq_chip netx_hif_chip = { | 163 | static struct irq_chip netx_hif_chip = { |
diff --git a/arch/arm/mach-ns9xxx/gpio.c b/arch/arm/mach-ns9xxx/gpio.c index b2230213b983..5286e9fc1d30 100644 --- a/arch/arm/mach-ns9xxx/gpio.c +++ b/arch/arm/mach-ns9xxx/gpio.c | |||
@@ -31,7 +31,7 @@ | |||
31 | static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock); | 31 | static spinlock_t gpio_lock = __SPIN_LOCK_UNLOCKED(gpio_lock); |
32 | 32 | ||
33 | /* only access gpiores with atomic ops */ | 33 | /* only access gpiores with atomic ops */ |
34 | static DECLARE_BITMAP(gpiores, GPIO_MAX); | 34 | static DECLARE_BITMAP(gpiores, GPIO_MAX + 1); |
35 | 35 | ||
36 | static inline int ns9xxx_valid_gpio(unsigned gpio) | 36 | static inline int ns9xxx_valid_gpio(unsigned gpio) |
37 | { | 37 | { |
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index 070345ee39a5..507987720015 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -350,6 +350,10 @@ static void __init h2_init_smc91x(void) | |||
350 | 350 | ||
351 | static struct i2c_board_info __initdata h2_i2c_board_info[] = { | 351 | static struct i2c_board_info __initdata h2_i2c_board_info[] = { |
352 | { | 352 | { |
353 | I2C_BOARD_INFO("tps65010", 0x48), | ||
354 | .type = "tps65010", | ||
355 | .irq = OMAP_GPIO_IRQ(58), | ||
356 | }, { | ||
353 | I2C_BOARD_INFO("isp1301_omap", 0x2d), | 357 | I2C_BOARD_INFO("isp1301_omap", 0x2d), |
354 | .type = "isp1301_omap", | 358 | .type = "isp1301_omap", |
355 | .irq = OMAP_GPIO_IRQ(2), | 359 | .irq = OMAP_GPIO_IRQ(2), |
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 6fc516855a8c..c3ef1ee5f77b 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/mtd/nand.h> | 26 | #include <linux/mtd/nand.h> |
27 | #include <linux/mtd/partitions.h> | 27 | #include <linux/mtd/partitions.h> |
28 | #include <linux/input.h> | 28 | #include <linux/input.h> |
29 | #include <linux/spi/spi.h> | ||
29 | #include <linux/i2c/tps65010.h> | 30 | #include <linux/i2c/tps65010.h> |
30 | 31 | ||
31 | #include <asm/setup.h> | 32 | #include <asm/setup.h> |
@@ -51,6 +52,8 @@ | |||
51 | #include <asm/arch/mcbsp.h> | 52 | #include <asm/arch/mcbsp.h> |
52 | #include <asm/arch/omap-alsa.h> | 53 | #include <asm/arch/omap-alsa.h> |
53 | 54 | ||
55 | #define H3_TS_GPIO 48 | ||
56 | |||
54 | static int h3_keymap[] = { | 57 | static int h3_keymap[] = { |
55 | KEY(0, 0, KEY_LEFT), | 58 | KEY(0, 0, KEY_LEFT), |
56 | KEY(0, 1, KEY_RIGHT), | 59 | KEY(0, 1, KEY_RIGHT), |
@@ -373,6 +376,17 @@ static struct platform_device h3_lcd_device = { | |||
373 | .id = -1, | 376 | .id = -1, |
374 | }; | 377 | }; |
375 | 378 | ||
379 | static struct spi_board_info h3_spi_board_info[] __initdata = { | ||
380 | [0] = { | ||
381 | .modalias = "tsc2101", | ||
382 | .bus_num = 2, | ||
383 | .chip_select = 0, | ||
384 | .irq = OMAP_GPIO_IRQ(H3_TS_GPIO), | ||
385 | .max_speed_hz = 16000000, | ||
386 | /* .platform_data = &tsc_platform_data, */ | ||
387 | }, | ||
388 | }; | ||
389 | |||
376 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { | 390 | static struct omap_mcbsp_reg_cfg mcbsp_regs = { |
377 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), | 391 | .spcr2 = FREE | FRST | GRST | XRST | XINTM(3), |
378 | .spcr1 = RINTM(3) | RRST, | 392 | .spcr1 = RINTM(3) | RRST, |
@@ -457,6 +471,14 @@ static struct omap_board_config_kernel h3_config[] __initdata = { | |||
457 | { OMAP_TAG_LCD, &h3_lcd_config }, | 471 | { OMAP_TAG_LCD, &h3_lcd_config }, |
458 | }; | 472 | }; |
459 | 473 | ||
474 | static struct i2c_board_info __initdata h3_i2c_board_info[] = { | ||
475 | { | ||
476 | I2C_BOARD_INFO("tps65010", 0x48), | ||
477 | .type = "tps65013", | ||
478 | /* .irq = OMAP_GPIO_IRQ(??), */ | ||
479 | }, | ||
480 | }; | ||
481 | |||
460 | static struct omap_gpio_switch h3_gpio_switches[] __initdata = { | 482 | static struct omap_gpio_switch h3_gpio_switches[] __initdata = { |
461 | { | 483 | { |
462 | .name = "mmc_slot", | 484 | .name = "mmc_slot", |
diff --git a/arch/arm/mach-omap1/pm.c b/arch/arm/mach-omap1/pm.c index 8eb5dcdaead2..e6c64e10b7ec 100644 --- a/arch/arm/mach-omap1/pm.c +++ b/arch/arm/mach-omap1/pm.c | |||
@@ -717,7 +717,7 @@ static int __init omap_pm_init(void) | |||
717 | #endif | 717 | #endif |
718 | 718 | ||
719 | #ifdef CONFIG_OMAP_32K_TIMER | 719 | #ifdef CONFIG_OMAP_32K_TIMER |
720 | error = sysfs_create_file(power_kobj, &sleep_while_idle_attr); | 720 | error = sysfs_create_file(power_kobj, &sleep_while_idle_attr.attr); |
721 | if (error) | 721 | if (error) |
722 | printk(KERN_ERR "sysfs_create_file failed: %d\n", error); | 722 | printk(KERN_ERR "sysfs_create_file failed: %d\n", error); |
723 | #endif | 723 | #endif |
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c index 5a4091f582ed..69c8174f3aac 100644 --- a/arch/arm/mach-omap2/io.c +++ b/arch/arm/mach-omap2/io.c | |||
@@ -42,6 +42,12 @@ static struct map_desc omap2_io_desc[] __initdata = { | |||
42 | .length = L3_24XX_SIZE, | 42 | .length = L3_24XX_SIZE, |
43 | .type = MT_DEVICE | 43 | .type = MT_DEVICE |
44 | }, | 44 | }, |
45 | { | ||
46 | .virtual = L4_24XX_VIRT, | ||
47 | .pfn = __phys_to_pfn(L4_24XX_PHYS), | ||
48 | .length = L4_24XX_SIZE, | ||
49 | .type = MT_DEVICE | ||
50 | }, | ||
45 | #ifdef CONFIG_ARCH_OMAP2430 | 51 | #ifdef CONFIG_ARCH_OMAP2430 |
46 | { | 52 | { |
47 | .virtual = L4_WK_243X_VIRT, | 53 | .virtual = L4_WK_243X_VIRT, |
diff --git a/arch/arm/mach-orion/addr-map.c b/arch/arm/mach-orion/addr-map.c index 2e2fd63643c3..58cc3c0333b6 100644 --- a/arch/arm/mach-orion/addr-map.c +++ b/arch/arm/mach-orion/addr-map.c | |||
@@ -97,14 +97,20 @@ | |||
97 | #define PCIE_BAR_CTRL(n) ORION_PCIE_REG(0x1804 + ((n - 1) * 4)) | 97 | #define PCIE_BAR_CTRL(n) ORION_PCIE_REG(0x1804 + ((n - 1) * 4)) |
98 | #define PCIE_BAR_LO(n) ORION_PCIE_REG(0x0010 + ((n) * 8)) | 98 | #define PCIE_BAR_LO(n) ORION_PCIE_REG(0x0010 + ((n) * 8)) |
99 | #define PCIE_BAR_HI(n) ORION_PCIE_REG(0x0014 + ((n) * 8)) | 99 | #define PCIE_BAR_HI(n) ORION_PCIE_REG(0x0014 + ((n) * 8)) |
100 | #define PCIE_WIN_CTRL(n) ORION_PCIE_REG(0x1820 + ((n) << 4)) | 100 | #define PCIE_WIN_CTRL(n) (((n) < 5) ? \ |
101 | #define PCIE_WIN_BASE(n) ORION_PCIE_REG(0x1824 + ((n) << 4)) | 101 | ORION_PCIE_REG(0x1820 + ((n) << 4)) : \ |
102 | #define PCIE_WIN_REMAP(n) ORION_PCIE_REG(0x182c + ((n) << 4)) | 102 | ORION_PCIE_REG(0x1880)) |
103 | #define PCIE_WIN_BASE(n) (((n) < 5) ? \ | ||
104 | ORION_PCIE_REG(0x1824 + ((n) << 4)) : \ | ||
105 | ORION_PCIE_REG(0x1884)) | ||
106 | #define PCIE_WIN_REMAP(n) (((n) < 5) ? \ | ||
107 | ORION_PCIE_REG(0x182c + ((n) << 4)) : \ | ||
108 | ORION_PCIE_REG(0x188c)) | ||
103 | #define PCIE_DEFWIN_CTRL ORION_PCIE_REG(0x18b0) | 109 | #define PCIE_DEFWIN_CTRL ORION_PCIE_REG(0x18b0) |
104 | #define PCIE_EXPROM_WIN_CTRL ORION_PCIE_REG(0x18c0) | 110 | #define PCIE_EXPROM_WIN_CTRL ORION_PCIE_REG(0x18c0) |
105 | #define PCIE_EXPROM_WIN_REMP ORION_PCIE_REG(0x18c4) | 111 | #define PCIE_EXPROM_WIN_REMP ORION_PCIE_REG(0x18c4) |
106 | #define PCIE_MAX_BARS 3 | 112 | #define PCIE_MAX_BARS 3 |
107 | #define PCIE_MAX_WINS 5 | 113 | #define PCIE_MAX_WINS 6 |
108 | 114 | ||
109 | /* | 115 | /* |
110 | * Use PCIE BAR '1' for all DDR banks | 116 | * Use PCIE BAR '1' for all DDR banks |
diff --git a/arch/arm/mach-orion/common.c b/arch/arm/mach-orion/common.c index 5f0ee4b8a9b7..bbc2b4ec932c 100644 --- a/arch/arm/mach-orion/common.c +++ b/arch/arm/mach-orion/common.c | |||
@@ -17,7 +17,9 @@ | |||
17 | #include <linux/mv643xx_eth.h> | 17 | #include <linux/mv643xx_eth.h> |
18 | #include <linux/mv643xx_i2c.h> | 18 | #include <linux/mv643xx_i2c.h> |
19 | #include <asm/page.h> | 19 | #include <asm/page.h> |
20 | #include <asm/setup.h> | ||
20 | #include <asm/timex.h> | 21 | #include <asm/timex.h> |
22 | #include <asm/mach/arch.h> | ||
21 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
22 | #include <asm/arch/hardware.h> | 24 | #include <asm/arch/hardware.h> |
23 | #include "common.h" | 25 | #include "common.h" |
@@ -177,8 +179,8 @@ static struct platform_device orion_ehci1 = { | |||
177 | 179 | ||
178 | static struct resource orion_eth_shared_resources[] = { | 180 | static struct resource orion_eth_shared_resources[] = { |
179 | { | 181 | { |
180 | .start = ORION_ETH_PHYS_BASE, | 182 | .start = ORION_ETH_PHYS_BASE + 0x2000, |
181 | .end = ORION_ETH_PHYS_BASE + 0xffff, | 183 | .end = ORION_ETH_PHYS_BASE + 0x3fff, |
182 | .flags = IORESOURCE_MEM, | 184 | .flags = IORESOURCE_MEM, |
183 | }, | 185 | }, |
184 | }; | 186 | }; |
@@ -347,3 +349,21 @@ void __init orion_init(void) | |||
347 | platform_device_register(&orion_ehci1); | 349 | platform_device_register(&orion_ehci1); |
348 | platform_device_register(&orion_i2c); | 350 | platform_device_register(&orion_i2c); |
349 | } | 351 | } |
352 | |||
353 | /* | ||
354 | * Many orion-based systems have buggy bootloader implementations. | ||
355 | * This is a common fixup for bogus memory tags. | ||
356 | */ | ||
357 | void __init tag_fixup_mem32(struct machine_desc *mdesc, struct tag *t, | ||
358 | char **from, struct meminfo *meminfo) | ||
359 | { | ||
360 | for (; t->hdr.size; t = tag_next(t)) | ||
361 | if (t->hdr.tag == ATAG_MEM && | ||
362 | (!t->u.mem.size || t->u.mem.size & ~PAGE_MASK || | ||
363 | t->u.mem.start & ~PAGE_MASK)) { | ||
364 | printk(KERN_WARNING | ||
365 | "Clearing invalid memory bank %dKB@0x%08x\n", | ||
366 | t->u.mem.size / 1024, t->u.mem.start); | ||
367 | t->hdr.tag = 0; | ||
368 | } | ||
369 | } | ||
diff --git a/arch/arm/mach-orion/common.h b/arch/arm/mach-orion/common.h index 10154ec885df..501497cc2c4d 100644 --- a/arch/arm/mach-orion/common.h +++ b/arch/arm/mach-orion/common.h | |||
@@ -83,4 +83,10 @@ struct mv_sata_platform_data; | |||
83 | 83 | ||
84 | void __init orion_sata_init(struct mv_sata_platform_data *sata_data); | 84 | void __init orion_sata_init(struct mv_sata_platform_data *sata_data); |
85 | 85 | ||
86 | struct machine_desc; | ||
87 | struct meminfo; | ||
88 | struct tag; | ||
89 | extern void __init tag_fixup_mem32(struct machine_desc *, struct tag *, | ||
90 | char **, struct meminfo *); | ||
91 | |||
86 | #endif /* __ARCH_ORION_COMMON_H__ */ | 92 | #endif /* __ARCH_ORION_COMMON_H__ */ |
diff --git a/arch/arm/mach-orion/dns323-setup.c b/arch/arm/mach-orion/dns323-setup.c index 02b280c24820..076e155ad510 100644 --- a/arch/arm/mach-orion/dns323-setup.c +++ b/arch/arm/mach-orion/dns323-setup.c | |||
@@ -319,4 +319,5 @@ MACHINE_START(DNS323, "D-Link DNS-323") | |||
319 | .map_io = orion_map_io, | 319 | .map_io = orion_map_io, |
320 | .init_irq = orion_init_irq, | 320 | .init_irq = orion_init_irq, |
321 | .timer = &orion_timer, | 321 | .timer = &orion_timer, |
322 | .fixup = tag_fixup_mem32, | ||
322 | MACHINE_END | 323 | MACHINE_END |
diff --git a/arch/arm/mach-orion/gpio.c b/arch/arm/mach-orion/gpio.c index d5f00c86d616..f713818c66a3 100644 --- a/arch/arm/mach-orion/gpio.c +++ b/arch/arm/mach-orion/gpio.c | |||
@@ -36,7 +36,7 @@ int gpio_direction_input(unsigned pin) | |||
36 | unsigned long flags; | 36 | unsigned long flags; |
37 | 37 | ||
38 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { | 38 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { |
39 | pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); | 39 | pr_debug("%s: invalid GPIO %d\n", __func__, pin); |
40 | return -EINVAL; | 40 | return -EINVAL; |
41 | } | 41 | } |
42 | 42 | ||
@@ -62,7 +62,7 @@ int gpio_direction_output(unsigned pin, int value) | |||
62 | int mask; | 62 | int mask; |
63 | 63 | ||
64 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { | 64 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { |
65 | pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); | 65 | pr_debug("%s: invalid GPIO %d\n", __func__, pin); |
66 | return -EINVAL; | 66 | return -EINVAL; |
67 | } | 67 | } |
68 | 68 | ||
@@ -141,7 +141,7 @@ int gpio_request(unsigned pin, const char *label) | |||
141 | unsigned long flags; | 141 | unsigned long flags; |
142 | 142 | ||
143 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { | 143 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { |
144 | pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); | 144 | pr_debug("%s: invalid GPIO %d\n", __func__, pin); |
145 | return -EINVAL; | 145 | return -EINVAL; |
146 | } | 146 | } |
147 | 147 | ||
@@ -149,7 +149,7 @@ int gpio_request(unsigned pin, const char *label) | |||
149 | 149 | ||
150 | if (gpio_label[pin]) { | 150 | if (gpio_label[pin]) { |
151 | pr_debug("%s: GPIO %d already used as %s\n", | 151 | pr_debug("%s: GPIO %d already used as %s\n", |
152 | __FUNCTION__, pin, gpio_label[pin]); | 152 | __func__, pin, gpio_label[pin]); |
153 | ret = -EBUSY; | 153 | ret = -EBUSY; |
154 | } else | 154 | } else |
155 | gpio_label[pin] = label ? label : "?"; | 155 | gpio_label[pin] = label ? label : "?"; |
@@ -162,12 +162,12 @@ EXPORT_SYMBOL(gpio_request); | |||
162 | void gpio_free(unsigned pin) | 162 | void gpio_free(unsigned pin) |
163 | { | 163 | { |
164 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { | 164 | if (pin >= GPIO_MAX || !test_bit(pin, gpio_valid)) { |
165 | pr_debug("%s: invalid GPIO %d\n", __FUNCTION__, pin); | 165 | pr_debug("%s: invalid GPIO %d\n", __func__, pin); |
166 | return; | 166 | return; |
167 | } | 167 | } |
168 | 168 | ||
169 | if (!gpio_label[pin]) | 169 | if (!gpio_label[pin]) |
170 | pr_warning("%s: GPIO %d already freed\n", __FUNCTION__, pin); | 170 | pr_warning("%s: GPIO %d already freed\n", __func__, pin); |
171 | else | 171 | else |
172 | gpio_label[pin] = NULL; | 172 | gpio_label[pin] = NULL; |
173 | } | 173 | } |
diff --git a/arch/arm/mach-orion/kurobox_pro-setup.c b/arch/arm/mach-orion/kurobox_pro-setup.c index 6817aca4aa26..785a07bdf1e2 100644 --- a/arch/arm/mach-orion/kurobox_pro-setup.c +++ b/arch/arm/mach-orion/kurobox_pro-setup.c | |||
@@ -240,4 +240,5 @@ MACHINE_START(KUROBOX_PRO, "Buffalo/Revogear Kurobox Pro") | |||
240 | .map_io = orion_map_io, | 240 | .map_io = orion_map_io, |
241 | .init_irq = orion_init_irq, | 241 | .init_irq = orion_init_irq, |
242 | .timer = &orion_timer, | 242 | .timer = &orion_timer, |
243 | .fixup = tag_fixup_mem32, | ||
243 | MACHINE_END | 244 | MACHINE_END |
diff --git a/arch/arm/mach-orion/ts209-setup.c b/arch/arm/mach-orion/ts209-setup.c index b8cfe6813e9d..45764dad16d0 100644 --- a/arch/arm/mach-orion/ts209-setup.c +++ b/arch/arm/mach-orion/ts209-setup.c | |||
@@ -357,4 +357,5 @@ MACHINE_START(TS209, "QNAP TS-109/TS-209") | |||
357 | .map_io = orion_map_io, | 357 | .map_io = orion_map_io, |
358 | .init_irq = orion_init_irq, | 358 | .init_irq = orion_init_irq, |
359 | .timer = &orion_timer, | 359 | .timer = &orion_timer, |
360 | .fixup = tag_fixup_mem32, | ||
360 | MACHINE_END | 361 | MACHINE_END |
diff --git a/arch/arm/mach-pnx4008/clock.c b/arch/arm/mach-pnx4008/clock.c index daa8d3d98eff..8e00ed43fb95 100644 --- a/arch/arm/mach-pnx4008/clock.c +++ b/arch/arm/mach-pnx4008/clock.c | |||
@@ -976,7 +976,7 @@ static int __init clk_init(void) | |||
976 | (*clkp)->set_parent((*clkp), (*clkp)->parent); | 976 | (*clkp)->set_parent((*clkp), (*clkp)->parent); |
977 | } | 977 | } |
978 | pr_debug("%s: clock %s, rate %ld\n", | 978 | pr_debug("%s: clock %s, rate %ld\n", |
979 | __FUNCTION__, (*clkp)->name, (*clkp)->rate); | 979 | __func__, (*clkp)->name, (*clkp)->rate); |
980 | } | 980 | } |
981 | 981 | ||
982 | local_clk_use(&ck_pll4); | 982 | local_clk_use(&ck_pll4); |
diff --git a/arch/arm/mach-pnx4008/dma.c b/arch/arm/mach-pnx4008/dma.c index f7009d845be8..fe152e82590b 100644 --- a/arch/arm/mach-pnx4008/dma.c +++ b/arch/arm/mach-pnx4008/dma.c | |||
@@ -192,7 +192,7 @@ void pnx4008_free_channel(int ch) | |||
192 | if (!dma_channels[ch].name) { | 192 | if (!dma_channels[ch].name) { |
193 | printk(KERN_CRIT | 193 | printk(KERN_CRIT |
194 | "%s: trying to free channel %d which is already freed\n", | 194 | "%s: trying to free channel %d which is already freed\n", |
195 | __FUNCTION__, ch); | 195 | __func__, ch); |
196 | return; | 196 | return; |
197 | } | 197 | } |
198 | 198 | ||
diff --git a/arch/arm/mach-pxa/cm-x270-pci.c b/arch/arm/mach-pxa/cm-x270-pci.c index 15c4e0df3e10..fcda7d5cb693 100644 --- a/arch/arm/mach-pxa/cm-x270-pci.c +++ b/arch/arm/mach-pxa/cm-x270-pci.c | |||
@@ -104,7 +104,7 @@ static int __init cmx270_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
104 | { | 104 | { |
105 | int irq; | 105 | int irq; |
106 | 106 | ||
107 | dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __FUNCTION__, slot, pin); | 107 | dev_dbg(&dev->dev, "%s: slot=%x, pin=%x\n", __func__, slot, pin); |
108 | 108 | ||
109 | irq = it8152_pci_map_irq(dev, slot, pin); | 109 | irq = it8152_pci_map_irq(dev, slot, pin); |
110 | if (irq) | 110 | if (irq) |
diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c index 6012177a29a3..ecdbc96a4de1 100644 --- a/arch/arm/mach-pxa/cm-x270.c +++ b/arch/arm/mach-pxa/cm-x270.c | |||
@@ -504,11 +504,11 @@ static void cmx270_mci_setpower(struct device *dev, unsigned int vdd) | |||
504 | struct pxamci_platform_data *p_d = dev->platform_data; | 504 | struct pxamci_platform_data *p_d = dev->platform_data; |
505 | 505 | ||
506 | if ((1 << vdd) & p_d->ocr_mask) { | 506 | if ((1 << vdd) & p_d->ocr_mask) { |
507 | printk(KERN_DEBUG "%s: on\n", __FUNCTION__); | 507 | printk(KERN_DEBUG "%s: on\n", __func__); |
508 | GPCR(105) = GPIO_bit(105); | 508 | GPCR(105) = GPIO_bit(105); |
509 | } else { | 509 | } else { |
510 | GPSR(105) = GPIO_bit(105); | 510 | GPSR(105) = GPIO_bit(105); |
511 | printk(KERN_DEBUG "%s: off\n", __FUNCTION__); | 511 | printk(KERN_DEBUG "%s: off\n", __func__); |
512 | } | 512 | } |
513 | } | 513 | } |
514 | 514 | ||
diff --git a/arch/arm/mach-pxa/dma.c b/arch/arm/mach-pxa/dma.c index 93c4f31f127f..3215316d7b06 100644 --- a/arch/arm/mach-pxa/dma.c +++ b/arch/arm/mach-pxa/dma.c | |||
@@ -81,7 +81,7 @@ void pxa_free_dma (int dma_ch) | |||
81 | if (!dma_channels[dma_ch].name) { | 81 | if (!dma_channels[dma_ch].name) { |
82 | printk (KERN_CRIT | 82 | printk (KERN_CRIT |
83 | "%s: trying to free channel %d which is already freed\n", | 83 | "%s: trying to free channel %d which is already freed\n", |
84 | __FUNCTION__, dma_ch); | 84 | __func__, dma_ch); |
85 | return; | 85 | return; |
86 | } | 86 | } |
87 | 87 | ||
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c index 3d0ad5065ee5..3bb31314429a 100644 --- a/arch/arm/mach-pxa/em-x270.c +++ b/arch/arm/mach-pxa/em-x270.c | |||
@@ -264,7 +264,7 @@ static int em_x270_mci_init(struct device *dev, | |||
264 | "MMC card detect", data); | 264 | "MMC card detect", data); |
265 | if (err) { | 265 | if (err) { |
266 | printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n", | 266 | printk(KERN_ERR "%s: can't request MMC card detect IRQ: %d\n", |
267 | __FUNCTION__, err); | 267 | __func__, err); |
268 | return err; | 268 | return err; |
269 | } | 269 | } |
270 | 270 | ||
diff --git a/arch/arm/mach-pxa/mainstone.c b/arch/arm/mach-pxa/mainstone.c index 345c3deeb02e..72a436fb9a29 100644 --- a/arch/arm/mach-pxa/mainstone.c +++ b/arch/arm/mach-pxa/mainstone.c | |||
@@ -390,11 +390,11 @@ static void mainstone_mci_setpower(struct device *dev, unsigned int vdd) | |||
390 | struct pxamci_platform_data* p_d = dev->platform_data; | 390 | struct pxamci_platform_data* p_d = dev->platform_data; |
391 | 391 | ||
392 | if (( 1 << vdd) & p_d->ocr_mask) { | 392 | if (( 1 << vdd) & p_d->ocr_mask) { |
393 | printk(KERN_DEBUG "%s: on\n", __FUNCTION__); | 393 | printk(KERN_DEBUG "%s: on\n", __func__); |
394 | MST_MSCWR1 |= MST_MSCWR1_MMC_ON; | 394 | MST_MSCWR1 |= MST_MSCWR1_MMC_ON; |
395 | MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL; | 395 | MST_MSCWR1 &= ~MST_MSCWR1_MS_SEL; |
396 | } else { | 396 | } else { |
397 | printk(KERN_DEBUG "%s: off\n", __FUNCTION__); | 397 | printk(KERN_DEBUG "%s: off\n", __func__); |
398 | MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON; | 398 | MST_MSCWR1 &= ~MST_MSCWR1_MMC_ON; |
399 | } | 399 | } |
400 | } | 400 | } |
diff --git a/arch/arm/mach-pxa/trizeps4.c b/arch/arm/mach-pxa/trizeps4.c index 853fc9433750..f207fcd30cd7 100644 --- a/arch/arm/mach-pxa/trizeps4.c +++ b/arch/arm/mach-pxa/trizeps4.c | |||
@@ -217,7 +217,7 @@ void board_pcmcia_power(int power) | |||
217 | ConXS_BCR = trizeps_conxs_bcr; | 217 | ConXS_BCR = trizeps_conxs_bcr; |
218 | 218 | ||
219 | } | 219 | } |
220 | pr_debug("%s: o%s 0x%x\n", __FUNCTION__, power ? "n": "ff", trizeps_conxs_bcr); | 220 | pr_debug("%s: o%s 0x%x\n", __func__, power ? "n": "ff", trizeps_conxs_bcr); |
221 | } | 221 | } |
222 | 222 | ||
223 | /* backlight power switching for LCD panel */ | 223 | /* backlight power switching for LCD panel */ |
@@ -228,7 +228,7 @@ static void board_backlight_power(int on) | |||
228 | } else { | 228 | } else { |
229 | trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP; | 229 | trizeps_conxs_bcr &= ~ConXS_BCR_L_DISP; |
230 | } | 230 | } |
231 | pr_debug("%s: o%s 0x%x\n", __FUNCTION__, on ? "n" : "ff", trizeps_conxs_bcr); | 231 | pr_debug("%s: o%s 0x%x\n", __func__, on ? "n" : "ff", trizeps_conxs_bcr); |
232 | ConXS_BCR = trizeps_conxs_bcr; | 232 | ConXS_BCR = trizeps_conxs_bcr; |
233 | } | 233 | } |
234 | 234 | ||
@@ -238,10 +238,10 @@ static void board_mci_power(struct device *dev, unsigned int vdd) | |||
238 | struct pxamci_platform_data* p_d = dev->platform_data; | 238 | struct pxamci_platform_data* p_d = dev->platform_data; |
239 | 239 | ||
240 | if (( 1 << vdd) & p_d->ocr_mask) { | 240 | if (( 1 << vdd) & p_d->ocr_mask) { |
241 | pr_debug("%s: on\n", __FUNCTION__); | 241 | pr_debug("%s: on\n", __func__); |
242 | /* FIXME fill in values here */ | 242 | /* FIXME fill in values here */ |
243 | } else { | 243 | } else { |
244 | pr_debug("%s: off\n", __FUNCTION__); | 244 | pr_debug("%s: off\n", __func__); |
245 | /* FIXME fill in values here */ | 245 | /* FIXME fill in values here */ |
246 | } | 246 | } |
247 | } | 247 | } |
diff --git a/arch/arm/mach-sa1100/badge4.c b/arch/arm/mach-sa1100/badge4.c index f60b7a66dfa0..842d9e6dc5ff 100644 --- a/arch/arm/mach-sa1100/badge4.c +++ b/arch/arm/mach-sa1100/badge4.c | |||
@@ -206,7 +206,7 @@ static int __init badge4_init(void) | |||
206 | if (ret < 0) | 206 | if (ret < 0) |
207 | printk(KERN_ERR | 207 | printk(KERN_ERR |
208 | "%s: SA-1111 initialization failed (%d)\n", | 208 | "%s: SA-1111 initialization failed (%d)\n", |
209 | __FUNCTION__, ret); | 209 | __func__, ret); |
210 | 210 | ||
211 | 211 | ||
212 | /* maybe turn on 5v0 from the start */ | 212 | /* maybe turn on 5v0 from the start */ |
@@ -240,11 +240,11 @@ void badge4_set_5V(unsigned subsystem, int on) | |||
240 | /* detect on->off and off->on transitions */ | 240 | /* detect on->off and off->on transitions */ |
241 | if ((!old_5V_bitmap) && (badge4_5V_bitmap)) { | 241 | if ((!old_5V_bitmap) && (badge4_5V_bitmap)) { |
242 | /* was off, now on */ | 242 | /* was off, now on */ |
243 | printk(KERN_INFO "%s: enabling 5V supply rail\n", __FUNCTION__); | 243 | printk(KERN_INFO "%s: enabling 5V supply rail\n", __func__); |
244 | GPSR = BADGE4_GPIO_PCMEN5V; | 244 | GPSR = BADGE4_GPIO_PCMEN5V; |
245 | } else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) { | 245 | } else if ((old_5V_bitmap) && (!badge4_5V_bitmap)) { |
246 | /* was on, now off */ | 246 | /* was on, now off */ |
247 | printk(KERN_INFO "%s: disabling 5V supply rail\n", __FUNCTION__); | 247 | printk(KERN_INFO "%s: disabling 5V supply rail\n", __func__); |
248 | GPCR = BADGE4_GPIO_PCMEN5V; | 248 | GPCR = BADGE4_GPIO_PCMEN5V; |
249 | } | 249 | } |
250 | 250 | ||
diff --git a/arch/arm/mach-sa1100/cpu-sa1100.c b/arch/arm/mach-sa1100/cpu-sa1100.c index d68630b74d78..343368aa82de 100644 --- a/arch/arm/mach-sa1100/cpu-sa1100.c +++ b/arch/arm/mach-sa1100/cpu-sa1100.c | |||
@@ -139,7 +139,7 @@ static void sa1100_update_dram_timings(int current_speed, int new_speed) | |||
139 | 139 | ||
140 | if (settings->speed == 0) { | 140 | if (settings->speed == 0) { |
141 | panic("%s: couldn't find dram setting for speed %d\n", | 141 | panic("%s: couldn't find dram setting for speed %d\n", |
142 | __FUNCTION__, new_speed); | 142 | __func__, new_speed); |
143 | } | 143 | } |
144 | 144 | ||
145 | /* No risk, no fun: run with interrupts on! */ | 145 | /* No risk, no fun: run with interrupts on! */ |
diff --git a/arch/arm/mach-sa1100/dma.c b/arch/arm/mach-sa1100/dma.c index 1fbe053e8b59..e5080286060e 100644 --- a/arch/arm/mach-sa1100/dma.c +++ b/arch/arm/mach-sa1100/dma.c | |||
@@ -129,7 +129,7 @@ int sa1100_request_dma (dma_device_t device, const char *device_id, | |||
129 | if (err) { | 129 | if (err) { |
130 | printk(KERN_ERR | 130 | printk(KERN_ERR |
131 | "%s: unable to request IRQ %d for %s\n", | 131 | "%s: unable to request IRQ %d for %s\n", |
132 | __FUNCTION__, IRQ_DMA0 + i, device_id); | 132 | __func__, IRQ_DMA0 + i, device_id); |
133 | dma->device = 0; | 133 | dma->device = 0; |
134 | return err; | 134 | return err; |
135 | } | 135 | } |
@@ -165,12 +165,12 @@ void sa1100_free_dma(dma_regs_t *regs) | |||
165 | if (regs == (dma_regs_t *)&DDAR(i)) | 165 | if (regs == (dma_regs_t *)&DDAR(i)) |
166 | break; | 166 | break; |
167 | if (i >= SA1100_DMA_CHANNELS) { | 167 | if (i >= SA1100_DMA_CHANNELS) { |
168 | printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__); | 168 | printk(KERN_ERR "%s: bad DMA identifier\n", __func__); |
169 | return; | 169 | return; |
170 | } | 170 | } |
171 | 171 | ||
172 | if (!dma_chan[i].device) { | 172 | if (!dma_chan[i].device) { |
173 | printk(KERN_ERR "%s: Trying to free free DMA\n", __FUNCTION__); | 173 | printk(KERN_ERR "%s: Trying to free free DMA\n", __func__); |
174 | return; | 174 | return; |
175 | } | 175 | } |
176 | 176 | ||
@@ -329,7 +329,7 @@ void sa1100_reset_dma(dma_regs_t *regs) | |||
329 | if (regs == (dma_regs_t *)&DDAR(i)) | 329 | if (regs == (dma_regs_t *)&DDAR(i)) |
330 | break; | 330 | break; |
331 | if (i >= SA1100_DMA_CHANNELS) { | 331 | if (i >= SA1100_DMA_CHANNELS) { |
332 | printk(KERN_ERR "%s: bad DMA identifier\n", __FUNCTION__); | 332 | printk(KERN_ERR "%s: bad DMA identifier\n", __func__); |
333 | return; | 333 | return; |
334 | } | 334 | } |
335 | 335 | ||
diff --git a/arch/arm/mach-sa1100/h3600.c b/arch/arm/mach-sa1100/h3600.c index b72fee0f2538..8473c37b77d6 100644 --- a/arch/arm/mach-sa1100/h3600.c +++ b/arch/arm/mach-sa1100/h3600.c | |||
@@ -596,7 +596,7 @@ static void h3800_control_egpio(enum ipaq_egpio_type x, int setp) | |||
596 | case IPAQ_EGPIO_CODEC_NRESET: | 596 | case IPAQ_EGPIO_CODEC_NRESET: |
597 | case IPAQ_EGPIO_AUDIO_ON: | 597 | case IPAQ_EGPIO_AUDIO_ON: |
598 | case IPAQ_EGPIO_QMUTE: | 598 | case IPAQ_EGPIO_QMUTE: |
599 | printk("%s: error - should not be called\n", __FUNCTION__); | 599 | printk("%s: error - should not be called\n", __func__); |
600 | break; | 600 | break; |
601 | case IPAQ_EGPIO_OPT_NVRAM_ON: | 601 | case IPAQ_EGPIO_OPT_NVRAM_ON: |
602 | SET_ASIC2(GPIO2_OPT_ON_NVRAM); | 602 | SET_ASIC2(GPIO2_OPT_ON_NVRAM); |
@@ -638,7 +638,7 @@ static int h3800_pm_callback(int req) | |||
638 | static u16 asic2_data; | 638 | static u16 asic2_data; |
639 | int result = 0; | 639 | int result = 0; |
640 | 640 | ||
641 | printk("%s %d\n", __FUNCTION__, req); | 641 | printk("%s %d\n", __func__, req); |
642 | 642 | ||
643 | switch (req) { | 643 | switch (req) { |
644 | case PM_RESUME: | 644 | case PM_RESUME: |
@@ -666,7 +666,7 @@ static int h3800_pm_callback(int req) | |||
666 | asic2_data = H3800_ASIC2_GPIOPIOD; | 666 | asic2_data = H3800_ASIC2_GPIOPIOD; |
667 | break; | 667 | break; |
668 | default: | 668 | default: |
669 | printk("%s: unrecognized PM callback\n", __FUNCTION__); | 669 | printk("%s: unrecognized PM callback\n", __func__); |
670 | break; | 670 | break; |
671 | } | 671 | } |
672 | return result; | 672 | return result; |
@@ -706,7 +706,7 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc) | |||
706 | { | 706 | { |
707 | int i; | 707 | int i; |
708 | 708 | ||
709 | if (0) printk("%s: interrupt received\n", __FUNCTION__); | 709 | if (0) printk("%s: interrupt received\n", __func__); |
710 | 710 | ||
711 | desc->chip->ack(irq); | 711 | desc->chip->ack(irq); |
712 | 712 | ||
@@ -716,21 +716,21 @@ static void h3800_IRQ_demux(unsigned int irq, struct irq_desc *desc) | |||
716 | 716 | ||
717 | /* KPIO */ | 717 | /* KPIO */ |
718 | irq = H3800_ASIC2_KPIINTFLAG; | 718 | irq = H3800_ASIC2_KPIINTFLAG; |
719 | if (0) printk("%s KPIO 0x%08X\n", __FUNCTION__, irq); | 719 | if (0) printk("%s KPIO 0x%08X\n", __func__, irq); |
720 | for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++) | 720 | for (j = 0; j < H3800_KPIO_IRQ_COUNT; j++) |
721 | if (irq & kpio_irq_mask[j]) | 721 | if (irq & kpio_irq_mask[j]) |
722 | handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j); | 722 | handle_edge_irq(H3800_KPIO_IRQ_COUNT + j, irq_desc + H3800_KPIO_IRQ_COUNT + j); |
723 | 723 | ||
724 | /* GPIO2 */ | 724 | /* GPIO2 */ |
725 | irq = H3800_ASIC2_GPIINTFLAG; | 725 | irq = H3800_ASIC2_GPIINTFLAG; |
726 | if (0) printk("%s GPIO 0x%08X\n", __FUNCTION__, irq); | 726 | if (0) printk("%s GPIO 0x%08X\n", __func__, irq); |
727 | for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++) | 727 | for (j = 0; j < H3800_GPIO_IRQ_COUNT; j++) |
728 | if (irq & gpio_irq_mask[j]) | 728 | if (irq & gpio_irq_mask[j]) |
729 | handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j); | 729 | handle_edge_irq(H3800_GPIO_IRQ_COUNT + j, irq_desc + H3800_GPIO_IRQ_COUNT + j); |
730 | } | 730 | } |
731 | 731 | ||
732 | if (i >= MAX_ASIC_ISR_LOOPS) | 732 | if (i >= MAX_ASIC_ISR_LOOPS) |
733 | printk("%s: interrupt processing overrun\n", __FUNCTION__); | 733 | printk("%s: interrupt processing overrun\n", __func__); |
734 | 734 | ||
735 | /* For level-based interrupts */ | 735 | /* For level-based interrupts */ |
736 | desc->chip->unmask(irq); | 736 | desc->chip->unmask(irq); |
diff --git a/arch/arm/plat-iop/pci.c b/arch/arm/plat-iop/pci.c index 2b5aa1135b11..98d01517b563 100644 --- a/arch/arm/plat-iop/pci.c +++ b/arch/arm/plat-iop/pci.c | |||
@@ -371,7 +371,7 @@ static int __init iop3xx_init_atu_setup(char *str) | |||
371 | default: | 371 | default: |
372 | printk(KERN_DEBUG "\"%s\" malformed at " | 372 | printk(KERN_DEBUG "\"%s\" malformed at " |
373 | "character: \'%c\'", | 373 | "character: \'%c\'", |
374 | __FUNCTION__, | 374 | __func__, |
375 | *str); | 375 | *str); |
376 | *(str + 1) = '\0'; | 376 | *(str + 1) = '\0'; |
377 | } | 377 | } |
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c index c0d63b0c61c9..d719c15daa55 100644 --- a/arch/arm/plat-omap/cpu-omap.c +++ b/arch/arm/plat-omap/cpu-omap.c | |||
@@ -33,43 +33,33 @@ | |||
33 | #define MPU_CLK "virt_prcm_set" | 33 | #define MPU_CLK "virt_prcm_set" |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | static struct clk *mpu_clk; | ||
37 | |||
36 | /* TODO: Add support for SDRAM timing changes */ | 38 | /* TODO: Add support for SDRAM timing changes */ |
37 | 39 | ||
38 | int omap_verify_speed(struct cpufreq_policy *policy) | 40 | int omap_verify_speed(struct cpufreq_policy *policy) |
39 | { | 41 | { |
40 | struct clk * mpu_clk; | ||
41 | |||
42 | if (policy->cpu) | 42 | if (policy->cpu) |
43 | return -EINVAL; | 43 | return -EINVAL; |
44 | 44 | ||
45 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, | 45 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, |
46 | policy->cpuinfo.max_freq); | 46 | policy->cpuinfo.max_freq); |
47 | mpu_clk = clk_get(NULL, MPU_CLK); | 47 | |
48 | if (IS_ERR(mpu_clk)) | ||
49 | return PTR_ERR(mpu_clk); | ||
50 | policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000; | 48 | policy->min = clk_round_rate(mpu_clk, policy->min * 1000) / 1000; |
51 | policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000; | 49 | policy->max = clk_round_rate(mpu_clk, policy->max * 1000) / 1000; |
52 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, | 50 | cpufreq_verify_within_limits(policy, policy->cpuinfo.min_freq, |
53 | policy->cpuinfo.max_freq); | 51 | policy->cpuinfo.max_freq); |
54 | clk_put(mpu_clk); | ||
55 | |||
56 | return 0; | 52 | return 0; |
57 | } | 53 | } |
58 | 54 | ||
59 | unsigned int omap_getspeed(unsigned int cpu) | 55 | unsigned int omap_getspeed(unsigned int cpu) |
60 | { | 56 | { |
61 | struct clk * mpu_clk; | ||
62 | unsigned long rate; | 57 | unsigned long rate; |
63 | 58 | ||
64 | if (cpu) | 59 | if (cpu) |
65 | return 0; | 60 | return 0; |
66 | 61 | ||
67 | mpu_clk = clk_get(NULL, MPU_CLK); | ||
68 | if (IS_ERR(mpu_clk)) | ||
69 | return 0; | ||
70 | rate = clk_get_rate(mpu_clk) / 1000; | 62 | rate = clk_get_rate(mpu_clk) / 1000; |
71 | clk_put(mpu_clk); | ||
72 | |||
73 | return rate; | 63 | return rate; |
74 | } | 64 | } |
75 | 65 | ||
@@ -77,14 +67,9 @@ static int omap_target(struct cpufreq_policy *policy, | |||
77 | unsigned int target_freq, | 67 | unsigned int target_freq, |
78 | unsigned int relation) | 68 | unsigned int relation) |
79 | { | 69 | { |
80 | struct clk * mpu_clk; | ||
81 | struct cpufreq_freqs freqs; | 70 | struct cpufreq_freqs freqs; |
82 | int ret = 0; | 71 | int ret = 0; |
83 | 72 | ||
84 | mpu_clk = clk_get(NULL, MPU_CLK); | ||
85 | if (IS_ERR(mpu_clk)) | ||
86 | return PTR_ERR(mpu_clk); | ||
87 | |||
88 | freqs.old = omap_getspeed(0); | 73 | freqs.old = omap_getspeed(0); |
89 | freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000; | 74 | freqs.new = clk_round_rate(mpu_clk, target_freq * 1000) / 1000; |
90 | freqs.cpu = 0; | 75 | freqs.cpu = 0; |
@@ -92,15 +77,12 @@ static int omap_target(struct cpufreq_policy *policy, | |||
92 | cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); | 77 | cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE); |
93 | ret = clk_set_rate(mpu_clk, target_freq * 1000); | 78 | ret = clk_set_rate(mpu_clk, target_freq * 1000); |
94 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); | 79 | cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE); |
95 | clk_put(mpu_clk); | ||
96 | 80 | ||
97 | return ret; | 81 | return ret; |
98 | } | 82 | } |
99 | 83 | ||
100 | static int __init omap_cpu_init(struct cpufreq_policy *policy) | 84 | static int __init omap_cpu_init(struct cpufreq_policy *policy) |
101 | { | 85 | { |
102 | struct clk * mpu_clk; | ||
103 | |||
104 | mpu_clk = clk_get(NULL, MPU_CLK); | 86 | mpu_clk = clk_get(NULL, MPU_CLK); |
105 | if (IS_ERR(mpu_clk)) | 87 | if (IS_ERR(mpu_clk)) |
106 | return PTR_ERR(mpu_clk); | 88 | return PTR_ERR(mpu_clk); |
@@ -111,17 +93,23 @@ static int __init omap_cpu_init(struct cpufreq_policy *policy) | |||
111 | policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000; | 93 | policy->cpuinfo.min_freq = clk_round_rate(mpu_clk, 0) / 1000; |
112 | policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000; | 94 | policy->cpuinfo.max_freq = clk_round_rate(mpu_clk, VERY_HI_RATE) / 1000; |
113 | policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; | 95 | policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; |
114 | clk_put(mpu_clk); | ||
115 | 96 | ||
116 | return 0; | 97 | return 0; |
117 | } | 98 | } |
118 | 99 | ||
100 | static int omap_cpu_exit(struct cpufreq_policy *policy) | ||
101 | { | ||
102 | clk_put(mpu_clk); | ||
103 | return 0; | ||
104 | } | ||
105 | |||
119 | static struct cpufreq_driver omap_driver = { | 106 | static struct cpufreq_driver omap_driver = { |
120 | .flags = CPUFREQ_STICKY, | 107 | .flags = CPUFREQ_STICKY, |
121 | .verify = omap_verify_speed, | 108 | .verify = omap_verify_speed, |
122 | .target = omap_target, | 109 | .target = omap_target, |
123 | .get = omap_getspeed, | 110 | .get = omap_getspeed, |
124 | .init = omap_cpu_init, | 111 | .init = omap_cpu_init, |
112 | .exit = omap_cpu_exit, | ||
125 | .name = "omap", | 113 | .name = "omap", |
126 | }; | 114 | }; |
127 | 115 | ||
diff --git a/arch/arm/plat-omap/devices.c b/arch/arm/plat-omap/devices.c index c5dab1d6417e..4a53f9ba6c43 100644 --- a/arch/arm/plat-omap/devices.c +++ b/arch/arm/plat-omap/devices.c | |||
@@ -89,68 +89,6 @@ static inline void omap_init_dsp(void) { } | |||
89 | #endif /* CONFIG_OMAP_DSP */ | 89 | #endif /* CONFIG_OMAP_DSP */ |
90 | 90 | ||
91 | /*-------------------------------------------------------------------------*/ | 91 | /*-------------------------------------------------------------------------*/ |
92 | #if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE) | ||
93 | |||
94 | #define OMAP1_I2C_BASE 0xfffb3800 | ||
95 | #define OMAP2_I2C_BASE1 0x48070000 | ||
96 | #define OMAP_I2C_SIZE 0x3f | ||
97 | #define OMAP1_I2C_INT INT_I2C | ||
98 | #define OMAP2_I2C_INT1 56 | ||
99 | |||
100 | static struct resource i2c_resources1[] = { | ||
101 | { | ||
102 | .start = 0, | ||
103 | .end = 0, | ||
104 | .flags = IORESOURCE_MEM, | ||
105 | }, | ||
106 | { | ||
107 | .start = 0, | ||
108 | .flags = IORESOURCE_IRQ, | ||
109 | }, | ||
110 | }; | ||
111 | |||
112 | /* DMA not used; works around erratum writing to non-empty i2c fifo */ | ||
113 | |||
114 | static struct platform_device omap_i2c_device1 = { | ||
115 | .name = "i2c_omap", | ||
116 | .id = 1, | ||
117 | .num_resources = ARRAY_SIZE(i2c_resources1), | ||
118 | .resource = i2c_resources1, | ||
119 | }; | ||
120 | |||
121 | /* See also arch/arm/mach-omap2/devices.c for second I2C on 24xx */ | ||
122 | static void omap_init_i2c(void) | ||
123 | { | ||
124 | if (cpu_is_omap24xx()) { | ||
125 | i2c_resources1[0].start = OMAP2_I2C_BASE1; | ||
126 | i2c_resources1[0].end = OMAP2_I2C_BASE1 + OMAP_I2C_SIZE; | ||
127 | i2c_resources1[1].start = OMAP2_I2C_INT1; | ||
128 | } else { | ||
129 | i2c_resources1[0].start = OMAP1_I2C_BASE; | ||
130 | i2c_resources1[0].end = OMAP1_I2C_BASE + OMAP_I2C_SIZE; | ||
131 | i2c_resources1[1].start = OMAP1_I2C_INT; | ||
132 | } | ||
133 | |||
134 | /* FIXME define and use a boot tag, in case of boards that | ||
135 | * either don't wire up I2C, or chips that mux it differently... | ||
136 | * it can include clocking and address info, maybe more. | ||
137 | */ | ||
138 | if (cpu_is_omap24xx()) { | ||
139 | omap_cfg_reg(M19_24XX_I2C1_SCL); | ||
140 | omap_cfg_reg(L15_24XX_I2C1_SDA); | ||
141 | } else { | ||
142 | omap_cfg_reg(I2C_SCL); | ||
143 | omap_cfg_reg(I2C_SDA); | ||
144 | } | ||
145 | |||
146 | (void) platform_device_register(&omap_i2c_device1); | ||
147 | } | ||
148 | |||
149 | #else | ||
150 | static inline void omap_init_i2c(void) {} | ||
151 | #endif | ||
152 | |||
153 | /*-------------------------------------------------------------------------*/ | ||
154 | #if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE) | 92 | #if defined(CONFIG_KEYBOARD_OMAP) || defined(CONFIG_KEYBOARD_OMAP_MODULE) |
155 | 93 | ||
156 | static void omap_init_kp(void) | 94 | static void omap_init_kp(void) |
@@ -501,7 +439,6 @@ static int __init omap_init_devices(void) | |||
501 | * in alphabetical order so they're easier to sort through. | 439 | * in alphabetical order so they're easier to sort through. |
502 | */ | 440 | */ |
503 | omap_init_dsp(); | 441 | omap_init_dsp(); |
504 | omap_init_i2c(); | ||
505 | omap_init_kp(); | 442 | omap_init_kp(); |
506 | omap_init_mmc(); | 443 | omap_init_mmc(); |
507 | omap_init_uwire(); | 444 | omap_init_uwire(); |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index a46676db8113..91004a3c4794 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -137,7 +137,7 @@ static void omap_disable_channel_irq(int lch); | |||
137 | static inline void omap_enable_channel_irq(int lch); | 137 | static inline void omap_enable_channel_irq(int lch); |
138 | 138 | ||
139 | #define REVISIT_24XX() printk(KERN_ERR "FIXME: no %s on 24xx\n", \ | 139 | #define REVISIT_24XX() printk(KERN_ERR "FIXME: no %s on 24xx\n", \ |
140 | __FUNCTION__); | 140 | __func__); |
141 | 141 | ||
142 | #ifdef CONFIG_ARCH_OMAP15XX | 142 | #ifdef CONFIG_ARCH_OMAP15XX |
143 | /* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */ | 143 | /* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */ |
@@ -699,7 +699,7 @@ omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams) | |||
699 | u32 reg; | 699 | u32 reg; |
700 | 700 | ||
701 | if (!cpu_class_is_omap2()) { | 701 | if (!cpu_class_is_omap2()) { |
702 | printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __FUNCTION__); | 702 | printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__); |
703 | return; | 703 | return; |
704 | } | 704 | } |
705 | 705 | ||
@@ -1705,14 +1705,8 @@ static int omap2_dma_handle_ch(int ch) | |||
1705 | status = OMAP_DMA_CSR_REG(ch); | 1705 | status = OMAP_DMA_CSR_REG(ch); |
1706 | } | 1706 | } |
1707 | 1707 | ||
1708 | if (likely(dma_chan[ch].callback != NULL)) { | 1708 | if (likely(dma_chan[ch].callback != NULL)) |
1709 | if (dma_chan[ch].chain_id != -1) | 1709 | dma_chan[ch].callback(ch, status, dma_chan[ch].data); |
1710 | dma_chan[ch].callback(dma_chan[ch].chain_id, status, | ||
1711 | dma_chan[ch].data); | ||
1712 | else | ||
1713 | dma_chan[ch].callback(ch, status, dma_chan[ch].data); | ||
1714 | |||
1715 | } | ||
1716 | 1710 | ||
1717 | OMAP_DMA_CSR_REG(ch) = status; | 1711 | OMAP_DMA_CSR_REG(ch) = status; |
1718 | 1712 | ||
diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c index e719d0eeb5c8..302ad8dff2cb 100644 --- a/arch/arm/plat-omap/dmtimer.c +++ b/arch/arm/plat-omap/dmtimer.c | |||
@@ -268,7 +268,7 @@ struct omap_dm_timer *omap_dm_timer_request_specific(int id) | |||
268 | if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) { | 268 | if (id <= 0 || id > dm_timer_count || dm_timers[id-1].reserved) { |
269 | spin_unlock_irqrestore(&dm_timer_lock, flags); | 269 | spin_unlock_irqrestore(&dm_timer_lock, flags); |
270 | printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n", | 270 | printk("BUG: warning at %s:%d/%s(): unable to get timer %d\n", |
271 | __FILE__, __LINE__, __FUNCTION__, id); | 271 | __FILE__, __LINE__, __func__, id); |
272 | dump_stack(); | 272 | dump_stack(); |
273 | return NULL; | 273 | return NULL; |
274 | } | 274 | } |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 56f4d1394d56..66a1455595f4 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -333,13 +333,14 @@ static void _set_gpio_direction(struct gpio_bank *bank, int gpio, int is_input) | |||
333 | void omap_set_gpio_direction(int gpio, int is_input) | 333 | void omap_set_gpio_direction(int gpio, int is_input) |
334 | { | 334 | { |
335 | struct gpio_bank *bank; | 335 | struct gpio_bank *bank; |
336 | unsigned long flags; | ||
336 | 337 | ||
337 | if (check_gpio(gpio) < 0) | 338 | if (check_gpio(gpio) < 0) |
338 | return; | 339 | return; |
339 | bank = get_gpio_bank(gpio); | 340 | bank = get_gpio_bank(gpio); |
340 | spin_lock(&bank->lock); | 341 | spin_lock_irqsave(&bank->lock, flags); |
341 | _set_gpio_direction(bank, get_gpio_index(gpio), is_input); | 342 | _set_gpio_direction(bank, get_gpio_index(gpio), is_input); |
342 | spin_unlock(&bank->lock); | 343 | spin_unlock_irqrestore(&bank->lock, flags); |
343 | } | 344 | } |
344 | 345 | ||
345 | static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable) | 346 | static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable) |
@@ -406,13 +407,14 @@ static void _set_gpio_dataout(struct gpio_bank *bank, int gpio, int enable) | |||
406 | void omap_set_gpio_dataout(int gpio, int enable) | 407 | void omap_set_gpio_dataout(int gpio, int enable) |
407 | { | 408 | { |
408 | struct gpio_bank *bank; | 409 | struct gpio_bank *bank; |
410 | unsigned long flags; | ||
409 | 411 | ||
410 | if (check_gpio(gpio) < 0) | 412 | if (check_gpio(gpio) < 0) |
411 | return; | 413 | return; |
412 | bank = get_gpio_bank(gpio); | 414 | bank = get_gpio_bank(gpio); |
413 | spin_lock(&bank->lock); | 415 | spin_lock_irqsave(&bank->lock, flags); |
414 | _set_gpio_dataout(bank, get_gpio_index(gpio), enable); | 416 | _set_gpio_dataout(bank, get_gpio_index(gpio), enable); |
415 | spin_unlock(&bank->lock); | 417 | spin_unlock_irqrestore(&bank->lock, flags); |
416 | } | 418 | } |
417 | 419 | ||
418 | int omap_get_gpio_datain(int gpio) | 420 | int omap_get_gpio_datain(int gpio) |
@@ -624,6 +626,7 @@ static int gpio_irq_type(unsigned irq, unsigned type) | |||
624 | struct gpio_bank *bank; | 626 | struct gpio_bank *bank; |
625 | unsigned gpio; | 627 | unsigned gpio; |
626 | int retval; | 628 | int retval; |
629 | unsigned long flags; | ||
627 | 630 | ||
628 | if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE) | 631 | if (!cpu_class_is_omap2() && irq > IH_MPUIO_BASE) |
629 | gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE); | 632 | gpio = OMAP_MPUIO(irq - IH_MPUIO_BASE); |
@@ -642,13 +645,13 @@ static int gpio_irq_type(unsigned irq, unsigned type) | |||
642 | return -EINVAL; | 645 | return -EINVAL; |
643 | 646 | ||
644 | bank = get_irq_chip_data(irq); | 647 | bank = get_irq_chip_data(irq); |
645 | spin_lock(&bank->lock); | 648 | spin_lock_irqsave(&bank->lock, flags); |
646 | retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type); | 649 | retval = _set_gpio_triggering(bank, get_gpio_index(gpio), type); |
647 | if (retval == 0) { | 650 | if (retval == 0) { |
648 | irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK; | 651 | irq_desc[irq].status &= ~IRQ_TYPE_SENSE_MASK; |
649 | irq_desc[irq].status |= type; | 652 | irq_desc[irq].status |= type; |
650 | } | 653 | } |
651 | spin_unlock(&bank->lock); | 654 | spin_unlock_irqrestore(&bank->lock, flags); |
652 | return retval; | 655 | return retval; |
653 | } | 656 | } |
654 | 657 | ||
@@ -830,11 +833,13 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena | |||
830 | */ | 833 | */ |
831 | static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) | 834 | static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) |
832 | { | 835 | { |
836 | unsigned long flags; | ||
837 | |||
833 | switch (bank->method) { | 838 | switch (bank->method) { |
834 | #ifdef CONFIG_ARCH_OMAP16XX | 839 | #ifdef CONFIG_ARCH_OMAP16XX |
835 | case METHOD_MPUIO: | 840 | case METHOD_MPUIO: |
836 | case METHOD_GPIO_1610: | 841 | case METHOD_GPIO_1610: |
837 | spin_lock(&bank->lock); | 842 | spin_lock_irqsave(&bank->lock, flags); |
838 | if (enable) { | 843 | if (enable) { |
839 | bank->suspend_wakeup |= (1 << gpio); | 844 | bank->suspend_wakeup |= (1 << gpio); |
840 | enable_irq_wake(bank->irq); | 845 | enable_irq_wake(bank->irq); |
@@ -842,7 +847,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) | |||
842 | disable_irq_wake(bank->irq); | 847 | disable_irq_wake(bank->irq); |
843 | bank->suspend_wakeup &= ~(1 << gpio); | 848 | bank->suspend_wakeup &= ~(1 << gpio); |
844 | } | 849 | } |
845 | spin_unlock(&bank->lock); | 850 | spin_unlock_irqrestore(&bank->lock, flags); |
846 | return 0; | 851 | return 0; |
847 | #endif | 852 | #endif |
848 | #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) | 853 | #if defined(CONFIG_ARCH_OMAP24XX) || defined(CONFIG_ARCH_OMAP34XX) |
@@ -853,7 +858,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) | |||
853 | (bank - gpio_bank) * 32 + gpio); | 858 | (bank - gpio_bank) * 32 + gpio); |
854 | return -EINVAL; | 859 | return -EINVAL; |
855 | } | 860 | } |
856 | spin_lock(&bank->lock); | 861 | spin_lock_irqsave(&bank->lock, flags); |
857 | if (enable) { | 862 | if (enable) { |
858 | bank->suspend_wakeup |= (1 << gpio); | 863 | bank->suspend_wakeup |= (1 << gpio); |
859 | enable_irq_wake(bank->irq); | 864 | enable_irq_wake(bank->irq); |
@@ -861,7 +866,7 @@ static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable) | |||
861 | disable_irq_wake(bank->irq); | 866 | disable_irq_wake(bank->irq); |
862 | bank->suspend_wakeup &= ~(1 << gpio); | 867 | bank->suspend_wakeup &= ~(1 << gpio); |
863 | } | 868 | } |
864 | spin_unlock(&bank->lock); | 869 | spin_unlock_irqrestore(&bank->lock, flags); |
865 | return 0; | 870 | return 0; |
866 | #endif | 871 | #endif |
867 | default: | 872 | default: |
@@ -897,16 +902,17 @@ static int gpio_wake_enable(unsigned int irq, unsigned int enable) | |||
897 | int omap_request_gpio(int gpio) | 902 | int omap_request_gpio(int gpio) |
898 | { | 903 | { |
899 | struct gpio_bank *bank; | 904 | struct gpio_bank *bank; |
905 | unsigned long flags; | ||
900 | 906 | ||
901 | if (check_gpio(gpio) < 0) | 907 | if (check_gpio(gpio) < 0) |
902 | return -EINVAL; | 908 | return -EINVAL; |
903 | 909 | ||
904 | bank = get_gpio_bank(gpio); | 910 | bank = get_gpio_bank(gpio); |
905 | spin_lock(&bank->lock); | 911 | spin_lock_irqsave(&bank->lock, flags); |
906 | if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) { | 912 | if (unlikely(bank->reserved_map & (1 << get_gpio_index(gpio)))) { |
907 | printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio); | 913 | printk(KERN_ERR "omap-gpio: GPIO %d is already reserved!\n", gpio); |
908 | dump_stack(); | 914 | dump_stack(); |
909 | spin_unlock(&bank->lock); | 915 | spin_unlock_irqrestore(&bank->lock, flags); |
910 | return -1; | 916 | return -1; |
911 | } | 917 | } |
912 | bank->reserved_map |= (1 << get_gpio_index(gpio)); | 918 | bank->reserved_map |= (1 << get_gpio_index(gpio)); |
@@ -925,7 +931,7 @@ int omap_request_gpio(int gpio) | |||
925 | __raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg); | 931 | __raw_writel(__raw_readl(reg) | (1 << get_gpio_index(gpio)), reg); |
926 | } | 932 | } |
927 | #endif | 933 | #endif |
928 | spin_unlock(&bank->lock); | 934 | spin_unlock_irqrestore(&bank->lock, flags); |
929 | 935 | ||
930 | return 0; | 936 | return 0; |
931 | } | 937 | } |
@@ -933,15 +939,16 @@ int omap_request_gpio(int gpio) | |||
933 | void omap_free_gpio(int gpio) | 939 | void omap_free_gpio(int gpio) |
934 | { | 940 | { |
935 | struct gpio_bank *bank; | 941 | struct gpio_bank *bank; |
942 | unsigned long flags; | ||
936 | 943 | ||
937 | if (check_gpio(gpio) < 0) | 944 | if (check_gpio(gpio) < 0) |
938 | return; | 945 | return; |
939 | bank = get_gpio_bank(gpio); | 946 | bank = get_gpio_bank(gpio); |
940 | spin_lock(&bank->lock); | 947 | spin_lock_irqsave(&bank->lock, flags); |
941 | if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) { | 948 | if (unlikely(!(bank->reserved_map & (1 << get_gpio_index(gpio))))) { |
942 | printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio); | 949 | printk(KERN_ERR "omap-gpio: GPIO %d wasn't reserved!\n", gpio); |
943 | dump_stack(); | 950 | dump_stack(); |
944 | spin_unlock(&bank->lock); | 951 | spin_unlock_irqrestore(&bank->lock, flags); |
945 | return; | 952 | return; |
946 | } | 953 | } |
947 | #ifdef CONFIG_ARCH_OMAP16XX | 954 | #ifdef CONFIG_ARCH_OMAP16XX |
@@ -960,7 +967,7 @@ void omap_free_gpio(int gpio) | |||
960 | #endif | 967 | #endif |
961 | bank->reserved_map &= ~(1 << get_gpio_index(gpio)); | 968 | bank->reserved_map &= ~(1 << get_gpio_index(gpio)); |
962 | _reset_gpio(bank, gpio); | 969 | _reset_gpio(bank, gpio); |
963 | spin_unlock(&bank->lock); | 970 | spin_unlock_irqrestore(&bank->lock, flags); |
964 | } | 971 | } |
965 | 972 | ||
966 | /* | 973 | /* |
@@ -1194,11 +1201,12 @@ static int omap_mpuio_suspend_late(struct platform_device *pdev, pm_message_t me | |||
1194 | { | 1201 | { |
1195 | struct gpio_bank *bank = platform_get_drvdata(pdev); | 1202 | struct gpio_bank *bank = platform_get_drvdata(pdev); |
1196 | void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT; | 1203 | void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT; |
1204 | unsigned long flags; | ||
1197 | 1205 | ||
1198 | spin_lock(&bank->lock); | 1206 | spin_lock_irqsave(&bank->lock, flags); |
1199 | bank->saved_wakeup = __raw_readl(mask_reg); | 1207 | bank->saved_wakeup = __raw_readl(mask_reg); |
1200 | __raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg); | 1208 | __raw_writel(0xffff & ~bank->suspend_wakeup, mask_reg); |
1201 | spin_unlock(&bank->lock); | 1209 | spin_unlock_irqrestore(&bank->lock, flags); |
1202 | 1210 | ||
1203 | return 0; | 1211 | return 0; |
1204 | } | 1212 | } |
@@ -1207,10 +1215,11 @@ static int omap_mpuio_resume_early(struct platform_device *pdev) | |||
1207 | { | 1215 | { |
1208 | struct gpio_bank *bank = platform_get_drvdata(pdev); | 1216 | struct gpio_bank *bank = platform_get_drvdata(pdev); |
1209 | void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT; | 1217 | void __iomem *mask_reg = bank->base + OMAP_MPUIO_GPIO_MASKIT; |
1218 | unsigned long flags; | ||
1210 | 1219 | ||
1211 | spin_lock(&bank->lock); | 1220 | spin_lock_irqsave(&bank->lock, flags); |
1212 | __raw_writel(bank->saved_wakeup, mask_reg); | 1221 | __raw_writel(bank->saved_wakeup, mask_reg); |
1213 | spin_unlock(&bank->lock); | 1222 | spin_unlock_irqrestore(&bank->lock, flags); |
1214 | 1223 | ||
1215 | return 0; | 1224 | return 0; |
1216 | } | 1225 | } |
@@ -1277,6 +1286,11 @@ static struct clk *gpio_fclks[OMAP34XX_NR_GPIOS]; | |||
1277 | static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS]; | 1286 | static struct clk *gpio_iclks[OMAP34XX_NR_GPIOS]; |
1278 | #endif | 1287 | #endif |
1279 | 1288 | ||
1289 | /* This lock class tells lockdep that GPIO irqs are in a different | ||
1290 | * category than their parents, so it won't report false recursion. | ||
1291 | */ | ||
1292 | static struct lock_class_key gpio_lock_class; | ||
1293 | |||
1280 | static int __init _omap_gpio_init(void) | 1294 | static int __init _omap_gpio_init(void) |
1281 | { | 1295 | { |
1282 | int i; | 1296 | int i; |
@@ -1450,6 +1464,7 @@ static int __init _omap_gpio_init(void) | |||
1450 | #endif | 1464 | #endif |
1451 | for (j = bank->virtual_irq_start; | 1465 | for (j = bank->virtual_irq_start; |
1452 | j < bank->virtual_irq_start + gpio_count; j++) { | 1466 | j < bank->virtual_irq_start + gpio_count; j++) { |
1467 | lockdep_set_class(&irq_desc[j].lock, &gpio_lock_class); | ||
1453 | set_irq_chip_data(j, bank); | 1468 | set_irq_chip_data(j, bank); |
1454 | if (bank_is_mpuio(bank)) | 1469 | if (bank_is_mpuio(bank)) |
1455 | set_irq_chip(j, &mpuio_irq_chip); | 1470 | set_irq_chip(j, &mpuio_irq_chip); |
@@ -1489,6 +1504,7 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg) | |||
1489 | void __iomem *wake_status; | 1504 | void __iomem *wake_status; |
1490 | void __iomem *wake_clear; | 1505 | void __iomem *wake_clear; |
1491 | void __iomem *wake_set; | 1506 | void __iomem *wake_set; |
1507 | unsigned long flags; | ||
1492 | 1508 | ||
1493 | switch (bank->method) { | 1509 | switch (bank->method) { |
1494 | #ifdef CONFIG_ARCH_OMAP16XX | 1510 | #ifdef CONFIG_ARCH_OMAP16XX |
@@ -1509,11 +1525,11 @@ static int omap_gpio_suspend(struct sys_device *dev, pm_message_t mesg) | |||
1509 | continue; | 1525 | continue; |
1510 | } | 1526 | } |
1511 | 1527 | ||
1512 | spin_lock(&bank->lock); | 1528 | spin_lock_irqsave(&bank->lock, flags); |
1513 | bank->saved_wakeup = __raw_readl(wake_status); | 1529 | bank->saved_wakeup = __raw_readl(wake_status); |
1514 | __raw_writel(0xffffffff, wake_clear); | 1530 | __raw_writel(0xffffffff, wake_clear); |
1515 | __raw_writel(bank->suspend_wakeup, wake_set); | 1531 | __raw_writel(bank->suspend_wakeup, wake_set); |
1516 | spin_unlock(&bank->lock); | 1532 | spin_unlock_irqrestore(&bank->lock, flags); |
1517 | } | 1533 | } |
1518 | 1534 | ||
1519 | return 0; | 1535 | return 0; |
@@ -1530,6 +1546,7 @@ static int omap_gpio_resume(struct sys_device *dev) | |||
1530 | struct gpio_bank *bank = &gpio_bank[i]; | 1546 | struct gpio_bank *bank = &gpio_bank[i]; |
1531 | void __iomem *wake_clear; | 1547 | void __iomem *wake_clear; |
1532 | void __iomem *wake_set; | 1548 | void __iomem *wake_set; |
1549 | unsigned long flags; | ||
1533 | 1550 | ||
1534 | switch (bank->method) { | 1551 | switch (bank->method) { |
1535 | #ifdef CONFIG_ARCH_OMAP16XX | 1552 | #ifdef CONFIG_ARCH_OMAP16XX |
@@ -1548,10 +1565,10 @@ static int omap_gpio_resume(struct sys_device *dev) | |||
1548 | continue; | 1565 | continue; |
1549 | } | 1566 | } |
1550 | 1567 | ||
1551 | spin_lock(&bank->lock); | 1568 | spin_lock_irqsave(&bank->lock, flags); |
1552 | __raw_writel(0xffffffff, wake_clear); | 1569 | __raw_writel(0xffffffff, wake_clear); |
1553 | __raw_writel(bank->saved_wakeup, wake_set); | 1570 | __raw_writel(bank->saved_wakeup, wake_set); |
1554 | spin_unlock(&bank->lock); | 1571 | spin_unlock_irqrestore(&bank->lock, flags); |
1555 | } | 1572 | } |
1556 | 1573 | ||
1557 | return 0; | 1574 | return 0; |
diff --git a/arch/arm/plat-s3c24xx/dma.c b/arch/arm/plat-s3c24xx/dma.c index ac9ff1666fcc..60f162dc4fad 100644 --- a/arch/arm/plat-s3c24xx/dma.c +++ b/arch/arm/plat-s3c24xx/dma.c | |||
@@ -130,8 +130,8 @@ dmadbg_showregs(const char *fname, int line, struct s3c2410_dma_chan *chan) | |||
130 | dmadbg_dumpregs(fname, line, chan, &state); | 130 | dmadbg_dumpregs(fname, line, chan, &state); |
131 | } | 131 | } |
132 | 132 | ||
133 | #define dbg_showregs(chan) dmadbg_showregs(__FUNCTION__, __LINE__, (chan)) | 133 | #define dbg_showregs(chan) dmadbg_showregs(__func__, __LINE__, (chan)) |
134 | #define dbg_showchan(chan) dmadbg_showchan(__FUNCTION__, __LINE__, (chan)) | 134 | #define dbg_showchan(chan) dmadbg_showchan(__func__, __LINE__, (chan)) |
135 | #else | 135 | #else |
136 | #define dbg_showregs(chan) do { } while(0) | 136 | #define dbg_showregs(chan) do { } while(0) |
137 | #define dbg_showchan(chan) do { } while(0) | 137 | #define dbg_showchan(chan) do { } while(0) |
@@ -403,7 +403,7 @@ static int s3c2410_dma_start(struct s3c2410_dma_chan *chan) | |||
403 | 403 | ||
404 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | 404 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { |
405 | pr_debug("%s: buff not yet loaded, no more todo\n", | 405 | pr_debug("%s: buff not yet loaded, no more todo\n", |
406 | __FUNCTION__); | 406 | __func__); |
407 | } else { | 407 | } else { |
408 | chan->load_state = S3C2410_DMALOAD_1RUNNING; | 408 | chan->load_state = S3C2410_DMALOAD_1RUNNING; |
409 | s3c2410_dma_loadbuffer(chan, chan->next); | 409 | s3c2410_dma_loadbuffer(chan, chan->next); |
@@ -463,16 +463,16 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id, | |||
463 | return -EINVAL; | 463 | return -EINVAL; |
464 | 464 | ||
465 | pr_debug("%s: id=%p, data=%08x, size=%d\n", | 465 | pr_debug("%s: id=%p, data=%08x, size=%d\n", |
466 | __FUNCTION__, id, (unsigned int)data, size); | 466 | __func__, id, (unsigned int)data, size); |
467 | 467 | ||
468 | buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC); | 468 | buf = kmem_cache_alloc(dma_kmem, GFP_ATOMIC); |
469 | if (buf == NULL) { | 469 | if (buf == NULL) { |
470 | pr_debug("%s: out of memory (%ld alloc)\n", | 470 | pr_debug("%s: out of memory (%ld alloc)\n", |
471 | __FUNCTION__, (long)sizeof(*buf)); | 471 | __func__, (long)sizeof(*buf)); |
472 | return -ENOMEM; | 472 | return -ENOMEM; |
473 | } | 473 | } |
474 | 474 | ||
475 | //pr_debug("%s: new buffer %p\n", __FUNCTION__, buf); | 475 | //pr_debug("%s: new buffer %p\n", __func__, buf); |
476 | //dbg_showchan(chan); | 476 | //dbg_showchan(chan); |
477 | 477 | ||
478 | buf->next = NULL; | 478 | buf->next = NULL; |
@@ -486,18 +486,18 @@ int s3c2410_dma_enqueue(unsigned int channel, void *id, | |||
486 | if (chan->curr == NULL) { | 486 | if (chan->curr == NULL) { |
487 | /* we've got nothing loaded... */ | 487 | /* we've got nothing loaded... */ |
488 | pr_debug("%s: buffer %p queued onto empty channel\n", | 488 | pr_debug("%s: buffer %p queued onto empty channel\n", |
489 | __FUNCTION__, buf); | 489 | __func__, buf); |
490 | 490 | ||
491 | chan->curr = buf; | 491 | chan->curr = buf; |
492 | chan->end = buf; | 492 | chan->end = buf; |
493 | chan->next = NULL; | 493 | chan->next = NULL; |
494 | } else { | 494 | } else { |
495 | pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n", | 495 | pr_debug("dma%d: %s: buffer %p queued onto non-empty channel\n", |
496 | chan->number, __FUNCTION__, buf); | 496 | chan->number, __func__, buf); |
497 | 497 | ||
498 | if (chan->end == NULL) | 498 | if (chan->end == NULL) |
499 | pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n", | 499 | pr_debug("dma%d: %s: %p not empty, and chan->end==NULL?\n", |
500 | chan->number, __FUNCTION__, chan); | 500 | chan->number, __func__, chan); |
501 | 501 | ||
502 | chan->end->next = buf; | 502 | chan->end->next = buf; |
503 | chan->end = buf; | 503 | chan->end = buf; |
@@ -572,7 +572,7 @@ s3c2410_dma_lastxfer(struct s3c2410_dma_chan *chan) | |||
572 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | 572 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { |
573 | /* flag error? */ | 573 | /* flag error? */ |
574 | printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", | 574 | printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", |
575 | chan->number, __FUNCTION__); | 575 | chan->number, __func__); |
576 | return; | 576 | return; |
577 | } | 577 | } |
578 | break; | 578 | break; |
@@ -658,7 +658,7 @@ s3c2410_dma_irq(int irq, void *devpw) | |||
658 | 658 | ||
659 | if (buf->magic != BUF_MAGIC) { | 659 | if (buf->magic != BUF_MAGIC) { |
660 | printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n", | 660 | printk(KERN_ERR "dma%d: %s: buf %p incorrect magic\n", |
661 | chan->number, __FUNCTION__, buf); | 661 | chan->number, __func__, buf); |
662 | return IRQ_HANDLED; | 662 | return IRQ_HANDLED; |
663 | } | 663 | } |
664 | 664 | ||
@@ -692,7 +692,7 @@ s3c2410_dma_irq(int irq, void *devpw) | |||
692 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | 692 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { |
693 | /* flag error? */ | 693 | /* flag error? */ |
694 | printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", | 694 | printk(KERN_ERR "dma%d: timeout waiting for load (%s)\n", |
695 | chan->number, __FUNCTION__); | 695 | chan->number, __func__); |
696 | return IRQ_HANDLED; | 696 | return IRQ_HANDLED; |
697 | } | 697 | } |
698 | 698 | ||
@@ -759,7 +759,7 @@ int s3c2410_dma_request(unsigned int channel, | |||
759 | 759 | ||
760 | if (!chan->irq_claimed) { | 760 | if (!chan->irq_claimed) { |
761 | pr_debug("dma%d: %s : requesting irq %d\n", | 761 | pr_debug("dma%d: %s : requesting irq %d\n", |
762 | channel, __FUNCTION__, chan->irq); | 762 | channel, __func__, chan->irq); |
763 | 763 | ||
764 | chan->irq_claimed = 1; | 764 | chan->irq_claimed = 1; |
765 | local_irq_restore(flags); | 765 | local_irq_restore(flags); |
@@ -786,7 +786,7 @@ int s3c2410_dma_request(unsigned int channel, | |||
786 | 786 | ||
787 | /* need to setup */ | 787 | /* need to setup */ |
788 | 788 | ||
789 | pr_debug("%s: channel initialised, %p\n", __FUNCTION__, chan); | 789 | pr_debug("%s: channel initialised, %p\n", __func__, chan); |
790 | 790 | ||
791 | return chan->number | DMACH_LOW_LEVEL; | 791 | return chan->number | DMACH_LOW_LEVEL; |
792 | } | 792 | } |
@@ -823,7 +823,7 @@ int s3c2410_dma_free(dmach_t channel, struct s3c2410_dma_client *client) | |||
823 | 823 | ||
824 | if (chan->state != S3C2410_DMA_IDLE) { | 824 | if (chan->state != S3C2410_DMA_IDLE) { |
825 | pr_debug("%s: need to stop dma channel %p\n", | 825 | pr_debug("%s: need to stop dma channel %p\n", |
826 | __FUNCTION__, chan); | 826 | __func__, chan); |
827 | 827 | ||
828 | /* possibly flush the channel */ | 828 | /* possibly flush the channel */ |
829 | s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP); | 829 | s3c2410_dma_ctrl(channel, S3C2410_DMAOP_STOP); |
@@ -852,7 +852,7 @@ static int s3c2410_dma_dostop(struct s3c2410_dma_chan *chan) | |||
852 | unsigned long flags; | 852 | unsigned long flags; |
853 | unsigned long tmp; | 853 | unsigned long tmp; |
854 | 854 | ||
855 | pr_debug("%s:\n", __FUNCTION__); | 855 | pr_debug("%s:\n", __func__); |
856 | 856 | ||
857 | dbg_showchan(chan); | 857 | dbg_showchan(chan); |
858 | 858 | ||
@@ -907,14 +907,14 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan) | |||
907 | struct s3c2410_dma_buf *buf, *next; | 907 | struct s3c2410_dma_buf *buf, *next; |
908 | unsigned long flags; | 908 | unsigned long flags; |
909 | 909 | ||
910 | pr_debug("%s: chan %p (%d)\n", __FUNCTION__, chan, chan->number); | 910 | pr_debug("%s: chan %p (%d)\n", __func__, chan, chan->number); |
911 | 911 | ||
912 | dbg_showchan(chan); | 912 | dbg_showchan(chan); |
913 | 913 | ||
914 | local_irq_save(flags); | 914 | local_irq_save(flags); |
915 | 915 | ||
916 | if (chan->state != S3C2410_DMA_IDLE) { | 916 | if (chan->state != S3C2410_DMA_IDLE) { |
917 | pr_debug("%s: stopping channel...\n", __FUNCTION__ ); | 917 | pr_debug("%s: stopping channel...\n", __func__ ); |
918 | s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP); | 918 | s3c2410_dma_ctrl(chan->number, S3C2410_DMAOP_STOP); |
919 | } | 919 | } |
920 | 920 | ||
@@ -929,7 +929,7 @@ static int s3c2410_dma_flush(struct s3c2410_dma_chan *chan) | |||
929 | next = buf->next; | 929 | next = buf->next; |
930 | 930 | ||
931 | pr_debug("%s: free buffer %p, next %p\n", | 931 | pr_debug("%s: free buffer %p, next %p\n", |
932 | __FUNCTION__, buf, buf->next); | 932 | __func__, buf, buf->next); |
933 | 933 | ||
934 | s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT); | 934 | s3c2410_dma_buffdone(chan, buf, S3C2410_RES_ABORT); |
935 | s3c2410_dma_freebuf(buf); | 935 | s3c2410_dma_freebuf(buf); |
@@ -976,7 +976,7 @@ static int s3c2410_dma_started(struct s3c2410_dma_chan *chan) | |||
976 | 976 | ||
977 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { | 977 | if (s3c2410_dma_waitforload(chan, __LINE__) == 0) { |
978 | pr_debug("%s: buff not yet loaded, no more todo\n", | 978 | pr_debug("%s: buff not yet loaded, no more todo\n", |
979 | __FUNCTION__); | 979 | __func__); |
980 | } else { | 980 | } else { |
981 | chan->load_state = S3C2410_DMALOAD_1RUNNING; | 981 | chan->load_state = S3C2410_DMALOAD_1RUNNING; |
982 | s3c2410_dma_loadbuffer(chan, chan->next); | 982 | s3c2410_dma_loadbuffer(chan, chan->next); |
@@ -1050,16 +1050,16 @@ int s3c2410_dma_config(dmach_t channel, | |||
1050 | struct s3c2410_dma_chan *chan = lookup_dma_channel(channel); | 1050 | struct s3c2410_dma_chan *chan = lookup_dma_channel(channel); |
1051 | 1051 | ||
1052 | pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n", | 1052 | pr_debug("%s: chan=%d, xfer_unit=%d, dcon=%08x\n", |
1053 | __FUNCTION__, channel, xferunit, dcon); | 1053 | __func__, channel, xferunit, dcon); |
1054 | 1054 | ||
1055 | if (chan == NULL) | 1055 | if (chan == NULL) |
1056 | return -EINVAL; | 1056 | return -EINVAL; |
1057 | 1057 | ||
1058 | pr_debug("%s: Initial dcon is %08x\n", __FUNCTION__, dcon); | 1058 | pr_debug("%s: Initial dcon is %08x\n", __func__, dcon); |
1059 | 1059 | ||
1060 | dcon |= chan->dcon & dma_sel.dcon_mask; | 1060 | dcon |= chan->dcon & dma_sel.dcon_mask; |
1061 | 1061 | ||
1062 | pr_debug("%s: New dcon is %08x\n", __FUNCTION__, dcon); | 1062 | pr_debug("%s: New dcon is %08x\n", __func__, dcon); |
1063 | 1063 | ||
1064 | switch (xferunit) { | 1064 | switch (xferunit) { |
1065 | case 1: | 1065 | case 1: |
@@ -1075,14 +1075,14 @@ int s3c2410_dma_config(dmach_t channel, | |||
1075 | break; | 1075 | break; |
1076 | 1076 | ||
1077 | default: | 1077 | default: |
1078 | pr_debug("%s: bad transfer size %d\n", __FUNCTION__, xferunit); | 1078 | pr_debug("%s: bad transfer size %d\n", __func__, xferunit); |
1079 | return -EINVAL; | 1079 | return -EINVAL; |
1080 | } | 1080 | } |
1081 | 1081 | ||
1082 | dcon |= S3C2410_DCON_HWTRIG; | 1082 | dcon |= S3C2410_DCON_HWTRIG; |
1083 | dcon |= S3C2410_DCON_INTREQ; | 1083 | dcon |= S3C2410_DCON_INTREQ; |
1084 | 1084 | ||
1085 | pr_debug("%s: dcon now %08x\n", __FUNCTION__, dcon); | 1085 | pr_debug("%s: dcon now %08x\n", __func__, dcon); |
1086 | 1086 | ||
1087 | chan->dcon = dcon; | 1087 | chan->dcon = dcon; |
1088 | chan->xfer_unit = xferunit; | 1088 | chan->xfer_unit = xferunit; |
@@ -1099,7 +1099,7 @@ int s3c2410_dma_setflags(dmach_t channel, unsigned int flags) | |||
1099 | if (chan == NULL) | 1099 | if (chan == NULL) |
1100 | return -EINVAL; | 1100 | return -EINVAL; |
1101 | 1101 | ||
1102 | pr_debug("%s: chan=%p, flags=%08x\n", __FUNCTION__, chan, flags); | 1102 | pr_debug("%s: chan=%p, flags=%08x\n", __func__, chan, flags); |
1103 | 1103 | ||
1104 | chan->flags = flags; | 1104 | chan->flags = flags; |
1105 | 1105 | ||
@@ -1120,7 +1120,7 @@ int s3c2410_dma_set_opfn(dmach_t channel, s3c2410_dma_opfn_t rtn) | |||
1120 | if (chan == NULL) | 1120 | if (chan == NULL) |
1121 | return -EINVAL; | 1121 | return -EINVAL; |
1122 | 1122 | ||
1123 | pr_debug("%s: chan=%p, op rtn=%p\n", __FUNCTION__, chan, rtn); | 1123 | pr_debug("%s: chan=%p, op rtn=%p\n", __func__, chan, rtn); |
1124 | 1124 | ||
1125 | chan->op_fn = rtn; | 1125 | chan->op_fn = rtn; |
1126 | 1126 | ||
@@ -1136,7 +1136,7 @@ int s3c2410_dma_set_buffdone_fn(dmach_t channel, s3c2410_dma_cbfn_t rtn) | |||
1136 | if (chan == NULL) | 1136 | if (chan == NULL) |
1137 | return -EINVAL; | 1137 | return -EINVAL; |
1138 | 1138 | ||
1139 | pr_debug("%s: chan=%p, callback rtn=%p\n", __FUNCTION__, chan, rtn); | 1139 | pr_debug("%s: chan=%p, callback rtn=%p\n", __func__, chan, rtn); |
1140 | 1140 | ||
1141 | chan->callback_fn = rtn; | 1141 | chan->callback_fn = rtn; |
1142 | 1142 | ||
@@ -1170,7 +1170,7 @@ int s3c2410_dma_devconfig(int channel, | |||
1170 | return -EINVAL; | 1170 | return -EINVAL; |
1171 | 1171 | ||
1172 | pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n", | 1172 | pr_debug("%s: source=%d, hwcfg=%08x, devaddr=%08lx\n", |
1173 | __FUNCTION__, (int)source, hwcfg, devaddr); | 1173 | __func__, (int)source, hwcfg, devaddr); |
1174 | 1174 | ||
1175 | chan->source = source; | 1175 | chan->source = source; |
1176 | chan->dev_addr = devaddr; | 1176 | chan->dev_addr = devaddr; |
@@ -1180,7 +1180,7 @@ int s3c2410_dma_devconfig(int channel, | |||
1180 | case S3C2410_DMASRC_HW: | 1180 | case S3C2410_DMASRC_HW: |
1181 | /* source is hardware */ | 1181 | /* source is hardware */ |
1182 | pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n", | 1182 | pr_debug("%s: hw source, devaddr=%08lx, hwcfg=%d\n", |
1183 | __FUNCTION__, devaddr, hwcfg); | 1183 | __func__, devaddr, hwcfg); |
1184 | dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3); | 1184 | dma_wrreg(chan, S3C2410_DMA_DISRCC, hwcfg & 3); |
1185 | dma_wrreg(chan, S3C2410_DMA_DISRC, devaddr); | 1185 | dma_wrreg(chan, S3C2410_DMA_DISRC, devaddr); |
1186 | dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0)); | 1186 | dma_wrreg(chan, S3C2410_DMA_DIDSTC, (0<<1) | (0<<0)); |
@@ -1190,8 +1190,8 @@ int s3c2410_dma_devconfig(int channel, | |||
1190 | 1190 | ||
1191 | case S3C2410_DMASRC_MEM: | 1191 | case S3C2410_DMASRC_MEM: |
1192 | /* source is memory */ | 1192 | /* source is memory */ |
1193 | pr_debug( "%s: mem source, devaddr=%08lx, hwcfg=%d\n", | 1193 | pr_debug("%s: mem source, devaddr=%08lx, hwcfg=%d\n", |
1194 | __FUNCTION__, devaddr, hwcfg); | 1194 | __func__, devaddr, hwcfg); |
1195 | dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0)); | 1195 | dma_wrreg(chan, S3C2410_DMA_DISRCC, (0<<1) | (0<<0)); |
1196 | dma_wrreg(chan, S3C2410_DMA_DIDST, devaddr); | 1196 | dma_wrreg(chan, S3C2410_DMA_DIDST, devaddr); |
1197 | dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3); | 1197 | dma_wrreg(chan, S3C2410_DMA_DIDSTC, hwcfg & 3); |
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index ade230d445d9..8724ed3298d3 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig | |||
@@ -1824,7 +1824,7 @@ choice | |||
1824 | Allows the configuration of the timer frequency. | 1824 | Allows the configuration of the timer frequency. |
1825 | 1825 | ||
1826 | config HZ_48 | 1826 | config HZ_48 |
1827 | bool "48 HZ" if SYS_SUPPORTS_48HZ | 1827 | bool "48 HZ" if SYS_SUPPORTS_48HZ || SYS_SUPPORTS_ARBIT_HZ |
1828 | 1828 | ||
1829 | config HZ_100 | 1829 | config HZ_100 |
1830 | bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ | 1830 | bool "100 HZ" if SYS_SUPPORTS_100HZ || SYS_SUPPORTS_ARBIT_HZ |
diff --git a/arch/mips/Makefile b/arch/mips/Makefile index 3fb7f3065c92..72097dacabd3 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile | |||
@@ -12,6 +12,8 @@ | |||
12 | # for "archclean" cleaning up for this architecture. | 12 | # for "archclean" cleaning up for this architecture. |
13 | # | 13 | # |
14 | 14 | ||
15 | KBUILD_DEFCONFIG := ip22_defconfig | ||
16 | |||
15 | cflags-y := | 17 | cflags-y := |
16 | 18 | ||
17 | # | 19 | # |
diff --git a/arch/mips/au1000/common/dbdma.c b/arch/mips/au1000/common/dbdma.c index 428ed275a0f6..57f17b41098d 100644 --- a/arch/mips/au1000/common/dbdma.c +++ b/arch/mips/au1000/common/dbdma.c | |||
@@ -161,22 +161,22 @@ static dbdev_tab_t dbdev_tab[] = { | |||
161 | { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, | 161 | { DSCR_CMD0_ALWAYS, DEV_FLAGS_ANYUSE, 0, 0, 0x00000000, 0, 0 }, |
162 | 162 | ||
163 | /* Provide 16 user definable device types */ | 163 | /* Provide 16 user definable device types */ |
164 | { 0, 0, 0, 0, 0, 0, 0 }, | 164 | { ~0, 0, 0, 0, 0, 0, 0 }, |
165 | { 0, 0, 0, 0, 0, 0, 0 }, | 165 | { ~0, 0, 0, 0, 0, 0, 0 }, |
166 | { 0, 0, 0, 0, 0, 0, 0 }, | 166 | { ~0, 0, 0, 0, 0, 0, 0 }, |
167 | { 0, 0, 0, 0, 0, 0, 0 }, | 167 | { ~0, 0, 0, 0, 0, 0, 0 }, |
168 | { 0, 0, 0, 0, 0, 0, 0 }, | 168 | { ~0, 0, 0, 0, 0, 0, 0 }, |
169 | { 0, 0, 0, 0, 0, 0, 0 }, | 169 | { ~0, 0, 0, 0, 0, 0, 0 }, |
170 | { 0, 0, 0, 0, 0, 0, 0 }, | 170 | { ~0, 0, 0, 0, 0, 0, 0 }, |
171 | { 0, 0, 0, 0, 0, 0, 0 }, | 171 | { ~0, 0, 0, 0, 0, 0, 0 }, |
172 | { 0, 0, 0, 0, 0, 0, 0 }, | 172 | { ~0, 0, 0, 0, 0, 0, 0 }, |
173 | { 0, 0, 0, 0, 0, 0, 0 }, | 173 | { ~0, 0, 0, 0, 0, 0, 0 }, |
174 | { 0, 0, 0, 0, 0, 0, 0 }, | 174 | { ~0, 0, 0, 0, 0, 0, 0 }, |
175 | { 0, 0, 0, 0, 0, 0, 0 }, | 175 | { ~0, 0, 0, 0, 0, 0, 0 }, |
176 | { 0, 0, 0, 0, 0, 0, 0 }, | 176 | { ~0, 0, 0, 0, 0, 0, 0 }, |
177 | { 0, 0, 0, 0, 0, 0, 0 }, | 177 | { ~0, 0, 0, 0, 0, 0, 0 }, |
178 | { 0, 0, 0, 0, 0, 0, 0 }, | 178 | { ~0, 0, 0, 0, 0, 0, 0 }, |
179 | { 0, 0, 0, 0, 0, 0, 0 }, | 179 | { ~0, 0, 0, 0, 0, 0, 0 }, |
180 | }; | 180 | }; |
181 | 181 | ||
182 | #define DBDEV_TAB_SIZE ARRAY_SIZE(dbdev_tab) | 182 | #define DBDEV_TAB_SIZE ARRAY_SIZE(dbdev_tab) |
@@ -209,7 +209,7 @@ au1xxx_ddma_add_device(dbdev_tab_t *dev) | |||
209 | dbdev_tab_t *p=NULL; | 209 | dbdev_tab_t *p=NULL; |
210 | static u16 new_id=0x1000; | 210 | static u16 new_id=0x1000; |
211 | 211 | ||
212 | p = find_dbdev_id(0); | 212 | p = find_dbdev_id(~0); |
213 | if ( NULL != p ) | 213 | if ( NULL != p ) |
214 | { | 214 | { |
215 | memcpy(p, dev, sizeof(dbdev_tab_t)); | 215 | memcpy(p, dev, sizeof(dbdev_tab_t)); |
diff --git a/arch/mips/defconfig b/arch/mips/defconfig deleted file mode 100644 index 4f5e56c9335e..000000000000 --- a/arch/mips/defconfig +++ /dev/null | |||
@@ -1,1158 +0,0 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.23-rc2 | ||
4 | # Tue Aug 7 12:39:49 2007 | ||
5 | # | ||
6 | CONFIG_MIPS=y | ||
7 | |||
8 | # | ||
9 | # Machine selection | ||
10 | # | ||
11 | CONFIG_ZONE_DMA=y | ||
12 | # CONFIG_MACH_ALCHEMY is not set | ||
13 | # CONFIG_BASLER_EXCITE is not set | ||
14 | # CONFIG_MIPS_COBALT is not set | ||
15 | # CONFIG_MACH_DECSTATION is not set | ||
16 | # CONFIG_MACH_JAZZ is not set | ||
17 | # CONFIG_LEMOTE_FULONG is not set | ||
18 | # CONFIG_MIPS_ATLAS is not set | ||
19 | # CONFIG_MIPS_MALTA is not set | ||
20 | # CONFIG_MIPS_SEAD is not set | ||
21 | # CONFIG_MIPS_SIM is not set | ||
22 | # CONFIG_MARKEINS is not set | ||
23 | # CONFIG_MACH_VR41XX is not set | ||
24 | # CONFIG_PNX8550_JBS is not set | ||
25 | # CONFIG_PNX8550_STB810 is not set | ||
26 | # CONFIG_PMC_MSP is not set | ||
27 | # CONFIG_PMC_YOSEMITE is not set | ||
28 | CONFIG_SGI_IP22=y | ||
29 | # CONFIG_SGI_IP27 is not set | ||
30 | # CONFIG_SGI_IP32 is not set | ||
31 | # CONFIG_SIBYTE_CRHINE is not set | ||
32 | # CONFIG_SIBYTE_CARMEL is not set | ||
33 | # CONFIG_SIBYTE_CRHONE is not set | ||
34 | # CONFIG_SIBYTE_RHONE is not set | ||
35 | # CONFIG_SIBYTE_SWARM is not set | ||
36 | # CONFIG_SIBYTE_LITTLESUR is not set | ||
37 | # CONFIG_SIBYTE_SENTOSA is not set | ||
38 | # CONFIG_SIBYTE_BIGSUR is not set | ||
39 | # CONFIG_SNI_RM is not set | ||
40 | # CONFIG_TOSHIBA_JMR3927 is not set | ||
41 | # CONFIG_TOSHIBA_RBTX4927 is not set | ||
42 | # CONFIG_TOSHIBA_RBTX4938 is not set | ||
43 | # CONFIG_WR_PPMC is not set | ||
44 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
45 | # CONFIG_ARCH_HAS_ILOG2_U32 is not set | ||
46 | # CONFIG_ARCH_HAS_ILOG2_U64 is not set | ||
47 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
48 | CONFIG_GENERIC_HWEIGHT=y | ||
49 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
50 | CONFIG_GENERIC_TIME=y | ||
51 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
52 | # CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set | ||
53 | CONFIG_ARC=y | ||
54 | CONFIG_DMA_NONCOHERENT=y | ||
55 | CONFIG_DMA_NEED_PCI_MAP_STATE=y | ||
56 | CONFIG_EARLY_PRINTK=y | ||
57 | CONFIG_SYS_HAS_EARLY_PRINTK=y | ||
58 | # CONFIG_NO_IOPORT is not set | ||
59 | CONFIG_GENERIC_ISA_DMA_SUPPORT_BROKEN=y | ||
60 | CONFIG_CPU_BIG_ENDIAN=y | ||
61 | # CONFIG_CPU_LITTLE_ENDIAN is not set | ||
62 | CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y | ||
63 | CONFIG_IRQ_CPU=y | ||
64 | CONFIG_SWAP_IO_SPACE=y | ||
65 | CONFIG_ARC32=y | ||
66 | CONFIG_BOOT_ELF32=y | ||
67 | CONFIG_MIPS_L1_CACHE_SHIFT=5 | ||
68 | CONFIG_ARC_CONSOLE=y | ||
69 | CONFIG_ARC_PROMLIB=y | ||
70 | |||
71 | # | ||
72 | # CPU selection | ||
73 | # | ||
74 | # CONFIG_CPU_LOONGSON2 is not set | ||
75 | # CONFIG_CPU_MIPS32_R1 is not set | ||
76 | # CONFIG_CPU_MIPS32_R2 is not set | ||
77 | # CONFIG_CPU_MIPS64_R1 is not set | ||
78 | # CONFIG_CPU_MIPS64_R2 is not set | ||
79 | # CONFIG_CPU_R3000 is not set | ||
80 | # CONFIG_CPU_TX39XX is not set | ||
81 | # CONFIG_CPU_VR41XX is not set | ||
82 | # CONFIG_CPU_R4300 is not set | ||
83 | # CONFIG_CPU_R4X00 is not set | ||
84 | # CONFIG_CPU_TX49XX is not set | ||
85 | CONFIG_CPU_R5000=y | ||
86 | # CONFIG_CPU_R5432 is not set | ||
87 | # CONFIG_CPU_R6000 is not set | ||
88 | # CONFIG_CPU_NEVADA is not set | ||
89 | # CONFIG_CPU_R8000 is not set | ||
90 | # CONFIG_CPU_R10000 is not set | ||
91 | # CONFIG_CPU_RM7000 is not set | ||
92 | # CONFIG_CPU_RM9000 is not set | ||
93 | # CONFIG_CPU_SB1 is not set | ||
94 | CONFIG_SYS_HAS_CPU_R4X00=y | ||
95 | CONFIG_SYS_HAS_CPU_R5000=y | ||
96 | CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y | ||
97 | CONFIG_SYS_SUPPORTS_64BIT_KERNEL=y | ||
98 | CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y | ||
99 | CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y | ||
100 | |||
101 | # | ||
102 | # Kernel type | ||
103 | # | ||
104 | CONFIG_32BIT=y | ||
105 | # CONFIG_64BIT is not set | ||
106 | CONFIG_PAGE_SIZE_4KB=y | ||
107 | # CONFIG_PAGE_SIZE_8KB is not set | ||
108 | # CONFIG_PAGE_SIZE_16KB is not set | ||
109 | # CONFIG_PAGE_SIZE_64KB is not set | ||
110 | CONFIG_BOARD_SCACHE=y | ||
111 | CONFIG_IP22_CPU_SCACHE=y | ||
112 | CONFIG_MIPS_MT_DISABLED=y | ||
113 | # CONFIG_MIPS_MT_SMP is not set | ||
114 | # CONFIG_MIPS_MT_SMTC is not set | ||
115 | CONFIG_CPU_HAS_LLSC=y | ||
116 | CONFIG_CPU_HAS_SYNC=y | ||
117 | CONFIG_GENERIC_HARDIRQS=y | ||
118 | CONFIG_GENERIC_IRQ_PROBE=y | ||
119 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
120 | CONFIG_SELECT_MEMORY_MODEL=y | ||
121 | CONFIG_FLATMEM_MANUAL=y | ||
122 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
123 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
124 | CONFIG_FLATMEM=y | ||
125 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
126 | # CONFIG_SPARSEMEM_STATIC is not set | ||
127 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
128 | # CONFIG_RESOURCES_64BIT is not set | ||
129 | CONFIG_ZONE_DMA_FLAG=1 | ||
130 | CONFIG_BOUNCE=y | ||
131 | CONFIG_VIRT_TO_BUS=y | ||
132 | # CONFIG_HZ_48 is not set | ||
133 | # CONFIG_HZ_100 is not set | ||
134 | # CONFIG_HZ_128 is not set | ||
135 | # CONFIG_HZ_250 is not set | ||
136 | # CONFIG_HZ_256 is not set | ||
137 | CONFIG_HZ_1000=y | ||
138 | # CONFIG_HZ_1024 is not set | ||
139 | CONFIG_SYS_SUPPORTS_ARBIT_HZ=y | ||
140 | CONFIG_HZ=1000 | ||
141 | # CONFIG_PREEMPT_NONE is not set | ||
142 | CONFIG_PREEMPT_VOLUNTARY=y | ||
143 | # CONFIG_PREEMPT is not set | ||
144 | # CONFIG_KEXEC is not set | ||
145 | CONFIG_SECCOMP=y | ||
146 | CONFIG_LOCKDEP_SUPPORT=y | ||
147 | CONFIG_STACKTRACE_SUPPORT=y | ||
148 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
149 | |||
150 | # | ||
151 | # General setup | ||
152 | # | ||
153 | CONFIG_EXPERIMENTAL=y | ||
154 | CONFIG_BROKEN_ON_SMP=y | ||
155 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
156 | CONFIG_LOCALVERSION="" | ||
157 | CONFIG_LOCALVERSION_AUTO=y | ||
158 | CONFIG_SWAP=y | ||
159 | CONFIG_SYSVIPC=y | ||
160 | CONFIG_SYSVIPC_SYSCTL=y | ||
161 | # CONFIG_POSIX_MQUEUE is not set | ||
162 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
163 | # CONFIG_TASKSTATS is not set | ||
164 | # CONFIG_USER_NS is not set | ||
165 | # CONFIG_AUDIT is not set | ||
166 | CONFIG_IKCONFIG=y | ||
167 | CONFIG_IKCONFIG_PROC=y | ||
168 | CONFIG_LOG_BUF_SHIFT=14 | ||
169 | CONFIG_SYSFS_DEPRECATED=y | ||
170 | CONFIG_RELAY=y | ||
171 | # CONFIG_BLK_DEV_INITRD is not set | ||
172 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
173 | CONFIG_SYSCTL=y | ||
174 | CONFIG_EMBEDDED=y | ||
175 | CONFIG_SYSCTL_SYSCALL=y | ||
176 | CONFIG_KALLSYMS=y | ||
177 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
178 | # CONFIG_HOTPLUG is not set | ||
179 | CONFIG_PRINTK=y | ||
180 | CONFIG_BUG=y | ||
181 | CONFIG_ELF_CORE=y | ||
182 | CONFIG_BASE_FULL=y | ||
183 | CONFIG_FUTEX=y | ||
184 | CONFIG_ANON_INODES=y | ||
185 | CONFIG_EPOLL=y | ||
186 | CONFIG_SIGNALFD=y | ||
187 | CONFIG_TIMERFD=y | ||
188 | CONFIG_EVENTFD=y | ||
189 | CONFIG_SHMEM=y | ||
190 | CONFIG_VM_EVENT_COUNTERS=y | ||
191 | CONFIG_SLAB=y | ||
192 | # CONFIG_SLUB is not set | ||
193 | # CONFIG_SLOB is not set | ||
194 | CONFIG_RT_MUTEXES=y | ||
195 | # CONFIG_TINY_SHMEM is not set | ||
196 | CONFIG_BASE_SMALL=0 | ||
197 | CONFIG_MODULES=y | ||
198 | CONFIG_MODULE_UNLOAD=y | ||
199 | # CONFIG_MODULE_FORCE_UNLOAD is not set | ||
200 | CONFIG_MODVERSIONS=y | ||
201 | CONFIG_MODULE_SRCVERSION_ALL=y | ||
202 | CONFIG_KMOD=y | ||
203 | CONFIG_BLOCK=y | ||
204 | # CONFIG_LBD is not set | ||
205 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
206 | # CONFIG_LSF is not set | ||
207 | # CONFIG_BLK_DEV_BSG is not set | ||
208 | |||
209 | # | ||
210 | # IO Schedulers | ||
211 | # | ||
212 | CONFIG_IOSCHED_NOOP=y | ||
213 | CONFIG_IOSCHED_AS=y | ||
214 | CONFIG_IOSCHED_DEADLINE=y | ||
215 | CONFIG_IOSCHED_CFQ=y | ||
216 | CONFIG_DEFAULT_AS=y | ||
217 | # CONFIG_DEFAULT_DEADLINE is not set | ||
218 | # CONFIG_DEFAULT_CFQ is not set | ||
219 | # CONFIG_DEFAULT_NOOP is not set | ||
220 | CONFIG_DEFAULT_IOSCHED="anticipatory" | ||
221 | |||
222 | # | ||
223 | # Bus options (PCI, PCMCIA, EISA, ISA, TC) | ||
224 | # | ||
225 | CONFIG_HW_HAS_EISA=y | ||
226 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
227 | # CONFIG_EISA is not set | ||
228 | CONFIG_MMU=y | ||
229 | |||
230 | # | ||
231 | # PCCARD (PCMCIA/CardBus) support | ||
232 | # | ||
233 | |||
234 | # | ||
235 | # Executable file formats | ||
236 | # | ||
237 | CONFIG_BINFMT_ELF=y | ||
238 | CONFIG_BINFMT_MISC=m | ||
239 | CONFIG_TRAD_SIGNALS=y | ||
240 | |||
241 | # | ||
242 | # Power management options | ||
243 | # | ||
244 | CONFIG_PM=y | ||
245 | # CONFIG_PM_LEGACY is not set | ||
246 | # CONFIG_PM_DEBUG is not set | ||
247 | # CONFIG_SUSPEND is not set | ||
248 | |||
249 | # | ||
250 | # Networking | ||
251 | # | ||
252 | CONFIG_NET=y | ||
253 | |||
254 | # | ||
255 | # Networking options | ||
256 | # | ||
257 | CONFIG_PACKET=y | ||
258 | CONFIG_PACKET_MMAP=y | ||
259 | CONFIG_UNIX=y | ||
260 | CONFIG_XFRM=y | ||
261 | CONFIG_XFRM_USER=m | ||
262 | # CONFIG_XFRM_SUB_POLICY is not set | ||
263 | CONFIG_XFRM_MIGRATE=y | ||
264 | CONFIG_NET_KEY=y | ||
265 | CONFIG_NET_KEY_MIGRATE=y | ||
266 | CONFIG_INET=y | ||
267 | CONFIG_IP_MULTICAST=y | ||
268 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
269 | CONFIG_IP_FIB_HASH=y | ||
270 | CONFIG_IP_PNP=y | ||
271 | # CONFIG_IP_PNP_DHCP is not set | ||
272 | CONFIG_IP_PNP_BOOTP=y | ||
273 | # CONFIG_IP_PNP_RARP is not set | ||
274 | # CONFIG_NET_IPIP is not set | ||
275 | # CONFIG_NET_IPGRE is not set | ||
276 | # CONFIG_IP_MROUTE is not set | ||
277 | # CONFIG_ARPD is not set | ||
278 | # CONFIG_SYN_COOKIES is not set | ||
279 | CONFIG_INET_AH=m | ||
280 | CONFIG_INET_ESP=m | ||
281 | CONFIG_INET_IPCOMP=m | ||
282 | CONFIG_INET_XFRM_TUNNEL=m | ||
283 | CONFIG_INET_TUNNEL=m | ||
284 | CONFIG_INET_XFRM_MODE_TRANSPORT=m | ||
285 | CONFIG_INET_XFRM_MODE_TUNNEL=m | ||
286 | CONFIG_INET_XFRM_MODE_BEET=m | ||
287 | CONFIG_INET_DIAG=y | ||
288 | CONFIG_INET_TCP_DIAG=y | ||
289 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
290 | CONFIG_TCP_CONG_CUBIC=y | ||
291 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
292 | CONFIG_TCP_MD5SIG=y | ||
293 | CONFIG_IP_VS=m | ||
294 | # CONFIG_IP_VS_DEBUG is not set | ||
295 | CONFIG_IP_VS_TAB_BITS=12 | ||
296 | |||
297 | # | ||
298 | # IPVS transport protocol load balancing support | ||
299 | # | ||
300 | CONFIG_IP_VS_PROTO_TCP=y | ||
301 | CONFIG_IP_VS_PROTO_UDP=y | ||
302 | CONFIG_IP_VS_PROTO_ESP=y | ||
303 | CONFIG_IP_VS_PROTO_AH=y | ||
304 | |||
305 | # | ||
306 | # IPVS scheduler | ||
307 | # | ||
308 | CONFIG_IP_VS_RR=m | ||
309 | CONFIG_IP_VS_WRR=m | ||
310 | CONFIG_IP_VS_LC=m | ||
311 | CONFIG_IP_VS_WLC=m | ||
312 | CONFIG_IP_VS_LBLC=m | ||
313 | CONFIG_IP_VS_LBLCR=m | ||
314 | CONFIG_IP_VS_DH=m | ||
315 | CONFIG_IP_VS_SH=m | ||
316 | CONFIG_IP_VS_SED=m | ||
317 | CONFIG_IP_VS_NQ=m | ||
318 | |||
319 | # | ||
320 | # IPVS application helper | ||
321 | # | ||
322 | CONFIG_IP_VS_FTP=m | ||
323 | CONFIG_IPV6=m | ||
324 | CONFIG_IPV6_PRIVACY=y | ||
325 | CONFIG_IPV6_ROUTER_PREF=y | ||
326 | CONFIG_IPV6_ROUTE_INFO=y | ||
327 | CONFIG_IPV6_OPTIMISTIC_DAD=y | ||
328 | CONFIG_INET6_AH=m | ||
329 | CONFIG_INET6_ESP=m | ||
330 | CONFIG_INET6_IPCOMP=m | ||
331 | CONFIG_IPV6_MIP6=m | ||
332 | CONFIG_INET6_XFRM_TUNNEL=m | ||
333 | CONFIG_INET6_TUNNEL=m | ||
334 | CONFIG_INET6_XFRM_MODE_TRANSPORT=m | ||
335 | CONFIG_INET6_XFRM_MODE_TUNNEL=m | ||
336 | CONFIG_INET6_XFRM_MODE_BEET=m | ||
337 | CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m | ||
338 | CONFIG_IPV6_SIT=m | ||
339 | CONFIG_IPV6_TUNNEL=m | ||
340 | CONFIG_IPV6_MULTIPLE_TABLES=y | ||
341 | CONFIG_IPV6_SUBTREES=y | ||
342 | CONFIG_NETWORK_SECMARK=y | ||
343 | CONFIG_NETFILTER=y | ||
344 | # CONFIG_NETFILTER_DEBUG is not set | ||
345 | |||
346 | # | ||
347 | # Core Netfilter Configuration | ||
348 | # | ||
349 | CONFIG_NETFILTER_NETLINK=m | ||
350 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
351 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
352 | CONFIG_NF_CONNTRACK_ENABLED=m | ||
353 | CONFIG_NF_CONNTRACK=m | ||
354 | CONFIG_NF_CT_ACCT=y | ||
355 | CONFIG_NF_CONNTRACK_MARK=y | ||
356 | CONFIG_NF_CONNTRACK_SECMARK=y | ||
357 | CONFIG_NF_CONNTRACK_EVENTS=y | ||
358 | CONFIG_NF_CT_PROTO_GRE=m | ||
359 | CONFIG_NF_CT_PROTO_SCTP=m | ||
360 | CONFIG_NF_CT_PROTO_UDPLITE=m | ||
361 | CONFIG_NF_CONNTRACK_AMANDA=m | ||
362 | CONFIG_NF_CONNTRACK_FTP=m | ||
363 | CONFIG_NF_CONNTRACK_H323=m | ||
364 | CONFIG_NF_CONNTRACK_IRC=m | ||
365 | # CONFIG_NF_CONNTRACK_NETBIOS_NS is not set | ||
366 | CONFIG_NF_CONNTRACK_PPTP=m | ||
367 | CONFIG_NF_CONNTRACK_SANE=m | ||
368 | CONFIG_NF_CONNTRACK_SIP=m | ||
369 | CONFIG_NF_CONNTRACK_TFTP=m | ||
370 | CONFIG_NF_CT_NETLINK=m | ||
371 | CONFIG_NETFILTER_XTABLES=m | ||
372 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | ||
373 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | ||
374 | CONFIG_NETFILTER_XT_TARGET_DSCP=m | ||
375 | CONFIG_NETFILTER_XT_TARGET_MARK=m | ||
376 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | ||
377 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | ||
378 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | ||
379 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | ||
380 | CONFIG_NETFILTER_XT_TARGET_SECMARK=m | ||
381 | CONFIG_NETFILTER_XT_TARGET_CONNSECMARK=m | ||
382 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | ||
383 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | ||
384 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | ||
385 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | ||
386 | CONFIG_NETFILTER_XT_MATCH_CONNMARK=m | ||
387 | CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | ||
388 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | ||
389 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | ||
390 | CONFIG_NETFILTER_XT_MATCH_ESP=m | ||
391 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | ||
392 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | ||
393 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | ||
394 | CONFIG_NETFILTER_XT_MATCH_MAC=m | ||
395 | CONFIG_NETFILTER_XT_MATCH_MARK=m | ||
396 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | ||
397 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | ||
398 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | ||
399 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | ||
400 | CONFIG_NETFILTER_XT_MATCH_REALM=m | ||
401 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | ||
402 | CONFIG_NETFILTER_XT_MATCH_STATE=m | ||
403 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | ||
404 | CONFIG_NETFILTER_XT_MATCH_STRING=m | ||
405 | CONFIG_NETFILTER_XT_MATCH_TCPMSS=m | ||
406 | CONFIG_NETFILTER_XT_MATCH_U32=m | ||
407 | CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | ||
408 | |||
409 | # | ||
410 | # IP: Netfilter Configuration | ||
411 | # | ||
412 | CONFIG_NF_CONNTRACK_IPV4=m | ||
413 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | ||
414 | CONFIG_IP_NF_QUEUE=m | ||
415 | CONFIG_IP_NF_IPTABLES=m | ||
416 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
417 | CONFIG_IP_NF_MATCH_TOS=m | ||
418 | CONFIG_IP_NF_MATCH_RECENT=m | ||
419 | CONFIG_IP_NF_MATCH_ECN=m | ||
420 | CONFIG_IP_NF_MATCH_AH=m | ||
421 | CONFIG_IP_NF_MATCH_TTL=m | ||
422 | CONFIG_IP_NF_MATCH_OWNER=m | ||
423 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
424 | CONFIG_IP_NF_FILTER=m | ||
425 | CONFIG_IP_NF_TARGET_REJECT=m | ||
426 | CONFIG_IP_NF_TARGET_LOG=m | ||
427 | CONFIG_IP_NF_TARGET_ULOG=m | ||
428 | CONFIG_NF_NAT=m | ||
429 | CONFIG_NF_NAT_NEEDED=y | ||
430 | CONFIG_IP_NF_TARGET_MASQUERADE=m | ||
431 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
432 | CONFIG_IP_NF_TARGET_NETMAP=m | ||
433 | CONFIG_IP_NF_TARGET_SAME=m | ||
434 | CONFIG_NF_NAT_SNMP_BASIC=m | ||
435 | CONFIG_NF_NAT_PROTO_GRE=m | ||
436 | CONFIG_NF_NAT_FTP=m | ||
437 | CONFIG_NF_NAT_IRC=m | ||
438 | CONFIG_NF_NAT_TFTP=m | ||
439 | CONFIG_NF_NAT_AMANDA=m | ||
440 | CONFIG_NF_NAT_PPTP=m | ||
441 | CONFIG_NF_NAT_H323=m | ||
442 | CONFIG_NF_NAT_SIP=m | ||
443 | CONFIG_IP_NF_MANGLE=m | ||
444 | CONFIG_IP_NF_TARGET_TOS=m | ||
445 | CONFIG_IP_NF_TARGET_ECN=m | ||
446 | CONFIG_IP_NF_TARGET_TTL=m | ||
447 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | ||
448 | CONFIG_IP_NF_RAW=m | ||
449 | CONFIG_IP_NF_ARPTABLES=m | ||
450 | CONFIG_IP_NF_ARPFILTER=m | ||
451 | CONFIG_IP_NF_ARP_MANGLE=m | ||
452 | |||
453 | # | ||
454 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
455 | # | ||
456 | CONFIG_NF_CONNTRACK_IPV6=m | ||
457 | CONFIG_IP6_NF_QUEUE=m | ||
458 | CONFIG_IP6_NF_IPTABLES=m | ||
459 | CONFIG_IP6_NF_MATCH_RT=m | ||
460 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
461 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
462 | CONFIG_IP6_NF_MATCH_HL=m | ||
463 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
464 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
465 | CONFIG_IP6_NF_MATCH_AH=m | ||
466 | CONFIG_IP6_NF_MATCH_MH=m | ||
467 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
468 | CONFIG_IP6_NF_FILTER=m | ||
469 | CONFIG_IP6_NF_TARGET_LOG=m | ||
470 | CONFIG_IP6_NF_TARGET_REJECT=m | ||
471 | CONFIG_IP6_NF_MANGLE=m | ||
472 | CONFIG_IP6_NF_TARGET_HL=m | ||
473 | CONFIG_IP6_NF_RAW=m | ||
474 | # CONFIG_IP_DCCP is not set | ||
475 | CONFIG_IP_SCTP=m | ||
476 | # CONFIG_SCTP_DBG_MSG is not set | ||
477 | # CONFIG_SCTP_DBG_OBJCNT is not set | ||
478 | # CONFIG_SCTP_HMAC_NONE is not set | ||
479 | # CONFIG_SCTP_HMAC_SHA1 is not set | ||
480 | CONFIG_SCTP_HMAC_MD5=y | ||
481 | # CONFIG_TIPC is not set | ||
482 | # CONFIG_ATM is not set | ||
483 | # CONFIG_BRIDGE is not set | ||
484 | # CONFIG_VLAN_8021Q is not set | ||
485 | # CONFIG_DECNET is not set | ||
486 | # CONFIG_LLC2 is not set | ||
487 | # CONFIG_IPX is not set | ||
488 | # CONFIG_ATALK is not set | ||
489 | # CONFIG_X25 is not set | ||
490 | # CONFIG_LAPB is not set | ||
491 | # CONFIG_ECONET is not set | ||
492 | # CONFIG_WAN_ROUTER is not set | ||
493 | |||
494 | # | ||
495 | # QoS and/or fair queueing | ||
496 | # | ||
497 | CONFIG_NET_SCHED=y | ||
498 | CONFIG_NET_SCH_FIFO=y | ||
499 | |||
500 | # | ||
501 | # Queueing/Scheduling | ||
502 | # | ||
503 | CONFIG_NET_SCH_CBQ=m | ||
504 | CONFIG_NET_SCH_HTB=m | ||
505 | CONFIG_NET_SCH_HFSC=m | ||
506 | CONFIG_NET_SCH_PRIO=m | ||
507 | CONFIG_NET_SCH_RR=m | ||
508 | CONFIG_NET_SCH_RED=m | ||
509 | CONFIG_NET_SCH_SFQ=m | ||
510 | CONFIG_NET_SCH_TEQL=m | ||
511 | CONFIG_NET_SCH_TBF=m | ||
512 | CONFIG_NET_SCH_GRED=m | ||
513 | CONFIG_NET_SCH_DSMARK=m | ||
514 | CONFIG_NET_SCH_NETEM=m | ||
515 | CONFIG_NET_SCH_INGRESS=m | ||
516 | |||
517 | # | ||
518 | # Classification | ||
519 | # | ||
520 | CONFIG_NET_CLS=y | ||
521 | CONFIG_NET_CLS_BASIC=m | ||
522 | CONFIG_NET_CLS_TCINDEX=m | ||
523 | CONFIG_NET_CLS_ROUTE4=m | ||
524 | CONFIG_NET_CLS_ROUTE=y | ||
525 | CONFIG_NET_CLS_FW=m | ||
526 | CONFIG_NET_CLS_U32=m | ||
527 | # CONFIG_CLS_U32_PERF is not set | ||
528 | # CONFIG_CLS_U32_MARK is not set | ||
529 | CONFIG_NET_CLS_RSVP=m | ||
530 | CONFIG_NET_CLS_RSVP6=m | ||
531 | # CONFIG_NET_EMATCH is not set | ||
532 | CONFIG_NET_CLS_ACT=y | ||
533 | CONFIG_NET_ACT_POLICE=y | ||
534 | CONFIG_NET_ACT_GACT=m | ||
535 | CONFIG_GACT_PROB=y | ||
536 | CONFIG_NET_ACT_MIRRED=m | ||
537 | CONFIG_NET_ACT_IPT=m | ||
538 | CONFIG_NET_ACT_PEDIT=m | ||
539 | CONFIG_NET_ACT_SIMP=m | ||
540 | CONFIG_NET_CLS_POLICE=y | ||
541 | # CONFIG_NET_CLS_IND is not set | ||
542 | |||
543 | # | ||
544 | # Network testing | ||
545 | # | ||
546 | # CONFIG_NET_PKTGEN is not set | ||
547 | # CONFIG_HAMRADIO is not set | ||
548 | # CONFIG_IRDA is not set | ||
549 | # CONFIG_BT is not set | ||
550 | # CONFIG_AF_RXRPC is not set | ||
551 | CONFIG_FIB_RULES=y | ||
552 | |||
553 | # | ||
554 | # Wireless | ||
555 | # | ||
556 | CONFIG_CFG80211=m | ||
557 | CONFIG_WIRELESS_EXT=y | ||
558 | CONFIG_MAC80211=m | ||
559 | # CONFIG_MAC80211_DEBUG is not set | ||
560 | CONFIG_IEEE80211=m | ||
561 | # CONFIG_IEEE80211_DEBUG is not set | ||
562 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
563 | CONFIG_IEEE80211_CRYPT_CCMP=m | ||
564 | CONFIG_IEEE80211_CRYPT_TKIP=m | ||
565 | CONFIG_IEEE80211_SOFTMAC=m | ||
566 | # CONFIG_IEEE80211_SOFTMAC_DEBUG is not set | ||
567 | CONFIG_RFKILL=m | ||
568 | CONFIG_RFKILL_INPUT=m | ||
569 | # CONFIG_NET_9P is not set | ||
570 | |||
571 | # | ||
572 | # Device Drivers | ||
573 | # | ||
574 | |||
575 | # | ||
576 | # Generic Driver Options | ||
577 | # | ||
578 | CONFIG_STANDALONE=y | ||
579 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
580 | # CONFIG_SYS_HYPERVISOR is not set | ||
581 | CONFIG_CONNECTOR=m | ||
582 | # CONFIG_MTD is not set | ||
583 | # CONFIG_PARPORT is not set | ||
584 | CONFIG_BLK_DEV=y | ||
585 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
586 | # CONFIG_BLK_DEV_LOOP is not set | ||
587 | # CONFIG_BLK_DEV_NBD is not set | ||
588 | # CONFIG_BLK_DEV_RAM is not set | ||
589 | CONFIG_CDROM_PKTCDVD=m | ||
590 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | ||
591 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | ||
592 | CONFIG_ATA_OVER_ETH=m | ||
593 | # CONFIG_MISC_DEVICES is not set | ||
594 | # CONFIG_IDE is not set | ||
595 | |||
596 | # | ||
597 | # SCSI device support | ||
598 | # | ||
599 | CONFIG_RAID_ATTRS=m | ||
600 | CONFIG_SCSI=y | ||
601 | CONFIG_SCSI_DMA=y | ||
602 | CONFIG_SCSI_TGT=m | ||
603 | # CONFIG_SCSI_NETLINK is not set | ||
604 | CONFIG_SCSI_PROC_FS=y | ||
605 | |||
606 | # | ||
607 | # SCSI support type (disk, tape, CD-ROM) | ||
608 | # | ||
609 | CONFIG_BLK_DEV_SD=y | ||
610 | CONFIG_CHR_DEV_ST=y | ||
611 | # CONFIG_CHR_DEV_OSST is not set | ||
612 | CONFIG_BLK_DEV_SR=y | ||
613 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
614 | # CONFIG_CHR_DEV_SG is not set | ||
615 | CONFIG_CHR_DEV_SCH=m | ||
616 | |||
617 | # | ||
618 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
619 | # | ||
620 | # CONFIG_SCSI_MULTI_LUN is not set | ||
621 | CONFIG_SCSI_CONSTANTS=y | ||
622 | # CONFIG_SCSI_LOGGING is not set | ||
623 | CONFIG_SCSI_SCAN_ASYNC=y | ||
624 | CONFIG_SCSI_WAIT_SCAN=m | ||
625 | |||
626 | # | ||
627 | # SCSI Transports | ||
628 | # | ||
629 | CONFIG_SCSI_SPI_ATTRS=m | ||
630 | # CONFIG_SCSI_FC_ATTRS is not set | ||
631 | CONFIG_SCSI_ISCSI_ATTRS=m | ||
632 | # CONFIG_SCSI_SAS_LIBSAS is not set | ||
633 | CONFIG_SCSI_LOWLEVEL=y | ||
634 | CONFIG_ISCSI_TCP=m | ||
635 | CONFIG_SGIWD93_SCSI=y | ||
636 | # CONFIG_SCSI_DEBUG is not set | ||
637 | # CONFIG_ATA is not set | ||
638 | # CONFIG_MD is not set | ||
639 | CONFIG_NETDEVICES=y | ||
640 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
641 | # CONFIG_IFB is not set | ||
642 | CONFIG_DUMMY=m | ||
643 | CONFIG_BONDING=m | ||
644 | CONFIG_MACVLAN=m | ||
645 | CONFIG_EQUALIZER=m | ||
646 | CONFIG_TUN=m | ||
647 | CONFIG_PHYLIB=m | ||
648 | |||
649 | # | ||
650 | # MII PHY device drivers | ||
651 | # | ||
652 | CONFIG_MARVELL_PHY=m | ||
653 | CONFIG_DAVICOM_PHY=m | ||
654 | CONFIG_QSEMI_PHY=m | ||
655 | CONFIG_LXT_PHY=m | ||
656 | CONFIG_CICADA_PHY=m | ||
657 | # CONFIG_VITESSE_PHY is not set | ||
658 | # CONFIG_SMSC_PHY is not set | ||
659 | # CONFIG_BROADCOM_PHY is not set | ||
660 | # CONFIG_ICPLUS_PHY is not set | ||
661 | # CONFIG_FIXED_PHY is not set | ||
662 | CONFIG_NET_ETHERNET=y | ||
663 | # CONFIG_MII is not set | ||
664 | # CONFIG_AX88796 is not set | ||
665 | # CONFIG_DM9000 is not set | ||
666 | CONFIG_SGISEEQ=y | ||
667 | # CONFIG_NETDEV_1000 is not set | ||
668 | # CONFIG_NETDEV_10000 is not set | ||
669 | |||
670 | # | ||
671 | # Wireless LAN | ||
672 | # | ||
673 | CONFIG_WLAN_PRE80211=y | ||
674 | CONFIG_STRIP=m | ||
675 | CONFIG_WLAN_80211=y | ||
676 | # CONFIG_LIBERTAS is not set | ||
677 | CONFIG_HOSTAP=m | ||
678 | # CONFIG_HOSTAP_FIRMWARE is not set | ||
679 | # CONFIG_WAN is not set | ||
680 | # CONFIG_PPP is not set | ||
681 | # CONFIG_SLIP is not set | ||
682 | # CONFIG_SHAPER is not set | ||
683 | # CONFIG_NETCONSOLE is not set | ||
684 | # CONFIG_NETPOLL is not set | ||
685 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
686 | # CONFIG_ISDN is not set | ||
687 | # CONFIG_PHONE is not set | ||
688 | |||
689 | # | ||
690 | # Input device support | ||
691 | # | ||
692 | CONFIG_INPUT=y | ||
693 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
694 | # CONFIG_INPUT_POLLDEV is not set | ||
695 | |||
696 | # | ||
697 | # Userland interfaces | ||
698 | # | ||
699 | CONFIG_INPUT_MOUSEDEV=m | ||
700 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
701 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
702 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
703 | # CONFIG_INPUT_JOYDEV is not set | ||
704 | # CONFIG_INPUT_TSDEV is not set | ||
705 | # CONFIG_INPUT_EVDEV is not set | ||
706 | # CONFIG_INPUT_EVBUG is not set | ||
707 | |||
708 | # | ||
709 | # Input Device Drivers | ||
710 | # | ||
711 | CONFIG_INPUT_KEYBOARD=y | ||
712 | CONFIG_KEYBOARD_ATKBD=y | ||
713 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
714 | # CONFIG_KEYBOARD_LKKBD is not set | ||
715 | # CONFIG_KEYBOARD_XTKBD is not set | ||
716 | # CONFIG_KEYBOARD_NEWTON is not set | ||
717 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
718 | CONFIG_INPUT_MOUSE=y | ||
719 | CONFIG_MOUSE_PS2=m | ||
720 | # CONFIG_MOUSE_PS2_ALPS is not set | ||
721 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
722 | # CONFIG_MOUSE_PS2_SYNAPTICS is not set | ||
723 | # CONFIG_MOUSE_PS2_LIFEBOOK is not set | ||
724 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
725 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
726 | CONFIG_MOUSE_SERIAL=m | ||
727 | # CONFIG_MOUSE_VSXXXAA is not set | ||
728 | # CONFIG_INPUT_JOYSTICK is not set | ||
729 | # CONFIG_INPUT_TABLET is not set | ||
730 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
731 | # CONFIG_INPUT_MISC is not set | ||
732 | |||
733 | # | ||
734 | # Hardware I/O ports | ||
735 | # | ||
736 | CONFIG_SERIO=y | ||
737 | CONFIG_SERIO_I8042=y | ||
738 | CONFIG_SERIO_SERPORT=y | ||
739 | CONFIG_SERIO_LIBPS2=y | ||
740 | CONFIG_SERIO_RAW=m | ||
741 | # CONFIG_GAMEPORT is not set | ||
742 | |||
743 | # | ||
744 | # Character devices | ||
745 | # | ||
746 | CONFIG_VT=y | ||
747 | CONFIG_VT_CONSOLE=y | ||
748 | CONFIG_HW_CONSOLE=y | ||
749 | CONFIG_VT_HW_CONSOLE_BINDING=y | ||
750 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
751 | |||
752 | # | ||
753 | # Serial drivers | ||
754 | # | ||
755 | # CONFIG_SERIAL_8250 is not set | ||
756 | |||
757 | # | ||
758 | # Non-8250 serial port support | ||
759 | # | ||
760 | CONFIG_SERIAL_IP22_ZILOG=m | ||
761 | CONFIG_SERIAL_CORE=m | ||
762 | CONFIG_UNIX98_PTYS=y | ||
763 | CONFIG_LEGACY_PTYS=y | ||
764 | CONFIG_LEGACY_PTY_COUNT=256 | ||
765 | # CONFIG_IPMI_HANDLER is not set | ||
766 | CONFIG_WATCHDOG=y | ||
767 | # CONFIG_WATCHDOG_NOWAYOUT is not set | ||
768 | |||
769 | # | ||
770 | # Watchdog Device Drivers | ||
771 | # | ||
772 | # CONFIG_SOFT_WATCHDOG is not set | ||
773 | CONFIG_INDYDOG=m | ||
774 | # CONFIG_HW_RANDOM is not set | ||
775 | # CONFIG_RTC is not set | ||
776 | CONFIG_SGI_DS1286=m | ||
777 | # CONFIG_R3964 is not set | ||
778 | CONFIG_RAW_DRIVER=m | ||
779 | CONFIG_MAX_RAW_DEVS=256 | ||
780 | # CONFIG_TCG_TPM is not set | ||
781 | # CONFIG_I2C is not set | ||
782 | |||
783 | # | ||
784 | # SPI support | ||
785 | # | ||
786 | # CONFIG_SPI is not set | ||
787 | # CONFIG_SPI_MASTER is not set | ||
788 | # CONFIG_W1 is not set | ||
789 | # CONFIG_POWER_SUPPLY is not set | ||
790 | # CONFIG_HWMON is not set | ||
791 | |||
792 | # | ||
793 | # Multifunction device drivers | ||
794 | # | ||
795 | # CONFIG_MFD_SM501 is not set | ||
796 | |||
797 | # | ||
798 | # Multimedia devices | ||
799 | # | ||
800 | # CONFIG_VIDEO_DEV is not set | ||
801 | # CONFIG_DVB_CORE is not set | ||
802 | # CONFIG_DAB is not set | ||
803 | |||
804 | # | ||
805 | # Graphics support | ||
806 | # | ||
807 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
808 | |||
809 | # | ||
810 | # Display device support | ||
811 | # | ||
812 | # CONFIG_DISPLAY_SUPPORT is not set | ||
813 | # CONFIG_VGASTATE is not set | ||
814 | # CONFIG_VIDEO_OUTPUT_CONTROL is not set | ||
815 | # CONFIG_FB is not set | ||
816 | |||
817 | # | ||
818 | # Console display driver support | ||
819 | # | ||
820 | # CONFIG_VGA_CONSOLE is not set | ||
821 | CONFIG_SGI_NEWPORT_CONSOLE=y | ||
822 | CONFIG_DUMMY_CONSOLE=y | ||
823 | CONFIG_FONT_8x16=y | ||
824 | CONFIG_LOGO=y | ||
825 | # CONFIG_LOGO_LINUX_MONO is not set | ||
826 | # CONFIG_LOGO_LINUX_VGA16 is not set | ||
827 | # CONFIG_LOGO_LINUX_CLUT224 is not set | ||
828 | CONFIG_LOGO_SGI_CLUT224=y | ||
829 | |||
830 | # | ||
831 | # Sound | ||
832 | # | ||
833 | # CONFIG_SOUND is not set | ||
834 | CONFIG_HID_SUPPORT=y | ||
835 | CONFIG_HID=y | ||
836 | # CONFIG_HID_DEBUG is not set | ||
837 | CONFIG_USB_SUPPORT=y | ||
838 | # CONFIG_USB_ARCH_HAS_HCD is not set | ||
839 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
840 | # CONFIG_USB_ARCH_HAS_EHCI is not set | ||
841 | |||
842 | # | ||
843 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' | ||
844 | # | ||
845 | |||
846 | # | ||
847 | # USB Gadget Support | ||
848 | # | ||
849 | # CONFIG_USB_GADGET is not set | ||
850 | # CONFIG_MMC is not set | ||
851 | # CONFIG_NEW_LEDS is not set | ||
852 | # CONFIG_RTC_CLASS is not set | ||
853 | |||
854 | # | ||
855 | # DMA Engine support | ||
856 | # | ||
857 | # CONFIG_DMA_ENGINE is not set | ||
858 | |||
859 | # | ||
860 | # DMA Clients | ||
861 | # | ||
862 | |||
863 | # | ||
864 | # DMA Devices | ||
865 | # | ||
866 | |||
867 | # | ||
868 | # Userspace I/O | ||
869 | # | ||
870 | # CONFIG_UIO is not set | ||
871 | |||
872 | # | ||
873 | # File systems | ||
874 | # | ||
875 | CONFIG_EXT2_FS=m | ||
876 | # CONFIG_EXT2_FS_XATTR is not set | ||
877 | # CONFIG_EXT2_FS_XIP is not set | ||
878 | CONFIG_EXT3_FS=y | ||
879 | CONFIG_EXT3_FS_XATTR=y | ||
880 | CONFIG_EXT3_FS_POSIX_ACL=y | ||
881 | CONFIG_EXT3_FS_SECURITY=y | ||
882 | # CONFIG_EXT4DEV_FS is not set | ||
883 | CONFIG_JBD=y | ||
884 | # CONFIG_JBD_DEBUG is not set | ||
885 | CONFIG_FS_MBCACHE=y | ||
886 | # CONFIG_REISERFS_FS is not set | ||
887 | # CONFIG_JFS_FS is not set | ||
888 | CONFIG_FS_POSIX_ACL=y | ||
889 | CONFIG_XFS_FS=m | ||
890 | CONFIG_XFS_QUOTA=y | ||
891 | CONFIG_XFS_SECURITY=y | ||
892 | # CONFIG_XFS_POSIX_ACL is not set | ||
893 | # CONFIG_XFS_RT is not set | ||
894 | # CONFIG_GFS2_FS is not set | ||
895 | # CONFIG_OCFS2_FS is not set | ||
896 | CONFIG_MINIX_FS=m | ||
897 | # CONFIG_ROMFS_FS is not set | ||
898 | CONFIG_INOTIFY=y | ||
899 | CONFIG_INOTIFY_USER=y | ||
900 | CONFIG_QUOTA=y | ||
901 | # CONFIG_QFMT_V1 is not set | ||
902 | CONFIG_QFMT_V2=m | ||
903 | CONFIG_QUOTACTL=y | ||
904 | CONFIG_DNOTIFY=y | ||
905 | CONFIG_AUTOFS_FS=m | ||
906 | CONFIG_AUTOFS4_FS=m | ||
907 | CONFIG_FUSE_FS=m | ||
908 | CONFIG_GENERIC_ACL=y | ||
909 | |||
910 | # | ||
911 | # CD-ROM/DVD Filesystems | ||
912 | # | ||
913 | CONFIG_ISO9660_FS=m | ||
914 | CONFIG_JOLIET=y | ||
915 | CONFIG_ZISOFS=y | ||
916 | CONFIG_UDF_FS=m | ||
917 | CONFIG_UDF_NLS=y | ||
918 | |||
919 | # | ||
920 | # DOS/FAT/NT Filesystems | ||
921 | # | ||
922 | CONFIG_FAT_FS=m | ||
923 | CONFIG_MSDOS_FS=m | ||
924 | CONFIG_VFAT_FS=m | ||
925 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
926 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
927 | # CONFIG_NTFS_FS is not set | ||
928 | |||
929 | # | ||
930 | # Pseudo filesystems | ||
931 | # | ||
932 | CONFIG_PROC_FS=y | ||
933 | CONFIG_PROC_KCORE=y | ||
934 | CONFIG_PROC_SYSCTL=y | ||
935 | CONFIG_SYSFS=y | ||
936 | CONFIG_TMPFS=y | ||
937 | CONFIG_TMPFS_POSIX_ACL=y | ||
938 | # CONFIG_HUGETLB_PAGE is not set | ||
939 | CONFIG_RAMFS=y | ||
940 | CONFIG_CONFIGFS_FS=m | ||
941 | |||
942 | # | ||
943 | # Miscellaneous filesystems | ||
944 | # | ||
945 | # CONFIG_ADFS_FS is not set | ||
946 | # CONFIG_AFFS_FS is not set | ||
947 | # CONFIG_ECRYPT_FS is not set | ||
948 | # CONFIG_HFS_FS is not set | ||
949 | # CONFIG_HFSPLUS_FS is not set | ||
950 | # CONFIG_BEFS_FS is not set | ||
951 | # CONFIG_BFS_FS is not set | ||
952 | CONFIG_EFS_FS=m | ||
953 | # CONFIG_CRAMFS is not set | ||
954 | # CONFIG_VXFS_FS is not set | ||
955 | # CONFIG_HPFS_FS is not set | ||
956 | # CONFIG_QNX4FS_FS is not set | ||
957 | # CONFIG_SYSV_FS is not set | ||
958 | CONFIG_UFS_FS=m | ||
959 | # CONFIG_UFS_FS_WRITE is not set | ||
960 | # CONFIG_UFS_DEBUG is not set | ||
961 | |||
962 | # | ||
963 | # Network File Systems | ||
964 | # | ||
965 | CONFIG_NFS_FS=m | ||
966 | CONFIG_NFS_V3=y | ||
967 | CONFIG_NFS_V3_ACL=y | ||
968 | # CONFIG_NFS_V4 is not set | ||
969 | # CONFIG_NFS_DIRECTIO is not set | ||
970 | CONFIG_NFSD=m | ||
971 | CONFIG_NFSD_V2_ACL=y | ||
972 | CONFIG_NFSD_V3=y | ||
973 | CONFIG_NFSD_V3_ACL=y | ||
974 | # CONFIG_NFSD_V4 is not set | ||
975 | CONFIG_NFSD_TCP=y | ||
976 | CONFIG_LOCKD=m | ||
977 | CONFIG_LOCKD_V4=y | ||
978 | CONFIG_EXPORTFS=m | ||
979 | CONFIG_NFS_ACL_SUPPORT=m | ||
980 | CONFIG_NFS_COMMON=y | ||
981 | CONFIG_SUNRPC=m | ||
982 | CONFIG_SUNRPC_GSS=m | ||
983 | # CONFIG_SUNRPC_BIND34 is not set | ||
984 | CONFIG_RPCSEC_GSS_KRB5=m | ||
985 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
986 | CONFIG_SMB_FS=m | ||
987 | CONFIG_SMB_NLS_DEFAULT=y | ||
988 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
989 | CONFIG_CIFS=m | ||
990 | # CONFIG_CIFS_STATS is not set | ||
991 | # CONFIG_CIFS_WEAK_PW_HASH is not set | ||
992 | # CONFIG_CIFS_XATTR is not set | ||
993 | # CONFIG_CIFS_DEBUG2 is not set | ||
994 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
995 | # CONFIG_NCP_FS is not set | ||
996 | CONFIG_CODA_FS=m | ||
997 | # CONFIG_CODA_FS_OLD_API is not set | ||
998 | # CONFIG_AFS_FS is not set | ||
999 | |||
1000 | # | ||
1001 | # Partition Types | ||
1002 | # | ||
1003 | CONFIG_PARTITION_ADVANCED=y | ||
1004 | # CONFIG_ACORN_PARTITION is not set | ||
1005 | # CONFIG_OSF_PARTITION is not set | ||
1006 | # CONFIG_AMIGA_PARTITION is not set | ||
1007 | # CONFIG_ATARI_PARTITION is not set | ||
1008 | # CONFIG_MAC_PARTITION is not set | ||
1009 | CONFIG_MSDOS_PARTITION=y | ||
1010 | # CONFIG_BSD_DISKLABEL is not set | ||
1011 | # CONFIG_MINIX_SUBPARTITION is not set | ||
1012 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
1013 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
1014 | # CONFIG_LDM_PARTITION is not set | ||
1015 | CONFIG_SGI_PARTITION=y | ||
1016 | # CONFIG_ULTRIX_PARTITION is not set | ||
1017 | # CONFIG_SUN_PARTITION is not set | ||
1018 | # CONFIG_KARMA_PARTITION is not set | ||
1019 | # CONFIG_EFI_PARTITION is not set | ||
1020 | # CONFIG_SYSV68_PARTITION is not set | ||
1021 | |||
1022 | # | ||
1023 | # Native Language Support | ||
1024 | # | ||
1025 | CONFIG_NLS=m | ||
1026 | CONFIG_NLS_DEFAULT="iso8859-1" | ||
1027 | CONFIG_NLS_CODEPAGE_437=m | ||
1028 | CONFIG_NLS_CODEPAGE_737=m | ||
1029 | CONFIG_NLS_CODEPAGE_775=m | ||
1030 | CONFIG_NLS_CODEPAGE_850=m | ||
1031 | CONFIG_NLS_CODEPAGE_852=m | ||
1032 | CONFIG_NLS_CODEPAGE_855=m | ||
1033 | CONFIG_NLS_CODEPAGE_857=m | ||
1034 | CONFIG_NLS_CODEPAGE_860=m | ||
1035 | CONFIG_NLS_CODEPAGE_861=m | ||
1036 | CONFIG_NLS_CODEPAGE_862=m | ||
1037 | CONFIG_NLS_CODEPAGE_863=m | ||
1038 | CONFIG_NLS_CODEPAGE_864=m | ||
1039 | CONFIG_NLS_CODEPAGE_865=m | ||
1040 | CONFIG_NLS_CODEPAGE_866=m | ||
1041 | CONFIG_NLS_CODEPAGE_869=m | ||
1042 | CONFIG_NLS_CODEPAGE_936=m | ||
1043 | CONFIG_NLS_CODEPAGE_950=m | ||
1044 | CONFIG_NLS_CODEPAGE_932=m | ||
1045 | CONFIG_NLS_CODEPAGE_949=m | ||
1046 | CONFIG_NLS_CODEPAGE_874=m | ||
1047 | CONFIG_NLS_ISO8859_8=m | ||
1048 | CONFIG_NLS_CODEPAGE_1250=m | ||
1049 | CONFIG_NLS_CODEPAGE_1251=m | ||
1050 | CONFIG_NLS_ASCII=m | ||
1051 | CONFIG_NLS_ISO8859_1=m | ||
1052 | CONFIG_NLS_ISO8859_2=m | ||
1053 | CONFIG_NLS_ISO8859_3=m | ||
1054 | CONFIG_NLS_ISO8859_4=m | ||
1055 | CONFIG_NLS_ISO8859_5=m | ||
1056 | CONFIG_NLS_ISO8859_6=m | ||
1057 | CONFIG_NLS_ISO8859_7=m | ||
1058 | CONFIG_NLS_ISO8859_9=m | ||
1059 | CONFIG_NLS_ISO8859_13=m | ||
1060 | CONFIG_NLS_ISO8859_14=m | ||
1061 | CONFIG_NLS_ISO8859_15=m | ||
1062 | CONFIG_NLS_KOI8_R=m | ||
1063 | CONFIG_NLS_KOI8_U=m | ||
1064 | CONFIG_NLS_UTF8=m | ||
1065 | |||
1066 | # | ||
1067 | # Distributed Lock Manager | ||
1068 | # | ||
1069 | CONFIG_DLM=m | ||
1070 | # CONFIG_DLM_DEBUG is not set | ||
1071 | |||
1072 | # | ||
1073 | # Profiling support | ||
1074 | # | ||
1075 | # CONFIG_PROFILING is not set | ||
1076 | |||
1077 | # | ||
1078 | # Kernel hacking | ||
1079 | # | ||
1080 | CONFIG_TRACE_IRQFLAGS_SUPPORT=y | ||
1081 | # CONFIG_PRINTK_TIME is not set | ||
1082 | CONFIG_ENABLE_MUST_CHECK=y | ||
1083 | # CONFIG_MAGIC_SYSRQ is not set | ||
1084 | # CONFIG_UNUSED_SYMBOLS is not set | ||
1085 | # CONFIG_DEBUG_FS is not set | ||
1086 | # CONFIG_HEADERS_CHECK is not set | ||
1087 | # CONFIG_DEBUG_KERNEL is not set | ||
1088 | CONFIG_CROSSCOMPILE=y | ||
1089 | CONFIG_CMDLINE="" | ||
1090 | |||
1091 | # | ||
1092 | # Security options | ||
1093 | # | ||
1094 | CONFIG_KEYS=y | ||
1095 | CONFIG_KEYS_DEBUG_PROC_KEYS=y | ||
1096 | # CONFIG_SECURITY is not set | ||
1097 | CONFIG_CRYPTO=y | ||
1098 | CONFIG_CRYPTO_ALGAPI=y | ||
1099 | CONFIG_CRYPTO_ABLKCIPHER=m | ||
1100 | CONFIG_CRYPTO_BLKCIPHER=m | ||
1101 | CONFIG_CRYPTO_HASH=y | ||
1102 | CONFIG_CRYPTO_MANAGER=y | ||
1103 | CONFIG_CRYPTO_HMAC=y | ||
1104 | CONFIG_CRYPTO_XCBC=m | ||
1105 | CONFIG_CRYPTO_NULL=m | ||
1106 | CONFIG_CRYPTO_MD4=m | ||
1107 | CONFIG_CRYPTO_MD5=y | ||
1108 | CONFIG_CRYPTO_SHA1=m | ||
1109 | CONFIG_CRYPTO_SHA256=m | ||
1110 | CONFIG_CRYPTO_SHA512=m | ||
1111 | CONFIG_CRYPTO_WP512=m | ||
1112 | CONFIG_CRYPTO_TGR192=m | ||
1113 | CONFIG_CRYPTO_GF128MUL=m | ||
1114 | CONFIG_CRYPTO_ECB=m | ||
1115 | CONFIG_CRYPTO_CBC=m | ||
1116 | CONFIG_CRYPTO_PCBC=m | ||
1117 | CONFIG_CRYPTO_LRW=m | ||
1118 | CONFIG_CRYPTO_CRYPTD=m | ||
1119 | CONFIG_CRYPTO_DES=m | ||
1120 | CONFIG_CRYPTO_FCRYPT=m | ||
1121 | CONFIG_CRYPTO_BLOWFISH=m | ||
1122 | CONFIG_CRYPTO_TWOFISH=m | ||
1123 | CONFIG_CRYPTO_TWOFISH_COMMON=m | ||
1124 | CONFIG_CRYPTO_SERPENT=m | ||
1125 | CONFIG_CRYPTO_AES=m | ||
1126 | CONFIG_CRYPTO_CAST5=m | ||
1127 | CONFIG_CRYPTO_CAST6=m | ||
1128 | CONFIG_CRYPTO_TEA=m | ||
1129 | CONFIG_CRYPTO_ARC4=m | ||
1130 | CONFIG_CRYPTO_KHAZAD=m | ||
1131 | CONFIG_CRYPTO_ANUBIS=m | ||
1132 | CONFIG_CRYPTO_DEFLATE=m | ||
1133 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
1134 | CONFIG_CRYPTO_CRC32C=m | ||
1135 | CONFIG_CRYPTO_CAMELLIA=m | ||
1136 | # CONFIG_CRYPTO_TEST is not set | ||
1137 | # CONFIG_CRYPTO_HW is not set | ||
1138 | |||
1139 | # | ||
1140 | # Library routines | ||
1141 | # | ||
1142 | CONFIG_BITREVERSE=m | ||
1143 | # CONFIG_CRC_CCITT is not set | ||
1144 | CONFIG_CRC16=m | ||
1145 | # CONFIG_CRC_ITU_T is not set | ||
1146 | CONFIG_CRC32=m | ||
1147 | # CONFIG_CRC7 is not set | ||
1148 | CONFIG_LIBCRC32C=m | ||
1149 | CONFIG_ZLIB_INFLATE=m | ||
1150 | CONFIG_ZLIB_DEFLATE=m | ||
1151 | CONFIG_TEXTSEARCH=y | ||
1152 | CONFIG_TEXTSEARCH_KMP=m | ||
1153 | CONFIG_TEXTSEARCH_BM=m | ||
1154 | CONFIG_TEXTSEARCH_FSM=m | ||
1155 | CONFIG_PLIST=y | ||
1156 | CONFIG_HAS_IOMEM=y | ||
1157 | CONFIG_HAS_IOPORT=y | ||
1158 | CONFIG_HAS_DMA=y | ||
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile index ffa08362de17..9e78e1a4ca17 100644 --- a/arch/mips/kernel/Makefile +++ b/arch/mips/kernel/Makefile | |||
@@ -76,7 +76,6 @@ obj-$(CONFIG_PROC_FS) += proc.o | |||
76 | obj-$(CONFIG_64BIT) += cpu-bugs64.o | 76 | obj-$(CONFIG_64BIT) += cpu-bugs64.o |
77 | 77 | ||
78 | obj-$(CONFIG_I8253) += i8253.o | 78 | obj-$(CONFIG_I8253) += i8253.o |
79 | obj-$(CONFIG_PCSPEAKER) += pcspeaker.o | ||
80 | 79 | ||
81 | obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o | 80 | obj-$(CONFIG_KEXEC) += machine_kexec.o relocate_kernel.o |
82 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o | 81 | obj-$(CONFIG_EARLY_PRINTK) += early_printk.o |
diff --git a/arch/mips/kernel/cpu-bugs64.c b/arch/mips/kernel/cpu-bugs64.c index 417bb3e336ac..a1b48af0992f 100644 --- a/arch/mips/kernel/cpu-bugs64.c +++ b/arch/mips/kernel/cpu-bugs64.c | |||
@@ -167,7 +167,7 @@ static inline void check_mult_sh(void) | |||
167 | panic(bug64hit, !R4000_WAR ? r4kwar : nowar); | 167 | panic(bug64hit, !R4000_WAR ? r4kwar : nowar); |
168 | } | 168 | } |
169 | 169 | ||
170 | static volatile int daddi_ov __initdata = 0; | 170 | static volatile int daddi_ov __cpuinitdata = 0; |
171 | 171 | ||
172 | asmlinkage void __init do_daddi_ov(struct pt_regs *regs) | 172 | asmlinkage void __init do_daddi_ov(struct pt_regs *regs) |
173 | { | 173 | { |
@@ -239,7 +239,7 @@ static inline void check_daddi(void) | |||
239 | panic(bug64hit, !DADDI_WAR ? daddiwar : nowar); | 239 | panic(bug64hit, !DADDI_WAR ? daddiwar : nowar); |
240 | } | 240 | } |
241 | 241 | ||
242 | int daddiu_bug __initdata = -1; | 242 | int daddiu_bug __cpuinitdata = -1; |
243 | 243 | ||
244 | static inline void check_daddiu(void) | 244 | static inline void check_daddiu(void) |
245 | { | 245 | { |
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index 5861a432a52f..89c3304cb93c 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -550,7 +550,7 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c) | |||
550 | } | 550 | } |
551 | } | 551 | } |
552 | 552 | ||
553 | static char unknown_isa[] __initdata = KERN_ERR \ | 553 | static char unknown_isa[] __cpuinitdata = KERN_ERR \ |
554 | "Unsupported ISA type, c0.config0: %d."; | 554 | "Unsupported ISA type, c0.config0: %d."; |
555 | 555 | ||
556 | static inline unsigned int decode_config0(struct cpuinfo_mips *c) | 556 | static inline unsigned int decode_config0(struct cpuinfo_mips *c) |
@@ -656,7 +656,7 @@ static inline unsigned int decode_config3(struct cpuinfo_mips *c) | |||
656 | return config3 & MIPS_CONF_M; | 656 | return config3 & MIPS_CONF_M; |
657 | } | 657 | } |
658 | 658 | ||
659 | static void __init decode_configs(struct cpuinfo_mips *c) | 659 | static void __cpuinit decode_configs(struct cpuinfo_mips *c) |
660 | { | 660 | { |
661 | /* MIPS32 or MIPS64 compliant CPU. */ | 661 | /* MIPS32 or MIPS64 compliant CPU. */ |
662 | c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER | | 662 | c->options = MIPS_CPU_4KEX | MIPS_CPU_4K_CACHE | MIPS_CPU_COUNTER | |
@@ -814,7 +814,7 @@ const char *__cpu_name[NR_CPUS]; | |||
814 | /* | 814 | /* |
815 | * Name a CPU | 815 | * Name a CPU |
816 | */ | 816 | */ |
817 | static __init const char *cpu_to_name(struct cpuinfo_mips *c) | 817 | static __cpuinit const char *cpu_to_name(struct cpuinfo_mips *c) |
818 | { | 818 | { |
819 | const char *name = NULL; | 819 | const char *name = NULL; |
820 | 820 | ||
@@ -896,7 +896,7 @@ static __init const char *cpu_to_name(struct cpuinfo_mips *c) | |||
896 | return name; | 896 | return name; |
897 | } | 897 | } |
898 | 898 | ||
899 | __init void cpu_probe(void) | 899 | __cpuinit void cpu_probe(void) |
900 | { | 900 | { |
901 | struct cpuinfo_mips *c = ¤t_cpu_data; | 901 | struct cpuinfo_mips *c = ¤t_cpu_data; |
902 | unsigned int cpu = smp_processor_id(); | 902 | unsigned int cpu = smp_processor_id(); |
@@ -959,7 +959,7 @@ __init void cpu_probe(void) | |||
959 | c->srsets = 1; | 959 | c->srsets = 1; |
960 | } | 960 | } |
961 | 961 | ||
962 | __init void cpu_report(void) | 962 | __cpuinit void cpu_report(void) |
963 | { | 963 | { |
964 | struct cpuinfo_mips *c = ¤t_cpu_data; | 964 | struct cpuinfo_mips *c = ¤t_cpu_data; |
965 | 965 | ||
diff --git a/arch/mips/kernel/csrc-r4k.c b/arch/mips/kernel/csrc-r4k.c index 0e2b5cd81f67..86e026f067bc 100644 --- a/arch/mips/kernel/csrc-r4k.c +++ b/arch/mips/kernel/csrc-r4k.c | |||
@@ -22,12 +22,17 @@ static struct clocksource clocksource_mips = { | |||
22 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, | 22 | .flags = CLOCK_SOURCE_IS_CONTINUOUS, |
23 | }; | 23 | }; |
24 | 24 | ||
25 | void __init init_mips_clocksource(void) | 25 | int __init init_mips_clocksource(void) |
26 | { | 26 | { |
27 | if (!cpu_has_counter || !mips_hpt_frequency) | ||
28 | return -ENXIO; | ||
29 | |||
27 | /* Calclate a somewhat reasonable rating value */ | 30 | /* Calclate a somewhat reasonable rating value */ |
28 | clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; | 31 | clocksource_mips.rating = 200 + mips_hpt_frequency / 10000000; |
29 | 32 | ||
30 | clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); | 33 | clocksource_set_clock(&clocksource_mips, mips_hpt_frequency); |
31 | 34 | ||
32 | clocksource_register(&clocksource_mips); | 35 | clocksource_register(&clocksource_mips); |
36 | |||
37 | return 0; | ||
33 | } | 38 | } |
diff --git a/arch/mips/kernel/head.S b/arch/mips/kernel/head.S index a24fb7900901..361364501d34 100644 --- a/arch/mips/kernel/head.S +++ b/arch/mips/kernel/head.S | |||
@@ -195,7 +195,7 @@ NESTED(kernel_entry, 16, sp) # kernel entry point | |||
195 | j start_kernel | 195 | j start_kernel |
196 | END(kernel_entry) | 196 | END(kernel_entry) |
197 | 197 | ||
198 | __INIT | 198 | __CPUINIT |
199 | 199 | ||
200 | #ifdef CONFIG_SMP | 200 | #ifdef CONFIG_SMP |
201 | /* | 201 | /* |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index fcae66752972..984c0d0a7b4d 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -534,8 +534,7 @@ static int simulate_llsc(struct pt_regs *regs, unsigned int opcode) | |||
534 | 534 | ||
535 | /* | 535 | /* |
536 | * Simulate trapping 'rdhwr' instructions to provide user accessible | 536 | * Simulate trapping 'rdhwr' instructions to provide user accessible |
537 | * registers not implemented in hardware. The only current use of this | 537 | * registers not implemented in hardware. |
538 | * is the thread area pointer. | ||
539 | */ | 538 | */ |
540 | static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode) | 539 | static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode) |
541 | { | 540 | { |
@@ -545,11 +544,31 @@ static int simulate_rdhwr(struct pt_regs *regs, unsigned int opcode) | |||
545 | int rd = (opcode & RD) >> 11; | 544 | int rd = (opcode & RD) >> 11; |
546 | int rt = (opcode & RT) >> 16; | 545 | int rt = (opcode & RT) >> 16; |
547 | switch (rd) { | 546 | switch (rd) { |
548 | case 29: | 547 | case 0: /* CPU number */ |
549 | regs->regs[rt] = ti->tp_value; | 548 | regs->regs[rt] = smp_processor_id(); |
550 | return 0; | 549 | return 0; |
550 | case 1: /* SYNCI length */ | ||
551 | regs->regs[rt] = min(current_cpu_data.dcache.linesz, | ||
552 | current_cpu_data.icache.linesz); | ||
553 | return 0; | ||
554 | case 2: /* Read count register */ | ||
555 | regs->regs[rt] = read_c0_count(); | ||
556 | return 0; | ||
557 | case 3: /* Count register resolution */ | ||
558 | switch (current_cpu_data.cputype) { | ||
559 | case CPU_20KC: | ||
560 | case CPU_25KF: | ||
561 | regs->regs[rt] = 1; | ||
562 | break; | ||
551 | default: | 563 | default: |
552 | return -1; | 564 | regs->regs[rt] = 2; |
565 | } | ||
566 | return 0; | ||
567 | case 29: | ||
568 | regs->regs[rt] = ti->tp_value; | ||
569 | return 0; | ||
570 | default: | ||
571 | return -1; | ||
553 | } | 572 | } |
554 | } | 573 | } |
555 | 574 | ||
@@ -1287,7 +1306,7 @@ int cp0_compare_irq; | |||
1287 | int cp0_perfcount_irq; | 1306 | int cp0_perfcount_irq; |
1288 | EXPORT_SYMBOL_GPL(cp0_perfcount_irq); | 1307 | EXPORT_SYMBOL_GPL(cp0_perfcount_irq); |
1289 | 1308 | ||
1290 | void __init per_cpu_trap_init(void) | 1309 | void __cpuinit per_cpu_trap_init(void) |
1291 | { | 1310 | { |
1292 | unsigned int cpu = smp_processor_id(); | 1311 | unsigned int cpu = smp_processor_id(); |
1293 | unsigned int status_set = ST0_CU0; | 1312 | unsigned int status_set = ST0_CU0; |
@@ -1404,11 +1423,12 @@ void __init set_handler(unsigned long offset, void *addr, unsigned long size) | |||
1404 | flush_icache_range(ebase + offset, ebase + offset + size); | 1423 | flush_icache_range(ebase + offset, ebase + offset + size); |
1405 | } | 1424 | } |
1406 | 1425 | ||
1407 | static char panic_null_cerr[] __initdata = | 1426 | static char panic_null_cerr[] __cpuinitdata = |
1408 | "Trying to set NULL cache error exception handler"; | 1427 | "Trying to set NULL cache error exception handler"; |
1409 | 1428 | ||
1410 | /* Install uncached CPU exception handler */ | 1429 | /* Install uncached CPU exception handler */ |
1411 | void __init set_uncached_handler(unsigned long offset, void *addr, unsigned long size) | 1430 | void __cpuinit set_uncached_handler(unsigned long offset, void *addr, |
1431 | unsigned long size) | ||
1412 | { | 1432 | { |
1413 | #ifdef CONFIG_32BIT | 1433 | #ifdef CONFIG_32BIT |
1414 | unsigned long uncached_ebase = KSEG1ADDR(ebase); | 1434 | unsigned long uncached_ebase = KSEG1ADDR(ebase); |
diff --git a/arch/mips/lib/ucmpdi2.c b/arch/mips/lib/ucmpdi2.c index b33d8569bcb0..bb4cb2f828ea 100644 --- a/arch/mips/lib/ucmpdi2.c +++ b/arch/mips/lib/ucmpdi2.c | |||
@@ -17,3 +17,5 @@ word_type __ucmpdi2(unsigned long long a, unsigned long long b) | |||
17 | return 2; | 17 | return 2; |
18 | return 1; | 18 | return 1; |
19 | } | 19 | } |
20 | |||
21 | EXPORT_SYMBOL(__ucmpdi2); | ||
diff --git a/arch/mips/lib/uncached.c b/arch/mips/lib/uncached.c index 27b012d4341c..a6d1c77034d5 100644 --- a/arch/mips/lib/uncached.c +++ b/arch/mips/lib/uncached.c | |||
@@ -36,7 +36,7 @@ | |||
36 | * values, so we can avoid sharing the same stack area between a cached | 36 | * values, so we can avoid sharing the same stack area between a cached |
37 | * and the uncached mode. | 37 | * and the uncached mode. |
38 | */ | 38 | */ |
39 | unsigned long __init run_uncached(void *func) | 39 | unsigned long __cpuinit run_uncached(void *func) |
40 | { | 40 | { |
41 | register long sp __asm__("$sp"); | 41 | register long sp __asm__("$sp"); |
42 | register long ret __asm__("$2"); | 42 | register long ret __asm__("$2"); |
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c index f02ce6308e51..b50e0fc406ac 100644 --- a/arch/mips/mips-boards/generic/time.c +++ b/arch/mips/mips-boards/generic/time.c | |||
@@ -146,7 +146,7 @@ void __init plat_perf_setup(void) | |||
146 | } | 146 | } |
147 | } | 147 | } |
148 | 148 | ||
149 | unsigned int __init get_c0_compare_int(void) | 149 | unsigned int __cpuinit get_c0_compare_int(void) |
150 | { | 150 | { |
151 | #ifdef MSC01E_INT_BASE | 151 | #ifdef MSC01E_INT_BASE |
152 | if (cpu_has_veic) { | 152 | if (cpu_has_veic) { |
diff --git a/arch/mips/mipssim/sim_time.c b/arch/mips/mipssim/sim_time.c index e39bbe989da3..881ecbc1fa23 100644 --- a/arch/mips/mipssim/sim_time.c +++ b/arch/mips/mipssim/sim_time.c | |||
@@ -83,7 +83,7 @@ static void mips_timer_dispatch(void) | |||
83 | } | 83 | } |
84 | 84 | ||
85 | 85 | ||
86 | unsigned __init get_c0_compare_int(void) | 86 | unsigned __cpuinit get_c0_compare_int(void) |
87 | { | 87 | { |
88 | #ifdef MSC01E_INT_BASE | 88 | #ifdef MSC01E_INT_BASE |
89 | if (cpu_has_veic) { | 89 | if (cpu_has_veic) { |
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c index 562abb77d1d5..76935e320214 100644 --- a/arch/mips/mm/c-r3k.c +++ b/arch/mips/mm/c-r3k.c | |||
@@ -307,7 +307,7 @@ static void r3k_dma_cache_wback_inv(unsigned long start, unsigned long size) | |||
307 | r3k_flush_dcache_range(start, start + size); | 307 | r3k_flush_dcache_range(start, start + size); |
308 | } | 308 | } |
309 | 309 | ||
310 | void __init r3k_cache_init(void) | 310 | void __cpuinit r3k_cache_init(void) |
311 | { | 311 | { |
312 | extern void build_clear_page(void); | 312 | extern void build_clear_page(void); |
313 | extern void build_copy_page(void); | 313 | extern void build_copy_page(void); |
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index 2c4f7e11f0d5..6496925b5e29 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -93,7 +93,7 @@ static inline void r4k_blast_dcache_page_dc32(unsigned long addr) | |||
93 | blast_dcache32_page(addr); | 93 | blast_dcache32_page(addr); |
94 | } | 94 | } |
95 | 95 | ||
96 | static void __init r4k_blast_dcache_page_setup(void) | 96 | static void __cpuinit r4k_blast_dcache_page_setup(void) |
97 | { | 97 | { |
98 | unsigned long dc_lsize = cpu_dcache_line_size(); | 98 | unsigned long dc_lsize = cpu_dcache_line_size(); |
99 | 99 | ||
@@ -107,7 +107,7 @@ static void __init r4k_blast_dcache_page_setup(void) | |||
107 | 107 | ||
108 | static void (* r4k_blast_dcache_page_indexed)(unsigned long addr); | 108 | static void (* r4k_blast_dcache_page_indexed)(unsigned long addr); |
109 | 109 | ||
110 | static void __init r4k_blast_dcache_page_indexed_setup(void) | 110 | static void __cpuinit r4k_blast_dcache_page_indexed_setup(void) |
111 | { | 111 | { |
112 | unsigned long dc_lsize = cpu_dcache_line_size(); | 112 | unsigned long dc_lsize = cpu_dcache_line_size(); |
113 | 113 | ||
@@ -121,7 +121,7 @@ static void __init r4k_blast_dcache_page_indexed_setup(void) | |||
121 | 121 | ||
122 | static void (* r4k_blast_dcache)(void); | 122 | static void (* r4k_blast_dcache)(void); |
123 | 123 | ||
124 | static void __init r4k_blast_dcache_setup(void) | 124 | static void __cpuinit r4k_blast_dcache_setup(void) |
125 | { | 125 | { |
126 | unsigned long dc_lsize = cpu_dcache_line_size(); | 126 | unsigned long dc_lsize = cpu_dcache_line_size(); |
127 | 127 | ||
@@ -206,7 +206,7 @@ static inline void tx49_blast_icache32_page_indexed(unsigned long page) | |||
206 | 206 | ||
207 | static void (* r4k_blast_icache_page)(unsigned long addr); | 207 | static void (* r4k_blast_icache_page)(unsigned long addr); |
208 | 208 | ||
209 | static void __init r4k_blast_icache_page_setup(void) | 209 | static void __cpuinit r4k_blast_icache_page_setup(void) |
210 | { | 210 | { |
211 | unsigned long ic_lsize = cpu_icache_line_size(); | 211 | unsigned long ic_lsize = cpu_icache_line_size(); |
212 | 212 | ||
@@ -223,7 +223,7 @@ static void __init r4k_blast_icache_page_setup(void) | |||
223 | 223 | ||
224 | static void (* r4k_blast_icache_page_indexed)(unsigned long addr); | 224 | static void (* r4k_blast_icache_page_indexed)(unsigned long addr); |
225 | 225 | ||
226 | static void __init r4k_blast_icache_page_indexed_setup(void) | 226 | static void __cpuinit r4k_blast_icache_page_indexed_setup(void) |
227 | { | 227 | { |
228 | unsigned long ic_lsize = cpu_icache_line_size(); | 228 | unsigned long ic_lsize = cpu_icache_line_size(); |
229 | 229 | ||
@@ -247,7 +247,7 @@ static void __init r4k_blast_icache_page_indexed_setup(void) | |||
247 | 247 | ||
248 | static void (* r4k_blast_icache)(void); | 248 | static void (* r4k_blast_icache)(void); |
249 | 249 | ||
250 | static void __init r4k_blast_icache_setup(void) | 250 | static void __cpuinit r4k_blast_icache_setup(void) |
251 | { | 251 | { |
252 | unsigned long ic_lsize = cpu_icache_line_size(); | 252 | unsigned long ic_lsize = cpu_icache_line_size(); |
253 | 253 | ||
@@ -268,7 +268,7 @@ static void __init r4k_blast_icache_setup(void) | |||
268 | 268 | ||
269 | static void (* r4k_blast_scache_page)(unsigned long addr); | 269 | static void (* r4k_blast_scache_page)(unsigned long addr); |
270 | 270 | ||
271 | static void __init r4k_blast_scache_page_setup(void) | 271 | static void __cpuinit r4k_blast_scache_page_setup(void) |
272 | { | 272 | { |
273 | unsigned long sc_lsize = cpu_scache_line_size(); | 273 | unsigned long sc_lsize = cpu_scache_line_size(); |
274 | 274 | ||
@@ -286,7 +286,7 @@ static void __init r4k_blast_scache_page_setup(void) | |||
286 | 286 | ||
287 | static void (* r4k_blast_scache_page_indexed)(unsigned long addr); | 287 | static void (* r4k_blast_scache_page_indexed)(unsigned long addr); |
288 | 288 | ||
289 | static void __init r4k_blast_scache_page_indexed_setup(void) | 289 | static void __cpuinit r4k_blast_scache_page_indexed_setup(void) |
290 | { | 290 | { |
291 | unsigned long sc_lsize = cpu_scache_line_size(); | 291 | unsigned long sc_lsize = cpu_scache_line_size(); |
292 | 292 | ||
@@ -304,7 +304,7 @@ static void __init r4k_blast_scache_page_indexed_setup(void) | |||
304 | 304 | ||
305 | static void (* r4k_blast_scache)(void); | 305 | static void (* r4k_blast_scache)(void); |
306 | 306 | ||
307 | static void __init r4k_blast_scache_setup(void) | 307 | static void __cpuinit r4k_blast_scache_setup(void) |
308 | { | 308 | { |
309 | unsigned long sc_lsize = cpu_scache_line_size(); | 309 | unsigned long sc_lsize = cpu_scache_line_size(); |
310 | 310 | ||
@@ -691,11 +691,11 @@ static inline void rm7k_erratum31(void) | |||
691 | } | 691 | } |
692 | } | 692 | } |
693 | 693 | ||
694 | static char *way_string[] __initdata = { NULL, "direct mapped", "2-way", | 694 | static char *way_string[] __cpuinitdata = { NULL, "direct mapped", "2-way", |
695 | "3-way", "4-way", "5-way", "6-way", "7-way", "8-way" | 695 | "3-way", "4-way", "5-way", "6-way", "7-way", "8-way" |
696 | }; | 696 | }; |
697 | 697 | ||
698 | static void __init probe_pcache(void) | 698 | static void __cpuinit probe_pcache(void) |
699 | { | 699 | { |
700 | struct cpuinfo_mips *c = ¤t_cpu_data; | 700 | struct cpuinfo_mips *c = ¤t_cpu_data; |
701 | unsigned int config = read_c0_config(); | 701 | unsigned int config = read_c0_config(); |
@@ -1016,7 +1016,7 @@ static void __init probe_pcache(void) | |||
1016 | * executes in KSEG1 space or else you will crash and burn badly. You have | 1016 | * executes in KSEG1 space or else you will crash and burn badly. You have |
1017 | * been warned. | 1017 | * been warned. |
1018 | */ | 1018 | */ |
1019 | static int __init probe_scache(void) | 1019 | static int __cpuinit probe_scache(void) |
1020 | { | 1020 | { |
1021 | unsigned long flags, addr, begin, end, pow2; | 1021 | unsigned long flags, addr, begin, end, pow2; |
1022 | unsigned int config = read_c0_config(); | 1022 | unsigned int config = read_c0_config(); |
@@ -1095,7 +1095,7 @@ extern int r5k_sc_init(void); | |||
1095 | extern int rm7k_sc_init(void); | 1095 | extern int rm7k_sc_init(void); |
1096 | extern int mips_sc_init(void); | 1096 | extern int mips_sc_init(void); |
1097 | 1097 | ||
1098 | static void __init setup_scache(void) | 1098 | static void __cpuinit setup_scache(void) |
1099 | { | 1099 | { |
1100 | struct cpuinfo_mips *c = ¤t_cpu_data; | 1100 | struct cpuinfo_mips *c = ¤t_cpu_data; |
1101 | unsigned int config = read_c0_config(); | 1101 | unsigned int config = read_c0_config(); |
@@ -1206,7 +1206,7 @@ void au1x00_fixup_config_od(void) | |||
1206 | } | 1206 | } |
1207 | } | 1207 | } |
1208 | 1208 | ||
1209 | static void __init coherency_setup(void) | 1209 | static void __cpuinit coherency_setup(void) |
1210 | { | 1210 | { |
1211 | change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT); | 1211 | change_c0_config(CONF_CM_CMASK, CONF_CM_DEFAULT); |
1212 | 1212 | ||
@@ -1238,7 +1238,7 @@ static void __init coherency_setup(void) | |||
1238 | } | 1238 | } |
1239 | } | 1239 | } |
1240 | 1240 | ||
1241 | void __init r4k_cache_init(void) | 1241 | void __cpuinit r4k_cache_init(void) |
1242 | { | 1242 | { |
1243 | extern void build_clear_page(void); | 1243 | extern void build_clear_page(void); |
1244 | extern void build_copy_page(void); | 1244 | extern void build_copy_page(void); |
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c index 9ea121e8cdce..b09d56981d53 100644 --- a/arch/mips/mm/c-tx39.c +++ b/arch/mips/mm/c-tx39.c | |||
@@ -329,7 +329,7 @@ static __init void tx39_probe_cache(void) | |||
329 | } | 329 | } |
330 | } | 330 | } |
331 | 331 | ||
332 | void __init tx39_cache_init(void) | 332 | void __cpuinit tx39_cache_init(void) |
333 | { | 333 | { |
334 | extern void build_clear_page(void); | 334 | extern void build_clear_page(void); |
335 | extern void build_copy_page(void); | 335 | extern void build_copy_page(void); |
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c index 6a24651971df..51ab1faa027d 100644 --- a/arch/mips/mm/cache.c +++ b/arch/mips/mm/cache.c | |||
@@ -127,9 +127,10 @@ void __update_cache(struct vm_area_struct *vma, unsigned long address, | |||
127 | } | 127 | } |
128 | } | 128 | } |
129 | 129 | ||
130 | static char cache_panic[] __initdata = "Yeee, unsupported cache architecture."; | 130 | static char cache_panic[] __cpuinitdata = |
131 | "Yeee, unsupported cache architecture."; | ||
131 | 132 | ||
132 | void __init cpu_cache_init(void) | 133 | void __devinit cpu_cache_init(void) |
133 | { | 134 | { |
134 | if (cpu_has_3k_cache) { | 135 | if (cpu_has_3k_cache) { |
135 | extern void __weak r3k_cache_init(void); | 136 | extern void __weak r3k_cache_init(void); |
diff --git a/arch/mips/mm/cex-sb1.S b/arch/mips/mm/cex-sb1.S index e54a62f2807c..2d08268bb705 100644 --- a/arch/mips/mm/cex-sb1.S +++ b/arch/mips/mm/cex-sb1.S | |||
@@ -34,8 +34,6 @@ | |||
34 | * is changed. | 34 | * is changed. |
35 | */ | 35 | */ |
36 | 36 | ||
37 | __INIT | ||
38 | |||
39 | .set mips64 | 37 | .set mips64 |
40 | .set noreorder | 38 | .set noreorder |
41 | .set noat | 39 | .set noat |
@@ -51,6 +49,8 @@ | |||
51 | * (0x170-0x17f) are used to preserve k0, k1, and ra. | 49 | * (0x170-0x17f) are used to preserve k0, k1, and ra. |
52 | */ | 50 | */ |
53 | 51 | ||
52 | __CPUINIT | ||
53 | |||
54 | LEAF(except_vec2_sb1) | 54 | LEAF(except_vec2_sb1) |
55 | /* | 55 | /* |
56 | * If this error is recoverable, we need to exit the handler | 56 | * If this error is recoverable, we need to exit the handler |
diff --git a/arch/mips/mm/pg-r4k.c b/arch/mips/mm/pg-r4k.c index 9185fbf37c0d..455dedb5b39e 100644 --- a/arch/mips/mm/pg-r4k.c +++ b/arch/mips/mm/pg-r4k.c | |||
@@ -66,21 +66,21 @@ EXPORT_SYMBOL(copy_page); | |||
66 | * with 64-bit kernels. The prefetch offsets have been experimentally tuned | 66 | * with 64-bit kernels. The prefetch offsets have been experimentally tuned |
67 | * an Origin 200. | 67 | * an Origin 200. |
68 | */ | 68 | */ |
69 | static int pref_offset_clear __initdata = 512; | 69 | static int pref_offset_clear __cpuinitdata = 512; |
70 | static int pref_offset_copy __initdata = 256; | 70 | static int pref_offset_copy __cpuinitdata = 256; |
71 | 71 | ||
72 | static unsigned int pref_src_mode __initdata; | 72 | static unsigned int pref_src_mode __cpuinitdata; |
73 | static unsigned int pref_dst_mode __initdata; | 73 | static unsigned int pref_dst_mode __cpuinitdata; |
74 | 74 | ||
75 | static int load_offset __initdata; | 75 | static int load_offset __cpuinitdata; |
76 | static int store_offset __initdata; | 76 | static int store_offset __cpuinitdata; |
77 | 77 | ||
78 | static unsigned int __initdata *dest, *epc; | 78 | static unsigned int __cpuinitdata *dest, *epc; |
79 | 79 | ||
80 | static unsigned int instruction_pending; | 80 | static unsigned int instruction_pending; |
81 | static union mips_instruction delayed_mi; | 81 | static union mips_instruction delayed_mi; |
82 | 82 | ||
83 | static void __init emit_instruction(union mips_instruction mi) | 83 | static void __cpuinit emit_instruction(union mips_instruction mi) |
84 | { | 84 | { |
85 | if (instruction_pending) | 85 | if (instruction_pending) |
86 | *epc++ = delayed_mi.word; | 86 | *epc++ = delayed_mi.word; |
@@ -222,7 +222,7 @@ static inline void build_cdex_p(void) | |||
222 | emit_instruction(mi); | 222 | emit_instruction(mi); |
223 | } | 223 | } |
224 | 224 | ||
225 | static void __init __build_store_reg(int reg) | 225 | static void __cpuinit __build_store_reg(int reg) |
226 | { | 226 | { |
227 | union mips_instruction mi; | 227 | union mips_instruction mi; |
228 | unsigned int width; | 228 | unsigned int width; |
@@ -339,7 +339,7 @@ static inline void build_jr_ra(void) | |||
339 | flush_delay_slot_or_nop(); | 339 | flush_delay_slot_or_nop(); |
340 | } | 340 | } |
341 | 341 | ||
342 | void __init build_clear_page(void) | 342 | void __cpuinit build_clear_page(void) |
343 | { | 343 | { |
344 | unsigned int loop_start; | 344 | unsigned int loop_start; |
345 | unsigned long off; | 345 | unsigned long off; |
@@ -442,7 +442,7 @@ dest = label(); | |||
442 | pr_debug("\t.set pop\n"); | 442 | pr_debug("\t.set pop\n"); |
443 | } | 443 | } |
444 | 444 | ||
445 | void __init build_copy_page(void) | 445 | void __cpuinit build_copy_page(void) |
446 | { | 446 | { |
447 | unsigned int loop_start; | 447 | unsigned int loop_start; |
448 | unsigned long off; | 448 | unsigned long off; |
diff --git a/arch/mips/mm/pg-sb1.c b/arch/mips/mm/pg-sb1.c index 89925ec57d6a..49e289d05414 100644 --- a/arch/mips/mm/pg-sb1.c +++ b/arch/mips/mm/pg-sb1.c | |||
@@ -293,10 +293,10 @@ void copy_page(void *to, void *from) | |||
293 | EXPORT_SYMBOL(clear_page); | 293 | EXPORT_SYMBOL(clear_page); |
294 | EXPORT_SYMBOL(copy_page); | 294 | EXPORT_SYMBOL(copy_page); |
295 | 295 | ||
296 | void __init build_clear_page(void) | 296 | void __cpuinit build_clear_page(void) |
297 | { | 297 | { |
298 | } | 298 | } |
299 | 299 | ||
300 | void __init build_copy_page(void) | 300 | void __cpuinit build_copy_page(void) |
301 | { | 301 | { |
302 | } | 302 | } |
diff --git a/arch/mips/mm/sc-ip22.c b/arch/mips/mm/sc-ip22.c index d236cf8b7374..1f602a110e10 100644 --- a/arch/mips/mm/sc-ip22.c +++ b/arch/mips/mm/sc-ip22.c | |||
@@ -168,7 +168,7 @@ struct bcache_ops indy_sc_ops = { | |||
168 | .bc_inv = indy_sc_wback_invalidate | 168 | .bc_inv = indy_sc_wback_invalidate |
169 | }; | 169 | }; |
170 | 170 | ||
171 | void __init indy_sc_init(void) | 171 | void __cpuinit indy_sc_init(void) |
172 | { | 172 | { |
173 | if (indy_sc_probe()) { | 173 | if (indy_sc_probe()) { |
174 | indy_sc_enable(); | 174 | indy_sc_enable(); |
diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c index c13170bc675c..b55c2d1b998f 100644 --- a/arch/mips/mm/sc-mips.c +++ b/arch/mips/mm/sc-mips.c | |||
@@ -100,7 +100,7 @@ static inline int __init mips_sc_probe(void) | |||
100 | return 1; | 100 | return 1; |
101 | } | 101 | } |
102 | 102 | ||
103 | int __init mips_sc_init(void) | 103 | int __cpuinit mips_sc_init(void) |
104 | { | 104 | { |
105 | int found = mips_sc_probe(); | 105 | int found = mips_sc_probe(); |
106 | if (found) { | 106 | if (found) { |
@@ -109,4 +109,3 @@ int __init mips_sc_init(void) | |||
109 | } | 109 | } |
110 | return found; | 110 | return found; |
111 | } | 111 | } |
112 | |||
diff --git a/arch/mips/mm/sc-r5k.c b/arch/mips/mm/sc-r5k.c index d35b6c1103a3..f330d38e5575 100644 --- a/arch/mips/mm/sc-r5k.c +++ b/arch/mips/mm/sc-r5k.c | |||
@@ -99,7 +99,7 @@ static struct bcache_ops r5k_sc_ops = { | |||
99 | .bc_inv = r5k_dma_cache_inv_sc | 99 | .bc_inv = r5k_dma_cache_inv_sc |
100 | }; | 100 | }; |
101 | 101 | ||
102 | void __init r5k_sc_init(void) | 102 | void __cpuinit r5k_sc_init(void) |
103 | { | 103 | { |
104 | if (r5k_sc_probe()) { | 104 | if (r5k_sc_probe()) { |
105 | r5k_sc_enable(); | 105 | r5k_sc_enable(); |
diff --git a/arch/mips/mm/sc-rm7k.c b/arch/mips/mm/sc-rm7k.c index 31ec73052423..fc227f3b1199 100644 --- a/arch/mips/mm/sc-rm7k.c +++ b/arch/mips/mm/sc-rm7k.c | |||
@@ -128,7 +128,7 @@ struct bcache_ops rm7k_sc_ops = { | |||
128 | .bc_inv = rm7k_sc_inv | 128 | .bc_inv = rm7k_sc_inv |
129 | }; | 129 | }; |
130 | 130 | ||
131 | void __init rm7k_sc_init(void) | 131 | void __cpuinit rm7k_sc_init(void) |
132 | { | 132 | { |
133 | struct cpuinfo_mips *c = ¤t_cpu_data; | 133 | struct cpuinfo_mips *c = ¤t_cpu_data; |
134 | unsigned int config = read_c0_config(); | 134 | unsigned int config = read_c0_config(); |
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c index 7948e9a5e372..a782549ac80e 100644 --- a/arch/mips/mm/tlb-r3k.c +++ b/arch/mips/mm/tlb-r3k.c | |||
@@ -281,7 +281,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1, | |||
281 | } | 281 | } |
282 | } | 282 | } |
283 | 283 | ||
284 | void __init tlb_init(void) | 284 | void __cpuinit tlb_init(void) |
285 | { | 285 | { |
286 | local_flush_tlb_all(); | 286 | local_flush_tlb_all(); |
287 | 287 | ||
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c index 74ae0348cc92..63065d6e8063 100644 --- a/arch/mips/mm/tlb-r4k.c +++ b/arch/mips/mm/tlb-r4k.c | |||
@@ -388,7 +388,7 @@ void __init add_wired_entry(unsigned long entrylo0, unsigned long entrylo1, | |||
388 | * lifetime of the system | 388 | * lifetime of the system |
389 | */ | 389 | */ |
390 | 390 | ||
391 | static int temp_tlb_entry __initdata; | 391 | static int temp_tlb_entry __cpuinitdata; |
392 | 392 | ||
393 | __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, | 393 | __init int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, |
394 | unsigned long entryhi, unsigned long pagemask) | 394 | unsigned long entryhi, unsigned long pagemask) |
@@ -427,7 +427,7 @@ out: | |||
427 | return ret; | 427 | return ret; |
428 | } | 428 | } |
429 | 429 | ||
430 | static void __init probe_tlb(unsigned long config) | 430 | static void __cpuinit probe_tlb(unsigned long config) |
431 | { | 431 | { |
432 | struct cpuinfo_mips *c = ¤t_cpu_data; | 432 | struct cpuinfo_mips *c = ¤t_cpu_data; |
433 | unsigned int reg; | 433 | unsigned int reg; |
@@ -455,7 +455,7 @@ static void __init probe_tlb(unsigned long config) | |||
455 | c->tlbsize = ((reg >> 25) & 0x3f) + 1; | 455 | c->tlbsize = ((reg >> 25) & 0x3f) + 1; |
456 | } | 456 | } |
457 | 457 | ||
458 | static int __initdata ntlb = 0; | 458 | static int __cpuinitdata ntlb = 0; |
459 | static int __init set_ntlb(char *str) | 459 | static int __init set_ntlb(char *str) |
460 | { | 460 | { |
461 | get_option(&str, &ntlb); | 461 | get_option(&str, &ntlb); |
@@ -464,7 +464,7 @@ static int __init set_ntlb(char *str) | |||
464 | 464 | ||
465 | __setup("ntlb=", set_ntlb); | 465 | __setup("ntlb=", set_ntlb); |
466 | 466 | ||
467 | void __init tlb_init(void) | 467 | void __cpuinit tlb_init(void) |
468 | { | 468 | { |
469 | unsigned int config = read_c0_config(); | 469 | unsigned int config = read_c0_config(); |
470 | 470 | ||
@@ -473,7 +473,7 @@ void __init tlb_init(void) | |||
473 | * - On R4600 1.7 the tlbp never hits for pages smaller than | 473 | * - On R4600 1.7 the tlbp never hits for pages smaller than |
474 | * the value in the c0_pagemask register. | 474 | * the value in the c0_pagemask register. |
475 | * - The entire mm handling assumes the c0_pagemask register to | 475 | * - The entire mm handling assumes the c0_pagemask register to |
476 | * be set for 4kb pages. | 476 | * be set to fixed-size pages. |
477 | */ | 477 | */ |
478 | probe_tlb(config); | 478 | probe_tlb(config); |
479 | write_c0_pagemask(PM_DEFAULT_MASK); | 479 | write_c0_pagemask(PM_DEFAULT_MASK); |
diff --git a/arch/mips/mm/tlb-r8k.c b/arch/mips/mm/tlb-r8k.c index bd8409d8ff62..4f01a3be215c 100644 --- a/arch/mips/mm/tlb-r8k.c +++ b/arch/mips/mm/tlb-r8k.c | |||
@@ -214,14 +214,14 @@ void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte) | |||
214 | local_irq_restore(flags); | 214 | local_irq_restore(flags); |
215 | } | 215 | } |
216 | 216 | ||
217 | static void __init probe_tlb(unsigned long config) | 217 | static void __cpuinit probe_tlb(unsigned long config) |
218 | { | 218 | { |
219 | struct cpuinfo_mips *c = ¤t_cpu_data; | 219 | struct cpuinfo_mips *c = ¤t_cpu_data; |
220 | 220 | ||
221 | c->tlbsize = 3 * 128; /* 3 sets each 128 entries */ | 221 | c->tlbsize = 3 * 128; /* 3 sets each 128 entries */ |
222 | } | 222 | } |
223 | 223 | ||
224 | void __init tlb_init(void) | 224 | void __cpuinit tlb_init(void) |
225 | { | 225 | { |
226 | unsigned int config = read_c0_config(); | 226 | unsigned int config = read_c0_config(); |
227 | unsigned long status; | 227 | unsigned long status; |
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c index 218a6cc415e8..3a93d4ce2703 100644 --- a/arch/mips/mm/tlbex.c +++ b/arch/mips/mm/tlbex.c | |||
@@ -60,7 +60,7 @@ static inline int __maybe_unused r10000_llsc_war(void) | |||
60 | * why; it's not an issue caused by the core RTL. | 60 | * why; it's not an issue caused by the core RTL. |
61 | * | 61 | * |
62 | */ | 62 | */ |
63 | static int __init m4kc_tlbp_war(void) | 63 | static int __cpuinit m4kc_tlbp_war(void) |
64 | { | 64 | { |
65 | return (current_cpu_data.processor_id & 0xffff00) == | 65 | return (current_cpu_data.processor_id & 0xffff00) == |
66 | (PRID_COMP_MIPS | PRID_IMP_4KC); | 66 | (PRID_COMP_MIPS | PRID_IMP_4KC); |
@@ -144,16 +144,16 @@ static inline void dump_handler(const u32 *handler, int count) | |||
144 | * We deliberately chose a buffer size of 128, so we won't scribble | 144 | * We deliberately chose a buffer size of 128, so we won't scribble |
145 | * over anything important on overflow before we panic. | 145 | * over anything important on overflow before we panic. |
146 | */ | 146 | */ |
147 | static u32 tlb_handler[128] __initdata; | 147 | static u32 tlb_handler[128] __cpuinitdata; |
148 | 148 | ||
149 | /* simply assume worst case size for labels and relocs */ | 149 | /* simply assume worst case size for labels and relocs */ |
150 | static struct uasm_label labels[128] __initdata; | 150 | static struct uasm_label labels[128] __cpuinitdata; |
151 | static struct uasm_reloc relocs[128] __initdata; | 151 | static struct uasm_reloc relocs[128] __cpuinitdata; |
152 | 152 | ||
153 | /* | 153 | /* |
154 | * The R3000 TLB handler is simple. | 154 | * The R3000 TLB handler is simple. |
155 | */ | 155 | */ |
156 | static void __init build_r3000_tlb_refill_handler(void) | 156 | static void __cpuinit build_r3000_tlb_refill_handler(void) |
157 | { | 157 | { |
158 | long pgdc = (long)pgd_current; | 158 | long pgdc = (long)pgd_current; |
159 | u32 *p; | 159 | u32 *p; |
@@ -197,7 +197,7 @@ static void __init build_r3000_tlb_refill_handler(void) | |||
197 | * other one.To keep things simple, we first assume linear space, | 197 | * other one.To keep things simple, we first assume linear space, |
198 | * then we relocate it to the final handler layout as needed. | 198 | * then we relocate it to the final handler layout as needed. |
199 | */ | 199 | */ |
200 | static u32 final_handler[64] __initdata; | 200 | static u32 final_handler[64] __cpuinitdata; |
201 | 201 | ||
202 | /* | 202 | /* |
203 | * Hazards | 203 | * Hazards |
@@ -221,7 +221,7 @@ static u32 final_handler[64] __initdata; | |||
221 | * | 221 | * |
222 | * As if we MIPS hackers wouldn't know how to nop pipelines happy ... | 222 | * As if we MIPS hackers wouldn't know how to nop pipelines happy ... |
223 | */ | 223 | */ |
224 | static void __init __maybe_unused build_tlb_probe_entry(u32 **p) | 224 | static void __cpuinit __maybe_unused build_tlb_probe_entry(u32 **p) |
225 | { | 225 | { |
226 | switch (current_cpu_type()) { | 226 | switch (current_cpu_type()) { |
227 | /* Found by experiment: R4600 v2.0 needs this, too. */ | 227 | /* Found by experiment: R4600 v2.0 needs this, too. */ |
@@ -245,7 +245,7 @@ static void __init __maybe_unused build_tlb_probe_entry(u32 **p) | |||
245 | */ | 245 | */ |
246 | enum tlb_write_entry { tlb_random, tlb_indexed }; | 246 | enum tlb_write_entry { tlb_random, tlb_indexed }; |
247 | 247 | ||
248 | static void __init build_tlb_write_entry(u32 **p, struct uasm_label **l, | 248 | static void __cpuinit build_tlb_write_entry(u32 **p, struct uasm_label **l, |
249 | struct uasm_reloc **r, | 249 | struct uasm_reloc **r, |
250 | enum tlb_write_entry wmode) | 250 | enum tlb_write_entry wmode) |
251 | { | 251 | { |
@@ -389,7 +389,7 @@ static void __init build_tlb_write_entry(u32 **p, struct uasm_label **l, | |||
389 | * TMP and PTR are scratch. | 389 | * TMP and PTR are scratch. |
390 | * TMP will be clobbered, PTR will hold the pmd entry. | 390 | * TMP will be clobbered, PTR will hold the pmd entry. |
391 | */ | 391 | */ |
392 | static void __init | 392 | static void __cpuinit |
393 | build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | 393 | build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, |
394 | unsigned int tmp, unsigned int ptr) | 394 | unsigned int tmp, unsigned int ptr) |
395 | { | 395 | { |
@@ -450,7 +450,7 @@ build_get_pmde64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | |||
450 | * BVADDR is the faulting address, PTR is scratch. | 450 | * BVADDR is the faulting address, PTR is scratch. |
451 | * PTR will hold the pgd for vmalloc. | 451 | * PTR will hold the pgd for vmalloc. |
452 | */ | 452 | */ |
453 | static void __init | 453 | static void __cpuinit |
454 | build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | 454 | build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, |
455 | unsigned int bvaddr, unsigned int ptr) | 455 | unsigned int bvaddr, unsigned int ptr) |
456 | { | 456 | { |
@@ -522,7 +522,7 @@ build_get_pgd_vmalloc64(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | |||
522 | * TMP and PTR are scratch. | 522 | * TMP and PTR are scratch. |
523 | * TMP will be clobbered, PTR will hold the pgd entry. | 523 | * TMP will be clobbered, PTR will hold the pgd entry. |
524 | */ | 524 | */ |
525 | static void __init __maybe_unused | 525 | static void __cpuinit __maybe_unused |
526 | build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr) | 526 | build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr) |
527 | { | 527 | { |
528 | long pgdc = (long)pgd_current; | 528 | long pgdc = (long)pgd_current; |
@@ -557,7 +557,7 @@ build_get_pgde32(u32 **p, unsigned int tmp, unsigned int ptr) | |||
557 | 557 | ||
558 | #endif /* !CONFIG_64BIT */ | 558 | #endif /* !CONFIG_64BIT */ |
559 | 559 | ||
560 | static void __init build_adjust_context(u32 **p, unsigned int ctx) | 560 | static void __cpuinit build_adjust_context(u32 **p, unsigned int ctx) |
561 | { | 561 | { |
562 | unsigned int shift = 4 - (PTE_T_LOG2 + 1) + PAGE_SHIFT - 12; | 562 | unsigned int shift = 4 - (PTE_T_LOG2 + 1) + PAGE_SHIFT - 12; |
563 | unsigned int mask = (PTRS_PER_PTE / 2 - 1) << (PTE_T_LOG2 + 1); | 563 | unsigned int mask = (PTRS_PER_PTE / 2 - 1) << (PTE_T_LOG2 + 1); |
@@ -583,7 +583,7 @@ static void __init build_adjust_context(u32 **p, unsigned int ctx) | |||
583 | uasm_i_andi(p, ctx, ctx, mask); | 583 | uasm_i_andi(p, ctx, ctx, mask); |
584 | } | 584 | } |
585 | 585 | ||
586 | static void __init build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr) | 586 | static void __cpuinit build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr) |
587 | { | 587 | { |
588 | /* | 588 | /* |
589 | * Bug workaround for the Nevada. It seems as if under certain | 589 | * Bug workaround for the Nevada. It seems as if under certain |
@@ -608,7 +608,7 @@ static void __init build_get_ptep(u32 **p, unsigned int tmp, unsigned int ptr) | |||
608 | UASM_i_ADDU(p, ptr, ptr, tmp); /* add in offset */ | 608 | UASM_i_ADDU(p, ptr, ptr, tmp); /* add in offset */ |
609 | } | 609 | } |
610 | 610 | ||
611 | static void __init build_update_entries(u32 **p, unsigned int tmp, | 611 | static void __cpuinit build_update_entries(u32 **p, unsigned int tmp, |
612 | unsigned int ptep) | 612 | unsigned int ptep) |
613 | { | 613 | { |
614 | /* | 614 | /* |
@@ -651,7 +651,7 @@ static void __init build_update_entries(u32 **p, unsigned int tmp, | |||
651 | #endif | 651 | #endif |
652 | } | 652 | } |
653 | 653 | ||
654 | static void __init build_r4000_tlb_refill_handler(void) | 654 | static void __cpuinit build_r4000_tlb_refill_handler(void) |
655 | { | 655 | { |
656 | u32 *p = tlb_handler; | 656 | u32 *p = tlb_handler; |
657 | struct uasm_label *l = labels; | 657 | struct uasm_label *l = labels; |
@@ -783,7 +783,7 @@ u32 handle_tlbl[FASTPATH_SIZE] __cacheline_aligned; | |||
783 | u32 handle_tlbs[FASTPATH_SIZE] __cacheline_aligned; | 783 | u32 handle_tlbs[FASTPATH_SIZE] __cacheline_aligned; |
784 | u32 handle_tlbm[FASTPATH_SIZE] __cacheline_aligned; | 784 | u32 handle_tlbm[FASTPATH_SIZE] __cacheline_aligned; |
785 | 785 | ||
786 | static void __init | 786 | static void __cpuinit |
787 | iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr) | 787 | iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr) |
788 | { | 788 | { |
789 | #ifdef CONFIG_SMP | 789 | #ifdef CONFIG_SMP |
@@ -803,7 +803,7 @@ iPTE_LW(u32 **p, struct uasm_label **l, unsigned int pte, unsigned int ptr) | |||
803 | #endif | 803 | #endif |
804 | } | 804 | } |
805 | 805 | ||
806 | static void __init | 806 | static void __cpuinit |
807 | iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr, | 807 | iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr, |
808 | unsigned int mode) | 808 | unsigned int mode) |
809 | { | 809 | { |
@@ -863,7 +863,7 @@ iPTE_SW(u32 **p, struct uasm_reloc **r, unsigned int pte, unsigned int ptr, | |||
863 | * the page table where this PTE is located, PTE will be re-loaded | 863 | * the page table where this PTE is located, PTE will be re-loaded |
864 | * with it's original value. | 864 | * with it's original value. |
865 | */ | 865 | */ |
866 | static void __init | 866 | static void __cpuinit |
867 | build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | 867 | build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r, |
868 | unsigned int pte, unsigned int ptr, enum label_id lid) | 868 | unsigned int pte, unsigned int ptr, enum label_id lid) |
869 | { | 869 | { |
@@ -874,7 +874,7 @@ build_pte_present(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | |||
874 | } | 874 | } |
875 | 875 | ||
876 | /* Make PTE valid, store result in PTR. */ | 876 | /* Make PTE valid, store result in PTR. */ |
877 | static void __init | 877 | static void __cpuinit |
878 | build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte, | 878 | build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte, |
879 | unsigned int ptr) | 879 | unsigned int ptr) |
880 | { | 880 | { |
@@ -887,7 +887,7 @@ build_make_valid(u32 **p, struct uasm_reloc **r, unsigned int pte, | |||
887 | * Check if PTE can be written to, if not branch to LABEL. Regardless | 887 | * Check if PTE can be written to, if not branch to LABEL. Regardless |
888 | * restore PTE with value from PTR when done. | 888 | * restore PTE with value from PTR when done. |
889 | */ | 889 | */ |
890 | static void __init | 890 | static void __cpuinit |
891 | build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | 891 | build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, |
892 | unsigned int pte, unsigned int ptr, enum label_id lid) | 892 | unsigned int pte, unsigned int ptr, enum label_id lid) |
893 | { | 893 | { |
@@ -900,7 +900,7 @@ build_pte_writable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | |||
900 | /* Make PTE writable, update software status bits as well, then store | 900 | /* Make PTE writable, update software status bits as well, then store |
901 | * at PTR. | 901 | * at PTR. |
902 | */ | 902 | */ |
903 | static void __init | 903 | static void __cpuinit |
904 | build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte, | 904 | build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte, |
905 | unsigned int ptr) | 905 | unsigned int ptr) |
906 | { | 906 | { |
@@ -914,7 +914,7 @@ build_make_write(u32 **p, struct uasm_reloc **r, unsigned int pte, | |||
914 | * Check if PTE can be modified, if not branch to LABEL. Regardless | 914 | * Check if PTE can be modified, if not branch to LABEL. Regardless |
915 | * restore PTE with value from PTR when done. | 915 | * restore PTE with value from PTR when done. |
916 | */ | 916 | */ |
917 | static void __init | 917 | static void __cpuinit |
918 | build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | 918 | build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, |
919 | unsigned int pte, unsigned int ptr, enum label_id lid) | 919 | unsigned int pte, unsigned int ptr, enum label_id lid) |
920 | { | 920 | { |
@@ -931,7 +931,7 @@ build_pte_modifiable(u32 **p, struct uasm_label **l, struct uasm_reloc **r, | |||
931 | * This places the pte into ENTRYLO0 and writes it with tlbwi. | 931 | * This places the pte into ENTRYLO0 and writes it with tlbwi. |
932 | * Then it returns. | 932 | * Then it returns. |
933 | */ | 933 | */ |
934 | static void __init | 934 | static void __cpuinit |
935 | build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp) | 935 | build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp) |
936 | { | 936 | { |
937 | uasm_i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */ | 937 | uasm_i_mtc0(p, pte, C0_ENTRYLO0); /* cp0 delay */ |
@@ -947,7 +947,7 @@ build_r3000_pte_reload_tlbwi(u32 **p, unsigned int pte, unsigned int tmp) | |||
947 | * may have the probe fail bit set as a result of a trap on a | 947 | * may have the probe fail bit set as a result of a trap on a |
948 | * kseg2 access, i.e. without refill. Then it returns. | 948 | * kseg2 access, i.e. without refill. Then it returns. |
949 | */ | 949 | */ |
950 | static void __init | 950 | static void __cpuinit |
951 | build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l, | 951 | build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l, |
952 | struct uasm_reloc **r, unsigned int pte, | 952 | struct uasm_reloc **r, unsigned int pte, |
953 | unsigned int tmp) | 953 | unsigned int tmp) |
@@ -965,7 +965,7 @@ build_r3000_tlb_reload_write(u32 **p, struct uasm_label **l, | |||
965 | uasm_i_rfe(p); /* branch delay */ | 965 | uasm_i_rfe(p); /* branch delay */ |
966 | } | 966 | } |
967 | 967 | ||
968 | static void __init | 968 | static void __cpuinit |
969 | build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte, | 969 | build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte, |
970 | unsigned int ptr) | 970 | unsigned int ptr) |
971 | { | 971 | { |
@@ -985,7 +985,7 @@ build_r3000_tlbchange_handler_head(u32 **p, unsigned int pte, | |||
985 | uasm_i_tlbp(p); /* load delay */ | 985 | uasm_i_tlbp(p); /* load delay */ |
986 | } | 986 | } |
987 | 987 | ||
988 | static void __init build_r3000_tlb_load_handler(void) | 988 | static void __cpuinit build_r3000_tlb_load_handler(void) |
989 | { | 989 | { |
990 | u32 *p = handle_tlbl; | 990 | u32 *p = handle_tlbl; |
991 | struct uasm_label *l = labels; | 991 | struct uasm_label *l = labels; |
@@ -1015,7 +1015,7 @@ static void __init build_r3000_tlb_load_handler(void) | |||
1015 | dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); | 1015 | dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); |
1016 | } | 1016 | } |
1017 | 1017 | ||
1018 | static void __init build_r3000_tlb_store_handler(void) | 1018 | static void __cpuinit build_r3000_tlb_store_handler(void) |
1019 | { | 1019 | { |
1020 | u32 *p = handle_tlbs; | 1020 | u32 *p = handle_tlbs; |
1021 | struct uasm_label *l = labels; | 1021 | struct uasm_label *l = labels; |
@@ -1045,7 +1045,7 @@ static void __init build_r3000_tlb_store_handler(void) | |||
1045 | dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); | 1045 | dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); |
1046 | } | 1046 | } |
1047 | 1047 | ||
1048 | static void __init build_r3000_tlb_modify_handler(void) | 1048 | static void __cpuinit build_r3000_tlb_modify_handler(void) |
1049 | { | 1049 | { |
1050 | u32 *p = handle_tlbm; | 1050 | u32 *p = handle_tlbm; |
1051 | struct uasm_label *l = labels; | 1051 | struct uasm_label *l = labels; |
@@ -1078,7 +1078,7 @@ static void __init build_r3000_tlb_modify_handler(void) | |||
1078 | /* | 1078 | /* |
1079 | * R4000 style TLB load/store/modify handlers. | 1079 | * R4000 style TLB load/store/modify handlers. |
1080 | */ | 1080 | */ |
1081 | static void __init | 1081 | static void __cpuinit |
1082 | build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l, | 1082 | build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l, |
1083 | struct uasm_reloc **r, unsigned int pte, | 1083 | struct uasm_reloc **r, unsigned int pte, |
1084 | unsigned int ptr) | 1084 | unsigned int ptr) |
@@ -1103,7 +1103,7 @@ build_r4000_tlbchange_handler_head(u32 **p, struct uasm_label **l, | |||
1103 | build_tlb_probe_entry(p); | 1103 | build_tlb_probe_entry(p); |
1104 | } | 1104 | } |
1105 | 1105 | ||
1106 | static void __init | 1106 | static void __cpuinit |
1107 | build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l, | 1107 | build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l, |
1108 | struct uasm_reloc **r, unsigned int tmp, | 1108 | struct uasm_reloc **r, unsigned int tmp, |
1109 | unsigned int ptr) | 1109 | unsigned int ptr) |
@@ -1120,7 +1120,7 @@ build_r4000_tlbchange_handler_tail(u32 **p, struct uasm_label **l, | |||
1120 | #endif | 1120 | #endif |
1121 | } | 1121 | } |
1122 | 1122 | ||
1123 | static void __init build_r4000_tlb_load_handler(void) | 1123 | static void __cpuinit build_r4000_tlb_load_handler(void) |
1124 | { | 1124 | { |
1125 | u32 *p = handle_tlbl; | 1125 | u32 *p = handle_tlbl; |
1126 | struct uasm_label *l = labels; | 1126 | struct uasm_label *l = labels; |
@@ -1160,7 +1160,7 @@ static void __init build_r4000_tlb_load_handler(void) | |||
1160 | dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); | 1160 | dump_handler(handle_tlbl, ARRAY_SIZE(handle_tlbl)); |
1161 | } | 1161 | } |
1162 | 1162 | ||
1163 | static void __init build_r4000_tlb_store_handler(void) | 1163 | static void __cpuinit build_r4000_tlb_store_handler(void) |
1164 | { | 1164 | { |
1165 | u32 *p = handle_tlbs; | 1165 | u32 *p = handle_tlbs; |
1166 | struct uasm_label *l = labels; | 1166 | struct uasm_label *l = labels; |
@@ -1191,7 +1191,7 @@ static void __init build_r4000_tlb_store_handler(void) | |||
1191 | dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); | 1191 | dump_handler(handle_tlbs, ARRAY_SIZE(handle_tlbs)); |
1192 | } | 1192 | } |
1193 | 1193 | ||
1194 | static void __init build_r4000_tlb_modify_handler(void) | 1194 | static void __cpuinit build_r4000_tlb_modify_handler(void) |
1195 | { | 1195 | { |
1196 | u32 *p = handle_tlbm; | 1196 | u32 *p = handle_tlbm; |
1197 | struct uasm_label *l = labels; | 1197 | struct uasm_label *l = labels; |
@@ -1223,7 +1223,7 @@ static void __init build_r4000_tlb_modify_handler(void) | |||
1223 | dump_handler(handle_tlbm, ARRAY_SIZE(handle_tlbm)); | 1223 | dump_handler(handle_tlbm, ARRAY_SIZE(handle_tlbm)); |
1224 | } | 1224 | } |
1225 | 1225 | ||
1226 | void __init build_tlb_refill_handler(void) | 1226 | void __cpuinit build_tlb_refill_handler(void) |
1227 | { | 1227 | { |
1228 | /* | 1228 | /* |
1229 | * The refill handler is generated per-CPU, multi-node systems | 1229 | * The refill handler is generated per-CPU, multi-node systems |
@@ -1269,7 +1269,7 @@ void __init build_tlb_refill_handler(void) | |||
1269 | } | 1269 | } |
1270 | } | 1270 | } |
1271 | 1271 | ||
1272 | void __init flush_tlb_handlers(void) | 1272 | void __cpuinit flush_tlb_handlers(void) |
1273 | { | 1273 | { |
1274 | flush_icache_range((unsigned long)handle_tlbl, | 1274 | flush_icache_range((unsigned long)handle_tlbl, |
1275 | (unsigned long)handle_tlbl + sizeof(handle_tlbl)); | 1275 | (unsigned long)handle_tlbl + sizeof(handle_tlbl)); |
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c index e3f74ed5f704..1a6f7704cc89 100644 --- a/arch/mips/mm/uasm.c +++ b/arch/mips/mm/uasm.c | |||
@@ -82,7 +82,7 @@ struct insn { | |||
82 | | (e) << RE_SH \ | 82 | | (e) << RE_SH \ |
83 | | (f) << FUNC_SH) | 83 | | (f) << FUNC_SH) |
84 | 84 | ||
85 | static struct insn insn_table[] __initdata = { | 85 | static struct insn insn_table[] __cpuinitdata = { |
86 | { insn_addiu, M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, | 86 | { insn_addiu, M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM }, |
87 | { insn_addu, M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD }, | 87 | { insn_addu, M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD }, |
88 | { insn_and, M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD }, | 88 | { insn_and, M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD }, |
@@ -135,7 +135,7 @@ static struct insn insn_table[] __initdata = { | |||
135 | 135 | ||
136 | #undef M | 136 | #undef M |
137 | 137 | ||
138 | static inline __init u32 build_rs(u32 arg) | 138 | static inline __cpuinit u32 build_rs(u32 arg) |
139 | { | 139 | { |
140 | if (arg & ~RS_MASK) | 140 | if (arg & ~RS_MASK) |
141 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 141 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -143,7 +143,7 @@ static inline __init u32 build_rs(u32 arg) | |||
143 | return (arg & RS_MASK) << RS_SH; | 143 | return (arg & RS_MASK) << RS_SH; |
144 | } | 144 | } |
145 | 145 | ||
146 | static inline __init u32 build_rt(u32 arg) | 146 | static inline __cpuinit u32 build_rt(u32 arg) |
147 | { | 147 | { |
148 | if (arg & ~RT_MASK) | 148 | if (arg & ~RT_MASK) |
149 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 149 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -151,7 +151,7 @@ static inline __init u32 build_rt(u32 arg) | |||
151 | return (arg & RT_MASK) << RT_SH; | 151 | return (arg & RT_MASK) << RT_SH; |
152 | } | 152 | } |
153 | 153 | ||
154 | static inline __init u32 build_rd(u32 arg) | 154 | static inline __cpuinit u32 build_rd(u32 arg) |
155 | { | 155 | { |
156 | if (arg & ~RD_MASK) | 156 | if (arg & ~RD_MASK) |
157 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 157 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -159,7 +159,7 @@ static inline __init u32 build_rd(u32 arg) | |||
159 | return (arg & RD_MASK) << RD_SH; | 159 | return (arg & RD_MASK) << RD_SH; |
160 | } | 160 | } |
161 | 161 | ||
162 | static inline __init u32 build_re(u32 arg) | 162 | static inline __cpuinit u32 build_re(u32 arg) |
163 | { | 163 | { |
164 | if (arg & ~RE_MASK) | 164 | if (arg & ~RE_MASK) |
165 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 165 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -167,7 +167,7 @@ static inline __init u32 build_re(u32 arg) | |||
167 | return (arg & RE_MASK) << RE_SH; | 167 | return (arg & RE_MASK) << RE_SH; |
168 | } | 168 | } |
169 | 169 | ||
170 | static inline __init u32 build_simm(s32 arg) | 170 | static inline __cpuinit u32 build_simm(s32 arg) |
171 | { | 171 | { |
172 | if (arg > 0x7fff || arg < -0x8000) | 172 | if (arg > 0x7fff || arg < -0x8000) |
173 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 173 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -175,7 +175,7 @@ static inline __init u32 build_simm(s32 arg) | |||
175 | return arg & 0xffff; | 175 | return arg & 0xffff; |
176 | } | 176 | } |
177 | 177 | ||
178 | static inline __init u32 build_uimm(u32 arg) | 178 | static inline __cpuinit u32 build_uimm(u32 arg) |
179 | { | 179 | { |
180 | if (arg & ~IMM_MASK) | 180 | if (arg & ~IMM_MASK) |
181 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 181 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -183,7 +183,7 @@ static inline __init u32 build_uimm(u32 arg) | |||
183 | return arg & IMM_MASK; | 183 | return arg & IMM_MASK; |
184 | } | 184 | } |
185 | 185 | ||
186 | static inline __init u32 build_bimm(s32 arg) | 186 | static inline __cpuinit u32 build_bimm(s32 arg) |
187 | { | 187 | { |
188 | if (arg > 0x1ffff || arg < -0x20000) | 188 | if (arg > 0x1ffff || arg < -0x20000) |
189 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 189 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -194,7 +194,7 @@ static inline __init u32 build_bimm(s32 arg) | |||
194 | return ((arg < 0) ? (1 << 15) : 0) | ((arg >> 2) & 0x7fff); | 194 | return ((arg < 0) ? (1 << 15) : 0) | ((arg >> 2) & 0x7fff); |
195 | } | 195 | } |
196 | 196 | ||
197 | static inline __init u32 build_jimm(u32 arg) | 197 | static inline __cpuinit u32 build_jimm(u32 arg) |
198 | { | 198 | { |
199 | if (arg & ~((JIMM_MASK) << 2)) | 199 | if (arg & ~((JIMM_MASK) << 2)) |
200 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 200 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -202,7 +202,7 @@ static inline __init u32 build_jimm(u32 arg) | |||
202 | return (arg >> 2) & JIMM_MASK; | 202 | return (arg >> 2) & JIMM_MASK; |
203 | } | 203 | } |
204 | 204 | ||
205 | static inline __init u32 build_func(u32 arg) | 205 | static inline __cpuinit u32 build_func(u32 arg) |
206 | { | 206 | { |
207 | if (arg & ~FUNC_MASK) | 207 | if (arg & ~FUNC_MASK) |
208 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 208 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -210,7 +210,7 @@ static inline __init u32 build_func(u32 arg) | |||
210 | return arg & FUNC_MASK; | 210 | return arg & FUNC_MASK; |
211 | } | 211 | } |
212 | 212 | ||
213 | static inline __init u32 build_set(u32 arg) | 213 | static inline __cpuinit u32 build_set(u32 arg) |
214 | { | 214 | { |
215 | if (arg & ~SET_MASK) | 215 | if (arg & ~SET_MASK) |
216 | printk(KERN_WARNING "Micro-assembler field overflow\n"); | 216 | printk(KERN_WARNING "Micro-assembler field overflow\n"); |
@@ -222,7 +222,7 @@ static inline __init u32 build_set(u32 arg) | |||
222 | * The order of opcode arguments is implicitly left to right, | 222 | * The order of opcode arguments is implicitly left to right, |
223 | * starting with RS and ending with FUNC or IMM. | 223 | * starting with RS and ending with FUNC or IMM. |
224 | */ | 224 | */ |
225 | static void __init build_insn(u32 **buf, enum opcode opc, ...) | 225 | static void __cpuinit build_insn(u32 **buf, enum opcode opc, ...) |
226 | { | 226 | { |
227 | struct insn *ip = NULL; | 227 | struct insn *ip = NULL; |
228 | unsigned int i; | 228 | unsigned int i; |
@@ -375,14 +375,14 @@ I_u3u1u2(_xor) | |||
375 | I_u2u1u3(_xori) | 375 | I_u2u1u3(_xori) |
376 | 376 | ||
377 | /* Handle labels. */ | 377 | /* Handle labels. */ |
378 | void __init uasm_build_label(struct uasm_label **lab, u32 *addr, int lid) | 378 | void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid) |
379 | { | 379 | { |
380 | (*lab)->addr = addr; | 380 | (*lab)->addr = addr; |
381 | (*lab)->lab = lid; | 381 | (*lab)->lab = lid; |
382 | (*lab)++; | 382 | (*lab)++; |
383 | } | 383 | } |
384 | 384 | ||
385 | int __init uasm_in_compat_space_p(long addr) | 385 | int __cpuinit uasm_in_compat_space_p(long addr) |
386 | { | 386 | { |
387 | /* Is this address in 32bit compat space? */ | 387 | /* Is this address in 32bit compat space? */ |
388 | #ifdef CONFIG_64BIT | 388 | #ifdef CONFIG_64BIT |
@@ -392,7 +392,7 @@ int __init uasm_in_compat_space_p(long addr) | |||
392 | #endif | 392 | #endif |
393 | } | 393 | } |
394 | 394 | ||
395 | int __init uasm_rel_highest(long val) | 395 | int __cpuinit uasm_rel_highest(long val) |
396 | { | 396 | { |
397 | #ifdef CONFIG_64BIT | 397 | #ifdef CONFIG_64BIT |
398 | return ((((val + 0x800080008000L) >> 48) & 0xffff) ^ 0x8000) - 0x8000; | 398 | return ((((val + 0x800080008000L) >> 48) & 0xffff) ^ 0x8000) - 0x8000; |
@@ -401,7 +401,7 @@ int __init uasm_rel_highest(long val) | |||
401 | #endif | 401 | #endif |
402 | } | 402 | } |
403 | 403 | ||
404 | int __init uasm_rel_higher(long val) | 404 | int __cpuinit uasm_rel_higher(long val) |
405 | { | 405 | { |
406 | #ifdef CONFIG_64BIT | 406 | #ifdef CONFIG_64BIT |
407 | return ((((val + 0x80008000L) >> 32) & 0xffff) ^ 0x8000) - 0x8000; | 407 | return ((((val + 0x80008000L) >> 32) & 0xffff) ^ 0x8000) - 0x8000; |
@@ -410,17 +410,17 @@ int __init uasm_rel_higher(long val) | |||
410 | #endif | 410 | #endif |
411 | } | 411 | } |
412 | 412 | ||
413 | int __init uasm_rel_hi(long val) | 413 | int __cpuinit uasm_rel_hi(long val) |
414 | { | 414 | { |
415 | return ((((val + 0x8000L) >> 16) & 0xffff) ^ 0x8000) - 0x8000; | 415 | return ((((val + 0x8000L) >> 16) & 0xffff) ^ 0x8000) - 0x8000; |
416 | } | 416 | } |
417 | 417 | ||
418 | int __init uasm_rel_lo(long val) | 418 | int __cpuinit uasm_rel_lo(long val) |
419 | { | 419 | { |
420 | return ((val & 0xffff) ^ 0x8000) - 0x8000; | 420 | return ((val & 0xffff) ^ 0x8000) - 0x8000; |
421 | } | 421 | } |
422 | 422 | ||
423 | void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr) | 423 | void __cpuinit UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr) |
424 | { | 424 | { |
425 | if (!uasm_in_compat_space_p(addr)) { | 425 | if (!uasm_in_compat_space_p(addr)) { |
426 | uasm_i_lui(buf, rs, uasm_rel_highest(addr)); | 426 | uasm_i_lui(buf, rs, uasm_rel_highest(addr)); |
@@ -436,7 +436,7 @@ void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr) | |||
436 | uasm_i_lui(buf, rs, uasm_rel_hi(addr)); | 436 | uasm_i_lui(buf, rs, uasm_rel_hi(addr)); |
437 | } | 437 | } |
438 | 438 | ||
439 | void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr) | 439 | void __cpuinit UASM_i_LA(u32 **buf, unsigned int rs, long addr) |
440 | { | 440 | { |
441 | UASM_i_LA_mostly(buf, rs, addr); | 441 | UASM_i_LA_mostly(buf, rs, addr); |
442 | if (uasm_rel_lo(addr)) { | 442 | if (uasm_rel_lo(addr)) { |
@@ -448,7 +448,7 @@ void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr) | |||
448 | } | 448 | } |
449 | 449 | ||
450 | /* Handle relocations. */ | 450 | /* Handle relocations. */ |
451 | void __init | 451 | void __cpuinit |
452 | uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid) | 452 | uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid) |
453 | { | 453 | { |
454 | (*rel)->addr = addr; | 454 | (*rel)->addr = addr; |
@@ -457,7 +457,7 @@ uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid) | |||
457 | (*rel)++; | 457 | (*rel)++; |
458 | } | 458 | } |
459 | 459 | ||
460 | static inline void __init | 460 | static inline void __cpuinit |
461 | __resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) | 461 | __resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) |
462 | { | 462 | { |
463 | long laddr = (long)lab->addr; | 463 | long laddr = (long)lab->addr; |
@@ -474,7 +474,7 @@ __resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) | |||
474 | } | 474 | } |
475 | } | 475 | } |
476 | 476 | ||
477 | void __init | 477 | void __cpuinit |
478 | uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) | 478 | uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) |
479 | { | 479 | { |
480 | struct uasm_label *l; | 480 | struct uasm_label *l; |
@@ -485,7 +485,7 @@ uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab) | |||
485 | __resolve_relocs(rel, l); | 485 | __resolve_relocs(rel, l); |
486 | } | 486 | } |
487 | 487 | ||
488 | void __init | 488 | void __cpuinit |
489 | uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off) | 489 | uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off) |
490 | { | 490 | { |
491 | for (; rel->lab != UASM_LABEL_INVALID; rel++) | 491 | for (; rel->lab != UASM_LABEL_INVALID; rel++) |
@@ -493,7 +493,7 @@ uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off) | |||
493 | rel->addr += off; | 493 | rel->addr += off; |
494 | } | 494 | } |
495 | 495 | ||
496 | void __init | 496 | void __cpuinit |
497 | uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off) | 497 | uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off) |
498 | { | 498 | { |
499 | for (; lab->lab != UASM_LABEL_INVALID; lab++) | 499 | for (; lab->lab != UASM_LABEL_INVALID; lab++) |
@@ -501,7 +501,7 @@ uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off) | |||
501 | lab->addr += off; | 501 | lab->addr += off; |
502 | } | 502 | } |
503 | 503 | ||
504 | void __init | 504 | void __cpuinit |
505 | uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first, | 505 | uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first, |
506 | u32 *end, u32 *target) | 506 | u32 *end, u32 *target) |
507 | { | 507 | { |
@@ -513,7 +513,7 @@ uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first, | |||
513 | uasm_move_labels(lab, first, end, off); | 513 | uasm_move_labels(lab, first, end, off); |
514 | } | 514 | } |
515 | 515 | ||
516 | int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr) | 516 | int __cpuinit uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr) |
517 | { | 517 | { |
518 | for (; rel->lab != UASM_LABEL_INVALID; rel++) { | 518 | for (; rel->lab != UASM_LABEL_INVALID; rel++) { |
519 | if (rel->addr == addr | 519 | if (rel->addr == addr |
@@ -526,49 +526,49 @@ int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr) | |||
526 | } | 526 | } |
527 | 527 | ||
528 | /* Convenience functions for labeled branches. */ | 528 | /* Convenience functions for labeled branches. */ |
529 | void __init | 529 | void __cpuinit |
530 | uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) | 530 | uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) |
531 | { | 531 | { |
532 | uasm_r_mips_pc16(r, *p, lid); | 532 | uasm_r_mips_pc16(r, *p, lid); |
533 | uasm_i_bltz(p, reg, 0); | 533 | uasm_i_bltz(p, reg, 0); |
534 | } | 534 | } |
535 | 535 | ||
536 | void __init | 536 | void __cpuinit |
537 | uasm_il_b(u32 **p, struct uasm_reloc **r, int lid) | 537 | uasm_il_b(u32 **p, struct uasm_reloc **r, int lid) |
538 | { | 538 | { |
539 | uasm_r_mips_pc16(r, *p, lid); | 539 | uasm_r_mips_pc16(r, *p, lid); |
540 | uasm_i_b(p, 0); | 540 | uasm_i_b(p, 0); |
541 | } | 541 | } |
542 | 542 | ||
543 | void __init | 543 | void __cpuinit |
544 | uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) | 544 | uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) |
545 | { | 545 | { |
546 | uasm_r_mips_pc16(r, *p, lid); | 546 | uasm_r_mips_pc16(r, *p, lid); |
547 | uasm_i_beqz(p, reg, 0); | 547 | uasm_i_beqz(p, reg, 0); |
548 | } | 548 | } |
549 | 549 | ||
550 | void __init | 550 | void __cpuinit |
551 | uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) | 551 | uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) |
552 | { | 552 | { |
553 | uasm_r_mips_pc16(r, *p, lid); | 553 | uasm_r_mips_pc16(r, *p, lid); |
554 | uasm_i_beqzl(p, reg, 0); | 554 | uasm_i_beqzl(p, reg, 0); |
555 | } | 555 | } |
556 | 556 | ||
557 | void __init | 557 | void __cpuinit |
558 | uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) | 558 | uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) |
559 | { | 559 | { |
560 | uasm_r_mips_pc16(r, *p, lid); | 560 | uasm_r_mips_pc16(r, *p, lid); |
561 | uasm_i_bnez(p, reg, 0); | 561 | uasm_i_bnez(p, reg, 0); |
562 | } | 562 | } |
563 | 563 | ||
564 | void __init | 564 | void __cpuinit |
565 | uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) | 565 | uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) |
566 | { | 566 | { |
567 | uasm_r_mips_pc16(r, *p, lid); | 567 | uasm_r_mips_pc16(r, *p, lid); |
568 | uasm_i_bgezl(p, reg, 0); | 568 | uasm_i_bgezl(p, reg, 0); |
569 | } | 569 | } |
570 | 570 | ||
571 | void __init | 571 | void __cpuinit |
572 | uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) | 572 | uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid) |
573 | { | 573 | { |
574 | uasm_r_mips_pc16(r, *p, lid); | 574 | uasm_r_mips_pc16(r, *p, lid); |
diff --git a/arch/mips/mm/uasm.h b/arch/mips/mm/uasm.h index a10fc1135c76..fe0574f6e77d 100644 --- a/arch/mips/mm/uasm.h +++ b/arch/mips/mm/uasm.h | |||
@@ -11,38 +11,38 @@ | |||
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | 12 | ||
13 | #define Ip_u1u2u3(op) \ | 13 | #define Ip_u1u2u3(op) \ |
14 | void __init \ | 14 | void __cpuinit \ |
15 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) | 15 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) |
16 | 16 | ||
17 | #define Ip_u2u1u3(op) \ | 17 | #define Ip_u2u1u3(op) \ |
18 | void __init \ | 18 | void __cpuinit \ |
19 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) | 19 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) |
20 | 20 | ||
21 | #define Ip_u3u1u2(op) \ | 21 | #define Ip_u3u1u2(op) \ |
22 | void __init \ | 22 | void __cpuinit \ |
23 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) | 23 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, unsigned int c) |
24 | 24 | ||
25 | #define Ip_u1u2s3(op) \ | 25 | #define Ip_u1u2s3(op) \ |
26 | void __init \ | 26 | void __cpuinit \ |
27 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) | 27 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) |
28 | 28 | ||
29 | #define Ip_u2s3u1(op) \ | 29 | #define Ip_u2s3u1(op) \ |
30 | void __init \ | 30 | void __cpuinit \ |
31 | uasm_i##op(u32 **buf, unsigned int a, signed int b, unsigned int c) | 31 | uasm_i##op(u32 **buf, unsigned int a, signed int b, unsigned int c) |
32 | 32 | ||
33 | #define Ip_u2u1s3(op) \ | 33 | #define Ip_u2u1s3(op) \ |
34 | void __init \ | 34 | void __cpuinit \ |
35 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) | 35 | uasm_i##op(u32 **buf, unsigned int a, unsigned int b, signed int c) |
36 | 36 | ||
37 | #define Ip_u1u2(op) \ | 37 | #define Ip_u1u2(op) \ |
38 | void __init uasm_i##op(u32 **buf, unsigned int a, unsigned int b) | 38 | void __cpuinit uasm_i##op(u32 **buf, unsigned int a, unsigned int b) |
39 | 39 | ||
40 | #define Ip_u1s2(op) \ | 40 | #define Ip_u1s2(op) \ |
41 | void __init uasm_i##op(u32 **buf, unsigned int a, signed int b) | 41 | void __cpuinit uasm_i##op(u32 **buf, unsigned int a, signed int b) |
42 | 42 | ||
43 | #define Ip_u1(op) void __init uasm_i##op(u32 **buf, unsigned int a) | 43 | #define Ip_u1(op) void __cpuinit uasm_i##op(u32 **buf, unsigned int a) |
44 | 44 | ||
45 | #define Ip_0(op) void __init uasm_i##op(u32 **buf) | 45 | #define Ip_0(op) void __cpuinit uasm_i##op(u32 **buf) |
46 | 46 | ||
47 | Ip_u2u1s3(_addiu); | 47 | Ip_u2u1s3(_addiu); |
48 | Ip_u3u1u2(_addu); | 48 | Ip_u3u1u2(_addu); |
@@ -98,19 +98,19 @@ struct uasm_label { | |||
98 | int lab; | 98 | int lab; |
99 | }; | 99 | }; |
100 | 100 | ||
101 | void __init uasm_build_label(struct uasm_label **lab, u32 *addr, int lid); | 101 | void __cpuinit uasm_build_label(struct uasm_label **lab, u32 *addr, int lid); |
102 | #ifdef CONFIG_64BIT | 102 | #ifdef CONFIG_64BIT |
103 | int __init uasm_in_compat_space_p(long addr); | 103 | int uasm_in_compat_space_p(long addr); |
104 | int __init uasm_rel_highest(long val); | 104 | int uasm_rel_highest(long val); |
105 | int __init uasm_rel_higher(long val); | 105 | int uasm_rel_higher(long val); |
106 | #endif | 106 | #endif |
107 | int __init uasm_rel_hi(long val); | 107 | int uasm_rel_hi(long val); |
108 | int __init uasm_rel_lo(long val); | 108 | int uasm_rel_lo(long val); |
109 | void __init UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr); | 109 | void UASM_i_LA_mostly(u32 **buf, unsigned int rs, long addr); |
110 | void __init UASM_i_LA(u32 **buf, unsigned int rs, long addr); | 110 | void UASM_i_LA(u32 **buf, unsigned int rs, long addr); |
111 | 111 | ||
112 | #define UASM_L_LA(lb) \ | 112 | #define UASM_L_LA(lb) \ |
113 | static inline void __init uasm_l##lb(struct uasm_label **lab, u32 *addr) \ | 113 | static inline void __cpuinit uasm_l##lb(struct uasm_label **lab, u32 *addr) \ |
114 | { \ | 114 | { \ |
115 | uasm_build_label(lab, addr, label##lb); \ | 115 | uasm_build_label(lab, addr, label##lb); \ |
116 | } | 116 | } |
@@ -164,29 +164,19 @@ struct uasm_reloc { | |||
164 | /* This is zero so we can use zeroed label arrays. */ | 164 | /* This is zero so we can use zeroed label arrays. */ |
165 | #define UASM_LABEL_INVALID 0 | 165 | #define UASM_LABEL_INVALID 0 |
166 | 166 | ||
167 | void __init uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid); | 167 | void uasm_r_mips_pc16(struct uasm_reloc **rel, u32 *addr, int lid); |
168 | void __init | 168 | void uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab); |
169 | uasm_resolve_relocs(struct uasm_reloc *rel, struct uasm_label *lab); | 169 | void uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off); |
170 | void __init | 170 | void uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off); |
171 | uasm_move_relocs(struct uasm_reloc *rel, u32 *first, u32 *end, long off); | 171 | void uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, |
172 | void __init | 172 | u32 *first, u32 *end, u32 *target); |
173 | uasm_move_labels(struct uasm_label *lab, u32 *first, u32 *end, long off); | 173 | int uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr); |
174 | void __init | ||
175 | uasm_copy_handler(struct uasm_reloc *rel, struct uasm_label *lab, u32 *first, | ||
176 | u32 *end, u32 *target); | ||
177 | int __init uasm_insn_has_bdelay(struct uasm_reloc *rel, u32 *addr); | ||
178 | 174 | ||
179 | /* Convenience functions for labeled branches. */ | 175 | /* Convenience functions for labeled branches. */ |
180 | void __init | 176 | void uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); |
181 | uasm_il_bltz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); | 177 | void uasm_il_b(u32 **p, struct uasm_reloc **r, int lid); |
182 | void __init uasm_il_b(u32 **p, struct uasm_reloc **r, int lid); | 178 | void uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); |
183 | void __init | 179 | void uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); |
184 | uasm_il_beqz(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); | 180 | void uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); |
185 | void __init | 181 | void uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); |
186 | uasm_il_beqzl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); | 182 | void uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); |
187 | void __init | ||
188 | uasm_il_bnez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); | ||
189 | void __init | ||
190 | uasm_il_bgezl(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); | ||
191 | void __init | ||
192 | uasm_il_bgez(u32 **p, struct uasm_reloc **r, unsigned int reg, int lid); | ||
diff --git a/arch/mips/pci/pci-bcm1480.c b/arch/mips/pci/pci-bcm1480.c index 30ed36125bcd..ab68c4318a30 100644 --- a/arch/mips/pci/pci-bcm1480.c +++ b/arch/mips/pci/pci-bcm1480.c | |||
@@ -249,8 +249,9 @@ static int __init bcm1480_pcibios_init(void) | |||
249 | * XXX ehs: Should this happen in PCI Device mode? | 249 | * XXX ehs: Should this happen in PCI Device mode? |
250 | */ | 250 | */ |
251 | 251 | ||
252 | set_io_port_base((unsigned long) | 252 | bcm1480_controller.io_map_base = (unsigned long) |
253 | ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536)); | 253 | ioremap(A_BCM1480_PHYS_PCI_IO_MATCH_BYTES, 65536); |
254 | set_io_port_base(bcm1480_controller.io_map_base); | ||
254 | isa_slot_offset = (unsigned long) | 255 | isa_slot_offset = (unsigned long) |
255 | ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024); | 256 | ioremap(A_BCM1480_PHYS_PCI_MEM_MATCH_BYTES, 1024*1024); |
256 | 257 | ||
diff --git a/arch/mips/pci/pci-ip27.c b/arch/mips/pci/pci-ip27.c index a322543ac34e..bb64828a92fe 100644 --- a/arch/mips/pci/pci-ip27.c +++ b/arch/mips/pci/pci-ip27.c | |||
@@ -40,7 +40,7 @@ int irq_to_slot[MAX_PCI_BUSSES * MAX_DEVICES_PER_PCIBUS]; | |||
40 | 40 | ||
41 | extern struct pci_ops bridge_pci_ops; | 41 | extern struct pci_ops bridge_pci_ops; |
42 | 42 | ||
43 | int __init bridge_probe(nasid_t nasid, int widget_id, int masterwid) | 43 | int __cpuinit bridge_probe(nasid_t nasid, int widget_id, int masterwid) |
44 | { | 44 | { |
45 | unsigned long offset = NODE_OFFSET(nasid); | 45 | unsigned long offset = NODE_OFFSET(nasid); |
46 | struct bridge_controller *bc; | 46 | struct bridge_controller *bc; |
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c index f9471d77c096..358ad6210949 100644 --- a/arch/mips/pci/pci.c +++ b/arch/mips/pci/pci.c | |||
@@ -260,7 +260,7 @@ static void pcibios_fixup_device_resources(struct pci_dev *dev, | |||
260 | } | 260 | } |
261 | } | 261 | } |
262 | 262 | ||
263 | void pcibios_fixup_bus(struct pci_bus *bus) | 263 | void __devinit pcibios_fixup_bus(struct pci_bus *bus) |
264 | { | 264 | { |
265 | /* Propagate hose info into the subordinate devices. */ | 265 | /* Propagate hose info into the subordinate devices. */ |
266 | 266 | ||
diff --git a/arch/mips/pmc-sierra/yosemite/smp.c b/arch/mips/pmc-sierra/yosemite/smp.c index 653f3ec61cab..3a7df647ca77 100644 --- a/arch/mips/pmc-sierra/yosemite/smp.c +++ b/arch/mips/pmc-sierra/yosemite/smp.c | |||
@@ -7,10 +7,10 @@ | |||
7 | 7 | ||
8 | #define LAUNCHSTACK_SIZE 256 | 8 | #define LAUNCHSTACK_SIZE 256 |
9 | 9 | ||
10 | static __initdata DEFINE_SPINLOCK(launch_lock); | 10 | static __cpuinitdata DEFINE_SPINLOCK(launch_lock); |
11 | 11 | ||
12 | static unsigned long secondary_sp __initdata; | 12 | static unsigned long secondary_sp __cpuinitdata; |
13 | static unsigned long secondary_gp __initdata; | 13 | static unsigned long secondary_gp __cpuinitdata; |
14 | 14 | ||
15 | static unsigned char launchstack[LAUNCHSTACK_SIZE] __initdata | 15 | static unsigned char launchstack[LAUNCHSTACK_SIZE] __initdata |
16 | __attribute__((aligned(2 * sizeof(long)))); | 16 | __attribute__((aligned(2 * sizeof(long)))); |
diff --git a/arch/mips/sgi-ip27/ip27-init.c b/arch/mips/sgi-ip27/ip27-init.c index a49e7c85f724..7093e7c573a4 100644 --- a/arch/mips/sgi-ip27/ip27-init.c +++ b/arch/mips/sgi-ip27/ip27-init.c | |||
@@ -53,7 +53,7 @@ extern void pcibr_setup(cnodeid_t); | |||
53 | 53 | ||
54 | extern void xtalk_probe_node(cnodeid_t nid); | 54 | extern void xtalk_probe_node(cnodeid_t nid); |
55 | 55 | ||
56 | static void __init per_hub_init(cnodeid_t cnode) | 56 | static void __cpuinit per_hub_init(cnodeid_t cnode) |
57 | { | 57 | { |
58 | struct hub_data *hub = hub_data(cnode); | 58 | struct hub_data *hub = hub_data(cnode); |
59 | nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode); | 59 | nasid_t nasid = COMPACT_TO_NASID_NODEID(cnode); |
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c index 08d45369be45..25d3baf0ebc4 100644 --- a/arch/mips/sgi-ip27/ip27-timer.c +++ b/arch/mips/sgi-ip27/ip27-timer.c | |||
@@ -285,7 +285,7 @@ void __cpuinit cpu_time_init(void) | |||
285 | set_c0_status(SRB_TIMOCLK); | 285 | set_c0_status(SRB_TIMOCLK); |
286 | } | 286 | } |
287 | 287 | ||
288 | void __init hub_rtc_init(cnodeid_t cnode) | 288 | void __cpuinit hub_rtc_init(cnodeid_t cnode) |
289 | { | 289 | { |
290 | /* | 290 | /* |
291 | * We only need to initialize the current node. | 291 | * We only need to initialize the current node. |
diff --git a/arch/mips/sgi-ip27/ip27-xtalk.c b/arch/mips/sgi-ip27/ip27-xtalk.c index fc82f34a32ce..6ae64e8dfc40 100644 --- a/arch/mips/sgi-ip27/ip27-xtalk.c +++ b/arch/mips/sgi-ip27/ip27-xtalk.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | extern int bridge_probe(nasid_t nasid, int widget, int masterwid); | 23 | extern int bridge_probe(nasid_t nasid, int widget, int masterwid); |
24 | 24 | ||
25 | static int __init probe_one_port(nasid_t nasid, int widget, int masterwid) | 25 | static int __cpuinit probe_one_port(nasid_t nasid, int widget, int masterwid) |
26 | { | 26 | { |
27 | widgetreg_t widget_id; | 27 | widgetreg_t widget_id; |
28 | xwidget_part_num_t partnum; | 28 | xwidget_part_num_t partnum; |
@@ -46,7 +46,7 @@ static int __init probe_one_port(nasid_t nasid, int widget, int masterwid) | |||
46 | return 0; | 46 | return 0; |
47 | } | 47 | } |
48 | 48 | ||
49 | static int __init xbow_probe(nasid_t nasid) | 49 | static int __cpuinit xbow_probe(nasid_t nasid) |
50 | { | 50 | { |
51 | lboard_t *brd; | 51 | lboard_t *brd; |
52 | klxbow_t *xbow_p; | 52 | klxbow_t *xbow_p; |
@@ -99,7 +99,7 @@ static int __init xbow_probe(nasid_t nasid) | |||
99 | return 0; | 99 | return 0; |
100 | } | 100 | } |
101 | 101 | ||
102 | void __init xtalk_probe_node(cnodeid_t nid) | 102 | void __cpuinit xtalk_probe_node(cnodeid_t nid) |
103 | { | 103 | { |
104 | volatile u64 hubreg; | 104 | volatile u64 hubreg; |
105 | nasid_t nasid; | 105 | nasid_t nasid; |
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 1c6ce3536e4c..ab5cfe8ef988 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile | |||
@@ -155,7 +155,7 @@ all: zImage | |||
155 | 155 | ||
156 | CPPFLAGS_vmlinux.lds := -Upowerpc | 156 | CPPFLAGS_vmlinux.lds := -Upowerpc |
157 | 157 | ||
158 | BOOT_TARGETS = zImage zImage.initrd uImage treeImage.% cuImage.% | 158 | BOOT_TARGETS = zImage zImage.initrd uImage zImage% dtbImage% treeImage.% cuImage.% |
159 | 159 | ||
160 | PHONY += $(BOOT_TARGETS) | 160 | PHONY += $(BOOT_TARGETS) |
161 | 161 | ||
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index e3993a607584..4974d9e56ead 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -186,7 +186,7 @@ quiet_cmd_wrap = WRAP $@ | |||
186 | image-$(CONFIG_PPC_PSERIES) += zImage.pseries | 186 | image-$(CONFIG_PPC_PSERIES) += zImage.pseries |
187 | image-$(CONFIG_PPC_MAPLE) += zImage.pseries | 187 | image-$(CONFIG_PPC_MAPLE) += zImage.pseries |
188 | image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries | 188 | image-$(CONFIG_PPC_IBM_CELL_BLADE) += zImage.pseries |
189 | image-$(CONFIG_PPC_PS3) += zImage-dtb.ps3 | 189 | image-$(CONFIG_PPC_PS3) += dtbImage.ps3 |
190 | image-$(CONFIG_PPC_CELLEB) += zImage.pseries | 190 | image-$(CONFIG_PPC_CELLEB) += zImage.pseries |
191 | image-$(CONFIG_PPC_CHRP) += zImage.chrp | 191 | image-$(CONFIG_PPC_CHRP) += zImage.chrp |
192 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp | 192 | image-$(CONFIG_PPC_EFIKA) += zImage.chrp |
@@ -205,7 +205,7 @@ image-$(CONFIG_DEFAULT_UIMAGE) += uImage | |||
205 | # | 205 | # |
206 | 206 | ||
207 | # Board ports in arch/powerpc/platform/40x/Kconfig | 207 | # Board ports in arch/powerpc/platform/40x/Kconfig |
208 | image-$(CONFIG_EP405) += zImage-dtb.ep405 | 208 | image-$(CONFIG_EP405) += dtbImage.ep405 |
209 | image-$(CONFIG_WALNUT) += treeImage.walnut | 209 | image-$(CONFIG_WALNUT) += treeImage.walnut |
210 | 210 | ||
211 | # Board ports in arch/powerpc/platform/44x/Kconfig | 211 | # Board ports in arch/powerpc/platform/44x/Kconfig |
@@ -220,9 +220,9 @@ image-$(CONFIG_WARP) += cuImage.warp | |||
220 | # Board ports in arch/powerpc/platform/8xx/Kconfig | 220 | # Board ports in arch/powerpc/platform/8xx/Kconfig |
221 | image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads | 221 | image-$(CONFIG_PPC_MPC86XADS) += cuImage.mpc866ads |
222 | image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads | 222 | image-$(CONFIG_PPC_MPC885ADS) += cuImage.mpc885ads |
223 | image-$(CONFIG_PPC_EP88XC) += zImage-dtb.ep88xc | 223 | image-$(CONFIG_PPC_EP88XC) += dtbImage.ep88xc |
224 | image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \ | 224 | image-$(CONFIG_PPC_ADDER875) += cuImage.adder875-uboot \ |
225 | zImage-dtb.adder875-redboot | 225 | dtbImage.adder875-redboot |
226 | 226 | ||
227 | # Board ports in arch/powerpc/platform/52xx/Kconfig | 227 | # Board ports in arch/powerpc/platform/52xx/Kconfig |
228 | image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b | 228 | image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b |
@@ -230,7 +230,7 @@ image-$(CONFIG_PPC_LITE5200) += cuImage.lite5200 cuImage.lite5200b | |||
230 | # Board ports in arch/powerpc/platform/82xx/Kconfig | 230 | # Board ports in arch/powerpc/platform/82xx/Kconfig |
231 | image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads | 231 | image-$(CONFIG_MPC8272_ADS) += cuImage.mpc8272ads |
232 | image-$(CONFIG_PQ2FADS) += cuImage.pq2fads | 232 | image-$(CONFIG_PQ2FADS) += cuImage.pq2fads |
233 | image-$(CONFIG_EP8248E) += zImage-dtb.ep8248e | 233 | image-$(CONFIG_EP8248E) += dtbImage.ep8248e |
234 | 234 | ||
235 | # Board ports in arch/powerpc/platform/83xx/Kconfig | 235 | # Board ports in arch/powerpc/platform/83xx/Kconfig |
236 | image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds | 236 | image-$(CONFIG_MPC832x_MDS) += cuImage.mpc832x_mds |
@@ -268,7 +268,8 @@ endif | |||
268 | 268 | ||
269 | initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) | 269 | initrd- := $(patsubst zImage%, zImage.initrd%, $(image-n) $(image-)) |
270 | initrd-y := $(patsubst zImage%, zImage.initrd%, \ | 270 | initrd-y := $(patsubst zImage%, zImage.initrd%, \ |
271 | $(patsubst treeImage%, treeImage.initrd%, $(image-y))) | 271 | $(patsubst dtbImage%, dtbImage.initrd%, \ |
272 | $(patsubst treeImage%, treeImage.initrd%, $(image-y)))) | ||
272 | initrd-y := $(filter-out $(image-y), $(initrd-y)) | 273 | initrd-y := $(filter-out $(image-y), $(initrd-y)) |
273 | targets += $(image-y) $(initrd-y) | 274 | targets += $(image-y) $(initrd-y) |
274 | 275 | ||
@@ -283,10 +284,11 @@ $(obj)/zImage.initrd.%: vmlinux $(wrapperbits) | |||
283 | $(obj)/zImage.%: vmlinux $(wrapperbits) | 284 | $(obj)/zImage.%: vmlinux $(wrapperbits) |
284 | $(call if_changed,wrap,$*) | 285 | $(call if_changed,wrap,$*) |
285 | 286 | ||
286 | $(obj)/zImage-dtb.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts | 287 | # dtbImage% - a dtbImage is a zImage with an embedded device tree blob |
288 | $(obj)/dtbImage.initrd.%: vmlinux $(wrapperbits) $(dtstree)/%.dts | ||
287 | $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) | 289 | $(call if_changed,wrap,$*,$(dtstree)/$*.dts,,$(obj)/ramdisk.image.gz) |
288 | 290 | ||
289 | $(obj)/zImage-dtb.%: vmlinux $(wrapperbits) $(dtstree)/%.dts | 291 | $(obj)/dtbImage.%: vmlinux $(wrapperbits) $(dtstree)/%.dts |
290 | $(call if_changed,wrap,$*,$(dtstree)/$*.dts) | 292 | $(call if_changed,wrap,$*,$(dtstree)/$*.dts) |
291 | 293 | ||
292 | # This cannot be in the root of $(src) as the zImage rule always adds a $(obj) | 294 | # This cannot be in the root of $(src) as the zImage rule always adds a $(obj) |
diff --git a/arch/powerpc/boot/dts/mpc8377_mds.dts b/arch/powerpc/boot/dts/mpc8377_mds.dts index a3637fff73cc..49c05e97386c 100644 --- a/arch/powerpc/boot/dts/mpc8377_mds.dts +++ b/arch/powerpc/boot/dts/mpc8377_mds.dts | |||
@@ -47,6 +47,72 @@ | |||
47 | reg = <0x00000000 0x20000000>; // 512MB at 0 | 47 | reg = <0x00000000 0x20000000>; // 512MB at 0 |
48 | }; | 48 | }; |
49 | 49 | ||
50 | localbus@e0005000 { | ||
51 | #address-cells = <2>; | ||
52 | #size-cells = <1>; | ||
53 | compatible = "fsl,mpc8377-elbc", "fsl,elbc", "simple-bus"; | ||
54 | reg = <0xe0005000 0x1000>; | ||
55 | interrupts = <77 0x8>; | ||
56 | interrupt-parent = <&ipic>; | ||
57 | |||
58 | // booting from NOR flash | ||
59 | ranges = <0 0x0 0xfe000000 0x02000000 | ||
60 | 1 0x0 0xf8000000 0x00008000 | ||
61 | 3 0x0 0xe0600000 0x00008000>; | ||
62 | |||
63 | flash@0,0 { | ||
64 | #address-cells = <1>; | ||
65 | #size-cells = <1>; | ||
66 | compatible = "cfi-flash"; | ||
67 | reg = <0 0x0 0x2000000>; | ||
68 | bank-width = <2>; | ||
69 | device-width = <1>; | ||
70 | |||
71 | u-boot@0 { | ||
72 | reg = <0x0 0x100000>; | ||
73 | read-only; | ||
74 | }; | ||
75 | |||
76 | fs@100000 { | ||
77 | reg = <0x100000 0x800000>; | ||
78 | }; | ||
79 | |||
80 | kernel@1d00000 { | ||
81 | reg = <0x1d00000 0x200000>; | ||
82 | }; | ||
83 | |||
84 | dtb@1f00000 { | ||
85 | reg = <0x1f00000 0x100000>; | ||
86 | }; | ||
87 | }; | ||
88 | |||
89 | bcsr@1,0 { | ||
90 | reg = <1 0x0 0x8000>; | ||
91 | compatible = "fsl,mpc837xmds-bcsr"; | ||
92 | }; | ||
93 | |||
94 | nand@3,0 { | ||
95 | #address-cells = <1>; | ||
96 | #size-cells = <1>; | ||
97 | compatible = "fsl,mpc8377-fcm-nand", | ||
98 | "fsl,elbc-fcm-nand"; | ||
99 | reg = <3 0x0 0x8000>; | ||
100 | |||
101 | u-boot@0 { | ||
102 | reg = <0x0 0x100000>; | ||
103 | read-only; | ||
104 | }; | ||
105 | |||
106 | kernel@100000 { | ||
107 | reg = <0x100000 0x300000>; | ||
108 | }; | ||
109 | |||
110 | fs@400000 { | ||
111 | reg = <0x400000 0x1c00000>; | ||
112 | }; | ||
113 | }; | ||
114 | }; | ||
115 | |||
50 | soc@e0000000 { | 116 | soc@e0000000 { |
51 | #address-cells = <1>; | 117 | #address-cells = <1>; |
52 | #size-cells = <1>; | 118 | #size-cells = <1>; |
@@ -91,7 +157,6 @@ | |||
91 | mode = "cpu"; | 157 | mode = "cpu"; |
92 | }; | 158 | }; |
93 | 159 | ||
94 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
95 | usb@23000 { | 160 | usb@23000 { |
96 | compatible = "fsl-usb2-dr"; | 161 | compatible = "fsl-usb2-dr"; |
97 | reg = <0x23000 0x1000>; | 162 | reg = <0x23000 0x1000>; |
@@ -99,7 +164,8 @@ | |||
99 | #size-cells = <0>; | 164 | #size-cells = <0>; |
100 | interrupt-parent = <&ipic>; | 165 | interrupt-parent = <&ipic>; |
101 | interrupts = <38 0x8>; | 166 | interrupts = <38 0x8>; |
102 | phy_type = "utmi_wide"; | 167 | dr_mode = "host"; |
168 | phy_type = "ulpi"; | ||
103 | }; | 169 | }; |
104 | 170 | ||
105 | mdio@24520 { | 171 | mdio@24520 { |
diff --git a/arch/powerpc/boot/dts/mpc8378_mds.dts b/arch/powerpc/boot/dts/mpc8378_mds.dts index 533e9b06cc8f..1d6ea080ad73 100644 --- a/arch/powerpc/boot/dts/mpc8378_mds.dts +++ b/arch/powerpc/boot/dts/mpc8378_mds.dts | |||
@@ -47,6 +47,72 @@ | |||
47 | reg = <0x00000000 0x20000000>; // 512MB at 0 | 47 | reg = <0x00000000 0x20000000>; // 512MB at 0 |
48 | }; | 48 | }; |
49 | 49 | ||
50 | localbus@e0005000 { | ||
51 | #address-cells = <2>; | ||
52 | #size-cells = <1>; | ||
53 | compatible = "fsl,mpc8378-elbc", "fsl,elbc", "simple-bus"; | ||
54 | reg = <0xe0005000 0x1000>; | ||
55 | interrupts = <77 0x8>; | ||
56 | interrupt-parent = <&ipic>; | ||
57 | |||
58 | // booting from NOR flash | ||
59 | ranges = <0 0x0 0xfe000000 0x02000000 | ||
60 | 1 0x0 0xf8000000 0x00008000 | ||
61 | 3 0x0 0xe0600000 0x00008000>; | ||
62 | |||
63 | flash@0,0 { | ||
64 | #address-cells = <1>; | ||
65 | #size-cells = <1>; | ||
66 | compatible = "cfi-flash"; | ||
67 | reg = <0 0x0 0x2000000>; | ||
68 | bank-width = <2>; | ||
69 | device-width = <1>; | ||
70 | |||
71 | u-boot@0 { | ||
72 | reg = <0x0 0x100000>; | ||
73 | read-only; | ||
74 | }; | ||
75 | |||
76 | fs@100000 { | ||
77 | reg = <0x100000 0x800000>; | ||
78 | }; | ||
79 | |||
80 | kernel@1d00000 { | ||
81 | reg = <0x1d00000 0x200000>; | ||
82 | }; | ||
83 | |||
84 | dtb@1f00000 { | ||
85 | reg = <0x1f00000 0x100000>; | ||
86 | }; | ||
87 | }; | ||
88 | |||
89 | bcsr@1,0 { | ||
90 | reg = <1 0x0 0x8000>; | ||
91 | compatible = "fsl,mpc837xmds-bcsr"; | ||
92 | }; | ||
93 | |||
94 | nand@3,0 { | ||
95 | #address-cells = <1>; | ||
96 | #size-cells = <1>; | ||
97 | compatible = "fsl,mpc8378-fcm-nand", | ||
98 | "fsl,elbc-fcm-nand"; | ||
99 | reg = <3 0x0 0x8000>; | ||
100 | |||
101 | u-boot@0 { | ||
102 | reg = <0x0 0x100000>; | ||
103 | read-only; | ||
104 | }; | ||
105 | |||
106 | kernel@100000 { | ||
107 | reg = <0x100000 0x300000>; | ||
108 | }; | ||
109 | |||
110 | fs@400000 { | ||
111 | reg = <0x400000 0x1c00000>; | ||
112 | }; | ||
113 | }; | ||
114 | }; | ||
115 | |||
50 | soc@e0000000 { | 116 | soc@e0000000 { |
51 | #address-cells = <1>; | 117 | #address-cells = <1>; |
52 | #size-cells = <1>; | 118 | #size-cells = <1>; |
@@ -91,7 +157,6 @@ | |||
91 | mode = "cpu"; | 157 | mode = "cpu"; |
92 | }; | 158 | }; |
93 | 159 | ||
94 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
95 | usb@23000 { | 160 | usb@23000 { |
96 | compatible = "fsl-usb2-dr"; | 161 | compatible = "fsl-usb2-dr"; |
97 | reg = <0x23000 0x1000>; | 162 | reg = <0x23000 0x1000>; |
@@ -99,7 +164,8 @@ | |||
99 | #size-cells = <0>; | 164 | #size-cells = <0>; |
100 | interrupt-parent = <&ipic>; | 165 | interrupt-parent = <&ipic>; |
101 | interrupts = <38 0x8>; | 166 | interrupts = <38 0x8>; |
102 | phy_type = "utmi_wide"; | 167 | dr_mode = "host"; |
168 | phy_type = "ulpi"; | ||
103 | }; | 169 | }; |
104 | 170 | ||
105 | mdio@24520 { | 171 | mdio@24520 { |
diff --git a/arch/powerpc/boot/dts/mpc8379_mds.dts b/arch/powerpc/boot/dts/mpc8379_mds.dts index c270685bbde4..fdb4a9255b24 100644 --- a/arch/powerpc/boot/dts/mpc8379_mds.dts +++ b/arch/powerpc/boot/dts/mpc8379_mds.dts | |||
@@ -47,6 +47,72 @@ | |||
47 | reg = <0x00000000 0x20000000>; // 512MB at 0 | 47 | reg = <0x00000000 0x20000000>; // 512MB at 0 |
48 | }; | 48 | }; |
49 | 49 | ||
50 | localbus@e0005000 { | ||
51 | #address-cells = <2>; | ||
52 | #size-cells = <1>; | ||
53 | compatible = "fsl,mpc8379-elbc", "fsl,elbc", "simple-bus"; | ||
54 | reg = <0xe0005000 0x1000>; | ||
55 | interrupts = <77 0x8>; | ||
56 | interrupt-parent = <&ipic>; | ||
57 | |||
58 | // booting from NOR flash | ||
59 | ranges = <0 0x0 0xfe000000 0x02000000 | ||
60 | 1 0x0 0xf8000000 0x00008000 | ||
61 | 3 0x0 0xe0600000 0x00008000>; | ||
62 | |||
63 | flash@0,0 { | ||
64 | #address-cells = <1>; | ||
65 | #size-cells = <1>; | ||
66 | compatible = "cfi-flash"; | ||
67 | reg = <0 0x0 0x2000000>; | ||
68 | bank-width = <2>; | ||
69 | device-width = <1>; | ||
70 | |||
71 | u-boot@0 { | ||
72 | reg = <0x0 0x100000>; | ||
73 | read-only; | ||
74 | }; | ||
75 | |||
76 | fs@100000 { | ||
77 | reg = <0x100000 0x800000>; | ||
78 | }; | ||
79 | |||
80 | kernel@1d00000 { | ||
81 | reg = <0x1d00000 0x200000>; | ||
82 | }; | ||
83 | |||
84 | dtb@1f00000 { | ||
85 | reg = <0x1f00000 0x100000>; | ||
86 | }; | ||
87 | }; | ||
88 | |||
89 | bcsr@1,0 { | ||
90 | reg = <1 0x0 0x8000>; | ||
91 | compatible = "fsl,mpc837xmds-bcsr"; | ||
92 | }; | ||
93 | |||
94 | nand@3,0 { | ||
95 | #address-cells = <1>; | ||
96 | #size-cells = <1>; | ||
97 | compatible = "fsl,mpc8379-fcm-nand", | ||
98 | "fsl,elbc-fcm-nand"; | ||
99 | reg = <3 0x0 0x8000>; | ||
100 | |||
101 | u-boot@0 { | ||
102 | reg = <0x0 0x100000>; | ||
103 | read-only; | ||
104 | }; | ||
105 | |||
106 | kernel@100000 { | ||
107 | reg = <0x100000 0x300000>; | ||
108 | }; | ||
109 | |||
110 | fs@400000 { | ||
111 | reg = <0x400000 0x1c00000>; | ||
112 | }; | ||
113 | }; | ||
114 | }; | ||
115 | |||
50 | soc@e0000000 { | 116 | soc@e0000000 { |
51 | #address-cells = <1>; | 117 | #address-cells = <1>; |
52 | #size-cells = <1>; | 118 | #size-cells = <1>; |
@@ -91,7 +157,6 @@ | |||
91 | mode = "cpu"; | 157 | mode = "cpu"; |
92 | }; | 158 | }; |
93 | 159 | ||
94 | /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */ | ||
95 | usb@23000 { | 160 | usb@23000 { |
96 | compatible = "fsl-usb2-dr"; | 161 | compatible = "fsl-usb2-dr"; |
97 | reg = <0x23000 0x1000>; | 162 | reg = <0x23000 0x1000>; |
@@ -99,7 +164,8 @@ | |||
99 | #size-cells = <0>; | 164 | #size-cells = <0>; |
100 | interrupt-parent = <&ipic>; | 165 | interrupt-parent = <&ipic>; |
101 | interrupts = <38 0x8>; | 166 | interrupts = <38 0x8>; |
102 | phy_type = "utmi_wide"; | 167 | dr_mode = "host"; |
168 | phy_type = "ulpi"; | ||
103 | }; | 169 | }; |
104 | 170 | ||
105 | mdio@24520 { | 171 | mdio@24520 { |
diff --git a/arch/powerpc/boot/dts/sbc8548.dts b/arch/powerpc/boot/dts/sbc8548.dts index 14be38ad5d4b..b86e65d926c1 100644 --- a/arch/powerpc/boot/dts/sbc8548.dts +++ b/arch/powerpc/boot/dts/sbc8548.dts | |||
@@ -184,11 +184,17 @@ | |||
184 | cell-index = <0>; | 184 | cell-index = <0>; |
185 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; | 185 | interrupt-map-mask = <0xf800 0x0 0x0 0x7>; |
186 | interrupt-map = < | 186 | interrupt-map = < |
187 | /* IDSEL 0x01 (PCI-X slot) */ | 187 | /* IDSEL 0x01 (PCI-X slot) @66MHz */ |
188 | 0x0800 0x0 0x0 0x1 &mpic 0x0 0x1 | 188 | 0x0800 0x0 0x0 0x1 &mpic 0x2 0x1 |
189 | 0x0800 0x0 0x0 0x2 &mpic 0x1 0x1 | 189 | 0x0800 0x0 0x0 0x2 &mpic 0x3 0x1 |
190 | 0x0800 0x0 0x0 0x3 &mpic 0x2 0x1 | 190 | 0x0800 0x0 0x0 0x3 &mpic 0x4 0x1 |
191 | 0x0800 0x0 0x0 0x4 &mpic 0x3 0x1>; | 191 | 0x0800 0x0 0x0 0x4 &mpic 0x1 0x1 |
192 | |||
193 | /* IDSEL 0x11 (PCI, 3.3V 32bit) @33MHz */ | ||
194 | 0x8800 0x0 0x0 0x1 &mpic 0x2 0x1 | ||
195 | 0x8800 0x0 0x0 0x2 &mpic 0x3 0x1 | ||
196 | 0x8800 0x0 0x0 0x3 &mpic 0x4 0x1 | ||
197 | 0x8800 0x0 0x0 0x4 &mpic 0x1 0x1>; | ||
192 | 198 | ||
193 | interrupt-parent = <&mpic>; | 199 | interrupt-parent = <&mpic>; |
194 | interrupts = <0x18 0x2>; | 200 | interrupts = <0x18 0x2>; |
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index c3178155311b..d50e498a072b 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -191,10 +191,14 @@ ps3) | |||
191 | ksection=.kernel:vmlinux.bin | 191 | ksection=.kernel:vmlinux.bin |
192 | isection=.kernel:initrd | 192 | isection=.kernel:initrd |
193 | ;; | 193 | ;; |
194 | ep88xc|ep405|redboot*|ep8248e) | 194 | ep88xc|ep405|ep8248e) |
195 | platformo="$object/fixed-head.o $object/$platform.o" | 195 | platformo="$object/fixed-head.o $object/$platform.o" |
196 | binary=y | 196 | binary=y |
197 | ;; | 197 | ;; |
198 | adder875-redboot) | ||
199 | platformo="$object/fixed-head.o $object/redboot-8xx.o" | ||
200 | binary=y | ||
201 | ;; | ||
198 | esac | 202 | esac |
199 | 203 | ||
200 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" | 204 | vmz="$tmpdir/`basename \"$kernel\"`.$ext" |
diff --git a/arch/powerpc/configs/adder875-redboot_defconfig b/arch/powerpc/configs/adder875-redboot_defconfig deleted file mode 100644 index cab5f9b64567..000000000000 --- a/arch/powerpc/configs/adder875-redboot_defconfig +++ /dev/null | |||
@@ -1,798 +0,0 @@ | |||
1 | # | ||
2 | # Automatically generated make config: don't edit | ||
3 | # Linux kernel version: 2.6.24-rc6 | ||
4 | # Thu Jan 17 16:17:38 2008 | ||
5 | # | ||
6 | # CONFIG_PPC64 is not set | ||
7 | |||
8 | # | ||
9 | # Processor support | ||
10 | # | ||
11 | # CONFIG_6xx is not set | ||
12 | # CONFIG_PPC_85xx is not set | ||
13 | CONFIG_PPC_8xx=y | ||
14 | # CONFIG_40x is not set | ||
15 | # CONFIG_44x is not set | ||
16 | # CONFIG_E200 is not set | ||
17 | CONFIG_8xx=y | ||
18 | # CONFIG_PPC_MM_SLICES is not set | ||
19 | CONFIG_NOT_COHERENT_CACHE=y | ||
20 | CONFIG_PPC32=y | ||
21 | CONFIG_WORD_SIZE=32 | ||
22 | CONFIG_PPC_MERGE=y | ||
23 | CONFIG_MMU=y | ||
24 | CONFIG_GENERIC_CMOS_UPDATE=y | ||
25 | CONFIG_GENERIC_TIME=y | ||
26 | CONFIG_GENERIC_TIME_VSYSCALL=y | ||
27 | CONFIG_GENERIC_CLOCKEVENTS=y | ||
28 | CONFIG_GENERIC_HARDIRQS=y | ||
29 | CONFIG_IRQ_PER_CPU=y | ||
30 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | ||
31 | CONFIG_ARCH_HAS_ILOG2_U32=y | ||
32 | CONFIG_GENERIC_HWEIGHT=y | ||
33 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
34 | CONFIG_GENERIC_FIND_NEXT_BIT=y | ||
35 | # CONFIG_ARCH_NO_VIRT_TO_BUS is not set | ||
36 | CONFIG_PPC=y | ||
37 | CONFIG_EARLY_PRINTK=y | ||
38 | CONFIG_GENERIC_NVRAM=y | ||
39 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
40 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
41 | CONFIG_PPC_OF=y | ||
42 | CONFIG_OF=y | ||
43 | # CONFIG_PPC_UDBG_16550 is not set | ||
44 | # CONFIG_GENERIC_TBSYNC is not set | ||
45 | CONFIG_AUDIT_ARCH=y | ||
46 | CONFIG_GENERIC_BUG=y | ||
47 | # CONFIG_DEFAULT_UIMAGE is not set | ||
48 | CONFIG_REDBOOT=y | ||
49 | # CONFIG_PPC_DCR_NATIVE is not set | ||
50 | # CONFIG_PPC_DCR_MMIO is not set | ||
51 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | ||
52 | |||
53 | # | ||
54 | # General setup | ||
55 | # | ||
56 | CONFIG_EXPERIMENTAL=y | ||
57 | CONFIG_BROKEN_ON_SMP=y | ||
58 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
59 | CONFIG_LOCALVERSION="" | ||
60 | CONFIG_LOCALVERSION_AUTO=y | ||
61 | # CONFIG_SWAP is not set | ||
62 | CONFIG_SYSVIPC=y | ||
63 | CONFIG_SYSVIPC_SYSCTL=y | ||
64 | # CONFIG_POSIX_MQUEUE is not set | ||
65 | # CONFIG_BSD_PROCESS_ACCT is not set | ||
66 | # CONFIG_TASKSTATS is not set | ||
67 | # CONFIG_USER_NS is not set | ||
68 | # CONFIG_PID_NS is not set | ||
69 | # CONFIG_AUDIT is not set | ||
70 | # CONFIG_IKCONFIG is not set | ||
71 | CONFIG_LOG_BUF_SHIFT=14 | ||
72 | # CONFIG_CGROUPS is not set | ||
73 | CONFIG_FAIR_GROUP_SCHED=y | ||
74 | CONFIG_FAIR_USER_SCHED=y | ||
75 | # CONFIG_FAIR_CGROUP_SCHED is not set | ||
76 | CONFIG_SYSFS_DEPRECATED=y | ||
77 | # CONFIG_RELAY is not set | ||
78 | # CONFIG_BLK_DEV_INITRD is not set | ||
79 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
80 | CONFIG_SYSCTL=y | ||
81 | CONFIG_EMBEDDED=y | ||
82 | # CONFIG_SYSCTL_SYSCALL is not set | ||
83 | CONFIG_KALLSYMS=y | ||
84 | # CONFIG_KALLSYMS_ALL is not set | ||
85 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
86 | CONFIG_HOTPLUG=y | ||
87 | CONFIG_PRINTK=y | ||
88 | CONFIG_BUG=y | ||
89 | # CONFIG_ELF_CORE is not set | ||
90 | # CONFIG_BASE_FULL is not set | ||
91 | # CONFIG_FUTEX is not set | ||
92 | CONFIG_ANON_INODES=y | ||
93 | CONFIG_EPOLL=y | ||
94 | CONFIG_SIGNALFD=y | ||
95 | CONFIG_EVENTFD=y | ||
96 | CONFIG_SHMEM=y | ||
97 | # CONFIG_VM_EVENT_COUNTERS is not set | ||
98 | CONFIG_SLUB_DEBUG=y | ||
99 | # CONFIG_SLAB is not set | ||
100 | CONFIG_SLUB=y | ||
101 | # CONFIG_SLOB is not set | ||
102 | # CONFIG_TINY_SHMEM is not set | ||
103 | CONFIG_BASE_SMALL=1 | ||
104 | # CONFIG_MODULES is not set | ||
105 | CONFIG_BLOCK=y | ||
106 | # CONFIG_LBD is not set | ||
107 | # CONFIG_BLK_DEV_IO_TRACE is not set | ||
108 | # CONFIG_LSF is not set | ||
109 | # CONFIG_BLK_DEV_BSG is not set | ||
110 | |||
111 | # | ||
112 | # IO Schedulers | ||
113 | # | ||
114 | CONFIG_IOSCHED_NOOP=y | ||
115 | # CONFIG_IOSCHED_AS is not set | ||
116 | CONFIG_IOSCHED_DEADLINE=y | ||
117 | # CONFIG_IOSCHED_CFQ is not set | ||
118 | # CONFIG_DEFAULT_AS is not set | ||
119 | CONFIG_DEFAULT_DEADLINE=y | ||
120 | # CONFIG_DEFAULT_CFQ is not set | ||
121 | # CONFIG_DEFAULT_NOOP is not set | ||
122 | CONFIG_DEFAULT_IOSCHED="deadline" | ||
123 | |||
124 | # | ||
125 | # Platform support | ||
126 | # | ||
127 | # CONFIG_PPC_MPC52xx is not set | ||
128 | # CONFIG_PPC_MPC5200 is not set | ||
129 | # CONFIG_PPC_CELL is not set | ||
130 | # CONFIG_PPC_CELL_NATIVE is not set | ||
131 | CONFIG_CPM1=y | ||
132 | # CONFIG_MPC8XXFADS is not set | ||
133 | # CONFIG_MPC86XADS is not set | ||
134 | # CONFIG_MPC885ADS is not set | ||
135 | # CONFIG_PPC_EP88XC is not set | ||
136 | CONFIG_PPC_ADDER875=y | ||
137 | |||
138 | # | ||
139 | # MPC8xx CPM Options | ||
140 | # | ||
141 | |||
142 | # | ||
143 | # Generic MPC8xx Options | ||
144 | # | ||
145 | CONFIG_8xx_COPYBACK=y | ||
146 | # CONFIG_8xx_CPU6 is not set | ||
147 | CONFIG_8xx_CPU15=y | ||
148 | CONFIG_NO_UCODE_PATCH=y | ||
149 | # CONFIG_USB_SOF_UCODE_PATCH is not set | ||
150 | # CONFIG_I2C_SPI_UCODE_PATCH is not set | ||
151 | # CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set | ||
152 | # CONFIG_PQ2ADS is not set | ||
153 | # CONFIG_MPIC is not set | ||
154 | # CONFIG_MPIC_WEIRD is not set | ||
155 | # CONFIG_PPC_I8259 is not set | ||
156 | # CONFIG_PPC_RTAS is not set | ||
157 | # CONFIG_MMIO_NVRAM is not set | ||
158 | # CONFIG_PPC_MPC106 is not set | ||
159 | # CONFIG_PPC_970_NAP is not set | ||
160 | # CONFIG_PPC_INDIRECT_IO is not set | ||
161 | # CONFIG_GENERIC_IOMAP is not set | ||
162 | # CONFIG_CPU_FREQ is not set | ||
163 | # CONFIG_CPM2 is not set | ||
164 | CONFIG_PPC_CPM_NEW_BINDING=y | ||
165 | # CONFIG_FSL_ULI1575 is not set | ||
166 | CONFIG_CPM=y | ||
167 | |||
168 | # | ||
169 | # Kernel options | ||
170 | # | ||
171 | # CONFIG_HIGHMEM is not set | ||
172 | # CONFIG_TICK_ONESHOT is not set | ||
173 | # CONFIG_NO_HZ is not set | ||
174 | # CONFIG_HIGH_RES_TIMERS is not set | ||
175 | CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | ||
176 | # CONFIG_HZ_100 is not set | ||
177 | # CONFIG_HZ_250 is not set | ||
178 | # CONFIG_HZ_300 is not set | ||
179 | CONFIG_HZ_1000=y | ||
180 | CONFIG_HZ=1000 | ||
181 | CONFIG_PREEMPT_NONE=y | ||
182 | # CONFIG_PREEMPT_VOLUNTARY is not set | ||
183 | # CONFIG_PREEMPT is not set | ||
184 | CONFIG_BINFMT_ELF=y | ||
185 | # CONFIG_BINFMT_MISC is not set | ||
186 | # CONFIG_MATH_EMULATION is not set | ||
187 | # CONFIG_8XX_MINIMAL_FPEMU is not set | ||
188 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | ||
189 | CONFIG_ARCH_FLATMEM_ENABLE=y | ||
190 | CONFIG_ARCH_POPULATES_NODE_MAP=y | ||
191 | CONFIG_SELECT_MEMORY_MODEL=y | ||
192 | CONFIG_FLATMEM_MANUAL=y | ||
193 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
194 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
195 | CONFIG_FLATMEM=y | ||
196 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
197 | # CONFIG_SPARSEMEM_STATIC is not set | ||
198 | # CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set | ||
199 | CONFIG_SPLIT_PTLOCK_CPUS=4 | ||
200 | # CONFIG_RESOURCES_64BIT is not set | ||
201 | CONFIG_ZONE_DMA_FLAG=1 | ||
202 | CONFIG_BOUNCE=y | ||
203 | CONFIG_VIRT_TO_BUS=y | ||
204 | # CONFIG_PROC_DEVICETREE is not set | ||
205 | # CONFIG_CMDLINE_BOOL is not set | ||
206 | # CONFIG_PM is not set | ||
207 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
208 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
209 | # CONFIG_SECCOMP is not set | ||
210 | CONFIG_WANT_DEVICE_TREE=y | ||
211 | CONFIG_DEVICE_TREE="adder875-redboot.dts" | ||
212 | CONFIG_ISA_DMA_API=y | ||
213 | |||
214 | # | ||
215 | # Bus options | ||
216 | # | ||
217 | CONFIG_ZONE_DMA=y | ||
218 | CONFIG_FSL_SOC=y | ||
219 | # CONFIG_PCI is not set | ||
220 | # CONFIG_PCI_DOMAINS is not set | ||
221 | # CONFIG_PCI_SYSCALL is not set | ||
222 | # CONFIG_PCI_QSPAN is not set | ||
223 | # CONFIG_ARCH_SUPPORTS_MSI is not set | ||
224 | # CONFIG_PCCARD is not set | ||
225 | |||
226 | # | ||
227 | # Advanced setup | ||
228 | # | ||
229 | # CONFIG_ADVANCED_OPTIONS is not set | ||
230 | |||
231 | # | ||
232 | # Default settings for advanced configuration options are used | ||
233 | # | ||
234 | CONFIG_HIGHMEM_START=0xfe000000 | ||
235 | CONFIG_LOWMEM_SIZE=0x30000000 | ||
236 | CONFIG_KERNEL_START=0xc0000000 | ||
237 | CONFIG_TASK_SIZE=0x80000000 | ||
238 | CONFIG_CONSISTENT_START=0xfd000000 | ||
239 | CONFIG_CONSISTENT_SIZE=0x00200000 | ||
240 | CONFIG_BOOT_LOAD=0x00400000 | ||
241 | |||
242 | # | ||
243 | # Networking | ||
244 | # | ||
245 | CONFIG_NET=y | ||
246 | |||
247 | # | ||
248 | # Networking options | ||
249 | # | ||
250 | CONFIG_PACKET=y | ||
251 | # CONFIG_PACKET_MMAP is not set | ||
252 | CONFIG_UNIX=y | ||
253 | # CONFIG_NET_KEY is not set | ||
254 | CONFIG_INET=y | ||
255 | CONFIG_IP_MULTICAST=y | ||
256 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
257 | CONFIG_IP_FIB_HASH=y | ||
258 | CONFIG_IP_PNP=y | ||
259 | # CONFIG_IP_PNP_DHCP is not set | ||
260 | # CONFIG_IP_PNP_BOOTP is not set | ||
261 | # CONFIG_IP_PNP_RARP is not set | ||
262 | # CONFIG_NET_IPIP is not set | ||
263 | # CONFIG_NET_IPGRE is not set | ||
264 | # CONFIG_IP_MROUTE is not set | ||
265 | # CONFIG_ARPD is not set | ||
266 | CONFIG_SYN_COOKIES=y | ||
267 | # CONFIG_INET_AH is not set | ||
268 | # CONFIG_INET_ESP is not set | ||
269 | # CONFIG_INET_IPCOMP is not set | ||
270 | # CONFIG_INET_XFRM_TUNNEL is not set | ||
271 | # CONFIG_INET_TUNNEL is not set | ||
272 | # CONFIG_INET_XFRM_MODE_TRANSPORT is not set | ||
273 | # CONFIG_INET_XFRM_MODE_TUNNEL is not set | ||
274 | # CONFIG_INET_XFRM_MODE_BEET is not set | ||
275 | # CONFIG_INET_LRO is not set | ||
276 | CONFIG_INET_DIAG=y | ||
277 | CONFIG_INET_TCP_DIAG=y | ||
278 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
279 | CONFIG_TCP_CONG_CUBIC=y | ||
280 | CONFIG_DEFAULT_TCP_CONG="cubic" | ||
281 | # CONFIG_TCP_MD5SIG is not set | ||
282 | # CONFIG_IPV6 is not set | ||
283 | # CONFIG_INET6_XFRM_TUNNEL is not set | ||
284 | # CONFIG_INET6_TUNNEL is not set | ||
285 | # CONFIG_NETWORK_SECMARK is not set | ||
286 | # CONFIG_NETFILTER is not set | ||
287 | # CONFIG_IP_DCCP is not set | ||
288 | # CONFIG_IP_SCTP is not set | ||
289 | # CONFIG_TIPC is not set | ||
290 | # CONFIG_ATM is not set | ||
291 | # CONFIG_BRIDGE is not set | ||
292 | # CONFIG_VLAN_8021Q is not set | ||
293 | # CONFIG_DECNET is not set | ||
294 | # CONFIG_LLC2 is not set | ||
295 | # CONFIG_IPX is not set | ||
296 | # CONFIG_ATALK is not set | ||
297 | # CONFIG_X25 is not set | ||
298 | # CONFIG_LAPB is not set | ||
299 | # CONFIG_ECONET is not set | ||
300 | # CONFIG_WAN_ROUTER is not set | ||
301 | # CONFIG_NET_SCHED is not set | ||
302 | |||
303 | # | ||
304 | # Network testing | ||
305 | # | ||
306 | # CONFIG_NET_PKTGEN is not set | ||
307 | # CONFIG_HAMRADIO is not set | ||
308 | # CONFIG_IRDA is not set | ||
309 | # CONFIG_BT is not set | ||
310 | # CONFIG_AF_RXRPC is not set | ||
311 | |||
312 | # | ||
313 | # Wireless | ||
314 | # | ||
315 | # CONFIG_CFG80211 is not set | ||
316 | # CONFIG_WIRELESS_EXT is not set | ||
317 | # CONFIG_MAC80211 is not set | ||
318 | # CONFIG_IEEE80211 is not set | ||
319 | # CONFIG_RFKILL is not set | ||
320 | # CONFIG_NET_9P is not set | ||
321 | |||
322 | # | ||
323 | # Device Drivers | ||
324 | # | ||
325 | |||
326 | # | ||
327 | # Generic Driver Options | ||
328 | # | ||
329 | CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" | ||
330 | CONFIG_STANDALONE=y | ||
331 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
332 | # CONFIG_FW_LOADER is not set | ||
333 | # CONFIG_DEBUG_DRIVER is not set | ||
334 | # CONFIG_DEBUG_DEVRES is not set | ||
335 | # CONFIG_SYS_HYPERVISOR is not set | ||
336 | # CONFIG_CONNECTOR is not set | ||
337 | CONFIG_MTD=y | ||
338 | # CONFIG_MTD_DEBUG is not set | ||
339 | # CONFIG_MTD_CONCAT is not set | ||
340 | # CONFIG_MTD_PARTITIONS is not set | ||
341 | |||
342 | # | ||
343 | # User Modules And Translation Layers | ||
344 | # | ||
345 | CONFIG_MTD_CHAR=y | ||
346 | CONFIG_MTD_BLKDEVS=y | ||
347 | CONFIG_MTD_BLOCK=y | ||
348 | # CONFIG_FTL is not set | ||
349 | # CONFIG_NFTL is not set | ||
350 | # CONFIG_INFTL is not set | ||
351 | # CONFIG_RFD_FTL is not set | ||
352 | # CONFIG_SSFDC is not set | ||
353 | # CONFIG_MTD_OOPS is not set | ||
354 | |||
355 | # | ||
356 | # RAM/ROM/Flash chip drivers | ||
357 | # | ||
358 | CONFIG_MTD_CFI=y | ||
359 | # CONFIG_MTD_JEDECPROBE is not set | ||
360 | CONFIG_MTD_GEN_PROBE=y | ||
361 | # CONFIG_MTD_CFI_ADV_OPTIONS is not set | ||
362 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
363 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
364 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
365 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
366 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
367 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
368 | CONFIG_MTD_CFI_I1=y | ||
369 | CONFIG_MTD_CFI_I2=y | ||
370 | # CONFIG_MTD_CFI_I4 is not set | ||
371 | # CONFIG_MTD_CFI_I8 is not set | ||
372 | # CONFIG_MTD_CFI_INTELEXT is not set | ||
373 | CONFIG_MTD_CFI_AMDSTD=y | ||
374 | # CONFIG_MTD_CFI_STAA is not set | ||
375 | CONFIG_MTD_CFI_UTIL=y | ||
376 | # CONFIG_MTD_RAM is not set | ||
377 | # CONFIG_MTD_ROM is not set | ||
378 | # CONFIG_MTD_ABSENT is not set | ||
379 | |||
380 | # | ||
381 | # Mapping drivers for chip access | ||
382 | # | ||
383 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
384 | # CONFIG_MTD_PHYSMAP is not set | ||
385 | CONFIG_MTD_PHYSMAP_OF=y | ||
386 | # CONFIG_MTD_CFI_FLAGADM is not set | ||
387 | # CONFIG_MTD_PLATRAM is not set | ||
388 | |||
389 | # | ||
390 | # Self-contained MTD device drivers | ||
391 | # | ||
392 | # CONFIG_MTD_SLRAM is not set | ||
393 | # CONFIG_MTD_PHRAM is not set | ||
394 | # CONFIG_MTD_MTDRAM is not set | ||
395 | # CONFIG_MTD_BLOCK2MTD is not set | ||
396 | |||
397 | # | ||
398 | # Disk-On-Chip Device Drivers | ||
399 | # | ||
400 | # CONFIG_MTD_DOC2000 is not set | ||
401 | # CONFIG_MTD_DOC2001 is not set | ||
402 | # CONFIG_MTD_DOC2001PLUS is not set | ||
403 | # CONFIG_MTD_NAND is not set | ||
404 | # CONFIG_MTD_ONENAND is not set | ||
405 | |||
406 | # | ||
407 | # UBI - Unsorted block images | ||
408 | # | ||
409 | # CONFIG_MTD_UBI is not set | ||
410 | CONFIG_OF_DEVICE=y | ||
411 | # CONFIG_PARPORT is not set | ||
412 | # CONFIG_BLK_DEV is not set | ||
413 | # CONFIG_MISC_DEVICES is not set | ||
414 | # CONFIG_IDE is not set | ||
415 | |||
416 | # | ||
417 | # SCSI device support | ||
418 | # | ||
419 | # CONFIG_RAID_ATTRS is not set | ||
420 | # CONFIG_SCSI is not set | ||
421 | # CONFIG_SCSI_DMA is not set | ||
422 | # CONFIG_SCSI_NETLINK is not set | ||
423 | # CONFIG_ATA is not set | ||
424 | # CONFIG_MD is not set | ||
425 | # CONFIG_MACINTOSH_DRIVERS is not set | ||
426 | CONFIG_NETDEVICES=y | ||
427 | # CONFIG_NETDEVICES_MULTIQUEUE is not set | ||
428 | # CONFIG_DUMMY is not set | ||
429 | # CONFIG_BONDING is not set | ||
430 | # CONFIG_MACVLAN is not set | ||
431 | # CONFIG_EQUALIZER is not set | ||
432 | # CONFIG_TUN is not set | ||
433 | # CONFIG_VETH is not set | ||
434 | CONFIG_PHYLIB=y | ||
435 | |||
436 | # | ||
437 | # MII PHY device drivers | ||
438 | # | ||
439 | # CONFIG_MARVELL_PHY is not set | ||
440 | CONFIG_DAVICOM_PHY=y | ||
441 | # CONFIG_QSEMI_PHY is not set | ||
442 | # CONFIG_LXT_PHY is not set | ||
443 | # CONFIG_CICADA_PHY is not set | ||
444 | # CONFIG_VITESSE_PHY is not set | ||
445 | # CONFIG_SMSC_PHY is not set | ||
446 | # CONFIG_BROADCOM_PHY is not set | ||
447 | # CONFIG_ICPLUS_PHY is not set | ||
448 | # CONFIG_FIXED_PHY is not set | ||
449 | # CONFIG_MDIO_BITBANG is not set | ||
450 | CONFIG_NET_ETHERNET=y | ||
451 | CONFIG_MII=y | ||
452 | # CONFIG_IBM_NEW_EMAC_ZMII is not set | ||
453 | # CONFIG_IBM_NEW_EMAC_RGMII is not set | ||
454 | # CONFIG_IBM_NEW_EMAC_TAH is not set | ||
455 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | ||
456 | # CONFIG_B44 is not set | ||
457 | CONFIG_FS_ENET=y | ||
458 | # CONFIG_FS_ENET_HAS_SCC is not set | ||
459 | CONFIG_FS_ENET_HAS_FEC=y | ||
460 | CONFIG_FS_ENET_MDIO_FEC=y | ||
461 | # CONFIG_NETDEV_1000 is not set | ||
462 | # CONFIG_NETDEV_10000 is not set | ||
463 | |||
464 | # | ||
465 | # Wireless LAN | ||
466 | # | ||
467 | # CONFIG_WLAN_PRE80211 is not set | ||
468 | # CONFIG_WLAN_80211 is not set | ||
469 | # CONFIG_WAN is not set | ||
470 | # CONFIG_PPP is not set | ||
471 | # CONFIG_SLIP is not set | ||
472 | # CONFIG_SHAPER is not set | ||
473 | # CONFIG_NETCONSOLE is not set | ||
474 | # CONFIG_NETPOLL is not set | ||
475 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
476 | # CONFIG_ISDN is not set | ||
477 | # CONFIG_PHONE is not set | ||
478 | |||
479 | # | ||
480 | # Input device support | ||
481 | # | ||
482 | CONFIG_INPUT=y | ||
483 | # CONFIG_INPUT_FF_MEMLESS is not set | ||
484 | # CONFIG_INPUT_POLLDEV is not set | ||
485 | |||
486 | # | ||
487 | # Userland interfaces | ||
488 | # | ||
489 | CONFIG_INPUT_MOUSEDEV=y | ||
490 | CONFIG_INPUT_MOUSEDEV_PSAUX=y | ||
491 | CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 | ||
492 | CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 | ||
493 | # CONFIG_INPUT_JOYDEV is not set | ||
494 | # CONFIG_INPUT_EVDEV is not set | ||
495 | # CONFIG_INPUT_EVBUG is not set | ||
496 | |||
497 | # | ||
498 | # Input Device Drivers | ||
499 | # | ||
500 | CONFIG_INPUT_KEYBOARD=y | ||
501 | CONFIG_KEYBOARD_ATKBD=y | ||
502 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
503 | # CONFIG_KEYBOARD_LKKBD is not set | ||
504 | # CONFIG_KEYBOARD_XTKBD is not set | ||
505 | # CONFIG_KEYBOARD_NEWTON is not set | ||
506 | # CONFIG_KEYBOARD_STOWAWAY is not set | ||
507 | CONFIG_INPUT_MOUSE=y | ||
508 | CONFIG_MOUSE_PS2=y | ||
509 | CONFIG_MOUSE_PS2_ALPS=y | ||
510 | CONFIG_MOUSE_PS2_LOGIPS2PP=y | ||
511 | CONFIG_MOUSE_PS2_SYNAPTICS=y | ||
512 | CONFIG_MOUSE_PS2_LIFEBOOK=y | ||
513 | CONFIG_MOUSE_PS2_TRACKPOINT=y | ||
514 | # CONFIG_MOUSE_PS2_TOUCHKIT is not set | ||
515 | # CONFIG_MOUSE_SERIAL is not set | ||
516 | # CONFIG_MOUSE_VSXXXAA is not set | ||
517 | # CONFIG_INPUT_JOYSTICK is not set | ||
518 | # CONFIG_INPUT_TABLET is not set | ||
519 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
520 | # CONFIG_INPUT_MISC is not set | ||
521 | |||
522 | # | ||
523 | # Hardware I/O ports | ||
524 | # | ||
525 | CONFIG_SERIO=y | ||
526 | CONFIG_SERIO_I8042=y | ||
527 | CONFIG_SERIO_SERPORT=y | ||
528 | CONFIG_SERIO_LIBPS2=y | ||
529 | # CONFIG_SERIO_RAW is not set | ||
530 | # CONFIG_GAMEPORT is not set | ||
531 | |||
532 | # | ||
533 | # Character devices | ||
534 | # | ||
535 | # CONFIG_VT is not set | ||
536 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
537 | |||
538 | # | ||
539 | # Serial drivers | ||
540 | # | ||
541 | # CONFIG_SERIAL_8250 is not set | ||
542 | |||
543 | # | ||
544 | # Non-8250 serial port support | ||
545 | # | ||
546 | # CONFIG_SERIAL_UARTLITE is not set | ||
547 | CONFIG_SERIAL_CORE=y | ||
548 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
549 | CONFIG_SERIAL_CPM=y | ||
550 | CONFIG_SERIAL_CPM_CONSOLE=y | ||
551 | # CONFIG_SERIAL_CPM_SCC1 is not set | ||
552 | # CONFIG_SERIAL_CPM_SCC2 is not set | ||
553 | # CONFIG_SERIAL_CPM_SCC3 is not set | ||
554 | # CONFIG_SERIAL_CPM_SCC4 is not set | ||
555 | CONFIG_SERIAL_CPM_SMC1=y | ||
556 | CONFIG_SERIAL_CPM_SMC2=y | ||
557 | CONFIG_UNIX98_PTYS=y | ||
558 | # CONFIG_LEGACY_PTYS is not set | ||
559 | # CONFIG_IPMI_HANDLER is not set | ||
560 | CONFIG_HW_RANDOM=y | ||
561 | # CONFIG_NVRAM is not set | ||
562 | CONFIG_GEN_RTC=y | ||
563 | # CONFIG_GEN_RTC_X is not set | ||
564 | # CONFIG_R3964 is not set | ||
565 | # CONFIG_RAW_DRIVER is not set | ||
566 | # CONFIG_TCG_TPM is not set | ||
567 | # CONFIG_I2C is not set | ||
568 | |||
569 | # | ||
570 | # SPI support | ||
571 | # | ||
572 | # CONFIG_SPI is not set | ||
573 | # CONFIG_SPI_MASTER is not set | ||
574 | # CONFIG_W1 is not set | ||
575 | # CONFIG_POWER_SUPPLY is not set | ||
576 | # CONFIG_HWMON is not set | ||
577 | # CONFIG_WATCHDOG is not set | ||
578 | |||
579 | # | ||
580 | # Sonics Silicon Backplane | ||
581 | # | ||
582 | CONFIG_SSB_POSSIBLE=y | ||
583 | # CONFIG_SSB is not set | ||
584 | |||
585 | # | ||
586 | # Multifunction device drivers | ||
587 | # | ||
588 | # CONFIG_MFD_SM501 is not set | ||
589 | |||
590 | # | ||
591 | # Multimedia devices | ||
592 | # | ||
593 | # CONFIG_VIDEO_DEV is not set | ||
594 | # CONFIG_DVB_CORE is not set | ||
595 | CONFIG_DAB=y | ||
596 | |||
597 | # | ||
598 | # Graphics support | ||
599 | # | ||
600 | # CONFIG_VGASTATE is not set | ||
601 | CONFIG_VIDEO_OUTPUT_CONTROL=y | ||
602 | # CONFIG_FB is not set | ||
603 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
604 | |||
605 | # | ||
606 | # Display device support | ||
607 | # | ||
608 | # CONFIG_DISPLAY_SUPPORT is not set | ||
609 | |||
610 | # | ||
611 | # Sound | ||
612 | # | ||
613 | # CONFIG_SOUND is not set | ||
614 | # CONFIG_HID_SUPPORT is not set | ||
615 | # CONFIG_USB_SUPPORT is not set | ||
616 | # CONFIG_MMC is not set | ||
617 | # CONFIG_NEW_LEDS is not set | ||
618 | # CONFIG_EDAC is not set | ||
619 | # CONFIG_RTC_CLASS is not set | ||
620 | |||
621 | # | ||
622 | # Userspace I/O | ||
623 | # | ||
624 | # CONFIG_UIO is not set | ||
625 | |||
626 | # | ||
627 | # File systems | ||
628 | # | ||
629 | # CONFIG_EXT2_FS is not set | ||
630 | # CONFIG_EXT3_FS is not set | ||
631 | # CONFIG_EXT4DEV_FS is not set | ||
632 | # CONFIG_REISERFS_FS is not set | ||
633 | # CONFIG_JFS_FS is not set | ||
634 | # CONFIG_FS_POSIX_ACL is not set | ||
635 | # CONFIG_XFS_FS is not set | ||
636 | # CONFIG_GFS2_FS is not set | ||
637 | # CONFIG_OCFS2_FS is not set | ||
638 | # CONFIG_MINIX_FS is not set | ||
639 | # CONFIG_ROMFS_FS is not set | ||
640 | # CONFIG_INOTIFY is not set | ||
641 | # CONFIG_QUOTA is not set | ||
642 | # CONFIG_DNOTIFY is not set | ||
643 | # CONFIG_AUTOFS_FS is not set | ||
644 | # CONFIG_AUTOFS4_FS is not set | ||
645 | # CONFIG_FUSE_FS is not set | ||
646 | |||
647 | # | ||
648 | # CD-ROM/DVD Filesystems | ||
649 | # | ||
650 | # CONFIG_ISO9660_FS is not set | ||
651 | # CONFIG_UDF_FS is not set | ||
652 | |||
653 | # | ||
654 | # DOS/FAT/NT Filesystems | ||
655 | # | ||
656 | # CONFIG_MSDOS_FS is not set | ||
657 | # CONFIG_VFAT_FS is not set | ||
658 | # CONFIG_NTFS_FS is not set | ||
659 | |||
660 | # | ||
661 | # Pseudo filesystems | ||
662 | # | ||
663 | CONFIG_PROC_FS=y | ||
664 | # CONFIG_PROC_KCORE is not set | ||
665 | CONFIG_PROC_SYSCTL=y | ||
666 | CONFIG_SYSFS=y | ||
667 | CONFIG_TMPFS=y | ||
668 | # CONFIG_TMPFS_POSIX_ACL is not set | ||
669 | # CONFIG_HUGETLB_PAGE is not set | ||
670 | # CONFIG_CONFIGFS_FS is not set | ||
671 | |||
672 | # | ||
673 | # Miscellaneous filesystems | ||
674 | # | ||
675 | # CONFIG_ADFS_FS is not set | ||
676 | # CONFIG_AFFS_FS is not set | ||
677 | # CONFIG_HFS_FS is not set | ||
678 | # CONFIG_HFSPLUS_FS is not set | ||
679 | # CONFIG_BEFS_FS is not set | ||
680 | # CONFIG_BFS_FS is not set | ||
681 | # CONFIG_EFS_FS is not set | ||
682 | # CONFIG_JFFS2_FS is not set | ||
683 | CONFIG_CRAMFS=y | ||
684 | # CONFIG_VXFS_FS is not set | ||
685 | # CONFIG_HPFS_FS is not set | ||
686 | # CONFIG_QNX4FS_FS is not set | ||
687 | # CONFIG_SYSV_FS is not set | ||
688 | # CONFIG_UFS_FS is not set | ||
689 | CONFIG_NETWORK_FILESYSTEMS=y | ||
690 | CONFIG_NFS_FS=y | ||
691 | CONFIG_NFS_V3=y | ||
692 | # CONFIG_NFS_V3_ACL is not set | ||
693 | # CONFIG_NFS_V4 is not set | ||
694 | # CONFIG_NFS_DIRECTIO is not set | ||
695 | # CONFIG_NFSD is not set | ||
696 | CONFIG_ROOT_NFS=y | ||
697 | CONFIG_LOCKD=y | ||
698 | CONFIG_LOCKD_V4=y | ||
699 | CONFIG_NFS_COMMON=y | ||
700 | CONFIG_SUNRPC=y | ||
701 | # CONFIG_SUNRPC_BIND34 is not set | ||
702 | # CONFIG_RPCSEC_GSS_KRB5 is not set | ||
703 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
704 | # CONFIG_SMB_FS is not set | ||
705 | # CONFIG_CIFS is not set | ||
706 | # CONFIG_NCP_FS is not set | ||
707 | # CONFIG_CODA_FS is not set | ||
708 | # CONFIG_AFS_FS is not set | ||
709 | |||
710 | # | ||
711 | # Partition Types | ||
712 | # | ||
713 | CONFIG_PARTITION_ADVANCED=y | ||
714 | # CONFIG_ACORN_PARTITION is not set | ||
715 | # CONFIG_OSF_PARTITION is not set | ||
716 | # CONFIG_AMIGA_PARTITION is not set | ||
717 | # CONFIG_ATARI_PARTITION is not set | ||
718 | # CONFIG_MAC_PARTITION is not set | ||
719 | CONFIG_MSDOS_PARTITION=y | ||
720 | # CONFIG_BSD_DISKLABEL is not set | ||
721 | # CONFIG_MINIX_SUBPARTITION is not set | ||
722 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
723 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
724 | # CONFIG_LDM_PARTITION is not set | ||
725 | # CONFIG_SGI_PARTITION is not set | ||
726 | # CONFIG_ULTRIX_PARTITION is not set | ||
727 | # CONFIG_SUN_PARTITION is not set | ||
728 | # CONFIG_KARMA_PARTITION is not set | ||
729 | # CONFIG_EFI_PARTITION is not set | ||
730 | # CONFIG_SYSV68_PARTITION is not set | ||
731 | # CONFIG_NLS is not set | ||
732 | # CONFIG_DLM is not set | ||
733 | # CONFIG_UCC_SLOW is not set | ||
734 | |||
735 | # | ||
736 | # Library routines | ||
737 | # | ||
738 | # CONFIG_CRC_CCITT is not set | ||
739 | # CONFIG_CRC16 is not set | ||
740 | # CONFIG_CRC_ITU_T is not set | ||
741 | # CONFIG_CRC32 is not set | ||
742 | # CONFIG_CRC7 is not set | ||
743 | # CONFIG_LIBCRC32C is not set | ||
744 | CONFIG_ZLIB_INFLATE=y | ||
745 | CONFIG_HAS_IOMEM=y | ||
746 | CONFIG_HAS_IOPORT=y | ||
747 | CONFIG_HAS_DMA=y | ||
748 | CONFIG_INSTRUMENTATION=y | ||
749 | # CONFIG_PROFILING is not set | ||
750 | # CONFIG_MARKERS is not set | ||
751 | |||
752 | # | ||
753 | # Kernel hacking | ||
754 | # | ||
755 | # CONFIG_PRINTK_TIME is not set | ||
756 | CONFIG_ENABLE_WARN_DEPRECATED=y | ||
757 | CONFIG_ENABLE_MUST_CHECK=y | ||
758 | CONFIG_MAGIC_SYSRQ=y | ||
759 | # CONFIG_UNUSED_SYMBOLS is not set | ||
760 | # CONFIG_DEBUG_FS is not set | ||
761 | # CONFIG_HEADERS_CHECK is not set | ||
762 | CONFIG_DEBUG_KERNEL=y | ||
763 | # CONFIG_DEBUG_SHIRQ is not set | ||
764 | CONFIG_DETECT_SOFTLOCKUP=y | ||
765 | CONFIG_SCHED_DEBUG=y | ||
766 | # CONFIG_SCHEDSTATS is not set | ||
767 | # CONFIG_TIMER_STATS is not set | ||
768 | # CONFIG_SLUB_DEBUG_ON is not set | ||
769 | # CONFIG_DEBUG_SPINLOCK is not set | ||
770 | # CONFIG_DEBUG_MUTEXES is not set | ||
771 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
772 | # CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set | ||
773 | # CONFIG_DEBUG_KOBJECT is not set | ||
774 | CONFIG_DEBUG_BUGVERBOSE=y | ||
775 | CONFIG_DEBUG_INFO=y | ||
776 | # CONFIG_DEBUG_VM is not set | ||
777 | # CONFIG_DEBUG_LIST is not set | ||
778 | # CONFIG_DEBUG_SG is not set | ||
779 | CONFIG_FORCED_INLINING=y | ||
780 | # CONFIG_BOOT_PRINTK_DELAY is not set | ||
781 | # CONFIG_FAULT_INJECTION is not set | ||
782 | # CONFIG_SAMPLES is not set | ||
783 | # CONFIG_DEBUG_STACKOVERFLOW is not set | ||
784 | # CONFIG_DEBUG_STACK_USAGE is not set | ||
785 | # CONFIG_DEBUG_PAGEALLOC is not set | ||
786 | # CONFIG_DEBUGGER is not set | ||
787 | # CONFIG_BDI_SWITCH is not set | ||
788 | # CONFIG_PPC_EARLY_DEBUG is not set | ||
789 | |||
790 | # | ||
791 | # Security options | ||
792 | # | ||
793 | # CONFIG_KEYS is not set | ||
794 | # CONFIG_SECURITY is not set | ||
795 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | ||
796 | # CONFIG_CRYPTO is not set | ||
797 | # CONFIG_PPC_CLOCK is not set | ||
798 | CONFIG_PPC_LIB_RHEAP=y | ||
diff --git a/arch/powerpc/configs/adder875-uboot_defconfig b/arch/powerpc/configs/adder875_defconfig index 1faf7ef59a23..a3cc94a2ff06 100644 --- a/arch/powerpc/configs/adder875-uboot_defconfig +++ b/arch/powerpc/configs/adder875_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-rc6 | 3 | # Linux kernel version: 2.6.25-rc2 |
4 | # Thu Jan 17 16:17:18 2008 | 4 | # Wed Feb 20 12:26:07 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -26,6 +26,7 @@ CONFIG_GENERIC_TIME=y | |||
26 | CONFIG_GENERIC_TIME_VSYSCALL=y | 26 | CONFIG_GENERIC_TIME_VSYSCALL=y |
27 | CONFIG_GENERIC_CLOCKEVENTS=y | 27 | CONFIG_GENERIC_CLOCKEVENTS=y |
28 | CONFIG_GENERIC_HARDIRQS=y | 28 | CONFIG_GENERIC_HARDIRQS=y |
29 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
29 | CONFIG_IRQ_PER_CPU=y | 30 | CONFIG_IRQ_PER_CPU=y |
30 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 31 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
31 | CONFIG_ARCH_HAS_ILOG2_U32=y | 32 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -64,17 +65,18 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
64 | # CONFIG_POSIX_MQUEUE is not set | 65 | # CONFIG_POSIX_MQUEUE is not set |
65 | # CONFIG_BSD_PROCESS_ACCT is not set | 66 | # CONFIG_BSD_PROCESS_ACCT is not set |
66 | # CONFIG_TASKSTATS is not set | 67 | # CONFIG_TASKSTATS is not set |
67 | # CONFIG_USER_NS is not set | ||
68 | # CONFIG_PID_NS is not set | ||
69 | # CONFIG_AUDIT is not set | 68 | # CONFIG_AUDIT is not set |
70 | # CONFIG_IKCONFIG is not set | 69 | # CONFIG_IKCONFIG is not set |
71 | CONFIG_LOG_BUF_SHIFT=14 | 70 | CONFIG_LOG_BUF_SHIFT=14 |
72 | # CONFIG_CGROUPS is not set | 71 | # CONFIG_CGROUPS is not set |
72 | CONFIG_GROUP_SCHED=y | ||
73 | CONFIG_FAIR_GROUP_SCHED=y | 73 | CONFIG_FAIR_GROUP_SCHED=y |
74 | CONFIG_FAIR_USER_SCHED=y | 74 | # CONFIG_RT_GROUP_SCHED is not set |
75 | # CONFIG_FAIR_CGROUP_SCHED is not set | 75 | CONFIG_USER_SCHED=y |
76 | # CONFIG_CGROUP_SCHED is not set | ||
76 | CONFIG_SYSFS_DEPRECATED=y | 77 | CONFIG_SYSFS_DEPRECATED=y |
77 | # CONFIG_RELAY is not set | 78 | # CONFIG_RELAY is not set |
79 | # CONFIG_NAMESPACES is not set | ||
78 | # CONFIG_BLK_DEV_INITRD is not set | 80 | # CONFIG_BLK_DEV_INITRD is not set |
79 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 81 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
80 | CONFIG_SYSCTL=y | 82 | CONFIG_SYSCTL=y |
@@ -87,11 +89,13 @@ CONFIG_HOTPLUG=y | |||
87 | CONFIG_PRINTK=y | 89 | CONFIG_PRINTK=y |
88 | CONFIG_BUG=y | 90 | CONFIG_BUG=y |
89 | # CONFIG_ELF_CORE is not set | 91 | # CONFIG_ELF_CORE is not set |
92 | CONFIG_COMPAT_BRK=y | ||
90 | # CONFIG_BASE_FULL is not set | 93 | # CONFIG_BASE_FULL is not set |
91 | # CONFIG_FUTEX is not set | 94 | # CONFIG_FUTEX is not set |
92 | CONFIG_ANON_INODES=y | 95 | CONFIG_ANON_INODES=y |
93 | CONFIG_EPOLL=y | 96 | CONFIG_EPOLL=y |
94 | CONFIG_SIGNALFD=y | 97 | CONFIG_SIGNALFD=y |
98 | CONFIG_TIMERFD=y | ||
95 | CONFIG_EVENTFD=y | 99 | CONFIG_EVENTFD=y |
96 | CONFIG_SHMEM=y | 100 | CONFIG_SHMEM=y |
97 | # CONFIG_VM_EVENT_COUNTERS is not set | 101 | # CONFIG_VM_EVENT_COUNTERS is not set |
@@ -99,6 +103,12 @@ CONFIG_SLUB_DEBUG=y | |||
99 | # CONFIG_SLAB is not set | 103 | # CONFIG_SLAB is not set |
100 | CONFIG_SLUB=y | 104 | CONFIG_SLUB=y |
101 | # CONFIG_SLOB is not set | 105 | # CONFIG_SLOB is not set |
106 | # CONFIG_PROFILING is not set | ||
107 | # CONFIG_MARKERS is not set | ||
108 | CONFIG_HAVE_OPROFILE=y | ||
109 | CONFIG_HAVE_KPROBES=y | ||
110 | CONFIG_PROC_PAGE_MONITOR=y | ||
111 | CONFIG_SLABINFO=y | ||
102 | # CONFIG_TINY_SHMEM is not set | 112 | # CONFIG_TINY_SHMEM is not set |
103 | CONFIG_BASE_SMALL=1 | 113 | CONFIG_BASE_SMALL=1 |
104 | # CONFIG_MODULES is not set | 114 | # CONFIG_MODULES is not set |
@@ -120,12 +130,14 @@ CONFIG_DEFAULT_DEADLINE=y | |||
120 | # CONFIG_DEFAULT_CFQ is not set | 130 | # CONFIG_DEFAULT_CFQ is not set |
121 | # CONFIG_DEFAULT_NOOP is not set | 131 | # CONFIG_DEFAULT_NOOP is not set |
122 | CONFIG_DEFAULT_IOSCHED="deadline" | 132 | CONFIG_DEFAULT_IOSCHED="deadline" |
133 | CONFIG_CLASSIC_RCU=y | ||
134 | # CONFIG_PREEMPT_RCU is not set | ||
123 | 135 | ||
124 | # | 136 | # |
125 | # Platform support | 137 | # Platform support |
126 | # | 138 | # |
127 | # CONFIG_PPC_MPC52xx is not set | 139 | # CONFIG_PPC_MPC512x is not set |
128 | # CONFIG_PPC_MPC5200 is not set | 140 | # CONFIG_PPC_MPC5121 is not set |
129 | # CONFIG_PPC_CELL is not set | 141 | # CONFIG_PPC_CELL is not set |
130 | # CONFIG_PPC_CELL_NATIVE is not set | 142 | # CONFIG_PPC_CELL_NATIVE is not set |
131 | CONFIG_CPM1=y | 143 | CONFIG_CPM1=y |
@@ -150,6 +162,7 @@ CONFIG_NO_UCODE_PATCH=y | |||
150 | # CONFIG_I2C_SPI_UCODE_PATCH is not set | 162 | # CONFIG_I2C_SPI_UCODE_PATCH is not set |
151 | # CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set | 163 | # CONFIG_I2C_SPI_SMC1_UCODE_PATCH is not set |
152 | # CONFIG_PQ2ADS is not set | 164 | # CONFIG_PQ2ADS is not set |
165 | # CONFIG_IPIC is not set | ||
153 | # CONFIG_MPIC is not set | 166 | # CONFIG_MPIC is not set |
154 | # CONFIG_MPIC_WEIRD is not set | 167 | # CONFIG_MPIC_WEIRD is not set |
155 | # CONFIG_PPC_I8259 is not set | 168 | # CONFIG_PPC_I8259 is not set |
@@ -160,7 +173,6 @@ CONFIG_NO_UCODE_PATCH=y | |||
160 | # CONFIG_PPC_INDIRECT_IO is not set | 173 | # CONFIG_PPC_INDIRECT_IO is not set |
161 | # CONFIG_GENERIC_IOMAP is not set | 174 | # CONFIG_GENERIC_IOMAP is not set |
162 | # CONFIG_CPU_FREQ is not set | 175 | # CONFIG_CPU_FREQ is not set |
163 | # CONFIG_CPM2 is not set | ||
164 | CONFIG_PPC_CPM_NEW_BINDING=y | 176 | CONFIG_PPC_CPM_NEW_BINDING=y |
165 | # CONFIG_FSL_ULI1575 is not set | 177 | # CONFIG_FSL_ULI1575 is not set |
166 | CONFIG_CPM=y | 178 | CONFIG_CPM=y |
@@ -178,14 +190,19 @@ CONFIG_GENERIC_CLOCKEVENTS_BUILD=y | |||
178 | # CONFIG_HZ_300 is not set | 190 | # CONFIG_HZ_300 is not set |
179 | CONFIG_HZ_1000=y | 191 | CONFIG_HZ_1000=y |
180 | CONFIG_HZ=1000 | 192 | CONFIG_HZ=1000 |
193 | # CONFIG_SCHED_HRTICK is not set | ||
181 | CONFIG_PREEMPT_NONE=y | 194 | CONFIG_PREEMPT_NONE=y |
182 | # CONFIG_PREEMPT_VOLUNTARY is not set | 195 | # CONFIG_PREEMPT_VOLUNTARY is not set |
183 | # CONFIG_PREEMPT is not set | 196 | # CONFIG_PREEMPT is not set |
197 | CONFIG_RCU_TRACE=y | ||
184 | CONFIG_BINFMT_ELF=y | 198 | CONFIG_BINFMT_ELF=y |
185 | # CONFIG_BINFMT_MISC is not set | 199 | # CONFIG_BINFMT_MISC is not set |
186 | # CONFIG_MATH_EMULATION is not set | 200 | # CONFIG_MATH_EMULATION is not set |
187 | # CONFIG_8XX_MINIMAL_FPEMU is not set | 201 | # CONFIG_8XX_MINIMAL_FPEMU is not set |
202 | # CONFIG_IOMMU_HELPER is not set | ||
188 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 203 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
204 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
205 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
189 | CONFIG_ARCH_FLATMEM_ENABLE=y | 206 | CONFIG_ARCH_FLATMEM_ENABLE=y |
190 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 207 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
191 | CONFIG_SELECT_MEMORY_MODEL=y | 208 | CONFIG_SELECT_MEMORY_MODEL=y |
@@ -204,11 +221,7 @@ CONFIG_VIRT_TO_BUS=y | |||
204 | # CONFIG_PROC_DEVICETREE is not set | 221 | # CONFIG_PROC_DEVICETREE is not set |
205 | # CONFIG_CMDLINE_BOOL is not set | 222 | # CONFIG_CMDLINE_BOOL is not set |
206 | # CONFIG_PM is not set | 223 | # CONFIG_PM is not set |
207 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
208 | CONFIG_HIBERNATION_UP_POSSIBLE=y | ||
209 | # CONFIG_SECCOMP is not set | 224 | # CONFIG_SECCOMP is not set |
210 | CONFIG_WANT_DEVICE_TREE=y | ||
211 | CONFIG_DEVICE_TREE="adder875-uboot.dts" | ||
212 | CONFIG_ISA_DMA_API=y | 225 | CONFIG_ISA_DMA_API=y |
213 | 226 | ||
214 | # | 227 | # |
@@ -305,6 +318,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
305 | # | 318 | # |
306 | # CONFIG_NET_PKTGEN is not set | 319 | # CONFIG_NET_PKTGEN is not set |
307 | # CONFIG_HAMRADIO is not set | 320 | # CONFIG_HAMRADIO is not set |
321 | # CONFIG_CAN is not set | ||
308 | # CONFIG_IRDA is not set | 322 | # CONFIG_IRDA is not set |
309 | # CONFIG_BT is not set | 323 | # CONFIG_BT is not set |
310 | # CONFIG_AF_RXRPC is not set | 324 | # CONFIG_AF_RXRPC is not set |
@@ -411,6 +425,7 @@ CONFIG_OF_DEVICE=y | |||
411 | # CONFIG_PARPORT is not set | 425 | # CONFIG_PARPORT is not set |
412 | # CONFIG_BLK_DEV is not set | 426 | # CONFIG_BLK_DEV is not set |
413 | # CONFIG_MISC_DEVICES is not set | 427 | # CONFIG_MISC_DEVICES is not set |
428 | CONFIG_HAVE_IDE=y | ||
414 | # CONFIG_IDE is not set | 429 | # CONFIG_IDE is not set |
415 | 430 | ||
416 | # | 431 | # |
@@ -445,6 +460,7 @@ CONFIG_DAVICOM_PHY=y | |||
445 | # CONFIG_SMSC_PHY is not set | 460 | # CONFIG_SMSC_PHY is not set |
446 | # CONFIG_BROADCOM_PHY is not set | 461 | # CONFIG_BROADCOM_PHY is not set |
447 | # CONFIG_ICPLUS_PHY is not set | 462 | # CONFIG_ICPLUS_PHY is not set |
463 | # CONFIG_REALTEK_PHY is not set | ||
448 | # CONFIG_FIXED_PHY is not set | 464 | # CONFIG_FIXED_PHY is not set |
449 | # CONFIG_MDIO_BITBANG is not set | 465 | # CONFIG_MDIO_BITBANG is not set |
450 | CONFIG_NET_ETHERNET=y | 466 | CONFIG_NET_ETHERNET=y |
@@ -469,7 +485,6 @@ CONFIG_FS_ENET_MDIO_FEC=y | |||
469 | # CONFIG_WAN is not set | 485 | # CONFIG_WAN is not set |
470 | # CONFIG_PPP is not set | 486 | # CONFIG_PPP is not set |
471 | # CONFIG_SLIP is not set | 487 | # CONFIG_SLIP is not set |
472 | # CONFIG_SHAPER is not set | ||
473 | # CONFIG_NETCONSOLE is not set | 488 | # CONFIG_NETCONSOLE is not set |
474 | # CONFIG_NETPOLL is not set | 489 | # CONFIG_NETPOLL is not set |
475 | # CONFIG_NET_POLL_CONTROLLER is not set | 490 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -574,6 +589,7 @@ CONFIG_GEN_RTC=y | |||
574 | # CONFIG_W1 is not set | 589 | # CONFIG_W1 is not set |
575 | # CONFIG_POWER_SUPPLY is not set | 590 | # CONFIG_POWER_SUPPLY is not set |
576 | # CONFIG_HWMON is not set | 591 | # CONFIG_HWMON is not set |
592 | CONFIG_THERMAL=y | ||
577 | # CONFIG_WATCHDOG is not set | 593 | # CONFIG_WATCHDOG is not set |
578 | 594 | ||
579 | # | 595 | # |
@@ -614,6 +630,7 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y | |||
614 | # CONFIG_HID_SUPPORT is not set | 630 | # CONFIG_HID_SUPPORT is not set |
615 | # CONFIG_USB_SUPPORT is not set | 631 | # CONFIG_USB_SUPPORT is not set |
616 | # CONFIG_MMC is not set | 632 | # CONFIG_MMC is not set |
633 | # CONFIG_MEMSTICK is not set | ||
617 | # CONFIG_NEW_LEDS is not set | 634 | # CONFIG_NEW_LEDS is not set |
618 | # CONFIG_EDAC is not set | 635 | # CONFIG_EDAC is not set |
619 | # CONFIG_RTC_CLASS is not set | 636 | # CONFIG_RTC_CLASS is not set |
@@ -635,11 +652,9 @@ CONFIG_VIDEO_OUTPUT_CONTROL=y | |||
635 | # CONFIG_XFS_FS is not set | 652 | # CONFIG_XFS_FS is not set |
636 | # CONFIG_GFS2_FS is not set | 653 | # CONFIG_GFS2_FS is not set |
637 | # CONFIG_OCFS2_FS is not set | 654 | # CONFIG_OCFS2_FS is not set |
638 | # CONFIG_MINIX_FS is not set | 655 | # CONFIG_DNOTIFY is not set |
639 | # CONFIG_ROMFS_FS is not set | ||
640 | # CONFIG_INOTIFY is not set | 656 | # CONFIG_INOTIFY is not set |
641 | # CONFIG_QUOTA is not set | 657 | # CONFIG_QUOTA is not set |
642 | # CONFIG_DNOTIFY is not set | ||
643 | # CONFIG_AUTOFS_FS is not set | 658 | # CONFIG_AUTOFS_FS is not set |
644 | # CONFIG_AUTOFS4_FS is not set | 659 | # CONFIG_AUTOFS4_FS is not set |
645 | # CONFIG_FUSE_FS is not set | 660 | # CONFIG_FUSE_FS is not set |
@@ -682,8 +697,10 @@ CONFIG_TMPFS=y | |||
682 | # CONFIG_JFFS2_FS is not set | 697 | # CONFIG_JFFS2_FS is not set |
683 | CONFIG_CRAMFS=y | 698 | CONFIG_CRAMFS=y |
684 | # CONFIG_VXFS_FS is not set | 699 | # CONFIG_VXFS_FS is not set |
700 | # CONFIG_MINIX_FS is not set | ||
685 | # CONFIG_HPFS_FS is not set | 701 | # CONFIG_HPFS_FS is not set |
686 | # CONFIG_QNX4FS_FS is not set | 702 | # CONFIG_QNX4FS_FS is not set |
703 | # CONFIG_ROMFS_FS is not set | ||
687 | # CONFIG_SYSV_FS is not set | 704 | # CONFIG_SYSV_FS is not set |
688 | # CONFIG_UFS_FS is not set | 705 | # CONFIG_UFS_FS is not set |
689 | CONFIG_NETWORK_FILESYSTEMS=y | 706 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -730,7 +747,6 @@ CONFIG_MSDOS_PARTITION=y | |||
730 | # CONFIG_SYSV68_PARTITION is not set | 747 | # CONFIG_SYSV68_PARTITION is not set |
731 | # CONFIG_NLS is not set | 748 | # CONFIG_NLS is not set |
732 | # CONFIG_DLM is not set | 749 | # CONFIG_DLM is not set |
733 | # CONFIG_UCC_SLOW is not set | ||
734 | 750 | ||
735 | # | 751 | # |
736 | # Library routines | 752 | # Library routines |
@@ -745,9 +761,6 @@ CONFIG_ZLIB_INFLATE=y | |||
745 | CONFIG_HAS_IOMEM=y | 761 | CONFIG_HAS_IOMEM=y |
746 | CONFIG_HAS_IOPORT=y | 762 | CONFIG_HAS_IOPORT=y |
747 | CONFIG_HAS_DMA=y | 763 | CONFIG_HAS_DMA=y |
748 | CONFIG_INSTRUMENTATION=y | ||
749 | # CONFIG_PROFILING is not set | ||
750 | # CONFIG_MARKERS is not set | ||
751 | 764 | ||
752 | # | 765 | # |
753 | # Kernel hacking | 766 | # Kernel hacking |
@@ -757,7 +770,7 @@ CONFIG_ENABLE_WARN_DEPRECATED=y | |||
757 | CONFIG_ENABLE_MUST_CHECK=y | 770 | CONFIG_ENABLE_MUST_CHECK=y |
758 | CONFIG_MAGIC_SYSRQ=y | 771 | CONFIG_MAGIC_SYSRQ=y |
759 | # CONFIG_UNUSED_SYMBOLS is not set | 772 | # CONFIG_UNUSED_SYMBOLS is not set |
760 | # CONFIG_DEBUG_FS is not set | 773 | CONFIG_DEBUG_FS=y |
761 | # CONFIG_HEADERS_CHECK is not set | 774 | # CONFIG_HEADERS_CHECK is not set |
762 | CONFIG_DEBUG_KERNEL=y | 775 | CONFIG_DEBUG_KERNEL=y |
763 | # CONFIG_DEBUG_SHIRQ is not set | 776 | # CONFIG_DEBUG_SHIRQ is not set |
@@ -766,6 +779,7 @@ CONFIG_SCHED_DEBUG=y | |||
766 | # CONFIG_SCHEDSTATS is not set | 779 | # CONFIG_SCHEDSTATS is not set |
767 | # CONFIG_TIMER_STATS is not set | 780 | # CONFIG_TIMER_STATS is not set |
768 | # CONFIG_SLUB_DEBUG_ON is not set | 781 | # CONFIG_SLUB_DEBUG_ON is not set |
782 | # CONFIG_SLUB_STATS is not set | ||
769 | # CONFIG_DEBUG_SPINLOCK is not set | 783 | # CONFIG_DEBUG_SPINLOCK is not set |
770 | # CONFIG_DEBUG_MUTEXES is not set | 784 | # CONFIG_DEBUG_MUTEXES is not set |
771 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 785 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
@@ -776,14 +790,15 @@ CONFIG_DEBUG_INFO=y | |||
776 | # CONFIG_DEBUG_VM is not set | 790 | # CONFIG_DEBUG_VM is not set |
777 | # CONFIG_DEBUG_LIST is not set | 791 | # CONFIG_DEBUG_LIST is not set |
778 | # CONFIG_DEBUG_SG is not set | 792 | # CONFIG_DEBUG_SG is not set |
779 | CONFIG_FORCED_INLINING=y | ||
780 | # CONFIG_BOOT_PRINTK_DELAY is not set | 793 | # CONFIG_BOOT_PRINTK_DELAY is not set |
794 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
781 | # CONFIG_FAULT_INJECTION is not set | 795 | # CONFIG_FAULT_INJECTION is not set |
782 | # CONFIG_SAMPLES is not set | 796 | # CONFIG_SAMPLES is not set |
783 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 797 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
784 | # CONFIG_DEBUG_STACK_USAGE is not set | 798 | # CONFIG_DEBUG_STACK_USAGE is not set |
785 | # CONFIG_DEBUG_PAGEALLOC is not set | 799 | # CONFIG_DEBUG_PAGEALLOC is not set |
786 | # CONFIG_DEBUGGER is not set | 800 | # CONFIG_DEBUGGER is not set |
801 | # CONFIG_VIRQ_DEBUG is not set | ||
787 | # CONFIG_BDI_SWITCH is not set | 802 | # CONFIG_BDI_SWITCH is not set |
788 | # CONFIG_PPC_EARLY_DEBUG is not set | 803 | # CONFIG_PPC_EARLY_DEBUG is not set |
789 | 804 | ||
diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S index f7458396cd7c..3c9452d4308b 100644 --- a/arch/powerpc/kernel/head_8xx.S +++ b/arch/powerpc/kernel/head_8xx.S | |||
@@ -332,8 +332,18 @@ InstructionTLBMiss: | |||
332 | mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ | 332 | mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ |
333 | lwz r10, 0(r11) /* Get the pte */ | 333 | lwz r10, 0(r11) /* Get the pte */ |
334 | 334 | ||
335 | #ifdef CONFIG_SWAP | ||
336 | /* do not set the _PAGE_ACCESSED bit of a non-present page */ | ||
337 | andi. r11, r10, _PAGE_PRESENT | ||
338 | beq 4f | ||
339 | ori r10, r10, _PAGE_ACCESSED | ||
340 | mfspr r11, SPRN_MD_TWC /* get the pte address again */ | ||
341 | stw r10, 0(r11) | ||
342 | 4: | ||
343 | #else | ||
335 | ori r10, r10, _PAGE_ACCESSED | 344 | ori r10, r10, _PAGE_ACCESSED |
336 | stw r10, 0(r11) | 345 | stw r10, 0(r11) |
346 | #endif | ||
337 | 347 | ||
338 | /* The Linux PTE won't go exactly into the MMU TLB. | 348 | /* The Linux PTE won't go exactly into the MMU TLB. |
339 | * Software indicator bits 21, 22 and 28 must be clear. | 349 | * Software indicator bits 21, 22 and 28 must be clear. |
@@ -398,8 +408,17 @@ DataStoreTLBMiss: | |||
398 | DO_8xx_CPU6(0x3b80, r3) | 408 | DO_8xx_CPU6(0x3b80, r3) |
399 | mtspr SPRN_MD_TWC, r11 | 409 | mtspr SPRN_MD_TWC, r11 |
400 | 410 | ||
401 | mfspr r11, SPRN_MD_TWC /* get the pte address again */ | 411 | #ifdef CONFIG_SWAP |
412 | /* do not set the _PAGE_ACCESSED bit of a non-present page */ | ||
413 | andi. r11, r10, _PAGE_PRESENT | ||
414 | beq 4f | ||
402 | ori r10, r10, _PAGE_ACCESSED | 415 | ori r10, r10, _PAGE_ACCESSED |
416 | 4: | ||
417 | /* and update pte in table */ | ||
418 | #else | ||
419 | ori r10, r10, _PAGE_ACCESSED | ||
420 | #endif | ||
421 | mfspr r11, SPRN_MD_TWC /* get the pte address again */ | ||
403 | stw r10, 0(r11) | 422 | stw r10, 0(r11) |
404 | 423 | ||
405 | /* The Linux PTE won't go exactly into the MMU TLB. | 424 | /* The Linux PTE won't go exactly into the MMU TLB. |
@@ -507,7 +526,16 @@ DataTLBError: | |||
507 | 526 | ||
508 | /* Update 'changed', among others. | 527 | /* Update 'changed', among others. |
509 | */ | 528 | */ |
529 | #ifdef CONFIG_SWAP | ||
530 | ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE | ||
531 | /* do not set the _PAGE_ACCESSED bit of a non-present page */ | ||
532 | andi. r11, r10, _PAGE_PRESENT | ||
533 | beq 4f | ||
534 | ori r10, r10, _PAGE_ACCESSED | ||
535 | 4: | ||
536 | #else | ||
510 | ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE | 537 | ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE |
538 | #endif | ||
511 | mfspr r11, SPRN_MD_TWC /* Get pte address again */ | 539 | mfspr r11, SPRN_MD_TWC /* Get pte address again */ |
512 | stw r10, 0(r11) /* and update pte in table */ | 540 | stw r10, 0(r11) /* and update pte in table */ |
513 | 541 | ||
diff --git a/arch/powerpc/kernel/misc_32.S b/arch/powerpc/kernel/misc_32.S index 5c2e253ddfb1..9d2c56621f1e 100644 --- a/arch/powerpc/kernel/misc_32.S +++ b/arch/powerpc/kernel/misc_32.S | |||
@@ -785,6 +785,21 @@ _GLOBAL(__lshrdi3) | |||
785 | or r4,r4,r7 # LSW |= t2 | 785 | or r4,r4,r7 # LSW |= t2 |
786 | blr | 786 | blr |
787 | 787 | ||
788 | /* | ||
789 | * 64-bit comparison: __ucmpdi2(u64 a, u64 b) | ||
790 | * Returns 0 if a < b, 1 if a == b, 2 if a > b. | ||
791 | */ | ||
792 | _GLOBAL(__ucmpdi2) | ||
793 | cmplw r3,r5 | ||
794 | li r3,1 | ||
795 | bne 1f | ||
796 | cmplw r4,r6 | ||
797 | beqlr | ||
798 | 1: li r3,0 | ||
799 | bltlr | ||
800 | li r3,2 | ||
801 | blr | ||
802 | |||
788 | _GLOBAL(abs) | 803 | _GLOBAL(abs) |
789 | srawi r4,r3,31 | 804 | srawi r4,r3,31 |
790 | xor r3,r3,r4 | 805 | xor r3,r3,r4 |
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index 980fe32895c0..89c83ccb85c1 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c | |||
@@ -748,7 +748,13 @@ static void __devinit pcibios_fixup_resources(struct pci_dev *dev) | |||
748 | struct resource *res = dev->resource + i; | 748 | struct resource *res = dev->resource + i; |
749 | if (!res->flags) | 749 | if (!res->flags) |
750 | continue; | 750 | continue; |
751 | if (res->end == 0xffffffff) { | 751 | /* On platforms that have PPC_PCI_PROBE_ONLY set, we don't |
752 | * consider 0 as an unassigned BAR value. It's technically | ||
753 | * a valid value, but linux doesn't like it... so when we can | ||
754 | * re-assign things, we do so, but if we can't, we keep it | ||
755 | * around and hope for the best... | ||
756 | */ | ||
757 | if (res->start == 0 && !(ppc_pci_flags & PPC_PCI_PROBE_ONLY)) { | ||
752 | pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n", | 758 | pr_debug("PCI:%s Resource %d %016llx-%016llx [%x] is unassigned\n", |
753 | pci_name(dev), i, | 759 | pci_name(dev), i, |
754 | (unsigned long long)res->start, | 760 | (unsigned long long)res->start, |
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c index aa9ff35b0e63..9c98424277a8 100644 --- a/arch/powerpc/kernel/ppc_ksyms.c +++ b/arch/powerpc/kernel/ppc_ksyms.c | |||
@@ -58,6 +58,7 @@ extern void program_check_exception(struct pt_regs *regs); | |||
58 | extern void single_step_exception(struct pt_regs *regs); | 58 | extern void single_step_exception(struct pt_regs *regs); |
59 | extern int sys_sigreturn(struct pt_regs *regs); | 59 | extern int sys_sigreturn(struct pt_regs *regs); |
60 | 60 | ||
61 | EXPORT_SYMBOL(empty_zero_page); | ||
61 | EXPORT_SYMBOL(clear_pages); | 62 | EXPORT_SYMBOL(clear_pages); |
62 | EXPORT_SYMBOL(copy_page); | 63 | EXPORT_SYMBOL(copy_page); |
63 | EXPORT_SYMBOL(ISA_DMA_THRESHOLD); | 64 | EXPORT_SYMBOL(ISA_DMA_THRESHOLD); |
@@ -149,6 +150,8 @@ long long __lshrdi3(long long, int); | |||
149 | EXPORT_SYMBOL(__ashrdi3); | 150 | EXPORT_SYMBOL(__ashrdi3); |
150 | EXPORT_SYMBOL(__ashldi3); | 151 | EXPORT_SYMBOL(__ashldi3); |
151 | EXPORT_SYMBOL(__lshrdi3); | 152 | EXPORT_SYMBOL(__lshrdi3); |
153 | int __ucmpdi2(unsigned long long, unsigned long long); | ||
154 | EXPORT_SYMBOL(__ucmpdi2); | ||
152 | #endif | 155 | #endif |
153 | 156 | ||
154 | EXPORT_SYMBOL(memcpy); | 157 | EXPORT_SYMBOL(memcpy); |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 32f416175db1..590f1f67c874 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -506,10 +506,10 @@ void __init htab_initialize(void) | |||
506 | } else { | 506 | } else { |
507 | /* Find storage for the HPT. Must be contiguous in | 507 | /* Find storage for the HPT. Must be contiguous in |
508 | * the absolute address space. On cell we want it to be | 508 | * the absolute address space. On cell we want it to be |
509 | * in the first 1 Gig. | 509 | * in the first 2 Gig so we can use it for IOMMU hacks. |
510 | */ | 510 | */ |
511 | if (machine_is(cell)) | 511 | if (machine_is(cell)) |
512 | limit = 0x40000000; | 512 | limit = 0x80000000; |
513 | else | 513 | else |
514 | limit = 0; | 514 | limit = 0; |
515 | 515 | ||
diff --git a/arch/powerpc/platforms/83xx/mpc837x_mds.c b/arch/powerpc/platforms/83xx/mpc837x_mds.c index 8a9c26973605..64d17b0d6455 100644 --- a/arch/powerpc/platforms/83xx/mpc837x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc837x_mds.c | |||
@@ -39,12 +39,9 @@ static int mpc837xmds_usb_cfg(void) | |||
39 | if (ret) | 39 | if (ret) |
40 | return ret; | 40 | return ret; |
41 | /* Map BCSR area */ | 41 | /* Map BCSR area */ |
42 | np = of_find_node_by_name(NULL, "bcsr"); | 42 | np = of_find_compatible_node(NULL, NULL, "fsl,mpc837xmds-bcsr"); |
43 | if (np) { | 43 | if (np) { |
44 | struct resource res; | 44 | bcsr_regs = of_iomap(np, 0); |
45 | |||
46 | of_address_to_resource(np, 0, &res); | ||
47 | bcsr_regs = ioremap(res.start, res.end - res.start + 1); | ||
48 | of_node_put(np); | 45 | of_node_put(np); |
49 | } | 46 | } |
50 | if (!bcsr_regs) | 47 | if (!bcsr_regs) |
@@ -96,6 +93,7 @@ static void __init mpc837x_mds_setup_arch(void) | |||
96 | static struct of_device_id mpc837x_ids[] = { | 93 | static struct of_device_id mpc837x_ids[] = { |
97 | { .type = "soc", }, | 94 | { .type = "soc", }, |
98 | { .compatible = "soc", }, | 95 | { .compatible = "soc", }, |
96 | { .compatible = "simple-bus", }, | ||
99 | {}, | 97 | {}, |
100 | }; | 98 | }; |
101 | 99 | ||
diff --git a/arch/powerpc/platforms/Kconfig b/arch/powerpc/platforms/Kconfig index 0afd22595546..a578b966ecbc 100644 --- a/arch/powerpc/platforms/Kconfig +++ b/arch/powerpc/platforms/Kconfig | |||
@@ -22,7 +22,6 @@ config PPC_83xx | |||
22 | select FSL_SOC | 22 | select FSL_SOC |
23 | select MPC83xx | 23 | select MPC83xx |
24 | select IPIC | 24 | select IPIC |
25 | select FSL_EMB_PERFMON | ||
26 | 25 | ||
27 | config PPC_86xx | 26 | config PPC_86xx |
28 | bool "Freescale 86xx" | 27 | bool "Freescale 86xx" |
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 73d81ce14b67..0c3face0ddbb 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype | |||
@@ -113,7 +113,12 @@ config FSL_BOOKE | |||
113 | default y | 113 | default y |
114 | 114 | ||
115 | config FSL_EMB_PERFMON | 115 | config FSL_EMB_PERFMON |
116 | bool | 116 | bool "Freescale Embedded Perfmon" |
117 | depends on E500 || PPC_83xx | ||
118 | help | ||
119 | This is the Performance Monitor support found on the e500 core | ||
120 | and some e300 cores (c3 and c4). Select this only if your | ||
121 | core supports the Embedded Performance Monitor APU | ||
117 | 122 | ||
118 | config PTE_64BIT | 123 | config PTE_64BIT |
119 | bool | 124 | bool |
diff --git a/arch/powerpc/platforms/cell/spufs/context.c b/arch/powerpc/platforms/cell/spufs/context.c index cf6c2c89211d..0ad83aeb70b1 100644 --- a/arch/powerpc/platforms/cell/spufs/context.c +++ b/arch/powerpc/platforms/cell/spufs/context.c | |||
@@ -170,7 +170,8 @@ void spu_release_saved(struct spu_context *ctx) | |||
170 | { | 170 | { |
171 | BUG_ON(ctx->state != SPU_STATE_SAVED); | 171 | BUG_ON(ctx->state != SPU_STATE_SAVED); |
172 | 172 | ||
173 | if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags)) | 173 | if (test_and_clear_bit(SPU_SCHED_WAS_ACTIVE, &ctx->sched_flags) && |
174 | test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags)) | ||
174 | spu_activate(ctx, 0); | 175 | spu_activate(ctx, 0); |
175 | 176 | ||
176 | spu_release(ctx); | 177 | spu_release(ctx); |
diff --git a/arch/powerpc/platforms/cell/spufs/run.c b/arch/powerpc/platforms/cell/spufs/run.c index 6221968c2a3c..cac69e116776 100644 --- a/arch/powerpc/platforms/cell/spufs/run.c +++ b/arch/powerpc/platforms/cell/spufs/run.c | |||
@@ -220,6 +220,7 @@ static int spu_run_init(struct spu_context *ctx, u32 *npc) | |||
220 | } | 220 | } |
221 | } | 221 | } |
222 | 222 | ||
223 | set_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags); | ||
223 | return 0; | 224 | return 0; |
224 | } | 225 | } |
225 | 226 | ||
@@ -234,7 +235,7 @@ static int spu_run_fini(struct spu_context *ctx, u32 *npc, | |||
234 | *npc = ctx->ops->npc_read(ctx); | 235 | *npc = ctx->ops->npc_read(ctx); |
235 | 236 | ||
236 | spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); | 237 | spuctx_switch_state(ctx, SPU_UTIL_IDLE_LOADED); |
237 | ctx->policy = SCHED_IDLE; | 238 | clear_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags); |
238 | spu_release(ctx); | 239 | spu_release(ctx); |
239 | 240 | ||
240 | if (signal_pending(current)) | 241 | if (signal_pending(current)) |
diff --git a/arch/powerpc/platforms/cell/spufs/sched.c b/arch/powerpc/platforms/cell/spufs/sched.c index 5d5f680cd0b8..00528ef84ad2 100644 --- a/arch/powerpc/platforms/cell/spufs/sched.c +++ b/arch/powerpc/platforms/cell/spufs/sched.c | |||
@@ -867,7 +867,7 @@ static noinline void spusched_tick(struct spu_context *ctx) | |||
867 | if (ctx->policy == SCHED_FIFO) | 867 | if (ctx->policy == SCHED_FIFO) |
868 | goto out; | 868 | goto out; |
869 | 869 | ||
870 | if (--ctx->time_slice && ctx->policy != SCHED_IDLE) | 870 | if (--ctx->time_slice && test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags)) |
871 | goto out; | 871 | goto out; |
872 | 872 | ||
873 | spu = ctx->spu; | 873 | spu = ctx->spu; |
@@ -877,7 +877,7 @@ static noinline void spusched_tick(struct spu_context *ctx) | |||
877 | new = grab_runnable_context(ctx->prio + 1, spu->node); | 877 | new = grab_runnable_context(ctx->prio + 1, spu->node); |
878 | if (new) { | 878 | if (new) { |
879 | spu_unschedule(spu, ctx); | 879 | spu_unschedule(spu, ctx); |
880 | if (ctx->policy != SCHED_IDLE) | 880 | if (test_bit(SPU_SCHED_SPU_RUN, &ctx->sched_flags)) |
881 | spu_add_to_rq(ctx); | 881 | spu_add_to_rq(ctx); |
882 | } else { | 882 | } else { |
883 | spu_context_nospu_trace(spusched_tick__newslice, ctx); | 883 | spu_context_nospu_trace(spusched_tick__newslice, ctx); |
diff --git a/arch/powerpc/platforms/cell/spufs/spufs.h b/arch/powerpc/platforms/cell/spufs/spufs.h index 2c2fe3c07d72..cdc515182f82 100644 --- a/arch/powerpc/platforms/cell/spufs/spufs.h +++ b/arch/powerpc/platforms/cell/spufs/spufs.h | |||
@@ -44,6 +44,7 @@ struct spu_gang; | |||
44 | enum { | 44 | enum { |
45 | SPU_SCHED_NOTIFY_ACTIVE, | 45 | SPU_SCHED_NOTIFY_ACTIVE, |
46 | SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */ | 46 | SPU_SCHED_WAS_ACTIVE, /* was active upon spu_acquire_saved() */ |
47 | SPU_SCHED_SPU_RUN, /* context is within spu_run */ | ||
47 | }; | 48 | }; |
48 | 49 | ||
49 | struct spu_context { | 50 | struct spu_context { |
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c index 40736400ef80..829b8b02527b 100644 --- a/arch/powerpc/platforms/powermac/pic.c +++ b/arch/powerpc/platforms/powermac/pic.c | |||
@@ -618,9 +618,9 @@ static int pmacpic_find_viaint(void) | |||
618 | if (np == NULL) | 618 | if (np == NULL) |
619 | goto not_found; | 619 | goto not_found; |
620 | viaint = irq_of_parse_and_map(np, 0);; | 620 | viaint = irq_of_parse_and_map(np, 0);; |
621 | #endif /* CONFIG_ADB_PMU */ | ||
622 | 621 | ||
623 | not_found: | 622 | not_found: |
623 | #endif /* CONFIG_ADB_PMU */ | ||
624 | return viaint; | 624 | return viaint; |
625 | } | 625 | } |
626 | 626 | ||
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c index 6efbd5e5bb1b..cc81fd1141b0 100644 --- a/arch/powerpc/sysdev/qe_lib/qe.c +++ b/arch/powerpc/sysdev/qe_lib/qe.c | |||
@@ -509,7 +509,7 @@ int qe_upload_firmware(const struct qe_firmware *firmware) | |||
509 | } | 509 | } |
510 | 510 | ||
511 | /* Validate some of the fields */ | 511 | /* Validate some of the fields */ |
512 | if ((firmware->count < 1) || (firmware->count >= MAX_QE_RISC)) { | 512 | if ((firmware->count < 1) || (firmware->count > MAX_QE_RISC)) { |
513 | printk(KERN_ERR "qe-firmware: invalid data\n"); | 513 | printk(KERN_ERR "qe-firmware: invalid data\n"); |
514 | return -EINVAL; | 514 | return -EINVAL; |
515 | } | 515 | } |
@@ -609,7 +609,10 @@ struct qe_firmware_info *qe_get_firmware_info(void) | |||
609 | * If we haven't checked yet, and a driver hasn't uploaded a firmware | 609 | * If we haven't checked yet, and a driver hasn't uploaded a firmware |
610 | * yet, then check the device tree for information. | 610 | * yet, then check the device tree for information. |
611 | */ | 611 | */ |
612 | if (initialized || qe_firmware_uploaded) | 612 | if (qe_firmware_uploaded) |
613 | return &qe_firmware_info; | ||
614 | |||
615 | if (initialized) | ||
613 | return NULL; | 616 | return NULL; |
614 | 617 | ||
615 | initialized = 1; | 618 | initialized = 1; |
diff --git a/arch/ppc/kernel/head_8xx.S b/arch/ppc/kernel/head_8xx.S index eb8d26f87362..321bda2de2cb 100644 --- a/arch/ppc/kernel/head_8xx.S +++ b/arch/ppc/kernel/head_8xx.S | |||
@@ -329,8 +329,18 @@ InstructionTLBMiss: | |||
329 | mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ | 329 | mfspr r11, SPRN_MD_TWC /* ....and get the pte address */ |
330 | lwz r10, 0(r11) /* Get the pte */ | 330 | lwz r10, 0(r11) /* Get the pte */ |
331 | 331 | ||
332 | #ifdef CONFIG_SWAP | ||
333 | /* do not set the _PAGE_ACCESSED bit of a non-present page */ | ||
334 | andi. r11, r10, _PAGE_PRESENT | ||
335 | beq 4f | ||
336 | ori r10, r10, _PAGE_ACCESSED | ||
337 | mfspr r11, SPRN_MD_TWC /* get the pte address again */ | ||
338 | stw r10, 0(r11) | ||
339 | 4: | ||
340 | #else | ||
332 | ori r10, r10, _PAGE_ACCESSED | 341 | ori r10, r10, _PAGE_ACCESSED |
333 | stw r10, 0(r11) | 342 | stw r10, 0(r11) |
343 | #endif | ||
334 | 344 | ||
335 | /* The Linux PTE won't go exactly into the MMU TLB. | 345 | /* The Linux PTE won't go exactly into the MMU TLB. |
336 | * Software indicator bits 21, 22 and 28 must be clear. | 346 | * Software indicator bits 21, 22 and 28 must be clear. |
@@ -395,8 +405,17 @@ DataStoreTLBMiss: | |||
395 | DO_8xx_CPU6(0x3b80, r3) | 405 | DO_8xx_CPU6(0x3b80, r3) |
396 | mtspr SPRN_MD_TWC, r11 | 406 | mtspr SPRN_MD_TWC, r11 |
397 | 407 | ||
398 | mfspr r11, SPRN_MD_TWC /* get the pte address again */ | 408 | #ifdef CONFIG_SWAP |
409 | /* do not set the _PAGE_ACCESSED bit of a non-present page */ | ||
410 | andi. r11, r10, _PAGE_PRESENT | ||
411 | beq 4f | ||
412 | ori r10, r10, _PAGE_ACCESSED | ||
413 | 4: | ||
414 | /* and update pte in table */ | ||
415 | #else | ||
399 | ori r10, r10, _PAGE_ACCESSED | 416 | ori r10, r10, _PAGE_ACCESSED |
417 | #endif | ||
418 | mfspr r11, SPRN_MD_TWC /* get the pte address again */ | ||
400 | stw r10, 0(r11) | 419 | stw r10, 0(r11) |
401 | 420 | ||
402 | /* The Linux PTE won't go exactly into the MMU TLB. | 421 | /* The Linux PTE won't go exactly into the MMU TLB. |
@@ -575,7 +594,16 @@ DataTLBError: | |||
575 | 594 | ||
576 | /* Update 'changed', among others. | 595 | /* Update 'changed', among others. |
577 | */ | 596 | */ |
597 | #ifdef CONFIG_SWAP | ||
598 | ori r10, r10, _PAGE_DIRTY|_PAGE_HWWRITE | ||
599 | /* do not set the _PAGE_ACCESSED bit of a non-present page */ | ||
600 | andi. r11, r10, _PAGE_PRESENT | ||
601 | beq 4f | ||
602 | ori r10, r10, _PAGE_ACCESSED | ||
603 | 4: | ||
604 | #else | ||
578 | ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE | 605 | ori r10, r10, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE |
606 | #endif | ||
579 | mfspr r11, SPRN_MD_TWC /* Get pte address again */ | 607 | mfspr r11, SPRN_MD_TWC /* Get pte address again */ |
580 | stw r10, 0(r11) /* and update pte in table */ | 608 | stw r10, 0(r11) /* and update pte in table */ |
581 | 609 | ||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 237fc128143d..6c70fed0f9a0 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -1259,7 +1259,7 @@ menuconfig APM | |||
1259 | machines with more than one CPU. | 1259 | machines with more than one CPU. |
1260 | 1260 | ||
1261 | In order to use APM, you will need supporting software. For location | 1261 | In order to use APM, you will need supporting software. For location |
1262 | and more information, read <file:Documentation/pm.txt> and the | 1262 | and more information, read <file:Documentation/power/pm.txt> and the |
1263 | Battery Powered Linux mini-HOWTO, available from | 1263 | Battery Powered Linux mini-HOWTO, available from |
1264 | <http://www.tldp.org/docs.html#howto>. | 1264 | <http://www.tldp.org/docs.html#howto>. |
1265 | 1265 | ||
diff --git a/block/genhd.c b/block/genhd.c index c44527d16c52..00da5219ee37 100644 --- a/block/genhd.c +++ b/block/genhd.c | |||
@@ -360,7 +360,9 @@ static struct kobject *base_probe(dev_t devt, int *part, void *data) | |||
360 | 360 | ||
361 | static int __init genhd_device_init(void) | 361 | static int __init genhd_device_init(void) |
362 | { | 362 | { |
363 | class_register(&block_class); | 363 | int error = class_register(&block_class); |
364 | if (unlikely(error)) | ||
365 | return error; | ||
364 | bdev_map = kobj_map_init(base_probe, &block_class_lock); | 366 | bdev_map = kobj_map_init(base_probe, &block_class_lock); |
365 | blk_dev_init(); | 367 | blk_dev_init(); |
366 | 368 | ||
diff --git a/crypto/async_tx/async_memcpy.c b/crypto/async_tx/async_memcpy.c index 0f6282207b32..84caa4efc0d4 100644 --- a/crypto/async_tx/async_memcpy.c +++ b/crypto/async_tx/async_memcpy.c | |||
@@ -66,11 +66,11 @@ async_memcpy(struct page *dest, struct page *src, unsigned int dest_offset, | |||
66 | } | 66 | } |
67 | 67 | ||
68 | if (tx) { | 68 | if (tx) { |
69 | pr_debug("%s: (async) len: %zu\n", __FUNCTION__, len); | 69 | pr_debug("%s: (async) len: %zu\n", __func__, len); |
70 | async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); | 70 | async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); |
71 | } else { | 71 | } else { |
72 | void *dest_buf, *src_buf; | 72 | void *dest_buf, *src_buf; |
73 | pr_debug("%s: (sync) len: %zu\n", __FUNCTION__, len); | 73 | pr_debug("%s: (sync) len: %zu\n", __func__, len); |
74 | 74 | ||
75 | /* wait for any prerequisite operations */ | 75 | /* wait for any prerequisite operations */ |
76 | if (depend_tx) { | 76 | if (depend_tx) { |
@@ -80,7 +80,7 @@ async_memcpy(struct page *dest, struct page *src, unsigned int dest_offset, | |||
80 | BUG_ON(depend_tx->ack); | 80 | BUG_ON(depend_tx->ack); |
81 | if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) | 81 | if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) |
82 | panic("%s: DMA_ERROR waiting for depend_tx\n", | 82 | panic("%s: DMA_ERROR waiting for depend_tx\n", |
83 | __FUNCTION__); | 83 | __func__); |
84 | } | 84 | } |
85 | 85 | ||
86 | dest_buf = kmap_atomic(dest, KM_USER0) + dest_offset; | 86 | dest_buf = kmap_atomic(dest, KM_USER0) + dest_offset; |
diff --git a/crypto/async_tx/async_memset.c b/crypto/async_tx/async_memset.c index 09c0e83664bc..f5ff3906b035 100644 --- a/crypto/async_tx/async_memset.c +++ b/crypto/async_tx/async_memset.c | |||
@@ -63,11 +63,11 @@ async_memset(struct page *dest, int val, unsigned int offset, | |||
63 | } | 63 | } |
64 | 64 | ||
65 | if (tx) { | 65 | if (tx) { |
66 | pr_debug("%s: (async) len: %zu\n", __FUNCTION__, len); | 66 | pr_debug("%s: (async) len: %zu\n", __func__, len); |
67 | async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); | 67 | async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); |
68 | } else { /* run the memset synchronously */ | 68 | } else { /* run the memset synchronously */ |
69 | void *dest_buf; | 69 | void *dest_buf; |
70 | pr_debug("%s: (sync) len: %zu\n", __FUNCTION__, len); | 70 | pr_debug("%s: (sync) len: %zu\n", __func__, len); |
71 | 71 | ||
72 | dest_buf = (void *) (((char *) page_address(dest)) + offset); | 72 | dest_buf = (void *) (((char *) page_address(dest)) + offset); |
73 | 73 | ||
@@ -79,7 +79,7 @@ async_memset(struct page *dest, int val, unsigned int offset, | |||
79 | BUG_ON(depend_tx->ack); | 79 | BUG_ON(depend_tx->ack); |
80 | if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) | 80 | if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) |
81 | panic("%s: DMA_ERROR waiting for depend_tx\n", | 81 | panic("%s: DMA_ERROR waiting for depend_tx\n", |
82 | __FUNCTION__); | 82 | __func__); |
83 | } | 83 | } |
84 | 84 | ||
85 | memset(dest_buf, val, len); | 85 | memset(dest_buf, val, len); |
diff --git a/crypto/async_tx/async_tx.c b/crypto/async_tx/async_tx.c index 562882189de5..2be3bae89930 100644 --- a/crypto/async_tx/async_tx.c +++ b/crypto/async_tx/async_tx.c | |||
@@ -472,11 +472,11 @@ async_trigger_callback(enum async_tx_flags flags, | |||
472 | tx = NULL; | 472 | tx = NULL; |
473 | 473 | ||
474 | if (tx) { | 474 | if (tx) { |
475 | pr_debug("%s: (async)\n", __FUNCTION__); | 475 | pr_debug("%s: (async)\n", __func__); |
476 | 476 | ||
477 | async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); | 477 | async_tx_submit(chan, tx, flags, depend_tx, cb_fn, cb_param); |
478 | } else { | 478 | } else { |
479 | pr_debug("%s: (sync)\n", __FUNCTION__); | 479 | pr_debug("%s: (sync)\n", __func__); |
480 | 480 | ||
481 | /* wait for any prerequisite operations */ | 481 | /* wait for any prerequisite operations */ |
482 | if (depend_tx) { | 482 | if (depend_tx) { |
@@ -486,7 +486,7 @@ async_trigger_callback(enum async_tx_flags flags, | |||
486 | BUG_ON(depend_tx->ack); | 486 | BUG_ON(depend_tx->ack); |
487 | if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) | 487 | if (dma_wait_for_async_tx(depend_tx) == DMA_ERROR) |
488 | panic("%s: DMA_ERROR waiting for depend_tx\n", | 488 | panic("%s: DMA_ERROR waiting for depend_tx\n", |
489 | __FUNCTION__); | 489 | __func__); |
490 | } | 490 | } |
491 | 491 | ||
492 | async_tx_sync_epilog(flags, depend_tx, cb_fn, cb_param); | 492 | async_tx_sync_epilog(flags, depend_tx, cb_fn, cb_param); |
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c index 2259a4ff15cb..7a9db353f198 100644 --- a/crypto/async_tx/async_xor.c +++ b/crypto/async_tx/async_xor.c | |||
@@ -47,7 +47,7 @@ do_async_xor(struct dma_device *device, | |||
47 | int i; | 47 | int i; |
48 | unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; | 48 | unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; |
49 | 49 | ||
50 | pr_debug("%s: len: %zu\n", __FUNCTION__, len); | 50 | pr_debug("%s: len: %zu\n", __func__, len); |
51 | 51 | ||
52 | dma_dest = dma_map_page(device->dev, dest, offset, len, | 52 | dma_dest = dma_map_page(device->dev, dest, offset, len, |
53 | DMA_FROM_DEVICE); | 53 | DMA_FROM_DEVICE); |
@@ -86,7 +86,7 @@ do_sync_xor(struct page *dest, struct page **src_list, unsigned int offset, | |||
86 | void *_dest; | 86 | void *_dest; |
87 | int i; | 87 | int i; |
88 | 88 | ||
89 | pr_debug("%s: len: %zu\n", __FUNCTION__, len); | 89 | pr_debug("%s: len: %zu\n", __func__, len); |
90 | 90 | ||
91 | /* reuse the 'src_list' array to convert to buffer pointers */ | 91 | /* reuse the 'src_list' array to convert to buffer pointers */ |
92 | for (i = 0; i < src_cnt; i++) | 92 | for (i = 0; i < src_cnt; i++) |
@@ -196,7 +196,7 @@ async_xor(struct page *dest, struct page **src_list, unsigned int offset, | |||
196 | DMA_ERROR) | 196 | DMA_ERROR) |
197 | panic("%s: DMA_ERROR waiting for " | 197 | panic("%s: DMA_ERROR waiting for " |
198 | "depend_tx\n", | 198 | "depend_tx\n", |
199 | __FUNCTION__); | 199 | __func__); |
200 | } | 200 | } |
201 | 201 | ||
202 | do_sync_xor(dest, &src_list[src_off], offset, | 202 | do_sync_xor(dest, &src_list[src_off], offset, |
@@ -276,7 +276,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list, | |||
276 | unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; | 276 | unsigned long dma_prep_flags = cb_fn ? DMA_PREP_INTERRUPT : 0; |
277 | int i; | 277 | int i; |
278 | 278 | ||
279 | pr_debug("%s: (async) len: %zu\n", __FUNCTION__, len); | 279 | pr_debug("%s: (async) len: %zu\n", __func__, len); |
280 | 280 | ||
281 | for (i = 0; i < src_cnt; i++) | 281 | for (i = 0; i < src_cnt; i++) |
282 | dma_src[i] = dma_map_page(device->dev, src_list[i], | 282 | dma_src[i] = dma_map_page(device->dev, src_list[i], |
@@ -299,7 +299,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list, | |||
299 | } else { | 299 | } else { |
300 | unsigned long xor_flags = flags; | 300 | unsigned long xor_flags = flags; |
301 | 301 | ||
302 | pr_debug("%s: (sync) len: %zu\n", __FUNCTION__, len); | 302 | pr_debug("%s: (sync) len: %zu\n", __func__, len); |
303 | 303 | ||
304 | xor_flags |= ASYNC_TX_XOR_DROP_DST; | 304 | xor_flags |= ASYNC_TX_XOR_DROP_DST; |
305 | xor_flags &= ~ASYNC_TX_ACK; | 305 | xor_flags &= ~ASYNC_TX_ACK; |
@@ -310,7 +310,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list, | |||
310 | if (tx) { | 310 | if (tx) { |
311 | if (dma_wait_for_async_tx(tx) == DMA_ERROR) | 311 | if (dma_wait_for_async_tx(tx) == DMA_ERROR) |
312 | panic("%s: DMA_ERROR waiting for tx\n", | 312 | panic("%s: DMA_ERROR waiting for tx\n", |
313 | __FUNCTION__); | 313 | __func__); |
314 | async_tx_ack(tx); | 314 | async_tx_ack(tx); |
315 | } | 315 | } |
316 | 316 | ||
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index f688c214be0c..fbcaa069be86 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig | |||
@@ -283,24 +283,23 @@ config ACPI_TOSHIBA | |||
283 | If you have a legacy free Toshiba laptop (such as the Libretto L1 | 283 | If you have a legacy free Toshiba laptop (such as the Libretto L1 |
284 | series), say Y. | 284 | series), say Y. |
285 | 285 | ||
286 | config ACPI_CUSTOM_DSDT | 286 | config ACPI_CUSTOM_DSDT_FILE |
287 | bool "Include Custom DSDT" | 287 | string "Custom DSDT Table file to include" |
288 | default "" | ||
288 | depends on !STANDALONE | 289 | depends on !STANDALONE |
289 | default n | ||
290 | help | 290 | help |
291 | This option supports a custom DSDT by linking it into the kernel. | 291 | This option supports a custom DSDT by linking it into the kernel. |
292 | See Documentation/acpi/dsdt-override.txt | 292 | See Documentation/acpi/dsdt-override.txt |
293 | 293 | ||
294 | If unsure, say N. | ||
295 | |||
296 | config ACPI_CUSTOM_DSDT_FILE | ||
297 | string "Custom DSDT Table file to include" | ||
298 | depends on ACPI_CUSTOM_DSDT | ||
299 | default "" | ||
300 | help | ||
301 | Enter the full path name to the file which includes the AmlCode | 294 | Enter the full path name to the file which includes the AmlCode |
302 | declaration. | 295 | declaration. |
303 | 296 | ||
297 | If unsure, don't enter a file name. | ||
298 | |||
299 | config ACPI_CUSTOM_DSDT | ||
300 | bool | ||
301 | default ACPI_CUSTOM_DSDT_FILE != "" | ||
302 | |||
304 | config ACPI_CUSTOM_DSDT_INITRD | 303 | config ACPI_CUSTOM_DSDT_INITRD |
305 | bool "Read Custom DSDT from initramfs" | 304 | bool "Read Custom DSDT from initramfs" |
306 | depends on BLK_DEV_INITRD | 305 | depends on BLK_DEV_INITRD |
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index ce3c0a2cbac4..5b6760e0f957 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c | |||
@@ -776,7 +776,7 @@ static int __init acpi_init(void) | |||
776 | 776 | ||
777 | acpi_kobj = kobject_create_and_add("acpi", firmware_kobj); | 777 | acpi_kobj = kobject_create_and_add("acpi", firmware_kobj); |
778 | if (!acpi_kobj) { | 778 | if (!acpi_kobj) { |
779 | printk(KERN_WARNING "%s: kset create error\n", __FUNCTION__); | 779 | printk(KERN_WARNING "%s: kset create error\n", __func__); |
780 | acpi_kobj = NULL; | 780 | acpi_kobj = NULL; |
781 | } | 781 | } |
782 | 782 | ||
diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c index 24a7865a57cb..6c5da83cdb68 100644 --- a/drivers/acpi/button.c +++ b/drivers/acpi/button.c | |||
@@ -449,6 +449,7 @@ static int acpi_button_add(struct acpi_device *device) | |||
449 | input->phys = button->phys; | 449 | input->phys = button->phys; |
450 | input->id.bustype = BUS_HOST; | 450 | input->id.bustype = BUS_HOST; |
451 | input->id.product = button->type; | 451 | input->id.product = button->type; |
452 | input->dev.parent = &device->dev; | ||
452 | 453 | ||
453 | switch (button->type) { | 454 | switch (button->type) { |
454 | case ACPI_BUTTON_TYPE_POWER: | 455 | case ACPI_BUTTON_TYPE_POWER: |
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index caf873c14bfb..e7e197e3a4ff 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
@@ -129,6 +129,7 @@ static struct acpi_ec { | |||
129 | struct mutex lock; | 129 | struct mutex lock; |
130 | wait_queue_head_t wait; | 130 | wait_queue_head_t wait; |
131 | struct list_head list; | 131 | struct list_head list; |
132 | atomic_t irq_count; | ||
132 | u8 handlers_installed; | 133 | u8 handlers_installed; |
133 | } *boot_ec, *first_ec; | 134 | } *boot_ec, *first_ec; |
134 | 135 | ||
@@ -181,6 +182,8 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll) | |||
181 | { | 182 | { |
182 | int ret = 0; | 183 | int ret = 0; |
183 | 184 | ||
185 | atomic_set(&ec->irq_count, 0); | ||
186 | |||
184 | if (unlikely(event == ACPI_EC_EVENT_OBF_1 && | 187 | if (unlikely(event == ACPI_EC_EVENT_OBF_1 && |
185 | test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags))) | 188 | test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags))) |
186 | force_poll = 1; | 189 | force_poll = 1; |
@@ -227,6 +230,7 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll) | |||
227 | while (time_before(jiffies, delay)) { | 230 | while (time_before(jiffies, delay)) { |
228 | if (acpi_ec_check_status(ec, event)) | 231 | if (acpi_ec_check_status(ec, event)) |
229 | goto end; | 232 | goto end; |
233 | msleep(5); | ||
230 | } | 234 | } |
231 | } | 235 | } |
232 | pr_err(PREFIX "acpi_ec_wait timeout," | 236 | pr_err(PREFIX "acpi_ec_wait timeout," |
@@ -529,6 +533,13 @@ static u32 acpi_ec_gpe_handler(void *data) | |||
529 | struct acpi_ec *ec = data; | 533 | struct acpi_ec *ec = data; |
530 | 534 | ||
531 | pr_debug(PREFIX "~~~> interrupt\n"); | 535 | pr_debug(PREFIX "~~~> interrupt\n"); |
536 | atomic_inc(&ec->irq_count); | ||
537 | if (atomic_read(&ec->irq_count) > 5) { | ||
538 | pr_err(PREFIX "GPE storm detected, disabling EC GPE\n"); | ||
539 | acpi_disable_gpe(NULL, ec->gpe, ACPI_ISR); | ||
540 | clear_bit(EC_FLAGS_GPE_MODE, &ec->flags); | ||
541 | return ACPI_INTERRUPT_HANDLED; | ||
542 | } | ||
532 | clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags); | 543 | clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags); |
533 | if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) | 544 | if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) |
534 | wake_up(&ec->wait); | 545 | wake_up(&ec->wait); |
@@ -943,11 +954,7 @@ int __init acpi_ec_ecdt_probe(void) | |||
943 | boot_ec->command_addr = ecdt_ptr->control.address; | 954 | boot_ec->command_addr = ecdt_ptr->control.address; |
944 | boot_ec->data_addr = ecdt_ptr->data.address; | 955 | boot_ec->data_addr = ecdt_ptr->data.address; |
945 | boot_ec->gpe = ecdt_ptr->gpe; | 956 | boot_ec->gpe = ecdt_ptr->gpe; |
946 | if (ACPI_FAILURE(acpi_get_handle(NULL, ecdt_ptr->id, | 957 | boot_ec->handle = ACPI_ROOT_OBJECT; |
947 | &boot_ec->handle))) { | ||
948 | pr_info("Failed to locate handle for boot EC\n"); | ||
949 | boot_ec->handle = ACPI_ROOT_OBJECT; | ||
950 | } | ||
951 | } else { | 958 | } else { |
952 | /* This workaround is needed only on some broken machines, | 959 | /* This workaround is needed only on some broken machines, |
953 | * which require early EC, but fail to provide ECDT */ | 960 | * which require early EC, but fail to provide ECDT */ |
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index 8edba7b678eb..065819ba87c7 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c | |||
@@ -1237,7 +1237,7 @@ int acpi_check_resource_conflict(struct resource *res) | |||
1237 | 1237 | ||
1238 | if (clash) { | 1238 | if (clash) { |
1239 | if (acpi_enforce_resources != ENFORCE_RESOURCES_NO) { | 1239 | if (acpi_enforce_resources != ENFORCE_RESOURCES_NO) { |
1240 | printk(KERN_INFO "%sACPI: %s resource %s [0x%llx-0x%llx]" | 1240 | printk("%sACPI: %s resource %s [0x%llx-0x%llx]" |
1241 | " conflicts with ACPI region %s" | 1241 | " conflicts with ACPI region %s" |
1242 | " [0x%llx-0x%llx]\n", | 1242 | " [0x%llx-0x%llx]\n", |
1243 | acpi_enforce_resources == ENFORCE_RESOURCES_LAX | 1243 | acpi_enforce_resources == ENFORCE_RESOURCES_LAX |
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c index 7f19859580c7..7af414a3c63e 100644 --- a/drivers/acpi/pci_irq.c +++ b/drivers/acpi/pci_irq.c | |||
@@ -25,6 +25,7 @@ | |||
25 | */ | 25 | */ |
26 | 26 | ||
27 | 27 | ||
28 | #include <linux/dmi.h> | ||
28 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
29 | #include <linux/module.h> | 30 | #include <linux/module.h> |
30 | #include <linux/init.h> | 31 | #include <linux/init.h> |
@@ -76,6 +77,101 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(int segment, | |||
76 | return NULL; | 77 | return NULL; |
77 | } | 78 | } |
78 | 79 | ||
80 | /* http://bugzilla.kernel.org/show_bug.cgi?id=4773 */ | ||
81 | static struct dmi_system_id medion_md9580[] = { | ||
82 | { | ||
83 | .ident = "Medion MD9580-F laptop", | ||
84 | .matches = { | ||
85 | DMI_MATCH(DMI_SYS_VENDOR, "MEDIONNB"), | ||
86 | DMI_MATCH(DMI_PRODUCT_NAME, "A555"), | ||
87 | }, | ||
88 | }, | ||
89 | { } | ||
90 | }; | ||
91 | |||
92 | /* http://bugzilla.kernel.org/show_bug.cgi?id=5044 */ | ||
93 | static struct dmi_system_id dell_optiplex[] = { | ||
94 | { | ||
95 | .ident = "Dell Optiplex GX1", | ||
96 | .matches = { | ||
97 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Computer Corporation"), | ||
98 | DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex GX1 600S+"), | ||
99 | }, | ||
100 | }, | ||
101 | { } | ||
102 | }; | ||
103 | |||
104 | /* http://bugzilla.kernel.org/show_bug.cgi?id=10138 */ | ||
105 | static struct dmi_system_id hp_t5710[] = { | ||
106 | { | ||
107 | .ident = "HP t5710", | ||
108 | .matches = { | ||
109 | DMI_MATCH(DMI_SYS_VENDOR, "Hewlett-Packard"), | ||
110 | DMI_MATCH(DMI_PRODUCT_NAME, "hp t5000 series"), | ||
111 | DMI_MATCH(DMI_BOARD_NAME, "098Ch"), | ||
112 | }, | ||
113 | }, | ||
114 | { } | ||
115 | }; | ||
116 | |||
117 | struct prt_quirk { | ||
118 | struct dmi_system_id *system; | ||
119 | unsigned int segment; | ||
120 | unsigned int bus; | ||
121 | unsigned int device; | ||
122 | unsigned char pin; | ||
123 | char *source; /* according to BIOS */ | ||
124 | char *actual_source; | ||
125 | }; | ||
126 | |||
127 | /* | ||
128 | * These systems have incorrect _PRT entries. The BIOS claims the PCI | ||
129 | * interrupt at the listed segment/bus/device/pin is connected to the first | ||
130 | * link device, but it is actually connected to the second. | ||
131 | */ | ||
132 | static struct prt_quirk prt_quirks[] = { | ||
133 | { medion_md9580, 0, 0, 9, 'A', | ||
134 | "\\_SB_.PCI0.ISA.LNKA", | ||
135 | "\\_SB_.PCI0.ISA.LNKB"}, | ||
136 | { dell_optiplex, 0, 0, 0xd, 'A', | ||
137 | "\\_SB_.LNKB", | ||
138 | "\\_SB_.LNKA"}, | ||
139 | { hp_t5710, 0, 0, 1, 'A', | ||
140 | "\\_SB_.PCI0.LNK1", | ||
141 | "\\_SB_.PCI0.LNK3"}, | ||
142 | }; | ||
143 | |||
144 | static void | ||
145 | do_prt_fixups(struct acpi_prt_entry *entry, struct acpi_pci_routing_table *prt) | ||
146 | { | ||
147 | int i; | ||
148 | struct prt_quirk *quirk; | ||
149 | |||
150 | for (i = 0; i < ARRAY_SIZE(prt_quirks); i++) { | ||
151 | quirk = &prt_quirks[i]; | ||
152 | |||
153 | /* All current quirks involve link devices, not GSIs */ | ||
154 | if (!prt->source) | ||
155 | continue; | ||
156 | |||
157 | if (dmi_check_system(quirk->system) && | ||
158 | entry->id.segment == quirk->segment && | ||
159 | entry->id.bus == quirk->bus && | ||
160 | entry->id.device == quirk->device && | ||
161 | entry->pin + 'A' == quirk->pin && | ||
162 | !strcmp(prt->source, quirk->source) && | ||
163 | strlen(prt->source) >= strlen(quirk->actual_source)) { | ||
164 | printk(KERN_WARNING PREFIX "firmware reports " | ||
165 | "%04x:%02x:%02x[%c] connected to %s; " | ||
166 | "changing to %s\n", | ||
167 | entry->id.segment, entry->id.bus, | ||
168 | entry->id.device, 'A' + entry->pin, | ||
169 | prt->source, quirk->actual_source); | ||
170 | strcpy(prt->source, quirk->actual_source); | ||
171 | } | ||
172 | } | ||
173 | } | ||
174 | |||
79 | static int | 175 | static int |
80 | acpi_pci_irq_add_entry(acpi_handle handle, | 176 | acpi_pci_irq_add_entry(acpi_handle handle, |
81 | int segment, int bus, struct acpi_pci_routing_table *prt) | 177 | int segment, int bus, struct acpi_pci_routing_table *prt) |
@@ -96,6 +192,8 @@ acpi_pci_irq_add_entry(acpi_handle handle, | |||
96 | entry->id.function = prt->address & 0xFFFF; | 192 | entry->id.function = prt->address & 0xFFFF; |
97 | entry->pin = prt->pin; | 193 | entry->pin = prt->pin; |
98 | 194 | ||
195 | do_prt_fixups(entry, prt); | ||
196 | |||
99 | /* | 197 | /* |
100 | * Type 1: Dynamic | 198 | * Type 1: Dynamic |
101 | * --------------- | 199 | * --------------- |
diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index f14ff1ffab29..c3fed31166b5 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c | |||
@@ -184,7 +184,7 @@ static void acpi_pci_bridge_scan(struct acpi_device *device) | |||
184 | } | 184 | } |
185 | } | 185 | } |
186 | 186 | ||
187 | static int acpi_pci_root_add(struct acpi_device *device) | 187 | static int __devinit acpi_pci_root_add(struct acpi_device *device) |
188 | { | 188 | { |
189 | int result = 0; | 189 | int result = 0; |
190 | struct acpi_pci_root *root = NULL; | 190 | struct acpi_pci_root *root = NULL; |
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index a3cc8a98255c..36a68fa114e3 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
@@ -840,17 +840,19 @@ static int is_processor_present(acpi_handle handle) | |||
840 | 840 | ||
841 | 841 | ||
842 | status = acpi_evaluate_integer(handle, "_STA", NULL, &sta); | 842 | status = acpi_evaluate_integer(handle, "_STA", NULL, &sta); |
843 | /* | ||
844 | * if a processor object does not have an _STA object, | ||
845 | * OSPM assumes that the processor is present. | ||
846 | */ | ||
847 | if (status == AE_NOT_FOUND) | ||
848 | return 1; | ||
849 | 843 | ||
850 | if (ACPI_SUCCESS(status) && (sta & ACPI_STA_DEVICE_PRESENT)) | 844 | if (ACPI_SUCCESS(status) && (sta & ACPI_STA_DEVICE_PRESENT)) |
851 | return 1; | 845 | return 1; |
852 | 846 | ||
853 | ACPI_EXCEPTION((AE_INFO, status, "Processor Device is not present")); | 847 | /* |
848 | * _STA is mandatory for a processor that supports hot plug | ||
849 | */ | ||
850 | if (status == AE_NOT_FOUND) | ||
851 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, | ||
852 | "Processor does not support hot plug\n")); | ||
853 | else | ||
854 | ACPI_EXCEPTION((AE_INFO, status, | ||
855 | "Processor Device is not present")); | ||
854 | return 0; | 856 | return 0; |
855 | } | 857 | } |
856 | 858 | ||
@@ -886,8 +888,8 @@ int acpi_processor_device_add(acpi_handle handle, struct acpi_device **device) | |||
886 | return 0; | 888 | return 0; |
887 | } | 889 | } |
888 | 890 | ||
889 | static void | 891 | static void __ref acpi_processor_hotplug_notify(acpi_handle handle, |
890 | acpi_processor_hotplug_notify(acpi_handle handle, u32 event, void *data) | 892 | u32 event, void *data) |
891 | { | 893 | { |
892 | struct acpi_processor *pr; | 894 | struct acpi_processor *pr; |
893 | struct acpi_device *device = NULL; | 895 | struct acpi_device *device = NULL; |
@@ -897,9 +899,10 @@ acpi_processor_hotplug_notify(acpi_handle handle, u32 event, void *data) | |||
897 | switch (event) { | 899 | switch (event) { |
898 | case ACPI_NOTIFY_BUS_CHECK: | 900 | case ACPI_NOTIFY_BUS_CHECK: |
899 | case ACPI_NOTIFY_DEVICE_CHECK: | 901 | case ACPI_NOTIFY_DEVICE_CHECK: |
900 | printk("Processor driver received %s event\n", | 902 | ACPI_DEBUG_PRINT((ACPI_DB_INFO, |
903 | "Processor driver received %s event\n", | ||
901 | (event == ACPI_NOTIFY_BUS_CHECK) ? | 904 | (event == ACPI_NOTIFY_BUS_CHECK) ? |
902 | "ACPI_NOTIFY_BUS_CHECK" : "ACPI_NOTIFY_DEVICE_CHECK"); | 905 | "ACPI_NOTIFY_BUS_CHECK" : "ACPI_NOTIFY_DEVICE_CHECK")); |
903 | 906 | ||
904 | if (!is_processor_present(handle)) | 907 | if (!is_processor_present(handle)) |
905 | break; | 908 | break; |
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index 3fac011f9cf9..57570ac47803 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c | |||
@@ -609,7 +609,8 @@ acpi_bus_get_ejd(acpi_handle handle, acpi_handle *ejd) | |||
609 | status = acpi_evaluate_object(handle, "_EJD", NULL, &buffer); | 609 | status = acpi_evaluate_object(handle, "_EJD", NULL, &buffer); |
610 | if (ACPI_SUCCESS(status)) { | 610 | if (ACPI_SUCCESS(status)) { |
611 | obj = buffer.pointer; | 611 | obj = buffer.pointer; |
612 | status = acpi_get_handle(NULL, obj->string.pointer, ejd); | 612 | status = acpi_get_handle(ACPI_ROOT_OBJECT, obj->string.pointer, |
613 | ejd); | ||
613 | kfree(buffer.pointer); | 614 | kfree(buffer.pointer); |
614 | } | 615 | } |
615 | return status; | 616 | return status; |
@@ -966,7 +967,7 @@ static void acpi_device_set_id(struct acpi_device *device, | |||
966 | case ACPI_BUS_TYPE_DEVICE: | 967 | case ACPI_BUS_TYPE_DEVICE: |
967 | status = acpi_get_object_info(handle, &buffer); | 968 | status = acpi_get_object_info(handle, &buffer); |
968 | if (ACPI_FAILURE(status)) { | 969 | if (ACPI_FAILURE(status)) { |
969 | printk(KERN_ERR PREFIX "%s: Error reading device info\n", __FUNCTION__); | 970 | printk(KERN_ERR PREFIX "%s: Error reading device info\n", __func__); |
970 | return; | 971 | return; |
971 | } | 972 | } |
972 | 973 | ||
diff --git a/drivers/acpi/sleep/main.c b/drivers/acpi/sleep/main.c index 293a1cbb47c0..d2f71a54726c 100644 --- a/drivers/acpi/sleep/main.c +++ b/drivers/acpi/sleep/main.c | |||
@@ -504,7 +504,7 @@ static void acpi_power_off_prepare(void) | |||
504 | static void acpi_power_off(void) | 504 | static void acpi_power_off(void) |
505 | { | 505 | { |
506 | /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ | 506 | /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ |
507 | printk("%s called\n", __FUNCTION__); | 507 | printk("%s called\n", __func__); |
508 | local_irq_disable(); | 508 | local_irq_disable(); |
509 | acpi_enable_wakeup_device(ACPI_STATE_S5); | 509 | acpi_enable_wakeup_device(ACPI_STATE_S5); |
510 | acpi_enter_sleep_state(ACPI_STATE_S5); | 510 | acpi_enter_sleep_state(ACPI_STATE_S5); |
diff --git a/drivers/acpi/system.c b/drivers/acpi/system.c index 55cf4c05bb74..4749f379a915 100644 --- a/drivers/acpi/system.c +++ b/drivers/acpi/system.c | |||
@@ -319,7 +319,7 @@ void acpi_irq_stats_init(void) | |||
319 | goto fail; | 319 | goto fail; |
320 | 320 | ||
321 | for (i = 0; i < num_counters; ++i) { | 321 | for (i = 0; i < num_counters; ++i) { |
322 | char buffer[10]; | 322 | char buffer[12]; |
323 | char *name; | 323 | char *name; |
324 | 324 | ||
325 | if (i < num_gpes) | 325 | if (i < num_gpes) |
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 8d4b79b4f933..c4e00ac8ea85 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
@@ -879,6 +879,8 @@ static void acpi_thermal_check(void *data) | |||
879 | } | 879 | } |
880 | 880 | ||
881 | /* sys I/F for generic thermal sysfs support */ | 881 | /* sys I/F for generic thermal sysfs support */ |
882 | #define KELVIN_TO_MILLICELSIUS(t) (t * 100 - 273200) | ||
883 | |||
882 | static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf) | 884 | static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf) |
883 | { | 885 | { |
884 | struct acpi_thermal *tz = thermal->devdata; | 886 | struct acpi_thermal *tz = thermal->devdata; |
@@ -886,7 +888,7 @@ static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf) | |||
886 | if (!tz) | 888 | if (!tz) |
887 | return -EINVAL; | 889 | return -EINVAL; |
888 | 890 | ||
889 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS(tz->temperature)); | 891 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS(tz->temperature)); |
890 | } | 892 | } |
891 | 893 | ||
892 | static const char enabled[] = "kernel"; | 894 | static const char enabled[] = "kernel"; |
@@ -980,21 +982,21 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal, | |||
980 | 982 | ||
981 | if (tz->trips.critical.flags.valid) { | 983 | if (tz->trips.critical.flags.valid) { |
982 | if (!trip) | 984 | if (!trip) |
983 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 985 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
984 | tz->trips.critical.temperature)); | 986 | tz->trips.critical.temperature)); |
985 | trip--; | 987 | trip--; |
986 | } | 988 | } |
987 | 989 | ||
988 | if (tz->trips.hot.flags.valid) { | 990 | if (tz->trips.hot.flags.valid) { |
989 | if (!trip) | 991 | if (!trip) |
990 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 992 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
991 | tz->trips.hot.temperature)); | 993 | tz->trips.hot.temperature)); |
992 | trip--; | 994 | trip--; |
993 | } | 995 | } |
994 | 996 | ||
995 | if (tz->trips.passive.flags.valid) { | 997 | if (tz->trips.passive.flags.valid) { |
996 | if (!trip) | 998 | if (!trip) |
997 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 999 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
998 | tz->trips.passive.temperature)); | 1000 | tz->trips.passive.temperature)); |
999 | trip--; | 1001 | trip--; |
1000 | } | 1002 | } |
@@ -1002,7 +1004,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal, | |||
1002 | for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && | 1004 | for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && |
1003 | tz->trips.active[i].flags.valid; i++) { | 1005 | tz->trips.active[i].flags.valid; i++) { |
1004 | if (!trip) | 1006 | if (!trip) |
1005 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 1007 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
1006 | tz->trips.active[i].temperature)); | 1008 | tz->trips.active[i].temperature)); |
1007 | trip--; | 1009 | trip--; |
1008 | } | 1010 | } |
diff --git a/drivers/acpi/toshiba_acpi.c b/drivers/acpi/toshiba_acpi.c index 9e8c20c6a0b7..0a43c8e0eff3 100644 --- a/drivers/acpi/toshiba_acpi.c +++ b/drivers/acpi/toshiba_acpi.c | |||
@@ -99,6 +99,13 @@ MODULE_LICENSE("GPL"); | |||
99 | #define HCI_VIDEO_OUT_CRT 0x2 | 99 | #define HCI_VIDEO_OUT_CRT 0x2 |
100 | #define HCI_VIDEO_OUT_TV 0x4 | 100 | #define HCI_VIDEO_OUT_TV 0x4 |
101 | 101 | ||
102 | static const struct acpi_device_id toshiba_device_ids[] = { | ||
103 | {"TOS6200", 0}, | ||
104 | {"TOS1900", 0}, | ||
105 | {"", 0}, | ||
106 | }; | ||
107 | MODULE_DEVICE_TABLE(acpi, toshiba_device_ids); | ||
108 | |||
102 | /* utility | 109 | /* utility |
103 | */ | 110 | */ |
104 | 111 | ||
diff --git a/drivers/acpi/utilities/utdebug.c b/drivers/acpi/utilities/utdebug.c index c7e128e5369b..7361204b1eef 100644 --- a/drivers/acpi/utilities/utdebug.c +++ b/drivers/acpi/utilities/utdebug.c | |||
@@ -109,7 +109,7 @@ void acpi_ut_track_stack_ptr(void) | |||
109 | * RETURN: Updated pointer to the function name | 109 | * RETURN: Updated pointer to the function name |
110 | * | 110 | * |
111 | * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. | 111 | * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. |
112 | * This allows compiler macros such as __FUNCTION__ to be used | 112 | * This allows compiler macros such as __func__ to be used |
113 | * with no change to the debug output. | 113 | * with no change to the debug output. |
114 | * | 114 | * |
115 | ******************************************************************************/ | 115 | ******************************************************************************/ |
diff --git a/drivers/acpi/utilities/utobject.c b/drivers/acpi/utilities/utobject.c index 76ee766c84f9..e08b3fa6639f 100644 --- a/drivers/acpi/utilities/utobject.c +++ b/drivers/acpi/utilities/utobject.c | |||
@@ -432,7 +432,7 @@ acpi_ut_get_simple_object_size(union acpi_operand_object *internal_object, | |||
432 | * element -- which is legal) | 432 | * element -- which is legal) |
433 | */ | 433 | */ |
434 | if (!internal_object) { | 434 | if (!internal_object) { |
435 | *obj_length = 0; | 435 | *obj_length = sizeof(union acpi_object); |
436 | return_ACPI_STATUS(AE_OK); | 436 | return_ACPI_STATUS(AE_OK); |
437 | } | 437 | } |
438 | 438 | ||
diff --git a/drivers/acpi/utils.c b/drivers/acpi/utils.c index eba55b7d6c95..44ea60cf21c0 100644 --- a/drivers/acpi/utils.c +++ b/drivers/acpi/utils.c | |||
@@ -407,6 +407,12 @@ acpi_evaluate_reference(acpi_handle handle, | |||
407 | break; | 407 | break; |
408 | } | 408 | } |
409 | 409 | ||
410 | if (!element->reference.handle) { | ||
411 | printk(KERN_WARNING PREFIX "Invalid reference in" | ||
412 | " package %s\n", pathname); | ||
413 | status = AE_NULL_ENTRY; | ||
414 | break; | ||
415 | } | ||
410 | /* Get the acpi_handle. */ | 416 | /* Get the acpi_handle. */ |
411 | 417 | ||
412 | list->handles[i] = element->reference.handle; | 418 | list->handles[i] = element->reference.handle; |
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index 12cce69b5441..1bc0c74f2755 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
@@ -713,7 +713,7 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device) | |||
713 | 713 | ||
714 | kfree(obj); | 714 | kfree(obj); |
715 | 715 | ||
716 | if (device->cap._BCL && device->cap._BCM && device->cap._BQC && max_level > 0){ | 716 | if (device->cap._BCL && device->cap._BCM && max_level > 0) { |
717 | int result; | 717 | int result; |
718 | static int count = 0; | 718 | static int count = 0; |
719 | char *name; | 719 | char *name; |
@@ -1201,7 +1201,7 @@ static int acpi_video_bus_ROM_seq_show(struct seq_file *seq, void *offset) | |||
1201 | if (!video) | 1201 | if (!video) |
1202 | goto end; | 1202 | goto end; |
1203 | 1203 | ||
1204 | printk(KERN_INFO PREFIX "Please implement %s\n", __FUNCTION__); | 1204 | printk(KERN_INFO PREFIX "Please implement %s\n", __func__); |
1205 | seq_printf(seq, "<TODO>\n"); | 1205 | seq_printf(seq, "<TODO>\n"); |
1206 | 1206 | ||
1207 | end: | 1207 | end: |
diff --git a/drivers/acpi/wmi.c b/drivers/acpi/wmi.c index efacc9f8bfe3..c33b1c6e93b1 100644 --- a/drivers/acpi/wmi.c +++ b/drivers/acpi/wmi.c | |||
@@ -293,7 +293,7 @@ struct acpi_buffer *out) | |||
293 | { | 293 | { |
294 | struct guid_block *block = NULL; | 294 | struct guid_block *block = NULL; |
295 | struct wmi_block *wblock = NULL; | 295 | struct wmi_block *wblock = NULL; |
296 | acpi_handle handle; | 296 | acpi_handle handle, wc_handle; |
297 | acpi_status status, wc_status = AE_ERROR; | 297 | acpi_status status, wc_status = AE_ERROR; |
298 | struct acpi_object_list input, wc_input; | 298 | struct acpi_object_list input, wc_input; |
299 | union acpi_object wc_params[1], wq_params[1]; | 299 | union acpi_object wc_params[1], wq_params[1]; |
@@ -338,8 +338,10 @@ struct acpi_buffer *out) | |||
338 | * expensive, but have no corresponding WCxx method. So we | 338 | * expensive, but have no corresponding WCxx method. So we |
339 | * should not fail if this happens. | 339 | * should not fail if this happens. |
340 | */ | 340 | */ |
341 | wc_status = acpi_evaluate_object(handle, wc_method, | 341 | wc_status = acpi_get_handle(handle, wc_method, &wc_handle); |
342 | &wc_input, NULL); | 342 | if (ACPI_SUCCESS(wc_status)) |
343 | wc_status = acpi_evaluate_object(handle, wc_method, | ||
344 | &wc_input, NULL); | ||
343 | } | 345 | } |
344 | 346 | ||
345 | strcpy(method, "WQ"); | 347 | strcpy(method, "WQ"); |
@@ -351,7 +353,7 @@ struct acpi_buffer *out) | |||
351 | * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method, even if | 353 | * If ACPI_WMI_EXPENSIVE, call the relevant WCxx method, even if |
352 | * the WQxx method failed - we should disable collection anyway. | 354 | * the WQxx method failed - we should disable collection anyway. |
353 | */ | 355 | */ |
354 | if ((block->flags & ACPI_WMI_EXPENSIVE) && wc_status) { | 356 | if ((block->flags & ACPI_WMI_EXPENSIVE) && ACPI_SUCCESS(wc_status)) { |
355 | wc_params[0].integer.value = 0; | 357 | wc_params[0].integer.value = 0; |
356 | status = acpi_evaluate_object(handle, | 358 | status = acpi_evaluate_object(handle, |
357 | wc_method, &wc_input, NULL); | 359 | wc_method, &wc_input, NULL); |
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c index c662d686154a..47c57a4294b7 100644 --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c | |||
@@ -331,8 +331,8 @@ module_param(fs_keystream, int, 0); | |||
331 | #define FS_DEBUG_QSIZE 0x00001000 | 331 | #define FS_DEBUG_QSIZE 0x00001000 |
332 | 332 | ||
333 | 333 | ||
334 | #define func_enter() fs_dprintk (FS_DEBUG_FLOW, "fs: enter %s\n", __FUNCTION__) | 334 | #define func_enter() fs_dprintk(FS_DEBUG_FLOW, "fs: enter %s\n", __func__) |
335 | #define func_exit() fs_dprintk (FS_DEBUG_FLOW, "fs: exit %s\n", __FUNCTION__) | 335 | #define func_exit() fs_dprintk(FS_DEBUG_FLOW, "fs: exit %s\n", __func__) |
336 | 336 | ||
337 | 337 | ||
338 | static struct fs_dev *fs_boards = NULL; | 338 | static struct fs_dev *fs_boards = NULL; |
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index f97e050338f0..9427a61f62b0 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c | |||
@@ -95,8 +95,8 @@ | |||
95 | #if 1 | 95 | #if 1 |
96 | #define ASSERT(expr) if (!(expr)) { \ | 96 | #define ASSERT(expr) if (!(expr)) { \ |
97 | printk(FORE200E "assertion failed! %s[%d]: %s\n", \ | 97 | printk(FORE200E "assertion failed! %s[%d]: %s\n", \ |
98 | __FUNCTION__, __LINE__, #expr); \ | 98 | __func__, __LINE__, #expr); \ |
99 | panic(FORE200E "%s", __FUNCTION__); \ | 99 | panic(FORE200E "%s", __func__); \ |
100 | } | 100 | } |
101 | #else | 101 | #else |
102 | #define ASSERT(expr) do {} while (0) | 102 | #define ASSERT(expr) do {} while (0) |
diff --git a/drivers/atm/idt77252.c b/drivers/atm/idt77252.c index eee54c0cde68..b967919fb7e2 100644 --- a/drivers/atm/idt77252.c +++ b/drivers/atm/idt77252.c | |||
@@ -555,7 +555,7 @@ idt77252_tx_dump(struct idt77252_dev *card) | |||
555 | struct vc_map *vc; | 555 | struct vc_map *vc; |
556 | int i; | 556 | int i; |
557 | 557 | ||
558 | printk("%s\n", __FUNCTION__); | 558 | printk("%s\n", __func__); |
559 | for (i = 0; i < card->tct_size; i++) { | 559 | for (i = 0; i < card->tct_size; i++) { |
560 | vc = card->vcs[i]; | 560 | vc = card->vcs[i]; |
561 | if (!vc) | 561 | if (!vc) |
@@ -1035,7 +1035,7 @@ dequeue_rx(struct idt77252_dev *card, struct rsq_entry *rsqe) | |||
1035 | skb = sb_pool_skb(card, le32_to_cpu(rsqe->word_2)); | 1035 | skb = sb_pool_skb(card, le32_to_cpu(rsqe->word_2)); |
1036 | if (skb == NULL) { | 1036 | if (skb == NULL) { |
1037 | printk("%s: NULL skb in %s, rsqe: %08x %08x %08x %08x\n", | 1037 | printk("%s: NULL skb in %s, rsqe: %08x %08x %08x %08x\n", |
1038 | card->name, __FUNCTION__, | 1038 | card->name, __func__, |
1039 | le32_to_cpu(rsqe->word_1), le32_to_cpu(rsqe->word_2), | 1039 | le32_to_cpu(rsqe->word_1), le32_to_cpu(rsqe->word_2), |
1040 | le32_to_cpu(rsqe->word_3), le32_to_cpu(rsqe->word_4)); | 1040 | le32_to_cpu(rsqe->word_3), le32_to_cpu(rsqe->word_4)); |
1041 | return; | 1041 | return; |
@@ -1873,7 +1873,7 @@ add_rx_skb(struct idt77252_dev *card, int queue, | |||
1873 | return; | 1873 | return; |
1874 | 1874 | ||
1875 | if (sb_pool_add(card, skb, queue)) { | 1875 | if (sb_pool_add(card, skb, queue)) { |
1876 | printk("%s: SB POOL full\n", __FUNCTION__); | 1876 | printk("%s: SB POOL full\n", __func__); |
1877 | goto outfree; | 1877 | goto outfree; |
1878 | } | 1878 | } |
1879 | 1879 | ||
@@ -1883,7 +1883,7 @@ add_rx_skb(struct idt77252_dev *card, int queue, | |||
1883 | IDT77252_PRV_PADDR(skb) = paddr; | 1883 | IDT77252_PRV_PADDR(skb) = paddr; |
1884 | 1884 | ||
1885 | if (push_rx_skb(card, skb, queue)) { | 1885 | if (push_rx_skb(card, skb, queue)) { |
1886 | printk("%s: FB QUEUE full\n", __FUNCTION__); | 1886 | printk("%s: FB QUEUE full\n", __func__); |
1887 | goto outunmap; | 1887 | goto outunmap; |
1888 | } | 1888 | } |
1889 | } | 1889 | } |
@@ -3821,12 +3821,12 @@ static int __init idt77252_init(void) | |||
3821 | { | 3821 | { |
3822 | struct sk_buff *skb; | 3822 | struct sk_buff *skb; |
3823 | 3823 | ||
3824 | printk("%s: at %p\n", __FUNCTION__, idt77252_init); | 3824 | printk("%s: at %p\n", __func__, idt77252_init); |
3825 | 3825 | ||
3826 | if (sizeof(skb->cb) < sizeof(struct atm_skb_data) + | 3826 | if (sizeof(skb->cb) < sizeof(struct atm_skb_data) + |
3827 | sizeof(struct idt77252_skb_prv)) { | 3827 | sizeof(struct idt77252_skb_prv)) { |
3828 | printk(KERN_ERR "%s: skb->cb is too small (%lu < %lu)\n", | 3828 | printk(KERN_ERR "%s: skb->cb is too small (%lu < %lu)\n", |
3829 | __FUNCTION__, (unsigned long) sizeof(skb->cb), | 3829 | __func__, (unsigned long) sizeof(skb->cb), |
3830 | (unsigned long) sizeof(struct atm_skb_data) + | 3830 | (unsigned long) sizeof(struct atm_skb_data) + |
3831 | sizeof(struct idt77252_skb_prv)); | 3831 | sizeof(struct idt77252_skb_prv)); |
3832 | return -EIO; | 3832 | return -EIO; |
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index 32c79a55511b..7652e87d60c5 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c | |||
@@ -217,7 +217,6 @@ static int use_virtual_dma; | |||
217 | */ | 217 | */ |
218 | 218 | ||
219 | static DEFINE_SPINLOCK(floppy_lock); | 219 | static DEFINE_SPINLOCK(floppy_lock); |
220 | static struct completion device_release; | ||
221 | 220 | ||
222 | static unsigned short virtual_dma_port = 0x3f0; | 221 | static unsigned short virtual_dma_port = 0x3f0; |
223 | irqreturn_t floppy_interrupt(int irq, void *dev_id); | 222 | irqreturn_t floppy_interrupt(int irq, void *dev_id); |
@@ -4144,7 +4143,6 @@ DEVICE_ATTR(cmos,S_IRUGO,floppy_cmos_show,NULL); | |||
4144 | 4143 | ||
4145 | static void floppy_device_release(struct device *dev) | 4144 | static void floppy_device_release(struct device *dev) |
4146 | { | 4145 | { |
4147 | complete(&device_release); | ||
4148 | } | 4146 | } |
4149 | 4147 | ||
4150 | static struct platform_device floppy_device[N_DRIVE]; | 4148 | static struct platform_device floppy_device[N_DRIVE]; |
@@ -4539,7 +4537,6 @@ void cleanup_module(void) | |||
4539 | { | 4537 | { |
4540 | int drive; | 4538 | int drive; |
4541 | 4539 | ||
4542 | init_completion(&device_release); | ||
4543 | blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); | 4540 | blk_unregister_region(MKDEV(FLOPPY_MAJOR, 0), 256); |
4544 | unregister_blkdev(FLOPPY_MAJOR, "fd"); | 4541 | unregister_blkdev(FLOPPY_MAJOR, "fd"); |
4545 | 4542 | ||
@@ -4564,8 +4561,6 @@ void cleanup_module(void) | |||
4564 | 4561 | ||
4565 | /* eject disk, if any */ | 4562 | /* eject disk, if any */ |
4566 | fd_eject(0); | 4563 | fd_eject(0); |
4567 | |||
4568 | wait_for_completion(&device_release); | ||
4569 | } | 4564 | } |
4570 | 4565 | ||
4571 | module_param(floppy, charp, 0); | 4566 | module_param(floppy, charp, 0); |
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index 9e61fca46117..41ca721d2523 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c | |||
@@ -528,8 +528,7 @@ static int block_event_to_scatterlist(const struct vioblocklpevent *bevent, | |||
528 | numsg = VIOMAXBLOCKDMA; | 528 | numsg = VIOMAXBLOCKDMA; |
529 | 529 | ||
530 | *total_len = 0; | 530 | *total_len = 0; |
531 | memset(sg, 0, sizeof(sg[0]) * VIOMAXBLOCKDMA); | 531 | sg_init_table(sg, VIOMAXBLOCKDMA); |
532 | |||
533 | for (i = 0; (i < numsg) && (rw_data->dma_info[i].len > 0); ++i) { | 532 | for (i = 0; (i < numsg) && (rw_data->dma_info[i].len > 0); ++i) { |
534 | sg_dma_address(&sg[i]) = rw_data->dma_info[i].token; | 533 | sg_dma_address(&sg[i]) = rw_data->dma_info[i].token; |
535 | sg_dma_len(&sg[i]) = rw_data->dma_info[i].len; | 534 | sg_dma_len(&sg[i]) = rw_data->dma_info[i].len; |
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c index f16c94cbf488..8b884f87d8b7 100644 --- a/drivers/bluetooth/hci_usb.c +++ b/drivers/bluetooth/hci_usb.c | |||
@@ -149,6 +149,9 @@ static struct usb_device_id blacklist_ids[] = { | |||
149 | { USB_DEVICE(0x0400, 0x0807), .driver_info = HCI_BROKEN_ISOC }, | 149 | { USB_DEVICE(0x0400, 0x0807), .driver_info = HCI_BROKEN_ISOC }, |
150 | { USB_DEVICE(0x0400, 0x080a), .driver_info = HCI_BROKEN_ISOC }, | 150 | { USB_DEVICE(0x0400, 0x080a), .driver_info = HCI_BROKEN_ISOC }, |
151 | 151 | ||
152 | /* CONWISE Technology based adapters with buggy SCO support */ | ||
153 | { USB_DEVICE(0x0e5e, 0x6622), .driver_info = HCI_BROKEN_ISOC }, | ||
154 | |||
152 | /* Belkin F8T012 and F8T013 devices */ | 155 | /* Belkin F8T012 and F8T013 devices */ |
153 | { USB_DEVICE(0x050d, 0x0012), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, | 156 | { USB_DEVICE(0x050d, 0x0012), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, |
154 | { USB_DEVICE(0x050d, 0x0013), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, | 157 | { USB_DEVICE(0x050d, 0x0013), .driver_info = HCI_RESET | HCI_WRONG_SCO_MTU }, |
diff --git a/drivers/char/riscom8.c b/drivers/char/riscom8.c index 589ac6f65b9a..3f9d0a9ac36d 100644 --- a/drivers/char/riscom8.c +++ b/drivers/char/riscom8.c | |||
@@ -1709,7 +1709,7 @@ static int __init riscom8_init_module (void) | |||
1709 | 1709 | ||
1710 | if (iobase || iobase1 || iobase2 || iobase3) { | 1710 | if (iobase || iobase1 || iobase2 || iobase3) { |
1711 | for(i = 0; i < RC_NBOARD; i++) | 1711 | for(i = 0; i < RC_NBOARD; i++) |
1712 | rc_board[0].base = 0; | 1712 | rc_board[i].base = 0; |
1713 | } | 1713 | } |
1714 | 1714 | ||
1715 | if (iobase) | 1715 | if (iobase) |
diff --git a/drivers/dma/dmaengine.c b/drivers/dma/dmaengine.c index 29965231b912..8db0e7f9d3f4 100644 --- a/drivers/dma/dmaengine.c +++ b/drivers/dma/dmaengine.c | |||
@@ -357,7 +357,7 @@ int dma_async_device_register(struct dma_device *device) | |||
357 | !device->device_prep_dma_zero_sum); | 357 | !device->device_prep_dma_zero_sum); |
358 | BUG_ON(dma_has_cap(DMA_MEMSET, device->cap_mask) && | 358 | BUG_ON(dma_has_cap(DMA_MEMSET, device->cap_mask) && |
359 | !device->device_prep_dma_memset); | 359 | !device->device_prep_dma_memset); |
360 | BUG_ON(dma_has_cap(DMA_ZERO_SUM, device->cap_mask) && | 360 | BUG_ON(dma_has_cap(DMA_INTERRUPT, device->cap_mask) && |
361 | !device->device_prep_dma_interrupt); | 361 | !device->device_prep_dma_interrupt); |
362 | 362 | ||
363 | BUG_ON(!device->device_alloc_chan_resources); | 363 | BUG_ON(!device->device_alloc_chan_resources); |
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c index cc9a68158d99..ad2f938597e2 100644 --- a/drivers/dma/fsldma.c +++ b/drivers/dma/fsldma.c | |||
@@ -57,12 +57,12 @@ static void dma_init(struct fsl_dma_chan *fsl_chan) | |||
57 | 57 | ||
58 | } | 58 | } |
59 | 59 | ||
60 | static void set_sr(struct fsl_dma_chan *fsl_chan, dma_addr_t val) | 60 | static void set_sr(struct fsl_dma_chan *fsl_chan, u32 val) |
61 | { | 61 | { |
62 | DMA_OUT(fsl_chan, &fsl_chan->reg_base->sr, val, 32); | 62 | DMA_OUT(fsl_chan, &fsl_chan->reg_base->sr, val, 32); |
63 | } | 63 | } |
64 | 64 | ||
65 | static dma_addr_t get_sr(struct fsl_dma_chan *fsl_chan) | 65 | static u32 get_sr(struct fsl_dma_chan *fsl_chan) |
66 | { | 66 | { |
67 | return DMA_IN(fsl_chan, &fsl_chan->reg_base->sr, 32); | 67 | return DMA_IN(fsl_chan, &fsl_chan->reg_base->sr, 32); |
68 | } | 68 | } |
@@ -406,6 +406,32 @@ static void fsl_dma_free_chan_resources(struct dma_chan *chan) | |||
406 | dma_pool_destroy(fsl_chan->desc_pool); | 406 | dma_pool_destroy(fsl_chan->desc_pool); |
407 | } | 407 | } |
408 | 408 | ||
409 | static struct dma_async_tx_descriptor * | ||
410 | fsl_dma_prep_interrupt(struct dma_chan *chan) | ||
411 | { | ||
412 | struct fsl_dma_chan *fsl_chan; | ||
413 | struct fsl_desc_sw *new; | ||
414 | |||
415 | if (!chan) | ||
416 | return NULL; | ||
417 | |||
418 | fsl_chan = to_fsl_chan(chan); | ||
419 | |||
420 | new = fsl_dma_alloc_descriptor(fsl_chan); | ||
421 | if (!new) { | ||
422 | dev_err(fsl_chan->dev, "No free memory for link descriptor\n"); | ||
423 | return NULL; | ||
424 | } | ||
425 | |||
426 | new->async_tx.cookie = -EBUSY; | ||
427 | new->async_tx.ack = 0; | ||
428 | |||
429 | /* Set End-of-link to the last link descriptor of new list*/ | ||
430 | set_ld_eol(fsl_chan, new); | ||
431 | |||
432 | return &new->async_tx; | ||
433 | } | ||
434 | |||
409 | static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy( | 435 | static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy( |
410 | struct dma_chan *chan, dma_addr_t dma_dest, dma_addr_t dma_src, | 436 | struct dma_chan *chan, dma_addr_t dma_dest, dma_addr_t dma_src, |
411 | size_t len, unsigned long flags) | 437 | size_t len, unsigned long flags) |
@@ -436,7 +462,7 @@ static struct dma_async_tx_descriptor *fsl_dma_prep_memcpy( | |||
436 | dev_dbg(fsl_chan->dev, "new link desc alloc %p\n", new); | 462 | dev_dbg(fsl_chan->dev, "new link desc alloc %p\n", new); |
437 | #endif | 463 | #endif |
438 | 464 | ||
439 | copy = min(len, FSL_DMA_BCR_MAX_CNT); | 465 | copy = min(len, (size_t)FSL_DMA_BCR_MAX_CNT); |
440 | 466 | ||
441 | set_desc_cnt(fsl_chan, &new->hw, copy); | 467 | set_desc_cnt(fsl_chan, &new->hw, copy); |
442 | set_desc_src(fsl_chan, &new->hw, dma_src); | 468 | set_desc_src(fsl_chan, &new->hw, dma_src); |
@@ -513,7 +539,6 @@ static void fsl_chan_ld_cleanup(struct fsl_dma_chan *fsl_chan) | |||
513 | 539 | ||
514 | spin_lock_irqsave(&fsl_chan->desc_lock, flags); | 540 | spin_lock_irqsave(&fsl_chan->desc_lock, flags); |
515 | 541 | ||
516 | fsl_dma_update_completed_cookie(fsl_chan); | ||
517 | dev_dbg(fsl_chan->dev, "chan completed_cookie = %d\n", | 542 | dev_dbg(fsl_chan->dev, "chan completed_cookie = %d\n", |
518 | fsl_chan->completed_cookie); | 543 | fsl_chan->completed_cookie); |
519 | list_for_each_entry_safe(desc, _desc, &fsl_chan->ld_queue, node) { | 544 | list_for_each_entry_safe(desc, _desc, &fsl_chan->ld_queue, node) { |
@@ -581,8 +606,8 @@ static void fsl_chan_xfer_ld_queue(struct fsl_dma_chan *fsl_chan) | |||
581 | if (ld_node != &fsl_chan->ld_queue) { | 606 | if (ld_node != &fsl_chan->ld_queue) { |
582 | /* Get the ld start address from ld_queue */ | 607 | /* Get the ld start address from ld_queue */ |
583 | next_dest_addr = to_fsl_desc(ld_node)->async_tx.phys; | 608 | next_dest_addr = to_fsl_desc(ld_node)->async_tx.phys; |
584 | dev_dbg(fsl_chan->dev, "xfer LDs staring from 0x%016llx\n", | 609 | dev_dbg(fsl_chan->dev, "xfer LDs staring from %p\n", |
585 | (u64)next_dest_addr); | 610 | (void *)next_dest_addr); |
586 | set_cdar(fsl_chan, next_dest_addr); | 611 | set_cdar(fsl_chan, next_dest_addr); |
587 | dma_start(fsl_chan); | 612 | dma_start(fsl_chan); |
588 | } else { | 613 | } else { |
@@ -662,7 +687,7 @@ static enum dma_status fsl_dma_is_complete(struct dma_chan *chan, | |||
662 | static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data) | 687 | static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data) |
663 | { | 688 | { |
664 | struct fsl_dma_chan *fsl_chan = (struct fsl_dma_chan *)data; | 689 | struct fsl_dma_chan *fsl_chan = (struct fsl_dma_chan *)data; |
665 | dma_addr_t stat; | 690 | u32 stat; |
666 | 691 | ||
667 | stat = get_sr(fsl_chan); | 692 | stat = get_sr(fsl_chan); |
668 | dev_dbg(fsl_chan->dev, "event: channel %d, stat = 0x%x\n", | 693 | dev_dbg(fsl_chan->dev, "event: channel %d, stat = 0x%x\n", |
@@ -681,10 +706,10 @@ static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data) | |||
681 | */ | 706 | */ |
682 | if (stat & FSL_DMA_SR_EOSI) { | 707 | if (stat & FSL_DMA_SR_EOSI) { |
683 | dev_dbg(fsl_chan->dev, "event: End-of-segments INT\n"); | 708 | dev_dbg(fsl_chan->dev, "event: End-of-segments INT\n"); |
684 | dev_dbg(fsl_chan->dev, "event: clndar 0x%016llx, " | 709 | dev_dbg(fsl_chan->dev, "event: clndar %p, nlndar %p\n", |
685 | "nlndar 0x%016llx\n", (u64)get_cdar(fsl_chan), | 710 | (void *)get_cdar(fsl_chan), (void *)get_ndar(fsl_chan)); |
686 | (u64)get_ndar(fsl_chan)); | ||
687 | stat &= ~FSL_DMA_SR_EOSI; | 711 | stat &= ~FSL_DMA_SR_EOSI; |
712 | fsl_dma_update_completed_cookie(fsl_chan); | ||
688 | } | 713 | } |
689 | 714 | ||
690 | /* If it current transfer is the end-of-transfer, | 715 | /* If it current transfer is the end-of-transfer, |
@@ -726,12 +751,15 @@ static void dma_do_tasklet(unsigned long data) | |||
726 | fsl_chan_ld_cleanup(fsl_chan); | 751 | fsl_chan_ld_cleanup(fsl_chan); |
727 | } | 752 | } |
728 | 753 | ||
754 | #ifdef FSL_DMA_CALLBACKTEST | ||
729 | static void fsl_dma_callback_test(struct fsl_dma_chan *fsl_chan) | 755 | static void fsl_dma_callback_test(struct fsl_dma_chan *fsl_chan) |
730 | { | 756 | { |
731 | if (fsl_chan) | 757 | if (fsl_chan) |
732 | dev_info(fsl_chan->dev, "selftest: callback is ok!\n"); | 758 | dev_info(fsl_chan->dev, "selftest: callback is ok!\n"); |
733 | } | 759 | } |
760 | #endif | ||
734 | 761 | ||
762 | #ifdef CONFIG_FSL_DMA_SELFTEST | ||
735 | static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) | 763 | static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) |
736 | { | 764 | { |
737 | struct dma_chan *chan; | 765 | struct dma_chan *chan; |
@@ -837,9 +865,9 @@ static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) | |||
837 | if (err) { | 865 | if (err) { |
838 | for (i = 0; (*(src + i) == *(dest + i)) && (i < test_size); | 866 | for (i = 0; (*(src + i) == *(dest + i)) && (i < test_size); |
839 | i++); | 867 | i++); |
840 | dev_err(fsl_chan->dev, "selftest: Test failed, data %d/%d is " | 868 | dev_err(fsl_chan->dev, "selftest: Test failed, data %d/%ld is " |
841 | "error! src 0x%x, dest 0x%x\n", | 869 | "error! src 0x%x, dest 0x%x\n", |
842 | i, test_size, *(src + i), *(dest + i)); | 870 | i, (long)test_size, *(src + i), *(dest + i)); |
843 | } | 871 | } |
844 | 872 | ||
845 | free_resources: | 873 | free_resources: |
@@ -848,6 +876,7 @@ out: | |||
848 | kfree(src); | 876 | kfree(src); |
849 | return err; | 877 | return err; |
850 | } | 878 | } |
879 | #endif | ||
851 | 880 | ||
852 | static int __devinit of_fsl_dma_chan_probe(struct of_device *dev, | 881 | static int __devinit of_fsl_dma_chan_probe(struct of_device *dev, |
853 | const struct of_device_id *match) | 882 | const struct of_device_id *match) |
@@ -1008,8 +1037,8 @@ static int __devinit of_fsl_dma_probe(struct of_device *dev, | |||
1008 | } | 1037 | } |
1009 | 1038 | ||
1010 | dev_info(&dev->dev, "Probe the Freescale DMA driver for %s " | 1039 | dev_info(&dev->dev, "Probe the Freescale DMA driver for %s " |
1011 | "controller at 0x%08x...\n", | 1040 | "controller at %p...\n", |
1012 | match->compatible, fdev->reg.start); | 1041 | match->compatible, (void *)fdev->reg.start); |
1013 | fdev->reg_base = ioremap(fdev->reg.start, fdev->reg.end | 1042 | fdev->reg_base = ioremap(fdev->reg.start, fdev->reg.end |
1014 | - fdev->reg.start + 1); | 1043 | - fdev->reg.start + 1); |
1015 | 1044 | ||
@@ -1017,6 +1046,7 @@ static int __devinit of_fsl_dma_probe(struct of_device *dev, | |||
1017 | dma_cap_set(DMA_INTERRUPT, fdev->common.cap_mask); | 1046 | dma_cap_set(DMA_INTERRUPT, fdev->common.cap_mask); |
1018 | fdev->common.device_alloc_chan_resources = fsl_dma_alloc_chan_resources; | 1047 | fdev->common.device_alloc_chan_resources = fsl_dma_alloc_chan_resources; |
1019 | fdev->common.device_free_chan_resources = fsl_dma_free_chan_resources; | 1048 | fdev->common.device_free_chan_resources = fsl_dma_free_chan_resources; |
1049 | fdev->common.device_prep_dma_interrupt = fsl_dma_prep_interrupt; | ||
1020 | fdev->common.device_prep_dma_memcpy = fsl_dma_prep_memcpy; | 1050 | fdev->common.device_prep_dma_memcpy = fsl_dma_prep_memcpy; |
1021 | fdev->common.device_is_tx_complete = fsl_dma_is_complete; | 1051 | fdev->common.device_is_tx_complete = fsl_dma_is_complete; |
1022 | fdev->common.device_issue_pending = fsl_dma_memcpy_issue_pending; | 1052 | fdev->common.device_issue_pending = fsl_dma_memcpy_issue_pending; |
diff --git a/drivers/dma/iop-adma.c b/drivers/dma/iop-adma.c index 3986d54492bd..f82b0906d466 100644 --- a/drivers/dma/iop-adma.c +++ b/drivers/dma/iop-adma.c | |||
@@ -140,7 +140,7 @@ static void __iop_adma_slot_cleanup(struct iop_adma_chan *iop_chan) | |||
140 | int busy = iop_chan_is_busy(iop_chan); | 140 | int busy = iop_chan_is_busy(iop_chan); |
141 | int seen_current = 0, slot_cnt = 0, slots_per_op = 0; | 141 | int seen_current = 0, slot_cnt = 0, slots_per_op = 0; |
142 | 142 | ||
143 | dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); | 143 | dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); |
144 | /* free completed slots from the chain starting with | 144 | /* free completed slots from the chain starting with |
145 | * the oldest descriptor | 145 | * the oldest descriptor |
146 | */ | 146 | */ |
@@ -438,7 +438,7 @@ iop_adma_tx_submit(struct dma_async_tx_descriptor *tx) | |||
438 | spin_unlock_bh(&iop_chan->lock); | 438 | spin_unlock_bh(&iop_chan->lock); |
439 | 439 | ||
440 | dev_dbg(iop_chan->device->common.dev, "%s cookie: %d slot: %d\n", | 440 | dev_dbg(iop_chan->device->common.dev, "%s cookie: %d slot: %d\n", |
441 | __FUNCTION__, sw_desc->async_tx.cookie, sw_desc->idx); | 441 | __func__, sw_desc->async_tx.cookie, sw_desc->idx); |
442 | 442 | ||
443 | return cookie; | 443 | return cookie; |
444 | } | 444 | } |
@@ -520,7 +520,7 @@ iop_adma_prep_dma_interrupt(struct dma_chan *chan) | |||
520 | struct iop_adma_desc_slot *sw_desc, *grp_start; | 520 | struct iop_adma_desc_slot *sw_desc, *grp_start; |
521 | int slot_cnt, slots_per_op; | 521 | int slot_cnt, slots_per_op; |
522 | 522 | ||
523 | dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); | 523 | dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); |
524 | 524 | ||
525 | spin_lock_bh(&iop_chan->lock); | 525 | spin_lock_bh(&iop_chan->lock); |
526 | slot_cnt = iop_chan_interrupt_slot_count(&slots_per_op, iop_chan); | 526 | slot_cnt = iop_chan_interrupt_slot_count(&slots_per_op, iop_chan); |
@@ -548,7 +548,7 @@ iop_adma_prep_dma_memcpy(struct dma_chan *chan, dma_addr_t dma_dest, | |||
548 | BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT)); | 548 | BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT)); |
549 | 549 | ||
550 | dev_dbg(iop_chan->device->common.dev, "%s len: %u\n", | 550 | dev_dbg(iop_chan->device->common.dev, "%s len: %u\n", |
551 | __FUNCTION__, len); | 551 | __func__, len); |
552 | 552 | ||
553 | spin_lock_bh(&iop_chan->lock); | 553 | spin_lock_bh(&iop_chan->lock); |
554 | slot_cnt = iop_chan_memcpy_slot_count(len, &slots_per_op); | 554 | slot_cnt = iop_chan_memcpy_slot_count(len, &slots_per_op); |
@@ -580,7 +580,7 @@ iop_adma_prep_dma_memset(struct dma_chan *chan, dma_addr_t dma_dest, | |||
580 | BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT)); | 580 | BUG_ON(unlikely(len > IOP_ADMA_MAX_BYTE_COUNT)); |
581 | 581 | ||
582 | dev_dbg(iop_chan->device->common.dev, "%s len: %u\n", | 582 | dev_dbg(iop_chan->device->common.dev, "%s len: %u\n", |
583 | __FUNCTION__, len); | 583 | __func__, len); |
584 | 584 | ||
585 | spin_lock_bh(&iop_chan->lock); | 585 | spin_lock_bh(&iop_chan->lock); |
586 | slot_cnt = iop_chan_memset_slot_count(len, &slots_per_op); | 586 | slot_cnt = iop_chan_memset_slot_count(len, &slots_per_op); |
@@ -614,7 +614,7 @@ iop_adma_prep_dma_xor(struct dma_chan *chan, dma_addr_t dma_dest, | |||
614 | 614 | ||
615 | dev_dbg(iop_chan->device->common.dev, | 615 | dev_dbg(iop_chan->device->common.dev, |
616 | "%s src_cnt: %d len: %u flags: %lx\n", | 616 | "%s src_cnt: %d len: %u flags: %lx\n", |
617 | __FUNCTION__, src_cnt, len, flags); | 617 | __func__, src_cnt, len, flags); |
618 | 618 | ||
619 | spin_lock_bh(&iop_chan->lock); | 619 | spin_lock_bh(&iop_chan->lock); |
620 | slot_cnt = iop_chan_xor_slot_count(len, src_cnt, &slots_per_op); | 620 | slot_cnt = iop_chan_xor_slot_count(len, src_cnt, &slots_per_op); |
@@ -648,7 +648,7 @@ iop_adma_prep_dma_zero_sum(struct dma_chan *chan, dma_addr_t *dma_src, | |||
648 | return NULL; | 648 | return NULL; |
649 | 649 | ||
650 | dev_dbg(iop_chan->device->common.dev, "%s src_cnt: %d len: %u\n", | 650 | dev_dbg(iop_chan->device->common.dev, "%s src_cnt: %d len: %u\n", |
651 | __FUNCTION__, src_cnt, len); | 651 | __func__, src_cnt, len); |
652 | 652 | ||
653 | spin_lock_bh(&iop_chan->lock); | 653 | spin_lock_bh(&iop_chan->lock); |
654 | slot_cnt = iop_chan_zero_sum_slot_count(len, src_cnt, &slots_per_op); | 654 | slot_cnt = iop_chan_zero_sum_slot_count(len, src_cnt, &slots_per_op); |
@@ -659,7 +659,7 @@ iop_adma_prep_dma_zero_sum(struct dma_chan *chan, dma_addr_t *dma_src, | |||
659 | iop_desc_set_zero_sum_byte_count(grp_start, len); | 659 | iop_desc_set_zero_sum_byte_count(grp_start, len); |
660 | grp_start->xor_check_result = result; | 660 | grp_start->xor_check_result = result; |
661 | pr_debug("\t%s: grp_start->xor_check_result: %p\n", | 661 | pr_debug("\t%s: grp_start->xor_check_result: %p\n", |
662 | __FUNCTION__, grp_start->xor_check_result); | 662 | __func__, grp_start->xor_check_result); |
663 | sw_desc->unmap_src_cnt = src_cnt; | 663 | sw_desc->unmap_src_cnt = src_cnt; |
664 | sw_desc->unmap_len = len; | 664 | sw_desc->unmap_len = len; |
665 | while (src_cnt--) | 665 | while (src_cnt--) |
@@ -700,7 +700,7 @@ static void iop_adma_free_chan_resources(struct dma_chan *chan) | |||
700 | iop_chan->last_used = NULL; | 700 | iop_chan->last_used = NULL; |
701 | 701 | ||
702 | dev_dbg(iop_chan->device->common.dev, "%s slots_allocated %d\n", | 702 | dev_dbg(iop_chan->device->common.dev, "%s slots_allocated %d\n", |
703 | __FUNCTION__, iop_chan->slots_allocated); | 703 | __func__, iop_chan->slots_allocated); |
704 | spin_unlock_bh(&iop_chan->lock); | 704 | spin_unlock_bh(&iop_chan->lock); |
705 | 705 | ||
706 | /* one is ok since we left it on there on purpose */ | 706 | /* one is ok since we left it on there on purpose */ |
@@ -753,7 +753,7 @@ static irqreturn_t iop_adma_eot_handler(int irq, void *data) | |||
753 | { | 753 | { |
754 | struct iop_adma_chan *chan = data; | 754 | struct iop_adma_chan *chan = data; |
755 | 755 | ||
756 | dev_dbg(chan->device->common.dev, "%s\n", __FUNCTION__); | 756 | dev_dbg(chan->device->common.dev, "%s\n", __func__); |
757 | 757 | ||
758 | tasklet_schedule(&chan->irq_tasklet); | 758 | tasklet_schedule(&chan->irq_tasklet); |
759 | 759 | ||
@@ -766,7 +766,7 @@ static irqreturn_t iop_adma_eoc_handler(int irq, void *data) | |||
766 | { | 766 | { |
767 | struct iop_adma_chan *chan = data; | 767 | struct iop_adma_chan *chan = data; |
768 | 768 | ||
769 | dev_dbg(chan->device->common.dev, "%s\n", __FUNCTION__); | 769 | dev_dbg(chan->device->common.dev, "%s\n", __func__); |
770 | 770 | ||
771 | tasklet_schedule(&chan->irq_tasklet); | 771 | tasklet_schedule(&chan->irq_tasklet); |
772 | 772 | ||
@@ -823,7 +823,7 @@ static int __devinit iop_adma_memcpy_self_test(struct iop_adma_device *device) | |||
823 | int err = 0; | 823 | int err = 0; |
824 | struct iop_adma_chan *iop_chan; | 824 | struct iop_adma_chan *iop_chan; |
825 | 825 | ||
826 | dev_dbg(device->common.dev, "%s\n", __FUNCTION__); | 826 | dev_dbg(device->common.dev, "%s\n", __func__); |
827 | 827 | ||
828 | src = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL); | 828 | src = kzalloc(sizeof(u8) * IOP_ADMA_TEST_SIZE, GFP_KERNEL); |
829 | if (!src) | 829 | if (!src) |
@@ -906,7 +906,7 @@ iop_adma_xor_zero_sum_self_test(struct iop_adma_device *device) | |||
906 | int err = 0; | 906 | int err = 0; |
907 | struct iop_adma_chan *iop_chan; | 907 | struct iop_adma_chan *iop_chan; |
908 | 908 | ||
909 | dev_dbg(device->common.dev, "%s\n", __FUNCTION__); | 909 | dev_dbg(device->common.dev, "%s\n", __func__); |
910 | 910 | ||
911 | for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) { | 911 | for (src_idx = 0; src_idx < IOP_ADMA_NUM_SRC_TEST; src_idx++) { |
912 | xor_srcs[src_idx] = alloc_page(GFP_KERNEL); | 912 | xor_srcs[src_idx] = alloc_page(GFP_KERNEL); |
@@ -1159,7 +1159,7 @@ static int __devinit iop_adma_probe(struct platform_device *pdev) | |||
1159 | } | 1159 | } |
1160 | 1160 | ||
1161 | dev_dbg(&pdev->dev, "%s: allocted descriptor pool virt %p phys %p\n", | 1161 | dev_dbg(&pdev->dev, "%s: allocted descriptor pool virt %p phys %p\n", |
1162 | __FUNCTION__, adev->dma_desc_pool_virt, | 1162 | __func__, adev->dma_desc_pool_virt, |
1163 | (void *) adev->dma_desc_pool); | 1163 | (void *) adev->dma_desc_pool); |
1164 | 1164 | ||
1165 | adev->id = plat_data->hw_id; | 1165 | adev->id = plat_data->hw_id; |
@@ -1289,7 +1289,7 @@ static void iop_chan_start_null_memcpy(struct iop_adma_chan *iop_chan) | |||
1289 | dma_cookie_t cookie; | 1289 | dma_cookie_t cookie; |
1290 | int slot_cnt, slots_per_op; | 1290 | int slot_cnt, slots_per_op; |
1291 | 1291 | ||
1292 | dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); | 1292 | dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); |
1293 | 1293 | ||
1294 | spin_lock_bh(&iop_chan->lock); | 1294 | spin_lock_bh(&iop_chan->lock); |
1295 | slot_cnt = iop_chan_memcpy_slot_count(0, &slots_per_op); | 1295 | slot_cnt = iop_chan_memcpy_slot_count(0, &slots_per_op); |
@@ -1346,7 +1346,7 @@ static void iop_chan_start_null_xor(struct iop_adma_chan *iop_chan) | |||
1346 | dma_cookie_t cookie; | 1346 | dma_cookie_t cookie; |
1347 | int slot_cnt, slots_per_op; | 1347 | int slot_cnt, slots_per_op; |
1348 | 1348 | ||
1349 | dev_dbg(iop_chan->device->common.dev, "%s\n", __FUNCTION__); | 1349 | dev_dbg(iop_chan->device->common.dev, "%s\n", __func__); |
1350 | 1350 | ||
1351 | spin_lock_bh(&iop_chan->lock); | 1351 | spin_lock_bh(&iop_chan->lock); |
1352 | slot_cnt = iop_chan_xor_slot_count(0, 2, &slots_per_op); | 1352 | slot_cnt = iop_chan_xor_slot_count(0, 2, &slots_per_op); |
diff --git a/drivers/i2c/busses/i2c-amd756.c b/drivers/i2c/busses/i2c-amd756.c index 573abe440842..2fa43183d375 100644 --- a/drivers/i2c/busses/i2c-amd756.c +++ b/drivers/i2c/busses/i2c-amd756.c | |||
@@ -335,7 +335,7 @@ static int __devinit amd756_probe(struct pci_dev *pdev, | |||
335 | u8 temp; | 335 | u8 temp; |
336 | 336 | ||
337 | /* driver_data might come from user-space, so check it */ | 337 | /* driver_data might come from user-space, so check it */ |
338 | if (id->driver_data > ARRAY_SIZE(chipname)) | 338 | if (id->driver_data >= ARRAY_SIZE(chipname)) |
339 | return -EINVAL; | 339 | return -EINVAL; |
340 | 340 | ||
341 | if (amd756_ioport) { | 341 | if (amd756_ioport) { |
diff --git a/drivers/i2c/chips/Makefile b/drivers/i2c/chips/Makefile index 501f00cea782..e47aca0ca5ae 100644 --- a/drivers/i2c/chips/Makefile +++ b/drivers/i2c/chips/Makefile | |||
@@ -1,6 +1,13 @@ | |||
1 | # | 1 | # |
2 | # Makefile for miscellaneous I2C chip drivers. | 2 | # Makefile for miscellaneous I2C chip drivers. |
3 | # | 3 | # |
4 | # Think twice before you add a new driver to this directory. | ||
5 | # Device drivers are better grouped according to the functionality they | ||
6 | # implement rather than to the bus they are connected to. In particular: | ||
7 | # * Hardware monitoring chip drivers go to drivers/hwmon | ||
8 | # * RTC chip drivers go to drivers/rtc | ||
9 | # * I/O expander drivers go to drivers/gpio | ||
10 | # | ||
4 | 11 | ||
5 | obj-$(CONFIG_DS1682) += ds1682.o | 12 | obj-$(CONFIG_DS1682) += ds1682.o |
6 | obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o | 13 | obj-$(CONFIG_SENSORS_EEPROM) += eeprom.o |
diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index 96da22e9a5a4..fd84b2a36338 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c | |||
@@ -90,12 +90,16 @@ static int i2c_device_probe(struct device *dev) | |||
90 | { | 90 | { |
91 | struct i2c_client *client = to_i2c_client(dev); | 91 | struct i2c_client *client = to_i2c_client(dev); |
92 | struct i2c_driver *driver = to_i2c_driver(dev->driver); | 92 | struct i2c_driver *driver = to_i2c_driver(dev->driver); |
93 | int status; | ||
93 | 94 | ||
94 | if (!driver->probe) | 95 | if (!driver->probe) |
95 | return -ENODEV; | 96 | return -ENODEV; |
96 | client->driver = driver; | 97 | client->driver = driver; |
97 | dev_dbg(dev, "probe\n"); | 98 | dev_dbg(dev, "probe\n"); |
98 | return driver->probe(client); | 99 | status = driver->probe(client); |
100 | if (status) | ||
101 | client->driver = NULL; | ||
102 | return status; | ||
99 | } | 103 | } |
100 | 104 | ||
101 | static int i2c_device_remove(struct device *dev) | 105 | static int i2c_device_remove(struct device *dev) |
diff --git a/drivers/infiniband/hw/ipath/ipath_common.h b/drivers/infiniband/hw/ipath/ipath_common.h index 414621095540..591901aab6b7 100644 --- a/drivers/infiniband/hw/ipath/ipath_common.h +++ b/drivers/infiniband/hw/ipath/ipath_common.h | |||
@@ -75,7 +75,7 @@ | |||
75 | #define IPATH_IB_LINKDOWN 0 | 75 | #define IPATH_IB_LINKDOWN 0 |
76 | #define IPATH_IB_LINKARM 1 | 76 | #define IPATH_IB_LINKARM 1 |
77 | #define IPATH_IB_LINKACTIVE 2 | 77 | #define IPATH_IB_LINKACTIVE 2 |
78 | #define IPATH_IB_LINKINIT 3 | 78 | #define IPATH_IB_LINKDOWN_ONLY 3 |
79 | #define IPATH_IB_LINKDOWN_SLEEP 4 | 79 | #define IPATH_IB_LINKDOWN_SLEEP 4 |
80 | #define IPATH_IB_LINKDOWN_DISABLE 5 | 80 | #define IPATH_IB_LINKDOWN_DISABLE 5 |
81 | #define IPATH_IB_LINK_LOOPBACK 6 /* enable local loopback */ | 81 | #define IPATH_IB_LINK_LOOPBACK 6 /* enable local loopback */ |
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c index d5ff6ca2db30..ca4d0acc6786 100644 --- a/drivers/infiniband/hw/ipath/ipath_driver.c +++ b/drivers/infiniband/hw/ipath/ipath_driver.c | |||
@@ -851,8 +851,7 @@ void ipath_disarm_piobufs(struct ipath_devdata *dd, unsigned first, | |||
851 | * -ETIMEDOUT state can have multiple states set, for any of several | 851 | * -ETIMEDOUT state can have multiple states set, for any of several |
852 | * transitions. | 852 | * transitions. |
853 | */ | 853 | */ |
854 | static int ipath_wait_linkstate(struct ipath_devdata *dd, u32 state, | 854 | int ipath_wait_linkstate(struct ipath_devdata *dd, u32 state, int msecs) |
855 | int msecs) | ||
856 | { | 855 | { |
857 | dd->ipath_state_wanted = state; | 856 | dd->ipath_state_wanted = state; |
858 | wait_event_interruptible_timeout(ipath_state_wait, | 857 | wait_event_interruptible_timeout(ipath_state_wait, |
@@ -1656,8 +1655,8 @@ void ipath_cancel_sends(struct ipath_devdata *dd, int restore_sendctrl) | |||
1656 | static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which) | 1655 | static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which) |
1657 | { | 1656 | { |
1658 | static const char *what[4] = { | 1657 | static const char *what[4] = { |
1659 | [0] = "DOWN", | 1658 | [0] = "NOP", |
1660 | [INFINIPATH_IBCC_LINKCMD_INIT] = "INIT", | 1659 | [INFINIPATH_IBCC_LINKCMD_DOWN] = "DOWN", |
1661 | [INFINIPATH_IBCC_LINKCMD_ARMED] = "ARMED", | 1660 | [INFINIPATH_IBCC_LINKCMD_ARMED] = "ARMED", |
1662 | [INFINIPATH_IBCC_LINKCMD_ACTIVE] = "ACTIVE" | 1661 | [INFINIPATH_IBCC_LINKCMD_ACTIVE] = "ACTIVE" |
1663 | }; | 1662 | }; |
@@ -1672,9 +1671,9 @@ static void ipath_set_ib_lstate(struct ipath_devdata *dd, int which) | |||
1672 | (dd, dd->ipath_kregs->kr_ibcstatus) >> | 1671 | (dd, dd->ipath_kregs->kr_ibcstatus) >> |
1673 | INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) & | 1672 | INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) & |
1674 | INFINIPATH_IBCS_LINKTRAININGSTATE_MASK]); | 1673 | INFINIPATH_IBCS_LINKTRAININGSTATE_MASK]); |
1675 | /* flush all queued sends when going to DOWN or INIT, to be sure that | 1674 | /* flush all queued sends when going to DOWN to be sure that |
1676 | * they don't block MAD packets */ | 1675 | * they don't block MAD packets */ |
1677 | if (!linkcmd || linkcmd == INFINIPATH_IBCC_LINKCMD_INIT) | 1676 | if (linkcmd == INFINIPATH_IBCC_LINKCMD_DOWN) |
1678 | ipath_cancel_sends(dd, 1); | 1677 | ipath_cancel_sends(dd, 1); |
1679 | 1678 | ||
1680 | ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl, | 1679 | ipath_write_kreg(dd, dd->ipath_kregs->kr_ibcctrl, |
@@ -1687,6 +1686,13 @@ int ipath_set_linkstate(struct ipath_devdata *dd, u8 newstate) | |||
1687 | int ret; | 1686 | int ret; |
1688 | 1687 | ||
1689 | switch (newstate) { | 1688 | switch (newstate) { |
1689 | case IPATH_IB_LINKDOWN_ONLY: | ||
1690 | ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKCMD_DOWN << | ||
1691 | INFINIPATH_IBCC_LINKCMD_SHIFT); | ||
1692 | /* don't wait */ | ||
1693 | ret = 0; | ||
1694 | goto bail; | ||
1695 | |||
1690 | case IPATH_IB_LINKDOWN: | 1696 | case IPATH_IB_LINKDOWN: |
1691 | ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKINITCMD_POLL << | 1697 | ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKINITCMD_POLL << |
1692 | INFINIPATH_IBCC_LINKINITCMD_SHIFT); | 1698 | INFINIPATH_IBCC_LINKINITCMD_SHIFT); |
@@ -1709,16 +1715,6 @@ int ipath_set_linkstate(struct ipath_devdata *dd, u8 newstate) | |||
1709 | ret = 0; | 1715 | ret = 0; |
1710 | goto bail; | 1716 | goto bail; |
1711 | 1717 | ||
1712 | case IPATH_IB_LINKINIT: | ||
1713 | if (dd->ipath_flags & IPATH_LINKINIT) { | ||
1714 | ret = 0; | ||
1715 | goto bail; | ||
1716 | } | ||
1717 | ipath_set_ib_lstate(dd, INFINIPATH_IBCC_LINKCMD_INIT << | ||
1718 | INFINIPATH_IBCC_LINKCMD_SHIFT); | ||
1719 | lstate = IPATH_LINKINIT; | ||
1720 | break; | ||
1721 | |||
1722 | case IPATH_IB_LINKARM: | 1718 | case IPATH_IB_LINKARM: |
1723 | if (dd->ipath_flags & IPATH_LINKARMED) { | 1719 | if (dd->ipath_flags & IPATH_LINKARMED) { |
1724 | ret = 0; | 1720 | ret = 0; |
diff --git a/drivers/infiniband/hw/ipath/ipath_kernel.h b/drivers/infiniband/hw/ipath/ipath_kernel.h index 4cc0f95ea877..ecf3f7ff7717 100644 --- a/drivers/infiniband/hw/ipath/ipath_kernel.h +++ b/drivers/infiniband/hw/ipath/ipath_kernel.h | |||
@@ -767,6 +767,7 @@ void ipath_kreceive(struct ipath_portdata *); | |||
767 | int ipath_setrcvhdrsize(struct ipath_devdata *, unsigned); | 767 | int ipath_setrcvhdrsize(struct ipath_devdata *, unsigned); |
768 | int ipath_reset_device(int); | 768 | int ipath_reset_device(int); |
769 | void ipath_get_faststats(unsigned long); | 769 | void ipath_get_faststats(unsigned long); |
770 | int ipath_wait_linkstate(struct ipath_devdata *, u32, int); | ||
770 | int ipath_set_linkstate(struct ipath_devdata *, u8); | 771 | int ipath_set_linkstate(struct ipath_devdata *, u8); |
771 | int ipath_set_mtu(struct ipath_devdata *, u16); | 772 | int ipath_set_mtu(struct ipath_devdata *, u16); |
772 | int ipath_set_lid(struct ipath_devdata *, u32, u8); | 773 | int ipath_set_lid(struct ipath_devdata *, u32, u8); |
diff --git a/drivers/infiniband/hw/ipath/ipath_mad.c b/drivers/infiniband/hw/ipath/ipath_mad.c index d98d5f103700..b34b91d3723a 100644 --- a/drivers/infiniband/hw/ipath/ipath_mad.c +++ b/drivers/infiniband/hw/ipath/ipath_mad.c | |||
@@ -555,10 +555,7 @@ static int recv_subn_set_portinfo(struct ib_smp *smp, | |||
555 | /* FALLTHROUGH */ | 555 | /* FALLTHROUGH */ |
556 | case IB_PORT_DOWN: | 556 | case IB_PORT_DOWN: |
557 | if (lstate == 0) | 557 | if (lstate == 0) |
558 | if (get_linkdowndefaultstate(dd)) | 558 | lstate = IPATH_IB_LINKDOWN_ONLY; |
559 | lstate = IPATH_IB_LINKDOWN_SLEEP; | ||
560 | else | ||
561 | lstate = IPATH_IB_LINKDOWN; | ||
562 | else if (lstate == 1) | 559 | else if (lstate == 1) |
563 | lstate = IPATH_IB_LINKDOWN_SLEEP; | 560 | lstate = IPATH_IB_LINKDOWN_SLEEP; |
564 | else if (lstate == 2) | 561 | else if (lstate == 2) |
@@ -568,6 +565,8 @@ static int recv_subn_set_portinfo(struct ib_smp *smp, | |||
568 | else | 565 | else |
569 | goto err; | 566 | goto err; |
570 | ipath_set_linkstate(dd, lstate); | 567 | ipath_set_linkstate(dd, lstate); |
568 | ipath_wait_linkstate(dd, IPATH_LINKINIT | IPATH_LINKARMED | | ||
569 | IPATH_LINKACTIVE, 1000); | ||
571 | break; | 570 | break; |
572 | case IB_PORT_ARMED: | 571 | case IB_PORT_ARMED: |
573 | ipath_set_linkstate(dd, IPATH_IB_LINKARM); | 572 | ipath_set_linkstate(dd, IPATH_IB_LINKARM); |
diff --git a/drivers/infiniband/hw/ipath/ipath_qp.c b/drivers/infiniband/hw/ipath/ipath_qp.c index 80dc623cee40..087ed3166479 100644 --- a/drivers/infiniband/hw/ipath/ipath_qp.c +++ b/drivers/infiniband/hw/ipath/ipath_qp.c | |||
@@ -329,8 +329,9 @@ struct ipath_qp *ipath_lookup_qpn(struct ipath_qp_table *qpt, u32 qpn) | |||
329 | /** | 329 | /** |
330 | * ipath_reset_qp - initialize the QP state to the reset state | 330 | * ipath_reset_qp - initialize the QP state to the reset state |
331 | * @qp: the QP to reset | 331 | * @qp: the QP to reset |
332 | * @type: the QP type | ||
332 | */ | 333 | */ |
333 | static void ipath_reset_qp(struct ipath_qp *qp) | 334 | static void ipath_reset_qp(struct ipath_qp *qp, enum ib_qp_type type) |
334 | { | 335 | { |
335 | qp->remote_qpn = 0; | 336 | qp->remote_qpn = 0; |
336 | qp->qkey = 0; | 337 | qp->qkey = 0; |
@@ -342,7 +343,7 @@ static void ipath_reset_qp(struct ipath_qp *qp) | |||
342 | qp->s_psn = 0; | 343 | qp->s_psn = 0; |
343 | qp->r_psn = 0; | 344 | qp->r_psn = 0; |
344 | qp->r_msn = 0; | 345 | qp->r_msn = 0; |
345 | if (qp->ibqp.qp_type == IB_QPT_RC) { | 346 | if (type == IB_QPT_RC) { |
346 | qp->s_state = IB_OPCODE_RC_SEND_LAST; | 347 | qp->s_state = IB_OPCODE_RC_SEND_LAST; |
347 | qp->r_state = IB_OPCODE_RC_SEND_LAST; | 348 | qp->r_state = IB_OPCODE_RC_SEND_LAST; |
348 | } else { | 349 | } else { |
@@ -414,7 +415,7 @@ int ipath_error_qp(struct ipath_qp *qp, enum ib_wc_status err) | |||
414 | wc.wr_id = qp->r_wr_id; | 415 | wc.wr_id = qp->r_wr_id; |
415 | wc.opcode = IB_WC_RECV; | 416 | wc.opcode = IB_WC_RECV; |
416 | wc.status = err; | 417 | wc.status = err; |
417 | ipath_cq_enter(to_icq(qp->ibqp.send_cq), &wc, 1); | 418 | ipath_cq_enter(to_icq(qp->ibqp.recv_cq), &wc, 1); |
418 | } | 419 | } |
419 | wc.status = IB_WC_WR_FLUSH_ERR; | 420 | wc.status = IB_WC_WR_FLUSH_ERR; |
420 | 421 | ||
@@ -534,7 +535,7 @@ int ipath_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, | |||
534 | 535 | ||
535 | switch (new_state) { | 536 | switch (new_state) { |
536 | case IB_QPS_RESET: | 537 | case IB_QPS_RESET: |
537 | ipath_reset_qp(qp); | 538 | ipath_reset_qp(qp, ibqp->qp_type); |
538 | break; | 539 | break; |
539 | 540 | ||
540 | case IB_QPS_ERR: | 541 | case IB_QPS_ERR: |
@@ -647,7 +648,7 @@ int ipath_query_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, | |||
647 | attr->port_num = 1; | 648 | attr->port_num = 1; |
648 | attr->timeout = qp->timeout; | 649 | attr->timeout = qp->timeout; |
649 | attr->retry_cnt = qp->s_retry_cnt; | 650 | attr->retry_cnt = qp->s_retry_cnt; |
650 | attr->rnr_retry = qp->s_rnr_retry; | 651 | attr->rnr_retry = qp->s_rnr_retry_cnt; |
651 | attr->alt_port_num = 0; | 652 | attr->alt_port_num = 0; |
652 | attr->alt_timeout = 0; | 653 | attr->alt_timeout = 0; |
653 | 654 | ||
@@ -839,7 +840,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, | |||
839 | goto bail_qp; | 840 | goto bail_qp; |
840 | } | 841 | } |
841 | qp->ip = NULL; | 842 | qp->ip = NULL; |
842 | ipath_reset_qp(qp); | 843 | ipath_reset_qp(qp, init_attr->qp_type); |
843 | break; | 844 | break; |
844 | 845 | ||
845 | default: | 846 | default: |
diff --git a/drivers/infiniband/hw/ipath/ipath_rc.c b/drivers/infiniband/hw/ipath/ipath_rc.c index 459e46e2c016..40f3e37d7adc 100644 --- a/drivers/infiniband/hw/ipath/ipath_rc.c +++ b/drivers/infiniband/hw/ipath/ipath_rc.c | |||
@@ -1196,6 +1196,10 @@ static inline void ipath_rc_rcv_resp(struct ipath_ibdev *dev, | |||
1196 | list_move_tail(&qp->timerwait, | 1196 | list_move_tail(&qp->timerwait, |
1197 | &dev->pending[dev->pending_index]); | 1197 | &dev->pending[dev->pending_index]); |
1198 | spin_unlock(&dev->pending_lock); | 1198 | spin_unlock(&dev->pending_lock); |
1199 | |||
1200 | if (opcode == OP(RDMA_READ_RESPONSE_MIDDLE)) | ||
1201 | qp->s_retry = qp->s_retry_cnt; | ||
1202 | |||
1199 | /* | 1203 | /* |
1200 | * Update the RDMA receive state but do the copy w/o | 1204 | * Update the RDMA receive state but do the copy w/o |
1201 | * holding the locks and blocking interrupts. | 1205 | * holding the locks and blocking interrupts. |
diff --git a/drivers/infiniband/hw/ipath/ipath_registers.h b/drivers/infiniband/hw/ipath/ipath_registers.h index 6d2a17f9c1da..92ad73a7fff0 100644 --- a/drivers/infiniband/hw/ipath/ipath_registers.h +++ b/drivers/infiniband/hw/ipath/ipath_registers.h | |||
@@ -185,7 +185,7 @@ | |||
185 | #define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3 | 185 | #define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3 |
186 | #define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16 | 186 | #define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16 |
187 | #define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL | 187 | #define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL |
188 | #define INFINIPATH_IBCC_LINKCMD_INIT 1 /* move to 0x11 */ | 188 | #define INFINIPATH_IBCC_LINKCMD_DOWN 1 /* move to 0x11 */ |
189 | #define INFINIPATH_IBCC_LINKCMD_ARMED 2 /* move to 0x21 */ | 189 | #define INFINIPATH_IBCC_LINKCMD_ARMED 2 /* move to 0x21 */ |
190 | #define INFINIPATH_IBCC_LINKCMD_ACTIVE 3 /* move to 0x31 */ | 190 | #define INFINIPATH_IBCC_LINKCMD_ACTIVE 3 /* move to 0x31 */ |
191 | #define INFINIPATH_IBCC_LINKCMD_SHIFT 18 | 191 | #define INFINIPATH_IBCC_LINKCMD_SHIFT 18 |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 52b1bebfa744..2490b2d79dbb 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <net/icmp.h> | 38 | #include <net/icmp.h> |
39 | #include <linux/icmpv6.h> | 39 | #include <linux/icmpv6.h> |
40 | #include <linux/delay.h> | 40 | #include <linux/delay.h> |
41 | #include <linux/vmalloc.h> | ||
41 | 42 | ||
42 | #include "ipoib.h" | 43 | #include "ipoib.h" |
43 | 44 | ||
@@ -637,6 +638,7 @@ static inline int post_send(struct ipoib_dev_priv *priv, | |||
637 | priv->tx_sge[0].addr = addr; | 638 | priv->tx_sge[0].addr = addr; |
638 | priv->tx_sge[0].length = len; | 639 | priv->tx_sge[0].length = len; |
639 | 640 | ||
641 | priv->tx_wr.num_sge = 1; | ||
640 | priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM; | 642 | priv->tx_wr.wr_id = wr_id | IPOIB_OP_CM; |
641 | 643 | ||
642 | return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr); | 644 | return ib_post_send(tx->qp, &priv->tx_wr, &bad_wr); |
@@ -1030,13 +1032,13 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn, | |||
1030 | struct ipoib_dev_priv *priv = netdev_priv(p->dev); | 1032 | struct ipoib_dev_priv *priv = netdev_priv(p->dev); |
1031 | int ret; | 1033 | int ret; |
1032 | 1034 | ||
1033 | p->tx_ring = kzalloc(ipoib_sendq_size * sizeof *p->tx_ring, | 1035 | p->tx_ring = vmalloc(ipoib_sendq_size * sizeof *p->tx_ring); |
1034 | GFP_KERNEL); | ||
1035 | if (!p->tx_ring) { | 1036 | if (!p->tx_ring) { |
1036 | ipoib_warn(priv, "failed to allocate tx ring\n"); | 1037 | ipoib_warn(priv, "failed to allocate tx ring\n"); |
1037 | ret = -ENOMEM; | 1038 | ret = -ENOMEM; |
1038 | goto err_tx; | 1039 | goto err_tx; |
1039 | } | 1040 | } |
1041 | memset(p->tx_ring, 0, ipoib_sendq_size * sizeof *p->tx_ring); | ||
1040 | 1042 | ||
1041 | p->qp = ipoib_cm_create_tx_qp(p->dev, p); | 1043 | p->qp = ipoib_cm_create_tx_qp(p->dev, p); |
1042 | if (IS_ERR(p->qp)) { | 1044 | if (IS_ERR(p->qp)) { |
@@ -1077,6 +1079,7 @@ err_id: | |||
1077 | ib_destroy_qp(p->qp); | 1079 | ib_destroy_qp(p->qp); |
1078 | err_qp: | 1080 | err_qp: |
1079 | p->qp = NULL; | 1081 | p->qp = NULL; |
1082 | vfree(p->tx_ring); | ||
1080 | err_tx: | 1083 | err_tx: |
1081 | return ret; | 1084 | return ret; |
1082 | } | 1085 | } |
@@ -1127,7 +1130,7 @@ timeout: | |||
1127 | if (p->qp) | 1130 | if (p->qp) |
1128 | ib_destroy_qp(p->qp); | 1131 | ib_destroy_qp(p->qp); |
1129 | 1132 | ||
1130 | kfree(p->tx_ring); | 1133 | vfree(p->tx_ring); |
1131 | kfree(p); | 1134 | kfree(p); |
1132 | } | 1135 | } |
1133 | 1136 | ||
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index f96477a8ca5a..57282048865c 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/init.h> | 41 | #include <linux/init.h> |
42 | #include <linux/slab.h> | 42 | #include <linux/slab.h> |
43 | #include <linux/kernel.h> | 43 | #include <linux/kernel.h> |
44 | #include <linux/vmalloc.h> | ||
44 | 45 | ||
45 | #include <linux/if_arp.h> /* For ARPHRD_xxx */ | 46 | #include <linux/if_arp.h> /* For ARPHRD_xxx */ |
46 | 47 | ||
@@ -887,13 +888,13 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port) | |||
887 | goto out; | 888 | goto out; |
888 | } | 889 | } |
889 | 890 | ||
890 | priv->tx_ring = kzalloc(ipoib_sendq_size * sizeof *priv->tx_ring, | 891 | priv->tx_ring = vmalloc(ipoib_sendq_size * sizeof *priv->tx_ring); |
891 | GFP_KERNEL); | ||
892 | if (!priv->tx_ring) { | 892 | if (!priv->tx_ring) { |
893 | printk(KERN_WARNING "%s: failed to allocate TX ring (%d entries)\n", | 893 | printk(KERN_WARNING "%s: failed to allocate TX ring (%d entries)\n", |
894 | ca->name, ipoib_sendq_size); | 894 | ca->name, ipoib_sendq_size); |
895 | goto out_rx_ring_cleanup; | 895 | goto out_rx_ring_cleanup; |
896 | } | 896 | } |
897 | memset(priv->tx_ring, 0, ipoib_sendq_size * sizeof *priv->tx_ring); | ||
897 | 898 | ||
898 | /* priv->tx_head, tx_tail & tx_outstanding are already 0 */ | 899 | /* priv->tx_head, tx_tail & tx_outstanding are already 0 */ |
899 | 900 | ||
@@ -903,7 +904,7 @@ int ipoib_dev_init(struct net_device *dev, struct ib_device *ca, int port) | |||
903 | return 0; | 904 | return 0; |
904 | 905 | ||
905 | out_tx_ring_cleanup: | 906 | out_tx_ring_cleanup: |
906 | kfree(priv->tx_ring); | 907 | vfree(priv->tx_ring); |
907 | 908 | ||
908 | out_rx_ring_cleanup: | 909 | out_rx_ring_cleanup: |
909 | kfree(priv->rx_ring); | 910 | kfree(priv->rx_ring); |
@@ -928,7 +929,7 @@ void ipoib_dev_cleanup(struct net_device *dev) | |||
928 | ipoib_ib_dev_cleanup(dev); | 929 | ipoib_ib_dev_cleanup(dev); |
929 | 930 | ||
930 | kfree(priv->rx_ring); | 931 | kfree(priv->rx_ring); |
931 | kfree(priv->tx_ring); | 932 | vfree(priv->tx_ring); |
932 | 933 | ||
933 | priv->rx_ring = NULL; | 934 | priv->rx_ring = NULL; |
934 | priv->tx_ring = NULL; | 935 | priv->tx_ring = NULL; |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index 2628339e3a99..31a53c5bcb13 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -650,7 +650,7 @@ void ipoib_mcast_send(struct net_device *dev, void *mgid, struct sk_buff *skb) | |||
650 | */ | 650 | */ |
651 | spin_lock(&priv->lock); | 651 | spin_lock(&priv->lock); |
652 | 652 | ||
653 | if (!test_bit(IPOIB_MCAST_STARTED, &priv->flags) || | 653 | if (!test_bit(IPOIB_FLAG_OPER_UP, &priv->flags) || |
654 | !priv->broadcast || | 654 | !priv->broadcast || |
655 | !test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags)) { | 655 | !test_bit(IPOIB_MCAST_FLAG_ATTACHED, &priv->broadcast->flags)) { |
656 | ++dev->stats.tx_dropped; | 656 | ++dev->stats.tx_dropped; |
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c index 9cef6fcf587b..d4ad6992f776 100644 --- a/drivers/isdn/i4l/isdn_common.c +++ b/drivers/isdn/i4l/isdn_common.c | |||
@@ -981,13 +981,13 @@ isdn_readbchan_tty(int di, int channel, struct tty_struct *tty, int cisco_hack) | |||
981 | } | 981 | } |
982 | 982 | ||
983 | 983 | ||
984 | static __inline int | 984 | static inline int |
985 | isdn_minor2drv(int minor) | 985 | isdn_minor2drv(int minor) |
986 | { | 986 | { |
987 | return (dev->drvmap[minor]); | 987 | return (dev->drvmap[minor]); |
988 | } | 988 | } |
989 | 989 | ||
990 | static __inline int | 990 | static inline int |
991 | isdn_minor2chan(int minor) | 991 | isdn_minor2chan(int minor) |
992 | { | 992 | { |
993 | return (dev->chanmap[minor]); | 993 | return (dev->chanmap[minor]); |
diff --git a/drivers/isdn/i4l/isdn_v110.c b/drivers/isdn/i4l/isdn_v110.c index 5484d3c38a57..c5d02b6aafab 100644 --- a/drivers/isdn/i4l/isdn_v110.c +++ b/drivers/isdn/i4l/isdn_v110.c | |||
@@ -62,7 +62,7 @@ static unsigned char V110_OffMatrix_38400[] = | |||
62 | * and to 67452301 when keylen = 2. This is necessary because ordering on | 62 | * and to 67452301 when keylen = 2. This is necessary because ordering on |
63 | * the isdn line is the other way. | 63 | * the isdn line is the other way. |
64 | */ | 64 | */ |
65 | static __inline unsigned char | 65 | static inline unsigned char |
66 | FlipBits(unsigned char c, int keylen) | 66 | FlipBits(unsigned char c, int keylen) |
67 | { | 67 | { |
68 | unsigned char b = c; | 68 | unsigned char b = c; |
diff --git a/drivers/macintosh/via-pmu-backlight.c b/drivers/macintosh/via-pmu-backlight.c index 741a2e3f4fc6..a348bb0791d3 100644 --- a/drivers/macintosh/via-pmu-backlight.c +++ b/drivers/macintosh/via-pmu-backlight.c | |||
@@ -17,7 +17,7 @@ | |||
17 | 17 | ||
18 | static struct backlight_ops pmu_backlight_data; | 18 | static struct backlight_ops pmu_backlight_data; |
19 | static DEFINE_SPINLOCK(pmu_backlight_lock); | 19 | static DEFINE_SPINLOCK(pmu_backlight_lock); |
20 | static int sleeping; | 20 | static int sleeping, uses_pmu_bl; |
21 | static u8 bl_curve[FB_BACKLIGHT_LEVELS]; | 21 | static u8 bl_curve[FB_BACKLIGHT_LEVELS]; |
22 | 22 | ||
23 | static void pmu_backlight_init_curve(u8 off, u8 min, u8 max) | 23 | static void pmu_backlight_init_curve(u8 off, u8 min, u8 max) |
@@ -128,7 +128,7 @@ void pmu_backlight_set_sleep(int sleep) | |||
128 | 128 | ||
129 | spin_lock_irqsave(&pmu_backlight_lock, flags); | 129 | spin_lock_irqsave(&pmu_backlight_lock, flags); |
130 | sleeping = sleep; | 130 | sleeping = sleep; |
131 | if (pmac_backlight) { | 131 | if (pmac_backlight && uses_pmu_bl) { |
132 | if (sleep) { | 132 | if (sleep) { |
133 | struct adb_request req; | 133 | struct adb_request req; |
134 | 134 | ||
@@ -166,6 +166,7 @@ void __init pmu_backlight_init() | |||
166 | printk(KERN_ERR "PMU Backlight registration failed\n"); | 166 | printk(KERN_ERR "PMU Backlight registration failed\n"); |
167 | return; | 167 | return; |
168 | } | 168 | } |
169 | uses_pmu_bl = 1; | ||
169 | bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1; | 170 | bd->props.max_brightness = FB_BACKLIGHT_LEVELS - 1; |
170 | pmu_backlight_init_curve(0x7F, 0x46, 0x0E); | 171 | pmu_backlight_init_curve(0x7F, 0x46, 0x0E); |
171 | 172 | ||
diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index ebec663d5d37..d6365a9f0637 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c | |||
@@ -2528,7 +2528,7 @@ EXPORT_SYMBOL(pmu_wait_complete); | |||
2528 | EXPORT_SYMBOL(pmu_suspend); | 2528 | EXPORT_SYMBOL(pmu_suspend); |
2529 | EXPORT_SYMBOL(pmu_resume); | 2529 | EXPORT_SYMBOL(pmu_resume); |
2530 | EXPORT_SYMBOL(pmu_unlock); | 2530 | EXPORT_SYMBOL(pmu_unlock); |
2531 | #if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) | 2531 | #if defined(CONFIG_PPC32) |
2532 | EXPORT_SYMBOL(pmu_enable_irled); | 2532 | EXPORT_SYMBOL(pmu_enable_irled); |
2533 | EXPORT_SYMBOL(pmu_battery_count); | 2533 | EXPORT_SYMBOL(pmu_battery_count); |
2534 | EXPORT_SYMBOL(pmu_batteries); | 2534 | EXPORT_SYMBOL(pmu_batteries); |
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig index 982e27b86d10..962817e49fba 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig | |||
@@ -108,6 +108,7 @@ config ACER_WMI | |||
108 | depends on ACPI | 108 | depends on ACPI |
109 | depends on LEDS_CLASS | 109 | depends on LEDS_CLASS |
110 | depends on BACKLIGHT_CLASS_DEVICE | 110 | depends on BACKLIGHT_CLASS_DEVICE |
111 | depends on SERIO_I8042 | ||
111 | select ACPI_WMI | 112 | select ACPI_WMI |
112 | ---help--- | 113 | ---help--- |
113 | This is a driver for newer Acer (and Wistron) laptops. It adds | 114 | This is a driver for newer Acer (and Wistron) laptops. It adds |
diff --git a/drivers/misc/acer-wmi.c b/drivers/misc/acer-wmi.c index 74d12b4a3abd..dd13a3749927 100644 --- a/drivers/misc/acer-wmi.c +++ b/drivers/misc/acer-wmi.c | |||
@@ -219,6 +219,15 @@ static struct dmi_system_id acer_quirks[] = { | |||
219 | }, | 219 | }, |
220 | { | 220 | { |
221 | .callback = dmi_matched, | 221 | .callback = dmi_matched, |
222 | .ident = "Acer Aspire 3610", | ||
223 | .matches = { | ||
224 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
225 | DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 3610"), | ||
226 | }, | ||
227 | .driver_data = &quirk_acer_travelmate_2490, | ||
228 | }, | ||
229 | { | ||
230 | .callback = dmi_matched, | ||
222 | .ident = "Acer Aspire 5100", | 231 | .ident = "Acer Aspire 5100", |
223 | .matches = { | 232 | .matches = { |
224 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | 233 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), |
@@ -228,6 +237,15 @@ static struct dmi_system_id acer_quirks[] = { | |||
228 | }, | 237 | }, |
229 | { | 238 | { |
230 | .callback = dmi_matched, | 239 | .callback = dmi_matched, |
240 | .ident = "Acer Aspire 5610", | ||
241 | .matches = { | ||
242 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
243 | DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5610"), | ||
244 | }, | ||
245 | .driver_data = &quirk_acer_travelmate_2490, | ||
246 | }, | ||
247 | { | ||
248 | .callback = dmi_matched, | ||
231 | .ident = "Acer Aspire 5630", | 249 | .ident = "Acer Aspire 5630", |
232 | .matches = { | 250 | .matches = { |
233 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | 251 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), |
@@ -761,11 +779,11 @@ enum led_brightness value) | |||
761 | } | 779 | } |
762 | 780 | ||
763 | static struct led_classdev mail_led = { | 781 | static struct led_classdev mail_led = { |
764 | .name = "acer-mail:green", | 782 | .name = "acer-wmi::mail", |
765 | .brightness_set = mail_led_set, | 783 | .brightness_set = mail_led_set, |
766 | }; | 784 | }; |
767 | 785 | ||
768 | static int __init acer_led_init(struct device *dev) | 786 | static int __devinit acer_led_init(struct device *dev) |
769 | { | 787 | { |
770 | return led_classdev_register(dev, &mail_led); | 788 | return led_classdev_register(dev, &mail_led); |
771 | } | 789 | } |
@@ -798,7 +816,7 @@ static struct backlight_ops acer_bl_ops = { | |||
798 | .update_status = update_bl_status, | 816 | .update_status = update_bl_status, |
799 | }; | 817 | }; |
800 | 818 | ||
801 | static int __init acer_backlight_init(struct device *dev) | 819 | static int __devinit acer_backlight_init(struct device *dev) |
802 | { | 820 | { |
803 | struct backlight_device *bd; | 821 | struct backlight_device *bd; |
804 | 822 | ||
@@ -817,7 +835,7 @@ static int __init acer_backlight_init(struct device *dev) | |||
817 | return 0; | 835 | return 0; |
818 | } | 836 | } |
819 | 837 | ||
820 | static void __exit acer_backlight_exit(void) | 838 | static void acer_backlight_exit(void) |
821 | { | 839 | { |
822 | backlight_device_unregister(acer_backlight_device); | 840 | backlight_device_unregister(acer_backlight_device); |
823 | } | 841 | } |
@@ -1052,11 +1070,12 @@ static int __init acer_wmi_init(void) | |||
1052 | 1070 | ||
1053 | if (wmi_has_guid(WMID_GUID2) && interface) { | 1071 | if (wmi_has_guid(WMID_GUID2) && interface) { |
1054 | if (ACPI_FAILURE(WMID_set_capabilities())) { | 1072 | if (ACPI_FAILURE(WMID_set_capabilities())) { |
1055 | printk(ACER_ERR "Unable to detect available devices\n"); | 1073 | printk(ACER_ERR "Unable to detect available WMID " |
1074 | "devices\n"); | ||
1056 | return -ENODEV; | 1075 | return -ENODEV; |
1057 | } | 1076 | } |
1058 | } else if (!wmi_has_guid(WMID_GUID2) && interface) { | 1077 | } else if (!wmi_has_guid(WMID_GUID2) && interface) { |
1059 | printk(ACER_ERR "Unable to detect available devices\n"); | 1078 | printk(ACER_ERR "No WMID device detection method found\n"); |
1060 | return -ENODEV; | 1079 | return -ENODEV; |
1061 | } | 1080 | } |
1062 | 1081 | ||
@@ -1064,21 +1083,20 @@ static int __init acer_wmi_init(void) | |||
1064 | interface = &AMW0_interface; | 1083 | interface = &AMW0_interface; |
1065 | 1084 | ||
1066 | if (ACPI_FAILURE(AMW0_set_capabilities())) { | 1085 | if (ACPI_FAILURE(AMW0_set_capabilities())) { |
1067 | printk(ACER_ERR "Unable to detect available devices\n"); | 1086 | printk(ACER_ERR "Unable to detect available AMW0 " |
1087 | "devices\n"); | ||
1068 | return -ENODEV; | 1088 | return -ENODEV; |
1069 | } | 1089 | } |
1070 | } | 1090 | } |
1071 | 1091 | ||
1072 | if (wmi_has_guid(AMW0_GUID1)) { | 1092 | if (wmi_has_guid(AMW0_GUID1)) |
1073 | if (ACPI_FAILURE(AMW0_find_mailled())) | 1093 | AMW0_find_mailled(); |
1074 | printk(ACER_ERR "Unable to detect mail LED\n"); | ||
1075 | } | ||
1076 | 1094 | ||
1077 | find_quirks(); | 1095 | find_quirks(); |
1078 | 1096 | ||
1079 | if (!interface) { | 1097 | if (!interface) { |
1080 | printk(ACER_ERR "No or unsupported WMI interface, unable to "); | 1098 | printk(ACER_ERR "No or unsupported WMI interface, unable to " |
1081 | printk(KERN_CONT "load.\n"); | 1099 | "load\n"); |
1082 | return -ENODEV; | 1100 | return -ENODEV; |
1083 | } | 1101 | } |
1084 | 1102 | ||
diff --git a/drivers/misc/sony-laptop.c b/drivers/misc/sony-laptop.c index 899e3f75f288..02ff3d19b1cc 100644 --- a/drivers/misc/sony-laptop.c +++ b/drivers/misc/sony-laptop.c | |||
@@ -315,7 +315,7 @@ static void sony_laptop_report_input_event(u8 event) | |||
315 | break; | 315 | break; |
316 | 316 | ||
317 | default: | 317 | default: |
318 | if (event > ARRAY_SIZE(sony_laptop_input_index)) { | 318 | if (event >= ARRAY_SIZE(sony_laptop_input_index)) { |
319 | dprintk("sony_laptop_report_input_event, event not known: %d\n", event); | 319 | dprintk("sony_laptop_report_input_event, event not known: %d\n", event); |
320 | break; | 320 | break; |
321 | } | 321 | } |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index a0f0e605d630..fe7b5ec09708 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -2366,15 +2366,15 @@ config GELIC_NET | |||
2366 | module will be called ps3_gelic. | 2366 | module will be called ps3_gelic. |
2367 | 2367 | ||
2368 | config GELIC_WIRELESS | 2368 | config GELIC_WIRELESS |
2369 | bool "PS3 Wireless support" | 2369 | bool "PS3 Wireless support" |
2370 | depends on GELIC_NET | 2370 | depends on GELIC_NET |
2371 | select WIRELESS_EXT | 2371 | select WIRELESS_EXT |
2372 | help | 2372 | help |
2373 | This option adds the support for the wireless feature of PS3. | 2373 | This option adds the support for the wireless feature of PS3. |
2374 | If you have the wireless-less model of PS3 or have no plan to | 2374 | If you have the wireless-less model of PS3 or have no plan to |
2375 | use wireless feature, disabling this option saves memory. As | 2375 | use wireless feature, disabling this option saves memory. As |
2376 | the driver automatically distinguishes the models, you can | 2376 | the driver automatically distinguishes the models, you can |
2377 | safely enable this option even if you have a wireless-less model. | 2377 | safely enable this option even if you have a wireless-less model. |
2378 | 2378 | ||
2379 | config GIANFAR | 2379 | config GIANFAR |
2380 | tristate "Gianfar Ethernet" | 2380 | tristate "Gianfar Ethernet" |
@@ -2519,7 +2519,7 @@ config CHELSIO_T3 | |||
2519 | 2519 | ||
2520 | config EHEA | 2520 | config EHEA |
2521 | tristate "eHEA Ethernet support" | 2521 | tristate "eHEA Ethernet support" |
2522 | depends on IBMEBUS && INET | 2522 | depends on IBMEBUS && INET && SPARSEMEM |
2523 | select INET_LRO | 2523 | select INET_LRO |
2524 | ---help--- | 2524 | ---help--- |
2525 | This driver supports the IBM pSeries eHEA ethernet adapter. | 2525 | This driver supports the IBM pSeries eHEA ethernet adapter. |
diff --git a/drivers/net/ac3200.c b/drivers/net/ac3200.c index 5136d94923aa..b1448637107f 100644 --- a/drivers/net/ac3200.c +++ b/drivers/net/ac3200.c | |||
@@ -369,7 +369,7 @@ MODULE_PARM_DESC(mem, "Memory base address(es)"); | |||
369 | MODULE_DESCRIPTION("Ansel AC3200 EISA ethernet driver"); | 369 | MODULE_DESCRIPTION("Ansel AC3200 EISA ethernet driver"); |
370 | MODULE_LICENSE("GPL"); | 370 | MODULE_LICENSE("GPL"); |
371 | 371 | ||
372 | int __init init_module(void) | 372 | static int __init ac3200_module_init(void) |
373 | { | 373 | { |
374 | struct net_device *dev; | 374 | struct net_device *dev; |
375 | int this_dev, found = 0; | 375 | int this_dev, found = 0; |
@@ -404,8 +404,7 @@ static void cleanup_card(struct net_device *dev) | |||
404 | iounmap(ei_status.mem); | 404 | iounmap(ei_status.mem); |
405 | } | 405 | } |
406 | 406 | ||
407 | void __exit | 407 | static void __exit ac3200_module_exit(void) |
408 | cleanup_module(void) | ||
409 | { | 408 | { |
410 | int this_dev; | 409 | int this_dev; |
411 | 410 | ||
@@ -418,4 +417,6 @@ cleanup_module(void) | |||
418 | } | 417 | } |
419 | } | 418 | } |
420 | } | 419 | } |
420 | module_init(ac3200_module_init); | ||
421 | module_exit(ac3200_module_exit); | ||
421 | #endif /* MODULE */ | 422 | #endif /* MODULE */ |
diff --git a/drivers/net/apne.c b/drivers/net/apne.c index c12cbdf368b1..47a8275d3962 100644 --- a/drivers/net/apne.c +++ b/drivers/net/apne.c | |||
@@ -569,7 +569,7 @@ static irqreturn_t apne_interrupt(int irq, void *dev_id) | |||
569 | #ifdef MODULE | 569 | #ifdef MODULE |
570 | static struct net_device *apne_dev; | 570 | static struct net_device *apne_dev; |
571 | 571 | ||
572 | int __init init_module(void) | 572 | static int __init apne_module_init(void) |
573 | { | 573 | { |
574 | apne_dev = apne_probe(-1); | 574 | apne_dev = apne_probe(-1); |
575 | if (IS_ERR(apne_dev)) | 575 | if (IS_ERR(apne_dev)) |
@@ -577,7 +577,7 @@ int __init init_module(void) | |||
577 | return 0; | 577 | return 0; |
578 | } | 578 | } |
579 | 579 | ||
580 | void __exit cleanup_module(void) | 580 | static void __exit apne_module_exit(void) |
581 | { | 581 | { |
582 | unregister_netdev(apne_dev); | 582 | unregister_netdev(apne_dev); |
583 | 583 | ||
@@ -591,7 +591,8 @@ void __exit cleanup_module(void) | |||
591 | 591 | ||
592 | free_netdev(apne_dev); | 592 | free_netdev(apne_dev); |
593 | } | 593 | } |
594 | 594 | module_init(apne_module_init); | |
595 | module_exit(apne_module_exit); | ||
595 | #endif | 596 | #endif |
596 | 597 | ||
597 | static int init_pcmcia(void) | 598 | static int init_pcmcia(void) |
diff --git a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c index 6ab2c2d4d673..fef5560bc7a2 100644 --- a/drivers/net/appletalk/ltpc.c +++ b/drivers/net/appletalk/ltpc.c | |||
@@ -1252,7 +1252,7 @@ module_param(irq, int, 0); | |||
1252 | module_param(dma, int, 0); | 1252 | module_param(dma, int, 0); |
1253 | 1253 | ||
1254 | 1254 | ||
1255 | int __init init_module(void) | 1255 | static int __init ltpc_module_init(void) |
1256 | { | 1256 | { |
1257 | if(io == 0) | 1257 | if(io == 0) |
1258 | printk(KERN_NOTICE | 1258 | printk(KERN_NOTICE |
@@ -1263,6 +1263,7 @@ int __init init_module(void) | |||
1263 | return PTR_ERR(dev_ltpc); | 1263 | return PTR_ERR(dev_ltpc); |
1264 | return 0; | 1264 | return 0; |
1265 | } | 1265 | } |
1266 | module_init(ltpc_module_init); | ||
1266 | #endif | 1267 | #endif |
1267 | 1268 | ||
1268 | static void __exit ltpc_cleanup(void) | 1269 | static void __exit ltpc_cleanup(void) |
diff --git a/drivers/net/arcnet/capmode.c b/drivers/net/arcnet/capmode.c index cc4610db6395..02cb8f1c1148 100644 --- a/drivers/net/arcnet/capmode.c +++ b/drivers/net/arcnet/capmode.c | |||
@@ -80,17 +80,19 @@ void arcnet_cap_init(void) | |||
80 | 80 | ||
81 | #ifdef MODULE | 81 | #ifdef MODULE |
82 | 82 | ||
83 | int __init init_module(void) | 83 | static int __init capmode_module_init(void) |
84 | { | 84 | { |
85 | printk(VERSION); | 85 | printk(VERSION); |
86 | arcnet_cap_init(); | 86 | arcnet_cap_init(); |
87 | return 0; | 87 | return 0; |
88 | } | 88 | } |
89 | 89 | ||
90 | void cleanup_module(void) | 90 | static void __exit capmode_module_exit(void) |
91 | { | 91 | { |
92 | arcnet_unregister_proto(&capmode_proto); | 92 | arcnet_unregister_proto(&capmode_proto); |
93 | } | 93 | } |
94 | module_init(capmode_module_init); | ||
95 | module_exit(capmode_module_exit); | ||
94 | 96 | ||
95 | MODULE_LICENSE("GPL"); | 97 | MODULE_LICENSE("GPL"); |
96 | #endif /* MODULE */ | 98 | #endif /* MODULE */ |
diff --git a/drivers/net/atarilance.c b/drivers/net/atarilance.c index b74dbeef8050..13c293b286de 100644 --- a/drivers/net/atarilance.c +++ b/drivers/net/atarilance.c | |||
@@ -336,8 +336,6 @@ struct lance_addr { | |||
336 | 336 | ||
337 | /***************************** Prototypes *****************************/ | 337 | /***************************** Prototypes *****************************/ |
338 | 338 | ||
339 | static int addr_accessible( volatile void *regp, int wordflag, int | ||
340 | writeflag ); | ||
341 | static unsigned long lance_probe1( struct net_device *dev, struct lance_addr | 339 | static unsigned long lance_probe1( struct net_device *dev, struct lance_addr |
342 | *init_rec ); | 340 | *init_rec ); |
343 | static int lance_open( struct net_device *dev ); | 341 | static int lance_open( struct net_device *dev ); |
@@ -406,7 +404,8 @@ struct net_device * __init atarilance_probe(int unit) | |||
406 | 404 | ||
407 | /* Derived from hwreg_present() in atari/config.c: */ | 405 | /* Derived from hwreg_present() in atari/config.c: */ |
408 | 406 | ||
409 | static int __init addr_accessible( volatile void *regp, int wordflag, int writeflag ) | 407 | static noinline int __init addr_accessible(volatile void *regp, int wordflag, |
408 | int writeflag) | ||
410 | { | 409 | { |
411 | int ret; | 410 | int ret; |
412 | long flags; | 411 | long flags; |
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index 36ba6dc96acc..cdf3090a1885 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
@@ -2782,16 +2782,13 @@ static void __devexit e100_remove(struct pci_dev *pdev) | |||
2782 | } | 2782 | } |
2783 | } | 2783 | } |
2784 | 2784 | ||
2785 | #ifdef CONFIG_PM | ||
2786 | static int e100_suspend(struct pci_dev *pdev, pm_message_t state) | 2785 | static int e100_suspend(struct pci_dev *pdev, pm_message_t state) |
2787 | { | 2786 | { |
2788 | struct net_device *netdev = pci_get_drvdata(pdev); | 2787 | struct net_device *netdev = pci_get_drvdata(pdev); |
2789 | struct nic *nic = netdev_priv(netdev); | 2788 | struct nic *nic = netdev_priv(netdev); |
2790 | 2789 | ||
2791 | if (netif_running(netdev)) | 2790 | if (netif_running(netdev)) |
2792 | napi_disable(&nic->napi); | 2791 | e100_down(nic); |
2793 | del_timer_sync(&nic->watchdog); | ||
2794 | netif_carrier_off(nic->netdev); | ||
2795 | netif_device_detach(netdev); | 2792 | netif_device_detach(netdev); |
2796 | 2793 | ||
2797 | pci_save_state(pdev); | 2794 | pci_save_state(pdev); |
@@ -2804,14 +2801,13 @@ static int e100_suspend(struct pci_dev *pdev, pm_message_t state) | |||
2804 | pci_enable_wake(pdev, PCI_D3cold, 0); | 2801 | pci_enable_wake(pdev, PCI_D3cold, 0); |
2805 | } | 2802 | } |
2806 | 2803 | ||
2807 | free_irq(pdev->irq, netdev); | ||
2808 | |||
2809 | pci_disable_device(pdev); | 2804 | pci_disable_device(pdev); |
2810 | pci_set_power_state(pdev, PCI_D3hot); | 2805 | pci_set_power_state(pdev, PCI_D3hot); |
2811 | 2806 | ||
2812 | return 0; | 2807 | return 0; |
2813 | } | 2808 | } |
2814 | 2809 | ||
2810 | #ifdef CONFIG_PM | ||
2815 | static int e100_resume(struct pci_dev *pdev) | 2811 | static int e100_resume(struct pci_dev *pdev) |
2816 | { | 2812 | { |
2817 | struct net_device *netdev = pci_get_drvdata(pdev); | 2813 | struct net_device *netdev = pci_get_drvdata(pdev); |
@@ -2832,26 +2828,7 @@ static int e100_resume(struct pci_dev *pdev) | |||
2832 | 2828 | ||
2833 | static void e100_shutdown(struct pci_dev *pdev) | 2829 | static void e100_shutdown(struct pci_dev *pdev) |
2834 | { | 2830 | { |
2835 | struct net_device *netdev = pci_get_drvdata(pdev); | 2831 | e100_suspend(pdev, PMSG_SUSPEND); |
2836 | struct nic *nic = netdev_priv(netdev); | ||
2837 | |||
2838 | if (netif_running(netdev)) | ||
2839 | napi_disable(&nic->napi); | ||
2840 | del_timer_sync(&nic->watchdog); | ||
2841 | netif_carrier_off(nic->netdev); | ||
2842 | |||
2843 | if ((nic->flags & wol_magic) | e100_asf(nic)) { | ||
2844 | pci_enable_wake(pdev, PCI_D3hot, 1); | ||
2845 | pci_enable_wake(pdev, PCI_D3cold, 1); | ||
2846 | } else { | ||
2847 | pci_enable_wake(pdev, PCI_D3hot, 0); | ||
2848 | pci_enable_wake(pdev, PCI_D3cold, 0); | ||
2849 | } | ||
2850 | |||
2851 | free_irq(pdev->irq, netdev); | ||
2852 | |||
2853 | pci_disable_device(pdev); | ||
2854 | pci_set_power_state(pdev, PCI_D3hot); | ||
2855 | } | 2832 | } |
2856 | 2833 | ||
2857 | /* ------------------ PCI Error Recovery infrastructure -------------- */ | 2834 | /* ------------------ PCI Error Recovery infrastructure -------------- */ |
diff --git a/drivers/net/enc28j60.c b/drivers/net/enc28j60.c index 0809a6a5a286..46a90e9ec563 100644 --- a/drivers/net/enc28j60.c +++ b/drivers/net/enc28j60.c | |||
@@ -900,7 +900,7 @@ static void enc28j60_hw_rx(struct net_device *ndev) | |||
900 | if (RSV_GETBIT(rxstat, RSV_LENCHECKERR)) | 900 | if (RSV_GETBIT(rxstat, RSV_LENCHECKERR)) |
901 | ndev->stats.rx_frame_errors++; | 901 | ndev->stats.rx_frame_errors++; |
902 | } else { | 902 | } else { |
903 | skb = dev_alloc_skb(len); | 903 | skb = dev_alloc_skb(len + NET_IP_ALIGN); |
904 | if (!skb) { | 904 | if (!skb) { |
905 | if (netif_msg_rx_err(priv)) | 905 | if (netif_msg_rx_err(priv)) |
906 | dev_err(&ndev->dev, | 906 | dev_err(&ndev->dev, |
@@ -908,6 +908,7 @@ static void enc28j60_hw_rx(struct net_device *ndev) | |||
908 | ndev->stats.rx_dropped++; | 908 | ndev->stats.rx_dropped++; |
909 | } else { | 909 | } else { |
910 | skb->dev = ndev; | 910 | skb->dev = ndev; |
911 | skb_reserve(skb, NET_IP_ALIGN); | ||
911 | /* copy the packet from the receive buffer */ | 912 | /* copy the packet from the receive buffer */ |
912 | enc28j60_mem_read(priv, priv->next_pk_ptr + sizeof(rsv), | 913 | enc28j60_mem_read(priv, priv->next_pk_ptr + sizeof(rsv), |
913 | len, skb_put(skb, len)); | 914 | len, skb_put(skb, len)); |
diff --git a/drivers/net/ixgbe/ixgbe_main.c b/drivers/net/ixgbe/ixgbe_main.c index 23d0a4afe0e1..c2095ce531c9 100644 --- a/drivers/net/ixgbe/ixgbe_main.c +++ b/drivers/net/ixgbe/ixgbe_main.c | |||
@@ -2133,7 +2133,7 @@ static void ixgbe_watchdog(unsigned long data) | |||
2133 | (link_speed == IXGBE_LINK_SPEED_10GB_FULL ? | 2133 | (link_speed == IXGBE_LINK_SPEED_10GB_FULL ? |
2134 | "10 Gbps" : | 2134 | "10 Gbps" : |
2135 | (link_speed == IXGBE_LINK_SPEED_1GB_FULL ? | 2135 | (link_speed == IXGBE_LINK_SPEED_1GB_FULL ? |
2136 | "1 Gpbs" : "unknown speed")), | 2136 | "1 Gbps" : "unknown speed")), |
2137 | ((FLOW_RX && FLOW_TX) ? "RX/TX" : | 2137 | ((FLOW_RX && FLOW_TX) ? "RX/TX" : |
2138 | (FLOW_RX ? "RX" : | 2138 | (FLOW_RX ? "RX" : |
2139 | (FLOW_TX ? "TX" : "None")))); | 2139 | (FLOW_TX ? "TX" : "None")))); |
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index b528ce77c406..771139e283af 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -2104,6 +2104,7 @@ MODULE_LICENSE("GPL"); | |||
2104 | MODULE_AUTHOR( "Rabeeh Khoury, Assaf Hoffman, Matthew Dharm, Manish Lachwani" | 2104 | MODULE_AUTHOR( "Rabeeh Khoury, Assaf Hoffman, Matthew Dharm, Manish Lachwani" |
2105 | " and Dale Farnsworth"); | 2105 | " and Dale Farnsworth"); |
2106 | MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX"); | 2106 | MODULE_DESCRIPTION("Ethernet driver for Marvell MV643XX"); |
2107 | MODULE_ALIAS("platform:mv643xx_eth"); | ||
2107 | 2108 | ||
2108 | /* | 2109 | /* |
2109 | * The second part is the low level driver of the gigE ethernet ports. | 2110 | * The second part is the low level driver of the gigE ethernet ports. |
diff --git a/drivers/net/pcmcia/axnet_cs.c b/drivers/net/pcmcia/axnet_cs.c index e8a63e483a2b..ce95c5d168fe 100644 --- a/drivers/net/pcmcia/axnet_cs.c +++ b/drivers/net/pcmcia/axnet_cs.c | |||
@@ -1268,7 +1268,7 @@ static irqreturn_t ax_interrupt(int irq, void *dev_id) | |||
1268 | } | 1268 | } |
1269 | } | 1269 | } |
1270 | 1270 | ||
1271 | if (interrupts && ei_debug) | 1271 | if (interrupts && ei_debug > 3) |
1272 | { | 1272 | { |
1273 | handled = 1; | 1273 | handled = 1; |
1274 | if (nr_serviced >= MAX_SERVICE) | 1274 | if (nr_serviced >= MAX_SERVICE) |
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig index f4ca0591231d..3ac8529bb92c 100644 --- a/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig | |||
@@ -67,6 +67,7 @@ config REALTEK_PHY | |||
67 | 67 | ||
68 | config FIXED_PHY | 68 | config FIXED_PHY |
69 | bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs" | 69 | bool "Driver for MDIO Bus/PHY emulation with fixed speed/link PHYs" |
70 | depends on PHYLIB=y | ||
70 | ---help--- | 71 | ---help--- |
71 | Adds the platform "fixed" MDIO Bus to cover the boards that use | 72 | Adds the platform "fixed" MDIO Bus to cover the boards that use |
72 | PHYs that are not connected to the real MDIO bus. | 73 | PHYs that are not connected to the real MDIO bus. |
diff --git a/drivers/net/phy/davicom.c b/drivers/net/phy/davicom.c index 7ed632db00d7..d926168bc780 100644 --- a/drivers/net/phy/davicom.c +++ b/drivers/net/phy/davicom.c | |||
@@ -37,6 +37,7 @@ | |||
37 | 37 | ||
38 | #define MII_DM9161_SCR 0x10 | 38 | #define MII_DM9161_SCR 0x10 |
39 | #define MII_DM9161_SCR_INIT 0x0610 | 39 | #define MII_DM9161_SCR_INIT 0x0610 |
40 | #define MII_DM9161_SCR_RMII 0x0100 | ||
40 | 41 | ||
41 | /* DM9161 Interrupt Register */ | 42 | /* DM9161 Interrupt Register */ |
42 | #define MII_DM9161_INTR 0x15 | 43 | #define MII_DM9161_INTR 0x15 |
@@ -103,7 +104,7 @@ static int dm9161_config_aneg(struct phy_device *phydev) | |||
103 | 104 | ||
104 | static int dm9161_config_init(struct phy_device *phydev) | 105 | static int dm9161_config_init(struct phy_device *phydev) |
105 | { | 106 | { |
106 | int err; | 107 | int err, temp; |
107 | 108 | ||
108 | /* Isolate the PHY */ | 109 | /* Isolate the PHY */ |
109 | err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE); | 110 | err = phy_write(phydev, MII_BMCR, BMCR_ISOLATE); |
@@ -111,9 +112,19 @@ static int dm9161_config_init(struct phy_device *phydev) | |||
111 | if (err < 0) | 112 | if (err < 0) |
112 | return err; | 113 | return err; |
113 | 114 | ||
114 | /* Do not bypass the scrambler/descrambler */ | 115 | switch (phydev->interface) { |
115 | err = phy_write(phydev, MII_DM9161_SCR, MII_DM9161_SCR_INIT); | 116 | case PHY_INTERFACE_MODE_MII: |
117 | temp = MII_DM9161_SCR_INIT; | ||
118 | break; | ||
119 | case PHY_INTERFACE_MODE_RMII: | ||
120 | temp = MII_DM9161_SCR_INIT | MII_DM9161_SCR_RMII; | ||
121 | break; | ||
122 | default: | ||
123 | return -EINVAL; | ||
124 | } | ||
116 | 125 | ||
126 | /* Do not bypass the scrambler/descrambler */ | ||
127 | err = phy_write(phydev, MII_DM9161_SCR, temp); | ||
117 | if (err < 0) | 128 | if (err < 0) |
118 | return err; | 129 | return err; |
119 | 130 | ||
diff --git a/drivers/net/pppol2tp.c b/drivers/net/pppol2tp.c index 86e5dba079fe..3d10ca050b79 100644 --- a/drivers/net/pppol2tp.c +++ b/drivers/net/pppol2tp.c | |||
@@ -302,14 +302,14 @@ pppol2tp_session_find(struct pppol2tp_tunnel *tunnel, u16 session_id) | |||
302 | struct pppol2tp_session *session; | 302 | struct pppol2tp_session *session; |
303 | struct hlist_node *walk; | 303 | struct hlist_node *walk; |
304 | 304 | ||
305 | read_lock(&tunnel->hlist_lock); | 305 | read_lock_bh(&tunnel->hlist_lock); |
306 | hlist_for_each_entry(session, walk, session_list, hlist) { | 306 | hlist_for_each_entry(session, walk, session_list, hlist) { |
307 | if (session->tunnel_addr.s_session == session_id) { | 307 | if (session->tunnel_addr.s_session == session_id) { |
308 | read_unlock(&tunnel->hlist_lock); | 308 | read_unlock_bh(&tunnel->hlist_lock); |
309 | return session; | 309 | return session; |
310 | } | 310 | } |
311 | } | 311 | } |
312 | read_unlock(&tunnel->hlist_lock); | 312 | read_unlock_bh(&tunnel->hlist_lock); |
313 | 313 | ||
314 | return NULL; | 314 | return NULL; |
315 | } | 315 | } |
@@ -320,14 +320,14 @@ static struct pppol2tp_tunnel *pppol2tp_tunnel_find(u16 tunnel_id) | |||
320 | { | 320 | { |
321 | struct pppol2tp_tunnel *tunnel = NULL; | 321 | struct pppol2tp_tunnel *tunnel = NULL; |
322 | 322 | ||
323 | read_lock(&pppol2tp_tunnel_list_lock); | 323 | read_lock_bh(&pppol2tp_tunnel_list_lock); |
324 | list_for_each_entry(tunnel, &pppol2tp_tunnel_list, list) { | 324 | list_for_each_entry(tunnel, &pppol2tp_tunnel_list, list) { |
325 | if (tunnel->stats.tunnel_id == tunnel_id) { | 325 | if (tunnel->stats.tunnel_id == tunnel_id) { |
326 | read_unlock(&pppol2tp_tunnel_list_lock); | 326 | read_unlock_bh(&pppol2tp_tunnel_list_lock); |
327 | return tunnel; | 327 | return tunnel; |
328 | } | 328 | } |
329 | } | 329 | } |
330 | read_unlock(&pppol2tp_tunnel_list_lock); | 330 | read_unlock_bh(&pppol2tp_tunnel_list_lock); |
331 | 331 | ||
332 | return NULL; | 332 | return NULL; |
333 | } | 333 | } |
@@ -342,10 +342,11 @@ static struct pppol2tp_tunnel *pppol2tp_tunnel_find(u16 tunnel_id) | |||
342 | static void pppol2tp_recv_queue_skb(struct pppol2tp_session *session, struct sk_buff *skb) | 342 | static void pppol2tp_recv_queue_skb(struct pppol2tp_session *session, struct sk_buff *skb) |
343 | { | 343 | { |
344 | struct sk_buff *skbp; | 344 | struct sk_buff *skbp; |
345 | struct sk_buff *tmp; | ||
345 | u16 ns = PPPOL2TP_SKB_CB(skb)->ns; | 346 | u16 ns = PPPOL2TP_SKB_CB(skb)->ns; |
346 | 347 | ||
347 | spin_lock(&session->reorder_q.lock); | 348 | spin_lock_bh(&session->reorder_q.lock); |
348 | skb_queue_walk(&session->reorder_q, skbp) { | 349 | skb_queue_walk_safe(&session->reorder_q, skbp, tmp) { |
349 | if (PPPOL2TP_SKB_CB(skbp)->ns > ns) { | 350 | if (PPPOL2TP_SKB_CB(skbp)->ns > ns) { |
350 | __skb_insert(skb, skbp->prev, skbp, &session->reorder_q); | 351 | __skb_insert(skb, skbp->prev, skbp, &session->reorder_q); |
351 | PRINTK(session->debug, PPPOL2TP_MSG_SEQ, KERN_DEBUG, | 352 | PRINTK(session->debug, PPPOL2TP_MSG_SEQ, KERN_DEBUG, |
@@ -360,7 +361,7 @@ static void pppol2tp_recv_queue_skb(struct pppol2tp_session *session, struct sk_ | |||
360 | __skb_queue_tail(&session->reorder_q, skb); | 361 | __skb_queue_tail(&session->reorder_q, skb); |
361 | 362 | ||
362 | out: | 363 | out: |
363 | spin_unlock(&session->reorder_q.lock); | 364 | spin_unlock_bh(&session->reorder_q.lock); |
364 | } | 365 | } |
365 | 366 | ||
366 | /* Dequeue a single skb. | 367 | /* Dequeue a single skb. |
@@ -371,10 +372,9 @@ static void pppol2tp_recv_dequeue_skb(struct pppol2tp_session *session, struct s | |||
371 | int length = PPPOL2TP_SKB_CB(skb)->length; | 372 | int length = PPPOL2TP_SKB_CB(skb)->length; |
372 | struct sock *session_sock = NULL; | 373 | struct sock *session_sock = NULL; |
373 | 374 | ||
374 | /* We're about to requeue the skb, so unlink it and return resources | 375 | /* We're about to requeue the skb, so return resources |
375 | * to its current owner (a socket receive buffer). | 376 | * to its current owner (a socket receive buffer). |
376 | */ | 377 | */ |
377 | skb_unlink(skb, &session->reorder_q); | ||
378 | skb_orphan(skb); | 378 | skb_orphan(skb); |
379 | 379 | ||
380 | tunnel->stats.rx_packets++; | 380 | tunnel->stats.rx_packets++; |
@@ -442,7 +442,7 @@ static void pppol2tp_recv_dequeue(struct pppol2tp_session *session) | |||
442 | * expect to send up next, dequeue it and any other | 442 | * expect to send up next, dequeue it and any other |
443 | * in-sequence packets behind it. | 443 | * in-sequence packets behind it. |
444 | */ | 444 | */ |
445 | spin_lock(&session->reorder_q.lock); | 445 | spin_lock_bh(&session->reorder_q.lock); |
446 | skb_queue_walk_safe(&session->reorder_q, skb, tmp) { | 446 | skb_queue_walk_safe(&session->reorder_q, skb, tmp) { |
447 | if (time_after(jiffies, PPPOL2TP_SKB_CB(skb)->expires)) { | 447 | if (time_after(jiffies, PPPOL2TP_SKB_CB(skb)->expires)) { |
448 | session->stats.rx_seq_discards++; | 448 | session->stats.rx_seq_discards++; |
@@ -470,13 +470,18 @@ static void pppol2tp_recv_dequeue(struct pppol2tp_session *session) | |||
470 | goto out; | 470 | goto out; |
471 | } | 471 | } |
472 | } | 472 | } |
473 | spin_unlock(&session->reorder_q.lock); | 473 | __skb_unlink(skb, &session->reorder_q); |
474 | |||
475 | /* Process the skb. We release the queue lock while we | ||
476 | * do so to let other contexts process the queue. | ||
477 | */ | ||
478 | spin_unlock_bh(&session->reorder_q.lock); | ||
474 | pppol2tp_recv_dequeue_skb(session, skb); | 479 | pppol2tp_recv_dequeue_skb(session, skb); |
475 | spin_lock(&session->reorder_q.lock); | 480 | spin_lock_bh(&session->reorder_q.lock); |
476 | } | 481 | } |
477 | 482 | ||
478 | out: | 483 | out: |
479 | spin_unlock(&session->reorder_q.lock); | 484 | spin_unlock_bh(&session->reorder_q.lock); |
480 | } | 485 | } |
481 | 486 | ||
482 | /* Internal receive frame. Do the real work of receiving an L2TP data frame | 487 | /* Internal receive frame. Do the real work of receiving an L2TP data frame |
@@ -1059,7 +1064,7 @@ static int pppol2tp_xmit(struct ppp_channel *chan, struct sk_buff *skb) | |||
1059 | 1064 | ||
1060 | /* Get routing info from the tunnel socket */ | 1065 | /* Get routing info from the tunnel socket */ |
1061 | dst_release(skb->dst); | 1066 | dst_release(skb->dst); |
1062 | skb->dst = sk_dst_get(sk_tun); | 1067 | skb->dst = dst_clone(__sk_dst_get(sk_tun)); |
1063 | skb_orphan(skb); | 1068 | skb_orphan(skb); |
1064 | skb->sk = sk_tun; | 1069 | skb->sk = sk_tun; |
1065 | 1070 | ||
@@ -1107,7 +1112,7 @@ static void pppol2tp_tunnel_closeall(struct pppol2tp_tunnel *tunnel) | |||
1107 | PRINTK(tunnel->debug, PPPOL2TP_MSG_CONTROL, KERN_INFO, | 1112 | PRINTK(tunnel->debug, PPPOL2TP_MSG_CONTROL, KERN_INFO, |
1108 | "%s: closing all sessions...\n", tunnel->name); | 1113 | "%s: closing all sessions...\n", tunnel->name); |
1109 | 1114 | ||
1110 | write_lock(&tunnel->hlist_lock); | 1115 | write_lock_bh(&tunnel->hlist_lock); |
1111 | for (hash = 0; hash < PPPOL2TP_HASH_SIZE; hash++) { | 1116 | for (hash = 0; hash < PPPOL2TP_HASH_SIZE; hash++) { |
1112 | again: | 1117 | again: |
1113 | hlist_for_each_safe(walk, tmp, &tunnel->session_hlist[hash]) { | 1118 | hlist_for_each_safe(walk, tmp, &tunnel->session_hlist[hash]) { |
@@ -1129,7 +1134,7 @@ again: | |||
1129 | * disappear as we're jumping between locks. | 1134 | * disappear as we're jumping between locks. |
1130 | */ | 1135 | */ |
1131 | sock_hold(sk); | 1136 | sock_hold(sk); |
1132 | write_unlock(&tunnel->hlist_lock); | 1137 | write_unlock_bh(&tunnel->hlist_lock); |
1133 | lock_sock(sk); | 1138 | lock_sock(sk); |
1134 | 1139 | ||
1135 | if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) { | 1140 | if (sk->sk_state & (PPPOX_CONNECTED | PPPOX_BOUND)) { |
@@ -1154,11 +1159,11 @@ again: | |||
1154 | * list so we are guaranteed to make forward | 1159 | * list so we are guaranteed to make forward |
1155 | * progress. | 1160 | * progress. |
1156 | */ | 1161 | */ |
1157 | write_lock(&tunnel->hlist_lock); | 1162 | write_lock_bh(&tunnel->hlist_lock); |
1158 | goto again; | 1163 | goto again; |
1159 | } | 1164 | } |
1160 | } | 1165 | } |
1161 | write_unlock(&tunnel->hlist_lock); | 1166 | write_unlock_bh(&tunnel->hlist_lock); |
1162 | } | 1167 | } |
1163 | 1168 | ||
1164 | /* Really kill the tunnel. | 1169 | /* Really kill the tunnel. |
@@ -1167,9 +1172,9 @@ again: | |||
1167 | static void pppol2tp_tunnel_free(struct pppol2tp_tunnel *tunnel) | 1172 | static void pppol2tp_tunnel_free(struct pppol2tp_tunnel *tunnel) |
1168 | { | 1173 | { |
1169 | /* Remove from socket list */ | 1174 | /* Remove from socket list */ |
1170 | write_lock(&pppol2tp_tunnel_list_lock); | 1175 | write_lock_bh(&pppol2tp_tunnel_list_lock); |
1171 | list_del_init(&tunnel->list); | 1176 | list_del_init(&tunnel->list); |
1172 | write_unlock(&pppol2tp_tunnel_list_lock); | 1177 | write_unlock_bh(&pppol2tp_tunnel_list_lock); |
1173 | 1178 | ||
1174 | atomic_dec(&pppol2tp_tunnel_count); | 1179 | atomic_dec(&pppol2tp_tunnel_count); |
1175 | kfree(tunnel); | 1180 | kfree(tunnel); |
@@ -1245,9 +1250,9 @@ static void pppol2tp_session_destruct(struct sock *sk) | |||
1245 | /* Delete the session socket from the | 1250 | /* Delete the session socket from the |
1246 | * hash | 1251 | * hash |
1247 | */ | 1252 | */ |
1248 | write_lock(&tunnel->hlist_lock); | 1253 | write_lock_bh(&tunnel->hlist_lock); |
1249 | hlist_del_init(&session->hlist); | 1254 | hlist_del_init(&session->hlist); |
1250 | write_unlock(&tunnel->hlist_lock); | 1255 | write_unlock_bh(&tunnel->hlist_lock); |
1251 | 1256 | ||
1252 | atomic_dec(&pppol2tp_session_count); | 1257 | atomic_dec(&pppol2tp_session_count); |
1253 | } | 1258 | } |
@@ -1392,9 +1397,9 @@ static struct sock *pppol2tp_prepare_tunnel_socket(int fd, u16 tunnel_id, | |||
1392 | 1397 | ||
1393 | /* Add tunnel to our list */ | 1398 | /* Add tunnel to our list */ |
1394 | INIT_LIST_HEAD(&tunnel->list); | 1399 | INIT_LIST_HEAD(&tunnel->list); |
1395 | write_lock(&pppol2tp_tunnel_list_lock); | 1400 | write_lock_bh(&pppol2tp_tunnel_list_lock); |
1396 | list_add(&tunnel->list, &pppol2tp_tunnel_list); | 1401 | list_add(&tunnel->list, &pppol2tp_tunnel_list); |
1397 | write_unlock(&pppol2tp_tunnel_list_lock); | 1402 | write_unlock_bh(&pppol2tp_tunnel_list_lock); |
1398 | atomic_inc(&pppol2tp_tunnel_count); | 1403 | atomic_inc(&pppol2tp_tunnel_count); |
1399 | 1404 | ||
1400 | /* Bump the reference count. The tunnel context is deleted | 1405 | /* Bump the reference count. The tunnel context is deleted |
@@ -1599,11 +1604,11 @@ static int pppol2tp_connect(struct socket *sock, struct sockaddr *uservaddr, | |||
1599 | sk->sk_user_data = session; | 1604 | sk->sk_user_data = session; |
1600 | 1605 | ||
1601 | /* Add session to the tunnel's hash list */ | 1606 | /* Add session to the tunnel's hash list */ |
1602 | write_lock(&tunnel->hlist_lock); | 1607 | write_lock_bh(&tunnel->hlist_lock); |
1603 | hlist_add_head(&session->hlist, | 1608 | hlist_add_head(&session->hlist, |
1604 | pppol2tp_session_id_hash(tunnel, | 1609 | pppol2tp_session_id_hash(tunnel, |
1605 | session->tunnel_addr.s_session)); | 1610 | session->tunnel_addr.s_session)); |
1606 | write_unlock(&tunnel->hlist_lock); | 1611 | write_unlock_bh(&tunnel->hlist_lock); |
1607 | 1612 | ||
1608 | atomic_inc(&pppol2tp_session_count); | 1613 | atomic_inc(&pppol2tp_session_count); |
1609 | 1614 | ||
@@ -2205,7 +2210,7 @@ static struct pppol2tp_session *next_session(struct pppol2tp_tunnel *tunnel, str | |||
2205 | int next = 0; | 2210 | int next = 0; |
2206 | int i; | 2211 | int i; |
2207 | 2212 | ||
2208 | read_lock(&tunnel->hlist_lock); | 2213 | read_lock_bh(&tunnel->hlist_lock); |
2209 | for (i = 0; i < PPPOL2TP_HASH_SIZE; i++) { | 2214 | for (i = 0; i < PPPOL2TP_HASH_SIZE; i++) { |
2210 | hlist_for_each_entry(session, walk, &tunnel->session_hlist[i], hlist) { | 2215 | hlist_for_each_entry(session, walk, &tunnel->session_hlist[i], hlist) { |
2211 | if (curr == NULL) { | 2216 | if (curr == NULL) { |
@@ -2223,7 +2228,7 @@ static struct pppol2tp_session *next_session(struct pppol2tp_tunnel *tunnel, str | |||
2223 | } | 2228 | } |
2224 | } | 2229 | } |
2225 | out: | 2230 | out: |
2226 | read_unlock(&tunnel->hlist_lock); | 2231 | read_unlock_bh(&tunnel->hlist_lock); |
2227 | if (!found) | 2232 | if (!found) |
2228 | session = NULL; | 2233 | session = NULL; |
2229 | 2234 | ||
@@ -2234,13 +2239,13 @@ static struct pppol2tp_tunnel *next_tunnel(struct pppol2tp_tunnel *curr) | |||
2234 | { | 2239 | { |
2235 | struct pppol2tp_tunnel *tunnel = NULL; | 2240 | struct pppol2tp_tunnel *tunnel = NULL; |
2236 | 2241 | ||
2237 | read_lock(&pppol2tp_tunnel_list_lock); | 2242 | read_lock_bh(&pppol2tp_tunnel_list_lock); |
2238 | if (list_is_last(&curr->list, &pppol2tp_tunnel_list)) { | 2243 | if (list_is_last(&curr->list, &pppol2tp_tunnel_list)) { |
2239 | goto out; | 2244 | goto out; |
2240 | } | 2245 | } |
2241 | tunnel = list_entry(curr->list.next, struct pppol2tp_tunnel, list); | 2246 | tunnel = list_entry(curr->list.next, struct pppol2tp_tunnel, list); |
2242 | out: | 2247 | out: |
2243 | read_unlock(&pppol2tp_tunnel_list_lock); | 2248 | read_unlock_bh(&pppol2tp_tunnel_list_lock); |
2244 | 2249 | ||
2245 | return tunnel; | 2250 | return tunnel; |
2246 | } | 2251 | } |
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c index 6179a0a2032c..c72787adeba3 100644 --- a/drivers/net/s2io.c +++ b/drivers/net/s2io.c | |||
@@ -1088,7 +1088,7 @@ static int s2io_print_pci_mode(struct s2io_nic *nic) | |||
1088 | * '-1' on failure | 1088 | * '-1' on failure |
1089 | */ | 1089 | */ |
1090 | 1090 | ||
1091 | int init_tti(struct s2io_nic *nic, int link) | 1091 | static int init_tti(struct s2io_nic *nic, int link) |
1092 | { | 1092 | { |
1093 | struct XENA_dev_config __iomem *bar0 = nic->bar0; | 1093 | struct XENA_dev_config __iomem *bar0 = nic->bar0; |
1094 | register u64 val64 = 0; | 1094 | register u64 val64 = 0; |
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c index 77d9dd7ea34f..567c62757e9d 100644 --- a/drivers/net/tulip/de2104x.c +++ b/drivers/net/tulip/de2104x.c | |||
@@ -910,7 +910,8 @@ static void de_set_media (struct de_private *de) | |||
910 | unsigned media = de->media_type; | 910 | unsigned media = de->media_type; |
911 | u32 macmode = dr32(MacMode); | 911 | u32 macmode = dr32(MacMode); |
912 | 912 | ||
913 | BUG_ON(de_is_running(de)); | 913 | if (de_is_running(de)) |
914 | printk(KERN_WARNING "%s: chip is running while changing media!\n", de->dev->name); | ||
914 | 915 | ||
915 | if (de->de21040) | 916 | if (de->de21040) |
916 | dw32(CSR11, FULL_DUPLEX_MAGIC); | 917 | dw32(CSR11, FULL_DUPLEX_MAGIC); |
diff --git a/drivers/net/wan/sbni.c b/drivers/net/wan/sbni.c index 15d5c58e57bc..e59255a155a9 100644 --- a/drivers/net/wan/sbni.c +++ b/drivers/net/wan/sbni.c | |||
@@ -751,7 +751,7 @@ upload_data( struct net_device *dev, unsigned framelen, unsigned frameno, | |||
751 | } | 751 | } |
752 | 752 | ||
753 | 753 | ||
754 | static __inline void | 754 | static inline void |
755 | send_complete( struct net_local *nl ) | 755 | send_complete( struct net_local *nl ) |
756 | { | 756 | { |
757 | #ifdef CONFIG_SBNI_MULTILINE | 757 | #ifdef CONFIG_SBNI_MULTILINE |
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c index bdc6a1cc2103..f0ef7081bdeb 100644 --- a/drivers/net/wireless/libertas/cmdresp.c +++ b/drivers/net/wireless/libertas/cmdresp.c | |||
@@ -578,7 +578,7 @@ int lbs_process_rx_command(struct lbs_private *priv) | |||
578 | goto done; | 578 | goto done; |
579 | } | 579 | } |
580 | if (respcmd != CMD_RET(curcmd) && | 580 | if (respcmd != CMD_RET(curcmd) && |
581 | respcmd != CMD_802_11_ASSOCIATE && curcmd != CMD_RET_802_11_ASSOCIATE) { | 581 | respcmd != CMD_RET_802_11_ASSOCIATE && curcmd != CMD_802_11_ASSOCIATE) { |
582 | lbs_pr_info("Invalid CMD_RESP %x to command %x!\n", respcmd, curcmd); | 582 | lbs_pr_info("Invalid CMD_RESP %x to command %x!\n", respcmd, curcmd); |
583 | spin_unlock_irqrestore(&priv->driver_lock, flags); | 583 | spin_unlock_irqrestore(&priv->driver_lock, flags); |
584 | ret = -1; | 584 | ret = -1; |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index e808db98f2f5..93ea212fedd5 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -2302,9 +2302,9 @@ static void rt61pci_configure_filter(struct ieee80211_hw *hw, | |||
2302 | * Apply some rules to the filters: | 2302 | * Apply some rules to the filters: |
2303 | * - Some filters imply different filters to be set. | 2303 | * - Some filters imply different filters to be set. |
2304 | * - Some things we can't filter out at all. | 2304 | * - Some things we can't filter out at all. |
2305 | * - Multicast filter seems to kill broadcast traffic so never use it. | ||
2305 | */ | 2306 | */ |
2306 | if (mc_count) | 2307 | *total_flags |= FIF_ALLMULTI; |
2307 | *total_flags |= FIF_ALLMULTI; | ||
2308 | if (*total_flags & FIF_OTHER_BSS || | 2308 | if (*total_flags & FIF_OTHER_BSS || |
2309 | *total_flags & FIF_PROMISC_IN_BSS) | 2309 | *total_flags & FIF_PROMISC_IN_BSS) |
2310 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; | 2310 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 4fac2d414d84..8103d41a1543 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -1869,9 +1869,9 @@ static void rt73usb_configure_filter(struct ieee80211_hw *hw, | |||
1869 | * Apply some rules to the filters: | 1869 | * Apply some rules to the filters: |
1870 | * - Some filters imply different filters to be set. | 1870 | * - Some filters imply different filters to be set. |
1871 | * - Some things we can't filter out at all. | 1871 | * - Some things we can't filter out at all. |
1872 | * - Multicast filter seems to kill broadcast traffic so never use it. | ||
1872 | */ | 1873 | */ |
1873 | if (mc_count) | 1874 | *total_flags |= FIF_ALLMULTI; |
1874 | *total_flags |= FIF_ALLMULTI; | ||
1875 | if (*total_flags & FIF_OTHER_BSS || | 1875 | if (*total_flags & FIF_OTHER_BSS || |
1876 | *total_flags & FIF_PROMISC_IN_BSS) | 1876 | *total_flags & FIF_PROMISC_IN_BSS) |
1877 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; | 1877 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; |
@@ -2098,6 +2098,7 @@ static struct usb_device_id rt73usb_device_table[] = { | |||
2098 | /* D-Link */ | 2098 | /* D-Link */ |
2099 | { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) }, | 2099 | { USB_DEVICE(0x07d1, 0x3c03), USB_DEVICE_DATA(&rt73usb_ops) }, |
2100 | { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, | 2100 | { USB_DEVICE(0x07d1, 0x3c04), USB_DEVICE_DATA(&rt73usb_ops) }, |
2101 | { USB_DEVICE(0x07d1, 0x3c07), USB_DEVICE_DATA(&rt73usb_ops) }, | ||
2101 | /* Gemtek */ | 2102 | /* Gemtek */ |
2102 | { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) }, | 2103 | { USB_DEVICE(0x15a9, 0x0004), USB_DEVICE_DATA(&rt73usb_ops) }, |
2103 | /* Gigabyte */ | 2104 | /* Gigabyte */ |
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index 6a9403d79e0c..d708358326e5 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c | |||
@@ -143,14 +143,18 @@ void pci_bus_add_devices(struct pci_bus *bus) | |||
143 | /* register the bus with sysfs as the parent is now | 143 | /* register the bus with sysfs as the parent is now |
144 | * properly registered. */ | 144 | * properly registered. */ |
145 | child_bus = dev->subordinate; | 145 | child_bus = dev->subordinate; |
146 | if (child_bus->is_added) | ||
147 | continue; | ||
146 | child_bus->dev.parent = child_bus->bridge; | 148 | child_bus->dev.parent = child_bus->bridge; |
147 | retval = device_register(&child_bus->dev); | 149 | retval = device_register(&child_bus->dev); |
148 | if (retval) | 150 | if (retval) |
149 | dev_err(&dev->dev, "Error registering pci_bus," | 151 | dev_err(&dev->dev, "Error registering pci_bus," |
150 | " continuing...\n"); | 152 | " continuing...\n"); |
151 | else | 153 | else { |
154 | child_bus->is_added = 1; | ||
152 | retval = device_create_file(&child_bus->dev, | 155 | retval = device_create_file(&child_bus->dev, |
153 | &dev_attr_cpuaffinity); | 156 | &dev_attr_cpuaffinity); |
157 | } | ||
154 | if (retval) | 158 | if (retval) |
155 | dev_err(&dev->dev, "Error creating cpuaffinity" | 159 | dev_err(&dev->dev, "Error creating cpuaffinity" |
156 | " file, continuing...\n"); | 160 | " file, continuing...\n"); |
diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c index 4a23654184fc..72f7476930c8 100644 --- a/drivers/pci/pci-acpi.c +++ b/drivers/pci/pci-acpi.c | |||
@@ -272,21 +272,29 @@ static int acpi_pci_set_power_state(struct pci_dev *dev, pci_power_t state) | |||
272 | { | 272 | { |
273 | acpi_handle handle = DEVICE_ACPI_HANDLE(&dev->dev); | 273 | acpi_handle handle = DEVICE_ACPI_HANDLE(&dev->dev); |
274 | acpi_handle tmp; | 274 | acpi_handle tmp; |
275 | static int state_conv[] = { | 275 | static const u8 state_conv[] = { |
276 | [0] = 0, | 276 | [PCI_D0] = ACPI_STATE_D0, |
277 | [1] = 1, | 277 | [PCI_D1] = ACPI_STATE_D1, |
278 | [2] = 2, | 278 | [PCI_D2] = ACPI_STATE_D2, |
279 | [3] = 3, | 279 | [PCI_D3hot] = ACPI_STATE_D3, |
280 | [4] = 3 | 280 | [PCI_D3cold] = ACPI_STATE_D3 |
281 | }; | 281 | }; |
282 | int acpi_state = state_conv[(int __force) state]; | ||
283 | 282 | ||
284 | if (!handle) | 283 | if (!handle) |
285 | return -ENODEV; | 284 | return -ENODEV; |
286 | /* If the ACPI device has _EJ0, ignore the device */ | 285 | /* If the ACPI device has _EJ0, ignore the device */ |
287 | if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp))) | 286 | if (ACPI_SUCCESS(acpi_get_handle(handle, "_EJ0", &tmp))) |
288 | return 0; | 287 | return 0; |
289 | return acpi_bus_set_power(handle, acpi_state); | 288 | |
289 | switch (state) { | ||
290 | case PCI_D0: | ||
291 | case PCI_D1: | ||
292 | case PCI_D2: | ||
293 | case PCI_D3hot: | ||
294 | case PCI_D3cold: | ||
295 | return acpi_bus_set_power(handle, state_conv[state]); | ||
296 | } | ||
297 | return -EINVAL; | ||
290 | } | 298 | } |
291 | 299 | ||
292 | 300 | ||
diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c index 4065139753b6..37993206ae5d 100644 --- a/drivers/pnp/quirks.c +++ b/drivers/pnp/quirks.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
18 | #include <linux/pnp.h> | 18 | #include <linux/pnp.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <linux/dmi.h> | ||
21 | #include <linux/kallsyms.h> | 20 | #include <linux/kallsyms.h> |
22 | #include "base.h" | 21 | #include "base.h" |
23 | 22 | ||
@@ -109,42 +108,73 @@ static void quirk_sb16audio_resources(struct pnp_dev *dev) | |||
109 | "pnp: SB audio device quirk - increasing port range\n"); | 108 | "pnp: SB audio device quirk - increasing port range\n"); |
110 | } | 109 | } |
111 | 110 | ||
112 | static void quirk_supermicro_h8dce_system(struct pnp_dev *dev) | 111 | |
112 | #include <linux/pci.h> | ||
113 | |||
114 | static void quirk_system_pci_resources(struct pnp_dev *dev) | ||
113 | { | 115 | { |
114 | int i; | 116 | struct pci_dev *pdev = NULL; |
115 | static struct dmi_system_id supermicro_h8dce[] = { | 117 | resource_size_t pnp_start, pnp_end, pci_start, pci_end; |
116 | { | 118 | int i, j; |
117 | .ident = "Supermicro H8DCE", | ||
118 | .matches = { | ||
119 | DMI_MATCH(DMI_SYS_VENDOR, "Supermicro"), | ||
120 | DMI_MATCH(DMI_PRODUCT_NAME, "H8DCE"), | ||
121 | }, | ||
122 | }, | ||
123 | { } | ||
124 | }; | ||
125 | |||
126 | if (!dmi_check_system(supermicro_h8dce)) | ||
127 | return; | ||
128 | 119 | ||
129 | /* | 120 | /* |
130 | * On the Supermicro H8DCE, there's a system device with resources | 121 | * Some BIOSes have PNP motherboard devices with resources that |
131 | * that overlap BAR 6 of the built-in SATA PCI adapter. If the PNP | 122 | * partially overlap PCI BARs. The PNP system driver claims these |
132 | * system device claims them, the sata_nv driver won't be able to. | 123 | * motherboard resources, which prevents the normal PCI driver from |
133 | * More details at: | 124 | * requesting them later. |
134 | * https://bugzilla.redhat.com/show_bug.cgi?id=280641 | 125 | * |
135 | * https://bugzilla.redhat.com/show_bug.cgi?id=313491 | 126 | * This patch disables the PNP resources that conflict with PCI BARs |
136 | * http://lkml.org/lkml/2008/1/9/449 | 127 | * so they won't be claimed by the PNP system driver. |
137 | * http://thread.gmane.org/gmane.linux.acpi.devel/27312 | ||
138 | */ | 128 | */ |
139 | for (i = 0; i < PNP_MAX_MEM; i++) { | 129 | for_each_pci_dev(pdev) { |
140 | if (pnp_mem_valid(dev, i) && pnp_mem_len(dev, i) && | 130 | for (i = 0; i < DEVICE_COUNT_RESOURCE; i++) { |
141 | (pnp_mem_start(dev, i) & 0xdfef0000) == 0xdfef0000) { | 131 | if (!(pci_resource_flags(pdev, i) & IORESOURCE_MEM) || |
142 | dev_warn(&dev->dev, "disabling 0x%llx-0x%llx to prevent" | 132 | pci_resource_len(pdev, i) == 0) |
143 | " conflict with sata_nv PCI device\n", | 133 | continue; |
144 | (unsigned long long) pnp_mem_start(dev, i), | 134 | |
145 | (unsigned long long) (pnp_mem_start(dev, i) + | 135 | pci_start = pci_resource_start(pdev, i); |
146 | pnp_mem_len(dev, i) - 1)); | 136 | pci_end = pci_resource_end(pdev, i); |
147 | pnp_mem_flags(dev, i) = 0; | 137 | for (j = 0; j < PNP_MAX_MEM; j++) { |
138 | if (!pnp_mem_valid(dev, j) || | ||
139 | pnp_mem_len(dev, j) == 0) | ||
140 | continue; | ||
141 | |||
142 | pnp_start = pnp_mem_start(dev, j); | ||
143 | pnp_end = pnp_mem_end(dev, j); | ||
144 | |||
145 | /* | ||
146 | * If the PNP region doesn't overlap the PCI | ||
147 | * region at all, there's no problem. | ||
148 | */ | ||
149 | if (pnp_end < pci_start || pnp_start > pci_end) | ||
150 | continue; | ||
151 | |||
152 | /* | ||
153 | * If the PNP region completely encloses (or is | ||
154 | * at least as large as) the PCI region, that's | ||
155 | * also OK. For example, this happens when the | ||
156 | * PNP device describes a bridge with PCI | ||
157 | * behind it. | ||
158 | */ | ||
159 | if (pnp_start <= pci_start && | ||
160 | pnp_end >= pci_end) | ||
161 | continue; | ||
162 | |||
163 | /* | ||
164 | * Otherwise, the PNP region overlaps *part* of | ||
165 | * the PCI region, and that might prevent a PCI | ||
166 | * driver from requesting its resources. | ||
167 | */ | ||
168 | dev_warn(&dev->dev, "mem resource " | ||
169 | "(0x%llx-0x%llx) overlaps %s BAR %d " | ||
170 | "(0x%llx-0x%llx), disabling\n", | ||
171 | (unsigned long long) pnp_start, | ||
172 | (unsigned long long) pnp_end, | ||
173 | pci_name(pdev), i, | ||
174 | (unsigned long long) pci_start, | ||
175 | (unsigned long long) pci_end); | ||
176 | pnp_mem_flags(dev, j) = 0; | ||
177 | } | ||
148 | } | 178 | } |
149 | } | 179 | } |
150 | } | 180 | } |
@@ -169,8 +199,8 @@ static struct pnp_fixup pnp_fixups[] = { | |||
169 | {"CTL0043", quirk_sb16audio_resources}, | 199 | {"CTL0043", quirk_sb16audio_resources}, |
170 | {"CTL0044", quirk_sb16audio_resources}, | 200 | {"CTL0044", quirk_sb16audio_resources}, |
171 | {"CTL0045", quirk_sb16audio_resources}, | 201 | {"CTL0045", quirk_sb16audio_resources}, |
172 | {"PNP0c01", quirk_supermicro_h8dce_system}, | 202 | {"PNP0c01", quirk_system_pci_resources}, |
173 | {"PNP0c02", quirk_supermicro_h8dce_system}, | 203 | {"PNP0c02", quirk_system_pci_resources}, |
174 | {""} | 204 | {""} |
175 | }; | 205 | }; |
176 | 206 | ||
diff --git a/drivers/spi/au1550_spi.c b/drivers/spi/au1550_spi.c index c47a650183a1..41a3d00c4515 100644 --- a/drivers/spi/au1550_spi.c +++ b/drivers/spi/au1550_spi.c | |||
@@ -99,7 +99,7 @@ static dbdev_tab_t au1550_spi_mem_dbdev = | |||
99 | static void au1550_spi_bits_handlers_set(struct au1550_spi *hw, int bpw); | 99 | static void au1550_spi_bits_handlers_set(struct au1550_spi *hw, int bpw); |
100 | 100 | ||
101 | 101 | ||
102 | /** | 102 | /* |
103 | * compute BRG and DIV bits to setup spi clock based on main input clock rate | 103 | * compute BRG and DIV bits to setup spi clock based on main input clock rate |
104 | * that was specified in platform data structure | 104 | * that was specified in platform data structure |
105 | * according to au1550 datasheet: | 105 | * according to au1550 datasheet: |
@@ -650,7 +650,7 @@ static int au1550_spi_txrx_bufs(struct spi_device *spi, struct spi_transfer *t) | |||
650 | return hw->txrx_bufs(spi, t); | 650 | return hw->txrx_bufs(spi, t); |
651 | } | 651 | } |
652 | 652 | ||
653 | static irqreturn_t au1550_spi_irq(int irq, void *dev, struct pt_regs *regs) | 653 | static irqreturn_t au1550_spi_irq(int irq, void *dev) |
654 | { | 654 | { |
655 | struct au1550_spi *hw = dev; | 655 | struct au1550_spi *hw = dev; |
656 | return hw->irq_callback(hw); | 656 | return hw->irq_callback(hw); |
diff --git a/drivers/spi/spi_bitbang.c b/drivers/spi/spi_bitbang.c index f7f8580edad8..71e881419cdd 100644 --- a/drivers/spi/spi_bitbang.c +++ b/drivers/spi/spi_bitbang.c | |||
@@ -344,12 +344,14 @@ static void bitbang_work(struct work_struct *work) | |||
344 | t->rx_dma = t->tx_dma = 0; | 344 | t->rx_dma = t->tx_dma = 0; |
345 | status = bitbang->txrx_bufs(spi, t); | 345 | status = bitbang->txrx_bufs(spi, t); |
346 | } | 346 | } |
347 | if (status > 0) | ||
348 | m->actual_length += status; | ||
347 | if (status != t->len) { | 349 | if (status != t->len) { |
348 | if (status > 0) | 350 | /* always report some kind of error */ |
349 | status = -EMSGSIZE; | 351 | if (status >= 0) |
352 | status = -EREMOTEIO; | ||
350 | break; | 353 | break; |
351 | } | 354 | } |
352 | m->actual_length += status; | ||
353 | status = 0; | 355 | status = 0; |
354 | 356 | ||
355 | /* protocol tweaks before next transfer */ | 357 | /* protocol tweaks before next transfer */ |
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index 69f19f224875..3ab313ed441c 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig | |||
@@ -4,6 +4,7 @@ | |||
4 | 4 | ||
5 | menuconfig THERMAL | 5 | menuconfig THERMAL |
6 | bool "Generic Thermal sysfs driver" | 6 | bool "Generic Thermal sysfs driver" |
7 | select HWMON | ||
7 | default y | 8 | default y |
8 | help | 9 | help |
9 | Generic Thermal Sysfs driver offers a generic mechanism for | 10 | Generic Thermal Sysfs driver offers a generic mechanism for |
diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c index 8b86e53ccf7a..41bd4c805ace 100644 --- a/drivers/thermal/thermal.c +++ b/drivers/thermal/thermal.c | |||
@@ -30,8 +30,10 @@ | |||
30 | #include <linux/idr.h> | 30 | #include <linux/idr.h> |
31 | #include <linux/thermal.h> | 31 | #include <linux/thermal.h> |
32 | #include <linux/spinlock.h> | 32 | #include <linux/spinlock.h> |
33 | #include <linux/hwmon.h> | ||
34 | #include <linux/hwmon-sysfs.h> | ||
33 | 35 | ||
34 | MODULE_AUTHOR("Zhang Rui") | 36 | MODULE_AUTHOR("Zhang Rui"); |
35 | MODULE_DESCRIPTION("Generic thermal management sysfs support"); | 37 | MODULE_DESCRIPTION("Generic thermal management sysfs support"); |
36 | MODULE_LICENSE("GPL"); | 38 | MODULE_LICENSE("GPL"); |
37 | 39 | ||
@@ -56,6 +58,9 @@ static LIST_HEAD(thermal_tz_list); | |||
56 | static LIST_HEAD(thermal_cdev_list); | 58 | static LIST_HEAD(thermal_cdev_list); |
57 | static DEFINE_MUTEX(thermal_list_lock); | 59 | static DEFINE_MUTEX(thermal_list_lock); |
58 | 60 | ||
61 | static struct device *thermal_hwmon; | ||
62 | #define MAX_THERMAL_ZONES 10 | ||
63 | |||
59 | static int get_idr(struct idr *idr, struct mutex *lock, int *id) | 64 | static int get_idr(struct idr *idr, struct mutex *lock, int *id) |
60 | { | 65 | { |
61 | int err; | 66 | int err; |
@@ -87,7 +92,67 @@ static void release_idr(struct idr *idr, struct mutex *lock, int id) | |||
87 | mutex_unlock(lock); | 92 | mutex_unlock(lock); |
88 | } | 93 | } |
89 | 94 | ||
90 | /* sys I/F for thermal zone */ | 95 | /* hwmon sys I/F*/ |
96 | static ssize_t | ||
97 | name_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
98 | { | ||
99 | return sprintf(buf, "thermal_sys_class\n"); | ||
100 | } | ||
101 | |||
102 | static ssize_t | ||
103 | temp_input_show(struct device *dev, struct device_attribute *attr, char *buf) | ||
104 | { | ||
105 | struct thermal_zone_device *tz; | ||
106 | struct sensor_device_attribute *sensor_attr | ||
107 | = to_sensor_dev_attr(attr); | ||
108 | |||
109 | list_for_each_entry(tz, &thermal_tz_list, node) | ||
110 | if (tz->id == sensor_attr->index) | ||
111 | return tz->ops->get_temp(tz, buf); | ||
112 | |||
113 | return -ENODEV; | ||
114 | } | ||
115 | |||
116 | static ssize_t | ||
117 | temp_crit_show(struct device *dev, struct device_attribute *attr, | ||
118 | char *buf) | ||
119 | { | ||
120 | struct thermal_zone_device *tz; | ||
121 | struct sensor_device_attribute *sensor_attr | ||
122 | = to_sensor_dev_attr(attr); | ||
123 | |||
124 | list_for_each_entry(tz, &thermal_tz_list, node) | ||
125 | if (tz->id == sensor_attr->index) | ||
126 | return tz->ops->get_trip_temp(tz, 0, buf); | ||
127 | |||
128 | return -ENODEV; | ||
129 | } | ||
130 | |||
131 | static DEVICE_ATTR(name, 0444, name_show, NULL); | ||
132 | static struct sensor_device_attribute sensor_attrs[] = { | ||
133 | SENSOR_ATTR(temp1_input, 0444, temp_input_show, NULL, 0), | ||
134 | SENSOR_ATTR(temp1_crit, 0444, temp_crit_show, NULL, 0), | ||
135 | SENSOR_ATTR(temp2_input, 0444, temp_input_show, NULL, 1), | ||
136 | SENSOR_ATTR(temp2_crit, 0444, temp_crit_show, NULL, 1), | ||
137 | SENSOR_ATTR(temp3_input, 0444, temp_input_show, NULL, 2), | ||
138 | SENSOR_ATTR(temp3_crit, 0444, temp_crit_show, NULL, 2), | ||
139 | SENSOR_ATTR(temp4_input, 0444, temp_input_show, NULL, 3), | ||
140 | SENSOR_ATTR(temp4_crit, 0444, temp_crit_show, NULL, 3), | ||
141 | SENSOR_ATTR(temp5_input, 0444, temp_input_show, NULL, 4), | ||
142 | SENSOR_ATTR(temp5_crit, 0444, temp_crit_show, NULL, 4), | ||
143 | SENSOR_ATTR(temp6_input, 0444, temp_input_show, NULL, 5), | ||
144 | SENSOR_ATTR(temp6_crit, 0444, temp_crit_show, NULL, 5), | ||
145 | SENSOR_ATTR(temp7_input, 0444, temp_input_show, NULL, 6), | ||
146 | SENSOR_ATTR(temp7_crit, 0444, temp_crit_show, NULL, 6), | ||
147 | SENSOR_ATTR(temp8_input, 0444, temp_input_show, NULL, 7), | ||
148 | SENSOR_ATTR(temp8_crit, 0444, temp_crit_show, NULL, 7), | ||
149 | SENSOR_ATTR(temp9_input, 0444, temp_input_show, NULL, 8), | ||
150 | SENSOR_ATTR(temp9_crit, 0444, temp_crit_show, NULL, 8), | ||
151 | SENSOR_ATTR(temp10_input, 0444, temp_input_show, NULL, 9), | ||
152 | SENSOR_ATTR(temp10_crit, 0444, temp_crit_show, NULL, 9), | ||
153 | }; | ||
154 | |||
155 | /* thermal zone sys I/F */ | ||
91 | 156 | ||
92 | #define to_thermal_zone(_dev) \ | 157 | #define to_thermal_zone(_dev) \ |
93 | container_of(_dev, struct thermal_zone_device, device) | 158 | container_of(_dev, struct thermal_zone_device, device) |
@@ -214,7 +279,7 @@ do { \ | |||
214 | device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \ | 279 | device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \ |
215 | } while (0) | 280 | } while (0) |
216 | 281 | ||
217 | /* sys I/F for cooling device */ | 282 | /* cooling device sys I/F */ |
218 | #define to_cooling_device(_dev) \ | 283 | #define to_cooling_device(_dev) \ |
219 | container_of(_dev, struct thermal_cooling_device, device) | 284 | container_of(_dev, struct thermal_cooling_device, device) |
220 | 285 | ||
@@ -447,6 +512,9 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type, | |||
447 | struct thermal_zone_device *pos; | 512 | struct thermal_zone_device *pos; |
448 | int result; | 513 | int result; |
449 | 514 | ||
515 | if (!type) | ||
516 | return ERR_PTR(-EINVAL); | ||
517 | |||
450 | if (strlen(type) >= THERMAL_NAME_LENGTH) | 518 | if (strlen(type) >= THERMAL_NAME_LENGTH) |
451 | return ERR_PTR(-EINVAL); | 519 | return ERR_PTR(-EINVAL); |
452 | 520 | ||
@@ -477,11 +545,9 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type, | |||
477 | } | 545 | } |
478 | 546 | ||
479 | /* sys I/F */ | 547 | /* sys I/F */ |
480 | if (type) { | 548 | result = device_create_file(&cdev->device, &dev_attr_cdev_type); |
481 | result = device_create_file(&cdev->device, &dev_attr_cdev_type); | 549 | if (result) |
482 | if (result) | 550 | goto unregister; |
483 | goto unregister; | ||
484 | } | ||
485 | 551 | ||
486 | result = device_create_file(&cdev->device, &dev_attr_max_state); | 552 | result = device_create_file(&cdev->device, &dev_attr_max_state); |
487 | if (result) | 553 | if (result) |
@@ -547,8 +613,8 @@ void thermal_cooling_device_unregister(struct | |||
547 | tz->ops->unbind(tz, cdev); | 613 | tz->ops->unbind(tz, cdev); |
548 | } | 614 | } |
549 | mutex_unlock(&thermal_list_lock); | 615 | mutex_unlock(&thermal_list_lock); |
550 | if (cdev->type[0]) | 616 | |
551 | device_remove_file(&cdev->device, &dev_attr_cdev_type); | 617 | device_remove_file(&cdev->device, &dev_attr_cdev_type); |
552 | device_remove_file(&cdev->device, &dev_attr_max_state); | 618 | device_remove_file(&cdev->device, &dev_attr_max_state); |
553 | device_remove_file(&cdev->device, &dev_attr_cur_state); | 619 | device_remove_file(&cdev->device, &dev_attr_cur_state); |
554 | 620 | ||
@@ -580,6 +646,9 @@ struct thermal_zone_device *thermal_zone_device_register(char *type, | |||
580 | int result; | 646 | int result; |
581 | int count; | 647 | int count; |
582 | 648 | ||
649 | if (!type) | ||
650 | return ERR_PTR(-EINVAL); | ||
651 | |||
583 | if (strlen(type) >= THERMAL_NAME_LENGTH) | 652 | if (strlen(type) >= THERMAL_NAME_LENGTH) |
584 | return ERR_PTR(-EINVAL); | 653 | return ERR_PTR(-EINVAL); |
585 | 654 | ||
@@ -601,6 +670,13 @@ struct thermal_zone_device *thermal_zone_device_register(char *type, | |||
601 | kfree(tz); | 670 | kfree(tz); |
602 | return ERR_PTR(result); | 671 | return ERR_PTR(result); |
603 | } | 672 | } |
673 | if (tz->id >= MAX_THERMAL_ZONES) { | ||
674 | printk(KERN_ERR PREFIX | ||
675 | "Too many thermal zones\n"); | ||
676 | release_idr(&thermal_tz_idr, &thermal_idr_lock, tz->id); | ||
677 | kfree(tz); | ||
678 | return ERR_PTR(-EINVAL); | ||
679 | } | ||
604 | 680 | ||
605 | strcpy(tz->type, type); | 681 | strcpy(tz->type, type); |
606 | tz->ops = ops; | 682 | tz->ops = ops; |
@@ -615,13 +691,28 @@ struct thermal_zone_device *thermal_zone_device_register(char *type, | |||
615 | return ERR_PTR(result); | 691 | return ERR_PTR(result); |
616 | } | 692 | } |
617 | 693 | ||
618 | /* sys I/F */ | 694 | /* hwmon sys I/F */ |
619 | if (type) { | 695 | result = device_create_file(thermal_hwmon, |
620 | result = device_create_file(&tz->device, &dev_attr_type); | 696 | &sensor_attrs[tz->id * 2].dev_attr); |
621 | if (result) | 697 | if (result) |
622 | goto unregister; | 698 | goto unregister; |
699 | |||
700 | if (trips > 0) { | ||
701 | char buf[40]; | ||
702 | result = tz->ops->get_trip_type(tz, 0, buf); | ||
703 | if (result > 0 && !strcmp(buf, "critical\n")) { | ||
704 | result = device_create_file(thermal_hwmon, | ||
705 | &sensor_attrs[tz->id * 2 + 1].dev_attr); | ||
706 | if (result) | ||
707 | goto unregister; | ||
708 | } | ||
623 | } | 709 | } |
624 | 710 | ||
711 | /* sys I/F */ | ||
712 | result = device_create_file(&tz->device, &dev_attr_type); | ||
713 | if (result) | ||
714 | goto unregister; | ||
715 | |||
625 | result = device_create_file(&tz->device, &dev_attr_temp); | 716 | result = device_create_file(&tz->device, &dev_attr_temp); |
626 | if (result) | 717 | if (result) |
627 | goto unregister; | 718 | goto unregister; |
@@ -687,8 +778,17 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz) | |||
687 | tz->ops->unbind(tz, cdev); | 778 | tz->ops->unbind(tz, cdev); |
688 | mutex_unlock(&thermal_list_lock); | 779 | mutex_unlock(&thermal_list_lock); |
689 | 780 | ||
690 | if (tz->type[0]) | 781 | device_remove_file(thermal_hwmon, |
691 | device_remove_file(&tz->device, &dev_attr_type); | 782 | &sensor_attrs[tz->id * 2].dev_attr); |
783 | if (tz->trips > 0) { | ||
784 | char buf[40]; | ||
785 | if (tz->ops->get_trip_type(tz, 0, buf) > 0) | ||
786 | if (!strcmp(buf, "critical\n")) | ||
787 | device_remove_file(thermal_hwmon, | ||
788 | &sensor_attrs[tz->id * 2 + 1].dev_attr); | ||
789 | } | ||
790 | |||
791 | device_remove_file(&tz->device, &dev_attr_type); | ||
692 | device_remove_file(&tz->device, &dev_attr_temp); | 792 | device_remove_file(&tz->device, &dev_attr_temp); |
693 | if (tz->ops->get_mode) | 793 | if (tz->ops->get_mode) |
694 | device_remove_file(&tz->device, &dev_attr_mode); | 794 | device_remove_file(&tz->device, &dev_attr_mode); |
@@ -705,6 +805,19 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz) | |||
705 | 805 | ||
706 | EXPORT_SYMBOL(thermal_zone_device_unregister); | 806 | EXPORT_SYMBOL(thermal_zone_device_unregister); |
707 | 807 | ||
808 | static void thermal_exit(void) | ||
809 | { | ||
810 | if (thermal_hwmon) { | ||
811 | device_remove_file(thermal_hwmon, &dev_attr_name); | ||
812 | hwmon_device_unregister(thermal_hwmon); | ||
813 | } | ||
814 | class_unregister(&thermal_class); | ||
815 | idr_destroy(&thermal_tz_idr); | ||
816 | idr_destroy(&thermal_cdev_idr); | ||
817 | mutex_destroy(&thermal_idr_lock); | ||
818 | mutex_destroy(&thermal_list_lock); | ||
819 | } | ||
820 | |||
708 | static int __init thermal_init(void) | 821 | static int __init thermal_init(void) |
709 | { | 822 | { |
710 | int result = 0; | 823 | int result = 0; |
@@ -716,16 +829,20 @@ static int __init thermal_init(void) | |||
716 | mutex_destroy(&thermal_idr_lock); | 829 | mutex_destroy(&thermal_idr_lock); |
717 | mutex_destroy(&thermal_list_lock); | 830 | mutex_destroy(&thermal_list_lock); |
718 | } | 831 | } |
719 | return result; | ||
720 | } | ||
721 | 832 | ||
722 | static void __exit thermal_exit(void) | 833 | thermal_hwmon = hwmon_device_register(NULL); |
723 | { | 834 | if (IS_ERR(thermal_hwmon)) { |
724 | class_unregister(&thermal_class); | 835 | result = PTR_ERR(thermal_hwmon); |
725 | idr_destroy(&thermal_tz_idr); | 836 | thermal_hwmon = NULL; |
726 | idr_destroy(&thermal_cdev_idr); | 837 | printk(KERN_ERR PREFIX |
727 | mutex_destroy(&thermal_idr_lock); | 838 | "unable to register hwmon device\n"); |
728 | mutex_destroy(&thermal_list_lock); | 839 | thermal_exit(); |
840 | return result; | ||
841 | } | ||
842 | |||
843 | result = device_create_file(thermal_hwmon, &dev_attr_name); | ||
844 | |||
845 | return result; | ||
729 | } | 846 | } |
730 | 847 | ||
731 | subsys_initcall(thermal_init); | 848 | subsys_initcall(thermal_init); |
diff --git a/fs/proc/base.c b/fs/proc/base.c index 91a1bd67ac1d..9a4da0aae02e 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -2269,6 +2269,9 @@ static const struct pid_entry tgid_base_stuff[] = { | |||
2269 | DIR("task", S_IRUGO|S_IXUGO, task), | 2269 | DIR("task", S_IRUGO|S_IXUGO, task), |
2270 | DIR("fd", S_IRUSR|S_IXUSR, fd), | 2270 | DIR("fd", S_IRUSR|S_IXUSR, fd), |
2271 | DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo), | 2271 | DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo), |
2272 | #ifdef CONFIG_NET | ||
2273 | DIR("net", S_IRUGO|S_IXUSR, net), | ||
2274 | #endif | ||
2272 | REG("environ", S_IRUSR, environ), | 2275 | REG("environ", S_IRUSR, environ), |
2273 | INF("auxv", S_IRUSR, pid_auxv), | 2276 | INF("auxv", S_IRUSR, pid_auxv), |
2274 | ONE("status", S_IRUGO, pid_status), | 2277 | ONE("status", S_IRUGO, pid_status), |
diff --git a/fs/proc/generic.c b/fs/proc/generic.c index 68971e66cd41..a36ad3c75cf4 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c | |||
@@ -377,15 +377,14 @@ static struct dentry_operations proc_dentry_operations = | |||
377 | * Don't create negative dentries here, return -ENOENT by hand | 377 | * Don't create negative dentries here, return -ENOENT by hand |
378 | * instead. | 378 | * instead. |
379 | */ | 379 | */ |
380 | struct dentry *proc_lookup(struct inode * dir, struct dentry *dentry, struct nameidata *nd) | 380 | struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *dir, |
381 | struct dentry *dentry) | ||
381 | { | 382 | { |
382 | struct inode *inode = NULL; | 383 | struct inode *inode = NULL; |
383 | struct proc_dir_entry * de; | ||
384 | int error = -ENOENT; | 384 | int error = -ENOENT; |
385 | 385 | ||
386 | lock_kernel(); | 386 | lock_kernel(); |
387 | spin_lock(&proc_subdir_lock); | 387 | spin_lock(&proc_subdir_lock); |
388 | de = PDE(dir); | ||
389 | if (de) { | 388 | if (de) { |
390 | for (de = de->subdir; de ; de = de->next) { | 389 | for (de = de->subdir; de ; de = de->next) { |
391 | if (de->namelen != dentry->d_name.len) | 390 | if (de->namelen != dentry->d_name.len) |
@@ -393,8 +392,6 @@ struct dentry *proc_lookup(struct inode * dir, struct dentry *dentry, struct nam | |||
393 | if (!memcmp(dentry->d_name.name, de->name, de->namelen)) { | 392 | if (!memcmp(dentry->d_name.name, de->name, de->namelen)) { |
394 | unsigned int ino; | 393 | unsigned int ino; |
395 | 394 | ||
396 | if (de->shadow_proc) | ||
397 | de = de->shadow_proc(current, de); | ||
398 | ino = de->low_ino; | 395 | ino = de->low_ino; |
399 | de_get(de); | 396 | de_get(de); |
400 | spin_unlock(&proc_subdir_lock); | 397 | spin_unlock(&proc_subdir_lock); |
@@ -417,6 +414,12 @@ out_unlock: | |||
417 | return ERR_PTR(error); | 414 | return ERR_PTR(error); |
418 | } | 415 | } |
419 | 416 | ||
417 | struct dentry *proc_lookup(struct inode *dir, struct dentry *dentry, | ||
418 | struct nameidata *nd) | ||
419 | { | ||
420 | return proc_lookup_de(PDE(dir), dir, dentry); | ||
421 | } | ||
422 | |||
420 | /* | 423 | /* |
421 | * This returns non-zero if at EOF, so that the /proc | 424 | * This returns non-zero if at EOF, so that the /proc |
422 | * root directory can use this and check if it should | 425 | * root directory can use this and check if it should |
@@ -426,10 +429,9 @@ out_unlock: | |||
426 | * value of the readdir() call, as long as it's non-negative | 429 | * value of the readdir() call, as long as it's non-negative |
427 | * for success.. | 430 | * for success.. |
428 | */ | 431 | */ |
429 | int proc_readdir(struct file * filp, | 432 | int proc_readdir_de(struct proc_dir_entry *de, struct file *filp, void *dirent, |
430 | void * dirent, filldir_t filldir) | 433 | filldir_t filldir) |
431 | { | 434 | { |
432 | struct proc_dir_entry * de; | ||
433 | unsigned int ino; | 435 | unsigned int ino; |
434 | int i; | 436 | int i; |
435 | struct inode *inode = filp->f_path.dentry->d_inode; | 437 | struct inode *inode = filp->f_path.dentry->d_inode; |
@@ -438,7 +440,6 @@ int proc_readdir(struct file * filp, | |||
438 | lock_kernel(); | 440 | lock_kernel(); |
439 | 441 | ||
440 | ino = inode->i_ino; | 442 | ino = inode->i_ino; |
441 | de = PDE(inode); | ||
442 | if (!de) { | 443 | if (!de) { |
443 | ret = -EINVAL; | 444 | ret = -EINVAL; |
444 | goto out; | 445 | goto out; |
@@ -499,6 +500,13 @@ out: unlock_kernel(); | |||
499 | return ret; | 500 | return ret; |
500 | } | 501 | } |
501 | 502 | ||
503 | int proc_readdir(struct file *filp, void *dirent, filldir_t filldir) | ||
504 | { | ||
505 | struct inode *inode = filp->f_path.dentry->d_inode; | ||
506 | |||
507 | return proc_readdir_de(PDE(inode), filp, dirent, filldir); | ||
508 | } | ||
509 | |||
502 | /* | 510 | /* |
503 | * These are the generic /proc directory operations. They | 511 | * These are the generic /proc directory operations. They |
504 | * use the in-memory "struct proc_dir_entry" tree to parse | 512 | * use the in-memory "struct proc_dir_entry" tree to parse |
diff --git a/fs/proc/internal.h b/fs/proc/internal.h index 1c81c8f1aeed..bc72f5c8c47d 100644 --- a/fs/proc/internal.h +++ b/fs/proc/internal.h | |||
@@ -64,6 +64,8 @@ extern const struct file_operations proc_numa_maps_operations; | |||
64 | extern const struct file_operations proc_smaps_operations; | 64 | extern const struct file_operations proc_smaps_operations; |
65 | extern const struct file_operations proc_clear_refs_operations; | 65 | extern const struct file_operations proc_clear_refs_operations; |
66 | extern const struct file_operations proc_pagemap_operations; | 66 | extern const struct file_operations proc_pagemap_operations; |
67 | extern const struct file_operations proc_net_operations; | ||
68 | extern const struct inode_operations proc_net_inode_operations; | ||
67 | 69 | ||
68 | void free_proc_entry(struct proc_dir_entry *de); | 70 | void free_proc_entry(struct proc_dir_entry *de); |
69 | 71 | ||
@@ -83,3 +85,8 @@ static inline int proc_fd(struct inode *inode) | |||
83 | { | 85 | { |
84 | return PROC_I(inode)->fd; | 86 | return PROC_I(inode)->fd; |
85 | } | 87 | } |
88 | |||
89 | struct dentry *proc_lookup_de(struct proc_dir_entry *de, struct inode *ino, | ||
90 | struct dentry *dentry); | ||
91 | int proc_readdir_de(struct proc_dir_entry *de, struct file *filp, void *dirent, | ||
92 | filldir_t filldir); | ||
diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c index 14e9b5aaf863..4caa5f774fb7 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c | |||
@@ -63,6 +63,82 @@ int seq_release_net(struct inode *ino, struct file *f) | |||
63 | } | 63 | } |
64 | EXPORT_SYMBOL_GPL(seq_release_net); | 64 | EXPORT_SYMBOL_GPL(seq_release_net); |
65 | 65 | ||
66 | static struct net *get_proc_task_net(struct inode *dir) | ||
67 | { | ||
68 | struct task_struct *task; | ||
69 | struct nsproxy *ns; | ||
70 | struct net *net = NULL; | ||
71 | |||
72 | rcu_read_lock(); | ||
73 | task = pid_task(proc_pid(dir), PIDTYPE_PID); | ||
74 | if (task != NULL) { | ||
75 | ns = task_nsproxy(task); | ||
76 | if (ns != NULL) | ||
77 | net = get_net(ns->net_ns); | ||
78 | } | ||
79 | rcu_read_unlock(); | ||
80 | |||
81 | return net; | ||
82 | } | ||
83 | |||
84 | static struct dentry *proc_tgid_net_lookup(struct inode *dir, | ||
85 | struct dentry *dentry, struct nameidata *nd) | ||
86 | { | ||
87 | struct dentry *de; | ||
88 | struct net *net; | ||
89 | |||
90 | de = ERR_PTR(-ENOENT); | ||
91 | net = get_proc_task_net(dir); | ||
92 | if (net != NULL) { | ||
93 | de = proc_lookup_de(net->proc_net, dir, dentry); | ||
94 | put_net(net); | ||
95 | } | ||
96 | return de; | ||
97 | } | ||
98 | |||
99 | static int proc_tgid_net_getattr(struct vfsmount *mnt, struct dentry *dentry, | ||
100 | struct kstat *stat) | ||
101 | { | ||
102 | struct inode *inode = dentry->d_inode; | ||
103 | struct net *net; | ||
104 | |||
105 | net = get_proc_task_net(inode); | ||
106 | |||
107 | generic_fillattr(inode, stat); | ||
108 | |||
109 | if (net != NULL) { | ||
110 | stat->nlink = net->proc_net->nlink; | ||
111 | put_net(net); | ||
112 | } | ||
113 | |||
114 | return 0; | ||
115 | } | ||
116 | |||
117 | const struct inode_operations proc_net_inode_operations = { | ||
118 | .lookup = proc_tgid_net_lookup, | ||
119 | .getattr = proc_tgid_net_getattr, | ||
120 | }; | ||
121 | |||
122 | static int proc_tgid_net_readdir(struct file *filp, void *dirent, | ||
123 | filldir_t filldir) | ||
124 | { | ||
125 | int ret; | ||
126 | struct net *net; | ||
127 | |||
128 | ret = -EINVAL; | ||
129 | net = get_proc_task_net(filp->f_path.dentry->d_inode); | ||
130 | if (net != NULL) { | ||
131 | ret = proc_readdir_de(net->proc_net, filp, dirent, filldir); | ||
132 | put_net(net); | ||
133 | } | ||
134 | return ret; | ||
135 | } | ||
136 | |||
137 | const struct file_operations proc_net_operations = { | ||
138 | .read = generic_read_dir, | ||
139 | .readdir = proc_tgid_net_readdir, | ||
140 | }; | ||
141 | |||
66 | 142 | ||
67 | struct proc_dir_entry *proc_net_fops_create(struct net *net, | 143 | struct proc_dir_entry *proc_net_fops_create(struct net *net, |
68 | const char *name, mode_t mode, const struct file_operations *fops) | 144 | const char *name, mode_t mode, const struct file_operations *fops) |
@@ -83,14 +159,6 @@ struct net *get_proc_net(const struct inode *inode) | |||
83 | } | 159 | } |
84 | EXPORT_SYMBOL_GPL(get_proc_net); | 160 | EXPORT_SYMBOL_GPL(get_proc_net); |
85 | 161 | ||
86 | static struct proc_dir_entry *shadow_pde; | ||
87 | |||
88 | static struct proc_dir_entry *proc_net_shadow(struct task_struct *task, | ||
89 | struct proc_dir_entry *de) | ||
90 | { | ||
91 | return task->nsproxy->net_ns->proc_net; | ||
92 | } | ||
93 | |||
94 | struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, | 162 | struct proc_dir_entry *proc_net_mkdir(struct net *net, const char *name, |
95 | struct proc_dir_entry *parent) | 163 | struct proc_dir_entry *parent) |
96 | { | 164 | { |
@@ -104,45 +172,39 @@ EXPORT_SYMBOL_GPL(proc_net_mkdir); | |||
104 | 172 | ||
105 | static __net_init int proc_net_ns_init(struct net *net) | 173 | static __net_init int proc_net_ns_init(struct net *net) |
106 | { | 174 | { |
107 | struct proc_dir_entry *root, *netd, *net_statd; | 175 | struct proc_dir_entry *netd, *net_statd; |
108 | int err; | 176 | int err; |
109 | 177 | ||
110 | err = -ENOMEM; | 178 | err = -ENOMEM; |
111 | root = kzalloc(sizeof(*root), GFP_KERNEL); | 179 | netd = kzalloc(sizeof(*netd), GFP_KERNEL); |
112 | if (!root) | 180 | if (!netd) |
113 | goto out; | 181 | goto out; |
114 | 182 | ||
115 | err = -EEXIST; | 183 | netd->data = net; |
116 | netd = proc_net_mkdir(net, "net", root); | 184 | netd->nlink = 2; |
117 | if (!netd) | 185 | netd->name = "net"; |
118 | goto free_root; | 186 | netd->namelen = 3; |
187 | netd->parent = &proc_root; | ||
119 | 188 | ||
120 | err = -EEXIST; | 189 | err = -EEXIST; |
121 | net_statd = proc_net_mkdir(net, "stat", netd); | 190 | net_statd = proc_net_mkdir(net, "stat", netd); |
122 | if (!net_statd) | 191 | if (!net_statd) |
123 | goto free_net; | 192 | goto free_net; |
124 | 193 | ||
125 | root->data = net; | ||
126 | |||
127 | net->proc_net_root = root; | ||
128 | net->proc_net = netd; | 194 | net->proc_net = netd; |
129 | net->proc_net_stat = net_statd; | 195 | net->proc_net_stat = net_statd; |
130 | err = 0; | 196 | return 0; |
131 | 197 | ||
198 | free_net: | ||
199 | kfree(netd); | ||
132 | out: | 200 | out: |
133 | return err; | 201 | return err; |
134 | free_net: | ||
135 | remove_proc_entry("net", root); | ||
136 | free_root: | ||
137 | kfree(root); | ||
138 | goto out; | ||
139 | } | 202 | } |
140 | 203 | ||
141 | static __net_exit void proc_net_ns_exit(struct net *net) | 204 | static __net_exit void proc_net_ns_exit(struct net *net) |
142 | { | 205 | { |
143 | remove_proc_entry("stat", net->proc_net); | 206 | remove_proc_entry("stat", net->proc_net); |
144 | remove_proc_entry("net", net->proc_net_root); | 207 | kfree(net->proc_net); |
145 | kfree(net->proc_net_root); | ||
146 | } | 208 | } |
147 | 209 | ||
148 | static struct pernet_operations __net_initdata proc_net_ns_ops = { | 210 | static struct pernet_operations __net_initdata proc_net_ns_ops = { |
@@ -152,8 +214,7 @@ static struct pernet_operations __net_initdata proc_net_ns_ops = { | |||
152 | 214 | ||
153 | int __init proc_net_init(void) | 215 | int __init proc_net_init(void) |
154 | { | 216 | { |
155 | shadow_pde = proc_mkdir("net", NULL); | 217 | proc_symlink("net", NULL, "self/net"); |
156 | shadow_pde->shadow_proc = proc_net_shadow; | ||
157 | 218 | ||
158 | return register_pernet_subsys(&proc_net_ns_ops); | 219 | return register_pernet_subsys(&proc_net_ns_ops); |
159 | } | 220 | } |
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 6dc0334815f7..4206454734e0 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c | |||
@@ -640,17 +640,17 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
640 | 640 | ||
641 | ret = -EACCES; | 641 | ret = -EACCES; |
642 | if (!ptrace_may_attach(task)) | 642 | if (!ptrace_may_attach(task)) |
643 | goto out; | 643 | goto out_task; |
644 | 644 | ||
645 | ret = -EINVAL; | 645 | ret = -EINVAL; |
646 | /* file position must be aligned */ | 646 | /* file position must be aligned */ |
647 | if (*ppos % PM_ENTRY_BYTES) | 647 | if (*ppos % PM_ENTRY_BYTES) |
648 | goto out; | 648 | goto out_task; |
649 | 649 | ||
650 | ret = 0; | 650 | ret = 0; |
651 | mm = get_task_mm(task); | 651 | mm = get_task_mm(task); |
652 | if (!mm) | 652 | if (!mm) |
653 | goto out; | 653 | goto out_task; |
654 | 654 | ||
655 | ret = -ENOMEM; | 655 | ret = -ENOMEM; |
656 | uaddr = (unsigned long)buf & PAGE_MASK; | 656 | uaddr = (unsigned long)buf & PAGE_MASK; |
@@ -658,7 +658,7 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
658 | pagecount = (PAGE_ALIGN(uend) - uaddr) / PAGE_SIZE; | 658 | pagecount = (PAGE_ALIGN(uend) - uaddr) / PAGE_SIZE; |
659 | pages = kmalloc(pagecount * sizeof(struct page *), GFP_KERNEL); | 659 | pages = kmalloc(pagecount * sizeof(struct page *), GFP_KERNEL); |
660 | if (!pages) | 660 | if (!pages) |
661 | goto out_task; | 661 | goto out_mm; |
662 | 662 | ||
663 | down_read(¤t->mm->mmap_sem); | 663 | down_read(¤t->mm->mmap_sem); |
664 | ret = get_user_pages(current, current->mm, uaddr, pagecount, | 664 | ret = get_user_pages(current, current->mm, uaddr, pagecount, |
@@ -668,6 +668,12 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
668 | if (ret < 0) | 668 | if (ret < 0) |
669 | goto out_free; | 669 | goto out_free; |
670 | 670 | ||
671 | if (ret != pagecount) { | ||
672 | pagecount = ret; | ||
673 | ret = -EFAULT; | ||
674 | goto out_pages; | ||
675 | } | ||
676 | |||
671 | pm.out = buf; | 677 | pm.out = buf; |
672 | pm.end = buf + count; | 678 | pm.end = buf + count; |
673 | 679 | ||
@@ -699,15 +705,17 @@ static ssize_t pagemap_read(struct file *file, char __user *buf, | |||
699 | ret = pm.out - buf; | 705 | ret = pm.out - buf; |
700 | } | 706 | } |
701 | 707 | ||
708 | out_pages: | ||
702 | for (; pagecount; pagecount--) { | 709 | for (; pagecount; pagecount--) { |
703 | page = pages[pagecount-1]; | 710 | page = pages[pagecount-1]; |
704 | if (!PageReserved(page)) | 711 | if (!PageReserved(page)) |
705 | SetPageDirty(page); | 712 | SetPageDirty(page); |
706 | page_cache_release(page); | 713 | page_cache_release(page); |
707 | } | 714 | } |
708 | mmput(mm); | ||
709 | out_free: | 715 | out_free: |
710 | kfree(pages); | 716 | kfree(pages); |
717 | out_mm: | ||
718 | mmput(mm); | ||
711 | out_task: | 719 | out_task: |
712 | put_task_struct(task); | 720 | put_task_struct(task); |
713 | out: | 721 | out: |
diff --git a/include/asm-arm/arch-omap/board-h3.h b/include/asm-arm/arch-omap/board-h3.h index 1c2b55c61ca0..0f6404435ea8 100644 --- a/include/asm-arm/arch-omap/board-h3.h +++ b/include/asm-arm/arch-omap/board-h3.h | |||
@@ -36,7 +36,7 @@ | |||
36 | 36 | ||
37 | #define NR_IRQS (MAXIRQNUM + 1) | 37 | #define NR_IRQS (MAXIRQNUM + 1) |
38 | 38 | ||
39 | extern void __init h3_mmc_init(void); | 39 | extern void h3_mmc_init(void); |
40 | extern void h3_mmc_slot_cover_handler(void *arg, int state); | 40 | extern void h3_mmc_slot_cover_handler(void *arg, int state); |
41 | 41 | ||
42 | #endif /* __ASM_ARCH_OMAP_H3_H */ | 42 | #endif /* __ASM_ARCH_OMAP_H3_H */ |
diff --git a/include/asm-arm/arch-omap/common.h b/include/asm-arm/arch-omap/common.h index 442aecbb8f44..224e009e5296 100644 --- a/include/asm-arm/arch-omap/common.h +++ b/include/asm-arm/arch-omap/common.h | |||
@@ -27,9 +27,7 @@ | |||
27 | #ifndef __ARCH_ARM_MACH_OMAP_COMMON_H | 27 | #ifndef __ARCH_ARM_MACH_OMAP_COMMON_H |
28 | #define __ARCH_ARM_MACH_OMAP_COMMON_H | 28 | #define __ARCH_ARM_MACH_OMAP_COMMON_H |
29 | 29 | ||
30 | #ifdef CONFIG_I2C_OMAP | ||
31 | #include <linux/i2c.h> | 30 | #include <linux/i2c.h> |
32 | #endif | ||
33 | 31 | ||
34 | struct sys_timer; | 32 | struct sys_timer; |
35 | 33 | ||
@@ -41,7 +39,12 @@ extern int omap_register_i2c_bus(int bus_id, u32 clkrate, | |||
41 | struct i2c_board_info const *info, | 39 | struct i2c_board_info const *info, |
42 | unsigned len); | 40 | unsigned len); |
43 | #else | 41 | #else |
44 | #define omap_register_i2c_bus(a, b, c, d) 0 | 42 | static inline int omap_register_i2c_bus(int bus_id, u32 clkrate, |
43 | struct i2c_board_info const *info, | ||
44 | unsigned len) | ||
45 | { | ||
46 | return 0; | ||
47 | } | ||
45 | #endif | 48 | #endif |
46 | 49 | ||
47 | #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ | 50 | #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */ |
diff --git a/include/asm-arm/arch-omap/gpioexpander.h b/include/asm-arm/arch-omap/gpioexpander.h index 7a43b0a912e4..4eed1f80e2fb 100644 --- a/include/asm-arm/arch-omap/gpioexpander.h +++ b/include/asm-arm/arch-omap/gpioexpander.h | |||
@@ -18,7 +18,18 @@ | |||
18 | 18 | ||
19 | /* Function Prototypes for GPIO Expander functions */ | 19 | /* Function Prototypes for GPIO Expander functions */ |
20 | 20 | ||
21 | #ifdef CONFIG_GPIOEXPANDER_OMAP | ||
21 | int read_gpio_expa(u8 *, int); | 22 | int read_gpio_expa(u8 *, int); |
22 | int write_gpio_expa(u8 , int); | 23 | int write_gpio_expa(u8 , int); |
24 | #else | ||
25 | static inline int read_gpio_expa(u8 *val, int addr) | ||
26 | { | ||
27 | return 0; | ||
28 | } | ||
29 | static inline int write_gpio_expa(u8 val, int addr) | ||
30 | { | ||
31 | return 0; | ||
32 | } | ||
33 | #endif | ||
23 | 34 | ||
24 | #endif /* __ASM_ARCH_OMAP_GPIOEXPANDER_H */ | 35 | #endif /* __ASM_ARCH_OMAP_GPIOEXPANDER_H */ |
diff --git a/include/asm-arm/pgtable-nommu.h b/include/asm-arm/pgtable-nommu.h index 33c83dd87965..2e5868bbe03b 100644 --- a/include/asm-arm/pgtable-nommu.h +++ b/include/asm-arm/pgtable-nommu.h | |||
@@ -92,6 +92,8 @@ extern unsigned int kobjsize(const void *objp); | |||
92 | 92 | ||
93 | #define FIRST_USER_ADDRESS (0) | 93 | #define FIRST_USER_ADDRESS (0) |
94 | 94 | ||
95 | #include <asm-generic/pgtable.h> | ||
96 | |||
95 | #else | 97 | #else |
96 | 98 | ||
97 | /* | 99 | /* |
diff --git a/include/asm-arm/plat-s3c/uncompress.h b/include/asm-arm/plat-s3c/uncompress.h index b5e6208175d1..19b9eda39485 100644 --- a/include/asm-arm/plat-s3c/uncompress.h +++ b/include/asm-arm/plat-s3c/uncompress.h | |||
@@ -27,8 +27,8 @@ static void arch_detect_cpu(void); | |||
27 | 27 | ||
28 | /* defines for UART registers */ | 28 | /* defines for UART registers */ |
29 | 29 | ||
30 | #include "asm/plat-s3c/regs-serial.h" | 30 | #include <asm/plat-s3c/regs-serial.h> |
31 | #include "asm/plat-s3c/regs-watchdog.h" | 31 | #include <asm/plat-s3c/regs-watchdog.h> |
32 | 32 | ||
33 | /* working in physical space... */ | 33 | /* working in physical space... */ |
34 | #undef S3C2410_WDOGREG | 34 | #undef S3C2410_WDOGREG |
diff --git a/include/asm-arm/proc-fns.h b/include/asm-arm/proc-fns.h index a4ce457199d3..75ec760f4c74 100644 --- a/include/asm-arm/proc-fns.h +++ b/include/asm-arm/proc-fns.h | |||
@@ -214,9 +214,9 @@ | |||
214 | #ifndef __ASSEMBLY__ | 214 | #ifndef __ASSEMBLY__ |
215 | 215 | ||
216 | #ifndef MULTI_CPU | 216 | #ifndef MULTI_CPU |
217 | #include "asm/cpu-single.h" | 217 | #include <asm/cpu-single.h> |
218 | #else | 218 | #else |
219 | #include "asm/cpu-multi32.h" | 219 | #include <asm/cpu-multi32.h> |
220 | #endif | 220 | #endif |
221 | 221 | ||
222 | #include <asm/memory.h> | 222 | #include <asm/memory.h> |
diff --git a/include/asm-h8300/uaccess.h b/include/asm-h8300/uaccess.h index a22350ec271a..356068cd0879 100644 --- a/include/asm-h8300/uaccess.h +++ b/include/asm-h8300/uaccess.h | |||
@@ -91,22 +91,19 @@ extern int __put_user_bad(void); | |||
91 | #define get_user(x, ptr) \ | 91 | #define get_user(x, ptr) \ |
92 | ({ \ | 92 | ({ \ |
93 | int __gu_err = 0; \ | 93 | int __gu_err = 0; \ |
94 | uint32_t __gu_val = 0; \ | 94 | typeof(*(ptr)) __gu_val = *ptr; \ |
95 | switch (sizeof(*(ptr))) { \ | 95 | switch (sizeof(*(ptr))) { \ |
96 | case 1: \ | 96 | case 1: \ |
97 | case 2: \ | 97 | case 2: \ |
98 | case 4: \ | 98 | case 4: \ |
99 | __gu_val = *(ptr); \ | 99 | case 8: \ |
100 | break; \ | ||
101 | case 8: \ | ||
102 | memcpy(&__gu_val, ptr, sizeof (*(ptr))); \ | ||
103 | break; \ | 100 | break; \ |
104 | default: \ | 101 | default: \ |
105 | __gu_val = 0; \ | ||
106 | __gu_err = __get_user_bad(); \ | 102 | __gu_err = __get_user_bad(); \ |
103 | __gu_val = 0; \ | ||
107 | break; \ | 104 | break; \ |
108 | } \ | 105 | } \ |
109 | (x) = (typeof(*(ptr)))__gu_val; \ | 106 | (x) = __gu_val; \ |
110 | __gu_err; \ | 107 | __gu_err; \ |
111 | }) | 108 | }) |
112 | #define __get_user(x, ptr) get_user(x, ptr) | 109 | #define __get_user(x, ptr) get_user(x, ptr) |
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h index 4933b4947ed0..01e7eadc97e2 100644 --- a/include/asm-mips/cacheflush.h +++ b/include/asm-mips/cacheflush.h | |||
@@ -93,7 +93,7 @@ extern void (*flush_data_cache_page)(unsigned long addr); | |||
93 | clear_bit(PG_dcache_dirty, &(page)->flags) | 93 | clear_bit(PG_dcache_dirty, &(page)->flags) |
94 | 94 | ||
95 | /* Run kernel code uncached, useful for cache probing functions. */ | 95 | /* Run kernel code uncached, useful for cache probing functions. */ |
96 | unsigned long __init run_uncached(void *func); | 96 | unsigned long run_uncached(void *func); |
97 | 97 | ||
98 | extern void *kmap_coherent(struct page *page, unsigned long addr); | 98 | extern void *kmap_coherent(struct page *page, unsigned long addr); |
99 | extern void kunmap_coherent(void); | 99 | extern void kunmap_coherent(void); |
diff --git a/include/asm-mips/highmem.h b/include/asm-mips/highmem.h index 4d6bd5c31c7b..4374ab2adc75 100644 --- a/include/asm-mips/highmem.h +++ b/include/asm-mips/highmem.h | |||
@@ -39,7 +39,6 @@ extern pte_t *pkmap_page_table; | |||
39 | * easily, subsequent pte tables have to be allocated in one physical | 39 | * easily, subsequent pte tables have to be allocated in one physical |
40 | * chunk of RAM. | 40 | * chunk of RAM. |
41 | */ | 41 | */ |
42 | #define PKMAP_BASE (0xfe000000UL) | ||
43 | #define LAST_PKMAP 1024 | 42 | #define LAST_PKMAP 1024 |
44 | #define LAST_PKMAP_MASK (LAST_PKMAP-1) | 43 | #define LAST_PKMAP_MASK (LAST_PKMAP-1) |
45 | #define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) | 44 | #define PKMAP_NR(virt) ((virt-PKMAP_BASE) >> PAGE_SHIFT) |
diff --git a/include/asm-mips/mach-ip27/cpu-feature-overrides.h b/include/asm-mips/mach-ip27/cpu-feature-overrides.h index fe076380c189..7d3112b148d9 100644 --- a/include/asm-mips/mach-ip27/cpu-feature-overrides.h +++ b/include/asm-mips/mach-ip27/cpu-feature-overrides.h | |||
@@ -34,7 +34,11 @@ | |||
34 | #define cpu_has_64bits 1 | 34 | #define cpu_has_64bits 1 |
35 | 35 | ||
36 | #define cpu_has_4kex 1 | 36 | #define cpu_has_4kex 1 |
37 | #define cpu_has_3k_cache 0 | ||
38 | #define cpu_has_6k_cache 0 | ||
37 | #define cpu_has_4k_cache 1 | 39 | #define cpu_has_4k_cache 1 |
40 | #define cpu_has_8k_cache 0 | ||
41 | #define cpu_has_tx39_cache 0 | ||
38 | 42 | ||
39 | #define cpu_has_inclusive_pcaches 1 | 43 | #define cpu_has_inclusive_pcaches 1 |
40 | 44 | ||
diff --git a/include/asm-mips/mach-jmr3927/ioremap.h b/include/asm-mips/mach-jmr3927/ioremap.h index aa131ad7f717..29989ff10d66 100644 --- a/include/asm-mips/mach-jmr3927/ioremap.h +++ b/include/asm-mips/mach-jmr3927/ioremap.h | |||
@@ -25,7 +25,7 @@ static inline void __iomem *plat_ioremap(phys_t offset, unsigned long size, | |||
25 | { | 25 | { |
26 | #define TXX9_DIRECTMAP_BASE 0xff000000ul | 26 | #define TXX9_DIRECTMAP_BASE 0xff000000ul |
27 | if (offset >= TXX9_DIRECTMAP_BASE && | 27 | if (offset >= TXX9_DIRECTMAP_BASE && |
28 | offset < TXX9_DIRECTMAP_BASE + 0xf0000) | 28 | offset < TXX9_DIRECTMAP_BASE + 0xff0000) |
29 | return (void __iomem *)offset; | 29 | return (void __iomem *)offset; |
30 | return NULL; | 30 | return NULL; |
31 | } | 31 | } |
diff --git a/include/asm-mips/mach-lasat/irq.h b/include/asm-mips/mach-lasat/irq.h index da75f89f3723..3a282419d5f9 100644 --- a/include/asm-mips/mach-lasat/irq.h +++ b/include/asm-mips/mach-lasat/irq.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef _ASM_MACH_LASAT_IRQ_H | 1 | #ifndef _ASM_MACH_LASAT_IRQ_H |
2 | #define _ASM_MACH_LASAT_IRQ_H | 2 | #define _ASM_MACH_LASAT_IRQ_H |
3 | 3 | ||
4 | #define LASAT_CASCADE_IRQ (MIPS_CPU_IRQ_BASE + 0) | 4 | #define LASAT_CASCADE_IRQ (MIPS_CPU_IRQ_BASE + 2) |
5 | 5 | ||
6 | #define LASAT_IRQ_BASE 8 | 6 | #define LASAT_IRQ_BASE 8 |
7 | #define LASAT_IRQ_END 23 | 7 | #define LASAT_IRQ_END 23 |
diff --git a/include/asm-mips/pgtable-32.h b/include/asm-mips/pgtable-32.h index a0947092d0e0..ceefe027c761 100644 --- a/include/asm-mips/pgtable-32.h +++ b/include/asm-mips/pgtable-32.h | |||
@@ -65,6 +65,8 @@ extern int add_temporary_entry(unsigned long entrylo0, unsigned long entrylo1, | |||
65 | 65 | ||
66 | #define VMALLOC_START MAP_BASE | 66 | #define VMALLOC_START MAP_BASE |
67 | 67 | ||
68 | #define PKMAP_BASE (0xfe000000UL) | ||
69 | |||
68 | #ifdef CONFIG_HIGHMEM | 70 | #ifdef CONFIG_HIGHMEM |
69 | # define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) | 71 | # define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE) |
70 | #else | 72 | #else |
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h index a8fd16e1981f..d3bd5c5aa2ec 100644 --- a/include/asm-mips/time.h +++ b/include/asm-mips/time.h | |||
@@ -64,10 +64,11 @@ static inline int mips_clockevent_init(void) | |||
64 | * Initialize the count register as a clocksource | 64 | * Initialize the count register as a clocksource |
65 | */ | 65 | */ |
66 | #ifdef CONFIG_CEVT_R4K | 66 | #ifdef CONFIG_CEVT_R4K |
67 | extern void init_mips_clocksource(void); | 67 | extern int init_mips_clocksource(void); |
68 | #else | 68 | #else |
69 | static inline void init_mips_clocksource(void) | 69 | static inline int init_mips_clocksource(void) |
70 | { | 70 | { |
71 | return 0; | ||
71 | } | 72 | } |
72 | #endif | 73 | #endif |
73 | 74 | ||
diff --git a/include/asm-powerpc/pgtable-ppc32.h b/include/asm-powerpc/pgtable-ppc32.h index d1332bbcbd9b..2c79f550272b 100644 --- a/include/asm-powerpc/pgtable-ppc32.h +++ b/include/asm-powerpc/pgtable-ppc32.h | |||
@@ -339,14 +339,6 @@ extern int icache_44x_need_flush; | |||
339 | #define _PMD_PAGE_MASK 0x000c | 339 | #define _PMD_PAGE_MASK 0x000c |
340 | #define _PMD_PAGE_8M 0x000c | 340 | #define _PMD_PAGE_8M 0x000c |
341 | 341 | ||
342 | /* | ||
343 | * The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE | ||
344 | * for an address even if _PAGE_PRESENT is not set, as a performance | ||
345 | * optimization. This is a bug if you ever want to use swap unless | ||
346 | * _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific | ||
347 | * definitions for __swp_entry etc. below, which would be gross. | ||
348 | * -- paulus | ||
349 | */ | ||
350 | #define _PTE_NONE_MASK _PAGE_ACCESSED | 342 | #define _PTE_NONE_MASK _PAGE_ACCESSED |
351 | 343 | ||
352 | #else /* CONFIG_6xx */ | 344 | #else /* CONFIG_6xx */ |
diff --git a/include/asm-ppc/pgtable.h b/include/asm-ppc/pgtable.h index 69347bdbb401..70435d32129a 100644 --- a/include/asm-ppc/pgtable.h +++ b/include/asm-ppc/pgtable.h | |||
@@ -299,14 +299,6 @@ extern unsigned long ioremap_bot, ioremap_base; | |||
299 | #define _PMD_PAGE_MASK 0x000c | 299 | #define _PMD_PAGE_MASK 0x000c |
300 | #define _PMD_PAGE_8M 0x000c | 300 | #define _PMD_PAGE_8M 0x000c |
301 | 301 | ||
302 | /* | ||
303 | * The 8xx TLB miss handler allegedly sets _PAGE_ACCESSED in the PTE | ||
304 | * for an address even if _PAGE_PRESENT is not set, as a performance | ||
305 | * optimization. This is a bug if you ever want to use swap unless | ||
306 | * _PAGE_ACCESSED is 2, which it isn't, or unless you have 8xx-specific | ||
307 | * definitions for __swp_entry etc. below, which would be gross. | ||
308 | * -- paulus | ||
309 | */ | ||
310 | #define _PTE_NONE_MASK _PAGE_ACCESSED | 302 | #define _PTE_NONE_MASK _PAGE_ACCESSED |
311 | 303 | ||
312 | #else /* CONFIG_6xx */ | 304 | #else /* CONFIG_6xx */ |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 994df3780007..0fac822c1157 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -205,7 +205,6 @@ unifdef-y += futex.h | |||
205 | unifdef-y += fs.h | 205 | unifdef-y += fs.h |
206 | unifdef-y += gameport.h | 206 | unifdef-y += gameport.h |
207 | unifdef-y += generic_serial.h | 207 | unifdef-y += generic_serial.h |
208 | unifdef-y += genhd.h | ||
209 | unifdef-y += gfs2_ondisk.h | 208 | unifdef-y += gfs2_ondisk.h |
210 | unifdef-y += hayesesp.h | 209 | unifdef-y += hayesesp.h |
211 | unifdef-y += hdlcdrv.h | 210 | unifdef-y += hdlcdrv.h |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index fcbe8b640ffb..c8d216357865 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #ifndef _LINUX_ETHTOOL_H | 12 | #ifndef _LINUX_ETHTOOL_H |
13 | #define _LINUX_ETHTOOL_H | 13 | #define _LINUX_ETHTOOL_H |
14 | 14 | ||
15 | #include <linux/types.h> | ||
15 | 16 | ||
16 | /* This should work for both 32 and 64 bit userland. */ | 17 | /* This should work for both 32 and 64 bit userland. */ |
17 | struct ethtool_cmd { | 18 | struct ethtool_cmd { |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 32c2ac49a070..ecd2bf63fc84 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
@@ -55,24 +55,6 @@ enum { | |||
55 | UNIXWARE_PARTITION = 0x63, /* Same as GNU_HURD and SCO Unix */ | 55 | UNIXWARE_PARTITION = 0x63, /* Same as GNU_HURD and SCO Unix */ |
56 | }; | 56 | }; |
57 | 57 | ||
58 | #ifndef __KERNEL__ | ||
59 | |||
60 | struct partition { | ||
61 | unsigned char boot_ind; /* 0x80 - active */ | ||
62 | unsigned char head; /* starting head */ | ||
63 | unsigned char sector; /* starting sector */ | ||
64 | unsigned char cyl; /* starting cylinder */ | ||
65 | unsigned char sys_ind; /* What partition type */ | ||
66 | unsigned char end_head; /* end head */ | ||
67 | unsigned char end_sector; /* end sector */ | ||
68 | unsigned char end_cyl; /* end cylinder */ | ||
69 | unsigned int start_sect; /* starting sector counting from 0 */ | ||
70 | unsigned int nr_sects; /* nr of sectors in partition */ | ||
71 | } __attribute__((packed)); | ||
72 | |||
73 | #endif | ||
74 | |||
75 | #ifdef __KERNEL__ | ||
76 | #include <linux/major.h> | 58 | #include <linux/major.h> |
77 | #include <linux/device.h> | 59 | #include <linux/device.h> |
78 | #include <linux/smp.h> | 60 | #include <linux/smp.h> |
@@ -228,7 +210,7 @@ static inline void part_stat_set_all(struct hd_struct *part, int value) { | |||
228 | sizeof(struct disk_stats)); | 210 | sizeof(struct disk_stats)); |
229 | } | 211 | } |
230 | 212 | ||
231 | #else | 213 | #else /* !CONFIG_SMP */ |
232 | #define __disk_stat_add(gendiskp, field, addnd) \ | 214 | #define __disk_stat_add(gendiskp, field, addnd) \ |
233 | (gendiskp->dkstats.field += addnd) | 215 | (gendiskp->dkstats.field += addnd) |
234 | #define disk_stat_read(gendiskp, field) (gendiskp->dkstats.field) | 216 | #define disk_stat_read(gendiskp, field) (gendiskp->dkstats.field) |
@@ -256,7 +238,7 @@ static inline void part_stat_set_all(struct hd_struct *part, int value) | |||
256 | memset(&part->dkstats, value, sizeof(struct disk_stats)); | 238 | memset(&part->dkstats, value, sizeof(struct disk_stats)); |
257 | } | 239 | } |
258 | 240 | ||
259 | #endif | 241 | #endif /* CONFIG_SMP */ |
260 | 242 | ||
261 | #define disk_stat_add(gendiskp, field, addnd) \ | 243 | #define disk_stat_add(gendiskp, field, addnd) \ |
262 | do { \ | 244 | do { \ |
@@ -395,8 +377,6 @@ static inline void set_capacity(struct gendisk *disk, sector_t size) | |||
395 | disk->capacity = size; | 377 | disk->capacity = size; |
396 | } | 378 | } |
397 | 379 | ||
398 | #endif /* __KERNEL__ */ | ||
399 | |||
400 | #ifdef CONFIG_SOLARIS_X86_PARTITION | 380 | #ifdef CONFIG_SOLARIS_X86_PARTITION |
401 | 381 | ||
402 | #define SOLARIS_X86_NUMSLICE 16 | 382 | #define SOLARIS_X86_NUMSLICE 16 |
@@ -540,8 +520,6 @@ struct unixware_disklabel { | |||
540 | # define MINIX_NR_SUBPARTITIONS 4 | 520 | # define MINIX_NR_SUBPARTITIONS 4 |
541 | #endif /* CONFIG_MINIX_SUBPARTITION */ | 521 | #endif /* CONFIG_MINIX_SUBPARTITION */ |
542 | 522 | ||
543 | #ifdef __KERNEL__ | ||
544 | |||
545 | #define ADDPART_FLAG_NONE 0 | 523 | #define ADDPART_FLAG_NONE 0 |
546 | #define ADDPART_FLAG_RAID 1 | 524 | #define ADDPART_FLAG_RAID 1 |
547 | #define ADDPART_FLAG_WHOLEDISK 2 | 525 | #define ADDPART_FLAG_WHOLEDISK 2 |
@@ -570,8 +548,6 @@ static inline struct block_device *bdget_disk(struct gendisk *disk, int index) | |||
570 | return bdget(MKDEV(disk->major, disk->first_minor) + index); | 548 | return bdget(MKDEV(disk->major, disk->first_minor) + index); |
571 | } | 549 | } |
572 | 550 | ||
573 | #endif | ||
574 | |||
575 | #else /* CONFIG_BLOCK */ | 551 | #else /* CONFIG_BLOCK */ |
576 | 552 | ||
577 | static inline void printk_all_partitions(void) { } | 553 | static inline void printk_all_partitions(void) { } |
@@ -584,4 +560,4 @@ static inline dev_t blk_lookup_devt(const char *name) | |||
584 | 560 | ||
585 | #endif /* CONFIG_BLOCK */ | 561 | #endif /* CONFIG_BLOCK */ |
586 | 562 | ||
587 | #endif | 563 | #endif /* _LINUX_GENHD_H */ |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 3f3ccfe42de0..b695875d63e3 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -235,15 +235,22 @@ static inline int get_page_unless_zero(struct page *page) | |||
235 | struct page *vmalloc_to_page(const void *addr); | 235 | struct page *vmalloc_to_page(const void *addr); |
236 | unsigned long vmalloc_to_pfn(const void *addr); | 236 | unsigned long vmalloc_to_pfn(const void *addr); |
237 | 237 | ||
238 | #ifdef CONFIG_MMU | 238 | /* |
239 | /* Determine if an address is within the vmalloc range */ | 239 | * Determine if an address is within the vmalloc range |
240 | * | ||
241 | * On nommu, vmalloc/vfree wrap through kmalloc/kfree directly, so there | ||
242 | * is no special casing required. | ||
243 | */ | ||
240 | static inline int is_vmalloc_addr(const void *x) | 244 | static inline int is_vmalloc_addr(const void *x) |
241 | { | 245 | { |
246 | #ifdef CONFIG_MMU | ||
242 | unsigned long addr = (unsigned long)x; | 247 | unsigned long addr = (unsigned long)x; |
243 | 248 | ||
244 | return addr >= VMALLOC_START && addr < VMALLOC_END; | 249 | return addr >= VMALLOC_START && addr < VMALLOC_END; |
245 | } | 250 | #else |
251 | return 0; | ||
246 | #endif | 252 | #endif |
253 | } | ||
247 | 254 | ||
248 | static inline struct page *compound_head(struct page *page) | 255 | static inline struct page *compound_head(struct page *page) |
249 | { | 256 | { |
diff --git a/include/linux/netfilter/nfnetlink_compat.h b/include/linux/netfilter/nfnetlink_compat.h index 02a42d875cf7..e1451760c9cd 100644 --- a/include/linux/netfilter/nfnetlink_compat.h +++ b/include/linux/netfilter/nfnetlink_compat.h | |||
@@ -1,6 +1,6 @@ | |||
1 | #ifndef _NFNETLINK_COMPAT_H | 1 | #ifndef _NFNETLINK_COMPAT_H |
2 | #define _NFNETLINK_COMPAT_H | 2 | #define _NFNETLINK_COMPAT_H |
3 | #ifndef __KERNEL | 3 | #ifndef __KERNEL__ |
4 | /* Old nfnetlink macros for userspace */ | 4 | /* Old nfnetlink macros for userspace */ |
5 | 5 | ||
6 | /* nfnetlink groups: Up to 32 maximum */ | 6 | /* nfnetlink groups: Up to 32 maximum */ |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 38eff1947750..9010f5458767 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -278,6 +278,7 @@ struct pci_bus { | |||
278 | struct device dev; | 278 | struct device dev; |
279 | struct bin_attribute *legacy_io; /* legacy I/O for this bus */ | 279 | struct bin_attribute *legacy_io; /* legacy I/O for this bus */ |
280 | struct bin_attribute *legacy_mem; /* legacy mem */ | 280 | struct bin_attribute *legacy_mem; /* legacy mem */ |
281 | unsigned int is_added:1; | ||
281 | }; | 282 | }; |
282 | 283 | ||
283 | #define pci_bus_b(n) list_entry(n, struct pci_bus, node) | 284 | #define pci_bus_b(n) list_entry(n, struct pci_bus, node) |
diff --git a/include/linux/pmu.h b/include/linux/pmu.h index 4c5f65392d36..cafe98d96948 100644 --- a/include/linux/pmu.h +++ b/include/linux/pmu.h | |||
@@ -147,8 +147,15 @@ extern void pmu_wait_complete(struct adb_request *req); | |||
147 | /* For use before switching interrupts off for a long time; | 147 | /* For use before switching interrupts off for a long time; |
148 | * warning: not stackable | 148 | * warning: not stackable |
149 | */ | 149 | */ |
150 | #if defined(CONFIG_ADB_PMU) | ||
150 | extern void pmu_suspend(void); | 151 | extern void pmu_suspend(void); |
151 | extern void pmu_resume(void); | 152 | extern void pmu_resume(void); |
153 | #else | ||
154 | static inline void pmu_suspend(void) | ||
155 | {} | ||
156 | static inline void pmu_resume(void) | ||
157 | {} | ||
158 | #endif | ||
152 | 159 | ||
153 | extern void pmu_enable_irled(int on); | 160 | extern void pmu_enable_irled(int on); |
154 | 161 | ||
@@ -192,7 +199,7 @@ extern unsigned int pmu_power_flags; | |||
192 | extern void pmu_backlight_init(void); | 199 | extern void pmu_backlight_init(void); |
193 | 200 | ||
194 | /* some code needs to know if the PMU was suspended for hibernation */ | 201 | /* some code needs to know if the PMU was suspended for hibernation */ |
195 | #if defined(CONFIG_PM_SLEEP) && defined(CONFIG_PPC32) | 202 | #if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) |
196 | extern int pmu_sys_suspended; | 203 | extern int pmu_sys_suspended; |
197 | #else | 204 | #else |
198 | /* if power management is not configured it can't be suspended */ | 205 | /* if power management is not configured it can't be suspended */ |
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h index d9a9e718ad19..9b6c935f69cf 100644 --- a/include/linux/proc_fs.h +++ b/include/linux/proc_fs.h | |||
@@ -50,8 +50,6 @@ typedef int (read_proc_t)(char *page, char **start, off_t off, | |||
50 | typedef int (write_proc_t)(struct file *file, const char __user *buffer, | 50 | typedef int (write_proc_t)(struct file *file, const char __user *buffer, |
51 | unsigned long count, void *data); | 51 | unsigned long count, void *data); |
52 | typedef int (get_info_t)(char *, char **, off_t, int); | 52 | typedef int (get_info_t)(char *, char **, off_t, int); |
53 | typedef struct proc_dir_entry *(shadow_proc_t)(struct task_struct *task, | ||
54 | struct proc_dir_entry *pde); | ||
55 | 53 | ||
56 | struct proc_dir_entry { | 54 | struct proc_dir_entry { |
57 | unsigned int low_ino; | 55 | unsigned int low_ino; |
@@ -82,7 +80,6 @@ struct proc_dir_entry { | |||
82 | int pde_users; /* number of callers into module in progress */ | 80 | int pde_users; /* number of callers into module in progress */ |
83 | spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ | 81 | spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ |
84 | struct completion *pde_unload_completion; | 82 | struct completion *pde_unload_completion; |
85 | shadow_proc_t *shadow_proc; | ||
86 | }; | 83 | }; |
87 | 84 | ||
88 | struct kcore_list { | 85 | struct kcore_list { |
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 771d17783c18..750648df13f4 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -170,7 +170,7 @@ static inline int skb_frags_no(struct sk_buff *skb) | |||
170 | int bt_err(__u16 code); | 170 | int bt_err(__u16 code); |
171 | 171 | ||
172 | extern int hci_sock_init(void); | 172 | extern int hci_sock_init(void); |
173 | extern int hci_sock_cleanup(void); | 173 | extern void hci_sock_cleanup(void); |
174 | 174 | ||
175 | extern int bt_sysfs_init(void); | 175 | extern int bt_sysfs_init(void); |
176 | extern void bt_sysfs_cleanup(void); | 176 | extern void bt_sysfs_cleanup(void); |
diff --git a/include/net/irda/irttp.h b/include/net/irda/irttp.h index 32c385dd9e06..0788c23d2828 100644 --- a/include/net/irda/irttp.h +++ b/include/net/irda/irttp.h | |||
@@ -169,17 +169,17 @@ int irttp_disconnect_request(struct tsap_cb *self, struct sk_buff *skb, | |||
169 | void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow); | 169 | void irttp_flow_request(struct tsap_cb *self, LOCAL_FLOW flow); |
170 | struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance); | 170 | struct tsap_cb *irttp_dup(struct tsap_cb *self, void *instance); |
171 | 171 | ||
172 | static __inline __u32 irttp_get_saddr(struct tsap_cb *self) | 172 | static inline __u32 irttp_get_saddr(struct tsap_cb *self) |
173 | { | 173 | { |
174 | return irlmp_get_saddr(self->lsap); | 174 | return irlmp_get_saddr(self->lsap); |
175 | } | 175 | } |
176 | 176 | ||
177 | static __inline __u32 irttp_get_daddr(struct tsap_cb *self) | 177 | static inline __u32 irttp_get_daddr(struct tsap_cb *self) |
178 | { | 178 | { |
179 | return irlmp_get_daddr(self->lsap); | 179 | return irlmp_get_daddr(self->lsap); |
180 | } | 180 | } |
181 | 181 | ||
182 | static __inline __u32 irttp_get_max_seg_size(struct tsap_cb *self) | 182 | static inline __u32 irttp_get_max_seg_size(struct tsap_cb *self) |
183 | { | 183 | { |
184 | return self->max_seg_size; | 184 | return self->max_seg_size; |
185 | } | 185 | } |
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h index 28738b7d53eb..923f2b8b9096 100644 --- a/include/net/net_namespace.h +++ b/include/net/net_namespace.h | |||
@@ -31,7 +31,6 @@ struct net { | |||
31 | 31 | ||
32 | struct proc_dir_entry *proc_net; | 32 | struct proc_dir_entry *proc_net; |
33 | struct proc_dir_entry *proc_net_stat; | 33 | struct proc_dir_entry *proc_net_stat; |
34 | struct proc_dir_entry *proc_net_root; | ||
35 | 34 | ||
36 | struct list_head sysctl_table_headers; | 35 | struct list_head sysctl_table_headers; |
37 | 36 | ||
diff --git a/include/net/netfilter/nf_conntrack_extend.h b/include/net/netfilter/nf_conntrack_extend.h index 49aac6323fbe..f736e842977f 100644 --- a/include/net/netfilter/nf_conntrack_extend.h +++ b/include/net/netfilter/nf_conntrack_extend.h | |||
@@ -17,7 +17,6 @@ enum nf_ct_ext_id | |||
17 | struct nf_ct_ext { | 17 | struct nf_ct_ext { |
18 | u8 offset[NF_CT_EXT_NUM]; | 18 | u8 offset[NF_CT_EXT_NUM]; |
19 | u8 len; | 19 | u8 len; |
20 | u8 real_len; | ||
21 | char data[0]; | 20 | char data[0]; |
22 | }; | 21 | }; |
23 | 22 | ||
diff --git a/kernel/power/Kconfig b/kernel/power/Kconfig index 79833170bb9c..6233f3b4ae66 100644 --- a/kernel/power/Kconfig +++ b/kernel/power/Kconfig | |||
@@ -190,7 +190,7 @@ config APM_EMULATION | |||
190 | notification of APM "events" (e.g. battery status change). | 190 | notification of APM "events" (e.g. battery status change). |
191 | 191 | ||
192 | In order to use APM, you will need supporting software. For location | 192 | In order to use APM, you will need supporting software. For location |
193 | and more information, read <file:Documentation/pm.txt> and the | 193 | and more information, read <file:Documentation/power/pm.txt> and the |
194 | Battery Powered Linux mini-HOWTO, available from | 194 | Battery Powered Linux mini-HOWTO, available from |
195 | <http://www.tldp.org/docs.html#howto>. | 195 | <http://www.tldp.org/docs.html#howto>. |
196 | 196 | ||
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c index 72a020cabb4c..5f91a07c4eac 100644 --- a/kernel/power/snapshot.c +++ b/kernel/power/snapshot.c | |||
@@ -447,7 +447,7 @@ static void memory_bm_free(struct memory_bitmap *bm, int clear_nosave_free) | |||
447 | * of @bm->cur_zone_bm are updated. | 447 | * of @bm->cur_zone_bm are updated. |
448 | */ | 448 | */ |
449 | 449 | ||
450 | static void memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn, | 450 | static int memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn, |
451 | void **addr, unsigned int *bit_nr) | 451 | void **addr, unsigned int *bit_nr) |
452 | { | 452 | { |
453 | struct zone_bitmap *zone_bm; | 453 | struct zone_bitmap *zone_bm; |
@@ -461,7 +461,8 @@ static void memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn, | |||
461 | while (pfn < zone_bm->start_pfn || pfn >= zone_bm->end_pfn) { | 461 | while (pfn < zone_bm->start_pfn || pfn >= zone_bm->end_pfn) { |
462 | zone_bm = zone_bm->next; | 462 | zone_bm = zone_bm->next; |
463 | 463 | ||
464 | BUG_ON(!zone_bm); | 464 | if (!zone_bm) |
465 | return -EFAULT; | ||
465 | } | 466 | } |
466 | bm->cur.zone_bm = zone_bm; | 467 | bm->cur.zone_bm = zone_bm; |
467 | } | 468 | } |
@@ -479,23 +480,40 @@ static void memory_bm_find_bit(struct memory_bitmap *bm, unsigned long pfn, | |||
479 | pfn -= bb->start_pfn; | 480 | pfn -= bb->start_pfn; |
480 | *bit_nr = pfn % BM_BITS_PER_CHUNK; | 481 | *bit_nr = pfn % BM_BITS_PER_CHUNK; |
481 | *addr = bb->data + pfn / BM_BITS_PER_CHUNK; | 482 | *addr = bb->data + pfn / BM_BITS_PER_CHUNK; |
483 | return 0; | ||
482 | } | 484 | } |
483 | 485 | ||
484 | static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) | 486 | static void memory_bm_set_bit(struct memory_bitmap *bm, unsigned long pfn) |
485 | { | 487 | { |
486 | void *addr; | 488 | void *addr; |
487 | unsigned int bit; | 489 | unsigned int bit; |
490 | int error; | ||
488 | 491 | ||
489 | memory_bm_find_bit(bm, pfn, &addr, &bit); | 492 | error = memory_bm_find_bit(bm, pfn, &addr, &bit); |
493 | BUG_ON(error); | ||
490 | set_bit(bit, addr); | 494 | set_bit(bit, addr); |
491 | } | 495 | } |
492 | 496 | ||
497 | static int mem_bm_set_bit_check(struct memory_bitmap *bm, unsigned long pfn) | ||
498 | { | ||
499 | void *addr; | ||
500 | unsigned int bit; | ||
501 | int error; | ||
502 | |||
503 | error = memory_bm_find_bit(bm, pfn, &addr, &bit); | ||
504 | if (!error) | ||
505 | set_bit(bit, addr); | ||
506 | return error; | ||
507 | } | ||
508 | |||
493 | static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) | 509 | static void memory_bm_clear_bit(struct memory_bitmap *bm, unsigned long pfn) |
494 | { | 510 | { |
495 | void *addr; | 511 | void *addr; |
496 | unsigned int bit; | 512 | unsigned int bit; |
513 | int error; | ||
497 | 514 | ||
498 | memory_bm_find_bit(bm, pfn, &addr, &bit); | 515 | error = memory_bm_find_bit(bm, pfn, &addr, &bit); |
516 | BUG_ON(error); | ||
499 | clear_bit(bit, addr); | 517 | clear_bit(bit, addr); |
500 | } | 518 | } |
501 | 519 | ||
@@ -503,8 +521,10 @@ static int memory_bm_test_bit(struct memory_bitmap *bm, unsigned long pfn) | |||
503 | { | 521 | { |
504 | void *addr; | 522 | void *addr; |
505 | unsigned int bit; | 523 | unsigned int bit; |
524 | int error; | ||
506 | 525 | ||
507 | memory_bm_find_bit(bm, pfn, &addr, &bit); | 526 | error = memory_bm_find_bit(bm, pfn, &addr, &bit); |
527 | BUG_ON(error); | ||
508 | return test_bit(bit, addr); | 528 | return test_bit(bit, addr); |
509 | } | 529 | } |
510 | 530 | ||
@@ -709,8 +729,15 @@ static void mark_nosave_pages(struct memory_bitmap *bm) | |||
709 | region->end_pfn << PAGE_SHIFT); | 729 | region->end_pfn << PAGE_SHIFT); |
710 | 730 | ||
711 | for (pfn = region->start_pfn; pfn < region->end_pfn; pfn++) | 731 | for (pfn = region->start_pfn; pfn < region->end_pfn; pfn++) |
712 | if (pfn_valid(pfn)) | 732 | if (pfn_valid(pfn)) { |
713 | memory_bm_set_bit(bm, pfn); | 733 | /* |
734 | * It is safe to ignore the result of | ||
735 | * mem_bm_set_bit_check() here, since we won't | ||
736 | * touch the PFNs for which the error is | ||
737 | * returned anyway. | ||
738 | */ | ||
739 | mem_bm_set_bit_check(bm, pfn); | ||
740 | } | ||
714 | } | 741 | } |
715 | } | 742 | } |
716 | 743 | ||
diff --git a/lib/swiotlb.c b/lib/swiotlb.c index 4bb5a11e18a2..025922807e6e 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c | |||
@@ -310,7 +310,9 @@ map_single(struct device *hwdev, char *buffer, size_t size, int dir) | |||
310 | start_dma_addr = virt_to_bus(io_tlb_start) & mask; | 310 | start_dma_addr = virt_to_bus(io_tlb_start) & mask; |
311 | 311 | ||
312 | offset_slots = ALIGN(start_dma_addr, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; | 312 | offset_slots = ALIGN(start_dma_addr, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; |
313 | max_slots = ALIGN(mask + 1, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT; | 313 | max_slots = mask + 1 |
314 | ? ALIGN(mask + 1, 1 << IO_TLB_SHIFT) >> IO_TLB_SHIFT | ||
315 | : 1UL << (BITS_PER_LONG - IO_TLB_SHIFT); | ||
314 | 316 | ||
315 | /* | 317 | /* |
316 | * For mappings greater than a page, we limit the stride (and | 318 | * For mappings greater than a page, we limit the stride (and |
@@ -333,16 +335,18 @@ map_single(struct device *hwdev, char *buffer, size_t size, int dir) | |||
333 | index = ALIGN(io_tlb_index, stride); | 335 | index = ALIGN(io_tlb_index, stride); |
334 | if (index >= io_tlb_nslabs) | 336 | if (index >= io_tlb_nslabs) |
335 | index = 0; | 337 | index = 0; |
336 | |||
337 | while (is_span_boundary(index, nslots, offset_slots, | ||
338 | max_slots)) { | ||
339 | index += stride; | ||
340 | if (index >= io_tlb_nslabs) | ||
341 | index = 0; | ||
342 | } | ||
343 | wrap = index; | 338 | wrap = index; |
344 | 339 | ||
345 | do { | 340 | do { |
341 | while (is_span_boundary(index, nslots, offset_slots, | ||
342 | max_slots)) { | ||
343 | index += stride; | ||
344 | if (index >= io_tlb_nslabs) | ||
345 | index = 0; | ||
346 | if (index == wrap) | ||
347 | goto not_found; | ||
348 | } | ||
349 | |||
346 | /* | 350 | /* |
347 | * If we find a slot that indicates we have 'nslots' | 351 | * If we find a slot that indicates we have 'nslots' |
348 | * number of contiguous buffers, we allocate the | 352 | * number of contiguous buffers, we allocate the |
@@ -367,14 +371,12 @@ map_single(struct device *hwdev, char *buffer, size_t size, int dir) | |||
367 | 371 | ||
368 | goto found; | 372 | goto found; |
369 | } | 373 | } |
370 | do { | 374 | index += stride; |
371 | index += stride; | 375 | if (index >= io_tlb_nslabs) |
372 | if (index >= io_tlb_nslabs) | 376 | index = 0; |
373 | index = 0; | ||
374 | } while (is_span_boundary(index, nslots, offset_slots, | ||
375 | max_slots)); | ||
376 | } while (index != wrap); | 377 | } while (index != wrap); |
377 | 378 | ||
379 | not_found: | ||
378 | spin_unlock_irqrestore(&io_tlb_lock, flags); | 380 | spin_unlock_irqrestore(&io_tlb_lock, flags); |
379 | return NULL; | 381 | return NULL; |
380 | } | 382 | } |
diff --git a/net/bluetooth/bnep/bnep.h b/net/bluetooth/bnep/bnep.h index a2992280c3d1..e69244dd8de8 100644 --- a/net/bluetooth/bnep/bnep.h +++ b/net/bluetooth/bnep/bnep.h | |||
@@ -174,7 +174,7 @@ struct bnep_session { | |||
174 | 174 | ||
175 | void bnep_net_setup(struct net_device *dev); | 175 | void bnep_net_setup(struct net_device *dev); |
176 | int bnep_sock_init(void); | 176 | int bnep_sock_init(void); |
177 | int bnep_sock_cleanup(void); | 177 | void bnep_sock_cleanup(void); |
178 | 178 | ||
179 | static inline int bnep_mc_hash(__u8 *addr) | 179 | static inline int bnep_mc_hash(__u8 *addr) |
180 | { | 180 | { |
diff --git a/net/bluetooth/bnep/sock.c b/net/bluetooth/bnep/sock.c index 81065e548a1f..201e5b1ce473 100644 --- a/net/bluetooth/bnep/sock.c +++ b/net/bluetooth/bnep/sock.c | |||
@@ -257,12 +257,10 @@ error: | |||
257 | return err; | 257 | return err; |
258 | } | 258 | } |
259 | 259 | ||
260 | int __exit bnep_sock_cleanup(void) | 260 | void __exit bnep_sock_cleanup(void) |
261 | { | 261 | { |
262 | if (bt_sock_unregister(BTPROTO_BNEP) < 0) | 262 | if (bt_sock_unregister(BTPROTO_BNEP) < 0) |
263 | BT_ERR("Can't unregister BNEP socket"); | 263 | BT_ERR("Can't unregister BNEP socket"); |
264 | 264 | ||
265 | proto_unregister(&bnep_proto); | 265 | proto_unregister(&bnep_proto); |
266 | |||
267 | return 0; | ||
268 | } | 266 | } |
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c index 930b58e7149a..aec6929f5c16 100644 --- a/net/bluetooth/hci_core.c +++ b/net/bluetooth/hci_core.c | |||
@@ -902,8 +902,6 @@ int hci_unregister_dev(struct hci_dev *hdev) | |||
902 | 902 | ||
903 | BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type); | 903 | BT_DBG("%p name %s type %d", hdev, hdev->name, hdev->type); |
904 | 904 | ||
905 | hci_unregister_sysfs(hdev); | ||
906 | |||
907 | write_lock_bh(&hci_dev_list_lock); | 905 | write_lock_bh(&hci_dev_list_lock); |
908 | list_del(&hdev->list); | 906 | list_del(&hdev->list); |
909 | write_unlock_bh(&hci_dev_list_lock); | 907 | write_unlock_bh(&hci_dev_list_lock); |
@@ -915,6 +913,8 @@ int hci_unregister_dev(struct hci_dev *hdev) | |||
915 | 913 | ||
916 | hci_notify(hdev, HCI_DEV_UNREG); | 914 | hci_notify(hdev, HCI_DEV_UNREG); |
917 | 915 | ||
916 | hci_unregister_sysfs(hdev); | ||
917 | |||
918 | __hci_dev_put(hdev); | 918 | __hci_dev_put(hdev); |
919 | 919 | ||
920 | return 0; | 920 | return 0; |
diff --git a/net/bluetooth/hci_sock.c b/net/bluetooth/hci_sock.c index 14991323c273..b5d4019d3572 100644 --- a/net/bluetooth/hci_sock.c +++ b/net/bluetooth/hci_sock.c | |||
@@ -734,7 +734,7 @@ error: | |||
734 | return err; | 734 | return err; |
735 | } | 735 | } |
736 | 736 | ||
737 | int __exit hci_sock_cleanup(void) | 737 | void __exit hci_sock_cleanup(void) |
738 | { | 738 | { |
739 | if (bt_sock_unregister(BTPROTO_HCI) < 0) | 739 | if (bt_sock_unregister(BTPROTO_HCI) < 0) |
740 | BT_ERR("HCI socket unregistration failed"); | 740 | BT_ERR("HCI socket unregistration failed"); |
@@ -742,6 +742,4 @@ int __exit hci_sock_cleanup(void) | |||
742 | hci_unregister_notifier(&hci_sock_nblock); | 742 | hci_unregister_notifier(&hci_sock_nblock); |
743 | 743 | ||
744 | proto_unregister(&hci_sk_proto); | 744 | proto_unregister(&hci_sk_proto); |
745 | |||
746 | return 0; | ||
747 | } | 745 | } |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index ed750f9ceb07..01578f544ad6 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -1035,6 +1035,13 @@ static void tcp_cwnd_validate(struct sock *sk) | |||
1035 | * introducing MSS oddities to segment boundaries. In rare cases where | 1035 | * introducing MSS oddities to segment boundaries. In rare cases where |
1036 | * mss_now != mss_cache, we will request caller to create a small skb | 1036 | * mss_now != mss_cache, we will request caller to create a small skb |
1037 | * per input skb which could be mostly avoided here (if desired). | 1037 | * per input skb which could be mostly avoided here (if desired). |
1038 | * | ||
1039 | * We explicitly want to create a request for splitting write queue tail | ||
1040 | * to a small skb for Nagle purposes while avoiding unnecessary modulos, | ||
1041 | * thus all the complexity (cwnd_len is always MSS multiple which we | ||
1042 | * return whenever allowed by the other factors). Basically we need the | ||
1043 | * modulo only when the receiver window alone is the limiting factor or | ||
1044 | * when we would be allowed to send the split-due-to-Nagle skb fully. | ||
1038 | */ | 1045 | */ |
1039 | static unsigned int tcp_mss_split_point(struct sock *sk, struct sk_buff *skb, | 1046 | static unsigned int tcp_mss_split_point(struct sock *sk, struct sk_buff *skb, |
1040 | unsigned int mss_now, unsigned int cwnd) | 1047 | unsigned int mss_now, unsigned int cwnd) |
@@ -1048,10 +1055,11 @@ static unsigned int tcp_mss_split_point(struct sock *sk, struct sk_buff *skb, | |||
1048 | if (likely(cwnd_len <= window && skb != tcp_write_queue_tail(sk))) | 1055 | if (likely(cwnd_len <= window && skb != tcp_write_queue_tail(sk))) |
1049 | return cwnd_len; | 1056 | return cwnd_len; |
1050 | 1057 | ||
1051 | if (skb == tcp_write_queue_tail(sk) && cwnd_len <= skb->len) | 1058 | needed = min(skb->len, window); |
1059 | |||
1060 | if (skb == tcp_write_queue_tail(sk) && cwnd_len <= needed) | ||
1052 | return cwnd_len; | 1061 | return cwnd_len; |
1053 | 1062 | ||
1054 | needed = min(skb->len, window); | ||
1055 | return needed - needed % mss_now; | 1063 | return needed - needed % mss_now; |
1056 | } | 1064 | } |
1057 | 1065 | ||
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c index e06bf0028bb1..684ec9c1ad38 100644 --- a/net/netfilter/nf_conntrack_expect.c +++ b/net/netfilter/nf_conntrack_expect.c | |||
@@ -381,7 +381,7 @@ int nf_ct_expect_related(struct nf_conntrack_expect *expect) | |||
381 | if (nf_ct_expect_count >= nf_ct_expect_max) { | 381 | if (nf_ct_expect_count >= nf_ct_expect_max) { |
382 | if (net_ratelimit()) | 382 | if (net_ratelimit()) |
383 | printk(KERN_WARNING | 383 | printk(KERN_WARNING |
384 | "nf_conntrack: expectation table full"); | 384 | "nf_conntrack: expectation table full\n"); |
385 | ret = -EMFILE; | 385 | ret = -EMFILE; |
386 | goto out; | 386 | goto out; |
387 | } | 387 | } |
diff --git a/net/netfilter/nf_conntrack_extend.c b/net/netfilter/nf_conntrack_extend.c index 8b9be1e978cd..2bd9963b5b3e 100644 --- a/net/netfilter/nf_conntrack_extend.c +++ b/net/netfilter/nf_conntrack_extend.c | |||
@@ -19,14 +19,6 @@ | |||
19 | static struct nf_ct_ext_type *nf_ct_ext_types[NF_CT_EXT_NUM]; | 19 | static struct nf_ct_ext_type *nf_ct_ext_types[NF_CT_EXT_NUM]; |
20 | static DEFINE_MUTEX(nf_ct_ext_type_mutex); | 20 | static DEFINE_MUTEX(nf_ct_ext_type_mutex); |
21 | 21 | ||
22 | /* Horrible trick to figure out smallest amount worth kmallocing. */ | ||
23 | #define CACHE(x) (x) + 0 * | ||
24 | enum { | ||
25 | NF_CT_EXT_MIN_SIZE = | ||
26 | #include <linux/kmalloc_sizes.h> | ||
27 | 1 }; | ||
28 | #undef CACHE | ||
29 | |||
30 | void __nf_ct_ext_destroy(struct nf_conn *ct) | 22 | void __nf_ct_ext_destroy(struct nf_conn *ct) |
31 | { | 23 | { |
32 | unsigned int i; | 24 | unsigned int i; |
@@ -53,7 +45,7 @@ EXPORT_SYMBOL(__nf_ct_ext_destroy); | |||
53 | static void * | 45 | static void * |
54 | nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp) | 46 | nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp) |
55 | { | 47 | { |
56 | unsigned int off, len, real_len; | 48 | unsigned int off, len; |
57 | struct nf_ct_ext_type *t; | 49 | struct nf_ct_ext_type *t; |
58 | 50 | ||
59 | rcu_read_lock(); | 51 | rcu_read_lock(); |
@@ -61,16 +53,14 @@ nf_ct_ext_create(struct nf_ct_ext **ext, enum nf_ct_ext_id id, gfp_t gfp) | |||
61 | BUG_ON(t == NULL); | 53 | BUG_ON(t == NULL); |
62 | off = ALIGN(sizeof(struct nf_ct_ext), t->align); | 54 | off = ALIGN(sizeof(struct nf_ct_ext), t->align); |
63 | len = off + t->len; | 55 | len = off + t->len; |
64 | real_len = t->alloc_size; | ||
65 | rcu_read_unlock(); | 56 | rcu_read_unlock(); |
66 | 57 | ||
67 | *ext = kzalloc(real_len, gfp); | 58 | *ext = kzalloc(t->alloc_size, gfp); |
68 | if (!*ext) | 59 | if (!*ext) |
69 | return NULL; | 60 | return NULL; |
70 | 61 | ||
71 | (*ext)->offset[id] = off; | 62 | (*ext)->offset[id] = off; |
72 | (*ext)->len = len; | 63 | (*ext)->len = len; |
73 | (*ext)->real_len = real_len; | ||
74 | 64 | ||
75 | return (void *)(*ext) + off; | 65 | return (void *)(*ext) + off; |
76 | } | 66 | } |
@@ -95,7 +85,7 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp) | |||
95 | newlen = newoff + t->len; | 85 | newlen = newoff + t->len; |
96 | rcu_read_unlock(); | 86 | rcu_read_unlock(); |
97 | 87 | ||
98 | if (newlen >= ct->ext->real_len) { | 88 | if (newlen >= ksize(ct->ext)) { |
99 | new = kmalloc(newlen, gfp); | 89 | new = kmalloc(newlen, gfp); |
100 | if (!new) | 90 | if (!new) |
101 | return NULL; | 91 | return NULL; |
@@ -114,7 +104,6 @@ void *__nf_ct_ext_add(struct nf_conn *ct, enum nf_ct_ext_id id, gfp_t gfp) | |||
114 | rcu_read_unlock(); | 104 | rcu_read_unlock(); |
115 | } | 105 | } |
116 | kfree(ct->ext); | 106 | kfree(ct->ext); |
117 | new->real_len = newlen; | ||
118 | ct->ext = new; | 107 | ct->ext = new; |
119 | } | 108 | } |
120 | 109 | ||
@@ -156,8 +145,6 @@ static void update_alloc_size(struct nf_ct_ext_type *type) | |||
156 | t1->alloc_size = ALIGN(t1->alloc_size, t2->align) | 145 | t1->alloc_size = ALIGN(t1->alloc_size, t2->align) |
157 | + t2->len; | 146 | + t2->len; |
158 | } | 147 | } |
159 | if (t1->alloc_size < NF_CT_EXT_MIN_SIZE) | ||
160 | t1->alloc_size = NF_CT_EXT_MIN_SIZE; | ||
161 | } | 148 | } |
162 | } | 149 | } |
163 | 150 | ||
diff --git a/net/netfilter/nf_queue.c b/net/netfilter/nf_queue.c index bfc2928c1912..ddc80ea114cd 100644 --- a/net/netfilter/nf_queue.c +++ b/net/netfilter/nf_queue.c | |||
@@ -51,7 +51,7 @@ int nf_unregister_queue_handler(int pf, const struct nf_queue_handler *qh) | |||
51 | return -EINVAL; | 51 | return -EINVAL; |
52 | 52 | ||
53 | mutex_lock(&queue_handler_mutex); | 53 | mutex_lock(&queue_handler_mutex); |
54 | if (queue_handler[pf] != qh) { | 54 | if (queue_handler[pf] && queue_handler[pf] != qh) { |
55 | mutex_unlock(&queue_handler_mutex); | 55 | mutex_unlock(&queue_handler_mutex); |
56 | return -EINVAL; | 56 | return -EINVAL; |
57 | } | 57 | } |
diff --git a/net/netfilter/nfnetlink_log.c b/net/netfilter/nfnetlink_log.c index 7efa40d47393..bf3f19b21fe4 100644 --- a/net/netfilter/nfnetlink_log.c +++ b/net/netfilter/nfnetlink_log.c | |||
@@ -556,7 +556,7 @@ nfulnl_log_packet(unsigned int pf, | |||
556 | /* FIXME: do we want to make the size calculation conditional based on | 556 | /* FIXME: do we want to make the size calculation conditional based on |
557 | * what is actually present? way more branches and checks, but more | 557 | * what is actually present? way more branches and checks, but more |
558 | * memory efficient... */ | 558 | * memory efficient... */ |
559 | size = NLMSG_ALIGN(sizeof(struct nfgenmsg)) | 559 | size = NLMSG_SPACE(sizeof(struct nfgenmsg)) |
560 | + nla_total_size(sizeof(struct nfulnl_msg_packet_hdr)) | 560 | + nla_total_size(sizeof(struct nfulnl_msg_packet_hdr)) |
561 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ | 561 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ |
562 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ | 562 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ |
@@ -702,20 +702,30 @@ nfulnl_recv_config(struct sock *ctnl, struct sk_buff *skb, | |||
702 | struct nfgenmsg *nfmsg = NLMSG_DATA(nlh); | 702 | struct nfgenmsg *nfmsg = NLMSG_DATA(nlh); |
703 | u_int16_t group_num = ntohs(nfmsg->res_id); | 703 | u_int16_t group_num = ntohs(nfmsg->res_id); |
704 | struct nfulnl_instance *inst; | 704 | struct nfulnl_instance *inst; |
705 | struct nfulnl_msg_config_cmd *cmd = NULL; | ||
705 | int ret = 0; | 706 | int ret = 0; |
706 | 707 | ||
708 | if (nfula[NFULA_CFG_CMD]) { | ||
709 | u_int8_t pf = nfmsg->nfgen_family; | ||
710 | cmd = nla_data(nfula[NFULA_CFG_CMD]); | ||
711 | |||
712 | /* Commands without queue context */ | ||
713 | switch (cmd->command) { | ||
714 | case NFULNL_CFG_CMD_PF_BIND: | ||
715 | return nf_log_register(pf, &nfulnl_logger); | ||
716 | case NFULNL_CFG_CMD_PF_UNBIND: | ||
717 | nf_log_unregister_pf(pf); | ||
718 | return 0; | ||
719 | } | ||
720 | } | ||
721 | |||
707 | inst = instance_lookup_get(group_num); | 722 | inst = instance_lookup_get(group_num); |
708 | if (inst && inst->peer_pid != NETLINK_CB(skb).pid) { | 723 | if (inst && inst->peer_pid != NETLINK_CB(skb).pid) { |
709 | ret = -EPERM; | 724 | ret = -EPERM; |
710 | goto out_put; | 725 | goto out_put; |
711 | } | 726 | } |
712 | 727 | ||
713 | if (nfula[NFULA_CFG_CMD]) { | 728 | if (cmd != NULL) { |
714 | u_int8_t pf = nfmsg->nfgen_family; | ||
715 | struct nfulnl_msg_config_cmd *cmd; | ||
716 | |||
717 | cmd = nla_data(nfula[NFULA_CFG_CMD]); | ||
718 | |||
719 | switch (cmd->command) { | 729 | switch (cmd->command) { |
720 | case NFULNL_CFG_CMD_BIND: | 730 | case NFULNL_CFG_CMD_BIND: |
721 | if (inst) { | 731 | if (inst) { |
@@ -738,14 +748,6 @@ nfulnl_recv_config(struct sock *ctnl, struct sk_buff *skb, | |||
738 | 748 | ||
739 | instance_destroy(inst); | 749 | instance_destroy(inst); |
740 | goto out; | 750 | goto out; |
741 | case NFULNL_CFG_CMD_PF_BIND: | ||
742 | ret = nf_log_register(pf, &nfulnl_logger); | ||
743 | break; | ||
744 | case NFULNL_CFG_CMD_PF_UNBIND: | ||
745 | /* This is a bug and a feature. We cannot unregister | ||
746 | * other handlers, like nfnetlink_inst can */ | ||
747 | nf_log_unregister_pf(pf); | ||
748 | break; | ||
749 | default: | 751 | default: |
750 | ret = -ENOTSUPP; | 752 | ret = -ENOTSUPP; |
751 | break; | 753 | break; |
diff --git a/net/netfilter/nfnetlink_queue.c b/net/netfilter/nfnetlink_queue.c index 0043d3a9f87e..012cb6910820 100644 --- a/net/netfilter/nfnetlink_queue.c +++ b/net/netfilter/nfnetlink_queue.c | |||
@@ -224,7 +224,7 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue, | |||
224 | struct net_device *indev; | 224 | struct net_device *indev; |
225 | struct net_device *outdev; | 225 | struct net_device *outdev; |
226 | 226 | ||
227 | size = NLMSG_ALIGN(sizeof(struct nfgenmsg)) | 227 | size = NLMSG_SPACE(sizeof(struct nfgenmsg)) |
228 | + nla_total_size(sizeof(struct nfqnl_msg_packet_hdr)) | 228 | + nla_total_size(sizeof(struct nfqnl_msg_packet_hdr)) |
229 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ | 229 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ |
230 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ | 230 | + nla_total_size(sizeof(u_int32_t)) /* ifindex */ |
@@ -703,19 +703,12 @@ nfqnl_recv_config(struct sock *ctnl, struct sk_buff *skb, | |||
703 | /* Commands without queue context - might sleep */ | 703 | /* Commands without queue context - might sleep */ |
704 | switch (cmd->command) { | 704 | switch (cmd->command) { |
705 | case NFQNL_CFG_CMD_PF_BIND: | 705 | case NFQNL_CFG_CMD_PF_BIND: |
706 | ret = nf_register_queue_handler(ntohs(cmd->pf), | 706 | return nf_register_queue_handler(ntohs(cmd->pf), |
707 | &nfqh); | 707 | &nfqh); |
708 | break; | ||
709 | case NFQNL_CFG_CMD_PF_UNBIND: | 708 | case NFQNL_CFG_CMD_PF_UNBIND: |
710 | ret = nf_unregister_queue_handler(ntohs(cmd->pf), | 709 | return nf_unregister_queue_handler(ntohs(cmd->pf), |
711 | &nfqh); | 710 | &nfqh); |
712 | break; | ||
713 | default: | ||
714 | break; | ||
715 | } | 711 | } |
716 | |||
717 | if (ret < 0) | ||
718 | return ret; | ||
719 | } | 712 | } |
720 | 713 | ||
721 | rcu_read_lock(); | 714 | rcu_read_lock(); |
diff --git a/net/netfilter/xt_time.c b/net/netfilter/xt_time.c index e9a8794bc3ab..9fa2e0824708 100644 --- a/net/netfilter/xt_time.c +++ b/net/netfilter/xt_time.c | |||
@@ -95,8 +95,11 @@ static inline void localtime_2(struct xtm *r, time_t time) | |||
95 | */ | 95 | */ |
96 | r->dse = time / 86400; | 96 | r->dse = time / 86400; |
97 | 97 | ||
98 | /* 1970-01-01 (w=0) was a Thursday (4). */ | 98 | /* |
99 | r->weekday = (4 + r->dse) % 7; | 99 | * 1970-01-01 (w=0) was a Thursday (4). |
100 | * -1 and +1 map Sunday properly onto 7. | ||
101 | */ | ||
102 | r->weekday = (4 + r->dse - 1) % 7 + 1; | ||
100 | } | 103 | } |
101 | 104 | ||
102 | static void localtime_3(struct xtm *r, time_t time) | 105 | static void localtime_3(struct xtm *r, time_t time) |
diff --git a/net/rxrpc/ar-recvmsg.c b/net/rxrpc/ar-recvmsg.c index f19121d4795b..a39bf97f8830 100644 --- a/net/rxrpc/ar-recvmsg.c +++ b/net/rxrpc/ar-recvmsg.c | |||
@@ -143,7 +143,8 @@ int rxrpc_recvmsg(struct kiocb *iocb, struct socket *sock, | |||
143 | /* copy the peer address and timestamp */ | 143 | /* copy the peer address and timestamp */ |
144 | if (!continue_call) { | 144 | if (!continue_call) { |
145 | if (msg->msg_name && msg->msg_namelen > 0) | 145 | if (msg->msg_name && msg->msg_namelen > 0) |
146 | memcpy(&msg->msg_name, &call->conn->trans->peer->srx, | 146 | memcpy(msg->msg_name, |
147 | &call->conn->trans->peer->srx, | ||
147 | sizeof(call->conn->trans->peer->srx)); | 148 | sizeof(call->conn->trans->peer->srx)); |
148 | sock_recv_timestamp(msg, &rx->sk, skb); | 149 | sock_recv_timestamp(msg, &rx->sk, skb); |
149 | } | 150 | } |
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c index a27511ebc4cb..ceefda025e2d 100644 --- a/net/sctp/bind_addr.c +++ b/net/sctp/bind_addr.c | |||
@@ -209,6 +209,7 @@ int sctp_add_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *new, | |||
209 | int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr) | 209 | int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr) |
210 | { | 210 | { |
211 | struct sctp_sockaddr_entry *addr, *temp; | 211 | struct sctp_sockaddr_entry *addr, *temp; |
212 | int found = 0; | ||
212 | 213 | ||
213 | /* We hold the socket lock when calling this function, | 214 | /* We hold the socket lock when calling this function, |
214 | * and that acts as a writer synchronizing lock. | 215 | * and that acts as a writer synchronizing lock. |
@@ -216,13 +217,14 @@ int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr) | |||
216 | list_for_each_entry_safe(addr, temp, &bp->address_list, list) { | 217 | list_for_each_entry_safe(addr, temp, &bp->address_list, list) { |
217 | if (sctp_cmp_addr_exact(&addr->a, del_addr)) { | 218 | if (sctp_cmp_addr_exact(&addr->a, del_addr)) { |
218 | /* Found the exact match. */ | 219 | /* Found the exact match. */ |
220 | found = 1; | ||
219 | addr->valid = 0; | 221 | addr->valid = 0; |
220 | list_del_rcu(&addr->list); | 222 | list_del_rcu(&addr->list); |
221 | break; | 223 | break; |
222 | } | 224 | } |
223 | } | 225 | } |
224 | 226 | ||
225 | if (addr && !addr->valid) { | 227 | if (found) { |
226 | call_rcu(&addr->rcu, sctp_local_addr_free); | 228 | call_rcu(&addr->rcu, sctp_local_addr_free); |
227 | SCTP_DBG_OBJCNT_DEC(addr); | 229 | SCTP_DBG_OBJCNT_DEC(addr); |
228 | return 0; | 230 | return 0; |
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index 87f940587d5f..9aa0733aee87 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c | |||
@@ -89,6 +89,7 @@ static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev, | |||
89 | struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; | 89 | struct inet6_ifaddr *ifa = (struct inet6_ifaddr *)ptr; |
90 | struct sctp_sockaddr_entry *addr = NULL; | 90 | struct sctp_sockaddr_entry *addr = NULL; |
91 | struct sctp_sockaddr_entry *temp; | 91 | struct sctp_sockaddr_entry *temp; |
92 | int found = 0; | ||
92 | 93 | ||
93 | switch (ev) { | 94 | switch (ev) { |
94 | case NETDEV_UP: | 95 | case NETDEV_UP: |
@@ -111,13 +112,14 @@ static int sctp_inet6addr_event(struct notifier_block *this, unsigned long ev, | |||
111 | &sctp_local_addr_list, list) { | 112 | &sctp_local_addr_list, list) { |
112 | if (ipv6_addr_equal(&addr->a.v6.sin6_addr, | 113 | if (ipv6_addr_equal(&addr->a.v6.sin6_addr, |
113 | &ifa->addr)) { | 114 | &ifa->addr)) { |
115 | found = 1; | ||
114 | addr->valid = 0; | 116 | addr->valid = 0; |
115 | list_del_rcu(&addr->list); | 117 | list_del_rcu(&addr->list); |
116 | break; | 118 | break; |
117 | } | 119 | } |
118 | } | 120 | } |
119 | spin_unlock_bh(&sctp_local_addr_lock); | 121 | spin_unlock_bh(&sctp_local_addr_lock); |
120 | if (addr && !addr->valid) | 122 | if (found) |
121 | call_rcu(&addr->rcu, sctp_local_addr_free); | 123 | call_rcu(&addr->rcu, sctp_local_addr_free); |
122 | break; | 124 | break; |
123 | } | 125 | } |
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index 688546dccd82..ad0a4069b95b 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
@@ -628,6 +628,7 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev, | |||
628 | struct in_ifaddr *ifa = (struct in_ifaddr *)ptr; | 628 | struct in_ifaddr *ifa = (struct in_ifaddr *)ptr; |
629 | struct sctp_sockaddr_entry *addr = NULL; | 629 | struct sctp_sockaddr_entry *addr = NULL; |
630 | struct sctp_sockaddr_entry *temp; | 630 | struct sctp_sockaddr_entry *temp; |
631 | int found = 0; | ||
631 | 632 | ||
632 | switch (ev) { | 633 | switch (ev) { |
633 | case NETDEV_UP: | 634 | case NETDEV_UP: |
@@ -647,13 +648,14 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev, | |||
647 | list_for_each_entry_safe(addr, temp, | 648 | list_for_each_entry_safe(addr, temp, |
648 | &sctp_local_addr_list, list) { | 649 | &sctp_local_addr_list, list) { |
649 | if (addr->a.v4.sin_addr.s_addr == ifa->ifa_local) { | 650 | if (addr->a.v4.sin_addr.s_addr == ifa->ifa_local) { |
651 | found = 1; | ||
650 | addr->valid = 0; | 652 | addr->valid = 0; |
651 | list_del_rcu(&addr->list); | 653 | list_del_rcu(&addr->list); |
652 | break; | 654 | break; |
653 | } | 655 | } |
654 | } | 656 | } |
655 | spin_unlock_bh(&sctp_local_addr_lock); | 657 | spin_unlock_bh(&sctp_local_addr_lock); |
656 | if (addr && !addr->valid) | 658 | if (found) |
657 | call_rcu(&addr->rcu, sctp_local_addr_free); | 659 | call_rcu(&addr->rcu, sctp_local_addr_free); |
658 | break; | 660 | break; |
659 | } | 661 | } |
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index e45be4e3f80d..578630e8e00d 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -2375,6 +2375,14 @@ static int sctp_process_param(struct sctp_association *asoc, | |||
2375 | asoc->peer.ipv4_address = 0; | 2375 | asoc->peer.ipv4_address = 0; |
2376 | asoc->peer.ipv6_address = 0; | 2376 | asoc->peer.ipv6_address = 0; |
2377 | 2377 | ||
2378 | /* Assume that peer supports the address family | ||
2379 | * by which it sends a packet. | ||
2380 | */ | ||
2381 | if (peer_addr->sa.sa_family == AF_INET6) | ||
2382 | asoc->peer.ipv6_address = 1; | ||
2383 | else if (peer_addr->sa.sa_family == AF_INET) | ||
2384 | asoc->peer.ipv4_address = 1; | ||
2385 | |||
2378 | /* Cycle through address types; avoid divide by 0. */ | 2386 | /* Cycle through address types; avoid divide by 0. */ |
2379 | sat = ntohs(param.p->length) - sizeof(sctp_paramhdr_t); | 2387 | sat = ntohs(param.p->length) - sizeof(sctp_paramhdr_t); |
2380 | if (sat) | 2388 | if (sat) |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 939892691a26..d994d822900d 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -2933,17 +2933,39 @@ static int sctp_setsockopt_maxburst(struct sock *sk, | |||
2933 | char __user *optval, | 2933 | char __user *optval, |
2934 | int optlen) | 2934 | int optlen) |
2935 | { | 2935 | { |
2936 | struct sctp_assoc_value params; | ||
2937 | struct sctp_sock *sp; | ||
2938 | struct sctp_association *asoc; | ||
2936 | int val; | 2939 | int val; |
2940 | int assoc_id = 0; | ||
2937 | 2941 | ||
2938 | if (optlen != sizeof(int)) | 2942 | if (optlen < sizeof(int)) |
2939 | return -EINVAL; | 2943 | return -EINVAL; |
2940 | if (get_user(val, (int __user *)optval)) | ||
2941 | return -EFAULT; | ||
2942 | 2944 | ||
2943 | if (val < 0) | 2945 | if (optlen == sizeof(int)) { |
2946 | printk(KERN_WARNING | ||
2947 | "SCTP: Use of int in max_burst socket option deprecated\n"); | ||
2948 | printk(KERN_WARNING | ||
2949 | "SCTP: Use struct sctp_assoc_value instead\n"); | ||
2950 | if (copy_from_user(&val, optval, optlen)) | ||
2951 | return -EFAULT; | ||
2952 | } else if (optlen == sizeof(struct sctp_assoc_value)) { | ||
2953 | if (copy_from_user(¶ms, optval, optlen)) | ||
2954 | return -EFAULT; | ||
2955 | val = params.assoc_value; | ||
2956 | assoc_id = params.assoc_id; | ||
2957 | } else | ||
2944 | return -EINVAL; | 2958 | return -EINVAL; |
2945 | 2959 | ||
2946 | sctp_sk(sk)->max_burst = val; | 2960 | sp = sctp_sk(sk); |
2961 | |||
2962 | if (assoc_id != 0) { | ||
2963 | asoc = sctp_id2assoc(sk, assoc_id); | ||
2964 | if (!asoc) | ||
2965 | return -EINVAL; | ||
2966 | asoc->max_burst = val; | ||
2967 | } else | ||
2968 | sp->max_burst = val; | ||
2947 | 2969 | ||
2948 | return 0; | 2970 | return 0; |
2949 | } | 2971 | } |
@@ -5005,20 +5027,45 @@ static int sctp_getsockopt_maxburst(struct sock *sk, int len, | |||
5005 | char __user *optval, | 5027 | char __user *optval, |
5006 | int __user *optlen) | 5028 | int __user *optlen) |
5007 | { | 5029 | { |
5008 | int val; | 5030 | struct sctp_assoc_value params; |
5031 | struct sctp_sock *sp; | ||
5032 | struct sctp_association *asoc; | ||
5009 | 5033 | ||
5010 | if (len < sizeof(int)) | 5034 | if (len < sizeof(int)) |
5011 | return -EINVAL; | 5035 | return -EINVAL; |
5012 | 5036 | ||
5013 | len = sizeof(int); | 5037 | if (len == sizeof(int)) { |
5038 | printk(KERN_WARNING | ||
5039 | "SCTP: Use of int in max_burst socket option deprecated\n"); | ||
5040 | printk(KERN_WARNING | ||
5041 | "SCTP: Use struct sctp_assoc_value instead\n"); | ||
5042 | params.assoc_id = 0; | ||
5043 | } else if (len == sizeof (struct sctp_assoc_value)) { | ||
5044 | if (copy_from_user(¶ms, optval, len)) | ||
5045 | return -EFAULT; | ||
5046 | } else | ||
5047 | return -EINVAL; | ||
5014 | 5048 | ||
5015 | val = sctp_sk(sk)->max_burst; | 5049 | sp = sctp_sk(sk); |
5016 | if (put_user(len, optlen)) | 5050 | |
5017 | return -EFAULT; | 5051 | if (params.assoc_id != 0) { |
5018 | if (copy_to_user(optval, &val, len)) | 5052 | asoc = sctp_id2assoc(sk, params.assoc_id); |
5019 | return -EFAULT; | 5053 | if (!asoc) |
5054 | return -EINVAL; | ||
5055 | params.assoc_value = asoc->max_burst; | ||
5056 | } else | ||
5057 | params.assoc_value = sp->max_burst; | ||
5058 | |||
5059 | if (len == sizeof(int)) { | ||
5060 | if (copy_to_user(optval, ¶ms.assoc_value, len)) | ||
5061 | return -EFAULT; | ||
5062 | } else { | ||
5063 | if (copy_to_user(optval, ¶ms, len)) | ||
5064 | return -EFAULT; | ||
5065 | } | ||
5066 | |||
5067 | return 0; | ||
5020 | 5068 | ||
5021 | return -ENOTSUPP; | ||
5022 | } | 5069 | } |
5023 | 5070 | ||
5024 | static int sctp_getsockopt_hmac_ident(struct sock *sk, int len, | 5071 | static int sctp_getsockopt_hmac_ident(struct sock *sk, int len, |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_sendto.c b/net/sunrpc/xprtrdma/svc_rdma_sendto.c index 0598b229c11d..981f190c1b39 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_sendto.c +++ b/net/sunrpc/xprtrdma/svc_rdma_sendto.c | |||
@@ -156,7 +156,7 @@ static int send_write(struct svcxprt_rdma *xprt, struct svc_rqst *rqstp, | |||
156 | struct svc_rdma_op_ctxt *ctxt; | 156 | struct svc_rdma_op_ctxt *ctxt; |
157 | int ret = 0; | 157 | int ret = 0; |
158 | 158 | ||
159 | BUG_ON(sge_count >= 32); | 159 | BUG_ON(sge_count > RPCSVC_MAXPAGES); |
160 | dprintk("svcrdma: RDMA_WRITE rmr=%x, to=%llx, xdr_off=%d, " | 160 | dprintk("svcrdma: RDMA_WRITE rmr=%x, to=%llx, xdr_off=%d, " |
161 | "write_len=%d, xdr_sge=%p, sge_count=%d\n", | 161 | "write_len=%d, xdr_sge=%p, sge_count=%d\n", |
162 | rmr, (unsigned long long)to, xdr_off, | 162 | rmr, (unsigned long long)to, xdr_off, |
diff --git a/net/sunrpc/xprtrdma/svc_rdma_transport.c b/net/sunrpc/xprtrdma/svc_rdma_transport.c index f09444c451bc..16fd3f6718ff 100644 --- a/net/sunrpc/xprtrdma/svc_rdma_transport.c +++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c | |||
@@ -54,7 +54,6 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv, | |||
54 | int flags); | 54 | int flags); |
55 | static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt); | 55 | static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt); |
56 | static void svc_rdma_release_rqst(struct svc_rqst *); | 56 | static void svc_rdma_release_rqst(struct svc_rqst *); |
57 | static void rdma_destroy_xprt(struct svcxprt_rdma *xprt); | ||
58 | static void dto_tasklet_func(unsigned long data); | 57 | static void dto_tasklet_func(unsigned long data); |
59 | static void svc_rdma_detach(struct svc_xprt *xprt); | 58 | static void svc_rdma_detach(struct svc_xprt *xprt); |
60 | static void svc_rdma_free(struct svc_xprt *xprt); | 59 | static void svc_rdma_free(struct svc_xprt *xprt); |
@@ -247,6 +246,7 @@ static void dto_tasklet_func(unsigned long data) | |||
247 | sq_cq_reap(xprt); | 246 | sq_cq_reap(xprt); |
248 | } | 247 | } |
249 | 248 | ||
249 | svc_xprt_put(&xprt->sc_xprt); | ||
250 | spin_lock_irqsave(&dto_lock, flags); | 250 | spin_lock_irqsave(&dto_lock, flags); |
251 | } | 251 | } |
252 | spin_unlock_irqrestore(&dto_lock, flags); | 252 | spin_unlock_irqrestore(&dto_lock, flags); |
@@ -275,8 +275,10 @@ static void rq_comp_handler(struct ib_cq *cq, void *cq_context) | |||
275 | * add it | 275 | * add it |
276 | */ | 276 | */ |
277 | spin_lock_irqsave(&dto_lock, flags); | 277 | spin_lock_irqsave(&dto_lock, flags); |
278 | if (list_empty(&xprt->sc_dto_q)) | 278 | if (list_empty(&xprt->sc_dto_q)) { |
279 | svc_xprt_get(&xprt->sc_xprt); | ||
279 | list_add_tail(&xprt->sc_dto_q, &dto_xprt_q); | 280 | list_add_tail(&xprt->sc_dto_q, &dto_xprt_q); |
281 | } | ||
280 | spin_unlock_irqrestore(&dto_lock, flags); | 282 | spin_unlock_irqrestore(&dto_lock, flags); |
281 | 283 | ||
282 | /* Tasklet does all the work to avoid irqsave locks. */ | 284 | /* Tasklet does all the work to avoid irqsave locks. */ |
@@ -386,8 +388,10 @@ static void sq_comp_handler(struct ib_cq *cq, void *cq_context) | |||
386 | * add it | 388 | * add it |
387 | */ | 389 | */ |
388 | spin_lock_irqsave(&dto_lock, flags); | 390 | spin_lock_irqsave(&dto_lock, flags); |
389 | if (list_empty(&xprt->sc_dto_q)) | 391 | if (list_empty(&xprt->sc_dto_q)) { |
392 | svc_xprt_get(&xprt->sc_xprt); | ||
390 | list_add_tail(&xprt->sc_dto_q, &dto_xprt_q); | 393 | list_add_tail(&xprt->sc_dto_q, &dto_xprt_q); |
394 | } | ||
391 | spin_unlock_irqrestore(&dto_lock, flags); | 395 | spin_unlock_irqrestore(&dto_lock, flags); |
392 | 396 | ||
393 | /* Tasklet does all the work to avoid irqsave locks. */ | 397 | /* Tasklet does all the work to avoid irqsave locks. */ |
@@ -611,6 +615,7 @@ static int rdma_cma_handler(struct rdma_cm_id *cma_id, | |||
611 | switch (event->event) { | 615 | switch (event->event) { |
612 | case RDMA_CM_EVENT_ESTABLISHED: | 616 | case RDMA_CM_EVENT_ESTABLISHED: |
613 | /* Accept complete */ | 617 | /* Accept complete */ |
618 | svc_xprt_get(xprt); | ||
614 | dprintk("svcrdma: Connection completed on DTO xprt=%p, " | 619 | dprintk("svcrdma: Connection completed on DTO xprt=%p, " |
615 | "cm_id=%p\n", xprt, cma_id); | 620 | "cm_id=%p\n", xprt, cma_id); |
616 | clear_bit(RDMAXPRT_CONN_PENDING, &rdma->sc_flags); | 621 | clear_bit(RDMAXPRT_CONN_PENDING, &rdma->sc_flags); |
@@ -661,15 +666,15 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv, | |||
661 | 666 | ||
662 | listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP); | 667 | listen_id = rdma_create_id(rdma_listen_handler, cma_xprt, RDMA_PS_TCP); |
663 | if (IS_ERR(listen_id)) { | 668 | if (IS_ERR(listen_id)) { |
664 | rdma_destroy_xprt(cma_xprt); | 669 | svc_xprt_put(&cma_xprt->sc_xprt); |
665 | dprintk("svcrdma: rdma_create_id failed = %ld\n", | 670 | dprintk("svcrdma: rdma_create_id failed = %ld\n", |
666 | PTR_ERR(listen_id)); | 671 | PTR_ERR(listen_id)); |
667 | return (void *)listen_id; | 672 | return (void *)listen_id; |
668 | } | 673 | } |
669 | ret = rdma_bind_addr(listen_id, sa); | 674 | ret = rdma_bind_addr(listen_id, sa); |
670 | if (ret) { | 675 | if (ret) { |
671 | rdma_destroy_xprt(cma_xprt); | ||
672 | rdma_destroy_id(listen_id); | 676 | rdma_destroy_id(listen_id); |
677 | svc_xprt_put(&cma_xprt->sc_xprt); | ||
673 | dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret); | 678 | dprintk("svcrdma: rdma_bind_addr failed = %d\n", ret); |
674 | return ERR_PTR(ret); | 679 | return ERR_PTR(ret); |
675 | } | 680 | } |
@@ -678,8 +683,9 @@ static struct svc_xprt *svc_rdma_create(struct svc_serv *serv, | |||
678 | ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG); | 683 | ret = rdma_listen(listen_id, RPCRDMA_LISTEN_BACKLOG); |
679 | if (ret) { | 684 | if (ret) { |
680 | rdma_destroy_id(listen_id); | 685 | rdma_destroy_id(listen_id); |
681 | rdma_destroy_xprt(cma_xprt); | 686 | svc_xprt_put(&cma_xprt->sc_xprt); |
682 | dprintk("svcrdma: rdma_listen failed = %d\n", ret); | 687 | dprintk("svcrdma: rdma_listen failed = %d\n", ret); |
688 | return ERR_PTR(ret); | ||
683 | } | 689 | } |
684 | 690 | ||
685 | /* | 691 | /* |
@@ -820,6 +826,7 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) | |||
820 | newxprt->sc_sq_depth = qp_attr.cap.max_send_wr; | 826 | newxprt->sc_sq_depth = qp_attr.cap.max_send_wr; |
821 | newxprt->sc_max_requests = qp_attr.cap.max_recv_wr; | 827 | newxprt->sc_max_requests = qp_attr.cap.max_recv_wr; |
822 | } | 828 | } |
829 | svc_xprt_get(&newxprt->sc_xprt); | ||
823 | newxprt->sc_qp = newxprt->sc_cm_id->qp; | 830 | newxprt->sc_qp = newxprt->sc_cm_id->qp; |
824 | 831 | ||
825 | /* Register all of physical memory */ | 832 | /* Register all of physical memory */ |
@@ -891,8 +898,15 @@ static struct svc_xprt *svc_rdma_accept(struct svc_xprt *xprt) | |||
891 | 898 | ||
892 | errout: | 899 | errout: |
893 | dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret); | 900 | dprintk("svcrdma: failure accepting new connection rc=%d.\n", ret); |
901 | /* Take a reference in case the DTO handler runs */ | ||
902 | svc_xprt_get(&newxprt->sc_xprt); | ||
903 | if (newxprt->sc_qp && !IS_ERR(newxprt->sc_qp)) { | ||
904 | ib_destroy_qp(newxprt->sc_qp); | ||
905 | svc_xprt_put(&newxprt->sc_xprt); | ||
906 | } | ||
894 | rdma_destroy_id(newxprt->sc_cm_id); | 907 | rdma_destroy_id(newxprt->sc_cm_id); |
895 | rdma_destroy_xprt(newxprt); | 908 | /* This call to put will destroy the transport */ |
909 | svc_xprt_put(&newxprt->sc_xprt); | ||
896 | return NULL; | 910 | return NULL; |
897 | } | 911 | } |
898 | 912 | ||
@@ -919,54 +933,60 @@ static void svc_rdma_release_rqst(struct svc_rqst *rqstp) | |||
919 | rqstp->rq_xprt_ctxt = NULL; | 933 | rqstp->rq_xprt_ctxt = NULL; |
920 | } | 934 | } |
921 | 935 | ||
922 | /* Disable data ready events for this connection */ | 936 | /* |
937 | * When connected, an svc_xprt has at least three 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 | * | ||
942 | * - A reference held by the cm_id between the ESTABLISHED and | ||
943 | * DISCONNECTED events. If the remote peer disconnected first, this | ||
944 | * reference could be gone. | ||
945 | * | ||
946 | * - A reference held by the svc_recv code that called this function | ||
947 | * as part of close processing. | ||
948 | * | ||
949 | * At a minimum two references should still be held. | ||
950 | */ | ||
923 | static void svc_rdma_detach(struct svc_xprt *xprt) | 951 | static void svc_rdma_detach(struct svc_xprt *xprt) |
924 | { | 952 | { |
925 | struct svcxprt_rdma *rdma = | 953 | struct svcxprt_rdma *rdma = |
926 | container_of(xprt, struct svcxprt_rdma, sc_xprt); | 954 | container_of(xprt, struct svcxprt_rdma, sc_xprt); |
927 | unsigned long flags; | ||
928 | |||
929 | dprintk("svc: svc_rdma_detach(%p)\n", xprt); | 955 | dprintk("svc: svc_rdma_detach(%p)\n", xprt); |
930 | /* | 956 | |
931 | * Shutdown the connection. This will ensure we don't get any | 957 | /* Disconnect and flush posted WQE */ |
932 | * more events from the provider. | ||
933 | */ | ||
934 | rdma_disconnect(rdma->sc_cm_id); | 958 | rdma_disconnect(rdma->sc_cm_id); |
935 | rdma_destroy_id(rdma->sc_cm_id); | ||
936 | 959 | ||
937 | /* We may already be on the DTO list */ | 960 | /* Destroy the QP if present (not a listener) */ |
938 | spin_lock_irqsave(&dto_lock, flags); | 961 | if (rdma->sc_qp && !IS_ERR(rdma->sc_qp)) { |
939 | if (!list_empty(&rdma->sc_dto_q)) | 962 | ib_destroy_qp(rdma->sc_qp); |
940 | list_del_init(&rdma->sc_dto_q); | 963 | svc_xprt_put(xprt); |
941 | spin_unlock_irqrestore(&dto_lock, flags); | 964 | } |
965 | |||
966 | /* Destroy the CM ID */ | ||
967 | rdma_destroy_id(rdma->sc_cm_id); | ||
942 | } | 968 | } |
943 | 969 | ||
944 | static void svc_rdma_free(struct svc_xprt *xprt) | 970 | static void svc_rdma_free(struct svc_xprt *xprt) |
945 | { | 971 | { |
946 | struct svcxprt_rdma *rdma = (struct svcxprt_rdma *)xprt; | 972 | struct svcxprt_rdma *rdma = (struct svcxprt_rdma *)xprt; |
947 | dprintk("svcrdma: svc_rdma_free(%p)\n", rdma); | 973 | dprintk("svcrdma: svc_rdma_free(%p)\n", rdma); |
948 | rdma_destroy_xprt(rdma); | 974 | /* We should only be called from kref_put */ |
949 | kfree(rdma); | 975 | BUG_ON(atomic_read(&xprt->xpt_ref.refcount) != 0); |
950 | } | 976 | if (rdma->sc_sq_cq && !IS_ERR(rdma->sc_sq_cq)) |
951 | 977 | ib_destroy_cq(rdma->sc_sq_cq); | |
952 | static void rdma_destroy_xprt(struct svcxprt_rdma *xprt) | ||
953 | { | ||
954 | if (xprt->sc_qp && !IS_ERR(xprt->sc_qp)) | ||
955 | ib_destroy_qp(xprt->sc_qp); | ||
956 | |||
957 | if (xprt->sc_sq_cq && !IS_ERR(xprt->sc_sq_cq)) | ||
958 | ib_destroy_cq(xprt->sc_sq_cq); | ||
959 | 978 | ||
960 | if (xprt->sc_rq_cq && !IS_ERR(xprt->sc_rq_cq)) | 979 | if (rdma->sc_rq_cq && !IS_ERR(rdma->sc_rq_cq)) |
961 | ib_destroy_cq(xprt->sc_rq_cq); | 980 | ib_destroy_cq(rdma->sc_rq_cq); |
962 | 981 | ||
963 | if (xprt->sc_phys_mr && !IS_ERR(xprt->sc_phys_mr)) | 982 | if (rdma->sc_phys_mr && !IS_ERR(rdma->sc_phys_mr)) |
964 | ib_dereg_mr(xprt->sc_phys_mr); | 983 | ib_dereg_mr(rdma->sc_phys_mr); |
965 | 984 | ||
966 | if (xprt->sc_pd && !IS_ERR(xprt->sc_pd)) | 985 | if (rdma->sc_pd && !IS_ERR(rdma->sc_pd)) |
967 | ib_dealloc_pd(xprt->sc_pd); | 986 | ib_dealloc_pd(rdma->sc_pd); |
968 | 987 | ||
969 | destroy_context_cache(xprt->sc_ctxt_head); | 988 | destroy_context_cache(rdma->sc_ctxt_head); |
989 | kfree(rdma); | ||
970 | } | 990 | } |
971 | 991 | ||
972 | static int svc_rdma_has_wspace(struct svc_xprt *xprt) | 992 | static int svc_rdma_has_wspace(struct svc_xprt *xprt) |
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 74c2f9db2aac..263d04ab2d94 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc | |||
@@ -247,6 +247,10 @@ my ($function, %function_table,%parametertypes,$declaration_purpose); | |||
247 | my ($type,$declaration_name,$return_type); | 247 | my ($type,$declaration_name,$return_type); |
248 | my ($newsection,$newcontents,$prototype,$filelist, $brcount, %source_map); | 248 | my ($newsection,$newcontents,$prototype,$filelist, $brcount, %source_map); |
249 | 249 | ||
250 | if (defined($ENV{'KBUILD_VERBOSE'})) { | ||
251 | $verbose = "$ENV{'KBUILD_VERBOSE'}"; | ||
252 | } | ||
253 | |||
250 | # Generated docbook code is inserted in a template at a point where | 254 | # Generated docbook code is inserted in a template at a point where |
251 | # docbook v3.1 requires a non-zero sequence of RefEntry's; see: | 255 | # docbook v3.1 requires a non-zero sequence of RefEntry's; see: |
252 | # http://www.oasis-open.org/docbook/documentation/reference/html/refentry.html | 256 | # http://www.oasis-open.org/docbook/documentation/reference/html/refentry.html |
diff --git a/security/smack/smack.h b/security/smack/smack.h index a21a0e907ab3..62c1e982849d 100644 --- a/security/smack/smack.h +++ b/security/smack/smack.h | |||
@@ -26,14 +26,6 @@ | |||
26 | #define SMK_MAXLEN 23 | 26 | #define SMK_MAXLEN 23 |
27 | #define SMK_LABELLEN (SMK_MAXLEN+1) | 27 | #define SMK_LABELLEN (SMK_MAXLEN+1) |
28 | 28 | ||
29 | /* | ||
30 | * How many kinds of access are there? | ||
31 | * Here's your answer. | ||
32 | */ | ||
33 | #define SMK_ACCESSDASH '-' | ||
34 | #define SMK_ACCESSLOW "rwxa" | ||
35 | #define SMK_ACCESSKINDS (sizeof(SMK_ACCESSLOW) - 1) | ||
36 | |||
37 | struct superblock_smack { | 29 | struct superblock_smack { |
38 | char *smk_root; | 30 | char *smk_root; |
39 | char *smk_floor; | 31 | char *smk_floor; |
diff --git a/security/smack/smackfs.c b/security/smack/smackfs.c index 358c92c1a153..afe7c9b0732a 100644 --- a/security/smack/smackfs.c +++ b/security/smack/smackfs.c | |||
@@ -81,10 +81,23 @@ static struct semaphore smack_write_sem; | |||
81 | /* | 81 | /* |
82 | * Values for parsing cipso rules | 82 | * Values for parsing cipso rules |
83 | * SMK_DIGITLEN: Length of a digit field in a rule. | 83 | * SMK_DIGITLEN: Length of a digit field in a rule. |
84 | * SMK_CIPSOMEN: Minimum possible cipso rule length. | 84 | * SMK_CIPSOMIN: Minimum possible cipso rule length. |
85 | * SMK_CIPSOMAX: Maximum possible cipso rule length. | ||
85 | */ | 86 | */ |
86 | #define SMK_DIGITLEN 4 | 87 | #define SMK_DIGITLEN 4 |
87 | #define SMK_CIPSOMIN (SMK_MAXLEN + 2 * SMK_DIGITLEN) | 88 | #define SMK_CIPSOMIN (SMK_LABELLEN + 2 * SMK_DIGITLEN) |
89 | #define SMK_CIPSOMAX (SMK_CIPSOMIN + SMACK_CIPSO_MAXCATNUM * SMK_DIGITLEN) | ||
90 | |||
91 | /* | ||
92 | * Values for parsing MAC rules | ||
93 | * SMK_ACCESS: Maximum possible combination of access permissions | ||
94 | * SMK_ACCESSLEN: Maximum length for a rule access field | ||
95 | * SMK_LOADLEN: Smack rule length | ||
96 | */ | ||
97 | #define SMK_ACCESS "rwxa" | ||
98 | #define SMK_ACCESSLEN (sizeof(SMK_ACCESS) - 1) | ||
99 | #define SMK_LOADLEN (SMK_LABELLEN + SMK_LABELLEN + SMK_ACCESSLEN) | ||
100 | |||
88 | 101 | ||
89 | /* | 102 | /* |
90 | * Seq_file read operations for /smack/load | 103 | * Seq_file read operations for /smack/load |
@@ -229,14 +242,10 @@ static void smk_set_access(struct smack_rule *srp) | |||
229 | * The format is exactly: | 242 | * The format is exactly: |
230 | * char subject[SMK_LABELLEN] | 243 | * char subject[SMK_LABELLEN] |
231 | * char object[SMK_LABELLEN] | 244 | * char object[SMK_LABELLEN] |
232 | * char access[SMK_ACCESSKINDS] | 245 | * char access[SMK_ACCESSLEN] |
233 | * | ||
234 | * Anything following is commentary and ignored. | ||
235 | * | 246 | * |
236 | * writes must be SMK_LABELLEN+SMK_LABELLEN+4 bytes. | 247 | * writes must be SMK_LABELLEN+SMK_LABELLEN+SMK_ACCESSLEN bytes. |
237 | */ | 248 | */ |
238 | #define MINIMUM_LOAD (SMK_LABELLEN + SMK_LABELLEN + SMK_ACCESSKINDS) | ||
239 | |||
240 | static ssize_t smk_write_load(struct file *file, const char __user *buf, | 249 | static ssize_t smk_write_load(struct file *file, const char __user *buf, |
241 | size_t count, loff_t *ppos) | 250 | size_t count, loff_t *ppos) |
242 | { | 251 | { |
@@ -253,7 +262,7 @@ static ssize_t smk_write_load(struct file *file, const char __user *buf, | |||
253 | return -EPERM; | 262 | return -EPERM; |
254 | if (*ppos != 0) | 263 | if (*ppos != 0) |
255 | return -EINVAL; | 264 | return -EINVAL; |
256 | if (count < MINIMUM_LOAD) | 265 | if (count != SMK_LOADLEN) |
257 | return -EINVAL; | 266 | return -EINVAL; |
258 | 267 | ||
259 | data = kzalloc(count, GFP_KERNEL); | 268 | data = kzalloc(count, GFP_KERNEL); |
@@ -513,7 +522,7 @@ static ssize_t smk_write_cipso(struct file *file, const char __user *buf, | |||
513 | return -EPERM; | 522 | return -EPERM; |
514 | if (*ppos != 0) | 523 | if (*ppos != 0) |
515 | return -EINVAL; | 524 | return -EINVAL; |
516 | if (count <= SMK_CIPSOMIN) | 525 | if (count < SMK_CIPSOMIN || count > SMK_CIPSOMAX) |
517 | return -EINVAL; | 526 | return -EINVAL; |
518 | 527 | ||
519 | data = kzalloc(count + 1, GFP_KERNEL); | 528 | data = kzalloc(count + 1, GFP_KERNEL); |
@@ -547,7 +556,7 @@ static ssize_t smk_write_cipso(struct file *file, const char __user *buf, | |||
547 | if (ret != 1 || catlen > SMACK_CIPSO_MAXCATNUM) | 556 | if (ret != 1 || catlen > SMACK_CIPSO_MAXCATNUM) |
548 | goto out; | 557 | goto out; |
549 | 558 | ||
550 | if (count <= (SMK_CIPSOMIN + catlen * SMK_DIGITLEN)) | 559 | if (count != (SMK_CIPSOMIN + catlen * SMK_DIGITLEN)) |
551 | goto out; | 560 | goto out; |
552 | 561 | ||
553 | memset(mapcatset, 0, sizeof(mapcatset)); | 562 | memset(mapcatset, 0, sizeof(mapcatset)); |