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 | ||
