diff options
325 files changed, 4969 insertions, 4033 deletions
diff --git a/Documentation/acpi/dsdt-override.txt b/Documentation/acpi/dsdt-override.txt index 5008f256a2db..febbb1ba4d23 100644 --- a/Documentation/acpi/dsdt-override.txt +++ b/Documentation/acpi/dsdt-override.txt | |||
@@ -1,15 +1,7 @@ | |||
1 | Linux supports two methods of overriding the BIOS DSDT: | 1 | Linux supports a method of overriding the BIOS DSDT: |
2 | 2 | ||
3 | CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel. | 3 | CONFIG_ACPI_CUSTOM_DSDT builds the image into the kernel. |
4 | 4 | ||
5 | CONFIG_ACPI_CUSTOM_DSDT_INITRD adds the image to the initrd. | 5 | When to use this method is described in detail on the |
6 | |||
7 | When to use these methods is described in detail on the | ||
8 | Linux/ACPI home page: | 6 | Linux/ACPI home page: |
9 | http://www.lesswatts.org/projects/acpi/overridingDSDT.php | 7 | http://www.lesswatts.org/projects/acpi/overridingDSDT.php |
10 | |||
11 | Note that if both options are used, the DSDT supplied | ||
12 | by the INITRD method takes precedence. | ||
13 | |||
14 | Documentation/initramfs-add-dsdt.sh is provided for convenience | ||
15 | for use with the CONFIG_ACPI_CUSTOM_DSDT_INITRD method. | ||
diff --git a/Documentation/acpi/initramfs-add-dsdt.sh b/Documentation/acpi/initramfs-add-dsdt.sh deleted file mode 100755 index 17ef6e838e14..000000000000 --- a/Documentation/acpi/initramfs-add-dsdt.sh +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | #!/bin/bash | ||
2 | # Adds a DSDT file to the initrd (if it's an initramfs) | ||
3 | # first argument is the name of archive | ||
4 | # second argument is the name of the file to add | ||
5 | # The file will be copied as /DSDT.aml | ||
6 | |||
7 | # 20060126: fix "Premature end of file" with some old cpio (Roland Robic) | ||
8 | # 20060205: this time it should really work | ||
9 | |||
10 | # check the arguments | ||
11 | if [ $# -ne 2 ]; then | ||
12 | program_name=$(basename $0) | ||
13 | echo "\ | ||
14 | $program_name: too few arguments | ||
15 | Usage: $program_name initrd-name.img DSDT-to-add.aml | ||
16 | Adds a DSDT file to an initrd (in initramfs format) | ||
17 | |||
18 | initrd-name.img: filename of the initrd in initramfs format | ||
19 | DSDT-to-add.aml: filename of the DSDT file to add | ||
20 | " 1>&2 | ||
21 | exit 1 | ||
22 | fi | ||
23 | |||
24 | # we should check it's an initramfs | ||
25 | |||
26 | tempcpio=$(mktemp -d) | ||
27 | # cleanup on exit, hangup, interrupt, quit, termination | ||
28 | trap 'rm -rf $tempcpio' 0 1 2 3 15 | ||
29 | |||
30 | # extract the archive | ||
31 | gunzip -c "$1" > "$tempcpio"/initramfs.cpio || exit 1 | ||
32 | |||
33 | # copy the DSDT file at the root of the directory so that we can call it "/DSDT.aml" | ||
34 | cp -f "$2" "$tempcpio"/DSDT.aml | ||
35 | |||
36 | # add the file | ||
37 | cd "$tempcpio" | ||
38 | (echo DSDT.aml | cpio --quiet -H newc -o -A -O "$tempcpio"/initramfs.cpio) || exit 1 | ||
39 | cd "$OLDPWD" | ||
40 | |||
41 | # re-compress the archive | ||
42 | gzip -c "$tempcpio"/initramfs.cpio > "$1" | ||
43 | |||
diff --git a/Documentation/fb/cmap_xfbdev.txt b/Documentation/fb/cmap_xfbdev.txt new file mode 100644 index 000000000000..55e1f0a3d2b4 --- /dev/null +++ b/Documentation/fb/cmap_xfbdev.txt | |||
@@ -0,0 +1,53 @@ | |||
1 | Understanding fbdev's cmap | ||
2 | -------------------------- | ||
3 | |||
4 | These notes explain how X's dix layer uses fbdev's cmap structures. | ||
5 | |||
6 | *. example of relevant structures in fbdev as used for a 3-bit grayscale cmap | ||
7 | struct fb_var_screeninfo { | ||
8 | .bits_per_pixel = 8, | ||
9 | .grayscale = 1, | ||
10 | .red = { 4, 3, 0 }, | ||
11 | .green = { 0, 0, 0 }, | ||
12 | .blue = { 0, 0, 0 }, | ||
13 | } | ||
14 | struct fb_fix_screeninfo { | ||
15 | .visual = FB_VISUAL_STATIC_PSEUDOCOLOR, | ||
16 | } | ||
17 | for (i = 0; i < 8; i++) | ||
18 | info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16; | ||
19 | memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8); | ||
20 | memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8); | ||
21 | |||
22 | *. X11 apps do something like the following when trying to use grayscale. | ||
23 | for (i=0; i < 8; i++) { | ||
24 | char colorspec[64]; | ||
25 | memset(colorspec,0,64); | ||
26 | sprintf(colorspec, "rgb:%x/%x/%x", i*36,i*36,i*36); | ||
27 | if (!XParseColor(outputDisplay, testColormap, colorspec, &wantedColor)) | ||
28 | printf("Can't get color %s\n",colorspec); | ||
29 | XAllocColor(outputDisplay, testColormap, &wantedColor); | ||
30 | grays[i] = wantedColor; | ||
31 | } | ||
32 | There's also named equivalents like gray1..x provided you have an rgb.txt. | ||
33 | |||
34 | Somewhere in X's callchain, this results in a call to X code that handles the | ||
35 | colormap. For example, Xfbdev hits the following: | ||
36 | |||
37 | xc-011010/programs/Xserver/dix/colormap.c: | ||
38 | |||
39 | FindBestPixel(pentFirst, size, prgb, channel) | ||
40 | |||
41 | dr = (long) pent->co.local.red - prgb->red; | ||
42 | dg = (long) pent->co.local.green - prgb->green; | ||
43 | db = (long) pent->co.local.blue - prgb->blue; | ||
44 | sq = dr * dr; | ||
45 | UnsignedToBigNum (sq, &sum); | ||
46 | BigNumAdd (&sum, &temp, &sum); | ||
47 | |||
48 | co.local.red are entries that were brought in through FBIOGETCMAP which come | ||
49 | directly from the info->cmap.red that was listed above. The prgb is the rgb | ||
50 | that the app wants to match to. The above code is doing what looks like a least | ||
51 | squares matching function. That's why the cmap entries can't be set to the left | ||
52 | hand side boundaries of a color range. | ||
53 | |||
diff --git a/Documentation/fb/metronomefb.txt b/Documentation/fb/metronomefb.txt new file mode 100644 index 000000000000..b9a2e7b7e838 --- /dev/null +++ b/Documentation/fb/metronomefb.txt | |||
@@ -0,0 +1,38 @@ | |||
1 | Metronomefb | ||
2 | ----------- | ||
3 | Maintained by Jaya Kumar <jayakumar.lkml.gmail.com> | ||
4 | Last revised: Nov 20, 2007 | ||
5 | |||
6 | Metronomefb is a driver for the Metronome display controller. The controller | ||
7 | is from E-Ink Corporation. It is intended to be used to drive the E-Ink | ||
8 | Vizplex display media. E-Ink hosts some details of this controller and the | ||
9 | display media here http://www.e-ink.com/products/matrix/metronome.html . | ||
10 | |||
11 | Metronome is interfaced to the host CPU through the AMLCD interface. The | ||
12 | host CPU generates the control information and the image in a framebuffer | ||
13 | which is then delivered to the AMLCD interface by a host specific method. | ||
14 | Currently, that's implemented for the PXA's LCDC controller. The display and | ||
15 | error status are each pulled through individual GPIOs. | ||
16 | |||
17 | Metronomefb was written for the PXA255/gumstix/lyre combination and | ||
18 | therefore currently has board set specific code in it. If other boards based on | ||
19 | other architectures are available, then the host specific code can be separated | ||
20 | and abstracted out. | ||
21 | |||
22 | Metronomefb requires waveform information which is delivered via the AMLCD | ||
23 | interface to the metronome controller. The waveform information is expected to | ||
24 | be delivered from userspace via the firmware class interface. The waveform file | ||
25 | can be compressed as long as your udev or hotplug script is aware of the need | ||
26 | to uncompress it before delivering it. metronomefb will ask for waveform.wbf | ||
27 | which would typically go into /lib/firmware/waveform.wbf depending on your | ||
28 | udev/hotplug setup. I have only tested with a single waveform file which was | ||
29 | originally labeled 23P01201_60_WT0107_MTC. I do not know what it stands for. | ||
30 | Caution should be exercised when manipulating the waveform as there may be | ||
31 | a possibility that it could have some permanent effects on the display media. | ||
32 | I neither have access to nor know exactly what the waveform does in terms of | ||
33 | the physical media. | ||
34 | |||
35 | Metronomefb uses the deferred IO interface so that it can provide a memory | ||
36 | mappable frame buffer. It has been tested with tinyx (Xfbdev). It is known | ||
37 | to work at this time with xeyes, xclock, xloadimage, xpdf. | ||
38 | |||
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt index c1d1fd0c299b..bf0e3df8e7a1 100644 --- a/Documentation/feature-removal-schedule.txt +++ b/Documentation/feature-removal-schedule.txt | |||
@@ -172,16 +172,6 @@ Who: Len Brown <len.brown@intel.com> | |||
172 | 172 | ||
173 | --------------------------- | 173 | --------------------------- |
174 | 174 | ||
175 | What: ide-tape driver | ||
176 | When: July 2008 | ||
177 | Files: drivers/ide/ide-tape.c | ||
178 | Why: This driver might not have any users anymore and maintaining it for no | ||
179 | reason is an effort no one wants to make. | ||
180 | Who: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>, Borislav Petkov | ||
181 | <petkovbb@googlemail.com> | ||
182 | |||
183 | --------------------------- | ||
184 | |||
185 | What: libata spindown skipping and warning | 175 | What: libata spindown skipping and warning |
186 | When: Dec 2008 | 176 | When: Dec 2008 |
187 | Why: Some halt(8) implementations synchronize caches for and spin | 177 | Why: Some halt(8) implementations synchronize caches for and spin |
diff --git a/Documentation/ide/ide.txt b/Documentation/ide/ide.txt index e3b3425328b6..818676aad45a 100644 --- a/Documentation/ide/ide.txt +++ b/Documentation/ide/ide.txt | |||
@@ -105,7 +105,7 @@ Drives are normally found by auto-probing and/or examining the CMOS/BIOS data. | |||
105 | For really weird situations, the apparent (fdisk) geometry can also be specified | 105 | For really weird situations, the apparent (fdisk) geometry can also be specified |
106 | on the kernel "command line" using LILO. The format of such lines is: | 106 | on the kernel "command line" using LILO. The format of such lines is: |
107 | 107 | ||
108 | hdx=cyls,heads,sects,wpcom,irq | 108 | hdx=cyls,heads,sects |
109 | or hdx=cdrom | 109 | or hdx=cdrom |
110 | 110 | ||
111 | where hdx can be any of hda through hdh, Three values are required | 111 | where hdx can be any of hda through hdh, Three values are required |
@@ -214,9 +214,9 @@ driver using the "options=" keyword to insmod, while replacing any ',' with | |||
214 | Summary of ide driver parameters for kernel command line | 214 | Summary of ide driver parameters for kernel command line |
215 | -------------------------------------------------------- | 215 | -------------------------------------------------------- |
216 | 216 | ||
217 | "hdx=" is recognized for all "x" from "a" to "h", such as "hdc". | 217 | "hdx=" is recognized for all "x" from "a" to "u", such as "hdc". |
218 | 218 | ||
219 | "idex=" is recognized for all "x" from "0" to "3", such as "ide1". | 219 | "idex=" is recognized for all "x" from "0" to "9", such as "ide1". |
220 | 220 | ||
221 | "hdx=noprobe" : drive may be present, but do not probe for it | 221 | "hdx=noprobe" : drive may be present, but do not probe for it |
222 | 222 | ||
@@ -228,13 +228,6 @@ Summary of ide driver parameters for kernel command line | |||
228 | 228 | ||
229 | "hdx=cyl,head,sect" : disk drive is present, with specified geometry | 229 | "hdx=cyl,head,sect" : disk drive is present, with specified geometry |
230 | 230 | ||
231 | "hdx=remap" : remap access of sector 0 to sector 1 (for EZDrive) | ||
232 | |||
233 | "hdx=remap63" : remap the drive: add 63 to all sector numbers | ||
234 | (for DM OnTrack) | ||
235 | |||
236 | "idex=noautotune" : driver will NOT attempt to tune interface speed | ||
237 | |||
238 | "hdx=autotune" : driver will attempt to tune interface speed | 231 | "hdx=autotune" : driver will attempt to tune interface speed |
239 | to the fastest PIO mode supported, | 232 | to the fastest PIO mode supported, |
240 | if possible for this drive only. | 233 | if possible for this drive only. |
@@ -244,10 +237,6 @@ Summary of ide driver parameters for kernel command line | |||
244 | 237 | ||
245 | "hdx=nodma" : disallow DMA | 238 | "hdx=nodma" : disallow DMA |
246 | 239 | ||
247 | "hdx=scsi" : the return of the ide-scsi flag, this is useful for | ||
248 | allowing ide-floppy, ide-tape, and ide-cdrom|writers | ||
249 | to use ide-scsi emulation on a device specific option. | ||
250 | |||
251 | "idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz, | 240 | "idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz, |
252 | where "xx" is between 20 and 66 inclusive, | 241 | where "xx" is between 20 and 66 inclusive, |
253 | used when tuning chipset PIO modes. | 242 | used when tuning chipset PIO modes. |
@@ -282,10 +271,6 @@ Summary of ide driver parameters for kernel command line | |||
282 | 271 | ||
283 | "ide=reverse" : formerly called to pci sub-system, but now local. | 272 | "ide=reverse" : formerly called to pci sub-system, but now local. |
284 | 273 | ||
285 | The following are valid ONLY on ide0, which usually corresponds | ||
286 | to the first ATA interface found on the particular host, and the defaults for | ||
287 | the base,ctl ports must not be altered. | ||
288 | |||
289 | "ide=doubler" : probe/support IDE doublers on Amiga | 274 | "ide=doubler" : probe/support IDE doublers on Amiga |
290 | 275 | ||
291 | There may be more options than shown -- use the source, Luke! | 276 | There may be more options than shown -- use the source, Luke! |
diff --git a/Documentation/input/notifier.txt b/Documentation/input/notifier.txt new file mode 100644 index 000000000000..95172ca6f3d2 --- /dev/null +++ b/Documentation/input/notifier.txt | |||
@@ -0,0 +1,52 @@ | |||
1 | Keyboard notifier | ||
2 | |||
3 | One can use register_keyboard_notifier to get called back on keyboard | ||
4 | events (see kbd_keycode() function for details). The passed structure is | ||
5 | keyboard_notifier_param: | ||
6 | |||
7 | - 'vc' always provide the VC for which the keyboard event applies; | ||
8 | - 'down' is 1 for a key press event, 0 for a key release; | ||
9 | - 'shift' is the current modifier state, mask bit indexes are KG_*; | ||
10 | - 'value' depends on the type of event. | ||
11 | |||
12 | - KBD_KEYCODE events are always sent before other events, value is the keycode. | ||
13 | - KBD_UNBOUND_KEYCODE events are sent if the keycode is not bound to a keysym. | ||
14 | value is the keycode. | ||
15 | - KBD_UNICODE events are sent if the keycode -> keysym translation produced a | ||
16 | unicode character. value is the unicode value. | ||
17 | - KBD_KEYSYM events are sent if the keycode -> keysym translation produced a | ||
18 | non-unicode character. value is the keysym. | ||
19 | - KBD_POST_KEYSYM events are sent after the treatment of non-unicode keysyms. | ||
20 | That permits one to inspect the resulting LEDs for instance. | ||
21 | |||
22 | For each kind of event but the last, the callback may return NOTIFY_STOP in | ||
23 | order to "eat" the event: the notify loop is stopped and the keyboard event is | ||
24 | dropped. | ||
25 | |||
26 | In a rough C snippet, we have: | ||
27 | |||
28 | kbd_keycode(keycode) { | ||
29 | ... | ||
30 | params.value = keycode; | ||
31 | if (notifier_call_chain(KBD_KEYCODE,¶ms) == NOTIFY_STOP) | ||
32 | || !bound) { | ||
33 | notifier_call_chain(KBD_UNBOUND_KEYCODE,¶ms); | ||
34 | return; | ||
35 | } | ||
36 | |||
37 | if (unicode) { | ||
38 | param.value = unicode; | ||
39 | if (notifier_call_chain(KBD_UNICODE,¶ms) == NOTIFY_STOP) | ||
40 | return; | ||
41 | emit unicode; | ||
42 | return; | ||
43 | } | ||
44 | |||
45 | params.value = keysym; | ||
46 | if (notifier_call_chain(KBD_KEYSYM,¶ms) == NOTIFY_STOP) | ||
47 | return; | ||
48 | apply keysym; | ||
49 | notifier_call_chain(KBD_POST_KEYSYM,¶ms); | ||
50 | } | ||
51 | |||
52 | NOTE: This notifier is usually called from interrupt context. | ||
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 49318b99e581..650b0d8aa89b 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -177,9 +177,6 @@ and is between 256 and 4096 characters. It is defined in the file | |||
177 | 177 | ||
178 | acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT | 178 | acpi_no_auto_ssdt [HW,ACPI] Disable automatic loading of SSDT |
179 | 179 | ||
180 | acpi_no_initrd_override [KNL,ACPI] | ||
181 | Disable loading custom ACPI tables from the initramfs | ||
182 | |||
183 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS | 180 | acpi_os_name= [HW,ACPI] Tell ACPI BIOS the name of the OS |
184 | Format: To spoof as Windows 98: ="Microsoft Windows" | 181 | Format: To spoof as Windows 98: ="Microsoft Windows" |
185 | 182 | ||
@@ -735,6 +732,8 @@ and is between 256 and 4096 characters. It is defined in the file | |||
735 | (Don't attempt to blink the leds) | 732 | (Don't attempt to blink the leds) |
736 | i8042.noaux [HW] Don't check for auxiliary (== mouse) port | 733 | i8042.noaux [HW] Don't check for auxiliary (== mouse) port |
737 | i8042.nokbd [HW] Don't check/create keyboard port | 734 | i8042.nokbd [HW] Don't check/create keyboard port |
735 | i8042.noloop [HW] Disable the AUX Loopback command while probing | ||
736 | for the AUX port | ||
738 | i8042.nomux [HW] Don't check presence of an active multiplexing | 737 | i8042.nomux [HW] Don't check presence of an active multiplexing |
739 | controller | 738 | controller |
740 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX | 739 | i8042.nopnp [HW] Don't use ACPIPnP / PnPBIOS to discover KBD/AUX |
diff --git a/Documentation/mca.txt b/Documentation/mca.txt index aabce4ad90f9..510375d4209a 100644 --- a/Documentation/mca.txt +++ b/Documentation/mca.txt | |||
@@ -143,14 +143,7 @@ MCA Device Drivers | |||
143 | 143 | ||
144 | Currently, there are a number of MCA-specific device drivers. | 144 | Currently, there are a number of MCA-specific device drivers. |
145 | 145 | ||
146 | 1) PS/2 ESDI | 146 | 1) PS/2 SCSI |
147 | drivers/block/ps2esdi.c | ||
148 | include/linux/ps2esdi.h | ||
149 | Uses major number 36, and should use /dev files /dev/eda, /dev/edb. | ||
150 | Supports two drives, but only one controller. May use the | ||
151 | command-line args "ed=cyl,head,sec" and "tp720". | ||
152 | |||
153 | 2) PS/2 SCSI | ||
154 | drivers/scsi/ibmmca.c | 147 | drivers/scsi/ibmmca.c |
155 | drivers/scsi/ibmmca.h | 148 | drivers/scsi/ibmmca.h |
156 | The driver for the IBM SCSI subsystem. Includes both integrated | 149 | The driver for the IBM SCSI subsystem. Includes both integrated |
@@ -159,25 +152,25 @@ Currently, there are a number of MCA-specific device drivers. | |||
159 | machine with a front-panel display (i.e. model 95), you can use | 152 | machine with a front-panel display (i.e. model 95), you can use |
160 | "ibmmcascsi=display" to enable a drive activity indicator. | 153 | "ibmmcascsi=display" to enable a drive activity indicator. |
161 | 154 | ||
162 | 3) 3c523 | 155 | 2) 3c523 |
163 | drivers/net/3c523.c | 156 | drivers/net/3c523.c |
164 | drivers/net/3c523.h | 157 | drivers/net/3c523.h |
165 | 3Com 3c523 Etherlink/MC ethernet driver. | 158 | 3Com 3c523 Etherlink/MC ethernet driver. |
166 | 159 | ||
167 | 4) SMC Ultra/MCA and IBM Adapter/A | 160 | 3) SMC Ultra/MCA and IBM Adapter/A |
168 | drivers/net/smc-mca.c | 161 | drivers/net/smc-mca.c |
169 | drivers/net/smc-mca.h | 162 | drivers/net/smc-mca.h |
170 | Driver for the MCA version of the SMC Ultra and various other | 163 | Driver for the MCA version of the SMC Ultra and various other |
171 | OEM'ed and work-alike cards (Elite, Adapter/A, etc). | 164 | OEM'ed and work-alike cards (Elite, Adapter/A, etc). |
172 | 165 | ||
173 | 5) NE/2 | 166 | 4) NE/2 |
174 | driver/net/ne2.c | 167 | driver/net/ne2.c |
175 | driver/net/ne2.h | 168 | driver/net/ne2.h |
176 | The NE/2 is the MCA version of the NE2000. This may not work | 169 | The NE/2 is the MCA version of the NE2000. This may not work |
177 | with clones that have a different adapter id than the original | 170 | with clones that have a different adapter id than the original |
178 | NE/2. | 171 | NE/2. |
179 | 172 | ||
180 | 6) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and | 173 | 5) Future Domain MCS-600/700, OEM'd IBM Fast SCSI Adapter/A and |
181 | Reply Sound Blaster/SCSI (SCSI part) | 174 | Reply Sound Blaster/SCSI (SCSI part) |
182 | Better support for these cards than the driver for ISA. | 175 | Better support for these cards than the driver for ISA. |
183 | Supports multiple cards with IRQ sharing. | 176 | Supports multiple cards with IRQ sharing. |
diff --git a/MAINTAINERS b/MAINTAINERS index 0f95a4a787a6..73883b8bbd76 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -266,6 +266,15 @@ L: linux-acpi@vger.kernel.org | |||
266 | W: http://www.lesswatts.org/projects/acpi/ | 266 | W: http://www.lesswatts.org/projects/acpi/ |
267 | S: Maintained | 267 | S: Maintained |
268 | 268 | ||
269 | AD1889 ALSA SOUND DRIVER | ||
270 | P: Kyle McMartin | ||
271 | M: kyle@parisc-linux.org | ||
272 | P: Thibaut Varene | ||
273 | M: T-Bone@parisc-linux.org | ||
274 | W: http://wiki.parisc-linux.org/AD1889 | ||
275 | L: linux-parisc@vger.kernel.org | ||
276 | S: Maintained | ||
277 | |||
269 | ADM1025 HARDWARE MONITOR DRIVER | 278 | ADM1025 HARDWARE MONITOR DRIVER |
270 | P: Jean Delvare | 279 | P: Jean Delvare |
271 | M: khali@linux-fr.org | 280 | M: khali@linux-fr.org |
@@ -443,7 +452,7 @@ S: Maintained | |||
443 | 452 | ||
444 | ARM/ATMEL AT91RM9200 ARM ARCHITECTURE | 453 | ARM/ATMEL AT91RM9200 ARM ARCHITECTURE |
445 | P: Andrew Victor | 454 | P: Andrew Victor |
446 | M: andrew@sanpeople.com | 455 | M: linux@maxim.org.za |
447 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | 456 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) |
448 | W: http://maxim.org.za/at91_26.html | 457 | W: http://maxim.org.za/at91_26.html |
449 | S: Maintained | 458 | S: Maintained |
@@ -871,7 +880,7 @@ P: Marcel Holtmann | |||
871 | M: marcel@holtmann.org | 880 | M: marcel@holtmann.org |
872 | P: Maxim Krasnyansky | 881 | P: Maxim Krasnyansky |
873 | M: maxk@qualcomm.com | 882 | M: maxk@qualcomm.com |
874 | L: bluez-devel@lists.sf.net | 883 | L: linux-bluetooth@vger.kernel.org |
875 | W: http://bluez.sf.net | 884 | W: http://bluez.sf.net |
876 | W: http://www.bluez.org | 885 | W: http://www.bluez.org |
877 | W: http://www.holtmann.org/linux/bluetooth/ | 886 | W: http://www.holtmann.org/linux/bluetooth/ |
@@ -2926,9 +2935,9 @@ S: Maintained | |||
2926 | 2935 | ||
2927 | ORACLE CLUSTER FILESYSTEM 2 (OCFS2) | 2936 | ORACLE CLUSTER FILESYSTEM 2 (OCFS2) |
2928 | P: Mark Fasheh | 2937 | P: Mark Fasheh |
2929 | M: mark.fasheh@oracle.com | 2938 | M: mfasheh@suse.com |
2930 | P: Kurt Hackel | 2939 | P: Joel Becker |
2931 | M: kurt.hackel@oracle.com | 2940 | M: joel.becker@oracle.com |
2932 | L: ocfs2-devel@oss.oracle.com | 2941 | L: ocfs2-devel@oss.oracle.com |
2933 | W: http://oss.oracle.com/projects/ocfs2/ | 2942 | W: http://oss.oracle.com/projects/ocfs2/ |
2934 | S: Supported | 2943 | S: Supported |
@@ -1,7 +1,7 @@ | |||
1 | VERSION = 2 | 1 | VERSION = 2 |
2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
3 | SUBLEVEL = 25 | 3 | SUBLEVEL = 25 |
4 | EXTRAVERSION = -rc5 | 4 | EXTRAVERSION = -rc6 |
5 | NAME = Funky Weasel is Jiggy wit it | 5 | NAME = Funky Weasel is Jiggy wit it |
6 | 6 | ||
7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 955fc53c1c01..4039a133006e 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig | |||
@@ -469,6 +469,7 @@ config ARCH_OMAP | |||
469 | bool "TI OMAP" | 469 | bool "TI OMAP" |
470 | select GENERIC_GPIO | 470 | select GENERIC_GPIO |
471 | select GENERIC_TIME | 471 | select GENERIC_TIME |
472 | select GENERIC_CLOCKEVENTS | ||
472 | help | 473 | help |
473 | Support for TI's OMAP platform (OMAP1 and OMAP2). | 474 | Support for TI's OMAP platform (OMAP1 and OMAP2). |
474 | 475 | ||
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c index 54cdf1aeefc3..ef2f86a5e78a 100644 --- a/arch/arm/kernel/signal.c +++ b/arch/arm/kernel/signal.c | |||
@@ -26,8 +26,8 @@ | |||
26 | /* | 26 | /* |
27 | * For ARM syscalls, we encode the syscall number into the instruction. | 27 | * For ARM syscalls, we encode the syscall number into the instruction. |
28 | */ | 28 | */ |
29 | #define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)) | 29 | #define SWI_SYS_SIGRETURN (0xef000000|(__NR_sigreturn)|(__NR_OABI_SYSCALL_BASE)) |
30 | #define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)) | 30 | #define SWI_SYS_RT_SIGRETURN (0xef000000|(__NR_rt_sigreturn)|(__NR_OABI_SYSCALL_BASE)) |
31 | 31 | ||
32 | /* | 32 | /* |
33 | * With EABI, the syscall number has to be loaded into r7. | 33 | * With EABI, the syscall number has to be loaded into r7. |
diff --git a/arch/arm/mach-iop32x/glantank.c b/arch/arm/mach-iop32x/glantank.c index 74c65ce221de..d2a7b04f1cb0 100644 --- a/arch/arm/mach-iop32x/glantank.c +++ b/arch/arm/mach-iop32x/glantank.c | |||
@@ -14,8 +14,10 @@ | |||
14 | 14 | ||
15 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/f75375s.h> | ||
17 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
18 | #include <linux/pci.h> | 19 | #include <linux/pci.h> |
20 | #include <linux/pm.h> | ||
19 | #include <linux/string.h> | 21 | #include <linux/string.h> |
20 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
21 | #include <linux/serial_core.h> | 23 | #include <linux/serial_core.h> |
@@ -167,11 +169,21 @@ static struct platform_device glantank_serial_device = { | |||
167 | .resource = &glantank_uart_resource, | 169 | .resource = &glantank_uart_resource, |
168 | }; | 170 | }; |
169 | 171 | ||
172 | static struct f75375s_platform_data glantank_f75375s = { | ||
173 | .pwm = { 255, 255 }, | ||
174 | .pwm_enable = { 0, 0 }, | ||
175 | }; | ||
176 | |||
170 | static struct i2c_board_info __initdata glantank_i2c_devices[] = { | 177 | static struct i2c_board_info __initdata glantank_i2c_devices[] = { |
171 | { | 178 | { |
172 | I2C_BOARD_INFO("rtc-rs5c372", 0x32), | 179 | I2C_BOARD_INFO("rtc-rs5c372", 0x32), |
173 | .type = "rs5c372a", | 180 | .type = "rs5c372a", |
174 | }, | 181 | }, |
182 | { | ||
183 | I2C_BOARD_INFO("f75375", 0x2e), | ||
184 | .type = "f75375", | ||
185 | .platform_data = &glantank_f75375s, | ||
186 | }, | ||
175 | }; | 187 | }; |
176 | 188 | ||
177 | static void glantank_power_off(void) | 189 | static void glantank_power_off(void) |
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index 237651ebae5d..a4f8b2055437 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c | |||
@@ -132,13 +132,20 @@ static inline void omap_mpu_timer_start(int nr, unsigned long load_val, | |||
132 | timer->cntl = timerflags; | 132 | timer->cntl = timerflags; |
133 | } | 133 | } |
134 | 134 | ||
135 | static inline void omap_mpu_timer_stop(int nr) | ||
136 | { | ||
137 | volatile omap_mpu_timer_regs_t* timer = omap_mpu_timer_base(nr); | ||
138 | |||
139 | timer->cntl &= ~MPU_TIMER_ST; | ||
140 | } | ||
141 | |||
135 | /* | 142 | /* |
136 | * --------------------------------------------------------------------------- | 143 | * --------------------------------------------------------------------------- |
137 | * MPU timer 1 ... count down to zero, interrupt, reload | 144 | * MPU timer 1 ... count down to zero, interrupt, reload |
138 | * --------------------------------------------------------------------------- | 145 | * --------------------------------------------------------------------------- |
139 | */ | 146 | */ |
140 | static int omap_mpu_set_next_event(unsigned long cycles, | 147 | static int omap_mpu_set_next_event(unsigned long cycles, |
141 | struct clock_event_device *evt) | 148 | struct clock_event_device *evt) |
142 | { | 149 | { |
143 | omap_mpu_timer_start(0, cycles, 0); | 150 | omap_mpu_timer_start(0, cycles, 0); |
144 | return 0; | 151 | return 0; |
@@ -152,6 +159,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode, | |||
152 | omap_mpu_set_autoreset(0); | 159 | omap_mpu_set_autoreset(0); |
153 | break; | 160 | break; |
154 | case CLOCK_EVT_MODE_ONESHOT: | 161 | case CLOCK_EVT_MODE_ONESHOT: |
162 | omap_mpu_timer_stop(0); | ||
155 | omap_mpu_remove_autoreset(0); | 163 | omap_mpu_remove_autoreset(0); |
156 | break; | 164 | break; |
157 | case CLOCK_EVT_MODE_UNUSED: | 165 | case CLOCK_EVT_MODE_UNUSED: |
@@ -163,7 +171,7 @@ static void omap_mpu_set_mode(enum clock_event_mode mode, | |||
163 | 171 | ||
164 | static struct clock_event_device clockevent_mpu_timer1 = { | 172 | static struct clock_event_device clockevent_mpu_timer1 = { |
165 | .name = "mpu_timer1", | 173 | .name = "mpu_timer1", |
166 | .features = CLOCK_EVT_FEAT_PERIODIC, CLOCK_EVT_FEAT_ONESHOT, | 174 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, |
167 | .shift = 32, | 175 | .shift = 32, |
168 | .set_next_event = omap_mpu_set_next_event, | 176 | .set_next_event = omap_mpu_set_next_event, |
169 | .set_mode = omap_mpu_set_mode, | 177 | .set_mode = omap_mpu_set_mode, |
diff --git a/arch/arm/mm/proc-xscale.S b/arch/arm/mm/proc-xscale.S index c156ddab9a2d..016690b9d564 100644 --- a/arch/arm/mm/proc-xscale.S +++ b/arch/arm/mm/proc-xscale.S | |||
@@ -114,6 +114,10 @@ clean_addr: .word CLEAN_ADDR | |||
114 | * Nothing too exciting at the moment | 114 | * Nothing too exciting at the moment |
115 | */ | 115 | */ |
116 | ENTRY(cpu_xscale_proc_init) | 116 | ENTRY(cpu_xscale_proc_init) |
117 | @ enable write buffer coalescing. Some bootloader disable it | ||
118 | mrc p15, 0, r1, c1, c0, 1 | ||
119 | bic r1, r1, #1 | ||
120 | mcr p15, 0, r1, c1, c0, 1 | ||
117 | mov pc, lr | 121 | mov pc, lr |
118 | 122 | ||
119 | /* | 123 | /* |
diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig index c1f7e5a819a3..b917206ee906 100644 --- a/arch/arm/plat-omap/Kconfig +++ b/arch/arm/plat-omap/Kconfig | |||
@@ -11,7 +11,6 @@ choice | |||
11 | 11 | ||
12 | config ARCH_OMAP1 | 12 | config ARCH_OMAP1 |
13 | bool "TI OMAP1" | 13 | bool "TI OMAP1" |
14 | select GENERIC_CLOCKEVENTS | ||
15 | 14 | ||
16 | config ARCH_OMAP2 | 15 | config ARCH_OMAP2 |
17 | bool "TI OMAP2" | 16 | bool "TI OMAP2" |
diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile index ce17df31b845..8f56c255d1ee 100644 --- a/arch/arm/plat-omap/Makefile +++ b/arch/arm/plat-omap/Makefile | |||
@@ -14,9 +14,14 @@ obj-$(CONFIG_OMAP_32K_TIMER) += timer32k.o | |||
14 | # OCPI interconnect support for 1710, 1610 and 5912 | 14 | # OCPI interconnect support for 1710, 1610 and 5912 |
15 | obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o | 15 | obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o |
16 | 16 | ||
17 | obj-$(CONFIG_OMAP_MCBSP) += mcbsp.o | ||
17 | 18 | ||
18 | obj-$(CONFIG_CPU_FREQ) += cpu-omap.o | 19 | obj-$(CONFIG_CPU_FREQ) += cpu-omap.o |
19 | obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o | 20 | obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o |
20 | obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o | 21 | obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o |
21 | obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o | 22 | obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o |
22 | obj-$(CONFIG_I2C_OMAP) += i2c.o | 23 | obj-$(CONFIG_I2C_OMAP) += i2c.o |
24 | |||
25 | # OMAP mailbox framework | ||
26 | obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o | ||
27 | |||
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 91004a3c4794..793740686be2 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -1020,12 +1020,12 @@ static void create_dma_lch_chain(int lch_head, int lch_queue) | |||
1020 | } | 1020 | } |
1021 | 1021 | ||
1022 | w = OMAP_DMA_CLNK_CTRL_REG(lch_head); | 1022 | w = OMAP_DMA_CLNK_CTRL_REG(lch_head); |
1023 | w &= ~(0x0f); | 1023 | w &= ~(0x1f); |
1024 | w |= lch_queue; | 1024 | w |= lch_queue; |
1025 | OMAP_DMA_CLNK_CTRL_REG(lch_head) = w; | 1025 | OMAP_DMA_CLNK_CTRL_REG(lch_head) = w; |
1026 | 1026 | ||
1027 | w = OMAP_DMA_CLNK_CTRL_REG(lch_queue); | 1027 | w = OMAP_DMA_CLNK_CTRL_REG(lch_queue); |
1028 | w &= ~(0x0f); | 1028 | w &= ~(0x1f); |
1029 | w |= (dma_chan[lch_queue].next_linked_ch); | 1029 | w |= (dma_chan[lch_queue].next_linked_ch); |
1030 | OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w; | 1030 | OMAP_DMA_CLNK_CTRL_REG(lch_queue) = w; |
1031 | } | 1031 | } |
@@ -1248,7 +1248,7 @@ EXPORT_SYMBOL(omap_dma_chain_status); | |||
1248 | * @param frame_count | 1248 | * @param frame_count |
1249 | * @param callbk_data - channel callback parameter data. | 1249 | * @param callbk_data - channel callback parameter data. |
1250 | * | 1250 | * |
1251 | * @return - Success : start_dma status | 1251 | * @return - Success : 0 |
1252 | * Failure: -EINVAL/-EBUSY | 1252 | * Failure: -EINVAL/-EBUSY |
1253 | */ | 1253 | */ |
1254 | int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start, | 1254 | int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start, |
@@ -1367,7 +1367,7 @@ int omap_dma_chain_a_transfer(int chain_id, int src_start, int dest_start, | |||
1367 | dma_chan[lch].flags |= OMAP_DMA_ACTIVE; | 1367 | dma_chan[lch].flags |= OMAP_DMA_ACTIVE; |
1368 | } | 1368 | } |
1369 | } | 1369 | } |
1370 | return start_dma; | 1370 | return 0; |
1371 | } | 1371 | } |
1372 | EXPORT_SYMBOL(omap_dma_chain_a_transfer); | 1372 | EXPORT_SYMBOL(omap_dma_chain_a_transfer); |
1373 | 1373 | ||
@@ -1663,6 +1663,7 @@ static int omap2_dma_handle_ch(int ch) | |||
1663 | if (!status) { | 1663 | if (!status) { |
1664 | if (printk_ratelimit()) | 1664 | if (printk_ratelimit()) |
1665 | printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch); | 1665 | printk(KERN_WARNING "Spurious DMA IRQ for lch %d\n", ch); |
1666 | omap_writel(1 << ch, OMAP_DMA4_IRQSTATUS_L0); | ||
1666 | return 0; | 1667 | return 0; |
1667 | } | 1668 | } |
1668 | if (unlikely(dma_chan[ch].dev_id == -1)) { | 1669 | if (unlikely(dma_chan[ch].dev_id == -1)) { |
diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c index 66a1455595f4..8c78e4e57b5c 100644 --- a/arch/arm/plat-omap/gpio.c +++ b/arch/arm/plat-omap/gpio.c | |||
@@ -1134,10 +1134,9 @@ static void gpio_mask_irq(unsigned int irq) | |||
1134 | static void gpio_unmask_irq(unsigned int irq) | 1134 | static void gpio_unmask_irq(unsigned int irq) |
1135 | { | 1135 | { |
1136 | unsigned int gpio = irq - IH_GPIO_BASE; | 1136 | unsigned int gpio = irq - IH_GPIO_BASE; |
1137 | unsigned int gpio_idx = get_gpio_index(gpio); | ||
1138 | struct gpio_bank *bank = get_irq_chip_data(irq); | 1137 | struct gpio_bank *bank = get_irq_chip_data(irq); |
1139 | 1138 | ||
1140 | _set_gpio_irqenable(bank, gpio_idx, 1); | 1139 | _set_gpio_irqenable(bank, gpio, 1); |
1141 | } | 1140 | } |
1142 | 1141 | ||
1143 | static struct irq_chip gpio_irq_chip = { | 1142 | static struct irq_chip gpio_irq_chip = { |
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile index e574de4efb36..5ddad7bd60ac 100644 --- a/arch/parisc/Makefile +++ b/arch/parisc/Makefile | |||
@@ -16,6 +16,9 @@ | |||
16 | # Modified for PA-RISC Linux by Paul Lahaie, Alex deVries, | 16 | # Modified for PA-RISC Linux by Paul Lahaie, Alex deVries, |
17 | # Mike Shaver, Helge Deller and Martin K. Petersen | 17 | # Mike Shaver, Helge Deller and Martin K. Petersen |
18 | # | 18 | # |
19 | |||
20 | KBUILD_DEFCONFIG := default_defconfig | ||
21 | |||
19 | NM = sh $(srctree)/arch/parisc/nm | 22 | NM = sh $(srctree)/arch/parisc/nm |
20 | CHECKFLAGS += -D__hppa__=1 | 23 | CHECKFLAGS += -D__hppa__=1 |
21 | 24 | ||
diff --git a/arch/parisc/defconfig b/arch/parisc/configs/default_defconfig index 448a757b06c6..448a757b06c6 100644 --- a/arch/parisc/defconfig +++ b/arch/parisc/configs/default_defconfig | |||
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c index 4ab83d56974d..7177a6cd1b7f 100644 --- a/arch/parisc/kernel/firmware.c +++ b/arch/parisc/kernel/firmware.c | |||
@@ -1080,6 +1080,9 @@ void pdc_io_reset_devices(void) | |||
1080 | spin_unlock_irqrestore(&pdc_lock, flags); | 1080 | spin_unlock_irqrestore(&pdc_lock, flags); |
1081 | } | 1081 | } |
1082 | 1082 | ||
1083 | /* locked by pdc_console_lock */ | ||
1084 | static int __attribute__((aligned(8))) iodc_retbuf[32]; | ||
1085 | static char __attribute__((aligned(64))) iodc_dbuf[4096]; | ||
1083 | 1086 | ||
1084 | /** | 1087 | /** |
1085 | * pdc_iodc_print - Console print using IODC. | 1088 | * pdc_iodc_print - Console print using IODC. |
@@ -1091,24 +1094,20 @@ void pdc_io_reset_devices(void) | |||
1091 | * Since the HP console requires CR+LF to perform a 'newline', we translate | 1094 | * Since the HP console requires CR+LF to perform a 'newline', we translate |
1092 | * "\n" to "\r\n". | 1095 | * "\n" to "\r\n". |
1093 | */ | 1096 | */ |
1094 | int pdc_iodc_print(unsigned char *str, unsigned count) | 1097 | int pdc_iodc_print(const unsigned char *str, unsigned count) |
1095 | { | 1098 | { |
1096 | /* XXX Should we spinlock posx usage */ | ||
1097 | static int posx; /* for simple TAB-Simulation... */ | 1099 | static int posx; /* for simple TAB-Simulation... */ |
1098 | int __attribute__((aligned(8))) iodc_retbuf[32]; | ||
1099 | char __attribute__((aligned(64))) iodc_dbuf[4096]; | ||
1100 | unsigned int i; | 1100 | unsigned int i; |
1101 | unsigned long flags; | 1101 | unsigned long flags; |
1102 | 1102 | ||
1103 | memset(iodc_dbuf, 0, 4096); | 1103 | for (i = 0; i < count && i < 79;) { |
1104 | for (i = 0; i < count && i < 2048;) { | ||
1105 | switch(str[i]) { | 1104 | switch(str[i]) { |
1106 | case '\n': | 1105 | case '\n': |
1107 | iodc_dbuf[i+0] = '\r'; | 1106 | iodc_dbuf[i+0] = '\r'; |
1108 | iodc_dbuf[i+1] = '\n'; | 1107 | iodc_dbuf[i+1] = '\n'; |
1109 | i += 2; | 1108 | i += 2; |
1110 | posx = 0; | 1109 | posx = 0; |
1111 | break; | 1110 | goto print; |
1112 | case '\t': | 1111 | case '\t': |
1113 | while (posx & 7) { | 1112 | while (posx & 7) { |
1114 | iodc_dbuf[i] = ' '; | 1113 | iodc_dbuf[i] = ' '; |
@@ -1124,6 +1123,16 @@ int pdc_iodc_print(unsigned char *str, unsigned count) | |||
1124 | } | 1123 | } |
1125 | } | 1124 | } |
1126 | 1125 | ||
1126 | /* if we're at the end of line, and not already inserting a newline, | ||
1127 | * insert one anyway. iodc console doesn't claim to support >79 char | ||
1128 | * lines. don't account for this in the return value. | ||
1129 | */ | ||
1130 | if (i == 79 && iodc_dbuf[i-1] != '\n') { | ||
1131 | iodc_dbuf[i+0] = '\r'; | ||
1132 | iodc_dbuf[i+1] = '\n'; | ||
1133 | } | ||
1134 | |||
1135 | print: | ||
1127 | spin_lock_irqsave(&pdc_lock, flags); | 1136 | spin_lock_irqsave(&pdc_lock, flags); |
1128 | real32_call(PAGE0->mem_cons.iodc_io, | 1137 | real32_call(PAGE0->mem_cons.iodc_io, |
1129 | (unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT, | 1138 | (unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT, |
@@ -1142,11 +1151,9 @@ int pdc_iodc_print(unsigned char *str, unsigned count) | |||
1142 | */ | 1151 | */ |
1143 | int pdc_iodc_getc(void) | 1152 | int pdc_iodc_getc(void) |
1144 | { | 1153 | { |
1145 | unsigned long flags; | ||
1146 | static int __attribute__((aligned(8))) iodc_retbuf[32]; | ||
1147 | static char __attribute__((aligned(64))) iodc_dbuf[4096]; | ||
1148 | int ch; | 1154 | int ch; |
1149 | int status; | 1155 | int status; |
1156 | unsigned long flags; | ||
1150 | 1157 | ||
1151 | /* Bail if no console input device. */ | 1158 | /* Bail if no console input device. */ |
1152 | if (!PAGE0->mem_kbd.iodc_io) | 1159 | if (!PAGE0->mem_kbd.iodc_io) |
diff --git a/arch/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c index 84b9611a9228..f48a640b55fb 100644 --- a/arch/parisc/kernel/hardware.c +++ b/arch/parisc/kernel/hardware.c | |||
@@ -274,7 +274,18 @@ static struct hp_hardware hp_hardware_list[] __devinitdata = { | |||
274 | {HPHW_NPROC,0x887,0x4,0x91,"Storm Peak Slow"}, | 274 | {HPHW_NPROC,0x887,0x4,0x91,"Storm Peak Slow"}, |
275 | {HPHW_NPROC,0x888,0x4,0x91,"Storm Peak Fast DC-"}, | 275 | {HPHW_NPROC,0x888,0x4,0x91,"Storm Peak Fast DC-"}, |
276 | {HPHW_NPROC,0x889,0x4,0x91,"Storm Peak Fast"}, | 276 | {HPHW_NPROC,0x889,0x4,0x91,"Storm Peak Fast"}, |
277 | {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak"}, | 277 | {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak Slow"}, |
278 | {HPHW_NPROC,0x88C,0x4,0x91,"Orca Mako+"}, | ||
279 | {HPHW_NPROC,0x88D,0x4,0x91,"Rainier/Medel Mako+ Slow"}, | ||
280 | {HPHW_NPROC,0x88E,0x4,0x91,"Rainier/Medel Mako+ Fast"}, | ||
281 | {HPHW_NPROC,0x894,0x4,0x91,"Mt. Hamilton Fast Mako+"}, | ||
282 | {HPHW_NPROC,0x895,0x4,0x91,"Storm Peak Slow Mako+"}, | ||
283 | {HPHW_NPROC,0x896,0x4,0x91,"Storm Peak Fast Mako+"}, | ||
284 | {HPHW_NPROC,0x897,0x4,0x91,"Storm Peak DC- Slow Mako+"}, | ||
285 | {HPHW_NPROC,0x898,0x4,0x91,"Storm Peak DC- Fast Mako+"}, | ||
286 | {HPHW_NPROC,0x899,0x4,0x91,"Mt. Hamilton Slow Mako+"}, | ||
287 | {HPHW_NPROC,0x89B,0x4,0x91,"Crestone Peak Mako+ Slow"}, | ||
288 | {HPHW_NPROC,0x89C,0x4,0x91,"Crestone Peak Mako+ Fast"}, | ||
278 | {HPHW_A_DIRECT, 0x004, 0x0000D, 0x00, "Arrakis MUX"}, | 289 | {HPHW_A_DIRECT, 0x004, 0x0000D, 0x00, "Arrakis MUX"}, |
279 | {HPHW_A_DIRECT, 0x005, 0x0000D, 0x00, "Dyun Kiuh MUX"}, | 290 | {HPHW_A_DIRECT, 0x005, 0x0000D, 0x00, "Dyun Kiuh MUX"}, |
280 | {HPHW_A_DIRECT, 0x006, 0x0000D, 0x00, "Baat Kiuh AP/MUX (40299B)"}, | 291 | {HPHW_A_DIRECT, 0x006, 0x0000D, 0x00, "Baat Kiuh AP/MUX (40299B)"}, |
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S index a7b8859488bb..ec2482dc1beb 100644 --- a/arch/parisc/kernel/head.S +++ b/arch/parisc/kernel/head.S | |||
@@ -20,10 +20,11 @@ | |||
20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
21 | 21 | ||
22 | #include <linux/linkage.h> | 22 | #include <linux/linkage.h> |
23 | #include <linux/init.h> | ||
23 | 24 | ||
24 | .level LEVEL | 25 | .level LEVEL |
25 | 26 | ||
26 | .data | 27 | __INITDATA |
27 | ENTRY(boot_args) | 28 | ENTRY(boot_args) |
28 | .word 0 /* arg0 */ | 29 | .word 0 /* arg0 */ |
29 | .word 0 /* arg1 */ | 30 | .word 0 /* arg1 */ |
@@ -31,7 +32,7 @@ ENTRY(boot_args) | |||
31 | .word 0 /* arg3 */ | 32 | .word 0 /* arg3 */ |
32 | END(boot_args) | 33 | END(boot_args) |
33 | 34 | ||
34 | .text | 35 | .section .text.head |
35 | .align 4 | 36 | .align 4 |
36 | .import init_thread_union,data | 37 | .import init_thread_union,data |
37 | .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ | 38 | .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ |
@@ -343,7 +344,7 @@ smp_slave_stext: | |||
343 | ENDPROC(stext) | 344 | ENDPROC(stext) |
344 | 345 | ||
345 | #ifndef CONFIG_64BIT | 346 | #ifndef CONFIG_64BIT |
346 | .data | 347 | .section .data.read_mostly |
347 | 348 | ||
348 | .align 4 | 349 | .align 4 |
349 | .export $global$,data | 350 | .export $global$,data |
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c index 33b1f84441b1..ccb68090781e 100644 --- a/arch/parisc/kernel/pdc_cons.c +++ b/arch/parisc/kernel/pdc_cons.c | |||
@@ -52,28 +52,30 @@ | |||
52 | #include <linux/tty.h> | 52 | #include <linux/tty.h> |
53 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ | 53 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ |
54 | 54 | ||
55 | static spinlock_t pdc_console_lock = SPIN_LOCK_UNLOCKED; | ||
55 | 56 | ||
56 | static void pdc_console_write(struct console *co, const char *s, unsigned count) | 57 | static void pdc_console_write(struct console *co, const char *s, unsigned count) |
57 | { | 58 | { |
58 | pdc_iodc_print(s, count); | 59 | int i = 0; |
60 | unsigned long flags; | ||
61 | |||
62 | spin_lock_irqsave(&pdc_console_lock, flags); | ||
63 | do { | ||
64 | i += pdc_iodc_print(s + i, count - i); | ||
65 | } while (i < count); | ||
66 | spin_unlock_irqrestore(&pdc_console_lock, flags); | ||
59 | } | 67 | } |
60 | 68 | ||
61 | void pdc_printf(const char *fmt, ...) | 69 | int pdc_console_poll_key(struct console *co) |
62 | { | 70 | { |
63 | va_list args; | 71 | int c; |
64 | char buf[1024]; | 72 | unsigned long flags; |
65 | int i, len; | ||
66 | |||
67 | va_start(args, fmt); | ||
68 | len = vscnprintf(buf, sizeof(buf), fmt, args); | ||
69 | va_end(args); | ||
70 | 73 | ||
71 | pdc_iodc_print(buf, len); | 74 | spin_lock_irqsave(&pdc_console_lock, flags); |
72 | } | 75 | c = pdc_iodc_getc(); |
76 | spin_unlock_irqrestore(&pdc_console_lock, flags); | ||
73 | 77 | ||
74 | int pdc_console_poll_key(struct console *co) | 78 | return c; |
75 | { | ||
76 | return pdc_iodc_getc(); | ||
77 | } | 79 | } |
78 | 80 | ||
79 | static int pdc_console_setup(struct console *co, char *options) | 81 | static int pdc_console_setup(struct console *co, char *options) |
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S index 117438e9eb2a..6b5ac38f5a99 100644 --- a/arch/parisc/kernel/syscall_table.S +++ b/arch/parisc/kernel/syscall_table.S | |||
@@ -401,9 +401,12 @@ | |||
401 | ENTRY_COMP(kexec_load) /* 300 */ | 401 | ENTRY_COMP(kexec_load) /* 300 */ |
402 | ENTRY_COMP(utimensat) | 402 | ENTRY_COMP(utimensat) |
403 | ENTRY_COMP(signalfd) | 403 | ENTRY_COMP(signalfd) |
404 | ENTRY_COMP(timerfd) | 404 | ENTRY_SAME(ni_syscall) /* was timerfd */ |
405 | ENTRY_SAME(eventfd) | 405 | ENTRY_SAME(eventfd) |
406 | ENTRY_COMP(fallocate) /* 305 */ | 406 | ENTRY_COMP(fallocate) /* 305 */ |
407 | ENTRY_SAME(timerfd_create) | ||
408 | ENTRY_COMP(timerfd_settime) | ||
409 | ENTRY_COMP(timerfd_gettime) | ||
407 | 410 | ||
408 | /* Nothing yet */ | 411 | /* Nothing yet */ |
409 | 412 | ||
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index 99fd56939afa..9dc6dc42f9cf 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -51,6 +51,9 @@ | |||
51 | DEFINE_SPINLOCK(pa_dbit_lock); | 51 | DEFINE_SPINLOCK(pa_dbit_lock); |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | void parisc_show_stack(struct task_struct *t, unsigned long *sp, | ||
55 | struct pt_regs *regs); | ||
56 | |||
54 | static int printbinary(char *buf, unsigned long x, int nbits) | 57 | static int printbinary(char *buf, unsigned long x, int nbits) |
55 | { | 58 | { |
56 | unsigned long mask = 1UL << (nbits - 1); | 59 | unsigned long mask = 1UL << (nbits - 1); |
@@ -148,6 +151,8 @@ void show_regs(struct pt_regs *regs) | |||
148 | print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]); | 151 | print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]); |
149 | printk(level); | 152 | printk(level); |
150 | print_symbol(" RP(r2): %s\n", regs->gr[2]); | 153 | print_symbol(" RP(r2): %s\n", regs->gr[2]); |
154 | |||
155 | parisc_show_stack(current, NULL, regs); | ||
151 | } | 156 | } |
152 | 157 | ||
153 | 158 | ||
@@ -181,11 +186,19 @@ static void do_show_stack(struct unwind_frame_info *info) | |||
181 | printk("\n"); | 186 | printk("\n"); |
182 | } | 187 | } |
183 | 188 | ||
184 | void show_stack(struct task_struct *task, unsigned long *s) | 189 | void parisc_show_stack(struct task_struct *task, unsigned long *sp, |
190 | struct pt_regs *regs) | ||
185 | { | 191 | { |
186 | struct unwind_frame_info info; | 192 | struct unwind_frame_info info; |
193 | struct task_struct *t; | ||
194 | |||
195 | t = task ? task : current; | ||
196 | if (regs) { | ||
197 | unwind_frame_init(&info, t, regs); | ||
198 | goto show_stack; | ||
199 | } | ||
187 | 200 | ||
188 | if (!task) { | 201 | if (t == current) { |
189 | unsigned long sp; | 202 | unsigned long sp; |
190 | 203 | ||
191 | HERE: | 204 | HERE: |
@@ -201,12 +214,18 @@ HERE: | |||
201 | unwind_frame_init(&info, current, &r); | 214 | unwind_frame_init(&info, current, &r); |
202 | } | 215 | } |
203 | } else { | 216 | } else { |
204 | unwind_frame_init_from_blocked_task(&info, task); | 217 | unwind_frame_init_from_blocked_task(&info, t); |
205 | } | 218 | } |
206 | 219 | ||
220 | show_stack: | ||
207 | do_show_stack(&info); | 221 | do_show_stack(&info); |
208 | } | 222 | } |
209 | 223 | ||
224 | void show_stack(struct task_struct *t, unsigned long *sp) | ||
225 | { | ||
226 | return parisc_show_stack(t, sp, NULL); | ||
227 | } | ||
228 | |||
210 | int is_valid_bugaddr(unsigned long iaoq) | 229 | int is_valid_bugaddr(unsigned long iaoq) |
211 | { | 230 | { |
212 | return 1; | 231 | return 1; |
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile index 4974d9e56ead..1aded8f759d0 100644 --- a/arch/powerpc/boot/Makefile +++ b/arch/powerpc/boot/Makefile | |||
@@ -253,8 +253,8 @@ image-$(CONFIG_TQM8540) += cuImage.tqm8540 | |||
253 | image-$(CONFIG_TQM8541) += cuImage.tqm8541 | 253 | image-$(CONFIG_TQM8541) += cuImage.tqm8541 |
254 | image-$(CONFIG_TQM8555) += cuImage.tqm8555 | 254 | image-$(CONFIG_TQM8555) += cuImage.tqm8555 |
255 | image-$(CONFIG_TQM8560) += cuImage.tqm8560 | 255 | image-$(CONFIG_TQM8560) += cuImage.tqm8560 |
256 | image-$(CONFIG_SBC8548) += cuImage.tqm8548 | 256 | image-$(CONFIG_SBC8548) += cuImage.sbc8548 |
257 | image-$(CONFIG_SBC8560) += cuImage.tqm8560 | 257 | image-$(CONFIG_SBC8560) += cuImage.sbc8560 |
258 | 258 | ||
259 | # Board ports in arch/powerpc/platform/embedded6xx/Kconfig | 259 | # Board ports in arch/powerpc/platform/embedded6xx/Kconfig |
260 | image-$(CONFIG_STORCENTER) += cuImage.storcenter | 260 | image-$(CONFIG_STORCENTER) += cuImage.storcenter |
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper index d50e498a072b..8f8b8494d62f 100755 --- a/arch/powerpc/boot/wrapper +++ b/arch/powerpc/boot/wrapper | |||
@@ -174,10 +174,10 @@ cuboot*) | |||
174 | *-mpc83*) | 174 | *-mpc83*) |
175 | platformo=$object/cuboot-83xx.o | 175 | platformo=$object/cuboot-83xx.o |
176 | ;; | 176 | ;; |
177 | *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555*) | 177 | *-tqm8541|*-mpc8560*|*-tqm8560|*-tqm8555) |
178 | platformo=$object/cuboot-85xx-cpm2.o | 178 | platformo=$object/cuboot-85xx-cpm2.o |
179 | ;; | 179 | ;; |
180 | *-mpc85*) | 180 | *-mpc85*|*-tqm8540|*-sbc85*) |
181 | platformo=$object/cuboot-85xx.o | 181 | platformo=$object/cuboot-85xx.o |
182 | ;; | 182 | ;; |
183 | esac | 183 | esac |
diff --git a/arch/powerpc/configs/cell_defconfig b/arch/powerpc/configs/cell_defconfig index f3bde8c6c8c6..c420e47426f8 100644 --- a/arch/powerpc/configs/cell_defconfig +++ b/arch/powerpc/configs/cell_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc4 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Dec 6 16:48:05 2007 | 4 | # Thu Mar 20 10:31:04 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y | |||
28 | CONFIG_GENERIC_TIME_VSYSCALL=y | 28 | CONFIG_GENERIC_TIME_VSYSCALL=y |
29 | CONFIG_GENERIC_CLOCKEVENTS=y | 29 | CONFIG_GENERIC_CLOCKEVENTS=y |
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
31 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 34 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -69,8 +70,6 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
69 | # CONFIG_POSIX_MQUEUE is not set | 70 | # CONFIG_POSIX_MQUEUE is not set |
70 | # CONFIG_BSD_PROCESS_ACCT is not set | 71 | # CONFIG_BSD_PROCESS_ACCT is not set |
71 | # CONFIG_TASKSTATS is not set | 72 | # CONFIG_TASKSTATS is not set |
72 | # CONFIG_USER_NS is not set | ||
73 | # CONFIG_PID_NS is not set | ||
74 | # CONFIG_AUDIT is not set | 73 | # CONFIG_AUDIT is not set |
75 | CONFIG_IKCONFIG=y | 74 | CONFIG_IKCONFIG=y |
76 | CONFIG_IKCONFIG_PROC=y | 75 | CONFIG_IKCONFIG_PROC=y |
@@ -79,13 +78,20 @@ CONFIG_CGROUPS=y | |||
79 | # CONFIG_CGROUP_DEBUG is not set | 78 | # CONFIG_CGROUP_DEBUG is not set |
80 | # CONFIG_CGROUP_NS is not set | 79 | # CONFIG_CGROUP_NS is not set |
81 | CONFIG_CPUSETS=y | 80 | CONFIG_CPUSETS=y |
82 | CONFIG_FAIR_GROUP_SCHED=y | 81 | # CONFIG_GROUP_SCHED is not set |
83 | CONFIG_FAIR_USER_SCHED=y | 82 | # CONFIG_USER_SCHED is not set |
84 | # CONFIG_FAIR_CGROUP_SCHED is not set | 83 | # CONFIG_CGROUP_SCHED is not set |
85 | # CONFIG_CGROUP_CPUACCT is not set | 84 | # CONFIG_CGROUP_CPUACCT is not set |
85 | # CONFIG_RESOURCE_COUNTERS is not set | ||
86 | CONFIG_SYSFS_DEPRECATED=y | 86 | CONFIG_SYSFS_DEPRECATED=y |
87 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
87 | CONFIG_PROC_PID_CPUSET=y | 88 | CONFIG_PROC_PID_CPUSET=y |
88 | # CONFIG_RELAY is not set | 89 | # CONFIG_RELAY is not set |
90 | CONFIG_NAMESPACES=y | ||
91 | # CONFIG_UTS_NS is not set | ||
92 | # CONFIG_IPC_NS is not set | ||
93 | # CONFIG_USER_NS is not set | ||
94 | # CONFIG_PID_NS is not set | ||
89 | CONFIG_BLK_DEV_INITRD=y | 95 | CONFIG_BLK_DEV_INITRD=y |
90 | CONFIG_INITRAMFS_SOURCE="" | 96 | CONFIG_INITRAMFS_SOURCE="" |
91 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 97 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -99,11 +105,13 @@ CONFIG_HOTPLUG=y | |||
99 | CONFIG_PRINTK=y | 105 | CONFIG_PRINTK=y |
100 | CONFIG_BUG=y | 106 | CONFIG_BUG=y |
101 | CONFIG_ELF_CORE=y | 107 | CONFIG_ELF_CORE=y |
108 | # CONFIG_COMPAT_BRK is not set | ||
102 | CONFIG_BASE_FULL=y | 109 | CONFIG_BASE_FULL=y |
103 | CONFIG_FUTEX=y | 110 | CONFIG_FUTEX=y |
104 | CONFIG_ANON_INODES=y | 111 | CONFIG_ANON_INODES=y |
105 | CONFIG_EPOLL=y | 112 | CONFIG_EPOLL=y |
106 | CONFIG_SIGNALFD=y | 113 | CONFIG_SIGNALFD=y |
114 | CONFIG_TIMERFD=y | ||
107 | CONFIG_EVENTFD=y | 115 | CONFIG_EVENTFD=y |
108 | CONFIG_SHMEM=y | 116 | CONFIG_SHMEM=y |
109 | CONFIG_VM_EVENT_COUNTERS=y | 117 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -111,6 +119,15 @@ CONFIG_SLUB_DEBUG=y | |||
111 | # CONFIG_SLAB is not set | 119 | # CONFIG_SLAB is not set |
112 | CONFIG_SLUB=y | 120 | CONFIG_SLUB=y |
113 | # CONFIG_SLOB is not set | 121 | # CONFIG_SLOB is not set |
122 | CONFIG_PROFILING=y | ||
123 | # CONFIG_MARKERS is not set | ||
124 | CONFIG_OPROFILE=m | ||
125 | CONFIG_HAVE_OPROFILE=y | ||
126 | # CONFIG_KPROBES is not set | ||
127 | CONFIG_HAVE_KPROBES=y | ||
128 | CONFIG_HAVE_KRETPROBES=y | ||
129 | CONFIG_PROC_PAGE_MONITOR=y | ||
130 | CONFIG_SLABINFO=y | ||
114 | CONFIG_RT_MUTEXES=y | 131 | CONFIG_RT_MUTEXES=y |
115 | # CONFIG_TINY_SHMEM is not set | 132 | # CONFIG_TINY_SHMEM is not set |
116 | CONFIG_BASE_SMALL=0 | 133 | CONFIG_BASE_SMALL=0 |
@@ -138,6 +155,7 @@ CONFIG_DEFAULT_AS=y | |||
138 | # CONFIG_DEFAULT_CFQ is not set | 155 | # CONFIG_DEFAULT_CFQ is not set |
139 | # CONFIG_DEFAULT_NOOP is not set | 156 | # CONFIG_DEFAULT_NOOP is not set |
140 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 157 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
158 | CONFIG_CLASSIC_RCU=y | ||
141 | 159 | ||
142 | # | 160 | # |
143 | # Platform support | 161 | # Platform support |
@@ -148,8 +166,8 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
148 | # CONFIG_PPC_86xx is not set | 166 | # CONFIG_PPC_86xx is not set |
149 | # CONFIG_PPC_PSERIES is not set | 167 | # CONFIG_PPC_PSERIES is not set |
150 | # CONFIG_PPC_ISERIES is not set | 168 | # CONFIG_PPC_ISERIES is not set |
151 | # CONFIG_PPC_MPC52xx is not set | 169 | # CONFIG_PPC_MPC512x is not set |
152 | # CONFIG_PPC_MPC5200 is not set | 170 | # CONFIG_PPC_MPC5121 is not set |
153 | # CONFIG_PPC_PMAC is not set | 171 | # CONFIG_PPC_PMAC is not set |
154 | # CONFIG_PPC_MAPLE is not set | 172 | # CONFIG_PPC_MAPLE is not set |
155 | # CONFIG_PPC_PASEMI is not set | 173 | # CONFIG_PPC_PASEMI is not set |
@@ -162,14 +180,14 @@ CONFIG_PPC_PS3=y | |||
162 | # CONFIG_PS3_ADVANCED is not set | 180 | # CONFIG_PS3_ADVANCED is not set |
163 | CONFIG_PS3_HTAB_SIZE=20 | 181 | CONFIG_PS3_HTAB_SIZE=20 |
164 | # CONFIG_PS3_DYNAMIC_DMA is not set | 182 | # CONFIG_PS3_DYNAMIC_DMA is not set |
165 | CONFIG_PS3_USE_LPAR_ADDR=y | ||
166 | CONFIG_PS3_VUART=y | 183 | CONFIG_PS3_VUART=y |
167 | CONFIG_PS3_PS3AV=y | 184 | CONFIG_PS3_PS3AV=y |
168 | CONFIG_PS3_SYS_MANAGER=m | 185 | CONFIG_PS3_SYS_MANAGER=y |
169 | CONFIG_PS3_STORAGE=y | 186 | CONFIG_PS3_STORAGE=y |
170 | CONFIG_PS3_DISK=y | 187 | CONFIG_PS3_DISK=y |
171 | CONFIG_PS3_ROM=m | 188 | CONFIG_PS3_ROM=m |
172 | CONFIG_PS3_FLASH=m | 189 | CONFIG_PS3_FLASH=m |
190 | CONFIG_PS3_LPM=m | ||
173 | CONFIG_PPC_CELL=y | 191 | CONFIG_PPC_CELL=y |
174 | CONFIG_PPC_CELL_NATIVE=y | 192 | CONFIG_PPC_CELL_NATIVE=y |
175 | CONFIG_PPC_IBM_CELL_BLADE=y | 193 | CONFIG_PPC_IBM_CELL_BLADE=y |
@@ -183,10 +201,12 @@ CONFIG_CBE_RAS=y | |||
183 | CONFIG_CBE_THERM=m | 201 | CONFIG_CBE_THERM=m |
184 | CONFIG_CBE_CPUFREQ=m | 202 | CONFIG_CBE_CPUFREQ=m |
185 | CONFIG_CBE_CPUFREQ_PMI=m | 203 | CONFIG_CBE_CPUFREQ_PMI=m |
204 | CONFIG_OPROFILE_CELL=y | ||
186 | # CONFIG_PQ2ADS is not set | 205 | # CONFIG_PQ2ADS is not set |
187 | CONFIG_PPC_NATIVE=y | 206 | CONFIG_PPC_NATIVE=y |
188 | CONFIG_UDBG_RTAS_CONSOLE=y | 207 | CONFIG_UDBG_RTAS_CONSOLE=y |
189 | CONFIG_PPC_UDBG_BEAT=y | 208 | CONFIG_PPC_UDBG_BEAT=y |
209 | # CONFIG_IPIC is not set | ||
190 | CONFIG_MPIC=y | 210 | CONFIG_MPIC=y |
191 | # CONFIG_MPIC_WEIRD is not set | 211 | # CONFIG_MPIC_WEIRD is not set |
192 | # CONFIG_PPC_I8259 is not set | 212 | # CONFIG_PPC_I8259 is not set |
@@ -219,7 +239,6 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y | |||
219 | # | 239 | # |
220 | # CPU Frequency drivers | 240 | # CPU Frequency drivers |
221 | # | 241 | # |
222 | # CONFIG_CPM2 is not set | ||
223 | CONFIG_AXON_RAM=m | 242 | CONFIG_AXON_RAM=m |
224 | # CONFIG_FSL_ULI1575 is not set | 243 | # CONFIG_FSL_ULI1575 is not set |
225 | 244 | ||
@@ -235,16 +254,20 @@ CONFIG_HZ_250=y | |||
235 | # CONFIG_HZ_300 is not set | 254 | # CONFIG_HZ_300 is not set |
236 | # CONFIG_HZ_1000 is not set | 255 | # CONFIG_HZ_1000 is not set |
237 | CONFIG_HZ=250 | 256 | CONFIG_HZ=250 |
257 | # CONFIG_SCHED_HRTICK is not set | ||
238 | CONFIG_PREEMPT_NONE=y | 258 | CONFIG_PREEMPT_NONE=y |
239 | # CONFIG_PREEMPT_VOLUNTARY is not set | 259 | # CONFIG_PREEMPT_VOLUNTARY is not set |
240 | # CONFIG_PREEMPT is not set | 260 | # CONFIG_PREEMPT is not set |
241 | CONFIG_PREEMPT_BKL=y | ||
242 | CONFIG_BINFMT_ELF=y | 261 | CONFIG_BINFMT_ELF=y |
262 | CONFIG_COMPAT_BINFMT_ELF=y | ||
243 | CONFIG_BINFMT_MISC=m | 263 | CONFIG_BINFMT_MISC=m |
244 | CONFIG_FORCE_MAX_ZONEORDER=9 | 264 | CONFIG_FORCE_MAX_ZONEORDER=9 |
245 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 265 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
246 | # CONFIG_IOMMU_VMERGE is not set | 266 | # CONFIG_IOMMU_VMERGE is not set |
267 | CONFIG_IOMMU_HELPER=y | ||
247 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 268 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
269 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
270 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
248 | # CONFIG_KEXEC is not set | 271 | # CONFIG_KEXEC is not set |
249 | # CONFIG_CRASH_DUMP is not set | 272 | # CONFIG_CRASH_DUMP is not set |
250 | CONFIG_IRQ_ALL_CPUS=y | 273 | CONFIG_IRQ_ALL_CPUS=y |
@@ -267,6 +290,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | |||
267 | CONFIG_SPARSEMEM_VMEMMAP=y | 290 | CONFIG_SPARSEMEM_VMEMMAP=y |
268 | CONFIG_MEMORY_HOTPLUG=y | 291 | CONFIG_MEMORY_HOTPLUG=y |
269 | CONFIG_MEMORY_HOTPLUG_SPARSE=y | 292 | CONFIG_MEMORY_HOTPLUG_SPARSE=y |
293 | CONFIG_MEMORY_HOTREMOVE=y | ||
270 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 294 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
271 | CONFIG_MIGRATION=y | 295 | CONFIG_MIGRATION=y |
272 | CONFIG_RESOURCES_64BIT=y | 296 | CONFIG_RESOURCES_64BIT=y |
@@ -276,12 +300,12 @@ CONFIG_ARCH_MEMORY_PROBE=y | |||
276 | CONFIG_NODES_SPAN_OTHER_NODES=y | 300 | CONFIG_NODES_SPAN_OTHER_NODES=y |
277 | CONFIG_PPC_HAS_HASH_64K=y | 301 | CONFIG_PPC_HAS_HASH_64K=y |
278 | CONFIG_PPC_64K_PAGES=y | 302 | CONFIG_PPC_64K_PAGES=y |
303 | # CONFIG_PPC_SUBPAGE_PROT is not set | ||
279 | CONFIG_SCHED_SMT=y | 304 | CONFIG_SCHED_SMT=y |
280 | CONFIG_PROC_DEVICETREE=y | 305 | CONFIG_PROC_DEVICETREE=y |
281 | # CONFIG_CMDLINE_BOOL is not set | 306 | # CONFIG_CMDLINE_BOOL is not set |
282 | # CONFIG_PM is not set | 307 | # CONFIG_PM is not set |
283 | CONFIG_SECCOMP=y | 308 | CONFIG_SECCOMP=y |
284 | # CONFIG_WANT_DEVICE_TREE is not set | ||
285 | CONFIG_ISA_DMA_API=y | 309 | CONFIG_ISA_DMA_API=y |
286 | 310 | ||
287 | # | 311 | # |
@@ -318,6 +342,7 @@ CONFIG_XFRM=y | |||
318 | # CONFIG_XFRM_USER is not set | 342 | # CONFIG_XFRM_USER is not set |
319 | # CONFIG_XFRM_SUB_POLICY is not set | 343 | # CONFIG_XFRM_SUB_POLICY is not set |
320 | # CONFIG_XFRM_MIGRATE is not set | 344 | # CONFIG_XFRM_MIGRATE is not set |
345 | # CONFIG_XFRM_STATISTICS is not set | ||
321 | # CONFIG_NET_KEY is not set | 346 | # CONFIG_NET_KEY is not set |
322 | CONFIG_INET=y | 347 | CONFIG_INET=y |
323 | CONFIG_IP_MULTICAST=y | 348 | CONFIG_IP_MULTICAST=y |
@@ -368,6 +393,7 @@ CONFIG_IPV6_TUNNEL=m | |||
368 | # CONFIG_NETWORK_SECMARK is not set | 393 | # CONFIG_NETWORK_SECMARK is not set |
369 | CONFIG_NETFILTER=y | 394 | CONFIG_NETFILTER=y |
370 | # CONFIG_NETFILTER_DEBUG is not set | 395 | # CONFIG_NETFILTER_DEBUG is not set |
396 | CONFIG_NETFILTER_ADVANCED=y | ||
371 | 397 | ||
372 | # | 398 | # |
373 | # Core Netfilter Configuration | 399 | # Core Netfilter Configuration |
@@ -375,7 +401,6 @@ CONFIG_NETFILTER=y | |||
375 | CONFIG_NETFILTER_NETLINK=m | 401 | CONFIG_NETFILTER_NETLINK=m |
376 | CONFIG_NETFILTER_NETLINK_QUEUE=m | 402 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
377 | CONFIG_NETFILTER_NETLINK_LOG=m | 403 | CONFIG_NETFILTER_NETLINK_LOG=m |
378 | # CONFIG_NF_CONNTRACK_ENABLED is not set | ||
379 | # CONFIG_NF_CONNTRACK is not set | 404 | # CONFIG_NF_CONNTRACK is not set |
380 | CONFIG_NETFILTER_XTABLES=m | 405 | CONFIG_NETFILTER_XTABLES=m |
381 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 406 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
@@ -383,20 +408,25 @@ CONFIG_NETFILTER_XT_TARGET_DSCP=m | |||
383 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 408 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
384 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 409 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
385 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 410 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
411 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
386 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | 412 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set |
387 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 413 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
414 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
388 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 415 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
389 | CONFIG_NETFILTER_XT_MATCH_DCCP=m | 416 | CONFIG_NETFILTER_XT_MATCH_DCCP=m |
390 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 417 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
391 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 418 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
419 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
392 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 420 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m |
393 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | 421 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m |
394 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 422 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
395 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 423 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
424 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
396 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 425 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
397 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 426 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
398 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 427 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
399 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | 428 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m |
429 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
400 | CONFIG_NETFILTER_XT_MATCH_REALM=m | 430 | CONFIG_NETFILTER_XT_MATCH_REALM=m |
401 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | 431 | CONFIG_NETFILTER_XT_MATCH_SCTP=m |
402 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m | 432 | CONFIG_NETFILTER_XT_MATCH_STATISTIC=m |
@@ -411,20 +441,16 @@ CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m | |||
411 | # | 441 | # |
412 | CONFIG_IP_NF_QUEUE=m | 442 | CONFIG_IP_NF_QUEUE=m |
413 | CONFIG_IP_NF_IPTABLES=m | 443 | CONFIG_IP_NF_IPTABLES=m |
414 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
415 | CONFIG_IP_NF_MATCH_TOS=m | ||
416 | CONFIG_IP_NF_MATCH_RECENT=m | 444 | CONFIG_IP_NF_MATCH_RECENT=m |
417 | CONFIG_IP_NF_MATCH_ECN=m | 445 | CONFIG_IP_NF_MATCH_ECN=m |
418 | CONFIG_IP_NF_MATCH_AH=m | 446 | CONFIG_IP_NF_MATCH_AH=m |
419 | CONFIG_IP_NF_MATCH_TTL=m | 447 | CONFIG_IP_NF_MATCH_TTL=m |
420 | CONFIG_IP_NF_MATCH_OWNER=m | ||
421 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 448 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
422 | CONFIG_IP_NF_FILTER=m | 449 | CONFIG_IP_NF_FILTER=m |
423 | CONFIG_IP_NF_TARGET_REJECT=m | 450 | CONFIG_IP_NF_TARGET_REJECT=m |
424 | CONFIG_IP_NF_TARGET_LOG=m | 451 | CONFIG_IP_NF_TARGET_LOG=m |
425 | CONFIG_IP_NF_TARGET_ULOG=m | 452 | CONFIG_IP_NF_TARGET_ULOG=m |
426 | CONFIG_IP_NF_MANGLE=m | 453 | CONFIG_IP_NF_MANGLE=m |
427 | CONFIG_IP_NF_TARGET_TOS=m | ||
428 | CONFIG_IP_NF_TARGET_ECN=m | 454 | CONFIG_IP_NF_TARGET_ECN=m |
429 | CONFIG_IP_NF_TARGET_TTL=m | 455 | CONFIG_IP_NF_TARGET_TTL=m |
430 | CONFIG_IP_NF_RAW=m | 456 | CONFIG_IP_NF_RAW=m |
@@ -433,7 +459,7 @@ CONFIG_IP_NF_ARPFILTER=m | |||
433 | CONFIG_IP_NF_ARP_MANGLE=m | 459 | CONFIG_IP_NF_ARP_MANGLE=m |
434 | 460 | ||
435 | # | 461 | # |
436 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 462 | # IPv6: Netfilter Configuration |
437 | # | 463 | # |
438 | # CONFIG_IP6_NF_QUEUE is not set | 464 | # CONFIG_IP6_NF_QUEUE is not set |
439 | # CONFIG_IP6_NF_IPTABLES is not set | 465 | # CONFIG_IP6_NF_IPTABLES is not set |
@@ -459,6 +485,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
459 | # | 485 | # |
460 | # CONFIG_NET_PKTGEN is not set | 486 | # CONFIG_NET_PKTGEN is not set |
461 | # CONFIG_HAMRADIO is not set | 487 | # CONFIG_HAMRADIO is not set |
488 | # CONFIG_CAN is not set | ||
462 | # CONFIG_IRDA is not set | 489 | # CONFIG_IRDA is not set |
463 | # CONFIG_BT is not set | 490 | # CONFIG_BT is not set |
464 | # CONFIG_AF_RXRPC is not set | 491 | # CONFIG_AF_RXRPC is not set |
@@ -467,7 +494,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
467 | # Wireless | 494 | # Wireless |
468 | # | 495 | # |
469 | # CONFIG_CFG80211 is not set | 496 | # CONFIG_CFG80211 is not set |
470 | # CONFIG_WIRELESS_EXT is not set | 497 | CONFIG_WIRELESS_EXT=y |
471 | # CONFIG_MAC80211 is not set | 498 | # CONFIG_MAC80211 is not set |
472 | # CONFIG_IEEE80211 is not set | 499 | # CONFIG_IEEE80211 is not set |
473 | # CONFIG_RFKILL is not set | 500 | # CONFIG_RFKILL is not set |
@@ -505,7 +532,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
505 | CONFIG_BLK_DEV_RAM=y | 532 | CONFIG_BLK_DEV_RAM=y |
506 | CONFIG_BLK_DEV_RAM_COUNT=16 | 533 | CONFIG_BLK_DEV_RAM_COUNT=16 |
507 | CONFIG_BLK_DEV_RAM_SIZE=131072 | 534 | CONFIG_BLK_DEV_RAM_SIZE=131072 |
508 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 535 | # CONFIG_BLK_DEV_XIP is not set |
509 | # CONFIG_CDROM_PKTCDVD is not set | 536 | # CONFIG_CDROM_PKTCDVD is not set |
510 | # CONFIG_ATA_OVER_ETH is not set | 537 | # CONFIG_ATA_OVER_ETH is not set |
511 | CONFIG_MISC_DEVICES=y | 538 | CONFIG_MISC_DEVICES=y |
@@ -513,11 +540,13 @@ CONFIG_MISC_DEVICES=y | |||
513 | # CONFIG_EEPROM_93CX6 is not set | 540 | # CONFIG_EEPROM_93CX6 is not set |
514 | # CONFIG_SGI_IOC4 is not set | 541 | # CONFIG_SGI_IOC4 is not set |
515 | # CONFIG_TIFM_CORE is not set | 542 | # CONFIG_TIFM_CORE is not set |
543 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
544 | CONFIG_HAVE_IDE=y | ||
516 | CONFIG_IDE=y | 545 | CONFIG_IDE=y |
517 | CONFIG_BLK_DEV_IDE=y | 546 | CONFIG_BLK_DEV_IDE=y |
518 | 547 | ||
519 | # | 548 | # |
520 | # Please see Documentation/ide.txt for help/info on IDE drives | 549 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
521 | # | 550 | # |
522 | # CONFIG_BLK_DEV_IDE_SATA is not set | 551 | # CONFIG_BLK_DEV_IDE_SATA is not set |
523 | CONFIG_BLK_DEV_IDEDISK=y | 552 | CONFIG_BLK_DEV_IDEDISK=y |
@@ -534,12 +563,12 @@ CONFIG_IDE_PROC_FS=y | |||
534 | # | 563 | # |
535 | CONFIG_IDE_GENERIC=y | 564 | CONFIG_IDE_GENERIC=y |
536 | # CONFIG_BLK_DEV_PLATFORM is not set | 565 | # CONFIG_BLK_DEV_PLATFORM is not set |
566 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
537 | 567 | ||
538 | # | 568 | # |
539 | # PCI IDE chipsets support | 569 | # PCI IDE chipsets support |
540 | # | 570 | # |
541 | CONFIG_BLK_DEV_IDEPCI=y | 571 | CONFIG_BLK_DEV_IDEPCI=y |
542 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
543 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 572 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
544 | # CONFIG_BLK_DEV_OFFBOARD is not set | 573 | # CONFIG_BLK_DEV_OFFBOARD is not set |
545 | CONFIG_BLK_DEV_GENERIC=y | 574 | CONFIG_BLK_DEV_GENERIC=y |
@@ -571,7 +600,6 @@ CONFIG_BLK_DEV_SIIMAGE=y | |||
571 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 600 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
572 | # CONFIG_BLK_DEV_TC86C001 is not set | 601 | # CONFIG_BLK_DEV_TC86C001 is not set |
573 | CONFIG_BLK_DEV_CELLEB=y | 602 | CONFIG_BLK_DEV_CELLEB=y |
574 | # CONFIG_IDE_ARM is not set | ||
575 | CONFIG_BLK_DEV_IDEDMA=y | 603 | CONFIG_BLK_DEV_IDEDMA=y |
576 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 604 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
577 | # CONFIG_BLK_DEV_HD is not set | 605 | # CONFIG_BLK_DEV_HD is not set |
@@ -637,6 +665,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
637 | # CONFIG_SCSI_IPS is not set | 665 | # CONFIG_SCSI_IPS is not set |
638 | # CONFIG_SCSI_INITIO is not set | 666 | # CONFIG_SCSI_INITIO is not set |
639 | # CONFIG_SCSI_INIA100 is not set | 667 | # CONFIG_SCSI_INIA100 is not set |
668 | # CONFIG_SCSI_MVSAS is not set | ||
640 | # CONFIG_SCSI_STEX is not set | 669 | # CONFIG_SCSI_STEX is not set |
641 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 670 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
642 | # CONFIG_SCSI_IPR is not set | 671 | # CONFIG_SCSI_IPR is not set |
@@ -689,6 +718,7 @@ CONFIG_SATA_PROMISE=y | |||
689 | # CONFIG_PATA_MPIIX is not set | 718 | # CONFIG_PATA_MPIIX is not set |
690 | # CONFIG_PATA_OLDPIIX is not set | 719 | # CONFIG_PATA_OLDPIIX is not set |
691 | # CONFIG_PATA_NETCELL is not set | 720 | # CONFIG_PATA_NETCELL is not set |
721 | # CONFIG_PATA_NINJA32 is not set | ||
692 | # CONFIG_PATA_NS87410 is not set | 722 | # CONFIG_PATA_NS87410 is not set |
693 | # CONFIG_PATA_NS87415 is not set | 723 | # CONFIG_PATA_NS87415 is not set |
694 | # CONFIG_PATA_OPTI is not set | 724 | # CONFIG_PATA_OPTI is not set |
@@ -703,6 +733,7 @@ CONFIG_PATA_PDC2027X=m | |||
703 | # CONFIG_PATA_SIS is not set | 733 | # CONFIG_PATA_SIS is not set |
704 | # CONFIG_PATA_VIA is not set | 734 | # CONFIG_PATA_VIA is not set |
705 | # CONFIG_PATA_WINBOND is not set | 735 | # CONFIG_PATA_WINBOND is not set |
736 | # CONFIG_PATA_PLATFORM is not set | ||
706 | # CONFIG_PATA_SCC is not set | 737 | # CONFIG_PATA_SCC is not set |
707 | CONFIG_MD=y | 738 | CONFIG_MD=y |
708 | CONFIG_BLK_DEV_MD=m | 739 | CONFIG_BLK_DEV_MD=m |
@@ -748,7 +779,6 @@ CONFIG_MACVLAN=m | |||
748 | # CONFIG_EQUALIZER is not set | 779 | # CONFIG_EQUALIZER is not set |
749 | CONFIG_TUN=y | 780 | CONFIG_TUN=y |
750 | # CONFIG_VETH is not set | 781 | # CONFIG_VETH is not set |
751 | # CONFIG_IP1000 is not set | ||
752 | # CONFIG_ARCNET is not set | 782 | # CONFIG_ARCNET is not set |
753 | # CONFIG_PHYLIB is not set | 783 | # CONFIG_PHYLIB is not set |
754 | CONFIG_NET_ETHERNET=y | 784 | CONFIG_NET_ETHERNET=y |
@@ -773,6 +803,9 @@ CONFIG_E1000=m | |||
773 | CONFIG_E1000_NAPI=y | 803 | CONFIG_E1000_NAPI=y |
774 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 804 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
775 | # CONFIG_E1000E is not set | 805 | # CONFIG_E1000E is not set |
806 | # CONFIG_E1000E_ENABLED is not set | ||
807 | # CONFIG_IP1000 is not set | ||
808 | # CONFIG_IGB is not set | ||
776 | # CONFIG_NS83820 is not set | 809 | # CONFIG_NS83820 is not set |
777 | # CONFIG_HAMACHI is not set | 810 | # CONFIG_HAMACHI is not set |
778 | # CONFIG_YELLOWFIN is not set | 811 | # CONFIG_YELLOWFIN is not set |
@@ -788,6 +821,7 @@ CONFIG_TIGON3=y | |||
788 | # CONFIG_BNX2 is not set | 821 | # CONFIG_BNX2 is not set |
789 | CONFIG_SPIDER_NET=y | 822 | CONFIG_SPIDER_NET=y |
790 | CONFIG_GELIC_NET=m | 823 | CONFIG_GELIC_NET=m |
824 | CONFIG_GELIC_WIRELESS=y | ||
791 | # CONFIG_QLA3XXX is not set | 825 | # CONFIG_QLA3XXX is not set |
792 | # CONFIG_ATL1 is not set | 826 | # CONFIG_ATL1 is not set |
793 | CONFIG_NETDEV_10000=y | 827 | CONFIG_NETDEV_10000=y |
@@ -802,6 +836,7 @@ CONFIG_NETDEV_10000=y | |||
802 | # CONFIG_PASEMI_MAC is not set | 836 | # CONFIG_PASEMI_MAC is not set |
803 | # CONFIG_MLX4_CORE is not set | 837 | # CONFIG_MLX4_CORE is not set |
804 | # CONFIG_TEHUTI is not set | 838 | # CONFIG_TEHUTI is not set |
839 | # CONFIG_BNX2X is not set | ||
805 | # CONFIG_TR is not set | 840 | # CONFIG_TR is not set |
806 | 841 | ||
807 | # | 842 | # |
@@ -824,7 +859,6 @@ CONFIG_NETDEV_10000=y | |||
824 | # CONFIG_PPP is not set | 859 | # CONFIG_PPP is not set |
825 | # CONFIG_SLIP is not set | 860 | # CONFIG_SLIP is not set |
826 | # CONFIG_NET_FC is not set | 861 | # CONFIG_NET_FC is not set |
827 | # CONFIG_SHAPER is not set | ||
828 | # CONFIG_NETCONSOLE is not set | 862 | # CONFIG_NETCONSOLE is not set |
829 | # CONFIG_NETPOLL is not set | 863 | # CONFIG_NETPOLL is not set |
830 | # CONFIG_NET_POLL_CONTROLLER is not set | 864 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -883,16 +917,17 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
883 | # CONFIG_DIGIEPCA is not set | 917 | # CONFIG_DIGIEPCA is not set |
884 | # CONFIG_MOXA_INTELLIO is not set | 918 | # CONFIG_MOXA_INTELLIO is not set |
885 | # CONFIG_MOXA_SMARTIO is not set | 919 | # CONFIG_MOXA_SMARTIO is not set |
886 | # CONFIG_MOXA_SMARTIO_NEW is not set | ||
887 | # CONFIG_ISI is not set | 920 | # CONFIG_ISI is not set |
888 | # CONFIG_SYNCLINK is not set | 921 | # CONFIG_SYNCLINK is not set |
889 | # CONFIG_SYNCLINKMP is not set | 922 | # CONFIG_SYNCLINKMP is not set |
890 | # CONFIG_SYNCLINK_GT is not set | 923 | # CONFIG_SYNCLINK_GT is not set |
891 | # CONFIG_N_HDLC is not set | 924 | # CONFIG_N_HDLC is not set |
925 | # CONFIG_RISCOM8 is not set | ||
892 | # CONFIG_SPECIALIX is not set | 926 | # CONFIG_SPECIALIX is not set |
893 | # CONFIG_SX is not set | 927 | # CONFIG_SX is not set |
894 | # CONFIG_RIO is not set | 928 | # CONFIG_RIO is not set |
895 | # CONFIG_STALDRV is not set | 929 | # CONFIG_STALDRV is not set |
930 | # CONFIG_NOZOMI is not set | ||
896 | 931 | ||
897 | # | 932 | # |
898 | # Serial drivers | 933 | # Serial drivers |
@@ -976,13 +1011,12 @@ CONFIG_I2C_ALGOBIT=y | |||
976 | # | 1011 | # |
977 | # Miscellaneous I2C Chip support | 1012 | # Miscellaneous I2C Chip support |
978 | # | 1013 | # |
979 | # CONFIG_SENSORS_DS1337 is not set | ||
980 | # CONFIG_SENSORS_DS1374 is not set | ||
981 | # CONFIG_DS1682 is not set | 1014 | # CONFIG_DS1682 is not set |
982 | # CONFIG_SENSORS_EEPROM is not set | 1015 | # CONFIG_SENSORS_EEPROM is not set |
983 | # CONFIG_SENSORS_PCF8574 is not set | 1016 | # CONFIG_SENSORS_PCF8574 is not set |
984 | # CONFIG_SENSORS_PCA9539 is not set | 1017 | # CONFIG_PCF8575 is not set |
985 | # CONFIG_SENSORS_PCF8591 is not set | 1018 | # CONFIG_SENSORS_PCF8591 is not set |
1019 | # CONFIG_TPS65010 is not set | ||
986 | # CONFIG_SENSORS_MAX6875 is not set | 1020 | # CONFIG_SENSORS_MAX6875 is not set |
987 | # CONFIG_SENSORS_TSL2550 is not set | 1021 | # CONFIG_SENSORS_TSL2550 is not set |
988 | # CONFIG_I2C_DEBUG_CORE is not set | 1022 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -998,6 +1032,7 @@ CONFIG_I2C_ALGOBIT=y | |||
998 | # CONFIG_W1 is not set | 1032 | # CONFIG_W1 is not set |
999 | # CONFIG_POWER_SUPPLY is not set | 1033 | # CONFIG_POWER_SUPPLY is not set |
1000 | # CONFIG_HWMON is not set | 1034 | # CONFIG_HWMON is not set |
1035 | # CONFIG_THERMAL is not set | ||
1001 | CONFIG_WATCHDOG=y | 1036 | CONFIG_WATCHDOG=y |
1002 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 1037 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
1003 | 1038 | ||
@@ -1082,6 +1117,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1082 | CONFIG_USB_ARCH_HAS_EHCI=y | 1117 | CONFIG_USB_ARCH_HAS_EHCI=y |
1083 | CONFIG_USB=m | 1118 | CONFIG_USB=m |
1084 | # CONFIG_USB_DEBUG is not set | 1119 | # CONFIG_USB_DEBUG is not set |
1120 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1085 | 1121 | ||
1086 | # | 1122 | # |
1087 | # Miscellaneous USB options | 1123 | # Miscellaneous USB options |
@@ -1095,10 +1131,10 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1095 | # USB Host Controller Drivers | 1131 | # USB Host Controller Drivers |
1096 | # | 1132 | # |
1097 | CONFIG_USB_EHCI_HCD=m | 1133 | CONFIG_USB_EHCI_HCD=m |
1098 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
1099 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1134 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1100 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1135 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1101 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | 1136 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y |
1137 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
1102 | # CONFIG_USB_ISP116X_HCD is not set | 1138 | # CONFIG_USB_ISP116X_HCD is not set |
1103 | CONFIG_USB_OHCI_HCD=m | 1139 | CONFIG_USB_OHCI_HCD=m |
1104 | CONFIG_USB_OHCI_HCD_PPC_OF=y | 1140 | CONFIG_USB_OHCI_HCD_PPC_OF=y |
@@ -1149,10 +1185,6 @@ CONFIG_USB_MON=y | |||
1149 | # | 1185 | # |
1150 | # USB port drivers | 1186 | # USB port drivers |
1151 | # | 1187 | # |
1152 | |||
1153 | # | ||
1154 | # USB Serial Converter support | ||
1155 | # | ||
1156 | # CONFIG_USB_SERIAL is not set | 1188 | # CONFIG_USB_SERIAL is not set |
1157 | 1189 | ||
1158 | # | 1190 | # |
@@ -1178,16 +1210,9 @@ CONFIG_USB_MON=y | |||
1178 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1210 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1179 | # CONFIG_USB_IOWARRIOR is not set | 1211 | # CONFIG_USB_IOWARRIOR is not set |
1180 | # CONFIG_USB_TEST is not set | 1212 | # CONFIG_USB_TEST is not set |
1181 | |||
1182 | # | ||
1183 | # USB DSL modem support | ||
1184 | # | ||
1185 | |||
1186 | # | ||
1187 | # USB Gadget Support | ||
1188 | # | ||
1189 | # CONFIG_USB_GADGET is not set | 1213 | # CONFIG_USB_GADGET is not set |
1190 | # CONFIG_MMC is not set | 1214 | # CONFIG_MMC is not set |
1215 | # CONFIG_MEMSTICK is not set | ||
1191 | # CONFIG_NEW_LEDS is not set | 1216 | # CONFIG_NEW_LEDS is not set |
1192 | CONFIG_INFINIBAND=m | 1217 | CONFIG_INFINIBAND=m |
1193 | CONFIG_INFINIBAND_USER_MAD=m | 1218 | CONFIG_INFINIBAND_USER_MAD=m |
@@ -1198,6 +1223,7 @@ CONFIG_INFINIBAND_MTHCA=m | |||
1198 | CONFIG_INFINIBAND_MTHCA_DEBUG=y | 1223 | CONFIG_INFINIBAND_MTHCA_DEBUG=y |
1199 | # CONFIG_INFINIBAND_AMSO1100 is not set | 1224 | # CONFIG_INFINIBAND_AMSO1100 is not set |
1200 | # CONFIG_MLX4_INFINIBAND is not set | 1225 | # CONFIG_MLX4_INFINIBAND is not set |
1226 | # CONFIG_INFINIBAND_NES is not set | ||
1201 | CONFIG_INFINIBAND_IPOIB=m | 1227 | CONFIG_INFINIBAND_IPOIB=m |
1202 | # CONFIG_INFINIBAND_IPOIB_CM is not set | 1228 | # CONFIG_INFINIBAND_IPOIB_CM is not set |
1203 | CONFIG_INFINIBAND_IPOIB_DEBUG=y | 1229 | CONFIG_INFINIBAND_IPOIB_DEBUG=y |
@@ -1211,7 +1237,9 @@ CONFIG_EDAC=y | |||
1211 | # | 1237 | # |
1212 | # CONFIG_EDAC_DEBUG is not set | 1238 | # CONFIG_EDAC_DEBUG is not set |
1213 | CONFIG_EDAC_MM_EDAC=y | 1239 | CONFIG_EDAC_MM_EDAC=y |
1240 | CONFIG_EDAC_CELL=y | ||
1214 | # CONFIG_RTC_CLASS is not set | 1241 | # CONFIG_RTC_CLASS is not set |
1242 | # CONFIG_DMADEVICES is not set | ||
1215 | 1243 | ||
1216 | # | 1244 | # |
1217 | # Userspace I/O | 1245 | # Userspace I/O |
@@ -1239,12 +1267,10 @@ CONFIG_FS_POSIX_ACL=y | |||
1239 | # CONFIG_XFS_FS is not set | 1267 | # CONFIG_XFS_FS is not set |
1240 | # CONFIG_GFS2_FS is not set | 1268 | # CONFIG_GFS2_FS is not set |
1241 | # CONFIG_OCFS2_FS is not set | 1269 | # CONFIG_OCFS2_FS is not set |
1242 | # CONFIG_MINIX_FS is not set | 1270 | CONFIG_DNOTIFY=y |
1243 | # CONFIG_ROMFS_FS is not set | ||
1244 | CONFIG_INOTIFY=y | 1271 | CONFIG_INOTIFY=y |
1245 | CONFIG_INOTIFY_USER=y | 1272 | CONFIG_INOTIFY_USER=y |
1246 | # CONFIG_QUOTA is not set | 1273 | # CONFIG_QUOTA is not set |
1247 | CONFIG_DNOTIFY=y | ||
1248 | # CONFIG_AUTOFS_FS is not set | 1274 | # CONFIG_AUTOFS_FS is not set |
1249 | CONFIG_AUTOFS4_FS=m | 1275 | CONFIG_AUTOFS4_FS=m |
1250 | # CONFIG_FUSE_FS is not set | 1276 | # CONFIG_FUSE_FS is not set |
@@ -1293,8 +1319,10 @@ CONFIG_HUGETLB_PAGE=y | |||
1293 | # CONFIG_EFS_FS is not set | 1319 | # CONFIG_EFS_FS is not set |
1294 | # CONFIG_CRAMFS is not set | 1320 | # CONFIG_CRAMFS is not set |
1295 | # CONFIG_VXFS_FS is not set | 1321 | # CONFIG_VXFS_FS is not set |
1322 | # CONFIG_MINIX_FS is not set | ||
1296 | # CONFIG_HPFS_FS is not set | 1323 | # CONFIG_HPFS_FS is not set |
1297 | # CONFIG_QNX4FS_FS is not set | 1324 | # CONFIG_QNX4FS_FS is not set |
1325 | # CONFIG_ROMFS_FS is not set | ||
1298 | # CONFIG_SYSV_FS is not set | 1326 | # CONFIG_SYSV_FS is not set |
1299 | # CONFIG_UFS_FS is not set | 1327 | # CONFIG_UFS_FS is not set |
1300 | CONFIG_NETWORK_FILESYSTEMS=y | 1328 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1382,7 +1410,6 @@ CONFIG_NLS_ISO8859_15=m | |||
1382 | # CONFIG_NLS_KOI8_U is not set | 1410 | # CONFIG_NLS_KOI8_U is not set |
1383 | # CONFIG_NLS_UTF8 is not set | 1411 | # CONFIG_NLS_UTF8 is not set |
1384 | # CONFIG_DLM is not set | 1412 | # CONFIG_DLM is not set |
1385 | # CONFIG_UCC_SLOW is not set | ||
1386 | 1413 | ||
1387 | # | 1414 | # |
1388 | # Library routines | 1415 | # Library routines |
@@ -1404,11 +1431,6 @@ CONFIG_PLIST=y | |||
1404 | CONFIG_HAS_IOMEM=y | 1431 | CONFIG_HAS_IOMEM=y |
1405 | CONFIG_HAS_IOPORT=y | 1432 | CONFIG_HAS_IOPORT=y |
1406 | CONFIG_HAS_DMA=y | 1433 | CONFIG_HAS_DMA=y |
1407 | CONFIG_INSTRUMENTATION=y | ||
1408 | CONFIG_PROFILING=y | ||
1409 | CONFIG_OPROFILE=m | ||
1410 | # CONFIG_KPROBES is not set | ||
1411 | # CONFIG_MARKERS is not set | ||
1412 | 1434 | ||
1413 | # | 1435 | # |
1414 | # Kernel hacking | 1436 | # Kernel hacking |
@@ -1427,6 +1449,7 @@ CONFIG_SCHED_DEBUG=y | |||
1427 | # CONFIG_SCHEDSTATS is not set | 1449 | # CONFIG_SCHEDSTATS is not set |
1428 | # CONFIG_TIMER_STATS is not set | 1450 | # CONFIG_TIMER_STATS is not set |
1429 | # CONFIG_SLUB_DEBUG_ON is not set | 1451 | # CONFIG_SLUB_DEBUG_ON is not set |
1452 | # CONFIG_SLUB_STATS is not set | ||
1430 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1453 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1431 | # CONFIG_RT_MUTEX_TESTER is not set | 1454 | # CONFIG_RT_MUTEX_TESTER is not set |
1432 | # CONFIG_DEBUG_SPINLOCK is not set | 1455 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1439,9 +1462,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1439 | # CONFIG_DEBUG_VM is not set | 1462 | # CONFIG_DEBUG_VM is not set |
1440 | # CONFIG_DEBUG_LIST is not set | 1463 | # CONFIG_DEBUG_LIST is not set |
1441 | # CONFIG_DEBUG_SG is not set | 1464 | # CONFIG_DEBUG_SG is not set |
1442 | # CONFIG_FORCED_INLINING is not set | ||
1443 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1465 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1444 | # CONFIG_RCU_TORTURE_TEST is not set | 1466 | # CONFIG_RCU_TORTURE_TEST is not set |
1467 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1445 | # CONFIG_FAULT_INJECTION is not set | 1468 | # CONFIG_FAULT_INJECTION is not set |
1446 | # CONFIG_SAMPLES is not set | 1469 | # CONFIG_SAMPLES is not set |
1447 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1470 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -1464,7 +1487,9 @@ CONFIG_IRQSTACKS=y | |||
1464 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1487 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1465 | CONFIG_CRYPTO=y | 1488 | CONFIG_CRYPTO=y |
1466 | CONFIG_CRYPTO_ALGAPI=y | 1489 | CONFIG_CRYPTO_ALGAPI=y |
1490 | CONFIG_CRYPTO_AEAD=m | ||
1467 | CONFIG_CRYPTO_BLKCIPHER=m | 1491 | CONFIG_CRYPTO_BLKCIPHER=m |
1492 | # CONFIG_CRYPTO_SEQIV is not set | ||
1468 | CONFIG_CRYPTO_HASH=y | 1493 | CONFIG_CRYPTO_HASH=y |
1469 | CONFIG_CRYPTO_MANAGER=y | 1494 | CONFIG_CRYPTO_MANAGER=y |
1470 | CONFIG_CRYPTO_HMAC=y | 1495 | CONFIG_CRYPTO_HMAC=y |
@@ -1483,6 +1508,9 @@ CONFIG_CRYPTO_CBC=m | |||
1483 | CONFIG_CRYPTO_PCBC=m | 1508 | CONFIG_CRYPTO_PCBC=m |
1484 | # CONFIG_CRYPTO_LRW is not set | 1509 | # CONFIG_CRYPTO_LRW is not set |
1485 | # CONFIG_CRYPTO_XTS is not set | 1510 | # CONFIG_CRYPTO_XTS is not set |
1511 | # CONFIG_CRYPTO_CTR is not set | ||
1512 | # CONFIG_CRYPTO_GCM is not set | ||
1513 | # CONFIG_CRYPTO_CCM is not set | ||
1486 | # CONFIG_CRYPTO_CRYPTD is not set | 1514 | # CONFIG_CRYPTO_CRYPTD is not set |
1487 | CONFIG_CRYPTO_DES=m | 1515 | CONFIG_CRYPTO_DES=m |
1488 | # CONFIG_CRYPTO_FCRYPT is not set | 1516 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1497,11 +1525,14 @@ CONFIG_CRYPTO_DES=m | |||
1497 | # CONFIG_CRYPTO_KHAZAD is not set | 1525 | # CONFIG_CRYPTO_KHAZAD is not set |
1498 | # CONFIG_CRYPTO_ANUBIS is not set | 1526 | # CONFIG_CRYPTO_ANUBIS is not set |
1499 | # CONFIG_CRYPTO_SEED is not set | 1527 | # CONFIG_CRYPTO_SEED is not set |
1528 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1500 | CONFIG_CRYPTO_DEFLATE=m | 1529 | CONFIG_CRYPTO_DEFLATE=m |
1501 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1530 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1502 | # CONFIG_CRYPTO_CRC32C is not set | 1531 | # CONFIG_CRYPTO_CRC32C is not set |
1503 | # CONFIG_CRYPTO_CAMELLIA is not set | 1532 | # CONFIG_CRYPTO_CAMELLIA is not set |
1504 | # CONFIG_CRYPTO_TEST is not set | 1533 | # CONFIG_CRYPTO_TEST is not set |
1505 | # CONFIG_CRYPTO_AUTHENC is not set | 1534 | CONFIG_CRYPTO_AUTHENC=m |
1535 | # CONFIG_CRYPTO_LZO is not set | ||
1506 | CONFIG_CRYPTO_HW=y | 1536 | CONFIG_CRYPTO_HW=y |
1537 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
1507 | # CONFIG_PPC_CLOCK is not set | 1538 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/celleb_defconfig b/arch/powerpc/configs/celleb_defconfig index 9ed2e098f96f..9ba3c6fc2fef 100644 --- a/arch/powerpc/configs/celleb_defconfig +++ b/arch/powerpc/configs/celleb_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-rc4 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Dec 6 16:48:07 2007 | 4 | # Thu Mar 20 10:32:45 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y | |||
28 | CONFIG_GENERIC_TIME_VSYSCALL=y | 28 | CONFIG_GENERIC_TIME_VSYSCALL=y |
29 | CONFIG_GENERIC_CLOCKEVENTS=y | 29 | CONFIG_GENERIC_CLOCKEVENTS=y |
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
31 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 34 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -69,16 +70,22 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
69 | # CONFIG_POSIX_MQUEUE is not set | 70 | # CONFIG_POSIX_MQUEUE is not set |
70 | # CONFIG_BSD_PROCESS_ACCT is not set | 71 | # CONFIG_BSD_PROCESS_ACCT is not set |
71 | # CONFIG_TASKSTATS is not set | 72 | # CONFIG_TASKSTATS is not set |
72 | # CONFIG_USER_NS is not set | ||
73 | # CONFIG_PID_NS is not set | ||
74 | # CONFIG_AUDIT is not set | 73 | # CONFIG_AUDIT is not set |
75 | CONFIG_IKCONFIG=y | 74 | CONFIG_IKCONFIG=y |
76 | CONFIG_IKCONFIG_PROC=y | 75 | CONFIG_IKCONFIG_PROC=y |
77 | CONFIG_LOG_BUF_SHIFT=15 | 76 | CONFIG_LOG_BUF_SHIFT=15 |
78 | # CONFIG_CGROUPS is not set | 77 | # CONFIG_CGROUPS is not set |
79 | # CONFIG_FAIR_GROUP_SCHED is not set | 78 | # CONFIG_GROUP_SCHED is not set |
79 | # CONFIG_USER_SCHED is not set | ||
80 | # CONFIG_CGROUP_SCHED is not set | ||
80 | CONFIG_SYSFS_DEPRECATED=y | 81 | CONFIG_SYSFS_DEPRECATED=y |
82 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
81 | # CONFIG_RELAY is not set | 83 | # CONFIG_RELAY is not set |
84 | CONFIG_NAMESPACES=y | ||
85 | # CONFIG_UTS_NS is not set | ||
86 | # CONFIG_IPC_NS is not set | ||
87 | # CONFIG_USER_NS is not set | ||
88 | # CONFIG_PID_NS is not set | ||
82 | CONFIG_BLK_DEV_INITRD=y | 89 | CONFIG_BLK_DEV_INITRD=y |
83 | CONFIG_INITRAMFS_SOURCE="" | 90 | CONFIG_INITRAMFS_SOURCE="" |
84 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 91 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -92,11 +99,13 @@ CONFIG_HOTPLUG=y | |||
92 | CONFIG_PRINTK=y | 99 | CONFIG_PRINTK=y |
93 | CONFIG_BUG=y | 100 | CONFIG_BUG=y |
94 | CONFIG_ELF_CORE=y | 101 | CONFIG_ELF_CORE=y |
102 | # CONFIG_COMPAT_BRK is not set | ||
95 | CONFIG_BASE_FULL=y | 103 | CONFIG_BASE_FULL=y |
96 | CONFIG_FUTEX=y | 104 | CONFIG_FUTEX=y |
97 | CONFIG_ANON_INODES=y | 105 | CONFIG_ANON_INODES=y |
98 | CONFIG_EPOLL=y | 106 | CONFIG_EPOLL=y |
99 | CONFIG_SIGNALFD=y | 107 | CONFIG_SIGNALFD=y |
108 | CONFIG_TIMERFD=y | ||
100 | CONFIG_EVENTFD=y | 109 | CONFIG_EVENTFD=y |
101 | CONFIG_SHMEM=y | 110 | CONFIG_SHMEM=y |
102 | CONFIG_VM_EVENT_COUNTERS=y | 111 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -104,6 +113,14 @@ CONFIG_SLUB_DEBUG=y | |||
104 | # CONFIG_SLAB is not set | 113 | # CONFIG_SLAB is not set |
105 | CONFIG_SLUB=y | 114 | CONFIG_SLUB=y |
106 | # CONFIG_SLOB is not set | 115 | # CONFIG_SLOB is not set |
116 | # CONFIG_PROFILING is not set | ||
117 | # CONFIG_MARKERS is not set | ||
118 | CONFIG_HAVE_OPROFILE=y | ||
119 | # CONFIG_KPROBES is not set | ||
120 | CONFIG_HAVE_KPROBES=y | ||
121 | CONFIG_HAVE_KRETPROBES=y | ||
122 | CONFIG_PROC_PAGE_MONITOR=y | ||
123 | CONFIG_SLABINFO=y | ||
107 | CONFIG_RT_MUTEXES=y | 124 | CONFIG_RT_MUTEXES=y |
108 | # CONFIG_TINY_SHMEM is not set | 125 | # CONFIG_TINY_SHMEM is not set |
109 | CONFIG_BASE_SMALL=0 | 126 | CONFIG_BASE_SMALL=0 |
@@ -131,6 +148,7 @@ CONFIG_DEFAULT_AS=y | |||
131 | # CONFIG_DEFAULT_CFQ is not set | 148 | # CONFIG_DEFAULT_CFQ is not set |
132 | # CONFIG_DEFAULT_NOOP is not set | 149 | # CONFIG_DEFAULT_NOOP is not set |
133 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 150 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
151 | CONFIG_CLASSIC_RCU=y | ||
134 | 152 | ||
135 | # | 153 | # |
136 | # Platform support | 154 | # Platform support |
@@ -141,8 +159,8 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
141 | # CONFIG_PPC_86xx is not set | 159 | # CONFIG_PPC_86xx is not set |
142 | # CONFIG_PPC_PSERIES is not set | 160 | # CONFIG_PPC_PSERIES is not set |
143 | # CONFIG_PPC_ISERIES is not set | 161 | # CONFIG_PPC_ISERIES is not set |
144 | # CONFIG_PPC_MPC52xx is not set | 162 | # CONFIG_PPC_MPC512x is not set |
145 | # CONFIG_PPC_MPC5200 is not set | 163 | # CONFIG_PPC_MPC5121 is not set |
146 | # CONFIG_PPC_PMAC is not set | 164 | # CONFIG_PPC_PMAC is not set |
147 | # CONFIG_PPC_MAPLE is not set | 165 | # CONFIG_PPC_MAPLE is not set |
148 | # CONFIG_PPC_PASEMI is not set | 166 | # CONFIG_PPC_PASEMI is not set |
@@ -164,6 +182,7 @@ CONFIG_CBE_RAS=y | |||
164 | CONFIG_PPC_NATIVE=y | 182 | CONFIG_PPC_NATIVE=y |
165 | CONFIG_UDBG_RTAS_CONSOLE=y | 183 | CONFIG_UDBG_RTAS_CONSOLE=y |
166 | CONFIG_PPC_UDBG_BEAT=y | 184 | CONFIG_PPC_UDBG_BEAT=y |
185 | # CONFIG_IPIC is not set | ||
167 | CONFIG_MPIC=y | 186 | CONFIG_MPIC=y |
168 | # CONFIG_MPIC_WEIRD is not set | 187 | # CONFIG_MPIC_WEIRD is not set |
169 | # CONFIG_PPC_I8259 is not set | 188 | # CONFIG_PPC_I8259 is not set |
@@ -177,7 +196,6 @@ CONFIG_PPC_RTAS=y | |||
177 | CONFIG_PPC_INDIRECT_IO=y | 196 | CONFIG_PPC_INDIRECT_IO=y |
178 | CONFIG_GENERIC_IOMAP=y | 197 | CONFIG_GENERIC_IOMAP=y |
179 | # CONFIG_CPU_FREQ is not set | 198 | # CONFIG_CPU_FREQ is not set |
180 | # CONFIG_CPM2 is not set | ||
181 | # CONFIG_FSL_ULI1575 is not set | 199 | # CONFIG_FSL_ULI1575 is not set |
182 | 200 | ||
183 | # | 201 | # |
@@ -192,16 +210,20 @@ CONFIG_HZ_250=y | |||
192 | # CONFIG_HZ_300 is not set | 210 | # CONFIG_HZ_300 is not set |
193 | # CONFIG_HZ_1000 is not set | 211 | # CONFIG_HZ_1000 is not set |
194 | CONFIG_HZ=250 | 212 | CONFIG_HZ=250 |
213 | # CONFIG_SCHED_HRTICK is not set | ||
195 | CONFIG_PREEMPT_NONE=y | 214 | CONFIG_PREEMPT_NONE=y |
196 | # CONFIG_PREEMPT_VOLUNTARY is not set | 215 | # CONFIG_PREEMPT_VOLUNTARY is not set |
197 | # CONFIG_PREEMPT is not set | 216 | # CONFIG_PREEMPT is not set |
198 | CONFIG_PREEMPT_BKL=y | ||
199 | CONFIG_BINFMT_ELF=y | 217 | CONFIG_BINFMT_ELF=y |
218 | CONFIG_COMPAT_BINFMT_ELF=y | ||
200 | CONFIG_BINFMT_MISC=m | 219 | CONFIG_BINFMT_MISC=m |
201 | CONFIG_FORCE_MAX_ZONEORDER=13 | 220 | CONFIG_FORCE_MAX_ZONEORDER=13 |
202 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 221 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
203 | # CONFIG_IOMMU_VMERGE is not set | 222 | # CONFIG_IOMMU_VMERGE is not set |
223 | CONFIG_IOMMU_HELPER=y | ||
204 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 224 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
225 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
226 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
205 | CONFIG_KEXEC=y | 227 | CONFIG_KEXEC=y |
206 | # CONFIG_CRASH_DUMP is not set | 228 | # CONFIG_CRASH_DUMP is not set |
207 | # CONFIG_IRQ_ALL_CPUS is not set | 229 | # CONFIG_IRQ_ALL_CPUS is not set |
@@ -223,6 +245,7 @@ CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y | |||
223 | CONFIG_SPARSEMEM_VMEMMAP=y | 245 | CONFIG_SPARSEMEM_VMEMMAP=y |
224 | CONFIG_MEMORY_HOTPLUG=y | 246 | CONFIG_MEMORY_HOTPLUG=y |
225 | CONFIG_MEMORY_HOTPLUG_SPARSE=y | 247 | CONFIG_MEMORY_HOTPLUG_SPARSE=y |
248 | # CONFIG_MEMORY_HOTREMOVE is not set | ||
226 | CONFIG_SPLIT_PTLOCK_CPUS=4 | 249 | CONFIG_SPLIT_PTLOCK_CPUS=4 |
227 | CONFIG_MIGRATION=y | 250 | CONFIG_MIGRATION=y |
228 | CONFIG_RESOURCES_64BIT=y | 251 | CONFIG_RESOURCES_64BIT=y |
@@ -237,7 +260,6 @@ CONFIG_PROC_DEVICETREE=y | |||
237 | # CONFIG_CMDLINE_BOOL is not set | 260 | # CONFIG_CMDLINE_BOOL is not set |
238 | # CONFIG_PM is not set | 261 | # CONFIG_PM is not set |
239 | CONFIG_SECCOMP=y | 262 | CONFIG_SECCOMP=y |
240 | # CONFIG_WANT_DEVICE_TREE is not set | ||
241 | CONFIG_ISA_DMA_API=y | 263 | CONFIG_ISA_DMA_API=y |
242 | 264 | ||
243 | # | 265 | # |
@@ -273,6 +295,7 @@ CONFIG_XFRM=y | |||
273 | # CONFIG_XFRM_USER is not set | 295 | # CONFIG_XFRM_USER is not set |
274 | # CONFIG_XFRM_SUB_POLICY is not set | 296 | # CONFIG_XFRM_SUB_POLICY is not set |
275 | # CONFIG_XFRM_MIGRATE is not set | 297 | # CONFIG_XFRM_MIGRATE is not set |
298 | # CONFIG_XFRM_STATISTICS is not set | ||
276 | # CONFIG_NET_KEY is not set | 299 | # CONFIG_NET_KEY is not set |
277 | CONFIG_INET=y | 300 | CONFIG_INET=y |
278 | CONFIG_IP_MULTICAST=y | 301 | CONFIG_IP_MULTICAST=y |
@@ -320,12 +343,13 @@ CONFIG_IPV6_TUNNEL=m | |||
320 | # CONFIG_NETWORK_SECMARK is not set | 343 | # CONFIG_NETWORK_SECMARK is not set |
321 | CONFIG_NETFILTER=y | 344 | CONFIG_NETFILTER=y |
322 | # CONFIG_NETFILTER_DEBUG is not set | 345 | # CONFIG_NETFILTER_DEBUG is not set |
346 | CONFIG_NETFILTER_ADVANCED=y | ||
323 | 347 | ||
324 | # | 348 | # |
325 | # Core Netfilter Configuration | 349 | # Core Netfilter Configuration |
326 | # | 350 | # |
327 | # CONFIG_NETFILTER_NETLINK is not set | 351 | # CONFIG_NETFILTER_NETLINK_QUEUE is not set |
328 | # CONFIG_NF_CONNTRACK_ENABLED is not set | 352 | # CONFIG_NETFILTER_NETLINK_LOG is not set |
329 | # CONFIG_NF_CONNTRACK is not set | 353 | # CONFIG_NF_CONNTRACK is not set |
330 | # CONFIG_NETFILTER_XTABLES is not set | 354 | # CONFIG_NETFILTER_XTABLES is not set |
331 | 355 | ||
@@ -337,7 +361,7 @@ CONFIG_IP_NF_QUEUE=m | |||
337 | # CONFIG_IP_NF_ARPTABLES is not set | 361 | # CONFIG_IP_NF_ARPTABLES is not set |
338 | 362 | ||
339 | # | 363 | # |
340 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | 364 | # IPv6: Netfilter Configuration |
341 | # | 365 | # |
342 | # CONFIG_IP6_NF_QUEUE is not set | 366 | # CONFIG_IP6_NF_QUEUE is not set |
343 | # CONFIG_IP6_NF_IPTABLES is not set | 367 | # CONFIG_IP6_NF_IPTABLES is not set |
@@ -362,6 +386,7 @@ CONFIG_IP_NF_QUEUE=m | |||
362 | # | 386 | # |
363 | # CONFIG_NET_PKTGEN is not set | 387 | # CONFIG_NET_PKTGEN is not set |
364 | # CONFIG_HAMRADIO is not set | 388 | # CONFIG_HAMRADIO is not set |
389 | # CONFIG_CAN is not set | ||
365 | # CONFIG_IRDA is not set | 390 | # CONFIG_IRDA is not set |
366 | # CONFIG_BT is not set | 391 | # CONFIG_BT is not set |
367 | # CONFIG_AF_RXRPC is not set | 392 | # CONFIG_AF_RXRPC is not set |
@@ -408,7 +433,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
408 | CONFIG_BLK_DEV_RAM=y | 433 | CONFIG_BLK_DEV_RAM=y |
409 | CONFIG_BLK_DEV_RAM_COUNT=16 | 434 | CONFIG_BLK_DEV_RAM_COUNT=16 |
410 | CONFIG_BLK_DEV_RAM_SIZE=131072 | 435 | CONFIG_BLK_DEV_RAM_SIZE=131072 |
411 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 436 | # CONFIG_BLK_DEV_XIP is not set |
412 | # CONFIG_CDROM_PKTCDVD is not set | 437 | # CONFIG_CDROM_PKTCDVD is not set |
413 | # CONFIG_ATA_OVER_ETH is not set | 438 | # CONFIG_ATA_OVER_ETH is not set |
414 | CONFIG_MISC_DEVICES=y | 439 | CONFIG_MISC_DEVICES=y |
@@ -416,16 +441,19 @@ CONFIG_MISC_DEVICES=y | |||
416 | # CONFIG_EEPROM_93CX6 is not set | 441 | # CONFIG_EEPROM_93CX6 is not set |
417 | # CONFIG_SGI_IOC4 is not set | 442 | # CONFIG_SGI_IOC4 is not set |
418 | # CONFIG_TIFM_CORE is not set | 443 | # CONFIG_TIFM_CORE is not set |
444 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
445 | CONFIG_HAVE_IDE=y | ||
419 | CONFIG_IDE=y | 446 | CONFIG_IDE=y |
420 | CONFIG_BLK_DEV_IDE=y | 447 | CONFIG_BLK_DEV_IDE=y |
421 | 448 | ||
422 | # | 449 | # |
423 | # Please see Documentation/ide.txt for help/info on IDE drives | 450 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
424 | # | 451 | # |
425 | # CONFIG_BLK_DEV_IDE_SATA is not set | 452 | # CONFIG_BLK_DEV_IDE_SATA is not set |
426 | CONFIG_BLK_DEV_IDEDISK=y | 453 | CONFIG_BLK_DEV_IDEDISK=y |
427 | CONFIG_IDEDISK_MULTI_MODE=y | 454 | CONFIG_IDEDISK_MULTI_MODE=y |
428 | CONFIG_BLK_DEV_IDECD=m | 455 | CONFIG_BLK_DEV_IDECD=m |
456 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
429 | # CONFIG_BLK_DEV_IDETAPE is not set | 457 | # CONFIG_BLK_DEV_IDETAPE is not set |
430 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 458 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
431 | # CONFIG_BLK_DEV_IDESCSI is not set | 459 | # CONFIG_BLK_DEV_IDESCSI is not set |
@@ -437,12 +465,12 @@ CONFIG_IDE_PROC_FS=y | |||
437 | # | 465 | # |
438 | CONFIG_IDE_GENERIC=y | 466 | CONFIG_IDE_GENERIC=y |
439 | # CONFIG_BLK_DEV_PLATFORM is not set | 467 | # CONFIG_BLK_DEV_PLATFORM is not set |
468 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
440 | 469 | ||
441 | # | 470 | # |
442 | # PCI IDE chipsets support | 471 | # PCI IDE chipsets support |
443 | # | 472 | # |
444 | CONFIG_BLK_DEV_IDEPCI=y | 473 | CONFIG_BLK_DEV_IDEPCI=y |
445 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
446 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 474 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
447 | # CONFIG_BLK_DEV_OFFBOARD is not set | 475 | # CONFIG_BLK_DEV_OFFBOARD is not set |
448 | CONFIG_BLK_DEV_GENERIC=y | 476 | CONFIG_BLK_DEV_GENERIC=y |
@@ -474,7 +502,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
474 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 502 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
475 | # CONFIG_BLK_DEV_TC86C001 is not set | 503 | # CONFIG_BLK_DEV_TC86C001 is not set |
476 | CONFIG_BLK_DEV_CELLEB=y | 504 | CONFIG_BLK_DEV_CELLEB=y |
477 | # CONFIG_IDE_ARM is not set | ||
478 | CONFIG_BLK_DEV_IDEDMA=y | 505 | CONFIG_BLK_DEV_IDEDMA=y |
479 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 506 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
480 | # CONFIG_BLK_DEV_HD is not set | 507 | # CONFIG_BLK_DEV_HD is not set |
@@ -540,6 +567,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
540 | # CONFIG_SCSI_IPS is not set | 567 | # CONFIG_SCSI_IPS is not set |
541 | # CONFIG_SCSI_INITIO is not set | 568 | # CONFIG_SCSI_INITIO is not set |
542 | # CONFIG_SCSI_INIA100 is not set | 569 | # CONFIG_SCSI_INIA100 is not set |
570 | # CONFIG_SCSI_MVSAS is not set | ||
543 | # CONFIG_SCSI_STEX is not set | 571 | # CONFIG_SCSI_STEX is not set |
544 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 572 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
545 | # CONFIG_SCSI_QLOGIC_1280 is not set | 573 | # CONFIG_SCSI_QLOGIC_1280 is not set |
@@ -589,7 +617,6 @@ CONFIG_NETDEVICES=y | |||
589 | # CONFIG_EQUALIZER is not set | 617 | # CONFIG_EQUALIZER is not set |
590 | # CONFIG_TUN is not set | 618 | # CONFIG_TUN is not set |
591 | # CONFIG_VETH is not set | 619 | # CONFIG_VETH is not set |
592 | # CONFIG_IP1000 is not set | ||
593 | # CONFIG_ARCNET is not set | 620 | # CONFIG_ARCNET is not set |
594 | # CONFIG_PHYLIB is not set | 621 | # CONFIG_PHYLIB is not set |
595 | CONFIG_NET_ETHERNET=y | 622 | CONFIG_NET_ETHERNET=y |
@@ -612,6 +639,9 @@ CONFIG_NETDEV_1000=y | |||
612 | # CONFIG_DL2K is not set | 639 | # CONFIG_DL2K is not set |
613 | # CONFIG_E1000 is not set | 640 | # CONFIG_E1000 is not set |
614 | # CONFIG_E1000E is not set | 641 | # CONFIG_E1000E is not set |
642 | # CONFIG_E1000E_ENABLED is not set | ||
643 | # CONFIG_IP1000 is not set | ||
644 | # CONFIG_IGB is not set | ||
615 | # CONFIG_NS83820 is not set | 645 | # CONFIG_NS83820 is not set |
616 | # CONFIG_HAMACHI is not set | 646 | # CONFIG_HAMACHI is not set |
617 | # CONFIG_YELLOWFIN is not set | 647 | # CONFIG_YELLOWFIN is not set |
@@ -638,6 +668,7 @@ CONFIG_NETDEV_10000=y | |||
638 | # CONFIG_PASEMI_MAC is not set | 668 | # CONFIG_PASEMI_MAC is not set |
639 | # CONFIG_MLX4_CORE is not set | 669 | # CONFIG_MLX4_CORE is not set |
640 | # CONFIG_TEHUTI is not set | 670 | # CONFIG_TEHUTI is not set |
671 | # CONFIG_BNX2X is not set | ||
641 | # CONFIG_TR is not set | 672 | # CONFIG_TR is not set |
642 | 673 | ||
643 | # | 674 | # |
@@ -660,7 +691,6 @@ CONFIG_NETDEV_10000=y | |||
660 | # CONFIG_PPP is not set | 691 | # CONFIG_PPP is not set |
661 | # CONFIG_SLIP is not set | 692 | # CONFIG_SLIP is not set |
662 | # CONFIG_NET_FC is not set | 693 | # CONFIG_NET_FC is not set |
663 | # CONFIG_SHAPER is not set | ||
664 | # CONFIG_NETCONSOLE is not set | 694 | # CONFIG_NETCONSOLE is not set |
665 | # CONFIG_NETPOLL is not set | 695 | # CONFIG_NETPOLL is not set |
666 | # CONFIG_NET_POLL_CONTROLLER is not set | 696 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -719,16 +749,17 @@ CONFIG_SERIAL_NONSTANDARD=y | |||
719 | # CONFIG_DIGIEPCA is not set | 749 | # CONFIG_DIGIEPCA is not set |
720 | # CONFIG_MOXA_INTELLIO is not set | 750 | # CONFIG_MOXA_INTELLIO is not set |
721 | # CONFIG_MOXA_SMARTIO is not set | 751 | # CONFIG_MOXA_SMARTIO is not set |
722 | # CONFIG_MOXA_SMARTIO_NEW is not set | ||
723 | # CONFIG_ISI is not set | 752 | # CONFIG_ISI is not set |
724 | # CONFIG_SYNCLINK is not set | 753 | # CONFIG_SYNCLINK is not set |
725 | # CONFIG_SYNCLINKMP is not set | 754 | # CONFIG_SYNCLINKMP is not set |
726 | # CONFIG_SYNCLINK_GT is not set | 755 | # CONFIG_SYNCLINK_GT is not set |
727 | # CONFIG_N_HDLC is not set | 756 | # CONFIG_N_HDLC is not set |
757 | # CONFIG_RISCOM8 is not set | ||
728 | # CONFIG_SPECIALIX is not set | 758 | # CONFIG_SPECIALIX is not set |
729 | # CONFIG_SX is not set | 759 | # CONFIG_SX is not set |
730 | # CONFIG_RIO is not set | 760 | # CONFIG_RIO is not set |
731 | # CONFIG_STALDRV is not set | 761 | # CONFIG_STALDRV is not set |
762 | # CONFIG_NOZOMI is not set | ||
732 | 763 | ||
733 | # | 764 | # |
734 | # Serial drivers | 765 | # Serial drivers |
@@ -802,13 +833,12 @@ CONFIG_I2C_ALGOBIT=y | |||
802 | # | 833 | # |
803 | # Miscellaneous I2C Chip support | 834 | # Miscellaneous I2C Chip support |
804 | # | 835 | # |
805 | # CONFIG_SENSORS_DS1337 is not set | ||
806 | # CONFIG_SENSORS_DS1374 is not set | ||
807 | # CONFIG_DS1682 is not set | 836 | # CONFIG_DS1682 is not set |
808 | # CONFIG_SENSORS_EEPROM is not set | 837 | # CONFIG_SENSORS_EEPROM is not set |
809 | # CONFIG_SENSORS_PCF8574 is not set | 838 | # CONFIG_SENSORS_PCF8574 is not set |
810 | # CONFIG_SENSORS_PCA9539 is not set | 839 | # CONFIG_PCF8575 is not set |
811 | # CONFIG_SENSORS_PCF8591 is not set | 840 | # CONFIG_SENSORS_PCF8591 is not set |
841 | # CONFIG_TPS65010 is not set | ||
812 | # CONFIG_SENSORS_MAX6875 is not set | 842 | # CONFIG_SENSORS_MAX6875 is not set |
813 | # CONFIG_SENSORS_TSL2550 is not set | 843 | # CONFIG_SENSORS_TSL2550 is not set |
814 | # CONFIG_I2C_DEBUG_CORE is not set | 844 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -824,6 +854,7 @@ CONFIG_I2C_ALGOBIT=y | |||
824 | # CONFIG_W1 is not set | 854 | # CONFIG_W1 is not set |
825 | # CONFIG_POWER_SUPPLY is not set | 855 | # CONFIG_POWER_SUPPLY is not set |
826 | # CONFIG_HWMON is not set | 856 | # CONFIG_HWMON is not set |
857 | # CONFIG_THERMAL is not set | ||
827 | CONFIG_WATCHDOG=y | 858 | CONFIG_WATCHDOG=y |
828 | # CONFIG_WATCHDOG_NOWAYOUT is not set | 859 | # CONFIG_WATCHDOG_NOWAYOUT is not set |
829 | 860 | ||
@@ -905,6 +936,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
905 | CONFIG_USB_ARCH_HAS_EHCI=y | 936 | CONFIG_USB_ARCH_HAS_EHCI=y |
906 | CONFIG_USB=y | 937 | CONFIG_USB=y |
907 | # CONFIG_USB_DEBUG is not set | 938 | # CONFIG_USB_DEBUG is not set |
939 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
908 | 940 | ||
909 | # | 941 | # |
910 | # Miscellaneous USB options | 942 | # Miscellaneous USB options |
@@ -918,10 +950,10 @@ CONFIG_USB_DEVICEFS=y | |||
918 | # USB Host Controller Drivers | 950 | # USB Host Controller Drivers |
919 | # | 951 | # |
920 | CONFIG_USB_EHCI_HCD=m | 952 | CONFIG_USB_EHCI_HCD=m |
921 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
922 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 953 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
923 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 954 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
924 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | 955 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y |
956 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
925 | # CONFIG_USB_ISP116X_HCD is not set | 957 | # CONFIG_USB_ISP116X_HCD is not set |
926 | CONFIG_USB_OHCI_HCD=m | 958 | CONFIG_USB_OHCI_HCD=m |
927 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 959 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
@@ -969,10 +1001,6 @@ CONFIG_USB_MON=y | |||
969 | # | 1001 | # |
970 | # USB port drivers | 1002 | # USB port drivers |
971 | # | 1003 | # |
972 | |||
973 | # | ||
974 | # USB Serial Converter support | ||
975 | # | ||
976 | # CONFIG_USB_SERIAL is not set | 1004 | # CONFIG_USB_SERIAL is not set |
977 | 1005 | ||
978 | # | 1006 | # |
@@ -998,20 +1026,14 @@ CONFIG_USB_MON=y | |||
998 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1026 | # CONFIG_USB_TRANCEVIBRATOR is not set |
999 | # CONFIG_USB_IOWARRIOR is not set | 1027 | # CONFIG_USB_IOWARRIOR is not set |
1000 | # CONFIG_USB_TEST is not set | 1028 | # CONFIG_USB_TEST is not set |
1001 | |||
1002 | # | ||
1003 | # USB DSL modem support | ||
1004 | # | ||
1005 | |||
1006 | # | ||
1007 | # USB Gadget Support | ||
1008 | # | ||
1009 | # CONFIG_USB_GADGET is not set | 1029 | # CONFIG_USB_GADGET is not set |
1010 | # CONFIG_MMC is not set | 1030 | # CONFIG_MMC is not set |
1031 | # CONFIG_MEMSTICK is not set | ||
1011 | # CONFIG_NEW_LEDS is not set | 1032 | # CONFIG_NEW_LEDS is not set |
1012 | # CONFIG_INFINIBAND is not set | 1033 | # CONFIG_INFINIBAND is not set |
1013 | # CONFIG_EDAC is not set | 1034 | # CONFIG_EDAC is not set |
1014 | # CONFIG_RTC_CLASS is not set | 1035 | # CONFIG_RTC_CLASS is not set |
1036 | # CONFIG_DMADEVICES is not set | ||
1015 | 1037 | ||
1016 | # | 1038 | # |
1017 | # Userspace I/O | 1039 | # Userspace I/O |
@@ -1041,12 +1063,10 @@ CONFIG_FS_POSIX_ACL=y | |||
1041 | # CONFIG_XFS_FS is not set | 1063 | # CONFIG_XFS_FS is not set |
1042 | # CONFIG_GFS2_FS is not set | 1064 | # CONFIG_GFS2_FS is not set |
1043 | # CONFIG_OCFS2_FS is not set | 1065 | # CONFIG_OCFS2_FS is not set |
1044 | # CONFIG_MINIX_FS is not set | 1066 | CONFIG_DNOTIFY=y |
1045 | # CONFIG_ROMFS_FS is not set | ||
1046 | CONFIG_INOTIFY=y | 1067 | CONFIG_INOTIFY=y |
1047 | CONFIG_INOTIFY_USER=y | 1068 | CONFIG_INOTIFY_USER=y |
1048 | # CONFIG_QUOTA is not set | 1069 | # CONFIG_QUOTA is not set |
1049 | CONFIG_DNOTIFY=y | ||
1050 | # CONFIG_AUTOFS_FS is not set | 1070 | # CONFIG_AUTOFS_FS is not set |
1051 | # CONFIG_AUTOFS4_FS is not set | 1071 | # CONFIG_AUTOFS4_FS is not set |
1052 | # CONFIG_FUSE_FS is not set | 1072 | # CONFIG_FUSE_FS is not set |
@@ -1095,8 +1115,10 @@ CONFIG_HUGETLB_PAGE=y | |||
1095 | # CONFIG_EFS_FS is not set | 1115 | # CONFIG_EFS_FS is not set |
1096 | # CONFIG_CRAMFS is not set | 1116 | # CONFIG_CRAMFS is not set |
1097 | # CONFIG_VXFS_FS is not set | 1117 | # CONFIG_VXFS_FS is not set |
1118 | # CONFIG_MINIX_FS is not set | ||
1098 | # CONFIG_HPFS_FS is not set | 1119 | # CONFIG_HPFS_FS is not set |
1099 | # CONFIG_QNX4FS_FS is not set | 1120 | # CONFIG_QNX4FS_FS is not set |
1121 | # CONFIG_ROMFS_FS is not set | ||
1100 | # CONFIG_SYSV_FS is not set | 1122 | # CONFIG_SYSV_FS is not set |
1101 | # CONFIG_UFS_FS is not set | 1123 | # CONFIG_UFS_FS is not set |
1102 | CONFIG_NETWORK_FILESYSTEMS=y | 1124 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1188,7 +1210,6 @@ CONFIG_NLS_ISO8859_15=m | |||
1188 | # CONFIG_NLS_KOI8_U is not set | 1210 | # CONFIG_NLS_KOI8_U is not set |
1189 | # CONFIG_NLS_UTF8 is not set | 1211 | # CONFIG_NLS_UTF8 is not set |
1190 | # CONFIG_DLM is not set | 1212 | # CONFIG_DLM is not set |
1191 | # CONFIG_UCC_SLOW is not set | ||
1192 | 1213 | ||
1193 | # | 1214 | # |
1194 | # Library routines | 1215 | # Library routines |
@@ -1206,10 +1227,6 @@ CONFIG_PLIST=y | |||
1206 | CONFIG_HAS_IOMEM=y | 1227 | CONFIG_HAS_IOMEM=y |
1207 | CONFIG_HAS_IOPORT=y | 1228 | CONFIG_HAS_IOPORT=y |
1208 | CONFIG_HAS_DMA=y | 1229 | CONFIG_HAS_DMA=y |
1209 | CONFIG_INSTRUMENTATION=y | ||
1210 | # CONFIG_PROFILING is not set | ||
1211 | # CONFIG_KPROBES is not set | ||
1212 | # CONFIG_MARKERS is not set | ||
1213 | 1230 | ||
1214 | # | 1231 | # |
1215 | # Kernel hacking | 1232 | # Kernel hacking |
@@ -1228,6 +1245,7 @@ CONFIG_SCHED_DEBUG=y | |||
1228 | # CONFIG_SCHEDSTATS is not set | 1245 | # CONFIG_SCHEDSTATS is not set |
1229 | # CONFIG_TIMER_STATS is not set | 1246 | # CONFIG_TIMER_STATS is not set |
1230 | # CONFIG_SLUB_DEBUG_ON is not set | 1247 | # CONFIG_SLUB_DEBUG_ON is not set |
1248 | # CONFIG_SLUB_STATS is not set | ||
1231 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1249 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1232 | # CONFIG_RT_MUTEX_TESTER is not set | 1250 | # CONFIG_RT_MUTEX_TESTER is not set |
1233 | # CONFIG_DEBUG_SPINLOCK is not set | 1251 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1240,9 +1258,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1240 | # CONFIG_DEBUG_VM is not set | 1258 | # CONFIG_DEBUG_VM is not set |
1241 | # CONFIG_DEBUG_LIST is not set | 1259 | # CONFIG_DEBUG_LIST is not set |
1242 | # CONFIG_DEBUG_SG is not set | 1260 | # CONFIG_DEBUG_SG is not set |
1243 | # CONFIG_FORCED_INLINING is not set | ||
1244 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1261 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1245 | # CONFIG_RCU_TORTURE_TEST is not set | 1262 | # CONFIG_RCU_TORTURE_TEST is not set |
1263 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1246 | # CONFIG_FAULT_INJECTION is not set | 1264 | # CONFIG_FAULT_INJECTION is not set |
1247 | # CONFIG_SAMPLES is not set | 1265 | # CONFIG_SAMPLES is not set |
1248 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1266 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -1265,7 +1283,9 @@ CONFIG_IRQSTACKS=y | |||
1265 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1283 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1266 | CONFIG_CRYPTO=y | 1284 | CONFIG_CRYPTO=y |
1267 | CONFIG_CRYPTO_ALGAPI=y | 1285 | CONFIG_CRYPTO_ALGAPI=y |
1286 | CONFIG_CRYPTO_AEAD=m | ||
1268 | CONFIG_CRYPTO_BLKCIPHER=m | 1287 | CONFIG_CRYPTO_BLKCIPHER=m |
1288 | # CONFIG_CRYPTO_SEQIV is not set | ||
1269 | CONFIG_CRYPTO_HASH=y | 1289 | CONFIG_CRYPTO_HASH=y |
1270 | CONFIG_CRYPTO_MANAGER=y | 1290 | CONFIG_CRYPTO_MANAGER=y |
1271 | CONFIG_CRYPTO_HMAC=y | 1291 | CONFIG_CRYPTO_HMAC=y |
@@ -1284,6 +1304,9 @@ CONFIG_CRYPTO_CBC=m | |||
1284 | CONFIG_CRYPTO_PCBC=m | 1304 | CONFIG_CRYPTO_PCBC=m |
1285 | # CONFIG_CRYPTO_LRW is not set | 1305 | # CONFIG_CRYPTO_LRW is not set |
1286 | # CONFIG_CRYPTO_XTS is not set | 1306 | # CONFIG_CRYPTO_XTS is not set |
1307 | # CONFIG_CRYPTO_CTR is not set | ||
1308 | # CONFIG_CRYPTO_GCM is not set | ||
1309 | # CONFIG_CRYPTO_CCM is not set | ||
1287 | # CONFIG_CRYPTO_CRYPTD is not set | 1310 | # CONFIG_CRYPTO_CRYPTD is not set |
1288 | CONFIG_CRYPTO_DES=m | 1311 | CONFIG_CRYPTO_DES=m |
1289 | # CONFIG_CRYPTO_FCRYPT is not set | 1312 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1299,11 +1322,13 @@ CONFIG_CRYPTO_ARC4=m | |||
1299 | CONFIG_CRYPTO_KHAZAD=m | 1322 | CONFIG_CRYPTO_KHAZAD=m |
1300 | CONFIG_CRYPTO_ANUBIS=m | 1323 | CONFIG_CRYPTO_ANUBIS=m |
1301 | # CONFIG_CRYPTO_SEED is not set | 1324 | # CONFIG_CRYPTO_SEED is not set |
1325 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1302 | CONFIG_CRYPTO_DEFLATE=m | 1326 | CONFIG_CRYPTO_DEFLATE=m |
1303 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1327 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1304 | CONFIG_CRYPTO_CRC32C=m | 1328 | CONFIG_CRYPTO_CRC32C=m |
1305 | # CONFIG_CRYPTO_CAMELLIA is not set | 1329 | # CONFIG_CRYPTO_CAMELLIA is not set |
1306 | CONFIG_CRYPTO_TEST=m | 1330 | CONFIG_CRYPTO_TEST=m |
1307 | # CONFIG_CRYPTO_AUTHENC is not set | 1331 | CONFIG_CRYPTO_AUTHENC=m |
1332 | # CONFIG_CRYPTO_LZO is not set | ||
1308 | # CONFIG_CRYPTO_HW is not set | 1333 | # CONFIG_CRYPTO_HW is not set |
1309 | # CONFIG_PPC_CLOCK is not set | 1334 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/chrp32_defconfig b/arch/powerpc/configs/chrp32_defconfig index 5989b5d2277e..38b85b211c38 100644 --- a/arch/powerpc/configs/chrp32_defconfig +++ b/arch/powerpc/configs/chrp32_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc4 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Dec 6 16:48:09 2007 | 4 | # Thu Mar 20 10:33:36 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -30,6 +30,7 @@ CONFIG_GENERIC_TIME=y | |||
30 | CONFIG_GENERIC_TIME_VSYSCALL=y | 30 | CONFIG_GENERIC_TIME_VSYSCALL=y |
31 | CONFIG_GENERIC_CLOCKEVENTS=y | 31 | CONFIG_GENERIC_CLOCKEVENTS=y |
32 | CONFIG_GENERIC_HARDIRQS=y | 32 | CONFIG_GENERIC_HARDIRQS=y |
33 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
33 | CONFIG_IRQ_PER_CPU=y | 34 | CONFIG_IRQ_PER_CPU=y |
34 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 35 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
35 | CONFIG_ARCH_HAS_ILOG2_U32=y | 36 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -67,16 +68,22 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
67 | CONFIG_POSIX_MQUEUE=y | 68 | CONFIG_POSIX_MQUEUE=y |
68 | # CONFIG_BSD_PROCESS_ACCT is not set | 69 | # CONFIG_BSD_PROCESS_ACCT is not set |
69 | # CONFIG_TASKSTATS is not set | 70 | # CONFIG_TASKSTATS is not set |
70 | # CONFIG_USER_NS is not set | ||
71 | # CONFIG_PID_NS is not set | ||
72 | # CONFIG_AUDIT is not set | 71 | # CONFIG_AUDIT is not set |
73 | CONFIG_IKCONFIG=y | 72 | CONFIG_IKCONFIG=y |
74 | CONFIG_IKCONFIG_PROC=y | 73 | CONFIG_IKCONFIG_PROC=y |
75 | CONFIG_LOG_BUF_SHIFT=15 | 74 | CONFIG_LOG_BUF_SHIFT=15 |
76 | # CONFIG_CGROUPS is not set | 75 | # CONFIG_CGROUPS is not set |
77 | # CONFIG_FAIR_GROUP_SCHED is not set | 76 | # CONFIG_GROUP_SCHED is not set |
77 | # CONFIG_USER_SCHED is not set | ||
78 | # CONFIG_CGROUP_SCHED is not set | ||
78 | CONFIG_SYSFS_DEPRECATED=y | 79 | CONFIG_SYSFS_DEPRECATED=y |
80 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
79 | # CONFIG_RELAY is not set | 81 | # CONFIG_RELAY is not set |
82 | CONFIG_NAMESPACES=y | ||
83 | # CONFIG_UTS_NS is not set | ||
84 | # CONFIG_IPC_NS is not set | ||
85 | # CONFIG_USER_NS is not set | ||
86 | # CONFIG_PID_NS is not set | ||
80 | CONFIG_BLK_DEV_INITRD=y | 87 | CONFIG_BLK_DEV_INITRD=y |
81 | CONFIG_INITRAMFS_SOURCE="" | 88 | CONFIG_INITRAMFS_SOURCE="" |
82 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 89 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
@@ -90,11 +97,13 @@ CONFIG_HOTPLUG=y | |||
90 | CONFIG_PRINTK=y | 97 | CONFIG_PRINTK=y |
91 | CONFIG_BUG=y | 98 | CONFIG_BUG=y |
92 | CONFIG_ELF_CORE=y | 99 | CONFIG_ELF_CORE=y |
100 | # CONFIG_COMPAT_BRK is not set | ||
93 | CONFIG_BASE_FULL=y | 101 | CONFIG_BASE_FULL=y |
94 | CONFIG_FUTEX=y | 102 | CONFIG_FUTEX=y |
95 | CONFIG_ANON_INODES=y | 103 | CONFIG_ANON_INODES=y |
96 | CONFIG_EPOLL=y | 104 | CONFIG_EPOLL=y |
97 | CONFIG_SIGNALFD=y | 105 | CONFIG_SIGNALFD=y |
106 | CONFIG_TIMERFD=y | ||
98 | CONFIG_EVENTFD=y | 107 | CONFIG_EVENTFD=y |
99 | CONFIG_SHMEM=y | 108 | CONFIG_SHMEM=y |
100 | CONFIG_VM_EVENT_COUNTERS=y | 109 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -102,6 +111,14 @@ CONFIG_SLUB_DEBUG=y | |||
102 | # CONFIG_SLAB is not set | 111 | # CONFIG_SLAB is not set |
103 | CONFIG_SLUB=y | 112 | CONFIG_SLUB=y |
104 | # CONFIG_SLOB is not set | 113 | # CONFIG_SLOB is not set |
114 | # CONFIG_PROFILING is not set | ||
115 | # CONFIG_MARKERS is not set | ||
116 | CONFIG_HAVE_OPROFILE=y | ||
117 | # CONFIG_KPROBES is not set | ||
118 | CONFIG_HAVE_KPROBES=y | ||
119 | CONFIG_HAVE_KRETPROBES=y | ||
120 | CONFIG_PROC_PAGE_MONITOR=y | ||
121 | CONFIG_SLABINFO=y | ||
105 | CONFIG_RT_MUTEXES=y | 122 | CONFIG_RT_MUTEXES=y |
106 | # CONFIG_TINY_SHMEM is not set | 123 | # CONFIG_TINY_SHMEM is not set |
107 | CONFIG_BASE_SMALL=0 | 124 | CONFIG_BASE_SMALL=0 |
@@ -130,6 +147,7 @@ CONFIG_DEFAULT_AS=y | |||
130 | # CONFIG_DEFAULT_CFQ is not set | 147 | # CONFIG_DEFAULT_CFQ is not set |
131 | # CONFIG_DEFAULT_NOOP is not set | 148 | # CONFIG_DEFAULT_NOOP is not set |
132 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 149 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
150 | CONFIG_CLASSIC_RCU=y | ||
133 | 151 | ||
134 | # | 152 | # |
135 | # Platform support | 153 | # Platform support |
@@ -140,16 +158,17 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
140 | # CONFIG_PPC_86xx is not set | 158 | # CONFIG_PPC_86xx is not set |
141 | CONFIG_CLASSIC32=y | 159 | CONFIG_CLASSIC32=y |
142 | CONFIG_PPC_CHRP=y | 160 | CONFIG_PPC_CHRP=y |
161 | # CONFIG_PPC_MPC512x is not set | ||
162 | # CONFIG_PPC_MPC5121 is not set | ||
163 | # CONFIG_MPC5121_ADS is not set | ||
143 | # CONFIG_PPC_MPC52xx is not set | 164 | # CONFIG_PPC_MPC52xx is not set |
144 | # CONFIG_PPC_MPC5200 is not set | ||
145 | # CONFIG_PPC_EFIKA is not set | ||
146 | # CONFIG_PPC_LITE5200 is not set | ||
147 | # CONFIG_PPC_PMAC is not set | 165 | # CONFIG_PPC_PMAC is not set |
148 | # CONFIG_PPC_CELL is not set | 166 | # CONFIG_PPC_CELL is not set |
149 | # CONFIG_PPC_CELL_NATIVE is not set | 167 | # CONFIG_PPC_CELL_NATIVE is not set |
150 | # CONFIG_PQ2ADS is not set | 168 | # CONFIG_PQ2ADS is not set |
151 | CONFIG_PPC_NATIVE=y | 169 | CONFIG_PPC_NATIVE=y |
152 | # CONFIG_UDBG_RTAS_CONSOLE is not set | 170 | # CONFIG_UDBG_RTAS_CONSOLE is not set |
171 | # CONFIG_IPIC is not set | ||
153 | CONFIG_MPIC=y | 172 | CONFIG_MPIC=y |
154 | # CONFIG_MPIC_WEIRD is not set | 173 | # CONFIG_MPIC_WEIRD is not set |
155 | CONFIG_PPC_I8259=y | 174 | CONFIG_PPC_I8259=y |
@@ -163,7 +182,6 @@ CONFIG_PPC_MPC106=y | |||
163 | # CONFIG_GENERIC_IOMAP is not set | 182 | # CONFIG_GENERIC_IOMAP is not set |
164 | # CONFIG_CPU_FREQ is not set | 183 | # CONFIG_CPU_FREQ is not set |
165 | # CONFIG_TAU is not set | 184 | # CONFIG_TAU is not set |
166 | # CONFIG_CPM2 is not set | ||
167 | # CONFIG_FSL_ULI1575 is not set | 185 | # CONFIG_FSL_ULI1575 is not set |
168 | 186 | ||
169 | # | 187 | # |
@@ -179,13 +197,16 @@ CONFIG_HZ_250=y | |||
179 | # CONFIG_HZ_300 is not set | 197 | # CONFIG_HZ_300 is not set |
180 | # CONFIG_HZ_1000 is not set | 198 | # CONFIG_HZ_1000 is not set |
181 | CONFIG_HZ=250 | 199 | CONFIG_HZ=250 |
200 | # CONFIG_SCHED_HRTICK is not set | ||
182 | CONFIG_PREEMPT_NONE=y | 201 | CONFIG_PREEMPT_NONE=y |
183 | # CONFIG_PREEMPT_VOLUNTARY is not set | 202 | # CONFIG_PREEMPT_VOLUNTARY is not set |
184 | # CONFIG_PREEMPT is not set | 203 | # CONFIG_PREEMPT is not set |
185 | CONFIG_PREEMPT_BKL=y | ||
186 | CONFIG_BINFMT_ELF=y | 204 | CONFIG_BINFMT_ELF=y |
187 | CONFIG_BINFMT_MISC=y | 205 | CONFIG_BINFMT_MISC=y |
206 | # CONFIG_IOMMU_HELPER is not set | ||
188 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 207 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
208 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
209 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
189 | # CONFIG_KEXEC is not set | 210 | # CONFIG_KEXEC is not set |
190 | CONFIG_IRQ_ALL_CPUS=y | 211 | CONFIG_IRQ_ALL_CPUS=y |
191 | CONFIG_ARCH_FLATMEM_ENABLE=y | 212 | CONFIG_ARCH_FLATMEM_ENABLE=y |
@@ -207,7 +228,6 @@ CONFIG_PROC_DEVICETREE=y | |||
207 | # CONFIG_CMDLINE_BOOL is not set | 228 | # CONFIG_CMDLINE_BOOL is not set |
208 | # CONFIG_PM is not set | 229 | # CONFIG_PM is not set |
209 | CONFIG_SECCOMP=y | 230 | CONFIG_SECCOMP=y |
210 | # CONFIG_WANT_DEVICE_TREE is not set | ||
211 | CONFIG_ISA_DMA_API=y | 231 | CONFIG_ISA_DMA_API=y |
212 | 232 | ||
213 | # | 233 | # |
@@ -286,74 +306,32 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
286 | # CONFIG_NETWORK_SECMARK is not set | 306 | # CONFIG_NETWORK_SECMARK is not set |
287 | CONFIG_NETFILTER=y | 307 | CONFIG_NETFILTER=y |
288 | # CONFIG_NETFILTER_DEBUG is not set | 308 | # CONFIG_NETFILTER_DEBUG is not set |
309 | # CONFIG_NETFILTER_ADVANCED is not set | ||
289 | 310 | ||
290 | # | 311 | # |
291 | # Core Netfilter Configuration | 312 | # Core Netfilter Configuration |
292 | # | 313 | # |
293 | # CONFIG_NETFILTER_NETLINK is not set | 314 | CONFIG_NETFILTER_NETLINK=m |
294 | CONFIG_NF_CONNTRACK_ENABLED=m | 315 | CONFIG_NETFILTER_NETLINK_LOG=m |
295 | CONFIG_NF_CONNTRACK=m | 316 | CONFIG_NF_CONNTRACK=m |
296 | # CONFIG_NF_CT_ACCT is not set | ||
297 | # CONFIG_NF_CONNTRACK_MARK is not set | ||
298 | # CONFIG_NF_CONNTRACK_EVENTS is not set | ||
299 | # CONFIG_NF_CT_PROTO_SCTP is not set | ||
300 | # CONFIG_NF_CT_PROTO_UDPLITE is not set | ||
301 | # CONFIG_NF_CONNTRACK_AMANDA is not set | ||
302 | CONFIG_NF_CONNTRACK_FTP=m | 317 | CONFIG_NF_CONNTRACK_FTP=m |
303 | # CONFIG_NF_CONNTRACK_H323 is not set | ||
304 | CONFIG_NF_CONNTRACK_IRC=m | 318 | CONFIG_NF_CONNTRACK_IRC=m |
305 | # CONFIG_NF_CONNTRACK_NETBIOS_NS is not set | ||
306 | # CONFIG_NF_CONNTRACK_PPTP is not set | ||
307 | # CONFIG_NF_CONNTRACK_SANE is not set | ||
308 | CONFIG_NF_CONNTRACK_SIP=m | 319 | CONFIG_NF_CONNTRACK_SIP=m |
309 | CONFIG_NF_CONNTRACK_TFTP=m | 320 | CONFIG_NF_CT_NETLINK=m |
310 | CONFIG_NETFILTER_XTABLES=m | 321 | CONFIG_NETFILTER_XTABLES=m |
311 | # CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set | ||
312 | # CONFIG_NETFILTER_XT_TARGET_MARK is not set | 322 | # CONFIG_NETFILTER_XT_TARGET_MARK is not set |
313 | # CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set | ||
314 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set | 323 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set |
315 | # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set | 324 | # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set |
316 | # CONFIG_NETFILTER_XT_MATCH_COMMENT is not set | ||
317 | # CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set | ||
318 | # CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set | ||
319 | # CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set | ||
320 | # CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set | 325 | # CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set |
321 | # CONFIG_NETFILTER_XT_MATCH_DCCP is not set | ||
322 | # CONFIG_NETFILTER_XT_MATCH_DSCP is not set | ||
323 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set | ||
324 | # CONFIG_NETFILTER_XT_MATCH_HELPER is not set | ||
325 | # CONFIG_NETFILTER_XT_MATCH_LENGTH is not set | ||
326 | # CONFIG_NETFILTER_XT_MATCH_LIMIT is not set | ||
327 | # CONFIG_NETFILTER_XT_MATCH_MAC is not set | ||
328 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set | 326 | # CONFIG_NETFILTER_XT_MATCH_MARK is not set |
329 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set | ||
330 | # CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set | ||
331 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | ||
332 | # CONFIG_NETFILTER_XT_MATCH_REALM is not set | ||
333 | # CONFIG_NETFILTER_XT_MATCH_SCTP is not set | ||
334 | # CONFIG_NETFILTER_XT_MATCH_STATE is not set | 327 | # CONFIG_NETFILTER_XT_MATCH_STATE is not set |
335 | # CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set | ||
336 | # CONFIG_NETFILTER_XT_MATCH_STRING is not set | ||
337 | # CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set | ||
338 | # CONFIG_NETFILTER_XT_MATCH_TIME is not set | ||
339 | # CONFIG_NETFILTER_XT_MATCH_U32 is not set | ||
340 | # CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set | ||
341 | 328 | ||
342 | # | 329 | # |
343 | # IP: Netfilter Configuration | 330 | # IP: Netfilter Configuration |
344 | # | 331 | # |
345 | CONFIG_NF_CONNTRACK_IPV4=m | 332 | CONFIG_NF_CONNTRACK_IPV4=m |
346 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | 333 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
347 | # CONFIG_IP_NF_QUEUE is not set | ||
348 | CONFIG_IP_NF_IPTABLES=m | 334 | CONFIG_IP_NF_IPTABLES=m |
349 | # CONFIG_IP_NF_MATCH_IPRANGE is not set | ||
350 | # CONFIG_IP_NF_MATCH_TOS is not set | ||
351 | # CONFIG_IP_NF_MATCH_RECENT is not set | ||
352 | # CONFIG_IP_NF_MATCH_ECN is not set | ||
353 | # CONFIG_IP_NF_MATCH_AH is not set | ||
354 | # CONFIG_IP_NF_MATCH_TTL is not set | ||
355 | # CONFIG_IP_NF_MATCH_OWNER is not set | ||
356 | # CONFIG_IP_NF_MATCH_ADDRTYPE is not set | ||
357 | CONFIG_IP_NF_FILTER=m | 335 | CONFIG_IP_NF_FILTER=m |
358 | CONFIG_IP_NF_TARGET_REJECT=m | 336 | CONFIG_IP_NF_TARGET_REJECT=m |
359 | CONFIG_IP_NF_TARGET_LOG=m | 337 | CONFIG_IP_NF_TARGET_LOG=m |
@@ -361,20 +339,14 @@ CONFIG_IP_NF_TARGET_LOG=m | |||
361 | CONFIG_NF_NAT=m | 339 | CONFIG_NF_NAT=m |
362 | CONFIG_NF_NAT_NEEDED=y | 340 | CONFIG_NF_NAT_NEEDED=y |
363 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 341 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
364 | CONFIG_IP_NF_TARGET_REDIRECT=m | ||
365 | # CONFIG_IP_NF_TARGET_NETMAP is not set | ||
366 | # CONFIG_IP_NF_TARGET_SAME is not set | ||
367 | # CONFIG_NF_NAT_SNMP_BASIC is not set | ||
368 | CONFIG_NF_NAT_FTP=m | 342 | CONFIG_NF_NAT_FTP=m |
369 | CONFIG_NF_NAT_IRC=m | 343 | CONFIG_NF_NAT_IRC=m |
370 | CONFIG_NF_NAT_TFTP=m | 344 | # CONFIG_NF_NAT_TFTP is not set |
371 | # CONFIG_NF_NAT_AMANDA is not set | 345 | # CONFIG_NF_NAT_AMANDA is not set |
372 | # CONFIG_NF_NAT_PPTP is not set | 346 | # CONFIG_NF_NAT_PPTP is not set |
373 | # CONFIG_NF_NAT_H323 is not set | 347 | # CONFIG_NF_NAT_H323 is not set |
374 | CONFIG_NF_NAT_SIP=m | 348 | CONFIG_NF_NAT_SIP=m |
375 | # CONFIG_IP_NF_MANGLE is not set | 349 | # CONFIG_IP_NF_MANGLE is not set |
376 | # CONFIG_IP_NF_RAW is not set | ||
377 | # CONFIG_IP_NF_ARPTABLES is not set | ||
378 | # CONFIG_IP_DCCP is not set | 350 | # CONFIG_IP_DCCP is not set |
379 | # CONFIG_IP_SCTP is not set | 351 | # CONFIG_IP_SCTP is not set |
380 | # CONFIG_TIPC is not set | 352 | # CONFIG_TIPC is not set |
@@ -396,6 +368,7 @@ CONFIG_NF_NAT_SIP=m | |||
396 | # | 368 | # |
397 | # CONFIG_NET_PKTGEN is not set | 369 | # CONFIG_NET_PKTGEN is not set |
398 | # CONFIG_HAMRADIO is not set | 370 | # CONFIG_HAMRADIO is not set |
371 | # CONFIG_CAN is not set | ||
399 | # CONFIG_IRDA is not set | 372 | # CONFIG_IRDA is not set |
400 | # CONFIG_BT is not set | 373 | # CONFIG_BT is not set |
401 | # CONFIG_AF_RXRPC is not set | 374 | # CONFIG_AF_RXRPC is not set |
@@ -445,7 +418,7 @@ CONFIG_BLK_DEV_LOOP=y | |||
445 | CONFIG_BLK_DEV_RAM=y | 418 | CONFIG_BLK_DEV_RAM=y |
446 | CONFIG_BLK_DEV_RAM_COUNT=16 | 419 | CONFIG_BLK_DEV_RAM_COUNT=16 |
447 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 420 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
448 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 421 | # CONFIG_BLK_DEV_XIP is not set |
449 | # CONFIG_CDROM_PKTCDVD is not set | 422 | # CONFIG_CDROM_PKTCDVD is not set |
450 | # CONFIG_ATA_OVER_ETH is not set | 423 | # CONFIG_ATA_OVER_ETH is not set |
451 | CONFIG_MISC_DEVICES=y | 424 | CONFIG_MISC_DEVICES=y |
@@ -453,16 +426,19 @@ CONFIG_MISC_DEVICES=y | |||
453 | # CONFIG_EEPROM_93CX6 is not set | 426 | # CONFIG_EEPROM_93CX6 is not set |
454 | # CONFIG_SGI_IOC4 is not set | 427 | # CONFIG_SGI_IOC4 is not set |
455 | # CONFIG_TIFM_CORE is not set | 428 | # CONFIG_TIFM_CORE is not set |
429 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
430 | CONFIG_HAVE_IDE=y | ||
456 | CONFIG_IDE=y | 431 | CONFIG_IDE=y |
457 | CONFIG_BLK_DEV_IDE=y | 432 | CONFIG_BLK_DEV_IDE=y |
458 | 433 | ||
459 | # | 434 | # |
460 | # Please see Documentation/ide.txt for help/info on IDE drives | 435 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
461 | # | 436 | # |
462 | # CONFIG_BLK_DEV_IDE_SATA is not set | 437 | # CONFIG_BLK_DEV_IDE_SATA is not set |
463 | CONFIG_BLK_DEV_IDEDISK=y | 438 | CONFIG_BLK_DEV_IDEDISK=y |
464 | CONFIG_IDEDISK_MULTI_MODE=y | 439 | CONFIG_IDEDISK_MULTI_MODE=y |
465 | CONFIG_BLK_DEV_IDECD=y | 440 | CONFIG_BLK_DEV_IDECD=y |
441 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
466 | # CONFIG_BLK_DEV_IDETAPE is not set | 442 | # CONFIG_BLK_DEV_IDETAPE is not set |
467 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 443 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
468 | # CONFIG_BLK_DEV_IDESCSI is not set | 444 | # CONFIG_BLK_DEV_IDESCSI is not set |
@@ -474,12 +450,12 @@ CONFIG_IDE_PROC_FS=y | |||
474 | # | 450 | # |
475 | CONFIG_IDE_GENERIC=y | 451 | CONFIG_IDE_GENERIC=y |
476 | # CONFIG_BLK_DEV_PLATFORM is not set | 452 | # CONFIG_BLK_DEV_PLATFORM is not set |
453 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
477 | 454 | ||
478 | # | 455 | # |
479 | # PCI IDE chipsets support | 456 | # PCI IDE chipsets support |
480 | # | 457 | # |
481 | CONFIG_BLK_DEV_IDEPCI=y | 458 | CONFIG_BLK_DEV_IDEPCI=y |
482 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
483 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 459 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
484 | # CONFIG_BLK_DEV_OFFBOARD is not set | 460 | # CONFIG_BLK_DEV_OFFBOARD is not set |
485 | CONFIG_BLK_DEV_GENERIC=y | 461 | CONFIG_BLK_DEV_GENERIC=y |
@@ -510,7 +486,6 @@ CONFIG_BLK_DEV_SL82C105=y | |||
510 | # CONFIG_BLK_DEV_TRM290 is not set | 486 | # CONFIG_BLK_DEV_TRM290 is not set |
511 | CONFIG_BLK_DEV_VIA82CXXX=y | 487 | CONFIG_BLK_DEV_VIA82CXXX=y |
512 | # CONFIG_BLK_DEV_TC86C001 is not set | 488 | # CONFIG_BLK_DEV_TC86C001 is not set |
513 | # CONFIG_IDE_ARM is not set | ||
514 | 489 | ||
515 | # | 490 | # |
516 | # Other IDE chipsets support | 491 | # Other IDE chipsets support |
@@ -599,6 +574,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
599 | # CONFIG_SCSI_IPS is not set | 574 | # CONFIG_SCSI_IPS is not set |
600 | # CONFIG_SCSI_INITIO is not set | 575 | # CONFIG_SCSI_INITIO is not set |
601 | # CONFIG_SCSI_INIA100 is not set | 576 | # CONFIG_SCSI_INIA100 is not set |
577 | # CONFIG_SCSI_MVSAS is not set | ||
602 | # CONFIG_SCSI_NCR53C406A is not set | 578 | # CONFIG_SCSI_NCR53C406A is not set |
603 | # CONFIG_SCSI_STEX is not set | 579 | # CONFIG_SCSI_STEX is not set |
604 | CONFIG_SCSI_SYM53C8XX_2=y | 580 | CONFIG_SCSI_SYM53C8XX_2=y |
@@ -607,7 +583,6 @@ CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 | |||
607 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | 583 | CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 |
608 | CONFIG_SCSI_SYM53C8XX_MMIO=y | 584 | CONFIG_SCSI_SYM53C8XX_MMIO=y |
609 | # CONFIG_SCSI_PAS16 is not set | 585 | # CONFIG_SCSI_PAS16 is not set |
610 | # CONFIG_SCSI_PSI240I is not set | ||
611 | # CONFIG_SCSI_QLOGIC_FAS is not set | 586 | # CONFIG_SCSI_QLOGIC_FAS is not set |
612 | # CONFIG_SCSI_QLOGIC_1280 is not set | 587 | # CONFIG_SCSI_QLOGIC_1280 is not set |
613 | # CONFIG_SCSI_QLA_FC is not set | 588 | # CONFIG_SCSI_QLA_FC is not set |
@@ -640,7 +615,6 @@ CONFIG_NETDEVICES=y | |||
640 | # CONFIG_EQUALIZER is not set | 615 | # CONFIG_EQUALIZER is not set |
641 | # CONFIG_TUN is not set | 616 | # CONFIG_TUN is not set |
642 | # CONFIG_VETH is not set | 617 | # CONFIG_VETH is not set |
643 | # CONFIG_IP1000 is not set | ||
644 | # CONFIG_ARCNET is not set | 618 | # CONFIG_ARCNET is not set |
645 | # CONFIG_PHYLIB is not set | 619 | # CONFIG_PHYLIB is not set |
646 | CONFIG_NET_ETHERNET=y | 620 | CONFIG_NET_ETHERNET=y |
@@ -688,6 +662,7 @@ CONFIG_8139TOO=y | |||
688 | # CONFIG_8139TOO_TUNE_TWISTER is not set | 662 | # CONFIG_8139TOO_TUNE_TWISTER is not set |
689 | # CONFIG_8139TOO_8129 is not set | 663 | # CONFIG_8139TOO_8129 is not set |
690 | # CONFIG_8139_OLD_RX_RESET is not set | 664 | # CONFIG_8139_OLD_RX_RESET is not set |
665 | # CONFIG_R6040 is not set | ||
691 | # CONFIG_SIS900 is not set | 666 | # CONFIG_SIS900 is not set |
692 | # CONFIG_EPIC100 is not set | 667 | # CONFIG_EPIC100 is not set |
693 | # CONFIG_SUNDANCE is not set | 668 | # CONFIG_SUNDANCE is not set |
@@ -701,6 +676,9 @@ CONFIG_NETDEV_1000=y | |||
701 | # CONFIG_DL2K is not set | 676 | # CONFIG_DL2K is not set |
702 | # CONFIG_E1000 is not set | 677 | # CONFIG_E1000 is not set |
703 | # CONFIG_E1000E is not set | 678 | # CONFIG_E1000E is not set |
679 | # CONFIG_E1000E_ENABLED is not set | ||
680 | # CONFIG_IP1000 is not set | ||
681 | # CONFIG_IGB is not set | ||
704 | # CONFIG_NS83820 is not set | 682 | # CONFIG_NS83820 is not set |
705 | # CONFIG_HAMACHI is not set | 683 | # CONFIG_HAMACHI is not set |
706 | # CONFIG_YELLOWFIN is not set | 684 | # CONFIG_YELLOWFIN is not set |
@@ -726,6 +704,7 @@ CONFIG_NETDEV_10000=y | |||
726 | # CONFIG_NIU is not set | 704 | # CONFIG_NIU is not set |
727 | # CONFIG_MLX4_CORE is not set | 705 | # CONFIG_MLX4_CORE is not set |
728 | # CONFIG_TEHUTI is not set | 706 | # CONFIG_TEHUTI is not set |
707 | # CONFIG_BNX2X is not set | ||
729 | # CONFIG_TR is not set | 708 | # CONFIG_TR is not set |
730 | 709 | ||
731 | # | 710 | # |
@@ -758,7 +737,6 @@ CONFIG_PPPOE=m | |||
758 | # CONFIG_SLIP is not set | 737 | # CONFIG_SLIP is not set |
759 | CONFIG_SLHC=m | 738 | CONFIG_SLHC=m |
760 | # CONFIG_NET_FC is not set | 739 | # CONFIG_NET_FC is not set |
761 | # CONFIG_SHAPER is not set | ||
762 | # CONFIG_NETCONSOLE is not set | 740 | # CONFIG_NETCONSOLE is not set |
763 | # CONFIG_NETPOLL is not set | 741 | # CONFIG_NETPOLL is not set |
764 | # CONFIG_NET_POLL_CONTROLLER is not set | 742 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -838,6 +816,7 @@ CONFIG_VT_CONSOLE=y | |||
838 | CONFIG_HW_CONSOLE=y | 816 | CONFIG_HW_CONSOLE=y |
839 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 817 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
840 | # CONFIG_SERIAL_NONSTANDARD is not set | 818 | # CONFIG_SERIAL_NONSTANDARD is not set |
819 | # CONFIG_NOZOMI is not set | ||
841 | 820 | ||
842 | # | 821 | # |
843 | # Serial drivers | 822 | # Serial drivers |
@@ -917,14 +896,12 @@ CONFIG_I2C_ALGOBIT=y | |||
917 | # | 896 | # |
918 | # Miscellaneous I2C Chip support | 897 | # Miscellaneous I2C Chip support |
919 | # | 898 | # |
920 | # CONFIG_SENSORS_DS1337 is not set | ||
921 | # CONFIG_SENSORS_DS1374 is not set | ||
922 | # CONFIG_DS1682 is not set | 899 | # CONFIG_DS1682 is not set |
923 | # CONFIG_SENSORS_EEPROM is not set | 900 | # CONFIG_SENSORS_EEPROM is not set |
924 | # CONFIG_SENSORS_PCF8574 is not set | 901 | # CONFIG_SENSORS_PCF8574 is not set |
925 | # CONFIG_SENSORS_PCA9539 is not set | 902 | # CONFIG_PCF8575 is not set |
926 | # CONFIG_SENSORS_PCF8591 is not set | 903 | # CONFIG_SENSORS_PCF8591 is not set |
927 | # CONFIG_SENSORS_M41T00 is not set | 904 | # CONFIG_TPS65010 is not set |
928 | # CONFIG_SENSORS_MAX6875 is not set | 905 | # CONFIG_SENSORS_MAX6875 is not set |
929 | # CONFIG_SENSORS_TSL2550 is not set | 906 | # CONFIG_SENSORS_TSL2550 is not set |
930 | # CONFIG_I2C_DEBUG_CORE is not set | 907 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -940,6 +917,7 @@ CONFIG_I2C_ALGOBIT=y | |||
940 | # CONFIG_W1 is not set | 917 | # CONFIG_W1 is not set |
941 | # CONFIG_POWER_SUPPLY is not set | 918 | # CONFIG_POWER_SUPPLY is not set |
942 | # CONFIG_HWMON is not set | 919 | # CONFIG_HWMON is not set |
920 | # CONFIG_THERMAL is not set | ||
943 | # CONFIG_WATCHDOG is not set | 921 | # CONFIG_WATCHDOG is not set |
944 | 922 | ||
945 | # | 923 | # |
@@ -1083,6 +1061,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1083 | CONFIG_USB_ARCH_HAS_EHCI=y | 1061 | CONFIG_USB_ARCH_HAS_EHCI=y |
1084 | CONFIG_USB=y | 1062 | CONFIG_USB=y |
1085 | # CONFIG_USB_DEBUG is not set | 1063 | # CONFIG_USB_DEBUG is not set |
1064 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1086 | 1065 | ||
1087 | # | 1066 | # |
1088 | # Miscellaneous USB options | 1067 | # Miscellaneous USB options |
@@ -1096,9 +1075,9 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1096 | # USB Host Controller Drivers | 1075 | # USB Host Controller Drivers |
1097 | # | 1076 | # |
1098 | CONFIG_USB_EHCI_HCD=m | 1077 | CONFIG_USB_EHCI_HCD=m |
1099 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
1100 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1078 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1101 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1079 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1080 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
1102 | # CONFIG_USB_ISP116X_HCD is not set | 1081 | # CONFIG_USB_ISP116X_HCD is not set |
1103 | CONFIG_USB_OHCI_HCD=y | 1082 | CONFIG_USB_OHCI_HCD=y |
1104 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1083 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
@@ -1147,10 +1126,6 @@ CONFIG_USB_MON=y | |||
1147 | # | 1126 | # |
1148 | # USB port drivers | 1127 | # USB port drivers |
1149 | # | 1128 | # |
1150 | |||
1151 | # | ||
1152 | # USB Serial Converter support | ||
1153 | # | ||
1154 | # CONFIG_USB_SERIAL is not set | 1129 | # CONFIG_USB_SERIAL is not set |
1155 | 1130 | ||
1156 | # | 1131 | # |
@@ -1176,20 +1151,14 @@ CONFIG_USB_MON=y | |||
1176 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1151 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1177 | # CONFIG_USB_IOWARRIOR is not set | 1152 | # CONFIG_USB_IOWARRIOR is not set |
1178 | # CONFIG_USB_TEST is not set | 1153 | # CONFIG_USB_TEST is not set |
1179 | |||
1180 | # | ||
1181 | # USB DSL modem support | ||
1182 | # | ||
1183 | |||
1184 | # | ||
1185 | # USB Gadget Support | ||
1186 | # | ||
1187 | # CONFIG_USB_GADGET is not set | 1154 | # CONFIG_USB_GADGET is not set |
1188 | # CONFIG_MMC is not set | 1155 | # CONFIG_MMC is not set |
1156 | # CONFIG_MEMSTICK is not set | ||
1189 | # CONFIG_NEW_LEDS is not set | 1157 | # CONFIG_NEW_LEDS is not set |
1190 | # CONFIG_INFINIBAND is not set | 1158 | # CONFIG_INFINIBAND is not set |
1191 | # CONFIG_EDAC is not set | 1159 | # CONFIG_EDAC is not set |
1192 | # CONFIG_RTC_CLASS is not set | 1160 | # CONFIG_RTC_CLASS is not set |
1161 | # CONFIG_DMADEVICES is not set | ||
1193 | 1162 | ||
1194 | # | 1163 | # |
1195 | # Userspace I/O | 1164 | # Userspace I/O |
@@ -1215,12 +1184,10 @@ CONFIG_FS_MBCACHE=y | |||
1215 | # CONFIG_XFS_FS is not set | 1184 | # CONFIG_XFS_FS is not set |
1216 | # CONFIG_GFS2_FS is not set | 1185 | # CONFIG_GFS2_FS is not set |
1217 | # CONFIG_OCFS2_FS is not set | 1186 | # CONFIG_OCFS2_FS is not set |
1218 | # CONFIG_MINIX_FS is not set | 1187 | CONFIG_DNOTIFY=y |
1219 | # CONFIG_ROMFS_FS is not set | ||
1220 | CONFIG_INOTIFY=y | 1188 | CONFIG_INOTIFY=y |
1221 | CONFIG_INOTIFY_USER=y | 1189 | CONFIG_INOTIFY_USER=y |
1222 | # CONFIG_QUOTA is not set | 1190 | # CONFIG_QUOTA is not set |
1223 | CONFIG_DNOTIFY=y | ||
1224 | # CONFIG_AUTOFS_FS is not set | 1191 | # CONFIG_AUTOFS_FS is not set |
1225 | # CONFIG_AUTOFS4_FS is not set | 1192 | # CONFIG_AUTOFS4_FS is not set |
1226 | # CONFIG_FUSE_FS is not set | 1193 | # CONFIG_FUSE_FS is not set |
@@ -1267,8 +1234,10 @@ CONFIG_TMPFS=y | |||
1267 | # CONFIG_EFS_FS is not set | 1234 | # CONFIG_EFS_FS is not set |
1268 | # CONFIG_CRAMFS is not set | 1235 | # CONFIG_CRAMFS is not set |
1269 | # CONFIG_VXFS_FS is not set | 1236 | # CONFIG_VXFS_FS is not set |
1237 | # CONFIG_MINIX_FS is not set | ||
1270 | # CONFIG_HPFS_FS is not set | 1238 | # CONFIG_HPFS_FS is not set |
1271 | # CONFIG_QNX4FS_FS is not set | 1239 | # CONFIG_QNX4FS_FS is not set |
1240 | # CONFIG_ROMFS_FS is not set | ||
1272 | # CONFIG_SYSV_FS is not set | 1241 | # CONFIG_SYSV_FS is not set |
1273 | # CONFIG_UFS_FS is not set | 1242 | # CONFIG_UFS_FS is not set |
1274 | CONFIG_NETWORK_FILESYSTEMS=y | 1243 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1342,7 +1311,6 @@ CONFIG_NLS_ISO8859_1=m | |||
1342 | # CONFIG_NLS_KOI8_U is not set | 1311 | # CONFIG_NLS_KOI8_U is not set |
1343 | # CONFIG_NLS_UTF8 is not set | 1312 | # CONFIG_NLS_UTF8 is not set |
1344 | # CONFIG_DLM is not set | 1313 | # CONFIG_DLM is not set |
1345 | # CONFIG_UCC_SLOW is not set | ||
1346 | 1314 | ||
1347 | # | 1315 | # |
1348 | # Library routines | 1316 | # Library routines |
@@ -1360,10 +1328,6 @@ CONFIG_PLIST=y | |||
1360 | CONFIG_HAS_IOMEM=y | 1328 | CONFIG_HAS_IOMEM=y |
1361 | CONFIG_HAS_IOPORT=y | 1329 | CONFIG_HAS_IOPORT=y |
1362 | CONFIG_HAS_DMA=y | 1330 | CONFIG_HAS_DMA=y |
1363 | CONFIG_INSTRUMENTATION=y | ||
1364 | # CONFIG_PROFILING is not set | ||
1365 | # CONFIG_KPROBES is not set | ||
1366 | # CONFIG_MARKERS is not set | ||
1367 | 1331 | ||
1368 | # | 1332 | # |
1369 | # Kernel hacking | 1333 | # Kernel hacking |
@@ -1382,6 +1346,7 @@ CONFIG_SCHED_DEBUG=y | |||
1382 | # CONFIG_SCHEDSTATS is not set | 1346 | # CONFIG_SCHEDSTATS is not set |
1383 | # CONFIG_TIMER_STATS is not set | 1347 | # CONFIG_TIMER_STATS is not set |
1384 | # CONFIG_SLUB_DEBUG_ON is not set | 1348 | # CONFIG_SLUB_DEBUG_ON is not set |
1349 | # CONFIG_SLUB_STATS is not set | ||
1385 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1350 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1386 | # CONFIG_RT_MUTEX_TESTER is not set | 1351 | # CONFIG_RT_MUTEX_TESTER is not set |
1387 | # CONFIG_DEBUG_SPINLOCK is not set | 1352 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1395,9 +1360,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1395 | # CONFIG_DEBUG_VM is not set | 1360 | # CONFIG_DEBUG_VM is not set |
1396 | # CONFIG_DEBUG_LIST is not set | 1361 | # CONFIG_DEBUG_LIST is not set |
1397 | # CONFIG_DEBUG_SG is not set | 1362 | # CONFIG_DEBUG_SG is not set |
1398 | CONFIG_FORCED_INLINING=y | ||
1399 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1363 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1400 | # CONFIG_RCU_TORTURE_TEST is not set | 1364 | # CONFIG_RCU_TORTURE_TEST is not set |
1365 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1401 | # CONFIG_FAULT_INJECTION is not set | 1366 | # CONFIG_FAULT_INJECTION is not set |
1402 | # CONFIG_SAMPLES is not set | 1367 | # CONFIG_SAMPLES is not set |
1403 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1368 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -1420,6 +1385,7 @@ CONFIG_XMON_DISASSEMBLY=y | |||
1420 | CONFIG_CRYPTO=y | 1385 | CONFIG_CRYPTO=y |
1421 | CONFIG_CRYPTO_ALGAPI=m | 1386 | CONFIG_CRYPTO_ALGAPI=m |
1422 | CONFIG_CRYPTO_BLKCIPHER=m | 1387 | CONFIG_CRYPTO_BLKCIPHER=m |
1388 | # CONFIG_CRYPTO_SEQIV is not set | ||
1423 | CONFIG_CRYPTO_MANAGER=m | 1389 | CONFIG_CRYPTO_MANAGER=m |
1424 | # CONFIG_CRYPTO_HMAC is not set | 1390 | # CONFIG_CRYPTO_HMAC is not set |
1425 | # CONFIG_CRYPTO_XCBC is not set | 1391 | # CONFIG_CRYPTO_XCBC is not set |
@@ -1437,6 +1403,9 @@ CONFIG_CRYPTO_CBC=m | |||
1437 | CONFIG_CRYPTO_PCBC=m | 1403 | CONFIG_CRYPTO_PCBC=m |
1438 | # CONFIG_CRYPTO_LRW is not set | 1404 | # CONFIG_CRYPTO_LRW is not set |
1439 | # CONFIG_CRYPTO_XTS is not set | 1405 | # CONFIG_CRYPTO_XTS is not set |
1406 | # CONFIG_CRYPTO_CTR is not set | ||
1407 | # CONFIG_CRYPTO_GCM is not set | ||
1408 | # CONFIG_CRYPTO_CCM is not set | ||
1440 | # CONFIG_CRYPTO_CRYPTD is not set | 1409 | # CONFIG_CRYPTO_CRYPTD is not set |
1441 | # CONFIG_CRYPTO_DES is not set | 1410 | # CONFIG_CRYPTO_DES is not set |
1442 | # CONFIG_CRYPTO_FCRYPT is not set | 1411 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1451,11 +1420,13 @@ CONFIG_CRYPTO_ARC4=m | |||
1451 | # CONFIG_CRYPTO_KHAZAD is not set | 1420 | # CONFIG_CRYPTO_KHAZAD is not set |
1452 | # CONFIG_CRYPTO_ANUBIS is not set | 1421 | # CONFIG_CRYPTO_ANUBIS is not set |
1453 | # CONFIG_CRYPTO_SEED is not set | 1422 | # CONFIG_CRYPTO_SEED is not set |
1423 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1454 | # CONFIG_CRYPTO_DEFLATE is not set | 1424 | # CONFIG_CRYPTO_DEFLATE is not set |
1455 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1425 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
1456 | # CONFIG_CRYPTO_CRC32C is not set | 1426 | # CONFIG_CRYPTO_CRC32C is not set |
1457 | # CONFIG_CRYPTO_CAMELLIA is not set | 1427 | # CONFIG_CRYPTO_CAMELLIA is not set |
1458 | # CONFIG_CRYPTO_TEST is not set | 1428 | # CONFIG_CRYPTO_TEST is not set |
1459 | # CONFIG_CRYPTO_AUTHENC is not set | 1429 | # CONFIG_CRYPTO_AUTHENC is not set |
1430 | # CONFIG_CRYPTO_LZO is not set | ||
1460 | # CONFIG_CRYPTO_HW is not set | 1431 | # CONFIG_CRYPTO_HW is not set |
1461 | # CONFIG_PPC_CLOCK is not set | 1432 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/g5_defconfig b/arch/powerpc/configs/g5_defconfig index 3673dd23120c..0f82f66a60f8 100644 --- a/arch/powerpc/configs/g5_defconfig +++ b/arch/powerpc/configs/g5_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc4 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Dec 6 16:48:15 2007 | 4 | # Thu Mar 20 10:36:41 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -27,6 +27,7 @@ CONFIG_GENERIC_TIME=y | |||
27 | CONFIG_GENERIC_TIME_VSYSCALL=y | 27 | CONFIG_GENERIC_TIME_VSYSCALL=y |
28 | CONFIG_GENERIC_CLOCKEVENTS=y | 28 | CONFIG_GENERIC_CLOCKEVENTS=y |
29 | CONFIG_GENERIC_HARDIRQS=y | 29 | CONFIG_GENERIC_HARDIRQS=y |
30 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
30 | CONFIG_IRQ_PER_CPU=y | 31 | CONFIG_IRQ_PER_CPU=y |
31 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
32 | CONFIG_ARCH_HAS_ILOG2_U32=y | 33 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -48,7 +49,9 @@ CONFIG_GENERIC_TBSYNC=y | |||
48 | CONFIG_AUDIT_ARCH=y | 49 | CONFIG_AUDIT_ARCH=y |
49 | CONFIG_GENERIC_BUG=y | 50 | CONFIG_GENERIC_BUG=y |
50 | # CONFIG_DEFAULT_UIMAGE is not set | 51 | # CONFIG_DEFAULT_UIMAGE is not set |
51 | CONFIG_PPC64_SWSUSP=y | 52 | CONFIG_HIBERNATE_64=y |
53 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
54 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
52 | # CONFIG_PPC_DCR_NATIVE is not set | 55 | # CONFIG_PPC_DCR_NATIVE is not set |
53 | # CONFIG_PPC_DCR_MMIO is not set | 56 | # CONFIG_PPC_DCR_MMIO is not set |
54 | # CONFIG_PPC_OF_PLATFORM_PCI is not set | 57 | # CONFIG_PPC_OF_PLATFORM_PCI is not set |
@@ -68,18 +71,22 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
68 | CONFIG_POSIX_MQUEUE=y | 71 | CONFIG_POSIX_MQUEUE=y |
69 | # CONFIG_BSD_PROCESS_ACCT is not set | 72 | # CONFIG_BSD_PROCESS_ACCT is not set |
70 | # CONFIG_TASKSTATS is not set | 73 | # CONFIG_TASKSTATS is not set |
71 | # CONFIG_USER_NS is not set | ||
72 | # CONFIG_PID_NS is not set | ||
73 | # CONFIG_AUDIT is not set | 74 | # CONFIG_AUDIT is not set |
74 | CONFIG_IKCONFIG=y | 75 | CONFIG_IKCONFIG=y |
75 | CONFIG_IKCONFIG_PROC=y | 76 | CONFIG_IKCONFIG_PROC=y |
76 | CONFIG_LOG_BUF_SHIFT=17 | 77 | CONFIG_LOG_BUF_SHIFT=17 |
77 | # CONFIG_CGROUPS is not set | 78 | # CONFIG_CGROUPS is not set |
78 | CONFIG_FAIR_GROUP_SCHED=y | 79 | # CONFIG_GROUP_SCHED is not set |
79 | CONFIG_FAIR_USER_SCHED=y | 80 | # CONFIG_USER_SCHED is not set |
80 | # CONFIG_FAIR_CGROUP_SCHED is not set | 81 | # CONFIG_CGROUP_SCHED is not set |
81 | CONFIG_SYSFS_DEPRECATED=y | 82 | CONFIG_SYSFS_DEPRECATED=y |
83 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
82 | # CONFIG_RELAY is not set | 84 | # CONFIG_RELAY is not set |
85 | CONFIG_NAMESPACES=y | ||
86 | # CONFIG_UTS_NS is not set | ||
87 | # CONFIG_IPC_NS is not set | ||
88 | # CONFIG_USER_NS is not set | ||
89 | # CONFIG_PID_NS is not set | ||
83 | CONFIG_BLK_DEV_INITRD=y | 90 | CONFIG_BLK_DEV_INITRD=y |
84 | CONFIG_INITRAMFS_SOURCE="" | 91 | CONFIG_INITRAMFS_SOURCE="" |
85 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 92 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -93,11 +100,13 @@ CONFIG_HOTPLUG=y | |||
93 | CONFIG_PRINTK=y | 100 | CONFIG_PRINTK=y |
94 | CONFIG_BUG=y | 101 | CONFIG_BUG=y |
95 | CONFIG_ELF_CORE=y | 102 | CONFIG_ELF_CORE=y |
103 | # CONFIG_COMPAT_BRK is not set | ||
96 | CONFIG_BASE_FULL=y | 104 | CONFIG_BASE_FULL=y |
97 | CONFIG_FUTEX=y | 105 | CONFIG_FUTEX=y |
98 | CONFIG_ANON_INODES=y | 106 | CONFIG_ANON_INODES=y |
99 | CONFIG_EPOLL=y | 107 | CONFIG_EPOLL=y |
100 | CONFIG_SIGNALFD=y | 108 | CONFIG_SIGNALFD=y |
109 | CONFIG_TIMERFD=y | ||
101 | CONFIG_EVENTFD=y | 110 | CONFIG_EVENTFD=y |
102 | CONFIG_SHMEM=y | 111 | CONFIG_SHMEM=y |
103 | CONFIG_VM_EVENT_COUNTERS=y | 112 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -105,6 +114,15 @@ CONFIG_SLUB_DEBUG=y | |||
105 | # CONFIG_SLAB is not set | 114 | # CONFIG_SLAB is not set |
106 | CONFIG_SLUB=y | 115 | CONFIG_SLUB=y |
107 | # CONFIG_SLOB is not set | 116 | # CONFIG_SLOB is not set |
117 | CONFIG_PROFILING=y | ||
118 | # CONFIG_MARKERS is not set | ||
119 | CONFIG_OPROFILE=y | ||
120 | CONFIG_HAVE_OPROFILE=y | ||
121 | # CONFIG_KPROBES is not set | ||
122 | CONFIG_HAVE_KPROBES=y | ||
123 | CONFIG_HAVE_KRETPROBES=y | ||
124 | CONFIG_PROC_PAGE_MONITOR=y | ||
125 | CONFIG_SLABINFO=y | ||
108 | CONFIG_RT_MUTEXES=y | 126 | CONFIG_RT_MUTEXES=y |
109 | # CONFIG_TINY_SHMEM is not set | 127 | # CONFIG_TINY_SHMEM is not set |
110 | CONFIG_BASE_SMALL=0 | 128 | CONFIG_BASE_SMALL=0 |
@@ -132,6 +150,7 @@ CONFIG_DEFAULT_AS=y | |||
132 | # CONFIG_DEFAULT_CFQ is not set | 150 | # CONFIG_DEFAULT_CFQ is not set |
133 | # CONFIG_DEFAULT_NOOP is not set | 151 | # CONFIG_DEFAULT_NOOP is not set |
134 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 152 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
153 | CONFIG_CLASSIC_RCU=y | ||
135 | 154 | ||
136 | # | 155 | # |
137 | # Platform support | 156 | # Platform support |
@@ -142,8 +161,8 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
142 | # CONFIG_PPC_86xx is not set | 161 | # CONFIG_PPC_86xx is not set |
143 | # CONFIG_PPC_PSERIES is not set | 162 | # CONFIG_PPC_PSERIES is not set |
144 | # CONFIG_PPC_ISERIES is not set | 163 | # CONFIG_PPC_ISERIES is not set |
145 | # CONFIG_PPC_MPC52xx is not set | 164 | # CONFIG_PPC_MPC512x is not set |
146 | # CONFIG_PPC_MPC5200 is not set | 165 | # CONFIG_PPC_MPC5121 is not set |
147 | CONFIG_PPC_PMAC=y | 166 | CONFIG_PPC_PMAC=y |
148 | CONFIG_PPC_PMAC64=y | 167 | CONFIG_PPC_PMAC64=y |
149 | # CONFIG_PPC_MAPLE is not set | 168 | # CONFIG_PPC_MAPLE is not set |
@@ -155,6 +174,7 @@ CONFIG_PPC_PMAC64=y | |||
155 | # CONFIG_PPC_IBM_CELL_BLADE is not set | 174 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
156 | # CONFIG_PQ2ADS is not set | 175 | # CONFIG_PQ2ADS is not set |
157 | CONFIG_PPC_NATIVE=y | 176 | CONFIG_PPC_NATIVE=y |
177 | # CONFIG_IPIC is not set | ||
158 | CONFIG_MPIC=y | 178 | CONFIG_MPIC=y |
159 | # CONFIG_MPIC_WEIRD is not set | 179 | # CONFIG_MPIC_WEIRD is not set |
160 | # CONFIG_PPC_I8259 is not set | 180 | # CONFIG_PPC_I8259 is not set |
@@ -185,7 +205,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y | |||
185 | # CPU Frequency drivers | 205 | # CPU Frequency drivers |
186 | # | 206 | # |
187 | CONFIG_CPU_FREQ_PMAC64=y | 207 | CONFIG_CPU_FREQ_PMAC64=y |
188 | # CONFIG_CPM2 is not set | ||
189 | # CONFIG_FSL_ULI1575 is not set | 208 | # CONFIG_FSL_ULI1575 is not set |
190 | 209 | ||
191 | # | 210 | # |
@@ -200,17 +219,21 @@ CONFIG_HZ_250=y | |||
200 | # CONFIG_HZ_300 is not set | 219 | # CONFIG_HZ_300 is not set |
201 | # CONFIG_HZ_1000 is not set | 220 | # CONFIG_HZ_1000 is not set |
202 | CONFIG_HZ=250 | 221 | CONFIG_HZ=250 |
222 | # CONFIG_SCHED_HRTICK is not set | ||
203 | CONFIG_PREEMPT_NONE=y | 223 | CONFIG_PREEMPT_NONE=y |
204 | # CONFIG_PREEMPT_VOLUNTARY is not set | 224 | # CONFIG_PREEMPT_VOLUNTARY is not set |
205 | # CONFIG_PREEMPT is not set | 225 | # CONFIG_PREEMPT is not set |
206 | # CONFIG_PREEMPT_BKL is not set | ||
207 | CONFIG_BINFMT_ELF=y | 226 | CONFIG_BINFMT_ELF=y |
227 | CONFIG_COMPAT_BINFMT_ELF=y | ||
208 | # CONFIG_BINFMT_MISC is not set | 228 | # CONFIG_BINFMT_MISC is not set |
209 | CONFIG_FORCE_MAX_ZONEORDER=13 | 229 | CONFIG_FORCE_MAX_ZONEORDER=13 |
210 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 230 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
211 | CONFIG_IOMMU_VMERGE=y | 231 | CONFIG_IOMMU_VMERGE=y |
232 | CONFIG_IOMMU_HELPER=y | ||
212 | # CONFIG_HOTPLUG_CPU is not set | 233 | # CONFIG_HOTPLUG_CPU is not set |
213 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 234 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
235 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
236 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
214 | CONFIG_KEXEC=y | 237 | CONFIG_KEXEC=y |
215 | # CONFIG_CRASH_DUMP is not set | 238 | # CONFIG_CRASH_DUMP is not set |
216 | CONFIG_IRQ_ALL_CPUS=y | 239 | CONFIG_IRQ_ALL_CPUS=y |
@@ -236,11 +259,9 @@ CONFIG_BOUNCE=y | |||
236 | # CONFIG_SCHED_SMT is not set | 259 | # CONFIG_SCHED_SMT is not set |
237 | CONFIG_PROC_DEVICETREE=y | 260 | CONFIG_PROC_DEVICETREE=y |
238 | # CONFIG_CMDLINE_BOOL is not set | 261 | # CONFIG_CMDLINE_BOOL is not set |
262 | CONFIG_ARCH_WANTS_FREEZER_CONTROL=y | ||
239 | # CONFIG_PM is not set | 263 | # CONFIG_PM is not set |
240 | CONFIG_SUSPEND_SMP_POSSIBLE=y | ||
241 | CONFIG_HIBERNATION_SMP_POSSIBLE=y | ||
242 | CONFIG_SECCOMP=y | 264 | CONFIG_SECCOMP=y |
243 | # CONFIG_WANT_DEVICE_TREE is not set | ||
244 | CONFIG_ISA_DMA_API=y | 265 | CONFIG_ISA_DMA_API=y |
245 | 266 | ||
246 | # | 267 | # |
@@ -276,6 +297,7 @@ CONFIG_XFRM=y | |||
276 | CONFIG_XFRM_USER=m | 297 | CONFIG_XFRM_USER=m |
277 | # CONFIG_XFRM_SUB_POLICY is not set | 298 | # CONFIG_XFRM_SUB_POLICY is not set |
278 | # CONFIG_XFRM_MIGRATE is not set | 299 | # CONFIG_XFRM_MIGRATE is not set |
300 | # CONFIG_XFRM_STATISTICS is not set | ||
279 | CONFIG_NET_KEY=m | 301 | CONFIG_NET_KEY=m |
280 | # CONFIG_NET_KEY_MIGRATE is not set | 302 | # CONFIG_NET_KEY_MIGRATE is not set |
281 | CONFIG_INET=y | 303 | CONFIG_INET=y |
@@ -310,12 +332,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
310 | # CONFIG_NETWORK_SECMARK is not set | 332 | # CONFIG_NETWORK_SECMARK is not set |
311 | CONFIG_NETFILTER=y | 333 | CONFIG_NETFILTER=y |
312 | # CONFIG_NETFILTER_DEBUG is not set | 334 | # CONFIG_NETFILTER_DEBUG is not set |
335 | CONFIG_NETFILTER_ADVANCED=y | ||
313 | 336 | ||
314 | # | 337 | # |
315 | # Core Netfilter Configuration | 338 | # Core Netfilter Configuration |
316 | # | 339 | # |
317 | # CONFIG_NETFILTER_NETLINK is not set | 340 | CONFIG_NETFILTER_NETLINK=m |
318 | CONFIG_NF_CONNTRACK_ENABLED=m | 341 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
342 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
319 | CONFIG_NF_CONNTRACK=m | 343 | CONFIG_NF_CONNTRACK=m |
320 | # CONFIG_NF_CT_ACCT is not set | 344 | # CONFIG_NF_CT_ACCT is not set |
321 | CONFIG_NF_CONNTRACK_MARK=y | 345 | CONFIG_NF_CONNTRACK_MARK=y |
@@ -331,6 +355,7 @@ CONFIG_NF_CONNTRACK_IRC=m | |||
331 | # CONFIG_NF_CONNTRACK_SANE is not set | 355 | # CONFIG_NF_CONNTRACK_SANE is not set |
332 | # CONFIG_NF_CONNTRACK_SIP is not set | 356 | # CONFIG_NF_CONNTRACK_SIP is not set |
333 | CONFIG_NF_CONNTRACK_TFTP=m | 357 | CONFIG_NF_CONNTRACK_TFTP=m |
358 | CONFIG_NF_CT_NETLINK=m | ||
334 | # CONFIG_NETFILTER_XTABLES is not set | 359 | # CONFIG_NETFILTER_XTABLES is not set |
335 | 360 | ||
336 | # | 361 | # |
@@ -363,6 +388,7 @@ CONFIG_LLC=y | |||
363 | # | 388 | # |
364 | # CONFIG_NET_PKTGEN is not set | 389 | # CONFIG_NET_PKTGEN is not set |
365 | # CONFIG_HAMRADIO is not set | 390 | # CONFIG_HAMRADIO is not set |
391 | # CONFIG_CAN is not set | ||
366 | # CONFIG_IRDA is not set | 392 | # CONFIG_IRDA is not set |
367 | # CONFIG_BT is not set | 393 | # CONFIG_BT is not set |
368 | # CONFIG_AF_RXRPC is not set | 394 | # CONFIG_AF_RXRPC is not set |
@@ -409,7 +435,7 @@ CONFIG_BLK_DEV_NBD=m | |||
409 | CONFIG_BLK_DEV_RAM=y | 435 | CONFIG_BLK_DEV_RAM=y |
410 | CONFIG_BLK_DEV_RAM_COUNT=16 | 436 | CONFIG_BLK_DEV_RAM_COUNT=16 |
411 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 437 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
412 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 438 | # CONFIG_BLK_DEV_XIP is not set |
413 | CONFIG_CDROM_PKTCDVD=m | 439 | CONFIG_CDROM_PKTCDVD=m |
414 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 440 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
415 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | 441 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set |
@@ -419,16 +445,19 @@ CONFIG_MISC_DEVICES=y | |||
419 | # CONFIG_EEPROM_93CX6 is not set | 445 | # CONFIG_EEPROM_93CX6 is not set |
420 | # CONFIG_SGI_IOC4 is not set | 446 | # CONFIG_SGI_IOC4 is not set |
421 | # CONFIG_TIFM_CORE is not set | 447 | # CONFIG_TIFM_CORE is not set |
448 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
449 | CONFIG_HAVE_IDE=y | ||
422 | CONFIG_IDE=y | 450 | CONFIG_IDE=y |
423 | CONFIG_BLK_DEV_IDE=y | 451 | CONFIG_BLK_DEV_IDE=y |
424 | 452 | ||
425 | # | 453 | # |
426 | # Please see Documentation/ide.txt for help/info on IDE drives | 454 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
427 | # | 455 | # |
428 | # CONFIG_BLK_DEV_IDE_SATA is not set | 456 | # CONFIG_BLK_DEV_IDE_SATA is not set |
429 | CONFIG_BLK_DEV_IDEDISK=y | 457 | CONFIG_BLK_DEV_IDEDISK=y |
430 | # CONFIG_IDEDISK_MULTI_MODE is not set | 458 | # CONFIG_IDEDISK_MULTI_MODE is not set |
431 | CONFIG_BLK_DEV_IDECD=y | 459 | CONFIG_BLK_DEV_IDECD=y |
460 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
432 | # CONFIG_BLK_DEV_IDETAPE is not set | 461 | # CONFIG_BLK_DEV_IDETAPE is not set |
433 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 462 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
434 | # CONFIG_BLK_DEV_IDESCSI is not set | 463 | # CONFIG_BLK_DEV_IDESCSI is not set |
@@ -440,12 +469,12 @@ CONFIG_IDE_PROC_FS=y | |||
440 | # | 469 | # |
441 | CONFIG_IDE_GENERIC=y | 470 | CONFIG_IDE_GENERIC=y |
442 | # CONFIG_BLK_DEV_PLATFORM is not set | 471 | # CONFIG_BLK_DEV_PLATFORM is not set |
472 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
443 | 473 | ||
444 | # | 474 | # |
445 | # PCI IDE chipsets support | 475 | # PCI IDE chipsets support |
446 | # | 476 | # |
447 | CONFIG_BLK_DEV_IDEPCI=y | 477 | CONFIG_BLK_DEV_IDEPCI=y |
448 | # CONFIG_IDEPCI_SHARE_IRQ is not set | ||
449 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 478 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
450 | # CONFIG_BLK_DEV_GENERIC is not set | 479 | # CONFIG_BLK_DEV_GENERIC is not set |
451 | # CONFIG_BLK_DEV_OPTI621 is not set | 480 | # CONFIG_BLK_DEV_OPTI621 is not set |
@@ -478,7 +507,6 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y | |||
478 | CONFIG_BLK_DEV_IDE_PMAC=y | 507 | CONFIG_BLK_DEV_IDE_PMAC=y |
479 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 508 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
480 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 509 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
481 | # CONFIG_IDE_ARM is not set | ||
482 | CONFIG_BLK_DEV_IDEDMA=y | 510 | CONFIG_BLK_DEV_IDEDMA=y |
483 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 511 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
484 | # CONFIG_BLK_DEV_HD is not set | 512 | # CONFIG_BLK_DEV_HD is not set |
@@ -544,6 +572,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
544 | # CONFIG_SCSI_IPS is not set | 572 | # CONFIG_SCSI_IPS is not set |
545 | # CONFIG_SCSI_INITIO is not set | 573 | # CONFIG_SCSI_INITIO is not set |
546 | # CONFIG_SCSI_INIA100 is not set | 574 | # CONFIG_SCSI_INIA100 is not set |
575 | # CONFIG_SCSI_MVSAS is not set | ||
547 | # CONFIG_SCSI_STEX is not set | 576 | # CONFIG_SCSI_STEX is not set |
548 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 577 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
549 | # CONFIG_SCSI_IPR is not set | 578 | # CONFIG_SCSI_IPR is not set |
@@ -596,6 +625,7 @@ CONFIG_SATA_SVW=y | |||
596 | # CONFIG_PATA_MPIIX is not set | 625 | # CONFIG_PATA_MPIIX is not set |
597 | # CONFIG_PATA_OLDPIIX is not set | 626 | # CONFIG_PATA_OLDPIIX is not set |
598 | # CONFIG_PATA_NETCELL is not set | 627 | # CONFIG_PATA_NETCELL is not set |
628 | # CONFIG_PATA_NINJA32 is not set | ||
599 | # CONFIG_PATA_NS87410 is not set | 629 | # CONFIG_PATA_NS87410 is not set |
600 | # CONFIG_PATA_NS87415 is not set | 630 | # CONFIG_PATA_NS87415 is not set |
601 | # CONFIG_PATA_OPTI is not set | 631 | # CONFIG_PATA_OPTI is not set |
@@ -610,6 +640,7 @@ CONFIG_SATA_SVW=y | |||
610 | # CONFIG_PATA_SIS is not set | 640 | # CONFIG_PATA_SIS is not set |
611 | # CONFIG_PATA_VIA is not set | 641 | # CONFIG_PATA_VIA is not set |
612 | # CONFIG_PATA_WINBOND is not set | 642 | # CONFIG_PATA_WINBOND is not set |
643 | # CONFIG_PATA_PLATFORM is not set | ||
613 | CONFIG_MD=y | 644 | CONFIG_MD=y |
614 | CONFIG_BLK_DEV_MD=y | 645 | CONFIG_BLK_DEV_MD=y |
615 | CONFIG_MD_LINEAR=y | 646 | CONFIG_MD_LINEAR=y |
@@ -676,7 +707,6 @@ CONFIG_BONDING=m | |||
676 | # CONFIG_EQUALIZER is not set | 707 | # CONFIG_EQUALIZER is not set |
677 | CONFIG_TUN=m | 708 | CONFIG_TUN=m |
678 | # CONFIG_VETH is not set | 709 | # CONFIG_VETH is not set |
679 | # CONFIG_IP1000 is not set | ||
680 | # CONFIG_ARCNET is not set | 710 | # CONFIG_ARCNET is not set |
681 | # CONFIG_PHYLIB is not set | 711 | # CONFIG_PHYLIB is not set |
682 | CONFIG_NET_ETHERNET=y | 712 | CONFIG_NET_ETHERNET=y |
@@ -701,6 +731,9 @@ CONFIG_E1000=y | |||
701 | # CONFIG_E1000_NAPI is not set | 731 | # CONFIG_E1000_NAPI is not set |
702 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 732 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
703 | # CONFIG_E1000E is not set | 733 | # CONFIG_E1000E is not set |
734 | # CONFIG_E1000E_ENABLED is not set | ||
735 | # CONFIG_IP1000 is not set | ||
736 | # CONFIG_IGB is not set | ||
704 | # CONFIG_NS83820 is not set | 737 | # CONFIG_NS83820 is not set |
705 | # CONFIG_HAMACHI is not set | 738 | # CONFIG_HAMACHI is not set |
706 | # CONFIG_YELLOWFIN is not set | 739 | # CONFIG_YELLOWFIN is not set |
@@ -726,6 +759,7 @@ CONFIG_NETDEV_10000=y | |||
726 | # CONFIG_PASEMI_MAC is not set | 759 | # CONFIG_PASEMI_MAC is not set |
727 | # CONFIG_MLX4_CORE is not set | 760 | # CONFIG_MLX4_CORE is not set |
728 | # CONFIG_TEHUTI is not set | 761 | # CONFIG_TEHUTI is not set |
762 | # CONFIG_BNX2X is not set | ||
729 | CONFIG_TR=y | 763 | CONFIG_TR=y |
730 | CONFIG_IBMOL=y | 764 | CONFIG_IBMOL=y |
731 | # CONFIG_3C359 is not set | 765 | # CONFIG_3C359 is not set |
@@ -771,7 +805,6 @@ CONFIG_PPPOE=m | |||
771 | # CONFIG_SLIP is not set | 805 | # CONFIG_SLIP is not set |
772 | CONFIG_SLHC=m | 806 | CONFIG_SLHC=m |
773 | # CONFIG_NET_FC is not set | 807 | # CONFIG_NET_FC is not set |
774 | # CONFIG_SHAPER is not set | ||
775 | # CONFIG_NETCONSOLE is not set | 808 | # CONFIG_NETCONSOLE is not set |
776 | # CONFIG_NETPOLL is not set | 809 | # CONFIG_NETPOLL is not set |
777 | # CONFIG_NET_POLL_CONTROLLER is not set | 810 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -834,6 +867,7 @@ CONFIG_VT_CONSOLE=y | |||
834 | CONFIG_HW_CONSOLE=y | 867 | CONFIG_HW_CONSOLE=y |
835 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 868 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
836 | # CONFIG_SERIAL_NONSTANDARD is not set | 869 | # CONFIG_SERIAL_NONSTANDARD is not set |
870 | # CONFIG_NOZOMI is not set | ||
837 | 871 | ||
838 | # | 872 | # |
839 | # Serial drivers | 873 | # Serial drivers |
@@ -901,13 +935,12 @@ CONFIG_I2C_POWERMAC=y | |||
901 | # | 935 | # |
902 | # Miscellaneous I2C Chip support | 936 | # Miscellaneous I2C Chip support |
903 | # | 937 | # |
904 | # CONFIG_SENSORS_DS1337 is not set | ||
905 | # CONFIG_SENSORS_DS1374 is not set | ||
906 | # CONFIG_DS1682 is not set | 938 | # CONFIG_DS1682 is not set |
907 | # CONFIG_SENSORS_EEPROM is not set | 939 | # CONFIG_SENSORS_EEPROM is not set |
908 | # CONFIG_SENSORS_PCF8574 is not set | 940 | # CONFIG_SENSORS_PCF8574 is not set |
909 | # CONFIG_SENSORS_PCA9539 is not set | 941 | # CONFIG_PCF8575 is not set |
910 | # CONFIG_SENSORS_PCF8591 is not set | 942 | # CONFIG_SENSORS_PCF8591 is not set |
943 | # CONFIG_TPS65010 is not set | ||
911 | # CONFIG_SENSORS_MAX6875 is not set | 944 | # CONFIG_SENSORS_MAX6875 is not set |
912 | # CONFIG_SENSORS_TSL2550 is not set | 945 | # CONFIG_SENSORS_TSL2550 is not set |
913 | # CONFIG_I2C_DEBUG_CORE is not set | 946 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -923,6 +956,7 @@ CONFIG_I2C_POWERMAC=y | |||
923 | # CONFIG_W1 is not set | 956 | # CONFIG_W1 is not set |
924 | # CONFIG_POWER_SUPPLY is not set | 957 | # CONFIG_POWER_SUPPLY is not set |
925 | # CONFIG_HWMON is not set | 958 | # CONFIG_HWMON is not set |
959 | # CONFIG_THERMAL is not set | ||
926 | # CONFIG_WATCHDOG is not set | 960 | # CONFIG_WATCHDOG is not set |
927 | 961 | ||
928 | # | 962 | # |
@@ -1083,6 +1117,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1083 | # CONFIG_SND_BT87X is not set | 1117 | # CONFIG_SND_BT87X is not set |
1084 | # CONFIG_SND_CA0106 is not set | 1118 | # CONFIG_SND_CA0106 is not set |
1085 | # CONFIG_SND_CMIPCI is not set | 1119 | # CONFIG_SND_CMIPCI is not set |
1120 | # CONFIG_SND_OXYGEN is not set | ||
1086 | # CONFIG_SND_CS4281 is not set | 1121 | # CONFIG_SND_CS4281 is not set |
1087 | # CONFIG_SND_CS46XX is not set | 1122 | # CONFIG_SND_CS46XX is not set |
1088 | # CONFIG_SND_CS5530 is not set | 1123 | # CONFIG_SND_CS5530 is not set |
@@ -1108,6 +1143,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1108 | # CONFIG_SND_HDA_INTEL is not set | 1143 | # CONFIG_SND_HDA_INTEL is not set |
1109 | # CONFIG_SND_HDSP is not set | 1144 | # CONFIG_SND_HDSP is not set |
1110 | # CONFIG_SND_HDSPM is not set | 1145 | # CONFIG_SND_HDSPM is not set |
1146 | # CONFIG_SND_HIFIER is not set | ||
1111 | # CONFIG_SND_ICE1712 is not set | 1147 | # CONFIG_SND_ICE1712 is not set |
1112 | # CONFIG_SND_ICE1724 is not set | 1148 | # CONFIG_SND_ICE1724 is not set |
1113 | # CONFIG_SND_INTEL8X0 is not set | 1149 | # CONFIG_SND_INTEL8X0 is not set |
@@ -1125,6 +1161,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1125 | # CONFIG_SND_TRIDENT is not set | 1161 | # CONFIG_SND_TRIDENT is not set |
1126 | # CONFIG_SND_VIA82XX is not set | 1162 | # CONFIG_SND_VIA82XX is not set |
1127 | # CONFIG_SND_VIA82XX_MODEM is not set | 1163 | # CONFIG_SND_VIA82XX_MODEM is not set |
1164 | # CONFIG_SND_VIRTUOSO is not set | ||
1128 | # CONFIG_SND_VX222 is not set | 1165 | # CONFIG_SND_VX222 is not set |
1129 | # CONFIG_SND_YMFPCI is not set | 1166 | # CONFIG_SND_YMFPCI is not set |
1130 | 1167 | ||
@@ -1166,6 +1203,10 @@ CONFIG_SND_USB_AUDIO=m | |||
1166 | # | 1203 | # |
1167 | 1204 | ||
1168 | # | 1205 | # |
1206 | # ALSA SoC audio for Freescale SOCs | ||
1207 | # | ||
1208 | |||
1209 | # | ||
1169 | # Open Sound System | 1210 | # Open Sound System |
1170 | # | 1211 | # |
1171 | # CONFIG_SOUND_PRIME is not set | 1212 | # CONFIG_SOUND_PRIME is not set |
@@ -1192,6 +1233,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1192 | CONFIG_USB_ARCH_HAS_EHCI=y | 1233 | CONFIG_USB_ARCH_HAS_EHCI=y |
1193 | CONFIG_USB=y | 1234 | CONFIG_USB=y |
1194 | # CONFIG_USB_DEBUG is not set | 1235 | # CONFIG_USB_DEBUG is not set |
1236 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1195 | 1237 | ||
1196 | # | 1238 | # |
1197 | # Miscellaneous USB options | 1239 | # Miscellaneous USB options |
@@ -1205,9 +1247,9 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1205 | # USB Host Controller Drivers | 1247 | # USB Host Controller Drivers |
1206 | # | 1248 | # |
1207 | CONFIG_USB_EHCI_HCD=y | 1249 | CONFIG_USB_EHCI_HCD=y |
1208 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
1209 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1250 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1210 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1251 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1252 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
1211 | # CONFIG_USB_ISP116X_HCD is not set | 1253 | # CONFIG_USB_ISP116X_HCD is not set |
1212 | CONFIG_USB_OHCI_HCD=y | 1254 | CONFIG_USB_OHCI_HCD=y |
1213 | CONFIG_USB_OHCI_HCD_PPC_OF=y | 1255 | CONFIG_USB_OHCI_HCD_PPC_OF=y |
@@ -1259,11 +1301,8 @@ CONFIG_USB_MON=y | |||
1259 | # | 1301 | # |
1260 | # USB port drivers | 1302 | # USB port drivers |
1261 | # | 1303 | # |
1262 | |||
1263 | # | ||
1264 | # USB Serial Converter support | ||
1265 | # | ||
1266 | CONFIG_USB_SERIAL=m | 1304 | CONFIG_USB_SERIAL=m |
1305 | CONFIG_USB_EZUSB=y | ||
1267 | CONFIG_USB_SERIAL_GENERIC=y | 1306 | CONFIG_USB_SERIAL_GENERIC=y |
1268 | # CONFIG_USB_SERIAL_AIRCABLE is not set | 1307 | # CONFIG_USB_SERIAL_AIRCABLE is not set |
1269 | # CONFIG_USB_SERIAL_AIRPRIME is not set | 1308 | # CONFIG_USB_SERIAL_AIRPRIME is not set |
@@ -1284,6 +1323,7 @@ CONFIG_USB_SERIAL_EDGEPORT=m | |||
1284 | CONFIG_USB_SERIAL_EDGEPORT_TI=m | 1323 | CONFIG_USB_SERIAL_EDGEPORT_TI=m |
1285 | CONFIG_USB_SERIAL_GARMIN=m | 1324 | CONFIG_USB_SERIAL_GARMIN=m |
1286 | CONFIG_USB_SERIAL_IPW=m | 1325 | CONFIG_USB_SERIAL_IPW=m |
1326 | # CONFIG_USB_SERIAL_IUU is not set | ||
1287 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m | 1327 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m |
1288 | CONFIG_USB_SERIAL_KEYSPAN=m | 1328 | CONFIG_USB_SERIAL_KEYSPAN=m |
1289 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y | 1329 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y |
@@ -1316,7 +1356,6 @@ CONFIG_USB_SERIAL_XIRCOM=m | |||
1316 | # CONFIG_USB_SERIAL_OPTION is not set | 1356 | # CONFIG_USB_SERIAL_OPTION is not set |
1317 | CONFIG_USB_SERIAL_OMNINET=m | 1357 | CONFIG_USB_SERIAL_OMNINET=m |
1318 | # CONFIG_USB_SERIAL_DEBUG is not set | 1358 | # CONFIG_USB_SERIAL_DEBUG is not set |
1319 | CONFIG_USB_EZUSB=y | ||
1320 | 1359 | ||
1321 | # | 1360 | # |
1322 | # USB Miscellaneous drivers | 1361 | # USB Miscellaneous drivers |
@@ -1341,20 +1380,14 @@ CONFIG_USB_APPLEDISPLAY=m | |||
1341 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1380 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1342 | # CONFIG_USB_IOWARRIOR is not set | 1381 | # CONFIG_USB_IOWARRIOR is not set |
1343 | # CONFIG_USB_TEST is not set | 1382 | # CONFIG_USB_TEST is not set |
1344 | |||
1345 | # | ||
1346 | # USB DSL modem support | ||
1347 | # | ||
1348 | |||
1349 | # | ||
1350 | # USB Gadget Support | ||
1351 | # | ||
1352 | # CONFIG_USB_GADGET is not set | 1383 | # CONFIG_USB_GADGET is not set |
1353 | # CONFIG_MMC is not set | 1384 | # CONFIG_MMC is not set |
1385 | # CONFIG_MEMSTICK is not set | ||
1354 | # CONFIG_NEW_LEDS is not set | 1386 | # CONFIG_NEW_LEDS is not set |
1355 | # CONFIG_INFINIBAND is not set | 1387 | # CONFIG_INFINIBAND is not set |
1356 | # CONFIG_EDAC is not set | 1388 | # CONFIG_EDAC is not set |
1357 | # CONFIG_RTC_CLASS is not set | 1389 | # CONFIG_RTC_CLASS is not set |
1390 | # CONFIG_DMADEVICES is not set | ||
1358 | 1391 | ||
1359 | # | 1392 | # |
1360 | # Userspace I/O | 1393 | # Userspace I/O |
@@ -1393,12 +1426,10 @@ CONFIG_XFS_POSIX_ACL=y | |||
1393 | # CONFIG_XFS_RT is not set | 1426 | # CONFIG_XFS_RT is not set |
1394 | # CONFIG_GFS2_FS is not set | 1427 | # CONFIG_GFS2_FS is not set |
1395 | # CONFIG_OCFS2_FS is not set | 1428 | # CONFIG_OCFS2_FS is not set |
1396 | # CONFIG_MINIX_FS is not set | 1429 | CONFIG_DNOTIFY=y |
1397 | # CONFIG_ROMFS_FS is not set | ||
1398 | CONFIG_INOTIFY=y | 1430 | CONFIG_INOTIFY=y |
1399 | CONFIG_INOTIFY_USER=y | 1431 | CONFIG_INOTIFY_USER=y |
1400 | # CONFIG_QUOTA is not set | 1432 | # CONFIG_QUOTA is not set |
1401 | CONFIG_DNOTIFY=y | ||
1402 | CONFIG_AUTOFS_FS=m | 1433 | CONFIG_AUTOFS_FS=m |
1403 | # CONFIG_AUTOFS4_FS is not set | 1434 | # CONFIG_AUTOFS4_FS is not set |
1404 | # CONFIG_FUSE_FS is not set | 1435 | # CONFIG_FUSE_FS is not set |
@@ -1447,8 +1478,10 @@ CONFIG_HFSPLUS_FS=m | |||
1447 | # CONFIG_EFS_FS is not set | 1478 | # CONFIG_EFS_FS is not set |
1448 | CONFIG_CRAMFS=y | 1479 | CONFIG_CRAMFS=y |
1449 | # CONFIG_VXFS_FS is not set | 1480 | # CONFIG_VXFS_FS is not set |
1481 | # CONFIG_MINIX_FS is not set | ||
1450 | # CONFIG_HPFS_FS is not set | 1482 | # CONFIG_HPFS_FS is not set |
1451 | # CONFIG_QNX4FS_FS is not set | 1483 | # CONFIG_QNX4FS_FS is not set |
1484 | # CONFIG_ROMFS_FS is not set | ||
1452 | # CONFIG_SYSV_FS is not set | 1485 | # CONFIG_SYSV_FS is not set |
1453 | # CONFIG_UFS_FS is not set | 1486 | # CONFIG_UFS_FS is not set |
1454 | CONFIG_NETWORK_FILESYSTEMS=y | 1487 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1546,7 +1579,6 @@ CONFIG_NLS_ISO8859_15=y | |||
1546 | # CONFIG_NLS_KOI8_U is not set | 1579 | # CONFIG_NLS_KOI8_U is not set |
1547 | CONFIG_NLS_UTF8=y | 1580 | CONFIG_NLS_UTF8=y |
1548 | # CONFIG_DLM is not set | 1581 | # CONFIG_DLM is not set |
1549 | # CONFIG_UCC_SLOW is not set | ||
1550 | 1582 | ||
1551 | # | 1583 | # |
1552 | # Library routines | 1584 | # Library routines |
@@ -1564,11 +1596,6 @@ CONFIG_PLIST=y | |||
1564 | CONFIG_HAS_IOMEM=y | 1596 | CONFIG_HAS_IOMEM=y |
1565 | CONFIG_HAS_IOPORT=y | 1597 | CONFIG_HAS_IOPORT=y |
1566 | CONFIG_HAS_DMA=y | 1598 | CONFIG_HAS_DMA=y |
1567 | CONFIG_INSTRUMENTATION=y | ||
1568 | CONFIG_PROFILING=y | ||
1569 | CONFIG_OPROFILE=y | ||
1570 | # CONFIG_KPROBES is not set | ||
1571 | # CONFIG_MARKERS is not set | ||
1572 | 1599 | ||
1573 | # | 1600 | # |
1574 | # Kernel hacking | 1601 | # Kernel hacking |
@@ -1587,6 +1614,7 @@ CONFIG_SCHED_DEBUG=y | |||
1587 | # CONFIG_SCHEDSTATS is not set | 1614 | # CONFIG_SCHEDSTATS is not set |
1588 | # CONFIG_TIMER_STATS is not set | 1615 | # CONFIG_TIMER_STATS is not set |
1589 | # CONFIG_SLUB_DEBUG_ON is not set | 1616 | # CONFIG_SLUB_DEBUG_ON is not set |
1617 | # CONFIG_SLUB_STATS is not set | ||
1590 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1618 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1591 | # CONFIG_RT_MUTEX_TESTER is not set | 1619 | # CONFIG_RT_MUTEX_TESTER is not set |
1592 | # CONFIG_DEBUG_SPINLOCK is not set | 1620 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1599,9 +1627,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1599 | # CONFIG_DEBUG_VM is not set | 1627 | # CONFIG_DEBUG_VM is not set |
1600 | # CONFIG_DEBUG_LIST is not set | 1628 | # CONFIG_DEBUG_LIST is not set |
1601 | # CONFIG_DEBUG_SG is not set | 1629 | # CONFIG_DEBUG_SG is not set |
1602 | CONFIG_FORCED_INLINING=y | ||
1603 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1630 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1604 | # CONFIG_RCU_TORTURE_TEST is not set | 1631 | # CONFIG_RCU_TORTURE_TEST is not set |
1632 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1605 | # CONFIG_FAULT_INJECTION is not set | 1633 | # CONFIG_FAULT_INJECTION is not set |
1606 | # CONFIG_SAMPLES is not set | 1634 | # CONFIG_SAMPLES is not set |
1607 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1635 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -1621,7 +1649,9 @@ CONFIG_BOOTX_TEXT=y | |||
1621 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1649 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1622 | CONFIG_CRYPTO=y | 1650 | CONFIG_CRYPTO=y |
1623 | CONFIG_CRYPTO_ALGAPI=y | 1651 | CONFIG_CRYPTO_ALGAPI=y |
1652 | CONFIG_CRYPTO_AEAD=m | ||
1624 | CONFIG_CRYPTO_BLKCIPHER=y | 1653 | CONFIG_CRYPTO_BLKCIPHER=y |
1654 | # CONFIG_CRYPTO_SEQIV is not set | ||
1625 | CONFIG_CRYPTO_HASH=y | 1655 | CONFIG_CRYPTO_HASH=y |
1626 | CONFIG_CRYPTO_MANAGER=y | 1656 | CONFIG_CRYPTO_MANAGER=y |
1627 | CONFIG_CRYPTO_HMAC=y | 1657 | CONFIG_CRYPTO_HMAC=y |
@@ -1640,6 +1670,9 @@ CONFIG_CRYPTO_CBC=y | |||
1640 | CONFIG_CRYPTO_PCBC=m | 1670 | CONFIG_CRYPTO_PCBC=m |
1641 | # CONFIG_CRYPTO_LRW is not set | 1671 | # CONFIG_CRYPTO_LRW is not set |
1642 | # CONFIG_CRYPTO_XTS is not set | 1672 | # CONFIG_CRYPTO_XTS is not set |
1673 | # CONFIG_CRYPTO_CTR is not set | ||
1674 | # CONFIG_CRYPTO_GCM is not set | ||
1675 | # CONFIG_CRYPTO_CCM is not set | ||
1643 | # CONFIG_CRYPTO_CRYPTD is not set | 1676 | # CONFIG_CRYPTO_CRYPTD is not set |
1644 | CONFIG_CRYPTO_DES=y | 1677 | CONFIG_CRYPTO_DES=y |
1645 | # CONFIG_CRYPTO_FCRYPT is not set | 1678 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1655,11 +1688,13 @@ CONFIG_CRYPTO_ARC4=m | |||
1655 | CONFIG_CRYPTO_KHAZAD=m | 1688 | CONFIG_CRYPTO_KHAZAD=m |
1656 | CONFIG_CRYPTO_ANUBIS=m | 1689 | CONFIG_CRYPTO_ANUBIS=m |
1657 | # CONFIG_CRYPTO_SEED is not set | 1690 | # CONFIG_CRYPTO_SEED is not set |
1691 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1658 | CONFIG_CRYPTO_DEFLATE=m | 1692 | CONFIG_CRYPTO_DEFLATE=m |
1659 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1693 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1660 | CONFIG_CRYPTO_CRC32C=m | 1694 | CONFIG_CRYPTO_CRC32C=m |
1661 | # CONFIG_CRYPTO_CAMELLIA is not set | 1695 | # CONFIG_CRYPTO_CAMELLIA is not set |
1662 | CONFIG_CRYPTO_TEST=m | 1696 | CONFIG_CRYPTO_TEST=m |
1663 | # CONFIG_CRYPTO_AUTHENC is not set | 1697 | CONFIG_CRYPTO_AUTHENC=m |
1698 | # CONFIG_CRYPTO_LZO is not set | ||
1664 | # CONFIG_CRYPTO_HW is not set | 1699 | # CONFIG_CRYPTO_HW is not set |
1665 | # CONFIG_PPC_CLOCK is not set | 1700 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/iseries_defconfig b/arch/powerpc/configs/iseries_defconfig index 4a87745c7803..8d9a84f50157 100644 --- a/arch/powerpc/configs/iseries_defconfig +++ b/arch/powerpc/configs/iseries_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc3 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Wed Nov 21 11:19:59 2007 | 4 | # Thu Mar 20 10:43:46 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y | |||
28 | CONFIG_GENERIC_TIME_VSYSCALL=y | 28 | CONFIG_GENERIC_TIME_VSYSCALL=y |
29 | CONFIG_GENERIC_CLOCKEVENTS=y | 29 | CONFIG_GENERIC_CLOCKEVENTS=y |
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
31 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 34 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -68,8 +69,6 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
68 | CONFIG_POSIX_MQUEUE=y | 69 | CONFIG_POSIX_MQUEUE=y |
69 | # CONFIG_BSD_PROCESS_ACCT is not set | 70 | # CONFIG_BSD_PROCESS_ACCT is not set |
70 | # CONFIG_TASKSTATS is not set | 71 | # CONFIG_TASKSTATS is not set |
71 | # CONFIG_USER_NS is not set | ||
72 | # CONFIG_PID_NS is not set | ||
73 | CONFIG_AUDIT=y | 72 | CONFIG_AUDIT=y |
74 | CONFIG_AUDITSYSCALL=y | 73 | CONFIG_AUDITSYSCALL=y |
75 | CONFIG_AUDIT_TREE=y | 74 | CONFIG_AUDIT_TREE=y |
@@ -77,11 +76,17 @@ CONFIG_IKCONFIG=y | |||
77 | CONFIG_IKCONFIG_PROC=y | 76 | CONFIG_IKCONFIG_PROC=y |
78 | CONFIG_LOG_BUF_SHIFT=17 | 77 | CONFIG_LOG_BUF_SHIFT=17 |
79 | # CONFIG_CGROUPS is not set | 78 | # CONFIG_CGROUPS is not set |
80 | CONFIG_FAIR_GROUP_SCHED=y | 79 | # CONFIG_GROUP_SCHED is not set |
81 | CONFIG_FAIR_USER_SCHED=y | 80 | # CONFIG_USER_SCHED is not set |
82 | # CONFIG_FAIR_CGROUP_SCHED is not set | 81 | # CONFIG_CGROUP_SCHED is not set |
83 | CONFIG_SYSFS_DEPRECATED=y | 82 | CONFIG_SYSFS_DEPRECATED=y |
83 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
84 | # CONFIG_RELAY is not set | 84 | # CONFIG_RELAY is not set |
85 | CONFIG_NAMESPACES=y | ||
86 | # CONFIG_UTS_NS is not set | ||
87 | # CONFIG_IPC_NS is not set | ||
88 | # CONFIG_USER_NS is not set | ||
89 | # CONFIG_PID_NS is not set | ||
85 | CONFIG_BLK_DEV_INITRD=y | 90 | CONFIG_BLK_DEV_INITRD=y |
86 | CONFIG_INITRAMFS_SOURCE="" | 91 | CONFIG_INITRAMFS_SOURCE="" |
87 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 92 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -95,11 +100,13 @@ CONFIG_HOTPLUG=y | |||
95 | CONFIG_PRINTK=y | 100 | CONFIG_PRINTK=y |
96 | CONFIG_BUG=y | 101 | CONFIG_BUG=y |
97 | CONFIG_ELF_CORE=y | 102 | CONFIG_ELF_CORE=y |
103 | # CONFIG_COMPAT_BRK is not set | ||
98 | CONFIG_BASE_FULL=y | 104 | CONFIG_BASE_FULL=y |
99 | CONFIG_FUTEX=y | 105 | CONFIG_FUTEX=y |
100 | CONFIG_ANON_INODES=y | 106 | CONFIG_ANON_INODES=y |
101 | CONFIG_EPOLL=y | 107 | CONFIG_EPOLL=y |
102 | CONFIG_SIGNALFD=y | 108 | CONFIG_SIGNALFD=y |
109 | CONFIG_TIMERFD=y | ||
103 | CONFIG_EVENTFD=y | 110 | CONFIG_EVENTFD=y |
104 | CONFIG_SHMEM=y | 111 | CONFIG_SHMEM=y |
105 | CONFIG_VM_EVENT_COUNTERS=y | 112 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -107,6 +114,14 @@ CONFIG_SLUB_DEBUG=y | |||
107 | # CONFIG_SLAB is not set | 114 | # CONFIG_SLAB is not set |
108 | CONFIG_SLUB=y | 115 | CONFIG_SLUB=y |
109 | # CONFIG_SLOB is not set | 116 | # CONFIG_SLOB is not set |
117 | # CONFIG_PROFILING is not set | ||
118 | # CONFIG_MARKERS is not set | ||
119 | CONFIG_HAVE_OPROFILE=y | ||
120 | # CONFIG_KPROBES is not set | ||
121 | CONFIG_HAVE_KPROBES=y | ||
122 | CONFIG_HAVE_KRETPROBES=y | ||
123 | CONFIG_PROC_PAGE_MONITOR=y | ||
124 | CONFIG_SLABINFO=y | ||
110 | CONFIG_RT_MUTEXES=y | 125 | CONFIG_RT_MUTEXES=y |
111 | # CONFIG_TINY_SHMEM is not set | 126 | # CONFIG_TINY_SHMEM is not set |
112 | CONFIG_BASE_SMALL=0 | 127 | CONFIG_BASE_SMALL=0 |
@@ -134,6 +149,7 @@ CONFIG_DEFAULT_AS=y | |||
134 | # CONFIG_DEFAULT_CFQ is not set | 149 | # CONFIG_DEFAULT_CFQ is not set |
135 | # CONFIG_DEFAULT_NOOP is not set | 150 | # CONFIG_DEFAULT_NOOP is not set |
136 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 151 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
152 | CONFIG_CLASSIC_RCU=y | ||
137 | 153 | ||
138 | # | 154 | # |
139 | # Platform support | 155 | # Platform support |
@@ -153,8 +169,8 @@ CONFIG_VIODASD=y | |||
153 | CONFIG_VIOCD=m | 169 | CONFIG_VIOCD=m |
154 | CONFIG_VIOTAPE=m | 170 | CONFIG_VIOTAPE=m |
155 | CONFIG_VIOPATH=y | 171 | CONFIG_VIOPATH=y |
156 | # CONFIG_PPC_MPC52xx is not set | 172 | # CONFIG_PPC_MPC512x is not set |
157 | # CONFIG_PPC_MPC5200 is not set | 173 | # CONFIG_PPC_MPC5121 is not set |
158 | # CONFIG_PPC_PMAC is not set | 174 | # CONFIG_PPC_PMAC is not set |
159 | # CONFIG_PPC_MAPLE is not set | 175 | # CONFIG_PPC_MAPLE is not set |
160 | # CONFIG_PPC_PASEMI is not set | 176 | # CONFIG_PPC_PASEMI is not set |
@@ -164,6 +180,7 @@ CONFIG_VIOPATH=y | |||
164 | # CONFIG_PPC_CELL_NATIVE is not set | 180 | # CONFIG_PPC_CELL_NATIVE is not set |
165 | # CONFIG_PPC_IBM_CELL_BLADE is not set | 181 | # CONFIG_PPC_IBM_CELL_BLADE is not set |
166 | # CONFIG_PQ2ADS is not set | 182 | # CONFIG_PQ2ADS is not set |
183 | # CONFIG_IPIC is not set | ||
167 | # CONFIG_MPIC is not set | 184 | # CONFIG_MPIC is not set |
168 | # CONFIG_MPIC_WEIRD is not set | 185 | # CONFIG_MPIC_WEIRD is not set |
169 | # CONFIG_PPC_I8259 is not set | 186 | # CONFIG_PPC_I8259 is not set |
@@ -176,7 +193,6 @@ CONFIG_IBMVIO=y | |||
176 | CONFIG_PPC_INDIRECT_IO=y | 193 | CONFIG_PPC_INDIRECT_IO=y |
177 | CONFIG_GENERIC_IOMAP=y | 194 | CONFIG_GENERIC_IOMAP=y |
178 | # CONFIG_CPU_FREQ is not set | 195 | # CONFIG_CPU_FREQ is not set |
179 | # CONFIG_CPM2 is not set | ||
180 | # CONFIG_FSL_ULI1575 is not set | 196 | # CONFIG_FSL_ULI1575 is not set |
181 | 197 | ||
182 | # | 198 | # |
@@ -191,15 +207,19 @@ CONFIG_HZ_250=y | |||
191 | # CONFIG_HZ_300 is not set | 207 | # CONFIG_HZ_300 is not set |
192 | # CONFIG_HZ_1000 is not set | 208 | # CONFIG_HZ_1000 is not set |
193 | CONFIG_HZ=250 | 209 | CONFIG_HZ=250 |
210 | # CONFIG_SCHED_HRTICK is not set | ||
194 | CONFIG_PREEMPT_NONE=y | 211 | CONFIG_PREEMPT_NONE=y |
195 | # CONFIG_PREEMPT_VOLUNTARY is not set | 212 | # CONFIG_PREEMPT_VOLUNTARY is not set |
196 | # CONFIG_PREEMPT is not set | 213 | # CONFIG_PREEMPT is not set |
197 | # CONFIG_PREEMPT_BKL is not set | ||
198 | CONFIG_BINFMT_ELF=y | 214 | CONFIG_BINFMT_ELF=y |
215 | CONFIG_COMPAT_BINFMT_ELF=y | ||
199 | # CONFIG_BINFMT_MISC is not set | 216 | # CONFIG_BINFMT_MISC is not set |
200 | CONFIG_FORCE_MAX_ZONEORDER=13 | 217 | CONFIG_FORCE_MAX_ZONEORDER=13 |
201 | CONFIG_IOMMU_VMERGE=y | 218 | CONFIG_IOMMU_VMERGE=y |
219 | CONFIG_IOMMU_HELPER=y | ||
202 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 220 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
221 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
222 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
203 | # CONFIG_KEXEC is not set | 223 | # CONFIG_KEXEC is not set |
204 | # CONFIG_CRASH_DUMP is not set | 224 | # CONFIG_CRASH_DUMP is not set |
205 | CONFIG_IRQ_ALL_CPUS=y | 225 | CONFIG_IRQ_ALL_CPUS=y |
@@ -227,7 +247,6 @@ CONFIG_PROC_DEVICETREE=y | |||
227 | # CONFIG_CMDLINE_BOOL is not set | 247 | # CONFIG_CMDLINE_BOOL is not set |
228 | # CONFIG_PM is not set | 248 | # CONFIG_PM is not set |
229 | CONFIG_SECCOMP=y | 249 | CONFIG_SECCOMP=y |
230 | # CONFIG_WANT_DEVICE_TREE is not set | ||
231 | CONFIG_ISA_DMA_API=y | 250 | CONFIG_ISA_DMA_API=y |
232 | 251 | ||
233 | # | 252 | # |
@@ -263,6 +282,7 @@ CONFIG_XFRM=y | |||
263 | CONFIG_XFRM_USER=m | 282 | CONFIG_XFRM_USER=m |
264 | CONFIG_XFRM_SUB_POLICY=y | 283 | CONFIG_XFRM_SUB_POLICY=y |
265 | # CONFIG_XFRM_MIGRATE is not set | 284 | # CONFIG_XFRM_MIGRATE is not set |
285 | # CONFIG_XFRM_STATISTICS is not set | ||
266 | CONFIG_NET_KEY=m | 286 | CONFIG_NET_KEY=m |
267 | # CONFIG_NET_KEY_MIGRATE is not set | 287 | # CONFIG_NET_KEY_MIGRATE is not set |
268 | CONFIG_INET=y | 288 | CONFIG_INET=y |
@@ -297,12 +317,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
297 | # CONFIG_NETWORK_SECMARK is not set | 317 | # CONFIG_NETWORK_SECMARK is not set |
298 | CONFIG_NETFILTER=y | 318 | CONFIG_NETFILTER=y |
299 | # CONFIG_NETFILTER_DEBUG is not set | 319 | # CONFIG_NETFILTER_DEBUG is not set |
320 | CONFIG_NETFILTER_ADVANCED=y | ||
300 | 321 | ||
301 | # | 322 | # |
302 | # Core Netfilter Configuration | 323 | # Core Netfilter Configuration |
303 | # | 324 | # |
304 | # CONFIG_NETFILTER_NETLINK is not set | 325 | CONFIG_NETFILTER_NETLINK=m |
305 | CONFIG_NF_CONNTRACK_ENABLED=m | 326 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
327 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
306 | CONFIG_NF_CONNTRACK=m | 328 | CONFIG_NF_CONNTRACK=m |
307 | # CONFIG_NF_CT_ACCT is not set | 329 | # CONFIG_NF_CT_ACCT is not set |
308 | CONFIG_NF_CONNTRACK_MARK=y | 330 | CONFIG_NF_CONNTRACK_MARK=y |
@@ -318,6 +340,7 @@ CONFIG_NF_CONNTRACK_IRC=m | |||
318 | # CONFIG_NF_CONNTRACK_SANE is not set | 340 | # CONFIG_NF_CONNTRACK_SANE is not set |
319 | # CONFIG_NF_CONNTRACK_SIP is not set | 341 | # CONFIG_NF_CONNTRACK_SIP is not set |
320 | CONFIG_NF_CONNTRACK_TFTP=m | 342 | CONFIG_NF_CONNTRACK_TFTP=m |
343 | CONFIG_NF_CT_NETLINK=m | ||
321 | CONFIG_NETFILTER_XTABLES=m | 344 | CONFIG_NETFILTER_XTABLES=m |
322 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 345 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
323 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m | 346 | CONFIG_NETFILTER_XT_TARGET_CONNMARK=m |
@@ -326,8 +349,10 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m | |||
326 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 349 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
327 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set | 350 | # CONFIG_NETFILTER_XT_TARGET_NFLOG is not set |
328 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set | 351 | # CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set |
352 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
329 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set | 353 | # CONFIG_NETFILTER_XT_TARGET_TRACE is not set |
330 | # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set | 354 | # CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set |
355 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
331 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 356 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
332 | # CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set | 357 | # CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set |
333 | # CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set | 358 | # CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set |
@@ -337,14 +362,17 @@ CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m | |||
337 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 362 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
338 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set | 363 | # CONFIG_NETFILTER_XT_MATCH_ESP is not set |
339 | # CONFIG_NETFILTER_XT_MATCH_HELPER is not set | 364 | # CONFIG_NETFILTER_XT_MATCH_HELPER is not set |
365 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
340 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 366 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m |
341 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | 367 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m |
342 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 368 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
343 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 369 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
370 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
344 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set | 371 | # CONFIG_NETFILTER_XT_MATCH_POLICY is not set |
345 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set | 372 | # CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set |
346 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 373 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
347 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | 374 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set |
375 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
348 | CONFIG_NETFILTER_XT_MATCH_REALM=m | 376 | CONFIG_NETFILTER_XT_MATCH_REALM=m |
349 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | 377 | CONFIG_NETFILTER_XT_MATCH_SCTP=m |
350 | # CONFIG_NETFILTER_XT_MATCH_STATE is not set | 378 | # CONFIG_NETFILTER_XT_MATCH_STATE is not set |
@@ -362,13 +390,10 @@ CONFIG_NF_CONNTRACK_IPV4=m | |||
362 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | 390 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
363 | CONFIG_IP_NF_QUEUE=m | 391 | CONFIG_IP_NF_QUEUE=m |
364 | CONFIG_IP_NF_IPTABLES=m | 392 | CONFIG_IP_NF_IPTABLES=m |
365 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
366 | CONFIG_IP_NF_MATCH_TOS=m | ||
367 | CONFIG_IP_NF_MATCH_RECENT=m | 393 | CONFIG_IP_NF_MATCH_RECENT=m |
368 | CONFIG_IP_NF_MATCH_ECN=m | 394 | CONFIG_IP_NF_MATCH_ECN=m |
369 | # CONFIG_IP_NF_MATCH_AH is not set | 395 | # CONFIG_IP_NF_MATCH_AH is not set |
370 | CONFIG_IP_NF_MATCH_TTL=m | 396 | CONFIG_IP_NF_MATCH_TTL=m |
371 | CONFIG_IP_NF_MATCH_OWNER=m | ||
372 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 397 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
373 | CONFIG_IP_NF_FILTER=m | 398 | CONFIG_IP_NF_FILTER=m |
374 | CONFIG_IP_NF_TARGET_REJECT=m | 399 | CONFIG_IP_NF_TARGET_REJECT=m |
@@ -379,7 +404,6 @@ CONFIG_NF_NAT_NEEDED=y | |||
379 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 404 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
380 | CONFIG_IP_NF_TARGET_REDIRECT=m | 405 | CONFIG_IP_NF_TARGET_REDIRECT=m |
381 | CONFIG_IP_NF_TARGET_NETMAP=m | 406 | CONFIG_IP_NF_TARGET_NETMAP=m |
382 | CONFIG_IP_NF_TARGET_SAME=m | ||
383 | # CONFIG_NF_NAT_SNMP_BASIC is not set | 407 | # CONFIG_NF_NAT_SNMP_BASIC is not set |
384 | CONFIG_NF_NAT_FTP=m | 408 | CONFIG_NF_NAT_FTP=m |
385 | CONFIG_NF_NAT_IRC=m | 409 | CONFIG_NF_NAT_IRC=m |
@@ -389,7 +413,6 @@ CONFIG_NF_NAT_TFTP=m | |||
389 | # CONFIG_NF_NAT_H323 is not set | 413 | # CONFIG_NF_NAT_H323 is not set |
390 | # CONFIG_NF_NAT_SIP is not set | 414 | # CONFIG_NF_NAT_SIP is not set |
391 | CONFIG_IP_NF_MANGLE=m | 415 | CONFIG_IP_NF_MANGLE=m |
392 | CONFIG_IP_NF_TARGET_TOS=m | ||
393 | CONFIG_IP_NF_TARGET_ECN=m | 416 | CONFIG_IP_NF_TARGET_ECN=m |
394 | CONFIG_IP_NF_TARGET_TTL=m | 417 | CONFIG_IP_NF_TARGET_TTL=m |
395 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 418 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
@@ -425,6 +448,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
425 | # | 448 | # |
426 | # CONFIG_NET_PKTGEN is not set | 449 | # CONFIG_NET_PKTGEN is not set |
427 | # CONFIG_HAMRADIO is not set | 450 | # CONFIG_HAMRADIO is not set |
451 | # CONFIG_CAN is not set | ||
428 | # CONFIG_IRDA is not set | 452 | # CONFIG_IRDA is not set |
429 | # CONFIG_BT is not set | 453 | # CONFIG_BT is not set |
430 | # CONFIG_AF_RXRPC is not set | 454 | # CONFIG_AF_RXRPC is not set |
@@ -470,7 +494,7 @@ CONFIG_BLK_DEV_NBD=m | |||
470 | CONFIG_BLK_DEV_RAM=y | 494 | CONFIG_BLK_DEV_RAM=y |
471 | CONFIG_BLK_DEV_RAM_COUNT=16 | 495 | CONFIG_BLK_DEV_RAM_COUNT=16 |
472 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 496 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
473 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 497 | # CONFIG_BLK_DEV_XIP is not set |
474 | # CONFIG_CDROM_PKTCDVD is not set | 498 | # CONFIG_CDROM_PKTCDVD is not set |
475 | # CONFIG_ATA_OVER_ETH is not set | 499 | # CONFIG_ATA_OVER_ETH is not set |
476 | CONFIG_MISC_DEVICES=y | 500 | CONFIG_MISC_DEVICES=y |
@@ -478,6 +502,8 @@ CONFIG_MISC_DEVICES=y | |||
478 | # CONFIG_EEPROM_93CX6 is not set | 502 | # CONFIG_EEPROM_93CX6 is not set |
479 | # CONFIG_SGI_IOC4 is not set | 503 | # CONFIG_SGI_IOC4 is not set |
480 | # CONFIG_TIFM_CORE is not set | 504 | # CONFIG_TIFM_CORE is not set |
505 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
506 | CONFIG_HAVE_IDE=y | ||
481 | # CONFIG_IDE is not set | 507 | # CONFIG_IDE is not set |
482 | 508 | ||
483 | # | 509 | # |
@@ -518,6 +544,7 @@ CONFIG_SCSI_FC_ATTRS=y | |||
518 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 544 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
519 | CONFIG_SCSI_SAS_ATTRS=m | 545 | CONFIG_SCSI_SAS_ATTRS=m |
520 | CONFIG_SCSI_SAS_LIBSAS=m | 546 | CONFIG_SCSI_SAS_LIBSAS=m |
547 | CONFIG_SCSI_SAS_HOST_SMP=y | ||
521 | CONFIG_SCSI_SAS_LIBSAS_DEBUG=y | 548 | CONFIG_SCSI_SAS_LIBSAS_DEBUG=y |
522 | CONFIG_SCSI_SRP_ATTRS=m | 549 | CONFIG_SCSI_SRP_ATTRS=m |
523 | CONFIG_SCSI_LOWLEVEL=y | 550 | CONFIG_SCSI_LOWLEVEL=y |
@@ -543,6 +570,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
543 | CONFIG_SCSI_IBMVSCSI=m | 570 | CONFIG_SCSI_IBMVSCSI=m |
544 | # CONFIG_SCSI_INITIO is not set | 571 | # CONFIG_SCSI_INITIO is not set |
545 | # CONFIG_SCSI_INIA100 is not set | 572 | # CONFIG_SCSI_INIA100 is not set |
573 | # CONFIG_SCSI_MVSAS is not set | ||
546 | # CONFIG_SCSI_STEX is not set | 574 | # CONFIG_SCSI_STEX is not set |
547 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 575 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
548 | # CONFIG_SCSI_QLOGIC_1280 is not set | 576 | # CONFIG_SCSI_QLOGIC_1280 is not set |
@@ -589,7 +617,6 @@ CONFIG_BONDING=m | |||
589 | # CONFIG_EQUALIZER is not set | 617 | # CONFIG_EQUALIZER is not set |
590 | CONFIG_TUN=m | 618 | CONFIG_TUN=m |
591 | # CONFIG_VETH is not set | 619 | # CONFIG_VETH is not set |
592 | # CONFIG_IP1000 is not set | ||
593 | # CONFIG_ARCNET is not set | 620 | # CONFIG_ARCNET is not set |
594 | # CONFIG_PHYLIB is not set | 621 | # CONFIG_PHYLIB is not set |
595 | CONFIG_NET_ETHERNET=y | 622 | CONFIG_NET_ETHERNET=y |
@@ -618,6 +645,7 @@ CONFIG_E100=y | |||
618 | # CONFIG_NE2K_PCI is not set | 645 | # CONFIG_NE2K_PCI is not set |
619 | # CONFIG_8139CP is not set | 646 | # CONFIG_8139CP is not set |
620 | # CONFIG_8139TOO is not set | 647 | # CONFIG_8139TOO is not set |
648 | # CONFIG_R6040 is not set | ||
621 | # CONFIG_SIS900 is not set | 649 | # CONFIG_SIS900 is not set |
622 | # CONFIG_EPIC100 is not set | 650 | # CONFIG_EPIC100 is not set |
623 | # CONFIG_SUNDANCE is not set | 651 | # CONFIG_SUNDANCE is not set |
@@ -631,6 +659,9 @@ CONFIG_E1000=m | |||
631 | # CONFIG_E1000_NAPI is not set | 659 | # CONFIG_E1000_NAPI is not set |
632 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 660 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
633 | # CONFIG_E1000E is not set | 661 | # CONFIG_E1000E is not set |
662 | # CONFIG_E1000E_ENABLED is not set | ||
663 | # CONFIG_IP1000 is not set | ||
664 | # CONFIG_IGB is not set | ||
634 | # CONFIG_NS83820 is not set | 665 | # CONFIG_NS83820 is not set |
635 | # CONFIG_HAMACHI is not set | 666 | # CONFIG_HAMACHI is not set |
636 | # CONFIG_YELLOWFIN is not set | 667 | # CONFIG_YELLOWFIN is not set |
@@ -656,6 +687,7 @@ CONFIG_NETDEV_10000=y | |||
656 | # CONFIG_PASEMI_MAC is not set | 687 | # CONFIG_PASEMI_MAC is not set |
657 | # CONFIG_MLX4_CORE is not set | 688 | # CONFIG_MLX4_CORE is not set |
658 | # CONFIG_TEHUTI is not set | 689 | # CONFIG_TEHUTI is not set |
690 | # CONFIG_BNX2X is not set | ||
659 | CONFIG_TR=y | 691 | CONFIG_TR=y |
660 | CONFIG_IBMOL=y | 692 | CONFIG_IBMOL=y |
661 | # CONFIG_3C359 is not set | 693 | # CONFIG_3C359 is not set |
@@ -683,7 +715,6 @@ CONFIG_PPPOE=m | |||
683 | # CONFIG_SLIP is not set | 715 | # CONFIG_SLIP is not set |
684 | CONFIG_SLHC=m | 716 | CONFIG_SLHC=m |
685 | # CONFIG_NET_FC is not set | 717 | # CONFIG_NET_FC is not set |
686 | # CONFIG_SHAPER is not set | ||
687 | CONFIG_NETCONSOLE=y | 718 | CONFIG_NETCONSOLE=y |
688 | # CONFIG_NETCONSOLE_DYNAMIC is not set | 719 | # CONFIG_NETCONSOLE_DYNAMIC is not set |
689 | CONFIG_NETPOLL=y | 720 | CONFIG_NETPOLL=y |
@@ -734,6 +765,7 @@ CONFIG_VT_CONSOLE=y | |||
734 | CONFIG_HW_CONSOLE=y | 765 | CONFIG_HW_CONSOLE=y |
735 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 766 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
736 | # CONFIG_SERIAL_NONSTANDARD is not set | 767 | # CONFIG_SERIAL_NONSTANDARD is not set |
768 | # CONFIG_NOZOMI is not set | ||
737 | 769 | ||
738 | # | 770 | # |
739 | # Serial drivers | 771 | # Serial drivers |
@@ -772,6 +804,7 @@ CONFIG_DEVPORT=y | |||
772 | # CONFIG_W1 is not set | 804 | # CONFIG_W1 is not set |
773 | # CONFIG_POWER_SUPPLY is not set | 805 | # CONFIG_POWER_SUPPLY is not set |
774 | # CONFIG_HWMON is not set | 806 | # CONFIG_HWMON is not set |
807 | # CONFIG_THERMAL is not set | ||
775 | # CONFIG_WATCHDOG is not set | 808 | # CONFIG_WATCHDOG is not set |
776 | 809 | ||
777 | # | 810 | # |
@@ -821,10 +854,12 @@ CONFIG_DUMMY_CONSOLE=y | |||
821 | # CONFIG_HID_SUPPORT is not set | 854 | # CONFIG_HID_SUPPORT is not set |
822 | # CONFIG_USB_SUPPORT is not set | 855 | # CONFIG_USB_SUPPORT is not set |
823 | # CONFIG_MMC is not set | 856 | # CONFIG_MMC is not set |
857 | # CONFIG_MEMSTICK is not set | ||
824 | # CONFIG_NEW_LEDS is not set | 858 | # CONFIG_NEW_LEDS is not set |
825 | # CONFIG_INFINIBAND is not set | 859 | # CONFIG_INFINIBAND is not set |
826 | # CONFIG_EDAC is not set | 860 | # CONFIG_EDAC is not set |
827 | # CONFIG_RTC_CLASS is not set | 861 | # CONFIG_RTC_CLASS is not set |
862 | # CONFIG_DMADEVICES is not set | ||
828 | 863 | ||
829 | # | 864 | # |
830 | # Userspace I/O | 865 | # Userspace I/O |
@@ -869,12 +904,10 @@ CONFIG_GFS2_FS=m | |||
869 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m | 904 | CONFIG_GFS2_FS_LOCKING_NOLOCK=m |
870 | CONFIG_GFS2_FS_LOCKING_DLM=m | 905 | CONFIG_GFS2_FS_LOCKING_DLM=m |
871 | # CONFIG_OCFS2_FS is not set | 906 | # CONFIG_OCFS2_FS is not set |
872 | # CONFIG_MINIX_FS is not set | 907 | CONFIG_DNOTIFY=y |
873 | # CONFIG_ROMFS_FS is not set | ||
874 | CONFIG_INOTIFY=y | 908 | CONFIG_INOTIFY=y |
875 | CONFIG_INOTIFY_USER=y | 909 | CONFIG_INOTIFY_USER=y |
876 | # CONFIG_QUOTA is not set | 910 | # CONFIG_QUOTA is not set |
877 | CONFIG_DNOTIFY=y | ||
878 | CONFIG_AUTOFS_FS=m | 911 | CONFIG_AUTOFS_FS=m |
879 | # CONFIG_AUTOFS4_FS is not set | 912 | # CONFIG_AUTOFS4_FS is not set |
880 | # CONFIG_FUSE_FS is not set | 913 | # CONFIG_FUSE_FS is not set |
@@ -924,8 +957,10 @@ CONFIG_CONFIGFS_FS=m | |||
924 | # CONFIG_EFS_FS is not set | 957 | # CONFIG_EFS_FS is not set |
925 | CONFIG_CRAMFS=y | 958 | CONFIG_CRAMFS=y |
926 | # CONFIG_VXFS_FS is not set | 959 | # CONFIG_VXFS_FS is not set |
960 | # CONFIG_MINIX_FS is not set | ||
927 | # CONFIG_HPFS_FS is not set | 961 | # CONFIG_HPFS_FS is not set |
928 | # CONFIG_QNX4FS_FS is not set | 962 | # CONFIG_QNX4FS_FS is not set |
963 | # CONFIG_ROMFS_FS is not set | ||
929 | # CONFIG_SYSV_FS is not set | 964 | # CONFIG_SYSV_FS is not set |
930 | # CONFIG_UFS_FS is not set | 965 | # CONFIG_UFS_FS is not set |
931 | CONFIG_NETWORK_FILESYSTEMS=y | 966 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1009,7 +1044,6 @@ CONFIG_NLS_ISO8859_1=y | |||
1009 | # CONFIG_NLS_UTF8 is not set | 1044 | # CONFIG_NLS_UTF8 is not set |
1010 | CONFIG_DLM=m | 1045 | CONFIG_DLM=m |
1011 | # CONFIG_DLM_DEBUG is not set | 1046 | # CONFIG_DLM_DEBUG is not set |
1012 | # CONFIG_UCC_SLOW is not set | ||
1013 | 1047 | ||
1014 | # | 1048 | # |
1015 | # Library routines | 1049 | # Library routines |
@@ -1031,10 +1065,6 @@ CONFIG_PLIST=y | |||
1031 | CONFIG_HAS_IOMEM=y | 1065 | CONFIG_HAS_IOMEM=y |
1032 | CONFIG_HAS_IOPORT=y | 1066 | CONFIG_HAS_IOPORT=y |
1033 | CONFIG_HAS_DMA=y | 1067 | CONFIG_HAS_DMA=y |
1034 | CONFIG_INSTRUMENTATION=y | ||
1035 | # CONFIG_PROFILING is not set | ||
1036 | # CONFIG_KPROBES is not set | ||
1037 | # CONFIG_MARKERS is not set | ||
1038 | 1068 | ||
1039 | # | 1069 | # |
1040 | # Kernel hacking | 1070 | # Kernel hacking |
@@ -1053,6 +1083,7 @@ CONFIG_SCHED_DEBUG=y | |||
1053 | # CONFIG_SCHEDSTATS is not set | 1083 | # CONFIG_SCHEDSTATS is not set |
1054 | # CONFIG_TIMER_STATS is not set | 1084 | # CONFIG_TIMER_STATS is not set |
1055 | # CONFIG_SLUB_DEBUG_ON is not set | 1085 | # CONFIG_SLUB_DEBUG_ON is not set |
1086 | # CONFIG_SLUB_STATS is not set | ||
1056 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1087 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1057 | # CONFIG_RT_MUTEX_TESTER is not set | 1088 | # CONFIG_RT_MUTEX_TESTER is not set |
1058 | # CONFIG_DEBUG_SPINLOCK is not set | 1089 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1065,9 +1096,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1065 | # CONFIG_DEBUG_VM is not set | 1096 | # CONFIG_DEBUG_VM is not set |
1066 | # CONFIG_DEBUG_LIST is not set | 1097 | # CONFIG_DEBUG_LIST is not set |
1067 | # CONFIG_DEBUG_SG is not set | 1098 | # CONFIG_DEBUG_SG is not set |
1068 | # CONFIG_FORCED_INLINING is not set | ||
1069 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1099 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1070 | # CONFIG_RCU_TORTURE_TEST is not set | 1100 | # CONFIG_RCU_TORTURE_TEST is not set |
1101 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1071 | # CONFIG_FAULT_INJECTION is not set | 1102 | # CONFIG_FAULT_INJECTION is not set |
1072 | # CONFIG_SAMPLES is not set | 1103 | # CONFIG_SAMPLES is not set |
1073 | CONFIG_DEBUG_STACKOVERFLOW=y | 1104 | CONFIG_DEBUG_STACKOVERFLOW=y |
@@ -1089,6 +1120,7 @@ CONFIG_CRYPTO=y | |||
1089 | CONFIG_CRYPTO_ALGAPI=y | 1120 | CONFIG_CRYPTO_ALGAPI=y |
1090 | CONFIG_CRYPTO_AEAD=m | 1121 | CONFIG_CRYPTO_AEAD=m |
1091 | CONFIG_CRYPTO_BLKCIPHER=y | 1122 | CONFIG_CRYPTO_BLKCIPHER=y |
1123 | # CONFIG_CRYPTO_SEQIV is not set | ||
1092 | CONFIG_CRYPTO_HASH=y | 1124 | CONFIG_CRYPTO_HASH=y |
1093 | CONFIG_CRYPTO_MANAGER=y | 1125 | CONFIG_CRYPTO_MANAGER=y |
1094 | CONFIG_CRYPTO_HMAC=y | 1126 | CONFIG_CRYPTO_HMAC=y |
@@ -1107,6 +1139,9 @@ CONFIG_CRYPTO_CBC=y | |||
1107 | CONFIG_CRYPTO_PCBC=m | 1139 | CONFIG_CRYPTO_PCBC=m |
1108 | # CONFIG_CRYPTO_LRW is not set | 1140 | # CONFIG_CRYPTO_LRW is not set |
1109 | # CONFIG_CRYPTO_XTS is not set | 1141 | # CONFIG_CRYPTO_XTS is not set |
1142 | # CONFIG_CRYPTO_CTR is not set | ||
1143 | # CONFIG_CRYPTO_GCM is not set | ||
1144 | # CONFIG_CRYPTO_CCM is not set | ||
1110 | # CONFIG_CRYPTO_CRYPTD is not set | 1145 | # CONFIG_CRYPTO_CRYPTD is not set |
1111 | CONFIG_CRYPTO_DES=y | 1146 | CONFIG_CRYPTO_DES=y |
1112 | # CONFIG_CRYPTO_FCRYPT is not set | 1147 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1122,11 +1157,13 @@ CONFIG_CRYPTO_ARC4=m | |||
1122 | CONFIG_CRYPTO_KHAZAD=m | 1157 | CONFIG_CRYPTO_KHAZAD=m |
1123 | CONFIG_CRYPTO_ANUBIS=m | 1158 | CONFIG_CRYPTO_ANUBIS=m |
1124 | CONFIG_CRYPTO_SEED=m | 1159 | CONFIG_CRYPTO_SEED=m |
1160 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1125 | CONFIG_CRYPTO_DEFLATE=m | 1161 | CONFIG_CRYPTO_DEFLATE=m |
1126 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1162 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1127 | CONFIG_CRYPTO_CRC32C=m | 1163 | CONFIG_CRYPTO_CRC32C=m |
1128 | # CONFIG_CRYPTO_CAMELLIA is not set | 1164 | # CONFIG_CRYPTO_CAMELLIA is not set |
1129 | CONFIG_CRYPTO_TEST=m | 1165 | CONFIG_CRYPTO_TEST=m |
1130 | CONFIG_CRYPTO_AUTHENC=m | 1166 | CONFIG_CRYPTO_AUTHENC=m |
1167 | # CONFIG_CRYPTO_LZO is not set | ||
1131 | # CONFIG_CRYPTO_HW is not set | 1168 | # CONFIG_CRYPTO_HW is not set |
1132 | # CONFIG_PPC_CLOCK is not set | 1169 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/pmac32_defconfig b/arch/powerpc/configs/pmac32_defconfig index 5416be4419bb..558b0d348d4f 100644 --- a/arch/powerpc/configs/pmac32_defconfig +++ b/arch/powerpc/configs/pmac32_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc4 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Dec 6 16:49:05 2007 | 4 | # Thu Mar 20 11:05:14 2008 |
5 | # | 5 | # |
6 | # CONFIG_PPC64 is not set | 6 | # CONFIG_PPC64 is not set |
7 | 7 | ||
@@ -29,6 +29,7 @@ CONFIG_GENERIC_TIME=y | |||
29 | CONFIG_GENERIC_TIME_VSYSCALL=y | 29 | CONFIG_GENERIC_TIME_VSYSCALL=y |
30 | CONFIG_GENERIC_CLOCKEVENTS=y | 30 | CONFIG_GENERIC_CLOCKEVENTS=y |
31 | CONFIG_GENERIC_HARDIRQS=y | 31 | CONFIG_GENERIC_HARDIRQS=y |
32 | # CONFIG_HAVE_SETUP_PER_CPU_AREA is not set | ||
32 | CONFIG_IRQ_PER_CPU=y | 33 | CONFIG_IRQ_PER_CPU=y |
33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 34 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
34 | CONFIG_ARCH_HAS_ILOG2_U32=y | 35 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -49,6 +50,9 @@ CONFIG_AUDIT_ARCH=y | |||
49 | CONFIG_GENERIC_BUG=y | 50 | CONFIG_GENERIC_BUG=y |
50 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y | 51 | CONFIG_SYS_SUPPORTS_APM_EMULATION=y |
51 | # CONFIG_DEFAULT_UIMAGE is not set | 52 | # CONFIG_DEFAULT_UIMAGE is not set |
53 | CONFIG_HIBERNATE_32=y | ||
54 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
55 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
52 | # CONFIG_PPC_DCR_NATIVE is not set | 56 | # CONFIG_PPC_DCR_NATIVE is not set |
53 | # CONFIG_PPC_DCR_MMIO is not set | 57 | # CONFIG_PPC_DCR_MMIO is not set |
54 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 58 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
@@ -67,18 +71,22 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
67 | CONFIG_POSIX_MQUEUE=y | 71 | CONFIG_POSIX_MQUEUE=y |
68 | # CONFIG_BSD_PROCESS_ACCT is not set | 72 | # CONFIG_BSD_PROCESS_ACCT is not set |
69 | # CONFIG_TASKSTATS is not set | 73 | # CONFIG_TASKSTATS is not set |
70 | # CONFIG_USER_NS is not set | ||
71 | # CONFIG_PID_NS is not set | ||
72 | # CONFIG_AUDIT is not set | 74 | # CONFIG_AUDIT is not set |
73 | CONFIG_IKCONFIG=y | 75 | CONFIG_IKCONFIG=y |
74 | CONFIG_IKCONFIG_PROC=y | 76 | CONFIG_IKCONFIG_PROC=y |
75 | CONFIG_LOG_BUF_SHIFT=14 | 77 | CONFIG_LOG_BUF_SHIFT=14 |
76 | # CONFIG_CGROUPS is not set | 78 | # CONFIG_CGROUPS is not set |
77 | CONFIG_FAIR_GROUP_SCHED=y | 79 | # CONFIG_GROUP_SCHED is not set |
78 | CONFIG_FAIR_USER_SCHED=y | 80 | # CONFIG_USER_SCHED is not set |
79 | # CONFIG_FAIR_CGROUP_SCHED is not set | 81 | # CONFIG_CGROUP_SCHED is not set |
80 | CONFIG_SYSFS_DEPRECATED=y | 82 | CONFIG_SYSFS_DEPRECATED=y |
83 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
81 | # CONFIG_RELAY is not set | 84 | # CONFIG_RELAY is not set |
85 | CONFIG_NAMESPACES=y | ||
86 | # CONFIG_UTS_NS is not set | ||
87 | # CONFIG_IPC_NS is not set | ||
88 | # CONFIG_USER_NS is not set | ||
89 | # CONFIG_PID_NS is not set | ||
82 | CONFIG_BLK_DEV_INITRD=y | 90 | CONFIG_BLK_DEV_INITRD=y |
83 | CONFIG_INITRAMFS_SOURCE="" | 91 | CONFIG_INITRAMFS_SOURCE="" |
84 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | 92 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set |
@@ -92,11 +100,13 @@ CONFIG_HOTPLUG=y | |||
92 | CONFIG_PRINTK=y | 100 | CONFIG_PRINTK=y |
93 | CONFIG_BUG=y | 101 | CONFIG_BUG=y |
94 | CONFIG_ELF_CORE=y | 102 | CONFIG_ELF_CORE=y |
103 | # CONFIG_COMPAT_BRK is not set | ||
95 | CONFIG_BASE_FULL=y | 104 | CONFIG_BASE_FULL=y |
96 | CONFIG_FUTEX=y | 105 | CONFIG_FUTEX=y |
97 | CONFIG_ANON_INODES=y | 106 | CONFIG_ANON_INODES=y |
98 | CONFIG_EPOLL=y | 107 | CONFIG_EPOLL=y |
99 | CONFIG_SIGNALFD=y | 108 | CONFIG_SIGNALFD=y |
109 | CONFIG_TIMERFD=y | ||
100 | CONFIG_EVENTFD=y | 110 | CONFIG_EVENTFD=y |
101 | CONFIG_SHMEM=y | 111 | CONFIG_SHMEM=y |
102 | CONFIG_VM_EVENT_COUNTERS=y | 112 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -104,6 +114,15 @@ CONFIG_SLUB_DEBUG=y | |||
104 | # CONFIG_SLAB is not set | 114 | # CONFIG_SLAB is not set |
105 | CONFIG_SLUB=y | 115 | CONFIG_SLUB=y |
106 | # CONFIG_SLOB is not set | 116 | # CONFIG_SLOB is not set |
117 | CONFIG_PROFILING=y | ||
118 | # CONFIG_MARKERS is not set | ||
119 | CONFIG_OPROFILE=y | ||
120 | CONFIG_HAVE_OPROFILE=y | ||
121 | # CONFIG_KPROBES is not set | ||
122 | CONFIG_HAVE_KPROBES=y | ||
123 | CONFIG_HAVE_KRETPROBES=y | ||
124 | CONFIG_PROC_PAGE_MONITOR=y | ||
125 | CONFIG_SLABINFO=y | ||
107 | CONFIG_RT_MUTEXES=y | 126 | CONFIG_RT_MUTEXES=y |
108 | # CONFIG_TINY_SHMEM is not set | 127 | # CONFIG_TINY_SHMEM is not set |
109 | CONFIG_BASE_SMALL=0 | 128 | CONFIG_BASE_SMALL=0 |
@@ -131,6 +150,7 @@ CONFIG_DEFAULT_AS=y | |||
131 | # CONFIG_DEFAULT_CFQ is not set | 150 | # CONFIG_DEFAULT_CFQ is not set |
132 | # CONFIG_DEFAULT_NOOP is not set | 151 | # CONFIG_DEFAULT_NOOP is not set |
133 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 152 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
153 | CONFIG_CLASSIC_RCU=y | ||
134 | 154 | ||
135 | # | 155 | # |
136 | # Platform support | 156 | # Platform support |
@@ -141,16 +161,17 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
141 | # CONFIG_PPC_86xx is not set | 161 | # CONFIG_PPC_86xx is not set |
142 | CONFIG_CLASSIC32=y | 162 | CONFIG_CLASSIC32=y |
143 | # CONFIG_PPC_CHRP is not set | 163 | # CONFIG_PPC_CHRP is not set |
164 | # CONFIG_PPC_MPC512x is not set | ||
165 | # CONFIG_PPC_MPC5121 is not set | ||
166 | # CONFIG_MPC5121_ADS is not set | ||
144 | # CONFIG_PPC_MPC52xx is not set | 167 | # CONFIG_PPC_MPC52xx is not set |
145 | # CONFIG_PPC_MPC5200 is not set | ||
146 | # CONFIG_PPC_EFIKA is not set | ||
147 | # CONFIG_PPC_LITE5200 is not set | ||
148 | CONFIG_PPC_PMAC=y | 168 | CONFIG_PPC_PMAC=y |
149 | # CONFIG_PPC_CELL is not set | 169 | # CONFIG_PPC_CELL is not set |
150 | # CONFIG_PPC_CELL_NATIVE is not set | 170 | # CONFIG_PPC_CELL_NATIVE is not set |
151 | # CONFIG_PQ2ADS is not set | 171 | # CONFIG_PQ2ADS is not set |
152 | # CONFIG_EMBEDDED6xx is not set | 172 | # CONFIG_EMBEDDED6xx is not set |
153 | CONFIG_PPC_NATIVE=y | 173 | CONFIG_PPC_NATIVE=y |
174 | # CONFIG_IPIC is not set | ||
154 | CONFIG_MPIC=y | 175 | CONFIG_MPIC=y |
155 | # CONFIG_MPIC_WEIRD is not set | 176 | # CONFIG_MPIC_WEIRD is not set |
156 | # CONFIG_PPC_I8259 is not set | 177 | # CONFIG_PPC_I8259 is not set |
@@ -181,7 +202,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y | |||
181 | CONFIG_CPU_FREQ_PMAC=y | 202 | CONFIG_CPU_FREQ_PMAC=y |
182 | CONFIG_PPC601_SYNC_FIX=y | 203 | CONFIG_PPC601_SYNC_FIX=y |
183 | # CONFIG_TAU is not set | 204 | # CONFIG_TAU is not set |
184 | # CONFIG_CPM2 is not set | ||
185 | # CONFIG_FSL_ULI1575 is not set | 205 | # CONFIG_FSL_ULI1575 is not set |
186 | 206 | ||
187 | # | 207 | # |
@@ -197,12 +217,16 @@ CONFIG_HZ_250=y | |||
197 | # CONFIG_HZ_300 is not set | 217 | # CONFIG_HZ_300 is not set |
198 | # CONFIG_HZ_1000 is not set | 218 | # CONFIG_HZ_1000 is not set |
199 | CONFIG_HZ=250 | 219 | CONFIG_HZ=250 |
220 | # CONFIG_SCHED_HRTICK is not set | ||
200 | CONFIG_PREEMPT_NONE=y | 221 | CONFIG_PREEMPT_NONE=y |
201 | # CONFIG_PREEMPT_VOLUNTARY is not set | 222 | # CONFIG_PREEMPT_VOLUNTARY is not set |
202 | # CONFIG_PREEMPT is not set | 223 | # CONFIG_PREEMPT is not set |
203 | CONFIG_BINFMT_ELF=y | 224 | CONFIG_BINFMT_ELF=y |
204 | CONFIG_BINFMT_MISC=m | 225 | CONFIG_BINFMT_MISC=m |
226 | # CONFIG_IOMMU_HELPER is not set | ||
205 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 227 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
228 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
229 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
206 | # CONFIG_KEXEC is not set | 230 | # CONFIG_KEXEC is not set |
207 | CONFIG_ARCH_FLATMEM_ENABLE=y | 231 | CONFIG_ARCH_FLATMEM_ENABLE=y |
208 | CONFIG_ARCH_POPULATES_NODE_MAP=y | 232 | CONFIG_ARCH_POPULATES_NODE_MAP=y |
@@ -221,19 +245,19 @@ CONFIG_BOUNCE=y | |||
221 | CONFIG_VIRT_TO_BUS=y | 245 | CONFIG_VIRT_TO_BUS=y |
222 | CONFIG_PROC_DEVICETREE=y | 246 | CONFIG_PROC_DEVICETREE=y |
223 | # CONFIG_CMDLINE_BOOL is not set | 247 | # CONFIG_CMDLINE_BOOL is not set |
248 | CONFIG_ARCH_WANTS_FREEZER_CONTROL=y | ||
224 | CONFIG_PM=y | 249 | CONFIG_PM=y |
225 | # CONFIG_PM_LEGACY is not set | 250 | # CONFIG_PM_LEGACY is not set |
226 | CONFIG_PM_DEBUG=y | 251 | CONFIG_PM_DEBUG=y |
227 | # CONFIG_PM_VERBOSE is not set | 252 | # CONFIG_PM_VERBOSE is not set |
253 | CONFIG_CAN_PM_TRACE=y | ||
228 | CONFIG_PM_SLEEP=y | 254 | CONFIG_PM_SLEEP=y |
229 | CONFIG_SUSPEND_UP_POSSIBLE=y | ||
230 | CONFIG_SUSPEND=y | 255 | CONFIG_SUSPEND=y |
231 | CONFIG_HIBERNATION_UP_POSSIBLE=y | 256 | CONFIG_SUSPEND_FREEZER=y |
232 | CONFIG_HIBERNATION=y | 257 | CONFIG_HIBERNATION=y |
233 | CONFIG_PM_STD_PARTITION="" | 258 | CONFIG_PM_STD_PARTITION="" |
234 | CONFIG_APM_EMULATION=y | 259 | CONFIG_APM_EMULATION=y |
235 | CONFIG_SECCOMP=y | 260 | CONFIG_SECCOMP=y |
236 | # CONFIG_WANT_DEVICE_TREE is not set | ||
237 | CONFIG_ISA_DMA_API=y | 261 | CONFIG_ISA_DMA_API=y |
238 | 262 | ||
239 | # | 263 | # |
@@ -300,6 +324,7 @@ CONFIG_XFRM=y | |||
300 | CONFIG_XFRM_USER=y | 324 | CONFIG_XFRM_USER=y |
301 | # CONFIG_XFRM_SUB_POLICY is not set | 325 | # CONFIG_XFRM_SUB_POLICY is not set |
302 | # CONFIG_XFRM_MIGRATE is not set | 326 | # CONFIG_XFRM_MIGRATE is not set |
327 | # CONFIG_XFRM_STATISTICS is not set | ||
303 | CONFIG_NET_KEY=y | 328 | CONFIG_NET_KEY=y |
304 | # CONFIG_NET_KEY_MIGRATE is not set | 329 | # CONFIG_NET_KEY_MIGRATE is not set |
305 | CONFIG_INET=y | 330 | CONFIG_INET=y |
@@ -334,12 +359,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
334 | # CONFIG_NETWORK_SECMARK is not set | 359 | # CONFIG_NETWORK_SECMARK is not set |
335 | CONFIG_NETFILTER=y | 360 | CONFIG_NETFILTER=y |
336 | # CONFIG_NETFILTER_DEBUG is not set | 361 | # CONFIG_NETFILTER_DEBUG is not set |
362 | CONFIG_NETFILTER_ADVANCED=y | ||
337 | 363 | ||
338 | # | 364 | # |
339 | # Core Netfilter Configuration | 365 | # Core Netfilter Configuration |
340 | # | 366 | # |
341 | # CONFIG_NETFILTER_NETLINK is not set | 367 | CONFIG_NETFILTER_NETLINK=m |
342 | CONFIG_NF_CONNTRACK_ENABLED=m | 368 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
369 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
343 | CONFIG_NF_CONNTRACK=m | 370 | CONFIG_NF_CONNTRACK=m |
344 | # CONFIG_NF_CT_ACCT is not set | 371 | # CONFIG_NF_CT_ACCT is not set |
345 | # CONFIG_NF_CONNTRACK_MARK is not set | 372 | # CONFIG_NF_CONNTRACK_MARK is not set |
@@ -355,6 +382,7 @@ CONFIG_NF_CONNTRACK_IRC=m | |||
355 | # CONFIG_NF_CONNTRACK_SANE is not set | 382 | # CONFIG_NF_CONNTRACK_SANE is not set |
356 | # CONFIG_NF_CONNTRACK_SIP is not set | 383 | # CONFIG_NF_CONNTRACK_SIP is not set |
357 | CONFIG_NF_CONNTRACK_TFTP=m | 384 | CONFIG_NF_CONNTRACK_TFTP=m |
385 | CONFIG_NF_CT_NETLINK=m | ||
358 | CONFIG_NETFILTER_XTABLES=m | 386 | CONFIG_NETFILTER_XTABLES=m |
359 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | 387 | CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m |
360 | # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set | 388 | # CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set |
@@ -363,8 +391,10 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m | |||
363 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 391 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
364 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 392 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
365 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | 393 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m |
394 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
366 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 395 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
367 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 396 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
397 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
368 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 398 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
369 | # CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set | 399 | # CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set |
370 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 400 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
@@ -374,14 +404,17 @@ CONFIG_NETFILTER_XT_MATCH_DCCP=m | |||
374 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 404 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
375 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 405 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
376 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | 406 | CONFIG_NETFILTER_XT_MATCH_HELPER=m |
407 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
377 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 408 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m |
378 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | 409 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m |
379 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 410 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
380 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 411 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
412 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
381 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 413 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
382 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 414 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
383 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 415 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
384 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set | 416 | # CONFIG_NETFILTER_XT_MATCH_QUOTA is not set |
417 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
385 | CONFIG_NETFILTER_XT_MATCH_REALM=m | 418 | CONFIG_NETFILTER_XT_MATCH_REALM=m |
386 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | 419 | CONFIG_NETFILTER_XT_MATCH_SCTP=m |
387 | # CONFIG_NETFILTER_XT_MATCH_STATE is not set | 420 | # CONFIG_NETFILTER_XT_MATCH_STATE is not set |
@@ -399,13 +432,10 @@ CONFIG_NF_CONNTRACK_IPV4=m | |||
399 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | 432 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
400 | # CONFIG_IP_NF_QUEUE is not set | 433 | # CONFIG_IP_NF_QUEUE is not set |
401 | CONFIG_IP_NF_IPTABLES=m | 434 | CONFIG_IP_NF_IPTABLES=m |
402 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
403 | CONFIG_IP_NF_MATCH_TOS=m | ||
404 | CONFIG_IP_NF_MATCH_RECENT=m | 435 | CONFIG_IP_NF_MATCH_RECENT=m |
405 | CONFIG_IP_NF_MATCH_ECN=m | 436 | CONFIG_IP_NF_MATCH_ECN=m |
406 | CONFIG_IP_NF_MATCH_AH=m | 437 | CONFIG_IP_NF_MATCH_AH=m |
407 | CONFIG_IP_NF_MATCH_TTL=m | 438 | CONFIG_IP_NF_MATCH_TTL=m |
408 | CONFIG_IP_NF_MATCH_OWNER=m | ||
409 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 439 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
410 | CONFIG_IP_NF_FILTER=m | 440 | CONFIG_IP_NF_FILTER=m |
411 | CONFIG_IP_NF_TARGET_REJECT=m | 441 | CONFIG_IP_NF_TARGET_REJECT=m |
@@ -416,7 +446,6 @@ CONFIG_NF_NAT_NEEDED=y | |||
416 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 446 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
417 | CONFIG_IP_NF_TARGET_REDIRECT=m | 447 | CONFIG_IP_NF_TARGET_REDIRECT=m |
418 | CONFIG_IP_NF_TARGET_NETMAP=m | 448 | CONFIG_IP_NF_TARGET_NETMAP=m |
419 | CONFIG_IP_NF_TARGET_SAME=m | ||
420 | # CONFIG_NF_NAT_SNMP_BASIC is not set | 449 | # CONFIG_NF_NAT_SNMP_BASIC is not set |
421 | CONFIG_NF_NAT_FTP=m | 450 | CONFIG_NF_NAT_FTP=m |
422 | CONFIG_NF_NAT_IRC=m | 451 | CONFIG_NF_NAT_IRC=m |
@@ -426,7 +455,6 @@ CONFIG_NF_NAT_TFTP=m | |||
426 | # CONFIG_NF_NAT_H323 is not set | 455 | # CONFIG_NF_NAT_H323 is not set |
427 | # CONFIG_NF_NAT_SIP is not set | 456 | # CONFIG_NF_NAT_SIP is not set |
428 | CONFIG_IP_NF_MANGLE=m | 457 | CONFIG_IP_NF_MANGLE=m |
429 | CONFIG_IP_NF_TARGET_TOS=m | ||
430 | CONFIG_IP_NF_TARGET_ECN=m | 458 | CONFIG_IP_NF_TARGET_ECN=m |
431 | CONFIG_IP_NF_TARGET_TTL=m | 459 | CONFIG_IP_NF_TARGET_TTL=m |
432 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set | 460 | # CONFIG_IP_NF_TARGET_CLUSTERIP is not set |
@@ -444,9 +472,9 @@ CONFIG_IP_DCCP_ACKVEC=y | |||
444 | CONFIG_IP_DCCP_CCID2=m | 472 | CONFIG_IP_DCCP_CCID2=m |
445 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set | 473 | # CONFIG_IP_DCCP_CCID2_DEBUG is not set |
446 | CONFIG_IP_DCCP_CCID3=m | 474 | CONFIG_IP_DCCP_CCID3=m |
447 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
448 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set | 475 | # CONFIG_IP_DCCP_CCID3_DEBUG is not set |
449 | CONFIG_IP_DCCP_CCID3_RTO=100 | 476 | CONFIG_IP_DCCP_CCID3_RTO=100 |
477 | CONFIG_IP_DCCP_TFRC_LIB=m | ||
450 | 478 | ||
451 | # | 479 | # |
452 | # DCCP Kernel Hacking | 480 | # DCCP Kernel Hacking |
@@ -474,6 +502,7 @@ CONFIG_NET_SCH_FIFO=y | |||
474 | # | 502 | # |
475 | # CONFIG_NET_PKTGEN is not set | 503 | # CONFIG_NET_PKTGEN is not set |
476 | # CONFIG_HAMRADIO is not set | 504 | # CONFIG_HAMRADIO is not set |
505 | # CONFIG_CAN is not set | ||
477 | CONFIG_IRDA=m | 506 | CONFIG_IRDA=m |
478 | 507 | ||
479 | # | 508 | # |
@@ -509,15 +538,6 @@ CONFIG_IRTTY_SIR=m | |||
509 | # CONFIG_KS959_DONGLE is not set | 538 | # CONFIG_KS959_DONGLE is not set |
510 | 539 | ||
511 | # | 540 | # |
512 | # Old SIR device drivers | ||
513 | # | ||
514 | # CONFIG_IRPORT_SIR is not set | ||
515 | |||
516 | # | ||
517 | # Old Serial dongle support | ||
518 | # | ||
519 | |||
520 | # | ||
521 | # FIR device drivers | 541 | # FIR device drivers |
522 | # | 542 | # |
523 | # CONFIG_USB_IRDA is not set | 543 | # CONFIG_USB_IRDA is not set |
@@ -563,8 +583,26 @@ CONFIG_CFG80211=m | |||
563 | CONFIG_NL80211=y | 583 | CONFIG_NL80211=y |
564 | CONFIG_WIRELESS_EXT=y | 584 | CONFIG_WIRELESS_EXT=y |
565 | CONFIG_MAC80211=m | 585 | CONFIG_MAC80211=m |
566 | CONFIG_MAC80211_RCSIMPLE=y | 586 | |
587 | # | ||
588 | # Rate control algorithm selection | ||
589 | # | ||
590 | CONFIG_MAC80211_RC_DEFAULT_PID=y | ||
591 | # CONFIG_MAC80211_RC_DEFAULT_SIMPLE is not set | ||
592 | # CONFIG_MAC80211_RC_DEFAULT_NONE is not set | ||
593 | |||
594 | # | ||
595 | # Selecting 'y' for an algorithm will | ||
596 | # | ||
597 | |||
598 | # | ||
599 | # build the algorithm into mac80211. | ||
600 | # | ||
601 | CONFIG_MAC80211_RC_DEFAULT="pid" | ||
602 | CONFIG_MAC80211_RC_PID=y | ||
603 | # CONFIG_MAC80211_RC_SIMPLE is not set | ||
567 | CONFIG_MAC80211_LEDS=y | 604 | CONFIG_MAC80211_LEDS=y |
605 | # CONFIG_MAC80211_DEBUG_PACKET_ALIGNMENT is not set | ||
568 | # CONFIG_MAC80211_DEBUG is not set | 606 | # CONFIG_MAC80211_DEBUG is not set |
569 | CONFIG_IEEE80211=m | 607 | CONFIG_IEEE80211=m |
570 | # CONFIG_IEEE80211_DEBUG is not set | 608 | # CONFIG_IEEE80211_DEBUG is not set |
@@ -610,7 +648,7 @@ CONFIG_BLK_DEV_UB=m | |||
610 | CONFIG_BLK_DEV_RAM=y | 648 | CONFIG_BLK_DEV_RAM=y |
611 | CONFIG_BLK_DEV_RAM_COUNT=16 | 649 | CONFIG_BLK_DEV_RAM_COUNT=16 |
612 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 650 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
613 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 651 | # CONFIG_BLK_DEV_XIP is not set |
614 | # CONFIG_CDROM_PKTCDVD is not set | 652 | # CONFIG_CDROM_PKTCDVD is not set |
615 | # CONFIG_ATA_OVER_ETH is not set | 653 | # CONFIG_ATA_OVER_ETH is not set |
616 | CONFIG_MISC_DEVICES=y | 654 | CONFIG_MISC_DEVICES=y |
@@ -618,11 +656,13 @@ CONFIG_MISC_DEVICES=y | |||
618 | # CONFIG_EEPROM_93CX6 is not set | 656 | # CONFIG_EEPROM_93CX6 is not set |
619 | # CONFIG_SGI_IOC4 is not set | 657 | # CONFIG_SGI_IOC4 is not set |
620 | # CONFIG_TIFM_CORE is not set | 658 | # CONFIG_TIFM_CORE is not set |
659 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
660 | CONFIG_HAVE_IDE=y | ||
621 | CONFIG_IDE=y | 661 | CONFIG_IDE=y |
622 | CONFIG_BLK_DEV_IDE=y | 662 | CONFIG_BLK_DEV_IDE=y |
623 | 663 | ||
624 | # | 664 | # |
625 | # Please see Documentation/ide.txt for help/info on IDE drives | 665 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
626 | # | 666 | # |
627 | # CONFIG_BLK_DEV_IDE_SATA is not set | 667 | # CONFIG_BLK_DEV_IDE_SATA is not set |
628 | CONFIG_BLK_DEV_IDEDISK=y | 668 | CONFIG_BLK_DEV_IDEDISK=y |
@@ -630,6 +670,7 @@ CONFIG_BLK_DEV_IDEDISK=y | |||
630 | CONFIG_BLK_DEV_IDECS=m | 670 | CONFIG_BLK_DEV_IDECS=m |
631 | # CONFIG_BLK_DEV_DELKIN is not set | 671 | # CONFIG_BLK_DEV_DELKIN is not set |
632 | CONFIG_BLK_DEV_IDECD=y | 672 | CONFIG_BLK_DEV_IDECD=y |
673 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
633 | # CONFIG_BLK_DEV_IDETAPE is not set | 674 | # CONFIG_BLK_DEV_IDETAPE is not set |
634 | CONFIG_BLK_DEV_IDEFLOPPY=y | 675 | CONFIG_BLK_DEV_IDEFLOPPY=y |
635 | CONFIG_BLK_DEV_IDESCSI=y | 676 | CONFIG_BLK_DEV_IDESCSI=y |
@@ -641,12 +682,12 @@ CONFIG_IDE_PROC_FS=y | |||
641 | # | 682 | # |
642 | # CONFIG_IDE_GENERIC is not set | 683 | # CONFIG_IDE_GENERIC is not set |
643 | # CONFIG_BLK_DEV_PLATFORM is not set | 684 | # CONFIG_BLK_DEV_PLATFORM is not set |
685 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
644 | 686 | ||
645 | # | 687 | # |
646 | # PCI IDE chipsets support | 688 | # PCI IDE chipsets support |
647 | # | 689 | # |
648 | CONFIG_BLK_DEV_IDEPCI=y | 690 | CONFIG_BLK_DEV_IDEPCI=y |
649 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
650 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 691 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
651 | # CONFIG_BLK_DEV_OFFBOARD is not set | 692 | # CONFIG_BLK_DEV_OFFBOARD is not set |
652 | CONFIG_BLK_DEV_GENERIC=y | 693 | CONFIG_BLK_DEV_GENERIC=y |
@@ -680,7 +721,6 @@ CONFIG_BLK_DEV_SL82C105=y | |||
680 | CONFIG_BLK_DEV_IDE_PMAC=y | 721 | CONFIG_BLK_DEV_IDE_PMAC=y |
681 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 722 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
682 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 723 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
683 | # CONFIG_IDE_ARM is not set | ||
684 | CONFIG_BLK_DEV_IDEDMA=y | 724 | CONFIG_BLK_DEV_IDEDMA=y |
685 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 725 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
686 | # CONFIG_BLK_DEV_HD is not set | 726 | # CONFIG_BLK_DEV_HD is not set |
@@ -754,6 +794,7 @@ CONFIG_SCSI_AIC7XXX_OLD=m | |||
754 | # CONFIG_SCSI_IPS is not set | 794 | # CONFIG_SCSI_IPS is not set |
755 | # CONFIG_SCSI_INITIO is not set | 795 | # CONFIG_SCSI_INITIO is not set |
756 | # CONFIG_SCSI_INIA100 is not set | 796 | # CONFIG_SCSI_INIA100 is not set |
797 | # CONFIG_SCSI_MVSAS is not set | ||
757 | # CONFIG_SCSI_STEX is not set | 798 | # CONFIG_SCSI_STEX is not set |
758 | CONFIG_SCSI_SYM53C8XX_2=y | 799 | CONFIG_SCSI_SYM53C8XX_2=y |
759 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 800 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
@@ -848,7 +889,6 @@ CONFIG_DUMMY=m | |||
848 | # CONFIG_EQUALIZER is not set | 889 | # CONFIG_EQUALIZER is not set |
849 | CONFIG_TUN=m | 890 | CONFIG_TUN=m |
850 | # CONFIG_VETH is not set | 891 | # CONFIG_VETH is not set |
851 | # CONFIG_IP1000 is not set | ||
852 | # CONFIG_ARCNET is not set | 892 | # CONFIG_ARCNET is not set |
853 | # CONFIG_PHYLIB is not set | 893 | # CONFIG_PHYLIB is not set |
854 | CONFIG_NET_ETHERNET=y | 894 | CONFIG_NET_ETHERNET=y |
@@ -880,6 +920,7 @@ CONFIG_PCNET32=y | |||
880 | # CONFIG_NE2K_PCI is not set | 920 | # CONFIG_NE2K_PCI is not set |
881 | # CONFIG_8139CP is not set | 921 | # CONFIG_8139CP is not set |
882 | # CONFIG_8139TOO is not set | 922 | # CONFIG_8139TOO is not set |
923 | # CONFIG_R6040 is not set | ||
883 | # CONFIG_SIS900 is not set | 924 | # CONFIG_SIS900 is not set |
884 | # CONFIG_EPIC100 is not set | 925 | # CONFIG_EPIC100 is not set |
885 | # CONFIG_SUNDANCE is not set | 926 | # CONFIG_SUNDANCE is not set |
@@ -891,6 +932,9 @@ CONFIG_NETDEV_1000=y | |||
891 | # CONFIG_DL2K is not set | 932 | # CONFIG_DL2K is not set |
892 | # CONFIG_E1000 is not set | 933 | # CONFIG_E1000 is not set |
893 | # CONFIG_E1000E is not set | 934 | # CONFIG_E1000E is not set |
935 | # CONFIG_E1000E_ENABLED is not set | ||
936 | # CONFIG_IP1000 is not set | ||
937 | # CONFIG_IGB is not set | ||
894 | # CONFIG_NS83820 is not set | 938 | # CONFIG_NS83820 is not set |
895 | # CONFIG_HAMACHI is not set | 939 | # CONFIG_HAMACHI is not set |
896 | # CONFIG_YELLOWFIN is not set | 940 | # CONFIG_YELLOWFIN is not set |
@@ -916,6 +960,7 @@ CONFIG_NETDEV_10000=y | |||
916 | # CONFIG_NIU is not set | 960 | # CONFIG_NIU is not set |
917 | # CONFIG_MLX4_CORE is not set | 961 | # CONFIG_MLX4_CORE is not set |
918 | # CONFIG_TEHUTI is not set | 962 | # CONFIG_TEHUTI is not set |
963 | # CONFIG_BNX2X is not set | ||
919 | # CONFIG_TR is not set | 964 | # CONFIG_TR is not set |
920 | 965 | ||
921 | # | 966 | # |
@@ -941,12 +986,16 @@ CONFIG_PCMCIA_HERMES=m | |||
941 | # CONFIG_PCMCIA_WL3501 is not set | 986 | # CONFIG_PCMCIA_WL3501 is not set |
942 | CONFIG_PRISM54=m | 987 | CONFIG_PRISM54=m |
943 | # CONFIG_USB_ZD1201 is not set | 988 | # CONFIG_USB_ZD1201 is not set |
989 | # CONFIG_USB_NET_RNDIS_WLAN is not set | ||
990 | # CONFIG_RTL8180 is not set | ||
944 | # CONFIG_RTL8187 is not set | 991 | # CONFIG_RTL8187 is not set |
945 | # CONFIG_ADM8211 is not set | 992 | # CONFIG_ADM8211 is not set |
946 | CONFIG_P54_COMMON=m | 993 | CONFIG_P54_COMMON=m |
947 | # CONFIG_P54_USB is not set | 994 | # CONFIG_P54_USB is not set |
948 | # CONFIG_P54_PCI is not set | 995 | # CONFIG_P54_PCI is not set |
949 | # CONFIG_IWLWIFI is not set | 996 | # CONFIG_ATH5K is not set |
997 | # CONFIG_IWL4965 is not set | ||
998 | # CONFIG_IWL3945 is not set | ||
950 | # CONFIG_HOSTAP is not set | 999 | # CONFIG_HOSTAP is not set |
951 | CONFIG_B43=m | 1000 | CONFIG_B43=m |
952 | CONFIG_B43_PCI_AUTOSELECT=y | 1001 | CONFIG_B43_PCI_AUTOSELECT=y |
@@ -954,20 +1003,17 @@ CONFIG_B43_PCICORE_AUTOSELECT=y | |||
954 | # CONFIG_B43_PCMCIA is not set | 1003 | # CONFIG_B43_PCMCIA is not set |
955 | CONFIG_B43_LEDS=y | 1004 | CONFIG_B43_LEDS=y |
956 | # CONFIG_B43_DEBUG is not set | 1005 | # CONFIG_B43_DEBUG is not set |
957 | CONFIG_B43_DMA=y | ||
958 | CONFIG_B43_PIO=y | ||
959 | CONFIG_B43_DMA_AND_PIO_MODE=y | ||
960 | # CONFIG_B43_DMA_MODE is not set | ||
961 | # CONFIG_B43_PIO_MODE is not set | ||
962 | CONFIG_B43LEGACY=m | 1006 | CONFIG_B43LEGACY=m |
963 | CONFIG_B43LEGACY_PCI_AUTOSELECT=y | 1007 | CONFIG_B43LEGACY_PCI_AUTOSELECT=y |
964 | CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y | 1008 | CONFIG_B43LEGACY_PCICORE_AUTOSELECT=y |
1009 | CONFIG_B43LEGACY_LEDS=y | ||
965 | CONFIG_B43LEGACY_DEBUG=y | 1010 | CONFIG_B43LEGACY_DEBUG=y |
966 | CONFIG_B43LEGACY_DMA=y | 1011 | CONFIG_B43LEGACY_DMA=y |
967 | CONFIG_B43LEGACY_PIO=y | 1012 | CONFIG_B43LEGACY_PIO=y |
968 | CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y | 1013 | CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y |
969 | # CONFIG_B43LEGACY_DMA_MODE is not set | 1014 | # CONFIG_B43LEGACY_DMA_MODE is not set |
970 | # CONFIG_B43LEGACY_PIO_MODE is not set | 1015 | # CONFIG_B43LEGACY_PIO_MODE is not set |
1016 | # CONFIG_ZD1211RW is not set | ||
971 | # CONFIG_RT2X00 is not set | 1017 | # CONFIG_RT2X00 is not set |
972 | 1018 | ||
973 | # | 1019 | # |
@@ -1005,7 +1051,6 @@ CONFIG_PPP_BSDCOMP=m | |||
1005 | # CONFIG_SLIP is not set | 1051 | # CONFIG_SLIP is not set |
1006 | CONFIG_SLHC=y | 1052 | CONFIG_SLHC=y |
1007 | # CONFIG_NET_FC is not set | 1053 | # CONFIG_NET_FC is not set |
1008 | # CONFIG_SHAPER is not set | ||
1009 | # CONFIG_NETCONSOLE is not set | 1054 | # CONFIG_NETCONSOLE is not set |
1010 | # CONFIG_NETPOLL is not set | 1055 | # CONFIG_NETPOLL is not set |
1011 | # CONFIG_NET_POLL_CONTROLLER is not set | 1056 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -1068,6 +1113,7 @@ CONFIG_VT_CONSOLE=y | |||
1068 | CONFIG_HW_CONSOLE=y | 1113 | CONFIG_HW_CONSOLE=y |
1069 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 1114 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
1070 | # CONFIG_SERIAL_NONSTANDARD is not set | 1115 | # CONFIG_SERIAL_NONSTANDARD is not set |
1116 | # CONFIG_NOZOMI is not set | ||
1071 | 1117 | ||
1072 | # | 1118 | # |
1073 | # Serial drivers | 1119 | # Serial drivers |
@@ -1105,6 +1151,7 @@ CONFIG_GEN_RTC=y | |||
1105 | # CONFIG_SYNCLINK_CS is not set | 1151 | # CONFIG_SYNCLINK_CS is not set |
1106 | # CONFIG_CARDMAN_4000 is not set | 1152 | # CONFIG_CARDMAN_4000 is not set |
1107 | # CONFIG_CARDMAN_4040 is not set | 1153 | # CONFIG_CARDMAN_4040 is not set |
1154 | # CONFIG_IPWIRELESS is not set | ||
1108 | # CONFIG_RAW_DRIVER is not set | 1155 | # CONFIG_RAW_DRIVER is not set |
1109 | # CONFIG_TCG_TPM is not set | 1156 | # CONFIG_TCG_TPM is not set |
1110 | CONFIG_DEVPORT=y | 1157 | CONFIG_DEVPORT=y |
@@ -1151,14 +1198,12 @@ CONFIG_I2C_POWERMAC=y | |||
1151 | # | 1198 | # |
1152 | # Miscellaneous I2C Chip support | 1199 | # Miscellaneous I2C Chip support |
1153 | # | 1200 | # |
1154 | # CONFIG_SENSORS_DS1337 is not set | ||
1155 | # CONFIG_SENSORS_DS1374 is not set | ||
1156 | # CONFIG_DS1682 is not set | 1201 | # CONFIG_DS1682 is not set |
1157 | # CONFIG_SENSORS_EEPROM is not set | 1202 | # CONFIG_SENSORS_EEPROM is not set |
1158 | # CONFIG_SENSORS_PCF8574 is not set | 1203 | # CONFIG_SENSORS_PCF8574 is not set |
1159 | # CONFIG_SENSORS_PCA9539 is not set | 1204 | # CONFIG_PCF8575 is not set |
1160 | # CONFIG_SENSORS_PCF8591 is not set | 1205 | # CONFIG_SENSORS_PCF8591 is not set |
1161 | # CONFIG_SENSORS_M41T00 is not set | 1206 | # CONFIG_TPS65010 is not set |
1162 | # CONFIG_SENSORS_MAX6875 is not set | 1207 | # CONFIG_SENSORS_MAX6875 is not set |
1163 | # CONFIG_SENSORS_TSL2550 is not set | 1208 | # CONFIG_SENSORS_TSL2550 is not set |
1164 | # CONFIG_I2C_DEBUG_CORE is not set | 1209 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -1179,6 +1224,7 @@ CONFIG_APM_POWER=y | |||
1179 | # CONFIG_BATTERY_DS2760 is not set | 1224 | # CONFIG_BATTERY_DS2760 is not set |
1180 | CONFIG_BATTERY_PMU=y | 1225 | CONFIG_BATTERY_PMU=y |
1181 | # CONFIG_HWMON is not set | 1226 | # CONFIG_HWMON is not set |
1227 | # CONFIG_THERMAL is not set | ||
1182 | # CONFIG_WATCHDOG is not set | 1228 | # CONFIG_WATCHDOG is not set |
1183 | 1229 | ||
1184 | # | 1230 | # |
@@ -1188,6 +1234,7 @@ CONFIG_SSB_POSSIBLE=y | |||
1188 | CONFIG_SSB=m | 1234 | CONFIG_SSB=m |
1189 | CONFIG_SSB_PCIHOST_POSSIBLE=y | 1235 | CONFIG_SSB_PCIHOST_POSSIBLE=y |
1190 | CONFIG_SSB_PCIHOST=y | 1236 | CONFIG_SSB_PCIHOST=y |
1237 | CONFIG_SSB_B43_PCI_BRIDGE=y | ||
1191 | CONFIG_SSB_PCMCIAHOST_POSSIBLE=y | 1238 | CONFIG_SSB_PCMCIAHOST_POSSIBLE=y |
1192 | # CONFIG_SSB_PCMCIAHOST is not set | 1239 | # CONFIG_SSB_PCMCIAHOST is not set |
1193 | # CONFIG_SSB_DEBUG is not set | 1240 | # CONFIG_SSB_DEBUG is not set |
@@ -1372,6 +1419,7 @@ CONFIG_SND_DUMMY=m | |||
1372 | # CONFIG_SND_BT87X is not set | 1419 | # CONFIG_SND_BT87X is not set |
1373 | # CONFIG_SND_CA0106 is not set | 1420 | # CONFIG_SND_CA0106 is not set |
1374 | # CONFIG_SND_CMIPCI is not set | 1421 | # CONFIG_SND_CMIPCI is not set |
1422 | # CONFIG_SND_OXYGEN is not set | ||
1375 | # CONFIG_SND_CS4281 is not set | 1423 | # CONFIG_SND_CS4281 is not set |
1376 | # CONFIG_SND_CS46XX is not set | 1424 | # CONFIG_SND_CS46XX is not set |
1377 | # CONFIG_SND_CS5530 is not set | 1425 | # CONFIG_SND_CS5530 is not set |
@@ -1397,6 +1445,7 @@ CONFIG_SND_DUMMY=m | |||
1397 | # CONFIG_SND_HDA_INTEL is not set | 1445 | # CONFIG_SND_HDA_INTEL is not set |
1398 | # CONFIG_SND_HDSP is not set | 1446 | # CONFIG_SND_HDSP is not set |
1399 | # CONFIG_SND_HDSPM is not set | 1447 | # CONFIG_SND_HDSPM is not set |
1448 | # CONFIG_SND_HIFIER is not set | ||
1400 | # CONFIG_SND_ICE1712 is not set | 1449 | # CONFIG_SND_ICE1712 is not set |
1401 | # CONFIG_SND_ICE1724 is not set | 1450 | # CONFIG_SND_ICE1724 is not set |
1402 | # CONFIG_SND_INTEL8X0 is not set | 1451 | # CONFIG_SND_INTEL8X0 is not set |
@@ -1414,6 +1463,7 @@ CONFIG_SND_DUMMY=m | |||
1414 | # CONFIG_SND_TRIDENT is not set | 1463 | # CONFIG_SND_TRIDENT is not set |
1415 | # CONFIG_SND_VIA82XX is not set | 1464 | # CONFIG_SND_VIA82XX is not set |
1416 | # CONFIG_SND_VIA82XX_MODEM is not set | 1465 | # CONFIG_SND_VIA82XX_MODEM is not set |
1466 | # CONFIG_SND_VIRTUOSO is not set | ||
1417 | # CONFIG_SND_VX222 is not set | 1467 | # CONFIG_SND_VX222 is not set |
1418 | # CONFIG_SND_YMFPCI is not set | 1468 | # CONFIG_SND_YMFPCI is not set |
1419 | 1469 | ||
@@ -1461,6 +1511,10 @@ CONFIG_SND_USB_AUDIO=m | |||
1461 | # | 1511 | # |
1462 | 1512 | ||
1463 | # | 1513 | # |
1514 | # ALSA SoC audio for Freescale SOCs | ||
1515 | # | ||
1516 | |||
1517 | # | ||
1464 | # Open Sound System | 1518 | # Open Sound System |
1465 | # | 1519 | # |
1466 | # CONFIG_SOUND_PRIME is not set | 1520 | # CONFIG_SOUND_PRIME is not set |
@@ -1482,6 +1536,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1482 | CONFIG_USB_ARCH_HAS_EHCI=y | 1536 | CONFIG_USB_ARCH_HAS_EHCI=y |
1483 | CONFIG_USB=y | 1537 | CONFIG_USB=y |
1484 | # CONFIG_USB_DEBUG is not set | 1538 | # CONFIG_USB_DEBUG is not set |
1539 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1485 | 1540 | ||
1486 | # | 1541 | # |
1487 | # Miscellaneous USB options | 1542 | # Miscellaneous USB options |
@@ -1497,9 +1552,9 @@ CONFIG_USB_DYNAMIC_MINORS=y | |||
1497 | # USB Host Controller Drivers | 1552 | # USB Host Controller Drivers |
1498 | # | 1553 | # |
1499 | CONFIG_USB_EHCI_HCD=m | 1554 | CONFIG_USB_EHCI_HCD=m |
1500 | CONFIG_USB_EHCI_SPLIT_ISO=y | ||
1501 | CONFIG_USB_EHCI_ROOT_HUB_TT=y | 1555 | CONFIG_USB_EHCI_ROOT_HUB_TT=y |
1502 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1556 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1557 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
1503 | # CONFIG_USB_ISP116X_HCD is not set | 1558 | # CONFIG_USB_ISP116X_HCD is not set |
1504 | CONFIG_USB_OHCI_HCD=y | 1559 | CONFIG_USB_OHCI_HCD=y |
1505 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1560 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
@@ -1547,11 +1602,8 @@ CONFIG_USB_MON=y | |||
1547 | # | 1602 | # |
1548 | # USB port drivers | 1603 | # USB port drivers |
1549 | # | 1604 | # |
1550 | |||
1551 | # | ||
1552 | # USB Serial Converter support | ||
1553 | # | ||
1554 | CONFIG_USB_SERIAL=m | 1605 | CONFIG_USB_SERIAL=m |
1606 | CONFIG_USB_EZUSB=y | ||
1555 | # CONFIG_USB_SERIAL_GENERIC is not set | 1607 | # CONFIG_USB_SERIAL_GENERIC is not set |
1556 | # CONFIG_USB_SERIAL_AIRCABLE is not set | 1608 | # CONFIG_USB_SERIAL_AIRCABLE is not set |
1557 | # CONFIG_USB_SERIAL_AIRPRIME is not set | 1609 | # CONFIG_USB_SERIAL_AIRPRIME is not set |
@@ -1572,6 +1624,7 @@ CONFIG_USB_SERIAL_IPAQ=m | |||
1572 | # CONFIG_USB_SERIAL_EDGEPORT_TI is not set | 1624 | # CONFIG_USB_SERIAL_EDGEPORT_TI is not set |
1573 | # CONFIG_USB_SERIAL_GARMIN is not set | 1625 | # CONFIG_USB_SERIAL_GARMIN is not set |
1574 | # CONFIG_USB_SERIAL_IPW is not set | 1626 | # CONFIG_USB_SERIAL_IPW is not set |
1627 | # CONFIG_USB_SERIAL_IUU is not set | ||
1575 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m | 1628 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m |
1576 | CONFIG_USB_SERIAL_KEYSPAN=m | 1629 | CONFIG_USB_SERIAL_KEYSPAN=m |
1577 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y | 1630 | CONFIG_USB_SERIAL_KEYSPAN_MPR=y |
@@ -1603,7 +1656,6 @@ CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y | |||
1603 | # CONFIG_USB_SERIAL_OPTION is not set | 1656 | # CONFIG_USB_SERIAL_OPTION is not set |
1604 | # CONFIG_USB_SERIAL_OMNINET is not set | 1657 | # CONFIG_USB_SERIAL_OMNINET is not set |
1605 | # CONFIG_USB_SERIAL_DEBUG is not set | 1658 | # CONFIG_USB_SERIAL_DEBUG is not set |
1606 | CONFIG_USB_EZUSB=y | ||
1607 | 1659 | ||
1608 | # | 1660 | # |
1609 | # USB Miscellaneous drivers | 1661 | # USB Miscellaneous drivers |
@@ -1628,16 +1680,9 @@ CONFIG_USB_APPLEDISPLAY=m | |||
1628 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1680 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1629 | # CONFIG_USB_IOWARRIOR is not set | 1681 | # CONFIG_USB_IOWARRIOR is not set |
1630 | # CONFIG_USB_TEST is not set | 1682 | # CONFIG_USB_TEST is not set |
1631 | |||
1632 | # | ||
1633 | # USB DSL modem support | ||
1634 | # | ||
1635 | |||
1636 | # | ||
1637 | # USB Gadget Support | ||
1638 | # | ||
1639 | # CONFIG_USB_GADGET is not set | 1683 | # CONFIG_USB_GADGET is not set |
1640 | # CONFIG_MMC is not set | 1684 | # CONFIG_MMC is not set |
1685 | # CONFIG_MEMSTICK is not set | ||
1641 | CONFIG_NEW_LEDS=y | 1686 | CONFIG_NEW_LEDS=y |
1642 | CONFIG_LEDS_CLASS=y | 1687 | CONFIG_LEDS_CLASS=y |
1643 | 1688 | ||
@@ -1655,6 +1700,7 @@ CONFIG_LEDS_TRIGGER_IDE_DISK=y | |||
1655 | # CONFIG_INFINIBAND is not set | 1700 | # CONFIG_INFINIBAND is not set |
1656 | # CONFIG_EDAC is not set | 1701 | # CONFIG_EDAC is not set |
1657 | # CONFIG_RTC_CLASS is not set | 1702 | # CONFIG_RTC_CLASS is not set |
1703 | # CONFIG_DMADEVICES is not set | ||
1658 | 1704 | ||
1659 | # | 1705 | # |
1660 | # Userspace I/O | 1706 | # Userspace I/O |
@@ -1680,12 +1726,10 @@ CONFIG_FS_POSIX_ACL=y | |||
1680 | # CONFIG_XFS_FS is not set | 1726 | # CONFIG_XFS_FS is not set |
1681 | # CONFIG_GFS2_FS is not set | 1727 | # CONFIG_GFS2_FS is not set |
1682 | # CONFIG_OCFS2_FS is not set | 1728 | # CONFIG_OCFS2_FS is not set |
1683 | # CONFIG_MINIX_FS is not set | 1729 | CONFIG_DNOTIFY=y |
1684 | # CONFIG_ROMFS_FS is not set | ||
1685 | CONFIG_INOTIFY=y | 1730 | CONFIG_INOTIFY=y |
1686 | CONFIG_INOTIFY_USER=y | 1731 | CONFIG_INOTIFY_USER=y |
1687 | # CONFIG_QUOTA is not set | 1732 | # CONFIG_QUOTA is not set |
1688 | CONFIG_DNOTIFY=y | ||
1689 | # CONFIG_AUTOFS_FS is not set | 1733 | # CONFIG_AUTOFS_FS is not set |
1690 | CONFIG_AUTOFS4_FS=m | 1734 | CONFIG_AUTOFS4_FS=m |
1691 | CONFIG_FUSE_FS=m | 1735 | CONFIG_FUSE_FS=m |
@@ -1733,8 +1777,10 @@ CONFIG_HFSPLUS_FS=m | |||
1733 | # CONFIG_EFS_FS is not set | 1777 | # CONFIG_EFS_FS is not set |
1734 | # CONFIG_CRAMFS is not set | 1778 | # CONFIG_CRAMFS is not set |
1735 | # CONFIG_VXFS_FS is not set | 1779 | # CONFIG_VXFS_FS is not set |
1780 | # CONFIG_MINIX_FS is not set | ||
1736 | # CONFIG_HPFS_FS is not set | 1781 | # CONFIG_HPFS_FS is not set |
1737 | # CONFIG_QNX4FS_FS is not set | 1782 | # CONFIG_QNX4FS_FS is not set |
1783 | # CONFIG_ROMFS_FS is not set | ||
1738 | # CONFIG_SYSV_FS is not set | 1784 | # CONFIG_SYSV_FS is not set |
1739 | # CONFIG_UFS_FS is not set | 1785 | # CONFIG_UFS_FS is not set |
1740 | CONFIG_NETWORK_FILESYSTEMS=y | 1786 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1828,7 +1874,6 @@ CONFIG_NLS_ISO8859_1=m | |||
1828 | # CONFIG_NLS_KOI8_U is not set | 1874 | # CONFIG_NLS_KOI8_U is not set |
1829 | CONFIG_NLS_UTF8=m | 1875 | CONFIG_NLS_UTF8=m |
1830 | # CONFIG_DLM is not set | 1876 | # CONFIG_DLM is not set |
1831 | # CONFIG_UCC_SLOW is not set | ||
1832 | 1877 | ||
1833 | # | 1878 | # |
1834 | # Library routines | 1879 | # Library routines |
@@ -1850,11 +1895,6 @@ CONFIG_PLIST=y | |||
1850 | CONFIG_HAS_IOMEM=y | 1895 | CONFIG_HAS_IOMEM=y |
1851 | CONFIG_HAS_IOPORT=y | 1896 | CONFIG_HAS_IOPORT=y |
1852 | CONFIG_HAS_DMA=y | 1897 | CONFIG_HAS_DMA=y |
1853 | CONFIG_INSTRUMENTATION=y | ||
1854 | CONFIG_PROFILING=y | ||
1855 | CONFIG_OPROFILE=y | ||
1856 | # CONFIG_KPROBES is not set | ||
1857 | # CONFIG_MARKERS is not set | ||
1858 | 1898 | ||
1859 | # | 1899 | # |
1860 | # Kernel hacking | 1900 | # Kernel hacking |
@@ -1873,6 +1913,7 @@ CONFIG_SCHED_DEBUG=y | |||
1873 | # CONFIG_SCHEDSTATS is not set | 1913 | # CONFIG_SCHEDSTATS is not set |
1874 | # CONFIG_TIMER_STATS is not set | 1914 | # CONFIG_TIMER_STATS is not set |
1875 | # CONFIG_SLUB_DEBUG_ON is not set | 1915 | # CONFIG_SLUB_DEBUG_ON is not set |
1916 | # CONFIG_SLUB_STATS is not set | ||
1876 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1917 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1877 | # CONFIG_RT_MUTEX_TESTER is not set | 1918 | # CONFIG_RT_MUTEX_TESTER is not set |
1878 | # CONFIG_DEBUG_SPINLOCK is not set | 1919 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1885,9 +1926,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1885 | # CONFIG_DEBUG_VM is not set | 1926 | # CONFIG_DEBUG_VM is not set |
1886 | # CONFIG_DEBUG_LIST is not set | 1927 | # CONFIG_DEBUG_LIST is not set |
1887 | # CONFIG_DEBUG_SG is not set | 1928 | # CONFIG_DEBUG_SG is not set |
1888 | # CONFIG_FORCED_INLINING is not set | ||
1889 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1929 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1890 | # CONFIG_RCU_TORTURE_TEST is not set | 1930 | # CONFIG_RCU_TORTURE_TEST is not set |
1931 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1891 | # CONFIG_FAULT_INJECTION is not set | 1932 | # CONFIG_FAULT_INJECTION is not set |
1892 | # CONFIG_SAMPLES is not set | 1933 | # CONFIG_SAMPLES is not set |
1893 | # CONFIG_DEBUG_STACKOVERFLOW is not set | 1934 | # CONFIG_DEBUG_STACKOVERFLOW is not set |
@@ -1908,7 +1949,9 @@ CONFIG_BOOTX_TEXT=y | |||
1908 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1949 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1909 | CONFIG_CRYPTO=y | 1950 | CONFIG_CRYPTO=y |
1910 | CONFIG_CRYPTO_ALGAPI=y | 1951 | CONFIG_CRYPTO_ALGAPI=y |
1952 | CONFIG_CRYPTO_AEAD=y | ||
1911 | CONFIG_CRYPTO_BLKCIPHER=y | 1953 | CONFIG_CRYPTO_BLKCIPHER=y |
1954 | # CONFIG_CRYPTO_SEQIV is not set | ||
1912 | CONFIG_CRYPTO_HASH=y | 1955 | CONFIG_CRYPTO_HASH=y |
1913 | CONFIG_CRYPTO_MANAGER=y | 1956 | CONFIG_CRYPTO_MANAGER=y |
1914 | CONFIG_CRYPTO_HMAC=y | 1957 | CONFIG_CRYPTO_HMAC=y |
@@ -1927,6 +1970,9 @@ CONFIG_CRYPTO_CBC=y | |||
1927 | CONFIG_CRYPTO_PCBC=m | 1970 | CONFIG_CRYPTO_PCBC=m |
1928 | # CONFIG_CRYPTO_LRW is not set | 1971 | # CONFIG_CRYPTO_LRW is not set |
1929 | # CONFIG_CRYPTO_XTS is not set | 1972 | # CONFIG_CRYPTO_XTS is not set |
1973 | # CONFIG_CRYPTO_CTR is not set | ||
1974 | # CONFIG_CRYPTO_GCM is not set | ||
1975 | # CONFIG_CRYPTO_CCM is not set | ||
1930 | # CONFIG_CRYPTO_CRYPTD is not set | 1976 | # CONFIG_CRYPTO_CRYPTD is not set |
1931 | CONFIG_CRYPTO_DES=y | 1977 | CONFIG_CRYPTO_DES=y |
1932 | # CONFIG_CRYPTO_FCRYPT is not set | 1978 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1942,11 +1988,14 @@ CONFIG_CRYPTO_ARC4=m | |||
1942 | CONFIG_CRYPTO_KHAZAD=m | 1988 | CONFIG_CRYPTO_KHAZAD=m |
1943 | CONFIG_CRYPTO_ANUBIS=m | 1989 | CONFIG_CRYPTO_ANUBIS=m |
1944 | # CONFIG_CRYPTO_SEED is not set | 1990 | # CONFIG_CRYPTO_SEED is not set |
1991 | # CONFIG_CRYPTO_SALSA20 is not set | ||
1945 | CONFIG_CRYPTO_DEFLATE=m | 1992 | CONFIG_CRYPTO_DEFLATE=m |
1946 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1993 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1947 | CONFIG_CRYPTO_CRC32C=m | 1994 | CONFIG_CRYPTO_CRC32C=m |
1948 | # CONFIG_CRYPTO_CAMELLIA is not set | 1995 | # CONFIG_CRYPTO_CAMELLIA is not set |
1949 | # CONFIG_CRYPTO_TEST is not set | 1996 | # CONFIG_CRYPTO_TEST is not set |
1950 | # CONFIG_CRYPTO_AUTHENC is not set | 1997 | CONFIG_CRYPTO_AUTHENC=y |
1998 | # CONFIG_CRYPTO_LZO is not set | ||
1951 | CONFIG_CRYPTO_HW=y | 1999 | CONFIG_CRYPTO_HW=y |
2000 | # CONFIG_CRYPTO_DEV_HIFN_795X is not set | ||
1952 | # CONFIG_PPC_CLOCK is not set | 2001 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig index 7695a4c66e80..880ab7ad10c1 100644 --- a/arch/powerpc/configs/ppc64_defconfig +++ b/arch/powerpc/configs/ppc64_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc4 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Fri Dec 21 14:47:29 2007 | 4 | # Thu Mar 20 11:06:28 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y | |||
28 | CONFIG_GENERIC_TIME_VSYSCALL=y | 28 | CONFIG_GENERIC_TIME_VSYSCALL=y |
29 | CONFIG_GENERIC_CLOCKEVENTS=y | 29 | CONFIG_GENERIC_CLOCKEVENTS=y |
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
31 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 34 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -49,7 +50,9 @@ CONFIG_GENERIC_TBSYNC=y | |||
49 | CONFIG_AUDIT_ARCH=y | 50 | CONFIG_AUDIT_ARCH=y |
50 | CONFIG_GENERIC_BUG=y | 51 | CONFIG_GENERIC_BUG=y |
51 | # CONFIG_DEFAULT_UIMAGE is not set | 52 | # CONFIG_DEFAULT_UIMAGE is not set |
52 | CONFIG_PPC64_SWSUSP=y | 53 | CONFIG_HIBERNATE_64=y |
54 | CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||
55 | CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||
53 | # CONFIG_PPC_DCR_NATIVE is not set | 56 | # CONFIG_PPC_DCR_NATIVE is not set |
54 | CONFIG_PPC_DCR_MMIO=y | 57 | CONFIG_PPC_DCR_MMIO=y |
55 | CONFIG_PPC_DCR=y | 58 | CONFIG_PPC_DCR=y |
@@ -72,8 +75,6 @@ CONFIG_POSIX_MQUEUE=y | |||
72 | CONFIG_TASKSTATS=y | 75 | CONFIG_TASKSTATS=y |
73 | CONFIG_TASK_DELAY_ACCT=y | 76 | CONFIG_TASK_DELAY_ACCT=y |
74 | # CONFIG_TASK_XACCT is not set | 77 | # CONFIG_TASK_XACCT is not set |
75 | # CONFIG_USER_NS is not set | ||
76 | # CONFIG_PID_NS is not set | ||
77 | # CONFIG_AUDIT is not set | 78 | # CONFIG_AUDIT is not set |
78 | CONFIG_IKCONFIG=y | 79 | CONFIG_IKCONFIG=y |
79 | CONFIG_IKCONFIG_PROC=y | 80 | CONFIG_IKCONFIG_PROC=y |
@@ -82,13 +83,20 @@ CONFIG_CGROUPS=y | |||
82 | # CONFIG_CGROUP_DEBUG is not set | 83 | # CONFIG_CGROUP_DEBUG is not set |
83 | # CONFIG_CGROUP_NS is not set | 84 | # CONFIG_CGROUP_NS is not set |
84 | CONFIG_CPUSETS=y | 85 | CONFIG_CPUSETS=y |
85 | CONFIG_FAIR_GROUP_SCHED=y | 86 | # CONFIG_GROUP_SCHED is not set |
86 | CONFIG_FAIR_USER_SCHED=y | 87 | # CONFIG_USER_SCHED is not set |
87 | # CONFIG_FAIR_CGROUP_SCHED is not set | 88 | # CONFIG_CGROUP_SCHED is not set |
88 | # CONFIG_CGROUP_CPUACCT is not set | 89 | # CONFIG_CGROUP_CPUACCT is not set |
90 | # CONFIG_RESOURCE_COUNTERS is not set | ||
89 | CONFIG_SYSFS_DEPRECATED=y | 91 | CONFIG_SYSFS_DEPRECATED=y |
92 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
90 | CONFIG_PROC_PID_CPUSET=y | 93 | CONFIG_PROC_PID_CPUSET=y |
91 | CONFIG_RELAY=y | 94 | CONFIG_RELAY=y |
95 | CONFIG_NAMESPACES=y | ||
96 | # CONFIG_UTS_NS is not set | ||
97 | # CONFIG_IPC_NS is not set | ||
98 | # CONFIG_USER_NS is not set | ||
99 | # CONFIG_PID_NS is not set | ||
92 | CONFIG_BLK_DEV_INITRD=y | 100 | CONFIG_BLK_DEV_INITRD=y |
93 | CONFIG_INITRAMFS_SOURCE="" | 101 | CONFIG_INITRAMFS_SOURCE="" |
94 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 102 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -102,11 +110,13 @@ CONFIG_HOTPLUG=y | |||
102 | CONFIG_PRINTK=y | 110 | CONFIG_PRINTK=y |
103 | CONFIG_BUG=y | 111 | CONFIG_BUG=y |
104 | CONFIG_ELF_CORE=y | 112 | CONFIG_ELF_CORE=y |
113 | # CONFIG_COMPAT_BRK is not set | ||
105 | CONFIG_BASE_FULL=y | 114 | CONFIG_BASE_FULL=y |
106 | CONFIG_FUTEX=y | 115 | CONFIG_FUTEX=y |
107 | CONFIG_ANON_INODES=y | 116 | CONFIG_ANON_INODES=y |
108 | CONFIG_EPOLL=y | 117 | CONFIG_EPOLL=y |
109 | CONFIG_SIGNALFD=y | 118 | CONFIG_SIGNALFD=y |
119 | CONFIG_TIMERFD=y | ||
110 | CONFIG_EVENTFD=y | 120 | CONFIG_EVENTFD=y |
111 | CONFIG_SHMEM=y | 121 | CONFIG_SHMEM=y |
112 | CONFIG_VM_EVENT_COUNTERS=y | 122 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -114,6 +124,15 @@ CONFIG_SLUB_DEBUG=y | |||
114 | # CONFIG_SLAB is not set | 124 | # CONFIG_SLAB is not set |
115 | CONFIG_SLUB=y | 125 | CONFIG_SLUB=y |
116 | # CONFIG_SLOB is not set | 126 | # CONFIG_SLOB is not set |
127 | CONFIG_PROFILING=y | ||
128 | # CONFIG_MARKERS is not set | ||
129 | CONFIG_OPROFILE=y | ||
130 | CONFIG_HAVE_OPROFILE=y | ||
131 | # CONFIG_KPROBES is not set | ||
132 | CONFIG_HAVE_KPROBES=y | ||
133 | CONFIG_HAVE_KRETPROBES=y | ||
134 | CONFIG_PROC_PAGE_MONITOR=y | ||
135 | CONFIG_SLABINFO=y | ||
117 | CONFIG_RT_MUTEXES=y | 136 | CONFIG_RT_MUTEXES=y |
118 | # CONFIG_TINY_SHMEM is not set | 137 | # CONFIG_TINY_SHMEM is not set |
119 | CONFIG_BASE_SMALL=0 | 138 | CONFIG_BASE_SMALL=0 |
@@ -141,6 +160,7 @@ CONFIG_DEFAULT_AS=y | |||
141 | # CONFIG_DEFAULT_CFQ is not set | 160 | # CONFIG_DEFAULT_CFQ is not set |
142 | # CONFIG_DEFAULT_NOOP is not set | 161 | # CONFIG_DEFAULT_NOOP is not set |
143 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 162 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
163 | CONFIG_CLASSIC_RCU=y | ||
144 | 164 | ||
145 | # | 165 | # |
146 | # Platform support | 166 | # Platform support |
@@ -163,8 +183,8 @@ CONFIG_VIODASD=y | |||
163 | CONFIG_VIOCD=m | 183 | CONFIG_VIOCD=m |
164 | CONFIG_VIOTAPE=m | 184 | CONFIG_VIOTAPE=m |
165 | CONFIG_VIOPATH=y | 185 | CONFIG_VIOPATH=y |
166 | # CONFIG_PPC_MPC52xx is not set | 186 | # CONFIG_PPC_MPC512x is not set |
167 | # CONFIG_PPC_MPC5200 is not set | 187 | # CONFIG_PPC_MPC5121 is not set |
168 | CONFIG_PPC_PMAC=y | 188 | CONFIG_PPC_PMAC=y |
169 | CONFIG_PPC_PMAC64=y | 189 | CONFIG_PPC_PMAC64=y |
170 | CONFIG_PPC_MAPLE=y | 190 | CONFIG_PPC_MAPLE=y |
@@ -176,7 +196,6 @@ CONFIG_PPC_PASEMI=y | |||
176 | CONFIG_PPC_PASEMI_IOMMU=y | 196 | CONFIG_PPC_PASEMI_IOMMU=y |
177 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set | 197 | # CONFIG_PPC_PASEMI_IOMMU_DMA_FORCE is not set |
178 | CONFIG_PPC_PASEMI_MDIO=y | 198 | CONFIG_PPC_PASEMI_MDIO=y |
179 | CONFIG_ELECTRA_IDE=y | ||
180 | CONFIG_PPC_CELLEB=y | 199 | CONFIG_PPC_CELLEB=y |
181 | # CONFIG_PPC_PS3 is not set | 200 | # CONFIG_PPC_PS3 is not set |
182 | CONFIG_PPC_CELL=y | 201 | CONFIG_PPC_CELL=y |
@@ -193,11 +212,13 @@ CONFIG_CBE_RAS=y | |||
193 | CONFIG_CBE_THERM=m | 212 | CONFIG_CBE_THERM=m |
194 | CONFIG_CBE_CPUFREQ=m | 213 | CONFIG_CBE_CPUFREQ=m |
195 | CONFIG_CBE_CPUFREQ_PMI=m | 214 | CONFIG_CBE_CPUFREQ_PMI=m |
215 | CONFIG_OPROFILE_CELL=y | ||
196 | # CONFIG_PQ2ADS is not set | 216 | # CONFIG_PQ2ADS is not set |
197 | CONFIG_PPC_NATIVE=y | 217 | CONFIG_PPC_NATIVE=y |
198 | CONFIG_UDBG_RTAS_CONSOLE=y | 218 | CONFIG_UDBG_RTAS_CONSOLE=y |
199 | CONFIG_PPC_UDBG_BEAT=y | 219 | CONFIG_PPC_UDBG_BEAT=y |
200 | CONFIG_XICS=y | 220 | CONFIG_XICS=y |
221 | # CONFIG_IPIC is not set | ||
201 | CONFIG_MPIC=y | 222 | CONFIG_MPIC=y |
202 | # CONFIG_MPIC_WEIRD is not set | 223 | # CONFIG_MPIC_WEIRD is not set |
203 | CONFIG_PPC_I8259=y | 224 | CONFIG_PPC_I8259=y |
@@ -236,7 +257,6 @@ CONFIG_CPU_FREQ_GOV_USERSPACE=y | |||
236 | # | 257 | # |
237 | CONFIG_CPU_FREQ_PMAC64=y | 258 | CONFIG_CPU_FREQ_PMAC64=y |
238 | CONFIG_PPC_PASEMI_CPUFREQ=y | 259 | CONFIG_PPC_PASEMI_CPUFREQ=y |
239 | # CONFIG_CPM2 is not set | ||
240 | CONFIG_AXON_RAM=m | 260 | CONFIG_AXON_RAM=m |
241 | # CONFIG_FSL_ULI1575 is not set | 261 | # CONFIG_FSL_ULI1575 is not set |
242 | 262 | ||
@@ -252,17 +272,21 @@ CONFIG_HZ_250=y | |||
252 | # CONFIG_HZ_300 is not set | 272 | # CONFIG_HZ_300 is not set |
253 | # CONFIG_HZ_1000 is not set | 273 | # CONFIG_HZ_1000 is not set |
254 | CONFIG_HZ=250 | 274 | CONFIG_HZ=250 |
275 | # CONFIG_SCHED_HRTICK is not set | ||
255 | CONFIG_PREEMPT_NONE=y | 276 | CONFIG_PREEMPT_NONE=y |
256 | # CONFIG_PREEMPT_VOLUNTARY is not set | 277 | # CONFIG_PREEMPT_VOLUNTARY is not set |
257 | # CONFIG_PREEMPT is not set | 278 | # CONFIG_PREEMPT is not set |
258 | # CONFIG_PREEMPT_BKL is not set | ||
259 | CONFIG_BINFMT_ELF=y | 279 | CONFIG_BINFMT_ELF=y |
280 | CONFIG_COMPAT_BINFMT_ELF=y | ||
260 | CONFIG_BINFMT_MISC=m | 281 | CONFIG_BINFMT_MISC=m |
261 | CONFIG_FORCE_MAX_ZONEORDER=13 | 282 | CONFIG_FORCE_MAX_ZONEORDER=13 |
262 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 283 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
263 | CONFIG_IOMMU_VMERGE=y | 284 | CONFIG_IOMMU_VMERGE=y |
285 | CONFIG_IOMMU_HELPER=y | ||
264 | CONFIG_HOTPLUG_CPU=y | 286 | CONFIG_HOTPLUG_CPU=y |
265 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 287 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
288 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
289 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
266 | CONFIG_KEXEC=y | 290 | CONFIG_KEXEC=y |
267 | # CONFIG_CRASH_DUMP is not set | 291 | # CONFIG_CRASH_DUMP is not set |
268 | CONFIG_IRQ_ALL_CPUS=y | 292 | CONFIG_IRQ_ALL_CPUS=y |
@@ -294,11 +318,9 @@ CONFIG_PPC_HAS_HASH_64K=y | |||
294 | # CONFIG_SCHED_SMT is not set | 318 | # CONFIG_SCHED_SMT is not set |
295 | CONFIG_PROC_DEVICETREE=y | 319 | CONFIG_PROC_DEVICETREE=y |
296 | # CONFIG_CMDLINE_BOOL is not set | 320 | # CONFIG_CMDLINE_BOOL is not set |
321 | CONFIG_ARCH_WANTS_FREEZER_CONTROL=y | ||
297 | # CONFIG_PM is not set | 322 | # CONFIG_PM is not set |
298 | CONFIG_SUSPEND_SMP_POSSIBLE=y | ||
299 | CONFIG_HIBERNATION_SMP_POSSIBLE=y | ||
300 | CONFIG_SECCOMP=y | 323 | CONFIG_SECCOMP=y |
301 | # CONFIG_WANT_DEVICE_TREE is not set | ||
302 | CONFIG_ISA_DMA_API=y | 324 | CONFIG_ISA_DMA_API=y |
303 | 325 | ||
304 | # | 326 | # |
@@ -352,6 +374,7 @@ CONFIG_XFRM=y | |||
352 | CONFIG_XFRM_USER=m | 374 | CONFIG_XFRM_USER=m |
353 | # CONFIG_XFRM_SUB_POLICY is not set | 375 | # CONFIG_XFRM_SUB_POLICY is not set |
354 | # CONFIG_XFRM_MIGRATE is not set | 376 | # CONFIG_XFRM_MIGRATE is not set |
377 | # CONFIG_XFRM_STATISTICS is not set | ||
355 | CONFIG_NET_KEY=m | 378 | CONFIG_NET_KEY=m |
356 | # CONFIG_NET_KEY_MIGRATE is not set | 379 | # CONFIG_NET_KEY_MIGRATE is not set |
357 | CONFIG_INET=y | 380 | CONFIG_INET=y |
@@ -375,7 +398,7 @@ CONFIG_INET_TUNNEL=y | |||
375 | CONFIG_INET_XFRM_MODE_TRANSPORT=y | 398 | CONFIG_INET_XFRM_MODE_TRANSPORT=y |
376 | CONFIG_INET_XFRM_MODE_TUNNEL=y | 399 | CONFIG_INET_XFRM_MODE_TUNNEL=y |
377 | CONFIG_INET_XFRM_MODE_BEET=y | 400 | CONFIG_INET_XFRM_MODE_BEET=y |
378 | CONFIG_INET_LRO=m | 401 | CONFIG_INET_LRO=y |
379 | CONFIG_INET_DIAG=y | 402 | CONFIG_INET_DIAG=y |
380 | CONFIG_INET_TCP_DIAG=y | 403 | CONFIG_INET_TCP_DIAG=y |
381 | # CONFIG_TCP_CONG_ADVANCED is not set | 404 | # CONFIG_TCP_CONG_ADVANCED is not set |
@@ -389,14 +412,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
389 | # CONFIG_NETWORK_SECMARK is not set | 412 | # CONFIG_NETWORK_SECMARK is not set |
390 | CONFIG_NETFILTER=y | 413 | CONFIG_NETFILTER=y |
391 | # CONFIG_NETFILTER_DEBUG is not set | 414 | # CONFIG_NETFILTER_DEBUG is not set |
415 | CONFIG_NETFILTER_ADVANCED=y | ||
392 | 416 | ||
393 | # | 417 | # |
394 | # Core Netfilter Configuration | 418 | # Core Netfilter Configuration |
395 | # | 419 | # |
396 | CONFIG_NETFILTER_NETLINK=y | 420 | CONFIG_NETFILTER_NETLINK=m |
397 | CONFIG_NETFILTER_NETLINK_QUEUE=m | 421 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
398 | CONFIG_NETFILTER_NETLINK_LOG=m | 422 | CONFIG_NETFILTER_NETLINK_LOG=m |
399 | CONFIG_NF_CONNTRACK_ENABLED=m | ||
400 | CONFIG_NF_CONNTRACK=m | 423 | CONFIG_NF_CONNTRACK=m |
401 | CONFIG_NF_CT_ACCT=y | 424 | CONFIG_NF_CT_ACCT=y |
402 | CONFIG_NF_CONNTRACK_MARK=y | 425 | CONFIG_NF_CONNTRACK_MARK=y |
@@ -422,8 +445,10 @@ CONFIG_NETFILTER_XT_TARGET_MARK=m | |||
422 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 445 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
423 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 446 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
424 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m | 447 | CONFIG_NETFILTER_XT_TARGET_NOTRACK=m |
448 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
425 | CONFIG_NETFILTER_XT_TARGET_TRACE=m | 449 | CONFIG_NETFILTER_XT_TARGET_TRACE=m |
426 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 450 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
451 | CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m | ||
427 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 452 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
428 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 453 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
429 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m | 454 | CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m |
@@ -433,14 +458,17 @@ CONFIG_NETFILTER_XT_MATCH_DCCP=m | |||
433 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 458 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
434 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 459 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
435 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | 460 | CONFIG_NETFILTER_XT_MATCH_HELPER=m |
461 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
436 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 462 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m |
437 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | 463 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m |
438 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 464 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
439 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 465 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
466 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
440 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 467 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
441 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 468 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
442 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 469 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
443 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | 470 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m |
471 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
444 | CONFIG_NETFILTER_XT_MATCH_REALM=m | 472 | CONFIG_NETFILTER_XT_MATCH_REALM=m |
445 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | 473 | CONFIG_NETFILTER_XT_MATCH_SCTP=m |
446 | CONFIG_NETFILTER_XT_MATCH_STATE=m | 474 | CONFIG_NETFILTER_XT_MATCH_STATE=m |
@@ -458,13 +486,10 @@ CONFIG_NF_CONNTRACK_IPV4=m | |||
458 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | 486 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
459 | CONFIG_IP_NF_QUEUE=m | 487 | CONFIG_IP_NF_QUEUE=m |
460 | CONFIG_IP_NF_IPTABLES=m | 488 | CONFIG_IP_NF_IPTABLES=m |
461 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
462 | CONFIG_IP_NF_MATCH_TOS=m | ||
463 | CONFIG_IP_NF_MATCH_RECENT=m | 489 | CONFIG_IP_NF_MATCH_RECENT=m |
464 | CONFIG_IP_NF_MATCH_ECN=m | 490 | CONFIG_IP_NF_MATCH_ECN=m |
465 | CONFIG_IP_NF_MATCH_AH=m | 491 | CONFIG_IP_NF_MATCH_AH=m |
466 | CONFIG_IP_NF_MATCH_TTL=m | 492 | CONFIG_IP_NF_MATCH_TTL=m |
467 | CONFIG_IP_NF_MATCH_OWNER=m | ||
468 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 493 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
469 | CONFIG_IP_NF_FILTER=m | 494 | CONFIG_IP_NF_FILTER=m |
470 | CONFIG_IP_NF_TARGET_REJECT=m | 495 | CONFIG_IP_NF_TARGET_REJECT=m |
@@ -475,7 +500,6 @@ CONFIG_NF_NAT_NEEDED=y | |||
475 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 500 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
476 | CONFIG_IP_NF_TARGET_REDIRECT=m | 501 | CONFIG_IP_NF_TARGET_REDIRECT=m |
477 | CONFIG_IP_NF_TARGET_NETMAP=m | 502 | CONFIG_IP_NF_TARGET_NETMAP=m |
478 | CONFIG_IP_NF_TARGET_SAME=m | ||
479 | CONFIG_NF_NAT_SNMP_BASIC=m | 503 | CONFIG_NF_NAT_SNMP_BASIC=m |
480 | CONFIG_NF_NAT_PROTO_GRE=m | 504 | CONFIG_NF_NAT_PROTO_GRE=m |
481 | CONFIG_NF_NAT_FTP=m | 505 | CONFIG_NF_NAT_FTP=m |
@@ -486,7 +510,6 @@ CONFIG_NF_NAT_PPTP=m | |||
486 | CONFIG_NF_NAT_H323=m | 510 | CONFIG_NF_NAT_H323=m |
487 | CONFIG_NF_NAT_SIP=m | 511 | CONFIG_NF_NAT_SIP=m |
488 | CONFIG_IP_NF_MANGLE=m | 512 | CONFIG_IP_NF_MANGLE=m |
489 | CONFIG_IP_NF_TARGET_TOS=m | ||
490 | CONFIG_IP_NF_TARGET_ECN=m | 513 | CONFIG_IP_NF_TARGET_ECN=m |
491 | CONFIG_IP_NF_TARGET_TTL=m | 514 | CONFIG_IP_NF_TARGET_TTL=m |
492 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 515 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
@@ -517,6 +540,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
517 | # | 540 | # |
518 | # CONFIG_NET_PKTGEN is not set | 541 | # CONFIG_NET_PKTGEN is not set |
519 | # CONFIG_HAMRADIO is not set | 542 | # CONFIG_HAMRADIO is not set |
543 | # CONFIG_CAN is not set | ||
520 | # CONFIG_IRDA is not set | 544 | # CONFIG_IRDA is not set |
521 | # CONFIG_BT is not set | 545 | # CONFIG_BT is not set |
522 | # CONFIG_AF_RXRPC is not set | 546 | # CONFIG_AF_RXRPC is not set |
@@ -563,7 +587,7 @@ CONFIG_BLK_DEV_NBD=m | |||
563 | CONFIG_BLK_DEV_RAM=y | 587 | CONFIG_BLK_DEV_RAM=y |
564 | CONFIG_BLK_DEV_RAM_COUNT=16 | 588 | CONFIG_BLK_DEV_RAM_COUNT=16 |
565 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 589 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
566 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 590 | # CONFIG_BLK_DEV_XIP is not set |
567 | # CONFIG_CDROM_PKTCDVD is not set | 591 | # CONFIG_CDROM_PKTCDVD is not set |
568 | # CONFIG_ATA_OVER_ETH is not set | 592 | # CONFIG_ATA_OVER_ETH is not set |
569 | CONFIG_MISC_DEVICES=y | 593 | CONFIG_MISC_DEVICES=y |
@@ -571,11 +595,13 @@ CONFIG_MISC_DEVICES=y | |||
571 | # CONFIG_EEPROM_93CX6 is not set | 595 | # CONFIG_EEPROM_93CX6 is not set |
572 | # CONFIG_SGI_IOC4 is not set | 596 | # CONFIG_SGI_IOC4 is not set |
573 | # CONFIG_TIFM_CORE is not set | 597 | # CONFIG_TIFM_CORE is not set |
598 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
599 | CONFIG_HAVE_IDE=y | ||
574 | CONFIG_IDE=y | 600 | CONFIG_IDE=y |
575 | CONFIG_BLK_DEV_IDE=y | 601 | CONFIG_BLK_DEV_IDE=y |
576 | 602 | ||
577 | # | 603 | # |
578 | # Please see Documentation/ide.txt for help/info on IDE drives | 604 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
579 | # | 605 | # |
580 | # CONFIG_BLK_DEV_IDE_SATA is not set | 606 | # CONFIG_BLK_DEV_IDE_SATA is not set |
581 | CONFIG_BLK_DEV_IDEDISK=y | 607 | CONFIG_BLK_DEV_IDEDISK=y |
@@ -583,6 +609,7 @@ CONFIG_BLK_DEV_IDEDISK=y | |||
583 | # CONFIG_BLK_DEV_IDECS is not set | 609 | # CONFIG_BLK_DEV_IDECS is not set |
584 | # CONFIG_BLK_DEV_DELKIN is not set | 610 | # CONFIG_BLK_DEV_DELKIN is not set |
585 | CONFIG_BLK_DEV_IDECD=y | 611 | CONFIG_BLK_DEV_IDECD=y |
612 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
586 | # CONFIG_BLK_DEV_IDETAPE is not set | 613 | # CONFIG_BLK_DEV_IDETAPE is not set |
587 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 614 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
588 | # CONFIG_BLK_DEV_IDESCSI is not set | 615 | # CONFIG_BLK_DEV_IDESCSI is not set |
@@ -594,12 +621,12 @@ CONFIG_IDE_PROC_FS=y | |||
594 | # | 621 | # |
595 | CONFIG_IDE_GENERIC=y | 622 | CONFIG_IDE_GENERIC=y |
596 | # CONFIG_BLK_DEV_PLATFORM is not set | 623 | # CONFIG_BLK_DEV_PLATFORM is not set |
624 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
597 | 625 | ||
598 | # | 626 | # |
599 | # PCI IDE chipsets support | 627 | # PCI IDE chipsets support |
600 | # | 628 | # |
601 | CONFIG_BLK_DEV_IDEPCI=y | 629 | CONFIG_BLK_DEV_IDEPCI=y |
602 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
603 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 630 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
604 | # CONFIG_BLK_DEV_OFFBOARD is not set | 631 | # CONFIG_BLK_DEV_OFFBOARD is not set |
605 | CONFIG_BLK_DEV_GENERIC=y | 632 | CONFIG_BLK_DEV_GENERIC=y |
@@ -634,7 +661,6 @@ CONFIG_BLK_DEV_CELLEB=y | |||
634 | CONFIG_BLK_DEV_IDE_PMAC=y | 661 | CONFIG_BLK_DEV_IDE_PMAC=y |
635 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y | 662 | CONFIG_BLK_DEV_IDE_PMAC_ATA100FIRST=y |
636 | CONFIG_BLK_DEV_IDEDMA_PMAC=y | 663 | CONFIG_BLK_DEV_IDEDMA_PMAC=y |
637 | # CONFIG_IDE_ARM is not set | ||
638 | CONFIG_BLK_DEV_IDEDMA=y | 664 | CONFIG_BLK_DEV_IDEDMA=y |
639 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 665 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
640 | # CONFIG_BLK_DEV_HD is not set | 666 | # CONFIG_BLK_DEV_HD is not set |
@@ -701,6 +727,7 @@ CONFIG_SCSI_LOWLEVEL=y | |||
701 | CONFIG_SCSI_IBMVSCSI=y | 727 | CONFIG_SCSI_IBMVSCSI=y |
702 | # CONFIG_SCSI_INITIO is not set | 728 | # CONFIG_SCSI_INITIO is not set |
703 | # CONFIG_SCSI_INIA100 is not set | 729 | # CONFIG_SCSI_INIA100 is not set |
730 | # CONFIG_SCSI_MVSAS is not set | ||
704 | # CONFIG_SCSI_STEX is not set | 731 | # CONFIG_SCSI_STEX is not set |
705 | CONFIG_SCSI_SYM53C8XX_2=y | 732 | CONFIG_SCSI_SYM53C8XX_2=y |
706 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 733 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
@@ -760,6 +787,7 @@ CONFIG_SATA_SIL24=y | |||
760 | # CONFIG_PATA_MPIIX is not set | 787 | # CONFIG_PATA_MPIIX is not set |
761 | # CONFIG_PATA_OLDPIIX is not set | 788 | # CONFIG_PATA_OLDPIIX is not set |
762 | # CONFIG_PATA_NETCELL is not set | 789 | # CONFIG_PATA_NETCELL is not set |
790 | # CONFIG_PATA_NINJA32 is not set | ||
763 | # CONFIG_PATA_NS87410 is not set | 791 | # CONFIG_PATA_NS87410 is not set |
764 | # CONFIG_PATA_NS87415 is not set | 792 | # CONFIG_PATA_NS87415 is not set |
765 | # CONFIG_PATA_OPTI is not set | 793 | # CONFIG_PATA_OPTI is not set |
@@ -776,6 +804,7 @@ CONFIG_PATA_PCMCIA=y | |||
776 | # CONFIG_PATA_VIA is not set | 804 | # CONFIG_PATA_VIA is not set |
777 | CONFIG_PATA_WINBOND=y | 805 | CONFIG_PATA_WINBOND=y |
778 | CONFIG_PATA_PLATFORM=y | 806 | CONFIG_PATA_PLATFORM=y |
807 | # CONFIG_PATA_OF_PLATFORM is not set | ||
779 | CONFIG_PATA_SCC=y | 808 | CONFIG_PATA_SCC=y |
780 | CONFIG_MD=y | 809 | CONFIG_MD=y |
781 | CONFIG_BLK_DEV_MD=y | 810 | CONFIG_BLK_DEV_MD=y |
@@ -847,7 +876,6 @@ CONFIG_BONDING=m | |||
847 | # CONFIG_EQUALIZER is not set | 876 | # CONFIG_EQUALIZER is not set |
848 | CONFIG_TUN=m | 877 | CONFIG_TUN=m |
849 | # CONFIG_VETH is not set | 878 | # CONFIG_VETH is not set |
850 | # CONFIG_IP1000 is not set | ||
851 | # CONFIG_ARCNET is not set | 879 | # CONFIG_ARCNET is not set |
852 | CONFIG_PHYLIB=y | 880 | CONFIG_PHYLIB=y |
853 | 881 | ||
@@ -863,11 +891,8 @@ CONFIG_MARVELL_PHY=y | |||
863 | # CONFIG_SMSC_PHY is not set | 891 | # CONFIG_SMSC_PHY is not set |
864 | CONFIG_BROADCOM_PHY=m | 892 | CONFIG_BROADCOM_PHY=m |
865 | # CONFIG_ICPLUS_PHY is not set | 893 | # CONFIG_ICPLUS_PHY is not set |
866 | CONFIG_FIXED_PHY=m | 894 | # CONFIG_REALTEK_PHY is not set |
867 | CONFIG_FIXED_MII_10_FDX=y | 895 | # CONFIG_FIXED_PHY is not set |
868 | CONFIG_FIXED_MII_100_FDX=y | ||
869 | # CONFIG_FIXED_MII_1000_FDX is not set | ||
870 | CONFIG_FIXED_MII_AMNT=1 | ||
871 | # CONFIG_MDIO_BITBANG is not set | 896 | # CONFIG_MDIO_BITBANG is not set |
872 | CONFIG_NET_ETHERNET=y | 897 | CONFIG_NET_ETHERNET=y |
873 | CONFIG_MII=y | 898 | CONFIG_MII=y |
@@ -899,6 +924,7 @@ CONFIG_E100=y | |||
899 | # CONFIG_NE2K_PCI is not set | 924 | # CONFIG_NE2K_PCI is not set |
900 | # CONFIG_8139CP is not set | 925 | # CONFIG_8139CP is not set |
901 | # CONFIG_8139TOO is not set | 926 | # CONFIG_8139TOO is not set |
927 | # CONFIG_R6040 is not set | ||
902 | # CONFIG_SIS900 is not set | 928 | # CONFIG_SIS900 is not set |
903 | # CONFIG_EPIC100 is not set | 929 | # CONFIG_EPIC100 is not set |
904 | # CONFIG_SUNDANCE is not set | 930 | # CONFIG_SUNDANCE is not set |
@@ -912,6 +938,9 @@ CONFIG_E1000=y | |||
912 | # CONFIG_E1000_NAPI is not set | 938 | # CONFIG_E1000_NAPI is not set |
913 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 939 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
914 | # CONFIG_E1000E is not set | 940 | # CONFIG_E1000E is not set |
941 | # CONFIG_E1000E_ENABLED is not set | ||
942 | # CONFIG_IP1000 is not set | ||
943 | # CONFIG_IGB is not set | ||
915 | # CONFIG_NS83820 is not set | 944 | # CONFIG_NS83820 is not set |
916 | # CONFIG_HAMACHI is not set | 945 | # CONFIG_HAMACHI is not set |
917 | # CONFIG_YELLOWFIN is not set | 946 | # CONFIG_YELLOWFIN is not set |
@@ -940,6 +969,7 @@ CONFIG_IXGB=m | |||
940 | CONFIG_PASEMI_MAC=y | 969 | CONFIG_PASEMI_MAC=y |
941 | # CONFIG_MLX4_CORE is not set | 970 | # CONFIG_MLX4_CORE is not set |
942 | # CONFIG_TEHUTI is not set | 971 | # CONFIG_TEHUTI is not set |
972 | # CONFIG_BNX2X is not set | ||
943 | CONFIG_TR=y | 973 | CONFIG_TR=y |
944 | CONFIG_IBMOL=y | 974 | CONFIG_IBMOL=y |
945 | # CONFIG_3C359 is not set | 975 | # CONFIG_3C359 is not set |
@@ -977,7 +1007,6 @@ CONFIG_PPPOE=m | |||
977 | # CONFIG_SLIP is not set | 1007 | # CONFIG_SLIP is not set |
978 | CONFIG_SLHC=m | 1008 | CONFIG_SLHC=m |
979 | # CONFIG_NET_FC is not set | 1009 | # CONFIG_NET_FC is not set |
980 | # CONFIG_SHAPER is not set | ||
981 | CONFIG_NETCONSOLE=y | 1010 | CONFIG_NETCONSOLE=y |
982 | # CONFIG_NETCONSOLE_DYNAMIC is not set | 1011 | # CONFIG_NETCONSOLE_DYNAMIC is not set |
983 | CONFIG_NETPOLL=y | 1012 | CONFIG_NETPOLL=y |
@@ -1056,6 +1085,7 @@ CONFIG_VT_CONSOLE=y | |||
1056 | CONFIG_HW_CONSOLE=y | 1085 | CONFIG_HW_CONSOLE=y |
1057 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 1086 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
1058 | # CONFIG_SERIAL_NONSTANDARD is not set | 1087 | # CONFIG_SERIAL_NONSTANDARD is not set |
1088 | # CONFIG_NOZOMI is not set | ||
1059 | 1089 | ||
1060 | # | 1090 | # |
1061 | # Serial drivers | 1091 | # Serial drivers |
@@ -1103,6 +1133,7 @@ CONFIG_GEN_RTC=y | |||
1103 | # CONFIG_SYNCLINK_CS is not set | 1133 | # CONFIG_SYNCLINK_CS is not set |
1104 | # CONFIG_CARDMAN_4000 is not set | 1134 | # CONFIG_CARDMAN_4000 is not set |
1105 | # CONFIG_CARDMAN_4040 is not set | 1135 | # CONFIG_CARDMAN_4040 is not set |
1136 | # CONFIG_IPWIRELESS is not set | ||
1106 | CONFIG_RAW_DRIVER=y | 1137 | CONFIG_RAW_DRIVER=y |
1107 | CONFIG_MAX_RAW_DEVS=256 | 1138 | CONFIG_MAX_RAW_DEVS=256 |
1108 | # CONFIG_HANGCHECK_TIMER is not set | 1139 | # CONFIG_HANGCHECK_TIMER is not set |
@@ -1151,13 +1182,12 @@ CONFIG_I2C_PASEMI=y | |||
1151 | # | 1182 | # |
1152 | # Miscellaneous I2C Chip support | 1183 | # Miscellaneous I2C Chip support |
1153 | # | 1184 | # |
1154 | # CONFIG_SENSORS_DS1337 is not set | ||
1155 | # CONFIG_SENSORS_DS1374 is not set | ||
1156 | # CONFIG_DS1682 is not set | 1185 | # CONFIG_DS1682 is not set |
1157 | # CONFIG_SENSORS_EEPROM is not set | 1186 | # CONFIG_SENSORS_EEPROM is not set |
1158 | # CONFIG_SENSORS_PCF8574 is not set | 1187 | # CONFIG_SENSORS_PCF8574 is not set |
1159 | # CONFIG_SENSORS_PCA9539 is not set | 1188 | # CONFIG_PCF8575 is not set |
1160 | # CONFIG_SENSORS_PCF8591 is not set | 1189 | # CONFIG_SENSORS_PCF8591 is not set |
1190 | # CONFIG_TPS65010 is not set | ||
1161 | # CONFIG_SENSORS_MAX6875 is not set | 1191 | # CONFIG_SENSORS_MAX6875 is not set |
1162 | # CONFIG_SENSORS_TSL2550 is not set | 1192 | # CONFIG_SENSORS_TSL2550 is not set |
1163 | # CONFIG_I2C_DEBUG_CORE is not set | 1193 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -1173,6 +1203,7 @@ CONFIG_I2C_PASEMI=y | |||
1173 | # CONFIG_W1 is not set | 1203 | # CONFIG_W1 is not set |
1174 | # CONFIG_POWER_SUPPLY is not set | 1204 | # CONFIG_POWER_SUPPLY is not set |
1175 | # CONFIG_HWMON is not set | 1205 | # CONFIG_HWMON is not set |
1206 | # CONFIG_THERMAL is not set | ||
1176 | # CONFIG_WATCHDOG is not set | 1207 | # CONFIG_WATCHDOG is not set |
1177 | 1208 | ||
1178 | # | 1209 | # |
@@ -1337,6 +1368,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1337 | # CONFIG_SND_BT87X is not set | 1368 | # CONFIG_SND_BT87X is not set |
1338 | # CONFIG_SND_CA0106 is not set | 1369 | # CONFIG_SND_CA0106 is not set |
1339 | # CONFIG_SND_CMIPCI is not set | 1370 | # CONFIG_SND_CMIPCI is not set |
1371 | # CONFIG_SND_OXYGEN is not set | ||
1340 | # CONFIG_SND_CS4281 is not set | 1372 | # CONFIG_SND_CS4281 is not set |
1341 | # CONFIG_SND_CS46XX is not set | 1373 | # CONFIG_SND_CS46XX is not set |
1342 | # CONFIG_SND_CS5530 is not set | 1374 | # CONFIG_SND_CS5530 is not set |
@@ -1362,6 +1394,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1362 | # CONFIG_SND_HDA_INTEL is not set | 1394 | # CONFIG_SND_HDA_INTEL is not set |
1363 | # CONFIG_SND_HDSP is not set | 1395 | # CONFIG_SND_HDSP is not set |
1364 | # CONFIG_SND_HDSPM is not set | 1396 | # CONFIG_SND_HDSPM is not set |
1397 | # CONFIG_SND_HIFIER is not set | ||
1365 | # CONFIG_SND_ICE1712 is not set | 1398 | # CONFIG_SND_ICE1712 is not set |
1366 | # CONFIG_SND_ICE1724 is not set | 1399 | # CONFIG_SND_ICE1724 is not set |
1367 | # CONFIG_SND_INTEL8X0 is not set | 1400 | # CONFIG_SND_INTEL8X0 is not set |
@@ -1379,6 +1412,7 @@ CONFIG_SND_VERBOSE_PROCFS=y | |||
1379 | # CONFIG_SND_TRIDENT is not set | 1412 | # CONFIG_SND_TRIDENT is not set |
1380 | # CONFIG_SND_VIA82XX is not set | 1413 | # CONFIG_SND_VIA82XX is not set |
1381 | # CONFIG_SND_VIA82XX_MODEM is not set | 1414 | # CONFIG_SND_VIA82XX_MODEM is not set |
1415 | # CONFIG_SND_VIRTUOSO is not set | ||
1382 | # CONFIG_SND_VX222 is not set | 1416 | # CONFIG_SND_VX222 is not set |
1383 | # CONFIG_SND_YMFPCI is not set | 1417 | # CONFIG_SND_YMFPCI is not set |
1384 | 1418 | ||
@@ -1426,6 +1460,10 @@ CONFIG_SND_AOA_SOUNDBUS_I2S=m | |||
1426 | # | 1460 | # |
1427 | 1461 | ||
1428 | # | 1462 | # |
1463 | # ALSA SoC audio for Freescale SOCs | ||
1464 | # | ||
1465 | |||
1466 | # | ||
1429 | # Open Sound System | 1467 | # Open Sound System |
1430 | # | 1468 | # |
1431 | # CONFIG_SOUND_PRIME is not set | 1469 | # CONFIG_SOUND_PRIME is not set |
@@ -1447,6 +1485,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1447 | CONFIG_USB_ARCH_HAS_EHCI=y | 1485 | CONFIG_USB_ARCH_HAS_EHCI=y |
1448 | CONFIG_USB=y | 1486 | CONFIG_USB=y |
1449 | # CONFIG_USB_DEBUG is not set | 1487 | # CONFIG_USB_DEBUG is not set |
1488 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1450 | 1489 | ||
1451 | # | 1490 | # |
1452 | # Miscellaneous USB options | 1491 | # Miscellaneous USB options |
@@ -1460,10 +1499,10 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1460 | # USB Host Controller Drivers | 1499 | # USB Host Controller Drivers |
1461 | # | 1500 | # |
1462 | CONFIG_USB_EHCI_HCD=y | 1501 | CONFIG_USB_EHCI_HCD=y |
1463 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
1464 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1502 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1465 | CONFIG_USB_EHCI_TT_NEWSCHED=y | 1503 | CONFIG_USB_EHCI_TT_NEWSCHED=y |
1466 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | 1504 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y |
1505 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
1467 | # CONFIG_USB_ISP116X_HCD is not set | 1506 | # CONFIG_USB_ISP116X_HCD is not set |
1468 | CONFIG_USB_OHCI_HCD=y | 1507 | CONFIG_USB_OHCI_HCD=y |
1469 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1508 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
@@ -1512,10 +1551,6 @@ CONFIG_USB_STORAGE=m | |||
1512 | # | 1551 | # |
1513 | # USB port drivers | 1552 | # USB port drivers |
1514 | # | 1553 | # |
1515 | |||
1516 | # | ||
1517 | # USB Serial Converter support | ||
1518 | # | ||
1519 | # CONFIG_USB_SERIAL is not set | 1554 | # CONFIG_USB_SERIAL is not set |
1520 | 1555 | ||
1521 | # | 1556 | # |
@@ -1541,16 +1576,9 @@ CONFIG_USB_APPLEDISPLAY=m | |||
1541 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1576 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1542 | # CONFIG_USB_IOWARRIOR is not set | 1577 | # CONFIG_USB_IOWARRIOR is not set |
1543 | # CONFIG_USB_TEST is not set | 1578 | # CONFIG_USB_TEST is not set |
1544 | |||
1545 | # | ||
1546 | # USB DSL modem support | ||
1547 | # | ||
1548 | |||
1549 | # | ||
1550 | # USB Gadget Support | ||
1551 | # | ||
1552 | # CONFIG_USB_GADGET is not set | 1579 | # CONFIG_USB_GADGET is not set |
1553 | # CONFIG_MMC is not set | 1580 | # CONFIG_MMC is not set |
1581 | # CONFIG_MEMSTICK is not set | ||
1554 | # CONFIG_NEW_LEDS is not set | 1582 | # CONFIG_NEW_LEDS is not set |
1555 | CONFIG_INFINIBAND=m | 1583 | CONFIG_INFINIBAND=m |
1556 | # CONFIG_INFINIBAND_USER_MAD is not set | 1584 | # CONFIG_INFINIBAND_USER_MAD is not set |
@@ -1562,6 +1590,7 @@ CONFIG_INFINIBAND_MTHCA_DEBUG=y | |||
1562 | CONFIG_INFINIBAND_EHCA=m | 1590 | CONFIG_INFINIBAND_EHCA=m |
1563 | # CONFIG_INFINIBAND_AMSO1100 is not set | 1591 | # CONFIG_INFINIBAND_AMSO1100 is not set |
1564 | # CONFIG_MLX4_INFINIBAND is not set | 1592 | # CONFIG_MLX4_INFINIBAND is not set |
1593 | # CONFIG_INFINIBAND_NES is not set | ||
1565 | CONFIG_INFINIBAND_IPOIB=m | 1594 | CONFIG_INFINIBAND_IPOIB=m |
1566 | # CONFIG_INFINIBAND_IPOIB_CM is not set | 1595 | # CONFIG_INFINIBAND_IPOIB_CM is not set |
1567 | CONFIG_INFINIBAND_IPOIB_DEBUG=y | 1596 | CONFIG_INFINIBAND_IPOIB_DEBUG=y |
@@ -1576,8 +1605,13 @@ CONFIG_EDAC=y | |||
1576 | # CONFIG_EDAC_DEBUG is not set | 1605 | # CONFIG_EDAC_DEBUG is not set |
1577 | CONFIG_EDAC_MM_EDAC=y | 1606 | CONFIG_EDAC_MM_EDAC=y |
1578 | CONFIG_EDAC_PASEMI=y | 1607 | CONFIG_EDAC_PASEMI=y |
1608 | # CONFIG_EDAC_CELL is not set | ||
1579 | CONFIG_RTC_LIB=y | 1609 | CONFIG_RTC_LIB=y |
1580 | CONFIG_RTC_CLASS=y | 1610 | CONFIG_RTC_CLASS=y |
1611 | |||
1612 | # | ||
1613 | # Conflicting RTC option has been selected, check GEN_RTC and RTC | ||
1614 | # | ||
1581 | CONFIG_RTC_HCTOSYS=y | 1615 | CONFIG_RTC_HCTOSYS=y |
1582 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" | 1616 | CONFIG_RTC_HCTOSYS_DEVICE="rtc0" |
1583 | # CONFIG_RTC_DEBUG is not set | 1617 | # CONFIG_RTC_DEBUG is not set |
@@ -1604,6 +1638,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1604 | # CONFIG_RTC_DRV_PCF8563 is not set | 1638 | # CONFIG_RTC_DRV_PCF8563 is not set |
1605 | # CONFIG_RTC_DRV_PCF8583 is not set | 1639 | # CONFIG_RTC_DRV_PCF8583 is not set |
1606 | # CONFIG_RTC_DRV_M41T80 is not set | 1640 | # CONFIG_RTC_DRV_M41T80 is not set |
1641 | # CONFIG_RTC_DRV_S35390A is not set | ||
1607 | 1642 | ||
1608 | # | 1643 | # |
1609 | # SPI RTC drivers | 1644 | # SPI RTC drivers |
@@ -1613,9 +1648,10 @@ CONFIG_RTC_DRV_DS1307=y | |||
1613 | # Platform RTC drivers | 1648 | # Platform RTC drivers |
1614 | # | 1649 | # |
1615 | # CONFIG_RTC_DRV_CMOS is not set | 1650 | # CONFIG_RTC_DRV_CMOS is not set |
1651 | # CONFIG_RTC_DRV_DS1511 is not set | ||
1616 | # CONFIG_RTC_DRV_DS1553 is not set | 1652 | # CONFIG_RTC_DRV_DS1553 is not set |
1617 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1618 | # CONFIG_RTC_DRV_DS1742 is not set | 1653 | # CONFIG_RTC_DRV_DS1742 is not set |
1654 | # CONFIG_RTC_DRV_STK17TA8 is not set | ||
1619 | # CONFIG_RTC_DRV_M48T86 is not set | 1655 | # CONFIG_RTC_DRV_M48T86 is not set |
1620 | # CONFIG_RTC_DRV_M48T59 is not set | 1656 | # CONFIG_RTC_DRV_M48T59 is not set |
1621 | # CONFIG_RTC_DRV_V3020 is not set | 1657 | # CONFIG_RTC_DRV_V3020 is not set |
@@ -1623,6 +1659,7 @@ CONFIG_RTC_DRV_DS1307=y | |||
1623 | # | 1659 | # |
1624 | # on-CPU RTC drivers | 1660 | # on-CPU RTC drivers |
1625 | # | 1661 | # |
1662 | # CONFIG_DMADEVICES is not set | ||
1626 | 1663 | ||
1627 | # | 1664 | # |
1628 | # Userspace I/O | 1665 | # Userspace I/O |
@@ -1665,12 +1702,10 @@ CONFIG_XFS_POSIX_ACL=y | |||
1665 | # CONFIG_XFS_RT is not set | 1702 | # CONFIG_XFS_RT is not set |
1666 | # CONFIG_GFS2_FS is not set | 1703 | # CONFIG_GFS2_FS is not set |
1667 | # CONFIG_OCFS2_FS is not set | 1704 | # CONFIG_OCFS2_FS is not set |
1668 | # CONFIG_MINIX_FS is not set | 1705 | CONFIG_DNOTIFY=y |
1669 | # CONFIG_ROMFS_FS is not set | ||
1670 | CONFIG_INOTIFY=y | 1706 | CONFIG_INOTIFY=y |
1671 | CONFIG_INOTIFY_USER=y | 1707 | CONFIG_INOTIFY_USER=y |
1672 | # CONFIG_QUOTA is not set | 1708 | # CONFIG_QUOTA is not set |
1673 | CONFIG_DNOTIFY=y | ||
1674 | # CONFIG_AUTOFS_FS is not set | 1709 | # CONFIG_AUTOFS_FS is not set |
1675 | CONFIG_AUTOFS4_FS=m | 1710 | CONFIG_AUTOFS4_FS=m |
1676 | # CONFIG_FUSE_FS is not set | 1711 | # CONFIG_FUSE_FS is not set |
@@ -1719,8 +1754,10 @@ CONFIG_HFSPLUS_FS=m | |||
1719 | # CONFIG_EFS_FS is not set | 1754 | # CONFIG_EFS_FS is not set |
1720 | CONFIG_CRAMFS=y | 1755 | CONFIG_CRAMFS=y |
1721 | # CONFIG_VXFS_FS is not set | 1756 | # CONFIG_VXFS_FS is not set |
1757 | # CONFIG_MINIX_FS is not set | ||
1722 | # CONFIG_HPFS_FS is not set | 1758 | # CONFIG_HPFS_FS is not set |
1723 | # CONFIG_QNX4FS_FS is not set | 1759 | # CONFIG_QNX4FS_FS is not set |
1760 | # CONFIG_ROMFS_FS is not set | ||
1724 | # CONFIG_SYSV_FS is not set | 1761 | # CONFIG_SYSV_FS is not set |
1725 | # CONFIG_UFS_FS is not set | 1762 | # CONFIG_UFS_FS is not set |
1726 | CONFIG_NETWORK_FILESYSTEMS=y | 1763 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1821,7 +1858,6 @@ CONFIG_NLS_KOI8_R=m | |||
1821 | CONFIG_NLS_KOI8_U=m | 1858 | CONFIG_NLS_KOI8_U=m |
1822 | CONFIG_NLS_UTF8=m | 1859 | CONFIG_NLS_UTF8=m |
1823 | # CONFIG_DLM is not set | 1860 | # CONFIG_DLM is not set |
1824 | # CONFIG_UCC_SLOW is not set | ||
1825 | 1861 | ||
1826 | # | 1862 | # |
1827 | # Library routines | 1863 | # Library routines |
@@ -1835,6 +1871,8 @@ CONFIG_CRC32=y | |||
1835 | CONFIG_LIBCRC32C=m | 1871 | CONFIG_LIBCRC32C=m |
1836 | CONFIG_ZLIB_INFLATE=y | 1872 | CONFIG_ZLIB_INFLATE=y |
1837 | CONFIG_ZLIB_DEFLATE=m | 1873 | CONFIG_ZLIB_DEFLATE=m |
1874 | CONFIG_LZO_COMPRESS=m | ||
1875 | CONFIG_LZO_DECOMPRESS=m | ||
1838 | CONFIG_TEXTSEARCH=y | 1876 | CONFIG_TEXTSEARCH=y |
1839 | CONFIG_TEXTSEARCH_KMP=m | 1877 | CONFIG_TEXTSEARCH_KMP=m |
1840 | CONFIG_TEXTSEARCH_BM=m | 1878 | CONFIG_TEXTSEARCH_BM=m |
@@ -1843,11 +1881,6 @@ CONFIG_PLIST=y | |||
1843 | CONFIG_HAS_IOMEM=y | 1881 | CONFIG_HAS_IOMEM=y |
1844 | CONFIG_HAS_IOPORT=y | 1882 | CONFIG_HAS_IOPORT=y |
1845 | CONFIG_HAS_DMA=y | 1883 | CONFIG_HAS_DMA=y |
1846 | CONFIG_INSTRUMENTATION=y | ||
1847 | CONFIG_PROFILING=y | ||
1848 | CONFIG_OPROFILE=y | ||
1849 | # CONFIG_KPROBES is not set | ||
1850 | # CONFIG_MARKERS is not set | ||
1851 | 1884 | ||
1852 | # | 1885 | # |
1853 | # Kernel hacking | 1886 | # Kernel hacking |
@@ -1866,6 +1899,7 @@ CONFIG_SCHED_DEBUG=y | |||
1866 | # CONFIG_SCHEDSTATS is not set | 1899 | # CONFIG_SCHEDSTATS is not set |
1867 | # CONFIG_TIMER_STATS is not set | 1900 | # CONFIG_TIMER_STATS is not set |
1868 | # CONFIG_SLUB_DEBUG_ON is not set | 1901 | # CONFIG_SLUB_DEBUG_ON is not set |
1902 | # CONFIG_SLUB_STATS is not set | ||
1869 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1903 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1870 | # CONFIG_RT_MUTEX_TESTER is not set | 1904 | # CONFIG_RT_MUTEX_TESTER is not set |
1871 | # CONFIG_DEBUG_SPINLOCK is not set | 1905 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1878,9 +1912,9 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1878 | # CONFIG_DEBUG_VM is not set | 1912 | # CONFIG_DEBUG_VM is not set |
1879 | # CONFIG_DEBUG_LIST is not set | 1913 | # CONFIG_DEBUG_LIST is not set |
1880 | # CONFIG_DEBUG_SG is not set | 1914 | # CONFIG_DEBUG_SG is not set |
1881 | CONFIG_FORCED_INLINING=y | ||
1882 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1915 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1883 | # CONFIG_RCU_TORTURE_TEST is not set | 1916 | # CONFIG_RCU_TORTURE_TEST is not set |
1917 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1884 | # CONFIG_FAULT_INJECTION is not set | 1918 | # CONFIG_FAULT_INJECTION is not set |
1885 | # CONFIG_SAMPLES is not set | 1919 | # CONFIG_SAMPLES is not set |
1886 | CONFIG_DEBUG_STACKOVERFLOW=y | 1920 | CONFIG_DEBUG_STACKOVERFLOW=y |
@@ -1908,7 +1942,9 @@ CONFIG_ASYNC_MEMCPY=y | |||
1908 | CONFIG_ASYNC_XOR=y | 1942 | CONFIG_ASYNC_XOR=y |
1909 | CONFIG_CRYPTO=y | 1943 | CONFIG_CRYPTO=y |
1910 | CONFIG_CRYPTO_ALGAPI=y | 1944 | CONFIG_CRYPTO_ALGAPI=y |
1945 | CONFIG_CRYPTO_AEAD=m | ||
1911 | CONFIG_CRYPTO_BLKCIPHER=y | 1946 | CONFIG_CRYPTO_BLKCIPHER=y |
1947 | CONFIG_CRYPTO_SEQIV=m | ||
1912 | CONFIG_CRYPTO_HASH=y | 1948 | CONFIG_CRYPTO_HASH=y |
1913 | CONFIG_CRYPTO_MANAGER=y | 1949 | CONFIG_CRYPTO_MANAGER=y |
1914 | CONFIG_CRYPTO_HMAC=y | 1950 | CONFIG_CRYPTO_HMAC=y |
@@ -1921,12 +1957,15 @@ CONFIG_CRYPTO_SHA256=m | |||
1921 | CONFIG_CRYPTO_SHA512=m | 1957 | CONFIG_CRYPTO_SHA512=m |
1922 | CONFIG_CRYPTO_WP512=m | 1958 | CONFIG_CRYPTO_WP512=m |
1923 | CONFIG_CRYPTO_TGR192=m | 1959 | CONFIG_CRYPTO_TGR192=m |
1924 | # CONFIG_CRYPTO_GF128MUL is not set | 1960 | CONFIG_CRYPTO_GF128MUL=m |
1925 | CONFIG_CRYPTO_ECB=m | 1961 | CONFIG_CRYPTO_ECB=m |
1926 | CONFIG_CRYPTO_CBC=y | 1962 | CONFIG_CRYPTO_CBC=y |
1927 | CONFIG_CRYPTO_PCBC=m | 1963 | CONFIG_CRYPTO_PCBC=m |
1928 | # CONFIG_CRYPTO_LRW is not set | 1964 | # CONFIG_CRYPTO_LRW is not set |
1929 | # CONFIG_CRYPTO_XTS is not set | 1965 | # CONFIG_CRYPTO_XTS is not set |
1966 | CONFIG_CRYPTO_CTR=m | ||
1967 | CONFIG_CRYPTO_GCM=m | ||
1968 | CONFIG_CRYPTO_CCM=m | ||
1930 | # CONFIG_CRYPTO_CRYPTD is not set | 1969 | # CONFIG_CRYPTO_CRYPTD is not set |
1931 | CONFIG_CRYPTO_DES=y | 1970 | CONFIG_CRYPTO_DES=y |
1932 | # CONFIG_CRYPTO_FCRYPT is not set | 1971 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1942,11 +1981,13 @@ CONFIG_CRYPTO_ARC4=m | |||
1942 | CONFIG_CRYPTO_KHAZAD=m | 1981 | CONFIG_CRYPTO_KHAZAD=m |
1943 | CONFIG_CRYPTO_ANUBIS=m | 1982 | CONFIG_CRYPTO_ANUBIS=m |
1944 | # CONFIG_CRYPTO_SEED is not set | 1983 | # CONFIG_CRYPTO_SEED is not set |
1984 | CONFIG_CRYPTO_SALSA20=m | ||
1945 | CONFIG_CRYPTO_DEFLATE=m | 1985 | CONFIG_CRYPTO_DEFLATE=m |
1946 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1986 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1947 | CONFIG_CRYPTO_CRC32C=m | 1987 | CONFIG_CRYPTO_CRC32C=m |
1948 | # CONFIG_CRYPTO_CAMELLIA is not set | 1988 | # CONFIG_CRYPTO_CAMELLIA is not set |
1949 | CONFIG_CRYPTO_TEST=m | 1989 | CONFIG_CRYPTO_TEST=m |
1950 | # CONFIG_CRYPTO_AUTHENC is not set | 1990 | CONFIG_CRYPTO_AUTHENC=m |
1991 | CONFIG_CRYPTO_LZO=m | ||
1951 | # CONFIG_CRYPTO_HW is not set | 1992 | # CONFIG_CRYPTO_HW is not set |
1952 | # CONFIG_PPC_CLOCK is not set | 1993 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/ps3_defconfig b/arch/powerpc/configs/ps3_defconfig index 7994955c29d3..7a64c564f6e6 100644 --- a/arch/powerpc/configs/ps3_defconfig +++ b/arch/powerpc/configs/ps3_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc8 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Wed Jan 16 14:31:21 2008 | 4 | # Thu Mar 20 11:07:04 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y | |||
28 | CONFIG_GENERIC_TIME_VSYSCALL=y | 28 | CONFIG_GENERIC_TIME_VSYSCALL=y |
29 | CONFIG_GENERIC_CLOCKEVENTS=y | 29 | CONFIG_GENERIC_CLOCKEVENTS=y |
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
31 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 34 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -51,7 +52,6 @@ CONFIG_GENERIC_BUG=y | |||
51 | # CONFIG_DEFAULT_UIMAGE is not set | 52 | # CONFIG_DEFAULT_UIMAGE is not set |
52 | # CONFIG_PPC_DCR_NATIVE is not set | 53 | # CONFIG_PPC_DCR_NATIVE is not set |
53 | # CONFIG_PPC_DCR_MMIO is not set | 54 | # CONFIG_PPC_DCR_MMIO is not set |
54 | # CONFIG_PPC_OF_PLATFORM_PCI is not set | ||
55 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" | 55 | CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" |
56 | 56 | ||
57 | # | 57 | # |
@@ -68,17 +68,21 @@ CONFIG_SYSVIPC_SYSCTL=y | |||
68 | CONFIG_POSIX_MQUEUE=y | 68 | CONFIG_POSIX_MQUEUE=y |
69 | # CONFIG_BSD_PROCESS_ACCT is not set | 69 | # CONFIG_BSD_PROCESS_ACCT is not set |
70 | # CONFIG_TASKSTATS is not set | 70 | # CONFIG_TASKSTATS is not set |
71 | # CONFIG_USER_NS is not set | ||
72 | # CONFIG_PID_NS is not set | ||
73 | # CONFIG_AUDIT is not set | 71 | # CONFIG_AUDIT is not set |
74 | # CONFIG_IKCONFIG is not set | 72 | # CONFIG_IKCONFIG is not set |
75 | CONFIG_LOG_BUF_SHIFT=17 | 73 | CONFIG_LOG_BUF_SHIFT=17 |
76 | # CONFIG_CGROUPS is not set | 74 | # CONFIG_CGROUPS is not set |
77 | CONFIG_FAIR_GROUP_SCHED=y | 75 | # CONFIG_GROUP_SCHED is not set |
78 | CONFIG_FAIR_USER_SCHED=y | 76 | # CONFIG_USER_SCHED is not set |
79 | # CONFIG_FAIR_CGROUP_SCHED is not set | 77 | # CONFIG_CGROUP_SCHED is not set |
80 | CONFIG_SYSFS_DEPRECATED=y | 78 | CONFIG_SYSFS_DEPRECATED=y |
79 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
81 | # CONFIG_RELAY is not set | 80 | # CONFIG_RELAY is not set |
81 | CONFIG_NAMESPACES=y | ||
82 | # CONFIG_UTS_NS is not set | ||
83 | # CONFIG_IPC_NS is not set | ||
84 | # CONFIG_USER_NS is not set | ||
85 | # CONFIG_PID_NS is not set | ||
82 | CONFIG_BLK_DEV_INITRD=y | 86 | CONFIG_BLK_DEV_INITRD=y |
83 | CONFIG_INITRAMFS_SOURCE="" | 87 | CONFIG_INITRAMFS_SOURCE="" |
84 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 88 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -92,17 +96,27 @@ CONFIG_HOTPLUG=y | |||
92 | CONFIG_PRINTK=y | 96 | CONFIG_PRINTK=y |
93 | CONFIG_BUG=y | 97 | CONFIG_BUG=y |
94 | CONFIG_ELF_CORE=y | 98 | CONFIG_ELF_CORE=y |
99 | # CONFIG_COMPAT_BRK is not set | ||
95 | CONFIG_BASE_FULL=y | 100 | CONFIG_BASE_FULL=y |
96 | CONFIG_FUTEX=y | 101 | CONFIG_FUTEX=y |
97 | CONFIG_ANON_INODES=y | 102 | CONFIG_ANON_INODES=y |
98 | CONFIG_EPOLL=y | 103 | CONFIG_EPOLL=y |
99 | CONFIG_SIGNALFD=y | 104 | CONFIG_SIGNALFD=y |
105 | CONFIG_TIMERFD=y | ||
100 | CONFIG_EVENTFD=y | 106 | CONFIG_EVENTFD=y |
101 | CONFIG_SHMEM=y | 107 | CONFIG_SHMEM=y |
102 | CONFIG_VM_EVENT_COUNTERS=y | 108 | CONFIG_VM_EVENT_COUNTERS=y |
103 | CONFIG_SLAB=y | 109 | CONFIG_SLAB=y |
104 | # CONFIG_SLUB is not set | 110 | # CONFIG_SLUB is not set |
105 | # CONFIG_SLOB is not set | 111 | # CONFIG_SLOB is not set |
112 | CONFIG_PROFILING=y | ||
113 | # CONFIG_MARKERS is not set | ||
114 | CONFIG_OPROFILE=m | ||
115 | CONFIG_HAVE_OPROFILE=y | ||
116 | # CONFIG_KPROBES is not set | ||
117 | CONFIG_HAVE_KPROBES=y | ||
118 | CONFIG_HAVE_KRETPROBES=y | ||
119 | CONFIG_PROC_PAGE_MONITOR=y | ||
106 | CONFIG_SLABINFO=y | 120 | CONFIG_SLABINFO=y |
107 | CONFIG_RT_MUTEXES=y | 121 | CONFIG_RT_MUTEXES=y |
108 | # CONFIG_TINY_SHMEM is not set | 122 | # CONFIG_TINY_SHMEM is not set |
@@ -131,6 +145,7 @@ CONFIG_DEFAULT_AS=y | |||
131 | # CONFIG_DEFAULT_CFQ is not set | 145 | # CONFIG_DEFAULT_CFQ is not set |
132 | # CONFIG_DEFAULT_NOOP is not set | 146 | # CONFIG_DEFAULT_NOOP is not set |
133 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 147 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
148 | CONFIG_CLASSIC_RCU=y | ||
134 | 149 | ||
135 | # | 150 | # |
136 | # Platform support | 151 | # Platform support |
@@ -141,8 +156,8 @@ CONFIG_PPC_MULTIPLATFORM=y | |||
141 | # CONFIG_PPC_86xx is not set | 156 | # CONFIG_PPC_86xx is not set |
142 | # CONFIG_PPC_PSERIES is not set | 157 | # CONFIG_PPC_PSERIES is not set |
143 | # CONFIG_PPC_ISERIES is not set | 158 | # CONFIG_PPC_ISERIES is not set |
144 | # CONFIG_PPC_MPC52xx is not set | 159 | # CONFIG_PPC_MPC512x is not set |
145 | # CONFIG_PPC_MPC5200 is not set | 160 | # CONFIG_PPC_MPC5121 is not set |
146 | # CONFIG_PPC_PMAC is not set | 161 | # CONFIG_PPC_PMAC is not set |
147 | # CONFIG_PPC_MAPLE is not set | 162 | # CONFIG_PPC_MAPLE is not set |
148 | # CONFIG_PPC_PASEMI is not set | 163 | # CONFIG_PPC_PASEMI is not set |
@@ -173,6 +188,7 @@ CONFIG_PPC_CELL=y | |||
173 | CONFIG_SPU_FS=y | 188 | CONFIG_SPU_FS=y |
174 | CONFIG_SPU_BASE=y | 189 | CONFIG_SPU_BASE=y |
175 | # CONFIG_PQ2ADS is not set | 190 | # CONFIG_PQ2ADS is not set |
191 | # CONFIG_IPIC is not set | ||
176 | # CONFIG_MPIC is not set | 192 | # CONFIG_MPIC is not set |
177 | # CONFIG_MPIC_WEIRD is not set | 193 | # CONFIG_MPIC_WEIRD is not set |
178 | # CONFIG_PPC_I8259 is not set | 194 | # CONFIG_PPC_I8259 is not set |
@@ -184,7 +200,6 @@ CONFIG_SPU_BASE=y | |||
184 | # CONFIG_PPC_INDIRECT_IO is not set | 200 | # CONFIG_PPC_INDIRECT_IO is not set |
185 | # CONFIG_GENERIC_IOMAP is not set | 201 | # CONFIG_GENERIC_IOMAP is not set |
186 | # CONFIG_CPU_FREQ is not set | 202 | # CONFIG_CPU_FREQ is not set |
187 | # CONFIG_CPM2 is not set | ||
188 | # CONFIG_FSL_ULI1575 is not set | 203 | # CONFIG_FSL_ULI1575 is not set |
189 | 204 | ||
190 | # | 205 | # |
@@ -199,15 +214,19 @@ CONFIG_HZ_250=y | |||
199 | # CONFIG_HZ_300 is not set | 214 | # CONFIG_HZ_300 is not set |
200 | # CONFIG_HZ_1000 is not set | 215 | # CONFIG_HZ_1000 is not set |
201 | CONFIG_HZ=250 | 216 | CONFIG_HZ=250 |
217 | # CONFIG_SCHED_HRTICK is not set | ||
202 | CONFIG_PREEMPT_NONE=y | 218 | CONFIG_PREEMPT_NONE=y |
203 | # CONFIG_PREEMPT_VOLUNTARY is not set | 219 | # CONFIG_PREEMPT_VOLUNTARY is not set |
204 | # CONFIG_PREEMPT is not set | 220 | # CONFIG_PREEMPT is not set |
205 | # CONFIG_PREEMPT_BKL is not set | ||
206 | CONFIG_BINFMT_ELF=y | 221 | CONFIG_BINFMT_ELF=y |
222 | CONFIG_COMPAT_BINFMT_ELF=y | ||
207 | CONFIG_BINFMT_MISC=y | 223 | CONFIG_BINFMT_MISC=y |
208 | CONFIG_FORCE_MAX_ZONEORDER=13 | 224 | CONFIG_FORCE_MAX_ZONEORDER=13 |
209 | # CONFIG_IOMMU_VMERGE is not set | 225 | # CONFIG_IOMMU_VMERGE is not set |
226 | CONFIG_IOMMU_HELPER=y | ||
210 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 227 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
228 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
229 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
211 | CONFIG_KEXEC=y | 230 | CONFIG_KEXEC=y |
212 | # CONFIG_CRASH_DUMP is not set | 231 | # CONFIG_CRASH_DUMP is not set |
213 | # CONFIG_IRQ_ALL_CPUS is not set | 232 | # CONFIG_IRQ_ALL_CPUS is not set |
@@ -241,7 +260,6 @@ CONFIG_PROC_DEVICETREE=y | |||
241 | # CONFIG_CMDLINE_BOOL is not set | 260 | # CONFIG_CMDLINE_BOOL is not set |
242 | # CONFIG_PM is not set | 261 | # CONFIG_PM is not set |
243 | # CONFIG_SECCOMP is not set | 262 | # CONFIG_SECCOMP is not set |
244 | # CONFIG_WANT_DEVICE_TREE is not set | ||
245 | CONFIG_ISA_DMA_API=y | 263 | CONFIG_ISA_DMA_API=y |
246 | 264 | ||
247 | # | 265 | # |
@@ -271,6 +289,7 @@ CONFIG_XFRM=y | |||
271 | # CONFIG_XFRM_USER is not set | 289 | # CONFIG_XFRM_USER is not set |
272 | # CONFIG_XFRM_SUB_POLICY is not set | 290 | # CONFIG_XFRM_SUB_POLICY is not set |
273 | # CONFIG_XFRM_MIGRATE is not set | 291 | # CONFIG_XFRM_MIGRATE is not set |
292 | # CONFIG_XFRM_STATISTICS is not set | ||
274 | # CONFIG_NET_KEY is not set | 293 | # CONFIG_NET_KEY is not set |
275 | CONFIG_INET=y | 294 | CONFIG_INET=y |
276 | # CONFIG_IP_MULTICAST is not set | 295 | # CONFIG_IP_MULTICAST is not set |
@@ -338,6 +357,7 @@ CONFIG_IPV6_SIT=y | |||
338 | # | 357 | # |
339 | # CONFIG_NET_PKTGEN is not set | 358 | # CONFIG_NET_PKTGEN is not set |
340 | # CONFIG_HAMRADIO is not set | 359 | # CONFIG_HAMRADIO is not set |
360 | # CONFIG_CAN is not set | ||
341 | # CONFIG_IRDA is not set | 361 | # CONFIG_IRDA is not set |
342 | CONFIG_BT=m | 362 | CONFIG_BT=m |
343 | CONFIG_BT_L2CAP=m | 363 | CONFIG_BT_L2CAP=m |
@@ -405,11 +425,13 @@ CONFIG_BLK_DEV_LOOP=y | |||
405 | CONFIG_BLK_DEV_RAM=y | 425 | CONFIG_BLK_DEV_RAM=y |
406 | CONFIG_BLK_DEV_RAM_COUNT=16 | 426 | CONFIG_BLK_DEV_RAM_COUNT=16 |
407 | CONFIG_BLK_DEV_RAM_SIZE=65535 | 427 | CONFIG_BLK_DEV_RAM_SIZE=65535 |
408 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 428 | # CONFIG_BLK_DEV_XIP is not set |
409 | # CONFIG_CDROM_PKTCDVD is not set | 429 | # CONFIG_CDROM_PKTCDVD is not set |
410 | # CONFIG_ATA_OVER_ETH is not set | 430 | # CONFIG_ATA_OVER_ETH is not set |
411 | CONFIG_MISC_DEVICES=y | 431 | CONFIG_MISC_DEVICES=y |
412 | # CONFIG_EEPROM_93CX6 is not set | 432 | # CONFIG_EEPROM_93CX6 is not set |
433 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
434 | CONFIG_HAVE_IDE=y | ||
413 | # CONFIG_IDE is not set | 435 | # CONFIG_IDE is not set |
414 | 436 | ||
415 | # | 437 | # |
@@ -472,7 +494,9 @@ CONFIG_MII=m | |||
472 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set | 494 | # CONFIG_IBM_NEW_EMAC_EMAC4 is not set |
473 | # CONFIG_B44 is not set | 495 | # CONFIG_B44 is not set |
474 | CONFIG_NETDEV_1000=y | 496 | CONFIG_NETDEV_1000=y |
497 | # CONFIG_E1000E_ENABLED is not set | ||
475 | CONFIG_GELIC_NET=y | 498 | CONFIG_GELIC_NET=y |
499 | CONFIG_GELIC_WIRELESS=y | ||
476 | # CONFIG_NETDEV_10000 is not set | 500 | # CONFIG_NETDEV_10000 is not set |
477 | 501 | ||
478 | # | 502 | # |
@@ -482,9 +506,8 @@ CONFIG_GELIC_NET=y | |||
482 | CONFIG_WLAN_80211=y | 506 | CONFIG_WLAN_80211=y |
483 | # CONFIG_LIBERTAS is not set | 507 | # CONFIG_LIBERTAS is not set |
484 | # CONFIG_USB_ZD1201 is not set | 508 | # CONFIG_USB_ZD1201 is not set |
509 | # CONFIG_USB_NET_RNDIS_WLAN is not set | ||
485 | # CONFIG_HOSTAP is not set | 510 | # CONFIG_HOSTAP is not set |
486 | CONFIG_ZD1211RW=m | ||
487 | # CONFIG_ZD1211RW_DEBUG is not set | ||
488 | 511 | ||
489 | # | 512 | # |
490 | # USB Network Adapters | 513 | # USB Network Adapters |
@@ -507,7 +530,6 @@ CONFIG_USB_NET_MCS7830=m | |||
507 | # CONFIG_WAN is not set | 530 | # CONFIG_WAN is not set |
508 | # CONFIG_PPP is not set | 531 | # CONFIG_PPP is not set |
509 | # CONFIG_SLIP is not set | 532 | # CONFIG_SLIP is not set |
510 | # CONFIG_SHAPER is not set | ||
511 | # CONFIG_NETCONSOLE is not set | 533 | # CONFIG_NETCONSOLE is not set |
512 | # CONFIG_NETPOLL is not set | 534 | # CONFIG_NETPOLL is not set |
513 | # CONFIG_NET_POLL_CONTROLLER is not set | 535 | # CONFIG_NET_POLL_CONTROLLER is not set |
@@ -606,6 +628,7 @@ CONFIG_GEN_RTC=y | |||
606 | # CONFIG_W1 is not set | 628 | # CONFIG_W1 is not set |
607 | # CONFIG_POWER_SUPPLY is not set | 629 | # CONFIG_POWER_SUPPLY is not set |
608 | # CONFIG_HWMON is not set | 630 | # CONFIG_HWMON is not set |
631 | # CONFIG_THERMAL is not set | ||
609 | # CONFIG_WATCHDOG is not set | 632 | # CONFIG_WATCHDOG is not set |
610 | 633 | ||
611 | # | 634 | # |
@@ -742,6 +765,10 @@ CONFIG_SND_PS3_DEFAULT_START_DELAY=2000 | |||
742 | # | 765 | # |
743 | 766 | ||
744 | # | 767 | # |
768 | # ALSA SoC audio for Freescale SOCs | ||
769 | # | ||
770 | |||
771 | # | ||
745 | # Open Sound System | 772 | # Open Sound System |
746 | # | 773 | # |
747 | # CONFIG_SOUND_PRIME is not set | 774 | # CONFIG_SOUND_PRIME is not set |
@@ -769,6 +796,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
769 | CONFIG_USB_ARCH_HAS_EHCI=y | 796 | CONFIG_USB_ARCH_HAS_EHCI=y |
770 | CONFIG_USB=m | 797 | CONFIG_USB=m |
771 | # CONFIG_USB_DEBUG is not set | 798 | # CONFIG_USB_DEBUG is not set |
799 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
772 | 800 | ||
773 | # | 801 | # |
774 | # Miscellaneous USB options | 802 | # Miscellaneous USB options |
@@ -782,10 +810,10 @@ CONFIG_USB_DEVICEFS=y | |||
782 | # USB Host Controller Drivers | 810 | # USB Host Controller Drivers |
783 | # | 811 | # |
784 | CONFIG_USB_EHCI_HCD=m | 812 | CONFIG_USB_EHCI_HCD=m |
785 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
786 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 813 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
787 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 814 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
788 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y | 815 | CONFIG_USB_EHCI_BIG_ENDIAN_MMIO=y |
816 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
789 | # CONFIG_USB_ISP116X_HCD is not set | 817 | # CONFIG_USB_ISP116X_HCD is not set |
790 | CONFIG_USB_OHCI_HCD=m | 818 | CONFIG_USB_OHCI_HCD=m |
791 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 819 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
@@ -833,10 +861,6 @@ CONFIG_USB_MON=y | |||
833 | # | 861 | # |
834 | # USB port drivers | 862 | # USB port drivers |
835 | # | 863 | # |
836 | |||
837 | # | ||
838 | # USB Serial Converter support | ||
839 | # | ||
840 | # CONFIG_USB_SERIAL is not set | 864 | # CONFIG_USB_SERIAL is not set |
841 | 865 | ||
842 | # | 866 | # |
@@ -862,19 +886,13 @@ CONFIG_USB_MON=y | |||
862 | # CONFIG_USB_TRANCEVIBRATOR is not set | 886 | # CONFIG_USB_TRANCEVIBRATOR is not set |
863 | # CONFIG_USB_IOWARRIOR is not set | 887 | # CONFIG_USB_IOWARRIOR is not set |
864 | # CONFIG_USB_TEST is not set | 888 | # CONFIG_USB_TEST is not set |
865 | |||
866 | # | ||
867 | # USB DSL modem support | ||
868 | # | ||
869 | |||
870 | # | ||
871 | # USB Gadget Support | ||
872 | # | ||
873 | # CONFIG_USB_GADGET is not set | 889 | # CONFIG_USB_GADGET is not set |
874 | # CONFIG_MMC is not set | 890 | # CONFIG_MMC is not set |
891 | # CONFIG_MEMSTICK is not set | ||
875 | # CONFIG_NEW_LEDS is not set | 892 | # CONFIG_NEW_LEDS is not set |
876 | # CONFIG_EDAC is not set | 893 | # CONFIG_EDAC is not set |
877 | # CONFIG_RTC_CLASS is not set | 894 | # CONFIG_RTC_CLASS is not set |
895 | # CONFIG_DMADEVICES is not set | ||
878 | 896 | ||
879 | # | 897 | # |
880 | # Userspace I/O | 898 | # Userspace I/O |
@@ -900,8 +918,7 @@ CONFIG_FS_MBCACHE=y | |||
900 | # CONFIG_XFS_FS is not set | 918 | # CONFIG_XFS_FS is not set |
901 | # CONFIG_GFS2_FS is not set | 919 | # CONFIG_GFS2_FS is not set |
902 | # CONFIG_OCFS2_FS is not set | 920 | # CONFIG_OCFS2_FS is not set |
903 | # CONFIG_MINIX_FS is not set | 921 | CONFIG_DNOTIFY=y |
904 | # CONFIG_ROMFS_FS is not set | ||
905 | CONFIG_INOTIFY=y | 922 | CONFIG_INOTIFY=y |
906 | CONFIG_INOTIFY_USER=y | 923 | CONFIG_INOTIFY_USER=y |
907 | CONFIG_QUOTA=y | 924 | CONFIG_QUOTA=y |
@@ -910,7 +927,6 @@ CONFIG_PRINT_QUOTA_WARNING=y | |||
910 | # CONFIG_QFMT_V1 is not set | 927 | # CONFIG_QFMT_V1 is not set |
911 | CONFIG_QFMT_V2=y | 928 | CONFIG_QFMT_V2=y |
912 | CONFIG_QUOTACTL=y | 929 | CONFIG_QUOTACTL=y |
913 | CONFIG_DNOTIFY=y | ||
914 | CONFIG_AUTOFS_FS=m | 930 | CONFIG_AUTOFS_FS=m |
915 | CONFIG_AUTOFS4_FS=m | 931 | CONFIG_AUTOFS4_FS=m |
916 | # CONFIG_FUSE_FS is not set | 932 | # CONFIG_FUSE_FS is not set |
@@ -959,8 +975,10 @@ CONFIG_TMPFS=y | |||
959 | # CONFIG_EFS_FS is not set | 975 | # CONFIG_EFS_FS is not set |
960 | # CONFIG_CRAMFS is not set | 976 | # CONFIG_CRAMFS is not set |
961 | # CONFIG_VXFS_FS is not set | 977 | # CONFIG_VXFS_FS is not set |
978 | # CONFIG_MINIX_FS is not set | ||
962 | # CONFIG_HPFS_FS is not set | 979 | # CONFIG_HPFS_FS is not set |
963 | # CONFIG_QNX4FS_FS is not set | 980 | # CONFIG_QNX4FS_FS is not set |
981 | # CONFIG_ROMFS_FS is not set | ||
964 | # CONFIG_SYSV_FS is not set | 982 | # CONFIG_SYSV_FS is not set |
965 | # CONFIG_UFS_FS is not set | 983 | # CONFIG_UFS_FS is not set |
966 | CONFIG_NETWORK_FILESYSTEMS=y | 984 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1036,7 +1054,6 @@ CONFIG_NLS_ISO8859_1=y | |||
1036 | # CONFIG_NLS_KOI8_U is not set | 1054 | # CONFIG_NLS_KOI8_U is not set |
1037 | # CONFIG_NLS_UTF8 is not set | 1055 | # CONFIG_NLS_UTF8 is not set |
1038 | # CONFIG_DLM is not set | 1056 | # CONFIG_DLM is not set |
1039 | # CONFIG_UCC_SLOW is not set | ||
1040 | 1057 | ||
1041 | # | 1058 | # |
1042 | # Library routines | 1059 | # Library routines |
@@ -1048,15 +1065,12 @@ CONFIG_BITREVERSE=y | |||
1048 | CONFIG_CRC32=y | 1065 | CONFIG_CRC32=y |
1049 | # CONFIG_CRC7 is not set | 1066 | # CONFIG_CRC7 is not set |
1050 | # CONFIG_LIBCRC32C is not set | 1067 | # CONFIG_LIBCRC32C is not set |
1068 | CONFIG_LZO_COMPRESS=m | ||
1069 | CONFIG_LZO_DECOMPRESS=m | ||
1051 | CONFIG_PLIST=y | 1070 | CONFIG_PLIST=y |
1052 | CONFIG_HAS_IOMEM=y | 1071 | CONFIG_HAS_IOMEM=y |
1053 | CONFIG_HAS_IOPORT=y | 1072 | CONFIG_HAS_IOPORT=y |
1054 | CONFIG_HAS_DMA=y | 1073 | CONFIG_HAS_DMA=y |
1055 | CONFIG_INSTRUMENTATION=y | ||
1056 | CONFIG_PROFILING=y | ||
1057 | CONFIG_OPROFILE=m | ||
1058 | # CONFIG_KPROBES is not set | ||
1059 | # CONFIG_MARKERS is not set | ||
1060 | 1074 | ||
1061 | # | 1075 | # |
1062 | # Kernel hacking | 1076 | # Kernel hacking |
@@ -1087,9 +1101,9 @@ CONFIG_DEBUG_INFO=y | |||
1087 | # CONFIG_DEBUG_VM is not set | 1101 | # CONFIG_DEBUG_VM is not set |
1088 | CONFIG_DEBUG_LIST=y | 1102 | CONFIG_DEBUG_LIST=y |
1089 | # CONFIG_DEBUG_SG is not set | 1103 | # CONFIG_DEBUG_SG is not set |
1090 | CONFIG_FORCED_INLINING=y | ||
1091 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1104 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1092 | # CONFIG_RCU_TORTURE_TEST is not set | 1105 | # CONFIG_RCU_TORTURE_TEST is not set |
1106 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1093 | # CONFIG_FAULT_INJECTION is not set | 1107 | # CONFIG_FAULT_INJECTION is not set |
1094 | # CONFIG_SAMPLES is not set | 1108 | # CONFIG_SAMPLES is not set |
1095 | CONFIG_DEBUG_STACKOVERFLOW=y | 1109 | CONFIG_DEBUG_STACKOVERFLOW=y |
@@ -1108,7 +1122,9 @@ CONFIG_IRQSTACKS=y | |||
1108 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1122 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1109 | CONFIG_CRYPTO=y | 1123 | CONFIG_CRYPTO=y |
1110 | CONFIG_CRYPTO_ALGAPI=y | 1124 | CONFIG_CRYPTO_ALGAPI=y |
1125 | CONFIG_CRYPTO_AEAD=m | ||
1111 | CONFIG_CRYPTO_BLKCIPHER=y | 1126 | CONFIG_CRYPTO_BLKCIPHER=y |
1127 | CONFIG_CRYPTO_SEQIV=m | ||
1112 | CONFIG_CRYPTO_MANAGER=y | 1128 | CONFIG_CRYPTO_MANAGER=y |
1113 | # CONFIG_CRYPTO_HMAC is not set | 1129 | # CONFIG_CRYPTO_HMAC is not set |
1114 | # CONFIG_CRYPTO_XCBC is not set | 1130 | # CONFIG_CRYPTO_XCBC is not set |
@@ -1120,12 +1136,15 @@ CONFIG_CRYPTO_MD5=y | |||
1120 | # CONFIG_CRYPTO_SHA512 is not set | 1136 | # CONFIG_CRYPTO_SHA512 is not set |
1121 | # CONFIG_CRYPTO_WP512 is not set | 1137 | # CONFIG_CRYPTO_WP512 is not set |
1122 | # CONFIG_CRYPTO_TGR192 is not set | 1138 | # CONFIG_CRYPTO_TGR192 is not set |
1123 | # CONFIG_CRYPTO_GF128MUL is not set | 1139 | CONFIG_CRYPTO_GF128MUL=m |
1124 | CONFIG_CRYPTO_ECB=m | 1140 | CONFIG_CRYPTO_ECB=m |
1125 | CONFIG_CRYPTO_CBC=y | 1141 | CONFIG_CRYPTO_CBC=y |
1126 | CONFIG_CRYPTO_PCBC=m | 1142 | CONFIG_CRYPTO_PCBC=m |
1127 | # CONFIG_CRYPTO_LRW is not set | 1143 | # CONFIG_CRYPTO_LRW is not set |
1128 | # CONFIG_CRYPTO_XTS is not set | 1144 | # CONFIG_CRYPTO_XTS is not set |
1145 | CONFIG_CRYPTO_CTR=m | ||
1146 | CONFIG_CRYPTO_GCM=m | ||
1147 | CONFIG_CRYPTO_CCM=m | ||
1129 | # CONFIG_CRYPTO_CRYPTD is not set | 1148 | # CONFIG_CRYPTO_CRYPTD is not set |
1130 | CONFIG_CRYPTO_DES=y | 1149 | CONFIG_CRYPTO_DES=y |
1131 | # CONFIG_CRYPTO_FCRYPT is not set | 1150 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1140,11 +1159,13 @@ CONFIG_CRYPTO_ARC4=m | |||
1140 | # CONFIG_CRYPTO_KHAZAD is not set | 1159 | # CONFIG_CRYPTO_KHAZAD is not set |
1141 | # CONFIG_CRYPTO_ANUBIS is not set | 1160 | # CONFIG_CRYPTO_ANUBIS is not set |
1142 | # CONFIG_CRYPTO_SEED is not set | 1161 | # CONFIG_CRYPTO_SEED is not set |
1162 | CONFIG_CRYPTO_SALSA20=m | ||
1143 | # CONFIG_CRYPTO_DEFLATE is not set | 1163 | # CONFIG_CRYPTO_DEFLATE is not set |
1144 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1164 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1145 | # CONFIG_CRYPTO_CRC32C is not set | 1165 | # CONFIG_CRYPTO_CRC32C is not set |
1146 | # CONFIG_CRYPTO_CAMELLIA is not set | 1166 | # CONFIG_CRYPTO_CAMELLIA is not set |
1147 | # CONFIG_CRYPTO_TEST is not set | 1167 | # CONFIG_CRYPTO_TEST is not set |
1148 | # CONFIG_CRYPTO_AUTHENC is not set | 1168 | # CONFIG_CRYPTO_AUTHENC is not set |
1169 | CONFIG_CRYPTO_LZO=m | ||
1149 | CONFIG_CRYPTO_HW=y | 1170 | CONFIG_CRYPTO_HW=y |
1150 | # CONFIG_PPC_CLOCK is not set | 1171 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig index 92bbf51ad4f0..755aca72b522 100644 --- a/arch/powerpc/configs/pseries_defconfig +++ b/arch/powerpc/configs/pseries_defconfig | |||
@@ -1,7 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
3 | # Linux kernel version: 2.6.24-rc4 | 3 | # Linux kernel version: 2.6.25-rc6 |
4 | # Thu Dec 6 16:49:15 2007 | 4 | # Thu Mar 20 11:08:01 2008 |
5 | # | 5 | # |
6 | CONFIG_PPC64=y | 6 | CONFIG_PPC64=y |
7 | 7 | ||
@@ -28,6 +28,7 @@ CONFIG_GENERIC_TIME=y | |||
28 | CONFIG_GENERIC_TIME_VSYSCALL=y | 28 | CONFIG_GENERIC_TIME_VSYSCALL=y |
29 | CONFIG_GENERIC_CLOCKEVENTS=y | 29 | CONFIG_GENERIC_CLOCKEVENTS=y |
30 | CONFIG_GENERIC_HARDIRQS=y | 30 | CONFIG_GENERIC_HARDIRQS=y |
31 | CONFIG_HAVE_SETUP_PER_CPU_AREA=y | ||
31 | CONFIG_IRQ_PER_CPU=y | 32 | CONFIG_IRQ_PER_CPU=y |
32 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 33 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
33 | CONFIG_ARCH_HAS_ILOG2_U32=y | 34 | CONFIG_ARCH_HAS_ILOG2_U32=y |
@@ -71,8 +72,6 @@ CONFIG_TASKSTATS=y | |||
71 | CONFIG_TASK_DELAY_ACCT=y | 72 | CONFIG_TASK_DELAY_ACCT=y |
72 | CONFIG_TASK_XACCT=y | 73 | CONFIG_TASK_XACCT=y |
73 | CONFIG_TASK_IO_ACCOUNTING=y | 74 | CONFIG_TASK_IO_ACCOUNTING=y |
74 | # CONFIG_USER_NS is not set | ||
75 | # CONFIG_PID_NS is not set | ||
76 | CONFIG_AUDIT=y | 75 | CONFIG_AUDIT=y |
77 | CONFIG_AUDITSYSCALL=y | 76 | CONFIG_AUDITSYSCALL=y |
78 | CONFIG_AUDIT_TREE=y | 77 | CONFIG_AUDIT_TREE=y |
@@ -83,13 +82,20 @@ CONFIG_CGROUPS=y | |||
83 | # CONFIG_CGROUP_DEBUG is not set | 82 | # CONFIG_CGROUP_DEBUG is not set |
84 | CONFIG_CGROUP_NS=y | 83 | CONFIG_CGROUP_NS=y |
85 | CONFIG_CPUSETS=y | 84 | CONFIG_CPUSETS=y |
86 | CONFIG_FAIR_GROUP_SCHED=y | 85 | # CONFIG_GROUP_SCHED is not set |
87 | # CONFIG_FAIR_USER_SCHED is not set | 86 | # CONFIG_USER_SCHED is not set |
88 | CONFIG_FAIR_CGROUP_SCHED=y | 87 | # CONFIG_CGROUP_SCHED is not set |
89 | CONFIG_CGROUP_CPUACCT=y | 88 | CONFIG_CGROUP_CPUACCT=y |
89 | # CONFIG_RESOURCE_COUNTERS is not set | ||
90 | CONFIG_SYSFS_DEPRECATED=y | 90 | CONFIG_SYSFS_DEPRECATED=y |
91 | CONFIG_SYSFS_DEPRECATED_V2=y | ||
91 | CONFIG_PROC_PID_CPUSET=y | 92 | CONFIG_PROC_PID_CPUSET=y |
92 | # CONFIG_RELAY is not set | 93 | # CONFIG_RELAY is not set |
94 | CONFIG_NAMESPACES=y | ||
95 | # CONFIG_UTS_NS is not set | ||
96 | # CONFIG_IPC_NS is not set | ||
97 | # CONFIG_USER_NS is not set | ||
98 | # CONFIG_PID_NS is not set | ||
93 | CONFIG_BLK_DEV_INITRD=y | 99 | CONFIG_BLK_DEV_INITRD=y |
94 | CONFIG_INITRAMFS_SOURCE="" | 100 | CONFIG_INITRAMFS_SOURCE="" |
95 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y | 101 | CONFIG_CC_OPTIMIZE_FOR_SIZE=y |
@@ -103,11 +109,13 @@ CONFIG_HOTPLUG=y | |||
103 | CONFIG_PRINTK=y | 109 | CONFIG_PRINTK=y |
104 | CONFIG_BUG=y | 110 | CONFIG_BUG=y |
105 | CONFIG_ELF_CORE=y | 111 | CONFIG_ELF_CORE=y |
112 | # CONFIG_COMPAT_BRK is not set | ||
106 | CONFIG_BASE_FULL=y | 113 | CONFIG_BASE_FULL=y |
107 | CONFIG_FUTEX=y | 114 | CONFIG_FUTEX=y |
108 | CONFIG_ANON_INODES=y | 115 | CONFIG_ANON_INODES=y |
109 | CONFIG_EPOLL=y | 116 | CONFIG_EPOLL=y |
110 | CONFIG_SIGNALFD=y | 117 | CONFIG_SIGNALFD=y |
118 | CONFIG_TIMERFD=y | ||
111 | CONFIG_EVENTFD=y | 119 | CONFIG_EVENTFD=y |
112 | CONFIG_SHMEM=y | 120 | CONFIG_SHMEM=y |
113 | CONFIG_VM_EVENT_COUNTERS=y | 121 | CONFIG_VM_EVENT_COUNTERS=y |
@@ -115,6 +123,16 @@ CONFIG_SLUB_DEBUG=y | |||
115 | # CONFIG_SLAB is not set | 123 | # CONFIG_SLAB is not set |
116 | CONFIG_SLUB=y | 124 | CONFIG_SLUB=y |
117 | # CONFIG_SLOB is not set | 125 | # CONFIG_SLOB is not set |
126 | CONFIG_PROFILING=y | ||
127 | CONFIG_MARKERS=y | ||
128 | CONFIG_OPROFILE=y | ||
129 | CONFIG_HAVE_OPROFILE=y | ||
130 | CONFIG_KPROBES=y | ||
131 | CONFIG_KRETPROBES=y | ||
132 | CONFIG_HAVE_KPROBES=y | ||
133 | CONFIG_HAVE_KRETPROBES=y | ||
134 | CONFIG_PROC_PAGE_MONITOR=y | ||
135 | CONFIG_SLABINFO=y | ||
118 | CONFIG_RT_MUTEXES=y | 136 | CONFIG_RT_MUTEXES=y |
119 | # CONFIG_TINY_SHMEM is not set | 137 | # CONFIG_TINY_SHMEM is not set |
120 | CONFIG_BASE_SMALL=0 | 138 | CONFIG_BASE_SMALL=0 |
@@ -142,6 +160,7 @@ CONFIG_DEFAULT_AS=y | |||
142 | # CONFIG_DEFAULT_CFQ is not set | 160 | # CONFIG_DEFAULT_CFQ is not set |
143 | # CONFIG_DEFAULT_NOOP is not set | 161 | # CONFIG_DEFAULT_NOOP is not set |
144 | CONFIG_DEFAULT_IOSCHED="anticipatory" | 162 | CONFIG_DEFAULT_IOSCHED="anticipatory" |
163 | CONFIG_CLASSIC_RCU=y | ||
145 | 164 | ||
146 | # | 165 | # |
147 | # Platform support | 166 | # Platform support |
@@ -156,8 +175,8 @@ CONFIG_EEH=y | |||
156 | CONFIG_SCANLOG=m | 175 | CONFIG_SCANLOG=m |
157 | CONFIG_LPARCFG=y | 176 | CONFIG_LPARCFG=y |
158 | # CONFIG_PPC_ISERIES is not set | 177 | # CONFIG_PPC_ISERIES is not set |
159 | # CONFIG_PPC_MPC52xx is not set | 178 | # CONFIG_PPC_MPC512x is not set |
160 | # CONFIG_PPC_MPC5200 is not set | 179 | # CONFIG_PPC_MPC5121 is not set |
161 | # CONFIG_PPC_PMAC is not set | 180 | # CONFIG_PPC_PMAC is not set |
162 | # CONFIG_PPC_MAPLE is not set | 181 | # CONFIG_PPC_MAPLE is not set |
163 | # CONFIG_PPC_PASEMI is not set | 182 | # CONFIG_PPC_PASEMI is not set |
@@ -170,6 +189,7 @@ CONFIG_LPARCFG=y | |||
170 | CONFIG_PPC_NATIVE=y | 189 | CONFIG_PPC_NATIVE=y |
171 | # CONFIG_UDBG_RTAS_CONSOLE is not set | 190 | # CONFIG_UDBG_RTAS_CONSOLE is not set |
172 | CONFIG_XICS=y | 191 | CONFIG_XICS=y |
192 | # CONFIG_IPIC is not set | ||
173 | CONFIG_MPIC=y | 193 | CONFIG_MPIC=y |
174 | # CONFIG_MPIC_WEIRD is not set | 194 | # CONFIG_MPIC_WEIRD is not set |
175 | CONFIG_PPC_I8259=y | 195 | CONFIG_PPC_I8259=y |
@@ -186,7 +206,6 @@ CONFIG_IBMEBUS=y | |||
186 | # CONFIG_PPC_INDIRECT_IO is not set | 206 | # CONFIG_PPC_INDIRECT_IO is not set |
187 | # CONFIG_GENERIC_IOMAP is not set | 207 | # CONFIG_GENERIC_IOMAP is not set |
188 | # CONFIG_CPU_FREQ is not set | 208 | # CONFIG_CPU_FREQ is not set |
189 | # CONFIG_CPM2 is not set | ||
190 | # CONFIG_FSL_ULI1575 is not set | 209 | # CONFIG_FSL_ULI1575 is not set |
191 | 210 | ||
192 | # | 211 | # |
@@ -201,17 +220,21 @@ CONFIG_HZ_250=y | |||
201 | # CONFIG_HZ_300 is not set | 220 | # CONFIG_HZ_300 is not set |
202 | # CONFIG_HZ_1000 is not set | 221 | # CONFIG_HZ_1000 is not set |
203 | CONFIG_HZ=250 | 222 | CONFIG_HZ=250 |
223 | # CONFIG_SCHED_HRTICK is not set | ||
204 | CONFIG_PREEMPT_NONE=y | 224 | CONFIG_PREEMPT_NONE=y |
205 | # CONFIG_PREEMPT_VOLUNTARY is not set | 225 | # CONFIG_PREEMPT_VOLUNTARY is not set |
206 | # CONFIG_PREEMPT is not set | 226 | # CONFIG_PREEMPT is not set |
207 | # CONFIG_PREEMPT_BKL is not set | ||
208 | CONFIG_BINFMT_ELF=y | 227 | CONFIG_BINFMT_ELF=y |
228 | CONFIG_COMPAT_BINFMT_ELF=y | ||
209 | CONFIG_BINFMT_MISC=m | 229 | CONFIG_BINFMT_MISC=m |
210 | CONFIG_FORCE_MAX_ZONEORDER=13 | 230 | CONFIG_FORCE_MAX_ZONEORDER=13 |
211 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y | 231 | CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y |
212 | CONFIG_IOMMU_VMERGE=y | 232 | CONFIG_IOMMU_VMERGE=y |
233 | CONFIG_IOMMU_HELPER=y | ||
213 | CONFIG_HOTPLUG_CPU=y | 234 | CONFIG_HOTPLUG_CPU=y |
214 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y | 235 | CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y |
236 | CONFIG_ARCH_HAS_WALK_MEMORY=y | ||
237 | CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y | ||
215 | CONFIG_KEXEC=y | 238 | CONFIG_KEXEC=y |
216 | # CONFIG_CRASH_DUMP is not set | 239 | # CONFIG_CRASH_DUMP is not set |
217 | CONFIG_IRQ_ALL_CPUS=y | 240 | CONFIG_IRQ_ALL_CPUS=y |
@@ -245,9 +268,7 @@ CONFIG_SCHED_SMT=y | |||
245 | CONFIG_PROC_DEVICETREE=y | 268 | CONFIG_PROC_DEVICETREE=y |
246 | # CONFIG_CMDLINE_BOOL is not set | 269 | # CONFIG_CMDLINE_BOOL is not set |
247 | # CONFIG_PM is not set | 270 | # CONFIG_PM is not set |
248 | CONFIG_SUSPEND_SMP_POSSIBLE=y | ||
249 | CONFIG_SECCOMP=y | 271 | CONFIG_SECCOMP=y |
250 | # CONFIG_WANT_DEVICE_TREE is not set | ||
251 | CONFIG_ISA_DMA_API=y | 272 | CONFIG_ISA_DMA_API=y |
252 | 273 | ||
253 | # | 274 | # |
@@ -288,6 +309,7 @@ CONFIG_XFRM=y | |||
288 | CONFIG_XFRM_USER=m | 309 | CONFIG_XFRM_USER=m |
289 | # CONFIG_XFRM_SUB_POLICY is not set | 310 | # CONFIG_XFRM_SUB_POLICY is not set |
290 | # CONFIG_XFRM_MIGRATE is not set | 311 | # CONFIG_XFRM_MIGRATE is not set |
312 | # CONFIG_XFRM_STATISTICS is not set | ||
291 | CONFIG_NET_KEY=m | 313 | CONFIG_NET_KEY=m |
292 | # CONFIG_NET_KEY_MIGRATE is not set | 314 | # CONFIG_NET_KEY_MIGRATE is not set |
293 | CONFIG_INET=y | 315 | CONFIG_INET=y |
@@ -322,14 +344,14 @@ CONFIG_DEFAULT_TCP_CONG="cubic" | |||
322 | # CONFIG_NETWORK_SECMARK is not set | 344 | # CONFIG_NETWORK_SECMARK is not set |
323 | CONFIG_NETFILTER=y | 345 | CONFIG_NETFILTER=y |
324 | # CONFIG_NETFILTER_DEBUG is not set | 346 | # CONFIG_NETFILTER_DEBUG is not set |
347 | CONFIG_NETFILTER_ADVANCED=y | ||
325 | 348 | ||
326 | # | 349 | # |
327 | # Core Netfilter Configuration | 350 | # Core Netfilter Configuration |
328 | # | 351 | # |
329 | CONFIG_NETFILTER_NETLINK=y | 352 | CONFIG_NETFILTER_NETLINK=m |
330 | CONFIG_NETFILTER_NETLINK_QUEUE=m | 353 | CONFIG_NETFILTER_NETLINK_QUEUE=m |
331 | CONFIG_NETFILTER_NETLINK_LOG=m | 354 | CONFIG_NETFILTER_NETLINK_LOG=m |
332 | CONFIG_NF_CONNTRACK_ENABLED=m | ||
333 | CONFIG_NF_CONNTRACK=m | 355 | CONFIG_NF_CONNTRACK=m |
334 | CONFIG_NF_CT_ACCT=y | 356 | CONFIG_NF_CT_ACCT=y |
335 | CONFIG_NF_CONNTRACK_MARK=y | 357 | CONFIG_NF_CONNTRACK_MARK=y |
@@ -351,6 +373,7 @@ CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m | |||
351 | CONFIG_NETFILTER_XT_TARGET_MARK=m | 373 | CONFIG_NETFILTER_XT_TARGET_MARK=m |
352 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m | 374 | CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m |
353 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m | 375 | CONFIG_NETFILTER_XT_TARGET_NFLOG=m |
376 | CONFIG_NETFILTER_XT_TARGET_RATEEST=m | ||
354 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m | 377 | CONFIG_NETFILTER_XT_TARGET_TCPMSS=m |
355 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m | 378 | CONFIG_NETFILTER_XT_MATCH_COMMENT=m |
356 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m | 379 | CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m |
@@ -361,14 +384,17 @@ CONFIG_NETFILTER_XT_MATCH_DCCP=m | |||
361 | CONFIG_NETFILTER_XT_MATCH_DSCP=m | 384 | CONFIG_NETFILTER_XT_MATCH_DSCP=m |
362 | CONFIG_NETFILTER_XT_MATCH_ESP=m | 385 | CONFIG_NETFILTER_XT_MATCH_ESP=m |
363 | CONFIG_NETFILTER_XT_MATCH_HELPER=m | 386 | CONFIG_NETFILTER_XT_MATCH_HELPER=m |
387 | CONFIG_NETFILTER_XT_MATCH_IPRANGE=m | ||
364 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m | 388 | CONFIG_NETFILTER_XT_MATCH_LENGTH=m |
365 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m | 389 | CONFIG_NETFILTER_XT_MATCH_LIMIT=m |
366 | CONFIG_NETFILTER_XT_MATCH_MAC=m | 390 | CONFIG_NETFILTER_XT_MATCH_MAC=m |
367 | CONFIG_NETFILTER_XT_MATCH_MARK=m | 391 | CONFIG_NETFILTER_XT_MATCH_MARK=m |
392 | CONFIG_NETFILTER_XT_MATCH_OWNER=m | ||
368 | CONFIG_NETFILTER_XT_MATCH_POLICY=m | 393 | CONFIG_NETFILTER_XT_MATCH_POLICY=m |
369 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m | 394 | CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m |
370 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m | 395 | CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m |
371 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m | 396 | CONFIG_NETFILTER_XT_MATCH_QUOTA=m |
397 | CONFIG_NETFILTER_XT_MATCH_RATEEST=m | ||
372 | CONFIG_NETFILTER_XT_MATCH_REALM=m | 398 | CONFIG_NETFILTER_XT_MATCH_REALM=m |
373 | CONFIG_NETFILTER_XT_MATCH_SCTP=m | 399 | CONFIG_NETFILTER_XT_MATCH_SCTP=m |
374 | CONFIG_NETFILTER_XT_MATCH_STATE=m | 400 | CONFIG_NETFILTER_XT_MATCH_STATE=m |
@@ -386,13 +412,10 @@ CONFIG_NF_CONNTRACK_IPV4=m | |||
386 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y | 412 | CONFIG_NF_CONNTRACK_PROC_COMPAT=y |
387 | CONFIG_IP_NF_QUEUE=m | 413 | CONFIG_IP_NF_QUEUE=m |
388 | CONFIG_IP_NF_IPTABLES=m | 414 | CONFIG_IP_NF_IPTABLES=m |
389 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
390 | CONFIG_IP_NF_MATCH_TOS=m | ||
391 | CONFIG_IP_NF_MATCH_RECENT=m | 415 | CONFIG_IP_NF_MATCH_RECENT=m |
392 | CONFIG_IP_NF_MATCH_ECN=m | 416 | CONFIG_IP_NF_MATCH_ECN=m |
393 | CONFIG_IP_NF_MATCH_AH=m | 417 | CONFIG_IP_NF_MATCH_AH=m |
394 | CONFIG_IP_NF_MATCH_TTL=m | 418 | CONFIG_IP_NF_MATCH_TTL=m |
395 | CONFIG_IP_NF_MATCH_OWNER=m | ||
396 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 419 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
397 | CONFIG_IP_NF_FILTER=m | 420 | CONFIG_IP_NF_FILTER=m |
398 | CONFIG_IP_NF_TARGET_REJECT=m | 421 | CONFIG_IP_NF_TARGET_REJECT=m |
@@ -403,7 +426,6 @@ CONFIG_NF_NAT_NEEDED=y | |||
403 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 426 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
404 | CONFIG_IP_NF_TARGET_REDIRECT=m | 427 | CONFIG_IP_NF_TARGET_REDIRECT=m |
405 | CONFIG_IP_NF_TARGET_NETMAP=m | 428 | CONFIG_IP_NF_TARGET_NETMAP=m |
406 | CONFIG_IP_NF_TARGET_SAME=m | ||
407 | CONFIG_NF_NAT_SNMP_BASIC=m | 429 | CONFIG_NF_NAT_SNMP_BASIC=m |
408 | CONFIG_NF_NAT_FTP=m | 430 | CONFIG_NF_NAT_FTP=m |
409 | CONFIG_NF_NAT_IRC=m | 431 | CONFIG_NF_NAT_IRC=m |
@@ -439,6 +461,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
439 | # CONFIG_NET_PKTGEN is not set | 461 | # CONFIG_NET_PKTGEN is not set |
440 | # CONFIG_NET_TCPPROBE is not set | 462 | # CONFIG_NET_TCPPROBE is not set |
441 | # CONFIG_HAMRADIO is not set | 463 | # CONFIG_HAMRADIO is not set |
464 | # CONFIG_CAN is not set | ||
442 | # CONFIG_IRDA is not set | 465 | # CONFIG_IRDA is not set |
443 | # CONFIG_BT is not set | 466 | # CONFIG_BT is not set |
444 | # CONFIG_AF_RXRPC is not set | 467 | # CONFIG_AF_RXRPC is not set |
@@ -493,7 +516,7 @@ CONFIG_BLK_DEV_NBD=m | |||
493 | CONFIG_BLK_DEV_RAM=y | 516 | CONFIG_BLK_DEV_RAM=y |
494 | CONFIG_BLK_DEV_RAM_COUNT=16 | 517 | CONFIG_BLK_DEV_RAM_COUNT=16 |
495 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 518 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
496 | CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 | 519 | # CONFIG_BLK_DEV_XIP is not set |
497 | # CONFIG_CDROM_PKTCDVD is not set | 520 | # CONFIG_CDROM_PKTCDVD is not set |
498 | # CONFIG_ATA_OVER_ETH is not set | 521 | # CONFIG_ATA_OVER_ETH is not set |
499 | CONFIG_MISC_DEVICES=y | 522 | CONFIG_MISC_DEVICES=y |
@@ -501,16 +524,19 @@ CONFIG_MISC_DEVICES=y | |||
501 | # CONFIG_EEPROM_93CX6 is not set | 524 | # CONFIG_EEPROM_93CX6 is not set |
502 | # CONFIG_SGI_IOC4 is not set | 525 | # CONFIG_SGI_IOC4 is not set |
503 | # CONFIG_TIFM_CORE is not set | 526 | # CONFIG_TIFM_CORE is not set |
527 | # CONFIG_ENCLOSURE_SERVICES is not set | ||
528 | CONFIG_HAVE_IDE=y | ||
504 | CONFIG_IDE=y | 529 | CONFIG_IDE=y |
505 | CONFIG_BLK_DEV_IDE=y | 530 | CONFIG_BLK_DEV_IDE=y |
506 | 531 | ||
507 | # | 532 | # |
508 | # Please see Documentation/ide.txt for help/info on IDE drives | 533 | # Please see Documentation/ide/ide.txt for help/info on IDE drives |
509 | # | 534 | # |
510 | # CONFIG_BLK_DEV_IDE_SATA is not set | 535 | # CONFIG_BLK_DEV_IDE_SATA is not set |
511 | CONFIG_BLK_DEV_IDEDISK=y | 536 | CONFIG_BLK_DEV_IDEDISK=y |
512 | # CONFIG_IDEDISK_MULTI_MODE is not set | 537 | # CONFIG_IDEDISK_MULTI_MODE is not set |
513 | CONFIG_BLK_DEV_IDECD=y | 538 | CONFIG_BLK_DEV_IDECD=y |
539 | CONFIG_BLK_DEV_IDECD_VERBOSE_ERRORS=y | ||
514 | # CONFIG_BLK_DEV_IDETAPE is not set | 540 | # CONFIG_BLK_DEV_IDETAPE is not set |
515 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | 541 | # CONFIG_BLK_DEV_IDEFLOPPY is not set |
516 | # CONFIG_BLK_DEV_IDESCSI is not set | 542 | # CONFIG_BLK_DEV_IDESCSI is not set |
@@ -522,12 +548,12 @@ CONFIG_IDE_PROC_FS=y | |||
522 | # | 548 | # |
523 | CONFIG_IDE_GENERIC=y | 549 | CONFIG_IDE_GENERIC=y |
524 | # CONFIG_BLK_DEV_PLATFORM is not set | 550 | # CONFIG_BLK_DEV_PLATFORM is not set |
551 | CONFIG_BLK_DEV_IDEDMA_SFF=y | ||
525 | 552 | ||
526 | # | 553 | # |
527 | # PCI IDE chipsets support | 554 | # PCI IDE chipsets support |
528 | # | 555 | # |
529 | CONFIG_BLK_DEV_IDEPCI=y | 556 | CONFIG_BLK_DEV_IDEPCI=y |
530 | CONFIG_IDEPCI_SHARE_IRQ=y | ||
531 | CONFIG_IDEPCI_PCIBUS_ORDER=y | 557 | CONFIG_IDEPCI_PCIBUS_ORDER=y |
532 | # CONFIG_BLK_DEV_OFFBOARD is not set | 558 | # CONFIG_BLK_DEV_OFFBOARD is not set |
533 | CONFIG_BLK_DEV_GENERIC=y | 559 | CONFIG_BLK_DEV_GENERIC=y |
@@ -558,7 +584,6 @@ CONFIG_BLK_DEV_AMD74XX=y | |||
558 | # CONFIG_BLK_DEV_TRM290 is not set | 584 | # CONFIG_BLK_DEV_TRM290 is not set |
559 | # CONFIG_BLK_DEV_VIA82CXXX is not set | 585 | # CONFIG_BLK_DEV_VIA82CXXX is not set |
560 | # CONFIG_BLK_DEV_TC86C001 is not set | 586 | # CONFIG_BLK_DEV_TC86C001 is not set |
561 | # CONFIG_IDE_ARM is not set | ||
562 | CONFIG_BLK_DEV_IDEDMA=y | 587 | CONFIG_BLK_DEV_IDEDMA=y |
563 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y | 588 | CONFIG_IDE_ARCH_OBSOLETE_INIT=y |
564 | # CONFIG_BLK_DEV_HD is not set | 589 | # CONFIG_BLK_DEV_HD is not set |
@@ -627,6 +652,7 @@ CONFIG_SCSI_IBMVSCSI=y | |||
627 | # CONFIG_SCSI_INIA100 is not set | 652 | # CONFIG_SCSI_INIA100 is not set |
628 | # CONFIG_SCSI_PPA is not set | 653 | # CONFIG_SCSI_PPA is not set |
629 | # CONFIG_SCSI_IMM is not set | 654 | # CONFIG_SCSI_IMM is not set |
655 | # CONFIG_SCSI_MVSAS is not set | ||
630 | # CONFIG_SCSI_STEX is not set | 656 | # CONFIG_SCSI_STEX is not set |
631 | CONFIG_SCSI_SYM53C8XX_2=y | 657 | CONFIG_SCSI_SYM53C8XX_2=y |
632 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 | 658 | CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 |
@@ -685,6 +711,7 @@ CONFIG_ATA=y | |||
685 | # CONFIG_PATA_MPIIX is not set | 711 | # CONFIG_PATA_MPIIX is not set |
686 | # CONFIG_PATA_OLDPIIX is not set | 712 | # CONFIG_PATA_OLDPIIX is not set |
687 | # CONFIG_PATA_NETCELL is not set | 713 | # CONFIG_PATA_NETCELL is not set |
714 | # CONFIG_PATA_NINJA32 is not set | ||
688 | # CONFIG_PATA_NS87410 is not set | 715 | # CONFIG_PATA_NS87410 is not set |
689 | # CONFIG_PATA_NS87415 is not set | 716 | # CONFIG_PATA_NS87415 is not set |
690 | # CONFIG_PATA_OPTI is not set | 717 | # CONFIG_PATA_OPTI is not set |
@@ -699,6 +726,7 @@ CONFIG_ATA=y | |||
699 | # CONFIG_PATA_SIS is not set | 726 | # CONFIG_PATA_SIS is not set |
700 | # CONFIG_PATA_VIA is not set | 727 | # CONFIG_PATA_VIA is not set |
701 | CONFIG_PATA_WINBOND=y | 728 | CONFIG_PATA_WINBOND=y |
729 | # CONFIG_PATA_PLATFORM is not set | ||
702 | CONFIG_MD=y | 730 | CONFIG_MD=y |
703 | CONFIG_BLK_DEV_MD=y | 731 | CONFIG_BLK_DEV_MD=y |
704 | CONFIG_MD_LINEAR=y | 732 | CONFIG_MD_LINEAR=y |
@@ -737,7 +765,6 @@ CONFIG_BONDING=m | |||
737 | # CONFIG_EQUALIZER is not set | 765 | # CONFIG_EQUALIZER is not set |
738 | CONFIG_TUN=m | 766 | CONFIG_TUN=m |
739 | # CONFIG_VETH is not set | 767 | # CONFIG_VETH is not set |
740 | # CONFIG_IP1000 is not set | ||
741 | # CONFIG_ARCNET is not set | 768 | # CONFIG_ARCNET is not set |
742 | # CONFIG_PHYLIB is not set | 769 | # CONFIG_PHYLIB is not set |
743 | CONFIG_NET_ETHERNET=y | 770 | CONFIG_NET_ETHERNET=y |
@@ -769,6 +796,7 @@ CONFIG_E100=y | |||
769 | # CONFIG_NE2K_PCI is not set | 796 | # CONFIG_NE2K_PCI is not set |
770 | # CONFIG_8139CP is not set | 797 | # CONFIG_8139CP is not set |
771 | # CONFIG_8139TOO is not set | 798 | # CONFIG_8139TOO is not set |
799 | # CONFIG_R6040 is not set | ||
772 | # CONFIG_SIS900 is not set | 800 | # CONFIG_SIS900 is not set |
773 | # CONFIG_EPIC100 is not set | 801 | # CONFIG_EPIC100 is not set |
774 | # CONFIG_SUNDANCE is not set | 802 | # CONFIG_SUNDANCE is not set |
@@ -783,6 +811,9 @@ CONFIG_E1000=y | |||
783 | # CONFIG_E1000_NAPI is not set | 811 | # CONFIG_E1000_NAPI is not set |
784 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set | 812 | # CONFIG_E1000_DISABLE_PACKET_SPLIT is not set |
785 | # CONFIG_E1000E is not set | 813 | # CONFIG_E1000E is not set |
814 | # CONFIG_E1000E_ENABLED is not set | ||
815 | # CONFIG_IP1000 is not set | ||
816 | # CONFIG_IGB is not set | ||
786 | # CONFIG_NS83820 is not set | 817 | # CONFIG_NS83820 is not set |
787 | # CONFIG_HAMACHI is not set | 818 | # CONFIG_HAMACHI is not set |
788 | # CONFIG_YELLOWFIN is not set | 819 | # CONFIG_YELLOWFIN is not set |
@@ -811,6 +842,7 @@ CONFIG_S2IO=m | |||
811 | # CONFIG_PASEMI_MAC is not set | 842 | # CONFIG_PASEMI_MAC is not set |
812 | # CONFIG_MLX4_CORE is not set | 843 | # CONFIG_MLX4_CORE is not set |
813 | # CONFIG_TEHUTI is not set | 844 | # CONFIG_TEHUTI is not set |
845 | # CONFIG_BNX2X is not set | ||
814 | CONFIG_TR=y | 846 | CONFIG_TR=y |
815 | CONFIG_IBMOL=y | 847 | CONFIG_IBMOL=y |
816 | # CONFIG_3C359 is not set | 848 | # CONFIG_3C359 is not set |
@@ -847,7 +879,6 @@ CONFIG_PPPOE=m | |||
847 | # CONFIG_SLIP is not set | 879 | # CONFIG_SLIP is not set |
848 | CONFIG_SLHC=m | 880 | CONFIG_SLHC=m |
849 | # CONFIG_NET_FC is not set | 881 | # CONFIG_NET_FC is not set |
850 | # CONFIG_SHAPER is not set | ||
851 | CONFIG_NETCONSOLE=y | 882 | CONFIG_NETCONSOLE=y |
852 | # CONFIG_NETCONSOLE_DYNAMIC is not set | 883 | # CONFIG_NETCONSOLE_DYNAMIC is not set |
853 | CONFIG_NETPOLL=y | 884 | CONFIG_NETPOLL=y |
@@ -927,6 +958,7 @@ CONFIG_VT_CONSOLE=y | |||
927 | CONFIG_HW_CONSOLE=y | 958 | CONFIG_HW_CONSOLE=y |
928 | # CONFIG_VT_HW_CONSOLE_BINDING is not set | 959 | # CONFIG_VT_HW_CONSOLE_BINDING is not set |
929 | # CONFIG_SERIAL_NONSTANDARD is not set | 960 | # CONFIG_SERIAL_NONSTANDARD is not set |
961 | # CONFIG_NOZOMI is not set | ||
930 | 962 | ||
931 | # | 963 | # |
932 | # Serial drivers | 964 | # Serial drivers |
@@ -951,7 +983,6 @@ CONFIG_LEGACY_PTYS=y | |||
951 | CONFIG_LEGACY_PTY_COUNT=256 | 983 | CONFIG_LEGACY_PTY_COUNT=256 |
952 | # CONFIG_PRINTER is not set | 984 | # CONFIG_PRINTER is not set |
953 | # CONFIG_PPDEV is not set | 985 | # CONFIG_PPDEV is not set |
954 | # CONFIG_TIPAR is not set | ||
955 | CONFIG_HVC_DRIVER=y | 986 | CONFIG_HVC_DRIVER=y |
956 | CONFIG_HVC_CONSOLE=y | 987 | CONFIG_HVC_CONSOLE=y |
957 | CONFIG_HVC_RTAS=y | 988 | CONFIG_HVC_RTAS=y |
@@ -1009,13 +1040,12 @@ CONFIG_I2C_ALGOBIT=y | |||
1009 | # | 1040 | # |
1010 | # Miscellaneous I2C Chip support | 1041 | # Miscellaneous I2C Chip support |
1011 | # | 1042 | # |
1012 | # CONFIG_SENSORS_DS1337 is not set | ||
1013 | # CONFIG_SENSORS_DS1374 is not set | ||
1014 | # CONFIG_DS1682 is not set | 1043 | # CONFIG_DS1682 is not set |
1015 | # CONFIG_SENSORS_EEPROM is not set | 1044 | # CONFIG_SENSORS_EEPROM is not set |
1016 | # CONFIG_SENSORS_PCF8574 is not set | 1045 | # CONFIG_SENSORS_PCF8574 is not set |
1017 | # CONFIG_SENSORS_PCA9539 is not set | 1046 | # CONFIG_PCF8575 is not set |
1018 | # CONFIG_SENSORS_PCF8591 is not set | 1047 | # CONFIG_SENSORS_PCF8591 is not set |
1048 | # CONFIG_TPS65010 is not set | ||
1019 | # CONFIG_SENSORS_MAX6875 is not set | 1049 | # CONFIG_SENSORS_MAX6875 is not set |
1020 | # CONFIG_SENSORS_TSL2550 is not set | 1050 | # CONFIG_SENSORS_TSL2550 is not set |
1021 | # CONFIG_I2C_DEBUG_CORE is not set | 1051 | # CONFIG_I2C_DEBUG_CORE is not set |
@@ -1031,6 +1061,7 @@ CONFIG_I2C_ALGOBIT=y | |||
1031 | # CONFIG_W1 is not set | 1061 | # CONFIG_W1 is not set |
1032 | # CONFIG_POWER_SUPPLY is not set | 1062 | # CONFIG_POWER_SUPPLY is not set |
1033 | # CONFIG_HWMON is not set | 1063 | # CONFIG_HWMON is not set |
1064 | # CONFIG_THERMAL is not set | ||
1034 | # CONFIG_WATCHDOG is not set | 1065 | # CONFIG_WATCHDOG is not set |
1035 | 1066 | ||
1036 | # | 1067 | # |
@@ -1166,6 +1197,7 @@ CONFIG_USB_ARCH_HAS_OHCI=y | |||
1166 | CONFIG_USB_ARCH_HAS_EHCI=y | 1197 | CONFIG_USB_ARCH_HAS_EHCI=y |
1167 | CONFIG_USB=y | 1198 | CONFIG_USB=y |
1168 | # CONFIG_USB_DEBUG is not set | 1199 | # CONFIG_USB_DEBUG is not set |
1200 | # CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set | ||
1169 | 1201 | ||
1170 | # | 1202 | # |
1171 | # Miscellaneous USB options | 1203 | # Miscellaneous USB options |
@@ -1179,9 +1211,9 @@ CONFIG_USB_DEVICE_CLASS=y | |||
1179 | # USB Host Controller Drivers | 1211 | # USB Host Controller Drivers |
1180 | # | 1212 | # |
1181 | CONFIG_USB_EHCI_HCD=y | 1213 | CONFIG_USB_EHCI_HCD=y |
1182 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | ||
1183 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 1214 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
1184 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set | 1215 | # CONFIG_USB_EHCI_TT_NEWSCHED is not set |
1216 | # CONFIG_USB_EHCI_HCD_PPC_OF is not set | ||
1185 | # CONFIG_USB_ISP116X_HCD is not set | 1217 | # CONFIG_USB_ISP116X_HCD is not set |
1186 | CONFIG_USB_OHCI_HCD=y | 1218 | CONFIG_USB_OHCI_HCD=y |
1187 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set | 1219 | # CONFIG_USB_OHCI_HCD_PPC_OF is not set |
@@ -1230,10 +1262,6 @@ CONFIG_USB_MON=y | |||
1230 | # USB port drivers | 1262 | # USB port drivers |
1231 | # | 1263 | # |
1232 | # CONFIG_USB_USS720 is not set | 1264 | # CONFIG_USB_USS720 is not set |
1233 | |||
1234 | # | ||
1235 | # USB Serial Converter support | ||
1236 | # | ||
1237 | # CONFIG_USB_SERIAL is not set | 1265 | # CONFIG_USB_SERIAL is not set |
1238 | 1266 | ||
1239 | # | 1267 | # |
@@ -1259,16 +1287,9 @@ CONFIG_USB_MON=y | |||
1259 | # CONFIG_USB_TRANCEVIBRATOR is not set | 1287 | # CONFIG_USB_TRANCEVIBRATOR is not set |
1260 | # CONFIG_USB_IOWARRIOR is not set | 1288 | # CONFIG_USB_IOWARRIOR is not set |
1261 | # CONFIG_USB_TEST is not set | 1289 | # CONFIG_USB_TEST is not set |
1262 | |||
1263 | # | ||
1264 | # USB DSL modem support | ||
1265 | # | ||
1266 | |||
1267 | # | ||
1268 | # USB Gadget Support | ||
1269 | # | ||
1270 | # CONFIG_USB_GADGET is not set | 1290 | # CONFIG_USB_GADGET is not set |
1271 | # CONFIG_MMC is not set | 1291 | # CONFIG_MMC is not set |
1292 | # CONFIG_MEMSTICK is not set | ||
1272 | # CONFIG_NEW_LEDS is not set | 1293 | # CONFIG_NEW_LEDS is not set |
1273 | CONFIG_INFINIBAND=m | 1294 | CONFIG_INFINIBAND=m |
1274 | CONFIG_INFINIBAND_USER_MAD=m | 1295 | CONFIG_INFINIBAND_USER_MAD=m |
@@ -1281,6 +1302,7 @@ CONFIG_INFINIBAND_MTHCA_DEBUG=y | |||
1281 | CONFIG_INFINIBAND_EHCA=m | 1302 | CONFIG_INFINIBAND_EHCA=m |
1282 | # CONFIG_INFINIBAND_AMSO1100 is not set | 1303 | # CONFIG_INFINIBAND_AMSO1100 is not set |
1283 | # CONFIG_MLX4_INFINIBAND is not set | 1304 | # CONFIG_MLX4_INFINIBAND is not set |
1305 | # CONFIG_INFINIBAND_NES is not set | ||
1284 | CONFIG_INFINIBAND_IPOIB=m | 1306 | CONFIG_INFINIBAND_IPOIB=m |
1285 | # CONFIG_INFINIBAND_IPOIB_CM is not set | 1307 | # CONFIG_INFINIBAND_IPOIB_CM is not set |
1286 | CONFIG_INFINIBAND_IPOIB_DEBUG=y | 1308 | CONFIG_INFINIBAND_IPOIB_DEBUG=y |
@@ -1289,6 +1311,7 @@ CONFIG_INFINIBAND_SRP=m | |||
1289 | # CONFIG_INFINIBAND_ISER is not set | 1311 | # CONFIG_INFINIBAND_ISER is not set |
1290 | # CONFIG_EDAC is not set | 1312 | # CONFIG_EDAC is not set |
1291 | # CONFIG_RTC_CLASS is not set | 1313 | # CONFIG_RTC_CLASS is not set |
1314 | # CONFIG_DMADEVICES is not set | ||
1292 | # CONFIG_AUXDISPLAY is not set | 1315 | # CONFIG_AUXDISPLAY is not set |
1293 | 1316 | ||
1294 | # | 1317 | # |
@@ -1334,12 +1357,10 @@ CONFIG_XFS_POSIX_ACL=y | |||
1334 | CONFIG_OCFS2_FS=m | 1357 | CONFIG_OCFS2_FS=m |
1335 | CONFIG_OCFS2_DEBUG_MASKLOG=y | 1358 | CONFIG_OCFS2_DEBUG_MASKLOG=y |
1336 | # CONFIG_OCFS2_DEBUG_FS is not set | 1359 | # CONFIG_OCFS2_DEBUG_FS is not set |
1337 | # CONFIG_MINIX_FS is not set | 1360 | CONFIG_DNOTIFY=y |
1338 | # CONFIG_ROMFS_FS is not set | ||
1339 | CONFIG_INOTIFY=y | 1361 | CONFIG_INOTIFY=y |
1340 | CONFIG_INOTIFY_USER=y | 1362 | CONFIG_INOTIFY_USER=y |
1341 | # CONFIG_QUOTA is not set | 1363 | # CONFIG_QUOTA is not set |
1342 | CONFIG_DNOTIFY=y | ||
1343 | # CONFIG_AUTOFS_FS is not set | 1364 | # CONFIG_AUTOFS_FS is not set |
1344 | CONFIG_AUTOFS4_FS=m | 1365 | CONFIG_AUTOFS4_FS=m |
1345 | CONFIG_FUSE_FS=m | 1366 | CONFIG_FUSE_FS=m |
@@ -1388,8 +1409,10 @@ CONFIG_CONFIGFS_FS=m | |||
1388 | # CONFIG_EFS_FS is not set | 1409 | # CONFIG_EFS_FS is not set |
1389 | CONFIG_CRAMFS=y | 1410 | CONFIG_CRAMFS=y |
1390 | # CONFIG_VXFS_FS is not set | 1411 | # CONFIG_VXFS_FS is not set |
1412 | # CONFIG_MINIX_FS is not set | ||
1391 | # CONFIG_HPFS_FS is not set | 1413 | # CONFIG_HPFS_FS is not set |
1392 | # CONFIG_QNX4FS_FS is not set | 1414 | # CONFIG_QNX4FS_FS is not set |
1415 | # CONFIG_ROMFS_FS is not set | ||
1393 | # CONFIG_SYSV_FS is not set | 1416 | # CONFIG_SYSV_FS is not set |
1394 | # CONFIG_UFS_FS is not set | 1417 | # CONFIG_UFS_FS is not set |
1395 | CONFIG_NETWORK_FILESYSTEMS=y | 1418 | CONFIG_NETWORK_FILESYSTEMS=y |
@@ -1473,7 +1496,6 @@ CONFIG_NLS_ISO8859_1=y | |||
1473 | # CONFIG_NLS_KOI8_U is not set | 1496 | # CONFIG_NLS_KOI8_U is not set |
1474 | # CONFIG_NLS_UTF8 is not set | 1497 | # CONFIG_NLS_UTF8 is not set |
1475 | # CONFIG_DLM is not set | 1498 | # CONFIG_DLM is not set |
1476 | # CONFIG_UCC_SLOW is not set | ||
1477 | 1499 | ||
1478 | # | 1500 | # |
1479 | # Library routines | 1501 | # Library routines |
@@ -1487,6 +1509,8 @@ CONFIG_CRC32=y | |||
1487 | CONFIG_LIBCRC32C=m | 1509 | CONFIG_LIBCRC32C=m |
1488 | CONFIG_ZLIB_INFLATE=y | 1510 | CONFIG_ZLIB_INFLATE=y |
1489 | CONFIG_ZLIB_DEFLATE=m | 1511 | CONFIG_ZLIB_DEFLATE=m |
1512 | CONFIG_LZO_COMPRESS=m | ||
1513 | CONFIG_LZO_DECOMPRESS=m | ||
1490 | CONFIG_TEXTSEARCH=y | 1514 | CONFIG_TEXTSEARCH=y |
1491 | CONFIG_TEXTSEARCH_KMP=m | 1515 | CONFIG_TEXTSEARCH_KMP=m |
1492 | CONFIG_TEXTSEARCH_BM=m | 1516 | CONFIG_TEXTSEARCH_BM=m |
@@ -1495,11 +1519,6 @@ CONFIG_PLIST=y | |||
1495 | CONFIG_HAS_IOMEM=y | 1519 | CONFIG_HAS_IOMEM=y |
1496 | CONFIG_HAS_IOPORT=y | 1520 | CONFIG_HAS_IOPORT=y |
1497 | CONFIG_HAS_DMA=y | 1521 | CONFIG_HAS_DMA=y |
1498 | CONFIG_INSTRUMENTATION=y | ||
1499 | CONFIG_PROFILING=y | ||
1500 | CONFIG_OPROFILE=y | ||
1501 | CONFIG_KPROBES=y | ||
1502 | CONFIG_MARKERS=y | ||
1503 | 1522 | ||
1504 | # | 1523 | # |
1505 | # Kernel hacking | 1524 | # Kernel hacking |
@@ -1518,6 +1537,7 @@ CONFIG_SCHED_DEBUG=y | |||
1518 | # CONFIG_SCHEDSTATS is not set | 1537 | # CONFIG_SCHEDSTATS is not set |
1519 | # CONFIG_TIMER_STATS is not set | 1538 | # CONFIG_TIMER_STATS is not set |
1520 | # CONFIG_SLUB_DEBUG_ON is not set | 1539 | # CONFIG_SLUB_DEBUG_ON is not set |
1540 | # CONFIG_SLUB_STATS is not set | ||
1521 | # CONFIG_DEBUG_RT_MUTEXES is not set | 1541 | # CONFIG_DEBUG_RT_MUTEXES is not set |
1522 | # CONFIG_RT_MUTEX_TESTER is not set | 1542 | # CONFIG_RT_MUTEX_TESTER is not set |
1523 | # CONFIG_DEBUG_SPINLOCK is not set | 1543 | # CONFIG_DEBUG_SPINLOCK is not set |
@@ -1530,9 +1550,10 @@ CONFIG_DEBUG_BUGVERBOSE=y | |||
1530 | # CONFIG_DEBUG_VM is not set | 1550 | # CONFIG_DEBUG_VM is not set |
1531 | # CONFIG_DEBUG_LIST is not set | 1551 | # CONFIG_DEBUG_LIST is not set |
1532 | # CONFIG_DEBUG_SG is not set | 1552 | # CONFIG_DEBUG_SG is not set |
1533 | CONFIG_FORCED_INLINING=y | ||
1534 | # CONFIG_BOOT_PRINTK_DELAY is not set | 1553 | # CONFIG_BOOT_PRINTK_DELAY is not set |
1535 | # CONFIG_RCU_TORTURE_TEST is not set | 1554 | # CONFIG_RCU_TORTURE_TEST is not set |
1555 | # CONFIG_KPROBES_SANITY_TEST is not set | ||
1556 | # CONFIG_BACKTRACE_SELF_TEST is not set | ||
1536 | # CONFIG_LKDTM is not set | 1557 | # CONFIG_LKDTM is not set |
1537 | # CONFIG_FAULT_INJECTION is not set | 1558 | # CONFIG_FAULT_INJECTION is not set |
1538 | # CONFIG_SAMPLES is not set | 1559 | # CONFIG_SAMPLES is not set |
@@ -1557,7 +1578,9 @@ CONFIG_VIRQ_DEBUG=y | |||
1557 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set | 1578 | # CONFIG_SECURITY_FILE_CAPABILITIES is not set |
1558 | CONFIG_CRYPTO=y | 1579 | CONFIG_CRYPTO=y |
1559 | CONFIG_CRYPTO_ALGAPI=y | 1580 | CONFIG_CRYPTO_ALGAPI=y |
1581 | CONFIG_CRYPTO_AEAD=m | ||
1560 | CONFIG_CRYPTO_BLKCIPHER=y | 1582 | CONFIG_CRYPTO_BLKCIPHER=y |
1583 | CONFIG_CRYPTO_SEQIV=m | ||
1561 | CONFIG_CRYPTO_HASH=y | 1584 | CONFIG_CRYPTO_HASH=y |
1562 | CONFIG_CRYPTO_MANAGER=y | 1585 | CONFIG_CRYPTO_MANAGER=y |
1563 | CONFIG_CRYPTO_HMAC=y | 1586 | CONFIG_CRYPTO_HMAC=y |
@@ -1570,12 +1593,15 @@ CONFIG_CRYPTO_SHA256=m | |||
1570 | CONFIG_CRYPTO_SHA512=m | 1593 | CONFIG_CRYPTO_SHA512=m |
1571 | CONFIG_CRYPTO_WP512=m | 1594 | CONFIG_CRYPTO_WP512=m |
1572 | CONFIG_CRYPTO_TGR192=m | 1595 | CONFIG_CRYPTO_TGR192=m |
1573 | # CONFIG_CRYPTO_GF128MUL is not set | 1596 | CONFIG_CRYPTO_GF128MUL=m |
1574 | CONFIG_CRYPTO_ECB=m | 1597 | CONFIG_CRYPTO_ECB=m |
1575 | CONFIG_CRYPTO_CBC=y | 1598 | CONFIG_CRYPTO_CBC=y |
1576 | CONFIG_CRYPTO_PCBC=m | 1599 | CONFIG_CRYPTO_PCBC=m |
1577 | # CONFIG_CRYPTO_LRW is not set | 1600 | # CONFIG_CRYPTO_LRW is not set |
1578 | # CONFIG_CRYPTO_XTS is not set | 1601 | # CONFIG_CRYPTO_XTS is not set |
1602 | CONFIG_CRYPTO_CTR=m | ||
1603 | CONFIG_CRYPTO_GCM=m | ||
1604 | CONFIG_CRYPTO_CCM=m | ||
1579 | # CONFIG_CRYPTO_CRYPTD is not set | 1605 | # CONFIG_CRYPTO_CRYPTD is not set |
1580 | CONFIG_CRYPTO_DES=y | 1606 | CONFIG_CRYPTO_DES=y |
1581 | # CONFIG_CRYPTO_FCRYPT is not set | 1607 | # CONFIG_CRYPTO_FCRYPT is not set |
@@ -1591,11 +1617,13 @@ CONFIG_CRYPTO_ARC4=m | |||
1591 | CONFIG_CRYPTO_KHAZAD=m | 1617 | CONFIG_CRYPTO_KHAZAD=m |
1592 | CONFIG_CRYPTO_ANUBIS=m | 1618 | CONFIG_CRYPTO_ANUBIS=m |
1593 | # CONFIG_CRYPTO_SEED is not set | 1619 | # CONFIG_CRYPTO_SEED is not set |
1620 | CONFIG_CRYPTO_SALSA20=m | ||
1594 | CONFIG_CRYPTO_DEFLATE=m | 1621 | CONFIG_CRYPTO_DEFLATE=m |
1595 | CONFIG_CRYPTO_MICHAEL_MIC=m | 1622 | CONFIG_CRYPTO_MICHAEL_MIC=m |
1596 | CONFIG_CRYPTO_CRC32C=m | 1623 | CONFIG_CRYPTO_CRC32C=m |
1597 | # CONFIG_CRYPTO_CAMELLIA is not set | 1624 | # CONFIG_CRYPTO_CAMELLIA is not set |
1598 | CONFIG_CRYPTO_TEST=m | 1625 | CONFIG_CRYPTO_TEST=m |
1599 | # CONFIG_CRYPTO_AUTHENC is not set | 1626 | CONFIG_CRYPTO_AUTHENC=m |
1627 | CONFIG_CRYPTO_LZO=m | ||
1600 | # CONFIG_CRYPTO_HW is not set | 1628 | # CONFIG_CRYPTO_HW is not set |
1601 | # CONFIG_PPC_CLOCK is not set | 1629 | # CONFIG_PPC_CLOCK is not set |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index 4846bf543a8c..59311ec0d422 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -353,6 +353,12 @@ struct task_struct *__switch_to(struct task_struct *prev, | |||
353 | account_process_vtime(current); | 353 | account_process_vtime(current); |
354 | calculate_steal_time(); | 354 | calculate_steal_time(); |
355 | 355 | ||
356 | /* | ||
357 | * We can't take a PMU exception inside _switch() since there is a | ||
358 | * window where the kernel stack SLB and the kernel stack are out | ||
359 | * of sync. Hard disable here. | ||
360 | */ | ||
361 | hard_irq_disable(); | ||
356 | last = _switch(old_thread, new_thread); | 362 | last = _switch(old_thread, new_thread); |
357 | 363 | ||
358 | local_irq_restore(flags); | 364 | local_irq_restore(flags); |
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index 7673e9865733..2a9fe97e4521 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c | |||
@@ -530,15 +530,21 @@ static int gpr32_set(struct task_struct *target, | |||
530 | --count; | 530 | --count; |
531 | } | 531 | } |
532 | 532 | ||
533 | if (kbuf) | 533 | if (kbuf) { |
534 | for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) | 534 | for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) |
535 | regs[pos++] = *k++; | 535 | regs[pos++] = *k++; |
536 | else | 536 | for (; count > 0 && pos < PT_TRAP; --count, ++pos) |
537 | ++k; | ||
538 | } else { | ||
537 | for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) { | 539 | for (; count > 0 && pos <= PT_MAX_PUT_REG; --count) { |
538 | if (__get_user(reg, u++)) | 540 | if (__get_user(reg, u++)) |
539 | return -EFAULT; | 541 | return -EFAULT; |
540 | regs[pos++] = reg; | 542 | regs[pos++] = reg; |
541 | } | 543 | } |
544 | for (; count > 0 && pos < PT_TRAP; --count, ++pos) | ||
545 | if (__get_user(reg, u++)) | ||
546 | return -EFAULT; | ||
547 | } | ||
542 | 548 | ||
543 | if (count > 0 && pos == PT_TRAP) { | 549 | if (count > 0 && pos == PT_TRAP) { |
544 | if (kbuf) | 550 | if (kbuf) |
diff --git a/arch/powerpc/mm/slb.c b/arch/powerpc/mm/slb.c index 47b06bad24ad..906daeda59a8 100644 --- a/arch/powerpc/mm/slb.c +++ b/arch/powerpc/mm/slb.c | |||
@@ -124,6 +124,12 @@ void slb_flush_and_rebolt(void) | |||
124 | ksp_vsid_data = get_slb_shadow()->save_area[2].vsid; | 124 | ksp_vsid_data = get_slb_shadow()->save_area[2].vsid; |
125 | } | 125 | } |
126 | 126 | ||
127 | /* | ||
128 | * We can't take a PMU exception in the following code, so hard | ||
129 | * disable interrupts. | ||
130 | */ | ||
131 | hard_irq_disable(); | ||
132 | |||
127 | /* We need to do this all in asm, so we're sure we don't touch | 133 | /* We need to do this all in asm, so we're sure we don't touch |
128 | * the stack between the slbia and rebolting it. */ | 134 | * the stack between the slbia and rebolting it. */ |
129 | asm volatile("isync\n" | 135 | asm volatile("isync\n" |
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index 20ea0e118f24..d75ccded7f10 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
@@ -802,17 +802,24 @@ static int __init cell_iommu_init_disabled(void) | |||
802 | 802 | ||
803 | static u64 cell_iommu_get_fixed_address(struct device *dev) | 803 | static u64 cell_iommu_get_fixed_address(struct device *dev) |
804 | { | 804 | { |
805 | u64 cpu_addr, size, best_size, pci_addr = OF_BAD_ADDR; | 805 | u64 cpu_addr, size, best_size, dev_addr = OF_BAD_ADDR; |
806 | struct device_node *np; | 806 | struct device_node *np; |
807 | const u32 *ranges = NULL; | 807 | const u32 *ranges = NULL; |
808 | int i, len, best; | 808 | int i, len, best, naddr, nsize, pna, range_size; |
809 | 809 | ||
810 | np = of_node_get(dev->archdata.of_node); | 810 | np = of_node_get(dev->archdata.of_node); |
811 | while (np) { | 811 | while (1) { |
812 | naddr = of_n_addr_cells(np); | ||
813 | nsize = of_n_size_cells(np); | ||
814 | np = of_get_next_parent(np); | ||
815 | if (!np) | ||
816 | break; | ||
817 | |||
812 | ranges = of_get_property(np, "dma-ranges", &len); | 818 | ranges = of_get_property(np, "dma-ranges", &len); |
813 | if (ranges) | 819 | |
820 | /* Ignore empty ranges, they imply no translation required */ | ||
821 | if (ranges && len > 0) | ||
814 | break; | 822 | break; |
815 | np = of_get_next_parent(np); | ||
816 | } | 823 | } |
817 | 824 | ||
818 | if (!ranges) { | 825 | if (!ranges) { |
@@ -822,15 +829,17 @@ static u64 cell_iommu_get_fixed_address(struct device *dev) | |||
822 | 829 | ||
823 | len /= sizeof(u32); | 830 | len /= sizeof(u32); |
824 | 831 | ||
832 | pna = of_n_addr_cells(np); | ||
833 | range_size = naddr + nsize + pna; | ||
834 | |||
825 | /* dma-ranges format: | 835 | /* dma-ranges format: |
826 | * 1 cell: pci space | 836 | * child addr : naddr cells |
827 | * 2 cells: pci address | 837 | * parent addr : pna cells |
828 | * 2 cells: parent address | 838 | * size : nsize cells |
829 | * 2 cells: size | ||
830 | */ | 839 | */ |
831 | for (i = 0, best = -1, best_size = 0; i < len; i += 7) { | 840 | for (i = 0, best = -1, best_size = 0; i < len; i += range_size) { |
832 | cpu_addr = of_translate_dma_address(np, ranges +i + 3); | 841 | cpu_addr = of_translate_dma_address(np, ranges + i + naddr); |
833 | size = of_read_number(ranges + i + 5, 2); | 842 | size = of_read_number(ranges + i + naddr + pna, nsize); |
834 | 843 | ||
835 | if (cpu_addr == 0 && size > best_size) { | 844 | if (cpu_addr == 0 && size > best_size) { |
836 | best = i; | 845 | best = i; |
@@ -838,15 +847,15 @@ static u64 cell_iommu_get_fixed_address(struct device *dev) | |||
838 | } | 847 | } |
839 | } | 848 | } |
840 | 849 | ||
841 | if (best >= 0) | 850 | if (best >= 0) { |
842 | pci_addr = of_read_number(ranges + best + 1, 2); | 851 | dev_addr = of_read_number(ranges + best, naddr); |
843 | else | 852 | } else |
844 | dev_dbg(dev, "iommu: no suitable range found!\n"); | 853 | dev_dbg(dev, "iommu: no suitable range found!\n"); |
845 | 854 | ||
846 | out: | 855 | out: |
847 | of_node_put(np); | 856 | of_node_put(np); |
848 | 857 | ||
849 | return pci_addr; | 858 | return dev_addr; |
850 | } | 859 | } |
851 | 860 | ||
852 | static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask) | 861 | static int dma_set_mask_and_switch(struct device *dev, u64 dma_mask) |
diff --git a/arch/powerpc/platforms/cell/setup.c b/arch/powerpc/platforms/cell/setup.c index dda34650cb07..5c531e8f9f6f 100644 --- a/arch/powerpc/platforms/cell/setup.c +++ b/arch/powerpc/platforms/cell/setup.c | |||
@@ -81,6 +81,42 @@ static void cell_progress(char *s, unsigned short hex) | |||
81 | printk("*** %04x : %s\n", hex, s ? s : ""); | 81 | printk("*** %04x : %s\n", hex, s ? s : ""); |
82 | } | 82 | } |
83 | 83 | ||
84 | static void cell_fixup_pcie_rootcomplex(struct pci_dev *dev) | ||
85 | { | ||
86 | struct pci_controller *hose; | ||
87 | const char *s; | ||
88 | int i; | ||
89 | |||
90 | if (!machine_is(cell)) | ||
91 | return; | ||
92 | |||
93 | /* We're searching for a direct child of the PHB */ | ||
94 | if (dev->bus->self != NULL || dev->devfn != 0) | ||
95 | return; | ||
96 | |||
97 | hose = pci_bus_to_host(dev->bus); | ||
98 | if (hose == NULL) | ||
99 | return; | ||
100 | |||
101 | /* Only on PCIE */ | ||
102 | if (!of_device_is_compatible(hose->dn, "pciex")) | ||
103 | return; | ||
104 | |||
105 | /* And only on axon */ | ||
106 | s = of_get_property(hose->dn, "model", NULL); | ||
107 | if (!s || strcmp(s, "Axon") != 0) | ||
108 | return; | ||
109 | |||
110 | for (i = 0; i < PCI_BRIDGE_RESOURCES; i++) { | ||
111 | dev->resource[i].start = dev->resource[i].end = 0; | ||
112 | dev->resource[i].flags = 0; | ||
113 | } | ||
114 | |||
115 | printk(KERN_DEBUG "PCI: Hiding resources on Axon PCIE RC %s\n", | ||
116 | pci_name(dev)); | ||
117 | } | ||
118 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, cell_fixup_pcie_rootcomplex); | ||
119 | |||
84 | static int __init cell_publish_devices(void) | 120 | static int __init cell_publish_devices(void) |
85 | { | 121 | { |
86 | int node; | 122 | int node; |
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c index 7e8efaade2ea..5efdfe9f5e76 100644 --- a/arch/s390/lib/uaccess_pt.c +++ b/arch/s390/lib/uaccess_pt.c | |||
@@ -406,6 +406,8 @@ int futex_atomic_cmpxchg_pt(int __user *uaddr, int oldval, int newval) | |||
406 | { | 406 | { |
407 | int ret; | 407 | int ret; |
408 | 408 | ||
409 | if (!current->mm) | ||
410 | return -EFAULT; | ||
409 | spin_lock(¤t->mm->page_table_lock); | 411 | spin_lock(¤t->mm->page_table_lock); |
410 | uaddr = (int __user *) __dat_user_addr((unsigned long) uaddr); | 412 | uaddr = (int __user *) __dat_user_addr((unsigned long) uaddr); |
411 | if (!uaddr) { | 413 | if (!uaddr) { |
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig index 95b7534e9e3c..12720489e458 100644 --- a/arch/sh/Kconfig +++ b/arch/sh/Kconfig | |||
@@ -580,6 +580,7 @@ config SH_TIMER_IRQ | |||
580 | CPU_SUBTYPE_SH7763 | 580 | CPU_SUBTYPE_SH7763 |
581 | default "86" if CPU_SUBTYPE_SH7619 | 581 | default "86" if CPU_SUBTYPE_SH7619 |
582 | default "140" if CPU_SUBTYPE_SH7206 | 582 | default "140" if CPU_SUBTYPE_SH7206 |
583 | default "142" if CPU_SUBTYPE_SH7203 | ||
583 | default "16" | 584 | default "16" |
584 | 585 | ||
585 | config SH_PCLK_FREQ | 586 | config SH_PCLK_FREQ |
diff --git a/arch/sh/Makefile b/arch/sh/Makefile index c510c225144f..cffc92b1bf2e 100644 --- a/arch/sh/Makefile +++ b/arch/sh/Makefile | |||
@@ -154,7 +154,11 @@ drivers-$(CONFIG_OPROFILE) += arch/sh/oprofile/ | |||
154 | 154 | ||
155 | boot := arch/sh/boot | 155 | boot := arch/sh/boot |
156 | 156 | ||
157 | ifneq ($(KBUILD_SRC),) | ||
157 | incdir-prefix := $(srctree)/include/asm-sh/ | 158 | incdir-prefix := $(srctree)/include/asm-sh/ |
159 | else | ||
160 | incdir-prefix := | ||
161 | endif | ||
158 | 162 | ||
159 | # Update machine arch and proc symlinks if something which affects | 163 | # Update machine arch and proc symlinks if something which affects |
160 | # them changed. We use .arch and .mach to indicate when they were | 164 | # them changed. We use .arch and .mach to indicate when they were |
@@ -182,7 +186,7 @@ include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \ | |||
182 | $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi | 186 | $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi |
183 | $(Q)rm -f include/asm-sh/mach | 187 | $(Q)rm -f include/asm-sh/mach |
184 | $(Q)for i in $(incdir-y); do \ | 188 | $(Q)for i in $(incdir-y); do \ |
185 | if [ -d $(incdir-prefix)$$i ]; then \ | 189 | if [ -d $(srctree)/include/asm-sh/$$i ]; then \ |
186 | echo -n ' SYMLINK include/asm-sh/mach -> '; \ | 190 | echo -n ' SYMLINK include/asm-sh/mach -> '; \ |
187 | echo -e "include/asm-sh/$$i"; \ | 191 | echo -e "include/asm-sh/$$i"; \ |
188 | ln -fsn $(incdir-prefix)$$i \ | 192 | ln -fsn $(incdir-prefix)$$i \ |
@@ -191,7 +195,7 @@ include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \ | |||
191 | if [ ! -d include/asm-sh/mach ]; then \ | 195 | if [ ! -d include/asm-sh/mach ]; then \ |
192 | echo -n ' SYMLINK include/asm-sh/mach -> '; \ | 196 | echo -n ' SYMLINK include/asm-sh/mach -> '; \ |
193 | echo -e 'include/asm-sh'; \ | 197 | echo -e 'include/asm-sh'; \ |
194 | ln -fsn $(incdir-prefix) include/asm-sh/mach; \ | 198 | ln -fsn $(incdir-prefix)../asm-sh include/asm-sh/mach; \ |
195 | fi; \ | 199 | fi; \ |
196 | fi; \ | 200 | fi; \ |
197 | done | 201 | done |
diff --git a/arch/sh/boot/Makefile b/arch/sh/boot/Makefile index 59f552c13349..3dda24daa0a8 100644 --- a/arch/sh/boot/Makefile +++ b/arch/sh/boot/Makefile | |||
@@ -32,12 +32,12 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE | |||
32 | $(obj)/compressed/vmlinux: FORCE | 32 | $(obj)/compressed/vmlinux: FORCE |
33 | $(Q)$(MAKE) $(build)=$(obj)/compressed $@ | 33 | $(Q)$(MAKE) $(build)=$(obj)/compressed $@ |
34 | 34 | ||
35 | KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%8x" \ | 35 | KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \ |
36 | $$[$(CONFIG_PAGE_OFFSET) + \ | 36 | $$[$(CONFIG_PAGE_OFFSET) + \ |
37 | $(CONFIG_MEMORY_START) + \ | 37 | $(CONFIG_MEMORY_START) + \ |
38 | $(CONFIG_ZERO_PAGE_OFFSET)]') | 38 | $(CONFIG_ZERO_PAGE_OFFSET)]') |
39 | 39 | ||
40 | KERNEL_ENTRY := $(shell /bin/bash -c 'printf "0x%8x" \ | 40 | KERNEL_ENTRY := $(shell /bin/bash -c 'printf "0x%08x" \ |
41 | $$[$(CONFIG_PAGE_OFFSET) + \ | 41 | $$[$(CONFIG_PAGE_OFFSET) + \ |
42 | $(CONFIG_MEMORY_START) + \ | 42 | $(CONFIG_MEMORY_START) + \ |
43 | $(CONFIG_ZERO_PAGE_OFFSET)+0x1000]') | 43 | $(CONFIG_ZERO_PAGE_OFFSET)+0x1000]') |
diff --git a/arch/sh/kernel/cpu/sh2/entry.S b/arch/sh/kernel/cpu/sh2/entry.S index 7a26569e7956..0fc89069d8c7 100644 --- a/arch/sh/kernel/cpu/sh2/entry.S +++ b/arch/sh/kernel/cpu/sh2/entry.S | |||
@@ -267,7 +267,6 @@ ENTRY(sh_bios_handler) | |||
267 | 267 | ||
268 | ENTRY(address_error_trap_handler) | 268 | ENTRY(address_error_trap_handler) |
269 | mov r15,r4 ! regs | 269 | mov r15,r4 ! regs |
270 | add #4,r4 | ||
271 | mov #OFF_PC,r0 | 270 | mov #OFF_PC,r0 |
272 | mov.l @(r0,r15),r6 ! pc | 271 | mov.l @(r0,r15),r6 ! pc |
273 | mov.l 1f,r0 | 272 | mov.l 1f,r0 |
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 94075e1a1e61..5d039d168f57 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -179,7 +179,7 @@ void smp_send_stop(void) | |||
179 | } | 179 | } |
180 | 180 | ||
181 | struct smp_fn_call_struct smp_fn_call = { | 181 | struct smp_fn_call_struct smp_fn_call = { |
182 | .lock = SPIN_LOCK_UNLOCKED, | 182 | .lock = __SPIN_LOCK_UNLOCKED(smp_fn_call.lock), |
183 | .finished = ATOMIC_INIT(0), | 183 | .finished = ATOMIC_INIT(0), |
184 | }; | 184 | }; |
185 | 185 | ||
diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c index 28c187c5d9fd..f5b608bbe8af 100644 --- a/arch/sparc/kernel/sys_sunos.c +++ b/arch/sparc/kernel/sys_sunos.c | |||
@@ -659,7 +659,7 @@ sunos_nfs_get_server_fd (int fd, struct sockaddr_in *addr) | |||
659 | 659 | ||
660 | socket = SOCKET_I(inode); | 660 | socket = SOCKET_I(inode); |
661 | local.sin_family = AF_INET; | 661 | local.sin_family = AF_INET; |
662 | local.sin_addr.s_addr = INADDR_ANY; | 662 | local.sin_addr.s_addr = htonl(INADDR_ANY); |
663 | 663 | ||
664 | /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */ | 664 | /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */ |
665 | try_port = 1024; | 665 | try_port = 1024; |
diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c index cfc22d3fe54c..e91194fe39d7 100644 --- a/arch/sparc64/kernel/sys_sunos32.c +++ b/arch/sparc64/kernel/sys_sunos32.c | |||
@@ -618,7 +618,7 @@ sunos_nfs_get_server_fd (int fd, struct sockaddr_in *addr) | |||
618 | 618 | ||
619 | socket = SOCKET_I(inode); | 619 | socket = SOCKET_I(inode); |
620 | local.sin_family = AF_INET; | 620 | local.sin_family = AF_INET; |
621 | local.sin_addr.s_addr = INADDR_ANY; | 621 | local.sin_addr.s_addr = htonl(INADDR_ANY); |
622 | 622 | ||
623 | /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */ | 623 | /* IPPORT_RESERVED = 1024, can't find the definition in the kernel */ |
624 | try_port = 1024; | 624 | try_port = 1024; |
diff --git a/arch/x86/kernel/aperture_64.c b/arch/x86/kernel/aperture_64.c index 608152a2a05e..00df126169b4 100644 --- a/arch/x86/kernel/aperture_64.c +++ b/arch/x86/kernel/aperture_64.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <linux/pci.h> | 18 | #include <linux/pci.h> |
19 | #include <linux/bitops.h> | 19 | #include <linux/bitops.h> |
20 | #include <linux/ioport.h> | 20 | #include <linux/ioport.h> |
21 | #include <linux/suspend.h> | ||
21 | #include <asm/e820.h> | 22 | #include <asm/e820.h> |
22 | #include <asm/io.h> | 23 | #include <asm/io.h> |
23 | #include <asm/gart.h> | 24 | #include <asm/gart.h> |
@@ -76,6 +77,8 @@ static u32 __init allocate_aperture(void) | |||
76 | printk(KERN_INFO "Mapping aperture over %d KB of RAM @ %lx\n", | 77 | printk(KERN_INFO "Mapping aperture over %d KB of RAM @ %lx\n", |
77 | aper_size >> 10, __pa(p)); | 78 | aper_size >> 10, __pa(p)); |
78 | insert_aperture_resource((u32)__pa(p), aper_size); | 79 | insert_aperture_resource((u32)__pa(p), aper_size); |
80 | register_nosave_region((u32)__pa(p) >> PAGE_SHIFT, | ||
81 | (u32)__pa(p+aper_size) >> PAGE_SHIFT); | ||
79 | 82 | ||
80 | return (u32)__pa(p); | 83 | return (u32)__pa(p); |
81 | } | 84 | } |
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c index be83336fddba..a6450b3ae759 100644 --- a/arch/x86/kernel/cpu/mtrr/main.c +++ b/arch/x86/kernel/cpu/mtrr/main.c | |||
@@ -711,7 +711,8 @@ int __init mtrr_trim_uncached_memory(unsigned long end_pfn) | |||
711 | trim_size = end_pfn; | 711 | trim_size = end_pfn; |
712 | trim_size <<= PAGE_SHIFT; | 712 | trim_size <<= PAGE_SHIFT; |
713 | trim_size -= trim_start; | 713 | trim_size -= trim_start; |
714 | add_memory_region(trim_start, trim_size, E820_RESERVED); | 714 | update_memory_range(trim_start, trim_size, E820_RAM, |
715 | E820_RESERVED); | ||
715 | update_e820(); | 716 | update_e820(); |
716 | return 1; | 717 | return 1; |
717 | } | 718 | } |
diff --git a/arch/x86/kernel/e820_32.c b/arch/x86/kernel/e820_32.c index 4e16ef4a2659..80444c5c9b14 100644 --- a/arch/x86/kernel/e820_32.c +++ b/arch/x86/kernel/e820_32.c | |||
@@ -749,6 +749,32 @@ static int __init parse_memmap(char *arg) | |||
749 | return 0; | 749 | return 0; |
750 | } | 750 | } |
751 | early_param("memmap", parse_memmap); | 751 | early_param("memmap", parse_memmap); |
752 | void __init update_memory_range(u64 start, u64 size, unsigned old_type, | ||
753 | unsigned new_type) | ||
754 | { | ||
755 | int i; | ||
756 | |||
757 | BUG_ON(old_type == new_type); | ||
758 | |||
759 | for (i = 0; i < e820.nr_map; i++) { | ||
760 | struct e820entry *ei = &e820.map[i]; | ||
761 | u64 final_start, final_end; | ||
762 | if (ei->type != old_type) | ||
763 | continue; | ||
764 | /* totally covered? */ | ||
765 | if (ei->addr >= start && ei->size <= size) { | ||
766 | ei->type = new_type; | ||
767 | continue; | ||
768 | } | ||
769 | /* partially covered */ | ||
770 | final_start = max(start, ei->addr); | ||
771 | final_end = min(start + size, ei->addr + ei->size); | ||
772 | if (final_start >= final_end) | ||
773 | continue; | ||
774 | add_memory_region(final_start, final_end - final_start, | ||
775 | new_type); | ||
776 | } | ||
777 | } | ||
752 | void __init update_e820(void) | 778 | void __init update_e820(void) |
753 | { | 779 | { |
754 | u8 nr_map; | 780 | u8 nr_map; |
diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c index 9f65b4cc323c..9be697126013 100644 --- a/arch/x86/kernel/e820_64.c +++ b/arch/x86/kernel/e820_64.c | |||
@@ -744,6 +744,33 @@ void __init finish_e820_parsing(void) | |||
744 | } | 744 | } |
745 | } | 745 | } |
746 | 746 | ||
747 | void __init update_memory_range(u64 start, u64 size, unsigned old_type, | ||
748 | unsigned new_type) | ||
749 | { | ||
750 | int i; | ||
751 | |||
752 | BUG_ON(old_type == new_type); | ||
753 | |||
754 | for (i = 0; i < e820.nr_map; i++) { | ||
755 | struct e820entry *ei = &e820.map[i]; | ||
756 | u64 final_start, final_end; | ||
757 | if (ei->type != old_type) | ||
758 | continue; | ||
759 | /* totally covered? */ | ||
760 | if (ei->addr >= start && ei->size <= size) { | ||
761 | ei->type = new_type; | ||
762 | continue; | ||
763 | } | ||
764 | /* partially covered */ | ||
765 | final_start = max(start, ei->addr); | ||
766 | final_end = min(start + size, ei->addr + ei->size); | ||
767 | if (final_start >= final_end) | ||
768 | continue; | ||
769 | add_memory_region(final_start, final_end - final_start, | ||
770 | new_type); | ||
771 | } | ||
772 | } | ||
773 | |||
747 | void __init update_e820(void) | 774 | void __init update_e820(void) |
748 | { | 775 | { |
749 | u8 nr_map; | 776 | u8 nr_map; |
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index fd8ca53943a8..74d87ea85b5c 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S | |||
@@ -657,7 +657,7 @@ int_msg: | |||
657 | .asciz "Unknown interrupt or fault at EIP %p %p %p\n" | 657 | .asciz "Unknown interrupt or fault at EIP %p %p %p\n" |
658 | 658 | ||
659 | fault_msg: | 659 | fault_msg: |
660 | .ascii \ | 660 | .asciz \ |
661 | /* fault info: */ "BUG: Int %d: CR2 %p\n" \ | 661 | /* fault info: */ "BUG: Int %d: CR2 %p\n" \ |
662 | /* pusha regs: */ " EDI %p ESI %p EBP %p ESP %p\n" \ | 662 | /* pusha regs: */ " EDI %p ESI %p EBP %p ESP %p\n" \ |
663 | " EBX %p EDX %p ECX %p EAX %p\n" \ | 663 | " EBX %p EDX %p ECX %p EAX %p\n" \ |
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c index a82473d192a3..375cb2bc45be 100644 --- a/arch/x86/kernel/pci-dma_64.c +++ b/arch/x86/kernel/pci-dma_64.c | |||
@@ -53,11 +53,6 @@ dma_alloc_pages(struct device *dev, gfp_t gfp, unsigned order) | |||
53 | int node; | 53 | int node; |
54 | 54 | ||
55 | node = dev_to_node(dev); | 55 | node = dev_to_node(dev); |
56 | if (node == -1) | ||
57 | node = numa_node_id(); | ||
58 | |||
59 | if (node < first_node(node_online_map)) | ||
60 | node = first_node(node_online_map); | ||
61 | 56 | ||
62 | page = alloc_pages_node(node, gfp, order); | 57 | page = alloc_pages_node(node, gfp, order); |
63 | return page ? page_address(page) : NULL; | 58 | return page ? page_address(page) : NULL; |
diff --git a/arch/x86/kernel/quirks.c b/arch/x86/kernel/quirks.c index c47208fc5932..d89a648fe710 100644 --- a/arch/x86/kernel/quirks.c +++ b/arch/x86/kernel/quirks.c | |||
@@ -363,6 +363,8 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0051, | |||
363 | nvidia_force_enable_hpet); | 363 | nvidia_force_enable_hpet); |
364 | 364 | ||
365 | /* LPC bridges */ | 365 | /* LPC bridges */ |
366 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0260, | ||
367 | nvidia_force_enable_hpet); | ||
366 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0360, | 368 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0360, |
367 | nvidia_force_enable_hpet); | 369 | nvidia_force_enable_hpet); |
368 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0361, | 370 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NVIDIA, 0x0361, |
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 55ceb8cdef75..484c4a80d38a 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c | |||
@@ -152,6 +152,24 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { | |||
152 | DMI_MATCH(DMI_BOARD_NAME, "0WF810"), | 152 | DMI_MATCH(DMI_BOARD_NAME, "0WF810"), |
153 | }, | 153 | }, |
154 | }, | 154 | }, |
155 | { /* Handle problems with rebooting on Dell Optiplex 745's DFF*/ | ||
156 | .callback = set_bios_reboot, | ||
157 | .ident = "Dell OptiPlex 745", | ||
158 | .matches = { | ||
159 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
160 | DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"), | ||
161 | DMI_MATCH(DMI_BOARD_NAME, "0MM599"), | ||
162 | }, | ||
163 | }, | ||
164 | { /* Handle problems with rebooting on Dell Optiplex 745 with 0KW626 */ | ||
165 | .callback = set_bios_reboot, | ||
166 | .ident = "Dell OptiPlex 745", | ||
167 | .matches = { | ||
168 | DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."), | ||
169 | DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 745"), | ||
170 | DMI_MATCH(DMI_BOARD_NAME, "0KW626"), | ||
171 | }, | ||
172 | }, | ||
155 | { /* Handle problems with rebooting on Dell 2400's */ | 173 | { /* Handle problems with rebooting on Dell 2400's */ |
156 | .callback = set_bios_reboot, | 174 | .callback = set_bios_reboot, |
157 | .ident = "Dell PowerEdge 2400", | 175 | .ident = "Dell PowerEdge 2400", |
diff --git a/arch/x86/kernel/setup64.c b/arch/x86/kernel/setup64.c index 309366f8f603..e24c45677094 100644 --- a/arch/x86/kernel/setup64.c +++ b/arch/x86/kernel/setup64.c | |||
@@ -142,14 +142,16 @@ void __init setup_per_cpu_areas(void) | |||
142 | printk(KERN_INFO "PERCPU: Allocating %lu bytes of per cpu data\n", size); | 142 | printk(KERN_INFO "PERCPU: Allocating %lu bytes of per cpu data\n", size); |
143 | for_each_cpu_mask (i, cpu_possible_map) { | 143 | for_each_cpu_mask (i, cpu_possible_map) { |
144 | char *ptr; | 144 | char *ptr; |
145 | #ifndef CONFIG_NEED_MULTIPLE_NODES | ||
146 | ptr = alloc_bootmem_pages(size); | ||
147 | #else | ||
148 | int node = early_cpu_to_node(i); | ||
145 | 149 | ||
146 | if (!NODE_DATA(early_cpu_to_node(i))) { | 150 | if (!node_online(node) || !NODE_DATA(node)) |
147 | printk("cpu with no node %d, num_online_nodes %d\n", | ||
148 | i, num_online_nodes()); | ||
149 | ptr = alloc_bootmem_pages(size); | 151 | ptr = alloc_bootmem_pages(size); |
150 | } else { | 152 | else |
151 | ptr = alloc_bootmem_pages_node(NODE_DATA(early_cpu_to_node(i)), size); | 153 | ptr = alloc_bootmem_pages_node(NODE_DATA(node), size); |
152 | } | 154 | #endif |
153 | if (!ptr) | 155 | if (!ptr) |
154 | panic("Cannot allocate cpu data for CPU %d\n", i); | 156 | panic("Cannot allocate cpu data for CPU %d\n", i); |
155 | cpu_pda(i)->data_offset = ptr - __per_cpu_start; | 157 | cpu_pda(i)->data_offset = ptr - __per_cpu_start; |
diff --git a/arch/x86/mach-visws/traps.c b/arch/x86/mach-visws/traps.c index 843b67acf43b..bfac6ba10f8a 100644 --- a/arch/x86/mach-visws/traps.c +++ b/arch/x86/mach-visws/traps.c | |||
@@ -46,8 +46,9 @@ static __init void cobalt_init(void) | |||
46 | */ | 46 | */ |
47 | set_fixmap(FIX_APIC_BASE, APIC_DEFAULT_PHYS_BASE); | 47 | set_fixmap(FIX_APIC_BASE, APIC_DEFAULT_PHYS_BASE); |
48 | setup_local_APIC(); | 48 | setup_local_APIC(); |
49 | printk(KERN_INFO "Local APIC Version %#lx, ID %#lx\n", | 49 | printk(KERN_INFO "Local APIC Version %#x, ID %#x\n", |
50 | apic_read(APIC_LVR), apic_read(APIC_ID)); | 50 | (unsigned int)apic_read(APIC_LVR), |
51 | (unsigned int)apic_read(APIC_ID)); | ||
51 | 52 | ||
52 | set_fixmap(FIX_CO_CPU, CO_CPU_PHYS); | 53 | set_fixmap(FIX_CO_CPU, CO_CPU_PHYS); |
53 | set_fixmap(FIX_CO_APIC, CO_APIC_PHYS); | 54 | set_fixmap(FIX_CO_APIC, CO_APIC_PHYS); |
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c index 8ccfee10f5b5..16b82ad34b96 100644 --- a/arch/x86/mm/numa_64.c +++ b/arch/x86/mm/numa_64.c | |||
@@ -221,8 +221,7 @@ void __init setup_node_bootmem(int nodeid, unsigned long start, | |||
221 | bootmap_pages<<PAGE_SHIFT, PAGE_SIZE); | 221 | bootmap_pages<<PAGE_SHIFT, PAGE_SIZE); |
222 | if (bootmap == NULL) { | 222 | if (bootmap == NULL) { |
223 | if (nodedata_phys < start || nodedata_phys >= end) | 223 | if (nodedata_phys < start || nodedata_phys >= end) |
224 | free_bootmem((unsigned long)node_data[nodeid], | 224 | free_bootmem(nodedata_phys, pgdat_size); |
225 | pgdat_size); | ||
226 | node_data[nodeid] = NULL; | 225 | node_data[nodeid] = NULL; |
227 | return; | 226 | return; |
228 | } | 227 | } |
diff --git a/crypto/async_tx/async_xor.c b/crypto/async_tx/async_xor.c index 7a9db353f198..1c445c7bdab7 100644 --- a/crypto/async_tx/async_xor.c +++ b/crypto/async_tx/async_xor.c | |||
@@ -271,7 +271,7 @@ async_xor_zero_sum(struct page *dest, struct page **src_list, | |||
271 | 271 | ||
272 | BUG_ON(src_cnt <= 1); | 272 | BUG_ON(src_cnt <= 1); |
273 | 273 | ||
274 | if (device) { | 274 | if (device && src_cnt <= device->max_xor) { |
275 | dma_addr_t *dma_src = (dma_addr_t *) src_list; | 275 | dma_addr_t *dma_src = (dma_addr_t *) 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; |
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index fbcaa069be86..b4f5e8542829 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig | |||
@@ -300,17 +300,6 @@ config ACPI_CUSTOM_DSDT | |||
300 | bool | 300 | bool |
301 | default ACPI_CUSTOM_DSDT_FILE != "" | 301 | default ACPI_CUSTOM_DSDT_FILE != "" |
302 | 302 | ||
303 | config ACPI_CUSTOM_DSDT_INITRD | ||
304 | bool "Read Custom DSDT from initramfs" | ||
305 | depends on BLK_DEV_INITRD | ||
306 | default n | ||
307 | help | ||
308 | This option supports a custom DSDT by optionally loading it from initrd. | ||
309 | See Documentation/acpi/dsdt-override.txt | ||
310 | |||
311 | If you are not using this feature now, but may use it later, | ||
312 | it is safe to say Y here. | ||
313 | |||
314 | config ACPI_BLACKLIST_YEAR | 303 | config ACPI_BLACKLIST_YEAR |
315 | int "Disable ACPI for systems before Jan 1st this year" if X86_32 | 304 | int "Disable ACPI for systems before Jan 1st this year" if X86_32 |
316 | default 0 | 305 | default 0 |
diff --git a/drivers/acpi/asus_acpi.c b/drivers/acpi/asus_acpi.c index d25ef961415c..44ad90c03c2e 100644 --- a/drivers/acpi/asus_acpi.c +++ b/drivers/acpi/asus_acpi.c | |||
@@ -610,7 +610,7 @@ write_led(const char __user * buffer, unsigned long count, | |||
610 | (led_out) ? (hotk->status | ledmask) : (hotk->status & ~ledmask); | 610 | (led_out) ? (hotk->status | ledmask) : (hotk->status & ~ledmask); |
611 | 611 | ||
612 | if (invert) /* invert target value */ | 612 | if (invert) /* invert target value */ |
613 | led_out = !led_out & 0x1; | 613 | led_out = !led_out; |
614 | 614 | ||
615 | if (!write_acpi_int(hotk->handle, ledname, led_out, NULL)) | 615 | if (!write_acpi_int(hotk->handle, ledname, led_out, NULL)) |
616 | printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n", | 616 | printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n", |
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index f6215e809808..d5729d5dc190 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c | |||
@@ -293,13 +293,12 @@ static int extract_package(struct acpi_battery *battery, | |||
293 | strncpy(ptr, (u8 *)&element->integer.value, | 293 | strncpy(ptr, (u8 *)&element->integer.value, |
294 | sizeof(acpi_integer)); | 294 | sizeof(acpi_integer)); |
295 | ptr[sizeof(acpi_integer)] = 0; | 295 | ptr[sizeof(acpi_integer)] = 0; |
296 | } else return -EFAULT; | 296 | } else |
297 | *ptr = 0; /* don't have value */ | ||
297 | } else { | 298 | } else { |
298 | if (element->type == ACPI_TYPE_INTEGER) { | 299 | int *x = (int *)((u8 *)battery + offsets[i].offset); |
299 | int *x = (int *)((u8 *)battery + | 300 | *x = (element->type == ACPI_TYPE_INTEGER) ? |
300 | offsets[i].offset); | 301 | element->integer.value : -1; |
301 | *x = element->integer.value; | ||
302 | } else return -EFAULT; | ||
303 | } | 302 | } |
304 | } | 303 | } |
305 | return 0; | 304 | return 0; |
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c index 307cef65c247..fa44fb96fc34 100644 --- a/drivers/acpi/dock.c +++ b/drivers/acpi/dock.c | |||
@@ -710,6 +710,7 @@ static ssize_t write_undock(struct device *dev, struct device_attribute *attr, | |||
710 | if (!count) | 710 | if (!count) |
711 | return -EINVAL; | 711 | return -EINVAL; |
712 | 712 | ||
713 | begin_undock(dock_station); | ||
713 | ret = handle_eject_request(dock_station, ACPI_NOTIFY_EJECT_REQUEST); | 714 | ret = handle_eject_request(dock_station, ACPI_NOTIFY_EJECT_REQUEST); |
714 | return ret ? ret: count; | 715 | return ret ? ret: count; |
715 | } | 716 | } |
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index e7e197e3a4ff..7222a18a0319 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
@@ -129,7 +129,6 @@ 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; | ||
133 | u8 handlers_installed; | 132 | u8 handlers_installed; |
134 | } *boot_ec, *first_ec; | 133 | } *boot_ec, *first_ec; |
135 | 134 | ||
@@ -182,8 +181,6 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll) | |||
182 | { | 181 | { |
183 | int ret = 0; | 182 | int ret = 0; |
184 | 183 | ||
185 | atomic_set(&ec->irq_count, 0); | ||
186 | |||
187 | if (unlikely(event == ACPI_EC_EVENT_OBF_1 && | 184 | if (unlikely(event == ACPI_EC_EVENT_OBF_1 && |
188 | test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags))) | 185 | test_bit(EC_FLAGS_NO_OBF1_GPE, &ec->flags))) |
189 | force_poll = 1; | 186 | force_poll = 1; |
@@ -230,7 +227,6 @@ static int acpi_ec_wait(struct acpi_ec *ec, enum ec_event event, int force_poll) | |||
230 | while (time_before(jiffies, delay)) { | 227 | while (time_before(jiffies, delay)) { |
231 | if (acpi_ec_check_status(ec, event)) | 228 | if (acpi_ec_check_status(ec, event)) |
232 | goto end; | 229 | goto end; |
233 | msleep(5); | ||
234 | } | 230 | } |
235 | } | 231 | } |
236 | pr_err(PREFIX "acpi_ec_wait timeout," | 232 | pr_err(PREFIX "acpi_ec_wait timeout," |
@@ -533,13 +529,6 @@ static u32 acpi_ec_gpe_handler(void *data) | |||
533 | struct acpi_ec *ec = data; | 529 | struct acpi_ec *ec = data; |
534 | 530 | ||
535 | pr_debug(PREFIX "~~~> interrupt\n"); | 531 | 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 | } | ||
543 | clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags); | 532 | clear_bit(EC_FLAGS_WAIT_GPE, &ec->flags); |
544 | if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) | 533 | if (test_bit(EC_FLAGS_GPE_MODE, &ec->flags)) |
545 | wake_up(&ec->wait); | 534 | wake_up(&ec->wait); |
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c index 065819ba87c7..a697fb6cf050 100644 --- a/drivers/acpi/osl.c +++ b/drivers/acpi/osl.c | |||
@@ -91,10 +91,6 @@ static DEFINE_SPINLOCK(acpi_res_lock); | |||
91 | #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ | 91 | #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ |
92 | static char osi_additional_string[OSI_STRING_LENGTH_MAX]; | 92 | static char osi_additional_string[OSI_STRING_LENGTH_MAX]; |
93 | 93 | ||
94 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
95 | static int acpi_no_initrd_override; | ||
96 | #endif | ||
97 | |||
98 | /* | 94 | /* |
99 | * "Ode to _OSI(Linux)" | 95 | * "Ode to _OSI(Linux)" |
100 | * | 96 | * |
@@ -324,67 +320,6 @@ acpi_os_predefined_override(const struct acpi_predefined_names *init_val, | |||
324 | return AE_OK; | 320 | return AE_OK; |
325 | } | 321 | } |
326 | 322 | ||
327 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
328 | static struct acpi_table_header *acpi_find_dsdt_initrd(void) | ||
329 | { | ||
330 | struct file *firmware_file; | ||
331 | mm_segment_t oldfs; | ||
332 | unsigned long len, len2; | ||
333 | struct acpi_table_header *dsdt_buffer, *ret = NULL; | ||
334 | struct kstat stat; | ||
335 | char *ramfs_dsdt_name = "/DSDT.aml"; | ||
336 | |||
337 | printk(KERN_INFO PREFIX "Checking initramfs for custom DSDT\n"); | ||
338 | |||
339 | /* | ||
340 | * Never do this at home, only the user-space is allowed to open a file. | ||
341 | * The clean way would be to use the firmware loader. | ||
342 | * But this code must be run before there is any userspace available. | ||
343 | * A static/init firmware infrastructure doesn't exist yet... | ||
344 | */ | ||
345 | if (vfs_stat(ramfs_dsdt_name, &stat) < 0) | ||
346 | return ret; | ||
347 | |||
348 | len = stat.size; | ||
349 | /* check especially against empty files */ | ||
350 | if (len <= 4) { | ||
351 | printk(KERN_ERR PREFIX "Failed: DSDT only %lu bytes.\n", len); | ||
352 | return ret; | ||
353 | } | ||
354 | |||
355 | firmware_file = filp_open(ramfs_dsdt_name, O_RDONLY, 0); | ||
356 | if (IS_ERR(firmware_file)) { | ||
357 | printk(KERN_ERR PREFIX "Failed to open %s.\n", ramfs_dsdt_name); | ||
358 | return ret; | ||
359 | } | ||
360 | |||
361 | dsdt_buffer = kmalloc(len, GFP_ATOMIC); | ||
362 | if (!dsdt_buffer) { | ||
363 | printk(KERN_ERR PREFIX "Failed to allocate %lu bytes.\n", len); | ||
364 | goto err; | ||
365 | } | ||
366 | |||
367 | oldfs = get_fs(); | ||
368 | set_fs(KERNEL_DS); | ||
369 | len2 = vfs_read(firmware_file, (char __user *)dsdt_buffer, len, | ||
370 | &firmware_file->f_pos); | ||
371 | set_fs(oldfs); | ||
372 | if (len2 < len) { | ||
373 | printk(KERN_ERR PREFIX "Failed to read %lu bytes from %s.\n", | ||
374 | len, ramfs_dsdt_name); | ||
375 | ACPI_FREE(dsdt_buffer); | ||
376 | goto err; | ||
377 | } | ||
378 | |||
379 | printk(KERN_INFO PREFIX "Found %lu byte DSDT in %s.\n", | ||
380 | len, ramfs_dsdt_name); | ||
381 | ret = dsdt_buffer; | ||
382 | err: | ||
383 | filp_close(firmware_file, NULL); | ||
384 | return ret; | ||
385 | } | ||
386 | #endif | ||
387 | |||
388 | acpi_status | 323 | acpi_status |
389 | acpi_os_table_override(struct acpi_table_header * existing_table, | 324 | acpi_os_table_override(struct acpi_table_header * existing_table, |
390 | struct acpi_table_header ** new_table) | 325 | struct acpi_table_header ** new_table) |
@@ -398,16 +333,6 @@ acpi_os_table_override(struct acpi_table_header * existing_table, | |||
398 | if (strncmp(existing_table->signature, "DSDT", 4) == 0) | 333 | if (strncmp(existing_table->signature, "DSDT", 4) == 0) |
399 | *new_table = (struct acpi_table_header *)AmlCode; | 334 | *new_table = (struct acpi_table_header *)AmlCode; |
400 | #endif | 335 | #endif |
401 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
402 | if ((strncmp(existing_table->signature, "DSDT", 4) == 0) && | ||
403 | !acpi_no_initrd_override) { | ||
404 | struct acpi_table_header *initrd_table; | ||
405 | |||
406 | initrd_table = acpi_find_dsdt_initrd(); | ||
407 | if (initrd_table) | ||
408 | *new_table = initrd_table; | ||
409 | } | ||
410 | #endif | ||
411 | if (*new_table != NULL) { | 336 | if (*new_table != NULL) { |
412 | printk(KERN_WARNING PREFIX "Override [%4.4s-%8.8s], " | 337 | printk(KERN_WARNING PREFIX "Override [%4.4s-%8.8s], " |
413 | "this is unsafe: tainting kernel\n", | 338 | "this is unsafe: tainting kernel\n", |
@@ -418,15 +343,6 @@ acpi_os_table_override(struct acpi_table_header * existing_table, | |||
418 | return AE_OK; | 343 | return AE_OK; |
419 | } | 344 | } |
420 | 345 | ||
421 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
422 | static int __init acpi_no_initrd_override_setup(char *s) | ||
423 | { | ||
424 | acpi_no_initrd_override = 1; | ||
425 | return 1; | ||
426 | } | ||
427 | __setup("acpi_no_initrd_override", acpi_no_initrd_override_setup); | ||
428 | #endif | ||
429 | |||
430 | static irqreturn_t acpi_irq(int irq, void *dev_id) | 346 | static irqreturn_t acpi_irq(int irq, void *dev_id) |
431 | { | 347 | { |
432 | u32 handled; | 348 | u32 handled; |
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c index 6f3b217699e9..e8e2d8869236 100644 --- a/drivers/acpi/processor_idle.c +++ b/drivers/acpi/processor_idle.c | |||
@@ -216,8 +216,10 @@ static void acpi_safe_halt(void) | |||
216 | * test NEED_RESCHED: | 216 | * test NEED_RESCHED: |
217 | */ | 217 | */ |
218 | smp_mb(); | 218 | smp_mb(); |
219 | if (!need_resched()) | 219 | if (!need_resched()) { |
220 | safe_halt(); | 220 | safe_halt(); |
221 | local_irq_disable(); | ||
222 | } | ||
221 | current_thread_info()->status |= TS_POLLING; | 223 | current_thread_info()->status |= TS_POLLING; |
222 | } | 224 | } |
223 | 225 | ||
@@ -421,7 +423,9 @@ static void acpi_processor_idle(void) | |||
421 | else | 423 | else |
422 | acpi_safe_halt(); | 424 | acpi_safe_halt(); |
423 | 425 | ||
424 | local_irq_enable(); | 426 | if (irqs_disabled()) |
427 | local_irq_enable(); | ||
428 | |||
425 | return; | 429 | return; |
426 | } | 430 | } |
427 | 431 | ||
@@ -530,7 +534,9 @@ static void acpi_processor_idle(void) | |||
530 | * skew otherwise. | 534 | * skew otherwise. |
531 | */ | 535 | */ |
532 | sleep_ticks = 0xFFFFFFFF; | 536 | sleep_ticks = 0xFFFFFFFF; |
533 | local_irq_enable(); | 537 | if (irqs_disabled()) |
538 | local_irq_enable(); | ||
539 | |||
534 | break; | 540 | break; |
535 | 541 | ||
536 | case ACPI_STATE_C2: | 542 | case ACPI_STATE_C2: |
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index 1bc0c74f2755..12fb44f16766 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
@@ -807,40 +807,11 @@ static void acpi_video_bus_find_cap(struct acpi_video_bus *video) | |||
807 | static int acpi_video_bus_check(struct acpi_video_bus *video) | 807 | static int acpi_video_bus_check(struct acpi_video_bus *video) |
808 | { | 808 | { |
809 | acpi_status status = -ENOENT; | 809 | acpi_status status = -ENOENT; |
810 | long device_id; | 810 | |
811 | struct device *dev; | ||
812 | struct acpi_device *device; | ||
813 | 811 | ||
814 | if (!video) | 812 | if (!video) |
815 | return -EINVAL; | 813 | return -EINVAL; |
816 | 814 | ||
817 | device = video->device; | ||
818 | |||
819 | status = | ||
820 | acpi_evaluate_integer(device->handle, "_ADR", NULL, &device_id); | ||
821 | |||
822 | if (!ACPI_SUCCESS(status)) | ||
823 | return -ENODEV; | ||
824 | |||
825 | /* We need to attempt to determine whether the _ADR refers to a | ||
826 | PCI device or not. There's no terribly good way to do this, | ||
827 | so the best we can hope for is to assume that there'll never | ||
828 | be a video device in the host bridge */ | ||
829 | if (device_id >= 0x10000) { | ||
830 | /* It looks like a PCI device. Does it exist? */ | ||
831 | dev = acpi_get_physical_device(device->handle); | ||
832 | } else { | ||
833 | /* It doesn't look like a PCI device. Does its parent | ||
834 | exist? */ | ||
835 | acpi_handle phandle; | ||
836 | if (acpi_get_parent(device->handle, &phandle)) | ||
837 | return -ENODEV; | ||
838 | dev = acpi_get_physical_device(phandle); | ||
839 | } | ||
840 | if (!dev) | ||
841 | return -ENODEV; | ||
842 | put_device(dev); | ||
843 | |||
844 | /* Since there is no HID, CID and so on for VGA driver, we have | 815 | /* Since there is no HID, CID and so on for VGA driver, we have |
845 | * to check well known required nodes. | 816 | * to check well known required nodes. |
846 | */ | 817 | */ |
@@ -1366,37 +1337,8 @@ acpi_video_bus_write_DOS(struct file *file, | |||
1366 | 1337 | ||
1367 | static int acpi_video_bus_add_fs(struct acpi_device *device) | 1338 | static int acpi_video_bus_add_fs(struct acpi_device *device) |
1368 | { | 1339 | { |
1369 | long device_id; | ||
1370 | int status; | ||
1371 | struct proc_dir_entry *entry = NULL; | 1340 | struct proc_dir_entry *entry = NULL; |
1372 | struct acpi_video_bus *video; | 1341 | struct acpi_video_bus *video; |
1373 | struct device *dev; | ||
1374 | |||
1375 | status = | ||
1376 | acpi_evaluate_integer(device->handle, "_ADR", NULL, &device_id); | ||
1377 | |||
1378 | if (!ACPI_SUCCESS(status)) | ||
1379 | return -ENODEV; | ||
1380 | |||
1381 | /* We need to attempt to determine whether the _ADR refers to a | ||
1382 | PCI device or not. There's no terribly good way to do this, | ||
1383 | so the best we can hope for is to assume that there'll never | ||
1384 | be a video device in the host bridge */ | ||
1385 | if (device_id >= 0x10000) { | ||
1386 | /* It looks like a PCI device. Does it exist? */ | ||
1387 | dev = acpi_get_physical_device(device->handle); | ||
1388 | } else { | ||
1389 | /* It doesn't look like a PCI device. Does its parent | ||
1390 | exist? */ | ||
1391 | acpi_handle phandle; | ||
1392 | if (acpi_get_parent(device->handle, &phandle)) | ||
1393 | return -ENODEV; | ||
1394 | dev = acpi_get_physical_device(phandle); | ||
1395 | } | ||
1396 | if (!dev) | ||
1397 | return -ENODEV; | ||
1398 | put_device(dev); | ||
1399 | |||
1400 | 1342 | ||
1401 | 1343 | ||
1402 | video = acpi_driver_data(device); | 1344 | video = acpi_driver_data(device); |
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig index e469647330de..25aba69b59b4 100644 --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig | |||
@@ -30,6 +30,7 @@ config ATA_NONSTANDARD | |||
30 | config ATA_ACPI | 30 | config ATA_ACPI |
31 | bool | 31 | bool |
32 | depends on ACPI && PCI | 32 | depends on ACPI && PCI |
33 | select ACPI_DOCK | ||
33 | default y | 34 | default y |
34 | help | 35 | help |
35 | This option adds support for ATA-related ACPI objects. | 36 | This option adds support for ATA-related ACPI objects. |
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c index 6978469eb16d..17ee6ed985d9 100644 --- a/drivers/ata/ahci.c +++ b/drivers/ata/ahci.c | |||
@@ -49,6 +49,10 @@ | |||
49 | #define DRV_NAME "ahci" | 49 | #define DRV_NAME "ahci" |
50 | #define DRV_VERSION "3.0" | 50 | #define DRV_VERSION "3.0" |
51 | 51 | ||
52 | static int ahci_skip_host_reset; | ||
53 | module_param_named(skip_host_reset, ahci_skip_host_reset, int, 0444); | ||
54 | MODULE_PARM_DESC(skip_host_reset, "skip global host reset (0=don't skip, 1=skip)"); | ||
55 | |||
52 | static int ahci_enable_alpm(struct ata_port *ap, | 56 | static int ahci_enable_alpm(struct ata_port *ap, |
53 | enum link_pm policy); | 57 | enum link_pm policy); |
54 | static void ahci_disable_alpm(struct ata_port *ap); | 58 | static void ahci_disable_alpm(struct ata_port *ap); |
@@ -587,6 +591,7 @@ static const struct pci_device_id ahci_pci_tbl[] = { | |||
587 | 591 | ||
588 | /* Marvell */ | 592 | /* Marvell */ |
589 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ | 593 | { PCI_VDEVICE(MARVELL, 0x6145), board_ahci_mv }, /* 6145 */ |
594 | { PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }, /* 6121 */ | ||
590 | 595 | ||
591 | /* Generic, PCI class code for AHCI */ | 596 | /* Generic, PCI class code for AHCI */ |
592 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, | 597 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, |
@@ -661,6 +666,7 @@ static void ahci_save_initial_config(struct pci_dev *pdev, | |||
661 | void __iomem *mmio = pcim_iomap_table(pdev)[AHCI_PCI_BAR]; | 666 | void __iomem *mmio = pcim_iomap_table(pdev)[AHCI_PCI_BAR]; |
662 | u32 cap, port_map; | 667 | u32 cap, port_map; |
663 | int i; | 668 | int i; |
669 | int mv; | ||
664 | 670 | ||
665 | /* make sure AHCI mode is enabled before accessing CAP */ | 671 | /* make sure AHCI mode is enabled before accessing CAP */ |
666 | ahci_enable_ahci(mmio); | 672 | ahci_enable_ahci(mmio); |
@@ -696,12 +702,16 @@ static void ahci_save_initial_config(struct pci_dev *pdev, | |||
696 | * presence register, as bit 4 (counting from 0) | 702 | * presence register, as bit 4 (counting from 0) |
697 | */ | 703 | */ |
698 | if (hpriv->flags & AHCI_HFLAG_MV_PATA) { | 704 | if (hpriv->flags & AHCI_HFLAG_MV_PATA) { |
705 | if (pdev->device == 0x6121) | ||
706 | mv = 0x3; | ||
707 | else | ||
708 | mv = 0xf; | ||
699 | dev_printk(KERN_ERR, &pdev->dev, | 709 | dev_printk(KERN_ERR, &pdev->dev, |
700 | "MV_AHCI HACK: port_map %x -> %x\n", | 710 | "MV_AHCI HACK: port_map %x -> %x\n", |
701 | hpriv->port_map, | 711 | port_map, |
702 | hpriv->port_map & 0xf); | 712 | port_map & mv); |
703 | 713 | ||
704 | port_map &= 0xf; | 714 | port_map &= mv; |
705 | } | 715 | } |
706 | 716 | ||
707 | /* cross check port_map and cap.n_ports */ | 717 | /* cross check port_map and cap.n_ports */ |
@@ -1088,29 +1098,35 @@ static int ahci_reset_controller(struct ata_host *host) | |||
1088 | ahci_enable_ahci(mmio); | 1098 | ahci_enable_ahci(mmio); |
1089 | 1099 | ||
1090 | /* global controller reset */ | 1100 | /* global controller reset */ |
1091 | tmp = readl(mmio + HOST_CTL); | 1101 | if (!ahci_skip_host_reset) { |
1092 | if ((tmp & HOST_RESET) == 0) { | 1102 | tmp = readl(mmio + HOST_CTL); |
1093 | writel(tmp | HOST_RESET, mmio + HOST_CTL); | 1103 | if ((tmp & HOST_RESET) == 0) { |
1094 | readl(mmio + HOST_CTL); /* flush */ | 1104 | writel(tmp | HOST_RESET, mmio + HOST_CTL); |
1095 | } | 1105 | readl(mmio + HOST_CTL); /* flush */ |
1106 | } | ||
1096 | 1107 | ||
1097 | /* reset must complete within 1 second, or | 1108 | /* reset must complete within 1 second, or |
1098 | * the hardware should be considered fried. | 1109 | * the hardware should be considered fried. |
1099 | */ | 1110 | */ |
1100 | ssleep(1); | 1111 | ssleep(1); |
1101 | 1112 | ||
1102 | tmp = readl(mmio + HOST_CTL); | 1113 | tmp = readl(mmio + HOST_CTL); |
1103 | if (tmp & HOST_RESET) { | 1114 | if (tmp & HOST_RESET) { |
1104 | dev_printk(KERN_ERR, host->dev, | 1115 | dev_printk(KERN_ERR, host->dev, |
1105 | "controller reset failed (0x%x)\n", tmp); | 1116 | "controller reset failed (0x%x)\n", tmp); |
1106 | return -EIO; | 1117 | return -EIO; |
1107 | } | 1118 | } |
1108 | 1119 | ||
1109 | /* turn on AHCI mode */ | 1120 | /* turn on AHCI mode */ |
1110 | ahci_enable_ahci(mmio); | 1121 | ahci_enable_ahci(mmio); |
1111 | 1122 | ||
1112 | /* some registers might be cleared on reset. restore initial values */ | 1123 | /* Some registers might be cleared on reset. Restore |
1113 | ahci_restore_initial_config(host); | 1124 | * initial values. |
1125 | */ | ||
1126 | ahci_restore_initial_config(host); | ||
1127 | } else | ||
1128 | dev_printk(KERN_INFO, host->dev, | ||
1129 | "skipping global host reset\n"); | ||
1114 | 1130 | ||
1115 | if (pdev->vendor == PCI_VENDOR_ID_INTEL) { | 1131 | if (pdev->vendor == PCI_VENDOR_ID_INTEL) { |
1116 | u16 tmp16; | 1132 | u16 tmp16; |
@@ -1162,9 +1178,14 @@ static void ahci_init_controller(struct ata_host *host) | |||
1162 | int i; | 1178 | int i; |
1163 | void __iomem *port_mmio; | 1179 | void __iomem *port_mmio; |
1164 | u32 tmp; | 1180 | u32 tmp; |
1181 | int mv; | ||
1165 | 1182 | ||
1166 | if (hpriv->flags & AHCI_HFLAG_MV_PATA) { | 1183 | if (hpriv->flags & AHCI_HFLAG_MV_PATA) { |
1167 | port_mmio = __ahci_port_base(host, 4); | 1184 | if (pdev->device == 0x6121) |
1185 | mv = 2; | ||
1186 | else | ||
1187 | mv = 4; | ||
1188 | port_mmio = __ahci_port_base(host, mv); | ||
1168 | 1189 | ||
1169 | writel(0, port_mmio + PORT_IRQ_MASK); | 1190 | writel(0, port_mmio + PORT_IRQ_MASK); |
1170 | 1191 | ||
@@ -2241,7 +2262,10 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
2241 | if (rc) | 2262 | if (rc) |
2242 | return rc; | 2263 | return rc; |
2243 | 2264 | ||
2244 | rc = pcim_iomap_regions(pdev, 1 << AHCI_PCI_BAR, DRV_NAME); | 2265 | /* AHCI controllers often implement SFF compatible interface. |
2266 | * Grab all PCI BARs just in case. | ||
2267 | */ | ||
2268 | rc = pcim_iomap_regions_request_all(pdev, 1 << AHCI_PCI_BAR, DRV_NAME); | ||
2245 | if (rc == -EBUSY) | 2269 | if (rc == -EBUSY) |
2246 | pcim_pin_device(pdev); | 2270 | pcim_pin_device(pdev); |
2247 | if (rc) | 2271 | if (rc) |
diff --git a/drivers/ata/libata-acpi.c b/drivers/ata/libata-acpi.c index 0770cb7391a4..bf98a566adac 100644 --- a/drivers/ata/libata-acpi.c +++ b/drivers/ata/libata-acpi.c | |||
@@ -118,45 +118,77 @@ static void ata_acpi_associate_ide_port(struct ata_port *ap) | |||
118 | ap->pflags |= ATA_PFLAG_INIT_GTM_VALID; | 118 | ap->pflags |= ATA_PFLAG_INIT_GTM_VALID; |
119 | } | 119 | } |
120 | 120 | ||
121 | static void ata_acpi_handle_hotplug(struct ata_port *ap, struct kobject *kobj, | 121 | static void ata_acpi_handle_hotplug(struct ata_port *ap, struct ata_device *dev, |
122 | u32 event) | 122 | u32 event) |
123 | { | 123 | { |
124 | char event_string[12]; | 124 | char event_string[12]; |
125 | char *envp[] = { event_string, NULL }; | 125 | char *envp[] = { event_string, NULL }; |
126 | struct ata_eh_info *ehi = &ap->link.eh_info; | 126 | struct ata_eh_info *ehi; |
127 | 127 | struct kobject *kobj = NULL; | |
128 | if (event == 0 || event == 1) { | 128 | int wait = 0; |
129 | unsigned long flags; | 129 | unsigned long flags; |
130 | spin_lock_irqsave(ap->lock, flags); | 130 | |
131 | ata_ehi_clear_desc(ehi); | 131 | if (!ap) |
132 | ata_ehi_push_desc(ehi, "ACPI event"); | 132 | ap = dev->link->ap; |
133 | ata_ehi_hotplugged(ehi); | 133 | ehi = &ap->link.eh_info; |
134 | ata_port_freeze(ap); | 134 | |
135 | spin_unlock_irqrestore(ap->lock, flags); | 135 | spin_lock_irqsave(ap->lock, flags); |
136 | |||
137 | switch (event) { | ||
138 | case ACPI_NOTIFY_BUS_CHECK: | ||
139 | case ACPI_NOTIFY_DEVICE_CHECK: | ||
140 | ata_ehi_push_desc(ehi, "ACPI event"); | ||
141 | ata_ehi_hotplugged(ehi); | ||
142 | ata_port_freeze(ap); | ||
143 | break; | ||
144 | |||
145 | case ACPI_NOTIFY_EJECT_REQUEST: | ||
146 | ata_ehi_push_desc(ehi, "ACPI event"); | ||
147 | if (dev) | ||
148 | dev->flags |= ATA_DFLAG_DETACH; | ||
149 | else { | ||
150 | struct ata_link *tlink; | ||
151 | struct ata_device *tdev; | ||
152 | |||
153 | ata_port_for_each_link(tlink, ap) | ||
154 | ata_link_for_each_dev(tdev, tlink) | ||
155 | tdev->flags |= ATA_DFLAG_DETACH; | ||
156 | } | ||
157 | |||
158 | ata_port_schedule_eh(ap); | ||
159 | wait = 1; | ||
160 | break; | ||
136 | } | 161 | } |
137 | 162 | ||
163 | if (dev) { | ||
164 | if (dev->sdev) | ||
165 | kobj = &dev->sdev->sdev_gendev.kobj; | ||
166 | } else | ||
167 | kobj = &ap->dev->kobj; | ||
168 | |||
138 | if (kobj) { | 169 | if (kobj) { |
139 | sprintf(event_string, "BAY_EVENT=%d", event); | 170 | sprintf(event_string, "BAY_EVENT=%d", event); |
140 | kobject_uevent_env(kobj, KOBJ_CHANGE, envp); | 171 | kobject_uevent_env(kobj, KOBJ_CHANGE, envp); |
141 | } | 172 | } |
173 | |||
174 | spin_unlock_irqrestore(ap->lock, flags); | ||
175 | |||
176 | if (wait) | ||
177 | ata_port_wait_eh(ap); | ||
142 | } | 178 | } |
143 | 179 | ||
144 | static void ata_acpi_dev_notify(acpi_handle handle, u32 event, void *data) | 180 | static void ata_acpi_dev_notify(acpi_handle handle, u32 event, void *data) |
145 | { | 181 | { |
146 | struct ata_device *dev = data; | 182 | struct ata_device *dev = data; |
147 | struct kobject *kobj = NULL; | ||
148 | 183 | ||
149 | if (dev->sdev) | 184 | ata_acpi_handle_hotplug(NULL, dev, event); |
150 | kobj = &dev->sdev->sdev_gendev.kobj; | ||
151 | |||
152 | ata_acpi_handle_hotplug(dev->link->ap, kobj, event); | ||
153 | } | 185 | } |
154 | 186 | ||
155 | static void ata_acpi_ap_notify(acpi_handle handle, u32 event, void *data) | 187 | static void ata_acpi_ap_notify(acpi_handle handle, u32 event, void *data) |
156 | { | 188 | { |
157 | struct ata_port *ap = data; | 189 | struct ata_port *ap = data; |
158 | 190 | ||
159 | ata_acpi_handle_hotplug(ap, &ap->dev->kobj, event); | 191 | ata_acpi_handle_hotplug(ap, NULL, event); |
160 | } | 192 | } |
161 | 193 | ||
162 | /** | 194 | /** |
@@ -191,20 +223,30 @@ void ata_acpi_associate(struct ata_host *host) | |||
191 | else | 223 | else |
192 | ata_acpi_associate_ide_port(ap); | 224 | ata_acpi_associate_ide_port(ap); |
193 | 225 | ||
194 | if (ap->acpi_handle) | 226 | if (ap->acpi_handle) { |
195 | acpi_install_notify_handler (ap->acpi_handle, | 227 | acpi_install_notify_handler(ap->acpi_handle, |
196 | ACPI_SYSTEM_NOTIFY, | 228 | ACPI_SYSTEM_NOTIFY, |
197 | ata_acpi_ap_notify, | 229 | ata_acpi_ap_notify, ap); |
198 | ap); | 230 | #if defined(CONFIG_ACPI_DOCK) || defined(CONFIG_ACPI_DOCK_MODULE) |
231 | /* we might be on a docking station */ | ||
232 | register_hotplug_dock_device(ap->acpi_handle, | ||
233 | ata_acpi_ap_notify, ap); | ||
234 | #endif | ||
235 | } | ||
199 | 236 | ||
200 | for (j = 0; j < ata_link_max_devices(&ap->link); j++) { | 237 | for (j = 0; j < ata_link_max_devices(&ap->link); j++) { |
201 | struct ata_device *dev = &ap->link.device[j]; | 238 | struct ata_device *dev = &ap->link.device[j]; |
202 | 239 | ||
203 | if (dev->acpi_handle) | 240 | if (dev->acpi_handle) { |
204 | acpi_install_notify_handler (dev->acpi_handle, | 241 | acpi_install_notify_handler(dev->acpi_handle, |
205 | ACPI_SYSTEM_NOTIFY, | 242 | ACPI_SYSTEM_NOTIFY, |
206 | ata_acpi_dev_notify, | 243 | ata_acpi_dev_notify, dev); |
207 | dev); | 244 | #if defined(CONFIG_ACPI_DOCK) || defined(CONFIG_ACPI_DOCK_MODULE) |
245 | /* we might be on a docking station */ | ||
246 | register_hotplug_dock_device(dev->acpi_handle, | ||
247 | ata_acpi_dev_notify, dev); | ||
248 | #endif | ||
249 | } | ||
208 | } | 250 | } |
209 | } | 251 | } |
210 | } | 252 | } |
diff --git a/drivers/ata/pata_ali.c b/drivers/ata/pata_ali.c index 7e68edf3c0f3..8786455c901d 100644 --- a/drivers/ata/pata_ali.c +++ b/drivers/ata/pata_ali.c | |||
@@ -295,7 +295,7 @@ static void ali_lock_sectors(struct ata_device *adev) | |||
295 | static int ali_check_atapi_dma(struct ata_queued_cmd *qc) | 295 | static int ali_check_atapi_dma(struct ata_queued_cmd *qc) |
296 | { | 296 | { |
297 | /* If its not a media command, its not worth it */ | 297 | /* If its not a media command, its not worth it */ |
298 | if (qc->nbytes < 2048) | 298 | if (atapi_cmd_type(qc->cdb[0]) == ATAPI_MISC) |
299 | return -EOPNOTSUPP; | 299 | return -EOPNOTSUPP; |
300 | return 0; | 300 | return 0; |
301 | } | 301 | } |
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index 9427a61f62b0..432181ed7bb5 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c | |||
@@ -1988,19 +1988,19 @@ fore200e_fetch_stats(struct fore200e* fore200e, struct sonet_stats __user *arg) | |||
1988 | if (fore200e_getstats(fore200e) < 0) | 1988 | if (fore200e_getstats(fore200e) < 0) |
1989 | return -EIO; | 1989 | return -EIO; |
1990 | 1990 | ||
1991 | tmp.section_bip = cpu_to_be32(fore200e->stats->oc3.section_bip8_errors); | 1991 | tmp.section_bip = be32_to_cpu(fore200e->stats->oc3.section_bip8_errors); |
1992 | tmp.line_bip = cpu_to_be32(fore200e->stats->oc3.line_bip24_errors); | 1992 | tmp.line_bip = be32_to_cpu(fore200e->stats->oc3.line_bip24_errors); |
1993 | tmp.path_bip = cpu_to_be32(fore200e->stats->oc3.path_bip8_errors); | 1993 | tmp.path_bip = be32_to_cpu(fore200e->stats->oc3.path_bip8_errors); |
1994 | tmp.line_febe = cpu_to_be32(fore200e->stats->oc3.line_febe_errors); | 1994 | tmp.line_febe = be32_to_cpu(fore200e->stats->oc3.line_febe_errors); |
1995 | tmp.path_febe = cpu_to_be32(fore200e->stats->oc3.path_febe_errors); | 1995 | tmp.path_febe = be32_to_cpu(fore200e->stats->oc3.path_febe_errors); |
1996 | tmp.corr_hcs = cpu_to_be32(fore200e->stats->oc3.corr_hcs_errors); | 1996 | tmp.corr_hcs = be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors); |
1997 | tmp.uncorr_hcs = cpu_to_be32(fore200e->stats->oc3.ucorr_hcs_errors); | 1997 | tmp.uncorr_hcs = be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors); |
1998 | tmp.tx_cells = cpu_to_be32(fore200e->stats->aal0.cells_transmitted) + | 1998 | tmp.tx_cells = be32_to_cpu(fore200e->stats->aal0.cells_transmitted) + |
1999 | cpu_to_be32(fore200e->stats->aal34.cells_transmitted) + | 1999 | be32_to_cpu(fore200e->stats->aal34.cells_transmitted) + |
2000 | cpu_to_be32(fore200e->stats->aal5.cells_transmitted); | 2000 | be32_to_cpu(fore200e->stats->aal5.cells_transmitted); |
2001 | tmp.rx_cells = cpu_to_be32(fore200e->stats->aal0.cells_received) + | 2001 | tmp.rx_cells = be32_to_cpu(fore200e->stats->aal0.cells_received) + |
2002 | cpu_to_be32(fore200e->stats->aal34.cells_received) + | 2002 | be32_to_cpu(fore200e->stats->aal34.cells_received) + |
2003 | cpu_to_be32(fore200e->stats->aal5.cells_received); | 2003 | be32_to_cpu(fore200e->stats->aal5.cells_received); |
2004 | 2004 | ||
2005 | if (arg) | 2005 | if (arg) |
2006 | return copy_to_user(arg, &tmp, sizeof(struct sonet_stats)) ? -EFAULT : 0; | 2006 | return copy_to_user(arg, &tmp, sizeof(struct sonet_stats)) ? -EFAULT : 0; |
@@ -2587,7 +2587,7 @@ fore200e_start_fw(struct fore200e* fore200e) | |||
2587 | static int __devinit | 2587 | static int __devinit |
2588 | fore200e_load_fw(struct fore200e* fore200e) | 2588 | fore200e_load_fw(struct fore200e* fore200e) |
2589 | { | 2589 | { |
2590 | u32* fw_data = (u32*) fore200e->bus->fw_data; | 2590 | __le32* fw_data = (__le32*) fore200e->bus->fw_data; |
2591 | u32 fw_size = (u32) *fore200e->bus->fw_size / sizeof(u32); | 2591 | u32 fw_size = (u32) *fore200e->bus->fw_size / sizeof(u32); |
2592 | 2592 | ||
2593 | struct fw_header* fw_header = (struct fw_header*) fw_data; | 2593 | struct fw_header* fw_header = (struct fw_header*) fw_data; |
@@ -2965,8 +2965,8 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page) | |||
2965 | " 4b5b:\n" | 2965 | " 4b5b:\n" |
2966 | " crc_header_errors:\t\t%10u\n" | 2966 | " crc_header_errors:\t\t%10u\n" |
2967 | " framing_errors:\t\t%10u\n", | 2967 | " framing_errors:\t\t%10u\n", |
2968 | cpu_to_be32(fore200e->stats->phy.crc_header_errors), | 2968 | be32_to_cpu(fore200e->stats->phy.crc_header_errors), |
2969 | cpu_to_be32(fore200e->stats->phy.framing_errors)); | 2969 | be32_to_cpu(fore200e->stats->phy.framing_errors)); |
2970 | 2970 | ||
2971 | if (!left--) | 2971 | if (!left--) |
2972 | return sprintf(page, "\n" | 2972 | return sprintf(page, "\n" |
@@ -2978,13 +2978,13 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page) | |||
2978 | " path_febe_errors:\t\t%10u\n" | 2978 | " path_febe_errors:\t\t%10u\n" |
2979 | " corr_hcs_errors:\t\t%10u\n" | 2979 | " corr_hcs_errors:\t\t%10u\n" |
2980 | " ucorr_hcs_errors:\t\t%10u\n", | 2980 | " ucorr_hcs_errors:\t\t%10u\n", |
2981 | cpu_to_be32(fore200e->stats->oc3.section_bip8_errors), | 2981 | be32_to_cpu(fore200e->stats->oc3.section_bip8_errors), |
2982 | cpu_to_be32(fore200e->stats->oc3.path_bip8_errors), | 2982 | be32_to_cpu(fore200e->stats->oc3.path_bip8_errors), |
2983 | cpu_to_be32(fore200e->stats->oc3.line_bip24_errors), | 2983 | be32_to_cpu(fore200e->stats->oc3.line_bip24_errors), |
2984 | cpu_to_be32(fore200e->stats->oc3.line_febe_errors), | 2984 | be32_to_cpu(fore200e->stats->oc3.line_febe_errors), |
2985 | cpu_to_be32(fore200e->stats->oc3.path_febe_errors), | 2985 | be32_to_cpu(fore200e->stats->oc3.path_febe_errors), |
2986 | cpu_to_be32(fore200e->stats->oc3.corr_hcs_errors), | 2986 | be32_to_cpu(fore200e->stats->oc3.corr_hcs_errors), |
2987 | cpu_to_be32(fore200e->stats->oc3.ucorr_hcs_errors)); | 2987 | be32_to_cpu(fore200e->stats->oc3.ucorr_hcs_errors)); |
2988 | 2988 | ||
2989 | if (!left--) | 2989 | if (!left--) |
2990 | return sprintf(page,"\n" | 2990 | return sprintf(page,"\n" |
@@ -2995,12 +2995,12 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page) | |||
2995 | " vpi no conn:\t\t%10u\n" | 2995 | " vpi no conn:\t\t%10u\n" |
2996 | " vci out of range:\t\t%10u\n" | 2996 | " vci out of range:\t\t%10u\n" |
2997 | " vci no conn:\t\t%10u\n", | 2997 | " vci no conn:\t\t%10u\n", |
2998 | cpu_to_be32(fore200e->stats->atm.cells_transmitted), | 2998 | be32_to_cpu(fore200e->stats->atm.cells_transmitted), |
2999 | cpu_to_be32(fore200e->stats->atm.cells_received), | 2999 | be32_to_cpu(fore200e->stats->atm.cells_received), |
3000 | cpu_to_be32(fore200e->stats->atm.vpi_bad_range), | 3000 | be32_to_cpu(fore200e->stats->atm.vpi_bad_range), |
3001 | cpu_to_be32(fore200e->stats->atm.vpi_no_conn), | 3001 | be32_to_cpu(fore200e->stats->atm.vpi_no_conn), |
3002 | cpu_to_be32(fore200e->stats->atm.vci_bad_range), | 3002 | be32_to_cpu(fore200e->stats->atm.vci_bad_range), |
3003 | cpu_to_be32(fore200e->stats->atm.vci_no_conn)); | 3003 | be32_to_cpu(fore200e->stats->atm.vci_no_conn)); |
3004 | 3004 | ||
3005 | if (!left--) | 3005 | if (!left--) |
3006 | return sprintf(page,"\n" | 3006 | return sprintf(page,"\n" |
@@ -3008,9 +3008,9 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page) | |||
3008 | " TX:\t\t\t%10u\n" | 3008 | " TX:\t\t\t%10u\n" |
3009 | " RX:\t\t\t%10u\n" | 3009 | " RX:\t\t\t%10u\n" |
3010 | " dropped:\t\t\t%10u\n", | 3010 | " dropped:\t\t\t%10u\n", |
3011 | cpu_to_be32(fore200e->stats->aal0.cells_transmitted), | 3011 | be32_to_cpu(fore200e->stats->aal0.cells_transmitted), |
3012 | cpu_to_be32(fore200e->stats->aal0.cells_received), | 3012 | be32_to_cpu(fore200e->stats->aal0.cells_received), |
3013 | cpu_to_be32(fore200e->stats->aal0.cells_dropped)); | 3013 | be32_to_cpu(fore200e->stats->aal0.cells_dropped)); |
3014 | 3014 | ||
3015 | if (!left--) | 3015 | if (!left--) |
3016 | return sprintf(page,"\n" | 3016 | return sprintf(page,"\n" |
@@ -3026,15 +3026,15 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page) | |||
3026 | " RX:\t\t\t%10u\n" | 3026 | " RX:\t\t\t%10u\n" |
3027 | " dropped:\t\t\t%10u\n" | 3027 | " dropped:\t\t\t%10u\n" |
3028 | " protocol errors:\t\t%10u\n", | 3028 | " protocol errors:\t\t%10u\n", |
3029 | cpu_to_be32(fore200e->stats->aal34.cells_transmitted), | 3029 | be32_to_cpu(fore200e->stats->aal34.cells_transmitted), |
3030 | cpu_to_be32(fore200e->stats->aal34.cells_received), | 3030 | be32_to_cpu(fore200e->stats->aal34.cells_received), |
3031 | cpu_to_be32(fore200e->stats->aal34.cells_dropped), | 3031 | be32_to_cpu(fore200e->stats->aal34.cells_dropped), |
3032 | cpu_to_be32(fore200e->stats->aal34.cells_crc_errors), | 3032 | be32_to_cpu(fore200e->stats->aal34.cells_crc_errors), |
3033 | cpu_to_be32(fore200e->stats->aal34.cells_protocol_errors), | 3033 | be32_to_cpu(fore200e->stats->aal34.cells_protocol_errors), |
3034 | cpu_to_be32(fore200e->stats->aal34.cspdus_transmitted), | 3034 | be32_to_cpu(fore200e->stats->aal34.cspdus_transmitted), |
3035 | cpu_to_be32(fore200e->stats->aal34.cspdus_received), | 3035 | be32_to_cpu(fore200e->stats->aal34.cspdus_received), |
3036 | cpu_to_be32(fore200e->stats->aal34.cspdus_dropped), | 3036 | be32_to_cpu(fore200e->stats->aal34.cspdus_dropped), |
3037 | cpu_to_be32(fore200e->stats->aal34.cspdus_protocol_errors)); | 3037 | be32_to_cpu(fore200e->stats->aal34.cspdus_protocol_errors)); |
3038 | 3038 | ||
3039 | if (!left--) | 3039 | if (!left--) |
3040 | return sprintf(page,"\n" | 3040 | return sprintf(page,"\n" |
@@ -3050,15 +3050,15 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page) | |||
3050 | " dropped:\t\t\t%10u\n" | 3050 | " dropped:\t\t\t%10u\n" |
3051 | " CRC errors:\t\t%10u\n" | 3051 | " CRC errors:\t\t%10u\n" |
3052 | " protocol errors:\t\t%10u\n", | 3052 | " protocol errors:\t\t%10u\n", |
3053 | cpu_to_be32(fore200e->stats->aal5.cells_transmitted), | 3053 | be32_to_cpu(fore200e->stats->aal5.cells_transmitted), |
3054 | cpu_to_be32(fore200e->stats->aal5.cells_received), | 3054 | be32_to_cpu(fore200e->stats->aal5.cells_received), |
3055 | cpu_to_be32(fore200e->stats->aal5.cells_dropped), | 3055 | be32_to_cpu(fore200e->stats->aal5.cells_dropped), |
3056 | cpu_to_be32(fore200e->stats->aal5.congestion_experienced), | 3056 | be32_to_cpu(fore200e->stats->aal5.congestion_experienced), |
3057 | cpu_to_be32(fore200e->stats->aal5.cspdus_transmitted), | 3057 | be32_to_cpu(fore200e->stats->aal5.cspdus_transmitted), |
3058 | cpu_to_be32(fore200e->stats->aal5.cspdus_received), | 3058 | be32_to_cpu(fore200e->stats->aal5.cspdus_received), |
3059 | cpu_to_be32(fore200e->stats->aal5.cspdus_dropped), | 3059 | be32_to_cpu(fore200e->stats->aal5.cspdus_dropped), |
3060 | cpu_to_be32(fore200e->stats->aal5.cspdus_crc_errors), | 3060 | be32_to_cpu(fore200e->stats->aal5.cspdus_crc_errors), |
3061 | cpu_to_be32(fore200e->stats->aal5.cspdus_protocol_errors)); | 3061 | be32_to_cpu(fore200e->stats->aal5.cspdus_protocol_errors)); |
3062 | 3062 | ||
3063 | if (!left--) | 3063 | if (!left--) |
3064 | return sprintf(page,"\n" | 3064 | return sprintf(page,"\n" |
@@ -3069,11 +3069,11 @@ fore200e_proc_read(struct atm_dev *dev, loff_t* pos, char* page) | |||
3069 | " large b2:\t\t\t%10u\n" | 3069 | " large b2:\t\t\t%10u\n" |
3070 | " RX PDUs:\t\t\t%10u\n" | 3070 | " RX PDUs:\t\t\t%10u\n" |
3071 | " TX PDUs:\t\t\t%10lu\n", | 3071 | " TX PDUs:\t\t\t%10lu\n", |
3072 | cpu_to_be32(fore200e->stats->aux.small_b1_failed), | 3072 | be32_to_cpu(fore200e->stats->aux.small_b1_failed), |
3073 | cpu_to_be32(fore200e->stats->aux.large_b1_failed), | 3073 | be32_to_cpu(fore200e->stats->aux.large_b1_failed), |
3074 | cpu_to_be32(fore200e->stats->aux.small_b2_failed), | 3074 | be32_to_cpu(fore200e->stats->aux.small_b2_failed), |
3075 | cpu_to_be32(fore200e->stats->aux.large_b2_failed), | 3075 | be32_to_cpu(fore200e->stats->aux.large_b2_failed), |
3076 | cpu_to_be32(fore200e->stats->aux.rpd_alloc_failed), | 3076 | be32_to_cpu(fore200e->stats->aux.rpd_alloc_failed), |
3077 | fore200e->tx_sat); | 3077 | fore200e->tx_sat); |
3078 | 3078 | ||
3079 | if (!left--) | 3079 | if (!left--) |
diff --git a/drivers/atm/fore200e.h b/drivers/atm/fore200e.h index b85a54613dea..183841cc8fdf 100644 --- a/drivers/atm/fore200e.h +++ b/drivers/atm/fore200e.h | |||
@@ -349,90 +349,90 @@ typedef struct oc3_block { | |||
349 | /* physical encoding statistics */ | 349 | /* physical encoding statistics */ |
350 | 350 | ||
351 | typedef struct stats_phy { | 351 | typedef struct stats_phy { |
352 | u32 crc_header_errors; /* cells received with bad header CRC */ | 352 | __be32 crc_header_errors; /* cells received with bad header CRC */ |
353 | u32 framing_errors; /* cells received with bad framing */ | 353 | __be32 framing_errors; /* cells received with bad framing */ |
354 | u32 pad[ 2 ]; /* i960 padding */ | 354 | __be32 pad[ 2 ]; /* i960 padding */ |
355 | } stats_phy_t; | 355 | } stats_phy_t; |
356 | 356 | ||
357 | 357 | ||
358 | /* OC-3 statistics */ | 358 | /* OC-3 statistics */ |
359 | 359 | ||
360 | typedef struct stats_oc3 { | 360 | typedef struct stats_oc3 { |
361 | u32 section_bip8_errors; /* section 8 bit interleaved parity */ | 361 | __be32 section_bip8_errors; /* section 8 bit interleaved parity */ |
362 | u32 path_bip8_errors; /* path 8 bit interleaved parity */ | 362 | __be32 path_bip8_errors; /* path 8 bit interleaved parity */ |
363 | u32 line_bip24_errors; /* line 24 bit interleaved parity */ | 363 | __be32 line_bip24_errors; /* line 24 bit interleaved parity */ |
364 | u32 line_febe_errors; /* line far end block errors */ | 364 | __be32 line_febe_errors; /* line far end block errors */ |
365 | u32 path_febe_errors; /* path far end block errors */ | 365 | __be32 path_febe_errors; /* path far end block errors */ |
366 | u32 corr_hcs_errors; /* correctable header check sequence */ | 366 | __be32 corr_hcs_errors; /* correctable header check sequence */ |
367 | u32 ucorr_hcs_errors; /* uncorrectable header check sequence */ | 367 | __be32 ucorr_hcs_errors; /* uncorrectable header check sequence */ |
368 | u32 pad[ 1 ]; /* i960 padding */ | 368 | __be32 pad[ 1 ]; /* i960 padding */ |
369 | } stats_oc3_t; | 369 | } stats_oc3_t; |
370 | 370 | ||
371 | 371 | ||
372 | /* ATM statistics */ | 372 | /* ATM statistics */ |
373 | 373 | ||
374 | typedef struct stats_atm { | 374 | typedef struct stats_atm { |
375 | u32 cells_transmitted; /* cells transmitted */ | 375 | __be32 cells_transmitted; /* cells transmitted */ |
376 | u32 cells_received; /* cells received */ | 376 | __be32 cells_received; /* cells received */ |
377 | u32 vpi_bad_range; /* cell drops: VPI out of range */ | 377 | __be32 vpi_bad_range; /* cell drops: VPI out of range */ |
378 | u32 vpi_no_conn; /* cell drops: no connection for VPI */ | 378 | __be32 vpi_no_conn; /* cell drops: no connection for VPI */ |
379 | u32 vci_bad_range; /* cell drops: VCI out of range */ | 379 | __be32 vci_bad_range; /* cell drops: VCI out of range */ |
380 | u32 vci_no_conn; /* cell drops: no connection for VCI */ | 380 | __be32 vci_no_conn; /* cell drops: no connection for VCI */ |
381 | u32 pad[ 2 ]; /* i960 padding */ | 381 | __be32 pad[ 2 ]; /* i960 padding */ |
382 | } stats_atm_t; | 382 | } stats_atm_t; |
383 | 383 | ||
384 | /* AAL0 statistics */ | 384 | /* AAL0 statistics */ |
385 | 385 | ||
386 | typedef struct stats_aal0 { | 386 | typedef struct stats_aal0 { |
387 | u32 cells_transmitted; /* cells transmitted */ | 387 | __be32 cells_transmitted; /* cells transmitted */ |
388 | u32 cells_received; /* cells received */ | 388 | __be32 cells_received; /* cells received */ |
389 | u32 cells_dropped; /* cells dropped */ | 389 | __be32 cells_dropped; /* cells dropped */ |
390 | u32 pad[ 1 ]; /* i960 padding */ | 390 | __be32 pad[ 1 ]; /* i960 padding */ |
391 | } stats_aal0_t; | 391 | } stats_aal0_t; |
392 | 392 | ||
393 | 393 | ||
394 | /* AAL3/4 statistics */ | 394 | /* AAL3/4 statistics */ |
395 | 395 | ||
396 | typedef struct stats_aal34 { | 396 | typedef struct stats_aal34 { |
397 | u32 cells_transmitted; /* cells transmitted from segmented PDUs */ | 397 | __be32 cells_transmitted; /* cells transmitted from segmented PDUs */ |
398 | u32 cells_received; /* cells reassembled into PDUs */ | 398 | __be32 cells_received; /* cells reassembled into PDUs */ |
399 | u32 cells_crc_errors; /* payload CRC error count */ | 399 | __be32 cells_crc_errors; /* payload CRC error count */ |
400 | u32 cells_protocol_errors; /* SAR or CS layer protocol errors */ | 400 | __be32 cells_protocol_errors; /* SAR or CS layer protocol errors */ |
401 | u32 cells_dropped; /* cells dropped: partial reassembly */ | 401 | __be32 cells_dropped; /* cells dropped: partial reassembly */ |
402 | u32 cspdus_transmitted; /* CS PDUs transmitted */ | 402 | __be32 cspdus_transmitted; /* CS PDUs transmitted */ |
403 | u32 cspdus_received; /* CS PDUs received */ | 403 | __be32 cspdus_received; /* CS PDUs received */ |
404 | u32 cspdus_protocol_errors; /* CS layer protocol errors */ | 404 | __be32 cspdus_protocol_errors; /* CS layer protocol errors */ |
405 | u32 cspdus_dropped; /* reassembled PDUs drop'd (in cells) */ | 405 | __be32 cspdus_dropped; /* reassembled PDUs drop'd (in cells) */ |
406 | u32 pad[ 3 ]; /* i960 padding */ | 406 | __be32 pad[ 3 ]; /* i960 padding */ |
407 | } stats_aal34_t; | 407 | } stats_aal34_t; |
408 | 408 | ||
409 | 409 | ||
410 | /* AAL5 statistics */ | 410 | /* AAL5 statistics */ |
411 | 411 | ||
412 | typedef struct stats_aal5 { | 412 | typedef struct stats_aal5 { |
413 | u32 cells_transmitted; /* cells transmitted from segmented SDUs */ | 413 | __be32 cells_transmitted; /* cells transmitted from segmented SDUs */ |
414 | u32 cells_received; /* cells reassembled into SDUs */ | 414 | __be32 cells_received; /* cells reassembled into SDUs */ |
415 | u32 cells_dropped; /* reassembled PDUs dropped (in cells) */ | 415 | __be32 cells_dropped; /* reassembled PDUs dropped (in cells) */ |
416 | u32 congestion_experienced; /* CRC error and length wrong */ | 416 | __be32 congestion_experienced; /* CRC error and length wrong */ |
417 | u32 cspdus_transmitted; /* CS PDUs transmitted */ | 417 | __be32 cspdus_transmitted; /* CS PDUs transmitted */ |
418 | u32 cspdus_received; /* CS PDUs received */ | 418 | __be32 cspdus_received; /* CS PDUs received */ |
419 | u32 cspdus_crc_errors; /* CS PDUs CRC errors */ | 419 | __be32 cspdus_crc_errors; /* CS PDUs CRC errors */ |
420 | u32 cspdus_protocol_errors; /* CS layer protocol errors */ | 420 | __be32 cspdus_protocol_errors; /* CS layer protocol errors */ |
421 | u32 cspdus_dropped; /* reassembled PDUs dropped */ | 421 | __be32 cspdus_dropped; /* reassembled PDUs dropped */ |
422 | u32 pad[ 3 ]; /* i960 padding */ | 422 | __be32 pad[ 3 ]; /* i960 padding */ |
423 | } stats_aal5_t; | 423 | } stats_aal5_t; |
424 | 424 | ||
425 | 425 | ||
426 | /* auxiliary statistics */ | 426 | /* auxiliary statistics */ |
427 | 427 | ||
428 | typedef struct stats_aux { | 428 | typedef struct stats_aux { |
429 | u32 small_b1_failed; /* receive BD allocation failures */ | 429 | __be32 small_b1_failed; /* receive BD allocation failures */ |
430 | u32 large_b1_failed; /* receive BD allocation failures */ | 430 | __be32 large_b1_failed; /* receive BD allocation failures */ |
431 | u32 small_b2_failed; /* receive BD allocation failures */ | 431 | __be32 small_b2_failed; /* receive BD allocation failures */ |
432 | u32 large_b2_failed; /* receive BD allocation failures */ | 432 | __be32 large_b2_failed; /* receive BD allocation failures */ |
433 | u32 rpd_alloc_failed; /* receive PDU allocation failures */ | 433 | __be32 rpd_alloc_failed; /* receive PDU allocation failures */ |
434 | u32 receive_carrier; /* no carrier = 0, carrier = 1 */ | 434 | __be32 receive_carrier; /* no carrier = 0, carrier = 1 */ |
435 | u32 pad[ 2 ]; /* i960 padding */ | 435 | __be32 pad[ 2 ]; /* i960 padding */ |
436 | } stats_aux_t; | 436 | } stats_aux_t; |
437 | 437 | ||
438 | 438 | ||
@@ -643,10 +643,10 @@ typedef struct host_bsq { | |||
643 | /* header of the firmware image */ | 643 | /* header of the firmware image */ |
644 | 644 | ||
645 | typedef struct fw_header { | 645 | typedef struct fw_header { |
646 | u32 magic; /* magic number */ | 646 | __le32 magic; /* magic number */ |
647 | u32 version; /* firmware version id */ | 647 | __le32 version; /* firmware version id */ |
648 | u32 load_offset; /* fw load offset in board memory */ | 648 | __le32 load_offset; /* fw load offset in board memory */ |
649 | u32 start_offset; /* fw execution start address in board memory */ | 649 | __le32 start_offset; /* fw execution start address in board memory */ |
650 | } fw_header_t; | 650 | } fw_header_t; |
651 | 651 | ||
652 | #define FW_HEADER_MAGIC 0x65726f66 /* 'fore' */ | 652 | #define FW_HEADER_MAGIC 0x65726f66 /* 'fore' */ |
diff --git a/drivers/block/Kconfig b/drivers/block/Kconfig index b6d230b3209f..0d1d2133d9bc 100644 --- a/drivers/block/Kconfig +++ b/drivers/block/Kconfig | |||
@@ -44,16 +44,6 @@ config MAC_FLOPPY | |||
44 | If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple) | 44 | If you have a SWIM-3 (Super Woz Integrated Machine 3; from Apple) |
45 | floppy controller, say Y here. Most commonly found in PowerMacs. | 45 | floppy controller, say Y here. Most commonly found in PowerMacs. |
46 | 46 | ||
47 | config BLK_DEV_PS2 | ||
48 | tristate "PS/2 ESDI hard disk support" | ||
49 | depends on MCA && MCA_LEGACY && BROKEN | ||
50 | help | ||
51 | Say Y here if you have a PS/2 machine with a MCA bus and an ESDI | ||
52 | hard disk. | ||
53 | |||
54 | To compile this driver as a module, choose M here: the | ||
55 | module will be called ps2esdi. | ||
56 | |||
57 | config AMIGA_Z2RAM | 47 | config AMIGA_Z2RAM |
58 | tristate "Amiga Zorro II ramdisk support" | 48 | tristate "Amiga Zorro II ramdisk support" |
59 | depends on ZORRO | 49 | depends on ZORRO |
diff --git a/drivers/block/Makefile b/drivers/block/Makefile index 01c972415cb2..5e584306be99 100644 --- a/drivers/block/Makefile +++ b/drivers/block/Makefile | |||
@@ -13,7 +13,6 @@ obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o | |||
13 | obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o | 13 | obj-$(CONFIG_AMIGA_Z2RAM) += z2ram.o |
14 | obj-$(CONFIG_BLK_DEV_RAM) += brd.o | 14 | obj-$(CONFIG_BLK_DEV_RAM) += brd.o |
15 | obj-$(CONFIG_BLK_DEV_LOOP) += loop.o | 15 | obj-$(CONFIG_BLK_DEV_LOOP) += loop.o |
16 | obj-$(CONFIG_BLK_DEV_PS2) += ps2esdi.o | ||
17 | obj-$(CONFIG_BLK_DEV_XD) += xd.o | 16 | obj-$(CONFIG_BLK_DEV_XD) += xd.o |
18 | obj-$(CONFIG_BLK_CPQ_DA) += cpqarray.o | 17 | obj-$(CONFIG_BLK_CPQ_DA) += cpqarray.o |
19 | obj-$(CONFIG_BLK_CPQ_CISS_DA) += cciss.o | 18 | obj-$(CONFIG_BLK_CPQ_CISS_DA) += cciss.o |
diff --git a/drivers/block/ps2esdi.c b/drivers/block/ps2esdi.c deleted file mode 100644 index 3c796e236253..000000000000 --- a/drivers/block/ps2esdi.c +++ /dev/null | |||
@@ -1,1079 +0,0 @@ | |||
1 | /* ps2esdi driver based on assembler code by Arindam Banerji, | ||
2 | written by Peter De Schrijver */ | ||
3 | /* Reassuring note to IBM : This driver was NOT developed by vice-versa | ||
4 | engineering the PS/2's BIOS */ | ||
5 | /* Dedicated to Wannes, Tofke, Ykke, Godot, Killroy and all those | ||
6 | other lovely fish out there... */ | ||
7 | /* This code was written during the long and boring WINA | ||
8 | elections 1994 */ | ||
9 | /* Thanks to Arindam Banerij for giving me the source of his driver */ | ||
10 | /* This code may be freely distributed and modified in any way, | ||
11 | as long as these notes remain intact */ | ||
12 | |||
13 | /* Revised: 05/07/94 by Arindam Banerji (axb@cse.nd.edu) */ | ||
14 | /* Revised: 09/08/94 by Peter De Schrijver (stud11@cc4.kuleuven.ac.be) | ||
15 | Thanks to Arindam Banerij for sending me the docs of the adapter */ | ||
16 | |||
17 | /* BA Modified for ThinkPad 720 by Boris Ashkinazi */ | ||
18 | /* (bash@vnet.ibm.com) 08/08/95 */ | ||
19 | |||
20 | /* Modified further for ThinkPad-720C by Uri Blumenthal */ | ||
21 | /* (uri@watson.ibm.com) Sep 11, 1995 */ | ||
22 | |||
23 | /* TODO : | ||
24 | + Timeouts | ||
25 | + Get disk parameters | ||
26 | + DMA above 16MB | ||
27 | + reset after read/write error | ||
28 | */ | ||
29 | |||
30 | #define DEVICE_NAME "PS/2 ESDI" | ||
31 | |||
32 | #include <linux/major.h> | ||
33 | #include <linux/errno.h> | ||
34 | #include <linux/wait.h> | ||
35 | #include <linux/interrupt.h> | ||
36 | #include <linux/fs.h> | ||
37 | #include <linux/kernel.h> | ||
38 | #include <linux/genhd.h> | ||
39 | #include <linux/ps2esdi.h> | ||
40 | #include <linux/blkdev.h> | ||
41 | #include <linux/mca-legacy.h> | ||
42 | #include <linux/init.h> | ||
43 | #include <linux/ioport.h> | ||
44 | #include <linux/module.h> | ||
45 | #include <linux/hdreg.h> | ||
46 | |||
47 | #include <asm/system.h> | ||
48 | #include <asm/io.h> | ||
49 | #include <asm/dma.h> | ||
50 | #include <asm/mca_dma.h> | ||
51 | #include <asm/uaccess.h> | ||
52 | |||
53 | #define PS2ESDI_IRQ 14 | ||
54 | #define MAX_HD 2 | ||
55 | #define MAX_RETRIES 5 | ||
56 | #define MAX_16BIT 65536 | ||
57 | #define ESDI_TIMEOUT 0xf000 | ||
58 | #define ESDI_STAT_TIMEOUT 4 | ||
59 | |||
60 | #define TYPE_0_CMD_BLK_LENGTH 2 | ||
61 | #define TYPE_1_CMD_BLK_LENGTH 4 | ||
62 | |||
63 | static void reset_ctrl(void); | ||
64 | |||
65 | static int ps2esdi_geninit(void); | ||
66 | |||
67 | static void do_ps2esdi_request(struct request_queue * q); | ||
68 | |||
69 | static void ps2esdi_readwrite(int cmd, struct request *req); | ||
70 | |||
71 | static void ps2esdi_fill_cmd_block(u_short * cmd_blk, u_short cmd, | ||
72 | u_short cyl, u_short head, u_short sector, u_short length, u_char drive); | ||
73 | |||
74 | static int ps2esdi_out_cmd_blk(u_short * cmd_blk); | ||
75 | |||
76 | static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode); | ||
77 | |||
78 | static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id); | ||
79 | static void (*current_int_handler) (u_int) = NULL; | ||
80 | static void ps2esdi_normal_interrupt_handler(u_int); | ||
81 | static void ps2esdi_initial_reset_int_handler(u_int); | ||
82 | static void ps2esdi_geometry_int_handler(u_int); | ||
83 | static int ps2esdi_getgeo(struct block_device *bdev, struct hd_geometry *geo); | ||
84 | |||
85 | static int ps2esdi_read_status_words(int num_words, int max_words, u_short * buffer); | ||
86 | |||
87 | static void dump_cmd_complete_status(u_int int_ret_code); | ||
88 | |||
89 | static void ps2esdi_get_device_cfg(void); | ||
90 | |||
91 | static void ps2esdi_reset_timer(unsigned long unused); | ||
92 | |||
93 | static u_int dma_arb_level; /* DMA arbitration level */ | ||
94 | |||
95 | static DECLARE_WAIT_QUEUE_HEAD(ps2esdi_int); | ||
96 | |||
97 | static int no_int_yet; | ||
98 | static int ps2esdi_drives; | ||
99 | static u_short io_base; | ||
100 | static DEFINE_TIMER(esdi_timer, ps2esdi_reset_timer, 0, 0); | ||
101 | static int reset_status; | ||
102 | static int ps2esdi_slot = -1; | ||
103 | static int tp720esdi = 0; /* Is it Integrated ESDI of ThinkPad-720? */ | ||
104 | static int intg_esdi = 0; /* If integrated adapter */ | ||
105 | struct ps2esdi_i_struct { | ||
106 | unsigned int head, sect, cyl, wpcom, lzone, ctl; | ||
107 | }; | ||
108 | static DEFINE_SPINLOCK(ps2esdi_lock); | ||
109 | static struct request_queue *ps2esdi_queue; | ||
110 | static struct request *current_req; | ||
111 | |||
112 | #if 0 | ||
113 | #if 0 /* try both - I don't know which one is better... UB */ | ||
114 | static struct ps2esdi_i_struct ps2esdi_info[MAX_HD] = | ||
115 | { | ||
116 | {4, 48, 1553, 0, 0, 0}, | ||
117 | {0, 0, 0, 0, 0, 0}}; | ||
118 | #else | ||
119 | static struct ps2esdi_i_struct ps2esdi_info[MAX_HD] = | ||
120 | { | ||
121 | {64, 32, 161, 0, 0, 0}, | ||
122 | {0, 0, 0, 0, 0, 0}}; | ||
123 | #endif | ||
124 | #endif | ||
125 | static struct ps2esdi_i_struct ps2esdi_info[MAX_HD] = | ||
126 | { | ||
127 | {0, 0, 0, 0, 0, 0}, | ||
128 | {0, 0, 0, 0, 0, 0}}; | ||
129 | |||
130 | static struct block_device_operations ps2esdi_fops = | ||
131 | { | ||
132 | .owner = THIS_MODULE, | ||
133 | .getgeo = ps2esdi_getgeo, | ||
134 | }; | ||
135 | |||
136 | static struct gendisk *ps2esdi_gendisk[2]; | ||
137 | |||
138 | /* initialization routine called by ll_rw_blk.c */ | ||
139 | static int __init ps2esdi_init(void) | ||
140 | { | ||
141 | |||
142 | int error = 0; | ||
143 | |||
144 | /* register the device - pass the name and major number */ | ||
145 | if (register_blkdev(PS2ESDI_MAJOR, "ed")) | ||
146 | return -EBUSY; | ||
147 | |||
148 | /* set up some global information - indicating device specific info */ | ||
149 | ps2esdi_queue = blk_init_queue(do_ps2esdi_request, &ps2esdi_lock); | ||
150 | if (!ps2esdi_queue) { | ||
151 | unregister_blkdev(PS2ESDI_MAJOR, "ed"); | ||
152 | return -ENOMEM; | ||
153 | } | ||
154 | |||
155 | /* some minor housekeeping - setup the global gendisk structure */ | ||
156 | error = ps2esdi_geninit(); | ||
157 | if (error) { | ||
158 | printk(KERN_WARNING "PS2ESDI: error initialising" | ||
159 | " device, releasing resources\n"); | ||
160 | unregister_blkdev(PS2ESDI_MAJOR, "ed"); | ||
161 | blk_cleanup_queue(ps2esdi_queue); | ||
162 | return error; | ||
163 | } | ||
164 | return 0; | ||
165 | } /* ps2esdi_init */ | ||
166 | |||
167 | #ifndef MODULE | ||
168 | |||
169 | module_init(ps2esdi_init); | ||
170 | |||
171 | #else | ||
172 | |||
173 | static int cyl[MAX_HD] = {-1,-1}; | ||
174 | static int head[MAX_HD] = {-1, -1}; | ||
175 | static int sect[MAX_HD] = {-1, -1}; | ||
176 | |||
177 | module_param(tp720esdi, bool, 0); | ||
178 | module_param_array(cyl, int, NULL, 0); | ||
179 | module_param_array(head, int, NULL, 0); | ||
180 | module_param_array(sect, int, NULL, 0); | ||
181 | MODULE_LICENSE("GPL"); | ||
182 | |||
183 | int init_module(void) { | ||
184 | int drive; | ||
185 | |||
186 | for(drive = 0; drive < MAX_HD; drive++) { | ||
187 | struct ps2esdi_i_struct *info = &ps2esdi_info[drive]; | ||
188 | |||
189 | if (cyl[drive] != -1) { | ||
190 | info->cyl = info->lzone = cyl[drive]; | ||
191 | info->wpcom = 0; | ||
192 | } | ||
193 | if (head[drive] != -1) { | ||
194 | info->head = head[drive]; | ||
195 | info->ctl = (head[drive] > 8 ? 8 : 0); | ||
196 | } | ||
197 | if (sect[drive] != -1) info->sect = sect[drive]; | ||
198 | } | ||
199 | return ps2esdi_init(); | ||
200 | } | ||
201 | |||
202 | void | ||
203 | cleanup_module(void) { | ||
204 | int i; | ||
205 | if(ps2esdi_slot) { | ||
206 | mca_mark_as_unused(ps2esdi_slot); | ||
207 | mca_set_adapter_procfn(ps2esdi_slot, NULL, NULL); | ||
208 | } | ||
209 | release_region(io_base, 4); | ||
210 | free_dma(dma_arb_level); | ||
211 | free_irq(PS2ESDI_IRQ, &ps2esdi_gendisk); | ||
212 | unregister_blkdev(PS2ESDI_MAJOR, "ed"); | ||
213 | blk_cleanup_queue(ps2esdi_queue); | ||
214 | for (i = 0; i < ps2esdi_drives; i++) { | ||
215 | del_gendisk(ps2esdi_gendisk[i]); | ||
216 | put_disk(ps2esdi_gendisk[i]); | ||
217 | } | ||
218 | } | ||
219 | #endif /* MODULE */ | ||
220 | |||
221 | /* handles boot time command line parameters */ | ||
222 | void __init tp720_setup(char *str, int *ints) | ||
223 | { | ||
224 | /* no params, just sets the tp720esdi flag if it exists */ | ||
225 | |||
226 | printk("%s: TP 720 ESDI flag set\n", DEVICE_NAME); | ||
227 | tp720esdi = 1; | ||
228 | } | ||
229 | |||
230 | void __init ed_setup(char *str, int *ints) | ||
231 | { | ||
232 | int hdind = 0; | ||
233 | |||
234 | /* handles 3 parameters only - corresponding to | ||
235 | 1. Number of cylinders | ||
236 | 2. Number of heads | ||
237 | 3. Sectors/track | ||
238 | */ | ||
239 | |||
240 | if (ints[0] != 3) | ||
241 | return; | ||
242 | |||
243 | /* print out the information - seen at boot time */ | ||
244 | printk("%s: ints[0]=%d ints[1]=%d ints[2]=%d ints[3]=%d\n", | ||
245 | DEVICE_NAME, ints[0], ints[1], ints[2], ints[3]); | ||
246 | |||
247 | /* set the index into device specific information table */ | ||
248 | if (ps2esdi_info[0].head != 0) | ||
249 | hdind = 1; | ||
250 | |||
251 | /* set up all the device information */ | ||
252 | ps2esdi_info[hdind].head = ints[2]; | ||
253 | ps2esdi_info[hdind].sect = ints[3]; | ||
254 | ps2esdi_info[hdind].cyl = ints[1]; | ||
255 | ps2esdi_info[hdind].wpcom = 0; | ||
256 | ps2esdi_info[hdind].lzone = ints[1]; | ||
257 | ps2esdi_info[hdind].ctl = (ints[2] > 8 ? 8 : 0); | ||
258 | #if 0 /* this may be needed for PS2/Mod.80, but it hurts ThinkPad! */ | ||
259 | ps2esdi_drives = hdind + 1; /* increment index for the next time */ | ||
260 | #endif | ||
261 | } /* ed_setup */ | ||
262 | |||
263 | static int ps2esdi_getinfo(char *buf, int slot, void *d) | ||
264 | { | ||
265 | int len = 0; | ||
266 | |||
267 | len += sprintf(buf + len, "DMA Arbitration Level: %d\n", | ||
268 | dma_arb_level); | ||
269 | len += sprintf(buf + len, "IO Port: %x\n", io_base); | ||
270 | len += sprintf(buf + len, "IRQ: 14\n"); | ||
271 | len += sprintf(buf + len, "Drives: %d\n", ps2esdi_drives); | ||
272 | |||
273 | return len; | ||
274 | } | ||
275 | |||
276 | /* ps2 esdi specific initialization - called thru the gendisk chain */ | ||
277 | static int __init ps2esdi_geninit(void) | ||
278 | { | ||
279 | /* | ||
280 | The first part contains the initialization code | ||
281 | for the ESDI disk subsystem. All we really do | ||
282 | is search for the POS registers of the controller | ||
283 | to do some simple setup operations. First, we | ||
284 | must ensure that the controller is installed, | ||
285 | enabled, and configured as PRIMARY. Then we must | ||
286 | determine the DMA arbitration level being used by | ||
287 | the controller so we can handle data transfer | ||
288 | operations properly. If all of this works, then | ||
289 | we will set the INIT_FLAG to a non-zero value. | ||
290 | */ | ||
291 | |||
292 | int slot = 0, i, reset_start, reset_end; | ||
293 | u_char status; | ||
294 | unsigned short adapterID; | ||
295 | int error = 0; | ||
296 | |||
297 | if ((slot = mca_find_adapter(INTG_ESDI_ID, 0)) != MCA_NOTFOUND) { | ||
298 | adapterID = INTG_ESDI_ID; | ||
299 | printk("%s: integrated ESDI adapter found in slot %d\n", | ||
300 | DEVICE_NAME, slot+1); | ||
301 | #ifndef MODULE | ||
302 | mca_set_adapter_name(slot, "PS/2 Integrated ESDI"); | ||
303 | #endif | ||
304 | } else if ((slot = mca_find_adapter(NRML_ESDI_ID, 0)) != -1) { | ||
305 | adapterID = NRML_ESDI_ID; | ||
306 | printk("%s: normal ESDI adapter found in slot %d\n", | ||
307 | DEVICE_NAME, slot+1); | ||
308 | mca_set_adapter_name(slot, "PS/2 ESDI"); | ||
309 | } else { | ||
310 | return -ENODEV; | ||
311 | } | ||
312 | |||
313 | ps2esdi_slot = slot; | ||
314 | mca_mark_as_used(slot); | ||
315 | mca_set_adapter_procfn(slot, (MCA_ProcFn) ps2esdi_getinfo, NULL); | ||
316 | |||
317 | /* Found the slot - read the POS register 2 to get the necessary | ||
318 | configuration and status information. POS register 2 has the | ||
319 | following information : | ||
320 | Bit Function | ||
321 | 7 reserved = 0 | ||
322 | 6 arbitration method | ||
323 | 0 - fairness enabled | ||
324 | 1 - fairness disabled, linear priority assignment | ||
325 | 5-2 arbitration level | ||
326 | 1 alternate address | ||
327 | 1 alternate address | ||
328 | 0 - use addresses 0x3510 - 0x3517 | ||
329 | 0 adapter enable | ||
330 | */ | ||
331 | |||
332 | status = mca_read_stored_pos(slot, 2); | ||
333 | /* is it enabled ? */ | ||
334 | if (!(status & STATUS_ENABLED)) { | ||
335 | printk("%s: ESDI adapter disabled\n", DEVICE_NAME); | ||
336 | error = -ENODEV; | ||
337 | goto err_out1; | ||
338 | } | ||
339 | /* try to grab IRQ, and try to grab a slow IRQ if it fails, so we can | ||
340 | share with the SCSI driver */ | ||
341 | if (request_irq(PS2ESDI_IRQ, ps2esdi_interrupt_handler, | ||
342 | IRQF_DISABLED | IRQF_SHARED, "PS/2 ESDI", &ps2esdi_gendisk) | ||
343 | && request_irq(PS2ESDI_IRQ, ps2esdi_interrupt_handler, | ||
344 | IRQF_SHARED, "PS/2 ESDI", &ps2esdi_gendisk) | ||
345 | ) { | ||
346 | printk("%s: Unable to get IRQ %d\n", DEVICE_NAME, PS2ESDI_IRQ); | ||
347 | error = -EBUSY; | ||
348 | goto err_out1; | ||
349 | } | ||
350 | if (status & STATUS_ALTERNATE) | ||
351 | io_base = ALT_IO_BASE; | ||
352 | else | ||
353 | io_base = PRIMARY_IO_BASE; | ||
354 | |||
355 | if (!request_region(io_base, 4, "ed")) { | ||
356 | printk(KERN_WARNING"Unable to request region 0x%x\n", io_base); | ||
357 | error = -EBUSY; | ||
358 | goto err_out2; | ||
359 | } | ||
360 | /* get the dma arbitration level */ | ||
361 | dma_arb_level = (status >> 2) & 0xf; | ||
362 | |||
363 | /* BA */ | ||
364 | printk("%s: DMA arbitration level : %d\n", | ||
365 | DEVICE_NAME, dma_arb_level); | ||
366 | |||
367 | LITE_ON; | ||
368 | current_int_handler = ps2esdi_initial_reset_int_handler; | ||
369 | reset_ctrl(); | ||
370 | reset_status = 0; | ||
371 | reset_start = jiffies; | ||
372 | while (!reset_status) { | ||
373 | init_timer(&esdi_timer); | ||
374 | esdi_timer.expires = jiffies + HZ; | ||
375 | esdi_timer.data = 0; | ||
376 | add_timer(&esdi_timer); | ||
377 | sleep_on(&ps2esdi_int); | ||
378 | } | ||
379 | reset_end = jiffies; | ||
380 | LITE_OFF; | ||
381 | printk("%s: reset interrupt after %d jiffies, %u.%02u secs\n", | ||
382 | DEVICE_NAME, reset_end - reset_start, (reset_end - reset_start) / HZ, | ||
383 | (reset_end - reset_start) % HZ); | ||
384 | |||
385 | |||
386 | /* Integrated ESDI Disk and Controller has only one drive! */ | ||
387 | if (adapterID == INTG_ESDI_ID) {/* if not "normal" PS2 ESDI adapter */ | ||
388 | ps2esdi_drives = 1; /* then we have only one physical disk! */ intg_esdi = 1; | ||
389 | } | ||
390 | |||
391 | |||
392 | |||
393 | /* finally this part sets up some global data structures etc. */ | ||
394 | |||
395 | ps2esdi_get_device_cfg(); | ||
396 | |||
397 | /* some annoyance in the above routine returns TWO drives? | ||
398 | Is something else happining in the background? | ||
399 | Regaurdless we fix the # of drives again. AJK */ | ||
400 | /* Integrated ESDI Disk and Controller has only one drive! */ | ||
401 | if (adapterID == INTG_ESDI_ID) /* if not "normal" PS2 ESDI adapter */ | ||
402 | ps2esdi_drives = 1; /* Not three or two, ONE DAMNIT! */ | ||
403 | |||
404 | current_int_handler = ps2esdi_normal_interrupt_handler; | ||
405 | |||
406 | if (request_dma(dma_arb_level, "ed") !=0) { | ||
407 | printk(KERN_WARNING "PS2ESDI: Can't request dma-channel %d\n" | ||
408 | ,(int) dma_arb_level); | ||
409 | error = -EBUSY; | ||
410 | goto err_out3; | ||
411 | } | ||
412 | blk_queue_max_sectors(ps2esdi_queue, 128); | ||
413 | |||
414 | error = -ENOMEM; | ||
415 | for (i = 0; i < ps2esdi_drives; i++) { | ||
416 | struct gendisk *disk = alloc_disk(64); | ||
417 | if (!disk) | ||
418 | goto err_out4; | ||
419 | disk->major = PS2ESDI_MAJOR; | ||
420 | disk->first_minor = i<<6; | ||
421 | sprintf(disk->disk_name, "ed%c", 'a'+i); | ||
422 | disk->fops = &ps2esdi_fops; | ||
423 | ps2esdi_gendisk[i] = disk; | ||
424 | } | ||
425 | |||
426 | for (i = 0; i < ps2esdi_drives; i++) { | ||
427 | struct gendisk *disk = ps2esdi_gendisk[i]; | ||
428 | set_capacity(disk, ps2esdi_info[i].head * ps2esdi_info[i].sect * | ||
429 | ps2esdi_info[i].cyl); | ||
430 | disk->queue = ps2esdi_queue; | ||
431 | disk->private_data = &ps2esdi_info[i]; | ||
432 | add_disk(disk); | ||
433 | } | ||
434 | return 0; | ||
435 | err_out4: | ||
436 | while (i--) | ||
437 | put_disk(ps2esdi_gendisk[i]); | ||
438 | err_out3: | ||
439 | release_region(io_base, 4); | ||
440 | err_out2: | ||
441 | free_irq(PS2ESDI_IRQ, &ps2esdi_gendisk); | ||
442 | err_out1: | ||
443 | if(ps2esdi_slot) { | ||
444 | mca_mark_as_unused(ps2esdi_slot); | ||
445 | mca_set_adapter_procfn(ps2esdi_slot, NULL, NULL); | ||
446 | } | ||
447 | return error; | ||
448 | } | ||
449 | |||
450 | static void __init ps2esdi_get_device_cfg(void) | ||
451 | { | ||
452 | u_short cmd_blk[TYPE_0_CMD_BLK_LENGTH]; | ||
453 | |||
454 | /*BA */ printk("%s: Drive 0\n", DEVICE_NAME); | ||
455 | current_int_handler = ps2esdi_geometry_int_handler; | ||
456 | cmd_blk[0] = CMD_GET_DEV_CONFIG | 0x600; | ||
457 | cmd_blk[1] = 0; | ||
458 | no_int_yet = TRUE; | ||
459 | ps2esdi_out_cmd_blk(cmd_blk); | ||
460 | if (no_int_yet) | ||
461 | sleep_on(&ps2esdi_int); | ||
462 | |||
463 | if (ps2esdi_drives > 1) { | ||
464 | printk("%s: Drive 1\n", DEVICE_NAME); /*BA */ | ||
465 | cmd_blk[0] = CMD_GET_DEV_CONFIG | (1 << 5) | 0x600; | ||
466 | cmd_blk[1] = 0; | ||
467 | no_int_yet = TRUE; | ||
468 | ps2esdi_out_cmd_blk(cmd_blk); | ||
469 | if (no_int_yet) | ||
470 | sleep_on(&ps2esdi_int); | ||
471 | } /* if second physical drive is present */ | ||
472 | return; | ||
473 | } | ||
474 | |||
475 | /* strategy routine that handles most of the IO requests */ | ||
476 | static void do_ps2esdi_request(struct request_queue * q) | ||
477 | { | ||
478 | struct request *req; | ||
479 | /* since, this routine is called with interrupts cleared - they | ||
480 | must be before it finishes */ | ||
481 | |||
482 | req = elv_next_request(q); | ||
483 | if (!req) | ||
484 | return; | ||
485 | |||
486 | #if 0 | ||
487 | printk("%s:got request. device : %s command : %d sector : %ld count : %ld, buffer: %p\n", | ||
488 | DEVICE_NAME, | ||
489 | req->rq_disk->disk_name, | ||
490 | req->cmd, req->sector, | ||
491 | req->current_nr_sectors, req->buffer); | ||
492 | #endif | ||
493 | |||
494 | /* check for above 16Mb dmas */ | ||
495 | if (isa_virt_to_bus(req->buffer + req->current_nr_sectors * 512) > 16 * MB) { | ||
496 | printk("%s: DMA above 16MB not supported\n", DEVICE_NAME); | ||
497 | end_request(req, FAIL); | ||
498 | return; | ||
499 | } | ||
500 | |||
501 | if (req->sector+req->current_nr_sectors > get_capacity(req->rq_disk)) { | ||
502 | printk("Grrr. error. ps2esdi_drives: %d, %llu %llu\n", | ||
503 | ps2esdi_drives, req->sector, | ||
504 | (unsigned long long)get_capacity(req->rq_disk)); | ||
505 | end_request(req, FAIL); | ||
506 | return; | ||
507 | } | ||
508 | |||
509 | switch (rq_data_dir(req)) { | ||
510 | case READ: | ||
511 | ps2esdi_readwrite(READ, req); | ||
512 | break; | ||
513 | case WRITE: | ||
514 | ps2esdi_readwrite(WRITE, req); | ||
515 | break; | ||
516 | default: | ||
517 | printk("%s: Unknown command\n", req->rq_disk->disk_name); | ||
518 | end_request(req, FAIL); | ||
519 | break; | ||
520 | } /* handle different commands */ | ||
521 | } /* main strategy routine */ | ||
522 | |||
523 | /* resets the ESDI adapter */ | ||
524 | static void reset_ctrl(void) | ||
525 | { | ||
526 | |||
527 | u_long expire; | ||
528 | u_short status; | ||
529 | |||
530 | /* enable interrupts on the controller */ | ||
531 | status = inb(ESDI_INTRPT); | ||
532 | outb((status & 0xe0) | ATT_EOI, ESDI_ATTN); /* to be sure we don't have | ||
533 | any interrupt pending... */ | ||
534 | outb_p(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
535 | |||
536 | /* read the ESDI status port - if the controller is not busy, | ||
537 | simply do a soft reset (fast) - otherwise we'll have to do a | ||
538 | hard (slow) reset. */ | ||
539 | if (!(inb_p(ESDI_STATUS) & STATUS_BUSY)) { | ||
540 | /*BA */ printk("%s: soft reset...\n", DEVICE_NAME); | ||
541 | outb_p(CTRL_SOFT_RESET, ESDI_ATTN); | ||
542 | } | ||
543 | /* soft reset */ | ||
544 | else { | ||
545 | /*BA */ | ||
546 | printk("%s: hard reset...\n", DEVICE_NAME); | ||
547 | outb_p(CTRL_HARD_RESET, ESDI_CONTROL); | ||
548 | expire = jiffies + 2*HZ; | ||
549 | while (time_before(jiffies, expire)); | ||
550 | outb_p(1, ESDI_CONTROL); | ||
551 | } /* hard reset */ | ||
552 | |||
553 | |||
554 | } /* reset the controller */ | ||
555 | |||
556 | /* called by the strategy routine to handle read and write requests */ | ||
557 | static void ps2esdi_readwrite(int cmd, struct request *req) | ||
558 | { | ||
559 | struct ps2esdi_i_struct *p = req->rq_disk->private_data; | ||
560 | unsigned block = req->sector; | ||
561 | unsigned count = req->current_nr_sectors; | ||
562 | int drive = p - ps2esdi_info; | ||
563 | u_short track, head, cylinder, sector; | ||
564 | u_short cmd_blk[TYPE_1_CMD_BLK_LENGTH]; | ||
565 | |||
566 | /* do some relevant arithmatic */ | ||
567 | track = block / p->sect; | ||
568 | head = track % p->head; | ||
569 | cylinder = track / p->head; | ||
570 | sector = block % p->sect; | ||
571 | |||
572 | #if 0 | ||
573 | printk("%s: cyl=%d head=%d sect=%d\n", DEVICE_NAME, cylinder, head, sector); | ||
574 | #endif | ||
575 | /* call the routine that actually fills out a command block */ | ||
576 | ps2esdi_fill_cmd_block | ||
577 | (cmd_blk, | ||
578 | (cmd == READ) ? CMD_READ : CMD_WRITE, | ||
579 | cylinder, head, sector, count, drive); | ||
580 | |||
581 | /* send the command block to the controller */ | ||
582 | current_req = req; | ||
583 | spin_unlock_irq(&ps2esdi_lock); | ||
584 | if (ps2esdi_out_cmd_blk(cmd_blk)) { | ||
585 | spin_lock_irq(&ps2esdi_lock); | ||
586 | printk("%s: Controller failed\n", DEVICE_NAME); | ||
587 | if ((++req->errors) >= MAX_RETRIES) | ||
588 | end_request(req, FAIL); | ||
589 | } | ||
590 | /* check for failure to put out the command block */ | ||
591 | else { | ||
592 | spin_lock_irq(&ps2esdi_lock); | ||
593 | #if 0 | ||
594 | printk("%s: waiting for xfer\n", DEVICE_NAME); | ||
595 | #endif | ||
596 | /* turn disk lights on */ | ||
597 | LITE_ON; | ||
598 | } | ||
599 | |||
600 | } /* ps2esdi_readwrite */ | ||
601 | |||
602 | /* fill out the command block */ | ||
603 | static void ps2esdi_fill_cmd_block(u_short * cmd_blk, u_short cmd, | ||
604 | u_short cyl, u_short head, u_short sector, u_short length, u_char drive) | ||
605 | { | ||
606 | |||
607 | cmd_blk[0] = (drive << 5) | cmd; | ||
608 | cmd_blk[1] = length; | ||
609 | cmd_blk[2] = ((cyl & 0x1f) << 11) | (head << 5) | sector; | ||
610 | cmd_blk[3] = (cyl & 0x3E0) >> 5; | ||
611 | |||
612 | } /* fill out the command block */ | ||
613 | |||
614 | /* write a command block to the controller */ | ||
615 | static int ps2esdi_out_cmd_blk(u_short * cmd_blk) | ||
616 | { | ||
617 | |||
618 | int i; | ||
619 | unsigned long jif; | ||
620 | u_char status; | ||
621 | |||
622 | /* enable interrupts */ | ||
623 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
624 | |||
625 | /* do not write to the controller, if it is busy */ | ||
626 | for (jif = jiffies + ESDI_STAT_TIMEOUT; | ||
627 | time_after(jif, jiffies) && | ||
628 | (inb(ESDI_STATUS) & STATUS_BUSY); ) | ||
629 | ; | ||
630 | |||
631 | #if 0 | ||
632 | printk("%s: i(1)=%ld\n", DEVICE_NAME, jif); | ||
633 | #endif | ||
634 | |||
635 | /* if device is still busy - then just time out */ | ||
636 | if (inb(ESDI_STATUS) & STATUS_BUSY) { | ||
637 | printk("%s: ps2esdi_out_cmd timed out (1)\n", DEVICE_NAME); | ||
638 | return ERROR; | ||
639 | } /* timeout ??? */ | ||
640 | /* Set up the attention register in the controller */ | ||
641 | outb(((*cmd_blk) & 0xE0) | 1, ESDI_ATTN); | ||
642 | |||
643 | #if 0 | ||
644 | printk("%s: sending %d words to controller\n", DEVICE_NAME, (((*cmd_blk) >> 14) + 1) << 1); | ||
645 | #endif | ||
646 | |||
647 | /* one by one send each word out */ | ||
648 | for (i = (((*cmd_blk) >> 14) + 1) << 1; i; i--) { | ||
649 | status = inb(ESDI_STATUS); | ||
650 | for (jif = jiffies + ESDI_STAT_TIMEOUT; | ||
651 | time_after(jif, jiffies) && (status & STATUS_BUSY) && | ||
652 | (status & STATUS_CMD_INF); status = inb(ESDI_STATUS)); | ||
653 | if ((status & (STATUS_BUSY | STATUS_CMD_INF)) == STATUS_BUSY) { | ||
654 | #if 0 | ||
655 | printk("%s: sending %04X\n", DEVICE_NAME, *cmd_blk); | ||
656 | #endif | ||
657 | outw(*cmd_blk++, ESDI_CMD_INT); | ||
658 | } else { | ||
659 | printk("%s: ps2esdi_out_cmd timed out while sending command (status=%02X)\n", | ||
660 | DEVICE_NAME, status); | ||
661 | return ERROR; | ||
662 | } | ||
663 | } /* send all words out */ | ||
664 | return OK; | ||
665 | } /* send out the commands */ | ||
666 | |||
667 | |||
668 | /* prepare for dma - do all the necessary setup */ | ||
669 | static void ps2esdi_prep_dma(char *buffer, u_short length, u_char dma_xmode) | ||
670 | { | ||
671 | unsigned long flags = claim_dma_lock(); | ||
672 | |||
673 | mca_disable_dma(dma_arb_level); | ||
674 | |||
675 | mca_set_dma_addr(dma_arb_level, isa_virt_to_bus(buffer)); | ||
676 | |||
677 | mca_set_dma_count(dma_arb_level, length * 512 / 2); | ||
678 | |||
679 | mca_set_dma_mode(dma_arb_level, dma_xmode); | ||
680 | |||
681 | mca_enable_dma(dma_arb_level); | ||
682 | |||
683 | release_dma_lock(flags); | ||
684 | |||
685 | } /* prepare for dma */ | ||
686 | |||
687 | |||
688 | |||
689 | static irqreturn_t ps2esdi_interrupt_handler(int irq, void *dev_id) | ||
690 | { | ||
691 | u_int int_ret_code; | ||
692 | |||
693 | if (inb(ESDI_STATUS) & STATUS_INTR) { | ||
694 | int_ret_code = inb(ESDI_INTRPT); | ||
695 | if (current_int_handler) { | ||
696 | /* Disable adapter interrupts till processing is finished */ | ||
697 | outb(CTRL_DISABLE_INTR, ESDI_CONTROL); | ||
698 | current_int_handler(int_ret_code); | ||
699 | } else | ||
700 | printk("%s: help ! No interrupt handler.\n", DEVICE_NAME); | ||
701 | } else { | ||
702 | return IRQ_NONE; | ||
703 | } | ||
704 | return IRQ_HANDLED; | ||
705 | } | ||
706 | |||
707 | static void ps2esdi_initial_reset_int_handler(u_int int_ret_code) | ||
708 | { | ||
709 | |||
710 | switch (int_ret_code & 0xf) { | ||
711 | case INT_RESET: | ||
712 | /*BA */ | ||
713 | printk("%s: initial reset completed.\n", DEVICE_NAME); | ||
714 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
715 | wake_up(&ps2esdi_int); | ||
716 | break; | ||
717 | case INT_ATTN_ERROR: | ||
718 | printk("%s: Attention error. interrupt status : %02X\n", DEVICE_NAME, | ||
719 | int_ret_code); | ||
720 | printk("%s: status: %02x\n", DEVICE_NAME, inb(ESDI_STATUS)); | ||
721 | break; | ||
722 | default: | ||
723 | printk("%s: initial reset handler received interrupt: %02X\n", | ||
724 | DEVICE_NAME, int_ret_code); | ||
725 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
726 | break; | ||
727 | } | ||
728 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
729 | } | ||
730 | |||
731 | |||
732 | static void ps2esdi_geometry_int_handler(u_int int_ret_code) | ||
733 | { | ||
734 | u_int status, drive_num; | ||
735 | unsigned long rba; | ||
736 | int i; | ||
737 | |||
738 | drive_num = int_ret_code >> 5; | ||
739 | switch (int_ret_code & 0xf) { | ||
740 | case INT_CMD_COMPLETE: | ||
741 | for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--); | ||
742 | if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) { | ||
743 | printk("%s: timeout reading status word\n", DEVICE_NAME); | ||
744 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
745 | break; | ||
746 | } | ||
747 | status = inw(ESDI_STT_INT); | ||
748 | if ((status & 0x1F) == CMD_GET_DEV_CONFIG) { | ||
749 | #define REPLY_WORDS 5 /* we already read word 0 */ | ||
750 | u_short reply[REPLY_WORDS]; | ||
751 | |||
752 | if (ps2esdi_read_status_words((status >> 8) - 1, REPLY_WORDS, reply)) { | ||
753 | /*BA */ | ||
754 | printk("%s: Device Configuration Status for drive %u\n", | ||
755 | DEVICE_NAME, drive_num); | ||
756 | |||
757 | printk("%s: Spares/cyls: %u", DEVICE_NAME, reply[0] >> 8); | ||
758 | |||
759 | printk | ||
760 | ("Config bits: %s%s%s%s%s\n", | ||
761 | (reply[0] & CONFIG_IS) ? "Invalid Secondary, " : "", | ||
762 | ((reply[0] & CONFIG_ZD) && !(reply[0] & CONFIG_IS)) | ||
763 | ? "Zero Defect, " : "Defects Present, ", | ||
764 | (reply[0] & CONFIG_SF) ? "Skewed Format, " : "", | ||
765 | (reply[0] & CONFIG_FR) ? "Removable, " : "Non-Removable, ", | ||
766 | (reply[0] & CONFIG_RT) ? "No Retries" : "Retries"); | ||
767 | |||
768 | rba = reply[1] | ((unsigned long) reply[2] << 16); | ||
769 | printk("%s: Number of RBA's: %lu\n", DEVICE_NAME, rba); | ||
770 | |||
771 | printk("%s: Physical number of cylinders: %u, Sectors/Track: %u, Heads: %u\n", | ||
772 | DEVICE_NAME, reply[3], reply[4] >> 8, reply[4] & 0xff); | ||
773 | |||
774 | if (!ps2esdi_info[drive_num].head) { | ||
775 | ps2esdi_info[drive_num].head = 64; | ||
776 | ps2esdi_info[drive_num].sect = 32; | ||
777 | ps2esdi_info[drive_num].cyl = rba / (64 * 32); | ||
778 | ps2esdi_info[drive_num].wpcom = 0; | ||
779 | ps2esdi_info[drive_num].lzone = ps2esdi_info[drive_num].cyl; | ||
780 | ps2esdi_info[drive_num].ctl = 8; | ||
781 | if (tp720esdi) { /* store the retrieved parameters */ | ||
782 | ps2esdi_info[0].head = reply[4] & 0Xff; | ||
783 | ps2esdi_info[0].sect = reply[4] >> 8; | ||
784 | ps2esdi_info[0].cyl = reply[3]; | ||
785 | ps2esdi_info[0].wpcom = 0; | ||
786 | ps2esdi_info[0].lzone = reply[3]; | ||
787 | } else { | ||
788 | if (!intg_esdi) | ||
789 | ps2esdi_drives++; | ||
790 | } | ||
791 | } | ||
792 | #ifdef OBSOLETE | ||
793 | if (!ps2esdi_info[drive_num].head) { | ||
794 | ps2esdi_info[drive_num].head = reply[4] & 0Xff; | ||
795 | ps2esdi_info[drive_num].sect = reply[4] >> 8; | ||
796 | ps2esdi_info[drive_num].cyl = reply[3]; | ||
797 | ps2esdi_info[drive_num].wpcom = 0; | ||
798 | ps2esdi_info[drive_num].lzone = reply[3]; | ||
799 | if (tp720esdi) { /* store the retrieved parameters */ | ||
800 | ps2esdi_info[0].head = reply[4] & 0Xff; | ||
801 | ps2esdi_info[0].sect = reply[4] >> 8; | ||
802 | ps2esdi_info[0].cyl = reply[3]; | ||
803 | ps2esdi_info[0].wpcom = 0; | ||
804 | ps2esdi_info[0].lzone = reply[3]; | ||
805 | } else { | ||
806 | ps2esdi_drives++; | ||
807 | } | ||
808 | } | ||
809 | #endif | ||
810 | |||
811 | } else | ||
812 | printk("%s: failed while getting device config\n", DEVICE_NAME); | ||
813 | #undef REPLY_WORDS | ||
814 | } else | ||
815 | printk("%s: command %02X unknown by geometry handler\n", | ||
816 | DEVICE_NAME, status & 0x1f); | ||
817 | |||
818 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
819 | break; | ||
820 | |||
821 | case INT_ATTN_ERROR: | ||
822 | printk("%s: Attention error. interrupt status : %02X\n", DEVICE_NAME, | ||
823 | int_ret_code); | ||
824 | printk("%s: Device not available\n", DEVICE_NAME); | ||
825 | break; | ||
826 | case INT_CMD_ECC: | ||
827 | case INT_CMD_RETRY: | ||
828 | case INT_CMD_ECC_RETRY: | ||
829 | case INT_CMD_WARNING: | ||
830 | case INT_CMD_ABORT: | ||
831 | case INT_CMD_FAILED: | ||
832 | case INT_DMA_ERR: | ||
833 | case INT_CMD_BLK_ERR: | ||
834 | /*BA */ printk("%s: Whaa. Error occurred...\n", DEVICE_NAME); | ||
835 | dump_cmd_complete_status(int_ret_code); | ||
836 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
837 | break; | ||
838 | default: | ||
839 | printk("%s: Unknown interrupt reason: %02X\n", | ||
840 | DEVICE_NAME, int_ret_code & 0xf); | ||
841 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
842 | break; | ||
843 | } | ||
844 | |||
845 | wake_up(&ps2esdi_int); | ||
846 | no_int_yet = FALSE; | ||
847 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
848 | |||
849 | } | ||
850 | |||
851 | static void ps2esdi_normal_interrupt_handler(u_int int_ret_code) | ||
852 | { | ||
853 | unsigned long flags; | ||
854 | u_int status; | ||
855 | u_int ending; | ||
856 | int i; | ||
857 | |||
858 | switch (int_ret_code & 0x0f) { | ||
859 | case INT_TRANSFER_REQ: | ||
860 | ps2esdi_prep_dma(current_req->buffer, | ||
861 | current_req->current_nr_sectors, | ||
862 | (rq_data_dir(current_req) == READ) | ||
863 | ? MCA_DMA_MODE_16 | MCA_DMA_MODE_WRITE | MCA_DMA_MODE_XFER | ||
864 | : MCA_DMA_MODE_16 | MCA_DMA_MODE_READ); | ||
865 | outb(CTRL_ENABLE_DMA | CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
866 | ending = -1; | ||
867 | break; | ||
868 | |||
869 | case INT_ATTN_ERROR: | ||
870 | printk("%s: Attention error. interrupt status : %02X\n", DEVICE_NAME, | ||
871 | int_ret_code); | ||
872 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
873 | ending = FAIL; | ||
874 | break; | ||
875 | |||
876 | case INT_CMD_COMPLETE: | ||
877 | for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--); | ||
878 | if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) { | ||
879 | printk("%s: timeout reading status word\n", DEVICE_NAME); | ||
880 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
881 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
882 | if ((++current_req->errors) >= MAX_RETRIES) | ||
883 | ending = FAIL; | ||
884 | else | ||
885 | ending = -1; | ||
886 | break; | ||
887 | } | ||
888 | status = inw(ESDI_STT_INT); | ||
889 | switch (status & 0x1F) { | ||
890 | case (CMD_READ & 0xff): | ||
891 | case (CMD_WRITE & 0xff): | ||
892 | LITE_OFF; | ||
893 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
894 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
895 | ending = SUCCES; | ||
896 | break; | ||
897 | default: | ||
898 | printk("%s: interrupt for unknown command %02X\n", | ||
899 | DEVICE_NAME, status & 0x1f); | ||
900 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
901 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
902 | ending = -1; | ||
903 | break; | ||
904 | } | ||
905 | break; | ||
906 | case INT_CMD_ECC: | ||
907 | case INT_CMD_RETRY: | ||
908 | case INT_CMD_ECC_RETRY: | ||
909 | LITE_OFF; | ||
910 | dump_cmd_complete_status(int_ret_code); | ||
911 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
912 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
913 | ending = SUCCES; | ||
914 | break; | ||
915 | case INT_CMD_WARNING: | ||
916 | case INT_CMD_ABORT: | ||
917 | case INT_CMD_FAILED: | ||
918 | case INT_DMA_ERR: | ||
919 | LITE_OFF; | ||
920 | dump_cmd_complete_status(int_ret_code); | ||
921 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
922 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
923 | if ((++current_req->errors) >= MAX_RETRIES) | ||
924 | ending = FAIL; | ||
925 | else | ||
926 | ending = -1; | ||
927 | break; | ||
928 | |||
929 | case INT_CMD_BLK_ERR: | ||
930 | dump_cmd_complete_status(int_ret_code); | ||
931 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
932 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
933 | ending = FAIL; | ||
934 | break; | ||
935 | |||
936 | case INT_CMD_FORMAT: | ||
937 | printk("%s: huh ? Who issued this format command ?\n" | ||
938 | ,DEVICE_NAME); | ||
939 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
940 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
941 | ending = -1; | ||
942 | break; | ||
943 | |||
944 | case INT_RESET: | ||
945 | /* BA printk("%s: reset completed.\n", DEVICE_NAME) */ ; | ||
946 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
947 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
948 | ending = -1; | ||
949 | break; | ||
950 | |||
951 | default: | ||
952 | printk("%s: Unknown interrupt reason: %02X\n", | ||
953 | DEVICE_NAME, int_ret_code & 0xf); | ||
954 | outb((int_ret_code & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
955 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
956 | ending = -1; | ||
957 | break; | ||
958 | } | ||
959 | if(ending != -1) { | ||
960 | spin_lock_irqsave(&ps2esdi_lock, flags); | ||
961 | end_request(current_req, ending); | ||
962 | current_req = NULL; | ||
963 | do_ps2esdi_request(ps2esdi_queue); | ||
964 | spin_unlock_irqrestore(&ps2esdi_lock, flags); | ||
965 | } | ||
966 | } /* handle interrupts */ | ||
967 | |||
968 | |||
969 | |||
970 | static int ps2esdi_read_status_words(int num_words, | ||
971 | int max_words, | ||
972 | u_short * buffer) | ||
973 | { | ||
974 | int i; | ||
975 | |||
976 | for (; max_words && num_words; max_words--, num_words--, buffer++) { | ||
977 | for (i = ESDI_TIMEOUT; i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL); i--); | ||
978 | if (!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) { | ||
979 | printk("%s: timeout reading status word\n", DEVICE_NAME); | ||
980 | return FAIL; | ||
981 | } | ||
982 | *buffer = inw(ESDI_STT_INT); | ||
983 | } | ||
984 | return SUCCES; | ||
985 | } | ||
986 | |||
987 | |||
988 | |||
989 | |||
990 | static void dump_cmd_complete_status(u_int int_ret_code) | ||
991 | { | ||
992 | #define WAIT_FOR_STATUS \ | ||
993 | for(i=ESDI_TIMEOUT;i && !(inb(ESDI_STATUS) & STATUS_STAT_AVAIL);i--); \ | ||
994 | if(!(inb(ESDI_STATUS) & STATUS_STAT_AVAIL)) { \ | ||
995 | printk("%s: timeout reading status word\n",DEVICE_NAME); \ | ||
996 | return; \ | ||
997 | } | ||
998 | |||
999 | int i, word_count; | ||
1000 | u_short stat_word; | ||
1001 | u_long rba; | ||
1002 | |||
1003 | printk("%s: Device: %u, interrupt ID: %02X\n", | ||
1004 | DEVICE_NAME, int_ret_code >> 5, | ||
1005 | int_ret_code & 0xf); | ||
1006 | |||
1007 | WAIT_FOR_STATUS; | ||
1008 | stat_word = inw(ESDI_STT_INT); | ||
1009 | word_count = (stat_word >> 8) - 1; | ||
1010 | printk("%s: %u status words, command: %02X\n", DEVICE_NAME, word_count, | ||
1011 | stat_word & 0xff); | ||
1012 | |||
1013 | if (word_count--) { | ||
1014 | WAIT_FOR_STATUS; | ||
1015 | stat_word = inw(ESDI_STT_INT); | ||
1016 | printk("%s: command status code: %02X, command error code: %02X\n", | ||
1017 | DEVICE_NAME, stat_word >> 8, stat_word & 0xff); | ||
1018 | } | ||
1019 | if (word_count--) { | ||
1020 | WAIT_FOR_STATUS; | ||
1021 | stat_word = inw(ESDI_STT_INT); | ||
1022 | printk("%s: device error code: %s%s%s%s%s,%02X\n", DEVICE_NAME, | ||
1023 | (stat_word & 0x1000) ? "Ready, " : "Not Ready, ", | ||
1024 | (stat_word & 0x0800) ? "Selected, " : "Not Selected, ", | ||
1025 | (stat_word & 0x0400) ? "Write Fault, " : "", | ||
1026 | (stat_word & 0x0200) ? "Track 0, " : "", | ||
1027 | (stat_word & 0x0100) ? "Seek or command complete, " : "", | ||
1028 | stat_word >> 8); | ||
1029 | } | ||
1030 | if (word_count--) { | ||
1031 | WAIT_FOR_STATUS; | ||
1032 | stat_word = inw(ESDI_STT_INT); | ||
1033 | printk("%s: Blocks to do: %u", DEVICE_NAME, stat_word); | ||
1034 | } | ||
1035 | if (word_count -= 2) { | ||
1036 | WAIT_FOR_STATUS; | ||
1037 | rba = inw(ESDI_STT_INT); | ||
1038 | WAIT_FOR_STATUS; | ||
1039 | rba |= inw(ESDI_STT_INT) << 16; | ||
1040 | printk(", Last Cyl: %u Head: %u Sector: %u\n", | ||
1041 | (u_short) ((rba & 0x1ff80000) >> 11), | ||
1042 | (u_short) ((rba & 0x7E0) >> 5), (u_short) (rba & 0x1f)); | ||
1043 | } else | ||
1044 | printk("\n"); | ||
1045 | |||
1046 | if (word_count--) { | ||
1047 | WAIT_FOR_STATUS; | ||
1048 | stat_word = inw(ESDI_STT_INT); | ||
1049 | printk("%s: Blocks required ECC: %u", DEVICE_NAME, stat_word); | ||
1050 | } | ||
1051 | printk("\n"); | ||
1052 | |||
1053 | #undef WAIT_FOR_STATUS | ||
1054 | |||
1055 | } | ||
1056 | |||
1057 | static int ps2esdi_getgeo(struct block_device *bdev, struct hd_geometry *geo) | ||
1058 | { | ||
1059 | struct ps2esdi_i_struct *p = bdev->bd_disk->private_data; | ||
1060 | |||
1061 | geo->heads = p->head; | ||
1062 | geo->sectors = p->sect; | ||
1063 | geo->cylinders = p->cyl; | ||
1064 | return 0; | ||
1065 | } | ||
1066 | |||
1067 | static void ps2esdi_reset_timer(unsigned long unused) | ||
1068 | { | ||
1069 | |||
1070 | int status; | ||
1071 | |||
1072 | status = inb(ESDI_INTRPT); | ||
1073 | if ((status & 0xf) == INT_RESET) { | ||
1074 | outb((status & 0xe0) | ATT_EOI, ESDI_ATTN); | ||
1075 | outb(CTRL_ENABLE_INTR, ESDI_CONTROL); | ||
1076 | reset_status = 1; | ||
1077 | } | ||
1078 | wake_up(&ps2esdi_int); | ||
1079 | } | ||
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 3b1a68d6eddb..0cfbe8c594a5 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c | |||
@@ -238,6 +238,7 @@ static int virtblk_probe(struct virtio_device *vdev) | |||
238 | vblk->disk->first_minor = index_to_minor(index); | 238 | vblk->disk->first_minor = index_to_minor(index); |
239 | vblk->disk->private_data = vblk; | 239 | vblk->disk->private_data = vblk; |
240 | vblk->disk->fops = &virtblk_fops; | 240 | vblk->disk->fops = &virtblk_fops; |
241 | vblk->disk->driverfs_dev = &vdev->dev; | ||
241 | index++; | 242 | index++; |
242 | 243 | ||
243 | /* If barriers are supported, tell block layer that queue is ordered */ | 244 | /* If barriers are supported, tell block layer that queue is ordered */ |
diff --git a/drivers/char/drm/ati_pcigart.c b/drivers/char/drm/ati_pcigart.c index d352dbb4ccf7..e5a0e97cfdda 100644 --- a/drivers/char/drm/ati_pcigart.c +++ b/drivers/char/drm/ati_pcigart.c | |||
@@ -35,42 +35,23 @@ | |||
35 | 35 | ||
36 | # define ATI_PCIGART_PAGE_SIZE 4096 /**< PCI GART page size */ | 36 | # define ATI_PCIGART_PAGE_SIZE 4096 /**< PCI GART page size */ |
37 | 37 | ||
38 | static void *drm_ati_alloc_pcigart_table(int order) | 38 | static int drm_ati_alloc_pcigart_table(struct drm_device *dev, |
39 | struct drm_ati_pcigart_info *gart_info) | ||
39 | { | 40 | { |
40 | unsigned long address; | 41 | gart_info->table_handle = drm_pci_alloc(dev, gart_info->table_size, |
41 | struct page *page; | 42 | PAGE_SIZE, |
42 | int i; | 43 | gart_info->table_mask); |
43 | 44 | if (gart_info->table_handle == NULL) | |
44 | DRM_DEBUG("%d order\n", order); | 45 | return -ENOMEM; |
45 | |||
46 | address = __get_free_pages(GFP_KERNEL | __GFP_COMP, | ||
47 | order); | ||
48 | if (address == 0UL) { | ||
49 | return NULL; | ||
50 | } | ||
51 | |||
52 | page = virt_to_page(address); | ||
53 | 46 | ||
54 | for (i = 0; i < order; i++, page++) | 47 | return 0; |
55 | SetPageReserved(page); | ||
56 | |||
57 | DRM_DEBUG("returning 0x%08lx\n", address); | ||
58 | return (void *)address; | ||
59 | } | 48 | } |
60 | 49 | ||
61 | static void drm_ati_free_pcigart_table(void *address, int order) | 50 | static void drm_ati_free_pcigart_table(struct drm_device *dev, |
51 | struct drm_ati_pcigart_info *gart_info) | ||
62 | { | 52 | { |
63 | struct page *page; | 53 | drm_pci_free(dev, gart_info->table_handle); |
64 | int i; | 54 | gart_info->table_handle = NULL; |
65 | int num_pages = 1 << order; | ||
66 | DRM_DEBUG("\n"); | ||
67 | |||
68 | page = virt_to_page((unsigned long)address); | ||
69 | |||
70 | for (i = 0; i < num_pages; i++, page++) | ||
71 | ClearPageReserved(page); | ||
72 | |||
73 | free_pages((unsigned long)address, order); | ||
74 | } | 55 | } |
75 | 56 | ||
76 | int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info) | 57 | int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info *gart_info) |
@@ -78,8 +59,7 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info | |||
78 | struct drm_sg_mem *entry = dev->sg; | 59 | struct drm_sg_mem *entry = dev->sg; |
79 | unsigned long pages; | 60 | unsigned long pages; |
80 | int i; | 61 | int i; |
81 | int order; | 62 | int max_pages; |
82 | int num_pages, max_pages; | ||
83 | 63 | ||
84 | /* we need to support large memory configurations */ | 64 | /* we need to support large memory configurations */ |
85 | if (!entry) { | 65 | if (!entry) { |
@@ -87,15 +67,7 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info | |||
87 | return 0; | 67 | return 0; |
88 | } | 68 | } |
89 | 69 | ||
90 | order = drm_order((gart_info->table_size + (PAGE_SIZE-1)) / PAGE_SIZE); | ||
91 | num_pages = 1 << order; | ||
92 | |||
93 | if (gart_info->bus_addr) { | 70 | if (gart_info->bus_addr) { |
94 | if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) { | ||
95 | pci_unmap_single(dev->pdev, gart_info->bus_addr, | ||
96 | num_pages * PAGE_SIZE, | ||
97 | PCI_DMA_TODEVICE); | ||
98 | } | ||
99 | 71 | ||
100 | max_pages = (gart_info->table_size / sizeof(u32)); | 72 | max_pages = (gart_info->table_size / sizeof(u32)); |
101 | pages = (entry->pages <= max_pages) | 73 | pages = (entry->pages <= max_pages) |
@@ -112,10 +84,9 @@ int drm_ati_pcigart_cleanup(struct drm_device *dev, struct drm_ati_pcigart_info | |||
112 | gart_info->bus_addr = 0; | 84 | gart_info->bus_addr = 0; |
113 | } | 85 | } |
114 | 86 | ||
115 | if (gart_info->gart_table_location == DRM_ATI_GART_MAIN | 87 | if (gart_info->gart_table_location == DRM_ATI_GART_MAIN && |
116 | && gart_info->addr) { | 88 | gart_info->table_handle) { |
117 | drm_ati_free_pcigart_table(gart_info->addr, order); | 89 | drm_ati_free_pcigart_table(dev, gart_info); |
118 | gart_info->addr = NULL; | ||
119 | } | 90 | } |
120 | 91 | ||
121 | return 1; | 92 | return 1; |
@@ -127,11 +98,10 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga | |||
127 | struct drm_sg_mem *entry = dev->sg; | 98 | struct drm_sg_mem *entry = dev->sg; |
128 | void *address = NULL; | 99 | void *address = NULL; |
129 | unsigned long pages; | 100 | unsigned long pages; |
130 | u32 *pci_gart, page_base, bus_address = 0; | 101 | u32 *pci_gart, page_base; |
102 | dma_addr_t bus_address = 0; | ||
131 | int i, j, ret = 0; | 103 | int i, j, ret = 0; |
132 | int order; | ||
133 | int max_pages; | 104 | int max_pages; |
134 | int num_pages; | ||
135 | 105 | ||
136 | if (!entry) { | 106 | if (!entry) { |
137 | DRM_ERROR("no scatter/gather memory!\n"); | 107 | DRM_ERROR("no scatter/gather memory!\n"); |
@@ -141,31 +111,14 @@ int drm_ati_pcigart_init(struct drm_device *dev, struct drm_ati_pcigart_info *ga | |||
141 | if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) { | 111 | if (gart_info->gart_table_location == DRM_ATI_GART_MAIN) { |
142 | DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n"); | 112 | DRM_DEBUG("PCI: no table in VRAM: using normal RAM\n"); |
143 | 113 | ||
144 | order = drm_order((gart_info->table_size + | 114 | ret = drm_ati_alloc_pcigart_table(dev, gart_info); |
145 | (PAGE_SIZE-1)) / PAGE_SIZE); | 115 | if (ret) { |
146 | num_pages = 1 << order; | ||
147 | address = drm_ati_alloc_pcigart_table(order); | ||
148 | if (!address) { | ||
149 | DRM_ERROR("cannot allocate PCI GART page!\n"); | 116 | DRM_ERROR("cannot allocate PCI GART page!\n"); |
150 | goto done; | 117 | goto done; |
151 | } | 118 | } |
152 | 119 | ||
153 | if (!dev->pdev) { | 120 | address = gart_info->table_handle->vaddr; |
154 | DRM_ERROR("PCI device unknown!\n"); | 121 | bus_address = gart_info->table_handle->busaddr; |
155 | goto done; | ||
156 | } | ||
157 | |||
158 | bus_address = pci_map_single(dev->pdev, address, | ||
159 | num_pages * PAGE_SIZE, | ||
160 | PCI_DMA_TODEVICE); | ||
161 | if (bus_address == 0) { | ||
162 | DRM_ERROR("unable to map PCIGART pages!\n"); | ||
163 | order = drm_order((gart_info->table_size + | ||
164 | (PAGE_SIZE-1)) / PAGE_SIZE); | ||
165 | drm_ati_free_pcigart_table(address, order); | ||
166 | address = NULL; | ||
167 | goto done; | ||
168 | } | ||
169 | } else { | 122 | } else { |
170 | address = gart_info->addr; | 123 | address = gart_info->addr; |
171 | bus_address = gart_info->bus_addr; | 124 | bus_address = gart_info->bus_addr; |
diff --git a/drivers/char/drm/drmP.h b/drivers/char/drm/drmP.h index a6789f25009b..8ea9dd1717a9 100644 --- a/drivers/char/drm/drmP.h +++ b/drivers/char/drm/drmP.h | |||
@@ -54,6 +54,7 @@ | |||
54 | #include <linux/pci.h> | 54 | #include <linux/pci.h> |
55 | #include <linux/jiffies.h> | 55 | #include <linux/jiffies.h> |
56 | #include <linux/smp_lock.h> /* For (un)lock_kernel */ | 56 | #include <linux/smp_lock.h> /* For (un)lock_kernel */ |
57 | #include <linux/dma-mapping.h> | ||
57 | #include <linux/mm.h> | 58 | #include <linux/mm.h> |
58 | #include <linux/cdev.h> | 59 | #include <linux/cdev.h> |
59 | #include <linux/mutex.h> | 60 | #include <linux/mutex.h> |
@@ -551,6 +552,8 @@ struct drm_ati_pcigart_info { | |||
551 | int gart_reg_if; | 552 | int gart_reg_if; |
552 | void *addr; | 553 | void *addr; |
553 | dma_addr_t bus_addr; | 554 | dma_addr_t bus_addr; |
555 | dma_addr_t table_mask; | ||
556 | struct drm_dma_handle *table_handle; | ||
554 | drm_local_map_t mapping; | 557 | drm_local_map_t mapping; |
555 | int table_size; | 558 | int table_size; |
556 | }; | 559 | }; |
diff --git a/drivers/char/drm/drm_fops.c b/drivers/char/drm/drm_fops.c index 3992f73299cc..f09d4b5002b0 100644 --- a/drivers/char/drm/drm_fops.c +++ b/drivers/char/drm/drm_fops.c | |||
@@ -326,6 +326,7 @@ int drm_release(struct inode *inode, struct file *filp) | |||
326 | struct drm_file *file_priv = filp->private_data; | 326 | struct drm_file *file_priv = filp->private_data; |
327 | struct drm_device *dev = file_priv->head->dev; | 327 | struct drm_device *dev = file_priv->head->dev; |
328 | int retcode = 0; | 328 | int retcode = 0; |
329 | unsigned long irqflags; | ||
329 | 330 | ||
330 | lock_kernel(); | 331 | lock_kernel(); |
331 | 332 | ||
@@ -357,9 +358,11 @@ int drm_release(struct inode *inode, struct file *filp) | |||
357 | */ | 358 | */ |
358 | 359 | ||
359 | do{ | 360 | do{ |
360 | spin_lock(&dev->lock.spinlock); | 361 | spin_lock_irqsave(&dev->lock.spinlock, |
362 | irqflags); | ||
361 | locked = dev->lock.idle_has_lock; | 363 | locked = dev->lock.idle_has_lock; |
362 | spin_unlock(&dev->lock.spinlock); | 364 | spin_unlock_irqrestore(&dev->lock.spinlock, |
365 | irqflags); | ||
363 | if (locked) | 366 | if (locked) |
364 | break; | 367 | break; |
365 | schedule(); | 368 | schedule(); |
diff --git a/drivers/char/drm/drm_lock.c b/drivers/char/drm/drm_lock.c index bea2a7d5b2b2..12dcdd1832f0 100644 --- a/drivers/char/drm/drm_lock.c +++ b/drivers/char/drm/drm_lock.c | |||
@@ -53,6 +53,7 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv) | |||
53 | DECLARE_WAITQUEUE(entry, current); | 53 | DECLARE_WAITQUEUE(entry, current); |
54 | struct drm_lock *lock = data; | 54 | struct drm_lock *lock = data; |
55 | int ret = 0; | 55 | int ret = 0; |
56 | unsigned long irqflags; | ||
56 | 57 | ||
57 | ++file_priv->lock_count; | 58 | ++file_priv->lock_count; |
58 | 59 | ||
@@ -71,9 +72,9 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv) | |||
71 | return -EINVAL; | 72 | return -EINVAL; |
72 | 73 | ||
73 | add_wait_queue(&dev->lock.lock_queue, &entry); | 74 | add_wait_queue(&dev->lock.lock_queue, &entry); |
74 | spin_lock(&dev->lock.spinlock); | 75 | spin_lock_irqsave(&dev->lock.spinlock, irqflags); |
75 | dev->lock.user_waiters++; | 76 | dev->lock.user_waiters++; |
76 | spin_unlock(&dev->lock.spinlock); | 77 | spin_unlock_irqrestore(&dev->lock.spinlock, irqflags); |
77 | for (;;) { | 78 | for (;;) { |
78 | __set_current_state(TASK_INTERRUPTIBLE); | 79 | __set_current_state(TASK_INTERRUPTIBLE); |
79 | if (!dev->lock.hw_lock) { | 80 | if (!dev->lock.hw_lock) { |
@@ -95,9 +96,9 @@ int drm_lock(struct drm_device *dev, void *data, struct drm_file *file_priv) | |||
95 | break; | 96 | break; |
96 | } | 97 | } |
97 | } | 98 | } |
98 | spin_lock(&dev->lock.spinlock); | 99 | spin_lock_irqsave(&dev->lock.spinlock, irqflags); |
99 | dev->lock.user_waiters--; | 100 | dev->lock.user_waiters--; |
100 | spin_unlock(&dev->lock.spinlock); | 101 | spin_unlock_irqrestore(&dev->lock.spinlock, irqflags); |
101 | __set_current_state(TASK_RUNNING); | 102 | __set_current_state(TASK_RUNNING); |
102 | remove_wait_queue(&dev->lock.lock_queue, &entry); | 103 | remove_wait_queue(&dev->lock.lock_queue, &entry); |
103 | 104 | ||
@@ -198,8 +199,9 @@ int drm_lock_take(struct drm_lock_data *lock_data, | |||
198 | { | 199 | { |
199 | unsigned int old, new, prev; | 200 | unsigned int old, new, prev; |
200 | volatile unsigned int *lock = &lock_data->hw_lock->lock; | 201 | volatile unsigned int *lock = &lock_data->hw_lock->lock; |
202 | unsigned long irqflags; | ||
201 | 203 | ||
202 | spin_lock(&lock_data->spinlock); | 204 | spin_lock_irqsave(&lock_data->spinlock, irqflags); |
203 | do { | 205 | do { |
204 | old = *lock; | 206 | old = *lock; |
205 | if (old & _DRM_LOCK_HELD) | 207 | if (old & _DRM_LOCK_HELD) |
@@ -211,7 +213,7 @@ int drm_lock_take(struct drm_lock_data *lock_data, | |||
211 | } | 213 | } |
212 | prev = cmpxchg(lock, old, new); | 214 | prev = cmpxchg(lock, old, new); |
213 | } while (prev != old); | 215 | } while (prev != old); |
214 | spin_unlock(&lock_data->spinlock); | 216 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); |
215 | 217 | ||
216 | if (_DRM_LOCKING_CONTEXT(old) == context) { | 218 | if (_DRM_LOCKING_CONTEXT(old) == context) { |
217 | if (old & _DRM_LOCK_HELD) { | 219 | if (old & _DRM_LOCK_HELD) { |
@@ -272,15 +274,16 @@ int drm_lock_free(struct drm_lock_data *lock_data, unsigned int context) | |||
272 | { | 274 | { |
273 | unsigned int old, new, prev; | 275 | unsigned int old, new, prev; |
274 | volatile unsigned int *lock = &lock_data->hw_lock->lock; | 276 | volatile unsigned int *lock = &lock_data->hw_lock->lock; |
277 | unsigned long irqflags; | ||
275 | 278 | ||
276 | spin_lock(&lock_data->spinlock); | 279 | spin_lock_irqsave(&lock_data->spinlock, irqflags); |
277 | if (lock_data->kernel_waiters != 0) { | 280 | if (lock_data->kernel_waiters != 0) { |
278 | drm_lock_transfer(lock_data, 0); | 281 | drm_lock_transfer(lock_data, 0); |
279 | lock_data->idle_has_lock = 1; | 282 | lock_data->idle_has_lock = 1; |
280 | spin_unlock(&lock_data->spinlock); | 283 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); |
281 | return 1; | 284 | return 1; |
282 | } | 285 | } |
283 | spin_unlock(&lock_data->spinlock); | 286 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); |
284 | 287 | ||
285 | do { | 288 | do { |
286 | old = *lock; | 289 | old = *lock; |
@@ -344,19 +347,20 @@ static int drm_notifier(void *priv) | |||
344 | void drm_idlelock_take(struct drm_lock_data *lock_data) | 347 | void drm_idlelock_take(struct drm_lock_data *lock_data) |
345 | { | 348 | { |
346 | int ret = 0; | 349 | int ret = 0; |
350 | unsigned long irqflags; | ||
347 | 351 | ||
348 | spin_lock(&lock_data->spinlock); | 352 | spin_lock_irqsave(&lock_data->spinlock, irqflags); |
349 | lock_data->kernel_waiters++; | 353 | lock_data->kernel_waiters++; |
350 | if (!lock_data->idle_has_lock) { | 354 | if (!lock_data->idle_has_lock) { |
351 | 355 | ||
352 | spin_unlock(&lock_data->spinlock); | 356 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); |
353 | ret = drm_lock_take(lock_data, DRM_KERNEL_CONTEXT); | 357 | ret = drm_lock_take(lock_data, DRM_KERNEL_CONTEXT); |
354 | spin_lock(&lock_data->spinlock); | 358 | spin_lock_irqsave(&lock_data->spinlock, irqflags); |
355 | 359 | ||
356 | if (ret == 1) | 360 | if (ret == 1) |
357 | lock_data->idle_has_lock = 1; | 361 | lock_data->idle_has_lock = 1; |
358 | } | 362 | } |
359 | spin_unlock(&lock_data->spinlock); | 363 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); |
360 | } | 364 | } |
361 | EXPORT_SYMBOL(drm_idlelock_take); | 365 | EXPORT_SYMBOL(drm_idlelock_take); |
362 | 366 | ||
@@ -364,8 +368,9 @@ void drm_idlelock_release(struct drm_lock_data *lock_data) | |||
364 | { | 368 | { |
365 | unsigned int old, prev; | 369 | unsigned int old, prev; |
366 | volatile unsigned int *lock = &lock_data->hw_lock->lock; | 370 | volatile unsigned int *lock = &lock_data->hw_lock->lock; |
371 | unsigned long irqflags; | ||
367 | 372 | ||
368 | spin_lock(&lock_data->spinlock); | 373 | spin_lock_irqsave(&lock_data->spinlock, irqflags); |
369 | if (--lock_data->kernel_waiters == 0) { | 374 | if (--lock_data->kernel_waiters == 0) { |
370 | if (lock_data->idle_has_lock) { | 375 | if (lock_data->idle_has_lock) { |
371 | do { | 376 | do { |
@@ -376,7 +381,7 @@ void drm_idlelock_release(struct drm_lock_data *lock_data) | |||
376 | lock_data->idle_has_lock = 0; | 381 | lock_data->idle_has_lock = 0; |
377 | } | 382 | } |
378 | } | 383 | } |
379 | spin_unlock(&lock_data->spinlock); | 384 | spin_unlock_irqrestore(&lock_data->spinlock, irqflags); |
380 | } | 385 | } |
381 | EXPORT_SYMBOL(drm_idlelock_release); | 386 | EXPORT_SYMBOL(drm_idlelock_release); |
382 | 387 | ||
diff --git a/drivers/char/drm/drm_pciids.h b/drivers/char/drm/drm_pciids.h index 715b361f0c2b..a6a499f97e22 100644 --- a/drivers/char/drm/drm_pciids.h +++ b/drivers/char/drm/drm_pciids.h | |||
@@ -205,9 +205,9 @@ | |||
205 | {0x1002, 0x71D6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 205 | {0x1002, 0x71D6, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
206 | {0x1002, 0x71DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_NEW_MEMMAP}, \ | 206 | {0x1002, 0x71DA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_NEW_MEMMAP}, \ |
207 | {0x1002, 0x71DE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 207 | {0x1002, 0x71DE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
208 | {0x1002, 0x7200, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_NEW_MEMMAP}, \ | 208 | {0x1002, 0x7200, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV515|RADEON_NEW_MEMMAP}, \ |
209 | {0x1002, 0x7210, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 209 | {0x1002, 0x7210, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV515|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
210 | {0x1002, 0x7211, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV530|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 210 | {0x1002, 0x7211, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RV515|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
211 | {0x1002, 0x7240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ | 211 | {0x1002, 0x7240, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ |
212 | {0x1002, 0x7243, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ | 212 | {0x1002, 0x7243, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ |
213 | {0x1002, 0x7244, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ | 213 | {0x1002, 0x7244, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_R580|RADEON_NEW_MEMMAP}, \ |
@@ -238,6 +238,7 @@ | |||
238 | {0x1002, 0x7834, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_NEW_MEMMAP}, \ | 238 | {0x1002, 0x7834, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_NEW_MEMMAP}, \ |
239 | {0x1002, 0x7835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ | 239 | {0x1002, 0x7835, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS300|RADEON_IS_IGP|RADEON_IS_MOBILITY|RADEON_NEW_MEMMAP}, \ |
240 | {0x1002, 0x791e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \ | 240 | {0x1002, 0x791e, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \ |
241 | {0x1002, 0x791f, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RS690|RADEON_IS_IGP|RADEON_NEW_MEMMAP|RADEON_IS_IGPGART}, \ | ||
241 | {0, 0, 0} | 242 | {0, 0, 0} |
242 | 243 | ||
243 | #define r128_PCI_IDS \ | 244 | #define r128_PCI_IDS \ |
diff --git a/drivers/char/drm/r128_cce.c b/drivers/char/drm/r128_cce.c index 892e0a589846..f36adbd3aaf5 100644 --- a/drivers/char/drm/r128_cce.c +++ b/drivers/char/drm/r128_cce.c | |||
@@ -558,6 +558,7 @@ static int r128_do_init_cce(struct drm_device * dev, drm_r128_init_t * init) | |||
558 | #if __OS_HAS_AGP | 558 | #if __OS_HAS_AGP |
559 | if (dev_priv->is_pci) { | 559 | if (dev_priv->is_pci) { |
560 | #endif | 560 | #endif |
561 | dev_priv->gart_info.table_mask = DMA_BIT_MASK(32); | ||
561 | dev_priv->gart_info.gart_table_location = DRM_ATI_GART_MAIN; | 562 | dev_priv->gart_info.gart_table_location = DRM_ATI_GART_MAIN; |
562 | dev_priv->gart_info.table_size = R128_PCIGART_TABLE_SIZE; | 563 | dev_priv->gart_info.table_size = R128_PCIGART_TABLE_SIZE; |
563 | dev_priv->gart_info.addr = NULL; | 564 | dev_priv->gart_info.addr = NULL; |
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c index 833abc7e55fb..9072e4a1894e 100644 --- a/drivers/char/drm/radeon_cp.c +++ b/drivers/char/drm/radeon_cp.c | |||
@@ -1807,6 +1807,7 @@ static int radeon_do_init_cp(struct drm_device * dev, drm_radeon_init_t * init) | |||
1807 | } else | 1807 | } else |
1808 | #endif | 1808 | #endif |
1809 | { | 1809 | { |
1810 | dev_priv->gart_info.table_mask = DMA_BIT_MASK(32); | ||
1810 | /* if we have an offset set from userspace */ | 1811 | /* if we have an offset set from userspace */ |
1811 | if (dev_priv->pcigart_offset_set) { | 1812 | if (dev_priv->pcigart_offset_set) { |
1812 | dev_priv->gart_info.bus_addr = | 1813 | dev_priv->gart_info.bus_addr = |
diff --git a/drivers/char/drm/via_dma.c b/drivers/char/drm/via_dma.c index 94baec692b57..7a339dba6a69 100644 --- a/drivers/char/drm/via_dma.c +++ b/drivers/char/drm/via_dma.c | |||
@@ -126,6 +126,8 @@ via_cmdbuf_wait(drm_via_private_t * dev_priv, unsigned int size) | |||
126 | hw_addr, cur_addr, next_addr); | 126 | hw_addr, cur_addr, next_addr); |
127 | return -1; | 127 | return -1; |
128 | } | 128 | } |
129 | if ((cur_addr < hw_addr) && (next_addr >= hw_addr)) | ||
130 | msleep(1); | ||
129 | } while ((cur_addr < hw_addr) && (next_addr >= hw_addr)); | 131 | } while ((cur_addr < hw_addr) && (next_addr >= hw_addr)); |
130 | return 0; | 132 | return 0; |
131 | } | 133 | } |
@@ -416,27 +418,50 @@ static int via_hook_segment(drm_via_private_t * dev_priv, | |||
416 | int paused, count; | 418 | int paused, count; |
417 | volatile uint32_t *paused_at = dev_priv->last_pause_ptr; | 419 | volatile uint32_t *paused_at = dev_priv->last_pause_ptr; |
418 | uint32_t reader,ptr; | 420 | uint32_t reader,ptr; |
421 | uint32_t diff; | ||
419 | 422 | ||
420 | paused = 0; | 423 | paused = 0; |
421 | via_flush_write_combine(); | 424 | via_flush_write_combine(); |
422 | (void) *(volatile uint32_t *)(via_get_dma(dev_priv) -1); | 425 | (void) *(volatile uint32_t *)(via_get_dma(dev_priv) -1); |
426 | |||
423 | *paused_at = pause_addr_lo; | 427 | *paused_at = pause_addr_lo; |
424 | via_flush_write_combine(); | 428 | via_flush_write_combine(); |
425 | (void) *paused_at; | 429 | (void) *paused_at; |
430 | |||
426 | reader = *(dev_priv->hw_addr_ptr); | 431 | reader = *(dev_priv->hw_addr_ptr); |
427 | ptr = ((volatile char *)paused_at - dev_priv->dma_ptr) + | 432 | ptr = ((volatile char *)paused_at - dev_priv->dma_ptr) + |
428 | dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr + 4; | 433 | dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr + 4; |
434 | |||
429 | dev_priv->last_pause_ptr = via_get_dma(dev_priv) - 1; | 435 | dev_priv->last_pause_ptr = via_get_dma(dev_priv) - 1; |
430 | 436 | ||
431 | if ((ptr - reader) <= dev_priv->dma_diff ) { | 437 | /* |
432 | count = 10000000; | 438 | * If there is a possibility that the command reader will |
433 | while (!(paused = (VIA_READ(0x41c) & 0x80000000)) && count--); | 439 | * miss the new pause address and pause on the old one, |
440 | * In that case we need to program the new start address | ||
441 | * using PCI. | ||
442 | */ | ||
443 | |||
444 | diff = (uint32_t) (ptr - reader) - dev_priv->dma_diff; | ||
445 | count = 10000000; | ||
446 | while(diff == 0 && count--) { | ||
447 | paused = (VIA_READ(0x41c) & 0x80000000); | ||
448 | if (paused) | ||
449 | break; | ||
450 | reader = *(dev_priv->hw_addr_ptr); | ||
451 | diff = (uint32_t) (ptr - reader) - dev_priv->dma_diff; | ||
434 | } | 452 | } |
435 | 453 | ||
454 | paused = VIA_READ(0x41c) & 0x80000000; | ||
455 | |||
436 | if (paused && !no_pci_fire) { | 456 | if (paused && !no_pci_fire) { |
437 | reader = *(dev_priv->hw_addr_ptr); | 457 | reader = *(dev_priv->hw_addr_ptr); |
438 | if ((ptr - reader) == dev_priv->dma_diff) { | 458 | diff = (uint32_t) (ptr - reader) - dev_priv->dma_diff; |
439 | 459 | diff &= (dev_priv->dma_high - 1); | |
460 | if (diff != 0 && diff < (dev_priv->dma_high >> 1)) { | ||
461 | DRM_ERROR("Paused at incorrect address. " | ||
462 | "0x%08x, 0x%08x 0x%08x\n", | ||
463 | ptr, reader, dev_priv->dma_diff); | ||
464 | } else if (diff == 0) { | ||
440 | /* | 465 | /* |
441 | * There is a concern that these writes may stall the PCI bus | 466 | * There is a concern that these writes may stall the PCI bus |
442 | * if the GPU is not idle. However, idling the GPU first | 467 | * if the GPU is not idle. However, idling the GPU first |
@@ -577,6 +602,7 @@ static void via_cmdbuf_jump(drm_via_private_t * dev_priv) | |||
577 | uint32_t pause_addr_lo, pause_addr_hi; | 602 | uint32_t pause_addr_lo, pause_addr_hi; |
578 | uint32_t jump_addr_lo, jump_addr_hi; | 603 | uint32_t jump_addr_lo, jump_addr_hi; |
579 | volatile uint32_t *last_pause_ptr; | 604 | volatile uint32_t *last_pause_ptr; |
605 | uint32_t dma_low_save1, dma_low_save2; | ||
580 | 606 | ||
581 | agp_base = dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr; | 607 | agp_base = dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr; |
582 | via_align_cmd(dev_priv, HC_HAGPBpID_JUMP, 0, &jump_addr_hi, | 608 | via_align_cmd(dev_priv, HC_HAGPBpID_JUMP, 0, &jump_addr_hi, |
@@ -603,8 +629,29 @@ static void via_cmdbuf_jump(drm_via_private_t * dev_priv) | |||
603 | &pause_addr_lo, 0); | 629 | &pause_addr_lo, 0); |
604 | 630 | ||
605 | *last_pause_ptr = pause_addr_lo; | 631 | *last_pause_ptr = pause_addr_lo; |
632 | dma_low_save1 = dev_priv->dma_low; | ||
606 | 633 | ||
607 | via_hook_segment( dev_priv, jump_addr_hi, jump_addr_lo, 0); | 634 | /* |
635 | * Now, set a trap that will pause the regulator if it tries to rerun the old | ||
636 | * command buffer. (Which may happen if via_hook_segment detecs a command regulator pause | ||
637 | * and reissues the jump command over PCI, while the regulator has already taken the jump | ||
638 | * and actually paused at the current buffer end). | ||
639 | * There appears to be no other way to detect this condition, since the hw_addr_pointer | ||
640 | * does not seem to get updated immediately when a jump occurs. | ||
641 | */ | ||
642 | |||
643 | last_pause_ptr = | ||
644 | via_align_cmd(dev_priv, HC_HAGPBpID_PAUSE, 0, &pause_addr_hi, | ||
645 | &pause_addr_lo, 0) - 1; | ||
646 | via_align_cmd(dev_priv, HC_HAGPBpID_PAUSE, 0, &pause_addr_hi, | ||
647 | &pause_addr_lo, 0); | ||
648 | *last_pause_ptr = pause_addr_lo; | ||
649 | |||
650 | dma_low_save2 = dev_priv->dma_low; | ||
651 | dev_priv->dma_low = dma_low_save1; | ||
652 | via_hook_segment(dev_priv, jump_addr_hi, jump_addr_lo, 0); | ||
653 | dev_priv->dma_low = dma_low_save2; | ||
654 | via_hook_segment(dev_priv, pause_addr_hi, pause_addr_lo, 0); | ||
608 | } | 655 | } |
609 | 656 | ||
610 | 657 | ||
diff --git a/drivers/char/drm/via_dmablit.c b/drivers/char/drm/via_dmablit.c index 33c5197b73c4..409e00afdd07 100644 --- a/drivers/char/drm/via_dmablit.c +++ b/drivers/char/drm/via_dmablit.c | |||
@@ -603,7 +603,7 @@ via_build_sg_info(struct drm_device *dev, drm_via_sg_info_t *vsg, drm_via_dmabli | |||
603 | * (Not a big limitation anyway.) | 603 | * (Not a big limitation anyway.) |
604 | */ | 604 | */ |
605 | 605 | ||
606 | if ((xfer->mem_stride - xfer->line_length) >= PAGE_SIZE) { | 606 | if ((xfer->mem_stride - xfer->line_length) > 2*PAGE_SIZE) { |
607 | DRM_ERROR("Too large system memory stride. Stride: %d, " | 607 | DRM_ERROR("Too large system memory stride. Stride: %d, " |
608 | "Length: %d\n", xfer->mem_stride, xfer->line_length); | 608 | "Length: %d\n", xfer->mem_stride, xfer->line_length); |
609 | return -EINVAL; | 609 | return -EINVAL; |
diff --git a/drivers/char/rocket.c b/drivers/char/rocket.c index 72f289279d8f..f585bc8579e9 100644 --- a/drivers/char/rocket.c +++ b/drivers/char/rocket.c | |||
@@ -83,6 +83,7 @@ | |||
83 | #include <linux/pci.h> | 83 | #include <linux/pci.h> |
84 | #include <asm/uaccess.h> | 84 | #include <asm/uaccess.h> |
85 | #include <asm/atomic.h> | 85 | #include <asm/atomic.h> |
86 | #include <asm/unaligned.h> | ||
86 | #include <linux/bitops.h> | 87 | #include <linux/bitops.h> |
87 | #include <linux/spinlock.h> | 88 | #include <linux/spinlock.h> |
88 | #include <linux/init.h> | 89 | #include <linux/init.h> |
@@ -1312,7 +1313,7 @@ static int rp_tiocmset(struct tty_struct *tty, struct file *file, | |||
1312 | if (clear & TIOCM_DTR) | 1313 | if (clear & TIOCM_DTR) |
1313 | info->channel.TxControl[3] &= ~SET_DTR; | 1314 | info->channel.TxControl[3] &= ~SET_DTR; |
1314 | 1315 | ||
1315 | sOutDW(info->channel.IndexAddr, *(DWord_t *) & (info->channel.TxControl[0])); | 1316 | out32(info->channel.IndexAddr, info->channel.TxControl); |
1316 | return 0; | 1317 | return 0; |
1317 | } | 1318 | } |
1318 | 1319 | ||
@@ -1748,7 +1749,7 @@ static int rp_write(struct tty_struct *tty, | |||
1748 | 1749 | ||
1749 | /* Write remaining data into the port's xmit_buf */ | 1750 | /* Write remaining data into the port's xmit_buf */ |
1750 | while (1) { | 1751 | while (1) { |
1751 | if (info->tty == 0) /* Seemingly obligatory check... */ | 1752 | if (!info->tty) /* Seemingly obligatory check... */ |
1752 | goto end; | 1753 | goto end; |
1753 | 1754 | ||
1754 | c = min(count, min(XMIT_BUF_SIZE - info->xmit_cnt - 1, XMIT_BUF_SIZE - info->xmit_head)); | 1755 | c = min(count, min(XMIT_BUF_SIZE - info->xmit_cnt - 1, XMIT_BUF_SIZE - info->xmit_head)); |
@@ -2798,7 +2799,7 @@ static int sReadAiopNumChan(WordIO_t io) | |||
2798 | static Byte_t R[4] = { 0x00, 0x00, 0x34, 0x12 }; | 2799 | static Byte_t R[4] = { 0x00, 0x00, 0x34, 0x12 }; |
2799 | 2800 | ||
2800 | /* write to chan 0 SRAM */ | 2801 | /* write to chan 0 SRAM */ |
2801 | sOutDW((DWordIO_t) io + _INDX_ADDR, *((DWord_t *) & R[0])); | 2802 | out32((DWordIO_t) io + _INDX_ADDR, R); |
2802 | sOutW(io + _INDX_ADDR, 0); /* read from SRAM, chan 0 */ | 2803 | sOutW(io + _INDX_ADDR, 0); /* read from SRAM, chan 0 */ |
2803 | x = sInW(io + _INDX_DATA); | 2804 | x = sInW(io + _INDX_DATA); |
2804 | sOutW(io + _INDX_ADDR, 0x4000); /* read from SRAM, chan 4 */ | 2805 | sOutW(io + _INDX_ADDR, 0x4000); /* read from SRAM, chan 4 */ |
@@ -2864,7 +2865,7 @@ static int sInitChan(CONTROLLER_T * CtlP, CHANNEL_T * ChP, int AiopNum, | |||
2864 | R[1] = RData[i + 1] + 0x10 * ChanNum; | 2865 | R[1] = RData[i + 1] + 0x10 * ChanNum; |
2865 | R[2] = RData[i + 2]; | 2866 | R[2] = RData[i + 2]; |
2866 | R[3] = RData[i + 3]; | 2867 | R[3] = RData[i + 3]; |
2867 | sOutDW(ChP->IndexAddr, *((DWord_t *) & R[0])); | 2868 | out32(ChP->IndexAddr, R); |
2868 | } | 2869 | } |
2869 | 2870 | ||
2870 | ChR = ChP->R; | 2871 | ChR = ChP->R; |
@@ -2887,43 +2888,43 @@ static int sInitChan(CONTROLLER_T * CtlP, CHANNEL_T * ChP, int AiopNum, | |||
2887 | ChP->BaudDiv[1] = (Byte_t) ((ChOff + _BAUD) >> 8); | 2888 | ChP->BaudDiv[1] = (Byte_t) ((ChOff + _BAUD) >> 8); |
2888 | ChP->BaudDiv[2] = (Byte_t) brd9600; | 2889 | ChP->BaudDiv[2] = (Byte_t) brd9600; |
2889 | ChP->BaudDiv[3] = (Byte_t) (brd9600 >> 8); | 2890 | ChP->BaudDiv[3] = (Byte_t) (brd9600 >> 8); |
2890 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->BaudDiv[0]); | 2891 | out32(ChP->IndexAddr, ChP->BaudDiv); |
2891 | 2892 | ||
2892 | ChP->TxControl[0] = (Byte_t) (ChOff + _TX_CTRL); | 2893 | ChP->TxControl[0] = (Byte_t) (ChOff + _TX_CTRL); |
2893 | ChP->TxControl[1] = (Byte_t) ((ChOff + _TX_CTRL) >> 8); | 2894 | ChP->TxControl[1] = (Byte_t) ((ChOff + _TX_CTRL) >> 8); |
2894 | ChP->TxControl[2] = 0; | 2895 | ChP->TxControl[2] = 0; |
2895 | ChP->TxControl[3] = 0; | 2896 | ChP->TxControl[3] = 0; |
2896 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxControl[0]); | 2897 | out32(ChP->IndexAddr, ChP->TxControl); |
2897 | 2898 | ||
2898 | ChP->RxControl[0] = (Byte_t) (ChOff + _RX_CTRL); | 2899 | ChP->RxControl[0] = (Byte_t) (ChOff + _RX_CTRL); |
2899 | ChP->RxControl[1] = (Byte_t) ((ChOff + _RX_CTRL) >> 8); | 2900 | ChP->RxControl[1] = (Byte_t) ((ChOff + _RX_CTRL) >> 8); |
2900 | ChP->RxControl[2] = 0; | 2901 | ChP->RxControl[2] = 0; |
2901 | ChP->RxControl[3] = 0; | 2902 | ChP->RxControl[3] = 0; |
2902 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->RxControl[0]); | 2903 | out32(ChP->IndexAddr, ChP->RxControl); |
2903 | 2904 | ||
2904 | ChP->TxEnables[0] = (Byte_t) (ChOff + _TX_ENBLS); | 2905 | ChP->TxEnables[0] = (Byte_t) (ChOff + _TX_ENBLS); |
2905 | ChP->TxEnables[1] = (Byte_t) ((ChOff + _TX_ENBLS) >> 8); | 2906 | ChP->TxEnables[1] = (Byte_t) ((ChOff + _TX_ENBLS) >> 8); |
2906 | ChP->TxEnables[2] = 0; | 2907 | ChP->TxEnables[2] = 0; |
2907 | ChP->TxEnables[3] = 0; | 2908 | ChP->TxEnables[3] = 0; |
2908 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxEnables[0]); | 2909 | out32(ChP->IndexAddr, ChP->TxEnables); |
2909 | 2910 | ||
2910 | ChP->TxCompare[0] = (Byte_t) (ChOff + _TXCMP1); | 2911 | ChP->TxCompare[0] = (Byte_t) (ChOff + _TXCMP1); |
2911 | ChP->TxCompare[1] = (Byte_t) ((ChOff + _TXCMP1) >> 8); | 2912 | ChP->TxCompare[1] = (Byte_t) ((ChOff + _TXCMP1) >> 8); |
2912 | ChP->TxCompare[2] = 0; | 2913 | ChP->TxCompare[2] = 0; |
2913 | ChP->TxCompare[3] = 0; | 2914 | ChP->TxCompare[3] = 0; |
2914 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxCompare[0]); | 2915 | out32(ChP->IndexAddr, ChP->TxCompare); |
2915 | 2916 | ||
2916 | ChP->TxReplace1[0] = (Byte_t) (ChOff + _TXREP1B1); | 2917 | ChP->TxReplace1[0] = (Byte_t) (ChOff + _TXREP1B1); |
2917 | ChP->TxReplace1[1] = (Byte_t) ((ChOff + _TXREP1B1) >> 8); | 2918 | ChP->TxReplace1[1] = (Byte_t) ((ChOff + _TXREP1B1) >> 8); |
2918 | ChP->TxReplace1[2] = 0; | 2919 | ChP->TxReplace1[2] = 0; |
2919 | ChP->TxReplace1[3] = 0; | 2920 | ChP->TxReplace1[3] = 0; |
2920 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxReplace1[0]); | 2921 | out32(ChP->IndexAddr, ChP->TxReplace1); |
2921 | 2922 | ||
2922 | ChP->TxReplace2[0] = (Byte_t) (ChOff + _TXREP2); | 2923 | ChP->TxReplace2[0] = (Byte_t) (ChOff + _TXREP2); |
2923 | ChP->TxReplace2[1] = (Byte_t) ((ChOff + _TXREP2) >> 8); | 2924 | ChP->TxReplace2[1] = (Byte_t) ((ChOff + _TXREP2) >> 8); |
2924 | ChP->TxReplace2[2] = 0; | 2925 | ChP->TxReplace2[2] = 0; |
2925 | ChP->TxReplace2[3] = 0; | 2926 | ChP->TxReplace2[3] = 0; |
2926 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxReplace2[0]); | 2927 | out32(ChP->IndexAddr, ChP->TxReplace2); |
2927 | 2928 | ||
2928 | ChP->TxFIFOPtrs = ChOff + _TXF_OUTP; | 2929 | ChP->TxFIFOPtrs = ChOff + _TXF_OUTP; |
2929 | ChP->TxFIFO = ChOff + _TX_FIFO; | 2930 | ChP->TxFIFO = ChOff + _TX_FIFO; |
@@ -2979,7 +2980,7 @@ static void sStopRxProcessor(CHANNEL_T * ChP) | |||
2979 | R[1] = ChP->R[1]; | 2980 | R[1] = ChP->R[1]; |
2980 | R[2] = 0x0a; | 2981 | R[2] = 0x0a; |
2981 | R[3] = ChP->R[3]; | 2982 | R[3] = ChP->R[3]; |
2982 | sOutDW(ChP->IndexAddr, *(DWord_t *) & R[0]); | 2983 | out32(ChP->IndexAddr, R); |
2983 | } | 2984 | } |
2984 | 2985 | ||
2985 | /*************************************************************************** | 2986 | /*************************************************************************** |
@@ -3094,13 +3095,13 @@ static int sWriteTxPrioByte(CHANNEL_T * ChP, Byte_t Data) | |||
3094 | *WordPtr = ChP->TxPrioBuf; /* data byte address */ | 3095 | *WordPtr = ChP->TxPrioBuf; /* data byte address */ |
3095 | 3096 | ||
3096 | DWBuf[2] = Data; /* data byte value */ | 3097 | DWBuf[2] = Data; /* data byte value */ |
3097 | sOutDW(IndexAddr, *((DWord_t *) (&DWBuf[0]))); /* write it out */ | 3098 | out32(IndexAddr, DWBuf); /* write it out */ |
3098 | 3099 | ||
3099 | *WordPtr = ChP->TxPrioCnt; /* Tx priority count address */ | 3100 | *WordPtr = ChP->TxPrioCnt; /* Tx priority count address */ |
3100 | 3101 | ||
3101 | DWBuf[2] = PRI_PEND + 1; /* indicate 1 byte pending */ | 3102 | DWBuf[2] = PRI_PEND + 1; /* indicate 1 byte pending */ |
3102 | DWBuf[3] = 0; /* priority buffer pointer */ | 3103 | DWBuf[3] = 0; /* priority buffer pointer */ |
3103 | sOutDW(IndexAddr, *((DWord_t *) (&DWBuf[0]))); /* write it out */ | 3104 | out32(IndexAddr, DWBuf); /* write it out */ |
3104 | } else { /* write it to Tx FIFO */ | 3105 | } else { /* write it to Tx FIFO */ |
3105 | 3106 | ||
3106 | sWriteTxByte(sGetTxRxDataIO(ChP), Data); | 3107 | sWriteTxByte(sGetTxRxDataIO(ChP), Data); |
@@ -3147,11 +3148,11 @@ static void sEnInterrupts(CHANNEL_T * ChP, Word_t Flags) | |||
3147 | ChP->RxControl[2] |= | 3148 | ChP->RxControl[2] |= |
3148 | ((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN)); | 3149 | ((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN)); |
3149 | 3150 | ||
3150 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->RxControl[0]); | 3151 | out32(ChP->IndexAddr, ChP->RxControl); |
3151 | 3152 | ||
3152 | ChP->TxControl[2] |= ((Byte_t) Flags & TXINT_EN); | 3153 | ChP->TxControl[2] |= ((Byte_t) Flags & TXINT_EN); |
3153 | 3154 | ||
3154 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxControl[0]); | 3155 | out32(ChP->IndexAddr, ChP->TxControl); |
3155 | 3156 | ||
3156 | if (Flags & CHANINT_EN) { | 3157 | if (Flags & CHANINT_EN) { |
3157 | Mask = sInB(ChP->IntMask) | sBitMapSetTbl[ChP->ChanNum]; | 3158 | Mask = sInB(ChP->IntMask) | sBitMapSetTbl[ChP->ChanNum]; |
@@ -3190,9 +3191,9 @@ static void sDisInterrupts(CHANNEL_T * ChP, Word_t Flags) | |||
3190 | 3191 | ||
3191 | ChP->RxControl[2] &= | 3192 | ChP->RxControl[2] &= |
3192 | ~((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN)); | 3193 | ~((Byte_t) Flags & (RXINT_EN | SRCINT_EN | MCINT_EN)); |
3193 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->RxControl[0]); | 3194 | out32(ChP->IndexAddr, ChP->RxControl); |
3194 | ChP->TxControl[2] &= ~((Byte_t) Flags & TXINT_EN); | 3195 | ChP->TxControl[2] &= ~((Byte_t) Flags & TXINT_EN); |
3195 | sOutDW(ChP->IndexAddr, *(DWord_t *) & ChP->TxControl[0]); | 3196 | out32(ChP->IndexAddr, ChP->TxControl); |
3196 | 3197 | ||
3197 | if (Flags & CHANINT_EN) { | 3198 | if (Flags & CHANINT_EN) { |
3198 | Mask = sInB(ChP->IntMask) & sBitMapClrTbl[ChP->ChanNum]; | 3199 | Mask = sInB(ChP->IntMask) & sBitMapClrTbl[ChP->ChanNum]; |
diff --git a/drivers/char/rocket_int.h b/drivers/char/rocket_int.h index f3a75791b811..b01d38125a8f 100644 --- a/drivers/char/rocket_int.h +++ b/drivers/char/rocket_int.h | |||
@@ -26,7 +26,6 @@ typedef unsigned int ByteIO_t; | |||
26 | typedef unsigned int Word_t; | 26 | typedef unsigned int Word_t; |
27 | typedef unsigned int WordIO_t; | 27 | typedef unsigned int WordIO_t; |
28 | 28 | ||
29 | typedef unsigned long DWord_t; | ||
30 | typedef unsigned int DWordIO_t; | 29 | typedef unsigned int DWordIO_t; |
31 | 30 | ||
32 | /* | 31 | /* |
@@ -38,7 +37,6 @@ typedef unsigned int DWordIO_t; | |||
38 | * instruction. | 37 | * instruction. |
39 | */ | 38 | */ |
40 | 39 | ||
41 | #ifdef ROCKET_DEBUG_IO | ||
42 | static inline void sOutB(unsigned short port, unsigned char value) | 40 | static inline void sOutB(unsigned short port, unsigned char value) |
43 | { | 41 | { |
44 | #ifdef ROCKET_DEBUG_IO | 42 | #ifdef ROCKET_DEBUG_IO |
@@ -55,12 +53,13 @@ static inline void sOutW(unsigned short port, unsigned short value) | |||
55 | outw_p(value, port); | 53 | outw_p(value, port); |
56 | } | 54 | } |
57 | 55 | ||
58 | static inline void sOutDW(unsigned short port, unsigned long value) | 56 | static inline void out32(unsigned short port, Byte_t *p) |
59 | { | 57 | { |
58 | u32 value = le32_to_cpu(get_unaligned((__le32 *)p)); | ||
60 | #ifdef ROCKET_DEBUG_IO | 59 | #ifdef ROCKET_DEBUG_IO |
61 | printk(KERN_DEBUG "sOutDW(%x, %lx)...\n", port, value); | 60 | printk(KERN_DEBUG "out32(%x, %lx)...\n", port, value); |
62 | #endif | 61 | #endif |
63 | outl_p(cpu_to_le32(value), port); | 62 | outl_p(value, port); |
64 | } | 63 | } |
65 | 64 | ||
66 | static inline unsigned char sInB(unsigned short port) | 65 | static inline unsigned char sInB(unsigned short port) |
@@ -73,14 +72,6 @@ static inline unsigned short sInW(unsigned short port) | |||
73 | return inw_p(port); | 72 | return inw_p(port); |
74 | } | 73 | } |
75 | 74 | ||
76 | #else /* !ROCKET_DEBUG_IO */ | ||
77 | #define sOutB(a, b) outb_p(b, a) | ||
78 | #define sOutW(a, b) outw_p(b, a) | ||
79 | #define sOutDW(port, value) outl_p(cpu_to_le32(value), port) | ||
80 | #define sInB(a) (inb_p(a)) | ||
81 | #define sInW(a) (inw_p(a)) | ||
82 | #endif /* ROCKET_DEBUG_IO */ | ||
83 | |||
84 | /* This is used to move arrays of bytes so byte swapping isn't appropriate. */ | 75 | /* This is used to move arrays of bytes so byte swapping isn't appropriate. */ |
85 | #define sOutStrW(port, addr, count) if (count) outsw(port, addr, count) | 76 | #define sOutStrW(port, addr, count) if (count) outsw(port, addr, count) |
86 | #define sInStrW(port, addr, count) if (count) insw(port, addr, count) | 77 | #define sInStrW(port, addr, count) if (count) insw(port, addr, count) |
@@ -390,7 +381,7 @@ Call: sClrBreak(ChP) | |||
390 | #define sClrBreak(ChP) \ | 381 | #define sClrBreak(ChP) \ |
391 | do { \ | 382 | do { \ |
392 | (ChP)->TxControl[3] &= ~SETBREAK; \ | 383 | (ChP)->TxControl[3] &= ~SETBREAK; \ |
393 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 384 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
394 | } while (0) | 385 | } while (0) |
395 | 386 | ||
396 | /*************************************************************************** | 387 | /*************************************************************************** |
@@ -402,7 +393,7 @@ Call: sClrDTR(ChP) | |||
402 | #define sClrDTR(ChP) \ | 393 | #define sClrDTR(ChP) \ |
403 | do { \ | 394 | do { \ |
404 | (ChP)->TxControl[3] &= ~SET_DTR; \ | 395 | (ChP)->TxControl[3] &= ~SET_DTR; \ |
405 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 396 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
406 | } while (0) | 397 | } while (0) |
407 | 398 | ||
408 | /*************************************************************************** | 399 | /*************************************************************************** |
@@ -415,7 +406,7 @@ Call: sClrRTS(ChP) | |||
415 | do { \ | 406 | do { \ |
416 | if ((ChP)->rtsToggle) break; \ | 407 | if ((ChP)->rtsToggle) break; \ |
417 | (ChP)->TxControl[3] &= ~SET_RTS; \ | 408 | (ChP)->TxControl[3] &= ~SET_RTS; \ |
418 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 409 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
419 | } while (0) | 410 | } while (0) |
420 | 411 | ||
421 | /*************************************************************************** | 412 | /*************************************************************************** |
@@ -489,7 +480,7 @@ Call: sDisCTSFlowCtl(ChP) | |||
489 | #define sDisCTSFlowCtl(ChP) \ | 480 | #define sDisCTSFlowCtl(ChP) \ |
490 | do { \ | 481 | do { \ |
491 | (ChP)->TxControl[2] &= ~CTSFC_EN; \ | 482 | (ChP)->TxControl[2] &= ~CTSFC_EN; \ |
492 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 483 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
493 | } while (0) | 484 | } while (0) |
494 | 485 | ||
495 | /*************************************************************************** | 486 | /*************************************************************************** |
@@ -501,7 +492,7 @@ Call: sDisIXANY(ChP) | |||
501 | #define sDisIXANY(ChP) \ | 492 | #define sDisIXANY(ChP) \ |
502 | do { \ | 493 | do { \ |
503 | (ChP)->R[0x0e] = 0x86; \ | 494 | (ChP)->R[0x0e] = 0x86; \ |
504 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x0c]); \ | 495 | out32((ChP)->IndexAddr,&(ChP)->R[0x0c]); \ |
505 | } while (0) | 496 | } while (0) |
506 | 497 | ||
507 | /*************************************************************************** | 498 | /*************************************************************************** |
@@ -515,7 +506,7 @@ Comments: Function sSetParity() can be used in place of functions sEnParity(), | |||
515 | #define sDisParity(ChP) \ | 506 | #define sDisParity(ChP) \ |
516 | do { \ | 507 | do { \ |
517 | (ChP)->TxControl[2] &= ~PARITY_EN; \ | 508 | (ChP)->TxControl[2] &= ~PARITY_EN; \ |
518 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 509 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
519 | } while (0) | 510 | } while (0) |
520 | 511 | ||
521 | /*************************************************************************** | 512 | /*************************************************************************** |
@@ -527,7 +518,7 @@ Call: sDisRTSToggle(ChP) | |||
527 | #define sDisRTSToggle(ChP) \ | 518 | #define sDisRTSToggle(ChP) \ |
528 | do { \ | 519 | do { \ |
529 | (ChP)->TxControl[2] &= ~RTSTOG_EN; \ | 520 | (ChP)->TxControl[2] &= ~RTSTOG_EN; \ |
530 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 521 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
531 | (ChP)->rtsToggle = 0; \ | 522 | (ChP)->rtsToggle = 0; \ |
532 | } while (0) | 523 | } while (0) |
533 | 524 | ||
@@ -540,7 +531,7 @@ Call: sDisRxFIFO(ChP) | |||
540 | #define sDisRxFIFO(ChP) \ | 531 | #define sDisRxFIFO(ChP) \ |
541 | do { \ | 532 | do { \ |
542 | (ChP)->R[0x32] = 0x0a; \ | 533 | (ChP)->R[0x32] = 0x0a; \ |
543 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x30]); \ | 534 | out32((ChP)->IndexAddr,&(ChP)->R[0x30]); \ |
544 | } while (0) | 535 | } while (0) |
545 | 536 | ||
546 | /*************************************************************************** | 537 | /*************************************************************************** |
@@ -567,7 +558,7 @@ Call: sDisTransmit(ChP) | |||
567 | #define sDisTransmit(ChP) \ | 558 | #define sDisTransmit(ChP) \ |
568 | do { \ | 559 | do { \ |
569 | (ChP)->TxControl[3] &= ~TX_ENABLE; \ | 560 | (ChP)->TxControl[3] &= ~TX_ENABLE; \ |
570 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 561 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
571 | } while (0) | 562 | } while (0) |
572 | 563 | ||
573 | /*************************************************************************** | 564 | /*************************************************************************** |
@@ -579,7 +570,7 @@ Call: sDisTxSoftFlowCtl(ChP) | |||
579 | #define sDisTxSoftFlowCtl(ChP) \ | 570 | #define sDisTxSoftFlowCtl(ChP) \ |
580 | do { \ | 571 | do { \ |
581 | (ChP)->R[0x06] = 0x8a; \ | 572 | (ChP)->R[0x06] = 0x8a; \ |
582 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x04]); \ | 573 | out32((ChP)->IndexAddr,&(ChP)->R[0x04]); \ |
583 | } while (0) | 574 | } while (0) |
584 | 575 | ||
585 | /*************************************************************************** | 576 | /*************************************************************************** |
@@ -604,7 +595,7 @@ Call: sEnCTSFlowCtl(ChP) | |||
604 | #define sEnCTSFlowCtl(ChP) \ | 595 | #define sEnCTSFlowCtl(ChP) \ |
605 | do { \ | 596 | do { \ |
606 | (ChP)->TxControl[2] |= CTSFC_EN; \ | 597 | (ChP)->TxControl[2] |= CTSFC_EN; \ |
607 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 598 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
608 | } while (0) | 599 | } while (0) |
609 | 600 | ||
610 | /*************************************************************************** | 601 | /*************************************************************************** |
@@ -616,7 +607,7 @@ Call: sEnIXANY(ChP) | |||
616 | #define sEnIXANY(ChP) \ | 607 | #define sEnIXANY(ChP) \ |
617 | do { \ | 608 | do { \ |
618 | (ChP)->R[0x0e] = 0x21; \ | 609 | (ChP)->R[0x0e] = 0x21; \ |
619 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x0c]); \ | 610 | out32((ChP)->IndexAddr,&(ChP)->R[0x0c]); \ |
620 | } while (0) | 611 | } while (0) |
621 | 612 | ||
622 | /*************************************************************************** | 613 | /*************************************************************************** |
@@ -633,7 +624,7 @@ Warnings: Before enabling parity odd or even parity should be chosen using | |||
633 | #define sEnParity(ChP) \ | 624 | #define sEnParity(ChP) \ |
634 | do { \ | 625 | do { \ |
635 | (ChP)->TxControl[2] |= PARITY_EN; \ | 626 | (ChP)->TxControl[2] |= PARITY_EN; \ |
636 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 627 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
637 | } while (0) | 628 | } while (0) |
638 | 629 | ||
639 | /*************************************************************************** | 630 | /*************************************************************************** |
@@ -647,10 +638,10 @@ Comments: This function will disable RTS flow control and clear the RTS | |||
647 | #define sEnRTSToggle(ChP) \ | 638 | #define sEnRTSToggle(ChP) \ |
648 | do { \ | 639 | do { \ |
649 | (ChP)->RxControl[2] &= ~RTSFC_EN; \ | 640 | (ChP)->RxControl[2] &= ~RTSFC_EN; \ |
650 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->RxControl[0]); \ | 641 | out32((ChP)->IndexAddr,(ChP)->RxControl); \ |
651 | (ChP)->TxControl[2] |= RTSTOG_EN; \ | 642 | (ChP)->TxControl[2] |= RTSTOG_EN; \ |
652 | (ChP)->TxControl[3] &= ~SET_RTS; \ | 643 | (ChP)->TxControl[3] &= ~SET_RTS; \ |
653 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 644 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
654 | (ChP)->rtsToggle = 1; \ | 645 | (ChP)->rtsToggle = 1; \ |
655 | } while (0) | 646 | } while (0) |
656 | 647 | ||
@@ -663,7 +654,7 @@ Call: sEnRxFIFO(ChP) | |||
663 | #define sEnRxFIFO(ChP) \ | 654 | #define sEnRxFIFO(ChP) \ |
664 | do { \ | 655 | do { \ |
665 | (ChP)->R[0x32] = 0x08; \ | 656 | (ChP)->R[0x32] = 0x08; \ |
666 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x30]); \ | 657 | out32((ChP)->IndexAddr,&(ChP)->R[0x30]); \ |
667 | } while (0) | 658 | } while (0) |
668 | 659 | ||
669 | /*************************************************************************** | 660 | /*************************************************************************** |
@@ -684,7 +675,7 @@ Warnings: This function must be called after valid microcode has been | |||
684 | #define sEnRxProcessor(ChP) \ | 675 | #define sEnRxProcessor(ChP) \ |
685 | do { \ | 676 | do { \ |
686 | (ChP)->RxControl[2] |= RXPROC_EN; \ | 677 | (ChP)->RxControl[2] |= RXPROC_EN; \ |
687 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->RxControl[0]); \ | 678 | out32((ChP)->IndexAddr,(ChP)->RxControl); \ |
688 | } while (0) | 679 | } while (0) |
689 | 680 | ||
690 | /*************************************************************************** | 681 | /*************************************************************************** |
@@ -708,7 +699,7 @@ Call: sEnTransmit(ChP) | |||
708 | #define sEnTransmit(ChP) \ | 699 | #define sEnTransmit(ChP) \ |
709 | do { \ | 700 | do { \ |
710 | (ChP)->TxControl[3] |= TX_ENABLE; \ | 701 | (ChP)->TxControl[3] |= TX_ENABLE; \ |
711 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 702 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
712 | } while (0) | 703 | } while (0) |
713 | 704 | ||
714 | /*************************************************************************** | 705 | /*************************************************************************** |
@@ -720,7 +711,7 @@ Call: sEnTxSoftFlowCtl(ChP) | |||
720 | #define sEnTxSoftFlowCtl(ChP) \ | 711 | #define sEnTxSoftFlowCtl(ChP) \ |
721 | do { \ | 712 | do { \ |
722 | (ChP)->R[0x06] = 0xc5; \ | 713 | (ChP)->R[0x06] = 0xc5; \ |
723 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x04]); \ | 714 | out32((ChP)->IndexAddr,&(ChP)->R[0x04]); \ |
724 | } while (0) | 715 | } while (0) |
725 | 716 | ||
726 | /*************************************************************************** | 717 | /*************************************************************************** |
@@ -927,7 +918,7 @@ Call: sSendBreak(ChP) | |||
927 | #define sSendBreak(ChP) \ | 918 | #define sSendBreak(ChP) \ |
928 | do { \ | 919 | do { \ |
929 | (ChP)->TxControl[3] |= SETBREAK; \ | 920 | (ChP)->TxControl[3] |= SETBREAK; \ |
930 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 921 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
931 | } while (0) | 922 | } while (0) |
932 | 923 | ||
933 | /*************************************************************************** | 924 | /*************************************************************************** |
@@ -941,7 +932,7 @@ Call: sSetBaud(ChP,Divisor) | |||
941 | do { \ | 932 | do { \ |
942 | (ChP)->BaudDiv[2] = (Byte_t)(DIVISOR); \ | 933 | (ChP)->BaudDiv[2] = (Byte_t)(DIVISOR); \ |
943 | (ChP)->BaudDiv[3] = (Byte_t)((DIVISOR) >> 8); \ | 934 | (ChP)->BaudDiv[3] = (Byte_t)((DIVISOR) >> 8); \ |
944 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->BaudDiv[0]); \ | 935 | out32((ChP)->IndexAddr,(ChP)->BaudDiv); \ |
945 | } while (0) | 936 | } while (0) |
946 | 937 | ||
947 | /*************************************************************************** | 938 | /*************************************************************************** |
@@ -953,7 +944,7 @@ Call: sSetData7(ChP) | |||
953 | #define sSetData7(ChP) \ | 944 | #define sSetData7(ChP) \ |
954 | do { \ | 945 | do { \ |
955 | (ChP)->TxControl[2] &= ~DATA8BIT; \ | 946 | (ChP)->TxControl[2] &= ~DATA8BIT; \ |
956 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 947 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
957 | } while (0) | 948 | } while (0) |
958 | 949 | ||
959 | /*************************************************************************** | 950 | /*************************************************************************** |
@@ -965,7 +956,7 @@ Call: sSetData8(ChP) | |||
965 | #define sSetData8(ChP) \ | 956 | #define sSetData8(ChP) \ |
966 | do { \ | 957 | do { \ |
967 | (ChP)->TxControl[2] |= DATA8BIT; \ | 958 | (ChP)->TxControl[2] |= DATA8BIT; \ |
968 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 959 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
969 | } while (0) | 960 | } while (0) |
970 | 961 | ||
971 | /*************************************************************************** | 962 | /*************************************************************************** |
@@ -977,7 +968,7 @@ Call: sSetDTR(ChP) | |||
977 | #define sSetDTR(ChP) \ | 968 | #define sSetDTR(ChP) \ |
978 | do { \ | 969 | do { \ |
979 | (ChP)->TxControl[3] |= SET_DTR; \ | 970 | (ChP)->TxControl[3] |= SET_DTR; \ |
980 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 971 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
981 | } while (0) | 972 | } while (0) |
982 | 973 | ||
983 | /*************************************************************************** | 974 | /*************************************************************************** |
@@ -994,7 +985,7 @@ Warnings: This function has no effect unless parity is enabled with function | |||
994 | #define sSetEvenParity(ChP) \ | 985 | #define sSetEvenParity(ChP) \ |
995 | do { \ | 986 | do { \ |
996 | (ChP)->TxControl[2] |= EVEN_PAR; \ | 987 | (ChP)->TxControl[2] |= EVEN_PAR; \ |
997 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 988 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
998 | } while (0) | 989 | } while (0) |
999 | 990 | ||
1000 | /*************************************************************************** | 991 | /*************************************************************************** |
@@ -1011,7 +1002,7 @@ Warnings: This function has no effect unless parity is enabled with function | |||
1011 | #define sSetOddParity(ChP) \ | 1002 | #define sSetOddParity(ChP) \ |
1012 | do { \ | 1003 | do { \ |
1013 | (ChP)->TxControl[2] &= ~EVEN_PAR; \ | 1004 | (ChP)->TxControl[2] &= ~EVEN_PAR; \ |
1014 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 1005 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
1015 | } while (0) | 1006 | } while (0) |
1016 | 1007 | ||
1017 | /*************************************************************************** | 1008 | /*************************************************************************** |
@@ -1024,7 +1015,7 @@ Call: sSetRTS(ChP) | |||
1024 | do { \ | 1015 | do { \ |
1025 | if ((ChP)->rtsToggle) break; \ | 1016 | if ((ChP)->rtsToggle) break; \ |
1026 | (ChP)->TxControl[3] |= SET_RTS; \ | 1017 | (ChP)->TxControl[3] |= SET_RTS; \ |
1027 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 1018 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
1028 | } while (0) | 1019 | } while (0) |
1029 | 1020 | ||
1030 | /*************************************************************************** | 1021 | /*************************************************************************** |
@@ -1050,7 +1041,7 @@ Comments: An interrupt will be generated when the trigger level is reached | |||
1050 | do { \ | 1041 | do { \ |
1051 | (ChP)->RxControl[2] &= ~TRIG_MASK; \ | 1042 | (ChP)->RxControl[2] &= ~TRIG_MASK; \ |
1052 | (ChP)->RxControl[2] |= LEVEL; \ | 1043 | (ChP)->RxControl[2] |= LEVEL; \ |
1053 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->RxControl[0]); \ | 1044 | out32((ChP)->IndexAddr,(ChP)->RxControl); \ |
1054 | } while (0) | 1045 | } while (0) |
1055 | 1046 | ||
1056 | /*************************************************************************** | 1047 | /*************************************************************************** |
@@ -1062,7 +1053,7 @@ Call: sSetStop1(ChP) | |||
1062 | #define sSetStop1(ChP) \ | 1053 | #define sSetStop1(ChP) \ |
1063 | do { \ | 1054 | do { \ |
1064 | (ChP)->TxControl[2] &= ~STOP2; \ | 1055 | (ChP)->TxControl[2] &= ~STOP2; \ |
1065 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 1056 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
1066 | } while (0) | 1057 | } while (0) |
1067 | 1058 | ||
1068 | /*************************************************************************** | 1059 | /*************************************************************************** |
@@ -1074,7 +1065,7 @@ Call: sSetStop2(ChP) | |||
1074 | #define sSetStop2(ChP) \ | 1065 | #define sSetStop2(ChP) \ |
1075 | do { \ | 1066 | do { \ |
1076 | (ChP)->TxControl[2] |= STOP2; \ | 1067 | (ChP)->TxControl[2] |= STOP2; \ |
1077 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->TxControl[0]); \ | 1068 | out32((ChP)->IndexAddr,(ChP)->TxControl); \ |
1078 | } while (0) | 1069 | } while (0) |
1079 | 1070 | ||
1080 | /*************************************************************************** | 1071 | /*************************************************************************** |
@@ -1087,7 +1078,7 @@ Call: sSetTxXOFFChar(ChP,Ch) | |||
1087 | #define sSetTxXOFFChar(ChP,CH) \ | 1078 | #define sSetTxXOFFChar(ChP,CH) \ |
1088 | do { \ | 1079 | do { \ |
1089 | (ChP)->R[0x07] = (CH); \ | 1080 | (ChP)->R[0x07] = (CH); \ |
1090 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x04]); \ | 1081 | out32((ChP)->IndexAddr,&(ChP)->R[0x04]); \ |
1091 | } while (0) | 1082 | } while (0) |
1092 | 1083 | ||
1093 | /*************************************************************************** | 1084 | /*************************************************************************** |
@@ -1100,7 +1091,7 @@ Call: sSetTxXONChar(ChP,Ch) | |||
1100 | #define sSetTxXONChar(ChP,CH) \ | 1091 | #define sSetTxXONChar(ChP,CH) \ |
1101 | do { \ | 1092 | do { \ |
1102 | (ChP)->R[0x0b] = (CH); \ | 1093 | (ChP)->R[0x0b] = (CH); \ |
1103 | sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0x08]); \ | 1094 | out32((ChP)->IndexAddr,&(ChP)->R[0x08]); \ |
1104 | } while (0) | 1095 | } while (0) |
1105 | 1096 | ||
1106 | /*************************************************************************** | 1097 | /*************************************************************************** |
@@ -1113,7 +1104,7 @@ Comments: This function is used to start a Rx processor after it was | |||
1113 | will restart both the Rx processor and software input flow control. | 1104 | will restart both the Rx processor and software input flow control. |
1114 | 1105 | ||
1115 | */ | 1106 | */ |
1116 | #define sStartRxProcessor(ChP) sOutDW((ChP)->IndexAddr,*(DWord_t *)&(ChP)->R[0]) | 1107 | #define sStartRxProcessor(ChP) out32((ChP)->IndexAddr,&(ChP)->R[0]) |
1117 | 1108 | ||
1118 | /*************************************************************************** | 1109 | /*************************************************************************** |
1119 | Function: sWriteTxByte | 1110 | Function: sWriteTxByte |
diff --git a/drivers/dma/fsldma.c b/drivers/dma/fsldma.c index ad2f938597e2..72692309398a 100644 --- a/drivers/dma/fsldma.c +++ b/drivers/dma/fsldma.c | |||
@@ -123,6 +123,11 @@ static dma_addr_t get_ndar(struct fsl_dma_chan *fsl_chan) | |||
123 | return DMA_IN(fsl_chan, &fsl_chan->reg_base->ndar, 64); | 123 | return DMA_IN(fsl_chan, &fsl_chan->reg_base->ndar, 64); |
124 | } | 124 | } |
125 | 125 | ||
126 | static u32 get_bcr(struct fsl_dma_chan *fsl_chan) | ||
127 | { | ||
128 | return DMA_IN(fsl_chan, &fsl_chan->reg_base->bcr, 32); | ||
129 | } | ||
130 | |||
126 | static int dma_is_idle(struct fsl_dma_chan *fsl_chan) | 131 | static int dma_is_idle(struct fsl_dma_chan *fsl_chan) |
127 | { | 132 | { |
128 | u32 sr = get_sr(fsl_chan); | 133 | u32 sr = get_sr(fsl_chan); |
@@ -426,6 +431,9 @@ fsl_dma_prep_interrupt(struct dma_chan *chan) | |||
426 | new->async_tx.cookie = -EBUSY; | 431 | new->async_tx.cookie = -EBUSY; |
427 | new->async_tx.ack = 0; | 432 | new->async_tx.ack = 0; |
428 | 433 | ||
434 | /* Insert the link descriptor to the LD ring */ | ||
435 | list_add_tail(&new->node, &new->async_tx.tx_list); | ||
436 | |||
429 | /* Set End-of-link to the last link descriptor of new list*/ | 437 | /* Set End-of-link to the last link descriptor of new list*/ |
430 | set_ld_eol(fsl_chan, new); | 438 | set_ld_eol(fsl_chan, new); |
431 | 439 | ||
@@ -701,6 +709,23 @@ static irqreturn_t fsl_dma_chan_do_interrupt(int irq, void *data) | |||
701 | if (stat & FSL_DMA_SR_TE) | 709 | if (stat & FSL_DMA_SR_TE) |
702 | dev_err(fsl_chan->dev, "Transfer Error!\n"); | 710 | dev_err(fsl_chan->dev, "Transfer Error!\n"); |
703 | 711 | ||
712 | /* Programming Error | ||
713 | * The DMA_INTERRUPT async_tx is a NULL transfer, which will | ||
714 | * triger a PE interrupt. | ||
715 | */ | ||
716 | if (stat & FSL_DMA_SR_PE) { | ||
717 | dev_dbg(fsl_chan->dev, "event: Programming Error INT\n"); | ||
718 | if (get_bcr(fsl_chan) == 0) { | ||
719 | /* BCR register is 0, this is a DMA_INTERRUPT async_tx. | ||
720 | * Now, update the completed cookie, and continue the | ||
721 | * next uncompleted transfer. | ||
722 | */ | ||
723 | fsl_dma_update_completed_cookie(fsl_chan); | ||
724 | fsl_chan_xfer_ld_queue(fsl_chan); | ||
725 | } | ||
726 | stat &= ~FSL_DMA_SR_PE; | ||
727 | } | ||
728 | |||
704 | /* If the link descriptor segment transfer finishes, | 729 | /* If the link descriptor segment transfer finishes, |
705 | * we will recycle the used descriptor. | 730 | * we will recycle the used descriptor. |
706 | */ | 731 | */ |
@@ -841,6 +866,11 @@ static int fsl_dma_self_test(struct fsl_dma_chan *fsl_chan) | |||
841 | tx3 = fsl_dma_prep_memcpy(chan, dma_dest, dma_src, test_size / 4, 0); | 866 | tx3 = fsl_dma_prep_memcpy(chan, dma_dest, dma_src, test_size / 4, 0); |
842 | async_tx_ack(tx3); | 867 | async_tx_ack(tx3); |
843 | 868 | ||
869 | /* Interrupt tx test */ | ||
870 | tx1 = fsl_dma_prep_interrupt(chan); | ||
871 | async_tx_ack(tx1); | ||
872 | cookie = fsl_dma_tx_submit(tx1); | ||
873 | |||
844 | /* Test exchanging the prepared tx sort */ | 874 | /* Test exchanging the prepared tx sort */ |
845 | cookie = fsl_dma_tx_submit(tx3); | 875 | cookie = fsl_dma_tx_submit(tx3); |
846 | cookie = fsl_dma_tx_submit(tx2); | 876 | cookie = fsl_dma_tx_submit(tx2); |
diff --git a/drivers/dma/fsldma.h b/drivers/dma/fsldma.h index ba78c42121ba..fddd6aee2a63 100644 --- a/drivers/dma/fsldma.h +++ b/drivers/dma/fsldma.h | |||
@@ -40,6 +40,7 @@ | |||
40 | #define FSL_DMA_MR_EOTIE 0x00000080 | 40 | #define FSL_DMA_MR_EOTIE 0x00000080 |
41 | 41 | ||
42 | #define FSL_DMA_SR_CH 0x00000020 | 42 | #define FSL_DMA_SR_CH 0x00000020 |
43 | #define FSL_DMA_SR_PE 0x00000010 | ||
43 | #define FSL_DMA_SR_CB 0x00000004 | 44 | #define FSL_DMA_SR_CB 0x00000004 |
44 | #define FSL_DMA_SR_TE 0x00000080 | 45 | #define FSL_DMA_SR_TE 0x00000080 |
45 | #define FSL_DMA_SR_EOSI 0x00000002 | 46 | #define FSL_DMA_SR_EOSI 0x00000002 |
diff --git a/drivers/firewire/Kconfig b/drivers/firewire/Kconfig index fe9e768cfbc4..25bdc2dd9ce1 100644 --- a/drivers/firewire/Kconfig +++ b/drivers/firewire/Kconfig | |||
@@ -1,5 +1,3 @@ | |||
1 | # -*- shell-script -*- | ||
2 | |||
3 | comment "An alternative FireWire stack is available with EXPERIMENTAL=y" | 1 | comment "An alternative FireWire stack is available with EXPERIMENTAL=y" |
4 | depends on EXPERIMENTAL=n | 2 | depends on EXPERIMENTAL=n |
5 | 3 | ||
@@ -21,27 +19,7 @@ config FIREWIRE | |||
21 | NOTE: | 19 | NOTE: |
22 | 20 | ||
23 | You should only build ONE of the stacks, unless you REALLY know what | 21 | You should only build ONE of the stacks, unless you REALLY know what |
24 | you are doing. If you install both, you should configure them only as | 22 | you are doing. |
25 | modules rather than link them statically, and you should blacklist one | ||
26 | of the concurrent low-level drivers in /etc/modprobe.conf. Add either | ||
27 | |||
28 | blacklist firewire-ohci | ||
29 | or | ||
30 | blacklist ohci1394 | ||
31 | |||
32 | there depending on which driver you DON'T want to have auto-loaded. | ||
33 | You can optionally do the same with the other IEEE 1394/ FireWire | ||
34 | drivers. | ||
35 | |||
36 | If you have an old modprobe which doesn't implement the blacklist | ||
37 | directive, use either | ||
38 | |||
39 | install firewire-ohci /bin/true | ||
40 | or | ||
41 | install ohci1394 /bin/true | ||
42 | |||
43 | and so on, depending on which modules you DON't want to have | ||
44 | auto-loaded. | ||
45 | 23 | ||
46 | config FIREWIRE_OHCI | 24 | config FIREWIRE_OHCI |
47 | tristate "Support for OHCI FireWire host controllers" | 25 | tristate "Support for OHCI FireWire host controllers" |
@@ -57,8 +35,24 @@ config FIREWIRE_OHCI | |||
57 | 35 | ||
58 | NOTE: | 36 | NOTE: |
59 | 37 | ||
60 | If you also build ohci1394 of the classic stack, blacklist either | 38 | You should only build ohci1394 or firewire-ohci, but not both. |
61 | ohci1394 or firewire-ohci to let hotplug load only the desired driver. | 39 | If you nevertheless want to install both, you should configure them |
40 | only as modules and blacklist the driver(s) which you don't want to | ||
41 | have auto-loaded. Add either | ||
42 | |||
43 | blacklist firewire-ohci | ||
44 | or | ||
45 | blacklist ohci1394 | ||
46 | blacklist video1394 | ||
47 | blacklist dv1394 | ||
48 | |||
49 | to /etc/modprobe.conf or /etc/modprobe.d/* and update modprobe.conf | ||
50 | depending on your distribution. The latter two modules should be | ||
51 | blacklisted together with ohci1394 because they depend on ohci1394. | ||
52 | |||
53 | If you have an old modprobe which doesn't implement the blacklist | ||
54 | directive, use "install modulename /bin/true" for the modules to be | ||
55 | blacklisted. | ||
62 | 56 | ||
63 | config FIREWIRE_SBP2 | 57 | config FIREWIRE_SBP2 |
64 | tristate "Support for storage devices (SBP-2 protocol driver)" | 58 | tristate "Support for storage devices (SBP-2 protocol driver)" |
@@ -75,9 +69,3 @@ config FIREWIRE_SBP2 | |||
75 | 69 | ||
76 | You should also enable support for disks, CD-ROMs, etc. in the SCSI | 70 | You should also enable support for disks, CD-ROMs, etc. in the SCSI |
77 | configuration section. | 71 | configuration section. |
78 | |||
79 | NOTE: | ||
80 | |||
81 | If you also build sbp2 of the classic stack, blacklist either sbp2 | ||
82 | or firewire-sbp2 to let hotplug load only the desired driver. | ||
83 | |||
diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c index 7ebad3c14cb8..996d61f0d460 100644 --- a/drivers/firewire/fw-ohci.c +++ b/drivers/firewire/fw-ohci.c | |||
@@ -33,6 +33,10 @@ | |||
33 | #include <asm/page.h> | 33 | #include <asm/page.h> |
34 | #include <asm/system.h> | 34 | #include <asm/system.h> |
35 | 35 | ||
36 | #ifdef CONFIG_PPC_PMAC | ||
37 | #include <asm/pmac_feature.h> | ||
38 | #endif | ||
39 | |||
36 | #include "fw-ohci.h" | 40 | #include "fw-ohci.h" |
37 | #include "fw-transaction.h" | 41 | #include "fw-transaction.h" |
38 | 42 | ||
@@ -175,6 +179,7 @@ struct fw_ohci { | |||
175 | int generation; | 179 | int generation; |
176 | int request_generation; | 180 | int request_generation; |
177 | u32 bus_seconds; | 181 | u32 bus_seconds; |
182 | bool old_uninorth; | ||
178 | 183 | ||
179 | /* | 184 | /* |
180 | * Spinlock for accessing fw_ohci data. Never call out of | 185 | * Spinlock for accessing fw_ohci data. Never call out of |
@@ -276,19 +281,13 @@ static int ar_context_add_page(struct ar_context *ctx) | |||
276 | { | 281 | { |
277 | struct device *dev = ctx->ohci->card.device; | 282 | struct device *dev = ctx->ohci->card.device; |
278 | struct ar_buffer *ab; | 283 | struct ar_buffer *ab; |
279 | dma_addr_t ab_bus; | 284 | dma_addr_t uninitialized_var(ab_bus); |
280 | size_t offset; | 285 | size_t offset; |
281 | 286 | ||
282 | ab = (struct ar_buffer *) __get_free_page(GFP_ATOMIC); | 287 | ab = dma_alloc_coherent(dev, PAGE_SIZE, &ab_bus, GFP_ATOMIC); |
283 | if (ab == NULL) | 288 | if (ab == NULL) |
284 | return -ENOMEM; | 289 | return -ENOMEM; |
285 | 290 | ||
286 | ab_bus = dma_map_single(dev, ab, PAGE_SIZE, DMA_BIDIRECTIONAL); | ||
287 | if (dma_mapping_error(ab_bus)) { | ||
288 | free_page((unsigned long) ab); | ||
289 | return -ENOMEM; | ||
290 | } | ||
291 | |||
292 | memset(&ab->descriptor, 0, sizeof(ab->descriptor)); | 291 | memset(&ab->descriptor, 0, sizeof(ab->descriptor)); |
293 | ab->descriptor.control = cpu_to_le16(DESCRIPTOR_INPUT_MORE | | 292 | ab->descriptor.control = cpu_to_le16(DESCRIPTOR_INPUT_MORE | |
294 | DESCRIPTOR_STATUS | | 293 | DESCRIPTOR_STATUS | |
@@ -299,8 +298,6 @@ static int ar_context_add_page(struct ar_context *ctx) | |||
299 | ab->descriptor.res_count = cpu_to_le16(PAGE_SIZE - offset); | 298 | ab->descriptor.res_count = cpu_to_le16(PAGE_SIZE - offset); |
300 | ab->descriptor.branch_address = 0; | 299 | ab->descriptor.branch_address = 0; |
301 | 300 | ||
302 | dma_sync_single_for_device(dev, ab_bus, PAGE_SIZE, DMA_BIDIRECTIONAL); | ||
303 | |||
304 | ctx->last_buffer->descriptor.branch_address = cpu_to_le32(ab_bus | 1); | 301 | ctx->last_buffer->descriptor.branch_address = cpu_to_le32(ab_bus | 1); |
305 | ctx->last_buffer->next = ab; | 302 | ctx->last_buffer->next = ab; |
306 | ctx->last_buffer = ab; | 303 | ctx->last_buffer = ab; |
@@ -311,15 +308,22 @@ static int ar_context_add_page(struct ar_context *ctx) | |||
311 | return 0; | 308 | return 0; |
312 | } | 309 | } |
313 | 310 | ||
311 | #if defined(CONFIG_PPC_PMAC) && defined(CONFIG_PPC32) | ||
312 | #define cond_le32_to_cpu(v) \ | ||
313 | (ohci->old_uninorth ? (__force __u32)(v) : le32_to_cpu(v)) | ||
314 | #else | ||
315 | #define cond_le32_to_cpu(v) le32_to_cpu(v) | ||
316 | #endif | ||
317 | |||
314 | static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer) | 318 | static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer) |
315 | { | 319 | { |
316 | struct fw_ohci *ohci = ctx->ohci; | 320 | struct fw_ohci *ohci = ctx->ohci; |
317 | struct fw_packet p; | 321 | struct fw_packet p; |
318 | u32 status, length, tcode; | 322 | u32 status, length, tcode; |
319 | 323 | ||
320 | p.header[0] = le32_to_cpu(buffer[0]); | 324 | p.header[0] = cond_le32_to_cpu(buffer[0]); |
321 | p.header[1] = le32_to_cpu(buffer[1]); | 325 | p.header[1] = cond_le32_to_cpu(buffer[1]); |
322 | p.header[2] = le32_to_cpu(buffer[2]); | 326 | p.header[2] = cond_le32_to_cpu(buffer[2]); |
323 | 327 | ||
324 | tcode = (p.header[0] >> 4) & 0x0f; | 328 | tcode = (p.header[0] >> 4) & 0x0f; |
325 | switch (tcode) { | 329 | switch (tcode) { |
@@ -331,7 +335,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer) | |||
331 | break; | 335 | break; |
332 | 336 | ||
333 | case TCODE_READ_BLOCK_REQUEST : | 337 | case TCODE_READ_BLOCK_REQUEST : |
334 | p.header[3] = le32_to_cpu(buffer[3]); | 338 | p.header[3] = cond_le32_to_cpu(buffer[3]); |
335 | p.header_length = 16; | 339 | p.header_length = 16; |
336 | p.payload_length = 0; | 340 | p.payload_length = 0; |
337 | break; | 341 | break; |
@@ -340,7 +344,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer) | |||
340 | case TCODE_READ_BLOCK_RESPONSE: | 344 | case TCODE_READ_BLOCK_RESPONSE: |
341 | case TCODE_LOCK_REQUEST: | 345 | case TCODE_LOCK_REQUEST: |
342 | case TCODE_LOCK_RESPONSE: | 346 | case TCODE_LOCK_RESPONSE: |
343 | p.header[3] = le32_to_cpu(buffer[3]); | 347 | p.header[3] = cond_le32_to_cpu(buffer[3]); |
344 | p.header_length = 16; | 348 | p.header_length = 16; |
345 | p.payload_length = p.header[3] >> 16; | 349 | p.payload_length = p.header[3] >> 16; |
346 | break; | 350 | break; |
@@ -357,7 +361,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer) | |||
357 | 361 | ||
358 | /* FIXME: What to do about evt_* errors? */ | 362 | /* FIXME: What to do about evt_* errors? */ |
359 | length = (p.header_length + p.payload_length + 3) / 4; | 363 | length = (p.header_length + p.payload_length + 3) / 4; |
360 | status = le32_to_cpu(buffer[length]); | 364 | status = cond_le32_to_cpu(buffer[length]); |
361 | 365 | ||
362 | p.ack = ((status >> 16) & 0x1f) - 16; | 366 | p.ack = ((status >> 16) & 0x1f) - 16; |
363 | p.speed = (status >> 21) & 0x7; | 367 | p.speed = (status >> 21) & 0x7; |
@@ -375,7 +379,7 @@ static __le32 *handle_ar_packet(struct ar_context *ctx, __le32 *buffer) | |||
375 | */ | 379 | */ |
376 | 380 | ||
377 | if (p.ack + 16 == 0x09) | 381 | if (p.ack + 16 == 0x09) |
378 | ohci->request_generation = (buffer[2] >> 16) & 0xff; | 382 | ohci->request_generation = (p.header[2] >> 16) & 0xff; |
379 | else if (ctx == &ohci->ar_request_ctx) | 383 | else if (ctx == &ohci->ar_request_ctx) |
380 | fw_core_handle_request(&ohci->card, &p); | 384 | fw_core_handle_request(&ohci->card, &p); |
381 | else | 385 | else |
@@ -397,6 +401,7 @@ static void ar_context_tasklet(unsigned long data) | |||
397 | 401 | ||
398 | if (d->res_count == 0) { | 402 | if (d->res_count == 0) { |
399 | size_t size, rest, offset; | 403 | size_t size, rest, offset; |
404 | dma_addr_t buffer_bus; | ||
400 | 405 | ||
401 | /* | 406 | /* |
402 | * This descriptor is finished and we may have a | 407 | * This descriptor is finished and we may have a |
@@ -405,9 +410,7 @@ static void ar_context_tasklet(unsigned long data) | |||
405 | */ | 410 | */ |
406 | 411 | ||
407 | offset = offsetof(struct ar_buffer, data); | 412 | offset = offsetof(struct ar_buffer, data); |
408 | dma_unmap_single(ohci->card.device, | 413 | buffer_bus = le32_to_cpu(ab->descriptor.data_address) - offset; |
409 | le32_to_cpu(ab->descriptor.data_address) - offset, | ||
410 | PAGE_SIZE, DMA_BIDIRECTIONAL); | ||
411 | 414 | ||
412 | buffer = ab; | 415 | buffer = ab; |
413 | ab = ab->next; | 416 | ab = ab->next; |
@@ -423,7 +426,8 @@ static void ar_context_tasklet(unsigned long data) | |||
423 | while (buffer < end) | 426 | while (buffer < end) |
424 | buffer = handle_ar_packet(ctx, buffer); | 427 | buffer = handle_ar_packet(ctx, buffer); |
425 | 428 | ||
426 | free_page((unsigned long)buffer); | 429 | dma_free_coherent(ohci->card.device, PAGE_SIZE, |
430 | buffer, buffer_bus); | ||
427 | ar_context_add_page(ctx); | 431 | ar_context_add_page(ctx); |
428 | } else { | 432 | } else { |
429 | buffer = ctx->pointer; | 433 | buffer = ctx->pointer; |
@@ -532,7 +536,7 @@ static int | |||
532 | context_add_buffer(struct context *ctx) | 536 | context_add_buffer(struct context *ctx) |
533 | { | 537 | { |
534 | struct descriptor_buffer *desc; | 538 | struct descriptor_buffer *desc; |
535 | dma_addr_t bus_addr; | 539 | dma_addr_t uninitialized_var(bus_addr); |
536 | int offset; | 540 | int offset; |
537 | 541 | ||
538 | /* | 542 | /* |
@@ -1022,13 +1026,14 @@ static void bus_reset_tasklet(unsigned long data) | |||
1022 | */ | 1026 | */ |
1023 | 1027 | ||
1024 | self_id_count = (reg_read(ohci, OHCI1394_SelfIDCount) >> 3) & 0x3ff; | 1028 | self_id_count = (reg_read(ohci, OHCI1394_SelfIDCount) >> 3) & 0x3ff; |
1025 | generation = (le32_to_cpu(ohci->self_id_cpu[0]) >> 16) & 0xff; | 1029 | generation = (cond_le32_to_cpu(ohci->self_id_cpu[0]) >> 16) & 0xff; |
1026 | rmb(); | 1030 | rmb(); |
1027 | 1031 | ||
1028 | for (i = 1, j = 0; j < self_id_count; i += 2, j++) { | 1032 | for (i = 1, j = 0; j < self_id_count; i += 2, j++) { |
1029 | if (ohci->self_id_cpu[i] != ~ohci->self_id_cpu[i + 1]) | 1033 | if (ohci->self_id_cpu[i] != ~ohci->self_id_cpu[i + 1]) |
1030 | fw_error("inconsistent self IDs\n"); | 1034 | fw_error("inconsistent self IDs\n"); |
1031 | ohci->self_id_buffer[j] = le32_to_cpu(ohci->self_id_cpu[i]); | 1035 | ohci->self_id_buffer[j] = |
1036 | cond_le32_to_cpu(ohci->self_id_cpu[i]); | ||
1032 | } | 1037 | } |
1033 | rmb(); | 1038 | rmb(); |
1034 | 1039 | ||
@@ -1316,7 +1321,7 @@ ohci_set_config_rom(struct fw_card *card, u32 *config_rom, size_t length) | |||
1316 | unsigned long flags; | 1321 | unsigned long flags; |
1317 | int retval = -EBUSY; | 1322 | int retval = -EBUSY; |
1318 | __be32 *next_config_rom; | 1323 | __be32 *next_config_rom; |
1319 | dma_addr_t next_config_rom_bus; | 1324 | dma_addr_t uninitialized_var(next_config_rom_bus); |
1320 | 1325 | ||
1321 | ohci = fw_ohci(card); | 1326 | ohci = fw_ohci(card); |
1322 | 1327 | ||
@@ -1487,7 +1492,7 @@ static int handle_ir_dualbuffer_packet(struct context *context, | |||
1487 | void *p, *end; | 1492 | void *p, *end; |
1488 | int i; | 1493 | int i; |
1489 | 1494 | ||
1490 | if (db->first_res_count > 0 && db->second_res_count > 0) { | 1495 | if (db->first_res_count != 0 && db->second_res_count != 0) { |
1491 | if (ctx->excess_bytes <= le16_to_cpu(db->second_req_count)) { | 1496 | if (ctx->excess_bytes <= le16_to_cpu(db->second_req_count)) { |
1492 | /* This descriptor isn't done yet, stop iteration. */ | 1497 | /* This descriptor isn't done yet, stop iteration. */ |
1493 | return 0; | 1498 | return 0; |
@@ -1513,7 +1518,7 @@ static int handle_ir_dualbuffer_packet(struct context *context, | |||
1513 | memcpy(ctx->header + i + 4, p + 8, ctx->base.header_size - 4); | 1518 | memcpy(ctx->header + i + 4, p + 8, ctx->base.header_size - 4); |
1514 | i += ctx->base.header_size; | 1519 | i += ctx->base.header_size; |
1515 | ctx->excess_bytes += | 1520 | ctx->excess_bytes += |
1516 | (le32_to_cpu(*(u32 *)(p + 4)) >> 16) & 0xffff; | 1521 | (le32_to_cpu(*(__le32 *)(p + 4)) >> 16) & 0xffff; |
1517 | p += ctx->base.header_size + 4; | 1522 | p += ctx->base.header_size + 4; |
1518 | } | 1523 | } |
1519 | ctx->header_length = i; | 1524 | ctx->header_length = i; |
@@ -2048,6 +2053,18 @@ pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) | |||
2048 | int err; | 2053 | int err; |
2049 | size_t size; | 2054 | size_t size; |
2050 | 2055 | ||
2056 | #ifdef CONFIG_PPC_PMAC | ||
2057 | /* Necessary on some machines if fw-ohci was loaded/ unloaded before */ | ||
2058 | if (machine_is(powermac)) { | ||
2059 | struct device_node *ofn = pci_device_to_OF_node(dev); | ||
2060 | |||
2061 | if (ofn) { | ||
2062 | pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, ofn, 0, 1); | ||
2063 | pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 1); | ||
2064 | } | ||
2065 | } | ||
2066 | #endif /* CONFIG_PPC_PMAC */ | ||
2067 | |||
2051 | ohci = kzalloc(sizeof(*ohci), GFP_KERNEL); | 2068 | ohci = kzalloc(sizeof(*ohci), GFP_KERNEL); |
2052 | if (ohci == NULL) { | 2069 | if (ohci == NULL) { |
2053 | fw_error("Could not malloc fw_ohci data.\n"); | 2070 | fw_error("Could not malloc fw_ohci data.\n"); |
@@ -2066,6 +2083,10 @@ pci_probe(struct pci_dev *dev, const struct pci_device_id *ent) | |||
2066 | pci_write_config_dword(dev, OHCI1394_PCI_HCI_Control, 0); | 2083 | pci_write_config_dword(dev, OHCI1394_PCI_HCI_Control, 0); |
2067 | pci_set_drvdata(dev, ohci); | 2084 | pci_set_drvdata(dev, ohci); |
2068 | 2085 | ||
2086 | #if defined(CONFIG_PPC_PMAC) && defined(CONFIG_PPC32) | ||
2087 | ohci->old_uninorth = dev->vendor == PCI_VENDOR_ID_APPLE && | ||
2088 | dev->device == PCI_DEVICE_ID_APPLE_UNI_N_FW; | ||
2089 | #endif | ||
2069 | spin_lock_init(&ohci->lock); | 2090 | spin_lock_init(&ohci->lock); |
2070 | 2091 | ||
2071 | tasklet_init(&ohci->bus_reset_tasklet, | 2092 | tasklet_init(&ohci->bus_reset_tasklet, |
@@ -2182,6 +2203,19 @@ static void pci_remove(struct pci_dev *dev) | |||
2182 | pci_disable_device(dev); | 2203 | pci_disable_device(dev); |
2183 | fw_card_put(&ohci->card); | 2204 | fw_card_put(&ohci->card); |
2184 | 2205 | ||
2206 | #ifdef CONFIG_PPC_PMAC | ||
2207 | /* On UniNorth, power down the cable and turn off the chip clock | ||
2208 | * to save power on laptops */ | ||
2209 | if (machine_is(powermac)) { | ||
2210 | struct device_node *ofn = pci_device_to_OF_node(dev); | ||
2211 | |||
2212 | if (ofn) { | ||
2213 | pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 0); | ||
2214 | pmac_call_feature(PMAC_FTR_1394_CABLE_POWER, ofn, 0, 0); | ||
2215 | } | ||
2216 | } | ||
2217 | #endif /* CONFIG_PPC_PMAC */ | ||
2218 | |||
2185 | fw_notify("Removed fw-ohci device.\n"); | 2219 | fw_notify("Removed fw-ohci device.\n"); |
2186 | } | 2220 | } |
2187 | 2221 | ||
@@ -2202,6 +2236,16 @@ static int pci_suspend(struct pci_dev *pdev, pm_message_t state) | |||
2202 | if (err) | 2236 | if (err) |
2203 | fw_error("pci_set_power_state failed with %d\n", err); | 2237 | fw_error("pci_set_power_state failed with %d\n", err); |
2204 | 2238 | ||
2239 | /* PowerMac suspend code comes last */ | ||
2240 | #ifdef CONFIG_PPC_PMAC | ||
2241 | if (machine_is(powermac)) { | ||
2242 | struct device_node *ofn = pci_device_to_OF_node(pdev); | ||
2243 | |||
2244 | if (ofn) | ||
2245 | pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 0); | ||
2246 | } | ||
2247 | #endif /* CONFIG_PPC_PMAC */ | ||
2248 | |||
2205 | return 0; | 2249 | return 0; |
2206 | } | 2250 | } |
2207 | 2251 | ||
@@ -2210,6 +2254,16 @@ static int pci_resume(struct pci_dev *pdev) | |||
2210 | struct fw_ohci *ohci = pci_get_drvdata(pdev); | 2254 | struct fw_ohci *ohci = pci_get_drvdata(pdev); |
2211 | int err; | 2255 | int err; |
2212 | 2256 | ||
2257 | /* PowerMac resume code comes first */ | ||
2258 | #ifdef CONFIG_PPC_PMAC | ||
2259 | if (machine_is(powermac)) { | ||
2260 | struct device_node *ofn = pci_device_to_OF_node(pdev); | ||
2261 | |||
2262 | if (ofn) | ||
2263 | pmac_call_feature(PMAC_FTR_1394_ENABLE, ofn, 0, 1); | ||
2264 | } | ||
2265 | #endif /* CONFIG_PPC_PMAC */ | ||
2266 | |||
2213 | pci_set_power_state(pdev, PCI_D0); | 2267 | pci_set_power_state(pdev, PCI_D0); |
2214 | pci_restore_state(pdev); | 2268 | pci_restore_state(pdev); |
2215 | err = pci_enable_device(pdev); | 2269 | err = pci_enable_device(pdev); |
diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c index 03069a454c07..62b4e47d0cc0 100644 --- a/drivers/firewire/fw-sbp2.c +++ b/drivers/firewire/fw-sbp2.c | |||
@@ -173,6 +173,7 @@ struct sbp2_target { | |||
173 | #define SBP2_ORB_TIMEOUT 2000U /* Timeout in ms */ | 173 | #define SBP2_ORB_TIMEOUT 2000U /* Timeout in ms */ |
174 | #define SBP2_ORB_NULL 0x80000000 | 174 | #define SBP2_ORB_NULL 0x80000000 |
175 | #define SBP2_MAX_SG_ELEMENT_LENGTH 0xf000 | 175 | #define SBP2_MAX_SG_ELEMENT_LENGTH 0xf000 |
176 | #define SBP2_RETRY_LIMIT 0xf /* 15 retries */ | ||
176 | 177 | ||
177 | #define SBP2_DIRECTION_TO_MEDIA 0x0 | 178 | #define SBP2_DIRECTION_TO_MEDIA 0x0 |
178 | #define SBP2_DIRECTION_FROM_MEDIA 0x1 | 179 | #define SBP2_DIRECTION_FROM_MEDIA 0x1 |
@@ -330,6 +331,11 @@ static const struct { | |||
330 | .model = ~0, | 331 | .model = ~0, |
331 | .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, | 332 | .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, |
332 | }, | 333 | }, |
334 | /* Datafab MD2-FW2 with Symbios/LSILogic SYM13FW500 bridge */ { | ||
335 | .firmware_revision = 0x002600, | ||
336 | .model = ~0, | ||
337 | .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, | ||
338 | }, | ||
333 | 339 | ||
334 | /* | 340 | /* |
335 | * There are iPods (2nd gen, 3rd gen) with model_id == 0, but | 341 | * There are iPods (2nd gen, 3rd gen) with model_id == 0, but |
@@ -812,6 +818,30 @@ static void sbp2_target_put(struct sbp2_target *tgt) | |||
812 | kref_put(&tgt->kref, sbp2_release_target); | 818 | kref_put(&tgt->kref, sbp2_release_target); |
813 | } | 819 | } |
814 | 820 | ||
821 | static void | ||
822 | complete_set_busy_timeout(struct fw_card *card, int rcode, | ||
823 | void *payload, size_t length, void *done) | ||
824 | { | ||
825 | complete(done); | ||
826 | } | ||
827 | |||
828 | static void sbp2_set_busy_timeout(struct sbp2_logical_unit *lu) | ||
829 | { | ||
830 | struct fw_device *device = fw_device(lu->tgt->unit->device.parent); | ||
831 | DECLARE_COMPLETION_ONSTACK(done); | ||
832 | struct fw_transaction t; | ||
833 | static __be32 busy_timeout; | ||
834 | |||
835 | /* FIXME: we should try to set dual-phase cycle_limit too */ | ||
836 | busy_timeout = cpu_to_be32(SBP2_RETRY_LIMIT); | ||
837 | |||
838 | fw_send_request(device->card, &t, TCODE_WRITE_QUADLET_REQUEST, | ||
839 | lu->tgt->node_id, lu->generation, device->max_speed, | ||
840 | CSR_REGISTER_BASE + CSR_BUSY_TIMEOUT, &busy_timeout, | ||
841 | sizeof(busy_timeout), complete_set_busy_timeout, &done); | ||
842 | wait_for_completion(&done); | ||
843 | } | ||
844 | |||
815 | static void sbp2_reconnect(struct work_struct *work); | 845 | static void sbp2_reconnect(struct work_struct *work); |
816 | 846 | ||
817 | static void sbp2_login(struct work_struct *work) | 847 | static void sbp2_login(struct work_struct *work) |
@@ -864,10 +894,8 @@ static void sbp2_login(struct work_struct *work) | |||
864 | fw_notify("%s: logged in to LUN %04x (%d retries)\n", | 894 | fw_notify("%s: logged in to LUN %04x (%d retries)\n", |
865 | tgt->bus_id, lu->lun, lu->retries); | 895 | tgt->bus_id, lu->lun, lu->retries); |
866 | 896 | ||
867 | #if 0 | 897 | /* set appropriate retry limit(s) in BUSY_TIMEOUT register */ |
868 | /* FIXME: The linux1394 sbp2 does this last step. */ | 898 | sbp2_set_busy_timeout(lu); |
869 | sbp2_set_busy_timeout(scsi_id); | ||
870 | #endif | ||
871 | 899 | ||
872 | PREPARE_DELAYED_WORK(&lu->work, sbp2_reconnect); | 900 | PREPARE_DELAYED_WORK(&lu->work, sbp2_reconnect); |
873 | sbp2_agent_reset(lu); | 901 | sbp2_agent_reset(lu); |
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c index e47bb040197a..d2c7a3d7e1cb 100644 --- a/drivers/firewire/fw-topology.c +++ b/drivers/firewire/fw-topology.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/module.h> | 21 | #include <linux/module.h> |
22 | #include <linux/wait.h> | 22 | #include <linux/wait.h> |
23 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
24 | #include <asm/bug.h> | ||
24 | #include <asm/system.h> | 25 | #include <asm/system.h> |
25 | #include "fw-transaction.h" | 26 | #include "fw-transaction.h" |
26 | #include "fw-topology.h" | 27 | #include "fw-topology.h" |
@@ -424,8 +425,8 @@ update_tree(struct fw_card *card, struct fw_node *root) | |||
424 | node1 = fw_node(list1.next); | 425 | node1 = fw_node(list1.next); |
425 | 426 | ||
426 | while (&node0->link != &list0) { | 427 | while (&node0->link != &list0) { |
428 | WARN_ON(node0->port_count != node1->port_count); | ||
427 | 429 | ||
428 | /* assert(node0->port_count == node1->port_count); */ | ||
429 | if (node0->link_on && !node1->link_on) | 430 | if (node0->link_on && !node1->link_on) |
430 | event = FW_NODE_LINK_OFF; | 431 | event = FW_NODE_LINK_OFF; |
431 | else if (!node0->link_on && node1->link_on) | 432 | else if (!node0->link_on && node1->link_on) |
diff --git a/drivers/firewire/fw-transaction.c b/drivers/firewire/fw-transaction.c index 7fcc59dedf08..e6f1bda38940 100644 --- a/drivers/firewire/fw-transaction.c +++ b/drivers/firewire/fw-transaction.c | |||
@@ -736,6 +736,12 @@ fw_core_handle_response(struct fw_card *card, struct fw_packet *p) | |||
736 | break; | 736 | break; |
737 | } | 737 | } |
738 | 738 | ||
739 | /* | ||
740 | * The response handler may be executed while the request handler | ||
741 | * is still pending. Cancel the request handler. | ||
742 | */ | ||
743 | card->driver->cancel_packet(card, &t->packet); | ||
744 | |||
739 | t->callback(card, rcode, data, data_length, t->callback_data); | 745 | t->callback(card, rcode, data, data_length, t->callback_data); |
740 | } | 746 | } |
741 | EXPORT_SYMBOL(fw_core_handle_response); | 747 | EXPORT_SYMBOL(fw_core_handle_response); |
@@ -751,7 +757,7 @@ handle_topology_map(struct fw_card *card, struct fw_request *request, | |||
751 | void *payload, size_t length, void *callback_data) | 757 | void *payload, size_t length, void *callback_data) |
752 | { | 758 | { |
753 | int i, start, end; | 759 | int i, start, end; |
754 | u32 *map; | 760 | __be32 *map; |
755 | 761 | ||
756 | if (!TCODE_IS_READ_REQUEST(tcode)) { | 762 | if (!TCODE_IS_READ_REQUEST(tcode)) { |
757 | fw_send_response(card, request, RCODE_TYPE_ERROR); | 763 | fw_send_response(card, request, RCODE_TYPE_ERROR); |
diff --git a/drivers/firewire/fw-transaction.h b/drivers/firewire/fw-transaction.h index 09cb72870454..a43bb22912f9 100644 --- a/drivers/firewire/fw-transaction.h +++ b/drivers/firewire/fw-transaction.h | |||
@@ -86,12 +86,12 @@ | |||
86 | static inline void | 86 | static inline void |
87 | fw_memcpy_from_be32(void *_dst, void *_src, size_t size) | 87 | fw_memcpy_from_be32(void *_dst, void *_src, size_t size) |
88 | { | 88 | { |
89 | u32 *dst = _dst; | 89 | u32 *dst = _dst; |
90 | u32 *src = _src; | 90 | __be32 *src = _src; |
91 | int i; | 91 | int i; |
92 | 92 | ||
93 | for (i = 0; i < size / 4; i++) | 93 | for (i = 0; i < size / 4; i++) |
94 | dst[i] = cpu_to_be32(src[i]); | 94 | dst[i] = be32_to_cpu(src[i]); |
95 | } | 95 | } |
96 | 96 | ||
97 | static inline void | 97 | static inline void |
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index d73a768e176e..f0b00ec1e47e 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c | |||
@@ -968,7 +968,7 @@ int hid_input_report(struct hid_device *hid, int type, u8 *data, int size, int i | |||
968 | size--; | 968 | size--; |
969 | } | 969 | } |
970 | 970 | ||
971 | /* dump the report descriptor */ | 971 | /* dump the report */ |
972 | dbg_hid("report %d (size %u) = ", n, size); | 972 | dbg_hid("report %d (size %u) = ", n, size); |
973 | for (i = 0; i < size; i++) | 973 | for (i = 0; i < size; i++) |
974 | dbg_hid_line(" %02x", data[i]); | 974 | dbg_hid_line(" %02x", data[i]); |
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 5a38fb27d69f..c3eb3f13e2ca 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c | |||
@@ -98,18 +98,16 @@ struct hidinput_key_translation { | |||
98 | 98 | ||
99 | static struct hidinput_key_translation apple_fn_keys[] = { | 99 | static struct hidinput_key_translation apple_fn_keys[] = { |
100 | { KEY_BACKSPACE, KEY_DELETE }, | 100 | { KEY_BACKSPACE, KEY_DELETE }, |
101 | { KEY_F1, KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY }, | 101 | { KEY_F1, KEY_BRIGHTNESSDOWN, APPLE_FLAG_FKEY }, |
102 | { KEY_F2, KEY_BRIGHTNESSUP, APPLE_FLAG_FKEY }, | 102 | { KEY_F2, KEY_BRIGHTNESSUP, APPLE_FLAG_FKEY }, |
103 | { KEY_F3, KEY_CYCLEWINDOWS, APPLE_FLAG_FKEY }, /* Exposé */ | 103 | { KEY_F3, KEY_FN_F5, APPLE_FLAG_FKEY }, /* Exposé */ |
104 | { KEY_F4, KEY_FN_F4, APPLE_FLAG_FKEY }, /* Dashboard */ | 104 | { KEY_F4, KEY_FN_F4, APPLE_FLAG_FKEY }, /* Dashboard */ |
105 | { KEY_F5, KEY_FN_F5 }, | 105 | { KEY_F7, KEY_PREVIOUSSONG, APPLE_FLAG_FKEY }, |
106 | { KEY_F6, KEY_FN_F6 }, | 106 | { KEY_F8, KEY_PLAYPAUSE, APPLE_FLAG_FKEY }, |
107 | { KEY_F7, KEY_BACK, APPLE_FLAG_FKEY }, | 107 | { KEY_F9, KEY_NEXTSONG, APPLE_FLAG_FKEY }, |
108 | { KEY_F8, KEY_PLAYPAUSE, APPLE_FLAG_FKEY }, | 108 | { KEY_F10, KEY_MUTE, APPLE_FLAG_FKEY }, |
109 | { KEY_F9, KEY_FORWARD, APPLE_FLAG_FKEY }, | 109 | { KEY_F11, KEY_VOLUMEDOWN, APPLE_FLAG_FKEY }, |
110 | { KEY_F10, KEY_MUTE, APPLE_FLAG_FKEY }, | 110 | { KEY_F12, KEY_VOLUMEUP, APPLE_FLAG_FKEY }, |
111 | { KEY_F11, KEY_VOLUMEDOWN, APPLE_FLAG_FKEY }, | ||
112 | { KEY_F12, KEY_VOLUMEUP, APPLE_FLAG_FKEY }, | ||
113 | { KEY_UP, KEY_PAGEUP }, | 111 | { KEY_UP, KEY_PAGEUP }, |
114 | { KEY_DOWN, KEY_PAGEDOWN }, | 112 | { KEY_DOWN, KEY_PAGEDOWN }, |
115 | { KEY_LEFT, KEY_HOME }, | 113 | { KEY_LEFT, KEY_HOME }, |
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c index b38e559b7a46..d95979f0e028 100644 --- a/drivers/hid/usbhid/hid-core.c +++ b/drivers/hid/usbhid/hid-core.c | |||
@@ -278,7 +278,7 @@ static int hid_submit_ctrl(struct hid_device *hid) | |||
278 | usbhid->urbctrl->pipe = usb_rcvctrlpipe(hid_to_usb_dev(hid), 0); | 278 | usbhid->urbctrl->pipe = usb_rcvctrlpipe(hid_to_usb_dev(hid), 0); |
279 | maxpacket = usb_maxpacket(hid_to_usb_dev(hid), usbhid->urbctrl->pipe, 0); | 279 | maxpacket = usb_maxpacket(hid_to_usb_dev(hid), usbhid->urbctrl->pipe, 0); |
280 | if (maxpacket > 0) { | 280 | if (maxpacket > 0) { |
281 | padlen = (len + maxpacket - 1) / maxpacket; | 281 | padlen = DIV_ROUND_UP(len, maxpacket); |
282 | padlen *= maxpacket; | 282 | padlen *= maxpacket; |
283 | if (padlen > usbhid->bufsize) | 283 | if (padlen > usbhid->bufsize) |
284 | padlen = usbhid->bufsize; | 284 | padlen = usbhid->bufsize; |
diff --git a/drivers/hid/usbhid/hid-quirks.c b/drivers/hid/usbhid/hid-quirks.c index e6d05f6b1c1c..e29a057cbea2 100644 --- a/drivers/hid/usbhid/hid-quirks.c +++ b/drivers/hid/usbhid/hid-quirks.c | |||
@@ -345,6 +345,9 @@ | |||
345 | #define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400 | 345 | #define USB_VENDOR_ID_NATIONAL_SEMICONDUCTOR 0x0400 |
346 | #define USB_DEVICE_ID_N_S_HARMONY 0xc359 | 346 | #define USB_DEVICE_ID_N_S_HARMONY 0xc359 |
347 | 347 | ||
348 | #define USB_VENDOR_ID_NATSU 0x08b7 | ||
349 | #define USB_DEVICE_ID_NATSU_GAMEPAD 0x0001 | ||
350 | |||
348 | #define USB_VENDOR_ID_NEC 0x073e | 351 | #define USB_VENDOR_ID_NEC 0x073e |
349 | #define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 | 352 | #define USB_DEVICE_ID_NEC_USB_GAME_PAD 0x0301 |
350 | 353 | ||
@@ -426,6 +429,7 @@ static const struct hid_blacklist { | |||
426 | { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, | 429 | { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_DRIVING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, |
427 | { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, | 430 | { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FLYING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, |
428 | { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, | 431 | { USB_VENDOR_ID_HAPP, USB_DEVICE_ID_UGCI_FIGHTING, HID_QUIRK_BADPAD | HID_QUIRK_MULTI_INPUT }, |
432 | { USB_VENDOR_ID_NATSU, USB_DEVICE_ID_NATSU_GAMEPAD, HID_QUIRK_BADPAD }, | ||
429 | { USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD, HID_QUIRK_BADPAD }, | 433 | { USB_VENDOR_ID_NEC, USB_DEVICE_ID_NEC_USB_GAME_PAD, HID_QUIRK_BADPAD }, |
430 | { USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD }, | 434 | { USB_VENDOR_ID_SAITEK, USB_DEVICE_ID_SAITEK_RUMBLEPAD, HID_QUIRK_BADPAD }, |
431 | { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD }, | 435 | { USB_VENDOR_ID_TOPMAX, USB_DEVICE_ID_TOPMAX_COBRAPAD, HID_QUIRK_BADPAD }, |
@@ -624,7 +628,7 @@ static const struct hid_blacklist { | |||
624 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, | 628 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, |
625 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN }, | 629 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_JIS, HID_QUIRK_APPLE_HAS_FN }, |
626 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 630 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
627 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE | HID_QUIRK_APPLE_ISO_KEYBOARD }, | 631 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
628 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, | 632 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_IGNORE_MOUSE }, |
629 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_HAS_FN }, | 633 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ANSI, HID_QUIRK_APPLE_HAS_FN }, |
630 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, | 634 | { USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ALU_WIRELESS_ISO, HID_QUIRK_APPLE_HAS_FN | HID_QUIRK_APPLE_ISO_KEYBOARD }, |
diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig index 368879ff5d8c..4dc76bc45c9d 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig | |||
@@ -337,8 +337,9 @@ config SENSORS_IBMPEX | |||
337 | help | 337 | help |
338 | If you say yes here you get support for the temperature and | 338 | If you say yes here you get support for the temperature and |
339 | power sensors in various IBM System X servers that support | 339 | power sensors in various IBM System X servers that support |
340 | PowerExecutive. So far this includes the x3550, x3650, x3655, | 340 | PowerExecutive. So far this includes the x3350, x3550, x3650, |
341 | x3755, and certain HS20 blades. | 341 | x3655, and x3755; the x3800, x3850, and x3950 models that have |
342 | PCI Express; and some of the HS2x, LS2x, and QS2x blades. | ||
342 | 343 | ||
343 | This driver can also be built as a module. If so, the module | 344 | This driver can also be built as a module. If so, the module |
344 | will be called ibmpex. | 345 | will be called ibmpex. |
diff --git a/drivers/hwmon/ibmpex.c b/drivers/hwmon/ibmpex.c index 9c9cdb0685e4..4e9b19c6732f 100644 --- a/drivers/hwmon/ibmpex.c +++ b/drivers/hwmon/ibmpex.c | |||
@@ -327,10 +327,14 @@ static int is_temp_sensor(const char *sensor_id, int len) | |||
327 | return 0; | 327 | return 0; |
328 | } | 328 | } |
329 | 329 | ||
330 | static int power_sensor_multiplier(const char *sensor_id, int len) | 330 | static int power_sensor_multiplier(struct ibmpex_bmc_data *data, |
331 | const char *sensor_id, int len) | ||
331 | { | 332 | { |
332 | int i; | 333 | int i; |
333 | 334 | ||
335 | if (data->sensor_major == 2) | ||
336 | return 1000000; | ||
337 | |||
334 | for (i = PEX_SENSOR_TYPE_LEN; i < len - 1; i++) | 338 | for (i = PEX_SENSOR_TYPE_LEN; i < len - 1; i++) |
335 | if (!memcmp(&sensor_id[i], watt_sensor_sig, PEX_MULT_LEN)) | 339 | if (!memcmp(&sensor_id[i], watt_sensor_sig, PEX_MULT_LEN)) |
336 | return 1000000; | 340 | return 1000000; |
@@ -398,14 +402,15 @@ static int ibmpex_find_sensors(struct ibmpex_bmc_data *data) | |||
398 | num_power++; | 402 | num_power++; |
399 | sensor_counter = num_power; | 403 | sensor_counter = num_power; |
400 | data->sensors[i].multiplier = | 404 | data->sensors[i].multiplier = |
401 | power_sensor_multiplier(data->rx_msg_data, | 405 | power_sensor_multiplier(data, |
402 | data->rx_msg_len); | 406 | data->rx_msg_data, |
407 | data->rx_msg_len); | ||
403 | } else if (is_temp_sensor(data->rx_msg_data, | 408 | } else if (is_temp_sensor(data->rx_msg_data, |
404 | data->rx_msg_len)) { | 409 | data->rx_msg_len)) { |
405 | sensor_type = TEMP_SENSOR; | 410 | sensor_type = TEMP_SENSOR; |
406 | num_temp++; | 411 | num_temp++; |
407 | sensor_counter = num_temp; | 412 | sensor_counter = num_temp; |
408 | data->sensors[i].multiplier = 1; | 413 | data->sensors[i].multiplier = 1000; |
409 | } else | 414 | } else |
410 | continue; | 415 | continue; |
411 | 416 | ||
diff --git a/drivers/ide/ide-lib.c b/drivers/ide/ide-lib.c index 29e2c9719c30..7031a8dcf692 100644 --- a/drivers/ide/ide-lib.c +++ b/drivers/ide/ide-lib.c | |||
@@ -122,7 +122,6 @@ static struct ide_pio_info { | |||
122 | const char *name; | 122 | const char *name; |
123 | int pio; | 123 | int pio; |
124 | } ide_pio_blacklist [] = { | 124 | } ide_pio_blacklist [] = { |
125 | /* { "Conner Peripherals 1275MB - CFS1275A", 4 }, */ | ||
126 | { "Conner Peripherals 540MB - CFS540A", 3 }, | 125 | { "Conner Peripherals 540MB - CFS540A", 3 }, |
127 | 126 | ||
128 | { "WDC AC2700", 3 }, | 127 | { "WDC AC2700", 3 }, |
@@ -138,10 +137,8 @@ static struct ide_pio_info { | |||
138 | { "WDC AC1170", 1 }, | 137 | { "WDC AC1170", 1 }, |
139 | { "WDC AC1210", 1 }, | 138 | { "WDC AC1210", 1 }, |
140 | { "WDC AC280", 0 }, | 139 | { "WDC AC280", 0 }, |
141 | /* { "WDC AC21000", 4 }, */ | ||
142 | { "WDC AC31000", 3 }, | 140 | { "WDC AC31000", 3 }, |
143 | { "WDC AC31200", 3 }, | 141 | { "WDC AC31200", 3 }, |
144 | /* { "WDC AC31600", 4 }, */ | ||
145 | 142 | ||
146 | { "Maxtor 7131 AT", 1 }, | 143 | { "Maxtor 7131 AT", 1 }, |
147 | { "Maxtor 7171 AT", 1 }, | 144 | { "Maxtor 7171 AT", 1 }, |
@@ -155,13 +152,6 @@ static struct ide_pio_info { | |||
155 | { "SAMSUNG SHD-3122A", 1 }, | 152 | { "SAMSUNG SHD-3122A", 1 }, |
156 | { "SAMSUNG SHD-3172A", 1 }, | 153 | { "SAMSUNG SHD-3172A", 1 }, |
157 | 154 | ||
158 | /* { "ST51080A", 4 }, | ||
159 | * { "ST51270A", 4 }, | ||
160 | * { "ST31220A", 4 }, | ||
161 | * { "ST31640A", 4 }, | ||
162 | * { "ST32140A", 4 }, | ||
163 | * { "ST3780A", 4 }, | ||
164 | */ | ||
165 | { "ST5660A", 3 }, | 155 | { "ST5660A", 3 }, |
166 | { "ST3660A", 3 }, | 156 | { "ST3660A", 3 }, |
167 | { "ST3630A", 3 }, | 157 | { "ST3630A", 3 }, |
diff --git a/drivers/ide/ide-tape.c b/drivers/ide/ide-tape.c index 43e0e0557776..0598ecfd5f37 100644 --- a/drivers/ide/ide-tape.c +++ b/drivers/ide/ide-tape.c | |||
@@ -3765,11 +3765,6 @@ static int ide_tape_probe(ide_drive_t *drive) | |||
3765 | g->fops = &idetape_block_ops; | 3765 | g->fops = &idetape_block_ops; |
3766 | ide_register_region(g); | 3766 | ide_register_region(g); |
3767 | 3767 | ||
3768 | printk(KERN_WARNING "It is possible that this driver does not have any" | ||
3769 | " users anymore and, as a result, it will be REMOVED soon." | ||
3770 | " Please notify Bart <bzolnier@gmail.com> or Boris" | ||
3771 | " <petkovbb@gmail.com> in case you still need it.\n"); | ||
3772 | |||
3773 | return 0; | 3768 | return 0; |
3774 | 3769 | ||
3775 | out_free_tape: | 3770 | out_free_tape: |
diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index 0518a2e948cf..4c86a8d84b4c 100644 --- a/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c | |||
@@ -423,6 +423,25 @@ void task_end_request(ide_drive_t *drive, struct request *rq, u8 stat) | |||
423 | } | 423 | } |
424 | 424 | ||
425 | /* | 425 | /* |
426 | * We got an interrupt on a task_in case, but no errors and no DRQ. | ||
427 | * | ||
428 | * It might be a spurious irq (shared irq), but it might be a | ||
429 | * command that had no output. | ||
430 | */ | ||
431 | static ide_startstop_t task_in_unexpected(ide_drive_t *drive, struct request *rq, u8 stat) | ||
432 | { | ||
433 | /* Command all done? */ | ||
434 | if (OK_STAT(stat, READY_STAT, BUSY_STAT)) { | ||
435 | task_end_request(drive, rq, stat); | ||
436 | return ide_stopped; | ||
437 | } | ||
438 | |||
439 | /* Assume it was a spurious irq */ | ||
440 | ide_set_handler(drive, &task_in_intr, WAIT_WORSTCASE, NULL); | ||
441 | return ide_started; | ||
442 | } | ||
443 | |||
444 | /* | ||
426 | * Handler for command with PIO data-in phase (Read/Read Multiple). | 445 | * Handler for command with PIO data-in phase (Read/Read Multiple). |
427 | */ | 446 | */ |
428 | static ide_startstop_t task_in_intr(ide_drive_t *drive) | 447 | static ide_startstop_t task_in_intr(ide_drive_t *drive) |
@@ -431,18 +450,17 @@ static ide_startstop_t task_in_intr(ide_drive_t *drive) | |||
431 | struct request *rq = HWGROUP(drive)->rq; | 450 | struct request *rq = HWGROUP(drive)->rq; |
432 | u8 stat = ide_read_status(drive); | 451 | u8 stat = ide_read_status(drive); |
433 | 452 | ||
434 | /* new way for dealing with premature shared PCI interrupts */ | 453 | /* Error? */ |
435 | if (!OK_STAT(stat, DRQ_STAT, BAD_R_STAT)) { | 454 | if (stat & ERR_STAT) |
436 | if (stat & (ERR_STAT | DRQ_STAT)) | 455 | return task_error(drive, rq, __FUNCTION__, stat); |
437 | return task_error(drive, rq, __FUNCTION__, stat); | 456 | |
438 | /* No data yet, so wait for another IRQ. */ | 457 | /* Didn't want any data? Odd. */ |
439 | ide_set_handler(drive, &task_in_intr, WAIT_WORSTCASE, NULL); | 458 | if (!(stat & DRQ_STAT)) |
440 | return ide_started; | 459 | return task_in_unexpected(drive, rq, stat); |
441 | } | ||
442 | 460 | ||
443 | ide_pio_datablock(drive, rq, 0); | 461 | ide_pio_datablock(drive, rq, 0); |
444 | 462 | ||
445 | /* If it was the last datablock check status and finish transfer. */ | 463 | /* Are we done? Check status and finish transfer. */ |
446 | if (!hwif->nleft) { | 464 | if (!hwif->nleft) { |
447 | stat = wait_drive_not_busy(drive); | 465 | stat = wait_drive_not_busy(drive); |
448 | if (!OK_STAT(stat, 0, BAD_STAT)) | 466 | if (!OK_STAT(stat, 0, BAD_STAT)) |
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 9976f9d627d4..fc69fe2e3ec0 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
@@ -1258,7 +1258,7 @@ static int __init ide_setup(char *s) | |||
1258 | drive = &hwif->drives[unit]; | 1258 | drive = &hwif->drives[unit]; |
1259 | if (strncmp(s + 4, "ide-", 4) == 0) { | 1259 | if (strncmp(s + 4, "ide-", 4) == 0) { |
1260 | strlcpy(drive->driver_req, s + 4, sizeof(drive->driver_req)); | 1260 | strlcpy(drive->driver_req, s + 4, sizeof(drive->driver_req)); |
1261 | goto done; | 1261 | goto obsolete_option; |
1262 | } | 1262 | } |
1263 | switch (match_parm(&s[3], hd_words, vals, 3)) { | 1263 | switch (match_parm(&s[3], hd_words, vals, 3)) { |
1264 | case -1: /* "none" */ | 1264 | case -1: /* "none" */ |
@@ -1290,13 +1290,13 @@ static int __init ide_setup(char *s) | |||
1290 | goto done; | 1290 | goto done; |
1291 | case -12: /* "remap" */ | 1291 | case -12: /* "remap" */ |
1292 | drive->remap_0_to_1 = 1; | 1292 | drive->remap_0_to_1 = 1; |
1293 | goto done; | 1293 | goto obsolete_option; |
1294 | case -13: /* "remap63" */ | 1294 | case -13: /* "remap63" */ |
1295 | drive->sect0 = 63; | 1295 | drive->sect0 = 63; |
1296 | goto done; | 1296 | goto obsolete_option; |
1297 | case -14: /* "scsi" */ | 1297 | case -14: /* "scsi" */ |
1298 | drive->scsi = 1; | 1298 | drive->scsi = 1; |
1299 | goto done; | 1299 | goto obsolete_option; |
1300 | case 3: /* cyl,head,sect */ | 1300 | case 3: /* cyl,head,sect */ |
1301 | drive->media = ide_disk; | 1301 | drive->media = ide_disk; |
1302 | drive->ready_stat = READY_STAT; | 1302 | drive->ready_stat = READY_STAT; |
@@ -1370,32 +1370,32 @@ static int __init ide_setup(char *s) | |||
1370 | #ifdef CONFIG_BLK_DEV_ALI14XX | 1370 | #ifdef CONFIG_BLK_DEV_ALI14XX |
1371 | case -17: /* "ali14xx" */ | 1371 | case -17: /* "ali14xx" */ |
1372 | probe_ali14xx = 1; | 1372 | probe_ali14xx = 1; |
1373 | goto done; | 1373 | goto obsolete_option; |
1374 | #endif | 1374 | #endif |
1375 | #ifdef CONFIG_BLK_DEV_UMC8672 | 1375 | #ifdef CONFIG_BLK_DEV_UMC8672 |
1376 | case -16: /* "umc8672" */ | 1376 | case -16: /* "umc8672" */ |
1377 | probe_umc8672 = 1; | 1377 | probe_umc8672 = 1; |
1378 | goto done; | 1378 | goto obsolete_option; |
1379 | #endif | 1379 | #endif |
1380 | #ifdef CONFIG_BLK_DEV_DTC2278 | 1380 | #ifdef CONFIG_BLK_DEV_DTC2278 |
1381 | case -15: /* "dtc2278" */ | 1381 | case -15: /* "dtc2278" */ |
1382 | probe_dtc2278 = 1; | 1382 | probe_dtc2278 = 1; |
1383 | goto done; | 1383 | goto obsolete_option; |
1384 | #endif | 1384 | #endif |
1385 | #ifdef CONFIG_BLK_DEV_CMD640 | 1385 | #ifdef CONFIG_BLK_DEV_CMD640 |
1386 | case -14: /* "cmd640_vlb" */ | 1386 | case -14: /* "cmd640_vlb" */ |
1387 | cmd640_vlb = 1; | 1387 | cmd640_vlb = 1; |
1388 | goto done; | 1388 | goto obsolete_option; |
1389 | #endif | 1389 | #endif |
1390 | #ifdef CONFIG_BLK_DEV_HT6560B | 1390 | #ifdef CONFIG_BLK_DEV_HT6560B |
1391 | case -13: /* "ht6560b" */ | 1391 | case -13: /* "ht6560b" */ |
1392 | probe_ht6560b = 1; | 1392 | probe_ht6560b = 1; |
1393 | goto done; | 1393 | goto obsolete_option; |
1394 | #endif | 1394 | #endif |
1395 | #ifdef CONFIG_BLK_DEV_QD65XX | 1395 | #ifdef CONFIG_BLK_DEV_QD65XX |
1396 | case -12: /* "qd65xx" */ | 1396 | case -12: /* "qd65xx" */ |
1397 | probe_qd65xx = 1; | 1397 | probe_qd65xx = 1; |
1398 | goto done; | 1398 | goto obsolete_option; |
1399 | #endif | 1399 | #endif |
1400 | #ifdef CONFIG_BLK_DEV_4DRIVES | 1400 | #ifdef CONFIG_BLK_DEV_4DRIVES |
1401 | case -11: /* "four" drives on one set of ports */ | 1401 | case -11: /* "four" drives on one set of ports */ |
diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c index 9e2b1964d71a..f53f72daae34 100644 --- a/drivers/ieee1394/sbp2.c +++ b/drivers/ieee1394/sbp2.c | |||
@@ -376,6 +376,11 @@ static const struct { | |||
376 | .model_id = SBP2_ROM_VALUE_WILDCARD, | 376 | .model_id = SBP2_ROM_VALUE_WILDCARD, |
377 | .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, | 377 | .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, |
378 | }, | 378 | }, |
379 | /* Datafab MD2-FW2 with Symbios/LSILogic SYM13FW500 bridge */ { | ||
380 | .firmware_revision = 0x002600, | ||
381 | .model_id = SBP2_ROM_VALUE_WILDCARD, | ||
382 | .workarounds = SBP2_WORKAROUND_128K_MAX_TRANS, | ||
383 | }, | ||
379 | /* iPod 4th generation */ { | 384 | /* iPod 4th generation */ { |
380 | .firmware_revision = 0x0a2700, | 385 | .firmware_revision = 0x0a2700, |
381 | .model_id = 0x000021, | 386 | .model_id = 0x000021, |
diff --git a/drivers/input/misc/cobalt_btns.c b/drivers/input/misc/cobalt_btns.c index 4833b1a82623..5511ef006a66 100644 --- a/drivers/input/misc/cobalt_btns.c +++ b/drivers/input/misc/cobalt_btns.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * Cobalt button interface driver. | 2 | * Cobalt button interface driver. |
3 | * | 3 | * |
4 | * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> | 4 | * Copyright (C) 2007-2008 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> |
5 | * | 5 | * |
6 | * This program is free software; you can redistribute it and/or modify | 6 | * This program is free software; you can redistribute it and/or modify |
7 | * it under the terms of the GNU General Public License as published by | 7 | * it under the terms of the GNU General Public License as published by |
@@ -15,7 +15,7 @@ | |||
15 | * | 15 | * |
16 | * You should have received a copy of the GNU General Public License | 16 | * You should have received a copy of the GNU General Public License |
17 | * along with this program; if not, write to the Free Software | 17 | * along with this program; if not, write to the Free Software |
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
19 | */ | 19 | */ |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | #include <linux/input-polldev.h> | 21 | #include <linux/input-polldev.h> |
@@ -55,7 +55,7 @@ static void handle_buttons(struct input_polled_dev *dev) | |||
55 | status = ~readl(bdev->reg) >> 24; | 55 | status = ~readl(bdev->reg) >> 24; |
56 | 56 | ||
57 | for (i = 0; i < ARRAY_SIZE(bdev->keymap); i++) { | 57 | for (i = 0; i < ARRAY_SIZE(bdev->keymap); i++) { |
58 | if (status & (1UL << i)) { | 58 | if (status & (1U << i)) { |
59 | if (++bdev->count[i] == BUTTONS_COUNT_THRESHOLD) { | 59 | if (++bdev->count[i] == BUTTONS_COUNT_THRESHOLD) { |
60 | input_event(input, EV_MSC, MSC_SCAN, i); | 60 | input_event(input, EV_MSC, MSC_SCAN, i); |
61 | input_report_key(input, bdev->keymap[i], 1); | 61 | input_report_key(input, bdev->keymap[i], 1); |
@@ -97,16 +97,16 @@ static int __devinit cobalt_buttons_probe(struct platform_device *pdev) | |||
97 | input->name = "Cobalt buttons"; | 97 | input->name = "Cobalt buttons"; |
98 | input->phys = "cobalt/input0"; | 98 | input->phys = "cobalt/input0"; |
99 | input->id.bustype = BUS_HOST; | 99 | input->id.bustype = BUS_HOST; |
100 | input->cdev.dev = &pdev->dev; | 100 | input->dev.parent = &pdev->dev; |
101 | 101 | ||
102 | input->keycode = pdev->keymap; | 102 | input->keycode = bdev->keymap; |
103 | input->keycodemax = ARRAY_SIZE(pdev->keymap); | 103 | input->keycodemax = ARRAY_SIZE(bdev->keymap); |
104 | input->keycodesize = sizeof(unsigned short); | 104 | input->keycodesize = sizeof(unsigned short); |
105 | 105 | ||
106 | input_set_capability(input, EV_MSC, MSC_SCAN); | 106 | input_set_capability(input, EV_MSC, MSC_SCAN); |
107 | __set_bit(EV_KEY, input->evbit); | 107 | __set_bit(EV_KEY, input->evbit); |
108 | for (i = 0; i < ARRAY_SIZE(buttons_map); i++) | 108 | for (i = 0; i < ARRAY_SIZE(cobalt_map); i++) |
109 | __set_bit(input->keycode[i], input->keybit); | 109 | __set_bit(bdev->keymap[i], input->keybit); |
110 | __clear_bit(KEY_RESERVED, input->keybit); | 110 | __clear_bit(KEY_RESERVED, input->keybit); |
111 | 111 | ||
112 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 112 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c index b346a3b418ea..385e32bcf6a6 100644 --- a/drivers/input/mouse/alps.c +++ b/drivers/input/mouse/alps.c | |||
@@ -116,8 +116,8 @@ static void alps_process_packet(struct psmouse *psmouse) | |||
116 | } | 116 | } |
117 | 117 | ||
118 | if (priv->i->flags & ALPS_FW_BK_1) { | 118 | if (priv->i->flags & ALPS_FW_BK_1) { |
119 | back = packet[2] & 4; | 119 | back = packet[0] & 0x10; |
120 | forward = packet[0] & 0x10; | 120 | forward = packet[2] & 4; |
121 | } | 121 | } |
122 | 122 | ||
123 | if (priv->i->flags & ALPS_FW_BK_2) { | 123 | if (priv->i->flags & ALPS_FW_BK_2) { |
@@ -483,6 +483,7 @@ int alps_init(struct psmouse *psmouse) | |||
483 | dev2->id.vendor = 0x0002; | 483 | dev2->id.vendor = 0x0002; |
484 | dev2->id.product = PSMOUSE_ALPS; | 484 | dev2->id.product = PSMOUSE_ALPS; |
485 | dev2->id.version = 0x0000; | 485 | dev2->id.version = 0x0000; |
486 | dev2->dev.parent = &psmouse->ps2dev.serio->dev; | ||
486 | 487 | ||
487 | dev2->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL); | 488 | dev2->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REL); |
488 | dev2->relbit[BIT_WORD(REL_X)] |= BIT_MASK(REL_X) | BIT_MASK(REL_Y); | 489 | dev2->relbit[BIT_WORD(REL_X)] |= BIT_MASK(REL_X) | BIT_MASK(REL_Y); |
diff --git a/drivers/input/serio/i8042-snirm.h b/drivers/input/serio/i8042-snirm.h new file mode 100644 index 000000000000..409a9341143d --- /dev/null +++ b/drivers/input/serio/i8042-snirm.h | |||
@@ -0,0 +1,75 @@ | |||
1 | #ifndef _I8042_SNIRM_H | ||
2 | #define _I8042_SNIRM_H | ||
3 | |||
4 | #include <asm/sni.h> | ||
5 | |||
6 | /* | ||
7 | * This program is free software; you can redistribute it and/or modify it | ||
8 | * under the terms of the GNU General Public License version 2 as published by | ||
9 | * the Free Software Foundation. | ||
10 | */ | ||
11 | |||
12 | /* | ||
13 | * Names. | ||
14 | */ | ||
15 | |||
16 | #define I8042_KBD_PHYS_DESC "onboard/serio0" | ||
17 | #define I8042_AUX_PHYS_DESC "onboard/serio1" | ||
18 | #define I8042_MUX_PHYS_DESC "onboard/serio%d" | ||
19 | |||
20 | /* | ||
21 | * IRQs. | ||
22 | */ | ||
23 | static int i8042_kbd_irq; | ||
24 | static int i8042_aux_irq; | ||
25 | #define I8042_KBD_IRQ i8042_kbd_irq | ||
26 | #define I8042_AUX_IRQ i8042_aux_irq | ||
27 | |||
28 | static void __iomem *kbd_iobase; | ||
29 | |||
30 | #define I8042_COMMAND_REG (kbd_iobase + 0x64UL) | ||
31 | #define I8042_DATA_REG (kbd_iobase + 0x60UL) | ||
32 | |||
33 | static inline int i8042_read_data(void) | ||
34 | { | ||
35 | return readb(kbd_iobase + 0x60UL); | ||
36 | } | ||
37 | |||
38 | static inline int i8042_read_status(void) | ||
39 | { | ||
40 | return readb(kbd_iobase + 0x64UL); | ||
41 | } | ||
42 | |||
43 | static inline void i8042_write_data(int val) | ||
44 | { | ||
45 | writeb(val, kbd_iobase + 0x60UL); | ||
46 | } | ||
47 | |||
48 | static inline void i8042_write_command(int val) | ||
49 | { | ||
50 | writeb(val, kbd_iobase + 0x64UL); | ||
51 | } | ||
52 | static inline int i8042_platform_init(void) | ||
53 | { | ||
54 | /* RM200 is strange ... */ | ||
55 | if (sni_brd_type == SNI_BRD_RM200) { | ||
56 | kbd_iobase = ioremap(0x16000000, 4); | ||
57 | i8042_kbd_irq = 33; | ||
58 | i8042_aux_irq = 44; | ||
59 | } else { | ||
60 | kbd_iobase = ioremap(0x14000000, 4); | ||
61 | i8042_kbd_irq = 1; | ||
62 | i8042_aux_irq = 12; | ||
63 | } | ||
64 | if (!kbd_iobase) | ||
65 | return -ENOMEM; | ||
66 | |||
67 | return 0; | ||
68 | } | ||
69 | |||
70 | static inline void i8042_platform_exit(void) | ||
71 | { | ||
72 | |||
73 | } | ||
74 | |||
75 | #endif /* _I8042_SNIRM_H */ | ||
diff --git a/drivers/input/serio/i8042-x86ia64io.h b/drivers/input/serio/i8042-x86ia64io.h index 662e84482c26..60931aceb828 100644 --- a/drivers/input/serio/i8042-x86ia64io.h +++ b/drivers/input/serio/i8042-x86ia64io.h | |||
@@ -277,6 +277,13 @@ static struct dmi_system_id __initdata i8042_dmi_nomux_table[] = { | |||
277 | DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"), | 277 | DMI_MATCH(DMI_PRODUCT_NAME, "M636/A737 platform"), |
278 | }, | 278 | }, |
279 | }, | 279 | }, |
280 | { | ||
281 | .ident = "Lenovo 3000 n100", | ||
282 | .matches = { | ||
283 | DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), | ||
284 | DMI_MATCH(DMI_PRODUCT_VERSION, "3000 N100"), | ||
285 | }, | ||
286 | }, | ||
280 | { } | 287 | { } |
281 | }; | 288 | }; |
282 | 289 | ||
diff --git a/drivers/input/serio/i8042.c b/drivers/input/serio/i8042.c index 2763394869d2..65a74cfc187b 100644 --- a/drivers/input/serio/i8042.c +++ b/drivers/input/serio/i8042.c | |||
@@ -1151,7 +1151,6 @@ static int __devinit i8042_setup_kbd(void) | |||
1151 | static int __devinit i8042_probe(struct platform_device *dev) | 1151 | static int __devinit i8042_probe(struct platform_device *dev) |
1152 | { | 1152 | { |
1153 | int error; | 1153 | int error; |
1154 | char param; | ||
1155 | 1154 | ||
1156 | error = i8042_controller_selftest(); | 1155 | error = i8042_controller_selftest(); |
1157 | if (error) | 1156 | if (error) |
@@ -1174,7 +1173,7 @@ static int __devinit i8042_probe(struct platform_device *dev) | |||
1174 | } | 1173 | } |
1175 | #ifdef CONFIG_X86 | 1174 | #ifdef CONFIG_X86 |
1176 | if (i8042_dritek) { | 1175 | if (i8042_dritek) { |
1177 | param = 0x90; | 1176 | char param = 0x90; |
1178 | error = i8042_command(¶m, 0x1059); | 1177 | error = i8042_command(¶m, 0x1059); |
1179 | if (error) | 1178 | if (error) |
1180 | goto out_fail; | 1179 | goto out_fail; |
diff --git a/drivers/input/serio/i8042.h b/drivers/input/serio/i8042.h index c972e5d03a3f..cbc1beb66574 100644 --- a/drivers/input/serio/i8042.h +++ b/drivers/input/serio/i8042.h | |||
@@ -18,6 +18,8 @@ | |||
18 | #include "i8042-jazzio.h" | 18 | #include "i8042-jazzio.h" |
19 | #elif defined(CONFIG_SGI_HAS_I8042) | 19 | #elif defined(CONFIG_SGI_HAS_I8042) |
20 | #include "i8042-ip22io.h" | 20 | #include "i8042-ip22io.h" |
21 | #elif defined(CONFIG_SNI_RM) | ||
22 | #include "i8042-snirm.h" | ||
21 | #elif defined(CONFIG_PPC) | 23 | #elif defined(CONFIG_PPC) |
22 | #include "i8042-ppcio.h" | 24 | #include "i8042-ppcio.h" |
23 | #elif defined(CONFIG_SPARC) | 25 | #elif defined(CONFIG_SPARC) |
diff --git a/drivers/input/tablet/wacom.h b/drivers/input/tablet/wacom.h index 6542edb6f76e..acf9830698cb 100644 --- a/drivers/input/tablet/wacom.h +++ b/drivers/input/tablet/wacom.h | |||
@@ -11,7 +11,7 @@ | |||
11 | * Copyright (c) 2000 Daniel Egger <egger@suse.de> | 11 | * Copyright (c) 2000 Daniel Egger <egger@suse.de> |
12 | * Copyright (c) 2001 Frederic Lepied <flepied@mandrakesoft.com> | 12 | * Copyright (c) 2001 Frederic Lepied <flepied@mandrakesoft.com> |
13 | * Copyright (c) 2004 Panagiotis Issaris <panagiotis.issaris@mech.kuleuven.ac.be> | 13 | * Copyright (c) 2004 Panagiotis Issaris <panagiotis.issaris@mech.kuleuven.ac.be> |
14 | * Copyright (c) 2002-2007 Ping Cheng <pingc@wacom.com> | 14 | * Copyright (c) 2002-2008 Ping Cheng <pingc@wacom.com> |
15 | * | 15 | * |
16 | * ChangeLog: | 16 | * ChangeLog: |
17 | * v0.1 (vp) - Initial release | 17 | * v0.1 (vp) - Initial release |
@@ -65,6 +65,7 @@ | |||
65 | * - and wacom_wac.c deals with Wacom specific code | 65 | * - and wacom_wac.c deals with Wacom specific code |
66 | * - Support Intuos3 4x6 | 66 | * - Support Intuos3 4x6 |
67 | * v1.47 (pc) - Added support for Bamboo | 67 | * v1.47 (pc) - Added support for Bamboo |
68 | * v1.48 (pc) - Added support for Bamboo1, BambooFun, and Cintiq 12WX | ||
68 | */ | 69 | */ |
69 | 70 | ||
70 | /* | 71 | /* |
@@ -85,7 +86,7 @@ | |||
85 | /* | 86 | /* |
86 | * Version Information | 87 | * Version Information |
87 | */ | 88 | */ |
88 | #define DRIVER_VERSION "v1.47" | 89 | #define DRIVER_VERSION "v1.48" |
89 | #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" | 90 | #define DRIVER_AUTHOR "Vojtech Pavlik <vojtech@ucw.cz>" |
90 | #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" | 91 | #define DRIVER_DESC "USB Wacom Graphire and Wacom Intuos tablet driver" |
91 | #define DRIVER_LICENSE "GPL" | 92 | #define DRIVER_LICENSE "GPL" |
@@ -125,6 +126,7 @@ extern void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac | |||
125 | extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); | 126 | extern void input_dev_pl(struct input_dev *input_dev, struct wacom_wac *wacom_wac); |
126 | extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); | 127 | extern void input_dev_pt(struct input_dev *input_dev, struct wacom_wac *wacom_wac); |
127 | extern void input_dev_mo(struct input_dev *input_dev, struct wacom_wac *wacom_wac); | 128 | extern void input_dev_mo(struct input_dev *input_dev, struct wacom_wac *wacom_wac); |
129 | extern void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac); | ||
128 | extern __u16 wacom_le16_to_cpu(unsigned char *data); | 130 | extern __u16 wacom_le16_to_cpu(unsigned char *data); |
129 | extern __u16 wacom_be16_to_cpu(unsigned char *data); | 131 | extern __u16 wacom_be16_to_cpu(unsigned char *data); |
130 | extern struct wacom_features * get_wacom_feature(const struct usb_device_id *id); | 132 | extern struct wacom_features * get_wacom_feature(const struct usb_device_id *id); |
diff --git a/drivers/input/tablet/wacom_sys.c b/drivers/input/tablet/wacom_sys.c index d64b1ea136b3..41caaef8e2d7 100644 --- a/drivers/input/tablet/wacom_sys.c +++ b/drivers/input/tablet/wacom_sys.c | |||
@@ -171,6 +171,7 @@ void input_dev_i3s(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | |||
171 | input_dev->keybit[BIT_WORD(BTN_LEFT)] |= BIT_MASK(BTN_0) | | 171 | input_dev->keybit[BIT_WORD(BTN_LEFT)] |= BIT_MASK(BTN_0) | |
172 | BIT_MASK(BTN_1) | BIT_MASK(BTN_2) | BIT_MASK(BTN_3); | 172 | BIT_MASK(BTN_1) | BIT_MASK(BTN_2) | BIT_MASK(BTN_3); |
173 | input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); | 173 | input_set_abs_params(input_dev, ABS_RX, 0, 4096, 0, 0); |
174 | input_set_abs_params(input_dev, ABS_Z, -900, 899, 0, 0); | ||
174 | } | 175 | } |
175 | 176 | ||
176 | void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | 177 | void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) |
@@ -180,6 +181,11 @@ void input_dev_i3(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | |||
180 | input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); | 181 | input_set_abs_params(input_dev, ABS_RY, 0, 4096, 0, 0); |
181 | } | 182 | } |
182 | 183 | ||
184 | void input_dev_bee(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | ||
185 | { | ||
186 | input_dev->keybit[BIT_WORD(BTN_LEFT)] |= BIT_MASK(BTN_8) | BIT_MASK(BTN_9); | ||
187 | } | ||
188 | |||
183 | void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) | 189 | void input_dev_i(struct input_dev *input_dev, struct wacom_wac *wacom_wac) |
184 | { | 190 | { |
185 | input_dev->evbit[0] |= BIT_MASK(EV_MSC) | BIT_MASK(EV_REL); | 191 | input_dev->evbit[0] |= BIT_MASK(EV_MSC) | BIT_MASK(EV_REL); |
diff --git a/drivers/input/tablet/wacom_wac.c b/drivers/input/tablet/wacom_wac.c index fc03ba256f4c..ffe33842143f 100644 --- a/drivers/input/tablet/wacom_wac.c +++ b/drivers/input/tablet/wacom_wac.c | |||
@@ -163,7 +163,9 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo) | |||
163 | } | 163 | } |
164 | 164 | ||
165 | id = STYLUS_DEVICE_ID; | 165 | id = STYLUS_DEVICE_ID; |
166 | if (data[1] & 0x80) { /* in prox */ | 166 | if ((data[1] & 0x80) && ((data[1] & 0x07) || data[2] || data[3] || data[4] |
167 | || data[5] || data[6] || (data[7] & 0x07))) { | ||
168 | /* in prox and not a pad data */ | ||
167 | 169 | ||
168 | switch ((data[1] >> 5) & 3) { | 170 | switch ((data[1] >> 5) & 3) { |
169 | 171 | ||
@@ -233,7 +235,6 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo) | |||
233 | if (data[7] & 0xf8) { | 235 | if (data[7] & 0xf8) { |
234 | wacom_input_sync(wcombo); /* sync last event */ | 236 | wacom_input_sync(wcombo); /* sync last event */ |
235 | wacom->id[1] = 1; | 237 | wacom->id[1] = 1; |
236 | wacom->serial[1] = (data[7] & 0xf8); | ||
237 | wacom_report_key(wcombo, BTN_0, (data[7] & 0x40)); | 238 | wacom_report_key(wcombo, BTN_0, (data[7] & 0x40)); |
238 | wacom_report_key(wcombo, BTN_4, (data[7] & 0x80)); | 239 | wacom_report_key(wcombo, BTN_4, (data[7] & 0x80)); |
239 | rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); | 240 | rw = ((data[7] & 0x18) >> 3) - ((data[7] & 0x20) >> 3); |
@@ -252,10 +253,9 @@ static int wacom_graphire_irq(struct wacom_wac *wacom, void *wcombo) | |||
252 | } | 253 | } |
253 | break; | 254 | break; |
254 | case WACOM_MO: | 255 | case WACOM_MO: |
255 | if ((data[7] & 0xf8) || (data[8] & 0x80)) { | 256 | if ((data[7] & 0xf8) || (data[8] & 0xff)) { |
256 | wacom_input_sync(wcombo); /* sync last event */ | 257 | wacom_input_sync(wcombo); /* sync last event */ |
257 | wacom->id[1] = 1; | 258 | wacom->id[1] = 1; |
258 | wacom->serial[1] = (data[7] & 0xf8); | ||
259 | wacom_report_key(wcombo, BTN_0, (data[7] & 0x08)); | 259 | wacom_report_key(wcombo, BTN_0, (data[7] & 0x08)); |
260 | wacom_report_key(wcombo, BTN_1, (data[7] & 0x20)); | 260 | wacom_report_key(wcombo, BTN_1, (data[7] & 0x20)); |
261 | wacom_report_key(wcombo, BTN_4, (data[7] & 0x10)); | 261 | wacom_report_key(wcombo, BTN_4, (data[7] & 0x10)); |
@@ -434,10 +434,12 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) | |||
434 | wacom_report_key(wcombo, BTN_5, (data[6] & 0x02)); | 434 | wacom_report_key(wcombo, BTN_5, (data[6] & 0x02)); |
435 | wacom_report_key(wcombo, BTN_6, (data[6] & 0x04)); | 435 | wacom_report_key(wcombo, BTN_6, (data[6] & 0x04)); |
436 | wacom_report_key(wcombo, BTN_7, (data[6] & 0x08)); | 436 | wacom_report_key(wcombo, BTN_7, (data[6] & 0x08)); |
437 | wacom_report_key(wcombo, BTN_8, (data[5] & 0x10)); | ||
438 | wacom_report_key(wcombo, BTN_9, (data[6] & 0x10)); | ||
437 | wacom_report_abs(wcombo, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); | 439 | wacom_report_abs(wcombo, ABS_RX, ((data[1] & 0x1f) << 8) | data[2]); |
438 | wacom_report_abs(wcombo, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); | 440 | wacom_report_abs(wcombo, ABS_RY, ((data[3] & 0x1f) << 8) | data[4]); |
439 | 441 | ||
440 | if((data[5] & 0x0f) | (data[6] & 0x0f) | (data[1] & 0x1f) | | 442 | if ((data[5] & 0x1f) | (data[6] & 0x1f) | (data[1] & 0x1f) | |
441 | data[2] | (data[3] & 0x1f) | data[4]) | 443 | data[2] | (data[3] & 0x1f) | data[4]) |
442 | wacom_report_key(wcombo, wacom->tool[1], 1); | 444 | wacom_report_key(wcombo, wacom->tool[1], 1); |
443 | else | 445 | else |
@@ -481,13 +483,11 @@ static int wacom_intuos_irq(struct wacom_wac *wacom, void *wcombo) | |||
481 | if (data[1] & 0x02) { | 483 | if (data[1] & 0x02) { |
482 | /* Rotation packet */ | 484 | /* Rotation packet */ |
483 | if (wacom->features->type >= INTUOS3S) { | 485 | if (wacom->features->type >= INTUOS3S) { |
484 | /* I3 marker pen rotation reported as wheel | 486 | /* I3 marker pen rotation */ |
485 | * due to valuator limitation | ||
486 | */ | ||
487 | t = (data[6] << 3) | ((data[7] >> 5) & 7); | 487 | t = (data[6] << 3) | ((data[7] >> 5) & 7); |
488 | t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : | 488 | t = (data[7] & 0x20) ? ((t > 900) ? ((t-1) / 2 - 1350) : |
489 | ((t-1) / 2 + 450)) : (450 - t / 2) ; | 489 | ((t-1) / 2 + 450)) : (450 - t / 2) ; |
490 | wacom_report_abs(wcombo, ABS_WHEEL, t); | 490 | wacom_report_abs(wcombo, ABS_Z, t); |
491 | } else { | 491 | } else { |
492 | /* 4D mouse rotation packet */ | 492 | /* 4D mouse rotation packet */ |
493 | t = (data[6] << 3) | ((data[7] >> 5) & 7); | 493 | t = (data[6] << 3) | ((data[7] >> 5) & 7); |
@@ -558,6 +558,7 @@ int wacom_wac_irq(struct wacom_wac *wacom_wac, void *wcombo) | |||
558 | case INTUOS3: | 558 | case INTUOS3: |
559 | case INTUOS3L: | 559 | case INTUOS3L: |
560 | case CINTIQ: | 560 | case CINTIQ: |
561 | case WACOM_BEE: | ||
561 | return (wacom_intuos_irq(wacom_wac, wcombo)); | 562 | return (wacom_intuos_irq(wacom_wac, wcombo)); |
562 | break; | 563 | break; |
563 | default: | 564 | default: |
@@ -577,6 +578,8 @@ void wacom_init_input_dev(struct input_dev *input_dev, struct wacom_wac *wacom_w | |||
577 | case GRAPHIRE: | 578 | case GRAPHIRE: |
578 | input_dev_g(input_dev, wacom_wac); | 579 | input_dev_g(input_dev, wacom_wac); |
579 | break; | 580 | break; |
581 | case WACOM_BEE: | ||
582 | input_dev_bee(input_dev, wacom_wac); | ||
580 | case INTUOS3: | 583 | case INTUOS3: |
581 | case INTUOS3L: | 584 | case INTUOS3L: |
582 | case CINTIQ: | 585 | case CINTIQ: |
@@ -607,12 +610,15 @@ static struct wacom_features wacom_features[] = { | |||
607 | { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE }, | 610 | { "Wacom Graphire3 6x8", 8, 16704, 12064, 511, 63, GRAPHIRE }, |
608 | { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 }, | 611 | { "Wacom Graphire4 4x5", 8, 10208, 7424, 511, 63, WACOM_G4 }, |
609 | { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 }, | 612 | { "Wacom Graphire4 6x8", 8, 16704, 12064, 511, 63, WACOM_G4 }, |
613 | { "Wacom BambooFun 4x5", 9, 14760, 9225, 511, 63, WACOM_MO }, | ||
614 | { "Wacom BambooFun 6x8", 9, 21648, 13530, 511, 63, WACOM_MO }, | ||
610 | { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE }, | 615 | { "Wacom Volito", 8, 5104, 3712, 511, 63, GRAPHIRE }, |
611 | { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE }, | 616 | { "Wacom PenStation2", 8, 3250, 2320, 255, 63, GRAPHIRE }, |
612 | { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE }, | 617 | { "Wacom Volito2 4x5", 8, 5104, 3712, 511, 63, GRAPHIRE }, |
613 | { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE }, | 618 | { "Wacom Volito2 2x3", 8, 3248, 2320, 511, 63, GRAPHIRE }, |
614 | { "Wacom PenPartner2", 8, 3250, 2320, 255, 63, GRAPHIRE }, | 619 | { "Wacom PenPartner2", 8, 3250, 2320, 511, 63, GRAPHIRE }, |
615 | { "Wacom Bamboo", 9, 14760, 9225, 511, 63, WACOM_MO }, | 620 | { "Wacom Bamboo", 9, 14760, 9225, 511, 63, WACOM_MO }, |
621 | { "Wacom Bamboo1", 8, 5104, 3712, 511, 63, GRAPHIRE }, | ||
616 | { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS }, | 622 | { "Wacom Intuos 4x5", 10, 12700, 10600, 1023, 31, INTUOS }, |
617 | { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, | 623 | { "Wacom Intuos 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, |
618 | { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS }, | 624 | { "Wacom Intuos 9x12", 10, 30480, 24060, 1023, 31, INTUOS }, |
@@ -643,6 +649,7 @@ static struct wacom_features wacom_features[] = { | |||
643 | { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, | 649 | { "Wacom Intuos3 6x11", 10, 54204, 31750, 1023, 63, INTUOS3 }, |
644 | { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, | 650 | { "Wacom Intuos3 4x6", 10, 31496, 19685, 1023, 63, INTUOS3S }, |
645 | { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, | 651 | { "Wacom Cintiq 21UX", 10, 87200, 65600, 1023, 63, CINTIQ }, |
652 | { "Wacom Cintiq 12WX", 10, 53020, 33440, 1023, 63, WACOM_BEE }, | ||
646 | { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, | 653 | { "Wacom Intuos2 6x8", 10, 20320, 16240, 1023, 31, INTUOS }, |
647 | { } | 654 | { } |
648 | }; | 655 | }; |
@@ -656,12 +663,15 @@ static struct usb_device_id wacom_ids[] = { | |||
656 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, | 663 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x14) }, |
657 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, | 664 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x15) }, |
658 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, | 665 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x16) }, |
666 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x17) }, | ||
667 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x18) }, | ||
659 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, | 668 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x60) }, |
660 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, | 669 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x61) }, |
661 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, | 670 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x62) }, |
662 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, | 671 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x63) }, |
663 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, | 672 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x64) }, |
664 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, | 673 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x65) }, |
674 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x69) }, | ||
665 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, | 675 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x20) }, |
666 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, | 676 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x21) }, |
667 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, | 677 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x22) }, |
@@ -692,6 +702,7 @@ static struct usb_device_id wacom_ids[] = { | |||
692 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, | 702 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB5) }, |
693 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) }, | 703 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xB7) }, |
694 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, | 704 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x3F) }, |
705 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0xC6) }, | ||
695 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, | 706 | { USB_DEVICE(USB_VENDOR_ID_WACOM, 0x47) }, |
696 | { } | 707 | { } |
697 | }; | 708 | }; |
diff --git a/drivers/input/tablet/wacom_wac.h b/drivers/input/tablet/wacom_wac.h index a302e229bb8a..3342bc05847d 100644 --- a/drivers/input/tablet/wacom_wac.h +++ b/drivers/input/tablet/wacom_wac.h | |||
@@ -25,6 +25,7 @@ enum { | |||
25 | INTUOS3, | 25 | INTUOS3, |
26 | INTUOS3L, | 26 | INTUOS3L, |
27 | CINTIQ, | 27 | CINTIQ, |
28 | WACOM_BEE, | ||
28 | WACOM_MO, | 29 | WACOM_MO, |
29 | MAX_TYPE | 30 | MAX_TYPE |
30 | }; | 31 | }; |
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c index 58934a40f5ce..57a1c28bf122 100644 --- a/drivers/input/touchscreen/ads7846.c +++ b/drivers/input/touchscreen/ads7846.c | |||
@@ -213,7 +213,7 @@ static int ads7846_read12_ser(struct device *dev, unsigned command) | |||
213 | struct ads7846 *ts = dev_get_drvdata(dev); | 213 | struct ads7846 *ts = dev_get_drvdata(dev); |
214 | struct ser_req *req = kzalloc(sizeof *req, GFP_KERNEL); | 214 | struct ser_req *req = kzalloc(sizeof *req, GFP_KERNEL); |
215 | int status; | 215 | int status; |
216 | int sample; | 216 | int uninitialized_var(sample); |
217 | int use_internal; | 217 | int use_internal; |
218 | 218 | ||
219 | if (!req) | 219 | if (!req) |
diff --git a/drivers/md/md.c b/drivers/md/md.c index ccbbf63727cc..61ccbd2683fa 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -1864,17 +1864,6 @@ static struct rdev_sysfs_entry rdev_state = | |||
1864 | __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store); | 1864 | __ATTR(state, S_IRUGO|S_IWUSR, state_show, state_store); |
1865 | 1865 | ||
1866 | static ssize_t | 1866 | static ssize_t |
1867 | super_show(mdk_rdev_t *rdev, char *page) | ||
1868 | { | ||
1869 | if (rdev->sb_loaded && rdev->sb_size) { | ||
1870 | memcpy(page, page_address(rdev->sb_page), rdev->sb_size); | ||
1871 | return rdev->sb_size; | ||
1872 | } else | ||
1873 | return 0; | ||
1874 | } | ||
1875 | static struct rdev_sysfs_entry rdev_super = __ATTR_RO(super); | ||
1876 | |||
1877 | static ssize_t | ||
1878 | errors_show(mdk_rdev_t *rdev, char *page) | 1867 | errors_show(mdk_rdev_t *rdev, char *page) |
1879 | { | 1868 | { |
1880 | return sprintf(page, "%d\n", atomic_read(&rdev->corrected_errors)); | 1869 | return sprintf(page, "%d\n", atomic_read(&rdev->corrected_errors)); |
@@ -2060,7 +2049,6 @@ __ATTR(size, S_IRUGO|S_IWUSR, rdev_size_show, rdev_size_store); | |||
2060 | 2049 | ||
2061 | static struct attribute *rdev_default_attrs[] = { | 2050 | static struct attribute *rdev_default_attrs[] = { |
2062 | &rdev_state.attr, | 2051 | &rdev_state.attr, |
2063 | &rdev_super.attr, | ||
2064 | &rdev_errors.attr, | 2052 | &rdev_errors.attr, |
2065 | &rdev_slot.attr, | 2053 | &rdev_slot.attr, |
2066 | &rdev_offset.attr, | 2054 | &rdev_offset.attr, |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 2d6f1a51359c..c574cf5efb5c 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -1143,7 +1143,7 @@ static void raid5_end_read_request(struct bio * bi, int error) | |||
1143 | rdev = conf->disks[i].rdev; | 1143 | rdev = conf->disks[i].rdev; |
1144 | printk(KERN_INFO "raid5:%s: read error corrected (%lu sectors at %llu on %s)\n", | 1144 | printk(KERN_INFO "raid5:%s: read error corrected (%lu sectors at %llu on %s)\n", |
1145 | mdname(conf->mddev), STRIPE_SECTORS, | 1145 | mdname(conf->mddev), STRIPE_SECTORS, |
1146 | (unsigned long long)sh->sector + rdev->data_offset, | 1146 | (unsigned long long)(sh->sector + rdev->data_offset), |
1147 | bdevname(rdev->bdev, b)); | 1147 | bdevname(rdev->bdev, b)); |
1148 | clear_bit(R5_ReadError, &sh->dev[i].flags); | 1148 | clear_bit(R5_ReadError, &sh->dev[i].flags); |
1149 | clear_bit(R5_ReWrite, &sh->dev[i].flags); | 1149 | clear_bit(R5_ReWrite, &sh->dev[i].flags); |
@@ -1160,13 +1160,13 @@ static void raid5_end_read_request(struct bio * bi, int error) | |||
1160 | if (conf->mddev->degraded) | 1160 | if (conf->mddev->degraded) |
1161 | printk(KERN_WARNING "raid5:%s: read error not correctable (sector %llu on %s).\n", | 1161 | printk(KERN_WARNING "raid5:%s: read error not correctable (sector %llu on %s).\n", |
1162 | mdname(conf->mddev), | 1162 | mdname(conf->mddev), |
1163 | (unsigned long long)sh->sector + rdev->data_offset, | 1163 | (unsigned long long)(sh->sector + rdev->data_offset), |
1164 | bdn); | 1164 | bdn); |
1165 | else if (test_bit(R5_ReWrite, &sh->dev[i].flags)) | 1165 | else if (test_bit(R5_ReWrite, &sh->dev[i].flags)) |
1166 | /* Oh, no!!! */ | 1166 | /* Oh, no!!! */ |
1167 | printk(KERN_WARNING "raid5:%s: read error NOT corrected!! (sector %llu on %s).\n", | 1167 | printk(KERN_WARNING "raid5:%s: read error NOT corrected!! (sector %llu on %s).\n", |
1168 | mdname(conf->mddev), | 1168 | mdname(conf->mddev), |
1169 | (unsigned long long)sh->sector + rdev->data_offset, | 1169 | (unsigned long long)(sh->sector + rdev->data_offset), |
1170 | bdn); | 1170 | bdn); |
1171 | else if (atomic_read(&rdev->read_errors) | 1171 | else if (atomic_read(&rdev->read_errors) |
1172 | > conf->max_nr_stripes) | 1172 | > conf->max_nr_stripes) |
diff --git a/drivers/media/dvb/dvb-usb/opera1.c b/drivers/media/dvb/dvb-usb/opera1.c index 21935bf7059e..302cc67407c3 100644 --- a/drivers/media/dvb/dvb-usb/opera1.c +++ b/drivers/media/dvb/dvb-usb/opera1.c | |||
@@ -478,9 +478,9 @@ static int opera1_xilinx_load_firmware(struct usb_device *dev, | |||
478 | err("could not restart the USB controller CPU."); | 478 | err("could not restart the USB controller CPU."); |
479 | ret = -EINVAL; | 479 | ret = -EINVAL; |
480 | } | 480 | } |
481 | kfree(p); | ||
482 | } | 481 | } |
483 | } | 482 | } |
483 | kfree(p); | ||
484 | if (fw) { | 484 | if (fw) { |
485 | release_firmware(fw); | 485 | release_firmware(fw); |
486 | } | 486 | } |
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 37072a21d8c9..1832966f53f3 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig | |||
@@ -305,7 +305,7 @@ comment "MPEG video encoders" | |||
305 | 305 | ||
306 | config VIDEO_CX2341X | 306 | config VIDEO_CX2341X |
307 | tristate "Conexant CX2341x MPEG encoders" | 307 | tristate "Conexant CX2341x MPEG encoders" |
308 | depends on VIDEO_V4L2 && EXPERIMENTAL | 308 | depends on VIDEO_V4L2 && EXPERIMENTAL && VIDEO_V4L2_COMMON |
309 | ---help--- | 309 | ---help--- |
310 | Support for the Conexant CX23416 MPEG encoders | 310 | Support for the Conexant CX23416 MPEG encoders |
311 | and CX23415 MPEG encoder/decoders. | 311 | and CX23415 MPEG encoder/decoders. |
@@ -382,7 +382,7 @@ endmenu # encoder / decoder chips | |||
382 | 382 | ||
383 | config VIDEO_VIVI | 383 | config VIDEO_VIVI |
384 | tristate "Virtual Video Driver" | 384 | tristate "Virtual Video Driver" |
385 | depends on VIDEO_V4L2 && !SPARC32 && !SPARC64 | 385 | depends on VIDEO_DEV && VIDEO_V4L2 && !SPARC32 && !SPARC64 |
386 | select VIDEOBUF_VMALLOC | 386 | select VIDEOBUF_VMALLOC |
387 | default n | 387 | default n |
388 | ---help--- | 388 | ---help--- |
diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c index 5404fcc5276d..a080c149cc6c 100644 --- a/drivers/media/video/bt8xx/bttv-driver.c +++ b/drivers/media/video/bt8xx/bttv-driver.c | |||
@@ -3389,7 +3389,6 @@ static struct video_device bttv_video_template = | |||
3389 | .vidiocgmbuf = vidiocgmbuf, | 3389 | .vidiocgmbuf = vidiocgmbuf, |
3390 | #endif | 3390 | #endif |
3391 | .vidioc_g_crop = bttv_g_crop, | 3391 | .vidioc_g_crop = bttv_g_crop, |
3392 | .vidioc_g_crop = bttv_g_crop, | ||
3393 | .vidioc_s_crop = bttv_s_crop, | 3392 | .vidioc_s_crop = bttv_s_crop, |
3394 | .vidioc_g_fbuf = bttv_g_fbuf, | 3393 | .vidioc_g_fbuf = bttv_g_fbuf, |
3395 | .vidioc_s_fbuf = bttv_s_fbuf, | 3394 | .vidioc_s_fbuf = bttv_s_fbuf, |
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index e6b7f518c56e..8c9a8adf52de 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -2196,6 +2196,11 @@ struct cx88_core *cx88_core_create(struct pci_dev *pci, int nr) | |||
2196 | cx88_reset(core); | 2196 | cx88_reset(core); |
2197 | cx88_card_setup_pre_i2c(core); | 2197 | cx88_card_setup_pre_i2c(core); |
2198 | cx88_i2c_init(core, pci); | 2198 | cx88_i2c_init(core, pci); |
2199 | |||
2200 | /* load tuner module, if needed */ | ||
2201 | if (TUNER_ABSENT != core->board.tuner_type) | ||
2202 | request_module("tuner"); | ||
2203 | |||
2199 | cx88_call_i2c_clients (core, TUNER_SET_STANDBY, NULL); | 2204 | cx88_call_i2c_clients (core, TUNER_SET_STANDBY, NULL); |
2200 | cx88_card_setup(core); | 2205 | cx88_card_setup(core); |
2201 | cx88_ir_init(core, pci); | 2206 | cx88_ir_init(core, pci); |
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c index 7f1931aed207..227179620d13 100644 --- a/drivers/media/video/cx88/cx88-video.c +++ b/drivers/media/video/cx88/cx88-video.c | |||
@@ -1826,8 +1826,6 @@ static int __devinit cx8800_initdev(struct pci_dev *pci_dev, | |||
1826 | cx_set(MO_PCI_INTMSK, core->pci_irqmask); | 1826 | cx_set(MO_PCI_INTMSK, core->pci_irqmask); |
1827 | 1827 | ||
1828 | /* load and configure helper modules */ | 1828 | /* load and configure helper modules */ |
1829 | if (TUNER_ABSENT != core->board.tuner_type) | ||
1830 | request_module("tuner"); | ||
1831 | 1829 | ||
1832 | if (core->board.audio_chip == AUDIO_CHIP_WM8775) | 1830 | if (core->board.audio_chip == AUDIO_CHIP_WM8775) |
1833 | request_module("wm8775"); | 1831 | request_module("wm8775"); |
diff --git a/drivers/media/video/em28xx/em28xx-core.c b/drivers/media/video/em28xx/em28xx-core.c index 7d1537cab867..c1caaa855b99 100644 --- a/drivers/media/video/em28xx/em28xx-core.c +++ b/drivers/media/video/em28xx/em28xx-core.c | |||
@@ -267,7 +267,7 @@ static int em28xx_write_ac97(struct em28xx *dev, u8 reg, u8 *val) | |||
267 | for (i = 0; i < 10; i++) { | 267 | for (i = 0; i < 10; i++) { |
268 | if ((ret = em28xx_read_reg(dev, AC97BUSY_REG)) < 0) | 268 | if ((ret = em28xx_read_reg(dev, AC97BUSY_REG)) < 0) |
269 | return ret; | 269 | return ret; |
270 | if (!((u8) ret) & 0x01) | 270 | if (!(ret & 0x01)) |
271 | return 0; | 271 | return 0; |
272 | msleep(5); | 272 | msleep(5); |
273 | } | 273 | } |
diff --git a/drivers/media/video/ivtv/ivtv-driver.c b/drivers/media/video/ivtv/ivtv-driver.c index d42f120354e5..948ca35e7ee8 100644 --- a/drivers/media/video/ivtv/ivtv-driver.c +++ b/drivers/media/video/ivtv/ivtv-driver.c | |||
@@ -54,7 +54,6 @@ | |||
54 | #include "ivtv-vbi.h" | 54 | #include "ivtv-vbi.h" |
55 | #include "ivtv-routing.h" | 55 | #include "ivtv-routing.h" |
56 | #include "ivtv-gpio.h" | 56 | #include "ivtv-gpio.h" |
57 | #include "ivtv-yuv.h" | ||
58 | 57 | ||
59 | #include <media/tveeprom.h> | 58 | #include <media/tveeprom.h> |
60 | #include <media/saa7115.h> | 59 | #include <media/saa7115.h> |
@@ -700,6 +699,9 @@ static int __devinit ivtv_init_struct1(struct ivtv *itv) | |||
700 | itv->vbi.in.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE; | 699 | itv->vbi.in.type = V4L2_BUF_TYPE_SLICED_VBI_CAPTURE; |
701 | itv->vbi.sliced_in = &itv->vbi.in.fmt.sliced; | 700 | itv->vbi.sliced_in = &itv->vbi.in.fmt.sliced; |
702 | 701 | ||
702 | /* Init the sg table for osd/yuv output */ | ||
703 | sg_init_table(itv->udma.SGlist, IVTV_DMA_SG_OSD_ENT); | ||
704 | |||
703 | /* OSD */ | 705 | /* OSD */ |
704 | itv->osd_global_alpha_state = 1; | 706 | itv->osd_global_alpha_state = 1; |
705 | itv->osd_global_alpha = 255; | 707 | itv->osd_global_alpha = 255; |
@@ -1053,9 +1055,6 @@ static int __devinit ivtv_probe(struct pci_dev *dev, | |||
1053 | goto free_io; | 1055 | goto free_io; |
1054 | } | 1056 | } |
1055 | 1057 | ||
1056 | /* Check yuv output filter table */ | ||
1057 | if (itv->has_cx23415) ivtv_yuv_filter_check(itv); | ||
1058 | |||
1059 | ivtv_gpio_init(itv); | 1058 | ivtv_gpio_init(itv); |
1060 | 1059 | ||
1061 | /* active i2c */ | 1060 | /* active i2c */ |
diff --git a/drivers/media/video/ivtv/ivtv-firmware.c b/drivers/media/video/ivtv/ivtv-firmware.c index 425eb1063904..6dba55b7e25a 100644 --- a/drivers/media/video/ivtv/ivtv-firmware.c +++ b/drivers/media/video/ivtv/ivtv-firmware.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include "ivtv-driver.h" | 22 | #include "ivtv-driver.h" |
23 | #include "ivtv-mailbox.h" | 23 | #include "ivtv-mailbox.h" |
24 | #include "ivtv-firmware.h" | 24 | #include "ivtv-firmware.h" |
25 | #include "ivtv-yuv.h" | ||
25 | #include <linux/firmware.h> | 26 | #include <linux/firmware.h> |
26 | 27 | ||
27 | #define IVTV_MASK_SPU_ENABLE 0xFFFFFFFE | 28 | #define IVTV_MASK_SPU_ENABLE 0xFFFFFFFE |
@@ -225,11 +226,14 @@ int ivtv_firmware_init(struct ivtv *itv) | |||
225 | return 0; | 226 | return 0; |
226 | 227 | ||
227 | itv->dec_mbox.mbox = ivtv_search_mailbox(itv->dec_mem, IVTV_DECODER_SIZE); | 228 | itv->dec_mbox.mbox = ivtv_search_mailbox(itv->dec_mem, IVTV_DECODER_SIZE); |
228 | if (itv->dec_mbox.mbox == NULL) | 229 | if (itv->dec_mbox.mbox == NULL) { |
229 | IVTV_ERR("Decoder mailbox not found\n"); | 230 | IVTV_ERR("Decoder mailbox not found\n"); |
230 | else if (itv->has_cx23415 && ivtv_vapi(itv, CX2341X_DEC_PING_FW, 0)) { | 231 | } else if (itv->has_cx23415 && ivtv_vapi(itv, CX2341X_DEC_PING_FW, 0)) { |
231 | IVTV_ERR("Decoder firmware dead!\n"); | 232 | IVTV_ERR("Decoder firmware dead!\n"); |
232 | itv->dec_mbox.mbox = NULL; | 233 | itv->dec_mbox.mbox = NULL; |
234 | } else { | ||
235 | /* Firmware okay, so check yuv output filter table */ | ||
236 | ivtv_yuv_filter_check(itv); | ||
233 | } | 237 | } |
234 | return itv->dec_mbox.mbox ? 0 : -ENODEV; | 238 | return itv->dec_mbox.mbox ? 0 : -ENODEV; |
235 | } | 239 | } |
diff --git a/drivers/media/video/saa7134/saa7134-cards.c b/drivers/media/video/saa7134/saa7134-cards.c index 262830da08c8..6f5744286e8c 100644 --- a/drivers/media/video/saa7134/saa7134-cards.c +++ b/drivers/media/video/saa7134/saa7134-cards.c | |||
@@ -2484,27 +2484,28 @@ struct saa7134_board saa7134_boards[] = { | |||
2484 | .tuner_addr = ADDR_UNSET, | 2484 | .tuner_addr = ADDR_UNSET, |
2485 | .radio_addr = ADDR_UNSET, | 2485 | .radio_addr = ADDR_UNSET, |
2486 | .gpiomask = 0x080200000, | 2486 | .gpiomask = 0x080200000, |
2487 | .inputs = {{ | 2487 | .inputs = { { |
2488 | .name = name_tv, | 2488 | .name = name_tv, |
2489 | .vmux = 4, | 2489 | .vmux = 4, |
2490 | .amux = TV, | 2490 | .amux = TV, |
2491 | .tv = 1, | 2491 | .tv = 1, |
2492 | },{ | 2492 | }, { |
2493 | .name = name_comp1, | 2493 | .name = name_comp1, |
2494 | .vmux = 1, | 2494 | .vmux = 1, |
2495 | .amux = LINE2, | 2495 | .amux = LINE2, |
2496 | },{ | 2496 | }, { |
2497 | .name = name_comp2, | 2497 | .name = name_comp2, |
2498 | .vmux = 0, | 2498 | .vmux = 0, |
2499 | .amux = LINE2, | 2499 | .amux = LINE2, |
2500 | },{ | 2500 | }, { |
2501 | .name = name_svideo, | 2501 | .name = name_svideo, |
2502 | .vmux = 8, | 2502 | .vmux = 8, |
2503 | .amux = LINE2, | 2503 | .amux = LINE2, |
2504 | }}, | 2504 | } }, |
2505 | .radio = { | 2505 | .radio = { |
2506 | .name = name_radio, | 2506 | .name = name_radio, |
2507 | .amux = LINE1, | 2507 | .amux = TV, |
2508 | .gpio = 0x0200000, | ||
2508 | }, | 2509 | }, |
2509 | }, | 2510 | }, |
2510 | [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = { | 2511 | [SAA7134_BOARD_ASUSTeK_P7131_DUAL] = { |
diff --git a/drivers/media/video/saa7134/saa7134-core.c b/drivers/media/video/saa7134/saa7134-core.c index 52baa4f7f7dd..58ab163fdbd7 100644 --- a/drivers/media/video/saa7134/saa7134-core.c +++ b/drivers/media/video/saa7134/saa7134-core.c | |||
@@ -1022,12 +1022,13 @@ static int __devinit saa7134_initdev(struct pci_dev *pci_dev, | |||
1022 | saa7134_i2c_register(dev); | 1022 | saa7134_i2c_register(dev); |
1023 | 1023 | ||
1024 | /* initialize hardware #2 */ | 1024 | /* initialize hardware #2 */ |
1025 | if (TUNER_ABSENT != dev->tuner_type) | ||
1026 | request_module("tuner"); | ||
1025 | saa7134_board_init2(dev); | 1027 | saa7134_board_init2(dev); |
1028 | |||
1026 | saa7134_hwinit2(dev); | 1029 | saa7134_hwinit2(dev); |
1027 | 1030 | ||
1028 | /* load i2c helpers */ | 1031 | /* load i2c helpers */ |
1029 | if (TUNER_ABSENT != dev->tuner_type) | ||
1030 | request_module("tuner"); | ||
1031 | if (card_is_empress(dev)) { | 1032 | if (card_is_empress(dev)) { |
1032 | request_module("saa6752hs"); | 1033 | request_module("saa6752hs"); |
1033 | } | 1034 | } |
diff --git a/drivers/media/video/tvp5150.c b/drivers/media/video/tvp5150.c index 445eba4174d7..d28318cb2b8d 100644 --- a/drivers/media/video/tvp5150.c +++ b/drivers/media/video/tvp5150.c | |||
@@ -672,7 +672,7 @@ static int tvp5150_set_vbi(struct i2c_client *c, | |||
672 | if (std == V4L2_STD_ALL) { | 672 | if (std == V4L2_STD_ALL) { |
673 | tvp5150_err("VBI can't be configured without knowing number of lines\n"); | 673 | tvp5150_err("VBI can't be configured without knowing number of lines\n"); |
674 | return 0; | 674 | return 0; |
675 | } else if (std && V4L2_STD_625_50) { | 675 | } else if (std & V4L2_STD_625_50) { |
676 | /* Don't follow NTSC Line number convension */ | 676 | /* Don't follow NTSC Line number convension */ |
677 | line += 3; | 677 | line += 3; |
678 | } | 678 | } |
@@ -719,7 +719,7 @@ static int tvp5150_get_vbi(struct i2c_client *c, | |||
719 | if (std == V4L2_STD_ALL) { | 719 | if (std == V4L2_STD_ALL) { |
720 | tvp5150_err("VBI can't be configured without knowing number of lines\n"); | 720 | tvp5150_err("VBI can't be configured without knowing number of lines\n"); |
721 | return 0; | 721 | return 0; |
722 | } else if (std && V4L2_STD_625_50) { | 722 | } else if (std & V4L2_STD_625_50) { |
723 | /* Don't follow NTSC Line number convension */ | 723 | /* Don't follow NTSC Line number convension */ |
724 | line += 3; | 724 | line += 3; |
725 | } | 725 | } |
diff --git a/drivers/media/video/usbvideo/usbvideo.c b/drivers/media/video/usbvideo/usbvideo.c index fb434b5602a3..5d363be7bc73 100644 --- a/drivers/media/video/usbvideo/usbvideo.c +++ b/drivers/media/video/usbvideo/usbvideo.c | |||
@@ -1034,6 +1034,11 @@ int usbvideo_RegisterVideoDevice(struct uvd *uvd) | |||
1034 | info("%s: iface=%d. endpoint=$%02x paletteBits=$%08lx", | 1034 | info("%s: iface=%d. endpoint=$%02x paletteBits=$%08lx", |
1035 | __FUNCTION__, uvd->iface, uvd->video_endp, uvd->paletteBits); | 1035 | __FUNCTION__, uvd->iface, uvd->video_endp, uvd->paletteBits); |
1036 | } | 1036 | } |
1037 | if (uvd->dev == NULL) { | ||
1038 | err("%s: uvd->dev == NULL", __FUNCTION__); | ||
1039 | return -EINVAL; | ||
1040 | } | ||
1041 | uvd->vdev.dev=&(uvd->dev->dev); | ||
1037 | if (video_register_device(&uvd->vdev, VFL_TYPE_GRABBER, video_nr) == -1) { | 1042 | if (video_register_device(&uvd->vdev, VFL_TYPE_GRABBER, video_nr) == -1) { |
1038 | err("%s: video_register_device failed", __FUNCTION__); | 1043 | err("%s: video_register_device failed", __FUNCTION__); |
1039 | return -EPIPE; | 1044 | return -EPIPE; |
@@ -1041,10 +1046,6 @@ int usbvideo_RegisterVideoDevice(struct uvd *uvd) | |||
1041 | if (uvd->debug > 1) { | 1046 | if (uvd->debug > 1) { |
1042 | info("%s: video_register_device() successful", __FUNCTION__); | 1047 | info("%s: video_register_device() successful", __FUNCTION__); |
1043 | } | 1048 | } |
1044 | if (uvd->dev == NULL) { | ||
1045 | err("%s: uvd->dev == NULL", __FUNCTION__); | ||
1046 | return -EINVAL; | ||
1047 | } | ||
1048 | 1049 | ||
1049 | info("%s on /dev/video%d: canvas=%s videosize=%s", | 1050 | info("%s on /dev/video%d: canvas=%s videosize=%s", |
1050 | (uvd->handle != NULL) ? uvd->handle->drvName : "???", | 1051 | (uvd->handle != NULL) ? uvd->handle->drvName : "???", |
diff --git a/drivers/media/video/v4l1-compat.c b/drivers/media/video/v4l1-compat.c index dcf22a3b672a..50e1ff9f2be5 100644 --- a/drivers/media/video/v4l1-compat.c +++ b/drivers/media/video/v4l1-compat.c | |||
@@ -303,7 +303,11 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
303 | { | 303 | { |
304 | struct video_capability *cap = arg; | 304 | struct video_capability *cap = arg; |
305 | 305 | ||
306 | cap2 = kzalloc(sizeof(*cap2),GFP_KERNEL); | 306 | cap2 = kzalloc(sizeof(*cap2), GFP_KERNEL); |
307 | if (!cap2) { | ||
308 | err = -ENOMEM; | ||
309 | break; | ||
310 | } | ||
307 | memset(cap, 0, sizeof(*cap)); | 311 | memset(cap, 0, sizeof(*cap)); |
308 | memset(&fbuf2, 0, sizeof(fbuf2)); | 312 | memset(&fbuf2, 0, sizeof(fbuf2)); |
309 | 313 | ||
@@ -426,7 +430,11 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
426 | { | 430 | { |
427 | struct video_window *win = arg; | 431 | struct video_window *win = arg; |
428 | 432 | ||
429 | fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); | 433 | fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL); |
434 | if (!fmt2) { | ||
435 | err = -ENOMEM; | ||
436 | break; | ||
437 | } | ||
430 | memset(win,0,sizeof(*win)); | 438 | memset(win,0,sizeof(*win)); |
431 | 439 | ||
432 | fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY; | 440 | fmt2->type = V4L2_BUF_TYPE_VIDEO_OVERLAY; |
@@ -464,7 +472,11 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
464 | struct video_window *win = arg; | 472 | struct video_window *win = arg; |
465 | int err1,err2; | 473 | int err1,err2; |
466 | 474 | ||
467 | fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); | 475 | fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL); |
476 | if (!fmt2) { | ||
477 | err = -ENOMEM; | ||
478 | break; | ||
479 | } | ||
468 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; | 480 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; |
469 | drv(inode, file, VIDIOC_STREAMOFF, &fmt2->type); | 481 | drv(inode, file, VIDIOC_STREAMOFF, &fmt2->type); |
470 | err1 = drv(inode, file, VIDIOC_G_FMT, fmt2); | 482 | err1 = drv(inode, file, VIDIOC_G_FMT, fmt2); |
@@ -586,6 +598,12 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
586 | { | 598 | { |
587 | struct video_picture *pict = arg; | 599 | struct video_picture *pict = arg; |
588 | 600 | ||
601 | fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL); | ||
602 | if (!fmt2) { | ||
603 | err = -ENOMEM; | ||
604 | break; | ||
605 | } | ||
606 | |||
589 | pict->brightness = get_v4l_control(inode, file, | 607 | pict->brightness = get_v4l_control(inode, file, |
590 | V4L2_CID_BRIGHTNESS,drv); | 608 | V4L2_CID_BRIGHTNESS,drv); |
591 | pict->hue = get_v4l_control(inode, file, | 609 | pict->hue = get_v4l_control(inode, file, |
@@ -597,7 +615,6 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
597 | pict->whiteness = get_v4l_control(inode, file, | 615 | pict->whiteness = get_v4l_control(inode, file, |
598 | V4L2_CID_WHITENESS, drv); | 616 | V4L2_CID_WHITENESS, drv); |
599 | 617 | ||
600 | fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); | ||
601 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; | 618 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; |
602 | err = drv(inode, file, VIDIOC_G_FMT, fmt2); | 619 | err = drv(inode, file, VIDIOC_G_FMT, fmt2); |
603 | if (err < 0) { | 620 | if (err < 0) { |
@@ -617,6 +634,11 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
617 | struct video_picture *pict = arg; | 634 | struct video_picture *pict = arg; |
618 | int mem_err = 0, ovl_err = 0; | 635 | int mem_err = 0, ovl_err = 0; |
619 | 636 | ||
637 | fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL); | ||
638 | if (!fmt2) { | ||
639 | err = -ENOMEM; | ||
640 | break; | ||
641 | } | ||
620 | memset(&fbuf2, 0, sizeof(fbuf2)); | 642 | memset(&fbuf2, 0, sizeof(fbuf2)); |
621 | 643 | ||
622 | set_v4l_control(inode, file, | 644 | set_v4l_control(inode, file, |
@@ -636,7 +658,6 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
636 | * different pixel formats for memory vs overlay. | 658 | * different pixel formats for memory vs overlay. |
637 | */ | 659 | */ |
638 | 660 | ||
639 | fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); | ||
640 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; | 661 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; |
641 | err = drv(inode, file, VIDIOC_G_FMT, fmt2); | 662 | err = drv(inode, file, VIDIOC_G_FMT, fmt2); |
642 | /* If VIDIOC_G_FMT failed, then the driver likely doesn't | 663 | /* If VIDIOC_G_FMT failed, then the driver likely doesn't |
@@ -890,7 +911,11 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
890 | { | 911 | { |
891 | struct video_mmap *mm = arg; | 912 | struct video_mmap *mm = arg; |
892 | 913 | ||
893 | fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); | 914 | fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL); |
915 | if (!fmt2) { | ||
916 | err = -ENOMEM; | ||
917 | break; | ||
918 | } | ||
894 | memset(&buf2,0,sizeof(buf2)); | 919 | memset(&buf2,0,sizeof(buf2)); |
895 | 920 | ||
896 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; | 921 | fmt2->type = V4L2_BUF_TYPE_VIDEO_CAPTURE; |
@@ -986,7 +1011,11 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
986 | { | 1011 | { |
987 | struct vbi_format *fmt = arg; | 1012 | struct vbi_format *fmt = arg; |
988 | 1013 | ||
989 | fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); | 1014 | fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL); |
1015 | if (!fmt2) { | ||
1016 | err = -ENOMEM; | ||
1017 | break; | ||
1018 | } | ||
990 | fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE; | 1019 | fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE; |
991 | 1020 | ||
992 | err = drv(inode, file, VIDIOC_G_FMT, fmt2); | 1021 | err = drv(inode, file, VIDIOC_G_FMT, fmt2); |
@@ -1018,8 +1047,11 @@ v4l_compat_translate_ioctl(struct inode *inode, | |||
1018 | break; | 1047 | break; |
1019 | } | 1048 | } |
1020 | 1049 | ||
1021 | fmt2 = kzalloc(sizeof(*fmt2),GFP_KERNEL); | 1050 | fmt2 = kzalloc(sizeof(*fmt2), GFP_KERNEL); |
1022 | 1051 | if (!fmt2) { | |
1052 | err = -ENOMEM; | ||
1053 | break; | ||
1054 | } | ||
1023 | fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE; | 1055 | fmt2->type = V4L2_BUF_TYPE_VBI_CAPTURE; |
1024 | fmt2->fmt.vbi.samples_per_line = fmt->samples_per_line; | 1056 | fmt2->fmt.vbi.samples_per_line = fmt->samples_per_line; |
1025 | fmt2->fmt.vbi.sampling_rate = fmt->sampling_rate; | 1057 | fmt2->fmt.vbi.sampling_rate = fmt->sampling_rate; |
diff --git a/drivers/memstick/core/memstick.c b/drivers/memstick/core/memstick.c index de80dba12f9b..946e3d3506ac 100644 --- a/drivers/memstick/core/memstick.c +++ b/drivers/memstick/core/memstick.c | |||
@@ -276,8 +276,6 @@ void memstick_init_req_sg(struct memstick_request *mrq, unsigned char tpc, | |||
276 | mrq->need_card_int = 1; | 276 | mrq->need_card_int = 1; |
277 | else | 277 | else |
278 | mrq->need_card_int = 0; | 278 | mrq->need_card_int = 0; |
279 | |||
280 | mrq->get_int_reg = 0; | ||
281 | } | 279 | } |
282 | EXPORT_SYMBOL(memstick_init_req_sg); | 280 | EXPORT_SYMBOL(memstick_init_req_sg); |
283 | 281 | ||
@@ -311,8 +309,6 @@ void memstick_init_req(struct memstick_request *mrq, unsigned char tpc, | |||
311 | mrq->need_card_int = 1; | 309 | mrq->need_card_int = 1; |
312 | else | 310 | else |
313 | mrq->need_card_int = 0; | 311 | mrq->need_card_int = 0; |
314 | |||
315 | mrq->get_int_reg = 0; | ||
316 | } | 312 | } |
317 | EXPORT_SYMBOL(memstick_init_req); | 313 | EXPORT_SYMBOL(memstick_init_req); |
318 | 314 | ||
@@ -342,6 +338,7 @@ static int h_memstick_read_dev_id(struct memstick_dev *card, | |||
342 | card->id.class = id_reg.class; | 338 | card->id.class = id_reg.class; |
343 | } | 339 | } |
344 | complete(&card->mrq_complete); | 340 | complete(&card->mrq_complete); |
341 | dev_dbg(&card->dev, "if_mode = %02x\n", id_reg.if_mode); | ||
345 | return -EAGAIN; | 342 | return -EAGAIN; |
346 | } | 343 | } |
347 | } | 344 | } |
@@ -422,7 +419,6 @@ static void memstick_power_on(struct memstick_host *host) | |||
422 | { | 419 | { |
423 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); | 420 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); |
424 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); | 421 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); |
425 | msleep(1); | ||
426 | } | 422 | } |
427 | 423 | ||
428 | static void memstick_check(struct work_struct *work) | 424 | static void memstick_check(struct work_struct *work) |
@@ -579,7 +575,8 @@ EXPORT_SYMBOL(memstick_suspend_host); | |||
579 | void memstick_resume_host(struct memstick_host *host) | 575 | void memstick_resume_host(struct memstick_host *host) |
580 | { | 576 | { |
581 | mutex_lock(&host->lock); | 577 | mutex_lock(&host->lock); |
582 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); | 578 | if (host->card) |
579 | memstick_power_on(host); | ||
583 | mutex_unlock(&host->lock); | 580 | mutex_unlock(&host->lock); |
584 | memstick_detect_change(host); | 581 | memstick_detect_change(host); |
585 | } | 582 | } |
diff --git a/drivers/memstick/core/mspro_block.c b/drivers/memstick/core/mspro_block.c index 1d637e4561d3..557dbbba5cb2 100644 --- a/drivers/memstick/core/mspro_block.c +++ b/drivers/memstick/core/mspro_block.c | |||
@@ -133,6 +133,7 @@ struct mspro_devinfo { | |||
133 | struct mspro_block_data { | 133 | struct mspro_block_data { |
134 | struct memstick_dev *card; | 134 | struct memstick_dev *card; |
135 | unsigned int usage_count; | 135 | unsigned int usage_count; |
136 | unsigned int caps; | ||
136 | struct gendisk *disk; | 137 | struct gendisk *disk; |
137 | struct request_queue *queue; | 138 | struct request_queue *queue; |
138 | spinlock_t q_lock; | 139 | spinlock_t q_lock; |
@@ -577,7 +578,6 @@ static int h_mspro_block_wait_for_ced(struct memstick_dev *card, | |||
577 | static int h_mspro_block_transfer_data(struct memstick_dev *card, | 578 | static int h_mspro_block_transfer_data(struct memstick_dev *card, |
578 | struct memstick_request **mrq) | 579 | struct memstick_request **mrq) |
579 | { | 580 | { |
580 | struct memstick_host *host = card->host; | ||
581 | struct mspro_block_data *msb = memstick_get_drvdata(card); | 581 | struct mspro_block_data *msb = memstick_get_drvdata(card); |
582 | unsigned char t_val = 0; | 582 | unsigned char t_val = 0; |
583 | struct scatterlist t_sg = { 0 }; | 583 | struct scatterlist t_sg = { 0 }; |
@@ -591,12 +591,12 @@ static int h_mspro_block_transfer_data(struct memstick_dev *card, | |||
591 | switch ((*mrq)->tpc) { | 591 | switch ((*mrq)->tpc) { |
592 | case MS_TPC_WRITE_REG: | 592 | case MS_TPC_WRITE_REG: |
593 | memstick_init_req(*mrq, MS_TPC_SET_CMD, &msb->transfer_cmd, 1); | 593 | memstick_init_req(*mrq, MS_TPC_SET_CMD, &msb->transfer_cmd, 1); |
594 | (*mrq)->get_int_reg = 1; | 594 | (*mrq)->need_card_int = 1; |
595 | return 0; | 595 | return 0; |
596 | case MS_TPC_SET_CMD: | 596 | case MS_TPC_SET_CMD: |
597 | t_val = (*mrq)->int_reg; | 597 | t_val = (*mrq)->int_reg; |
598 | memstick_init_req(*mrq, MS_TPC_GET_INT, NULL, 1); | 598 | memstick_init_req(*mrq, MS_TPC_GET_INT, NULL, 1); |
599 | if (host->caps & MEMSTICK_CAP_AUTO_GET_INT) | 599 | if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT) |
600 | goto has_int_reg; | 600 | goto has_int_reg; |
601 | return 0; | 601 | return 0; |
602 | case MS_TPC_GET_INT: | 602 | case MS_TPC_GET_INT: |
@@ -646,12 +646,12 @@ has_int_reg: | |||
646 | ? MS_TPC_READ_LONG_DATA | 646 | ? MS_TPC_READ_LONG_DATA |
647 | : MS_TPC_WRITE_LONG_DATA, | 647 | : MS_TPC_WRITE_LONG_DATA, |
648 | &t_sg); | 648 | &t_sg); |
649 | (*mrq)->get_int_reg = 1; | 649 | (*mrq)->need_card_int = 1; |
650 | return 0; | 650 | return 0; |
651 | case MS_TPC_READ_LONG_DATA: | 651 | case MS_TPC_READ_LONG_DATA: |
652 | case MS_TPC_WRITE_LONG_DATA: | 652 | case MS_TPC_WRITE_LONG_DATA: |
653 | msb->current_page++; | 653 | msb->current_page++; |
654 | if (host->caps & MEMSTICK_CAP_AUTO_GET_INT) { | 654 | if (msb->caps & MEMSTICK_CAP_AUTO_GET_INT) { |
655 | t_val = (*mrq)->int_reg; | 655 | t_val = (*mrq)->int_reg; |
656 | goto has_int_reg; | 656 | goto has_int_reg; |
657 | } else { | 657 | } else { |
@@ -816,12 +816,13 @@ static int mspro_block_wait_for_ced(struct memstick_dev *card) | |||
816 | return card->current_mrq.error; | 816 | return card->current_mrq.error; |
817 | } | 817 | } |
818 | 818 | ||
819 | static int mspro_block_switch_to_parallel(struct memstick_dev *card) | 819 | static int mspro_block_set_interface(struct memstick_dev *card, |
820 | unsigned char sys_reg) | ||
820 | { | 821 | { |
821 | struct memstick_host *host = card->host; | 822 | struct memstick_host *host = card->host; |
822 | struct mspro_block_data *msb = memstick_get_drvdata(card); | 823 | struct mspro_block_data *msb = memstick_get_drvdata(card); |
823 | struct mspro_param_register param = { | 824 | struct mspro_param_register param = { |
824 | .system = MEMSTICK_SYS_PAR4, | 825 | .system = sys_reg, |
825 | .data_count = 0, | 826 | .data_count = 0, |
826 | .data_address = 0, | 827 | .data_address = 0, |
827 | .tpc_param = 0 | 828 | .tpc_param = 0 |
@@ -833,41 +834,70 @@ static int mspro_block_switch_to_parallel(struct memstick_dev *card) | |||
833 | sizeof(param)); | 834 | sizeof(param)); |
834 | memstick_new_req(host); | 835 | memstick_new_req(host); |
835 | wait_for_completion(&card->mrq_complete); | 836 | wait_for_completion(&card->mrq_complete); |
836 | if (card->current_mrq.error) | 837 | return card->current_mrq.error; |
837 | return card->current_mrq.error; | 838 | } |
839 | |||
840 | static int mspro_block_switch_interface(struct memstick_dev *card) | ||
841 | { | ||
842 | struct memstick_host *host = card->host; | ||
843 | struct mspro_block_data *msb = memstick_get_drvdata(card); | ||
844 | int rc = 0; | ||
845 | |||
846 | if (msb->caps & MEMSTICK_CAP_PAR4) | ||
847 | rc = mspro_block_set_interface(card, MEMSTICK_SYS_PAR4); | ||
848 | else | ||
849 | return 0; | ||
850 | |||
851 | if (rc) { | ||
852 | printk(KERN_WARNING | ||
853 | "%s: could not switch to 4-bit mode, error %d\n", | ||
854 | card->dev.bus_id, rc); | ||
855 | return 0; | ||
856 | } | ||
838 | 857 | ||
839 | msb->system = MEMSTICK_SYS_PAR4; | 858 | msb->system = MEMSTICK_SYS_PAR4; |
840 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PAR4); | 859 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_PAR4); |
860 | printk(KERN_INFO "%s: switching to 4-bit parallel mode\n", | ||
861 | card->dev.bus_id); | ||
862 | |||
863 | if (msb->caps & MEMSTICK_CAP_PAR8) { | ||
864 | rc = mspro_block_set_interface(card, MEMSTICK_SYS_PAR8); | ||
865 | |||
866 | if (!rc) { | ||
867 | msb->system = MEMSTICK_SYS_PAR8; | ||
868 | host->set_param(host, MEMSTICK_INTERFACE, | ||
869 | MEMSTICK_PAR8); | ||
870 | printk(KERN_INFO | ||
871 | "%s: switching to 8-bit parallel mode\n", | ||
872 | card->dev.bus_id); | ||
873 | } else | ||
874 | printk(KERN_WARNING | ||
875 | "%s: could not switch to 8-bit mode, error %d\n", | ||
876 | card->dev.bus_id, rc); | ||
877 | } | ||
841 | 878 | ||
842 | card->next_request = h_mspro_block_req_init; | 879 | card->next_request = h_mspro_block_req_init; |
843 | msb->mrq_handler = h_mspro_block_default; | 880 | msb->mrq_handler = h_mspro_block_default; |
844 | memstick_init_req(&card->current_mrq, MS_TPC_GET_INT, NULL, 1); | 881 | memstick_init_req(&card->current_mrq, MS_TPC_GET_INT, NULL, 1); |
845 | memstick_new_req(card->host); | 882 | memstick_new_req(card->host); |
846 | wait_for_completion(&card->mrq_complete); | 883 | wait_for_completion(&card->mrq_complete); |
884 | rc = card->current_mrq.error; | ||
847 | 885 | ||
848 | if (card->current_mrq.error) { | 886 | if (rc) { |
887 | printk(KERN_WARNING | ||
888 | "%s: interface error, trying to fall back to serial\n", | ||
889 | card->dev.bus_id); | ||
849 | msb->system = MEMSTICK_SYS_SERIAL; | 890 | msb->system = MEMSTICK_SYS_SERIAL; |
850 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF); | 891 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_OFF); |
851 | msleep(1000); | 892 | msleep(10); |
852 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); | 893 | host->set_param(host, MEMSTICK_POWER, MEMSTICK_POWER_ON); |
853 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); | 894 | host->set_param(host, MEMSTICK_INTERFACE, MEMSTICK_SERIAL); |
854 | 895 | ||
855 | if (memstick_set_rw_addr(card)) | 896 | rc = memstick_set_rw_addr(card); |
856 | return card->current_mrq.error; | 897 | if (!rc) |
857 | 898 | rc = mspro_block_set_interface(card, msb->system); | |
858 | param.system = msb->system; | ||
859 | |||
860 | card->next_request = h_mspro_block_req_init; | ||
861 | msb->mrq_handler = h_mspro_block_default; | ||
862 | memstick_init_req(&card->current_mrq, MS_TPC_WRITE_REG, ¶m, | ||
863 | sizeof(param)); | ||
864 | memstick_new_req(host); | ||
865 | wait_for_completion(&card->mrq_complete); | ||
866 | |||
867 | return -EFAULT; | ||
868 | } | 899 | } |
869 | 900 | return rc; | |
870 | return 0; | ||
871 | } | 901 | } |
872 | 902 | ||
873 | /* Memory allocated for attributes by this function should be freed by | 903 | /* Memory allocated for attributes by this function should be freed by |
@@ -1052,16 +1082,18 @@ static int mspro_block_init_card(struct memstick_dev *card) | |||
1052 | if (memstick_set_rw_addr(card)) | 1082 | if (memstick_set_rw_addr(card)) |
1053 | return -EIO; | 1083 | return -EIO; |
1054 | 1084 | ||
1055 | if (host->caps & MEMSTICK_CAP_PAR4) { | 1085 | msb->caps = host->caps; |
1056 | if (mspro_block_switch_to_parallel(card)) | 1086 | rc = mspro_block_switch_interface(card); |
1057 | printk(KERN_WARNING "%s: could not switch to " | 1087 | if (rc) |
1058 | "parallel interface\n", card->dev.bus_id); | 1088 | return rc; |
1059 | } | ||
1060 | 1089 | ||
1090 | msleep(200); | ||
1061 | rc = mspro_block_wait_for_ced(card); | 1091 | rc = mspro_block_wait_for_ced(card); |
1062 | if (rc) | 1092 | if (rc) |
1063 | return rc; | 1093 | return rc; |
1064 | dev_dbg(&card->dev, "card activated\n"); | 1094 | dev_dbg(&card->dev, "card activated\n"); |
1095 | if (msb->system != MEMSTICK_SYS_SERIAL) | ||
1096 | msb->caps |= MEMSTICK_CAP_AUTO_GET_INT; | ||
1065 | 1097 | ||
1066 | card->next_request = h_mspro_block_req_init; | 1098 | card->next_request = h_mspro_block_req_init; |
1067 | msb->mrq_handler = h_mspro_block_get_ro; | 1099 | msb->mrq_handler = h_mspro_block_get_ro; |
diff --git a/drivers/memstick/host/jmb38x_ms.c b/drivers/memstick/host/jmb38x_ms.c index 03fe8783b1ee..8770a5fac3b6 100644 --- a/drivers/memstick/host/jmb38x_ms.c +++ b/drivers/memstick/host/jmb38x_ms.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/spinlock.h> | 12 | #include <linux/spinlock.h> |
13 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
14 | #include <linux/pci.h> | 14 | #include <linux/pci.h> |
15 | #include <linux/dma-mapping.h> | ||
15 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
16 | #include <linux/highmem.h> | 17 | #include <linux/highmem.h> |
17 | #include <linux/memstick.h> | 18 | #include <linux/memstick.h> |
@@ -56,8 +57,6 @@ struct jmb38x_ms_host { | |||
56 | unsigned long timeout_jiffies; | 57 | unsigned long timeout_jiffies; |
57 | struct timer_list timer; | 58 | struct timer_list timer; |
58 | struct memstick_request *req; | 59 | struct memstick_request *req; |
59 | unsigned char eject:1, | ||
60 | use_dma:1; | ||
61 | unsigned char cmd_flags; | 60 | unsigned char cmd_flags; |
62 | unsigned char io_pos; | 61 | unsigned char io_pos; |
63 | unsigned int io_word[2]; | 62 | unsigned int io_word[2]; |
@@ -94,9 +93,22 @@ struct jmb38x_ms { | |||
94 | #define HOST_CONTROL_IF_PAR4 0x1 | 93 | #define HOST_CONTROL_IF_PAR4 0x1 |
95 | #define HOST_CONTROL_IF_PAR8 0x3 | 94 | #define HOST_CONTROL_IF_PAR8 0x3 |
96 | 95 | ||
96 | #define STATUS_BUSY 0x00080000 | ||
97 | #define STATUS_MS_DAT7 0x00040000 | ||
98 | #define STATUS_MS_DAT6 0x00020000 | ||
99 | #define STATUS_MS_DAT5 0x00010000 | ||
100 | #define STATUS_MS_DAT4 0x00008000 | ||
101 | #define STATUS_MS_DAT3 0x00004000 | ||
102 | #define STATUS_MS_DAT2 0x00002000 | ||
103 | #define STATUS_MS_DAT1 0x00001000 | ||
104 | #define STATUS_MS_DAT0 0x00000800 | ||
97 | #define STATUS_HAS_MEDIA 0x00000400 | 105 | #define STATUS_HAS_MEDIA 0x00000400 |
98 | #define STATUS_FIFO_EMPTY 0x00000200 | 106 | #define STATUS_FIFO_EMPTY 0x00000200 |
99 | #define STATUS_FIFO_FULL 0x00000100 | 107 | #define STATUS_FIFO_FULL 0x00000100 |
108 | #define STATUS_MS_CED 0x00000080 | ||
109 | #define STATUS_MS_ERR 0x00000040 | ||
110 | #define STATUS_MS_BRQ 0x00000020 | ||
111 | #define STATUS_MS_CNK 0x00000001 | ||
100 | 112 | ||
101 | #define INT_STATUS_TPC_ERR 0x00080000 | 113 | #define INT_STATUS_TPC_ERR 0x00080000 |
102 | #define INT_STATUS_CRC_ERR 0x00040000 | 114 | #define INT_STATUS_CRC_ERR 0x00040000 |
@@ -119,11 +131,17 @@ struct jmb38x_ms { | |||
119 | #define PAD_PU_PD_ON_MS_SOCK0 0x5f8f0000 | 131 | #define PAD_PU_PD_ON_MS_SOCK0 0x5f8f0000 |
120 | #define PAD_PU_PD_ON_MS_SOCK1 0x0f0f0000 | 132 | #define PAD_PU_PD_ON_MS_SOCK1 0x0f0f0000 |
121 | 133 | ||
134 | #define CLOCK_CONTROL_40MHZ 0x00000001 | ||
135 | #define CLOCK_CONTROL_50MHZ 0x00000002 | ||
136 | #define CLOCK_CONTROL_60MHZ 0x00000008 | ||
137 | #define CLOCK_CONTROL_62_5MHZ 0x0000000c | ||
138 | #define CLOCK_CONTROL_OFF 0x00000000 | ||
139 | |||
122 | enum { | 140 | enum { |
123 | CMD_READY = 0x01, | 141 | CMD_READY = 0x01, |
124 | FIFO_READY = 0x02, | 142 | FIFO_READY = 0x02, |
125 | REG_DATA = 0x04, | 143 | REG_DATA = 0x04, |
126 | AUTO_GET_INT = 0x08 | 144 | DMA_DATA = 0x08 |
127 | }; | 145 | }; |
128 | 146 | ||
129 | static unsigned int jmb38x_ms_read_data(struct jmb38x_ms_host *host, | 147 | static unsigned int jmb38x_ms_read_data(struct jmb38x_ms_host *host, |
@@ -273,7 +291,7 @@ static int jmb38x_ms_transfer_data(struct jmb38x_ms_host *host) | |||
273 | { | 291 | { |
274 | unsigned int length; | 292 | unsigned int length; |
275 | unsigned int off; | 293 | unsigned int off; |
276 | unsigned int t_size, p_off, p_cnt; | 294 | unsigned int t_size, p_cnt; |
277 | unsigned char *buf; | 295 | unsigned char *buf; |
278 | struct page *pg; | 296 | struct page *pg; |
279 | unsigned long flags = 0; | 297 | unsigned long flags = 0; |
@@ -287,6 +305,8 @@ static int jmb38x_ms_transfer_data(struct jmb38x_ms_host *host) | |||
287 | } | 305 | } |
288 | 306 | ||
289 | while (length) { | 307 | while (length) { |
308 | unsigned int uninitialized_var(p_off); | ||
309 | |||
290 | if (host->req->long_data) { | 310 | if (host->req->long_data) { |
291 | pg = nth_page(sg_page(&host->req->sg), | 311 | pg = nth_page(sg_page(&host->req->sg), |
292 | off >> PAGE_SHIFT); | 312 | off >> PAGE_SHIFT); |
@@ -364,28 +384,27 @@ static int jmb38x_ms_issue_cmd(struct memstick_host *msh) | |||
364 | cmd |= TPC_DIR; | 384 | cmd |= TPC_DIR; |
365 | if (host->req->need_card_int) | 385 | if (host->req->need_card_int) |
366 | cmd |= TPC_WAIT_INT; | 386 | cmd |= TPC_WAIT_INT; |
367 | if (host->req->get_int_reg) | ||
368 | cmd |= TPC_GET_INT; | ||
369 | 387 | ||
370 | data = host->req->data; | 388 | data = host->req->data; |
371 | 389 | ||
372 | host->use_dma = !no_dma; | 390 | if (!no_dma) |
391 | host->cmd_flags |= DMA_DATA; | ||
373 | 392 | ||
374 | if (host->req->long_data) { | 393 | if (host->req->long_data) { |
375 | data_len = host->req->sg.length; | 394 | data_len = host->req->sg.length; |
376 | } else { | 395 | } else { |
377 | data_len = host->req->data_len; | 396 | data_len = host->req->data_len; |
378 | host->use_dma = 0; | 397 | host->cmd_flags &= ~DMA_DATA; |
379 | } | 398 | } |
380 | 399 | ||
381 | if (data_len <= 8) { | 400 | if (data_len <= 8) { |
382 | cmd &= ~(TPC_DATA_SEL | 0xf); | 401 | cmd &= ~(TPC_DATA_SEL | 0xf); |
383 | host->cmd_flags |= REG_DATA; | 402 | host->cmd_flags |= REG_DATA; |
384 | cmd |= data_len & 0xf; | 403 | cmd |= data_len & 0xf; |
385 | host->use_dma = 0; | 404 | host->cmd_flags &= ~DMA_DATA; |
386 | } | 405 | } |
387 | 406 | ||
388 | if (host->use_dma) { | 407 | if (host->cmd_flags & DMA_DATA) { |
389 | if (1 != pci_map_sg(host->chip->pdev, &host->req->sg, 1, | 408 | if (1 != pci_map_sg(host->chip->pdev, &host->req->sg, 1, |
390 | host->req->data_dir == READ | 409 | host->req->data_dir == READ |
391 | ? PCI_DMA_FROMDEVICE | 410 | ? PCI_DMA_FROMDEVICE |
@@ -448,13 +467,12 @@ static void jmb38x_ms_complete_cmd(struct memstick_host *msh, int last) | |||
448 | readl(host->addr + INT_STATUS)); | 467 | readl(host->addr + INT_STATUS)); |
449 | dev_dbg(msh->cdev.dev, "c hstatus %08x\n", readl(host->addr + STATUS)); | 468 | dev_dbg(msh->cdev.dev, "c hstatus %08x\n", readl(host->addr + STATUS)); |
450 | 469 | ||
451 | if (host->req->get_int_reg) { | 470 | host->req->int_reg = readl(host->addr + STATUS) & 0xff; |
452 | t_val = readl(host->addr + TPC_P0); | 471 | |
453 | host->req->int_reg = (t_val & 0xff); | 472 | writel(0, host->addr + BLOCK); |
454 | } | 473 | writel(0, host->addr + DMA_CONTROL); |
455 | 474 | ||
456 | if (host->use_dma) { | 475 | if (host->cmd_flags & DMA_DATA) { |
457 | writel(0, host->addr + DMA_CONTROL); | ||
458 | pci_unmap_sg(host->chip->pdev, &host->req->sg, 1, | 476 | pci_unmap_sg(host->chip->pdev, &host->req->sg, 1, |
459 | host->req->data_dir == READ | 477 | host->req->data_dir == READ |
460 | ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE); | 478 | ? PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE); |
@@ -506,7 +524,7 @@ static irqreturn_t jmb38x_ms_isr(int irq, void *dev_id) | |||
506 | else | 524 | else |
507 | host->req->error = -ETIME; | 525 | host->req->error = -ETIME; |
508 | } else { | 526 | } else { |
509 | if (host->use_dma) { | 527 | if (host->cmd_flags & DMA_DATA) { |
510 | if (irq_status & INT_STATUS_EOTRAN) | 528 | if (irq_status & INT_STATUS_EOTRAN) |
511 | host->cmd_flags |= FIFO_READY; | 529 | host->cmd_flags |= FIFO_READY; |
512 | } else { | 530 | } else { |
@@ -595,19 +613,18 @@ static void jmb38x_ms_reset(struct jmb38x_ms_host *host) | |||
595 | { | 613 | { |
596 | unsigned int host_ctl = readl(host->addr + HOST_CONTROL); | 614 | unsigned int host_ctl = readl(host->addr + HOST_CONTROL); |
597 | 615 | ||
598 | writel(host_ctl | HOST_CONTROL_RESET_REQ | HOST_CONTROL_RESET, | 616 | writel(HOST_CONTROL_RESET_REQ, host->addr + HOST_CONTROL); |
599 | host->addr + HOST_CONTROL); | ||
600 | 617 | ||
601 | while (HOST_CONTROL_RESET_REQ | 618 | while (HOST_CONTROL_RESET_REQ |
602 | & (host_ctl = readl(host->addr + HOST_CONTROL))) { | 619 | & (host_ctl = readl(host->addr + HOST_CONTROL))) { |
603 | ndelay(100); | 620 | ndelay(20); |
604 | dev_dbg(&host->chip->pdev->dev, "reset\n"); | 621 | dev_dbg(&host->chip->pdev->dev, "reset %08x\n", host_ctl); |
605 | } | 622 | } |
606 | 623 | ||
607 | writel(INT_STATUS_ALL, host->addr + INT_STATUS_ENABLE); | 624 | writel(HOST_CONTROL_RESET, host->addr + HOST_CONTROL); |
625 | mmiowb(); | ||
608 | writel(INT_STATUS_ALL, host->addr + INT_SIGNAL_ENABLE); | 626 | writel(INT_STATUS_ALL, host->addr + INT_SIGNAL_ENABLE); |
609 | 627 | writel(INT_STATUS_ALL, host->addr + INT_STATUS_ENABLE); | |
610 | dev_dbg(&host->chip->pdev->dev, "reset\n"); | ||
611 | } | 628 | } |
612 | 629 | ||
613 | static void jmb38x_ms_set_param(struct memstick_host *msh, | 630 | static void jmb38x_ms_set_param(struct memstick_host *msh, |
@@ -615,10 +632,8 @@ static void jmb38x_ms_set_param(struct memstick_host *msh, | |||
615 | int value) | 632 | int value) |
616 | { | 633 | { |
617 | struct jmb38x_ms_host *host = memstick_priv(msh); | 634 | struct jmb38x_ms_host *host = memstick_priv(msh); |
618 | unsigned int host_ctl; | 635 | unsigned int host_ctl = readl(host->addr + HOST_CONTROL); |
619 | unsigned long flags; | 636 | unsigned int clock_ctl = CLOCK_CONTROL_40MHZ, clock_delay = 0; |
620 | |||
621 | spin_lock_irqsave(&host->lock, flags); | ||
622 | 637 | ||
623 | switch (param) { | 638 | switch (param) { |
624 | case MEMSTICK_POWER: | 639 | case MEMSTICK_POWER: |
@@ -626,60 +641,57 @@ static void jmb38x_ms_set_param(struct memstick_host *msh, | |||
626 | jmb38x_ms_reset(host); | 641 | jmb38x_ms_reset(host); |
627 | 642 | ||
628 | writel(host->id ? PAD_PU_PD_ON_MS_SOCK1 | 643 | writel(host->id ? PAD_PU_PD_ON_MS_SOCK1 |
629 | : PAD_PU_PD_ON_MS_SOCK0, | 644 | : PAD_PU_PD_ON_MS_SOCK0, |
630 | host->addr + PAD_PU_PD); | 645 | host->addr + PAD_PU_PD); |
631 | 646 | ||
632 | writel(PAD_OUTPUT_ENABLE_MS, | 647 | writel(PAD_OUTPUT_ENABLE_MS, |
633 | host->addr + PAD_OUTPUT_ENABLE); | 648 | host->addr + PAD_OUTPUT_ENABLE); |
634 | 649 | ||
635 | host_ctl = readl(host->addr + HOST_CONTROL); | 650 | host_ctl = 7; |
636 | host_ctl |= 7; | 651 | host_ctl |= HOST_CONTROL_POWER_EN |
637 | writel(host_ctl | (HOST_CONTROL_POWER_EN | 652 | | HOST_CONTROL_CLOCK_EN; |
638 | | HOST_CONTROL_CLOCK_EN), | 653 | writel(host_ctl, host->addr + HOST_CONTROL); |
639 | host->addr + HOST_CONTROL); | ||
640 | 654 | ||
641 | dev_dbg(&host->chip->pdev->dev, "power on\n"); | 655 | dev_dbg(&host->chip->pdev->dev, "power on\n"); |
642 | } else if (value == MEMSTICK_POWER_OFF) { | 656 | } else if (value == MEMSTICK_POWER_OFF) { |
643 | writel(readl(host->addr + HOST_CONTROL) | 657 | host_ctl &= ~(HOST_CONTROL_POWER_EN |
644 | & ~(HOST_CONTROL_POWER_EN | 658 | | HOST_CONTROL_CLOCK_EN); |
645 | | HOST_CONTROL_CLOCK_EN), | 659 | writel(host_ctl, host->addr + HOST_CONTROL); |
646 | host->addr + HOST_CONTROL); | ||
647 | writel(0, host->addr + PAD_OUTPUT_ENABLE); | 660 | writel(0, host->addr + PAD_OUTPUT_ENABLE); |
648 | writel(PAD_PU_PD_OFF, host->addr + PAD_PU_PD); | 661 | writel(PAD_PU_PD_OFF, host->addr + PAD_PU_PD); |
649 | dev_dbg(&host->chip->pdev->dev, "power off\n"); | 662 | dev_dbg(&host->chip->pdev->dev, "power off\n"); |
650 | } | 663 | } |
651 | break; | 664 | break; |
652 | case MEMSTICK_INTERFACE: | 665 | case MEMSTICK_INTERFACE: |
653 | /* jmb38x_ms_reset(host); */ | ||
654 | |||
655 | host_ctl = readl(host->addr + HOST_CONTROL); | ||
656 | host_ctl &= ~(3 << HOST_CONTROL_IF_SHIFT); | 666 | host_ctl &= ~(3 << HOST_CONTROL_IF_SHIFT); |
657 | /* host_ctl |= 7; */ | ||
658 | 667 | ||
659 | if (value == MEMSTICK_SERIAL) { | 668 | if (value == MEMSTICK_SERIAL) { |
660 | host_ctl &= ~HOST_CONTROL_FAST_CLK; | 669 | host_ctl &= ~HOST_CONTROL_FAST_CLK; |
661 | host_ctl |= HOST_CONTROL_IF_SERIAL | 670 | host_ctl |= HOST_CONTROL_IF_SERIAL |
662 | << HOST_CONTROL_IF_SHIFT; | 671 | << HOST_CONTROL_IF_SHIFT; |
663 | host_ctl |= HOST_CONTROL_REI; | 672 | host_ctl |= HOST_CONTROL_REI; |
664 | writel(0, host->addr + CLOCK_DELAY); | 673 | clock_ctl = CLOCK_CONTROL_40MHZ; |
674 | clock_delay = 0; | ||
665 | } else if (value == MEMSTICK_PAR4) { | 675 | } else if (value == MEMSTICK_PAR4) { |
666 | host_ctl |= HOST_CONTROL_FAST_CLK; | 676 | host_ctl |= HOST_CONTROL_FAST_CLK; |
667 | host_ctl |= HOST_CONTROL_IF_PAR4 | 677 | host_ctl |= HOST_CONTROL_IF_PAR4 |
668 | << HOST_CONTROL_IF_SHIFT; | 678 | << HOST_CONTROL_IF_SHIFT; |
669 | host_ctl &= ~HOST_CONTROL_REI; | 679 | host_ctl &= ~HOST_CONTROL_REI; |
670 | writel(4, host->addr + CLOCK_DELAY); | 680 | clock_ctl = CLOCK_CONTROL_40MHZ; |
681 | clock_delay = 4; | ||
671 | } else if (value == MEMSTICK_PAR8) { | 682 | } else if (value == MEMSTICK_PAR8) { |
672 | host_ctl |= HOST_CONTROL_FAST_CLK; | 683 | host_ctl |= HOST_CONTROL_FAST_CLK; |
673 | host_ctl |= HOST_CONTROL_IF_PAR8 | 684 | host_ctl |= HOST_CONTROL_IF_PAR8 |
674 | << HOST_CONTROL_IF_SHIFT; | 685 | << HOST_CONTROL_IF_SHIFT; |
675 | host_ctl &= ~HOST_CONTROL_REI; | 686 | host_ctl &= ~HOST_CONTROL_REI; |
676 | writel(4, host->addr + CLOCK_DELAY); | 687 | clock_ctl = CLOCK_CONTROL_60MHZ; |
688 | clock_delay = 0; | ||
677 | } | 689 | } |
678 | writel(host_ctl, host->addr + HOST_CONTROL); | 690 | writel(host_ctl, host->addr + HOST_CONTROL); |
691 | writel(clock_ctl, host->addr + CLOCK_CONTROL); | ||
692 | writel(clock_delay, host->addr + CLOCK_DELAY); | ||
679 | break; | 693 | break; |
680 | }; | 694 | }; |
681 | |||
682 | spin_unlock_irqrestore(&host->lock, flags); | ||
683 | } | 695 | } |
684 | 696 | ||
685 | #ifdef CONFIG_PM | 697 | #ifdef CONFIG_PM |
@@ -772,13 +784,10 @@ static struct memstick_host *jmb38x_ms_alloc_host(struct jmb38x_ms *jm, int cnt) | |||
772 | snprintf(host->host_id, DEVICE_ID_SIZE, DRIVER_NAME ":slot%d", | 784 | snprintf(host->host_id, DEVICE_ID_SIZE, DRIVER_NAME ":slot%d", |
773 | host->id); | 785 | host->id); |
774 | host->irq = jm->pdev->irq; | 786 | host->irq = jm->pdev->irq; |
775 | host->timeout_jiffies = msecs_to_jiffies(4000); | 787 | host->timeout_jiffies = msecs_to_jiffies(1000); |
776 | msh->request = jmb38x_ms_request; | 788 | msh->request = jmb38x_ms_request; |
777 | msh->set_param = jmb38x_ms_set_param; | 789 | msh->set_param = jmb38x_ms_set_param; |
778 | /* | 790 | |
779 | msh->caps = MEMSTICK_CAP_AUTO_GET_INT | MEMSTICK_CAP_PAR4 | ||
780 | | MEMSTICK_CAP_PAR8; | ||
781 | */ | ||
782 | msh->caps = MEMSTICK_CAP_PAR4 | MEMSTICK_CAP_PAR8; | 791 | msh->caps = MEMSTICK_CAP_PAR4 | MEMSTICK_CAP_PAR8; |
783 | 792 | ||
784 | setup_timer(&host->timer, jmb38x_ms_abort, (unsigned long)msh); | 793 | setup_timer(&host->timer, jmb38x_ms_abort, (unsigned long)msh); |
diff --git a/drivers/memstick/host/tifm_ms.c b/drivers/memstick/host/tifm_ms.c index 2b5bf52a8302..eb150dfb637f 100644 --- a/drivers/memstick/host/tifm_ms.c +++ b/drivers/memstick/host/tifm_ms.c | |||
@@ -340,11 +340,20 @@ static void tifm_ms_complete_cmd(struct tifm_ms *host) | |||
340 | 340 | ||
341 | del_timer(&host->timer); | 341 | del_timer(&host->timer); |
342 | 342 | ||
343 | if (host->use_dma) | 343 | host->req->int_reg = readl(sock->addr + SOCK_MS_STATUS) & 0xff; |
344 | host->req->int_reg = (host->req->int_reg & 1) | ||
345 | | ((host->req->int_reg << 4) & 0xe0); | ||
346 | |||
347 | writel(TIFM_FIFO_INT_SETALL, | ||
348 | sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); | ||
349 | writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL); | ||
350 | |||
351 | if (host->use_dma) { | ||
344 | tifm_unmap_sg(sock, &host->req->sg, 1, | 352 | tifm_unmap_sg(sock, &host->req->sg, 1, |
345 | host->req->data_dir == READ | 353 | host->req->data_dir == READ |
346 | ? PCI_DMA_FROMDEVICE | 354 | ? PCI_DMA_FROMDEVICE |
347 | : PCI_DMA_TODEVICE); | 355 | : PCI_DMA_TODEVICE); |
356 | } | ||
348 | 357 | ||
349 | writel((~TIFM_CTRL_LED) & readl(sock->addr + SOCK_CONTROL), | 358 | writel((~TIFM_CTRL_LED) & readl(sock->addr + SOCK_CONTROL), |
350 | sock->addr + SOCK_CONTROL); | 359 | sock->addr + SOCK_CONTROL); |
@@ -424,12 +433,6 @@ static void tifm_ms_card_event(struct tifm_dev *sock) | |||
424 | else if (host_status & TIFM_MS_STAT_CRC) | 433 | else if (host_status & TIFM_MS_STAT_CRC) |
425 | host->req->error = -EILSEQ; | 434 | host->req->error = -EILSEQ; |
426 | 435 | ||
427 | if (host->req->error) { | ||
428 | writel(TIFM_FIFO_INT_SETALL, | ||
429 | sock->addr + SOCK_DMA_FIFO_INT_ENABLE_CLEAR); | ||
430 | writel(TIFM_DMA_RESET, sock->addr + SOCK_DMA_CONTROL); | ||
431 | } | ||
432 | |||
433 | if (host_status & TIFM_MS_STAT_RDY) | 436 | if (host_status & TIFM_MS_STAT_RDY) |
434 | host->cmd_flags |= CMD_READY; | 437 | host->cmd_flags |= CMD_READY; |
435 | 438 | ||
diff --git a/drivers/message/fusion/mptbase.c b/drivers/message/fusion/mptbase.c index 6b6df8679585..c6be6eba7dc3 100644 --- a/drivers/message/fusion/mptbase.c +++ b/drivers/message/fusion/mptbase.c | |||
@@ -1430,6 +1430,98 @@ mpt_get_product_name(u16 vendor, u16 device, u8 revision, char *prod_name) | |||
1430 | sprintf(prod_name, "%s", product_str); | 1430 | sprintf(prod_name, "%s", product_str); |
1431 | } | 1431 | } |
1432 | 1432 | ||
1433 | /** | ||
1434 | * mpt_mapresources - map in memory mapped io | ||
1435 | * @ioc: Pointer to pointer to IOC adapter | ||
1436 | * | ||
1437 | **/ | ||
1438 | static int | ||
1439 | mpt_mapresources(MPT_ADAPTER *ioc) | ||
1440 | { | ||
1441 | u8 __iomem *mem; | ||
1442 | int ii; | ||
1443 | unsigned long mem_phys; | ||
1444 | unsigned long port; | ||
1445 | u32 msize; | ||
1446 | u32 psize; | ||
1447 | u8 revision; | ||
1448 | int r = -ENODEV; | ||
1449 | struct pci_dev *pdev; | ||
1450 | |||
1451 | pdev = ioc->pcidev; | ||
1452 | ioc->bars = pci_select_bars(pdev, IORESOURCE_MEM); | ||
1453 | if (pci_enable_device_mem(pdev)) { | ||
1454 | printk(MYIOC_s_ERR_FMT "pci_enable_device_mem() " | ||
1455 | "failed\n", ioc->name); | ||
1456 | return r; | ||
1457 | } | ||
1458 | if (pci_request_selected_regions(pdev, ioc->bars, "mpt")) { | ||
1459 | printk(MYIOC_s_ERR_FMT "pci_request_selected_regions() with " | ||
1460 | "MEM failed\n", ioc->name); | ||
1461 | return r; | ||
1462 | } | ||
1463 | |||
1464 | pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision); | ||
1465 | |||
1466 | if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK) | ||
1467 | && !pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) { | ||
1468 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT | ||
1469 | ": 64 BIT PCI BUS DMA ADDRESSING SUPPORTED\n", | ||
1470 | ioc->name)); | ||
1471 | } else if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK) | ||
1472 | && !pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK)) { | ||
1473 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT | ||
1474 | ": 32 BIT PCI BUS DMA ADDRESSING SUPPORTED\n", | ||
1475 | ioc->name)); | ||
1476 | } else { | ||
1477 | printk(MYIOC_s_WARN_FMT "no suitable DMA mask for %s\n", | ||
1478 | ioc->name, pci_name(pdev)); | ||
1479 | pci_release_selected_regions(pdev, ioc->bars); | ||
1480 | return r; | ||
1481 | } | ||
1482 | |||
1483 | mem_phys = msize = 0; | ||
1484 | port = psize = 0; | ||
1485 | for (ii = 0; ii < DEVICE_COUNT_RESOURCE; ii++) { | ||
1486 | if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) { | ||
1487 | if (psize) | ||
1488 | continue; | ||
1489 | /* Get I/O space! */ | ||
1490 | port = pci_resource_start(pdev, ii); | ||
1491 | psize = pci_resource_len(pdev, ii); | ||
1492 | } else { | ||
1493 | if (msize) | ||
1494 | continue; | ||
1495 | /* Get memmap */ | ||
1496 | mem_phys = pci_resource_start(pdev, ii); | ||
1497 | msize = pci_resource_len(pdev, ii); | ||
1498 | } | ||
1499 | } | ||
1500 | ioc->mem_size = msize; | ||
1501 | |||
1502 | mem = NULL; | ||
1503 | /* Get logical ptr for PciMem0 space */ | ||
1504 | /*mem = ioremap(mem_phys, msize);*/ | ||
1505 | mem = ioremap(mem_phys, msize); | ||
1506 | if (mem == NULL) { | ||
1507 | printk(MYIOC_s_ERR_FMT ": ERROR - Unable to map adapter" | ||
1508 | " memory!\n", ioc->name); | ||
1509 | return -EINVAL; | ||
1510 | } | ||
1511 | ioc->memmap = mem; | ||
1512 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "mem = %p, mem_phys = %lx\n", | ||
1513 | ioc->name, mem, mem_phys)); | ||
1514 | |||
1515 | ioc->mem_phys = mem_phys; | ||
1516 | ioc->chip = (SYSIF_REGS __iomem *)mem; | ||
1517 | |||
1518 | /* Save Port IO values in case we need to do downloadboot */ | ||
1519 | ioc->pio_mem_phys = port; | ||
1520 | ioc->pio_chip = (SYSIF_REGS __iomem *)port; | ||
1521 | |||
1522 | return 0; | ||
1523 | } | ||
1524 | |||
1433 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ | 1525 | /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/ |
1434 | /** | 1526 | /** |
1435 | * mpt_attach - Install a PCI intelligent MPT adapter. | 1527 | * mpt_attach - Install a PCI intelligent MPT adapter. |
@@ -1452,13 +1544,6 @@ int | |||
1452 | mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id) | 1544 | mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id) |
1453 | { | 1545 | { |
1454 | MPT_ADAPTER *ioc; | 1546 | MPT_ADAPTER *ioc; |
1455 | u8 __iomem *mem; | ||
1456 | u8 __iomem *pmem; | ||
1457 | unsigned long mem_phys; | ||
1458 | unsigned long port; | ||
1459 | u32 msize; | ||
1460 | u32 psize; | ||
1461 | int ii; | ||
1462 | u8 cb_idx; | 1547 | u8 cb_idx; |
1463 | int r = -ENODEV; | 1548 | int r = -ENODEV; |
1464 | u8 revision; | 1549 | u8 revision; |
@@ -1468,52 +1553,32 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1468 | struct proc_dir_entry *dent, *ent; | 1553 | struct proc_dir_entry *dent, *ent; |
1469 | #endif | 1554 | #endif |
1470 | 1555 | ||
1471 | if (mpt_debug_level) | ||
1472 | printk(KERN_INFO MYNAM ": mpt_debug_level=%xh\n", mpt_debug_level); | ||
1473 | |||
1474 | ioc = kzalloc(sizeof(MPT_ADAPTER), GFP_ATOMIC); | 1556 | ioc = kzalloc(sizeof(MPT_ADAPTER), GFP_ATOMIC); |
1475 | if (ioc == NULL) { | 1557 | if (ioc == NULL) { |
1476 | printk(KERN_ERR MYNAM ": ERROR - Insufficient memory to add adapter!\n"); | 1558 | printk(KERN_ERR MYNAM ": ERROR - Insufficient memory to add adapter!\n"); |
1477 | return -ENOMEM; | 1559 | return -ENOMEM; |
1478 | } | 1560 | } |
1479 | ioc->debug_level = mpt_debug_level; | 1561 | |
1480 | ioc->id = mpt_ids++; | 1562 | ioc->id = mpt_ids++; |
1481 | sprintf(ioc->name, "ioc%d", ioc->id); | 1563 | sprintf(ioc->name, "ioc%d", ioc->id); |
1482 | 1564 | ||
1483 | ioc->bars = pci_select_bars(pdev, IORESOURCE_MEM); | 1565 | /* |
1484 | if (pci_enable_device_mem(pdev)) { | 1566 | * set initial debug level |
1485 | printk(MYIOC_s_ERR_FMT "pci_enable_device_mem() " | 1567 | * (refer to mptdebug.h) |
1486 | "failed\n", ioc->name); | 1568 | * |
1487 | kfree(ioc); | 1569 | */ |
1488 | return r; | 1570 | ioc->debug_level = mpt_debug_level; |
1489 | } | 1571 | if (mpt_debug_level) |
1490 | if (pci_request_selected_regions(pdev, ioc->bars, "mpt")) { | 1572 | printk(KERN_INFO "mpt_debug_level=%xh\n", mpt_debug_level); |
1491 | printk(MYIOC_s_ERR_FMT "pci_request_selected_regions() with " | ||
1492 | "MEM failed\n", ioc->name); | ||
1493 | kfree(ioc); | ||
1494 | return r; | ||
1495 | } | ||
1496 | 1573 | ||
1497 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT ": mpt_adapter_install\n", ioc->name)); | 1574 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT ": mpt_adapter_install\n", ioc->name)); |
1498 | 1575 | ||
1499 | if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) { | 1576 | ioc->pcidev = pdev; |
1500 | dprintk(ioc, printk(MYIOC_s_INFO_FMT | 1577 | if (mpt_mapresources(ioc)) { |
1501 | ": 64 BIT PCI BUS DMA ADDRESSING SUPPORTED\n", ioc->name)); | ||
1502 | } else if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { | ||
1503 | printk(MYIOC_s_WARN_FMT ": 32 BIT PCI BUS DMA ADDRESSING NOT SUPPORTED\n", | ||
1504 | ioc->name); | ||
1505 | kfree(ioc); | 1578 | kfree(ioc); |
1506 | return r; | 1579 | return r; |
1507 | } | 1580 | } |
1508 | 1581 | ||
1509 | if (!pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK)) { | ||
1510 | dprintk(ioc, printk(MYIOC_s_INFO_FMT | ||
1511 | ": Using 64 bit consistent mask\n", ioc->name)); | ||
1512 | } else { | ||
1513 | dprintk(ioc, printk(MYIOC_s_INFO_FMT | ||
1514 | ": Not using 64 bit consistent mask\n", ioc->name)); | ||
1515 | } | ||
1516 | |||
1517 | ioc->alloc_total = sizeof(MPT_ADAPTER); | 1582 | ioc->alloc_total = sizeof(MPT_ADAPTER); |
1518 | ioc->req_sz = MPT_DEFAULT_FRAME_SIZE; /* avoid div by zero! */ | 1583 | ioc->req_sz = MPT_DEFAULT_FRAME_SIZE; /* avoid div by zero! */ |
1519 | ioc->reply_sz = MPT_REPLY_FRAME_SIZE; | 1584 | ioc->reply_sz = MPT_REPLY_FRAME_SIZE; |
@@ -1551,48 +1616,9 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1551 | /* Find lookup slot. */ | 1616 | /* Find lookup slot. */ |
1552 | INIT_LIST_HEAD(&ioc->list); | 1617 | INIT_LIST_HEAD(&ioc->list); |
1553 | 1618 | ||
1554 | mem_phys = msize = 0; | ||
1555 | port = psize = 0; | ||
1556 | for (ii=0; ii < DEVICE_COUNT_RESOURCE; ii++) { | ||
1557 | if (pci_resource_flags(pdev, ii) & PCI_BASE_ADDRESS_SPACE_IO) { | ||
1558 | if (psize) | ||
1559 | continue; | ||
1560 | /* Get I/O space! */ | ||
1561 | port = pci_resource_start(pdev, ii); | ||
1562 | psize = pci_resource_len(pdev,ii); | ||
1563 | } else { | ||
1564 | if (msize) | ||
1565 | continue; | ||
1566 | /* Get memmap */ | ||
1567 | mem_phys = pci_resource_start(pdev, ii); | ||
1568 | msize = pci_resource_len(pdev,ii); | ||
1569 | } | ||
1570 | } | ||
1571 | ioc->mem_size = msize; | ||
1572 | |||
1573 | mem = NULL; | ||
1574 | /* Get logical ptr for PciMem0 space */ | ||
1575 | /*mem = ioremap(mem_phys, msize);*/ | ||
1576 | mem = ioremap(mem_phys, msize); | ||
1577 | if (mem == NULL) { | ||
1578 | printk(MYIOC_s_ERR_FMT "Unable to map adapter memory!\n", ioc->name); | ||
1579 | kfree(ioc); | ||
1580 | return -EINVAL; | ||
1581 | } | ||
1582 | ioc->memmap = mem; | ||
1583 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "mem = %p, mem_phys = %lx\n", ioc->name, mem, mem_phys)); | ||
1584 | |||
1585 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "facts @ %p, pfacts[0] @ %p\n", | 1619 | dinitprintk(ioc, printk(MYIOC_s_INFO_FMT "facts @ %p, pfacts[0] @ %p\n", |
1586 | ioc->name, &ioc->facts, &ioc->pfacts[0])); | 1620 | ioc->name, &ioc->facts, &ioc->pfacts[0])); |
1587 | 1621 | ||
1588 | ioc->mem_phys = mem_phys; | ||
1589 | ioc->chip = (SYSIF_REGS __iomem *)mem; | ||
1590 | |||
1591 | /* Save Port IO values in case we need to do downloadboot */ | ||
1592 | ioc->pio_mem_phys = port; | ||
1593 | pmem = (u8 __iomem *)port; | ||
1594 | ioc->pio_chip = (SYSIF_REGS __iomem *)pmem; | ||
1595 | |||
1596 | pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision); | 1622 | pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision); |
1597 | mpt_get_product_name(pdev->vendor, pdev->device, revision, ioc->prod_name); | 1623 | mpt_get_product_name(pdev->vendor, pdev->device, revision, ioc->prod_name); |
1598 | 1624 | ||
@@ -1688,7 +1714,9 @@ mpt_attach(struct pci_dev *pdev, const struct pci_device_id *id) | |||
1688 | list_del(&ioc->list); | 1714 | list_del(&ioc->list); |
1689 | if (ioc->alt_ioc) | 1715 | if (ioc->alt_ioc) |
1690 | ioc->alt_ioc->alt_ioc = NULL; | 1716 | ioc->alt_ioc->alt_ioc = NULL; |
1691 | iounmap(mem); | 1717 | iounmap(ioc->memmap); |
1718 | if (r != -5) | ||
1719 | pci_release_selected_regions(pdev, ioc->bars); | ||
1692 | kfree(ioc); | 1720 | kfree(ioc); |
1693 | pci_set_drvdata(pdev, NULL); | 1721 | pci_set_drvdata(pdev, NULL); |
1694 | return r; | 1722 | return r; |
@@ -1784,13 +1812,10 @@ mpt_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1784 | u32 device_state; | 1812 | u32 device_state; |
1785 | MPT_ADAPTER *ioc = pci_get_drvdata(pdev); | 1813 | MPT_ADAPTER *ioc = pci_get_drvdata(pdev); |
1786 | 1814 | ||
1787 | device_state=pci_choose_state(pdev, state); | 1815 | device_state = pci_choose_state(pdev, state); |
1788 | 1816 | printk(MYIOC_s_INFO_FMT "pci-suspend: pdev=0x%p, slot=%s, Entering " | |
1789 | printk(MYIOC_s_INFO_FMT | 1817 | "operating state [D%d]\n", ioc->name, pdev, pci_name(pdev), |
1790 | "pci-suspend: pdev=0x%p, slot=%s, Entering operating state [D%d]\n", | 1818 | device_state); |
1791 | ioc->name, pdev, pci_name(pdev), device_state); | ||
1792 | |||
1793 | pci_save_state(pdev); | ||
1794 | 1819 | ||
1795 | /* put ioc into READY_STATE */ | 1820 | /* put ioc into READY_STATE */ |
1796 | if(SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, CAN_SLEEP)) { | 1821 | if(SendIocReset(ioc, MPI_FUNCTION_IOC_MESSAGE_UNIT_RESET, CAN_SLEEP)) { |
@@ -1805,10 +1830,14 @@ mpt_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1805 | /* Clear any lingering interrupt */ | 1830 | /* Clear any lingering interrupt */ |
1806 | CHIPREG_WRITE32(&ioc->chip->IntStatus, 0); | 1831 | CHIPREG_WRITE32(&ioc->chip->IntStatus, 0); |
1807 | 1832 | ||
1833 | free_irq(ioc->pci_irq, ioc); | ||
1834 | if (mpt_msi_enable) | ||
1835 | pci_disable_msi(ioc->pcidev); | ||
1836 | ioc->pci_irq = -1; | ||
1837 | pci_save_state(pdev); | ||
1808 | pci_disable_device(pdev); | 1838 | pci_disable_device(pdev); |
1809 | pci_release_selected_regions(pdev, ioc->bars); | 1839 | pci_release_selected_regions(pdev, ioc->bars); |
1810 | pci_set_power_state(pdev, device_state); | 1840 | pci_set_power_state(pdev, device_state); |
1811 | |||
1812 | return 0; | 1841 | return 0; |
1813 | } | 1842 | } |
1814 | 1843 | ||
@@ -1823,48 +1852,54 @@ mpt_resume(struct pci_dev *pdev) | |||
1823 | MPT_ADAPTER *ioc = pci_get_drvdata(pdev); | 1852 | MPT_ADAPTER *ioc = pci_get_drvdata(pdev); |
1824 | u32 device_state = pdev->current_state; | 1853 | u32 device_state = pdev->current_state; |
1825 | int recovery_state; | 1854 | int recovery_state; |
1855 | int err; | ||
1826 | 1856 | ||
1827 | printk(MYIOC_s_INFO_FMT | 1857 | printk(MYIOC_s_INFO_FMT "pci-resume: pdev=0x%p, slot=%s, Previous " |
1828 | "pci-resume: pdev=0x%p, slot=%s, Previous operating state [D%d]\n", | 1858 | "operating state [D%d]\n", ioc->name, pdev, pci_name(pdev), |
1829 | ioc->name, pdev, pci_name(pdev), device_state); | 1859 | device_state); |
1830 | 1860 | ||
1831 | pci_set_power_state(pdev, 0); | 1861 | pci_set_power_state(pdev, PCI_D0); |
1862 | pci_enable_wake(pdev, PCI_D0, 0); | ||
1832 | pci_restore_state(pdev); | 1863 | pci_restore_state(pdev); |
1833 | if (ioc->facts.Flags & MPI_IOCFACTS_FLAGS_FW_DOWNLOAD_BOOT) { | 1864 | ioc->pcidev = pdev; |
1834 | ioc->bars = pci_select_bars(ioc->pcidev, IORESOURCE_MEM | | 1865 | err = mpt_mapresources(ioc); |
1835 | IORESOURCE_IO); | 1866 | if (err) |
1836 | if (pci_enable_device(pdev)) | 1867 | return err; |
1837 | return 0; | ||
1838 | } else { | ||
1839 | ioc->bars = pci_select_bars(pdev, IORESOURCE_MEM); | ||
1840 | if (pci_enable_device_mem(pdev)) | ||
1841 | return 0; | ||
1842 | } | ||
1843 | if (pci_request_selected_regions(pdev, ioc->bars, "mpt")) | ||
1844 | return 0; | ||
1845 | 1868 | ||
1846 | /* enable interrupts */ | 1869 | printk(MYIOC_s_INFO_FMT "pci-resume: ioc-state=0x%x,doorbell=0x%x\n", |
1847 | CHIPREG_WRITE32(&ioc->chip->IntMask, MPI_HIM_DIM); | 1870 | ioc->name, (mpt_GetIocState(ioc, 1) >> MPI_IOC_STATE_SHIFT), |
1848 | ioc->active = 1; | 1871 | CHIPREG_READ32(&ioc->chip->Doorbell)); |
1849 | 1872 | ||
1850 | printk(MYIOC_s_INFO_FMT | 1873 | /* |
1851 | "pci-resume: ioc-state=0x%x,doorbell=0x%x\n", | 1874 | * Errata workaround for SAS pci express: |
1852 | ioc->name, | 1875 | * Upon returning to the D0 state, the contents of the doorbell will be |
1853 | (mpt_GetIocState(ioc, 1) >> MPI_IOC_STATE_SHIFT), | 1876 | * stale data, and this will incorrectly signal to the host driver that |
1854 | CHIPREG_READ32(&ioc->chip->Doorbell)); | 1877 | * the firmware is ready to process mpt commands. The workaround is |
1878 | * to issue a diagnostic reset. | ||
1879 | */ | ||
1880 | if (ioc->bus_type == SAS && (pdev->device == | ||
1881 | MPI_MANUFACTPAGE_DEVID_SAS1068E || pdev->device == | ||
1882 | MPI_MANUFACTPAGE_DEVID_SAS1064E)) { | ||
1883 | if (KickStart(ioc, 1, CAN_SLEEP) < 0) { | ||
1884 | printk(MYIOC_s_WARN_FMT "pci-resume: Cannot recover\n", | ||
1885 | ioc->name); | ||
1886 | goto out; | ||
1887 | } | ||
1888 | } | ||
1855 | 1889 | ||
1856 | /* bring ioc to operational state */ | 1890 | /* bring ioc to operational state */ |
1857 | if ((recovery_state = mpt_do_ioc_recovery(ioc, | 1891 | printk(MYIOC_s_INFO_FMT "Sending mpt_do_ioc_recovery\n", ioc->name); |
1858 | MPT_HOSTEVENT_IOC_RECOVER, CAN_SLEEP)) != 0) { | 1892 | recovery_state = mpt_do_ioc_recovery(ioc, MPT_HOSTEVENT_IOC_BRINGUP, |
1859 | printk(MYIOC_s_INFO_FMT | 1893 | CAN_SLEEP); |
1860 | "pci-resume: Cannot recover, error:[%x]\n", | 1894 | if (recovery_state != 0) |
1861 | ioc->name, recovery_state); | 1895 | printk(MYIOC_s_WARN_FMT "pci-resume: Cannot recover, " |
1862 | } else { | 1896 | "error:[%x]\n", ioc->name, recovery_state); |
1897 | else | ||
1863 | printk(MYIOC_s_INFO_FMT | 1898 | printk(MYIOC_s_INFO_FMT |
1864 | "pci-resume: success\n", ioc->name); | 1899 | "pci-resume: success\n", ioc->name); |
1865 | } | 1900 | out: |
1866 | |||
1867 | return 0; | 1901 | return 0; |
1902 | |||
1868 | } | 1903 | } |
1869 | #endif | 1904 | #endif |
1870 | 1905 | ||
@@ -1903,6 +1938,7 @@ mpt_signal_reset(u8 index, MPT_ADAPTER *ioc, int reset_phase) | |||
1903 | * -3 if READY but PrimeIOCFifos Failed | 1938 | * -3 if READY but PrimeIOCFifos Failed |
1904 | * -4 if READY but IOCInit Failed | 1939 | * -4 if READY but IOCInit Failed |
1905 | * -5 if failed to enable_device and/or request_selected_regions | 1940 | * -5 if failed to enable_device and/or request_selected_regions |
1941 | * -6 if failed to upload firmware | ||
1906 | */ | 1942 | */ |
1907 | static int | 1943 | static int |
1908 | mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag) | 1944 | mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag) |
@@ -2097,7 +2133,7 @@ mpt_do_ioc_recovery(MPT_ADAPTER *ioc, u32 reason, int sleepFlag) | |||
2097 | } else { | 2133 | } else { |
2098 | printk(MYIOC_s_WARN_FMT | 2134 | printk(MYIOC_s_WARN_FMT |
2099 | "firmware upload failure!\n", ioc->name); | 2135 | "firmware upload failure!\n", ioc->name); |
2100 | ret = -5; | 2136 | ret = -6; |
2101 | } | 2137 | } |
2102 | } | 2138 | } |
2103 | } | 2139 | } |
diff --git a/drivers/message/fusion/mptscsih.c b/drivers/message/fusion/mptscsih.c index 0c252f60c4c1..c207bda6723b 100644 --- a/drivers/message/fusion/mptscsih.c +++ b/drivers/message/fusion/mptscsih.c | |||
@@ -1170,6 +1170,10 @@ mptscsih_shutdown(struct pci_dev *pdev) | |||
1170 | int | 1170 | int |
1171 | mptscsih_suspend(struct pci_dev *pdev, pm_message_t state) | 1171 | mptscsih_suspend(struct pci_dev *pdev, pm_message_t state) |
1172 | { | 1172 | { |
1173 | MPT_ADAPTER *ioc = pci_get_drvdata(pdev); | ||
1174 | |||
1175 | scsi_block_requests(ioc->sh); | ||
1176 | flush_scheduled_work(); | ||
1173 | mptscsih_shutdown(pdev); | 1177 | mptscsih_shutdown(pdev); |
1174 | return mpt_suspend(pdev,state); | 1178 | return mpt_suspend(pdev,state); |
1175 | } | 1179 | } |
@@ -1183,7 +1187,12 @@ mptscsih_suspend(struct pci_dev *pdev, pm_message_t state) | |||
1183 | int | 1187 | int |
1184 | mptscsih_resume(struct pci_dev *pdev) | 1188 | mptscsih_resume(struct pci_dev *pdev) |
1185 | { | 1189 | { |
1186 | return mpt_resume(pdev); | 1190 | MPT_ADAPTER *ioc = pci_get_drvdata(pdev); |
1191 | int rc; | ||
1192 | |||
1193 | rc = mpt_resume(pdev); | ||
1194 | scsi_unblock_requests(ioc->sh); | ||
1195 | return rc; | ||
1187 | } | 1196 | } |
1188 | 1197 | ||
1189 | #endif | 1198 | #endif |
diff --git a/drivers/mmc/core/Makefile b/drivers/mmc/core/Makefile index 4985807257a8..19a1a254a0c5 100644 --- a/drivers/mmc/core/Makefile +++ b/drivers/mmc/core/Makefile | |||
@@ -7,7 +7,7 @@ ifeq ($(CONFIG_MMC_DEBUG),y) | |||
7 | endif | 7 | endif |
8 | 8 | ||
9 | obj-$(CONFIG_MMC) += mmc_core.o | 9 | obj-$(CONFIG_MMC) += mmc_core.o |
10 | mmc_core-y := core.o sysfs.o bus.o host.o \ | 10 | mmc_core-y := core.o bus.o host.o \ |
11 | mmc.o mmc_ops.o sd.o sd_ops.o \ | 11 | mmc.o mmc_ops.o sd.o sd_ops.o \ |
12 | sdio.o sdio_ops.o sdio_bus.o \ | 12 | sdio.o sdio_ops.o sdio_bus.o \ |
13 | sdio_cis.o sdio_io.o sdio_irq.o | 13 | sdio_cis.o sdio_io.o sdio_irq.o |
diff --git a/drivers/mmc/core/bus.c b/drivers/mmc/core/bus.c index b0c22cad9423..fd95b18e988b 100644 --- a/drivers/mmc/core/bus.c +++ b/drivers/mmc/core/bus.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/mmc/card.h> | 17 | #include <linux/mmc/card.h> |
18 | #include <linux/mmc/host.h> | 18 | #include <linux/mmc/host.h> |
19 | 19 | ||
20 | #include "sysfs.h" | ||
21 | #include "core.h" | 20 | #include "core.h" |
22 | #include "sdio_cis.h" | 21 | #include "sdio_cis.h" |
23 | #include "bus.h" | 22 | #include "bus.h" |
@@ -43,7 +42,7 @@ static ssize_t mmc_type_show(struct device *dev, | |||
43 | } | 42 | } |
44 | 43 | ||
45 | static struct device_attribute mmc_dev_attrs[] = { | 44 | static struct device_attribute mmc_dev_attrs[] = { |
46 | MMC_ATTR_RO(type), | 45 | __ATTR(type, S_IRUGO, mmc_type_show, NULL), |
47 | __ATTR_NULL, | 46 | __ATTR_NULL, |
48 | }; | 47 | }; |
49 | 48 | ||
@@ -189,7 +188,7 @@ static void mmc_release_card(struct device *dev) | |||
189 | /* | 188 | /* |
190 | * Allocate and initialise a new MMC card structure. | 189 | * Allocate and initialise a new MMC card structure. |
191 | */ | 190 | */ |
192 | struct mmc_card *mmc_alloc_card(struct mmc_host *host) | 191 | struct mmc_card *mmc_alloc_card(struct mmc_host *host, struct device_type *type) |
193 | { | 192 | { |
194 | struct mmc_card *card; | 193 | struct mmc_card *card; |
195 | 194 | ||
@@ -204,6 +203,7 @@ struct mmc_card *mmc_alloc_card(struct mmc_host *host) | |||
204 | card->dev.parent = mmc_classdev(host); | 203 | card->dev.parent = mmc_classdev(host); |
205 | card->dev.bus = &mmc_bus_type; | 204 | card->dev.bus = &mmc_bus_type; |
206 | card->dev.release = mmc_release_card; | 205 | card->dev.release = mmc_release_card; |
206 | card->dev.type = type; | ||
207 | 207 | ||
208 | return card; | 208 | return card; |
209 | } | 209 | } |
@@ -248,24 +248,10 @@ int mmc_add_card(struct mmc_card *card) | |||
248 | type, card->rca); | 248 | type, card->rca); |
249 | } | 249 | } |
250 | 250 | ||
251 | card->dev.uevent_suppress = 1; | ||
252 | |||
253 | ret = device_add(&card->dev); | 251 | ret = device_add(&card->dev); |
254 | if (ret) | 252 | if (ret) |
255 | return ret; | 253 | return ret; |
256 | 254 | ||
257 | if (card->host->bus_ops->sysfs_add) { | ||
258 | ret = card->host->bus_ops->sysfs_add(card->host, card); | ||
259 | if (ret) { | ||
260 | device_del(&card->dev); | ||
261 | return ret; | ||
262 | } | ||
263 | } | ||
264 | |||
265 | card->dev.uevent_suppress = 0; | ||
266 | |||
267 | kobject_uevent(&card->dev.kobj, KOBJ_ADD); | ||
268 | |||
269 | mmc_card_set_present(card); | 255 | mmc_card_set_present(card); |
270 | 256 | ||
271 | return 0; | 257 | return 0; |
@@ -285,9 +271,6 @@ void mmc_remove_card(struct mmc_card *card) | |||
285 | printk(KERN_INFO "%s: card %04x removed\n", | 271 | printk(KERN_INFO "%s: card %04x removed\n", |
286 | mmc_hostname(card->host), card->rca); | 272 | mmc_hostname(card->host), card->rca); |
287 | } | 273 | } |
288 | |||
289 | if (card->host->bus_ops->sysfs_remove) | ||
290 | card->host->bus_ops->sysfs_remove(card->host, card); | ||
291 | device_del(&card->dev); | 274 | device_del(&card->dev); |
292 | } | 275 | } |
293 | 276 | ||
diff --git a/drivers/mmc/core/bus.h b/drivers/mmc/core/bus.h index 4f35431116a8..18178766ab46 100644 --- a/drivers/mmc/core/bus.h +++ b/drivers/mmc/core/bus.h | |||
@@ -11,7 +11,16 @@ | |||
11 | #ifndef _MMC_CORE_BUS_H | 11 | #ifndef _MMC_CORE_BUS_H |
12 | #define _MMC_CORE_BUS_H | 12 | #define _MMC_CORE_BUS_H |
13 | 13 | ||
14 | struct mmc_card *mmc_alloc_card(struct mmc_host *host); | 14 | #define MMC_DEV_ATTR(name, fmt, args...) \ |
15 | static ssize_t mmc_##name##_show (struct device *dev, struct device_attribute *attr, char *buf) \ | ||
16 | { \ | ||
17 | struct mmc_card *card = container_of(dev, struct mmc_card, dev); \ | ||
18 | return sprintf(buf, fmt, args); \ | ||
19 | } \ | ||
20 | static DEVICE_ATTR(name, S_IRUGO, mmc_##name##_show, NULL) | ||
21 | |||
22 | struct mmc_card *mmc_alloc_card(struct mmc_host *host, | ||
23 | struct device_type *type); | ||
15 | int mmc_add_card(struct mmc_card *card); | 24 | int mmc_add_card(struct mmc_card *card); |
16 | void mmc_remove_card(struct mmc_card *card); | 25 | void mmc_remove_card(struct mmc_card *card); |
17 | 26 | ||
diff --git a/drivers/mmc/core/core.h b/drivers/mmc/core/core.h index 39daf2fb5dc4..cfa8e15b5923 100644 --- a/drivers/mmc/core/core.h +++ b/drivers/mmc/core/core.h | |||
@@ -18,8 +18,6 @@ | |||
18 | struct mmc_bus_ops { | 18 | struct mmc_bus_ops { |
19 | void (*remove)(struct mmc_host *); | 19 | void (*remove)(struct mmc_host *); |
20 | void (*detect)(struct mmc_host *); | 20 | void (*detect)(struct mmc_host *); |
21 | int (*sysfs_add)(struct mmc_host *, struct mmc_card *card); | ||
22 | void (*sysfs_remove)(struct mmc_host *, struct mmc_card *card); | ||
23 | void (*suspend)(struct mmc_host *); | 21 | void (*suspend)(struct mmc_host *); |
24 | void (*resume)(struct mmc_host *); | 22 | void (*resume)(struct mmc_host *); |
25 | }; | 23 | }; |
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c index 68c0e3b2f0e8..3da29eef8f7d 100644 --- a/drivers/mmc/core/mmc.c +++ b/drivers/mmc/core/mmc.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/mmc/mmc.h> | 17 | #include <linux/mmc/mmc.h> |
18 | 18 | ||
19 | #include "core.h" | 19 | #include "core.h" |
20 | #include "sysfs.h" | ||
21 | #include "bus.h" | 20 | #include "bus.h" |
22 | #include "mmc_ops.h" | 21 | #include "mmc_ops.h" |
23 | 22 | ||
@@ -248,6 +247,44 @@ out: | |||
248 | return err; | 247 | return err; |
249 | } | 248 | } |
250 | 249 | ||
250 | MMC_DEV_ATTR(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1], | ||
251 | card->raw_cid[2], card->raw_cid[3]); | ||
252 | MMC_DEV_ATTR(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1], | ||
253 | card->raw_csd[2], card->raw_csd[3]); | ||
254 | MMC_DEV_ATTR(date, "%02d/%04d\n", card->cid.month, card->cid.year); | ||
255 | MMC_DEV_ATTR(fwrev, "0x%x\n", card->cid.fwrev); | ||
256 | MMC_DEV_ATTR(hwrev, "0x%x\n", card->cid.hwrev); | ||
257 | MMC_DEV_ATTR(manfid, "0x%06x\n", card->cid.manfid); | ||
258 | MMC_DEV_ATTR(name, "%s\n", card->cid.prod_name); | ||
259 | MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid); | ||
260 | MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial); | ||
261 | |||
262 | static struct attribute *mmc_std_attrs[] = { | ||
263 | &dev_attr_cid.attr, | ||
264 | &dev_attr_csd.attr, | ||
265 | &dev_attr_date.attr, | ||
266 | &dev_attr_fwrev.attr, | ||
267 | &dev_attr_hwrev.attr, | ||
268 | &dev_attr_manfid.attr, | ||
269 | &dev_attr_name.attr, | ||
270 | &dev_attr_oemid.attr, | ||
271 | &dev_attr_serial.attr, | ||
272 | NULL, | ||
273 | }; | ||
274 | |||
275 | static struct attribute_group mmc_std_attr_group = { | ||
276 | .attrs = mmc_std_attrs, | ||
277 | }; | ||
278 | |||
279 | static struct attribute_group *mmc_attr_groups[] = { | ||
280 | &mmc_std_attr_group, | ||
281 | NULL, | ||
282 | }; | ||
283 | |||
284 | static struct device_type mmc_type = { | ||
285 | .groups = mmc_attr_groups, | ||
286 | }; | ||
287 | |||
251 | /* | 288 | /* |
252 | * Handle the detection and initialisation of a card. | 289 | * Handle the detection and initialisation of a card. |
253 | * | 290 | * |
@@ -308,7 +345,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr, | |||
308 | /* | 345 | /* |
309 | * Allocate card structure. | 346 | * Allocate card structure. |
310 | */ | 347 | */ |
311 | card = mmc_alloc_card(host); | 348 | card = mmc_alloc_card(host, &mmc_type); |
312 | if (IS_ERR(card)) { | 349 | if (IS_ERR(card)) { |
313 | err = PTR_ERR(card); | 350 | err = PTR_ERR(card); |
314 | goto err; | 351 | goto err; |
@@ -459,53 +496,6 @@ static void mmc_detect(struct mmc_host *host) | |||
459 | } | 496 | } |
460 | } | 497 | } |
461 | 498 | ||
462 | MMC_ATTR_FN(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1], | ||
463 | card->raw_cid[2], card->raw_cid[3]); | ||
464 | MMC_ATTR_FN(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1], | ||
465 | card->raw_csd[2], card->raw_csd[3]); | ||
466 | MMC_ATTR_FN(date, "%02d/%04d\n", card->cid.month, card->cid.year); | ||
467 | MMC_ATTR_FN(fwrev, "0x%x\n", card->cid.fwrev); | ||
468 | MMC_ATTR_FN(hwrev, "0x%x\n", card->cid.hwrev); | ||
469 | MMC_ATTR_FN(manfid, "0x%06x\n", card->cid.manfid); | ||
470 | MMC_ATTR_FN(name, "%s\n", card->cid.prod_name); | ||
471 | MMC_ATTR_FN(oemid, "0x%04x\n", card->cid.oemid); | ||
472 | MMC_ATTR_FN(serial, "0x%08x\n", card->cid.serial); | ||
473 | |||
474 | static struct device_attribute mmc_dev_attrs[] = { | ||
475 | MMC_ATTR_RO(cid), | ||
476 | MMC_ATTR_RO(csd), | ||
477 | MMC_ATTR_RO(date), | ||
478 | MMC_ATTR_RO(fwrev), | ||
479 | MMC_ATTR_RO(hwrev), | ||
480 | MMC_ATTR_RO(manfid), | ||
481 | MMC_ATTR_RO(name), | ||
482 | MMC_ATTR_RO(oemid), | ||
483 | MMC_ATTR_RO(serial), | ||
484 | __ATTR_NULL, | ||
485 | }; | ||
486 | |||
487 | /* | ||
488 | * Adds sysfs entries as relevant. | ||
489 | */ | ||
490 | static int mmc_sysfs_add(struct mmc_host *host, struct mmc_card *card) | ||
491 | { | ||
492 | int ret; | ||
493 | |||
494 | ret = mmc_add_attrs(card, mmc_dev_attrs); | ||
495 | if (ret < 0) | ||
496 | return ret; | ||
497 | |||
498 | return 0; | ||
499 | } | ||
500 | |||
501 | /* | ||
502 | * Removes the sysfs entries added by mmc_sysfs_add(). | ||
503 | */ | ||
504 | static void mmc_sysfs_remove(struct mmc_host *host, struct mmc_card *card) | ||
505 | { | ||
506 | mmc_remove_attrs(card, mmc_dev_attrs); | ||
507 | } | ||
508 | |||
509 | #ifdef CONFIG_MMC_UNSAFE_RESUME | 499 | #ifdef CONFIG_MMC_UNSAFE_RESUME |
510 | 500 | ||
511 | /* | 501 | /* |
@@ -560,8 +550,6 @@ static void mmc_resume(struct mmc_host *host) | |||
560 | static const struct mmc_bus_ops mmc_ops = { | 550 | static const struct mmc_bus_ops mmc_ops = { |
561 | .remove = mmc_remove, | 551 | .remove = mmc_remove, |
562 | .detect = mmc_detect, | 552 | .detect = mmc_detect, |
563 | .sysfs_add = mmc_sysfs_add, | ||
564 | .sysfs_remove = mmc_sysfs_remove, | ||
565 | .suspend = mmc_suspend, | 553 | .suspend = mmc_suspend, |
566 | .resume = mmc_resume, | 554 | .resume = mmc_resume, |
567 | }; | 555 | }; |
diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index d1c1e0f592f1..7ef3b15c5e3d 100644 --- a/drivers/mmc/core/sd.c +++ b/drivers/mmc/core/sd.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/mmc/sd.h> | 18 | #include <linux/mmc/sd.h> |
19 | 19 | ||
20 | #include "core.h" | 20 | #include "core.h" |
21 | #include "sysfs.h" | ||
22 | #include "bus.h" | 21 | #include "bus.h" |
23 | #include "mmc_ops.h" | 22 | #include "mmc_ops.h" |
24 | #include "sd_ops.h" | 23 | #include "sd_ops.h" |
@@ -283,6 +282,47 @@ out: | |||
283 | return err; | 282 | return err; |
284 | } | 283 | } |
285 | 284 | ||
285 | MMC_DEV_ATTR(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1], | ||
286 | card->raw_cid[2], card->raw_cid[3]); | ||
287 | MMC_DEV_ATTR(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1], | ||
288 | card->raw_csd[2], card->raw_csd[3]); | ||
289 | MMC_DEV_ATTR(scr, "%08x%08x\n", card->raw_scr[0], card->raw_scr[1]); | ||
290 | MMC_DEV_ATTR(date, "%02d/%04d\n", card->cid.month, card->cid.year); | ||
291 | MMC_DEV_ATTR(fwrev, "0x%x\n", card->cid.fwrev); | ||
292 | MMC_DEV_ATTR(hwrev, "0x%x\n", card->cid.hwrev); | ||
293 | MMC_DEV_ATTR(manfid, "0x%06x\n", card->cid.manfid); | ||
294 | MMC_DEV_ATTR(name, "%s\n", card->cid.prod_name); | ||
295 | MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid); | ||
296 | MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial); | ||
297 | |||
298 | |||
299 | static struct attribute *sd_std_attrs[] = { | ||
300 | &dev_attr_cid.attr, | ||
301 | &dev_attr_csd.attr, | ||
302 | &dev_attr_scr.attr, | ||
303 | &dev_attr_date.attr, | ||
304 | &dev_attr_fwrev.attr, | ||
305 | &dev_attr_hwrev.attr, | ||
306 | &dev_attr_manfid.attr, | ||
307 | &dev_attr_name.attr, | ||
308 | &dev_attr_oemid.attr, | ||
309 | &dev_attr_serial.attr, | ||
310 | NULL, | ||
311 | }; | ||
312 | |||
313 | static struct attribute_group sd_std_attr_group = { | ||
314 | .attrs = sd_std_attrs, | ||
315 | }; | ||
316 | |||
317 | static struct attribute_group *sd_attr_groups[] = { | ||
318 | &sd_std_attr_group, | ||
319 | NULL, | ||
320 | }; | ||
321 | |||
322 | static struct device_type sd_type = { | ||
323 | .groups = sd_attr_groups, | ||
324 | }; | ||
325 | |||
286 | /* | 326 | /* |
287 | * Handle the detection and initialisation of a card. | 327 | * Handle the detection and initialisation of a card. |
288 | * | 328 | * |
@@ -352,7 +392,7 @@ static int mmc_sd_init_card(struct mmc_host *host, u32 ocr, | |||
352 | /* | 392 | /* |
353 | * Allocate card structure. | 393 | * Allocate card structure. |
354 | */ | 394 | */ |
355 | card = mmc_alloc_card(host); | 395 | card = mmc_alloc_card(host, &sd_type); |
356 | if (IS_ERR(card)) { | 396 | if (IS_ERR(card)) { |
357 | err = PTR_ERR(card); | 397 | err = PTR_ERR(card); |
358 | goto err; | 398 | goto err; |
@@ -518,55 +558,6 @@ static void mmc_sd_detect(struct mmc_host *host) | |||
518 | } | 558 | } |
519 | } | 559 | } |
520 | 560 | ||
521 | MMC_ATTR_FN(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1], | ||
522 | card->raw_cid[2], card->raw_cid[3]); | ||
523 | MMC_ATTR_FN(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1], | ||
524 | card->raw_csd[2], card->raw_csd[3]); | ||
525 | MMC_ATTR_FN(scr, "%08x%08x\n", card->raw_scr[0], card->raw_scr[1]); | ||
526 | MMC_ATTR_FN(date, "%02d/%04d\n", card->cid.month, card->cid.year); | ||
527 | MMC_ATTR_FN(fwrev, "0x%x\n", card->cid.fwrev); | ||
528 | MMC_ATTR_FN(hwrev, "0x%x\n", card->cid.hwrev); | ||
529 | MMC_ATTR_FN(manfid, "0x%06x\n", card->cid.manfid); | ||
530 | MMC_ATTR_FN(name, "%s\n", card->cid.prod_name); | ||
531 | MMC_ATTR_FN(oemid, "0x%04x\n", card->cid.oemid); | ||
532 | MMC_ATTR_FN(serial, "0x%08x\n", card->cid.serial); | ||
533 | |||
534 | static struct device_attribute mmc_sd_dev_attrs[] = { | ||
535 | MMC_ATTR_RO(cid), | ||
536 | MMC_ATTR_RO(csd), | ||
537 | MMC_ATTR_RO(scr), | ||
538 | MMC_ATTR_RO(date), | ||
539 | MMC_ATTR_RO(fwrev), | ||
540 | MMC_ATTR_RO(hwrev), | ||
541 | MMC_ATTR_RO(manfid), | ||
542 | MMC_ATTR_RO(name), | ||
543 | MMC_ATTR_RO(oemid), | ||
544 | MMC_ATTR_RO(serial), | ||
545 | __ATTR_NULL, | ||
546 | }; | ||
547 | |||
548 | /* | ||
549 | * Adds sysfs entries as relevant. | ||
550 | */ | ||
551 | static int mmc_sd_sysfs_add(struct mmc_host *host, struct mmc_card *card) | ||
552 | { | ||
553 | int ret; | ||
554 | |||
555 | ret = mmc_add_attrs(card, mmc_sd_dev_attrs); | ||
556 | if (ret < 0) | ||
557 | return ret; | ||
558 | |||
559 | return 0; | ||
560 | } | ||
561 | |||
562 | /* | ||
563 | * Removes the sysfs entries added by mmc_sysfs_add(). | ||
564 | */ | ||
565 | static void mmc_sd_sysfs_remove(struct mmc_host *host, struct mmc_card *card) | ||
566 | { | ||
567 | mmc_remove_attrs(card, mmc_sd_dev_attrs); | ||
568 | } | ||
569 | |||
570 | #ifdef CONFIG_MMC_UNSAFE_RESUME | 561 | #ifdef CONFIG_MMC_UNSAFE_RESUME |
571 | 562 | ||
572 | /* | 563 | /* |
@@ -621,8 +612,6 @@ static void mmc_sd_resume(struct mmc_host *host) | |||
621 | static const struct mmc_bus_ops mmc_sd_ops = { | 612 | static const struct mmc_bus_ops mmc_sd_ops = { |
622 | .remove = mmc_sd_remove, | 613 | .remove = mmc_sd_remove, |
623 | .detect = mmc_sd_detect, | 614 | .detect = mmc_sd_detect, |
624 | .sysfs_add = mmc_sd_sysfs_add, | ||
625 | .sysfs_remove = mmc_sd_sysfs_remove, | ||
626 | .suspend = mmc_sd_suspend, | 615 | .suspend = mmc_sd_suspend, |
627 | .resume = mmc_sd_resume, | 616 | .resume = mmc_sd_resume, |
628 | }; | 617 | }; |
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index 87a50f456efc..4eab79e09ccc 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c | |||
@@ -287,7 +287,7 @@ int mmc_attach_sdio(struct mmc_host *host, u32 ocr) | |||
287 | /* | 287 | /* |
288 | * Allocate card structure. | 288 | * Allocate card structure. |
289 | */ | 289 | */ |
290 | card = mmc_alloc_card(host); | 290 | card = mmc_alloc_card(host, NULL); |
291 | if (IS_ERR(card)) { | 291 | if (IS_ERR(card)) { |
292 | err = PTR_ERR(card); | 292 | err = PTR_ERR(card); |
293 | goto err; | 293 | goto err; |
diff --git a/drivers/mmc/core/sysfs.c b/drivers/mmc/core/sysfs.c deleted file mode 100644 index 00a97e70f914..000000000000 --- a/drivers/mmc/core/sysfs.c +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | /* | ||
2 | * linux/drivers/mmc/core/sysfs.c | ||
3 | * | ||
4 | * Copyright (C) 2003 Russell King, All Rights Reserved. | ||
5 | * Copyright 2007 Pierre Ossman | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | * | ||
11 | * MMC sysfs/driver model support. | ||
12 | */ | ||
13 | #include <linux/device.h> | ||
14 | |||
15 | #include <linux/mmc/card.h> | ||
16 | |||
17 | #include "sysfs.h" | ||
18 | |||
19 | int mmc_add_attrs(struct mmc_card *card, struct device_attribute *attrs) | ||
20 | { | ||
21 | int error = 0; | ||
22 | int i; | ||
23 | |||
24 | for (i = 0; attr_name(attrs[i]); i++) { | ||
25 | error = device_create_file(&card->dev, &attrs[i]); | ||
26 | if (error) { | ||
27 | while (--i >= 0) | ||
28 | device_remove_file(&card->dev, &attrs[i]); | ||
29 | break; | ||
30 | } | ||
31 | } | ||
32 | |||
33 | return error; | ||
34 | } | ||
35 | |||
36 | void mmc_remove_attrs(struct mmc_card *card, struct device_attribute *attrs) | ||
37 | { | ||
38 | int i; | ||
39 | |||
40 | for (i = 0; attr_name(attrs[i]); i++) | ||
41 | device_remove_file(&card->dev, &attrs[i]); | ||
42 | } | ||
43 | |||
diff --git a/drivers/mmc/core/sysfs.h b/drivers/mmc/core/sysfs.h deleted file mode 100644 index 4b8f670bd10f..000000000000 --- a/drivers/mmc/core/sysfs.h +++ /dev/null | |||
@@ -1,26 +0,0 @@ | |||
1 | /* | ||
2 | * linux/drivers/mmc/core/sysfs.h | ||
3 | * | ||
4 | * Copyright (C) 2003 Russell King, All Rights Reserved. | ||
5 | * Copyright 2007 Pierre Ossman | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #ifndef _MMC_CORE_SYSFS_H | ||
12 | #define _MMC_CORE_SYSFS_H | ||
13 | |||
14 | #define MMC_ATTR_FN(name, fmt, args...) \ | ||
15 | static ssize_t mmc_##name##_show (struct device *dev, struct device_attribute *attr, char *buf) \ | ||
16 | { \ | ||
17 | struct mmc_card *card = container_of(dev, struct mmc_card, dev);\ | ||
18 | return sprintf(buf, fmt, args); \ | ||
19 | } | ||
20 | |||
21 | #define MMC_ATTR_RO(name) __ATTR(name, S_IRUGO, mmc_##name##_show, NULL) | ||
22 | |||
23 | int mmc_add_attrs(struct mmc_card *card, struct device_attribute *attrs); | ||
24 | void mmc_remove_attrs(struct mmc_card *card, struct device_attribute *attrs); | ||
25 | |||
26 | #endif | ||
diff --git a/drivers/mmc/host/tifm_sd.c b/drivers/mmc/host/tifm_sd.c index 20d5c7bd940a..1c14a186f000 100644 --- a/drivers/mmc/host/tifm_sd.c +++ b/drivers/mmc/host/tifm_sd.c | |||
@@ -180,7 +180,7 @@ static void tifm_sd_transfer_data(struct tifm_sd *host) | |||
180 | host->sg_pos++; | 180 | host->sg_pos++; |
181 | if (host->sg_pos == host->sg_len) { | 181 | if (host->sg_pos == host->sg_len) { |
182 | if ((r_data->flags & MMC_DATA_WRITE) | 182 | if ((r_data->flags & MMC_DATA_WRITE) |
183 | && DATA_CARRY) | 183 | && (host->cmd_flags & DATA_CARRY)) |
184 | writel(host->bounce_buf_data[0], | 184 | writel(host->bounce_buf_data[0], |
185 | host->dev->addr | 185 | host->dev->addr |
186 | + SOCK_MMCSD_DATA); | 186 | + SOCK_MMCSD_DATA); |
diff --git a/drivers/net/3c501.c b/drivers/net/3c501.c index 7d253686ed0d..5ba4bab6d43e 100644 --- a/drivers/net/3c501.c +++ b/drivers/net/3c501.c | |||
@@ -485,9 +485,7 @@ static int el_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
485 | printk(KERN_DEBUG "%s: burped during tx load.\n", | 485 | printk(KERN_DEBUG "%s: burped during tx load.\n", |
486 | dev->name); | 486 | dev->name); |
487 | spin_lock_irqsave(&lp->lock, flags); | 487 | spin_lock_irqsave(&lp->lock, flags); |
488 | } | 488 | } while (1); |
489 | while (1); | ||
490 | |||
491 | } | 489 | } |
492 | 490 | ||
493 | /** | 491 | /** |
@@ -612,7 +610,8 @@ static irqreturn_t el_interrupt(int irq, void *dev_id) | |||
612 | dev->stats.tx_packets++; | 610 | dev->stats.tx_packets++; |
613 | if (el_debug > 6) | 611 | if (el_debug > 6) |
614 | printk(KERN_DEBUG " Tx succeeded %s\n", | 612 | printk(KERN_DEBUG " Tx succeeded %s\n", |
615 | (txsr & TX_RDY) ? "." : "but tx is busy!"); | 613 | (txsr & TX_RDY) ? "." : |
614 | "but tx is busy!"); | ||
616 | /* | 615 | /* |
617 | * This is safe the interrupt is atomic WRT itself. | 616 | * This is safe the interrupt is atomic WRT itself. |
618 | */ | 617 | */ |
@@ -693,7 +692,8 @@ static void el_receive(struct net_device *dev) | |||
693 | 692 | ||
694 | if (pkt_len < 60 || pkt_len > 1536) { | 693 | if (pkt_len < 60 || pkt_len > 1536) { |
695 | if (el_debug) | 694 | if (el_debug) |
696 | printk(KERN_DEBUG "%s: bogus packet, length=%d\n", dev->name, pkt_len); | 695 | printk(KERN_DEBUG "%s: bogus packet, length=%d\n", |
696 | dev->name, pkt_len); | ||
697 | dev->stats.rx_over_errors++; | 697 | dev->stats.rx_over_errors++; |
698 | return; | 698 | return; |
699 | } | 699 | } |
@@ -711,7 +711,8 @@ static void el_receive(struct net_device *dev) | |||
711 | 711 | ||
712 | outw(0x00, GP_LOW); | 712 | outw(0x00, GP_LOW); |
713 | if (skb == NULL) { | 713 | if (skb == NULL) { |
714 | printk(KERN_INFO "%s: Memory squeeze, dropping packet.\n", dev->name); | 714 | printk(KERN_INFO "%s: Memory squeeze, dropping packet.\n", |
715 | dev->name); | ||
715 | dev->stats.rx_dropped++; | 716 | dev->stats.rx_dropped++; |
716 | return; | 717 | return; |
717 | } else { | 718 | } else { |
@@ -748,7 +749,8 @@ static void el_reset(struct net_device *dev) | |||
748 | if (el_debug > 2) | 749 | if (el_debug > 2) |
749 | printk(KERN_INFO "3c501 reset..."); | 750 | printk(KERN_INFO "3c501 reset..."); |
750 | outb(AX_RESET, AX_CMD); /* Reset the chip */ | 751 | outb(AX_RESET, AX_CMD); /* Reset the chip */ |
751 | outb(AX_LOOP, AX_CMD); /* Aux control, irq and loopback enabled */ | 752 | /* Aux control, irq and loopback enabled */ |
753 | outb(AX_LOOP, AX_CMD); | ||
752 | { | 754 | { |
753 | int i; | 755 | int i; |
754 | for (i = 0; i < 6; i++) /* Set the station address. */ | 756 | for (i = 0; i < 6; i++) /* Set the station address. */ |
diff --git a/drivers/net/atl1/atl1_main.c b/drivers/net/atl1/atl1_main.c index 9200ee59d854..129b8b3aa773 100644 --- a/drivers/net/atl1/atl1_main.c +++ b/drivers/net/atl1/atl1_main.c | |||
@@ -1765,15 +1765,12 @@ static irqreturn_t atl1_intr(int irq, void *data) | |||
1765 | { | 1765 | { |
1766 | struct atl1_adapter *adapter = netdev_priv(data); | 1766 | struct atl1_adapter *adapter = netdev_priv(data); |
1767 | u32 status; | 1767 | u32 status; |
1768 | u8 update_rx; | ||
1769 | int max_ints = 10; | 1768 | int max_ints = 10; |
1770 | 1769 | ||
1771 | status = adapter->cmb.cmb->int_stats; | 1770 | status = adapter->cmb.cmb->int_stats; |
1772 | if (!status) | 1771 | if (!status) |
1773 | return IRQ_NONE; | 1772 | return IRQ_NONE; |
1774 | 1773 | ||
1775 | update_rx = 0; | ||
1776 | |||
1777 | do { | 1774 | do { |
1778 | /* clear CMB interrupt status at once */ | 1775 | /* clear CMB interrupt status at once */ |
1779 | adapter->cmb.cmb->int_stats = 0; | 1776 | adapter->cmb.cmb->int_stats = 0; |
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index 979f3fc5e765..db586870c5f4 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
@@ -1107,9 +1107,15 @@ int t3_eth_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1107 | } | 1107 | } |
1108 | 1108 | ||
1109 | q->in_use += ndesc; | 1109 | q->in_use += ndesc; |
1110 | if (unlikely(credits - ndesc < q->stop_thres)) | 1110 | if (unlikely(credits - ndesc < q->stop_thres)) { |
1111 | if (USE_GTS || !should_restart_tx(q)) | 1111 | t3_stop_queue(dev, qs, q); |
1112 | t3_stop_queue(dev, qs, q); | 1112 | |
1113 | if (should_restart_tx(q) && | ||
1114 | test_and_clear_bit(TXQ_ETH, &qs->txq_stopped)) { | ||
1115 | q->restarts++; | ||
1116 | netif_wake_queue(dev); | ||
1117 | } | ||
1118 | } | ||
1113 | 1119 | ||
1114 | gen = q->gen; | 1120 | gen = q->gen; |
1115 | q->unacked += ndesc; | 1121 | q->unacked += ndesc; |
diff --git a/drivers/net/epic100.c b/drivers/net/epic100.c index 0b365b8d947b..76118ddd1042 100644 --- a/drivers/net/epic100.c +++ b/drivers/net/epic100.c | |||
@@ -131,8 +131,8 @@ IIIa. Ring buffers | |||
131 | 131 | ||
132 | IVb. References | 132 | IVb. References |
133 | 133 | ||
134 | http://www.smsc.com/main/datasheets/83c171.pdf | 134 | http://www.smsc.com/main/tools/discontinued/83c171.pdf |
135 | http://www.smsc.com/main/datasheets/83c175.pdf | 135 | http://www.smsc.com/main/tools/discontinued/83c175.pdf |
136 | http://scyld.com/expert/NWay.html | 136 | http://scyld.com/expert/NWay.html |
137 | http://www.national.com/pf/DP/DP83840A.html | 137 | http://www.national.com/pf/DP/DP83840A.html |
138 | 138 | ||
@@ -227,7 +227,12 @@ static const u16 media2miictl[16] = { | |||
227 | 0, 0x0C00, 0x0C00, 0x2000, 0x0100, 0x2100, 0, 0, | 227 | 0, 0x0C00, 0x0C00, 0x2000, 0x0100, 0x2100, 0, 0, |
228 | 0, 0, 0, 0, 0, 0, 0, 0 }; | 228 | 0, 0, 0, 0, 0, 0, 0, 0 }; |
229 | 229 | ||
230 | /* The EPIC100 Rx and Tx buffer descriptors. */ | 230 | /* |
231 | * The EPIC100 Rx and Tx buffer descriptors. Note that these | ||
232 | * really ARE host-endian; it's not a misannotation. We tell | ||
233 | * the card to byteswap them internally on big-endian hosts - | ||
234 | * look for #ifdef CONFIG_BIG_ENDIAN in epic_open(). | ||
235 | */ | ||
231 | 236 | ||
232 | struct epic_tx_desc { | 237 | struct epic_tx_desc { |
233 | u32 txstatus; | 238 | u32 txstatus; |
@@ -418,7 +423,7 @@ static int __devinit epic_init_one (struct pci_dev *pdev, | |||
418 | 423 | ||
419 | /* Note: the '175 does not have a serial EEPROM. */ | 424 | /* Note: the '175 does not have a serial EEPROM. */ |
420 | for (i = 0; i < 3; i++) | 425 | for (i = 0; i < 3; i++) |
421 | ((u16 *)dev->dev_addr)[i] = le16_to_cpu(inw(ioaddr + LAN0 + i*4)); | 426 | ((__le16 *)dev->dev_addr)[i] = cpu_to_le16(inw(ioaddr + LAN0 + i*4)); |
422 | 427 | ||
423 | if (debug > 2) { | 428 | if (debug > 2) { |
424 | dev_printk(KERN_DEBUG, &pdev->dev, "EEPROM contents:\n"); | 429 | dev_printk(KERN_DEBUG, &pdev->dev, "EEPROM contents:\n"); |
@@ -682,7 +687,8 @@ static int epic_open(struct net_device *dev) | |||
682 | if (ep->chip_flags & MII_PWRDWN) | 687 | if (ep->chip_flags & MII_PWRDWN) |
683 | outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL); | 688 | outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL); |
684 | 689 | ||
685 | #if defined(__powerpc__) || defined(__sparc__) /* Big endian */ | 690 | /* Tell the chip to byteswap descriptors on big-endian hosts */ |
691 | #ifdef CONFIG_BIG_ENDIAN | ||
686 | outl(0x4432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); | 692 | outl(0x4432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); |
687 | inl(ioaddr + GENCTL); | 693 | inl(ioaddr + GENCTL); |
688 | outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); | 694 | outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); |
@@ -695,7 +701,7 @@ static int epic_open(struct net_device *dev) | |||
695 | udelay(20); /* Looks like EPII needs that if you want reliable RX init. FIXME: pci posting bug? */ | 701 | udelay(20); /* Looks like EPII needs that if you want reliable RX init. FIXME: pci posting bug? */ |
696 | 702 | ||
697 | for (i = 0; i < 3; i++) | 703 | for (i = 0; i < 3; i++) |
698 | outl(cpu_to_le16(((u16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4); | 704 | outl(le16_to_cpu(((__le16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4); |
699 | 705 | ||
700 | ep->tx_threshold = TX_FIFO_THRESH; | 706 | ep->tx_threshold = TX_FIFO_THRESH; |
701 | outl(ep->tx_threshold, ioaddr + TxThresh); | 707 | outl(ep->tx_threshold, ioaddr + TxThresh); |
@@ -798,7 +804,7 @@ static void epic_restart(struct net_device *dev) | |||
798 | for (i = 16; i > 0; i--) | 804 | for (i = 16; i > 0; i--) |
799 | outl(0x0008, ioaddr + TEST1); | 805 | outl(0x0008, ioaddr + TEST1); |
800 | 806 | ||
801 | #if defined(__powerpc__) || defined(__sparc__) /* Big endian */ | 807 | #ifdef CONFIG_BIG_ENDIAN |
802 | outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); | 808 | outl(0x0432 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); |
803 | #else | 809 | #else |
804 | outl(0x0412 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); | 810 | outl(0x0412 | (RX_FIFO_THRESH<<8), ioaddr + GENCTL); |
@@ -808,7 +814,7 @@ static void epic_restart(struct net_device *dev) | |||
808 | outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL); | 814 | outl((inl(ioaddr + NVCTL) & ~0x003C) | 0x4800, ioaddr + NVCTL); |
809 | 815 | ||
810 | for (i = 0; i < 3; i++) | 816 | for (i = 0; i < 3; i++) |
811 | outl(cpu_to_le16(((u16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4); | 817 | outl(le16_to_cpu(((__le16*)dev->dev_addr)[i]), ioaddr + LAN0 + i*4); |
812 | 818 | ||
813 | ep->tx_threshold = TX_FIFO_THRESH; | 819 | ep->tx_threshold = TX_FIFO_THRESH; |
814 | outl(ep->tx_threshold, ioaddr + TxThresh); | 820 | outl(ep->tx_threshold, ioaddr + TxThresh); |
@@ -919,7 +925,7 @@ static void epic_init_ring(struct net_device *dev) | |||
919 | /* Initialize all Rx descriptors. */ | 925 | /* Initialize all Rx descriptors. */ |
920 | for (i = 0; i < RX_RING_SIZE; i++) { | 926 | for (i = 0; i < RX_RING_SIZE; i++) { |
921 | ep->rx_ring[i].rxstatus = 0; | 927 | ep->rx_ring[i].rxstatus = 0; |
922 | ep->rx_ring[i].buflength = cpu_to_le32(ep->rx_buf_sz); | 928 | ep->rx_ring[i].buflength = ep->rx_buf_sz; |
923 | ep->rx_ring[i].next = ep->rx_ring_dma + | 929 | ep->rx_ring[i].next = ep->rx_ring_dma + |
924 | (i+1)*sizeof(struct epic_rx_desc); | 930 | (i+1)*sizeof(struct epic_rx_desc); |
925 | ep->rx_skbuff[i] = NULL; | 931 | ep->rx_skbuff[i] = NULL; |
@@ -936,7 +942,7 @@ static void epic_init_ring(struct net_device *dev) | |||
936 | skb_reserve(skb, 2); /* 16 byte align the IP header. */ | 942 | skb_reserve(skb, 2); /* 16 byte align the IP header. */ |
937 | ep->rx_ring[i].bufaddr = pci_map_single(ep->pci_dev, | 943 | ep->rx_ring[i].bufaddr = pci_map_single(ep->pci_dev, |
938 | skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE); | 944 | skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE); |
939 | ep->rx_ring[i].rxstatus = cpu_to_le32(DescOwn); | 945 | ep->rx_ring[i].rxstatus = DescOwn; |
940 | } | 946 | } |
941 | ep->dirty_rx = (unsigned int)(i - RX_RING_SIZE); | 947 | ep->dirty_rx = (unsigned int)(i - RX_RING_SIZE); |
942 | 948 | ||
@@ -974,20 +980,20 @@ static int epic_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
974 | ep->tx_ring[entry].bufaddr = pci_map_single(ep->pci_dev, skb->data, | 980 | ep->tx_ring[entry].bufaddr = pci_map_single(ep->pci_dev, skb->data, |
975 | skb->len, PCI_DMA_TODEVICE); | 981 | skb->len, PCI_DMA_TODEVICE); |
976 | if (free_count < TX_QUEUE_LEN/2) {/* Typical path */ | 982 | if (free_count < TX_QUEUE_LEN/2) {/* Typical path */ |
977 | ctrl_word = cpu_to_le32(0x100000); /* No interrupt */ | 983 | ctrl_word = 0x100000; /* No interrupt */ |
978 | } else if (free_count == TX_QUEUE_LEN/2) { | 984 | } else if (free_count == TX_QUEUE_LEN/2) { |
979 | ctrl_word = cpu_to_le32(0x140000); /* Tx-done intr. */ | 985 | ctrl_word = 0x140000; /* Tx-done intr. */ |
980 | } else if (free_count < TX_QUEUE_LEN - 1) { | 986 | } else if (free_count < TX_QUEUE_LEN - 1) { |
981 | ctrl_word = cpu_to_le32(0x100000); /* No Tx-done intr. */ | 987 | ctrl_word = 0x100000; /* No Tx-done intr. */ |
982 | } else { | 988 | } else { |
983 | /* Leave room for an additional entry. */ | 989 | /* Leave room for an additional entry. */ |
984 | ctrl_word = cpu_to_le32(0x140000); /* Tx-done intr. */ | 990 | ctrl_word = 0x140000; /* Tx-done intr. */ |
985 | ep->tx_full = 1; | 991 | ep->tx_full = 1; |
986 | } | 992 | } |
987 | ep->tx_ring[entry].buflength = ctrl_word | cpu_to_le32(skb->len); | 993 | ep->tx_ring[entry].buflength = ctrl_word | skb->len; |
988 | ep->tx_ring[entry].txstatus = | 994 | ep->tx_ring[entry].txstatus = |
989 | ((skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN) << 16) | 995 | ((skb->len >= ETH_ZLEN ? skb->len : ETH_ZLEN) << 16) |
990 | | cpu_to_le32(DescOwn); | 996 | | DescOwn; |
991 | 997 | ||
992 | ep->cur_tx++; | 998 | ep->cur_tx++; |
993 | if (ep->tx_full) | 999 | if (ep->tx_full) |
@@ -1041,7 +1047,7 @@ static void epic_tx(struct net_device *dev, struct epic_private *ep) | |||
1041 | for (dirty_tx = ep->dirty_tx; cur_tx - dirty_tx > 0; dirty_tx++) { | 1047 | for (dirty_tx = ep->dirty_tx; cur_tx - dirty_tx > 0; dirty_tx++) { |
1042 | struct sk_buff *skb; | 1048 | struct sk_buff *skb; |
1043 | int entry = dirty_tx % TX_RING_SIZE; | 1049 | int entry = dirty_tx % TX_RING_SIZE; |
1044 | int txstatus = le32_to_cpu(ep->tx_ring[entry].txstatus); | 1050 | int txstatus = ep->tx_ring[entry].txstatus; |
1045 | 1051 | ||
1046 | if (txstatus & DescOwn) | 1052 | if (txstatus & DescOwn) |
1047 | break; /* It still hasn't been Txed */ | 1053 | break; /* It still hasn't been Txed */ |
@@ -1163,8 +1169,8 @@ static int epic_rx(struct net_device *dev, int budget) | |||
1163 | rx_work_limit = budget; | 1169 | rx_work_limit = budget; |
1164 | 1170 | ||
1165 | /* If we own the next entry, it's a new packet. Send it up. */ | 1171 | /* If we own the next entry, it's a new packet. Send it up. */ |
1166 | while ((ep->rx_ring[entry].rxstatus & cpu_to_le32(DescOwn)) == 0) { | 1172 | while ((ep->rx_ring[entry].rxstatus & DescOwn) == 0) { |
1167 | int status = le32_to_cpu(ep->rx_ring[entry].rxstatus); | 1173 | int status = ep->rx_ring[entry].rxstatus; |
1168 | 1174 | ||
1169 | if (debug > 4) | 1175 | if (debug > 4) |
1170 | printk(KERN_DEBUG " epic_rx() status was %8.8x.\n", status); | 1176 | printk(KERN_DEBUG " epic_rx() status was %8.8x.\n", status); |
@@ -1238,7 +1244,8 @@ static int epic_rx(struct net_device *dev, int budget) | |||
1238 | skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE); | 1244 | skb->data, ep->rx_buf_sz, PCI_DMA_FROMDEVICE); |
1239 | work_done++; | 1245 | work_done++; |
1240 | } | 1246 | } |
1241 | ep->rx_ring[entry].rxstatus = cpu_to_le32(DescOwn); | 1247 | /* AV: shouldn't we add a barrier here? */ |
1248 | ep->rx_ring[entry].rxstatus = DescOwn; | ||
1242 | } | 1249 | } |
1243 | return work_done; | 1250 | return work_done; |
1244 | } | 1251 | } |
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index 801b4d9cd972..6f7e3fde9e7c 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -184,6 +184,7 @@ | |||
184 | #define DEV_HAS_PAUSEFRAME_TX_V1 0x08000 /* device supports tx pause frames version 1 */ | 184 | #define DEV_HAS_PAUSEFRAME_TX_V1 0x08000 /* device supports tx pause frames version 1 */ |
185 | #define DEV_HAS_PAUSEFRAME_TX_V2 0x10000 /* device supports tx pause frames version 2 */ | 185 | #define DEV_HAS_PAUSEFRAME_TX_V2 0x10000 /* device supports tx pause frames version 2 */ |
186 | #define DEV_HAS_PAUSEFRAME_TX_V3 0x20000 /* device supports tx pause frames version 3 */ | 186 | #define DEV_HAS_PAUSEFRAME_TX_V3 0x20000 /* device supports tx pause frames version 3 */ |
187 | #define DEV_NEED_TX_LIMIT 0x40000 /* device needs to limit tx */ | ||
187 | 188 | ||
188 | enum { | 189 | enum { |
189 | NvRegIrqStatus = 0x000, | 190 | NvRegIrqStatus = 0x000, |
@@ -635,6 +636,8 @@ union ring_type { | |||
635 | #define NV_RESTART_TX 0x1 | 636 | #define NV_RESTART_TX 0x1 |
636 | #define NV_RESTART_RX 0x2 | 637 | #define NV_RESTART_RX 0x2 |
637 | 638 | ||
639 | #define NV_TX_LIMIT_COUNT 16 | ||
640 | |||
638 | /* statistics */ | 641 | /* statistics */ |
639 | struct nv_ethtool_str { | 642 | struct nv_ethtool_str { |
640 | char name[ETH_GSTRING_LEN]; | 643 | char name[ETH_GSTRING_LEN]; |
@@ -743,6 +746,8 @@ struct nv_skb_map { | |||
743 | struct sk_buff *skb; | 746 | struct sk_buff *skb; |
744 | dma_addr_t dma; | 747 | dma_addr_t dma; |
745 | unsigned int dma_len; | 748 | unsigned int dma_len; |
749 | struct ring_desc_ex *first_tx_desc; | ||
750 | struct nv_skb_map *next_tx_ctx; | ||
746 | }; | 751 | }; |
747 | 752 | ||
748 | /* | 753 | /* |
@@ -827,6 +832,10 @@ struct fe_priv { | |||
827 | union ring_type tx_ring; | 832 | union ring_type tx_ring; |
828 | u32 tx_flags; | 833 | u32 tx_flags; |
829 | int tx_ring_size; | 834 | int tx_ring_size; |
835 | int tx_limit; | ||
836 | u32 tx_pkts_in_progress; | ||
837 | struct nv_skb_map *tx_change_owner; | ||
838 | struct nv_skb_map *tx_end_flip; | ||
830 | int tx_stop; | 839 | int tx_stop; |
831 | 840 | ||
832 | /* vlan fields */ | 841 | /* vlan fields */ |
@@ -1707,6 +1716,9 @@ static void nv_init_tx(struct net_device *dev) | |||
1707 | np->last_tx.ex = &np->tx_ring.ex[np->tx_ring_size-1]; | 1716 | np->last_tx.ex = &np->tx_ring.ex[np->tx_ring_size-1]; |
1708 | np->get_tx_ctx = np->put_tx_ctx = np->first_tx_ctx = np->tx_skb; | 1717 | np->get_tx_ctx = np->put_tx_ctx = np->first_tx_ctx = np->tx_skb; |
1709 | np->last_tx_ctx = &np->tx_skb[np->tx_ring_size-1]; | 1718 | np->last_tx_ctx = &np->tx_skb[np->tx_ring_size-1]; |
1719 | np->tx_pkts_in_progress = 0; | ||
1720 | np->tx_change_owner = NULL; | ||
1721 | np->tx_end_flip = NULL; | ||
1710 | 1722 | ||
1711 | for (i = 0; i < np->tx_ring_size; i++) { | 1723 | for (i = 0; i < np->tx_ring_size; i++) { |
1712 | if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { | 1724 | if (np->desc_ver == DESC_VER_1 || np->desc_ver == DESC_VER_2) { |
@@ -1720,6 +1732,9 @@ static void nv_init_tx(struct net_device *dev) | |||
1720 | } | 1732 | } |
1721 | np->tx_skb[i].skb = NULL; | 1733 | np->tx_skb[i].skb = NULL; |
1722 | np->tx_skb[i].dma = 0; | 1734 | np->tx_skb[i].dma = 0; |
1735 | np->tx_skb[i].dma_len = 0; | ||
1736 | np->tx_skb[i].first_tx_desc = NULL; | ||
1737 | np->tx_skb[i].next_tx_ctx = NULL; | ||
1723 | } | 1738 | } |
1724 | } | 1739 | } |
1725 | 1740 | ||
@@ -1771,7 +1786,14 @@ static void nv_drain_tx(struct net_device *dev) | |||
1771 | } | 1786 | } |
1772 | if (nv_release_txskb(dev, &np->tx_skb[i])) | 1787 | if (nv_release_txskb(dev, &np->tx_skb[i])) |
1773 | dev->stats.tx_dropped++; | 1788 | dev->stats.tx_dropped++; |
1789 | np->tx_skb[i].dma = 0; | ||
1790 | np->tx_skb[i].dma_len = 0; | ||
1791 | np->tx_skb[i].first_tx_desc = NULL; | ||
1792 | np->tx_skb[i].next_tx_ctx = NULL; | ||
1774 | } | 1793 | } |
1794 | np->tx_pkts_in_progress = 0; | ||
1795 | np->tx_change_owner = NULL; | ||
1796 | np->tx_end_flip = NULL; | ||
1775 | } | 1797 | } |
1776 | 1798 | ||
1777 | static void nv_drain_rx(struct net_device *dev) | 1799 | static void nv_drain_rx(struct net_device *dev) |
@@ -1948,6 +1970,7 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
1948 | struct ring_desc_ex* start_tx; | 1970 | struct ring_desc_ex* start_tx; |
1949 | struct ring_desc_ex* prev_tx; | 1971 | struct ring_desc_ex* prev_tx; |
1950 | struct nv_skb_map* prev_tx_ctx; | 1972 | struct nv_skb_map* prev_tx_ctx; |
1973 | struct nv_skb_map* start_tx_ctx; | ||
1951 | 1974 | ||
1952 | /* add fragments to entries count */ | 1975 | /* add fragments to entries count */ |
1953 | for (i = 0; i < fragments; i++) { | 1976 | for (i = 0; i < fragments; i++) { |
@@ -1965,6 +1988,7 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
1965 | } | 1988 | } |
1966 | 1989 | ||
1967 | start_tx = put_tx = np->put_tx.ex; | 1990 | start_tx = put_tx = np->put_tx.ex; |
1991 | start_tx_ctx = np->put_tx_ctx; | ||
1968 | 1992 | ||
1969 | /* setup the header buffer */ | 1993 | /* setup the header buffer */ |
1970 | do { | 1994 | do { |
@@ -2037,6 +2061,26 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
2037 | 2061 | ||
2038 | spin_lock_irq(&np->lock); | 2062 | spin_lock_irq(&np->lock); |
2039 | 2063 | ||
2064 | if (np->tx_limit) { | ||
2065 | /* Limit the number of outstanding tx. Setup all fragments, but | ||
2066 | * do not set the VALID bit on the first descriptor. Save a pointer | ||
2067 | * to that descriptor and also for next skb_map element. | ||
2068 | */ | ||
2069 | |||
2070 | if (np->tx_pkts_in_progress == NV_TX_LIMIT_COUNT) { | ||
2071 | if (!np->tx_change_owner) | ||
2072 | np->tx_change_owner = start_tx_ctx; | ||
2073 | |||
2074 | /* remove VALID bit */ | ||
2075 | tx_flags &= ~NV_TX2_VALID; | ||
2076 | start_tx_ctx->first_tx_desc = start_tx; | ||
2077 | start_tx_ctx->next_tx_ctx = np->put_tx_ctx; | ||
2078 | np->tx_end_flip = np->put_tx_ctx; | ||
2079 | } else { | ||
2080 | np->tx_pkts_in_progress++; | ||
2081 | } | ||
2082 | } | ||
2083 | |||
2040 | /* set tx flags */ | 2084 | /* set tx flags */ |
2041 | start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra); | 2085 | start_tx->flaglen |= cpu_to_le32(tx_flags | tx_flags_extra); |
2042 | np->put_tx.ex = put_tx; | 2086 | np->put_tx.ex = put_tx; |
@@ -2060,6 +2104,25 @@ static int nv_start_xmit_optimized(struct sk_buff *skb, struct net_device *dev) | |||
2060 | return NETDEV_TX_OK; | 2104 | return NETDEV_TX_OK; |
2061 | } | 2105 | } |
2062 | 2106 | ||
2107 | static inline void nv_tx_flip_ownership(struct net_device *dev) | ||
2108 | { | ||
2109 | struct fe_priv *np = netdev_priv(dev); | ||
2110 | |||
2111 | np->tx_pkts_in_progress--; | ||
2112 | if (np->tx_change_owner) { | ||
2113 | __le32 flaglen = le32_to_cpu(np->tx_change_owner->first_tx_desc->flaglen); | ||
2114 | flaglen |= NV_TX2_VALID; | ||
2115 | np->tx_change_owner->first_tx_desc->flaglen = cpu_to_le32(flaglen); | ||
2116 | np->tx_pkts_in_progress++; | ||
2117 | |||
2118 | np->tx_change_owner = np->tx_change_owner->next_tx_ctx; | ||
2119 | if (np->tx_change_owner == np->tx_end_flip) | ||
2120 | np->tx_change_owner = NULL; | ||
2121 | |||
2122 | writel(NVREG_TXRXCTL_KICK|np->txrxctl_bits, get_hwbase(dev) + NvRegTxRxControl); | ||
2123 | } | ||
2124 | } | ||
2125 | |||
2063 | /* | 2126 | /* |
2064 | * nv_tx_done: check for completed packets, release the skbs. | 2127 | * nv_tx_done: check for completed packets, release the skbs. |
2065 | * | 2128 | * |
@@ -2147,6 +2210,10 @@ static void nv_tx_done_optimized(struct net_device *dev, int limit) | |||
2147 | dev->stats.tx_packets++; | 2210 | dev->stats.tx_packets++; |
2148 | dev_kfree_skb_any(np->get_tx_ctx->skb); | 2211 | dev_kfree_skb_any(np->get_tx_ctx->skb); |
2149 | np->get_tx_ctx->skb = NULL; | 2212 | np->get_tx_ctx->skb = NULL; |
2213 | |||
2214 | if (np->tx_limit) { | ||
2215 | nv_tx_flip_ownership(dev); | ||
2216 | } | ||
2150 | } | 2217 | } |
2151 | if (unlikely(np->get_tx.ex++ == np->last_tx.ex)) | 2218 | if (unlikely(np->get_tx.ex++ == np->last_tx.ex)) |
2152 | np->get_tx.ex = np->first_tx.ex; | 2219 | np->get_tx.ex = np->first_tx.ex; |
@@ -5333,6 +5400,21 @@ static int __devinit nv_probe(struct pci_dev *pci_dev, const struct pci_device_i | |||
5333 | np->need_linktimer = 0; | 5400 | np->need_linktimer = 0; |
5334 | } | 5401 | } |
5335 | 5402 | ||
5403 | /* Limit the number of tx's outstanding for hw bug */ | ||
5404 | if (id->driver_data & DEV_NEED_TX_LIMIT) { | ||
5405 | np->tx_limit = 1; | ||
5406 | if ((id->device == PCI_DEVICE_ID_NVIDIA_NVENET_32 || | ||
5407 | id->device == PCI_DEVICE_ID_NVIDIA_NVENET_33 || | ||
5408 | id->device == PCI_DEVICE_ID_NVIDIA_NVENET_34 || | ||
5409 | id->device == PCI_DEVICE_ID_NVIDIA_NVENET_35 || | ||
5410 | id->device == PCI_DEVICE_ID_NVIDIA_NVENET_36 || | ||
5411 | id->device == PCI_DEVICE_ID_NVIDIA_NVENET_37 || | ||
5412 | id->device == PCI_DEVICE_ID_NVIDIA_NVENET_38 || | ||
5413 | id->device == PCI_DEVICE_ID_NVIDIA_NVENET_39) && | ||
5414 | pci_dev->revision >= 0xA2) | ||
5415 | np->tx_limit = 0; | ||
5416 | } | ||
5417 | |||
5336 | /* clear phy state and temporarily halt phy interrupts */ | 5418 | /* clear phy state and temporarily halt phy interrupts */ |
5337 | writel(0, base + NvRegMIIMask); | 5419 | writel(0, base + NvRegMIIMask); |
5338 | phystate = readl(base + NvRegAdapterControl); | 5420 | phystate = readl(base + NvRegAdapterControl); |
@@ -5563,19 +5645,19 @@ static struct pci_device_id pci_tbl[] = { | |||
5563 | }, | 5645 | }, |
5564 | { /* CK804 Ethernet Controller */ | 5646 | { /* CK804 Ethernet Controller */ |
5565 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_8), | 5647 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_8), |
5566 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, | 5648 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT, |
5567 | }, | 5649 | }, |
5568 | { /* CK804 Ethernet Controller */ | 5650 | { /* CK804 Ethernet Controller */ |
5569 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_9), | 5651 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_9), |
5570 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, | 5652 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT, |
5571 | }, | 5653 | }, |
5572 | { /* MCP04 Ethernet Controller */ | 5654 | { /* MCP04 Ethernet Controller */ |
5573 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_10), | 5655 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_10), |
5574 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, | 5656 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT, |
5575 | }, | 5657 | }, |
5576 | { /* MCP04 Ethernet Controller */ | 5658 | { /* MCP04 Ethernet Controller */ |
5577 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_11), | 5659 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_11), |
5578 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1, | 5660 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_STATISTICS_V1|DEV_NEED_TX_LIMIT, |
5579 | }, | 5661 | }, |
5580 | { /* MCP51 Ethernet Controller */ | 5662 | { /* MCP51 Ethernet Controller */ |
5581 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_12), | 5663 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_12), |
@@ -5587,11 +5669,11 @@ static struct pci_device_id pci_tbl[] = { | |||
5587 | }, | 5669 | }, |
5588 | { /* MCP55 Ethernet Controller */ | 5670 | { /* MCP55 Ethernet Controller */ |
5589 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_14), | 5671 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_14), |
5590 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT, | 5672 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_NEED_TX_LIMIT, |
5591 | }, | 5673 | }, |
5592 | { /* MCP55 Ethernet Controller */ | 5674 | { /* MCP55 Ethernet Controller */ |
5593 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_15), | 5675 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_15), |
5594 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT, | 5676 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_VLAN|DEV_HAS_MSI|DEV_HAS_MSI_X|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_NEED_TX_LIMIT, |
5595 | }, | 5677 | }, |
5596 | { /* MCP61 Ethernet Controller */ | 5678 | { /* MCP61 Ethernet Controller */ |
5597 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_16), | 5679 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_16), |
@@ -5611,19 +5693,19 @@ static struct pci_device_id pci_tbl[] = { | |||
5611 | }, | 5693 | }, |
5612 | { /* MCP65 Ethernet Controller */ | 5694 | { /* MCP65 Ethernet Controller */ |
5613 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_20), | 5695 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_20), |
5614 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, | 5696 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT|DEV_NEED_TX_LIMIT, |
5615 | }, | 5697 | }, |
5616 | { /* MCP65 Ethernet Controller */ | 5698 | { /* MCP65 Ethernet Controller */ |
5617 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_21), | 5699 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_21), |
5618 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, | 5700 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT, |
5619 | }, | 5701 | }, |
5620 | { /* MCP65 Ethernet Controller */ | 5702 | { /* MCP65 Ethernet Controller */ |
5621 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_22), | 5703 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_22), |
5622 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, | 5704 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT, |
5623 | }, | 5705 | }, |
5624 | { /* MCP65 Ethernet Controller */ | 5706 | { /* MCP65 Ethernet Controller */ |
5625 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_23), | 5707 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_23), |
5626 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR, | 5708 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_LARGEDESC|DEV_HAS_HIGH_DMA|DEV_HAS_POWER_CNTRL|DEV_HAS_MSI|DEV_HAS_PAUSEFRAME_TX_V1|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_NEED_TX_LIMIT, |
5627 | }, | 5709 | }, |
5628 | { /* MCP67 Ethernet Controller */ | 5710 | { /* MCP67 Ethernet Controller */ |
5629 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_24), | 5711 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_24), |
@@ -5659,35 +5741,35 @@ static struct pci_device_id pci_tbl[] = { | |||
5659 | }, | 5741 | }, |
5660 | { /* MCP77 Ethernet Controller */ | 5742 | { /* MCP77 Ethernet Controller */ |
5661 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_32), | 5743 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_32), |
5662 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5744 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5663 | }, | 5745 | }, |
5664 | { /* MCP77 Ethernet Controller */ | 5746 | { /* MCP77 Ethernet Controller */ |
5665 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_33), | 5747 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_33), |
5666 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5748 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5667 | }, | 5749 | }, |
5668 | { /* MCP77 Ethernet Controller */ | 5750 | { /* MCP77 Ethernet Controller */ |
5669 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_34), | 5751 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_34), |
5670 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5752 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5671 | }, | 5753 | }, |
5672 | { /* MCP77 Ethernet Controller */ | 5754 | { /* MCP77 Ethernet Controller */ |
5673 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_35), | 5755 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_35), |
5674 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5756 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V2|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5675 | }, | 5757 | }, |
5676 | { /* MCP79 Ethernet Controller */ | 5758 | { /* MCP79 Ethernet Controller */ |
5677 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_36), | 5759 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_36), |
5678 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5760 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5679 | }, | 5761 | }, |
5680 | { /* MCP79 Ethernet Controller */ | 5762 | { /* MCP79 Ethernet Controller */ |
5681 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_37), | 5763 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_37), |
5682 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5764 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5683 | }, | 5765 | }, |
5684 | { /* MCP79 Ethernet Controller */ | 5766 | { /* MCP79 Ethernet Controller */ |
5685 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_38), | 5767 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_38), |
5686 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5768 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5687 | }, | 5769 | }, |
5688 | { /* MCP79 Ethernet Controller */ | 5770 | { /* MCP79 Ethernet Controller */ |
5689 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_39), | 5771 | PCI_DEVICE(PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NVENET_39), |
5690 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX, | 5772 | .driver_data = DEV_NEED_TIMERIRQ|DEV_NEED_LINKTIMER|DEV_HAS_CHECKSUM|DEV_HAS_HIGH_DMA|DEV_HAS_MSI|DEV_HAS_POWER_CNTRL|DEV_HAS_PAUSEFRAME_TX_V3|DEV_HAS_STATISTICS_V2|DEV_HAS_TEST_EXTENDED|DEV_HAS_MGMT_UNIT|DEV_HAS_CORRECT_MACADDR|DEV_HAS_COLLISION_FIX|DEV_NEED_TX_LIMIT, |
5691 | }, | 5773 | }, |
5692 | {0,}, | 5774 | {0,}, |
5693 | }; | 5775 | }; |
diff --git a/drivers/net/ibm_newemac/core.c b/drivers/net/ibm_newemac/core.c index e6c69f77259b..0789802d59ed 100644 --- a/drivers/net/ibm_newemac/core.c +++ b/drivers/net/ibm_newemac/core.c | |||
@@ -143,6 +143,10 @@ static inline void emac_report_timeout_error(struct emac_instance *dev, | |||
143 | #define STOP_TIMEOUT_1000 13 | 143 | #define STOP_TIMEOUT_1000 13 |
144 | #define STOP_TIMEOUT_1000_JUMBO 73 | 144 | #define STOP_TIMEOUT_1000_JUMBO 73 |
145 | 145 | ||
146 | static unsigned char default_mcast_addr[] = { | ||
147 | 0x01, 0x80, 0xC2, 0x00, 0x00, 0x01 | ||
148 | }; | ||
149 | |||
146 | /* Please, keep in sync with struct ibm_emac_stats/ibm_emac_error_stats */ | 150 | /* Please, keep in sync with struct ibm_emac_stats/ibm_emac_error_stats */ |
147 | static const char emac_stats_keys[EMAC_ETHTOOL_STATS_COUNT][ETH_GSTRING_LEN] = { | 151 | static const char emac_stats_keys[EMAC_ETHTOOL_STATS_COUNT][ETH_GSTRING_LEN] = { |
148 | "rx_packets", "rx_bytes", "tx_packets", "tx_bytes", "rx_packets_csum", | 152 | "rx_packets", "rx_bytes", "tx_packets", "tx_bytes", "rx_packets_csum", |
@@ -618,6 +622,9 @@ static int emac_configure(struct emac_instance *dev) | |||
618 | if (emac_phy_gpcs(dev->phy.mode)) | 622 | if (emac_phy_gpcs(dev->phy.mode)) |
619 | emac_mii_reset_phy(&dev->phy); | 623 | emac_mii_reset_phy(&dev->phy); |
620 | 624 | ||
625 | /* Required for Pause packet support in EMAC */ | ||
626 | dev_mc_add(ndev, default_mcast_addr, sizeof(default_mcast_addr), 1); | ||
627 | |||
621 | return 0; | 628 | return 0; |
622 | } | 629 | } |
623 | 630 | ||
diff --git a/drivers/net/ibm_newemac/tah.c b/drivers/net/ibm_newemac/tah.c index 96417adec326..b023d10d7e1c 100644 --- a/drivers/net/ibm_newemac/tah.c +++ b/drivers/net/ibm_newemac/tah.c | |||
@@ -155,6 +155,10 @@ static int __devexit tah_remove(struct of_device *ofdev) | |||
155 | static struct of_device_id tah_match[] = | 155 | static struct of_device_id tah_match[] = |
156 | { | 156 | { |
157 | { | 157 | { |
158 | .compatible = "ibm,tah", | ||
159 | }, | ||
160 | /* For backward compat with old DT */ | ||
161 | { | ||
158 | .type = "tah", | 162 | .type = "tah", |
159 | }, | 163 | }, |
160 | {}, | 164 | {}, |
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c index 15949d3df17e..af233b591534 100644 --- a/drivers/net/ifb.c +++ b/drivers/net/ifb.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/moduleparam.h> | 35 | #include <linux/moduleparam.h> |
36 | #include <net/pkt_sched.h> | 36 | #include <net/pkt_sched.h> |
37 | #include <net/net_namespace.h> | 37 | #include <net/net_namespace.h> |
38 | #include <linux/lockdep.h> | ||
38 | 39 | ||
39 | #define TX_TIMEOUT (2*HZ) | 40 | #define TX_TIMEOUT (2*HZ) |
40 | 41 | ||
@@ -227,6 +228,16 @@ static struct rtnl_link_ops ifb_link_ops __read_mostly = { | |||
227 | module_param(numifbs, int, 0); | 228 | module_param(numifbs, int, 0); |
228 | MODULE_PARM_DESC(numifbs, "Number of ifb devices"); | 229 | MODULE_PARM_DESC(numifbs, "Number of ifb devices"); |
229 | 230 | ||
231 | /* | ||
232 | * dev_ifb->queue_lock is usually taken after dev->ingress_lock, | ||
233 | * reversely to e.g. qdisc_lock_tree(). It should be safe until | ||
234 | * ifb doesn't take dev->queue_lock with dev_ifb->ingress_lock. | ||
235 | * But lockdep should know that ifb has different locks from dev. | ||
236 | */ | ||
237 | static struct lock_class_key ifb_queue_lock_key; | ||
238 | static struct lock_class_key ifb_ingress_lock_key; | ||
239 | |||
240 | |||
230 | static int __init ifb_init_one(int index) | 241 | static int __init ifb_init_one(int index) |
231 | { | 242 | { |
232 | struct net_device *dev_ifb; | 243 | struct net_device *dev_ifb; |
@@ -246,6 +257,10 @@ static int __init ifb_init_one(int index) | |||
246 | err = register_netdevice(dev_ifb); | 257 | err = register_netdevice(dev_ifb); |
247 | if (err < 0) | 258 | if (err < 0) |
248 | goto err; | 259 | goto err; |
260 | |||
261 | lockdep_set_class(&dev_ifb->queue_lock, &ifb_queue_lock_key); | ||
262 | lockdep_set_class(&dev_ifb->ingress_lock, &ifb_ingress_lock_key); | ||
263 | |||
249 | return 0; | 264 | return 0; |
250 | 265 | ||
251 | err: | 266 | err: |
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c index 6a1f23092099..928ce8287e69 100644 --- a/drivers/net/igb/igb_main.c +++ b/drivers/net/igb/igb_main.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/vmalloc.h> | 31 | #include <linux/vmalloc.h> |
32 | #include <linux/pagemap.h> | 32 | #include <linux/pagemap.h> |
33 | #include <linux/netdevice.h> | 33 | #include <linux/netdevice.h> |
34 | #include <linux/tcp.h> | ||
35 | #include <linux/ipv6.h> | 34 | #include <linux/ipv6.h> |
36 | #include <net/checksum.h> | 35 | #include <net/checksum.h> |
37 | #include <net/ip6_checksum.h> | 36 | #include <net/ip6_checksum.h> |
@@ -2484,10 +2483,24 @@ static inline bool igb_tx_csum_adv(struct igb_adapter *adapter, | |||
2484 | tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT); | 2483 | tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT); |
2485 | 2484 | ||
2486 | if (skb->ip_summed == CHECKSUM_PARTIAL) { | 2485 | if (skb->ip_summed == CHECKSUM_PARTIAL) { |
2487 | if (skb->protocol == htons(ETH_P_IP)) | 2486 | switch (skb->protocol) { |
2487 | case __constant_htons(ETH_P_IP): | ||
2488 | tu_cmd |= E1000_ADVTXD_TUCMD_IPV4; | 2488 | tu_cmd |= E1000_ADVTXD_TUCMD_IPV4; |
2489 | if (skb->sk && (skb->sk->sk_protocol == IPPROTO_TCP)) | 2489 | if (ip_hdr(skb)->protocol == IPPROTO_TCP) |
2490 | tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP; | 2490 | tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP; |
2491 | break; | ||
2492 | case __constant_htons(ETH_P_IPV6): | ||
2493 | /* XXX what about other V6 headers?? */ | ||
2494 | if (ipv6_hdr(skb)->nexthdr == IPPROTO_TCP) | ||
2495 | tu_cmd |= E1000_ADVTXD_TUCMD_L4T_TCP; | ||
2496 | break; | ||
2497 | default: | ||
2498 | if (unlikely(net_ratelimit())) | ||
2499 | dev_warn(&adapter->pdev->dev, | ||
2500 | "partial checksum but proto=%x!\n", | ||
2501 | skb->protocol); | ||
2502 | break; | ||
2503 | } | ||
2491 | } | 2504 | } |
2492 | 2505 | ||
2493 | context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd); | 2506 | context_desc->type_tucmd_mlhl = cpu_to_le32(tu_cmd); |
diff --git a/drivers/net/ioc3-eth.c b/drivers/net/ioc3-eth.c index 373f72cdbe8e..1f25263dc7eb 100644 --- a/drivers/net/ioc3-eth.c +++ b/drivers/net/ioc3-eth.c | |||
@@ -1221,7 +1221,8 @@ static void __devinit ioc3_serial_probe(struct pci_dev *pdev, struct ioc3 *ioc3) | |||
1221 | } | 1221 | } |
1222 | #endif | 1222 | #endif |
1223 | 1223 | ||
1224 | static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | 1224 | static int __devinit ioc3_probe(struct pci_dev *pdev, |
1225 | const struct pci_device_id *ent) | ||
1225 | { | 1226 | { |
1226 | unsigned int sw_physid1, sw_physid2; | 1227 | unsigned int sw_physid1, sw_physid2; |
1227 | struct net_device *dev = NULL; | 1228 | struct net_device *dev = NULL; |
diff --git a/drivers/net/ipg.c b/drivers/net/ipg.c index 5e5d9b527ed1..9b358f61ed7f 100644 --- a/drivers/net/ipg.c +++ b/drivers/net/ipg.c | |||
@@ -472,7 +472,6 @@ static int ipg_config_autoneg(struct net_device *dev) | |||
472 | unsigned int txflowcontrol; | 472 | unsigned int txflowcontrol; |
473 | unsigned int rxflowcontrol; | 473 | unsigned int rxflowcontrol; |
474 | unsigned int fullduplex; | 474 | unsigned int fullduplex; |
475 | unsigned int gig; | ||
476 | u32 mac_ctrl_val; | 475 | u32 mac_ctrl_val; |
477 | u32 asicctrl; | 476 | u32 asicctrl; |
478 | u8 phyctrl; | 477 | u8 phyctrl; |
@@ -489,7 +488,6 @@ static int ipg_config_autoneg(struct net_device *dev) | |||
489 | fullduplex = 0; | 488 | fullduplex = 0; |
490 | txflowcontrol = 0; | 489 | txflowcontrol = 0; |
491 | rxflowcontrol = 0; | 490 | rxflowcontrol = 0; |
492 | gig = 0; | ||
493 | 491 | ||
494 | /* To accomodate a problem in 10Mbps operation, | 492 | /* To accomodate a problem in 10Mbps operation, |
495 | * set a global flag if PHY running in 10Mbps mode. | 493 | * set a global flag if PHY running in 10Mbps mode. |
@@ -511,7 +509,6 @@ static int ipg_config_autoneg(struct net_device *dev) | |||
511 | break; | 509 | break; |
512 | case IPG_PC_LINK_SPEED_1000MBPS: | 510 | case IPG_PC_LINK_SPEED_1000MBPS: |
513 | printk("1000Mbps.\n"); | 511 | printk("1000Mbps.\n"); |
514 | gig = 1; | ||
515 | break; | 512 | break; |
516 | default: | 513 | default: |
517 | printk("undefined!\n"); | 514 | printk("undefined!\n"); |
@@ -1900,8 +1897,13 @@ static int ipg_nic_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1900 | 1897 | ||
1901 | /* Specify the TFC field within the TFD. */ | 1898 | /* Specify the TFC field within the TFD. */ |
1902 | txfd->tfc |= cpu_to_le64(IPG_TFC_WORDALIGNDISABLED | | 1899 | txfd->tfc |= cpu_to_le64(IPG_TFC_WORDALIGNDISABLED | |
1903 | (IPG_TFC_FRAMEID & cpu_to_le64(sp->tx_current)) | | 1900 | (IPG_TFC_FRAMEID & sp->tx_current) | |
1904 | (IPG_TFC_FRAGCOUNT & (1 << 24))); | 1901 | (IPG_TFC_FRAGCOUNT & (1 << 24))); |
1902 | /* | ||
1903 | * 16--17 (WordAlign) <- 3 (disable), | ||
1904 | * 0--15 (FrameId) <- sp->tx_current, | ||
1905 | * 24--27 (FragCount) <- 1 | ||
1906 | */ | ||
1905 | 1907 | ||
1906 | /* Request TxComplete interrupts at an interval defined | 1908 | /* Request TxComplete interrupts at an interval defined |
1907 | * by the constant IPG_FRAMESBETWEENTXCOMPLETES. | 1909 | * by the constant IPG_FRAMESBETWEENTXCOMPLETES. |
diff --git a/drivers/net/ne2k-pci.c b/drivers/net/ne2k-pci.c index b569c90da4ba..de0de744a8fa 100644 --- a/drivers/net/ne2k-pci.c +++ b/drivers/net/ne2k-pci.c | |||
@@ -535,9 +535,9 @@ static void ne2k_pci_block_input(struct net_device *dev, int count, | |||
535 | if (count & 3) { | 535 | if (count & 3) { |
536 | buf += count & ~3; | 536 | buf += count & ~3; |
537 | if (count & 2) { | 537 | if (count & 2) { |
538 | u16 *b = (u16 *)buf; | 538 | __le16 *b = (__le16 *)buf; |
539 | 539 | ||
540 | *b++ = le16_to_cpu(inw(NE_BASE + NE_DATAPORT)); | 540 | *b++ = cpu_to_le16(inw(NE_BASE + NE_DATAPORT)); |
541 | buf = (char *)b; | 541 | buf = (char *)b; |
542 | } | 542 | } |
543 | if (count & 1) | 543 | if (count & 1) |
@@ -600,9 +600,9 @@ static void ne2k_pci_block_output(struct net_device *dev, int count, | |||
600 | if (count & 3) { | 600 | if (count & 3) { |
601 | buf += count & ~3; | 601 | buf += count & ~3; |
602 | if (count & 2) { | 602 | if (count & 2) { |
603 | u16 *b = (u16 *)buf; | 603 | __le16 *b = (__le16 *)buf; |
604 | 604 | ||
605 | outw(cpu_to_le16(*b++), NE_BASE + NE_DATAPORT); | 605 | outw(le16_to_cpu(*b++), NE_BASE + NE_DATAPORT); |
606 | buf = (char *)b; | 606 | buf = (char *)b; |
607 | } | 607 | } |
608 | } | 608 | } |
diff --git a/drivers/net/ps3_gelic_wireless.c b/drivers/net/ps3_gelic_wireless.c index daf5abab9534..ddbc6e475e28 100644 --- a/drivers/net/ps3_gelic_wireless.c +++ b/drivers/net/ps3_gelic_wireless.c | |||
@@ -1644,13 +1644,24 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl) | |||
1644 | } | 1644 | } |
1645 | 1645 | ||
1646 | /* put them in the newtork_list */ | 1646 | /* put them in the newtork_list */ |
1647 | scan_info = wl->buf; | 1647 | for (i = 0, scan_info_size = 0, scan_info = wl->buf; |
1648 | scan_info_size = 0; | 1648 | scan_info_size < data_len; |
1649 | i = 0; | 1649 | i++, scan_info_size += be16_to_cpu(scan_info->size), |
1650 | while (scan_info_size < data_len) { | 1650 | scan_info = (void *)scan_info + be16_to_cpu(scan_info->size)) { |
1651 | pr_debug("%s:size=%d bssid=%s scan_info=%p\n", __func__, | 1651 | pr_debug("%s:size=%d bssid=%s scan_info=%p\n", __func__, |
1652 | be16_to_cpu(scan_info->size), | 1652 | be16_to_cpu(scan_info->size), |
1653 | print_mac(mac, &scan_info->bssid[2]), scan_info); | 1653 | print_mac(mac, &scan_info->bssid[2]), scan_info); |
1654 | |||
1655 | /* | ||
1656 | * The wireless firmware may return invalid channel 0 and/or | ||
1657 | * invalid rate if the AP emits zero length SSID ie. As this | ||
1658 | * scan information is useless, ignore it | ||
1659 | */ | ||
1660 | if (!be16_to_cpu(scan_info->channel) || !scan_info->rate[0]) { | ||
1661 | pr_debug("%s: invalid scan info\n", __func__); | ||
1662 | continue; | ||
1663 | } | ||
1664 | |||
1654 | found = 0; | 1665 | found = 0; |
1655 | oldest = NULL; | 1666 | oldest = NULL; |
1656 | list_for_each_entry(target, &wl->network_list, list) { | 1667 | list_for_each_entry(target, &wl->network_list, list) { |
@@ -1687,10 +1698,6 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl) | |||
1687 | GFP_KERNEL); | 1698 | GFP_KERNEL); |
1688 | if (!target->hwinfo) { | 1699 | if (!target->hwinfo) { |
1689 | pr_info("%s: kzalloc failed\n", __func__); | 1700 | pr_info("%s: kzalloc failed\n", __func__); |
1690 | i++; | ||
1691 | scan_info_size += be16_to_cpu(scan_info->size); | ||
1692 | scan_info = (void *)scan_info + | ||
1693 | be16_to_cpu(scan_info->size); | ||
1694 | continue; | 1701 | continue; |
1695 | } | 1702 | } |
1696 | /* copy hw scan info */ | 1703 | /* copy hw scan info */ |
@@ -1709,10 +1716,6 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl) | |||
1709 | if (scan_info->ext_rate[r]) | 1716 | if (scan_info->ext_rate[r]) |
1710 | target->rate_ext_len++; | 1717 | target->rate_ext_len++; |
1711 | list_move_tail(&target->list, &wl->network_list); | 1718 | list_move_tail(&target->list, &wl->network_list); |
1712 | /* bump pointer */ | ||
1713 | i++; | ||
1714 | scan_info_size += be16_to_cpu(scan_info->size); | ||
1715 | scan_info = (void *)scan_info + be16_to_cpu(scan_info->size); | ||
1716 | } | 1719 | } |
1717 | memset(&data, 0, sizeof(data)); | 1720 | memset(&data, 0, sizeof(data)); |
1718 | wireless_send_event(port_to_netdev(wl_port(wl)), SIOCGIWSCAN, &data, | 1721 | wireless_send_event(port_to_netdev(wl_port(wl)), SIOCGIWSCAN, &data, |
@@ -2389,6 +2392,8 @@ static struct net_device *gelic_wl_alloc(struct gelic_card *card) | |||
2389 | if (!netdev) | 2392 | if (!netdev) |
2390 | return NULL; | 2393 | return NULL; |
2391 | 2394 | ||
2395 | strcpy(netdev->name, "wlan%d"); | ||
2396 | |||
2392 | port = netdev_priv(netdev); | 2397 | port = netdev_priv(netdev); |
2393 | port->netdev = netdev; | 2398 | port->netdev = netdev; |
2394 | port->card = card; | 2399 | port->card = card; |
diff --git a/drivers/net/r6040.c b/drivers/net/r6040.c index 19184e486ae9..169edc154928 100644 --- a/drivers/net/r6040.c +++ b/drivers/net/r6040.c | |||
@@ -239,7 +239,8 @@ static void r6040_free_txbufs(struct net_device *dev) | |||
239 | 239 | ||
240 | for (i = 0; i < TX_DCNT; i++) { | 240 | for (i = 0; i < TX_DCNT; i++) { |
241 | if (lp->tx_insert_ptr->skb_ptr) { | 241 | if (lp->tx_insert_ptr->skb_ptr) { |
242 | pci_unmap_single(lp->pdev, lp->tx_insert_ptr->buf, | 242 | pci_unmap_single(lp->pdev, |
243 | le32_to_cpu(lp->tx_insert_ptr->buf), | ||
243 | MAX_BUF_SIZE, PCI_DMA_TODEVICE); | 244 | MAX_BUF_SIZE, PCI_DMA_TODEVICE); |
244 | dev_kfree_skb(lp->tx_insert_ptr->skb_ptr); | 245 | dev_kfree_skb(lp->tx_insert_ptr->skb_ptr); |
245 | lp->rx_insert_ptr->skb_ptr = NULL; | 246 | lp->rx_insert_ptr->skb_ptr = NULL; |
@@ -255,7 +256,8 @@ static void r6040_free_rxbufs(struct net_device *dev) | |||
255 | 256 | ||
256 | for (i = 0; i < RX_DCNT; i++) { | 257 | for (i = 0; i < RX_DCNT; i++) { |
257 | if (lp->rx_insert_ptr->skb_ptr) { | 258 | if (lp->rx_insert_ptr->skb_ptr) { |
258 | pci_unmap_single(lp->pdev, lp->rx_insert_ptr->buf, | 259 | pci_unmap_single(lp->pdev, |
260 | le32_to_cpu(lp->rx_insert_ptr->buf), | ||
259 | MAX_BUF_SIZE, PCI_DMA_FROMDEVICE); | 261 | MAX_BUF_SIZE, PCI_DMA_FROMDEVICE); |
260 | dev_kfree_skb(lp->rx_insert_ptr->skb_ptr); | 262 | dev_kfree_skb(lp->rx_insert_ptr->skb_ptr); |
261 | lp->rx_insert_ptr->skb_ptr = NULL; | 263 | lp->rx_insert_ptr->skb_ptr = NULL; |
@@ -542,7 +544,7 @@ static int r6040_rx(struct net_device *dev, int limit) | |||
542 | skb_ptr->dev = priv->dev; | 544 | skb_ptr->dev = priv->dev; |
543 | /* Do not count the CRC */ | 545 | /* Do not count the CRC */ |
544 | skb_put(skb_ptr, descptr->len - 4); | 546 | skb_put(skb_ptr, descptr->len - 4); |
545 | pci_unmap_single(priv->pdev, descptr->buf, | 547 | pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf), |
546 | MAX_BUF_SIZE, PCI_DMA_FROMDEVICE); | 548 | MAX_BUF_SIZE, PCI_DMA_FROMDEVICE); |
547 | skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev); | 549 | skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev); |
548 | /* Send to upper layer */ | 550 | /* Send to upper layer */ |
@@ -585,7 +587,7 @@ static void r6040_tx(struct net_device *dev) | |||
585 | if (descptr->status & 0x8000) | 587 | if (descptr->status & 0x8000) |
586 | break; /* Not complete */ | 588 | break; /* Not complete */ |
587 | skb_ptr = descptr->skb_ptr; | 589 | skb_ptr = descptr->skb_ptr; |
588 | pci_unmap_single(priv->pdev, descptr->buf, | 590 | pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf), |
589 | skb_ptr->len, PCI_DMA_TODEVICE); | 591 | skb_ptr->len, PCI_DMA_TODEVICE); |
590 | /* Free buffer */ | 592 | /* Free buffer */ |
591 | dev_kfree_skb_irq(skb_ptr); | 593 | dev_kfree_skb_irq(skb_ptr); |
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 26ffb67f1da2..f9ef8bd8b11e 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -64,8 +64,8 @@ | |||
64 | 64 | ||
65 | #define DRV_MODULE_NAME "tg3" | 65 | #define DRV_MODULE_NAME "tg3" |
66 | #define PFX DRV_MODULE_NAME ": " | 66 | #define PFX DRV_MODULE_NAME ": " |
67 | #define DRV_MODULE_VERSION "3.87" | 67 | #define DRV_MODULE_VERSION "3.88" |
68 | #define DRV_MODULE_RELDATE "December 20, 2007" | 68 | #define DRV_MODULE_RELDATE "March 20, 2008" |
69 | 69 | ||
70 | #define TG3_DEF_MAC_MODE 0 | 70 | #define TG3_DEF_MAC_MODE 0 |
71 | #define TG3_DEF_RX_MODE 0 | 71 | #define TG3_DEF_RX_MODE 0 |
@@ -11841,7 +11841,7 @@ static int __devinit tg3_get_device_address(struct tg3 *tp) | |||
11841 | } | 11841 | } |
11842 | 11842 | ||
11843 | if (!is_valid_ether_addr(&dev->dev_addr[0])) { | 11843 | if (!is_valid_ether_addr(&dev->dev_addr[0])) { |
11844 | #ifdef CONFIG_SPARC64 | 11844 | #ifdef CONFIG_SPARC |
11845 | if (!tg3_get_default_macaddr_sparc(tp)) | 11845 | if (!tg3_get_default_macaddr_sparc(tp)) |
11846 | return 0; | 11846 | return 0; |
11847 | #endif | 11847 | #endif |
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c index 567c62757e9d..1b5edd646a8c 100644 --- a/drivers/net/tulip/de2104x.c +++ b/drivers/net/tulip/de2104x.c | |||
@@ -842,7 +842,7 @@ static inline int de_is_running (struct de_private *de) | |||
842 | static void de_stop_rxtx (struct de_private *de) | 842 | static void de_stop_rxtx (struct de_private *de) |
843 | { | 843 | { |
844 | u32 macmode; | 844 | u32 macmode; |
845 | unsigned int work = 1000; | 845 | unsigned int i = 1300/100; |
846 | 846 | ||
847 | macmode = dr32(MacMode); | 847 | macmode = dr32(MacMode); |
848 | if (macmode & RxTx) { | 848 | if (macmode & RxTx) { |
@@ -850,10 +850,14 @@ static void de_stop_rxtx (struct de_private *de) | |||
850 | dr32(MacMode); | 850 | dr32(MacMode); |
851 | } | 851 | } |
852 | 852 | ||
853 | while (--work > 0) { | 853 | /* wait until in-flight frame completes. |
854 | * Max time @ 10BT: 1500*8b/10Mbps == 1200us (+ 100us margin) | ||
855 | * Typically expect this loop to end in < 50 us on 100BT. | ||
856 | */ | ||
857 | while (--i) { | ||
854 | if (!de_is_running(de)) | 858 | if (!de_is_running(de)) |
855 | return; | 859 | return; |
856 | cpu_relax(); | 860 | udelay(100); |
857 | } | 861 | } |
858 | 862 | ||
859 | printk(KERN_WARNING "%s: timeout expired stopping DMA\n", de->dev->name); | 863 | printk(KERN_WARNING "%s: timeout expired stopping DMA\n", de->dev->name); |
diff --git a/drivers/net/ucc_geth.c b/drivers/net/ucc_geth.c index fba0811d2608..8cc316653a39 100644 --- a/drivers/net/ucc_geth.c +++ b/drivers/net/ucc_geth.c | |||
@@ -154,8 +154,8 @@ static struct ucc_geth_info ugeth_primary_info = { | |||
154 | .rxQoSMode = UCC_GETH_QOS_MODE_DEFAULT, | 154 | .rxQoSMode = UCC_GETH_QOS_MODE_DEFAULT, |
155 | .aufc = UPSMR_AUTOMATIC_FLOW_CONTROL_MODE_NONE, | 155 | .aufc = UPSMR_AUTOMATIC_FLOW_CONTROL_MODE_NONE, |
156 | .padAndCrc = MACCFG2_PAD_AND_CRC_MODE_PAD_AND_CRC, | 156 | .padAndCrc = MACCFG2_PAD_AND_CRC_MODE_PAD_AND_CRC, |
157 | .numThreadsTx = UCC_GETH_NUM_OF_THREADS_4, | 157 | .numThreadsTx = UCC_GETH_NUM_OF_THREADS_1, |
158 | .numThreadsRx = UCC_GETH_NUM_OF_THREADS_4, | 158 | .numThreadsRx = UCC_GETH_NUM_OF_THREADS_1, |
159 | .riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2, | 159 | .riscTx = QE_RISC_ALLOCATION_RISC1_AND_RISC2, |
160 | .riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2, | 160 | .riscRx = QE_RISC_ALLOCATION_RISC1_AND_RISC2, |
161 | }; | 161 | }; |
@@ -3975,6 +3975,8 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma | |||
3975 | ug_info->uf_info.utfs = UCC_GETH_UTFS_GIGA_INIT; | 3975 | ug_info->uf_info.utfs = UCC_GETH_UTFS_GIGA_INIT; |
3976 | ug_info->uf_info.utfet = UCC_GETH_UTFET_GIGA_INIT; | 3976 | ug_info->uf_info.utfet = UCC_GETH_UTFET_GIGA_INIT; |
3977 | ug_info->uf_info.utftt = UCC_GETH_UTFTT_GIGA_INIT; | 3977 | ug_info->uf_info.utftt = UCC_GETH_UTFTT_GIGA_INIT; |
3978 | ug_info->numThreadsTx = UCC_GETH_NUM_OF_THREADS_4; | ||
3979 | ug_info->numThreadsRx = UCC_GETH_NUM_OF_THREADS_4; | ||
3978 | } | 3980 | } |
3979 | 3981 | ||
3980 | /* Set the bus id */ | 3982 | /* Set the bus id */ |
diff --git a/drivers/net/usb/rndis_host.c b/drivers/net/usb/rndis_host.c index a61324757b17..727547a28992 100644 --- a/drivers/net/usb/rndis_host.c +++ b/drivers/net/usb/rndis_host.c | |||
@@ -16,10 +16,6 @@ | |||
16 | * along with this program; if not, write to the Free Software | 16 | * along with this program; if not, write to the Free Software |
17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
18 | */ | 18 | */ |
19 | |||
20 | // #define DEBUG // error path messages, extra info | ||
21 | // #define VERBOSE // more; success messages | ||
22 | |||
23 | #include <linux/module.h> | 19 | #include <linux/module.h> |
24 | #include <linux/init.h> | 20 | #include <linux/init.h> |
25 | #include <linux/netdevice.h> | 21 | #include <linux/netdevice.h> |
@@ -318,6 +314,14 @@ generic_rndis_bind(struct usbnet *dev, struct usb_interface *intf, int flags) | |||
318 | net->hard_header_len += sizeof (struct rndis_data_hdr); | 314 | net->hard_header_len += sizeof (struct rndis_data_hdr); |
319 | dev->hard_mtu = net->mtu + net->hard_header_len; | 315 | dev->hard_mtu = net->mtu + net->hard_header_len; |
320 | 316 | ||
317 | dev->maxpacket = usb_maxpacket(dev->udev, dev->out, 1); | ||
318 | if (dev->maxpacket == 0) { | ||
319 | if (netif_msg_probe(dev)) | ||
320 | dev_dbg(&intf->dev, "dev->maxpacket can't be 0\n"); | ||
321 | retval = -EINVAL; | ||
322 | goto fail_and_release; | ||
323 | } | ||
324 | |||
321 | dev->rx_urb_size = dev->hard_mtu + (dev->maxpacket + 1); | 325 | dev->rx_urb_size = dev->hard_mtu + (dev->maxpacket + 1); |
322 | dev->rx_urb_size &= ~(dev->maxpacket - 1); | 326 | dev->rx_urb_size &= ~(dev->maxpacket - 1); |
323 | u.init->max_transfer_size = cpu_to_le32(dev->rx_urb_size); | 327 | u.init->max_transfer_size = cpu_to_le32(dev->rx_urb_size); |
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 19fd4cb0ddf8..b58472cf76f8 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -203,8 +203,11 @@ again: | |||
203 | if (received < budget) { | 203 | if (received < budget) { |
204 | netif_rx_complete(vi->dev, napi); | 204 | netif_rx_complete(vi->dev, napi); |
205 | if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq)) | 205 | if (unlikely(!vi->rvq->vq_ops->enable_cb(vi->rvq)) |
206 | && netif_rx_reschedule(vi->dev, napi)) | 206 | && napi_schedule_prep(napi)) { |
207 | vi->rvq->vq_ops->disable_cb(vi->rvq); | ||
208 | __netif_rx_schedule(vi->dev, napi); | ||
207 | goto again; | 209 | goto again; |
210 | } | ||
208 | } | 211 | } |
209 | 212 | ||
210 | return received; | 213 | return received; |
@@ -278,10 +281,11 @@ again: | |||
278 | pr_debug("%s: virtio not prepared to send\n", dev->name); | 281 | pr_debug("%s: virtio not prepared to send\n", dev->name); |
279 | netif_stop_queue(dev); | 282 | netif_stop_queue(dev); |
280 | 283 | ||
281 | /* Activate callback for using skbs: if this fails it | 284 | /* Activate callback for using skbs: if this returns false it |
282 | * means some were used in the meantime. */ | 285 | * means some were used in the meantime. */ |
283 | if (unlikely(!vi->svq->vq_ops->enable_cb(vi->svq))) { | 286 | if (unlikely(!vi->svq->vq_ops->enable_cb(vi->svq))) { |
284 | printk("Unlikely: restart svq failed\n"); | 287 | printk("Unlikely: restart svq race\n"); |
288 | vi->svq->vq_ops->disable_cb(vi->svq); | ||
285 | netif_start_queue(dev); | 289 | netif_start_queue(dev); |
286 | goto again; | 290 | goto again; |
287 | } | 291 | } |
@@ -294,6 +298,15 @@ again: | |||
294 | return 0; | 298 | return 0; |
295 | } | 299 | } |
296 | 300 | ||
301 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
302 | static void virtnet_netpoll(struct net_device *dev) | ||
303 | { | ||
304 | struct virtnet_info *vi = netdev_priv(dev); | ||
305 | |||
306 | napi_schedule(&vi->napi); | ||
307 | } | ||
308 | #endif | ||
309 | |||
297 | static int virtnet_open(struct net_device *dev) | 310 | static int virtnet_open(struct net_device *dev) |
298 | { | 311 | { |
299 | struct virtnet_info *vi = netdev_priv(dev); | 312 | struct virtnet_info *vi = netdev_priv(dev); |
@@ -336,6 +349,9 @@ static int virtnet_probe(struct virtio_device *vdev) | |||
336 | dev->stop = virtnet_close; | 349 | dev->stop = virtnet_close; |
337 | dev->hard_start_xmit = start_xmit; | 350 | dev->hard_start_xmit = start_xmit; |
338 | dev->features = NETIF_F_HIGHDMA; | 351 | dev->features = NETIF_F_HIGHDMA; |
352 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
353 | dev->poll_controller = virtnet_netpoll; | ||
354 | #endif | ||
339 | SET_NETDEV_DEV(dev, &vdev->dev); | 355 | SET_NETDEV_DEV(dev, &vdev->dev); |
340 | 356 | ||
341 | /* Do we support "hardware" checksums? */ | 357 | /* Do we support "hardware" checksums? */ |
diff --git a/drivers/net/wan/farsync.c b/drivers/net/wan/farsync.c index cf27bf40d36e..547368e9633d 100644 --- a/drivers/net/wan/farsync.c +++ b/drivers/net/wan/farsync.c | |||
@@ -2024,6 +2024,7 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | |||
2024 | struct fstioc_write wrthdr; | 2024 | struct fstioc_write wrthdr; |
2025 | struct fstioc_info info; | 2025 | struct fstioc_info info; |
2026 | unsigned long flags; | 2026 | unsigned long flags; |
2027 | void *buf; | ||
2027 | 2028 | ||
2028 | dbg(DBG_IOCTL, "ioctl: %x, %p\n", cmd, ifr->ifr_data); | 2029 | dbg(DBG_IOCTL, "ioctl: %x, %p\n", cmd, ifr->ifr_data); |
2029 | 2030 | ||
@@ -2065,16 +2066,22 @@ fst_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | |||
2065 | return -ENXIO; | 2066 | return -ENXIO; |
2066 | } | 2067 | } |
2067 | 2068 | ||
2068 | /* Now copy the data to the card. | 2069 | /* Now copy the data to the card. */ |
2069 | * This will probably break on some architectures. | 2070 | |
2070 | * I'll fix it when I have something to test on. | 2071 | buf = kmalloc(wrthdr.size, GFP_KERNEL); |
2071 | */ | 2072 | if (!buf) |
2072 | if (copy_from_user(card->mem + wrthdr.offset, | 2073 | return -ENOMEM; |
2074 | |||
2075 | if (copy_from_user(buf, | ||
2073 | ifr->ifr_data + sizeof (struct fstioc_write), | 2076 | ifr->ifr_data + sizeof (struct fstioc_write), |
2074 | wrthdr.size)) { | 2077 | wrthdr.size)) { |
2078 | kfree(buf); | ||
2075 | return -EFAULT; | 2079 | return -EFAULT; |
2076 | } | 2080 | } |
2077 | 2081 | ||
2082 | memcpy_toio(card->mem + wrthdr.offset, buf, wrthdr.size); | ||
2083 | kfree(buf); | ||
2084 | |||
2078 | /* Writes to the memory of a card in the reset state constitute | 2085 | /* Writes to the memory of a card in the reset state constitute |
2079 | * a download | 2086 | * a download |
2080 | */ | 2087 | */ |
diff --git a/drivers/net/wireless/ath5k/hw.c b/drivers/net/wireless/ath5k/hw.c index c2de2d958e8e..01757436353d 100644 --- a/drivers/net/wireless/ath5k/hw.c +++ b/drivers/net/wireless/ath5k/hw.c | |||
@@ -427,6 +427,8 @@ void ath5k_hw_detach(struct ath5k_hw *ah) | |||
427 | { | 427 | { |
428 | ATH5K_TRACE(ah->ah_sc); | 428 | ATH5K_TRACE(ah->ah_sc); |
429 | 429 | ||
430 | __set_bit(ATH_STAT_INVALID, ah->ah_sc->status); | ||
431 | |||
430 | if (ah->ah_rf_banks != NULL) | 432 | if (ah->ah_rf_banks != NULL) |
431 | kfree(ah->ah_rf_banks); | 433 | kfree(ah->ah_rf_banks); |
432 | 434 | ||
diff --git a/drivers/net/wireless/b43/phy.c b/drivers/net/wireless/b43/phy.c index 71507b260b6d..575c5436ebdf 100644 --- a/drivers/net/wireless/b43/phy.c +++ b/drivers/net/wireless/b43/phy.c | |||
@@ -860,7 +860,7 @@ static void b43_phy_ww(struct b43_wldev *dev) | |||
860 | b43_phy_write(dev, B43_PHY_OFDM(0xBB), | 860 | b43_phy_write(dev, B43_PHY_OFDM(0xBB), |
861 | (b43_phy_read(dev, B43_PHY_OFDM(0xBB)) & 0xF000) | 0x0053); | 861 | (b43_phy_read(dev, B43_PHY_OFDM(0xBB)) & 0xF000) | 0x0053); |
862 | b43_phy_write(dev, B43_PHY_OFDM61, | 862 | b43_phy_write(dev, B43_PHY_OFDM61, |
863 | (b43_phy_read(dev, B43_PHY_OFDM61 & 0xFE1F)) | 0x0120); | 863 | (b43_phy_read(dev, B43_PHY_OFDM61) & 0xFE1F) | 0x0120); |
864 | b43_phy_write(dev, B43_PHY_OFDM(0x13), | 864 | b43_phy_write(dev, B43_PHY_OFDM(0x13), |
865 | (b43_phy_read(dev, B43_PHY_OFDM(0x13)) & 0x0FFF) | 0x3000); | 865 | (b43_phy_read(dev, B43_PHY_OFDM(0x13)) & 0x0FFF) | 0x3000); |
866 | b43_phy_write(dev, B43_PHY_OFDM(0x14), | 866 | b43_phy_write(dev, B43_PHY_OFDM(0x14), |
diff --git a/drivers/net/wireless/p54usb.c b/drivers/net/wireless/p54usb.c index e7d4aee8799e..98ddbb3b3273 100644 --- a/drivers/net/wireless/p54usb.c +++ b/drivers/net/wireless/p54usb.c | |||
@@ -63,6 +63,7 @@ static struct usb_device_id p54u_table[] __devinitdata = { | |||
63 | {USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */ | 63 | {USB_DEVICE(0x0cde, 0x0008)}, /* Sagem XG703A */ |
64 | {USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */ | 64 | {USB_DEVICE(0x0d8e, 0x3762)}, /* DLink DWL-G120 Cohiba */ |
65 | {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ | 65 | {USB_DEVICE(0x09aa, 0x1000)}, /* Spinnaker Proto board */ |
66 | {USB_DEVICE(0x124a, 0x4025)}, /* IOGear GWU513 (GW3887IK chip) */ | ||
66 | {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */ | 67 | {USB_DEVICE(0x13b1, 0x000a)}, /* Linksys WUSB54G ver 2 */ |
67 | {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ | 68 | {USB_DEVICE(0x13B1, 0x000C)}, /* Linksys WUSB54AG */ |
68 | {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ | 69 | {USB_DEVICE(0x1435, 0x0427)}, /* Inventel UR054G */ |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 05927b908f80..6c725422af5a 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -620,6 +620,9 @@ struct rt2x00_dev { | |||
620 | * This will only be compiled in when required. | 620 | * This will only be compiled in when required. |
621 | */ | 621 | */ |
622 | #ifdef CONFIG_RT2X00_LIB_RFKILL | 622 | #ifdef CONFIG_RT2X00_LIB_RFKILL |
623 | unsigned long rfkill_state; | ||
624 | #define RFKILL_STATE_ALLOCATED 1 | ||
625 | #define RFKILL_STATE_REGISTERED 2 | ||
623 | struct rfkill *rfkill; | 626 | struct rfkill *rfkill; |
624 | struct input_polled_dev *poll_dev; | 627 | struct input_polled_dev *poll_dev; |
625 | #endif /* CONFIG_RT2X00_LIB_RFKILL */ | 628 | #endif /* CONFIG_RT2X00_LIB_RFKILL */ |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index 0d51f478bcdf..bd305f7f3efd 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -1098,7 +1098,7 @@ static void rt2x00lib_uninitialize(struct rt2x00_dev *rt2x00dev) | |||
1098 | return; | 1098 | return; |
1099 | 1099 | ||
1100 | /* | 1100 | /* |
1101 | * Unregister rfkill. | 1101 | * Unregister extra components. |
1102 | */ | 1102 | */ |
1103 | rt2x00rfkill_unregister(rt2x00dev); | 1103 | rt2x00rfkill_unregister(rt2x00dev); |
1104 | 1104 | ||
@@ -1139,17 +1139,12 @@ static int rt2x00lib_initialize(struct rt2x00_dev *rt2x00dev) | |||
1139 | __set_bit(DEVICE_INITIALIZED, &rt2x00dev->flags); | 1139 | __set_bit(DEVICE_INITIALIZED, &rt2x00dev->flags); |
1140 | 1140 | ||
1141 | /* | 1141 | /* |
1142 | * Register the rfkill handler. | 1142 | * Register the extra components. |
1143 | */ | 1143 | */ |
1144 | status = rt2x00rfkill_register(rt2x00dev); | 1144 | rt2x00rfkill_register(rt2x00dev); |
1145 | if (status) | ||
1146 | goto exit_unitialize; | ||
1147 | 1145 | ||
1148 | return 0; | 1146 | return 0; |
1149 | 1147 | ||
1150 | exit_unitialize: | ||
1151 | rt2x00lib_uninitialize(rt2x00dev); | ||
1152 | |||
1153 | exit: | 1148 | exit: |
1154 | rt2x00lib_free_ring_entries(rt2x00dev); | 1149 | rt2x00lib_free_ring_entries(rt2x00dev); |
1155 | 1150 | ||
@@ -1313,15 +1308,9 @@ int rt2x00lib_probe_dev(struct rt2x00_dev *rt2x00dev) | |||
1313 | } | 1308 | } |
1314 | 1309 | ||
1315 | /* | 1310 | /* |
1316 | * Allocatie rfkill. | 1311 | * Register extra components. |
1317 | */ | ||
1318 | retval = rt2x00rfkill_allocate(rt2x00dev); | ||
1319 | if (retval) | ||
1320 | goto exit; | ||
1321 | |||
1322 | /* | ||
1323 | * Open the debugfs entry. | ||
1324 | */ | 1312 | */ |
1313 | rt2x00rfkill_allocate(rt2x00dev); | ||
1325 | rt2x00debug_register(rt2x00dev); | 1314 | rt2x00debug_register(rt2x00dev); |
1326 | 1315 | ||
1327 | __set_bit(DEVICE_PRESENT, &rt2x00dev->flags); | 1316 | __set_bit(DEVICE_PRESENT, &rt2x00dev->flags); |
@@ -1350,13 +1339,9 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev) | |||
1350 | rt2x00lib_uninitialize(rt2x00dev); | 1339 | rt2x00lib_uninitialize(rt2x00dev); |
1351 | 1340 | ||
1352 | /* | 1341 | /* |
1353 | * Close debugfs entry. | 1342 | * Free extra components |
1354 | */ | 1343 | */ |
1355 | rt2x00debug_deregister(rt2x00dev); | 1344 | rt2x00debug_deregister(rt2x00dev); |
1356 | |||
1357 | /* | ||
1358 | * Free rfkill | ||
1359 | */ | ||
1360 | rt2x00rfkill_free(rt2x00dev); | 1345 | rt2x00rfkill_free(rt2x00dev); |
1361 | 1346 | ||
1362 | /* | 1347 | /* |
@@ -1395,11 +1380,15 @@ int rt2x00lib_suspend(struct rt2x00_dev *rt2x00dev, pm_message_t state) | |||
1395 | __set_bit(DEVICE_STARTED_SUSPEND, &rt2x00dev->flags); | 1380 | __set_bit(DEVICE_STARTED_SUSPEND, &rt2x00dev->flags); |
1396 | 1381 | ||
1397 | /* | 1382 | /* |
1398 | * Disable radio and unitialize all items | 1383 | * Disable radio. |
1399 | * that must be recreated on resume. | ||
1400 | */ | 1384 | */ |
1401 | rt2x00lib_stop(rt2x00dev); | 1385 | rt2x00lib_stop(rt2x00dev); |
1402 | rt2x00lib_uninitialize(rt2x00dev); | 1386 | rt2x00lib_uninitialize(rt2x00dev); |
1387 | |||
1388 | /* | ||
1389 | * Suspend/disable extra components. | ||
1390 | */ | ||
1391 | rt2x00rfkill_suspend(rt2x00dev); | ||
1403 | rt2x00debug_deregister(rt2x00dev); | 1392 | rt2x00debug_deregister(rt2x00dev); |
1404 | 1393 | ||
1405 | exit: | 1394 | exit: |
@@ -1422,9 +1411,10 @@ int rt2x00lib_resume(struct rt2x00_dev *rt2x00dev) | |||
1422 | NOTICE(rt2x00dev, "Waking up.\n"); | 1411 | NOTICE(rt2x00dev, "Waking up.\n"); |
1423 | 1412 | ||
1424 | /* | 1413 | /* |
1425 | * Open the debugfs entry. | 1414 | * Restore/enable extra components. |
1426 | */ | 1415 | */ |
1427 | rt2x00debug_register(rt2x00dev); | 1416 | rt2x00debug_register(rt2x00dev); |
1417 | rt2x00rfkill_resume(rt2x00dev); | ||
1428 | 1418 | ||
1429 | /* | 1419 | /* |
1430 | * Only continue if mac80211 had open interfaces. | 1420 | * Only continue if mac80211 had open interfaces. |
diff --git a/drivers/net/wireless/rt2x00/rt2x00lib.h b/drivers/net/wireless/rt2x00/rt2x00lib.h index 1adbd28e0973..ce58c654ade1 100644 --- a/drivers/net/wireless/rt2x00/rt2x00lib.h +++ b/drivers/net/wireless/rt2x00/rt2x00lib.h | |||
@@ -100,28 +100,36 @@ static inline void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev, | |||
100 | * RFkill handlers. | 100 | * RFkill handlers. |
101 | */ | 101 | */ |
102 | #ifdef CONFIG_RT2X00_LIB_RFKILL | 102 | #ifdef CONFIG_RT2X00_LIB_RFKILL |
103 | int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev); | 103 | void rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev); |
104 | void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev); | 104 | void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev); |
105 | int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev); | 105 | void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev); |
106 | void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev); | 106 | void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev); |
107 | void rt2x00rfkill_suspend(struct rt2x00_dev *rt2x00dev); | ||
108 | void rt2x00rfkill_resume(struct rt2x00_dev *rt2x00dev); | ||
107 | #else | 109 | #else |
108 | static inline int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) | 110 | static inline void rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) |
109 | { | 111 | { |
110 | return 0; | ||
111 | } | 112 | } |
112 | 113 | ||
113 | static inline void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev) | 114 | static inline void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev) |
114 | { | 115 | { |
115 | } | 116 | } |
116 | 117 | ||
117 | static inline int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) | 118 | static inline void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) |
118 | { | 119 | { |
119 | return 0; | ||
120 | } | 120 | } |
121 | 121 | ||
122 | static inline void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) | 122 | static inline void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) |
123 | { | 123 | { |
124 | } | 124 | } |
125 | |||
126 | static inline void rt2x00rfkill_suspend(struct rt2x00_dev *rt2x00dev) | ||
127 | { | ||
128 | } | ||
129 | |||
130 | static inline void rt2x00rfkill_resume(struct rt2x00_dev *rt2x00dev) | ||
131 | { | ||
132 | } | ||
125 | #endif /* CONFIG_RT2X00_LIB_RFKILL */ | 133 | #endif /* CONFIG_RT2X00_LIB_RFKILL */ |
126 | 134 | ||
127 | #endif /* RT2X00LIB_H */ | 135 | #endif /* RT2X00LIB_H */ |
diff --git a/drivers/net/wireless/rt2x00/rt2x00rfkill.c b/drivers/net/wireless/rt2x00/rt2x00rfkill.c index 34a96d44e306..f95577596206 100644 --- a/drivers/net/wireless/rt2x00/rt2x00rfkill.c +++ b/drivers/net/wireless/rt2x00/rt2x00rfkill.c | |||
@@ -69,56 +69,81 @@ static void rt2x00rfkill_poll(struct input_polled_dev *poll_dev) | |||
69 | } | 69 | } |
70 | } | 70 | } |
71 | 71 | ||
72 | int rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) | 72 | void rt2x00rfkill_register(struct rt2x00_dev *rt2x00dev) |
73 | { | 73 | { |
74 | int retval; | 74 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) || |
75 | 75 | !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state)) | |
76 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) | 76 | return; |
77 | return 0; | ||
78 | 77 | ||
79 | retval = rfkill_register(rt2x00dev->rfkill); | 78 | if (rfkill_register(rt2x00dev->rfkill)) { |
80 | if (retval) { | ||
81 | ERROR(rt2x00dev, "Failed to register rfkill handler.\n"); | 79 | ERROR(rt2x00dev, "Failed to register rfkill handler.\n"); |
82 | return retval; | 80 | return; |
83 | } | 81 | } |
84 | 82 | ||
85 | retval = input_register_polled_device(rt2x00dev->poll_dev); | 83 | if (input_register_polled_device(rt2x00dev->poll_dev)) { |
86 | if (retval) { | ||
87 | ERROR(rt2x00dev, "Failed to register polled device.\n"); | 84 | ERROR(rt2x00dev, "Failed to register polled device.\n"); |
88 | rfkill_unregister(rt2x00dev->rfkill); | 85 | rfkill_unregister(rt2x00dev->rfkill); |
89 | return retval; | 86 | return; |
90 | } | 87 | } |
91 | 88 | ||
89 | __set_bit(RFKILL_STATE_REGISTERED, &rt2x00dev->rfkill_state); | ||
90 | |||
92 | /* | 91 | /* |
93 | * Force initial poll which will detect the initial device state, | 92 | * Force initial poll which will detect the initial device state, |
94 | * and correctly sends the signal to the rfkill layer about this | 93 | * and correctly sends the signal to the rfkill layer about this |
95 | * state. | 94 | * state. |
96 | */ | 95 | */ |
97 | rt2x00rfkill_poll(rt2x00dev->poll_dev); | 96 | rt2x00rfkill_poll(rt2x00dev->poll_dev); |
98 | |||
99 | return 0; | ||
100 | } | 97 | } |
101 | 98 | ||
102 | void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev) | 99 | void rt2x00rfkill_unregister(struct rt2x00_dev *rt2x00dev) |
103 | { | 100 | { |
104 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) | 101 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) || |
102 | !test_bit(RFKILL_STATE_REGISTERED, &rt2x00dev->rfkill_state)) | ||
105 | return; | 103 | return; |
106 | 104 | ||
107 | input_unregister_polled_device(rt2x00dev->poll_dev); | 105 | input_unregister_polled_device(rt2x00dev->poll_dev); |
108 | rfkill_unregister(rt2x00dev->rfkill); | 106 | rfkill_unregister(rt2x00dev->rfkill); |
107 | |||
108 | __clear_bit(RFKILL_STATE_REGISTERED, &rt2x00dev->rfkill_state); | ||
109 | } | 109 | } |
110 | 110 | ||
111 | int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) | 111 | static struct input_polled_dev * |
112 | rt2x00rfkill_allocate_polldev(struct rt2x00_dev *rt2x00dev) | ||
112 | { | 113 | { |
113 | struct device *device = wiphy_dev(rt2x00dev->hw->wiphy); | 114 | struct input_polled_dev *poll_dev; |
115 | |||
116 | poll_dev = input_allocate_polled_device(); | ||
117 | if (!poll_dev) | ||
118 | return NULL; | ||
119 | |||
120 | poll_dev->private = rt2x00dev; | ||
121 | poll_dev->poll = rt2x00rfkill_poll; | ||
122 | poll_dev->poll_interval = RFKILL_POLL_INTERVAL; | ||
123 | |||
124 | poll_dev->input->name = rt2x00dev->ops->name; | ||
125 | poll_dev->input->phys = wiphy_name(rt2x00dev->hw->wiphy); | ||
126 | poll_dev->input->id.bustype = BUS_HOST; | ||
127 | poll_dev->input->id.vendor = 0x1814; | ||
128 | poll_dev->input->id.product = rt2x00dev->chip.rt; | ||
129 | poll_dev->input->id.version = rt2x00dev->chip.rev; | ||
130 | poll_dev->input->dev.parent = wiphy_dev(rt2x00dev->hw->wiphy); | ||
131 | poll_dev->input->evbit[0] = BIT(EV_KEY); | ||
132 | set_bit(KEY_WLAN, poll_dev->input->keybit); | ||
133 | |||
134 | return poll_dev; | ||
135 | } | ||
114 | 136 | ||
137 | void rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) | ||
138 | { | ||
115 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) | 139 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) |
116 | return 0; | 140 | return; |
117 | 141 | ||
118 | rt2x00dev->rfkill = rfkill_allocate(device, RFKILL_TYPE_WLAN); | 142 | rt2x00dev->rfkill = |
143 | rfkill_allocate(wiphy_dev(rt2x00dev->hw->wiphy), RFKILL_TYPE_WLAN); | ||
119 | if (!rt2x00dev->rfkill) { | 144 | if (!rt2x00dev->rfkill) { |
120 | ERROR(rt2x00dev, "Failed to allocate rfkill handler.\n"); | 145 | ERROR(rt2x00dev, "Failed to allocate rfkill handler.\n"); |
121 | goto exit; | 146 | return; |
122 | } | 147 | } |
123 | 148 | ||
124 | rt2x00dev->rfkill->name = rt2x00dev->ops->name; | 149 | rt2x00dev->rfkill->name = rt2x00dev->ops->name; |
@@ -126,40 +151,49 @@ int rt2x00rfkill_allocate(struct rt2x00_dev *rt2x00dev) | |||
126 | rt2x00dev->rfkill->state = -1; | 151 | rt2x00dev->rfkill->state = -1; |
127 | rt2x00dev->rfkill->toggle_radio = rt2x00rfkill_toggle_radio; | 152 | rt2x00dev->rfkill->toggle_radio = rt2x00rfkill_toggle_radio; |
128 | 153 | ||
129 | rt2x00dev->poll_dev = input_allocate_polled_device(); | 154 | rt2x00dev->poll_dev = rt2x00rfkill_allocate_polldev(rt2x00dev); |
130 | if (!rt2x00dev->poll_dev) { | 155 | if (!rt2x00dev->poll_dev) { |
131 | ERROR(rt2x00dev, "Failed to allocate polled device.\n"); | 156 | ERROR(rt2x00dev, "Failed to allocate polled device.\n"); |
132 | goto exit_free_rfkill; | 157 | rfkill_free(rt2x00dev->rfkill); |
158 | rt2x00dev->rfkill = NULL; | ||
159 | return; | ||
133 | } | 160 | } |
134 | 161 | ||
135 | rt2x00dev->poll_dev->private = rt2x00dev; | 162 | return; |
136 | rt2x00dev->poll_dev->poll = rt2x00rfkill_poll; | 163 | } |
137 | rt2x00dev->poll_dev->poll_interval = RFKILL_POLL_INTERVAL; | ||
138 | 164 | ||
139 | rt2x00dev->poll_dev->input->name = rt2x00dev->ops->name; | 165 | void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) |
140 | rt2x00dev->poll_dev->input->phys = wiphy_name(rt2x00dev->hw->wiphy); | 166 | { |
141 | rt2x00dev->poll_dev->input->id.bustype = BUS_HOST; | 167 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) || |
142 | rt2x00dev->poll_dev->input->id.vendor = 0x1814; | 168 | !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state)) |
143 | rt2x00dev->poll_dev->input->id.product = rt2x00dev->chip.rt; | 169 | return; |
144 | rt2x00dev->poll_dev->input->id.version = rt2x00dev->chip.rev; | ||
145 | rt2x00dev->poll_dev->input->dev.parent = device; | ||
146 | rt2x00dev->poll_dev->input->evbit[0] = BIT(EV_KEY); | ||
147 | set_bit(KEY_WLAN, rt2x00dev->poll_dev->input->keybit); | ||
148 | 170 | ||
149 | return 0; | 171 | input_free_polled_device(rt2x00dev->poll_dev); |
172 | rt2x00dev->poll_dev = NULL; | ||
150 | 173 | ||
151 | exit_free_rfkill: | ||
152 | rfkill_free(rt2x00dev->rfkill); | 174 | rfkill_free(rt2x00dev->rfkill); |
153 | 175 | rt2x00dev->rfkill = NULL; | |
154 | exit: | ||
155 | return -ENOMEM; | ||
156 | } | 176 | } |
157 | 177 | ||
158 | void rt2x00rfkill_free(struct rt2x00_dev *rt2x00dev) | 178 | void rt2x00rfkill_suspend(struct rt2x00_dev *rt2x00dev) |
159 | { | 179 | { |
160 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags)) | 180 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) || |
181 | !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state)) | ||
161 | return; | 182 | return; |
162 | 183 | ||
163 | input_free_polled_device(rt2x00dev->poll_dev); | 184 | input_free_polled_device(rt2x00dev->poll_dev); |
164 | rfkill_free(rt2x00dev->rfkill); | 185 | rt2x00dev->poll_dev = NULL; |
186 | } | ||
187 | |||
188 | void rt2x00rfkill_resume(struct rt2x00_dev *rt2x00dev) | ||
189 | { | ||
190 | if (!test_bit(CONFIG_SUPPORT_HW_BUTTON, &rt2x00dev->flags) || | ||
191 | !test_bit(RFKILL_STATE_ALLOCATED, &rt2x00dev->rfkill_state)) | ||
192 | return; | ||
193 | |||
194 | rt2x00dev->poll_dev = rt2x00rfkill_allocate_polldev(rt2x00dev); | ||
195 | if (!rt2x00dev->poll_dev) { | ||
196 | ERROR(rt2x00dev, "Failed to allocate polled device.\n"); | ||
197 | return; | ||
198 | } | ||
165 | } | 199 | } |
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c index de34aa9d3136..f9f9a5f1bbd0 100644 --- a/drivers/parisc/pdc_stable.c +++ b/drivers/parisc/pdc_stable.c | |||
@@ -829,7 +829,7 @@ static ssize_t pdcs_autoboot_write(struct kobject *kobj, | |||
829 | struct kobj_attribute *attr, | 829 | struct kobj_attribute *attr, |
830 | const char *buf, size_t count) | 830 | const char *buf, size_t count) |
831 | { | 831 | { |
832 | return pdcs_auto_write(kset, attr, buf, count, PF_AUTOBOOT); | 832 | return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOBOOT); |
833 | } | 833 | } |
834 | 834 | ||
835 | /** | 835 | /** |
@@ -845,7 +845,7 @@ static ssize_t pdcs_autosearch_write(struct kobject *kobj, | |||
845 | struct kobj_attribute *attr, | 845 | struct kobj_attribute *attr, |
846 | const char *buf, size_t count) | 846 | const char *buf, size_t count) |
847 | { | 847 | { |
848 | return pdcs_auto_write(kset, attr, buf, count, PF_AUTOSEARCH); | 848 | return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOSEARCH); |
849 | } | 849 | } |
850 | 850 | ||
851 | /** | 851 | /** |
@@ -1066,7 +1066,7 @@ pdc_stable_init(void) | |||
1066 | } | 1066 | } |
1067 | 1067 | ||
1068 | /* Don't forget the root entries */ | 1068 | /* Don't forget the root entries */ |
1069 | error = sysfs_create_group(stable_kobj, pdcs_attr_group); | 1069 | error = sysfs_create_group(stable_kobj, &pdcs_attr_group); |
1070 | 1070 | ||
1071 | /* register the paths kset as a child of the stable kset */ | 1071 | /* register the paths kset as a child of the stable kset */ |
1072 | paths_kset = kset_create_and_add("paths", NULL, stable_kobj); | 1072 | paths_kset = kset_create_and_add("paths", NULL, stable_kobj); |
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c index bdbe780e21c5..8c4d2c13d5f2 100644 --- a/drivers/parisc/sba_iommu.c +++ b/drivers/parisc/sba_iommu.c | |||
@@ -314,8 +314,8 @@ sba_dump_sg( struct ioc *ioc, struct scatterlist *startsg, int nents) | |||
314 | #define RESMAP_MASK(n) (~0UL << (BITS_PER_LONG - (n))) | 314 | #define RESMAP_MASK(n) (~0UL << (BITS_PER_LONG - (n))) |
315 | #define RESMAP_IDX_MASK (sizeof(unsigned long) - 1) | 315 | #define RESMAP_IDX_MASK (sizeof(unsigned long) - 1) |
316 | 316 | ||
317 | unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr, | 317 | static unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr, |
318 | unsigned int bitshiftcnt) | 318 | unsigned int bitshiftcnt) |
319 | { | 319 | { |
320 | return (((unsigned long)res_ptr - (unsigned long)ioc->res_map) << 3) | 320 | return (((unsigned long)res_ptr - (unsigned long)ioc->res_map) << 3) |
321 | + bitshiftcnt; | 321 | + bitshiftcnt; |
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index 7f4836b8e71e..5fa4ba0d9934 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c | |||
@@ -467,7 +467,7 @@ static int pciehp_probe(struct pcie_device *dev, const struct pcie_port_service_ | |||
467 | t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); | 467 | t_slot = pciehp_find_slot(ctrl, ctrl->slot_device_offset); |
468 | 468 | ||
469 | t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */ | 469 | t_slot->hpc_ops->get_adapter_status(t_slot, &value); /* Check if slot is occupied */ |
470 | if (value) { | 470 | if (value && pciehp_force) { |
471 | rc = pciehp_enable_slot(t_slot); | 471 | rc = pciehp_enable_slot(t_slot); |
472 | if (rc) /* -ENODEV: shouldn't happen, but deal with it */ | 472 | if (rc) /* -ENODEV: shouldn't happen, but deal with it */ |
473 | value = 0; | 473 | value = 0; |
diff --git a/drivers/pnp/isapnp/core.c b/drivers/pnp/isapnp/core.c index 2c925b7cd93e..257f5d827d83 100644 --- a/drivers/pnp/isapnp/core.c +++ b/drivers/pnp/isapnp/core.c | |||
@@ -88,6 +88,15 @@ MODULE_LICENSE("GPL"); | |||
88 | #define _LTAG_MEM32RANGE 0x85 | 88 | #define _LTAG_MEM32RANGE 0x85 |
89 | #define _LTAG_FIXEDMEM32RANGE 0x86 | 89 | #define _LTAG_FIXEDMEM32RANGE 0x86 |
90 | 90 | ||
91 | /* | ||
92 | * Sizes of ISAPNP logical device configuration register sets. | ||
93 | * See PNP-ISA-v1.0a.pdf, Appendix A. | ||
94 | */ | ||
95 | #define ISAPNP_MAX_MEM 4 | ||
96 | #define ISAPNP_MAX_PORT 8 | ||
97 | #define ISAPNP_MAX_IRQ 2 | ||
98 | #define ISAPNP_MAX_DMA 2 | ||
99 | |||
91 | static unsigned char isapnp_checksum_value; | 100 | static unsigned char isapnp_checksum_value; |
92 | static DEFINE_MUTEX(isapnp_cfg_mutex); | 101 | static DEFINE_MUTEX(isapnp_cfg_mutex); |
93 | static int isapnp_csn_count; | 102 | static int isapnp_csn_count; |
@@ -945,14 +954,14 @@ static int isapnp_read_resources(struct pnp_dev *dev, | |||
945 | 954 | ||
946 | dev->active = isapnp_read_byte(ISAPNP_CFG_ACTIVATE); | 955 | dev->active = isapnp_read_byte(ISAPNP_CFG_ACTIVATE); |
947 | if (dev->active) { | 956 | if (dev->active) { |
948 | for (tmp = 0; tmp < PNP_MAX_PORT; tmp++) { | 957 | for (tmp = 0; tmp < ISAPNP_MAX_PORT; tmp++) { |
949 | ret = isapnp_read_word(ISAPNP_CFG_PORT + (tmp << 1)); | 958 | ret = isapnp_read_word(ISAPNP_CFG_PORT + (tmp << 1)); |
950 | if (!ret) | 959 | if (!ret) |
951 | continue; | 960 | continue; |
952 | res->port_resource[tmp].start = ret; | 961 | res->port_resource[tmp].start = ret; |
953 | res->port_resource[tmp].flags = IORESOURCE_IO; | 962 | res->port_resource[tmp].flags = IORESOURCE_IO; |
954 | } | 963 | } |
955 | for (tmp = 0; tmp < PNP_MAX_MEM; tmp++) { | 964 | for (tmp = 0; tmp < ISAPNP_MAX_MEM; tmp++) { |
956 | ret = | 965 | ret = |
957 | isapnp_read_word(ISAPNP_CFG_MEM + (tmp << 3)) << 8; | 966 | isapnp_read_word(ISAPNP_CFG_MEM + (tmp << 3)) << 8; |
958 | if (!ret) | 967 | if (!ret) |
@@ -960,7 +969,7 @@ static int isapnp_read_resources(struct pnp_dev *dev, | |||
960 | res->mem_resource[tmp].start = ret; | 969 | res->mem_resource[tmp].start = ret; |
961 | res->mem_resource[tmp].flags = IORESOURCE_MEM; | 970 | res->mem_resource[tmp].flags = IORESOURCE_MEM; |
962 | } | 971 | } |
963 | for (tmp = 0; tmp < PNP_MAX_IRQ; tmp++) { | 972 | for (tmp = 0; tmp < ISAPNP_MAX_IRQ; tmp++) { |
964 | ret = | 973 | ret = |
965 | (isapnp_read_word(ISAPNP_CFG_IRQ + (tmp << 1)) >> | 974 | (isapnp_read_word(ISAPNP_CFG_IRQ + (tmp << 1)) >> |
966 | 8); | 975 | 8); |
@@ -970,7 +979,7 @@ static int isapnp_read_resources(struct pnp_dev *dev, | |||
970 | res->irq_resource[tmp].end = ret; | 979 | res->irq_resource[tmp].end = ret; |
971 | res->irq_resource[tmp].flags = IORESOURCE_IRQ; | 980 | res->irq_resource[tmp].flags = IORESOURCE_IRQ; |
972 | } | 981 | } |
973 | for (tmp = 0; tmp < PNP_MAX_DMA; tmp++) { | 982 | for (tmp = 0; tmp < ISAPNP_MAX_DMA; tmp++) { |
974 | ret = isapnp_read_byte(ISAPNP_CFG_DMA + tmp); | 983 | ret = isapnp_read_byte(ISAPNP_CFG_DMA + tmp); |
975 | if (ret == 4) | 984 | if (ret == 4) |
976 | continue; | 985 | continue; |
@@ -1002,14 +1011,14 @@ static int isapnp_set_resources(struct pnp_dev *dev, | |||
1002 | isapnp_cfg_begin(dev->card->number, dev->number); | 1011 | isapnp_cfg_begin(dev->card->number, dev->number); |
1003 | dev->active = 1; | 1012 | dev->active = 1; |
1004 | for (tmp = 0; | 1013 | for (tmp = 0; |
1005 | tmp < PNP_MAX_PORT | 1014 | tmp < ISAPNP_MAX_PORT |
1006 | && (res->port_resource[tmp]. | 1015 | && (res->port_resource[tmp]. |
1007 | flags & (IORESOURCE_IO | IORESOURCE_UNSET)) == IORESOURCE_IO; | 1016 | flags & (IORESOURCE_IO | IORESOURCE_UNSET)) == IORESOURCE_IO; |
1008 | tmp++) | 1017 | tmp++) |
1009 | isapnp_write_word(ISAPNP_CFG_PORT + (tmp << 1), | 1018 | isapnp_write_word(ISAPNP_CFG_PORT + (tmp << 1), |
1010 | res->port_resource[tmp].start); | 1019 | res->port_resource[tmp].start); |
1011 | for (tmp = 0; | 1020 | for (tmp = 0; |
1012 | tmp < PNP_MAX_IRQ | 1021 | tmp < ISAPNP_MAX_IRQ |
1013 | && (res->irq_resource[tmp]. | 1022 | && (res->irq_resource[tmp]. |
1014 | flags & (IORESOURCE_IRQ | IORESOURCE_UNSET)) == IORESOURCE_IRQ; | 1023 | flags & (IORESOURCE_IRQ | IORESOURCE_UNSET)) == IORESOURCE_IRQ; |
1015 | tmp++) { | 1024 | tmp++) { |
@@ -1019,14 +1028,14 @@ static int isapnp_set_resources(struct pnp_dev *dev, | |||
1019 | isapnp_write_byte(ISAPNP_CFG_IRQ + (tmp << 1), irq); | 1028 | isapnp_write_byte(ISAPNP_CFG_IRQ + (tmp << 1), irq); |
1020 | } | 1029 | } |
1021 | for (tmp = 0; | 1030 | for (tmp = 0; |
1022 | tmp < PNP_MAX_DMA | 1031 | tmp < ISAPNP_MAX_DMA |
1023 | && (res->dma_resource[tmp]. | 1032 | && (res->dma_resource[tmp]. |
1024 | flags & (IORESOURCE_DMA | IORESOURCE_UNSET)) == IORESOURCE_DMA; | 1033 | flags & (IORESOURCE_DMA | IORESOURCE_UNSET)) == IORESOURCE_DMA; |
1025 | tmp++) | 1034 | tmp++) |
1026 | isapnp_write_byte(ISAPNP_CFG_DMA + tmp, | 1035 | isapnp_write_byte(ISAPNP_CFG_DMA + tmp, |
1027 | res->dma_resource[tmp].start); | 1036 | res->dma_resource[tmp].start); |
1028 | for (tmp = 0; | 1037 | for (tmp = 0; |
1029 | tmp < PNP_MAX_MEM | 1038 | tmp < ISAPNP_MAX_MEM |
1030 | && (res->mem_resource[tmp]. | 1039 | && (res->mem_resource[tmp]. |
1031 | flags & (IORESOURCE_MEM | IORESOURCE_UNSET)) == IORESOURCE_MEM; | 1040 | flags & (IORESOURCE_MEM | IORESOURCE_UNSET)) == IORESOURCE_MEM; |
1032 | tmp++) | 1041 | tmp++) |
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 82f5ad9c3af4..9e7de63b26ef 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig | |||
@@ -16,7 +16,7 @@ menuconfig RTC_CLASS | |||
16 | probably want to enable one or more of the interfaces below. | 16 | probably want to enable one or more of the interfaces below. |
17 | 17 | ||
18 | This driver can also be built as a module. If so, the module | 18 | This driver can also be built as a module. If so, the module |
19 | will be called rtc-class. | 19 | will be called rtc-core. |
20 | 20 | ||
21 | if RTC_CLASS | 21 | if RTC_CLASS |
22 | 22 | ||
diff --git a/drivers/rtc/rtc-at91sam9.c b/drivers/rtc/rtc-at91sam9.c index bbf10ecf416c..56728a2a3385 100644 --- a/drivers/rtc/rtc-at91sam9.c +++ b/drivers/rtc/rtc-at91sam9.c | |||
@@ -274,7 +274,7 @@ static irqreturn_t at91_rtc_interrupt(int irq, void *_rtc) | |||
274 | * SR clears it, so we must only read it in this irq handler! | 274 | * SR clears it, so we must only read it in this irq handler! |
275 | */ | 275 | */ |
276 | mr = rtt_readl(rtc, MR) & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN); | 276 | mr = rtt_readl(rtc, MR) & (AT91_RTT_ALMIEN | AT91_RTT_RTTINCIEN); |
277 | sr = rtt_readl(rtc, SR) & mr; | 277 | sr = rtt_readl(rtc, SR) & (mr >> 16); |
278 | if (!sr) | 278 | if (!sr) |
279 | return IRQ_NONE; | 279 | return IRQ_NONE; |
280 | 280 | ||
@@ -321,6 +321,10 @@ static int __init at91_rtc_probe(struct platform_device *pdev) | |||
321 | if (!rtc) | 321 | if (!rtc) |
322 | return -ENOMEM; | 322 | return -ENOMEM; |
323 | 323 | ||
324 | /* platform setup code should have handled this; sigh */ | ||
325 | if (!device_can_wakeup(&pdev->dev)) | ||
326 | device_init_wakeup(&pdev->dev, 1); | ||
327 | |||
324 | platform_set_drvdata(pdev, rtc); | 328 | platform_set_drvdata(pdev, rtc); |
325 | rtc->rtt = (void __force __iomem *) (AT91_VA_BASE_SYS - AT91_BASE_SYS); | 329 | rtc->rtt = (void __force __iomem *) (AT91_VA_BASE_SYS - AT91_BASE_SYS); |
326 | rtc->rtt += r->start; | 330 | rtc->rtt += r->start; |
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index c46666a24809..b9d374082b65 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig | |||
@@ -325,7 +325,7 @@ menuconfig SCSI_LOWLEVEL | |||
325 | depends on SCSI!=n | 325 | depends on SCSI!=n |
326 | default y | 326 | default y |
327 | 327 | ||
328 | if SCSI_LOWLEVEL | 328 | if SCSI_LOWLEVEL && SCSI |
329 | 329 | ||
330 | config ISCSI_TCP | 330 | config ISCSI_TCP |
331 | tristate "iSCSI Initiator over TCP/IP" | 331 | tristate "iSCSI Initiator over TCP/IP" |
diff --git a/drivers/scsi/a100u2w.c b/drivers/scsi/a100u2w.c index f608d4a1d6da..792b2e807bf3 100644 --- a/drivers/scsi/a100u2w.c +++ b/drivers/scsi/a100u2w.c | |||
@@ -674,12 +674,13 @@ static struct orc_scb *__orc_alloc_scb(struct orc_host * host) | |||
674 | for (index = 0; index < 32; index++) { | 674 | for (index = 0; index < 32; index++) { |
675 | if ((host->allocation_map[channel][i] >> index) & 0x01) { | 675 | if ((host->allocation_map[channel][i] >> index) & 0x01) { |
676 | host->allocation_map[channel][i] &= ~(1 << index); | 676 | host->allocation_map[channel][i] &= ~(1 << index); |
677 | break; | 677 | idx = index + 32 * i; |
678 | /* | ||
679 | * Translate the index to a structure instance | ||
680 | */ | ||
681 | return host->scb_virt + idx; | ||
678 | } | 682 | } |
679 | } | 683 | } |
680 | idx = index + 32 * i; | ||
681 | /* Translate the index to a structure instance */ | ||
682 | return (struct orc_scb *) ((unsigned long) host->scb_virt + (idx * sizeof(struct orc_scb))); | ||
683 | } | 684 | } |
684 | return NULL; | 685 | return NULL; |
685 | } | 686 | } |
diff --git a/drivers/scsi/advansys.c b/drivers/scsi/advansys.c index 3c2d6888bb8c..8591585e5cc5 100644 --- a/drivers/scsi/advansys.c +++ b/drivers/scsi/advansys.c | |||
@@ -6439,7 +6439,7 @@ static int AdvLoadMicrocode(AdvPortAddr iop_base, unsigned char *buf, int size, | |||
6439 | i += 2; | 6439 | i += 2; |
6440 | len += 2; | 6440 | len += 2; |
6441 | } else { | 6441 | } else { |
6442 | unsigned char off = buf[i] * 2; | 6442 | unsigned int off = buf[i] * 2; |
6443 | unsigned short word = (buf[off + 1] << 8) | buf[off]; | 6443 | unsigned short word = (buf[off + 1] << 8) | buf[off]; |
6444 | AdvWriteWordAutoIncLram(iop_base, word); | 6444 | AdvWriteWordAutoIncLram(iop_base, word); |
6445 | len += 2; | 6445 | len += 2; |
diff --git a/drivers/scsi/arcmsr/arcmsr.h b/drivers/scsi/arcmsr/arcmsr.h index 0393707bdfce..3288be2e49f8 100644 --- a/drivers/scsi/arcmsr/arcmsr.h +++ b/drivers/scsi/arcmsr/arcmsr.h | |||
@@ -341,13 +341,13 @@ struct MessageUnit_B | |||
341 | uint32_t done_qbuffer[ARCMSR_MAX_HBB_POSTQUEUE]; | 341 | uint32_t done_qbuffer[ARCMSR_MAX_HBB_POSTQUEUE]; |
342 | uint32_t postq_index; | 342 | uint32_t postq_index; |
343 | uint32_t doneq_index; | 343 | uint32_t doneq_index; |
344 | uint32_t __iomem *drv2iop_doorbell_reg; | 344 | void __iomem *drv2iop_doorbell_reg; |
345 | uint32_t __iomem *drv2iop_doorbell_mask_reg; | 345 | void __iomem *drv2iop_doorbell_mask_reg; |
346 | uint32_t __iomem *iop2drv_doorbell_reg; | 346 | void __iomem *iop2drv_doorbell_reg; |
347 | uint32_t __iomem *iop2drv_doorbell_mask_reg; | 347 | void __iomem *iop2drv_doorbell_mask_reg; |
348 | uint32_t __iomem *msgcode_rwbuffer_reg; | 348 | void __iomem *msgcode_rwbuffer_reg; |
349 | uint32_t __iomem *ioctl_wbuffer_reg; | 349 | void __iomem *ioctl_wbuffer_reg; |
350 | uint32_t __iomem *ioctl_rbuffer_reg; | 350 | void __iomem *ioctl_rbuffer_reg; |
351 | }; | 351 | }; |
352 | 352 | ||
353 | /* | 353 | /* |
diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c index 27ebd336409b..0b2080d33575 100644 --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c | |||
@@ -493,6 +493,12 @@ int __gdth_execute(struct scsi_device *sdev, gdth_cmd_str *gdtcmd, char *cmnd, | |||
493 | if (!scp) | 493 | if (!scp) |
494 | return -ENOMEM; | 494 | return -ENOMEM; |
495 | 495 | ||
496 | scp->sense_buffer = kzalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL); | ||
497 | if (!scp->sense_buffer) { | ||
498 | kfree(scp); | ||
499 | return -ENOMEM; | ||
500 | } | ||
501 | |||
496 | scp->device = sdev; | 502 | scp->device = sdev; |
497 | memset(&cmndinfo, 0, sizeof(cmndinfo)); | 503 | memset(&cmndinfo, 0, sizeof(cmndinfo)); |
498 | 504 | ||
@@ -513,6 +519,7 @@ int __gdth_execute(struct scsi_device *sdev, gdth_cmd_str *gdtcmd, char *cmnd, | |||
513 | rval = cmndinfo.status; | 519 | rval = cmndinfo.status; |
514 | if (info) | 520 | if (info) |
515 | *info = cmndinfo.info; | 521 | *info = cmndinfo.info; |
522 | kfree(scp->sense_buffer); | ||
516 | kfree(scp); | 523 | kfree(scp); |
517 | return rval; | 524 | return rval; |
518 | } | 525 | } |
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index ba21d97d1855..f40898dc2d14 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -2162,10 +2162,15 @@ void sdev_evt_send(struct scsi_device *sdev, struct scsi_event *evt) | |||
2162 | { | 2162 | { |
2163 | unsigned long flags; | 2163 | unsigned long flags; |
2164 | 2164 | ||
2165 | #if 0 | ||
2166 | /* FIXME: currently this check eliminates all media change events | ||
2167 | * for polled devices. Need to update to discriminate between AN | ||
2168 | * and polled events */ | ||
2165 | if (!test_bit(evt->evt_type, sdev->supported_events)) { | 2169 | if (!test_bit(evt->evt_type, sdev->supported_events)) { |
2166 | kfree(evt); | 2170 | kfree(evt); |
2167 | return; | 2171 | return; |
2168 | } | 2172 | } |
2173 | #endif | ||
2169 | 2174 | ||
2170 | spin_lock_irqsave(&sdev->list_lock, flags); | 2175 | spin_lock_irqsave(&sdev->list_lock, flags); |
2171 | list_add_tail(&evt->node, &sdev->event_list); | 2176 | list_add_tail(&evt->node, &sdev->event_list); |
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index ed83cdb6e67d..b9b09a704584 100644 --- a/drivers/scsi/scsi_sysfs.c +++ b/drivers/scsi/scsi_sysfs.c | |||
@@ -294,6 +294,7 @@ static void scsi_device_dev_release_usercontext(struct work_struct *work) | |||
294 | } | 294 | } |
295 | 295 | ||
296 | if (sdev->request_queue) { | 296 | if (sdev->request_queue) { |
297 | bsg_unregister_queue(sdev->request_queue); | ||
297 | sdev->request_queue->queuedata = NULL; | 298 | sdev->request_queue->queuedata = NULL; |
298 | /* user context needed to free queue */ | 299 | /* user context needed to free queue */ |
299 | scsi_free_queue(sdev->request_queue); | 300 | scsi_free_queue(sdev->request_queue); |
@@ -857,7 +858,6 @@ void __scsi_remove_device(struct scsi_device *sdev) | |||
857 | if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) | 858 | if (scsi_device_set_state(sdev, SDEV_CANCEL) != 0) |
858 | return; | 859 | return; |
859 | 860 | ||
860 | bsg_unregister_queue(sdev->request_queue); | ||
861 | class_device_unregister(&sdev->sdev_classdev); | 861 | class_device_unregister(&sdev->sdev_classdev); |
862 | transport_remove_device(dev); | 862 | transport_remove_device(dev); |
863 | device_del(dev); | 863 | device_del(dev); |
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 7aee64dbfbeb..5fe7aaed904c 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
@@ -1654,6 +1654,7 @@ static int sd_probe(struct device *dev) | |||
1654 | sdkp->disk = gd; | 1654 | sdkp->disk = gd; |
1655 | sdkp->index = index; | 1655 | sdkp->index = index; |
1656 | sdkp->openers = 0; | 1656 | sdkp->openers = 0; |
1657 | sdkp->previous_state = 1; | ||
1657 | 1658 | ||
1658 | if (!sdp->timeout) { | 1659 | if (!sdp->timeout) { |
1659 | if (sdp->type != TYPE_MOD) | 1660 | if (sdp->type != TYPE_MOD) |
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c index 208565bdbe8e..7ee86d4a7618 100644 --- a/drivers/scsi/sr.c +++ b/drivers/scsi/sr.c | |||
@@ -623,6 +623,7 @@ static int sr_probe(struct device *dev) | |||
623 | cd->disk = disk; | 623 | cd->disk = disk; |
624 | cd->capacity = 0x1fffff; | 624 | cd->capacity = 0x1fffff; |
625 | cd->device->changed = 1; /* force recheck CD type */ | 625 | cd->device->changed = 1; /* force recheck CD type */ |
626 | cd->previous_state = 1; | ||
626 | cd->use = 1; | 627 | cd->use = 1; |
627 | cd->readcd_known = 0; | 628 | cd->readcd_known = 0; |
628 | cd->readcd_cdda = 0; | 629 | cd->readcd_cdda = 0; |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index a8c116b80bff..9d244d1644e1 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
@@ -414,12 +414,12 @@ static void sci_init_pins_scif(struct uart_port *port, unsigned int cflag) | |||
414 | defined(CONFIG_CPU_SUBTYPE_SH7785) | 414 | defined(CONFIG_CPU_SUBTYPE_SH7785) |
415 | static inline int scif_txroom(struct uart_port *port) | 415 | static inline int scif_txroom(struct uart_port *port) |
416 | { | 416 | { |
417 | return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0x7f); | 417 | return SCIF_TXROOM_MAX - (sci_in(port, SCTFDR) & 0xff); |
418 | } | 418 | } |
419 | 419 | ||
420 | static inline int scif_rxroom(struct uart_port *port) | 420 | static inline int scif_rxroom(struct uart_port *port) |
421 | { | 421 | { |
422 | return sci_in(port, SCRFDR) & 0x7f; | 422 | return sci_in(port, SCRFDR) & 0xff; |
423 | } | 423 | } |
424 | #else | 424 | #else |
425 | static inline int scif_txroom(struct uart_port *port) | 425 | static inline int scif_txroom(struct uart_port *port) |
diff --git a/drivers/sn/ioc3.c b/drivers/sn/ioc3.c index 29fcd6d0301d..a0aa33dde0a4 100644 --- a/drivers/sn/ioc3.c +++ b/drivers/sn/ioc3.c | |||
@@ -561,7 +561,7 @@ void ioc3_unregister_submodule(struct ioc3_submodule *is) | |||
561 | printk(KERN_WARNING | 561 | printk(KERN_WARNING |
562 | "%s: IOC3 submodule %s remove failed " | 562 | "%s: IOC3 submodule %s remove failed " |
563 | "for pci_dev %s.\n", | 563 | "for pci_dev %s.\n", |
564 | __FUNCTION__, module_name(is->owner), | 564 | __func__, module_name(is->owner), |
565 | pci_name(idd->pdev)); | 565 | pci_name(idd->pdev)); |
566 | idd->active[is->id] = 0; | 566 | idd->active[is->id] = 0; |
567 | if(is->irq_mask) | 567 | if(is->irq_mask) |
@@ -611,7 +611,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
611 | if ((ret = pci_enable_device(pdev))) { | 611 | if ((ret = pci_enable_device(pdev))) { |
612 | printk(KERN_WARNING | 612 | printk(KERN_WARNING |
613 | "%s: Failed to enable IOC3 device for pci_dev %s.\n", | 613 | "%s: Failed to enable IOC3 device for pci_dev %s.\n", |
614 | __FUNCTION__, pci_name(pdev)); | 614 | __func__, pci_name(pdev)); |
615 | goto out; | 615 | goto out; |
616 | } | 616 | } |
617 | pci_set_master(pdev); | 617 | pci_set_master(pdev); |
@@ -623,7 +623,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
623 | if (ret < 0) { | 623 | if (ret < 0) { |
624 | printk(KERN_WARNING "%s: Unable to obtain 64 bit DMA " | 624 | printk(KERN_WARNING "%s: Unable to obtain 64 bit DMA " |
625 | "for consistent allocations\n", | 625 | "for consistent allocations\n", |
626 | __FUNCTION__); | 626 | __func__); |
627 | } | 627 | } |
628 | } | 628 | } |
629 | #endif | 629 | #endif |
@@ -633,7 +633,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
633 | if (!idd) { | 633 | if (!idd) { |
634 | printk(KERN_WARNING | 634 | printk(KERN_WARNING |
635 | "%s: Failed to allocate IOC3 data for pci_dev %s.\n", | 635 | "%s: Failed to allocate IOC3 data for pci_dev %s.\n", |
636 | __FUNCTION__, pci_name(pdev)); | 636 | __func__, pci_name(pdev)); |
637 | ret = -ENODEV; | 637 | ret = -ENODEV; |
638 | goto out_idd; | 638 | goto out_idd; |
639 | } | 639 | } |
@@ -649,7 +649,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
649 | printk(KERN_WARNING | 649 | printk(KERN_WARNING |
650 | "%s: Unable to find IOC3 resource " | 650 | "%s: Unable to find IOC3 resource " |
651 | "for pci_dev %s.\n", | 651 | "for pci_dev %s.\n", |
652 | __FUNCTION__, pci_name(pdev)); | 652 | __func__, pci_name(pdev)); |
653 | ret = -ENODEV; | 653 | ret = -ENODEV; |
654 | goto out_pci; | 654 | goto out_pci; |
655 | } | 655 | } |
@@ -657,7 +657,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
657 | printk(KERN_WARNING | 657 | printk(KERN_WARNING |
658 | "%s: Unable to request IOC3 region " | 658 | "%s: Unable to request IOC3 region " |
659 | "for pci_dev %s.\n", | 659 | "for pci_dev %s.\n", |
660 | __FUNCTION__, pci_name(pdev)); | 660 | __func__, pci_name(pdev)); |
661 | ret = -ENODEV; | 661 | ret = -ENODEV; |
662 | goto out_pci; | 662 | goto out_pci; |
663 | } | 663 | } |
@@ -666,7 +666,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
666 | printk(KERN_WARNING | 666 | printk(KERN_WARNING |
667 | "%s: Unable to remap IOC3 region " | 667 | "%s: Unable to remap IOC3 region " |
668 | "for pci_dev %s.\n", | 668 | "for pci_dev %s.\n", |
669 | __FUNCTION__, pci_name(pdev)); | 669 | __func__, pci_name(pdev)); |
670 | ret = -ENODEV; | 670 | ret = -ENODEV; |
671 | goto out_misc_region; | 671 | goto out_misc_region; |
672 | } | 672 | } |
@@ -709,7 +709,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
709 | } else { | 709 | } else { |
710 | printk(KERN_WARNING | 710 | printk(KERN_WARNING |
711 | "%s : request_irq fails for IRQ 0x%x\n ", | 711 | "%s : request_irq fails for IRQ 0x%x\n ", |
712 | __FUNCTION__, pdev->irq); | 712 | __func__, pdev->irq); |
713 | } | 713 | } |
714 | if (!request_irq(pdev->irq+2, ioc3_intr_io, IRQF_SHARED, | 714 | if (!request_irq(pdev->irq+2, ioc3_intr_io, IRQF_SHARED, |
715 | "ioc3-io", (void *)idd)) { | 715 | "ioc3-io", (void *)idd)) { |
@@ -717,7 +717,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
717 | } else { | 717 | } else { |
718 | printk(KERN_WARNING | 718 | printk(KERN_WARNING |
719 | "%s : request_irq fails for IRQ 0x%x\n ", | 719 | "%s : request_irq fails for IRQ 0x%x\n ", |
720 | __FUNCTION__, pdev->irq+2); | 720 | __func__, pdev->irq+2); |
721 | } | 721 | } |
722 | } else { | 722 | } else { |
723 | if (!request_irq(pdev->irq, ioc3_intr_io, IRQF_SHARED, | 723 | if (!request_irq(pdev->irq, ioc3_intr_io, IRQF_SHARED, |
@@ -726,7 +726,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *pci_id) | |||
726 | } else { | 726 | } else { |
727 | printk(KERN_WARNING | 727 | printk(KERN_WARNING |
728 | "%s : request_irq fails for IRQ 0x%x\n ", | 728 | "%s : request_irq fails for IRQ 0x%x\n ", |
729 | __FUNCTION__, pdev->irq); | 729 | __func__, pdev->irq); |
730 | } | 730 | } |
731 | } | 731 | } |
732 | 732 | ||
@@ -769,7 +769,7 @@ static void ioc3_remove(struct pci_dev *pdev) | |||
769 | printk(KERN_WARNING | 769 | printk(KERN_WARNING |
770 | "%s: IOC3 submodule 0x%s remove failed " | 770 | "%s: IOC3 submodule 0x%s remove failed " |
771 | "for pci_dev %s.\n", | 771 | "for pci_dev %s.\n", |
772 | __FUNCTION__, | 772 | __func__, |
773 | module_name(ioc3_submodules[id]->owner), | 773 | module_name(ioc3_submodules[id]->owner), |
774 | pci_name(pdev)); | 774 | pci_name(pdev)); |
775 | idd->active[id] = 0; | 775 | idd->active[id] = 0; |
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index 3ab313ed441c..17e71d56f31e 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig | |||
@@ -4,8 +4,6 @@ | |||
4 | 4 | ||
5 | menuconfig THERMAL | 5 | menuconfig THERMAL |
6 | bool "Generic Thermal sysfs driver" | 6 | bool "Generic Thermal sysfs driver" |
7 | select HWMON | ||
8 | default y | ||
9 | help | 7 | help |
10 | Generic Thermal Sysfs driver offers a generic mechanism for | 8 | Generic Thermal Sysfs driver offers a generic mechanism for |
11 | thermal management. Usually it's made up of one or more thermal | 9 | thermal management. Usually it's made up of one or more thermal |
diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c index 41bd4c805ace..8b86e53ccf7a 100644 --- a/drivers/thermal/thermal.c +++ b/drivers/thermal/thermal.c | |||
@@ -30,10 +30,8 @@ | |||
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> | ||
35 | 33 | ||
36 | MODULE_AUTHOR("Zhang Rui"); | 34 | MODULE_AUTHOR("Zhang Rui") |
37 | MODULE_DESCRIPTION("Generic thermal management sysfs support"); | 35 | MODULE_DESCRIPTION("Generic thermal management sysfs support"); |
38 | MODULE_LICENSE("GPL"); | 36 | MODULE_LICENSE("GPL"); |
39 | 37 | ||
@@ -58,9 +56,6 @@ static LIST_HEAD(thermal_tz_list); | |||
58 | static LIST_HEAD(thermal_cdev_list); | 56 | static LIST_HEAD(thermal_cdev_list); |
59 | static DEFINE_MUTEX(thermal_list_lock); | 57 | static DEFINE_MUTEX(thermal_list_lock); |
60 | 58 | ||
61 | static struct device *thermal_hwmon; | ||
62 | #define MAX_THERMAL_ZONES 10 | ||
63 | |||
64 | static int get_idr(struct idr *idr, struct mutex *lock, int *id) | 59 | static int get_idr(struct idr *idr, struct mutex *lock, int *id) |
65 | { | 60 | { |
66 | int err; | 61 | int err; |
@@ -92,67 +87,7 @@ static void release_idr(struct idr *idr, struct mutex *lock, int id) | |||
92 | mutex_unlock(lock); | 87 | mutex_unlock(lock); |
93 | } | 88 | } |
94 | 89 | ||
95 | /* hwmon sys I/F*/ | 90 | /* sys I/F for thermal zone */ |
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 */ | ||
156 | 91 | ||
157 | #define to_thermal_zone(_dev) \ | 92 | #define to_thermal_zone(_dev) \ |
158 | container_of(_dev, struct thermal_zone_device, device) | 93 | container_of(_dev, struct thermal_zone_device, device) |
@@ -279,7 +214,7 @@ do { \ | |||
279 | device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \ | 214 | device_remove_file(_dev, &trip_point_attrs[_index * 2 + 1]); \ |
280 | } while (0) | 215 | } while (0) |
281 | 216 | ||
282 | /* cooling device sys I/F */ | 217 | /* sys I/F for cooling device */ |
283 | #define to_cooling_device(_dev) \ | 218 | #define to_cooling_device(_dev) \ |
284 | container_of(_dev, struct thermal_cooling_device, device) | 219 | container_of(_dev, struct thermal_cooling_device, device) |
285 | 220 | ||
@@ -512,9 +447,6 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type, | |||
512 | struct thermal_zone_device *pos; | 447 | struct thermal_zone_device *pos; |
513 | int result; | 448 | int result; |
514 | 449 | ||
515 | if (!type) | ||
516 | return ERR_PTR(-EINVAL); | ||
517 | |||
518 | if (strlen(type) >= THERMAL_NAME_LENGTH) | 450 | if (strlen(type) >= THERMAL_NAME_LENGTH) |
519 | return ERR_PTR(-EINVAL); | 451 | return ERR_PTR(-EINVAL); |
520 | 452 | ||
@@ -545,9 +477,11 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *type, | |||
545 | } | 477 | } |
546 | 478 | ||
547 | /* sys I/F */ | 479 | /* sys I/F */ |
548 | result = device_create_file(&cdev->device, &dev_attr_cdev_type); | 480 | if (type) { |
549 | if (result) | 481 | result = device_create_file(&cdev->device, &dev_attr_cdev_type); |
550 | goto unregister; | 482 | if (result) |
483 | goto unregister; | ||
484 | } | ||
551 | 485 | ||
552 | result = device_create_file(&cdev->device, &dev_attr_max_state); | 486 | result = device_create_file(&cdev->device, &dev_attr_max_state); |
553 | if (result) | 487 | if (result) |
@@ -613,8 +547,8 @@ void thermal_cooling_device_unregister(struct | |||
613 | tz->ops->unbind(tz, cdev); | 547 | tz->ops->unbind(tz, cdev); |
614 | } | 548 | } |
615 | mutex_unlock(&thermal_list_lock); | 549 | mutex_unlock(&thermal_list_lock); |
616 | 550 | if (cdev->type[0]) | |
617 | device_remove_file(&cdev->device, &dev_attr_cdev_type); | 551 | device_remove_file(&cdev->device, &dev_attr_cdev_type); |
618 | device_remove_file(&cdev->device, &dev_attr_max_state); | 552 | device_remove_file(&cdev->device, &dev_attr_max_state); |
619 | device_remove_file(&cdev->device, &dev_attr_cur_state); | 553 | device_remove_file(&cdev->device, &dev_attr_cur_state); |
620 | 554 | ||
@@ -646,9 +580,6 @@ struct thermal_zone_device *thermal_zone_device_register(char *type, | |||
646 | int result; | 580 | int result; |
647 | int count; | 581 | int count; |
648 | 582 | ||
649 | if (!type) | ||
650 | return ERR_PTR(-EINVAL); | ||
651 | |||
652 | if (strlen(type) >= THERMAL_NAME_LENGTH) | 583 | if (strlen(type) >= THERMAL_NAME_LENGTH) |
653 | return ERR_PTR(-EINVAL); | 584 | return ERR_PTR(-EINVAL); |
654 | 585 | ||
@@ -670,13 +601,6 @@ struct thermal_zone_device *thermal_zone_device_register(char *type, | |||
670 | kfree(tz); | 601 | kfree(tz); |
671 | return ERR_PTR(result); | 602 | return ERR_PTR(result); |
672 | } | 603 | } |
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 | } | ||
680 | 604 | ||
681 | strcpy(tz->type, type); | 605 | strcpy(tz->type, type); |
682 | tz->ops = ops; | 606 | tz->ops = ops; |
@@ -691,27 +615,12 @@ struct thermal_zone_device *thermal_zone_device_register(char *type, | |||
691 | return ERR_PTR(result); | 615 | return ERR_PTR(result); |
692 | } | 616 | } |
693 | 617 | ||
694 | /* hwmon sys I/F */ | ||
695 | result = device_create_file(thermal_hwmon, | ||
696 | &sensor_attrs[tz->id * 2].dev_attr); | ||
697 | if (result) | ||
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 | } | ||
709 | } | ||
710 | |||
711 | /* sys I/F */ | 618 | /* sys I/F */ |
712 | result = device_create_file(&tz->device, &dev_attr_type); | 619 | if (type) { |
713 | if (result) | 620 | result = device_create_file(&tz->device, &dev_attr_type); |
714 | goto unregister; | 621 | if (result) |
622 | goto unregister; | ||
623 | } | ||
715 | 624 | ||
716 | result = device_create_file(&tz->device, &dev_attr_temp); | 625 | result = device_create_file(&tz->device, &dev_attr_temp); |
717 | if (result) | 626 | if (result) |
@@ -778,17 +687,8 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz) | |||
778 | tz->ops->unbind(tz, cdev); | 687 | tz->ops->unbind(tz, cdev); |
779 | mutex_unlock(&thermal_list_lock); | 688 | mutex_unlock(&thermal_list_lock); |
780 | 689 | ||
781 | device_remove_file(thermal_hwmon, | 690 | if (tz->type[0]) |
782 | &sensor_attrs[tz->id * 2].dev_attr); | 691 | device_remove_file(&tz->device, &dev_attr_type); |
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); | ||
792 | device_remove_file(&tz->device, &dev_attr_temp); | 692 | device_remove_file(&tz->device, &dev_attr_temp); |
793 | if (tz->ops->get_mode) | 693 | if (tz->ops->get_mode) |
794 | device_remove_file(&tz->device, &dev_attr_mode); | 694 | device_remove_file(&tz->device, &dev_attr_mode); |
@@ -805,19 +705,6 @@ void thermal_zone_device_unregister(struct thermal_zone_device *tz) | |||
805 | 705 | ||
806 | EXPORT_SYMBOL(thermal_zone_device_unregister); | 706 | EXPORT_SYMBOL(thermal_zone_device_unregister); |
807 | 707 | ||
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 | |||
821 | static int __init thermal_init(void) | 708 | static int __init thermal_init(void) |
822 | { | 709 | { |
823 | int result = 0; | 710 | int result = 0; |
@@ -829,21 +716,17 @@ static int __init thermal_init(void) | |||
829 | mutex_destroy(&thermal_idr_lock); | 716 | mutex_destroy(&thermal_idr_lock); |
830 | mutex_destroy(&thermal_list_lock); | 717 | mutex_destroy(&thermal_list_lock); |
831 | } | 718 | } |
832 | |||
833 | thermal_hwmon = hwmon_device_register(NULL); | ||
834 | if (IS_ERR(thermal_hwmon)) { | ||
835 | result = PTR_ERR(thermal_hwmon); | ||
836 | thermal_hwmon = NULL; | ||
837 | printk(KERN_ERR PREFIX | ||
838 | "unable to register hwmon device\n"); | ||
839 | thermal_exit(); | ||
840 | return result; | ||
841 | } | ||
842 | |||
843 | result = device_create_file(thermal_hwmon, &dev_attr_name); | ||
844 | |||
845 | return result; | 719 | return result; |
846 | } | 720 | } |
847 | 721 | ||
722 | static void __exit thermal_exit(void) | ||
723 | { | ||
724 | class_unregister(&thermal_class); | ||
725 | idr_destroy(&thermal_tz_idr); | ||
726 | idr_destroy(&thermal_cdev_idr); | ||
727 | mutex_destroy(&thermal_idr_lock); | ||
728 | mutex_destroy(&thermal_list_lock); | ||
729 | } | ||
730 | |||
848 | subsys_initcall(thermal_init); | 731 | subsys_initcall(thermal_init); |
849 | module_exit(thermal_exit); | 732 | module_exit(thermal_exit); |
diff --git a/drivers/usb/storage/isd200.c b/drivers/usb/storage/isd200.c index 2ae1e8673b19..9d3f28b92cbe 100644 --- a/drivers/usb/storage/isd200.c +++ b/drivers/usb/storage/isd200.c | |||
@@ -1469,6 +1469,7 @@ static void isd200_free_info_ptrs(void *info_) | |||
1469 | if (info) { | 1469 | if (info) { |
1470 | kfree(info->id); | 1470 | kfree(info->id); |
1471 | kfree(info->RegsBuf); | 1471 | kfree(info->RegsBuf); |
1472 | kfree(info->srb.sense_buffer); | ||
1472 | } | 1473 | } |
1473 | } | 1474 | } |
1474 | 1475 | ||
@@ -1494,7 +1495,9 @@ static int isd200_init_info(struct us_data *us) | |||
1494 | kzalloc(sizeof(struct hd_driveid), GFP_KERNEL); | 1495 | kzalloc(sizeof(struct hd_driveid), GFP_KERNEL); |
1495 | info->RegsBuf = (unsigned char *) | 1496 | info->RegsBuf = (unsigned char *) |
1496 | kmalloc(sizeof(info->ATARegs), GFP_KERNEL); | 1497 | kmalloc(sizeof(info->ATARegs), GFP_KERNEL); |
1497 | if (!info->id || !info->RegsBuf) { | 1498 | info->srb.sense_buffer = |
1499 | kmalloc(SCSI_SENSE_BUFFERSIZE, GFP_KERNEL); | ||
1500 | if (!info->id || !info->RegsBuf || !info->srb.sense_buffer) { | ||
1498 | isd200_free_info_ptrs(info); | 1501 | isd200_free_info_ptrs(info); |
1499 | kfree(info); | 1502 | kfree(info); |
1500 | retStatus = ISD200_ERROR; | 1503 | retStatus = ISD200_ERROR; |
diff --git a/drivers/video/Kconfig b/drivers/video/Kconfig index e0b0580705e4..1bd5fb30237d 100644 --- a/drivers/video/Kconfig +++ b/drivers/video/Kconfig | |||
@@ -1893,6 +1893,20 @@ config FB_XILINX | |||
1893 | framebuffer. ML300 carries a 640*480 LCD display on the board, | 1893 | framebuffer. ML300 carries a 640*480 LCD display on the board, |
1894 | ML403 uses a standard DB15 VGA connector. | 1894 | ML403 uses a standard DB15 VGA connector. |
1895 | 1895 | ||
1896 | config FB_METRONOME | ||
1897 | tristate "Metronome display controller support" | ||
1898 | depends on FB && ARCH_PXA && MMU | ||
1899 | select FB_SYS_FILLRECT | ||
1900 | select FB_SYS_COPYAREA | ||
1901 | select FB_SYS_IMAGEBLIT | ||
1902 | select FB_SYS_FOPS | ||
1903 | select FB_DEFERRED_IO | ||
1904 | help | ||
1905 | This enables support for the Metronome display controller. Tested | ||
1906 | with an E-Ink 800x600 display and Gumstix Connex through an AMLCD | ||
1907 | interface. Please read <file:Documentation/fb/metronomefb.txt> | ||
1908 | for more information. | ||
1909 | |||
1896 | config FB_VIRTUAL | 1910 | config FB_VIRTUAL |
1897 | tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)" | 1911 | tristate "Virtual Frame Buffer support (ONLY FOR TESTING!)" |
1898 | depends on FB | 1912 | depends on FB |
diff --git a/drivers/video/Makefile b/drivers/video/Makefile index 03371c789039..11c0e5e05f21 100644 --- a/drivers/video/Makefile +++ b/drivers/video/Makefile | |||
@@ -103,6 +103,7 @@ obj-$(CONFIG_FB_PMAG_AA) += pmag-aa-fb.o | |||
103 | obj-$(CONFIG_FB_PMAG_BA) += pmag-ba-fb.o | 103 | obj-$(CONFIG_FB_PMAG_BA) += pmag-ba-fb.o |
104 | obj-$(CONFIG_FB_PMAGB_B) += pmagb-b-fb.o | 104 | obj-$(CONFIG_FB_PMAGB_B) += pmagb-b-fb.o |
105 | obj-$(CONFIG_FB_MAXINE) += maxinefb.o | 105 | obj-$(CONFIG_FB_MAXINE) += maxinefb.o |
106 | obj-$(CONFIG_FB_METRONOME) += metronomefb.o | ||
106 | obj-$(CONFIG_FB_S1D13XXX) += s1d13xxxfb.o | 107 | obj-$(CONFIG_FB_S1D13XXX) += s1d13xxxfb.o |
107 | obj-$(CONFIG_FB_IMX) += imxfb.o | 108 | obj-$(CONFIG_FB_IMX) += imxfb.o |
108 | obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o | 109 | obj-$(CONFIG_FB_S3C2410) += s3c2410fb.o |
diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c index 0f8cfb988c90..24843fdd5395 100644 --- a/drivers/video/fb_defio.c +++ b/drivers/video/fb_defio.c | |||
@@ -4,7 +4,7 @@ | |||
4 | * Copyright (C) 2006 Jaya Kumar | 4 | * Copyright (C) 2006 Jaya Kumar |
5 | * | 5 | * |
6 | * This file is subject to the terms and conditions of the GNU General Public | 6 | * This file is subject to the terms and conditions of the GNU General Public |
7 | * License. See the file COPYING in the main directory of this archive | 7 | * License. See the file COPYING in the main directory of this archive |
8 | * for more details. | 8 | * for more details. |
9 | */ | 9 | */ |
10 | 10 | ||
@@ -31,7 +31,7 @@ static int fb_deferred_io_fault(struct vm_area_struct *vma, | |||
31 | unsigned long offset; | 31 | unsigned long offset; |
32 | struct page *page; | 32 | struct page *page; |
33 | struct fb_info *info = vma->vm_private_data; | 33 | struct fb_info *info = vma->vm_private_data; |
34 | /* info->screen_base is in System RAM */ | 34 | /* info->screen_base is virtual memory */ |
35 | void *screen_base = (void __force *) info->screen_base; | 35 | void *screen_base = (void __force *) info->screen_base; |
36 | 36 | ||
37 | offset = vmf->pgoff << PAGE_SHIFT; | 37 | offset = vmf->pgoff << PAGE_SHIFT; |
@@ -43,6 +43,15 @@ static int fb_deferred_io_fault(struct vm_area_struct *vma, | |||
43 | return VM_FAULT_SIGBUS; | 43 | return VM_FAULT_SIGBUS; |
44 | 44 | ||
45 | get_page(page); | 45 | get_page(page); |
46 | |||
47 | if (vma->vm_file) | ||
48 | page->mapping = vma->vm_file->f_mapping; | ||
49 | else | ||
50 | printk(KERN_ERR "no mapping available\n"); | ||
51 | |||
52 | BUG_ON(!page->mapping); | ||
53 | page->index = vmf->pgoff; | ||
54 | |||
46 | vmf->page = page; | 55 | vmf->page = page; |
47 | return 0; | 56 | return 0; |
48 | } | 57 | } |
@@ -138,11 +147,20 @@ EXPORT_SYMBOL_GPL(fb_deferred_io_init); | |||
138 | 147 | ||
139 | void fb_deferred_io_cleanup(struct fb_info *info) | 148 | void fb_deferred_io_cleanup(struct fb_info *info) |
140 | { | 149 | { |
150 | void *screen_base = (void __force *) info->screen_base; | ||
141 | struct fb_deferred_io *fbdefio = info->fbdefio; | 151 | struct fb_deferred_io *fbdefio = info->fbdefio; |
152 | struct page *page; | ||
153 | int i; | ||
142 | 154 | ||
143 | BUG_ON(!fbdefio); | 155 | BUG_ON(!fbdefio); |
144 | cancel_delayed_work(&info->deferred_work); | 156 | cancel_delayed_work(&info->deferred_work); |
145 | flush_scheduled_work(); | 157 | flush_scheduled_work(); |
158 | |||
159 | /* clear out the mapping that we setup */ | ||
160 | for (i = 0 ; i < info->fix.smem_len; i += PAGE_SIZE) { | ||
161 | page = vmalloc_to_page(screen_base + i); | ||
162 | page->mapping = NULL; | ||
163 | } | ||
146 | } | 164 | } |
147 | EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup); | 165 | EXPORT_SYMBOL_GPL(fb_deferred_io_cleanup); |
148 | 166 | ||
diff --git a/drivers/video/i810/i810_main.c b/drivers/video/i810/i810_main.c index 1d13dd099af8..a24e680d2b9c 100644 --- a/drivers/video/i810/i810_main.c +++ b/drivers/video/i810/i810_main.c | |||
@@ -1476,7 +1476,7 @@ static int i810fb_cursor(struct fb_info *info, struct fb_cursor *cursor) | |||
1476 | struct i810fb_par *par = info->par; | 1476 | struct i810fb_par *par = info->par; |
1477 | u8 __iomem *mmio = par->mmio_start_virtual; | 1477 | u8 __iomem *mmio = par->mmio_start_virtual; |
1478 | 1478 | ||
1479 | if (!(par->dev_flags & LOCKUP)) | 1479 | if (par->dev_flags & LOCKUP) |
1480 | return -ENXIO; | 1480 | return -ENXIO; |
1481 | 1481 | ||
1482 | if (cursor->image.width > 64 || cursor->image.height > 64) | 1482 | if (cursor->image.width > 64 || cursor->image.height > 64) |
diff --git a/drivers/video/metronomefb.c b/drivers/video/metronomefb.c new file mode 100644 index 000000000000..e9a89fd82757 --- /dev/null +++ b/drivers/video/metronomefb.c | |||
@@ -0,0 +1,999 @@ | |||
1 | /* | ||
2 | * linux/drivers/video/metronomefb.c -- FB driver for Metronome controller | ||
3 | * | ||
4 | * Copyright (C) 2008, Jaya Kumar | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file COPYING in the main directory of this archive for | ||
8 | * more details. | ||
9 | * | ||
10 | * Layout is based on skeletonfb.c by James Simmons and Geert Uytterhoeven. | ||
11 | * | ||
12 | * This work was made possible by help and equipment support from E-Ink | ||
13 | * Corporation. http://support.eink.com/community | ||
14 | * | ||
15 | * This driver is written to be used with the Metronome display controller. | ||
16 | * It was tested with an E-Ink 800x600 Vizplex EPD on a Gumstix Connex board | ||
17 | * using the Lyre interface board. | ||
18 | * | ||
19 | * General notes: | ||
20 | * - User must set metronomefb_enable=1 to enable it. | ||
21 | * - See Documentation/fb/metronomefb.txt for how metronome works. | ||
22 | */ | ||
23 | #include <linux/module.h> | ||
24 | #include <linux/kernel.h> | ||
25 | #include <linux/errno.h> | ||
26 | #include <linux/string.h> | ||
27 | #include <linux/mm.h> | ||
28 | #include <linux/slab.h> | ||
29 | #include <linux/vmalloc.h> | ||
30 | #include <linux/delay.h> | ||
31 | #include <linux/interrupt.h> | ||
32 | #include <linux/fb.h> | ||
33 | #include <linux/init.h> | ||
34 | #include <linux/platform_device.h> | ||
35 | #include <linux/list.h> | ||
36 | #include <linux/firmware.h> | ||
37 | #include <linux/dma-mapping.h> | ||
38 | #include <linux/uaccess.h> | ||
39 | #include <linux/irq.h> | ||
40 | |||
41 | #include <asm/arch/pxa-regs.h> | ||
42 | #include <asm/unaligned.h> | ||
43 | |||
44 | #define DEBUG 1 | ||
45 | #ifdef DEBUG | ||
46 | #define DPRINTK(f, a...) printk(KERN_DEBUG "%s: " f, __func__ , ## a) | ||
47 | #else | ||
48 | #define DPRINTK(f, a...) | ||
49 | #endif | ||
50 | |||
51 | |||
52 | /* Display specific information */ | ||
53 | #define DPY_W 832 | ||
54 | #define DPY_H 622 | ||
55 | |||
56 | struct metromem_desc { | ||
57 | u32 mFDADR0; | ||
58 | u32 mFSADR0; | ||
59 | u32 mFIDR0; | ||
60 | u32 mLDCMD0; | ||
61 | }; | ||
62 | |||
63 | struct metromem_cmd { | ||
64 | u16 opcode; | ||
65 | u16 args[((64-2)/2)]; | ||
66 | u16 csum; | ||
67 | }; | ||
68 | |||
69 | struct metronomefb_par { | ||
70 | unsigned char *metromem; | ||
71 | struct metromem_desc *metromem_desc; | ||
72 | struct metromem_cmd *metromem_cmd; | ||
73 | unsigned char *metromem_wfm; | ||
74 | unsigned char *metromem_img; | ||
75 | u16 *metromem_img_csum; | ||
76 | u16 *csum_table; | ||
77 | int metromemsize; | ||
78 | dma_addr_t metromem_dma; | ||
79 | dma_addr_t metromem_desc_dma; | ||
80 | struct fb_info *info; | ||
81 | wait_queue_head_t waitq; | ||
82 | u8 frame_count; | ||
83 | }; | ||
84 | |||
85 | /* frame differs from image. frame includes non-visible pixels */ | ||
86 | struct epd_frame { | ||
87 | int fw; /* frame width */ | ||
88 | int fh; /* frame height */ | ||
89 | }; | ||
90 | |||
91 | static struct epd_frame epd_frame_table[] = { | ||
92 | { | ||
93 | .fw = 832, | ||
94 | .fh = 622 | ||
95 | }, | ||
96 | }; | ||
97 | |||
98 | static struct fb_fix_screeninfo metronomefb_fix __devinitdata = { | ||
99 | .id = "metronomefb", | ||
100 | .type = FB_TYPE_PACKED_PIXELS, | ||
101 | .visual = FB_VISUAL_STATIC_PSEUDOCOLOR, | ||
102 | .xpanstep = 0, | ||
103 | .ypanstep = 0, | ||
104 | .ywrapstep = 0, | ||
105 | .line_length = DPY_W, | ||
106 | .accel = FB_ACCEL_NONE, | ||
107 | }; | ||
108 | |||
109 | static struct fb_var_screeninfo metronomefb_var __devinitdata = { | ||
110 | .xres = DPY_W, | ||
111 | .yres = DPY_H, | ||
112 | .xres_virtual = DPY_W, | ||
113 | .yres_virtual = DPY_H, | ||
114 | .bits_per_pixel = 8, | ||
115 | .grayscale = 1, | ||
116 | .nonstd = 1, | ||
117 | .red = { 4, 3, 0 }, | ||
118 | .green = { 0, 0, 0 }, | ||
119 | .blue = { 0, 0, 0 }, | ||
120 | .transp = { 0, 0, 0 }, | ||
121 | }; | ||
122 | |||
123 | static unsigned int metronomefb_enable; | ||
124 | |||
125 | struct waveform_hdr { | ||
126 | u8 stuff[32]; | ||
127 | |||
128 | u8 wmta[3]; | ||
129 | u8 fvsn; | ||
130 | |||
131 | u8 luts; | ||
132 | u8 mc; | ||
133 | u8 trc; | ||
134 | u8 stuff3; | ||
135 | |||
136 | u8 endb; | ||
137 | u8 swtb; | ||
138 | u8 stuff2a[2]; | ||
139 | |||
140 | u8 stuff2b[3]; | ||
141 | u8 wfm_cs; | ||
142 | } __attribute__ ((packed)); | ||
143 | |||
144 | /* main metronomefb functions */ | ||
145 | static u8 calc_cksum(int start, int end, u8 *mem) | ||
146 | { | ||
147 | u8 tmp = 0; | ||
148 | int i; | ||
149 | |||
150 | for (i = start; i < end; i++) | ||
151 | tmp += mem[i]; | ||
152 | |||
153 | return tmp; | ||
154 | } | ||
155 | |||
156 | static u16 calc_img_cksum(u16 *start, int length) | ||
157 | { | ||
158 | u16 tmp = 0; | ||
159 | |||
160 | while (length--) | ||
161 | tmp += *start++; | ||
162 | |||
163 | return tmp; | ||
164 | } | ||
165 | |||
166 | /* here we decode the incoming waveform file and populate metromem */ | ||
167 | #define EXP_WFORM_SIZE 47001 | ||
168 | static int load_waveform(u8 *mem, size_t size, u8 *metromem, int m, int t, | ||
169 | u8 *frame_count) | ||
170 | { | ||
171 | int tta; | ||
172 | int wmta; | ||
173 | int trn = 0; | ||
174 | int i; | ||
175 | unsigned char v; | ||
176 | u8 cksum; | ||
177 | int cksum_idx; | ||
178 | int wfm_idx, owfm_idx; | ||
179 | int mem_idx = 0; | ||
180 | struct waveform_hdr *wfm_hdr; | ||
181 | |||
182 | if (size != EXP_WFORM_SIZE) { | ||
183 | printk(KERN_ERR "Error: unexpected size %d != %d\n", size, | ||
184 | EXP_WFORM_SIZE); | ||
185 | return -EINVAL; | ||
186 | } | ||
187 | |||
188 | wfm_hdr = (struct waveform_hdr *) mem; | ||
189 | |||
190 | if (wfm_hdr->fvsn != 1) { | ||
191 | printk(KERN_ERR "Error: bad fvsn %x\n", wfm_hdr->fvsn); | ||
192 | return -EINVAL; | ||
193 | } | ||
194 | if (wfm_hdr->luts != 0) { | ||
195 | printk(KERN_ERR "Error: bad luts %x\n", wfm_hdr->luts); | ||
196 | return -EINVAL; | ||
197 | } | ||
198 | cksum = calc_cksum(32, 47, mem); | ||
199 | if (cksum != wfm_hdr->wfm_cs) { | ||
200 | printk(KERN_ERR "Error: bad cksum %x != %x\n", cksum, | ||
201 | wfm_hdr->wfm_cs); | ||
202 | return -EINVAL; | ||
203 | } | ||
204 | wfm_hdr->mc += 1; | ||
205 | wfm_hdr->trc += 1; | ||
206 | for (i = 0; i < 5; i++) { | ||
207 | if (*(wfm_hdr->stuff2a + i) != 0) { | ||
208 | printk(KERN_ERR "Error: unexpected value in padding\n"); | ||
209 | return -EINVAL; | ||
210 | } | ||
211 | } | ||
212 | |||
213 | /* calculating trn. trn is something used to index into | ||
214 | the waveform. presumably selecting the right one for the | ||
215 | desired temperature. it works out the offset of the first | ||
216 | v that exceeds the specified temperature */ | ||
217 | if ((sizeof(*wfm_hdr) + wfm_hdr->trc) > size) | ||
218 | return -EINVAL; | ||
219 | |||
220 | for (i = sizeof(*wfm_hdr); i <= sizeof(*wfm_hdr) + wfm_hdr->trc; i++) { | ||
221 | if (mem[i] > t) { | ||
222 | trn = i - sizeof(*wfm_hdr) - 1; | ||
223 | break; | ||
224 | } | ||
225 | } | ||
226 | |||
227 | /* check temperature range table checksum */ | ||
228 | cksum_idx = sizeof(*wfm_hdr) + wfm_hdr->trc + 1; | ||
229 | if (cksum_idx > size) | ||
230 | return -EINVAL; | ||
231 | cksum = calc_cksum(sizeof(*wfm_hdr), cksum_idx, mem); | ||
232 | if (cksum != mem[cksum_idx]) { | ||
233 | printk(KERN_ERR "Error: bad temperature range table cksum" | ||
234 | " %x != %x\n", cksum, mem[cksum_idx]); | ||
235 | return -EINVAL; | ||
236 | } | ||
237 | |||
238 | /* check waveform mode table address checksum */ | ||
239 | wmta = le32_to_cpu(get_unaligned((__le32 *) wfm_hdr->wmta)); | ||
240 | wmta &= 0x00FFFFFF; | ||
241 | cksum_idx = wmta + m*4 + 3; | ||
242 | if (cksum_idx > size) | ||
243 | return -EINVAL; | ||
244 | cksum = calc_cksum(cksum_idx - 3, cksum_idx, mem); | ||
245 | if (cksum != mem[cksum_idx]) { | ||
246 | printk(KERN_ERR "Error: bad mode table address cksum" | ||
247 | " %x != %x\n", cksum, mem[cksum_idx]); | ||
248 | return -EINVAL; | ||
249 | } | ||
250 | |||
251 | /* check waveform temperature table address checksum */ | ||
252 | tta = le32_to_cpu(get_unaligned((int *) (mem + wmta + m*4))); | ||
253 | tta &= 0x00FFFFFF; | ||
254 | cksum_idx = tta + trn*4 + 3; | ||
255 | if (cksum_idx > size) | ||
256 | return -EINVAL; | ||
257 | cksum = calc_cksum(cksum_idx - 3, cksum_idx, mem); | ||
258 | if (cksum != mem[cksum_idx]) { | ||
259 | printk(KERN_ERR "Error: bad temperature table address cksum" | ||
260 | " %x != %x\n", cksum, mem[cksum_idx]); | ||
261 | return -EINVAL; | ||
262 | } | ||
263 | |||
264 | /* here we do the real work of putting the waveform into the | ||
265 | metromem buffer. this does runlength decoding of the waveform */ | ||
266 | wfm_idx = le32_to_cpu(get_unaligned((__le32 *) (mem + tta + trn*4))); | ||
267 | wfm_idx &= 0x00FFFFFF; | ||
268 | owfm_idx = wfm_idx; | ||
269 | if (wfm_idx > size) | ||
270 | return -EINVAL; | ||
271 | while (wfm_idx < size) { | ||
272 | unsigned char rl; | ||
273 | v = mem[wfm_idx++]; | ||
274 | if (v == wfm_hdr->swtb) { | ||
275 | while (((v = mem[wfm_idx++]) != wfm_hdr->swtb) && | ||
276 | wfm_idx < size) | ||
277 | metromem[mem_idx++] = v; | ||
278 | |||
279 | continue; | ||
280 | } | ||
281 | |||
282 | if (v == wfm_hdr->endb) | ||
283 | break; | ||
284 | |||
285 | rl = mem[wfm_idx++]; | ||
286 | for (i = 0; i <= rl; i++) | ||
287 | metromem[mem_idx++] = v; | ||
288 | } | ||
289 | |||
290 | cksum_idx = wfm_idx; | ||
291 | if (cksum_idx > size) | ||
292 | return -EINVAL; | ||
293 | cksum = calc_cksum(owfm_idx, cksum_idx, mem); | ||
294 | if (cksum != mem[cksum_idx]) { | ||
295 | printk(KERN_ERR "Error: bad waveform data cksum" | ||
296 | " %x != %x\n", cksum, mem[cksum_idx]); | ||
297 | return -EINVAL; | ||
298 | } | ||
299 | *frame_count = (mem_idx/64); | ||
300 | |||
301 | return 0; | ||
302 | } | ||
303 | |||
304 | /* register offsets for gpio control */ | ||
305 | #define LED_GPIO_PIN 51 | ||
306 | #define STDBY_GPIO_PIN 48 | ||
307 | #define RST_GPIO_PIN 49 | ||
308 | #define RDY_GPIO_PIN 32 | ||
309 | #define ERR_GPIO_PIN 17 | ||
310 | #define PCBPWR_GPIO_PIN 16 | ||
311 | |||
312 | #define AF_SEL_GPIO_N 0x3 | ||
313 | #define GAFR0_U_OFFSET(pin) ((pin - 16) * 2) | ||
314 | #define GAFR1_L_OFFSET(pin) ((pin - 32) * 2) | ||
315 | #define GAFR1_U_OFFSET(pin) ((pin - 48) * 2) | ||
316 | #define GPDR1_OFFSET(pin) (pin - 32) | ||
317 | #define GPCR1_OFFSET(pin) (pin - 32) | ||
318 | #define GPSR1_OFFSET(pin) (pin - 32) | ||
319 | #define GPCR0_OFFSET(pin) (pin) | ||
320 | #define GPSR0_OFFSET(pin) (pin) | ||
321 | |||
322 | static void metronome_set_gpio_output(int pin, int val) | ||
323 | { | ||
324 | u8 index; | ||
325 | |||
326 | index = pin >> 4; | ||
327 | |||
328 | switch (index) { | ||
329 | case 1: | ||
330 | if (val) | ||
331 | GPSR0 |= (1 << GPSR0_OFFSET(pin)); | ||
332 | else | ||
333 | GPCR0 |= (1 << GPCR0_OFFSET(pin)); | ||
334 | break; | ||
335 | case 2: | ||
336 | break; | ||
337 | case 3: | ||
338 | if (val) | ||
339 | GPSR1 |= (1 << GPSR1_OFFSET(pin)); | ||
340 | else | ||
341 | GPCR1 |= (1 << GPCR1_OFFSET(pin)); | ||
342 | break; | ||
343 | default: | ||
344 | printk(KERN_ERR "unimplemented\n"); | ||
345 | } | ||
346 | } | ||
347 | |||
348 | static void __devinit metronome_init_gpio_pin(int pin, int dir) | ||
349 | { | ||
350 | u8 index; | ||
351 | /* dir 0 is output, 1 is input | ||
352 | - do 2 things here: | ||
353 | - set gpio alternate function to standard gpio | ||
354 | - set gpio direction to input or output */ | ||
355 | |||
356 | index = pin >> 4; | ||
357 | switch (index) { | ||
358 | case 1: | ||
359 | GAFR0_U &= ~(AF_SEL_GPIO_N << GAFR0_U_OFFSET(pin)); | ||
360 | |||
361 | if (dir) | ||
362 | GPDR0 &= ~(1 << pin); | ||
363 | else | ||
364 | GPDR0 |= (1 << pin); | ||
365 | break; | ||
366 | case 2: | ||
367 | GAFR1_L &= ~(AF_SEL_GPIO_N << GAFR1_L_OFFSET(pin)); | ||
368 | |||
369 | if (dir) | ||
370 | GPDR1 &= ~(1 << GPDR1_OFFSET(pin)); | ||
371 | else | ||
372 | GPDR1 |= (1 << GPDR1_OFFSET(pin)); | ||
373 | break; | ||
374 | case 3: | ||
375 | GAFR1_U &= ~(AF_SEL_GPIO_N << GAFR1_U_OFFSET(pin)); | ||
376 | |||
377 | if (dir) | ||
378 | GPDR1 &= ~(1 << GPDR1_OFFSET(pin)); | ||
379 | else | ||
380 | GPDR1 |= (1 << GPDR1_OFFSET(pin)); | ||
381 | break; | ||
382 | default: | ||
383 | printk(KERN_ERR "unimplemented\n"); | ||
384 | } | ||
385 | } | ||
386 | |||
387 | static void __devinit metronome_init_gpio_regs(void) | ||
388 | { | ||
389 | metronome_init_gpio_pin(LED_GPIO_PIN, 0); | ||
390 | metronome_set_gpio_output(LED_GPIO_PIN, 0); | ||
391 | |||
392 | metronome_init_gpio_pin(STDBY_GPIO_PIN, 0); | ||
393 | metronome_set_gpio_output(STDBY_GPIO_PIN, 0); | ||
394 | |||
395 | metronome_init_gpio_pin(RST_GPIO_PIN, 0); | ||
396 | metronome_set_gpio_output(RST_GPIO_PIN, 0); | ||
397 | |||
398 | metronome_init_gpio_pin(RDY_GPIO_PIN, 1); | ||
399 | |||
400 | metronome_init_gpio_pin(ERR_GPIO_PIN, 1); | ||
401 | |||
402 | metronome_init_gpio_pin(PCBPWR_GPIO_PIN, 0); | ||
403 | metronome_set_gpio_output(PCBPWR_GPIO_PIN, 0); | ||
404 | } | ||
405 | |||
406 | static void metronome_disable_lcd_controller(struct metronomefb_par *par) | ||
407 | { | ||
408 | LCSR = 0xffffffff; /* Clear LCD Status Register */ | ||
409 | LCCR0 |= LCCR0_DIS; /* Disable LCD Controller */ | ||
410 | |||
411 | /* we reset and just wait for things to settle */ | ||
412 | msleep(200); | ||
413 | } | ||
414 | |||
415 | static void metronome_enable_lcd_controller(struct metronomefb_par *par) | ||
416 | { | ||
417 | LCSR = 0xffffffff; | ||
418 | FDADR0 = par->metromem_desc_dma; | ||
419 | LCCR0 |= LCCR0_ENB; | ||
420 | } | ||
421 | |||
422 | static void __devinit metronome_init_lcdc_regs(struct metronomefb_par *par) | ||
423 | { | ||
424 | /* here we do: | ||
425 | - disable the lcd controller | ||
426 | - setup lcd control registers | ||
427 | - setup dma descriptor | ||
428 | - reenable lcd controller | ||
429 | */ | ||
430 | |||
431 | /* disable the lcd controller */ | ||
432 | metronome_disable_lcd_controller(par); | ||
433 | |||
434 | /* setup lcd control registers */ | ||
435 | LCCR0 = LCCR0_LDM | LCCR0_SFM | LCCR0_IUM | LCCR0_EFM | LCCR0_PAS | ||
436 | | LCCR0_QDM | LCCR0_BM | LCCR0_OUM; | ||
437 | |||
438 | LCCR1 = (epd_frame_table[0].fw/2 - 1) /* pixels per line */ | ||
439 | | (27 << 10) /* hsync pulse width - 1 */ | ||
440 | | (33 << 16) /* eol pixel count */ | ||
441 | | (33 << 24); /* bol pixel count */ | ||
442 | |||
443 | LCCR2 = (epd_frame_table[0].fh - 1) /* lines per panel */ | ||
444 | | (24 << 10) /* vsync pulse width - 1 */ | ||
445 | | (2 << 16) /* eof pixel count */ | ||
446 | | (0 << 24); /* bof pixel count */ | ||
447 | |||
448 | LCCR3 = 2 /* pixel clock divisor */ | ||
449 | | (24 << 8) /* AC Bias pin freq */ | ||
450 | | LCCR3_16BPP /* BPP */ | ||
451 | | LCCR3_PCP; /* PCP falling edge */ | ||
452 | |||
453 | /* setup dma descriptor */ | ||
454 | par->metromem_desc->mFDADR0 = par->metromem_desc_dma; | ||
455 | par->metromem_desc->mFSADR0 = par->metromem_dma; | ||
456 | par->metromem_desc->mFIDR0 = 0; | ||
457 | par->metromem_desc->mLDCMD0 = epd_frame_table[0].fw | ||
458 | * epd_frame_table[0].fh; | ||
459 | /* reenable lcd controller */ | ||
460 | metronome_enable_lcd_controller(par); | ||
461 | } | ||
462 | |||
463 | static int metronome_display_cmd(struct metronomefb_par *par) | ||
464 | { | ||
465 | int i; | ||
466 | u16 cs; | ||
467 | u16 opcode; | ||
468 | static u8 borderval; | ||
469 | u8 *ptr; | ||
470 | |||
471 | /* setup display command | ||
472 | we can't immediately set the opcode since the controller | ||
473 | will try parse the command before we've set it all up | ||
474 | so we just set cs here and set the opcode at the end */ | ||
475 | |||
476 | ptr = par->metromem; | ||
477 | |||
478 | if (par->metromem_cmd->opcode == 0xCC40) | ||
479 | opcode = cs = 0xCC41; | ||
480 | else | ||
481 | opcode = cs = 0xCC40; | ||
482 | |||
483 | /* set the args ( 2 bytes ) for display */ | ||
484 | i = 0; | ||
485 | par->metromem_cmd->args[i] = 1 << 3 /* border update */ | ||
486 | | ((borderval++ % 4) & 0x0F) << 4 | ||
487 | | (par->frame_count - 1) << 8; | ||
488 | cs += par->metromem_cmd->args[i++]; | ||
489 | |||
490 | /* the rest are 0 */ | ||
491 | memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2); | ||
492 | |||
493 | par->metromem_cmd->csum = cs; | ||
494 | par->metromem_cmd->opcode = opcode; /* display cmd */ | ||
495 | |||
496 | i = wait_event_interruptible_timeout(par->waitq, (GPLR1 & 0x01), HZ); | ||
497 | return i; | ||
498 | } | ||
499 | |||
500 | static int __devinit metronome_powerup_cmd(struct metronomefb_par *par) | ||
501 | { | ||
502 | int i; | ||
503 | u16 cs; | ||
504 | |||
505 | /* setup power up command */ | ||
506 | par->metromem_cmd->opcode = 0x1234; /* pwr up pseudo cmd */ | ||
507 | cs = par->metromem_cmd->opcode; | ||
508 | |||
509 | /* set pwr1,2,3 to 1024 */ | ||
510 | for (i = 0; i < 3; i++) { | ||
511 | par->metromem_cmd->args[i] = 1024; | ||
512 | cs += par->metromem_cmd->args[i]; | ||
513 | } | ||
514 | |||
515 | /* the rest are 0 */ | ||
516 | memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2); | ||
517 | |||
518 | par->metromem_cmd->csum = cs; | ||
519 | |||
520 | msleep(1); | ||
521 | metronome_set_gpio_output(RST_GPIO_PIN, 1); | ||
522 | |||
523 | msleep(1); | ||
524 | metronome_set_gpio_output(STDBY_GPIO_PIN, 1); | ||
525 | |||
526 | i = wait_event_timeout(par->waitq, (GPLR1 & 0x01), HZ); | ||
527 | return i; | ||
528 | } | ||
529 | |||
530 | static int __devinit metronome_config_cmd(struct metronomefb_par *par) | ||
531 | { | ||
532 | int i; | ||
533 | u16 cs; | ||
534 | |||
535 | /* setup config command | ||
536 | we can't immediately set the opcode since the controller | ||
537 | will try parse the command before we've set it all up | ||
538 | so we just set cs here and set the opcode at the end */ | ||
539 | |||
540 | cs = 0xCC10; | ||
541 | |||
542 | /* set the 12 args ( 8 bytes ) for config. see spec for meanings */ | ||
543 | i = 0; | ||
544 | par->metromem_cmd->args[i] = 15 /* sdlew */ | ||
545 | | 2 << 8 /* sdosz */ | ||
546 | | 0 << 11 /* sdor */ | ||
547 | | 0 << 12 /* sdces */ | ||
548 | | 0 << 15; /* sdcer */ | ||
549 | cs += par->metromem_cmd->args[i++]; | ||
550 | |||
551 | par->metromem_cmd->args[i] = 42 /* gdspl */ | ||
552 | | 1 << 8 /* gdr1 */ | ||
553 | | 1 << 9 /* sdshr */ | ||
554 | | 0 << 15; /* gdspp */ | ||
555 | cs += par->metromem_cmd->args[i++]; | ||
556 | |||
557 | par->metromem_cmd->args[i] = 18 /* gdspw */ | ||
558 | | 0 << 15; /* dispc */ | ||
559 | cs += par->metromem_cmd->args[i++]; | ||
560 | |||
561 | par->metromem_cmd->args[i] = 599 /* vdlc */ | ||
562 | | 0 << 11 /* dsi */ | ||
563 | | 0 << 12; /* dsic */ | ||
564 | cs += par->metromem_cmd->args[i++]; | ||
565 | |||
566 | /* the rest are 0 */ | ||
567 | memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2); | ||
568 | |||
569 | par->metromem_cmd->csum = cs; | ||
570 | par->metromem_cmd->opcode = 0xCC10; /* config cmd */ | ||
571 | |||
572 | i = wait_event_timeout(par->waitq, (GPLR1 & 0x01), HZ); | ||
573 | return i; | ||
574 | } | ||
575 | |||
576 | static int __devinit metronome_init_cmd(struct metronomefb_par *par) | ||
577 | { | ||
578 | int i; | ||
579 | u16 cs; | ||
580 | |||
581 | /* setup init command | ||
582 | we can't immediately set the opcode since the controller | ||
583 | will try parse the command before we've set it all up | ||
584 | so we just set cs here and set the opcode at the end */ | ||
585 | |||
586 | cs = 0xCC20; | ||
587 | |||
588 | /* set the args ( 2 bytes ) for init */ | ||
589 | i = 0; | ||
590 | par->metromem_cmd->args[i] = 0; | ||
591 | cs += par->metromem_cmd->args[i++]; | ||
592 | |||
593 | /* the rest are 0 */ | ||
594 | memset((u8 *) (par->metromem_cmd->args + i), 0, (32-i)*2); | ||
595 | |||
596 | par->metromem_cmd->csum = cs; | ||
597 | par->metromem_cmd->opcode = 0xCC20; /* init cmd */ | ||
598 | |||
599 | i = wait_event_timeout(par->waitq, (GPLR1 & 0x01), HZ); | ||
600 | return i; | ||
601 | } | ||
602 | |||
603 | static int __devinit metronome_init_regs(struct metronomefb_par *par) | ||
604 | { | ||
605 | int res; | ||
606 | |||
607 | metronome_init_gpio_regs(); | ||
608 | metronome_init_lcdc_regs(par); | ||
609 | |||
610 | res = metronome_powerup_cmd(par); | ||
611 | if (res) | ||
612 | return res; | ||
613 | |||
614 | res = metronome_config_cmd(par); | ||
615 | if (res) | ||
616 | return res; | ||
617 | |||
618 | res = metronome_init_cmd(par); | ||
619 | if (res) | ||
620 | return res; | ||
621 | |||
622 | return res; | ||
623 | } | ||
624 | |||
625 | static void metronomefb_dpy_update(struct metronomefb_par *par) | ||
626 | { | ||
627 | u16 cksum; | ||
628 | unsigned char *buf = (unsigned char __force *)par->info->screen_base; | ||
629 | |||
630 | /* copy from vm to metromem */ | ||
631 | memcpy(par->metromem_img, buf, DPY_W*DPY_H); | ||
632 | |||
633 | cksum = calc_img_cksum((u16 *) par->metromem_img, | ||
634 | (epd_frame_table[0].fw * DPY_H)/2); | ||
635 | *((u16 *) (par->metromem_img) + | ||
636 | (epd_frame_table[0].fw * DPY_H)/2) = cksum; | ||
637 | metronome_display_cmd(par); | ||
638 | } | ||
639 | |||
640 | static u16 metronomefb_dpy_update_page(struct metronomefb_par *par, int index) | ||
641 | { | ||
642 | int i; | ||
643 | u16 csum = 0; | ||
644 | u16 *buf = (u16 __force *) (par->info->screen_base + index); | ||
645 | u16 *img = (u16 *) (par->metromem_img + index); | ||
646 | |||
647 | /* swizzle from vm to metromem and recalc cksum at the same time*/ | ||
648 | for (i = 0; i < PAGE_SIZE/2; i++) { | ||
649 | *(img + i) = (buf[i] << 5) & 0xE0E0; | ||
650 | csum += *(img + i); | ||
651 | } | ||
652 | return csum; | ||
653 | } | ||
654 | |||
655 | /* this is called back from the deferred io workqueue */ | ||
656 | static void metronomefb_dpy_deferred_io(struct fb_info *info, | ||
657 | struct list_head *pagelist) | ||
658 | { | ||
659 | u16 cksum; | ||
660 | struct page *cur; | ||
661 | struct fb_deferred_io *fbdefio = info->fbdefio; | ||
662 | struct metronomefb_par *par = info->par; | ||
663 | |||
664 | /* walk the written page list and swizzle the data */ | ||
665 | list_for_each_entry(cur, &fbdefio->pagelist, lru) { | ||
666 | cksum = metronomefb_dpy_update_page(par, | ||
667 | (cur->index << PAGE_SHIFT)); | ||
668 | par->metromem_img_csum -= par->csum_table[cur->index]; | ||
669 | par->csum_table[cur->index] = cksum; | ||
670 | par->metromem_img_csum += cksum; | ||
671 | } | ||
672 | |||
673 | metronome_display_cmd(par); | ||
674 | } | ||
675 | |||
676 | static void metronomefb_fillrect(struct fb_info *info, | ||
677 | const struct fb_fillrect *rect) | ||
678 | { | ||
679 | struct metronomefb_par *par = info->par; | ||
680 | |||
681 | cfb_fillrect(info, rect); | ||
682 | metronomefb_dpy_update(par); | ||
683 | } | ||
684 | |||
685 | static void metronomefb_copyarea(struct fb_info *info, | ||
686 | const struct fb_copyarea *area) | ||
687 | { | ||
688 | struct metronomefb_par *par = info->par; | ||
689 | |||
690 | cfb_copyarea(info, area); | ||
691 | metronomefb_dpy_update(par); | ||
692 | } | ||
693 | |||
694 | static void metronomefb_imageblit(struct fb_info *info, | ||
695 | const struct fb_image *image) | ||
696 | { | ||
697 | struct metronomefb_par *par = info->par; | ||
698 | |||
699 | cfb_imageblit(info, image); | ||
700 | metronomefb_dpy_update(par); | ||
701 | } | ||
702 | |||
703 | /* | ||
704 | * this is the slow path from userspace. they can seek and write to | ||
705 | * the fb. it is based on fb_sys_write | ||
706 | */ | ||
707 | static ssize_t metronomefb_write(struct fb_info *info, const char __user *buf, | ||
708 | size_t count, loff_t *ppos) | ||
709 | { | ||
710 | struct metronomefb_par *par = info->par; | ||
711 | unsigned long p = *ppos; | ||
712 | void *dst; | ||
713 | int err = 0; | ||
714 | unsigned long total_size; | ||
715 | |||
716 | if (info->state != FBINFO_STATE_RUNNING) | ||
717 | return -EPERM; | ||
718 | |||
719 | total_size = info->fix.smem_len; | ||
720 | |||
721 | if (p > total_size) | ||
722 | return -EFBIG; | ||
723 | |||
724 | if (count > total_size) { | ||
725 | err = -EFBIG; | ||
726 | count = total_size; | ||
727 | } | ||
728 | |||
729 | if (count + p > total_size) { | ||
730 | if (!err) | ||
731 | err = -ENOSPC; | ||
732 | |||
733 | count = total_size - p; | ||
734 | } | ||
735 | |||
736 | dst = (void __force *) (info->screen_base + p); | ||
737 | |||
738 | if (copy_from_user(dst, buf, count)) | ||
739 | err = -EFAULT; | ||
740 | |||
741 | if (!err) | ||
742 | *ppos += count; | ||
743 | |||
744 | metronomefb_dpy_update(par); | ||
745 | |||
746 | return (err) ? err : count; | ||
747 | } | ||
748 | |||
749 | static struct fb_ops metronomefb_ops = { | ||
750 | .owner = THIS_MODULE, | ||
751 | .fb_write = metronomefb_write, | ||
752 | .fb_fillrect = metronomefb_fillrect, | ||
753 | .fb_copyarea = metronomefb_copyarea, | ||
754 | .fb_imageblit = metronomefb_imageblit, | ||
755 | }; | ||
756 | |||
757 | static struct fb_deferred_io metronomefb_defio = { | ||
758 | .delay = HZ, | ||
759 | .deferred_io = metronomefb_dpy_deferred_io, | ||
760 | }; | ||
761 | |||
762 | static irqreturn_t metronome_handle_irq(int irq, void *dev_id) | ||
763 | { | ||
764 | struct fb_info *info = dev_id; | ||
765 | struct metronomefb_par *par = info->par; | ||
766 | |||
767 | wake_up_interruptible(&par->waitq); | ||
768 | return IRQ_HANDLED; | ||
769 | } | ||
770 | |||
771 | static int __devinit metronomefb_probe(struct platform_device *dev) | ||
772 | { | ||
773 | struct fb_info *info; | ||
774 | int retval = -ENOMEM; | ||
775 | int videomemorysize; | ||
776 | unsigned char *videomemory; | ||
777 | struct metronomefb_par *par; | ||
778 | const struct firmware *fw_entry; | ||
779 | int cmd_size, wfm_size, img_size, padding_size, totalsize; | ||
780 | int i; | ||
781 | |||
782 | /* we have two blocks of memory. | ||
783 | info->screen_base which is vm, and is the fb used by apps. | ||
784 | par->metromem which is physically contiguous memory and | ||
785 | contains the display controller commands, waveform, | ||
786 | processed image data and padding. this is the data pulled | ||
787 | by the pxa255's LCD controller and pushed to Metronome */ | ||
788 | |||
789 | videomemorysize = (DPY_W*DPY_H); | ||
790 | videomemory = vmalloc(videomemorysize); | ||
791 | if (!videomemory) | ||
792 | return retval; | ||
793 | |||
794 | memset(videomemory, 0, videomemorysize); | ||
795 | |||
796 | info = framebuffer_alloc(sizeof(struct metronomefb_par), &dev->dev); | ||
797 | if (!info) | ||
798 | goto err_vfree; | ||
799 | |||
800 | info->screen_base = (char __iomem *) videomemory; | ||
801 | info->fbops = &metronomefb_ops; | ||
802 | |||
803 | info->var = metronomefb_var; | ||
804 | info->fix = metronomefb_fix; | ||
805 | info->fix.smem_len = videomemorysize; | ||
806 | par = info->par; | ||
807 | par->info = info; | ||
808 | init_waitqueue_head(&par->waitq); | ||
809 | |||
810 | /* this table caches per page csum values. */ | ||
811 | par->csum_table = vmalloc(videomemorysize/PAGE_SIZE); | ||
812 | if (!par->csum_table) | ||
813 | goto err_csum_table; | ||
814 | |||
815 | /* the metromem buffer is divided as follows: | ||
816 | command | CRC | padding | ||
817 | 16kb waveform data | CRC | padding | ||
818 | image data | CRC | ||
819 | and an extra 256 bytes for dma descriptors | ||
820 | eg: IW=832 IH=622 WS=128 | ||
821 | */ | ||
822 | |||
823 | cmd_size = 1 * epd_frame_table[0].fw; | ||
824 | wfm_size = ((16*1024 + 2 + epd_frame_table[0].fw - 1) | ||
825 | / epd_frame_table[0].fw) * epd_frame_table[0].fw; | ||
826 | img_size = epd_frame_table[0].fh * epd_frame_table[0].fw; | ||
827 | padding_size = 4 * epd_frame_table[0].fw; | ||
828 | totalsize = cmd_size + wfm_size + img_size + padding_size; | ||
829 | par->metromemsize = PAGE_ALIGN(totalsize + 256); | ||
830 | DPRINTK("desired memory size = %d\n", par->metromemsize); | ||
831 | dev->dev.coherent_dma_mask = 0xffffffffull; | ||
832 | par->metromem = dma_alloc_writecombine(&dev->dev, par->metromemsize, | ||
833 | &par->metromem_dma, GFP_KERNEL); | ||
834 | if (!par->metromem) { | ||
835 | printk(KERN_ERR | ||
836 | "metronomefb: unable to allocate dma buffer\n"); | ||
837 | goto err_vfree; | ||
838 | } | ||
839 | |||
840 | info->fix.smem_start = par->metromem_dma; | ||
841 | par->metromem_cmd = (struct metromem_cmd *) par->metromem; | ||
842 | par->metromem_wfm = par->metromem + cmd_size; | ||
843 | par->metromem_img = par->metromem + cmd_size + wfm_size; | ||
844 | par->metromem_img_csum = (u16 *) (par->metromem_img + | ||
845 | (epd_frame_table[0].fw * DPY_H)); | ||
846 | DPRINTK("img offset=0x%x\n", cmd_size + wfm_size); | ||
847 | par->metromem_desc = (struct metromem_desc *) (par->metromem + cmd_size | ||
848 | + wfm_size + img_size + padding_size); | ||
849 | par->metromem_desc_dma = par->metromem_dma + cmd_size + wfm_size | ||
850 | + img_size + padding_size; | ||
851 | |||
852 | /* load the waveform in. assume mode 3, temp 31 for now */ | ||
853 | /* a) request the waveform file from userspace | ||
854 | b) process waveform and decode into metromem */ | ||
855 | |||
856 | retval = request_firmware(&fw_entry, "waveform.wbf", &dev->dev); | ||
857 | if (retval < 0) { | ||
858 | printk(KERN_ERR "metronomefb: couldn't get waveform\n"); | ||
859 | goto err_dma_free; | ||
860 | } | ||
861 | |||
862 | retval = load_waveform((u8 *) fw_entry->data, fw_entry->size, | ||
863 | par->metromem_wfm, 3, 31, &par->frame_count); | ||
864 | if (retval < 0) { | ||
865 | printk(KERN_ERR "metronomefb: couldn't process waveform\n"); | ||
866 | goto err_ld_wfm; | ||
867 | } | ||
868 | release_firmware(fw_entry); | ||
869 | |||
870 | retval = request_irq(IRQ_GPIO(RDY_GPIO_PIN), metronome_handle_irq, | ||
871 | IRQF_DISABLED, "Metronome", info); | ||
872 | if (retval) { | ||
873 | dev_err(&dev->dev, "request_irq failed: %d\n", retval); | ||
874 | goto err_ld_wfm; | ||
875 | } | ||
876 | set_irq_type(IRQ_GPIO(RDY_GPIO_PIN), IRQT_FALLING); | ||
877 | |||
878 | retval = metronome_init_regs(par); | ||
879 | if (retval < 0) | ||
880 | goto err_free_irq; | ||
881 | |||
882 | info->flags = FBINFO_FLAG_DEFAULT; | ||
883 | |||
884 | info->fbdefio = &metronomefb_defio; | ||
885 | fb_deferred_io_init(info); | ||
886 | |||
887 | retval = fb_alloc_cmap(&info->cmap, 8, 0); | ||
888 | if (retval < 0) { | ||
889 | printk(KERN_ERR "Failed to allocate colormap\n"); | ||
890 | goto err_fb_rel; | ||
891 | } | ||
892 | |||
893 | /* set cmap */ | ||
894 | for (i = 0; i < 8; i++) | ||
895 | info->cmap.red[i] = (((2*i)+1)*(0xFFFF))/16; | ||
896 | memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*8); | ||
897 | memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*8); | ||
898 | |||
899 | retval = register_framebuffer(info); | ||
900 | if (retval < 0) | ||
901 | goto err_cmap; | ||
902 | |||
903 | platform_set_drvdata(dev, info); | ||
904 | |||
905 | printk(KERN_INFO | ||
906 | "fb%d: Metronome frame buffer device, using %dK of video" | ||
907 | " memory\n", info->node, videomemorysize >> 10); | ||
908 | |||
909 | return 0; | ||
910 | |||
911 | err_cmap: | ||
912 | fb_dealloc_cmap(&info->cmap); | ||
913 | err_fb_rel: | ||
914 | framebuffer_release(info); | ||
915 | err_free_irq: | ||
916 | free_irq(IRQ_GPIO(RDY_GPIO_PIN), info); | ||
917 | err_ld_wfm: | ||
918 | release_firmware(fw_entry); | ||
919 | err_dma_free: | ||
920 | dma_free_writecombine(&dev->dev, par->metromemsize, par->metromem, | ||
921 | par->metromem_dma); | ||
922 | err_csum_table: | ||
923 | vfree(par->csum_table); | ||
924 | err_vfree: | ||
925 | vfree(videomemory); | ||
926 | return retval; | ||
927 | } | ||
928 | |||
929 | static int __devexit metronomefb_remove(struct platform_device *dev) | ||
930 | { | ||
931 | struct fb_info *info = platform_get_drvdata(dev); | ||
932 | |||
933 | if (info) { | ||
934 | struct metronomefb_par *par = info->par; | ||
935 | fb_deferred_io_cleanup(info); | ||
936 | dma_free_writecombine(&dev->dev, par->metromemsize, | ||
937 | par->metromem, par->metromem_dma); | ||
938 | fb_dealloc_cmap(&info->cmap); | ||
939 | vfree(par->csum_table); | ||
940 | unregister_framebuffer(info); | ||
941 | vfree((void __force *)info->screen_base); | ||
942 | free_irq(IRQ_GPIO(RDY_GPIO_PIN), info); | ||
943 | framebuffer_release(info); | ||
944 | } | ||
945 | return 0; | ||
946 | } | ||
947 | |||
948 | static struct platform_driver metronomefb_driver = { | ||
949 | .probe = metronomefb_probe, | ||
950 | .remove = metronomefb_remove, | ||
951 | .driver = { | ||
952 | .name = "metronomefb", | ||
953 | }, | ||
954 | }; | ||
955 | |||
956 | static struct platform_device *metronomefb_device; | ||
957 | |||
958 | static int __init metronomefb_init(void) | ||
959 | { | ||
960 | int ret; | ||
961 | |||
962 | if (!metronomefb_enable) { | ||
963 | printk(KERN_ERR | ||
964 | "Use metronomefb_enable to enable the device\n"); | ||
965 | return -ENXIO; | ||
966 | } | ||
967 | |||
968 | ret = platform_driver_register(&metronomefb_driver); | ||
969 | if (!ret) { | ||
970 | metronomefb_device = platform_device_alloc("metronomefb", 0); | ||
971 | if (metronomefb_device) | ||
972 | ret = platform_device_add(metronomefb_device); | ||
973 | else | ||
974 | ret = -ENOMEM; | ||
975 | |||
976 | if (ret) { | ||
977 | platform_device_put(metronomefb_device); | ||
978 | platform_driver_unregister(&metronomefb_driver); | ||
979 | } | ||
980 | } | ||
981 | return ret; | ||
982 | |||
983 | } | ||
984 | |||
985 | static void __exit metronomefb_exit(void) | ||
986 | { | ||
987 | platform_device_unregister(metronomefb_device); | ||
988 | platform_driver_unregister(&metronomefb_driver); | ||
989 | } | ||
990 | |||
991 | module_param(metronomefb_enable, uint, 0); | ||
992 | MODULE_PARM_DESC(metronomefb_enable, "Enable communication with Metronome"); | ||
993 | |||
994 | module_init(metronomefb_init); | ||
995 | module_exit(metronomefb_exit); | ||
996 | |||
997 | MODULE_DESCRIPTION("fbdev driver for Metronome controller"); | ||
998 | MODULE_AUTHOR("Jaya Kumar"); | ||
999 | MODULE_LICENSE("GPL"); | ||
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c index c8a4332d1132..0b3efc31ee6d 100644 --- a/drivers/virtio/virtio_balloon.c +++ b/drivers/virtio/virtio_balloon.c | |||
@@ -152,7 +152,7 @@ static void virtballoon_changed(struct virtio_device *vdev) | |||
152 | wake_up(&vb->config_change); | 152 | wake_up(&vb->config_change); |
153 | } | 153 | } |
154 | 154 | ||
155 | static inline int towards_target(struct virtio_balloon *vb) | 155 | static inline s64 towards_target(struct virtio_balloon *vb) |
156 | { | 156 | { |
157 | u32 v; | 157 | u32 v; |
158 | __virtio_config_val(vb->vdev, | 158 | __virtio_config_val(vb->vdev, |
@@ -176,7 +176,7 @@ static int balloon(void *_vballoon) | |||
176 | 176 | ||
177 | set_freezable(); | 177 | set_freezable(); |
178 | while (!kthread_should_stop()) { | 178 | while (!kthread_should_stop()) { |
179 | int diff; | 179 | s64 diff; |
180 | 180 | ||
181 | try_to_freeze(); | 181 | try_to_freeze(); |
182 | wait_event_interruptible(vb->config_change, | 182 | wait_event_interruptible(vb->config_change, |
diff --git a/drivers/virtio/virtio_pci.c b/drivers/virtio/virtio_pci.c index 26f787ddd5ff..59a8f73dec73 100644 --- a/drivers/virtio/virtio_pci.c +++ b/drivers/virtio/virtio_pci.c | |||
@@ -177,6 +177,7 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) | |||
177 | struct virtio_pci_device *vp_dev = opaque; | 177 | struct virtio_pci_device *vp_dev = opaque; |
178 | struct virtio_pci_vq_info *info; | 178 | struct virtio_pci_vq_info *info; |
179 | irqreturn_t ret = IRQ_NONE; | 179 | irqreturn_t ret = IRQ_NONE; |
180 | unsigned long flags; | ||
180 | u8 isr; | 181 | u8 isr; |
181 | 182 | ||
182 | /* reading the ISR has the effect of also clearing it so it's very | 183 | /* reading the ISR has the effect of also clearing it so it's very |
@@ -197,12 +198,12 @@ static irqreturn_t vp_interrupt(int irq, void *opaque) | |||
197 | drv->config_changed(&vp_dev->vdev); | 198 | drv->config_changed(&vp_dev->vdev); |
198 | } | 199 | } |
199 | 200 | ||
200 | spin_lock(&vp_dev->lock); | 201 | spin_lock_irqsave(&vp_dev->lock, flags); |
201 | list_for_each_entry(info, &vp_dev->virtqueues, node) { | 202 | list_for_each_entry(info, &vp_dev->virtqueues, node) { |
202 | if (vring_interrupt(irq, info->vq) == IRQ_HANDLED) | 203 | if (vring_interrupt(irq, info->vq) == IRQ_HANDLED) |
203 | ret = IRQ_HANDLED; | 204 | ret = IRQ_HANDLED; |
204 | } | 205 | } |
205 | spin_unlock(&vp_dev->lock); | 206 | spin_unlock_irqrestore(&vp_dev->lock, flags); |
206 | 207 | ||
207 | return ret; | 208 | return ret; |
208 | } | 209 | } |
@@ -214,6 +215,7 @@ static struct virtqueue *vp_find_vq(struct virtio_device *vdev, unsigned index, | |||
214 | struct virtio_pci_device *vp_dev = to_vp_device(vdev); | 215 | struct virtio_pci_device *vp_dev = to_vp_device(vdev); |
215 | struct virtio_pci_vq_info *info; | 216 | struct virtio_pci_vq_info *info; |
216 | struct virtqueue *vq; | 217 | struct virtqueue *vq; |
218 | unsigned long flags; | ||
217 | u16 num; | 219 | u16 num; |
218 | int err; | 220 | int err; |
219 | 221 | ||
@@ -255,9 +257,9 @@ static struct virtqueue *vp_find_vq(struct virtio_device *vdev, unsigned index, | |||
255 | vq->priv = info; | 257 | vq->priv = info; |
256 | info->vq = vq; | 258 | info->vq = vq; |
257 | 259 | ||
258 | spin_lock(&vp_dev->lock); | 260 | spin_lock_irqsave(&vp_dev->lock, flags); |
259 | list_add(&info->node, &vp_dev->virtqueues); | 261 | list_add(&info->node, &vp_dev->virtqueues); |
260 | spin_unlock(&vp_dev->lock); | 262 | spin_unlock_irqrestore(&vp_dev->lock, flags); |
261 | 263 | ||
262 | return vq; | 264 | return vq; |
263 | 265 | ||
@@ -274,10 +276,11 @@ static void vp_del_vq(struct virtqueue *vq) | |||
274 | { | 276 | { |
275 | struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); | 277 | struct virtio_pci_device *vp_dev = to_vp_device(vq->vdev); |
276 | struct virtio_pci_vq_info *info = vq->priv; | 278 | struct virtio_pci_vq_info *info = vq->priv; |
279 | unsigned long flags; | ||
277 | 280 | ||
278 | spin_lock(&vp_dev->lock); | 281 | spin_lock_irqsave(&vp_dev->lock, flags); |
279 | list_del(&info->node); | 282 | list_del(&info->node); |
280 | spin_unlock(&vp_dev->lock); | 283 | spin_unlock_irqrestore(&vp_dev->lock, flags); |
281 | 284 | ||
282 | vring_del_virtqueue(vq); | 285 | vring_del_virtqueue(vq); |
283 | 286 | ||
diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 3a28c1382131..aa714028641e 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c | |||
@@ -232,7 +232,6 @@ static bool vring_enable_cb(struct virtqueue *_vq) | |||
232 | vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT; | 232 | vq->vring.avail->flags &= ~VRING_AVAIL_F_NO_INTERRUPT; |
233 | mb(); | 233 | mb(); |
234 | if (unlikely(more_used(vq))) { | 234 | if (unlikely(more_used(vq))) { |
235 | vq->vring.avail->flags |= VRING_AVAIL_F_NO_INTERRUPT; | ||
236 | END_USE(vq); | 235 | END_USE(vq); |
237 | return false; | 236 | return false; |
238 | } | 237 | } |
@@ -996,6 +996,14 @@ put_rq: | |||
996 | /* everything turned out well, dispose of the aiocb. */ | 996 | /* everything turned out well, dispose of the aiocb. */ |
997 | ret = __aio_put_req(ctx, iocb); | 997 | ret = __aio_put_req(ctx, iocb); |
998 | 998 | ||
999 | /* | ||
1000 | * We have to order our ring_info tail store above and test | ||
1001 | * of the wait list below outside the wait lock. This is | ||
1002 | * like in wake_up_bit() where clearing a bit has to be | ||
1003 | * ordered with the unlocked test. | ||
1004 | */ | ||
1005 | smp_mb(); | ||
1006 | |||
999 | if (waitqueue_active(&ctx->wait)) | 1007 | if (waitqueue_active(&ctx->wait)) |
1000 | wake_up(&ctx->wait); | 1008 | wake_up(&ctx->wait); |
1001 | 1009 | ||
@@ -1194,6 +1194,8 @@ EXPORT_SYMBOL(bio_hw_segments); | |||
1194 | EXPORT_SYMBOL(bio_add_page); | 1194 | EXPORT_SYMBOL(bio_add_page); |
1195 | EXPORT_SYMBOL(bio_add_pc_page); | 1195 | EXPORT_SYMBOL(bio_add_pc_page); |
1196 | EXPORT_SYMBOL(bio_get_nr_vecs); | 1196 | EXPORT_SYMBOL(bio_get_nr_vecs); |
1197 | EXPORT_SYMBOL(bio_map_user); | ||
1198 | EXPORT_SYMBOL(bio_unmap_user); | ||
1197 | EXPORT_SYMBOL(bio_map_kern); | 1199 | EXPORT_SYMBOL(bio_map_kern); |
1198 | EXPORT_SYMBOL(bio_pair_release); | 1200 | EXPORT_SYMBOL(bio_pair_release); |
1199 | EXPORT_SYMBOL(bio_split); | 1201 | EXPORT_SYMBOL(bio_split); |
diff --git a/fs/buffer.c b/fs/buffer.c index ddfdd2c80bf9..7ba58386beee 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -3213,7 +3213,7 @@ static int buffer_cpu_notify(struct notifier_block *self, | |||
3213 | } | 3213 | } |
3214 | 3214 | ||
3215 | /** | 3215 | /** |
3216 | * bh_uptodate_or_lock: Test whether the buffer is uptodate | 3216 | * bh_uptodate_or_lock - Test whether the buffer is uptodate |
3217 | * @bh: struct buffer_head | 3217 | * @bh: struct buffer_head |
3218 | * | 3218 | * |
3219 | * Return true if the buffer is up-to-date and false, | 3219 | * Return true if the buffer is up-to-date and false, |
@@ -3232,7 +3232,7 @@ int bh_uptodate_or_lock(struct buffer_head *bh) | |||
3232 | EXPORT_SYMBOL(bh_uptodate_or_lock); | 3232 | EXPORT_SYMBOL(bh_uptodate_or_lock); |
3233 | 3233 | ||
3234 | /** | 3234 | /** |
3235 | * bh_submit_read: Submit a locked buffer for reading | 3235 | * bh_submit_read - Submit a locked buffer for reading |
3236 | * @bh: struct buffer_head | 3236 | * @bh: struct buffer_head |
3237 | * | 3237 | * |
3238 | * Returns zero on success and -EIO on error. | 3238 | * Returns zero on success and -EIO on error. |
diff --git a/fs/cifs/cifs_dfs_ref.c b/fs/cifs/cifs_dfs_ref.c index 7f8838253410..a1a95b027136 100644 --- a/fs/cifs/cifs_dfs_ref.c +++ b/fs/cifs/cifs_dfs_ref.c | |||
@@ -74,7 +74,7 @@ static char *cifs_get_share_name(const char *node_name) | |||
74 | pSep = memchr(UNC+2, '\\', len-2); | 74 | pSep = memchr(UNC+2, '\\', len-2); |
75 | if (!pSep) { | 75 | if (!pSep) { |
76 | cERROR(1, ("%s: no server name end in node name: %s", | 76 | cERROR(1, ("%s: no server name end in node name: %s", |
77 | __FUNCTION__, node_name)); | 77 | __func__, node_name)); |
78 | kfree(UNC); | 78 | kfree(UNC); |
79 | return NULL; | 79 | return NULL; |
80 | } | 80 | } |
@@ -84,7 +84,7 @@ static char *cifs_get_share_name(const char *node_name) | |||
84 | pSep = memchr(UNC+(pSep-UNC), '\\', len-(pSep-UNC)); | 84 | pSep = memchr(UNC+(pSep-UNC), '\\', len-(pSep-UNC)); |
85 | if (!pSep) { | 85 | if (!pSep) { |
86 | cERROR(1, ("%s:2 cant find share name in node name: %s", | 86 | cERROR(1, ("%s:2 cant find share name in node name: %s", |
87 | __FUNCTION__, node_name)); | 87 | __func__, node_name)); |
88 | kfree(UNC); | 88 | kfree(UNC); |
89 | return NULL; | 89 | return NULL; |
90 | } | 90 | } |
@@ -127,7 +127,7 @@ static char *compose_mount_options(const char *sb_mountdata, | |||
127 | rc = dns_resolve_server_name_to_ip(*devname, &srvIP); | 127 | rc = dns_resolve_server_name_to_ip(*devname, &srvIP); |
128 | if (rc != 0) { | 128 | if (rc != 0) { |
129 | cERROR(1, ("%s: Failed to resolve server part of %s to IP", | 129 | cERROR(1, ("%s: Failed to resolve server part of %s to IP", |
130 | __FUNCTION__, *devname)); | 130 | __func__, *devname)); |
131 | mountdata = ERR_PTR(rc); | 131 | mountdata = ERR_PTR(rc); |
132 | goto compose_mount_options_out; | 132 | goto compose_mount_options_out; |
133 | } | 133 | } |
@@ -181,8 +181,8 @@ static char *compose_mount_options(const char *sb_mountdata, | |||
181 | } | 181 | } |
182 | } | 182 | } |
183 | 183 | ||
184 | /*cFYI(1,("%s: parent mountdata: %s", __FUNCTION__,sb_mountdata));*/ | 184 | /*cFYI(1,("%s: parent mountdata: %s", __func__,sb_mountdata));*/ |
185 | /*cFYI(1, ("%s: submount mountdata: %s", __FUNCTION__, mountdata ));*/ | 185 | /*cFYI(1, ("%s: submount mountdata: %s", __func__, mountdata ));*/ |
186 | 186 | ||
187 | compose_mount_options_out: | 187 | compose_mount_options_out: |
188 | kfree(srvIP); | 188 | kfree(srvIP); |
@@ -302,7 +302,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
302 | int rc = 0; | 302 | int rc = 0; |
303 | struct vfsmount *mnt = ERR_PTR(-ENOENT); | 303 | struct vfsmount *mnt = ERR_PTR(-ENOENT); |
304 | 304 | ||
305 | cFYI(1, ("in %s", __FUNCTION__)); | 305 | cFYI(1, ("in %s", __func__)); |
306 | BUG_ON(IS_ROOT(dentry)); | 306 | BUG_ON(IS_ROOT(dentry)); |
307 | 307 | ||
308 | xid = GetXid(); | 308 | xid = GetXid(); |
@@ -336,7 +336,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
336 | len = strlen(referrals[i].node_name); | 336 | len = strlen(referrals[i].node_name); |
337 | if (len < 2) { | 337 | if (len < 2) { |
338 | cERROR(1, ("%s: Net Address path too short: %s", | 338 | cERROR(1, ("%s: Net Address path too short: %s", |
339 | __FUNCTION__, referrals[i].node_name)); | 339 | __func__, referrals[i].node_name)); |
340 | rc = -EINVAL; | 340 | rc = -EINVAL; |
341 | goto out_err; | 341 | goto out_err; |
342 | } | 342 | } |
@@ -344,7 +344,7 @@ cifs_dfs_follow_mountpoint(struct dentry *dentry, struct nameidata *nd) | |||
344 | nd->path.dentry, | 344 | nd->path.dentry, |
345 | referrals[i].node_name); | 345 | referrals[i].node_name); |
346 | cFYI(1, ("%s: cifs_dfs_do_refmount:%s , mnt:%p", | 346 | cFYI(1, ("%s: cifs_dfs_do_refmount:%s , mnt:%p", |
347 | __FUNCTION__, | 347 | __func__, |
348 | referrals[i].node_name, mnt)); | 348 | referrals[i].node_name, mnt)); |
349 | 349 | ||
350 | /* complete mount procedure if we accured submount */ | 350 | /* complete mount procedure if we accured submount */ |
@@ -365,7 +365,7 @@ out: | |||
365 | FreeXid(xid); | 365 | FreeXid(xid); |
366 | free_dfs_info_array(referrals, num_referrals); | 366 | free_dfs_info_array(referrals, num_referrals); |
367 | kfree(full_path); | 367 | kfree(full_path); |
368 | cFYI(1, ("leaving %s" , __FUNCTION__)); | 368 | cFYI(1, ("leaving %s" , __func__)); |
369 | return ERR_PTR(rc); | 369 | return ERR_PTR(rc); |
370 | out_err: | 370 | out_err: |
371 | path_put(&nd->path); | 371 | path_put(&nd->path); |
diff --git a/fs/cifs/cifsacl.c b/fs/cifs/cifsacl.c index f93932c21772..1f5a4289b848 100644 --- a/fs/cifs/cifsacl.c +++ b/fs/cifs/cifsacl.c | |||
@@ -1,7 +1,7 @@ | |||
1 | /* | 1 | /* |
2 | * fs/cifs/cifsacl.c | 2 | * fs/cifs/cifsacl.c |
3 | * | 3 | * |
4 | * Copyright (C) International Business Machines Corp., 2007 | 4 | * Copyright (C) International Business Machines Corp., 2007,2008 |
5 | * Author(s): Steve French (sfrench@us.ibm.com) | 5 | * Author(s): Steve French (sfrench@us.ibm.com) |
6 | * | 6 | * |
7 | * Contains the routines for mapping CIFS/NTFS ACLs | 7 | * Contains the routines for mapping CIFS/NTFS ACLs |
@@ -556,9 +556,9 @@ static int build_sec_desc(struct cifs_ntsd *pntsd, struct cifs_ntsd *pnntsd, | |||
556 | 556 | ||
557 | /* Retrieve an ACL from the server */ | 557 | /* Retrieve an ACL from the server */ |
558 | static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode, | 558 | static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode, |
559 | const char *path) | 559 | const char *path, const __u16 *pfid) |
560 | { | 560 | { |
561 | struct cifsFileInfo *open_file; | 561 | struct cifsFileInfo *open_file = NULL; |
562 | int unlock_file = FALSE; | 562 | int unlock_file = FALSE; |
563 | int xid; | 563 | int xid; |
564 | int rc = -EIO; | 564 | int rc = -EIO; |
@@ -573,7 +573,11 @@ static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode, | |||
573 | return NULL; | 573 | return NULL; |
574 | 574 | ||
575 | xid = GetXid(); | 575 | xid = GetXid(); |
576 | open_file = find_readable_file(CIFS_I(inode)); | 576 | if (pfid == NULL) |
577 | open_file = find_readable_file(CIFS_I(inode)); | ||
578 | else | ||
579 | fid = *pfid; | ||
580 | |||
577 | sb = inode->i_sb; | 581 | sb = inode->i_sb; |
578 | if (sb == NULL) { | 582 | if (sb == NULL) { |
579 | FreeXid(xid); | 583 | FreeXid(xid); |
@@ -584,7 +588,7 @@ static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode, | |||
584 | if (open_file) { | 588 | if (open_file) { |
585 | unlock_file = TRUE; | 589 | unlock_file = TRUE; |
586 | fid = open_file->netfid; | 590 | fid = open_file->netfid; |
587 | } else { | 591 | } else if (pfid == NULL) { |
588 | int oplock = FALSE; | 592 | int oplock = FALSE; |
589 | /* open file */ | 593 | /* open file */ |
590 | rc = CIFSSMBOpen(xid, cifs_sb->tcon, path, FILE_OPEN, | 594 | rc = CIFSSMBOpen(xid, cifs_sb->tcon, path, FILE_OPEN, |
@@ -600,10 +604,11 @@ static struct cifs_ntsd *get_cifs_acl(u32 *pacllen, struct inode *inode, | |||
600 | 604 | ||
601 | rc = CIFSSMBGetCIFSACL(xid, cifs_sb->tcon, fid, &pntsd, pacllen); | 605 | rc = CIFSSMBGetCIFSACL(xid, cifs_sb->tcon, fid, &pntsd, pacllen); |
602 | cFYI(1, ("GetCIFSACL rc = %d ACL len %d", rc, *pacllen)); | 606 | cFYI(1, ("GetCIFSACL rc = %d ACL len %d", rc, *pacllen)); |
603 | if (unlock_file == TRUE) | 607 | if (unlock_file == TRUE) /* find_readable_file increments ref count */ |
604 | atomic_dec(&open_file->wrtPending); | 608 | atomic_dec(&open_file->wrtPending); |
605 | else | 609 | else if (pfid == NULL) /* if opened above we have to close the handle */ |
606 | CIFSSMBClose(xid, cifs_sb->tcon, fid); | 610 | CIFSSMBClose(xid, cifs_sb->tcon, fid); |
611 | /* else handle was passed in by caller */ | ||
607 | 612 | ||
608 | FreeXid(xid); | 613 | FreeXid(xid); |
609 | return pntsd; | 614 | return pntsd; |
@@ -664,14 +669,14 @@ static int set_cifs_acl(struct cifs_ntsd *pnntsd, __u32 acllen, | |||
664 | } | 669 | } |
665 | 670 | ||
666 | /* Translate the CIFS ACL (simlar to NTFS ACL) for a file into mode bits */ | 671 | /* Translate the CIFS ACL (simlar to NTFS ACL) for a file into mode bits */ |
667 | void acl_to_uid_mode(struct inode *inode, const char *path) | 672 | void acl_to_uid_mode(struct inode *inode, const char *path, const __u16 *pfid) |
668 | { | 673 | { |
669 | struct cifs_ntsd *pntsd = NULL; | 674 | struct cifs_ntsd *pntsd = NULL; |
670 | u32 acllen = 0; | 675 | u32 acllen = 0; |
671 | int rc = 0; | 676 | int rc = 0; |
672 | 677 | ||
673 | cFYI(DBG2, ("converting ACL to mode for %s", path)); | 678 | cFYI(DBG2, ("converting ACL to mode for %s", path)); |
674 | pntsd = get_cifs_acl(&acllen, inode, path); | 679 | pntsd = get_cifs_acl(&acllen, inode, path, pfid); |
675 | 680 | ||
676 | /* if we can retrieve the ACL, now parse Access Control Entries, ACEs */ | 681 | /* if we can retrieve the ACL, now parse Access Control Entries, ACEs */ |
677 | if (pntsd) | 682 | if (pntsd) |
@@ -694,7 +699,7 @@ int mode_to_acl(struct inode *inode, const char *path, __u64 nmode) | |||
694 | cFYI(DBG2, ("set ACL from mode for %s", path)); | 699 | cFYI(DBG2, ("set ACL from mode for %s", path)); |
695 | 700 | ||
696 | /* Get the security descriptor */ | 701 | /* Get the security descriptor */ |
697 | pntsd = get_cifs_acl(&acllen, inode, path); | 702 | pntsd = get_cifs_acl(&acllen, inode, path, NULL); |
698 | 703 | ||
699 | /* Add three ACEs for owner, group, everyone getting rid of | 704 | /* Add three ACEs for owner, group, everyone getting rid of |
700 | other ACEs as chmod disables ACEs and set the security descriptor */ | 705 | other ACEs as chmod disables ACEs and set the security descriptor */ |
diff --git a/fs/cifs/cifsproto.h b/fs/cifs/cifsproto.h index 0af63e6b426b..7e5e0e78cd72 100644 --- a/fs/cifs/cifsproto.h +++ b/fs/cifs/cifsproto.h | |||
@@ -39,8 +39,8 @@ extern int smb_send(struct socket *, struct smb_hdr *, | |||
39 | unsigned int /* length */ , struct sockaddr *); | 39 | unsigned int /* length */ , struct sockaddr *); |
40 | extern unsigned int _GetXid(void); | 40 | extern unsigned int _GetXid(void); |
41 | extern void _FreeXid(unsigned int); | 41 | extern void _FreeXid(unsigned int); |
42 | #define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__FUNCTION__, xid,current->fsuid)); | 42 | #define GetXid() (int)_GetXid(); cFYI(1,("CIFS VFS: in %s as Xid: %d with uid: %d",__func__, xid,current->fsuid)); |
43 | #define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__FUNCTION__,curr_xid,(int)rc));} | 43 | #define FreeXid(curr_xid) {_FreeXid(curr_xid); cFYI(1,("CIFS VFS: leaving %s (xid = %d) rc = %d",__func__,curr_xid,(int)rc));} |
44 | extern char *build_path_from_dentry(struct dentry *); | 44 | extern char *build_path_from_dentry(struct dentry *); |
45 | extern char *build_wildcard_path_from_dentry(struct dentry *direntry); | 45 | extern char *build_wildcard_path_from_dentry(struct dentry *direntry); |
46 | /* extern void renew_parental_timestamps(struct dentry *direntry);*/ | 46 | /* extern void renew_parental_timestamps(struct dentry *direntry);*/ |
@@ -92,11 +92,12 @@ extern struct timespec cnvrtDosUnixTm(__u16 date, __u16 time); | |||
92 | extern int cifs_get_inode_info(struct inode **pinode, | 92 | extern int cifs_get_inode_info(struct inode **pinode, |
93 | const unsigned char *search_path, | 93 | const unsigned char *search_path, |
94 | FILE_ALL_INFO * pfile_info, | 94 | FILE_ALL_INFO * pfile_info, |
95 | struct super_block *sb, int xid); | 95 | struct super_block *sb, int xid, const __u16 *pfid); |
96 | extern int cifs_get_inode_info_unix(struct inode **pinode, | 96 | extern int cifs_get_inode_info_unix(struct inode **pinode, |
97 | const unsigned char *search_path, | 97 | const unsigned char *search_path, |
98 | struct super_block *sb, int xid); | 98 | struct super_block *sb, int xid); |
99 | extern void acl_to_uid_mode(struct inode *inode, const char *search_path); | 99 | extern void acl_to_uid_mode(struct inode *inode, const char *path, |
100 | const __u16 *pfid); | ||
100 | extern int mode_to_acl(struct inode *inode, const char *path, __u64); | 101 | extern int mode_to_acl(struct inode *inode, const char *path, __u64); |
101 | 102 | ||
102 | extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *, | 103 | extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *, |
diff --git a/fs/cifs/dir.c b/fs/cifs/dir.c index 4e83b47c4b34..0f5c62ba4038 100644 --- a/fs/cifs/dir.c +++ b/fs/cifs/dir.c | |||
@@ -229,7 +229,8 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode, | |||
229 | inode->i_sb, xid); | 229 | inode->i_sb, xid); |
230 | else { | 230 | else { |
231 | rc = cifs_get_inode_info(&newinode, full_path, | 231 | rc = cifs_get_inode_info(&newinode, full_path, |
232 | buf, inode->i_sb, xid); | 232 | buf, inode->i_sb, xid, |
233 | &fileHandle); | ||
233 | if (newinode) { | 234 | if (newinode) { |
234 | newinode->i_mode = mode; | 235 | newinode->i_mode = mode; |
235 | if ((oplock & CIFS_CREATE_ACTION) && | 236 | if ((oplock & CIFS_CREATE_ACTION) && |
@@ -483,7 +484,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, | |||
483 | parent_dir_inode->i_sb, xid); | 484 | parent_dir_inode->i_sb, xid); |
484 | else | 485 | else |
485 | rc = cifs_get_inode_info(&newInode, full_path, NULL, | 486 | rc = cifs_get_inode_info(&newInode, full_path, NULL, |
486 | parent_dir_inode->i_sb, xid); | 487 | parent_dir_inode->i_sb, xid, NULL); |
487 | 488 | ||
488 | if ((rc == 0) && (newInode != NULL)) { | 489 | if ((rc == 0) && (newInode != NULL)) { |
489 | if (pTcon->nocase) | 490 | if (pTcon->nocase) |
diff --git a/fs/cifs/dns_resolve.c b/fs/cifs/dns_resolve.c index ef7f43824347..7cc86c418182 100644 --- a/fs/cifs/dns_resolve.c +++ b/fs/cifs/dns_resolve.c | |||
@@ -77,14 +77,14 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr) | |||
77 | /* search for server name delimiter */ | 77 | /* search for server name delimiter */ |
78 | len = strlen(unc); | 78 | len = strlen(unc); |
79 | if (len < 3) { | 79 | if (len < 3) { |
80 | cFYI(1, ("%s: unc is too short: %s", __FUNCTION__, unc)); | 80 | cFYI(1, ("%s: unc is too short: %s", __func__, unc)); |
81 | return -EINVAL; | 81 | return -EINVAL; |
82 | } | 82 | } |
83 | len -= 2; | 83 | len -= 2; |
84 | name = memchr(unc+2, '\\', len); | 84 | name = memchr(unc+2, '\\', len); |
85 | if (!name) { | 85 | if (!name) { |
86 | cFYI(1, ("%s: probably server name is whole unc: %s", | 86 | cFYI(1, ("%s: probably server name is whole unc: %s", |
87 | __FUNCTION__, unc)); | 87 | __func__, unc)); |
88 | } else { | 88 | } else { |
89 | len = (name - unc) - 2/* leading // */; | 89 | len = (name - unc) - 2/* leading // */; |
90 | } | 90 | } |
@@ -104,7 +104,7 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr) | |||
104 | if (*ip_addr) { | 104 | if (*ip_addr) { |
105 | memcpy(*ip_addr, rkey->payload.data, len); | 105 | memcpy(*ip_addr, rkey->payload.data, len); |
106 | (*ip_addr)[len] = '\0'; | 106 | (*ip_addr)[len] = '\0'; |
107 | cFYI(1, ("%s: resolved: %s to %s", __FUNCTION__, | 107 | cFYI(1, ("%s: resolved: %s to %s", __func__, |
108 | rkey->description, | 108 | rkey->description, |
109 | *ip_addr | 109 | *ip_addr |
110 | )); | 110 | )); |
@@ -114,7 +114,7 @@ dns_resolve_server_name_to_ip(const char *unc, char **ip_addr) | |||
114 | } | 114 | } |
115 | key_put(rkey); | 115 | key_put(rkey); |
116 | } else { | 116 | } else { |
117 | cERROR(1, ("%s: unable to resolve: %s", __FUNCTION__, name)); | 117 | cERROR(1, ("%s: unable to resolve: %s", __func__, name)); |
118 | } | 118 | } |
119 | 119 | ||
120 | kfree(name); | 120 | kfree(name); |
diff --git a/fs/cifs/file.c b/fs/cifs/file.c index fa849c91d323..40b690073fc1 100644 --- a/fs/cifs/file.c +++ b/fs/cifs/file.c | |||
@@ -145,7 +145,7 @@ client_can_cache: | |||
145 | full_path, inode->i_sb, xid); | 145 | full_path, inode->i_sb, xid); |
146 | else | 146 | else |
147 | rc = cifs_get_inode_info(&file->f_path.dentry->d_inode, | 147 | rc = cifs_get_inode_info(&file->f_path.dentry->d_inode, |
148 | full_path, buf, inode->i_sb, xid); | 148 | full_path, buf, inode->i_sb, xid, NULL); |
149 | 149 | ||
150 | if ((*oplock & 0xF) == OPLOCK_EXCLUSIVE) { | 150 | if ((*oplock & 0xF) == OPLOCK_EXCLUSIVE) { |
151 | pCifsInode->clientCanCacheAll = TRUE; | 151 | pCifsInode->clientCanCacheAll = TRUE; |
@@ -440,7 +440,7 @@ reopen_error_exit: | |||
440 | else | 440 | else |
441 | rc = cifs_get_inode_info(&inode, | 441 | rc = cifs_get_inode_info(&inode, |
442 | full_path, NULL, inode->i_sb, | 442 | full_path, NULL, inode->i_sb, |
443 | xid); | 443 | xid, NULL); |
444 | } /* else we are writing out data to server already | 444 | } /* else we are writing out data to server already |
445 | and could deadlock if we tried to flush data, and | 445 | and could deadlock if we tried to flush data, and |
446 | since we do not know if we have data that would | 446 | since we do not know if we have data that would |
diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 24eb4d392155..bc673c8c1e6b 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c | |||
@@ -30,7 +30,7 @@ | |||
30 | #include "cifs_fs_sb.h" | 30 | #include "cifs_fs_sb.h" |
31 | 31 | ||
32 | 32 | ||
33 | static void cifs_set_ops(struct inode *inode) | 33 | static void cifs_set_ops(struct inode *inode, const bool is_dfs_referral) |
34 | { | 34 | { |
35 | struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); | 35 | struct cifs_sb_info *cifs_sb = CIFS_SB(inode->i_sb); |
36 | 36 | ||
@@ -57,8 +57,16 @@ static void cifs_set_ops(struct inode *inode) | |||
57 | inode->i_data.a_ops = &cifs_addr_ops; | 57 | inode->i_data.a_ops = &cifs_addr_ops; |
58 | break; | 58 | break; |
59 | case S_IFDIR: | 59 | case S_IFDIR: |
60 | inode->i_op = &cifs_dir_inode_ops; | 60 | #ifdef CONFIG_CIFS_DFS_UPCALL |
61 | inode->i_fop = &cifs_dir_ops; | 61 | if (is_dfs_referral) { |
62 | inode->i_op = &cifs_dfs_referral_inode_operations; | ||
63 | } else { | ||
64 | #else /* NO DFS support, treat as a directory */ | ||
65 | { | ||
66 | #endif | ||
67 | inode->i_op = &cifs_dir_inode_ops; | ||
68 | inode->i_fop = &cifs_dir_ops; | ||
69 | } | ||
62 | break; | 70 | break; |
63 | case S_IFLNK: | 71 | case S_IFLNK: |
64 | inode->i_op = &cifs_symlink_inode_ops; | 72 | inode->i_op = &cifs_symlink_inode_ops; |
@@ -153,6 +161,30 @@ static void cifs_unix_info_to_inode(struct inode *inode, | |||
153 | spin_unlock(&inode->i_lock); | 161 | spin_unlock(&inode->i_lock); |
154 | } | 162 | } |
155 | 163 | ||
164 | static const unsigned char *cifs_get_search_path(struct cifsTconInfo *pTcon, | ||
165 | const char *search_path) | ||
166 | { | ||
167 | int tree_len; | ||
168 | int path_len; | ||
169 | char *tmp_path; | ||
170 | |||
171 | if (!(pTcon->Flags & SMB_SHARE_IS_IN_DFS)) | ||
172 | return search_path; | ||
173 | |||
174 | /* use full path name for working with DFS */ | ||
175 | tree_len = strnlen(pTcon->treeName, MAX_TREE_SIZE + 1); | ||
176 | path_len = strnlen(search_path, MAX_PATHCONF); | ||
177 | |||
178 | tmp_path = kmalloc(tree_len+path_len+1, GFP_KERNEL); | ||
179 | if (tmp_path == NULL) | ||
180 | return search_path; | ||
181 | |||
182 | strncpy(tmp_path, pTcon->treeName, tree_len); | ||
183 | strncpy(tmp_path+tree_len, search_path, path_len); | ||
184 | tmp_path[tree_len+path_len] = 0; | ||
185 | return tmp_path; | ||
186 | } | ||
187 | |||
156 | int cifs_get_inode_info_unix(struct inode **pinode, | 188 | int cifs_get_inode_info_unix(struct inode **pinode, |
157 | const unsigned char *search_path, struct super_block *sb, int xid) | 189 | const unsigned char *search_path, struct super_block *sb, int xid) |
158 | { | 190 | { |
@@ -161,41 +193,31 @@ int cifs_get_inode_info_unix(struct inode **pinode, | |||
161 | struct cifsTconInfo *pTcon; | 193 | struct cifsTconInfo *pTcon; |
162 | struct inode *inode; | 194 | struct inode *inode; |
163 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | 195 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); |
164 | char *tmp_path; | 196 | const unsigned char *full_path; |
197 | bool is_dfs_referral = false; | ||
165 | 198 | ||
166 | pTcon = cifs_sb->tcon; | 199 | pTcon = cifs_sb->tcon; |
167 | cFYI(1, ("Getting info on %s", search_path)); | 200 | cFYI(1, ("Getting info on %s", search_path)); |
201 | |||
202 | full_path = cifs_get_search_path(pTcon, search_path); | ||
203 | |||
204 | try_again_CIFSSMBUnixQPathInfo: | ||
168 | /* could have done a find first instead but this returns more info */ | 205 | /* could have done a find first instead but this returns more info */ |
169 | rc = CIFSSMBUnixQPathInfo(xid, pTcon, search_path, &findData, | 206 | rc = CIFSSMBUnixQPathInfo(xid, pTcon, full_path, &findData, |
170 | cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & | 207 | cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & |
171 | CIFS_MOUNT_MAP_SPECIAL_CHR); | 208 | CIFS_MOUNT_MAP_SPECIAL_CHR); |
172 | /* dump_mem("\nUnixQPathInfo return data", &findData, | 209 | /* dump_mem("\nUnixQPathInfo return data", &findData, |
173 | sizeof(findData)); */ | 210 | sizeof(findData)); */ |
174 | if (rc) { | 211 | if (rc) { |
175 | if (rc == -EREMOTE) { | 212 | if (rc == -EREMOTE && !is_dfs_referral) { |
176 | tmp_path = | 213 | is_dfs_referral = true; |
177 | kmalloc(strnlen(pTcon->treeName, | 214 | if (full_path != search_path) { |
178 | MAX_TREE_SIZE + 1) + | 215 | kfree(full_path); |
179 | strnlen(search_path, MAX_PATHCONF) + 1, | 216 | full_path = search_path; |
180 | GFP_KERNEL); | 217 | } |
181 | if (tmp_path == NULL) | 218 | goto try_again_CIFSSMBUnixQPathInfo; |
182 | return -ENOMEM; | ||
183 | |||
184 | /* have to skip first of the double backslash of | ||
185 | UNC name */ | ||
186 | strncpy(tmp_path, pTcon->treeName, MAX_TREE_SIZE); | ||
187 | strncat(tmp_path, search_path, MAX_PATHCONF); | ||
188 | rc = connect_to_dfs_path(xid, pTcon->ses, | ||
189 | /* treename + */ tmp_path, | ||
190 | cifs_sb->local_nls, | ||
191 | cifs_sb->mnt_cifs_flags & | ||
192 | CIFS_MOUNT_MAP_SPECIAL_CHR); | ||
193 | kfree(tmp_path); | ||
194 | |||
195 | /* BB fix up inode etc. */ | ||
196 | } else if (rc) { | ||
197 | return rc; | ||
198 | } | 219 | } |
220 | goto cgiiu_exit; | ||
199 | } else { | 221 | } else { |
200 | struct cifsInodeInfo *cifsInfo; | 222 | struct cifsInodeInfo *cifsInfo; |
201 | __u64 num_of_bytes = le64_to_cpu(findData.NumOfBytes); | 223 | __u64 num_of_bytes = le64_to_cpu(findData.NumOfBytes); |
@@ -204,8 +226,10 @@ int cifs_get_inode_info_unix(struct inode **pinode, | |||
204 | /* get new inode */ | 226 | /* get new inode */ |
205 | if (*pinode == NULL) { | 227 | if (*pinode == NULL) { |
206 | *pinode = new_inode(sb); | 228 | *pinode = new_inode(sb); |
207 | if (*pinode == NULL) | 229 | if (*pinode == NULL) { |
208 | return -ENOMEM; | 230 | rc = -ENOMEM; |
231 | goto cgiiu_exit; | ||
232 | } | ||
209 | /* Is an i_ino of zero legal? */ | 233 | /* Is an i_ino of zero legal? */ |
210 | /* Are there sanity checks we can use to ensure that | 234 | /* Are there sanity checks we can use to ensure that |
211 | the server is really filling in that field? */ | 235 | the server is really filling in that field? */ |
@@ -237,8 +261,11 @@ int cifs_get_inode_info_unix(struct inode **pinode, | |||
237 | (unsigned long) inode->i_size, | 261 | (unsigned long) inode->i_size, |
238 | (unsigned long long)inode->i_blocks)); | 262 | (unsigned long long)inode->i_blocks)); |
239 | 263 | ||
240 | cifs_set_ops(inode); | 264 | cifs_set_ops(inode, is_dfs_referral); |
241 | } | 265 | } |
266 | cgiiu_exit: | ||
267 | if (full_path != search_path) | ||
268 | kfree(full_path); | ||
242 | return rc; | 269 | return rc; |
243 | } | 270 | } |
244 | 271 | ||
@@ -347,15 +374,16 @@ static int get_sfu_mode(struct inode *inode, | |||
347 | 374 | ||
348 | int cifs_get_inode_info(struct inode **pinode, | 375 | int cifs_get_inode_info(struct inode **pinode, |
349 | const unsigned char *search_path, FILE_ALL_INFO *pfindData, | 376 | const unsigned char *search_path, FILE_ALL_INFO *pfindData, |
350 | struct super_block *sb, int xid) | 377 | struct super_block *sb, int xid, const __u16 *pfid) |
351 | { | 378 | { |
352 | int rc = 0; | 379 | int rc = 0; |
353 | struct cifsTconInfo *pTcon; | 380 | struct cifsTconInfo *pTcon; |
354 | struct inode *inode; | 381 | struct inode *inode; |
355 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); | 382 | struct cifs_sb_info *cifs_sb = CIFS_SB(sb); |
356 | char *tmp_path; | 383 | const unsigned char *full_path = NULL; |
357 | char *buf = NULL; | 384 | char *buf = NULL; |
358 | int adjustTZ = FALSE; | 385 | int adjustTZ = FALSE; |
386 | bool is_dfs_referral = false; | ||
359 | 387 | ||
360 | pTcon = cifs_sb->tcon; | 388 | pTcon = cifs_sb->tcon; |
361 | cFYI(1, ("Getting info on %s", search_path)); | 389 | cFYI(1, ("Getting info on %s", search_path)); |
@@ -373,8 +401,12 @@ int cifs_get_inode_info(struct inode **pinode, | |||
373 | if (buf == NULL) | 401 | if (buf == NULL) |
374 | return -ENOMEM; | 402 | return -ENOMEM; |
375 | pfindData = (FILE_ALL_INFO *)buf; | 403 | pfindData = (FILE_ALL_INFO *)buf; |
404 | |||
405 | full_path = cifs_get_search_path(pTcon, search_path); | ||
406 | |||
407 | try_again_CIFSSMBQPathInfo: | ||
376 | /* could do find first instead but this returns more info */ | 408 | /* could do find first instead but this returns more info */ |
377 | rc = CIFSSMBQPathInfo(xid, pTcon, search_path, pfindData, | 409 | rc = CIFSSMBQPathInfo(xid, pTcon, full_path, pfindData, |
378 | 0 /* not legacy */, | 410 | 0 /* not legacy */, |
379 | cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & | 411 | cifs_sb->local_nls, cifs_sb->mnt_cifs_flags & |
380 | CIFS_MOUNT_MAP_SPECIAL_CHR); | 412 | CIFS_MOUNT_MAP_SPECIAL_CHR); |
@@ -382,7 +414,7 @@ int cifs_get_inode_info(struct inode **pinode, | |||
382 | when server claims no NT SMB support and the above call | 414 | when server claims no NT SMB support and the above call |
383 | failed at least once - set flag in tcon or mount */ | 415 | failed at least once - set flag in tcon or mount */ |
384 | if ((rc == -EOPNOTSUPP) || (rc == -EINVAL)) { | 416 | if ((rc == -EOPNOTSUPP) || (rc == -EINVAL)) { |
385 | rc = SMBQueryInformation(xid, pTcon, search_path, | 417 | rc = SMBQueryInformation(xid, pTcon, full_path, |
386 | pfindData, cifs_sb->local_nls, | 418 | pfindData, cifs_sb->local_nls, |
387 | cifs_sb->mnt_cifs_flags & | 419 | cifs_sb->mnt_cifs_flags & |
388 | CIFS_MOUNT_MAP_SPECIAL_CHR); | 420 | CIFS_MOUNT_MAP_SPECIAL_CHR); |
@@ -391,31 +423,15 @@ int cifs_get_inode_info(struct inode **pinode, | |||
391 | } | 423 | } |
392 | /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */ | 424 | /* dump_mem("\nQPathInfo return data",&findData, sizeof(findData)); */ |
393 | if (rc) { | 425 | if (rc) { |
394 | if (rc == -EREMOTE) { | 426 | if (rc == -EREMOTE && !is_dfs_referral) { |
395 | tmp_path = | 427 | is_dfs_referral = true; |
396 | kmalloc(strnlen | 428 | if (full_path != search_path) { |
397 | (pTcon->treeName, | 429 | kfree(full_path); |
398 | MAX_TREE_SIZE + 1) + | 430 | full_path = search_path; |
399 | strnlen(search_path, MAX_PATHCONF) + 1, | ||
400 | GFP_KERNEL); | ||
401 | if (tmp_path == NULL) { | ||
402 | kfree(buf); | ||
403 | return -ENOMEM; | ||
404 | } | 431 | } |
405 | 432 | goto try_again_CIFSSMBQPathInfo; | |
406 | strncpy(tmp_path, pTcon->treeName, MAX_TREE_SIZE); | ||
407 | strncat(tmp_path, search_path, MAX_PATHCONF); | ||
408 | rc = connect_to_dfs_path(xid, pTcon->ses, | ||
409 | /* treename + */ tmp_path, | ||
410 | cifs_sb->local_nls, | ||
411 | cifs_sb->mnt_cifs_flags & | ||
412 | CIFS_MOUNT_MAP_SPECIAL_CHR); | ||
413 | kfree(tmp_path); | ||
414 | /* BB fix up inode etc. */ | ||
415 | } else if (rc) { | ||
416 | kfree(buf); | ||
417 | return rc; | ||
418 | } | 433 | } |
434 | goto cgii_exit; | ||
419 | } else { | 435 | } else { |
420 | struct cifsInodeInfo *cifsInfo; | 436 | struct cifsInodeInfo *cifsInfo; |
421 | __u32 attr = le32_to_cpu(pfindData->Attributes); | 437 | __u32 attr = le32_to_cpu(pfindData->Attributes); |
@@ -424,8 +440,8 @@ int cifs_get_inode_info(struct inode **pinode, | |||
424 | if (*pinode == NULL) { | 440 | if (*pinode == NULL) { |
425 | *pinode = new_inode(sb); | 441 | *pinode = new_inode(sb); |
426 | if (*pinode == NULL) { | 442 | if (*pinode == NULL) { |
427 | kfree(buf); | 443 | rc = -ENOMEM; |
428 | return -ENOMEM; | 444 | goto cgii_exit; |
429 | } | 445 | } |
430 | /* Is an i_ino of zero legal? Can we use that to check | 446 | /* Is an i_ino of zero legal? Can we use that to check |
431 | if the server supports returning inode numbers? Are | 447 | if the server supports returning inode numbers? Are |
@@ -559,7 +575,7 @@ int cifs_get_inode_info(struct inode **pinode, | |||
559 | /* fill in 0777 bits from ACL */ | 575 | /* fill in 0777 bits from ACL */ |
560 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { | 576 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { |
561 | cFYI(1, ("Getting mode bits from ACL")); | 577 | cFYI(1, ("Getting mode bits from ACL")); |
562 | acl_to_uid_mode(inode, search_path); | 578 | acl_to_uid_mode(inode, search_path, pfid); |
563 | } | 579 | } |
564 | #endif | 580 | #endif |
565 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) { | 581 | if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_UNX_EMUL) { |
@@ -573,8 +589,11 @@ int cifs_get_inode_info(struct inode **pinode, | |||
573 | atomic_set(&cifsInfo->inUse, 1); | 589 | atomic_set(&cifsInfo->inUse, 1); |
574 | } | 590 | } |
575 | 591 | ||
576 | cifs_set_ops(inode); | 592 | cifs_set_ops(inode, is_dfs_referral); |
577 | } | 593 | } |
594 | cgii_exit: | ||
595 | if (full_path != search_path) | ||
596 | kfree(full_path); | ||
578 | kfree(buf); | 597 | kfree(buf); |
579 | return rc; | 598 | return rc; |
580 | } | 599 | } |
@@ -603,7 +622,8 @@ struct inode *cifs_iget(struct super_block *sb, unsigned long ino) | |||
603 | if (cifs_sb->tcon->unix_ext) | 622 | if (cifs_sb->tcon->unix_ext) |
604 | rc = cifs_get_inode_info_unix(&inode, "", inode->i_sb, xid); | 623 | rc = cifs_get_inode_info_unix(&inode, "", inode->i_sb, xid); |
605 | else | 624 | else |
606 | rc = cifs_get_inode_info(&inode, "", NULL, inode->i_sb, xid); | 625 | rc = cifs_get_inode_info(&inode, "", NULL, inode->i_sb, xid, |
626 | NULL); | ||
607 | if (rc && cifs_sb->tcon->ipc) { | 627 | if (rc && cifs_sb->tcon->ipc) { |
608 | cFYI(1, ("ipc connection - fake read inode")); | 628 | cFYI(1, ("ipc connection - fake read inode")); |
609 | inode->i_mode |= S_IFDIR; | 629 | inode->i_mode |= S_IFDIR; |
@@ -804,7 +824,7 @@ static void posix_fill_in_inode(struct inode *tmp_inode, | |||
804 | local_size = tmp_inode->i_size; | 824 | local_size = tmp_inode->i_size; |
805 | 825 | ||
806 | cifs_unix_info_to_inode(tmp_inode, pData, 1); | 826 | cifs_unix_info_to_inode(tmp_inode, pData, 1); |
807 | cifs_set_ops(tmp_inode); | 827 | cifs_set_ops(tmp_inode, false); |
808 | 828 | ||
809 | if (!S_ISREG(tmp_inode->i_mode)) | 829 | if (!S_ISREG(tmp_inode->i_mode)) |
810 | return; | 830 | return; |
@@ -936,7 +956,7 @@ mkdir_get_info: | |||
936 | inode->i_sb, xid); | 956 | inode->i_sb, xid); |
937 | else | 957 | else |
938 | rc = cifs_get_inode_info(&newinode, full_path, NULL, | 958 | rc = cifs_get_inode_info(&newinode, full_path, NULL, |
939 | inode->i_sb, xid); | 959 | inode->i_sb, xid, NULL); |
940 | 960 | ||
941 | if (pTcon->nocase) | 961 | if (pTcon->nocase) |
942 | direntry->d_op = &cifs_ci_dentry_ops; | 962 | direntry->d_op = &cifs_ci_dentry_ops; |
@@ -1218,7 +1238,7 @@ int cifs_revalidate(struct dentry *direntry) | |||
1218 | } | 1238 | } |
1219 | } else { | 1239 | } else { |
1220 | rc = cifs_get_inode_info(&direntry->d_inode, full_path, NULL, | 1240 | rc = cifs_get_inode_info(&direntry->d_inode, full_path, NULL, |
1221 | direntry->d_sb, xid); | 1241 | direntry->d_sb, xid, NULL); |
1222 | if (rc) { | 1242 | if (rc) { |
1223 | cFYI(1, ("error on getting revalidate info %d", rc)); | 1243 | cFYI(1, ("error on getting revalidate info %d", rc)); |
1224 | /* if (rc != -ENOENT) | 1244 | /* if (rc != -ENOENT) |
@@ -1407,11 +1427,10 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs) | |||
1407 | } | 1427 | } |
1408 | cifsInode = CIFS_I(direntry->d_inode); | 1428 | cifsInode = CIFS_I(direntry->d_inode); |
1409 | 1429 | ||
1410 | /* BB check if we need to refresh inode from server now ? BB */ | 1430 | if ((attrs->ia_valid & ATTR_MTIME) || (attrs->ia_valid & ATTR_SIZE)) { |
1411 | |||
1412 | if (attrs->ia_valid & ATTR_SIZE) { | ||
1413 | /* | 1431 | /* |
1414 | Flush data before changing file size on server. If the | 1432 | Flush data before changing file size or changing the last |
1433 | write time of the file on the server. If the | ||
1415 | flush returns error, store it to report later and continue. | 1434 | flush returns error, store it to report later and continue. |
1416 | BB: This should be smarter. Why bother flushing pages that | 1435 | BB: This should be smarter. Why bother flushing pages that |
1417 | will be truncated anyway? Also, should we error out here if | 1436 | will be truncated anyway? Also, should we error out here if |
@@ -1422,7 +1441,9 @@ int cifs_setattr(struct dentry *direntry, struct iattr *attrs) | |||
1422 | CIFS_I(direntry->d_inode)->write_behind_rc = rc; | 1441 | CIFS_I(direntry->d_inode)->write_behind_rc = rc; |
1423 | rc = 0; | 1442 | rc = 0; |
1424 | } | 1443 | } |
1444 | } | ||
1425 | 1445 | ||
1446 | if (attrs->ia_valid & ATTR_SIZE) { | ||
1426 | /* To avoid spurious oplock breaks from server, in the case of | 1447 | /* To avoid spurious oplock breaks from server, in the case of |
1427 | inodes that we already have open, avoid doing path based | 1448 | inodes that we already have open, avoid doing path based |
1428 | setting of file size if we can do it by handle. | 1449 | setting of file size if we can do it by handle. |
diff --git a/fs/cifs/link.c b/fs/cifs/link.c index 1d6fb01b8e6d..d4e7ec93285f 100644 --- a/fs/cifs/link.c +++ b/fs/cifs/link.c | |||
@@ -205,7 +205,7 @@ cifs_symlink(struct inode *inode, struct dentry *direntry, const char *symname) | |||
205 | inode->i_sb, xid); | 205 | inode->i_sb, xid); |
206 | else | 206 | else |
207 | rc = cifs_get_inode_info(&newinode, full_path, NULL, | 207 | rc = cifs_get_inode_info(&newinode, full_path, NULL, |
208 | inode->i_sb, xid); | 208 | inode->i_sb, xid, NULL); |
209 | 209 | ||
210 | if (rc != 0) { | 210 | if (rc != 0) { |
211 | cFYI(1, ("Create symlink ok, getinodeinfo fail rc = %d", | 211 | cFYI(1, ("Create symlink ok, getinodeinfo fail rc = %d", |
diff --git a/fs/dquot.c b/fs/dquot.c index 9c7feb62eed1..41b9dbd68b0e 100644 --- a/fs/dquot.c +++ b/fs/dquot.c | |||
@@ -1522,8 +1522,8 @@ int vfs_quota_off(struct super_block *sb, int type) | |||
1522 | truncate_inode_pages(&toputinode[cnt]->i_data, 0); | 1522 | truncate_inode_pages(&toputinode[cnt]->i_data, 0); |
1523 | mutex_unlock(&toputinode[cnt]->i_mutex); | 1523 | mutex_unlock(&toputinode[cnt]->i_mutex); |
1524 | mark_inode_dirty(toputinode[cnt]); | 1524 | mark_inode_dirty(toputinode[cnt]); |
1525 | iput(toputinode[cnt]); | ||
1526 | } | 1525 | } |
1526 | iput(toputinode[cnt]); | ||
1527 | mutex_unlock(&dqopt->dqonoff_mutex); | 1527 | mutex_unlock(&dqopt->dqonoff_mutex); |
1528 | } | 1528 | } |
1529 | if (sb->s_bdev) | 1529 | if (sb->s_bdev) |
diff --git a/fs/ecryptfs/dentry.c b/fs/ecryptfs/dentry.c index 841a032050a7..5e596583946c 100644 --- a/fs/ecryptfs/dentry.c +++ b/fs/ecryptfs/dentry.c | |||
@@ -80,8 +80,8 @@ static void ecryptfs_d_release(struct dentry *dentry) | |||
80 | { | 80 | { |
81 | if (ecryptfs_dentry_to_private(dentry)) { | 81 | if (ecryptfs_dentry_to_private(dentry)) { |
82 | if (ecryptfs_dentry_to_lower(dentry)) { | 82 | if (ecryptfs_dentry_to_lower(dentry)) { |
83 | mntput(ecryptfs_dentry_to_lower_mnt(dentry)); | ||
84 | dput(ecryptfs_dentry_to_lower(dentry)); | 83 | dput(ecryptfs_dentry_to_lower(dentry)); |
84 | mntput(ecryptfs_dentry_to_lower_mnt(dentry)); | ||
85 | } | 85 | } |
86 | kmem_cache_free(ecryptfs_dentry_info_cache, | 86 | kmem_cache_free(ecryptfs_dentry_info_cache, |
87 | ecryptfs_dentry_to_private(dentry)); | 87 | ecryptfs_dentry_to_private(dentry)); |
diff --git a/fs/ext3/acl.c b/fs/ext3/acl.c index d34e9967430a..a754d1848173 100644 --- a/fs/ext3/acl.c +++ b/fs/ext3/acl.c | |||
@@ -37,7 +37,7 @@ ext3_acl_from_disk(const void *value, size_t size) | |||
37 | return ERR_PTR(-EINVAL); | 37 | return ERR_PTR(-EINVAL); |
38 | if (count == 0) | 38 | if (count == 0) |
39 | return NULL; | 39 | return NULL; |
40 | acl = posix_acl_alloc(count, GFP_KERNEL); | 40 | acl = posix_acl_alloc(count, GFP_NOFS); |
41 | if (!acl) | 41 | if (!acl) |
42 | return ERR_PTR(-ENOMEM); | 42 | return ERR_PTR(-ENOMEM); |
43 | for (n=0; n < count; n++) { | 43 | for (n=0; n < count; n++) { |
@@ -91,7 +91,7 @@ ext3_acl_to_disk(const struct posix_acl *acl, size_t *size) | |||
91 | 91 | ||
92 | *size = ext3_acl_size(acl->a_count); | 92 | *size = ext3_acl_size(acl->a_count); |
93 | ext_acl = kmalloc(sizeof(ext3_acl_header) + acl->a_count * | 93 | ext_acl = kmalloc(sizeof(ext3_acl_header) + acl->a_count * |
94 | sizeof(ext3_acl_entry), GFP_KERNEL); | 94 | sizeof(ext3_acl_entry), GFP_NOFS); |
95 | if (!ext_acl) | 95 | if (!ext_acl) |
96 | return ERR_PTR(-ENOMEM); | 96 | return ERR_PTR(-ENOMEM); |
97 | ext_acl->a_version = cpu_to_le32(EXT3_ACL_VERSION); | 97 | ext_acl->a_version = cpu_to_le32(EXT3_ACL_VERSION); |
@@ -187,7 +187,7 @@ ext3_get_acl(struct inode *inode, int type) | |||
187 | } | 187 | } |
188 | retval = ext3_xattr_get(inode, name_index, "", NULL, 0); | 188 | retval = ext3_xattr_get(inode, name_index, "", NULL, 0); |
189 | if (retval > 0) { | 189 | if (retval > 0) { |
190 | value = kmalloc(retval, GFP_KERNEL); | 190 | value = kmalloc(retval, GFP_NOFS); |
191 | if (!value) | 191 | if (!value) |
192 | return ERR_PTR(-ENOMEM); | 192 | return ERR_PTR(-ENOMEM); |
193 | retval = ext3_xattr_get(inode, name_index, "", value, retval); | 193 | retval = ext3_xattr_get(inode, name_index, "", value, retval); |
@@ -335,7 +335,7 @@ ext3_init_acl(handle_t *handle, struct inode *inode, struct inode *dir) | |||
335 | if (error) | 335 | if (error) |
336 | goto cleanup; | 336 | goto cleanup; |
337 | } | 337 | } |
338 | clone = posix_acl_clone(acl, GFP_KERNEL); | 338 | clone = posix_acl_clone(acl, GFP_NOFS); |
339 | error = -ENOMEM; | 339 | error = -ENOMEM; |
340 | if (!clone) | 340 | if (!clone) |
341 | goto cleanup; | 341 | goto cleanup; |
diff --git a/fs/ext3/resize.c b/fs/ext3/resize.c index 9397d779c43d..0e97b6e07cb0 100644 --- a/fs/ext3/resize.c +++ b/fs/ext3/resize.c | |||
@@ -485,7 +485,7 @@ static int add_new_gdb(handle_t *handle, struct inode *inode, | |||
485 | goto exit_dindj; | 485 | goto exit_dindj; |
486 | 486 | ||
487 | n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *), | 487 | n_group_desc = kmalloc((gdb_num + 1) * sizeof(struct buffer_head *), |
488 | GFP_KERNEL); | 488 | GFP_NOFS); |
489 | if (!n_group_desc) { | 489 | if (!n_group_desc) { |
490 | err = -ENOMEM; | 490 | err = -ENOMEM; |
491 | ext3_warning (sb, __FUNCTION__, | 491 | ext3_warning (sb, __FUNCTION__, |
@@ -568,7 +568,7 @@ static int reserve_backup_gdb(handle_t *handle, struct inode *inode, | |||
568 | int res, i; | 568 | int res, i; |
569 | int err; | 569 | int err; |
570 | 570 | ||
571 | primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_KERNEL); | 571 | primary = kmalloc(reserved_gdb * sizeof(*primary), GFP_NOFS); |
572 | if (!primary) | 572 | if (!primary) |
573 | return -ENOMEM; | 573 | return -ENOMEM; |
574 | 574 | ||
diff --git a/fs/ext3/xattr.c b/fs/ext3/xattr.c index fb89c299bece..a6ea4d6a8bb2 100644 --- a/fs/ext3/xattr.c +++ b/fs/ext3/xattr.c | |||
@@ -728,7 +728,7 @@ ext3_xattr_block_set(handle_t *handle, struct inode *inode, | |||
728 | ce = NULL; | 728 | ce = NULL; |
729 | } | 729 | } |
730 | ea_bdebug(bs->bh, "cloning"); | 730 | ea_bdebug(bs->bh, "cloning"); |
731 | s->base = kmalloc(bs->bh->b_size, GFP_KERNEL); | 731 | s->base = kmalloc(bs->bh->b_size, GFP_NOFS); |
732 | error = -ENOMEM; | 732 | error = -ENOMEM; |
733 | if (s->base == NULL) | 733 | if (s->base == NULL) |
734 | goto cleanup; | 734 | goto cleanup; |
@@ -740,7 +740,7 @@ ext3_xattr_block_set(handle_t *handle, struct inode *inode, | |||
740 | } | 740 | } |
741 | } else { | 741 | } else { |
742 | /* Allocate a buffer where we construct the new block. */ | 742 | /* Allocate a buffer where we construct the new block. */ |
743 | s->base = kzalloc(sb->s_blocksize, GFP_KERNEL); | 743 | s->base = kzalloc(sb->s_blocksize, GFP_NOFS); |
744 | /* assert(header == s->base) */ | 744 | /* assert(header == s->base) */ |
745 | error = -ENOMEM; | 745 | error = -ENOMEM; |
746 | if (s->base == NULL) | 746 | if (s->base == NULL) |
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index c0076077d338..06557679ca41 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -751,7 +751,7 @@ int generic_osync_inode(struct inode *inode, struct address_space *mapping, int | |||
751 | EXPORT_SYMBOL(generic_osync_inode); | 751 | EXPORT_SYMBOL(generic_osync_inode); |
752 | 752 | ||
753 | /** | 753 | /** |
754 | * writeback_acquire: attempt to get exclusive writeback access to a device | 754 | * writeback_acquire - attempt to get exclusive writeback access to a device |
755 | * @bdi: the device's backing_dev_info structure | 755 | * @bdi: the device's backing_dev_info structure |
756 | * | 756 | * |
757 | * It is a waste of resources to have more than one pdflush thread blocked on | 757 | * It is a waste of resources to have more than one pdflush thread blocked on |
@@ -768,7 +768,7 @@ int writeback_acquire(struct backing_dev_info *bdi) | |||
768 | } | 768 | } |
769 | 769 | ||
770 | /** | 770 | /** |
771 | * writeback_in_progress: determine whether there is writeback in progress | 771 | * writeback_in_progress - determine whether there is writeback in progress |
772 | * @bdi: the device's backing_dev_info structure. | 772 | * @bdi: the device's backing_dev_info structure. |
773 | * | 773 | * |
774 | * Determine whether there is writeback in progress against a backing device. | 774 | * Determine whether there is writeback in progress against a backing device. |
@@ -779,7 +779,7 @@ int writeback_in_progress(struct backing_dev_info *bdi) | |||
779 | } | 779 | } |
780 | 780 | ||
781 | /** | 781 | /** |
782 | * writeback_release: relinquish exclusive writeback access against a device. | 782 | * writeback_release - relinquish exclusive writeback access against a device. |
783 | * @bdi: the device's backing_dev_info structure | 783 | * @bdi: the device's backing_dev_info structure |
784 | */ | 784 | */ |
785 | void writeback_release(struct backing_dev_info *bdi) | 785 | void writeback_release(struct backing_dev_info *bdi) |
diff --git a/fs/hfs/brec.c b/fs/hfs/brec.c index 878bf25dbc6a..92fb358ce824 100644 --- a/fs/hfs/brec.c +++ b/fs/hfs/brec.c | |||
@@ -229,7 +229,7 @@ skip: | |||
229 | static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) | 229 | static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) |
230 | { | 230 | { |
231 | struct hfs_btree *tree; | 231 | struct hfs_btree *tree; |
232 | struct hfs_bnode *node, *new_node; | 232 | struct hfs_bnode *node, *new_node, *next_node; |
233 | struct hfs_bnode_desc node_desc; | 233 | struct hfs_bnode_desc node_desc; |
234 | int num_recs, new_rec_off, new_off, old_rec_off; | 234 | int num_recs, new_rec_off, new_off, old_rec_off; |
235 | int data_start, data_end, size; | 235 | int data_start, data_end, size; |
@@ -248,6 +248,17 @@ static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) | |||
248 | new_node->type = node->type; | 248 | new_node->type = node->type; |
249 | new_node->height = node->height; | 249 | new_node->height = node->height; |
250 | 250 | ||
251 | if (node->next) | ||
252 | next_node = hfs_bnode_find(tree, node->next); | ||
253 | else | ||
254 | next_node = NULL; | ||
255 | |||
256 | if (IS_ERR(next_node)) { | ||
257 | hfs_bnode_put(node); | ||
258 | hfs_bnode_put(new_node); | ||
259 | return next_node; | ||
260 | } | ||
261 | |||
251 | size = tree->node_size / 2 - node->num_recs * 2 - 14; | 262 | size = tree->node_size / 2 - node->num_recs * 2 - 14; |
252 | old_rec_off = tree->node_size - 4; | 263 | old_rec_off = tree->node_size - 4; |
253 | num_recs = 1; | 264 | num_recs = 1; |
@@ -261,6 +272,8 @@ static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) | |||
261 | /* panic? */ | 272 | /* panic? */ |
262 | hfs_bnode_put(node); | 273 | hfs_bnode_put(node); |
263 | hfs_bnode_put(new_node); | 274 | hfs_bnode_put(new_node); |
275 | if (next_node) | ||
276 | hfs_bnode_put(next_node); | ||
264 | return ERR_PTR(-ENOSPC); | 277 | return ERR_PTR(-ENOSPC); |
265 | } | 278 | } |
266 | 279 | ||
@@ -315,8 +328,7 @@ static struct hfs_bnode *hfs_bnode_split(struct hfs_find_data *fd) | |||
315 | hfs_bnode_write(node, &node_desc, 0, sizeof(node_desc)); | 328 | hfs_bnode_write(node, &node_desc, 0, sizeof(node_desc)); |
316 | 329 | ||
317 | /* update next bnode header */ | 330 | /* update next bnode header */ |
318 | if (new_node->next) { | 331 | if (next_node) { |
319 | struct hfs_bnode *next_node = hfs_bnode_find(tree, new_node->next); | ||
320 | next_node->prev = new_node->this; | 332 | next_node->prev = new_node->this; |
321 | hfs_bnode_read(next_node, &node_desc, 0, sizeof(node_desc)); | 333 | hfs_bnode_read(next_node, &node_desc, 0, sizeof(node_desc)); |
322 | node_desc.prev = cpu_to_be32(next_node->prev); | 334 | node_desc.prev = cpu_to_be32(next_node->prev); |
diff --git a/fs/isofs/compress.c b/fs/isofs/compress.c index 37dbd6404787..defb932eee9a 100644 --- a/fs/isofs/compress.c +++ b/fs/isofs/compress.c | |||
@@ -72,6 +72,17 @@ static int zisofs_readpage(struct file *file, struct page *page) | |||
72 | offset = index & ~zisofs_block_page_mask; | 72 | offset = index & ~zisofs_block_page_mask; |
73 | blockindex = offset >> zisofs_block_page_shift; | 73 | blockindex = offset >> zisofs_block_page_shift; |
74 | maxpage = (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; | 74 | maxpage = (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; |
75 | |||
76 | /* | ||
77 | * If this page is wholly outside i_size we just return zero; | ||
78 | * do_generic_file_read() will handle this for us | ||
79 | */ | ||
80 | if (page->index >= maxpage) { | ||
81 | SetPageUptodate(page); | ||
82 | unlock_page(page); | ||
83 | return 0; | ||
84 | } | ||
85 | |||
75 | maxpage = min(zisofs_block_pages, maxpage-offset); | 86 | maxpage = min(zisofs_block_pages, maxpage-offset); |
76 | 87 | ||
77 | for ( i = 0 ; i < maxpage ; i++, offset++ ) { | 88 | for ( i = 0 ; i < maxpage ; i++, offset++ ) { |
diff --git a/fs/jbd/journal.c b/fs/jbd/journal.c index 3943a8905eb2..9816293442ab 100644 --- a/fs/jbd/journal.c +++ b/fs/jbd/journal.c | |||
@@ -697,13 +697,14 @@ fail: | |||
697 | */ | 697 | */ |
698 | 698 | ||
699 | /** | 699 | /** |
700 | * journal_t * journal_init_dev() - creates an initialises a journal structure | 700 | * journal_t * journal_init_dev() - creates and initialises a journal structure |
701 | * @bdev: Block device on which to create the journal | 701 | * @bdev: Block device on which to create the journal |
702 | * @fs_dev: Device which hold journalled filesystem for this journal. | 702 | * @fs_dev: Device which hold journalled filesystem for this journal. |
703 | * @start: Block nr Start of journal. | 703 | * @start: Block nr Start of journal. |
704 | * @len: Length of the journal in blocks. | 704 | * @len: Length of the journal in blocks. |
705 | * @blocksize: blocksize of journalling device | 705 | * @blocksize: blocksize of journalling device |
706 | * @returns: a newly created journal_t * | 706 | * |
707 | * Returns: a newly created journal_t * | ||
707 | * | 708 | * |
708 | * journal_init_dev creates a journal which maps a fixed contiguous | 709 | * journal_init_dev creates a journal which maps a fixed contiguous |
709 | * range of blocks on an arbitrary block device. | 710 | * range of blocks on an arbitrary block device. |
diff --git a/fs/jbd/recovery.c b/fs/jbd/recovery.c index 2b8edf4d6eaa..43bc5e5ed064 100644 --- a/fs/jbd/recovery.c +++ b/fs/jbd/recovery.c | |||
@@ -478,7 +478,7 @@ static int do_one_pass(journal_t *journal, | |||
478 | memcpy(nbh->b_data, obh->b_data, | 478 | memcpy(nbh->b_data, obh->b_data, |
479 | journal->j_blocksize); | 479 | journal->j_blocksize); |
480 | if (flags & JFS_FLAG_ESCAPE) { | 480 | if (flags & JFS_FLAG_ESCAPE) { |
481 | *((__be32 *)bh->b_data) = | 481 | *((__be32 *)nbh->b_data) = |
482 | cpu_to_be32(JFS_MAGIC_NUMBER); | 482 | cpu_to_be32(JFS_MAGIC_NUMBER); |
483 | } | 483 | } |
484 | 484 | ||
diff --git a/fs/jbd/transaction.c b/fs/jbd/transaction.c index c6cbb6cd59b2..2c9e8f5d13aa 100644 --- a/fs/jbd/transaction.c +++ b/fs/jbd/transaction.c | |||
@@ -1426,7 +1426,8 @@ int journal_stop(handle_t *handle) | |||
1426 | return err; | 1426 | return err; |
1427 | } | 1427 | } |
1428 | 1428 | ||
1429 | /**int journal_force_commit() - force any uncommitted transactions | 1429 | /** |
1430 | * int journal_force_commit() - force any uncommitted transactions | ||
1430 | * @journal: journal to force | 1431 | * @journal: journal to force |
1431 | * | 1432 | * |
1432 | * For synchronous operations: force any uncommitted transactions | 1433 | * For synchronous operations: force any uncommitted transactions |
@@ -1903,13 +1904,12 @@ zap_buffer_unlocked: | |||
1903 | } | 1904 | } |
1904 | 1905 | ||
1905 | /** | 1906 | /** |
1906 | * void journal_invalidatepage() | 1907 | * void journal_invalidatepage() - invalidate a journal page |
1907 | * @journal: journal to use for flush... | 1908 | * @journal: journal to use for flush |
1908 | * @page: page to flush | 1909 | * @page: page to flush |
1909 | * @offset: length of page to invalidate. | 1910 | * @offset: length of page to invalidate. |
1910 | * | 1911 | * |
1911 | * Reap page buffers containing data after offset in page. | 1912 | * Reap page buffers containing data after offset in page. |
1912 | * | ||
1913 | */ | 1913 | */ |
1914 | void journal_invalidatepage(journal_t *journal, | 1914 | void journal_invalidatepage(journal_t *journal, |
1915 | struct page *page, | 1915 | struct page *page, |
diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c index 146411387ada..5d0405a9e7ca 100644 --- a/fs/jbd2/recovery.c +++ b/fs/jbd2/recovery.c | |||
@@ -535,7 +535,7 @@ static int do_one_pass(journal_t *journal, | |||
535 | memcpy(nbh->b_data, obh->b_data, | 535 | memcpy(nbh->b_data, obh->b_data, |
536 | journal->j_blocksize); | 536 | journal->j_blocksize); |
537 | if (flags & JBD2_FLAG_ESCAPE) { | 537 | if (flags & JBD2_FLAG_ESCAPE) { |
538 | *((__be32 *)bh->b_data) = | 538 | *((__be32 *)nbh->b_data) = |
539 | cpu_to_be32(JBD2_MAGIC_NUMBER); | 539 | cpu_to_be32(JBD2_MAGIC_NUMBER); |
540 | } | 540 | } |
541 | 541 | ||
diff --git a/fs/locks.c b/fs/locks.c index f36f0e61558d..d83fab1b77b5 100644 --- a/fs/locks.c +++ b/fs/locks.c | |||
@@ -1275,13 +1275,13 @@ out: | |||
1275 | EXPORT_SYMBOL(__break_lease); | 1275 | EXPORT_SYMBOL(__break_lease); |
1276 | 1276 | ||
1277 | /** | 1277 | /** |
1278 | * lease_get_mtime | 1278 | * lease_get_mtime - get the last modified time of an inode |
1279 | * @inode: the inode | 1279 | * @inode: the inode |
1280 | * @time: pointer to a timespec which will contain the last modified time | 1280 | * @time: pointer to a timespec which will contain the last modified time |
1281 | * | 1281 | * |
1282 | * This is to force NFS clients to flush their caches for files with | 1282 | * This is to force NFS clients to flush their caches for files with |
1283 | * exclusive leases. The justification is that if someone has an | 1283 | * exclusive leases. The justification is that if someone has an |
1284 | * exclusive lease, then they could be modifiying it. | 1284 | * exclusive lease, then they could be modifying it. |
1285 | */ | 1285 | */ |
1286 | void lease_get_mtime(struct inode *inode, struct timespec *time) | 1286 | void lease_get_mtime(struct inode *inode, struct timespec *time) |
1287 | { | 1287 | { |
diff --git a/fs/namei.c b/fs/namei.c index 941c8e8228c0..6b7a0eef4090 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
@@ -1364,13 +1364,13 @@ static int __lookup_one_len(const char *name, struct qstr *this, | |||
1364 | } | 1364 | } |
1365 | 1365 | ||
1366 | /** | 1366 | /** |
1367 | * lookup_one_len: filesystem helper to lookup single pathname component | 1367 | * lookup_one_len - filesystem helper to lookup single pathname component |
1368 | * @name: pathname component to lookup | 1368 | * @name: pathname component to lookup |
1369 | * @base: base directory to lookup from | 1369 | * @base: base directory to lookup from |
1370 | * @len: maximum length @len should be interpreted to | 1370 | * @len: maximum length @len should be interpreted to |
1371 | * | 1371 | * |
1372 | * Note that this routine is purely a helper for filesystem useage and should | 1372 | * Note that this routine is purely a helper for filesystem usage and should |
1373 | * not be called by generic code. Also note that by using this function to | 1373 | * not be called by generic code. Also note that by using this function the |
1374 | * nameidata argument is passed to the filesystem methods and a filesystem | 1374 | * nameidata argument is passed to the filesystem methods and a filesystem |
1375 | * using this helper needs to be prepared for that. | 1375 | * using this helper needs to be prepared for that. |
1376 | */ | 1376 | */ |
diff --git a/fs/nfs/read.c b/fs/nfs/read.c index 3d7d9631e125..5a70be589bbe 100644 --- a/fs/nfs/read.c +++ b/fs/nfs/read.c | |||
@@ -533,7 +533,10 @@ readpage_async_filler(void *data, struct page *page) | |||
533 | 533 | ||
534 | if (len < PAGE_CACHE_SIZE) | 534 | if (len < PAGE_CACHE_SIZE) |
535 | zero_user_segment(page, len, PAGE_CACHE_SIZE); | 535 | zero_user_segment(page, len, PAGE_CACHE_SIZE); |
536 | nfs_pageio_add_request(desc->pgio, new); | 536 | if (!nfs_pageio_add_request(desc->pgio, new)) { |
537 | error = desc->pgio->pg_error; | ||
538 | goto out_unlock; | ||
539 | } | ||
537 | return 0; | 540 | return 0; |
538 | out_error: | 541 | out_error: |
539 | error = PTR_ERR(new); | 542 | error = PTR_ERR(new); |
diff --git a/fs/nfs/super.c b/fs/nfs/super.c index fcf4b982c885..dd4dfcd632ec 100644 --- a/fs/nfs/super.c +++ b/fs/nfs/super.c | |||
@@ -632,7 +632,7 @@ static int nfs_verify_server_address(struct sockaddr *addr) | |||
632 | switch (addr->sa_family) { | 632 | switch (addr->sa_family) { |
633 | case AF_INET: { | 633 | case AF_INET: { |
634 | struct sockaddr_in *sa = (struct sockaddr_in *)addr; | 634 | struct sockaddr_in *sa = (struct sockaddr_in *)addr; |
635 | return sa->sin_addr.s_addr != INADDR_ANY; | 635 | return sa->sin_addr.s_addr != htonl(INADDR_ANY); |
636 | } | 636 | } |
637 | case AF_INET6: { | 637 | case AF_INET6: { |
638 | struct in6_addr *sa = &((struct sockaddr_in6 *)addr)->sin6_addr; | 638 | struct in6_addr *sa = &((struct sockaddr_in6 *)addr)->sin6_addr; |
diff --git a/fs/nfs/write.c b/fs/nfs/write.c index 80c61fdb2720..bed63416a55b 100644 --- a/fs/nfs/write.c +++ b/fs/nfs/write.c | |||
@@ -39,6 +39,7 @@ static struct nfs_page * nfs_update_request(struct nfs_open_context*, | |||
39 | unsigned int, unsigned int); | 39 | unsigned int, unsigned int); |
40 | static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc, | 40 | static void nfs_pageio_init_write(struct nfs_pageio_descriptor *desc, |
41 | struct inode *inode, int ioflags); | 41 | struct inode *inode, int ioflags); |
42 | static void nfs_redirty_request(struct nfs_page *req); | ||
42 | static const struct rpc_call_ops nfs_write_partial_ops; | 43 | static const struct rpc_call_ops nfs_write_partial_ops; |
43 | static const struct rpc_call_ops nfs_write_full_ops; | 44 | static const struct rpc_call_ops nfs_write_full_ops; |
44 | static const struct rpc_call_ops nfs_commit_ops; | 45 | static const struct rpc_call_ops nfs_commit_ops; |
@@ -288,7 +289,12 @@ static int nfs_page_async_flush(struct nfs_pageio_descriptor *pgio, | |||
288 | BUG(); | 289 | BUG(); |
289 | } | 290 | } |
290 | spin_unlock(&inode->i_lock); | 291 | spin_unlock(&inode->i_lock); |
291 | nfs_pageio_add_request(pgio, req); | 292 | if (!nfs_pageio_add_request(pgio, req)) { |
293 | nfs_redirty_request(req); | ||
294 | nfs_end_page_writeback(page); | ||
295 | nfs_clear_page_tag_locked(req); | ||
296 | return pgio->pg_error; | ||
297 | } | ||
292 | return 0; | 298 | return 0; |
293 | } | 299 | } |
294 | 300 | ||
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c index 1eb771d79cca..3e6b3f41ee1f 100644 --- a/fs/nfsd/nfsfh.c +++ b/fs/nfsd/nfsfh.c | |||
@@ -232,6 +232,7 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access) | |||
232 | fhp->fh_dentry = dentry; | 232 | fhp->fh_dentry = dentry; |
233 | fhp->fh_export = exp; | 233 | fhp->fh_export = exp; |
234 | nfsd_nr_verified++; | 234 | nfsd_nr_verified++; |
235 | cache_get(&exp->h); | ||
235 | } else { | 236 | } else { |
236 | /* | 237 | /* |
237 | * just rechecking permissions | 238 | * just rechecking permissions |
@@ -241,6 +242,7 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access) | |||
241 | dprintk("nfsd: fh_verify - just checking\n"); | 242 | dprintk("nfsd: fh_verify - just checking\n"); |
242 | dentry = fhp->fh_dentry; | 243 | dentry = fhp->fh_dentry; |
243 | exp = fhp->fh_export; | 244 | exp = fhp->fh_export; |
245 | cache_get(&exp->h); | ||
244 | /* | 246 | /* |
245 | * Set user creds for this exportpoint; necessary even | 247 | * Set user creds for this exportpoint; necessary even |
246 | * in the "just checking" case because this may be a | 248 | * in the "just checking" case because this may be a |
@@ -252,8 +254,6 @@ fh_verify(struct svc_rqst *rqstp, struct svc_fh *fhp, int type, int access) | |||
252 | if (error) | 254 | if (error) |
253 | goto out; | 255 | goto out; |
254 | } | 256 | } |
255 | cache_get(&exp->h); | ||
256 | |||
257 | 257 | ||
258 | error = nfsd_mode_check(rqstp, dentry->d_inode->i_mode, type); | 258 | error = nfsd_mode_check(rqstp, dentry->d_inode->i_mode, type); |
259 | if (error) | 259 | if (error) |
diff --git a/fs/proc/base.c b/fs/proc/base.c index 9a4da0aae02e..81d7d145292a 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
@@ -1036,6 +1036,26 @@ static const struct file_operations proc_loginuid_operations = { | |||
1036 | .read = proc_loginuid_read, | 1036 | .read = proc_loginuid_read, |
1037 | .write = proc_loginuid_write, | 1037 | .write = proc_loginuid_write, |
1038 | }; | 1038 | }; |
1039 | |||
1040 | static ssize_t proc_sessionid_read(struct file * file, char __user * buf, | ||
1041 | size_t count, loff_t *ppos) | ||
1042 | { | ||
1043 | struct inode * inode = file->f_path.dentry->d_inode; | ||
1044 | struct task_struct *task = get_proc_task(inode); | ||
1045 | ssize_t length; | ||
1046 | char tmpbuf[TMPBUFLEN]; | ||
1047 | |||
1048 | if (!task) | ||
1049 | return -ESRCH; | ||
1050 | length = scnprintf(tmpbuf, TMPBUFLEN, "%u", | ||
1051 | audit_get_sessionid(task)); | ||
1052 | put_task_struct(task); | ||
1053 | return simple_read_from_buffer(buf, count, ppos, tmpbuf, length); | ||
1054 | } | ||
1055 | |||
1056 | static const struct file_operations proc_sessionid_operations = { | ||
1057 | .read = proc_sessionid_read, | ||
1058 | }; | ||
1039 | #endif | 1059 | #endif |
1040 | 1060 | ||
1041 | #ifdef CONFIG_FAULT_INJECTION | 1061 | #ifdef CONFIG_FAULT_INJECTION |
@@ -2270,7 +2290,7 @@ static const struct pid_entry tgid_base_stuff[] = { | |||
2270 | DIR("fd", S_IRUSR|S_IXUSR, fd), | 2290 | DIR("fd", S_IRUSR|S_IXUSR, fd), |
2271 | DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo), | 2291 | DIR("fdinfo", S_IRUSR|S_IXUSR, fdinfo), |
2272 | #ifdef CONFIG_NET | 2292 | #ifdef CONFIG_NET |
2273 | DIR("net", S_IRUGO|S_IXUSR, net), | 2293 | DIR("net", S_IRUGO|S_IXUGO, net), |
2274 | #endif | 2294 | #endif |
2275 | REG("environ", S_IRUSR, environ), | 2295 | REG("environ", S_IRUSR, environ), |
2276 | INF("auxv", S_IRUSR, pid_auxv), | 2296 | INF("auxv", S_IRUSR, pid_auxv), |
@@ -2319,6 +2339,7 @@ static const struct pid_entry tgid_base_stuff[] = { | |||
2319 | REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), | 2339 | REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), |
2320 | #ifdef CONFIG_AUDITSYSCALL | 2340 | #ifdef CONFIG_AUDITSYSCALL |
2321 | REG("loginuid", S_IWUSR|S_IRUGO, loginuid), | 2341 | REG("loginuid", S_IWUSR|S_IRUGO, loginuid), |
2342 | REG("sessionid", S_IRUSR, sessionid), | ||
2322 | #endif | 2343 | #endif |
2323 | #ifdef CONFIG_FAULT_INJECTION | 2344 | #ifdef CONFIG_FAULT_INJECTION |
2324 | REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), | 2345 | REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), |
@@ -2649,6 +2670,7 @@ static const struct pid_entry tid_base_stuff[] = { | |||
2649 | REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), | 2670 | REG("oom_adj", S_IRUGO|S_IWUSR, oom_adjust), |
2650 | #ifdef CONFIG_AUDITSYSCALL | 2671 | #ifdef CONFIG_AUDITSYSCALL |
2651 | REG("loginuid", S_IWUSR|S_IRUGO, loginuid), | 2672 | REG("loginuid", S_IWUSR|S_IRUGO, loginuid), |
2673 | REG("sessionid", S_IRUSR, sessionid), | ||
2652 | #endif | 2674 | #endif |
2653 | #ifdef CONFIG_FAULT_INJECTION | 2675 | #ifdef CONFIG_FAULT_INJECTION |
2654 | REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), | 2676 | REG("make-it-fail", S_IRUGO|S_IWUSR, fault_inject), |
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 4206454734e0..9dfb5ff24209 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c | |||
@@ -527,13 +527,21 @@ struct pagemapread { | |||
527 | char __user *out, *end; | 527 | char __user *out, *end; |
528 | }; | 528 | }; |
529 | 529 | ||
530 | #define PM_ENTRY_BYTES sizeof(u64) | 530 | #define PM_ENTRY_BYTES sizeof(u64) |
531 | #define PM_RESERVED_BITS 3 | 531 | #define PM_STATUS_BITS 3 |
532 | #define PM_RESERVED_OFFSET (64 - PM_RESERVED_BITS) | 532 | #define PM_STATUS_OFFSET (64 - PM_STATUS_BITS) |
533 | #define PM_RESERVED_MASK (((1LL<<PM_RESERVED_BITS)-1) << PM_RESERVED_OFFSET) | 533 | #define PM_STATUS_MASK (((1LL << PM_STATUS_BITS) - 1) << PM_STATUS_OFFSET) |
534 | #define PM_SPECIAL(nr) (((nr) << PM_RESERVED_OFFSET) & PM_RESERVED_MASK) | 534 | #define PM_STATUS(nr) (((nr) << PM_STATUS_OFFSET) & PM_STATUS_MASK) |
535 | #define PM_NOT_PRESENT PM_SPECIAL(1LL) | 535 | #define PM_PSHIFT_BITS 6 |
536 | #define PM_SWAP PM_SPECIAL(2LL) | 536 | #define PM_PSHIFT_OFFSET (PM_STATUS_OFFSET - PM_PSHIFT_BITS) |
537 | #define PM_PSHIFT_MASK (((1LL << PM_PSHIFT_BITS) - 1) << PM_PSHIFT_OFFSET) | ||
538 | #define PM_PSHIFT(x) (((u64) (x) << PM_PSHIFT_OFFSET) & PM_PSHIFT_MASK) | ||
539 | #define PM_PFRAME_MASK ((1LL << PM_PSHIFT_OFFSET) - 1) | ||
540 | #define PM_PFRAME(x) ((x) & PM_PFRAME_MASK) | ||
541 | |||
542 | #define PM_PRESENT PM_STATUS(4LL) | ||
543 | #define PM_SWAP PM_STATUS(2LL) | ||
544 | #define PM_NOT_PRESENT PM_PSHIFT(PAGE_SHIFT) | ||
537 | #define PM_END_OF_BUFFER 1 | 545 | #define PM_END_OF_BUFFER 1 |
538 | 546 | ||
539 | static int add_to_pagemap(unsigned long addr, u64 pfn, | 547 | static int add_to_pagemap(unsigned long addr, u64 pfn, |
@@ -574,7 +582,7 @@ static int pagemap_pte_hole(unsigned long start, unsigned long end, | |||
574 | u64 swap_pte_to_pagemap_entry(pte_t pte) | 582 | u64 swap_pte_to_pagemap_entry(pte_t pte) |
575 | { | 583 | { |
576 | swp_entry_t e = pte_to_swp_entry(pte); | 584 | swp_entry_t e = pte_to_swp_entry(pte); |
577 | return PM_SWAP | swp_type(e) | (swp_offset(e) << MAX_SWAPFILES_SHIFT); | 585 | return swp_type(e) | (swp_offset(e) << MAX_SWAPFILES_SHIFT); |
578 | } | 586 | } |
579 | 587 | ||
580 | static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, | 588 | static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, |
@@ -588,9 +596,11 @@ static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, | |||
588 | u64 pfn = PM_NOT_PRESENT; | 596 | u64 pfn = PM_NOT_PRESENT; |
589 | pte = pte_offset_map(pmd, addr); | 597 | pte = pte_offset_map(pmd, addr); |
590 | if (is_swap_pte(*pte)) | 598 | if (is_swap_pte(*pte)) |
591 | pfn = swap_pte_to_pagemap_entry(*pte); | 599 | pfn = PM_PFRAME(swap_pte_to_pagemap_entry(*pte)) |
600 | | PM_PSHIFT(PAGE_SHIFT) | PM_SWAP; | ||
592 | else if (pte_present(*pte)) | 601 | else if (pte_present(*pte)) |
593 | pfn = pte_pfn(*pte); | 602 | pfn = PM_PFRAME(pte_pfn(*pte)) |
603 | | PM_PSHIFT(PAGE_SHIFT) | PM_PRESENT; | ||
594 | /* unmap so we're not in atomic when we copy to userspace */ | 604 | /* unmap so we're not in atomic when we copy to userspace */ |
595 | pte_unmap(pte); | 605 | pte_unmap(pte); |
596 | err = add_to_pagemap(addr, pfn, pm); | 606 | err = add_to_pagemap(addr, pfn, pm); |
@@ -611,12 +621,20 @@ static struct mm_walk pagemap_walk = { | |||
611 | /* | 621 | /* |
612 | * /proc/pid/pagemap - an array mapping virtual pages to pfns | 622 | * /proc/pid/pagemap - an array mapping virtual pages to pfns |
613 | * | 623 | * |
614 | * For each page in the address space, this file contains one 64-bit | 624 | * For each page in the address space, this file contains one 64-bit entry |
615 | * entry representing the corresponding physical page frame number | 625 | * consisting of the following: |
616 | * (PFN) if the page is present. If there is a swap entry for the | 626 | * |
617 | * physical page, then an encoding of the swap file number and the | 627 | * Bits 0-55 page frame number (PFN) if present |
618 | * page's offset into the swap file are returned. If no page is | 628 | * Bits 0-4 swap type if swapped |
619 | * present at all, PM_NOT_PRESENT is returned. This allows determining | 629 | * Bits 5-55 swap offset if swapped |
630 | * Bits 55-60 page shift (page size = 1<<page shift) | ||
631 | * Bit 61 reserved for future use | ||
632 | * Bit 62 page swapped | ||
633 | * Bit 63 page present | ||
634 | * | ||
635 | * If the page is not present but in swap, then the PFN contains an | ||
636 | * encoding of the swap file number and the page's offset into the | ||
637 | * swap. Unmapped pages return a null PFN. This allows determining | ||
620 | * precisely which pages are mapped (or in swap) and comparing mapped | 638 | * precisely which pages are mapped (or in swap) and comparing mapped |
621 | * pages between processes. | 639 | * pages between processes. |
622 | * | 640 | * |
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c index 00b6f0a518c8..3f13d491c7c7 100644 --- a/fs/romfs/inode.c +++ b/fs/romfs/inode.c | |||
@@ -340,8 +340,9 @@ static struct dentry * | |||
340 | romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | 340 | romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) |
341 | { | 341 | { |
342 | unsigned long offset, maxoff; | 342 | unsigned long offset, maxoff; |
343 | int fslen, res; | 343 | long res; |
344 | struct inode *inode; | 344 | int fslen; |
345 | struct inode *inode = NULL; | ||
345 | char fsname[ROMFS_MAXFN]; /* XXX dynamic? */ | 346 | char fsname[ROMFS_MAXFN]; /* XXX dynamic? */ |
346 | struct romfs_inode ri; | 347 | struct romfs_inode ri; |
347 | const char *name; /* got from dentry */ | 348 | const char *name; /* got from dentry */ |
@@ -351,7 +352,7 @@ romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | |||
351 | offset = dir->i_ino & ROMFH_MASK; | 352 | offset = dir->i_ino & ROMFH_MASK; |
352 | lock_kernel(); | 353 | lock_kernel(); |
353 | if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0) | 354 | if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0) |
354 | goto out; | 355 | goto error; |
355 | 356 | ||
356 | maxoff = romfs_maxsize(dir->i_sb); | 357 | maxoff = romfs_maxsize(dir->i_sb); |
357 | offset = be32_to_cpu(ri.spec) & ROMFH_MASK; | 358 | offset = be32_to_cpu(ri.spec) & ROMFH_MASK; |
@@ -364,9 +365,9 @@ romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | |||
364 | 365 | ||
365 | for(;;) { | 366 | for(;;) { |
366 | if (!offset || offset >= maxoff) | 367 | if (!offset || offset >= maxoff) |
367 | goto out0; | 368 | goto success; /* negative success */ |
368 | if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0) | 369 | if (romfs_copyfrom(dir, &ri, offset, ROMFH_SIZE) <= 0) |
369 | goto out; | 370 | goto error; |
370 | 371 | ||
371 | /* try to match the first 16 bytes of name */ | 372 | /* try to match the first 16 bytes of name */ |
372 | fslen = romfs_strnlen(dir, offset+ROMFH_SIZE, ROMFH_SIZE); | 373 | fslen = romfs_strnlen(dir, offset+ROMFH_SIZE, ROMFH_SIZE); |
@@ -397,23 +398,14 @@ romfs_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) | |||
397 | inode = romfs_iget(dir->i_sb, offset); | 398 | inode = romfs_iget(dir->i_sb, offset); |
398 | if (IS_ERR(inode)) { | 399 | if (IS_ERR(inode)) { |
399 | res = PTR_ERR(inode); | 400 | res = PTR_ERR(inode); |
400 | goto out; | 401 | goto error; |
401 | } | 402 | } |
402 | 403 | ||
403 | /* | 404 | success: |
404 | * it's a bit funky, _lookup needs to return an error code | 405 | d_add(dentry, inode); |
405 | * (negative) or a NULL, both as a dentry. ENOENT should not | ||
406 | * be returned, instead we need to create a negative dentry by | ||
407 | * d_add(dentry, NULL); and return 0 as no error. | ||
408 | * (Although as I see, it only matters on writable file | ||
409 | * systems). | ||
410 | */ | ||
411 | |||
412 | out0: inode = NULL; | ||
413 | res = 0; | 406 | res = 0; |
414 | d_add (dentry, inode); | 407 | error: |
415 | 408 | unlock_kernel(); | |
416 | out: unlock_kernel(); | ||
417 | return ERR_PTR(res); | 409 | return ERR_PTR(res); |
418 | } | 410 | } |
419 | 411 | ||
diff --git a/fs/super.c b/fs/super.c index 010446d8c40a..d0a941a4e620 100644 --- a/fs/super.c +++ b/fs/super.c | |||
@@ -556,11 +556,11 @@ out: | |||
556 | } | 556 | } |
557 | 557 | ||
558 | /** | 558 | /** |
559 | * mark_files_ro | 559 | * mark_files_ro - mark all files read-only |
560 | * @sb: superblock in question | 560 | * @sb: superblock in question |
561 | * | 561 | * |
562 | * All files are marked read/only. We don't care about pending | 562 | * All files are marked read-only. We don't care about pending |
563 | * delete files so this should be used in 'force' mode only | 563 | * delete files so this should be used in 'force' mode only. |
564 | */ | 564 | */ |
565 | 565 | ||
566 | static void mark_files_ro(struct super_block *sb) | 566 | static void mark_files_ro(struct super_block *sb) |
diff --git a/fs/ufs/balloc.c b/fs/ufs/balloc.c index 1fca381f0ce2..1e7598fb9787 100644 --- a/fs/ufs/balloc.c +++ b/fs/ufs/balloc.c | |||
@@ -315,8 +315,8 @@ static void ufs_change_blocknr(struct inode *inode, sector_t beg, | |||
315 | } | 315 | } |
316 | 316 | ||
317 | UFSD(" change from %llu to %llu, pos %u\n", | 317 | UFSD(" change from %llu to %llu, pos %u\n", |
318 | (unsigned long long)pos + oldb, | 318 | (unsigned long long)(pos + oldb), |
319 | (unsigned long long)pos + newb, pos); | 319 | (unsigned long long)(pos + newb), pos); |
320 | 320 | ||
321 | bh->b_blocknr = newb + pos; | 321 | bh->b_blocknr = newb + pos; |
322 | unmap_underlying_metadata(bh->b_bdev, | 322 | unmap_underlying_metadata(bh->b_bdev, |
diff --git a/include/asm-arm/arch-at91/at91cap9.h b/include/asm-arm/arch-at91/at91cap9.h index 73e1fcf4a0aa..bac83adb5050 100644 --- a/include/asm-arm/arch-at91/at91cap9.h +++ b/include/asm-arm/arch-at91/at91cap9.h | |||
@@ -97,12 +97,17 @@ | |||
97 | #define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) | 97 | #define AT91_PIOD (0xfffff800 - AT91_BASE_SYS) |
98 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) | 98 | #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS) |
99 | #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) | 99 | #define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS) |
100 | #define AT91_SHDC (0xfffffd10 - AT91_BASE_SYS) | 100 | #define AT91_SHDWC (0xfffffd10 - AT91_BASE_SYS) |
101 | #define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) | 101 | #define AT91_RTT (0xfffffd20 - AT91_BASE_SYS) |
102 | #define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) | 102 | #define AT91_PIT (0xfffffd30 - AT91_BASE_SYS) |
103 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) | 103 | #define AT91_WDT (0xfffffd40 - AT91_BASE_SYS) |
104 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) | 104 | #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS) |
105 | 105 | ||
106 | #define AT91_USART0 AT91CAP9_BASE_US0 | ||
107 | #define AT91_USART1 AT91CAP9_BASE_US1 | ||
108 | #define AT91_USART2 AT91CAP9_BASE_US2 | ||
109 | |||
110 | |||
106 | /* | 111 | /* |
107 | * Internal Memory. | 112 | * Internal Memory. |
108 | */ | 113 | */ |
diff --git a/include/asm-arm/arch-omap/dsp_common.h b/include/asm-arm/arch-omap/dsp_common.h index c61f868f24ee..da97736f3efa 100644 --- a/include/asm-arm/arch-omap/dsp_common.h +++ b/include/asm-arm/arch-omap/dsp_common.h | |||
@@ -24,11 +24,17 @@ | |||
24 | #ifndef ASM_ARCH_DSP_COMMON_H | 24 | #ifndef ASM_ARCH_DSP_COMMON_H |
25 | #define ASM_ARCH_DSP_COMMON_H | 25 | #define ASM_ARCH_DSP_COMMON_H |
26 | 26 | ||
27 | #ifdef CONFIG_ARCH_OMAP1 | 27 | #if defined(CONFIG_ARCH_OMAP1) && defined(CONFIG_OMAP_MMU_FWK) |
28 | extern void omap_dsp_request_mpui(void); | 28 | extern void omap_dsp_request_mpui(void); |
29 | extern void omap_dsp_release_mpui(void); | 29 | extern void omap_dsp_release_mpui(void); |
30 | extern int omap_dsp_request_mem(void); | 30 | extern int omap_dsp_request_mem(void); |
31 | extern int omap_dsp_release_mem(void); | 31 | extern int omap_dsp_release_mem(void); |
32 | #else | ||
33 | static inline int omap_dsp_request_mem(void) | ||
34 | { | ||
35 | return 0; | ||
36 | } | ||
37 | #define omap_dsp_release_mem() do {} while (0) | ||
32 | #endif | 38 | #endif |
33 | 39 | ||
34 | #endif /* ASM_ARCH_DSP_COMMON_H */ | 40 | #endif /* ASM_ARCH_DSP_COMMON_H */ |
diff --git a/include/asm-arm/arch-s3c2410/irqs.h b/include/asm-arm/arch-s3c2410/irqs.h index d858b3eb5547..f5435d8c3769 100644 --- a/include/asm-arm/arch-s3c2410/irqs.h +++ b/include/asm-arm/arch-s3c2410/irqs.h | |||
@@ -85,7 +85,7 @@ | |||
85 | #define IRQ_EINT23 S3C2410_IRQ(51) | 85 | #define IRQ_EINT23 S3C2410_IRQ(51) |
86 | 86 | ||
87 | 87 | ||
88 | #define IRQ_EINT(x) S3C2410_IRQ((x >= 4) ? (IRQ_EINT4 + (x) - 4) : (S3C2410_IRQ(0) + (x))) | 88 | #define IRQ_EINT(x) (((x) >= 4) ? (IRQ_EINT4 + (x) - 4) : (IRQ_EINT0 + (x))) |
89 | 89 | ||
90 | #define IRQ_LCD_FIFO S3C2410_IRQ(52) | 90 | #define IRQ_LCD_FIFO S3C2410_IRQ(52) |
91 | #define IRQ_LCD_FRAME S3C2410_IRQ(53) | 91 | #define IRQ_LCD_FRAME S3C2410_IRQ(53) |
diff --git a/include/asm-parisc/elf.h b/include/asm-parisc/elf.h index ce0c0d844c7d..d0a4a8262818 100644 --- a/include/asm-parisc/elf.h +++ b/include/asm-parisc/elf.h | |||
@@ -204,7 +204,7 @@ typedef struct elf64_fdesc { | |||
204 | /* | 204 | /* |
205 | * The following definitions are those for 32-bit ELF binaries on a 32-bit | 205 | * The following definitions are those for 32-bit ELF binaries on a 32-bit |
206 | * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries | 206 | * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries |
207 | * on a 64-bit kernel, arch/parisc64/kernel/binfmt_elf32.c defines these | 207 | * on a 64-bit kernel, arch/parisc/kernel/binfmt_elf32.c defines these |
208 | * macros appropriately and then #includes binfmt_elf.c, which then includes | 208 | * macros appropriately and then #includes binfmt_elf.c, which then includes |
209 | * this file. | 209 | * this file. |
210 | */ | 210 | */ |
@@ -216,26 +216,25 @@ typedef struct elf64_fdesc { | |||
216 | * Note that this header file is used by default in fs/binfmt_elf.c. So | 216 | * Note that this header file is used by default in fs/binfmt_elf.c. So |
217 | * the following macros are for the default case. However, for the 64 | 217 | * the following macros are for the default case. However, for the 64 |
218 | * bit kernel we also support 32 bit parisc binaries. To do that | 218 | * bit kernel we also support 32 bit parisc binaries. To do that |
219 | * arch/parisc64/kernel/binfmt_elf32.c defines its own set of these | 219 | * arch/parisc/kernel/binfmt_elf32.c defines its own set of these |
220 | * macros, and then it includes fs/binfmt_elf.c to provide an alternate | 220 | * macros, and then it includes fs/binfmt_elf.c to provide an alternate |
221 | * elf binary handler for 32 bit binaries (on the 64 bit kernel). | 221 | * elf binary handler for 32 bit binaries (on the 64 bit kernel). |
222 | */ | 222 | */ |
223 | #ifdef CONFIG_64BIT | 223 | #ifdef CONFIG_64BIT |
224 | #define ELF_CLASS ELFCLASS64 | 224 | #define ELF_CLASS ELFCLASS64 |
225 | #else | 225 | #else |
226 | #define ELF_CLASS ELFCLASS32 | 226 | #define ELF_CLASS ELFCLASS32 |
227 | #endif | 227 | #endif |
228 | 228 | ||
229 | typedef unsigned long elf_greg_t; | 229 | typedef unsigned long elf_greg_t; |
230 | 230 | ||
231 | /* This yields a string that ld.so will use to load implementation | 231 | /* |
232 | specific libraries for optimization. This is more specific in | 232 | * This yields a string that ld.so will use to load implementation |
233 | intent than poking at uname or /proc/cpuinfo. | 233 | * specific libraries for optimization. This is more specific in |
234 | 234 | * intent than poking at uname or /proc/cpuinfo. | |
235 | For the moment, we have only optimizations for the Intel generations, | 235 | */ |
236 | but that could change... */ | ||
237 | 236 | ||
238 | #define ELF_PLATFORM ("PARISC\0" /*+((boot_cpu_data.x86-3)*5) */) | 237 | #define ELF_PLATFORM ("PARISC\0") |
239 | 238 | ||
240 | #define SET_PERSONALITY(ex, ibcs2) \ | 239 | #define SET_PERSONALITY(ex, ibcs2) \ |
241 | current->personality = PER_LINUX; \ | 240 | current->personality = PER_LINUX; \ |
@@ -310,7 +309,7 @@ struct pt_regs; /* forward declaration... */ | |||
310 | #define ELF_OSABI ELFOSABI_LINUX | 309 | #define ELF_OSABI ELFOSABI_LINUX |
311 | 310 | ||
312 | /* %r23 is set by ld.so to a pointer to a function which might be | 311 | /* %r23 is set by ld.so to a pointer to a function which might be |
313 | registered using atexit. This provides a mean for the dynamic | 312 | registered using atexit. This provides a means for the dynamic |
314 | linker to call DT_FINI functions for shared libraries that have | 313 | linker to call DT_FINI functions for shared libraries that have |
315 | been loaded before the code runs. | 314 | been loaded before the code runs. |
316 | 315 | ||
@@ -339,6 +338,5 @@ struct pt_regs; /* forward declaration... */ | |||
339 | but it's not easy, and we've already done it here. */ | 338 | but it's not easy, and we've already done it here. */ |
340 | 339 | ||
341 | #define ELF_HWCAP 0 | 340 | #define ELF_HWCAP 0 |
342 | /* (boot_cpu_data.x86_capability) */ | ||
343 | 341 | ||
344 | #endif | 342 | #endif |
diff --git a/include/asm-parisc/fixmap.h b/include/asm-parisc/fixmap.h index a5caf4b122b7..de3fe3a18229 100644 --- a/include/asm-parisc/fixmap.h +++ b/include/asm-parisc/fixmap.h | |||
@@ -20,4 +20,11 @@ | |||
20 | #define KERNEL_MAP_START (GATEWAY_PAGE_SIZE) | 20 | #define KERNEL_MAP_START (GATEWAY_PAGE_SIZE) |
21 | #define KERNEL_MAP_END (TMPALIAS_MAP_START) | 21 | #define KERNEL_MAP_END (TMPALIAS_MAP_START) |
22 | 22 | ||
23 | #endif | 23 | #ifndef __ASSEMBLY__ |
24 | extern void *vmalloc_start; | ||
25 | #define PCXL_DMA_MAP_SIZE (8*1024*1024) | ||
26 | #define VMALLOC_START ((unsigned long)vmalloc_start) | ||
27 | #define VMALLOC_END (KERNEL_MAP_END) | ||
28 | #endif /*__ASSEMBLY__*/ | ||
29 | |||
30 | #endif /*_ASM_FIXMAP_H*/ | ||
diff --git a/include/asm-parisc/futex.h b/include/asm-parisc/futex.h index dbee6e60aa81..fdc6d055ef7f 100644 --- a/include/asm-parisc/futex.h +++ b/include/asm-parisc/futex.h | |||
@@ -56,6 +56,12 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
56 | int err = 0; | 56 | int err = 0; |
57 | int uval; | 57 | int uval; |
58 | 58 | ||
59 | /* futex.c wants to do a cmpxchg_inatomic on kernel NULL, which is | ||
60 | * our gateway page, and causes no end of trouble... | ||
61 | */ | ||
62 | if (segment_eq(KERNEL_DS, get_fs()) && !uaddr) | ||
63 | return -EFAULT; | ||
64 | |||
59 | if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) | 65 | if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) |
60 | return -EFAULT; | 66 | return -EFAULT; |
61 | 67 | ||
@@ -67,5 +73,5 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
67 | return uval; | 73 | return uval; |
68 | } | 74 | } |
69 | 75 | ||
70 | #endif | 76 | #endif /*__KERNEL__*/ |
71 | #endif | 77 | #endif /*_ASM_PARISC_FUTEX_H*/ |
diff --git a/include/asm-parisc/pdc.h b/include/asm-parisc/pdc.h index deda8c311373..9eaa794c3e4a 100644 --- a/include/asm-parisc/pdc.h +++ b/include/asm-parisc/pdc.h | |||
@@ -645,8 +645,7 @@ int pdc_soft_power_button(int sw_control); | |||
645 | void pdc_io_reset(void); | 645 | void pdc_io_reset(void); |
646 | void pdc_io_reset_devices(void); | 646 | void pdc_io_reset_devices(void); |
647 | int pdc_iodc_getc(void); | 647 | int pdc_iodc_getc(void); |
648 | int pdc_iodc_print(unsigned char *str, unsigned count); | 648 | int pdc_iodc_print(const unsigned char *str, unsigned count); |
649 | void pdc_printf(const char *fmt, ...); | ||
650 | 649 | ||
651 | void pdc_emergency_unlock(void); | 650 | void pdc_emergency_unlock(void); |
652 | int pdc_sti_call(unsigned long func, unsigned long flags, | 651 | int pdc_sti_call(unsigned long func, unsigned long flags, |
diff --git a/include/asm-parisc/pgalloc.h b/include/asm-parisc/pgalloc.h index 3996dfc30a3f..fc987a1c12a8 100644 --- a/include/asm-parisc/pgalloc.h +++ b/include/asm-parisc/pgalloc.h | |||
@@ -138,10 +138,10 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte) | |||
138 | free_page((unsigned long)pte); | 138 | free_page((unsigned long)pte); |
139 | } | 139 | } |
140 | 140 | ||
141 | static inline void pte_free_kernel(struct mm_struct *mm, struct page *pte) | 141 | static inline void pte_free(struct mm_struct *mm, struct page *pte) |
142 | { | 142 | { |
143 | pgtable_page_dtor(pte); | 143 | pgtable_page_dtor(pte); |
144 | pte_free_kernel(page_address((pte)); | 144 | pte_free_kernel(mm, page_address(pte)); |
145 | } | 145 | } |
146 | 146 | ||
147 | #define check_pgt_cache() do { } while (0) | 147 | #define check_pgt_cache() do { } while (0) |
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h index cd0fa4f73320..dc86adbec916 100644 --- a/include/asm-parisc/pgtable.h +++ b/include/asm-parisc/pgtable.h | |||
@@ -116,14 +116,6 @@ | |||
116 | 116 | ||
117 | #define FIRST_USER_ADDRESS 0 | 117 | #define FIRST_USER_ADDRESS 0 |
118 | 118 | ||
119 | #ifndef __ASSEMBLY__ | ||
120 | extern void *vmalloc_start; | ||
121 | #define PCXL_DMA_MAP_SIZE (8*1024*1024) | ||
122 | #define VMALLOC_START ((unsigned long)vmalloc_start) | ||
123 | /* this is a fixmap remnant, see fixmap.h */ | ||
124 | #define VMALLOC_END (KERNEL_MAP_END) | ||
125 | #endif | ||
126 | |||
127 | /* NB: The tlb miss handlers make certain assumptions about the order */ | 119 | /* NB: The tlb miss handlers make certain assumptions about the order */ |
128 | /* of the following bits, so be careful (One example, bits 25-31 */ | 120 | /* of the following bits, so be careful (One example, bits 25-31 */ |
129 | /* are moved together in one instruction). */ | 121 | /* are moved together in one instruction). */ |
diff --git a/include/asm-parisc/unistd.h b/include/asm-parisc/unistd.h index 081b4ae61866..a7d857f0e4f4 100644 --- a/include/asm-parisc/unistd.h +++ b/include/asm-parisc/unistd.h | |||
@@ -798,8 +798,11 @@ | |||
798 | #define __NR_timerfd (__NR_Linux + 303) | 798 | #define __NR_timerfd (__NR_Linux + 303) |
799 | #define __NR_eventfd (__NR_Linux + 304) | 799 | #define __NR_eventfd (__NR_Linux + 304) |
800 | #define __NR_fallocate (__NR_Linux + 305) | 800 | #define __NR_fallocate (__NR_Linux + 305) |
801 | #define __NR_timerfd_create (__NR_Linux + 306) | ||
802 | #define __NR_timerfd_settime (__NR_Linux + 307) | ||
803 | #define __NR_timerfd_gettime (__NR_Linux + 308) | ||
801 | 804 | ||
802 | #define __NR_Linux_syscalls (__NR_fallocate + 1) | 805 | #define __NR_Linux_syscalls (__NR_timerfd_gettime + 1) |
803 | 806 | ||
804 | 807 | ||
805 | #define __IGNORE_select /* newselect */ | 808 | #define __IGNORE_select /* newselect */ |
diff --git a/include/asm-sh/byteorder.h b/include/asm-sh/byteorder.h index 0eb9904b6545..4c13e6117563 100644 --- a/include/asm-sh/byteorder.h +++ b/include/asm-sh/byteorder.h | |||
@@ -11,13 +11,13 @@ | |||
11 | static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) | 11 | static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) |
12 | { | 12 | { |
13 | __asm__( | 13 | __asm__( |
14 | #ifdef CONFIG_SUPERH32 | 14 | #ifdef __SH5__ |
15 | "byterev %0, %0\n\t" | ||
16 | "shari %0, 32, %0" | ||
17 | #else | ||
15 | "swap.b %0, %0\n\t" | 18 | "swap.b %0, %0\n\t" |
16 | "swap.w %0, %0\n\t" | 19 | "swap.w %0, %0\n\t" |
17 | "swap.b %0, %0" | 20 | "swap.b %0, %0" |
18 | #else | ||
19 | "byterev %0, %0\n\t" | ||
20 | "shari %0, 32, %0" | ||
21 | #endif | 21 | #endif |
22 | : "=r" (x) | 22 | : "=r" (x) |
23 | : "0" (x)); | 23 | : "0" (x)); |
@@ -28,12 +28,11 @@ static inline __attribute_const__ __u32 ___arch__swab32(__u32 x) | |||
28 | static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) | 28 | static inline __attribute_const__ __u16 ___arch__swab16(__u16 x) |
29 | { | 29 | { |
30 | __asm__( | 30 | __asm__( |
31 | #ifdef CONFIG_SUPERH32 | 31 | #ifdef __SH5__ |
32 | "swap.b %0, %0" | ||
33 | #else | ||
34 | "byterev %0, %0\n\t" | 32 | "byterev %0, %0\n\t" |
35 | "shari %0, 32, %0" | 33 | "shari %0, 32, %0" |
36 | 34 | #else | |
35 | "swap.b %0, %0" | ||
37 | #endif | 36 | #endif |
38 | : "=r" (x) | 37 | : "=r" (x) |
39 | : "0" (x)); | 38 | : "0" (x)); |
diff --git a/include/asm-sh/posix_types.h b/include/asm-sh/posix_types.h index 4b9d11c9fc77..4eeb723aee7e 100644 --- a/include/asm-sh/posix_types.h +++ b/include/asm-sh/posix_types.h | |||
@@ -4,4 +4,10 @@ | |||
4 | # else | 4 | # else |
5 | # include "posix_types_64.h" | 5 | # include "posix_types_64.h" |
6 | # endif | 6 | # endif |
7 | #else | ||
8 | # ifdef __SH5__ | ||
9 | # include "posix_types_64.h" | ||
10 | # else | ||
11 | # include "posix_types_32.h" | ||
12 | # endif | ||
7 | #endif /* __KERNEL__ */ | 13 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-sparc64/backoff.h b/include/asm-sparc64/backoff.h index dadd6c385c6c..fa1fdf67e350 100644 --- a/include/asm-sparc64/backoff.h +++ b/include/asm-sparc64/backoff.h | |||
@@ -12,7 +12,8 @@ | |||
12 | mov reg, tmp; \ | 12 | mov reg, tmp; \ |
13 | 88: brnz,pt tmp, 88b; \ | 13 | 88: brnz,pt tmp, 88b; \ |
14 | sub tmp, 1, tmp; \ | 14 | sub tmp, 1, tmp; \ |
15 | cmp reg, BACKOFF_LIMIT; \ | 15 | set BACKOFF_LIMIT, tmp; \ |
16 | cmp reg, tmp; \ | ||
16 | bg,pn %xcc, label; \ | 17 | bg,pn %xcc, label; \ |
17 | nop; \ | 18 | nop; \ |
18 | ba,pt %xcc, label; \ | 19 | ba,pt %xcc, label; \ |
diff --git a/include/asm-x86/cmpxchg_32.h b/include/asm-x86/cmpxchg_32.h index cea1dae288a7..959fad00dff5 100644 --- a/include/asm-x86/cmpxchg_32.h +++ b/include/asm-x86/cmpxchg_32.h | |||
@@ -269,22 +269,26 @@ static inline unsigned long cmpxchg_386(volatile void *ptr, unsigned long old, | |||
269 | ({ \ | 269 | ({ \ |
270 | __typeof__(*(ptr)) __ret; \ | 270 | __typeof__(*(ptr)) __ret; \ |
271 | if (likely(boot_cpu_data.x86 > 3)) \ | 271 | if (likely(boot_cpu_data.x86 > 3)) \ |
272 | __ret = __cmpxchg((ptr), (unsigned long)(o), \ | 272 | __ret = (__typeof__(*(ptr)))__cmpxchg((ptr), \ |
273 | (unsigned long)(n), sizeof(*(ptr))); \ | 273 | (unsigned long)(o), (unsigned long)(n), \ |
274 | sizeof(*(ptr))); \ | ||
274 | else \ | 275 | else \ |
275 | __ret = cmpxchg_386((ptr), (unsigned long)(o), \ | 276 | __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \ |
276 | (unsigned long)(n), sizeof(*(ptr))); \ | 277 | (unsigned long)(o), (unsigned long)(n), \ |
278 | sizeof(*(ptr))); \ | ||
277 | __ret; \ | 279 | __ret; \ |
278 | }) | 280 | }) |
279 | #define cmpxchg_local(ptr, o, n) \ | 281 | #define cmpxchg_local(ptr, o, n) \ |
280 | ({ \ | 282 | ({ \ |
281 | __typeof__(*(ptr)) __ret; \ | 283 | __typeof__(*(ptr)) __ret; \ |
282 | if (likely(boot_cpu_data.x86 > 3)) \ | 284 | if (likely(boot_cpu_data.x86 > 3)) \ |
283 | __ret = __cmpxchg_local((ptr), (unsigned long)(o), \ | 285 | __ret = (__typeof__(*(ptr)))__cmpxchg_local((ptr), \ |
284 | (unsigned long)(n), sizeof(*(ptr))); \ | 286 | (unsigned long)(o), (unsigned long)(n), \ |
287 | sizeof(*(ptr))); \ | ||
285 | else \ | 288 | else \ |
286 | __ret = cmpxchg_386((ptr), (unsigned long)(o), \ | 289 | __ret = (__typeof__(*(ptr)))cmpxchg_386((ptr), \ |
287 | (unsigned long)(n), sizeof(*(ptr))); \ | 290 | (unsigned long)(o), (unsigned long)(n), \ |
291 | sizeof(*(ptr))); \ | ||
288 | __ret; \ | 292 | __ret; \ |
289 | }) | 293 | }) |
290 | #endif | 294 | #endif |
@@ -301,10 +305,12 @@ extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64); | |||
301 | ({ \ | 305 | ({ \ |
302 | __typeof__(*(ptr)) __ret; \ | 306 | __typeof__(*(ptr)) __ret; \ |
303 | if (likely(boot_cpu_data.x86 > 4)) \ | 307 | if (likely(boot_cpu_data.x86 > 4)) \ |
304 | __ret = __cmpxchg64((ptr), (unsigned long long)(o), \ | 308 | __ret = (__typeof__(*(ptr)))__cmpxchg64((ptr), \ |
309 | (unsigned long long)(o), \ | ||
305 | (unsigned long long)(n)); \ | 310 | (unsigned long long)(n)); \ |
306 | else \ | 311 | else \ |
307 | __ret = cmpxchg_486_u64((ptr), (unsigned long long)(o), \ | 312 | __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \ |
313 | (unsigned long long)(o), \ | ||
308 | (unsigned long long)(n)); \ | 314 | (unsigned long long)(n)); \ |
309 | __ret; \ | 315 | __ret; \ |
310 | }) | 316 | }) |
@@ -312,10 +318,12 @@ extern unsigned long long cmpxchg_486_u64(volatile void *, u64, u64); | |||
312 | ({ \ | 318 | ({ \ |
313 | __typeof__(*(ptr)) __ret; \ | 319 | __typeof__(*(ptr)) __ret; \ |
314 | if (likely(boot_cpu_data.x86 > 4)) \ | 320 | if (likely(boot_cpu_data.x86 > 4)) \ |
315 | __ret = __cmpxchg64_local((ptr), (unsigned long long)(o), \ | 321 | __ret = (__typeof__(*(ptr)))__cmpxchg64_local((ptr), \ |
322 | (unsigned long long)(o), \ | ||
316 | (unsigned long long)(n)); \ | 323 | (unsigned long long)(n)); \ |
317 | else \ | 324 | else \ |
318 | __ret = cmpxchg_486_u64((ptr), (unsigned long long)(o), \ | 325 | __ret = (__typeof__(*(ptr)))cmpxchg_486_u64((ptr), \ |
326 | (unsigned long long)(o), \ | ||
319 | (unsigned long long)(n)); \ | 327 | (unsigned long long)(n)); \ |
320 | __ret; \ | 328 | __ret; \ |
321 | }) | 329 | }) |
diff --git a/include/asm-x86/e820_32.h b/include/asm-x86/e820_32.h index f1da7ebd1905..e7207a6de3e0 100644 --- a/include/asm-x86/e820_32.h +++ b/include/asm-x86/e820_32.h | |||
@@ -28,6 +28,8 @@ extern void find_max_pfn(void); | |||
28 | extern void register_bootmem_low_pages(unsigned long max_low_pfn); | 28 | extern void register_bootmem_low_pages(unsigned long max_low_pfn); |
29 | extern void add_memory_region(unsigned long long start, | 29 | extern void add_memory_region(unsigned long long start, |
30 | unsigned long long size, int type); | 30 | unsigned long long size, int type); |
31 | extern void update_memory_range(u64 start, u64 size, unsigned old_type, | ||
32 | unsigned new_type); | ||
31 | extern void e820_register_memory(void); | 33 | extern void e820_register_memory(void); |
32 | extern void limit_regions(unsigned long long size); | 34 | extern void limit_regions(unsigned long long size); |
33 | extern void print_memory_map(char *who); | 35 | extern void print_memory_map(char *who); |
diff --git a/include/asm-x86/e820_64.h b/include/asm-x86/e820_64.h index a560c4f5d500..22ede73ae724 100644 --- a/include/asm-x86/e820_64.h +++ b/include/asm-x86/e820_64.h | |||
@@ -18,6 +18,8 @@ extern unsigned long find_e820_area(unsigned long start, unsigned long end, | |||
18 | unsigned size, unsigned long align); | 18 | unsigned size, unsigned long align); |
19 | extern void add_memory_region(unsigned long start, unsigned long size, | 19 | extern void add_memory_region(unsigned long start, unsigned long size, |
20 | int type); | 20 | int type); |
21 | extern void update_memory_range(u64 start, u64 size, unsigned old_type, | ||
22 | unsigned new_type); | ||
21 | extern void setup_memory_region(void); | 23 | extern void setup_memory_region(void); |
22 | extern void contig_e820_setup(void); | 24 | extern void contig_e820_setup(void); |
23 | extern unsigned long e820_end_of_ram(void); | 25 | extern unsigned long e820_end_of_ram(void); |
diff --git a/include/asm-x86/page.h b/include/asm-x86/page.h index 1cb7c51bc296..a05b2896492f 100644 --- a/include/asm-x86/page.h +++ b/include/asm-x86/page.h | |||
@@ -52,13 +52,13 @@ extern int page_is_ram(unsigned long pagenr); | |||
52 | 52 | ||
53 | struct page; | 53 | struct page; |
54 | 54 | ||
55 | static void inline clear_user_page(void *page, unsigned long vaddr, | 55 | static inline void clear_user_page(void *page, unsigned long vaddr, |
56 | struct page *pg) | 56 | struct page *pg) |
57 | { | 57 | { |
58 | clear_page(page); | 58 | clear_page(page); |
59 | } | 59 | } |
60 | 60 | ||
61 | static void inline copy_user_page(void *to, void *from, unsigned long vaddr, | 61 | static inline void copy_user_page(void *to, void *from, unsigned long vaddr, |
62 | struct page *topage) | 62 | struct page *topage) |
63 | { | 63 | { |
64 | copy_page(to, from); | 64 | copy_page(to, from); |
diff --git a/include/asm-x86/sync_bitops.h b/include/asm-x86/sync_bitops.h index cbce08a2d135..6b775c905666 100644 --- a/include/asm-x86/sync_bitops.h +++ b/include/asm-x86/sync_bitops.h | |||
@@ -23,10 +23,6 @@ | |||
23 | * This function is atomic and may not be reordered. See __set_bit() | 23 | * This function is atomic and may not be reordered. See __set_bit() |
24 | * if you do not require the atomic guarantees. | 24 | * if you do not require the atomic guarantees. |
25 | * | 25 | * |
26 | * Note: there are no guarantees that this function will not be reordered | ||
27 | * on non-x86 architectures, so if you are writing portable code, | ||
28 | * make sure not to rely on its reordering guarantees. | ||
29 | * | ||
30 | * Note that @nr may be almost arbitrarily large; this function is not | 26 | * Note that @nr may be almost arbitrarily large; this function is not |
31 | * restricted to acting on a single-word quantity. | 27 | * restricted to acting on a single-word quantity. |
32 | */ | 28 | */ |
@@ -61,8 +57,7 @@ static inline void sync_clear_bit(int nr, volatile unsigned long * addr) | |||
61 | * @nr: Bit to change | 57 | * @nr: Bit to change |
62 | * @addr: Address to start counting from | 58 | * @addr: Address to start counting from |
63 | * | 59 | * |
64 | * change_bit() is atomic and may not be reordered. It may be | 60 | * sync_change_bit() is atomic and may not be reordered. |
65 | * reordered on other architectures than x86. | ||
66 | * Note that @nr may be almost arbitrarily large; this function is not | 61 | * Note that @nr may be almost arbitrarily large; this function is not |
67 | * restricted to acting on a single-word quantity. | 62 | * restricted to acting on a single-word quantity. |
68 | */ | 63 | */ |
@@ -80,7 +75,6 @@ static inline void sync_change_bit(int nr, volatile unsigned long * addr) | |||
80 | * @addr: Address to count from | 75 | * @addr: Address to count from |
81 | * | 76 | * |
82 | * This operation is atomic and cannot be reordered. | 77 | * This operation is atomic and cannot be reordered. |
83 | * It may be reordered on other architectures than x86. | ||
84 | * It also implies a memory barrier. | 78 | * It also implies a memory barrier. |
85 | */ | 79 | */ |
86 | static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr) | 80 | static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr) |
@@ -99,7 +93,6 @@ static inline int sync_test_and_set_bit(int nr, volatile unsigned long * addr) | |||
99 | * @addr: Address to count from | 93 | * @addr: Address to count from |
100 | * | 94 | * |
101 | * This operation is atomic and cannot be reordered. | 95 | * This operation is atomic and cannot be reordered. |
102 | * It can be reorderdered on other architectures other than x86. | ||
103 | * It also implies a memory barrier. | 96 | * It also implies a memory barrier. |
104 | */ | 97 | */ |
105 | static inline int sync_test_and_clear_bit(int nr, volatile unsigned long * addr) | 98 | static inline int sync_test_and_clear_bit(int nr, volatile unsigned long * addr) |
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 0fac822c1157..4108b38ebb16 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -127,7 +127,6 @@ header-y += pkt_sched.h | |||
127 | header-y += posix_types.h | 127 | header-y += posix_types.h |
128 | header-y += ppdev.h | 128 | header-y += ppdev.h |
129 | header-y += prctl.h | 129 | header-y += prctl.h |
130 | header-y += ps2esdi.h | ||
131 | header-y += qnxtypes.h | 130 | header-y += qnxtypes.h |
132 | header-y += quotaio_v1.h | 131 | header-y += quotaio_v1.h |
133 | header-y += quotaio_v2.h | 132 | header-y += quotaio_v2.h |
diff --git a/include/linux/exportfs.h b/include/linux/exportfs.h index 51d214138814..adcbb05b120b 100644 --- a/include/linux/exportfs.h +++ b/include/linux/exportfs.h | |||
@@ -49,11 +49,11 @@ struct fid { | |||
49 | 49 | ||
50 | /** | 50 | /** |
51 | * struct export_operations - for nfsd to communicate with file systems | 51 | * struct export_operations - for nfsd to communicate with file systems |
52 | * @decode_fh: decode a file handle fragment and return a &struct dentry | ||
53 | * @encode_fh: encode a file handle fragment from a dentry | 52 | * @encode_fh: encode a file handle fragment from a dentry |
53 | * @fh_to_dentry: find the implied object and get a dentry for it | ||
54 | * @fh_to_parent: find the implied object's parent and get a dentry for it | ||
54 | * @get_name: find the name for a given inode in a given directory | 55 | * @get_name: find the name for a given inode in a given directory |
55 | * @get_parent: find the parent of a given directory | 56 | * @get_parent: find the parent of a given directory |
56 | * @get_dentry: find a dentry for the inode given a file handle sub-fragment | ||
57 | * | 57 | * |
58 | * See Documentation/filesystems/Exporting for details on how to use | 58 | * See Documentation/filesystems/Exporting for details on how to use |
59 | * this interface correctly. | 59 | * this interface correctly. |
diff --git a/include/linux/in.h b/include/linux/in.h index 70c6df882694..4065313cd7ee 100644 --- a/include/linux/in.h +++ b/include/linux/in.h | |||
@@ -265,7 +265,7 @@ static inline bool ipv4_is_local_multicast(__be32 addr) | |||
265 | static inline bool ipv4_is_lbcast(__be32 addr) | 265 | static inline bool ipv4_is_lbcast(__be32 addr) |
266 | { | 266 | { |
267 | /* limited broadcast */ | 267 | /* limited broadcast */ |
268 | return addr == INADDR_BROADCAST; | 268 | return addr == htonl(INADDR_BROADCAST); |
269 | } | 269 | } |
270 | 270 | ||
271 | static inline bool ipv4_is_zeronet(__be32 addr) | 271 | static inline bool ipv4_is_zeronet(__be32 addr) |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index b18fd3b9b835..423f58272188 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
@@ -348,8 +348,7 @@ static inline void jbd_unlock_bh_journal_head(struct buffer_head *bh) | |||
348 | struct jbd_revoke_table_s; | 348 | struct jbd_revoke_table_s; |
349 | 349 | ||
350 | /** | 350 | /** |
351 | * struct handle_s - The handle_s type is the concrete type associated with | 351 | * struct handle_s - this is the concrete type associated with handle_t. |
352 | * handle_t. | ||
353 | * @h_transaction: Which compound transaction is this update a part of? | 352 | * @h_transaction: Which compound transaction is this update a part of? |
354 | * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. | 353 | * @h_buffer_credits: Number of remaining buffers we are allowed to dirty. |
355 | * @h_ref: Reference count on this handle | 354 | * @h_ref: Reference count on this handle |
@@ -358,12 +357,7 @@ struct jbd_revoke_table_s; | |||
358 | * @h_jdata: flag to force data journaling | 357 | * @h_jdata: flag to force data journaling |
359 | * @h_aborted: flag indicating fatal error on handle | 358 | * @h_aborted: flag indicating fatal error on handle |
360 | * @h_lockdep_map: lockdep info for debugging lock problems | 359 | * @h_lockdep_map: lockdep info for debugging lock problems |
361 | **/ | ||
362 | |||
363 | /* Docbook can't yet cope with the bit fields, but will leave the documentation | ||
364 | * in so it can be fixed later. | ||
365 | */ | 360 | */ |
366 | |||
367 | struct handle_s | 361 | struct handle_s |
368 | { | 362 | { |
369 | /* Which compound transaction is this update a part of? */ | 363 | /* Which compound transaction is this update a part of? */ |
@@ -558,8 +552,7 @@ struct transaction_s | |||
558 | }; | 552 | }; |
559 | 553 | ||
560 | /** | 554 | /** |
561 | * struct journal_s - The journal_s type is the concrete type associated with | 555 | * struct journal_s - this is the concrete type associated with journal_t. |
562 | * journal_t. | ||
563 | * @j_flags: General journaling state flags | 556 | * @j_flags: General journaling state flags |
564 | * @j_errno: Is there an outstanding uncleared error on the journal (from a | 557 | * @j_errno: Is there an outstanding uncleared error on the journal (from a |
565 | * prior abort)? | 558 | * prior abort)? |
diff --git a/include/linux/memstick.h b/include/linux/memstick.h index b7ee25888836..3e686ec6a967 100644 --- a/include/linux/memstick.h +++ b/include/linux/memstick.h | |||
@@ -239,7 +239,6 @@ struct memstick_request { | |||
239 | unsigned char tpc; | 239 | unsigned char tpc; |
240 | unsigned char data_dir:1, | 240 | unsigned char data_dir:1, |
241 | need_card_int:1, | 241 | need_card_int:1, |
242 | get_int_reg:1, | ||
243 | long_data:1; | 242 | long_data:1; |
244 | unsigned char int_reg; | 243 | unsigned char int_reg; |
245 | int error; | 244 | int error; |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 9010f5458767..b7e4b633c69b 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -1045,6 +1045,8 @@ void __iomem *pcim_iomap(struct pci_dev *pdev, int bar, unsigned long maxlen); | |||
1045 | void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr); | 1045 | void pcim_iounmap(struct pci_dev *pdev, void __iomem *addr); |
1046 | void __iomem * const *pcim_iomap_table(struct pci_dev *pdev); | 1046 | void __iomem * const *pcim_iomap_table(struct pci_dev *pdev); |
1047 | int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name); | 1047 | int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name); |
1048 | int pcim_iomap_regions_request_all(struct pci_dev *pdev, u16 mask, | ||
1049 | const char *name); | ||
1048 | void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask); | 1050 | void pcim_iounmap_regions(struct pci_dev *pdev, u16 mask); |
1049 | 1051 | ||
1050 | extern int pci_pci_problems; | 1052 | extern int pci_pci_problems; |
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h index 28dfc61cf79e..99efbed81fa2 100644 --- a/include/linux/pkt_cls.h +++ b/include/linux/pkt_cls.h | |||
@@ -201,8 +201,8 @@ enum | |||
201 | 201 | ||
202 | struct tc_u32_key | 202 | struct tc_u32_key |
203 | { | 203 | { |
204 | __u32 mask; | 204 | __be32 mask; |
205 | __u32 val; | 205 | __be32 val; |
206 | int off; | 206 | int off; |
207 | int offmask; | 207 | int offmask; |
208 | }; | 208 | }; |
@@ -213,12 +213,12 @@ struct tc_u32_sel | |||
213 | unsigned char offshift; | 213 | unsigned char offshift; |
214 | unsigned char nkeys; | 214 | unsigned char nkeys; |
215 | 215 | ||
216 | __u16 offmask; | 216 | __be16 offmask; |
217 | __u16 off; | 217 | __u16 off; |
218 | short offoff; | 218 | short offoff; |
219 | 219 | ||
220 | short hoff; | 220 | short hoff; |
221 | __u32 hmask; | 221 | __be32 hmask; |
222 | struct tc_u32_key keys[0]; | 222 | struct tc_u32_key keys[0]; |
223 | }; | 223 | }; |
224 | 224 | ||
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index cd6332b88829..29dd55838e84 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
@@ -14,7 +14,7 @@ | |||
14 | #include <linux/mod_devicetable.h> | 14 | #include <linux/mod_devicetable.h> |
15 | 15 | ||
16 | #define PNP_MAX_PORT 40 | 16 | #define PNP_MAX_PORT 40 |
17 | #define PNP_MAX_MEM 12 | 17 | #define PNP_MAX_MEM 24 |
18 | #define PNP_MAX_IRQ 2 | 18 | #define PNP_MAX_IRQ 2 |
19 | #define PNP_MAX_DMA 2 | 19 | #define PNP_MAX_DMA 2 |
20 | #define PNP_NAME_LEN 50 | 20 | #define PNP_NAME_LEN 50 |
diff --git a/include/linux/ps2esdi.h b/include/linux/ps2esdi.h deleted file mode 100644 index c0e050b1dfe9..000000000000 --- a/include/linux/ps2esdi.h +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | #ifndef _PS2ESDI_H_ | ||
2 | #define _PS2ESDI_H_ | ||
3 | |||
4 | #define NRML_ESDI_ID 0xddff | ||
5 | #define INTG_ESDI_ID 0xdf9f | ||
6 | |||
7 | #define PRIMARY_IO_BASE 0x3510 | ||
8 | #define ALT_IO_BASE 0x3518 | ||
9 | |||
10 | #define ESDI_CMD_INT (io_base+0) | ||
11 | #define ESDI_STT_INT (io_base+0) | ||
12 | #define ESDI_CONTROL (io_base+2) | ||
13 | #define ESDI_STATUS (io_base+2) | ||
14 | #define ESDI_ATTN (io_base+3) | ||
15 | #define ESDI_INTRPT (io_base+3) | ||
16 | |||
17 | #define STATUS_ENABLED 0x01 | ||
18 | #define STATUS_ALTERNATE 0x02 | ||
19 | #define STATUS_BUSY 0x10 | ||
20 | #define STATUS_STAT_AVAIL 0x08 | ||
21 | #define STATUS_INTR 0x01 | ||
22 | #define STATUS_RESET_FAIL 0xea | ||
23 | #define STATUS_CMD_INF 0x04 | ||
24 | |||
25 | #define CTRL_SOFT_RESET 0xe4 | ||
26 | #define CTRL_HARD_RESET 0x80 | ||
27 | #define CTRL_EOI 0xe2 | ||
28 | #define CTRL_ENABLE_DMA 0x02 | ||
29 | #define CTRL_ENABLE_INTR 0x01 | ||
30 | #define CTRL_DISABLE_INTR 0x00 | ||
31 | |||
32 | #define ATT_EOI 0x02 | ||
33 | |||
34 | /* bits of word 0 of configuration status block. more info see p.38 of tech ref */ | ||
35 | #define CONFIG_IS 0x10 /* Invalid Secondary */ | ||
36 | #define CONFIG_ZD 0x08 /* Zero Defect */ | ||
37 | #define CONFIG_SF 0x04 /* Skewed Format */ | ||
38 | #define CONFIG_FR 0x02 /* Removable */ | ||
39 | #define CONFIG_RT 0x01 /* Retries */ | ||
40 | |||
41 | #define PORT_SYS_A 0x92 | ||
42 | #define PORT_DMA_FN 0x18 | ||
43 | #define PORT_DMA_EX 0x1a | ||
44 | |||
45 | #define ON (unsigned char)0x40 | ||
46 | #define OFF (unsigned char)~ON | ||
47 | #define LITE_ON outb(inb(PORT_SYS_A) | ON,PORT_SYS_A) | ||
48 | #define LITE_OFF outb((inb(PORT_SYS_A) & OFF),PORT_SYS_A) | ||
49 | |||
50 | #define FAIL 0 | ||
51 | #define SUCCES 1 | ||
52 | |||
53 | #define INT_CMD_COMPLETE 0x01 | ||
54 | #define INT_CMD_ECC 0x03 | ||
55 | #define INT_CMD_RETRY 0x05 | ||
56 | #define INT_CMD_FORMAT 0x06 | ||
57 | #define INT_CMD_ECC_RETRY 0x07 | ||
58 | #define INT_CMD_WARNING 0x08 | ||
59 | #define INT_CMD_ABORT 0x09 | ||
60 | #define INT_RESET 0x0A | ||
61 | #define INT_TRANSFER_REQ 0x0B | ||
62 | #define INT_CMD_FAILED 0x0C | ||
63 | #define INT_DMA_ERR 0x0D | ||
64 | #define INT_CMD_BLK_ERR 0x0E | ||
65 | #define INT_ATTN_ERROR 0x0F | ||
66 | |||
67 | #define DMA_MASK_CHAN 0x90 | ||
68 | #define DMA_UNMASK_CHAN 0xA0 | ||
69 | #define DMA_WRITE_ADDR 0x20 | ||
70 | #define DMA_WRITE_TC 0x40 | ||
71 | #define DMA_WRITE_MODE 0x70 | ||
72 | |||
73 | #define CMD_GET_DEV_CONFIG 0x09 | ||
74 | #define CMD_READ 0x4601 | ||
75 | #define CMD_WRITE 0x4602 | ||
76 | #define DMA_READ_16 0x4C | ||
77 | #define DMA_WRITE_16 0x44 | ||
78 | |||
79 | |||
80 | #define MB 1024*1024 | ||
81 | #define SECT_SIZE 512 | ||
82 | |||
83 | #define ERROR 1 | ||
84 | #define OK 0 | ||
85 | |||
86 | #define HDIO_GETGEO 0x0301 | ||
87 | |||
88 | #define FALSE 0 | ||
89 | #define TRUE !FALSE | ||
90 | |||
91 | struct ps2esdi_geometry { | ||
92 | unsigned char heads; | ||
93 | unsigned char sectors; | ||
94 | unsigned short cylinders; | ||
95 | unsigned long start; | ||
96 | }; | ||
97 | |||
98 | #endif /* _PS2ESDI_H_ */ | ||
diff --git a/include/linux/rcupreempt.h b/include/linux/rcupreempt.h index 01152ed532c8..d038aa6e5ee1 100644 --- a/include/linux/rcupreempt.h +++ b/include/linux/rcupreempt.h | |||
@@ -87,15 +87,15 @@ DECLARE_PER_CPU(long, dynticks_progress_counter); | |||
87 | 87 | ||
88 | static inline void rcu_enter_nohz(void) | 88 | static inline void rcu_enter_nohz(void) |
89 | { | 89 | { |
90 | smp_mb(); /* CPUs seeing ++ must see prior RCU read-side crit sects */ | ||
90 | __get_cpu_var(dynticks_progress_counter)++; | 91 | __get_cpu_var(dynticks_progress_counter)++; |
91 | WARN_ON(__get_cpu_var(dynticks_progress_counter) & 0x1); | 92 | WARN_ON(__get_cpu_var(dynticks_progress_counter) & 0x1); |
92 | mb(); | ||
93 | } | 93 | } |
94 | 94 | ||
95 | static inline void rcu_exit_nohz(void) | 95 | static inline void rcu_exit_nohz(void) |
96 | { | 96 | { |
97 | mb(); | ||
98 | __get_cpu_var(dynticks_progress_counter)++; | 97 | __get_cpu_var(dynticks_progress_counter)++; |
98 | smp_mb(); /* CPUs seeing ++ must see later RCU read-side crit sects */ | ||
99 | WARN_ON(!(__get_cpu_var(dynticks_progress_counter) & 0x1)); | 99 | WARN_ON(!(__get_cpu_var(dynticks_progress_counter) & 0x1)); |
100 | } | 100 | } |
101 | 101 | ||
diff --git a/include/linux/sched.h b/include/linux/sched.h index 11d8e9a74eff..fed07d03364e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -790,6 +790,7 @@ struct sched_domain { | |||
790 | }; | 790 | }; |
791 | 791 | ||
792 | extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new); | 792 | extern void partition_sched_domains(int ndoms_new, cpumask_t *doms_new); |
793 | extern int arch_reinit_sched_domains(void); | ||
793 | 794 | ||
794 | #endif /* CONFIG_SMP */ | 795 | #endif /* CONFIG_SMP */ |
795 | 796 | ||
@@ -929,6 +930,9 @@ struct sched_entity { | |||
929 | u64 vruntime; | 930 | u64 vruntime; |
930 | u64 prev_sum_exec_runtime; | 931 | u64 prev_sum_exec_runtime; |
931 | 932 | ||
933 | u64 last_wakeup; | ||
934 | u64 avg_overlap; | ||
935 | |||
932 | #ifdef CONFIG_SCHEDSTATS | 936 | #ifdef CONFIG_SCHEDSTATS |
933 | u64 wait_start; | 937 | u64 wait_start; |
934 | u64 wait_max; | 938 | u64 wait_max; |
diff --git a/include/linux/security.h b/include/linux/security.h index b07357ca2137..c673dfd4dffc 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
@@ -57,7 +57,6 @@ extern int cap_inode_need_killpriv(struct dentry *dentry); | |||
57 | extern int cap_inode_killpriv(struct dentry *dentry); | 57 | extern int cap_inode_killpriv(struct dentry *dentry); |
58 | extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); | 58 | extern int cap_task_post_setuid (uid_t old_ruid, uid_t old_euid, uid_t old_suid, int flags); |
59 | extern void cap_task_reparent_to_init (struct task_struct *p); | 59 | extern void cap_task_reparent_to_init (struct task_struct *p); |
60 | extern int cap_task_kill(struct task_struct *p, struct siginfo *info, int sig, u32 secid); | ||
61 | extern int cap_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp); | 60 | extern int cap_task_setscheduler (struct task_struct *p, int policy, struct sched_param *lp); |
62 | extern int cap_task_setioprio (struct task_struct *p, int ioprio); | 61 | extern int cap_task_setioprio (struct task_struct *p, int ioprio); |
63 | extern int cap_task_setnice (struct task_struct *p, int nice); | 62 | extern int cap_task_setnice (struct task_struct *p, int nice); |
@@ -2187,7 +2186,7 @@ static inline int security_task_kill (struct task_struct *p, | |||
2187 | struct siginfo *info, int sig, | 2186 | struct siginfo *info, int sig, |
2188 | u32 secid) | 2187 | u32 secid) |
2189 | { | 2188 | { |
2190 | return cap_task_kill(p, info, sig, secid); | 2189 | return 0; |
2191 | } | 2190 | } |
2192 | 2191 | ||
2193 | static inline int security_task_wait (struct task_struct *p) | 2192 | static inline int security_task_wait (struct task_struct *p) |
diff --git a/include/linux/topology.h b/include/linux/topology.h index 2352f46160d3..bd14f8b30f09 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
@@ -50,6 +50,8 @@ | |||
50 | for_each_online_node(node) \ | 50 | for_each_online_node(node) \ |
51 | if (nr_cpus_node(node)) | 51 | if (nr_cpus_node(node)) |
52 | 52 | ||
53 | void arch_update_cpu_topology(void); | ||
54 | |||
53 | /* Conform to ACPI 2.0 SLIT distance definitions */ | 55 | /* Conform to ACPI 2.0 SLIT distance definitions */ |
54 | #define LOCAL_DISTANCE 10 | 56 | #define LOCAL_DISTANCE 10 |
55 | #define REMOTE_DISTANCE 20 | 57 | #define REMOTE_DISTANCE 20 |
@@ -138,7 +140,6 @@ | |||
138 | | SD_BALANCE_FORK \ | 140 | | SD_BALANCE_FORK \ |
139 | | SD_BALANCE_EXEC \ | 141 | | SD_BALANCE_EXEC \ |
140 | | SD_WAKE_AFFINE \ | 142 | | SD_WAKE_AFFINE \ |
141 | | SD_WAKE_IDLE \ | ||
142 | | SD_SHARE_PKG_RESOURCES\ | 143 | | SD_SHARE_PKG_RESOURCES\ |
143 | | BALANCE_FOR_MC_POWER, \ | 144 | | BALANCE_FOR_MC_POWER, \ |
144 | .last_balance = jiffies, \ | 145 | .last_balance = jiffies, \ |
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 260d1fcf29a4..12c18ac1b973 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -43,8 +43,9 @@ struct virtqueue | |||
43 | * vq: the struct virtqueue we're talking about. | 43 | * vq: the struct virtqueue we're talking about. |
44 | * @enable_cb: restart callbacks after disable_cb. | 44 | * @enable_cb: restart callbacks after disable_cb. |
45 | * vq: the struct virtqueue we're talking about. | 45 | * vq: the struct virtqueue we're talking about. |
46 | * This returns "false" (and doesn't re-enable) if there are pending | 46 | * This re-enables callbacks; it returns "false" if there are pending |
47 | * buffers in the queue, to avoid a race. | 47 | * buffers in the queue, to detect a possible race between the driver |
48 | * checking for more work, and enabling callbacks. | ||
48 | * | 49 | * |
49 | * Locking rules are straightforward: the driver is responsible for | 50 | * Locking rules are straightforward: the driver is responsible for |
50 | * locking. No two operations may be invoked simultaneously. | 51 | * locking. No two operations may be invoked simultaneously. |
diff --git a/include/net/dst.h b/include/net/dst.h index e3ac7d0fc4e1..ae13370e8484 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
@@ -52,15 +52,10 @@ struct dst_entry | |||
52 | unsigned short header_len; /* more space at head required */ | 52 | unsigned short header_len; /* more space at head required */ |
53 | unsigned short trailer_len; /* space to reserve at tail */ | 53 | unsigned short trailer_len; /* space to reserve at tail */ |
54 | 54 | ||
55 | u32 metrics[RTAX_MAX]; | ||
56 | struct dst_entry *path; | ||
57 | |||
58 | unsigned long rate_last; /* rate limiting for ICMP */ | ||
59 | unsigned int rate_tokens; | 55 | unsigned int rate_tokens; |
56 | unsigned long rate_last; /* rate limiting for ICMP */ | ||
60 | 57 | ||
61 | #ifdef CONFIG_NET_CLS_ROUTE | 58 | struct dst_entry *path; |
62 | __u32 tclassid; | ||
63 | #endif | ||
64 | 59 | ||
65 | struct neighbour *neighbour; | 60 | struct neighbour *neighbour; |
66 | struct hh_cache *hh; | 61 | struct hh_cache *hh; |
@@ -70,10 +65,20 @@ struct dst_entry | |||
70 | int (*output)(struct sk_buff*); | 65 | int (*output)(struct sk_buff*); |
71 | 66 | ||
72 | struct dst_ops *ops; | 67 | struct dst_ops *ops; |
73 | 68 | ||
74 | unsigned long lastuse; | 69 | u32 metrics[RTAX_MAX]; |
70 | |||
71 | #ifdef CONFIG_NET_CLS_ROUTE | ||
72 | __u32 tclassid; | ||
73 | #endif | ||
74 | |||
75 | /* | ||
76 | * __refcnt wants to be on a different cache line from | ||
77 | * input/output/ops or performance tanks badly | ||
78 | */ | ||
75 | atomic_t __refcnt; /* client references */ | 79 | atomic_t __refcnt; /* client references */ |
76 | int __use; | 80 | int __use; |
81 | unsigned long lastuse; | ||
77 | union { | 82 | union { |
78 | struct dst_entry *next; | 83 | struct dst_entry *next; |
79 | struct rtable *rt_next; | 84 | struct rtable *rt_next; |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 57df27f19588..57ed3e323d97 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
@@ -380,15 +380,19 @@ static inline int sctp_sysctl_jiffies_ms(ctl_table *table, int __user *name, int | |||
380 | 380 | ||
381 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | 381 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) |
382 | 382 | ||
383 | int sctp_v6_init(void); | 383 | void sctp_v6_pf_init(void); |
384 | void sctp_v6_exit(void); | 384 | void sctp_v6_pf_exit(void); |
385 | int sctp_v6_protosw_init(void); | ||
386 | void sctp_v6_protosw_exit(void); | ||
385 | int sctp_v6_add_protocol(void); | 387 | int sctp_v6_add_protocol(void); |
386 | void sctp_v6_del_protocol(void); | 388 | void sctp_v6_del_protocol(void); |
387 | 389 | ||
388 | #else /* #ifdef defined(CONFIG_IPV6) */ | 390 | #else /* #ifdef defined(CONFIG_IPV6) */ |
389 | 391 | ||
390 | static inline int sctp_v6_init(void) { return 0; } | 392 | static inline void sctp_v6_pf_init(void) { return 0; } |
391 | static inline void sctp_v6_exit(void) { return; } | 393 | static inline void sctp_v6_pf_exit(void) { return; } |
394 | static inline int sctp_v6_protosw_init(void) { return 0; } | ||
395 | static inline void sctp_v6_protosw_exit(void) { return; } | ||
392 | static inline int sctp_v6_add_protocol(void) { return 0; } | 396 | static inline int sctp_v6_add_protocol(void) { return 0; } |
393 | static inline void sctp_v6_del_protocol(void) { return; } | 397 | static inline void sctp_v6_del_protocol(void) { return; } |
394 | 398 | ||
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index eea7785cc757..619c53bc3cd2 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -277,7 +277,7 @@ extern int __xfrm_state_delete(struct xfrm_state *x); | |||
277 | struct xfrm_state_afinfo { | 277 | struct xfrm_state_afinfo { |
278 | unsigned int family; | 278 | unsigned int family; |
279 | unsigned int proto; | 279 | unsigned int proto; |
280 | unsigned int eth_proto; | 280 | __be16 eth_proto; |
281 | struct module *owner; | 281 | struct module *owner; |
282 | const struct xfrm_type *type_map[IPPROTO_MAX]; | 282 | const struct xfrm_type *type_map[IPPROTO_MAX]; |
283 | struct xfrm_mode *mode_map[XFRM_MODE_MAX]; | 283 | struct xfrm_mode *mode_map[XFRM_MODE_MAX]; |
diff --git a/init/initramfs.c b/init/initramfs.c index c0b1e0533d80..d53fee8d8604 100644 --- a/init/initramfs.c +++ b/init/initramfs.c | |||
@@ -538,7 +538,7 @@ skip: | |||
538 | initrd_end = 0; | 538 | initrd_end = 0; |
539 | } | 539 | } |
540 | 540 | ||
541 | int __init populate_rootfs(void) | 541 | static int __init populate_rootfs(void) |
542 | { | 542 | { |
543 | char *err = unpack_to_rootfs(__initramfs_start, | 543 | char *err = unpack_to_rootfs(__initramfs_start, |
544 | __initramfs_end - __initramfs_start, 0); | 544 | __initramfs_end - __initramfs_start, 0); |
@@ -577,10 +577,4 @@ int __init populate_rootfs(void) | |||
577 | } | 577 | } |
578 | return 0; | 578 | return 0; |
579 | } | 579 | } |
580 | #ifndef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
581 | /* | ||
582 | * if this option is enabled, populate_rootfs() is called _earlier_ in the | ||
583 | * boot sequence. This insures that the ACPI initialisation can find the file. | ||
584 | */ | ||
585 | rootfs_initcall(populate_rootfs); | 580 | rootfs_initcall(populate_rootfs); |
586 | #endif | ||
diff --git a/init/main.c b/init/main.c index fbb0167c6b8a..99ce94930b09 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -102,12 +102,6 @@ static inline void mark_rodata_ro(void) { } | |||
102 | extern void tc_init(void); | 102 | extern void tc_init(void); |
103 | #endif | 103 | #endif |
104 | 104 | ||
105 | #ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD | ||
106 | extern int populate_rootfs(void); | ||
107 | #else | ||
108 | static inline void populate_rootfs(void) {} | ||
109 | #endif | ||
110 | |||
111 | enum system_states system_state; | 105 | enum system_states system_state; |
112 | EXPORT_SYMBOL(system_state); | 106 | EXPORT_SYMBOL(system_state); |
113 | 107 | ||
@@ -650,7 +644,6 @@ asmlinkage void __init start_kernel(void) | |||
650 | 644 | ||
651 | check_bugs(); | 645 | check_bugs(); |
652 | 646 | ||
653 | populate_rootfs(); /* For DSDT override from initramfs */ | ||
654 | acpi_early_init(); /* before LAPIC and SMP init */ | 647 | acpi_early_init(); /* before LAPIC and SMP init */ |
655 | 648 | ||
656 | /* Do the rest non-__init'ed, we're now alive */ | 649 | /* Do the rest non-__init'ed, we're now alive */ |
diff --git a/kernel/audit.c b/kernel/audit.c index 10c4930c2bbf..be55cb503633 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -78,9 +78,13 @@ static int audit_default; | |||
78 | /* If auditing cannot proceed, audit_failure selects what happens. */ | 78 | /* If auditing cannot proceed, audit_failure selects what happens. */ |
79 | static int audit_failure = AUDIT_FAIL_PRINTK; | 79 | static int audit_failure = AUDIT_FAIL_PRINTK; |
80 | 80 | ||
81 | /* If audit records are to be written to the netlink socket, audit_pid | 81 | /* |
82 | * contains the (non-zero) pid. */ | 82 | * If audit records are to be written to the netlink socket, audit_pid |
83 | * contains the pid of the auditd process and audit_nlk_pid contains | ||
84 | * the pid to use to send netlink messages to that process. | ||
85 | */ | ||
83 | int audit_pid; | 86 | int audit_pid; |
87 | static int audit_nlk_pid; | ||
84 | 88 | ||
85 | /* If audit_rate_limit is non-zero, limit the rate of sending audit records | 89 | /* If audit_rate_limit is non-zero, limit the rate of sending audit records |
86 | * to that number per second. This prevents DoS attacks, but results in | 90 | * to that number per second. This prevents DoS attacks, but results in |
@@ -350,7 +354,7 @@ static int kauditd_thread(void *dummy) | |||
350 | wake_up(&audit_backlog_wait); | 354 | wake_up(&audit_backlog_wait); |
351 | if (skb) { | 355 | if (skb) { |
352 | if (audit_pid) { | 356 | if (audit_pid) { |
353 | int err = netlink_unicast(audit_sock, skb, audit_pid, 0); | 357 | int err = netlink_unicast(audit_sock, skb, audit_nlk_pid, 0); |
354 | if (err < 0) { | 358 | if (err < 0) { |
355 | BUG_ON(err != -ECONNREFUSED); /* Shoudn't happen */ | 359 | BUG_ON(err != -ECONNREFUSED); /* Shoudn't happen */ |
356 | printk(KERN_ERR "audit: *NO* daemon at audit_pid=%d\n", audit_pid); | 360 | printk(KERN_ERR "audit: *NO* daemon at audit_pid=%d\n", audit_pid); |
@@ -626,6 +630,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
626 | sid, 1); | 630 | sid, 1); |
627 | 631 | ||
628 | audit_pid = new_pid; | 632 | audit_pid = new_pid; |
633 | audit_nlk_pid = NETLINK_CB(skb).pid; | ||
629 | } | 634 | } |
630 | if (status_get->mask & AUDIT_STATUS_RATE_LIMIT) | 635 | if (status_get->mask & AUDIT_STATUS_RATE_LIMIT) |
631 | err = audit_set_rate_limit(status_get->rate_limit, | 636 | err = audit_set_rate_limit(status_get->rate_limit, |
diff --git a/kernel/relay.c b/kernel/relay.c index d080b9d161a7..4c035a8a248c 100644 --- a/kernel/relay.c +++ b/kernel/relay.c | |||
@@ -1066,7 +1066,7 @@ static int subbuf_splice_actor(struct file *in, | |||
1066 | unsigned int flags, | 1066 | unsigned int flags, |
1067 | int *nonpad_ret) | 1067 | int *nonpad_ret) |
1068 | { | 1068 | { |
1069 | unsigned int pidx, poff, total_len, subbuf_pages, ret; | 1069 | unsigned int pidx, poff, total_len, subbuf_pages, nr_pages, ret; |
1070 | struct rchan_buf *rbuf = in->private_data; | 1070 | struct rchan_buf *rbuf = in->private_data; |
1071 | unsigned int subbuf_size = rbuf->chan->subbuf_size; | 1071 | unsigned int subbuf_size = rbuf->chan->subbuf_size; |
1072 | uint64_t pos = (uint64_t) *ppos; | 1072 | uint64_t pos = (uint64_t) *ppos; |
@@ -1097,8 +1097,9 @@ static int subbuf_splice_actor(struct file *in, | |||
1097 | subbuf_pages = rbuf->chan->alloc_size >> PAGE_SHIFT; | 1097 | subbuf_pages = rbuf->chan->alloc_size >> PAGE_SHIFT; |
1098 | pidx = (read_start / PAGE_SIZE) % subbuf_pages; | 1098 | pidx = (read_start / PAGE_SIZE) % subbuf_pages; |
1099 | poff = read_start & ~PAGE_MASK; | 1099 | poff = read_start & ~PAGE_MASK; |
1100 | nr_pages = min_t(unsigned int, subbuf_pages, PIPE_BUFFERS); | ||
1100 | 1101 | ||
1101 | for (total_len = 0; spd.nr_pages < subbuf_pages; spd.nr_pages++) { | 1102 | for (total_len = 0; spd.nr_pages < nr_pages; spd.nr_pages++) { |
1102 | unsigned int this_len, this_end, private; | 1103 | unsigned int this_len, this_end, private; |
1103 | unsigned int cur_pos = read_start + total_len; | 1104 | unsigned int cur_pos = read_start + total_len; |
1104 | 1105 | ||
diff --git a/kernel/sched.c b/kernel/sched.c index 1cb53fb1fe3d..28c73f07efb2 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -301,7 +301,7 @@ struct cfs_rq { | |||
301 | /* 'curr' points to currently running entity on this cfs_rq. | 301 | /* 'curr' points to currently running entity on this cfs_rq. |
302 | * It is set to NULL otherwise (i.e when none are currently running). | 302 | * It is set to NULL otherwise (i.e when none are currently running). |
303 | */ | 303 | */ |
304 | struct sched_entity *curr; | 304 | struct sched_entity *curr, *next; |
305 | 305 | ||
306 | unsigned long nr_spread_over; | 306 | unsigned long nr_spread_over; |
307 | 307 | ||
@@ -594,18 +594,14 @@ enum { | |||
594 | SCHED_FEAT_NEW_FAIR_SLEEPERS = 1, | 594 | SCHED_FEAT_NEW_FAIR_SLEEPERS = 1, |
595 | SCHED_FEAT_WAKEUP_PREEMPT = 2, | 595 | SCHED_FEAT_WAKEUP_PREEMPT = 2, |
596 | SCHED_FEAT_START_DEBIT = 4, | 596 | SCHED_FEAT_START_DEBIT = 4, |
597 | SCHED_FEAT_TREE_AVG = 8, | 597 | SCHED_FEAT_HRTICK = 8, |
598 | SCHED_FEAT_APPROX_AVG = 16, | 598 | SCHED_FEAT_DOUBLE_TICK = 16, |
599 | SCHED_FEAT_HRTICK = 32, | ||
600 | SCHED_FEAT_DOUBLE_TICK = 64, | ||
601 | }; | 599 | }; |
602 | 600 | ||
603 | const_debug unsigned int sysctl_sched_features = | 601 | const_debug unsigned int sysctl_sched_features = |
604 | SCHED_FEAT_NEW_FAIR_SLEEPERS * 1 | | 602 | SCHED_FEAT_NEW_FAIR_SLEEPERS * 1 | |
605 | SCHED_FEAT_WAKEUP_PREEMPT * 1 | | 603 | SCHED_FEAT_WAKEUP_PREEMPT * 1 | |
606 | SCHED_FEAT_START_DEBIT * 1 | | 604 | SCHED_FEAT_START_DEBIT * 1 | |
607 | SCHED_FEAT_TREE_AVG * 0 | | ||
608 | SCHED_FEAT_APPROX_AVG * 0 | | ||
609 | SCHED_FEAT_HRTICK * 1 | | 605 | SCHED_FEAT_HRTICK * 1 | |
610 | SCHED_FEAT_DOUBLE_TICK * 0; | 606 | SCHED_FEAT_DOUBLE_TICK * 0; |
611 | 607 | ||
@@ -1084,7 +1080,7 @@ calc_delta_mine(unsigned long delta_exec, unsigned long weight, | |||
1084 | u64 tmp; | 1080 | u64 tmp; |
1085 | 1081 | ||
1086 | if (unlikely(!lw->inv_weight)) | 1082 | if (unlikely(!lw->inv_weight)) |
1087 | lw->inv_weight = (WMULT_CONST - lw->weight/2) / lw->weight + 1; | 1083 | lw->inv_weight = (WMULT_CONST-lw->weight/2) / (lw->weight+1); |
1088 | 1084 | ||
1089 | tmp = (u64)delta_exec * weight; | 1085 | tmp = (u64)delta_exec * weight; |
1090 | /* | 1086 | /* |
@@ -1108,11 +1104,13 @@ calc_delta_fair(unsigned long delta_exec, struct load_weight *lw) | |||
1108 | static inline void update_load_add(struct load_weight *lw, unsigned long inc) | 1104 | static inline void update_load_add(struct load_weight *lw, unsigned long inc) |
1109 | { | 1105 | { |
1110 | lw->weight += inc; | 1106 | lw->weight += inc; |
1107 | lw->inv_weight = 0; | ||
1111 | } | 1108 | } |
1112 | 1109 | ||
1113 | static inline void update_load_sub(struct load_weight *lw, unsigned long dec) | 1110 | static inline void update_load_sub(struct load_weight *lw, unsigned long dec) |
1114 | { | 1111 | { |
1115 | lw->weight -= dec; | 1112 | lw->weight -= dec; |
1113 | lw->inv_weight = 0; | ||
1116 | } | 1114 | } |
1117 | 1115 | ||
1118 | /* | 1116 | /* |
@@ -1394,6 +1392,12 @@ task_hot(struct task_struct *p, u64 now, struct sched_domain *sd) | |||
1394 | { | 1392 | { |
1395 | s64 delta; | 1393 | s64 delta; |
1396 | 1394 | ||
1395 | /* | ||
1396 | * Buddy candidates are cache hot: | ||
1397 | */ | ||
1398 | if (&p->se == cfs_rq_of(&p->se)->next) | ||
1399 | return 1; | ||
1400 | |||
1397 | if (p->sched_class != &fair_sched_class) | 1401 | if (p->sched_class != &fair_sched_class) |
1398 | return 0; | 1402 | return 0; |
1399 | 1403 | ||
@@ -1853,10 +1857,11 @@ out_activate: | |||
1853 | schedstat_inc(p, se.nr_wakeups_remote); | 1857 | schedstat_inc(p, se.nr_wakeups_remote); |
1854 | update_rq_clock(rq); | 1858 | update_rq_clock(rq); |
1855 | activate_task(rq, p, 1); | 1859 | activate_task(rq, p, 1); |
1856 | check_preempt_curr(rq, p); | ||
1857 | success = 1; | 1860 | success = 1; |
1858 | 1861 | ||
1859 | out_running: | 1862 | out_running: |
1863 | check_preempt_curr(rq, p); | ||
1864 | |||
1860 | p->state = TASK_RUNNING; | 1865 | p->state = TASK_RUNNING; |
1861 | #ifdef CONFIG_SMP | 1866 | #ifdef CONFIG_SMP |
1862 | if (p->sched_class->task_wake_up) | 1867 | if (p->sched_class->task_wake_up) |
@@ -1890,6 +1895,8 @@ static void __sched_fork(struct task_struct *p) | |||
1890 | p->se.exec_start = 0; | 1895 | p->se.exec_start = 0; |
1891 | p->se.sum_exec_runtime = 0; | 1896 | p->se.sum_exec_runtime = 0; |
1892 | p->se.prev_sum_exec_runtime = 0; | 1897 | p->se.prev_sum_exec_runtime = 0; |
1898 | p->se.last_wakeup = 0; | ||
1899 | p->se.avg_overlap = 0; | ||
1893 | 1900 | ||
1894 | #ifdef CONFIG_SCHEDSTATS | 1901 | #ifdef CONFIG_SCHEDSTATS |
1895 | p->se.wait_start = 0; | 1902 | p->se.wait_start = 0; |
@@ -3875,7 +3882,7 @@ need_resched_nonpreemptible: | |||
3875 | 3882 | ||
3876 | if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { | 3883 | if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) { |
3877 | if (unlikely((prev->state & TASK_INTERRUPTIBLE) && | 3884 | if (unlikely((prev->state & TASK_INTERRUPTIBLE) && |
3878 | unlikely(signal_pending(prev)))) { | 3885 | signal_pending(prev))) { |
3879 | prev->state = TASK_RUNNING; | 3886 | prev->state = TASK_RUNNING; |
3880 | } else { | 3887 | } else { |
3881 | deactivate_task(rq, prev, 1); | 3888 | deactivate_task(rq, prev, 1); |
@@ -4268,11 +4275,10 @@ void rt_mutex_setprio(struct task_struct *p, int prio) | |||
4268 | oldprio = p->prio; | 4275 | oldprio = p->prio; |
4269 | on_rq = p->se.on_rq; | 4276 | on_rq = p->se.on_rq; |
4270 | running = task_current(rq, p); | 4277 | running = task_current(rq, p); |
4271 | if (on_rq) { | 4278 | if (on_rq) |
4272 | dequeue_task(rq, p, 0); | 4279 | dequeue_task(rq, p, 0); |
4273 | if (running) | 4280 | if (running) |
4274 | p->sched_class->put_prev_task(rq, p); | 4281 | p->sched_class->put_prev_task(rq, p); |
4275 | } | ||
4276 | 4282 | ||
4277 | if (rt_prio(prio)) | 4283 | if (rt_prio(prio)) |
4278 | p->sched_class = &rt_sched_class; | 4284 | p->sched_class = &rt_sched_class; |
@@ -4281,10 +4287,9 @@ void rt_mutex_setprio(struct task_struct *p, int prio) | |||
4281 | 4287 | ||
4282 | p->prio = prio; | 4288 | p->prio = prio; |
4283 | 4289 | ||
4290 | if (running) | ||
4291 | p->sched_class->set_curr_task(rq); | ||
4284 | if (on_rq) { | 4292 | if (on_rq) { |
4285 | if (running) | ||
4286 | p->sched_class->set_curr_task(rq); | ||
4287 | |||
4288 | enqueue_task(rq, p, 0); | 4293 | enqueue_task(rq, p, 0); |
4289 | 4294 | ||
4290 | check_class_changed(rq, p, prev_class, oldprio, running); | 4295 | check_class_changed(rq, p, prev_class, oldprio, running); |
@@ -4581,19 +4586,17 @@ recheck: | |||
4581 | update_rq_clock(rq); | 4586 | update_rq_clock(rq); |
4582 | on_rq = p->se.on_rq; | 4587 | on_rq = p->se.on_rq; |
4583 | running = task_current(rq, p); | 4588 | running = task_current(rq, p); |
4584 | if (on_rq) { | 4589 | if (on_rq) |
4585 | deactivate_task(rq, p, 0); | 4590 | deactivate_task(rq, p, 0); |
4586 | if (running) | 4591 | if (running) |
4587 | p->sched_class->put_prev_task(rq, p); | 4592 | p->sched_class->put_prev_task(rq, p); |
4588 | } | ||
4589 | 4593 | ||
4590 | oldprio = p->prio; | 4594 | oldprio = p->prio; |
4591 | __setscheduler(rq, p, policy, param->sched_priority); | 4595 | __setscheduler(rq, p, policy, param->sched_priority); |
4592 | 4596 | ||
4597 | if (running) | ||
4598 | p->sched_class->set_curr_task(rq); | ||
4593 | if (on_rq) { | 4599 | if (on_rq) { |
4594 | if (running) | ||
4595 | p->sched_class->set_curr_task(rq); | ||
4596 | |||
4597 | activate_task(rq, p, 0); | 4600 | activate_task(rq, p, 0); |
4598 | 4601 | ||
4599 | check_class_changed(rq, p, prev_class, oldprio, running); | 4602 | check_class_changed(rq, p, prev_class, oldprio, running); |
@@ -6804,6 +6807,10 @@ static int ndoms_cur; /* number of sched domains in 'doms_cur' */ | |||
6804 | */ | 6807 | */ |
6805 | static cpumask_t fallback_doms; | 6808 | static cpumask_t fallback_doms; |
6806 | 6809 | ||
6810 | void __attribute__((weak)) arch_update_cpu_topology(void) | ||
6811 | { | ||
6812 | } | ||
6813 | |||
6807 | /* | 6814 | /* |
6808 | * Set up scheduler domains and groups. Callers must hold the hotplug lock. | 6815 | * Set up scheduler domains and groups. Callers must hold the hotplug lock. |
6809 | * For now this just excludes isolated cpus, but could be used to | 6816 | * For now this just excludes isolated cpus, but could be used to |
@@ -6813,6 +6820,7 @@ static int arch_init_sched_domains(const cpumask_t *cpu_map) | |||
6813 | { | 6820 | { |
6814 | int err; | 6821 | int err; |
6815 | 6822 | ||
6823 | arch_update_cpu_topology(); | ||
6816 | ndoms_cur = 1; | 6824 | ndoms_cur = 1; |
6817 | doms_cur = kmalloc(sizeof(cpumask_t), GFP_KERNEL); | 6825 | doms_cur = kmalloc(sizeof(cpumask_t), GFP_KERNEL); |
6818 | if (!doms_cur) | 6826 | if (!doms_cur) |
@@ -6917,7 +6925,7 @@ match2: | |||
6917 | } | 6925 | } |
6918 | 6926 | ||
6919 | #if defined(CONFIG_SCHED_MC) || defined(CONFIG_SCHED_SMT) | 6927 | #if defined(CONFIG_SCHED_MC) || defined(CONFIG_SCHED_SMT) |
6920 | static int arch_reinit_sched_domains(void) | 6928 | int arch_reinit_sched_domains(void) |
6921 | { | 6929 | { |
6922 | int err; | 6930 | int err; |
6923 | 6931 | ||
@@ -7618,11 +7626,10 @@ void sched_move_task(struct task_struct *tsk) | |||
7618 | running = task_current(rq, tsk); | 7626 | running = task_current(rq, tsk); |
7619 | on_rq = tsk->se.on_rq; | 7627 | on_rq = tsk->se.on_rq; |
7620 | 7628 | ||
7621 | if (on_rq) { | 7629 | if (on_rq) |
7622 | dequeue_task(rq, tsk, 0); | 7630 | dequeue_task(rq, tsk, 0); |
7623 | if (unlikely(running)) | 7631 | if (unlikely(running)) |
7624 | tsk->sched_class->put_prev_task(rq, tsk); | 7632 | tsk->sched_class->put_prev_task(rq, tsk); |
7625 | } | ||
7626 | 7633 | ||
7627 | set_task_rq(tsk, task_cpu(tsk)); | 7634 | set_task_rq(tsk, task_cpu(tsk)); |
7628 | 7635 | ||
@@ -7631,11 +7638,10 @@ void sched_move_task(struct task_struct *tsk) | |||
7631 | tsk->sched_class->moved_group(tsk); | 7638 | tsk->sched_class->moved_group(tsk); |
7632 | #endif | 7639 | #endif |
7633 | 7640 | ||
7634 | if (on_rq) { | 7641 | if (unlikely(running)) |
7635 | if (unlikely(running)) | 7642 | tsk->sched_class->set_curr_task(rq); |
7636 | tsk->sched_class->set_curr_task(rq); | 7643 | if (on_rq) |
7637 | enqueue_task(rq, tsk, 0); | 7644 | enqueue_task(rq, tsk, 0); |
7638 | } | ||
7639 | 7645 | ||
7640 | task_rq_unlock(rq, &flags); | 7646 | task_rq_unlock(rq, &flags); |
7641 | } | 7647 | } |
diff --git a/kernel/sched_debug.c b/kernel/sched_debug.c index 4b5e24cf2f4a..ef358ba07683 100644 --- a/kernel/sched_debug.c +++ b/kernel/sched_debug.c | |||
@@ -288,6 +288,7 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m) | |||
288 | PN(se.exec_start); | 288 | PN(se.exec_start); |
289 | PN(se.vruntime); | 289 | PN(se.vruntime); |
290 | PN(se.sum_exec_runtime); | 290 | PN(se.sum_exec_runtime); |
291 | PN(se.avg_overlap); | ||
291 | 292 | ||
292 | nr_switches = p->nvcsw + p->nivcsw; | 293 | nr_switches = p->nvcsw + p->nivcsw; |
293 | 294 | ||
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c index e2a530515619..86a93376282c 100644 --- a/kernel/sched_fair.c +++ b/kernel/sched_fair.c | |||
@@ -73,13 +73,13 @@ unsigned int sysctl_sched_batch_wakeup_granularity = 10000000UL; | |||
73 | 73 | ||
74 | /* | 74 | /* |
75 | * SCHED_OTHER wake-up granularity. | 75 | * SCHED_OTHER wake-up granularity. |
76 | * (default: 10 msec * (1 + ilog(ncpus)), units: nanoseconds) | 76 | * (default: 5 msec * (1 + ilog(ncpus)), units: nanoseconds) |
77 | * | 77 | * |
78 | * This option delays the preemption effects of decoupled workloads | 78 | * This option delays the preemption effects of decoupled workloads |
79 | * and reduces their over-scheduling. Synchronous workloads will still | 79 | * and reduces their over-scheduling. Synchronous workloads will still |
80 | * have immediate wakeup/sleep latencies. | 80 | * have immediate wakeup/sleep latencies. |
81 | */ | 81 | */ |
82 | unsigned int sysctl_sched_wakeup_granularity = 10000000UL; | 82 | unsigned int sysctl_sched_wakeup_granularity = 5000000UL; |
83 | 83 | ||
84 | const_debug unsigned int sysctl_sched_migration_cost = 500000UL; | 84 | const_debug unsigned int sysctl_sched_migration_cost = 500000UL; |
85 | 85 | ||
@@ -175,8 +175,15 @@ static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) | |||
175 | * Maintain a cache of leftmost tree entries (it is frequently | 175 | * Maintain a cache of leftmost tree entries (it is frequently |
176 | * used): | 176 | * used): |
177 | */ | 177 | */ |
178 | if (leftmost) | 178 | if (leftmost) { |
179 | cfs_rq->rb_leftmost = &se->run_node; | 179 | cfs_rq->rb_leftmost = &se->run_node; |
180 | /* | ||
181 | * maintain cfs_rq->min_vruntime to be a monotonic increasing | ||
182 | * value tracking the leftmost vruntime in the tree. | ||
183 | */ | ||
184 | cfs_rq->min_vruntime = | ||
185 | max_vruntime(cfs_rq->min_vruntime, se->vruntime); | ||
186 | } | ||
180 | 187 | ||
181 | rb_link_node(&se->run_node, parent, link); | 188 | rb_link_node(&se->run_node, parent, link); |
182 | rb_insert_color(&se->run_node, &cfs_rq->tasks_timeline); | 189 | rb_insert_color(&se->run_node, &cfs_rq->tasks_timeline); |
@@ -184,8 +191,24 @@ static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) | |||
184 | 191 | ||
185 | static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) | 192 | static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) |
186 | { | 193 | { |
187 | if (cfs_rq->rb_leftmost == &se->run_node) | 194 | if (cfs_rq->rb_leftmost == &se->run_node) { |
188 | cfs_rq->rb_leftmost = rb_next(&se->run_node); | 195 | struct rb_node *next_node; |
196 | struct sched_entity *next; | ||
197 | |||
198 | next_node = rb_next(&se->run_node); | ||
199 | cfs_rq->rb_leftmost = next_node; | ||
200 | |||
201 | if (next_node) { | ||
202 | next = rb_entry(next_node, | ||
203 | struct sched_entity, run_node); | ||
204 | cfs_rq->min_vruntime = | ||
205 | max_vruntime(cfs_rq->min_vruntime, | ||
206 | next->vruntime); | ||
207 | } | ||
208 | } | ||
209 | |||
210 | if (cfs_rq->next == se) | ||
211 | cfs_rq->next = NULL; | ||
189 | 212 | ||
190 | rb_erase(&se->run_node, &cfs_rq->tasks_timeline); | 213 | rb_erase(&se->run_node, &cfs_rq->tasks_timeline); |
191 | } | 214 | } |
@@ -260,12 +283,8 @@ static u64 __sched_period(unsigned long nr_running) | |||
260 | */ | 283 | */ |
261 | static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) | 284 | static u64 sched_slice(struct cfs_rq *cfs_rq, struct sched_entity *se) |
262 | { | 285 | { |
263 | u64 slice = __sched_period(cfs_rq->nr_running); | 286 | return calc_delta_mine(__sched_period(cfs_rq->nr_running), |
264 | 287 | se->load.weight, &cfs_rq->load); | |
265 | slice *= se->load.weight; | ||
266 | do_div(slice, cfs_rq->load.weight); | ||
267 | |||
268 | return slice; | ||
269 | } | 288 | } |
270 | 289 | ||
271 | /* | 290 | /* |
@@ -283,11 +302,6 @@ static u64 __sched_vslice(unsigned long rq_weight, unsigned long nr_running) | |||
283 | return vslice; | 302 | return vslice; |
284 | } | 303 | } |
285 | 304 | ||
286 | static u64 sched_vslice(struct cfs_rq *cfs_rq) | ||
287 | { | ||
288 | return __sched_vslice(cfs_rq->load.weight, cfs_rq->nr_running); | ||
289 | } | ||
290 | |||
291 | static u64 sched_vslice_add(struct cfs_rq *cfs_rq, struct sched_entity *se) | 305 | static u64 sched_vslice_add(struct cfs_rq *cfs_rq, struct sched_entity *se) |
292 | { | 306 | { |
293 | return __sched_vslice(cfs_rq->load.weight + se->load.weight, | 307 | return __sched_vslice(cfs_rq->load.weight + se->load.weight, |
@@ -303,7 +317,6 @@ __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr, | |||
303 | unsigned long delta_exec) | 317 | unsigned long delta_exec) |
304 | { | 318 | { |
305 | unsigned long delta_exec_weighted; | 319 | unsigned long delta_exec_weighted; |
306 | u64 vruntime; | ||
307 | 320 | ||
308 | schedstat_set(curr->exec_max, max((u64)delta_exec, curr->exec_max)); | 321 | schedstat_set(curr->exec_max, max((u64)delta_exec, curr->exec_max)); |
309 | 322 | ||
@@ -315,19 +328,6 @@ __update_curr(struct cfs_rq *cfs_rq, struct sched_entity *curr, | |||
315 | &curr->load); | 328 | &curr->load); |
316 | } | 329 | } |
317 | curr->vruntime += delta_exec_weighted; | 330 | curr->vruntime += delta_exec_weighted; |
318 | |||
319 | /* | ||
320 | * maintain cfs_rq->min_vruntime to be a monotonic increasing | ||
321 | * value tracking the leftmost vruntime in the tree. | ||
322 | */ | ||
323 | if (first_fair(cfs_rq)) { | ||
324 | vruntime = min_vruntime(curr->vruntime, | ||
325 | __pick_next_entity(cfs_rq)->vruntime); | ||
326 | } else | ||
327 | vruntime = curr->vruntime; | ||
328 | |||
329 | cfs_rq->min_vruntime = | ||
330 | max_vruntime(cfs_rq->min_vruntime, vruntime); | ||
331 | } | 331 | } |
332 | 332 | ||
333 | static void update_curr(struct cfs_rq *cfs_rq) | 333 | static void update_curr(struct cfs_rq *cfs_rq) |
@@ -493,16 +493,11 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
493 | { | 493 | { |
494 | u64 vruntime; | 494 | u64 vruntime; |
495 | 495 | ||
496 | vruntime = cfs_rq->min_vruntime; | 496 | if (first_fair(cfs_rq)) { |
497 | 497 | vruntime = min_vruntime(cfs_rq->min_vruntime, | |
498 | if (sched_feat(TREE_AVG)) { | 498 | __pick_next_entity(cfs_rq)->vruntime); |
499 | struct sched_entity *last = __pick_last_entity(cfs_rq); | 499 | } else |
500 | if (last) { | 500 | vruntime = cfs_rq->min_vruntime; |
501 | vruntime += last->vruntime; | ||
502 | vruntime >>= 1; | ||
503 | } | ||
504 | } else if (sched_feat(APPROX_AVG) && cfs_rq->nr_running) | ||
505 | vruntime += sched_vslice(cfs_rq)/2; | ||
506 | 501 | ||
507 | /* | 502 | /* |
508 | * The 'current' period is already promised to the current tasks, | 503 | * The 'current' period is already promised to the current tasks, |
@@ -515,8 +510,10 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int initial) | |||
515 | 510 | ||
516 | if (!initial) { | 511 | if (!initial) { |
517 | /* sleeps upto a single latency don't count. */ | 512 | /* sleeps upto a single latency don't count. */ |
518 | if (sched_feat(NEW_FAIR_SLEEPERS)) | 513 | if (sched_feat(NEW_FAIR_SLEEPERS)) { |
519 | vruntime -= sysctl_sched_latency; | 514 | vruntime -= calc_delta_fair(sysctl_sched_latency, |
515 | &cfs_rq->load); | ||
516 | } | ||
520 | 517 | ||
521 | /* ensure we never gain time by being placed backwards. */ | 518 | /* ensure we never gain time by being placed backwards. */ |
522 | vruntime = max_vruntime(se->vruntime, vruntime); | 519 | vruntime = max_vruntime(se->vruntime, vruntime); |
@@ -545,6 +542,21 @@ enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int wakeup) | |||
545 | account_entity_enqueue(cfs_rq, se); | 542 | account_entity_enqueue(cfs_rq, se); |
546 | } | 543 | } |
547 | 544 | ||
545 | static void update_avg(u64 *avg, u64 sample) | ||
546 | { | ||
547 | s64 diff = sample - *avg; | ||
548 | *avg += diff >> 3; | ||
549 | } | ||
550 | |||
551 | static void update_avg_stats(struct cfs_rq *cfs_rq, struct sched_entity *se) | ||
552 | { | ||
553 | if (!se->last_wakeup) | ||
554 | return; | ||
555 | |||
556 | update_avg(&se->avg_overlap, se->sum_exec_runtime - se->last_wakeup); | ||
557 | se->last_wakeup = 0; | ||
558 | } | ||
559 | |||
548 | static void | 560 | static void |
549 | dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int sleep) | 561 | dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int sleep) |
550 | { | 562 | { |
@@ -555,6 +567,7 @@ dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int sleep) | |||
555 | 567 | ||
556 | update_stats_dequeue(cfs_rq, se); | 568 | update_stats_dequeue(cfs_rq, se); |
557 | if (sleep) { | 569 | if (sleep) { |
570 | update_avg_stats(cfs_rq, se); | ||
558 | #ifdef CONFIG_SCHEDSTATS | 571 | #ifdef CONFIG_SCHEDSTATS |
559 | if (entity_is_task(se)) { | 572 | if (entity_is_task(se)) { |
560 | struct task_struct *tsk = task_of(se); | 573 | struct task_struct *tsk = task_of(se); |
@@ -616,12 +629,32 @@ set_next_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) | |||
616 | se->prev_sum_exec_runtime = se->sum_exec_runtime; | 629 | se->prev_sum_exec_runtime = se->sum_exec_runtime; |
617 | } | 630 | } |
618 | 631 | ||
632 | static struct sched_entity * | ||
633 | pick_next(struct cfs_rq *cfs_rq, struct sched_entity *se) | ||
634 | { | ||
635 | s64 diff, gran; | ||
636 | |||
637 | if (!cfs_rq->next) | ||
638 | return se; | ||
639 | |||
640 | diff = cfs_rq->next->vruntime - se->vruntime; | ||
641 | if (diff < 0) | ||
642 | return se; | ||
643 | |||
644 | gran = calc_delta_fair(sysctl_sched_wakeup_granularity, &cfs_rq->load); | ||
645 | if (diff > gran) | ||
646 | return se; | ||
647 | |||
648 | return cfs_rq->next; | ||
649 | } | ||
650 | |||
619 | static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq) | 651 | static struct sched_entity *pick_next_entity(struct cfs_rq *cfs_rq) |
620 | { | 652 | { |
621 | struct sched_entity *se = NULL; | 653 | struct sched_entity *se = NULL; |
622 | 654 | ||
623 | if (first_fair(cfs_rq)) { | 655 | if (first_fair(cfs_rq)) { |
624 | se = __pick_next_entity(cfs_rq); | 656 | se = __pick_next_entity(cfs_rq); |
657 | se = pick_next(cfs_rq, se); | ||
625 | set_next_entity(cfs_rq, se); | 658 | set_next_entity(cfs_rq, se); |
626 | } | 659 | } |
627 | 660 | ||
@@ -949,96 +982,121 @@ static inline int wake_idle(int cpu, struct task_struct *p) | |||
949 | #endif | 982 | #endif |
950 | 983 | ||
951 | #ifdef CONFIG_SMP | 984 | #ifdef CONFIG_SMP |
952 | static int select_task_rq_fair(struct task_struct *p, int sync) | 985 | |
986 | static const struct sched_class fair_sched_class; | ||
987 | |||
988 | static int | ||
989 | wake_affine(struct rq *rq, struct sched_domain *this_sd, struct rq *this_rq, | ||
990 | struct task_struct *p, int prev_cpu, int this_cpu, int sync, | ||
991 | int idx, unsigned long load, unsigned long this_load, | ||
992 | unsigned int imbalance) | ||
953 | { | 993 | { |
954 | int cpu, this_cpu; | 994 | struct task_struct *curr = this_rq->curr; |
955 | struct rq *rq; | 995 | unsigned long tl = this_load; |
956 | struct sched_domain *sd, *this_sd = NULL; | 996 | unsigned long tl_per_task; |
957 | int new_cpu; | 997 | |
998 | if (!(this_sd->flags & SD_WAKE_AFFINE)) | ||
999 | return 0; | ||
1000 | |||
1001 | /* | ||
1002 | * If the currently running task will sleep within | ||
1003 | * a reasonable amount of time then attract this newly | ||
1004 | * woken task: | ||
1005 | */ | ||
1006 | if (sync && curr->sched_class == &fair_sched_class) { | ||
1007 | if (curr->se.avg_overlap < sysctl_sched_migration_cost && | ||
1008 | p->se.avg_overlap < sysctl_sched_migration_cost) | ||
1009 | return 1; | ||
1010 | } | ||
1011 | |||
1012 | schedstat_inc(p, se.nr_wakeups_affine_attempts); | ||
1013 | tl_per_task = cpu_avg_load_per_task(this_cpu); | ||
958 | 1014 | ||
959 | cpu = task_cpu(p); | 1015 | /* |
960 | rq = task_rq(p); | 1016 | * If sync wakeup then subtract the (maximum possible) |
961 | this_cpu = smp_processor_id(); | 1017 | * effect of the currently running task from the load |
962 | new_cpu = cpu; | 1018 | * of the current CPU: |
1019 | */ | ||
1020 | if (sync) | ||
1021 | tl -= current->se.load.weight; | ||
1022 | |||
1023 | if ((tl <= load && tl + target_load(prev_cpu, idx) <= tl_per_task) || | ||
1024 | 100*(tl + p->se.load.weight) <= imbalance*load) { | ||
1025 | /* | ||
1026 | * This domain has SD_WAKE_AFFINE and | ||
1027 | * p is cache cold in this domain, and | ||
1028 | * there is no bad imbalance. | ||
1029 | */ | ||
1030 | schedstat_inc(this_sd, ttwu_move_affine); | ||
1031 | schedstat_inc(p, se.nr_wakeups_affine); | ||
1032 | |||
1033 | return 1; | ||
1034 | } | ||
1035 | return 0; | ||
1036 | } | ||
963 | 1037 | ||
964 | if (cpu == this_cpu) | 1038 | static int select_task_rq_fair(struct task_struct *p, int sync) |
965 | goto out_set_cpu; | 1039 | { |
1040 | struct sched_domain *sd, *this_sd = NULL; | ||
1041 | int prev_cpu, this_cpu, new_cpu; | ||
1042 | unsigned long load, this_load; | ||
1043 | struct rq *rq, *this_rq; | ||
1044 | unsigned int imbalance; | ||
1045 | int idx; | ||
1046 | |||
1047 | prev_cpu = task_cpu(p); | ||
1048 | rq = task_rq(p); | ||
1049 | this_cpu = smp_processor_id(); | ||
1050 | this_rq = cpu_rq(this_cpu); | ||
1051 | new_cpu = prev_cpu; | ||
966 | 1052 | ||
1053 | /* | ||
1054 | * 'this_sd' is the first domain that both | ||
1055 | * this_cpu and prev_cpu are present in: | ||
1056 | */ | ||
967 | for_each_domain(this_cpu, sd) { | 1057 | for_each_domain(this_cpu, sd) { |
968 | if (cpu_isset(cpu, sd->span)) { | 1058 | if (cpu_isset(prev_cpu, sd->span)) { |
969 | this_sd = sd; | 1059 | this_sd = sd; |
970 | break; | 1060 | break; |
971 | } | 1061 | } |
972 | } | 1062 | } |
973 | 1063 | ||
974 | if (unlikely(!cpu_isset(this_cpu, p->cpus_allowed))) | 1064 | if (unlikely(!cpu_isset(this_cpu, p->cpus_allowed))) |
975 | goto out_set_cpu; | 1065 | goto out; |
976 | 1066 | ||
977 | /* | 1067 | /* |
978 | * Check for affine wakeup and passive balancing possibilities. | 1068 | * Check for affine wakeup and passive balancing possibilities. |
979 | */ | 1069 | */ |
980 | if (this_sd) { | 1070 | if (!this_sd) |
981 | int idx = this_sd->wake_idx; | 1071 | goto out; |
982 | unsigned int imbalance; | ||
983 | unsigned long load, this_load; | ||
984 | |||
985 | imbalance = 100 + (this_sd->imbalance_pct - 100) / 2; | ||
986 | |||
987 | load = source_load(cpu, idx); | ||
988 | this_load = target_load(this_cpu, idx); | ||
989 | |||
990 | new_cpu = this_cpu; /* Wake to this CPU if we can */ | ||
991 | |||
992 | if (this_sd->flags & SD_WAKE_AFFINE) { | ||
993 | unsigned long tl = this_load; | ||
994 | unsigned long tl_per_task; | ||
995 | |||
996 | /* | ||
997 | * Attract cache-cold tasks on sync wakeups: | ||
998 | */ | ||
999 | if (sync && !task_hot(p, rq->clock, this_sd)) | ||
1000 | goto out_set_cpu; | ||
1001 | |||
1002 | schedstat_inc(p, se.nr_wakeups_affine_attempts); | ||
1003 | tl_per_task = cpu_avg_load_per_task(this_cpu); | ||
1004 | |||
1005 | /* | ||
1006 | * If sync wakeup then subtract the (maximum possible) | ||
1007 | * effect of the currently running task from the load | ||
1008 | * of the current CPU: | ||
1009 | */ | ||
1010 | if (sync) | ||
1011 | tl -= current->se.load.weight; | ||
1012 | |||
1013 | if ((tl <= load && | ||
1014 | tl + target_load(cpu, idx) <= tl_per_task) || | ||
1015 | 100*(tl + p->se.load.weight) <= imbalance*load) { | ||
1016 | /* | ||
1017 | * This domain has SD_WAKE_AFFINE and | ||
1018 | * p is cache cold in this domain, and | ||
1019 | * there is no bad imbalance. | ||
1020 | */ | ||
1021 | schedstat_inc(this_sd, ttwu_move_affine); | ||
1022 | schedstat_inc(p, se.nr_wakeups_affine); | ||
1023 | goto out_set_cpu; | ||
1024 | } | ||
1025 | } | ||
1026 | 1072 | ||
1027 | /* | 1073 | idx = this_sd->wake_idx; |
1028 | * Start passive balancing when half the imbalance_pct | 1074 | |
1029 | * limit is reached. | 1075 | imbalance = 100 + (this_sd->imbalance_pct - 100) / 2; |
1030 | */ | 1076 | |
1031 | if (this_sd->flags & SD_WAKE_BALANCE) { | 1077 | load = source_load(prev_cpu, idx); |
1032 | if (imbalance*this_load <= 100*load) { | 1078 | this_load = target_load(this_cpu, idx); |
1033 | schedstat_inc(this_sd, ttwu_move_balance); | 1079 | |
1034 | schedstat_inc(p, se.nr_wakeups_passive); | 1080 | if (wake_affine(rq, this_sd, this_rq, p, prev_cpu, this_cpu, sync, idx, |
1035 | goto out_set_cpu; | 1081 | load, this_load, imbalance)) |
1036 | } | 1082 | return this_cpu; |
1083 | |||
1084 | if (prev_cpu == this_cpu) | ||
1085 | goto out; | ||
1086 | |||
1087 | /* | ||
1088 | * Start passive balancing when half the imbalance_pct | ||
1089 | * limit is reached. | ||
1090 | */ | ||
1091 | if (this_sd->flags & SD_WAKE_BALANCE) { | ||
1092 | if (imbalance*this_load <= 100*load) { | ||
1093 | schedstat_inc(this_sd, ttwu_move_balance); | ||
1094 | schedstat_inc(p, se.nr_wakeups_passive); | ||
1095 | return this_cpu; | ||
1037 | } | 1096 | } |
1038 | } | 1097 | } |
1039 | 1098 | ||
1040 | new_cpu = cpu; /* Could not wake to this_cpu. Wake to cpu instead */ | 1099 | out: |
1041 | out_set_cpu: | ||
1042 | return wake_idle(new_cpu, p); | 1100 | return wake_idle(new_cpu, p); |
1043 | } | 1101 | } |
1044 | #endif /* CONFIG_SMP */ | 1102 | #endif /* CONFIG_SMP */ |
@@ -1060,6 +1118,13 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p) | |||
1060 | resched_task(curr); | 1118 | resched_task(curr); |
1061 | return; | 1119 | return; |
1062 | } | 1120 | } |
1121 | |||
1122 | se->last_wakeup = se->sum_exec_runtime; | ||
1123 | if (unlikely(se == pse)) | ||
1124 | return; | ||
1125 | |||
1126 | cfs_rq_of(pse)->next = pse; | ||
1127 | |||
1063 | /* | 1128 | /* |
1064 | * Batch tasks do not preempt (their preemption is driven by | 1129 | * Batch tasks do not preempt (their preemption is driven by |
1065 | * the tick): | 1130 | * the tick): |
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c index 548c436a776b..278534bbca95 100644 --- a/kernel/time/clocksource.c +++ b/kernel/time/clocksource.c | |||
@@ -141,13 +141,8 @@ static void clocksource_watchdog(unsigned long data) | |||
141 | } | 141 | } |
142 | 142 | ||
143 | if (!list_empty(&watchdog_list)) { | 143 | if (!list_empty(&watchdog_list)) { |
144 | /* Cycle through CPUs to check if the CPUs stay synchronized to | 144 | __mod_timer(&watchdog_timer, |
145 | * each other. */ | 145 | watchdog_timer.expires + WATCHDOG_INTERVAL); |
146 | int next_cpu = next_cpu(raw_smp_processor_id(), cpu_online_map); | ||
147 | if (next_cpu >= NR_CPUS) | ||
148 | next_cpu = first_cpu(cpu_online_map); | ||
149 | watchdog_timer.expires += WATCHDOG_INTERVAL; | ||
150 | add_timer_on(&watchdog_timer, next_cpu); | ||
151 | } | 146 | } |
152 | spin_unlock(&watchdog_lock); | 147 | spin_unlock(&watchdog_lock); |
153 | } | 148 | } |
@@ -169,7 +164,7 @@ static void clocksource_check_watchdog(struct clocksource *cs) | |||
169 | if (!started && watchdog) { | 164 | if (!started && watchdog) { |
170 | watchdog_last = watchdog->read(); | 165 | watchdog_last = watchdog->read(); |
171 | watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL; | 166 | watchdog_timer.expires = jiffies + WATCHDOG_INTERVAL; |
172 | add_timer_on(&watchdog_timer, first_cpu(cpu_online_map)); | 167 | add_timer(&watchdog_timer); |
173 | } | 168 | } |
174 | } else { | 169 | } else { |
175 | if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS) | 170 | if (cs->flags & CLOCK_SOURCE_IS_CONTINUOUS) |
@@ -190,8 +185,7 @@ static void clocksource_check_watchdog(struct clocksource *cs) | |||
190 | watchdog_last = watchdog->read(); | 185 | watchdog_last = watchdog->read(); |
191 | watchdog_timer.expires = | 186 | watchdog_timer.expires = |
192 | jiffies + WATCHDOG_INTERVAL; | 187 | jiffies + WATCHDOG_INTERVAL; |
193 | add_timer_on(&watchdog_timer, | 188 | add_timer(&watchdog_timer); |
194 | first_cpu(cpu_online_map)); | ||
195 | } | 189 | } |
196 | } | 190 | } |
197 | } | 191 | } |
diff --git a/lib/devres.c b/lib/devres.c index b1d336ce7f3d..edc27a5d1b73 100644 --- a/lib/devres.c +++ b/lib/devres.c | |||
@@ -298,6 +298,31 @@ int pcim_iomap_regions(struct pci_dev *pdev, u16 mask, const char *name) | |||
298 | EXPORT_SYMBOL(pcim_iomap_regions); | 298 | EXPORT_SYMBOL(pcim_iomap_regions); |
299 | 299 | ||
300 | /** | 300 | /** |
301 | * pcim_iomap_regions_request_all - Request all BARs and iomap specified ones | ||
302 | * @pdev: PCI device to map IO resources for | ||
303 | * @mask: Mask of BARs to iomap | ||
304 | * @name: Name used when requesting regions | ||
305 | * | ||
306 | * Request all PCI BARs and iomap regions specified by @mask. | ||
307 | */ | ||
308 | int pcim_iomap_regions_request_all(struct pci_dev *pdev, u16 mask, | ||
309 | const char *name) | ||
310 | { | ||
311 | int request_mask = ((1 << 6) - 1) & ~mask; | ||
312 | int rc; | ||
313 | |||
314 | rc = pci_request_selected_regions(pdev, request_mask, name); | ||
315 | if (rc) | ||
316 | return rc; | ||
317 | |||
318 | rc = pcim_iomap_regions(pdev, mask, name); | ||
319 | if (rc) | ||
320 | pci_release_selected_regions(pdev, request_mask); | ||
321 | return rc; | ||
322 | } | ||
323 | EXPORT_SYMBOL(pcim_iomap_regions_request_all); | ||
324 | |||
325 | /** | ||
301 | * pcim_iounmap_regions - Unmap and release PCI BARs | 326 | * pcim_iounmap_regions - Unmap and release PCI BARs |
302 | * @pdev: PCI device to map IO resources for | 327 | * @pdev: PCI device to map IO resources for |
303 | * @mask: Mask of BARs to unmap and release | 328 | * @mask: Mask of BARs to unmap and release |
diff --git a/mm/filemap.c b/mm/filemap.c index df343d1e6345..07e9d9258b48 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -343,7 +343,7 @@ int sync_page_range(struct inode *inode, struct address_space *mapping, | |||
343 | EXPORT_SYMBOL(sync_page_range); | 343 | EXPORT_SYMBOL(sync_page_range); |
344 | 344 | ||
345 | /** | 345 | /** |
346 | * sync_page_range_nolock | 346 | * sync_page_range_nolock - write & wait on all pages in the passed range without locking |
347 | * @inode: target inode | 347 | * @inode: target inode |
348 | * @mapping: target address_space | 348 | * @mapping: target address_space |
349 | * @pos: beginning offset in pages to write | 349 | * @pos: beginning offset in pages to write |
@@ -611,7 +611,10 @@ int __lock_page_killable(struct page *page) | |||
611 | sync_page_killable, TASK_KILLABLE); | 611 | sync_page_killable, TASK_KILLABLE); |
612 | } | 612 | } |
613 | 613 | ||
614 | /* | 614 | /** |
615 | * __lock_page_nosync - get a lock on the page, without calling sync_page() | ||
616 | * @page: the page to lock | ||
617 | * | ||
615 | * Variant of lock_page that does not require the caller to hold a reference | 618 | * Variant of lock_page that does not require the caller to hold a reference |
616 | * on the page's mapping. | 619 | * on the page's mapping. |
617 | */ | 620 | */ |
@@ -1538,9 +1541,20 @@ repeat: | |||
1538 | return page; | 1541 | return page; |
1539 | } | 1542 | } |
1540 | 1543 | ||
1541 | /* | 1544 | /** |
1545 | * read_cache_page_async - read into page cache, fill it if needed | ||
1546 | * @mapping: the page's address_space | ||
1547 | * @index: the page index | ||
1548 | * @filler: function to perform the read | ||
1549 | * @data: destination for read data | ||
1550 | * | ||
1542 | * Same as read_cache_page, but don't wait for page to become unlocked | 1551 | * Same as read_cache_page, but don't wait for page to become unlocked |
1543 | * after submitting it to the filler. | 1552 | * after submitting it to the filler. |
1553 | * | ||
1554 | * Read into the page cache. If a page already exists, and PageUptodate() is | ||
1555 | * not set, try to fill the page but don't wait for it to become unlocked. | ||
1556 | * | ||
1557 | * If the page does not get brought uptodate, return -EIO. | ||
1544 | */ | 1558 | */ |
1545 | struct page *read_cache_page_async(struct address_space *mapping, | 1559 | struct page *read_cache_page_async(struct address_space *mapping, |
1546 | pgoff_t index, | 1560 | pgoff_t index, |
diff --git a/mm/fremap.c b/mm/fremap.c index 69a37c2bdf81..07a9c82ce1a3 100644 --- a/mm/fremap.c +++ b/mm/fremap.c | |||
@@ -113,7 +113,7 @@ static int populate_range(struct mm_struct *mm, struct vm_area_struct *vma, | |||
113 | * mmap()/mremap() it does not create any new vmas. The new mappings are | 113 | * mmap()/mremap() it does not create any new vmas. The new mappings are |
114 | * also safe across swapout. | 114 | * also safe across swapout. |
115 | * | 115 | * |
116 | * NOTE: the 'prot' parameter right now is ignored (but must be zero), | 116 | * NOTE: the @prot parameter right now is ignored (but must be zero), |
117 | * and the vma's default protection is used. Arbitrary protections | 117 | * and the vma's default protection is used. Arbitrary protections |
118 | * might be implemented in the future. | 118 | * might be implemented in the future. |
119 | */ | 119 | */ |
diff --git a/mm/highmem.c b/mm/highmem.c index 35d47733cde4..7da4a7b6af11 100644 --- a/mm/highmem.c +++ b/mm/highmem.c | |||
@@ -104,8 +104,9 @@ static void flush_all_zero_pkmaps(void) | |||
104 | flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); | 104 | flush_tlb_kernel_range(PKMAP_ADDR(0), PKMAP_ADDR(LAST_PKMAP)); |
105 | } | 105 | } |
106 | 106 | ||
107 | /* Flush all unused kmap mappings in order to remove stray | 107 | /** |
108 | mappings. */ | 108 | * kmap_flush_unused - flush all unused kmap mappings in order to remove stray mappings |
109 | */ | ||
109 | void kmap_flush_unused(void) | 110 | void kmap_flush_unused(void) |
110 | { | 111 | { |
111 | spin_lock(&kmap_lock); | 112 | spin_lock(&kmap_lock); |
@@ -163,6 +164,14 @@ start: | |||
163 | return vaddr; | 164 | return vaddr; |
164 | } | 165 | } |
165 | 166 | ||
167 | /** | ||
168 | * kmap_high - map a highmem page into memory | ||
169 | * @page: &struct page to map | ||
170 | * | ||
171 | * Returns the page's virtual memory address. | ||
172 | * | ||
173 | * We cannot call this from interrupts, as it may block. | ||
174 | */ | ||
166 | void *kmap_high(struct page *page) | 175 | void *kmap_high(struct page *page) |
167 | { | 176 | { |
168 | unsigned long vaddr; | 177 | unsigned long vaddr; |
@@ -170,8 +179,6 @@ void *kmap_high(struct page *page) | |||
170 | /* | 179 | /* |
171 | * For highmem pages, we can't trust "virtual" until | 180 | * For highmem pages, we can't trust "virtual" until |
172 | * after we have the lock. | 181 | * after we have the lock. |
173 | * | ||
174 | * We cannot call this from interrupts, as it may block | ||
175 | */ | 182 | */ |
176 | spin_lock(&kmap_lock); | 183 | spin_lock(&kmap_lock); |
177 | vaddr = (unsigned long)page_address(page); | 184 | vaddr = (unsigned long)page_address(page); |
@@ -185,6 +192,10 @@ void *kmap_high(struct page *page) | |||
185 | 192 | ||
186 | EXPORT_SYMBOL(kmap_high); | 193 | EXPORT_SYMBOL(kmap_high); |
187 | 194 | ||
195 | /** | ||
196 | * kunmap_high - map a highmem page into memory | ||
197 | * @page: &struct page to unmap | ||
198 | */ | ||
188 | void kunmap_high(struct page *page) | 199 | void kunmap_high(struct page *page) |
189 | { | 200 | { |
190 | unsigned long vaddr; | 201 | unsigned long vaddr; |
@@ -259,6 +270,12 @@ static struct page_address_slot *page_slot(struct page *page) | |||
259 | return &page_address_htable[hash_ptr(page, PA_HASH_ORDER)]; | 270 | return &page_address_htable[hash_ptr(page, PA_HASH_ORDER)]; |
260 | } | 271 | } |
261 | 272 | ||
273 | /** | ||
274 | * page_address - get the mapped virtual address of a page | ||
275 | * @page: &struct page to get the virtual address of | ||
276 | * | ||
277 | * Returns the page's virtual address. | ||
278 | */ | ||
262 | void *page_address(struct page *page) | 279 | void *page_address(struct page *page) |
263 | { | 280 | { |
264 | unsigned long flags; | 281 | unsigned long flags; |
@@ -288,6 +305,11 @@ done: | |||
288 | 305 | ||
289 | EXPORT_SYMBOL(page_address); | 306 | EXPORT_SYMBOL(page_address); |
290 | 307 | ||
308 | /** | ||
309 | * set_page_address - set a page's virtual address | ||
310 | * @page: &struct page to set | ||
311 | * @virtual: virtual address to use | ||
312 | */ | ||
291 | void set_page_address(struct page *page, void *virtual) | 313 | void set_page_address(struct page *page, void *virtual) |
292 | { | 314 | { |
293 | unsigned long flags; | 315 | unsigned long flags; |
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 8b9f6cae938e..9b648bd63451 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c | |||
@@ -1079,7 +1079,7 @@ static void mem_cgroup_move_task(struct cgroup_subsys *ss, | |||
1079 | * Only thread group leaders are allowed to migrate, the mm_struct is | 1079 | * Only thread group leaders are allowed to migrate, the mm_struct is |
1080 | * in effect owned by the leader | 1080 | * in effect owned by the leader |
1081 | */ | 1081 | */ |
1082 | if (p->tgid != p->pid) | 1082 | if (!thread_group_leader(p)) |
1083 | goto out; | 1083 | goto out; |
1084 | 1084 | ||
1085 | css_get(&mem->css); | 1085 | css_get(&mem->css); |
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index 44b2da11bf43..f255eda693b0 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
@@ -37,6 +37,7 @@ static DEFINE_SPINLOCK(zone_scan_mutex); | |||
37 | * badness - calculate a numeric value for how bad this task has been | 37 | * badness - calculate a numeric value for how bad this task has been |
38 | * @p: task struct of which task we should calculate | 38 | * @p: task struct of which task we should calculate |
39 | * @uptime: current uptime in seconds | 39 | * @uptime: current uptime in seconds |
40 | * @mem: target memory controller | ||
40 | * | 41 | * |
41 | * The formula used is relatively simple and documented inline in the | 42 | * The formula used is relatively simple and documented inline in the |
42 | * function. The main rationale is that we want to select a good task | 43 | * function. The main rationale is that we want to select a good task |
@@ -264,6 +265,9 @@ static struct task_struct *select_bad_process(unsigned long *ppoints, | |||
264 | } | 265 | } |
265 | 266 | ||
266 | /** | 267 | /** |
268 | * dump_tasks - dump current memory state of all system tasks | ||
269 | * @mem: target memory controller | ||
270 | * | ||
267 | * Dumps the current memory state of all system tasks, excluding kernel threads. | 271 | * Dumps the current memory state of all system tasks, excluding kernel threads. |
268 | * State information includes task's pid, uid, tgid, vm size, rss, cpu, oom_adj | 272 | * State information includes task's pid, uid, tgid, vm size, rss, cpu, oom_adj |
269 | * score, and name. | 273 | * score, and name. |
@@ -298,7 +302,7 @@ static void dump_tasks(const struct mem_cgroup *mem) | |||
298 | } while_each_thread(g, p); | 302 | } while_each_thread(g, p); |
299 | } | 303 | } |
300 | 304 | ||
301 | /** | 305 | /* |
302 | * Send SIGKILL to the selected process irrespective of CAP_SYS_RAW_IO | 306 | * Send SIGKILL to the selected process irrespective of CAP_SYS_RAW_IO |
303 | * flag though it's unlikely that we select a process with CAP_SYS_RAW_IO | 307 | * flag though it's unlikely that we select a process with CAP_SYS_RAW_IO |
304 | * set. | 308 | * set. |
@@ -504,6 +508,9 @@ void clear_zonelist_oom(struct zonelist *zonelist) | |||
504 | 508 | ||
505 | /** | 509 | /** |
506 | * out_of_memory - kill the "best" process when we run out of memory | 510 | * out_of_memory - kill the "best" process when we run out of memory |
511 | * @zonelist: zonelist pointer | ||
512 | * @gfp_mask: memory allocation flags | ||
513 | * @order: amount of memory being requested as a power of 2 | ||
507 | * | 514 | * |
508 | * If we run out of memory, we have the choice between either | 515 | * If we run out of memory, we have the choice between either |
509 | * killing a random task (bad), letting the system crash (worse) | 516 | * killing a random task (bad), letting the system crash (worse) |
diff --git a/mm/pagewalk.c b/mm/pagewalk.c index b4f27d22da91..1cf1417ef8b7 100644 --- a/mm/pagewalk.c +++ b/mm/pagewalk.c | |||
@@ -77,11 +77,11 @@ static int walk_pud_range(pgd_t *pgd, unsigned long addr, unsigned long end, | |||
77 | 77 | ||
78 | /** | 78 | /** |
79 | * walk_page_range - walk a memory map's page tables with a callback | 79 | * walk_page_range - walk a memory map's page tables with a callback |
80 | * @mm - memory map to walk | 80 | * @mm: memory map to walk |
81 | * @addr - starting address | 81 | * @addr: starting address |
82 | * @end - ending address | 82 | * @end: ending address |
83 | * @walk - set of callbacks to invoke for each level of the tree | 83 | * @walk: set of callbacks to invoke for each level of the tree |
84 | * @private - private data passed to the callback function | 84 | * @private: private data passed to the callback function |
85 | * | 85 | * |
86 | * Recursively walk the page table for the memory area in a VMA, | 86 | * Recursively walk the page table for the memory area in a VMA, |
87 | * calling supplied callbacks. Callbacks are called in-order (first | 87 | * calling supplied callbacks. Callbacks are called in-order (first |
diff --git a/mm/readahead.c b/mm/readahead.c index c9c50ca1ec38..8762e8988972 100644 --- a/mm/readahead.c +++ b/mm/readahead.c | |||
@@ -443,9 +443,10 @@ EXPORT_SYMBOL_GPL(page_cache_sync_readahead); | |||
443 | * pagecache pages | 443 | * pagecache pages |
444 | * | 444 | * |
445 | * page_cache_async_ondemand() should be called when a page is used which | 445 | * page_cache_async_ondemand() should be called when a page is used which |
446 | * has the PG_readahead flag: this is a marker to suggest that the application | 446 | * has the PG_readahead flag; this is a marker to suggest that the application |
447 | * has used up enough of the readahead window that we should start pulling in | 447 | * has used up enough of the readahead window that we should start pulling in |
448 | * more pages. */ | 448 | * more pages. |
449 | */ | ||
449 | void | 450 | void |
450 | page_cache_async_readahead(struct address_space *mapping, | 451 | page_cache_async_readahead(struct address_space *mapping, |
451 | struct file_ra_state *ra, struct file *filp, | 452 | struct file_ra_state *ra, struct file *filp, |
@@ -335,6 +335,7 @@ static int page_referenced_anon(struct page *page, | |||
335 | /** | 335 | /** |
336 | * page_referenced_file - referenced check for object-based rmap | 336 | * page_referenced_file - referenced check for object-based rmap |
337 | * @page: the page we're checking references on. | 337 | * @page: the page we're checking references on. |
338 | * @mem_cont: target memory controller | ||
338 | * | 339 | * |
339 | * For an object-based mapped page, find all the places it is mapped and | 340 | * For an object-based mapped page, find all the places it is mapped and |
340 | * check/clear the referenced flag. This is done by following the page->mapping | 341 | * check/clear the referenced flag. This is done by following the page->mapping |
@@ -402,6 +403,7 @@ static int page_referenced_file(struct page *page, | |||
402 | * page_referenced - test if the page was referenced | 403 | * page_referenced - test if the page was referenced |
403 | * @page: the page to test | 404 | * @page: the page to test |
404 | * @is_locked: caller holds lock on the page | 405 | * @is_locked: caller holds lock on the page |
406 | * @mem_cont: target memory controller | ||
405 | * | 407 | * |
406 | * Quick test_and_clear_referenced for all mappings to a page, | 408 | * Quick test_and_clear_referenced for all mappings to a page, |
407 | * returns the number of ptes which referenced the page. | 409 | * returns the number of ptes which referenced the page. |
@@ -506,7 +508,7 @@ int page_mkclean(struct page *page) | |||
506 | EXPORT_SYMBOL_GPL(page_mkclean); | 508 | EXPORT_SYMBOL_GPL(page_mkclean); |
507 | 509 | ||
508 | /** | 510 | /** |
509 | * page_set_anon_rmap - setup new anonymous rmap | 511 | * __page_set_anon_rmap - setup new anonymous rmap |
510 | * @page: the page to add the mapping to | 512 | * @page: the page to add the mapping to |
511 | * @vma: the vm area in which the mapping is added | 513 | * @vma: the vm area in which the mapping is added |
512 | * @address: the user virtual address mapped | 514 | * @address: the user virtual address mapped |
@@ -530,7 +532,7 @@ static void __page_set_anon_rmap(struct page *page, | |||
530 | } | 532 | } |
531 | 533 | ||
532 | /** | 534 | /** |
533 | * page_set_anon_rmap - sanity check anonymous rmap addition | 535 | * __page_check_anon_rmap - sanity check anonymous rmap addition |
534 | * @page: the page to add the mapping to | 536 | * @page: the page to add the mapping to |
535 | * @vma: the vm area in which the mapping is added | 537 | * @vma: the vm area in which the mapping is added |
536 | * @address: the user virtual address mapped | 538 | * @address: the user virtual address mapped |
@@ -583,7 +585,7 @@ void page_add_anon_rmap(struct page *page, | |||
583 | } | 585 | } |
584 | } | 586 | } |
585 | 587 | ||
586 | /* | 588 | /** |
587 | * page_add_new_anon_rmap - add pte mapping to a new anonymous page | 589 | * page_add_new_anon_rmap - add pte mapping to a new anonymous page |
588 | * @page: the page to add the mapping to | 590 | * @page: the page to add the mapping to |
589 | * @vma: the vm area in which the mapping is added | 591 | * @vma: the vm area in which the mapping is added |
@@ -623,6 +625,8 @@ void page_add_file_rmap(struct page *page) | |||
623 | /** | 625 | /** |
624 | * page_dup_rmap - duplicate pte mapping to a page | 626 | * page_dup_rmap - duplicate pte mapping to a page |
625 | * @page: the page to add the mapping to | 627 | * @page: the page to add the mapping to |
628 | * @vma: the vm area being duplicated | ||
629 | * @address: the user virtual address mapped | ||
626 | * | 630 | * |
627 | * For copy_page_range only: minimal extract from page_add_file_rmap / | 631 | * For copy_page_range only: minimal extract from page_add_file_rmap / |
628 | * page_add_anon_rmap, avoiding unnecessary tests (already checked) so it's | 632 | * page_add_anon_rmap, avoiding unnecessary tests (already checked) so it's |
@@ -642,6 +646,7 @@ void page_dup_rmap(struct page *page, struct vm_area_struct *vma, unsigned long | |||
642 | /** | 646 | /** |
643 | * page_remove_rmap - take down pte mapping from a page | 647 | * page_remove_rmap - take down pte mapping from a page |
644 | * @page: page to remove mapping from | 648 | * @page: page to remove mapping from |
649 | * @vma: the vm area in which the mapping is removed | ||
645 | * | 650 | * |
646 | * The caller needs to hold the pte lock. | 651 | * The caller needs to hold the pte lock. |
647 | */ | 652 | */ |
@@ -890,6 +895,7 @@ static int try_to_unmap_anon(struct page *page, int migration) | |||
890 | /** | 895 | /** |
891 | * try_to_unmap_file - unmap file page using the object-based rmap method | 896 | * try_to_unmap_file - unmap file page using the object-based rmap method |
892 | * @page: the page to unmap | 897 | * @page: the page to unmap |
898 | * @migration: migration flag | ||
893 | * | 899 | * |
894 | * Find all the mappings of a page using the mapping pointer and the vma chains | 900 | * Find all the mappings of a page using the mapping pointer and the vma chains |
895 | * contained in the address_space struct it points to. | 901 | * contained in the address_space struct it points to. |
@@ -986,6 +992,7 @@ out: | |||
986 | /** | 992 | /** |
987 | * try_to_unmap - try to remove all page table mappings to a page | 993 | * try_to_unmap - try to remove all page table mappings to a page |
988 | * @page: the page to get unmapped | 994 | * @page: the page to get unmapped |
995 | * @migration: migration flag | ||
989 | * | 996 | * |
990 | * Tries to remove all the page table entries which are mapping this | 997 | * Tries to remove all the page table entries which are mapping this |
991 | * page, used in the pageout path. Caller must hold the page lock. | 998 | * page, used in the pageout path. Caller must hold the page lock. |
diff --git a/mm/shmem.c b/mm/shmem.c index 3372bc579e89..f514dd392cd9 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
@@ -244,9 +244,8 @@ static void shmem_free_inode(struct super_block *sb) | |||
244 | } | 244 | } |
245 | } | 245 | } |
246 | 246 | ||
247 | /* | 247 | /** |
248 | * shmem_recalc_inode - recalculate the size of an inode | 248 | * shmem_recalc_inode - recalculate the size of an inode |
249 | * | ||
250 | * @inode: inode to recalc | 249 | * @inode: inode to recalc |
251 | * | 250 | * |
252 | * We have to calculate the free blocks since the mm can drop | 251 | * We have to calculate the free blocks since the mm can drop |
@@ -270,9 +269,8 @@ static void shmem_recalc_inode(struct inode *inode) | |||
270 | } | 269 | } |
271 | } | 270 | } |
272 | 271 | ||
273 | /* | 272 | /** |
274 | * shmem_swp_entry - find the swap vector position in the info structure | 273 | * shmem_swp_entry - find the swap vector position in the info structure |
275 | * | ||
276 | * @info: info structure for the inode | 274 | * @info: info structure for the inode |
277 | * @index: index of the page to find | 275 | * @index: index of the page to find |
278 | * @page: optional page to add to the structure. Has to be preset to | 276 | * @page: optional page to add to the structure. Has to be preset to |
@@ -374,13 +372,13 @@ static void shmem_swp_set(struct shmem_inode_info *info, swp_entry_t *entry, uns | |||
374 | } | 372 | } |
375 | } | 373 | } |
376 | 374 | ||
377 | /* | 375 | /** |
378 | * shmem_swp_alloc - get the position of the swap entry for the page. | 376 | * shmem_swp_alloc - get the position of the swap entry for the page. |
379 | * If it does not exist allocate the entry. | ||
380 | * | ||
381 | * @info: info structure for the inode | 377 | * @info: info structure for the inode |
382 | * @index: index of the page to find | 378 | * @index: index of the page to find |
383 | * @sgp: check and recheck i_size? skip allocation? | 379 | * @sgp: check and recheck i_size? skip allocation? |
380 | * | ||
381 | * If the entry does not exist, allocate it. | ||
384 | */ | 382 | */ |
385 | static swp_entry_t *shmem_swp_alloc(struct shmem_inode_info *info, unsigned long index, enum sgp_type sgp) | 383 | static swp_entry_t *shmem_swp_alloc(struct shmem_inode_info *info, unsigned long index, enum sgp_type sgp) |
386 | { | 384 | { |
@@ -440,9 +438,8 @@ static swp_entry_t *shmem_swp_alloc(struct shmem_inode_info *info, unsigned long | |||
440 | return entry; | 438 | return entry; |
441 | } | 439 | } |
442 | 440 | ||
443 | /* | 441 | /** |
444 | * shmem_free_swp - free some swap entries in a directory | 442 | * shmem_free_swp - free some swap entries in a directory |
445 | * | ||
446 | * @dir: pointer to the directory | 443 | * @dir: pointer to the directory |
447 | * @edir: pointer after last entry of the directory | 444 | * @edir: pointer after last entry of the directory |
448 | * @punch_lock: pointer to spinlock when needed for the holepunch case | 445 | * @punch_lock: pointer to spinlock when needed for the holepunch case |
@@ -2022,7 +2019,7 @@ static const struct inode_operations shmem_symlink_inode_operations = { | |||
2022 | }; | 2019 | }; |
2023 | 2020 | ||
2024 | #ifdef CONFIG_TMPFS_POSIX_ACL | 2021 | #ifdef CONFIG_TMPFS_POSIX_ACL |
2025 | /** | 2022 | /* |
2026 | * Superblocks without xattr inode operations will get security.* xattr | 2023 | * Superblocks without xattr inode operations will get security.* xattr |
2027 | * support from the VFS "for free". As soon as we have any other xattrs | 2024 | * support from the VFS "for free". As soon as we have any other xattrs |
2028 | * like ACLs, we also need to implement the security.* handlers at | 2025 | * like ACLs, we also need to implement the security.* handlers at |
@@ -2561,12 +2558,11 @@ out4: | |||
2561 | } | 2558 | } |
2562 | module_init(init_tmpfs) | 2559 | module_init(init_tmpfs) |
2563 | 2560 | ||
2564 | /* | 2561 | /** |
2565 | * shmem_file_setup - get an unlinked file living in tmpfs | 2562 | * shmem_file_setup - get an unlinked file living in tmpfs |
2566 | * | ||
2567 | * @name: name for dentry (to be seen in /proc/<pid>/maps | 2563 | * @name: name for dentry (to be seen in /proc/<pid>/maps |
2568 | * @size: size to be set for the file | 2564 | * @size: size to be set for the file |
2569 | * | 2565 | * @flags: vm_flags |
2570 | */ | 2566 | */ |
2571 | struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags) | 2567 | struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags) |
2572 | { | 2568 | { |
@@ -2621,9 +2617,8 @@ put_memory: | |||
2621 | return ERR_PTR(error); | 2617 | return ERR_PTR(error); |
2622 | } | 2618 | } |
2623 | 2619 | ||
2624 | /* | 2620 | /** |
2625 | * shmem_zero_setup - setup a shared anonymous mapping | 2621 | * shmem_zero_setup - setup a shared anonymous mapping |
2626 | * | ||
2627 | * @vma: the vma to be mmapped is prepared by do_mmap_pgoff | 2622 | * @vma: the vma to be mmapped is prepared by do_mmap_pgoff |
2628 | */ | 2623 | */ |
2629 | int shmem_zero_setup(struct vm_area_struct *vma) | 2624 | int shmem_zero_setup(struct vm_area_struct *vma) |
@@ -3624,12 +3624,11 @@ void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags) | |||
3624 | EXPORT_SYMBOL(kmem_cache_alloc); | 3624 | EXPORT_SYMBOL(kmem_cache_alloc); |
3625 | 3625 | ||
3626 | /** | 3626 | /** |
3627 | * kmem_ptr_validate - check if an untrusted pointer might | 3627 | * kmem_ptr_validate - check if an untrusted pointer might be a slab entry. |
3628 | * be a slab entry. | ||
3629 | * @cachep: the cache we're checking against | 3628 | * @cachep: the cache we're checking against |
3630 | * @ptr: pointer to validate | 3629 | * @ptr: pointer to validate |
3631 | * | 3630 | * |
3632 | * This verifies that the untrusted pointer looks sane: | 3631 | * This verifies that the untrusted pointer looks sane; |
3633 | * it is _not_ a guarantee that the pointer is actually | 3632 | * it is _not_ a guarantee that the pointer is actually |
3634 | * part of the slab cache in question, but it at least | 3633 | * part of the slab cache in question, but it at least |
3635 | * validates that the pointer can be dereferenced and | 3634 | * validates that the pointer can be dereferenced and |
@@ -1536,9 +1536,15 @@ new_slab: | |||
1536 | * That is only possible if certain conditions are met that are being | 1536 | * That is only possible if certain conditions are met that are being |
1537 | * checked when a slab is created. | 1537 | * checked when a slab is created. |
1538 | */ | 1538 | */ |
1539 | if (!(gfpflags & __GFP_NORETRY) && (s->flags & __PAGE_ALLOC_FALLBACK)) | 1539 | if (!(gfpflags & __GFP_NORETRY) && |
1540 | return kmalloc_large(s->objsize, gfpflags); | 1540 | (s->flags & __PAGE_ALLOC_FALLBACK)) { |
1541 | 1541 | if (gfpflags & __GFP_WAIT) | |
1542 | local_irq_enable(); | ||
1543 | object = kmalloc_large(s->objsize, gfpflags); | ||
1544 | if (gfpflags & __GFP_WAIT) | ||
1545 | local_irq_disable(); | ||
1546 | return object; | ||
1547 | } | ||
1542 | return NULL; | 1548 | return NULL; |
1543 | debug: | 1549 | debug: |
1544 | if (!alloc_debug_processing(s, c->page, object, addr)) | 1550 | if (!alloc_debug_processing(s, c->page, object, addr)) |
@@ -78,12 +78,11 @@ void put_page(struct page *page) | |||
78 | EXPORT_SYMBOL(put_page); | 78 | EXPORT_SYMBOL(put_page); |
79 | 79 | ||
80 | /** | 80 | /** |
81 | * put_pages_list(): release a list of pages | 81 | * put_pages_list() - release a list of pages |
82 | * @pages: list of pages threaded on page->lru | ||
82 | * | 83 | * |
83 | * Release a list of pages which are strung together on page.lru. Currently | 84 | * Release a list of pages which are strung together on page.lru. Currently |
84 | * used by read_cache_pages() and related error recovery code. | 85 | * used by read_cache_pages() and related error recovery code. |
85 | * | ||
86 | * @pages: list of pages threaded on page->lru | ||
87 | */ | 86 | */ |
88 | void put_pages_list(struct list_head *pages) | 87 | void put_pages_list(struct list_head *pages) |
89 | { | 88 | { |
diff --git a/mm/swap_state.c b/mm/swap_state.c index ec42f01a8d02..50757ee3f9f3 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c | |||
@@ -115,6 +115,7 @@ void __delete_from_swap_cache(struct page *page) | |||
115 | /** | 115 | /** |
116 | * add_to_swap - allocate swap space for a page | 116 | * add_to_swap - allocate swap space for a page |
117 | * @page: page we want to move to swap | 117 | * @page: page we want to move to swap |
118 | * @gfp_mask: memory allocation flags | ||
118 | * | 119 | * |
119 | * Allocate swap space for the page and add the page to the | 120 | * Allocate swap space for the page and add the page to the |
120 | * swap cache. Caller needs to hold the page lock. | 121 | * swap cache. Caller needs to hold the page lock. |
@@ -315,6 +316,7 @@ struct page *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask, | |||
315 | /** | 316 | /** |
316 | * swapin_readahead - swap in pages in hope we need them soon | 317 | * swapin_readahead - swap in pages in hope we need them soon |
317 | * @entry: swap entry of this memory | 318 | * @entry: swap entry of this memory |
319 | * @gfp_mask: memory allocation flags | ||
318 | * @vma: user vma this address belongs to | 320 | * @vma: user vma this address belongs to |
319 | * @addr: target address for mempolicy | 321 | * @addr: target address for mempolicy |
320 | * | 322 | * |
diff --git a/mm/tiny-shmem.c b/mm/tiny-shmem.c index 702083638c16..f0f55875dd6a 100644 --- a/mm/tiny-shmem.c +++ b/mm/tiny-shmem.c | |||
@@ -39,12 +39,11 @@ static int __init init_tmpfs(void) | |||
39 | } | 39 | } |
40 | module_init(init_tmpfs) | 40 | module_init(init_tmpfs) |
41 | 41 | ||
42 | /* | 42 | /** |
43 | * shmem_file_setup - get an unlinked file living in tmpfs | 43 | * shmem_file_setup - get an unlinked file living in tmpfs |
44 | * | ||
45 | * @name: name for dentry (to be seen in /proc/<pid>/maps | 44 | * @name: name for dentry (to be seen in /proc/<pid>/maps |
46 | * @size: size to be set for the file | 45 | * @size: size to be set for the file |
47 | * | 46 | * @flags: vm_flags |
48 | */ | 47 | */ |
49 | struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags) | 48 | struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags) |
50 | { | 49 | { |
@@ -95,9 +94,8 @@ put_memory: | |||
95 | return ERR_PTR(error); | 94 | return ERR_PTR(error); |
96 | } | 95 | } |
97 | 96 | ||
98 | /* | 97 | /** |
99 | * shmem_zero_setup - setup a shared anonymous mapping | 98 | * shmem_zero_setup - setup a shared anonymous mapping |
100 | * | ||
101 | * @vma: the vma to be mmapped is prepared by do_mmap_pgoff | 99 | * @vma: the vma to be mmapped is prepared by do_mmap_pgoff |
102 | */ | 100 | */ |
103 | int shmem_zero_setup(struct vm_area_struct *vma) | 101 | int shmem_zero_setup(struct vm_area_struct *vma) |
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 950c0be9ca81..ecf91f8034bf 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
@@ -757,7 +757,8 @@ finished: | |||
757 | * @vma: vma to cover (map full range of vma) | 757 | * @vma: vma to cover (map full range of vma) |
758 | * @addr: vmalloc memory | 758 | * @addr: vmalloc memory |
759 | * @pgoff: number of pages into addr before first page to map | 759 | * @pgoff: number of pages into addr before first page to map |
760 | * @returns: 0 for success, -Exxx on failure | 760 | * |
761 | * Returns: 0 for success, -Exxx on failure | ||
761 | * | 762 | * |
762 | * This function checks that addr is a valid vmalloc'ed area, and | 763 | * This function checks that addr is a valid vmalloc'ed area, and |
763 | * that it is big enough to cover the vma. Will return failure if | 764 | * that it is big enough to cover the vma. Will return failure if |
@@ -829,7 +830,8 @@ static int f(pte_t *pte, pgtable_t table, unsigned long addr, void *data) | |||
829 | /** | 830 | /** |
830 | * alloc_vm_area - allocate a range of kernel address space | 831 | * alloc_vm_area - allocate a range of kernel address space |
831 | * @size: size of the area | 832 | * @size: size of the area |
832 | * @returns: NULL on failure, vm_struct on success | 833 | * |
834 | * Returns: NULL on failure, vm_struct on success | ||
833 | * | 835 | * |
834 | * This function reserves a range of kernel address space, and | 836 | * This function reserves a range of kernel address space, and |
835 | * allocates pagetables to map that range. No actual mappings | 837 | * allocates pagetables to map that range. No actual mappings |
diff --git a/net/8021q/vlan_dev.c b/net/8021q/vlan_dev.c index 77f04e49a1a0..8fbcefe10c9f 100644 --- a/net/8021q/vlan_dev.c +++ b/net/8021q/vlan_dev.c | |||
@@ -382,7 +382,7 @@ static int vlan_dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
382 | vlan_dev_info(dev)->cnt_encap_on_xmit++; | 382 | vlan_dev_info(dev)->cnt_encap_on_xmit++; |
383 | 383 | ||
384 | pr_debug("%s: proto to encap: 0x%hx\n", | 384 | pr_debug("%s: proto to encap: 0x%hx\n", |
385 | __FUNCTION__, htons(veth->h_vlan_proto)); | 385 | __FUNCTION__, ntohs(veth->h_vlan_proto)); |
386 | /* Construct the second two bytes. This field looks something | 386 | /* Construct the second two bytes. This field looks something |
387 | * like: | 387 | * like: |
388 | * usr_priority: 3 bits (high bits) | 388 | * usr_priority: 3 bits (high bits) |
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index bc40377136a2..9326c377822e 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c | |||
@@ -136,7 +136,7 @@ void br_fdb_cleanup(unsigned long _data) | |||
136 | this_timer = f->ageing_timer + delay; | 136 | this_timer = f->ageing_timer + delay; |
137 | if (time_before_eq(this_timer, jiffies)) | 137 | if (time_before_eq(this_timer, jiffies)) |
138 | fdb_delete(f); | 138 | fdb_delete(f); |
139 | else if (this_timer < next_timer) | 139 | else if (time_before(this_timer, next_timer)) |
140 | next_timer = this_timer; | 140 | next_timer = this_timer; |
141 | } | 141 | } |
142 | } | 142 | } |
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 4b7e756181c9..c635de52526c 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
@@ -215,10 +215,12 @@ static void zap_completion_queue(void) | |||
215 | while (clist != NULL) { | 215 | while (clist != NULL) { |
216 | struct sk_buff *skb = clist; | 216 | struct sk_buff *skb = clist; |
217 | clist = clist->next; | 217 | clist = clist->next; |
218 | if (skb->destructor) | 218 | if (skb->destructor) { |
219 | atomic_inc(&skb->users); | ||
219 | dev_kfree_skb_any(skb); /* put this one back */ | 220 | dev_kfree_skb_any(skb); /* put this one back */ |
220 | else | 221 | } else { |
221 | __kfree_skb(skb); | 222 | __kfree_skb(skb); |
223 | } | ||
222 | } | 224 | } |
223 | } | 225 | } |
224 | 226 | ||
diff --git a/net/core/sock.c b/net/core/sock.c index 09cb3a74de7f..2654c147c004 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1621,7 +1621,7 @@ static void sock_def_readable(struct sock *sk, int len) | |||
1621 | { | 1621 | { |
1622 | read_lock(&sk->sk_callback_lock); | 1622 | read_lock(&sk->sk_callback_lock); |
1623 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 1623 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) |
1624 | wake_up_interruptible(sk->sk_sleep); | 1624 | wake_up_interruptible_sync(sk->sk_sleep); |
1625 | sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); | 1625 | sk_wake_async(sk, SOCK_WAKE_WAITD, POLL_IN); |
1626 | read_unlock(&sk->sk_callback_lock); | 1626 | read_unlock(&sk->sk_callback_lock); |
1627 | } | 1627 | } |
@@ -1635,7 +1635,7 @@ static void sock_def_write_space(struct sock *sk) | |||
1635 | */ | 1635 | */ |
1636 | if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) { | 1636 | if ((atomic_read(&sk->sk_wmem_alloc) << 1) <= sk->sk_sndbuf) { |
1637 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) | 1637 | if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) |
1638 | wake_up_interruptible(sk->sk_sleep); | 1638 | wake_up_interruptible_sync(sk->sk_sleep); |
1639 | 1639 | ||
1640 | /* Should agree with poll, otherwise some programs break */ | 1640 | /* Should agree with poll, otherwise some programs break */ |
1641 | if (sock_writeable(sk)) | 1641 | if (sock_writeable(sk)) |
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index 09ca5293d08f..0d109504ed86 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c | |||
@@ -458,7 +458,7 @@ int inet_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len) | |||
458 | err = -EADDRNOTAVAIL; | 458 | err = -EADDRNOTAVAIL; |
459 | if (!sysctl_ip_nonlocal_bind && | 459 | if (!sysctl_ip_nonlocal_bind && |
460 | !inet->freebind && | 460 | !inet->freebind && |
461 | addr->sin_addr.s_addr != INADDR_ANY && | 461 | addr->sin_addr.s_addr != htonl(INADDR_ANY) && |
462 | chk_addr_ret != RTN_LOCAL && | 462 | chk_addr_ret != RTN_LOCAL && |
463 | chk_addr_ret != RTN_MULTICAST && | 463 | chk_addr_ret != RTN_MULTICAST && |
464 | chk_addr_ret != RTN_BROADCAST) | 464 | chk_addr_ret != RTN_BROADCAST) |
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index 091e6709f831..f3ceca31aa45 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c | |||
@@ -168,7 +168,7 @@ static int esp_output(struct xfrm_state *x, struct sk_buff *skb) | |||
168 | struct xfrm_encap_tmpl *encap = x->encap; | 168 | struct xfrm_encap_tmpl *encap = x->encap; |
169 | struct udphdr *uh; | 169 | struct udphdr *uh; |
170 | __be32 *udpdata32; | 170 | __be32 *udpdata32; |
171 | unsigned int sport, dport; | 171 | __be16 sport, dport; |
172 | int encap_type; | 172 | int encap_type; |
173 | 173 | ||
174 | spin_lock_bh(&x->lock); | 174 | spin_lock_bh(&x->lock); |
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c index de0572c88859..f72457b4b0a7 100644 --- a/net/ipv4/ip_sockglue.c +++ b/net/ipv4/ip_sockglue.c | |||
@@ -583,7 +583,7 @@ static int do_ip_setsockopt(struct sock *sk, int level, | |||
583 | } | 583 | } |
584 | 584 | ||
585 | if (!mreq.imr_ifindex) { | 585 | if (!mreq.imr_ifindex) { |
586 | if (mreq.imr_address.s_addr == INADDR_ANY) { | 586 | if (mreq.imr_address.s_addr == htonl(INADDR_ANY)) { |
587 | inet->mc_index = 0; | 587 | inet->mc_index = 0; |
588 | inet->mc_addr = 0; | 588 | inet->mc_addr = 0; |
589 | err = 0; | 589 | err = 0; |
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c index 5dd938579eeb..7c992fbbc2c3 100644 --- a/net/ipv4/ipconfig.c +++ b/net/ipv4/ipconfig.c | |||
@@ -103,6 +103,7 @@ | |||
103 | - '3' from resolv.h */ | 103 | - '3' from resolv.h */ |
104 | 104 | ||
105 | #define NONE __constant_htonl(INADDR_NONE) | 105 | #define NONE __constant_htonl(INADDR_NONE) |
106 | #define ANY __constant_htonl(INADDR_ANY) | ||
106 | 107 | ||
107 | /* | 108 | /* |
108 | * Public IP configuration | 109 | * Public IP configuration |
@@ -1479,19 +1480,19 @@ static int __init ip_auto_config_setup(char *addrs) | |||
1479 | DBG(("IP-Config: Parameter #%d: `%s'\n", num, ip)); | 1480 | DBG(("IP-Config: Parameter #%d: `%s'\n", num, ip)); |
1480 | switch (num) { | 1481 | switch (num) { |
1481 | case 0: | 1482 | case 0: |
1482 | if ((ic_myaddr = in_aton(ip)) == INADDR_ANY) | 1483 | if ((ic_myaddr = in_aton(ip)) == ANY) |
1483 | ic_myaddr = NONE; | 1484 | ic_myaddr = NONE; |
1484 | break; | 1485 | break; |
1485 | case 1: | 1486 | case 1: |
1486 | if ((ic_servaddr = in_aton(ip)) == INADDR_ANY) | 1487 | if ((ic_servaddr = in_aton(ip)) == ANY) |
1487 | ic_servaddr = NONE; | 1488 | ic_servaddr = NONE; |
1488 | break; | 1489 | break; |
1489 | case 2: | 1490 | case 2: |
1490 | if ((ic_gateway = in_aton(ip)) == INADDR_ANY) | 1491 | if ((ic_gateway = in_aton(ip)) == ANY) |
1491 | ic_gateway = NONE; | 1492 | ic_gateway = NONE; |
1492 | break; | 1493 | break; |
1493 | case 3: | 1494 | case 3: |
1494 | if ((ic_netmask = in_aton(ip)) == INADDR_ANY) | 1495 | if ((ic_netmask = in_aton(ip)) == ANY) |
1495 | ic_netmask = NONE; | 1496 | ic_netmask = NONE; |
1496 | break; | 1497 | break; |
1497 | case 4: | 1498 | case 4: |
diff --git a/net/ipv4/netfilter/ipt_recent.c b/net/ipv4/netfilter/ipt_recent.c index 68cbe3ca01ce..8e8f0425a8ed 100644 --- a/net/ipv4/netfilter/ipt_recent.c +++ b/net/ipv4/netfilter/ipt_recent.c | |||
@@ -252,6 +252,8 @@ recent_mt_check(const char *tablename, const void *ip, | |||
252 | if ((info->check_set & (IPT_RECENT_SET | IPT_RECENT_REMOVE)) && | 252 | if ((info->check_set & (IPT_RECENT_SET | IPT_RECENT_REMOVE)) && |
253 | (info->seconds || info->hit_count)) | 253 | (info->seconds || info->hit_count)) |
254 | return false; | 254 | return false; |
255 | if (info->hit_count > ip_pkt_list_tot) | ||
256 | return false; | ||
255 | if (info->name[0] == '\0' || | 257 | if (info->name[0] == '\0' || |
256 | strnlen(info->name, IPT_RECENT_NAME_LEN) == IPT_RECENT_NAME_LEN) | 258 | strnlen(info->name, IPT_RECENT_NAME_LEN) == IPT_RECENT_NAME_LEN) |
257 | return false; | 259 | return false; |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 01578f544ad6..72b9350006fe 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -255,7 +255,7 @@ static u16 tcp_select_window(struct sock *sk) | |||
255 | * | 255 | * |
256 | * Relax Will Robinson. | 256 | * Relax Will Robinson. |
257 | */ | 257 | */ |
258 | new_win = cur_win; | 258 | new_win = ALIGN(cur_win, 1 << tp->rx_opt.rcv_wscale); |
259 | } | 259 | } |
260 | tp->rcv_wnd = new_win; | 260 | tp->rcv_wnd = new_win; |
261 | tp->rcv_wup = tp->rcv_nxt; | 261 | tp->rcv_wup = tp->rcv_nxt; |
diff --git a/net/ipv6/Kconfig b/net/ipv6/Kconfig index 58219dfffef8..47263e45bacb 100644 --- a/net/ipv6/Kconfig +++ b/net/ipv6/Kconfig | |||
@@ -179,11 +179,12 @@ config IPV6_SIT | |||
179 | Saying M here will produce a module called sit.ko. If unsure, say Y. | 179 | Saying M here will produce a module called sit.ko. If unsure, say Y. |
180 | 180 | ||
181 | config IPV6_TUNNEL | 181 | config IPV6_TUNNEL |
182 | tristate "IPv6: IPv6-in-IPv6 tunnel" | 182 | tristate "IPv6: IP-in-IPv6 tunnel (RFC2473)" |
183 | select INET6_TUNNEL | 183 | select INET6_TUNNEL |
184 | depends on IPV6 | 184 | depends on IPV6 |
185 | ---help--- | 185 | ---help--- |
186 | Support for IPv6-in-IPv6 tunnels described in RFC 2473. | 186 | Support for IPv6-in-IPv6 and IPv4-in-IPv6 tunnels described in |
187 | RFC 2473. | ||
187 | 188 | ||
188 | If unsure, say N. | 189 | If unsure, say N. |
189 | 190 | ||
diff --git a/net/netfilter/nf_conntrack_h323_main.c b/net/netfilter/nf_conntrack_h323_main.c index 62137879e6aa..898f1922b5b8 100644 --- a/net/netfilter/nf_conntrack_h323_main.c +++ b/net/netfilter/nf_conntrack_h323_main.c | |||
@@ -842,7 +842,7 @@ static int process_setup(struct sk_buff *skb, struct nf_conn *ct, | |||
842 | 842 | ||
843 | set_h225_addr = rcu_dereference(set_h225_addr_hook); | 843 | set_h225_addr = rcu_dereference(set_h225_addr_hook); |
844 | if ((setup->options & eSetup_UUIE_destCallSignalAddress) && | 844 | if ((setup->options & eSetup_UUIE_destCallSignalAddress) && |
845 | (set_h225_addr) && ct->status && IPS_NAT_MASK && | 845 | (set_h225_addr) && ct->status & IPS_NAT_MASK && |
846 | get_h225_addr(ct, *data, &setup->destCallSignalAddress, | 846 | get_h225_addr(ct, *data, &setup->destCallSignalAddress, |
847 | &addr, &port) && | 847 | &addr, &port) && |
848 | memcmp(&addr, &ct->tuplehash[!dir].tuple.src.u3, sizeof(addr))) { | 848 | memcmp(&addr, &ct->tuplehash[!dir].tuple.src.u3, sizeof(addr))) { |
diff --git a/net/sched/cls_u32.c b/net/sched/cls_u32.c index b18fa95ef248..c5c16b4b6e98 100644 --- a/net/sched/cls_u32.c +++ b/net/sched/cls_u32.c | |||
@@ -89,7 +89,7 @@ static const struct tcf_ext_map u32_ext_map = { | |||
89 | 89 | ||
90 | static struct tc_u_common *u32_list; | 90 | static struct tc_u_common *u32_list; |
91 | 91 | ||
92 | static __inline__ unsigned u32_hash_fold(u32 key, struct tc_u32_sel *sel, u8 fshift) | 92 | static __inline__ unsigned u32_hash_fold(__be32 key, struct tc_u32_sel *sel, u8 fshift) |
93 | { | 93 | { |
94 | unsigned h = ntohl(key & sel->hmask)>>fshift; | 94 | unsigned h = ntohl(key & sel->hmask)>>fshift; |
95 | 95 | ||
@@ -137,7 +137,7 @@ next_knode: | |||
137 | 137 | ||
138 | for (i = n->sel.nkeys; i>0; i--, key++) { | 138 | for (i = n->sel.nkeys; i>0; i--, key++) { |
139 | 139 | ||
140 | if ((*(u32*)(ptr+key->off+(off2&key->offmask))^key->val)&key->mask) { | 140 | if ((*(__be32*)(ptr+key->off+(off2&key->offmask))^key->val)&key->mask) { |
141 | n = n->next; | 141 | n = n->next; |
142 | goto next_knode; | 142 | goto next_knode; |
143 | } | 143 | } |
@@ -182,7 +182,7 @@ check_terminal: | |||
182 | ht = n->ht_down; | 182 | ht = n->ht_down; |
183 | sel = 0; | 183 | sel = 0; |
184 | if (ht->divisor) | 184 | if (ht->divisor) |
185 | sel = ht->divisor&u32_hash_fold(*(u32*)(ptr+n->sel.hoff), &n->sel,n->fshift); | 185 | sel = ht->divisor&u32_hash_fold(*(__be32*)(ptr+n->sel.hoff), &n->sel,n->fshift); |
186 | 186 | ||
187 | if (!(n->sel.flags&(TC_U32_VAROFFSET|TC_U32_OFFSET|TC_U32_EAT))) | 187 | if (!(n->sel.flags&(TC_U32_VAROFFSET|TC_U32_OFFSET|TC_U32_EAT))) |
188 | goto next_ht; | 188 | goto next_ht; |
@@ -190,7 +190,7 @@ check_terminal: | |||
190 | if (n->sel.flags&(TC_U32_OFFSET|TC_U32_VAROFFSET)) { | 190 | if (n->sel.flags&(TC_U32_OFFSET|TC_U32_VAROFFSET)) { |
191 | off2 = n->sel.off + 3; | 191 | off2 = n->sel.off + 3; |
192 | if (n->sel.flags&TC_U32_VAROFFSET) | 192 | if (n->sel.flags&TC_U32_VAROFFSET) |
193 | off2 += ntohs(n->sel.offmask & *(u16*)(ptr+n->sel.offoff)) >>n->sel.offshift; | 193 | off2 += ntohs(n->sel.offmask & *(__be16*)(ptr+n->sel.offoff)) >>n->sel.offshift; |
194 | off2 &= ~3; | 194 | off2 &= ~3; |
195 | } | 195 | } |
196 | if (n->sel.flags&TC_U32_EAT) { | 196 | if (n->sel.flags&TC_U32_EAT) { |
diff --git a/net/sched/em_u32.c b/net/sched/em_u32.c index 112796e4a7c4..953f1479f7da 100644 --- a/net/sched/em_u32.c +++ b/net/sched/em_u32.c | |||
@@ -35,7 +35,7 @@ static int em_u32_match(struct sk_buff *skb, struct tcf_ematch *em, | |||
35 | if (!tcf_valid_offset(skb, ptr, sizeof(u32))) | 35 | if (!tcf_valid_offset(skb, ptr, sizeof(u32))) |
36 | return 0; | 36 | return 0; |
37 | 37 | ||
38 | return !(((*(u32*) ptr) ^ key->val) & key->mask); | 38 | return !(((*(__be32*) ptr) ^ key->val) & key->mask); |
39 | } | 39 | } |
40 | 40 | ||
41 | static struct tcf_ematch_ops em_u32_ops = { | 41 | static struct tcf_ematch_ops em_u32_ops = { |
diff --git a/net/sctp/input.c b/net/sctp/input.c index 57fe2f81eca8..812ff1756c3e 100644 --- a/net/sctp/input.c +++ b/net/sctp/input.c | |||
@@ -944,7 +944,7 @@ static struct sctp_association *__sctp_rcv_init_lookup(struct sk_buff *skb, | |||
944 | static struct sctp_association *__sctp_rcv_asconf_lookup( | 944 | static struct sctp_association *__sctp_rcv_asconf_lookup( |
945 | sctp_chunkhdr_t *ch, | 945 | sctp_chunkhdr_t *ch, |
946 | const union sctp_addr *laddr, | 946 | const union sctp_addr *laddr, |
947 | __be32 peer_port, | 947 | __be16 peer_port, |
948 | struct sctp_transport **transportp) | 948 | struct sctp_transport **transportp) |
949 | { | 949 | { |
950 | sctp_addip_chunk_t *asconf = (struct sctp_addip_chunk *)ch; | 950 | sctp_addip_chunk_t *asconf = (struct sctp_addip_chunk *)ch; |
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c index 9aa0733aee87..b1e05d719f9b 100644 --- a/net/sctp/ipv6.c +++ b/net/sctp/ipv6.c | |||
@@ -1014,15 +1014,24 @@ static struct sctp_pf sctp_pf_inet6 = { | |||
1014 | }; | 1014 | }; |
1015 | 1015 | ||
1016 | /* Initialize IPv6 support and register with socket layer. */ | 1016 | /* Initialize IPv6 support and register with socket layer. */ |
1017 | int sctp_v6_init(void) | 1017 | void sctp_v6_pf_init(void) |
1018 | { | 1018 | { |
1019 | int rc; | ||
1020 | |||
1021 | /* Register the SCTP specific PF_INET6 functions. */ | 1019 | /* Register the SCTP specific PF_INET6 functions. */ |
1022 | sctp_register_pf(&sctp_pf_inet6, PF_INET6); | 1020 | sctp_register_pf(&sctp_pf_inet6, PF_INET6); |
1023 | 1021 | ||
1024 | /* Register the SCTP specific AF_INET6 functions. */ | 1022 | /* Register the SCTP specific AF_INET6 functions. */ |
1025 | sctp_register_af(&sctp_af_inet6); | 1023 | sctp_register_af(&sctp_af_inet6); |
1024 | } | ||
1025 | |||
1026 | void sctp_v6_pf_exit(void) | ||
1027 | { | ||
1028 | list_del(&sctp_af_inet6.list); | ||
1029 | } | ||
1030 | |||
1031 | /* Initialize IPv6 support and register with socket layer. */ | ||
1032 | int sctp_v6_protosw_init(void) | ||
1033 | { | ||
1034 | int rc; | ||
1026 | 1035 | ||
1027 | rc = proto_register(&sctpv6_prot, 1); | 1036 | rc = proto_register(&sctpv6_prot, 1); |
1028 | if (rc) | 1037 | if (rc) |
@@ -1035,6 +1044,14 @@ int sctp_v6_init(void) | |||
1035 | return 0; | 1044 | return 0; |
1036 | } | 1045 | } |
1037 | 1046 | ||
1047 | void sctp_v6_protosw_exit(void) | ||
1048 | { | ||
1049 | inet6_unregister_protosw(&sctpv6_seqpacket_protosw); | ||
1050 | inet6_unregister_protosw(&sctpv6_stream_protosw); | ||
1051 | proto_unregister(&sctpv6_prot); | ||
1052 | } | ||
1053 | |||
1054 | |||
1038 | /* Register with inet6 layer. */ | 1055 | /* Register with inet6 layer. */ |
1039 | int sctp_v6_add_protocol(void) | 1056 | int sctp_v6_add_protocol(void) |
1040 | { | 1057 | { |
@@ -1047,15 +1064,6 @@ int sctp_v6_add_protocol(void) | |||
1047 | return 0; | 1064 | return 0; |
1048 | } | 1065 | } |
1049 | 1066 | ||
1050 | /* IPv6 specific exit support. */ | ||
1051 | void sctp_v6_exit(void) | ||
1052 | { | ||
1053 | inet6_unregister_protosw(&sctpv6_seqpacket_protosw); | ||
1054 | inet6_unregister_protosw(&sctpv6_stream_protosw); | ||
1055 | proto_unregister(&sctpv6_prot); | ||
1056 | list_del(&sctp_af_inet6.list); | ||
1057 | } | ||
1058 | |||
1059 | /* Unregister with inet6 layer. */ | 1067 | /* Unregister with inet6 layer. */ |
1060 | void sctp_v6_del_protocol(void) | 1068 | void sctp_v6_del_protocol(void) |
1061 | { | 1069 | { |
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index ad0a4069b95b..f90091a1b9ce 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
@@ -337,14 +337,14 @@ static int sctp_v4_cmp_addr(const union sctp_addr *addr1, | |||
337 | static void sctp_v4_inaddr_any(union sctp_addr *addr, __be16 port) | 337 | static void sctp_v4_inaddr_any(union sctp_addr *addr, __be16 port) |
338 | { | 338 | { |
339 | addr->v4.sin_family = AF_INET; | 339 | addr->v4.sin_family = AF_INET; |
340 | addr->v4.sin_addr.s_addr = INADDR_ANY; | 340 | addr->v4.sin_addr.s_addr = htonl(INADDR_ANY); |
341 | addr->v4.sin_port = port; | 341 | addr->v4.sin_port = port; |
342 | } | 342 | } |
343 | 343 | ||
344 | /* Is this a wildcard address? */ | 344 | /* Is this a wildcard address? */ |
345 | static int sctp_v4_is_any(const union sctp_addr *addr) | 345 | static int sctp_v4_is_any(const union sctp_addr *addr) |
346 | { | 346 | { |
347 | return INADDR_ANY == addr->v4.sin_addr.s_addr; | 347 | return htonl(INADDR_ANY) == addr->v4.sin_addr.s_addr; |
348 | } | 348 | } |
349 | 349 | ||
350 | /* This function checks if the address is a valid address to be used for | 350 | /* This function checks if the address is a valid address to be used for |
@@ -375,7 +375,7 @@ static int sctp_v4_available(union sctp_addr *addr, struct sctp_sock *sp) | |||
375 | int ret = inet_addr_type(&init_net, addr->v4.sin_addr.s_addr); | 375 | int ret = inet_addr_type(&init_net, addr->v4.sin_addr.s_addr); |
376 | 376 | ||
377 | 377 | ||
378 | if (addr->v4.sin_addr.s_addr != INADDR_ANY && | 378 | if (addr->v4.sin_addr.s_addr != htonl(INADDR_ANY) && |
379 | ret != RTN_LOCAL && | 379 | ret != RTN_LOCAL && |
380 | !sp->inet.freebind && | 380 | !sp->inet.freebind && |
381 | !sysctl_ip_nonlocal_bind) | 381 | !sysctl_ip_nonlocal_bind) |
@@ -785,8 +785,8 @@ static int sctp_inet_cmp_addr(const union sctp_addr *addr1, | |||
785 | /* PF_INET only supports AF_INET addresses. */ | 785 | /* PF_INET only supports AF_INET addresses. */ |
786 | if (addr1->sa.sa_family != addr2->sa.sa_family) | 786 | if (addr1->sa.sa_family != addr2->sa.sa_family) |
787 | return 0; | 787 | return 0; |
788 | if (INADDR_ANY == addr1->v4.sin_addr.s_addr || | 788 | if (htonl(INADDR_ANY) == addr1->v4.sin_addr.s_addr || |
789 | INADDR_ANY == addr2->v4.sin_addr.s_addr) | 789 | htonl(INADDR_ANY) == addr2->v4.sin_addr.s_addr) |
790 | return 1; | 790 | return 1; |
791 | if (addr1->v4.sin_addr.s_addr == addr2->v4.sin_addr.s_addr) | 791 | if (addr1->v4.sin_addr.s_addr == addr2->v4.sin_addr.s_addr) |
792 | return 1; | 792 | return 1; |
@@ -992,6 +992,58 @@ static void cleanup_sctp_mibs(void) | |||
992 | free_percpu(sctp_statistics[1]); | 992 | free_percpu(sctp_statistics[1]); |
993 | } | 993 | } |
994 | 994 | ||
995 | static void sctp_v4_pf_init(void) | ||
996 | { | ||
997 | /* Initialize the SCTP specific PF functions. */ | ||
998 | sctp_register_pf(&sctp_pf_inet, PF_INET); | ||
999 | sctp_register_af(&sctp_af_inet); | ||
1000 | } | ||
1001 | |||
1002 | static void sctp_v4_pf_exit(void) | ||
1003 | { | ||
1004 | list_del(&sctp_af_inet.list); | ||
1005 | } | ||
1006 | |||
1007 | static int sctp_v4_protosw_init(void) | ||
1008 | { | ||
1009 | int rc; | ||
1010 | |||
1011 | rc = proto_register(&sctp_prot, 1); | ||
1012 | if (rc) | ||
1013 | return rc; | ||
1014 | |||
1015 | /* Register SCTP(UDP and TCP style) with socket layer. */ | ||
1016 | inet_register_protosw(&sctp_seqpacket_protosw); | ||
1017 | inet_register_protosw(&sctp_stream_protosw); | ||
1018 | |||
1019 | return 0; | ||
1020 | } | ||
1021 | |||
1022 | static void sctp_v4_protosw_exit(void) | ||
1023 | { | ||
1024 | inet_unregister_protosw(&sctp_stream_protosw); | ||
1025 | inet_unregister_protosw(&sctp_seqpacket_protosw); | ||
1026 | proto_unregister(&sctp_prot); | ||
1027 | } | ||
1028 | |||
1029 | static int sctp_v4_add_protocol(void) | ||
1030 | { | ||
1031 | /* Register notifier for inet address additions/deletions. */ | ||
1032 | register_inetaddr_notifier(&sctp_inetaddr_notifier); | ||
1033 | |||
1034 | /* Register SCTP with inet layer. */ | ||
1035 | if (inet_add_protocol(&sctp_protocol, IPPROTO_SCTP) < 0) | ||
1036 | return -EAGAIN; | ||
1037 | |||
1038 | return 0; | ||
1039 | } | ||
1040 | |||
1041 | static void sctp_v4_del_protocol(void) | ||
1042 | { | ||
1043 | inet_del_protocol(&sctp_protocol, IPPROTO_SCTP); | ||
1044 | unregister_inetaddr_notifier(&sctp_inetaddr_notifier); | ||
1045 | } | ||
1046 | |||
995 | /* Initialize the universe into something sensible. */ | 1047 | /* Initialize the universe into something sensible. */ |
996 | SCTP_STATIC __init int sctp_init(void) | 1048 | SCTP_STATIC __init int sctp_init(void) |
997 | { | 1049 | { |
@@ -1035,8 +1087,6 @@ SCTP_STATIC __init int sctp_init(void) | |||
1035 | /* Initialize object count debugging. */ | 1087 | /* Initialize object count debugging. */ |
1036 | sctp_dbg_objcnt_init(); | 1088 | sctp_dbg_objcnt_init(); |
1037 | 1089 | ||
1038 | /* Initialize the SCTP specific PF functions. */ | ||
1039 | sctp_register_pf(&sctp_pf_inet, PF_INET); | ||
1040 | /* | 1090 | /* |
1041 | * 14. Suggested SCTP Protocol Parameter Values | 1091 | * 14. Suggested SCTP Protocol Parameter Values |
1042 | */ | 1092 | */ |
@@ -1194,19 +1244,22 @@ SCTP_STATIC __init int sctp_init(void) | |||
1194 | sctp_sysctl_register(); | 1244 | sctp_sysctl_register(); |
1195 | 1245 | ||
1196 | INIT_LIST_HEAD(&sctp_address_families); | 1246 | INIT_LIST_HEAD(&sctp_address_families); |
1197 | sctp_register_af(&sctp_af_inet); | 1247 | sctp_v4_pf_init(); |
1248 | sctp_v6_pf_init(); | ||
1198 | 1249 | ||
1199 | status = proto_register(&sctp_prot, 1); | 1250 | /* Initialize the local address list. */ |
1200 | if (status) | 1251 | INIT_LIST_HEAD(&sctp_local_addr_list); |
1201 | goto err_proto_register; | 1252 | spin_lock_init(&sctp_local_addr_lock); |
1253 | sctp_get_local_addr_list(); | ||
1202 | 1254 | ||
1203 | /* Register SCTP(UDP and TCP style) with socket layer. */ | 1255 | status = sctp_v4_protosw_init(); |
1204 | inet_register_protosw(&sctp_seqpacket_protosw); | ||
1205 | inet_register_protosw(&sctp_stream_protosw); | ||
1206 | 1256 | ||
1207 | status = sctp_v6_init(); | ||
1208 | if (status) | 1257 | if (status) |
1209 | goto err_v6_init; | 1258 | goto err_protosw_init; |
1259 | |||
1260 | status = sctp_v6_protosw_init(); | ||
1261 | if (status) | ||
1262 | goto err_v6_protosw_init; | ||
1210 | 1263 | ||
1211 | /* Initialize the control inode/socket for handling OOTB packets. */ | 1264 | /* Initialize the control inode/socket for handling OOTB packets. */ |
1212 | if ((status = sctp_ctl_sock_init())) { | 1265 | if ((status = sctp_ctl_sock_init())) { |
@@ -1215,19 +1268,9 @@ SCTP_STATIC __init int sctp_init(void) | |||
1215 | goto err_ctl_sock_init; | 1268 | goto err_ctl_sock_init; |
1216 | } | 1269 | } |
1217 | 1270 | ||
1218 | /* Initialize the local address list. */ | 1271 | status = sctp_v4_add_protocol(); |
1219 | INIT_LIST_HEAD(&sctp_local_addr_list); | 1272 | if (status) |
1220 | spin_lock_init(&sctp_local_addr_lock); | ||
1221 | sctp_get_local_addr_list(); | ||
1222 | |||
1223 | /* Register notifier for inet address additions/deletions. */ | ||
1224 | register_inetaddr_notifier(&sctp_inetaddr_notifier); | ||
1225 | |||
1226 | /* Register SCTP with inet layer. */ | ||
1227 | if (inet_add_protocol(&sctp_protocol, IPPROTO_SCTP) < 0) { | ||
1228 | status = -EAGAIN; | ||
1229 | goto err_add_protocol; | 1273 | goto err_add_protocol; |
1230 | } | ||
1231 | 1274 | ||
1232 | /* Register SCTP with inet6 layer. */ | 1275 | /* Register SCTP with inet6 layer. */ |
1233 | status = sctp_v6_add_protocol(); | 1276 | status = sctp_v6_add_protocol(); |
@@ -1238,18 +1281,18 @@ SCTP_STATIC __init int sctp_init(void) | |||
1238 | out: | 1281 | out: |
1239 | return status; | 1282 | return status; |
1240 | err_v6_add_protocol: | 1283 | err_v6_add_protocol: |
1241 | inet_del_protocol(&sctp_protocol, IPPROTO_SCTP); | 1284 | sctp_v6_del_protocol(); |
1242 | unregister_inetaddr_notifier(&sctp_inetaddr_notifier); | ||
1243 | err_add_protocol: | 1285 | err_add_protocol: |
1244 | sctp_free_local_addr_list(); | 1286 | sctp_v4_del_protocol(); |
1245 | sock_release(sctp_ctl_socket); | 1287 | sock_release(sctp_ctl_socket); |
1246 | err_ctl_sock_init: | 1288 | err_ctl_sock_init: |
1247 | sctp_v6_exit(); | 1289 | sctp_v6_protosw_exit(); |
1248 | err_v6_init: | 1290 | err_v6_protosw_init: |
1249 | inet_unregister_protosw(&sctp_stream_protosw); | 1291 | sctp_v4_protosw_exit(); |
1250 | inet_unregister_protosw(&sctp_seqpacket_protosw); | 1292 | err_protosw_init: |
1251 | proto_unregister(&sctp_prot); | 1293 | sctp_free_local_addr_list(); |
1252 | err_proto_register: | 1294 | sctp_v4_pf_exit(); |
1295 | sctp_v6_pf_exit(); | ||
1253 | sctp_sysctl_unregister(); | 1296 | sctp_sysctl_unregister(); |
1254 | list_del(&sctp_af_inet.list); | 1297 | list_del(&sctp_af_inet.list); |
1255 | free_pages((unsigned long)sctp_port_hashtable, | 1298 | free_pages((unsigned long)sctp_port_hashtable, |
@@ -1282,23 +1325,21 @@ SCTP_STATIC __exit void sctp_exit(void) | |||
1282 | 1325 | ||
1283 | /* Unregister with inet6/inet layers. */ | 1326 | /* Unregister with inet6/inet layers. */ |
1284 | sctp_v6_del_protocol(); | 1327 | sctp_v6_del_protocol(); |
1285 | inet_del_protocol(&sctp_protocol, IPPROTO_SCTP); | 1328 | sctp_v4_del_protocol(); |
1286 | |||
1287 | /* Unregister notifier for inet address additions/deletions. */ | ||
1288 | unregister_inetaddr_notifier(&sctp_inetaddr_notifier); | ||
1289 | |||
1290 | /* Free the local address list. */ | ||
1291 | sctp_free_local_addr_list(); | ||
1292 | 1329 | ||
1293 | /* Free the control endpoint. */ | 1330 | /* Free the control endpoint. */ |
1294 | sock_release(sctp_ctl_socket); | 1331 | sock_release(sctp_ctl_socket); |
1295 | 1332 | ||
1296 | /* Cleanup v6 initializations. */ | 1333 | /* Free protosw registrations */ |
1297 | sctp_v6_exit(); | 1334 | sctp_v6_protosw_exit(); |
1335 | sctp_v4_protosw_exit(); | ||
1336 | |||
1337 | /* Free the local address list. */ | ||
1338 | sctp_free_local_addr_list(); | ||
1298 | 1339 | ||
1299 | /* Unregister with socket layer. */ | 1340 | /* Unregister with socket layer. */ |
1300 | inet_unregister_protosw(&sctp_stream_protosw); | 1341 | sctp_v6_pf_exit(); |
1301 | inet_unregister_protosw(&sctp_seqpacket_protosw); | 1342 | sctp_v4_pf_exit(); |
1302 | 1343 | ||
1303 | sctp_sysctl_unregister(); | 1344 | sctp_sysctl_unregister(); |
1304 | list_del(&sctp_af_inet.list); | 1345 | list_del(&sctp_af_inet.list); |
@@ -1317,8 +1358,6 @@ SCTP_STATIC __exit void sctp_exit(void) | |||
1317 | 1358 | ||
1318 | kmem_cache_destroy(sctp_chunk_cachep); | 1359 | kmem_cache_destroy(sctp_chunk_cachep); |
1319 | kmem_cache_destroy(sctp_bucket_cachep); | 1360 | kmem_cache_destroy(sctp_bucket_cachep); |
1320 | |||
1321 | proto_unregister(&sctp_prot); | ||
1322 | } | 1361 | } |
1323 | 1362 | ||
1324 | module_init(sctp_init); | 1363 | module_init(sctp_init); |
diff --git a/net/sunrpc/auth_gss/gss_mech_switch.c b/net/sunrpc/auth_gss/gss_mech_switch.c index 61801a069ff0..bce9d527af08 100644 --- a/net/sunrpc/auth_gss/gss_mech_switch.c +++ b/net/sunrpc/auth_gss/gss_mech_switch.c | |||
@@ -317,7 +317,7 @@ gss_delete_sec_context(struct gss_ctx **context_handle) | |||
317 | 317 | ||
318 | if (!*context_handle) | 318 | if (!*context_handle) |
319 | return(GSS_S_NO_CONTEXT); | 319 | return(GSS_S_NO_CONTEXT); |
320 | if ((*context_handle)->internal_ctx_id != 0) | 320 | if ((*context_handle)->internal_ctx_id) |
321 | (*context_handle)->mech_type->gm_ops | 321 | (*context_handle)->mech_type->gm_ops |
322 | ->gss_delete_sec_context((*context_handle) | 322 | ->gss_delete_sec_context((*context_handle) |
323 | ->internal_ctx_id); | 323 | ->internal_ctx_id); |
diff --git a/net/sunrpc/svc_xprt.c b/net/sunrpc/svc_xprt.c index ea377e06afae..332eb47539e1 100644 --- a/net/sunrpc/svc_xprt.c +++ b/net/sunrpc/svc_xprt.c | |||
@@ -185,7 +185,7 @@ int svc_create_xprt(struct svc_serv *serv, char *xprt_name, unsigned short port, | |||
185 | struct svc_xprt_class *xcl; | 185 | struct svc_xprt_class *xcl; |
186 | struct sockaddr_in sin = { | 186 | struct sockaddr_in sin = { |
187 | .sin_family = AF_INET, | 187 | .sin_family = AF_INET, |
188 | .sin_addr.s_addr = INADDR_ANY, | 188 | .sin_addr.s_addr = htonl(INADDR_ANY), |
189 | .sin_port = htons(port), | 189 | .sin_port = htons(port), |
190 | }; | 190 | }; |
191 | dprintk("svc: creating transport %s[%d]\n", xprt_name, port); | 191 | dprintk("svc: creating transport %s[%d]\n", xprt_name, port); |
diff --git a/security/capability.c b/security/capability.c index 9e99f36a8b5c..2c6e06d18fab 100644 --- a/security/capability.c +++ b/security/capability.c | |||
@@ -40,7 +40,6 @@ static struct security_operations capability_ops = { | |||
40 | .inode_need_killpriv = cap_inode_need_killpriv, | 40 | .inode_need_killpriv = cap_inode_need_killpriv, |
41 | .inode_killpriv = cap_inode_killpriv, | 41 | .inode_killpriv = cap_inode_killpriv, |
42 | 42 | ||
43 | .task_kill = cap_task_kill, | ||
44 | .task_setscheduler = cap_task_setscheduler, | 43 | .task_setscheduler = cap_task_setscheduler, |
45 | .task_setioprio = cap_task_setioprio, | 44 | .task_setioprio = cap_task_setioprio, |
46 | .task_setnice = cap_task_setnice, | 45 | .task_setnice = cap_task_setnice, |
diff --git a/security/commoncap.c b/security/commoncap.c index bb0c095f5761..06d5c9469ba3 100644 --- a/security/commoncap.c +++ b/security/commoncap.c | |||
@@ -540,41 +540,6 @@ int cap_task_setnice (struct task_struct *p, int nice) | |||
540 | return cap_safe_nice(p); | 540 | return cap_safe_nice(p); |
541 | } | 541 | } |
542 | 542 | ||
543 | int cap_task_kill(struct task_struct *p, struct siginfo *info, | ||
544 | int sig, u32 secid) | ||
545 | { | ||
546 | if (info != SEND_SIG_NOINFO && (is_si_special(info) || SI_FROMKERNEL(info))) | ||
547 | return 0; | ||
548 | |||
549 | /* | ||
550 | * Running a setuid root program raises your capabilities. | ||
551 | * Killing your own setuid root processes was previously | ||
552 | * allowed. | ||
553 | * We must preserve legacy signal behavior in this case. | ||
554 | */ | ||
555 | if (p->uid == current->uid) | ||
556 | return 0; | ||
557 | |||
558 | /* sigcont is permitted within same session */ | ||
559 | if (sig == SIGCONT && (task_session_nr(current) == task_session_nr(p))) | ||
560 | return 0; | ||
561 | |||
562 | if (secid) | ||
563 | /* | ||
564 | * Signal sent as a particular user. | ||
565 | * Capabilities are ignored. May be wrong, but it's the | ||
566 | * only thing we can do at the moment. | ||
567 | * Used only by usb drivers? | ||
568 | */ | ||
569 | return 0; | ||
570 | if (cap_issubset(p->cap_permitted, current->cap_permitted)) | ||
571 | return 0; | ||
572 | if (capable(CAP_KILL)) | ||
573 | return 0; | ||
574 | |||
575 | return -EPERM; | ||
576 | } | ||
577 | |||
578 | /* | 543 | /* |
579 | * called from kernel/sys.c for prctl(PR_CABSET_DROP) | 544 | * called from kernel/sys.c for prctl(PR_CABSET_DROP) |
580 | * done without task_capability_lock() because it introduces | 545 | * done without task_capability_lock() because it introduces |
@@ -605,11 +570,6 @@ int cap_task_setnice (struct task_struct *p, int nice) | |||
605 | { | 570 | { |
606 | return 0; | 571 | return 0; |
607 | } | 572 | } |
608 | int cap_task_kill(struct task_struct *p, struct siginfo *info, | ||
609 | int sig, u32 secid) | ||
610 | { | ||
611 | return 0; | ||
612 | } | ||
613 | #endif | 573 | #endif |
614 | 574 | ||
615 | void cap_task_reparent_to_init (struct task_struct *p) | 575 | void cap_task_reparent_to_init (struct task_struct *p) |
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 4bf4807f2d44..41a049f50f58 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -800,7 +800,8 @@ static void selinux_sb_clone_mnt_opts(const struct super_block *oldsb, | |||
800 | mutex_unlock(&newsbsec->lock); | 800 | mutex_unlock(&newsbsec->lock); |
801 | } | 801 | } |
802 | 802 | ||
803 | int selinux_parse_opts_str(char *options, struct security_mnt_opts *opts) | 803 | static int selinux_parse_opts_str(char *options, |
804 | struct security_mnt_opts *opts) | ||
804 | { | 805 | { |
805 | char *p; | 806 | char *p; |
806 | char *context = NULL, *defcontext = NULL; | 807 | char *context = NULL, *defcontext = NULL; |
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index 0241fd359675..732ba27923c4 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c | |||
@@ -1117,11 +1117,6 @@ static int smack_task_movememory(struct task_struct *p) | |||
1117 | static int smack_task_kill(struct task_struct *p, struct siginfo *info, | 1117 | static int smack_task_kill(struct task_struct *p, struct siginfo *info, |
1118 | int sig, u32 secid) | 1118 | int sig, u32 secid) |
1119 | { | 1119 | { |
1120 | int rc; | ||
1121 | |||
1122 | rc = cap_task_kill(p, info, sig, secid); | ||
1123 | if (rc != 0) | ||
1124 | return rc; | ||
1125 | /* | 1120 | /* |
1126 | * Special cases where signals really ought to go through | 1121 | * Special cases where signals really ought to go through |
1127 | * in spite of policy. Stephen Smalley suggests it may | 1122 | * in spite of policy. Stephen Smalley suggests it may |
@@ -1508,7 +1503,7 @@ static int smack_shm_associate(struct shmid_kernel *shp, int shmflg) | |||
1508 | */ | 1503 | */ |
1509 | static int smack_shm_shmctl(struct shmid_kernel *shp, int cmd) | 1504 | static int smack_shm_shmctl(struct shmid_kernel *shp, int cmd) |
1510 | { | 1505 | { |
1511 | char *ssp = smack_of_shm(shp); | 1506 | char *ssp; |
1512 | int may; | 1507 | int may; |
1513 | 1508 | ||
1514 | switch (cmd) { | 1509 | switch (cmd) { |
@@ -1532,6 +1527,7 @@ static int smack_shm_shmctl(struct shmid_kernel *shp, int cmd) | |||
1532 | return -EINVAL; | 1527 | return -EINVAL; |
1533 | } | 1528 | } |
1534 | 1529 | ||
1530 | ssp = smack_of_shm(shp); | ||
1535 | return smk_curacc(ssp, may); | 1531 | return smk_curacc(ssp, may); |
1536 | } | 1532 | } |
1537 | 1533 | ||
@@ -1616,7 +1612,7 @@ static int smack_sem_associate(struct sem_array *sma, int semflg) | |||
1616 | */ | 1612 | */ |
1617 | static int smack_sem_semctl(struct sem_array *sma, int cmd) | 1613 | static int smack_sem_semctl(struct sem_array *sma, int cmd) |
1618 | { | 1614 | { |
1619 | char *ssp = smack_of_sem(sma); | 1615 | char *ssp; |
1620 | int may; | 1616 | int may; |
1621 | 1617 | ||
1622 | switch (cmd) { | 1618 | switch (cmd) { |
@@ -1645,6 +1641,7 @@ static int smack_sem_semctl(struct sem_array *sma, int cmd) | |||
1645 | return -EINVAL; | 1641 | return -EINVAL; |
1646 | } | 1642 | } |
1647 | 1643 | ||
1644 | ssp = smack_of_sem(sma); | ||
1648 | return smk_curacc(ssp, may); | 1645 | return smk_curacc(ssp, may); |
1649 | } | 1646 | } |
1650 | 1647 | ||
@@ -1730,7 +1727,7 @@ static int smack_msg_queue_associate(struct msg_queue *msq, int msqflg) | |||
1730 | */ | 1727 | */ |
1731 | static int smack_msg_queue_msgctl(struct msg_queue *msq, int cmd) | 1728 | static int smack_msg_queue_msgctl(struct msg_queue *msq, int cmd) |
1732 | { | 1729 | { |
1733 | char *msp = smack_of_msq(msq); | 1730 | char *msp; |
1734 | int may; | 1731 | int may; |
1735 | 1732 | ||
1736 | switch (cmd) { | 1733 | switch (cmd) { |
@@ -1752,6 +1749,7 @@ static int smack_msg_queue_msgctl(struct msg_queue *msq, int cmd) | |||
1752 | return -EINVAL; | 1749 | return -EINVAL; |
1753 | } | 1750 | } |
1754 | 1751 | ||
1752 | msp = smack_of_msq(msq); | ||
1755 | return smk_curacc(msp, may); | 1753 | return smk_curacc(msp, may); |
1756 | } | 1754 | } |
1757 | 1755 | ||