diff options
530 files changed, 11607 insertions, 4598 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..5014bfa48ac1 --- /dev/null +++ b/.gitignore | |||
| @@ -0,0 +1,30 @@ | |||
| 1 | # | ||
| 2 | # NOTE! Don't add files that are generated in specific | ||
| 3 | # subdirectories here. Add them in the ".gitignore" file | ||
| 4 | # in that subdirectory instead. | ||
| 5 | # | ||
| 6 | # Normal rules | ||
| 7 | # | ||
| 8 | .* | ||
| 9 | *.o | ||
| 10 | *.a | ||
| 11 | *.s | ||
| 12 | *.ko | ||
| 13 | *.mod.c | ||
| 14 | |||
| 15 | # | ||
| 16 | # Top-level generic files | ||
| 17 | # | ||
| 18 | vmlinux* | ||
| 19 | System.map | ||
| 20 | Module.symvers | ||
| 21 | |||
| 22 | # | ||
| 23 | # Generated include files | ||
| 24 | # | ||
| 25 | include/asm | ||
| 26 | include/config | ||
| 27 | include/linux/autoconf.h | ||
| 28 | include/linux/compile.h | ||
| 29 | include/linux/version.h | ||
| 30 | |||
diff --git a/Documentation/connector/connector.txt b/Documentation/connector/connector.txt index 54a0a14bfbe3..57a314b14cf8 100644 --- a/Documentation/connector/connector.txt +++ b/Documentation/connector/connector.txt | |||
| @@ -131,3 +131,47 @@ Netlink itself is not reliable protocol, that means that messages can | |||
| 131 | be lost due to memory pressure or process' receiving queue overflowed, | 131 | be lost due to memory pressure or process' receiving queue overflowed, |
| 132 | so caller is warned must be prepared. That is why struct cn_msg [main | 132 | so caller is warned must be prepared. That is why struct cn_msg [main |
| 133 | connector's message header] contains u32 seq and u32 ack fields. | 133 | connector's message header] contains u32 seq and u32 ack fields. |
| 134 | |||
| 135 | /*****************************************/ | ||
| 136 | Userspace usage. | ||
| 137 | /*****************************************/ | ||
| 138 | 2.6.14 has a new netlink socket implementation, which by default does not | ||
| 139 | allow to send data to netlink groups other than 1. | ||
| 140 | So, if to use netlink socket (for example using connector) | ||
| 141 | with different group number userspace application must subscribe to | ||
| 142 | that group. It can be achieved by following pseudocode: | ||
| 143 | |||
| 144 | s = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_CONNECTOR); | ||
| 145 | |||
| 146 | l_local.nl_family = AF_NETLINK; | ||
| 147 | l_local.nl_groups = 12345; | ||
| 148 | l_local.nl_pid = 0; | ||
| 149 | |||
| 150 | if (bind(s, (struct sockaddr *)&l_local, sizeof(struct sockaddr_nl)) == -1) { | ||
| 151 | perror("bind"); | ||
| 152 | close(s); | ||
| 153 | return -1; | ||
| 154 | } | ||
| 155 | |||
| 156 | { | ||
| 157 | int on = l_local.nl_groups; | ||
| 158 | setsockopt(s, 270, 1, &on, sizeof(on)); | ||
| 159 | } | ||
| 160 | |||
| 161 | Where 270 above is SOL_NETLINK, and 1 is a NETLINK_ADD_MEMBERSHIP socket | ||
| 162 | option. To drop multicast subscription one should call above socket option | ||
| 163 | with NETLINK_DROP_MEMBERSHIP parameter which is defined as 0. | ||
| 164 | |||
| 165 | 2.6.14 netlink code only allows to select a group which is less or equal to | ||
| 166 | the maximum group number, which is used at netlink_kernel_create() time. | ||
| 167 | In case of connector it is CN_NETLINK_USERS + 0xf, so if you want to use | ||
| 168 | group number 12345, you must increment CN_NETLINK_USERS to that number. | ||
| 169 | Additional 0xf numbers are allocated to be used by non-in-kernel users. | ||
| 170 | |||
| 171 | Due to this limitation, group 0xffffffff does not work now, so one can | ||
| 172 | not use add/remove connector's group notifications, but as far as I know, | ||
| 173 | only cn_test.c test module used it. | ||
| 174 | |||
| 175 | Some work in netlink area is still being done, so things can be changed in | ||
| 176 | 2.6.15 timeframe, if it will happen, documentation will be updated for that | ||
| 177 | kernel. | ||
diff --git a/Documentation/dell_rbu.txt b/Documentation/dell_rbu.txt index 95d7f62e4dbc..941343a7a265 100644 --- a/Documentation/dell_rbu.txt +++ b/Documentation/dell_rbu.txt | |||
| @@ -35,6 +35,7 @@ The driver load creates the following directories under the /sys file system. | |||
| 35 | /sys/class/firmware/dell_rbu/data | 35 | /sys/class/firmware/dell_rbu/data |
| 36 | /sys/devices/platform/dell_rbu/image_type | 36 | /sys/devices/platform/dell_rbu/image_type |
| 37 | /sys/devices/platform/dell_rbu/data | 37 | /sys/devices/platform/dell_rbu/data |
| 38 | /sys/devices/platform/dell_rbu/packet_size | ||
| 38 | 39 | ||
| 39 | The driver supports two types of update mechanism; monolithic and packetized. | 40 | The driver supports two types of update mechanism; monolithic and packetized. |
| 40 | These update mechanism depends upon the BIOS currently running on the system. | 41 | These update mechanism depends upon the BIOS currently running on the system. |
| @@ -47,8 +48,26 @@ By default the driver uses monolithic memory for the update type. This can be | |||
| 47 | changed to packets during the driver load time by specifying the load | 48 | changed to packets during the driver load time by specifying the load |
| 48 | parameter image_type=packet. This can also be changed later as below | 49 | parameter image_type=packet. This can also be changed later as below |
| 49 | echo packet > /sys/devices/platform/dell_rbu/image_type | 50 | echo packet > /sys/devices/platform/dell_rbu/image_type |
| 50 | Also echoing either mono ,packet or init in to image_type will free up the | 51 | |
| 51 | memory allocated by the driver. | 52 | In packet update mode the packet size has to be given before any packets can |
| 53 | be downloaded. It is done as below | ||
| 54 | echo XXXX > /sys/devices/platform/dell_rbu/packet_size | ||
| 55 | In the packet update mechanism, the user neesd to create a new file having | ||
| 56 | packets of data arranged back to back. It can be done as follows | ||
| 57 | The user creates packets header, gets the chunk of the BIOS image and | ||
| 58 | placs it next to the packetheader; now, the packetheader + BIOS image chunk | ||
| 59 | added to geather should match the specified packet_size. This makes one | ||
| 60 | packet, the user needs to create more such packets out of the entire BIOS | ||
| 61 | image file and then arrange all these packets back to back in to one single | ||
| 62 | file. | ||
| 63 | This file is then copied to /sys/class/firmware/dell_rbu/data. | ||
| 64 | Once this file gets to the driver, the driver extracts packet_size data from | ||
| 65 | the file and spreads it accross the physical memory in contiguous packet_sized | ||
| 66 | space. | ||
| 67 | This method makes sure that all the packets get to the driver in a single operation. | ||
| 68 | |||
| 69 | In monolithic update the user simply get the BIOS image (.hdr file) and copies | ||
| 70 | to the data file as is without any change to the BIOS image itself. | ||
| 52 | 71 | ||
| 53 | Do the steps below to download the BIOS image. | 72 | Do the steps below to download the BIOS image. |
| 54 | 1) echo 1 > /sys/class/firmware/dell_rbu/loading | 73 | 1) echo 1 > /sys/class/firmware/dell_rbu/loading |
| @@ -58,7 +77,10 @@ Do the steps below to download the BIOS image. | |||
| 58 | The /sys/class/firmware/dell_rbu/ entries will remain till the following is | 77 | The /sys/class/firmware/dell_rbu/ entries will remain till the following is |
| 59 | done. | 78 | done. |
| 60 | echo -1 > /sys/class/firmware/dell_rbu/loading. | 79 | echo -1 > /sys/class/firmware/dell_rbu/loading. |
| 61 | Until this step is completed the drivr cannot be unloaded. | 80 | Until this step is completed the driver cannot be unloaded. |
| 81 | Also echoing either mono ,packet or init in to image_type will free up the | ||
| 82 | memory allocated by the driver. | ||
| 83 | |||
| 62 | If an user by accident executes steps 1 and 3 above without executing step 2; | 84 | If an user by accident executes steps 1 and 3 above without executing step 2; |
| 63 | it will make the /sys/class/firmware/dell_rbu/ entries to disappear. | 85 | it will make the /sys/class/firmware/dell_rbu/ entries to disappear. |
| 64 | The entries can be recreated by doing the following | 86 | The entries can be recreated by doing the following |
| @@ -66,15 +88,11 @@ echo init > /sys/devices/platform/dell_rbu/image_type | |||
| 66 | NOTE: echoing init in image_type does not change it original value. | 88 | NOTE: echoing init in image_type does not change it original value. |
| 67 | 89 | ||
| 68 | Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to | 90 | Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to |
| 69 | read back the image downloaded. This is useful in case of packet update | 91 | read back the image downloaded. |
| 70 | mechanism where the above steps 1,2,3 will repeated for every packet. | ||
| 71 | By reading the /sys/devices/platform/dell_rbu/data file all packet data | ||
| 72 | downloaded can be verified in a single file. | ||
| 73 | The packets are arranged in this file one after the other in a FIFO order. | ||
| 74 | 92 | ||
| 75 | NOTE: | 93 | NOTE: |
| 76 | This driver requires a patch for firmware_class.c which has the addition | 94 | This driver requires a patch for firmware_class.c which has the modified |
| 77 | of request_firmware_nowait_nohotplug function to wortk | 95 | request_firmware_nowait function. |
| 78 | Also after updating the BIOS image an user mdoe application neeeds to execute | 96 | Also after updating the BIOS image an user mdoe application neeeds to execute |
| 79 | code which message the BIOS update request to the BIOS. So on the next reboot | 97 | code which message the BIOS update request to the BIOS. So on the next reboot |
| 80 | the BIOS knows about the new image downloaded and it updates it self. | 98 | the BIOS knows about the new image downloaded and it updates it self. |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 7086f0a90d14..971589a9752d 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
| @@ -17,7 +17,7 @@ are specified on the kernel command line with the module name plus | |||
| 17 | 17 | ||
| 18 | usbcore.blinkenlights=1 | 18 | usbcore.blinkenlights=1 |
| 19 | 19 | ||
| 20 | The text in square brackets at the beginning of the description state the | 20 | The text in square brackets at the beginning of the description states the |
| 21 | restrictions on the kernel for the said kernel parameter to be valid. The | 21 | restrictions on the kernel for the said kernel parameter to be valid. The |
| 22 | restrictions referred to are that the relevant option is valid if: | 22 | restrictions referred to are that the relevant option is valid if: |
| 23 | 23 | ||
| @@ -27,8 +27,8 @@ restrictions referred to are that the relevant option is valid if: | |||
| 27 | APM Advanced Power Management support is enabled. | 27 | APM Advanced Power Management support is enabled. |
| 28 | AX25 Appropriate AX.25 support is enabled. | 28 | AX25 Appropriate AX.25 support is enabled. |
| 29 | CD Appropriate CD support is enabled. | 29 | CD Appropriate CD support is enabled. |
| 30 | DEVFS devfs support is enabled. | 30 | DEVFS devfs support is enabled. |
| 31 | DRM Direct Rendering Management support is enabled. | 31 | DRM Direct Rendering Management support is enabled. |
| 32 | EDD BIOS Enhanced Disk Drive Services (EDD) is enabled | 32 | EDD BIOS Enhanced Disk Drive Services (EDD) is enabled |
| 33 | EFI EFI Partitioning (GPT) is enabled | 33 | EFI EFI Partitioning (GPT) is enabled |
| 34 | EIDE EIDE/ATAPI support is enabled. | 34 | EIDE EIDE/ATAPI support is enabled. |
| @@ -71,7 +71,7 @@ restrictions referred to are that the relevant option is valid if: | |||
| 71 | SERIAL Serial support is enabled. | 71 | SERIAL Serial support is enabled. |
| 72 | SMP The kernel is an SMP kernel. | 72 | SMP The kernel is an SMP kernel. |
| 73 | SPARC Sparc architecture is enabled. | 73 | SPARC Sparc architecture is enabled. |
| 74 | SWSUSP Software suspension is enabled. | 74 | SWSUSP Software suspend is enabled. |
| 75 | TS Appropriate touchscreen support is enabled. | 75 | TS Appropriate touchscreen support is enabled. |
| 76 | USB USB support is enabled. | 76 | USB USB support is enabled. |
| 77 | USBHID USB Human Interface Device support is enabled. | 77 | USBHID USB Human Interface Device support is enabled. |
| @@ -105,13 +105,13 @@ running once the system is up. | |||
| 105 | See header of drivers/scsi/53c7xx.c. | 105 | See header of drivers/scsi/53c7xx.c. |
| 106 | See also Documentation/scsi/ncr53c7xx.txt. | 106 | See also Documentation/scsi/ncr53c7xx.txt. |
| 107 | 107 | ||
| 108 | acpi= [HW,ACPI] Advanced Configuration and Power Interface | 108 | acpi= [HW,ACPI] Advanced Configuration and Power Interface |
| 109 | Format: { force | off | ht | strict } | 109 | Format: { force | off | ht | strict | noirq } |
| 110 | force -- enable ACPI if default was off | 110 | force -- enable ACPI if default was off |
| 111 | off -- disable ACPI if default was on | 111 | off -- disable ACPI if default was on |
| 112 | noirq -- do not use ACPI for IRQ routing | 112 | noirq -- do not use ACPI for IRQ routing |
| 113 | ht -- run only enough ACPI to enable Hyper Threading | 113 | ht -- run only enough ACPI to enable Hyper Threading |
| 114 | strict -- Be less tolerant of platforms that are not | 114 | strict -- Be less tolerant of platforms that are not |
| 115 | strictly ACPI specification compliant. | 115 | strictly ACPI specification compliant. |
| 116 | 116 | ||
| 117 | See also Documentation/pm.txt, pci=noacpi | 117 | See also Documentation/pm.txt, pci=noacpi |
| @@ -119,20 +119,23 @@ running once the system is up. | |||
| 119 | acpi_sleep= [HW,ACPI] Sleep options | 119 | acpi_sleep= [HW,ACPI] Sleep options |
| 120 | Format: { s3_bios, s3_mode } | 120 | Format: { s3_bios, s3_mode } |
| 121 | See Documentation/power/video.txt | 121 | See Documentation/power/video.txt |
| 122 | 122 | ||
| 123 | acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode | 123 | acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode |
| 124 | Format: { level | edge | high | low } | 124 | Format: { level | edge | high | low } |
| 125 | 125 | ||
| 126 | acpi_irq_balance [HW,ACPI] ACPI will balance active IRQs | 126 | acpi_irq_balance [HW,ACPI] |
| 127 | default in APIC mode | 127 | ACPI will balance active IRQs |
| 128 | default in APIC mode | ||
| 128 | 129 | ||
| 129 | acpi_irq_nobalance [HW,ACPI] ACPI will not move active IRQs (default) | 130 | acpi_irq_nobalance [HW,ACPI] |
| 130 | default in PIC mode | 131 | ACPI will not move active IRQs (default) |
| 132 | default in PIC mode | ||
| 131 | 133 | ||
| 132 | acpi_irq_pci= [HW,ACPI] If irq_balance, Clear listed IRQs for use by PCI | 134 | acpi_irq_pci= [HW,ACPI] If irq_balance, clear listed IRQs for |
| 135 | use by PCI | ||
| 133 | Format: <irq>,<irq>... | 136 | Format: <irq>,<irq>... |
| 134 | 137 | ||
| 135 | acpi_irq_isa= [HW,ACPI] If irq_balance, Mark listed IRQs used by ISA | 138 | acpi_irq_isa= [HW,ACPI] If irq_balance, mark listed IRQs used by ISA |
| 136 | Format: <irq>,<irq>... | 139 | Format: <irq>,<irq>... |
| 137 | 140 | ||
| 138 | acpi_osi= [HW,ACPI] empty param disables _OSI | 141 | acpi_osi= [HW,ACPI] empty param disables _OSI |
| @@ -145,14 +148,14 @@ running once the system is up. | |||
| 145 | 148 | ||
| 146 | acpi_dbg_layer= [HW,ACPI] | 149 | acpi_dbg_layer= [HW,ACPI] |
| 147 | Format: <int> | 150 | Format: <int> |
| 148 | Each bit of the <int> indicates an acpi debug layer, | 151 | Each bit of the <int> indicates an ACPI debug layer, |
| 149 | 1: enable, 0: disable. It is useful for boot time | 152 | 1: enable, 0: disable. It is useful for boot time |
| 150 | debugging. After system has booted up, it can be set | 153 | debugging. After system has booted up, it can be set |
| 151 | via /proc/acpi/debug_layer. | 154 | via /proc/acpi/debug_layer. |
| 152 | 155 | ||
| 153 | acpi_dbg_level= [HW,ACPI] | 156 | acpi_dbg_level= [HW,ACPI] |
| 154 | Format: <int> | 157 | Format: <int> |
| 155 | Each bit of the <int> indicates an acpi debug level, | 158 | Each bit of the <int> indicates an ACPI debug level, |
| 156 | 1: enable, 0: disable. It is useful for boot time | 159 | 1: enable, 0: disable. It is useful for boot time |
| 157 | debugging. After system has booted up, it can be set | 160 | debugging. After system has booted up, it can be set |
| 158 | via /proc/acpi/debug_level. | 161 | via /proc/acpi/debug_level. |
| @@ -161,12 +164,13 @@ running once the system is up. | |||
| 161 | 164 | ||
| 162 | acpi_generic_hotkey [HW,ACPI] | 165 | acpi_generic_hotkey [HW,ACPI] |
| 163 | Allow consolidated generic hotkey driver to | 166 | Allow consolidated generic hotkey driver to |
| 164 | over-ride platform specific driver. | 167 | override platform specific driver. |
| 165 | See also Documentation/acpi-hotkey.txt. | 168 | See also Documentation/acpi-hotkey.txt. |
| 166 | 169 | ||
| 167 | enable_timer_pin_1 [i386,x86-64] | 170 | enable_timer_pin_1 [i386,x86-64] |
| 168 | Enable PIN 1 of APIC timer | 171 | Enable PIN 1 of APIC timer |
| 169 | Can be useful to work around chipset bugs (in particular on some ATI chipsets) | 172 | Can be useful to work around chipset bugs |
| 173 | (in particular on some ATI chipsets). | ||
| 170 | The kernel tries to set a reasonable default. | 174 | The kernel tries to set a reasonable default. |
| 171 | 175 | ||
| 172 | disable_timer_pin_1 [i386,x86-64] | 176 | disable_timer_pin_1 [i386,x86-64] |
| @@ -182,7 +186,7 @@ running once the system is up. | |||
| 182 | 186 | ||
| 183 | adlib= [HW,OSS] | 187 | adlib= [HW,OSS] |
| 184 | Format: <io> | 188 | Format: <io> |
| 185 | 189 | ||
| 186 | advansys= [HW,SCSI] | 190 | advansys= [HW,SCSI] |
| 187 | See header of drivers/scsi/advansys.c. | 191 | See header of drivers/scsi/advansys.c. |
| 188 | 192 | ||
| @@ -192,7 +196,7 @@ running once the system is up. | |||
| 192 | aedsp16= [HW,OSS] Audio Excel DSP 16 | 196 | aedsp16= [HW,OSS] Audio Excel DSP 16 |
| 193 | Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq> | 197 | Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq> |
| 194 | See also header of sound/oss/aedsp16.c. | 198 | See also header of sound/oss/aedsp16.c. |
| 195 | 199 | ||
| 196 | aha152x= [HW,SCSI] | 200 | aha152x= [HW,SCSI] |
| 197 | See Documentation/scsi/aha152x.txt. | 201 | See Documentation/scsi/aha152x.txt. |
| 198 | 202 | ||
| @@ -205,10 +209,6 @@ running once the system is up. | |||
| 205 | aic79xx= [HW,SCSI] | 209 | aic79xx= [HW,SCSI] |
| 206 | See Documentation/scsi/aic79xx.txt. | 210 | See Documentation/scsi/aic79xx.txt. |
| 207 | 211 | ||
| 208 | AM53C974= [HW,SCSI] | ||
| 209 | Format: <host-scsi-id>,<target-scsi-id>,<max-rate>,<max-offset> | ||
| 210 | See also header of drivers/scsi/AM53C974.c. | ||
| 211 | |||
| 212 | amijoy.map= [HW,JOY] Amiga joystick support | 212 | amijoy.map= [HW,JOY] Amiga joystick support |
| 213 | Map of devices attached to JOY0DAT and JOY1DAT | 213 | Map of devices attached to JOY0DAT and JOY1DAT |
| 214 | Format: <a>,<b> | 214 | Format: <a>,<b> |
| @@ -219,23 +219,24 @@ running once the system is up. | |||
| 219 | connected to one of 16 gameports | 219 | connected to one of 16 gameports |
| 220 | Format: <type1>,<type2>,..<type16> | 220 | Format: <type1>,<type2>,..<type16> |
| 221 | 221 | ||
| 222 | apc= [HW,SPARC] Power management functions (SPARCstation-4/5 + deriv.) | 222 | apc= [HW,SPARC] |
| 223 | Power management functions (SPARCstation-4/5 + deriv.) | ||
| 223 | Format: noidle | 224 | Format: noidle |
| 224 | Disable APC CPU standby support. SPARCstation-Fox does | 225 | Disable APC CPU standby support. SPARCstation-Fox does |
| 225 | not play well with APC CPU idle - disable it if you have | 226 | not play well with APC CPU idle - disable it if you have |
| 226 | APC and your system crashes randomly. | 227 | APC and your system crashes randomly. |
| 227 | 228 | ||
| 228 | apic= [APIC,i386] Change the output verbosity whilst booting | 229 | apic= [APIC,i386] Change the output verbosity whilst booting |
| 229 | Format: { quiet (default) | verbose | debug } | 230 | Format: { quiet (default) | verbose | debug } |
| 230 | Change the amount of debugging information output | 231 | Change the amount of debugging information output |
| 231 | when initialising the APIC and IO-APIC components. | 232 | when initialising the APIC and IO-APIC components. |
| 232 | 233 | ||
| 233 | apm= [APM] Advanced Power Management | 234 | apm= [APM] Advanced Power Management |
| 234 | See header of arch/i386/kernel/apm.c. | 235 | See header of arch/i386/kernel/apm.c. |
| 235 | 236 | ||
| 236 | applicom= [HW] | 237 | applicom= [HW] |
| 237 | Format: <mem>,<irq> | 238 | Format: <mem>,<irq> |
| 238 | 239 | ||
| 239 | arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards | 240 | arcrimi= [HW,NET] ARCnet - "RIM I" (entirely mem-mapped) cards |
| 240 | Format: <io>,<irq>,<nodeID> | 241 | Format: <io>,<irq>,<nodeID> |
| 241 | 242 | ||
| @@ -250,38 +251,40 @@ running once the system is up. | |||
| 250 | 251 | ||
| 251 | atkbd.reset= [HW] Reset keyboard during initialization | 252 | atkbd.reset= [HW] Reset keyboard during initialization |
| 252 | 253 | ||
| 253 | atkbd.set= [HW] Select keyboard code set | 254 | atkbd.set= [HW] Select keyboard code set |
| 254 | Format: <int> (2 = AT (default) 3 = PS/2) | 255 | Format: <int> (2 = AT (default), 3 = PS/2) |
| 255 | 256 | ||
| 256 | atkbd.scroll= [HW] Enable scroll wheel on MS Office and similar | 257 | atkbd.scroll= [HW] Enable scroll wheel on MS Office and similar |
| 257 | keyboards | 258 | keyboards |
| 258 | 259 | ||
| 259 | atkbd.softraw= [HW] Choose between synthetic and real raw mode | 260 | atkbd.softraw= [HW] Choose between synthetic and real raw mode |
| 260 | Format: <bool> (0 = real, 1 = synthetic (default)) | 261 | Format: <bool> (0 = real, 1 = synthetic (default)) |
| 261 | 262 | ||
| 262 | atkbd.softrepeat= | 263 | atkbd.softrepeat= [HW] |
| 263 | [HW] Use software keyboard repeat | 264 | Use software keyboard repeat |
| 264 | 265 | ||
| 265 | autotest [IA64] | 266 | autotest [IA64] |
| 266 | 267 | ||
| 267 | awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth | 268 | awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth |
| 268 | Format: <io>,<memsize>,<isapnp> | 269 | Format: <io>,<memsize>,<isapnp> |
| 269 | 270 | ||
| 270 | aztcd= [HW,CD] Aztech CD268 CDROM driver | 271 | aztcd= [HW,CD] Aztech CD268 CDROM driver |
| 271 | Format: <io>,0x79 (?) | 272 | Format: <io>,0x79 (?) |
| 272 | 273 | ||
| 273 | baycom_epp= [HW,AX25] | 274 | baycom_epp= [HW,AX25] |
| 274 | Format: <io>,<mode> | 275 | Format: <io>,<mode> |
| 275 | 276 | ||
| 276 | baycom_par= [HW,AX25] BayCom Parallel Port AX.25 Modem | 277 | baycom_par= [HW,AX25] BayCom Parallel Port AX.25 Modem |
| 277 | Format: <io>,<mode> | 278 | Format: <io>,<mode> |
| 278 | See header of drivers/net/hamradio/baycom_par.c. | 279 | See header of drivers/net/hamradio/baycom_par.c. |
| 279 | 280 | ||
| 280 | baycom_ser_fdx= [HW,AX25] BayCom Serial Port AX.25 Modem (Full Duplex Mode) | 281 | baycom_ser_fdx= [HW,AX25] |
| 282 | BayCom Serial Port AX.25 Modem (Full Duplex Mode) | ||
| 281 | Format: <io>,<irq>,<mode>[,<baud>] | 283 | Format: <io>,<irq>,<mode>[,<baud>] |
| 282 | See header of drivers/net/hamradio/baycom_ser_fdx.c. | 284 | See header of drivers/net/hamradio/baycom_ser_fdx.c. |
| 283 | 285 | ||
| 284 | baycom_ser_hdx= [HW,AX25] BayCom Serial Port AX.25 Modem (Half Duplex Mode) | 286 | baycom_ser_hdx= [HW,AX25] |
| 287 | BayCom Serial Port AX.25 Modem (Half Duplex Mode) | ||
| 285 | Format: <io>,<irq>,<mode> | 288 | Format: <io>,<irq>,<mode> |
| 286 | See header of drivers/net/hamradio/baycom_ser_hdx.c. | 289 | See header of drivers/net/hamradio/baycom_ser_hdx.c. |
| 287 | 290 | ||
| @@ -292,7 +295,8 @@ running once the system is up. | |||
| 292 | blkmtd_count= | 295 | blkmtd_count= |
| 293 | 296 | ||
| 294 | bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) | 297 | bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) |
| 295 | bttv.radio= Most important insmod options are available as kernel args too. | 298 | bttv.radio= Most important insmod options are available as |
| 299 | kernel args too. | ||
| 296 | bttv.pll= See Documentation/video4linux/bttv/Insmod-options | 300 | bttv.pll= See Documentation/video4linux/bttv/Insmod-options |
| 297 | bttv.tuner= and Documentation/video4linux/bttv/CARDLIST | 301 | bttv.tuner= and Documentation/video4linux/bttv/CARDLIST |
| 298 | 302 | ||
| @@ -318,15 +322,17 @@ running once the system is up. | |||
| 318 | checkreqprot [SELINUX] Set initial checkreqprot flag value. | 322 | checkreqprot [SELINUX] Set initial checkreqprot flag value. |
| 319 | Format: { "0" | "1" } | 323 | Format: { "0" | "1" } |
| 320 | See security/selinux/Kconfig help text. | 324 | See security/selinux/Kconfig help text. |
| 321 | 0 -- check protection applied by kernel (includes any implied execute protection). | 325 | 0 -- check protection applied by kernel (includes |
| 326 | any implied execute protection). | ||
| 322 | 1 -- check protection requested by application. | 327 | 1 -- check protection requested by application. |
| 323 | Default value is set via a kernel config option. | 328 | Default value is set via a kernel config option. |
| 324 | Value can be changed at runtime via /selinux/checkreqprot. | 329 | Value can be changed at runtime via |
| 325 | 330 | /selinux/checkreqprot. | |
| 326 | clock= [BUGS=IA-32, HW] gettimeofday timesource override. | 331 | |
| 332 | clock= [BUGS=IA-32,HW] gettimeofday timesource override. | ||
| 327 | Forces specified timesource (if avaliable) to be used | 333 | Forces specified timesource (if avaliable) to be used |
| 328 | when calculating gettimeofday(). If specicified timesource | 334 | when calculating gettimeofday(). If specicified |
| 329 | is not avalible, it defaults to PIT. | 335 | timesource is not avalible, it defaults to PIT. |
| 330 | Format: { pit | tsc | cyclone | pmtmr } | 336 | Format: { pit | tsc | cyclone | pmtmr } |
| 331 | 337 | ||
| 332 | hpet= [IA-32,HPET] option to disable HPET and use PIT. | 338 | hpet= [IA-32,HPET] option to disable HPET and use PIT. |
| @@ -336,17 +342,19 @@ running once the system is up. | |||
| 336 | Format: { auto | [<io>,][<irq>] } | 342 | Format: { auto | [<io>,][<irq>] } |
| 337 | 343 | ||
| 338 | com20020= [HW,NET] ARCnet - COM20020 chipset | 344 | com20020= [HW,NET] ARCnet - COM20020 chipset |
| 339 | Format: <io>[,<irq>[,<nodeID>[,<backplane>[,<ckp>[,<timeout>]]]]] | 345 | Format: |
| 346 | <io>[,<irq>[,<nodeID>[,<backplane>[,<ckp>[,<timeout>]]]]] | ||
| 340 | 347 | ||
| 341 | com90io= [HW,NET] ARCnet - COM90xx chipset (IO-mapped buffers) | 348 | com90io= [HW,NET] ARCnet - COM90xx chipset (IO-mapped buffers) |
| 342 | Format: <io>[,<irq>] | 349 | Format: <io>[,<irq>] |
| 343 | 350 | ||
| 344 | com90xx= [HW,NET] ARCnet - COM90xx chipset (memory-mapped buffers) | 351 | com90xx= [HW,NET] |
| 352 | ARCnet - COM90xx chipset (memory-mapped buffers) | ||
| 345 | Format: <io>[,<irq>[,<memstart>]] | 353 | Format: <io>[,<irq>[,<memstart>]] |
| 346 | 354 | ||
| 347 | condev= [HW,S390] console device | 355 | condev= [HW,S390] console device |
| 348 | conmode= | 356 | conmode= |
| 349 | 357 | ||
| 350 | console= [KNL] Output console device and options. | 358 | console= [KNL] Output console device and options. |
| 351 | 359 | ||
| 352 | tty<n> Use the virtual console device <n>. | 360 | tty<n> Use the virtual console device <n>. |
| @@ -367,7 +375,8 @@ running once the system is up. | |||
| 367 | options are the same as for ttyS, above. | 375 | options are the same as for ttyS, above. |
| 368 | 376 | ||
| 369 | cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver | 377 | cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver |
| 370 | Format: <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] | 378 | Format: |
| 379 | <first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>] | ||
| 371 | 380 | ||
| 372 | cpia_pp= [HW,PPT] | 381 | cpia_pp= [HW,PPT] |
| 373 | Format: { parport<nr> | auto | none } | 382 | Format: { parport<nr> | auto | none } |
| @@ -384,10 +393,10 @@ running once the system is up. | |||
| 384 | 393 | ||
| 385 | cs89x0_media= [HW,NET] | 394 | cs89x0_media= [HW,NET] |
| 386 | Format: { rj45 | aui | bnc } | 395 | Format: { rj45 | aui | bnc } |
| 387 | 396 | ||
| 388 | cyclades= [HW,SERIAL] Cyclades multi-serial port adapter. | 397 | cyclades= [HW,SERIAL] Cyclades multi-serial port adapter. |
| 389 | 398 | ||
| 390 | dasd= [HW,NET] | 399 | dasd= [HW,NET] |
| 391 | See header of drivers/s390/block/dasd_devmap.c. | 400 | See header of drivers/s390/block/dasd_devmap.c. |
| 392 | 401 | ||
| 393 | db9.dev[2|3]= [HW,JOY] Multisystem joystick support via parallel port | 402 | db9.dev[2|3]= [HW,JOY] Multisystem joystick support via parallel port |
| @@ -406,7 +415,7 @@ running once the system is up. | |||
| 406 | 415 | ||
| 407 | dhash_entries= [KNL] | 416 | dhash_entries= [KNL] |
| 408 | Set number of hash buckets for dentry cache. | 417 | Set number of hash buckets for dentry cache. |
| 409 | 418 | ||
| 410 | digi= [HW,SERIAL] | 419 | digi= [HW,SERIAL] |
| 411 | IO parameters + enable/disable command. | 420 | IO parameters + enable/disable command. |
| 412 | 421 | ||
| @@ -424,11 +433,11 @@ running once the system is up. | |||
| 424 | 433 | ||
| 425 | dtc3181e= [HW,SCSI] | 434 | dtc3181e= [HW,SCSI] |
| 426 | 435 | ||
| 427 | earlyprintk= [IA-32, X86-64] | 436 | earlyprintk= [IA-32,X86-64] |
| 428 | earlyprintk=vga | 437 | earlyprintk=vga |
| 429 | earlyprintk=serial[,ttySn[,baudrate]] | 438 | earlyprintk=serial[,ttySn[,baudrate]] |
| 430 | 439 | ||
| 431 | Append ,keep to not disable it when the real console | 440 | Append ",keep" to not disable it when the real console |
| 432 | takes over. | 441 | takes over. |
| 433 | 442 | ||
| 434 | Only vga or serial at a time, not both. | 443 | Only vga or serial at a time, not both. |
| @@ -451,7 +460,7 @@ running once the system is up. | |||
| 451 | Format: {"of[f]" | "sk[ipmbr]"} | 460 | Format: {"of[f]" | "sk[ipmbr]"} |
| 452 | See comment in arch/i386/boot/edd.S | 461 | See comment in arch/i386/boot/edd.S |
| 453 | 462 | ||
| 454 | eicon= [HW,ISDN] | 463 | eicon= [HW,ISDN] |
| 455 | Format: <id>,<membase>,<irq> | 464 | Format: <id>,<membase>,<irq> |
| 456 | 465 | ||
| 457 | eisa_irq_edge= [PARISC,HW] | 466 | eisa_irq_edge= [PARISC,HW] |
| @@ -462,12 +471,13 @@ running once the system is up. | |||
| 462 | arch/i386/kernel/cpu/cpufreq/elanfreq.c. | 471 | arch/i386/kernel/cpu/cpufreq/elanfreq.c. |
| 463 | 472 | ||
| 464 | elevator= [IOSCHED] | 473 | elevator= [IOSCHED] |
| 465 | Format: {"as"|"cfq"|"deadline"|"noop"} | 474 | Format: {"as" | "cfq" | "deadline" | "noop"} |
| 466 | See Documentation/block/as-iosched.txt | 475 | See Documentation/block/as-iosched.txt and |
| 467 | and Documentation/block/deadline-iosched.txt for details. | 476 | Documentation/block/deadline-iosched.txt for details. |
| 477 | |||
| 468 | elfcorehdr= [IA-32] | 478 | elfcorehdr= [IA-32] |
| 469 | Specifies physical address of start of kernel core image | 479 | Specifies physical address of start of kernel core |
| 470 | elf header. | 480 | image elf header. |
| 471 | See Documentation/kdump.txt for details. | 481 | See Documentation/kdump.txt for details. |
| 472 | 482 | ||
| 473 | enforcing [SELINUX] Set initial enforcing status. | 483 | enforcing [SELINUX] Set initial enforcing status. |
| @@ -485,7 +495,7 @@ running once the system is up. | |||
| 485 | es1371= [HW,OSS] | 495 | es1371= [HW,OSS] |
| 486 | Format: <spdif>,[<nomix>,[<amplifier>]] | 496 | Format: <spdif>,[<nomix>,[<amplifier>]] |
| 487 | See also header of sound/oss/es1371.c. | 497 | See also header of sound/oss/es1371.c. |
| 488 | 498 | ||
| 489 | ether= [HW,NET] Ethernet cards parameters | 499 | ether= [HW,NET] Ethernet cards parameters |
| 490 | This option is obsoleted by the "netdev=" option, which | 500 | This option is obsoleted by the "netdev=" option, which |
| 491 | has equivalent usage. See its documentation for details. | 501 | has equivalent usage. See its documentation for details. |
| @@ -526,12 +536,13 @@ running once the system is up. | |||
| 526 | 536 | ||
| 527 | gus= [HW,OSS] | 537 | gus= [HW,OSS] |
| 528 | Format: <io>,<irq>,<dma>,<dma16> | 538 | Format: <io>,<irq>,<dma>,<dma16> |
| 529 | 539 | ||
| 530 | gvp11= [HW,SCSI] | 540 | gvp11= [HW,SCSI] |
| 531 | 541 | ||
| 532 | hashdist= [KNL,NUMA] Large hashes allocated during boot | 542 | hashdist= [KNL,NUMA] Large hashes allocated during boot |
| 533 | are distributed across NUMA nodes. Defaults on | 543 | are distributed across NUMA nodes. Defaults on |
| 534 | for IA-64, off otherwise. | 544 | for IA-64, off otherwise. |
| 545 | Format: 0 | 1 (for off | on) | ||
| 535 | 546 | ||
| 536 | hcl= [IA-64] SGI's Hardware Graph compatibility layer | 547 | hcl= [IA-64] SGI's Hardware Graph compatibility layer |
| 537 | 548 | ||
| @@ -595,13 +606,13 @@ running once the system is up. | |||
| 595 | ide?= [HW] (E)IDE subsystem | 606 | ide?= [HW] (E)IDE subsystem |
| 596 | Format: ide?=noprobe or chipset specific parameters. | 607 | Format: ide?=noprobe or chipset specific parameters. |
| 597 | See Documentation/ide.txt. | 608 | See Documentation/ide.txt. |
| 598 | 609 | ||
| 599 | idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed | 610 | idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed |
| 600 | See Documentation/ide.txt. | 611 | See Documentation/ide.txt. |
| 601 | 612 | ||
| 602 | idle= [HW] | 613 | idle= [HW] |
| 603 | Format: idle=poll or idle=halt | 614 | Format: idle=poll or idle=halt |
| 604 | 615 | ||
| 605 | ihash_entries= [KNL] | 616 | ihash_entries= [KNL] |
| 606 | Set number of hash buckets for inode cache. | 617 | Set number of hash buckets for inode cache. |
| 607 | 618 | ||
| @@ -649,7 +660,7 @@ running once the system is up. | |||
| 649 | firmware running. | 660 | firmware running. |
| 650 | 661 | ||
| 651 | isapnp= [ISAPNP] | 662 | isapnp= [ISAPNP] |
| 652 | Format: <RDP>, <reset>, <pci_scan>, <verbosity> | 663 | Format: <RDP>,<reset>,<pci_scan>,<verbosity> |
| 653 | 664 | ||
| 654 | isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler. | 665 | isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler. |
| 655 | Format: <cpu number>,...,<cpu number> | 666 | Format: <cpu number>,...,<cpu number> |
| @@ -661,32 +672,33 @@ running once the system is up. | |||
| 661 | "number of CPUs in system - 1". | 672 | "number of CPUs in system - 1". |
| 662 | 673 | ||
| 663 | This option is the preferred way to isolate CPUs. The | 674 | This option is the preferred way to isolate CPUs. The |
| 664 | alternative - manually setting the CPU mask of all tasks | 675 | alternative -- manually setting the CPU mask of all |
| 665 | in the system can cause problems and suboptimal load | 676 | tasks in the system -- can cause problems and |
| 666 | balancer performance. | 677 | suboptimal load balancer performance. |
| 667 | 678 | ||
| 668 | isp16= [HW,CD] | 679 | isp16= [HW,CD] |
| 669 | Format: <io>,<irq>,<dma>,<setup> | 680 | Format: <io>,<irq>,<dma>,<setup> |
| 670 | 681 | ||
| 671 | iucv= [HW,NET] | 682 | iucv= [HW,NET] |
| 672 | 683 | ||
| 673 | js= [HW,JOY] Analog joystick | 684 | js= [HW,JOY] Analog joystick |
| 674 | See Documentation/input/joystick.txt. | 685 | See Documentation/input/joystick.txt. |
| 675 | 686 | ||
| 676 | keepinitrd [HW,ARM] | 687 | keepinitrd [HW,ARM] |
| 677 | 688 | ||
| 678 | kstack=N [IA-32, X86-64] Print N words from the kernel stack | 689 | kstack=N [IA-32,X86-64] Print N words from the kernel stack |
| 679 | in oops dumps. | 690 | in oops dumps. |
| 680 | 691 | ||
| 681 | l2cr= [PPC] | 692 | l2cr= [PPC] |
| 682 | 693 | ||
| 683 | lapic [IA-32,APIC] Enable the local APIC even if BIOS disabled it. | 694 | lapic [IA-32,APIC] Enable the local APIC even if BIOS |
| 695 | disabled it. | ||
| 684 | 696 | ||
| 685 | lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip | 697 | lasi= [HW,SCSI] PARISC LASI driver for the 53c700 chip |
| 686 | Format: addr:<io>,irq:<irq> | 698 | Format: addr:<io>,irq:<irq> |
| 687 | 699 | ||
| 688 | llsc*= [IA64] | 700 | llsc*= [IA64] See function print_params() in |
| 689 | See function print_params() in arch/ia64/sn/kernel/llsc4.c. | 701 | arch/ia64/sn/kernel/llsc4.c. |
| 690 | 702 | ||
| 691 | load_ramdisk= [RAM] List of ramdisks to load from floppy | 703 | load_ramdisk= [RAM] List of ramdisks to load from floppy |
| 692 | See Documentation/ramdisk.txt. | 704 | See Documentation/ramdisk.txt. |
| @@ -713,8 +725,9 @@ running once the system is up. | |||
| 713 | 7 (KERN_DEBUG) debug-level messages | 725 | 7 (KERN_DEBUG) debug-level messages |
| 714 | 726 | ||
| 715 | log_buf_len=n Sets the size of the printk ring buffer, in bytes. | 727 | log_buf_len=n Sets the size of the printk ring buffer, in bytes. |
| 716 | Format is n, nk, nM. n must be a power of two. The | 728 | Format: { n | nk | nM } |
| 717 | default is set in kernel config. | 729 | n must be a power of two. The default size |
| 730 | is set in the kernel config file. | ||
| 718 | 731 | ||
| 719 | lp=0 [LP] Specify parallel ports to use, e.g, | 732 | lp=0 [LP] Specify parallel ports to use, e.g, |
| 720 | lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses | 733 | lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses |
| @@ -750,23 +763,23 @@ running once the system is up. | |||
| 750 | ltpc= [NET] | 763 | ltpc= [NET] |
| 751 | Format: <io>,<irq>,<dma> | 764 | Format: <io>,<irq>,<dma> |
| 752 | 765 | ||
| 753 | mac5380= [HW,SCSI] | 766 | mac5380= [HW,SCSI] Format: |
| 754 | Format: <can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> | 767 | <can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> |
| 755 | 768 | ||
| 756 | mac53c9x= [HW,SCSI] | 769 | mac53c9x= [HW,SCSI] Format: |
| 757 | Format: <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> | 770 | <num_esps>,<disconnect>,<nosync>,<can_queue>,<cmd_per_lun>,<sg_tablesize>,<hostid>,<use_tags> |
| 758 | 771 | ||
| 759 | machvec= [IA64] | 772 | machvec= [IA64] Force the use of a particular machine-vector |
| 760 | Force the use of a particular machine-vector (machvec) in a generic | 773 | (machvec) in a generic kernel. |
| 761 | kernel. Example: machvec=hpzx1_swiotlb | 774 | Example: machvec=hpzx1_swiotlb |
| 762 | 775 | ||
| 763 | mad16= [HW,OSS] | 776 | mad16= [HW,OSS] Format: |
| 764 | Format: <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick> | 777 | <io>,<irq>,<dma>,<dma16>,<mpu_io>,<mpu_irq>,<joystick> |
| 765 | 778 | ||
| 766 | maui= [HW,OSS] | 779 | maui= [HW,OSS] |
| 767 | Format: <io>,<irq> | 780 | Format: <io>,<irq> |
| 768 | 781 | ||
| 769 | max_loop= [LOOP] Maximum number of loopback devices that can | 782 | max_loop= [LOOP] Maximum number of loopback devices that can |
| 770 | be mounted | 783 | be mounted |
| 771 | Format: <1-256> | 784 | Format: <1-256> |
| 772 | 785 | ||
| @@ -776,11 +789,11 @@ running once the system is up. | |||
| 776 | max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or | 789 | max_addr=[KMG] [KNL,BOOT,ia64] All physical memory greater than or |
| 777 | equal to this physical address is ignored. | 790 | equal to this physical address is ignored. |
| 778 | 791 | ||
| 779 | max_luns= [SCSI] Maximum number of LUNs to probe | 792 | max_luns= [SCSI] Maximum number of LUNs to probe. |
| 780 | Should be between 1 and 2^32-1. | 793 | Should be between 1 and 2^32-1. |
| 781 | 794 | ||
| 782 | max_report_luns= | 795 | max_report_luns= |
| 783 | [SCSI] Maximum number of LUNs received | 796 | [SCSI] Maximum number of LUNs received. |
| 784 | Should be between 1 and 16384. | 797 | Should be between 1 and 16384. |
| 785 | 798 | ||
| 786 | mca-pentium [BUGS=IA-32] | 799 | mca-pentium [BUGS=IA-32] |
| @@ -796,11 +809,11 @@ running once the system is up. | |||
| 796 | 809 | ||
| 797 | md= [HW] RAID subsystems devices and level | 810 | md= [HW] RAID subsystems devices and level |
| 798 | See Documentation/md.txt. | 811 | See Documentation/md.txt. |
| 799 | 812 | ||
| 800 | mdacon= [MDA] | 813 | mdacon= [MDA] |
| 801 | Format: <first>,<last> | 814 | Format: <first>,<last> |
| 802 | Specifies range of consoles to be captured by the MDA. | 815 | Specifies range of consoles to be captured by the MDA. |
| 803 | 816 | ||
| 804 | mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory | 817 | mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory |
| 805 | Amount of memory to be used when the kernel is not able | 818 | Amount of memory to be used when the kernel is not able |
| 806 | to see the whole system memory or for test. | 819 | to see the whole system memory or for test. |
| @@ -851,15 +864,15 @@ running once the system is up. | |||
| 851 | MTD_Partition= [MTD] | 864 | MTD_Partition= [MTD] |
| 852 | Format: <name>,<region-number>,<size>,<offset> | 865 | Format: <name>,<region-number>,<size>,<offset> |
| 853 | 866 | ||
| 854 | MTD_Region= [MTD] | 867 | MTD_Region= [MTD] Format: |
| 855 | Format: <name>,<region-number>[,<base>,<size>,<buswidth>,<altbuswidth>] | 868 | <name>,<region-number>[,<base>,<size>,<buswidth>,<altbuswidth>] |
| 856 | 869 | ||
| 857 | mtdparts= [MTD] | 870 | mtdparts= [MTD] |
| 858 | See drivers/mtd/cmdline.c. | 871 | See drivers/mtd/cmdline.c. |
| 859 | 872 | ||
| 860 | mtouchusb.raw_coordinates= | 873 | mtouchusb.raw_coordinates= |
| 861 | [HW] Make the MicroTouch USB driver use raw coordinates ('y', default) | 874 | [HW] Make the MicroTouch USB driver use raw coordinates |
| 862 | or cooked coordinates ('n') | 875 | ('y', default) or cooked coordinates ('n') |
| 863 | 876 | ||
| 864 | n2= [NET] SDL Inc. RISCom/N2 synchronous serial card | 877 | n2= [NET] SDL Inc. RISCom/N2 synchronous serial card |
| 865 | 878 | ||
| @@ -880,7 +893,9 @@ running once the system is up. | |||
| 880 | Format: <irq>,<io>,<mem_start>,<mem_end>,<name> | 893 | Format: <irq>,<io>,<mem_start>,<mem_end>,<name> |
| 881 | Note that mem_start is often overloaded to mean | 894 | Note that mem_start is often overloaded to mean |
| 882 | something different and driver-specific. | 895 | something different and driver-specific. |
| 883 | 896 | This usage is only documented in each driver source | |
| 897 | file if at all. | ||
| 898 | |||
| 884 | nfsaddrs= [NFS] | 899 | nfsaddrs= [NFS] |
| 885 | See Documentation/nfsroot.txt. | 900 | See Documentation/nfsroot.txt. |
| 886 | 901 | ||
| @@ -893,8 +908,8 @@ running once the system is up. | |||
| 893 | emulation library even if a 387 maths coprocessor | 908 | emulation library even if a 387 maths coprocessor |
| 894 | is present. | 909 | is present. |
| 895 | 910 | ||
| 896 | noalign [KNL,ARM] | 911 | noalign [KNL,ARM] |
| 897 | 912 | ||
| 898 | noapic [SMP,APIC] Tells the kernel to not make use of any | 913 | noapic [SMP,APIC] Tells the kernel to not make use of any |
| 899 | IOAPICs that may be present in the system. | 914 | IOAPICs that may be present in the system. |
| 900 | 915 | ||
| @@ -905,19 +920,19 @@ running once the system is up. | |||
| 905 | on "Classic" PPC cores. | 920 | on "Classic" PPC cores. |
| 906 | 921 | ||
| 907 | nocache [ARM] | 922 | nocache [ARM] |
| 908 | 923 | ||
| 909 | nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects. | 924 | nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects. |
| 910 | 925 | ||
| 911 | noexec [IA-64] | 926 | noexec [IA-64] |
| 912 | 927 | ||
| 913 | noexec [IA-32, X86-64] | 928 | noexec [IA-32,X86-64] |
| 914 | noexec=on: enable non-executable mappings (default) | 929 | noexec=on: enable non-executable mappings (default) |
| 915 | noexec=off: disable nn-executable mappings | 930 | noexec=off: disable nn-executable mappings |
| 916 | 931 | ||
| 917 | nofxsr [BUGS=IA-32] | 932 | nofxsr [BUGS=IA-32] |
| 918 | 933 | ||
| 919 | nohlt [BUGS=ARM] | 934 | nohlt [BUGS=ARM] |
| 920 | 935 | ||
| 921 | no-hlt [BUGS=IA-32] Tells the kernel that the hlt | 936 | no-hlt [BUGS=IA-32] Tells the kernel that the hlt |
| 922 | instruction doesn't work correctly and not to | 937 | instruction doesn't work correctly and not to |
| 923 | use it. | 938 | use it. |
| @@ -948,8 +963,9 @@ running once the system is up. | |||
| 948 | 963 | ||
| 949 | noresidual [PPC] Don't use residual data on PReP machines. | 964 | noresidual [PPC] Don't use residual data on PReP machines. |
| 950 | 965 | ||
| 951 | noresume [SWSUSP] Disables resume and restore original swap space. | 966 | noresume [SWSUSP] Disables resume and restores original swap |
| 952 | 967 | space. | |
| 968 | |||
| 953 | no-scroll [VGA] Disables scrollback. | 969 | no-scroll [VGA] Disables scrollback. |
| 954 | This is required for the Braillex ib80-piezo Braille | 970 | This is required for the Braillex ib80-piezo Braille |
| 955 | reader made by F.H. Papenmeier (Germany). | 971 | reader made by F.H. Papenmeier (Germany). |
| @@ -965,16 +981,16 @@ running once the system is up. | |||
| 965 | nousb [USB] Disable the USB subsystem | 981 | nousb [USB] Disable the USB subsystem |
| 966 | 982 | ||
| 967 | nowb [ARM] | 983 | nowb [ARM] |
| 968 | 984 | ||
| 969 | opl3= [HW,OSS] | 985 | opl3= [HW,OSS] |
| 970 | Format: <io> | 986 | Format: <io> |
| 971 | 987 | ||
| 972 | opl3sa= [HW,OSS] | 988 | opl3sa= [HW,OSS] |
| 973 | Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq> | 989 | Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq> |
| 974 | 990 | ||
| 975 | opl3sa2= [HW,OSS] | 991 | opl3sa2= [HW,OSS] Format: |
| 976 | Format: <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple] | 992 | <io>,<irq>,<dma>,<dma2>,<mss_io>,<mpu_io>,<ymode>,<loopback>[,<isapnp>,<multiple] |
| 977 | 993 | ||
| 978 | oprofile.timer= [HW] | 994 | oprofile.timer= [HW] |
| 979 | Use timer interrupt instead of performance counters | 995 | Use timer interrupt instead of performance counters |
| 980 | 996 | ||
| @@ -993,36 +1009,33 @@ running once the system is up. | |||
| 993 | Format: <parport#> | 1009 | Format: <parport#> |
| 994 | parkbd.mode= [HW] Parallel port keyboard adapter mode of operation, | 1010 | parkbd.mode= [HW] Parallel port keyboard adapter mode of operation, |
| 995 | 0 for XT, 1 for AT (default is AT). | 1011 | 0 for XT, 1 for AT (default is AT). |
| 996 | Format: <mode> | 1012 | Format: <mode> |
| 997 | 1013 | ||
| 998 | parport=0 [HW,PPT] Specify parallel ports. 0 disables. | 1014 | parport= [HW,PPT] Specify parallel ports. 0 disables. |
| 999 | parport=auto Use 'auto' to force the driver to use | 1015 | Format: { 0 | auto | 0xBBB[,IRQ[,DMA]] } |
| 1000 | parport=0xBBB[,IRQ[,DMA]] any IRQ/DMA settings detected (the | 1016 | Use 'auto' to force the driver to use any |
| 1001 | default is to ignore detected IRQ/DMA | 1017 | IRQ/DMA settings detected (the default is to |
| 1002 | settings because of possible | 1018 | ignore detected IRQ/DMA settings because of |
| 1003 | conflicts). You can specify the base | 1019 | possible conflicts). You can specify the base |
| 1004 | address, IRQ, and DMA settings; IRQ and | 1020 | address, IRQ, and DMA settings; IRQ and DMA |
| 1005 | DMA should be numbers, or 'auto' (for | 1021 | should be numbers, or 'auto' (for using detected |
| 1006 | using detected settings on that | 1022 | settings on that particular port), or 'nofifo' |
| 1007 | particular port), or 'nofifo' (to avoid | 1023 | (to avoid using a FIFO even if it is detected). |
| 1008 | using a FIFO even if it is detected). | 1024 | Parallel ports are assigned in the order they |
| 1009 | Parallel ports are assigned in the | 1025 | are specified on the command line, starting |
| 1010 | order they are specified on the command | 1026 | with parport0. |
| 1011 | line, starting with parport0. | 1027 | |
| 1012 | 1028 | parport_init_mode= [HW,PPT] | |
| 1013 | parport_init_mode= | 1029 | Configure VIA parallel port to operate in |
| 1014 | [HW,PPT] Configure VIA parallel port to | 1030 | a specific mode. This is necessary on Pegasos |
| 1015 | operate in specific mode. This is | 1031 | computer where firmware has no options for setting |
| 1016 | necessary on Pegasos computer where | 1032 | up parallel port mode and sets it to spp. |
| 1017 | firmware has no options for setting up | 1033 | Currently this function knows 686a and 8231 chips. |
| 1018 | parallel port mode and sets it to | ||
| 1019 | spp. Currently this function knows | ||
| 1020 | 686a and 8231 chips. | ||
| 1021 | Format: [spp|ps2|epp|ecp|ecpepp] | 1034 | Format: [spp|ps2|epp|ecp|ecpepp] |
| 1022 | 1035 | ||
| 1023 | pas2= [HW,OSS] | 1036 | pas2= [HW,OSS] Format: |
| 1024 | Format: <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16> | 1037 | <io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16> |
| 1025 | 1038 | ||
| 1026 | pas16= [HW,SCSI] | 1039 | pas16= [HW,SCSI] |
| 1027 | See header of drivers/scsi/pas16.c. | 1040 | See header of drivers/scsi/pas16.c. |
| 1028 | 1041 | ||
| @@ -1032,64 +1045,67 @@ running once the system is up. | |||
| 1032 | See header of drivers/block/paride/pcd.c. | 1045 | See header of drivers/block/paride/pcd.c. |
| 1033 | See also Documentation/paride.txt. | 1046 | See also Documentation/paride.txt. |
| 1034 | 1047 | ||
| 1035 | pci=option[,option...] [PCI] various PCI subsystem options: | 1048 | pci=option[,option...] [PCI] various PCI subsystem options: |
| 1036 | off [IA-32] don't probe for the PCI bus | 1049 | off [IA-32] don't probe for the PCI bus |
| 1037 | bios [IA-32] force use of PCI BIOS, don't access | 1050 | bios [IA-32] force use of PCI BIOS, don't access |
| 1038 | the hardware directly. Use this if your machine | 1051 | the hardware directly. Use this if your machine |
| 1039 | has a non-standard PCI host bridge. | 1052 | has a non-standard PCI host bridge. |
| 1040 | nobios [IA-32] disallow use of PCI BIOS, only direct | 1053 | nobios [IA-32] disallow use of PCI BIOS, only direct |
| 1041 | hardware access methods are allowed. Use this | 1054 | hardware access methods are allowed. Use this |
| 1042 | if you experience crashes upon bootup and you | 1055 | if you experience crashes upon bootup and you |
| 1043 | suspect they are caused by the BIOS. | 1056 | suspect they are caused by the BIOS. |
| 1044 | conf1 [IA-32] Force use of PCI Configuration Mechanism 1. | 1057 | conf1 [IA-32] Force use of PCI Configuration |
| 1045 | conf2 [IA-32] Force use of PCI Configuration Mechanism 2. | 1058 | Mechanism 1. |
| 1046 | nosort [IA-32] Don't sort PCI devices according to | 1059 | conf2 [IA-32] Force use of PCI Configuration |
| 1047 | order given by the PCI BIOS. This sorting is done | 1060 | Mechanism 2. |
| 1048 | to get a device order compatible with older kernels. | 1061 | nosort [IA-32] Don't sort PCI devices according to |
| 1049 | biosirq [IA-32] Use PCI BIOS calls to get the interrupt | 1062 | order given by the PCI BIOS. This sorting is |
| 1050 | routing table. These calls are known to be buggy | 1063 | done to get a device order compatible with |
| 1051 | on several machines and they hang the machine when used, | 1064 | older kernels. |
| 1052 | but on other computers it's the only way to get the | 1065 | biosirq [IA-32] Use PCI BIOS calls to get the interrupt |
| 1053 | interrupt routing table. Try this option if the kernel | 1066 | routing table. These calls are known to be buggy |
| 1054 | is unable to allocate IRQs or discover secondary PCI | 1067 | on several machines and they hang the machine |
| 1055 | buses on your motherboard. | 1068 | when used, but on other computers it's the only |
| 1056 | rom [IA-32] Assign address space to expansion ROMs. | 1069 | way to get the interrupt routing table. Try |
| 1057 | Use with caution as certain devices share address | 1070 | this option if the kernel is unable to allocate |
| 1058 | decoders between ROMs and other resources. | 1071 | IRQs or discover secondary PCI buses on your |
| 1059 | irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be assigned | 1072 | motherboard. |
| 1060 | automatically to PCI devices. You can make the kernel | 1073 | rom [IA-32] Assign address space to expansion ROMs. |
| 1061 | exclude IRQs of your ISA cards this way. | 1074 | Use with caution as certain devices share |
| 1075 | address decoders between ROMs and other | ||
| 1076 | resources. | ||
| 1077 | irqmask=0xMMMM [IA-32] Set a bit mask of IRQs allowed to be | ||
| 1078 | assigned automatically to PCI devices. You can | ||
| 1079 | make the kernel exclude IRQs of your ISA cards | ||
| 1080 | this way. | ||
| 1062 | pirqaddr=0xAAAAA [IA-32] Specify the physical address | 1081 | pirqaddr=0xAAAAA [IA-32] Specify the physical address |
| 1063 | of the PIRQ table (normally generated | 1082 | of the PIRQ table (normally generated |
| 1064 | by the BIOS) if it is outside the | 1083 | by the BIOS) if it is outside the |
| 1065 | F0000h-100000h range. | 1084 | F0000h-100000h range. |
| 1066 | lastbus=N [IA-32] Scan all buses till bus #N. Can be useful | 1085 | lastbus=N [IA-32] Scan all buses thru bus #N. Can be |
| 1067 | if the kernel is unable to find your secondary buses | 1086 | useful if the kernel is unable to find your |
| 1068 | and you want to tell it explicitly which ones they are. | 1087 | secondary buses and you want to tell it |
| 1069 | assign-busses [IA-32] Always assign all PCI bus | 1088 | explicitly which ones they are. |
| 1070 | numbers ourselves, overriding | 1089 | assign-busses [IA-32] Always assign all PCI bus |
| 1071 | whatever the firmware may have | 1090 | numbers ourselves, overriding |
| 1072 | done. | 1091 | whatever the firmware may have done. |
| 1073 | usepirqmask [IA-32] Honor the possible IRQ mask | 1092 | usepirqmask [IA-32] Honor the possible IRQ mask stored |
| 1074 | stored in the BIOS $PIR table. This is | 1093 | in the BIOS $PIR table. This is needed on |
| 1075 | needed on some systems with broken | 1094 | some systems with broken BIOSes, notably |
| 1076 | BIOSes, notably some HP Pavilion N5400 | 1095 | some HP Pavilion N5400 and Omnibook XE3 |
| 1077 | and Omnibook XE3 notebooks. This will | 1096 | notebooks. This will have no effect if ACPI |
| 1078 | have no effect if ACPI IRQ routing is | 1097 | IRQ routing is enabled. |
| 1079 | enabled. | 1098 | noacpi [IA-32] Do not use ACPI for IRQ routing |
| 1080 | noacpi [IA-32] Do not use ACPI for IRQ routing | 1099 | or for PCI scanning. |
| 1081 | or for PCI scanning. | 1100 | routeirq Do IRQ routing for all PCI devices. |
| 1082 | routeirq Do IRQ routing for all PCI devices. | 1101 | This is normally done in pci_enable_device(), |
| 1083 | This is normally done in pci_enable_device(), | 1102 | so this option is a temporary workaround |
| 1084 | so this option is a temporary workaround | 1103 | for broken drivers that don't call it. |
| 1085 | for broken drivers that don't call it. | 1104 | firmware [ARM] Do not re-enumerate the bus but instead |
| 1086 | 1105 | just use the configuration from the | |
| 1087 | firmware [ARM] Do not re-enumerate the bus but | 1106 | bootloader. This is currently used on |
| 1088 | instead just use the configuration | 1107 | IXP2000 systems where the bus has to be |
| 1089 | from the bootloader. This is currently | 1108 | configured a certain way for adjunct CPUs. |
| 1090 | used on IXP2000 systems where the | ||
| 1091 | bus has to be configured a certain way | ||
| 1092 | for adjunct CPUs. | ||
| 1093 | 1109 | ||
| 1094 | pcmv= [HW,PCMCIA] BadgePAD 4 | 1110 | pcmv= [HW,PCMCIA] BadgePAD 4 |
| 1095 | 1111 | ||
| @@ -1127,19 +1143,20 @@ running once the system is up. | |||
| 1127 | [ISAPNP] Exclude DMAs for the autoconfiguration | 1143 | [ISAPNP] Exclude DMAs for the autoconfiguration |
| 1128 | 1144 | ||
| 1129 | pnp_reserve_io= [ISAPNP] Exclude I/O ports for the autoconfiguration | 1145 | pnp_reserve_io= [ISAPNP] Exclude I/O ports for the autoconfiguration |
| 1130 | Ranges are in pairs (I/O port base and size). | 1146 | Ranges are in pairs (I/O port base and size). |
| 1131 | 1147 | ||
| 1132 | pnp_reserve_mem= | 1148 | pnp_reserve_mem= |
| 1133 | [ISAPNP] Exclude memory regions for the autoconfiguration | 1149 | [ISAPNP] Exclude memory regions for the |
| 1150 | autoconfiguration. | ||
| 1134 | Ranges are in pairs (memory base and size). | 1151 | Ranges are in pairs (memory base and size). |
| 1135 | 1152 | ||
| 1136 | profile= [KNL] Enable kernel profiling via /proc/profile | 1153 | profile= [KNL] Enable kernel profiling via /proc/profile |
| 1137 | { schedule | <number> } | 1154 | Format: [schedule,]<number> |
| 1138 | (param: schedule - profile schedule points} | 1155 | Param: "schedule" - profile schedule points. |
| 1139 | (param: profile step/bucket size as a power of 2 for | 1156 | Param: <number> - step/bucket size as a power of 2 for |
| 1140 | statistical time based profiling) | 1157 | statistical time based profiling. |
| 1141 | 1158 | ||
| 1142 | processor.max_cstate= [HW, ACPI] | 1159 | processor.max_cstate= [HW,ACPI] |
| 1143 | Limit processor to maximum C-state | 1160 | Limit processor to maximum C-state |
| 1144 | max_cstate=9 overrides any DMI blacklist limit. | 1161 | max_cstate=9 overrides any DMI blacklist limit. |
| 1145 | 1162 | ||
| @@ -1147,27 +1164,28 @@ running once the system is up. | |||
| 1147 | before loading. | 1164 | before loading. |
| 1148 | See Documentation/ramdisk.txt. | 1165 | See Documentation/ramdisk.txt. |
| 1149 | 1166 | ||
| 1150 | psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to | 1167 | psmouse.proto= [HW,MOUSE] Highest PS2 mouse protocol extension to |
| 1151 | probe for (bare|imps|exps|lifebook|any). | 1168 | probe for; one of (bare|imps|exps|lifebook|any). |
| 1152 | psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports | 1169 | psmouse.rate= [HW,MOUSE] Set desired mouse report rate, in reports |
| 1153 | per second. | 1170 | per second. |
| 1154 | psmouse.resetafter= | 1171 | psmouse.resetafter= [HW,MOUSE] |
| 1155 | [HW,MOUSE] Try to reset the device after so many bad packets | 1172 | Try to reset the device after so many bad packets |
| 1156 | (0 = never). | 1173 | (0 = never). |
| 1157 | psmouse.resolution= | 1174 | psmouse.resolution= |
| 1158 | [HW,MOUSE] Set desired mouse resolution, in dpi. | 1175 | [HW,MOUSE] Set desired mouse resolution, in dpi. |
| 1159 | psmouse.smartscroll= | 1176 | psmouse.smartscroll= |
| 1160 | [HW,MOUSE] Controls Logitech smartscroll autorepeat, | 1177 | [HW,MOUSE] Controls Logitech smartscroll autorepeat. |
| 1161 | 0 = disabled, 1 = enabled (default). | 1178 | 0 = disabled, 1 = enabled (default). |
| 1162 | 1179 | ||
| 1163 | pss= [HW,OSS] Personal Sound System (ECHO ESC614) | 1180 | pss= [HW,OSS] Personal Sound System (ECHO ESC614) |
| 1164 | Format: <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq> | 1181 | Format: |
| 1182 | <io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq> | ||
| 1165 | 1183 | ||
| 1166 | pt. [PARIDE] | 1184 | pt. [PARIDE] |
| 1167 | See Documentation/paride.txt. | 1185 | See Documentation/paride.txt. |
| 1168 | 1186 | ||
| 1169 | quiet= [KNL] Disable log messages | 1187 | quiet= [KNL] Disable log messages |
| 1170 | 1188 | ||
| 1171 | r128= [HW,DRM] | 1189 | r128= [HW,DRM] |
| 1172 | 1190 | ||
| 1173 | raid= [HW,RAID] | 1191 | raid= [HW,RAID] |
| @@ -1176,10 +1194,9 @@ running once the system is up. | |||
| 1176 | ramdisk= [RAM] Sizes of RAM disks in kilobytes [deprecated] | 1194 | ramdisk= [RAM] Sizes of RAM disks in kilobytes [deprecated] |
| 1177 | See Documentation/ramdisk.txt. | 1195 | See Documentation/ramdisk.txt. |
| 1178 | 1196 | ||
| 1179 | ramdisk_blocksize= | 1197 | ramdisk_blocksize= [RAM] |
| 1180 | [RAM] | ||
| 1181 | See Documentation/ramdisk.txt. | 1198 | See Documentation/ramdisk.txt. |
| 1182 | 1199 | ||
| 1183 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes | 1200 | ramdisk_size= [RAM] Sizes of RAM disks in kilobytes |
| 1184 | New name for the ramdisk parameter. | 1201 | New name for the ramdisk parameter. |
| 1185 | See Documentation/ramdisk.txt. | 1202 | See Documentation/ramdisk.txt. |
| @@ -1195,7 +1212,8 @@ running once the system is up. | |||
| 1195 | 1212 | ||
| 1196 | reserve= [KNL,BUGS] Force the kernel to ignore some iomem area | 1213 | reserve= [KNL,BUGS] Force the kernel to ignore some iomem area |
| 1197 | 1214 | ||
| 1198 | resume= [SWSUSP] Specify the partition device for software suspension | 1215 | resume= [SWSUSP] |
| 1216 | Specify the partition device for software suspend | ||
| 1199 | 1217 | ||
| 1200 | rhash_entries= [KNL,NET] | 1218 | rhash_entries= [KNL,NET] |
| 1201 | Set number of hash buckets for route cache | 1219 | Set number of hash buckets for route cache |
| @@ -1225,7 +1243,7 @@ running once the system is up. | |||
| 1225 | Format: <io>,<irq>,<dma>,<dma2> | 1243 | Format: <io>,<irq>,<dma>,<dma2> |
| 1226 | 1244 | ||
| 1227 | sbni= [NET] Granch SBNI12 leased line adapter | 1245 | sbni= [NET] Granch SBNI12 leased line adapter |
| 1228 | 1246 | ||
| 1229 | sbpcd= [HW,CD] Soundblaster CD adapter | 1247 | sbpcd= [HW,CD] Soundblaster CD adapter |
| 1230 | Format: <io>,<type> | 1248 | Format: <io>,<type> |
| 1231 | See a comment before function sbpcd_setup() in | 1249 | See a comment before function sbpcd_setup() in |
| @@ -1258,21 +1276,20 @@ running once the system is up. | |||
| 1258 | 1276 | ||
| 1259 | serialnumber [BUGS=IA-32] | 1277 | serialnumber [BUGS=IA-32] |
| 1260 | 1278 | ||
| 1261 | sg_def_reserved_size= | 1279 | sg_def_reserved_size= [SCSI] |
| 1262 | [SCSI] | 1280 | |
| 1263 | |||
| 1264 | sgalaxy= [HW,OSS] | 1281 | sgalaxy= [HW,OSS] |
| 1265 | Format: <io>,<irq>,<dma>,<dma2>,<sgbase> | 1282 | Format: <io>,<irq>,<dma>,<dma2>,<sgbase> |
| 1266 | 1283 | ||
| 1267 | shapers= [NET] | 1284 | shapers= [NET] |
| 1268 | Maximal number of shapers. | 1285 | Maximal number of shapers. |
| 1269 | 1286 | ||
| 1270 | sim710= [SCSI,HW] | 1287 | sim710= [SCSI,HW] |
| 1271 | See header of drivers/scsi/sim710.c. | 1288 | See header of drivers/scsi/sim710.c. |
| 1272 | 1289 | ||
| 1273 | simeth= [IA-64] | 1290 | simeth= [IA-64] |
| 1274 | simscsi= | 1291 | simscsi= |
| 1275 | 1292 | ||
| 1276 | sjcd= [HW,CD] | 1293 | sjcd= [HW,CD] |
| 1277 | Format: <io>,<irq>,<dma> | 1294 | Format: <io>,<irq>,<dma> |
| 1278 | See header of drivers/cdrom/sjcd.c. | 1295 | See header of drivers/cdrom/sjcd.c. |
| @@ -1403,10 +1420,10 @@ running once the system is up. | |||
| 1403 | snd-wavefront= [HW,ALSA] | 1420 | snd-wavefront= [HW,ALSA] |
| 1404 | 1421 | ||
| 1405 | snd-ymfpci= [HW,ALSA] | 1422 | snd-ymfpci= [HW,ALSA] |
| 1406 | 1423 | ||
| 1407 | sonicvibes= [HW,OSS] | 1424 | sonicvibes= [HW,OSS] |
| 1408 | Format: <reverb> | 1425 | Format: <reverb> |
| 1409 | 1426 | ||
| 1410 | sonycd535= [HW,CD] | 1427 | sonycd535= [HW,CD] |
| 1411 | Format: <io>[,<irq>] | 1428 | Format: <io>[,<irq>] |
| 1412 | 1429 | ||
| @@ -1423,7 +1440,7 @@ running once the system is up. | |||
| 1423 | 1440 | ||
| 1424 | sscape= [HW,OSS] | 1441 | sscape= [HW,OSS] |
| 1425 | Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq> | 1442 | Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq> |
| 1426 | 1443 | ||
| 1427 | st= [HW,SCSI] SCSI tape parameters (buffers, etc.) | 1444 | st= [HW,SCSI] SCSI tape parameters (buffers, etc.) |
| 1428 | See Documentation/scsi/st.txt. | 1445 | See Documentation/scsi/st.txt. |
| 1429 | 1446 | ||
| @@ -1446,7 +1463,7 @@ running once the system is up. | |||
| 1446 | stram_swap= [HW,M68k] | 1463 | stram_swap= [HW,M68k] |
| 1447 | 1464 | ||
| 1448 | swiotlb= [IA-64] Number of I/O TLB slabs | 1465 | swiotlb= [IA-64] Number of I/O TLB slabs |
| 1449 | 1466 | ||
| 1450 | switches= [HW,M68k] | 1467 | switches= [HW,M68k] |
| 1451 | 1468 | ||
| 1452 | sym53c416= [HW,SCSI] | 1469 | sym53c416= [HW,SCSI] |
| @@ -1479,14 +1496,16 @@ running once the system is up. | |||
| 1479 | tp720= [HW,PS2] | 1496 | tp720= [HW,PS2] |
| 1480 | 1497 | ||
| 1481 | trix= [HW,OSS] MediaTrix AudioTrix Pro | 1498 | trix= [HW,OSS] MediaTrix AudioTrix Pro |
| 1482 | Format: <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> | 1499 | Format: |
| 1483 | 1500 | <io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq> | |
| 1501 | |||
| 1484 | tsdev.xres= [TS] Horizontal screen resolution. | 1502 | tsdev.xres= [TS] Horizontal screen resolution. |
| 1485 | tsdev.yres= [TS] Vertical screen resolution. | 1503 | tsdev.yres= [TS] Vertical screen resolution. |
| 1486 | 1504 | ||
| 1487 | turbografx.map[2|3]= | 1505 | turbografx.map[2|3]= [HW,JOY] |
| 1488 | [HW,JOY] TurboGraFX parallel port interface | 1506 | TurboGraFX parallel port interface |
| 1489 | Format: <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7> | 1507 | Format: |
| 1508 | <port#>,<js1>,<js2>,<js3>,<js4>,<js5>,<js6>,<js7> | ||
| 1490 | See also Documentation/input/joystick-parport.txt | 1509 | See also Documentation/input/joystick-parport.txt |
| 1491 | 1510 | ||
| 1492 | u14-34f= [HW,SCSI] UltraStor 14F/34F SCSI host adapter | 1511 | u14-34f= [HW,SCSI] UltraStor 14F/34F SCSI host adapter |
| @@ -1502,17 +1521,18 @@ running once the system is up. | |||
| 1502 | 1521 | ||
| 1503 | usbhid.mousepoll= | 1522 | usbhid.mousepoll= |
| 1504 | [USBHID] The interval which mice are to be polled at. | 1523 | [USBHID] The interval which mice are to be polled at. |
| 1505 | 1524 | ||
| 1506 | video= [FB] Frame buffer configuration | 1525 | video= [FB] Frame buffer configuration |
| 1507 | See Documentation/fb/modedb.txt. | 1526 | See Documentation/fb/modedb.txt. |
| 1508 | 1527 | ||
| 1509 | vga= [BOOT,IA-32] Select a particular video mode | 1528 | vga= [BOOT,IA-32] Select a particular video mode |
| 1510 | See Documentation/i386/boot.txt and Documentation/svga.txt. | 1529 | See Documentation/i386/boot.txt and |
| 1530 | Documentation/svga.txt. | ||
| 1511 | Use vga=ask for menu. | 1531 | Use vga=ask for menu. |
| 1512 | This is actually a boot loader parameter; the value is | 1532 | This is actually a boot loader parameter; the value is |
| 1513 | passed to the kernel using a special protocol. | 1533 | passed to the kernel using a special protocol. |
| 1514 | 1534 | ||
| 1515 | vmalloc=nn[KMG] [KNL,BOOT] forces the vmalloc area to have an exact | 1535 | vmalloc=nn[KMG] [KNL,BOOT] Forces the vmalloc area to have an exact |
| 1516 | size of <nn>. This can be used to increase the | 1536 | size of <nn>. This can be used to increase the |
| 1517 | minimum size (128MB on x86). It can also be used to | 1537 | minimum size (128MB on x86). It can also be used to |
| 1518 | decrease the size and leave more room for directly | 1538 | decrease the size and leave more room for directly |
| @@ -1520,11 +1540,11 @@ running once the system is up. | |||
| 1520 | 1540 | ||
| 1521 | vmhalt= [KNL,S390] | 1541 | vmhalt= [KNL,S390] |
| 1522 | 1542 | ||
| 1523 | vmpoff= [KNL,S390] | 1543 | vmpoff= [KNL,S390] |
| 1524 | 1544 | ||
| 1525 | waveartist= [HW,OSS] | 1545 | waveartist= [HW,OSS] |
| 1526 | Format: <io>,<irq>,<dma>,<dma2> | 1546 | Format: <io>,<irq>,<dma>,<dma2> |
| 1527 | 1547 | ||
| 1528 | wd33c93= [HW,SCSI] | 1548 | wd33c93= [HW,SCSI] |
| 1529 | See header of drivers/scsi/wd33c93.c. | 1549 | See header of drivers/scsi/wd33c93.c. |
| 1530 | 1550 | ||
| @@ -1538,21 +1558,25 @@ running once the system is up. | |||
| 1538 | xd_geo= See header of drivers/block/xd.c. | 1558 | xd_geo= See header of drivers/block/xd.c. |
| 1539 | 1559 | ||
| 1540 | xirc2ps_cs= [NET,PCMCIA] | 1560 | xirc2ps_cs= [NET,PCMCIA] |
| 1541 | Format: <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] | 1561 | Format: |
| 1542 | 1562 | <irq>,<irq_mask>,<io>,<full_duplex>,<do_sound>,<lockup_hack>[,<irq2>[,<irq3>[,<irq4>]]] | |
| 1543 | 1563 | ||
| 1544 | 1564 | ||
| 1565 | ______________________________________________________________________ | ||
| 1545 | Changelog: | 1566 | Changelog: |
| 1546 | 1567 | ||
| 1568 | 2000-06-?? Mr. Unknown | ||
| 1547 | The last known update (for 2.4.0) - the changelog was not kept before. | 1569 | The last known update (for 2.4.0) - the changelog was not kept before. |
| 1548 | 2000-06-?? Mr. Unknown | ||
| 1549 | 1570 | ||
| 1571 | 2002-11-24 Petr Baudis <pasky@ucw.cz> | ||
| 1572 | Randy Dunlap <randy.dunlap@verizon.net> | ||
| 1550 | Update for 2.5.49, description for most of the options introduced, | 1573 | Update for 2.5.49, description for most of the options introduced, |
| 1551 | references to other documentation (C files, READMEs, ..), added S390, | 1574 | references to other documentation (C files, READMEs, ..), added S390, |
| 1552 | PPC, SPARC, MTD, ALSA and OSS category. Minor corrections and | 1575 | PPC, SPARC, MTD, ALSA and OSS category. Minor corrections and |
| 1553 | reformatting. | 1576 | reformatting. |
| 1554 | 2002-11-24 Petr Baudis <pasky@ucw.cz> | 1577 | |
| 1555 | Randy Dunlap <randy.dunlap@verizon.net> | 1578 | 2005-10-19 Randy Dunlap <rdunlap@xenotime.net> |
| 1579 | Lots of typos, whitespace, some reformatting. | ||
| 1556 | 1580 | ||
| 1557 | TODO: | 1581 | TODO: |
| 1558 | 1582 | ||
diff --git a/Documentation/keys-request-key.txt b/Documentation/keys-request-key.txt new file mode 100644 index 000000000000..5f2b9c5edbb5 --- /dev/null +++ b/Documentation/keys-request-key.txt | |||
| @@ -0,0 +1,161 @@ | |||
| 1 | =================== | ||
| 2 | KEY REQUEST SERVICE | ||
| 3 | =================== | ||
| 4 | |||
| 5 | The key request service is part of the key retention service (refer to | ||
| 6 | Documentation/keys.txt). This document explains more fully how that the | ||
| 7 | requesting algorithm works. | ||
| 8 | |||
| 9 | The process starts by either the kernel requesting a service by calling | ||
| 10 | request_key(): | ||
| 11 | |||
| 12 | struct key *request_key(const struct key_type *type, | ||
| 13 | const char *description, | ||
| 14 | const char *callout_string); | ||
| 15 | |||
| 16 | Or by userspace invoking the request_key system call: | ||
| 17 | |||
| 18 | key_serial_t request_key(const char *type, | ||
| 19 | const char *description, | ||
| 20 | const char *callout_info, | ||
| 21 | key_serial_t dest_keyring); | ||
| 22 | |||
| 23 | The main difference between the two access points is that the in-kernel | ||
| 24 | interface does not need to link the key to a keyring to prevent it from being | ||
| 25 | immediately destroyed. The kernel interface returns a pointer directly to the | ||
| 26 | key, and it's up to the caller to destroy the key. | ||
| 27 | |||
| 28 | The userspace interface links the key to a keyring associated with the process | ||
| 29 | to prevent the key from going away, and returns the serial number of the key to | ||
| 30 | the caller. | ||
| 31 | |||
| 32 | |||
| 33 | =========== | ||
| 34 | THE PROCESS | ||
| 35 | =========== | ||
| 36 | |||
| 37 | A request proceeds in the following manner: | ||
| 38 | |||
| 39 | (1) Process A calls request_key() [the userspace syscall calls the kernel | ||
| 40 | interface]. | ||
| 41 | |||
| 42 | (2) request_key() searches the process's subscribed keyrings to see if there's | ||
| 43 | a suitable key there. If there is, it returns the key. If there isn't, and | ||
| 44 | callout_info is not set, an error is returned. Otherwise the process | ||
| 45 | proceeds to the next step. | ||
| 46 | |||
| 47 | (3) request_key() sees that A doesn't have the desired key yet, so it creates | ||
| 48 | two things: | ||
| 49 | |||
| 50 | (a) An uninstantiated key U of requested type and description. | ||
| 51 | |||
| 52 | (b) An authorisation key V that refers to key U and notes that process A | ||
| 53 | is the context in which key U should be instantiated and secured, and | ||
| 54 | from which associated key requests may be satisfied. | ||
| 55 | |||
| 56 | (4) request_key() then forks and executes /sbin/request-key with a new session | ||
| 57 | keyring that contains a link to auth key V. | ||
| 58 | |||
| 59 | (5) /sbin/request-key execs an appropriate program to perform the actual | ||
| 60 | instantiation. | ||
| 61 | |||
| 62 | (6) The program may want to access another key from A's context (say a | ||
| 63 | Kerberos TGT key). It just requests the appropriate key, and the keyring | ||
| 64 | search notes that the session keyring has auth key V in its bottom level. | ||
| 65 | |||
| 66 | This will permit it to then search the keyrings of process A with the | ||
| 67 | UID, GID, groups and security info of process A as if it was process A, | ||
| 68 | and come up with key W. | ||
| 69 | |||
| 70 | (7) The program then does what it must to get the data with which to | ||
| 71 | instantiate key U, using key W as a reference (perhaps it contacts a | ||
| 72 | Kerberos server using the TGT) and then instantiates key U. | ||
| 73 | |||
| 74 | (8) Upon instantiating key U, auth key V is automatically revoked so that it | ||
| 75 | may not be used again. | ||
| 76 | |||
| 77 | (9) The program then exits 0 and request_key() deletes key V and returns key | ||
| 78 | U to the caller. | ||
| 79 | |||
| 80 | This also extends further. If key W (step 5 above) didn't exist, key W would be | ||
| 81 | created uninstantiated, another auth key (X) would be created [as per step 3] | ||
| 82 | and another copy of /sbin/request-key spawned [as per step 4]; but the context | ||
| 83 | specified by auth key X will still be process A, as it was in auth key V. | ||
| 84 | |||
| 85 | This is because process A's keyrings can't simply be attached to | ||
| 86 | /sbin/request-key at the appropriate places because (a) execve will discard two | ||
| 87 | of them, and (b) it requires the same UID/GID/Groups all the way through. | ||
| 88 | |||
| 89 | |||
| 90 | ====================== | ||
| 91 | NEGATIVE INSTANTIATION | ||
| 92 | ====================== | ||
| 93 | |||
| 94 | Rather than instantiating a key, it is possible for the possessor of an | ||
| 95 | authorisation key to negatively instantiate a key that's under construction. | ||
| 96 | This is a short duration placeholder that causes any attempt at re-requesting | ||
| 97 | the key whilst it exists to fail with error ENOKEY. | ||
| 98 | |||
| 99 | This is provided to prevent excessive repeated spawning of /sbin/request-key | ||
| 100 | processes for a key that will never be obtainable. | ||
| 101 | |||
| 102 | Should the /sbin/request-key process exit anything other than 0 or die on a | ||
| 103 | signal, the key under construction will be automatically negatively | ||
| 104 | instantiated for a short amount of time. | ||
| 105 | |||
| 106 | |||
| 107 | ==================== | ||
| 108 | THE SEARCH ALGORITHM | ||
| 109 | ==================== | ||
| 110 | |||
| 111 | A search of any particular keyring proceeds in the following fashion: | ||
| 112 | |||
| 113 | (1) When the key management code searches for a key (keyring_search_aux) it | ||
| 114 | firstly calls key_permission(SEARCH) on the keyring it's starting with, | ||
| 115 | if this denies permission, it doesn't search further. | ||
| 116 | |||
| 117 | (2) It considers all the non-keyring keys within that keyring and, if any key | ||
| 118 | matches the criteria specified, calls key_permission(SEARCH) on it to see | ||
| 119 | if the key is allowed to be found. If it is, that key is returned; if | ||
| 120 | not, the search continues, and the error code is retained if of higher | ||
| 121 | priority than the one currently set. | ||
| 122 | |||
| 123 | (3) It then considers all the keyring-type keys in the keyring it's currently | ||
| 124 | searching. It calls key_permission(SEARCH) on each keyring, and if this | ||
| 125 | grants permission, it recurses, executing steps (2) and (3) on that | ||
| 126 | keyring. | ||
| 127 | |||
| 128 | The process stops immediately a valid key is found with permission granted to | ||
| 129 | use it. Any error from a previous match attempt is discarded and the key is | ||
| 130 | returned. | ||
| 131 | |||
| 132 | When search_process_keyrings() is invoked, it performs the following searches | ||
| 133 | until one succeeds: | ||
| 134 | |||
| 135 | (1) If extant, the process's thread keyring is searched. | ||
| 136 | |||
| 137 | (2) If extant, the process's process keyring is searched. | ||
| 138 | |||
| 139 | (3) The process's session keyring is searched. | ||
| 140 | |||
| 141 | (4) If the process has a request_key() authorisation key in its session | ||
| 142 | keyring then: | ||
| 143 | |||
| 144 | (a) If extant, the calling process's thread keyring is searched. | ||
| 145 | |||
| 146 | (b) If extant, the calling process's process keyring is searched. | ||
| 147 | |||
| 148 | (c) The calling process's session keyring is searched. | ||
| 149 | |||
| 150 | The moment one succeeds, all pending errors are discarded and the found key is | ||
| 151 | returned. | ||
| 152 | |||
| 153 | Only if all these fail does the whole thing fail with the highest priority | ||
| 154 | error. Note that several errors may have come from LSM. | ||
| 155 | |||
| 156 | The error priority is: | ||
| 157 | |||
| 158 | EKEYREVOKED > EKEYEXPIRED > ENOKEY | ||
| 159 | |||
| 160 | EACCES/EPERM are only returned on a direct search of a specific keyring where | ||
| 161 | the basal keyring does not grant Search permission. | ||
diff --git a/Documentation/keys.txt b/Documentation/keys.txt index b22e7c8d059a..4afe03a58c5b 100644 --- a/Documentation/keys.txt +++ b/Documentation/keys.txt | |||
| @@ -361,6 +361,8 @@ The main syscalls are: | |||
| 361 | /sbin/request-key will be invoked in an attempt to obtain a key. The | 361 | /sbin/request-key will be invoked in an attempt to obtain a key. The |
| 362 | callout_info string will be passed as an argument to the program. | 362 | callout_info string will be passed as an argument to the program. |
| 363 | 363 | ||
| 364 | See also Documentation/keys-request-key.txt. | ||
| 365 | |||
| 364 | 366 | ||
| 365 | The keyctl syscall functions are: | 367 | The keyctl syscall functions are: |
| 366 | 368 | ||
| @@ -533,8 +535,8 @@ The keyctl syscall functions are: | |||
| 533 | 535 | ||
| 534 | (*) Read the payload data from a key: | 536 | (*) Read the payload data from a key: |
| 535 | 537 | ||
| 536 | key_serial_t keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer, | 538 | long keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer, |
| 537 | size_t buflen); | 539 | size_t buflen); |
| 538 | 540 | ||
| 539 | This function attempts to read the payload data from the specified key | 541 | This function attempts to read the payload data from the specified key |
| 540 | into the buffer. The process must have read permission on the key to | 542 | into the buffer. The process must have read permission on the key to |
| @@ -555,9 +557,9 @@ The keyctl syscall functions are: | |||
| 555 | 557 | ||
| 556 | (*) Instantiate a partially constructed key. | 558 | (*) Instantiate a partially constructed key. |
| 557 | 559 | ||
| 558 | key_serial_t keyctl(KEYCTL_INSTANTIATE, key_serial_t key, | 560 | long keyctl(KEYCTL_INSTANTIATE, key_serial_t key, |
| 559 | const void *payload, size_t plen, | 561 | const void *payload, size_t plen, |
| 560 | key_serial_t keyring); | 562 | key_serial_t keyring); |
| 561 | 563 | ||
| 562 | If the kernel calls back to userspace to complete the instantiation of a | 564 | If the kernel calls back to userspace to complete the instantiation of a |
| 563 | key, userspace should use this call to supply data for the key before the | 565 | key, userspace should use this call to supply data for the key before the |
| @@ -576,8 +578,8 @@ The keyctl syscall functions are: | |||
| 576 | 578 | ||
| 577 | (*) Negatively instantiate a partially constructed key. | 579 | (*) Negatively instantiate a partially constructed key. |
| 578 | 580 | ||
| 579 | key_serial_t keyctl(KEYCTL_NEGATE, key_serial_t key, | 581 | long keyctl(KEYCTL_NEGATE, key_serial_t key, |
| 580 | unsigned timeout, key_serial_t keyring); | 582 | unsigned timeout, key_serial_t keyring); |
| 581 | 583 | ||
| 582 | If the kernel calls back to userspace to complete the instantiation of a | 584 | If the kernel calls back to userspace to complete the instantiation of a |
| 583 | key, userspace should use this call mark the key as negative before the | 585 | key, userspace should use this call mark the key as negative before the |
| @@ -688,6 +690,8 @@ payload contents" for more information. | |||
| 688 | If successful, the key will have been attached to the default keyring for | 690 | If successful, the key will have been attached to the default keyring for |
| 689 | implicitly obtained request-key keys, as set by KEYCTL_SET_REQKEY_KEYRING. | 691 | implicitly obtained request-key keys, as set by KEYCTL_SET_REQKEY_KEYRING. |
| 690 | 692 | ||
| 693 | See also Documentation/keys-request-key.txt. | ||
| 694 | |||
| 691 | 695 | ||
| 692 | (*) When it is no longer required, the key should be released using: | 696 | (*) When it is no longer required, the key should be released using: |
| 693 | 697 | ||
diff --git a/MAINTAINERS b/MAINTAINERS index abf7f7a17ae0..767fb610963e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -1618,6 +1618,13 @@ M: vandrove@vc.cvut.cz | |||
| 1618 | L: linux-fbdev-devel@lists.sourceforge.net | 1618 | L: linux-fbdev-devel@lists.sourceforge.net |
| 1619 | S: Maintained | 1619 | S: Maintained |
| 1620 | 1620 | ||
| 1621 | MEGARAID SCSI DRIVERS | ||
| 1622 | P: Neela Syam Kolli | ||
| 1623 | M: Neela.Kolli@engenio.com | ||
| 1624 | S: linux-scsi@vger.kernel.org | ||
| 1625 | W: http://megaraid.lsilogic.com | ||
| 1626 | S: Maintained | ||
| 1627 | |||
| 1621 | MEMORY TECHNOLOGY DEVICES | 1628 | MEMORY TECHNOLOGY DEVICES |
| 1622 | P: David Woodhouse | 1629 | P: David Woodhouse |
| 1623 | M: dwmw2@infradead.org | 1630 | M: dwmw2@infradead.org |
| @@ -1,7 +1,7 @@ | |||
| 1 | VERSION = 2 | 1 | VERSION = 2 |
| 2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
| 3 | SUBLEVEL = 14 | 3 | SUBLEVEL = 14 |
| 4 | EXTRAVERSION =-rc3 | 4 | EXTRAVERSION =-rc5 |
| 5 | NAME=Affluent Albatross | 5 | NAME=Affluent Albatross |
| 6 | 6 | ||
| 7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
| @@ -372,7 +372,7 @@ export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_ve | |||
| 372 | # Files to ignore in find ... statements | 372 | # Files to ignore in find ... statements |
| 373 | 373 | ||
| 374 | RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg \) -prune -o | 374 | RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o -name CVS -o -name .pc -o -name .hg \) -prune -o |
| 375 | RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg | 375 | export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exclude CVS --exclude .pc --exclude .hg |
| 376 | 376 | ||
| 377 | # =========================================================================== | 377 | # =========================================================================== |
| 378 | # Rules shared between *config targets and build targets | 378 | # Rules shared between *config targets and build targets |
| @@ -660,8 +660,10 @@ quiet_cmd_sysmap = SYSMAP | |||
| 660 | # Link of vmlinux | 660 | # Link of vmlinux |
| 661 | # If CONFIG_KALLSYMS is set .version is already updated | 661 | # If CONFIG_KALLSYMS is set .version is already updated |
| 662 | # Generate System.map and verify that the content is consistent | 662 | # Generate System.map and verify that the content is consistent |
| 663 | 663 | # Use + in front of the vmlinux_version rule to silent warning with make -j2 | |
| 664 | # First command is ':' to allow us to use + in front of the rule | ||
| 664 | define rule_vmlinux__ | 665 | define rule_vmlinux__ |
| 666 | : | ||
| 665 | $(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version)) | 667 | $(if $(CONFIG_KALLSYMS),,+$(call cmd,vmlinux_version)) |
| 666 | 668 | ||
| 667 | $(call cmd,vmlinux__) | 669 | $(call cmd,vmlinux__) |
diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 7779f2d1acad..299bc0468702 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile | |||
| @@ -53,7 +53,7 @@ tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi | |||
| 53 | tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110 | 53 | tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110 |
| 54 | tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100 | 54 | tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100 |
| 55 | tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale | 55 | tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale |
| 56 | tune-$(CONFIG_CPU_V6) :=-mtune=strongarm | 56 | tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) |
| 57 | 57 | ||
| 58 | # Need -Uarm for gcc < 3.x | 58 | # Need -Uarm for gcc < 3.x |
| 59 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) | 59 | CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) |
diff --git a/arch/arm/common/scoop.c b/arch/arm/common/scoop.c index d3a04c2a2c85..9e5245c702de 100644 --- a/arch/arm/common/scoop.c +++ b/arch/arm/common/scoop.c | |||
| @@ -26,6 +26,8 @@ struct scoop_pcmcia_dev *scoop_devs; | |||
| 26 | struct scoop_dev { | 26 | struct scoop_dev { |
| 27 | void *base; | 27 | void *base; |
| 28 | spinlock_t scoop_lock; | 28 | spinlock_t scoop_lock; |
| 29 | unsigned short suspend_clr; | ||
| 30 | unsigned short suspend_set; | ||
| 29 | u32 scoop_gpwr; | 31 | u32 scoop_gpwr; |
| 30 | }; | 32 | }; |
| 31 | 33 | ||
| @@ -90,14 +92,24 @@ EXPORT_SYMBOL(reset_scoop); | |||
| 90 | EXPORT_SYMBOL(read_scoop_reg); | 92 | EXPORT_SYMBOL(read_scoop_reg); |
| 91 | EXPORT_SYMBOL(write_scoop_reg); | 93 | EXPORT_SYMBOL(write_scoop_reg); |
| 92 | 94 | ||
| 95 | static void check_scoop_reg(struct scoop_dev *sdev) | ||
| 96 | { | ||
| 97 | unsigned short mcr; | ||
| 98 | |||
| 99 | mcr = SCOOP_REG(sdev->base, SCOOP_MCR); | ||
| 100 | if ((mcr & 0x100) == 0) | ||
| 101 | SCOOP_REG(sdev->base, SCOOP_MCR) = 0x0101; | ||
| 102 | } | ||
| 103 | |||
| 93 | #ifdef CONFIG_PM | 104 | #ifdef CONFIG_PM |
| 94 | static int scoop_suspend(struct device *dev, pm_message_t state, uint32_t level) | 105 | static int scoop_suspend(struct device *dev, pm_message_t state, uint32_t level) |
| 95 | { | 106 | { |
| 96 | if (level == SUSPEND_POWER_DOWN) { | 107 | if (level == SUSPEND_POWER_DOWN) { |
| 97 | struct scoop_dev *sdev = dev_get_drvdata(dev); | 108 | struct scoop_dev *sdev = dev_get_drvdata(dev); |
| 98 | 109 | ||
| 99 | sdev->scoop_gpwr = SCOOP_REG(sdev->base,SCOOP_GPWR); | 110 | check_scoop_reg(sdev); |
| 100 | SCOOP_REG(sdev->base,SCOOP_GPWR) = 0; | 111 | sdev->scoop_gpwr = SCOOP_REG(sdev->base, SCOOP_GPWR); |
| 112 | SCOOP_REG(sdev->base, SCOOP_GPWR) = (sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set; | ||
| 101 | } | 113 | } |
| 102 | return 0; | 114 | return 0; |
| 103 | } | 115 | } |
| @@ -107,6 +119,7 @@ static int scoop_resume(struct device *dev, uint32_t level) | |||
| 107 | if (level == RESUME_POWER_ON) { | 119 | if (level == RESUME_POWER_ON) { |
| 108 | struct scoop_dev *sdev = dev_get_drvdata(dev); | 120 | struct scoop_dev *sdev = dev_get_drvdata(dev); |
| 109 | 121 | ||
| 122 | check_scoop_reg(sdev); | ||
| 110 | SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr; | 123 | SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr; |
| 111 | } | 124 | } |
| 112 | return 0; | 125 | return 0; |
| @@ -151,6 +164,9 @@ int __init scoop_probe(struct device *dev) | |||
| 151 | SCOOP_REG(devptr->base, SCOOP_GPCR) = inf->io_dir & 0xffff; | 164 | SCOOP_REG(devptr->base, SCOOP_GPCR) = inf->io_dir & 0xffff; |
| 152 | SCOOP_REG(devptr->base, SCOOP_GPWR) = inf->io_out & 0xffff; | 165 | SCOOP_REG(devptr->base, SCOOP_GPWR) = inf->io_out & 0xffff; |
| 153 | 166 | ||
| 167 | devptr->suspend_clr = inf->suspend_clr; | ||
| 168 | devptr->suspend_set = inf->suspend_set; | ||
| 169 | |||
| 154 | return 0; | 170 | return 0; |
| 155 | } | 171 | } |
| 156 | 172 | ||
diff --git a/arch/arm/configs/collie_defconfig b/arch/arm/configs/collie_defconfig new file mode 100644 index 000000000000..40dfe07a8bce --- /dev/null +++ b/arch/arm/configs/collie_defconfig | |||
| @@ -0,0 +1,888 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc3 | ||
| 4 | # Sun Oct 9 16:55:14 2005 | ||
| 5 | # | ||
| 6 | CONFIG_ARM=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_UID16=y | ||
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 11 | |||
| 12 | # | ||
| 13 | # Code maturity level options | ||
| 14 | # | ||
| 15 | CONFIG_EXPERIMENTAL=y | ||
| 16 | # CONFIG_CLEAN_COMPILE is not set | ||
| 17 | CONFIG_BROKEN=y | ||
| 18 | CONFIG_BROKEN_ON_SMP=y | ||
| 19 | CONFIG_LOCK_KERNEL=y | ||
| 20 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 21 | |||
| 22 | # | ||
| 23 | # General setup | ||
| 24 | # | ||
| 25 | CONFIG_LOCALVERSION="" | ||
| 26 | CONFIG_LOCALVERSION_AUTO=y | ||
| 27 | CONFIG_SWAP=y | ||
| 28 | CONFIG_SYSVIPC=y | ||
| 29 | # CONFIG_POSIX_MQUEUE is not set | ||
| 30 | CONFIG_BSD_PROCESS_ACCT=y | ||
| 31 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
| 32 | CONFIG_SYSCTL=y | ||
| 33 | # CONFIG_AUDIT is not set | ||
| 34 | CONFIG_HOTPLUG=y | ||
| 35 | CONFIG_KOBJECT_UEVENT=y | ||
| 36 | # CONFIG_IKCONFIG is not set | ||
| 37 | CONFIG_INITRAMFS_SOURCE="" | ||
| 38 | CONFIG_EMBEDDED=y | ||
| 39 | CONFIG_KALLSYMS=y | ||
| 40 | # CONFIG_KALLSYMS_ALL is not set | ||
| 41 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 42 | CONFIG_PRINTK=y | ||
| 43 | CONFIG_BUG=y | ||
| 44 | CONFIG_BASE_FULL=y | ||
| 45 | CONFIG_FUTEX=y | ||
| 46 | CONFIG_EPOLL=y | ||
| 47 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 48 | CONFIG_SHMEM=y | ||
| 49 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 50 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 51 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 52 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 53 | # CONFIG_TINY_SHMEM is not set | ||
| 54 | CONFIG_BASE_SMALL=0 | ||
| 55 | |||
| 56 | # | ||
| 57 | # Loadable module support | ||
| 58 | # | ||
| 59 | CONFIG_MODULES=y | ||
| 60 | CONFIG_MODULE_UNLOAD=y | ||
| 61 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 62 | CONFIG_OBSOLETE_MODPARM=y | ||
| 63 | CONFIG_MODVERSIONS=y | ||
| 64 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 65 | CONFIG_KMOD=y | ||
| 66 | |||
| 67 | # | ||
| 68 | # System Type | ||
| 69 | # | ||
| 70 | # CONFIG_ARCH_CLPS7500 is not set | ||
| 71 | # CONFIG_ARCH_CLPS711X is not set | ||
| 72 | # CONFIG_ARCH_CO285 is not set | ||
| 73 | # CONFIG_ARCH_EBSA110 is not set | ||
| 74 | # CONFIG_ARCH_CAMELOT is not set | ||
| 75 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
| 76 | # CONFIG_ARCH_INTEGRATOR is not set | ||
| 77 | # CONFIG_ARCH_IOP3XX is not set | ||
| 78 | # CONFIG_ARCH_IXP4XX is not set | ||
| 79 | # CONFIG_ARCH_IXP2000 is not set | ||
| 80 | # CONFIG_ARCH_L7200 is not set | ||
| 81 | # CONFIG_ARCH_PXA is not set | ||
| 82 | # CONFIG_ARCH_RPC is not set | ||
| 83 | CONFIG_ARCH_SA1100=y | ||
| 84 | # CONFIG_ARCH_S3C2410 is not set | ||
| 85 | # CONFIG_ARCH_SHARK is not set | ||
| 86 | # CONFIG_ARCH_LH7A40X is not set | ||
| 87 | # CONFIG_ARCH_OMAP is not set | ||
| 88 | # CONFIG_ARCH_VERSATILE is not set | ||
| 89 | # CONFIG_ARCH_IMX is not set | ||
| 90 | # CONFIG_ARCH_H720X is not set | ||
| 91 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 92 | |||
| 93 | # | ||
| 94 | # SA11x0 Implementations | ||
| 95 | # | ||
| 96 | # CONFIG_SA1100_ASSABET is not set | ||
| 97 | # CONFIG_SA1100_CERF is not set | ||
| 98 | CONFIG_SA1100_COLLIE=y | ||
| 99 | # CONFIG_SA1100_H3100 is not set | ||
| 100 | # CONFIG_SA1100_H3600 is not set | ||
| 101 | # CONFIG_SA1100_H3800 is not set | ||
| 102 | # CONFIG_SA1100_BADGE4 is not set | ||
| 103 | # CONFIG_SA1100_JORNADA720 is not set | ||
| 104 | # CONFIG_SA1100_HACKKIT is not set | ||
| 105 | # CONFIG_SA1100_LART is not set | ||
| 106 | # CONFIG_SA1100_PLEB is not set | ||
| 107 | # CONFIG_SA1100_SHANNON is not set | ||
| 108 | # CONFIG_SA1100_SIMPAD is not set | ||
| 109 | # CONFIG_SA1100_SSP is not set | ||
| 110 | |||
| 111 | # | ||
| 112 | # Processor Type | ||
| 113 | # | ||
| 114 | CONFIG_CPU_32=y | ||
| 115 | CONFIG_CPU_SA1100=y | ||
| 116 | CONFIG_CPU_32v4=y | ||
| 117 | CONFIG_CPU_ABRT_EV4=y | ||
| 118 | CONFIG_CPU_CACHE_V4WB=y | ||
| 119 | CONFIG_CPU_CACHE_VIVT=y | ||
| 120 | CONFIG_CPU_TLB_V4WB=y | ||
| 121 | |||
| 122 | # | ||
| 123 | # Processor Features | ||
| 124 | # | ||
| 125 | CONFIG_SHARP_LOCOMO=y | ||
| 126 | CONFIG_SHARP_PARAM=y | ||
| 127 | CONFIG_SHARP_SCOOP=y | ||
| 128 | |||
| 129 | # | ||
| 130 | # Bus support | ||
| 131 | # | ||
| 132 | CONFIG_ISA=y | ||
| 133 | CONFIG_ISA_DMA_API=y | ||
| 134 | |||
| 135 | # | ||
| 136 | # PCCARD (PCMCIA/CardBus) support | ||
| 137 | # | ||
| 138 | # CONFIG_PCCARD is not set | ||
| 139 | |||
| 140 | # | ||
| 141 | # Kernel Features | ||
| 142 | # | ||
| 143 | # CONFIG_SMP is not set | ||
| 144 | CONFIG_PREEMPT=y | ||
| 145 | # CONFIG_NO_IDLE_HZ is not set | ||
| 146 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | ||
| 147 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 148 | # CONFIG_FLATMEM_MANUAL is not set | ||
| 149 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
| 150 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 151 | CONFIG_DISCONTIGMEM=y | ||
| 152 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 153 | CONFIG_NEED_MULTIPLE_NODES=y | ||
| 154 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 155 | # CONFIG_LEDS is not set | ||
| 156 | CONFIG_ALIGNMENT_TRAP=y | ||
| 157 | |||
| 158 | # | ||
| 159 | # Boot options | ||
| 160 | # | ||
| 161 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
| 162 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
| 163 | CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" | ||
| 164 | # CONFIG_XIP_KERNEL is not set | ||
| 165 | |||
| 166 | # | ||
| 167 | # CPU Frequency scaling | ||
| 168 | # | ||
| 169 | # CONFIG_CPU_FREQ is not set | ||
| 170 | |||
| 171 | # | ||
| 172 | # Floating point emulation | ||
| 173 | # | ||
| 174 | |||
| 175 | # | ||
| 176 | # At least one emulation must be selected | ||
| 177 | # | ||
| 178 | CONFIG_FPE_NWFPE=y | ||
| 179 | # CONFIG_FPE_NWFPE_XP is not set | ||
| 180 | # CONFIG_FPE_FASTFPE is not set | ||
| 181 | |||
| 182 | # | ||
| 183 | # Userspace binary formats | ||
| 184 | # | ||
| 185 | CONFIG_BINFMT_ELF=y | ||
| 186 | CONFIG_BINFMT_AOUT=m | ||
| 187 | CONFIG_BINFMT_MISC=m | ||
| 188 | # CONFIG_ARTHUR is not set | ||
| 189 | |||
| 190 | # | ||
| 191 | # Power management options | ||
| 192 | # | ||
| 193 | CONFIG_PM=y | ||
| 194 | CONFIG_APM=y | ||
| 195 | |||
| 196 | # | ||
| 197 | # Networking | ||
| 198 | # | ||
| 199 | CONFIG_NET=y | ||
| 200 | |||
| 201 | # | ||
| 202 | # Networking options | ||
| 203 | # | ||
| 204 | CONFIG_PACKET=y | ||
| 205 | CONFIG_PACKET_MMAP=y | ||
| 206 | CONFIG_UNIX=y | ||
| 207 | # CONFIG_NET_KEY is not set | ||
| 208 | CONFIG_INET=y | ||
| 209 | # CONFIG_IP_MULTICAST is not set | ||
| 210 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 211 | CONFIG_IP_FIB_HASH=y | ||
| 212 | # CONFIG_IP_PNP is not set | ||
| 213 | # CONFIG_NET_IPIP is not set | ||
| 214 | # CONFIG_NET_IPGRE is not set | ||
| 215 | # CONFIG_ARPD is not set | ||
| 216 | CONFIG_SYN_COOKIES=y | ||
| 217 | # CONFIG_INET_AH is not set | ||
| 218 | # CONFIG_INET_ESP is not set | ||
| 219 | # CONFIG_INET_IPCOMP is not set | ||
| 220 | # CONFIG_INET_TUNNEL is not set | ||
| 221 | CONFIG_INET_DIAG=y | ||
| 222 | CONFIG_INET_TCP_DIAG=y | ||
| 223 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 224 | CONFIG_TCP_CONG_BIC=y | ||
| 225 | # CONFIG_IPV6 is not set | ||
| 226 | # CONFIG_NETFILTER is not set | ||
| 227 | |||
| 228 | # | ||
| 229 | # DCCP Configuration (EXPERIMENTAL) | ||
| 230 | # | ||
| 231 | # CONFIG_IP_DCCP is not set | ||
| 232 | |||
| 233 | # | ||
| 234 | # SCTP Configuration (EXPERIMENTAL) | ||
| 235 | # | ||
| 236 | # CONFIG_IP_SCTP is not set | ||
| 237 | # CONFIG_ATM is not set | ||
| 238 | # CONFIG_BRIDGE is not set | ||
| 239 | # CONFIG_VLAN_8021Q is not set | ||
| 240 | # CONFIG_DECNET is not set | ||
| 241 | # CONFIG_LLC2 is not set | ||
| 242 | # CONFIG_IPX is not set | ||
| 243 | # CONFIG_ATALK is not set | ||
| 244 | # CONFIG_X25 is not set | ||
| 245 | # CONFIG_LAPB is not set | ||
| 246 | # CONFIG_NET_DIVERT is not set | ||
| 247 | # CONFIG_ECONET is not set | ||
| 248 | # CONFIG_WAN_ROUTER is not set | ||
| 249 | # CONFIG_NET_SCHED is not set | ||
| 250 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 251 | |||
| 252 | # | ||
| 253 | # Network testing | ||
| 254 | # | ||
| 255 | # CONFIG_NET_PKTGEN is not set | ||
| 256 | # CONFIG_HAMRADIO is not set | ||
| 257 | # CONFIG_IRDA is not set | ||
| 258 | # CONFIG_BT is not set | ||
| 259 | # CONFIG_IEEE80211 is not set | ||
| 260 | |||
| 261 | # | ||
| 262 | # Device Drivers | ||
| 263 | # | ||
| 264 | |||
| 265 | # | ||
| 266 | # Generic Driver Options | ||
| 267 | # | ||
| 268 | CONFIG_STANDALONE=y | ||
| 269 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 270 | CONFIG_FW_LOADER=m | ||
| 271 | # CONFIG_DEBUG_DRIVER is not set | ||
| 272 | |||
| 273 | # | ||
| 274 | # Memory Technology Devices (MTD) | ||
| 275 | # | ||
| 276 | CONFIG_MTD=y | ||
| 277 | # CONFIG_MTD_DEBUG is not set | ||
| 278 | # CONFIG_MTD_CONCAT is not set | ||
| 279 | CONFIG_MTD_PARTITIONS=y | ||
| 280 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 281 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
| 282 | # CONFIG_MTD_AFS_PARTS is not set | ||
| 283 | |||
| 284 | # | ||
| 285 | # User Modules And Translation Layers | ||
| 286 | # | ||
| 287 | CONFIG_MTD_CHAR=y | ||
| 288 | CONFIG_MTD_BLOCK=y | ||
| 289 | # CONFIG_FTL is not set | ||
| 290 | # CONFIG_NFTL is not set | ||
| 291 | # CONFIG_INFTL is not set | ||
| 292 | |||
| 293 | # | ||
| 294 | # RAM/ROM/Flash chip drivers | ||
| 295 | # | ||
| 296 | # CONFIG_MTD_CFI is not set | ||
| 297 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 298 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 299 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 300 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 301 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 302 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 303 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 304 | CONFIG_MTD_CFI_I1=y | ||
| 305 | CONFIG_MTD_CFI_I2=y | ||
| 306 | # CONFIG_MTD_CFI_I4 is not set | ||
| 307 | # CONFIG_MTD_CFI_I8 is not set | ||
| 308 | # CONFIG_MTD_RAM is not set | ||
| 309 | # CONFIG_MTD_ROM is not set | ||
| 310 | # CONFIG_MTD_ABSENT is not set | ||
| 311 | CONFIG_MTD_OBSOLETE_CHIPS=y | ||
| 312 | # CONFIG_MTD_AMDSTD is not set | ||
| 313 | CONFIG_MTD_SHARP=y | ||
| 314 | # CONFIG_MTD_JEDEC is not set | ||
| 315 | |||
| 316 | # | ||
| 317 | # Mapping drivers for chip access | ||
| 318 | # | ||
| 319 | # CONFIG_MTD_COMPLEX_MAPPINGS is not set | ||
| 320 | # CONFIG_MTD_PLATRAM is not set | ||
| 321 | |||
| 322 | # | ||
| 323 | # Self-contained MTD device drivers | ||
| 324 | # | ||
| 325 | # CONFIG_MTD_SLRAM is not set | ||
| 326 | # CONFIG_MTD_PHRAM is not set | ||
| 327 | # CONFIG_MTD_MTDRAM is not set | ||
| 328 | # CONFIG_MTD_BLKMTD is not set | ||
| 329 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 330 | |||
| 331 | # | ||
| 332 | # Disk-On-Chip Device Drivers | ||
| 333 | # | ||
| 334 | # CONFIG_MTD_DOC2000 is not set | ||
| 335 | # CONFIG_MTD_DOC2001 is not set | ||
| 336 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 337 | |||
| 338 | # | ||
| 339 | # NAND Flash Device Drivers | ||
| 340 | # | ||
| 341 | # CONFIG_MTD_NAND is not set | ||
| 342 | |||
| 343 | # | ||
| 344 | # Parallel port support | ||
| 345 | # | ||
| 346 | # CONFIG_PARPORT is not set | ||
| 347 | |||
| 348 | # | ||
| 349 | # Plug and Play support | ||
| 350 | # | ||
| 351 | # CONFIG_PNP is not set | ||
| 352 | |||
| 353 | # | ||
| 354 | # Block devices | ||
| 355 | # | ||
| 356 | # CONFIG_BLK_DEV_XD is not set | ||
| 357 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 358 | CONFIG_BLK_DEV_LOOP=y | ||
| 359 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 360 | # CONFIG_BLK_DEV_NBD is not set | ||
| 361 | CONFIG_BLK_DEV_RAM=y | ||
| 362 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 363 | CONFIG_BLK_DEV_RAM_SIZE=1024 | ||
| 364 | CONFIG_BLK_DEV_INITRD=y | ||
| 365 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 366 | |||
| 367 | # | ||
| 368 | # IO Schedulers | ||
| 369 | # | ||
| 370 | CONFIG_IOSCHED_NOOP=y | ||
| 371 | CONFIG_IOSCHED_AS=y | ||
| 372 | CONFIG_IOSCHED_DEADLINE=y | ||
| 373 | CONFIG_IOSCHED_CFQ=y | ||
| 374 | CONFIG_ATA_OVER_ETH=m | ||
| 375 | |||
| 376 | # | ||
| 377 | # ATA/ATAPI/MFM/RLL support | ||
| 378 | # | ||
| 379 | # CONFIG_IDE is not set | ||
| 380 | |||
| 381 | # | ||
| 382 | # SCSI device support | ||
| 383 | # | ||
| 384 | # CONFIG_RAID_ATTRS is not set | ||
| 385 | # CONFIG_SCSI is not set | ||
| 386 | |||
| 387 | # | ||
| 388 | # Multi-device support (RAID and LVM) | ||
| 389 | # | ||
| 390 | # CONFIG_MD is not set | ||
| 391 | |||
| 392 | # | ||
| 393 | # Fusion MPT device support | ||
| 394 | # | ||
| 395 | # CONFIG_FUSION is not set | ||
| 396 | |||
| 397 | # | ||
| 398 | # IEEE 1394 (FireWire) support | ||
| 399 | # | ||
| 400 | # CONFIG_IEEE1394 is not set | ||
| 401 | |||
| 402 | # | ||
| 403 | # I2O device support | ||
| 404 | # | ||
| 405 | |||
| 406 | # | ||
| 407 | # Network device support | ||
| 408 | # | ||
| 409 | # CONFIG_NETDEVICES is not set | ||
| 410 | # CONFIG_NETPOLL is not set | ||
| 411 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 412 | |||
| 413 | # | ||
| 414 | # ISDN subsystem | ||
| 415 | # | ||
| 416 | # CONFIG_ISDN is not set | ||
| 417 | |||
| 418 | # | ||
| 419 | # Input device support | ||
| 420 | # | ||
| 421 | CONFIG_INPUT=y | ||
| 422 | |||
| 423 | # | ||
| 424 | # Userland interfaces | ||
| 425 | # | ||
| 426 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 427 | # CONFIG_INPUT_JOYDEV is not set | ||
| 428 | CONFIG_INPUT_TSDEV=y | ||
| 429 | CONFIG_INPUT_TSDEV_SCREEN_X=240 | ||
| 430 | CONFIG_INPUT_TSDEV_SCREEN_Y=320 | ||
| 431 | CONFIG_INPUT_EVDEV=y | ||
| 432 | CONFIG_INPUT_EVBUG=y | ||
| 433 | |||
| 434 | # | ||
| 435 | # Input Device Drivers | ||
| 436 | # | ||
| 437 | CONFIG_INPUT_KEYBOARD=y | ||
| 438 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 439 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 440 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 441 | CONFIG_KEYBOARD_LOCOMO=y | ||
| 442 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 443 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 444 | # CONFIG_INPUT_MOUSE is not set | ||
| 445 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 446 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 447 | # CONFIG_INPUT_MISC is not set | ||
| 448 | |||
| 449 | # | ||
| 450 | # Hardware I/O ports | ||
| 451 | # | ||
| 452 | CONFIG_SERIO=y | ||
| 453 | # CONFIG_SERIO_SERPORT is not set | ||
| 454 | # CONFIG_SERIO_LIBPS2 is not set | ||
| 455 | # CONFIG_SERIO_RAW is not set | ||
| 456 | # CONFIG_GAMEPORT is not set | ||
| 457 | |||
| 458 | # | ||
| 459 | # Character devices | ||
| 460 | # | ||
| 461 | CONFIG_VT=y | ||
| 462 | CONFIG_VT_CONSOLE=y | ||
| 463 | CONFIG_HW_CONSOLE=y | ||
| 464 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 465 | |||
| 466 | # | ||
| 467 | # Serial drivers | ||
| 468 | # | ||
| 469 | # CONFIG_SERIAL_8250 is not set | ||
| 470 | |||
| 471 | # | ||
| 472 | # Non-8250 serial port support | ||
| 473 | # | ||
| 474 | CONFIG_SERIAL_SA1100=y | ||
| 475 | CONFIG_SERIAL_SA1100_CONSOLE=y | ||
| 476 | CONFIG_SERIAL_CORE=y | ||
| 477 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 478 | CONFIG_UNIX98_PTYS=y | ||
| 479 | # CONFIG_LEGACY_PTYS is not set | ||
| 480 | |||
| 481 | # | ||
| 482 | # IPMI | ||
| 483 | # | ||
| 484 | # CONFIG_IPMI_HANDLER is not set | ||
| 485 | |||
| 486 | # | ||
| 487 | # Watchdog Cards | ||
| 488 | # | ||
| 489 | # CONFIG_WATCHDOG is not set | ||
| 490 | # CONFIG_NVRAM is not set | ||
| 491 | # CONFIG_RTC is not set | ||
| 492 | # CONFIG_DTLK is not set | ||
| 493 | # CONFIG_R3964 is not set | ||
| 494 | |||
| 495 | # | ||
| 496 | # Ftape, the floppy tape device driver | ||
| 497 | # | ||
| 498 | # CONFIG_RAW_DRIVER is not set | ||
| 499 | |||
| 500 | # | ||
| 501 | # TPM devices | ||
| 502 | # | ||
| 503 | |||
| 504 | # | ||
| 505 | # I2C support | ||
| 506 | # | ||
| 507 | CONFIG_I2C=m | ||
| 508 | # CONFIG_I2C_CHARDEV is not set | ||
| 509 | |||
| 510 | # | ||
| 511 | # I2C Algorithms | ||
| 512 | # | ||
| 513 | CONFIG_I2C_ALGOBIT=m | ||
| 514 | # CONFIG_I2C_ALGOPCF is not set | ||
| 515 | # CONFIG_I2C_ALGOPCA is not set | ||
| 516 | |||
| 517 | # | ||
| 518 | # I2C Hardware Bus support | ||
| 519 | # | ||
| 520 | # CONFIG_I2C_ELEKTOR is not set | ||
| 521 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 522 | # CONFIG_I2C_STUB is not set | ||
| 523 | # CONFIG_I2C_PCA_ISA is not set | ||
| 524 | |||
| 525 | # | ||
| 526 | # Miscellaneous I2C Chip support | ||
| 527 | # | ||
| 528 | # CONFIG_SENSORS_DS1337 is not set | ||
| 529 | # CONFIG_SENSORS_DS1374 is not set | ||
| 530 | # CONFIG_SENSORS_EEPROM is not set | ||
| 531 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 532 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 533 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 534 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 535 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 536 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 537 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 538 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 539 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 540 | |||
| 541 | # | ||
| 542 | # Hardware Monitoring support | ||
| 543 | # | ||
| 544 | CONFIG_HWMON=y | ||
| 545 | # CONFIG_HWMON_VID is not set | ||
| 546 | # CONFIG_SENSORS_ADM1021 is not set | ||
| 547 | # CONFIG_SENSORS_ADM1025 is not set | ||
| 548 | # CONFIG_SENSORS_ADM1026 is not set | ||
| 549 | # CONFIG_SENSORS_ADM1031 is not set | ||
| 550 | # CONFIG_SENSORS_ADM9240 is not set | ||
| 551 | # CONFIG_SENSORS_ASB100 is not set | ||
| 552 | # CONFIG_SENSORS_ATXP1 is not set | ||
| 553 | # CONFIG_SENSORS_DS1621 is not set | ||
| 554 | # CONFIG_SENSORS_FSCHER is not set | ||
| 555 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 556 | # CONFIG_SENSORS_GL518SM is not set | ||
| 557 | # CONFIG_SENSORS_GL520SM is not set | ||
| 558 | # CONFIG_SENSORS_IT87 is not set | ||
| 559 | # CONFIG_SENSORS_LM63 is not set | ||
| 560 | # CONFIG_SENSORS_LM75 is not set | ||
| 561 | # CONFIG_SENSORS_LM77 is not set | ||
| 562 | # CONFIG_SENSORS_LM78 is not set | ||
| 563 | # CONFIG_SENSORS_LM80 is not set | ||
| 564 | # CONFIG_SENSORS_LM83 is not set | ||
| 565 | # CONFIG_SENSORS_LM85 is not set | ||
| 566 | # CONFIG_SENSORS_LM87 is not set | ||
| 567 | # CONFIG_SENSORS_LM90 is not set | ||
| 568 | # CONFIG_SENSORS_LM92 is not set | ||
| 569 | # CONFIG_SENSORS_MAX1619 is not set | ||
| 570 | # CONFIG_SENSORS_PC87360 is not set | ||
| 571 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
| 572 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
| 573 | # CONFIG_SENSORS_W83781D is not set | ||
| 574 | # CONFIG_SENSORS_W83792D is not set | ||
| 575 | # CONFIG_SENSORS_W83L785TS is not set | ||
| 576 | # CONFIG_SENSORS_W83627HF is not set | ||
| 577 | # CONFIG_SENSORS_W83627EHF is not set | ||
| 578 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 579 | |||
| 580 | # | ||
| 581 | # Misc devices | ||
| 582 | # | ||
| 583 | |||
| 584 | # | ||
| 585 | # Multimedia Capabilities Port drivers | ||
| 586 | # | ||
| 587 | # CONFIG_MCP_SA11X0 is not set | ||
| 588 | |||
| 589 | # | ||
| 590 | # Multimedia devices | ||
| 591 | # | ||
| 592 | CONFIG_VIDEO_DEV=m | ||
| 593 | |||
| 594 | # | ||
| 595 | # Video For Linux | ||
| 596 | # | ||
| 597 | |||
| 598 | # | ||
| 599 | # Video Adapters | ||
| 600 | # | ||
| 601 | # CONFIG_VIDEO_PMS is not set | ||
| 602 | # CONFIG_VIDEO_CPIA is not set | ||
| 603 | # CONFIG_VIDEO_SAA5246A is not set | ||
| 604 | # CONFIG_VIDEO_SAA5249 is not set | ||
| 605 | # CONFIG_TUNER_3036 is not set | ||
| 606 | # CONFIG_VIDEO_OVCAMCHIP is not set | ||
| 607 | |||
| 608 | # | ||
| 609 | # Radio Adapters | ||
| 610 | # | ||
| 611 | # CONFIG_RADIO_CADET is not set | ||
| 612 | # CONFIG_RADIO_RTRACK is not set | ||
| 613 | # CONFIG_RADIO_RTRACK2 is not set | ||
| 614 | # CONFIG_RADIO_AZTECH is not set | ||
| 615 | # CONFIG_RADIO_GEMTEK is not set | ||
| 616 | # CONFIG_RADIO_MAESTRO is not set | ||
| 617 | # CONFIG_RADIO_SF16FMI is not set | ||
| 618 | # CONFIG_RADIO_SF16FMR2 is not set | ||
| 619 | # CONFIG_RADIO_TERRATEC is not set | ||
| 620 | # CONFIG_RADIO_TRUST is not set | ||
| 621 | # CONFIG_RADIO_TYPHOON is not set | ||
| 622 | # CONFIG_RADIO_ZOLTRIX is not set | ||
| 623 | |||
| 624 | # | ||
| 625 | # Digital Video Broadcasting Devices | ||
| 626 | # | ||
| 627 | # CONFIG_DVB is not set | ||
| 628 | |||
| 629 | # | ||
| 630 | # Graphics support | ||
| 631 | # | ||
| 632 | CONFIG_FB=y | ||
| 633 | CONFIG_FB_CFB_FILLRECT=y | ||
| 634 | CONFIG_FB_CFB_COPYAREA=y | ||
| 635 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 636 | CONFIG_FB_SOFT_CURSOR=y | ||
| 637 | # CONFIG_FB_MACMODES is not set | ||
| 638 | CONFIG_FB_MODE_HELPERS=y | ||
| 639 | # CONFIG_FB_TILEBLITTING is not set | ||
| 640 | CONFIG_FB_SA1100=y | ||
| 641 | # CONFIG_FB_S1D13XXX is not set | ||
| 642 | # CONFIG_FB_VIRTUAL is not set | ||
| 643 | |||
| 644 | # | ||
| 645 | # Console display driver support | ||
| 646 | # | ||
| 647 | # CONFIG_VGA_CONSOLE is not set | ||
| 648 | # CONFIG_MDA_CONSOLE is not set | ||
| 649 | CONFIG_DUMMY_CONSOLE=y | ||
| 650 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 651 | CONFIG_FONTS=y | ||
| 652 | CONFIG_FONT_8x8=y | ||
| 653 | # CONFIG_FONT_8x16 is not set | ||
| 654 | # CONFIG_FONT_6x11 is not set | ||
| 655 | # CONFIG_FONT_7x14 is not set | ||
| 656 | # CONFIG_FONT_PEARL_8x8 is not set | ||
| 657 | # CONFIG_FONT_ACORN_8x8 is not set | ||
| 658 | # CONFIG_FONT_MINI_4x6 is not set | ||
| 659 | # CONFIG_FONT_SUN8x16 is not set | ||
| 660 | # CONFIG_FONT_SUN12x22 is not set | ||
| 661 | # CONFIG_FONT_10x18 is not set | ||
| 662 | |||
| 663 | # | ||
| 664 | # Logo configuration | ||
| 665 | # | ||
| 666 | # CONFIG_LOGO is not set | ||
| 667 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 668 | |||
| 669 | # | ||
| 670 | # Sound | ||
| 671 | # | ||
| 672 | # CONFIG_SOUND is not set | ||
| 673 | |||
| 674 | # | ||
| 675 | # USB support | ||
| 676 | # | ||
| 677 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 678 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
| 679 | # CONFIG_USB is not set | ||
| 680 | |||
| 681 | # | ||
| 682 | # USB Gadget Support | ||
| 683 | # | ||
| 684 | CONFIG_USB_GADGET=y | ||
| 685 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
| 686 | # CONFIG_USB_GADGET_NET2280 is not set | ||
| 687 | # CONFIG_USB_GADGET_PXA2XX is not set | ||
| 688 | # CONFIG_USB_GADGET_GOKU is not set | ||
| 689 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
| 690 | # CONFIG_USB_GADGET_OMAP is not set | ||
| 691 | # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||
| 692 | # CONFIG_USB_GADGET_DUALSPEED is not set | ||
| 693 | |||
| 694 | # | ||
| 695 | # MMC/SD Card support | ||
| 696 | # | ||
| 697 | # CONFIG_MMC is not set | ||
| 698 | |||
| 699 | # | ||
| 700 | # File systems | ||
| 701 | # | ||
| 702 | CONFIG_EXT2_FS=y | ||
| 703 | CONFIG_EXT2_FS_XATTR=y | ||
| 704 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
| 705 | CONFIG_EXT2_FS_SECURITY=y | ||
| 706 | # CONFIG_EXT2_FS_XIP is not set | ||
| 707 | # CONFIG_EXT3_FS is not set | ||
| 708 | # CONFIG_JBD is not set | ||
| 709 | CONFIG_FS_MBCACHE=y | ||
| 710 | # CONFIG_REISERFS_FS is not set | ||
| 711 | # CONFIG_JFS_FS is not set | ||
| 712 | CONFIG_FS_POSIX_ACL=y | ||
| 713 | # CONFIG_XFS_FS is not set | ||
| 714 | # CONFIG_MINIX_FS is not set | ||
| 715 | CONFIG_ROMFS_FS=y | ||
| 716 | CONFIG_INOTIFY=y | ||
| 717 | # CONFIG_QUOTA is not set | ||
| 718 | # CONFIG_DNOTIFY is not set | ||
| 719 | # CONFIG_AUTOFS_FS is not set | ||
| 720 | # CONFIG_AUTOFS4_FS is not set | ||
| 721 | # CONFIG_FUSE_FS is not set | ||
| 722 | |||
| 723 | # | ||
| 724 | # CD-ROM/DVD Filesystems | ||
| 725 | # | ||
| 726 | # CONFIG_ISO9660_FS is not set | ||
| 727 | # CONFIG_UDF_FS is not set | ||
| 728 | |||
| 729 | # | ||
| 730 | # DOS/FAT/NT Filesystems | ||
| 731 | # | ||
| 732 | CONFIG_FAT_FS=y | ||
| 733 | CONFIG_MSDOS_FS=y | ||
| 734 | CONFIG_VFAT_FS=y | ||
| 735 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 736 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 737 | # CONFIG_NTFS_FS is not set | ||
| 738 | |||
| 739 | # | ||
| 740 | # Pseudo filesystems | ||
| 741 | # | ||
| 742 | CONFIG_PROC_FS=y | ||
| 743 | CONFIG_SYSFS=y | ||
| 744 | CONFIG_TMPFS=y | ||
| 745 | # CONFIG_HUGETLBFS is not set | ||
| 746 | # CONFIG_HUGETLB_PAGE is not set | ||
| 747 | CONFIG_RAMFS=y | ||
| 748 | # CONFIG_RELAYFS_FS is not set | ||
| 749 | |||
| 750 | # | ||
| 751 | # Miscellaneous filesystems | ||
| 752 | # | ||
| 753 | # CONFIG_ADFS_FS is not set | ||
| 754 | # CONFIG_AFFS_FS is not set | ||
| 755 | # CONFIG_HFS_FS is not set | ||
| 756 | # CONFIG_HFSPLUS_FS is not set | ||
| 757 | # CONFIG_BEFS_FS is not set | ||
| 758 | # CONFIG_BFS_FS is not set | ||
| 759 | # CONFIG_EFS_FS is not set | ||
| 760 | # CONFIG_JFFS_FS is not set | ||
| 761 | CONFIG_JFFS2_FS=y | ||
| 762 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 763 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 764 | # CONFIG_JFFS2_COMPRESSION_OPTIONS is not set | ||
| 765 | CONFIG_JFFS2_ZLIB=y | ||
| 766 | CONFIG_JFFS2_RTIME=y | ||
| 767 | # CONFIG_JFFS2_RUBIN is not set | ||
| 768 | CONFIG_CRAMFS=y | ||
| 769 | # CONFIG_VXFS_FS is not set | ||
| 770 | # CONFIG_HPFS_FS is not set | ||
| 771 | # CONFIG_QNX4FS_FS is not set | ||
| 772 | # CONFIG_SYSV_FS is not set | ||
| 773 | # CONFIG_UFS_FS is not set | ||
| 774 | |||
| 775 | # | ||
| 776 | # Network File Systems | ||
| 777 | # | ||
| 778 | # CONFIG_NFS_FS is not set | ||
| 779 | # CONFIG_NFSD is not set | ||
| 780 | # CONFIG_SMB_FS is not set | ||
| 781 | # CONFIG_CIFS is not set | ||
| 782 | # CONFIG_NCP_FS is not set | ||
| 783 | # CONFIG_CODA_FS is not set | ||
| 784 | # CONFIG_AFS_FS is not set | ||
| 785 | # CONFIG_9P_FS is not set | ||
| 786 | |||
| 787 | # | ||
| 788 | # Partition Types | ||
| 789 | # | ||
| 790 | # CONFIG_PARTITION_ADVANCED is not set | ||
| 791 | CONFIG_MSDOS_PARTITION=y | ||
| 792 | |||
| 793 | # | ||
| 794 | # Native Language Support | ||
| 795 | # | ||
| 796 | CONFIG_NLS=y | ||
| 797 | CONFIG_NLS_DEFAULT="cp437" | ||
| 798 | CONFIG_NLS_CODEPAGE_437=m | ||
| 799 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 800 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 801 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 802 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 803 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 804 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 805 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 806 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 807 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 808 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 809 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 810 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 811 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 812 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 813 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 814 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 815 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 816 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 817 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 818 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 819 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 820 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 821 | # CONFIG_NLS_ASCII is not set | ||
| 822 | CONFIG_NLS_ISO8859_1=m | ||
| 823 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 824 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 825 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 826 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 827 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 828 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 829 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 830 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 831 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 832 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 833 | # CONFIG_NLS_KOI8_R is not set | ||
| 834 | # CONFIG_NLS_KOI8_U is not set | ||
| 835 | CONFIG_NLS_UTF8=m | ||
| 836 | |||
| 837 | # | ||
| 838 | # Profiling support | ||
| 839 | # | ||
| 840 | # CONFIG_PROFILING is not set | ||
| 841 | |||
| 842 | # | ||
| 843 | # Kernel hacking | ||
| 844 | # | ||
| 845 | # CONFIG_PRINTK_TIME is not set | ||
| 846 | CONFIG_DEBUG_KERNEL=y | ||
| 847 | CONFIG_MAGIC_SYSRQ=y | ||
| 848 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 849 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 850 | # CONFIG_SCHEDSTATS is not set | ||
| 851 | # CONFIG_DEBUG_SLAB is not set | ||
| 852 | CONFIG_DEBUG_PREEMPT=y | ||
| 853 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 854 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 855 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 856 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
| 857 | # CONFIG_DEBUG_INFO is not set | ||
| 858 | # CONFIG_DEBUG_FS is not set | ||
| 859 | CONFIG_FRAME_POINTER=y | ||
| 860 | # CONFIG_DEBUG_USER is not set | ||
| 861 | # CONFIG_DEBUG_WAITQ is not set | ||
| 862 | CONFIG_DEBUG_ERRORS=y | ||
| 863 | # CONFIG_DEBUG_LL is not set | ||
| 864 | |||
| 865 | # | ||
| 866 | # Security options | ||
| 867 | # | ||
| 868 | # CONFIG_KEYS is not set | ||
| 869 | # CONFIG_SECURITY is not set | ||
| 870 | |||
| 871 | # | ||
| 872 | # Cryptographic options | ||
| 873 | # | ||
| 874 | # CONFIG_CRYPTO is not set | ||
| 875 | |||
| 876 | # | ||
| 877 | # Hardware crypto devices | ||
| 878 | # | ||
| 879 | |||
| 880 | # | ||
| 881 | # Library routines | ||
| 882 | # | ||
| 883 | # CONFIG_CRC_CCITT is not set | ||
| 884 | # CONFIG_CRC16 is not set | ||
| 885 | CONFIG_CRC32=y | ||
| 886 | # CONFIG_LIBCRC32C is not set | ||
| 887 | CONFIG_ZLIB_INFLATE=y | ||
| 888 | CONFIG_ZLIB_DEFLATE=y | ||
diff --git a/arch/arm/configs/corgi_defconfig b/arch/arm/configs/corgi_defconfig new file mode 100644 index 000000000000..24987c89609a --- /dev/null +++ b/arch/arm/configs/corgi_defconfig | |||
| @@ -0,0 +1,1523 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc3 | ||
| 4 | # Sun Oct 9 15:46:42 2005 | ||
| 5 | # | ||
| 6 | CONFIG_ARM=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_UID16=y | ||
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 11 | |||
| 12 | # | ||
| 13 | # Code maturity level options | ||
| 14 | # | ||
| 15 | CONFIG_EXPERIMENTAL=y | ||
| 16 | CONFIG_CLEAN_COMPILE=y | ||
| 17 | CONFIG_BROKEN_ON_SMP=y | ||
| 18 | CONFIG_LOCK_KERNEL=y | ||
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 20 | |||
| 21 | # | ||
| 22 | # General setup | ||
| 23 | # | ||
| 24 | CONFIG_LOCALVERSION="" | ||
| 25 | CONFIG_LOCALVERSION_AUTO=y | ||
| 26 | CONFIG_SWAP=y | ||
| 27 | CONFIG_SYSVIPC=y | ||
| 28 | # CONFIG_POSIX_MQUEUE is not set | ||
| 29 | CONFIG_BSD_PROCESS_ACCT=y | ||
| 30 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
| 31 | CONFIG_SYSCTL=y | ||
| 32 | # CONFIG_AUDIT is not set | ||
| 33 | CONFIG_HOTPLUG=y | ||
| 34 | CONFIG_KOBJECT_UEVENT=y | ||
| 35 | # CONFIG_IKCONFIG is not set | ||
| 36 | CONFIG_INITRAMFS_SOURCE="" | ||
| 37 | CONFIG_EMBEDDED=y | ||
| 38 | CONFIG_KALLSYMS=y | ||
| 39 | # CONFIG_KALLSYMS_ALL is not set | ||
| 40 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 41 | CONFIG_PRINTK=y | ||
| 42 | CONFIG_BUG=y | ||
| 43 | CONFIG_BASE_FULL=y | ||
| 44 | CONFIG_FUTEX=y | ||
| 45 | CONFIG_EPOLL=y | ||
| 46 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 47 | CONFIG_SHMEM=y | ||
| 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 49 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 52 | # CONFIG_TINY_SHMEM is not set | ||
| 53 | CONFIG_BASE_SMALL=0 | ||
| 54 | |||
| 55 | # | ||
| 56 | # Loadable module support | ||
| 57 | # | ||
| 58 | CONFIG_MODULES=y | ||
| 59 | CONFIG_MODULE_UNLOAD=y | ||
| 60 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 61 | CONFIG_OBSOLETE_MODPARM=y | ||
| 62 | # CONFIG_MODVERSIONS is not set | ||
| 63 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 64 | CONFIG_KMOD=y | ||
| 65 | |||
| 66 | # | ||
| 67 | # System Type | ||
| 68 | # | ||
| 69 | # CONFIG_ARCH_CLPS7500 is not set | ||
| 70 | # CONFIG_ARCH_CLPS711X is not set | ||
| 71 | # CONFIG_ARCH_CO285 is not set | ||
| 72 | # CONFIG_ARCH_EBSA110 is not set | ||
| 73 | # CONFIG_ARCH_CAMELOT is not set | ||
| 74 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
| 75 | # CONFIG_ARCH_INTEGRATOR is not set | ||
| 76 | # CONFIG_ARCH_IOP3XX is not set | ||
| 77 | # CONFIG_ARCH_IXP4XX is not set | ||
| 78 | # CONFIG_ARCH_IXP2000 is not set | ||
| 79 | # CONFIG_ARCH_L7200 is not set | ||
| 80 | CONFIG_ARCH_PXA=y | ||
| 81 | # CONFIG_ARCH_RPC is not set | ||
| 82 | # CONFIG_ARCH_SA1100 is not set | ||
| 83 | # CONFIG_ARCH_S3C2410 is not set | ||
| 84 | # CONFIG_ARCH_SHARK is not set | ||
| 85 | # CONFIG_ARCH_LH7A40X is not set | ||
| 86 | # CONFIG_ARCH_OMAP is not set | ||
| 87 | # CONFIG_ARCH_VERSATILE is not set | ||
| 88 | # CONFIG_ARCH_IMX is not set | ||
| 89 | # CONFIG_ARCH_H720X is not set | ||
| 90 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 91 | |||
| 92 | # | ||
| 93 | # Intel PXA2xx Implementations | ||
| 94 | # | ||
| 95 | # CONFIG_ARCH_LUBBOCK is not set | ||
| 96 | # CONFIG_MACH_MAINSTONE is not set | ||
| 97 | # CONFIG_ARCH_PXA_IDP is not set | ||
| 98 | CONFIG_PXA_SHARPSL=y | ||
| 99 | CONFIG_PXA_SHARPSL_25x=y | ||
| 100 | # CONFIG_PXA_SHARPSL_27x is not set | ||
| 101 | # CONFIG_MACH_POODLE is not set | ||
| 102 | CONFIG_MACH_CORGI=y | ||
| 103 | CONFIG_MACH_SHEPHERD=y | ||
| 104 | CONFIG_MACH_HUSKY=y | ||
| 105 | CONFIG_PXA25x=y | ||
| 106 | CONFIG_PXA_SHARP_C7xx=y | ||
| 107 | |||
| 108 | # | ||
| 109 | # Processor Type | ||
| 110 | # | ||
| 111 | CONFIG_CPU_32=y | ||
| 112 | CONFIG_CPU_XSCALE=y | ||
| 113 | CONFIG_CPU_32v5=y | ||
| 114 | CONFIG_CPU_ABRT_EV5T=y | ||
| 115 | CONFIG_CPU_CACHE_VIVT=y | ||
| 116 | CONFIG_CPU_TLB_V4WBI=y | ||
| 117 | |||
| 118 | # | ||
| 119 | # Processor Features | ||
| 120 | # | ||
| 121 | CONFIG_ARM_THUMB=y | ||
| 122 | CONFIG_XSCALE_PMU=y | ||
| 123 | CONFIG_SHARP_PARAM=y | ||
| 124 | CONFIG_SHARP_SCOOP=y | ||
| 125 | |||
| 126 | # | ||
| 127 | # Bus support | ||
| 128 | # | ||
| 129 | CONFIG_ISA_DMA_API=y | ||
| 130 | |||
| 131 | # | ||
| 132 | # PCCARD (PCMCIA/CardBus) support | ||
| 133 | # | ||
| 134 | CONFIG_PCCARD=y | ||
| 135 | # CONFIG_PCMCIA_DEBUG is not set | ||
| 136 | CONFIG_PCMCIA=y | ||
| 137 | CONFIG_PCMCIA_LOAD_CIS=y | ||
| 138 | CONFIG_PCMCIA_IOCTL=y | ||
| 139 | |||
| 140 | # | ||
| 141 | # PC-card bridges | ||
| 142 | # | ||
| 143 | CONFIG_PCMCIA_PXA2XX=y | ||
| 144 | |||
| 145 | # | ||
| 146 | # Kernel Features | ||
| 147 | # | ||
| 148 | CONFIG_PREEMPT=y | ||
| 149 | # CONFIG_NO_IDLE_HZ is not set | ||
| 150 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
| 151 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 152 | CONFIG_FLATMEM_MANUAL=y | ||
| 153 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 154 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 155 | CONFIG_FLATMEM=y | ||
| 156 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 157 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 158 | CONFIG_ALIGNMENT_TRAP=y | ||
| 159 | |||
| 160 | # | ||
| 161 | # Boot options | ||
| 162 | # | ||
| 163 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
| 164 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
| 165 | CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" | ||
| 166 | # CONFIG_XIP_KERNEL is not set | ||
| 167 | |||
| 168 | # | ||
| 169 | # Floating point emulation | ||
| 170 | # | ||
| 171 | |||
| 172 | # | ||
| 173 | # At least one emulation must be selected | ||
| 174 | # | ||
| 175 | CONFIG_FPE_NWFPE=y | ||
| 176 | # CONFIG_FPE_NWFPE_XP is not set | ||
| 177 | # CONFIG_FPE_FASTFPE is not set | ||
| 178 | |||
| 179 | # | ||
| 180 | # Userspace binary formats | ||
| 181 | # | ||
| 182 | CONFIG_BINFMT_ELF=y | ||
| 183 | CONFIG_BINFMT_AOUT=m | ||
| 184 | CONFIG_BINFMT_MISC=m | ||
| 185 | # CONFIG_ARTHUR is not set | ||
| 186 | |||
| 187 | # | ||
| 188 | # Power management options | ||
| 189 | # | ||
| 190 | CONFIG_PM=y | ||
| 191 | CONFIG_APM=y | ||
| 192 | |||
| 193 | # | ||
| 194 | # Networking | ||
| 195 | # | ||
| 196 | CONFIG_NET=y | ||
| 197 | |||
| 198 | # | ||
| 199 | # Networking options | ||
| 200 | # | ||
| 201 | CONFIG_PACKET=y | ||
| 202 | CONFIG_PACKET_MMAP=y | ||
| 203 | CONFIG_UNIX=y | ||
| 204 | CONFIG_XFRM=y | ||
| 205 | CONFIG_XFRM_USER=m | ||
| 206 | # CONFIG_NET_KEY is not set | ||
| 207 | CONFIG_INET=y | ||
| 208 | # CONFIG_IP_MULTICAST is not set | ||
| 209 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 210 | CONFIG_IP_FIB_HASH=y | ||
| 211 | # CONFIG_IP_PNP is not set | ||
| 212 | # CONFIG_NET_IPIP is not set | ||
| 213 | # CONFIG_NET_IPGRE is not set | ||
| 214 | # CONFIG_ARPD is not set | ||
| 215 | CONFIG_SYN_COOKIES=y | ||
| 216 | # CONFIG_INET_AH is not set | ||
| 217 | # CONFIG_INET_ESP is not set | ||
| 218 | # CONFIG_INET_IPCOMP is not set | ||
| 219 | # CONFIG_INET_TUNNEL is not set | ||
| 220 | CONFIG_INET_DIAG=y | ||
| 221 | CONFIG_INET_TCP_DIAG=y | ||
| 222 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 223 | CONFIG_TCP_CONG_BIC=y | ||
| 224 | |||
| 225 | # | ||
| 226 | # IP: Virtual Server Configuration | ||
| 227 | # | ||
| 228 | # CONFIG_IP_VS is not set | ||
| 229 | CONFIG_IPV6=m | ||
| 230 | # CONFIG_IPV6_PRIVACY is not set | ||
| 231 | CONFIG_INET6_AH=m | ||
| 232 | CONFIG_INET6_ESP=m | ||
| 233 | CONFIG_INET6_IPCOMP=m | ||
| 234 | CONFIG_INET6_TUNNEL=m | ||
| 235 | CONFIG_IPV6_TUNNEL=m | ||
| 236 | CONFIG_NETFILTER=y | ||
| 237 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 238 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 239 | |||
| 240 | # | ||
| 241 | # IP: Netfilter Configuration | ||
| 242 | # | ||
| 243 | CONFIG_IP_NF_CONNTRACK=m | ||
| 244 | # CONFIG_IP_NF_CT_ACCT is not set | ||
| 245 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
| 246 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 247 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
| 248 | CONFIG_IP_NF_FTP=m | ||
| 249 | CONFIG_IP_NF_IRC=m | ||
| 250 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 251 | CONFIG_IP_NF_TFTP=m | ||
| 252 | CONFIG_IP_NF_AMANDA=m | ||
| 253 | # CONFIG_IP_NF_PPTP is not set | ||
| 254 | CONFIG_IP_NF_QUEUE=m | ||
| 255 | CONFIG_IP_NF_IPTABLES=m | ||
| 256 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
| 257 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
| 258 | CONFIG_IP_NF_MATCH_MAC=m | ||
| 259 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
| 260 | CONFIG_IP_NF_MATCH_MARK=m | ||
| 261 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
| 262 | CONFIG_IP_NF_MATCH_TOS=m | ||
| 263 | CONFIG_IP_NF_MATCH_RECENT=m | ||
| 264 | CONFIG_IP_NF_MATCH_ECN=m | ||
| 265 | CONFIG_IP_NF_MATCH_DSCP=m | ||
| 266 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
| 267 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
| 268 | CONFIG_IP_NF_MATCH_TTL=m | ||
| 269 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
| 270 | CONFIG_IP_NF_MATCH_HELPER=m | ||
| 271 | CONFIG_IP_NF_MATCH_STATE=m | ||
| 272 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
| 273 | CONFIG_IP_NF_MATCH_OWNER=m | ||
| 274 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
| 275 | CONFIG_IP_NF_MATCH_REALM=m | ||
| 276 | CONFIG_IP_NF_MATCH_SCTP=m | ||
| 277 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 278 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
| 279 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
| 280 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
| 281 | CONFIG_IP_NF_FILTER=m | ||
| 282 | # CONFIG_IP_NF_TARGET_REJECT is not set | ||
| 283 | CONFIG_IP_NF_TARGET_LOG=m | ||
| 284 | CONFIG_IP_NF_TARGET_ULOG=m | ||
| 285 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
| 286 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
| 287 | CONFIG_IP_NF_NAT=m | ||
| 288 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 289 | # CONFIG_IP_NF_TARGET_MASQUERADE is not set | ||
| 290 | # CONFIG_IP_NF_TARGET_REDIRECT is not set | ||
| 291 | # CONFIG_IP_NF_TARGET_NETMAP is not set | ||
| 292 | # CONFIG_IP_NF_TARGET_SAME is not set | ||
| 293 | # CONFIG_IP_NF_NAT_SNMP_BASIC is not set | ||
| 294 | CONFIG_IP_NF_NAT_IRC=m | ||
| 295 | CONFIG_IP_NF_NAT_FTP=m | ||
| 296 | CONFIG_IP_NF_NAT_TFTP=m | ||
| 297 | CONFIG_IP_NF_NAT_AMANDA=m | ||
| 298 | CONFIG_IP_NF_MANGLE=m | ||
| 299 | # CONFIG_IP_NF_TARGET_TOS is not set | ||
| 300 | # CONFIG_IP_NF_TARGET_ECN is not set | ||
| 301 | # CONFIG_IP_NF_TARGET_DSCP is not set | ||
| 302 | # CONFIG_IP_NF_TARGET_MARK is not set | ||
| 303 | # CONFIG_IP_NF_TARGET_CLASSIFY is not set | ||
| 304 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
| 305 | CONFIG_IP_NF_RAW=m | ||
| 306 | # CONFIG_IP_NF_TARGET_NOTRACK is not set | ||
| 307 | CONFIG_IP_NF_ARPTABLES=m | ||
| 308 | CONFIG_IP_NF_ARPFILTER=m | ||
| 309 | CONFIG_IP_NF_ARP_MANGLE=m | ||
| 310 | |||
| 311 | # | ||
| 312 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
| 313 | # | ||
| 314 | CONFIG_IP6_NF_QUEUE=m | ||
| 315 | CONFIG_IP6_NF_IPTABLES=m | ||
| 316 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
| 317 | CONFIG_IP6_NF_MATCH_MAC=m | ||
| 318 | CONFIG_IP6_NF_MATCH_RT=m | ||
| 319 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
| 320 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
| 321 | CONFIG_IP6_NF_MATCH_HL=m | ||
| 322 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
| 323 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
| 324 | CONFIG_IP6_NF_MATCH_MARK=m | ||
| 325 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
| 326 | CONFIG_IP6_NF_MATCH_AHESP=m | ||
| 327 | CONFIG_IP6_NF_MATCH_LENGTH=m | ||
| 328 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
| 329 | CONFIG_IP6_NF_FILTER=m | ||
| 330 | # CONFIG_IP6_NF_TARGET_LOG is not set | ||
| 331 | # CONFIG_IP6_NF_TARGET_REJECT is not set | ||
| 332 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
| 333 | CONFIG_IP6_NF_MANGLE=m | ||
| 334 | # CONFIG_IP6_NF_TARGET_MARK is not set | ||
| 335 | # CONFIG_IP6_NF_TARGET_HL is not set | ||
| 336 | CONFIG_IP6_NF_RAW=m | ||
| 337 | |||
| 338 | # | ||
| 339 | # DCCP Configuration (EXPERIMENTAL) | ||
| 340 | # | ||
| 341 | # CONFIG_IP_DCCP is not set | ||
| 342 | |||
| 343 | # | ||
| 344 | # SCTP Configuration (EXPERIMENTAL) | ||
| 345 | # | ||
| 346 | # CONFIG_IP_SCTP is not set | ||
| 347 | # CONFIG_ATM is not set | ||
| 348 | # CONFIG_BRIDGE is not set | ||
| 349 | # CONFIG_VLAN_8021Q is not set | ||
| 350 | # CONFIG_DECNET is not set | ||
| 351 | # CONFIG_LLC2 is not set | ||
| 352 | # CONFIG_IPX is not set | ||
| 353 | # CONFIG_ATALK is not set | ||
| 354 | # CONFIG_X25 is not set | ||
| 355 | # CONFIG_LAPB is not set | ||
| 356 | # CONFIG_NET_DIVERT is not set | ||
| 357 | # CONFIG_ECONET is not set | ||
| 358 | # CONFIG_WAN_ROUTER is not set | ||
| 359 | # CONFIG_NET_SCHED is not set | ||
| 360 | CONFIG_NET_CLS_ROUTE=y | ||
| 361 | |||
| 362 | # | ||
| 363 | # Network testing | ||
| 364 | # | ||
| 365 | # CONFIG_NET_PKTGEN is not set | ||
| 366 | # CONFIG_HAMRADIO is not set | ||
| 367 | CONFIG_IRDA=m | ||
| 368 | |||
| 369 | # | ||
| 370 | # IrDA protocols | ||
| 371 | # | ||
| 372 | CONFIG_IRLAN=m | ||
| 373 | CONFIG_IRNET=m | ||
| 374 | CONFIG_IRCOMM=m | ||
| 375 | # CONFIG_IRDA_ULTRA is not set | ||
| 376 | |||
| 377 | # | ||
| 378 | # IrDA options | ||
| 379 | # | ||
| 380 | # CONFIG_IRDA_CACHE_LAST_LSAP is not set | ||
| 381 | # CONFIG_IRDA_FAST_RR is not set | ||
| 382 | # CONFIG_IRDA_DEBUG is not set | ||
| 383 | |||
| 384 | # | ||
| 385 | # Infrared-port device drivers | ||
| 386 | # | ||
| 387 | |||
| 388 | # | ||
| 389 | # SIR device drivers | ||
| 390 | # | ||
| 391 | # CONFIG_IRTTY_SIR is not set | ||
| 392 | |||
| 393 | # | ||
| 394 | # Dongle support | ||
| 395 | # | ||
| 396 | |||
| 397 | # | ||
| 398 | # Old SIR device drivers | ||
| 399 | # | ||
| 400 | # CONFIG_IRPORT_SIR is not set | ||
| 401 | |||
| 402 | # | ||
| 403 | # Old Serial dongle support | ||
| 404 | # | ||
| 405 | |||
| 406 | # | ||
| 407 | # FIR device drivers | ||
| 408 | # | ||
| 409 | # CONFIG_USB_IRDA is not set | ||
| 410 | # CONFIG_SIGMATEL_FIR is not set | ||
| 411 | # CONFIG_NSC_FIR is not set | ||
| 412 | # CONFIG_WINBOND_FIR is not set | ||
| 413 | # CONFIG_SMC_IRCC_FIR is not set | ||
| 414 | # CONFIG_ALI_FIR is not set | ||
| 415 | # CONFIG_VIA_FIR is not set | ||
| 416 | CONFIG_BT=m | ||
| 417 | CONFIG_BT_L2CAP=m | ||
| 418 | CONFIG_BT_SCO=m | ||
| 419 | CONFIG_BT_RFCOMM=m | ||
| 420 | CONFIG_BT_RFCOMM_TTY=y | ||
| 421 | CONFIG_BT_BNEP=m | ||
| 422 | CONFIG_BT_BNEP_MC_FILTER=y | ||
| 423 | CONFIG_BT_BNEP_PROTO_FILTER=y | ||
| 424 | CONFIG_BT_HIDP=m | ||
| 425 | |||
| 426 | # | ||
| 427 | # Bluetooth device drivers | ||
| 428 | # | ||
| 429 | CONFIG_BT_HCIUSB=m | ||
| 430 | # CONFIG_BT_HCIUSB_SCO is not set | ||
| 431 | CONFIG_BT_HCIUART=m | ||
| 432 | CONFIG_BT_HCIUART_H4=y | ||
| 433 | CONFIG_BT_HCIUART_BCSP=y | ||
| 434 | CONFIG_BT_HCIUART_BCSP_TXCRC=y | ||
| 435 | CONFIG_BT_HCIBCM203X=m | ||
| 436 | CONFIG_BT_HCIBPA10X=m | ||
| 437 | CONFIG_BT_HCIBFUSB=m | ||
| 438 | CONFIG_BT_HCIDTL1=m | ||
| 439 | CONFIG_BT_HCIBT3C=m | ||
| 440 | CONFIG_BT_HCIBLUECARD=m | ||
| 441 | CONFIG_BT_HCIBTUART=m | ||
| 442 | CONFIG_BT_HCIVHCI=m | ||
| 443 | CONFIG_IEEE80211=m | ||
| 444 | # CONFIG_IEEE80211_DEBUG is not set | ||
| 445 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
| 446 | # CONFIG_IEEE80211_CRYPT_CCMP is not set | ||
| 447 | # CONFIG_IEEE80211_CRYPT_TKIP is not set | ||
| 448 | |||
| 449 | # | ||
| 450 | # Device Drivers | ||
| 451 | # | ||
| 452 | |||
| 453 | # | ||
| 454 | # Generic Driver Options | ||
| 455 | # | ||
| 456 | CONFIG_STANDALONE=y | ||
| 457 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 458 | CONFIG_FW_LOADER=y | ||
| 459 | # CONFIG_DEBUG_DRIVER is not set | ||
| 460 | |||
| 461 | # | ||
| 462 | # Memory Technology Devices (MTD) | ||
| 463 | # | ||
| 464 | CONFIG_MTD=y | ||
| 465 | # CONFIG_MTD_DEBUG is not set | ||
| 466 | # CONFIG_MTD_CONCAT is not set | ||
| 467 | CONFIG_MTD_PARTITIONS=y | ||
| 468 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 469 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 470 | # CONFIG_MTD_AFS_PARTS is not set | ||
| 471 | |||
| 472 | # | ||
| 473 | # User Modules And Translation Layers | ||
| 474 | # | ||
| 475 | CONFIG_MTD_CHAR=y | ||
| 476 | CONFIG_MTD_BLOCK=y | ||
| 477 | # CONFIG_FTL is not set | ||
| 478 | # CONFIG_NFTL is not set | ||
| 479 | # CONFIG_INFTL is not set | ||
| 480 | |||
| 481 | # | ||
| 482 | # RAM/ROM/Flash chip drivers | ||
| 483 | # | ||
| 484 | # CONFIG_MTD_CFI is not set | ||
| 485 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 486 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 487 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 488 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 489 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 490 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 491 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 492 | CONFIG_MTD_CFI_I1=y | ||
| 493 | CONFIG_MTD_CFI_I2=y | ||
| 494 | # CONFIG_MTD_CFI_I4 is not set | ||
| 495 | # CONFIG_MTD_CFI_I8 is not set | ||
| 496 | # CONFIG_MTD_RAM is not set | ||
| 497 | CONFIG_MTD_ROM=y | ||
| 498 | # CONFIG_MTD_ABSENT is not set | ||
| 499 | |||
| 500 | # | ||
| 501 | # Mapping drivers for chip access | ||
| 502 | # | ||
| 503 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 504 | CONFIG_MTD_SHARP_SL=y | ||
| 505 | # CONFIG_MTD_PLATRAM is not set | ||
| 506 | |||
| 507 | # | ||
| 508 | # Self-contained MTD device drivers | ||
| 509 | # | ||
| 510 | # CONFIG_MTD_SLRAM is not set | ||
| 511 | # CONFIG_MTD_PHRAM is not set | ||
| 512 | # CONFIG_MTD_MTDRAM is not set | ||
| 513 | # CONFIG_MTD_BLKMTD is not set | ||
| 514 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 515 | |||
| 516 | # | ||
| 517 | # Disk-On-Chip Device Drivers | ||
| 518 | # | ||
| 519 | # CONFIG_MTD_DOC2000 is not set | ||
| 520 | # CONFIG_MTD_DOC2001 is not set | ||
| 521 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 522 | |||
| 523 | # | ||
| 524 | # NAND Flash Device Drivers | ||
| 525 | # | ||
| 526 | CONFIG_MTD_NAND=y | ||
| 527 | CONFIG_MTD_NAND_VERIFY_WRITE=y | ||
| 528 | # CONFIG_MTD_NAND_H1900 is not set | ||
| 529 | CONFIG_MTD_NAND_IDS=y | ||
| 530 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 531 | CONFIG_MTD_NAND_SHARPSL=y | ||
| 532 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 533 | |||
| 534 | # | ||
| 535 | # Parallel port support | ||
| 536 | # | ||
| 537 | # CONFIG_PARPORT is not set | ||
| 538 | |||
| 539 | # | ||
| 540 | # Plug and Play support | ||
| 541 | # | ||
| 542 | |||
| 543 | # | ||
| 544 | # Block devices | ||
| 545 | # | ||
| 546 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 547 | CONFIG_BLK_DEV_LOOP=y | ||
| 548 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 549 | # CONFIG_BLK_DEV_NBD is not set | ||
| 550 | # CONFIG_BLK_DEV_UB is not set | ||
| 551 | # CONFIG_BLK_DEV_RAM is not set | ||
| 552 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 553 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 554 | |||
| 555 | # | ||
| 556 | # IO Schedulers | ||
| 557 | # | ||
| 558 | CONFIG_IOSCHED_NOOP=y | ||
| 559 | CONFIG_IOSCHED_AS=y | ||
| 560 | CONFIG_IOSCHED_DEADLINE=y | ||
| 561 | CONFIG_IOSCHED_CFQ=y | ||
| 562 | # CONFIG_ATA_OVER_ETH is not set | ||
| 563 | |||
| 564 | # | ||
| 565 | # ATA/ATAPI/MFM/RLL support | ||
| 566 | # | ||
| 567 | CONFIG_IDE=y | ||
| 568 | CONFIG_BLK_DEV_IDE=y | ||
| 569 | |||
| 570 | # | ||
| 571 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 572 | # | ||
| 573 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 574 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 575 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
| 576 | CONFIG_BLK_DEV_IDECS=y | ||
| 577 | # CONFIG_BLK_DEV_IDECD is not set | ||
| 578 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 579 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 580 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
| 581 | # CONFIG_IDE_TASK_IOCTL is not set | ||
| 582 | |||
| 583 | # | ||
| 584 | # IDE chipset support/bugfixes | ||
| 585 | # | ||
| 586 | CONFIG_IDE_GENERIC=y | ||
| 587 | # CONFIG_IDE_ARM is not set | ||
| 588 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
| 589 | # CONFIG_IDEDMA_AUTO is not set | ||
| 590 | # CONFIG_BLK_DEV_HD is not set | ||
| 591 | |||
| 592 | # | ||
| 593 | # SCSI device support | ||
| 594 | # | ||
| 595 | # CONFIG_RAID_ATTRS is not set | ||
| 596 | CONFIG_SCSI=m | ||
| 597 | CONFIG_SCSI_PROC_FS=y | ||
| 598 | |||
| 599 | # | ||
| 600 | # SCSI support type (disk, tape, CD-ROM) | ||
| 601 | # | ||
| 602 | CONFIG_BLK_DEV_SD=m | ||
| 603 | CONFIG_CHR_DEV_ST=m | ||
| 604 | CONFIG_CHR_DEV_OSST=m | ||
| 605 | CONFIG_BLK_DEV_SR=m | ||
| 606 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
| 607 | CONFIG_CHR_DEV_SG=m | ||
| 608 | # CONFIG_CHR_DEV_SCH is not set | ||
| 609 | |||
| 610 | # | ||
| 611 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
| 612 | # | ||
| 613 | CONFIG_SCSI_MULTI_LUN=y | ||
| 614 | # CONFIG_SCSI_CONSTANTS is not set | ||
| 615 | # CONFIG_SCSI_LOGGING is not set | ||
| 616 | |||
| 617 | # | ||
| 618 | # SCSI Transport Attributes | ||
| 619 | # | ||
| 620 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
| 621 | # CONFIG_SCSI_FC_ATTRS is not set | ||
| 622 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 623 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 624 | |||
| 625 | # | ||
| 626 | # SCSI low-level drivers | ||
| 627 | # | ||
| 628 | # CONFIG_SCSI_SATA is not set | ||
| 629 | # CONFIG_SCSI_DEBUG is not set | ||
| 630 | |||
| 631 | # | ||
| 632 | # PCMCIA SCSI adapter support | ||
| 633 | # | ||
| 634 | # CONFIG_PCMCIA_AHA152X is not set | ||
| 635 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
| 636 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
| 637 | # CONFIG_PCMCIA_QLOGIC is not set | ||
| 638 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
| 639 | |||
| 640 | # | ||
| 641 | # Multi-device support (RAID and LVM) | ||
| 642 | # | ||
| 643 | # CONFIG_MD is not set | ||
| 644 | |||
| 645 | # | ||
| 646 | # Fusion MPT device support | ||
| 647 | # | ||
| 648 | # CONFIG_FUSION is not set | ||
| 649 | |||
| 650 | # | ||
| 651 | # IEEE 1394 (FireWire) support | ||
| 652 | # | ||
| 653 | |||
| 654 | # | ||
| 655 | # I2O device support | ||
| 656 | # | ||
| 657 | |||
| 658 | # | ||
| 659 | # Network device support | ||
| 660 | # | ||
| 661 | CONFIG_NETDEVICES=y | ||
| 662 | # CONFIG_DUMMY is not set | ||
| 663 | # CONFIG_BONDING is not set | ||
| 664 | # CONFIG_EQUALIZER is not set | ||
| 665 | # CONFIG_TUN is not set | ||
| 666 | |||
| 667 | # | ||
| 668 | # PHY device support | ||
| 669 | # | ||
| 670 | # CONFIG_PHYLIB is not set | ||
| 671 | |||
| 672 | # | ||
| 673 | # Ethernet (10 or 100Mbit) | ||
| 674 | # | ||
| 675 | CONFIG_NET_ETHERNET=y | ||
| 676 | CONFIG_MII=m | ||
| 677 | # CONFIG_SMC91X is not set | ||
| 678 | # CONFIG_DM9000 is not set | ||
| 679 | |||
| 680 | # | ||
| 681 | # Ethernet (1000 Mbit) | ||
| 682 | # | ||
| 683 | |||
| 684 | # | ||
| 685 | # Ethernet (10000 Mbit) | ||
| 686 | # | ||
| 687 | |||
| 688 | # | ||
| 689 | # Token Ring devices | ||
| 690 | # | ||
| 691 | |||
| 692 | # | ||
| 693 | # Wireless LAN (non-hamradio) | ||
| 694 | # | ||
| 695 | CONFIG_NET_RADIO=y | ||
| 696 | |||
| 697 | # | ||
| 698 | # Obsolete Wireless cards support (pre-802.11) | ||
| 699 | # | ||
| 700 | # CONFIG_STRIP is not set | ||
| 701 | # CONFIG_PCMCIA_WAVELAN is not set | ||
| 702 | # CONFIG_PCMCIA_NETWAVE is not set | ||
| 703 | |||
| 704 | # | ||
| 705 | # Wireless 802.11 Frequency Hopping cards support | ||
| 706 | # | ||
| 707 | # CONFIG_PCMCIA_RAYCS is not set | ||
| 708 | |||
| 709 | # | ||
| 710 | # Wireless 802.11b ISA/PCI cards support | ||
| 711 | # | ||
| 712 | CONFIG_HERMES=m | ||
| 713 | # CONFIG_ATMEL is not set | ||
| 714 | |||
| 715 | # | ||
| 716 | # Wireless 802.11b Pcmcia/Cardbus cards support | ||
| 717 | # | ||
| 718 | CONFIG_PCMCIA_HERMES=m | ||
| 719 | CONFIG_PCMCIA_SPECTRUM=m | ||
| 720 | # CONFIG_AIRO_CS is not set | ||
| 721 | # CONFIG_PCMCIA_WL3501 is not set | ||
| 722 | CONFIG_HOSTAP=m | ||
| 723 | CONFIG_HOSTAP_FIRMWARE=y | ||
| 724 | CONFIG_HOSTAP_CS=m | ||
| 725 | CONFIG_NET_WIRELESS=y | ||
| 726 | |||
| 727 | # | ||
| 728 | # PCMCIA network device support | ||
| 729 | # | ||
| 730 | CONFIG_NET_PCMCIA=y | ||
| 731 | # CONFIG_PCMCIA_3C589 is not set | ||
| 732 | # CONFIG_PCMCIA_3C574 is not set | ||
| 733 | # CONFIG_PCMCIA_FMVJ18X is not set | ||
| 734 | CONFIG_PCMCIA_PCNET=m | ||
| 735 | # CONFIG_PCMCIA_NMCLAN is not set | ||
| 736 | # CONFIG_PCMCIA_SMC91C92 is not set | ||
| 737 | # CONFIG_PCMCIA_XIRC2PS is not set | ||
| 738 | # CONFIG_PCMCIA_AXNET is not set | ||
| 739 | |||
| 740 | # | ||
| 741 | # Wan interfaces | ||
| 742 | # | ||
| 743 | # CONFIG_WAN is not set | ||
| 744 | CONFIG_PPP=m | ||
| 745 | # CONFIG_PPP_MULTILINK is not set | ||
| 746 | # CONFIG_PPP_FILTER is not set | ||
| 747 | CONFIG_PPP_ASYNC=m | ||
| 748 | # CONFIG_PPP_SYNC_TTY is not set | ||
| 749 | # CONFIG_PPP_DEFLATE is not set | ||
| 750 | CONFIG_PPP_BSDCOMP=m | ||
| 751 | # CONFIG_PPPOE is not set | ||
| 752 | # CONFIG_SLIP is not set | ||
| 753 | # CONFIG_SHAPER is not set | ||
| 754 | # CONFIG_NETCONSOLE is not set | ||
| 755 | # CONFIG_NETPOLL is not set | ||
| 756 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 757 | |||
| 758 | # | ||
| 759 | # ISDN subsystem | ||
| 760 | # | ||
| 761 | # CONFIG_ISDN is not set | ||
| 762 | |||
| 763 | # | ||
| 764 | # Input device support | ||
| 765 | # | ||
| 766 | CONFIG_INPUT=y | ||
| 767 | |||
| 768 | # | ||
| 769 | # Userland interfaces | ||
| 770 | # | ||
| 771 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 772 | # CONFIG_INPUT_JOYDEV is not set | ||
| 773 | # CONFIG_INPUT_TSDEV is not set | ||
| 774 | CONFIG_INPUT_EVDEV=y | ||
| 775 | # CONFIG_INPUT_EVBUG is not set | ||
| 776 | |||
| 777 | # | ||
| 778 | # Input Device Drivers | ||
| 779 | # | ||
| 780 | CONFIG_INPUT_KEYBOARD=y | ||
| 781 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 782 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 783 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 784 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 785 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 786 | CONFIG_KEYBOARD_CORGI=y | ||
| 787 | CONFIG_KEYBOARD_SPITZ=y | ||
| 788 | # CONFIG_INPUT_MOUSE is not set | ||
| 789 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 790 | CONFIG_INPUT_TOUCHSCREEN=y | ||
| 791 | CONFIG_TOUCHSCREEN_CORGI=y | ||
| 792 | # CONFIG_TOUCHSCREEN_GUNZE is not set | ||
| 793 | # CONFIG_TOUCHSCREEN_ELO is not set | ||
| 794 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | ||
| 795 | # CONFIG_TOUCHSCREEN_MK712 is not set | ||
| 796 | CONFIG_INPUT_MISC=y | ||
| 797 | CONFIG_INPUT_UINPUT=m | ||
| 798 | |||
| 799 | # | ||
| 800 | # Hardware I/O ports | ||
| 801 | # | ||
| 802 | # CONFIG_SERIO is not set | ||
| 803 | # CONFIG_GAMEPORT is not set | ||
| 804 | |||
| 805 | # | ||
| 806 | # Character devices | ||
| 807 | # | ||
| 808 | CONFIG_VT=y | ||
| 809 | CONFIG_VT_CONSOLE=y | ||
| 810 | CONFIG_HW_CONSOLE=y | ||
| 811 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 812 | |||
| 813 | # | ||
| 814 | # Serial drivers | ||
| 815 | # | ||
| 816 | CONFIG_SERIAL_8250=m | ||
| 817 | CONFIG_SERIAL_8250_CS=m | ||
| 818 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
| 819 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
| 820 | |||
| 821 | # | ||
| 822 | # Non-8250 serial port support | ||
| 823 | # | ||
| 824 | CONFIG_SERIAL_PXA=y | ||
| 825 | CONFIG_SERIAL_PXA_CONSOLE=y | ||
| 826 | CONFIG_SERIAL_CORE=y | ||
| 827 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 828 | CONFIG_UNIX98_PTYS=y | ||
| 829 | # CONFIG_LEGACY_PTYS is not set | ||
| 830 | |||
| 831 | # | ||
| 832 | # IPMI | ||
| 833 | # | ||
| 834 | # CONFIG_IPMI_HANDLER is not set | ||
| 835 | |||
| 836 | # | ||
| 837 | # Watchdog Cards | ||
| 838 | # | ||
| 839 | # CONFIG_WATCHDOG is not set | ||
| 840 | # CONFIG_NVRAM is not set | ||
| 841 | # CONFIG_RTC is not set | ||
| 842 | # CONFIG_DTLK is not set | ||
| 843 | # CONFIG_R3964 is not set | ||
| 844 | |||
| 845 | # | ||
| 846 | # Ftape, the floppy tape device driver | ||
| 847 | # | ||
| 848 | |||
| 849 | # | ||
| 850 | # PCMCIA character devices | ||
| 851 | # | ||
| 852 | # CONFIG_SYNCLINK_CS is not set | ||
| 853 | # CONFIG_RAW_DRIVER is not set | ||
| 854 | |||
| 855 | # | ||
| 856 | # TPM devices | ||
| 857 | # | ||
| 858 | |||
| 859 | # | ||
| 860 | # I2C support | ||
| 861 | # | ||
| 862 | CONFIG_I2C=y | ||
| 863 | # CONFIG_I2C_CHARDEV is not set | ||
| 864 | |||
| 865 | # | ||
| 866 | # I2C Algorithms | ||
| 867 | # | ||
| 868 | CONFIG_I2C_ALGOBIT=y | ||
| 869 | # CONFIG_I2C_ALGOPCF is not set | ||
| 870 | # CONFIG_I2C_ALGOPCA is not set | ||
| 871 | |||
| 872 | # | ||
| 873 | # I2C Hardware Bus support | ||
| 874 | # | ||
| 875 | CONFIG_I2C_PXA=y | ||
| 876 | # CONFIG_I2C_PXA_SLAVE is not set | ||
| 877 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 878 | # CONFIG_I2C_STUB is not set | ||
| 879 | # CONFIG_I2C_PCA_ISA is not set | ||
| 880 | |||
| 881 | # | ||
| 882 | # Miscellaneous I2C Chip support | ||
| 883 | # | ||
| 884 | # CONFIG_SENSORS_DS1337 is not set | ||
| 885 | # CONFIG_SENSORS_DS1374 is not set | ||
| 886 | # CONFIG_SENSORS_EEPROM is not set | ||
| 887 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 888 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 889 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 890 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 891 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 892 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 893 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 894 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 895 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 896 | |||
| 897 | # | ||
| 898 | # Hardware Monitoring support | ||
| 899 | # | ||
| 900 | CONFIG_HWMON=y | ||
| 901 | # CONFIG_HWMON_VID is not set | ||
| 902 | # CONFIG_SENSORS_ADM1021 is not set | ||
| 903 | # CONFIG_SENSORS_ADM1025 is not set | ||
| 904 | # CONFIG_SENSORS_ADM1026 is not set | ||
| 905 | # CONFIG_SENSORS_ADM1031 is not set | ||
| 906 | # CONFIG_SENSORS_ADM9240 is not set | ||
| 907 | # CONFIG_SENSORS_ASB100 is not set | ||
| 908 | # CONFIG_SENSORS_ATXP1 is not set | ||
| 909 | # CONFIG_SENSORS_DS1621 is not set | ||
| 910 | # CONFIG_SENSORS_FSCHER is not set | ||
| 911 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 912 | # CONFIG_SENSORS_GL518SM is not set | ||
| 913 | # CONFIG_SENSORS_GL520SM is not set | ||
| 914 | # CONFIG_SENSORS_IT87 is not set | ||
| 915 | # CONFIG_SENSORS_LM63 is not set | ||
| 916 | # CONFIG_SENSORS_LM75 is not set | ||
| 917 | # CONFIG_SENSORS_LM77 is not set | ||
| 918 | # CONFIG_SENSORS_LM78 is not set | ||
| 919 | # CONFIG_SENSORS_LM80 is not set | ||
| 920 | # CONFIG_SENSORS_LM83 is not set | ||
| 921 | # CONFIG_SENSORS_LM85 is not set | ||
| 922 | # CONFIG_SENSORS_LM87 is not set | ||
| 923 | # CONFIG_SENSORS_LM90 is not set | ||
| 924 | # CONFIG_SENSORS_LM92 is not set | ||
| 925 | # CONFIG_SENSORS_MAX1619 is not set | ||
| 926 | # CONFIG_SENSORS_PC87360 is not set | ||
| 927 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
| 928 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
| 929 | # CONFIG_SENSORS_W83781D is not set | ||
| 930 | # CONFIG_SENSORS_W83792D is not set | ||
| 931 | # CONFIG_SENSORS_W83L785TS is not set | ||
| 932 | # CONFIG_SENSORS_W83627HF is not set | ||
| 933 | # CONFIG_SENSORS_W83627EHF is not set | ||
| 934 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 935 | |||
| 936 | # | ||
| 937 | # Misc devices | ||
| 938 | # | ||
| 939 | |||
| 940 | # | ||
| 941 | # Multimedia Capabilities Port drivers | ||
| 942 | # | ||
| 943 | |||
| 944 | # | ||
| 945 | # Multimedia devices | ||
| 946 | # | ||
| 947 | CONFIG_VIDEO_DEV=m | ||
| 948 | |||
| 949 | # | ||
| 950 | # Video For Linux | ||
| 951 | # | ||
| 952 | |||
| 953 | # | ||
| 954 | # Video Adapters | ||
| 955 | # | ||
| 956 | # CONFIG_VIDEO_CPIA is not set | ||
| 957 | # CONFIG_VIDEO_SAA5246A is not set | ||
| 958 | # CONFIG_VIDEO_SAA5249 is not set | ||
| 959 | # CONFIG_TUNER_3036 is not set | ||
| 960 | # CONFIG_VIDEO_OVCAMCHIP is not set | ||
| 961 | |||
| 962 | # | ||
| 963 | # Radio Adapters | ||
| 964 | # | ||
| 965 | # CONFIG_RADIO_MAESTRO is not set | ||
| 966 | |||
| 967 | # | ||
| 968 | # Digital Video Broadcasting Devices | ||
| 969 | # | ||
| 970 | # CONFIG_DVB is not set | ||
| 971 | |||
| 972 | # | ||
| 973 | # Graphics support | ||
| 974 | # | ||
| 975 | CONFIG_FB=y | ||
| 976 | CONFIG_FB_CFB_FILLRECT=y | ||
| 977 | CONFIG_FB_CFB_COPYAREA=y | ||
| 978 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 979 | CONFIG_FB_SOFT_CURSOR=y | ||
| 980 | # CONFIG_FB_MACMODES is not set | ||
| 981 | # CONFIG_FB_MODE_HELPERS is not set | ||
| 982 | # CONFIG_FB_TILEBLITTING is not set | ||
| 983 | # CONFIG_FB_PXA is not set | ||
| 984 | CONFIG_FB_W100=y | ||
| 985 | # CONFIG_FB_S1D13XXX is not set | ||
| 986 | # CONFIG_FB_VIRTUAL is not set | ||
| 987 | |||
| 988 | # | ||
| 989 | # Console display driver support | ||
| 990 | # | ||
| 991 | # CONFIG_VGA_CONSOLE is not set | ||
| 992 | CONFIG_DUMMY_CONSOLE=y | ||
| 993 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 994 | CONFIG_FONTS=y | ||
| 995 | CONFIG_FONT_8x8=y | ||
| 996 | CONFIG_FONT_8x16=y | ||
| 997 | # CONFIG_FONT_6x11 is not set | ||
| 998 | # CONFIG_FONT_7x14 is not set | ||
| 999 | # CONFIG_FONT_PEARL_8x8 is not set | ||
| 1000 | # CONFIG_FONT_ACORN_8x8 is not set | ||
| 1001 | # CONFIG_FONT_MINI_4x6 is not set | ||
| 1002 | # CONFIG_FONT_SUN8x16 is not set | ||
| 1003 | # CONFIG_FONT_SUN12x22 is not set | ||
| 1004 | # CONFIG_FONT_10x18 is not set | ||
| 1005 | |||
| 1006 | # | ||
| 1007 | # Logo configuration | ||
| 1008 | # | ||
| 1009 | # CONFIG_LOGO is not set | ||
| 1010 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
| 1011 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
| 1012 | CONFIG_BACKLIGHT_DEVICE=y | ||
| 1013 | # CONFIG_LCD_CLASS_DEVICE is not set | ||
| 1014 | CONFIG_BACKLIGHT_CORGI=y | ||
| 1015 | |||
| 1016 | # | ||
| 1017 | # Sound | ||
| 1018 | # | ||
| 1019 | CONFIG_SOUND=y | ||
| 1020 | |||
| 1021 | # | ||
| 1022 | # Advanced Linux Sound Architecture | ||
| 1023 | # | ||
| 1024 | # CONFIG_SND is not set | ||
| 1025 | |||
| 1026 | # | ||
| 1027 | # Open Sound System | ||
| 1028 | # | ||
| 1029 | CONFIG_SOUND_PRIME=y | ||
| 1030 | # CONFIG_SOUND_MSNDCLAS is not set | ||
| 1031 | # CONFIG_SOUND_MSNDPIN is not set | ||
| 1032 | CONFIG_SOUND_OSS=y | ||
| 1033 | # CONFIG_SOUND_TRACEINIT is not set | ||
| 1034 | # CONFIG_SOUND_DMAP is not set | ||
| 1035 | # CONFIG_SOUND_AD1816 is not set | ||
| 1036 | # CONFIG_SOUND_SGALAXY is not set | ||
| 1037 | # CONFIG_SOUND_ADLIB is not set | ||
| 1038 | # CONFIG_SOUND_ACI_MIXER is not set | ||
| 1039 | # CONFIG_SOUND_CS4232 is not set | ||
| 1040 | # CONFIG_SOUND_SSCAPE is not set | ||
| 1041 | # CONFIG_SOUND_GUS is not set | ||
| 1042 | # CONFIG_SOUND_VMIDI is not set | ||
| 1043 | # CONFIG_SOUND_TRIX is not set | ||
| 1044 | # CONFIG_SOUND_MSS is not set | ||
| 1045 | # CONFIG_SOUND_MPU401 is not set | ||
| 1046 | # CONFIG_SOUND_NM256 is not set | ||
| 1047 | # CONFIG_SOUND_MAD16 is not set | ||
| 1048 | # CONFIG_SOUND_PAS is not set | ||
| 1049 | # CONFIG_SOUND_PSS is not set | ||
| 1050 | # CONFIG_SOUND_SB is not set | ||
| 1051 | # CONFIG_SOUND_AWE32_SYNTH is not set | ||
| 1052 | # CONFIG_SOUND_WAVEFRONT is not set | ||
| 1053 | # CONFIG_SOUND_MAUI is not set | ||
| 1054 | # CONFIG_SOUND_YM3812 is not set | ||
| 1055 | # CONFIG_SOUND_OPL3SA1 is not set | ||
| 1056 | # CONFIG_SOUND_OPL3SA2 is not set | ||
| 1057 | # CONFIG_SOUND_UART6850 is not set | ||
| 1058 | # CONFIG_SOUND_AEDSP16 is not set | ||
| 1059 | # CONFIG_SOUND_TVMIXER is not set | ||
| 1060 | # CONFIG_SOUND_AD1980 is not set | ||
| 1061 | |||
| 1062 | # | ||
| 1063 | # USB support | ||
| 1064 | # | ||
| 1065 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 1066 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
| 1067 | CONFIG_USB=m | ||
| 1068 | # CONFIG_USB_DEBUG is not set | ||
| 1069 | |||
| 1070 | # | ||
| 1071 | # Miscellaneous USB options | ||
| 1072 | # | ||
| 1073 | CONFIG_USB_DEVICEFS=y | ||
| 1074 | # CONFIG_USB_BANDWIDTH is not set | ||
| 1075 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
| 1076 | # CONFIG_USB_SUSPEND is not set | ||
| 1077 | # CONFIG_USB_OTG is not set | ||
| 1078 | |||
| 1079 | # | ||
| 1080 | # USB Host Controller Drivers | ||
| 1081 | # | ||
| 1082 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 1083 | CONFIG_USB_SL811_HCD=m | ||
| 1084 | CONFIG_USB_SL811_CS=m | ||
| 1085 | |||
| 1086 | # | ||
| 1087 | # USB Device Class drivers | ||
| 1088 | # | ||
| 1089 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set | ||
| 1090 | |||
| 1091 | # | ||
| 1092 | # USB Bluetooth TTY can only be used with disabled Bluetooth subsystem | ||
| 1093 | # | ||
| 1094 | CONFIG_USB_ACM=m | ||
| 1095 | CONFIG_USB_PRINTER=m | ||
| 1096 | |||
| 1097 | # | ||
| 1098 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
| 1099 | # | ||
| 1100 | CONFIG_USB_STORAGE=m | ||
| 1101 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
| 1102 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 1103 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
| 1104 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
| 1105 | # CONFIG_USB_STORAGE_DPCM is not set | ||
| 1106 | # CONFIG_USB_STORAGE_USBAT is not set | ||
| 1107 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 1108 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 1109 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 1110 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 1111 | |||
| 1112 | # | ||
| 1113 | # USB Input Devices | ||
| 1114 | # | ||
| 1115 | CONFIG_USB_HID=m | ||
| 1116 | CONFIG_USB_HIDINPUT=y | ||
| 1117 | # CONFIG_HID_FF is not set | ||
| 1118 | # CONFIG_USB_HIDDEV is not set | ||
| 1119 | |||
| 1120 | # | ||
| 1121 | # USB HID Boot Protocol drivers | ||
| 1122 | # | ||
| 1123 | CONFIG_USB_KBD=m | ||
| 1124 | CONFIG_USB_MOUSE=m | ||
| 1125 | CONFIG_USB_AIPTEK=m | ||
| 1126 | CONFIG_USB_WACOM=m | ||
| 1127 | # CONFIG_USB_ACECAD is not set | ||
| 1128 | CONFIG_USB_KBTAB=m | ||
| 1129 | CONFIG_USB_POWERMATE=m | ||
| 1130 | CONFIG_USB_MTOUCH=m | ||
| 1131 | # CONFIG_USB_ITMTOUCH is not set | ||
| 1132 | CONFIG_USB_EGALAX=m | ||
| 1133 | # CONFIG_USB_YEALINK is not set | ||
| 1134 | CONFIG_USB_XPAD=m | ||
| 1135 | CONFIG_USB_ATI_REMOTE=m | ||
| 1136 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 1137 | # CONFIG_USB_APPLETOUCH is not set | ||
| 1138 | |||
| 1139 | # | ||
| 1140 | # USB Imaging devices | ||
| 1141 | # | ||
| 1142 | CONFIG_USB_MDC800=m | ||
| 1143 | CONFIG_USB_MICROTEK=m | ||
| 1144 | |||
| 1145 | # | ||
| 1146 | # USB Multimedia devices | ||
| 1147 | # | ||
| 1148 | CONFIG_USB_DABUSB=m | ||
| 1149 | CONFIG_USB_VICAM=m | ||
| 1150 | CONFIG_USB_DSBR=m | ||
| 1151 | CONFIG_USB_IBMCAM=m | ||
| 1152 | CONFIG_USB_KONICAWC=m | ||
| 1153 | CONFIG_USB_OV511=m | ||
| 1154 | CONFIG_USB_SE401=m | ||
| 1155 | CONFIG_USB_SN9C102=m | ||
| 1156 | CONFIG_USB_STV680=m | ||
| 1157 | # CONFIG_USB_PWC is not set | ||
| 1158 | |||
| 1159 | # | ||
| 1160 | # USB Network Adapters | ||
| 1161 | # | ||
| 1162 | CONFIG_USB_CATC=m | ||
| 1163 | CONFIG_USB_KAWETH=m | ||
| 1164 | CONFIG_USB_PEGASUS=m | ||
| 1165 | CONFIG_USB_RTL8150=m | ||
| 1166 | CONFIG_USB_USBNET=m | ||
| 1167 | CONFIG_USB_NET_AX8817X=m | ||
| 1168 | CONFIG_USB_NET_CDCETHER=m | ||
| 1169 | # CONFIG_USB_NET_GL620A is not set | ||
| 1170 | CONFIG_USB_NET_NET1080=m | ||
| 1171 | # CONFIG_USB_NET_PLUSB is not set | ||
| 1172 | # CONFIG_USB_NET_RNDIS_HOST is not set | ||
| 1173 | # CONFIG_USB_NET_CDC_SUBSET is not set | ||
| 1174 | CONFIG_USB_NET_ZAURUS=m | ||
| 1175 | # CONFIG_USB_ZD1201 is not set | ||
| 1176 | CONFIG_USB_MON=y | ||
| 1177 | |||
| 1178 | # | ||
| 1179 | # USB port drivers | ||
| 1180 | # | ||
| 1181 | |||
| 1182 | # | ||
| 1183 | # USB Serial Converter support | ||
| 1184 | # | ||
| 1185 | CONFIG_USB_SERIAL=m | ||
| 1186 | CONFIG_USB_SERIAL_GENERIC=y | ||
| 1187 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 1188 | CONFIG_USB_SERIAL_BELKIN=m | ||
| 1189 | # CONFIG_USB_SERIAL_WHITEHEAT is not set | ||
| 1190 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | ||
| 1191 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 1192 | CONFIG_USB_SERIAL_CYPRESS_M8=m | ||
| 1193 | CONFIG_USB_SERIAL_EMPEG=m | ||
| 1194 | CONFIG_USB_SERIAL_FTDI_SIO=m | ||
| 1195 | CONFIG_USB_SERIAL_VISOR=m | ||
| 1196 | CONFIG_USB_SERIAL_IPAQ=m | ||
| 1197 | CONFIG_USB_SERIAL_IR=m | ||
| 1198 | CONFIG_USB_SERIAL_EDGEPORT=m | ||
| 1199 | CONFIG_USB_SERIAL_EDGEPORT_TI=m | ||
| 1200 | CONFIG_USB_SERIAL_GARMIN=m | ||
| 1201 | CONFIG_USB_SERIAL_IPW=m | ||
| 1202 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m | ||
| 1203 | CONFIG_USB_SERIAL_KEYSPAN=m | ||
| 1204 | # CONFIG_USB_SERIAL_KEYSPAN_MPR is not set | ||
| 1205 | # CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set | ||
| 1206 | # CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set | ||
| 1207 | # CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set | ||
| 1208 | # CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set | ||
| 1209 | # CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set | ||
| 1210 | # CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set | ||
| 1211 | # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set | ||
| 1212 | # CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set | ||
| 1213 | # CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set | ||
| 1214 | # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set | ||
| 1215 | # CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set | ||
| 1216 | CONFIG_USB_SERIAL_KLSI=m | ||
| 1217 | CONFIG_USB_SERIAL_KOBIL_SCT=m | ||
| 1218 | CONFIG_USB_SERIAL_MCT_U232=m | ||
| 1219 | CONFIG_USB_SERIAL_PL2303=m | ||
| 1220 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 1221 | CONFIG_USB_SERIAL_SAFE=m | ||
| 1222 | # CONFIG_USB_SERIAL_SAFE_PADDED is not set | ||
| 1223 | CONFIG_USB_SERIAL_TI=m | ||
| 1224 | CONFIG_USB_SERIAL_CYBERJACK=m | ||
| 1225 | CONFIG_USB_SERIAL_XIRCOM=m | ||
| 1226 | CONFIG_USB_SERIAL_OMNINET=m | ||
| 1227 | CONFIG_USB_EZUSB=y | ||
| 1228 | |||
| 1229 | # | ||
| 1230 | # USB Miscellaneous drivers | ||
| 1231 | # | ||
| 1232 | CONFIG_USB_EMI62=m | ||
| 1233 | CONFIG_USB_EMI26=m | ||
| 1234 | CONFIG_USB_AUERSWALD=m | ||
| 1235 | CONFIG_USB_RIO500=m | ||
| 1236 | CONFIG_USB_LEGOTOWER=m | ||
| 1237 | CONFIG_USB_LCD=m | ||
| 1238 | CONFIG_USB_LED=m | ||
| 1239 | CONFIG_USB_CYTHERM=m | ||
| 1240 | CONFIG_USB_PHIDGETKIT=m | ||
| 1241 | CONFIG_USB_PHIDGETSERVO=m | ||
| 1242 | CONFIG_USB_IDMOUSE=m | ||
| 1243 | # CONFIG_USB_LD is not set | ||
| 1244 | # CONFIG_USB_TEST is not set | ||
| 1245 | |||
| 1246 | # | ||
| 1247 | # USB DSL modem support | ||
| 1248 | # | ||
| 1249 | |||
| 1250 | # | ||
| 1251 | # USB Gadget Support | ||
| 1252 | # | ||
| 1253 | CONFIG_USB_GADGET=y | ||
| 1254 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
| 1255 | CONFIG_USB_GADGET_SELECTED=y | ||
| 1256 | # CONFIG_USB_GADGET_NET2280 is not set | ||
| 1257 | CONFIG_USB_GADGET_PXA2XX=y | ||
| 1258 | CONFIG_USB_PXA2XX=y | ||
| 1259 | # CONFIG_USB_PXA2XX_SMALL is not set | ||
| 1260 | # CONFIG_USB_GADGET_GOKU is not set | ||
| 1261 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
| 1262 | # CONFIG_USB_GADGET_OMAP is not set | ||
| 1263 | # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||
| 1264 | # CONFIG_USB_GADGET_DUALSPEED is not set | ||
| 1265 | CONFIG_USB_ZERO=m | ||
| 1266 | CONFIG_USB_ETH=m | ||
| 1267 | CONFIG_USB_ETH_RNDIS=y | ||
| 1268 | CONFIG_USB_GADGETFS=m | ||
| 1269 | CONFIG_USB_FILE_STORAGE=m | ||
| 1270 | # CONFIG_USB_FILE_STORAGE_TEST is not set | ||
| 1271 | CONFIG_USB_G_SERIAL=m | ||
| 1272 | |||
| 1273 | # | ||
| 1274 | # MMC/SD Card support | ||
| 1275 | # | ||
| 1276 | CONFIG_MMC=y | ||
| 1277 | # CONFIG_MMC_DEBUG is not set | ||
| 1278 | CONFIG_MMC_BLOCK=y | ||
| 1279 | CONFIG_MMC_PXA=y | ||
| 1280 | # CONFIG_MMC_WBSD is not set | ||
| 1281 | |||
| 1282 | # | ||
| 1283 | # File systems | ||
| 1284 | # | ||
| 1285 | CONFIG_EXT2_FS=y | ||
| 1286 | # CONFIG_EXT2_FS_XATTR is not set | ||
| 1287 | # CONFIG_EXT2_FS_XIP is not set | ||
| 1288 | # CONFIG_EXT3_FS is not set | ||
| 1289 | # CONFIG_JBD is not set | ||
| 1290 | # CONFIG_REISERFS_FS is not set | ||
| 1291 | # CONFIG_JFS_FS is not set | ||
| 1292 | # CONFIG_FS_POSIX_ACL is not set | ||
| 1293 | # CONFIG_XFS_FS is not set | ||
| 1294 | # CONFIG_MINIX_FS is not set | ||
| 1295 | # CONFIG_ROMFS_FS is not set | ||
| 1296 | CONFIG_INOTIFY=y | ||
| 1297 | # CONFIG_QUOTA is not set | ||
| 1298 | CONFIG_DNOTIFY=y | ||
| 1299 | # CONFIG_AUTOFS_FS is not set | ||
| 1300 | # CONFIG_AUTOFS4_FS is not set | ||
| 1301 | # CONFIG_FUSE_FS is not set | ||
| 1302 | |||
| 1303 | # | ||
| 1304 | # CD-ROM/DVD Filesystems | ||
| 1305 | # | ||
| 1306 | # CONFIG_ISO9660_FS is not set | ||
| 1307 | # CONFIG_UDF_FS is not set | ||
| 1308 | |||
| 1309 | # | ||
| 1310 | # DOS/FAT/NT Filesystems | ||
| 1311 | # | ||
| 1312 | CONFIG_FAT_FS=y | ||
| 1313 | CONFIG_MSDOS_FS=y | ||
| 1314 | CONFIG_VFAT_FS=y | ||
| 1315 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1316 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1317 | # CONFIG_NTFS_FS is not set | ||
| 1318 | |||
| 1319 | # | ||
| 1320 | # Pseudo filesystems | ||
| 1321 | # | ||
| 1322 | CONFIG_PROC_FS=y | ||
| 1323 | CONFIG_SYSFS=y | ||
| 1324 | CONFIG_TMPFS=y | ||
| 1325 | # CONFIG_HUGETLB_PAGE is not set | ||
| 1326 | CONFIG_RAMFS=y | ||
| 1327 | # CONFIG_RELAYFS_FS is not set | ||
| 1328 | |||
| 1329 | # | ||
| 1330 | # Miscellaneous filesystems | ||
| 1331 | # | ||
| 1332 | # CONFIG_ADFS_FS is not set | ||
| 1333 | # CONFIG_AFFS_FS is not set | ||
| 1334 | # CONFIG_HFS_FS is not set | ||
| 1335 | # CONFIG_HFSPLUS_FS is not set | ||
| 1336 | # CONFIG_BEFS_FS is not set | ||
| 1337 | # CONFIG_BFS_FS is not set | ||
| 1338 | # CONFIG_EFS_FS is not set | ||
| 1339 | # CONFIG_JFFS_FS is not set | ||
| 1340 | CONFIG_JFFS2_FS=y | ||
| 1341 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 1342 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 1343 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
| 1344 | CONFIG_JFFS2_ZLIB=y | ||
| 1345 | CONFIG_JFFS2_RTIME=y | ||
| 1346 | CONFIG_JFFS2_RUBIN=y | ||
| 1347 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
| 1348 | CONFIG_JFFS2_CMODE_PRIORITY=y | ||
| 1349 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
| 1350 | CONFIG_CRAMFS=m | ||
| 1351 | # CONFIG_VXFS_FS is not set | ||
| 1352 | # CONFIG_HPFS_FS is not set | ||
| 1353 | # CONFIG_QNX4FS_FS is not set | ||
| 1354 | # CONFIG_SYSV_FS is not set | ||
| 1355 | # CONFIG_UFS_FS is not set | ||
| 1356 | |||
| 1357 | # | ||
| 1358 | # Network File Systems | ||
| 1359 | # | ||
| 1360 | CONFIG_NFS_FS=m | ||
| 1361 | CONFIG_NFS_V3=y | ||
| 1362 | # CONFIG_NFS_V3_ACL is not set | ||
| 1363 | CONFIG_NFS_V4=y | ||
| 1364 | # CONFIG_NFS_DIRECTIO is not set | ||
| 1365 | # CONFIG_NFSD is not set | ||
| 1366 | CONFIG_LOCKD=m | ||
| 1367 | CONFIG_LOCKD_V4=y | ||
| 1368 | CONFIG_NFS_COMMON=y | ||
| 1369 | CONFIG_SUNRPC=m | ||
| 1370 | CONFIG_SUNRPC_GSS=m | ||
| 1371 | CONFIG_RPCSEC_GSS_KRB5=m | ||
| 1372 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1373 | CONFIG_SMB_FS=m | ||
| 1374 | CONFIG_SMB_NLS_DEFAULT=y | ||
| 1375 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
| 1376 | # CONFIG_CIFS is not set | ||
| 1377 | # CONFIG_NCP_FS is not set | ||
| 1378 | # CONFIG_CODA_FS is not set | ||
| 1379 | # CONFIG_AFS_FS is not set | ||
| 1380 | # CONFIG_9P_FS is not set | ||
| 1381 | |||
| 1382 | # | ||
| 1383 | # Partition Types | ||
| 1384 | # | ||
| 1385 | CONFIG_PARTITION_ADVANCED=y | ||
| 1386 | # CONFIG_ACORN_PARTITION is not set | ||
| 1387 | # CONFIG_OSF_PARTITION is not set | ||
| 1388 | # CONFIG_AMIGA_PARTITION is not set | ||
| 1389 | # CONFIG_ATARI_PARTITION is not set | ||
| 1390 | # CONFIG_MAC_PARTITION is not set | ||
| 1391 | CONFIG_MSDOS_PARTITION=y | ||
| 1392 | # CONFIG_BSD_DISKLABEL is not set | ||
| 1393 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 1394 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 1395 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 1396 | # CONFIG_LDM_PARTITION is not set | ||
| 1397 | # CONFIG_SGI_PARTITION is not set | ||
| 1398 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 1399 | # CONFIG_SUN_PARTITION is not set | ||
| 1400 | # CONFIG_EFI_PARTITION is not set | ||
| 1401 | |||
| 1402 | # | ||
| 1403 | # Native Language Support | ||
| 1404 | # | ||
| 1405 | CONFIG_NLS=y | ||
| 1406 | CONFIG_NLS_DEFAULT="cp437" | ||
| 1407 | CONFIG_NLS_CODEPAGE_437=y | ||
| 1408 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1409 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1410 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 1411 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1412 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1413 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1414 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1415 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1416 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1417 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1418 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1419 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 1420 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1421 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1422 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1423 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1424 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1425 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1426 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1427 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1428 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 1429 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 1430 | # CONFIG_NLS_ASCII is not set | ||
| 1431 | CONFIG_NLS_ISO8859_1=y | ||
| 1432 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1433 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1434 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1435 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1436 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1437 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1438 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1439 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1440 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1441 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 1442 | # CONFIG_NLS_KOI8_R is not set | ||
| 1443 | # CONFIG_NLS_KOI8_U is not set | ||
| 1444 | CONFIG_NLS_UTF8=y | ||
| 1445 | |||
| 1446 | # | ||
| 1447 | # Profiling support | ||
| 1448 | # | ||
| 1449 | CONFIG_PROFILING=y | ||
| 1450 | CONFIG_OPROFILE=m | ||
| 1451 | |||
| 1452 | # | ||
| 1453 | # Kernel hacking | ||
| 1454 | # | ||
| 1455 | # CONFIG_PRINTK_TIME is not set | ||
| 1456 | CONFIG_DEBUG_KERNEL=y | ||
| 1457 | CONFIG_MAGIC_SYSRQ=y | ||
| 1458 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 1459 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1460 | # CONFIG_SCHEDSTATS is not set | ||
| 1461 | # CONFIG_DEBUG_SLAB is not set | ||
| 1462 | # CONFIG_DEBUG_PREEMPT is not set | ||
| 1463 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1464 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 1465 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 1466 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 1467 | # CONFIG_DEBUG_INFO is not set | ||
| 1468 | # CONFIG_DEBUG_FS is not set | ||
| 1469 | CONFIG_FRAME_POINTER=y | ||
| 1470 | # CONFIG_DEBUG_USER is not set | ||
| 1471 | # CONFIG_DEBUG_WAITQ is not set | ||
| 1472 | CONFIG_DEBUG_ERRORS=y | ||
| 1473 | CONFIG_DEBUG_LL=y | ||
| 1474 | # CONFIG_DEBUG_ICEDCC is not set | ||
| 1475 | |||
| 1476 | # | ||
| 1477 | # Security options | ||
| 1478 | # | ||
| 1479 | # CONFIG_KEYS is not set | ||
| 1480 | # CONFIG_SECURITY is not set | ||
| 1481 | |||
| 1482 | # | ||
| 1483 | # Cryptographic options | ||
| 1484 | # | ||
| 1485 | CONFIG_CRYPTO=y | ||
| 1486 | CONFIG_CRYPTO_HMAC=y | ||
| 1487 | CONFIG_CRYPTO_NULL=m | ||
| 1488 | CONFIG_CRYPTO_MD4=m | ||
| 1489 | CONFIG_CRYPTO_MD5=m | ||
| 1490 | CONFIG_CRYPTO_SHA1=m | ||
| 1491 | CONFIG_CRYPTO_SHA256=m | ||
| 1492 | CONFIG_CRYPTO_SHA512=m | ||
| 1493 | CONFIG_CRYPTO_WP512=m | ||
| 1494 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1495 | CONFIG_CRYPTO_DES=m | ||
| 1496 | CONFIG_CRYPTO_BLOWFISH=m | ||
| 1497 | CONFIG_CRYPTO_TWOFISH=m | ||
| 1498 | CONFIG_CRYPTO_SERPENT=m | ||
| 1499 | CONFIG_CRYPTO_AES=m | ||
| 1500 | CONFIG_CRYPTO_CAST5=m | ||
| 1501 | CONFIG_CRYPTO_CAST6=m | ||
| 1502 | CONFIG_CRYPTO_TEA=m | ||
| 1503 | CONFIG_CRYPTO_ARC4=m | ||
| 1504 | CONFIG_CRYPTO_KHAZAD=m | ||
| 1505 | CONFIG_CRYPTO_ANUBIS=m | ||
| 1506 | CONFIG_CRYPTO_DEFLATE=m | ||
| 1507 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
| 1508 | CONFIG_CRYPTO_CRC32C=m | ||
| 1509 | CONFIG_CRYPTO_TEST=m | ||
| 1510 | |||
| 1511 | # | ||
| 1512 | # Hardware crypto devices | ||
| 1513 | # | ||
| 1514 | |||
| 1515 | # | ||
| 1516 | # Library routines | ||
| 1517 | # | ||
| 1518 | CONFIG_CRC_CCITT=y | ||
| 1519 | # CONFIG_CRC16 is not set | ||
| 1520 | CONFIG_CRC32=y | ||
| 1521 | CONFIG_LIBCRC32C=m | ||
| 1522 | CONFIG_ZLIB_INFLATE=y | ||
| 1523 | CONFIG_ZLIB_DEFLATE=y | ||
diff --git a/arch/arm/configs/poodle_defconfig b/arch/arm/configs/poodle_defconfig new file mode 100644 index 000000000000..72822907759f --- /dev/null +++ b/arch/arm/configs/poodle_defconfig | |||
| @@ -0,0 +1,1015 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc3 | ||
| 4 | # Sun Oct 9 17:04:29 2005 | ||
| 5 | # | ||
| 6 | CONFIG_ARM=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_UID16=y | ||
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 11 | |||
| 12 | # | ||
| 13 | # Code maturity level options | ||
| 14 | # | ||
| 15 | CONFIG_EXPERIMENTAL=y | ||
| 16 | CONFIG_CLEAN_COMPILE=y | ||
| 17 | CONFIG_BROKEN_ON_SMP=y | ||
| 18 | CONFIG_LOCK_KERNEL=y | ||
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 20 | |||
| 21 | # | ||
| 22 | # General setup | ||
| 23 | # | ||
| 24 | CONFIG_LOCALVERSION="" | ||
| 25 | CONFIG_LOCALVERSION_AUTO=y | ||
| 26 | CONFIG_SWAP=y | ||
| 27 | CONFIG_SYSVIPC=y | ||
| 28 | # CONFIG_POSIX_MQUEUE is not set | ||
| 29 | CONFIG_BSD_PROCESS_ACCT=y | ||
| 30 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
| 31 | CONFIG_SYSCTL=y | ||
| 32 | # CONFIG_AUDIT is not set | ||
| 33 | CONFIG_HOTPLUG=y | ||
| 34 | CONFIG_KOBJECT_UEVENT=y | ||
| 35 | # CONFIG_IKCONFIG is not set | ||
| 36 | CONFIG_INITRAMFS_SOURCE="" | ||
| 37 | CONFIG_EMBEDDED=y | ||
| 38 | CONFIG_KALLSYMS=y | ||
| 39 | # CONFIG_KALLSYMS_ALL is not set | ||
| 40 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 41 | CONFIG_PRINTK=y | ||
| 42 | CONFIG_BUG=y | ||
| 43 | CONFIG_BASE_FULL=y | ||
| 44 | CONFIG_FUTEX=y | ||
| 45 | CONFIG_EPOLL=y | ||
| 46 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 47 | CONFIG_SHMEM=y | ||
| 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 49 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 52 | # CONFIG_TINY_SHMEM is not set | ||
| 53 | CONFIG_BASE_SMALL=0 | ||
| 54 | |||
| 55 | # | ||
| 56 | # Loadable module support | ||
| 57 | # | ||
| 58 | CONFIG_MODULES=y | ||
| 59 | CONFIG_MODULE_UNLOAD=y | ||
| 60 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 61 | CONFIG_OBSOLETE_MODPARM=y | ||
| 62 | CONFIG_MODVERSIONS=y | ||
| 63 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 64 | CONFIG_KMOD=y | ||
| 65 | |||
| 66 | # | ||
| 67 | # System Type | ||
| 68 | # | ||
| 69 | # CONFIG_ARCH_CLPS7500 is not set | ||
| 70 | # CONFIG_ARCH_CLPS711X is not set | ||
| 71 | # CONFIG_ARCH_CO285 is not set | ||
| 72 | # CONFIG_ARCH_EBSA110 is not set | ||
| 73 | # CONFIG_ARCH_CAMELOT is not set | ||
| 74 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
| 75 | # CONFIG_ARCH_INTEGRATOR is not set | ||
| 76 | # CONFIG_ARCH_IOP3XX is not set | ||
| 77 | # CONFIG_ARCH_IXP4XX is not set | ||
| 78 | # CONFIG_ARCH_IXP2000 is not set | ||
| 79 | # CONFIG_ARCH_L7200 is not set | ||
| 80 | CONFIG_ARCH_PXA=y | ||
| 81 | # CONFIG_ARCH_RPC is not set | ||
| 82 | # CONFIG_ARCH_SA1100 is not set | ||
| 83 | # CONFIG_ARCH_S3C2410 is not set | ||
| 84 | # CONFIG_ARCH_SHARK is not set | ||
| 85 | # CONFIG_ARCH_LH7A40X is not set | ||
| 86 | # CONFIG_ARCH_OMAP is not set | ||
| 87 | # CONFIG_ARCH_VERSATILE is not set | ||
| 88 | # CONFIG_ARCH_IMX is not set | ||
| 89 | # CONFIG_ARCH_H720X is not set | ||
| 90 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 91 | |||
| 92 | # | ||
| 93 | # Intel PXA2xx Implementations | ||
| 94 | # | ||
| 95 | # CONFIG_ARCH_LUBBOCK is not set | ||
| 96 | # CONFIG_MACH_MAINSTONE is not set | ||
| 97 | # CONFIG_ARCH_PXA_IDP is not set | ||
| 98 | CONFIG_PXA_SHARPSL=y | ||
| 99 | CONFIG_PXA_SHARPSL_25x=y | ||
| 100 | # CONFIG_PXA_SHARPSL_27x is not set | ||
| 101 | CONFIG_MACH_POODLE=y | ||
| 102 | # CONFIG_MACH_CORGI is not set | ||
| 103 | # CONFIG_MACH_SHEPHERD is not set | ||
| 104 | # CONFIG_MACH_HUSKY is not set | ||
| 105 | CONFIG_PXA25x=y | ||
| 106 | |||
| 107 | # | ||
| 108 | # Processor Type | ||
| 109 | # | ||
| 110 | CONFIG_CPU_32=y | ||
| 111 | CONFIG_CPU_XSCALE=y | ||
| 112 | CONFIG_CPU_32v5=y | ||
| 113 | CONFIG_CPU_ABRT_EV5T=y | ||
| 114 | CONFIG_CPU_CACHE_VIVT=y | ||
| 115 | CONFIG_CPU_TLB_V4WBI=y | ||
| 116 | |||
| 117 | # | ||
| 118 | # Processor Features | ||
| 119 | # | ||
| 120 | CONFIG_ARM_THUMB=y | ||
| 121 | CONFIG_XSCALE_PMU=y | ||
| 122 | CONFIG_SHARP_LOCOMO=y | ||
| 123 | CONFIG_SHARP_PARAM=y | ||
| 124 | CONFIG_SHARP_SCOOP=y | ||
| 125 | |||
| 126 | # | ||
| 127 | # Bus support | ||
| 128 | # | ||
| 129 | CONFIG_ISA_DMA_API=y | ||
| 130 | |||
| 131 | # | ||
| 132 | # PCCARD (PCMCIA/CardBus) support | ||
| 133 | # | ||
| 134 | CONFIG_PCCARD=y | ||
| 135 | # CONFIG_PCMCIA_DEBUG is not set | ||
| 136 | CONFIG_PCMCIA=y | ||
| 137 | CONFIG_PCMCIA_LOAD_CIS=y | ||
| 138 | CONFIG_PCMCIA_IOCTL=y | ||
| 139 | |||
| 140 | # | ||
| 141 | # PC-card bridges | ||
| 142 | # | ||
| 143 | CONFIG_PCMCIA_PXA2XX=y | ||
| 144 | |||
| 145 | # | ||
| 146 | # Kernel Features | ||
| 147 | # | ||
| 148 | CONFIG_PREEMPT=y | ||
| 149 | # CONFIG_NO_IDLE_HZ is not set | ||
| 150 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
| 151 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 152 | CONFIG_FLATMEM_MANUAL=y | ||
| 153 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 154 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 155 | CONFIG_FLATMEM=y | ||
| 156 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 157 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 158 | CONFIG_ALIGNMENT_TRAP=y | ||
| 159 | |||
| 160 | # | ||
| 161 | # Boot options | ||
| 162 | # | ||
| 163 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
| 164 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
| 165 | CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" | ||
| 166 | # CONFIG_XIP_KERNEL is not set | ||
| 167 | |||
| 168 | # | ||
| 169 | # Floating point emulation | ||
| 170 | # | ||
| 171 | |||
| 172 | # | ||
| 173 | # At least one emulation must be selected | ||
| 174 | # | ||
| 175 | CONFIG_FPE_NWFPE=y | ||
| 176 | # CONFIG_FPE_NWFPE_XP is not set | ||
| 177 | # CONFIG_FPE_FASTFPE is not set | ||
| 178 | |||
| 179 | # | ||
| 180 | # Userspace binary formats | ||
| 181 | # | ||
| 182 | CONFIG_BINFMT_ELF=y | ||
| 183 | CONFIG_BINFMT_AOUT=m | ||
| 184 | CONFIG_BINFMT_MISC=m | ||
| 185 | # CONFIG_ARTHUR is not set | ||
| 186 | |||
| 187 | # | ||
| 188 | # Power management options | ||
| 189 | # | ||
| 190 | CONFIG_PM=y | ||
| 191 | CONFIG_APM=y | ||
| 192 | |||
| 193 | # | ||
| 194 | # Networking | ||
| 195 | # | ||
| 196 | CONFIG_NET=y | ||
| 197 | |||
| 198 | # | ||
| 199 | # Networking options | ||
| 200 | # | ||
| 201 | CONFIG_PACKET=y | ||
| 202 | CONFIG_PACKET_MMAP=y | ||
| 203 | CONFIG_UNIX=y | ||
| 204 | # CONFIG_NET_KEY is not set | ||
| 205 | CONFIG_INET=y | ||
| 206 | # CONFIG_IP_MULTICAST is not set | ||
| 207 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 208 | CONFIG_IP_FIB_HASH=y | ||
| 209 | # CONFIG_IP_PNP is not set | ||
| 210 | # CONFIG_NET_IPIP is not set | ||
| 211 | # CONFIG_NET_IPGRE is not set | ||
| 212 | # CONFIG_ARPD is not set | ||
| 213 | CONFIG_SYN_COOKIES=y | ||
| 214 | # CONFIG_INET_AH is not set | ||
| 215 | # CONFIG_INET_ESP is not set | ||
| 216 | # CONFIG_INET_IPCOMP is not set | ||
| 217 | # CONFIG_INET_TUNNEL is not set | ||
| 218 | CONFIG_INET_DIAG=y | ||
| 219 | CONFIG_INET_TCP_DIAG=y | ||
| 220 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 221 | CONFIG_TCP_CONG_BIC=y | ||
| 222 | # CONFIG_IPV6 is not set | ||
| 223 | # CONFIG_NETFILTER is not set | ||
| 224 | |||
| 225 | # | ||
| 226 | # DCCP Configuration (EXPERIMENTAL) | ||
| 227 | # | ||
| 228 | # CONFIG_IP_DCCP is not set | ||
| 229 | |||
| 230 | # | ||
| 231 | # SCTP Configuration (EXPERIMENTAL) | ||
| 232 | # | ||
| 233 | # CONFIG_IP_SCTP is not set | ||
| 234 | # CONFIG_ATM is not set | ||
| 235 | # CONFIG_BRIDGE is not set | ||
| 236 | # CONFIG_VLAN_8021Q is not set | ||
| 237 | # CONFIG_DECNET is not set | ||
| 238 | # CONFIG_LLC2 is not set | ||
| 239 | # CONFIG_IPX is not set | ||
| 240 | # CONFIG_ATALK is not set | ||
| 241 | # CONFIG_X25 is not set | ||
| 242 | # CONFIG_LAPB is not set | ||
| 243 | # CONFIG_NET_DIVERT is not set | ||
| 244 | # CONFIG_ECONET is not set | ||
| 245 | # CONFIG_WAN_ROUTER is not set | ||
| 246 | # CONFIG_NET_SCHED is not set | ||
| 247 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 248 | |||
| 249 | # | ||
| 250 | # Network testing | ||
| 251 | # | ||
| 252 | # CONFIG_NET_PKTGEN is not set | ||
| 253 | # CONFIG_HAMRADIO is not set | ||
| 254 | # CONFIG_IRDA is not set | ||
| 255 | # CONFIG_BT is not set | ||
| 256 | # CONFIG_IEEE80211 is not set | ||
| 257 | |||
| 258 | # | ||
| 259 | # Device Drivers | ||
| 260 | # | ||
| 261 | |||
| 262 | # | ||
| 263 | # Generic Driver Options | ||
| 264 | # | ||
| 265 | CONFIG_STANDALONE=y | ||
| 266 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 267 | CONFIG_FW_LOADER=y | ||
| 268 | # CONFIG_DEBUG_DRIVER is not set | ||
| 269 | |||
| 270 | # | ||
| 271 | # Memory Technology Devices (MTD) | ||
| 272 | # | ||
| 273 | CONFIG_MTD=y | ||
| 274 | # CONFIG_MTD_DEBUG is not set | ||
| 275 | # CONFIG_MTD_CONCAT is not set | ||
| 276 | CONFIG_MTD_PARTITIONS=y | ||
| 277 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 278 | # CONFIG_MTD_CMDLINE_PARTS is not set | ||
| 279 | # CONFIG_MTD_AFS_PARTS is not set | ||
| 280 | |||
| 281 | # | ||
| 282 | # User Modules And Translation Layers | ||
| 283 | # | ||
| 284 | CONFIG_MTD_CHAR=y | ||
| 285 | CONFIG_MTD_BLOCK=y | ||
| 286 | # CONFIG_FTL is not set | ||
| 287 | # CONFIG_NFTL is not set | ||
| 288 | # CONFIG_INFTL is not set | ||
| 289 | |||
| 290 | # | ||
| 291 | # RAM/ROM/Flash chip drivers | ||
| 292 | # | ||
| 293 | # CONFIG_MTD_CFI is not set | ||
| 294 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 295 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 296 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 297 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 298 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 299 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 300 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 301 | CONFIG_MTD_CFI_I1=y | ||
| 302 | CONFIG_MTD_CFI_I2=y | ||
| 303 | # CONFIG_MTD_CFI_I4 is not set | ||
| 304 | # CONFIG_MTD_CFI_I8 is not set | ||
| 305 | # CONFIG_MTD_RAM is not set | ||
| 306 | # CONFIG_MTD_ROM is not set | ||
| 307 | # CONFIG_MTD_ABSENT is not set | ||
| 308 | |||
| 309 | # | ||
| 310 | # Mapping drivers for chip access | ||
| 311 | # | ||
| 312 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 313 | CONFIG_MTD_SHARP_SL=y | ||
| 314 | # CONFIG_MTD_PLATRAM is not set | ||
| 315 | |||
| 316 | # | ||
| 317 | # Self-contained MTD device drivers | ||
| 318 | # | ||
| 319 | # CONFIG_MTD_SLRAM is not set | ||
| 320 | # CONFIG_MTD_PHRAM is not set | ||
| 321 | # CONFIG_MTD_MTDRAM is not set | ||
| 322 | # CONFIG_MTD_BLKMTD is not set | ||
| 323 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 324 | |||
| 325 | # | ||
| 326 | # Disk-On-Chip Device Drivers | ||
| 327 | # | ||
| 328 | # CONFIG_MTD_DOC2000 is not set | ||
| 329 | # CONFIG_MTD_DOC2001 is not set | ||
| 330 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 331 | |||
| 332 | # | ||
| 333 | # NAND Flash Device Drivers | ||
| 334 | # | ||
| 335 | CONFIG_MTD_NAND=y | ||
| 336 | CONFIG_MTD_NAND_VERIFY_WRITE=y | ||
| 337 | # CONFIG_MTD_NAND_H1900 is not set | ||
| 338 | CONFIG_MTD_NAND_IDS=y | ||
| 339 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 340 | CONFIG_MTD_NAND_SHARPSL=y | ||
| 341 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 342 | |||
| 343 | # | ||
| 344 | # Parallel port support | ||
| 345 | # | ||
| 346 | # CONFIG_PARPORT is not set | ||
| 347 | |||
| 348 | # | ||
| 349 | # Plug and Play support | ||
| 350 | # | ||
| 351 | |||
| 352 | # | ||
| 353 | # Block devices | ||
| 354 | # | ||
| 355 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 356 | CONFIG_BLK_DEV_LOOP=y | ||
| 357 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 358 | # CONFIG_BLK_DEV_NBD is not set | ||
| 359 | # CONFIG_BLK_DEV_RAM is not set | ||
| 360 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 361 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 362 | |||
| 363 | # | ||
| 364 | # IO Schedulers | ||
| 365 | # | ||
| 366 | CONFIG_IOSCHED_NOOP=y | ||
| 367 | CONFIG_IOSCHED_AS=y | ||
| 368 | CONFIG_IOSCHED_DEADLINE=y | ||
| 369 | CONFIG_IOSCHED_CFQ=y | ||
| 370 | # CONFIG_ATA_OVER_ETH is not set | ||
| 371 | |||
| 372 | # | ||
| 373 | # ATA/ATAPI/MFM/RLL support | ||
| 374 | # | ||
| 375 | CONFIG_IDE=y | ||
| 376 | CONFIG_BLK_DEV_IDE=y | ||
| 377 | |||
| 378 | # | ||
| 379 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 380 | # | ||
| 381 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 382 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 383 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
| 384 | CONFIG_BLK_DEV_IDECS=y | ||
| 385 | # CONFIG_BLK_DEV_IDECD is not set | ||
| 386 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 387 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 388 | # CONFIG_IDE_TASK_IOCTL is not set | ||
| 389 | |||
| 390 | # | ||
| 391 | # IDE chipset support/bugfixes | ||
| 392 | # | ||
| 393 | CONFIG_IDE_GENERIC=y | ||
| 394 | # CONFIG_IDE_ARM is not set | ||
| 395 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
| 396 | # CONFIG_IDEDMA_AUTO is not set | ||
| 397 | # CONFIG_BLK_DEV_HD is not set | ||
| 398 | |||
| 399 | # | ||
| 400 | # SCSI device support | ||
| 401 | # | ||
| 402 | # CONFIG_RAID_ATTRS is not set | ||
| 403 | # CONFIG_SCSI is not set | ||
| 404 | |||
| 405 | # | ||
| 406 | # Multi-device support (RAID and LVM) | ||
| 407 | # | ||
| 408 | # CONFIG_MD is not set | ||
| 409 | |||
| 410 | # | ||
| 411 | # Fusion MPT device support | ||
| 412 | # | ||
| 413 | # CONFIG_FUSION is not set | ||
| 414 | |||
| 415 | # | ||
| 416 | # IEEE 1394 (FireWire) support | ||
| 417 | # | ||
| 418 | |||
| 419 | # | ||
| 420 | # I2O device support | ||
| 421 | # | ||
| 422 | |||
| 423 | # | ||
| 424 | # Network device support | ||
| 425 | # | ||
| 426 | CONFIG_NETDEVICES=y | ||
| 427 | # CONFIG_DUMMY is not set | ||
| 428 | # CONFIG_BONDING is not set | ||
| 429 | # CONFIG_EQUALIZER is not set | ||
| 430 | # CONFIG_TUN is not set | ||
| 431 | |||
| 432 | # | ||
| 433 | # PHY device support | ||
| 434 | # | ||
| 435 | # CONFIG_PHYLIB is not set | ||
| 436 | |||
| 437 | # | ||
| 438 | # Ethernet (10 or 100Mbit) | ||
| 439 | # | ||
| 440 | CONFIG_NET_ETHERNET=y | ||
| 441 | # CONFIG_MII is not set | ||
| 442 | # CONFIG_SMC91X is not set | ||
| 443 | # CONFIG_DM9000 is not set | ||
| 444 | |||
| 445 | # | ||
| 446 | # Ethernet (1000 Mbit) | ||
| 447 | # | ||
| 448 | |||
| 449 | # | ||
| 450 | # Ethernet (10000 Mbit) | ||
| 451 | # | ||
| 452 | |||
| 453 | # | ||
| 454 | # Token Ring devices | ||
| 455 | # | ||
| 456 | |||
| 457 | # | ||
| 458 | # Wireless LAN (non-hamradio) | ||
| 459 | # | ||
| 460 | CONFIG_NET_RADIO=y | ||
| 461 | |||
| 462 | # | ||
| 463 | # Obsolete Wireless cards support (pre-802.11) | ||
| 464 | # | ||
| 465 | # CONFIG_STRIP is not set | ||
| 466 | # CONFIG_PCMCIA_WAVELAN is not set | ||
| 467 | # CONFIG_PCMCIA_NETWAVE is not set | ||
| 468 | |||
| 469 | # | ||
| 470 | # Wireless 802.11 Frequency Hopping cards support | ||
| 471 | # | ||
| 472 | # CONFIG_PCMCIA_RAYCS is not set | ||
| 473 | |||
| 474 | # | ||
| 475 | # Wireless 802.11b ISA/PCI cards support | ||
| 476 | # | ||
| 477 | # CONFIG_HERMES is not set | ||
| 478 | # CONFIG_ATMEL is not set | ||
| 479 | |||
| 480 | # | ||
| 481 | # Wireless 802.11b Pcmcia/Cardbus cards support | ||
| 482 | # | ||
| 483 | # CONFIG_AIRO_CS is not set | ||
| 484 | # CONFIG_PCMCIA_WL3501 is not set | ||
| 485 | # CONFIG_HOSTAP is not set | ||
| 486 | CONFIG_NET_WIRELESS=y | ||
| 487 | |||
| 488 | # | ||
| 489 | # PCMCIA network device support | ||
| 490 | # | ||
| 491 | CONFIG_NET_PCMCIA=y | ||
| 492 | # CONFIG_PCMCIA_3C589 is not set | ||
| 493 | # CONFIG_PCMCIA_3C574 is not set | ||
| 494 | # CONFIG_PCMCIA_FMVJ18X is not set | ||
| 495 | CONFIG_PCMCIA_PCNET=y | ||
| 496 | # CONFIG_PCMCIA_NMCLAN is not set | ||
| 497 | # CONFIG_PCMCIA_SMC91C92 is not set | ||
| 498 | # CONFIG_PCMCIA_XIRC2PS is not set | ||
| 499 | # CONFIG_PCMCIA_AXNET is not set | ||
| 500 | |||
| 501 | # | ||
| 502 | # Wan interfaces | ||
| 503 | # | ||
| 504 | # CONFIG_WAN is not set | ||
| 505 | CONFIG_PPP=m | ||
| 506 | # CONFIG_PPP_MULTILINK is not set | ||
| 507 | # CONFIG_PPP_FILTER is not set | ||
| 508 | CONFIG_PPP_ASYNC=m | ||
| 509 | # CONFIG_PPP_SYNC_TTY is not set | ||
| 510 | # CONFIG_PPP_DEFLATE is not set | ||
| 511 | CONFIG_PPP_BSDCOMP=m | ||
| 512 | # CONFIG_PPPOE is not set | ||
| 513 | # CONFIG_SLIP is not set | ||
| 514 | # CONFIG_SHAPER is not set | ||
| 515 | # CONFIG_NETCONSOLE is not set | ||
| 516 | # CONFIG_NETPOLL is not set | ||
| 517 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 518 | |||
| 519 | # | ||
| 520 | # ISDN subsystem | ||
| 521 | # | ||
| 522 | # CONFIG_ISDN is not set | ||
| 523 | |||
| 524 | # | ||
| 525 | # Input device support | ||
| 526 | # | ||
| 527 | CONFIG_INPUT=y | ||
| 528 | |||
| 529 | # | ||
| 530 | # Userland interfaces | ||
| 531 | # | ||
| 532 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 533 | # CONFIG_INPUT_JOYDEV is not set | ||
| 534 | CONFIG_INPUT_TSDEV=y | ||
| 535 | CONFIG_INPUT_TSDEV_SCREEN_X=240 | ||
| 536 | CONFIG_INPUT_TSDEV_SCREEN_Y=320 | ||
| 537 | CONFIG_INPUT_EVDEV=y | ||
| 538 | CONFIG_INPUT_EVBUG=y | ||
| 539 | |||
| 540 | # | ||
| 541 | # Input Device Drivers | ||
| 542 | # | ||
| 543 | CONFIG_INPUT_KEYBOARD=y | ||
| 544 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 545 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 546 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 547 | CONFIG_KEYBOARD_LOCOMO=y | ||
| 548 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 549 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 550 | # CONFIG_KEYBOARD_CORGI is not set | ||
| 551 | CONFIG_KEYBOARD_SPITZ=y | ||
| 552 | # CONFIG_INPUT_MOUSE is not set | ||
| 553 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 554 | # CONFIG_INPUT_TOUCHSCREEN is not set | ||
| 555 | # CONFIG_INPUT_MISC is not set | ||
| 556 | |||
| 557 | # | ||
| 558 | # Hardware I/O ports | ||
| 559 | # | ||
| 560 | # CONFIG_SERIO is not set | ||
| 561 | # CONFIG_GAMEPORT is not set | ||
| 562 | |||
| 563 | # | ||
| 564 | # Character devices | ||
| 565 | # | ||
| 566 | CONFIG_VT=y | ||
| 567 | CONFIG_VT_CONSOLE=y | ||
| 568 | CONFIG_HW_CONSOLE=y | ||
| 569 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 570 | |||
| 571 | # | ||
| 572 | # Serial drivers | ||
| 573 | # | ||
| 574 | # CONFIG_SERIAL_8250 is not set | ||
| 575 | |||
| 576 | # | ||
| 577 | # Non-8250 serial port support | ||
| 578 | # | ||
| 579 | CONFIG_SERIAL_PXA=y | ||
| 580 | CONFIG_SERIAL_PXA_CONSOLE=y | ||
| 581 | CONFIG_SERIAL_CORE=y | ||
| 582 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 583 | CONFIG_UNIX98_PTYS=y | ||
| 584 | # CONFIG_LEGACY_PTYS is not set | ||
| 585 | |||
| 586 | # | ||
| 587 | # IPMI | ||
| 588 | # | ||
| 589 | # CONFIG_IPMI_HANDLER is not set | ||
| 590 | |||
| 591 | # | ||
| 592 | # Watchdog Cards | ||
| 593 | # | ||
| 594 | # CONFIG_WATCHDOG is not set | ||
| 595 | # CONFIG_NVRAM is not set | ||
| 596 | # CONFIG_RTC is not set | ||
| 597 | # CONFIG_DTLK is not set | ||
| 598 | # CONFIG_R3964 is not set | ||
| 599 | |||
| 600 | # | ||
| 601 | # Ftape, the floppy tape device driver | ||
| 602 | # | ||
| 603 | |||
| 604 | # | ||
| 605 | # PCMCIA character devices | ||
| 606 | # | ||
| 607 | # CONFIG_SYNCLINK_CS is not set | ||
| 608 | # CONFIG_RAW_DRIVER is not set | ||
| 609 | |||
| 610 | # | ||
| 611 | # TPM devices | ||
| 612 | # | ||
| 613 | |||
| 614 | # | ||
| 615 | # I2C support | ||
| 616 | # | ||
| 617 | CONFIG_I2C=y | ||
| 618 | # CONFIG_I2C_CHARDEV is not set | ||
| 619 | |||
| 620 | # | ||
| 621 | # I2C Algorithms | ||
| 622 | # | ||
| 623 | CONFIG_I2C_ALGOBIT=y | ||
| 624 | # CONFIG_I2C_ALGOPCF is not set | ||
| 625 | # CONFIG_I2C_ALGOPCA is not set | ||
| 626 | |||
| 627 | # | ||
| 628 | # I2C Hardware Bus support | ||
| 629 | # | ||
| 630 | # CONFIG_I2C_PXA is not set | ||
| 631 | # CONFIG_I2C_PARPORT_LIGHT is not set | ||
| 632 | # CONFIG_I2C_STUB is not set | ||
| 633 | # CONFIG_I2C_PCA_ISA is not set | ||
| 634 | |||
| 635 | # | ||
| 636 | # Miscellaneous I2C Chip support | ||
| 637 | # | ||
| 638 | # CONFIG_SENSORS_DS1337 is not set | ||
| 639 | # CONFIG_SENSORS_DS1374 is not set | ||
| 640 | # CONFIG_SENSORS_EEPROM is not set | ||
| 641 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 642 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 643 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 644 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 645 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 646 | CONFIG_I2C_DEBUG_CORE=y | ||
| 647 | CONFIG_I2C_DEBUG_ALGO=y | ||
| 648 | CONFIG_I2C_DEBUG_BUS=y | ||
| 649 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 650 | |||
| 651 | # | ||
| 652 | # Hardware Monitoring support | ||
| 653 | # | ||
| 654 | CONFIG_HWMON=y | ||
| 655 | # CONFIG_HWMON_VID is not set | ||
| 656 | # CONFIG_SENSORS_ADM1021 is not set | ||
| 657 | # CONFIG_SENSORS_ADM1025 is not set | ||
| 658 | # CONFIG_SENSORS_ADM1026 is not set | ||
| 659 | # CONFIG_SENSORS_ADM1031 is not set | ||
| 660 | # CONFIG_SENSORS_ADM9240 is not set | ||
| 661 | # CONFIG_SENSORS_ASB100 is not set | ||
| 662 | # CONFIG_SENSORS_ATXP1 is not set | ||
| 663 | # CONFIG_SENSORS_DS1621 is not set | ||
| 664 | # CONFIG_SENSORS_FSCHER is not set | ||
| 665 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 666 | # CONFIG_SENSORS_GL518SM is not set | ||
| 667 | # CONFIG_SENSORS_GL520SM is not set | ||
| 668 | # CONFIG_SENSORS_IT87 is not set | ||
| 669 | # CONFIG_SENSORS_LM63 is not set | ||
| 670 | # CONFIG_SENSORS_LM75 is not set | ||
| 671 | # CONFIG_SENSORS_LM77 is not set | ||
| 672 | # CONFIG_SENSORS_LM78 is not set | ||
| 673 | # CONFIG_SENSORS_LM80 is not set | ||
| 674 | # CONFIG_SENSORS_LM83 is not set | ||
| 675 | # CONFIG_SENSORS_LM85 is not set | ||
| 676 | # CONFIG_SENSORS_LM87 is not set | ||
| 677 | # CONFIG_SENSORS_LM90 is not set | ||
| 678 | # CONFIG_SENSORS_LM92 is not set | ||
| 679 | # CONFIG_SENSORS_MAX1619 is not set | ||
| 680 | # CONFIG_SENSORS_PC87360 is not set | ||
| 681 | # CONFIG_SENSORS_SMSC47M1 is not set | ||
| 682 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
| 683 | # CONFIG_SENSORS_W83781D is not set | ||
| 684 | # CONFIG_SENSORS_W83792D is not set | ||
| 685 | # CONFIG_SENSORS_W83L785TS is not set | ||
| 686 | # CONFIG_SENSORS_W83627HF is not set | ||
| 687 | # CONFIG_SENSORS_W83627EHF is not set | ||
| 688 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 689 | |||
| 690 | # | ||
| 691 | # Misc devices | ||
| 692 | # | ||
| 693 | |||
| 694 | # | ||
| 695 | # Multimedia Capabilities Port drivers | ||
| 696 | # | ||
| 697 | |||
| 698 | # | ||
| 699 | # Multimedia devices | ||
| 700 | # | ||
| 701 | CONFIG_VIDEO_DEV=m | ||
| 702 | |||
| 703 | # | ||
| 704 | # Video For Linux | ||
| 705 | # | ||
| 706 | |||
| 707 | # | ||
| 708 | # Video Adapters | ||
| 709 | # | ||
| 710 | # CONFIG_VIDEO_CPIA is not set | ||
| 711 | # CONFIG_VIDEO_SAA5246A is not set | ||
| 712 | # CONFIG_VIDEO_SAA5249 is not set | ||
| 713 | # CONFIG_TUNER_3036 is not set | ||
| 714 | # CONFIG_VIDEO_OVCAMCHIP is not set | ||
| 715 | |||
| 716 | # | ||
| 717 | # Radio Adapters | ||
| 718 | # | ||
| 719 | # CONFIG_RADIO_MAESTRO is not set | ||
| 720 | |||
| 721 | # | ||
| 722 | # Digital Video Broadcasting Devices | ||
| 723 | # | ||
| 724 | # CONFIG_DVB is not set | ||
| 725 | |||
| 726 | # | ||
| 727 | # Graphics support | ||
| 728 | # | ||
| 729 | CONFIG_FB=y | ||
| 730 | CONFIG_FB_CFB_FILLRECT=y | ||
| 731 | CONFIG_FB_CFB_COPYAREA=y | ||
| 732 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 733 | CONFIG_FB_SOFT_CURSOR=y | ||
| 734 | # CONFIG_FB_MACMODES is not set | ||
| 735 | CONFIG_FB_MODE_HELPERS=y | ||
| 736 | # CONFIG_FB_TILEBLITTING is not set | ||
| 737 | CONFIG_FB_PXA=y | ||
| 738 | # CONFIG_FB_W100 is not set | ||
| 739 | # CONFIG_FB_PXA_PARAMETERS is not set | ||
| 740 | # CONFIG_FB_S1D13XXX is not set | ||
| 741 | # CONFIG_FB_VIRTUAL is not set | ||
| 742 | |||
| 743 | # | ||
| 744 | # Console display driver support | ||
| 745 | # | ||
| 746 | # CONFIG_VGA_CONSOLE is not set | ||
| 747 | CONFIG_DUMMY_CONSOLE=y | ||
| 748 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 749 | CONFIG_FONTS=y | ||
| 750 | CONFIG_FONT_8x8=y | ||
| 751 | # CONFIG_FONT_8x16 is not set | ||
| 752 | # CONFIG_FONT_6x11 is not set | ||
| 753 | # CONFIG_FONT_7x14 is not set | ||
| 754 | # CONFIG_FONT_PEARL_8x8 is not set | ||
| 755 | # CONFIG_FONT_ACORN_8x8 is not set | ||
| 756 | # CONFIG_FONT_MINI_4x6 is not set | ||
| 757 | # CONFIG_FONT_SUN8x16 is not set | ||
| 758 | # CONFIG_FONT_SUN12x22 is not set | ||
| 759 | # CONFIG_FONT_10x18 is not set | ||
| 760 | |||
| 761 | # | ||
| 762 | # Logo configuration | ||
| 763 | # | ||
| 764 | # CONFIG_LOGO is not set | ||
| 765 | # CONFIG_BACKLIGHT_LCD_SUPPORT is not set | ||
| 766 | |||
| 767 | # | ||
| 768 | # Sound | ||
| 769 | # | ||
| 770 | # CONFIG_SOUND is not set | ||
| 771 | |||
| 772 | # | ||
| 773 | # USB support | ||
| 774 | # | ||
| 775 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 776 | # CONFIG_USB_ARCH_HAS_OHCI is not set | ||
| 777 | # CONFIG_USB is not set | ||
| 778 | |||
| 779 | # | ||
| 780 | # USB Gadget Support | ||
| 781 | # | ||
| 782 | CONFIG_USB_GADGET=y | ||
| 783 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
| 784 | CONFIG_USB_GADGET_SELECTED=y | ||
| 785 | # CONFIG_USB_GADGET_NET2280 is not set | ||
| 786 | CONFIG_USB_GADGET_PXA2XX=y | ||
| 787 | CONFIG_USB_PXA2XX=y | ||
| 788 | # CONFIG_USB_PXA2XX_SMALL is not set | ||
| 789 | # CONFIG_USB_GADGET_GOKU is not set | ||
| 790 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
| 791 | # CONFIG_USB_GADGET_OMAP is not set | ||
| 792 | # CONFIG_USB_GADGET_DUMMY_HCD is not set | ||
| 793 | # CONFIG_USB_GADGET_DUALSPEED is not set | ||
| 794 | # CONFIG_USB_ZERO is not set | ||
| 795 | CONFIG_USB_ETH=y | ||
| 796 | CONFIG_USB_ETH_RNDIS=y | ||
| 797 | # CONFIG_USB_GADGETFS is not set | ||
| 798 | # CONFIG_USB_FILE_STORAGE is not set | ||
| 799 | # CONFIG_USB_G_SERIAL is not set | ||
| 800 | |||
| 801 | # | ||
| 802 | # MMC/SD Card support | ||
| 803 | # | ||
| 804 | CONFIG_MMC=y | ||
| 805 | CONFIG_MMC_DEBUG=y | ||
| 806 | CONFIG_MMC_BLOCK=y | ||
| 807 | CONFIG_MMC_PXA=y | ||
| 808 | # CONFIG_MMC_WBSD is not set | ||
| 809 | |||
| 810 | # | ||
| 811 | # File systems | ||
| 812 | # | ||
| 813 | CONFIG_EXT2_FS=y | ||
| 814 | CONFIG_EXT2_FS_XATTR=y | ||
| 815 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
| 816 | CONFIG_EXT2_FS_SECURITY=y | ||
| 817 | # CONFIG_EXT2_FS_XIP is not set | ||
| 818 | # CONFIG_EXT3_FS is not set | ||
| 819 | # CONFIG_JBD is not set | ||
| 820 | CONFIG_FS_MBCACHE=y | ||
| 821 | # CONFIG_REISERFS_FS is not set | ||
| 822 | # CONFIG_JFS_FS is not set | ||
| 823 | CONFIG_FS_POSIX_ACL=y | ||
| 824 | # CONFIG_XFS_FS is not set | ||
| 825 | # CONFIG_MINIX_FS is not set | ||
| 826 | # CONFIG_ROMFS_FS is not set | ||
| 827 | CONFIG_INOTIFY=y | ||
| 828 | # CONFIG_QUOTA is not set | ||
| 829 | CONFIG_DNOTIFY=y | ||
| 830 | # CONFIG_AUTOFS_FS is not set | ||
| 831 | # CONFIG_AUTOFS4_FS is not set | ||
| 832 | # CONFIG_FUSE_FS is not set | ||
| 833 | |||
| 834 | # | ||
| 835 | # CD-ROM/DVD Filesystems | ||
| 836 | # | ||
| 837 | # CONFIG_ISO9660_FS is not set | ||
| 838 | # CONFIG_UDF_FS is not set | ||
| 839 | |||
| 840 | # | ||
| 841 | # DOS/FAT/NT Filesystems | ||
| 842 | # | ||
| 843 | CONFIG_FAT_FS=y | ||
| 844 | CONFIG_MSDOS_FS=y | ||
| 845 | CONFIG_VFAT_FS=y | ||
| 846 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 847 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 848 | # CONFIG_NTFS_FS is not set | ||
| 849 | |||
| 850 | # | ||
| 851 | # Pseudo filesystems | ||
| 852 | # | ||
| 853 | CONFIG_PROC_FS=y | ||
| 854 | CONFIG_SYSFS=y | ||
| 855 | CONFIG_TMPFS=y | ||
| 856 | # CONFIG_HUGETLB_PAGE is not set | ||
| 857 | CONFIG_RAMFS=y | ||
| 858 | # CONFIG_RELAYFS_FS is not set | ||
| 859 | |||
| 860 | # | ||
| 861 | # Miscellaneous filesystems | ||
| 862 | # | ||
| 863 | # CONFIG_ADFS_FS is not set | ||
| 864 | # CONFIG_AFFS_FS is not set | ||
| 865 | # CONFIG_HFS_FS is not set | ||
| 866 | # CONFIG_HFSPLUS_FS is not set | ||
| 867 | # CONFIG_BEFS_FS is not set | ||
| 868 | # CONFIG_BFS_FS is not set | ||
| 869 | # CONFIG_EFS_FS is not set | ||
| 870 | # CONFIG_JFFS_FS is not set | ||
| 871 | CONFIG_JFFS2_FS=y | ||
| 872 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 873 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 874 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
| 875 | CONFIG_JFFS2_ZLIB=y | ||
| 876 | CONFIG_JFFS2_RTIME=y | ||
| 877 | CONFIG_JFFS2_RUBIN=y | ||
| 878 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
| 879 | CONFIG_JFFS2_CMODE_PRIORITY=y | ||
| 880 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
| 881 | CONFIG_CRAMFS=m | ||
| 882 | # CONFIG_VXFS_FS is not set | ||
| 883 | # CONFIG_HPFS_FS is not set | ||
| 884 | # CONFIG_QNX4FS_FS is not set | ||
| 885 | # CONFIG_SYSV_FS is not set | ||
| 886 | # CONFIG_UFS_FS is not set | ||
| 887 | |||
| 888 | # | ||
| 889 | # Network File Systems | ||
| 890 | # | ||
| 891 | # CONFIG_NFS_FS is not set | ||
| 892 | # CONFIG_NFSD is not set | ||
| 893 | # CONFIG_SMB_FS is not set | ||
| 894 | # CONFIG_CIFS is not set | ||
| 895 | # CONFIG_NCP_FS is not set | ||
| 896 | # CONFIG_CODA_FS is not set | ||
| 897 | # CONFIG_AFS_FS is not set | ||
| 898 | # CONFIG_9P_FS is not set | ||
| 899 | |||
| 900 | # | ||
| 901 | # Partition Types | ||
| 902 | # | ||
| 903 | CONFIG_PARTITION_ADVANCED=y | ||
| 904 | # CONFIG_ACORN_PARTITION is not set | ||
| 905 | # CONFIG_OSF_PARTITION is not set | ||
| 906 | # CONFIG_AMIGA_PARTITION is not set | ||
| 907 | # CONFIG_ATARI_PARTITION is not set | ||
| 908 | # CONFIG_MAC_PARTITION is not set | ||
| 909 | CONFIG_MSDOS_PARTITION=y | ||
| 910 | # CONFIG_BSD_DISKLABEL is not set | ||
| 911 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 912 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 913 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 914 | # CONFIG_LDM_PARTITION is not set | ||
| 915 | # CONFIG_SGI_PARTITION is not set | ||
| 916 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 917 | # CONFIG_SUN_PARTITION is not set | ||
| 918 | # CONFIG_EFI_PARTITION is not set | ||
| 919 | |||
| 920 | # | ||
| 921 | # Native Language Support | ||
| 922 | # | ||
| 923 | CONFIG_NLS=y | ||
| 924 | CONFIG_NLS_DEFAULT="cp437" | ||
| 925 | CONFIG_NLS_CODEPAGE_437=y | ||
| 926 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 927 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 928 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 929 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 930 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 931 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 932 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 933 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 934 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 935 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 936 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 937 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 938 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 939 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 940 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 941 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 942 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 943 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 944 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 945 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 946 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 947 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 948 | CONFIG_NLS_ASCII=y | ||
| 949 | CONFIG_NLS_ISO8859_1=y | ||
| 950 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 951 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 952 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 953 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 954 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 955 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 956 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 957 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 958 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 959 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 960 | # CONFIG_NLS_KOI8_R is not set | ||
| 961 | # CONFIG_NLS_KOI8_U is not set | ||
| 962 | CONFIG_NLS_UTF8=y | ||
| 963 | |||
| 964 | # | ||
| 965 | # Profiling support | ||
| 966 | # | ||
| 967 | # CONFIG_PROFILING is not set | ||
| 968 | |||
| 969 | # | ||
| 970 | # Kernel hacking | ||
| 971 | # | ||
| 972 | # CONFIG_PRINTK_TIME is not set | ||
| 973 | CONFIG_DEBUG_KERNEL=y | ||
| 974 | CONFIG_MAGIC_SYSRQ=y | ||
| 975 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 976 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 977 | # CONFIG_SCHEDSTATS is not set | ||
| 978 | # CONFIG_DEBUG_SLAB is not set | ||
| 979 | CONFIG_DEBUG_PREEMPT=y | ||
| 980 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 981 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 982 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 983 | # CONFIG_DEBUG_BUGVERBOSE is not set | ||
| 984 | # CONFIG_DEBUG_INFO is not set | ||
| 985 | # CONFIG_DEBUG_FS is not set | ||
| 986 | CONFIG_FRAME_POINTER=y | ||
| 987 | # CONFIG_DEBUG_USER is not set | ||
| 988 | # CONFIG_DEBUG_WAITQ is not set | ||
| 989 | CONFIG_DEBUG_ERRORS=y | ||
| 990 | # CONFIG_DEBUG_LL is not set | ||
| 991 | |||
| 992 | # | ||
| 993 | # Security options | ||
| 994 | # | ||
| 995 | # CONFIG_KEYS is not set | ||
| 996 | # CONFIG_SECURITY is not set | ||
| 997 | |||
| 998 | # | ||
| 999 | # Cryptographic options | ||
| 1000 | # | ||
| 1001 | # CONFIG_CRYPTO is not set | ||
| 1002 | |||
| 1003 | # | ||
| 1004 | # Hardware crypto devices | ||
| 1005 | # | ||
| 1006 | |||
| 1007 | # | ||
| 1008 | # Library routines | ||
| 1009 | # | ||
| 1010 | CONFIG_CRC_CCITT=y | ||
| 1011 | # CONFIG_CRC16 is not set | ||
| 1012 | CONFIG_CRC32=y | ||
| 1013 | # CONFIG_LIBCRC32C is not set | ||
| 1014 | CONFIG_ZLIB_INFLATE=y | ||
| 1015 | CONFIG_ZLIB_DEFLATE=y | ||
diff --git a/arch/arm/configs/spitz_defconfig b/arch/arm/configs/spitz_defconfig new file mode 100644 index 000000000000..900e04f8e38c --- /dev/null +++ b/arch/arm/configs/spitz_defconfig | |||
| @@ -0,0 +1,1401 @@ | |||
| 1 | # | ||
| 2 | # Automatically generated make config: don't edit | ||
| 3 | # Linux kernel version: 2.6.14-rc3 | ||
| 4 | # Sun Oct 9 17:11:19 2005 | ||
| 5 | # | ||
| 6 | CONFIG_ARM=y | ||
| 7 | CONFIG_MMU=y | ||
| 8 | CONFIG_UID16=y | ||
| 9 | CONFIG_RWSEM_GENERIC_SPINLOCK=y | ||
| 10 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 11 | |||
| 12 | # | ||
| 13 | # Code maturity level options | ||
| 14 | # | ||
| 15 | CONFIG_EXPERIMENTAL=y | ||
| 16 | CONFIG_CLEAN_COMPILE=y | ||
| 17 | CONFIG_BROKEN_ON_SMP=y | ||
| 18 | CONFIG_LOCK_KERNEL=y | ||
| 19 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 20 | |||
| 21 | # | ||
| 22 | # General setup | ||
| 23 | # | ||
| 24 | CONFIG_LOCALVERSION="" | ||
| 25 | CONFIG_LOCALVERSION_AUTO=y | ||
| 26 | CONFIG_SWAP=y | ||
| 27 | CONFIG_SYSVIPC=y | ||
| 28 | # CONFIG_POSIX_MQUEUE is not set | ||
| 29 | CONFIG_BSD_PROCESS_ACCT=y | ||
| 30 | # CONFIG_BSD_PROCESS_ACCT_V3 is not set | ||
| 31 | CONFIG_SYSCTL=y | ||
| 32 | # CONFIG_AUDIT is not set | ||
| 33 | CONFIG_HOTPLUG=y | ||
| 34 | CONFIG_KOBJECT_UEVENT=y | ||
| 35 | # CONFIG_IKCONFIG is not set | ||
| 36 | CONFIG_INITRAMFS_SOURCE="" | ||
| 37 | CONFIG_EMBEDDED=y | ||
| 38 | CONFIG_KALLSYMS=y | ||
| 39 | # CONFIG_KALLSYMS_ALL is not set | ||
| 40 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | ||
| 41 | CONFIG_PRINTK=y | ||
| 42 | CONFIG_BUG=y | ||
| 43 | CONFIG_BASE_FULL=y | ||
| 44 | CONFIG_FUTEX=y | ||
| 45 | CONFIG_EPOLL=y | ||
| 46 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 47 | CONFIG_SHMEM=y | ||
| 48 | CONFIG_CC_ALIGN_FUNCTIONS=0 | ||
| 49 | CONFIG_CC_ALIGN_LABELS=0 | ||
| 50 | CONFIG_CC_ALIGN_LOOPS=0 | ||
| 51 | CONFIG_CC_ALIGN_JUMPS=0 | ||
| 52 | # CONFIG_TINY_SHMEM is not set | ||
| 53 | CONFIG_BASE_SMALL=0 | ||
| 54 | |||
| 55 | # | ||
| 56 | # Loadable module support | ||
| 57 | # | ||
| 58 | CONFIG_MODULES=y | ||
| 59 | CONFIG_MODULE_UNLOAD=y | ||
| 60 | CONFIG_MODULE_FORCE_UNLOAD=y | ||
| 61 | CONFIG_OBSOLETE_MODPARM=y | ||
| 62 | # CONFIG_MODVERSIONS is not set | ||
| 63 | # CONFIG_MODULE_SRCVERSION_ALL is not set | ||
| 64 | CONFIG_KMOD=y | ||
| 65 | |||
| 66 | # | ||
| 67 | # System Type | ||
| 68 | # | ||
| 69 | # CONFIG_ARCH_CLPS7500 is not set | ||
| 70 | # CONFIG_ARCH_CLPS711X is not set | ||
| 71 | # CONFIG_ARCH_CO285 is not set | ||
| 72 | # CONFIG_ARCH_EBSA110 is not set | ||
| 73 | # CONFIG_ARCH_CAMELOT is not set | ||
| 74 | # CONFIG_ARCH_FOOTBRIDGE is not set | ||
| 75 | # CONFIG_ARCH_INTEGRATOR is not set | ||
| 76 | # CONFIG_ARCH_IOP3XX is not set | ||
| 77 | # CONFIG_ARCH_IXP4XX is not set | ||
| 78 | # CONFIG_ARCH_IXP2000 is not set | ||
| 79 | # CONFIG_ARCH_L7200 is not set | ||
| 80 | CONFIG_ARCH_PXA=y | ||
| 81 | # CONFIG_ARCH_RPC is not set | ||
| 82 | # CONFIG_ARCH_SA1100 is not set | ||
| 83 | # CONFIG_ARCH_S3C2410 is not set | ||
| 84 | # CONFIG_ARCH_SHARK is not set | ||
| 85 | # CONFIG_ARCH_LH7A40X is not set | ||
| 86 | # CONFIG_ARCH_OMAP is not set | ||
| 87 | # CONFIG_ARCH_VERSATILE is not set | ||
| 88 | # CONFIG_ARCH_IMX is not set | ||
| 89 | # CONFIG_ARCH_H720X is not set | ||
| 90 | # CONFIG_ARCH_AAEC2000 is not set | ||
| 91 | |||
| 92 | # | ||
| 93 | # Intel PXA2xx Implementations | ||
| 94 | # | ||
| 95 | # CONFIG_ARCH_LUBBOCK is not set | ||
| 96 | # CONFIG_MACH_MAINSTONE is not set | ||
| 97 | # CONFIG_ARCH_PXA_IDP is not set | ||
| 98 | CONFIG_PXA_SHARPSL=y | ||
| 99 | # CONFIG_PXA_SHARPSL_25x is not set | ||
| 100 | CONFIG_PXA_SHARPSL_27x=y | ||
| 101 | CONFIG_MACH_SPITZ=y | ||
| 102 | CONFIG_MACH_BORZOI=y | ||
| 103 | CONFIG_PXA27x=y | ||
| 104 | CONFIG_PXA_SHARP_Cxx00=y | ||
| 105 | |||
| 106 | # | ||
| 107 | # Processor Type | ||
| 108 | # | ||
| 109 | CONFIG_CPU_32=y | ||
| 110 | CONFIG_CPU_XSCALE=y | ||
| 111 | CONFIG_CPU_32v5=y | ||
| 112 | CONFIG_CPU_ABRT_EV5T=y | ||
| 113 | CONFIG_CPU_CACHE_VIVT=y | ||
| 114 | CONFIG_CPU_TLB_V4WBI=y | ||
| 115 | |||
| 116 | # | ||
| 117 | # Processor Features | ||
| 118 | # | ||
| 119 | CONFIG_ARM_THUMB=y | ||
| 120 | CONFIG_XSCALE_PMU=y | ||
| 121 | CONFIG_SHARP_PARAM=y | ||
| 122 | CONFIG_SHARP_SCOOP=y | ||
| 123 | |||
| 124 | # | ||
| 125 | # Bus support | ||
| 126 | # | ||
| 127 | CONFIG_ISA_DMA_API=y | ||
| 128 | |||
| 129 | # | ||
| 130 | # PCCARD (PCMCIA/CardBus) support | ||
| 131 | # | ||
| 132 | CONFIG_PCCARD=y | ||
| 133 | # CONFIG_PCMCIA_DEBUG is not set | ||
| 134 | CONFIG_PCMCIA=y | ||
| 135 | CONFIG_PCMCIA_LOAD_CIS=y | ||
| 136 | CONFIG_PCMCIA_IOCTL=y | ||
| 137 | |||
| 138 | # | ||
| 139 | # PC-card bridges | ||
| 140 | # | ||
| 141 | CONFIG_PCMCIA_PXA2XX=y | ||
| 142 | |||
| 143 | # | ||
| 144 | # Kernel Features | ||
| 145 | # | ||
| 146 | CONFIG_PREEMPT=y | ||
| 147 | # CONFIG_NO_IDLE_HZ is not set | ||
| 148 | # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set | ||
| 149 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 150 | CONFIG_FLATMEM_MANUAL=y | ||
| 151 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 152 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 153 | CONFIG_FLATMEM=y | ||
| 154 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 155 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 156 | CONFIG_ALIGNMENT_TRAP=y | ||
| 157 | |||
| 158 | # | ||
| 159 | # Boot options | ||
| 160 | # | ||
| 161 | CONFIG_ZBOOT_ROM_TEXT=0x0 | ||
| 162 | CONFIG_ZBOOT_ROM_BSS=0x0 | ||
| 163 | CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 debug" | ||
| 164 | # CONFIG_XIP_KERNEL is not set | ||
| 165 | |||
| 166 | # | ||
| 167 | # Floating point emulation | ||
| 168 | # | ||
| 169 | |||
| 170 | # | ||
| 171 | # At least one emulation must be selected | ||
| 172 | # | ||
| 173 | CONFIG_FPE_NWFPE=y | ||
| 174 | # CONFIG_FPE_NWFPE_XP is not set | ||
| 175 | # CONFIG_FPE_FASTFPE is not set | ||
| 176 | |||
| 177 | # | ||
| 178 | # Userspace binary formats | ||
| 179 | # | ||
| 180 | CONFIG_BINFMT_ELF=y | ||
| 181 | CONFIG_BINFMT_AOUT=m | ||
| 182 | CONFIG_BINFMT_MISC=m | ||
| 183 | # CONFIG_ARTHUR is not set | ||
| 184 | |||
| 185 | # | ||
| 186 | # Power management options | ||
| 187 | # | ||
| 188 | CONFIG_PM=y | ||
| 189 | CONFIG_APM=y | ||
| 190 | |||
| 191 | # | ||
| 192 | # Networking | ||
| 193 | # | ||
| 194 | CONFIG_NET=y | ||
| 195 | |||
| 196 | # | ||
| 197 | # Networking options | ||
| 198 | # | ||
| 199 | CONFIG_PACKET=y | ||
| 200 | CONFIG_PACKET_MMAP=y | ||
| 201 | CONFIG_UNIX=y | ||
| 202 | CONFIG_XFRM=y | ||
| 203 | # CONFIG_XFRM_USER is not set | ||
| 204 | # CONFIG_NET_KEY is not set | ||
| 205 | CONFIG_INET=y | ||
| 206 | # CONFIG_IP_MULTICAST is not set | ||
| 207 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 208 | CONFIG_IP_FIB_HASH=y | ||
| 209 | # CONFIG_IP_PNP is not set | ||
| 210 | # CONFIG_NET_IPIP is not set | ||
| 211 | # CONFIG_NET_IPGRE is not set | ||
| 212 | # CONFIG_ARPD is not set | ||
| 213 | CONFIG_SYN_COOKIES=y | ||
| 214 | # CONFIG_INET_AH is not set | ||
| 215 | # CONFIG_INET_ESP is not set | ||
| 216 | # CONFIG_INET_IPCOMP is not set | ||
| 217 | # CONFIG_INET_TUNNEL is not set | ||
| 218 | CONFIG_INET_DIAG=y | ||
| 219 | CONFIG_INET_TCP_DIAG=y | ||
| 220 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 221 | CONFIG_TCP_CONG_BIC=y | ||
| 222 | |||
| 223 | # | ||
| 224 | # IP: Virtual Server Configuration | ||
| 225 | # | ||
| 226 | # CONFIG_IP_VS is not set | ||
| 227 | CONFIG_IPV6=m | ||
| 228 | # CONFIG_IPV6_PRIVACY is not set | ||
| 229 | CONFIG_INET6_AH=m | ||
| 230 | CONFIG_INET6_ESP=m | ||
| 231 | CONFIG_INET6_IPCOMP=m | ||
| 232 | CONFIG_INET6_TUNNEL=m | ||
| 233 | CONFIG_IPV6_TUNNEL=m | ||
| 234 | CONFIG_NETFILTER=y | ||
| 235 | # CONFIG_NETFILTER_DEBUG is not set | ||
| 236 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 237 | |||
| 238 | # | ||
| 239 | # IP: Netfilter Configuration | ||
| 240 | # | ||
| 241 | CONFIG_IP_NF_CONNTRACK=m | ||
| 242 | # CONFIG_IP_NF_CT_ACCT is not set | ||
| 243 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
| 244 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 245 | CONFIG_IP_NF_CT_PROTO_SCTP=m | ||
| 246 | CONFIG_IP_NF_FTP=m | ||
| 247 | CONFIG_IP_NF_IRC=m | ||
| 248 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 249 | CONFIG_IP_NF_TFTP=m | ||
| 250 | CONFIG_IP_NF_AMANDA=m | ||
| 251 | # CONFIG_IP_NF_PPTP is not set | ||
| 252 | CONFIG_IP_NF_QUEUE=m | ||
| 253 | CONFIG_IP_NF_IPTABLES=m | ||
| 254 | CONFIG_IP_NF_MATCH_LIMIT=m | ||
| 255 | CONFIG_IP_NF_MATCH_IPRANGE=m | ||
| 256 | CONFIG_IP_NF_MATCH_MAC=m | ||
| 257 | CONFIG_IP_NF_MATCH_PKTTYPE=m | ||
| 258 | CONFIG_IP_NF_MATCH_MARK=m | ||
| 259 | CONFIG_IP_NF_MATCH_MULTIPORT=m | ||
| 260 | CONFIG_IP_NF_MATCH_TOS=m | ||
| 261 | CONFIG_IP_NF_MATCH_RECENT=m | ||
| 262 | CONFIG_IP_NF_MATCH_ECN=m | ||
| 263 | CONFIG_IP_NF_MATCH_DSCP=m | ||
| 264 | CONFIG_IP_NF_MATCH_AH_ESP=m | ||
| 265 | CONFIG_IP_NF_MATCH_LENGTH=m | ||
| 266 | CONFIG_IP_NF_MATCH_TTL=m | ||
| 267 | CONFIG_IP_NF_MATCH_TCPMSS=m | ||
| 268 | CONFIG_IP_NF_MATCH_HELPER=m | ||
| 269 | CONFIG_IP_NF_MATCH_STATE=m | ||
| 270 | CONFIG_IP_NF_MATCH_CONNTRACK=m | ||
| 271 | CONFIG_IP_NF_MATCH_OWNER=m | ||
| 272 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | ||
| 273 | CONFIG_IP_NF_MATCH_REALM=m | ||
| 274 | CONFIG_IP_NF_MATCH_SCTP=m | ||
| 275 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 276 | CONFIG_IP_NF_MATCH_COMMENT=m | ||
| 277 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | ||
| 278 | # CONFIG_IP_NF_MATCH_STRING is not set | ||
| 279 | CONFIG_IP_NF_FILTER=m | ||
| 280 | # CONFIG_IP_NF_TARGET_REJECT is not set | ||
| 281 | CONFIG_IP_NF_TARGET_LOG=m | ||
| 282 | CONFIG_IP_NF_TARGET_ULOG=m | ||
| 283 | CONFIG_IP_NF_TARGET_TCPMSS=m | ||
| 284 | # CONFIG_IP_NF_TARGET_NFQUEUE is not set | ||
| 285 | CONFIG_IP_NF_NAT=m | ||
| 286 | CONFIG_IP_NF_NAT_NEEDED=y | ||
| 287 | # CONFIG_IP_NF_TARGET_MASQUERADE is not set | ||
| 288 | # CONFIG_IP_NF_TARGET_REDIRECT is not set | ||
| 289 | # CONFIG_IP_NF_TARGET_NETMAP is not set | ||
| 290 | # CONFIG_IP_NF_TARGET_SAME is not set | ||
| 291 | # CONFIG_IP_NF_NAT_SNMP_BASIC is not set | ||
| 292 | CONFIG_IP_NF_NAT_IRC=m | ||
| 293 | CONFIG_IP_NF_NAT_FTP=m | ||
| 294 | CONFIG_IP_NF_NAT_TFTP=m | ||
| 295 | CONFIG_IP_NF_NAT_AMANDA=m | ||
| 296 | CONFIG_IP_NF_MANGLE=m | ||
| 297 | # CONFIG_IP_NF_TARGET_TOS is not set | ||
| 298 | # CONFIG_IP_NF_TARGET_ECN is not set | ||
| 299 | # CONFIG_IP_NF_TARGET_DSCP is not set | ||
| 300 | # CONFIG_IP_NF_TARGET_MARK is not set | ||
| 301 | # CONFIG_IP_NF_TARGET_CLASSIFY is not set | ||
| 302 | # CONFIG_IP_NF_TARGET_TTL is not set | ||
| 303 | CONFIG_IP_NF_RAW=m | ||
| 304 | # CONFIG_IP_NF_TARGET_NOTRACK is not set | ||
| 305 | CONFIG_IP_NF_ARPTABLES=m | ||
| 306 | CONFIG_IP_NF_ARPFILTER=m | ||
| 307 | CONFIG_IP_NF_ARP_MANGLE=m | ||
| 308 | |||
| 309 | # | ||
| 310 | # IPv6: Netfilter Configuration (EXPERIMENTAL) | ||
| 311 | # | ||
| 312 | CONFIG_IP6_NF_QUEUE=m | ||
| 313 | CONFIG_IP6_NF_IPTABLES=m | ||
| 314 | CONFIG_IP6_NF_MATCH_LIMIT=m | ||
| 315 | CONFIG_IP6_NF_MATCH_MAC=m | ||
| 316 | CONFIG_IP6_NF_MATCH_RT=m | ||
| 317 | CONFIG_IP6_NF_MATCH_OPTS=m | ||
| 318 | CONFIG_IP6_NF_MATCH_FRAG=m | ||
| 319 | CONFIG_IP6_NF_MATCH_HL=m | ||
| 320 | CONFIG_IP6_NF_MATCH_MULTIPORT=m | ||
| 321 | CONFIG_IP6_NF_MATCH_OWNER=m | ||
| 322 | CONFIG_IP6_NF_MATCH_MARK=m | ||
| 323 | CONFIG_IP6_NF_MATCH_IPV6HEADER=m | ||
| 324 | CONFIG_IP6_NF_MATCH_AHESP=m | ||
| 325 | CONFIG_IP6_NF_MATCH_LENGTH=m | ||
| 326 | CONFIG_IP6_NF_MATCH_EUI64=m | ||
| 327 | CONFIG_IP6_NF_FILTER=m | ||
| 328 | # CONFIG_IP6_NF_TARGET_LOG is not set | ||
| 329 | # CONFIG_IP6_NF_TARGET_REJECT is not set | ||
| 330 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
| 331 | CONFIG_IP6_NF_MANGLE=m | ||
| 332 | # CONFIG_IP6_NF_TARGET_MARK is not set | ||
| 333 | # CONFIG_IP6_NF_TARGET_HL is not set | ||
| 334 | CONFIG_IP6_NF_RAW=m | ||
| 335 | |||
| 336 | # | ||
| 337 | # DCCP Configuration (EXPERIMENTAL) | ||
| 338 | # | ||
| 339 | # CONFIG_IP_DCCP is not set | ||
| 340 | |||
| 341 | # | ||
| 342 | # SCTP Configuration (EXPERIMENTAL) | ||
| 343 | # | ||
| 344 | # CONFIG_IP_SCTP is not set | ||
| 345 | # CONFIG_ATM is not set | ||
| 346 | # CONFIG_BRIDGE is not set | ||
| 347 | # CONFIG_VLAN_8021Q is not set | ||
| 348 | # CONFIG_DECNET is not set | ||
| 349 | # CONFIG_LLC2 is not set | ||
| 350 | # CONFIG_IPX is not set | ||
| 351 | # CONFIG_ATALK is not set | ||
| 352 | # CONFIG_X25 is not set | ||
| 353 | # CONFIG_LAPB is not set | ||
| 354 | # CONFIG_NET_DIVERT is not set | ||
| 355 | # CONFIG_ECONET is not set | ||
| 356 | # CONFIG_WAN_ROUTER is not set | ||
| 357 | # CONFIG_NET_SCHED is not set | ||
| 358 | CONFIG_NET_CLS_ROUTE=y | ||
| 359 | |||
| 360 | # | ||
| 361 | # Network testing | ||
| 362 | # | ||
| 363 | # CONFIG_NET_PKTGEN is not set | ||
| 364 | # CONFIG_HAMRADIO is not set | ||
| 365 | CONFIG_IRDA=m | ||
| 366 | |||
| 367 | # | ||
| 368 | # IrDA protocols | ||
| 369 | # | ||
| 370 | CONFIG_IRLAN=m | ||
| 371 | CONFIG_IRNET=m | ||
| 372 | CONFIG_IRCOMM=m | ||
| 373 | # CONFIG_IRDA_ULTRA is not set | ||
| 374 | |||
| 375 | # | ||
| 376 | # IrDA options | ||
| 377 | # | ||
| 378 | # CONFIG_IRDA_CACHE_LAST_LSAP is not set | ||
| 379 | # CONFIG_IRDA_FAST_RR is not set | ||
| 380 | # CONFIG_IRDA_DEBUG is not set | ||
| 381 | |||
| 382 | # | ||
| 383 | # Infrared-port device drivers | ||
| 384 | # | ||
| 385 | |||
| 386 | # | ||
| 387 | # SIR device drivers | ||
| 388 | # | ||
| 389 | # CONFIG_IRTTY_SIR is not set | ||
| 390 | |||
| 391 | # | ||
| 392 | # Dongle support | ||
| 393 | # | ||
| 394 | |||
| 395 | # | ||
| 396 | # Old SIR device drivers | ||
| 397 | # | ||
| 398 | # CONFIG_IRPORT_SIR is not set | ||
| 399 | |||
| 400 | # | ||
| 401 | # Old Serial dongle support | ||
| 402 | # | ||
| 403 | |||
| 404 | # | ||
| 405 | # FIR device drivers | ||
| 406 | # | ||
| 407 | # CONFIG_USB_IRDA is not set | ||
| 408 | # CONFIG_SIGMATEL_FIR is not set | ||
| 409 | # CONFIG_NSC_FIR is not set | ||
| 410 | # CONFIG_WINBOND_FIR is not set | ||
| 411 | # CONFIG_SMC_IRCC_FIR is not set | ||
| 412 | # CONFIG_ALI_FIR is not set | ||
| 413 | # CONFIG_VIA_FIR is not set | ||
| 414 | CONFIG_BT=m | ||
| 415 | CONFIG_BT_L2CAP=m | ||
| 416 | CONFIG_BT_SCO=m | ||
| 417 | CONFIG_BT_RFCOMM=m | ||
| 418 | CONFIG_BT_RFCOMM_TTY=y | ||
| 419 | CONFIG_BT_BNEP=m | ||
| 420 | CONFIG_BT_BNEP_MC_FILTER=y | ||
| 421 | CONFIG_BT_BNEP_PROTO_FILTER=y | ||
| 422 | CONFIG_BT_HIDP=m | ||
| 423 | |||
| 424 | # | ||
| 425 | # Bluetooth device drivers | ||
| 426 | # | ||
| 427 | CONFIG_BT_HCIUSB=m | ||
| 428 | # CONFIG_BT_HCIUSB_SCO is not set | ||
| 429 | CONFIG_BT_HCIUART=m | ||
| 430 | CONFIG_BT_HCIUART_H4=y | ||
| 431 | CONFIG_BT_HCIUART_BCSP=y | ||
| 432 | CONFIG_BT_HCIUART_BCSP_TXCRC=y | ||
| 433 | CONFIG_BT_HCIBCM203X=m | ||
| 434 | CONFIG_BT_HCIBPA10X=m | ||
| 435 | CONFIG_BT_HCIBFUSB=m | ||
| 436 | CONFIG_BT_HCIDTL1=m | ||
| 437 | CONFIG_BT_HCIBT3C=m | ||
| 438 | CONFIG_BT_HCIBLUECARD=m | ||
| 439 | CONFIG_BT_HCIBTUART=m | ||
| 440 | CONFIG_BT_HCIVHCI=m | ||
| 441 | CONFIG_IEEE80211=m | ||
| 442 | # CONFIG_IEEE80211_DEBUG is not set | ||
| 443 | CONFIG_IEEE80211_CRYPT_WEP=m | ||
| 444 | # CONFIG_IEEE80211_CRYPT_CCMP is not set | ||
| 445 | # CONFIG_IEEE80211_CRYPT_TKIP is not set | ||
| 446 | |||
| 447 | # | ||
| 448 | # Device Drivers | ||
| 449 | # | ||
| 450 | |||
| 451 | # | ||
| 452 | # Generic Driver Options | ||
| 453 | # | ||
| 454 | CONFIG_STANDALONE=y | ||
| 455 | CONFIG_PREVENT_FIRMWARE_BUILD=y | ||
| 456 | CONFIG_FW_LOADER=y | ||
| 457 | # CONFIG_DEBUG_DRIVER is not set | ||
| 458 | |||
| 459 | # | ||
| 460 | # Memory Technology Devices (MTD) | ||
| 461 | # | ||
| 462 | CONFIG_MTD=y | ||
| 463 | # CONFIG_MTD_DEBUG is not set | ||
| 464 | # CONFIG_MTD_CONCAT is not set | ||
| 465 | CONFIG_MTD_PARTITIONS=y | ||
| 466 | # CONFIG_MTD_REDBOOT_PARTS is not set | ||
| 467 | CONFIG_MTD_CMDLINE_PARTS=y | ||
| 468 | # CONFIG_MTD_AFS_PARTS is not set | ||
| 469 | |||
| 470 | # | ||
| 471 | # User Modules And Translation Layers | ||
| 472 | # | ||
| 473 | CONFIG_MTD_CHAR=y | ||
| 474 | CONFIG_MTD_BLOCK=y | ||
| 475 | # CONFIG_FTL is not set | ||
| 476 | # CONFIG_NFTL is not set | ||
| 477 | # CONFIG_INFTL is not set | ||
| 478 | |||
| 479 | # | ||
| 480 | # RAM/ROM/Flash chip drivers | ||
| 481 | # | ||
| 482 | # CONFIG_MTD_CFI is not set | ||
| 483 | # CONFIG_MTD_JEDECPROBE is not set | ||
| 484 | CONFIG_MTD_MAP_BANK_WIDTH_1=y | ||
| 485 | CONFIG_MTD_MAP_BANK_WIDTH_2=y | ||
| 486 | CONFIG_MTD_MAP_BANK_WIDTH_4=y | ||
| 487 | # CONFIG_MTD_MAP_BANK_WIDTH_8 is not set | ||
| 488 | # CONFIG_MTD_MAP_BANK_WIDTH_16 is not set | ||
| 489 | # CONFIG_MTD_MAP_BANK_WIDTH_32 is not set | ||
| 490 | CONFIG_MTD_CFI_I1=y | ||
| 491 | CONFIG_MTD_CFI_I2=y | ||
| 492 | # CONFIG_MTD_CFI_I4 is not set | ||
| 493 | # CONFIG_MTD_CFI_I8 is not set | ||
| 494 | # CONFIG_MTD_RAM is not set | ||
| 495 | CONFIG_MTD_ROM=y | ||
| 496 | # CONFIG_MTD_ABSENT is not set | ||
| 497 | |||
| 498 | # | ||
| 499 | # Mapping drivers for chip access | ||
| 500 | # | ||
| 501 | CONFIG_MTD_COMPLEX_MAPPINGS=y | ||
| 502 | CONFIG_MTD_SHARP_SL=y | ||
| 503 | # CONFIG_MTD_PLATRAM is not set | ||
| 504 | |||
| 505 | # | ||
| 506 | # Self-contained MTD device drivers | ||
| 507 | # | ||
| 508 | # CONFIG_MTD_SLRAM is not set | ||
| 509 | # CONFIG_MTD_PHRAM is not set | ||
| 510 | # CONFIG_MTD_MTDRAM is not set | ||
| 511 | # CONFIG_MTD_BLKMTD is not set | ||
| 512 | # CONFIG_MTD_BLOCK2MTD is not set | ||
| 513 | |||
| 514 | # | ||
| 515 | # Disk-On-Chip Device Drivers | ||
| 516 | # | ||
| 517 | # CONFIG_MTD_DOC2000 is not set | ||
| 518 | # CONFIG_MTD_DOC2001 is not set | ||
| 519 | # CONFIG_MTD_DOC2001PLUS is not set | ||
| 520 | |||
| 521 | # | ||
| 522 | # NAND Flash Device Drivers | ||
| 523 | # | ||
| 524 | CONFIG_MTD_NAND=y | ||
| 525 | CONFIG_MTD_NAND_VERIFY_WRITE=y | ||
| 526 | # CONFIG_MTD_NAND_H1900 is not set | ||
| 527 | CONFIG_MTD_NAND_IDS=y | ||
| 528 | # CONFIG_MTD_NAND_DISKONCHIP is not set | ||
| 529 | CONFIG_MTD_NAND_SHARPSL=y | ||
| 530 | # CONFIG_MTD_NAND_NANDSIM is not set | ||
| 531 | |||
| 532 | # | ||
| 533 | # Parallel port support | ||
| 534 | # | ||
| 535 | # CONFIG_PARPORT is not set | ||
| 536 | |||
| 537 | # | ||
| 538 | # Plug and Play support | ||
| 539 | # | ||
| 540 | |||
| 541 | # | ||
| 542 | # Block devices | ||
| 543 | # | ||
| 544 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 545 | CONFIG_BLK_DEV_LOOP=y | ||
| 546 | # CONFIG_BLK_DEV_CRYPTOLOOP is not set | ||
| 547 | # CONFIG_BLK_DEV_NBD is not set | ||
| 548 | # CONFIG_BLK_DEV_UB is not set | ||
| 549 | # CONFIG_BLK_DEV_RAM is not set | ||
| 550 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 551 | # CONFIG_CDROM_PKTCDVD is not set | ||
| 552 | |||
| 553 | # | ||
| 554 | # IO Schedulers | ||
| 555 | # | ||
| 556 | CONFIG_IOSCHED_NOOP=y | ||
| 557 | CONFIG_IOSCHED_AS=y | ||
| 558 | CONFIG_IOSCHED_DEADLINE=y | ||
| 559 | CONFIG_IOSCHED_CFQ=y | ||
| 560 | # CONFIG_ATA_OVER_ETH is not set | ||
| 561 | |||
| 562 | # | ||
| 563 | # ATA/ATAPI/MFM/RLL support | ||
| 564 | # | ||
| 565 | CONFIG_IDE=y | ||
| 566 | CONFIG_BLK_DEV_IDE=y | ||
| 567 | |||
| 568 | # | ||
| 569 | # Please see Documentation/ide.txt for help/info on IDE drives | ||
| 570 | # | ||
| 571 | # CONFIG_BLK_DEV_IDE_SATA is not set | ||
| 572 | CONFIG_BLK_DEV_IDEDISK=y | ||
| 573 | # CONFIG_IDEDISK_MULTI_MODE is not set | ||
| 574 | CONFIG_BLK_DEV_IDECS=y | ||
| 575 | # CONFIG_BLK_DEV_IDECD is not set | ||
| 576 | # CONFIG_BLK_DEV_IDETAPE is not set | ||
| 577 | # CONFIG_BLK_DEV_IDEFLOPPY is not set | ||
| 578 | # CONFIG_BLK_DEV_IDESCSI is not set | ||
| 579 | # CONFIG_IDE_TASK_IOCTL is not set | ||
| 580 | |||
| 581 | # | ||
| 582 | # IDE chipset support/bugfixes | ||
| 583 | # | ||
| 584 | CONFIG_IDE_GENERIC=y | ||
| 585 | # CONFIG_IDE_ARM is not set | ||
| 586 | # CONFIG_BLK_DEV_IDEDMA is not set | ||
| 587 | # CONFIG_IDEDMA_AUTO is not set | ||
| 588 | # CONFIG_BLK_DEV_HD is not set | ||
| 589 | |||
| 590 | # | ||
| 591 | # SCSI device support | ||
| 592 | # | ||
| 593 | # CONFIG_RAID_ATTRS is not set | ||
| 594 | CONFIG_SCSI=m | ||
| 595 | CONFIG_SCSI_PROC_FS=y | ||
| 596 | |||
| 597 | # | ||
| 598 | # SCSI support type (disk, tape, CD-ROM) | ||
| 599 | # | ||
| 600 | CONFIG_BLK_DEV_SD=m | ||
| 601 | CONFIG_CHR_DEV_ST=m | ||
| 602 | CONFIG_CHR_DEV_OSST=m | ||
| 603 | CONFIG_BLK_DEV_SR=m | ||
| 604 | # CONFIG_BLK_DEV_SR_VENDOR is not set | ||
| 605 | CONFIG_CHR_DEV_SG=m | ||
| 606 | # CONFIG_CHR_DEV_SCH is not set | ||
| 607 | |||
| 608 | # | ||
| 609 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | ||
| 610 | # | ||
| 611 | CONFIG_SCSI_MULTI_LUN=y | ||
| 612 | # CONFIG_SCSI_CONSTANTS is not set | ||
| 613 | # CONFIG_SCSI_LOGGING is not set | ||
| 614 | |||
| 615 | # | ||
| 616 | # SCSI Transport Attributes | ||
| 617 | # | ||
| 618 | # CONFIG_SCSI_SPI_ATTRS is not set | ||
| 619 | # CONFIG_SCSI_FC_ATTRS is not set | ||
| 620 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 621 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 622 | |||
| 623 | # | ||
| 624 | # SCSI low-level drivers | ||
| 625 | # | ||
| 626 | # CONFIG_SCSI_SATA is not set | ||
| 627 | # CONFIG_SCSI_DEBUG is not set | ||
| 628 | |||
| 629 | # | ||
| 630 | # PCMCIA SCSI adapter support | ||
| 631 | # | ||
| 632 | # CONFIG_PCMCIA_AHA152X is not set | ||
| 633 | # CONFIG_PCMCIA_FDOMAIN is not set | ||
| 634 | # CONFIG_PCMCIA_NINJA_SCSI is not set | ||
| 635 | # CONFIG_PCMCIA_QLOGIC is not set | ||
| 636 | # CONFIG_PCMCIA_SYM53C500 is not set | ||
| 637 | |||
| 638 | # | ||
| 639 | # Multi-device support (RAID and LVM) | ||
| 640 | # | ||
| 641 | # CONFIG_MD is not set | ||
| 642 | |||
| 643 | # | ||
| 644 | # Fusion MPT device support | ||
| 645 | # | ||
| 646 | # CONFIG_FUSION is not set | ||
| 647 | |||
| 648 | # | ||
| 649 | # IEEE 1394 (FireWire) support | ||
| 650 | # | ||
| 651 | |||
| 652 | # | ||
| 653 | # I2O device support | ||
| 654 | # | ||
| 655 | |||
| 656 | # | ||
| 657 | # Network device support | ||
| 658 | # | ||
| 659 | CONFIG_NETDEVICES=y | ||
| 660 | # CONFIG_DUMMY is not set | ||
| 661 | # CONFIG_BONDING is not set | ||
| 662 | # CONFIG_EQUALIZER is not set | ||
| 663 | # CONFIG_TUN is not set | ||
| 664 | |||
| 665 | # | ||
| 666 | # PHY device support | ||
| 667 | # | ||
| 668 | # CONFIG_PHYLIB is not set | ||
| 669 | |||
| 670 | # | ||
| 671 | # Ethernet (10 or 100Mbit) | ||
| 672 | # | ||
| 673 | CONFIG_NET_ETHERNET=y | ||
| 674 | CONFIG_MII=m | ||
| 675 | # CONFIG_SMC91X is not set | ||
| 676 | # CONFIG_DM9000 is not set | ||
| 677 | |||
| 678 | # | ||
| 679 | # Ethernet (1000 Mbit) | ||
| 680 | # | ||
| 681 | |||
| 682 | # | ||
| 683 | # Ethernet (10000 Mbit) | ||
| 684 | # | ||
| 685 | |||
| 686 | # | ||
| 687 | # Token Ring devices | ||
| 688 | # | ||
| 689 | |||
| 690 | # | ||
| 691 | # Wireless LAN (non-hamradio) | ||
| 692 | # | ||
| 693 | CONFIG_NET_RADIO=y | ||
| 694 | |||
| 695 | # | ||
| 696 | # Obsolete Wireless cards support (pre-802.11) | ||
| 697 | # | ||
| 698 | # CONFIG_STRIP is not set | ||
| 699 | # CONFIG_PCMCIA_WAVELAN is not set | ||
| 700 | # CONFIG_PCMCIA_NETWAVE is not set | ||
| 701 | |||
| 702 | # | ||
| 703 | # Wireless 802.11 Frequency Hopping cards support | ||
| 704 | # | ||
| 705 | # CONFIG_PCMCIA_RAYCS is not set | ||
| 706 | |||
| 707 | # | ||
| 708 | # Wireless 802.11b ISA/PCI cards support | ||
| 709 | # | ||
| 710 | CONFIG_HERMES=m | ||
| 711 | # CONFIG_ATMEL is not set | ||
| 712 | |||
| 713 | # | ||
| 714 | # Wireless 802.11b Pcmcia/Cardbus cards support | ||
| 715 | # | ||
| 716 | CONFIG_PCMCIA_HERMES=m | ||
| 717 | CONFIG_PCMCIA_SPECTRUM=m | ||
| 718 | # CONFIG_AIRO_CS is not set | ||
| 719 | # CONFIG_PCMCIA_WL3501 is not set | ||
| 720 | CONFIG_HOSTAP=m | ||
| 721 | CONFIG_HOSTAP_FIRMWARE=y | ||
| 722 | CONFIG_HOSTAP_CS=m | ||
| 723 | CONFIG_NET_WIRELESS=y | ||
| 724 | |||
| 725 | # | ||
| 726 | # PCMCIA network device support | ||
| 727 | # | ||
| 728 | CONFIG_NET_PCMCIA=y | ||
| 729 | # CONFIG_PCMCIA_3C589 is not set | ||
| 730 | # CONFIG_PCMCIA_3C574 is not set | ||
| 731 | # CONFIG_PCMCIA_FMVJ18X is not set | ||
| 732 | CONFIG_PCMCIA_PCNET=m | ||
| 733 | # CONFIG_PCMCIA_NMCLAN is not set | ||
| 734 | # CONFIG_PCMCIA_SMC91C92 is not set | ||
| 735 | # CONFIG_PCMCIA_XIRC2PS is not set | ||
| 736 | # CONFIG_PCMCIA_AXNET is not set | ||
| 737 | |||
| 738 | # | ||
| 739 | # Wan interfaces | ||
| 740 | # | ||
| 741 | # CONFIG_WAN is not set | ||
| 742 | CONFIG_PPP=m | ||
| 743 | # CONFIG_PPP_MULTILINK is not set | ||
| 744 | # CONFIG_PPP_FILTER is not set | ||
| 745 | CONFIG_PPP_ASYNC=m | ||
| 746 | # CONFIG_PPP_SYNC_TTY is not set | ||
| 747 | # CONFIG_PPP_DEFLATE is not set | ||
| 748 | CONFIG_PPP_BSDCOMP=m | ||
| 749 | # CONFIG_PPPOE is not set | ||
| 750 | # CONFIG_SLIP is not set | ||
| 751 | # CONFIG_SHAPER is not set | ||
| 752 | # CONFIG_NETCONSOLE is not set | ||
| 753 | # CONFIG_NETPOLL is not set | ||
| 754 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 755 | |||
| 756 | # | ||
| 757 | # ISDN subsystem | ||
| 758 | # | ||
| 759 | # CONFIG_ISDN is not set | ||
| 760 | |||
| 761 | # | ||
| 762 | # Input device support | ||
| 763 | # | ||
| 764 | CONFIG_INPUT=y | ||
| 765 | |||
| 766 | # | ||
| 767 | # Userland interfaces | ||
| 768 | # | ||
| 769 | # CONFIG_INPUT_MOUSEDEV is not set | ||
| 770 | # CONFIG_INPUT_JOYDEV is not set | ||
| 771 | # CONFIG_INPUT_TSDEV is not set | ||
| 772 | CONFIG_INPUT_EVDEV=y | ||
| 773 | # CONFIG_INPUT_EVBUG is not set | ||
| 774 | |||
| 775 | # | ||
| 776 | # Input Device Drivers | ||
| 777 | # | ||
| 778 | CONFIG_INPUT_KEYBOARD=y | ||
| 779 | # CONFIG_KEYBOARD_ATKBD is not set | ||
| 780 | # CONFIG_KEYBOARD_SUNKBD is not set | ||
| 781 | # CONFIG_KEYBOARD_LKKBD is not set | ||
| 782 | # CONFIG_KEYBOARD_XTKBD is not set | ||
| 783 | # CONFIG_KEYBOARD_NEWTON is not set | ||
| 784 | # CONFIG_KEYBOARD_CORGI is not set | ||
| 785 | CONFIG_KEYBOARD_SPITZ=y | ||
| 786 | # CONFIG_INPUT_MOUSE is not set | ||
| 787 | # CONFIG_INPUT_JOYSTICK is not set | ||
| 788 | CONFIG_INPUT_TOUCHSCREEN=y | ||
| 789 | CONFIG_TOUCHSCREEN_CORGI=y | ||
| 790 | # CONFIG_TOUCHSCREEN_GUNZE is not set | ||
| 791 | # CONFIG_TOUCHSCREEN_ELO is not set | ||
| 792 | # CONFIG_TOUCHSCREEN_MTOUCH is not set | ||
| 793 | # CONFIG_TOUCHSCREEN_MK712 is not set | ||
| 794 | CONFIG_INPUT_MISC=y | ||
| 795 | CONFIG_INPUT_UINPUT=m | ||
| 796 | |||
| 797 | # | ||
| 798 | # Hardware I/O ports | ||
| 799 | # | ||
| 800 | # CONFIG_SERIO is not set | ||
| 801 | # CONFIG_GAMEPORT is not set | ||
| 802 | |||
| 803 | # | ||
| 804 | # Character devices | ||
| 805 | # | ||
| 806 | CONFIG_VT=y | ||
| 807 | CONFIG_VT_CONSOLE=y | ||
| 808 | CONFIG_HW_CONSOLE=y | ||
| 809 | # CONFIG_SERIAL_NONSTANDARD is not set | ||
| 810 | |||
| 811 | # | ||
| 812 | # Serial drivers | ||
| 813 | # | ||
| 814 | CONFIG_SERIAL_8250=m | ||
| 815 | CONFIG_SERIAL_8250_CS=m | ||
| 816 | CONFIG_SERIAL_8250_NR_UARTS=4 | ||
| 817 | # CONFIG_SERIAL_8250_EXTENDED is not set | ||
| 818 | |||
| 819 | # | ||
| 820 | # Non-8250 serial port support | ||
| 821 | # | ||
| 822 | CONFIG_SERIAL_PXA=y | ||
| 823 | CONFIG_SERIAL_PXA_CONSOLE=y | ||
| 824 | CONFIG_SERIAL_CORE=y | ||
| 825 | CONFIG_SERIAL_CORE_CONSOLE=y | ||
| 826 | CONFIG_UNIX98_PTYS=y | ||
| 827 | # CONFIG_LEGACY_PTYS is not set | ||
| 828 | |||
| 829 | # | ||
| 830 | # IPMI | ||
| 831 | # | ||
| 832 | # CONFIG_IPMI_HANDLER is not set | ||
| 833 | |||
| 834 | # | ||
| 835 | # Watchdog Cards | ||
| 836 | # | ||
| 837 | # CONFIG_WATCHDOG is not set | ||
| 838 | # CONFIG_NVRAM is not set | ||
| 839 | # CONFIG_RTC is not set | ||
| 840 | # CONFIG_DTLK is not set | ||
| 841 | # CONFIG_R3964 is not set | ||
| 842 | |||
| 843 | # | ||
| 844 | # Ftape, the floppy tape device driver | ||
| 845 | # | ||
| 846 | |||
| 847 | # | ||
| 848 | # PCMCIA character devices | ||
| 849 | # | ||
| 850 | # CONFIG_SYNCLINK_CS is not set | ||
| 851 | # CONFIG_RAW_DRIVER is not set | ||
| 852 | |||
| 853 | # | ||
| 854 | # TPM devices | ||
| 855 | # | ||
| 856 | |||
| 857 | # | ||
| 858 | # I2C support | ||
| 859 | # | ||
| 860 | # CONFIG_I2C is not set | ||
| 861 | |||
| 862 | # | ||
| 863 | # Hardware Monitoring support | ||
| 864 | # | ||
| 865 | CONFIG_HWMON=y | ||
| 866 | # CONFIG_HWMON_VID is not set | ||
| 867 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 868 | |||
| 869 | # | ||
| 870 | # Misc devices | ||
| 871 | # | ||
| 872 | |||
| 873 | # | ||
| 874 | # Multimedia Capabilities Port drivers | ||
| 875 | # | ||
| 876 | |||
| 877 | # | ||
| 878 | # Multimedia devices | ||
| 879 | # | ||
| 880 | # CONFIG_VIDEO_DEV is not set | ||
| 881 | |||
| 882 | # | ||
| 883 | # Digital Video Broadcasting Devices | ||
| 884 | # | ||
| 885 | # CONFIG_DVB is not set | ||
| 886 | |||
| 887 | # | ||
| 888 | # Graphics support | ||
| 889 | # | ||
| 890 | CONFIG_FB=y | ||
| 891 | CONFIG_FB_CFB_FILLRECT=y | ||
| 892 | CONFIG_FB_CFB_COPYAREA=y | ||
| 893 | CONFIG_FB_CFB_IMAGEBLIT=y | ||
| 894 | CONFIG_FB_SOFT_CURSOR=y | ||
| 895 | # CONFIG_FB_MACMODES is not set | ||
| 896 | # CONFIG_FB_MODE_HELPERS is not set | ||
| 897 | # CONFIG_FB_TILEBLITTING is not set | ||
| 898 | CONFIG_FB_PXA=y | ||
| 899 | # CONFIG_FB_W100 is not set | ||
| 900 | # CONFIG_FB_PXA_PARAMETERS is not set | ||
| 901 | # CONFIG_FB_S1D13XXX is not set | ||
| 902 | # CONFIG_FB_VIRTUAL is not set | ||
| 903 | |||
| 904 | # | ||
| 905 | # Console display driver support | ||
| 906 | # | ||
| 907 | # CONFIG_VGA_CONSOLE is not set | ||
| 908 | CONFIG_DUMMY_CONSOLE=y | ||
| 909 | CONFIG_FRAMEBUFFER_CONSOLE=y | ||
| 910 | CONFIG_FONTS=y | ||
| 911 | CONFIG_FONT_8x8=y | ||
| 912 | CONFIG_FONT_8x16=y | ||
| 913 | # CONFIG_FONT_6x11 is not set | ||
| 914 | # CONFIG_FONT_7x14 is not set | ||
| 915 | # CONFIG_FONT_PEARL_8x8 is not set | ||
| 916 | # CONFIG_FONT_ACORN_8x8 is not set | ||
| 917 | # CONFIG_FONT_MINI_4x6 is not set | ||
| 918 | # CONFIG_FONT_SUN8x16 is not set | ||
| 919 | # CONFIG_FONT_SUN12x22 is not set | ||
| 920 | # CONFIG_FONT_10x18 is not set | ||
| 921 | |||
| 922 | # | ||
| 923 | # Logo configuration | ||
| 924 | # | ||
| 925 | # CONFIG_LOGO is not set | ||
| 926 | CONFIG_BACKLIGHT_LCD_SUPPORT=y | ||
| 927 | CONFIG_BACKLIGHT_CLASS_DEVICE=y | ||
| 928 | CONFIG_BACKLIGHT_DEVICE=y | ||
| 929 | CONFIG_LCD_CLASS_DEVICE=y | ||
| 930 | CONFIG_LCD_DEVICE=y | ||
| 931 | CONFIG_BACKLIGHT_CORGI=y | ||
| 932 | |||
| 933 | # | ||
| 934 | # Sound | ||
| 935 | # | ||
| 936 | # CONFIG_SOUND is not set | ||
| 937 | |||
| 938 | # | ||
| 939 | # USB support | ||
| 940 | # | ||
| 941 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 942 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 943 | CONFIG_USB=m | ||
| 944 | # CONFIG_USB_DEBUG is not set | ||
| 945 | |||
| 946 | # | ||
| 947 | # Miscellaneous USB options | ||
| 948 | # | ||
| 949 | CONFIG_USB_DEVICEFS=y | ||
| 950 | # CONFIG_USB_BANDWIDTH is not set | ||
| 951 | # CONFIG_USB_DYNAMIC_MINORS is not set | ||
| 952 | # CONFIG_USB_SUSPEND is not set | ||
| 953 | # CONFIG_USB_OTG is not set | ||
| 954 | |||
| 955 | # | ||
| 956 | # USB Host Controller Drivers | ||
| 957 | # | ||
| 958 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 959 | CONFIG_USB_OHCI_HCD=m | ||
| 960 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | ||
| 961 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | ||
| 962 | CONFIG_USB_SL811_HCD=m | ||
| 963 | CONFIG_USB_SL811_CS=m | ||
| 964 | |||
| 965 | # | ||
| 966 | # USB Device Class drivers | ||
| 967 | # | ||
| 968 | |||
| 969 | # | ||
| 970 | # USB Bluetooth TTY can only be used with disabled Bluetooth subsystem | ||
| 971 | # | ||
| 972 | CONFIG_USB_ACM=m | ||
| 973 | CONFIG_USB_PRINTER=m | ||
| 974 | |||
| 975 | # | ||
| 976 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
| 977 | # | ||
| 978 | CONFIG_USB_STORAGE=m | ||
| 979 | # CONFIG_USB_STORAGE_DEBUG is not set | ||
| 980 | # CONFIG_USB_STORAGE_DATAFAB is not set | ||
| 981 | # CONFIG_USB_STORAGE_FREECOM is not set | ||
| 982 | # CONFIG_USB_STORAGE_ISD200 is not set | ||
| 983 | # CONFIG_USB_STORAGE_DPCM is not set | ||
| 984 | # CONFIG_USB_STORAGE_USBAT is not set | ||
| 985 | # CONFIG_USB_STORAGE_SDDR09 is not set | ||
| 986 | # CONFIG_USB_STORAGE_SDDR55 is not set | ||
| 987 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | ||
| 988 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 989 | |||
| 990 | # | ||
| 991 | # USB Input Devices | ||
| 992 | # | ||
| 993 | CONFIG_USB_HID=m | ||
| 994 | CONFIG_USB_HIDINPUT=y | ||
| 995 | # CONFIG_HID_FF is not set | ||
| 996 | # CONFIG_USB_HIDDEV is not set | ||
| 997 | |||
| 998 | # | ||
| 999 | # USB HID Boot Protocol drivers | ||
| 1000 | # | ||
| 1001 | CONFIG_USB_KBD=m | ||
| 1002 | CONFIG_USB_MOUSE=m | ||
| 1003 | CONFIG_USB_AIPTEK=m | ||
| 1004 | CONFIG_USB_WACOM=m | ||
| 1005 | # CONFIG_USB_ACECAD is not set | ||
| 1006 | CONFIG_USB_KBTAB=m | ||
| 1007 | CONFIG_USB_POWERMATE=m | ||
| 1008 | CONFIG_USB_MTOUCH=m | ||
| 1009 | # CONFIG_USB_ITMTOUCH is not set | ||
| 1010 | CONFIG_USB_EGALAX=m | ||
| 1011 | # CONFIG_USB_YEALINK is not set | ||
| 1012 | CONFIG_USB_XPAD=m | ||
| 1013 | CONFIG_USB_ATI_REMOTE=m | ||
| 1014 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 1015 | # CONFIG_USB_APPLETOUCH is not set | ||
| 1016 | |||
| 1017 | # | ||
| 1018 | # USB Imaging devices | ||
| 1019 | # | ||
| 1020 | CONFIG_USB_MDC800=m | ||
| 1021 | CONFIG_USB_MICROTEK=m | ||
| 1022 | |||
| 1023 | # | ||
| 1024 | # USB Multimedia devices | ||
| 1025 | # | ||
| 1026 | CONFIG_USB_DABUSB=m | ||
| 1027 | |||
| 1028 | # | ||
| 1029 | # Video4Linux support is needed for USB Multimedia device support | ||
| 1030 | # | ||
| 1031 | |||
| 1032 | # | ||
| 1033 | # USB Network Adapters | ||
| 1034 | # | ||
| 1035 | CONFIG_USB_CATC=m | ||
| 1036 | CONFIG_USB_KAWETH=m | ||
| 1037 | CONFIG_USB_PEGASUS=m | ||
| 1038 | CONFIG_USB_RTL8150=m | ||
| 1039 | CONFIG_USB_USBNET=m | ||
| 1040 | CONFIG_USB_NET_AX8817X=m | ||
| 1041 | CONFIG_USB_NET_CDCETHER=m | ||
| 1042 | # CONFIG_USB_NET_GL620A is not set | ||
| 1043 | CONFIG_USB_NET_NET1080=m | ||
| 1044 | # CONFIG_USB_NET_PLUSB is not set | ||
| 1045 | # CONFIG_USB_NET_RNDIS_HOST is not set | ||
| 1046 | # CONFIG_USB_NET_CDC_SUBSET is not set | ||
| 1047 | CONFIG_USB_NET_ZAURUS=m | ||
| 1048 | # CONFIG_USB_ZD1201 is not set | ||
| 1049 | CONFIG_USB_MON=y | ||
| 1050 | |||
| 1051 | # | ||
| 1052 | # USB port drivers | ||
| 1053 | # | ||
| 1054 | |||
| 1055 | # | ||
| 1056 | # USB Serial Converter support | ||
| 1057 | # | ||
| 1058 | CONFIG_USB_SERIAL=m | ||
| 1059 | CONFIG_USB_SERIAL_GENERIC=y | ||
| 1060 | # CONFIG_USB_SERIAL_AIRPRIME is not set | ||
| 1061 | CONFIG_USB_SERIAL_BELKIN=m | ||
| 1062 | # CONFIG_USB_SERIAL_WHITEHEAT is not set | ||
| 1063 | CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m | ||
| 1064 | # CONFIG_USB_SERIAL_CP2101 is not set | ||
| 1065 | CONFIG_USB_SERIAL_CYPRESS_M8=m | ||
| 1066 | CONFIG_USB_SERIAL_EMPEG=m | ||
| 1067 | CONFIG_USB_SERIAL_FTDI_SIO=m | ||
| 1068 | CONFIG_USB_SERIAL_VISOR=m | ||
| 1069 | CONFIG_USB_SERIAL_IPAQ=m | ||
| 1070 | CONFIG_USB_SERIAL_IR=m | ||
| 1071 | CONFIG_USB_SERIAL_EDGEPORT=m | ||
| 1072 | CONFIG_USB_SERIAL_EDGEPORT_TI=m | ||
| 1073 | CONFIG_USB_SERIAL_GARMIN=m | ||
| 1074 | CONFIG_USB_SERIAL_IPW=m | ||
| 1075 | CONFIG_USB_SERIAL_KEYSPAN_PDA=m | ||
| 1076 | CONFIG_USB_SERIAL_KEYSPAN=m | ||
| 1077 | # CONFIG_USB_SERIAL_KEYSPAN_MPR is not set | ||
| 1078 | # CONFIG_USB_SERIAL_KEYSPAN_USA28 is not set | ||
| 1079 | # CONFIG_USB_SERIAL_KEYSPAN_USA28X is not set | ||
| 1080 | # CONFIG_USB_SERIAL_KEYSPAN_USA28XA is not set | ||
| 1081 | # CONFIG_USB_SERIAL_KEYSPAN_USA28XB is not set | ||
| 1082 | # CONFIG_USB_SERIAL_KEYSPAN_USA19 is not set | ||
| 1083 | # CONFIG_USB_SERIAL_KEYSPAN_USA18X is not set | ||
| 1084 | # CONFIG_USB_SERIAL_KEYSPAN_USA19W is not set | ||
| 1085 | # CONFIG_USB_SERIAL_KEYSPAN_USA19QW is not set | ||
| 1086 | # CONFIG_USB_SERIAL_KEYSPAN_USA19QI is not set | ||
| 1087 | # CONFIG_USB_SERIAL_KEYSPAN_USA49W is not set | ||
| 1088 | # CONFIG_USB_SERIAL_KEYSPAN_USA49WLC is not set | ||
| 1089 | CONFIG_USB_SERIAL_KLSI=m | ||
| 1090 | CONFIG_USB_SERIAL_KOBIL_SCT=m | ||
| 1091 | CONFIG_USB_SERIAL_MCT_U232=m | ||
| 1092 | CONFIG_USB_SERIAL_PL2303=m | ||
| 1093 | # CONFIG_USB_SERIAL_HP4X is not set | ||
| 1094 | CONFIG_USB_SERIAL_SAFE=m | ||
| 1095 | # CONFIG_USB_SERIAL_SAFE_PADDED is not set | ||
| 1096 | CONFIG_USB_SERIAL_TI=m | ||
| 1097 | CONFIG_USB_SERIAL_CYBERJACK=m | ||
| 1098 | CONFIG_USB_SERIAL_XIRCOM=m | ||
| 1099 | # CONFIG_USB_SERIAL_OPTION is not set | ||
| 1100 | CONFIG_USB_SERIAL_OMNINET=m | ||
| 1101 | CONFIG_USB_EZUSB=y | ||
| 1102 | |||
| 1103 | # | ||
| 1104 | # USB Miscellaneous drivers | ||
| 1105 | # | ||
| 1106 | CONFIG_USB_EMI62=m | ||
| 1107 | CONFIG_USB_EMI26=m | ||
| 1108 | CONFIG_USB_AUERSWALD=m | ||
| 1109 | CONFIG_USB_RIO500=m | ||
| 1110 | CONFIG_USB_LEGOTOWER=m | ||
| 1111 | CONFIG_USB_LCD=m | ||
| 1112 | CONFIG_USB_LED=m | ||
| 1113 | CONFIG_USB_CYTHERM=m | ||
| 1114 | CONFIG_USB_PHIDGETKIT=m | ||
| 1115 | CONFIG_USB_PHIDGETSERVO=m | ||
| 1116 | CONFIG_USB_IDMOUSE=m | ||
| 1117 | # CONFIG_USB_LD is not set | ||
| 1118 | # CONFIG_USB_TEST is not set | ||
| 1119 | |||
| 1120 | # | ||
| 1121 | # USB DSL modem support | ||
| 1122 | # | ||
| 1123 | |||
| 1124 | # | ||
| 1125 | # USB Gadget Support | ||
| 1126 | # | ||
| 1127 | CONFIG_USB_GADGET=m | ||
| 1128 | # CONFIG_USB_GADGET_DEBUG_FILES is not set | ||
| 1129 | CONFIG_USB_GADGET_SELECTED=y | ||
| 1130 | # CONFIG_USB_GADGET_NET2280 is not set | ||
| 1131 | # CONFIG_USB_GADGET_PXA2XX is not set | ||
| 1132 | # CONFIG_USB_GADGET_GOKU is not set | ||
| 1133 | # CONFIG_USB_GADGET_LH7A40X is not set | ||
| 1134 | # CONFIG_USB_GADGET_OMAP is not set | ||
| 1135 | CONFIG_USB_GADGET_DUMMY_HCD=y | ||
| 1136 | CONFIG_USB_DUMMY_HCD=m | ||
| 1137 | CONFIG_USB_GADGET_DUALSPEED=y | ||
| 1138 | CONFIG_USB_ZERO=m | ||
| 1139 | CONFIG_USB_ETH=m | ||
| 1140 | CONFIG_USB_ETH_RNDIS=y | ||
| 1141 | CONFIG_USB_GADGETFS=m | ||
| 1142 | CONFIG_USB_FILE_STORAGE=m | ||
| 1143 | # CONFIG_USB_FILE_STORAGE_TEST is not set | ||
| 1144 | CONFIG_USB_G_SERIAL=m | ||
| 1145 | |||
| 1146 | # | ||
| 1147 | # MMC/SD Card support | ||
| 1148 | # | ||
| 1149 | CONFIG_MMC=y | ||
| 1150 | # CONFIG_MMC_DEBUG is not set | ||
| 1151 | CONFIG_MMC_BLOCK=y | ||
| 1152 | CONFIG_MMC_PXA=y | ||
| 1153 | # CONFIG_MMC_WBSD is not set | ||
| 1154 | |||
| 1155 | # | ||
| 1156 | # File systems | ||
| 1157 | # | ||
| 1158 | CONFIG_EXT2_FS=y | ||
| 1159 | CONFIG_EXT2_FS_XATTR=y | ||
| 1160 | CONFIG_EXT2_FS_POSIX_ACL=y | ||
| 1161 | CONFIG_EXT2_FS_SECURITY=y | ||
| 1162 | # CONFIG_EXT2_FS_XIP is not set | ||
| 1163 | CONFIG_EXT3_FS=y | ||
| 1164 | # CONFIG_EXT3_FS_XATTR is not set | ||
| 1165 | CONFIG_JBD=y | ||
| 1166 | # CONFIG_JBD_DEBUG is not set | ||
| 1167 | CONFIG_FS_MBCACHE=y | ||
| 1168 | # CONFIG_REISERFS_FS is not set | ||
| 1169 | # CONFIG_JFS_FS is not set | ||
| 1170 | CONFIG_FS_POSIX_ACL=y | ||
| 1171 | # CONFIG_XFS_FS is not set | ||
| 1172 | # CONFIG_MINIX_FS is not set | ||
| 1173 | # CONFIG_ROMFS_FS is not set | ||
| 1174 | CONFIG_INOTIFY=y | ||
| 1175 | # CONFIG_QUOTA is not set | ||
| 1176 | CONFIG_DNOTIFY=y | ||
| 1177 | # CONFIG_AUTOFS_FS is not set | ||
| 1178 | # CONFIG_AUTOFS4_FS is not set | ||
| 1179 | # CONFIG_FUSE_FS is not set | ||
| 1180 | |||
| 1181 | # | ||
| 1182 | # CD-ROM/DVD Filesystems | ||
| 1183 | # | ||
| 1184 | # CONFIG_ISO9660_FS is not set | ||
| 1185 | # CONFIG_UDF_FS is not set | ||
| 1186 | |||
| 1187 | # | ||
| 1188 | # DOS/FAT/NT Filesystems | ||
| 1189 | # | ||
| 1190 | CONFIG_FAT_FS=y | ||
| 1191 | CONFIG_MSDOS_FS=y | ||
| 1192 | CONFIG_VFAT_FS=y | ||
| 1193 | CONFIG_FAT_DEFAULT_CODEPAGE=437 | ||
| 1194 | CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | ||
| 1195 | # CONFIG_NTFS_FS is not set | ||
| 1196 | |||
| 1197 | # | ||
| 1198 | # Pseudo filesystems | ||
| 1199 | # | ||
| 1200 | CONFIG_PROC_FS=y | ||
| 1201 | CONFIG_SYSFS=y | ||
| 1202 | CONFIG_TMPFS=y | ||
| 1203 | # CONFIG_HUGETLB_PAGE is not set | ||
| 1204 | CONFIG_RAMFS=y | ||
| 1205 | # CONFIG_RELAYFS_FS is not set | ||
| 1206 | |||
| 1207 | # | ||
| 1208 | # Miscellaneous filesystems | ||
| 1209 | # | ||
| 1210 | # CONFIG_ADFS_FS is not set | ||
| 1211 | # CONFIG_AFFS_FS is not set | ||
| 1212 | # CONFIG_HFS_FS is not set | ||
| 1213 | # CONFIG_HFSPLUS_FS is not set | ||
| 1214 | # CONFIG_BEFS_FS is not set | ||
| 1215 | # CONFIG_BFS_FS is not set | ||
| 1216 | # CONFIG_EFS_FS is not set | ||
| 1217 | # CONFIG_JFFS_FS is not set | ||
| 1218 | CONFIG_JFFS2_FS=y | ||
| 1219 | CONFIG_JFFS2_FS_DEBUG=0 | ||
| 1220 | CONFIG_JFFS2_FS_WRITEBUFFER=y | ||
| 1221 | CONFIG_JFFS2_COMPRESSION_OPTIONS=y | ||
| 1222 | CONFIG_JFFS2_ZLIB=y | ||
| 1223 | CONFIG_JFFS2_RTIME=y | ||
| 1224 | CONFIG_JFFS2_RUBIN=y | ||
| 1225 | # CONFIG_JFFS2_CMODE_NONE is not set | ||
| 1226 | CONFIG_JFFS2_CMODE_PRIORITY=y | ||
| 1227 | # CONFIG_JFFS2_CMODE_SIZE is not set | ||
| 1228 | CONFIG_CRAMFS=m | ||
| 1229 | # CONFIG_VXFS_FS is not set | ||
| 1230 | # CONFIG_HPFS_FS is not set | ||
| 1231 | # CONFIG_QNX4FS_FS is not set | ||
| 1232 | # CONFIG_SYSV_FS is not set | ||
| 1233 | # CONFIG_UFS_FS is not set | ||
| 1234 | |||
| 1235 | # | ||
| 1236 | # Network File Systems | ||
| 1237 | # | ||
| 1238 | CONFIG_NFS_FS=m | ||
| 1239 | CONFIG_NFS_V3=y | ||
| 1240 | # CONFIG_NFS_V3_ACL is not set | ||
| 1241 | CONFIG_NFS_V4=y | ||
| 1242 | # CONFIG_NFS_DIRECTIO is not set | ||
| 1243 | # CONFIG_NFSD is not set | ||
| 1244 | CONFIG_LOCKD=m | ||
| 1245 | CONFIG_LOCKD_V4=y | ||
| 1246 | CONFIG_NFS_COMMON=y | ||
| 1247 | CONFIG_SUNRPC=m | ||
| 1248 | CONFIG_SUNRPC_GSS=m | ||
| 1249 | CONFIG_RPCSEC_GSS_KRB5=m | ||
| 1250 | # CONFIG_RPCSEC_GSS_SPKM3 is not set | ||
| 1251 | CONFIG_SMB_FS=m | ||
| 1252 | CONFIG_SMB_NLS_DEFAULT=y | ||
| 1253 | CONFIG_SMB_NLS_REMOTE="cp437" | ||
| 1254 | # CONFIG_CIFS is not set | ||
| 1255 | # CONFIG_NCP_FS is not set | ||
| 1256 | # CONFIG_CODA_FS is not set | ||
| 1257 | # CONFIG_AFS_FS is not set | ||
| 1258 | # CONFIG_9P_FS is not set | ||
| 1259 | |||
| 1260 | # | ||
| 1261 | # Partition Types | ||
| 1262 | # | ||
| 1263 | CONFIG_PARTITION_ADVANCED=y | ||
| 1264 | # CONFIG_ACORN_PARTITION is not set | ||
| 1265 | # CONFIG_OSF_PARTITION is not set | ||
| 1266 | # CONFIG_AMIGA_PARTITION is not set | ||
| 1267 | # CONFIG_ATARI_PARTITION is not set | ||
| 1268 | # CONFIG_MAC_PARTITION is not set | ||
| 1269 | CONFIG_MSDOS_PARTITION=y | ||
| 1270 | # CONFIG_BSD_DISKLABEL is not set | ||
| 1271 | # CONFIG_MINIX_SUBPARTITION is not set | ||
| 1272 | # CONFIG_SOLARIS_X86_PARTITION is not set | ||
| 1273 | # CONFIG_UNIXWARE_DISKLABEL is not set | ||
| 1274 | # CONFIG_LDM_PARTITION is not set | ||
| 1275 | # CONFIG_SGI_PARTITION is not set | ||
| 1276 | # CONFIG_ULTRIX_PARTITION is not set | ||
| 1277 | # CONFIG_SUN_PARTITION is not set | ||
| 1278 | # CONFIG_EFI_PARTITION is not set | ||
| 1279 | |||
| 1280 | # | ||
| 1281 | # Native Language Support | ||
| 1282 | # | ||
| 1283 | CONFIG_NLS=y | ||
| 1284 | CONFIG_NLS_DEFAULT="cp437" | ||
| 1285 | CONFIG_NLS_CODEPAGE_437=y | ||
| 1286 | # CONFIG_NLS_CODEPAGE_737 is not set | ||
| 1287 | # CONFIG_NLS_CODEPAGE_775 is not set | ||
| 1288 | # CONFIG_NLS_CODEPAGE_850 is not set | ||
| 1289 | # CONFIG_NLS_CODEPAGE_852 is not set | ||
| 1290 | # CONFIG_NLS_CODEPAGE_855 is not set | ||
| 1291 | # CONFIG_NLS_CODEPAGE_857 is not set | ||
| 1292 | # CONFIG_NLS_CODEPAGE_860 is not set | ||
| 1293 | # CONFIG_NLS_CODEPAGE_861 is not set | ||
| 1294 | # CONFIG_NLS_CODEPAGE_862 is not set | ||
| 1295 | # CONFIG_NLS_CODEPAGE_863 is not set | ||
| 1296 | # CONFIG_NLS_CODEPAGE_864 is not set | ||
| 1297 | # CONFIG_NLS_CODEPAGE_865 is not set | ||
| 1298 | # CONFIG_NLS_CODEPAGE_866 is not set | ||
| 1299 | # CONFIG_NLS_CODEPAGE_869 is not set | ||
| 1300 | # CONFIG_NLS_CODEPAGE_936 is not set | ||
| 1301 | # CONFIG_NLS_CODEPAGE_950 is not set | ||
| 1302 | # CONFIG_NLS_CODEPAGE_932 is not set | ||
| 1303 | # CONFIG_NLS_CODEPAGE_949 is not set | ||
| 1304 | # CONFIG_NLS_CODEPAGE_874 is not set | ||
| 1305 | # CONFIG_NLS_ISO8859_8 is not set | ||
| 1306 | # CONFIG_NLS_CODEPAGE_1250 is not set | ||
| 1307 | # CONFIG_NLS_CODEPAGE_1251 is not set | ||
| 1308 | # CONFIG_NLS_ASCII is not set | ||
| 1309 | CONFIG_NLS_ISO8859_1=y | ||
| 1310 | # CONFIG_NLS_ISO8859_2 is not set | ||
| 1311 | # CONFIG_NLS_ISO8859_3 is not set | ||
| 1312 | # CONFIG_NLS_ISO8859_4 is not set | ||
| 1313 | # CONFIG_NLS_ISO8859_5 is not set | ||
| 1314 | # CONFIG_NLS_ISO8859_6 is not set | ||
| 1315 | # CONFIG_NLS_ISO8859_7 is not set | ||
| 1316 | # CONFIG_NLS_ISO8859_9 is not set | ||
| 1317 | # CONFIG_NLS_ISO8859_13 is not set | ||
| 1318 | # CONFIG_NLS_ISO8859_14 is not set | ||
| 1319 | # CONFIG_NLS_ISO8859_15 is not set | ||
| 1320 | # CONFIG_NLS_KOI8_R is not set | ||
| 1321 | # CONFIG_NLS_KOI8_U is not set | ||
| 1322 | CONFIG_NLS_UTF8=y | ||
| 1323 | |||
| 1324 | # | ||
| 1325 | # Profiling support | ||
| 1326 | # | ||
| 1327 | CONFIG_PROFILING=y | ||
| 1328 | CONFIG_OPROFILE=m | ||
| 1329 | |||
| 1330 | # | ||
| 1331 | # Kernel hacking | ||
| 1332 | # | ||
| 1333 | # CONFIG_PRINTK_TIME is not set | ||
| 1334 | CONFIG_DEBUG_KERNEL=y | ||
| 1335 | CONFIG_MAGIC_SYSRQ=y | ||
| 1336 | CONFIG_LOG_BUF_SHIFT=14 | ||
| 1337 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1338 | # CONFIG_SCHEDSTATS is not set | ||
| 1339 | # CONFIG_DEBUG_SLAB is not set | ||
| 1340 | # CONFIG_DEBUG_PREEMPT is not set | ||
| 1341 | # CONFIG_DEBUG_SPINLOCK is not set | ||
| 1342 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | ||
| 1343 | # CONFIG_DEBUG_KOBJECT is not set | ||
| 1344 | CONFIG_DEBUG_BUGVERBOSE=y | ||
| 1345 | # CONFIG_DEBUG_INFO is not set | ||
| 1346 | # CONFIG_DEBUG_FS is not set | ||
| 1347 | CONFIG_FRAME_POINTER=y | ||
| 1348 | # CONFIG_DEBUG_USER is not set | ||
| 1349 | # CONFIG_DEBUG_WAITQ is not set | ||
| 1350 | CONFIG_DEBUG_ERRORS=y | ||
| 1351 | CONFIG_DEBUG_LL=y | ||
| 1352 | # CONFIG_DEBUG_ICEDCC is not set | ||
| 1353 | |||
| 1354 | # | ||
| 1355 | # Security options | ||
| 1356 | # | ||
| 1357 | # CONFIG_KEYS is not set | ||
| 1358 | # CONFIG_SECURITY is not set | ||
| 1359 | |||
| 1360 | # | ||
| 1361 | # Cryptographic options | ||
| 1362 | # | ||
| 1363 | CONFIG_CRYPTO=y | ||
| 1364 | CONFIG_CRYPTO_HMAC=y | ||
| 1365 | CONFIG_CRYPTO_NULL=m | ||
| 1366 | CONFIG_CRYPTO_MD4=m | ||
| 1367 | CONFIG_CRYPTO_MD5=m | ||
| 1368 | CONFIG_CRYPTO_SHA1=m | ||
| 1369 | CONFIG_CRYPTO_SHA256=m | ||
| 1370 | CONFIG_CRYPTO_SHA512=m | ||
| 1371 | CONFIG_CRYPTO_WP512=m | ||
| 1372 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1373 | CONFIG_CRYPTO_DES=m | ||
| 1374 | CONFIG_CRYPTO_BLOWFISH=m | ||
| 1375 | CONFIG_CRYPTO_TWOFISH=m | ||
| 1376 | CONFIG_CRYPTO_SERPENT=m | ||
| 1377 | CONFIG_CRYPTO_AES=m | ||
| 1378 | CONFIG_CRYPTO_CAST5=m | ||
| 1379 | CONFIG_CRYPTO_CAST6=m | ||
| 1380 | CONFIG_CRYPTO_TEA=m | ||
| 1381 | CONFIG_CRYPTO_ARC4=m | ||
| 1382 | CONFIG_CRYPTO_KHAZAD=m | ||
| 1383 | CONFIG_CRYPTO_ANUBIS=m | ||
| 1384 | CONFIG_CRYPTO_DEFLATE=m | ||
| 1385 | CONFIG_CRYPTO_MICHAEL_MIC=m | ||
| 1386 | CONFIG_CRYPTO_CRC32C=m | ||
| 1387 | CONFIG_CRYPTO_TEST=m | ||
| 1388 | |||
| 1389 | # | ||
| 1390 | # Hardware crypto devices | ||
| 1391 | # | ||
| 1392 | |||
| 1393 | # | ||
| 1394 | # Library routines | ||
| 1395 | # | ||
| 1396 | CONFIG_CRC_CCITT=y | ||
| 1397 | # CONFIG_CRC16 is not set | ||
| 1398 | CONFIG_CRC32=y | ||
| 1399 | CONFIG_LIBCRC32C=m | ||
| 1400 | CONFIG_ZLIB_INFLATE=y | ||
| 1401 | CONFIG_ZLIB_DEFLATE=y | ||
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index 835d450797a1..7b17a87a3311 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c | |||
| @@ -45,8 +45,8 @@ extern void fp_enter(void); | |||
| 45 | 45 | ||
| 46 | #define EXPORT_SYMBOL_ALIAS(sym,orig) \ | 46 | #define EXPORT_SYMBOL_ALIAS(sym,orig) \ |
| 47 | EXPORT_CRC_ALIAS(sym) \ | 47 | EXPORT_CRC_ALIAS(sym) \ |
| 48 | const struct kernel_symbol __ksymtab_##sym \ | 48 | static const struct kernel_symbol __ksymtab_##sym \ |
| 49 | __attribute__((section("__ksymtab"))) = \ | 49 | __attribute_used__ __attribute__((section("__ksymtab"))) = \ |
| 50 | { (unsigned long)&orig, #sym }; | 50 | { (unsigned long)&orig, #sym }; |
| 51 | 51 | ||
| 52 | /* | 52 | /* |
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S index 81d450ac3fab..066597f4345a 100644 --- a/arch/arm/kernel/entry-common.S +++ b/arch/arm/kernel/entry-common.S | |||
| @@ -106,15 +106,10 @@ ENTRY(ret_from_fork) | |||
| 106 | .endm | 106 | .endm |
| 107 | 107 | ||
| 108 | .Larm700bug: | 108 | .Larm700bug: |
| 109 | ldr r0, [sp, #S_PSR] @ Get calling cpsr | ||
| 110 | sub lr, lr, #4 | ||
| 111 | str lr, [r8] | ||
| 112 | msr spsr_cxsf, r0 | ||
| 113 | ldmia sp, {r0 - lr}^ @ Get calling r0 - lr | 109 | ldmia sp, {r0 - lr}^ @ Get calling r0 - lr |
| 114 | mov r0, r0 | 110 | mov r0, r0 |
| 115 | ldr lr, [sp, #S_PC] @ Get PC | ||
| 116 | add sp, sp, #S_FRAME_SIZE | 111 | add sp, sp, #S_FRAME_SIZE |
| 117 | movs pc, lr | 112 | subs pc, lr, #4 |
| 118 | #else | 113 | #else |
| 119 | .macro arm710_bug_check, instr, temp | 114 | .macro arm710_bug_check, instr, temp |
| 120 | .endm | 115 | .endm |
diff --git a/arch/arm/kernel/sys_arm.c b/arch/arm/kernel/sys_arm.c index 42629ff84f5a..ea569ba482b1 100644 --- a/arch/arm/kernel/sys_arm.c +++ b/arch/arm/kernel/sys_arm.c | |||
| @@ -305,7 +305,7 @@ long execve(const char *filename, char **argv, char **envp) | |||
| 305 | "Ir" (THREAD_START_SP - sizeof(regs)), | 305 | "Ir" (THREAD_START_SP - sizeof(regs)), |
| 306 | "r" (®s), | 306 | "r" (®s), |
| 307 | "Ir" (sizeof(regs)) | 307 | "Ir" (sizeof(regs)) |
| 308 | : "r0", "r1", "r2", "r3", "ip", "memory"); | 308 | : "r0", "r1", "r2", "r3", "ip", "lr", "memory"); |
| 309 | 309 | ||
| 310 | out: | 310 | out: |
| 311 | return ret; | 311 | return ret; |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index e7d22dbcb691..f6de76e0a45d 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
| @@ -504,7 +504,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) | |||
| 504 | 504 | ||
| 505 | bad_access: | 505 | bad_access: |
| 506 | spin_unlock(&mm->page_table_lock); | 506 | spin_unlock(&mm->page_table_lock); |
| 507 | /* simulate a read access fault */ | 507 | /* simulate a write access fault */ |
| 508 | do_DataAbort(addr, 15 + (1 << 11), regs); | 508 | do_DataAbort(addr, 15 + (1 << 11), regs); |
| 509 | return -1; | 509 | return -1; |
| 510 | } | 510 | } |
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 08e58ecd44be..0d5db5279c5c 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S | |||
| @@ -89,13 +89,6 @@ SECTIONS | |||
| 89 | *(.got) /* Global offset table */ | 89 | *(.got) /* Global offset table */ |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | . = ALIGN(16); | ||
| 93 | __ex_table : { /* Exception table */ | ||
| 94 | __start___ex_table = .; | ||
| 95 | *(__ex_table) | ||
| 96 | __stop___ex_table = .; | ||
| 97 | } | ||
| 98 | |||
| 99 | RODATA | 92 | RODATA |
| 100 | 93 | ||
| 101 | _etext = .; /* End of text and rodata section */ | 94 | _etext = .; /* End of text and rodata section */ |
| @@ -138,6 +131,14 @@ SECTIONS | |||
| 138 | *(.data.cacheline_aligned) | 131 | *(.data.cacheline_aligned) |
| 139 | 132 | ||
| 140 | /* | 133 | /* |
| 134 | * The exception fixup table (might need resorting at runtime) | ||
| 135 | */ | ||
| 136 | . = ALIGN(32); | ||
| 137 | __start___ex_table = .; | ||
| 138 | *(__ex_table) | ||
| 139 | __stop___ex_table = .; | ||
| 140 | |||
| 141 | /* | ||
| 141 | * and the usual data section | 142 | * and the usual data section |
| 142 | */ | 143 | */ |
| 143 | *(.data) | 144 | *(.data) |
diff --git a/arch/arm/mach-imx/generic.c b/arch/arm/mach-imx/generic.c index 41e5849ae8da..f8a742bb2d5b 100644 --- a/arch/arm/mach-imx/generic.c +++ b/arch/arm/mach-imx/generic.c | |||
| @@ -28,14 +28,15 @@ | |||
| 28 | #include <linux/module.h> | 28 | #include <linux/module.h> |
| 29 | #include <asm/arch/imxfb.h> | 29 | #include <asm/arch/imxfb.h> |
| 30 | #include <asm/hardware.h> | 30 | #include <asm/hardware.h> |
| 31 | #include <asm/arch/imx-regs.h> | ||
| 31 | 32 | ||
| 32 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
| 33 | 34 | ||
| 34 | void imx_gpio_mode(int gpio_mode) | 35 | void imx_gpio_mode(int gpio_mode) |
| 35 | { | 36 | { |
| 36 | unsigned int pin = gpio_mode & GPIO_PIN_MASK; | 37 | unsigned int pin = gpio_mode & GPIO_PIN_MASK; |
| 37 | unsigned int port = (gpio_mode & GPIO_PORT_MASK) >> 5; | 38 | unsigned int port = (gpio_mode & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT; |
| 38 | unsigned int ocr = (gpio_mode & GPIO_OCR_MASK) >> 10; | 39 | unsigned int ocr = (gpio_mode & GPIO_OCR_MASK) >> GPIO_OCR_SHIFT; |
| 39 | unsigned int tmp; | 40 | unsigned int tmp; |
| 40 | 41 | ||
| 41 | /* Pullup enable */ | 42 | /* Pullup enable */ |
| @@ -57,7 +58,7 @@ void imx_gpio_mode(int gpio_mode) | |||
| 57 | GPR(port) &= ~(1<<pin); | 58 | GPR(port) &= ~(1<<pin); |
| 58 | 59 | ||
| 59 | /* use as gpio? */ | 60 | /* use as gpio? */ |
| 60 | if( ocr == 3 ) | 61 | if(gpio_mode & GPIO_GIUS) |
| 61 | GIUS(port) |= (1<<pin); | 62 | GIUS(port) |= (1<<pin); |
| 62 | else | 63 | else |
| 63 | GIUS(port) &= ~(1<<pin); | 64 | GIUS(port) &= ~(1<<pin); |
| @@ -72,20 +73,20 @@ void imx_gpio_mode(int gpio_mode) | |||
| 72 | tmp |= (ocr << (pin*2)); | 73 | tmp |= (ocr << (pin*2)); |
| 73 | OCR1(port) = tmp; | 74 | OCR1(port) = tmp; |
| 74 | 75 | ||
| 75 | if( gpio_mode & GPIO_AOUT ) | 76 | ICONFA1(port) &= ~( 3<<(pin*2)); |
| 76 | ICONFA1(port) &= ~( 3<<(pin*2)); | 77 | ICONFA1(port) |= ((gpio_mode >> GPIO_AOUT_SHIFT) & 3) << (pin * 2); |
| 77 | if( gpio_mode & GPIO_BOUT ) | 78 | ICONFB1(port) &= ~( 3<<(pin*2)); |
| 78 | ICONFB1(port) &= ~( 3<<(pin*2)); | 79 | ICONFB1(port) |= ((gpio_mode >> GPIO_BOUT_SHIFT) & 3) << (pin * 2); |
| 79 | } else { | 80 | } else { |
| 80 | tmp = OCR2(port); | 81 | tmp = OCR2(port); |
| 81 | tmp &= ~( 3<<((pin-16)*2)); | 82 | tmp &= ~( 3<<((pin-16)*2)); |
| 82 | tmp |= (ocr << ((pin-16)*2)); | 83 | tmp |= (ocr << ((pin-16)*2)); |
| 83 | OCR2(port) = tmp; | 84 | OCR2(port) = tmp; |
| 84 | 85 | ||
| 85 | if( gpio_mode & GPIO_AOUT ) | 86 | ICONFA2(port) &= ~( 3<<((pin-16)*2)); |
| 86 | ICONFA2(port) &= ~( 3<<((pin-16)*2)); | 87 | ICONFA2(port) |= ((gpio_mode >> GPIO_AOUT_SHIFT) & 3) << ((pin-16) * 2); |
| 87 | if( gpio_mode & GPIO_BOUT ) | 88 | ICONFB2(port) &= ~( 3<<((pin-16)*2)); |
| 88 | ICONFB2(port) &= ~( 3<<((pin-16)*2)); | 89 | ICONFB2(port) |= ((gpio_mode >> GPIO_BOUT_SHIFT) & 3) << ((pin-16) * 2); |
| 89 | } | 90 | } |
| 90 | } | 91 | } |
| 91 | 92 | ||
diff --git a/arch/arm/mach-imx/mx1ads.c b/arch/arm/mach-imx/mx1ads.c index 5d25434d332c..a7511ddfe364 100644 --- a/arch/arm/mach-imx/mx1ads.c +++ b/arch/arm/mach-imx/mx1ads.c | |||
| @@ -55,7 +55,7 @@ static void __init | |||
| 55 | mx1ads_init(void) | 55 | mx1ads_init(void) |
| 56 | { | 56 | { |
| 57 | #ifdef CONFIG_LEDS | 57 | #ifdef CONFIG_LEDS |
| 58 | imx_gpio_mode(GPIO_PORTA | GPIO_OUT | GPIO_GPIO | 2); | 58 | imx_gpio_mode(GPIO_PORTA | GPIO_OUT | 2); |
| 59 | #endif | 59 | #endif |
| 60 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 60 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
| 61 | } | 61 | } |
diff --git a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c index c3c2f17d030e..a1b153d1626c 100644 --- a/arch/arm/mach-integrator/impd1.c +++ b/arch/arm/mach-integrator/impd1.c | |||
| @@ -67,7 +67,7 @@ static void impd1_setvco(struct clk *clk, struct icst525_vco vco) | |||
| 67 | } | 67 | } |
| 68 | writel(0, impd1->base + IMPD1_LOCK); | 68 | writel(0, impd1->base + IMPD1_LOCK); |
| 69 | 69 | ||
| 70 | #if DEBUG | 70 | #ifdef DEBUG |
| 71 | vco.v = val & 0x1ff; | 71 | vco.v = val & 0x1ff; |
| 72 | vco.r = (val >> 9) & 0x7f; | 72 | vco.r = (val >> 9) & 0x7f; |
| 73 | vco.s = (val >> 16) & 7; | 73 | vco.s = (val >> 16) & 7; |
| @@ -427,17 +427,18 @@ static int impd1_probe(struct lm_device *dev) | |||
| 427 | return ret; | 427 | return ret; |
| 428 | } | 428 | } |
| 429 | 429 | ||
| 430 | static int impd1_remove_one(struct device *dev, void *data) | ||
| 431 | { | ||
| 432 | device_unregister(dev); | ||
| 433 | return 0; | ||
| 434 | } | ||
| 435 | |||
| 430 | static void impd1_remove(struct lm_device *dev) | 436 | static void impd1_remove(struct lm_device *dev) |
| 431 | { | 437 | { |
| 432 | struct impd1_module *impd1 = lm_get_drvdata(dev); | 438 | struct impd1_module *impd1 = lm_get_drvdata(dev); |
| 433 | struct list_head *l, *n; | ||
| 434 | int i; | 439 | int i; |
| 435 | 440 | ||
| 436 | list_for_each_safe(l, n, &dev->dev.children) { | 441 | device_for_each_child(&dev->dev, NULL, impd1_remove_one); |
| 437 | struct device *d = list_to_dev(l); | ||
| 438 | |||
| 439 | device_unregister(d); | ||
| 440 | } | ||
| 441 | 442 | ||
| 442 | for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) | 443 | for (i = 0; i < ARRAY_SIZE(impd1->vcos); i++) |
| 443 | clk_unregister(&impd1->vcos[i]); | 444 | clk_unregister(&impd1->vcos[i]); |
diff --git a/arch/arm/mach-l7200/core.c b/arch/arm/mach-l7200/core.c index 5fd8c9f97f9a..03ed742ae2be 100644 --- a/arch/arm/mach-l7200/core.c +++ b/arch/arm/mach-l7200/core.c | |||
| @@ -7,11 +7,17 @@ | |||
| 7 | */ | 7 | */ |
| 8 | #include <linux/kernel.h> | 8 | #include <linux/kernel.h> |
| 9 | #include <linux/init.h> | 9 | #include <linux/init.h> |
| 10 | #include <linux/device.h> | ||
| 10 | 11 | ||
| 12 | #include <asm/types.h> | ||
| 13 | #include <asm/irq.h> | ||
| 14 | #include <asm/mach-types.h> | ||
| 11 | #include <asm/hardware.h> | 15 | #include <asm/hardware.h> |
| 12 | #include <asm/page.h> | 16 | #include <asm/page.h> |
| 13 | 17 | ||
| 18 | #include <asm/mach/arch.h> | ||
| 14 | #include <asm/mach/map.h> | 19 | #include <asm/mach/map.h> |
| 20 | #include <asm/mach/irq.h> | ||
| 15 | 21 | ||
| 16 | /* | 22 | /* |
| 17 | * IRQ base register | 23 | * IRQ base register |
| @@ -47,6 +53,12 @@ static void l7200_unmask_irq(unsigned int irq) | |||
| 47 | { | 53 | { |
| 48 | IRQ_ENABLE = 1 << irq; | 54 | IRQ_ENABLE = 1 << irq; |
| 49 | } | 55 | } |
| 56 | |||
| 57 | static struct irqchip l7200_irq_chip = { | ||
| 58 | .ack = l7200_mask_irq, | ||
| 59 | .mask = l7200_mask_irq, | ||
| 60 | .unmask = l7200_unmask_irq | ||
| 61 | }; | ||
| 50 | 62 | ||
| 51 | static void __init l7200_init_irq(void) | 63 | static void __init l7200_init_irq(void) |
| 52 | { | 64 | { |
| @@ -56,11 +68,9 @@ static void __init l7200_init_irq(void) | |||
| 56 | FIQ_ENABLECLEAR = 0xffffffff; /* clear all fast interrupt enables */ | 68 | FIQ_ENABLECLEAR = 0xffffffff; /* clear all fast interrupt enables */ |
| 57 | 69 | ||
| 58 | for (irq = 0; irq < NR_IRQS; irq++) { | 70 | for (irq = 0; irq < NR_IRQS; irq++) { |
| 59 | irq_desc[irq].valid = 1; | 71 | set_irq_chip(irq, &l7200_irq_chip); |
| 60 | irq_desc[irq].probe_ok = 1; | 72 | set_irq_flags(irq, IRQF_VALID); |
| 61 | irq_desc[irq].mask_ack = l7200_mask_irq; | 73 | set_irq_handler(irq, do_level_IRQ); |
| 62 | irq_desc[irq].mask = l7200_mask_irq; | ||
| 63 | irq_desc[irq].unmask = l7200_unmask_irq; | ||
| 64 | } | 74 | } |
| 65 | 75 | ||
| 66 | init_FIQ(); | 76 | init_FIQ(); |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index be37586cb1b0..60c8b9d8bb9c 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | #include <asm/arch/mmc.h> | 36 | #include <asm/arch/mmc.h> |
| 37 | #include <asm/arch/udc.h> | 37 | #include <asm/arch/udc.h> |
| 38 | #include <asm/arch/corgi.h> | 38 | #include <asm/arch/corgi.h> |
| 39 | #include <asm/arch/sharpsl.h> | ||
| 39 | 40 | ||
| 40 | #include <asm/mach/sharpsl_param.h> | 41 | #include <asm/mach/sharpsl_param.h> |
| 41 | #include <asm/hardware/scoop.h> | 42 | #include <asm/hardware/scoop.h> |
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c index c02ef7c0f7ef..370df113dc06 100644 --- a/arch/arm/mach-pxa/corgi_lcd.c +++ b/arch/arm/mach-pxa/corgi_lcd.c | |||
| @@ -467,6 +467,7 @@ void corgi_put_hsync(void) | |||
| 467 | { | 467 | { |
| 468 | if (get_hsync_time) | 468 | if (get_hsync_time) |
| 469 | symbol_put(w100fb_get_hsynclen); | 469 | symbol_put(w100fb_get_hsynclen); |
| 470 | get_hsync_time = NULL; | ||
| 470 | } | 471 | } |
| 471 | 472 | ||
| 472 | void corgi_wait_hsync(void) | 473 | void corgi_wait_hsync(void) |
| @@ -476,20 +477,39 @@ void corgi_wait_hsync(void) | |||
| 476 | #endif | 477 | #endif |
| 477 | 478 | ||
| 478 | #ifdef CONFIG_PXA_SHARP_Cxx00 | 479 | #ifdef CONFIG_PXA_SHARP_Cxx00 |
| 480 | static struct device *spitz_pxafb_dev; | ||
| 481 | |||
| 482 | static int is_pxafb_device(struct device * dev, void * data) | ||
| 483 | { | ||
| 484 | struct platform_device *pdev = container_of(dev, struct platform_device, dev); | ||
| 485 | |||
| 486 | return (strncmp(pdev->name, "pxa2xx-fb", 9) == 0); | ||
| 487 | } | ||
| 488 | |||
| 479 | unsigned long spitz_get_hsync_len(void) | 489 | unsigned long spitz_get_hsync_len(void) |
| 480 | { | 490 | { |
| 491 | #ifdef CONFIG_FB_PXA | ||
| 492 | if (!spitz_pxafb_dev) { | ||
| 493 | spitz_pxafb_dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device); | ||
| 494 | if (!spitz_pxafb_dev) | ||
| 495 | return 0; | ||
| 496 | } | ||
| 481 | if (!get_hsync_time) | 497 | if (!get_hsync_time) |
| 482 | get_hsync_time = symbol_get(pxafb_get_hsync_time); | 498 | get_hsync_time = symbol_get(pxafb_get_hsync_time); |
| 483 | if (!get_hsync_time) | 499 | if (!get_hsync_time) |
| 500 | #endif | ||
| 484 | return 0; | 501 | return 0; |
| 485 | 502 | ||
| 486 | return pxafb_get_hsync_time(&pxafb_device.dev); | 503 | return pxafb_get_hsync_time(spitz_pxafb_dev); |
| 487 | } | 504 | } |
| 488 | 505 | ||
| 489 | void spitz_put_hsync(void) | 506 | void spitz_put_hsync(void) |
| 490 | { | 507 | { |
| 508 | put_device(spitz_pxafb_dev); | ||
| 491 | if (get_hsync_time) | 509 | if (get_hsync_time) |
| 492 | symbol_put(pxafb_get_hsync_time); | 510 | symbol_put(pxafb_get_hsync_time); |
| 511 | spitz_pxafb_dev = NULL; | ||
| 512 | get_hsync_time = NULL; | ||
| 493 | } | 513 | } |
| 494 | 514 | ||
| 495 | void spitz_wait_hsync(void) | 515 | void spitz_wait_hsync(void) |
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index d0660a8c4b70..1d7677669a76 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
| @@ -208,6 +208,11 @@ static struct platform_device pxafb_device = { | |||
| 208 | .resource = pxafb_resources, | 208 | .resource = pxafb_resources, |
| 209 | }; | 209 | }; |
| 210 | 210 | ||
| 211 | void __init set_pxa_fb_parent(struct device *parent_dev) | ||
| 212 | { | ||
| 213 | pxafb_device.dev.parent = parent_dev; | ||
| 214 | } | ||
| 215 | |||
| 211 | static struct platform_device ffuart_device = { | 216 | static struct platform_device ffuart_device = { |
| 212 | .name = "pxa2xx-uart", | 217 | .name = "pxa2xx-uart", |
| 213 | .id = 0, | 218 | .id = 0, |
| @@ -245,6 +250,25 @@ void __init pxa_set_i2c_info(struct i2c_pxa_platform_data *info) | |||
| 245 | i2c_device.dev.platform_data = info; | 250 | i2c_device.dev.platform_data = info; |
| 246 | } | 251 | } |
| 247 | 252 | ||
| 253 | static struct resource i2s_resources[] = { | ||
| 254 | { | ||
| 255 | .start = 0x40400000, | ||
| 256 | .end = 0x40400083, | ||
| 257 | .flags = IORESOURCE_MEM, | ||
| 258 | }, { | ||
| 259 | .start = IRQ_I2S, | ||
| 260 | .end = IRQ_I2S, | ||
| 261 | .flags = IORESOURCE_IRQ, | ||
| 262 | }, | ||
| 263 | }; | ||
| 264 | |||
| 265 | static struct platform_device i2s_device = { | ||
| 266 | .name = "pxa2xx-i2s", | ||
| 267 | .id = -1, | ||
| 268 | .resource = i2c_resources, | ||
| 269 | .num_resources = ARRAY_SIZE(i2s_resources), | ||
| 270 | }; | ||
| 271 | |||
| 248 | static struct platform_device *devices[] __initdata = { | 272 | static struct platform_device *devices[] __initdata = { |
| 249 | &pxamci_device, | 273 | &pxamci_device, |
| 250 | &udc_device, | 274 | &udc_device, |
| @@ -253,6 +277,7 @@ static struct platform_device *devices[] __initdata = { | |||
| 253 | &btuart_device, | 277 | &btuart_device, |
| 254 | &stuart_device, | 278 | &stuart_device, |
| 255 | &i2c_device, | 279 | &i2c_device, |
| 280 | &i2s_device, | ||
| 256 | }; | 281 | }; |
| 257 | 282 | ||
| 258 | static int __init pxa_init(void) | 283 | static int __init pxa_init(void) |
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c index 568afe3d6e1a..d0ab428c2d7d 100644 --- a/arch/arm/mach-pxa/spitz.c +++ b/arch/arm/mach-pxa/spitz.c | |||
| @@ -36,7 +36,6 @@ | |||
| 36 | #include <asm/arch/irq.h> | 36 | #include <asm/arch/irq.h> |
| 37 | #include <asm/arch/mmc.h> | 37 | #include <asm/arch/mmc.h> |
| 38 | #include <asm/arch/udc.h> | 38 | #include <asm/arch/udc.h> |
| 39 | #include <asm/arch/ohci.h> | ||
| 40 | #include <asm/arch/pxafb.h> | 39 | #include <asm/arch/pxafb.h> |
| 41 | #include <asm/arch/akita.h> | 40 | #include <asm/arch/akita.h> |
| 42 | #include <asm/arch/spitz.h> | 41 | #include <asm/arch/spitz.h> |
| @@ -304,7 +303,6 @@ static struct platform_device *devices[] __initdata = { | |||
| 304 | &spitzkbd_device, | 303 | &spitzkbd_device, |
| 305 | &spitzts_device, | 304 | &spitzts_device, |
| 306 | &spitzbl_device, | 305 | &spitzbl_device, |
| 307 | &spitzbattery_device, | ||
| 308 | }; | 306 | }; |
| 309 | 307 | ||
| 310 | static void __init common_init(void) | 308 | static void __init common_init(void) |
| @@ -328,7 +326,7 @@ static void __init common_init(void) | |||
| 328 | 326 | ||
| 329 | platform_add_devices(devices, ARRAY_SIZE(devices)); | 327 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
| 330 | pxa_set_mci_info(&spitz_mci_platform_data); | 328 | pxa_set_mci_info(&spitz_mci_platform_data); |
| 331 | pxafb_device.dev.parent = &spitzssp_device.dev; | 329 | set_pxa_fb_parent(&spitzssp_device.dev); |
| 332 | set_pxa_fb_info(&spitz_pxafb_info); | 330 | set_pxa_fb_info(&spitz_pxafb_info); |
| 333 | } | 331 | } |
| 334 | 332 | ||
diff --git a/arch/arm/mach-s3c2410/Kconfig b/arch/arm/mach-s3c2410/Kconfig index 06807c6ee68a..c796bcdd6158 100644 --- a/arch/arm/mach-s3c2410/Kconfig +++ b/arch/arm/mach-s3c2410/Kconfig | |||
| @@ -12,6 +12,7 @@ config MACH_ANUBIS | |||
| 12 | config ARCH_BAST | 12 | config ARCH_BAST |
| 13 | bool "Simtec Electronics BAST (EB2410ITX)" | 13 | bool "Simtec Electronics BAST (EB2410ITX)" |
| 14 | select CPU_S3C2410 | 14 | select CPU_S3C2410 |
| 15 | select ISA | ||
| 15 | help | 16 | help |
| 16 | Say Y here if you are using the Simtec Electronics EB2410ITX | 17 | Say Y here if you are using the Simtec Electronics EB2410ITX |
| 17 | development board (also known as BAST) | 18 | development board (also known as BAST) |
diff --git a/arch/arm/mach-s3c2410/clock.c b/arch/arm/mach-s3c2410/clock.c index f59608268751..8b3d5dc35de5 100644 --- a/arch/arm/mach-s3c2410/clock.c +++ b/arch/arm/mach-s3c2410/clock.c | |||
| @@ -98,7 +98,10 @@ struct clk *clk_get(struct device *dev, const char *id) | |||
| 98 | struct clk *clk = ERR_PTR(-ENOENT); | 98 | struct clk *clk = ERR_PTR(-ENOENT); |
| 99 | int idno; | 99 | int idno; |
| 100 | 100 | ||
| 101 | idno = (dev == NULL) ? -1 : to_platform_device(dev)->id; | 101 | if (dev == NULL || dev->bus != &platform_bus_type) |
| 102 | idno = -1; | ||
| 103 | else | ||
| 104 | idno = to_platform_device(dev)->id; | ||
| 102 | 105 | ||
| 103 | down(&clocks_sem); | 106 | down(&clocks_sem); |
| 104 | 107 | ||
diff --git a/arch/arm/mach-s3c2410/mach-anubis.c b/arch/arm/mach-s3c2410/mach-anubis.c index 7c05f27fe1d6..5ae80f4e3e67 100644 --- a/arch/arm/mach-s3c2410/mach-anubis.c +++ b/arch/arm/mach-s3c2410/mach-anubis.c | |||
| @@ -125,7 +125,7 @@ static int external_map[] = { 2 }; | |||
| 125 | static int chip0_map[] = { 0 }; | 125 | static int chip0_map[] = { 0 }; |
| 126 | static int chip1_map[] = { 1 }; | 126 | static int chip1_map[] = { 1 }; |
| 127 | 127 | ||
| 128 | struct mtd_partition anubis_default_nand_part[] = { | 128 | static struct mtd_partition anubis_default_nand_part[] = { |
| 129 | [0] = { | 129 | [0] = { |
| 130 | .name = "Boot Agent", | 130 | .name = "Boot Agent", |
| 131 | .size = SZ_16K, | 131 | .size = SZ_16K, |
diff --git a/arch/arm/mach-s3c2410/mach-bast.c b/arch/arm/mach-s3c2410/mach-bast.c index ed1f07d7252f..7b51bfd0ba6d 100644 --- a/arch/arm/mach-s3c2410/mach-bast.c +++ b/arch/arm/mach-s3c2410/mach-bast.c | |||
| @@ -230,7 +230,7 @@ static int chip0_map[] = { 1 }; | |||
| 230 | static int chip1_map[] = { 2 }; | 230 | static int chip1_map[] = { 2 }; |
| 231 | static int chip2_map[] = { 3 }; | 231 | static int chip2_map[] = { 3 }; |
| 232 | 232 | ||
| 233 | struct mtd_partition bast_default_nand_part[] = { | 233 | static struct mtd_partition bast_default_nand_part[] = { |
| 234 | [0] = { | 234 | [0] = { |
| 235 | .name = "Boot Agent", | 235 | .name = "Boot Agent", |
| 236 | .size = SZ_16K, | 236 | .size = SZ_16K, |
| @@ -307,9 +307,9 @@ static void bast_nand_select(struct s3c2410_nand_set *set, int slot) | |||
| 307 | } | 307 | } |
| 308 | 308 | ||
| 309 | static struct s3c2410_platform_nand bast_nand_info = { | 309 | static struct s3c2410_platform_nand bast_nand_info = { |
| 310 | .tacls = 40, | 310 | .tacls = 30, |
| 311 | .twrph0 = 80, | 311 | .twrph0 = 60, |
| 312 | .twrph1 = 80, | 312 | .twrph1 = 60, |
| 313 | .nr_sets = ARRAY_SIZE(bast_nand_sets), | 313 | .nr_sets = ARRAY_SIZE(bast_nand_sets), |
| 314 | .sets = bast_nand_sets, | 314 | .sets = bast_nand_sets, |
| 315 | .select_chip = bast_nand_select, | 315 | .select_chip = bast_nand_select, |
| @@ -340,7 +340,7 @@ static struct resource bast_dm9k_resource[] = { | |||
| 340 | * better IO routines can be written and tested | 340 | * better IO routines can be written and tested |
| 341 | */ | 341 | */ |
| 342 | 342 | ||
| 343 | struct dm9000_plat_data bast_dm9k_platdata = { | 343 | static struct dm9000_plat_data bast_dm9k_platdata = { |
| 344 | .flags = DM9000_PLATF_16BITONLY | 344 | .flags = DM9000_PLATF_16BITONLY |
| 345 | }; | 345 | }; |
| 346 | 346 | ||
diff --git a/arch/arm/mach-s3c2410/mach-vr1000.c b/arch/arm/mach-s3c2410/mach-vr1000.c index 663a7f98fc0b..46b259673c18 100644 --- a/arch/arm/mach-s3c2410/mach-vr1000.c +++ b/arch/arm/mach-s3c2410/mach-vr1000.c | |||
| @@ -288,7 +288,7 @@ static struct resource vr1000_dm9k1_resource[] = { | |||
| 288 | * better IO routines can be written and tested | 288 | * better IO routines can be written and tested |
| 289 | */ | 289 | */ |
| 290 | 290 | ||
| 291 | struct dm9000_plat_data vr1000_dm9k_platdata = { | 291 | static struct dm9000_plat_data vr1000_dm9k_platdata = { |
| 292 | .flags = DM9000_PLATF_16BITONLY, | 292 | .flags = DM9000_PLATF_16BITONLY, |
| 293 | }; | 293 | }; |
| 294 | 294 | ||
diff --git a/arch/arm/mach-s3c2410/s3c2410.c b/arch/arm/mach-s3c2410/s3c2410.c index 0b88993dfd27..a8bf5ec82602 100644 --- a/arch/arm/mach-s3c2410/s3c2410.c +++ b/arch/arm/mach-s3c2410/s3c2410.c | |||
| @@ -125,9 +125,6 @@ static struct platform_device *uart_devices[] __initdata = { | |||
| 125 | &s3c_uart2 | 125 | &s3c_uart2 |
| 126 | }; | 126 | }; |
| 127 | 127 | ||
| 128 | /* store our uart devices for the serial driver console */ | ||
| 129 | struct platform_device *s3c2410_uart_devices[3]; | ||
| 130 | |||
| 131 | static int s3c2410_uart_count = 0; | 128 | static int s3c2410_uart_count = 0; |
| 132 | 129 | ||
| 133 | /* uart registration process */ | 130 | /* uart registration process */ |
diff --git a/arch/arm/mach-s3c2410/s3c2440.c b/arch/arm/mach-s3c2410/s3c2440.c index d4c8281b55f6..833fa36bce05 100644 --- a/arch/arm/mach-s3c2410/s3c2440.c +++ b/arch/arm/mach-s3c2410/s3c2440.c | |||
| @@ -151,7 +151,7 @@ void __init s3c2440_init_uarts(struct s3c2410_uartcfg *cfg, int no) | |||
| 151 | 151 | ||
| 152 | #ifdef CONFIG_PM | 152 | #ifdef CONFIG_PM |
| 153 | 153 | ||
| 154 | struct sleep_save s3c2440_sleep[] = { | 154 | static struct sleep_save s3c2440_sleep[] = { |
| 155 | SAVE_ITEM(S3C2440_DSC0), | 155 | SAVE_ITEM(S3C2440_DSC0), |
| 156 | SAVE_ITEM(S3C2440_DSC1), | 156 | SAVE_ITEM(S3C2440_DSC1), |
| 157 | SAVE_ITEM(S3C2440_GPJDAT), | 157 | SAVE_ITEM(S3C2440_GPJDAT), |
| @@ -260,7 +260,7 @@ void __init s3c2440_init_clocks(int xtal) | |||
| 260 | * as a driver which may support both 2410 and 2440 may try and use it. | 260 | * as a driver which may support both 2410 and 2440 may try and use it. |
| 261 | */ | 261 | */ |
| 262 | 262 | ||
| 263 | int __init s3c2440_core_init(void) | 263 | static int __init s3c2440_core_init(void) |
| 264 | { | 264 | { |
| 265 | return sysdev_class_register(&s3c2440_sysclass); | 265 | return sysdev_class_register(&s3c2440_sysclass); |
| 266 | } | 266 | } |
diff --git a/arch/arm/mach-s3c2410/time.c b/arch/arm/mach-s3c2410/time.c index c0acfb2ad790..8a00e3c3cd08 100644 --- a/arch/arm/mach-s3c2410/time.c +++ b/arch/arm/mach-s3c2410/time.c | |||
| @@ -38,6 +38,7 @@ | |||
| 38 | #include <asm/hardware/clock.h> | 38 | #include <asm/hardware/clock.h> |
| 39 | 39 | ||
| 40 | #include "clock.h" | 40 | #include "clock.h" |
| 41 | #include "cpu.h" | ||
| 41 | 42 | ||
| 42 | static unsigned long timer_startval; | 43 | static unsigned long timer_startval; |
| 43 | static unsigned long timer_usec_ticks; | 44 | static unsigned long timer_usec_ticks; |
diff --git a/arch/arm/mach-sa1100/collie.c b/arch/arm/mach-sa1100/collie.c index 25d6a4e27533..6ecab7e2c238 100644 --- a/arch/arm/mach-sa1100/collie.c +++ b/arch/arm/mach-sa1100/collie.c | |||
| @@ -111,11 +111,11 @@ static struct mtd_partition collie_partitions[] = { | |||
| 111 | 111 | ||
| 112 | static void collie_set_vpp(int vpp) | 112 | static void collie_set_vpp(int vpp) |
| 113 | { | 113 | { |
| 114 | write_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR, read_scoop_reg(SCOOP_GPCR) | COLLIE_SCP_VPEN); | 114 | write_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPCR) | COLLIE_SCP_VPEN); |
| 115 | if (vpp) | 115 | if (vpp) |
| 116 | write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) | COLLIE_SCP_VPEN); | 116 | write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR) | COLLIE_SCP_VPEN); |
| 117 | else | 117 | else |
| 118 | write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(SCOOP_GPWR) & ~COLLIE_SCP_VPEN); | 118 | write_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR, read_scoop_reg(&colliescoop_device.dev, SCOOP_GPWR) & ~COLLIE_SCP_VPEN); |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | static struct flash_platform_data collie_flash_data = { | 121 | static struct flash_platform_data collie_flash_data = { |
diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index db5e47dfc303..c54e04c995ee 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig | |||
| @@ -370,21 +370,21 @@ config CPU_BIG_ENDIAN | |||
| 370 | 370 | ||
| 371 | config CPU_ICACHE_DISABLE | 371 | config CPU_ICACHE_DISABLE |
| 372 | bool "Disable I-Cache" | 372 | bool "Disable I-Cache" |
| 373 | depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020 | 373 | depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020 || CPU_V6 |
| 374 | help | 374 | help |
| 375 | Say Y here to disable the processor instruction cache. Unless | 375 | Say Y here to disable the processor instruction cache. Unless |
| 376 | you have a reason not to or are unsure, say N. | 376 | you have a reason not to or are unsure, say N. |
| 377 | 377 | ||
| 378 | config CPU_DCACHE_DISABLE | 378 | config CPU_DCACHE_DISABLE |
| 379 | bool "Disable D-Cache" | 379 | bool "Disable D-Cache" |
| 380 | depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020 | 380 | depends on CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020 || CPU_V6 |
| 381 | help | 381 | help |
| 382 | Say Y here to disable the processor data cache. Unless | 382 | Say Y here to disable the processor data cache. Unless |
| 383 | you have a reason not to or are unsure, say N. | 383 | you have a reason not to or are unsure, say N. |
| 384 | 384 | ||
| 385 | config CPU_DCACHE_WRITETHROUGH | 385 | config CPU_DCACHE_WRITETHROUGH |
| 386 | bool "Force write through D-cache" | 386 | bool "Force write through D-cache" |
| 387 | depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020) && !CPU_DCACHE_DISABLE | 387 | depends on (CPU_ARM920T || CPU_ARM922T || CPU_ARM925T || CPU_ARM926T || CPU_ARM1020 || CPU_V6) && !CPU_DCACHE_DISABLE |
| 388 | default y if CPU_ARM925T | 388 | default y if CPU_ARM925T |
| 389 | help | 389 | help |
| 390 | Say Y here to use the data cache in writethrough mode. Unless you | 390 | Say Y here to use the data cache in writethrough mode. Unless you |
| @@ -399,7 +399,7 @@ config CPU_CACHE_ROUND_ROBIN | |||
| 399 | 399 | ||
| 400 | config CPU_BPREDICT_DISABLE | 400 | config CPU_BPREDICT_DISABLE |
| 401 | bool "Disable branch prediction" | 401 | bool "Disable branch prediction" |
| 402 | depends on CPU_ARM1020 | 402 | depends on CPU_ARM1020 || CPU_V6 |
| 403 | help | 403 | help |
| 404 | Say Y here to disable branch prediction. If unsure, say N. | 404 | Say Y here to disable branch prediction. If unsure, say N. |
| 405 | 405 | ||
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index 4b39d867ac14..705c98921c37 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
| @@ -111,7 +111,7 @@ proc_alignment_read(char *page, char **start, off_t off, int count, int *eof, | |||
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | static int proc_alignment_write(struct file *file, const char __user *buffer, | 113 | static int proc_alignment_write(struct file *file, const char __user *buffer, |
| 114 | unsigned long count, void *data) | 114 | unsigned long count, void *data) |
| 115 | { | 115 | { |
| 116 | char mode; | 116 | char mode; |
| 117 | 117 | ||
| @@ -119,7 +119,7 @@ static int proc_alignment_write(struct file *file, const char __user *buffer, | |||
| 119 | if (get_user(mode, buffer)) | 119 | if (get_user(mode, buffer)) |
| 120 | return -EFAULT; | 120 | return -EFAULT; |
| 121 | if (mode >= '0' && mode <= '5') | 121 | if (mode >= '0' && mode <= '5') |
| 122 | ai_usermode = mode - '0'; | 122 | ai_usermode = mode - '0'; |
| 123 | } | 123 | } |
| 124 | return count; | 124 | return count; |
| 125 | } | 125 | } |
| @@ -262,7 +262,7 @@ union offset_union { | |||
| 262 | goto fault; \ | 262 | goto fault; \ |
| 263 | } while (0) | 263 | } while (0) |
| 264 | 264 | ||
| 265 | #define put32_unaligned_check(val,addr) \ | 265 | #define put32_unaligned_check(val,addr) \ |
| 266 | __put32_unaligned_check("strb", val, addr) | 266 | __put32_unaligned_check("strb", val, addr) |
| 267 | 267 | ||
| 268 | #define put32t_unaligned_check(val,addr) \ | 268 | #define put32t_unaligned_check(val,addr) \ |
| @@ -306,19 +306,19 @@ do_alignment_ldrhstrh(unsigned long addr, unsigned long instr, struct pt_regs *r | |||
| 306 | return TYPE_LDST; | 306 | return TYPE_LDST; |
| 307 | 307 | ||
| 308 | user: | 308 | user: |
| 309 | if (LDST_L_BIT(instr)) { | 309 | if (LDST_L_BIT(instr)) { |
| 310 | unsigned long val; | 310 | unsigned long val; |
| 311 | get16t_unaligned_check(val, addr); | 311 | get16t_unaligned_check(val, addr); |
| 312 | 312 | ||
| 313 | /* signed half-word? */ | 313 | /* signed half-word? */ |
| 314 | if (instr & 0x40) | 314 | if (instr & 0x40) |
| 315 | val = (signed long)((signed short) val); | 315 | val = (signed long)((signed short) val); |
| 316 | 316 | ||
| 317 | regs->uregs[rd] = val; | 317 | regs->uregs[rd] = val; |
| 318 | } else | 318 | } else |
| 319 | put16t_unaligned_check(regs->uregs[rd], addr); | 319 | put16t_unaligned_check(regs->uregs[rd], addr); |
| 320 | 320 | ||
| 321 | return TYPE_LDST; | 321 | return TYPE_LDST; |
| 322 | 322 | ||
| 323 | fault: | 323 | fault: |
| 324 | return TYPE_FAULT; | 324 | return TYPE_FAULT; |
| @@ -330,6 +330,9 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr, | |||
| 330 | { | 330 | { |
| 331 | unsigned int rd = RD_BITS(instr); | 331 | unsigned int rd = RD_BITS(instr); |
| 332 | 332 | ||
| 333 | if (((rd & 1) == 1) || (rd == 14)) | ||
| 334 | goto bad; | ||
| 335 | |||
| 333 | ai_dword += 1; | 336 | ai_dword += 1; |
| 334 | 337 | ||
| 335 | if (user_mode(regs)) | 338 | if (user_mode(regs)) |
| @@ -339,11 +342,11 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr, | |||
| 339 | unsigned long val; | 342 | unsigned long val; |
| 340 | get32_unaligned_check(val, addr); | 343 | get32_unaligned_check(val, addr); |
| 341 | regs->uregs[rd] = val; | 344 | regs->uregs[rd] = val; |
| 342 | get32_unaligned_check(val, addr+4); | 345 | get32_unaligned_check(val, addr + 4); |
| 343 | regs->uregs[rd+1] = val; | 346 | regs->uregs[rd + 1] = val; |
| 344 | } else { | 347 | } else { |
| 345 | put32_unaligned_check(regs->uregs[rd], addr); | 348 | put32_unaligned_check(regs->uregs[rd], addr); |
| 346 | put32_unaligned_check(regs->uregs[rd+1], addr+4); | 349 | put32_unaligned_check(regs->uregs[rd + 1], addr + 4); |
| 347 | } | 350 | } |
| 348 | 351 | ||
| 349 | return TYPE_LDST; | 352 | return TYPE_LDST; |
| @@ -353,15 +356,16 @@ do_alignment_ldrdstrd(unsigned long addr, unsigned long instr, | |||
| 353 | unsigned long val; | 356 | unsigned long val; |
| 354 | get32t_unaligned_check(val, addr); | 357 | get32t_unaligned_check(val, addr); |
| 355 | regs->uregs[rd] = val; | 358 | regs->uregs[rd] = val; |
| 356 | get32t_unaligned_check(val, addr+4); | 359 | get32t_unaligned_check(val, addr + 4); |
| 357 | regs->uregs[rd+1] = val; | 360 | regs->uregs[rd + 1] = val; |
| 358 | } else { | 361 | } else { |
| 359 | put32t_unaligned_check(regs->uregs[rd], addr); | 362 | put32t_unaligned_check(regs->uregs[rd], addr); |
| 360 | put32t_unaligned_check(regs->uregs[rd+1], addr+4); | 363 | put32t_unaligned_check(regs->uregs[rd + 1], addr + 4); |
| 361 | } | 364 | } |
| 362 | 365 | ||
| 363 | return TYPE_LDST; | 366 | return TYPE_LDST; |
| 364 | 367 | bad: | |
| 368 | return TYPE_ERROR; | ||
| 365 | fault: | 369 | fault: |
| 366 | return TYPE_FAULT; | 370 | return TYPE_FAULT; |
| 367 | } | 371 | } |
| @@ -439,7 +443,7 @@ do_alignment_ldmstm(unsigned long addr, unsigned long instr, struct pt_regs *reg | |||
| 439 | if (LDST_P_EQ_U(instr)) /* U = P */ | 443 | if (LDST_P_EQ_U(instr)) /* U = P */ |
| 440 | eaddr += 4; | 444 | eaddr += 4; |
| 441 | 445 | ||
| 442 | /* | 446 | /* |
| 443 | * For alignment faults on the ARM922T/ARM920T the MMU makes | 447 | * For alignment faults on the ARM922T/ARM920T the MMU makes |
| 444 | * the FSR (and hence addr) equal to the updated base address | 448 | * the FSR (and hence addr) equal to the updated base address |
| 445 | * of the multiple access rather than the restored value. | 449 | * of the multiple access rather than the restored value. |
| @@ -566,7 +570,7 @@ thumb2arm(u16 tinstr) | |||
| 566 | /* 6.5.1 Format 3: */ | 570 | /* 6.5.1 Format 3: */ |
| 567 | case 0x4800 >> 11: /* 7.1.28 LDR(3) */ | 571 | case 0x4800 >> 11: /* 7.1.28 LDR(3) */ |
| 568 | /* NOTE: This case is not technically possible. We're | 572 | /* NOTE: This case is not technically possible. We're |
| 569 | * loading 32-bit memory data via PC relative | 573 | * loading 32-bit memory data via PC relative |
| 570 | * addressing mode. So we can and should eliminate | 574 | * addressing mode. So we can and should eliminate |
| 571 | * this case. But I'll leave it here for now. | 575 | * this case. But I'll leave it here for now. |
| 572 | */ | 576 | */ |
| @@ -638,7 +642,7 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
| 638 | 642 | ||
| 639 | if (fault) { | 643 | if (fault) { |
| 640 | type = TYPE_FAULT; | 644 | type = TYPE_FAULT; |
| 641 | goto bad_or_fault; | 645 | goto bad_or_fault; |
| 642 | } | 646 | } |
| 643 | 647 | ||
| 644 | if (user_mode(regs)) | 648 | if (user_mode(regs)) |
| @@ -663,6 +667,8 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
| 663 | else if ((instr & 0x001000f0) == 0x000000d0 || /* LDRD */ | 667 | else if ((instr & 0x001000f0) == 0x000000d0 || /* LDRD */ |
| 664 | (instr & 0x001000f0) == 0x000000f0) /* STRD */ | 668 | (instr & 0x001000f0) == 0x000000f0) /* STRD */ |
| 665 | handler = do_alignment_ldrdstrd; | 669 | handler = do_alignment_ldrdstrd; |
| 670 | else if ((instr & 0x01f00ff0) == 0x01000090) /* SWP */ | ||
| 671 | goto swp; | ||
| 666 | else | 672 | else |
| 667 | goto bad; | 673 | goto bad; |
| 668 | break; | 674 | break; |
| @@ -733,6 +739,9 @@ do_alignment(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
| 733 | do_bad_area(current, current->mm, addr, fsr, regs); | 739 | do_bad_area(current, current->mm, addr, fsr, regs); |
| 734 | return 0; | 740 | return 0; |
| 735 | 741 | ||
| 742 | swp: | ||
| 743 | printk(KERN_ERR "Alignment trap: not handling swp instruction\n"); | ||
| 744 | |||
| 736 | bad: | 745 | bad: |
| 737 | /* | 746 | /* |
| 738 | * Oops, we didn't handle the instruction. | 747 | * Oops, we didn't handle the instruction. |
diff --git a/arch/arm/mm/proc-v6.S b/arch/arm/mm/proc-v6.S index caf3b19b167f..9bb5fff406fb 100644 --- a/arch/arm/mm/proc-v6.S +++ b/arch/arm/mm/proc-v6.S | |||
| @@ -55,7 +55,14 @@ ENTRY(cpu_v6_proc_init) | |||
| 55 | mov pc, lr | 55 | mov pc, lr |
| 56 | 56 | ||
| 57 | ENTRY(cpu_v6_proc_fin) | 57 | ENTRY(cpu_v6_proc_fin) |
| 58 | mov pc, lr | 58 | stmfd sp!, {lr} |
| 59 | cpsid if @ disable interrupts | ||
| 60 | bl v6_flush_kern_cache_all | ||
| 61 | mrc p15, 0, r0, c1, c0, 0 @ ctrl register | ||
| 62 | bic r0, r0, #0x1000 @ ...i............ | ||
| 63 | bic r0, r0, #0x0006 @ .............ca. | ||
| 64 | mcr p15, 0, r0, c1, c0, 0 @ disable caches | ||
| 65 | ldmfd sp!, {pc} | ||
| 59 | 66 | ||
| 60 | /* | 67 | /* |
| 61 | * cpu_v6_reset(loc) | 68 | * cpu_v6_reset(loc) |
diff --git a/arch/arm/nwfpe/fpa11.c b/arch/arm/nwfpe/fpa11.c index 7690f731ee87..7b3d74d73c80 100644 --- a/arch/arm/nwfpe/fpa11.c +++ b/arch/arm/nwfpe/fpa11.c | |||
| @@ -31,11 +31,6 @@ | |||
| 31 | #include <linux/string.h> | 31 | #include <linux/string.h> |
| 32 | #include <asm/system.h> | 32 | #include <asm/system.h> |
| 33 | 33 | ||
| 34 | /* forward declarations */ | ||
| 35 | unsigned int EmulateCPDO(const unsigned int); | ||
| 36 | unsigned int EmulateCPDT(const unsigned int); | ||
| 37 | unsigned int EmulateCPRT(const unsigned int); | ||
| 38 | |||
| 39 | /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ | 34 | /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ |
| 40 | static void resetFPA11(void) | 35 | static void resetFPA11(void) |
| 41 | { | 36 | { |
diff --git a/arch/arm/nwfpe/fpa11.h b/arch/arm/nwfpe/fpa11.h index 93523ae4b7a1..9677ae8448e8 100644 --- a/arch/arm/nwfpe/fpa11.h +++ b/arch/arm/nwfpe/fpa11.h | |||
| @@ -95,4 +95,24 @@ extern int8 SetRoundingMode(const unsigned int); | |||
| 95 | extern int8 SetRoundingPrecision(const unsigned int); | 95 | extern int8 SetRoundingPrecision(const unsigned int); |
| 96 | extern void nwfpe_init_fpa(union fp_state *fp); | 96 | extern void nwfpe_init_fpa(union fp_state *fp); |
| 97 | 97 | ||
| 98 | extern unsigned int EmulateAll(unsigned int opcode); | ||
| 99 | |||
| 100 | extern unsigned int EmulateCPDT(const unsigned int opcode); | ||
| 101 | extern unsigned int EmulateCPDO(const unsigned int opcode); | ||
| 102 | extern unsigned int EmulateCPRT(const unsigned int opcode); | ||
| 103 | |||
| 104 | /* fpa11_cpdt.c */ | ||
| 105 | extern unsigned int PerformLDF(const unsigned int opcode); | ||
| 106 | extern unsigned int PerformSTF(const unsigned int opcode); | ||
| 107 | extern unsigned int PerformLFM(const unsigned int opcode); | ||
| 108 | extern unsigned int PerformSFM(const unsigned int opcode); | ||
| 109 | |||
| 110 | /* single_cpdo.c */ | ||
| 111 | |||
| 112 | extern unsigned int SingleCPDO(struct roundingData *roundData, | ||
| 113 | const unsigned int opcode, FPREG * rFd); | ||
| 114 | /* double_cpdo.c */ | ||
| 115 | extern unsigned int DoubleCPDO(struct roundingData *roundData, | ||
| 116 | const unsigned int opcode, FPREG * rFd); | ||
| 117 | |||
| 98 | #endif | 118 | #endif |
diff --git a/arch/arm/nwfpe/fpa11_cprt.c b/arch/arm/nwfpe/fpa11_cprt.c index adf8d3000540..7c67023655e4 100644 --- a/arch/arm/nwfpe/fpa11_cprt.c +++ b/arch/arm/nwfpe/fpa11_cprt.c | |||
| @@ -26,12 +26,11 @@ | |||
| 26 | #include "fpa11.inl" | 26 | #include "fpa11.inl" |
| 27 | #include "fpmodule.h" | 27 | #include "fpmodule.h" |
| 28 | #include "fpmodule.inl" | 28 | #include "fpmodule.inl" |
| 29 | #include "softfloat.h" | ||
| 29 | 30 | ||
| 30 | #ifdef CONFIG_FPE_NWFPE_XP | 31 | #ifdef CONFIG_FPE_NWFPE_XP |
| 31 | extern flag floatx80_is_nan(floatx80); | 32 | extern flag floatx80_is_nan(floatx80); |
| 32 | #endif | 33 | #endif |
| 33 | extern flag float64_is_nan(float64); | ||
| 34 | extern flag float32_is_nan(float32); | ||
| 35 | 34 | ||
| 36 | unsigned int PerformFLT(const unsigned int opcode); | 35 | unsigned int PerformFLT(const unsigned int opcode); |
| 37 | unsigned int PerformFIX(const unsigned int opcode); | 36 | unsigned int PerformFIX(const unsigned int opcode); |
diff --git a/arch/arm/nwfpe/fpopcode.h b/arch/arm/nwfpe/fpopcode.h index 1777e92a88e6..6528e081c83f 100644 --- a/arch/arm/nwfpe/fpopcode.h +++ b/arch/arm/nwfpe/fpopcode.h | |||
| @@ -476,4 +476,10 @@ static inline unsigned int getDestinationSize(const unsigned int opcode) | |||
| 476 | return (nRc); | 476 | return (nRc); |
| 477 | } | 477 | } |
| 478 | 478 | ||
| 479 | extern unsigned int checkCondition(const unsigned int opcode, | ||
| 480 | const unsigned int ccodes); | ||
| 481 | |||
| 482 | extern const float64 float64Constant[]; | ||
| 483 | extern const float32 float32Constant[]; | ||
| 484 | |||
| 479 | #endif | 485 | #endif |
diff --git a/arch/arm/nwfpe/softfloat.h b/arch/arm/nwfpe/softfloat.h index 1c8799b9ee4d..14151700b6b2 100644 --- a/arch/arm/nwfpe/softfloat.h +++ b/arch/arm/nwfpe/softfloat.h | |||
| @@ -265,4 +265,7 @@ static inline flag float64_lt_nocheck(float64 a, float64 b) | |||
| 265 | return (a != b) && (aSign ^ (a < b)); | 265 | return (a != b) && (aSign ^ (a < b)); |
| 266 | } | 266 | } |
| 267 | 267 | ||
| 268 | extern flag float32_is_nan( float32 a ); | ||
| 269 | extern flag float64_is_nan( float64 a ); | ||
| 270 | |||
| 268 | #endif | 271 | #endif |
diff --git a/arch/arm/tools/mach-types b/arch/arm/tools/mach-types index 6d3a79e5fef8..ae7c64b8cec3 100644 --- a/arch/arm/tools/mach-types +++ b/arch/arm/tools/mach-types | |||
| @@ -2,11 +2,17 @@ | |||
| 2 | # | 2 | # |
| 3 | # This file is linux/arch/arm/tools/mach-types | 3 | # This file is linux/arch/arm/tools/mach-types |
| 4 | # | 4 | # |
| 5 | # Up to date versions of this file can be obtained from: | ||
| 6 | # | ||
| 7 | # http://www.arm.linux.org.uk/developer/machines/?action=download | ||
| 8 | # | ||
| 5 | # Please do not send patches to this file; it is automatically generated! | 9 | # Please do not send patches to this file; it is automatically generated! |
| 6 | # To add an entry into this database, please see Documentation/arm/README, | 10 | # To add an entry into this database, please see Documentation/arm/README, |
| 7 | # or contact rmk@arm.linux.org.uk | 11 | # or visit: |
| 12 | # | ||
| 13 | # http://www.arm.linux.org.uk/developer/machines/?action=new | ||
| 8 | # | 14 | # |
| 9 | # Last update: Thu Jun 23 20:19:33 2005 | 15 | # Last update: Mon Oct 10 09:46:25 2005 |
| 10 | # | 16 | # |
| 11 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number | 17 | # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number |
| 12 | # | 18 | # |
| @@ -421,7 +427,7 @@ mt02 MACH_MT02 MT02 410 | |||
| 421 | mport3s MACH_MPORT3S MPORT3S 411 | 427 | mport3s MACH_MPORT3S MPORT3S 411 |
| 422 | ra_alpha MACH_RA_ALPHA RA_ALPHA 412 | 428 | ra_alpha MACH_RA_ALPHA RA_ALPHA 412 |
| 423 | xcep MACH_XCEP XCEP 413 | 429 | xcep MACH_XCEP XCEP 413 |
| 424 | arcom_mercury MACH_ARCOM_MERCURY ARCOM_MERCURY 414 | 430 | arcom_vulcan MACH_ARCOM_VULCAN ARCOM_VULCAN 414 |
| 425 | stargate MACH_STARGATE STARGATE 415 | 431 | stargate MACH_STARGATE STARGATE 415 |
| 426 | armadilloj MACH_ARMADILLOJ ARMADILLOJ 416 | 432 | armadilloj MACH_ARMADILLOJ ARMADILLOJ 416 |
| 427 | elroy_jack MACH_ELROY_JACK ELROY_JACK 417 | 433 | elroy_jack MACH_ELROY_JACK ELROY_JACK 417 |
| @@ -454,7 +460,7 @@ esl_sarva MACH_ESL_SARVA ESL_SARVA 443 | |||
| 454 | xm250 MACH_XM250 XM250 444 | 460 | xm250 MACH_XM250 XM250 444 |
| 455 | t6tc1xb MACH_T6TC1XB T6TC1XB 445 | 461 | t6tc1xb MACH_T6TC1XB T6TC1XB 445 |
| 456 | ess710 MACH_ESS710 ESS710 446 | 462 | ess710 MACH_ESS710 ESS710 446 |
| 457 | mx3ads MACH_MX3ADS MX3ADS 447 | 463 | mx31ads MACH_MX3ADS MX3ADS 447 |
| 458 | himalaya MACH_HIMALAYA HIMALAYA 448 | 464 | himalaya MACH_HIMALAYA HIMALAYA 448 |
| 459 | bolfenk MACH_BOLFENK BOLFENK 449 | 465 | bolfenk MACH_BOLFENK BOLFENK 449 |
| 460 | at91rm9200kr MACH_AT91RM9200KR AT91RM9200KR 450 | 466 | at91rm9200kr MACH_AT91RM9200KR AT91RM9200KR 450 |
| @@ -787,3 +793,79 @@ ez_ixp42x MACH_EZ_IXP42X EZ_IXP42X 778 | |||
| 787 | tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779 | 793 | tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779 |
| 788 | universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780 | 794 | universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780 |
| 789 | hicoarm9 MACH_HICOARM9 HICOARM9 781 | 795 | hicoarm9 MACH_HICOARM9 HICOARM9 781 |
| 796 | pnx4008 MACH_PNX4008 PNX4008 782 | ||
| 797 | kws6000 MACH_KWS6000 KWS6000 783 | ||
| 798 | portux920t MACH_PORTUX920T PORTUX920T 784 | ||
| 799 | ez_x5 MACH_EZ_X5 EZ_X5 785 | ||
| 800 | omap_rudolph MACH_OMAP_RUDOLPH OMAP_RUDOLPH 786 | ||
| 801 | cpuat91 MACH_CPUAT91 CPUAT91 787 | ||
| 802 | rea9200 MACH_REA9200 REA9200 788 | ||
| 803 | acts_pune_sa1110 MACH_ACTS_PUNE_SA1110 ACTS_PUNE_SA1110 789 | ||
| 804 | ixp425 MACH_IXP425 IXP425 790 | ||
| 805 | argonplusodyssey MACH_ODYSSEY ODYSSEY 791 | ||
| 806 | perch MACH_PERCH PERCH 792 | ||
| 807 | eis05r1 MACH_EIS05R1 EIS05R1 793 | ||
| 808 | pepperpad MACH_PEPPERPAD PEPPERPAD 794 | ||
| 809 | sb3010 MACH_SB3010 SB3010 795 | ||
| 810 | rm9200 MACH_RM9200 RM9200 796 | ||
| 811 | dma03 MACH_DMA03 DMA03 797 | ||
| 812 | road_s101 MACH_ROAD_S101 ROAD_S101 798 | ||
| 813 | iq_nextgen_a MACH_IQ_NEXTGEN_A IQ_NEXTGEN_A 799 | ||
| 814 | iq_nextgen_b MACH_IQ_NEXTGEN_B IQ_NEXTGEN_B 800 | ||
| 815 | iq_nextgen_c MACH_IQ_NEXTGEN_C IQ_NEXTGEN_C 801 | ||
| 816 | iq_nextgen_d MACH_IQ_NEXTGEN_D IQ_NEXTGEN_D 802 | ||
| 817 | iq_nextgen_e MACH_IQ_NEXTGEN_E IQ_NEXTGEN_E 803 | ||
| 818 | mallow_at91 MACH_MALLOW_AT91 MALLOW_AT91 804 | ||
| 819 | cybertracker MACH_CYBERTRACKER CYBERTRACKER 805 | ||
| 820 | gesbc931x MACH_GESBC931X GESBC931X 806 | ||
| 821 | centipad MACH_CENTIPAD CENTIPAD 807 | ||
| 822 | armsoc MACH_ARMSOC ARMSOC 808 | ||
| 823 | se4200 MACH_SE4200 SE4200 809 | ||
| 824 | ems197a MACH_EMS197A EMS197A 810 | ||
| 825 | micro9 MACH_MICRO9 MICRO9 811 | ||
| 826 | micro9l MACH_MICRO9L MICRO9L 812 | ||
| 827 | uc5471dsp MACH_UC5471DSP UC5471DSP 813 | ||
| 828 | sj5471eng MACH_SJ5471ENG SJ5471ENG 814 | ||
| 829 | none MACH_CMPXA26X CMPXA26X 815 | ||
| 830 | nc MACH_NC NC 816 | ||
| 831 | omap_palmte MACH_OMAP_PALMTE OMAP_PALMTE 817 | ||
| 832 | ajax52x MACH_AJAX52X AJAX52X 818 | ||
| 833 | siriustar MACH_SIRIUSTAR SIRIUSTAR 819 | ||
| 834 | iodata_hdlg MACH_IODATA_HDLG IODATA_HDLG 820 | ||
| 835 | at91rm9200utl MACH_AT91RM9200UTL AT91RM9200UTL 821 | ||
| 836 | biosafe MACH_BIOSAFE BIOSAFE 822 | ||
| 837 | mp1000 MACH_MP1000 MP1000 823 | ||
| 838 | parsy MACH_PARSY PARSY 824 | ||
| 839 | ccxp270 MACH_CCXP CCXP 825 | ||
| 840 | omap_gsample MACH_OMAP_GSAMPLE OMAP_GSAMPLE 826 | ||
| 841 | realview_eb MACH_REALVIEW_EB REALVIEW_EB 827 | ||
| 842 | samoa MACH_SAMOA SAMOA 828 | ||
| 843 | t3xscale MACH_T3XSCALE T3XSCALE 829 | ||
| 844 | i878 MACH_I878 I878 830 | ||
| 845 | borzoi MACH_BORZOI BORZOI 831 | ||
| 846 | gecko MACH_GECKO GECKO 832 | ||
| 847 | ds101 MACH_DS101 DS101 833 | ||
| 848 | omap_palmtt2 MACH_OMAP_PALMTT2 OMAP_PALMTT2 834 | ||
| 849 | xscale_palmld MACH_XSCALE_PALMLD XSCALE_PALMLD 835 | ||
| 850 | cc9c MACH_CC9C CC9C 836 | ||
| 851 | sbc1670 MACH_SBC1670 SBC1670 837 | ||
| 852 | ixdp28x5 MACH_IXDP28X5 IXDP28X5 838 | ||
| 853 | omap_palmtt MACH_OMAP_PALMTT OMAP_PALMTT 839 | ||
| 854 | ml696k MACH_ML696K ML696K 840 | ||
| 855 | arcom_zeus MACH_ARCOM_ZEUS ARCOM_ZEUS 841 | ||
| 856 | osiris MACH_OSIRIS OSIRIS 842 | ||
| 857 | maestro MACH_MAESTRO MAESTRO 843 | ||
| 858 | tunge2 MACH_TUNGE2 TUNGE2 844 | ||
| 859 | ixbbm MACH_IXBBM IXBBM 845 | ||
| 860 | mx27 MACH_MX27 MX27 846 | ||
| 861 | ax8004 MACH_AX8004 AX8004 847 | ||
| 862 | at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848 | ||
| 863 | loft MACH_LOFT LOFT 849 | ||
| 864 | magpie MACH_MAGPIE MAGPIE 850 | ||
| 865 | mx21 MACH_MX21 MX21 851 | ||
| 866 | mb87m3400 MACH_MB87M3400 MB87M3400 852 | ||
| 867 | mguard_delta MACH_MGUARD_DELTA MGUARD_DELTA 853 | ||
| 868 | davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_DVDP 854 | ||
| 869 | htcuniversal MACH_HTCUNIVERSAL HTCUNIVERSAL 855 | ||
| 870 | tpad MACH_TPAD TPAD 856 | ||
| 871 | roverp3 MACH_ROVERP3 ROVERP3 857 | ||
diff --git a/arch/cris/arch-v32/drivers/pci/dma.c b/arch/cris/arch-v32/drivers/pci/dma.c index 10329306d23c..426b09878a05 100644 --- a/arch/cris/arch-v32/drivers/pci/dma.c +++ b/arch/cris/arch-v32/drivers/pci/dma.c | |||
| @@ -24,7 +24,7 @@ struct dma_coherent_mem { | |||
| 24 | }; | 24 | }; |
| 25 | 25 | ||
| 26 | void *dma_alloc_coherent(struct device *dev, size_t size, | 26 | void *dma_alloc_coherent(struct device *dev, size_t size, |
| 27 | dma_addr_t *dma_handle, unsigned int __nocast gfp) | 27 | dma_addr_t *dma_handle, gfp_t gfp) |
| 28 | { | 28 | { |
| 29 | void *ret; | 29 | void *ret; |
| 30 | struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; | 30 | struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; |
diff --git a/arch/cris/arch-v32/kernel/smp.c b/arch/cris/arch-v32/kernel/smp.c index 2c5cae04a95c..957f551ba5ce 100644 --- a/arch/cris/arch-v32/kernel/smp.c +++ b/arch/cris/arch-v32/kernel/smp.c | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/cpumask.h> | 16 | #include <linux/cpumask.h> |
| 17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
| 18 | #include <linux/module.h> | ||
| 18 | 19 | ||
| 19 | #define IPI_SCHEDULE 1 | 20 | #define IPI_SCHEDULE 1 |
| 20 | #define IPI_CALL 2 | 21 | #define IPI_CALL 2 |
| @@ -28,6 +29,7 @@ spinlock_t cris_atomic_locks[] = { [0 ... LOCK_COUNT - 1] = SPIN_LOCK_UNLOCKED}; | |||
| 28 | /* CPU masks */ | 29 | /* CPU masks */ |
| 29 | cpumask_t cpu_online_map = CPU_MASK_NONE; | 30 | cpumask_t cpu_online_map = CPU_MASK_NONE; |
| 30 | cpumask_t phys_cpu_present_map = CPU_MASK_NONE; | 31 | cpumask_t phys_cpu_present_map = CPU_MASK_NONE; |
| 32 | EXPORT_SYMBOL(phys_cpu_present_map); | ||
| 31 | 33 | ||
| 32 | /* Variables used during SMP boot */ | 34 | /* Variables used during SMP boot */ |
| 33 | volatile int cpu_now_booting = 0; | 35 | volatile int cpu_now_booting = 0; |
diff --git a/arch/i386/kernel/cpu/amd.c b/arch/i386/kernel/cpu/amd.c index 4c1ddf2b57cc..53a1681cd964 100644 --- a/arch/i386/kernel/cpu/amd.c +++ b/arch/i386/kernel/cpu/amd.c | |||
| @@ -29,7 +29,7 @@ static void __init init_amd(struct cpuinfo_x86 *c) | |||
| 29 | int r; | 29 | int r; |
| 30 | 30 | ||
| 31 | #ifdef CONFIG_SMP | 31 | #ifdef CONFIG_SMP |
| 32 | unsigned long value; | 32 | unsigned long long value; |
| 33 | 33 | ||
| 34 | /* Disable TLB flush filter by setting HWCR.FFDIS on K8 | 34 | /* Disable TLB flush filter by setting HWCR.FFDIS on K8 |
| 35 | * bit 6 of msr C001_0015 | 35 | * bit 6 of msr C001_0015 |
diff --git a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c index ab6e0611303d..58ca98fdc2ca 100644 --- a/arch/i386/kernel/cpu/cpufreq/powernow-k8.c +++ b/arch/i386/kernel/cpu/cpufreq/powernow-k8.c | |||
| @@ -44,7 +44,7 @@ | |||
| 44 | 44 | ||
| 45 | #define PFX "powernow-k8: " | 45 | #define PFX "powernow-k8: " |
| 46 | #define BFX PFX "BIOS error: " | 46 | #define BFX PFX "BIOS error: " |
| 47 | #define VERSION "version 1.50.3" | 47 | #define VERSION "version 1.50.4" |
| 48 | #include "powernow-k8.h" | 48 | #include "powernow-k8.h" |
| 49 | 49 | ||
| 50 | /* serialize freq changes */ | 50 | /* serialize freq changes */ |
| @@ -111,8 +111,8 @@ static int query_current_values_with_pending_wait(struct powernow_k8_data *data) | |||
| 111 | u32 i = 0; | 111 | u32 i = 0; |
| 112 | 112 | ||
| 113 | do { | 113 | do { |
| 114 | if (i++ > 0x1000000) { | 114 | if (i++ > 10000) { |
| 115 | printk(KERN_ERR PFX "detected change pending stuck\n"); | 115 | dprintk("detected change pending stuck\n"); |
| 116 | return 1; | 116 | return 1; |
| 117 | } | 117 | } |
| 118 | rdmsr(MSR_FIDVID_STATUS, lo, hi); | 118 | rdmsr(MSR_FIDVID_STATUS, lo, hi); |
| @@ -159,6 +159,7 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid) | |||
| 159 | { | 159 | { |
| 160 | u32 lo; | 160 | u32 lo; |
| 161 | u32 savevid = data->currvid; | 161 | u32 savevid = data->currvid; |
| 162 | u32 i = 0; | ||
| 162 | 163 | ||
| 163 | if ((fid & INVALID_FID_MASK) || (data->currvid & INVALID_VID_MASK)) { | 164 | if ((fid & INVALID_FID_MASK) || (data->currvid & INVALID_VID_MASK)) { |
| 164 | printk(KERN_ERR PFX "internal error - overflow on fid write\n"); | 165 | printk(KERN_ERR PFX "internal error - overflow on fid write\n"); |
| @@ -170,10 +171,13 @@ static int write_new_fid(struct powernow_k8_data *data, u32 fid) | |||
| 170 | dprintk("writing fid 0x%x, lo 0x%x, hi 0x%x\n", | 171 | dprintk("writing fid 0x%x, lo 0x%x, hi 0x%x\n", |
| 171 | fid, lo, data->plllock * PLL_LOCK_CONVERSION); | 172 | fid, lo, data->plllock * PLL_LOCK_CONVERSION); |
| 172 | 173 | ||
| 173 | wrmsr(MSR_FIDVID_CTL, lo, data->plllock * PLL_LOCK_CONVERSION); | 174 | do { |
| 174 | 175 | wrmsr(MSR_FIDVID_CTL, lo, data->plllock * PLL_LOCK_CONVERSION); | |
| 175 | if (query_current_values_with_pending_wait(data)) | 176 | if (i++ > 100) { |
| 176 | return 1; | 177 | printk(KERN_ERR PFX "internal error - pending bit very stuck - no further pstate changes possible\n"); |
| 178 | return 1; | ||
| 179 | } | ||
| 180 | } while (query_current_values_with_pending_wait(data)); | ||
| 177 | 181 | ||
| 178 | count_off_irt(data); | 182 | count_off_irt(data); |
| 179 | 183 | ||
| @@ -197,6 +201,7 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid) | |||
| 197 | { | 201 | { |
| 198 | u32 lo; | 202 | u32 lo; |
| 199 | u32 savefid = data->currfid; | 203 | u32 savefid = data->currfid; |
| 204 | int i = 0; | ||
| 200 | 205 | ||
| 201 | if ((data->currfid & INVALID_FID_MASK) || (vid & INVALID_VID_MASK)) { | 206 | if ((data->currfid & INVALID_FID_MASK) || (vid & INVALID_VID_MASK)) { |
| 202 | printk(KERN_ERR PFX "internal error - overflow on vid write\n"); | 207 | printk(KERN_ERR PFX "internal error - overflow on vid write\n"); |
| @@ -208,10 +213,13 @@ static int write_new_vid(struct powernow_k8_data *data, u32 vid) | |||
| 208 | dprintk("writing vid 0x%x, lo 0x%x, hi 0x%x\n", | 213 | dprintk("writing vid 0x%x, lo 0x%x, hi 0x%x\n", |
| 209 | vid, lo, STOP_GRANT_5NS); | 214 | vid, lo, STOP_GRANT_5NS); |
| 210 | 215 | ||
| 211 | wrmsr(MSR_FIDVID_CTL, lo, STOP_GRANT_5NS); | 216 | do { |
| 212 | 217 | wrmsr(MSR_FIDVID_CTL, lo, STOP_GRANT_5NS); | |
| 213 | if (query_current_values_with_pending_wait(data)) | 218 | if (i++ > 100) { |
| 214 | return 1; | 219 | printk(KERN_ERR PFX "internal error - pending bit very stuck - no further pstate changes possible\n"); |
| 220 | return 1; | ||
| 221 | } | ||
| 222 | } while (query_current_values_with_pending_wait(data)); | ||
| 215 | 223 | ||
| 216 | if (savefid != data->currfid) { | 224 | if (savefid != data->currfid) { |
| 217 | printk(KERN_ERR PFX "fid changed on vid trans, old 0x%x new 0x%x\n", | 225 | printk(KERN_ERR PFX "fid changed on vid trans, old 0x%x new 0x%x\n", |
diff --git a/arch/i386/kernel/pci-dma.c b/arch/i386/kernel/pci-dma.c index 1e51427cc9eb..25fe66853934 100644 --- a/arch/i386/kernel/pci-dma.c +++ b/arch/i386/kernel/pci-dma.c | |||
| @@ -23,7 +23,7 @@ struct dma_coherent_mem { | |||
| 23 | }; | 23 | }; |
| 24 | 24 | ||
| 25 | void *dma_alloc_coherent(struct device *dev, size_t size, | 25 | void *dma_alloc_coherent(struct device *dev, size_t size, |
| 26 | dma_addr_t *dma_handle, unsigned int __nocast gfp) | 26 | dma_addr_t *dma_handle, gfp_t gfp) |
| 27 | { | 27 | { |
| 28 | void *ret; | 28 | void *ret; |
| 29 | struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; | 29 | struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL; |
diff --git a/arch/i386/kernel/signal.c b/arch/i386/kernel/signal.c index 61eb0c8a6e47..adcd069db91e 100644 --- a/arch/i386/kernel/signal.c +++ b/arch/i386/kernel/signal.c | |||
| @@ -338,7 +338,11 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) | |||
| 338 | esp = (unsigned long) ka->sa.sa_restorer; | 338 | esp = (unsigned long) ka->sa.sa_restorer; |
| 339 | } | 339 | } |
| 340 | 340 | ||
| 341 | return (void __user *)((esp - frame_size) & -8ul); | 341 | esp -= frame_size; |
| 342 | /* Align the stack pointer according to the i386 ABI, | ||
| 343 | * i.e. so that on function entry ((sp + 4) & 15) == 0. */ | ||
| 344 | esp = ((esp + 4) & -16ul) - 4; | ||
| 345 | return (void __user *) esp; | ||
| 342 | } | 346 | } |
| 343 | 347 | ||
| 344 | /* These symbols are defined with the addresses in the vsyscall page. | 348 | /* These symbols are defined with the addresses in the vsyscall page. |
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index a86236d6ba5d..1642375fb14e 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
| @@ -220,8 +220,8 @@ config SMP | |||
| 220 | If you don't know what to do here, say N. | 220 | If you don't know what to do here, say N. |
| 221 | 221 | ||
| 222 | config NR_CPUS | 222 | config NR_CPUS |
| 223 | int "Maximum number of CPUs (2-512)" | 223 | int "Maximum number of CPUs (2-1024)" |
| 224 | range 2 512 | 224 | range 2 1024 |
| 225 | depends on SMP | 225 | depends on SMP |
| 226 | default "64" | 226 | default "64" |
| 227 | help | 227 | help |
diff --git a/arch/ia64/configs/bigsur_defconfig b/arch/ia64/configs/bigsur_defconfig index 3b65cbb31b1d..b40672bb3ab0 100644 --- a/arch/ia64/configs/bigsur_defconfig +++ b/arch/ia64/configs/bigsur_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.10-rc2 | 3 | # Linux kernel version: 2.6.14-rc1 |
| 4 | # Mon Nov 29 13:27:48 2004 | 4 | # Wed Sep 14 15:18:49 2005 |
| 5 | # | 5 | # |
| 6 | 6 | ||
| 7 | # | 7 | # |
| @@ -10,34 +10,40 @@ | |||
| 10 | CONFIG_EXPERIMENTAL=y | 10 | CONFIG_EXPERIMENTAL=y |
| 11 | CONFIG_CLEAN_COMPILE=y | 11 | CONFIG_CLEAN_COMPILE=y |
| 12 | CONFIG_LOCK_KERNEL=y | 12 | CONFIG_LOCK_KERNEL=y |
| 13 | CONFIG_INIT_ENV_ARG_LIMIT=32 | ||
| 13 | 14 | ||
| 14 | # | 15 | # |
| 15 | # General setup | 16 | # General setup |
| 16 | # | 17 | # |
| 17 | CONFIG_LOCALVERSION="" | 18 | CONFIG_LOCALVERSION="" |
| 19 | CONFIG_LOCALVERSION_AUTO=y | ||
| 18 | CONFIG_SWAP=y | 20 | CONFIG_SWAP=y |
| 19 | CONFIG_SYSVIPC=y | 21 | CONFIG_SYSVIPC=y |
| 20 | CONFIG_POSIX_MQUEUE=y | 22 | CONFIG_POSIX_MQUEUE=y |
| 21 | # CONFIG_BSD_PROCESS_ACCT is not set | 23 | # CONFIG_BSD_PROCESS_ACCT is not set |
| 22 | CONFIG_SYSCTL=y | 24 | CONFIG_SYSCTL=y |
| 23 | # CONFIG_AUDIT is not set | 25 | # CONFIG_AUDIT is not set |
| 24 | CONFIG_LOG_BUF_SHIFT=16 | ||
| 25 | CONFIG_HOTPLUG=y | 26 | CONFIG_HOTPLUG=y |
| 26 | CONFIG_KOBJECT_UEVENT=y | 27 | CONFIG_KOBJECT_UEVENT=y |
| 27 | # CONFIG_IKCONFIG is not set | 28 | # CONFIG_IKCONFIG is not set |
| 29 | # CONFIG_CPUSETS is not set | ||
| 30 | CONFIG_INITRAMFS_SOURCE="" | ||
| 28 | # CONFIG_EMBEDDED is not set | 31 | # CONFIG_EMBEDDED is not set |
| 29 | CONFIG_KALLSYMS=y | 32 | CONFIG_KALLSYMS=y |
| 30 | # CONFIG_KALLSYMS_ALL is not set | 33 | # CONFIG_KALLSYMS_ALL is not set |
| 31 | # CONFIG_KALLSYMS_EXTRA_PASS is not set | 34 | # CONFIG_KALLSYMS_EXTRA_PASS is not set |
| 35 | CONFIG_PRINTK=y | ||
| 36 | CONFIG_BUG=y | ||
| 37 | CONFIG_BASE_FULL=y | ||
| 32 | CONFIG_FUTEX=y | 38 | CONFIG_FUTEX=y |
| 33 | CONFIG_EPOLL=y | 39 | CONFIG_EPOLL=y |
| 34 | # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set | ||
| 35 | CONFIG_SHMEM=y | 40 | CONFIG_SHMEM=y |
| 36 | CONFIG_CC_ALIGN_FUNCTIONS=0 | 41 | CONFIG_CC_ALIGN_FUNCTIONS=0 |
| 37 | CONFIG_CC_ALIGN_LABELS=0 | 42 | CONFIG_CC_ALIGN_LABELS=0 |
| 38 | CONFIG_CC_ALIGN_LOOPS=0 | 43 | CONFIG_CC_ALIGN_LOOPS=0 |
| 39 | CONFIG_CC_ALIGN_JUMPS=0 | 44 | CONFIG_CC_ALIGN_JUMPS=0 |
| 40 | # CONFIG_TINY_SHMEM is not set | 45 | # CONFIG_TINY_SHMEM is not set |
| 46 | CONFIG_BASE_SMALL=0 | ||
| 41 | 47 | ||
| 42 | # | 48 | # |
| 43 | # Loadable module support | 49 | # Loadable module support |
| @@ -58,12 +64,15 @@ CONFIG_IA64=y | |||
| 58 | CONFIG_64BIT=y | 64 | CONFIG_64BIT=y |
| 59 | CONFIG_MMU=y | 65 | CONFIG_MMU=y |
| 60 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 66 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 67 | CONFIG_GENERIC_CALIBRATE_DELAY=y | ||
| 61 | CONFIG_TIME_INTERPOLATION=y | 68 | CONFIG_TIME_INTERPOLATION=y |
| 62 | CONFIG_EFI=y | 69 | CONFIG_EFI=y |
| 63 | CONFIG_GENERIC_IOMAP=y | 70 | CONFIG_GENERIC_IOMAP=y |
| 71 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | ||
| 64 | # CONFIG_IA64_GENERIC is not set | 72 | # CONFIG_IA64_GENERIC is not set |
| 65 | CONFIG_IA64_DIG=y | 73 | CONFIG_IA64_DIG=y |
| 66 | # CONFIG_IA64_HP_ZX1 is not set | 74 | # CONFIG_IA64_HP_ZX1 is not set |
| 75 | # CONFIG_IA64_HP_ZX1_SWIOTLB is not set | ||
| 67 | # CONFIG_IA64_SGI_SN2 is not set | 76 | # CONFIG_IA64_SGI_SN2 is not set |
| 68 | # CONFIG_IA64_HP_SIM is not set | 77 | # CONFIG_IA64_HP_SIM is not set |
| 69 | CONFIG_ITANIUM=y | 78 | CONFIG_ITANIUM=y |
| @@ -72,17 +81,30 @@ CONFIG_ITANIUM=y | |||
| 72 | # CONFIG_IA64_PAGE_SIZE_8KB is not set | 81 | # CONFIG_IA64_PAGE_SIZE_8KB is not set |
| 73 | CONFIG_IA64_PAGE_SIZE_16KB=y | 82 | CONFIG_IA64_PAGE_SIZE_16KB=y |
| 74 | # CONFIG_IA64_PAGE_SIZE_64KB is not set | 83 | # CONFIG_IA64_PAGE_SIZE_64KB is not set |
| 84 | # CONFIG_HZ_100 is not set | ||
| 85 | CONFIG_HZ_250=y | ||
| 86 | # CONFIG_HZ_1000 is not set | ||
| 87 | CONFIG_HZ=250 | ||
| 75 | CONFIG_IA64_BRL_EMU=y | 88 | CONFIG_IA64_BRL_EMU=y |
| 76 | CONFIG_IA64_L1_CACHE_SHIFT=6 | 89 | CONFIG_IA64_L1_CACHE_SHIFT=6 |
| 77 | # CONFIG_NUMA is not set | 90 | # CONFIG_NUMA is not set |
| 78 | # CONFIG_VIRTUAL_MEM_MAP is not set | 91 | # CONFIG_VIRTUAL_MEM_MAP is not set |
| 79 | # CONFIG_IA64_CYCLONE is not set | 92 | # CONFIG_IA64_CYCLONE is not set |
| 80 | CONFIG_IOSAPIC=y | 93 | CONFIG_IOSAPIC=y |
| 94 | # CONFIG_IA64_SGI_SN_XP is not set | ||
| 81 | CONFIG_FORCE_MAX_ZONEORDER=18 | 95 | CONFIG_FORCE_MAX_ZONEORDER=18 |
| 82 | CONFIG_SMP=y | 96 | CONFIG_SMP=y |
| 83 | CONFIG_NR_CPUS=2 | 97 | CONFIG_NR_CPUS=2 |
| 84 | # CONFIG_HOTPLUG_CPU is not set | 98 | # CONFIG_HOTPLUG_CPU is not set |
| 99 | # CONFIG_SCHED_SMT is not set | ||
| 85 | CONFIG_PREEMPT=y | 100 | CONFIG_PREEMPT=y |
| 101 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 102 | CONFIG_FLATMEM_MANUAL=y | ||
| 103 | # CONFIG_DISCONTIGMEM_MANUAL is not set | ||
| 104 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 105 | CONFIG_FLATMEM=y | ||
| 106 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 107 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 86 | CONFIG_HAVE_DEC_LOCK=y | 108 | CONFIG_HAVE_DEC_LOCK=y |
| 87 | CONFIG_IA32_SUPPORT=y | 109 | CONFIG_IA32_SUPPORT=y |
| 88 | CONFIG_COMPAT=y | 110 | CONFIG_COMPAT=y |
| @@ -95,6 +117,7 @@ CONFIG_IA64_PALINFO=y | |||
| 95 | # | 117 | # |
| 96 | CONFIG_EFI_VARS=y | 118 | CONFIG_EFI_VARS=y |
| 97 | CONFIG_EFI_PCDP=y | 119 | CONFIG_EFI_PCDP=y |
| 120 | # CONFIG_DELL_RBU is not set | ||
| 98 | CONFIG_BINFMT_ELF=y | 121 | CONFIG_BINFMT_ELF=y |
| 99 | CONFIG_BINFMT_MISC=m | 122 | CONFIG_BINFMT_MISC=m |
| 100 | 123 | ||
| @@ -102,18 +125,26 @@ CONFIG_BINFMT_MISC=m | |||
| 102 | # Power management and ACPI | 125 | # Power management and ACPI |
| 103 | # | 126 | # |
| 104 | CONFIG_PM=y | 127 | CONFIG_PM=y |
| 105 | CONFIG_ACPI=y | 128 | # CONFIG_PM_DEBUG is not set |
| 106 | 129 | ||
| 107 | # | 130 | # |
| 108 | # ACPI (Advanced Configuration and Power Interface) Support | 131 | # ACPI (Advanced Configuration and Power Interface) Support |
| 109 | # | 132 | # |
| 133 | CONFIG_ACPI=y | ||
| 110 | CONFIG_ACPI_BUTTON=m | 134 | CONFIG_ACPI_BUTTON=m |
| 111 | CONFIG_ACPI_FAN=m | 135 | CONFIG_ACPI_FAN=m |
| 112 | CONFIG_ACPI_PROCESSOR=m | 136 | CONFIG_ACPI_PROCESSOR=m |
| 113 | CONFIG_ACPI_THERMAL=m | 137 | CONFIG_ACPI_THERMAL=m |
| 138 | CONFIG_ACPI_BLACKLIST_YEAR=0 | ||
| 114 | # CONFIG_ACPI_DEBUG is not set | 139 | # CONFIG_ACPI_DEBUG is not set |
| 115 | CONFIG_ACPI_POWER=y | 140 | CONFIG_ACPI_POWER=y |
| 116 | CONFIG_ACPI_SYSTEM=y | 141 | CONFIG_ACPI_SYSTEM=y |
| 142 | # CONFIG_ACPI_CONTAINER is not set | ||
| 143 | |||
| 144 | # | ||
| 145 | # CPU Frequency scaling | ||
| 146 | # | ||
| 147 | # CONFIG_CPU_FREQ is not set | ||
| 117 | 148 | ||
| 118 | # | 149 | # |
| 119 | # Bus options (PCI, PCMCIA) | 150 | # Bus options (PCI, PCMCIA) |
| @@ -122,7 +153,7 @@ CONFIG_PCI=y | |||
| 122 | CONFIG_PCI_DOMAINS=y | 153 | CONFIG_PCI_DOMAINS=y |
| 123 | # CONFIG_PCI_MSI is not set | 154 | # CONFIG_PCI_MSI is not set |
| 124 | CONFIG_PCI_LEGACY_PROC=y | 155 | CONFIG_PCI_LEGACY_PROC=y |
| 125 | CONFIG_PCI_NAMES=y | 156 | # CONFIG_PCI_DEBUG is not set |
| 126 | 157 | ||
| 127 | # | 158 | # |
| 128 | # PCI Hotplug Support | 159 | # PCI Hotplug Support |
| @@ -135,8 +166,70 @@ CONFIG_PCI_NAMES=y | |||
| 135 | # CONFIG_PCCARD is not set | 166 | # CONFIG_PCCARD is not set |
| 136 | 167 | ||
| 137 | # | 168 | # |
| 138 | # PC-card bridges | 169 | # Networking |
| 170 | # | ||
| 171 | CONFIG_NET=y | ||
| 172 | |||
| 173 | # | ||
| 174 | # Networking options | ||
| 175 | # | ||
| 176 | CONFIG_PACKET=y | ||
| 177 | CONFIG_PACKET_MMAP=y | ||
| 178 | CONFIG_UNIX=y | ||
| 179 | # CONFIG_NET_KEY is not set | ||
| 180 | CONFIG_INET=y | ||
| 181 | # CONFIG_IP_MULTICAST is not set | ||
| 182 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 183 | CONFIG_IP_FIB_HASH=y | ||
| 184 | # CONFIG_IP_PNP is not set | ||
| 185 | # CONFIG_NET_IPIP is not set | ||
| 186 | # CONFIG_NET_IPGRE is not set | ||
| 187 | # CONFIG_ARPD is not set | ||
| 188 | # CONFIG_SYN_COOKIES is not set | ||
| 189 | # CONFIG_INET_AH is not set | ||
| 190 | # CONFIG_INET_ESP is not set | ||
| 191 | # CONFIG_INET_IPCOMP is not set | ||
| 192 | # CONFIG_INET_TUNNEL is not set | ||
| 193 | CONFIG_INET_DIAG=y | ||
| 194 | CONFIG_INET_TCP_DIAG=y | ||
| 195 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 196 | CONFIG_TCP_CONG_BIC=y | ||
| 197 | # CONFIG_IPV6 is not set | ||
| 198 | # CONFIG_NETFILTER is not set | ||
| 199 | |||
| 200 | # | ||
| 201 | # DCCP Configuration (EXPERIMENTAL) | ||
| 202 | # | ||
| 203 | # CONFIG_IP_DCCP is not set | ||
| 204 | |||
| 205 | # | ||
| 206 | # SCTP Configuration (EXPERIMENTAL) | ||
| 207 | # | ||
| 208 | # CONFIG_IP_SCTP is not set | ||
| 209 | # CONFIG_ATM is not set | ||
| 210 | # CONFIG_BRIDGE is not set | ||
| 211 | # CONFIG_VLAN_8021Q is not set | ||
| 212 | # CONFIG_DECNET is not set | ||
| 213 | # CONFIG_LLC2 is not set | ||
| 214 | # CONFIG_IPX is not set | ||
| 215 | # CONFIG_ATALK is not set | ||
| 216 | # CONFIG_X25 is not set | ||
| 217 | # CONFIG_LAPB is not set | ||
| 218 | # CONFIG_NET_DIVERT is not set | ||
| 219 | # CONFIG_ECONET is not set | ||
| 220 | # CONFIG_WAN_ROUTER is not set | ||
| 221 | # CONFIG_NET_SCHED is not set | ||
| 222 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 223 | |||
| 224 | # | ||
| 225 | # Network testing | ||
| 139 | # | 226 | # |
| 227 | # CONFIG_NET_PKTGEN is not set | ||
| 228 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 229 | # CONFIG_HAMRADIO is not set | ||
| 230 | # CONFIG_IRDA is not set | ||
| 231 | # CONFIG_BT is not set | ||
| 232 | # CONFIG_IEEE80211 is not set | ||
| 140 | 233 | ||
| 141 | # | 234 | # |
| 142 | # Device Drivers | 235 | # Device Drivers |
| @@ -151,6 +244,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 151 | # CONFIG_DEBUG_DRIVER is not set | 244 | # CONFIG_DEBUG_DRIVER is not set |
| 152 | 245 | ||
| 153 | # | 246 | # |
| 247 | # Connector - unified userspace <-> kernelspace linker | ||
| 248 | # | ||
| 249 | # CONFIG_CONNECTOR is not set | ||
| 250 | |||
| 251 | # | ||
| 154 | # Memory Technology Devices (MTD) | 252 | # Memory Technology Devices (MTD) |
| 155 | # | 253 | # |
| 156 | # CONFIG_MTD is not set | 254 | # CONFIG_MTD is not set |
| @@ -163,7 +261,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 163 | # | 261 | # |
| 164 | # Plug and Play support | 262 | # Plug and Play support |
| 165 | # | 263 | # |
| 166 | # CONFIG_PNP is not set | 264 | CONFIG_PNP=y |
| 265 | # CONFIG_PNP_DEBUG is not set | ||
| 266 | |||
| 267 | # | ||
| 268 | # Protocols | ||
| 269 | # | ||
| 270 | CONFIG_PNPACPI=y | ||
| 167 | 271 | ||
| 168 | # | 272 | # |
| 169 | # Block devices | 273 | # Block devices |
| @@ -172,14 +276,15 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 172 | # CONFIG_BLK_CPQ_CISS_DA is not set | 276 | # CONFIG_BLK_CPQ_CISS_DA is not set |
| 173 | # CONFIG_BLK_DEV_DAC960 is not set | 277 | # CONFIG_BLK_DEV_DAC960 is not set |
| 174 | # CONFIG_BLK_DEV_UMEM is not set | 278 | # CONFIG_BLK_DEV_UMEM is not set |
| 279 | # CONFIG_BLK_DEV_COW_COMMON is not set | ||
| 175 | CONFIG_BLK_DEV_LOOP=m | 280 | CONFIG_BLK_DEV_LOOP=m |
| 176 | CONFIG_BLK_DEV_CRYPTOLOOP=m | 281 | CONFIG_BLK_DEV_CRYPTOLOOP=m |
| 177 | CONFIG_BLK_DEV_NBD=m | 282 | CONFIG_BLK_DEV_NBD=m |
| 178 | # CONFIG_BLK_DEV_SX8 is not set | 283 | # CONFIG_BLK_DEV_SX8 is not set |
| 179 | # CONFIG_BLK_DEV_UB is not set | 284 | # CONFIG_BLK_DEV_UB is not set |
| 180 | CONFIG_BLK_DEV_RAM=m | 285 | CONFIG_BLK_DEV_RAM=m |
| 286 | CONFIG_BLK_DEV_RAM_COUNT=16 | ||
| 181 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 287 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
| 182 | CONFIG_INITRAMFS_SOURCE="" | ||
| 183 | # CONFIG_CDROM_PKTCDVD is not set | 288 | # CONFIG_CDROM_PKTCDVD is not set |
| 184 | 289 | ||
| 185 | # | 290 | # |
| @@ -189,6 +294,7 @@ CONFIG_IOSCHED_NOOP=y | |||
| 189 | CONFIG_IOSCHED_AS=y | 294 | CONFIG_IOSCHED_AS=y |
| 190 | CONFIG_IOSCHED_DEADLINE=y | 295 | CONFIG_IOSCHED_DEADLINE=y |
| 191 | CONFIG_IOSCHED_CFQ=y | 296 | CONFIG_IOSCHED_CFQ=y |
| 297 | # CONFIG_ATA_OVER_ETH is not set | ||
| 192 | 298 | ||
| 193 | # | 299 | # |
| 194 | # ATA/ATAPI/MFM/RLL support | 300 | # ATA/ATAPI/MFM/RLL support |
| @@ -211,7 +317,8 @@ CONFIG_BLK_DEV_IDEFLOPPY=m | |||
| 211 | # | 317 | # |
| 212 | # IDE chipset support/bugfixes | 318 | # IDE chipset support/bugfixes |
| 213 | # | 319 | # |
| 214 | CONFIG_IDE_GENERIC=m | 320 | # CONFIG_IDE_GENERIC is not set |
| 321 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
| 215 | CONFIG_BLK_DEV_IDEPCI=y | 322 | CONFIG_BLK_DEV_IDEPCI=y |
| 216 | CONFIG_IDEPCI_SHARE_IRQ=y | 323 | CONFIG_IDEPCI_SHARE_IRQ=y |
| 217 | # CONFIG_BLK_DEV_OFFBOARD is not set | 324 | # CONFIG_BLK_DEV_OFFBOARD is not set |
| @@ -233,6 +340,7 @@ CONFIG_IDEDMA_PCI_AUTO=y | |||
| 233 | # CONFIG_BLK_DEV_HPT366 is not set | 340 | # CONFIG_BLK_DEV_HPT366 is not set |
| 234 | # CONFIG_BLK_DEV_SC1200 is not set | 341 | # CONFIG_BLK_DEV_SC1200 is not set |
| 235 | CONFIG_BLK_DEV_PIIX=m | 342 | CONFIG_BLK_DEV_PIIX=m |
| 343 | # CONFIG_BLK_DEV_IT821X is not set | ||
| 236 | # CONFIG_BLK_DEV_NS87415 is not set | 344 | # CONFIG_BLK_DEV_NS87415 is not set |
| 237 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 345 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
| 238 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | 346 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set |
| @@ -250,6 +358,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 250 | # | 358 | # |
| 251 | # SCSI device support | 359 | # SCSI device support |
| 252 | # | 360 | # |
| 361 | # CONFIG_RAID_ATTRS is not set | ||
| 253 | CONFIG_SCSI=y | 362 | CONFIG_SCSI=y |
| 254 | CONFIG_SCSI_PROC_FS=y | 363 | CONFIG_SCSI_PROC_FS=y |
| 255 | 364 | ||
| @@ -261,6 +370,7 @@ CONFIG_BLK_DEV_SD=y | |||
| 261 | # CONFIG_CHR_DEV_OSST is not set | 370 | # CONFIG_CHR_DEV_OSST is not set |
| 262 | # CONFIG_BLK_DEV_SR is not set | 371 | # CONFIG_BLK_DEV_SR is not set |
| 263 | # CONFIG_CHR_DEV_SG is not set | 372 | # CONFIG_CHR_DEV_SG is not set |
| 373 | # CONFIG_CHR_DEV_SCH is not set | ||
| 264 | 374 | ||
| 265 | # | 375 | # |
| 266 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs | 376 | # Some SCSI devices (e.g. CD jukebox) support multiple LUNs |
| @@ -274,6 +384,8 @@ CONFIG_SCSI_LOGGING=y | |||
| 274 | # | 384 | # |
| 275 | CONFIG_SCSI_SPI_ATTRS=m | 385 | CONFIG_SCSI_SPI_ATTRS=m |
| 276 | # CONFIG_SCSI_FC_ATTRS is not set | 386 | # CONFIG_SCSI_FC_ATTRS is not set |
| 387 | # CONFIG_SCSI_ISCSI_ATTRS is not set | ||
| 388 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 277 | 389 | ||
| 278 | # | 390 | # |
| 279 | # SCSI low-level drivers | 391 | # SCSI low-level drivers |
| @@ -288,18 +400,13 @@ CONFIG_SCSI_SPI_ATTRS=m | |||
| 288 | # CONFIG_MEGARAID_NEWGEN is not set | 400 | # CONFIG_MEGARAID_NEWGEN is not set |
| 289 | # CONFIG_MEGARAID_LEGACY is not set | 401 | # CONFIG_MEGARAID_LEGACY is not set |
| 290 | # CONFIG_SCSI_SATA is not set | 402 | # CONFIG_SCSI_SATA is not set |
| 291 | # CONFIG_SCSI_BUSLOGIC is not set | ||
| 292 | # CONFIG_SCSI_DMX3191D is not set | 403 | # CONFIG_SCSI_DMX3191D is not set |
| 293 | # CONFIG_SCSI_EATA is not set | ||
| 294 | # CONFIG_SCSI_EATA_PIO is not set | ||
| 295 | # CONFIG_SCSI_FUTURE_DOMAIN is not set | 404 | # CONFIG_SCSI_FUTURE_DOMAIN is not set |
| 296 | # CONFIG_SCSI_GDTH is not set | ||
| 297 | # CONFIG_SCSI_IPS is not set | 405 | # CONFIG_SCSI_IPS is not set |
| 298 | # CONFIG_SCSI_INITIO is not set | 406 | # CONFIG_SCSI_INITIO is not set |
| 299 | # CONFIG_SCSI_INIA100 is not set | 407 | # CONFIG_SCSI_INIA100 is not set |
| 300 | # CONFIG_SCSI_SYM53C8XX_2 is not set | 408 | # CONFIG_SCSI_SYM53C8XX_2 is not set |
| 301 | # CONFIG_SCSI_IPR is not set | 409 | # CONFIG_SCSI_IPR is not set |
| 302 | # CONFIG_SCSI_QLOGIC_ISP is not set | ||
| 303 | # CONFIG_SCSI_QLOGIC_FC is not set | 410 | # CONFIG_SCSI_QLOGIC_FC is not set |
| 304 | CONFIG_SCSI_QLOGIC_1280=y | 411 | CONFIG_SCSI_QLOGIC_1280=y |
| 305 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 412 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set |
| @@ -309,7 +416,8 @@ CONFIG_SCSI_QLA2XXX=y | |||
| 309 | # CONFIG_SCSI_QLA2300 is not set | 416 | # CONFIG_SCSI_QLA2300 is not set |
| 310 | # CONFIG_SCSI_QLA2322 is not set | 417 | # CONFIG_SCSI_QLA2322 is not set |
| 311 | # CONFIG_SCSI_QLA6312 is not set | 418 | # CONFIG_SCSI_QLA6312 is not set |
| 312 | # CONFIG_SCSI_QLA6322 is not set | 419 | # CONFIG_SCSI_QLA24XX is not set |
| 420 | # CONFIG_SCSI_LPFC is not set | ||
| 313 | # CONFIG_SCSI_DC395x is not set | 421 | # CONFIG_SCSI_DC395x is not set |
| 314 | # CONFIG_SCSI_DC390T is not set | 422 | # CONFIG_SCSI_DC390T is not set |
| 315 | # CONFIG_SCSI_DEBUG is not set | 423 | # CONFIG_SCSI_DEBUG is not set |
| @@ -332,11 +440,14 @@ CONFIG_DM_CRYPT=m | |||
| 332 | CONFIG_DM_SNAPSHOT=m | 440 | CONFIG_DM_SNAPSHOT=m |
| 333 | CONFIG_DM_MIRROR=m | 441 | CONFIG_DM_MIRROR=m |
| 334 | CONFIG_DM_ZERO=m | 442 | CONFIG_DM_ZERO=m |
| 443 | # CONFIG_DM_MULTIPATH is not set | ||
| 335 | 444 | ||
| 336 | # | 445 | # |
| 337 | # Fusion MPT device support | 446 | # Fusion MPT device support |
| 338 | # | 447 | # |
| 339 | # CONFIG_FUSION is not set | 448 | # CONFIG_FUSION is not set |
| 449 | # CONFIG_FUSION_SPI is not set | ||
| 450 | # CONFIG_FUSION_FC is not set | ||
| 340 | 451 | ||
| 341 | # | 452 | # |
| 342 | # IEEE 1394 (FireWire) support | 453 | # IEEE 1394 (FireWire) support |
| @@ -349,72 +460,14 @@ CONFIG_DM_ZERO=m | |||
| 349 | # CONFIG_I2O is not set | 460 | # CONFIG_I2O is not set |
| 350 | 461 | ||
| 351 | # | 462 | # |
| 352 | # Networking support | 463 | # Network device support |
| 353 | # | 464 | # |
| 354 | CONFIG_NET=y | ||
| 355 | |||
| 356 | # | ||
| 357 | # Networking options | ||
| 358 | # | ||
| 359 | CONFIG_PACKET=y | ||
| 360 | CONFIG_PACKET_MMAP=y | ||
| 361 | # CONFIG_NETLINK_DEV is not set | ||
| 362 | CONFIG_UNIX=y | ||
| 363 | # CONFIG_NET_KEY is not set | ||
| 364 | CONFIG_INET=y | ||
| 365 | # CONFIG_IP_MULTICAST is not set | ||
| 366 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 367 | # CONFIG_IP_PNP is not set | ||
| 368 | # CONFIG_NET_IPIP is not set | ||
| 369 | # CONFIG_NET_IPGRE is not set | ||
| 370 | # CONFIG_ARPD is not set | ||
| 371 | # CONFIG_SYN_COOKIES is not set | ||
| 372 | # CONFIG_INET_AH is not set | ||
| 373 | # CONFIG_INET_ESP is not set | ||
| 374 | # CONFIG_INET_IPCOMP is not set | ||
| 375 | # CONFIG_INET_TUNNEL is not set | ||
| 376 | CONFIG_IP_TCPDIAG=y | ||
| 377 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
| 378 | # CONFIG_IPV6 is not set | ||
| 379 | # CONFIG_NETFILTER is not set | ||
| 380 | |||
| 381 | # | ||
| 382 | # SCTP Configuration (EXPERIMENTAL) | ||
| 383 | # | ||
| 384 | # CONFIG_IP_SCTP is not set | ||
| 385 | # CONFIG_ATM is not set | ||
| 386 | # CONFIG_BRIDGE is not set | ||
| 387 | # CONFIG_VLAN_8021Q is not set | ||
| 388 | # CONFIG_DECNET is not set | ||
| 389 | # CONFIG_LLC2 is not set | ||
| 390 | # CONFIG_IPX is not set | ||
| 391 | # CONFIG_ATALK is not set | ||
| 392 | # CONFIG_X25 is not set | ||
| 393 | # CONFIG_LAPB is not set | ||
| 394 | # CONFIG_NET_DIVERT is not set | ||
| 395 | # CONFIG_ECONET is not set | ||
| 396 | # CONFIG_WAN_ROUTER is not set | ||
| 397 | |||
| 398 | # | ||
| 399 | # QoS and/or fair queueing | ||
| 400 | # | ||
| 401 | # CONFIG_NET_SCHED is not set | ||
| 402 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 403 | |||
| 404 | # | ||
| 405 | # Network testing | ||
| 406 | # | ||
| 407 | # CONFIG_NET_PKTGEN is not set | ||
| 408 | # CONFIG_NETPOLL is not set | ||
| 409 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 410 | # CONFIG_HAMRADIO is not set | ||
| 411 | # CONFIG_IRDA is not set | ||
| 412 | # CONFIG_BT is not set | ||
| 413 | CONFIG_NETDEVICES=y | 465 | CONFIG_NETDEVICES=y |
| 414 | CONFIG_DUMMY=y | 466 | CONFIG_DUMMY=y |
| 415 | # CONFIG_BONDING is not set | 467 | # CONFIG_BONDING is not set |
| 416 | # CONFIG_EQUALIZER is not set | 468 | # CONFIG_EQUALIZER is not set |
| 417 | # CONFIG_TUN is not set | 469 | # CONFIG_TUN is not set |
| 470 | # CONFIG_NET_SB1000 is not set | ||
| 418 | 471 | ||
| 419 | # | 472 | # |
| 420 | # ARCnet devices | 473 | # ARCnet devices |
| @@ -422,6 +475,11 @@ CONFIG_DUMMY=y | |||
| 422 | # CONFIG_ARCNET is not set | 475 | # CONFIG_ARCNET is not set |
| 423 | 476 | ||
| 424 | # | 477 | # |
| 478 | # PHY device support | ||
| 479 | # | ||
| 480 | # CONFIG_PHYLIB is not set | ||
| 481 | |||
| 482 | # | ||
| 425 | # Ethernet (10 or 100Mbit) | 483 | # Ethernet (10 or 100Mbit) |
| 426 | # | 484 | # |
| 427 | CONFIG_NET_ETHERNET=y | 485 | CONFIG_NET_ETHERNET=y |
| @@ -443,7 +501,6 @@ CONFIG_NET_PCI=y | |||
| 443 | # CONFIG_FORCEDETH is not set | 501 | # CONFIG_FORCEDETH is not set |
| 444 | # CONFIG_DGRS is not set | 502 | # CONFIG_DGRS is not set |
| 445 | CONFIG_EEPRO100=y | 503 | CONFIG_EEPRO100=y |
| 446 | # CONFIG_EEPRO100_PIO is not set | ||
| 447 | # CONFIG_E100 is not set | 504 | # CONFIG_E100 is not set |
| 448 | # CONFIG_FEALNX is not set | 505 | # CONFIG_FEALNX is not set |
| 449 | # CONFIG_NATSEMI is not set | 506 | # CONFIG_NATSEMI is not set |
| @@ -465,13 +522,17 @@ CONFIG_EEPRO100=y | |||
| 465 | # CONFIG_HAMACHI is not set | 522 | # CONFIG_HAMACHI is not set |
| 466 | # CONFIG_YELLOWFIN is not set | 523 | # CONFIG_YELLOWFIN is not set |
| 467 | # CONFIG_R8169 is not set | 524 | # CONFIG_R8169 is not set |
| 525 | # CONFIG_SIS190 is not set | ||
| 526 | # CONFIG_SKGE is not set | ||
| 468 | # CONFIG_SK98LIN is not set | 527 | # CONFIG_SK98LIN is not set |
| 469 | # CONFIG_VIA_VELOCITY is not set | 528 | # CONFIG_VIA_VELOCITY is not set |
| 470 | # CONFIG_TIGON3 is not set | 529 | # CONFIG_TIGON3 is not set |
| 530 | # CONFIG_BNX2 is not set | ||
| 471 | 531 | ||
| 472 | # | 532 | # |
| 473 | # Ethernet (10000 Mbit) | 533 | # Ethernet (10000 Mbit) |
| 474 | # | 534 | # |
| 535 | # CONFIG_CHELSIO_T1 is not set | ||
| 475 | # CONFIG_IXGB is not set | 536 | # CONFIG_IXGB is not set |
| 476 | # CONFIG_S2IO is not set | 537 | # CONFIG_S2IO is not set |
| 477 | 538 | ||
| @@ -496,6 +557,8 @@ CONFIG_EEPRO100=y | |||
| 496 | # CONFIG_NET_FC is not set | 557 | # CONFIG_NET_FC is not set |
| 497 | # CONFIG_SHAPER is not set | 558 | # CONFIG_SHAPER is not set |
| 498 | # CONFIG_NETCONSOLE is not set | 559 | # CONFIG_NETCONSOLE is not set |
| 560 | # CONFIG_NETPOLL is not set | ||
| 561 | # CONFIG_NET_POLL_CONTROLLER is not set | ||
| 499 | 562 | ||
| 500 | # | 563 | # |
| 501 | # ISDN subsystem | 564 | # ISDN subsystem |
| @@ -525,18 +588,6 @@ CONFIG_INPUT_EVDEV=y | |||
| 525 | # CONFIG_INPUT_EVBUG is not set | 588 | # CONFIG_INPUT_EVBUG is not set |
| 526 | 589 | ||
| 527 | # | 590 | # |
| 528 | # Input I/O drivers | ||
| 529 | # | ||
| 530 | # CONFIG_GAMEPORT is not set | ||
| 531 | CONFIG_SOUND_GAMEPORT=y | ||
| 532 | CONFIG_SERIO=y | ||
| 533 | CONFIG_SERIO_I8042=y | ||
| 534 | CONFIG_SERIO_SERPORT=y | ||
| 535 | # CONFIG_SERIO_CT82C710 is not set | ||
| 536 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 537 | # CONFIG_SERIO_RAW is not set | ||
| 538 | |||
| 539 | # | ||
| 540 | # Input Device Drivers | 591 | # Input Device Drivers |
| 541 | # | 592 | # |
| 542 | CONFIG_INPUT_KEYBOARD=y | 593 | CONFIG_INPUT_KEYBOARD=y |
| @@ -554,6 +605,17 @@ CONFIG_MOUSE_PS2=y | |||
| 554 | # CONFIG_INPUT_MISC is not set | 605 | # CONFIG_INPUT_MISC is not set |
| 555 | 606 | ||
| 556 | # | 607 | # |
| 608 | # Hardware I/O ports | ||
| 609 | # | ||
| 610 | CONFIG_SERIO=y | ||
| 611 | CONFIG_SERIO_I8042=y | ||
| 612 | CONFIG_SERIO_SERPORT=y | ||
| 613 | # CONFIG_SERIO_PCIPS2 is not set | ||
| 614 | CONFIG_SERIO_LIBPS2=y | ||
| 615 | # CONFIG_SERIO_RAW is not set | ||
| 616 | # CONFIG_GAMEPORT is not set | ||
| 617 | |||
| 618 | # | ||
| 557 | # Character devices | 619 | # Character devices |
| 558 | # | 620 | # |
| 559 | CONFIG_VT=y | 621 | CONFIG_VT=y |
| @@ -571,7 +633,6 @@ CONFIG_SERIAL_8250_NR_UARTS=4 | |||
| 571 | CONFIG_SERIAL_8250_EXTENDED=y | 633 | CONFIG_SERIAL_8250_EXTENDED=y |
| 572 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 634 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
| 573 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | 635 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set |
| 574 | # CONFIG_SERIAL_8250_MULTIPORT is not set | ||
| 575 | # CONFIG_SERIAL_8250_RSA is not set | 636 | # CONFIG_SERIAL_8250_RSA is not set |
| 576 | 637 | ||
| 577 | # | 638 | # |
| @@ -579,6 +640,7 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
| 579 | # | 640 | # |
| 580 | CONFIG_SERIAL_CORE=y | 641 | CONFIG_SERIAL_CORE=y |
| 581 | CONFIG_SERIAL_CORE_CONSOLE=y | 642 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 643 | # CONFIG_SERIAL_JSM is not set | ||
| 582 | CONFIG_UNIX98_PTYS=y | 644 | CONFIG_UNIX98_PTYS=y |
| 583 | CONFIG_LEGACY_PTYS=y | 645 | CONFIG_LEGACY_PTYS=y |
| 584 | CONFIG_LEGACY_PTY_COUNT=256 | 646 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -603,14 +665,22 @@ CONFIG_EFI_RTC=y | |||
| 603 | # | 665 | # |
| 604 | CONFIG_AGP=m | 666 | CONFIG_AGP=m |
| 605 | CONFIG_AGP_I460=m | 667 | CONFIG_AGP_I460=m |
| 606 | CONFIG_DRM=y | 668 | CONFIG_DRM=m |
| 607 | # CONFIG_DRM_TDFX is not set | 669 | # CONFIG_DRM_TDFX is not set |
| 608 | CONFIG_DRM_R128=m | 670 | CONFIG_DRM_R128=m |
| 609 | # CONFIG_DRM_RADEON is not set | 671 | # CONFIG_DRM_RADEON is not set |
| 610 | # CONFIG_DRM_MGA is not set | 672 | # CONFIG_DRM_MGA is not set |
| 611 | # CONFIG_DRM_SIS is not set | 673 | # CONFIG_DRM_SIS is not set |
| 674 | # CONFIG_DRM_VIA is not set | ||
| 675 | # CONFIG_DRM_SAVAGE is not set | ||
| 612 | # CONFIG_RAW_DRIVER is not set | 676 | # CONFIG_RAW_DRIVER is not set |
| 613 | # CONFIG_HPET is not set | 677 | # CONFIG_HPET is not set |
| 678 | # CONFIG_HANGCHECK_TIMER is not set | ||
| 679 | |||
| 680 | # | ||
| 681 | # TPM devices | ||
| 682 | # | ||
| 683 | # CONFIG_TCG_TPM is not set | ||
| 614 | 684 | ||
| 615 | # | 685 | # |
| 616 | # I2C support | 686 | # I2C support |
| @@ -635,7 +705,7 @@ CONFIG_I2C_ALGOBIT=y | |||
| 635 | # CONFIG_I2C_AMD8111 is not set | 705 | # CONFIG_I2C_AMD8111 is not set |
| 636 | # CONFIG_I2C_I801 is not set | 706 | # CONFIG_I2C_I801 is not set |
| 637 | # CONFIG_I2C_I810 is not set | 707 | # CONFIG_I2C_I810 is not set |
| 638 | # CONFIG_I2C_ISA is not set | 708 | # CONFIG_I2C_PIIX4 is not set |
| 639 | # CONFIG_I2C_NFORCE2 is not set | 709 | # CONFIG_I2C_NFORCE2 is not set |
| 640 | # CONFIG_I2C_PARPORT_LIGHT is not set | 710 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 641 | # CONFIG_I2C_PROSAVAGE is not set | 711 | # CONFIG_I2C_PROSAVAGE is not set |
| @@ -651,16 +721,43 @@ CONFIG_I2C_ALGOBIT=y | |||
| 651 | # CONFIG_I2C_PCA_ISA is not set | 721 | # CONFIG_I2C_PCA_ISA is not set |
| 652 | 722 | ||
| 653 | # | 723 | # |
| 654 | # Hardware Sensors Chip support | 724 | # Miscellaneous I2C Chip support |
| 655 | # | 725 | # |
| 656 | # CONFIG_I2C_SENSOR is not set | 726 | # CONFIG_SENSORS_DS1337 is not set |
| 727 | # CONFIG_SENSORS_DS1374 is not set | ||
| 728 | # CONFIG_SENSORS_EEPROM is not set | ||
| 729 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 730 | # CONFIG_SENSORS_PCA9539 is not set | ||
| 731 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 732 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 733 | # CONFIG_SENSORS_MAX6875 is not set | ||
| 734 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 735 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 736 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 737 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 738 | |||
| 739 | # | ||
| 740 | # Dallas's 1-wire bus | ||
| 741 | # | ||
| 742 | # CONFIG_W1 is not set | ||
| 743 | |||
| 744 | # | ||
| 745 | # Hardware Monitoring support | ||
| 746 | # | ||
| 747 | CONFIG_HWMON=y | ||
| 748 | # CONFIG_HWMON_VID is not set | ||
| 657 | # CONFIG_SENSORS_ADM1021 is not set | 749 | # CONFIG_SENSORS_ADM1021 is not set |
| 658 | # CONFIG_SENSORS_ADM1025 is not set | 750 | # CONFIG_SENSORS_ADM1025 is not set |
| 751 | # CONFIG_SENSORS_ADM1026 is not set | ||
| 659 | # CONFIG_SENSORS_ADM1031 is not set | 752 | # CONFIG_SENSORS_ADM1031 is not set |
| 753 | # CONFIG_SENSORS_ADM9240 is not set | ||
| 660 | # CONFIG_SENSORS_ASB100 is not set | 754 | # CONFIG_SENSORS_ASB100 is not set |
| 755 | # CONFIG_SENSORS_ATXP1 is not set | ||
| 661 | # CONFIG_SENSORS_DS1621 is not set | 756 | # CONFIG_SENSORS_DS1621 is not set |
| 662 | # CONFIG_SENSORS_FSCHER is not set | 757 | # CONFIG_SENSORS_FSCHER is not set |
| 758 | # CONFIG_SENSORS_FSCPOS is not set | ||
| 663 | # CONFIG_SENSORS_GL518SM is not set | 759 | # CONFIG_SENSORS_GL518SM is not set |
| 760 | # CONFIG_SENSORS_GL520SM is not set | ||
| 664 | # CONFIG_SENSORS_IT87 is not set | 761 | # CONFIG_SENSORS_IT87 is not set |
| 665 | # CONFIG_SENSORS_LM63 is not set | 762 | # CONFIG_SENSORS_LM63 is not set |
| 666 | # CONFIG_SENSORS_LM75 is not set | 763 | # CONFIG_SENSORS_LM75 is not set |
| @@ -671,33 +768,26 @@ CONFIG_I2C_ALGOBIT=y | |||
| 671 | # CONFIG_SENSORS_LM85 is not set | 768 | # CONFIG_SENSORS_LM85 is not set |
| 672 | # CONFIG_SENSORS_LM87 is not set | 769 | # CONFIG_SENSORS_LM87 is not set |
| 673 | # CONFIG_SENSORS_LM90 is not set | 770 | # CONFIG_SENSORS_LM90 is not set |
| 771 | # CONFIG_SENSORS_LM92 is not set | ||
| 674 | # CONFIG_SENSORS_MAX1619 is not set | 772 | # CONFIG_SENSORS_MAX1619 is not set |
| 675 | # CONFIG_SENSORS_PC87360 is not set | 773 | # CONFIG_SENSORS_PC87360 is not set |
| 774 | # CONFIG_SENSORS_SIS5595 is not set | ||
| 676 | # CONFIG_SENSORS_SMSC47M1 is not set | 775 | # CONFIG_SENSORS_SMSC47M1 is not set |
| 776 | # CONFIG_SENSORS_SMSC47B397 is not set | ||
| 677 | # CONFIG_SENSORS_VIA686A is not set | 777 | # CONFIG_SENSORS_VIA686A is not set |
| 678 | # CONFIG_SENSORS_W83781D is not set | 778 | # CONFIG_SENSORS_W83781D is not set |
| 779 | # CONFIG_SENSORS_W83792D is not set | ||
| 679 | # CONFIG_SENSORS_W83L785TS is not set | 780 | # CONFIG_SENSORS_W83L785TS is not set |
| 680 | # CONFIG_SENSORS_W83627HF is not set | 781 | # CONFIG_SENSORS_W83627HF is not set |
| 782 | # CONFIG_SENSORS_W83627EHF is not set | ||
| 783 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 681 | 784 | ||
| 682 | # | 785 | # |
| 683 | # Other I2C Chip support | 786 | # Misc devices |
| 684 | # | ||
| 685 | # CONFIG_SENSORS_EEPROM is not set | ||
| 686 | # CONFIG_SENSORS_PCF8574 is not set | ||
| 687 | # CONFIG_SENSORS_PCF8591 is not set | ||
| 688 | # CONFIG_SENSORS_RTC8564 is not set | ||
| 689 | # CONFIG_I2C_DEBUG_CORE is not set | ||
| 690 | # CONFIG_I2C_DEBUG_ALGO is not set | ||
| 691 | # CONFIG_I2C_DEBUG_BUS is not set | ||
| 692 | # CONFIG_I2C_DEBUG_CHIP is not set | ||
| 693 | |||
| 694 | # | ||
| 695 | # Dallas's 1-wire bus | ||
| 696 | # | 787 | # |
| 697 | # CONFIG_W1 is not set | ||
| 698 | 788 | ||
| 699 | # | 789 | # |
| 700 | # Misc devices | 790 | # Multimedia Capabilities Port drivers |
| 701 | # | 791 | # |
| 702 | 792 | ||
| 703 | # | 793 | # |
| @@ -752,11 +842,12 @@ CONFIG_SND_OPL3_LIB=m | |||
| 752 | # CONFIG_SND_MTPAV is not set | 842 | # CONFIG_SND_MTPAV is not set |
| 753 | # CONFIG_SND_SERIAL_U16550 is not set | 843 | # CONFIG_SND_SERIAL_U16550 is not set |
| 754 | # CONFIG_SND_MPU401 is not set | 844 | # CONFIG_SND_MPU401 is not set |
| 845 | CONFIG_SND_AC97_CODEC=m | ||
| 846 | CONFIG_SND_AC97_BUS=m | ||
| 755 | 847 | ||
| 756 | # | 848 | # |
| 757 | # PCI devices | 849 | # PCI devices |
| 758 | # | 850 | # |
| 759 | CONFIG_SND_AC97_CODEC=m | ||
| 760 | # CONFIG_SND_ALI5451 is not set | 851 | # CONFIG_SND_ALI5451 is not set |
| 761 | # CONFIG_SND_ATIIXP is not set | 852 | # CONFIG_SND_ATIIXP is not set |
| 762 | # CONFIG_SND_ATIIXP_MODEM is not set | 853 | # CONFIG_SND_ATIIXP_MODEM is not set |
| @@ -768,6 +859,8 @@ CONFIG_SND_AC97_CODEC=m | |||
| 768 | # CONFIG_SND_CS46XX is not set | 859 | # CONFIG_SND_CS46XX is not set |
| 769 | CONFIG_SND_CS4281=m | 860 | CONFIG_SND_CS4281=m |
| 770 | # CONFIG_SND_EMU10K1 is not set | 861 | # CONFIG_SND_EMU10K1 is not set |
| 862 | # CONFIG_SND_EMU10K1X is not set | ||
| 863 | # CONFIG_SND_CA0106 is not set | ||
| 771 | # CONFIG_SND_KORG1212 is not set | 864 | # CONFIG_SND_KORG1212 is not set |
| 772 | # CONFIG_SND_MIXART is not set | 865 | # CONFIG_SND_MIXART is not set |
| 773 | # CONFIG_SND_NM256 is not set | 866 | # CONFIG_SND_NM256 is not set |
| @@ -775,9 +868,10 @@ CONFIG_SND_CS4281=m | |||
| 775 | # CONFIG_SND_RME96 is not set | 868 | # CONFIG_SND_RME96 is not set |
| 776 | # CONFIG_SND_RME9652 is not set | 869 | # CONFIG_SND_RME9652 is not set |
| 777 | # CONFIG_SND_HDSP is not set | 870 | # CONFIG_SND_HDSP is not set |
| 871 | # CONFIG_SND_HDSPM is not set | ||
| 778 | # CONFIG_SND_TRIDENT is not set | 872 | # CONFIG_SND_TRIDENT is not set |
| 779 | # CONFIG_SND_YMFPCI is not set | 873 | # CONFIG_SND_YMFPCI is not set |
| 780 | # CONFIG_SND_ALS4000 is not set | 874 | # CONFIG_SND_AD1889 is not set |
| 781 | # CONFIG_SND_CMIPCI is not set | 875 | # CONFIG_SND_CMIPCI is not set |
| 782 | # CONFIG_SND_ENS1370 is not set | 876 | # CONFIG_SND_ENS1370 is not set |
| 783 | # CONFIG_SND_ENS1371 is not set | 877 | # CONFIG_SND_ENS1371 is not set |
| @@ -791,13 +885,14 @@ CONFIG_SND_CS4281=m | |||
| 791 | # CONFIG_SND_INTEL8X0M is not set | 885 | # CONFIG_SND_INTEL8X0M is not set |
| 792 | # CONFIG_SND_SONICVIBES is not set | 886 | # CONFIG_SND_SONICVIBES is not set |
| 793 | # CONFIG_SND_VIA82XX is not set | 887 | # CONFIG_SND_VIA82XX is not set |
| 888 | # CONFIG_SND_VIA82XX_MODEM is not set | ||
| 794 | # CONFIG_SND_VX222 is not set | 889 | # CONFIG_SND_VX222 is not set |
| 890 | # CONFIG_SND_HDA_INTEL is not set | ||
| 795 | 891 | ||
| 796 | # | 892 | # |
| 797 | # USB devices | 893 | # USB devices |
| 798 | # | 894 | # |
| 799 | # CONFIG_SND_USB_AUDIO is not set | 895 | # CONFIG_SND_USB_AUDIO is not set |
| 800 | # CONFIG_SND_USB_USX2Y is not set | ||
| 801 | 896 | ||
| 802 | # | 897 | # |
| 803 | # Open Sound System | 898 | # Open Sound System |
| @@ -807,6 +902,8 @@ CONFIG_SND_CS4281=m | |||
| 807 | # | 902 | # |
| 808 | # USB support | 903 | # USB support |
| 809 | # | 904 | # |
| 905 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 906 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 810 | CONFIG_USB=m | 907 | CONFIG_USB=m |
| 811 | # CONFIG_USB_DEBUG is not set | 908 | # CONFIG_USB_DEBUG is not set |
| 812 | 909 | ||
| @@ -818,35 +915,38 @@ CONFIG_USB_DEVICEFS=y | |||
| 818 | # CONFIG_USB_DYNAMIC_MINORS is not set | 915 | # CONFIG_USB_DYNAMIC_MINORS is not set |
| 819 | # CONFIG_USB_SUSPEND is not set | 916 | # CONFIG_USB_SUSPEND is not set |
| 820 | # CONFIG_USB_OTG is not set | 917 | # CONFIG_USB_OTG is not set |
| 821 | CONFIG_USB_ARCH_HAS_HCD=y | ||
| 822 | CONFIG_USB_ARCH_HAS_OHCI=y | ||
| 823 | 918 | ||
| 824 | # | 919 | # |
| 825 | # USB Host Controller Drivers | 920 | # USB Host Controller Drivers |
| 826 | # | 921 | # |
| 827 | # CONFIG_USB_EHCI_HCD is not set | 922 | # CONFIG_USB_EHCI_HCD is not set |
| 923 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 828 | # CONFIG_USB_OHCI_HCD is not set | 924 | # CONFIG_USB_OHCI_HCD is not set |
| 829 | CONFIG_USB_UHCI_HCD=m | 925 | CONFIG_USB_UHCI_HCD=m |
| 926 | # CONFIG_USB_SL811_HCD is not set | ||
| 830 | 927 | ||
| 831 | # | 928 | # |
| 832 | # USB Device Class drivers | 929 | # USB Device Class drivers |
| 833 | # | 930 | # |
| 834 | CONFIG_USB_AUDIO=m | 931 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
| 835 | CONFIG_USB_BLUETOOTH_TTY=m | 932 | CONFIG_USB_BLUETOOTH_TTY=m |
| 836 | CONFIG_USB_MIDI=m | ||
| 837 | CONFIG_USB_ACM=m | 933 | CONFIG_USB_ACM=m |
| 838 | CONFIG_USB_PRINTER=m | 934 | CONFIG_USB_PRINTER=m |
| 935 | |||
| 936 | # | ||
| 937 | # NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information | ||
| 938 | # | ||
| 839 | CONFIG_USB_STORAGE=m | 939 | CONFIG_USB_STORAGE=m |
| 840 | # CONFIG_USB_STORAGE_DEBUG is not set | 940 | # CONFIG_USB_STORAGE_DEBUG is not set |
| 841 | # CONFIG_USB_STORAGE_RW_DETECT is not set | ||
| 842 | # CONFIG_USB_STORAGE_DATAFAB is not set | 941 | # CONFIG_USB_STORAGE_DATAFAB is not set |
| 843 | # CONFIG_USB_STORAGE_FREECOM is not set | 942 | # CONFIG_USB_STORAGE_FREECOM is not set |
| 844 | # CONFIG_USB_STORAGE_ISD200 is not set | 943 | # CONFIG_USB_STORAGE_ISD200 is not set |
| 845 | # CONFIG_USB_STORAGE_DPCM is not set | 944 | # CONFIG_USB_STORAGE_DPCM is not set |
| 846 | # CONFIG_USB_STORAGE_HP8200e is not set | 945 | # CONFIG_USB_STORAGE_USBAT is not set |
| 847 | # CONFIG_USB_STORAGE_SDDR09 is not set | 946 | # CONFIG_USB_STORAGE_SDDR09 is not set |
| 848 | # CONFIG_USB_STORAGE_SDDR55 is not set | 947 | # CONFIG_USB_STORAGE_SDDR55 is not set |
| 849 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 948 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
| 949 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 850 | 950 | ||
| 851 | # | 951 | # |
| 852 | # USB Input Devices | 952 | # USB Input Devices |
| @@ -863,19 +963,23 @@ CONFIG_USB_HIDDEV=y | |||
| 863 | # CONFIG_USB_MOUSE is not set | 963 | # CONFIG_USB_MOUSE is not set |
| 864 | # CONFIG_USB_AIPTEK is not set | 964 | # CONFIG_USB_AIPTEK is not set |
| 865 | # CONFIG_USB_WACOM is not set | 965 | # CONFIG_USB_WACOM is not set |
| 966 | # CONFIG_USB_ACECAD is not set | ||
| 866 | # CONFIG_USB_KBTAB is not set | 967 | # CONFIG_USB_KBTAB is not set |
| 867 | # CONFIG_USB_POWERMATE is not set | 968 | # CONFIG_USB_POWERMATE is not set |
| 868 | # CONFIG_USB_MTOUCH is not set | 969 | # CONFIG_USB_MTOUCH is not set |
| 970 | # CONFIG_USB_ITMTOUCH is not set | ||
| 869 | # CONFIG_USB_EGALAX is not set | 971 | # CONFIG_USB_EGALAX is not set |
| 972 | # CONFIG_USB_YEALINK is not set | ||
| 870 | # CONFIG_USB_XPAD is not set | 973 | # CONFIG_USB_XPAD is not set |
| 871 | # CONFIG_USB_ATI_REMOTE is not set | 974 | # CONFIG_USB_ATI_REMOTE is not set |
| 975 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 976 | # CONFIG_USB_APPLETOUCH is not set | ||
| 872 | 977 | ||
| 873 | # | 978 | # |
| 874 | # USB Imaging devices | 979 | # USB Imaging devices |
| 875 | # | 980 | # |
| 876 | # CONFIG_USB_MDC800 is not set | 981 | # CONFIG_USB_MDC800 is not set |
| 877 | # CONFIG_USB_MICROTEK is not set | 982 | # CONFIG_USB_MICROTEK is not set |
| 878 | # CONFIG_USB_HPUSBSCSI is not set | ||
| 879 | 983 | ||
| 880 | # | 984 | # |
| 881 | # USB Multimedia devices | 985 | # USB Multimedia devices |
| @@ -894,6 +998,7 @@ CONFIG_USB_HIDDEV=y | |||
| 894 | # CONFIG_USB_PEGASUS is not set | 998 | # CONFIG_USB_PEGASUS is not set |
| 895 | # CONFIG_USB_RTL8150 is not set | 999 | # CONFIG_USB_RTL8150 is not set |
| 896 | # CONFIG_USB_USBNET is not set | 1000 | # CONFIG_USB_USBNET is not set |
| 1001 | CONFIG_USB_MON=y | ||
| 897 | 1002 | ||
| 898 | # | 1003 | # |
| 899 | # USB port drivers | 1004 | # USB port drivers |
| @@ -909,7 +1014,6 @@ CONFIG_USB_HIDDEV=y | |||
| 909 | # | 1014 | # |
| 910 | # CONFIG_USB_EMI62 is not set | 1015 | # CONFIG_USB_EMI62 is not set |
| 911 | # CONFIG_USB_EMI26 is not set | 1016 | # CONFIG_USB_EMI26 is not set |
| 912 | # CONFIG_USB_TIGL is not set | ||
| 913 | # CONFIG_USB_AUERSWALD is not set | 1017 | # CONFIG_USB_AUERSWALD is not set |
| 914 | # CONFIG_USB_RIO500 is not set | 1018 | # CONFIG_USB_RIO500 is not set |
| 915 | # CONFIG_USB_LEGOTOWER is not set | 1019 | # CONFIG_USB_LEGOTOWER is not set |
| @@ -918,10 +1022,12 @@ CONFIG_USB_HIDDEV=y | |||
| 918 | # CONFIG_USB_CYTHERM is not set | 1022 | # CONFIG_USB_CYTHERM is not set |
| 919 | # CONFIG_USB_PHIDGETKIT is not set | 1023 | # CONFIG_USB_PHIDGETKIT is not set |
| 920 | # CONFIG_USB_PHIDGETSERVO is not set | 1024 | # CONFIG_USB_PHIDGETSERVO is not set |
| 1025 | # CONFIG_USB_IDMOUSE is not set | ||
| 1026 | # CONFIG_USB_LD is not set | ||
| 921 | # CONFIG_USB_TEST is not set | 1027 | # CONFIG_USB_TEST is not set |
| 922 | 1028 | ||
| 923 | # | 1029 | # |
| 924 | # USB ATM/DSL drivers | 1030 | # USB DSL modem support |
| 925 | # | 1031 | # |
| 926 | 1032 | ||
| 927 | # | 1033 | # |
| @@ -930,10 +1036,25 @@ CONFIG_USB_HIDDEV=y | |||
| 930 | # CONFIG_USB_GADGET is not set | 1036 | # CONFIG_USB_GADGET is not set |
| 931 | 1037 | ||
| 932 | # | 1038 | # |
| 1039 | # MMC/SD Card support | ||
| 1040 | # | ||
| 1041 | # CONFIG_MMC is not set | ||
| 1042 | |||
| 1043 | # | ||
| 1044 | # InfiniBand support | ||
| 1045 | # | ||
| 1046 | # CONFIG_INFINIBAND is not set | ||
| 1047 | |||
| 1048 | # | ||
| 1049 | # SN Devices | ||
| 1050 | # | ||
| 1051 | |||
| 1052 | # | ||
| 933 | # File systems | 1053 | # File systems |
| 934 | # | 1054 | # |
| 935 | CONFIG_EXT2_FS=y | 1055 | CONFIG_EXT2_FS=y |
| 936 | # CONFIG_EXT2_FS_XATTR is not set | 1056 | # CONFIG_EXT2_FS_XATTR is not set |
| 1057 | # CONFIG_EXT2_FS_XIP is not set | ||
| 937 | CONFIG_EXT3_FS=y | 1058 | CONFIG_EXT3_FS=y |
| 938 | CONFIG_EXT3_FS_XATTR=y | 1059 | CONFIG_EXT3_FS_XATTR=y |
| 939 | # CONFIG_EXT3_FS_POSIX_ACL is not set | 1060 | # CONFIG_EXT3_FS_POSIX_ACL is not set |
| @@ -945,17 +1066,20 @@ CONFIG_FS_MBCACHE=y | |||
| 945 | # CONFIG_JFS_FS is not set | 1066 | # CONFIG_JFS_FS is not set |
| 946 | CONFIG_FS_POSIX_ACL=y | 1067 | CONFIG_FS_POSIX_ACL=y |
| 947 | CONFIG_XFS_FS=y | 1068 | CONFIG_XFS_FS=y |
| 948 | # CONFIG_XFS_RT is not set | 1069 | CONFIG_XFS_EXPORT=y |
| 949 | CONFIG_XFS_QUOTA=y | 1070 | CONFIG_XFS_QUOTA=y |
| 950 | CONFIG_XFS_SECURITY=y | 1071 | CONFIG_XFS_SECURITY=y |
| 951 | CONFIG_XFS_POSIX_ACL=y | 1072 | CONFIG_XFS_POSIX_ACL=y |
| 1073 | # CONFIG_XFS_RT is not set | ||
| 952 | # CONFIG_MINIX_FS is not set | 1074 | # CONFIG_MINIX_FS is not set |
| 953 | # CONFIG_ROMFS_FS is not set | 1075 | # CONFIG_ROMFS_FS is not set |
| 1076 | CONFIG_INOTIFY=y | ||
| 954 | # CONFIG_QUOTA is not set | 1077 | # CONFIG_QUOTA is not set |
| 955 | CONFIG_QUOTACTL=y | 1078 | CONFIG_QUOTACTL=y |
| 956 | CONFIG_DNOTIFY=y | 1079 | CONFIG_DNOTIFY=y |
| 957 | CONFIG_AUTOFS_FS=m | 1080 | CONFIG_AUTOFS_FS=m |
| 958 | CONFIG_AUTOFS4_FS=m | 1081 | CONFIG_AUTOFS4_FS=m |
| 1082 | # CONFIG_FUSE_FS is not set | ||
| 959 | 1083 | ||
| 960 | # | 1084 | # |
| 961 | # CD-ROM/DVD Filesystems | 1085 | # CD-ROM/DVD Filesystems |
| @@ -982,14 +1106,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 982 | CONFIG_PROC_FS=y | 1106 | CONFIG_PROC_FS=y |
| 983 | CONFIG_PROC_KCORE=y | 1107 | CONFIG_PROC_KCORE=y |
| 984 | CONFIG_SYSFS=y | 1108 | CONFIG_SYSFS=y |
| 985 | # CONFIG_DEVFS_FS is not set | ||
| 986 | CONFIG_DEVPTS_FS_XATTR=y | ||
| 987 | CONFIG_DEVPTS_FS_SECURITY=y | ||
| 988 | CONFIG_TMPFS=y | 1109 | CONFIG_TMPFS=y |
| 989 | # CONFIG_TMPFS_XATTR is not set | ||
| 990 | CONFIG_HUGETLBFS=y | 1110 | CONFIG_HUGETLBFS=y |
| 991 | CONFIG_HUGETLB_PAGE=y | 1111 | CONFIG_HUGETLB_PAGE=y |
| 992 | CONFIG_RAMFS=y | 1112 | CONFIG_RAMFS=y |
| 1113 | # CONFIG_RELAYFS_FS is not set | ||
| 993 | 1114 | ||
| 994 | # | 1115 | # |
| 995 | # Miscellaneous filesystems | 1116 | # Miscellaneous filesystems |
| @@ -1013,15 +1134,18 @@ CONFIG_RAMFS=y | |||
| 1013 | # | 1134 | # |
| 1014 | CONFIG_NFS_FS=m | 1135 | CONFIG_NFS_FS=m |
| 1015 | CONFIG_NFS_V3=y | 1136 | CONFIG_NFS_V3=y |
| 1137 | # CONFIG_NFS_V3_ACL is not set | ||
| 1016 | CONFIG_NFS_V4=y | 1138 | CONFIG_NFS_V4=y |
| 1017 | # CONFIG_NFS_DIRECTIO is not set | 1139 | # CONFIG_NFS_DIRECTIO is not set |
| 1018 | CONFIG_NFSD=m | 1140 | CONFIG_NFSD=m |
| 1019 | CONFIG_NFSD_V3=y | 1141 | CONFIG_NFSD_V3=y |
| 1142 | # CONFIG_NFSD_V3_ACL is not set | ||
| 1020 | CONFIG_NFSD_V4=y | 1143 | CONFIG_NFSD_V4=y |
| 1021 | CONFIG_NFSD_TCP=y | 1144 | CONFIG_NFSD_TCP=y |
| 1022 | CONFIG_LOCKD=m | 1145 | CONFIG_LOCKD=m |
| 1023 | CONFIG_LOCKD_V4=y | 1146 | CONFIG_LOCKD_V4=y |
| 1024 | CONFIG_EXPORTFS=m | 1147 | CONFIG_EXPORTFS=y |
| 1148 | CONFIG_NFS_COMMON=y | ||
| 1025 | CONFIG_SUNRPC=m | 1149 | CONFIG_SUNRPC=m |
| 1026 | CONFIG_SUNRPC_GSS=m | 1150 | CONFIG_SUNRPC_GSS=m |
| 1027 | CONFIG_RPCSEC_GSS_KRB5=m | 1151 | CONFIG_RPCSEC_GSS_KRB5=m |
| @@ -1031,9 +1155,11 @@ CONFIG_CIFS=m | |||
| 1031 | CONFIG_CIFS_STATS=y | 1155 | CONFIG_CIFS_STATS=y |
| 1032 | CONFIG_CIFS_XATTR=y | 1156 | CONFIG_CIFS_XATTR=y |
| 1033 | CONFIG_CIFS_POSIX=y | 1157 | CONFIG_CIFS_POSIX=y |
| 1158 | # CONFIG_CIFS_EXPERIMENTAL is not set | ||
| 1034 | # CONFIG_NCP_FS is not set | 1159 | # CONFIG_NCP_FS is not set |
| 1035 | # CONFIG_CODA_FS is not set | 1160 | # CONFIG_CODA_FS is not set |
| 1036 | # CONFIG_AFS_FS is not set | 1161 | # CONFIG_AFS_FS is not set |
| 1162 | # CONFIG_9P_FS is not set | ||
| 1037 | 1163 | ||
| 1038 | # | 1164 | # |
| 1039 | # Partition Types | 1165 | # Partition Types |
| @@ -1103,8 +1229,12 @@ CONFIG_NLS_UTF8=m | |||
| 1103 | # Library routines | 1229 | # Library routines |
| 1104 | # | 1230 | # |
| 1105 | # CONFIG_CRC_CCITT is not set | 1231 | # CONFIG_CRC_CCITT is not set |
| 1232 | # CONFIG_CRC16 is not set | ||
| 1106 | CONFIG_CRC32=y | 1233 | CONFIG_CRC32=y |
| 1107 | # CONFIG_LIBCRC32C is not set | 1234 | # CONFIG_LIBCRC32C is not set |
| 1235 | CONFIG_GENERIC_HARDIRQS=y | ||
| 1236 | CONFIG_GENERIC_IRQ_PROBE=y | ||
| 1237 | CONFIG_GENERIC_PENDING_IRQ=y | ||
| 1108 | 1238 | ||
| 1109 | # | 1239 | # |
| 1110 | # Profiling support | 1240 | # Profiling support |
| @@ -1115,14 +1245,20 @@ CONFIG_OPROFILE=y | |||
| 1115 | # | 1245 | # |
| 1116 | # Kernel hacking | 1246 | # Kernel hacking |
| 1117 | # | 1247 | # |
| 1248 | # CONFIG_PRINTK_TIME is not set | ||
| 1118 | CONFIG_DEBUG_KERNEL=y | 1249 | CONFIG_DEBUG_KERNEL=y |
| 1119 | CONFIG_MAGIC_SYSRQ=y | 1250 | CONFIG_MAGIC_SYSRQ=y |
| 1251 | CONFIG_LOG_BUF_SHIFT=16 | ||
| 1252 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1120 | # CONFIG_SCHEDSTATS is not set | 1253 | # CONFIG_SCHEDSTATS is not set |
| 1121 | # CONFIG_DEBUG_SLAB is not set | 1254 | # CONFIG_DEBUG_SLAB is not set |
| 1255 | CONFIG_DEBUG_PREEMPT=y | ||
| 1122 | # CONFIG_DEBUG_SPINLOCK is not set | 1256 | # CONFIG_DEBUG_SPINLOCK is not set |
| 1123 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set | 1257 | # CONFIG_DEBUG_SPINLOCK_SLEEP is not set |
| 1124 | # CONFIG_DEBUG_KOBJECT is not set | 1258 | # CONFIG_DEBUG_KOBJECT is not set |
| 1125 | # CONFIG_DEBUG_INFO is not set | 1259 | # CONFIG_DEBUG_INFO is not set |
| 1260 | # CONFIG_DEBUG_FS is not set | ||
| 1261 | # CONFIG_KPROBES is not set | ||
| 1126 | # CONFIG_IA64_GRANULE_16MB is not set | 1262 | # CONFIG_IA64_GRANULE_16MB is not set |
| 1127 | CONFIG_IA64_GRANULE_64MB=y | 1263 | CONFIG_IA64_GRANULE_64MB=y |
| 1128 | # CONFIG_IA64_PRINT_HAZARDS is not set | 1264 | # CONFIG_IA64_PRINT_HAZARDS is not set |
| @@ -1149,6 +1285,7 @@ CONFIG_CRYPTO_MD5=y | |||
| 1149 | # CONFIG_CRYPTO_SHA256 is not set | 1285 | # CONFIG_CRYPTO_SHA256 is not set |
| 1150 | # CONFIG_CRYPTO_SHA512 is not set | 1286 | # CONFIG_CRYPTO_SHA512 is not set |
| 1151 | # CONFIG_CRYPTO_WP512 is not set | 1287 | # CONFIG_CRYPTO_WP512 is not set |
| 1288 | # CONFIG_CRYPTO_TGR192 is not set | ||
| 1152 | CONFIG_CRYPTO_DES=y | 1289 | CONFIG_CRYPTO_DES=y |
| 1153 | # CONFIG_CRYPTO_BLOWFISH is not set | 1290 | # CONFIG_CRYPTO_BLOWFISH is not set |
| 1154 | # CONFIG_CRYPTO_TWOFISH is not set | 1291 | # CONFIG_CRYPTO_TWOFISH is not set |
| @@ -1164,3 +1301,7 @@ CONFIG_CRYPTO_DES=y | |||
| 1164 | # CONFIG_CRYPTO_MICHAEL_MIC is not set | 1301 | # CONFIG_CRYPTO_MICHAEL_MIC is not set |
| 1165 | # CONFIG_CRYPTO_CRC32C is not set | 1302 | # CONFIG_CRYPTO_CRC32C is not set |
| 1166 | # CONFIG_CRYPTO_TEST is not set | 1303 | # CONFIG_CRYPTO_TEST is not set |
| 1304 | |||
| 1305 | # | ||
| 1306 | # Hardware crypto devices | ||
| 1307 | # | ||
diff --git a/arch/ia64/configs/tiger_defconfig b/arch/ia64/configs/tiger_defconfig index d452e18ac494..9bc8bcafc905 100644 --- a/arch/ia64/configs/tiger_defconfig +++ b/arch/ia64/configs/tiger_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.13-rc6-tiger-smp | 3 | # Linux kernel version: 2.6.14-rc1 |
| 4 | # Wed Aug 17 10:19:51 2005 | 4 | # Wed Sep 14 15:17:57 2005 |
| 5 | # | 5 | # |
| 6 | 6 | ||
| 7 | # | 7 | # |
| @@ -16,6 +16,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 16 | # General setup | 16 | # General setup |
| 17 | # | 17 | # |
| 18 | CONFIG_LOCALVERSION="" | 18 | CONFIG_LOCALVERSION="" |
| 19 | CONFIG_LOCALVERSION_AUTO=y | ||
| 19 | CONFIG_SWAP=y | 20 | CONFIG_SWAP=y |
| 20 | CONFIG_SYSVIPC=y | 21 | CONFIG_SYSVIPC=y |
| 21 | CONFIG_POSIX_MQUEUE=y | 22 | CONFIG_POSIX_MQUEUE=y |
| @@ -27,6 +28,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 27 | CONFIG_IKCONFIG=y | 28 | CONFIG_IKCONFIG=y |
| 28 | CONFIG_IKCONFIG_PROC=y | 29 | CONFIG_IKCONFIG_PROC=y |
| 29 | # CONFIG_CPUSETS is not set | 30 | # CONFIG_CPUSETS is not set |
| 31 | CONFIG_INITRAMFS_SOURCE="" | ||
| 30 | # CONFIG_EMBEDDED is not set | 32 | # CONFIG_EMBEDDED is not set |
| 31 | CONFIG_KALLSYMS=y | 33 | CONFIG_KALLSYMS=y |
| 32 | CONFIG_KALLSYMS_ALL=y | 34 | CONFIG_KALLSYMS_ALL=y |
| @@ -103,6 +105,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 103 | # CONFIG_SPARSEMEM_MANUAL is not set | 105 | # CONFIG_SPARSEMEM_MANUAL is not set |
| 104 | CONFIG_FLATMEM=y | 106 | CONFIG_FLATMEM=y |
| 105 | CONFIG_FLAT_NODE_MEM_MAP=y | 107 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 108 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 106 | CONFIG_HAVE_DEC_LOCK=y | 109 | CONFIG_HAVE_DEC_LOCK=y |
| 107 | CONFIG_IA32_SUPPORT=y | 110 | CONFIG_IA32_SUPPORT=y |
| 108 | CONFIG_COMPAT=y | 111 | CONFIG_COMPAT=y |
| @@ -115,6 +118,7 @@ CONFIG_IA64_PALINFO=y | |||
| 115 | # | 118 | # |
| 116 | CONFIG_EFI_VARS=y | 119 | CONFIG_EFI_VARS=y |
| 117 | CONFIG_EFI_PCDP=y | 120 | CONFIG_EFI_PCDP=y |
| 121 | # CONFIG_DELL_RBU is not set | ||
| 118 | CONFIG_BINFMT_ELF=y | 122 | CONFIG_BINFMT_ELF=y |
| 119 | CONFIG_BINFMT_MISC=m | 123 | CONFIG_BINFMT_MISC=m |
| 120 | 124 | ||
| @@ -122,20 +126,27 @@ CONFIG_BINFMT_MISC=m | |||
| 122 | # Power management and ACPI | 126 | # Power management and ACPI |
| 123 | # | 127 | # |
| 124 | CONFIG_PM=y | 128 | CONFIG_PM=y |
| 125 | CONFIG_ACPI=y | 129 | # CONFIG_PM_DEBUG is not set |
| 126 | 130 | ||
| 127 | # | 131 | # |
| 128 | # ACPI (Advanced Configuration and Power Interface) Support | 132 | # ACPI (Advanced Configuration and Power Interface) Support |
| 129 | # | 133 | # |
| 134 | CONFIG_ACPI=y | ||
| 130 | CONFIG_ACPI_BUTTON=m | 135 | CONFIG_ACPI_BUTTON=m |
| 131 | CONFIG_ACPI_FAN=m | 136 | CONFIG_ACPI_FAN=m |
| 132 | CONFIG_ACPI_PROCESSOR=m | 137 | CONFIG_ACPI_PROCESSOR=m |
| 133 | # CONFIG_ACPI_HOTPLUG_CPU is not set | 138 | CONFIG_ACPI_HOTPLUG_CPU=y |
| 134 | CONFIG_ACPI_THERMAL=m | 139 | CONFIG_ACPI_THERMAL=m |
| 140 | CONFIG_ACPI_BLACKLIST_YEAR=0 | ||
| 135 | # CONFIG_ACPI_DEBUG is not set | 141 | # CONFIG_ACPI_DEBUG is not set |
| 136 | CONFIG_ACPI_POWER=y | 142 | CONFIG_ACPI_POWER=y |
| 137 | CONFIG_ACPI_SYSTEM=y | 143 | CONFIG_ACPI_SYSTEM=y |
| 138 | # CONFIG_ACPI_CONTAINER is not set | 144 | CONFIG_ACPI_CONTAINER=m |
| 145 | |||
| 146 | # | ||
| 147 | # CPU Frequency scaling | ||
| 148 | # | ||
| 149 | # CONFIG_CPU_FREQ is not set | ||
| 139 | 150 | ||
| 140 | # | 151 | # |
| 141 | # Bus options (PCI, PCMCIA) | 152 | # Bus options (PCI, PCMCIA) |
| @@ -144,7 +155,6 @@ CONFIG_PCI=y | |||
| 144 | CONFIG_PCI_DOMAINS=y | 155 | CONFIG_PCI_DOMAINS=y |
| 145 | # CONFIG_PCI_MSI is not set | 156 | # CONFIG_PCI_MSI is not set |
| 146 | CONFIG_PCI_LEGACY_PROC=y | 157 | CONFIG_PCI_LEGACY_PROC=y |
| 147 | CONFIG_PCI_NAMES=y | ||
| 148 | # CONFIG_PCI_DEBUG is not set | 158 | # CONFIG_PCI_DEBUG is not set |
| 149 | 159 | ||
| 150 | # | 160 | # |
| @@ -188,14 +198,19 @@ CONFIG_SYN_COOKIES=y | |||
| 188 | # CONFIG_INET_ESP is not set | 198 | # CONFIG_INET_ESP is not set |
| 189 | # CONFIG_INET_IPCOMP is not set | 199 | # CONFIG_INET_IPCOMP is not set |
| 190 | # CONFIG_INET_TUNNEL is not set | 200 | # CONFIG_INET_TUNNEL is not set |
| 191 | CONFIG_IP_TCPDIAG=y | 201 | CONFIG_INET_DIAG=y |
| 192 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 202 | CONFIG_INET_TCP_DIAG=y |
| 193 | # CONFIG_TCP_CONG_ADVANCED is not set | 203 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 194 | CONFIG_TCP_CONG_BIC=y | 204 | CONFIG_TCP_CONG_BIC=y |
| 195 | # CONFIG_IPV6 is not set | 205 | # CONFIG_IPV6 is not set |
| 196 | # CONFIG_NETFILTER is not set | 206 | # CONFIG_NETFILTER is not set |
| 197 | 207 | ||
| 198 | # | 208 | # |
| 209 | # DCCP Configuration (EXPERIMENTAL) | ||
| 210 | # | ||
| 211 | # CONFIG_IP_DCCP is not set | ||
| 212 | |||
| 213 | # | ||
| 199 | # SCTP Configuration (EXPERIMENTAL) | 214 | # SCTP Configuration (EXPERIMENTAL) |
| 200 | # | 215 | # |
| 201 | # CONFIG_IP_SCTP is not set | 216 | # CONFIG_IP_SCTP is not set |
| @@ -218,9 +233,11 @@ CONFIG_TCP_CONG_BIC=y | |||
| 218 | # Network testing | 233 | # Network testing |
| 219 | # | 234 | # |
| 220 | # CONFIG_NET_PKTGEN is not set | 235 | # CONFIG_NET_PKTGEN is not set |
| 236 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 221 | # CONFIG_HAMRADIO is not set | 237 | # CONFIG_HAMRADIO is not set |
| 222 | # CONFIG_IRDA is not set | 238 | # CONFIG_IRDA is not set |
| 223 | # CONFIG_BT is not set | 239 | # CONFIG_BT is not set |
| 240 | # CONFIG_IEEE80211 is not set | ||
| 224 | 241 | ||
| 225 | # | 242 | # |
| 226 | # Device Drivers | 243 | # Device Drivers |
| @@ -235,6 +252,11 @@ CONFIG_FW_LOADER=m | |||
| 235 | # CONFIG_DEBUG_DRIVER is not set | 252 | # CONFIG_DEBUG_DRIVER is not set |
| 236 | 253 | ||
| 237 | # | 254 | # |
| 255 | # Connector - unified userspace <-> kernelspace linker | ||
| 256 | # | ||
| 257 | # CONFIG_CONNECTOR is not set | ||
| 258 | |||
| 259 | # | ||
| 238 | # Memory Technology Devices (MTD) | 260 | # Memory Technology Devices (MTD) |
| 239 | # | 261 | # |
| 240 | # CONFIG_MTD is not set | 262 | # CONFIG_MTD is not set |
| @@ -247,7 +269,13 @@ CONFIG_FW_LOADER=m | |||
| 247 | # | 269 | # |
| 248 | # Plug and Play support | 270 | # Plug and Play support |
| 249 | # | 271 | # |
| 250 | # CONFIG_PNP is not set | 272 | CONFIG_PNP=y |
| 273 | # CONFIG_PNP_DEBUG is not set | ||
| 274 | |||
| 275 | # | ||
| 276 | # Protocols | ||
| 277 | # | ||
| 278 | CONFIG_PNPACPI=y | ||
| 251 | 279 | ||
| 252 | # | 280 | # |
| 253 | # Block devices | 281 | # Block devices |
| @@ -266,7 +294,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 266 | CONFIG_BLK_DEV_RAM_COUNT=16 | 294 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 267 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 295 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
| 268 | CONFIG_BLK_DEV_INITRD=y | 296 | CONFIG_BLK_DEV_INITRD=y |
| 269 | CONFIG_INITRAMFS_SOURCE="" | ||
| 270 | # CONFIG_CDROM_PKTCDVD is not set | 297 | # CONFIG_CDROM_PKTCDVD is not set |
| 271 | 298 | ||
| 272 | # | 299 | # |
| @@ -299,7 +326,8 @@ CONFIG_BLK_DEV_IDESCSI=m | |||
| 299 | # | 326 | # |
| 300 | # IDE chipset support/bugfixes | 327 | # IDE chipset support/bugfixes |
| 301 | # | 328 | # |
| 302 | CONFIG_IDE_GENERIC=y | 329 | # CONFIG_IDE_GENERIC is not set |
| 330 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
| 303 | CONFIG_BLK_DEV_IDEPCI=y | 331 | CONFIG_BLK_DEV_IDEPCI=y |
| 304 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 332 | # CONFIG_IDEPCI_SHARE_IRQ is not set |
| 305 | # CONFIG_BLK_DEV_OFFBOARD is not set | 333 | # CONFIG_BLK_DEV_OFFBOARD is not set |
| @@ -339,6 +367,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 339 | # | 367 | # |
| 340 | # SCSI device support | 368 | # SCSI device support |
| 341 | # | 369 | # |
| 370 | # CONFIG_RAID_ATTRS is not set | ||
| 342 | CONFIG_SCSI=y | 371 | CONFIG_SCSI=y |
| 343 | CONFIG_SCSI_PROC_FS=y | 372 | CONFIG_SCSI_PROC_FS=y |
| 344 | 373 | ||
| @@ -366,6 +395,7 @@ CONFIG_CHR_DEV_SG=m | |||
| 366 | CONFIG_SCSI_SPI_ATTRS=y | 395 | CONFIG_SCSI_SPI_ATTRS=y |
| 367 | CONFIG_SCSI_FC_ATTRS=y | 396 | CONFIG_SCSI_FC_ATTRS=y |
| 368 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 397 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 398 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 369 | 399 | ||
| 370 | # | 400 | # |
| 371 | # SCSI low-level drivers | 401 | # SCSI low-level drivers |
| @@ -454,6 +484,7 @@ CONFIG_DUMMY=m | |||
| 454 | # CONFIG_BONDING is not set | 484 | # CONFIG_BONDING is not set |
| 455 | # CONFIG_EQUALIZER is not set | 485 | # CONFIG_EQUALIZER is not set |
| 456 | # CONFIG_TUN is not set | 486 | # CONFIG_TUN is not set |
| 487 | # CONFIG_NET_SB1000 is not set | ||
| 457 | 488 | ||
| 458 | # | 489 | # |
| 459 | # ARCnet devices | 490 | # ARCnet devices |
| @@ -461,6 +492,11 @@ CONFIG_DUMMY=m | |||
| 461 | # CONFIG_ARCNET is not set | 492 | # CONFIG_ARCNET is not set |
| 462 | 493 | ||
| 463 | # | 494 | # |
| 495 | # PHY device support | ||
| 496 | # | ||
| 497 | # CONFIG_PHYLIB is not set | ||
| 498 | |||
| 499 | # | ||
| 464 | # Ethernet (10 or 100Mbit) | 500 | # Ethernet (10 or 100Mbit) |
| 465 | # | 501 | # |
| 466 | CONFIG_NET_ETHERNET=y | 502 | CONFIG_NET_ETHERNET=y |
| @@ -481,6 +517,7 @@ CONFIG_TULIP=m | |||
| 481 | # CONFIG_DE4X5 is not set | 517 | # CONFIG_DE4X5 is not set |
| 482 | # CONFIG_WINBOND_840 is not set | 518 | # CONFIG_WINBOND_840 is not set |
| 483 | # CONFIG_DM9102 is not set | 519 | # CONFIG_DM9102 is not set |
| 520 | # CONFIG_ULI526X is not set | ||
| 484 | # CONFIG_HP100 is not set | 521 | # CONFIG_HP100 is not set |
| 485 | CONFIG_NET_PCI=y | 522 | CONFIG_NET_PCI=y |
| 486 | # CONFIG_PCNET32 is not set | 523 | # CONFIG_PCNET32 is not set |
| @@ -512,6 +549,7 @@ CONFIG_E1000=y | |||
| 512 | # CONFIG_HAMACHI is not set | 549 | # CONFIG_HAMACHI is not set |
| 513 | # CONFIG_YELLOWFIN is not set | 550 | # CONFIG_YELLOWFIN is not set |
| 514 | # CONFIG_R8169 is not set | 551 | # CONFIG_R8169 is not set |
| 552 | # CONFIG_SIS190 is not set | ||
| 515 | # CONFIG_SKGE is not set | 553 | # CONFIG_SKGE is not set |
| 516 | # CONFIG_SK98LIN is not set | 554 | # CONFIG_SK98LIN is not set |
| 517 | # CONFIG_VIA_VELOCITY is not set | 555 | # CONFIG_VIA_VELOCITY is not set |
| @@ -521,6 +559,7 @@ CONFIG_TIGON3=y | |||
| 521 | # | 559 | # |
| 522 | # Ethernet (10000 Mbit) | 560 | # Ethernet (10000 Mbit) |
| 523 | # | 561 | # |
| 562 | # CONFIG_CHELSIO_T1 is not set | ||
| 524 | # CONFIG_IXGB is not set | 563 | # CONFIG_IXGB is not set |
| 525 | # CONFIG_S2IO is not set | 564 | # CONFIG_S2IO is not set |
| 526 | 565 | ||
| @@ -618,6 +657,7 @@ CONFIG_HW_CONSOLE=y | |||
| 618 | CONFIG_SERIAL_NONSTANDARD=y | 657 | CONFIG_SERIAL_NONSTANDARD=y |
| 619 | # CONFIG_ROCKETPORT is not set | 658 | # CONFIG_ROCKETPORT is not set |
| 620 | # CONFIG_CYCLADES is not set | 659 | # CONFIG_CYCLADES is not set |
| 660 | # CONFIG_DIGIEPCA is not set | ||
| 621 | # CONFIG_MOXA_SMARTIO is not set | 661 | # CONFIG_MOXA_SMARTIO is not set |
| 622 | # CONFIG_ISI is not set | 662 | # CONFIG_ISI is not set |
| 623 | # CONFIG_SYNCLINKMP is not set | 663 | # CONFIG_SYNCLINKMP is not set |
| @@ -675,6 +715,7 @@ CONFIG_DRM_RADEON=m | |||
| 675 | CONFIG_DRM_MGA=m | 715 | CONFIG_DRM_MGA=m |
| 676 | CONFIG_DRM_SIS=m | 716 | CONFIG_DRM_SIS=m |
| 677 | # CONFIG_DRM_VIA is not set | 717 | # CONFIG_DRM_VIA is not set |
| 718 | # CONFIG_DRM_SAVAGE is not set | ||
| 678 | CONFIG_RAW_DRIVER=m | 719 | CONFIG_RAW_DRIVER=m |
| 679 | CONFIG_HPET=y | 720 | CONFIG_HPET=y |
| 680 | # CONFIG_HPET_RTC_IRQ is not set | 721 | # CONFIG_HPET_RTC_IRQ is not set |
| @@ -691,7 +732,6 @@ CONFIG_MAX_RAW_DEVS=256 | |||
| 691 | # I2C support | 732 | # I2C support |
| 692 | # | 733 | # |
| 693 | # CONFIG_I2C is not set | 734 | # CONFIG_I2C is not set |
| 694 | # CONFIG_I2C_SENSOR is not set | ||
| 695 | 735 | ||
| 696 | # | 736 | # |
| 697 | # Dallas's 1-wire bus | 737 | # Dallas's 1-wire bus |
| @@ -702,6 +742,7 @@ CONFIG_MAX_RAW_DEVS=256 | |||
| 702 | # Hardware Monitoring support | 742 | # Hardware Monitoring support |
| 703 | # | 743 | # |
| 704 | CONFIG_HWMON=y | 744 | CONFIG_HWMON=y |
| 745 | # CONFIG_HWMON_VID is not set | ||
| 705 | # CONFIG_HWMON_DEBUG_CHIP is not set | 746 | # CONFIG_HWMON_DEBUG_CHIP is not set |
| 706 | 747 | ||
| 707 | # | 748 | # |
| @@ -709,6 +750,10 @@ CONFIG_HWMON=y | |||
| 709 | # | 750 | # |
| 710 | 751 | ||
| 711 | # | 752 | # |
| 753 | # Multimedia Capabilities Port drivers | ||
| 754 | # | ||
| 755 | |||
| 756 | # | ||
| 712 | # Multimedia devices | 757 | # Multimedia devices |
| 713 | # | 758 | # |
| 714 | # CONFIG_VIDEO_DEV is not set | 759 | # CONFIG_VIDEO_DEV is not set |
| @@ -800,9 +845,11 @@ CONFIG_USB_HIDINPUT=y | |||
| 800 | # CONFIG_USB_MTOUCH is not set | 845 | # CONFIG_USB_MTOUCH is not set |
| 801 | # CONFIG_USB_ITMTOUCH is not set | 846 | # CONFIG_USB_ITMTOUCH is not set |
| 802 | # CONFIG_USB_EGALAX is not set | 847 | # CONFIG_USB_EGALAX is not set |
| 848 | # CONFIG_USB_YEALINK is not set | ||
| 803 | # CONFIG_USB_XPAD is not set | 849 | # CONFIG_USB_XPAD is not set |
| 804 | # CONFIG_USB_ATI_REMOTE is not set | 850 | # CONFIG_USB_ATI_REMOTE is not set |
| 805 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 851 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
| 852 | # CONFIG_USB_APPLETOUCH is not set | ||
| 806 | 853 | ||
| 807 | # | 854 | # |
| 808 | # USB Imaging devices | 855 | # USB Imaging devices |
| @@ -902,16 +949,12 @@ CONFIG_REISERFS_FS_POSIX_ACL=y | |||
| 902 | CONFIG_REISERFS_FS_SECURITY=y | 949 | CONFIG_REISERFS_FS_SECURITY=y |
| 903 | # CONFIG_JFS_FS is not set | 950 | # CONFIG_JFS_FS is not set |
| 904 | CONFIG_FS_POSIX_ACL=y | 951 | CONFIG_FS_POSIX_ACL=y |
| 905 | |||
| 906 | # | ||
| 907 | # XFS support | ||
| 908 | # | ||
| 909 | CONFIG_XFS_FS=y | 952 | CONFIG_XFS_FS=y |
| 910 | CONFIG_XFS_EXPORT=y | 953 | CONFIG_XFS_EXPORT=y |
| 911 | # CONFIG_XFS_RT is not set | ||
| 912 | # CONFIG_XFS_QUOTA is not set | 954 | # CONFIG_XFS_QUOTA is not set |
| 913 | # CONFIG_XFS_SECURITY is not set | 955 | # CONFIG_XFS_SECURITY is not set |
| 914 | # CONFIG_XFS_POSIX_ACL is not set | 956 | # CONFIG_XFS_POSIX_ACL is not set |
| 957 | # CONFIG_XFS_RT is not set | ||
| 915 | # CONFIG_MINIX_FS is not set | 958 | # CONFIG_MINIX_FS is not set |
| 916 | # CONFIG_ROMFS_FS is not set | 959 | # CONFIG_ROMFS_FS is not set |
| 917 | CONFIG_INOTIFY=y | 960 | CONFIG_INOTIFY=y |
| @@ -919,6 +962,7 @@ CONFIG_INOTIFY=y | |||
| 919 | CONFIG_DNOTIFY=y | 962 | CONFIG_DNOTIFY=y |
| 920 | CONFIG_AUTOFS_FS=y | 963 | CONFIG_AUTOFS_FS=y |
| 921 | CONFIG_AUTOFS4_FS=y | 964 | CONFIG_AUTOFS4_FS=y |
| 965 | # CONFIG_FUSE_FS is not set | ||
| 922 | 966 | ||
| 923 | # | 967 | # |
| 924 | # CD-ROM/DVD Filesystems | 968 | # CD-ROM/DVD Filesystems |
| @@ -947,13 +991,11 @@ CONFIG_NTFS_FS=m | |||
| 947 | CONFIG_PROC_FS=y | 991 | CONFIG_PROC_FS=y |
| 948 | CONFIG_PROC_KCORE=y | 992 | CONFIG_PROC_KCORE=y |
| 949 | CONFIG_SYSFS=y | 993 | CONFIG_SYSFS=y |
| 950 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
| 951 | CONFIG_TMPFS=y | 994 | CONFIG_TMPFS=y |
| 952 | CONFIG_TMPFS_XATTR=y | ||
| 953 | CONFIG_TMPFS_SECURITY=y | ||
| 954 | CONFIG_HUGETLBFS=y | 995 | CONFIG_HUGETLBFS=y |
| 955 | CONFIG_HUGETLB_PAGE=y | 996 | CONFIG_HUGETLB_PAGE=y |
| 956 | CONFIG_RAMFS=y | 997 | CONFIG_RAMFS=y |
| 998 | # CONFIG_RELAYFS_FS is not set | ||
| 957 | 999 | ||
| 958 | # | 1000 | # |
| 959 | # Miscellaneous filesystems | 1001 | # Miscellaneous filesystems |
| @@ -1003,6 +1045,7 @@ CONFIG_CIFS=m | |||
| 1003 | # CONFIG_NCP_FS is not set | 1045 | # CONFIG_NCP_FS is not set |
| 1004 | # CONFIG_CODA_FS is not set | 1046 | # CONFIG_CODA_FS is not set |
| 1005 | # CONFIG_AFS_FS is not set | 1047 | # CONFIG_AFS_FS is not set |
| 1048 | # CONFIG_9P_FS is not set | ||
| 1006 | 1049 | ||
| 1007 | # | 1050 | # |
| 1008 | # Partition Types | 1051 | # Partition Types |
| @@ -1072,10 +1115,12 @@ CONFIG_NLS_UTF8=m | |||
| 1072 | # Library routines | 1115 | # Library routines |
| 1073 | # | 1116 | # |
| 1074 | # CONFIG_CRC_CCITT is not set | 1117 | # CONFIG_CRC_CCITT is not set |
| 1118 | # CONFIG_CRC16 is not set | ||
| 1075 | CONFIG_CRC32=y | 1119 | CONFIG_CRC32=y |
| 1076 | # CONFIG_LIBCRC32C is not set | 1120 | # CONFIG_LIBCRC32C is not set |
| 1077 | CONFIG_GENERIC_HARDIRQS=y | 1121 | CONFIG_GENERIC_HARDIRQS=y |
| 1078 | CONFIG_GENERIC_IRQ_PROBE=y | 1122 | CONFIG_GENERIC_IRQ_PROBE=y |
| 1123 | CONFIG_GENERIC_PENDING_IRQ=y | ||
| 1079 | 1124 | ||
| 1080 | # | 1125 | # |
| 1081 | # Profiling support | 1126 | # Profiling support |
| @@ -1089,6 +1134,7 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
| 1089 | CONFIG_DEBUG_KERNEL=y | 1134 | CONFIG_DEBUG_KERNEL=y |
| 1090 | CONFIG_MAGIC_SYSRQ=y | 1135 | CONFIG_MAGIC_SYSRQ=y |
| 1091 | CONFIG_LOG_BUF_SHIFT=20 | 1136 | CONFIG_LOG_BUF_SHIFT=20 |
| 1137 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1092 | # CONFIG_SCHEDSTATS is not set | 1138 | # CONFIG_SCHEDSTATS is not set |
| 1093 | # CONFIG_DEBUG_SLAB is not set | 1139 | # CONFIG_DEBUG_SLAB is not set |
| 1094 | # CONFIG_DEBUG_SPINLOCK is not set | 1140 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/ia64/configs/zx1_defconfig b/arch/ia64/configs/zx1_defconfig index 80b0e9eb7fb3..0856ca67dd50 100644 --- a/arch/ia64/configs/zx1_defconfig +++ b/arch/ia64/configs/zx1_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.13-rc6 | 3 | # Linux kernel version: 2.6.14-rc1 |
| 4 | # Wed Aug 17 10:02:43 2005 | 4 | # Wed Sep 14 15:15:01 2005 |
| 5 | # | 5 | # |
| 6 | 6 | ||
| 7 | # | 7 | # |
| @@ -18,6 +18,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 18 | # General setup | 18 | # General setup |
| 19 | # | 19 | # |
| 20 | CONFIG_LOCALVERSION="" | 20 | CONFIG_LOCALVERSION="" |
| 21 | CONFIG_LOCALVERSION_AUTO=y | ||
| 21 | CONFIG_SWAP=y | 22 | CONFIG_SWAP=y |
| 22 | CONFIG_SYSVIPC=y | 23 | CONFIG_SYSVIPC=y |
| 23 | # CONFIG_POSIX_MQUEUE is not set | 24 | # CONFIG_POSIX_MQUEUE is not set |
| @@ -29,6 +30,7 @@ CONFIG_HOTPLUG=y | |||
| 29 | CONFIG_KOBJECT_UEVENT=y | 30 | CONFIG_KOBJECT_UEVENT=y |
| 30 | # CONFIG_IKCONFIG is not set | 31 | # CONFIG_IKCONFIG is not set |
| 31 | # CONFIG_CPUSETS is not set | 32 | # CONFIG_CPUSETS is not set |
| 33 | CONFIG_INITRAMFS_SOURCE="" | ||
| 32 | # CONFIG_EMBEDDED is not set | 34 | # CONFIG_EMBEDDED is not set |
| 33 | CONFIG_KALLSYMS=y | 35 | CONFIG_KALLSYMS=y |
| 34 | # CONFIG_KALLSYMS_ALL is not set | 36 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -103,6 +105,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 103 | # CONFIG_SPARSEMEM_MANUAL is not set | 105 | # CONFIG_SPARSEMEM_MANUAL is not set |
| 104 | CONFIG_FLATMEM=y | 106 | CONFIG_FLATMEM=y |
| 105 | CONFIG_FLAT_NODE_MEM_MAP=y | 107 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 108 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 106 | CONFIG_HAVE_DEC_LOCK=y | 109 | CONFIG_HAVE_DEC_LOCK=y |
| 107 | CONFIG_IA32_SUPPORT=y | 110 | CONFIG_IA32_SUPPORT=y |
| 108 | CONFIG_COMPAT=y | 111 | CONFIG_COMPAT=y |
| @@ -115,6 +118,7 @@ CONFIG_IA64_PALINFO=y | |||
| 115 | # | 118 | # |
| 116 | CONFIG_EFI_VARS=y | 119 | CONFIG_EFI_VARS=y |
| 117 | CONFIG_EFI_PCDP=y | 120 | CONFIG_EFI_PCDP=y |
| 121 | # CONFIG_DELL_RBU is not set | ||
| 118 | CONFIG_BINFMT_ELF=y | 122 | CONFIG_BINFMT_ELF=y |
| 119 | CONFIG_BINFMT_MISC=y | 123 | CONFIG_BINFMT_MISC=y |
| 120 | 124 | ||
| @@ -122,28 +126,34 @@ CONFIG_BINFMT_MISC=y | |||
| 122 | # Power management and ACPI | 126 | # Power management and ACPI |
| 123 | # | 127 | # |
| 124 | CONFIG_PM=y | 128 | CONFIG_PM=y |
| 125 | CONFIG_ACPI=y | 129 | # CONFIG_PM_DEBUG is not set |
| 126 | 130 | ||
| 127 | # | 131 | # |
| 128 | # ACPI (Advanced Configuration and Power Interface) Support | 132 | # ACPI (Advanced Configuration and Power Interface) Support |
| 129 | # | 133 | # |
| 134 | CONFIG_ACPI=y | ||
| 130 | CONFIG_ACPI_BUTTON=y | 135 | CONFIG_ACPI_BUTTON=y |
| 131 | CONFIG_ACPI_FAN=y | 136 | CONFIG_ACPI_FAN=y |
| 132 | CONFIG_ACPI_PROCESSOR=y | 137 | CONFIG_ACPI_PROCESSOR=y |
| 133 | CONFIG_ACPI_THERMAL=y | 138 | CONFIG_ACPI_THERMAL=y |
| 139 | CONFIG_ACPI_BLACKLIST_YEAR=0 | ||
| 134 | # CONFIG_ACPI_DEBUG is not set | 140 | # CONFIG_ACPI_DEBUG is not set |
| 135 | CONFIG_ACPI_POWER=y | 141 | CONFIG_ACPI_POWER=y |
| 136 | CONFIG_ACPI_SYSTEM=y | 142 | CONFIG_ACPI_SYSTEM=y |
| 137 | # CONFIG_ACPI_CONTAINER is not set | 143 | # CONFIG_ACPI_CONTAINER is not set |
| 138 | 144 | ||
| 139 | # | 145 | # |
| 146 | # CPU Frequency scaling | ||
| 147 | # | ||
| 148 | # CONFIG_CPU_FREQ is not set | ||
| 149 | |||
| 150 | # | ||
| 140 | # Bus options (PCI, PCMCIA) | 151 | # Bus options (PCI, PCMCIA) |
| 141 | # | 152 | # |
| 142 | CONFIG_PCI=y | 153 | CONFIG_PCI=y |
| 143 | CONFIG_PCI_DOMAINS=y | 154 | CONFIG_PCI_DOMAINS=y |
| 144 | # CONFIG_PCI_MSI is not set | 155 | # CONFIG_PCI_MSI is not set |
| 145 | CONFIG_PCI_LEGACY_PROC=y | 156 | CONFIG_PCI_LEGACY_PROC=y |
| 146 | CONFIG_PCI_NAMES=y | ||
| 147 | # CONFIG_PCI_DEBUG is not set | 157 | # CONFIG_PCI_DEBUG is not set |
| 148 | 158 | ||
| 149 | # | 159 | # |
| @@ -187,8 +197,8 @@ CONFIG_IP_FIB_HASH=y | |||
| 187 | # CONFIG_INET_ESP is not set | 197 | # CONFIG_INET_ESP is not set |
| 188 | # CONFIG_INET_IPCOMP is not set | 198 | # CONFIG_INET_IPCOMP is not set |
| 189 | # CONFIG_INET_TUNNEL is not set | 199 | # CONFIG_INET_TUNNEL is not set |
| 190 | # CONFIG_IP_TCPDIAG is not set | 200 | CONFIG_INET_DIAG=y |
| 191 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 201 | CONFIG_INET_TCP_DIAG=y |
| 192 | # CONFIG_TCP_CONG_ADVANCED is not set | 202 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 193 | CONFIG_TCP_CONG_BIC=y | 203 | CONFIG_TCP_CONG_BIC=y |
| 194 | 204 | ||
| @@ -204,7 +214,6 @@ CONFIG_NETFILTER=y | |||
| 204 | # IP: Netfilter Configuration | 214 | # IP: Netfilter Configuration |
| 205 | # | 215 | # |
| 206 | # CONFIG_IP_NF_CONNTRACK is not set | 216 | # CONFIG_IP_NF_CONNTRACK is not set |
| 207 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | ||
| 208 | # CONFIG_IP_NF_QUEUE is not set | 217 | # CONFIG_IP_NF_QUEUE is not set |
| 209 | # CONFIG_IP_NF_IPTABLES is not set | 218 | # CONFIG_IP_NF_IPTABLES is not set |
| 210 | CONFIG_IP_NF_ARPTABLES=y | 219 | CONFIG_IP_NF_ARPTABLES=y |
| @@ -212,6 +221,11 @@ CONFIG_IP_NF_ARPTABLES=y | |||
| 212 | # CONFIG_IP_NF_ARP_MANGLE is not set | 221 | # CONFIG_IP_NF_ARP_MANGLE is not set |
| 213 | 222 | ||
| 214 | # | 223 | # |
| 224 | # DCCP Configuration (EXPERIMENTAL) | ||
| 225 | # | ||
| 226 | # CONFIG_IP_DCCP is not set | ||
| 227 | |||
| 228 | # | ||
| 215 | # SCTP Configuration (EXPERIMENTAL) | 229 | # SCTP Configuration (EXPERIMENTAL) |
| 216 | # | 230 | # |
| 217 | # CONFIG_IP_SCTP is not set | 231 | # CONFIG_IP_SCTP is not set |
| @@ -234,9 +248,11 @@ CONFIG_IP_NF_ARPTABLES=y | |||
| 234 | # Network testing | 248 | # Network testing |
| 235 | # | 249 | # |
| 236 | # CONFIG_NET_PKTGEN is not set | 250 | # CONFIG_NET_PKTGEN is not set |
| 251 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 237 | # CONFIG_HAMRADIO is not set | 252 | # CONFIG_HAMRADIO is not set |
| 238 | # CONFIG_IRDA is not set | 253 | # CONFIG_IRDA is not set |
| 239 | # CONFIG_BT is not set | 254 | # CONFIG_BT is not set |
| 255 | # CONFIG_IEEE80211 is not set | ||
| 240 | 256 | ||
| 241 | # | 257 | # |
| 242 | # Device Drivers | 258 | # Device Drivers |
| @@ -251,6 +267,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 251 | # CONFIG_DEBUG_DRIVER is not set | 267 | # CONFIG_DEBUG_DRIVER is not set |
| 252 | 268 | ||
| 253 | # | 269 | # |
| 270 | # Connector - unified userspace <-> kernelspace linker | ||
| 271 | # | ||
| 272 | # CONFIG_CONNECTOR is not set | ||
| 273 | |||
| 274 | # | ||
| 254 | # Memory Technology Devices (MTD) | 275 | # Memory Technology Devices (MTD) |
| 255 | # | 276 | # |
| 256 | # CONFIG_MTD is not set | 277 | # CONFIG_MTD is not set |
| @@ -263,7 +284,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 263 | # | 284 | # |
| 264 | # Plug and Play support | 285 | # Plug and Play support |
| 265 | # | 286 | # |
| 266 | # CONFIG_PNP is not set | 287 | CONFIG_PNP=y |
| 288 | # CONFIG_PNP_DEBUG is not set | ||
| 289 | |||
| 290 | # | ||
| 291 | # Protocols | ||
| 292 | # | ||
| 293 | CONFIG_PNPACPI=y | ||
| 267 | 294 | ||
| 268 | # | 295 | # |
| 269 | # Block devices | 296 | # Block devices |
| @@ -282,7 +309,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 282 | CONFIG_BLK_DEV_RAM_COUNT=16 | 309 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 283 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 310 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
| 284 | CONFIG_BLK_DEV_INITRD=y | 311 | CONFIG_BLK_DEV_INITRD=y |
| 285 | CONFIG_INITRAMFS_SOURCE="" | ||
| 286 | # CONFIG_CDROM_PKTCDVD is not set | 312 | # CONFIG_CDROM_PKTCDVD is not set |
| 287 | 313 | ||
| 288 | # | 314 | # |
| @@ -315,7 +341,8 @@ CONFIG_BLK_DEV_IDECD=y | |||
| 315 | # | 341 | # |
| 316 | # IDE chipset support/bugfixes | 342 | # IDE chipset support/bugfixes |
| 317 | # | 343 | # |
| 318 | CONFIG_IDE_GENERIC=y | 344 | # CONFIG_IDE_GENERIC is not set |
| 345 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
| 319 | CONFIG_BLK_DEV_IDEPCI=y | 346 | CONFIG_BLK_DEV_IDEPCI=y |
| 320 | CONFIG_IDEPCI_SHARE_IRQ=y | 347 | CONFIG_IDEPCI_SHARE_IRQ=y |
| 321 | # CONFIG_BLK_DEV_OFFBOARD is not set | 348 | # CONFIG_BLK_DEV_OFFBOARD is not set |
| @@ -354,6 +381,7 @@ CONFIG_BLK_DEV_IDEDMA=y | |||
| 354 | # | 381 | # |
| 355 | # SCSI device support | 382 | # SCSI device support |
| 356 | # | 383 | # |
| 384 | # CONFIG_RAID_ATTRS is not set | ||
| 357 | CONFIG_SCSI=y | 385 | CONFIG_SCSI=y |
| 358 | CONFIG_SCSI_PROC_FS=y | 386 | CONFIG_SCSI_PROC_FS=y |
| 359 | 387 | ||
| @@ -381,6 +409,7 @@ CONFIG_SCSI_LOGGING=y | |||
| 381 | CONFIG_SCSI_SPI_ATTRS=y | 409 | CONFIG_SCSI_SPI_ATTRS=y |
| 382 | # CONFIG_SCSI_FC_ATTRS is not set | 410 | # CONFIG_SCSI_FC_ATTRS is not set |
| 383 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 411 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 412 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 384 | 413 | ||
| 385 | # | 414 | # |
| 386 | # SCSI low-level drivers | 415 | # SCSI low-level drivers |
| @@ -457,6 +486,7 @@ CONFIG_DUMMY=y | |||
| 457 | # CONFIG_BONDING is not set | 486 | # CONFIG_BONDING is not set |
| 458 | # CONFIG_EQUALIZER is not set | 487 | # CONFIG_EQUALIZER is not set |
| 459 | # CONFIG_TUN is not set | 488 | # CONFIG_TUN is not set |
| 489 | # CONFIG_NET_SB1000 is not set | ||
| 460 | 490 | ||
| 461 | # | 491 | # |
| 462 | # ARCnet devices | 492 | # ARCnet devices |
| @@ -464,6 +494,11 @@ CONFIG_DUMMY=y | |||
| 464 | # CONFIG_ARCNET is not set | 494 | # CONFIG_ARCNET is not set |
| 465 | 495 | ||
| 466 | # | 496 | # |
| 497 | # PHY device support | ||
| 498 | # | ||
| 499 | # CONFIG_PHYLIB is not set | ||
| 500 | |||
| 501 | # | ||
| 467 | # Ethernet (10 or 100Mbit) | 502 | # Ethernet (10 or 100Mbit) |
| 468 | # | 503 | # |
| 469 | CONFIG_NET_ETHERNET=y | 504 | CONFIG_NET_ETHERNET=y |
| @@ -485,6 +520,7 @@ CONFIG_TULIP_NAPI_HW_MITIGATION=y | |||
| 485 | # CONFIG_DE4X5 is not set | 520 | # CONFIG_DE4X5 is not set |
| 486 | # CONFIG_WINBOND_840 is not set | 521 | # CONFIG_WINBOND_840 is not set |
| 487 | # CONFIG_DM9102 is not set | 522 | # CONFIG_DM9102 is not set |
| 523 | # CONFIG_ULI526X is not set | ||
| 488 | # CONFIG_HP100 is not set | 524 | # CONFIG_HP100 is not set |
| 489 | CONFIG_NET_PCI=y | 525 | CONFIG_NET_PCI=y |
| 490 | # CONFIG_PCNET32 is not set | 526 | # CONFIG_PCNET32 is not set |
| @@ -516,6 +552,7 @@ CONFIG_E1000=y | |||
| 516 | # CONFIG_HAMACHI is not set | 552 | # CONFIG_HAMACHI is not set |
| 517 | # CONFIG_YELLOWFIN is not set | 553 | # CONFIG_YELLOWFIN is not set |
| 518 | # CONFIG_R8169 is not set | 554 | # CONFIG_R8169 is not set |
| 555 | # CONFIG_SIS190 is not set | ||
| 519 | # CONFIG_SKGE is not set | 556 | # CONFIG_SKGE is not set |
| 520 | # CONFIG_SK98LIN is not set | 557 | # CONFIG_SK98LIN is not set |
| 521 | # CONFIG_VIA_VELOCITY is not set | 558 | # CONFIG_VIA_VELOCITY is not set |
| @@ -525,6 +562,7 @@ CONFIG_TIGON3=y | |||
| 525 | # | 562 | # |
| 526 | # Ethernet (10000 Mbit) | 563 | # Ethernet (10000 Mbit) |
| 527 | # | 564 | # |
| 565 | # CONFIG_CHELSIO_T1 is not set | ||
| 528 | # CONFIG_IXGB is not set | 566 | # CONFIG_IXGB is not set |
| 529 | # CONFIG_S2IO is not set | 567 | # CONFIG_S2IO is not set |
| 530 | 568 | ||
| @@ -650,12 +688,12 @@ CONFIG_AGP=y | |||
| 650 | CONFIG_AGP_HP_ZX1=y | 688 | CONFIG_AGP_HP_ZX1=y |
| 651 | CONFIG_DRM=y | 689 | CONFIG_DRM=y |
| 652 | # CONFIG_DRM_TDFX is not set | 690 | # CONFIG_DRM_TDFX is not set |
| 653 | # CONFIG_DRM_GAMMA is not set | ||
| 654 | # CONFIG_DRM_R128 is not set | 691 | # CONFIG_DRM_R128 is not set |
| 655 | CONFIG_DRM_RADEON=y | 692 | CONFIG_DRM_RADEON=y |
| 656 | # CONFIG_DRM_MGA is not set | 693 | # CONFIG_DRM_MGA is not set |
| 657 | # CONFIG_DRM_SIS is not set | 694 | # CONFIG_DRM_SIS is not set |
| 658 | # CONFIG_DRM_VIA is not set | 695 | # CONFIG_DRM_VIA is not set |
| 696 | # CONFIG_DRM_SAVAGE is not set | ||
| 659 | # CONFIG_RAW_DRIVER is not set | 697 | # CONFIG_RAW_DRIVER is not set |
| 660 | # CONFIG_HPET is not set | 698 | # CONFIG_HPET is not set |
| 661 | # CONFIG_HANGCHECK_TIMER is not set | 699 | # CONFIG_HANGCHECK_TIMER is not set |
| @@ -689,7 +727,6 @@ CONFIG_I2C_ALGOPCF=y | |||
| 689 | # CONFIG_I2C_I801 is not set | 727 | # CONFIG_I2C_I801 is not set |
| 690 | # CONFIG_I2C_I810 is not set | 728 | # CONFIG_I2C_I810 is not set |
| 691 | # CONFIG_I2C_PIIX4 is not set | 729 | # CONFIG_I2C_PIIX4 is not set |
| 692 | # CONFIG_I2C_ISA is not set | ||
| 693 | # CONFIG_I2C_NFORCE2 is not set | 730 | # CONFIG_I2C_NFORCE2 is not set |
| 694 | # CONFIG_I2C_PARPORT_LIGHT is not set | 731 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 695 | # CONFIG_I2C_PROSAVAGE is not set | 732 | # CONFIG_I2C_PROSAVAGE is not set |
| @@ -703,7 +740,6 @@ CONFIG_I2C_ALGOPCF=y | |||
| 703 | # CONFIG_I2C_VIAPRO is not set | 740 | # CONFIG_I2C_VIAPRO is not set |
| 704 | # CONFIG_I2C_VOODOO3 is not set | 741 | # CONFIG_I2C_VOODOO3 is not set |
| 705 | # CONFIG_I2C_PCA_ISA is not set | 742 | # CONFIG_I2C_PCA_ISA is not set |
| 706 | # CONFIG_I2C_SENSOR is not set | ||
| 707 | 743 | ||
| 708 | # | 744 | # |
| 709 | # Miscellaneous I2C Chip support | 745 | # Miscellaneous I2C Chip support |
| @@ -730,12 +766,17 @@ CONFIG_I2C_ALGOPCF=y | |||
| 730 | # Hardware Monitoring support | 766 | # Hardware Monitoring support |
| 731 | # | 767 | # |
| 732 | # CONFIG_HWMON is not set | 768 | # CONFIG_HWMON is not set |
| 769 | # CONFIG_HWMON_VID is not set | ||
| 733 | 770 | ||
| 734 | # | 771 | # |
| 735 | # Misc devices | 772 | # Misc devices |
| 736 | # | 773 | # |
| 737 | 774 | ||
| 738 | # | 775 | # |
| 776 | # Multimedia Capabilities Port drivers | ||
| 777 | # | ||
| 778 | |||
| 779 | # | ||
| 739 | # Multimedia devices | 780 | # Multimedia devices |
| 740 | # | 781 | # |
| 741 | CONFIG_VIDEO_DEV=y | 782 | CONFIG_VIDEO_DEV=y |
| @@ -806,6 +847,7 @@ CONFIG_FB_RADEON_DEBUG=y | |||
| 806 | # CONFIG_FB_KYRO is not set | 847 | # CONFIG_FB_KYRO is not set |
| 807 | # CONFIG_FB_3DFX is not set | 848 | # CONFIG_FB_3DFX is not set |
| 808 | # CONFIG_FB_VOODOO1 is not set | 849 | # CONFIG_FB_VOODOO1 is not set |
| 850 | # CONFIG_FB_CYBLA is not set | ||
| 809 | # CONFIG_FB_TRIDENT is not set | 851 | # CONFIG_FB_TRIDENT is not set |
| 810 | # CONFIG_FB_PM3 is not set | 852 | # CONFIG_FB_PM3 is not set |
| 811 | # CONFIG_FB_S1D13XXX is not set | 853 | # CONFIG_FB_S1D13XXX is not set |
| @@ -862,11 +904,12 @@ CONFIG_SND_OPL3_LIB=y | |||
| 862 | # CONFIG_SND_MTPAV is not set | 904 | # CONFIG_SND_MTPAV is not set |
| 863 | # CONFIG_SND_SERIAL_U16550 is not set | 905 | # CONFIG_SND_SERIAL_U16550 is not set |
| 864 | # CONFIG_SND_MPU401 is not set | 906 | # CONFIG_SND_MPU401 is not set |
| 907 | CONFIG_SND_AC97_CODEC=y | ||
| 908 | CONFIG_SND_AC97_BUS=y | ||
| 865 | 909 | ||
| 866 | # | 910 | # |
| 867 | # PCI devices | 911 | # PCI devices |
| 868 | # | 912 | # |
| 869 | CONFIG_SND_AC97_CODEC=y | ||
| 870 | # CONFIG_SND_ALI5451 is not set | 913 | # CONFIG_SND_ALI5451 is not set |
| 871 | # CONFIG_SND_ATIIXP is not set | 914 | # CONFIG_SND_ATIIXP is not set |
| 872 | # CONFIG_SND_ATIIXP_MODEM is not set | 915 | # CONFIG_SND_ATIIXP_MODEM is not set |
| @@ -890,7 +933,7 @@ CONFIG_SND_AC97_CODEC=y | |||
| 890 | # CONFIG_SND_HDSPM is not set | 933 | # CONFIG_SND_HDSPM is not set |
| 891 | # CONFIG_SND_TRIDENT is not set | 934 | # CONFIG_SND_TRIDENT is not set |
| 892 | # CONFIG_SND_YMFPCI is not set | 935 | # CONFIG_SND_YMFPCI is not set |
| 893 | # CONFIG_SND_ALS4000 is not set | 936 | # CONFIG_SND_AD1889 is not set |
| 894 | # CONFIG_SND_CMIPCI is not set | 937 | # CONFIG_SND_CMIPCI is not set |
| 895 | # CONFIG_SND_ENS1370 is not set | 938 | # CONFIG_SND_ENS1370 is not set |
| 896 | # CONFIG_SND_ENS1371 is not set | 939 | # CONFIG_SND_ENS1371 is not set |
| @@ -952,9 +995,8 @@ CONFIG_USB_UHCI_HCD=y | |||
| 952 | # | 995 | # |
| 953 | # USB Device Class drivers | 996 | # USB Device Class drivers |
| 954 | # | 997 | # |
| 955 | # CONFIG_USB_AUDIO is not set | 998 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
| 956 | # CONFIG_USB_BLUETOOTH_TTY is not set | 999 | # CONFIG_USB_BLUETOOTH_TTY is not set |
| 957 | # CONFIG_USB_MIDI is not set | ||
| 958 | # CONFIG_USB_ACM is not set | 1000 | # CONFIG_USB_ACM is not set |
| 959 | # CONFIG_USB_PRINTER is not set | 1001 | # CONFIG_USB_PRINTER is not set |
| 960 | 1002 | ||
| @@ -971,6 +1013,7 @@ CONFIG_USB_STORAGE=y | |||
| 971 | # CONFIG_USB_STORAGE_SDDR09 is not set | 1013 | # CONFIG_USB_STORAGE_SDDR09 is not set |
| 972 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1014 | # CONFIG_USB_STORAGE_SDDR55 is not set |
| 973 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1015 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
| 1016 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 974 | 1017 | ||
| 975 | # | 1018 | # |
| 976 | # USB Input Devices | 1019 | # USB Input Devices |
| @@ -987,9 +1030,11 @@ CONFIG_USB_HIDDEV=y | |||
| 987 | # CONFIG_USB_MTOUCH is not set | 1030 | # CONFIG_USB_MTOUCH is not set |
| 988 | # CONFIG_USB_ITMTOUCH is not set | 1031 | # CONFIG_USB_ITMTOUCH is not set |
| 989 | # CONFIG_USB_EGALAX is not set | 1032 | # CONFIG_USB_EGALAX is not set |
| 1033 | # CONFIG_USB_YEALINK is not set | ||
| 990 | # CONFIG_USB_XPAD is not set | 1034 | # CONFIG_USB_XPAD is not set |
| 991 | # CONFIG_USB_ATI_REMOTE is not set | 1035 | # CONFIG_USB_ATI_REMOTE is not set |
| 992 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1036 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
| 1037 | # CONFIG_USB_APPLETOUCH is not set | ||
| 993 | 1038 | ||
| 994 | # | 1039 | # |
| 995 | # USB Imaging devices | 1040 | # USB Imaging devices |
| @@ -1088,10 +1133,6 @@ CONFIG_FS_MBCACHE=y | |||
| 1088 | # CONFIG_REISERFS_FS is not set | 1133 | # CONFIG_REISERFS_FS is not set |
| 1089 | # CONFIG_JFS_FS is not set | 1134 | # CONFIG_JFS_FS is not set |
| 1090 | # CONFIG_FS_POSIX_ACL is not set | 1135 | # CONFIG_FS_POSIX_ACL is not set |
| 1091 | |||
| 1092 | # | ||
| 1093 | # XFS support | ||
| 1094 | # | ||
| 1095 | # CONFIG_XFS_FS is not set | 1136 | # CONFIG_XFS_FS is not set |
| 1096 | # CONFIG_MINIX_FS is not set | 1137 | # CONFIG_MINIX_FS is not set |
| 1097 | # CONFIG_ROMFS_FS is not set | 1138 | # CONFIG_ROMFS_FS is not set |
| @@ -1100,6 +1141,7 @@ CONFIG_FS_MBCACHE=y | |||
| 1100 | CONFIG_DNOTIFY=y | 1141 | CONFIG_DNOTIFY=y |
| 1101 | CONFIG_AUTOFS_FS=y | 1142 | CONFIG_AUTOFS_FS=y |
| 1102 | # CONFIG_AUTOFS4_FS is not set | 1143 | # CONFIG_AUTOFS4_FS is not set |
| 1144 | # CONFIG_FUSE_FS is not set | ||
| 1103 | 1145 | ||
| 1104 | # | 1146 | # |
| 1105 | # CD-ROM/DVD Filesystems | 1147 | # CD-ROM/DVD Filesystems |
| @@ -1126,13 +1168,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 1126 | CONFIG_PROC_FS=y | 1168 | CONFIG_PROC_FS=y |
| 1127 | CONFIG_PROC_KCORE=y | 1169 | CONFIG_PROC_KCORE=y |
| 1128 | CONFIG_SYSFS=y | 1170 | CONFIG_SYSFS=y |
| 1129 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
| 1130 | CONFIG_TMPFS=y | 1171 | CONFIG_TMPFS=y |
| 1131 | CONFIG_TMPFS_XATTR=y | ||
| 1132 | CONFIG_TMPFS_SECURITY=y | ||
| 1133 | CONFIG_HUGETLBFS=y | 1172 | CONFIG_HUGETLBFS=y |
| 1134 | CONFIG_HUGETLB_PAGE=y | 1173 | CONFIG_HUGETLB_PAGE=y |
| 1135 | CONFIG_RAMFS=y | 1174 | CONFIG_RAMFS=y |
| 1175 | # CONFIG_RELAYFS_FS is not set | ||
| 1136 | 1176 | ||
| 1137 | # | 1177 | # |
| 1138 | # Miscellaneous filesystems | 1178 | # Miscellaneous filesystems |
| @@ -1177,6 +1217,7 @@ CONFIG_RPCSEC_GSS_KRB5=y | |||
| 1177 | # CONFIG_NCP_FS is not set | 1217 | # CONFIG_NCP_FS is not set |
| 1178 | # CONFIG_CODA_FS is not set | 1218 | # CONFIG_CODA_FS is not set |
| 1179 | # CONFIG_AFS_FS is not set | 1219 | # CONFIG_AFS_FS is not set |
| 1220 | # CONFIG_9P_FS is not set | ||
| 1180 | 1221 | ||
| 1181 | # | 1222 | # |
| 1182 | # Partition Types | 1223 | # Partition Types |
| @@ -1246,10 +1287,12 @@ CONFIG_NLS_UTF8=y | |||
| 1246 | # Library routines | 1287 | # Library routines |
| 1247 | # | 1288 | # |
| 1248 | # CONFIG_CRC_CCITT is not set | 1289 | # CONFIG_CRC_CCITT is not set |
| 1290 | # CONFIG_CRC16 is not set | ||
| 1249 | CONFIG_CRC32=y | 1291 | CONFIG_CRC32=y |
| 1250 | # CONFIG_LIBCRC32C is not set | 1292 | # CONFIG_LIBCRC32C is not set |
| 1251 | CONFIG_GENERIC_HARDIRQS=y | 1293 | CONFIG_GENERIC_HARDIRQS=y |
| 1252 | CONFIG_GENERIC_IRQ_PROBE=y | 1294 | CONFIG_GENERIC_IRQ_PROBE=y |
| 1295 | CONFIG_GENERIC_PENDING_IRQ=y | ||
| 1253 | 1296 | ||
| 1254 | # | 1297 | # |
| 1255 | # Profiling support | 1298 | # Profiling support |
| @@ -1263,6 +1306,7 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
| 1263 | CONFIG_DEBUG_KERNEL=y | 1306 | CONFIG_DEBUG_KERNEL=y |
| 1264 | CONFIG_MAGIC_SYSRQ=y | 1307 | CONFIG_MAGIC_SYSRQ=y |
| 1265 | CONFIG_LOG_BUF_SHIFT=17 | 1308 | CONFIG_LOG_BUF_SHIFT=17 |
| 1309 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1266 | # CONFIG_SCHEDSTATS is not set | 1310 | # CONFIG_SCHEDSTATS is not set |
| 1267 | # CONFIG_DEBUG_SLAB is not set | 1311 | # CONFIG_DEBUG_SLAB is not set |
| 1268 | # CONFIG_DEBUG_SPINLOCK is not set | 1312 | # CONFIG_DEBUG_SPINLOCK is not set |
diff --git a/arch/ia64/defconfig b/arch/ia64/defconfig index 5da208115ea1..6e3f147e03e5 100644 --- a/arch/ia64/defconfig +++ b/arch/ia64/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.12 | 3 | # Linux kernel version: 2.6.14-rc1 |
| 4 | # Tue Jun 21 11:30:42 2005 | 4 | # Wed Sep 14 15:13:03 2005 |
| 5 | # | 5 | # |
| 6 | 6 | ||
| 7 | # | 7 | # |
| @@ -16,6 +16,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 16 | # General setup | 16 | # General setup |
| 17 | # | 17 | # |
| 18 | CONFIG_LOCALVERSION="" | 18 | CONFIG_LOCALVERSION="" |
| 19 | CONFIG_LOCALVERSION_AUTO=y | ||
| 19 | CONFIG_SWAP=y | 20 | CONFIG_SWAP=y |
| 20 | CONFIG_SYSVIPC=y | 21 | CONFIG_SYSVIPC=y |
| 21 | CONFIG_POSIX_MQUEUE=y | 22 | CONFIG_POSIX_MQUEUE=y |
| @@ -27,6 +28,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 27 | CONFIG_IKCONFIG=y | 28 | CONFIG_IKCONFIG=y |
| 28 | CONFIG_IKCONFIG_PROC=y | 29 | CONFIG_IKCONFIG_PROC=y |
| 29 | # CONFIG_CPUSETS is not set | 30 | # CONFIG_CPUSETS is not set |
| 31 | CONFIG_INITRAMFS_SOURCE="" | ||
| 30 | # CONFIG_EMBEDDED is not set | 32 | # CONFIG_EMBEDDED is not set |
| 31 | CONFIG_KALLSYMS=y | 33 | CONFIG_KALLSYMS=y |
| 32 | CONFIG_KALLSYMS_ALL=y | 34 | CONFIG_KALLSYMS_ALL=y |
| @@ -80,6 +82,10 @@ CONFIG_MCKINLEY=y | |||
| 80 | # CONFIG_IA64_PAGE_SIZE_8KB is not set | 82 | # CONFIG_IA64_PAGE_SIZE_8KB is not set |
| 81 | CONFIG_IA64_PAGE_SIZE_16KB=y | 83 | CONFIG_IA64_PAGE_SIZE_16KB=y |
| 82 | # CONFIG_IA64_PAGE_SIZE_64KB is not set | 84 | # CONFIG_IA64_PAGE_SIZE_64KB is not set |
| 85 | # CONFIG_HZ_100 is not set | ||
| 86 | CONFIG_HZ_250=y | ||
| 87 | # CONFIG_HZ_1000 is not set | ||
| 88 | CONFIG_HZ=250 | ||
| 83 | CONFIG_IA64_L1_CACHE_SHIFT=7 | 89 | CONFIG_IA64_L1_CACHE_SHIFT=7 |
| 84 | CONFIG_NUMA=y | 90 | CONFIG_NUMA=y |
| 85 | CONFIG_VIRTUAL_MEM_MAP=y | 91 | CONFIG_VIRTUAL_MEM_MAP=y |
| @@ -87,12 +93,21 @@ CONFIG_HOLES_IN_ZONE=y | |||
| 87 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y | 93 | CONFIG_ARCH_DISCONTIGMEM_ENABLE=y |
| 88 | CONFIG_IA64_CYCLONE=y | 94 | CONFIG_IA64_CYCLONE=y |
| 89 | CONFIG_IOSAPIC=y | 95 | CONFIG_IOSAPIC=y |
| 96 | # CONFIG_IA64_SGI_SN_XP is not set | ||
| 90 | CONFIG_FORCE_MAX_ZONEORDER=18 | 97 | CONFIG_FORCE_MAX_ZONEORDER=18 |
| 91 | CONFIG_SMP=y | 98 | CONFIG_SMP=y |
| 92 | CONFIG_NR_CPUS=512 | 99 | CONFIG_NR_CPUS=512 |
| 93 | CONFIG_HOTPLUG_CPU=y | 100 | CONFIG_HOTPLUG_CPU=y |
| 94 | # CONFIG_SCHED_SMT is not set | 101 | # CONFIG_SCHED_SMT is not set |
| 95 | # CONFIG_PREEMPT is not set | 102 | # CONFIG_PREEMPT is not set |
| 103 | CONFIG_SELECT_MEMORY_MODEL=y | ||
| 104 | # CONFIG_FLATMEM_MANUAL is not set | ||
| 105 | CONFIG_DISCONTIGMEM_MANUAL=y | ||
| 106 | # CONFIG_SPARSEMEM_MANUAL is not set | ||
| 107 | CONFIG_DISCONTIGMEM=y | ||
| 108 | CONFIG_FLAT_NODE_MEM_MAP=y | ||
| 109 | CONFIG_NEED_MULTIPLE_NODES=y | ||
| 110 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 96 | CONFIG_HAVE_DEC_LOCK=y | 111 | CONFIG_HAVE_DEC_LOCK=y |
| 97 | CONFIG_IA32_SUPPORT=y | 112 | CONFIG_IA32_SUPPORT=y |
| 98 | CONFIG_COMPAT=y | 113 | CONFIG_COMPAT=y |
| @@ -105,6 +120,7 @@ CONFIG_IA64_PALINFO=y | |||
| 105 | # | 120 | # |
| 106 | CONFIG_EFI_VARS=y | 121 | CONFIG_EFI_VARS=y |
| 107 | CONFIG_EFI_PCDP=y | 122 | CONFIG_EFI_PCDP=y |
| 123 | # CONFIG_DELL_RBU is not set | ||
| 108 | CONFIG_BINFMT_ELF=y | 124 | CONFIG_BINFMT_ELF=y |
| 109 | CONFIG_BINFMT_MISC=m | 125 | CONFIG_BINFMT_MISC=m |
| 110 | 126 | ||
| @@ -112,30 +128,36 @@ CONFIG_BINFMT_MISC=m | |||
| 112 | # Power management and ACPI | 128 | # Power management and ACPI |
| 113 | # | 129 | # |
| 114 | CONFIG_PM=y | 130 | CONFIG_PM=y |
| 115 | CONFIG_ACPI=y | 131 | # CONFIG_PM_DEBUG is not set |
| 116 | 132 | ||
| 117 | # | 133 | # |
| 118 | # ACPI (Advanced Configuration and Power Interface) Support | 134 | # ACPI (Advanced Configuration and Power Interface) Support |
| 119 | # | 135 | # |
| 136 | CONFIG_ACPI=y | ||
| 120 | CONFIG_ACPI_BUTTON=m | 137 | CONFIG_ACPI_BUTTON=m |
| 121 | CONFIG_ACPI_FAN=m | 138 | CONFIG_ACPI_FAN=m |
| 122 | CONFIG_ACPI_PROCESSOR=m | 139 | CONFIG_ACPI_PROCESSOR=m |
| 123 | CONFIG_ACPI_HOTPLUG_CPU=y | 140 | CONFIG_ACPI_HOTPLUG_CPU=y |
| 124 | CONFIG_ACPI_THERMAL=m | 141 | CONFIG_ACPI_THERMAL=m |
| 125 | CONFIG_ACPI_NUMA=y | 142 | CONFIG_ACPI_NUMA=y |
| 143 | CONFIG_ACPI_BLACKLIST_YEAR=0 | ||
| 126 | # CONFIG_ACPI_DEBUG is not set | 144 | # CONFIG_ACPI_DEBUG is not set |
| 127 | CONFIG_ACPI_POWER=y | 145 | CONFIG_ACPI_POWER=y |
| 128 | CONFIG_ACPI_SYSTEM=y | 146 | CONFIG_ACPI_SYSTEM=y |
| 129 | CONFIG_ACPI_CONTAINER=m | 147 | CONFIG_ACPI_CONTAINER=m |
| 130 | 148 | ||
| 131 | # | 149 | # |
| 150 | # CPU Frequency scaling | ||
| 151 | # | ||
| 152 | # CONFIG_CPU_FREQ is not set | ||
| 153 | |||
| 154 | # | ||
| 132 | # Bus options (PCI, PCMCIA) | 155 | # Bus options (PCI, PCMCIA) |
| 133 | # | 156 | # |
| 134 | CONFIG_PCI=y | 157 | CONFIG_PCI=y |
| 135 | CONFIG_PCI_DOMAINS=y | 158 | CONFIG_PCI_DOMAINS=y |
| 136 | # CONFIG_PCI_MSI is not set | 159 | # CONFIG_PCI_MSI is not set |
| 137 | CONFIG_PCI_LEGACY_PROC=y | 160 | CONFIG_PCI_LEGACY_PROC=y |
| 138 | CONFIG_PCI_NAMES=y | ||
| 139 | # CONFIG_PCI_DEBUG is not set | 161 | # CONFIG_PCI_DEBUG is not set |
| 140 | 162 | ||
| 141 | # | 163 | # |
| @@ -147,6 +169,7 @@ CONFIG_HOTPLUG_PCI_ACPI=m | |||
| 147 | # CONFIG_HOTPLUG_PCI_ACPI_IBM is not set | 169 | # CONFIG_HOTPLUG_PCI_ACPI_IBM is not set |
| 148 | # CONFIG_HOTPLUG_PCI_CPCI is not set | 170 | # CONFIG_HOTPLUG_PCI_CPCI is not set |
| 149 | # CONFIG_HOTPLUG_PCI_SHPC is not set | 171 | # CONFIG_HOTPLUG_PCI_SHPC is not set |
| 172 | # CONFIG_HOTPLUG_PCI_SGI is not set | ||
| 150 | 173 | ||
| 151 | # | 174 | # |
| 152 | # PCCARD (PCMCIA/CardBus) support | 175 | # PCCARD (PCMCIA/CardBus) support |
| @@ -154,6 +177,73 @@ CONFIG_HOTPLUG_PCI_ACPI=m | |||
| 154 | # CONFIG_PCCARD is not set | 177 | # CONFIG_PCCARD is not set |
| 155 | 178 | ||
| 156 | # | 179 | # |
| 180 | # Networking | ||
| 181 | # | ||
| 182 | CONFIG_NET=y | ||
| 183 | |||
| 184 | # | ||
| 185 | # Networking options | ||
| 186 | # | ||
| 187 | CONFIG_PACKET=y | ||
| 188 | # CONFIG_PACKET_MMAP is not set | ||
| 189 | CONFIG_UNIX=y | ||
| 190 | # CONFIG_NET_KEY is not set | ||
| 191 | CONFIG_INET=y | ||
| 192 | CONFIG_IP_MULTICAST=y | ||
| 193 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 194 | CONFIG_IP_FIB_HASH=y | ||
| 195 | # CONFIG_IP_PNP is not set | ||
| 196 | # CONFIG_NET_IPIP is not set | ||
| 197 | # CONFIG_NET_IPGRE is not set | ||
| 198 | # CONFIG_IP_MROUTE is not set | ||
| 199 | CONFIG_ARPD=y | ||
| 200 | CONFIG_SYN_COOKIES=y | ||
| 201 | # CONFIG_INET_AH is not set | ||
| 202 | # CONFIG_INET_ESP is not set | ||
| 203 | # CONFIG_INET_IPCOMP is not set | ||
| 204 | # CONFIG_INET_TUNNEL is not set | ||
| 205 | CONFIG_INET_DIAG=y | ||
| 206 | CONFIG_INET_TCP_DIAG=y | ||
| 207 | # CONFIG_TCP_CONG_ADVANCED is not set | ||
| 208 | CONFIG_TCP_CONG_BIC=y | ||
| 209 | # CONFIG_IPV6 is not set | ||
| 210 | # CONFIG_NETFILTER is not set | ||
| 211 | |||
| 212 | # | ||
| 213 | # DCCP Configuration (EXPERIMENTAL) | ||
| 214 | # | ||
| 215 | # CONFIG_IP_DCCP is not set | ||
| 216 | |||
| 217 | # | ||
| 218 | # SCTP Configuration (EXPERIMENTAL) | ||
| 219 | # | ||
| 220 | # CONFIG_IP_SCTP is not set | ||
| 221 | # CONFIG_ATM is not set | ||
| 222 | # CONFIG_BRIDGE is not set | ||
| 223 | # CONFIG_VLAN_8021Q is not set | ||
| 224 | # CONFIG_DECNET is not set | ||
| 225 | # CONFIG_LLC2 is not set | ||
| 226 | # CONFIG_IPX is not set | ||
| 227 | # CONFIG_ATALK is not set | ||
| 228 | # CONFIG_X25 is not set | ||
| 229 | # CONFIG_LAPB is not set | ||
| 230 | # CONFIG_NET_DIVERT is not set | ||
| 231 | # CONFIG_ECONET is not set | ||
| 232 | # CONFIG_WAN_ROUTER is not set | ||
| 233 | # CONFIG_NET_SCHED is not set | ||
| 234 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 235 | |||
| 236 | # | ||
| 237 | # Network testing | ||
| 238 | # | ||
| 239 | # CONFIG_NET_PKTGEN is not set | ||
| 240 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 241 | # CONFIG_HAMRADIO is not set | ||
| 242 | # CONFIG_IRDA is not set | ||
| 243 | # CONFIG_BT is not set | ||
| 244 | # CONFIG_IEEE80211 is not set | ||
| 245 | |||
| 246 | # | ||
| 157 | # Device Drivers | 247 | # Device Drivers |
| 158 | # | 248 | # |
| 159 | 249 | ||
| @@ -162,10 +252,15 @@ CONFIG_HOTPLUG_PCI_ACPI=m | |||
| 162 | # | 252 | # |
| 163 | CONFIG_STANDALONE=y | 253 | CONFIG_STANDALONE=y |
| 164 | CONFIG_PREVENT_FIRMWARE_BUILD=y | 254 | CONFIG_PREVENT_FIRMWARE_BUILD=y |
| 165 | # CONFIG_FW_LOADER is not set | 255 | CONFIG_FW_LOADER=m |
| 166 | # CONFIG_DEBUG_DRIVER is not set | 256 | # CONFIG_DEBUG_DRIVER is not set |
| 167 | 257 | ||
| 168 | # | 258 | # |
| 259 | # Connector - unified userspace <-> kernelspace linker | ||
| 260 | # | ||
| 261 | # CONFIG_CONNECTOR is not set | ||
| 262 | |||
| 263 | # | ||
| 169 | # Memory Technology Devices (MTD) | 264 | # Memory Technology Devices (MTD) |
| 170 | # | 265 | # |
| 171 | # CONFIG_MTD is not set | 266 | # CONFIG_MTD is not set |
| @@ -178,7 +273,13 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 178 | # | 273 | # |
| 179 | # Plug and Play support | 274 | # Plug and Play support |
| 180 | # | 275 | # |
| 181 | # CONFIG_PNP is not set | 276 | CONFIG_PNP=y |
| 277 | # CONFIG_PNP_DEBUG is not set | ||
| 278 | |||
| 279 | # | ||
| 280 | # Protocols | ||
| 281 | # | ||
| 282 | CONFIG_PNPACPI=y | ||
| 182 | 283 | ||
| 183 | # | 284 | # |
| 184 | # Block devices | 285 | # Block devices |
| @@ -197,7 +298,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 197 | CONFIG_BLK_DEV_RAM_COUNT=16 | 298 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 198 | CONFIG_BLK_DEV_RAM_SIZE=4096 | 299 | CONFIG_BLK_DEV_RAM_SIZE=4096 |
| 199 | CONFIG_BLK_DEV_INITRD=y | 300 | CONFIG_BLK_DEV_INITRD=y |
| 200 | CONFIG_INITRAMFS_SOURCE="" | ||
| 201 | # CONFIG_CDROM_PKTCDVD is not set | 301 | # CONFIG_CDROM_PKTCDVD is not set |
| 202 | 302 | ||
| 203 | # | 303 | # |
| @@ -230,7 +330,8 @@ CONFIG_BLK_DEV_IDESCSI=m | |||
| 230 | # | 330 | # |
| 231 | # IDE chipset support/bugfixes | 331 | # IDE chipset support/bugfixes |
| 232 | # | 332 | # |
| 233 | CONFIG_IDE_GENERIC=y | 333 | # CONFIG_IDE_GENERIC is not set |
| 334 | # CONFIG_BLK_DEV_IDEPNP is not set | ||
| 234 | CONFIG_BLK_DEV_IDEPCI=y | 335 | CONFIG_BLK_DEV_IDEPCI=y |
| 235 | # CONFIG_IDEPCI_SHARE_IRQ is not set | 336 | # CONFIG_IDEPCI_SHARE_IRQ is not set |
| 236 | # CONFIG_BLK_DEV_OFFBOARD is not set | 337 | # CONFIG_BLK_DEV_OFFBOARD is not set |
| @@ -252,6 +353,7 @@ CONFIG_BLK_DEV_CMD64X=y | |||
| 252 | # CONFIG_BLK_DEV_HPT366 is not set | 353 | # CONFIG_BLK_DEV_HPT366 is not set |
| 253 | # CONFIG_BLK_DEV_SC1200 is not set | 354 | # CONFIG_BLK_DEV_SC1200 is not set |
| 254 | CONFIG_BLK_DEV_PIIX=y | 355 | CONFIG_BLK_DEV_PIIX=y |
| 356 | # CONFIG_BLK_DEV_IT821X is not set | ||
| 255 | # CONFIG_BLK_DEV_NS87415 is not set | 357 | # CONFIG_BLK_DEV_NS87415 is not set |
| 256 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set | 358 | # CONFIG_BLK_DEV_PDC202XX_OLD is not set |
| 257 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set | 359 | # CONFIG_BLK_DEV_PDC202XX_NEW is not set |
| @@ -270,6 +372,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 270 | # | 372 | # |
| 271 | # SCSI device support | 373 | # SCSI device support |
| 272 | # | 374 | # |
| 375 | # CONFIG_RAID_ATTRS is not set | ||
| 273 | CONFIG_SCSI=y | 376 | CONFIG_SCSI=y |
| 274 | CONFIG_SCSI_PROC_FS=y | 377 | CONFIG_SCSI_PROC_FS=y |
| 275 | 378 | ||
| @@ -297,6 +400,7 @@ CONFIG_CHR_DEV_SG=m | |||
| 297 | CONFIG_SCSI_SPI_ATTRS=y | 400 | CONFIG_SCSI_SPI_ATTRS=y |
| 298 | CONFIG_SCSI_FC_ATTRS=y | 401 | CONFIG_SCSI_FC_ATTRS=y |
| 299 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 402 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 403 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 300 | 404 | ||
| 301 | # | 405 | # |
| 302 | # SCSI low-level drivers | 406 | # SCSI low-level drivers |
| @@ -314,6 +418,7 @@ CONFIG_SCSI_SATA=y | |||
| 314 | # CONFIG_SCSI_SATA_AHCI is not set | 418 | # CONFIG_SCSI_SATA_AHCI is not set |
| 315 | # CONFIG_SCSI_SATA_SVW is not set | 419 | # CONFIG_SCSI_SATA_SVW is not set |
| 316 | # CONFIG_SCSI_ATA_PIIX is not set | 420 | # CONFIG_SCSI_ATA_PIIX is not set |
| 421 | # CONFIG_SCSI_SATA_MV is not set | ||
| 317 | # CONFIG_SCSI_SATA_NV is not set | 422 | # CONFIG_SCSI_SATA_NV is not set |
| 318 | # CONFIG_SCSI_SATA_PROMISE is not set | 423 | # CONFIG_SCSI_SATA_PROMISE is not set |
| 319 | # CONFIG_SCSI_SATA_QSTOR is not set | 424 | # CONFIG_SCSI_SATA_QSTOR is not set |
| @@ -335,7 +440,6 @@ CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 | |||
| 335 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set | 440 | # CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set |
| 336 | # CONFIG_SCSI_IPR is not set | 441 | # CONFIG_SCSI_IPR is not set |
| 337 | # CONFIG_SCSI_QLOGIC_FC is not set | 442 | # CONFIG_SCSI_QLOGIC_FC is not set |
| 338 | # CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set | ||
| 339 | CONFIG_SCSI_QLOGIC_1280=y | 443 | CONFIG_SCSI_QLOGIC_1280=y |
| 340 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set | 444 | # CONFIG_SCSI_QLOGIC_1280_1040 is not set |
| 341 | CONFIG_SCSI_QLA2XXX=y | 445 | CONFIG_SCSI_QLA2XXX=y |
| @@ -344,6 +448,7 @@ CONFIG_SCSI_QLA22XX=m | |||
| 344 | CONFIG_SCSI_QLA2300=m | 448 | CONFIG_SCSI_QLA2300=m |
| 345 | CONFIG_SCSI_QLA2322=m | 449 | CONFIG_SCSI_QLA2322=m |
| 346 | # CONFIG_SCSI_QLA6312 is not set | 450 | # CONFIG_SCSI_QLA6312 is not set |
| 451 | # CONFIG_SCSI_QLA24XX is not set | ||
| 347 | # CONFIG_SCSI_LPFC is not set | 452 | # CONFIG_SCSI_LPFC is not set |
| 348 | # CONFIG_SCSI_DC395x is not set | 453 | # CONFIG_SCSI_DC395x is not set |
| 349 | # CONFIG_SCSI_DC390T is not set | 454 | # CONFIG_SCSI_DC390T is not set |
| @@ -390,74 +495,14 @@ CONFIG_FUSION_MAX_SGE=128 | |||
| 390 | # CONFIG_I2O is not set | 495 | # CONFIG_I2O is not set |
| 391 | 496 | ||
| 392 | # | 497 | # |
| 393 | # Networking support | 498 | # Network device support |
| 394 | # | ||
| 395 | CONFIG_NET=y | ||
| 396 | |||
| 397 | # | ||
| 398 | # Networking options | ||
| 399 | # | ||
| 400 | CONFIG_PACKET=y | ||
| 401 | # CONFIG_PACKET_MMAP is not set | ||
| 402 | CONFIG_UNIX=y | ||
| 403 | # CONFIG_NET_KEY is not set | ||
| 404 | CONFIG_INET=y | ||
| 405 | CONFIG_IP_MULTICAST=y | ||
| 406 | # CONFIG_IP_ADVANCED_ROUTER is not set | ||
| 407 | # CONFIG_IP_PNP is not set | ||
| 408 | # CONFIG_NET_IPIP is not set | ||
| 409 | # CONFIG_NET_IPGRE is not set | ||
| 410 | # CONFIG_IP_MROUTE is not set | ||
| 411 | CONFIG_ARPD=y | ||
| 412 | CONFIG_SYN_COOKIES=y | ||
| 413 | # CONFIG_INET_AH is not set | ||
| 414 | # CONFIG_INET_ESP is not set | ||
| 415 | # CONFIG_INET_IPCOMP is not set | ||
| 416 | # CONFIG_INET_TUNNEL is not set | ||
| 417 | CONFIG_IP_TCPDIAG=y | ||
| 418 | # CONFIG_IP_TCPDIAG_IPV6 is not set | ||
| 419 | # CONFIG_IPV6 is not set | ||
| 420 | # CONFIG_NETFILTER is not set | ||
| 421 | |||
| 422 | # | ||
| 423 | # SCTP Configuration (EXPERIMENTAL) | ||
| 424 | # | ||
| 425 | # CONFIG_IP_SCTP is not set | ||
| 426 | # CONFIG_ATM is not set | ||
| 427 | # CONFIG_BRIDGE is not set | ||
| 428 | # CONFIG_VLAN_8021Q is not set | ||
| 429 | # CONFIG_DECNET is not set | ||
| 430 | # CONFIG_LLC2 is not set | ||
| 431 | # CONFIG_IPX is not set | ||
| 432 | # CONFIG_ATALK is not set | ||
| 433 | # CONFIG_X25 is not set | ||
| 434 | # CONFIG_LAPB is not set | ||
| 435 | # CONFIG_NET_DIVERT is not set | ||
| 436 | # CONFIG_ECONET is not set | ||
| 437 | # CONFIG_WAN_ROUTER is not set | ||
| 438 | |||
| 439 | # | 499 | # |
| 440 | # QoS and/or fair queueing | ||
| 441 | # | ||
| 442 | # CONFIG_NET_SCHED is not set | ||
| 443 | # CONFIG_NET_CLS_ROUTE is not set | ||
| 444 | |||
| 445 | # | ||
| 446 | # Network testing | ||
| 447 | # | ||
| 448 | # CONFIG_NET_PKTGEN is not set | ||
| 449 | CONFIG_NETPOLL=y | ||
| 450 | # CONFIG_NETPOLL_RX is not set | ||
| 451 | # CONFIG_NETPOLL_TRAP is not set | ||
| 452 | CONFIG_NET_POLL_CONTROLLER=y | ||
| 453 | # CONFIG_HAMRADIO is not set | ||
| 454 | # CONFIG_IRDA is not set | ||
| 455 | # CONFIG_BT is not set | ||
| 456 | CONFIG_NETDEVICES=y | 500 | CONFIG_NETDEVICES=y |
| 457 | CONFIG_DUMMY=m | 501 | CONFIG_DUMMY=m |
| 458 | # CONFIG_BONDING is not set | 502 | # CONFIG_BONDING is not set |
| 459 | # CONFIG_EQUALIZER is not set | 503 | # CONFIG_EQUALIZER is not set |
| 460 | # CONFIG_TUN is not set | 504 | # CONFIG_TUN is not set |
| 505 | # CONFIG_NET_SB1000 is not set | ||
| 461 | 506 | ||
| 462 | # | 507 | # |
| 463 | # ARCnet devices | 508 | # ARCnet devices |
| @@ -465,6 +510,11 @@ CONFIG_DUMMY=m | |||
| 465 | # CONFIG_ARCNET is not set | 510 | # CONFIG_ARCNET is not set |
| 466 | 511 | ||
| 467 | # | 512 | # |
| 513 | # PHY device support | ||
| 514 | # | ||
| 515 | # CONFIG_PHYLIB is not set | ||
| 516 | |||
| 517 | # | ||
| 468 | # Ethernet (10 or 100Mbit) | 518 | # Ethernet (10 or 100Mbit) |
| 469 | # | 519 | # |
| 470 | CONFIG_NET_ETHERNET=y | 520 | CONFIG_NET_ETHERNET=y |
| @@ -485,6 +535,7 @@ CONFIG_TULIP=m | |||
| 485 | # CONFIG_DE4X5 is not set | 535 | # CONFIG_DE4X5 is not set |
| 486 | # CONFIG_WINBOND_840 is not set | 536 | # CONFIG_WINBOND_840 is not set |
| 487 | # CONFIG_DM9102 is not set | 537 | # CONFIG_DM9102 is not set |
| 538 | # CONFIG_ULI526X is not set | ||
| 488 | # CONFIG_HP100 is not set | 539 | # CONFIG_HP100 is not set |
| 489 | CONFIG_NET_PCI=y | 540 | CONFIG_NET_PCI=y |
| 490 | # CONFIG_PCNET32 is not set | 541 | # CONFIG_PCNET32 is not set |
| @@ -516,6 +567,7 @@ CONFIG_E1000=y | |||
| 516 | # CONFIG_HAMACHI is not set | 567 | # CONFIG_HAMACHI is not set |
| 517 | # CONFIG_YELLOWFIN is not set | 568 | # CONFIG_YELLOWFIN is not set |
| 518 | # CONFIG_R8169 is not set | 569 | # CONFIG_R8169 is not set |
| 570 | # CONFIG_SIS190 is not set | ||
| 519 | # CONFIG_SKGE is not set | 571 | # CONFIG_SKGE is not set |
| 520 | # CONFIG_SK98LIN is not set | 572 | # CONFIG_SK98LIN is not set |
| 521 | # CONFIG_VIA_VELOCITY is not set | 573 | # CONFIG_VIA_VELOCITY is not set |
| @@ -525,6 +577,7 @@ CONFIG_TIGON3=y | |||
| 525 | # | 577 | # |
| 526 | # Ethernet (10000 Mbit) | 578 | # Ethernet (10000 Mbit) |
| 527 | # | 579 | # |
| 580 | # CONFIG_CHELSIO_T1 is not set | ||
| 528 | # CONFIG_IXGB is not set | 581 | # CONFIG_IXGB is not set |
| 529 | # CONFIG_S2IO is not set | 582 | # CONFIG_S2IO is not set |
| 530 | 583 | ||
| @@ -549,6 +602,10 @@ CONFIG_TIGON3=y | |||
| 549 | # CONFIG_NET_FC is not set | 602 | # CONFIG_NET_FC is not set |
| 550 | # CONFIG_SHAPER is not set | 603 | # CONFIG_SHAPER is not set |
| 551 | CONFIG_NETCONSOLE=y | 604 | CONFIG_NETCONSOLE=y |
| 605 | CONFIG_NETPOLL=y | ||
| 606 | # CONFIG_NETPOLL_RX is not set | ||
| 607 | # CONFIG_NETPOLL_TRAP is not set | ||
| 608 | CONFIG_NET_POLL_CONTROLLER=y | ||
| 552 | 609 | ||
| 553 | # | 610 | # |
| 554 | # ISDN subsystem | 611 | # ISDN subsystem |
| @@ -607,9 +664,7 @@ CONFIG_GAMEPORT=m | |||
| 607 | # CONFIG_GAMEPORT_NS558 is not set | 664 | # CONFIG_GAMEPORT_NS558 is not set |
| 608 | # CONFIG_GAMEPORT_L4 is not set | 665 | # CONFIG_GAMEPORT_L4 is not set |
| 609 | # CONFIG_GAMEPORT_EMU10K1 is not set | 666 | # CONFIG_GAMEPORT_EMU10K1 is not set |
| 610 | # CONFIG_GAMEPORT_VORTEX is not set | ||
| 611 | # CONFIG_GAMEPORT_FM801 is not set | 667 | # CONFIG_GAMEPORT_FM801 is not set |
| 612 | # CONFIG_GAMEPORT_CS461X is not set | ||
| 613 | 668 | ||
| 614 | # | 669 | # |
| 615 | # Character devices | 670 | # Character devices |
| @@ -620,6 +675,7 @@ CONFIG_HW_CONSOLE=y | |||
| 620 | CONFIG_SERIAL_NONSTANDARD=y | 675 | CONFIG_SERIAL_NONSTANDARD=y |
| 621 | # CONFIG_ROCKETPORT is not set | 676 | # CONFIG_ROCKETPORT is not set |
| 622 | # CONFIG_CYCLADES is not set | 677 | # CONFIG_CYCLADES is not set |
| 678 | # CONFIG_DIGIEPCA is not set | ||
| 623 | # CONFIG_MOXA_SMARTIO is not set | 679 | # CONFIG_MOXA_SMARTIO is not set |
| 624 | # CONFIG_ISI is not set | 680 | # CONFIG_ISI is not set |
| 625 | # CONFIG_SYNCLINKMP is not set | 681 | # CONFIG_SYNCLINKMP is not set |
| @@ -641,7 +697,6 @@ CONFIG_SERIAL_8250_NR_UARTS=6 | |||
| 641 | CONFIG_SERIAL_8250_EXTENDED=y | 697 | CONFIG_SERIAL_8250_EXTENDED=y |
| 642 | CONFIG_SERIAL_8250_SHARE_IRQ=y | 698 | CONFIG_SERIAL_8250_SHARE_IRQ=y |
| 643 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set | 699 | # CONFIG_SERIAL_8250_DETECT_IRQ is not set |
| 644 | # CONFIG_SERIAL_8250_MULTIPORT is not set | ||
| 645 | # CONFIG_SERIAL_8250_RSA is not set | 700 | # CONFIG_SERIAL_8250_RSA is not set |
| 646 | 701 | ||
| 647 | # | 702 | # |
| @@ -650,8 +705,8 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y | |||
| 650 | CONFIG_SERIAL_CORE=y | 705 | CONFIG_SERIAL_CORE=y |
| 651 | CONFIG_SERIAL_CORE_CONSOLE=y | 706 | CONFIG_SERIAL_CORE_CONSOLE=y |
| 652 | CONFIG_SERIAL_SGI_L1_CONSOLE=y | 707 | CONFIG_SERIAL_SGI_L1_CONSOLE=y |
| 653 | CONFIG_SERIAL_SGI_IOC4=y | ||
| 654 | # CONFIG_SERIAL_JSM is not set | 708 | # CONFIG_SERIAL_JSM is not set |
| 709 | CONFIG_SERIAL_SGI_IOC4=y | ||
| 655 | CONFIG_UNIX98_PTYS=y | 710 | CONFIG_UNIX98_PTYS=y |
| 656 | CONFIG_LEGACY_PTYS=y | 711 | CONFIG_LEGACY_PTYS=y |
| 657 | CONFIG_LEGACY_PTY_COUNT=256 | 712 | CONFIG_LEGACY_PTY_COUNT=256 |
| @@ -684,6 +739,8 @@ CONFIG_DRM_R128=m | |||
| 684 | CONFIG_DRM_RADEON=m | 739 | CONFIG_DRM_RADEON=m |
| 685 | CONFIG_DRM_MGA=m | 740 | CONFIG_DRM_MGA=m |
| 686 | CONFIG_DRM_SIS=m | 741 | CONFIG_DRM_SIS=m |
| 742 | # CONFIG_DRM_VIA is not set | ||
| 743 | # CONFIG_DRM_SAVAGE is not set | ||
| 687 | CONFIG_RAW_DRIVER=m | 744 | CONFIG_RAW_DRIVER=m |
| 688 | CONFIG_HPET=y | 745 | CONFIG_HPET=y |
| 689 | # CONFIG_HPET_RTC_IRQ is not set | 746 | # CONFIG_HPET_RTC_IRQ is not set |
| @@ -708,10 +765,21 @@ CONFIG_MMTIMER=y | |||
| 708 | # CONFIG_W1 is not set | 765 | # CONFIG_W1 is not set |
| 709 | 766 | ||
| 710 | # | 767 | # |
| 768 | # Hardware Monitoring support | ||
| 769 | # | ||
| 770 | CONFIG_HWMON=y | ||
| 771 | # CONFIG_HWMON_VID is not set | ||
| 772 | # CONFIG_HWMON_DEBUG_CHIP is not set | ||
| 773 | |||
| 774 | # | ||
| 711 | # Misc devices | 775 | # Misc devices |
| 712 | # | 776 | # |
| 713 | 777 | ||
| 714 | # | 778 | # |
| 779 | # Multimedia Capabilities Port drivers | ||
| 780 | # | ||
| 781 | |||
| 782 | # | ||
| 715 | # Multimedia devices | 783 | # Multimedia devices |
| 716 | # | 784 | # |
| 717 | # CONFIG_VIDEO_DEV is not set | 785 | # CONFIG_VIDEO_DEV is not set |
| @@ -753,6 +821,7 @@ CONFIG_SND_PCM_OSS=m | |||
| 753 | CONFIG_SND_SEQUENCER_OSS=y | 821 | CONFIG_SND_SEQUENCER_OSS=y |
| 754 | CONFIG_SND_VERBOSE_PRINTK=y | 822 | CONFIG_SND_VERBOSE_PRINTK=y |
| 755 | # CONFIG_SND_DEBUG is not set | 823 | # CONFIG_SND_DEBUG is not set |
| 824 | CONFIG_SND_GENERIC_DRIVER=y | ||
| 756 | 825 | ||
| 757 | # | 826 | # |
| 758 | # Generic devices | 827 | # Generic devices |
| @@ -764,11 +833,12 @@ CONFIG_SND_VIRMIDI=m | |||
| 764 | CONFIG_SND_MTPAV=m | 833 | CONFIG_SND_MTPAV=m |
| 765 | CONFIG_SND_SERIAL_U16550=m | 834 | CONFIG_SND_SERIAL_U16550=m |
| 766 | CONFIG_SND_MPU401=m | 835 | CONFIG_SND_MPU401=m |
| 836 | CONFIG_SND_AC97_CODEC=m | ||
| 837 | CONFIG_SND_AC97_BUS=m | ||
| 767 | 838 | ||
| 768 | # | 839 | # |
| 769 | # PCI devices | 840 | # PCI devices |
| 770 | # | 841 | # |
| 771 | CONFIG_SND_AC97_CODEC=m | ||
| 772 | # CONFIG_SND_ALI5451 is not set | 842 | # CONFIG_SND_ALI5451 is not set |
| 773 | # CONFIG_SND_ATIIXP is not set | 843 | # CONFIG_SND_ATIIXP is not set |
| 774 | # CONFIG_SND_ATIIXP_MODEM is not set | 844 | # CONFIG_SND_ATIIXP_MODEM is not set |
| @@ -790,9 +860,10 @@ CONFIG_SND_EMU10K1=m | |||
| 790 | # CONFIG_SND_RME96 is not set | 860 | # CONFIG_SND_RME96 is not set |
| 791 | # CONFIG_SND_RME9652 is not set | 861 | # CONFIG_SND_RME9652 is not set |
| 792 | # CONFIG_SND_HDSP is not set | 862 | # CONFIG_SND_HDSP is not set |
| 863 | # CONFIG_SND_HDSPM is not set | ||
| 793 | # CONFIG_SND_TRIDENT is not set | 864 | # CONFIG_SND_TRIDENT is not set |
| 794 | # CONFIG_SND_YMFPCI is not set | 865 | # CONFIG_SND_YMFPCI is not set |
| 795 | # CONFIG_SND_ALS4000 is not set | 866 | # CONFIG_SND_AD1889 is not set |
| 796 | # CONFIG_SND_CMIPCI is not set | 867 | # CONFIG_SND_CMIPCI is not set |
| 797 | # CONFIG_SND_ENS1370 is not set | 868 | # CONFIG_SND_ENS1370 is not set |
| 798 | # CONFIG_SND_ENS1371 is not set | 869 | # CONFIG_SND_ENS1371 is not set |
| @@ -844,6 +915,7 @@ CONFIG_USB_DEVICEFS=y | |||
| 844 | CONFIG_USB_EHCI_HCD=m | 915 | CONFIG_USB_EHCI_HCD=m |
| 845 | # CONFIG_USB_EHCI_SPLIT_ISO is not set | 916 | # CONFIG_USB_EHCI_SPLIT_ISO is not set |
| 846 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set | 917 | # CONFIG_USB_EHCI_ROOT_HUB_TT is not set |
| 918 | # CONFIG_USB_ISP116X_HCD is not set | ||
| 847 | CONFIG_USB_OHCI_HCD=m | 919 | CONFIG_USB_OHCI_HCD=m |
| 848 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set | 920 | # CONFIG_USB_OHCI_BIG_ENDIAN is not set |
| 849 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y | 921 | CONFIG_USB_OHCI_LITTLE_ENDIAN=y |
| @@ -853,9 +925,8 @@ CONFIG_USB_UHCI_HCD=m | |||
| 853 | # | 925 | # |
| 854 | # USB Device Class drivers | 926 | # USB Device Class drivers |
| 855 | # | 927 | # |
| 856 | # CONFIG_USB_AUDIO is not set | 928 | # CONFIG_OBSOLETE_OSS_USB_DRIVER is not set |
| 857 | # CONFIG_USB_BLUETOOTH_TTY is not set | 929 | # CONFIG_USB_BLUETOOTH_TTY is not set |
| 858 | # CONFIG_USB_MIDI is not set | ||
| 859 | # CONFIG_USB_ACM is not set | 930 | # CONFIG_USB_ACM is not set |
| 860 | # CONFIG_USB_PRINTER is not set | 931 | # CONFIG_USB_PRINTER is not set |
| 861 | 932 | ||
| @@ -888,12 +959,17 @@ CONFIG_USB_HIDINPUT=y | |||
| 888 | # CONFIG_USB_MOUSE is not set | 959 | # CONFIG_USB_MOUSE is not set |
| 889 | # CONFIG_USB_AIPTEK is not set | 960 | # CONFIG_USB_AIPTEK is not set |
| 890 | # CONFIG_USB_WACOM is not set | 961 | # CONFIG_USB_WACOM is not set |
| 962 | # CONFIG_USB_ACECAD is not set | ||
| 891 | # CONFIG_USB_KBTAB is not set | 963 | # CONFIG_USB_KBTAB is not set |
| 892 | # CONFIG_USB_POWERMATE is not set | 964 | # CONFIG_USB_POWERMATE is not set |
| 893 | # CONFIG_USB_MTOUCH is not set | 965 | # CONFIG_USB_MTOUCH is not set |
| 966 | # CONFIG_USB_ITMTOUCH is not set | ||
| 894 | # CONFIG_USB_EGALAX is not set | 967 | # CONFIG_USB_EGALAX is not set |
| 968 | # CONFIG_USB_YEALINK is not set | ||
| 895 | # CONFIG_USB_XPAD is not set | 969 | # CONFIG_USB_XPAD is not set |
| 896 | # CONFIG_USB_ATI_REMOTE is not set | 970 | # CONFIG_USB_ATI_REMOTE is not set |
| 971 | # CONFIG_USB_KEYSPAN_REMOTE is not set | ||
| 972 | # CONFIG_USB_APPLETOUCH is not set | ||
| 897 | 973 | ||
| 898 | # | 974 | # |
| 899 | # USB Imaging devices | 975 | # USB Imaging devices |
| @@ -918,7 +994,7 @@ CONFIG_USB_HIDINPUT=y | |||
| 918 | # CONFIG_USB_PEGASUS is not set | 994 | # CONFIG_USB_PEGASUS is not set |
| 919 | # CONFIG_USB_RTL8150 is not set | 995 | # CONFIG_USB_RTL8150 is not set |
| 920 | # CONFIG_USB_USBNET is not set | 996 | # CONFIG_USB_USBNET is not set |
| 921 | CONFIG_USB_MON=m | 997 | CONFIG_USB_MON=y |
| 922 | 998 | ||
| 923 | # | 999 | # |
| 924 | # USB port drivers | 1000 | # USB port drivers |
| @@ -944,10 +1020,11 @@ CONFIG_USB_MON=m | |||
| 944 | # CONFIG_USB_PHIDGETSERVO is not set | 1020 | # CONFIG_USB_PHIDGETSERVO is not set |
| 945 | # CONFIG_USB_IDMOUSE is not set | 1021 | # CONFIG_USB_IDMOUSE is not set |
| 946 | # CONFIG_USB_SISUSBVGA is not set | 1022 | # CONFIG_USB_SISUSBVGA is not set |
| 1023 | # CONFIG_USB_LD is not set | ||
| 947 | # CONFIG_USB_TEST is not set | 1024 | # CONFIG_USB_TEST is not set |
| 948 | 1025 | ||
| 949 | # | 1026 | # |
| 950 | # USB ATM/DSL drivers | 1027 | # USB DSL modem support |
| 951 | # | 1028 | # |
| 952 | 1029 | ||
| 953 | # | 1030 | # |
| @@ -964,6 +1041,8 @@ CONFIG_USB_MON=m | |||
| 964 | # InfiniBand support | 1041 | # InfiniBand support |
| 965 | # | 1042 | # |
| 966 | CONFIG_INFINIBAND=m | 1043 | CONFIG_INFINIBAND=m |
| 1044 | # CONFIG_INFINIBAND_USER_MAD is not set | ||
| 1045 | # CONFIG_INFINIBAND_USER_ACCESS is not set | ||
| 967 | CONFIG_INFINIBAND_MTHCA=m | 1046 | CONFIG_INFINIBAND_MTHCA=m |
| 968 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set | 1047 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set |
| 969 | CONFIG_INFINIBAND_IPOIB=m | 1048 | CONFIG_INFINIBAND_IPOIB=m |
| @@ -981,6 +1060,7 @@ CONFIG_EXT2_FS=y | |||
| 981 | CONFIG_EXT2_FS_XATTR=y | 1060 | CONFIG_EXT2_FS_XATTR=y |
| 982 | CONFIG_EXT2_FS_POSIX_ACL=y | 1061 | CONFIG_EXT2_FS_POSIX_ACL=y |
| 983 | CONFIG_EXT2_FS_SECURITY=y | 1062 | CONFIG_EXT2_FS_SECURITY=y |
| 1063 | # CONFIG_EXT2_FS_XIP is not set | ||
| 984 | CONFIG_EXT3_FS=y | 1064 | CONFIG_EXT3_FS=y |
| 985 | CONFIG_EXT3_FS_XATTR=y | 1065 | CONFIG_EXT3_FS_XATTR=y |
| 986 | CONFIG_EXT3_FS_POSIX_ACL=y | 1066 | CONFIG_EXT3_FS_POSIX_ACL=y |
| @@ -996,22 +1076,20 @@ CONFIG_REISERFS_FS_POSIX_ACL=y | |||
| 996 | CONFIG_REISERFS_FS_SECURITY=y | 1076 | CONFIG_REISERFS_FS_SECURITY=y |
| 997 | # CONFIG_JFS_FS is not set | 1077 | # CONFIG_JFS_FS is not set |
| 998 | CONFIG_FS_POSIX_ACL=y | 1078 | CONFIG_FS_POSIX_ACL=y |
| 999 | |||
| 1000 | # | ||
| 1001 | # XFS support | ||
| 1002 | # | ||
| 1003 | CONFIG_XFS_FS=y | 1079 | CONFIG_XFS_FS=y |
| 1004 | CONFIG_XFS_EXPORT=y | 1080 | CONFIG_XFS_EXPORT=y |
| 1005 | # CONFIG_XFS_RT is not set | ||
| 1006 | # CONFIG_XFS_QUOTA is not set | 1081 | # CONFIG_XFS_QUOTA is not set |
| 1007 | # CONFIG_XFS_SECURITY is not set | 1082 | # CONFIG_XFS_SECURITY is not set |
| 1008 | # CONFIG_XFS_POSIX_ACL is not set | 1083 | # CONFIG_XFS_POSIX_ACL is not set |
| 1084 | # CONFIG_XFS_RT is not set | ||
| 1009 | # CONFIG_MINIX_FS is not set | 1085 | # CONFIG_MINIX_FS is not set |
| 1010 | # CONFIG_ROMFS_FS is not set | 1086 | # CONFIG_ROMFS_FS is not set |
| 1087 | CONFIG_INOTIFY=y | ||
| 1011 | # CONFIG_QUOTA is not set | 1088 | # CONFIG_QUOTA is not set |
| 1012 | CONFIG_DNOTIFY=y | 1089 | CONFIG_DNOTIFY=y |
| 1013 | CONFIG_AUTOFS_FS=y | 1090 | CONFIG_AUTOFS_FS=y |
| 1014 | CONFIG_AUTOFS4_FS=y | 1091 | CONFIG_AUTOFS4_FS=y |
| 1092 | # CONFIG_FUSE_FS is not set | ||
| 1015 | 1093 | ||
| 1016 | # | 1094 | # |
| 1017 | # CD-ROM/DVD Filesystems | 1095 | # CD-ROM/DVD Filesystems |
| @@ -1040,14 +1118,11 @@ CONFIG_NTFS_FS=m | |||
| 1040 | CONFIG_PROC_FS=y | 1118 | CONFIG_PROC_FS=y |
| 1041 | CONFIG_PROC_KCORE=y | 1119 | CONFIG_PROC_KCORE=y |
| 1042 | CONFIG_SYSFS=y | 1120 | CONFIG_SYSFS=y |
| 1043 | # CONFIG_DEVFS_FS is not set | ||
| 1044 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
| 1045 | CONFIG_TMPFS=y | 1121 | CONFIG_TMPFS=y |
| 1046 | CONFIG_TMPFS_XATTR=y | ||
| 1047 | CONFIG_TMPFS_SECURITY=y | ||
| 1048 | CONFIG_HUGETLBFS=y | 1122 | CONFIG_HUGETLBFS=y |
| 1049 | CONFIG_HUGETLB_PAGE=y | 1123 | CONFIG_HUGETLB_PAGE=y |
| 1050 | CONFIG_RAMFS=y | 1124 | CONFIG_RAMFS=y |
| 1125 | # CONFIG_RELAYFS_FS is not set | ||
| 1051 | 1126 | ||
| 1052 | # | 1127 | # |
| 1053 | # Miscellaneous filesystems | 1128 | # Miscellaneous filesystems |
| @@ -1071,15 +1146,18 @@ CONFIG_RAMFS=y | |||
| 1071 | # | 1146 | # |
| 1072 | CONFIG_NFS_FS=m | 1147 | CONFIG_NFS_FS=m |
| 1073 | CONFIG_NFS_V3=y | 1148 | CONFIG_NFS_V3=y |
| 1149 | # CONFIG_NFS_V3_ACL is not set | ||
| 1074 | CONFIG_NFS_V4=y | 1150 | CONFIG_NFS_V4=y |
| 1075 | CONFIG_NFS_DIRECTIO=y | 1151 | CONFIG_NFS_DIRECTIO=y |
| 1076 | CONFIG_NFSD=m | 1152 | CONFIG_NFSD=m |
| 1077 | CONFIG_NFSD_V3=y | 1153 | CONFIG_NFSD_V3=y |
| 1154 | # CONFIG_NFSD_V3_ACL is not set | ||
| 1078 | CONFIG_NFSD_V4=y | 1155 | CONFIG_NFSD_V4=y |
| 1079 | CONFIG_NFSD_TCP=y | 1156 | CONFIG_NFSD_TCP=y |
| 1080 | CONFIG_LOCKD=m | 1157 | CONFIG_LOCKD=m |
| 1081 | CONFIG_LOCKD_V4=y | 1158 | CONFIG_LOCKD_V4=y |
| 1082 | CONFIG_EXPORTFS=y | 1159 | CONFIG_EXPORTFS=y |
| 1160 | CONFIG_NFS_COMMON=y | ||
| 1083 | CONFIG_SUNRPC=m | 1161 | CONFIG_SUNRPC=m |
| 1084 | CONFIG_SUNRPC_GSS=m | 1162 | CONFIG_SUNRPC_GSS=m |
| 1085 | CONFIG_RPCSEC_GSS_KRB5=m | 1163 | CONFIG_RPCSEC_GSS_KRB5=m |
| @@ -1094,6 +1172,7 @@ CONFIG_CIFS=m | |||
| 1094 | # CONFIG_NCP_FS is not set | 1172 | # CONFIG_NCP_FS is not set |
| 1095 | # CONFIG_CODA_FS is not set | 1173 | # CONFIG_CODA_FS is not set |
| 1096 | # CONFIG_AFS_FS is not set | 1174 | # CONFIG_AFS_FS is not set |
| 1175 | # CONFIG_9P_FS is not set | ||
| 1097 | 1176 | ||
| 1098 | # | 1177 | # |
| 1099 | # Partition Types | 1178 | # Partition Types |
| @@ -1163,10 +1242,12 @@ CONFIG_NLS_UTF8=m | |||
| 1163 | # Library routines | 1242 | # Library routines |
| 1164 | # | 1243 | # |
| 1165 | # CONFIG_CRC_CCITT is not set | 1244 | # CONFIG_CRC_CCITT is not set |
| 1245 | # CONFIG_CRC16 is not set | ||
| 1166 | CONFIG_CRC32=y | 1246 | CONFIG_CRC32=y |
| 1167 | # CONFIG_LIBCRC32C is not set | 1247 | # CONFIG_LIBCRC32C is not set |
| 1168 | CONFIG_GENERIC_HARDIRQS=y | 1248 | CONFIG_GENERIC_HARDIRQS=y |
| 1169 | CONFIG_GENERIC_IRQ_PROBE=y | 1249 | CONFIG_GENERIC_IRQ_PROBE=y |
| 1250 | CONFIG_GENERIC_PENDING_IRQ=y | ||
| 1170 | 1251 | ||
| 1171 | # | 1252 | # |
| 1172 | # HP Simulator drivers | 1253 | # HP Simulator drivers |
| @@ -1187,6 +1268,7 @@ CONFIG_GENERIC_IRQ_PROBE=y | |||
| 1187 | CONFIG_DEBUG_KERNEL=y | 1268 | CONFIG_DEBUG_KERNEL=y |
| 1188 | CONFIG_MAGIC_SYSRQ=y | 1269 | CONFIG_MAGIC_SYSRQ=y |
| 1189 | CONFIG_LOG_BUF_SHIFT=20 | 1270 | CONFIG_LOG_BUF_SHIFT=20 |
| 1271 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1190 | # CONFIG_SCHEDSTATS is not set | 1272 | # CONFIG_SCHEDSTATS is not set |
| 1191 | # CONFIG_DEBUG_SLAB is not set | 1273 | # CONFIG_DEBUG_SLAB is not set |
| 1192 | # CONFIG_DEBUG_SPINLOCK is not set | 1274 | # CONFIG_DEBUG_SPINLOCK is not set |
| @@ -1194,6 +1276,7 @@ CONFIG_LOG_BUF_SHIFT=20 | |||
| 1194 | # CONFIG_DEBUG_KOBJECT is not set | 1276 | # CONFIG_DEBUG_KOBJECT is not set |
| 1195 | # CONFIG_DEBUG_INFO is not set | 1277 | # CONFIG_DEBUG_INFO is not set |
| 1196 | # CONFIG_DEBUG_FS is not set | 1278 | # CONFIG_DEBUG_FS is not set |
| 1279 | # CONFIG_KPROBES is not set | ||
| 1197 | CONFIG_IA64_GRANULE_16MB=y | 1280 | CONFIG_IA64_GRANULE_16MB=y |
| 1198 | # CONFIG_IA64_GRANULE_64MB is not set | 1281 | # CONFIG_IA64_GRANULE_64MB is not set |
| 1199 | # CONFIG_IA64_PRINT_HAZARDS is not set | 1282 | # CONFIG_IA64_PRINT_HAZARDS is not set |
| @@ -1215,7 +1298,7 @@ CONFIG_CRYPTO=y | |||
| 1215 | # CONFIG_CRYPTO_HMAC is not set | 1298 | # CONFIG_CRYPTO_HMAC is not set |
| 1216 | # CONFIG_CRYPTO_NULL is not set | 1299 | # CONFIG_CRYPTO_NULL is not set |
| 1217 | # CONFIG_CRYPTO_MD4 is not set | 1300 | # CONFIG_CRYPTO_MD4 is not set |
| 1218 | CONFIG_CRYPTO_MD5=m | 1301 | CONFIG_CRYPTO_MD5=y |
| 1219 | # CONFIG_CRYPTO_SHA1 is not set | 1302 | # CONFIG_CRYPTO_SHA1 is not set |
| 1220 | # CONFIG_CRYPTO_SHA256 is not set | 1303 | # CONFIG_CRYPTO_SHA256 is not set |
| 1221 | # CONFIG_CRYPTO_SHA512 is not set | 1304 | # CONFIG_CRYPTO_SHA512 is not set |
diff --git a/arch/ia64/hp/common/hwsw_iommu.c b/arch/ia64/hp/common/hwsw_iommu.c index 80f8ef013939..317c334c5a18 100644 --- a/arch/ia64/hp/common/hwsw_iommu.c +++ b/arch/ia64/hp/common/hwsw_iommu.c | |||
| @@ -17,7 +17,7 @@ | |||
| 17 | #include <asm/machvec.h> | 17 | #include <asm/machvec.h> |
| 18 | 18 | ||
| 19 | /* swiotlb declarations & definitions: */ | 19 | /* swiotlb declarations & definitions: */ |
| 20 | extern void swiotlb_init_with_default_size (size_t size); | 20 | extern int swiotlb_late_init_with_default_size (size_t size); |
| 21 | extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; | 21 | extern ia64_mv_dma_alloc_coherent swiotlb_alloc_coherent; |
| 22 | extern ia64_mv_dma_free_coherent swiotlb_free_coherent; | 22 | extern ia64_mv_dma_free_coherent swiotlb_free_coherent; |
| 23 | extern ia64_mv_dma_map_single swiotlb_map_single; | 23 | extern ia64_mv_dma_map_single swiotlb_map_single; |
| @@ -67,7 +67,16 @@ void | |||
| 67 | hwsw_init (void) | 67 | hwsw_init (void) |
| 68 | { | 68 | { |
| 69 | /* default to a smallish 2MB sw I/O TLB */ | 69 | /* default to a smallish 2MB sw I/O TLB */ |
| 70 | swiotlb_init_with_default_size (2 * (1<<20)); | 70 | if (swiotlb_late_init_with_default_size (2 * (1<<20)) != 0) { |
| 71 | #ifdef CONFIG_IA64_GENERIC | ||
| 72 | /* Better to have normal DMA than panic */ | ||
| 73 | printk(KERN_WARNING "%s: Failed to initialize software I/O TLB," | ||
| 74 | " reverting to hpzx1 platform vector\n", __FUNCTION__); | ||
| 75 | machvec_init("hpzx1"); | ||
| 76 | #else | ||
| 77 | panic("Unable to initialize software I/O TLB services"); | ||
| 78 | #endif | ||
| 79 | } | ||
| 71 | } | 80 | } |
| 72 | 81 | ||
| 73 | void * | 82 | void * |
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index 11957598a8b9..e64ca04ace89 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
| @@ -2028,9 +2028,40 @@ static struct acpi_driver acpi_sba_ioc_driver = { | |||
| 2028 | static int __init | 2028 | static int __init |
| 2029 | sba_init(void) | 2029 | sba_init(void) |
| 2030 | { | 2030 | { |
| 2031 | if (!ia64_platform_is("hpzx1") && !ia64_platform_is("hpzx1_swiotlb")) | ||
| 2032 | return 0; | ||
| 2033 | |||
| 2031 | acpi_bus_register_driver(&acpi_sba_ioc_driver); | 2034 | acpi_bus_register_driver(&acpi_sba_ioc_driver); |
| 2032 | if (!ioc_list) | 2035 | if (!ioc_list) { |
| 2036 | #ifdef CONFIG_IA64_GENERIC | ||
| 2037 | extern int swiotlb_late_init_with_default_size (size_t size); | ||
| 2038 | |||
| 2039 | /* | ||
| 2040 | * If we didn't find something sba_iommu can claim, we | ||
| 2041 | * need to setup the swiotlb and switch to the dig machvec. | ||
| 2042 | */ | ||
| 2043 | if (swiotlb_late_init_with_default_size(64 * (1<<20)) != 0) | ||
| 2044 | panic("Unable to find SBA IOMMU or initialize " | ||
| 2045 | "software I/O TLB: Try machvec=dig boot option"); | ||
| 2046 | machvec_init("dig"); | ||
| 2047 | #else | ||
| 2048 | panic("Unable to find SBA IOMMU: Try a generic or DIG kernel"); | ||
| 2049 | #endif | ||
| 2033 | return 0; | 2050 | return 0; |
| 2051 | } | ||
| 2052 | |||
| 2053 | #if defined(CONFIG_IA64_GENERIC) || defined(CONFIG_IA64_HP_ZX1_SWIOTLB) | ||
| 2054 | /* | ||
| 2055 | * hpzx1_swiotlb needs to have a fairly small swiotlb bounce | ||
| 2056 | * buffer setup to support devices with smaller DMA masks than | ||
| 2057 | * sba_iommu can handle. | ||
| 2058 | */ | ||
| 2059 | if (ia64_platform_is("hpzx1_swiotlb")) { | ||
| 2060 | extern void hwsw_init(void); | ||
| 2061 | |||
| 2062 | hwsw_init(); | ||
| 2063 | } | ||
| 2064 | #endif | ||
| 2034 | 2065 | ||
| 2035 | #ifdef CONFIG_PCI | 2066 | #ifdef CONFIG_PCI |
| 2036 | { | 2067 | { |
| @@ -2048,18 +2079,6 @@ sba_init(void) | |||
| 2048 | 2079 | ||
| 2049 | subsys_initcall(sba_init); /* must be initialized after ACPI etc., but before any drivers... */ | 2080 | subsys_initcall(sba_init); /* must be initialized after ACPI etc., but before any drivers... */ |
| 2050 | 2081 | ||
| 2051 | extern void dig_setup(char**); | ||
| 2052 | /* | ||
| 2053 | * MAX_DMA_ADDRESS needs to be setup prior to paging_init to do any good, | ||
| 2054 | * so we use the platform_setup hook to fix it up. | ||
| 2055 | */ | ||
| 2056 | void __init | ||
| 2057 | sba_setup(char **cmdline_p) | ||
| 2058 | { | ||
| 2059 | MAX_DMA_ADDRESS = ~0UL; | ||
| 2060 | dig_setup(cmdline_p); | ||
| 2061 | } | ||
| 2062 | |||
| 2063 | static int __init | 2082 | static int __init |
| 2064 | nosbagart(char *str) | 2083 | nosbagart(char *str) |
| 2065 | { | 2084 | { |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 7e926471e4ec..9ad94ddf6687 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
| @@ -838,7 +838,7 @@ EXPORT_SYMBOL(acpi_unmap_lsapic); | |||
| 838 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ | 838 | #endif /* CONFIG_ACPI_HOTPLUG_CPU */ |
| 839 | 839 | ||
| 840 | #ifdef CONFIG_ACPI_NUMA | 840 | #ifdef CONFIG_ACPI_NUMA |
| 841 | acpi_status __devinit | 841 | static acpi_status __devinit |
| 842 | acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret) | 842 | acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret) |
| 843 | { | 843 | { |
| 844 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | 844 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
| @@ -890,7 +890,16 @@ acpi_map_iosapic(acpi_handle handle, u32 depth, void *context, void **ret) | |||
| 890 | map_iosapic_to_node(gsi_base, node); | 890 | map_iosapic_to_node(gsi_base, node); |
| 891 | return AE_OK; | 891 | return AE_OK; |
| 892 | } | 892 | } |
| 893 | #endif /* CONFIG_NUMA */ | 893 | |
| 894 | static int __init | ||
| 895 | acpi_map_iosapics (void) | ||
| 896 | { | ||
| 897 | acpi_get_devices(NULL, acpi_map_iosapic, NULL, NULL); | ||
| 898 | return 0; | ||
| 899 | } | ||
| 900 | |||
| 901 | fs_initcall(acpi_map_iosapics); | ||
| 902 | #endif /* CONFIG_ACPI_NUMA */ | ||
| 894 | 903 | ||
| 895 | int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) | 904 | int acpi_register_ioapic(acpi_handle handle, u64 phys_addr, u32 gsi_base) |
| 896 | { | 905 | { |
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index 179f230816ed..f72ea6aebcb1 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
| @@ -239,57 +239,30 @@ is_available_memory (efi_memory_desc_t *md) | |||
| 239 | return 0; | 239 | return 0; |
| 240 | } | 240 | } |
| 241 | 241 | ||
| 242 | /* | 242 | typedef struct kern_memdesc { |
| 243 | * Trim descriptor MD so its starts at address START_ADDR. If the descriptor covers | 243 | u64 attribute; |
| 244 | * memory that is normally available to the kernel, issue a warning that some memory | 244 | u64 start; |
| 245 | * is being ignored. | 245 | u64 num_pages; |
| 246 | */ | 246 | } kern_memdesc_t; |
| 247 | static void | ||
| 248 | trim_bottom (efi_memory_desc_t *md, u64 start_addr) | ||
| 249 | { | ||
| 250 | u64 num_skipped_pages; | ||
| 251 | 247 | ||
| 252 | if (md->phys_addr >= start_addr || !md->num_pages) | 248 | static kern_memdesc_t *kern_memmap; |
| 253 | return; | ||
| 254 | |||
| 255 | num_skipped_pages = (start_addr - md->phys_addr) >> EFI_PAGE_SHIFT; | ||
| 256 | if (num_skipped_pages > md->num_pages) | ||
| 257 | num_skipped_pages = md->num_pages; | ||
| 258 | |||
| 259 | if (is_available_memory(md)) | ||
| 260 | printk(KERN_NOTICE "efi.%s: ignoring %luKB of memory at 0x%lx due to granule hole " | ||
| 261 | "at 0x%lx\n", __FUNCTION__, | ||
| 262 | (num_skipped_pages << EFI_PAGE_SHIFT) >> 10, | ||
| 263 | md->phys_addr, start_addr - IA64_GRANULE_SIZE); | ||
| 264 | /* | ||
| 265 | * NOTE: Don't set md->phys_addr to START_ADDR because that could cause the memory | ||
| 266 | * descriptor list to become unsorted. In such a case, md->num_pages will be | ||
| 267 | * zero, so the Right Thing will happen. | ||
| 268 | */ | ||
| 269 | md->phys_addr += num_skipped_pages << EFI_PAGE_SHIFT; | ||
| 270 | md->num_pages -= num_skipped_pages; | ||
| 271 | } | ||
| 272 | 249 | ||
| 273 | static void | 250 | static void |
| 274 | trim_top (efi_memory_desc_t *md, u64 end_addr) | 251 | walk (efi_freemem_callback_t callback, void *arg, u64 attr) |
| 275 | { | 252 | { |
| 276 | u64 num_dropped_pages, md_end_addr; | 253 | kern_memdesc_t *k; |
| 277 | 254 | u64 start, end, voff; | |
| 278 | md_end_addr = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT); | ||
| 279 | |||
| 280 | if (md_end_addr <= end_addr || !md->num_pages) | ||
| 281 | return; | ||
| 282 | 255 | ||
| 283 | num_dropped_pages = (md_end_addr - end_addr) >> EFI_PAGE_SHIFT; | 256 | voff = (attr == EFI_MEMORY_WB) ? PAGE_OFFSET : __IA64_UNCACHED_OFFSET; |
| 284 | if (num_dropped_pages > md->num_pages) | 257 | for (k = kern_memmap; k->start != ~0UL; k++) { |
| 285 | num_dropped_pages = md->num_pages; | 258 | if (k->attribute != attr) |
| 286 | 259 | continue; | |
| 287 | if (is_available_memory(md)) | 260 | start = PAGE_ALIGN(k->start); |
| 288 | printk(KERN_NOTICE "efi.%s: ignoring %luKB of memory at 0x%lx due to granule hole " | 261 | end = (k->start + (k->num_pages << EFI_PAGE_SHIFT)) & PAGE_MASK; |
| 289 | "at 0x%lx\n", __FUNCTION__, | 262 | if (start < end) |
| 290 | (num_dropped_pages << EFI_PAGE_SHIFT) >> 10, | 263 | if ((*callback)(start + voff, end + voff, arg) < 0) |
| 291 | md->phys_addr, end_addr); | 264 | return; |
| 292 | md->num_pages -= num_dropped_pages; | 265 | } |
| 293 | } | 266 | } |
| 294 | 267 | ||
| 295 | /* | 268 | /* |
| @@ -299,148 +272,19 @@ trim_top (efi_memory_desc_t *md, u64 end_addr) | |||
| 299 | void | 272 | void |
| 300 | efi_memmap_walk (efi_freemem_callback_t callback, void *arg) | 273 | efi_memmap_walk (efi_freemem_callback_t callback, void *arg) |
| 301 | { | 274 | { |
| 302 | int prev_valid = 0; | 275 | walk(callback, arg, EFI_MEMORY_WB); |
| 303 | struct range { | ||
| 304 | u64 start; | ||
| 305 | u64 end; | ||
| 306 | } prev, curr; | ||
| 307 | void *efi_map_start, *efi_map_end, *p, *q; | ||
| 308 | efi_memory_desc_t *md, *check_md; | ||
| 309 | u64 efi_desc_size, start, end, granule_addr, last_granule_addr, first_non_wb_addr = 0; | ||
| 310 | unsigned long total_mem = 0; | ||
| 311 | |||
| 312 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ||
| 313 | efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size; | ||
| 314 | efi_desc_size = ia64_boot_param->efi_memdesc_size; | ||
| 315 | |||
| 316 | for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) { | ||
| 317 | md = p; | ||
| 318 | |||
| 319 | /* skip over non-WB memory descriptors; that's all we're interested in... */ | ||
| 320 | if (!(md->attribute & EFI_MEMORY_WB)) | ||
| 321 | continue; | ||
| 322 | |||
| 323 | /* | ||
| 324 | * granule_addr is the base of md's first granule. | ||
| 325 | * [granule_addr - first_non_wb_addr) is guaranteed to | ||
| 326 | * be contiguous WB memory. | ||
| 327 | */ | ||
| 328 | granule_addr = GRANULEROUNDDOWN(md->phys_addr); | ||
| 329 | first_non_wb_addr = max(first_non_wb_addr, granule_addr); | ||
| 330 | |||
| 331 | if (first_non_wb_addr < md->phys_addr) { | ||
| 332 | trim_bottom(md, granule_addr + IA64_GRANULE_SIZE); | ||
| 333 | granule_addr = GRANULEROUNDDOWN(md->phys_addr); | ||
| 334 | first_non_wb_addr = max(first_non_wb_addr, granule_addr); | ||
| 335 | } | ||
| 336 | |||
| 337 | for (q = p; q < efi_map_end; q += efi_desc_size) { | ||
| 338 | check_md = q; | ||
| 339 | |||
| 340 | if ((check_md->attribute & EFI_MEMORY_WB) && | ||
| 341 | (check_md->phys_addr == first_non_wb_addr)) | ||
| 342 | first_non_wb_addr += check_md->num_pages << EFI_PAGE_SHIFT; | ||
| 343 | else | ||
| 344 | break; /* non-WB or hole */ | ||
| 345 | } | ||
| 346 | |||
| 347 | last_granule_addr = GRANULEROUNDDOWN(first_non_wb_addr); | ||
| 348 | if (last_granule_addr < md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT)) | ||
| 349 | trim_top(md, last_granule_addr); | ||
| 350 | |||
| 351 | if (is_available_memory(md)) { | ||
| 352 | if (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) >= max_addr) { | ||
| 353 | if (md->phys_addr >= max_addr) | ||
| 354 | continue; | ||
| 355 | md->num_pages = (max_addr - md->phys_addr) >> EFI_PAGE_SHIFT; | ||
| 356 | first_non_wb_addr = max_addr; | ||
| 357 | } | ||
| 358 | |||
| 359 | if (total_mem >= mem_limit) | ||
| 360 | continue; | ||
| 361 | |||
| 362 | if (total_mem + (md->num_pages << EFI_PAGE_SHIFT) > mem_limit) { | ||
| 363 | unsigned long limit_addr = md->phys_addr; | ||
| 364 | |||
| 365 | limit_addr += mem_limit - total_mem; | ||
| 366 | limit_addr = GRANULEROUNDDOWN(limit_addr); | ||
| 367 | |||
| 368 | if (md->phys_addr > limit_addr) | ||
| 369 | continue; | ||
| 370 | |||
| 371 | md->num_pages = (limit_addr - md->phys_addr) >> | ||
| 372 | EFI_PAGE_SHIFT; | ||
| 373 | first_non_wb_addr = max_addr = md->phys_addr + | ||
| 374 | (md->num_pages << EFI_PAGE_SHIFT); | ||
| 375 | } | ||
| 376 | total_mem += (md->num_pages << EFI_PAGE_SHIFT); | ||
| 377 | |||
| 378 | if (md->num_pages == 0) | ||
| 379 | continue; | ||
| 380 | |||
| 381 | curr.start = PAGE_OFFSET + md->phys_addr; | ||
| 382 | curr.end = curr.start + (md->num_pages << EFI_PAGE_SHIFT); | ||
| 383 | |||
| 384 | if (!prev_valid) { | ||
| 385 | prev = curr; | ||
| 386 | prev_valid = 1; | ||
| 387 | } else { | ||
| 388 | if (curr.start < prev.start) | ||
| 389 | printk(KERN_ERR "Oops: EFI memory table not ordered!\n"); | ||
| 390 | |||
| 391 | if (prev.end == curr.start) { | ||
| 392 | /* merge two consecutive memory ranges */ | ||
| 393 | prev.end = curr.end; | ||
| 394 | } else { | ||
| 395 | start = PAGE_ALIGN(prev.start); | ||
| 396 | end = prev.end & PAGE_MASK; | ||
| 397 | if ((end > start) && (*callback)(start, end, arg) < 0) | ||
| 398 | return; | ||
| 399 | prev = curr; | ||
| 400 | } | ||
| 401 | } | ||
| 402 | } | ||
| 403 | } | ||
| 404 | if (prev_valid) { | ||
| 405 | start = PAGE_ALIGN(prev.start); | ||
| 406 | end = prev.end & PAGE_MASK; | ||
| 407 | if (end > start) | ||
| 408 | (*callback)(start, end, arg); | ||
| 409 | } | ||
| 410 | } | 276 | } |
| 411 | 277 | ||
| 412 | /* | 278 | /* |
| 413 | * Walk the EFI memory map to pull out leftover pages in the lower | 279 | * Walks the EFI memory map and calls CALLBACK once for each EFI memory descriptor that |
| 414 | * memory regions which do not end up in the regular memory map and | 280 | * has memory that is available for uncached allocator. |
| 415 | * stick them into the uncached allocator | ||
| 416 | * | ||
| 417 | * The regular walk function is significantly more complex than the | ||
| 418 | * uncached walk which means it really doesn't make sense to try and | ||
| 419 | * marge the two. | ||
| 420 | */ | 281 | */ |
| 421 | void __init | 282 | void |
| 422 | efi_memmap_walk_uc (efi_freemem_callback_t callback) | 283 | efi_memmap_walk_uc (efi_freemem_callback_t callback, void *arg) |
| 423 | { | 284 | { |
| 424 | void *efi_map_start, *efi_map_end, *p; | 285 | walk(callback, arg, EFI_MEMORY_UC); |
| 425 | efi_memory_desc_t *md; | ||
| 426 | u64 efi_desc_size, start, end; | ||
| 427 | |||
| 428 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ||
| 429 | efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size; | ||
| 430 | efi_desc_size = ia64_boot_param->efi_memdesc_size; | ||
| 431 | |||
| 432 | for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) { | ||
| 433 | md = p; | ||
| 434 | if (md->attribute == EFI_MEMORY_UC) { | ||
| 435 | start = PAGE_ALIGN(md->phys_addr); | ||
| 436 | end = PAGE_ALIGN((md->phys_addr+(md->num_pages << EFI_PAGE_SHIFT)) & PAGE_MASK); | ||
| 437 | if ((*callback)(start, end, NULL) < 0) | ||
| 438 | return; | ||
| 439 | } | ||
| 440 | } | ||
| 441 | } | 286 | } |
| 442 | 287 | ||
| 443 | |||
| 444 | /* | 288 | /* |
| 445 | * Look for the PAL_CODE region reported by EFI and maps it using an | 289 | * Look for the PAL_CODE region reported by EFI and maps it using an |
| 446 | * ITR to enable safe PAL calls in virtual mode. See IA-64 Processor | 290 | * ITR to enable safe PAL calls in virtual mode. See IA-64 Processor |
| @@ -862,3 +706,307 @@ efi_uart_console_only(void) | |||
| 862 | printk(KERN_ERR "Malformed %s value\n", name); | 706 | printk(KERN_ERR "Malformed %s value\n", name); |
| 863 | return 0; | 707 | return 0; |
| 864 | } | 708 | } |
| 709 | |||
| 710 | #define efi_md_size(md) (md->num_pages << EFI_PAGE_SHIFT) | ||
| 711 | |||
| 712 | static inline u64 | ||
| 713 | kmd_end(kern_memdesc_t *kmd) | ||
| 714 | { | ||
| 715 | return (kmd->start + (kmd->num_pages << EFI_PAGE_SHIFT)); | ||
| 716 | } | ||
| 717 | |||
| 718 | static inline u64 | ||
| 719 | efi_md_end(efi_memory_desc_t *md) | ||
| 720 | { | ||
| 721 | return (md->phys_addr + efi_md_size(md)); | ||
| 722 | } | ||
| 723 | |||
| 724 | static inline int | ||
| 725 | efi_wb(efi_memory_desc_t *md) | ||
| 726 | { | ||
| 727 | return (md->attribute & EFI_MEMORY_WB); | ||
| 728 | } | ||
| 729 | |||
| 730 | static inline int | ||
| 731 | efi_uc(efi_memory_desc_t *md) | ||
| 732 | { | ||
| 733 | return (md->attribute & EFI_MEMORY_UC); | ||
| 734 | } | ||
| 735 | |||
| 736 | /* | ||
| 737 | * Look for the first granule aligned memory descriptor memory | ||
| 738 | * that is big enough to hold EFI memory map. Make sure this | ||
| 739 | * descriptor is atleast granule sized so it does not get trimmed | ||
| 740 | */ | ||
| 741 | struct kern_memdesc * | ||
| 742 | find_memmap_space (void) | ||
| 743 | { | ||
| 744 | u64 contig_low=0, contig_high=0; | ||
| 745 | u64 as = 0, ae; | ||
| 746 | void *efi_map_start, *efi_map_end, *p, *q; | ||
| 747 | efi_memory_desc_t *md, *pmd = NULL, *check_md; | ||
| 748 | u64 space_needed, efi_desc_size; | ||
| 749 | unsigned long total_mem = 0; | ||
| 750 | |||
| 751 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ||
| 752 | efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size; | ||
| 753 | efi_desc_size = ia64_boot_param->efi_memdesc_size; | ||
| 754 | |||
| 755 | /* | ||
| 756 | * Worst case: we need 3 kernel descriptors for each efi descriptor | ||
| 757 | * (if every entry has a WB part in the middle, and UC head and tail), | ||
| 758 | * plus one for the end marker. | ||
| 759 | */ | ||
| 760 | space_needed = sizeof(kern_memdesc_t) * | ||
| 761 | (3 * (ia64_boot_param->efi_memmap_size/efi_desc_size) + 1); | ||
| 762 | |||
| 763 | for (p = efi_map_start; p < efi_map_end; pmd = md, p += efi_desc_size) { | ||
| 764 | md = p; | ||
| 765 | if (!efi_wb(md)) { | ||
| 766 | continue; | ||
| 767 | } | ||
| 768 | if (pmd == NULL || !efi_wb(pmd) || efi_md_end(pmd) != md->phys_addr) { | ||
| 769 | contig_low = GRANULEROUNDUP(md->phys_addr); | ||
| 770 | contig_high = efi_md_end(md); | ||
| 771 | for (q = p + efi_desc_size; q < efi_map_end; q += efi_desc_size) { | ||
| 772 | check_md = q; | ||
| 773 | if (!efi_wb(check_md)) | ||
| 774 | break; | ||
| 775 | if (contig_high != check_md->phys_addr) | ||
| 776 | break; | ||
| 777 | contig_high = efi_md_end(check_md); | ||
| 778 | } | ||
| 779 | contig_high = GRANULEROUNDDOWN(contig_high); | ||
| 780 | } | ||
| 781 | if (!is_available_memory(md) || md->type == EFI_LOADER_DATA) | ||
| 782 | continue; | ||
| 783 | |||
| 784 | /* Round ends inward to granule boundaries */ | ||
| 785 | as = max(contig_low, md->phys_addr); | ||
| 786 | ae = min(contig_high, efi_md_end(md)); | ||
| 787 | |||
| 788 | /* keep within max_addr= command line arg */ | ||
| 789 | ae = min(ae, max_addr); | ||
| 790 | if (ae <= as) | ||
| 791 | continue; | ||
| 792 | |||
| 793 | /* avoid going over mem= command line arg */ | ||
| 794 | if (total_mem + (ae - as) > mem_limit) | ||
| 795 | ae -= total_mem + (ae - as) - mem_limit; | ||
| 796 | |||
| 797 | if (ae <= as) | ||
| 798 | continue; | ||
| 799 | |||
| 800 | if (ae - as > space_needed) | ||
| 801 | break; | ||
| 802 | } | ||
| 803 | if (p >= efi_map_end) | ||
| 804 | panic("Can't allocate space for kernel memory descriptors"); | ||
| 805 | |||
| 806 | return __va(as); | ||
| 807 | } | ||
| 808 | |||
| 809 | /* | ||
| 810 | * Walk the EFI memory map and gather all memory available for kernel | ||
| 811 | * to use. We can allocate partial granules only if the unavailable | ||
| 812 | * parts exist, and are WB. | ||
| 813 | */ | ||
| 814 | void | ||
| 815 | efi_memmap_init(unsigned long *s, unsigned long *e) | ||
| 816 | { | ||
| 817 | struct kern_memdesc *k, *prev = 0; | ||
| 818 | u64 contig_low=0, contig_high=0; | ||
| 819 | u64 as, ae, lim; | ||
| 820 | void *efi_map_start, *efi_map_end, *p, *q; | ||
| 821 | efi_memory_desc_t *md, *pmd = NULL, *check_md; | ||
| 822 | u64 efi_desc_size; | ||
| 823 | unsigned long total_mem = 0; | ||
| 824 | |||
| 825 | k = kern_memmap = find_memmap_space(); | ||
| 826 | |||
| 827 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ||
| 828 | efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size; | ||
| 829 | efi_desc_size = ia64_boot_param->efi_memdesc_size; | ||
| 830 | |||
| 831 | for (p = efi_map_start; p < efi_map_end; pmd = md, p += efi_desc_size) { | ||
| 832 | md = p; | ||
| 833 | if (!efi_wb(md)) { | ||
| 834 | if (efi_uc(md) && (md->type == EFI_CONVENTIONAL_MEMORY || | ||
| 835 | md->type == EFI_BOOT_SERVICES_DATA)) { | ||
| 836 | k->attribute = EFI_MEMORY_UC; | ||
| 837 | k->start = md->phys_addr; | ||
| 838 | k->num_pages = md->num_pages; | ||
| 839 | k++; | ||
| 840 | } | ||
| 841 | continue; | ||
| 842 | } | ||
| 843 | if (pmd == NULL || !efi_wb(pmd) || efi_md_end(pmd) != md->phys_addr) { | ||
| 844 | contig_low = GRANULEROUNDUP(md->phys_addr); | ||
| 845 | contig_high = efi_md_end(md); | ||
| 846 | for (q = p + efi_desc_size; q < efi_map_end; q += efi_desc_size) { | ||
| 847 | check_md = q; | ||
| 848 | if (!efi_wb(check_md)) | ||
| 849 | break; | ||
| 850 | if (contig_high != check_md->phys_addr) | ||
| 851 | break; | ||
| 852 | contig_high = efi_md_end(check_md); | ||
| 853 | } | ||
| 854 | contig_high = GRANULEROUNDDOWN(contig_high); | ||
| 855 | } | ||
| 856 | if (!is_available_memory(md)) | ||
| 857 | continue; | ||
| 858 | |||
| 859 | /* | ||
| 860 | * Round ends inward to granule boundaries | ||
| 861 | * Give trimmings to uncached allocator | ||
| 862 | */ | ||
| 863 | if (md->phys_addr < contig_low) { | ||
| 864 | lim = min(efi_md_end(md), contig_low); | ||
| 865 | if (efi_uc(md)) { | ||
| 866 | if (k > kern_memmap && (k-1)->attribute == EFI_MEMORY_UC && | ||
| 867 | kmd_end(k-1) == md->phys_addr) { | ||
| 868 | (k-1)->num_pages += (lim - md->phys_addr) >> EFI_PAGE_SHIFT; | ||
| 869 | } else { | ||
| 870 | k->attribute = EFI_MEMORY_UC; | ||
| 871 | k->start = md->phys_addr; | ||
| 872 | k->num_pages = (lim - md->phys_addr) >> EFI_PAGE_SHIFT; | ||
| 873 | k++; | ||
| 874 | } | ||
| 875 | } | ||
| 876 | as = contig_low; | ||
| 877 | } else | ||
| 878 | as = md->phys_addr; | ||
| 879 | |||
| 880 | if (efi_md_end(md) > contig_high) { | ||
| 881 | lim = max(md->phys_addr, contig_high); | ||
| 882 | if (efi_uc(md)) { | ||
| 883 | if (lim == md->phys_addr && k > kern_memmap && | ||
| 884 | (k-1)->attribute == EFI_MEMORY_UC && | ||
| 885 | kmd_end(k-1) == md->phys_addr) { | ||
| 886 | (k-1)->num_pages += md->num_pages; | ||
| 887 | } else { | ||
| 888 | k->attribute = EFI_MEMORY_UC; | ||
| 889 | k->start = lim; | ||
| 890 | k->num_pages = (efi_md_end(md) - lim) >> EFI_PAGE_SHIFT; | ||
| 891 | k++; | ||
| 892 | } | ||
| 893 | } | ||
| 894 | ae = contig_high; | ||
| 895 | } else | ||
| 896 | ae = efi_md_end(md); | ||
| 897 | |||
| 898 | /* keep within max_addr= command line arg */ | ||
| 899 | ae = min(ae, max_addr); | ||
| 900 | if (ae <= as) | ||
| 901 | continue; | ||
| 902 | |||
| 903 | /* avoid going over mem= command line arg */ | ||
| 904 | if (total_mem + (ae - as) > mem_limit) | ||
| 905 | ae -= total_mem + (ae - as) - mem_limit; | ||
| 906 | |||
| 907 | if (ae <= as) | ||
| 908 | continue; | ||
| 909 | if (prev && kmd_end(prev) == md->phys_addr) { | ||
| 910 | prev->num_pages += (ae - as) >> EFI_PAGE_SHIFT; | ||
| 911 | total_mem += ae - as; | ||
| 912 | continue; | ||
| 913 | } | ||
| 914 | k->attribute = EFI_MEMORY_WB; | ||
| 915 | k->start = as; | ||
| 916 | k->num_pages = (ae - as) >> EFI_PAGE_SHIFT; | ||
| 917 | total_mem += ae - as; | ||
| 918 | prev = k++; | ||
| 919 | } | ||
| 920 | k->start = ~0L; /* end-marker */ | ||
| 921 | |||
| 922 | /* reserve the memory we are using for kern_memmap */ | ||
| 923 | *s = (u64)kern_memmap; | ||
| 924 | *e = (u64)++k; | ||
| 925 | } | ||
| 926 | |||
| 927 | void | ||
| 928 | efi_initialize_iomem_resources(struct resource *code_resource, | ||
| 929 | struct resource *data_resource) | ||
| 930 | { | ||
| 931 | struct resource *res; | ||
| 932 | void *efi_map_start, *efi_map_end, *p; | ||
| 933 | efi_memory_desc_t *md; | ||
| 934 | u64 efi_desc_size; | ||
| 935 | char *name; | ||
| 936 | unsigned long flags; | ||
| 937 | |||
| 938 | efi_map_start = __va(ia64_boot_param->efi_memmap); | ||
| 939 | efi_map_end = efi_map_start + ia64_boot_param->efi_memmap_size; | ||
| 940 | efi_desc_size = ia64_boot_param->efi_memdesc_size; | ||
| 941 | |||
| 942 | res = NULL; | ||
| 943 | |||
| 944 | for (p = efi_map_start; p < efi_map_end; p += efi_desc_size) { | ||
| 945 | md = p; | ||
| 946 | |||
| 947 | if (md->num_pages == 0) /* should not happen */ | ||
| 948 | continue; | ||
| 949 | |||
| 950 | flags = IORESOURCE_MEM; | ||
| 951 | switch (md->type) { | ||
| 952 | |||
| 953 | case EFI_MEMORY_MAPPED_IO: | ||
| 954 | case EFI_MEMORY_MAPPED_IO_PORT_SPACE: | ||
| 955 | continue; | ||
| 956 | |||
| 957 | case EFI_LOADER_CODE: | ||
| 958 | case EFI_LOADER_DATA: | ||
| 959 | case EFI_BOOT_SERVICES_DATA: | ||
| 960 | case EFI_BOOT_SERVICES_CODE: | ||
| 961 | case EFI_CONVENTIONAL_MEMORY: | ||
| 962 | if (md->attribute & EFI_MEMORY_WP) { | ||
| 963 | name = "System ROM"; | ||
| 964 | flags |= IORESOURCE_READONLY; | ||
| 965 | } else { | ||
| 966 | name = "System RAM"; | ||
| 967 | } | ||
| 968 | break; | ||
| 969 | |||
| 970 | case EFI_ACPI_MEMORY_NVS: | ||
| 971 | name = "ACPI Non-volatile Storage"; | ||
| 972 | flags |= IORESOURCE_BUSY; | ||
| 973 | break; | ||
| 974 | |||
| 975 | case EFI_UNUSABLE_MEMORY: | ||
| 976 | name = "reserved"; | ||
| 977 | flags |= IORESOURCE_BUSY | IORESOURCE_DISABLED; | ||
| 978 | break; | ||
| 979 | |||
| 980 | case EFI_RESERVED_TYPE: | ||
| 981 | case EFI_RUNTIME_SERVICES_CODE: | ||
| 982 | case EFI_RUNTIME_SERVICES_DATA: | ||
| 983 | case EFI_ACPI_RECLAIM_MEMORY: | ||
| 984 | default: | ||
| 985 | name = "reserved"; | ||
| 986 | flags |= IORESOURCE_BUSY; | ||
| 987 | break; | ||
| 988 | } | ||
| 989 | |||
| 990 | if ((res = kcalloc(1, sizeof(struct resource), GFP_KERNEL)) == NULL) { | ||
| 991 | printk(KERN_ERR "failed to alocate resource for iomem\n"); | ||
| 992 | return; | ||
| 993 | } | ||
| 994 | |||
| 995 | res->name = name; | ||
| 996 | res->start = md->phys_addr; | ||
| 997 | res->end = md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1; | ||
| 998 | res->flags = flags; | ||
| 999 | |||
| 1000 | if (insert_resource(&iomem_resource, res) < 0) | ||
| 1001 | kfree(res); | ||
| 1002 | else { | ||
| 1003 | /* | ||
| 1004 | * We don't know which region contains | ||
| 1005 | * kernel data so we try it repeatedly and | ||
| 1006 | * let the resource manager test it. | ||
| 1007 | */ | ||
| 1008 | insert_resource(res, code_resource); | ||
| 1009 | insert_resource(res, data_resource); | ||
| 1010 | } | ||
| 1011 | } | ||
| 1012 | } | ||
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index 6dc726ad7137..d0a5106fba24 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
| @@ -1016,6 +1016,11 @@ ia64_mca_cmc_int_handler(int cmc_irq, void *arg, struct pt_regs *ptregs) | |||
| 1016 | 1016 | ||
| 1017 | cmc_polling_enabled = 1; | 1017 | cmc_polling_enabled = 1; |
| 1018 | spin_unlock(&cmc_history_lock); | 1018 | spin_unlock(&cmc_history_lock); |
| 1019 | /* If we're being hit with CMC interrupts, we won't | ||
| 1020 | * ever execute the schedule_work() below. Need to | ||
| 1021 | * disable CMC interrupts on this processor now. | ||
| 1022 | */ | ||
| 1023 | ia64_mca_cmc_vector_disable(NULL); | ||
| 1019 | schedule_work(&cmc_disable_work); | 1024 | schedule_work(&cmc_disable_work); |
| 1020 | 1025 | ||
| 1021 | /* | 1026 | /* |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 1f5c26dbe705..f95fd2766634 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
| @@ -78,6 +78,19 @@ struct screen_info screen_info; | |||
| 78 | unsigned long vga_console_iobase; | 78 | unsigned long vga_console_iobase; |
| 79 | unsigned long vga_console_membase; | 79 | unsigned long vga_console_membase; |
| 80 | 80 | ||
| 81 | static struct resource data_resource = { | ||
| 82 | .name = "Kernel data", | ||
| 83 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | ||
| 84 | }; | ||
| 85 | |||
| 86 | static struct resource code_resource = { | ||
| 87 | .name = "Kernel code", | ||
| 88 | .flags = IORESOURCE_BUSY | IORESOURCE_MEM | ||
| 89 | }; | ||
| 90 | extern void efi_initialize_iomem_resources(struct resource *, | ||
| 91 | struct resource *); | ||
| 92 | extern char _text[], _end[], _etext[]; | ||
| 93 | |||
| 81 | unsigned long ia64_max_cacheline_size; | 94 | unsigned long ia64_max_cacheline_size; |
| 82 | unsigned long ia64_iobase; /* virtual address for I/O accesses */ | 95 | unsigned long ia64_iobase; /* virtual address for I/O accesses */ |
| 83 | EXPORT_SYMBOL(ia64_iobase); | 96 | EXPORT_SYMBOL(ia64_iobase); |
| @@ -171,6 +184,22 @@ sort_regions (struct rsvd_region *rsvd_region, int max) | |||
| 171 | } | 184 | } |
| 172 | } | 185 | } |
| 173 | 186 | ||
| 187 | /* | ||
| 188 | * Request address space for all standard resources | ||
| 189 | */ | ||
| 190 | static int __init register_memory(void) | ||
| 191 | { | ||
| 192 | code_resource.start = ia64_tpa(_text); | ||
| 193 | code_resource.end = ia64_tpa(_etext) - 1; | ||
| 194 | data_resource.start = ia64_tpa(_etext); | ||
| 195 | data_resource.end = ia64_tpa(_end) - 1; | ||
| 196 | efi_initialize_iomem_resources(&code_resource, &data_resource); | ||
| 197 | |||
| 198 | return 0; | ||
| 199 | } | ||
| 200 | |||
| 201 | __initcall(register_memory); | ||
| 202 | |||
| 174 | /** | 203 | /** |
| 175 | * reserve_memory - setup reserved memory areas | 204 | * reserve_memory - setup reserved memory areas |
| 176 | * | 205 | * |
| @@ -211,6 +240,9 @@ reserve_memory (void) | |||
| 211 | } | 240 | } |
| 212 | #endif | 241 | #endif |
| 213 | 242 | ||
| 243 | efi_memmap_init(&rsvd_region[n].start, &rsvd_region[n].end); | ||
| 244 | n++; | ||
| 245 | |||
| 214 | /* end of memory marker */ | 246 | /* end of memory marker */ |
| 215 | rsvd_region[n].start = ~0UL; | 247 | rsvd_region[n].start = ~0UL; |
| 216 | rsvd_region[n].end = ~0UL; | 248 | rsvd_region[n].end = ~0UL; |
| @@ -244,28 +276,31 @@ find_initrd (void) | |||
| 244 | static void __init | 276 | static void __init |
| 245 | io_port_init (void) | 277 | io_port_init (void) |
| 246 | { | 278 | { |
| 247 | extern unsigned long ia64_iobase; | ||
| 248 | unsigned long phys_iobase; | 279 | unsigned long phys_iobase; |
| 249 | 280 | ||
| 250 | /* | 281 | /* |
| 251 | * Set `iobase' to the appropriate address in region 6 (uncached access range). | 282 | * Set `iobase' based on the EFI memory map or, failing that, the |
| 283 | * value firmware left in ar.k0. | ||
| 252 | * | 284 | * |
| 253 | * The EFI memory map is the "preferred" location to get the I/O port space base, | 285 | * Note that in ia32 mode, IN/OUT instructions use ar.k0 to compute |
| 254 | * rather the relying on AR.KR0. This should become more clear in future SAL | 286 | * the port's virtual address, so ia32_load_state() loads it with a |
| 255 | * specs. We'll fall back to getting it out of AR.KR0 if no appropriate entry is | 287 | * user virtual address. But in ia64 mode, glibc uses the |
| 256 | * found in the memory map. | 288 | * *physical* address in ar.k0 to mmap the appropriate area from |
| 289 | * /dev/mem, and the inX()/outX() interfaces use MMIO. In both | ||
| 290 | * cases, user-mode can only use the legacy 0-64K I/O port space. | ||
| 291 | * | ||
| 292 | * ar.k0 is not involved in kernel I/O port accesses, which can use | ||
| 293 | * any of the I/O port spaces and are done via MMIO using the | ||
| 294 | * virtual mmio_base from the appropriate io_space[]. | ||
| 257 | */ | 295 | */ |
| 258 | phys_iobase = efi_get_iobase(); | 296 | phys_iobase = efi_get_iobase(); |
| 259 | if (phys_iobase) | 297 | if (!phys_iobase) { |
| 260 | /* set AR.KR0 since this is all we use it for anyway */ | ||
| 261 | ia64_set_kr(IA64_KR_IO_BASE, phys_iobase); | ||
| 262 | else { | ||
| 263 | phys_iobase = ia64_get_kr(IA64_KR_IO_BASE); | 298 | phys_iobase = ia64_get_kr(IA64_KR_IO_BASE); |
| 264 | printk(KERN_INFO "No I/O port range found in EFI memory map, falling back " | 299 | printk(KERN_INFO "No I/O port range found in EFI memory map, " |
| 265 | "to AR.KR0\n"); | 300 | "falling back to AR.KR0 (0x%lx)\n", phys_iobase); |
| 266 | printk(KERN_INFO "I/O port base = 0x%lx\n", phys_iobase); | ||
| 267 | } | 301 | } |
| 268 | ia64_iobase = (unsigned long) ioremap(phys_iobase, 0); | 302 | ia64_iobase = (unsigned long) ioremap(phys_iobase, 0); |
| 303 | ia64_set_kr(IA64_KR_IO_BASE, __pa(ia64_iobase)); | ||
| 269 | 304 | ||
| 270 | /* setup legacy IO port space */ | 305 | /* setup legacy IO port space */ |
| 271 | io_space[0].mmio_base = ia64_iobase; | 306 | io_space[0].mmio_base = ia64_iobase; |
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c index 4e9d06c48a8b..c6d40446c2c4 100644 --- a/arch/ia64/kernel/uncached.c +++ b/arch/ia64/kernel/uncached.c | |||
| @@ -205,23 +205,18 @@ EXPORT_SYMBOL(uncached_free_page); | |||
| 205 | static int __init | 205 | static int __init |
| 206 | uncached_build_memmap(unsigned long start, unsigned long end, void *arg) | 206 | uncached_build_memmap(unsigned long start, unsigned long end, void *arg) |
| 207 | { | 207 | { |
| 208 | long length; | 208 | long length = end - start; |
| 209 | unsigned long vstart, vend; | ||
| 210 | int node; | 209 | int node; |
| 211 | 210 | ||
| 212 | length = end - start; | ||
| 213 | vstart = start + __IA64_UNCACHED_OFFSET; | ||
| 214 | vend = end + __IA64_UNCACHED_OFFSET; | ||
| 215 | |||
| 216 | dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end); | 211 | dprintk(KERN_ERR "uncached_build_memmap(%lx %lx)\n", start, end); |
| 217 | 212 | ||
| 218 | memset((char *)vstart, 0, length); | 213 | memset((char *)start, 0, length); |
| 219 | 214 | ||
| 220 | node = paddr_to_nid(start); | 215 | node = paddr_to_nid(start - __IA64_UNCACHED_OFFSET); |
| 221 | 216 | ||
| 222 | for (; vstart < vend ; vstart += PAGE_SIZE) { | 217 | for (; start < end ; start += PAGE_SIZE) { |
| 223 | dprintk(KERN_INFO "sticking %lx into the pool!\n", vstart); | 218 | dprintk(KERN_INFO "sticking %lx into the pool!\n", start); |
| 224 | gen_pool_free(uncached_pool[node], vstart, PAGE_SIZE); | 219 | gen_pool_free(uncached_pool[node], start, PAGE_SIZE); |
| 225 | } | 220 | } |
| 226 | 221 | ||
| 227 | return 0; | 222 | return 0; |
diff --git a/arch/ia64/lib/swiotlb.c b/arch/ia64/lib/swiotlb.c index dbc0b3e449c5..48e5ff26eb1d 100644 --- a/arch/ia64/lib/swiotlb.c +++ b/arch/ia64/lib/swiotlb.c | |||
| @@ -49,6 +49,15 @@ | |||
| 49 | */ | 49 | */ |
| 50 | #define IO_TLB_SHIFT 11 | 50 | #define IO_TLB_SHIFT 11 |
| 51 | 51 | ||
| 52 | #define SLABS_PER_PAGE (1 << (PAGE_SHIFT - IO_TLB_SHIFT)) | ||
| 53 | |||
| 54 | /* | ||
| 55 | * Minimum IO TLB size to bother booting with. Systems with mainly | ||
| 56 | * 64bit capable cards will only lightly use the swiotlb. If we can't | ||
| 57 | * allocate a contiguous 1MB, we're probably in trouble anyway. | ||
| 58 | */ | ||
| 59 | #define IO_TLB_MIN_SLABS ((1<<20) >> IO_TLB_SHIFT) | ||
| 60 | |||
| 52 | int swiotlb_force; | 61 | int swiotlb_force; |
| 53 | 62 | ||
| 54 | /* | 63 | /* |
| @@ -123,8 +132,8 @@ swiotlb_init_with_default_size (size_t default_size) | |||
| 123 | /* | 132 | /* |
| 124 | * Get IO TLB memory from the low pages | 133 | * Get IO TLB memory from the low pages |
| 125 | */ | 134 | */ |
| 126 | io_tlb_start = alloc_bootmem_low_pages(io_tlb_nslabs * | 135 | io_tlb_start = alloc_bootmem_low_pages_limit(io_tlb_nslabs * |
| 127 | (1 << IO_TLB_SHIFT)); | 136 | (1 << IO_TLB_SHIFT), 0x100000000); |
| 128 | if (!io_tlb_start) | 137 | if (!io_tlb_start) |
| 129 | panic("Cannot allocate SWIOTLB buffer"); | 138 | panic("Cannot allocate SWIOTLB buffer"); |
| 130 | io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT); | 139 | io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT); |
| @@ -154,6 +163,99 @@ swiotlb_init (void) | |||
| 154 | swiotlb_init_with_default_size(64 * (1<<20)); /* default to 64MB */ | 163 | swiotlb_init_with_default_size(64 * (1<<20)); /* default to 64MB */ |
| 155 | } | 164 | } |
| 156 | 165 | ||
| 166 | /* | ||
| 167 | * Systems with larger DMA zones (those that don't support ISA) can | ||
| 168 | * initialize the swiotlb later using the slab allocator if needed. | ||
| 169 | * This should be just like above, but with some error catching. | ||
| 170 | */ | ||
| 171 | int | ||
| 172 | swiotlb_late_init_with_default_size (size_t default_size) | ||
| 173 | { | ||
| 174 | unsigned long i, req_nslabs = io_tlb_nslabs; | ||
| 175 | unsigned int order; | ||
| 176 | |||
| 177 | if (!io_tlb_nslabs) { | ||
| 178 | io_tlb_nslabs = (default_size >> IO_TLB_SHIFT); | ||
| 179 | io_tlb_nslabs = ALIGN(io_tlb_nslabs, IO_TLB_SEGSIZE); | ||
| 180 | } | ||
| 181 | |||
| 182 | /* | ||
| 183 | * Get IO TLB memory from the low pages | ||
| 184 | */ | ||
| 185 | order = get_order(io_tlb_nslabs * (1 << IO_TLB_SHIFT)); | ||
| 186 | io_tlb_nslabs = SLABS_PER_PAGE << order; | ||
| 187 | |||
| 188 | while ((SLABS_PER_PAGE << order) > IO_TLB_MIN_SLABS) { | ||
| 189 | io_tlb_start = (char *)__get_free_pages(GFP_DMA | __GFP_NOWARN, | ||
| 190 | order); | ||
| 191 | if (io_tlb_start) | ||
| 192 | break; | ||
| 193 | order--; | ||
| 194 | } | ||
| 195 | |||
| 196 | if (!io_tlb_start) | ||
| 197 | goto cleanup1; | ||
| 198 | |||
| 199 | if (order != get_order(io_tlb_nslabs * (1 << IO_TLB_SHIFT))) { | ||
| 200 | printk(KERN_WARNING "Warning: only able to allocate %ld MB " | ||
| 201 | "for software IO TLB\n", (PAGE_SIZE << order) >> 20); | ||
| 202 | io_tlb_nslabs = SLABS_PER_PAGE << order; | ||
| 203 | } | ||
| 204 | io_tlb_end = io_tlb_start + io_tlb_nslabs * (1 << IO_TLB_SHIFT); | ||
| 205 | memset(io_tlb_start, 0, io_tlb_nslabs * (1 << IO_TLB_SHIFT)); | ||
| 206 | |||
| 207 | /* | ||
| 208 | * Allocate and initialize the free list array. This array is used | ||
| 209 | * to find contiguous free memory regions of size up to IO_TLB_SEGSIZE | ||
| 210 | * between io_tlb_start and io_tlb_end. | ||
| 211 | */ | ||
| 212 | io_tlb_list = (unsigned int *)__get_free_pages(GFP_KERNEL, | ||
| 213 | get_order(io_tlb_nslabs * sizeof(int))); | ||
| 214 | if (!io_tlb_list) | ||
| 215 | goto cleanup2; | ||
| 216 | |||
| 217 | for (i = 0; i < io_tlb_nslabs; i++) | ||
| 218 | io_tlb_list[i] = IO_TLB_SEGSIZE - OFFSET(i, IO_TLB_SEGSIZE); | ||
| 219 | io_tlb_index = 0; | ||
| 220 | |||
| 221 | io_tlb_orig_addr = (unsigned char **)__get_free_pages(GFP_KERNEL, | ||
| 222 | get_order(io_tlb_nslabs * sizeof(char *))); | ||
| 223 | if (!io_tlb_orig_addr) | ||
| 224 | goto cleanup3; | ||
| 225 | |||
| 226 | memset(io_tlb_orig_addr, 0, io_tlb_nslabs * sizeof(char *)); | ||
| 227 | |||
| 228 | /* | ||
| 229 | * Get the overflow emergency buffer | ||
| 230 | */ | ||
| 231 | io_tlb_overflow_buffer = (void *)__get_free_pages(GFP_DMA, | ||
| 232 | get_order(io_tlb_overflow)); | ||
| 233 | if (!io_tlb_overflow_buffer) | ||
| 234 | goto cleanup4; | ||
| 235 | |||
| 236 | printk(KERN_INFO "Placing %ldMB software IO TLB between 0x%lx - " | ||
| 237 | "0x%lx\n", (io_tlb_nslabs * (1 << IO_TLB_SHIFT)) >> 20, | ||
| 238 | virt_to_phys(io_tlb_start), virt_to_phys(io_tlb_end)); | ||
| 239 | |||
| 240 | return 0; | ||
| 241 | |||
| 242 | cleanup4: | ||
| 243 | free_pages((unsigned long)io_tlb_orig_addr, get_order(io_tlb_nslabs * | ||
| 244 | sizeof(char *))); | ||
| 245 | io_tlb_orig_addr = NULL; | ||
| 246 | cleanup3: | ||
| 247 | free_pages((unsigned long)io_tlb_list, get_order(io_tlb_nslabs * | ||
| 248 | sizeof(int))); | ||
| 249 | io_tlb_list = NULL; | ||
| 250 | io_tlb_end = NULL; | ||
| 251 | cleanup2: | ||
| 252 | free_pages((unsigned long)io_tlb_start, order); | ||
| 253 | io_tlb_start = NULL; | ||
| 254 | cleanup1: | ||
| 255 | io_tlb_nslabs = req_nslabs; | ||
| 256 | return -ENOMEM; | ||
| 257 | } | ||
| 258 | |||
| 157 | static inline int | 259 | static inline int |
| 158 | address_needs_mapping(struct device *hwdev, dma_addr_t addr) | 260 | address_needs_mapping(struct device *hwdev, dma_addr_t addr) |
| 159 | { | 261 | { |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index 9b5de589b82f..017cfc3f4789 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
| @@ -120,29 +120,6 @@ struct pci_ops pci_root_ops = { | |||
| 120 | .write = pci_write, | 120 | .write = pci_write, |
| 121 | }; | 121 | }; |
| 122 | 122 | ||
| 123 | #ifdef CONFIG_NUMA | ||
| 124 | extern acpi_status acpi_map_iosapic(acpi_handle, u32, void *, void **); | ||
| 125 | static void acpi_map_iosapics(void) | ||
| 126 | { | ||
| 127 | acpi_get_devices(NULL, acpi_map_iosapic, NULL, NULL); | ||
| 128 | } | ||
| 129 | #else | ||
| 130 | static void acpi_map_iosapics(void) | ||
| 131 | { | ||
| 132 | return; | ||
| 133 | } | ||
| 134 | #endif /* CONFIG_NUMA */ | ||
| 135 | |||
| 136 | static int __init | ||
| 137 | pci_acpi_init (void) | ||
| 138 | { | ||
| 139 | acpi_map_iosapics(); | ||
| 140 | |||
| 141 | return 0; | ||
| 142 | } | ||
| 143 | |||
| 144 | subsys_initcall(pci_acpi_init); | ||
| 145 | |||
| 146 | /* Called by ACPI when it finds a new root bus. */ | 123 | /* Called by ACPI when it finds a new root bus. */ |
| 147 | 124 | ||
| 148 | static struct pci_controller * __devinit | 125 | static struct pci_controller * __devinit |
| @@ -191,6 +168,29 @@ add_io_space (struct acpi_resource_address64 *addr) | |||
| 191 | return IO_SPACE_BASE(i); | 168 | return IO_SPACE_BASE(i); |
| 192 | } | 169 | } |
| 193 | 170 | ||
| 171 | static acpi_status __devinit resource_to_window(struct acpi_resource *resource, | ||
| 172 | struct acpi_resource_address64 *addr) | ||
| 173 | { | ||
| 174 | acpi_status status; | ||
| 175 | |||
| 176 | /* | ||
| 177 | * We're only interested in _CRS descriptors that are | ||
| 178 | * - address space descriptors for memory or I/O space | ||
| 179 | * - non-zero size | ||
| 180 | * - producers, i.e., the address space is routed downstream, | ||
| 181 | * not consumed by the bridge itself | ||
| 182 | */ | ||
| 183 | status = acpi_resource_to_address64(resource, addr); | ||
| 184 | if (ACPI_SUCCESS(status) && | ||
| 185 | (addr->resource_type == ACPI_MEMORY_RANGE || | ||
| 186 | addr->resource_type == ACPI_IO_RANGE) && | ||
| 187 | addr->address_length && | ||
| 188 | addr->producer_consumer == ACPI_PRODUCER) | ||
| 189 | return AE_OK; | ||
| 190 | |||
| 191 | return AE_ERROR; | ||
| 192 | } | ||
| 193 | |||
| 194 | static acpi_status __devinit | 194 | static acpi_status __devinit |
| 195 | count_window (struct acpi_resource *resource, void *data) | 195 | count_window (struct acpi_resource *resource, void *data) |
| 196 | { | 196 | { |
| @@ -198,11 +198,9 @@ count_window (struct acpi_resource *resource, void *data) | |||
| 198 | struct acpi_resource_address64 addr; | 198 | struct acpi_resource_address64 addr; |
| 199 | acpi_status status; | 199 | acpi_status status; |
| 200 | 200 | ||
| 201 | status = acpi_resource_to_address64(resource, &addr); | 201 | status = resource_to_window(resource, &addr); |
| 202 | if (ACPI_SUCCESS(status)) | 202 | if (ACPI_SUCCESS(status)) |
| 203 | if (addr.resource_type == ACPI_MEMORY_RANGE || | 203 | (*windows)++; |
| 204 | addr.resource_type == ACPI_IO_RANGE) | ||
| 205 | (*windows)++; | ||
| 206 | 204 | ||
| 207 | return AE_OK; | 205 | return AE_OK; |
| 208 | } | 206 | } |
| @@ -221,13 +219,11 @@ static __devinit acpi_status add_window(struct acpi_resource *res, void *data) | |||
| 221 | unsigned long flags, offset = 0; | 219 | unsigned long flags, offset = 0; |
| 222 | struct resource *root; | 220 | struct resource *root; |
| 223 | 221 | ||
| 224 | status = acpi_resource_to_address64(res, &addr); | 222 | /* Return AE_OK for non-window resources to keep scanning for more */ |
| 223 | status = resource_to_window(res, &addr); | ||
| 225 | if (!ACPI_SUCCESS(status)) | 224 | if (!ACPI_SUCCESS(status)) |
| 226 | return AE_OK; | 225 | return AE_OK; |
| 227 | 226 | ||
| 228 | if (!addr.address_length) | ||
| 229 | return AE_OK; | ||
| 230 | |||
| 231 | if (addr.resource_type == ACPI_MEMORY_RANGE) { | 227 | if (addr.resource_type == ACPI_MEMORY_RANGE) { |
| 232 | flags = IORESOURCE_MEM; | 228 | flags = IORESOURCE_MEM; |
| 233 | root = &iomem_resource; | 229 | root = &iomem_resource; |
diff --git a/arch/ia64/sn/kernel/io_init.c b/arch/ia64/sn/kernel/io_init.c index 906622d9f933..b4f5053f5e1b 100644 --- a/arch/ia64/sn/kernel/io_init.c +++ b/arch/ia64/sn/kernel/io_init.c | |||
| @@ -22,8 +22,6 @@ | |||
| 22 | #include "xtalk/hubdev.h" | 22 | #include "xtalk/hubdev.h" |
| 23 | #include "xtalk/xwidgetdev.h" | 23 | #include "xtalk/xwidgetdev.h" |
| 24 | 24 | ||
| 25 | nasid_t master_nasid = INVALID_NASID; /* Partition Master */ | ||
| 26 | |||
| 27 | static struct list_head sn_sysdata_list; | 25 | static struct list_head sn_sysdata_list; |
| 28 | 26 | ||
| 29 | /* sysdata list struct */ | 27 | /* sysdata list struct */ |
| @@ -165,7 +163,7 @@ static void sn_fixup_ionodes(void) | |||
| 165 | * Get SGI Specific HUB chipset information. | 163 | * Get SGI Specific HUB chipset information. |
| 166 | * Inform Prom that this kernel can support domain bus numbering. | 164 | * Inform Prom that this kernel can support domain bus numbering. |
| 167 | */ | 165 | */ |
| 168 | for (i = 0; i < numionodes; i++) { | 166 | for (i = 0; i < num_cnodes; i++) { |
| 169 | hubdev = (struct hubdev_info *)(NODEPDA(i)->pdinfo); | 167 | hubdev = (struct hubdev_info *)(NODEPDA(i)->pdinfo); |
| 170 | nasid = cnodeid_to_nasid(i); | 168 | nasid = cnodeid_to_nasid(i); |
| 171 | hubdev->max_segment_number = 0xffffffff; | 169 | hubdev->max_segment_number = 0xffffffff; |
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index 6f8c5883716b..0fb579ef18c2 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
| @@ -59,8 +59,6 @@ DEFINE_PER_CPU(struct pda_s, pda_percpu); | |||
| 59 | 59 | ||
| 60 | #define MAX_PHYS_MEMORY (1UL << IA64_MAX_PHYS_BITS) /* Max physical address supported */ | 60 | #define MAX_PHYS_MEMORY (1UL << IA64_MAX_PHYS_BITS) /* Max physical address supported */ |
| 61 | 61 | ||
| 62 | lboard_t *root_lboard[MAX_COMPACT_NODES]; | ||
| 63 | |||
| 64 | extern void bte_init_node(nodepda_t *, cnodeid_t); | 62 | extern void bte_init_node(nodepda_t *, cnodeid_t); |
| 65 | 63 | ||
| 66 | extern void sn_timer_init(void); | 64 | extern void sn_timer_init(void); |
| @@ -97,15 +95,15 @@ u8 sn_region_size; | |||
| 97 | EXPORT_SYMBOL(sn_region_size); | 95 | EXPORT_SYMBOL(sn_region_size); |
| 98 | int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */ | 96 | int sn_prom_type; /* 0=hardware, 1=medusa/realprom, 2=medusa/fakeprom */ |
| 99 | 97 | ||
| 100 | short physical_node_map[MAX_PHYSNODE_ID]; | 98 | short physical_node_map[MAX_NUMALINK_NODES]; |
| 101 | static unsigned long sn_prom_features[MAX_PROM_FEATURE_SETS]; | 99 | static unsigned long sn_prom_features[MAX_PROM_FEATURE_SETS]; |
| 102 | 100 | ||
| 103 | EXPORT_SYMBOL(physical_node_map); | 101 | EXPORT_SYMBOL(physical_node_map); |
| 104 | 102 | ||
| 105 | int numionodes; | 103 | int num_cnodes; |
| 106 | 104 | ||
| 107 | static void sn_init_pdas(char **); | 105 | static void sn_init_pdas(char **); |
| 108 | static void scan_for_ionodes(void); | 106 | static void build_cnode_tables(void); |
| 109 | 107 | ||
| 110 | static nodepda_t *nodepdaindr[MAX_COMPACT_NODES]; | 108 | static nodepda_t *nodepdaindr[MAX_COMPACT_NODES]; |
| 111 | 109 | ||
| @@ -140,19 +138,6 @@ char drive_info[4 * 16]; | |||
| 140 | #endif | 138 | #endif |
| 141 | 139 | ||
| 142 | /* | 140 | /* |
| 143 | * Get nasid of current cpu early in boot before nodepda is initialized | ||
| 144 | */ | ||
| 145 | static int | ||
| 146 | boot_get_nasid(void) | ||
| 147 | { | ||
| 148 | int nasid; | ||
| 149 | |||
| 150 | if (ia64_sn_get_sapic_info(get_sapicid(), &nasid, NULL, NULL)) | ||
| 151 | BUG(); | ||
| 152 | return nasid; | ||
| 153 | } | ||
| 154 | |||
| 155 | /* | ||
| 156 | * This routine can only be used during init, since | 141 | * This routine can only be used during init, since |
| 157 | * smp_boot_data is an init data structure. | 142 | * smp_boot_data is an init data structure. |
| 158 | * We have to use smp_boot_data.cpu_phys_id to find | 143 | * We have to use smp_boot_data.cpu_phys_id to find |
| @@ -223,7 +208,6 @@ void __init early_sn_setup(void) | |||
| 223 | } | 208 | } |
| 224 | 209 | ||
| 225 | extern int platform_intr_list[]; | 210 | extern int platform_intr_list[]; |
| 226 | extern nasid_t master_nasid; | ||
| 227 | static int __initdata shub_1_1_found = 0; | 211 | static int __initdata shub_1_1_found = 0; |
| 228 | 212 | ||
| 229 | /* | 213 | /* |
| @@ -269,7 +253,6 @@ static void __init sn_check_for_wars(void) | |||
| 269 | void __init sn_setup(char **cmdline_p) | 253 | void __init sn_setup(char **cmdline_p) |
| 270 | { | 254 | { |
| 271 | long status, ticks_per_sec, drift; | 255 | long status, ticks_per_sec, drift; |
| 272 | int pxm; | ||
| 273 | u32 version = sn_sal_rev(); | 256 | u32 version = sn_sal_rev(); |
| 274 | extern void sn_cpu_init(void); | 257 | extern void sn_cpu_init(void); |
| 275 | 258 | ||
| @@ -300,11 +283,10 @@ void __init sn_setup(char **cmdline_p) | |||
| 300 | 283 | ||
| 301 | MAX_DMA_ADDRESS = PAGE_OFFSET + MAX_PHYS_MEMORY; | 284 | MAX_DMA_ADDRESS = PAGE_OFFSET + MAX_PHYS_MEMORY; |
| 302 | 285 | ||
| 303 | memset(physical_node_map, -1, sizeof(physical_node_map)); | 286 | /* |
| 304 | for (pxm = 0; pxm < MAX_PXM_DOMAINS; pxm++) | 287 | * Build the tables for managing cnodes. |
| 305 | if (pxm_to_nid_map[pxm] != -1) | 288 | */ |
| 306 | physical_node_map[pxm_to_nasid(pxm)] = | 289 | build_cnode_tables(); |
| 307 | pxm_to_nid_map[pxm]; | ||
| 308 | 290 | ||
| 309 | /* | 291 | /* |
| 310 | * Old PROMs do not provide an ACPI FADT. Disable legacy keyboard | 292 | * Old PROMs do not provide an ACPI FADT. Disable legacy keyboard |
| @@ -319,8 +301,6 @@ void __init sn_setup(char **cmdline_p) | |||
| 319 | 301 | ||
| 320 | printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF); | 302 | printk("SGI SAL version %x.%02x\n", version >> 8, version & 0x00FF); |
| 321 | 303 | ||
| 322 | master_nasid = boot_get_nasid(); | ||
| 323 | |||
| 324 | status = | 304 | status = |
| 325 | ia64_sal_freq_base(SAL_FREQ_BASE_REALTIME_CLOCK, &ticks_per_sec, | 305 | ia64_sal_freq_base(SAL_FREQ_BASE_REALTIME_CLOCK, &ticks_per_sec, |
| 326 | &drift); | 306 | &drift); |
| @@ -378,15 +358,6 @@ static void __init sn_init_pdas(char **cmdline_p) | |||
| 378 | { | 358 | { |
| 379 | cnodeid_t cnode; | 359 | cnodeid_t cnode; |
| 380 | 360 | ||
| 381 | memset(sn_cnodeid_to_nasid, -1, | ||
| 382 | sizeof(__ia64_per_cpu_var(__sn_cnodeid_to_nasid))); | ||
| 383 | for_each_online_node(cnode) | ||
| 384 | sn_cnodeid_to_nasid[cnode] = | ||
| 385 | pxm_to_nasid(nid_to_pxm_map[cnode]); | ||
| 386 | |||
| 387 | numionodes = num_online_nodes(); | ||
| 388 | scan_for_ionodes(); | ||
| 389 | |||
| 390 | /* | 361 | /* |
| 391 | * Allocate & initalize the nodepda for each node. | 362 | * Allocate & initalize the nodepda for each node. |
| 392 | */ | 363 | */ |
| @@ -402,7 +373,7 @@ static void __init sn_init_pdas(char **cmdline_p) | |||
| 402 | /* | 373 | /* |
| 403 | * Allocate & initialize nodepda for TIOs. For now, put them on node 0. | 374 | * Allocate & initialize nodepda for TIOs. For now, put them on node 0. |
| 404 | */ | 375 | */ |
| 405 | for (cnode = num_online_nodes(); cnode < numionodes; cnode++) { | 376 | for (cnode = num_online_nodes(); cnode < num_cnodes; cnode++) { |
| 406 | nodepdaindr[cnode] = | 377 | nodepdaindr[cnode] = |
| 407 | alloc_bootmem_node(NODE_DATA(0), sizeof(nodepda_t)); | 378 | alloc_bootmem_node(NODE_DATA(0), sizeof(nodepda_t)); |
| 408 | memset(nodepdaindr[cnode], 0, sizeof(nodepda_t)); | 379 | memset(nodepdaindr[cnode], 0, sizeof(nodepda_t)); |
| @@ -411,7 +382,7 @@ static void __init sn_init_pdas(char **cmdline_p) | |||
| 411 | /* | 382 | /* |
| 412 | * Now copy the array of nodepda pointers to each nodepda. | 383 | * Now copy the array of nodepda pointers to each nodepda. |
| 413 | */ | 384 | */ |
| 414 | for (cnode = 0; cnode < numionodes; cnode++) | 385 | for (cnode = 0; cnode < num_cnodes; cnode++) |
| 415 | memcpy(nodepdaindr[cnode]->pernode_pdaindr, nodepdaindr, | 386 | memcpy(nodepdaindr[cnode]->pernode_pdaindr, nodepdaindr, |
| 416 | sizeof(nodepdaindr)); | 387 | sizeof(nodepdaindr)); |
| 417 | 388 | ||
| @@ -428,7 +399,7 @@ static void __init sn_init_pdas(char **cmdline_p) | |||
| 428 | * Initialize the per node hubdev. This includes IO Nodes and | 399 | * Initialize the per node hubdev. This includes IO Nodes and |
| 429 | * headless/memless nodes. | 400 | * headless/memless nodes. |
| 430 | */ | 401 | */ |
| 431 | for (cnode = 0; cnode < numionodes; cnode++) { | 402 | for (cnode = 0; cnode < num_cnodes; cnode++) { |
| 432 | hubdev_init_node(nodepdaindr[cnode], cnode); | 403 | hubdev_init_node(nodepdaindr[cnode], cnode); |
| 433 | } | 404 | } |
| 434 | } | 405 | } |
| @@ -553,87 +524,58 @@ void __init sn_cpu_init(void) | |||
| 553 | } | 524 | } |
| 554 | 525 | ||
| 555 | /* | 526 | /* |
| 556 | * Scan klconfig for ionodes. Add the nasids to the | 527 | * Build tables for converting between NASIDs and cnodes. |
| 557 | * physical_node_map and the pda and increment numionodes. | ||
| 558 | */ | 528 | */ |
| 529 | static inline int __init board_needs_cnode(int type) | ||
| 530 | { | ||
| 531 | return (type == KLTYPE_SNIA || type == KLTYPE_TIO); | ||
| 532 | } | ||
| 559 | 533 | ||
| 560 | static void __init scan_for_ionodes(void) | 534 | void __init build_cnode_tables(void) |
| 561 | { | 535 | { |
| 562 | int nasid = 0; | 536 | int nasid; |
| 537 | int node; | ||
| 563 | lboard_t *brd; | 538 | lboard_t *brd; |
| 564 | 539 | ||
| 565 | /* fakeprom does not support klgraph */ | 540 | memset(physical_node_map, -1, sizeof(physical_node_map)); |
| 566 | if (IS_RUNNING_ON_FAKE_PROM()) | 541 | memset(sn_cnodeid_to_nasid, -1, |
| 567 | return; | 542 | sizeof(__ia64_per_cpu_var(__sn_cnodeid_to_nasid))); |
| 568 | |||
| 569 | /* Setup ionodes with memory */ | ||
| 570 | for (nasid = 0; nasid < MAX_PHYSNODE_ID; nasid += 2) { | ||
| 571 | char *klgraph_header; | ||
| 572 | cnodeid_t cnodeid; | ||
| 573 | |||
| 574 | if (physical_node_map[nasid] == -1) | ||
| 575 | continue; | ||
| 576 | 543 | ||
| 577 | cnodeid = -1; | 544 | /* |
| 578 | klgraph_header = __va(ia64_sn_get_klconfig_addr(nasid)); | 545 | * First populate the tables with C/M bricks. This ensures that |
| 579 | if (!klgraph_header) { | 546 | * cnode == node for all C & M bricks. |
| 580 | BUG(); /* All nodes must have klconfig tables! */ | 547 | */ |
| 581 | } | 548 | for_each_online_node(node) { |
| 582 | cnodeid = nasid_to_cnodeid(nasid); | 549 | nasid = pxm_to_nasid(nid_to_pxm_map[node]); |
| 583 | root_lboard[cnodeid] = (lboard_t *) | 550 | sn_cnodeid_to_nasid[node] = nasid; |
| 584 | NODE_OFFSET_TO_LBOARD((nasid), | 551 | physical_node_map[nasid] = node; |
| 585 | ((kl_config_hdr_t | ||
| 586 | *) (klgraph_header))-> | ||
| 587 | ch_board_info); | ||
| 588 | } | 552 | } |
| 589 | 553 | ||
| 590 | /* Scan headless/memless IO Nodes. */ | 554 | /* |
| 591 | for (nasid = 0; nasid < MAX_PHYSNODE_ID; nasid += 2) { | 555 | * num_cnodes is total number of C/M/TIO bricks. Because of the 256 node |
| 592 | /* if there's no nasid, don't try to read the klconfig on the node */ | 556 | * limit on the number of nodes, we can't use the generic node numbers |
| 593 | if (physical_node_map[nasid] == -1) | 557 | * for this. Note that num_cnodes is incremented below as TIOs or |
| 594 | continue; | 558 | * headless/memoryless nodes are discovered. |
| 595 | brd = find_lboard_any((lboard_t *) | 559 | */ |
| 596 | root_lboard[nasid_to_cnodeid(nasid)], | 560 | num_cnodes = num_online_nodes(); |
| 597 | KLTYPE_SNIA); | ||
| 598 | if (brd) { | ||
| 599 | brd = KLCF_NEXT_ANY(brd); /* Skip this node's lboard */ | ||
| 600 | if (!brd) | ||
| 601 | continue; | ||
| 602 | } | ||
| 603 | |||
| 604 | brd = find_lboard_any(brd, KLTYPE_SNIA); | ||
| 605 | 561 | ||
| 606 | while (brd) { | 562 | /* fakeprom does not support klgraph */ |
| 607 | sn_cnodeid_to_nasid[numionodes] = brd->brd_nasid; | 563 | if (IS_RUNNING_ON_FAKE_PROM()) |
| 608 | physical_node_map[brd->brd_nasid] = numionodes; | 564 | return; |
| 609 | root_lboard[numionodes] = brd; | ||
| 610 | numionodes++; | ||
| 611 | brd = KLCF_NEXT_ANY(brd); | ||
| 612 | if (!brd) | ||
| 613 | break; | ||
| 614 | |||
| 615 | brd = find_lboard_any(brd, KLTYPE_SNIA); | ||
| 616 | } | ||
| 617 | } | ||
| 618 | 565 | ||
| 619 | /* Scan for TIO nodes. */ | 566 | /* Find TIOs & headless/memoryless nodes and add them to the tables */ |
| 620 | for (nasid = 0; nasid < MAX_PHYSNODE_ID; nasid += 2) { | 567 | for_each_online_node(node) { |
| 621 | /* if there's no nasid, don't try to read the klconfig on the node */ | 568 | kl_config_hdr_t *klgraph_header; |
| 622 | if (physical_node_map[nasid] == -1) | 569 | nasid = cnodeid_to_nasid(node); |
| 623 | continue; | 570 | if ((klgraph_header = ia64_sn_get_klconfig_addr(nasid)) == NULL) |
| 624 | brd = find_lboard_any((lboard_t *) | 571 | BUG(); |
| 625 | root_lboard[nasid_to_cnodeid(nasid)], | 572 | brd = NODE_OFFSET_TO_LBOARD(nasid, klgraph_header->ch_board_info); |
| 626 | KLTYPE_TIO); | ||
| 627 | while (brd) { | 573 | while (brd) { |
| 628 | sn_cnodeid_to_nasid[numionodes] = brd->brd_nasid; | 574 | if (board_needs_cnode(brd->brd_type) && physical_node_map[brd->brd_nasid] < 0) { |
| 629 | physical_node_map[brd->brd_nasid] = numionodes; | 575 | sn_cnodeid_to_nasid[num_cnodes] = brd->brd_nasid; |
| 630 | root_lboard[numionodes] = brd; | 576 | physical_node_map[brd->brd_nasid] = num_cnodes++; |
| 631 | numionodes++; | 577 | } |
| 632 | brd = KLCF_NEXT_ANY(brd); | 578 | brd = find_lboard_next(brd); |
| 633 | if (!brd) | ||
| 634 | break; | ||
| 635 | |||
| 636 | brd = find_lboard_any(brd, KLTYPE_TIO); | ||
| 637 | } | 579 | } |
| 638 | } | 580 | } |
| 639 | } | 581 | } |
diff --git a/arch/ia64/sn/kernel/sn2/sn_hwperf.c b/arch/ia64/sn/kernel/sn2/sn_hwperf.c index 0513aacac8c1..6c6fbca3229c 100644 --- a/arch/ia64/sn/kernel/sn2/sn_hwperf.c +++ b/arch/ia64/sn/kernel/sn2/sn_hwperf.c | |||
| @@ -476,8 +476,8 @@ static int sn_topology_show(struct seq_file *s, void *d) | |||
| 476 | for_each_online_cpu(j) { | 476 | for_each_online_cpu(j) { |
| 477 | seq_printf(s, j ? ":%d" : ", dist %d", | 477 | seq_printf(s, j ? ":%d" : ", dist %d", |
| 478 | node_distance( | 478 | node_distance( |
| 479 | cpuid_to_cnodeid(i), | 479 | cpu_to_node(i), |
| 480 | cpuid_to_cnodeid(j))); | 480 | cpu_to_node(j))); |
| 481 | } | 481 | } |
| 482 | seq_putc(s, '\n'); | 482 | seq_putc(s, '\n'); |
| 483 | } | 483 | } |
diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c index b45db5133f55..0d8592a745a7 100644 --- a/arch/ia64/sn/kernel/tiocx.c +++ b/arch/ia64/sn/kernel/tiocx.c | |||
| @@ -183,11 +183,12 @@ int cx_driver_unregister(struct cx_drv *cx_driver) | |||
| 183 | * @part_num: device's part number | 183 | * @part_num: device's part number |
| 184 | * @mfg_num: device's manufacturer number | 184 | * @mfg_num: device's manufacturer number |
| 185 | * @hubdev: hub info associated with this device | 185 | * @hubdev: hub info associated with this device |
| 186 | * @bt: board type of the device | ||
| 186 | * | 187 | * |
| 187 | */ | 188 | */ |
| 188 | int | 189 | int |
| 189 | cx_device_register(nasid_t nasid, int part_num, int mfg_num, | 190 | cx_device_register(nasid_t nasid, int part_num, int mfg_num, |
| 190 | struct hubdev_info *hubdev) | 191 | struct hubdev_info *hubdev, int bt) |
| 191 | { | 192 | { |
| 192 | struct cx_dev *cx_dev; | 193 | struct cx_dev *cx_dev; |
| 193 | 194 | ||
| @@ -200,6 +201,7 @@ cx_device_register(nasid_t nasid, int part_num, int mfg_num, | |||
| 200 | cx_dev->cx_id.mfg_num = mfg_num; | 201 | cx_dev->cx_id.mfg_num = mfg_num; |
| 201 | cx_dev->cx_id.nasid = nasid; | 202 | cx_dev->cx_id.nasid = nasid; |
| 202 | cx_dev->hubdev = hubdev; | 203 | cx_dev->hubdev = hubdev; |
| 204 | cx_dev->bt = bt; | ||
| 203 | 205 | ||
| 204 | cx_dev->dev.parent = NULL; | 206 | cx_dev->dev.parent = NULL; |
| 205 | cx_dev->dev.bus = &tiocx_bus_type; | 207 | cx_dev->dev.bus = &tiocx_bus_type; |
| @@ -238,7 +240,8 @@ static int cx_device_reload(struct cx_dev *cx_dev) | |||
| 238 | { | 240 | { |
| 239 | cx_device_unregister(cx_dev); | 241 | cx_device_unregister(cx_dev); |
| 240 | return cx_device_register(cx_dev->cx_id.nasid, cx_dev->cx_id.part_num, | 242 | return cx_device_register(cx_dev->cx_id.nasid, cx_dev->cx_id.part_num, |
| 241 | cx_dev->cx_id.mfg_num, cx_dev->hubdev); | 243 | cx_dev->cx_id.mfg_num, cx_dev->hubdev, |
| 244 | cx_dev->bt); | ||
| 242 | } | 245 | } |
| 243 | 246 | ||
| 244 | static inline uint64_t tiocx_intr_alloc(nasid_t nasid, int widget, | 247 | static inline uint64_t tiocx_intr_alloc(nasid_t nasid, int widget, |
| @@ -365,26 +368,20 @@ static void tio_corelet_reset(nasid_t nasid, int corelet) | |||
| 365 | udelay(2000); | 368 | udelay(2000); |
| 366 | } | 369 | } |
| 367 | 370 | ||
| 368 | static int tiocx_btchar_get(int nasid) | 371 | static int is_fpga_tio(int nasid, int *bt) |
| 369 | { | 372 | { |
| 370 | moduleid_t module_id; | 373 | int ioboard_type; |
| 371 | geoid_t geoid; | ||
| 372 | int cnodeid; | ||
| 373 | |||
| 374 | cnodeid = nasid_to_cnodeid(nasid); | ||
| 375 | geoid = cnodeid_get_geoid(cnodeid); | ||
| 376 | module_id = geo_module(geoid); | ||
| 377 | return MODULE_GET_BTCHAR(module_id); | ||
| 378 | } | ||
| 379 | 374 | ||
| 380 | static int is_fpga_brick(int nasid) | 375 | ioboard_type = ia64_sn_sysctl_ioboard_get(nasid); |
| 381 | { | 376 | |
| 382 | switch (tiocx_btchar_get(nasid)) { | 377 | switch (ioboard_type) { |
| 383 | case L1_BRICKTYPE_SA: | 378 | case L1_BRICKTYPE_SA: |
| 384 | case L1_BRICKTYPE_ATHENA: | 379 | case L1_BRICKTYPE_ATHENA: |
| 385 | case L1_BRICKTYPE_DAYTONA: | 380 | case L1_BOARDTYPE_DAYTONA: |
| 381 | *bt = ioboard_type; | ||
| 386 | return 1; | 382 | return 1; |
| 387 | } | 383 | } |
| 384 | |||
| 388 | return 0; | 385 | return 0; |
| 389 | } | 386 | } |
| 390 | 387 | ||
| @@ -407,16 +404,22 @@ static int tiocx_reload(struct cx_dev *cx_dev) | |||
| 407 | 404 | ||
| 408 | if (bitstream_loaded(nasid)) { | 405 | if (bitstream_loaded(nasid)) { |
| 409 | uint64_t cx_id; | 406 | uint64_t cx_id; |
| 410 | 407 | int rv; | |
| 411 | cx_id = | 408 | |
| 412 | *(volatile uint64_t *)(TIO_SWIN_BASE(nasid, TIOCX_CORELET) + | 409 | rv = ia64_sn_sysctl_tio_clock_reset(nasid); |
| 410 | if (rv) { | ||
| 411 | printk(KERN_ALERT "CX port JTAG reset failed.\n"); | ||
| 412 | } else { | ||
| 413 | cx_id = *(volatile uint64_t *) | ||
| 414 | (TIO_SWIN_BASE(nasid, TIOCX_CORELET) + | ||
| 413 | WIDGET_ID); | 415 | WIDGET_ID); |
| 414 | part_num = XWIDGET_PART_NUM(cx_id); | 416 | part_num = XWIDGET_PART_NUM(cx_id); |
| 415 | mfg_num = XWIDGET_MFG_NUM(cx_id); | 417 | mfg_num = XWIDGET_MFG_NUM(cx_id); |
| 416 | DBG("part= 0x%x, mfg= 0x%x\n", part_num, mfg_num); | 418 | DBG("part= 0x%x, mfg= 0x%x\n", part_num, mfg_num); |
| 417 | /* just ignore it if it's a CE */ | 419 | /* just ignore it if it's a CE */ |
| 418 | if (part_num == TIO_CE_ASIC_PARTNUM) | 420 | if (part_num == TIO_CE_ASIC_PARTNUM) |
| 419 | return 0; | 421 | return 0; |
| 422 | } | ||
| 420 | } | 423 | } |
| 421 | 424 | ||
| 422 | cx_dev->cx_id.part_num = part_num; | 425 | cx_dev->cx_id.part_num = part_num; |
| @@ -436,10 +439,10 @@ static ssize_t show_cxdev_control(struct device *dev, struct device_attribute *a | |||
| 436 | { | 439 | { |
| 437 | struct cx_dev *cx_dev = to_cx_dev(dev); | 440 | struct cx_dev *cx_dev = to_cx_dev(dev); |
| 438 | 441 | ||
| 439 | return sprintf(buf, "0x%x 0x%x 0x%x %d\n", | 442 | return sprintf(buf, "0x%x 0x%x 0x%x 0x%x\n", |
| 440 | cx_dev->cx_id.nasid, | 443 | cx_dev->cx_id.nasid, |
| 441 | cx_dev->cx_id.part_num, cx_dev->cx_id.mfg_num, | 444 | cx_dev->cx_id.part_num, cx_dev->cx_id.mfg_num, |
| 442 | tiocx_btchar_get(cx_dev->cx_id.nasid)); | 445 | cx_dev->bt); |
| 443 | } | 446 | } |
| 444 | 447 | ||
| 445 | static ssize_t store_cxdev_control(struct device *dev, struct device_attribute *attr, const char *buf, | 448 | static ssize_t store_cxdev_control(struct device *dev, struct device_attribute *attr, const char *buf, |
| @@ -486,13 +489,13 @@ static int __init tiocx_init(void) | |||
| 486 | 489 | ||
| 487 | bus_register(&tiocx_bus_type); | 490 | bus_register(&tiocx_bus_type); |
| 488 | 491 | ||
| 489 | for (cnodeid = 0; cnodeid < MAX_COMPACT_NODES; cnodeid++) { | 492 | for (cnodeid = 0; cnodeid < num_cnodes; cnodeid++) { |
| 490 | nasid_t nasid; | 493 | nasid_t nasid; |
| 494 | int bt; | ||
| 491 | 495 | ||
| 492 | if ((nasid = cnodeid_to_nasid(cnodeid)) < 0) | 496 | nasid = cnodeid_to_nasid(cnodeid); |
| 493 | break; /* No more nasids .. bail out of loop */ | ||
| 494 | 497 | ||
| 495 | if ((nasid & 0x1) && is_fpga_brick(nasid)) { | 498 | if ((nasid & 0x1) && is_fpga_tio(nasid, &bt)) { |
| 496 | struct hubdev_info *hubdev; | 499 | struct hubdev_info *hubdev; |
| 497 | struct xwidget_info *widgetp; | 500 | struct xwidget_info *widgetp; |
| 498 | 501 | ||
| @@ -512,7 +515,7 @@ static int __init tiocx_init(void) | |||
| 512 | 515 | ||
| 513 | if (cx_device_register | 516 | if (cx_device_register |
| 514 | (nasid, widgetp->xwi_hwid.part_num, | 517 | (nasid, widgetp->xwi_hwid.part_num, |
| 515 | widgetp->xwi_hwid.mfg_num, hubdev) < 0) | 518 | widgetp->xwi_hwid.mfg_num, hubdev, bt) < 0) |
| 516 | return -ENXIO; | 519 | return -ENXIO; |
| 517 | else | 520 | else |
| 518 | found_tiocx_device++; | 521 | found_tiocx_device++; |
diff --git a/arch/ia64/sn/kernel/xpc_partition.c b/arch/ia64/sn/kernel/xpc_partition.c index 578265ea9e67..72ef330fb784 100644 --- a/arch/ia64/sn/kernel/xpc_partition.c +++ b/arch/ia64/sn/kernel/xpc_partition.c | |||
| @@ -44,7 +44,7 @@ static u64 xpc_sh2_IPI_access3; | |||
| 44 | 44 | ||
| 45 | 45 | ||
| 46 | /* original protection values for each node */ | 46 | /* original protection values for each node */ |
| 47 | u64 xpc_prot_vec[MAX_COMPACT_NODES]; | 47 | u64 xpc_prot_vec[MAX_NUMNODES]; |
| 48 | 48 | ||
| 49 | 49 | ||
| 50 | /* this partition's reserved page */ | 50 | /* this partition's reserved page */ |
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c index 0e4b9ad9ef02..abdf6eea6ac8 100644 --- a/arch/ia64/sn/pci/pci_dma.c +++ b/arch/ia64/sn/pci/pci_dma.c | |||
| @@ -326,6 +326,29 @@ int sn_pci_legacy_read(struct pci_bus *bus, u16 port, u32 *val, u8 size) | |||
| 326 | { | 326 | { |
| 327 | unsigned long addr; | 327 | unsigned long addr; |
| 328 | int ret; | 328 | int ret; |
| 329 | struct ia64_sal_retval isrv; | ||
| 330 | |||
| 331 | /* | ||
| 332 | * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work | ||
| 333 | * around hw issues at the pci bus level. SGI proms older than | ||
| 334 | * 4.10 don't implment this. | ||
| 335 | */ | ||
| 336 | |||
| 337 | SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE, | ||
| 338 | pci_domain_nr(bus), bus->number, | ||
| 339 | 0, /* io */ | ||
| 340 | 0, /* read */ | ||
| 341 | port, size, __pa(val)); | ||
| 342 | |||
| 343 | if (isrv.status == 0) | ||
| 344 | return size; | ||
| 345 | |||
| 346 | /* | ||
| 347 | * If the above failed, retry using the SAL_PROBE call which should | ||
| 348 | * be present in all proms (but which cannot work round PCI chipset | ||
| 349 | * bugs). This code is retained for compatability with old | ||
| 350 | * pre-4.10 proms, and should be removed at some point in the future. | ||
| 351 | */ | ||
| 329 | 352 | ||
| 330 | if (!SN_PCIBUS_BUSSOFT(bus)) | 353 | if (!SN_PCIBUS_BUSSOFT(bus)) |
| 331 | return -ENODEV; | 354 | return -ENODEV; |
| @@ -349,6 +372,29 @@ int sn_pci_legacy_write(struct pci_bus *bus, u16 port, u32 val, u8 size) | |||
| 349 | int ret = size; | 372 | int ret = size; |
| 350 | unsigned long paddr; | 373 | unsigned long paddr; |
| 351 | unsigned long *addr; | 374 | unsigned long *addr; |
| 375 | struct ia64_sal_retval isrv; | ||
| 376 | |||
| 377 | /* | ||
| 378 | * First, try the SN_SAL_IOIF_PCI_SAFE SAL call which can work | ||
| 379 | * around hw issues at the pci bus level. SGI proms older than | ||
| 380 | * 4.10 don't implment this. | ||
| 381 | */ | ||
| 382 | |||
| 383 | SAL_CALL(isrv, SN_SAL_IOIF_PCI_SAFE, | ||
| 384 | pci_domain_nr(bus), bus->number, | ||
| 385 | 0, /* io */ | ||
| 386 | 1, /* write */ | ||
| 387 | port, size, __pa(&val)); | ||
| 388 | |||
| 389 | if (isrv.status == 0) | ||
| 390 | return size; | ||
| 391 | |||
| 392 | /* | ||
| 393 | * If the above failed, retry using the SAL_PROBE call which should | ||
| 394 | * be present in all proms (but which cannot work round PCI chipset | ||
| 395 | * bugs). This code is retained for compatability with old | ||
| 396 | * pre-4.10 proms, and should be removed at some point in the future. | ||
| 397 | */ | ||
| 352 | 398 | ||
| 353 | if (!SN_PCIBUS_BUSSOFT(bus)) { | 399 | if (!SN_PCIBUS_BUSSOFT(bus)) { |
| 354 | ret = -ENODEV; | 400 | ret = -ENODEV; |
diff --git a/arch/ia64/sn/pci/pcibr/pcibr_reg.c b/arch/ia64/sn/pci/pcibr/pcibr_reg.c index 21426d02fbe6..4f718c3e93d3 100644 --- a/arch/ia64/sn/pci/pcibr/pcibr_reg.c +++ b/arch/ia64/sn/pci/pcibr/pcibr_reg.c | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | 8 | ||
| 9 | #include <linux/interrupt.h> | 9 | #include <linux/interrupt.h> |
| 10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
| 11 | #include <asm/sn/io.h> | ||
| 11 | #include <asm/sn/pcibr_provider.h> | 12 | #include <asm/sn/pcibr_provider.h> |
| 12 | #include <asm/sn/pcibus_provider_defs.h> | 13 | #include <asm/sn/pcibus_provider_defs.h> |
| 13 | #include <asm/sn/pcidev.h> | 14 | #include <asm/sn/pcidev.h> |
| @@ -29,10 +30,10 @@ void pcireg_control_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 29 | if (pcibus_info) { | 30 | if (pcibus_info) { |
| 30 | switch (pcibus_info->pbi_bridge_type) { | 31 | switch (pcibus_info->pbi_bridge_type) { |
| 31 | case PCIBR_BRIDGETYPE_TIOCP: | 32 | case PCIBR_BRIDGETYPE_TIOCP: |
| 32 | ptr->tio.cp_control &= ~bits; | 33 | __sn_clrq_relaxed(&ptr->tio.cp_control, bits); |
| 33 | break; | 34 | break; |
| 34 | case PCIBR_BRIDGETYPE_PIC: | 35 | case PCIBR_BRIDGETYPE_PIC: |
| 35 | ptr->pic.p_wid_control &= ~bits; | 36 | __sn_clrq_relaxed(&ptr->pic.p_wid_control, bits); |
| 36 | break; | 37 | break; |
| 37 | default: | 38 | default: |
| 38 | panic | 39 | panic |
| @@ -49,10 +50,10 @@ void pcireg_control_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 49 | if (pcibus_info) { | 50 | if (pcibus_info) { |
| 50 | switch (pcibus_info->pbi_bridge_type) { | 51 | switch (pcibus_info->pbi_bridge_type) { |
| 51 | case PCIBR_BRIDGETYPE_TIOCP: | 52 | case PCIBR_BRIDGETYPE_TIOCP: |
| 52 | ptr->tio.cp_control |= bits; | 53 | __sn_setq_relaxed(&ptr->tio.cp_control, bits); |
| 53 | break; | 54 | break; |
| 54 | case PCIBR_BRIDGETYPE_PIC: | 55 | case PCIBR_BRIDGETYPE_PIC: |
| 55 | ptr->pic.p_wid_control |= bits; | 56 | __sn_setq_relaxed(&ptr->pic.p_wid_control, bits); |
| 56 | break; | 57 | break; |
| 57 | default: | 58 | default: |
| 58 | panic | 59 | panic |
| @@ -73,10 +74,10 @@ uint64_t pcireg_tflush_get(struct pcibus_info *pcibus_info) | |||
| 73 | if (pcibus_info) { | 74 | if (pcibus_info) { |
| 74 | switch (pcibus_info->pbi_bridge_type) { | 75 | switch (pcibus_info->pbi_bridge_type) { |
| 75 | case PCIBR_BRIDGETYPE_TIOCP: | 76 | case PCIBR_BRIDGETYPE_TIOCP: |
| 76 | ret = ptr->tio.cp_tflush; | 77 | ret = __sn_readq_relaxed(&ptr->tio.cp_tflush); |
| 77 | break; | 78 | break; |
| 78 | case PCIBR_BRIDGETYPE_PIC: | 79 | case PCIBR_BRIDGETYPE_PIC: |
| 79 | ret = ptr->pic.p_wid_tflush; | 80 | ret = __sn_readq_relaxed(&ptr->pic.p_wid_tflush); |
| 80 | break; | 81 | break; |
| 81 | default: | 82 | default: |
| 82 | panic | 83 | panic |
| @@ -103,10 +104,10 @@ uint64_t pcireg_intr_status_get(struct pcibus_info * pcibus_info) | |||
| 103 | if (pcibus_info) { | 104 | if (pcibus_info) { |
| 104 | switch (pcibus_info->pbi_bridge_type) { | 105 | switch (pcibus_info->pbi_bridge_type) { |
| 105 | case PCIBR_BRIDGETYPE_TIOCP: | 106 | case PCIBR_BRIDGETYPE_TIOCP: |
| 106 | ret = ptr->tio.cp_int_status; | 107 | ret = __sn_readq_relaxed(&ptr->tio.cp_int_status); |
| 107 | break; | 108 | break; |
| 108 | case PCIBR_BRIDGETYPE_PIC: | 109 | case PCIBR_BRIDGETYPE_PIC: |
| 109 | ret = ptr->pic.p_int_status; | 110 | ret = __sn_readq_relaxed(&ptr->pic.p_int_status); |
| 110 | break; | 111 | break; |
| 111 | default: | 112 | default: |
| 112 | panic | 113 | panic |
| @@ -127,10 +128,10 @@ void pcireg_intr_enable_bit_clr(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 127 | if (pcibus_info) { | 128 | if (pcibus_info) { |
| 128 | switch (pcibus_info->pbi_bridge_type) { | 129 | switch (pcibus_info->pbi_bridge_type) { |
| 129 | case PCIBR_BRIDGETYPE_TIOCP: | 130 | case PCIBR_BRIDGETYPE_TIOCP: |
| 130 | ptr->tio.cp_int_enable &= ~bits; | 131 | __sn_clrq_relaxed(&ptr->tio.cp_int_enable, bits); |
| 131 | break; | 132 | break; |
| 132 | case PCIBR_BRIDGETYPE_PIC: | 133 | case PCIBR_BRIDGETYPE_PIC: |
| 133 | ptr->pic.p_int_enable &= ~bits; | 134 | __sn_clrq_relaxed(&ptr->pic.p_int_enable, ~bits); |
| 134 | break; | 135 | break; |
| 135 | default: | 136 | default: |
| 136 | panic | 137 | panic |
| @@ -147,10 +148,10 @@ void pcireg_intr_enable_bit_set(struct pcibus_info *pcibus_info, uint64_t bits) | |||
| 147 | if (pcibus_info) { | 148 | if (pcibus_info) { |
| 148 | switch (pcibus_info->pbi_bridge_type) { | 149 | switch (pcibus_info->pbi_bridge_type) { |
| 149 | case PCIBR_BRIDGETYPE_TIOCP: | 150 | case PCIBR_BRIDGETYPE_TIOCP: |
| 150 | ptr->tio.cp_int_enable |= bits; | 151 | __sn_setq_relaxed(&ptr->tio.cp_int_enable, bits); |
| 151 | break; | 152 | break; |
| 152 | case PCIBR_BRIDGETYPE_PIC: | 153 | case PCIBR_BRIDGETYPE_PIC: |
| 153 | ptr->pic.p_int_enable |= bits; | 154 | __sn_setq_relaxed(&ptr->pic.p_int_enable, bits); |
| 154 | break; | 155 | break; |
| 155 | default: | 156 | default: |
| 156 | panic | 157 | panic |
| @@ -171,14 +172,16 @@ void pcireg_intr_addr_addr_set(struct pcibus_info *pcibus_info, int int_n, | |||
| 171 | if (pcibus_info) { | 172 | if (pcibus_info) { |
| 172 | switch (pcibus_info->pbi_bridge_type) { | 173 | switch (pcibus_info->pbi_bridge_type) { |
| 173 | case PCIBR_BRIDGETYPE_TIOCP: | 174 | case PCIBR_BRIDGETYPE_TIOCP: |
| 174 | ptr->tio.cp_int_addr[int_n] &= ~TIOCP_HOST_INTR_ADDR; | 175 | __sn_clrq_relaxed(&ptr->tio.cp_int_addr[int_n], |
| 175 | ptr->tio.cp_int_addr[int_n] |= | 176 | TIOCP_HOST_INTR_ADDR); |
| 176 | (addr & TIOCP_HOST_INTR_ADDR); | 177 | __sn_setq_relaxed(&ptr->tio.cp_int_addr[int_n], |
| 178 | (addr & TIOCP_HOST_INTR_ADDR)); | ||
| 177 | break; | 179 | break; |
| 178 | case PCIBR_BRIDGETYPE_PIC: | 180 | case PCIBR_BRIDGETYPE_PIC: |
| 179 | ptr->pic.p_int_addr[int_n] &= ~PIC_HOST_INTR_ADDR; | 181 | __sn_clrq_relaxed(&ptr->pic.p_int_addr[int_n], |
| 180 | ptr->pic.p_int_addr[int_n] |= | 182 | PIC_HOST_INTR_ADDR); |
| 181 | (addr & PIC_HOST_INTR_ADDR); | 183 | __sn_setq_relaxed(&ptr->pic.p_int_addr[int_n], |
| 184 | (addr & PIC_HOST_INTR_ADDR)); | ||
| 182 | break; | 185 | break; |
| 183 | default: | 186 | default: |
| 184 | panic | 187 | panic |
| @@ -198,10 +201,10 @@ void pcireg_force_intr_set(struct pcibus_info *pcibus_info, int int_n) | |||
| 198 | if (pcibus_info) { | 201 | if (pcibus_info) { |
| 199 | switch (pcibus_info->pbi_bridge_type) { | 202 | switch (pcibus_info->pbi_bridge_type) { |
| 200 | case PCIBR_BRIDGETYPE_TIOCP: | 203 | case PCIBR_BRIDGETYPE_TIOCP: |
| 201 | ptr->tio.cp_force_pin[int_n] = 1; | 204 | writeq(1, &ptr->tio.cp_force_pin[int_n]); |
| 202 | break; | 205 | break; |
| 203 | case PCIBR_BRIDGETYPE_PIC: | 206 | case PCIBR_BRIDGETYPE_PIC: |
| 204 | ptr->pic.p_force_pin[int_n] = 1; | 207 | writeq(1, &ptr->pic.p_force_pin[int_n]); |
| 205 | break; | 208 | break; |
| 206 | default: | 209 | default: |
| 207 | panic | 210 | panic |
| @@ -222,10 +225,12 @@ uint64_t pcireg_wrb_flush_get(struct pcibus_info *pcibus_info, int device) | |||
| 222 | if (pcibus_info) { | 225 | if (pcibus_info) { |
| 223 | switch (pcibus_info->pbi_bridge_type) { | 226 | switch (pcibus_info->pbi_bridge_type) { |
| 224 | case PCIBR_BRIDGETYPE_TIOCP: | 227 | case PCIBR_BRIDGETYPE_TIOCP: |
| 225 | ret = ptr->tio.cp_wr_req_buf[device]; | 228 | ret = |
| 229 | __sn_readq_relaxed(&ptr->tio.cp_wr_req_buf[device]); | ||
| 226 | break; | 230 | break; |
| 227 | case PCIBR_BRIDGETYPE_PIC: | 231 | case PCIBR_BRIDGETYPE_PIC: |
| 228 | ret = ptr->pic.p_wr_req_buf[device]; | 232 | ret = |
| 233 | __sn_readq_relaxed(&ptr->pic.p_wr_req_buf[device]); | ||
| 229 | break; | 234 | break; |
| 230 | default: | 235 | default: |
| 231 | panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr); | 236 | panic("pcireg_wrb_flush_get: unknown bridgetype bridge 0x%p", (void *)ptr); |
| @@ -244,10 +249,10 @@ void pcireg_int_ate_set(struct pcibus_info *pcibus_info, int ate_index, | |||
| 244 | if (pcibus_info) { | 249 | if (pcibus_info) { |
| 245 | switch (pcibus_info->pbi_bridge_type) { | 250 | switch (pcibus_info->pbi_bridge_type) { |
| 246 | case PCIBR_BRIDGETYPE_TIOCP: | 251 | case PCIBR_BRIDGETYPE_TIOCP: |
| 247 | ptr->tio.cp_int_ate_ram[ate_index] = (uint64_t) val; | 252 | writeq(val, &ptr->tio.cp_int_ate_ram[ate_index]); |
| 248 | break; | 253 | break; |
| 249 | case PCIBR_BRIDGETYPE_PIC: | 254 | case PCIBR_BRIDGETYPE_PIC: |
| 250 | ptr->pic.p_int_ate_ram[ate_index] = (uint64_t) val; | 255 | writeq(val, &ptr->pic.p_int_ate_ram[ate_index]); |
| 251 | break; | 256 | break; |
| 252 | default: | 257 | default: |
| 253 | panic | 258 | panic |
| @@ -265,12 +270,10 @@ uint64_t *pcireg_int_ate_addr(struct pcibus_info *pcibus_info, int ate_index) | |||
| 265 | if (pcibus_info) { | 270 | if (pcibus_info) { |
| 266 | switch (pcibus_info->pbi_bridge_type) { | 271 | switch (pcibus_info->pbi_bridge_type) { |
| 267 | case PCIBR_BRIDGETYPE_TIOCP: | 272 | case PCIBR_BRIDGETYPE_TIOCP: |
| 268 | ret = | 273 | ret = &ptr->tio.cp_int_ate_ram[ate_index]; |
| 269 | (uint64_t *) & (ptr->tio.cp_int_ate_ram[ate_index]); | ||
| 270 | break; | 274 | break; |
| 271 | case PCIBR_BRIDGETYPE_PIC: | 275 | case PCIBR_BRIDGETYPE_PIC: |
| 272 | ret = | 276 | ret = &ptr->pic.p_int_ate_ram[ate_index]; |
| 273 | (uint64_t *) & (ptr->pic.p_int_ate_ram[ate_index]); | ||
| 274 | break; | 277 | break; |
| 275 | default: | 278 | default: |
| 276 | panic | 279 | panic |
diff --git a/arch/ia64/sn/pci/tioca_provider.c b/arch/ia64/sn/pci/tioca_provider.c index 19bced34d5f1..46b646a6d345 100644 --- a/arch/ia64/sn/pci/tioca_provider.c +++ b/arch/ia64/sn/pci/tioca_provider.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/pci.h> | 11 | #include <linux/pci.h> |
| 12 | #include <asm/sn/sn_sal.h> | 12 | #include <asm/sn/sn_sal.h> |
| 13 | #include <asm/sn/addrs.h> | 13 | #include <asm/sn/addrs.h> |
| 14 | #include <asm/sn/io.h> | ||
| 14 | #include <asm/sn/pcidev.h> | 15 | #include <asm/sn/pcidev.h> |
| 15 | #include <asm/sn/pcibus_provider_defs.h> | 16 | #include <asm/sn/pcibus_provider_defs.h> |
| 16 | #include <asm/sn/tioca_provider.h> | 17 | #include <asm/sn/tioca_provider.h> |
| @@ -37,7 +38,7 @@ tioca_gart_init(struct tioca_kernel *tioca_kern) | |||
| 37 | uint64_t offset; | 38 | uint64_t offset; |
| 38 | struct page *tmp; | 39 | struct page *tmp; |
| 39 | struct tioca_common *tioca_common; | 40 | struct tioca_common *tioca_common; |
| 40 | volatile struct tioca *ca_base; | 41 | struct tioca *ca_base; |
| 41 | 42 | ||
| 42 | tioca_common = tioca_kern->ca_common; | 43 | tioca_common = tioca_kern->ca_common; |
| 43 | ca_base = (struct tioca *)tioca_common->ca_common.bs_base; | 44 | ca_base = (struct tioca *)tioca_common->ca_common.bs_base; |
| @@ -174,27 +175,29 @@ tioca_gart_init(struct tioca_kernel *tioca_kern) | |||
| 174 | * DISABLE GART PREFETCHING due to hw bug tracked in SGI PV930029 | 175 | * DISABLE GART PREFETCHING due to hw bug tracked in SGI PV930029 |
| 175 | */ | 176 | */ |
| 176 | 177 | ||
| 177 | ca_base->ca_control1 |= CA_AGPDMA_OP_ENB_COMBDELAY; /* PV895469 ? */ | 178 | __sn_setq_relaxed(&ca_base->ca_control1, |
| 178 | ca_base->ca_control2 &= ~(CA_GART_MEM_PARAM); | 179 | CA_AGPDMA_OP_ENB_COMBDELAY); /* PV895469 ? */ |
| 179 | ca_base->ca_control2 |= (0x2ull << CA_GART_MEM_PARAM_SHFT); | 180 | __sn_clrq_relaxed(&ca_base->ca_control2, CA_GART_MEM_PARAM); |
| 181 | __sn_setq_relaxed(&ca_base->ca_control2, | ||
| 182 | (0x2ull << CA_GART_MEM_PARAM_SHFT)); | ||
| 180 | tioca_kern->ca_gart_iscoherent = 1; | 183 | tioca_kern->ca_gart_iscoherent = 1; |
| 181 | ca_base->ca_control2 &= | 184 | __sn_clrq_relaxed(&ca_base->ca_control2, |
| 182 | ~(CA_GART_WR_PREFETCH_ENB | CA_GART_RD_PREFETCH_ENB); | 185 | (CA_GART_WR_PREFETCH_ENB | CA_GART_RD_PREFETCH_ENB)); |
| 183 | 186 | ||
| 184 | /* | 187 | /* |
| 185 | * Unmask GART fetch error interrupts. Clear residual errors first. | 188 | * Unmask GART fetch error interrupts. Clear residual errors first. |
| 186 | */ | 189 | */ |
| 187 | 190 | ||
| 188 | ca_base->ca_int_status_alias = CA_GART_FETCH_ERR; | 191 | writeq(CA_GART_FETCH_ERR, &ca_base->ca_int_status_alias); |
| 189 | ca_base->ca_mult_error_alias = CA_GART_FETCH_ERR; | 192 | writeq(CA_GART_FETCH_ERR, &ca_base->ca_mult_error_alias); |
| 190 | ca_base->ca_int_mask &= ~CA_GART_FETCH_ERR; | 193 | __sn_clrq_relaxed(&ca_base->ca_int_mask, CA_GART_FETCH_ERR); |
| 191 | 194 | ||
| 192 | /* | 195 | /* |
| 193 | * Program the aperature and gart registers in TIOCA | 196 | * Program the aperature and gart registers in TIOCA |
| 194 | */ | 197 | */ |
| 195 | 198 | ||
| 196 | ca_base->ca_gart_aperature = ap_reg; | 199 | writeq(ap_reg, &ca_base->ca_gart_aperature); |
| 197 | ca_base->ca_gart_ptr_table = tioca_kern->ca_gart_coretalk_addr | 1; | 200 | writeq(tioca_kern->ca_gart_coretalk_addr|1, &ca_base->ca_gart_ptr_table); |
| 198 | 201 | ||
| 199 | return 0; | 202 | return 0; |
| 200 | } | 203 | } |
| @@ -211,7 +214,6 @@ void | |||
| 211 | tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) | 214 | tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) |
| 212 | { | 215 | { |
| 213 | int cap_ptr; | 216 | int cap_ptr; |
| 214 | uint64_t ca_control1; | ||
| 215 | uint32_t reg; | 217 | uint32_t reg; |
| 216 | struct tioca *tioca_base; | 218 | struct tioca *tioca_base; |
| 217 | struct pci_dev *pdev; | 219 | struct pci_dev *pdev; |
| @@ -256,9 +258,7 @@ tioca_fastwrite_enable(struct tioca_kernel *tioca_kern) | |||
| 256 | */ | 258 | */ |
| 257 | 259 | ||
| 258 | tioca_base = (struct tioca *)common->ca_common.bs_base; | 260 | tioca_base = (struct tioca *)common->ca_common.bs_base; |
| 259 | ca_control1 = tioca_base->ca_control1; | 261 | __sn_setq_relaxed(&tioca_base->ca_control1, CA_AGP_FW_ENABLE); |
| 260 | ca_control1 |= CA_AGP_FW_ENABLE; | ||
| 261 | tioca_base->ca_control1 = ca_control1; | ||
| 262 | } | 262 | } |
| 263 | 263 | ||
| 264 | EXPORT_SYMBOL(tioca_fastwrite_enable); /* used by agp-sgi */ | 264 | EXPORT_SYMBOL(tioca_fastwrite_enable); /* used by agp-sgi */ |
| @@ -345,7 +345,7 @@ tioca_dma_d48(struct pci_dev *pdev, uint64_t paddr) | |||
| 345 | return 0; | 345 | return 0; |
| 346 | } | 346 | } |
| 347 | 347 | ||
| 348 | agp_dma_extn = ca_base->ca_agp_dma_addr_extn; | 348 | agp_dma_extn = __sn_readq_relaxed(&ca_base->ca_agp_dma_addr_extn); |
| 349 | if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) { | 349 | if (node_upper != (agp_dma_extn >> CA_AGP_DMA_NODE_ID_SHFT)) { |
| 350 | printk(KERN_ERR "%s: coretalk upper node (%u) " | 350 | printk(KERN_ERR "%s: coretalk upper node (%u) " |
| 351 | "mismatch with ca_agp_dma_addr_extn (%lu)\n", | 351 | "mismatch with ca_agp_dma_addr_extn (%lu)\n", |
diff --git a/arch/ia64/sn/pci/tioce_provider.c b/arch/ia64/sn/pci/tioce_provider.c index 8e75db2b825d..9f03d4e5121c 100644 --- a/arch/ia64/sn/pci/tioce_provider.c +++ b/arch/ia64/sn/pci/tioce_provider.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <linux/pci.h> | 11 | #include <linux/pci.h> |
| 12 | #include <asm/sn/sn_sal.h> | 12 | #include <asm/sn/sn_sal.h> |
| 13 | #include <asm/sn/addrs.h> | 13 | #include <asm/sn/addrs.h> |
| 14 | #include <asm/sn/io.h> | ||
| 14 | #include <asm/sn/pcidev.h> | 15 | #include <asm/sn/pcidev.h> |
| 15 | #include <asm/sn/pcibus_provider_defs.h> | 16 | #include <asm/sn/pcibus_provider_defs.h> |
| 16 | #include <asm/sn/tioce_provider.h> | 17 | #include <asm/sn/tioce_provider.h> |
| @@ -227,7 +228,7 @@ tioce_alloc_map(struct tioce_kernel *ce_kern, int type, int port, | |||
| 227 | 228 | ||
| 228 | ate = ATE_MAKE(addr, pagesize); | 229 | ate = ATE_MAKE(addr, pagesize); |
| 229 | ate_shadow[i + j] = ate; | 230 | ate_shadow[i + j] = ate; |
| 230 | ate_reg[i + j] = ate; | 231 | writeq(ate, &ate_reg[i + j]); |
| 231 | addr += pagesize; | 232 | addr += pagesize; |
| 232 | } | 233 | } |
| 233 | 234 | ||
| @@ -268,10 +269,10 @@ tioce_dma_d32(struct pci_dev *pdev, uint64_t ct_addr) | |||
| 268 | pcidev_to_tioce(pdev, &ce_mmr, &ce_kern, &port); | 269 | pcidev_to_tioce(pdev, &ce_mmr, &ce_kern, &port); |
| 269 | 270 | ||
| 270 | if (ce_kern->ce_port[port].dirmap_refcnt == 0) { | 271 | if (ce_kern->ce_port[port].dirmap_refcnt == 0) { |
| 271 | volatile uint64_t tmp; | 272 | uint64_t tmp; |
| 272 | 273 | ||
| 273 | ce_kern->ce_port[port].dirmap_shadow = ct_upper; | 274 | ce_kern->ce_port[port].dirmap_shadow = ct_upper; |
| 274 | ce_mmr->ce_ure_dir_map[port] = ct_upper; | 275 | writeq(ct_upper, &ce_mmr->ce_ure_dir_map[port]); |
| 275 | tmp = ce_mmr->ce_ure_dir_map[port]; | 276 | tmp = ce_mmr->ce_ure_dir_map[port]; |
| 276 | dma_ok = 1; | 277 | dma_ok = 1; |
| 277 | } else | 278 | } else |
| @@ -343,7 +344,7 @@ tioce_dma_unmap(struct pci_dev *pdev, dma_addr_t bus_addr, int dir) | |||
| 343 | if (TIOCE_D32_ADDR(bus_addr)) { | 344 | if (TIOCE_D32_ADDR(bus_addr)) { |
| 344 | if (--ce_kern->ce_port[port].dirmap_refcnt == 0) { | 345 | if (--ce_kern->ce_port[port].dirmap_refcnt == 0) { |
| 345 | ce_kern->ce_port[port].dirmap_shadow = 0; | 346 | ce_kern->ce_port[port].dirmap_shadow = 0; |
| 346 | ce_mmr->ce_ure_dir_map[port] = 0; | 347 | writeq(0, &ce_mmr->ce_ure_dir_map[port]); |
| 347 | } | 348 | } |
| 348 | } else { | 349 | } else { |
| 349 | struct tioce_dmamap *map; | 350 | struct tioce_dmamap *map; |
| @@ -582,18 +583,18 @@ tioce_kern_init(struct tioce_common *tioce_common) | |||
| 582 | */ | 583 | */ |
| 583 | 584 | ||
| 584 | tioce_mmr = (struct tioce *)tioce_common->ce_pcibus.bs_base; | 585 | tioce_mmr = (struct tioce *)tioce_common->ce_pcibus.bs_base; |
| 585 | tioce_mmr->ce_ure_page_map &= ~CE_URE_PAGESIZE_MASK; | 586 | __sn_clrq_relaxed(&tioce_mmr->ce_ure_page_map, CE_URE_PAGESIZE_MASK); |
| 586 | tioce_mmr->ce_ure_page_map |= CE_URE_256K_PAGESIZE; | 587 | __sn_setq_relaxed(&tioce_mmr->ce_ure_page_map, CE_URE_256K_PAGESIZE); |
| 587 | tioce_kern->ce_ate3240_pagesize = KB(256); | 588 | tioce_kern->ce_ate3240_pagesize = KB(256); |
| 588 | 589 | ||
| 589 | for (i = 0; i < TIOCE_NUM_M40_ATES; i++) { | 590 | for (i = 0; i < TIOCE_NUM_M40_ATES; i++) { |
| 590 | tioce_kern->ce_ate40_shadow[i] = 0; | 591 | tioce_kern->ce_ate40_shadow[i] = 0; |
| 591 | tioce_mmr->ce_ure_ate40[i] = 0; | 592 | writeq(0, &tioce_mmr->ce_ure_ate40[i]); |
| 592 | } | 593 | } |
| 593 | 594 | ||
| 594 | for (i = 0; i < TIOCE_NUM_M3240_ATES; i++) { | 595 | for (i = 0; i < TIOCE_NUM_M3240_ATES; i++) { |
| 595 | tioce_kern->ce_ate3240_shadow[i] = 0; | 596 | tioce_kern->ce_ate3240_shadow[i] = 0; |
| 596 | tioce_mmr->ce_ure_ate3240[i] = 0; | 597 | writeq(0, &tioce_mmr->ce_ure_ate3240[i]); |
| 597 | } | 598 | } |
| 598 | 599 | ||
| 599 | return tioce_kern; | 600 | return tioce_kern; |
| @@ -665,7 +666,7 @@ tioce_force_interrupt(struct sn_irq_info *sn_irq_info) | |||
| 665 | default: | 666 | default: |
| 666 | return; | 667 | return; |
| 667 | } | 668 | } |
| 668 | ce_mmr->ce_adm_force_int = force_int_val; | 669 | writeq(force_int_val, &ce_mmr->ce_adm_force_int); |
| 669 | } | 670 | } |
| 670 | 671 | ||
| 671 | /** | 672 | /** |
| @@ -686,6 +687,7 @@ tioce_target_interrupt(struct sn_irq_info *sn_irq_info) | |||
| 686 | struct tioce_common *ce_common; | 687 | struct tioce_common *ce_common; |
| 687 | struct tioce *ce_mmr; | 688 | struct tioce *ce_mmr; |
| 688 | int bit; | 689 | int bit; |
| 690 | uint64_t vector; | ||
| 689 | 691 | ||
| 690 | pcidev_info = (struct pcidev_info *)sn_irq_info->irq_pciioinfo; | 692 | pcidev_info = (struct pcidev_info *)sn_irq_info->irq_pciioinfo; |
| 691 | if (!pcidev_info) | 693 | if (!pcidev_info) |
| @@ -696,11 +698,11 @@ tioce_target_interrupt(struct sn_irq_info *sn_irq_info) | |||
| 696 | 698 | ||
| 697 | bit = sn_irq_info->irq_int_bit; | 699 | bit = sn_irq_info->irq_int_bit; |
| 698 | 700 | ||
| 699 | ce_mmr->ce_adm_int_mask |= (1UL << bit); | 701 | __sn_setq_relaxed(&ce_mmr->ce_adm_int_mask, (1UL << bit)); |
| 700 | ce_mmr->ce_adm_int_dest[bit] = | 702 | vector = (uint64_t)sn_irq_info->irq_irq << INTR_VECTOR_SHFT; |
| 701 | ((uint64_t)sn_irq_info->irq_irq << INTR_VECTOR_SHFT) | | 703 | vector |= sn_irq_info->irq_xtalkaddr; |
| 702 | sn_irq_info->irq_xtalkaddr; | 704 | writeq(vector, &ce_mmr->ce_adm_int_dest[bit]); |
| 703 | ce_mmr->ce_adm_int_mask &= ~(1UL << bit); | 705 | __sn_clrq_relaxed(&ce_mmr->ce_adm_int_mask, (1UL << bit)); |
| 704 | 706 | ||
| 705 | tioce_force_interrupt(sn_irq_info); | 707 | tioce_force_interrupt(sn_irq_info); |
| 706 | } | 708 | } |
diff --git a/arch/m32r/kernel/entry.S b/arch/m32r/kernel/entry.S index dddbf6b5ed2c..85920fb8d08c 100644 --- a/arch/m32r/kernel/entry.S +++ b/arch/m32r/kernel/entry.S | |||
| @@ -681,6 +681,15 @@ ENTRY(debug_trap) | |||
| 681 | bl do_debug_trap | 681 | bl do_debug_trap |
| 682 | bra error_code | 682 | bra error_code |
| 683 | 683 | ||
| 684 | ENTRY(ill_trap) | ||
| 685 | /* void ill_trap(void) */ | ||
| 686 | SWITCH_TO_KERNEL_STACK | ||
| 687 | SAVE_ALL | ||
| 688 | ldi r1, #0 ; error_code ; FIXME | ||
| 689 | mv r0, sp ; pt_regs | ||
| 690 | bl do_ill_trap | ||
| 691 | bra error_code | ||
| 692 | |||
| 684 | 693 | ||
| 685 | /* Cache flushing handler */ | 694 | /* Cache flushing handler */ |
| 686 | ENTRY(cache_flushing_handler) | 695 | ENTRY(cache_flushing_handler) |
diff --git a/arch/m32r/kernel/smp.c b/arch/m32r/kernel/smp.c index a4576ac7e870..8b1f6eb76870 100644 --- a/arch/m32r/kernel/smp.c +++ b/arch/m32r/kernel/smp.c | |||
| @@ -275,12 +275,14 @@ static void flush_tlb_all_ipi(void *info) | |||
| 275 | *==========================================================================*/ | 275 | *==========================================================================*/ |
| 276 | void smp_flush_tlb_mm(struct mm_struct *mm) | 276 | void smp_flush_tlb_mm(struct mm_struct *mm) |
| 277 | { | 277 | { |
| 278 | int cpu_id = smp_processor_id(); | 278 | int cpu_id; |
| 279 | cpumask_t cpu_mask; | 279 | cpumask_t cpu_mask; |
| 280 | unsigned long *mmc = &mm->context[cpu_id]; | 280 | unsigned long *mmc; |
| 281 | unsigned long flags; | 281 | unsigned long flags; |
| 282 | 282 | ||
| 283 | preempt_disable(); | 283 | preempt_disable(); |
| 284 | cpu_id = smp_processor_id(); | ||
| 285 | mmc = &mm->context[cpu_id]; | ||
| 284 | cpu_mask = mm->cpu_vm_mask; | 286 | cpu_mask = mm->cpu_vm_mask; |
| 285 | cpu_clear(cpu_id, cpu_mask); | 287 | cpu_clear(cpu_id, cpu_mask); |
| 286 | 288 | ||
| @@ -343,12 +345,14 @@ void smp_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, | |||
| 343 | void smp_flush_tlb_page(struct vm_area_struct *vma, unsigned long va) | 345 | void smp_flush_tlb_page(struct vm_area_struct *vma, unsigned long va) |
| 344 | { | 346 | { |
| 345 | struct mm_struct *mm = vma->vm_mm; | 347 | struct mm_struct *mm = vma->vm_mm; |
| 346 | int cpu_id = smp_processor_id(); | 348 | int cpu_id; |
| 347 | cpumask_t cpu_mask; | 349 | cpumask_t cpu_mask; |
| 348 | unsigned long *mmc = &mm->context[cpu_id]; | 350 | unsigned long *mmc; |
| 349 | unsigned long flags; | 351 | unsigned long flags; |
| 350 | 352 | ||
| 351 | preempt_disable(); | 353 | preempt_disable(); |
| 354 | cpu_id = smp_processor_id(); | ||
| 355 | mmc = &mm->context[cpu_id]; | ||
| 352 | cpu_mask = mm->cpu_vm_mask; | 356 | cpu_mask = mm->cpu_vm_mask; |
| 353 | cpu_clear(cpu_id, cpu_mask); | 357 | cpu_clear(cpu_id, cpu_mask); |
| 354 | 358 | ||
diff --git a/arch/m32r/kernel/traps.c b/arch/m32r/kernel/traps.c index 01922271d17e..5fe8ed6d62dc 100644 --- a/arch/m32r/kernel/traps.c +++ b/arch/m32r/kernel/traps.c | |||
| @@ -5,8 +5,6 @@ | |||
| 5 | * Hitoshi Yamamoto | 5 | * Hitoshi Yamamoto |
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | /* $Id$ */ | ||
| 9 | |||
| 10 | /* | 8 | /* |
| 11 | * 'traps.c' handles hardware traps and faults after we have saved some | 9 | * 'traps.c' handles hardware traps and faults after we have saved some |
| 12 | * state in 'entry.S'. | 10 | * state in 'entry.S'. |
| @@ -35,6 +33,7 @@ asmlinkage void ei_handler(void); | |||
| 35 | asmlinkage void rie_handler(void); | 33 | asmlinkage void rie_handler(void); |
| 36 | asmlinkage void debug_trap(void); | 34 | asmlinkage void debug_trap(void); |
| 37 | asmlinkage void cache_flushing_handler(void); | 35 | asmlinkage void cache_flushing_handler(void); |
| 36 | asmlinkage void ill_trap(void); | ||
| 38 | 37 | ||
| 39 | #ifdef CONFIG_SMP | 38 | #ifdef CONFIG_SMP |
| 40 | extern void smp_reschedule_interrupt(void); | 39 | extern void smp_reschedule_interrupt(void); |
| @@ -77,22 +76,22 @@ void set_eit_vector_entries(void) | |||
| 77 | eit_vector[5] = BRA_INSN(default_eit_handler, 5); | 76 | eit_vector[5] = BRA_INSN(default_eit_handler, 5); |
| 78 | eit_vector[8] = BRA_INSN(rie_handler, 8); | 77 | eit_vector[8] = BRA_INSN(rie_handler, 8); |
| 79 | eit_vector[12] = BRA_INSN(alignment_check, 12); | 78 | eit_vector[12] = BRA_INSN(alignment_check, 12); |
| 80 | eit_vector[16] = 0xff000000UL; | 79 | eit_vector[16] = BRA_INSN(ill_trap, 16); |
| 81 | eit_vector[17] = BRA_INSN(debug_trap, 17); | 80 | eit_vector[17] = BRA_INSN(debug_trap, 17); |
| 82 | eit_vector[18] = BRA_INSN(system_call, 18); | 81 | eit_vector[18] = BRA_INSN(system_call, 18); |
| 83 | eit_vector[19] = 0xff000000UL; | 82 | eit_vector[19] = BRA_INSN(ill_trap, 19); |
| 84 | eit_vector[20] = 0xff000000UL; | 83 | eit_vector[20] = BRA_INSN(ill_trap, 20); |
| 85 | eit_vector[21] = 0xff000000UL; | 84 | eit_vector[21] = BRA_INSN(ill_trap, 21); |
| 86 | eit_vector[22] = 0xff000000UL; | 85 | eit_vector[22] = BRA_INSN(ill_trap, 22); |
| 87 | eit_vector[23] = 0xff000000UL; | 86 | eit_vector[23] = BRA_INSN(ill_trap, 23); |
| 88 | eit_vector[24] = 0xff000000UL; | 87 | eit_vector[24] = BRA_INSN(ill_trap, 24); |
| 89 | eit_vector[25] = 0xff000000UL; | 88 | eit_vector[25] = BRA_INSN(ill_trap, 25); |
| 90 | eit_vector[26] = 0xff000000UL; | 89 | eit_vector[26] = BRA_INSN(ill_trap, 26); |
| 91 | eit_vector[27] = 0xff000000UL; | 90 | eit_vector[27] = BRA_INSN(ill_trap, 27); |
| 92 | eit_vector[28] = BRA_INSN(cache_flushing_handler, 28); | 91 | eit_vector[28] = BRA_INSN(cache_flushing_handler, 28); |
| 93 | eit_vector[29] = 0xff000000UL; | 92 | eit_vector[29] = BRA_INSN(ill_trap, 29); |
| 94 | eit_vector[30] = 0xff000000UL; | 93 | eit_vector[30] = BRA_INSN(ill_trap, 30); |
| 95 | eit_vector[31] = 0xff000000UL; | 94 | eit_vector[31] = BRA_INSN(ill_trap, 31); |
| 96 | eit_vector[32] = BRA_INSN(ei_handler, 32); | 95 | eit_vector[32] = BRA_INSN(ei_handler, 32); |
| 97 | eit_vector[64] = BRA_INSN(pie_handler, 64); | 96 | eit_vector[64] = BRA_INSN(pie_handler, 64); |
| 98 | #ifdef CONFIG_MMU | 97 | #ifdef CONFIG_MMU |
| @@ -286,7 +285,8 @@ asmlinkage void do_##name(struct pt_regs * regs, long error_code) \ | |||
| 286 | 285 | ||
| 287 | DO_ERROR( 1, SIGTRAP, "debug trap", debug_trap) | 286 | DO_ERROR( 1, SIGTRAP, "debug trap", debug_trap) |
| 288 | DO_ERROR_INFO(0x20, SIGILL, "reserved instruction ", rie_handler, ILL_ILLOPC, regs->bpc) | 287 | DO_ERROR_INFO(0x20, SIGILL, "reserved instruction ", rie_handler, ILL_ILLOPC, regs->bpc) |
| 289 | DO_ERROR_INFO(0x100, SIGILL, "privilege instruction", pie_handler, ILL_PRVOPC, regs->bpc) | 288 | DO_ERROR_INFO(0x100, SIGILL, "privileged instruction", pie_handler, ILL_PRVOPC, regs->bpc) |
| 289 | DO_ERROR_INFO(-1, SIGILL, "illegal trap", ill_trap, ILL_ILLTRP, regs->bpc) | ||
| 290 | 290 | ||
| 291 | extern int handle_unaligned_access(unsigned long, struct pt_regs *); | 291 | extern int handle_unaligned_access(unsigned long, struct pt_regs *); |
| 292 | 292 | ||
| @@ -329,4 +329,3 @@ asmlinkage void do_alignment_check(struct pt_regs *regs, long error_code) | |||
| 329 | set_fs(oldfs); | 329 | set_fs(oldfs); |
| 330 | } | 330 | } |
| 331 | } | 331 | } |
| 332 | |||
diff --git a/arch/mips/pci/fixup-tb0226.c b/arch/mips/pci/fixup-tb0226.c index 61513d5d97da..b5d42b12de10 100644 --- a/arch/mips/pci/fixup-tb0226.c +++ b/arch/mips/pci/fixup-tb0226.c | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * fixup-tb0226.c, The TANBAC TB0226 specific PCI fixups. | 2 | * fixup-tb0226.c, The TANBAC TB0226 specific PCI fixups. |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2002-2004 Yoichi Yuasa <yuasa@hh.iij4u.or.jp> | 4 | * Copyright (C) 2002-2005 Yoichi Yuasa <yuasa@hh.iij4u.or.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 |
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
| 21 | #include <linux/pci.h> | 21 | #include <linux/pci.h> |
| 22 | 22 | ||
| 23 | #include <asm/vr41xx/giu.h> | ||
| 23 | #include <asm/vr41xx/tb0226.h> | 24 | #include <asm/vr41xx/tb0226.h> |
| 24 | 25 | ||
| 25 | int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | 26 | int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) |
| @@ -29,42 +30,42 @@ int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin) | |||
| 29 | switch (slot) { | 30 | switch (slot) { |
| 30 | case 12: | 31 | case 12: |
| 31 | vr41xx_set_irq_trigger(GD82559_1_PIN, | 32 | vr41xx_set_irq_trigger(GD82559_1_PIN, |
| 32 | TRIGGER_LEVEL, | 33 | IRQ_TRIGGER_LEVEL, |
| 33 | SIGNAL_THROUGH); | 34 | IRQ_SIGNAL_THROUGH); |
| 34 | vr41xx_set_irq_level(GD82559_1_PIN, LEVEL_LOW); | 35 | vr41xx_set_irq_level(GD82559_1_PIN, IRQ_LEVEL_LOW); |
| 35 | irq = GD82559_1_IRQ; | 36 | irq = GD82559_1_IRQ; |
| 36 | break; | 37 | break; |
| 37 | case 13: | 38 | case 13: |
| 38 | vr41xx_set_irq_trigger(GD82559_2_PIN, | 39 | vr41xx_set_irq_trigger(GD82559_2_PIN, |
| 39 | TRIGGER_LEVEL, | 40 | IRQ_TRIGGER_LEVEL, |
| 40 | SIGNAL_THROUGH); | 41 | IRQ_SIGNAL_THROUGH); |
| 41 | vr41xx_set_irq_level(GD82559_2_PIN, LEVEL_LOW); | 42 | vr41xx_set_irq_level(GD82559_2_PIN, IRQ_LEVEL_LOW); |
| 42 | irq = GD82559_2_IRQ; | 43 | irq = GD82559_2_IRQ; |
| 43 | break; | 44 | break; |
| 44 | case 14: | 45 | case 14: |
| 45 | switch (pin) { | 46 | switch (pin) { |
| 46 | case 1: | 47 | case 1: |
| 47 | vr41xx_set_irq_trigger(UPD720100_INTA_PIN, | 48 | vr41xx_set_irq_trigger(UPD720100_INTA_PIN, |
| 48 | TRIGGER_LEVEL, | 49 | IRQ_TRIGGER_LEVEL, |
| 49 | SIGNAL_THROUGH); | 50 | IRQ_SIGNAL_THROUGH); |
| 50 | vr41xx_set_irq_level(UPD720100_INTA_PIN, | 51 | vr41xx_set_irq_level(UPD720100_INTA_PIN, |
| 51 | LEVEL_LOW); | 52 | IRQ_LEVEL_LOW); |
| 52 | irq = UPD720100_INTA_IRQ; | 53 | irq = UPD720100_INTA_IRQ; |
| 53 | break; | 54 | break; |
| 54 | case 2: | 55 | case 2: |
| 55 | vr41xx_set_irq_trigger(UPD720100_INTB_PIN, | 56 | vr41xx_set_irq_trigger(UPD720100_INTB_PIN, |
| 56 | TRIGGER_LEVEL, | 57 | IRQ_TRIGGER_LEVEL, |
| 57 | SIGNAL_THROUGH); | 58 | IRQ_SIGNAL_THROUGH); |
| 58 | vr41xx_set_irq_level(UPD720100_INTB_PIN, | 59 | vr41xx_set_irq_level(UPD720100_INTB_PIN, |
| 59 | LEVEL_LOW); | 60 | IRQ_LEVEL_LOW); |
| 60 | irq = UPD720100_INTB_IRQ; | 61 | irq = UPD720100_INTB_IRQ; |
| 61 | break; | 62 | break; |
| 62 | case 3: | 63 | case 3: |
| 63 | vr41xx_set_irq_trigger(UPD720100_INTC_PIN, | 64 | vr41xx_set_irq_trigger(UPD720100_INTC_PIN, |
| 64 | TRIGGER_LEVEL, | 65 | IRQ_TRIGGER_LEVEL, |
| 65 | SIGNAL_THROUGH); | 66 | IRQ_SIGNAL_THROUGH); |
| 66 | vr41xx_set_irq_level(UPD720100_INTC_PIN, | 67 | vr41xx_set_irq_level(UPD720100_INTC_PIN, |
| 67 | LEVEL_LOW); | 68 | IRQ_LEVEL_LOW); |
| 68 | irq = UPD720100_INTC_IRQ; | 69 | irq = UPD720100_INTC_IRQ; |
| 69 | break; | 70 | break; |
| 70 | default: | 71 | default: |
diff --git a/arch/ppc/kernel/cputable.c b/arch/ppc/kernel/cputable.c index 546e1ea4cafa..6b76cf58d9e0 100644 --- a/arch/ppc/kernel/cputable.c +++ b/arch/ppc/kernel/cputable.c | |||
| @@ -91,7 +91,7 @@ struct cpu_spec cpu_specs[] = { | |||
| 91 | .cpu_features = CPU_FTR_COMMON | CPU_FTR_601 | | 91 | .cpu_features = CPU_FTR_COMMON | CPU_FTR_601 | |
| 92 | CPU_FTR_HPTE_TABLE, | 92 | CPU_FTR_HPTE_TABLE, |
| 93 | .cpu_user_features = COMMON_PPC | PPC_FEATURE_601_INSTR | | 93 | .cpu_user_features = COMMON_PPC | PPC_FEATURE_601_INSTR | |
| 94 | PPC_FEATURE_UNIFIED_CACHE, | 94 | PPC_FEATURE_UNIFIED_CACHE | PPC_FEATURE_NO_TB, |
| 95 | .icache_bsize = 32, | 95 | .icache_bsize = 32, |
| 96 | .dcache_bsize = 32, | 96 | .dcache_bsize = 32, |
| 97 | .cpu_setup = __setup_cpu_601 | 97 | .cpu_setup = __setup_cpu_601 |
| @@ -745,7 +745,8 @@ struct cpu_spec cpu_specs[] = { | |||
| 745 | .cpu_name = "403GCX", | 745 | .cpu_name = "403GCX", |
| 746 | .cpu_features = CPU_FTR_SPLIT_ID_CACHE | | 746 | .cpu_features = CPU_FTR_SPLIT_ID_CACHE | |
| 747 | CPU_FTR_USE_TB, | 747 | CPU_FTR_USE_TB, |
| 748 | .cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU, | 748 | .cpu_user_features = PPC_FEATURE_32 | |
| 749 | PPC_FEATURE_HAS_MMU | PPC_FEATURE_NO_TB, | ||
| 749 | .icache_bsize = 16, | 750 | .icache_bsize = 16, |
| 750 | .dcache_bsize = 16, | 751 | .dcache_bsize = 16, |
| 751 | }, | 752 | }, |
diff --git a/arch/ppc/kernel/dma-mapping.c b/arch/ppc/kernel/dma-mapping.c index b566d982806c..8edee806dae7 100644 --- a/arch/ppc/kernel/dma-mapping.c +++ b/arch/ppc/kernel/dma-mapping.c | |||
| @@ -401,10 +401,10 @@ EXPORT_SYMBOL(__dma_sync); | |||
| 401 | static inline void __dma_sync_page_highmem(struct page *page, | 401 | static inline void __dma_sync_page_highmem(struct page *page, |
| 402 | unsigned long offset, size_t size, int direction) | 402 | unsigned long offset, size_t size, int direction) |
| 403 | { | 403 | { |
| 404 | size_t seg_size = min((size_t)PAGE_SIZE, size) - offset; | 404 | size_t seg_size = min((size_t)(PAGE_SIZE - offset), size); |
| 405 | size_t cur_size = seg_size; | 405 | size_t cur_size = seg_size; |
| 406 | unsigned long flags, start, seg_offset = offset; | 406 | unsigned long flags, start, seg_offset = offset; |
| 407 | int nr_segs = PAGE_ALIGN(size + (PAGE_SIZE - offset))/PAGE_SIZE; | 407 | int nr_segs = 1 + ((size - seg_size) + PAGE_SIZE - 1)/PAGE_SIZE; |
| 408 | int seg_nr = 0; | 408 | int seg_nr = 0; |
| 409 | 409 | ||
| 410 | local_irq_save(flags); | 410 | local_irq_save(flags); |
diff --git a/arch/ppc/platforms/pmac_time.c b/arch/ppc/platforms/pmac_time.c index 778ce4fec368..efb819f9490d 100644 --- a/arch/ppc/platforms/pmac_time.c +++ b/arch/ppc/platforms/pmac_time.c | |||
| @@ -195,7 +195,7 @@ via_calibrate_decr(void) | |||
| 195 | ; | 195 | ; |
| 196 | dend = get_dec(); | 196 | dend = get_dec(); |
| 197 | 197 | ||
| 198 | tb_ticks_per_jiffy = (dstart - dend) / (6 * (HZ/100)); | 198 | tb_ticks_per_jiffy = (dstart - dend) / ((6 * HZ)/100); |
| 199 | tb_to_us = mulhwu_scale_factor(dstart - dend, 60000); | 199 | tb_to_us = mulhwu_scale_factor(dstart - dend, 60000); |
| 200 | 200 | ||
| 201 | printk(KERN_INFO "via_calibrate_decr: ticks per jiffy = %u (%u ticks)\n", | 201 | printk(KERN_INFO "via_calibrate_decr: ticks per jiffy = %u (%u ticks)\n", |
diff --git a/arch/ppc64/configs/bpa_defconfig b/arch/ppc64/configs/bpa_defconfig index 46c5da41c3ae..67ffecbc05cb 100644 --- a/arch/ppc64/configs/bpa_defconfig +++ b/arch/ppc64/configs/bpa_defconfig | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.13-rc6 | 3 | # Linux kernel version: 2.6.14-rc4 |
| 4 | # Mon Aug 8 14:12:19 2005 | 4 | # Thu Oct 20 08:29:10 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 10 | CONFIG_GENERIC_ISA_DMA=y | 10 | CONFIG_GENERIC_ISA_DMA=y |
| 11 | CONFIG_HAVE_DEC_LOCK=y | ||
| 12 | CONFIG_EARLY_PRINTK=y | 11 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 12 | CONFIG_COMPAT=y |
| 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 26 | # General setup | 26 | # General setup |
| 27 | # | 27 | # |
| 28 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 29 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 30 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 31 | # CONFIG_POSIX_MQUEUE is not set | 32 | # CONFIG_POSIX_MQUEUE is not set |
| @@ -36,6 +37,7 @@ CONFIG_HOTPLUG=y | |||
| 36 | CONFIG_KOBJECT_UEVENT=y | 37 | CONFIG_KOBJECT_UEVENT=y |
| 37 | # CONFIG_IKCONFIG is not set | 38 | # CONFIG_IKCONFIG is not set |
| 38 | # CONFIG_CPUSETS is not set | 39 | # CONFIG_CPUSETS is not set |
| 40 | CONFIG_INITRAMFS_SOURCE="" | ||
| 39 | # CONFIG_EMBEDDED is not set | 41 | # CONFIG_EMBEDDED is not set |
| 40 | CONFIG_KALLSYMS=y | 42 | CONFIG_KALLSYMS=y |
| 41 | # CONFIG_KALLSYMS_ALL is not set | 43 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -95,6 +97,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 95 | # CONFIG_SPARSEMEM_MANUAL is not set | 97 | # CONFIG_SPARSEMEM_MANUAL is not set |
| 96 | CONFIG_FLATMEM=y | 98 | CONFIG_FLATMEM=y |
| 97 | CONFIG_FLAT_NODE_MEM_MAP=y | 99 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 100 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 98 | # CONFIG_NUMA is not set | 101 | # CONFIG_NUMA is not set |
| 99 | CONFIG_SCHED_SMT=y | 102 | CONFIG_SCHED_SMT=y |
| 100 | CONFIG_PREEMPT_NONE=y | 103 | CONFIG_PREEMPT_NONE=y |
| @@ -110,17 +113,18 @@ CONFIG_PPC_RTAS=y | |||
| 110 | CONFIG_RTAS_PROC=y | 113 | CONFIG_RTAS_PROC=y |
| 111 | CONFIG_RTAS_FLASH=y | 114 | CONFIG_RTAS_FLASH=y |
| 112 | CONFIG_SECCOMP=y | 115 | CONFIG_SECCOMP=y |
| 116 | CONFIG_BINFMT_ELF=y | ||
| 117 | # CONFIG_BINFMT_MISC is not set | ||
| 118 | CONFIG_PROC_DEVICETREE=y | ||
| 119 | # CONFIG_CMDLINE_BOOL is not set | ||
| 113 | CONFIG_ISA_DMA_API=y | 120 | CONFIG_ISA_DMA_API=y |
| 114 | 121 | ||
| 115 | # | 122 | # |
| 116 | # General setup | 123 | # Bus Options |
| 117 | # | 124 | # |
| 118 | CONFIG_PCI=y | 125 | CONFIG_PCI=y |
| 119 | CONFIG_PCI_DOMAINS=y | 126 | CONFIG_PCI_DOMAINS=y |
| 120 | CONFIG_BINFMT_ELF=y | ||
| 121 | # CONFIG_BINFMT_MISC is not set | ||
| 122 | CONFIG_PCI_LEGACY_PROC=y | 127 | CONFIG_PCI_LEGACY_PROC=y |
| 123 | CONFIG_PCI_NAMES=y | ||
| 124 | # CONFIG_PCI_DEBUG is not set | 128 | # CONFIG_PCI_DEBUG is not set |
| 125 | 129 | ||
| 126 | # | 130 | # |
| @@ -132,8 +136,6 @@ CONFIG_PCI_NAMES=y | |||
| 132 | # PCI Hotplug Support | 136 | # PCI Hotplug Support |
| 133 | # | 137 | # |
| 134 | # CONFIG_HOTPLUG_PCI is not set | 138 | # CONFIG_HOTPLUG_PCI is not set |
| 135 | CONFIG_PROC_DEVICETREE=y | ||
| 136 | # CONFIG_CMDLINE_BOOL is not set | ||
| 137 | 139 | ||
| 138 | # | 140 | # |
| 139 | # Networking | 141 | # Networking |
| @@ -163,8 +165,8 @@ CONFIG_SYN_COOKIES=y | |||
| 163 | # CONFIG_INET_ESP is not set | 165 | # CONFIG_INET_ESP is not set |
| 164 | # CONFIG_INET_IPCOMP is not set | 166 | # CONFIG_INET_IPCOMP is not set |
| 165 | CONFIG_INET_TUNNEL=y | 167 | CONFIG_INET_TUNNEL=y |
| 166 | CONFIG_IP_TCPDIAG=y | 168 | CONFIG_INET_DIAG=y |
| 167 | CONFIG_IP_TCPDIAG_IPV6=y | 169 | CONFIG_INET_TCP_DIAG=y |
| 168 | # CONFIG_TCP_CONG_ADVANCED is not set | 170 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 169 | CONFIG_TCP_CONG_BIC=y | 171 | CONFIG_TCP_CONG_BIC=y |
| 170 | 172 | ||
| @@ -181,6 +183,7 @@ CONFIG_INET6_TUNNEL=m | |||
| 181 | CONFIG_IPV6_TUNNEL=m | 183 | CONFIG_IPV6_TUNNEL=m |
| 182 | CONFIG_NETFILTER=y | 184 | CONFIG_NETFILTER=y |
| 183 | # CONFIG_NETFILTER_DEBUG is not set | 185 | # CONFIG_NETFILTER_DEBUG is not set |
| 186 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 184 | 187 | ||
| 185 | # | 188 | # |
| 186 | # IP: Netfilter Configuration | 189 | # IP: Netfilter Configuration |
| @@ -188,11 +191,14 @@ CONFIG_NETFILTER=y | |||
| 188 | CONFIG_IP_NF_CONNTRACK=y | 191 | CONFIG_IP_NF_CONNTRACK=y |
| 189 | # CONFIG_IP_NF_CT_ACCT is not set | 192 | # CONFIG_IP_NF_CT_ACCT is not set |
| 190 | # CONFIG_IP_NF_CONNTRACK_MARK is not set | 193 | # CONFIG_IP_NF_CONNTRACK_MARK is not set |
| 194 | # CONFIG_IP_NF_CONNTRACK_EVENTS is not set | ||
| 191 | CONFIG_IP_NF_CT_PROTO_SCTP=y | 195 | CONFIG_IP_NF_CT_PROTO_SCTP=y |
| 192 | CONFIG_IP_NF_FTP=m | 196 | CONFIG_IP_NF_FTP=m |
| 193 | CONFIG_IP_NF_IRC=m | 197 | CONFIG_IP_NF_IRC=m |
| 198 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 194 | CONFIG_IP_NF_TFTP=m | 199 | CONFIG_IP_NF_TFTP=m |
| 195 | CONFIG_IP_NF_AMANDA=m | 200 | CONFIG_IP_NF_AMANDA=m |
| 201 | # CONFIG_IP_NF_PPTP is not set | ||
| 196 | CONFIG_IP_NF_QUEUE=m | 202 | CONFIG_IP_NF_QUEUE=m |
| 197 | CONFIG_IP_NF_IPTABLES=m | 203 | CONFIG_IP_NF_IPTABLES=m |
| 198 | CONFIG_IP_NF_MATCH_LIMIT=m | 204 | CONFIG_IP_NF_MATCH_LIMIT=m |
| @@ -216,13 +222,16 @@ CONFIG_IP_NF_MATCH_OWNER=m | |||
| 216 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 222 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
| 217 | CONFIG_IP_NF_MATCH_REALM=m | 223 | CONFIG_IP_NF_MATCH_REALM=m |
| 218 | CONFIG_IP_NF_MATCH_SCTP=m | 224 | CONFIG_IP_NF_MATCH_SCTP=m |
| 225 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 219 | CONFIG_IP_NF_MATCH_COMMENT=m | 226 | CONFIG_IP_NF_MATCH_COMMENT=m |
| 220 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | 227 | CONFIG_IP_NF_MATCH_HASHLIMIT=m |
| 228 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 221 | CONFIG_IP_NF_FILTER=m | 229 | CONFIG_IP_NF_FILTER=m |
| 222 | CONFIG_IP_NF_TARGET_REJECT=m | 230 | CONFIG_IP_NF_TARGET_REJECT=m |
| 223 | CONFIG_IP_NF_TARGET_LOG=m | 231 | CONFIG_IP_NF_TARGET_LOG=m |
| 224 | CONFIG_IP_NF_TARGET_ULOG=m | 232 | CONFIG_IP_NF_TARGET_ULOG=m |
| 225 | CONFIG_IP_NF_TARGET_TCPMSS=m | 233 | CONFIG_IP_NF_TARGET_TCPMSS=m |
| 234 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 226 | CONFIG_IP_NF_NAT=m | 235 | CONFIG_IP_NF_NAT=m |
| 227 | CONFIG_IP_NF_NAT_NEEDED=y | 236 | CONFIG_IP_NF_NAT_NEEDED=y |
| 228 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 237 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
| @@ -240,6 +249,7 @@ CONFIG_IP_NF_TARGET_ECN=m | |||
| 240 | CONFIG_IP_NF_TARGET_DSCP=m | 249 | CONFIG_IP_NF_TARGET_DSCP=m |
| 241 | CONFIG_IP_NF_TARGET_MARK=m | 250 | CONFIG_IP_NF_TARGET_MARK=m |
| 242 | CONFIG_IP_NF_TARGET_CLASSIFY=m | 251 | CONFIG_IP_NF_TARGET_CLASSIFY=m |
| 252 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 243 | CONFIG_IP_NF_RAW=m | 253 | CONFIG_IP_NF_RAW=m |
| 244 | CONFIG_IP_NF_TARGET_NOTRACK=m | 254 | CONFIG_IP_NF_TARGET_NOTRACK=m |
| 245 | CONFIG_IP_NF_ARPTABLES=m | 255 | CONFIG_IP_NF_ARPTABLES=m |
| @@ -251,6 +261,12 @@ CONFIG_IP_NF_ARP_MANGLE=m | |||
| 251 | # | 261 | # |
| 252 | # CONFIG_IP6_NF_QUEUE is not set | 262 | # CONFIG_IP6_NF_QUEUE is not set |
| 253 | # CONFIG_IP6_NF_IPTABLES is not set | 263 | # CONFIG_IP6_NF_IPTABLES is not set |
| 264 | # CONFIG_IP6_NF_TARGET_NFQUEUE is not set | ||
| 265 | |||
| 266 | # | ||
| 267 | # DCCP Configuration (EXPERIMENTAL) | ||
| 268 | # | ||
| 269 | # CONFIG_IP_DCCP is not set | ||
| 254 | 270 | ||
| 255 | # | 271 | # |
| 256 | # SCTP Configuration (EXPERIMENTAL) | 272 | # SCTP Configuration (EXPERIMENTAL) |
| @@ -278,6 +294,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
| 278 | # CONFIG_HAMRADIO is not set | 294 | # CONFIG_HAMRADIO is not set |
| 279 | # CONFIG_IRDA is not set | 295 | # CONFIG_IRDA is not set |
| 280 | # CONFIG_BT is not set | 296 | # CONFIG_BT is not set |
| 297 | # CONFIG_IEEE80211 is not set | ||
| 281 | 298 | ||
| 282 | # | 299 | # |
| 283 | # Device Drivers | 300 | # Device Drivers |
| @@ -292,6 +309,11 @@ CONFIG_FW_LOADER=y | |||
| 292 | # CONFIG_DEBUG_DRIVER is not set | 309 | # CONFIG_DEBUG_DRIVER is not set |
| 293 | 310 | ||
| 294 | # | 311 | # |
| 312 | # Connector - unified userspace <-> kernelspace linker | ||
| 313 | # | ||
| 314 | # CONFIG_CONNECTOR is not set | ||
| 315 | |||
| 316 | # | ||
| 295 | # Memory Technology Devices (MTD) | 317 | # Memory Technology Devices (MTD) |
| 296 | # | 318 | # |
| 297 | # CONFIG_MTD is not set | 319 | # CONFIG_MTD is not set |
| @@ -322,7 +344,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 322 | CONFIG_BLK_DEV_RAM_COUNT=16 | 344 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 323 | CONFIG_BLK_DEV_RAM_SIZE=131072 | 345 | CONFIG_BLK_DEV_RAM_SIZE=131072 |
| 324 | CONFIG_BLK_DEV_INITRD=y | 346 | CONFIG_BLK_DEV_INITRD=y |
| 325 | CONFIG_INITRAMFS_SOURCE="" | ||
| 326 | # CONFIG_CDROM_PKTCDVD is not set | 347 | # CONFIG_CDROM_PKTCDVD is not set |
| 327 | 348 | ||
| 328 | # | 349 | # |
| @@ -395,6 +416,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 395 | # | 416 | # |
| 396 | # SCSI device support | 417 | # SCSI device support |
| 397 | # | 418 | # |
| 419 | # CONFIG_RAID_ATTRS is not set | ||
| 398 | # CONFIG_SCSI is not set | 420 | # CONFIG_SCSI is not set |
| 399 | 421 | ||
| 400 | # | 422 | # |
| @@ -436,12 +458,18 @@ CONFIG_NETDEVICES=y | |||
| 436 | # CONFIG_ARCNET is not set | 458 | # CONFIG_ARCNET is not set |
| 437 | 459 | ||
| 438 | # | 460 | # |
| 461 | # PHY device support | ||
| 462 | # | ||
| 463 | # CONFIG_PHYLIB is not set | ||
| 464 | |||
| 465 | # | ||
| 439 | # Ethernet (10 or 100Mbit) | 466 | # Ethernet (10 or 100Mbit) |
| 440 | # | 467 | # |
| 441 | CONFIG_NET_ETHERNET=y | 468 | CONFIG_NET_ETHERNET=y |
| 442 | CONFIG_MII=y | 469 | CONFIG_MII=y |
| 443 | # CONFIG_HAPPYMEAL is not set | 470 | # CONFIG_HAPPYMEAL is not set |
| 444 | # CONFIG_SUNGEM is not set | 471 | # CONFIG_SUNGEM is not set |
| 472 | # CONFIG_CASSINI is not set | ||
| 445 | # CONFIG_NET_VENDOR_3COM is not set | 473 | # CONFIG_NET_VENDOR_3COM is not set |
| 446 | 474 | ||
| 447 | # | 475 | # |
| @@ -462,15 +490,18 @@ CONFIG_E1000=m | |||
| 462 | # CONFIG_HAMACHI is not set | 490 | # CONFIG_HAMACHI is not set |
| 463 | # CONFIG_YELLOWFIN is not set | 491 | # CONFIG_YELLOWFIN is not set |
| 464 | # CONFIG_R8169 is not set | 492 | # CONFIG_R8169 is not set |
| 493 | # CONFIG_SIS190 is not set | ||
| 465 | CONFIG_SKGE=m | 494 | CONFIG_SKGE=m |
| 466 | # CONFIG_SK98LIN is not set | 495 | # CONFIG_SK98LIN is not set |
| 467 | # CONFIG_TIGON3 is not set | 496 | # CONFIG_TIGON3 is not set |
| 468 | # CONFIG_BNX2 is not set | 497 | # CONFIG_BNX2 is not set |
| 498 | # CONFIG_SPIDER_NET is not set | ||
| 469 | # CONFIG_MV643XX_ETH is not set | 499 | # CONFIG_MV643XX_ETH is not set |
| 470 | 500 | ||
| 471 | # | 501 | # |
| 472 | # Ethernet (10000 Mbit) | 502 | # Ethernet (10000 Mbit) |
| 473 | # | 503 | # |
| 504 | # CONFIG_CHELSIO_T1 is not set | ||
| 474 | # CONFIG_IXGB is not set | 505 | # CONFIG_IXGB is not set |
| 475 | # CONFIG_S2IO is not set | 506 | # CONFIG_S2IO is not set |
| 476 | 507 | ||
| @@ -552,6 +583,7 @@ CONFIG_HW_CONSOLE=y | |||
| 552 | CONFIG_SERIAL_NONSTANDARD=y | 583 | CONFIG_SERIAL_NONSTANDARD=y |
| 553 | # CONFIG_ROCKETPORT is not set | 584 | # CONFIG_ROCKETPORT is not set |
| 554 | # CONFIG_CYCLADES is not set | 585 | # CONFIG_CYCLADES is not set |
| 586 | # CONFIG_DIGIEPCA is not set | ||
| 555 | # CONFIG_MOXA_SMARTIO is not set | 587 | # CONFIG_MOXA_SMARTIO is not set |
| 556 | # CONFIG_ISI is not set | 588 | # CONFIG_ISI is not set |
| 557 | # CONFIG_SYNCLINK is not set | 589 | # CONFIG_SYNCLINK is not set |
| @@ -642,7 +674,6 @@ CONFIG_I2C_ALGOBIT=y | |||
| 642 | # CONFIG_I2C_I801 is not set | 674 | # CONFIG_I2C_I801 is not set |
| 643 | # CONFIG_I2C_I810 is not set | 675 | # CONFIG_I2C_I810 is not set |
| 644 | # CONFIG_I2C_PIIX4 is not set | 676 | # CONFIG_I2C_PIIX4 is not set |
| 645 | # CONFIG_I2C_ISA is not set | ||
| 646 | # CONFIG_I2C_NFORCE2 is not set | 677 | # CONFIG_I2C_NFORCE2 is not set |
| 647 | # CONFIG_I2C_PARPORT_LIGHT is not set | 678 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 648 | # CONFIG_I2C_PROSAVAGE is not set | 679 | # CONFIG_I2C_PROSAVAGE is not set |
| @@ -656,7 +687,6 @@ CONFIG_I2C_ALGOBIT=y | |||
| 656 | # CONFIG_I2C_VIAPRO is not set | 687 | # CONFIG_I2C_VIAPRO is not set |
| 657 | # CONFIG_I2C_VOODOO3 is not set | 688 | # CONFIG_I2C_VOODOO3 is not set |
| 658 | # CONFIG_I2C_PCA_ISA is not set | 689 | # CONFIG_I2C_PCA_ISA is not set |
| 659 | # CONFIG_I2C_SENSOR is not set | ||
| 660 | 690 | ||
| 661 | # | 691 | # |
| 662 | # Miscellaneous I2C Chip support | 692 | # Miscellaneous I2C Chip support |
| @@ -683,12 +713,17 @@ CONFIG_I2C_ALGOBIT=y | |||
| 683 | # Hardware Monitoring support | 713 | # Hardware Monitoring support |
| 684 | # | 714 | # |
| 685 | # CONFIG_HWMON is not set | 715 | # CONFIG_HWMON is not set |
| 716 | # CONFIG_HWMON_VID is not set | ||
| 686 | 717 | ||
| 687 | # | 718 | # |
| 688 | # Misc devices | 719 | # Misc devices |
| 689 | # | 720 | # |
| 690 | 721 | ||
| 691 | # | 722 | # |
| 723 | # Multimedia Capabilities Port drivers | ||
| 724 | # | ||
| 725 | |||
| 726 | # | ||
| 692 | # Multimedia devices | 727 | # Multimedia devices |
| 693 | # | 728 | # |
| 694 | # CONFIG_VIDEO_DEV is not set | 729 | # CONFIG_VIDEO_DEV is not set |
| @@ -756,10 +791,6 @@ CONFIG_FS_MBCACHE=y | |||
| 756 | # CONFIG_REISERFS_FS is not set | 791 | # CONFIG_REISERFS_FS is not set |
| 757 | # CONFIG_JFS_FS is not set | 792 | # CONFIG_JFS_FS is not set |
| 758 | CONFIG_FS_POSIX_ACL=y | 793 | CONFIG_FS_POSIX_ACL=y |
| 759 | |||
| 760 | # | ||
| 761 | # XFS support | ||
| 762 | # | ||
| 763 | # CONFIG_XFS_FS is not set | 794 | # CONFIG_XFS_FS is not set |
| 764 | # CONFIG_MINIX_FS is not set | 795 | # CONFIG_MINIX_FS is not set |
| 765 | # CONFIG_ROMFS_FS is not set | 796 | # CONFIG_ROMFS_FS is not set |
| @@ -768,6 +799,7 @@ CONFIG_INOTIFY=y | |||
| 768 | CONFIG_DNOTIFY=y | 799 | CONFIG_DNOTIFY=y |
| 769 | # CONFIG_AUTOFS_FS is not set | 800 | # CONFIG_AUTOFS_FS is not set |
| 770 | # CONFIG_AUTOFS4_FS is not set | 801 | # CONFIG_AUTOFS4_FS is not set |
| 802 | # CONFIG_FUSE_FS is not set | ||
| 771 | 803 | ||
| 772 | # | 804 | # |
| 773 | # CD-ROM/DVD Filesystems | 805 | # CD-ROM/DVD Filesystems |
| @@ -794,13 +826,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 794 | CONFIG_PROC_FS=y | 826 | CONFIG_PROC_FS=y |
| 795 | CONFIG_PROC_KCORE=y | 827 | CONFIG_PROC_KCORE=y |
| 796 | CONFIG_SYSFS=y | 828 | CONFIG_SYSFS=y |
| 797 | # CONFIG_DEVPTS_FS_XATTR is not set | ||
| 798 | CONFIG_TMPFS=y | 829 | CONFIG_TMPFS=y |
| 799 | CONFIG_TMPFS_XATTR=y | ||
| 800 | # CONFIG_TMPFS_SECURITY is not set | ||
| 801 | CONFIG_HUGETLBFS=y | 830 | CONFIG_HUGETLBFS=y |
| 802 | CONFIG_HUGETLB_PAGE=y | 831 | CONFIG_HUGETLB_PAGE=y |
| 803 | CONFIG_RAMFS=y | 832 | CONFIG_RAMFS=y |
| 833 | # CONFIG_RELAYFS_FS is not set | ||
| 804 | 834 | ||
| 805 | # | 835 | # |
| 806 | # Miscellaneous filesystems | 836 | # Miscellaneous filesystems |
| @@ -846,6 +876,7 @@ CONFIG_SUNRPC=m | |||
| 846 | # CONFIG_NCP_FS is not set | 876 | # CONFIG_NCP_FS is not set |
| 847 | # CONFIG_CODA_FS is not set | 877 | # CONFIG_CODA_FS is not set |
| 848 | # CONFIG_AFS_FS is not set | 878 | # CONFIG_AFS_FS is not set |
| 879 | # CONFIG_9P_FS is not set | ||
| 849 | 880 | ||
| 850 | # | 881 | # |
| 851 | # Partition Types | 882 | # Partition Types |
| @@ -923,6 +954,7 @@ CONFIG_NLS_ISO8859_15=m | |||
| 923 | CONFIG_DEBUG_KERNEL=y | 954 | CONFIG_DEBUG_KERNEL=y |
| 924 | CONFIG_MAGIC_SYSRQ=y | 955 | CONFIG_MAGIC_SYSRQ=y |
| 925 | CONFIG_LOG_BUF_SHIFT=15 | 956 | CONFIG_LOG_BUF_SHIFT=15 |
| 957 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 926 | # CONFIG_SCHEDSTATS is not set | 958 | # CONFIG_SCHEDSTATS is not set |
| 927 | # CONFIG_DEBUG_SLAB is not set | 959 | # CONFIG_DEBUG_SLAB is not set |
| 928 | # CONFIG_DEBUG_SPINLOCK is not set | 960 | # CONFIG_DEBUG_SPINLOCK is not set |
| @@ -981,7 +1013,12 @@ CONFIG_CRYPTO_DEFLATE=m | |||
| 981 | # Library routines | 1013 | # Library routines |
| 982 | # | 1014 | # |
| 983 | # CONFIG_CRC_CCITT is not set | 1015 | # CONFIG_CRC_CCITT is not set |
| 1016 | # CONFIG_CRC16 is not set | ||
| 984 | CONFIG_CRC32=y | 1017 | CONFIG_CRC32=y |
| 985 | # CONFIG_LIBCRC32C is not set | 1018 | # CONFIG_LIBCRC32C is not set |
| 986 | CONFIG_ZLIB_INFLATE=m | 1019 | CONFIG_ZLIB_INFLATE=m |
| 987 | CONFIG_ZLIB_DEFLATE=m | 1020 | CONFIG_ZLIB_DEFLATE=m |
| 1021 | CONFIG_TEXTSEARCH=y | ||
| 1022 | CONFIG_TEXTSEARCH_KMP=m | ||
| 1023 | CONFIG_TEXTSEARCH_BM=m | ||
| 1024 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/ppc64/configs/g5_defconfig b/arch/ppc64/configs/g5_defconfig index fc83d9330282..6323065fbf2c 100644 --- a/arch/ppc64/configs/g5_defconfig +++ b/arch/ppc64/configs/g5_defconfig | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.13-rc6 | 3 | # Linux kernel version: 2.6.14-rc4 |
| 4 | # Mon Aug 8 14:16:59 2005 | 4 | # Thu Oct 20 08:30:23 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 10 | CONFIG_GENERIC_ISA_DMA=y | 10 | CONFIG_GENERIC_ISA_DMA=y |
| 11 | CONFIG_HAVE_DEC_LOCK=y | ||
| 12 | CONFIG_EARLY_PRINTK=y | 11 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 12 | CONFIG_COMPAT=y |
| 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 26 | # General setup | 26 | # General setup |
| 27 | # | 27 | # |
| 28 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 29 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 30 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 31 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
| @@ -37,6 +38,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 37 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 38 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 39 | # CONFIG_CPUSETS is not set | 40 | # CONFIG_CPUSETS is not set |
| 41 | CONFIG_INITRAMFS_SOURCE="" | ||
| 40 | # CONFIG_EMBEDDED is not set | 42 | # CONFIG_EMBEDDED is not set |
| 41 | CONFIG_KALLSYMS=y | 43 | CONFIG_KALLSYMS=y |
| 42 | # CONFIG_KALLSYMS_ALL is not set | 44 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -97,6 +99,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 97 | # CONFIG_SPARSEMEM_MANUAL is not set | 99 | # CONFIG_SPARSEMEM_MANUAL is not set |
| 98 | CONFIG_FLATMEM=y | 100 | CONFIG_FLATMEM=y |
| 99 | CONFIG_FLAT_NODE_MEM_MAP=y | 101 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 102 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 100 | # CONFIG_NUMA is not set | 103 | # CONFIG_NUMA is not set |
| 101 | # CONFIG_SCHED_SMT is not set | 104 | # CONFIG_SCHED_SMT is not set |
| 102 | CONFIG_PREEMPT_NONE=y | 105 | CONFIG_PREEMPT_NONE=y |
| @@ -109,19 +112,20 @@ CONFIG_HZ_250=y | |||
| 109 | CONFIG_HZ=250 | 112 | CONFIG_HZ=250 |
| 110 | CONFIG_GENERIC_HARDIRQS=y | 113 | CONFIG_GENERIC_HARDIRQS=y |
| 111 | CONFIG_SECCOMP=y | 114 | CONFIG_SECCOMP=y |
| 115 | CONFIG_BINFMT_ELF=y | ||
| 116 | # CONFIG_BINFMT_MISC is not set | ||
| 117 | # CONFIG_HOTPLUG_CPU is not set | ||
| 118 | CONFIG_PROC_DEVICETREE=y | ||
| 119 | # CONFIG_CMDLINE_BOOL is not set | ||
| 112 | CONFIG_ISA_DMA_API=y | 120 | CONFIG_ISA_DMA_API=y |
| 113 | 121 | ||
| 114 | # | 122 | # |
| 115 | # General setup | 123 | # Bus Options |
| 116 | # | 124 | # |
| 117 | CONFIG_PCI=y | 125 | CONFIG_PCI=y |
| 118 | CONFIG_PCI_DOMAINS=y | 126 | CONFIG_PCI_DOMAINS=y |
| 119 | CONFIG_BINFMT_ELF=y | ||
| 120 | # CONFIG_BINFMT_MISC is not set | ||
| 121 | CONFIG_PCI_LEGACY_PROC=y | 127 | CONFIG_PCI_LEGACY_PROC=y |
| 122 | CONFIG_PCI_NAMES=y | ||
| 123 | # CONFIG_PCI_DEBUG is not set | 128 | # CONFIG_PCI_DEBUG is not set |
| 124 | # CONFIG_HOTPLUG_CPU is not set | ||
| 125 | 129 | ||
| 126 | # | 130 | # |
| 127 | # PCCARD (PCMCIA/CardBus) support | 131 | # PCCARD (PCMCIA/CardBus) support |
| @@ -132,8 +136,6 @@ CONFIG_PCI_NAMES=y | |||
| 132 | # PCI Hotplug Support | 136 | # PCI Hotplug Support |
| 133 | # | 137 | # |
| 134 | # CONFIG_HOTPLUG_PCI is not set | 138 | # CONFIG_HOTPLUG_PCI is not set |
| 135 | CONFIG_PROC_DEVICETREE=y | ||
| 136 | # CONFIG_CMDLINE_BOOL is not set | ||
| 137 | 139 | ||
| 138 | # | 140 | # |
| 139 | # Networking | 141 | # Networking |
| @@ -163,8 +165,8 @@ CONFIG_INET_AH=m | |||
| 163 | CONFIG_INET_ESP=m | 165 | CONFIG_INET_ESP=m |
| 164 | CONFIG_INET_IPCOMP=m | 166 | CONFIG_INET_IPCOMP=m |
| 165 | CONFIG_INET_TUNNEL=y | 167 | CONFIG_INET_TUNNEL=y |
| 166 | CONFIG_IP_TCPDIAG=m | 168 | CONFIG_INET_DIAG=y |
| 167 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 169 | CONFIG_INET_TCP_DIAG=y |
| 168 | # CONFIG_TCP_CONG_ADVANCED is not set | 170 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 169 | CONFIG_TCP_CONG_BIC=y | 171 | CONFIG_TCP_CONG_BIC=y |
| 170 | 172 | ||
| @@ -175,6 +177,7 @@ CONFIG_TCP_CONG_BIC=y | |||
| 175 | # CONFIG_IPV6 is not set | 177 | # CONFIG_IPV6 is not set |
| 176 | CONFIG_NETFILTER=y | 178 | CONFIG_NETFILTER=y |
| 177 | # CONFIG_NETFILTER_DEBUG is not set | 179 | # CONFIG_NETFILTER_DEBUG is not set |
| 180 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 178 | 181 | ||
| 179 | # | 182 | # |
| 180 | # IP: Netfilter Configuration | 183 | # IP: Netfilter Configuration |
| @@ -182,11 +185,14 @@ CONFIG_NETFILTER=y | |||
| 182 | CONFIG_IP_NF_CONNTRACK=m | 185 | CONFIG_IP_NF_CONNTRACK=m |
| 183 | CONFIG_IP_NF_CT_ACCT=y | 186 | CONFIG_IP_NF_CT_ACCT=y |
| 184 | CONFIG_IP_NF_CONNTRACK_MARK=y | 187 | CONFIG_IP_NF_CONNTRACK_MARK=y |
| 188 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
| 185 | CONFIG_IP_NF_CT_PROTO_SCTP=m | 189 | CONFIG_IP_NF_CT_PROTO_SCTP=m |
| 186 | CONFIG_IP_NF_FTP=m | 190 | CONFIG_IP_NF_FTP=m |
| 187 | CONFIG_IP_NF_IRC=m | 191 | CONFIG_IP_NF_IRC=m |
| 192 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 188 | CONFIG_IP_NF_TFTP=m | 193 | CONFIG_IP_NF_TFTP=m |
| 189 | CONFIG_IP_NF_AMANDA=m | 194 | CONFIG_IP_NF_AMANDA=m |
| 195 | # CONFIG_IP_NF_PPTP is not set | ||
| 190 | CONFIG_IP_NF_QUEUE=m | 196 | CONFIG_IP_NF_QUEUE=m |
| 191 | CONFIG_IP_NF_IPTABLES=m | 197 | CONFIG_IP_NF_IPTABLES=m |
| 192 | CONFIG_IP_NF_MATCH_LIMIT=m | 198 | CONFIG_IP_NF_MATCH_LIMIT=m |
| @@ -210,14 +216,18 @@ CONFIG_IP_NF_MATCH_OWNER=m | |||
| 210 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 216 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
| 211 | CONFIG_IP_NF_MATCH_REALM=m | 217 | CONFIG_IP_NF_MATCH_REALM=m |
| 212 | CONFIG_IP_NF_MATCH_SCTP=m | 218 | CONFIG_IP_NF_MATCH_SCTP=m |
| 219 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 213 | CONFIG_IP_NF_MATCH_COMMENT=m | 220 | CONFIG_IP_NF_MATCH_COMMENT=m |
| 214 | CONFIG_IP_NF_MATCH_CONNMARK=m | 221 | CONFIG_IP_NF_MATCH_CONNMARK=m |
| 222 | CONFIG_IP_NF_MATCH_CONNBYTES=m | ||
| 215 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | 223 | CONFIG_IP_NF_MATCH_HASHLIMIT=m |
| 224 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 216 | CONFIG_IP_NF_FILTER=m | 225 | CONFIG_IP_NF_FILTER=m |
| 217 | CONFIG_IP_NF_TARGET_REJECT=m | 226 | CONFIG_IP_NF_TARGET_REJECT=m |
| 218 | CONFIG_IP_NF_TARGET_LOG=m | 227 | CONFIG_IP_NF_TARGET_LOG=m |
| 219 | CONFIG_IP_NF_TARGET_ULOG=m | 228 | CONFIG_IP_NF_TARGET_ULOG=m |
| 220 | CONFIG_IP_NF_TARGET_TCPMSS=m | 229 | CONFIG_IP_NF_TARGET_TCPMSS=m |
| 230 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 221 | CONFIG_IP_NF_NAT=m | 231 | CONFIG_IP_NF_NAT=m |
| 222 | CONFIG_IP_NF_NAT_NEEDED=y | 232 | CONFIG_IP_NF_NAT_NEEDED=y |
| 223 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 233 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
| @@ -235,6 +245,7 @@ CONFIG_IP_NF_TARGET_ECN=m | |||
| 235 | CONFIG_IP_NF_TARGET_DSCP=m | 245 | CONFIG_IP_NF_TARGET_DSCP=m |
| 236 | CONFIG_IP_NF_TARGET_MARK=m | 246 | CONFIG_IP_NF_TARGET_MARK=m |
| 237 | CONFIG_IP_NF_TARGET_CLASSIFY=m | 247 | CONFIG_IP_NF_TARGET_CLASSIFY=m |
| 248 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 238 | CONFIG_IP_NF_TARGET_CONNMARK=m | 249 | CONFIG_IP_NF_TARGET_CONNMARK=m |
| 239 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 250 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
| 240 | CONFIG_IP_NF_RAW=m | 251 | CONFIG_IP_NF_RAW=m |
| @@ -244,6 +255,11 @@ CONFIG_IP_NF_ARPFILTER=m | |||
| 244 | CONFIG_IP_NF_ARP_MANGLE=m | 255 | CONFIG_IP_NF_ARP_MANGLE=m |
| 245 | 256 | ||
| 246 | # | 257 | # |
| 258 | # DCCP Configuration (EXPERIMENTAL) | ||
| 259 | # | ||
| 260 | # CONFIG_IP_DCCP is not set | ||
| 261 | |||
| 262 | # | ||
| 247 | # SCTP Configuration (EXPERIMENTAL) | 263 | # SCTP Configuration (EXPERIMENTAL) |
| 248 | # | 264 | # |
| 249 | # CONFIG_IP_SCTP is not set | 265 | # CONFIG_IP_SCTP is not set |
| @@ -270,6 +286,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
| 270 | # CONFIG_HAMRADIO is not set | 286 | # CONFIG_HAMRADIO is not set |
| 271 | # CONFIG_IRDA is not set | 287 | # CONFIG_IRDA is not set |
| 272 | # CONFIG_BT is not set | 288 | # CONFIG_BT is not set |
| 289 | # CONFIG_IEEE80211 is not set | ||
| 273 | 290 | ||
| 274 | # | 291 | # |
| 275 | # Device Drivers | 292 | # Device Drivers |
| @@ -284,6 +301,11 @@ CONFIG_FW_LOADER=y | |||
| 284 | # CONFIG_DEBUG_DRIVER is not set | 301 | # CONFIG_DEBUG_DRIVER is not set |
| 285 | 302 | ||
| 286 | # | 303 | # |
| 304 | # Connector - unified userspace <-> kernelspace linker | ||
| 305 | # | ||
| 306 | # CONFIG_CONNECTOR is not set | ||
| 307 | |||
| 308 | # | ||
| 287 | # Memory Technology Devices (MTD) | 309 | # Memory Technology Devices (MTD) |
| 288 | # | 310 | # |
| 289 | # CONFIG_MTD is not set | 311 | # CONFIG_MTD is not set |
| @@ -315,7 +337,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 315 | CONFIG_BLK_DEV_RAM_COUNT=16 | 337 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 316 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 338 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
| 317 | CONFIG_BLK_DEV_INITRD=y | 339 | CONFIG_BLK_DEV_INITRD=y |
| 318 | CONFIG_INITRAMFS_SOURCE="" | ||
| 319 | CONFIG_CDROM_PKTCDVD=m | 340 | CONFIG_CDROM_PKTCDVD=m |
| 320 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 | 341 | CONFIG_CDROM_PKTCDVD_BUFFERS=8 |
| 321 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set | 342 | # CONFIG_CDROM_PKTCDVD_WCACHE is not set |
| @@ -395,6 +416,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 395 | # | 416 | # |
| 396 | # SCSI device support | 417 | # SCSI device support |
| 397 | # | 418 | # |
| 419 | # CONFIG_RAID_ATTRS is not set | ||
| 398 | CONFIG_SCSI=y | 420 | CONFIG_SCSI=y |
| 399 | CONFIG_SCSI_PROC_FS=y | 421 | CONFIG_SCSI_PROC_FS=y |
| 400 | 422 | ||
| @@ -422,6 +444,7 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 422 | CONFIG_SCSI_SPI_ATTRS=y | 444 | CONFIG_SCSI_SPI_ATTRS=y |
| 423 | # CONFIG_SCSI_FC_ATTRS is not set | 445 | # CONFIG_SCSI_FC_ATTRS is not set |
| 424 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 446 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 447 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 425 | 448 | ||
| 426 | # | 449 | # |
| 427 | # SCSI low-level drivers | 450 | # SCSI low-level drivers |
| @@ -435,10 +458,12 @@ CONFIG_SCSI_SPI_ATTRS=y | |||
| 435 | # CONFIG_SCSI_AIC79XX is not set | 458 | # CONFIG_SCSI_AIC79XX is not set |
| 436 | # CONFIG_MEGARAID_NEWGEN is not set | 459 | # CONFIG_MEGARAID_NEWGEN is not set |
| 437 | # CONFIG_MEGARAID_LEGACY is not set | 460 | # CONFIG_MEGARAID_LEGACY is not set |
| 461 | # CONFIG_MEGARAID_SAS is not set | ||
| 438 | CONFIG_SCSI_SATA=y | 462 | CONFIG_SCSI_SATA=y |
| 439 | # CONFIG_SCSI_SATA_AHCI is not set | 463 | # CONFIG_SCSI_SATA_AHCI is not set |
| 440 | CONFIG_SCSI_SATA_SVW=y | 464 | CONFIG_SCSI_SATA_SVW=y |
| 441 | # CONFIG_SCSI_ATA_PIIX is not set | 465 | # CONFIG_SCSI_ATA_PIIX is not set |
| 466 | # CONFIG_SCSI_SATA_MV is not set | ||
| 442 | # CONFIG_SCSI_SATA_NV is not set | 467 | # CONFIG_SCSI_SATA_NV is not set |
| 443 | # CONFIG_SCSI_SATA_PROMISE is not set | 468 | # CONFIG_SCSI_SATA_PROMISE is not set |
| 444 | # CONFIG_SCSI_SATA_QSTOR is not set | 469 | # CONFIG_SCSI_SATA_QSTOR is not set |
| @@ -498,6 +523,7 @@ CONFIG_DM_ZERO=m | |||
| 498 | # CONFIG_FUSION is not set | 523 | # CONFIG_FUSION is not set |
| 499 | # CONFIG_FUSION_SPI is not set | 524 | # CONFIG_FUSION_SPI is not set |
| 500 | # CONFIG_FUSION_FC is not set | 525 | # CONFIG_FUSION_FC is not set |
| 526 | # CONFIG_FUSION_SAS is not set | ||
| 501 | 527 | ||
| 502 | # | 528 | # |
| 503 | # IEEE 1394 (FireWire) support | 529 | # IEEE 1394 (FireWire) support |
| @@ -540,7 +566,6 @@ CONFIG_IEEE1394_RAWIO=y | |||
| 540 | # | 566 | # |
| 541 | CONFIG_ADB_PMU=y | 567 | CONFIG_ADB_PMU=y |
| 542 | CONFIG_PMAC_SMU=y | 568 | CONFIG_PMAC_SMU=y |
| 543 | # CONFIG_PMAC_BACKLIGHT is not set | ||
| 544 | CONFIG_THERM_PM72=y | 569 | CONFIG_THERM_PM72=y |
| 545 | 570 | ||
| 546 | # | 571 | # |
| @@ -558,12 +583,18 @@ CONFIG_TUN=m | |||
| 558 | # CONFIG_ARCNET is not set | 583 | # CONFIG_ARCNET is not set |
| 559 | 584 | ||
| 560 | # | 585 | # |
| 586 | # PHY device support | ||
| 587 | # | ||
| 588 | # CONFIG_PHYLIB is not set | ||
| 589 | |||
| 590 | # | ||
| 561 | # Ethernet (10 or 100Mbit) | 591 | # Ethernet (10 or 100Mbit) |
| 562 | # | 592 | # |
| 563 | CONFIG_NET_ETHERNET=y | 593 | CONFIG_NET_ETHERNET=y |
| 564 | CONFIG_MII=y | 594 | CONFIG_MII=y |
| 565 | # CONFIG_HAPPYMEAL is not set | 595 | # CONFIG_HAPPYMEAL is not set |
| 566 | CONFIG_SUNGEM=y | 596 | CONFIG_SUNGEM=y |
| 597 | # CONFIG_CASSINI is not set | ||
| 567 | # CONFIG_NET_VENDOR_3COM is not set | 598 | # CONFIG_NET_VENDOR_3COM is not set |
| 568 | 599 | ||
| 569 | # | 600 | # |
| @@ -585,6 +616,7 @@ CONFIG_E1000=y | |||
| 585 | # CONFIG_HAMACHI is not set | 616 | # CONFIG_HAMACHI is not set |
| 586 | # CONFIG_YELLOWFIN is not set | 617 | # CONFIG_YELLOWFIN is not set |
| 587 | # CONFIG_R8169 is not set | 618 | # CONFIG_R8169 is not set |
| 619 | # CONFIG_SIS190 is not set | ||
| 588 | # CONFIG_SKGE is not set | 620 | # CONFIG_SKGE is not set |
| 589 | # CONFIG_SK98LIN is not set | 621 | # CONFIG_SK98LIN is not set |
| 590 | CONFIG_TIGON3=m | 622 | CONFIG_TIGON3=m |
| @@ -594,6 +626,7 @@ CONFIG_TIGON3=m | |||
| 594 | # | 626 | # |
| 595 | # Ethernet (10000 Mbit) | 627 | # Ethernet (10000 Mbit) |
| 596 | # | 628 | # |
| 629 | # CONFIG_CHELSIO_T1 is not set | ||
| 597 | # CONFIG_IXGB is not set | 630 | # CONFIG_IXGB is not set |
| 598 | # CONFIG_S2IO is not set | 631 | # CONFIG_S2IO is not set |
| 599 | 632 | ||
| @@ -760,8 +793,8 @@ CONFIG_I2C_ALGOBIT=y | |||
| 760 | # CONFIG_I2C_I801 is not set | 793 | # CONFIG_I2C_I801 is not set |
| 761 | # CONFIG_I2C_I810 is not set | 794 | # CONFIG_I2C_I810 is not set |
| 762 | # CONFIG_I2C_PIIX4 is not set | 795 | # CONFIG_I2C_PIIX4 is not set |
| 763 | # CONFIG_I2C_ISA is not set | ||
| 764 | CONFIG_I2C_KEYWEST=y | 796 | CONFIG_I2C_KEYWEST=y |
| 797 | CONFIG_I2C_PMAC_SMU=y | ||
| 765 | # CONFIG_I2C_NFORCE2 is not set | 798 | # CONFIG_I2C_NFORCE2 is not set |
| 766 | # CONFIG_I2C_PARPORT_LIGHT is not set | 799 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 767 | # CONFIG_I2C_PROSAVAGE is not set | 800 | # CONFIG_I2C_PROSAVAGE is not set |
| @@ -775,7 +808,6 @@ CONFIG_I2C_KEYWEST=y | |||
| 775 | # CONFIG_I2C_VIAPRO is not set | 808 | # CONFIG_I2C_VIAPRO is not set |
| 776 | # CONFIG_I2C_VOODOO3 is not set | 809 | # CONFIG_I2C_VOODOO3 is not set |
| 777 | # CONFIG_I2C_PCA_ISA is not set | 810 | # CONFIG_I2C_PCA_ISA is not set |
| 778 | # CONFIG_I2C_SENSOR is not set | ||
| 779 | 811 | ||
| 780 | # | 812 | # |
| 781 | # Miscellaneous I2C Chip support | 813 | # Miscellaneous I2C Chip support |
| @@ -802,12 +834,17 @@ CONFIG_I2C_KEYWEST=y | |||
| 802 | # Hardware Monitoring support | 834 | # Hardware Monitoring support |
| 803 | # | 835 | # |
| 804 | # CONFIG_HWMON is not set | 836 | # CONFIG_HWMON is not set |
| 837 | # CONFIG_HWMON_VID is not set | ||
| 805 | 838 | ||
| 806 | # | 839 | # |
| 807 | # Misc devices | 840 | # Misc devices |
| 808 | # | 841 | # |
| 809 | 842 | ||
| 810 | # | 843 | # |
| 844 | # Multimedia Capabilities Port drivers | ||
| 845 | # | ||
| 846 | |||
| 847 | # | ||
| 811 | # Multimedia devices | 848 | # Multimedia devices |
| 812 | # | 849 | # |
| 813 | # CONFIG_VIDEO_DEV is not set | 850 | # CONFIG_VIDEO_DEV is not set |
| @@ -856,6 +893,7 @@ CONFIG_FB_RADEON_I2C=y | |||
| 856 | # CONFIG_FB_KYRO is not set | 893 | # CONFIG_FB_KYRO is not set |
| 857 | # CONFIG_FB_3DFX is not set | 894 | # CONFIG_FB_3DFX is not set |
| 858 | # CONFIG_FB_VOODOO1 is not set | 895 | # CONFIG_FB_VOODOO1 is not set |
| 896 | # CONFIG_FB_CYBLA is not set | ||
| 859 | # CONFIG_FB_TRIDENT is not set | 897 | # CONFIG_FB_TRIDENT is not set |
| 860 | # CONFIG_FB_S1D13XXX is not set | 898 | # CONFIG_FB_S1D13XXX is not set |
| 861 | # CONFIG_FB_VIRTUAL is not set | 899 | # CONFIG_FB_VIRTUAL is not set |
| @@ -937,6 +975,7 @@ CONFIG_USB_STORAGE_DPCM=y | |||
| 937 | CONFIG_USB_STORAGE_SDDR09=y | 975 | CONFIG_USB_STORAGE_SDDR09=y |
| 938 | CONFIG_USB_STORAGE_SDDR55=y | 976 | CONFIG_USB_STORAGE_SDDR55=y |
| 939 | CONFIG_USB_STORAGE_JUMPSHOT=y | 977 | CONFIG_USB_STORAGE_JUMPSHOT=y |
| 978 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 940 | 979 | ||
| 941 | # | 980 | # |
| 942 | # USB Input Devices | 981 | # USB Input Devices |
| @@ -956,9 +995,11 @@ CONFIG_USB_HIDDEV=y | |||
| 956 | # CONFIG_USB_MTOUCH is not set | 995 | # CONFIG_USB_MTOUCH is not set |
| 957 | # CONFIG_USB_ITMTOUCH is not set | 996 | # CONFIG_USB_ITMTOUCH is not set |
| 958 | # CONFIG_USB_EGALAX is not set | 997 | # CONFIG_USB_EGALAX is not set |
| 998 | # CONFIG_USB_YEALINK is not set | ||
| 959 | # CONFIG_USB_XPAD is not set | 999 | # CONFIG_USB_XPAD is not set |
| 960 | # CONFIG_USB_ATI_REMOTE is not set | 1000 | # CONFIG_USB_ATI_REMOTE is not set |
| 961 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1001 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
| 1002 | # CONFIG_USB_APPLETOUCH is not set | ||
| 962 | 1003 | ||
| 963 | # | 1004 | # |
| 964 | # USB Imaging devices | 1005 | # USB Imaging devices |
| @@ -983,30 +1024,14 @@ CONFIG_USB_KAWETH=m | |||
| 983 | CONFIG_USB_PEGASUS=m | 1024 | CONFIG_USB_PEGASUS=m |
| 984 | CONFIG_USB_RTL8150=m | 1025 | CONFIG_USB_RTL8150=m |
| 985 | CONFIG_USB_USBNET=m | 1026 | CONFIG_USB_USBNET=m |
| 986 | 1027 | # CONFIG_USB_NET_AX8817X is not set | |
| 987 | # | 1028 | CONFIG_USB_NET_CDCETHER=m |
| 988 | # USB Host-to-Host Cables | 1029 | # CONFIG_USB_NET_GL620A is not set |
| 989 | # | 1030 | # CONFIG_USB_NET_NET1080 is not set |
| 990 | CONFIG_USB_ALI_M5632=y | 1031 | # CONFIG_USB_NET_PLUSB is not set |
| 991 | CONFIG_USB_AN2720=y | 1032 | # CONFIG_USB_NET_RNDIS_HOST is not set |
| 992 | CONFIG_USB_BELKIN=y | 1033 | # CONFIG_USB_NET_CDC_SUBSET is not set |
| 993 | CONFIG_USB_GENESYS=y | 1034 | # CONFIG_USB_NET_ZAURUS is not set |
| 994 | CONFIG_USB_NET1080=y | ||
| 995 | CONFIG_USB_PL2301=y | ||
| 996 | CONFIG_USB_KC2190=y | ||
| 997 | |||
| 998 | # | ||
| 999 | # Intelligent USB Devices/Gadgets | ||
| 1000 | # | ||
| 1001 | CONFIG_USB_ARMLINUX=y | ||
| 1002 | CONFIG_USB_EPSON2888=y | ||
| 1003 | CONFIG_USB_ZAURUS=y | ||
| 1004 | CONFIG_USB_CDCETHER=y | ||
| 1005 | |||
| 1006 | # | ||
| 1007 | # USB Network Adapters | ||
| 1008 | # | ||
| 1009 | CONFIG_USB_AX8817X=y | ||
| 1010 | CONFIG_USB_MON=y | 1035 | CONFIG_USB_MON=y |
| 1011 | 1036 | ||
| 1012 | # | 1037 | # |
| @@ -1124,16 +1149,12 @@ CONFIG_REISERFS_FS_POSIX_ACL=y | |||
| 1124 | CONFIG_REISERFS_FS_SECURITY=y | 1149 | CONFIG_REISERFS_FS_SECURITY=y |
| 1125 | # CONFIG_JFS_FS is not set | 1150 | # CONFIG_JFS_FS is not set |
| 1126 | CONFIG_FS_POSIX_ACL=y | 1151 | CONFIG_FS_POSIX_ACL=y |
| 1127 | |||
| 1128 | # | ||
| 1129 | # XFS support | ||
| 1130 | # | ||
| 1131 | CONFIG_XFS_FS=m | 1152 | CONFIG_XFS_FS=m |
| 1132 | CONFIG_XFS_EXPORT=y | 1153 | CONFIG_XFS_EXPORT=y |
| 1133 | # CONFIG_XFS_RT is not set | ||
| 1134 | # CONFIG_XFS_QUOTA is not set | 1154 | # CONFIG_XFS_QUOTA is not set |
| 1135 | CONFIG_XFS_SECURITY=y | 1155 | CONFIG_XFS_SECURITY=y |
| 1136 | CONFIG_XFS_POSIX_ACL=y | 1156 | CONFIG_XFS_POSIX_ACL=y |
| 1157 | # CONFIG_XFS_RT is not set | ||
| 1137 | # CONFIG_MINIX_FS is not set | 1158 | # CONFIG_MINIX_FS is not set |
| 1138 | # CONFIG_ROMFS_FS is not set | 1159 | # CONFIG_ROMFS_FS is not set |
| 1139 | CONFIG_INOTIFY=y | 1160 | CONFIG_INOTIFY=y |
| @@ -1141,6 +1162,7 @@ CONFIG_INOTIFY=y | |||
| 1141 | CONFIG_DNOTIFY=y | 1162 | CONFIG_DNOTIFY=y |
| 1142 | CONFIG_AUTOFS_FS=m | 1163 | CONFIG_AUTOFS_FS=m |
| 1143 | # CONFIG_AUTOFS4_FS is not set | 1164 | # CONFIG_AUTOFS4_FS is not set |
| 1165 | # CONFIG_FUSE_FS is not set | ||
| 1144 | 1166 | ||
| 1145 | # | 1167 | # |
| 1146 | # CD-ROM/DVD Filesystems | 1168 | # CD-ROM/DVD Filesystems |
| @@ -1168,14 +1190,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 1168 | CONFIG_PROC_FS=y | 1190 | CONFIG_PROC_FS=y |
| 1169 | CONFIG_PROC_KCORE=y | 1191 | CONFIG_PROC_KCORE=y |
| 1170 | CONFIG_SYSFS=y | 1192 | CONFIG_SYSFS=y |
| 1171 | CONFIG_DEVPTS_FS_XATTR=y | ||
| 1172 | # CONFIG_DEVPTS_FS_SECURITY is not set | ||
| 1173 | CONFIG_TMPFS=y | 1193 | CONFIG_TMPFS=y |
| 1174 | CONFIG_TMPFS_XATTR=y | ||
| 1175 | CONFIG_TMPFS_SECURITY=y | ||
| 1176 | CONFIG_HUGETLBFS=y | 1194 | CONFIG_HUGETLBFS=y |
| 1177 | CONFIG_HUGETLB_PAGE=y | 1195 | CONFIG_HUGETLB_PAGE=y |
| 1178 | CONFIG_RAMFS=y | 1196 | CONFIG_RAMFS=y |
| 1197 | # CONFIG_RELAYFS_FS is not set | ||
| 1179 | 1198 | ||
| 1180 | # | 1199 | # |
| 1181 | # Miscellaneous filesystems | 1200 | # Miscellaneous filesystems |
| @@ -1225,6 +1244,7 @@ CONFIG_CIFS=m | |||
| 1225 | # CONFIG_NCP_FS is not set | 1244 | # CONFIG_NCP_FS is not set |
| 1226 | # CONFIG_CODA_FS is not set | 1245 | # CONFIG_CODA_FS is not set |
| 1227 | # CONFIG_AFS_FS is not set | 1246 | # CONFIG_AFS_FS is not set |
| 1247 | # CONFIG_9P_FS is not set | ||
| 1228 | 1248 | ||
| 1229 | # | 1249 | # |
| 1230 | # Partition Types | 1250 | # Partition Types |
| @@ -1303,6 +1323,7 @@ CONFIG_OPROFILE=y | |||
| 1303 | CONFIG_DEBUG_KERNEL=y | 1323 | CONFIG_DEBUG_KERNEL=y |
| 1304 | CONFIG_MAGIC_SYSRQ=y | 1324 | CONFIG_MAGIC_SYSRQ=y |
| 1305 | CONFIG_LOG_BUF_SHIFT=17 | 1325 | CONFIG_LOG_BUF_SHIFT=17 |
| 1326 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1306 | # CONFIG_SCHEDSTATS is not set | 1327 | # CONFIG_SCHEDSTATS is not set |
| 1307 | # CONFIG_DEBUG_SLAB is not set | 1328 | # CONFIG_DEBUG_SLAB is not set |
| 1308 | # CONFIG_DEBUG_SPINLOCK is not set | 1329 | # CONFIG_DEBUG_SPINLOCK is not set |
| @@ -1360,7 +1381,12 @@ CONFIG_CRYPTO_TEST=m | |||
| 1360 | # Library routines | 1381 | # Library routines |
| 1361 | # | 1382 | # |
| 1362 | CONFIG_CRC_CCITT=m | 1383 | CONFIG_CRC_CCITT=m |
| 1384 | # CONFIG_CRC16 is not set | ||
| 1363 | CONFIG_CRC32=y | 1385 | CONFIG_CRC32=y |
| 1364 | CONFIG_LIBCRC32C=m | 1386 | CONFIG_LIBCRC32C=m |
| 1365 | CONFIG_ZLIB_INFLATE=y | 1387 | CONFIG_ZLIB_INFLATE=y |
| 1366 | CONFIG_ZLIB_DEFLATE=m | 1388 | CONFIG_ZLIB_DEFLATE=m |
| 1389 | CONFIG_TEXTSEARCH=y | ||
| 1390 | CONFIG_TEXTSEARCH_KMP=m | ||
| 1391 | CONFIG_TEXTSEARCH_BM=m | ||
| 1392 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/ppc64/configs/iSeries_defconfig b/arch/ppc64/configs/iSeries_defconfig index 013d4e0e4003..62e92c7e9e27 100644 --- a/arch/ppc64/configs/iSeries_defconfig +++ b/arch/ppc64/configs/iSeries_defconfig | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.13-rc6 | 3 | # Linux kernel version: 2.6.14-rc4 |
| 4 | # Mon Aug 8 14:17:02 2005 | 4 | # Thu Oct 20 08:30:56 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 10 | CONFIG_GENERIC_ISA_DMA=y | 10 | CONFIG_GENERIC_ISA_DMA=y |
| 11 | CONFIG_HAVE_DEC_LOCK=y | ||
| 12 | CONFIG_EARLY_PRINTK=y | 11 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 12 | CONFIG_COMPAT=y |
| 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 26 | # General setup | 26 | # General setup |
| 27 | # | 27 | # |
| 28 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 29 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 30 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 31 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
| @@ -38,6 +39,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 38 | CONFIG_IKCONFIG=y | 39 | CONFIG_IKCONFIG=y |
| 39 | CONFIG_IKCONFIG_PROC=y | 40 | CONFIG_IKCONFIG_PROC=y |
| 40 | # CONFIG_CPUSETS is not set | 41 | # CONFIG_CPUSETS is not set |
| 42 | CONFIG_INITRAMFS_SOURCE="" | ||
| 41 | # CONFIG_EMBEDDED is not set | 43 | # CONFIG_EMBEDDED is not set |
| 42 | CONFIG_KALLSYMS=y | 44 | CONFIG_KALLSYMS=y |
| 43 | # CONFIG_KALLSYMS_ALL is not set | 45 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -88,6 +90,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 88 | # CONFIG_SPARSEMEM_MANUAL is not set | 90 | # CONFIG_SPARSEMEM_MANUAL is not set |
| 89 | CONFIG_FLATMEM=y | 91 | CONFIG_FLATMEM=y |
| 90 | CONFIG_FLAT_NODE_MEM_MAP=y | 92 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 93 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 91 | # CONFIG_NUMA is not set | 94 | # CONFIG_NUMA is not set |
| 92 | # CONFIG_SCHED_SMT is not set | 95 | # CONFIG_SCHED_SMT is not set |
| 93 | CONFIG_PREEMPT_NONE=y | 96 | CONFIG_PREEMPT_NONE=y |
| @@ -101,17 +104,16 @@ CONFIG_HZ=250 | |||
| 101 | CONFIG_GENERIC_HARDIRQS=y | 104 | CONFIG_GENERIC_HARDIRQS=y |
| 102 | CONFIG_LPARCFG=y | 105 | CONFIG_LPARCFG=y |
| 103 | CONFIG_SECCOMP=y | 106 | CONFIG_SECCOMP=y |
| 107 | CONFIG_BINFMT_ELF=y | ||
| 108 | # CONFIG_BINFMT_MISC is not set | ||
| 104 | CONFIG_ISA_DMA_API=y | 109 | CONFIG_ISA_DMA_API=y |
| 105 | 110 | ||
| 106 | # | 111 | # |
| 107 | # General setup | 112 | # Bus Options |
| 108 | # | 113 | # |
| 109 | CONFIG_PCI=y | 114 | CONFIG_PCI=y |
| 110 | CONFIG_PCI_DOMAINS=y | 115 | CONFIG_PCI_DOMAINS=y |
| 111 | CONFIG_BINFMT_ELF=y | ||
| 112 | # CONFIG_BINFMT_MISC is not set | ||
| 113 | CONFIG_PCI_LEGACY_PROC=y | 116 | CONFIG_PCI_LEGACY_PROC=y |
| 114 | CONFIG_PCI_NAMES=y | ||
| 115 | # CONFIG_PCI_DEBUG is not set | 117 | # CONFIG_PCI_DEBUG is not set |
| 116 | 118 | ||
| 117 | # | 119 | # |
| @@ -152,8 +154,8 @@ CONFIG_INET_AH=m | |||
| 152 | CONFIG_INET_ESP=m | 154 | CONFIG_INET_ESP=m |
| 153 | CONFIG_INET_IPCOMP=m | 155 | CONFIG_INET_IPCOMP=m |
| 154 | CONFIG_INET_TUNNEL=y | 156 | CONFIG_INET_TUNNEL=y |
| 155 | CONFIG_IP_TCPDIAG=m | 157 | CONFIG_INET_DIAG=y |
| 156 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 158 | CONFIG_INET_TCP_DIAG=y |
| 157 | # CONFIG_TCP_CONG_ADVANCED is not set | 159 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 158 | CONFIG_TCP_CONG_BIC=y | 160 | CONFIG_TCP_CONG_BIC=y |
| 159 | 161 | ||
| @@ -164,6 +166,7 @@ CONFIG_TCP_CONG_BIC=y | |||
| 164 | # CONFIG_IPV6 is not set | 166 | # CONFIG_IPV6 is not set |
| 165 | CONFIG_NETFILTER=y | 167 | CONFIG_NETFILTER=y |
| 166 | # CONFIG_NETFILTER_DEBUG is not set | 168 | # CONFIG_NETFILTER_DEBUG is not set |
| 169 | # CONFIG_NETFILTER_NETLINK is not set | ||
| 167 | 170 | ||
| 168 | # | 171 | # |
| 169 | # IP: Netfilter Configuration | 172 | # IP: Netfilter Configuration |
| @@ -171,11 +174,14 @@ CONFIG_NETFILTER=y | |||
| 171 | CONFIG_IP_NF_CONNTRACK=m | 174 | CONFIG_IP_NF_CONNTRACK=m |
| 172 | CONFIG_IP_NF_CT_ACCT=y | 175 | CONFIG_IP_NF_CT_ACCT=y |
| 173 | CONFIG_IP_NF_CONNTRACK_MARK=y | 176 | CONFIG_IP_NF_CONNTRACK_MARK=y |
| 177 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
| 174 | CONFIG_IP_NF_CT_PROTO_SCTP=m | 178 | CONFIG_IP_NF_CT_PROTO_SCTP=m |
| 175 | CONFIG_IP_NF_FTP=m | 179 | CONFIG_IP_NF_FTP=m |
| 176 | CONFIG_IP_NF_IRC=m | 180 | CONFIG_IP_NF_IRC=m |
| 181 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 177 | CONFIG_IP_NF_TFTP=m | 182 | CONFIG_IP_NF_TFTP=m |
| 178 | CONFIG_IP_NF_AMANDA=m | 183 | CONFIG_IP_NF_AMANDA=m |
| 184 | # CONFIG_IP_NF_PPTP is not set | ||
| 179 | CONFIG_IP_NF_QUEUE=m | 185 | CONFIG_IP_NF_QUEUE=m |
| 180 | CONFIG_IP_NF_IPTABLES=m | 186 | CONFIG_IP_NF_IPTABLES=m |
| 181 | CONFIG_IP_NF_MATCH_LIMIT=m | 187 | CONFIG_IP_NF_MATCH_LIMIT=m |
| @@ -199,14 +205,18 @@ CONFIG_IP_NF_MATCH_OWNER=m | |||
| 199 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 205 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
| 200 | CONFIG_IP_NF_MATCH_REALM=m | 206 | CONFIG_IP_NF_MATCH_REALM=m |
| 201 | CONFIG_IP_NF_MATCH_SCTP=m | 207 | CONFIG_IP_NF_MATCH_SCTP=m |
| 208 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 202 | CONFIG_IP_NF_MATCH_COMMENT=m | 209 | CONFIG_IP_NF_MATCH_COMMENT=m |
| 203 | CONFIG_IP_NF_MATCH_CONNMARK=m | 210 | CONFIG_IP_NF_MATCH_CONNMARK=m |
| 211 | CONFIG_IP_NF_MATCH_CONNBYTES=m | ||
| 204 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | 212 | CONFIG_IP_NF_MATCH_HASHLIMIT=m |
| 213 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 205 | CONFIG_IP_NF_FILTER=m | 214 | CONFIG_IP_NF_FILTER=m |
| 206 | CONFIG_IP_NF_TARGET_REJECT=m | 215 | CONFIG_IP_NF_TARGET_REJECT=m |
| 207 | CONFIG_IP_NF_TARGET_LOG=m | 216 | CONFIG_IP_NF_TARGET_LOG=m |
| 208 | CONFIG_IP_NF_TARGET_ULOG=m | 217 | CONFIG_IP_NF_TARGET_ULOG=m |
| 209 | CONFIG_IP_NF_TARGET_TCPMSS=m | 218 | CONFIG_IP_NF_TARGET_TCPMSS=m |
| 219 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 210 | CONFIG_IP_NF_NAT=m | 220 | CONFIG_IP_NF_NAT=m |
| 211 | CONFIG_IP_NF_NAT_NEEDED=y | 221 | CONFIG_IP_NF_NAT_NEEDED=y |
| 212 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 222 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
| @@ -224,6 +234,7 @@ CONFIG_IP_NF_TARGET_ECN=m | |||
| 224 | CONFIG_IP_NF_TARGET_DSCP=m | 234 | CONFIG_IP_NF_TARGET_DSCP=m |
| 225 | CONFIG_IP_NF_TARGET_MARK=m | 235 | CONFIG_IP_NF_TARGET_MARK=m |
| 226 | CONFIG_IP_NF_TARGET_CLASSIFY=m | 236 | CONFIG_IP_NF_TARGET_CLASSIFY=m |
| 237 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 227 | CONFIG_IP_NF_TARGET_CONNMARK=m | 238 | CONFIG_IP_NF_TARGET_CONNMARK=m |
| 228 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 239 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
| 229 | CONFIG_IP_NF_RAW=m | 240 | CONFIG_IP_NF_RAW=m |
| @@ -233,6 +244,11 @@ CONFIG_IP_NF_ARPFILTER=m | |||
| 233 | CONFIG_IP_NF_ARP_MANGLE=m | 244 | CONFIG_IP_NF_ARP_MANGLE=m |
| 234 | 245 | ||
| 235 | # | 246 | # |
| 247 | # DCCP Configuration (EXPERIMENTAL) | ||
| 248 | # | ||
| 249 | # CONFIG_IP_DCCP is not set | ||
| 250 | |||
| 251 | # | ||
| 236 | # SCTP Configuration (EXPERIMENTAL) | 252 | # SCTP Configuration (EXPERIMENTAL) |
| 237 | # | 253 | # |
| 238 | # CONFIG_IP_SCTP is not set | 254 | # CONFIG_IP_SCTP is not set |
| @@ -259,6 +275,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
| 259 | # CONFIG_HAMRADIO is not set | 275 | # CONFIG_HAMRADIO is not set |
| 260 | # CONFIG_IRDA is not set | 276 | # CONFIG_IRDA is not set |
| 261 | # CONFIG_BT is not set | 277 | # CONFIG_BT is not set |
| 278 | # CONFIG_IEEE80211 is not set | ||
| 262 | 279 | ||
| 263 | # | 280 | # |
| 264 | # Device Drivers | 281 | # Device Drivers |
| @@ -273,6 +290,11 @@ CONFIG_FW_LOADER=m | |||
| 273 | # CONFIG_DEBUG_DRIVER is not set | 290 | # CONFIG_DEBUG_DRIVER is not set |
| 274 | 291 | ||
| 275 | # | 292 | # |
| 293 | # Connector - unified userspace <-> kernelspace linker | ||
| 294 | # | ||
| 295 | # CONFIG_CONNECTOR is not set | ||
| 296 | |||
| 297 | # | ||
| 276 | # Memory Technology Devices (MTD) | 298 | # Memory Technology Devices (MTD) |
| 277 | # | 299 | # |
| 278 | # CONFIG_MTD is not set | 300 | # CONFIG_MTD is not set |
| @@ -303,7 +325,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 303 | CONFIG_BLK_DEV_RAM_COUNT=16 | 325 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 304 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 326 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
| 305 | CONFIG_BLK_DEV_INITRD=y | 327 | CONFIG_BLK_DEV_INITRD=y |
| 306 | CONFIG_INITRAMFS_SOURCE="" | ||
| 307 | # CONFIG_CDROM_PKTCDVD is not set | 328 | # CONFIG_CDROM_PKTCDVD is not set |
| 308 | 329 | ||
| 309 | # | 330 | # |
| @@ -323,6 +344,7 @@ CONFIG_IOSCHED_CFQ=y | |||
| 323 | # | 344 | # |
| 324 | # SCSI device support | 345 | # SCSI device support |
| 325 | # | 346 | # |
| 347 | # CONFIG_RAID_ATTRS is not set | ||
| 326 | CONFIG_SCSI=y | 348 | CONFIG_SCSI=y |
| 327 | CONFIG_SCSI_PROC_FS=y | 349 | CONFIG_SCSI_PROC_FS=y |
| 328 | 350 | ||
| @@ -350,6 +372,7 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 350 | CONFIG_SCSI_SPI_ATTRS=y | 372 | CONFIG_SCSI_SPI_ATTRS=y |
| 351 | CONFIG_SCSI_FC_ATTRS=y | 373 | CONFIG_SCSI_FC_ATTRS=y |
| 352 | # CONFIG_SCSI_ISCSI_ATTRS is not set | 374 | # CONFIG_SCSI_ISCSI_ATTRS is not set |
| 375 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 353 | 376 | ||
| 354 | # | 377 | # |
| 355 | # SCSI low-level drivers | 378 | # SCSI low-level drivers |
| @@ -363,6 +386,7 @@ CONFIG_SCSI_FC_ATTRS=y | |||
| 363 | # CONFIG_SCSI_AIC79XX is not set | 386 | # CONFIG_SCSI_AIC79XX is not set |
| 364 | # CONFIG_MEGARAID_NEWGEN is not set | 387 | # CONFIG_MEGARAID_NEWGEN is not set |
| 365 | # CONFIG_MEGARAID_LEGACY is not set | 388 | # CONFIG_MEGARAID_LEGACY is not set |
| 389 | # CONFIG_MEGARAID_SAS is not set | ||
| 366 | # CONFIG_SCSI_SATA is not set | 390 | # CONFIG_SCSI_SATA is not set |
| 367 | # CONFIG_SCSI_BUSLOGIC is not set | 391 | # CONFIG_SCSI_BUSLOGIC is not set |
| 368 | # CONFIG_SCSI_DMX3191D is not set | 392 | # CONFIG_SCSI_DMX3191D is not set |
| @@ -415,6 +439,7 @@ CONFIG_DM_ZERO=m | |||
| 415 | # CONFIG_FUSION is not set | 439 | # CONFIG_FUSION is not set |
| 416 | # CONFIG_FUSION_SPI is not set | 440 | # CONFIG_FUSION_SPI is not set |
| 417 | # CONFIG_FUSION_FC is not set | 441 | # CONFIG_FUSION_FC is not set |
| 442 | # CONFIG_FUSION_SAS is not set | ||
| 418 | 443 | ||
| 419 | # | 444 | # |
| 420 | # IEEE 1394 (FireWire) support | 445 | # IEEE 1394 (FireWire) support |
| @@ -445,12 +470,18 @@ CONFIG_TUN=m | |||
| 445 | # CONFIG_ARCNET is not set | 470 | # CONFIG_ARCNET is not set |
| 446 | 471 | ||
| 447 | # | 472 | # |
| 473 | # PHY device support | ||
| 474 | # | ||
| 475 | # CONFIG_PHYLIB is not set | ||
| 476 | |||
| 477 | # | ||
| 448 | # Ethernet (10 or 100Mbit) | 478 | # Ethernet (10 or 100Mbit) |
| 449 | # | 479 | # |
| 450 | CONFIG_NET_ETHERNET=y | 480 | CONFIG_NET_ETHERNET=y |
| 451 | CONFIG_MII=y | 481 | CONFIG_MII=y |
| 452 | # CONFIG_HAPPYMEAL is not set | 482 | # CONFIG_HAPPYMEAL is not set |
| 453 | # CONFIG_SUNGEM is not set | 483 | # CONFIG_SUNGEM is not set |
| 484 | # CONFIG_CASSINI is not set | ||
| 454 | # CONFIG_NET_VENDOR_3COM is not set | 485 | # CONFIG_NET_VENDOR_3COM is not set |
| 455 | 486 | ||
| 456 | # | 487 | # |
| @@ -489,6 +520,7 @@ CONFIG_E1000=m | |||
| 489 | # CONFIG_HAMACHI is not set | 520 | # CONFIG_HAMACHI is not set |
| 490 | # CONFIG_YELLOWFIN is not set | 521 | # CONFIG_YELLOWFIN is not set |
| 491 | # CONFIG_R8169 is not set | 522 | # CONFIG_R8169 is not set |
| 523 | # CONFIG_SIS190 is not set | ||
| 492 | # CONFIG_SKGE is not set | 524 | # CONFIG_SKGE is not set |
| 493 | # CONFIG_SK98LIN is not set | 525 | # CONFIG_SK98LIN is not set |
| 494 | # CONFIG_VIA_VELOCITY is not set | 526 | # CONFIG_VIA_VELOCITY is not set |
| @@ -498,6 +530,7 @@ CONFIG_E1000=m | |||
| 498 | # | 530 | # |
| 499 | # Ethernet (10000 Mbit) | 531 | # Ethernet (10000 Mbit) |
| 500 | # | 532 | # |
| 533 | # CONFIG_CHELSIO_T1 is not set | ||
| 501 | # CONFIG_IXGB is not set | 534 | # CONFIG_IXGB is not set |
| 502 | # CONFIG_S2IO is not set | 535 | # CONFIG_S2IO is not set |
| 503 | 536 | ||
| @@ -632,7 +665,6 @@ CONFIG_MAX_RAW_DEVS=256 | |||
| 632 | # I2C support | 665 | # I2C support |
| 633 | # | 666 | # |
| 634 | # CONFIG_I2C is not set | 667 | # CONFIG_I2C is not set |
| 635 | # CONFIG_I2C_SENSOR is not set | ||
| 636 | 668 | ||
| 637 | # | 669 | # |
| 638 | # Dallas's 1-wire bus | 670 | # Dallas's 1-wire bus |
| @@ -643,12 +675,17 @@ CONFIG_MAX_RAW_DEVS=256 | |||
| 643 | # Hardware Monitoring support | 675 | # Hardware Monitoring support |
| 644 | # | 676 | # |
| 645 | # CONFIG_HWMON is not set | 677 | # CONFIG_HWMON is not set |
| 678 | # CONFIG_HWMON_VID is not set | ||
| 646 | 679 | ||
| 647 | # | 680 | # |
| 648 | # Misc devices | 681 | # Misc devices |
| 649 | # | 682 | # |
| 650 | 683 | ||
| 651 | # | 684 | # |
| 685 | # Multimedia Capabilities Port drivers | ||
| 686 | # | ||
| 687 | |||
| 688 | # | ||
| 652 | # Multimedia devices | 689 | # Multimedia devices |
| 653 | # | 690 | # |
| 654 | # CONFIG_VIDEO_DEV is not set | 691 | # CONFIG_VIDEO_DEV is not set |
| @@ -722,16 +759,12 @@ CONFIG_JFS_SECURITY=y | |||
| 722 | # CONFIG_JFS_DEBUG is not set | 759 | # CONFIG_JFS_DEBUG is not set |
| 723 | # CONFIG_JFS_STATISTICS is not set | 760 | # CONFIG_JFS_STATISTICS is not set |
| 724 | CONFIG_FS_POSIX_ACL=y | 761 | CONFIG_FS_POSIX_ACL=y |
| 725 | |||
| 726 | # | ||
| 727 | # XFS support | ||
| 728 | # | ||
| 729 | CONFIG_XFS_FS=m | 762 | CONFIG_XFS_FS=m |
| 730 | CONFIG_XFS_EXPORT=y | 763 | CONFIG_XFS_EXPORT=y |
| 731 | # CONFIG_XFS_RT is not set | ||
| 732 | # CONFIG_XFS_QUOTA is not set | 764 | # CONFIG_XFS_QUOTA is not set |
| 733 | CONFIG_XFS_SECURITY=y | 765 | CONFIG_XFS_SECURITY=y |
| 734 | CONFIG_XFS_POSIX_ACL=y | 766 | CONFIG_XFS_POSIX_ACL=y |
| 767 | # CONFIG_XFS_RT is not set | ||
| 735 | # CONFIG_MINIX_FS is not set | 768 | # CONFIG_MINIX_FS is not set |
| 736 | # CONFIG_ROMFS_FS is not set | 769 | # CONFIG_ROMFS_FS is not set |
| 737 | CONFIG_INOTIFY=y | 770 | CONFIG_INOTIFY=y |
| @@ -739,6 +772,7 @@ CONFIG_INOTIFY=y | |||
| 739 | CONFIG_DNOTIFY=y | 772 | CONFIG_DNOTIFY=y |
| 740 | CONFIG_AUTOFS_FS=m | 773 | CONFIG_AUTOFS_FS=m |
| 741 | # CONFIG_AUTOFS4_FS is not set | 774 | # CONFIG_AUTOFS4_FS is not set |
| 775 | # CONFIG_FUSE_FS is not set | ||
| 742 | 776 | ||
| 743 | # | 777 | # |
| 744 | # CD-ROM/DVD Filesystems | 778 | # CD-ROM/DVD Filesystems |
| @@ -766,14 +800,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 766 | CONFIG_PROC_FS=y | 800 | CONFIG_PROC_FS=y |
| 767 | CONFIG_PROC_KCORE=y | 801 | CONFIG_PROC_KCORE=y |
| 768 | CONFIG_SYSFS=y | 802 | CONFIG_SYSFS=y |
| 769 | CONFIG_DEVPTS_FS_XATTR=y | ||
| 770 | CONFIG_DEVPTS_FS_SECURITY=y | ||
| 771 | CONFIG_TMPFS=y | 803 | CONFIG_TMPFS=y |
| 772 | CONFIG_TMPFS_XATTR=y | ||
| 773 | CONFIG_TMPFS_SECURITY=y | ||
| 774 | # CONFIG_HUGETLBFS is not set | 804 | # CONFIG_HUGETLBFS is not set |
| 775 | # CONFIG_HUGETLB_PAGE is not set | 805 | # CONFIG_HUGETLB_PAGE is not set |
| 776 | CONFIG_RAMFS=y | 806 | CONFIG_RAMFS=y |
| 807 | # CONFIG_RELAYFS_FS is not set | ||
| 777 | 808 | ||
| 778 | # | 809 | # |
| 779 | # Miscellaneous filesystems | 810 | # Miscellaneous filesystems |
| @@ -824,6 +855,7 @@ CONFIG_CIFS_POSIX=y | |||
| 824 | # CONFIG_NCP_FS is not set | 855 | # CONFIG_NCP_FS is not set |
| 825 | # CONFIG_CODA_FS is not set | 856 | # CONFIG_CODA_FS is not set |
| 826 | # CONFIG_AFS_FS is not set | 857 | # CONFIG_AFS_FS is not set |
| 858 | # CONFIG_9P_FS is not set | ||
| 827 | 859 | ||
| 828 | # | 860 | # |
| 829 | # Partition Types | 861 | # Partition Types |
| @@ -897,6 +929,7 @@ CONFIG_OPROFILE=y | |||
| 897 | CONFIG_DEBUG_KERNEL=y | 929 | CONFIG_DEBUG_KERNEL=y |
| 898 | CONFIG_MAGIC_SYSRQ=y | 930 | CONFIG_MAGIC_SYSRQ=y |
| 899 | CONFIG_LOG_BUF_SHIFT=17 | 931 | CONFIG_LOG_BUF_SHIFT=17 |
| 932 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 900 | # CONFIG_SCHEDSTATS is not set | 933 | # CONFIG_SCHEDSTATS is not set |
| 901 | # CONFIG_DEBUG_SLAB is not set | 934 | # CONFIG_DEBUG_SLAB is not set |
| 902 | # CONFIG_DEBUG_SPINLOCK is not set | 935 | # CONFIG_DEBUG_SPINLOCK is not set |
| @@ -954,7 +987,12 @@ CONFIG_CRYPTO_TEST=m | |||
| 954 | # Library routines | 987 | # Library routines |
| 955 | # | 988 | # |
| 956 | CONFIG_CRC_CCITT=m | 989 | CONFIG_CRC_CCITT=m |
| 990 | # CONFIG_CRC16 is not set | ||
| 957 | CONFIG_CRC32=y | 991 | CONFIG_CRC32=y |
| 958 | CONFIG_LIBCRC32C=m | 992 | CONFIG_LIBCRC32C=m |
| 959 | CONFIG_ZLIB_INFLATE=y | 993 | CONFIG_ZLIB_INFLATE=y |
| 960 | CONFIG_ZLIB_DEFLATE=m | 994 | CONFIG_ZLIB_DEFLATE=m |
| 995 | CONFIG_TEXTSEARCH=y | ||
| 996 | CONFIG_TEXTSEARCH_KMP=m | ||
| 997 | CONFIG_TEXTSEARCH_BM=m | ||
| 998 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/ppc64/configs/maple_defconfig b/arch/ppc64/configs/maple_defconfig index dd42892cd873..7b480f3d1406 100644 --- a/arch/ppc64/configs/maple_defconfig +++ b/arch/ppc64/configs/maple_defconfig | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.13-rc6 | 3 | # Linux kernel version: 2.6.14-rc4 |
| 4 | # Mon Aug 8 14:17:04 2005 | 4 | # Thu Oct 20 08:31:24 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 10 | CONFIG_GENERIC_ISA_DMA=y | 10 | CONFIG_GENERIC_ISA_DMA=y |
| 11 | CONFIG_HAVE_DEC_LOCK=y | ||
| 12 | CONFIG_EARLY_PRINTK=y | 11 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 12 | CONFIG_COMPAT=y |
| 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 26 | # General setup | 26 | # General setup |
| 27 | # | 27 | # |
| 28 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 29 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 30 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 31 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
| @@ -37,6 +38,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 37 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 38 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 39 | # CONFIG_CPUSETS is not set | 40 | # CONFIG_CPUSETS is not set |
| 41 | CONFIG_INITRAMFS_SOURCE="" | ||
| 40 | # CONFIG_EMBEDDED is not set | 42 | # CONFIG_EMBEDDED is not set |
| 41 | CONFIG_KALLSYMS=y | 43 | CONFIG_KALLSYMS=y |
| 42 | CONFIG_KALLSYMS_ALL=y | 44 | CONFIG_KALLSYMS_ALL=y |
| @@ -97,6 +99,7 @@ CONFIG_FLATMEM_MANUAL=y | |||
| 97 | # CONFIG_SPARSEMEM_MANUAL is not set | 99 | # CONFIG_SPARSEMEM_MANUAL is not set |
| 98 | CONFIG_FLATMEM=y | 100 | CONFIG_FLATMEM=y |
| 99 | CONFIG_FLAT_NODE_MEM_MAP=y | 101 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 102 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 100 | # CONFIG_NUMA is not set | 103 | # CONFIG_NUMA is not set |
| 101 | # CONFIG_SCHED_SMT is not set | 104 | # CONFIG_SCHED_SMT is not set |
| 102 | CONFIG_PREEMPT_NONE=y | 105 | CONFIG_PREEMPT_NONE=y |
| @@ -109,17 +112,18 @@ CONFIG_HZ_250=y | |||
| 109 | CONFIG_HZ=250 | 112 | CONFIG_HZ=250 |
| 110 | CONFIG_GENERIC_HARDIRQS=y | 113 | CONFIG_GENERIC_HARDIRQS=y |
| 111 | CONFIG_SECCOMP=y | 114 | CONFIG_SECCOMP=y |
| 115 | CONFIG_BINFMT_ELF=y | ||
| 116 | # CONFIG_BINFMT_MISC is not set | ||
| 117 | CONFIG_PROC_DEVICETREE=y | ||
| 118 | # CONFIG_CMDLINE_BOOL is not set | ||
| 112 | CONFIG_ISA_DMA_API=y | 119 | CONFIG_ISA_DMA_API=y |
| 113 | 120 | ||
| 114 | # | 121 | # |
| 115 | # General setup | 122 | # Bus Options |
| 116 | # | 123 | # |
| 117 | CONFIG_PCI=y | 124 | CONFIG_PCI=y |
| 118 | CONFIG_PCI_DOMAINS=y | 125 | CONFIG_PCI_DOMAINS=y |
| 119 | CONFIG_BINFMT_ELF=y | ||
| 120 | # CONFIG_BINFMT_MISC is not set | ||
| 121 | CONFIG_PCI_LEGACY_PROC=y | 126 | CONFIG_PCI_LEGACY_PROC=y |
| 122 | CONFIG_PCI_NAMES=y | ||
| 123 | # CONFIG_PCI_DEBUG is not set | 127 | # CONFIG_PCI_DEBUG is not set |
| 124 | 128 | ||
| 125 | # | 129 | # |
| @@ -131,8 +135,6 @@ CONFIG_PCI_NAMES=y | |||
| 131 | # PCI Hotplug Support | 135 | # PCI Hotplug Support |
| 132 | # | 136 | # |
| 133 | # CONFIG_HOTPLUG_PCI is not set | 137 | # CONFIG_HOTPLUG_PCI is not set |
| 134 | CONFIG_PROC_DEVICETREE=y | ||
| 135 | # CONFIG_CMDLINE_BOOL is not set | ||
| 136 | 138 | ||
| 137 | # | 139 | # |
| 138 | # Networking | 140 | # Networking |
| @@ -163,14 +165,19 @@ CONFIG_IP_PNP_DHCP=y | |||
| 163 | # CONFIG_INET_ESP is not set | 165 | # CONFIG_INET_ESP is not set |
| 164 | # CONFIG_INET_IPCOMP is not set | 166 | # CONFIG_INET_IPCOMP is not set |
| 165 | # CONFIG_INET_TUNNEL is not set | 167 | # CONFIG_INET_TUNNEL is not set |
| 166 | CONFIG_IP_TCPDIAG=y | 168 | CONFIG_INET_DIAG=y |
| 167 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 169 | CONFIG_INET_TCP_DIAG=y |
| 168 | # CONFIG_TCP_CONG_ADVANCED is not set | 170 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 169 | CONFIG_TCP_CONG_BIC=y | 171 | CONFIG_TCP_CONG_BIC=y |
| 170 | # CONFIG_IPV6 is not set | 172 | # CONFIG_IPV6 is not set |
| 171 | # CONFIG_NETFILTER is not set | 173 | # CONFIG_NETFILTER is not set |
| 172 | 174 | ||
| 173 | # | 175 | # |
| 176 | # DCCP Configuration (EXPERIMENTAL) | ||
| 177 | # | ||
| 178 | # CONFIG_IP_DCCP is not set | ||
| 179 | |||
| 180 | # | ||
| 174 | # SCTP Configuration (EXPERIMENTAL) | 181 | # SCTP Configuration (EXPERIMENTAL) |
| 175 | # | 182 | # |
| 176 | # CONFIG_IP_SCTP is not set | 183 | # CONFIG_IP_SCTP is not set |
| @@ -196,6 +203,7 @@ CONFIG_TCP_CONG_BIC=y | |||
| 196 | # CONFIG_HAMRADIO is not set | 203 | # CONFIG_HAMRADIO is not set |
| 197 | # CONFIG_IRDA is not set | 204 | # CONFIG_IRDA is not set |
| 198 | # CONFIG_BT is not set | 205 | # CONFIG_BT is not set |
| 206 | # CONFIG_IEEE80211 is not set | ||
| 199 | 207 | ||
| 200 | # | 208 | # |
| 201 | # Device Drivers | 209 | # Device Drivers |
| @@ -210,6 +218,11 @@ CONFIG_PREVENT_FIRMWARE_BUILD=y | |||
| 210 | # CONFIG_DEBUG_DRIVER is not set | 218 | # CONFIG_DEBUG_DRIVER is not set |
| 211 | 219 | ||
| 212 | # | 220 | # |
| 221 | # Connector - unified userspace <-> kernelspace linker | ||
| 222 | # | ||
| 223 | # CONFIG_CONNECTOR is not set | ||
| 224 | |||
| 225 | # | ||
| 213 | # Memory Technology Devices (MTD) | 226 | # Memory Technology Devices (MTD) |
| 214 | # | 227 | # |
| 215 | # CONFIG_MTD is not set | 228 | # CONFIG_MTD is not set |
| @@ -240,7 +253,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 240 | CONFIG_BLK_DEV_RAM_COUNT=16 | 253 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 241 | CONFIG_BLK_DEV_RAM_SIZE=8192 | 254 | CONFIG_BLK_DEV_RAM_SIZE=8192 |
| 242 | # CONFIG_BLK_DEV_INITRD is not set | 255 | # CONFIG_BLK_DEV_INITRD is not set |
| 243 | CONFIG_INITRAMFS_SOURCE="" | ||
| 244 | # CONFIG_CDROM_PKTCDVD is not set | 256 | # CONFIG_CDROM_PKTCDVD is not set |
| 245 | 257 | ||
| 246 | # | 258 | # |
| @@ -313,6 +325,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 313 | # | 325 | # |
| 314 | # SCSI device support | 326 | # SCSI device support |
| 315 | # | 327 | # |
| 328 | # CONFIG_RAID_ATTRS is not set | ||
| 316 | # CONFIG_SCSI is not set | 329 | # CONFIG_SCSI is not set |
| 317 | 330 | ||
| 318 | # | 331 | # |
| @@ -354,12 +367,18 @@ CONFIG_NETDEVICES=y | |||
| 354 | # CONFIG_ARCNET is not set | 367 | # CONFIG_ARCNET is not set |
| 355 | 368 | ||
| 356 | # | 369 | # |
| 370 | # PHY device support | ||
| 371 | # | ||
| 372 | # CONFIG_PHYLIB is not set | ||
| 373 | |||
| 374 | # | ||
| 357 | # Ethernet (10 or 100Mbit) | 375 | # Ethernet (10 or 100Mbit) |
| 358 | # | 376 | # |
| 359 | CONFIG_NET_ETHERNET=y | 377 | CONFIG_NET_ETHERNET=y |
| 360 | CONFIG_MII=y | 378 | CONFIG_MII=y |
| 361 | # CONFIG_HAPPYMEAL is not set | 379 | # CONFIG_HAPPYMEAL is not set |
| 362 | # CONFIG_SUNGEM is not set | 380 | # CONFIG_SUNGEM is not set |
| 381 | # CONFIG_CASSINI is not set | ||
| 363 | # CONFIG_NET_VENDOR_3COM is not set | 382 | # CONFIG_NET_VENDOR_3COM is not set |
| 364 | 383 | ||
| 365 | # | 384 | # |
| @@ -398,6 +417,7 @@ CONFIG_E1000=y | |||
| 398 | # CONFIG_HAMACHI is not set | 417 | # CONFIG_HAMACHI is not set |
| 399 | # CONFIG_YELLOWFIN is not set | 418 | # CONFIG_YELLOWFIN is not set |
| 400 | # CONFIG_R8169 is not set | 419 | # CONFIG_R8169 is not set |
| 420 | # CONFIG_SIS190 is not set | ||
| 401 | # CONFIG_SKGE is not set | 421 | # CONFIG_SKGE is not set |
| 402 | # CONFIG_SK98LIN is not set | 422 | # CONFIG_SK98LIN is not set |
| 403 | # CONFIG_VIA_VELOCITY is not set | 423 | # CONFIG_VIA_VELOCITY is not set |
| @@ -408,6 +428,7 @@ CONFIG_E1000=y | |||
| 408 | # | 428 | # |
| 409 | # Ethernet (10000 Mbit) | 429 | # Ethernet (10000 Mbit) |
| 410 | # | 430 | # |
| 431 | # CONFIG_CHELSIO_T1 is not set | ||
| 411 | # CONFIG_IXGB is not set | 432 | # CONFIG_IXGB is not set |
| 412 | # CONFIG_S2IO is not set | 433 | # CONFIG_S2IO is not set |
| 413 | 434 | ||
| @@ -553,7 +574,6 @@ CONFIG_I2C_AMD8111=y | |||
| 553 | # CONFIG_I2C_I801 is not set | 574 | # CONFIG_I2C_I801 is not set |
| 554 | # CONFIG_I2C_I810 is not set | 575 | # CONFIG_I2C_I810 is not set |
| 555 | # CONFIG_I2C_PIIX4 is not set | 576 | # CONFIG_I2C_PIIX4 is not set |
| 556 | # CONFIG_I2C_ISA is not set | ||
| 557 | # CONFIG_I2C_NFORCE2 is not set | 577 | # CONFIG_I2C_NFORCE2 is not set |
| 558 | # CONFIG_I2C_PARPORT_LIGHT is not set | 578 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| 559 | # CONFIG_I2C_PROSAVAGE is not set | 579 | # CONFIG_I2C_PROSAVAGE is not set |
| @@ -567,7 +587,6 @@ CONFIG_I2C_AMD8111=y | |||
| 567 | # CONFIG_I2C_VIAPRO is not set | 587 | # CONFIG_I2C_VIAPRO is not set |
| 568 | # CONFIG_I2C_VOODOO3 is not set | 588 | # CONFIG_I2C_VOODOO3 is not set |
| 569 | # CONFIG_I2C_PCA_ISA is not set | 589 | # CONFIG_I2C_PCA_ISA is not set |
| 570 | # CONFIG_I2C_SENSOR is not set | ||
| 571 | 590 | ||
| 572 | # | 591 | # |
| 573 | # Miscellaneous I2C Chip support | 592 | # Miscellaneous I2C Chip support |
| @@ -594,12 +613,17 @@ CONFIG_I2C_AMD8111=y | |||
| 594 | # Hardware Monitoring support | 613 | # Hardware Monitoring support |
| 595 | # | 614 | # |
| 596 | # CONFIG_HWMON is not set | 615 | # CONFIG_HWMON is not set |
| 616 | # CONFIG_HWMON_VID is not set | ||
| 597 | 617 | ||
| 598 | # | 618 | # |
| 599 | # Misc devices | 619 | # Misc devices |
| 600 | # | 620 | # |
| 601 | 621 | ||
| 602 | # | 622 | # |
| 623 | # Multimedia Capabilities Port drivers | ||
| 624 | # | ||
| 625 | |||
| 626 | # | ||
| 603 | # Multimedia devices | 627 | # Multimedia devices |
| 604 | # | 628 | # |
| 605 | # CONFIG_VIDEO_DEV is not set | 629 | # CONFIG_VIDEO_DEV is not set |
| @@ -681,9 +705,11 @@ CONFIG_USB_HIDINPUT=y | |||
| 681 | # CONFIG_USB_MTOUCH is not set | 705 | # CONFIG_USB_MTOUCH is not set |
| 682 | # CONFIG_USB_ITMTOUCH is not set | 706 | # CONFIG_USB_ITMTOUCH is not set |
| 683 | # CONFIG_USB_EGALAX is not set | 707 | # CONFIG_USB_EGALAX is not set |
| 708 | # CONFIG_USB_YEALINK is not set | ||
| 684 | # CONFIG_USB_XPAD is not set | 709 | # CONFIG_USB_XPAD is not set |
| 685 | # CONFIG_USB_ATI_REMOTE is not set | 710 | # CONFIG_USB_ATI_REMOTE is not set |
| 686 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 711 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
| 712 | # CONFIG_USB_APPLETOUCH is not set | ||
| 687 | 713 | ||
| 688 | # | 714 | # |
| 689 | # USB Imaging devices | 715 | # USB Imaging devices |
| @@ -814,10 +840,6 @@ CONFIG_JBD=y | |||
| 814 | # CONFIG_REISERFS_FS is not set | 840 | # CONFIG_REISERFS_FS is not set |
| 815 | # CONFIG_JFS_FS is not set | 841 | # CONFIG_JFS_FS is not set |
| 816 | CONFIG_FS_POSIX_ACL=y | 842 | CONFIG_FS_POSIX_ACL=y |
| 817 | |||
| 818 | # | ||
| 819 | # XFS support | ||
| 820 | # | ||
| 821 | # CONFIG_XFS_FS is not set | 843 | # CONFIG_XFS_FS is not set |
| 822 | # CONFIG_MINIX_FS is not set | 844 | # CONFIG_MINIX_FS is not set |
| 823 | # CONFIG_ROMFS_FS is not set | 845 | # CONFIG_ROMFS_FS is not set |
| @@ -826,6 +848,7 @@ CONFIG_INOTIFY=y | |||
| 826 | CONFIG_DNOTIFY=y | 848 | CONFIG_DNOTIFY=y |
| 827 | # CONFIG_AUTOFS_FS is not set | 849 | # CONFIG_AUTOFS_FS is not set |
| 828 | # CONFIG_AUTOFS4_FS is not set | 850 | # CONFIG_AUTOFS4_FS is not set |
| 851 | # CONFIG_FUSE_FS is not set | ||
| 829 | 852 | ||
| 830 | # | 853 | # |
| 831 | # CD-ROM/DVD Filesystems | 854 | # CD-ROM/DVD Filesystems |
| @@ -849,14 +872,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 849 | CONFIG_PROC_FS=y | 872 | CONFIG_PROC_FS=y |
| 850 | CONFIG_PROC_KCORE=y | 873 | CONFIG_PROC_KCORE=y |
| 851 | CONFIG_SYSFS=y | 874 | CONFIG_SYSFS=y |
| 852 | CONFIG_DEVPTS_FS_XATTR=y | ||
| 853 | # CONFIG_DEVPTS_FS_SECURITY is not set | ||
| 854 | CONFIG_TMPFS=y | 875 | CONFIG_TMPFS=y |
| 855 | CONFIG_TMPFS_XATTR=y | ||
| 856 | CONFIG_TMPFS_SECURITY=y | ||
| 857 | CONFIG_HUGETLBFS=y | 876 | CONFIG_HUGETLBFS=y |
| 858 | CONFIG_HUGETLB_PAGE=y | 877 | CONFIG_HUGETLB_PAGE=y |
| 859 | CONFIG_RAMFS=y | 878 | CONFIG_RAMFS=y |
| 879 | # CONFIG_RELAYFS_FS is not set | ||
| 860 | 880 | ||
| 861 | # | 881 | # |
| 862 | # Miscellaneous filesystems | 882 | # Miscellaneous filesystems |
| @@ -898,6 +918,7 @@ CONFIG_RPCSEC_GSS_KRB5=y | |||
| 898 | # CONFIG_NCP_FS is not set | 918 | # CONFIG_NCP_FS is not set |
| 899 | # CONFIG_CODA_FS is not set | 919 | # CONFIG_CODA_FS is not set |
| 900 | # CONFIG_AFS_FS is not set | 920 | # CONFIG_AFS_FS is not set |
| 921 | # CONFIG_9P_FS is not set | ||
| 901 | 922 | ||
| 902 | # | 923 | # |
| 903 | # Partition Types | 924 | # Partition Types |
| @@ -975,6 +996,7 @@ CONFIG_NLS_UTF8=y | |||
| 975 | CONFIG_DEBUG_KERNEL=y | 996 | CONFIG_DEBUG_KERNEL=y |
| 976 | CONFIG_MAGIC_SYSRQ=y | 997 | CONFIG_MAGIC_SYSRQ=y |
| 977 | CONFIG_LOG_BUF_SHIFT=17 | 998 | CONFIG_LOG_BUF_SHIFT=17 |
| 999 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 978 | # CONFIG_SCHEDSTATS is not set | 1000 | # CONFIG_SCHEDSTATS is not set |
| 979 | CONFIG_DEBUG_SLAB=y | 1001 | CONFIG_DEBUG_SLAB=y |
| 980 | # CONFIG_DEBUG_SPINLOCK is not set | 1002 | # CONFIG_DEBUG_SPINLOCK is not set |
| @@ -1034,6 +1056,7 @@ CONFIG_CRYPTO_DES=y | |||
| 1034 | # Library routines | 1056 | # Library routines |
| 1035 | # | 1057 | # |
| 1036 | CONFIG_CRC_CCITT=y | 1058 | CONFIG_CRC_CCITT=y |
| 1059 | # CONFIG_CRC16 is not set | ||
| 1037 | CONFIG_CRC32=y | 1060 | CONFIG_CRC32=y |
| 1038 | # CONFIG_LIBCRC32C is not set | 1061 | # CONFIG_LIBCRC32C is not set |
| 1039 | CONFIG_ZLIB_INFLATE=y | 1062 | CONFIG_ZLIB_INFLATE=y |
diff --git a/arch/ppc64/configs/pSeries_defconfig b/arch/ppc64/configs/pSeries_defconfig index 29f7b80b0efc..9f09dff9e11a 100644 --- a/arch/ppc64/configs/pSeries_defconfig +++ b/arch/ppc64/configs/pSeries_defconfig | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.13-rc6 | 3 | # Linux kernel version: 2.6.14-rc4 |
| 4 | # Mon Aug 8 14:17:07 2005 | 4 | # Thu Oct 20 08:32:17 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 10 | CONFIG_GENERIC_ISA_DMA=y | 10 | CONFIG_GENERIC_ISA_DMA=y |
| 11 | CONFIG_HAVE_DEC_LOCK=y | ||
| 12 | CONFIG_EARLY_PRINTK=y | 11 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 12 | CONFIG_COMPAT=y |
| 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 26 | # General setup | 26 | # General setup |
| 27 | # | 27 | # |
| 28 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 29 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 30 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 31 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
| @@ -38,6 +39,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 38 | CONFIG_IKCONFIG=y | 39 | CONFIG_IKCONFIG=y |
| 39 | CONFIG_IKCONFIG_PROC=y | 40 | CONFIG_IKCONFIG_PROC=y |
| 40 | CONFIG_CPUSETS=y | 41 | CONFIG_CPUSETS=y |
| 42 | CONFIG_INITRAMFS_SOURCE="" | ||
| 41 | # CONFIG_EMBEDDED is not set | 43 | # CONFIG_EMBEDDED is not set |
| 42 | CONFIG_KALLSYMS=y | 44 | CONFIG_KALLSYMS=y |
| 43 | CONFIG_KALLSYMS_ALL=y | 45 | CONFIG_KALLSYMS_ALL=y |
| @@ -104,6 +106,7 @@ CONFIG_DISCONTIGMEM_MANUAL=y | |||
| 104 | CONFIG_DISCONTIGMEM=y | 106 | CONFIG_DISCONTIGMEM=y |
| 105 | CONFIG_FLAT_NODE_MEM_MAP=y | 107 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 106 | CONFIG_NEED_MULTIPLE_NODES=y | 108 | CONFIG_NEED_MULTIPLE_NODES=y |
| 109 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 107 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y | 110 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y |
| 108 | CONFIG_NODES_SPAN_OTHER_NODES=y | 111 | CONFIG_NODES_SPAN_OTHER_NODES=y |
| 109 | CONFIG_NUMA=y | 112 | CONFIG_NUMA=y |
| @@ -124,19 +127,20 @@ CONFIG_RTAS_FLASH=m | |||
| 124 | CONFIG_SCANLOG=m | 127 | CONFIG_SCANLOG=m |
| 125 | CONFIG_LPARCFG=y | 128 | CONFIG_LPARCFG=y |
| 126 | CONFIG_SECCOMP=y | 129 | CONFIG_SECCOMP=y |
| 130 | CONFIG_BINFMT_ELF=y | ||
| 131 | # CONFIG_BINFMT_MISC is not set | ||
| 132 | CONFIG_HOTPLUG_CPU=y | ||
| 133 | CONFIG_PROC_DEVICETREE=y | ||
| 134 | # CONFIG_CMDLINE_BOOL is not set | ||
| 127 | CONFIG_ISA_DMA_API=y | 135 | CONFIG_ISA_DMA_API=y |
| 128 | 136 | ||
| 129 | # | 137 | # |
| 130 | # General setup | 138 | # Bus Options |
| 131 | # | 139 | # |
| 132 | CONFIG_PCI=y | 140 | CONFIG_PCI=y |
| 133 | CONFIG_PCI_DOMAINS=y | 141 | CONFIG_PCI_DOMAINS=y |
| 134 | CONFIG_BINFMT_ELF=y | ||
| 135 | # CONFIG_BINFMT_MISC is not set | ||
| 136 | CONFIG_PCI_LEGACY_PROC=y | 142 | CONFIG_PCI_LEGACY_PROC=y |
| 137 | CONFIG_PCI_NAMES=y | ||
| 138 | # CONFIG_PCI_DEBUG is not set | 143 | # CONFIG_PCI_DEBUG is not set |
| 139 | CONFIG_HOTPLUG_CPU=y | ||
| 140 | 144 | ||
| 141 | # | 145 | # |
| 142 | # PCCARD (PCMCIA/CardBus) support | 146 | # PCCARD (PCMCIA/CardBus) support |
| @@ -152,8 +156,6 @@ CONFIG_HOTPLUG_PCI=m | |||
| 152 | # CONFIG_HOTPLUG_PCI_SHPC is not set | 156 | # CONFIG_HOTPLUG_PCI_SHPC is not set |
| 153 | CONFIG_HOTPLUG_PCI_RPA=m | 157 | CONFIG_HOTPLUG_PCI_RPA=m |
| 154 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m | 158 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m |
| 155 | CONFIG_PROC_DEVICETREE=y | ||
| 156 | # CONFIG_CMDLINE_BOOL is not set | ||
| 157 | 159 | ||
| 158 | # | 160 | # |
| 159 | # Networking | 161 | # Networking |
| @@ -183,8 +185,8 @@ CONFIG_INET_AH=m | |||
| 183 | CONFIG_INET_ESP=m | 185 | CONFIG_INET_ESP=m |
| 184 | CONFIG_INET_IPCOMP=m | 186 | CONFIG_INET_IPCOMP=m |
| 185 | CONFIG_INET_TUNNEL=y | 187 | CONFIG_INET_TUNNEL=y |
| 186 | CONFIG_IP_TCPDIAG=m | 188 | CONFIG_INET_DIAG=y |
| 187 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 189 | CONFIG_INET_TCP_DIAG=y |
| 188 | # CONFIG_TCP_CONG_ADVANCED is not set | 190 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 189 | CONFIG_TCP_CONG_BIC=y | 191 | CONFIG_TCP_CONG_BIC=y |
| 190 | 192 | ||
| @@ -195,6 +197,9 @@ CONFIG_TCP_CONG_BIC=y | |||
| 195 | # CONFIG_IPV6 is not set | 197 | # CONFIG_IPV6 is not set |
| 196 | CONFIG_NETFILTER=y | 198 | CONFIG_NETFILTER=y |
| 197 | # CONFIG_NETFILTER_DEBUG is not set | 199 | # CONFIG_NETFILTER_DEBUG is not set |
| 200 | CONFIG_NETFILTER_NETLINK=y | ||
| 201 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
| 202 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
| 198 | 203 | ||
| 199 | # | 204 | # |
| 200 | # IP: Netfilter Configuration | 205 | # IP: Netfilter Configuration |
| @@ -202,11 +207,15 @@ CONFIG_NETFILTER=y | |||
| 202 | CONFIG_IP_NF_CONNTRACK=m | 207 | CONFIG_IP_NF_CONNTRACK=m |
| 203 | CONFIG_IP_NF_CT_ACCT=y | 208 | CONFIG_IP_NF_CT_ACCT=y |
| 204 | CONFIG_IP_NF_CONNTRACK_MARK=y | 209 | CONFIG_IP_NF_CONNTRACK_MARK=y |
| 210 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
| 211 | CONFIG_IP_NF_CONNTRACK_NETLINK=m | ||
| 205 | CONFIG_IP_NF_CT_PROTO_SCTP=m | 212 | CONFIG_IP_NF_CT_PROTO_SCTP=m |
| 206 | CONFIG_IP_NF_FTP=m | 213 | CONFIG_IP_NF_FTP=m |
| 207 | CONFIG_IP_NF_IRC=m | 214 | CONFIG_IP_NF_IRC=m |
| 215 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 208 | CONFIG_IP_NF_TFTP=m | 216 | CONFIG_IP_NF_TFTP=m |
| 209 | CONFIG_IP_NF_AMANDA=m | 217 | CONFIG_IP_NF_AMANDA=m |
| 218 | # CONFIG_IP_NF_PPTP is not set | ||
| 210 | CONFIG_IP_NF_QUEUE=m | 219 | CONFIG_IP_NF_QUEUE=m |
| 211 | CONFIG_IP_NF_IPTABLES=m | 220 | CONFIG_IP_NF_IPTABLES=m |
| 212 | CONFIG_IP_NF_MATCH_LIMIT=m | 221 | CONFIG_IP_NF_MATCH_LIMIT=m |
| @@ -230,14 +239,18 @@ CONFIG_IP_NF_MATCH_OWNER=m | |||
| 230 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 239 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
| 231 | CONFIG_IP_NF_MATCH_REALM=m | 240 | CONFIG_IP_NF_MATCH_REALM=m |
| 232 | CONFIG_IP_NF_MATCH_SCTP=m | 241 | CONFIG_IP_NF_MATCH_SCTP=m |
| 242 | # CONFIG_IP_NF_MATCH_DCCP is not set | ||
| 233 | CONFIG_IP_NF_MATCH_COMMENT=m | 243 | CONFIG_IP_NF_MATCH_COMMENT=m |
| 234 | CONFIG_IP_NF_MATCH_CONNMARK=m | 244 | CONFIG_IP_NF_MATCH_CONNMARK=m |
| 245 | CONFIG_IP_NF_MATCH_CONNBYTES=m | ||
| 235 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | 246 | CONFIG_IP_NF_MATCH_HASHLIMIT=m |
| 247 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 236 | CONFIG_IP_NF_FILTER=m | 248 | CONFIG_IP_NF_FILTER=m |
| 237 | CONFIG_IP_NF_TARGET_REJECT=m | 249 | CONFIG_IP_NF_TARGET_REJECT=m |
| 238 | CONFIG_IP_NF_TARGET_LOG=m | 250 | CONFIG_IP_NF_TARGET_LOG=m |
| 239 | CONFIG_IP_NF_TARGET_ULOG=m | 251 | CONFIG_IP_NF_TARGET_ULOG=m |
| 240 | CONFIG_IP_NF_TARGET_TCPMSS=m | 252 | CONFIG_IP_NF_TARGET_TCPMSS=m |
| 253 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 241 | CONFIG_IP_NF_NAT=m | 254 | CONFIG_IP_NF_NAT=m |
| 242 | CONFIG_IP_NF_NAT_NEEDED=y | 255 | CONFIG_IP_NF_NAT_NEEDED=y |
| 243 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 256 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
| @@ -255,6 +268,7 @@ CONFIG_IP_NF_TARGET_ECN=m | |||
| 255 | CONFIG_IP_NF_TARGET_DSCP=m | 268 | CONFIG_IP_NF_TARGET_DSCP=m |
| 256 | CONFIG_IP_NF_TARGET_MARK=m | 269 | CONFIG_IP_NF_TARGET_MARK=m |
| 257 | CONFIG_IP_NF_TARGET_CLASSIFY=m | 270 | CONFIG_IP_NF_TARGET_CLASSIFY=m |
| 271 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 258 | CONFIG_IP_NF_TARGET_CONNMARK=m | 272 | CONFIG_IP_NF_TARGET_CONNMARK=m |
| 259 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 273 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
| 260 | CONFIG_IP_NF_RAW=m | 274 | CONFIG_IP_NF_RAW=m |
| @@ -264,6 +278,11 @@ CONFIG_IP_NF_ARPFILTER=m | |||
| 264 | CONFIG_IP_NF_ARP_MANGLE=m | 278 | CONFIG_IP_NF_ARP_MANGLE=m |
| 265 | 279 | ||
| 266 | # | 280 | # |
| 281 | # DCCP Configuration (EXPERIMENTAL) | ||
| 282 | # | ||
| 283 | # CONFIG_IP_DCCP is not set | ||
| 284 | |||
| 285 | # | ||
| 267 | # SCTP Configuration (EXPERIMENTAL) | 286 | # SCTP Configuration (EXPERIMENTAL) |
| 268 | # | 287 | # |
| 269 | # CONFIG_IP_SCTP is not set | 288 | # CONFIG_IP_SCTP is not set |
| @@ -290,6 +309,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
| 290 | # CONFIG_HAMRADIO is not set | 309 | # CONFIG_HAMRADIO is not set |
| 291 | # CONFIG_IRDA is not set | 310 | # CONFIG_IRDA is not set |
| 292 | # CONFIG_BT is not set | 311 | # CONFIG_BT is not set |
| 312 | # CONFIG_IEEE80211 is not set | ||
| 293 | 313 | ||
| 294 | # | 314 | # |
| 295 | # Device Drivers | 315 | # Device Drivers |
| @@ -304,6 +324,11 @@ CONFIG_FW_LOADER=y | |||
| 304 | # CONFIG_DEBUG_DRIVER is not set | 324 | # CONFIG_DEBUG_DRIVER is not set |
| 305 | 325 | ||
| 306 | # | 326 | # |
| 327 | # Connector - unified userspace <-> kernelspace linker | ||
| 328 | # | ||
| 329 | # CONFIG_CONNECTOR is not set | ||
| 330 | |||
| 331 | # | ||
| 307 | # Memory Technology Devices (MTD) | 332 | # Memory Technology Devices (MTD) |
| 308 | # | 333 | # |
| 309 | # CONFIG_MTD is not set | 334 | # CONFIG_MTD is not set |
| @@ -342,7 +367,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 342 | CONFIG_BLK_DEV_RAM_COUNT=16 | 367 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 343 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 368 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
| 344 | CONFIG_BLK_DEV_INITRD=y | 369 | CONFIG_BLK_DEV_INITRD=y |
| 345 | CONFIG_INITRAMFS_SOURCE="" | ||
| 346 | # CONFIG_CDROM_PKTCDVD is not set | 370 | # CONFIG_CDROM_PKTCDVD is not set |
| 347 | 371 | ||
| 348 | # | 372 | # |
| @@ -416,6 +440,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 416 | # | 440 | # |
| 417 | # SCSI device support | 441 | # SCSI device support |
| 418 | # | 442 | # |
| 443 | # CONFIG_RAID_ATTRS is not set | ||
| 419 | CONFIG_SCSI=y | 444 | CONFIG_SCSI=y |
| 420 | CONFIG_SCSI_PROC_FS=y | 445 | CONFIG_SCSI_PROC_FS=y |
| 421 | 446 | ||
| @@ -443,6 +468,7 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 443 | CONFIG_SCSI_SPI_ATTRS=y | 468 | CONFIG_SCSI_SPI_ATTRS=y |
| 444 | CONFIG_SCSI_FC_ATTRS=y | 469 | CONFIG_SCSI_FC_ATTRS=y |
| 445 | CONFIG_SCSI_ISCSI_ATTRS=m | 470 | CONFIG_SCSI_ISCSI_ATTRS=m |
| 471 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 446 | 472 | ||
| 447 | # | 473 | # |
| 448 | # SCSI low-level drivers | 474 | # SCSI low-level drivers |
| @@ -456,6 +482,7 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
| 456 | # CONFIG_SCSI_AIC79XX is not set | 482 | # CONFIG_SCSI_AIC79XX is not set |
| 457 | # CONFIG_MEGARAID_NEWGEN is not set | 483 | # CONFIG_MEGARAID_NEWGEN is not set |
| 458 | # CONFIG_MEGARAID_LEGACY is not set | 484 | # CONFIG_MEGARAID_LEGACY is not set |
| 485 | # CONFIG_MEGARAID_SAS is not set | ||
| 459 | # CONFIG_SCSI_SATA is not set | 486 | # CONFIG_SCSI_SATA is not set |
| 460 | # CONFIG_SCSI_BUSLOGIC is not set | 487 | # CONFIG_SCSI_BUSLOGIC is not set |
| 461 | # CONFIG_SCSI_DMX3191D is not set | 488 | # CONFIG_SCSI_DMX3191D is not set |
| @@ -517,6 +544,7 @@ CONFIG_DM_MULTIPATH_EMC=m | |||
| 517 | # CONFIG_FUSION is not set | 544 | # CONFIG_FUSION is not set |
| 518 | # CONFIG_FUSION_SPI is not set | 545 | # CONFIG_FUSION_SPI is not set |
| 519 | # CONFIG_FUSION_FC is not set | 546 | # CONFIG_FUSION_FC is not set |
| 547 | # CONFIG_FUSION_SAS is not set | ||
| 520 | 548 | ||
| 521 | # | 549 | # |
| 522 | # IEEE 1394 (FireWire) support | 550 | # IEEE 1394 (FireWire) support |
| @@ -547,12 +575,18 @@ CONFIG_TUN=m | |||
| 547 | # CONFIG_ARCNET is not set | 575 | # CONFIG_ARCNET is not set |
| 548 | 576 | ||
| 549 | # | 577 | # |
| 578 | # PHY device support | ||
| 579 | # | ||
| 580 | # CONFIG_PHYLIB is not set | ||
| 581 | |||
| 582 | # | ||
| 550 | # Ethernet (10 or 100Mbit) | 583 | # Ethernet (10 or 100Mbit) |
| 551 | # | 584 | # |
| 552 | CONFIG_NET_ETHERNET=y | 585 | CONFIG_NET_ETHERNET=y |
| 553 | CONFIG_MII=y | 586 | CONFIG_MII=y |
| 554 | # CONFIG_HAPPYMEAL is not set | 587 | # CONFIG_HAPPYMEAL is not set |
| 555 | # CONFIG_SUNGEM is not set | 588 | # CONFIG_SUNGEM is not set |
| 589 | # CONFIG_CASSINI is not set | ||
| 556 | CONFIG_NET_VENDOR_3COM=y | 590 | CONFIG_NET_VENDOR_3COM=y |
| 557 | CONFIG_VORTEX=y | 591 | CONFIG_VORTEX=y |
| 558 | # CONFIG_TYPHOON is not set | 592 | # CONFIG_TYPHOON is not set |
| @@ -581,6 +615,7 @@ CONFIG_E100=y | |||
| 581 | # CONFIG_EPIC100 is not set | 615 | # CONFIG_EPIC100 is not set |
| 582 | # CONFIG_SUNDANCE is not set | 616 | # CONFIG_SUNDANCE is not set |
| 583 | # CONFIG_VIA_RHINE is not set | 617 | # CONFIG_VIA_RHINE is not set |
| 618 | # CONFIG_NET_POCKET is not set | ||
| 584 | 619 | ||
| 585 | # | 620 | # |
| 586 | # Ethernet (1000 Mbit) | 621 | # Ethernet (1000 Mbit) |
| @@ -594,6 +629,7 @@ CONFIG_E1000=y | |||
| 594 | # CONFIG_HAMACHI is not set | 629 | # CONFIG_HAMACHI is not set |
| 595 | # CONFIG_YELLOWFIN is not set | 630 | # CONFIG_YELLOWFIN is not set |
| 596 | # CONFIG_R8169 is not set | 631 | # CONFIG_R8169 is not set |
| 632 | # CONFIG_SIS190 is not set | ||
| 597 | # CONFIG_SKGE is not set | 633 | # CONFIG_SKGE is not set |
| 598 | # CONFIG_SK98LIN is not set | 634 | # CONFIG_SK98LIN is not set |
| 599 | # CONFIG_VIA_VELOCITY is not set | 635 | # CONFIG_VIA_VELOCITY is not set |
| @@ -604,6 +640,7 @@ CONFIG_TIGON3=y | |||
| 604 | # | 640 | # |
| 605 | # Ethernet (10000 Mbit) | 641 | # Ethernet (10000 Mbit) |
| 606 | # | 642 | # |
| 643 | # CONFIG_CHELSIO_T1 is not set | ||
| 607 | CONFIG_IXGB=m | 644 | CONFIG_IXGB=m |
| 608 | # CONFIG_IXGB_NAPI is not set | 645 | # CONFIG_IXGB_NAPI is not set |
| 609 | CONFIG_S2IO=m | 646 | CONFIG_S2IO=m |
| @@ -789,7 +826,6 @@ CONFIG_I2C_ALGOBIT=y | |||
| 789 | # CONFIG_I2C_I801 is not set | 826 | # CONFIG_I2C_I801 is not set |
| 790 | # CONFIG_I2C_I810 is not set | 827 | # CONFIG_I2C_I810 is not set |
| 791 | # CONFIG_I2C_PIIX4 is not set | 828 | # CONFIG_I2C_PIIX4 is not set |
| 792 | # CONFIG_I2C_ISA is not set | ||
| 793 | # CONFIG_I2C_NFORCE2 is not set | 829 | # CONFIG_I2C_NFORCE2 is not set |
| 794 | # CONFIG_I2C_PARPORT is not set | 830 | # CONFIG_I2C_PARPORT is not set |
| 795 | # CONFIG_I2C_PARPORT_LIGHT is not set | 831 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| @@ -804,7 +840,6 @@ CONFIG_I2C_ALGOBIT=y | |||
| 804 | # CONFIG_I2C_VIAPRO is not set | 840 | # CONFIG_I2C_VIAPRO is not set |
| 805 | # CONFIG_I2C_VOODOO3 is not set | 841 | # CONFIG_I2C_VOODOO3 is not set |
| 806 | # CONFIG_I2C_PCA_ISA is not set | 842 | # CONFIG_I2C_PCA_ISA is not set |
| 807 | # CONFIG_I2C_SENSOR is not set | ||
| 808 | 843 | ||
| 809 | # | 844 | # |
| 810 | # Miscellaneous I2C Chip support | 845 | # Miscellaneous I2C Chip support |
| @@ -831,12 +866,17 @@ CONFIG_I2C_ALGOBIT=y | |||
| 831 | # Hardware Monitoring support | 866 | # Hardware Monitoring support |
| 832 | # | 867 | # |
| 833 | # CONFIG_HWMON is not set | 868 | # CONFIG_HWMON is not set |
| 869 | # CONFIG_HWMON_VID is not set | ||
| 834 | 870 | ||
| 835 | # | 871 | # |
| 836 | # Misc devices | 872 | # Misc devices |
| 837 | # | 873 | # |
| 838 | 874 | ||
| 839 | # | 875 | # |
| 876 | # Multimedia Capabilities Port drivers | ||
| 877 | # | ||
| 878 | |||
| 879 | # | ||
| 840 | # Multimedia devices | 880 | # Multimedia devices |
| 841 | # | 881 | # |
| 842 | # CONFIG_VIDEO_DEV is not set | 882 | # CONFIG_VIDEO_DEV is not set |
| @@ -885,6 +925,7 @@ CONFIG_FB_RADEON_I2C=y | |||
| 885 | # CONFIG_FB_KYRO is not set | 925 | # CONFIG_FB_KYRO is not set |
| 886 | # CONFIG_FB_3DFX is not set | 926 | # CONFIG_FB_3DFX is not set |
| 887 | # CONFIG_FB_VOODOO1 is not set | 927 | # CONFIG_FB_VOODOO1 is not set |
| 928 | # CONFIG_FB_CYBLA is not set | ||
| 888 | # CONFIG_FB_TRIDENT is not set | 929 | # CONFIG_FB_TRIDENT is not set |
| 889 | # CONFIG_FB_S1D13XXX is not set | 930 | # CONFIG_FB_S1D13XXX is not set |
| 890 | # CONFIG_FB_VIRTUAL is not set | 931 | # CONFIG_FB_VIRTUAL is not set |
| @@ -982,9 +1023,11 @@ CONFIG_USB_HIDDEV=y | |||
| 982 | # CONFIG_USB_MTOUCH is not set | 1023 | # CONFIG_USB_MTOUCH is not set |
| 983 | # CONFIG_USB_ITMTOUCH is not set | 1024 | # CONFIG_USB_ITMTOUCH is not set |
| 984 | # CONFIG_USB_EGALAX is not set | 1025 | # CONFIG_USB_EGALAX is not set |
| 1026 | # CONFIG_USB_YEALINK is not set | ||
| 985 | # CONFIG_USB_XPAD is not set | 1027 | # CONFIG_USB_XPAD is not set |
| 986 | # CONFIG_USB_ATI_REMOTE is not set | 1028 | # CONFIG_USB_ATI_REMOTE is not set |
| 987 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1029 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
| 1030 | # CONFIG_USB_APPLETOUCH is not set | ||
| 988 | 1031 | ||
| 989 | # | 1032 | # |
| 990 | # USB Imaging devices | 1033 | # USB Imaging devices |
| @@ -1057,7 +1100,8 @@ CONFIG_USB_MON=y | |||
| 1057 | # InfiniBand support | 1100 | # InfiniBand support |
| 1058 | # | 1101 | # |
| 1059 | CONFIG_INFINIBAND=m | 1102 | CONFIG_INFINIBAND=m |
| 1060 | CONFIG_INFINIBAND_USER_VERBS=m | 1103 | # CONFIG_INFINIBAND_USER_MAD is not set |
| 1104 | # CONFIG_INFINIBAND_USER_ACCESS is not set | ||
| 1061 | CONFIG_INFINIBAND_MTHCA=m | 1105 | CONFIG_INFINIBAND_MTHCA=m |
| 1062 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set | 1106 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set |
| 1063 | CONFIG_INFINIBAND_IPOIB=m | 1107 | CONFIG_INFINIBAND_IPOIB=m |
| @@ -1095,16 +1139,12 @@ CONFIG_JFS_SECURITY=y | |||
| 1095 | # CONFIG_JFS_DEBUG is not set | 1139 | # CONFIG_JFS_DEBUG is not set |
| 1096 | # CONFIG_JFS_STATISTICS is not set | 1140 | # CONFIG_JFS_STATISTICS is not set |
| 1097 | CONFIG_FS_POSIX_ACL=y | 1141 | CONFIG_FS_POSIX_ACL=y |
| 1098 | |||
| 1099 | # | ||
| 1100 | # XFS support | ||
| 1101 | # | ||
| 1102 | CONFIG_XFS_FS=m | 1142 | CONFIG_XFS_FS=m |
| 1103 | CONFIG_XFS_EXPORT=y | 1143 | CONFIG_XFS_EXPORT=y |
| 1104 | # CONFIG_XFS_RT is not set | ||
| 1105 | # CONFIG_XFS_QUOTA is not set | 1144 | # CONFIG_XFS_QUOTA is not set |
| 1106 | CONFIG_XFS_SECURITY=y | 1145 | CONFIG_XFS_SECURITY=y |
| 1107 | CONFIG_XFS_POSIX_ACL=y | 1146 | CONFIG_XFS_POSIX_ACL=y |
| 1147 | # CONFIG_XFS_RT is not set | ||
| 1108 | # CONFIG_MINIX_FS is not set | 1148 | # CONFIG_MINIX_FS is not set |
| 1109 | # CONFIG_ROMFS_FS is not set | 1149 | # CONFIG_ROMFS_FS is not set |
| 1110 | CONFIG_INOTIFY=y | 1150 | CONFIG_INOTIFY=y |
| @@ -1112,6 +1152,7 @@ CONFIG_INOTIFY=y | |||
| 1112 | CONFIG_DNOTIFY=y | 1152 | CONFIG_DNOTIFY=y |
| 1113 | CONFIG_AUTOFS_FS=m | 1153 | CONFIG_AUTOFS_FS=m |
| 1114 | # CONFIG_AUTOFS4_FS is not set | 1154 | # CONFIG_AUTOFS4_FS is not set |
| 1155 | # CONFIG_FUSE_FS is not set | ||
| 1115 | 1156 | ||
| 1116 | # | 1157 | # |
| 1117 | # CD-ROM/DVD Filesystems | 1158 | # CD-ROM/DVD Filesystems |
| @@ -1139,14 +1180,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 1139 | CONFIG_PROC_FS=y | 1180 | CONFIG_PROC_FS=y |
| 1140 | CONFIG_PROC_KCORE=y | 1181 | CONFIG_PROC_KCORE=y |
| 1141 | CONFIG_SYSFS=y | 1182 | CONFIG_SYSFS=y |
| 1142 | CONFIG_DEVPTS_FS_XATTR=y | ||
| 1143 | CONFIG_DEVPTS_FS_SECURITY=y | ||
| 1144 | CONFIG_TMPFS=y | 1183 | CONFIG_TMPFS=y |
| 1145 | CONFIG_TMPFS_XATTR=y | ||
| 1146 | CONFIG_TMPFS_SECURITY=y | ||
| 1147 | CONFIG_HUGETLBFS=y | 1184 | CONFIG_HUGETLBFS=y |
| 1148 | CONFIG_HUGETLB_PAGE=y | 1185 | CONFIG_HUGETLB_PAGE=y |
| 1149 | CONFIG_RAMFS=y | 1186 | CONFIG_RAMFS=y |
| 1187 | # CONFIG_RELAYFS_FS is not set | ||
| 1150 | 1188 | ||
| 1151 | # | 1189 | # |
| 1152 | # Miscellaneous filesystems | 1190 | # Miscellaneous filesystems |
| @@ -1197,6 +1235,7 @@ CONFIG_CIFS_POSIX=y | |||
| 1197 | # CONFIG_NCP_FS is not set | 1235 | # CONFIG_NCP_FS is not set |
| 1198 | # CONFIG_CODA_FS is not set | 1236 | # CONFIG_CODA_FS is not set |
| 1199 | # CONFIG_AFS_FS is not set | 1237 | # CONFIG_AFS_FS is not set |
| 1238 | # CONFIG_9P_FS is not set | ||
| 1200 | 1239 | ||
| 1201 | # | 1240 | # |
| 1202 | # Partition Types | 1241 | # Partition Types |
| @@ -1261,6 +1300,7 @@ CONFIG_OPROFILE=y | |||
| 1261 | CONFIG_DEBUG_KERNEL=y | 1300 | CONFIG_DEBUG_KERNEL=y |
| 1262 | CONFIG_MAGIC_SYSRQ=y | 1301 | CONFIG_MAGIC_SYSRQ=y |
| 1263 | CONFIG_LOG_BUF_SHIFT=17 | 1302 | CONFIG_LOG_BUF_SHIFT=17 |
| 1303 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1264 | # CONFIG_SCHEDSTATS is not set | 1304 | # CONFIG_SCHEDSTATS is not set |
| 1265 | # CONFIG_DEBUG_SLAB is not set | 1305 | # CONFIG_DEBUG_SLAB is not set |
| 1266 | # CONFIG_DEBUG_SPINLOCK is not set | 1306 | # CONFIG_DEBUG_SPINLOCK is not set |
| @@ -1320,7 +1360,12 @@ CONFIG_CRYPTO_TEST=m | |||
| 1320 | # Library routines | 1360 | # Library routines |
| 1321 | # | 1361 | # |
| 1322 | CONFIG_CRC_CCITT=m | 1362 | CONFIG_CRC_CCITT=m |
| 1363 | # CONFIG_CRC16 is not set | ||
| 1323 | CONFIG_CRC32=y | 1364 | CONFIG_CRC32=y |
| 1324 | CONFIG_LIBCRC32C=m | 1365 | CONFIG_LIBCRC32C=m |
| 1325 | CONFIG_ZLIB_INFLATE=y | 1366 | CONFIG_ZLIB_INFLATE=y |
| 1326 | CONFIG_ZLIB_DEFLATE=m | 1367 | CONFIG_ZLIB_DEFLATE=m |
| 1368 | CONFIG_TEXTSEARCH=y | ||
| 1369 | CONFIG_TEXTSEARCH_KMP=m | ||
| 1370 | CONFIG_TEXTSEARCH_BM=m | ||
| 1371 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/ppc64/defconfig b/arch/ppc64/defconfig index 7cb4750bb7a9..37c157c93cef 100644 --- a/arch/ppc64/defconfig +++ b/arch/ppc64/defconfig | |||
| @@ -1,17 +1,17 @@ | |||
| 1 | # | 1 | # |
| 2 | # Automatically generated make config: don't edit | 2 | # Automatically generated make config: don't edit |
| 3 | # Linux kernel version: 2.6.13-rc6 | 3 | # Linux kernel version: 2.6.14-rc4 |
| 4 | # Mon Aug 8 14:16:54 2005 | 4 | # Thu Oct 20 08:28:33 2005 |
| 5 | # | 5 | # |
| 6 | CONFIG_64BIT=y | 6 | CONFIG_64BIT=y |
| 7 | CONFIG_MMU=y | 7 | CONFIG_MMU=y |
| 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y | 8 | CONFIG_RWSEM_XCHGADD_ALGORITHM=y |
| 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y | 9 | CONFIG_GENERIC_CALIBRATE_DELAY=y |
| 10 | CONFIG_GENERIC_ISA_DMA=y | 10 | CONFIG_GENERIC_ISA_DMA=y |
| 11 | CONFIG_HAVE_DEC_LOCK=y | ||
| 12 | CONFIG_EARLY_PRINTK=y | 11 | CONFIG_EARLY_PRINTK=y |
| 13 | CONFIG_COMPAT=y | 12 | CONFIG_COMPAT=y |
| 14 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y | 13 | CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y |
| 14 | CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||
| 15 | CONFIG_FORCE_MAX_ZONEORDER=13 | 15 | CONFIG_FORCE_MAX_ZONEORDER=13 |
| 16 | 16 | ||
| 17 | # | 17 | # |
| @@ -26,6 +26,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32 | |||
| 26 | # General setup | 26 | # General setup |
| 27 | # | 27 | # |
| 28 | CONFIG_LOCALVERSION="" | 28 | CONFIG_LOCALVERSION="" |
| 29 | CONFIG_LOCALVERSION_AUTO=y | ||
| 29 | CONFIG_SWAP=y | 30 | CONFIG_SWAP=y |
| 30 | CONFIG_SYSVIPC=y | 31 | CONFIG_SYSVIPC=y |
| 31 | CONFIG_POSIX_MQUEUE=y | 32 | CONFIG_POSIX_MQUEUE=y |
| @@ -37,6 +38,7 @@ CONFIG_KOBJECT_UEVENT=y | |||
| 37 | CONFIG_IKCONFIG=y | 38 | CONFIG_IKCONFIG=y |
| 38 | CONFIG_IKCONFIG_PROC=y | 39 | CONFIG_IKCONFIG_PROC=y |
| 39 | CONFIG_CPUSETS=y | 40 | CONFIG_CPUSETS=y |
| 41 | CONFIG_INITRAMFS_SOURCE="" | ||
| 40 | # CONFIG_EMBEDDED is not set | 42 | # CONFIG_EMBEDDED is not set |
| 41 | CONFIG_KALLSYMS=y | 43 | CONFIG_KALLSYMS=y |
| 42 | # CONFIG_KALLSYMS_ALL is not set | 44 | # CONFIG_KALLSYMS_ALL is not set |
| @@ -106,6 +108,7 @@ CONFIG_DISCONTIGMEM_MANUAL=y | |||
| 106 | CONFIG_DISCONTIGMEM=y | 108 | CONFIG_DISCONTIGMEM=y |
| 107 | CONFIG_FLAT_NODE_MEM_MAP=y | 109 | CONFIG_FLAT_NODE_MEM_MAP=y |
| 108 | CONFIG_NEED_MULTIPLE_NODES=y | 110 | CONFIG_NEED_MULTIPLE_NODES=y |
| 111 | # CONFIG_SPARSEMEM_STATIC is not set | ||
| 109 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y | 112 | CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y |
| 110 | CONFIG_NODES_SPAN_OTHER_NODES=y | 113 | CONFIG_NODES_SPAN_OTHER_NODES=y |
| 111 | # CONFIG_NUMA is not set | 114 | # CONFIG_NUMA is not set |
| @@ -126,19 +129,20 @@ CONFIG_RTAS_FLASH=m | |||
| 126 | CONFIG_SCANLOG=m | 129 | CONFIG_SCANLOG=m |
| 127 | CONFIG_LPARCFG=y | 130 | CONFIG_LPARCFG=y |
| 128 | CONFIG_SECCOMP=y | 131 | CONFIG_SECCOMP=y |
| 132 | CONFIG_BINFMT_ELF=y | ||
| 133 | CONFIG_BINFMT_MISC=m | ||
| 134 | CONFIG_HOTPLUG_CPU=y | ||
| 135 | CONFIG_PROC_DEVICETREE=y | ||
| 136 | # CONFIG_CMDLINE_BOOL is not set | ||
| 129 | CONFIG_ISA_DMA_API=y | 137 | CONFIG_ISA_DMA_API=y |
| 130 | 138 | ||
| 131 | # | 139 | # |
| 132 | # General setup | 140 | # Bus Options |
| 133 | # | 141 | # |
| 134 | CONFIG_PCI=y | 142 | CONFIG_PCI=y |
| 135 | CONFIG_PCI_DOMAINS=y | 143 | CONFIG_PCI_DOMAINS=y |
| 136 | CONFIG_BINFMT_ELF=y | ||
| 137 | CONFIG_BINFMT_MISC=m | ||
| 138 | # CONFIG_PCI_LEGACY_PROC is not set | 144 | # CONFIG_PCI_LEGACY_PROC is not set |
| 139 | # CONFIG_PCI_NAMES is not set | ||
| 140 | # CONFIG_PCI_DEBUG is not set | 145 | # CONFIG_PCI_DEBUG is not set |
| 141 | CONFIG_HOTPLUG_CPU=y | ||
| 142 | 146 | ||
| 143 | # | 147 | # |
| 144 | # PCCARD (PCMCIA/CardBus) support | 148 | # PCCARD (PCMCIA/CardBus) support |
| @@ -154,8 +158,6 @@ CONFIG_HOTPLUG_PCI=m | |||
| 154 | # CONFIG_HOTPLUG_PCI_SHPC is not set | 158 | # CONFIG_HOTPLUG_PCI_SHPC is not set |
| 155 | CONFIG_HOTPLUG_PCI_RPA=m | 159 | CONFIG_HOTPLUG_PCI_RPA=m |
| 156 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m | 160 | CONFIG_HOTPLUG_PCI_RPA_DLPAR=m |
| 157 | CONFIG_PROC_DEVICETREE=y | ||
| 158 | # CONFIG_CMDLINE_BOOL is not set | ||
| 159 | 161 | ||
| 160 | # | 162 | # |
| 161 | # Networking | 163 | # Networking |
| @@ -185,8 +187,8 @@ CONFIG_INET_AH=m | |||
| 185 | CONFIG_INET_ESP=m | 187 | CONFIG_INET_ESP=m |
| 186 | CONFIG_INET_IPCOMP=m | 188 | CONFIG_INET_IPCOMP=m |
| 187 | CONFIG_INET_TUNNEL=y | 189 | CONFIG_INET_TUNNEL=y |
| 188 | # CONFIG_IP_TCPDIAG is not set | 190 | CONFIG_INET_DIAG=y |
| 189 | # CONFIG_IP_TCPDIAG_IPV6 is not set | 191 | CONFIG_INET_TCP_DIAG=y |
| 190 | # CONFIG_TCP_CONG_ADVANCED is not set | 192 | # CONFIG_TCP_CONG_ADVANCED is not set |
| 191 | CONFIG_TCP_CONG_BIC=y | 193 | CONFIG_TCP_CONG_BIC=y |
| 192 | 194 | ||
| @@ -197,6 +199,9 @@ CONFIG_TCP_CONG_BIC=y | |||
| 197 | # CONFIG_IPV6 is not set | 199 | # CONFIG_IPV6 is not set |
| 198 | CONFIG_NETFILTER=y | 200 | CONFIG_NETFILTER=y |
| 199 | # CONFIG_NETFILTER_DEBUG is not set | 201 | # CONFIG_NETFILTER_DEBUG is not set |
| 202 | CONFIG_NETFILTER_NETLINK=y | ||
| 203 | CONFIG_NETFILTER_NETLINK_QUEUE=m | ||
| 204 | CONFIG_NETFILTER_NETLINK_LOG=m | ||
| 200 | 205 | ||
| 201 | # | 206 | # |
| 202 | # IP: Netfilter Configuration | 207 | # IP: Netfilter Configuration |
| @@ -204,11 +209,15 @@ CONFIG_NETFILTER=y | |||
| 204 | CONFIG_IP_NF_CONNTRACK=m | 209 | CONFIG_IP_NF_CONNTRACK=m |
| 205 | CONFIG_IP_NF_CT_ACCT=y | 210 | CONFIG_IP_NF_CT_ACCT=y |
| 206 | CONFIG_IP_NF_CONNTRACK_MARK=y | 211 | CONFIG_IP_NF_CONNTRACK_MARK=y |
| 212 | CONFIG_IP_NF_CONNTRACK_EVENTS=y | ||
| 213 | CONFIG_IP_NF_CONNTRACK_NETLINK=m | ||
| 207 | CONFIG_IP_NF_CT_PROTO_SCTP=m | 214 | CONFIG_IP_NF_CT_PROTO_SCTP=m |
| 208 | CONFIG_IP_NF_FTP=m | 215 | CONFIG_IP_NF_FTP=m |
| 209 | CONFIG_IP_NF_IRC=m | 216 | CONFIG_IP_NF_IRC=m |
| 217 | # CONFIG_IP_NF_NETBIOS_NS is not set | ||
| 210 | CONFIG_IP_NF_TFTP=m | 218 | CONFIG_IP_NF_TFTP=m |
| 211 | CONFIG_IP_NF_AMANDA=m | 219 | CONFIG_IP_NF_AMANDA=m |
| 220 | # CONFIG_IP_NF_PPTP is not set | ||
| 212 | CONFIG_IP_NF_QUEUE=m | 221 | CONFIG_IP_NF_QUEUE=m |
| 213 | CONFIG_IP_NF_IPTABLES=m | 222 | CONFIG_IP_NF_IPTABLES=m |
| 214 | CONFIG_IP_NF_MATCH_LIMIT=m | 223 | CONFIG_IP_NF_MATCH_LIMIT=m |
| @@ -232,14 +241,18 @@ CONFIG_IP_NF_MATCH_OWNER=m | |||
| 232 | CONFIG_IP_NF_MATCH_ADDRTYPE=m | 241 | CONFIG_IP_NF_MATCH_ADDRTYPE=m |
| 233 | CONFIG_IP_NF_MATCH_REALM=m | 242 | CONFIG_IP_NF_MATCH_REALM=m |
| 234 | CONFIG_IP_NF_MATCH_SCTP=m | 243 | CONFIG_IP_NF_MATCH_SCTP=m |
| 244 | CONFIG_IP_NF_MATCH_DCCP=m | ||
| 235 | CONFIG_IP_NF_MATCH_COMMENT=m | 245 | CONFIG_IP_NF_MATCH_COMMENT=m |
| 236 | CONFIG_IP_NF_MATCH_CONNMARK=m | 246 | CONFIG_IP_NF_MATCH_CONNMARK=m |
| 247 | CONFIG_IP_NF_MATCH_CONNBYTES=m | ||
| 237 | CONFIG_IP_NF_MATCH_HASHLIMIT=m | 248 | CONFIG_IP_NF_MATCH_HASHLIMIT=m |
| 249 | CONFIG_IP_NF_MATCH_STRING=m | ||
| 238 | CONFIG_IP_NF_FILTER=m | 250 | CONFIG_IP_NF_FILTER=m |
| 239 | CONFIG_IP_NF_TARGET_REJECT=m | 251 | CONFIG_IP_NF_TARGET_REJECT=m |
| 240 | CONFIG_IP_NF_TARGET_LOG=m | 252 | CONFIG_IP_NF_TARGET_LOG=m |
| 241 | CONFIG_IP_NF_TARGET_ULOG=m | 253 | CONFIG_IP_NF_TARGET_ULOG=m |
| 242 | CONFIG_IP_NF_TARGET_TCPMSS=m | 254 | CONFIG_IP_NF_TARGET_TCPMSS=m |
| 255 | CONFIG_IP_NF_TARGET_NFQUEUE=m | ||
| 243 | CONFIG_IP_NF_NAT=m | 256 | CONFIG_IP_NF_NAT=m |
| 244 | CONFIG_IP_NF_NAT_NEEDED=y | 257 | CONFIG_IP_NF_NAT_NEEDED=y |
| 245 | CONFIG_IP_NF_TARGET_MASQUERADE=m | 258 | CONFIG_IP_NF_TARGET_MASQUERADE=m |
| @@ -257,6 +270,7 @@ CONFIG_IP_NF_TARGET_ECN=m | |||
| 257 | CONFIG_IP_NF_TARGET_DSCP=m | 270 | CONFIG_IP_NF_TARGET_DSCP=m |
| 258 | CONFIG_IP_NF_TARGET_MARK=m | 271 | CONFIG_IP_NF_TARGET_MARK=m |
| 259 | CONFIG_IP_NF_TARGET_CLASSIFY=m | 272 | CONFIG_IP_NF_TARGET_CLASSIFY=m |
| 273 | CONFIG_IP_NF_TARGET_TTL=m | ||
| 260 | CONFIG_IP_NF_TARGET_CONNMARK=m | 274 | CONFIG_IP_NF_TARGET_CONNMARK=m |
| 261 | CONFIG_IP_NF_TARGET_CLUSTERIP=m | 275 | CONFIG_IP_NF_TARGET_CLUSTERIP=m |
| 262 | CONFIG_IP_NF_RAW=m | 276 | CONFIG_IP_NF_RAW=m |
| @@ -266,6 +280,11 @@ CONFIG_IP_NF_ARPFILTER=m | |||
| 266 | CONFIG_IP_NF_ARP_MANGLE=m | 280 | CONFIG_IP_NF_ARP_MANGLE=m |
| 267 | 281 | ||
| 268 | # | 282 | # |
| 283 | # DCCP Configuration (EXPERIMENTAL) | ||
| 284 | # | ||
| 285 | # CONFIG_IP_DCCP is not set | ||
| 286 | |||
| 287 | # | ||
| 269 | # SCTP Configuration (EXPERIMENTAL) | 288 | # SCTP Configuration (EXPERIMENTAL) |
| 270 | # | 289 | # |
| 271 | # CONFIG_IP_SCTP is not set | 290 | # CONFIG_IP_SCTP is not set |
| @@ -292,6 +311,7 @@ CONFIG_NET_CLS_ROUTE=y | |||
| 292 | # CONFIG_HAMRADIO is not set | 311 | # CONFIG_HAMRADIO is not set |
| 293 | # CONFIG_IRDA is not set | 312 | # CONFIG_IRDA is not set |
| 294 | # CONFIG_BT is not set | 313 | # CONFIG_BT is not set |
| 314 | # CONFIG_IEEE80211 is not set | ||
| 295 | 315 | ||
| 296 | # | 316 | # |
| 297 | # Device Drivers | 317 | # Device Drivers |
| @@ -306,6 +326,11 @@ CONFIG_FW_LOADER=y | |||
| 306 | # CONFIG_DEBUG_DRIVER is not set | 326 | # CONFIG_DEBUG_DRIVER is not set |
| 307 | 327 | ||
| 308 | # | 328 | # |
| 329 | # Connector - unified userspace <-> kernelspace linker | ||
| 330 | # | ||
| 331 | # CONFIG_CONNECTOR is not set | ||
| 332 | |||
| 333 | # | ||
| 309 | # Memory Technology Devices (MTD) | 334 | # Memory Technology Devices (MTD) |
| 310 | # | 335 | # |
| 311 | # CONFIG_MTD is not set | 336 | # CONFIG_MTD is not set |
| @@ -344,7 +369,6 @@ CONFIG_BLK_DEV_RAM=y | |||
| 344 | CONFIG_BLK_DEV_RAM_COUNT=16 | 369 | CONFIG_BLK_DEV_RAM_COUNT=16 |
| 345 | CONFIG_BLK_DEV_RAM_SIZE=65536 | 370 | CONFIG_BLK_DEV_RAM_SIZE=65536 |
| 346 | CONFIG_BLK_DEV_INITRD=y | 371 | CONFIG_BLK_DEV_INITRD=y |
| 347 | CONFIG_INITRAMFS_SOURCE="" | ||
| 348 | # CONFIG_CDROM_PKTCDVD is not set | 372 | # CONFIG_CDROM_PKTCDVD is not set |
| 349 | 373 | ||
| 350 | # | 374 | # |
| @@ -422,6 +446,7 @@ CONFIG_IDEDMA_AUTO=y | |||
| 422 | # | 446 | # |
| 423 | # SCSI device support | 447 | # SCSI device support |
| 424 | # | 448 | # |
| 449 | # CONFIG_RAID_ATTRS is not set | ||
| 425 | CONFIG_SCSI=y | 450 | CONFIG_SCSI=y |
| 426 | CONFIG_SCSI_PROC_FS=y | 451 | CONFIG_SCSI_PROC_FS=y |
| 427 | 452 | ||
| @@ -449,6 +474,7 @@ CONFIG_SCSI_CONSTANTS=y | |||
| 449 | CONFIG_SCSI_SPI_ATTRS=y | 474 | CONFIG_SCSI_SPI_ATTRS=y |
| 450 | CONFIG_SCSI_FC_ATTRS=y | 475 | CONFIG_SCSI_FC_ATTRS=y |
| 451 | CONFIG_SCSI_ISCSI_ATTRS=m | 476 | CONFIG_SCSI_ISCSI_ATTRS=m |
| 477 | # CONFIG_SCSI_SAS_ATTRS is not set | ||
| 452 | 478 | ||
| 453 | # | 479 | # |
| 454 | # SCSI low-level drivers | 480 | # SCSI low-level drivers |
| @@ -462,10 +488,12 @@ CONFIG_SCSI_ISCSI_ATTRS=m | |||
| 462 | # CONFIG_SCSI_AIC79XX is not set | 488 | # CONFIG_SCSI_AIC79XX is not set |
| 463 | # CONFIG_MEGARAID_NEWGEN is not set | 489 | # CONFIG_MEGARAID_NEWGEN is not set |
| 464 | # CONFIG_MEGARAID_LEGACY is not set | 490 | # CONFIG_MEGARAID_LEGACY is not set |
| 491 | # CONFIG_MEGARAID_SAS is not set | ||
| 465 | CONFIG_SCSI_SATA=y | 492 | CONFIG_SCSI_SATA=y |
| 466 | # CONFIG_SCSI_SATA_AHCI is not set | 493 | # CONFIG_SCSI_SATA_AHCI is not set |
| 467 | CONFIG_SCSI_SATA_SVW=y | 494 | CONFIG_SCSI_SATA_SVW=y |
| 468 | # CONFIG_SCSI_ATA_PIIX is not set | 495 | # CONFIG_SCSI_ATA_PIIX is not set |
| 496 | # CONFIG_SCSI_SATA_MV is not set | ||
| 469 | # CONFIG_SCSI_SATA_NV is not set | 497 | # CONFIG_SCSI_SATA_NV is not set |
| 470 | # CONFIG_SCSI_SATA_PROMISE is not set | 498 | # CONFIG_SCSI_SATA_PROMISE is not set |
| 471 | # CONFIG_SCSI_SATA_QSTOR is not set | 499 | # CONFIG_SCSI_SATA_QSTOR is not set |
| @@ -535,6 +563,7 @@ CONFIG_DM_MULTIPATH_EMC=m | |||
| 535 | # CONFIG_FUSION is not set | 563 | # CONFIG_FUSION is not set |
| 536 | # CONFIG_FUSION_SPI is not set | 564 | # CONFIG_FUSION_SPI is not set |
| 537 | # CONFIG_FUSION_FC is not set | 565 | # CONFIG_FUSION_FC is not set |
| 566 | # CONFIG_FUSION_SAS is not set | ||
| 538 | 567 | ||
| 539 | # | 568 | # |
| 540 | # IEEE 1394 (FireWire) support | 569 | # IEEE 1394 (FireWire) support |
| @@ -578,7 +607,6 @@ CONFIG_IEEE1394_AMDTP=m | |||
| 578 | # | 607 | # |
| 579 | CONFIG_ADB_PMU=y | 608 | CONFIG_ADB_PMU=y |
| 580 | CONFIG_PMAC_SMU=y | 609 | CONFIG_PMAC_SMU=y |
| 581 | # CONFIG_PMAC_BACKLIGHT is not set | ||
| 582 | CONFIG_THERM_PM72=y | 610 | CONFIG_THERM_PM72=y |
| 583 | 611 | ||
| 584 | # | 612 | # |
| @@ -596,12 +624,18 @@ CONFIG_TUN=m | |||
| 596 | # CONFIG_ARCNET is not set | 624 | # CONFIG_ARCNET is not set |
| 597 | 625 | ||
| 598 | # | 626 | # |
| 627 | # PHY device support | ||
| 628 | # | ||
| 629 | # CONFIG_PHYLIB is not set | ||
| 630 | |||
| 631 | # | ||
| 599 | # Ethernet (10 or 100Mbit) | 632 | # Ethernet (10 or 100Mbit) |
| 600 | # | 633 | # |
| 601 | CONFIG_NET_ETHERNET=y | 634 | CONFIG_NET_ETHERNET=y |
| 602 | CONFIG_MII=y | 635 | CONFIG_MII=y |
| 603 | # CONFIG_HAPPYMEAL is not set | 636 | # CONFIG_HAPPYMEAL is not set |
| 604 | CONFIG_SUNGEM=y | 637 | CONFIG_SUNGEM=y |
| 638 | # CONFIG_CASSINI is not set | ||
| 605 | CONFIG_NET_VENDOR_3COM=y | 639 | CONFIG_NET_VENDOR_3COM=y |
| 606 | CONFIG_VORTEX=y | 640 | CONFIG_VORTEX=y |
| 607 | # CONFIG_TYPHOON is not set | 641 | # CONFIG_TYPHOON is not set |
| @@ -630,6 +664,7 @@ CONFIG_E100=y | |||
| 630 | # CONFIG_EPIC100 is not set | 664 | # CONFIG_EPIC100 is not set |
| 631 | # CONFIG_SUNDANCE is not set | 665 | # CONFIG_SUNDANCE is not set |
| 632 | # CONFIG_VIA_RHINE is not set | 666 | # CONFIG_VIA_RHINE is not set |
| 667 | # CONFIG_NET_POCKET is not set | ||
| 633 | 668 | ||
| 634 | # | 669 | # |
| 635 | # Ethernet (1000 Mbit) | 670 | # Ethernet (1000 Mbit) |
| @@ -643,16 +678,19 @@ CONFIG_E1000=y | |||
| 643 | # CONFIG_HAMACHI is not set | 678 | # CONFIG_HAMACHI is not set |
| 644 | # CONFIG_YELLOWFIN is not set | 679 | # CONFIG_YELLOWFIN is not set |
| 645 | # CONFIG_R8169 is not set | 680 | # CONFIG_R8169 is not set |
| 681 | # CONFIG_SIS190 is not set | ||
| 646 | # CONFIG_SKGE is not set | 682 | # CONFIG_SKGE is not set |
| 647 | # CONFIG_SK98LIN is not set | 683 | # CONFIG_SK98LIN is not set |
| 648 | # CONFIG_VIA_VELOCITY is not set | 684 | # CONFIG_VIA_VELOCITY is not set |
| 649 | CONFIG_TIGON3=y | 685 | CONFIG_TIGON3=y |
| 650 | # CONFIG_BNX2 is not set | 686 | # CONFIG_BNX2 is not set |
| 687 | # CONFIG_SPIDER_NET is not set | ||
| 651 | # CONFIG_MV643XX_ETH is not set | 688 | # CONFIG_MV643XX_ETH is not set |
| 652 | 689 | ||
| 653 | # | 690 | # |
| 654 | # Ethernet (10000 Mbit) | 691 | # Ethernet (10000 Mbit) |
| 655 | # | 692 | # |
| 693 | # CONFIG_CHELSIO_T1 is not set | ||
| 656 | CONFIG_IXGB=m | 694 | CONFIG_IXGB=m |
| 657 | # CONFIG_IXGB_NAPI is not set | 695 | # CONFIG_IXGB_NAPI is not set |
| 658 | # CONFIG_S2IO is not set | 696 | # CONFIG_S2IO is not set |
| @@ -838,8 +876,8 @@ CONFIG_I2C_AMD8111=y | |||
| 838 | # CONFIG_I2C_I801 is not set | 876 | # CONFIG_I2C_I801 is not set |
| 839 | # CONFIG_I2C_I810 is not set | 877 | # CONFIG_I2C_I810 is not set |
| 840 | # CONFIG_I2C_PIIX4 is not set | 878 | # CONFIG_I2C_PIIX4 is not set |
| 841 | # CONFIG_I2C_ISA is not set | ||
| 842 | CONFIG_I2C_KEYWEST=y | 879 | CONFIG_I2C_KEYWEST=y |
| 880 | CONFIG_I2C_PMAC_SMU=y | ||
| 843 | # CONFIG_I2C_NFORCE2 is not set | 881 | # CONFIG_I2C_NFORCE2 is not set |
| 844 | # CONFIG_I2C_PARPORT is not set | 882 | # CONFIG_I2C_PARPORT is not set |
| 845 | # CONFIG_I2C_PARPORT_LIGHT is not set | 883 | # CONFIG_I2C_PARPORT_LIGHT is not set |
| @@ -854,7 +892,6 @@ CONFIG_I2C_KEYWEST=y | |||
| 854 | # CONFIG_I2C_VIAPRO is not set | 892 | # CONFIG_I2C_VIAPRO is not set |
| 855 | # CONFIG_I2C_VOODOO3 is not set | 893 | # CONFIG_I2C_VOODOO3 is not set |
| 856 | # CONFIG_I2C_PCA_ISA is not set | 894 | # CONFIG_I2C_PCA_ISA is not set |
| 857 | # CONFIG_I2C_SENSOR is not set | ||
| 858 | 895 | ||
| 859 | # | 896 | # |
| 860 | # Miscellaneous I2C Chip support | 897 | # Miscellaneous I2C Chip support |
| @@ -881,12 +918,17 @@ CONFIG_I2C_KEYWEST=y | |||
| 881 | # Hardware Monitoring support | 918 | # Hardware Monitoring support |
| 882 | # | 919 | # |
| 883 | # CONFIG_HWMON is not set | 920 | # CONFIG_HWMON is not set |
| 921 | # CONFIG_HWMON_VID is not set | ||
| 884 | 922 | ||
| 885 | # | 923 | # |
| 886 | # Misc devices | 924 | # Misc devices |
| 887 | # | 925 | # |
| 888 | 926 | ||
| 889 | # | 927 | # |
| 928 | # Multimedia Capabilities Port drivers | ||
| 929 | # | ||
| 930 | |||
| 931 | # | ||
| 890 | # Multimedia devices | 932 | # Multimedia devices |
| 891 | # | 933 | # |
| 892 | # CONFIG_VIDEO_DEV is not set | 934 | # CONFIG_VIDEO_DEV is not set |
| @@ -939,6 +981,7 @@ CONFIG_FB_RADEON_I2C=y | |||
| 939 | # CONFIG_FB_KYRO is not set | 981 | # CONFIG_FB_KYRO is not set |
| 940 | # CONFIG_FB_3DFX is not set | 982 | # CONFIG_FB_3DFX is not set |
| 941 | # CONFIG_FB_VOODOO1 is not set | 983 | # CONFIG_FB_VOODOO1 is not set |
| 984 | # CONFIG_FB_CYBLA is not set | ||
| 942 | # CONFIG_FB_TRIDENT is not set | 985 | # CONFIG_FB_TRIDENT is not set |
| 943 | # CONFIG_FB_S1D13XXX is not set | 986 | # CONFIG_FB_S1D13XXX is not set |
| 944 | # CONFIG_FB_VIRTUAL is not set | 987 | # CONFIG_FB_VIRTUAL is not set |
| @@ -1020,6 +1063,7 @@ CONFIG_USB_STORAGE=m | |||
| 1020 | # CONFIG_USB_STORAGE_SDDR09 is not set | 1063 | # CONFIG_USB_STORAGE_SDDR09 is not set |
| 1021 | # CONFIG_USB_STORAGE_SDDR55 is not set | 1064 | # CONFIG_USB_STORAGE_SDDR55 is not set |
| 1022 | # CONFIG_USB_STORAGE_JUMPSHOT is not set | 1065 | # CONFIG_USB_STORAGE_JUMPSHOT is not set |
| 1066 | # CONFIG_USB_STORAGE_ONETOUCH is not set | ||
| 1023 | 1067 | ||
| 1024 | # | 1068 | # |
| 1025 | # USB Input Devices | 1069 | # USB Input Devices |
| @@ -1036,9 +1080,11 @@ CONFIG_USB_HIDDEV=y | |||
| 1036 | # CONFIG_USB_MTOUCH is not set | 1080 | # CONFIG_USB_MTOUCH is not set |
| 1037 | # CONFIG_USB_ITMTOUCH is not set | 1081 | # CONFIG_USB_ITMTOUCH is not set |
| 1038 | # CONFIG_USB_EGALAX is not set | 1082 | # CONFIG_USB_EGALAX is not set |
| 1083 | # CONFIG_USB_YEALINK is not set | ||
| 1039 | # CONFIG_USB_XPAD is not set | 1084 | # CONFIG_USB_XPAD is not set |
| 1040 | # CONFIG_USB_ATI_REMOTE is not set | 1085 | # CONFIG_USB_ATI_REMOTE is not set |
| 1041 | # CONFIG_USB_KEYSPAN_REMOTE is not set | 1086 | # CONFIG_USB_KEYSPAN_REMOTE is not set |
| 1087 | # CONFIG_USB_APPLETOUCH is not set | ||
| 1042 | 1088 | ||
| 1043 | # | 1089 | # |
| 1044 | # USB Imaging devices | 1090 | # USB Imaging devices |
| @@ -1111,7 +1157,8 @@ CONFIG_USB_PEGASUS=y | |||
| 1111 | # InfiniBand support | 1157 | # InfiniBand support |
| 1112 | # | 1158 | # |
| 1113 | CONFIG_INFINIBAND=m | 1159 | CONFIG_INFINIBAND=m |
| 1114 | CONFIG_INFINIBAND_USER_VERBS=m | 1160 | # CONFIG_INFINIBAND_USER_MAD is not set |
| 1161 | # CONFIG_INFINIBAND_USER_ACCESS is not set | ||
| 1115 | CONFIG_INFINIBAND_MTHCA=m | 1162 | CONFIG_INFINIBAND_MTHCA=m |
| 1116 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set | 1163 | # CONFIG_INFINIBAND_MTHCA_DEBUG is not set |
| 1117 | CONFIG_INFINIBAND_IPOIB=m | 1164 | CONFIG_INFINIBAND_IPOIB=m |
| @@ -1149,16 +1196,12 @@ CONFIG_JFS_SECURITY=y | |||
| 1149 | # CONFIG_JFS_DEBUG is not set | 1196 | # CONFIG_JFS_DEBUG is not set |
| 1150 | # CONFIG_JFS_STATISTICS is not set | 1197 | # CONFIG_JFS_STATISTICS is not set |
| 1151 | CONFIG_FS_POSIX_ACL=y | 1198 | CONFIG_FS_POSIX_ACL=y |
| 1152 | |||
| 1153 | # | ||
| 1154 | # XFS support | ||
| 1155 | # | ||
| 1156 | CONFIG_XFS_FS=m | 1199 | CONFIG_XFS_FS=m |
| 1157 | CONFIG_XFS_EXPORT=y | 1200 | CONFIG_XFS_EXPORT=y |
| 1158 | # CONFIG_XFS_RT is not set | ||
| 1159 | # CONFIG_XFS_QUOTA is not set | 1201 | # CONFIG_XFS_QUOTA is not set |
| 1160 | CONFIG_XFS_SECURITY=y | 1202 | CONFIG_XFS_SECURITY=y |
| 1161 | CONFIG_XFS_POSIX_ACL=y | 1203 | CONFIG_XFS_POSIX_ACL=y |
| 1204 | # CONFIG_XFS_RT is not set | ||
| 1162 | # CONFIG_MINIX_FS is not set | 1205 | # CONFIG_MINIX_FS is not set |
| 1163 | # CONFIG_ROMFS_FS is not set | 1206 | # CONFIG_ROMFS_FS is not set |
| 1164 | CONFIG_INOTIFY=y | 1207 | CONFIG_INOTIFY=y |
| @@ -1166,6 +1209,7 @@ CONFIG_INOTIFY=y | |||
| 1166 | CONFIG_DNOTIFY=y | 1209 | CONFIG_DNOTIFY=y |
| 1167 | CONFIG_AUTOFS_FS=y | 1210 | CONFIG_AUTOFS_FS=y |
| 1168 | # CONFIG_AUTOFS4_FS is not set | 1211 | # CONFIG_AUTOFS4_FS is not set |
| 1212 | # CONFIG_FUSE_FS is not set | ||
| 1169 | 1213 | ||
| 1170 | # | 1214 | # |
| 1171 | # CD-ROM/DVD Filesystems | 1215 | # CD-ROM/DVD Filesystems |
| @@ -1192,14 +1236,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" | |||
| 1192 | CONFIG_PROC_FS=y | 1236 | CONFIG_PROC_FS=y |
| 1193 | CONFIG_PROC_KCORE=y | 1237 | CONFIG_PROC_KCORE=y |
| 1194 | CONFIG_SYSFS=y | 1238 | CONFIG_SYSFS=y |
| 1195 | CONFIG_DEVPTS_FS_XATTR=y | ||
| 1196 | CONFIG_DEVPTS_FS_SECURITY=y | ||
| 1197 | CONFIG_TMPFS=y | 1239 | CONFIG_TMPFS=y |
| 1198 | CONFIG_TMPFS_XATTR=y | ||
| 1199 | CONFIG_TMPFS_SECURITY=y | ||
| 1200 | CONFIG_HUGETLBFS=y | 1240 | CONFIG_HUGETLBFS=y |
| 1201 | CONFIG_HUGETLB_PAGE=y | 1241 | CONFIG_HUGETLB_PAGE=y |
| 1202 | CONFIG_RAMFS=y | 1242 | CONFIG_RAMFS=y |
| 1243 | # CONFIG_RELAYFS_FS is not set | ||
| 1203 | 1244 | ||
| 1204 | # | 1245 | # |
| 1205 | # Miscellaneous filesystems | 1246 | # Miscellaneous filesystems |
| @@ -1250,6 +1291,7 @@ CONFIG_CIFS_POSIX=y | |||
| 1250 | # CONFIG_NCP_FS is not set | 1291 | # CONFIG_NCP_FS is not set |
| 1251 | # CONFIG_CODA_FS is not set | 1292 | # CONFIG_CODA_FS is not set |
| 1252 | # CONFIG_AFS_FS is not set | 1293 | # CONFIG_AFS_FS is not set |
| 1294 | # CONFIG_9P_FS is not set | ||
| 1253 | 1295 | ||
| 1254 | # | 1296 | # |
| 1255 | # Partition Types | 1297 | # Partition Types |
| @@ -1328,6 +1370,7 @@ CONFIG_OPROFILE=y | |||
| 1328 | CONFIG_DEBUG_KERNEL=y | 1370 | CONFIG_DEBUG_KERNEL=y |
| 1329 | CONFIG_MAGIC_SYSRQ=y | 1371 | CONFIG_MAGIC_SYSRQ=y |
| 1330 | CONFIG_LOG_BUF_SHIFT=17 | 1372 | CONFIG_LOG_BUF_SHIFT=17 |
| 1373 | CONFIG_DETECT_SOFTLOCKUP=y | ||
| 1331 | # CONFIG_SCHEDSTATS is not set | 1374 | # CONFIG_SCHEDSTATS is not set |
| 1332 | # CONFIG_DEBUG_SLAB is not set | 1375 | # CONFIG_DEBUG_SLAB is not set |
| 1333 | # CONFIG_DEBUG_SPINLOCK is not set | 1376 | # CONFIG_DEBUG_SPINLOCK is not set |
| @@ -1387,7 +1430,12 @@ CONFIG_CRYPTO_TEST=m | |||
| 1387 | # Library routines | 1430 | # Library routines |
| 1388 | # | 1431 | # |
| 1389 | CONFIG_CRC_CCITT=m | 1432 | CONFIG_CRC_CCITT=m |
| 1433 | # CONFIG_CRC16 is not set | ||
| 1390 | CONFIG_CRC32=y | 1434 | CONFIG_CRC32=y |
| 1391 | CONFIG_LIBCRC32C=m | 1435 | CONFIG_LIBCRC32C=m |
| 1392 | CONFIG_ZLIB_INFLATE=y | 1436 | CONFIG_ZLIB_INFLATE=y |
| 1393 | CONFIG_ZLIB_DEFLATE=m | 1437 | CONFIG_ZLIB_DEFLATE=m |
| 1438 | CONFIG_TEXTSEARCH=y | ||
| 1439 | CONFIG_TEXTSEARCH_KMP=m | ||
| 1440 | CONFIG_TEXTSEARCH_BM=m | ||
| 1441 | CONFIG_TEXTSEARCH_FSM=m | ||
diff --git a/arch/ppc64/kernel/bpa_iommu.c b/arch/ppc64/kernel/bpa_iommu.c index 507eb9d0223f..5f2460090e03 100644 --- a/arch/ppc64/kernel/bpa_iommu.c +++ b/arch/ppc64/kernel/bpa_iommu.c | |||
| @@ -310,7 +310,7 @@ static void bpa_map_iommu(void) | |||
| 310 | 310 | ||
| 311 | 311 | ||
| 312 | static void *bpa_alloc_coherent(struct device *hwdev, size_t size, | 312 | static void *bpa_alloc_coherent(struct device *hwdev, size_t size, |
| 313 | dma_addr_t *dma_handle, unsigned int __nocast flag) | 313 | dma_addr_t *dma_handle, gfp_t flag) |
| 314 | { | 314 | { |
| 315 | void *ret; | 315 | void *ret; |
| 316 | 316 | ||
diff --git a/arch/ppc64/kernel/dma.c b/arch/ppc64/kernel/dma.c index 4da8e31b2b61..7c3419656ccc 100644 --- a/arch/ppc64/kernel/dma.c +++ b/arch/ppc64/kernel/dma.c | |||
| @@ -53,7 +53,7 @@ int dma_set_mask(struct device *dev, u64 dma_mask) | |||
| 53 | EXPORT_SYMBOL(dma_set_mask); | 53 | EXPORT_SYMBOL(dma_set_mask); |
| 54 | 54 | ||
| 55 | void *dma_alloc_coherent(struct device *dev, size_t size, | 55 | void *dma_alloc_coherent(struct device *dev, size_t size, |
| 56 | dma_addr_t *dma_handle, unsigned int __nocast flag) | 56 | dma_addr_t *dma_handle, gfp_t flag) |
| 57 | { | 57 | { |
| 58 | struct dma_mapping_ops *dma_ops = get_dma_ops(dev); | 58 | struct dma_mapping_ops *dma_ops = get_dma_ops(dev); |
| 59 | 59 | ||
diff --git a/arch/ppc64/kernel/iSeries_htab.c b/arch/ppc64/kernel/iSeries_htab.c index 2192055a90a0..073b76661747 100644 --- a/arch/ppc64/kernel/iSeries_htab.c +++ b/arch/ppc64/kernel/iSeries_htab.c | |||
| @@ -66,7 +66,7 @@ static long iSeries_hpte_insert(unsigned long hpte_group, unsigned long va, | |||
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | if (slot < 0) { /* MSB set means secondary group */ | 68 | if (slot < 0) { /* MSB set means secondary group */ |
| 69 | vflags |= HPTE_V_VALID; | 69 | vflags |= HPTE_V_SECONDARY; |
| 70 | secondary = 1; | 70 | secondary = 1; |
| 71 | slot &= 0x7fffffffffffffff; | 71 | slot &= 0x7fffffffffffffff; |
| 72 | } | 72 | } |
diff --git a/arch/ppc64/kernel/iommu.c b/arch/ppc64/kernel/iommu.c index 9032b6bfe036..4d9b4388918b 100644 --- a/arch/ppc64/kernel/iommu.c +++ b/arch/ppc64/kernel/iommu.c | |||
| @@ -519,7 +519,7 @@ void iommu_unmap_single(struct iommu_table *tbl, dma_addr_t dma_handle, | |||
| 519 | * to the dma address (mapping) of the first page. | 519 | * to the dma address (mapping) of the first page. |
| 520 | */ | 520 | */ |
| 521 | void *iommu_alloc_coherent(struct iommu_table *tbl, size_t size, | 521 | void *iommu_alloc_coherent(struct iommu_table *tbl, size_t size, |
| 522 | dma_addr_t *dma_handle, unsigned int __nocast flag) | 522 | dma_addr_t *dma_handle, gfp_t flag) |
| 523 | { | 523 | { |
| 524 | void *ret = NULL; | 524 | void *ret = NULL; |
| 525 | dma_addr_t mapping; | 525 | dma_addr_t mapping; |
diff --git a/arch/ppc64/kernel/module.c b/arch/ppc64/kernel/module.c index c683bf88e690..928b8581fcb0 100644 --- a/arch/ppc64/kernel/module.c +++ b/arch/ppc64/kernel/module.c | |||
| @@ -341,6 +341,19 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, | |||
| 341 | *(unsigned long *)location = my_r2(sechdrs, me); | 341 | *(unsigned long *)location = my_r2(sechdrs, me); |
| 342 | break; | 342 | break; |
| 343 | 343 | ||
| 344 | case R_PPC64_TOC16: | ||
| 345 | /* Subtact TOC pointer */ | ||
| 346 | value -= my_r2(sechdrs, me); | ||
| 347 | if (value + 0x8000 > 0xffff) { | ||
| 348 | printk("%s: bad TOC16 relocation (%lu)\n", | ||
| 349 | me->name, value); | ||
| 350 | return -ENOEXEC; | ||
| 351 | } | ||
| 352 | *((uint16_t *) location) | ||
| 353 | = (*((uint16_t *) location) & ~0xffff) | ||
| 354 | | (value & 0xffff); | ||
| 355 | break; | ||
| 356 | |||
| 344 | case R_PPC64_TOC16_DS: | 357 | case R_PPC64_TOC16_DS: |
| 345 | /* Subtact TOC pointer */ | 358 | /* Subtact TOC pointer */ |
| 346 | value -= my_r2(sechdrs, me); | 359 | value -= my_r2(sechdrs, me); |
diff --git a/arch/ppc64/kernel/mpic.c b/arch/ppc64/kernel/mpic.c index cc262a05ddb4..5f5bc73754d9 100644 --- a/arch/ppc64/kernel/mpic.c +++ b/arch/ppc64/kernel/mpic.c | |||
| @@ -506,8 +506,8 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr, | |||
| 506 | mpic->senses_count = senses_count; | 506 | mpic->senses_count = senses_count; |
| 507 | 507 | ||
| 508 | /* Map the global registers */ | 508 | /* Map the global registers */ |
| 509 | mpic->gregs = ioremap(phys_addr + MPIC_GREG_BASE, 0x1000); | 509 | mpic->gregs = ioremap(phys_addr + MPIC_GREG_BASE, 0x2000); |
| 510 | mpic->tmregs = mpic->gregs + (MPIC_TIMER_BASE >> 2); | 510 | mpic->tmregs = mpic->gregs + ((MPIC_TIMER_BASE - MPIC_GREG_BASE) >> 2); |
| 511 | BUG_ON(mpic->gregs == NULL); | 511 | BUG_ON(mpic->gregs == NULL); |
| 512 | 512 | ||
| 513 | /* Reset */ | 513 | /* Reset */ |
diff --git a/arch/ppc64/kernel/pSeries_pci.c b/arch/ppc64/kernel/pSeries_pci.c index 1f5f141fb7a1..928f8febdb3b 100644 --- a/arch/ppc64/kernel/pSeries_pci.c +++ b/arch/ppc64/kernel/pSeries_pci.c | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | 32 | ||
| 33 | #include "pci.h" | 33 | #include "pci.h" |
| 34 | 34 | ||
| 35 | static int __initdata s7a_workaround = -1; | 35 | static int __devinitdata s7a_workaround = -1; |
| 36 | 36 | ||
| 37 | #if 0 | 37 | #if 0 |
| 38 | void pcibios_name_device(struct pci_dev *dev) | 38 | void pcibios_name_device(struct pci_dev *dev) |
| @@ -60,7 +60,7 @@ void pcibios_name_device(struct pci_dev *dev) | |||
| 60 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_name_device); | 60 | DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_name_device); |
| 61 | #endif | 61 | #endif |
| 62 | 62 | ||
| 63 | static void __init check_s7a(void) | 63 | static void __devinit check_s7a(void) |
| 64 | { | 64 | { |
| 65 | struct device_node *root; | 65 | struct device_node *root; |
| 66 | char *model; | 66 | char *model; |
diff --git a/arch/ppc64/kernel/pci_direct_iommu.c b/arch/ppc64/kernel/pci_direct_iommu.c index b8f7f58824f4..54055c81017a 100644 --- a/arch/ppc64/kernel/pci_direct_iommu.c +++ b/arch/ppc64/kernel/pci_direct_iommu.c | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | #include "pci.h" | 31 | #include "pci.h" |
| 32 | 32 | ||
| 33 | static void *pci_direct_alloc_coherent(struct device *hwdev, size_t size, | 33 | static void *pci_direct_alloc_coherent(struct device *hwdev, size_t size, |
| 34 | dma_addr_t *dma_handle, unsigned int __nocast flag) | 34 | dma_addr_t *dma_handle, gfp_t flag) |
| 35 | { | 35 | { |
| 36 | void *ret; | 36 | void *ret; |
| 37 | 37 | ||
diff --git a/arch/ppc64/kernel/pci_iommu.c b/arch/ppc64/kernel/pci_iommu.c index 14647e09c9cd..d9e33b7d4203 100644 --- a/arch/ppc64/kernel/pci_iommu.c +++ b/arch/ppc64/kernel/pci_iommu.c | |||
| @@ -76,7 +76,7 @@ static inline struct iommu_table *devnode_table(struct device *dev) | |||
| 76 | * to the dma address (mapping) of the first page. | 76 | * to the dma address (mapping) of the first page. |
| 77 | */ | 77 | */ |
| 78 | static void *pci_iommu_alloc_coherent(struct device *hwdev, size_t size, | 78 | static void *pci_iommu_alloc_coherent(struct device *hwdev, size_t size, |
| 79 | dma_addr_t *dma_handle, unsigned int __nocast flag) | 79 | dma_addr_t *dma_handle, gfp_t flag) |
| 80 | { | 80 | { |
| 81 | return iommu_alloc_coherent(devnode_table(hwdev), size, dma_handle, | 81 | return iommu_alloc_coherent(devnode_table(hwdev), size, dma_handle, |
| 82 | flag); | 82 | flag); |
diff --git a/arch/ppc64/kernel/pmac_setup.c b/arch/ppc64/kernel/pmac_setup.c index 25755252067a..fa8121d53b89 100644 --- a/arch/ppc64/kernel/pmac_setup.c +++ b/arch/ppc64/kernel/pmac_setup.c | |||
| @@ -115,7 +115,7 @@ static void __pmac pmac_show_cpuinfo(struct seq_file *m) | |||
| 115 | 115 | ||
| 116 | /* find motherboard type */ | 116 | /* find motherboard type */ |
| 117 | seq_printf(m, "machine\t\t: "); | 117 | seq_printf(m, "machine\t\t: "); |
| 118 | np = find_devices("device-tree"); | 118 | np = of_find_node_by_path("/"); |
| 119 | if (np != NULL) { | 119 | if (np != NULL) { |
| 120 | pp = (char *) get_property(np, "model", NULL); | 120 | pp = (char *) get_property(np, "model", NULL); |
| 121 | if (pp != NULL) | 121 | if (pp != NULL) |
| @@ -133,6 +133,7 @@ static void __pmac pmac_show_cpuinfo(struct seq_file *m) | |||
| 133 | } | 133 | } |
| 134 | seq_printf(m, "\n"); | 134 | seq_printf(m, "\n"); |
| 135 | } | 135 | } |
| 136 | of_node_put(np); | ||
| 136 | } else | 137 | } else |
| 137 | seq_printf(m, "PowerMac\n"); | 138 | seq_printf(m, "PowerMac\n"); |
| 138 | 139 | ||
diff --git a/arch/ppc64/kernel/time.c b/arch/ppc64/kernel/time.c index 9939c206afa4..b56c6a324e17 100644 --- a/arch/ppc64/kernel/time.c +++ b/arch/ppc64/kernel/time.c | |||
| @@ -870,7 +870,7 @@ void div128_by_32( unsigned long dividend_high, unsigned long dividend_low, | |||
| 870 | rb = ((ra + b) - (x * divisor)) << 32; | 870 | rb = ((ra + b) - (x * divisor)) << 32; |
| 871 | 871 | ||
| 872 | y = (rb + c)/divisor; | 872 | y = (rb + c)/divisor; |
| 873 | rc = ((rb + b) - (y * divisor)) << 32; | 873 | rc = ((rb + c) - (y * divisor)) << 32; |
| 874 | 874 | ||
| 875 | z = (rc + d)/divisor; | 875 | z = (rc + d)/divisor; |
| 876 | 876 | ||
diff --git a/arch/ppc64/kernel/vdso32/gettimeofday.S b/arch/ppc64/kernel/vdso32/gettimeofday.S index 07f1c1c650c8..e243c1d24af7 100644 --- a/arch/ppc64/kernel/vdso32/gettimeofday.S +++ b/arch/ppc64/kernel/vdso32/gettimeofday.S | |||
| @@ -109,7 +109,7 @@ __do_get_xsec: | |||
| 109 | lwz r6,(CFG_TB_TO_XS+4)(r9) | 109 | lwz r6,(CFG_TB_TO_XS+4)(r9) |
| 110 | mulhwu r4,r7,r5 | 110 | mulhwu r4,r7,r5 |
| 111 | mulhwu r6,r7,r6 | 111 | mulhwu r6,r7,r6 |
| 112 | mullw r6,r7,r5 | 112 | mullw r0,r7,r5 |
| 113 | addc r6,r6,r0 | 113 | addc r6,r6,r0 |
| 114 | 114 | ||
| 115 | /* At this point, we have the scaled xsec value in r4 + XER:CA | 115 | /* At this point, we have the scaled xsec value in r4 + XER:CA |
diff --git a/arch/ppc64/kernel/vio.c b/arch/ppc64/kernel/vio.c index c90e1dd875ce..0e555b7a6587 100644 --- a/arch/ppc64/kernel/vio.c +++ b/arch/ppc64/kernel/vio.c | |||
| @@ -218,7 +218,7 @@ static void vio_unmap_sg(struct device *dev, struct scatterlist *sglist, | |||
| 218 | } | 218 | } |
| 219 | 219 | ||
| 220 | static void *vio_alloc_coherent(struct device *dev, size_t size, | 220 | static void *vio_alloc_coherent(struct device *dev, size_t size, |
| 221 | dma_addr_t *dma_handle, unsigned int __nocast flag) | 221 | dma_addr_t *dma_handle, gfp_t flag) |
| 222 | { | 222 | { |
| 223 | return iommu_alloc_coherent(to_vio_dev(dev)->iommu_table, size, | 223 | return iommu_alloc_coherent(to_vio_dev(dev)->iommu_table, size, |
| 224 | dma_handle, flag); | 224 | dma_handle, flag); |
diff --git a/arch/ppc64/mm/init.c b/arch/ppc64/mm/init.c index c2157c9c3acb..be64b157afce 100644 --- a/arch/ppc64/mm/init.c +++ b/arch/ppc64/mm/init.c | |||
| @@ -799,8 +799,7 @@ void update_mmu_cache(struct vm_area_struct *vma, unsigned long ea, | |||
| 799 | if (cpus_equal(vma->vm_mm->cpu_vm_mask, tmp)) | 799 | if (cpus_equal(vma->vm_mm->cpu_vm_mask, tmp)) |
| 800 | local = 1; | 800 | local = 1; |
| 801 | 801 | ||
| 802 | __hash_page(ea, pte_val(pte) & (_PAGE_USER|_PAGE_RW), vsid, ptep, | 802 | __hash_page(ea, 0, vsid, ptep, 0x300, local); |
| 803 | 0x300, local); | ||
| 804 | local_irq_restore(flags); | 803 | local_irq_restore(flags); |
| 805 | } | 804 | } |
| 806 | 805 | ||
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index 56a39d69e080..5ecefc02896a 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/time.h> | 22 | #include <linux/time.h> |
| 23 | #include <linux/timex.h> | 23 | #include <linux/timex.h> |
| 24 | #include <linux/sched.h> | 24 | #include <linux/sched.h> |
| 25 | #include <linux/module.h> | ||
| 25 | 26 | ||
| 26 | #include <asm/atomic.h> | 27 | #include <asm/atomic.h> |
| 27 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
| @@ -39,6 +40,8 @@ struct sh_cpuinfo cpu_data[NR_CPUS]; | |||
| 39 | extern void per_cpu_trap_init(void); | 40 | extern void per_cpu_trap_init(void); |
| 40 | 41 | ||
| 41 | cpumask_t cpu_possible_map; | 42 | cpumask_t cpu_possible_map; |
| 43 | EXPORT_SYMBOL(cpu_possible_map); | ||
| 44 | |||
| 42 | cpumask_t cpu_online_map; | 45 | cpumask_t cpu_online_map; |
| 43 | static atomic_t cpus_booted = ATOMIC_INIT(0); | 46 | static atomic_t cpus_booted = ATOMIC_INIT(0); |
| 44 | 47 | ||
diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index aba05394d30a..6537445dac0e 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig | |||
| @@ -25,62 +25,6 @@ source "init/Kconfig" | |||
| 25 | 25 | ||
| 26 | menu "General machine setup" | 26 | menu "General machine setup" |
| 27 | 27 | ||
| 28 | config VT | ||
| 29 | bool | ||
| 30 | select INPUT | ||
| 31 | default y | ||
| 32 | ---help--- | ||
| 33 | If you say Y here, you will get support for terminal devices with | ||
| 34 | display and keyboard devices. These are called "virtual" because you | ||
| 35 | can run several virtual terminals (also called virtual consoles) on | ||
| 36 | one physical terminal. This is rather useful, for example one | ||
| 37 | virtual terminal can collect system messages and warnings, another | ||
| 38 | one can be used for a text-mode user session, and a third could run | ||
| 39 | an X session, all in parallel. Switching between virtual terminals | ||
| 40 | is done with certain key combinations, usually Alt-<function key>. | ||
| 41 | |||
| 42 | The setterm command ("man setterm") can be used to change the | ||
| 43 | properties (such as colors or beeping) of a virtual terminal. The | ||
| 44 | man page console_codes(4) ("man console_codes") contains the special | ||
| 45 | character sequences that can be used to change those properties | ||
| 46 | directly. The fonts used on virtual terminals can be changed with | ||
| 47 | the setfont ("man setfont") command and the key bindings are defined | ||
| 48 | with the loadkeys ("man loadkeys") command. | ||
| 49 | |||
| 50 | You need at least one virtual terminal device in order to make use | ||
| 51 | of your keyboard and monitor. Therefore, only people configuring an | ||
| 52 | embedded system would want to say N here in order to save some | ||
| 53 | memory; the only way to log into such a system is then via a serial | ||
| 54 | or network connection. | ||
| 55 | |||
| 56 | If unsure, say Y, or else you won't be able to do much with your new | ||
| 57 | shiny Linux system :-) | ||
| 58 | |||
| 59 | config VT_CONSOLE | ||
| 60 | bool | ||
| 61 | default y | ||
| 62 | ---help--- | ||
| 63 | The system console is the device which receives all kernel messages | ||
| 64 | and warnings and which allows logins in single user mode. If you | ||
| 65 | answer Y here, a virtual terminal (the device used to interact with | ||
| 66 | a physical terminal) can be used as system console. This is the most | ||
| 67 | common mode of operations, so you should say Y here unless you want | ||
| 68 | the kernel messages be output only to a serial port (in which case | ||
| 69 | you should say Y to "Console on serial port", below). | ||
| 70 | |||
| 71 | If you do say Y here, by default the currently visible virtual | ||
| 72 | terminal (/dev/tty0) will be used as system console. You can change | ||
| 73 | that with a kernel command line option such as "console=tty3" which | ||
| 74 | would use the third virtual terminal as system console. (Try "man | ||
| 75 | bootparam" or see the documentation of your boot loader (lilo or | ||
| 76 | loadlin) about how to pass options to the kernel at boot time.) | ||
| 77 | |||
| 78 | If unsure, say Y. | ||
| 79 | |||
| 80 | config HW_CONSOLE | ||
| 81 | bool | ||
| 82 | default y | ||
| 83 | |||
| 84 | config SMP | 28 | config SMP |
| 85 | bool "Symmetric multi-processing support (does not work on sun4/sun4c)" | 29 | bool "Symmetric multi-processing support (does not work on sun4/sun4c)" |
| 86 | depends on BROKEN | 30 | depends on BROKEN |
diff --git a/arch/sparc64/kernel/dtlb_base.S b/arch/sparc64/kernel/dtlb_base.S index 702d349c1e88..6528786840c0 100644 --- a/arch/sparc64/kernel/dtlb_base.S +++ b/arch/sparc64/kernel/dtlb_base.S | |||
| @@ -53,19 +53,18 @@ | |||
| 53 | * be guaranteed to be 0 ... mmu_context.h does guarantee this | 53 | * be guaranteed to be 0 ... mmu_context.h does guarantee this |
| 54 | * by only using 10 bits in the hwcontext value. | 54 | * by only using 10 bits in the hwcontext value. |
| 55 | */ | 55 | */ |
| 56 | #define CREATE_VPTE_OFFSET1(r1, r2) | 56 | #define CREATE_VPTE_OFFSET1(r1, r2) nop |
| 57 | #define CREATE_VPTE_OFFSET2(r1, r2) \ | 57 | #define CREATE_VPTE_OFFSET2(r1, r2) \ |
| 58 | srax r1, 10, r2 | 58 | srax r1, 10, r2 |
| 59 | #define CREATE_VPTE_NOP nop | ||
| 60 | #else | 59 | #else |
| 61 | #define CREATE_VPTE_OFFSET1(r1, r2) \ | 60 | #define CREATE_VPTE_OFFSET1(r1, r2) \ |
| 62 | srax r1, PAGE_SHIFT, r2 | 61 | srax r1, PAGE_SHIFT, r2 |
| 63 | #define CREATE_VPTE_OFFSET2(r1, r2) \ | 62 | #define CREATE_VPTE_OFFSET2(r1, r2) \ |
| 64 | sllx r2, 3, r2 | 63 | sllx r2, 3, r2 |
| 65 | #define CREATE_VPTE_NOP | ||
| 66 | #endif | 64 | #endif |
| 67 | 65 | ||
| 68 | /* DTLB ** ICACHE line 1: Quick user TLB misses */ | 66 | /* DTLB ** ICACHE line 1: Quick user TLB misses */ |
| 67 | mov TLB_SFSR, %g1 | ||
| 69 | ldxa [%g1 + %g1] ASI_DMMU, %g4 ! Get TAG_ACCESS | 68 | ldxa [%g1 + %g1] ASI_DMMU, %g4 ! Get TAG_ACCESS |
| 70 | andcc %g4, TAG_CONTEXT_BITS, %g0 ! From Nucleus? | 69 | andcc %g4, TAG_CONTEXT_BITS, %g0 ! From Nucleus? |
| 71 | from_tl1_trap: | 70 | from_tl1_trap: |
| @@ -74,18 +73,16 @@ from_tl1_trap: | |||
| 74 | be,pn %xcc, kvmap ! Yep, special processing | 73 | be,pn %xcc, kvmap ! Yep, special processing |
| 75 | CREATE_VPTE_OFFSET2(%g4, %g6) ! Create VPTE offset | 74 | CREATE_VPTE_OFFSET2(%g4, %g6) ! Create VPTE offset |
| 76 | cmp %g5, 4 ! Last trap level? | 75 | cmp %g5, 4 ! Last trap level? |
| 77 | be,pn %xcc, longpath ! Yep, cannot risk VPTE miss | ||
| 78 | nop ! delay slot | ||
| 79 | 76 | ||
| 80 | /* DTLB ** ICACHE line 2: User finish + quick kernel TLB misses */ | 77 | /* DTLB ** ICACHE line 2: User finish + quick kernel TLB misses */ |
| 78 | be,pn %xcc, longpath ! Yep, cannot risk VPTE miss | ||
| 79 | nop ! delay slot | ||
| 81 | ldxa [%g3 + %g6] ASI_S, %g5 ! Load VPTE | 80 | ldxa [%g3 + %g6] ASI_S, %g5 ! Load VPTE |
| 82 | 1: brgez,pn %g5, longpath ! Invalid, branch out | 81 | 1: brgez,pn %g5, longpath ! Invalid, branch out |
| 83 | nop ! Delay-slot | 82 | nop ! Delay-slot |
| 84 | 9: stxa %g5, [%g0] ASI_DTLB_DATA_IN ! Reload TLB | 83 | 9: stxa %g5, [%g0] ASI_DTLB_DATA_IN ! Reload TLB |
| 85 | retry ! Trap return | 84 | retry ! Trap return |
| 86 | nop | 85 | nop |
| 87 | nop | ||
| 88 | nop | ||
| 89 | 86 | ||
| 90 | /* DTLB ** ICACHE line 3: winfixups+real_faults */ | 87 | /* DTLB ** ICACHE line 3: winfixups+real_faults */ |
| 91 | longpath: | 88 | longpath: |
| @@ -106,8 +103,7 @@ longpath: | |||
| 106 | nop | 103 | nop |
| 107 | nop | 104 | nop |
| 108 | nop | 105 | nop |
| 109 | CREATE_VPTE_NOP | 106 | nop |
| 110 | 107 | ||
| 111 | #undef CREATE_VPTE_OFFSET1 | 108 | #undef CREATE_VPTE_OFFSET1 |
| 112 | #undef CREATE_VPTE_OFFSET2 | 109 | #undef CREATE_VPTE_OFFSET2 |
| 113 | #undef CREATE_VPTE_NOP | ||
diff --git a/arch/sparc64/kernel/dtlb_prot.S b/arch/sparc64/kernel/dtlb_prot.S index d848bb7374bb..e0a920162604 100644 --- a/arch/sparc64/kernel/dtlb_prot.S +++ b/arch/sparc64/kernel/dtlb_prot.S | |||
| @@ -14,14 +14,14 @@ | |||
| 14 | */ | 14 | */ |
| 15 | 15 | ||
| 16 | /* PROT ** ICACHE line 1: User DTLB protection trap */ | 16 | /* PROT ** ICACHE line 1: User DTLB protection trap */ |
| 17 | stxa %g0, [%g1] ASI_DMMU ! Clear SFSR FaultValid bit | 17 | mov TLB_SFSR, %g1 |
| 18 | membar #Sync ! Synchronize ASI stores | 18 | stxa %g0, [%g1] ASI_DMMU ! Clear FaultValid bit |
| 19 | rdpr %pstate, %g5 ! Move into alternate globals | 19 | membar #Sync ! Synchronize stores |
| 20 | rdpr %pstate, %g5 ! Move into alt-globals | ||
| 20 | wrpr %g5, PSTATE_AG|PSTATE_MG, %pstate | 21 | wrpr %g5, PSTATE_AG|PSTATE_MG, %pstate |
| 21 | rdpr %tl, %g1 ! Need to do a winfixup? | 22 | rdpr %tl, %g1 ! Need a winfixup? |
| 22 | cmp %g1, 1 ! Trap level >1? | 23 | cmp %g1, 1 ! Trap level >1? |
| 23 | mov TLB_TAG_ACCESS, %g4 ! Prepare reload of vaddr | 24 | mov TLB_TAG_ACCESS, %g4 ! For reload of vaddr |
| 24 | nop | ||
| 25 | 25 | ||
| 26 | /* PROT ** ICACHE line 2: More real fault processing */ | 26 | /* PROT ** ICACHE line 2: More real fault processing */ |
| 27 | bgu,pn %xcc, winfix_trampoline ! Yes, perform winfixup | 27 | bgu,pn %xcc, winfix_trampoline ! Yes, perform winfixup |
diff --git a/arch/sparc64/kernel/entry.S b/arch/sparc64/kernel/entry.S index 2879b1072921..11a848402fb1 100644 --- a/arch/sparc64/kernel/entry.S +++ b/arch/sparc64/kernel/entry.S | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | /* This is trivial with the new code... */ | 33 | /* This is trivial with the new code... */ |
| 34 | .globl do_fpdis | 34 | .globl do_fpdis |
| 35 | do_fpdis: | 35 | do_fpdis: |
| 36 | sethi %hi(TSTATE_PEF), %g4 ! IEU0 | 36 | sethi %hi(TSTATE_PEF), %g4 |
| 37 | rdpr %tstate, %g5 | 37 | rdpr %tstate, %g5 |
| 38 | andcc %g5, %g4, %g0 | 38 | andcc %g5, %g4, %g0 |
| 39 | be,pt %xcc, 1f | 39 | be,pt %xcc, 1f |
| @@ -50,18 +50,18 @@ do_fpdis: | |||
| 50 | add %g0, %g0, %g0 | 50 | add %g0, %g0, %g0 |
| 51 | ba,a,pt %xcc, rtrap_clr_l6 | 51 | ba,a,pt %xcc, rtrap_clr_l6 |
| 52 | 52 | ||
| 53 | 1: ldub [%g6 + TI_FPSAVED], %g5 ! Load Group | 53 | 1: ldub [%g6 + TI_FPSAVED], %g5 |
| 54 | wr %g0, FPRS_FEF, %fprs ! LSU Group+4bubbles | 54 | wr %g0, FPRS_FEF, %fprs |
| 55 | andcc %g5, FPRS_FEF, %g0 ! IEU1 Group | 55 | andcc %g5, FPRS_FEF, %g0 |
| 56 | be,a,pt %icc, 1f ! CTI | 56 | be,a,pt %icc, 1f |
| 57 | clr %g7 ! IEU0 | 57 | clr %g7 |
| 58 | ldx [%g6 + TI_GSR], %g7 ! Load Group | 58 | ldx [%g6 + TI_GSR], %g7 |
| 59 | 1: andcc %g5, FPRS_DL, %g0 ! IEU1 | 59 | 1: andcc %g5, FPRS_DL, %g0 |
| 60 | bne,pn %icc, 2f ! CTI | 60 | bne,pn %icc, 2f |
| 61 | fzero %f0 ! FPA | 61 | fzero %f0 |
| 62 | andcc %g5, FPRS_DU, %g0 ! IEU1 Group | 62 | andcc %g5, FPRS_DU, %g0 |
| 63 | bne,pn %icc, 1f ! CTI | 63 | bne,pn %icc, 1f |
| 64 | fzero %f2 ! FPA | 64 | fzero %f2 |
| 65 | faddd %f0, %f2, %f4 | 65 | faddd %f0, %f2, %f4 |
| 66 | fmuld %f0, %f2, %f6 | 66 | fmuld %f0, %f2, %f6 |
| 67 | faddd %f0, %f2, %f8 | 67 | faddd %f0, %f2, %f8 |
| @@ -97,15 +97,17 @@ do_fpdis: | |||
| 97 | faddd %f0, %f2, %f4 | 97 | faddd %f0, %f2, %f4 |
| 98 | fmuld %f0, %f2, %f6 | 98 | fmuld %f0, %f2, %f6 |
| 99 | ldxa [%g3] ASI_DMMU, %g5 | 99 | ldxa [%g3] ASI_DMMU, %g5 |
| 100 | cplus_fptrap_insn_1: | 100 | sethi %hi(sparc64_kern_sec_context), %g2 |
| 101 | sethi %hi(0), %g2 | 101 | ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 |
| 102 | stxa %g2, [%g3] ASI_DMMU | 102 | stxa %g2, [%g3] ASI_DMMU |
| 103 | membar #Sync | 103 | membar #Sync |
| 104 | add %g6, TI_FPREGS + 0xc0, %g2 | 104 | add %g6, TI_FPREGS + 0xc0, %g2 |
| 105 | faddd %f0, %f2, %f8 | 105 | faddd %f0, %f2, %f8 |
| 106 | fmuld %f0, %f2, %f10 | 106 | fmuld %f0, %f2, %f10 |
| 107 | ldda [%g1] ASI_BLK_S, %f32 ! grrr, where is ASI_BLK_NUCLEUS 8-( | 107 | membar #Sync |
| 108 | ldda [%g1] ASI_BLK_S, %f32 | ||
| 108 | ldda [%g2] ASI_BLK_S, %f48 | 109 | ldda [%g2] ASI_BLK_S, %f48 |
| 110 | membar #Sync | ||
| 109 | faddd %f0, %f2, %f12 | 111 | faddd %f0, %f2, %f12 |
| 110 | fmuld %f0, %f2, %f14 | 112 | fmuld %f0, %f2, %f14 |
| 111 | faddd %f0, %f2, %f16 | 113 | faddd %f0, %f2, %f16 |
| @@ -116,7 +118,6 @@ cplus_fptrap_insn_1: | |||
| 116 | fmuld %f0, %f2, %f26 | 118 | fmuld %f0, %f2, %f26 |
| 117 | faddd %f0, %f2, %f28 | 119 | faddd %f0, %f2, %f28 |
| 118 | fmuld %f0, %f2, %f30 | 120 | fmuld %f0, %f2, %f30 |
| 119 | membar #Sync | ||
| 120 | b,pt %xcc, fpdis_exit | 121 | b,pt %xcc, fpdis_exit |
| 121 | nop | 122 | nop |
| 122 | 2: andcc %g5, FPRS_DU, %g0 | 123 | 2: andcc %g5, FPRS_DU, %g0 |
| @@ -126,15 +127,17 @@ cplus_fptrap_insn_1: | |||
| 126 | fzero %f34 | 127 | fzero %f34 |
| 127 | ldxa [%g3] ASI_DMMU, %g5 | 128 | ldxa [%g3] ASI_DMMU, %g5 |
| 128 | add %g6, TI_FPREGS, %g1 | 129 | add %g6, TI_FPREGS, %g1 |
| 129 | cplus_fptrap_insn_2: | 130 | sethi %hi(sparc64_kern_sec_context), %g2 |
| 130 | sethi %hi(0), %g2 | 131 | ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 |
| 131 | stxa %g2, [%g3] ASI_DMMU | 132 | stxa %g2, [%g3] ASI_DMMU |
| 132 | membar #Sync | 133 | membar #Sync |
| 133 | add %g6, TI_FPREGS + 0x40, %g2 | 134 | add %g6, TI_FPREGS + 0x40, %g2 |
| 134 | faddd %f32, %f34, %f36 | 135 | faddd %f32, %f34, %f36 |
| 135 | fmuld %f32, %f34, %f38 | 136 | fmuld %f32, %f34, %f38 |
| 136 | ldda [%g1] ASI_BLK_S, %f0 ! grrr, where is ASI_BLK_NUCLEUS 8-( | 137 | membar #Sync |
| 138 | ldda [%g1] ASI_BLK_S, %f0 | ||
| 137 | ldda [%g2] ASI_BLK_S, %f16 | 139 | ldda [%g2] ASI_BLK_S, %f16 |
| 140 | membar #Sync | ||
| 138 | faddd %f32, %f34, %f40 | 141 | faddd %f32, %f34, %f40 |
| 139 | fmuld %f32, %f34, %f42 | 142 | fmuld %f32, %f34, %f42 |
| 140 | faddd %f32, %f34, %f44 | 143 | faddd %f32, %f34, %f44 |
| @@ -147,18 +150,18 @@ cplus_fptrap_insn_2: | |||
| 147 | fmuld %f32, %f34, %f58 | 150 | fmuld %f32, %f34, %f58 |
| 148 | faddd %f32, %f34, %f60 | 151 | faddd %f32, %f34, %f60 |
| 149 | fmuld %f32, %f34, %f62 | 152 | fmuld %f32, %f34, %f62 |
| 150 | membar #Sync | ||
| 151 | ba,pt %xcc, fpdis_exit | 153 | ba,pt %xcc, fpdis_exit |
| 152 | nop | 154 | nop |
| 153 | 3: mov SECONDARY_CONTEXT, %g3 | 155 | 3: mov SECONDARY_CONTEXT, %g3 |
| 154 | add %g6, TI_FPREGS, %g1 | 156 | add %g6, TI_FPREGS, %g1 |
| 155 | ldxa [%g3] ASI_DMMU, %g5 | 157 | ldxa [%g3] ASI_DMMU, %g5 |
| 156 | cplus_fptrap_insn_3: | 158 | sethi %hi(sparc64_kern_sec_context), %g2 |
| 157 | sethi %hi(0), %g2 | 159 | ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 |
| 158 | stxa %g2, [%g3] ASI_DMMU | 160 | stxa %g2, [%g3] ASI_DMMU |
| 159 | membar #Sync | 161 | membar #Sync |
| 160 | mov 0x40, %g2 | 162 | mov 0x40, %g2 |
| 161 | ldda [%g1] ASI_BLK_S, %f0 ! grrr, where is ASI_BLK_NUCLEUS 8-( | 163 | membar #Sync |
| 164 | ldda [%g1] ASI_BLK_S, %f0 | ||
| 162 | ldda [%g1 + %g2] ASI_BLK_S, %f16 | 165 | ldda [%g1 + %g2] ASI_BLK_S, %f16 |
| 163 | add %g1, 0x80, %g1 | 166 | add %g1, 0x80, %g1 |
| 164 | ldda [%g1] ASI_BLK_S, %f32 | 167 | ldda [%g1] ASI_BLK_S, %f32 |
| @@ -319,8 +322,8 @@ do_fptrap_after_fsr: | |||
| 319 | stx %g3, [%g6 + TI_GSR] | 322 | stx %g3, [%g6 + TI_GSR] |
| 320 | mov SECONDARY_CONTEXT, %g3 | 323 | mov SECONDARY_CONTEXT, %g3 |
| 321 | ldxa [%g3] ASI_DMMU, %g5 | 324 | ldxa [%g3] ASI_DMMU, %g5 |
| 322 | cplus_fptrap_insn_4: | 325 | sethi %hi(sparc64_kern_sec_context), %g2 |
| 323 | sethi %hi(0), %g2 | 326 | ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 |
| 324 | stxa %g2, [%g3] ASI_DMMU | 327 | stxa %g2, [%g3] ASI_DMMU |
| 325 | membar #Sync | 328 | membar #Sync |
| 326 | add %g6, TI_FPREGS, %g2 | 329 | add %g6, TI_FPREGS, %g2 |
| @@ -341,33 +344,6 @@ cplus_fptrap_insn_4: | |||
| 341 | ba,pt %xcc, etrap | 344 | ba,pt %xcc, etrap |
| 342 | wr %g0, 0, %fprs | 345 | wr %g0, 0, %fprs |
| 343 | 346 | ||
| 344 | cplus_fptrap_1: | ||
| 345 | sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 | ||
| 346 | |||
| 347 | .globl cheetah_plus_patch_fpdis | ||
| 348 | cheetah_plus_patch_fpdis: | ||
| 349 | /* We configure the dTLB512_0 for 4MB pages and the | ||
| 350 | * dTLB512_1 for 8K pages when in context zero. | ||
| 351 | */ | ||
| 352 | sethi %hi(cplus_fptrap_1), %o0 | ||
| 353 | lduw [%o0 + %lo(cplus_fptrap_1)], %o1 | ||
| 354 | |||
| 355 | set cplus_fptrap_insn_1, %o2 | ||
| 356 | stw %o1, [%o2] | ||
| 357 | flush %o2 | ||
| 358 | set cplus_fptrap_insn_2, %o2 | ||
| 359 | stw %o1, [%o2] | ||
| 360 | flush %o2 | ||
| 361 | set cplus_fptrap_insn_3, %o2 | ||
| 362 | stw %o1, [%o2] | ||
| 363 | flush %o2 | ||
| 364 | set cplus_fptrap_insn_4, %o2 | ||
| 365 | stw %o1, [%o2] | ||
| 366 | flush %o2 | ||
| 367 | |||
| 368 | retl | ||
| 369 | nop | ||
| 370 | |||
| 371 | /* The registers for cross calls will be: | 347 | /* The registers for cross calls will be: |
| 372 | * | 348 | * |
| 373 | * DATA 0: [low 32-bits] Address of function to call, jmp to this | 349 | * DATA 0: [low 32-bits] Address of function to call, jmp to this |
diff --git a/arch/sparc64/kernel/etrap.S b/arch/sparc64/kernel/etrap.S index 50d2af1d98ae..0d8eba21111b 100644 --- a/arch/sparc64/kernel/etrap.S +++ b/arch/sparc64/kernel/etrap.S | |||
| @@ -68,12 +68,8 @@ etrap_irq: | |||
| 68 | 68 | ||
| 69 | wrpr %g3, 0, %otherwin | 69 | wrpr %g3, 0, %otherwin |
| 70 | wrpr %g2, 0, %wstate | 70 | wrpr %g2, 0, %wstate |
| 71 | cplus_etrap_insn_1: | 71 | sethi %hi(sparc64_kern_pri_context), %g2 |
| 72 | sethi %hi(0), %g3 | 72 | ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3 |
| 73 | sllx %g3, 32, %g3 | ||
| 74 | cplus_etrap_insn_2: | ||
| 75 | sethi %hi(0), %g2 | ||
| 76 | or %g3, %g2, %g3 | ||
| 77 | stxa %g3, [%l4] ASI_DMMU | 73 | stxa %g3, [%l4] ASI_DMMU |
| 78 | flush %l6 | 74 | flush %l6 |
| 79 | wr %g0, ASI_AIUS, %asi | 75 | wr %g0, ASI_AIUS, %asi |
| @@ -215,12 +211,8 @@ scetrap: rdpr %pil, %g2 | |||
| 215 | mov PRIMARY_CONTEXT, %l4 | 211 | mov PRIMARY_CONTEXT, %l4 |
| 216 | wrpr %g3, 0, %otherwin | 212 | wrpr %g3, 0, %otherwin |
| 217 | wrpr %g2, 0, %wstate | 213 | wrpr %g2, 0, %wstate |
| 218 | cplus_etrap_insn_3: | 214 | sethi %hi(sparc64_kern_pri_context), %g2 |
| 219 | sethi %hi(0), %g3 | 215 | ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3 |
| 220 | sllx %g3, 32, %g3 | ||
| 221 | cplus_etrap_insn_4: | ||
| 222 | sethi %hi(0), %g2 | ||
| 223 | or %g3, %g2, %g3 | ||
| 224 | stxa %g3, [%l4] ASI_DMMU | 216 | stxa %g3, [%l4] ASI_DMMU |
| 225 | flush %l6 | 217 | flush %l6 |
| 226 | 218 | ||
| @@ -264,38 +256,3 @@ cplus_etrap_insn_4: | |||
| 264 | 256 | ||
| 265 | #undef TASK_REGOFF | 257 | #undef TASK_REGOFF |
| 266 | #undef ETRAP_PSTATE1 | 258 | #undef ETRAP_PSTATE1 |
| 267 | |||
| 268 | cplus_einsn_1: | ||
| 269 | sethi %uhi(CTX_CHEETAH_PLUS_NUC), %g3 | ||
| 270 | cplus_einsn_2: | ||
| 271 | sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 | ||
| 272 | |||
| 273 | .globl cheetah_plus_patch_etrap | ||
| 274 | cheetah_plus_patch_etrap: | ||
| 275 | /* We configure the dTLB512_0 for 4MB pages and the | ||
| 276 | * dTLB512_1 for 8K pages when in context zero. | ||
| 277 | */ | ||
| 278 | sethi %hi(cplus_einsn_1), %o0 | ||
| 279 | sethi %hi(cplus_etrap_insn_1), %o2 | ||
| 280 | lduw [%o0 + %lo(cplus_einsn_1)], %o1 | ||
| 281 | or %o2, %lo(cplus_etrap_insn_1), %o2 | ||
| 282 | stw %o1, [%o2] | ||
| 283 | flush %o2 | ||
| 284 | sethi %hi(cplus_etrap_insn_3), %o2 | ||
| 285 | or %o2, %lo(cplus_etrap_insn_3), %o2 | ||
| 286 | stw %o1, [%o2] | ||
| 287 | flush %o2 | ||
| 288 | |||
| 289 | sethi %hi(cplus_einsn_2), %o0 | ||
| 290 | sethi %hi(cplus_etrap_insn_2), %o2 | ||
| 291 | lduw [%o0 + %lo(cplus_einsn_2)], %o1 | ||
| 292 | or %o2, %lo(cplus_etrap_insn_2), %o2 | ||
| 293 | stw %o1, [%o2] | ||
| 294 | flush %o2 | ||
| 295 | sethi %hi(cplus_etrap_insn_4), %o2 | ||
| 296 | or %o2, %lo(cplus_etrap_insn_4), %o2 | ||
| 297 | stw %o1, [%o2] | ||
| 298 | flush %o2 | ||
| 299 | |||
| 300 | retl | ||
| 301 | nop | ||
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S index 89406f9649a9..b49dcd4504b0 100644 --- a/arch/sparc64/kernel/head.S +++ b/arch/sparc64/kernel/head.S | |||
| @@ -28,19 +28,14 @@ | |||
| 28 | #include <asm/mmu.h> | 28 | #include <asm/mmu.h> |
| 29 | 29 | ||
| 30 | /* This section from from _start to sparc64_boot_end should fit into | 30 | /* This section from from _start to sparc64_boot_end should fit into |
| 31 | * 0x0000.0000.0040.4000 to 0x0000.0000.0040.8000 and will be sharing space | 31 | * 0x0000000000404000 to 0x0000000000408000. |
| 32 | * with bootup_user_stack, which is from 0x0000.0000.0040.4000 to | ||
| 33 | * 0x0000.0000.0040.6000 and empty_bad_page, which is from | ||
| 34 | * 0x0000.0000.0040.6000 to 0x0000.0000.0040.8000. | ||
| 35 | */ | 32 | */ |
| 36 | |||
| 37 | .text | 33 | .text |
| 38 | .globl start, _start, stext, _stext | 34 | .globl start, _start, stext, _stext |
| 39 | _start: | 35 | _start: |
| 40 | start: | 36 | start: |
| 41 | _stext: | 37 | _stext: |
| 42 | stext: | 38 | stext: |
| 43 | bootup_user_stack: | ||
| 44 | ! 0x0000000000404000 | 39 | ! 0x0000000000404000 |
| 45 | b sparc64_boot | 40 | b sparc64_boot |
| 46 | flushw /* Flush register file. */ | 41 | flushw /* Flush register file. */ |
| @@ -191,8 +186,9 @@ prom_boot_mapping_phys_low: | |||
| 191 | stx %l3, [%sp + 2047 + 128 + 0x10] ! num_rets, 5 | 186 | stx %l3, [%sp + 2047 + 128 + 0x10] ! num_rets, 5 |
| 192 | stx %l2, [%sp + 2047 + 128 + 0x18] ! arg1: "translate" | 187 | stx %l2, [%sp + 2047 + 128 + 0x18] ! arg1: "translate" |
| 193 | stx %l5, [%sp + 2047 + 128 + 0x20] ! arg2: prom_mmu_ihandle_cache | 188 | stx %l5, [%sp + 2047 + 128 + 0x20] ! arg2: prom_mmu_ihandle_cache |
| 194 | srlx %l0, 22, %l3 | 189 | /* PAGE align */ |
| 195 | sllx %l3, 22, %l3 | 190 | srlx %l0, 13, %l3 |
| 191 | sllx %l3, 13, %l3 | ||
| 196 | stx %l3, [%sp + 2047 + 128 + 0x28] ! arg3: vaddr, our PC | 192 | stx %l3, [%sp + 2047 + 128 + 0x28] ! arg3: vaddr, our PC |
| 197 | stx %g0, [%sp + 2047 + 128 + 0x30] ! res1 | 193 | stx %g0, [%sp + 2047 + 128 + 0x30] ! res1 |
| 198 | stx %g0, [%sp + 2047 + 128 + 0x38] ! res2 | 194 | stx %g0, [%sp + 2047 + 128 + 0x38] ! res2 |
| @@ -211,6 +207,9 @@ prom_boot_mapping_phys_low: | |||
| 211 | ldx [%sp + 2047 + 128 + 0x48], %l2 ! physaddr high | 207 | ldx [%sp + 2047 + 128 + 0x48], %l2 ! physaddr high |
| 212 | stx %l2, [%l4 + 0x0] | 208 | stx %l2, [%l4 + 0x0] |
| 213 | ldx [%sp + 2047 + 128 + 0x50], %l3 ! physaddr low | 209 | ldx [%sp + 2047 + 128 + 0x50], %l3 ! physaddr low |
| 210 | /* 4MB align */ | ||
| 211 | srlx %l3, 22, %l3 | ||
| 212 | sllx %l3, 22, %l3 | ||
| 214 | stx %l3, [%l4 + 0x8] | 213 | stx %l3, [%l4 + 0x8] |
| 215 | 214 | ||
| 216 | /* Leave service as-is, "call-method" */ | 215 | /* Leave service as-is, "call-method" */ |
| @@ -325,23 +324,7 @@ cheetah_tlb_fixup: | |||
| 325 | 1: sethi %hi(tlb_type), %g1 | 324 | 1: sethi %hi(tlb_type), %g1 |
| 326 | stw %g2, [%g1 + %lo(tlb_type)] | 325 | stw %g2, [%g1 + %lo(tlb_type)] |
| 327 | 326 | ||
| 328 | BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g1,g7,1f) | 327 | /* Patch copy/page operations to cheetah optimized versions. */ |
| 329 | ba,pt %xcc, 2f | ||
| 330 | nop | ||
| 331 | |||
| 332 | 1: /* Patch context register writes to support nucleus page | ||
| 333 | * size correctly. | ||
| 334 | */ | ||
| 335 | call cheetah_plus_patch_etrap | ||
| 336 | nop | ||
| 337 | call cheetah_plus_patch_rtrap | ||
| 338 | nop | ||
| 339 | call cheetah_plus_patch_fpdis | ||
| 340 | nop | ||
| 341 | call cheetah_plus_patch_winfixup | ||
| 342 | nop | ||
| 343 | |||
| 344 | 2: /* Patch copy/page operations to cheetah optimized versions. */ | ||
| 345 | call cheetah_patch_copyops | 328 | call cheetah_patch_copyops |
| 346 | nop | 329 | nop |
| 347 | call cheetah_patch_copy_page | 330 | call cheetah_patch_copy_page |
| @@ -398,32 +381,78 @@ tlb_fixup_done: | |||
| 398 | nop | 381 | nop |
| 399 | /* Not reached... */ | 382 | /* Not reached... */ |
| 400 | 383 | ||
| 401 | /* IMPORTANT NOTE: Whenever making changes here, check | 384 | /* This is meant to allow the sharing of this code between |
| 402 | * trampoline.S as well. -jj */ | 385 | * boot processor invocation (via setup_tba() below) and |
| 403 | .globl setup_tba | 386 | * secondary processor startup (via trampoline.S). The |
| 404 | setup_tba: /* i0 = is_starfire */ | 387 | * former does use this code, the latter does not yet due |
| 405 | save %sp, -160, %sp | 388 | * to some complexities. That should be fixed up at some |
| 389 | * point. | ||
| 390 | * | ||
| 391 | * There used to be enormous complexity wrt. transferring | ||
| 392 | * over from the firwmare's trap table to the Linux kernel's. | ||
| 393 | * For example, there was a chicken & egg problem wrt. building | ||
| 394 | * the OBP page tables, yet needing to be on the Linux kernel | ||
| 395 | * trap table (to translate PAGE_OFFSET addresses) in order to | ||
| 396 | * do that. | ||
| 397 | * | ||
| 398 | * We now handle OBP tlb misses differently, via linear lookups | ||
| 399 | * into the prom_trans[] array. So that specific problem no | ||
| 400 | * longer exists. Yet, unfortunately there are still some issues | ||
| 401 | * preventing trampoline.S from using this code... ho hum. | ||
| 402 | */ | ||
| 403 | .globl setup_trap_table | ||
| 404 | setup_trap_table: | ||
| 405 | save %sp, -192, %sp | ||
| 406 | 406 | ||
| 407 | rdpr %tba, %g7 | 407 | /* Force interrupts to be disabled. */ |
| 408 | sethi %hi(prom_tba), %o1 | 408 | rdpr %pstate, %o1 |
| 409 | or %o1, %lo(prom_tba), %o1 | 409 | andn %o1, PSTATE_IE, %o1 |
| 410 | stx %g7, [%o1] | 410 | wrpr %o1, 0x0, %pstate |
| 411 | wrpr %g0, 15, %pil | ||
| 412 | |||
| 413 | /* Make the firmware call to jump over to the Linux trap table. */ | ||
| 414 | call prom_set_trap_table | ||
| 415 | sethi %hi(sparc64_ttable_tl0), %o0 | ||
| 416 | |||
| 417 | /* Start using proper page size encodings in ctx register. */ | ||
| 418 | sethi %hi(sparc64_kern_pri_context), %g3 | ||
| 419 | ldx [%g3 + %lo(sparc64_kern_pri_context)], %g2 | ||
| 420 | mov PRIMARY_CONTEXT, %g1 | ||
| 421 | stxa %g2, [%g1] ASI_DMMU | ||
| 422 | membar #Sync | ||
| 423 | |||
| 424 | /* The Linux trap handlers expect various trap global registers | ||
| 425 | * to be setup with some fixed values. So here we set these | ||
| 426 | * up very carefully. These globals are: | ||
| 427 | * | ||
| 428 | * Alternate Globals (PSTATE_AG): | ||
| 429 | * | ||
| 430 | * %g6 --> current_thread_info() | ||
| 431 | * | ||
| 432 | * MMU Globals (PSTATE_MG): | ||
| 433 | * | ||
| 434 | * %g1 --> TLB_SFSR | ||
| 435 | * %g2 --> ((_PAGE_VALID | _PAGE_SZ4MB | | ||
| 436 | * _PAGE_CP | _PAGE_CV | _PAGE_P | _PAGE_W) | ||
| 437 | * ^ 0xfffff80000000000) | ||
| 438 | * (this %g2 value is used for computing the PAGE_OFFSET kernel | ||
| 439 | * TLB entries quickly, the virtual address of the fault XOR'd | ||
| 440 | * with this %g2 value is the PTE to load into the TLB) | ||
| 441 | * %g3 --> VPTE_BASE_CHEETAH or VPTE_BASE_SPITFIRE | ||
| 442 | * | ||
| 443 | * Interrupt Globals (PSTATE_IG, setup by init_irqwork_curcpu()): | ||
| 444 | * | ||
| 445 | * %g6 --> __irq_work[smp_processor_id()] | ||
| 446 | */ | ||
| 411 | 447 | ||
| 412 | /* Setup "Linux" globals 8-) */ | ||
| 413 | rdpr %pstate, %o1 | 448 | rdpr %pstate, %o1 |
| 414 | mov %g6, %o2 | 449 | mov %g6, %o2 |
| 415 | wrpr %o1, (PSTATE_AG|PSTATE_IE), %pstate | 450 | wrpr %o1, PSTATE_AG, %pstate |
| 416 | sethi %hi(sparc64_ttable_tl0), %g1 | ||
| 417 | wrpr %g1, %tba | ||
| 418 | mov %o2, %g6 | 451 | mov %o2, %g6 |
| 419 | 452 | ||
| 420 | /* Set up MMU globals */ | ||
| 421 | wrpr %o1, (PSTATE_MG|PSTATE_IE), %pstate | ||
| 422 | |||
| 423 | /* Set fixed globals used by dTLB miss handler. */ | ||
| 424 | #define KERN_HIGHBITS ((_PAGE_VALID|_PAGE_SZ4MB)^0xfffff80000000000) | 453 | #define KERN_HIGHBITS ((_PAGE_VALID|_PAGE_SZ4MB)^0xfffff80000000000) |
| 425 | #define KERN_LOWBITS (_PAGE_CP | _PAGE_CV | _PAGE_P | _PAGE_W) | 454 | #define KERN_LOWBITS (_PAGE_CP | _PAGE_CV | _PAGE_P | _PAGE_W) |
| 426 | 455 | wrpr %o1, PSTATE_MG, %pstate | |
| 427 | mov TSB_REG, %g1 | 456 | mov TSB_REG, %g1 |
| 428 | stxa %g0, [%g1] ASI_DMMU | 457 | stxa %g0, [%g1] ASI_DMMU |
| 429 | membar #Sync | 458 | membar #Sync |
| @@ -435,17 +464,17 @@ setup_tba: /* i0 = is_starfire */ | |||
| 435 | sllx %g2, 32, %g2 | 464 | sllx %g2, 32, %g2 |
| 436 | or %g2, KERN_LOWBITS, %g2 | 465 | or %g2, KERN_LOWBITS, %g2 |
| 437 | 466 | ||
| 438 | BRANCH_IF_ANY_CHEETAH(g3,g7,cheetah_vpte_base) | 467 | BRANCH_IF_ANY_CHEETAH(g3,g7,8f) |
| 439 | ba,pt %xcc, spitfire_vpte_base | 468 | ba,pt %xcc, 9f |
| 440 | nop | 469 | nop |
| 441 | 470 | ||
| 442 | cheetah_vpte_base: | 471 | 8: |
| 443 | sethi %uhi(VPTE_BASE_CHEETAH), %g3 | 472 | sethi %uhi(VPTE_BASE_CHEETAH), %g3 |
| 444 | or %g3, %ulo(VPTE_BASE_CHEETAH), %g3 | 473 | or %g3, %ulo(VPTE_BASE_CHEETAH), %g3 |
| 445 | ba,pt %xcc, 2f | 474 | ba,pt %xcc, 2f |
| 446 | sllx %g3, 32, %g3 | 475 | sllx %g3, 32, %g3 |
| 447 | 476 | ||
| 448 | spitfire_vpte_base: | 477 | 9: |
| 449 | sethi %uhi(VPTE_BASE_SPITFIRE), %g3 | 478 | sethi %uhi(VPTE_BASE_SPITFIRE), %g3 |
| 450 | or %g3, %ulo(VPTE_BASE_SPITFIRE), %g3 | 479 | or %g3, %ulo(VPTE_BASE_SPITFIRE), %g3 |
| 451 | sllx %g3, 32, %g3 | 480 | sllx %g3, 32, %g3 |
| @@ -471,48 +500,55 @@ spitfire_vpte_base: | |||
| 471 | sllx %o2, 32, %o2 | 500 | sllx %o2, 32, %o2 |
| 472 | wr %o2, %asr25 | 501 | wr %o2, %asr25 |
| 473 | 502 | ||
| 474 | /* Ok, we're done setting up all the state our trap mechanims needs, | ||
| 475 | * now get back into normal globals and let the PROM know what is up. | ||
| 476 | */ | ||
| 477 | 2: | 503 | 2: |
| 478 | wrpr %g0, %g0, %wstate | 504 | wrpr %g0, %g0, %wstate |
| 479 | wrpr %o1, PSTATE_IE, %pstate | 505 | wrpr %o1, 0x0, %pstate |
| 480 | 506 | ||
| 481 | call init_irqwork_curcpu | 507 | call init_irqwork_curcpu |
| 482 | nop | 508 | nop |
| 483 | 509 | ||
| 484 | call prom_set_trap_table | 510 | /* Now we can turn interrupts back on. */ |
| 485 | sethi %hi(sparc64_ttable_tl0), %o0 | ||
| 486 | |||
| 487 | BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g2,g3,1f) | ||
| 488 | ba,pt %xcc, 2f | ||
| 489 | nop | ||
| 490 | |||
| 491 | 1: /* Start using proper page size encodings in ctx register. */ | ||
| 492 | sethi %uhi(CTX_CHEETAH_PLUS_NUC), %g3 | ||
| 493 | mov PRIMARY_CONTEXT, %g1 | ||
| 494 | sllx %g3, 32, %g3 | ||
| 495 | sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 | ||
| 496 | or %g3, %g2, %g3 | ||
| 497 | stxa %g3, [%g1] ASI_DMMU | ||
| 498 | membar #Sync | ||
| 499 | |||
| 500 | 2: | ||
| 501 | rdpr %pstate, %o1 | 511 | rdpr %pstate, %o1 |
| 502 | or %o1, PSTATE_IE, %o1 | 512 | or %o1, PSTATE_IE, %o1 |
| 503 | wrpr %o1, 0, %pstate | 513 | wrpr %o1, 0, %pstate |
| 514 | wrpr %g0, 0x0, %pil | ||
| 515 | |||
| 516 | ret | ||
| 517 | restore | ||
| 518 | |||
| 519 | .globl setup_tba | ||
| 520 | setup_tba: /* i0 = is_starfire */ | ||
| 521 | save %sp, -192, %sp | ||
| 522 | |||
| 523 | /* The boot processor is the only cpu which invokes this | ||
| 524 | * routine, the other cpus set things up via trampoline.S. | ||
| 525 | * So save the OBP trap table address here. | ||
| 526 | */ | ||
| 527 | rdpr %tba, %g7 | ||
| 528 | sethi %hi(prom_tba), %o1 | ||
| 529 | or %o1, %lo(prom_tba), %o1 | ||
| 530 | stx %g7, [%o1] | ||
| 531 | |||
| 532 | call setup_trap_table | ||
| 533 | nop | ||
| 504 | 534 | ||
| 505 | ret | 535 | ret |
| 506 | restore | 536 | restore |
| 537 | sparc64_boot_end: | ||
| 538 | |||
| 539 | #include "systbls.S" | ||
| 540 | #include "ktlb.S" | ||
| 541 | #include "etrap.S" | ||
| 542 | #include "rtrap.S" | ||
| 543 | #include "winfixup.S" | ||
| 544 | #include "entry.S" | ||
| 507 | 545 | ||
| 508 | /* | 546 | /* |
| 509 | * The following skips make sure the trap table in ttable.S is aligned | 547 | * The following skip makes sure the trap table in ttable.S is aligned |
| 510 | * on a 32K boundary as required by the v9 specs for TBA register. | 548 | * on a 32K boundary as required by the v9 specs for TBA register. |
| 511 | */ | 549 | */ |
| 512 | sparc64_boot_end: | 550 | 1: |
| 513 | .skip 0x2000 + _start - sparc64_boot_end | 551 | .skip 0x4000 + _start - 1b |
| 514 | bootup_user_stack_end: | ||
| 515 | .skip 0x2000 | ||
| 516 | 552 | ||
| 517 | #ifdef CONFIG_SBUS | 553 | #ifdef CONFIG_SBUS |
| 518 | /* This is just a hack to fool make depend config.h discovering | 554 | /* This is just a hack to fool make depend config.h discovering |
| @@ -524,15 +560,6 @@ bootup_user_stack_end: | |||
| 524 | ! 0x0000000000408000 | 560 | ! 0x0000000000408000 |
| 525 | 561 | ||
| 526 | #include "ttable.S" | 562 | #include "ttable.S" |
| 527 | #include "systbls.S" | ||
| 528 | #include "ktlb.S" | ||
| 529 | #include "etrap.S" | ||
| 530 | #include "rtrap.S" | ||
| 531 | #include "winfixup.S" | ||
| 532 | #include "entry.S" | ||
| 533 | |||
| 534 | /* This is just anal retentiveness on my part... */ | ||
| 535 | .align 16384 | ||
| 536 | 563 | ||
| 537 | .data | 564 | .data |
| 538 | .align 8 | 565 | .align 8 |
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index c9b69167632a..233526ba3abe 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <asm/atomic.h> | 27 | #include <asm/atomic.h> |
| 28 | #include <asm/system.h> | 28 | #include <asm/system.h> |
| 29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
| 30 | #include <asm/io.h> | ||
| 30 | #include <asm/sbus.h> | 31 | #include <asm/sbus.h> |
| 31 | #include <asm/iommu.h> | 32 | #include <asm/iommu.h> |
| 32 | #include <asm/upa.h> | 33 | #include <asm/upa.h> |
diff --git a/arch/sparc64/kernel/itlb_base.S b/arch/sparc64/kernel/itlb_base.S index b5e32dfa4fbc..4951ff8f6877 100644 --- a/arch/sparc64/kernel/itlb_base.S +++ b/arch/sparc64/kernel/itlb_base.S | |||
| @@ -15,14 +15,12 @@ | |||
| 15 | */ | 15 | */ |
| 16 | #define CREATE_VPTE_OFFSET1(r1, r2) \ | 16 | #define CREATE_VPTE_OFFSET1(r1, r2) \ |
| 17 | srax r1, 10, r2 | 17 | srax r1, 10, r2 |
| 18 | #define CREATE_VPTE_OFFSET2(r1, r2) | 18 | #define CREATE_VPTE_OFFSET2(r1, r2) nop |
| 19 | #define CREATE_VPTE_NOP nop | ||
| 20 | #else /* PAGE_SHIFT */ | 19 | #else /* PAGE_SHIFT */ |
| 21 | #define CREATE_VPTE_OFFSET1(r1, r2) \ | 20 | #define CREATE_VPTE_OFFSET1(r1, r2) \ |
| 22 | srax r1, PAGE_SHIFT, r2 | 21 | srax r1, PAGE_SHIFT, r2 |
| 23 | #define CREATE_VPTE_OFFSET2(r1, r2) \ | 22 | #define CREATE_VPTE_OFFSET2(r1, r2) \ |
| 24 | sllx r2, 3, r2 | 23 | sllx r2, 3, r2 |
| 25 | #define CREATE_VPTE_NOP | ||
| 26 | #endif /* PAGE_SHIFT */ | 24 | #endif /* PAGE_SHIFT */ |
| 27 | 25 | ||
| 28 | 26 | ||
| @@ -36,6 +34,7 @@ | |||
| 36 | */ | 34 | */ |
| 37 | 35 | ||
| 38 | /* ITLB ** ICACHE line 1: Quick user TLB misses */ | 36 | /* ITLB ** ICACHE line 1: Quick user TLB misses */ |
| 37 | mov TLB_SFSR, %g1 | ||
| 39 | ldxa [%g1 + %g1] ASI_IMMU, %g4 ! Get TAG_ACCESS | 38 | ldxa [%g1 + %g1] ASI_IMMU, %g4 ! Get TAG_ACCESS |
| 40 | CREATE_VPTE_OFFSET1(%g4, %g6) ! Create VPTE offset | 39 | CREATE_VPTE_OFFSET1(%g4, %g6) ! Create VPTE offset |
| 41 | CREATE_VPTE_OFFSET2(%g4, %g6) ! Create VPTE offset | 40 | CREATE_VPTE_OFFSET2(%g4, %g6) ! Create VPTE offset |
| @@ -43,41 +42,38 @@ | |||
| 43 | 1: brgez,pn %g5, 3f ! Not valid, branch out | 42 | 1: brgez,pn %g5, 3f ! Not valid, branch out |
| 44 | sethi %hi(_PAGE_EXEC), %g4 ! Delay-slot | 43 | sethi %hi(_PAGE_EXEC), %g4 ! Delay-slot |
| 45 | andcc %g5, %g4, %g0 ! Executable? | 44 | andcc %g5, %g4, %g0 ! Executable? |
| 45 | |||
| 46 | /* ITLB ** ICACHE line 2: Real faults */ | ||
| 46 | be,pn %xcc, 3f ! Nope, branch. | 47 | be,pn %xcc, 3f ! Nope, branch. |
| 47 | nop ! Delay-slot | 48 | nop ! Delay-slot |
| 48 | 2: stxa %g5, [%g0] ASI_ITLB_DATA_IN ! Load PTE into TLB | 49 | 2: stxa %g5, [%g0] ASI_ITLB_DATA_IN ! Load PTE into TLB |
| 49 | retry ! Trap return | 50 | retry ! Trap return |
| 50 | 3: rdpr %pstate, %g4 ! Move into alternate globals | 51 | 3: rdpr %pstate, %g4 ! Move into alt-globals |
| 51 | |||
| 52 | /* ITLB ** ICACHE line 2: Real faults */ | ||
| 53 | wrpr %g4, PSTATE_AG|PSTATE_MG, %pstate | 52 | wrpr %g4, PSTATE_AG|PSTATE_MG, %pstate |
| 54 | rdpr %tpc, %g5 ! And load faulting VA | 53 | rdpr %tpc, %g5 ! And load faulting VA |
| 55 | mov FAULT_CODE_ITLB, %g4 ! It was read from ITLB | 54 | mov FAULT_CODE_ITLB, %g4 ! It was read from ITLB |
| 56 | sparc64_realfault_common: ! Called by TL0 dtlb_miss too | 55 | |
| 56 | /* ITLB ** ICACHE line 3: Finish faults */ | ||
| 57 | sparc64_realfault_common: ! Called by dtlb_miss | ||
| 57 | stb %g4, [%g6 + TI_FAULT_CODE] | 58 | stb %g4, [%g6 + TI_FAULT_CODE] |
| 58 | stx %g5, [%g6 + TI_FAULT_ADDR] | 59 | stx %g5, [%g6 + TI_FAULT_ADDR] |
| 59 | ba,pt %xcc, etrap ! Save state | 60 | ba,pt %xcc, etrap ! Save state |
| 60 | 1: rd %pc, %g7 ! ... | 61 | 1: rd %pc, %g7 ! ... |
| 61 | nop | ||
| 62 | |||
| 63 | /* ITLB ** ICACHE line 3: Finish faults + window fixups */ | ||
| 64 | call do_sparc64_fault ! Call fault handler | 62 | call do_sparc64_fault ! Call fault handler |
| 65 | add %sp, PTREGS_OFF, %o0! Compute pt_regs arg | 63 | add %sp, PTREGS_OFF, %o0! Compute pt_regs arg |
| 66 | ba,pt %xcc, rtrap_clr_l6 ! Restore cpu state | 64 | ba,pt %xcc, rtrap_clr_l6 ! Restore cpu state |
| 67 | nop | 65 | nop |
| 66 | |||
| 67 | /* ITLB ** ICACHE line 4: Window fixups */ | ||
| 68 | winfix_trampoline: | 68 | winfix_trampoline: |
| 69 | rdpr %tpc, %g3 ! Prepare winfixup TNPC | 69 | rdpr %tpc, %g3 ! Prepare winfixup TNPC |
| 70 | or %g3, 0x7c, %g3 ! Compute offset to branch | 70 | or %g3, 0x7c, %g3 ! Compute branch offset |
| 71 | wrpr %g3, %tnpc ! Write it into TNPC | 71 | wrpr %g3, %tnpc ! Write it into TNPC |
| 72 | done ! Do it to it | 72 | done ! Do it to it |
| 73 | |||
| 74 | /* ITLB ** ICACHE line 4: Unused... */ | ||
| 75 | nop | 73 | nop |
| 76 | nop | 74 | nop |
| 77 | nop | 75 | nop |
| 78 | nop | 76 | nop |
| 79 | CREATE_VPTE_NOP | ||
| 80 | 77 | ||
| 81 | #undef CREATE_VPTE_OFFSET1 | 78 | #undef CREATE_VPTE_OFFSET1 |
| 82 | #undef CREATE_VPTE_OFFSET2 | 79 | #undef CREATE_VPTE_OFFSET2 |
| 83 | #undef CREATE_VPTE_NOP | ||
diff --git a/arch/sparc64/kernel/ktlb.S b/arch/sparc64/kernel/ktlb.S index 7796b37f478c..d9244d3c9f73 100644 --- a/arch/sparc64/kernel/ktlb.S +++ b/arch/sparc64/kernel/ktlb.S | |||
| @@ -58,9 +58,6 @@ vpte_noent: | |||
| 58 | done | 58 | done |
| 59 | 59 | ||
| 60 | vpte_insn_obp: | 60 | vpte_insn_obp: |
| 61 | sethi %hi(prom_pmd_phys), %g5 | ||
| 62 | ldx [%g5 + %lo(prom_pmd_phys)], %g5 | ||
| 63 | |||
| 64 | /* Behave as if we are at TL0. */ | 61 | /* Behave as if we are at TL0. */ |
| 65 | wrpr %g0, 1, %tl | 62 | wrpr %g0, 1, %tl |
| 66 | rdpr %tpc, %g4 /* Find original faulting iaddr */ | 63 | rdpr %tpc, %g4 /* Find original faulting iaddr */ |
| @@ -71,58 +68,57 @@ vpte_insn_obp: | |||
| 71 | mov TLB_SFSR, %g1 | 68 | mov TLB_SFSR, %g1 |
| 72 | stxa %g4, [%g1 + %g1] ASI_IMMU | 69 | stxa %g4, [%g1 + %g1] ASI_IMMU |
| 73 | 70 | ||
| 74 | /* Get PMD offset. */ | 71 | sethi %hi(prom_trans), %g5 |
| 75 | srlx %g4, 23, %g6 | 72 | or %g5, %lo(prom_trans), %g5 |
| 76 | and %g6, 0x7ff, %g6 | 73 | |
| 77 | sllx %g6, 2, %g6 | 74 | 1: ldx [%g5 + 0x00], %g6 ! base |
| 78 | 75 | brz,a,pn %g6, longpath ! no more entries, fail | |
| 79 | /* Load PMD, is it valid? */ | 76 | mov TLB_SFSR, %g1 ! and restore %g1 |
| 80 | lduwa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 | 77 | ldx [%g5 + 0x08], %g1 ! len |
| 81 | brz,pn %g5, longpath | 78 | add %g6, %g1, %g1 ! end |
| 82 | sllx %g5, 11, %g5 | 79 | cmp %g6, %g4 |
| 83 | 80 | bgu,pt %xcc, 2f | |
| 84 | /* Get PTE offset. */ | 81 | cmp %g4, %g1 |
| 85 | srlx %g4, 13, %g6 | 82 | bgeu,pt %xcc, 2f |
| 86 | and %g6, 0x3ff, %g6 | 83 | ldx [%g5 + 0x10], %g1 ! PTE |
| 87 | sllx %g6, 3, %g6 | 84 | |
| 88 | 85 | /* TLB load, restore %g1, and return from trap. */ | |
| 89 | /* Load PTE. */ | 86 | sub %g4, %g6, %g6 |
| 90 | ldxa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 | 87 | add %g1, %g6, %g5 |
| 91 | brgez,pn %g5, longpath | 88 | mov TLB_SFSR, %g1 |
| 92 | nop | ||
| 93 | |||
| 94 | /* TLB load and return from trap. */ | ||
| 95 | stxa %g5, [%g0] ASI_ITLB_DATA_IN | 89 | stxa %g5, [%g0] ASI_ITLB_DATA_IN |
| 96 | retry | 90 | retry |
| 97 | 91 | ||
| 98 | kvmap_do_obp: | 92 | 2: ba,pt %xcc, 1b |
| 99 | sethi %hi(prom_pmd_phys), %g5 | 93 | add %g5, (3 * 8), %g5 ! next entry |
| 100 | ldx [%g5 + %lo(prom_pmd_phys)], %g5 | ||
| 101 | |||
| 102 | /* Get PMD offset. */ | ||
| 103 | srlx %g4, 23, %g6 | ||
| 104 | and %g6, 0x7ff, %g6 | ||
| 105 | sllx %g6, 2, %g6 | ||
| 106 | |||
| 107 | /* Load PMD, is it valid? */ | ||
| 108 | lduwa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 | ||
| 109 | brz,pn %g5, longpath | ||
| 110 | sllx %g5, 11, %g5 | ||
| 111 | |||
| 112 | /* Get PTE offset. */ | ||
| 113 | srlx %g4, 13, %g6 | ||
| 114 | and %g6, 0x3ff, %g6 | ||
| 115 | sllx %g6, 3, %g6 | ||
| 116 | |||
| 117 | /* Load PTE. */ | ||
| 118 | ldxa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 | ||
| 119 | brgez,pn %g5, longpath | ||
| 120 | nop | ||
| 121 | 94 | ||
| 122 | /* TLB load and return from trap. */ | 95 | kvmap_do_obp: |
| 96 | sethi %hi(prom_trans), %g5 | ||
| 97 | or %g5, %lo(prom_trans), %g5 | ||
| 98 | srlx %g4, 13, %g4 | ||
| 99 | sllx %g4, 13, %g4 | ||
| 100 | |||
| 101 | 1: ldx [%g5 + 0x00], %g6 ! base | ||
| 102 | brz,a,pn %g6, longpath ! no more entries, fail | ||
| 103 | mov TLB_SFSR, %g1 ! and restore %g1 | ||
| 104 | ldx [%g5 + 0x08], %g1 ! len | ||
| 105 | add %g6, %g1, %g1 ! end | ||
| 106 | cmp %g6, %g4 | ||
| 107 | bgu,pt %xcc, 2f | ||
| 108 | cmp %g4, %g1 | ||
| 109 | bgeu,pt %xcc, 2f | ||
| 110 | ldx [%g5 + 0x10], %g1 ! PTE | ||
| 111 | |||
| 112 | /* TLB load, restore %g1, and return from trap. */ | ||
| 113 | sub %g4, %g6, %g6 | ||
| 114 | add %g1, %g6, %g5 | ||
| 115 | mov TLB_SFSR, %g1 | ||
| 123 | stxa %g5, [%g0] ASI_DTLB_DATA_IN | 116 | stxa %g5, [%g0] ASI_DTLB_DATA_IN |
| 124 | retry | 117 | retry |
| 125 | 118 | ||
| 119 | 2: ba,pt %xcc, 1b | ||
| 120 | add %g5, (3 * 8), %g5 ! next entry | ||
| 121 | |||
| 126 | /* | 122 | /* |
| 127 | * On a first level data miss, check whether this is to the OBP range (note | 123 | * On a first level data miss, check whether this is to the OBP range (note |
| 128 | * that such accesses can be made by prom, as well as by kernel using | 124 | * that such accesses can be made by prom, as well as by kernel using |
diff --git a/arch/sparc64/kernel/pci_iommu.c b/arch/sparc64/kernel/pci_iommu.c index 425c60cfea19..a11910be1013 100644 --- a/arch/sparc64/kernel/pci_iommu.c +++ b/arch/sparc64/kernel/pci_iommu.c | |||
| @@ -49,12 +49,6 @@ static void __iommu_flushall(struct pci_iommu *iommu) | |||
| 49 | 49 | ||
| 50 | /* Ensure completion of previous PIO writes. */ | 50 | /* Ensure completion of previous PIO writes. */ |
| 51 | (void) pci_iommu_read(iommu->write_complete_reg); | 51 | (void) pci_iommu_read(iommu->write_complete_reg); |
| 52 | |||
| 53 | /* Now update everyone's flush point. */ | ||
| 54 | for (entry = 0; entry < PBM_NCLUSTERS; entry++) { | ||
| 55 | iommu->alloc_info[entry].flush = | ||
| 56 | iommu->alloc_info[entry].next; | ||
| 57 | } | ||
| 58 | } | 52 | } |
| 59 | 53 | ||
| 60 | #define IOPTE_CONSISTENT(CTX) \ | 54 | #define IOPTE_CONSISTENT(CTX) \ |
| @@ -80,120 +74,117 @@ static void inline iopte_make_dummy(struct pci_iommu *iommu, iopte_t *iopte) | |||
| 80 | iopte_val(*iopte) = val; | 74 | iopte_val(*iopte) = val; |
| 81 | } | 75 | } |
| 82 | 76 | ||
| 83 | void pci_iommu_table_init(struct pci_iommu *iommu, int tsbsize) | 77 | /* Based largely upon the ppc64 iommu allocator. */ |
| 78 | static long pci_arena_alloc(struct pci_iommu *iommu, unsigned long npages) | ||
| 84 | { | 79 | { |
| 85 | int i; | 80 | struct pci_iommu_arena *arena = &iommu->arena; |
| 86 | 81 | unsigned long n, i, start, end, limit; | |
| 87 | tsbsize /= sizeof(iopte_t); | 82 | int pass; |
| 88 | 83 | ||
| 89 | for (i = 0; i < tsbsize; i++) | 84 | limit = arena->limit; |
| 90 | iopte_make_dummy(iommu, &iommu->page_table[i]); | 85 | start = arena->hint; |
| 91 | } | 86 | pass = 0; |
| 92 | 87 | ||
| 93 | static iopte_t *alloc_streaming_cluster(struct pci_iommu *iommu, unsigned long npages) | 88 | again: |
| 94 | { | 89 | n = find_next_zero_bit(arena->map, limit, start); |
| 95 | iopte_t *iopte, *limit, *first; | 90 | end = n + npages; |
| 96 | unsigned long cnum, ent, flush_point; | 91 | if (unlikely(end >= limit)) { |
| 97 | 92 | if (likely(pass < 1)) { | |
| 98 | cnum = 0; | 93 | limit = start; |
| 99 | while ((1UL << cnum) < npages) | 94 | start = 0; |
| 100 | cnum++; | 95 | __iommu_flushall(iommu); |
| 101 | iopte = (iommu->page_table + | 96 | pass++; |
| 102 | (cnum << (iommu->page_table_sz_bits - PBM_LOGCLUSTERS))); | 97 | goto again; |
| 103 | 98 | } else { | |
| 104 | if (cnum == 0) | 99 | /* Scanned the whole thing, give up. */ |
| 105 | limit = (iommu->page_table + | 100 | return -1; |
| 106 | iommu->lowest_consistent_map); | ||
| 107 | else | ||
| 108 | limit = (iopte + | ||
| 109 | (1 << (iommu->page_table_sz_bits - PBM_LOGCLUSTERS))); | ||
| 110 | |||
| 111 | iopte += ((ent = iommu->alloc_info[cnum].next) << cnum); | ||
| 112 | flush_point = iommu->alloc_info[cnum].flush; | ||
| 113 | |||
| 114 | first = iopte; | ||
| 115 | for (;;) { | ||
| 116 | if (IOPTE_IS_DUMMY(iommu, iopte)) { | ||
| 117 | if ((iopte + (1 << cnum)) >= limit) | ||
| 118 | ent = 0; | ||
| 119 | else | ||
| 120 | ent = ent + 1; | ||
| 121 | iommu->alloc_info[cnum].next = ent; | ||
| 122 | if (ent == flush_point) | ||
| 123 | __iommu_flushall(iommu); | ||
| 124 | break; | ||
| 125 | } | 101 | } |
| 126 | iopte += (1 << cnum); | 102 | } |
| 127 | ent++; | 103 | |
| 128 | if (iopte >= limit) { | 104 | for (i = n; i < end; i++) { |
| 129 | iopte = (iommu->page_table + | 105 | if (test_bit(i, arena->map)) { |
| 130 | (cnum << | 106 | start = i + 1; |
| 131 | (iommu->page_table_sz_bits - PBM_LOGCLUSTERS))); | 107 | goto again; |
| 132 | ent = 0; | ||
| 133 | } | 108 | } |
| 134 | if (ent == flush_point) | ||
| 135 | __iommu_flushall(iommu); | ||
| 136 | if (iopte == first) | ||
| 137 | goto bad; | ||
| 138 | } | 109 | } |
| 139 | 110 | ||
| 140 | /* I've got your streaming cluster right here buddy boy... */ | 111 | for (i = n; i < end; i++) |
| 141 | return iopte; | 112 | __set_bit(i, arena->map); |
| 142 | 113 | ||
| 143 | bad: | 114 | arena->hint = end; |
| 144 | printk(KERN_EMERG "pci_iommu: alloc_streaming_cluster of npages(%ld) failed!\n", | 115 | |
| 145 | npages); | 116 | return n; |
| 146 | return NULL; | ||
| 147 | } | 117 | } |
| 148 | 118 | ||
| 149 | static void free_streaming_cluster(struct pci_iommu *iommu, dma_addr_t base, | 119 | static void pci_arena_free(struct pci_iommu_arena *arena, unsigned long base, unsigned long npages) |
| 150 | unsigned long npages, unsigned long ctx) | ||
| 151 | { | 120 | { |
| 152 | unsigned long cnum, ent; | 121 | unsigned long i; |
| 153 | 122 | ||
| 154 | cnum = 0; | 123 | for (i = base; i < (base + npages); i++) |
| 155 | while ((1UL << cnum) < npages) | 124 | __clear_bit(i, arena->map); |
| 156 | cnum++; | 125 | } |
| 157 | 126 | ||
| 158 | ent = (base << (32 - IO_PAGE_SHIFT + PBM_LOGCLUSTERS - iommu->page_table_sz_bits)) | 127 | void pci_iommu_table_init(struct pci_iommu *iommu, int tsbsize, u32 dma_offset, u32 dma_addr_mask) |
| 159 | >> (32 + PBM_LOGCLUSTERS + cnum - iommu->page_table_sz_bits); | 128 | { |
| 129 | unsigned long i, tsbbase, order, sz, num_tsb_entries; | ||
| 130 | |||
| 131 | num_tsb_entries = tsbsize / sizeof(iopte_t); | ||
| 132 | |||
| 133 | /* Setup initial software IOMMU state. */ | ||
| 134 | spin_lock_init(&iommu->lock); | ||
| 135 | iommu->ctx_lowest_free = 1; | ||
| 136 | iommu->page_table_map_base = dma_offset; | ||
| 137 | iommu->dma_addr_mask = dma_addr_mask; | ||
| 138 | |||
| 139 | /* Allocate and initialize the free area map. */ | ||
| 140 | sz = num_tsb_entries / 8; | ||
| 141 | sz = (sz + 7UL) & ~7UL; | ||
| 142 | iommu->arena.map = kmalloc(sz, GFP_KERNEL); | ||
| 143 | if (!iommu->arena.map) { | ||
| 144 | prom_printf("PCI_IOMMU: Error, kmalloc(arena.map) failed.\n"); | ||
| 145 | prom_halt(); | ||
| 146 | } | ||
| 147 | memset(iommu->arena.map, 0, sz); | ||
| 148 | iommu->arena.limit = num_tsb_entries; | ||
| 160 | 149 | ||
| 161 | /* If the global flush might not have caught this entry, | 150 | /* Allocate and initialize the dummy page which we |
| 162 | * adjust the flush point such that we will flush before | 151 | * set inactive IO PTEs to point to. |
| 163 | * ever trying to reuse it. | ||
| 164 | */ | 152 | */ |
| 165 | #define between(X,Y,Z) (((Z) - (Y)) >= ((X) - (Y))) | 153 | iommu->dummy_page = __get_free_pages(GFP_KERNEL, 0); |
| 166 | if (between(ent, iommu->alloc_info[cnum].next, iommu->alloc_info[cnum].flush)) | 154 | if (!iommu->dummy_page) { |
| 167 | iommu->alloc_info[cnum].flush = ent; | 155 | prom_printf("PCI_IOMMU: Error, gfp(dummy_page) failed.\n"); |
| 168 | #undef between | 156 | prom_halt(); |
| 157 | } | ||
| 158 | memset((void *)iommu->dummy_page, 0, PAGE_SIZE); | ||
| 159 | iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page); | ||
| 160 | |||
| 161 | /* Now allocate and setup the IOMMU page table itself. */ | ||
| 162 | order = get_order(tsbsize); | ||
| 163 | tsbbase = __get_free_pages(GFP_KERNEL, order); | ||
| 164 | if (!tsbbase) { | ||
| 165 | prom_printf("PCI_IOMMU: Error, gfp(tsb) failed.\n"); | ||
| 166 | prom_halt(); | ||
| 167 | } | ||
| 168 | iommu->page_table = (iopte_t *)tsbbase; | ||
| 169 | |||
| 170 | for (i = 0; i < num_tsb_entries; i++) | ||
| 171 | iopte_make_dummy(iommu, &iommu->page_table[i]); | ||
| 169 | } | 172 | } |
| 170 | 173 | ||
| 171 | /* We allocate consistent mappings from the end of cluster zero. */ | 174 | static inline iopte_t *alloc_npages(struct pci_iommu *iommu, unsigned long npages) |
| 172 | static iopte_t *alloc_consistent_cluster(struct pci_iommu *iommu, unsigned long npages) | ||
| 173 | { | 175 | { |
| 174 | iopte_t *iopte; | 176 | long entry; |
| 175 | 177 | ||
| 176 | iopte = iommu->page_table + (1 << (iommu->page_table_sz_bits - PBM_LOGCLUSTERS)); | 178 | entry = pci_arena_alloc(iommu, npages); |
| 177 | while (iopte > iommu->page_table) { | 179 | if (unlikely(entry < 0)) |
| 178 | iopte--; | 180 | return NULL; |
| 179 | if (IOPTE_IS_DUMMY(iommu, iopte)) { | ||
| 180 | unsigned long tmp = npages; | ||
| 181 | 181 | ||
| 182 | while (--tmp) { | 182 | return iommu->page_table + entry; |
| 183 | iopte--; | 183 | } |
| 184 | if (!IOPTE_IS_DUMMY(iommu, iopte)) | ||
| 185 | break; | ||
| 186 | } | ||
| 187 | if (tmp == 0) { | ||
| 188 | u32 entry = (iopte - iommu->page_table); | ||
| 189 | 184 | ||
| 190 | if (entry < iommu->lowest_consistent_map) | 185 | static inline void free_npages(struct pci_iommu *iommu, dma_addr_t base, unsigned long npages) |
| 191 | iommu->lowest_consistent_map = entry; | 186 | { |
| 192 | return iopte; | 187 | pci_arena_free(&iommu->arena, base >> IO_PAGE_SHIFT, npages); |
| 193 | } | ||
| 194 | } | ||
| 195 | } | ||
| 196 | return NULL; | ||
| 197 | } | 188 | } |
| 198 | 189 | ||
| 199 | static int iommu_alloc_ctx(struct pci_iommu *iommu) | 190 | static int iommu_alloc_ctx(struct pci_iommu *iommu) |
| @@ -233,7 +224,7 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_ad | |||
| 233 | struct pcidev_cookie *pcp; | 224 | struct pcidev_cookie *pcp; |
| 234 | struct pci_iommu *iommu; | 225 | struct pci_iommu *iommu; |
| 235 | iopte_t *iopte; | 226 | iopte_t *iopte; |
| 236 | unsigned long flags, order, first_page, ctx; | 227 | unsigned long flags, order, first_page; |
| 237 | void *ret; | 228 | void *ret; |
| 238 | int npages; | 229 | int npages; |
| 239 | 230 | ||
| @@ -251,9 +242,10 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_ad | |||
| 251 | iommu = pcp->pbm->iommu; | 242 | iommu = pcp->pbm->iommu; |
| 252 | 243 | ||
| 253 | spin_lock_irqsave(&iommu->lock, flags); | 244 | spin_lock_irqsave(&iommu->lock, flags); |
| 254 | iopte = alloc_consistent_cluster(iommu, size >> IO_PAGE_SHIFT); | 245 | iopte = alloc_npages(iommu, size >> IO_PAGE_SHIFT); |
| 255 | if (iopte == NULL) { | 246 | spin_unlock_irqrestore(&iommu->lock, flags); |
| 256 | spin_unlock_irqrestore(&iommu->lock, flags); | 247 | |
| 248 | if (unlikely(iopte == NULL)) { | ||
| 257 | free_pages(first_page, order); | 249 | free_pages(first_page, order); |
| 258 | return NULL; | 250 | return NULL; |
| 259 | } | 251 | } |
| @@ -262,31 +254,15 @@ void *pci_alloc_consistent(struct pci_dev *pdev, size_t size, dma_addr_t *dma_ad | |||
| 262 | ((iopte - iommu->page_table) << IO_PAGE_SHIFT)); | 254 | ((iopte - iommu->page_table) << IO_PAGE_SHIFT)); |
| 263 | ret = (void *) first_page; | 255 | ret = (void *) first_page; |
| 264 | npages = size >> IO_PAGE_SHIFT; | 256 | npages = size >> IO_PAGE_SHIFT; |
| 265 | ctx = 0; | ||
| 266 | if (iommu->iommu_ctxflush) | ||
| 267 | ctx = iommu_alloc_ctx(iommu); | ||
| 268 | first_page = __pa(first_page); | 257 | first_page = __pa(first_page); |
| 269 | while (npages--) { | 258 | while (npages--) { |
| 270 | iopte_val(*iopte) = (IOPTE_CONSISTENT(ctx) | | 259 | iopte_val(*iopte) = (IOPTE_CONSISTENT(0UL) | |
| 271 | IOPTE_WRITE | | 260 | IOPTE_WRITE | |
| 272 | (first_page & IOPTE_PAGE)); | 261 | (first_page & IOPTE_PAGE)); |
| 273 | iopte++; | 262 | iopte++; |
| 274 | first_page += IO_PAGE_SIZE; | 263 | first_page += IO_PAGE_SIZE; |
| 275 | } | 264 | } |
| 276 | 265 | ||
| 277 | { | ||
| 278 | int i; | ||
| 279 | u32 daddr = *dma_addrp; | ||
| 280 | |||
| 281 | npages = size >> IO_PAGE_SHIFT; | ||
| 282 | for (i = 0; i < npages; i++) { | ||
| 283 | pci_iommu_write(iommu->iommu_flush, daddr); | ||
| 284 | daddr += IO_PAGE_SIZE; | ||
| 285 | } | ||
| 286 | } | ||
| 287 | |||
| 288 | spin_unlock_irqrestore(&iommu->lock, flags); | ||
| 289 | |||
| 290 | return ret; | 266 | return ret; |
| 291 | } | 267 | } |
| 292 | 268 | ||
| @@ -296,7 +272,7 @@ void pci_free_consistent(struct pci_dev *pdev, size_t size, void *cpu, dma_addr_ | |||
| 296 | struct pcidev_cookie *pcp; | 272 | struct pcidev_cookie *pcp; |
| 297 | struct pci_iommu *iommu; | 273 | struct pci_iommu *iommu; |
| 298 | iopte_t *iopte; | 274 | iopte_t *iopte; |
| 299 | unsigned long flags, order, npages, i, ctx; | 275 | unsigned long flags, order, npages; |
| 300 | 276 | ||
| 301 | npages = IO_PAGE_ALIGN(size) >> IO_PAGE_SHIFT; | 277 | npages = IO_PAGE_ALIGN(size) >> IO_PAGE_SHIFT; |
| 302 | pcp = pdev->sysdata; | 278 | pcp = pdev->sysdata; |
| @@ -306,46 +282,7 @@ void pci_free_consistent(struct pci_dev *pdev, size_t size, void *cpu, dma_addr_ | |||
| 306 | 282 | ||
| 307 | spin_lock_irqsave(&iommu->lock, flags); | 283 | spin_lock_irqsave(&iommu->lock, flags); |
| 308 | 284 | ||
| 309 | if ((iopte - iommu->page_table) == | 285 | free_npages(iommu, dvma, npages); |
| 310 | iommu->lowest_consistent_map) { | ||
| 311 | iopte_t *walk = iopte + npages; | ||
| 312 | iopte_t *limit; | ||
| 313 | |||
| 314 | limit = (iommu->page_table + | ||
| 315 | (1 << (iommu->page_table_sz_bits - PBM_LOGCLUSTERS))); | ||
| 316 | while (walk < limit) { | ||
| 317 | if (!IOPTE_IS_DUMMY(iommu, walk)) | ||
| 318 | break; | ||
| 319 | walk++; | ||
| 320 | } | ||
| 321 | iommu->lowest_consistent_map = | ||
| 322 | (walk - iommu->page_table); | ||
| 323 | } | ||
| 324 | |||
| 325 | /* Data for consistent mappings cannot enter the streaming | ||
| 326 | * buffers, so we only need to update the TSB. We flush | ||
| 327 | * the IOMMU here as well to prevent conflicts with the | ||
| 328 | * streaming mapping deferred tlb flush scheme. | ||
| 329 | */ | ||
| 330 | |||
| 331 | ctx = 0; | ||
| 332 | if (iommu->iommu_ctxflush) | ||
| 333 | ctx = (iopte_val(*iopte) & IOPTE_CONTEXT) >> 47UL; | ||
| 334 | |||
| 335 | for (i = 0; i < npages; i++, iopte++) | ||
| 336 | iopte_make_dummy(iommu, iopte); | ||
| 337 | |||
| 338 | if (iommu->iommu_ctxflush) { | ||
| 339 | pci_iommu_write(iommu->iommu_ctxflush, ctx); | ||
| 340 | } else { | ||
| 341 | for (i = 0; i < npages; i++) { | ||
| 342 | u32 daddr = dvma + (i << IO_PAGE_SHIFT); | ||
| 343 | |||
| 344 | pci_iommu_write(iommu->iommu_flush, daddr); | ||
| 345 | } | ||
| 346 | } | ||
| 347 | |||
| 348 | iommu_free_ctx(iommu, ctx); | ||
| 349 | 286 | ||
| 350 | spin_unlock_irqrestore(&iommu->lock, flags); | 287 | spin_unlock_irqrestore(&iommu->lock, flags); |
| 351 | 288 | ||
| @@ -372,25 +309,27 @@ dma_addr_t pci_map_single(struct pci_dev *pdev, void *ptr, size_t sz, int direct | |||
| 372 | iommu = pcp->pbm->iommu; | 309 | iommu = pcp->pbm->iommu; |
| 373 | strbuf = &pcp->pbm->stc; | 310 | strbuf = &pcp->pbm->stc; |
| 374 | 311 | ||
| 375 | if (direction == PCI_DMA_NONE) | 312 | if (unlikely(direction == PCI_DMA_NONE)) |
| 376 | BUG(); | 313 | goto bad_no_ctx; |
| 377 | 314 | ||
| 378 | oaddr = (unsigned long)ptr; | 315 | oaddr = (unsigned long)ptr; |
| 379 | npages = IO_PAGE_ALIGN(oaddr + sz) - (oaddr & IO_PAGE_MASK); | 316 | npages = IO_PAGE_ALIGN(oaddr + sz) - (oaddr & IO_PAGE_MASK); |
| 380 | npages >>= IO_PAGE_SHIFT; | 317 | npages >>= IO_PAGE_SHIFT; |
| 381 | 318 | ||
| 382 | spin_lock_irqsave(&iommu->lock, flags); | 319 | spin_lock_irqsave(&iommu->lock, flags); |
| 320 | base = alloc_npages(iommu, npages); | ||
| 321 | ctx = 0; | ||
| 322 | if (iommu->iommu_ctxflush) | ||
| 323 | ctx = iommu_alloc_ctx(iommu); | ||
| 324 | spin_unlock_irqrestore(&iommu->lock, flags); | ||
| 383 | 325 | ||
| 384 | base = alloc_streaming_cluster(iommu, npages); | 326 | if (unlikely(!base)) |
| 385 | if (base == NULL) | ||
| 386 | goto bad; | 327 | goto bad; |
| 328 | |||
| 387 | bus_addr = (iommu->page_table_map_base + | 329 | bus_addr = (iommu->page_table_map_base + |
| 388 | ((base - iommu->page_table) << IO_PAGE_SHIFT)); | 330 | ((base - iommu->page_table) << IO_PAGE_SHIFT)); |
| 389 | ret = bus_addr | (oaddr & ~IO_PAGE_MASK); | 331 | ret = bus_addr | (oaddr & ~IO_PAGE_MASK); |
| 390 | base_paddr = __pa(oaddr & IO_PAGE_MASK); | 332 | base_paddr = __pa(oaddr & IO_PAGE_MASK); |
| 391 | ctx = 0; | ||
| 392 | if (iommu->iommu_ctxflush) | ||
| 393 | ctx = iommu_alloc_ctx(iommu); | ||
| 394 | if (strbuf->strbuf_enabled) | 333 | if (strbuf->strbuf_enabled) |
| 395 | iopte_protection = IOPTE_STREAMING(ctx); | 334 | iopte_protection = IOPTE_STREAMING(ctx); |
| 396 | else | 335 | else |
| @@ -401,12 +340,13 @@ dma_addr_t pci_map_single(struct pci_dev *pdev, void *ptr, size_t sz, int direct | |||
| 401 | for (i = 0; i < npages; i++, base++, base_paddr += IO_PAGE_SIZE) | 340 | for (i = 0; i < npages; i++, base++, base_paddr += IO_PAGE_SIZE) |
| 402 | iopte_val(*base) = iopte_protection | base_paddr; | 341 | iopte_val(*base) = iopte_protection | base_paddr; |
| 403 | 342 | ||
| 404 | spin_unlock_irqrestore(&iommu->lock, flags); | ||
| 405 | |||
| 406 | return ret; | 343 | return ret; |
| 407 | 344 | ||
| 408 | bad: | 345 | bad: |
| 409 | spin_unlock_irqrestore(&iommu->lock, flags); | 346 | iommu_free_ctx(iommu, ctx); |
| 347 | bad_no_ctx: | ||
| 348 | if (printk_ratelimit()) | ||
| 349 | WARN_ON(1); | ||
| 410 | return PCI_DMA_ERROR_CODE; | 350 | return PCI_DMA_ERROR_CODE; |
| 411 | } | 351 | } |
| 412 | 352 | ||
| @@ -481,10 +421,13 @@ void pci_unmap_single(struct pci_dev *pdev, dma_addr_t bus_addr, size_t sz, int | |||
| 481 | struct pci_iommu *iommu; | 421 | struct pci_iommu *iommu; |
| 482 | struct pci_strbuf *strbuf; | 422 | struct pci_strbuf *strbuf; |
| 483 | iopte_t *base; | 423 | iopte_t *base; |
| 484 | unsigned long flags, npages, ctx; | 424 | unsigned long flags, npages, ctx, i; |
| 485 | 425 | ||
| 486 | if (direction == PCI_DMA_NONE) | 426 | if (unlikely(direction == PCI_DMA_NONE)) { |
| 487 | BUG(); | 427 | if (printk_ratelimit()) |
| 428 | WARN_ON(1); | ||
| 429 | return; | ||
| 430 | } | ||
| 488 | 431 | ||
| 489 | pcp = pdev->sysdata; | 432 | pcp = pdev->sysdata; |
| 490 | iommu = pcp->pbm->iommu; | 433 | iommu = pcp->pbm->iommu; |
| @@ -510,13 +453,14 @@ void pci_unmap_single(struct pci_dev *pdev, dma_addr_t bus_addr, size_t sz, int | |||
| 510 | 453 | ||
| 511 | /* Step 1: Kick data out of streaming buffers if necessary. */ | 454 | /* Step 1: Kick data out of streaming buffers if necessary. */ |
| 512 | if (strbuf->strbuf_enabled) | 455 | if (strbuf->strbuf_enabled) |
| 513 | pci_strbuf_flush(strbuf, iommu, bus_addr, ctx, npages, direction); | 456 | pci_strbuf_flush(strbuf, iommu, bus_addr, ctx, |
| 457 | npages, direction); | ||
| 514 | 458 | ||
| 515 | /* Step 2: Clear out first TSB entry. */ | 459 | /* Step 2: Clear out TSB entries. */ |
| 516 | iopte_make_dummy(iommu, base); | 460 | for (i = 0; i < npages; i++) |
| 461 | iopte_make_dummy(iommu, base + i); | ||
| 517 | 462 | ||
| 518 | free_streaming_cluster(iommu, bus_addr - iommu->page_table_map_base, | 463 | free_npages(iommu, bus_addr - iommu->page_table_map_base, npages); |
| 519 | npages, ctx); | ||
| 520 | 464 | ||
| 521 | iommu_free_ctx(iommu, ctx); | 465 | iommu_free_ctx(iommu, ctx); |
| 522 | 466 | ||
| @@ -621,6 +565,8 @@ int pci_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int | |||
| 621 | pci_map_single(pdev, | 565 | pci_map_single(pdev, |
| 622 | (page_address(sglist->page) + sglist->offset), | 566 | (page_address(sglist->page) + sglist->offset), |
| 623 | sglist->length, direction); | 567 | sglist->length, direction); |
| 568 | if (unlikely(sglist->dma_address == PCI_DMA_ERROR_CODE)) | ||
| 569 | return 0; | ||
| 624 | sglist->dma_length = sglist->length; | 570 | sglist->dma_length = sglist->length; |
| 625 | return 1; | 571 | return 1; |
| 626 | } | 572 | } |
| @@ -629,21 +575,29 @@ int pci_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int | |||
| 629 | iommu = pcp->pbm->iommu; | 575 | iommu = pcp->pbm->iommu; |
| 630 | strbuf = &pcp->pbm->stc; | 576 | strbuf = &pcp->pbm->stc; |
| 631 | 577 | ||
| 632 | if (direction == PCI_DMA_NONE) | 578 | if (unlikely(direction == PCI_DMA_NONE)) |
| 633 | BUG(); | 579 | goto bad_no_ctx; |
| 634 | 580 | ||
| 635 | /* Step 1: Prepare scatter list. */ | 581 | /* Step 1: Prepare scatter list. */ |
| 636 | 582 | ||
| 637 | npages = prepare_sg(sglist, nelems); | 583 | npages = prepare_sg(sglist, nelems); |
| 638 | 584 | ||
| 639 | /* Step 2: Allocate a cluster. */ | 585 | /* Step 2: Allocate a cluster and context, if necessary. */ |
| 640 | 586 | ||
| 641 | spin_lock_irqsave(&iommu->lock, flags); | 587 | spin_lock_irqsave(&iommu->lock, flags); |
| 642 | 588 | ||
| 643 | base = alloc_streaming_cluster(iommu, npages); | 589 | base = alloc_npages(iommu, npages); |
| 590 | ctx = 0; | ||
| 591 | if (iommu->iommu_ctxflush) | ||
| 592 | ctx = iommu_alloc_ctx(iommu); | ||
| 593 | |||
| 594 | spin_unlock_irqrestore(&iommu->lock, flags); | ||
| 595 | |||
| 644 | if (base == NULL) | 596 | if (base == NULL) |
| 645 | goto bad; | 597 | goto bad; |
| 646 | dma_base = iommu->page_table_map_base + ((base - iommu->page_table) << IO_PAGE_SHIFT); | 598 | |
| 599 | dma_base = iommu->page_table_map_base + | ||
| 600 | ((base - iommu->page_table) << IO_PAGE_SHIFT); | ||
| 647 | 601 | ||
| 648 | /* Step 3: Normalize DMA addresses. */ | 602 | /* Step 3: Normalize DMA addresses. */ |
| 649 | used = nelems; | 603 | used = nelems; |
| @@ -656,30 +610,28 @@ int pci_map_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, int | |||
| 656 | } | 610 | } |
| 657 | used = nelems - used; | 611 | used = nelems - used; |
| 658 | 612 | ||
| 659 | /* Step 4: Choose a context if necessary. */ | 613 | /* Step 4: Create the mappings. */ |
| 660 | ctx = 0; | ||
| 661 | if (iommu->iommu_ctxflush) | ||
| 662 | ctx = iommu_alloc_ctx(iommu); | ||
| 663 | |||
| 664 | /* Step 5: Create the mappings. */ | ||
| 665 | if (strbuf->strbuf_enabled) | 614 | if (strbuf->strbuf_enabled) |
| 666 | iopte_protection = IOPTE_STREAMING(ctx); | 615 | iopte_protection = IOPTE_STREAMING(ctx); |
| 667 | else | 616 | else |
| 668 | iopte_protection = IOPTE_CONSISTENT(ctx); | 617 | iopte_protection = IOPTE_CONSISTENT(ctx); |
| 669 | if (direction != PCI_DMA_TODEVICE) | 618 | if (direction != PCI_DMA_TODEVICE) |
| 670 | iopte_protection |= IOPTE_WRITE; | 619 | iopte_protection |= IOPTE_WRITE; |
| 671 | fill_sg (base, sglist, used, nelems, iopte_protection); | 620 | |
| 621 | fill_sg(base, sglist, used, nelems, iopte_protection); | ||
| 622 | |||
| 672 | #ifdef VERIFY_SG | 623 | #ifdef VERIFY_SG |
| 673 | verify_sglist(sglist, nelems, base, npages); | 624 | verify_sglist(sglist, nelems, base, npages); |
| 674 | #endif | 625 | #endif |
| 675 | 626 | ||
| 676 | spin_unlock_irqrestore(&iommu->lock, flags); | ||
| 677 | |||
| 678 | return used; | 627 | return used; |
| 679 | 628 | ||
| 680 | bad: | 629 | bad: |
| 681 | spin_unlock_irqrestore(&iommu->lock, flags); | 630 | iommu_free_ctx(iommu, ctx); |
| 682 | return PCI_DMA_ERROR_CODE; | 631 | bad_no_ctx: |
| 632 | if (printk_ratelimit()) | ||
| 633 | WARN_ON(1); | ||
| 634 | return 0; | ||
| 683 | } | 635 | } |
| 684 | 636 | ||
| 685 | /* Unmap a set of streaming mode DMA translations. */ | 637 | /* Unmap a set of streaming mode DMA translations. */ |
| @@ -692,8 +644,10 @@ void pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, | |||
| 692 | unsigned long flags, ctx, i, npages; | 644 | unsigned long flags, ctx, i, npages; |
| 693 | u32 bus_addr; | 645 | u32 bus_addr; |
| 694 | 646 | ||
| 695 | if (direction == PCI_DMA_NONE) | 647 | if (unlikely(direction == PCI_DMA_NONE)) { |
| 696 | BUG(); | 648 | if (printk_ratelimit()) |
| 649 | WARN_ON(1); | ||
| 650 | } | ||
| 697 | 651 | ||
| 698 | pcp = pdev->sysdata; | 652 | pcp = pdev->sysdata; |
| 699 | iommu = pcp->pbm->iommu; | 653 | iommu = pcp->pbm->iommu; |
| @@ -705,7 +659,8 @@ void pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, | |||
| 705 | if (sglist[i].dma_length == 0) | 659 | if (sglist[i].dma_length == 0) |
| 706 | break; | 660 | break; |
| 707 | i--; | 661 | i--; |
| 708 | npages = (IO_PAGE_ALIGN(sglist[i].dma_address + sglist[i].dma_length) - bus_addr) >> IO_PAGE_SHIFT; | 662 | npages = (IO_PAGE_ALIGN(sglist[i].dma_address + sglist[i].dma_length) - |
| 663 | bus_addr) >> IO_PAGE_SHIFT; | ||
| 709 | 664 | ||
| 710 | base = iommu->page_table + | 665 | base = iommu->page_table + |
| 711 | ((bus_addr - iommu->page_table_map_base) >> IO_PAGE_SHIFT); | 666 | ((bus_addr - iommu->page_table_map_base) >> IO_PAGE_SHIFT); |
| @@ -726,11 +681,11 @@ void pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sglist, int nelems, | |||
| 726 | if (strbuf->strbuf_enabled) | 681 | if (strbuf->strbuf_enabled) |
| 727 | pci_strbuf_flush(strbuf, iommu, bus_addr, ctx, npages, direction); | 682 | pci_strbuf_flush(strbuf, iommu, bus_addr, ctx, npages, direction); |
| 728 | 683 | ||
| 729 | /* Step 2: Clear out first TSB entry. */ | 684 | /* Step 2: Clear out the TSB entries. */ |
| 730 | iopte_make_dummy(iommu, base); | 685 | for (i = 0; i < npages; i++) |
| 686 | iopte_make_dummy(iommu, base + i); | ||
| 731 | 687 | ||
| 732 | free_streaming_cluster(iommu, bus_addr - iommu->page_table_map_base, | 688 | free_npages(iommu, bus_addr - iommu->page_table_map_base, npages); |
| 733 | npages, ctx); | ||
| 734 | 689 | ||
| 735 | iommu_free_ctx(iommu, ctx); | 690 | iommu_free_ctx(iommu, ctx); |
| 736 | 691 | ||
diff --git a/arch/sparc64/kernel/pci_psycho.c b/arch/sparc64/kernel/pci_psycho.c index 6ed1ef25e0ac..c03ed5f49d31 100644 --- a/arch/sparc64/kernel/pci_psycho.c +++ b/arch/sparc64/kernel/pci_psycho.c | |||
| @@ -1207,13 +1207,9 @@ static void psycho_scan_bus(struct pci_controller_info *p) | |||
| 1207 | static void psycho_iommu_init(struct pci_controller_info *p) | 1207 | static void psycho_iommu_init(struct pci_controller_info *p) |
| 1208 | { | 1208 | { |
| 1209 | struct pci_iommu *iommu = p->pbm_A.iommu; | 1209 | struct pci_iommu *iommu = p->pbm_A.iommu; |
| 1210 | unsigned long tsbbase, i; | 1210 | unsigned long i; |
| 1211 | u64 control; | 1211 | u64 control; |
| 1212 | 1212 | ||
| 1213 | /* Setup initial software IOMMU state. */ | ||
| 1214 | spin_lock_init(&iommu->lock); | ||
| 1215 | iommu->ctx_lowest_free = 1; | ||
| 1216 | |||
| 1217 | /* Register addresses. */ | 1213 | /* Register addresses. */ |
| 1218 | iommu->iommu_control = p->pbm_A.controller_regs + PSYCHO_IOMMU_CONTROL; | 1214 | iommu->iommu_control = p->pbm_A.controller_regs + PSYCHO_IOMMU_CONTROL; |
| 1219 | iommu->iommu_tsbbase = p->pbm_A.controller_regs + PSYCHO_IOMMU_TSBBASE; | 1215 | iommu->iommu_tsbbase = p->pbm_A.controller_regs + PSYCHO_IOMMU_TSBBASE; |
| @@ -1240,40 +1236,10 @@ static void psycho_iommu_init(struct pci_controller_info *p) | |||
| 1240 | /* Leave diag mode enabled for full-flushing done | 1236 | /* Leave diag mode enabled for full-flushing done |
| 1241 | * in pci_iommu.c | 1237 | * in pci_iommu.c |
| 1242 | */ | 1238 | */ |
| 1239 | pci_iommu_table_init(iommu, IO_TSB_SIZE, 0xc0000000, 0xffffffff); | ||
| 1243 | 1240 | ||
| 1244 | iommu->dummy_page = __get_free_pages(GFP_KERNEL, 0); | 1241 | psycho_write(p->pbm_A.controller_regs + PSYCHO_IOMMU_TSBBASE, |
| 1245 | if (!iommu->dummy_page) { | 1242 | __pa(iommu->page_table)); |
| 1246 | prom_printf("PSYCHO_IOMMU: Error, gfp(dummy_page) failed.\n"); | ||
| 1247 | prom_halt(); | ||
| 1248 | } | ||
| 1249 | memset((void *)iommu->dummy_page, 0, PAGE_SIZE); | ||
| 1250 | iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page); | ||
| 1251 | |||
| 1252 | /* Using assumed page size 8K with 128K entries we need 1MB iommu page | ||
| 1253 | * table (128K ioptes * 8 bytes per iopte). This is | ||
| 1254 | * page order 7 on UltraSparc. | ||
| 1255 | */ | ||
| 1256 | tsbbase = __get_free_pages(GFP_KERNEL, get_order(IO_TSB_SIZE)); | ||
| 1257 | if (!tsbbase) { | ||
| 1258 | prom_printf("PSYCHO_IOMMU: Error, gfp(tsb) failed.\n"); | ||
| 1259 | prom_halt(); | ||
| 1260 | } | ||
| 1261 | iommu->page_table = (iopte_t *)tsbbase; | ||
| 1262 | iommu->page_table_sz_bits = 17; | ||
| 1263 | iommu->page_table_map_base = 0xc0000000; | ||
| 1264 | iommu->dma_addr_mask = 0xffffffff; | ||
| 1265 | pci_iommu_table_init(iommu, IO_TSB_SIZE); | ||
| 1266 | |||
| 1267 | /* We start with no consistent mappings. */ | ||
| 1268 | iommu->lowest_consistent_map = | ||
| 1269 | 1 << (iommu->page_table_sz_bits - PBM_LOGCLUSTERS); | ||
| 1270 | |||
| 1271 | for (i = 0; i < PBM_NCLUSTERS; i++) { | ||
| 1272 | iommu->alloc_info[i].flush = 0; | ||
| 1273 | iommu->alloc_info[i].next = 0; | ||
| 1274 | } | ||
| 1275 | |||
| 1276 | psycho_write(p->pbm_A.controller_regs + PSYCHO_IOMMU_TSBBASE, __pa(tsbbase)); | ||
| 1277 | 1243 | ||
| 1278 | control = psycho_read(p->pbm_A.controller_regs + PSYCHO_IOMMU_CONTROL); | 1244 | control = psycho_read(p->pbm_A.controller_regs + PSYCHO_IOMMU_CONTROL); |
| 1279 | control &= ~(PSYCHO_IOMMU_CTRL_TSBSZ | PSYCHO_IOMMU_CTRL_TBWSZ); | 1245 | control &= ~(PSYCHO_IOMMU_CTRL_TSBSZ | PSYCHO_IOMMU_CTRL_TBWSZ); |
| @@ -1281,7 +1247,7 @@ static void psycho_iommu_init(struct pci_controller_info *p) | |||
| 1281 | psycho_write(p->pbm_A.controller_regs + PSYCHO_IOMMU_CONTROL, control); | 1247 | psycho_write(p->pbm_A.controller_regs + PSYCHO_IOMMU_CONTROL, control); |
| 1282 | 1248 | ||
| 1283 | /* If necessary, hook us up for starfire IRQ translations. */ | 1249 | /* If necessary, hook us up for starfire IRQ translations. */ |
| 1284 | if(this_is_starfire) | 1250 | if (this_is_starfire) |
| 1285 | p->starfire_cookie = starfire_hookup(p->pbm_A.portid); | 1251 | p->starfire_cookie = starfire_hookup(p->pbm_A.portid); |
| 1286 | else | 1252 | else |
| 1287 | p->starfire_cookie = NULL; | 1253 | p->starfire_cookie = NULL; |
diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c index 0ee6bd5b9ac6..da8e1364194f 100644 --- a/arch/sparc64/kernel/pci_sabre.c +++ b/arch/sparc64/kernel/pci_sabre.c | |||
| @@ -1267,13 +1267,9 @@ static void sabre_iommu_init(struct pci_controller_info *p, | |||
| 1267 | u32 dma_mask) | 1267 | u32 dma_mask) |
| 1268 | { | 1268 | { |
| 1269 | struct pci_iommu *iommu = p->pbm_A.iommu; | 1269 | struct pci_iommu *iommu = p->pbm_A.iommu; |
| 1270 | unsigned long tsbbase, i, order; | 1270 | unsigned long i; |
| 1271 | u64 control; | 1271 | u64 control; |
| 1272 | 1272 | ||
| 1273 | /* Setup initial software IOMMU state. */ | ||
| 1274 | spin_lock_init(&iommu->lock); | ||
| 1275 | iommu->ctx_lowest_free = 1; | ||
| 1276 | |||
| 1277 | /* Register addresses. */ | 1273 | /* Register addresses. */ |
| 1278 | iommu->iommu_control = p->pbm_A.controller_regs + SABRE_IOMMU_CONTROL; | 1274 | iommu->iommu_control = p->pbm_A.controller_regs + SABRE_IOMMU_CONTROL; |
| 1279 | iommu->iommu_tsbbase = p->pbm_A.controller_regs + SABRE_IOMMU_TSBBASE; | 1275 | iommu->iommu_tsbbase = p->pbm_A.controller_regs + SABRE_IOMMU_TSBBASE; |
| @@ -1295,26 +1291,10 @@ static void sabre_iommu_init(struct pci_controller_info *p, | |||
| 1295 | /* Leave diag mode enabled for full-flushing done | 1291 | /* Leave diag mode enabled for full-flushing done |
| 1296 | * in pci_iommu.c | 1292 | * in pci_iommu.c |
| 1297 | */ | 1293 | */ |
| 1294 | pci_iommu_table_init(iommu, tsbsize * 1024 * 8, dvma_offset, dma_mask); | ||
| 1298 | 1295 | ||
| 1299 | iommu->dummy_page = __get_free_pages(GFP_KERNEL, 0); | 1296 | sabre_write(p->pbm_A.controller_regs + SABRE_IOMMU_TSBBASE, |
| 1300 | if (!iommu->dummy_page) { | 1297 | __pa(iommu->page_table)); |
| 1301 | prom_printf("PSYCHO_IOMMU: Error, gfp(dummy_page) failed.\n"); | ||
| 1302 | prom_halt(); | ||
| 1303 | } | ||
| 1304 | memset((void *)iommu->dummy_page, 0, PAGE_SIZE); | ||
| 1305 | iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page); | ||
| 1306 | |||
| 1307 | tsbbase = __get_free_pages(GFP_KERNEL, order = get_order(tsbsize * 1024 * 8)); | ||
| 1308 | if (!tsbbase) { | ||
| 1309 | prom_printf("SABRE_IOMMU: Error, gfp(tsb) failed.\n"); | ||
| 1310 | prom_halt(); | ||
| 1311 | } | ||
| 1312 | iommu->page_table = (iopte_t *)tsbbase; | ||
| 1313 | iommu->page_table_map_base = dvma_offset; | ||
| 1314 | iommu->dma_addr_mask = dma_mask; | ||
| 1315 | pci_iommu_table_init(iommu, PAGE_SIZE << order); | ||
| 1316 | |||
| 1317 | sabre_write(p->pbm_A.controller_regs + SABRE_IOMMU_TSBBASE, __pa(tsbbase)); | ||
| 1318 | 1298 | ||
| 1319 | control = sabre_read(p->pbm_A.controller_regs + SABRE_IOMMU_CONTROL); | 1299 | control = sabre_read(p->pbm_A.controller_regs + SABRE_IOMMU_CONTROL); |
| 1320 | control &= ~(SABRE_IOMMUCTRL_TSBSZ | SABRE_IOMMUCTRL_TBWSZ); | 1300 | control &= ~(SABRE_IOMMUCTRL_TSBSZ | SABRE_IOMMUCTRL_TBWSZ); |
| @@ -1322,11 +1302,9 @@ static void sabre_iommu_init(struct pci_controller_info *p, | |||
| 1322 | switch(tsbsize) { | 1302 | switch(tsbsize) { |
| 1323 | case 64: | 1303 | case 64: |
| 1324 | control |= SABRE_IOMMU_TSBSZ_64K; | 1304 | control |= SABRE_IOMMU_TSBSZ_64K; |
| 1325 | iommu->page_table_sz_bits = 16; | ||
| 1326 | break; | 1305 | break; |
| 1327 | case 128: | 1306 | case 128: |
| 1328 | control |= SABRE_IOMMU_TSBSZ_128K; | 1307 | control |= SABRE_IOMMU_TSBSZ_128K; |
| 1329 | iommu->page_table_sz_bits = 17; | ||
| 1330 | break; | 1308 | break; |
| 1331 | default: | 1309 | default: |
| 1332 | prom_printf("iommu_init: Illegal TSB size %d\n", tsbsize); | 1310 | prom_printf("iommu_init: Illegal TSB size %d\n", tsbsize); |
| @@ -1334,15 +1312,6 @@ static void sabre_iommu_init(struct pci_controller_info *p, | |||
| 1334 | break; | 1312 | break; |
| 1335 | } | 1313 | } |
| 1336 | sabre_write(p->pbm_A.controller_regs + SABRE_IOMMU_CONTROL, control); | 1314 | sabre_write(p->pbm_A.controller_regs + SABRE_IOMMU_CONTROL, control); |
| 1337 | |||
| 1338 | /* We start with no consistent mappings. */ | ||
| 1339 | iommu->lowest_consistent_map = | ||
| 1340 | 1 << (iommu->page_table_sz_bits - PBM_LOGCLUSTERS); | ||
| 1341 | |||
| 1342 | for (i = 0; i < PBM_NCLUSTERS; i++) { | ||
| 1343 | iommu->alloc_info[i].flush = 0; | ||
| 1344 | iommu->alloc_info[i].next = 0; | ||
| 1345 | } | ||
| 1346 | } | 1315 | } |
| 1347 | 1316 | ||
| 1348 | static void pbm_register_toplevel_resources(struct pci_controller_info *p, | 1317 | static void pbm_register_toplevel_resources(struct pci_controller_info *p, |
diff --git a/arch/sparc64/kernel/pci_schizo.c b/arch/sparc64/kernel/pci_schizo.c index cae5b61fe2f0..d8c4e0919b4e 100644 --- a/arch/sparc64/kernel/pci_schizo.c +++ b/arch/sparc64/kernel/pci_schizo.c | |||
| @@ -1765,7 +1765,7 @@ static void schizo_pbm_strbuf_init(struct pci_pbm_info *pbm) | |||
| 1765 | static void schizo_pbm_iommu_init(struct pci_pbm_info *pbm) | 1765 | static void schizo_pbm_iommu_init(struct pci_pbm_info *pbm) |
| 1766 | { | 1766 | { |
| 1767 | struct pci_iommu *iommu = pbm->iommu; | 1767 | struct pci_iommu *iommu = pbm->iommu; |
| 1768 | unsigned long tsbbase, i, tagbase, database, order; | 1768 | unsigned long i, tagbase, database; |
| 1769 | u32 vdma[2], dma_mask; | 1769 | u32 vdma[2], dma_mask; |
| 1770 | u64 control; | 1770 | u64 control; |
| 1771 | int err, tsbsize; | 1771 | int err, tsbsize; |
| @@ -1800,10 +1800,6 @@ static void schizo_pbm_iommu_init(struct pci_pbm_info *pbm) | |||
| 1800 | prom_halt(); | 1800 | prom_halt(); |
| 1801 | }; | 1801 | }; |
| 1802 | 1802 | ||
| 1803 | /* Setup initial software IOMMU state. */ | ||
| 1804 | spin_lock_init(&iommu->lock); | ||
| 1805 | iommu->ctx_lowest_free = 1; | ||
| 1806 | |||
| 1807 | /* Register addresses, SCHIZO has iommu ctx flushing. */ | 1803 | /* Register addresses, SCHIZO has iommu ctx flushing. */ |
| 1808 | iommu->iommu_control = pbm->pbm_regs + SCHIZO_IOMMU_CONTROL; | 1804 | iommu->iommu_control = pbm->pbm_regs + SCHIZO_IOMMU_CONTROL; |
| 1809 | iommu->iommu_tsbbase = pbm->pbm_regs + SCHIZO_IOMMU_TSBBASE; | 1805 | iommu->iommu_tsbbase = pbm->pbm_regs + SCHIZO_IOMMU_TSBBASE; |
| @@ -1832,56 +1828,9 @@ static void schizo_pbm_iommu_init(struct pci_pbm_info *pbm) | |||
| 1832 | /* Leave diag mode enabled for full-flushing done | 1828 | /* Leave diag mode enabled for full-flushing done |
| 1833 | * in pci_iommu.c | 1829 | * in pci_iommu.c |
| 1834 | */ | 1830 | */ |
| 1831 | pci_iommu_table_init(iommu, tsbsize * 8 * 1024, vdma[0], dma_mask); | ||
| 1835 | 1832 | ||
| 1836 | iommu->dummy_page = __get_free_pages(GFP_KERNEL, 0); | 1833 | schizo_write(iommu->iommu_tsbbase, __pa(iommu->page_table)); |
| 1837 | if (!iommu->dummy_page) { | ||
| 1838 | prom_printf("PSYCHO_IOMMU: Error, gfp(dummy_page) failed.\n"); | ||
| 1839 | prom_halt(); | ||
| 1840 | } | ||
| 1841 | memset((void *)iommu->dummy_page, 0, PAGE_SIZE); | ||
| 1842 | iommu->dummy_page_pa = (unsigned long) __pa(iommu->dummy_page); | ||
| 1843 | |||
| 1844 | /* Using assumed page size 8K with 128K entries we need 1MB iommu page | ||
| 1845 | * table (128K ioptes * 8 bytes per iopte). This is | ||
| 1846 | * page order 7 on UltraSparc. | ||
| 1847 | */ | ||
| 1848 | order = get_order(tsbsize * 8 * 1024); | ||
| 1849 | tsbbase = __get_free_pages(GFP_KERNEL, order); | ||
| 1850 | if (!tsbbase) { | ||
| 1851 | prom_printf("%s: Error, gfp(tsb) failed.\n", pbm->name); | ||
| 1852 | prom_halt(); | ||
| 1853 | } | ||
| 1854 | |||
| 1855 | iommu->page_table = (iopte_t *)tsbbase; | ||
| 1856 | iommu->page_table_map_base = vdma[0]; | ||
| 1857 | iommu->dma_addr_mask = dma_mask; | ||
| 1858 | pci_iommu_table_init(iommu, PAGE_SIZE << order); | ||
| 1859 | |||
| 1860 | switch (tsbsize) { | ||
| 1861 | case 64: | ||
| 1862 | iommu->page_table_sz_bits = 16; | ||
| 1863 | break; | ||
| 1864 | |||
| 1865 | case 128: | ||
| 1866 | iommu->page_table_sz_bits = 17; | ||
| 1867 | break; | ||
| 1868 | |||
| 1869 | default: | ||
| 1870 | prom_printf("iommu_init: Illegal TSB size %d\n", tsbsize); | ||
| 1871 | prom_halt(); | ||
| 1872 | break; | ||
| 1873 | }; | ||
| 1874 | |||
| 1875 | /* We start with no consistent mappings. */ | ||
| 1876 | iommu->lowest_consistent_map = | ||
| 1877 | 1 << (iommu->page_table_sz_bits - PBM_LOGCLUSTERS); | ||
| 1878 | |||
| 1879 | for (i = 0; i < PBM_NCLUSTERS; i++) { | ||
| 1880 | iommu->alloc_info[i].flush = 0; | ||
| 1881 | iommu->alloc_info[i].next = 0; | ||
| 1882 | } | ||
| 1883 | |||
| 1884 | schizo_write(iommu->iommu_tsbbase, __pa(tsbbase)); | ||
| 1885 | 1834 | ||
| 1886 | control = schizo_read(iommu->iommu_control); | 1835 | control = schizo_read(iommu->iommu_control); |
| 1887 | control &= ~(SCHIZO_IOMMU_CTRL_TSBSZ | SCHIZO_IOMMU_CTRL_TBWSZ); | 1836 | control &= ~(SCHIZO_IOMMU_CTRL_TSBSZ | SCHIZO_IOMMU_CTRL_TBWSZ); |
diff --git a/arch/sparc64/kernel/power.c b/arch/sparc64/kernel/power.c index 946cee0257ea..9e8362ea3104 100644 --- a/arch/sparc64/kernel/power.c +++ b/arch/sparc64/kernel/power.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | 17 | ||
| 18 | #include <asm/system.h> | 18 | #include <asm/system.h> |
| 19 | #include <asm/ebus.h> | 19 | #include <asm/ebus.h> |
| 20 | #include <asm/isa.h> | ||
| 20 | #include <asm/auxio.h> | 21 | #include <asm/auxio.h> |
| 21 | 22 | ||
| 22 | #include <linux/unistd.h> | 23 | #include <linux/unistd.h> |
| @@ -100,46 +101,83 @@ again: | |||
| 100 | return 0; | 101 | return 0; |
| 101 | } | 102 | } |
| 102 | 103 | ||
| 103 | static int __init has_button_interrupt(struct linux_ebus_device *edev) | 104 | static int __init has_button_interrupt(unsigned int irq, int prom_node) |
| 104 | { | 105 | { |
| 105 | if (edev->irqs[0] == PCI_IRQ_NONE) | 106 | if (irq == PCI_IRQ_NONE) |
| 106 | return 0; | 107 | return 0; |
| 107 | if (!prom_node_has_property(edev->prom_node, "button")) | 108 | if (!prom_node_has_property(prom_node, "button")) |
| 108 | return 0; | 109 | return 0; |
| 109 | 110 | ||
| 110 | return 1; | 111 | return 1; |
| 111 | } | 112 | } |
| 112 | 113 | ||
| 113 | void __init power_init(void) | 114 | static int __init power_probe_ebus(struct resource **resp, unsigned int *irq_p, int *prom_node_p) |
| 114 | { | 115 | { |
| 115 | struct linux_ebus *ebus; | 116 | struct linux_ebus *ebus; |
| 116 | struct linux_ebus_device *edev; | 117 | struct linux_ebus_device *edev; |
| 118 | |||
| 119 | for_each_ebus(ebus) { | ||
| 120 | for_each_ebusdev(edev, ebus) { | ||
| 121 | if (!strcmp(edev->prom_name, "power")) { | ||
| 122 | *resp = &edev->resource[0]; | ||
| 123 | *irq_p = edev->irqs[0]; | ||
| 124 | *prom_node_p = edev->prom_node; | ||
| 125 | return 0; | ||
| 126 | } | ||
| 127 | } | ||
| 128 | } | ||
| 129 | return -ENODEV; | ||
| 130 | } | ||
| 131 | |||
| 132 | static int __init power_probe_isa(struct resource **resp, unsigned int *irq_p, int *prom_node_p) | ||
| 133 | { | ||
| 134 | struct sparc_isa_bridge *isa_bus; | ||
| 135 | struct sparc_isa_device *isa_dev; | ||
| 136 | |||
| 137 | for_each_isa(isa_bus) { | ||
| 138 | for_each_isadev(isa_dev, isa_bus) { | ||
| 139 | if (!strcmp(isa_dev->prom_name, "power")) { | ||
| 140 | *resp = &isa_dev->resource; | ||
| 141 | *irq_p = isa_dev->irq; | ||
| 142 | *prom_node_p = isa_dev->prom_node; | ||
| 143 | return 0; | ||
| 144 | } | ||
| 145 | } | ||
| 146 | } | ||
| 147 | return -ENODEV; | ||
| 148 | } | ||
| 149 | |||
| 150 | void __init power_init(void) | ||
| 151 | { | ||
| 152 | struct resource *res = NULL; | ||
| 153 | unsigned int irq; | ||
| 154 | int prom_node; | ||
| 117 | static int invoked; | 155 | static int invoked; |
| 118 | 156 | ||
| 119 | if (invoked) | 157 | if (invoked) |
| 120 | return; | 158 | return; |
| 121 | invoked = 1; | 159 | invoked = 1; |
| 122 | 160 | ||
| 123 | for_each_ebus(ebus) { | 161 | if (!power_probe_ebus(&res, &irq, &prom_node)) |
| 124 | for_each_ebusdev(edev, ebus) { | 162 | goto found; |
| 125 | if (!strcmp(edev->prom_name, "power")) | 163 | |
| 126 | goto found; | 164 | if (!power_probe_isa(&res, &irq, &prom_node)) |
| 127 | } | 165 | goto found; |
| 128 | } | 166 | |
| 129 | return; | 167 | return; |
| 130 | 168 | ||
| 131 | found: | 169 | found: |
| 132 | power_reg = ioremap(edev->resource[0].start, 0x4); | 170 | power_reg = ioremap(res->start, 0x4); |
| 133 | printk("power: Control reg at %p ... ", power_reg); | 171 | printk("power: Control reg at %p ... ", power_reg); |
| 134 | poweroff_method = machine_halt; /* able to use the standard halt */ | 172 | poweroff_method = machine_halt; /* able to use the standard halt */ |
| 135 | if (has_button_interrupt(edev)) { | 173 | if (has_button_interrupt(irq, prom_node)) { |
| 136 | if (kernel_thread(powerd, NULL, CLONE_FS) < 0) { | 174 | if (kernel_thread(powerd, NULL, CLONE_FS) < 0) { |
| 137 | printk("Failed to start power daemon.\n"); | 175 | printk("Failed to start power daemon.\n"); |
| 138 | return; | 176 | return; |
| 139 | } | 177 | } |
| 140 | printk("powerd running.\n"); | 178 | printk("powerd running.\n"); |
| 141 | 179 | ||
| 142 | if (request_irq(edev->irqs[0], | 180 | if (request_irq(irq, |
| 143 | power_handler, SA_SHIRQ, "power", NULL) < 0) | 181 | power_handler, SA_SHIRQ, "power", NULL) < 0) |
| 144 | printk("power: Error, cannot register IRQ handler.\n"); | 182 | printk("power: Error, cannot register IRQ handler.\n"); |
| 145 | } else { | 183 | } else { |
diff --git a/arch/sparc64/kernel/rtrap.S b/arch/sparc64/kernel/rtrap.S index fafd227735fa..090dcca00d2a 100644 --- a/arch/sparc64/kernel/rtrap.S +++ b/arch/sparc64/kernel/rtrap.S | |||
| @@ -256,9 +256,8 @@ rt_continue: ldx [%sp + PTREGS_OFF + PT_V9_G1], %g1 | |||
| 256 | brnz,pn %l3, kern_rtt | 256 | brnz,pn %l3, kern_rtt |
| 257 | mov PRIMARY_CONTEXT, %l7 | 257 | mov PRIMARY_CONTEXT, %l7 |
| 258 | ldxa [%l7 + %l7] ASI_DMMU, %l0 | 258 | ldxa [%l7 + %l7] ASI_DMMU, %l0 |
| 259 | cplus_rtrap_insn_1: | 259 | sethi %hi(sparc64_kern_pri_nuc_bits), %l1 |
| 260 | sethi %hi(0), %l1 | 260 | ldx [%l1 + %lo(sparc64_kern_pri_nuc_bits)], %l1 |
| 261 | sllx %l1, 32, %l1 | ||
| 262 | or %l0, %l1, %l0 | 261 | or %l0, %l1, %l0 |
| 263 | stxa %l0, [%l7] ASI_DMMU | 262 | stxa %l0, [%l7] ASI_DMMU |
| 264 | flush %g6 | 263 | flush %g6 |
| @@ -313,53 +312,36 @@ kern_fpucheck: ldub [%g6 + TI_FPDEPTH], %l5 | |||
| 313 | wr %g1, FPRS_FEF, %fprs | 312 | wr %g1, FPRS_FEF, %fprs |
| 314 | ldx [%o1 + %o5], %g1 | 313 | ldx [%o1 + %o5], %g1 |
| 315 | add %g6, TI_XFSR, %o1 | 314 | add %g6, TI_XFSR, %o1 |
| 316 | membar #StoreLoad | #LoadLoad | ||
| 317 | sll %o0, 8, %o2 | 315 | sll %o0, 8, %o2 |
| 318 | add %g6, TI_FPREGS, %o3 | 316 | add %g6, TI_FPREGS, %o3 |
| 319 | brz,pn %l6, 1f | 317 | brz,pn %l6, 1f |
| 320 | add %g6, TI_FPREGS+0x40, %o4 | 318 | add %g6, TI_FPREGS+0x40, %o4 |
| 321 | 319 | ||
| 320 | membar #Sync | ||
| 322 | ldda [%o3 + %o2] ASI_BLK_P, %f0 | 321 | ldda [%o3 + %o2] ASI_BLK_P, %f0 |
| 323 | ldda [%o4 + %o2] ASI_BLK_P, %f16 | 322 | ldda [%o4 + %o2] ASI_BLK_P, %f16 |
| 323 | membar #Sync | ||
| 324 | 1: andcc %l2, FPRS_DU, %g0 | 324 | 1: andcc %l2, FPRS_DU, %g0 |
| 325 | be,pn %icc, 1f | 325 | be,pn %icc, 1f |
| 326 | wr %g1, 0, %gsr | 326 | wr %g1, 0, %gsr |
| 327 | add %o2, 0x80, %o2 | 327 | add %o2, 0x80, %o2 |
| 328 | membar #Sync | ||
| 328 | ldda [%o3 + %o2] ASI_BLK_P, %f32 | 329 | ldda [%o3 + %o2] ASI_BLK_P, %f32 |
| 329 | ldda [%o4 + %o2] ASI_BLK_P, %f48 | 330 | ldda [%o4 + %o2] ASI_BLK_P, %f48 |
| 330 | |||
| 331 | 1: membar #Sync | 331 | 1: membar #Sync |
| 332 | ldx [%o1 + %o5], %fsr | 332 | ldx [%o1 + %o5], %fsr |
| 333 | 2: stb %l5, [%g6 + TI_FPDEPTH] | 333 | 2: stb %l5, [%g6 + TI_FPDEPTH] |
| 334 | ba,pt %xcc, rt_continue | 334 | ba,pt %xcc, rt_continue |
| 335 | nop | 335 | nop |
| 336 | 5: wr %g0, FPRS_FEF, %fprs | 336 | 5: wr %g0, FPRS_FEF, %fprs |
| 337 | membar #StoreLoad | #LoadLoad | ||
| 338 | sll %o0, 8, %o2 | 337 | sll %o0, 8, %o2 |
| 339 | 338 | ||
| 340 | add %g6, TI_FPREGS+0x80, %o3 | 339 | add %g6, TI_FPREGS+0x80, %o3 |
| 341 | add %g6, TI_FPREGS+0xc0, %o4 | 340 | add %g6, TI_FPREGS+0xc0, %o4 |
| 341 | membar #Sync | ||
| 342 | ldda [%o3 + %o2] ASI_BLK_P, %f32 | 342 | ldda [%o3 + %o2] ASI_BLK_P, %f32 |
| 343 | ldda [%o4 + %o2] ASI_BLK_P, %f48 | 343 | ldda [%o4 + %o2] ASI_BLK_P, %f48 |
| 344 | membar #Sync | 344 | membar #Sync |
| 345 | wr %g0, FPRS_DU, %fprs | 345 | wr %g0, FPRS_DU, %fprs |
| 346 | ba,pt %xcc, rt_continue | 346 | ba,pt %xcc, rt_continue |
| 347 | stb %l5, [%g6 + TI_FPDEPTH] | 347 | stb %l5, [%g6 + TI_FPDEPTH] |
| 348 | |||
| 349 | cplus_rinsn_1: | ||
| 350 | sethi %uhi(CTX_CHEETAH_PLUS_NUC), %l1 | ||
| 351 | |||
| 352 | .globl cheetah_plus_patch_rtrap | ||
| 353 | cheetah_plus_patch_rtrap: | ||
| 354 | /* We configure the dTLB512_0 for 4MB pages and the | ||
| 355 | * dTLB512_1 for 8K pages when in context zero. | ||
| 356 | */ | ||
| 357 | sethi %hi(cplus_rinsn_1), %o0 | ||
| 358 | sethi %hi(cplus_rtrap_insn_1), %o2 | ||
| 359 | lduw [%o0 + %lo(cplus_rinsn_1)], %o1 | ||
| 360 | or %o2, %lo(cplus_rtrap_insn_1), %o2 | ||
| 361 | stw %o1, [%o2] | ||
| 362 | flush %o2 | ||
| 363 | |||
| 364 | retl | ||
| 365 | nop | ||
diff --git a/arch/sparc64/kernel/setup.c b/arch/sparc64/kernel/setup.c index 4c9c8f241748..c1f34237cdf2 100644 --- a/arch/sparc64/kernel/setup.c +++ b/arch/sparc64/kernel/setup.c | |||
| @@ -187,17 +187,13 @@ int prom_callback(long *args) | |||
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | if ((va >= KERNBASE) && (va < (KERNBASE + (4 * 1024 * 1024)))) { | 189 | if ((va >= KERNBASE) && (va < (KERNBASE + (4 * 1024 * 1024)))) { |
| 190 | unsigned long kernel_pctx = 0; | 190 | extern unsigned long sparc64_kern_pri_context; |
| 191 | |||
| 192 | if (tlb_type == cheetah_plus) | ||
| 193 | kernel_pctx |= (CTX_CHEETAH_PLUS_NUC | | ||
| 194 | CTX_CHEETAH_PLUS_CTX0); | ||
| 195 | 191 | ||
| 196 | /* Spitfire Errata #32 workaround */ | 192 | /* Spitfire Errata #32 workaround */ |
| 197 | __asm__ __volatile__("stxa %0, [%1] %2\n\t" | 193 | __asm__ __volatile__("stxa %0, [%1] %2\n\t" |
| 198 | "flush %%g6" | 194 | "flush %%g6" |
| 199 | : /* No outputs */ | 195 | : /* No outputs */ |
| 200 | : "r" (kernel_pctx), | 196 | : "r" (sparc64_kern_pri_context), |
| 201 | "r" (PRIMARY_CONTEXT), | 197 | "r" (PRIMARY_CONTEXT), |
| 202 | "i" (ASI_DMMU)); | 198 | "i" (ASI_DMMU)); |
| 203 | 199 | ||
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index 590df5a16f5a..b137fd63f5e1 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
| @@ -1001,13 +1001,6 @@ void smp_penguin_jailcell(int irq, struct pt_regs *regs) | |||
| 1001 | preempt_enable(); | 1001 | preempt_enable(); |
| 1002 | } | 1002 | } |
| 1003 | 1003 | ||
| 1004 | extern unsigned long xcall_promstop; | ||
| 1005 | |||
| 1006 | void smp_promstop_others(void) | ||
| 1007 | { | ||
| 1008 | smp_cross_call(&xcall_promstop, 0, 0, 0); | ||
| 1009 | } | ||
| 1010 | |||
| 1011 | #define prof_multiplier(__cpu) cpu_data(__cpu).multiplier | 1004 | #define prof_multiplier(__cpu) cpu_data(__cpu).multiplier |
| 1012 | #define prof_counter(__cpu) cpu_data(__cpu).counter | 1005 | #define prof_counter(__cpu) cpu_data(__cpu).counter |
| 1013 | 1006 | ||
diff --git a/arch/sparc64/kernel/trampoline.S b/arch/sparc64/kernel/trampoline.S index 89f2fcfcd662..9478551cb020 100644 --- a/arch/sparc64/kernel/trampoline.S +++ b/arch/sparc64/kernel/trampoline.S | |||
| @@ -336,20 +336,13 @@ do_unlock: | |||
| 336 | call init_irqwork_curcpu | 336 | call init_irqwork_curcpu |
| 337 | nop | 337 | nop |
| 338 | 338 | ||
| 339 | BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g2,g3,1f) | 339 | /* Start using proper page size encodings in ctx register. */ |
| 340 | ba,pt %xcc, 2f | 340 | sethi %hi(sparc64_kern_pri_context), %g3 |
| 341 | nop | 341 | ldx [%g3 + %lo(sparc64_kern_pri_context)], %g2 |
| 342 | |||
| 343 | 1: /* Start using proper page size encodings in ctx register. */ | ||
| 344 | sethi %uhi(CTX_CHEETAH_PLUS_NUC), %g3 | ||
| 345 | mov PRIMARY_CONTEXT, %g1 | 342 | mov PRIMARY_CONTEXT, %g1 |
| 346 | sllx %g3, 32, %g3 | 343 | stxa %g2, [%g1] ASI_DMMU |
| 347 | sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 | ||
| 348 | or %g3, %g2, %g3 | ||
| 349 | stxa %g3, [%g1] ASI_DMMU | ||
| 350 | membar #Sync | 344 | membar #Sync |
| 351 | 345 | ||
| 352 | 2: | ||
| 353 | rdpr %pstate, %o1 | 346 | rdpr %pstate, %o1 |
| 354 | or %o1, PSTATE_IE, %o1 | 347 | or %o1, PSTATE_IE, %o1 |
| 355 | wrpr %o1, 0, %pstate | 348 | wrpr %o1, 0, %pstate |
diff --git a/arch/sparc64/kernel/winfixup.S b/arch/sparc64/kernel/winfixup.S index 99c809a1e5ac..39160926267b 100644 --- a/arch/sparc64/kernel/winfixup.S +++ b/arch/sparc64/kernel/winfixup.S | |||
| @@ -16,23 +16,14 @@ | |||
| 16 | .text | 16 | .text |
| 17 | 17 | ||
| 18 | set_pcontext: | 18 | set_pcontext: |
| 19 | cplus_winfixup_insn_1: | 19 | sethi %hi(sparc64_kern_pri_context), %l1 |
| 20 | sethi %hi(0), %l1 | 20 | ldx [%l1 + %lo(sparc64_kern_pri_context)], %l1 |
| 21 | mov PRIMARY_CONTEXT, %g1 | 21 | mov PRIMARY_CONTEXT, %g1 |
| 22 | sllx %l1, 32, %l1 | ||
| 23 | cplus_winfixup_insn_2: | ||
| 24 | sethi %hi(0), %g2 | ||
| 25 | or %l1, %g2, %l1 | ||
| 26 | stxa %l1, [%g1] ASI_DMMU | 22 | stxa %l1, [%g1] ASI_DMMU |
| 27 | flush %g6 | 23 | flush %g6 |
| 28 | retl | 24 | retl |
| 29 | nop | 25 | nop |
| 30 | 26 | ||
| 31 | cplus_wfinsn_1: | ||
| 32 | sethi %uhi(CTX_CHEETAH_PLUS_NUC), %l1 | ||
| 33 | cplus_wfinsn_2: | ||
| 34 | sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 | ||
| 35 | |||
| 36 | .align 32 | 27 | .align 32 |
| 37 | 28 | ||
| 38 | /* Here are the rules, pay attention. | 29 | /* Here are the rules, pay attention. |
| @@ -395,23 +386,3 @@ window_dax_from_user_common: | |||
| 395 | add %sp, PTREGS_OFF, %o0 | 386 | add %sp, PTREGS_OFF, %o0 |
| 396 | ba,pt %xcc, rtrap | 387 | ba,pt %xcc, rtrap |
| 397 | clr %l6 | 388 | clr %l6 |
| 398 | |||
| 399 | |||
| 400 | .globl cheetah_plus_patch_winfixup | ||
| 401 | cheetah_plus_patch_winfixup: | ||
| 402 | sethi %hi(cplus_wfinsn_1), %o0 | ||
| 403 | sethi %hi(cplus_winfixup_insn_1), %o2 | ||
| 404 | lduw [%o0 + %lo(cplus_wfinsn_1)], %o1 | ||
| 405 | or %o2, %lo(cplus_winfixup_insn_1), %o2 | ||
| 406 | stw %o1, [%o2] | ||
| 407 | flush %o2 | ||
| 408 | |||
| 409 | sethi %hi(cplus_wfinsn_2), %o0 | ||
| 410 | sethi %hi(cplus_winfixup_insn_2), %o2 | ||
| 411 | lduw [%o0 + %lo(cplus_wfinsn_2)], %o1 | ||
| 412 | or %o2, %lo(cplus_winfixup_insn_2), %o2 | ||
| 413 | stw %o1, [%o2] | ||
| 414 | flush %o2 | ||
| 415 | |||
| 416 | retl | ||
| 417 | nop | ||
diff --git a/arch/sparc64/lib/VISsave.S b/arch/sparc64/lib/VISsave.S index 4e18989bd602..a0ded5c5aa5c 100644 --- a/arch/sparc64/lib/VISsave.S +++ b/arch/sparc64/lib/VISsave.S | |||
| @@ -59,15 +59,17 @@ vis1: ldub [%g6 + TI_FPSAVED], %g3 | |||
| 59 | be,pn %icc, 9b | 59 | be,pn %icc, 9b |
| 60 | add %g6, TI_FPREGS, %g2 | 60 | add %g6, TI_FPREGS, %g2 |
| 61 | andcc %o5, FPRS_DL, %g0 | 61 | andcc %o5, FPRS_DL, %g0 |
| 62 | membar #StoreStore | #LoadStore | ||
| 63 | 62 | ||
| 64 | be,pn %icc, 4f | 63 | be,pn %icc, 4f |
| 65 | add %g6, TI_FPREGS+0x40, %g3 | 64 | add %g6, TI_FPREGS+0x40, %g3 |
| 65 | membar #Sync | ||
| 66 | stda %f0, [%g2 + %g1] ASI_BLK_P | 66 | stda %f0, [%g2 + %g1] ASI_BLK_P |
| 67 | stda %f16, [%g3 + %g1] ASI_BLK_P | 67 | stda %f16, [%g3 + %g1] ASI_BLK_P |
| 68 | membar #Sync | ||
| 68 | andcc %o5, FPRS_DU, %g0 | 69 | andcc %o5, FPRS_DU, %g0 |
| 69 | be,pn %icc, 5f | 70 | be,pn %icc, 5f |
| 70 | 4: add %g1, 128, %g1 | 71 | 4: add %g1, 128, %g1 |
| 72 | membar #Sync | ||
| 71 | stda %f32, [%g2 + %g1] ASI_BLK_P | 73 | stda %f32, [%g2 + %g1] ASI_BLK_P |
| 72 | 74 | ||
| 73 | stda %f48, [%g3 + %g1] ASI_BLK_P | 75 | stda %f48, [%g3 + %g1] ASI_BLK_P |
| @@ -87,7 +89,7 @@ vis1: ldub [%g6 + TI_FPSAVED], %g3 | |||
| 87 | sll %g1, 5, %g1 | 89 | sll %g1, 5, %g1 |
| 88 | add %g6, TI_FPREGS+0xc0, %g3 | 90 | add %g6, TI_FPREGS+0xc0, %g3 |
| 89 | wr %g0, FPRS_FEF, %fprs | 91 | wr %g0, FPRS_FEF, %fprs |
| 90 | membar #StoreStore | #LoadStore | 92 | membar #Sync |
| 91 | stda %f32, [%g2 + %g1] ASI_BLK_P | 93 | stda %f32, [%g2 + %g1] ASI_BLK_P |
| 92 | stda %f48, [%g3 + %g1] ASI_BLK_P | 94 | stda %f48, [%g3 + %g1] ASI_BLK_P |
| 93 | membar #Sync | 95 | membar #Sync |
| @@ -128,8 +130,8 @@ VISenterhalf: | |||
| 128 | be,pn %icc, 4f | 130 | be,pn %icc, 4f |
| 129 | add %g6, TI_FPREGS, %g2 | 131 | add %g6, TI_FPREGS, %g2 |
| 130 | 132 | ||
| 131 | membar #StoreStore | #LoadStore | ||
| 132 | add %g6, TI_FPREGS+0x40, %g3 | 133 | add %g6, TI_FPREGS+0x40, %g3 |
| 134 | membar #Sync | ||
| 133 | stda %f0, [%g2 + %g1] ASI_BLK_P | 135 | stda %f0, [%g2 + %g1] ASI_BLK_P |
| 134 | stda %f16, [%g3 + %g1] ASI_BLK_P | 136 | stda %f16, [%g3 + %g1] ASI_BLK_P |
| 135 | membar #Sync | 137 | membar #Sync |
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c index 5db50524f20d..1e44ee26cee8 100644 --- a/arch/sparc64/mm/init.c +++ b/arch/sparc64/mm/init.c | |||
| @@ -105,7 +105,7 @@ static void __init read_obp_memory(const char *property, | |||
| 105 | regs[i].phys_addr = base; | 105 | regs[i].phys_addr = base; |
| 106 | regs[i].reg_size = size; | 106 | regs[i].reg_size = size; |
| 107 | } | 107 | } |
| 108 | sort(regs, ents, sizeof(struct linux_prom64_registers), | 108 | sort(regs, ents, sizeof(struct linux_prom64_registers), |
| 109 | cmp_p64, NULL); | 109 | cmp_p64, NULL); |
| 110 | } | 110 | } |
| 111 | 111 | ||
| @@ -133,6 +133,12 @@ extern unsigned int sparc_ramdisk_size; | |||
| 133 | 133 | ||
| 134 | struct page *mem_map_zero __read_mostly; | 134 | struct page *mem_map_zero __read_mostly; |
| 135 | 135 | ||
| 136 | unsigned int sparc64_highest_unlocked_tlb_ent __read_mostly; | ||
| 137 | |||
| 138 | unsigned long sparc64_kern_pri_context __read_mostly; | ||
| 139 | unsigned long sparc64_kern_pri_nuc_bits __read_mostly; | ||
| 140 | unsigned long sparc64_kern_sec_context __read_mostly; | ||
| 141 | |||
| 136 | int bigkernel = 0; | 142 | int bigkernel = 0; |
| 137 | 143 | ||
| 138 | /* XXX Tune this... */ | 144 | /* XXX Tune this... */ |
| @@ -361,7 +367,11 @@ struct linux_prom_translation { | |||
| 361 | unsigned long size; | 367 | unsigned long size; |
| 362 | unsigned long data; | 368 | unsigned long data; |
| 363 | }; | 369 | }; |
| 364 | static struct linux_prom_translation prom_trans[512] __initdata; | 370 | |
| 371 | /* Exported for kernel TLB miss handling in ktlb.S */ | ||
| 372 | struct linux_prom_translation prom_trans[512] __read_mostly; | ||
| 373 | unsigned int prom_trans_ents __read_mostly; | ||
| 374 | unsigned int swapper_pgd_zero __read_mostly; | ||
| 365 | 375 | ||
| 366 | extern unsigned long prom_boot_page; | 376 | extern unsigned long prom_boot_page; |
| 367 | extern void prom_remap(unsigned long physpage, unsigned long virtpage, int mmu_ihandle); | 377 | extern void prom_remap(unsigned long physpage, unsigned long virtpage, int mmu_ihandle); |
| @@ -371,178 +381,57 @@ extern void register_prom_callbacks(void); | |||
| 371 | /* Exported for SMP bootup purposes. */ | 381 | /* Exported for SMP bootup purposes. */ |
| 372 | unsigned long kern_locked_tte_data; | 382 | unsigned long kern_locked_tte_data; |
| 373 | 383 | ||
| 374 | /* Exported for kernel TLB miss handling in ktlb.S */ | ||
| 375 | unsigned long prom_pmd_phys __read_mostly; | ||
| 376 | unsigned int swapper_pgd_zero __read_mostly; | ||
| 377 | |||
| 378 | /* Allocate power-of-2 aligned chunks from the end of the | ||
| 379 | * kernel image. Return physical address. | ||
| 380 | */ | ||
| 381 | static inline unsigned long early_alloc_phys(unsigned long size) | ||
| 382 | { | ||
| 383 | unsigned long base; | ||
| 384 | |||
| 385 | BUILD_BUG_ON(size & (size - 1)); | ||
| 386 | |||
| 387 | kern_size = (kern_size + (size - 1)) & ~(size - 1); | ||
| 388 | base = kern_base + kern_size; | ||
| 389 | kern_size += size; | ||
| 390 | |||
| 391 | return base; | ||
| 392 | } | ||
| 393 | |||
| 394 | static inline unsigned long load_phys32(unsigned long pa) | ||
| 395 | { | ||
| 396 | unsigned long val; | ||
| 397 | |||
| 398 | __asm__ __volatile__("lduwa [%1] %2, %0" | ||
| 399 | : "=&r" (val) | ||
| 400 | : "r" (pa), "i" (ASI_PHYS_USE_EC)); | ||
| 401 | |||
| 402 | return val; | ||
| 403 | } | ||
| 404 | |||
| 405 | static inline unsigned long load_phys64(unsigned long pa) | ||
| 406 | { | ||
| 407 | unsigned long val; | ||
| 408 | |||
| 409 | __asm__ __volatile__("ldxa [%1] %2, %0" | ||
| 410 | : "=&r" (val) | ||
| 411 | : "r" (pa), "i" (ASI_PHYS_USE_EC)); | ||
| 412 | |||
| 413 | return val; | ||
| 414 | } | ||
| 415 | |||
| 416 | static inline void store_phys32(unsigned long pa, unsigned long val) | ||
| 417 | { | ||
| 418 | __asm__ __volatile__("stwa %0, [%1] %2" | ||
| 419 | : /* no outputs */ | ||
| 420 | : "r" (val), "r" (pa), "i" (ASI_PHYS_USE_EC)); | ||
| 421 | } | ||
| 422 | |||
| 423 | static inline void store_phys64(unsigned long pa, unsigned long val) | ||
| 424 | { | ||
| 425 | __asm__ __volatile__("stxa %0, [%1] %2" | ||
| 426 | : /* no outputs */ | ||
| 427 | : "r" (val), "r" (pa), "i" (ASI_PHYS_USE_EC)); | ||
| 428 | } | ||
| 429 | |||
| 430 | #define BASE_PAGE_SIZE 8192 | ||
| 431 | |||
| 432 | /* | 384 | /* |
| 433 | * Translate PROM's mapping we capture at boot time into physical address. | 385 | * Translate PROM's mapping we capture at boot time into physical address. |
| 434 | * The second parameter is only set from prom_callback() invocations. | 386 | * The second parameter is only set from prom_callback() invocations. |
| 435 | */ | 387 | */ |
| 436 | unsigned long prom_virt_to_phys(unsigned long promva, int *error) | 388 | unsigned long prom_virt_to_phys(unsigned long promva, int *error) |
| 437 | { | 389 | { |
| 438 | unsigned long pmd_phys = (prom_pmd_phys + | 390 | int i; |
| 439 | ((promva >> 23) & 0x7ff) * sizeof(pmd_t)); | ||
| 440 | unsigned long pte_phys; | ||
| 441 | pmd_t pmd_ent; | ||
| 442 | pte_t pte_ent; | ||
| 443 | unsigned long base; | ||
| 444 | |||
| 445 | pmd_val(pmd_ent) = load_phys32(pmd_phys); | ||
| 446 | if (pmd_none(pmd_ent)) { | ||
| 447 | if (error) | ||
| 448 | *error = 1; | ||
| 449 | return 0; | ||
| 450 | } | ||
| 451 | 391 | ||
| 452 | pte_phys = (unsigned long)pmd_val(pmd_ent) << 11UL; | 392 | for (i = 0; i < prom_trans_ents; i++) { |
| 453 | pte_phys += ((promva >> 13) & 0x3ff) * sizeof(pte_t); | 393 | struct linux_prom_translation *p = &prom_trans[i]; |
| 454 | pte_val(pte_ent) = load_phys64(pte_phys); | 394 | |
| 455 | if (!pte_present(pte_ent)) { | 395 | if (promva >= p->virt && |
| 456 | if (error) | 396 | promva < (p->virt + p->size)) { |
| 457 | *error = 1; | 397 | unsigned long base = p->data & _PAGE_PADDR; |
| 458 | return 0; | 398 | |
| 459 | } | 399 | if (error) |
| 460 | if (error) { | 400 | *error = 0; |
| 461 | *error = 0; | 401 | return base + (promva & (8192 - 1)); |
| 462 | return pte_val(pte_ent); | 402 | } |
| 463 | } | 403 | } |
| 464 | base = pte_val(pte_ent) & _PAGE_PADDR; | 404 | if (error) |
| 465 | return (base + (promva & (BASE_PAGE_SIZE - 1))); | 405 | *error = 1; |
| 406 | return 0UL; | ||
| 466 | } | 407 | } |
| 467 | 408 | ||
| 468 | /* The obp translations are saved based on 8k pagesize, since obp can | 409 | /* The obp translations are saved based on 8k pagesize, since obp can |
| 469 | * use a mixture of pagesizes. Misses to the LOW_OBP_ADDRESS -> | 410 | * use a mixture of pagesizes. Misses to the LOW_OBP_ADDRESS -> |
| 470 | * HI_OBP_ADDRESS range are handled in entry.S and do not use the vpte | 411 | * HI_OBP_ADDRESS range are handled in ktlb.S and do not use the vpte |
| 471 | * scheme (also, see rant in inherit_locked_prom_mappings()). | 412 | * scheme (also, see rant in inherit_locked_prom_mappings()). |
| 472 | */ | 413 | */ |
| 473 | static void __init build_obp_range(unsigned long start, unsigned long end, unsigned long data) | ||
| 474 | { | ||
| 475 | unsigned long vaddr; | ||
| 476 | |||
| 477 | for (vaddr = start; vaddr < end; vaddr += BASE_PAGE_SIZE) { | ||
| 478 | unsigned long val, pte_phys, pmd_phys; | ||
| 479 | pmd_t pmd_ent; | ||
| 480 | int i; | ||
| 481 | |||
| 482 | pmd_phys = (prom_pmd_phys + | ||
| 483 | (((vaddr >> 23) & 0x7ff) * sizeof(pmd_t))); | ||
| 484 | pmd_val(pmd_ent) = load_phys32(pmd_phys); | ||
| 485 | if (pmd_none(pmd_ent)) { | ||
| 486 | pte_phys = early_alloc_phys(BASE_PAGE_SIZE); | ||
| 487 | |||
| 488 | for (i = 0; i < BASE_PAGE_SIZE / sizeof(pte_t); i++) | ||
| 489 | store_phys64(pte_phys+i*sizeof(pte_t),0); | ||
| 490 | |||
| 491 | pmd_val(pmd_ent) = pte_phys >> 11UL; | ||
| 492 | store_phys32(pmd_phys, pmd_val(pmd_ent)); | ||
| 493 | } | ||
| 494 | |||
| 495 | pte_phys = (unsigned long)pmd_val(pmd_ent) << 11UL; | ||
| 496 | pte_phys += (((vaddr >> 13) & 0x3ff) * sizeof(pte_t)); | ||
| 497 | |||
| 498 | val = data; | ||
| 499 | |||
| 500 | /* Clear diag TTE bits. */ | ||
| 501 | if (tlb_type == spitfire) | ||
| 502 | val &= ~0x0003fe0000000000UL; | ||
| 503 | |||
| 504 | store_phys64(pte_phys, val | _PAGE_MODIFIED); | ||
| 505 | |||
| 506 | data += BASE_PAGE_SIZE; | ||
| 507 | } | ||
| 508 | } | ||
| 509 | |||
| 510 | static inline int in_obp_range(unsigned long vaddr) | 414 | static inline int in_obp_range(unsigned long vaddr) |
| 511 | { | 415 | { |
| 512 | return (vaddr >= LOW_OBP_ADDRESS && | 416 | return (vaddr >= LOW_OBP_ADDRESS && |
| 513 | vaddr < HI_OBP_ADDRESS); | 417 | vaddr < HI_OBP_ADDRESS); |
| 514 | } | 418 | } |
| 515 | 419 | ||
| 516 | #define OBP_PMD_SIZE 2048 | 420 | static int cmp_ptrans(const void *a, const void *b) |
| 517 | static void __init build_obp_pgtable(int prom_trans_ents) | ||
| 518 | { | 421 | { |
| 519 | unsigned long i; | 422 | const struct linux_prom_translation *x = a, *y = b; |
| 520 | |||
| 521 | prom_pmd_phys = early_alloc_phys(OBP_PMD_SIZE); | ||
| 522 | for (i = 0; i < OBP_PMD_SIZE; i += 4) | ||
| 523 | store_phys32(prom_pmd_phys + i, 0); | ||
| 524 | 423 | ||
| 525 | for (i = 0; i < prom_trans_ents; i++) { | 424 | if (x->virt > y->virt) |
| 526 | unsigned long start, end; | 425 | return 1; |
| 527 | 426 | if (x->virt < y->virt) | |
| 528 | if (!in_obp_range(prom_trans[i].virt)) | 427 | return -1; |
| 529 | continue; | 428 | return 0; |
| 530 | |||
| 531 | start = prom_trans[i].virt; | ||
| 532 | end = start + prom_trans[i].size; | ||
| 533 | if (end > HI_OBP_ADDRESS) | ||
| 534 | end = HI_OBP_ADDRESS; | ||
| 535 | |||
| 536 | build_obp_range(start, end, prom_trans[i].data); | ||
| 537 | } | ||
| 538 | } | 429 | } |
| 539 | 430 | ||
| 540 | /* Read OBP translations property into 'prom_trans[]'. | 431 | /* Read OBP translations property into 'prom_trans[]'. */ |
| 541 | * Return the number of entries. | 432 | static void __init read_obp_translations(void) |
| 542 | */ | ||
| 543 | static int __init read_obp_translations(void) | ||
| 544 | { | 433 | { |
| 545 | int n, node; | 434 | int n, node, ents, first, last, i; |
| 546 | 435 | ||
| 547 | node = prom_finddevice("/virtual-memory"); | 436 | node = prom_finddevice("/virtual-memory"); |
| 548 | n = prom_getproplen(node, "translations"); | 437 | n = prom_getproplen(node, "translations"); |
| @@ -561,8 +450,44 @@ static int __init read_obp_translations(void) | |||
| 561 | prom_printf("prom_mappings: Couldn't get property.\n"); | 450 | prom_printf("prom_mappings: Couldn't get property.\n"); |
| 562 | prom_halt(); | 451 | prom_halt(); |
| 563 | } | 452 | } |
| 453 | |||
| 564 | n = n / sizeof(struct linux_prom_translation); | 454 | n = n / sizeof(struct linux_prom_translation); |
| 565 | return n; | 455 | |
| 456 | ents = n; | ||
| 457 | |||
| 458 | sort(prom_trans, ents, sizeof(struct linux_prom_translation), | ||
| 459 | cmp_ptrans, NULL); | ||
| 460 | |||
| 461 | /* Now kick out all the non-OBP entries. */ | ||
| 462 | for (i = 0; i < ents; i++) { | ||
| 463 | if (in_obp_range(prom_trans[i].virt)) | ||
| 464 | break; | ||
| 465 | } | ||
| 466 | first = i; | ||
| 467 | for (; i < ents; i++) { | ||
| 468 | if (!in_obp_range(prom_trans[i].virt)) | ||
| 469 | break; | ||
| 470 | } | ||
| 471 | last = i; | ||
| 472 | |||
| 473 | for (i = 0; i < (last - first); i++) { | ||
| 474 | struct linux_prom_translation *src = &prom_trans[i + first]; | ||
| 475 | struct linux_prom_translation *dest = &prom_trans[i]; | ||
| 476 | |||
| 477 | *dest = *src; | ||
| 478 | } | ||
| 479 | for (; i < ents; i++) { | ||
| 480 | struct linux_prom_translation *dest = &prom_trans[i]; | ||
| 481 | dest->virt = dest->size = dest->data = 0x0UL; | ||
| 482 | } | ||
| 483 | |||
| 484 | prom_trans_ents = last - first; | ||
| 485 | |||
| 486 | if (tlb_type == spitfire) { | ||
| 487 | /* Clear diag TTE bits. */ | ||
| 488 | for (i = 0; i < prom_trans_ents; i++) | ||
| 489 | prom_trans[i].data &= ~0x0003fe0000000000UL; | ||
| 490 | } | ||
| 566 | } | 491 | } |
| 567 | 492 | ||
| 568 | static void __init remap_kernel(void) | 493 | static void __init remap_kernel(void) |
| @@ -582,29 +507,36 @@ static void __init remap_kernel(void) | |||
| 582 | prom_dtlb_load(tlb_ent, tte_data, tte_vaddr); | 507 | prom_dtlb_load(tlb_ent, tte_data, tte_vaddr); |
| 583 | prom_itlb_load(tlb_ent, tte_data, tte_vaddr); | 508 | prom_itlb_load(tlb_ent, tte_data, tte_vaddr); |
| 584 | if (bigkernel) { | 509 | if (bigkernel) { |
| 585 | prom_dtlb_load(tlb_ent - 1, | 510 | tlb_ent -= 1; |
| 511 | prom_dtlb_load(tlb_ent, | ||
| 586 | tte_data + 0x400000, | 512 | tte_data + 0x400000, |
| 587 | tte_vaddr + 0x400000); | 513 | tte_vaddr + 0x400000); |
| 588 | prom_itlb_load(tlb_ent - 1, | 514 | prom_itlb_load(tlb_ent, |
| 589 | tte_data + 0x400000, | 515 | tte_data + 0x400000, |
| 590 | tte_vaddr + 0x400000); | 516 | tte_vaddr + 0x400000); |
| 591 | } | 517 | } |
| 518 | sparc64_highest_unlocked_tlb_ent = tlb_ent - 1; | ||
| 519 | if (tlb_type == cheetah_plus) { | ||
| 520 | sparc64_kern_pri_context = (CTX_CHEETAH_PLUS_CTX0 | | ||
| 521 | CTX_CHEETAH_PLUS_NUC); | ||
| 522 | sparc64_kern_pri_nuc_bits = CTX_CHEETAH_PLUS_NUC; | ||
| 523 | sparc64_kern_sec_context = CTX_CHEETAH_PLUS_CTX0; | ||
| 524 | } | ||
| 592 | } | 525 | } |
| 593 | 526 | ||
| 527 | |||
| 594 | static void __init inherit_prom_mappings(void) | 528 | static void __init inherit_prom_mappings(void) |
| 595 | { | 529 | { |
| 596 | int n; | 530 | read_obp_translations(); |
| 597 | |||
| 598 | n = read_obp_translations(); | ||
| 599 | build_obp_pgtable(n); | ||
| 600 | 531 | ||
| 601 | /* Now fixup OBP's idea about where we really are mapped. */ | 532 | /* Now fixup OBP's idea about where we really are mapped. */ |
| 602 | prom_printf("Remapping the kernel... "); | 533 | prom_printf("Remapping the kernel... "); |
| 603 | remap_kernel(); | 534 | remap_kernel(); |
| 604 | |||
| 605 | prom_printf("done.\n"); | 535 | prom_printf("done.\n"); |
| 606 | 536 | ||
| 537 | prom_printf("Registering callbacks... "); | ||
| 607 | register_prom_callbacks(); | 538 | register_prom_callbacks(); |
| 539 | prom_printf("done.\n"); | ||
| 608 | } | 540 | } |
| 609 | 541 | ||
| 610 | /* The OBP specifications for sun4u mark 0xfffffffc00000000 and | 542 | /* The OBP specifications for sun4u mark 0xfffffffc00000000 and |
| @@ -788,8 +720,8 @@ void inherit_locked_prom_mappings(int save_p) | |||
| 788 | } | 720 | } |
| 789 | } | 721 | } |
| 790 | if (tlb_type == spitfire) { | 722 | if (tlb_type == spitfire) { |
| 791 | int high = SPITFIRE_HIGHEST_LOCKED_TLBENT - bigkernel; | 723 | int high = sparc64_highest_unlocked_tlb_ent; |
| 792 | for (i = 0; i < high; i++) { | 724 | for (i = 0; i <= high; i++) { |
| 793 | unsigned long data; | 725 | unsigned long data; |
| 794 | 726 | ||
| 795 | /* Spitfire Errata #32 workaround */ | 727 | /* Spitfire Errata #32 workaround */ |
| @@ -877,9 +809,9 @@ void inherit_locked_prom_mappings(int save_p) | |||
| 877 | } | 809 | } |
| 878 | } | 810 | } |
| 879 | } else if (tlb_type == cheetah || tlb_type == cheetah_plus) { | 811 | } else if (tlb_type == cheetah || tlb_type == cheetah_plus) { |
| 880 | int high = CHEETAH_HIGHEST_LOCKED_TLBENT - bigkernel; | 812 | int high = sparc64_highest_unlocked_tlb_ent; |
| 881 | 813 | ||
| 882 | for (i = 0; i < high; i++) { | 814 | for (i = 0; i <= high; i++) { |
| 883 | unsigned long data; | 815 | unsigned long data; |
| 884 | 816 | ||
| 885 | data = cheetah_get_ldtlb_data(i); | 817 | data = cheetah_get_ldtlb_data(i); |
| @@ -1556,7 +1488,6 @@ void __init paging_init(void) | |||
| 1556 | 1488 | ||
| 1557 | swapper_pgd_zero = pgd_val(swapper_pg_dir[0]); | 1489 | swapper_pgd_zero = pgd_val(swapper_pg_dir[0]); |
| 1558 | 1490 | ||
| 1559 | /* Inherit non-locked OBP mappings. */ | ||
| 1560 | inherit_prom_mappings(); | 1491 | inherit_prom_mappings(); |
| 1561 | 1492 | ||
| 1562 | /* Ok, we can use our TLB miss and window trap handlers safely. | 1493 | /* Ok, we can use our TLB miss and window trap handlers safely. |
diff --git a/arch/sparc64/mm/ultra.S b/arch/sparc64/mm/ultra.S index 058b8126c1a7..e4c9151fa116 100644 --- a/arch/sparc64/mm/ultra.S +++ b/arch/sparc64/mm/ultra.S | |||
| @@ -453,22 +453,6 @@ xcall_flush_dcache_page_spitfire: /* %g1 == physical page address | |||
| 453 | nop | 453 | nop |
| 454 | nop | 454 | nop |
| 455 | 455 | ||
| 456 | .globl xcall_promstop | ||
| 457 | xcall_promstop: | ||
| 458 | rdpr %pstate, %g2 | ||
| 459 | wrpr %g2, PSTATE_IG | PSTATE_AG, %pstate | ||
| 460 | rdpr %pil, %g2 | ||
| 461 | wrpr %g0, 15, %pil | ||
| 462 | sethi %hi(109f), %g7 | ||
| 463 | b,pt %xcc, etrap_irq | ||
| 464 | 109: or %g7, %lo(109b), %g7 | ||
| 465 | flushw | ||
| 466 | call prom_stopself | ||
| 467 | nop | ||
| 468 | /* We should not return, just spin if we do... */ | ||
| 469 | 1: b,a,pt %xcc, 1b | ||
| 470 | nop | ||
| 471 | |||
| 472 | .data | 456 | .data |
| 473 | 457 | ||
| 474 | errata32_hwbug: | 458 | errata32_hwbug: |
diff --git a/arch/sparc64/prom/misc.c b/arch/sparc64/prom/misc.c index 9b895faf077b..87f5cfce23bb 100644 --- a/arch/sparc64/prom/misc.c +++ b/arch/sparc64/prom/misc.c | |||
| @@ -68,19 +68,11 @@ void prom_cmdline(void) | |||
| 68 | local_irq_restore(flags); | 68 | local_irq_restore(flags); |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | #ifdef CONFIG_SMP | ||
| 72 | extern void smp_promstop_others(void); | ||
| 73 | #endif | ||
| 74 | |||
| 75 | /* Drop into the prom, but completely terminate the program. | 71 | /* Drop into the prom, but completely terminate the program. |
| 76 | * No chance of continuing. | 72 | * No chance of continuing. |
| 77 | */ | 73 | */ |
| 78 | void prom_halt(void) | 74 | void prom_halt(void) |
| 79 | { | 75 | { |
| 80 | #ifdef CONFIG_SMP | ||
| 81 | smp_promstop_others(); | ||
| 82 | udelay(8000); | ||
| 83 | #endif | ||
| 84 | again: | 76 | again: |
| 85 | p1275_cmd("exit", P1275_INOUT(0, 0)); | 77 | p1275_cmd("exit", P1275_INOUT(0, 0)); |
| 86 | goto again; /* PROM is out to get me -DaveM */ | 78 | goto again; /* PROM is out to get me -DaveM */ |
| @@ -88,10 +80,6 @@ again: | |||
| 88 | 80 | ||
| 89 | void prom_halt_power_off(void) | 81 | void prom_halt_power_off(void) |
| 90 | { | 82 | { |
| 91 | #ifdef CONFIG_SMP | ||
| 92 | smp_promstop_others(); | ||
| 93 | udelay(8000); | ||
| 94 | #endif | ||
| 95 | p1275_cmd("SUNW,power-off", P1275_INOUT(0, 0)); | 83 | p1275_cmd("SUNW,power-off", P1275_INOUT(0, 0)); |
| 96 | 84 | ||
| 97 | /* if nothing else helps, we just halt */ | 85 | /* if nothing else helps, we just halt */ |
diff --git a/arch/um/Makefile b/arch/um/Makefile index 7af37e342e33..e1ffad224605 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile | |||
| @@ -152,7 +152,7 @@ archclean: | |||
| 152 | $(SYMLINK_HEADERS): | 152 | $(SYMLINK_HEADERS): |
| 153 | @echo ' SYMLINK $@' | 153 | @echo ' SYMLINK $@' |
| 154 | ifneq ($(KBUILD_SRC),) | 154 | ifneq ($(KBUILD_SRC),) |
| 155 | ln -fsn $(srctree)/include/asm-um/$(basename $(notdir $@))-$(SUBARCH)$(suffix $@) $@ | 155 | $(Q)ln -fsn $(srctree)/include/asm-um/$(basename $(notdir $@))-$(SUBARCH)$(suffix $@) $@ |
| 156 | else | 156 | else |
| 157 | $(Q)cd $(TOPDIR)/$(dir $@) ; \ | 157 | $(Q)cd $(TOPDIR)/$(dir $@) ; \ |
| 158 | ln -sf $(basename $(notdir $@))-$(SUBARCH)$(suffix $@) $(notdir $@) | 158 | ln -sf $(basename $(notdir $@))-$(SUBARCH)$(suffix $@) $(notdir $@) |
diff --git a/arch/um/drivers/Makefile b/arch/um/drivers/Makefile index 783e18cae090..de17d4c6e02d 100644 --- a/arch/um/drivers/Makefile +++ b/arch/um/drivers/Makefile | |||
| @@ -13,7 +13,7 @@ mcast-objs := mcast_kern.o mcast_user.o | |||
| 13 | net-objs := net_kern.o net_user.o | 13 | net-objs := net_kern.o net_user.o |
| 14 | mconsole-objs := mconsole_kern.o mconsole_user.o | 14 | mconsole-objs := mconsole_kern.o mconsole_user.o |
| 15 | hostaudio-objs := hostaudio_kern.o | 15 | hostaudio-objs := hostaudio_kern.o |
| 16 | ubd-objs := ubd_kern.o | 16 | ubd-objs := ubd_kern.o ubd_user.o |
| 17 | port-objs := port_kern.o port_user.o | 17 | port-objs := port_kern.o port_user.o |
| 18 | harddog-objs := harddog_kern.o harddog_user.o | 18 | harddog-objs := harddog_kern.o harddog_user.o |
| 19 | 19 | ||
diff --git a/arch/um/drivers/cow.h b/arch/um/drivers/cow.h index 4fcf3a8d13f4..dc36b222100b 100644 --- a/arch/um/drivers/cow.h +++ b/arch/um/drivers/cow.h | |||
| @@ -3,15 +3,40 @@ | |||
| 3 | 3 | ||
| 4 | #include <asm/types.h> | 4 | #include <asm/types.h> |
| 5 | 5 | ||
| 6 | #if defined(__BIG_ENDIAN) | 6 | #if defined(__KERNEL__) |
| 7 | # define ntohll(x) (x) | 7 | |
| 8 | # define htonll(x) (x) | 8 | # include <asm/byteorder.h> |
| 9 | #elif defined(__LITTLE_ENDIAN) | 9 | |
| 10 | # define ntohll(x) bswap_64(x) | 10 | # if defined(__BIG_ENDIAN) |
| 11 | # define htonll(x) bswap_64(x) | 11 | # define ntohll(x) (x) |
| 12 | # define htonll(x) (x) | ||
| 13 | # elif defined(__LITTLE_ENDIAN) | ||
| 14 | # define ntohll(x) be64_to_cpu(x) | ||
| 15 | # define htonll(x) cpu_to_be64(x) | ||
| 16 | # else | ||
| 17 | # error "Could not determine byte order" | ||
| 18 | # endif | ||
| 19 | |||
| 12 | #else | 20 | #else |
| 13 | #error "__BYTE_ORDER not defined" | 21 | /* For the definition of ntohl, htonl and __BYTE_ORDER */ |
| 22 | #include <endian.h> | ||
| 23 | #include <netinet/in.h> | ||
| 24 | #if defined(__BYTE_ORDER) | ||
| 25 | |||
| 26 | # if __BYTE_ORDER == __BIG_ENDIAN | ||
| 27 | # define ntohll(x) (x) | ||
| 28 | # define htonll(x) (x) | ||
| 29 | # elif __BYTE_ORDER == __LITTLE_ENDIAN | ||
| 30 | # define ntohll(x) bswap_64(x) | ||
| 31 | # define htonll(x) bswap_64(x) | ||
| 32 | # else | ||
| 33 | # error "Could not determine byte order: __BYTE_ORDER uncorrectly defined" | ||
| 34 | # endif | ||
| 35 | |||
| 36 | #else /* ! defined(__BYTE_ORDER) */ | ||
| 37 | # error "Could not determine byte order: __BYTE_ORDER not defined" | ||
| 14 | #endif | 38 | #endif |
| 39 | #endif /* ! defined(__KERNEL__) */ | ||
| 15 | 40 | ||
| 16 | extern int init_cow_file(int fd, char *cow_file, char *backing_file, | 41 | extern int init_cow_file(int fd, char *cow_file, char *backing_file, |
| 17 | int sectorsize, int alignment, int *bitmap_offset_out, | 42 | int sectorsize, int alignment, int *bitmap_offset_out, |
diff --git a/arch/um/drivers/cow_user.c b/arch/um/drivers/cow_user.c index a8ce6fc3ef26..fbe2217db5dd 100644 --- a/arch/um/drivers/cow_user.c +++ b/arch/um/drivers/cow_user.c | |||
| @@ -9,7 +9,6 @@ | |||
| 9 | #include <sys/time.h> | 9 | #include <sys/time.h> |
| 10 | #include <sys/param.h> | 10 | #include <sys/param.h> |
| 11 | #include <sys/user.h> | 11 | #include <sys/user.h> |
| 12 | #include <netinet/in.h> | ||
| 13 | 12 | ||
| 14 | #include "os.h" | 13 | #include "os.h" |
| 15 | 14 | ||
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index e77a38da4350..f73134333f64 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
| @@ -35,7 +35,6 @@ | |||
| 35 | #include "linux/blkpg.h" | 35 | #include "linux/blkpg.h" |
| 36 | #include "linux/genhd.h" | 36 | #include "linux/genhd.h" |
| 37 | #include "linux/spinlock.h" | 37 | #include "linux/spinlock.h" |
| 38 | #include "asm/atomic.h" | ||
| 39 | #include "asm/segment.h" | 38 | #include "asm/segment.h" |
| 40 | #include "asm/uaccess.h" | 39 | #include "asm/uaccess.h" |
| 41 | #include "asm/irq.h" | 40 | #include "asm/irq.h" |
| @@ -54,21 +53,20 @@ | |||
| 54 | #include "mem.h" | 53 | #include "mem.h" |
| 55 | #include "mem_kern.h" | 54 | #include "mem_kern.h" |
| 56 | #include "cow.h" | 55 | #include "cow.h" |
| 57 | #include "aio.h" | ||
| 58 | 56 | ||
| 59 | enum ubd_req { UBD_READ, UBD_WRITE }; | 57 | enum ubd_req { UBD_READ, UBD_WRITE }; |
| 60 | 58 | ||
| 61 | struct io_thread_req { | 59 | struct io_thread_req { |
| 62 | enum aio_type op; | 60 | enum ubd_req op; |
| 63 | int fds[2]; | 61 | int fds[2]; |
| 64 | unsigned long offsets[2]; | 62 | unsigned long offsets[2]; |
| 65 | unsigned long long offset; | 63 | unsigned long long offset; |
| 66 | unsigned long length; | 64 | unsigned long length; |
| 67 | char *buffer; | 65 | char *buffer; |
| 68 | int sectorsize; | 66 | int sectorsize; |
| 69 | int bitmap_offset; | 67 | unsigned long sector_mask; |
| 70 | long bitmap_start; | 68 | unsigned long long cow_offset; |
| 71 | long bitmap_end; | 69 | unsigned long bitmap_words[2]; |
| 72 | int error; | 70 | int error; |
| 73 | }; | 71 | }; |
| 74 | 72 | ||
| @@ -82,31 +80,28 @@ extern int create_cow_file(char *cow_file, char *backing_file, | |||
| 82 | unsigned long *bitmap_len_out, | 80 | unsigned long *bitmap_len_out, |
| 83 | int *data_offset_out); | 81 | int *data_offset_out); |
| 84 | extern int read_cow_bitmap(int fd, void *buf, int offset, int len); | 82 | extern int read_cow_bitmap(int fd, void *buf, int offset, int len); |
| 85 | extern void do_io(struct io_thread_req *req, struct request *r, | 83 | extern void do_io(struct io_thread_req *req); |
| 86 | unsigned long *bitmap); | ||
| 87 | 84 | ||
| 88 | static inline int ubd_test_bit(__u64 bit, void *data) | 85 | static inline int ubd_test_bit(__u64 bit, unsigned char *data) |
| 89 | { | 86 | { |
| 90 | unsigned char *buffer = data; | ||
| 91 | __u64 n; | 87 | __u64 n; |
| 92 | int bits, off; | 88 | int bits, off; |
| 93 | 89 | ||
| 94 | bits = sizeof(buffer[0]) * 8; | 90 | bits = sizeof(data[0]) * 8; |
| 95 | n = bit / bits; | 91 | n = bit / bits; |
| 96 | off = bit % bits; | 92 | off = bit % bits; |
| 97 | return((buffer[n] & (1 << off)) != 0); | 93 | return((data[n] & (1 << off)) != 0); |
| 98 | } | 94 | } |
| 99 | 95 | ||
| 100 | static inline void ubd_set_bit(__u64 bit, void *data) | 96 | static inline void ubd_set_bit(__u64 bit, unsigned char *data) |
| 101 | { | 97 | { |
| 102 | unsigned char *buffer = data; | ||
| 103 | __u64 n; | 98 | __u64 n; |
| 104 | int bits, off; | 99 | int bits, off; |
| 105 | 100 | ||
| 106 | bits = sizeof(buffer[0]) * 8; | 101 | bits = sizeof(data[0]) * 8; |
| 107 | n = bit / bits; | 102 | n = bit / bits; |
| 108 | off = bit % bits; | 103 | off = bit % bits; |
| 109 | buffer[n] |= (1 << off); | 104 | data[n] |= (1 << off); |
| 110 | } | 105 | } |
| 111 | /*End stuff from ubd_user.h*/ | 106 | /*End stuff from ubd_user.h*/ |
| 112 | 107 | ||
| @@ -115,6 +110,8 @@ static inline void ubd_set_bit(__u64 bit, void *data) | |||
| 115 | static DEFINE_SPINLOCK(ubd_io_lock); | 110 | static DEFINE_SPINLOCK(ubd_io_lock); |
| 116 | static DEFINE_SPINLOCK(ubd_lock); | 111 | static DEFINE_SPINLOCK(ubd_lock); |
| 117 | 112 | ||
| 113 | static void (*do_ubd)(void); | ||
| 114 | |||
| 118 | static int ubd_open(struct inode * inode, struct file * filp); | 115 | static int ubd_open(struct inode * inode, struct file * filp); |
| 119 | static int ubd_release(struct inode * inode, struct file * file); | 116 | static int ubd_release(struct inode * inode, struct file * file); |
| 120 | static int ubd_ioctl(struct inode * inode, struct file * file, | 117 | static int ubd_ioctl(struct inode * inode, struct file * file, |
| @@ -161,8 +158,6 @@ struct cow { | |||
| 161 | int data_offset; | 158 | int data_offset; |
| 162 | }; | 159 | }; |
| 163 | 160 | ||
| 164 | #define MAX_SG 64 | ||
| 165 | |||
| 166 | struct ubd { | 161 | struct ubd { |
| 167 | char *file; | 162 | char *file; |
| 168 | int count; | 163 | int count; |
| @@ -173,7 +168,6 @@ struct ubd { | |||
| 173 | int no_cow; | 168 | int no_cow; |
| 174 | struct cow cow; | 169 | struct cow cow; |
| 175 | struct platform_device pdev; | 170 | struct platform_device pdev; |
| 176 | struct scatterlist sg[MAX_SG]; | ||
| 177 | }; | 171 | }; |
| 178 | 172 | ||
| 179 | #define DEFAULT_COW { \ | 173 | #define DEFAULT_COW { \ |
| @@ -466,114 +460,81 @@ __uml_help(fakehd, | |||
| 466 | ); | 460 | ); |
| 467 | 461 | ||
| 468 | static void do_ubd_request(request_queue_t * q); | 462 | static void do_ubd_request(request_queue_t * q); |
| 469 | static int in_ubd; | 463 | |
| 464 | /* Only changed by ubd_init, which is an initcall. */ | ||
| 465 | int thread_fd = -1; | ||
| 470 | 466 | ||
| 471 | /* Changed by ubd_handler, which is serialized because interrupts only | 467 | /* Changed by ubd_handler, which is serialized because interrupts only |
| 472 | * happen on CPU 0. | 468 | * happen on CPU 0. |
| 473 | */ | 469 | */ |
| 474 | int intr_count = 0; | 470 | int intr_count = 0; |
| 475 | 471 | ||
| 476 | static void ubd_end_request(struct request *req, int bytes, int uptodate) | 472 | /* call ubd_finish if you need to serialize */ |
| 473 | static void __ubd_finish(struct request *req, int error) | ||
| 477 | { | 474 | { |
| 478 | if (!end_that_request_first(req, uptodate, bytes >> 9)) { | 475 | int nsect; |
| 479 | add_disk_randomness(req->rq_disk); | 476 | |
| 480 | end_that_request_last(req); | 477 | if(error){ |
| 478 | end_request(req, 0); | ||
| 479 | return; | ||
| 481 | } | 480 | } |
| 481 | nsect = req->current_nr_sectors; | ||
| 482 | req->sector += nsect; | ||
| 483 | req->buffer += nsect << 9; | ||
| 484 | req->errors = 0; | ||
| 485 | req->nr_sectors -= nsect; | ||
| 486 | req->current_nr_sectors = 0; | ||
| 487 | end_request(req, 1); | ||
| 482 | } | 488 | } |
| 483 | 489 | ||
| 484 | /* call ubd_finish if you need to serialize */ | 490 | static inline void ubd_finish(struct request *req, int error) |
| 485 | static void __ubd_finish(struct request *req, int bytes) | ||
| 486 | { | 491 | { |
| 487 | if(bytes < 0){ | 492 | spin_lock(&ubd_io_lock); |
| 488 | ubd_end_request(req, 0, 0); | 493 | __ubd_finish(req, error); |
| 489 | return; | 494 | spin_unlock(&ubd_io_lock); |
| 490 | } | ||
| 491 | |||
| 492 | ubd_end_request(req, bytes, 1); | ||
| 493 | } | 495 | } |
| 494 | 496 | ||
| 495 | static inline void ubd_finish(struct request *req, int bytes) | 497 | /* Called without ubd_io_lock held */ |
| 498 | static void ubd_handler(void) | ||
| 496 | { | 499 | { |
| 497 | spin_lock(&ubd_io_lock); | 500 | struct io_thread_req req; |
| 498 | __ubd_finish(req, bytes); | 501 | struct request *rq = elv_next_request(ubd_queue); |
| 499 | spin_unlock(&ubd_io_lock); | 502 | int n; |
| 503 | |||
| 504 | do_ubd = NULL; | ||
| 505 | intr_count++; | ||
| 506 | n = os_read_file(thread_fd, &req, sizeof(req)); | ||
| 507 | if(n != sizeof(req)){ | ||
| 508 | printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " | ||
| 509 | "err = %d\n", os_getpid(), -n); | ||
| 510 | spin_lock(&ubd_io_lock); | ||
| 511 | end_request(rq, 0); | ||
| 512 | spin_unlock(&ubd_io_lock); | ||
| 513 | return; | ||
| 514 | } | ||
| 515 | |||
| 516 | ubd_finish(rq, req.error); | ||
| 517 | reactivate_fd(thread_fd, UBD_IRQ); | ||
| 518 | do_ubd_request(ubd_queue); | ||
| 500 | } | 519 | } |
| 501 | 520 | ||
| 502 | struct bitmap_io { | ||
| 503 | atomic_t count; | ||
| 504 | struct aio_context aio; | ||
| 505 | }; | ||
| 506 | |||
| 507 | struct ubd_aio { | ||
| 508 | struct aio_context aio; | ||
| 509 | struct request *req; | ||
| 510 | int len; | ||
| 511 | struct bitmap_io *bitmap; | ||
| 512 | void *bitmap_buf; | ||
| 513 | }; | ||
| 514 | |||
| 515 | static int ubd_reply_fd = -1; | ||
| 516 | |||
| 517 | static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused) | 521 | static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused) |
| 518 | { | 522 | { |
| 519 | struct aio_thread_reply reply; | 523 | ubd_handler(); |
| 520 | struct ubd_aio *aio; | 524 | return(IRQ_HANDLED); |
| 521 | struct request *req; | 525 | } |
| 522 | int err, n, fd = (int) (long) dev; | ||
| 523 | |||
| 524 | while(1){ | ||
| 525 | err = os_read_file(fd, &reply, sizeof(reply)); | ||
| 526 | if(err == -EAGAIN) | ||
| 527 | break; | ||
| 528 | if(err < 0){ | ||
| 529 | printk("ubd_aio_handler - read returned err %d\n", | ||
| 530 | -err); | ||
| 531 | break; | ||
| 532 | } | ||
| 533 | |||
| 534 | aio = container_of(reply.data, struct ubd_aio, aio); | ||
| 535 | n = reply.err; | ||
| 536 | |||
| 537 | if(n == 0){ | ||
| 538 | req = aio->req; | ||
| 539 | req->nr_sectors -= aio->len >> 9; | ||
| 540 | |||
| 541 | if((aio->bitmap != NULL) && | ||
| 542 | (atomic_dec_and_test(&aio->bitmap->count))){ | ||
| 543 | aio->aio = aio->bitmap->aio; | ||
| 544 | aio->len = 0; | ||
| 545 | kfree(aio->bitmap); | ||
| 546 | aio->bitmap = NULL; | ||
| 547 | submit_aio(&aio->aio); | ||
| 548 | } | ||
| 549 | else { | ||
| 550 | if((req->nr_sectors == 0) && | ||
| 551 | (aio->bitmap == NULL)){ | ||
| 552 | int len = req->hard_nr_sectors << 9; | ||
| 553 | ubd_finish(req, len); | ||
| 554 | } | ||
| 555 | |||
| 556 | if(aio->bitmap_buf != NULL) | ||
| 557 | kfree(aio->bitmap_buf); | ||
| 558 | kfree(aio); | ||
| 559 | } | ||
| 560 | } | ||
| 561 | else if(n < 0){ | ||
| 562 | ubd_finish(aio->req, n); | ||
| 563 | if(aio->bitmap != NULL) | ||
| 564 | kfree(aio->bitmap); | ||
| 565 | if(aio->bitmap_buf != NULL) | ||
| 566 | kfree(aio->bitmap_buf); | ||
| 567 | kfree(aio); | ||
| 568 | } | ||
| 569 | } | ||
| 570 | reactivate_fd(fd, UBD_IRQ); | ||
| 571 | 526 | ||
| 572 | do_ubd_request(ubd_queue); | 527 | /* Only changed by ubd_init, which is an initcall. */ |
| 528 | static int io_pid = -1; | ||
| 573 | 529 | ||
| 574 | return(IRQ_HANDLED); | 530 | void kill_io_thread(void) |
| 531 | { | ||
| 532 | if(io_pid != -1) | ||
| 533 | os_kill_process(io_pid, 1); | ||
| 575 | } | 534 | } |
| 576 | 535 | ||
| 536 | __uml_exitcall(kill_io_thread); | ||
| 537 | |||
| 577 | static int ubd_file_size(struct ubd *dev, __u64 *size_out) | 538 | static int ubd_file_size(struct ubd *dev, __u64 *size_out) |
| 578 | { | 539 | { |
| 579 | char *file; | 540 | char *file; |
| @@ -608,7 +569,7 @@ static int ubd_open_dev(struct ubd *dev) | |||
| 608 | &dev->cow.data_offset, create_ptr); | 569 | &dev->cow.data_offset, create_ptr); |
| 609 | 570 | ||
| 610 | if((dev->fd == -ENOENT) && create_cow){ | 571 | if((dev->fd == -ENOENT) && create_cow){ |
| 611 | dev->fd = create_cow_file(dev->file, dev->cow.file, | 572 | dev->fd = create_cow_file(dev->file, dev->cow.file, |
| 612 | dev->openflags, 1 << 9, PAGE_SIZE, | 573 | dev->openflags, 1 << 9, PAGE_SIZE, |
| 613 | &dev->cow.bitmap_offset, | 574 | &dev->cow.bitmap_offset, |
| 614 | &dev->cow.bitmap_len, | 575 | &dev->cow.bitmap_len, |
| @@ -870,10 +831,6 @@ int ubd_init(void) | |||
| 870 | { | 831 | { |
| 871 | int i; | 832 | int i; |
| 872 | 833 | ||
| 873 | ubd_reply_fd = init_aio_irq(UBD_IRQ, "ubd", ubd_intr); | ||
| 874 | if(ubd_reply_fd < 0) | ||
| 875 | printk("Setting up ubd AIO failed, err = %d\n", ubd_reply_fd); | ||
| 876 | |||
| 877 | devfs_mk_dir("ubd"); | 834 | devfs_mk_dir("ubd"); |
| 878 | if (register_blkdev(MAJOR_NR, "ubd")) | 835 | if (register_blkdev(MAJOR_NR, "ubd")) |
| 879 | return -1; | 836 | return -1; |
| @@ -884,7 +841,6 @@ int ubd_init(void) | |||
| 884 | return -1; | 841 | return -1; |
| 885 | } | 842 | } |
| 886 | 843 | ||
| 887 | blk_queue_max_hw_segments(ubd_queue, MAX_SG); | ||
| 888 | if (fake_major != MAJOR_NR) { | 844 | if (fake_major != MAJOR_NR) { |
| 889 | char name[sizeof("ubd_nnn\0")]; | 845 | char name[sizeof("ubd_nnn\0")]; |
| 890 | 846 | ||
| @@ -896,12 +852,40 @@ int ubd_init(void) | |||
| 896 | driver_register(&ubd_driver); | 852 | driver_register(&ubd_driver); |
| 897 | for (i = 0; i < MAX_DEV; i++) | 853 | for (i = 0; i < MAX_DEV; i++) |
| 898 | ubd_add(i); | 854 | ubd_add(i); |
| 899 | |||
| 900 | return 0; | 855 | return 0; |
| 901 | } | 856 | } |
| 902 | 857 | ||
| 903 | late_initcall(ubd_init); | 858 | late_initcall(ubd_init); |
| 904 | 859 | ||
| 860 | int ubd_driver_init(void){ | ||
| 861 | unsigned long stack; | ||
| 862 | int err; | ||
| 863 | |||
| 864 | /* Set by CONFIG_BLK_DEV_UBD_SYNC or ubd=sync.*/ | ||
| 865 | if(global_openflags.s){ | ||
| 866 | printk(KERN_INFO "ubd: Synchronous mode\n"); | ||
| 867 | /* Letting ubd=sync be like using ubd#s= instead of ubd#= is | ||
| 868 | * enough. So use anyway the io thread. */ | ||
| 869 | } | ||
| 870 | stack = alloc_stack(0, 0); | ||
| 871 | io_pid = start_io_thread(stack + PAGE_SIZE - sizeof(void *), | ||
| 872 | &thread_fd); | ||
| 873 | if(io_pid < 0){ | ||
| 874 | printk(KERN_ERR | ||
| 875 | "ubd : Failed to start I/O thread (errno = %d) - " | ||
| 876 | "falling back to synchronous I/O\n", -io_pid); | ||
| 877 | io_pid = -1; | ||
| 878 | return(0); | ||
| 879 | } | ||
| 880 | err = um_request_irq(UBD_IRQ, thread_fd, IRQ_READ, ubd_intr, | ||
| 881 | SA_INTERRUPT, "ubd", ubd_dev); | ||
| 882 | if(err != 0) | ||
| 883 | printk(KERN_ERR "um_request_irq failed - errno = %d\n", -err); | ||
| 884 | return(err); | ||
| 885 | } | ||
| 886 | |||
| 887 | device_initcall(ubd_driver_init); | ||
| 888 | |||
| 905 | static int ubd_open(struct inode *inode, struct file *filp) | 889 | static int ubd_open(struct inode *inode, struct file *filp) |
| 906 | { | 890 | { |
| 907 | struct gendisk *disk = inode->i_bdev->bd_disk; | 891 | struct gendisk *disk = inode->i_bdev->bd_disk; |
| @@ -939,55 +923,105 @@ static int ubd_release(struct inode * inode, struct file * file) | |||
| 939 | return(0); | 923 | return(0); |
| 940 | } | 924 | } |
| 941 | 925 | ||
| 942 | static void cowify_bitmap(struct io_thread_req *req, unsigned long *bitmap) | 926 | static void cowify_bitmap(__u64 io_offset, int length, unsigned long *cow_mask, |
| 927 | __u64 *cow_offset, unsigned long *bitmap, | ||
| 928 | __u64 bitmap_offset, unsigned long *bitmap_words, | ||
| 929 | __u64 bitmap_len) | ||
| 943 | { | 930 | { |
| 944 | __u64 sector = req->offset / req->sectorsize; | 931 | __u64 sector = io_offset >> 9; |
| 945 | int i; | 932 | int i, update_bitmap = 0; |
| 933 | |||
| 934 | for(i = 0; i < length >> 9; i++){ | ||
| 935 | if(cow_mask != NULL) | ||
| 936 | ubd_set_bit(i, (unsigned char *) cow_mask); | ||
| 937 | if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) | ||
| 938 | continue; | ||
| 946 | 939 | ||
| 947 | for(i = 0; i < req->length / req->sectorsize; i++){ | 940 | update_bitmap = 1; |
| 948 | if(ubd_test_bit(sector + i, bitmap)) | 941 | ubd_set_bit(sector + i, (unsigned char *) bitmap); |
| 949 | continue; | 942 | } |
| 943 | |||
| 944 | if(!update_bitmap) | ||
| 945 | return; | ||
| 950 | 946 | ||
| 951 | if(req->bitmap_start == -1) | 947 | *cow_offset = sector / (sizeof(unsigned long) * 8); |
| 952 | req->bitmap_start = sector + i; | ||
| 953 | req->bitmap_end = sector + i + 1; | ||
| 954 | 948 | ||
| 955 | ubd_set_bit(sector + i, bitmap); | 949 | /* This takes care of the case where we're exactly at the end of the |
| 956 | } | 950 | * device, and *cow_offset + 1 is off the end. So, just back it up |
| 951 | * by one word. Thanks to Lynn Kerby for the fix and James McMechan | ||
| 952 | * for the original diagnosis. | ||
| 953 | */ | ||
| 954 | if(*cow_offset == ((bitmap_len + sizeof(unsigned long) - 1) / | ||
| 955 | sizeof(unsigned long) - 1)) | ||
| 956 | (*cow_offset)--; | ||
| 957 | |||
| 958 | bitmap_words[0] = bitmap[*cow_offset]; | ||
| 959 | bitmap_words[1] = bitmap[*cow_offset + 1]; | ||
| 960 | |||
| 961 | *cow_offset *= sizeof(unsigned long); | ||
| 962 | *cow_offset += bitmap_offset; | ||
| 963 | } | ||
| 964 | |||
| 965 | static void cowify_req(struct io_thread_req *req, unsigned long *bitmap, | ||
| 966 | __u64 bitmap_offset, __u64 bitmap_len) | ||
| 967 | { | ||
| 968 | __u64 sector = req->offset >> 9; | ||
| 969 | int i; | ||
| 970 | |||
| 971 | if(req->length > (sizeof(req->sector_mask) * 8) << 9) | ||
| 972 | panic("Operation too long"); | ||
| 973 | |||
| 974 | if(req->op == UBD_READ) { | ||
| 975 | for(i = 0; i < req->length >> 9; i++){ | ||
| 976 | if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) | ||
| 977 | ubd_set_bit(i, (unsigned char *) | ||
| 978 | &req->sector_mask); | ||
| 979 | } | ||
| 980 | } | ||
| 981 | else cowify_bitmap(req->offset, req->length, &req->sector_mask, | ||
| 982 | &req->cow_offset, bitmap, bitmap_offset, | ||
| 983 | req->bitmap_words, bitmap_len); | ||
| 957 | } | 984 | } |
| 958 | 985 | ||
| 959 | /* Called with ubd_io_lock held */ | 986 | /* Called with ubd_io_lock held */ |
| 960 | static int prepare_request(struct request *req, struct io_thread_req *io_req, | 987 | static int prepare_request(struct request *req, struct io_thread_req *io_req) |
| 961 | unsigned long long offset, int page_offset, | ||
| 962 | int len, struct page *page) | ||
| 963 | { | 988 | { |
| 964 | struct gendisk *disk = req->rq_disk; | 989 | struct gendisk *disk = req->rq_disk; |
| 965 | struct ubd *dev = disk->private_data; | 990 | struct ubd *dev = disk->private_data; |
| 991 | __u64 offset; | ||
| 992 | int len; | ||
| 993 | |||
| 994 | if(req->rq_status == RQ_INACTIVE) return(1); | ||
| 966 | 995 | ||
| 967 | /* This should be impossible now */ | 996 | /* This should be impossible now */ |
| 968 | if((rq_data_dir(req) == WRITE) && !dev->openflags.w){ | 997 | if((rq_data_dir(req) == WRITE) && !dev->openflags.w){ |
| 969 | printk("Write attempted on readonly ubd device %s\n", | 998 | printk("Write attempted on readonly ubd device %s\n", |
| 970 | disk->disk_name); | 999 | disk->disk_name); |
| 971 | ubd_end_request(req, 0, 0); | 1000 | end_request(req, 0); |
| 972 | return(1); | 1001 | return(1); |
| 973 | } | 1002 | } |
| 974 | 1003 | ||
| 1004 | offset = ((__u64) req->sector) << 9; | ||
| 1005 | len = req->current_nr_sectors << 9; | ||
| 1006 | |||
| 975 | io_req->fds[0] = (dev->cow.file != NULL) ? dev->cow.fd : dev->fd; | 1007 | io_req->fds[0] = (dev->cow.file != NULL) ? dev->cow.fd : dev->fd; |
| 976 | io_req->fds[1] = dev->fd; | 1008 | io_req->fds[1] = dev->fd; |
| 1009 | io_req->cow_offset = -1; | ||
| 977 | io_req->offset = offset; | 1010 | io_req->offset = offset; |
| 978 | io_req->length = len; | 1011 | io_req->length = len; |
| 979 | io_req->error = 0; | 1012 | io_req->error = 0; |
| 980 | io_req->op = (rq_data_dir(req) == READ) ? AIO_READ : AIO_WRITE; | 1013 | io_req->sector_mask = 0; |
| 1014 | |||
| 1015 | io_req->op = (rq_data_dir(req) == READ) ? UBD_READ : UBD_WRITE; | ||
| 981 | io_req->offsets[0] = 0; | 1016 | io_req->offsets[0] = 0; |
| 982 | io_req->offsets[1] = dev->cow.data_offset; | 1017 | io_req->offsets[1] = dev->cow.data_offset; |
| 983 | io_req->buffer = page_address(page) + page_offset; | 1018 | io_req->buffer = req->buffer; |
| 984 | io_req->sectorsize = 1 << 9; | 1019 | io_req->sectorsize = 1 << 9; |
| 985 | io_req->bitmap_offset = dev->cow.bitmap_offset; | ||
| 986 | io_req->bitmap_start = -1; | ||
| 987 | io_req->bitmap_end = -1; | ||
| 988 | 1020 | ||
| 989 | if((dev->cow.file != NULL) && (io_req->op == UBD_WRITE)) | 1021 | if(dev->cow.file != NULL) |
| 990 | cowify_bitmap(io_req, dev->cow.bitmap); | 1022 | cowify_req(io_req, dev->cow.bitmap, dev->cow.bitmap_offset, |
| 1023 | dev->cow.bitmap_len); | ||
| 1024 | |||
| 991 | return(0); | 1025 | return(0); |
| 992 | } | 1026 | } |
| 993 | 1027 | ||
| @@ -996,36 +1030,30 @@ static void do_ubd_request(request_queue_t *q) | |||
| 996 | { | 1030 | { |
| 997 | struct io_thread_req io_req; | 1031 | struct io_thread_req io_req; |
| 998 | struct request *req; | 1032 | struct request *req; |
| 999 | __u64 sector; | 1033 | int err, n; |
| 1000 | int err; | 1034 | |
| 1001 | 1035 | if(thread_fd == -1){ | |
| 1002 | if(in_ubd) | 1036 | while((req = elv_next_request(q)) != NULL){ |
| 1003 | return; | 1037 | err = prepare_request(req, &io_req); |
| 1004 | in_ubd = 1; | 1038 | if(!err){ |
| 1005 | while((req = elv_next_request(q)) != NULL){ | 1039 | do_io(&io_req); |
| 1006 | struct gendisk *disk = req->rq_disk; | 1040 | __ubd_finish(req, io_req.error); |
| 1007 | struct ubd *dev = disk->private_data; | 1041 | } |
| 1008 | int n, i; | 1042 | } |
| 1009 | 1043 | } | |
| 1010 | blkdev_dequeue_request(req); | 1044 | else { |
| 1011 | 1045 | if(do_ubd || (req = elv_next_request(q)) == NULL) | |
| 1012 | sector = req->sector; | 1046 | return; |
| 1013 | n = blk_rq_map_sg(q, req, dev->sg); | 1047 | err = prepare_request(req, &io_req); |
| 1014 | 1048 | if(!err){ | |
| 1015 | for(i = 0; i < n; i++){ | 1049 | do_ubd = ubd_handler; |
| 1016 | struct scatterlist *sg = &dev->sg[i]; | 1050 | n = os_write_file(thread_fd, (char *) &io_req, |
| 1017 | 1051 | sizeof(io_req)); | |
| 1018 | err = prepare_request(req, &io_req, sector << 9, | 1052 | if(n != sizeof(io_req)) |
| 1019 | sg->offset, sg->length, | 1053 | printk("write to io thread failed, " |
| 1020 | sg->page); | 1054 | "errno = %d\n", -n); |
| 1021 | if(err) | ||
| 1022 | continue; | ||
| 1023 | |||
| 1024 | sector += sg->length >> 9; | ||
| 1025 | do_io(&io_req, req, dev->cow.bitmap); | ||
| 1026 | } | 1055 | } |
| 1027 | } | 1056 | } |
| 1028 | in_ubd = 0; | ||
| 1029 | } | 1057 | } |
| 1030 | 1058 | ||
| 1031 | static int ubd_ioctl(struct inode * inode, struct file * file, | 1059 | static int ubd_ioctl(struct inode * inode, struct file * file, |
| @@ -1241,95 +1269,131 @@ int create_cow_file(char *cow_file, char *backing_file, struct openflags flags, | |||
| 1241 | return(err); | 1269 | return(err); |
| 1242 | } | 1270 | } |
| 1243 | 1271 | ||
| 1244 | void do_io(struct io_thread_req *req, struct request *r, unsigned long *bitmap) | 1272 | static int update_bitmap(struct io_thread_req *req) |
| 1245 | { | 1273 | { |
| 1246 | struct ubd_aio *aio; | 1274 | int n; |
| 1247 | struct bitmap_io *bitmap_io = NULL; | ||
| 1248 | char *buf; | ||
| 1249 | void *bitmap_buf = NULL; | ||
| 1250 | unsigned long len, sector; | ||
| 1251 | int nsectors, start, end, bit, err; | ||
| 1252 | __u64 off; | ||
| 1253 | |||
| 1254 | if(req->bitmap_start != -1){ | ||
| 1255 | /* Round up to the nearest word */ | ||
| 1256 | int round = sizeof(unsigned long); | ||
| 1257 | len = (req->bitmap_end - req->bitmap_start + | ||
| 1258 | round * 8 - 1) / (round * 8); | ||
| 1259 | len *= round; | ||
| 1260 | |||
| 1261 | off = req->bitmap_start / (8 * round); | ||
| 1262 | off *= round; | ||
| 1263 | |||
| 1264 | bitmap_io = kmalloc(sizeof(*bitmap_io), GFP_KERNEL); | ||
| 1265 | if(bitmap_io == NULL){ | ||
| 1266 | printk("Failed to kmalloc bitmap IO\n"); | ||
| 1267 | req->error = 1; | ||
| 1268 | return; | ||
| 1269 | } | ||
| 1270 | 1275 | ||
| 1271 | bitmap_buf = kmalloc(len, GFP_KERNEL); | 1276 | if(req->cow_offset == -1) |
| 1272 | if(bitmap_buf == NULL){ | 1277 | return(0); |
| 1273 | printk("do_io : kmalloc of bitmap chunk " | ||
| 1274 | "failed\n"); | ||
| 1275 | kfree(bitmap_io); | ||
| 1276 | req->error = 1; | ||
| 1277 | return; | ||
| 1278 | } | ||
| 1279 | memcpy(bitmap_buf, &bitmap[off / sizeof(bitmap[0])], len); | ||
| 1280 | |||
| 1281 | *bitmap_io = ((struct bitmap_io) | ||
| 1282 | { .count = ATOMIC_INIT(0), | ||
| 1283 | .aio = INIT_AIO(AIO_WRITE, req->fds[1], | ||
| 1284 | bitmap_buf, len, | ||
| 1285 | req->bitmap_offset + off, | ||
| 1286 | ubd_reply_fd) } ); | ||
| 1287 | } | ||
| 1288 | 1278 | ||
| 1289 | nsectors = req->length / req->sectorsize; | 1279 | n = os_seek_file(req->fds[1], req->cow_offset); |
| 1290 | start = 0; | 1280 | if(n < 0){ |
| 1291 | end = nsectors; | 1281 | printk("do_io - bitmap lseek failed : err = %d\n", -n); |
| 1292 | bit = 0; | 1282 | return(1); |
| 1293 | do { | 1283 | } |
| 1294 | if(bitmap != NULL){ | ||
| 1295 | sector = req->offset / req->sectorsize; | ||
| 1296 | bit = ubd_test_bit(sector + start, bitmap); | ||
| 1297 | end = start; | ||
| 1298 | while((end < nsectors) && | ||
| 1299 | (ubd_test_bit(sector + end, bitmap) == bit)) | ||
| 1300 | end++; | ||
| 1301 | } | ||
| 1302 | 1284 | ||
| 1303 | off = req->offsets[bit] + req->offset + | 1285 | n = os_write_file(req->fds[1], &req->bitmap_words, |
| 1304 | start * req->sectorsize; | 1286 | sizeof(req->bitmap_words)); |
| 1305 | len = (end - start) * req->sectorsize; | 1287 | if(n != sizeof(req->bitmap_words)){ |
| 1306 | buf = &req->buffer[start * req->sectorsize]; | 1288 | printk("do_io - bitmap update failed, err = %d fd = %d\n", -n, |
| 1289 | req->fds[1]); | ||
| 1290 | return(1); | ||
| 1291 | } | ||
| 1307 | 1292 | ||
| 1308 | aio = kmalloc(sizeof(*aio), GFP_KERNEL); | 1293 | return(0); |
| 1309 | if(aio == NULL){ | 1294 | } |
| 1310 | req->error = 1; | ||
| 1311 | return; | ||
| 1312 | } | ||
| 1313 | 1295 | ||
| 1314 | *aio = ((struct ubd_aio) | 1296 | void do_io(struct io_thread_req *req) |
| 1315 | { .aio = INIT_AIO(req->op, req->fds[bit], buf, | 1297 | { |
| 1316 | len, off, ubd_reply_fd), | 1298 | char *buf; |
| 1317 | .len = len, | 1299 | unsigned long len; |
| 1318 | .req = r, | 1300 | int n, nsectors, start, end, bit; |
| 1319 | .bitmap = bitmap_io, | 1301 | int err; |
| 1320 | .bitmap_buf = bitmap_buf }); | 1302 | __u64 off; |
| 1321 | 1303 | ||
| 1322 | if(aio->bitmap != NULL) | 1304 | nsectors = req->length / req->sectorsize; |
| 1323 | atomic_inc(&aio->bitmap->count); | 1305 | start = 0; |
| 1324 | 1306 | do { | |
| 1325 | err = submit_aio(&aio->aio); | 1307 | bit = ubd_test_bit(start, (unsigned char *) &req->sector_mask); |
| 1326 | if(err){ | 1308 | end = start; |
| 1327 | printk("do_io - submit_aio failed, " | 1309 | while((end < nsectors) && |
| 1328 | "err = %d\n", err); | 1310 | (ubd_test_bit(end, (unsigned char *) |
| 1329 | req->error = 1; | 1311 | &req->sector_mask) == bit)) |
| 1330 | return; | 1312 | end++; |
| 1331 | } | 1313 | |
| 1314 | off = req->offset + req->offsets[bit] + | ||
| 1315 | start * req->sectorsize; | ||
| 1316 | len = (end - start) * req->sectorsize; | ||
| 1317 | buf = &req->buffer[start * req->sectorsize]; | ||
| 1318 | |||
| 1319 | err = os_seek_file(req->fds[bit], off); | ||
| 1320 | if(err < 0){ | ||
| 1321 | printk("do_io - lseek failed : err = %d\n", -err); | ||
| 1322 | req->error = 1; | ||
| 1323 | return; | ||
| 1324 | } | ||
| 1325 | if(req->op == UBD_READ){ | ||
| 1326 | n = 0; | ||
| 1327 | do { | ||
| 1328 | buf = &buf[n]; | ||
| 1329 | len -= n; | ||
| 1330 | n = os_read_file(req->fds[bit], buf, len); | ||
| 1331 | if (n < 0) { | ||
| 1332 | printk("do_io - read failed, err = %d " | ||
| 1333 | "fd = %d\n", -n, req->fds[bit]); | ||
| 1334 | req->error = 1; | ||
| 1335 | return; | ||
| 1336 | } | ||
| 1337 | } while((n < len) && (n != 0)); | ||
| 1338 | if (n < len) memset(&buf[n], 0, len - n); | ||
| 1339 | } else { | ||
| 1340 | n = os_write_file(req->fds[bit], buf, len); | ||
| 1341 | if(n != len){ | ||
| 1342 | printk("do_io - write failed err = %d " | ||
| 1343 | "fd = %d\n", -n, req->fds[bit]); | ||
| 1344 | req->error = 1; | ||
| 1345 | return; | ||
| 1346 | } | ||
| 1347 | } | ||
| 1348 | |||
| 1349 | start = end; | ||
| 1350 | } while(start < nsectors); | ||
| 1332 | 1351 | ||
| 1333 | start = end; | 1352 | req->error = update_bitmap(req); |
| 1334 | } while(start < nsectors); | ||
| 1335 | } | 1353 | } |
| 1354 | |||
| 1355 | /* Changed in start_io_thread, which is serialized by being called only | ||
| 1356 | * from ubd_init, which is an initcall. | ||
| 1357 | */ | ||
| 1358 | int kernel_fd = -1; | ||
| 1359 | |||
| 1360 | /* Only changed by the io thread */ | ||
| 1361 | int io_count = 0; | ||
| 1362 | |||
| 1363 | int io_thread(void *arg) | ||
| 1364 | { | ||
| 1365 | struct io_thread_req req; | ||
| 1366 | int n; | ||
| 1367 | |||
| 1368 | ignore_sigwinch_sig(); | ||
| 1369 | while(1){ | ||
| 1370 | n = os_read_file(kernel_fd, &req, sizeof(req)); | ||
| 1371 | if(n != sizeof(req)){ | ||
| 1372 | if(n < 0) | ||
| 1373 | printk("io_thread - read failed, fd = %d, " | ||
| 1374 | "err = %d\n", kernel_fd, -n); | ||
| 1375 | else { | ||
| 1376 | printk("io_thread - short read, fd = %d, " | ||
| 1377 | "length = %d\n", kernel_fd, n); | ||
| 1378 | } | ||
| 1379 | continue; | ||
| 1380 | } | ||
| 1381 | io_count++; | ||
| 1382 | do_io(&req); | ||
| 1383 | n = os_write_file(kernel_fd, &req, sizeof(req)); | ||
| 1384 | if(n != sizeof(req)) | ||
| 1385 | printk("io_thread - write failed, fd = %d, err = %d\n", | ||
| 1386 | kernel_fd, -n); | ||
| 1387 | } | ||
| 1388 | } | ||
| 1389 | |||
| 1390 | /* | ||
| 1391 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 1392 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 1393 | * adjust the settings for this buffer only. This must remain at the end | ||
| 1394 | * of the file. | ||
| 1395 | * --------------------------------------------------------------------------- | ||
| 1396 | * Local variables: | ||
| 1397 | * c-file-style: "linux" | ||
| 1398 | * End: | ||
| 1399 | */ | ||
diff --git a/arch/um/drivers/ubd_user.c b/arch/um/drivers/ubd_user.c new file mode 100644 index 000000000000..b94d2bc4fe06 --- /dev/null +++ b/arch/um/drivers/ubd_user.c | |||
| @@ -0,0 +1,75 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com) | ||
| 3 | * Copyright (C) 2001 Ridgerun,Inc (glonnon@ridgerun.com) | ||
| 4 | * Licensed under the GPL | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <stddef.h> | ||
| 8 | #include <unistd.h> | ||
| 9 | #include <errno.h> | ||
| 10 | #include <sched.h> | ||
| 11 | #include <signal.h> | ||
| 12 | #include <string.h> | ||
| 13 | #include <netinet/in.h> | ||
| 14 | #include <sys/time.h> | ||
| 15 | #include <sys/socket.h> | ||
| 16 | #include <sys/mman.h> | ||
| 17 | #include <sys/param.h> | ||
| 18 | #include "asm/types.h" | ||
| 19 | #include "user_util.h" | ||
| 20 | #include "kern_util.h" | ||
| 21 | #include "user.h" | ||
| 22 | #include "ubd_user.h" | ||
| 23 | #include "os.h" | ||
| 24 | #include "cow.h" | ||
| 25 | |||
| 26 | #include <endian.h> | ||
| 27 | #include <byteswap.h> | ||
| 28 | |||
| 29 | void ignore_sigwinch_sig(void) | ||
| 30 | { | ||
| 31 | signal(SIGWINCH, SIG_IGN); | ||
| 32 | } | ||
| 33 | |||
| 34 | int start_io_thread(unsigned long sp, int *fd_out) | ||
| 35 | { | ||
| 36 | int pid, fds[2], err; | ||
| 37 | |||
| 38 | err = os_pipe(fds, 1, 1); | ||
| 39 | if(err < 0){ | ||
| 40 | printk("start_io_thread - os_pipe failed, err = %d\n", -err); | ||
| 41 | goto out; | ||
| 42 | } | ||
| 43 | |||
| 44 | kernel_fd = fds[0]; | ||
| 45 | *fd_out = fds[1]; | ||
| 46 | |||
| 47 | pid = clone(io_thread, (void *) sp, CLONE_FILES | CLONE_VM | SIGCHLD, | ||
| 48 | NULL); | ||
| 49 | if(pid < 0){ | ||
| 50 | printk("start_io_thread - clone failed : errno = %d\n", errno); | ||
| 51 | err = -errno; | ||
| 52 | goto out_close; | ||
| 53 | } | ||
| 54 | |||
| 55 | return(pid); | ||
| 56 | |||
| 57 | out_close: | ||
| 58 | os_close_file(fds[0]); | ||
| 59 | os_close_file(fds[1]); | ||
| 60 | kernel_fd = -1; | ||
| 61 | *fd_out = -1; | ||
| 62 | out: | ||
| 63 | return(err); | ||
| 64 | } | ||
| 65 | |||
| 66 | /* | ||
| 67 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 68 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 69 | * adjust the settings for this buffer only. This must remain at the end | ||
| 70 | * of the file. | ||
| 71 | * --------------------------------------------------------------------------- | ||
| 72 | * Local variables: | ||
| 73 | * c-file-style: "linux" | ||
| 74 | * End: | ||
| 75 | */ | ||
diff --git a/arch/um/include/aio.h b/arch/um/include/aio.h index 83f16877ab08..423bae9153f8 100644 --- a/arch/um/include/aio.h +++ b/arch/um/include/aio.h | |||
| @@ -14,27 +14,15 @@ struct aio_thread_reply { | |||
| 14 | }; | 14 | }; |
| 15 | 15 | ||
| 16 | struct aio_context { | 16 | struct aio_context { |
| 17 | enum aio_type type; | ||
| 18 | int fd; | ||
| 19 | void *data; | ||
| 20 | int len; | ||
| 21 | unsigned long long offset; | ||
| 22 | int reply_fd; | 17 | int reply_fd; |
| 23 | struct aio_context *next; | 18 | struct aio_context *next; |
| 24 | }; | 19 | }; |
| 25 | 20 | ||
| 26 | #define INIT_AIO(aio_type, aio_fd, aio_data, aio_len, aio_offset, \ | ||
| 27 | aio_reply_fd) \ | ||
| 28 | { .type = aio_type, \ | ||
| 29 | .fd = aio_fd, \ | ||
| 30 | .data = aio_data, \ | ||
| 31 | .len = aio_len, \ | ||
| 32 | .offset = aio_offset, \ | ||
| 33 | .reply_fd = aio_reply_fd } | ||
| 34 | |||
| 35 | #define INIT_AIO_CONTEXT { .reply_fd = -1, \ | 21 | #define INIT_AIO_CONTEXT { .reply_fd = -1, \ |
| 36 | .next = NULL } | 22 | .next = NULL } |
| 37 | 23 | ||
| 38 | extern int submit_aio(struct aio_context *aio); | 24 | extern int submit_aio(enum aio_type type, int fd, char *buf, int len, |
| 25 | unsigned long long offset, int reply_fd, | ||
| 26 | struct aio_context *aio); | ||
| 39 | 27 | ||
| 40 | #endif | 28 | #endif |
diff --git a/arch/um/include/os.h b/arch/um/include/os.h index 6f766e1faecc..2e58e304b8be 100644 --- a/arch/um/include/os.h +++ b/arch/um/include/os.h | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #ifndef __OS_H__ | 6 | #ifndef __OS_H__ |
| 7 | #define __OS_H__ | 7 | #define __OS_H__ |
| 8 | 8 | ||
| 9 | #include "uml-config.h" | ||
| 9 | #include "asm/types.h" | 10 | #include "asm/types.h" |
| 10 | #include "../os/include/file.h" | 11 | #include "../os/include/file.h" |
| 11 | 12 | ||
| @@ -159,7 +160,11 @@ extern int can_do_skas(void); | |||
| 159 | 160 | ||
| 160 | /* Make sure they are clear when running in TT mode. Required by | 161 | /* Make sure they are clear when running in TT mode. Required by |
| 161 | * SEGV_MAYBE_FIXABLE */ | 162 | * SEGV_MAYBE_FIXABLE */ |
| 163 | #ifdef UML_CONFIG_MODE_SKAS | ||
| 162 | #define clear_can_do_skas() do { ptrace_faultinfo = proc_mm = 0; } while (0) | 164 | #define clear_can_do_skas() do { ptrace_faultinfo = proc_mm = 0; } while (0) |
| 165 | #else | ||
| 166 | #define clear_can_do_skas() do {} while (0) | ||
| 167 | #endif | ||
| 163 | 168 | ||
| 164 | /* mem.c */ | 169 | /* mem.c */ |
| 165 | extern int create_mem_file(unsigned long len); | 170 | extern int create_mem_file(unsigned long len); |
diff --git a/arch/um/include/registers.h b/arch/um/include/registers.h index 0a35e6d0baa0..4892e5fcef07 100644 --- a/arch/um/include/registers.h +++ b/arch/um/include/registers.h | |||
| @@ -15,16 +15,6 @@ extern void save_registers(int pid, union uml_pt_regs *regs); | |||
| 15 | extern void restore_registers(int pid, union uml_pt_regs *regs); | 15 | extern void restore_registers(int pid, union uml_pt_regs *regs); |
| 16 | extern void init_registers(int pid); | 16 | extern void init_registers(int pid); |
| 17 | extern void get_safe_registers(unsigned long * regs); | 17 | extern void get_safe_registers(unsigned long * regs); |
| 18 | extern void get_thread_regs(union uml_pt_regs *uml_regs, void *buffer); | ||
| 18 | 19 | ||
| 19 | #endif | 20 | #endif |
| 20 | |||
| 21 | /* | ||
| 22 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 23 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 24 | * adjust the settings for this buffer only. This must remain at the end | ||
| 25 | * of the file. | ||
| 26 | * --------------------------------------------------------------------------- | ||
| 27 | * Local variables: | ||
| 28 | * c-file-style: "linux" | ||
| 29 | * End: | ||
| 30 | */ | ||
diff --git a/arch/um/include/sysdep-i386/thread.h b/arch/um/include/sysdep-i386/thread.h index e2bd6bae8b8a..243fed44d780 100644 --- a/arch/um/include/sysdep-i386/thread.h +++ b/arch/um/include/sysdep-i386/thread.h | |||
| @@ -4,7 +4,7 @@ | |||
| 4 | #include <kern_constants.h> | 4 | #include <kern_constants.h> |
| 5 | 5 | ||
| 6 | #define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS])) | 6 | #define TASK_DEBUGREGS(task) ((unsigned long *) &(((char *) (task))[HOST_TASK_DEBUGREGS])) |
| 7 | #ifdef CONFIG_MODE_TT | 7 | #ifdef UML_CONFIG_MODE_TT |
| 8 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) | 8 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) |
| 9 | #endif | 9 | #endif |
| 10 | 10 | ||
diff --git a/arch/um/include/sysdep-x86_64/ptrace.h b/arch/um/include/sysdep-x86_64/ptrace.h index 331aa2d1f3f5..8d353f0feec1 100644 --- a/arch/um/include/sysdep-x86_64/ptrace.h +++ b/arch/um/include/sysdep-x86_64/ptrace.h | |||
| @@ -183,10 +183,6 @@ struct syscall_args { | |||
| 183 | case RBP: val = UPT_RBP(regs); break; \ | 183 | case RBP: val = UPT_RBP(regs); break; \ |
| 184 | case ORIG_RAX: val = UPT_ORIG_RAX(regs); break; \ | 184 | case ORIG_RAX: val = UPT_ORIG_RAX(regs); break; \ |
| 185 | case CS: val = UPT_CS(regs); break; \ | 185 | case CS: val = UPT_CS(regs); break; \ |
| 186 | case DS: val = UPT_DS(regs); break; \ | ||
| 187 | case ES: val = UPT_ES(regs); break; \ | ||
| 188 | case FS: val = UPT_FS(regs); break; \ | ||
| 189 | case GS: val = UPT_GS(regs); break; \ | ||
| 190 | case EFLAGS: val = UPT_EFLAGS(regs); break; \ | 186 | case EFLAGS: val = UPT_EFLAGS(regs); break; \ |
| 191 | default : \ | 187 | default : \ |
| 192 | panic("Bad register in UPT_REG : %d\n", reg); \ | 188 | panic("Bad register in UPT_REG : %d\n", reg); \ |
| @@ -218,10 +214,6 @@ struct syscall_args { | |||
| 218 | case RBP: UPT_RBP(regs) = __upt_val; break; \ | 214 | case RBP: UPT_RBP(regs) = __upt_val; break; \ |
| 219 | case ORIG_RAX: UPT_ORIG_RAX(regs) = __upt_val; break; \ | 215 | case ORIG_RAX: UPT_ORIG_RAX(regs) = __upt_val; break; \ |
| 220 | case CS: UPT_CS(regs) = __upt_val; break; \ | 216 | case CS: UPT_CS(regs) = __upt_val; break; \ |
| 221 | case DS: UPT_DS(regs) = __upt_val; break; \ | ||
| 222 | case ES: UPT_ES(regs) = __upt_val; break; \ | ||
| 223 | case FS: UPT_FS(regs) = __upt_val; break; \ | ||
| 224 | case GS: UPT_GS(regs) = __upt_val; break; \ | ||
| 225 | case EFLAGS: UPT_EFLAGS(regs) = __upt_val; break; \ | 217 | case EFLAGS: UPT_EFLAGS(regs) = __upt_val; break; \ |
| 226 | default : \ | 218 | default : \ |
| 227 | panic("Bad register in UPT_SET : %d\n", reg); \ | 219 | panic("Bad register in UPT_SET : %d\n", reg); \ |
diff --git a/arch/um/include/sysdep-x86_64/thread.h b/arch/um/include/sysdep-x86_64/thread.h index 6a76a7f3683f..cbef3e1697f4 100644 --- a/arch/um/include/sysdep-x86_64/thread.h +++ b/arch/um/include/sysdep-x86_64/thread.h | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #include <kern_constants.h> | 4 | #include <kern_constants.h> |
| 5 | 5 | ||
| 6 | #ifdef CONFIG_MODE_TT | 6 | #ifdef UML_CONFIG_MODE_TT |
| 7 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) | 7 | #define TASK_EXTERN_PID(task) *((int *) &(((char *) (task))[HOST_TASK_EXTERN_PID])) |
| 8 | #endif | 8 | #endif |
| 9 | 9 | ||
diff --git a/arch/um/kernel/sysrq.c b/arch/um/kernel/sysrq.c index f80850091e79..b331e970002f 100644 --- a/arch/um/kernel/sysrq.c +++ b/arch/um/kernel/sysrq.c | |||
| @@ -62,13 +62,7 @@ void show_stack(struct task_struct *task, unsigned long *esp) | |||
| 62 | 62 | ||
| 63 | if (esp == NULL) { | 63 | if (esp == NULL) { |
| 64 | if (task != current && task != NULL) { | 64 | if (task != current && task != NULL) { |
| 65 | /* XXX: Isn't this bogus? I.e. isn't this the | ||
| 66 | * *userspace* stack of this task? If not so, use this | ||
| 67 | * even when task == current (as in i386). | ||
| 68 | */ | ||
| 69 | esp = (unsigned long *) KSTK_ESP(task); | 65 | esp = (unsigned long *) KSTK_ESP(task); |
| 70 | /* Which one? No actual difference - just coding style.*/ | ||
| 71 | //esp = (unsigned long *) PT_REGS_IP(&task->thread.regs); | ||
| 72 | } else { | 66 | } else { |
| 73 | esp = (unsigned long *) &esp; | 67 | esp = (unsigned long *) &esp; |
| 74 | } | 68 | } |
| @@ -84,5 +78,5 @@ void show_stack(struct task_struct *task, unsigned long *esp) | |||
| 84 | } | 78 | } |
| 85 | 79 | ||
| 86 | printk("Call Trace: \n"); | 80 | printk("Call Trace: \n"); |
| 87 | show_trace(current, esp); | 81 | show_trace(task, esp); |
| 88 | } | 82 | } |
diff --git a/arch/um/os-Linux/aio.c b/arch/um/os-Linux/aio.c index f6e64026f995..41cfb0944201 100644 --- a/arch/um/os-Linux/aio.c +++ b/arch/um/os-Linux/aio.c | |||
| @@ -6,7 +6,6 @@ | |||
| 6 | #include <stdlib.h> | 6 | #include <stdlib.h> |
| 7 | #include <unistd.h> | 7 | #include <unistd.h> |
| 8 | #include <signal.h> | 8 | #include <signal.h> |
| 9 | #include <string.h> | ||
| 10 | #include <errno.h> | 9 | #include <errno.h> |
| 11 | #include <sched.h> | 10 | #include <sched.h> |
| 12 | #include <sys/syscall.h> | 11 | #include <sys/syscall.h> |
| @@ -17,31 +16,18 @@ | |||
| 17 | #include "user.h" | 16 | #include "user.h" |
| 18 | #include "mode.h" | 17 | #include "mode.h" |
| 19 | 18 | ||
| 19 | struct aio_thread_req { | ||
| 20 | enum aio_type type; | ||
| 21 | int io_fd; | ||
| 22 | unsigned long long offset; | ||
| 23 | char *buf; | ||
| 24 | int len; | ||
| 25 | struct aio_context *aio; | ||
| 26 | }; | ||
| 27 | |||
| 20 | static int aio_req_fd_r = -1; | 28 | static int aio_req_fd_r = -1; |
| 21 | static int aio_req_fd_w = -1; | 29 | static int aio_req_fd_w = -1; |
| 22 | 30 | ||
| 23 | static int update_aio(struct aio_context *aio, int res) | ||
| 24 | { | ||
| 25 | if(res < 0) | ||
| 26 | aio->len = res; | ||
| 27 | else if((res == 0) && (aio->type == AIO_READ)){ | ||
| 28 | /* This is the EOF case - we have hit the end of the file | ||
| 29 | * and it ends in a partial block, so we fill the end of | ||
| 30 | * the block with zeros and claim success. | ||
| 31 | */ | ||
| 32 | memset(aio->data, 0, aio->len); | ||
| 33 | aio->len = 0; | ||
| 34 | } | ||
| 35 | else if(res > 0){ | ||
| 36 | aio->len -= res; | ||
| 37 | aio->data += res; | ||
| 38 | aio->offset += res; | ||
| 39 | return aio->len; | ||
| 40 | } | ||
| 41 | |||
| 42 | return 0; | ||
| 43 | } | ||
| 44 | |||
| 45 | #if defined(HAVE_AIO_ABI) | 31 | #if defined(HAVE_AIO_ABI) |
| 46 | #include <linux/aio_abi.h> | 32 | #include <linux/aio_abi.h> |
| 47 | 33 | ||
| @@ -80,7 +66,8 @@ static long io_getevents(aio_context_t ctx_id, long min_nr, long nr, | |||
| 80 | * that it now backs the mmapped area. | 66 | * that it now backs the mmapped area. |
| 81 | */ | 67 | */ |
| 82 | 68 | ||
| 83 | static int do_aio(aio_context_t ctx, struct aio_context *aio) | 69 | static int do_aio(aio_context_t ctx, enum aio_type type, int fd, char *buf, |
| 70 | int len, unsigned long long offset, struct aio_context *aio) | ||
| 84 | { | 71 | { |
| 85 | struct iocb iocb, *iocbp = &iocb; | 72 | struct iocb iocb, *iocbp = &iocb; |
| 86 | char c; | 73 | char c; |
| @@ -88,39 +75,40 @@ static int do_aio(aio_context_t ctx, struct aio_context *aio) | |||
| 88 | 75 | ||
| 89 | iocb = ((struct iocb) { .aio_data = (unsigned long) aio, | 76 | iocb = ((struct iocb) { .aio_data = (unsigned long) aio, |
| 90 | .aio_reqprio = 0, | 77 | .aio_reqprio = 0, |
| 91 | .aio_fildes = aio->fd, | 78 | .aio_fildes = fd, |
| 92 | .aio_buf = (unsigned long) aio->data, | 79 | .aio_buf = (unsigned long) buf, |
| 93 | .aio_nbytes = aio->len, | 80 | .aio_nbytes = len, |
| 94 | .aio_offset = aio->offset, | 81 | .aio_offset = offset, |
| 95 | .aio_reserved1 = 0, | 82 | .aio_reserved1 = 0, |
| 96 | .aio_reserved2 = 0, | 83 | .aio_reserved2 = 0, |
| 97 | .aio_reserved3 = 0 }); | 84 | .aio_reserved3 = 0 }); |
| 98 | 85 | ||
| 99 | switch(aio->type){ | 86 | switch(type){ |
| 100 | case AIO_READ: | 87 | case AIO_READ: |
| 101 | iocb.aio_lio_opcode = IOCB_CMD_PREAD; | 88 | iocb.aio_lio_opcode = IOCB_CMD_PREAD; |
| 89 | err = io_submit(ctx, 1, &iocbp); | ||
| 102 | break; | 90 | break; |
| 103 | case AIO_WRITE: | 91 | case AIO_WRITE: |
| 104 | iocb.aio_lio_opcode = IOCB_CMD_PWRITE; | 92 | iocb.aio_lio_opcode = IOCB_CMD_PWRITE; |
| 93 | err = io_submit(ctx, 1, &iocbp); | ||
| 105 | break; | 94 | break; |
| 106 | case AIO_MMAP: | 95 | case AIO_MMAP: |
| 107 | iocb.aio_lio_opcode = IOCB_CMD_PREAD; | 96 | iocb.aio_lio_opcode = IOCB_CMD_PREAD; |
| 108 | iocb.aio_buf = (unsigned long) &c; | 97 | iocb.aio_buf = (unsigned long) &c; |
| 109 | iocb.aio_nbytes = sizeof(c); | 98 | iocb.aio_nbytes = sizeof(c); |
| 99 | err = io_submit(ctx, 1, &iocbp); | ||
| 110 | break; | 100 | break; |
| 111 | default: | 101 | default: |
| 112 | printk("Bogus op in do_aio - %d\n", aio->type); | 102 | printk("Bogus op in do_aio - %d\n", type); |
| 113 | err = -EINVAL; | 103 | err = -EINVAL; |
| 114 | goto out; | 104 | break; |
| 115 | } | 105 | } |
| 116 | 106 | ||
| 117 | err = io_submit(ctx, 1, &iocbp); | ||
| 118 | if(err > 0) | 107 | if(err > 0) |
| 119 | err = 0; | 108 | err = 0; |
| 120 | else | 109 | else |
| 121 | err = -errno; | 110 | err = -errno; |
| 122 | 111 | ||
| 123 | out: | ||
| 124 | return err; | 112 | return err; |
| 125 | } | 113 | } |
| 126 | 114 | ||
| @@ -129,9 +117,8 @@ static aio_context_t ctx = 0; | |||
| 129 | static int aio_thread(void *arg) | 117 | static int aio_thread(void *arg) |
| 130 | { | 118 | { |
| 131 | struct aio_thread_reply reply; | 119 | struct aio_thread_reply reply; |
| 132 | struct aio_context *aio; | ||
| 133 | struct io_event event; | 120 | struct io_event event; |
| 134 | int err, n; | 121 | int err, n, reply_fd; |
| 135 | 122 | ||
| 136 | signal(SIGWINCH, SIG_IGN); | 123 | signal(SIGWINCH, SIG_IGN); |
| 137 | 124 | ||
| @@ -144,22 +131,14 @@ static int aio_thread(void *arg) | |||
| 144 | "errno = %d\n", errno); | 131 | "errno = %d\n", errno); |
| 145 | } | 132 | } |
| 146 | else { | 133 | else { |
| 147 | /* This is safe as we've just a pointer here. */ | ||
| 148 | aio = (struct aio_context *) (long) event.data; | ||
| 149 | if(update_aio(aio, event.res)){ | ||
| 150 | do_aio(ctx, aio); | ||
| 151 | continue; | ||
| 152 | } | ||
| 153 | |||
| 154 | reply = ((struct aio_thread_reply) | 134 | reply = ((struct aio_thread_reply) |
| 155 | { .data = aio, | 135 | { .data = (void *) (long) event.data, |
| 156 | .err = aio->len }); | 136 | .err = event.res }); |
| 157 | err = os_write_file(aio->reply_fd, &reply, | 137 | reply_fd = ((struct aio_context *) reply.data)->reply_fd; |
| 158 | sizeof(reply)); | 138 | err = os_write_file(reply_fd, &reply, sizeof(reply)); |
| 159 | if(err != sizeof(reply)) | 139 | if(err != sizeof(reply)) |
| 160 | printk("aio_thread - write failed, " | 140 | printk("aio_thread - write failed, fd = %d, " |
| 161 | "fd = %d, err = %d\n", aio->reply_fd, | 141 | "err = %d\n", aio_req_fd_r, -err); |
| 162 | -err); | ||
| 163 | } | 142 | } |
| 164 | } | 143 | } |
| 165 | return 0; | 144 | return 0; |
| @@ -167,35 +146,35 @@ static int aio_thread(void *arg) | |||
| 167 | 146 | ||
| 168 | #endif | 147 | #endif |
| 169 | 148 | ||
| 170 | static int do_not_aio(struct aio_context *aio) | 149 | static int do_not_aio(struct aio_thread_req *req) |
| 171 | { | 150 | { |
| 172 | char c; | 151 | char c; |
| 173 | int err; | 152 | int err; |
| 174 | 153 | ||
| 175 | switch(aio->type){ | 154 | switch(req->type){ |
| 176 | case AIO_READ: | 155 | case AIO_READ: |
| 177 | err = os_seek_file(aio->fd, aio->offset); | 156 | err = os_seek_file(req->io_fd, req->offset); |
| 178 | if(err) | 157 | if(err) |
| 179 | goto out; | 158 | goto out; |
| 180 | 159 | ||
| 181 | err = os_read_file(aio->fd, aio->data, aio->len); | 160 | err = os_read_file(req->io_fd, req->buf, req->len); |
| 182 | break; | 161 | break; |
| 183 | case AIO_WRITE: | 162 | case AIO_WRITE: |
| 184 | err = os_seek_file(aio->fd, aio->offset); | 163 | err = os_seek_file(req->io_fd, req->offset); |
| 185 | if(err) | 164 | if(err) |
| 186 | goto out; | 165 | goto out; |
| 187 | 166 | ||
| 188 | err = os_write_file(aio->fd, aio->data, aio->len); | 167 | err = os_write_file(req->io_fd, req->buf, req->len); |
| 189 | break; | 168 | break; |
| 190 | case AIO_MMAP: | 169 | case AIO_MMAP: |
| 191 | err = os_seek_file(aio->fd, aio->offset); | 170 | err = os_seek_file(req->io_fd, req->offset); |
| 192 | if(err) | 171 | if(err) |
| 193 | goto out; | 172 | goto out; |
| 194 | 173 | ||
| 195 | err = os_read_file(aio->fd, &c, sizeof(c)); | 174 | err = os_read_file(req->io_fd, &c, sizeof(c)); |
| 196 | break; | 175 | break; |
| 197 | default: | 176 | default: |
| 198 | printk("do_not_aio - bad request type : %d\n", aio->type); | 177 | printk("do_not_aio - bad request type : %d\n", req->type); |
| 199 | err = -EINVAL; | 178 | err = -EINVAL; |
| 200 | break; | 179 | break; |
| 201 | } | 180 | } |
| @@ -206,14 +185,14 @@ static int do_not_aio(struct aio_context *aio) | |||
| 206 | 185 | ||
| 207 | static int not_aio_thread(void *arg) | 186 | static int not_aio_thread(void *arg) |
| 208 | { | 187 | { |
| 209 | struct aio_context *aio; | 188 | struct aio_thread_req req; |
| 210 | struct aio_thread_reply reply; | 189 | struct aio_thread_reply reply; |
| 211 | int err; | 190 | int err; |
| 212 | 191 | ||
| 213 | signal(SIGWINCH, SIG_IGN); | 192 | signal(SIGWINCH, SIG_IGN); |
| 214 | while(1){ | 193 | while(1){ |
| 215 | err = os_read_file(aio_req_fd_r, &aio, sizeof(aio)); | 194 | err = os_read_file(aio_req_fd_r, &req, sizeof(req)); |
| 216 | if(err != sizeof(aio)){ | 195 | if(err != sizeof(req)){ |
| 217 | if(err < 0) | 196 | if(err < 0) |
| 218 | printk("not_aio_thread - read failed, " | 197 | printk("not_aio_thread - read failed, " |
| 219 | "fd = %d, err = %d\n", aio_req_fd_r, | 198 | "fd = %d, err = %d\n", aio_req_fd_r, |
| @@ -224,34 +203,17 @@ static int not_aio_thread(void *arg) | |||
| 224 | } | 203 | } |
| 225 | continue; | 204 | continue; |
| 226 | } | 205 | } |
| 227 | again: | 206 | err = do_not_aio(&req); |
| 228 | err = do_not_aio(aio); | 207 | reply = ((struct aio_thread_reply) { .data = req.aio, |
| 229 | 208 | .err = err }); | |
| 230 | if(update_aio(aio, err)) | 209 | err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply)); |
| 231 | goto again; | ||
| 232 | |||
| 233 | reply = ((struct aio_thread_reply) { .data = aio, | ||
| 234 | .err = aio->len }); | ||
| 235 | err = os_write_file(aio->reply_fd, &reply, sizeof(reply)); | ||
| 236 | if(err != sizeof(reply)) | 210 | if(err != sizeof(reply)) |
| 237 | printk("not_aio_thread - write failed, fd = %d, " | 211 | printk("not_aio_thread - write failed, fd = %d, " |
| 238 | "err = %d\n", aio_req_fd_r, -err); | 212 | "err = %d\n", aio_req_fd_r, -err); |
| 239 | } | 213 | } |
| 240 | } | 214 | } |
| 241 | 215 | ||
| 242 | static int submit_aio_24(struct aio_context *aio) | ||
| 243 | { | ||
| 244 | int err; | ||
| 245 | |||
| 246 | err = os_write_file(aio_req_fd_w, &aio, sizeof(aio)); | ||
| 247 | if(err == sizeof(aio)) | ||
| 248 | err = 0; | ||
| 249 | |||
| 250 | return err; | ||
| 251 | } | ||
| 252 | |||
| 253 | static int aio_pid = -1; | 216 | static int aio_pid = -1; |
| 254 | static int (*submit_proc)(struct aio_context *aio); | ||
| 255 | 217 | ||
| 256 | static int init_aio_24(void) | 218 | static int init_aio_24(void) |
| 257 | { | 219 | { |
| @@ -283,33 +245,11 @@ static int init_aio_24(void) | |||
| 283 | #endif | 245 | #endif |
| 284 | printk("2.6 host AIO support not used - falling back to I/O " | 246 | printk("2.6 host AIO support not used - falling back to I/O " |
| 285 | "thread\n"); | 247 | "thread\n"); |
| 286 | |||
| 287 | submit_proc = submit_aio_24; | ||
| 288 | |||
| 289 | return 0; | 248 | return 0; |
| 290 | } | 249 | } |
| 291 | 250 | ||
| 292 | #ifdef HAVE_AIO_ABI | 251 | #ifdef HAVE_AIO_ABI |
| 293 | #define DEFAULT_24_AIO 0 | 252 | #define DEFAULT_24_AIO 0 |
| 294 | static int submit_aio_26(struct aio_context *aio) | ||
| 295 | { | ||
| 296 | struct aio_thread_reply reply; | ||
| 297 | int err; | ||
| 298 | |||
| 299 | err = do_aio(ctx, aio); | ||
| 300 | if(err){ | ||
| 301 | reply = ((struct aio_thread_reply) { .data = aio, | ||
| 302 | .err = err }); | ||
| 303 | err = os_write_file(aio->reply_fd, &reply, sizeof(reply)); | ||
| 304 | if(err != sizeof(reply)) | ||
| 305 | printk("submit_aio_26 - write failed, " | ||
| 306 | "fd = %d, err = %d\n", aio->reply_fd, -err); | ||
| 307 | else err = 0; | ||
| 308 | } | ||
| 309 | |||
| 310 | return err; | ||
| 311 | } | ||
| 312 | |||
| 313 | static int init_aio_26(void) | 253 | static int init_aio_26(void) |
| 314 | { | 254 | { |
| 315 | unsigned long stack; | 255 | unsigned long stack; |
| @@ -330,22 +270,39 @@ static int init_aio_26(void) | |||
| 330 | aio_pid = err; | 270 | aio_pid = err; |
| 331 | 271 | ||
| 332 | printk("Using 2.6 host AIO\n"); | 272 | printk("Using 2.6 host AIO\n"); |
| 273 | return 0; | ||
| 274 | } | ||
| 275 | |||
| 276 | static int submit_aio_26(enum aio_type type, int io_fd, char *buf, int len, | ||
| 277 | unsigned long long offset, struct aio_context *aio) | ||
| 278 | { | ||
| 279 | struct aio_thread_reply reply; | ||
| 280 | int err; | ||
| 333 | 281 | ||
| 334 | submit_proc = submit_aio_26; | 282 | err = do_aio(ctx, type, io_fd, buf, len, offset, aio); |
| 283 | if(err){ | ||
| 284 | reply = ((struct aio_thread_reply) { .data = aio, | ||
| 285 | .err = err }); | ||
| 286 | err = os_write_file(aio->reply_fd, &reply, sizeof(reply)); | ||
| 287 | if(err != sizeof(reply)) | ||
| 288 | printk("submit_aio_26 - write failed, " | ||
| 289 | "fd = %d, err = %d\n", aio->reply_fd, -err); | ||
| 290 | else err = 0; | ||
| 291 | } | ||
| 335 | 292 | ||
| 336 | return 0; | 293 | return err; |
| 337 | } | 294 | } |
| 338 | 295 | ||
| 339 | #else | 296 | #else |
| 340 | #define DEFAULT_24_AIO 1 | 297 | #define DEFAULT_24_AIO 1 |
| 341 | static int submit_aio_26(struct aio_context *aio) | 298 | static int init_aio_26(void) |
| 342 | { | 299 | { |
| 343 | return -ENOSYS; | 300 | return -ENOSYS; |
| 344 | } | 301 | } |
| 345 | 302 | ||
| 346 | static int init_aio_26(void) | 303 | static int submit_aio_26(enum aio_type type, int io_fd, char *buf, int len, |
| 304 | unsigned long long offset, struct aio_context *aio) | ||
| 347 | { | 305 | { |
| 348 | submit_proc = submit_aio_26; | ||
| 349 | return -ENOSYS; | 306 | return -ENOSYS; |
| 350 | } | 307 | } |
| 351 | #endif | 308 | #endif |
| @@ -412,7 +369,33 @@ static void exit_aio(void) | |||
| 412 | 369 | ||
| 413 | __uml_exitcall(exit_aio); | 370 | __uml_exitcall(exit_aio); |
| 414 | 371 | ||
| 415 | int submit_aio(struct aio_context *aio) | 372 | static int submit_aio_24(enum aio_type type, int io_fd, char *buf, int len, |
| 373 | unsigned long long offset, struct aio_context *aio) | ||
| 416 | { | 374 | { |
| 417 | return (*submit_proc)(aio); | 375 | struct aio_thread_req req = { .type = type, |
| 376 | .io_fd = io_fd, | ||
| 377 | .offset = offset, | ||
| 378 | .buf = buf, | ||
| 379 | .len = len, | ||
| 380 | .aio = aio, | ||
| 381 | }; | ||
| 382 | int err; | ||
| 383 | |||
| 384 | err = os_write_file(aio_req_fd_w, &req, sizeof(req)); | ||
| 385 | if(err == sizeof(req)) | ||
| 386 | err = 0; | ||
| 387 | |||
| 388 | return err; | ||
| 389 | } | ||
| 390 | |||
| 391 | int submit_aio(enum aio_type type, int io_fd, char *buf, int len, | ||
| 392 | unsigned long long offset, int reply_fd, | ||
| 393 | struct aio_context *aio) | ||
| 394 | { | ||
| 395 | aio->reply_fd = reply_fd; | ||
| 396 | if(aio_24) | ||
| 397 | return submit_aio_24(type, io_fd, buf, len, offset, aio); | ||
| 398 | else { | ||
| 399 | return submit_aio_26(type, io_fd, buf, len, offset, aio); | ||
| 400 | } | ||
| 418 | } | 401 | } |
diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c index 6af83171ca4e..b99ab414542f 100644 --- a/arch/um/os-Linux/start_up.c +++ b/arch/um/os-Linux/start_up.c | |||
| @@ -143,11 +143,22 @@ static int __init skas0_cmd_param(char *str, int* add) | |||
| 143 | return 0; | 143 | return 0; |
| 144 | } | 144 | } |
| 145 | 145 | ||
| 146 | /* The two __uml_setup would conflict, without this stupid alias. */ | ||
| 147 | |||
| 148 | static int __init mode_skas0_cmd_param(char *str, int* add) | ||
| 149 | __attribute__((alias("skas0_cmd_param"))); | ||
| 150 | |||
| 146 | __uml_setup("skas0", skas0_cmd_param, | 151 | __uml_setup("skas0", skas0_cmd_param, |
| 147 | "skas0\n" | 152 | "skas0\n" |
| 148 | " Disables SKAS3 usage, so that SKAS0 is used, unless \n" | 153 | " Disables SKAS3 usage, so that SKAS0 is used, unless \n" |
| 149 | " you specify mode=tt.\n\n"); | 154 | " you specify mode=tt.\n\n"); |
| 150 | 155 | ||
| 156 | __uml_setup("mode=skas0", mode_skas0_cmd_param, | ||
| 157 | "mode=skas0\n" | ||
| 158 | " Disables SKAS3 usage, so that SKAS0 is used, unless you \n" | ||
| 159 | " specify mode=tt. Note that this was recently added - on \n" | ||
| 160 | " older kernels you must use simply \"skas0\".\n\n"); | ||
| 161 | |||
| 151 | static int force_sysemu_disabled = 0; | 162 | static int force_sysemu_disabled = 0; |
| 152 | 163 | ||
| 153 | static int __init nosysemu_cmd_param(char *str, int* add) | 164 | static int __init nosysemu_cmd_param(char *str, int* add) |
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c index 3125d320722c..aee4812333c6 100644 --- a/arch/um/os-Linux/sys-i386/registers.c +++ b/arch/um/os-Linux/sys-i386/registers.c | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | #include <errno.h> | 6 | #include <errno.h> |
| 7 | #include <string.h> | 7 | #include <string.h> |
| 8 | #include <setjmp.h> | ||
| 8 | #include "sysdep/ptrace_user.h" | 9 | #include "sysdep/ptrace_user.h" |
| 9 | #include "sysdep/ptrace.h" | 10 | #include "sysdep/ptrace.h" |
| 10 | #include "uml-config.h" | 11 | #include "uml-config.h" |
| @@ -126,13 +127,11 @@ void get_safe_registers(unsigned long *regs) | |||
| 126 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); | 127 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); |
| 127 | } | 128 | } |
| 128 | 129 | ||
| 129 | /* | 130 | void get_thread_regs(union uml_pt_regs *uml_regs, void *buffer) |
| 130 | * Overrides for Emacs so that we follow Linus's tabbing style. | 131 | { |
| 131 | * Emacs will notice this stuff at the end of the file and automatically | 132 | struct __jmp_buf_tag *jmpbuf = buffer; |
| 132 | * adjust the settings for this buffer only. This must remain at the end | 133 | |
| 133 | * of the file. | 134 | UPT_SET(uml_regs, EIP, jmpbuf->__jmpbuf[JB_PC]); |
| 134 | * --------------------------------------------------------------------------- | 135 | UPT_SET(uml_regs, UESP, jmpbuf->__jmpbuf[JB_SP]); |
| 135 | * Local variables: | 136 | UPT_SET(uml_regs, EBP, jmpbuf->__jmpbuf[JB_BP]); |
| 136 | * c-file-style: "linux" | 137 | } |
| 137 | * End: | ||
| 138 | */ | ||
diff --git a/arch/um/os-Linux/sys-x86_64/registers.c b/arch/um/os-Linux/sys-x86_64/registers.c index 44438d15c3d6..4b638dfb52b0 100644 --- a/arch/um/os-Linux/sys-x86_64/registers.c +++ b/arch/um/os-Linux/sys-x86_64/registers.c | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | #include <errno.h> | 6 | #include <errno.h> |
| 7 | #include <string.h> | 7 | #include <string.h> |
| 8 | #include <setjmp.h> | ||
| 8 | #include "ptrace_user.h" | 9 | #include "ptrace_user.h" |
| 9 | #include "uml-config.h" | 10 | #include "uml-config.h" |
| 10 | #include "skas_ptregs.h" | 11 | #include "skas_ptregs.h" |
| @@ -74,13 +75,11 @@ void get_safe_registers(unsigned long *regs) | |||
| 74 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); | 75 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); |
| 75 | } | 76 | } |
| 76 | 77 | ||
| 77 | /* | 78 | void get_thread_regs(union uml_pt_regs *uml_regs, void *buffer) |
| 78 | * Overrides for Emacs so that we follow Linus's tabbing style. | 79 | { |
| 79 | * Emacs will notice this stuff at the end of the file and automatically | 80 | struct __jmp_buf_tag *jmpbuf = buffer; |
| 80 | * adjust the settings for this buffer only. This must remain at the end | 81 | |
| 81 | * of the file. | 82 | UPT_SET(uml_regs, RIP, jmpbuf->__jmpbuf[JB_PC]); |
| 82 | * --------------------------------------------------------------------------- | 83 | UPT_SET(uml_regs, RSP, jmpbuf->__jmpbuf[JB_RSP]); |
| 83 | * Local variables: | 84 | UPT_SET(uml_regs, RBP, jmpbuf->__jmpbuf[JB_RBP]); |
| 84 | * c-file-style: "linux" | 85 | } |
| 85 | * End: | ||
| 86 | */ | ||
diff --git a/arch/um/scripts/Makefile.rules b/arch/um/scripts/Makefile.rules index 59a1291f477e..651d9d88b656 100644 --- a/arch/um/scripts/Makefile.rules +++ b/arch/um/scripts/Makefile.rules | |||
| @@ -7,8 +7,8 @@ USER_SINGLE_OBJS := \ | |||
| 7 | USER_OBJS += $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS)) | 7 | USER_OBJS += $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS)) |
| 8 | USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) | 8 | USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) |
| 9 | 9 | ||
| 10 | $(USER_OBJS) : c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) \ | 10 | $(USER_OBJS) $(USER_OBJS:.o=.i) $(USER_OBJS:.o=.s) $(USER_OBJS:.o=.lst): \ |
| 11 | $(CFLAGS_$(notdir $@)) | 11 | c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(notdir $@)) |
| 12 | $(USER_OBJS): cmd_checksrc = | 12 | $(USER_OBJS): cmd_checksrc = |
| 13 | $(USER_OBJS): quiet_cmd_checksrc = | 13 | $(USER_OBJS): quiet_cmd_checksrc = |
| 14 | $(USER_OBJS): cmd_force_checksrc = | 14 | $(USER_OBJS): cmd_force_checksrc = |
diff --git a/arch/um/sys-i386/sysrq.c b/arch/um/sys-i386/sysrq.c index e3706d15c4f5..d5244f070539 100644 --- a/arch/um/sys-i386/sysrq.c +++ b/arch/um/sys-i386/sysrq.c | |||
| @@ -88,9 +88,7 @@ void show_trace(struct task_struct* task, unsigned long * stack) | |||
| 88 | task = current; | 88 | task = current; |
| 89 | 89 | ||
| 90 | if (task != current) { | 90 | if (task != current) { |
| 91 | //ebp = (unsigned long) KSTK_EBP(task); | 91 | ebp = (unsigned long) KSTK_EBP(task); |
| 92 | /* Which one? No actual difference - just coding style.*/ | ||
| 93 | ebp = (unsigned long) PT_REGS_EBP(&task->thread.regs); | ||
| 94 | } else { | 92 | } else { |
| 95 | asm ("movl %%ebp, %0" : "=r" (ebp) : ); | 93 | asm ("movl %%ebp, %0" : "=r" (ebp) : ); |
| 96 | } | 94 | } |
| @@ -99,15 +97,6 @@ void show_trace(struct task_struct* task, unsigned long * stack) | |||
| 99 | ((unsigned long)stack & (~(THREAD_SIZE - 1))); | 97 | ((unsigned long)stack & (~(THREAD_SIZE - 1))); |
| 100 | print_context_stack(context, stack, ebp); | 98 | print_context_stack(context, stack, ebp); |
| 101 | 99 | ||
| 102 | /*while (((long) stack & (THREAD_SIZE-1)) != 0) { | ||
| 103 | addr = *stack; | ||
| 104 | if (__kernel_text_address(addr)) { | ||
| 105 | printk("%08lx: [<%08lx>]", (unsigned long) stack, addr); | ||
| 106 | print_symbol(" %s", addr); | ||
| 107 | printk("\n"); | ||
| 108 | } | ||
| 109 | stack++; | ||
| 110 | }*/ | ||
| 111 | printk("\n"); | 100 | printk("\n"); |
| 112 | } | 101 | } |
| 113 | 102 | ||
diff --git a/arch/um/sys-i386/user-offsets.c b/arch/um/sys-i386/user-offsets.c index 677fc26a9bbe..26b68675053d 100644 --- a/arch/um/sys-i386/user-offsets.c +++ b/arch/um/sys-i386/user-offsets.c | |||
| @@ -46,7 +46,7 @@ void foo(void) | |||
| 46 | OFFSET(HOST_SC_FP_ST, _fpstate, _st); | 46 | OFFSET(HOST_SC_FP_ST, _fpstate, _st); |
| 47 | OFFSET(HOST_SC_FXSR_ENV, _fpstate, _fxsr_env); | 47 | OFFSET(HOST_SC_FXSR_ENV, _fpstate, _fxsr_env); |
| 48 | 48 | ||
| 49 | DEFINE_LONGS(HOST_FRAME_SIZE, FRAME_SIZE); | 49 | DEFINE(HOST_FRAME_SIZE, FRAME_SIZE); |
| 50 | DEFINE_LONGS(HOST_FP_SIZE, sizeof(struct user_i387_struct)); | 50 | DEFINE_LONGS(HOST_FP_SIZE, sizeof(struct user_i387_struct)); |
| 51 | DEFINE_LONGS(HOST_XFP_SIZE, sizeof(struct user_fxsr_struct)); | 51 | DEFINE_LONGS(HOST_XFP_SIZE, sizeof(struct user_fxsr_struct)); |
| 52 | 52 | ||
diff --git a/arch/um/sys-x86_64/stub_segv.c b/arch/um/sys-x86_64/stub_segv.c index 65a131b362b6..d1e53bdf2e85 100644 --- a/arch/um/sys-x86_64/stub_segv.c +++ b/arch/um/sys-x86_64/stub_segv.c | |||
| @@ -10,6 +10,22 @@ | |||
| 10 | #include "uml-config.h" | 10 | #include "uml-config.h" |
| 11 | #include "sysdep/sigcontext.h" | 11 | #include "sysdep/sigcontext.h" |
| 12 | #include "sysdep/faultinfo.h" | 12 | #include "sysdep/faultinfo.h" |
| 13 | #include <stddef.h> | ||
| 14 | |||
| 15 | /* Copied from sys-x86_64/signal.c - Can't find an equivalent definition | ||
| 16 | * in the libc headers anywhere. | ||
| 17 | */ | ||
| 18 | struct rt_sigframe | ||
| 19 | { | ||
| 20 | char *pretcode; | ||
| 21 | struct ucontext uc; | ||
| 22 | struct siginfo info; | ||
| 23 | }; | ||
| 24 | |||
| 25 | /* Copied here from <linux/kernel.h> - we're userspace. */ | ||
| 26 | #define container_of(ptr, type, member) ({ \ | ||
| 27 | const typeof( ((type *)0)->member ) *__mptr = (ptr); \ | ||
| 28 | (type *)( (char *)__mptr - offsetof(type,member) );}) | ||
| 13 | 29 | ||
| 14 | void __attribute__ ((__section__ (".__syscall_stub"))) | 30 | void __attribute__ ((__section__ (".__syscall_stub"))) |
| 15 | stub_segv_handler(int sig) | 31 | stub_segv_handler(int sig) |
| @@ -17,16 +33,19 @@ stub_segv_handler(int sig) | |||
| 17 | struct ucontext *uc; | 33 | struct ucontext *uc; |
| 18 | 34 | ||
| 19 | __asm__("movq %%rdx, %0" : "=g" (uc) :); | 35 | __asm__("movq %%rdx, %0" : "=g" (uc) :); |
| 20 | GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA), | 36 | GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA), |
| 21 | &uc->uc_mcontext); | 37 | &uc->uc_mcontext); |
| 22 | 38 | ||
| 23 | __asm__("movq %0, %%rax ; syscall": : "g" (__NR_getpid)); | 39 | __asm__("movq %0, %%rax ; syscall": : "g" (__NR_getpid)); |
| 24 | __asm__("movq %%rax, %%rdi ; movq %0, %%rax ; movq %1, %%rsi ;" | 40 | __asm__("movq %%rax, %%rdi ; movq %0, %%rax ; movq %1, %%rsi ;" |
| 25 | "syscall": : "g" (__NR_kill), "g" (SIGUSR1)); | 41 | "syscall": : "g" (__NR_kill), "g" (SIGUSR1) : |
| 26 | /* Two popqs to restore the stack to the state just before entering | 42 | "%rdi", "%rax", "%rsi"); |
| 27 | * the handler, one pops the return address, the other pops the frame | 43 | /* sys_sigreturn expects that the stack pointer will be 8 bytes into |
| 28 | * pointer. | 44 | * the signal frame. So, we use the ucontext pointer, which we know |
| 45 | * already, to get the signal frame pointer, and add 8 to that. | ||
| 29 | */ | 46 | */ |
| 30 | __asm__("popq %%rax ; popq %%rax ; movq %0, %%rax ; syscall" : : "g" | 47 | __asm__("movq %0, %%rsp": : |
| 31 | (__NR_rt_sigreturn)); | 48 | "g" ((unsigned long) container_of(uc, struct rt_sigframe, |
| 49 | uc) + 8)); | ||
| 50 | __asm__("movq %0, %%rax ; syscall" : : "g" (__NR_rt_sigreturn)); | ||
| 32 | } | 51 | } |
diff --git a/arch/x86_64/ia32/ia32_signal.c b/arch/x86_64/ia32/ia32_signal.c index 66e2821533db..0903cc1faef2 100644 --- a/arch/x86_64/ia32/ia32_signal.c +++ b/arch/x86_64/ia32/ia32_signal.c | |||
| @@ -425,7 +425,11 @@ get_sigframe(struct k_sigaction *ka, struct pt_regs * regs, size_t frame_size) | |||
| 425 | rsp = (unsigned long) ka->sa.sa_restorer; | 425 | rsp = (unsigned long) ka->sa.sa_restorer; |
| 426 | } | 426 | } |
| 427 | 427 | ||
| 428 | return (void __user *)((rsp - frame_size) & -8UL); | 428 | rsp -= frame_size; |
| 429 | /* Align the stack pointer according to the i386 ABI, | ||
| 430 | * i.e. so that on function entry ((sp + 4) & 15) == 0. */ | ||
| 431 | rsp = ((rsp + 4) & -16ul) - 4; | ||
| 432 | return (void __user *) rsp; | ||
| 429 | } | 433 | } |
| 430 | 434 | ||
| 431 | int ia32_setup_frame(int sig, struct k_sigaction *ka, | 435 | int ia32_setup_frame(int sig, struct k_sigaction *ka, |
diff --git a/arch/x86_64/kernel/head.S b/arch/x86_64/kernel/head.S index 4592bf21fcaf..b92e5f45ed46 100644 --- a/arch/x86_64/kernel/head.S +++ b/arch/x86_64/kernel/head.S | |||
| @@ -270,26 +270,26 @@ ENTRY(level3_kernel_pgt) | |||
| 270 | .org 0x4000 | 270 | .org 0x4000 |
| 271 | ENTRY(level2_ident_pgt) | 271 | ENTRY(level2_ident_pgt) |
| 272 | /* 40MB for bootup. */ | 272 | /* 40MB for bootup. */ |
| 273 | .quad 0x0000000000000183 | 273 | .quad 0x0000000000000083 |
| 274 | .quad 0x0000000000200183 | 274 | .quad 0x0000000000200083 |
| 275 | .quad 0x0000000000400183 | 275 | .quad 0x0000000000400083 |
| 276 | .quad 0x0000000000600183 | 276 | .quad 0x0000000000600083 |
| 277 | .quad 0x0000000000800183 | 277 | .quad 0x0000000000800083 |
| 278 | .quad 0x0000000000A00183 | 278 | .quad 0x0000000000A00083 |
| 279 | .quad 0x0000000000C00183 | 279 | .quad 0x0000000000C00083 |
| 280 | .quad 0x0000000000E00183 | 280 | .quad 0x0000000000E00083 |
| 281 | .quad 0x0000000001000183 | 281 | .quad 0x0000000001000083 |
| 282 | .quad 0x0000000001200183 | 282 | .quad 0x0000000001200083 |
| 283 | .quad 0x0000000001400183 | 283 | .quad 0x0000000001400083 |
| 284 | .quad 0x0000000001600183 | 284 | .quad 0x0000000001600083 |
| 285 | .quad 0x0000000001800183 | 285 | .quad 0x0000000001800083 |
| 286 | .quad 0x0000000001A00183 | 286 | .quad 0x0000000001A00083 |
| 287 | .quad 0x0000000001C00183 | 287 | .quad 0x0000000001C00083 |
| 288 | .quad 0x0000000001E00183 | 288 | .quad 0x0000000001E00083 |
| 289 | .quad 0x0000000002000183 | 289 | .quad 0x0000000002000083 |
| 290 | .quad 0x0000000002200183 | 290 | .quad 0x0000000002200083 |
| 291 | .quad 0x0000000002400183 | 291 | .quad 0x0000000002400083 |
| 292 | .quad 0x0000000002600183 | 292 | .quad 0x0000000002600083 |
| 293 | /* Temporary mappings for the super early allocator in arch/x86_64/mm/init.c */ | 293 | /* Temporary mappings for the super early allocator in arch/x86_64/mm/init.c */ |
| 294 | .globl temp_boot_pmds | 294 | .globl temp_boot_pmds |
| 295 | temp_boot_pmds: | 295 | temp_boot_pmds: |
diff --git a/arch/x86_64/kernel/setup64.c b/arch/x86_64/kernel/setup64.c index bd33be24a386..79190891fbc5 100644 --- a/arch/x86_64/kernel/setup64.c +++ b/arch/x86_64/kernel/setup64.c | |||
| @@ -87,6 +87,10 @@ void __init setup_per_cpu_areas(void) | |||
| 87 | int i; | 87 | int i; |
| 88 | unsigned long size; | 88 | unsigned long size; |
| 89 | 89 | ||
| 90 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 91 | prefill_possible_map(); | ||
| 92 | #endif | ||
| 93 | |||
| 90 | /* Copy section for each CPU (we discard the original) */ | 94 | /* Copy section for each CPU (we discard the original) */ |
| 91 | size = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES); | 95 | size = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES); |
| 92 | #ifdef CONFIG_MODULES | 96 | #ifdef CONFIG_MODULES |
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c index e12d7baeb33e..658a81b33f3b 100644 --- a/arch/x86_64/kernel/smpboot.c +++ b/arch/x86_64/kernel/smpboot.c | |||
| @@ -892,7 +892,7 @@ static __init void disable_smp(void) | |||
| 892 | * those NR_CPUS, hence cpu_possible_map represents entire NR_CPUS range. | 892 | * those NR_CPUS, hence cpu_possible_map represents entire NR_CPUS range. |
| 893 | * - Ashok Raj | 893 | * - Ashok Raj |
| 894 | */ | 894 | */ |
| 895 | static void prefill_possible_map(void) | 895 | __init void prefill_possible_map(void) |
| 896 | { | 896 | { |
| 897 | int i; | 897 | int i; |
| 898 | for (i = 0; i < NR_CPUS; i++) | 898 | for (i = 0; i < NR_CPUS; i++) |
| @@ -967,10 +967,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus) | |||
| 967 | current_cpu_data = boot_cpu_data; | 967 | current_cpu_data = boot_cpu_data; |
| 968 | current_thread_info()->cpu = 0; /* needed? */ | 968 | current_thread_info()->cpu = 0; /* needed? */ |
| 969 | 969 | ||
| 970 | #ifdef CONFIG_HOTPLUG_CPU | ||
| 971 | prefill_possible_map(); | ||
| 972 | #endif | ||
| 973 | |||
| 974 | if (smp_sanity_check(max_cpus) < 0) { | 970 | if (smp_sanity_check(max_cpus) < 0) { |
| 975 | printk(KERN_INFO "SMP disabled\n"); | 971 | printk(KERN_INFO "SMP disabled\n"); |
| 976 | disable_smp(); | 972 | disable_smp(); |
diff --git a/arch/x86_64/kernel/suspend.c b/arch/x86_64/kernel/suspend.c index ebb9abf3ce6d..f066c6ab3618 100644 --- a/arch/x86_64/kernel/suspend.c +++ b/arch/x86_64/kernel/suspend.c | |||
| @@ -11,6 +11,8 @@ | |||
| 11 | #include <linux/smp.h> | 11 | #include <linux/smp.h> |
| 12 | #include <linux/suspend.h> | 12 | #include <linux/suspend.h> |
| 13 | #include <asm/proto.h> | 13 | #include <asm/proto.h> |
| 14 | #include <asm/page.h> | ||
| 15 | #include <asm/pgtable.h> | ||
| 14 | 16 | ||
| 15 | struct saved_context saved_context; | 17 | struct saved_context saved_context; |
| 16 | 18 | ||
| @@ -140,4 +142,129 @@ void fix_processor_context(void) | |||
| 140 | 142 | ||
| 141 | } | 143 | } |
| 142 | 144 | ||
| 145 | #ifdef CONFIG_SOFTWARE_SUSPEND | ||
| 146 | /* Defined in arch/x86_64/kernel/suspend_asm.S */ | ||
| 147 | extern int restore_image(void); | ||
| 143 | 148 | ||
| 149 | pgd_t *temp_level4_pgt; | ||
| 150 | |||
| 151 | static void **pages; | ||
| 152 | |||
| 153 | static inline void *__add_page(void) | ||
| 154 | { | ||
| 155 | void **c; | ||
| 156 | |||
| 157 | c = (void **)get_usable_page(GFP_ATOMIC); | ||
| 158 | if (c) { | ||
| 159 | *c = pages; | ||
| 160 | pages = c; | ||
| 161 | } | ||
| 162 | return c; | ||
| 163 | } | ||
| 164 | |||
| 165 | static inline void *__next_page(void) | ||
| 166 | { | ||
| 167 | void **c; | ||
| 168 | |||
| 169 | c = pages; | ||
| 170 | if (c) { | ||
| 171 | pages = *c; | ||
| 172 | *c = NULL; | ||
| 173 | } | ||
| 174 | return c; | ||
| 175 | } | ||
| 176 | |||
| 177 | /* | ||
| 178 | * Try to allocate as many usable pages as needed and daisy chain them. | ||
| 179 | * If one allocation fails, free the pages allocated so far | ||
| 180 | */ | ||
| 181 | static int alloc_usable_pages(unsigned long n) | ||
| 182 | { | ||
| 183 | void *p; | ||
| 184 | |||
| 185 | pages = NULL; | ||
| 186 | do | ||
| 187 | if (!__add_page()) | ||
| 188 | break; | ||
| 189 | while (--n); | ||
| 190 | if (n) { | ||
| 191 | p = __next_page(); | ||
| 192 | while (p) { | ||
| 193 | free_page((unsigned long)p); | ||
| 194 | p = __next_page(); | ||
| 195 | } | ||
| 196 | return -ENOMEM; | ||
| 197 | } | ||
| 198 | return 0; | ||
| 199 | } | ||
| 200 | |||
| 201 | static void res_phys_pud_init(pud_t *pud, unsigned long address, unsigned long end) | ||
| 202 | { | ||
| 203 | long i, j; | ||
| 204 | |||
| 205 | i = pud_index(address); | ||
| 206 | pud = pud + i; | ||
| 207 | for (; i < PTRS_PER_PUD; pud++, i++) { | ||
| 208 | unsigned long paddr; | ||
| 209 | pmd_t *pmd; | ||
| 210 | |||
| 211 | paddr = address + i*PUD_SIZE; | ||
| 212 | if (paddr >= end) | ||
| 213 | break; | ||
| 214 | |||
| 215 | pmd = (pmd_t *)__next_page(); | ||
| 216 | set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); | ||
| 217 | for (j = 0; j < PTRS_PER_PMD; pmd++, j++, paddr += PMD_SIZE) { | ||
| 218 | unsigned long pe; | ||
| 219 | |||
| 220 | if (paddr >= end) | ||
| 221 | break; | ||
| 222 | pe = _PAGE_NX | _PAGE_PSE | _KERNPG_TABLE | paddr; | ||
| 223 | pe &= __supported_pte_mask; | ||
| 224 | set_pmd(pmd, __pmd(pe)); | ||
| 225 | } | ||
| 226 | } | ||
| 227 | } | ||
| 228 | |||
| 229 | static void set_up_temporary_mappings(void) | ||
| 230 | { | ||
| 231 | unsigned long start, end, next; | ||
| 232 | |||
| 233 | temp_level4_pgt = (pgd_t *)__next_page(); | ||
| 234 | |||
| 235 | /* It is safe to reuse the original kernel mapping */ | ||
| 236 | set_pgd(temp_level4_pgt + pgd_index(__START_KERNEL_map), | ||
| 237 | init_level4_pgt[pgd_index(__START_KERNEL_map)]); | ||
| 238 | |||
| 239 | /* Set up the direct mapping from scratch */ | ||
| 240 | start = (unsigned long)pfn_to_kaddr(0); | ||
| 241 | end = (unsigned long)pfn_to_kaddr(end_pfn); | ||
| 242 | |||
| 243 | for (; start < end; start = next) { | ||
| 244 | pud_t *pud = (pud_t *)__next_page(); | ||
| 245 | next = start + PGDIR_SIZE; | ||
| 246 | if (next > end) | ||
| 247 | next = end; | ||
| 248 | res_phys_pud_init(pud, __pa(start), __pa(next)); | ||
| 249 | set_pgd(temp_level4_pgt + pgd_index(start), | ||
| 250 | mk_kernel_pgd(__pa(pud))); | ||
| 251 | } | ||
| 252 | } | ||
| 253 | |||
| 254 | int swsusp_arch_resume(void) | ||
| 255 | { | ||
| 256 | unsigned long n; | ||
| 257 | |||
| 258 | n = ((end_pfn << PAGE_SHIFT) + PUD_SIZE - 1) >> PUD_SHIFT; | ||
| 259 | n += (n + PTRS_PER_PUD - 1) / PTRS_PER_PUD + 1; | ||
| 260 | pr_debug("swsusp_arch_resume(): pages needed = %lu\n", n); | ||
| 261 | if (alloc_usable_pages(n)) { | ||
| 262 | free_eaten_memory(); | ||
| 263 | return -ENOMEM; | ||
| 264 | } | ||
| 265 | /* We have got enough memory and from now on we cannot recover */ | ||
| 266 | set_up_temporary_mappings(); | ||
| 267 | restore_image(); | ||
| 268 | return 0; | ||
| 269 | } | ||
| 270 | #endif /* CONFIG_SOFTWARE_SUSPEND */ | ||
diff --git a/arch/x86_64/kernel/suspend_asm.S b/arch/x86_64/kernel/suspend_asm.S index 4d659e97df10..320b6fb00cca 100644 --- a/arch/x86_64/kernel/suspend_asm.S +++ b/arch/x86_64/kernel/suspend_asm.S | |||
| @@ -39,12 +39,13 @@ ENTRY(swsusp_arch_suspend) | |||
| 39 | call swsusp_save | 39 | call swsusp_save |
| 40 | ret | 40 | ret |
| 41 | 41 | ||
| 42 | ENTRY(swsusp_arch_resume) | 42 | ENTRY(restore_image) |
| 43 | /* set up cr3 */ | 43 | /* switch to temporary page tables */ |
| 44 | leaq init_level4_pgt(%rip),%rax | 44 | movq $__PAGE_OFFSET, %rdx |
| 45 | subq $__START_KERNEL_map,%rax | 45 | movq temp_level4_pgt(%rip), %rax |
| 46 | movq %rax,%cr3 | 46 | subq %rdx, %rax |
| 47 | 47 | movq %rax, %cr3 | |
| 48 | /* Flush TLB */ | ||
| 48 | movq mmu_cr4_features(%rip), %rax | 49 | movq mmu_cr4_features(%rip), %rax |
| 49 | movq %rax, %rdx | 50 | movq %rax, %rdx |
| 50 | andq $~(1<<7), %rdx # PGE | 51 | andq $~(1<<7), %rdx # PGE |
| @@ -69,6 +70,10 @@ loop: | |||
| 69 | movq pbe_next(%rdx), %rdx | 70 | movq pbe_next(%rdx), %rdx |
| 70 | jmp loop | 71 | jmp loop |
| 71 | done: | 72 | done: |
| 73 | /* go back to the original page tables */ | ||
| 74 | leaq init_level4_pgt(%rip), %rax | ||
| 75 | subq $__START_KERNEL_map, %rax | ||
| 76 | movq %rax, %cr3 | ||
| 72 | /* Flush TLB, including "global" things (vmalloc) */ | 77 | /* Flush TLB, including "global" things (vmalloc) */ |
| 73 | movq mmu_cr4_features(%rip), %rax | 78 | movq mmu_cr4_features(%rip), %rax |
| 74 | movq %rax, %rdx | 79 | movq %rax, %rdx |
diff --git a/arch/x86_64/mm/pageattr.c b/arch/x86_64/mm/pageattr.c index 94862e1ec032..b90e8fe9eeb0 100644 --- a/arch/x86_64/mm/pageattr.c +++ b/arch/x86_64/mm/pageattr.c | |||
| @@ -220,8 +220,6 @@ void global_flush_tlb(void) | |||
| 220 | down_read(&init_mm.mmap_sem); | 220 | down_read(&init_mm.mmap_sem); |
| 221 | df = xchg(&df_list, NULL); | 221 | df = xchg(&df_list, NULL); |
| 222 | up_read(&init_mm.mmap_sem); | 222 | up_read(&init_mm.mmap_sem); |
| 223 | if (!df) | ||
| 224 | return; | ||
| 225 | flush_map((df && !df->next) ? df->address : 0); | 223 | flush_map((df && !df->next) ? df->address : 0); |
| 226 | for (; df; df = next_df) { | 224 | for (; df; df = next_df) { |
| 227 | next_df = df->next; | 225 | next_df = df->next; |
diff --git a/drivers/acpi/event.c b/drivers/acpi/event.c index bfa8b76de403..2dbb1b0f11d5 100644 --- a/drivers/acpi/event.c +++ b/drivers/acpi/event.c | |||
| @@ -58,9 +58,8 @@ acpi_system_read_event(struct file *file, char __user * buffer, size_t count, | |||
| 58 | return_VALUE(-EAGAIN); | 58 | return_VALUE(-EAGAIN); |
| 59 | 59 | ||
| 60 | result = acpi_bus_receive_event(&event); | 60 | result = acpi_bus_receive_event(&event); |
| 61 | if (result) { | 61 | if (result) |
| 62 | return_VALUE(-EIO); | 62 | return_VALUE(result); |
| 63 | } | ||
| 64 | 63 | ||
| 65 | chars_remaining = sprintf(str, "%s %s %08x %08x\n", | 64 | chars_remaining = sprintf(str, "%s %s %08x %08x\n", |
| 66 | event.device_class ? event. | 65 | event.device_class ? event. |
diff --git a/drivers/acpi/glue.c b/drivers/acpi/glue.c index e36c5da2b31a..3937adf4e5e5 100644 --- a/drivers/acpi/glue.c +++ b/drivers/acpi/glue.c | |||
| @@ -96,7 +96,7 @@ struct acpi_find_pci_root { | |||
| 96 | static acpi_status | 96 | static acpi_status |
| 97 | do_root_bridge_busnr_callback(struct acpi_resource *resource, void *data) | 97 | do_root_bridge_busnr_callback(struct acpi_resource *resource, void *data) |
| 98 | { | 98 | { |
| 99 | int *busnr = (int *)data; | 99 | unsigned long *busnr = (unsigned long *)data; |
| 100 | struct acpi_resource_address64 address; | 100 | struct acpi_resource_address64 address; |
| 101 | 101 | ||
| 102 | if (resource->id != ACPI_RSTYPE_ADDRESS16 && | 102 | if (resource->id != ACPI_RSTYPE_ADDRESS16 && |
| @@ -115,13 +115,13 @@ do_root_bridge_busnr_callback(struct acpi_resource *resource, void *data) | |||
| 115 | static int get_root_bridge_busnr(acpi_handle handle) | 115 | static int get_root_bridge_busnr(acpi_handle handle) |
| 116 | { | 116 | { |
| 117 | acpi_status status; | 117 | acpi_status status; |
| 118 | int bus, bbn; | 118 | unsigned long bus, bbn; |
| 119 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | 119 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; |
| 120 | 120 | ||
| 121 | acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer); | 121 | acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer); |
| 122 | 122 | ||
| 123 | status = acpi_evaluate_integer(handle, METHOD_NAME__BBN, NULL, | 123 | status = acpi_evaluate_integer(handle, METHOD_NAME__BBN, NULL, |
| 124 | (unsigned long *)&bbn); | 124 | &bbn); |
| 125 | if (status == AE_NOT_FOUND) { | 125 | if (status == AE_NOT_FOUND) { |
| 126 | /* Assume bus = 0 */ | 126 | /* Assume bus = 0 */ |
| 127 | printk(KERN_INFO PREFIX | 127 | printk(KERN_INFO PREFIX |
| @@ -153,7 +153,7 @@ static int get_root_bridge_busnr(acpi_handle handle) | |||
| 153 | } | 153 | } |
| 154 | exit: | 154 | exit: |
| 155 | acpi_os_free(buffer.pointer); | 155 | acpi_os_free(buffer.pointer); |
| 156 | return bbn; | 156 | return (int)bbn; |
| 157 | } | 157 | } |
| 158 | 158 | ||
| 159 | static acpi_status | 159 | static acpi_status |
diff --git a/drivers/atm/ambassador.c b/drivers/atm/ambassador.c index d74a7c5e75dd..4b6bf19c39c0 100644 --- a/drivers/atm/ambassador.c +++ b/drivers/atm/ambassador.c | |||
| @@ -795,7 +795,7 @@ static void drain_rx_pools (amb_dev * dev) { | |||
| 795 | } | 795 | } |
| 796 | 796 | ||
| 797 | static inline void fill_rx_pool (amb_dev * dev, unsigned char pool, | 797 | static inline void fill_rx_pool (amb_dev * dev, unsigned char pool, |
| 798 | unsigned int __nocast priority) | 798 | gfp_t priority) |
| 799 | { | 799 | { |
| 800 | rx_in rx; | 800 | rx_in rx; |
| 801 | amb_rxq * rxq; | 801 | amb_rxq * rxq; |
diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c index 58219744f5db..7f7ec288824d 100644 --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c | |||
| @@ -1374,8 +1374,7 @@ static void reset_chip (struct fs_dev *dev) | |||
| 1374 | } | 1374 | } |
| 1375 | } | 1375 | } |
| 1376 | 1376 | ||
| 1377 | static void __devinit *aligned_kmalloc (int size, unsigned int __nocast flags, | 1377 | static void __devinit *aligned_kmalloc (int size, gfp_t flags, int alignment) |
| 1378 | int alignment) | ||
| 1379 | { | 1378 | { |
| 1380 | void *t; | 1379 | void *t; |
| 1381 | 1380 | ||
| @@ -1466,7 +1465,7 @@ static inline int nr_buffers_in_freepool (struct fs_dev *dev, struct freepool *f | |||
| 1466 | working again after that... -- REW */ | 1465 | working again after that... -- REW */ |
| 1467 | 1466 | ||
| 1468 | static void top_off_fp (struct fs_dev *dev, struct freepool *fp, | 1467 | static void top_off_fp (struct fs_dev *dev, struct freepool *fp, |
| 1469 | unsigned int __nocast gfp_flags) | 1468 | gfp_t gfp_flags) |
| 1470 | { | 1469 | { |
| 1471 | struct FS_BPENTRY *qe, *ne; | 1470 | struct FS_BPENTRY *qe, *ne; |
| 1472 | struct sk_buff *skb; | 1471 | struct sk_buff *skb; |
diff --git a/drivers/atm/fore200e.c b/drivers/atm/fore200e.c index 2bf723a7b6e6..14f6a6201da3 100644 --- a/drivers/atm/fore200e.c +++ b/drivers/atm/fore200e.c | |||
| @@ -178,14 +178,12 @@ fore200e_irq_itoa(int irq) | |||
| 178 | 178 | ||
| 179 | 179 | ||
| 180 | static void* | 180 | static void* |
| 181 | fore200e_kmalloc(int size, int flags) | 181 | fore200e_kmalloc(int size, gfp_t flags) |
| 182 | { | 182 | { |
| 183 | void* chunk = kmalloc(size, flags); | 183 | void *chunk = kzalloc(size, flags); |
| 184 | 184 | ||
| 185 | if (chunk) | 185 | if (!chunk) |
| 186 | memset(chunk, 0x00, size); | 186 | printk(FORE200E "kmalloc() failed, requested size = %d, flags = 0x%x\n", size, flags); |
| 187 | else | ||
| 188 | printk(FORE200E "kmalloc() failed, requested size = %d, flags = 0x%x\n", size, flags); | ||
| 189 | 187 | ||
| 190 | return chunk; | 188 | return chunk; |
| 191 | } | 189 | } |
diff --git a/drivers/base/dmapool.c b/drivers/base/dmapool.c index 60a7ef6a201b..e2f64f91ed05 100644 --- a/drivers/base/dmapool.c +++ b/drivers/base/dmapool.c | |||
| @@ -156,7 +156,7 @@ dma_pool_create (const char *name, struct device *dev, | |||
| 156 | 156 | ||
| 157 | 157 | ||
| 158 | static struct dma_page * | 158 | static struct dma_page * |
| 159 | pool_alloc_page (struct dma_pool *pool, unsigned int __nocast mem_flags) | 159 | pool_alloc_page (struct dma_pool *pool, gfp_t mem_flags) |
| 160 | { | 160 | { |
| 161 | struct dma_page *page; | 161 | struct dma_page *page; |
| 162 | int mapsize; | 162 | int mapsize; |
| @@ -262,8 +262,7 @@ dma_pool_destroy (struct dma_pool *pool) | |||
| 262 | * If such a memory block can't be allocated, null is returned. | 262 | * If such a memory block can't be allocated, null is returned. |
| 263 | */ | 263 | */ |
| 264 | void * | 264 | void * |
| 265 | dma_pool_alloc (struct dma_pool *pool, unsigned int __nocast mem_flags, | 265 | dma_pool_alloc (struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle) |
| 266 | dma_addr_t *handle) | ||
| 267 | { | 266 | { |
| 268 | unsigned long flags; | 267 | unsigned long flags; |
| 269 | struct dma_page *page; | 268 | struct dma_page *page; |
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c index 7e22a58926b8..a280e679b1ca 100644 --- a/drivers/block/pktcdvd.c +++ b/drivers/block/pktcdvd.c | |||
| @@ -229,7 +229,7 @@ static int pkt_grow_pktlist(struct pktcdvd_device *pd, int nr_packets) | |||
| 229 | return 1; | 229 | return 1; |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | static void *pkt_rb_alloc(unsigned int __nocast gfp_mask, void *data) | 232 | static void *pkt_rb_alloc(gfp_t gfp_mask, void *data) |
| 233 | { | 233 | { |
| 234 | return kmalloc(sizeof(struct pkt_rb_node), gfp_mask); | 234 | return kmalloc(sizeof(struct pkt_rb_node), gfp_mask); |
| 235 | } | 235 | } |
| @@ -2082,7 +2082,7 @@ static int pkt_close(struct inode *inode, struct file *file) | |||
| 2082 | } | 2082 | } |
| 2083 | 2083 | ||
| 2084 | 2084 | ||
| 2085 | static void *psd_pool_alloc(unsigned int __nocast gfp_mask, void *data) | 2085 | static void *psd_pool_alloc(gfp_t gfp_mask, void *data) |
| 2086 | { | 2086 | { |
| 2087 | return kmalloc(sizeof(struct packet_stacked_data), gfp_mask); | 2087 | return kmalloc(sizeof(struct packet_stacked_data), gfp_mask); |
| 2088 | } | 2088 | } |
diff --git a/drivers/block/scsi_ioctl.c b/drivers/block/scsi_ioctl.c index 079ec344eb47..382dea7b224c 100644 --- a/drivers/block/scsi_ioctl.c +++ b/drivers/block/scsi_ioctl.c | |||
| @@ -201,15 +201,15 @@ static int verify_command(struct file *file, unsigned char *cmd) | |||
| 201 | return 0; | 201 | return 0; |
| 202 | } | 202 | } |
| 203 | 203 | ||
| 204 | /* And root can do any command.. */ | ||
| 205 | if (capable(CAP_SYS_RAWIO)) | ||
| 206 | return 0; | ||
| 207 | |||
| 204 | if (!type) { | 208 | if (!type) { |
| 205 | cmd_type[cmd[0]] = CMD_WARNED; | 209 | cmd_type[cmd[0]] = CMD_WARNED; |
| 206 | printk(KERN_WARNING "scsi: unknown opcode 0x%02x\n", cmd[0]); | 210 | printk(KERN_WARNING "scsi: unknown opcode 0x%02x\n", cmd[0]); |
| 207 | } | 211 | } |
| 208 | 212 | ||
| 209 | /* And root can do any command.. */ | ||
| 210 | if (capable(CAP_SYS_RAWIO)) | ||
| 211 | return 0; | ||
| 212 | |||
| 213 | /* Otherwise fail it with an "Operation not permitted" */ | 213 | /* Otherwise fail it with an "Operation not permitted" */ |
| 214 | return -EPERM; | 214 | return -EPERM; |
| 215 | } | 215 | } |
diff --git a/drivers/bluetooth/bpa10x.c b/drivers/bluetooth/bpa10x.c index a1bf8f066c88..4fa85234d8b5 100644 --- a/drivers/bluetooth/bpa10x.c +++ b/drivers/bluetooth/bpa10x.c | |||
| @@ -308,7 +308,7 @@ unlock: | |||
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | static inline struct urb *bpa10x_alloc_urb(struct usb_device *udev, unsigned int pipe, | 310 | static inline struct urb *bpa10x_alloc_urb(struct usb_device *udev, unsigned int pipe, |
| 311 | size_t size, unsigned int __nocast flags, void *data) | 311 | size_t size, gfp_t flags, void *data) |
| 312 | { | 312 | { |
| 313 | struct urb *urb; | 313 | struct urb *urb; |
| 314 | struct usb_ctrlrequest *cr; | 314 | struct usb_ctrlrequest *cr; |
diff --git a/drivers/bluetooth/hci_usb.c b/drivers/bluetooth/hci_usb.c index 57c48bbf6fe6..6756cb20b753 100644 --- a/drivers/bluetooth/hci_usb.c +++ b/drivers/bluetooth/hci_usb.c | |||
| @@ -132,7 +132,7 @@ static struct usb_device_id blacklist_ids[] = { | |||
| 132 | { } /* Terminating entry */ | 132 | { } /* Terminating entry */ |
| 133 | }; | 133 | }; |
| 134 | 134 | ||
| 135 | static struct _urb *_urb_alloc(int isoc, unsigned int __nocast gfp) | 135 | static struct _urb *_urb_alloc(int isoc, gfp_t gfp) |
| 136 | { | 136 | { |
| 137 | struct _urb *_urb = kmalloc(sizeof(struct _urb) + | 137 | struct _urb *_urb = kmalloc(sizeof(struct _urb) + |
| 138 | sizeof(struct usb_iso_packet_descriptor) * isoc, gfp); | 138 | sizeof(struct usb_iso_packet_descriptor) * isoc, gfp); |
diff --git a/drivers/char/.gitignore b/drivers/char/.gitignore new file mode 100644 index 000000000000..2b6b1d772ed7 --- /dev/null +++ b/drivers/char/.gitignore | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | consolemap_deftbl.c | ||
| 2 | defkeymap.c | ||
| 3 | |||
diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c index d3aa159c9dec..7957fc91f6ad 100644 --- a/drivers/char/agp/sgi-agp.c +++ b/drivers/char/agp/sgi-agp.c | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
| 18 | #include <linux/agp_backend.h> | 18 | #include <linux/agp_backend.h> |
| 19 | #include <asm/sn/addrs.h> | 19 | #include <asm/sn/addrs.h> |
| 20 | #include <asm/sn/io.h> | ||
| 20 | #include <asm/sn/pcidev.h> | 21 | #include <asm/sn/pcidev.h> |
| 21 | #include <asm/sn/pcibus_provider_defs.h> | 22 | #include <asm/sn/pcibus_provider_defs.h> |
| 22 | #include <asm/sn/tioca_provider.h> | 23 | #include <asm/sn/tioca_provider.h> |
diff --git a/drivers/char/drm/drm_stub.c b/drivers/char/drm/drm_stub.c index 95a976c96eb8..70458cb061c6 100644 --- a/drivers/char/drm/drm_stub.c +++ b/drivers/char/drm/drm_stub.c | |||
| @@ -47,7 +47,7 @@ MODULE_PARM_DESC(cards_limit, "Maximum number of graphics cards"); | |||
| 47 | MODULE_PARM_DESC(debug, "Enable debug output"); | 47 | MODULE_PARM_DESC(debug, "Enable debug output"); |
| 48 | 48 | ||
| 49 | module_param_named(cards_limit, drm_cards_limit, int, 0444); | 49 | module_param_named(cards_limit, drm_cards_limit, int, 0444); |
| 50 | module_param_named(debug, drm_debug, int, 0666); | 50 | module_param_named(debug, drm_debug, int, 0600); |
| 51 | 51 | ||
| 52 | drm_head_t **drm_heads; | 52 | drm_head_t **drm_heads; |
| 53 | struct drm_sysfs_class *drm_class; | 53 | struct drm_sysfs_class *drm_class; |
diff --git a/drivers/char/drm/drm_vm.c b/drivers/char/drm/drm_vm.c index ced4215e2275..39ea96e42c5b 100644 --- a/drivers/char/drm/drm_vm.c +++ b/drivers/char/drm/drm_vm.c | |||
| @@ -148,7 +148,8 @@ static __inline__ struct page *drm_do_vm_shm_nopage(struct vm_area_struct *vma, | |||
| 148 | 148 | ||
| 149 | offset = address - vma->vm_start; | 149 | offset = address - vma->vm_start; |
| 150 | i = (unsigned long)map->handle + offset; | 150 | i = (unsigned long)map->handle + offset; |
| 151 | page = vmalloc_to_page((void *)i); | 151 | page = (map->type == _DRM_CONSISTENT) ? |
| 152 | virt_to_page((void *)i) : vmalloc_to_page((void *)i); | ||
| 152 | if (!page) | 153 | if (!page) |
| 153 | return NOPAGE_OOM; | 154 | return NOPAGE_OOM; |
| 154 | get_page(page); | 155 | get_page(page); |
diff --git a/drivers/char/drm/mga_dma.c b/drivers/char/drm/mga_dma.c index fc7d4a594bca..c8e1b6c83636 100644 --- a/drivers/char/drm/mga_dma.c +++ b/drivers/char/drm/mga_dma.c | |||
| @@ -437,7 +437,7 @@ static int mga_do_agp_dma_bootstrap(drm_device_t * dev, | |||
| 437 | drm_mga_dma_bootstrap_t * dma_bs) | 437 | drm_mga_dma_bootstrap_t * dma_bs) |
| 438 | { | 438 | { |
| 439 | drm_mga_private_t * const dev_priv = (drm_mga_private_t *) dev->dev_private; | 439 | drm_mga_private_t * const dev_priv = (drm_mga_private_t *) dev->dev_private; |
| 440 | const unsigned int warp_size = mga_warp_microcode_size(dev_priv); | 440 | unsigned int warp_size = mga_warp_microcode_size(dev_priv); |
| 441 | int err; | 441 | int err; |
| 442 | unsigned offset; | 442 | unsigned offset; |
| 443 | const unsigned secondary_size = dma_bs->secondary_bin_count | 443 | const unsigned secondary_size = dma_bs->secondary_bin_count |
| @@ -499,6 +499,12 @@ static int mga_do_agp_dma_bootstrap(drm_device_t * dev, | |||
| 499 | return err; | 499 | return err; |
| 500 | } | 500 | } |
| 501 | 501 | ||
| 502 | /* Make drm_addbufs happy by not trying to create a mapping for less | ||
| 503 | * than a page. | ||
| 504 | */ | ||
| 505 | if (warp_size < PAGE_SIZE) | ||
| 506 | warp_size = PAGE_SIZE; | ||
| 507 | |||
| 502 | offset = 0; | 508 | offset = 0; |
| 503 | err = drm_addmap( dev, offset, warp_size, | 509 | err = drm_addmap( dev, offset, warp_size, |
| 504 | _DRM_AGP, _DRM_READ_ONLY, & dev_priv->warp ); | 510 | _DRM_AGP, _DRM_READ_ONLY, & dev_priv->warp ); |
| @@ -587,7 +593,7 @@ static int mga_do_pci_dma_bootstrap(drm_device_t * dev, | |||
| 587 | drm_mga_dma_bootstrap_t * dma_bs) | 593 | drm_mga_dma_bootstrap_t * dma_bs) |
| 588 | { | 594 | { |
| 589 | drm_mga_private_t * const dev_priv = (drm_mga_private_t *) dev->dev_private; | 595 | drm_mga_private_t * const dev_priv = (drm_mga_private_t *) dev->dev_private; |
| 590 | const unsigned int warp_size = mga_warp_microcode_size(dev_priv); | 596 | unsigned int warp_size = mga_warp_microcode_size(dev_priv); |
| 591 | unsigned int primary_size; | 597 | unsigned int primary_size; |
| 592 | unsigned int bin_count; | 598 | unsigned int bin_count; |
| 593 | int err; | 599 | int err; |
| @@ -599,6 +605,12 @@ static int mga_do_pci_dma_bootstrap(drm_device_t * dev, | |||
| 599 | return DRM_ERR(EFAULT); | 605 | return DRM_ERR(EFAULT); |
| 600 | } | 606 | } |
| 601 | 607 | ||
| 608 | /* Make drm_addbufs happy by not trying to create a mapping for less | ||
| 609 | * than a page. | ||
| 610 | */ | ||
| 611 | if (warp_size < PAGE_SIZE) | ||
| 612 | warp_size = PAGE_SIZE; | ||
| 613 | |||
| 602 | /* The proper alignment is 0x100 for this mapping */ | 614 | /* The proper alignment is 0x100 for this mapping */ |
| 603 | err = drm_addmap(dev, 0, warp_size, _DRM_CONSISTENT, | 615 | err = drm_addmap(dev, 0, warp_size, _DRM_CONSISTENT, |
| 604 | _DRM_READ_ONLY, &dev_priv->warp); | 616 | _DRM_READ_ONLY, &dev_priv->warp); |
| @@ -812,6 +824,10 @@ static int mga_do_init_dma( drm_device_t *dev, drm_mga_init_t *init ) | |||
| 812 | } | 824 | } |
| 813 | 825 | ||
| 814 | if (! dev_priv->used_new_dma_init) { | 826 | if (! dev_priv->used_new_dma_init) { |
| 827 | |||
| 828 | dev_priv->dma_access = MGA_PAGPXFER; | ||
| 829 | dev_priv->wagp_enable = MGA_WAGP_ENABLE; | ||
| 830 | |||
| 815 | dev_priv->status = drm_core_findmap(dev, init->status_offset); | 831 | dev_priv->status = drm_core_findmap(dev, init->status_offset); |
| 816 | if (!dev_priv->status) { | 832 | if (!dev_priv->status) { |
| 817 | DRM_ERROR("failed to find status page!\n"); | 833 | DRM_ERROR("failed to find status page!\n"); |
| @@ -928,7 +944,7 @@ static int mga_do_cleanup_dma( drm_device_t *dev ) | |||
| 928 | drm_mga_private_t *dev_priv = dev->dev_private; | 944 | drm_mga_private_t *dev_priv = dev->dev_private; |
| 929 | 945 | ||
| 930 | if ((dev_priv->warp != NULL) | 946 | if ((dev_priv->warp != NULL) |
| 931 | && (dev_priv->mmio->type != _DRM_CONSISTENT)) | 947 | && (dev_priv->warp->type != _DRM_CONSISTENT)) |
| 932 | drm_core_ioremapfree(dev_priv->warp, dev); | 948 | drm_core_ioremapfree(dev_priv->warp, dev); |
| 933 | 949 | ||
| 934 | if ((dev_priv->primary != NULL) | 950 | if ((dev_priv->primary != NULL) |
diff --git a/drivers/char/drm/mga_drv.h b/drivers/char/drm/mga_drv.h index b22fdbd4f830..6059c5a5b105 100644 --- a/drivers/char/drm/mga_drv.h +++ b/drivers/char/drm/mga_drv.h | |||
| @@ -227,7 +227,7 @@ static inline u32 _MGA_READ(u32 *addr) | |||
| 227 | #define MGA_EMIT_STATE( dev_priv, dirty ) \ | 227 | #define MGA_EMIT_STATE( dev_priv, dirty ) \ |
| 228 | do { \ | 228 | do { \ |
| 229 | if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) { \ | 229 | if ( (dirty) & ~MGA_UPLOAD_CLIPRECTS ) { \ |
| 230 | if ( dev_priv->chipset == MGA_CARD_TYPE_G400 ) { \ | 230 | if ( dev_priv->chipset >= MGA_CARD_TYPE_G400 ) { \ |
| 231 | mga_g400_emit_state( dev_priv ); \ | 231 | mga_g400_emit_state( dev_priv ); \ |
| 232 | } else { \ | 232 | } else { \ |
| 233 | mga_g200_emit_state( dev_priv ); \ | 233 | mga_g200_emit_state( dev_priv ); \ |
diff --git a/drivers/char/drm/mga_state.c b/drivers/char/drm/mga_state.c index 05bbb4719376..6ac5e006226f 100644 --- a/drivers/char/drm/mga_state.c +++ b/drivers/char/drm/mga_state.c | |||
| @@ -53,7 +53,7 @@ static void mga_emit_clip_rect( drm_mga_private_t *dev_priv, | |||
| 53 | 53 | ||
| 54 | /* Force reset of DWGCTL on G400 (eliminates clip disable bit). | 54 | /* Force reset of DWGCTL on G400 (eliminates clip disable bit). |
| 55 | */ | 55 | */ |
| 56 | if (dev_priv->chipset == MGA_CARD_TYPE_G400) { | 56 | if (dev_priv->chipset >= MGA_CARD_TYPE_G400) { |
| 57 | DMA_BLOCK(MGA_DWGCTL, ctx->dwgctl, | 57 | DMA_BLOCK(MGA_DWGCTL, ctx->dwgctl, |
| 58 | MGA_LEN + MGA_EXEC, 0x80000000, | 58 | MGA_LEN + MGA_EXEC, 0x80000000, |
| 59 | MGA_DWGCTL, ctx->dwgctl, | 59 | MGA_DWGCTL, ctx->dwgctl, |
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c index 6d9080a3ca7e..12ef13ff04ca 100644 --- a/drivers/char/drm/radeon_cp.c +++ b/drivers/char/drm/radeon_cp.c | |||
| @@ -1133,10 +1133,10 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev, | |||
| 1133 | ring_start = (dev_priv->cp_ring->offset | 1133 | ring_start = (dev_priv->cp_ring->offset |
| 1134 | - dev->agp->base | 1134 | - dev->agp->base |
| 1135 | + dev_priv->gart_vm_start); | 1135 | + dev_priv->gart_vm_start); |
| 1136 | } else | 1136 | } else |
| 1137 | #endif | 1137 | #endif |
| 1138 | ring_start = (dev_priv->cp_ring->offset | 1138 | ring_start = (dev_priv->cp_ring->offset |
| 1139 | - dev->sg->handle | 1139 | - (unsigned long)dev->sg->virtual |
| 1140 | + dev_priv->gart_vm_start); | 1140 | + dev_priv->gart_vm_start); |
| 1141 | 1141 | ||
| 1142 | RADEON_WRITE( RADEON_CP_RB_BASE, ring_start ); | 1142 | RADEON_WRITE( RADEON_CP_RB_BASE, ring_start ); |
| @@ -1164,7 +1164,8 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev, | |||
| 1164 | drm_sg_mem_t *entry = dev->sg; | 1164 | drm_sg_mem_t *entry = dev->sg; |
| 1165 | unsigned long tmp_ofs, page_ofs; | 1165 | unsigned long tmp_ofs, page_ofs; |
| 1166 | 1166 | ||
| 1167 | tmp_ofs = dev_priv->ring_rptr->offset - dev->sg->handle; | 1167 | tmp_ofs = dev_priv->ring_rptr->offset - |
| 1168 | (unsigned long)dev->sg->virtual; | ||
| 1168 | page_ofs = tmp_ofs >> PAGE_SHIFT; | 1169 | page_ofs = tmp_ofs >> PAGE_SHIFT; |
| 1169 | 1170 | ||
| 1170 | RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR, | 1171 | RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR, |
| @@ -1491,8 +1492,8 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init ) | |||
| 1491 | else | 1492 | else |
| 1492 | #endif | 1493 | #endif |
| 1493 | dev_priv->gart_buffers_offset = (dev->agp_buffer_map->offset | 1494 | dev_priv->gart_buffers_offset = (dev->agp_buffer_map->offset |
| 1494 | - dev->sg->handle | 1495 | - (unsigned long)dev->sg->virtual |
| 1495 | + dev_priv->gart_vm_start); | 1496 | + dev_priv->gart_vm_start); |
| 1496 | 1497 | ||
| 1497 | DRM_DEBUG( "dev_priv->gart_size %d\n", | 1498 | DRM_DEBUG( "dev_priv->gart_size %d\n", |
| 1498 | dev_priv->gart_size ); | 1499 | dev_priv->gart_size ); |
diff --git a/drivers/char/mbcs.c b/drivers/char/mbcs.c index 3fa64c631108..c268ee04b2aa 100644 --- a/drivers/char/mbcs.c +++ b/drivers/char/mbcs.c | |||
| @@ -830,6 +830,9 @@ static int __init mbcs_init(void) | |||
| 830 | { | 830 | { |
| 831 | int rv; | 831 | int rv; |
| 832 | 832 | ||
| 833 | if (!ia64_platform_is("sn2")) | ||
| 834 | return -ENODEV; | ||
| 835 | |||
| 833 | // Put driver into chrdevs[]. Get major number. | 836 | // Put driver into chrdevs[]. Get major number. |
| 834 | rv = register_chrdev(mbcs_major, DEVICE_NAME, &mbcs_ops); | 837 | rv = register_chrdev(mbcs_major, DEVICE_NAME, &mbcs_ops); |
| 835 | if (rv < 0) { | 838 | if (rv < 0) { |
diff --git a/drivers/char/mmtimer.c b/drivers/char/mmtimer.c index 12006182f575..78c89a3e7825 100644 --- a/drivers/char/mmtimer.c +++ b/drivers/char/mmtimer.c | |||
| @@ -441,7 +441,7 @@ static irqreturn_t | |||
| 441 | mmtimer_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 441 | mmtimer_interrupt(int irq, void *dev_id, struct pt_regs *regs) |
| 442 | { | 442 | { |
| 443 | int i; | 443 | int i; |
| 444 | mmtimer_t *base = timers + cpuid_to_cnodeid(smp_processor_id()) * | 444 | mmtimer_t *base = timers + cpu_to_node(smp_processor_id()) * |
| 445 | NUM_COMPARATORS; | 445 | NUM_COMPARATORS; |
| 446 | unsigned long expires = 0; | 446 | unsigned long expires = 0; |
| 447 | int result = IRQ_NONE; | 447 | int result = IRQ_NONE; |
| @@ -608,7 +608,7 @@ static int sgi_timer_set(struct k_itimer *timr, int flags, | |||
| 608 | */ | 608 | */ |
| 609 | preempt_disable(); | 609 | preempt_disable(); |
| 610 | 610 | ||
| 611 | nodeid = cpuid_to_cnodeid(smp_processor_id()); | 611 | nodeid = cpu_to_node(smp_processor_id()); |
| 612 | base = timers + nodeid * NUM_COMPARATORS; | 612 | base = timers + nodeid * NUM_COMPARATORS; |
| 613 | retry: | 613 | retry: |
| 614 | /* Don't use an allocated timer, or a deleted one that's pending */ | 614 | /* Don't use an allocated timer, or a deleted one that's pending */ |
diff --git a/drivers/char/n_r3964.c b/drivers/char/n_r3964.c index 97d6dc24b800..853c98cee64f 100644 --- a/drivers/char/n_r3964.c +++ b/drivers/char/n_r3964.c | |||
| @@ -695,7 +695,7 @@ static void receive_char(struct r3964_info *pInfo, const unsigned char c) | |||
| 695 | { | 695 | { |
| 696 | TRACE_PE("IDLE - got STX but no space in rx_queue!"); | 696 | TRACE_PE("IDLE - got STX but no space in rx_queue!"); |
| 697 | pInfo->state=R3964_WAIT_FOR_RX_BUF; | 697 | pInfo->state=R3964_WAIT_FOR_RX_BUF; |
| 698 | mod_timer(&pInfo->tmr, R3964_TO_NO_BUF); | 698 | mod_timer(&pInfo->tmr, jiffies + R3964_TO_NO_BUF); |
| 699 | break; | 699 | break; |
| 700 | } | 700 | } |
| 701 | start_receiving: | 701 | start_receiving: |
| @@ -705,7 +705,7 @@ start_receiving: | |||
| 705 | pInfo->last_rx = 0; | 705 | pInfo->last_rx = 0; |
| 706 | pInfo->flags &= ~R3964_ERROR; | 706 | pInfo->flags &= ~R3964_ERROR; |
| 707 | pInfo->state=R3964_RECEIVING; | 707 | pInfo->state=R3964_RECEIVING; |
| 708 | mod_timer(&pInfo->tmr, R3964_TO_ZVZ); | 708 | mod_timer(&pInfo->tmr, jiffies + R3964_TO_ZVZ); |
| 709 | pInfo->nRetry = 0; | 709 | pInfo->nRetry = 0; |
| 710 | put_char(pInfo, DLE); | 710 | put_char(pInfo, DLE); |
| 711 | flush(pInfo); | 711 | flush(pInfo); |
| @@ -732,7 +732,7 @@ start_receiving: | |||
| 732 | if(pInfo->flags & R3964_BCC) | 732 | if(pInfo->flags & R3964_BCC) |
| 733 | { | 733 | { |
| 734 | pInfo->state = R3964_WAIT_FOR_BCC; | 734 | pInfo->state = R3964_WAIT_FOR_BCC; |
| 735 | mod_timer(&pInfo->tmr, R3964_TO_ZVZ); | 735 | mod_timer(&pInfo->tmr, jiffies + R3964_TO_ZVZ); |
| 736 | } | 736 | } |
| 737 | else | 737 | else |
| 738 | { | 738 | { |
| @@ -744,7 +744,7 @@ start_receiving: | |||
| 744 | pInfo->last_rx = c; | 744 | pInfo->last_rx = c; |
| 745 | char_to_buf: | 745 | char_to_buf: |
| 746 | pInfo->rx_buf[pInfo->rx_position++] = c; | 746 | pInfo->rx_buf[pInfo->rx_position++] = c; |
| 747 | mod_timer(&pInfo->tmr, R3964_TO_ZVZ); | 747 | mod_timer(&pInfo->tmr, jiffies + R3964_TO_ZVZ); |
| 748 | } | 748 | } |
| 749 | } | 749 | } |
| 750 | /* else: overflow-msg? BUF_SIZE>MTU; should not happen? */ | 750 | /* else: overflow-msg? BUF_SIZE>MTU; should not happen? */ |
diff --git a/drivers/char/s3c2410-rtc.c b/drivers/char/s3c2410-rtc.c index ed867db550a9..e1a90d9a8756 100644 --- a/drivers/char/s3c2410-rtc.c +++ b/drivers/char/s3c2410-rtc.c | |||
| @@ -564,6 +564,7 @@ static int s3c2410_rtc_resume(struct device *dev, u32 level) | |||
| 564 | 564 | ||
| 565 | static struct device_driver s3c2410_rtcdrv = { | 565 | static struct device_driver s3c2410_rtcdrv = { |
| 566 | .name = "s3c2410-rtc", | 566 | .name = "s3c2410-rtc", |
| 567 | .owner = THIS_MODULE, | ||
| 567 | .bus = &platform_bus_type, | 568 | .bus = &platform_bus_type, |
| 568 | .probe = s3c2410_rtc_probe, | 569 | .probe = s3c2410_rtc_probe, |
| 569 | .remove = s3c2410_rtc_remove, | 570 | .remove = s3c2410_rtc_remove, |
diff --git a/drivers/char/snsc.c b/drivers/char/snsc.c index 261a41bf6d02..a025a89ea70a 100644 --- a/drivers/char/snsc.c +++ b/drivers/char/snsc.c | |||
| @@ -377,7 +377,7 @@ scdrv_init(void) | |||
| 377 | dev_t first_dev, dev; | 377 | dev_t first_dev, dev; |
| 378 | nasid_t event_nasid = ia64_sn_get_console_nasid(); | 378 | nasid_t event_nasid = ia64_sn_get_console_nasid(); |
| 379 | 379 | ||
| 380 | if (alloc_chrdev_region(&first_dev, 0, numionodes, | 380 | if (alloc_chrdev_region(&first_dev, 0, num_cnodes, |
| 381 | SYSCTL_BASENAME) < 0) { | 381 | SYSCTL_BASENAME) < 0) { |
| 382 | printk("%s: failed to register SN system controller device\n", | 382 | printk("%s: failed to register SN system controller device\n", |
| 383 | __FUNCTION__); | 383 | __FUNCTION__); |
| @@ -385,7 +385,7 @@ scdrv_init(void) | |||
| 385 | } | 385 | } |
| 386 | snsc_class = class_create(THIS_MODULE, SYSCTL_BASENAME); | 386 | snsc_class = class_create(THIS_MODULE, SYSCTL_BASENAME); |
| 387 | 387 | ||
| 388 | for (cnode = 0; cnode < numionodes; cnode++) { | 388 | for (cnode = 0; cnode < num_cnodes; cnode++) { |
| 389 | geoid = cnodeid_get_geoid(cnode); | 389 | geoid = cnodeid_get_geoid(cnode); |
| 390 | devnamep = devname; | 390 | devnamep = devname; |
| 391 | format_module_id(devnamep, geo_module(geoid), | 391 | format_module_id(devnamep, geo_module(geoid), |
diff --git a/drivers/char/watchdog/pcwd_pci.c b/drivers/char/watchdog/pcwd_pci.c index 5a80adbf8032..0b8e493be045 100644 --- a/drivers/char/watchdog/pcwd_pci.c +++ b/drivers/char/watchdog/pcwd_pci.c | |||
| @@ -50,8 +50,8 @@ | |||
| 50 | #include <asm/io.h> /* For inb/outb/... */ | 50 | #include <asm/io.h> /* For inb/outb/... */ |
| 51 | 51 | ||
| 52 | /* Module and version information */ | 52 | /* Module and version information */ |
| 53 | #define WATCHDOG_VERSION "1.01" | 53 | #define WATCHDOG_VERSION "1.02" |
| 54 | #define WATCHDOG_DATE "02 Sep 2005" | 54 | #define WATCHDOG_DATE "03 Sep 2005" |
| 55 | #define WATCHDOG_DRIVER_NAME "PCI-PC Watchdog" | 55 | #define WATCHDOG_DRIVER_NAME "PCI-PC Watchdog" |
| 56 | #define WATCHDOG_NAME "pcwd_pci" | 56 | #define WATCHDOG_NAME "pcwd_pci" |
| 57 | #define PFX WATCHDOG_NAME ": " | 57 | #define PFX WATCHDOG_NAME ": " |
| @@ -70,19 +70,30 @@ | |||
| 70 | * These are the defines that describe the control status bits for the | 70 | * These are the defines that describe the control status bits for the |
| 71 | * PCI-PC Watchdog card. | 71 | * PCI-PC Watchdog card. |
| 72 | */ | 72 | */ |
| 73 | #define WD_PCI_WTRP 0x01 /* Watchdog Trip status */ | 73 | /* Port 1 : Control Status #1 */ |
| 74 | #define WD_PCI_HRBT 0x02 /* Watchdog Heartbeat */ | 74 | #define WD_PCI_WTRP 0x01 /* Watchdog Trip status */ |
| 75 | #define WD_PCI_TTRP 0x04 /* Temperature Trip status */ | 75 | #define WD_PCI_HRBT 0x02 /* Watchdog Heartbeat */ |
| 76 | #define WD_PCI_TTRP 0x04 /* Temperature Trip status */ | ||
| 77 | #define WD_PCI_RL2A 0x08 /* Relay 2 Active */ | ||
| 78 | #define WD_PCI_RL1A 0x10 /* Relay 1 Active */ | ||
| 79 | #define WD_PCI_R2DS 0x40 /* Relay 2 Disable Temperature-trip/reset */ | ||
| 80 | #define WD_PCI_RLY2 0x80 /* Activate Relay 2 on the board */ | ||
| 81 | /* Port 2 : Control Status #2 */ | ||
| 82 | #define WD_PCI_WDIS 0x10 /* Watchdog Disable */ | ||
| 83 | #define WD_PCI_ENTP 0x20 /* Enable Temperature Trip Reset */ | ||
| 84 | #define WD_PCI_WRSP 0x40 /* Watchdog wrote response */ | ||
| 85 | #define WD_PCI_PCMD 0x80 /* PC has sent command */ | ||
| 76 | 86 | ||
| 77 | /* according to documentation max. time to process a command for the pci | 87 | /* according to documentation max. time to process a command for the pci |
| 78 | * watchdog card is 100 ms, so we give it 150 ms to do it's job */ | 88 | * watchdog card is 100 ms, so we give it 150 ms to do it's job */ |
| 79 | #define PCI_COMMAND_TIMEOUT 150 | 89 | #define PCI_COMMAND_TIMEOUT 150 |
| 80 | 90 | ||
| 81 | /* Watchdog's internal commands */ | 91 | /* Watchdog's internal commands */ |
| 82 | #define CMD_GET_STATUS 0x04 | 92 | #define CMD_GET_STATUS 0x04 |
| 83 | #define CMD_GET_FIRMWARE_VERSION 0x08 | 93 | #define CMD_GET_FIRMWARE_VERSION 0x08 |
| 84 | #define CMD_READ_WATCHDOG_TIMEOUT 0x18 | 94 | #define CMD_READ_WATCHDOG_TIMEOUT 0x18 |
| 85 | #define CMD_WRITE_WATCHDOG_TIMEOUT 0x19 | 95 | #define CMD_WRITE_WATCHDOG_TIMEOUT 0x19 |
| 96 | #define CMD_GET_CLEAR_RESET_COUNT 0x84 | ||
| 86 | 97 | ||
| 87 | /* We can only use 1 card due to the /dev/watchdog restriction */ | 98 | /* We can only use 1 card due to the /dev/watchdog restriction */ |
| 88 | static int cards_found; | 99 | static int cards_found; |
| @@ -91,15 +102,22 @@ static int cards_found; | |||
| 91 | static int temp_panic; | 102 | static int temp_panic; |
| 92 | static unsigned long is_active; | 103 | static unsigned long is_active; |
| 93 | static char expect_release; | 104 | static char expect_release; |
| 94 | static struct { | 105 | static struct { /* this is private data for each PCI-PC watchdog card */ |
| 95 | int supports_temp; /* Wether or not the card has a temperature device */ | 106 | int supports_temp; /* Wether or not the card has a temperature device */ |
| 96 | int boot_status; /* The card's boot status */ | 107 | int boot_status; /* The card's boot status */ |
| 97 | unsigned long io_addr; /* The cards I/O address */ | 108 | unsigned long io_addr; /* The cards I/O address */ |
| 98 | spinlock_t io_lock; | 109 | spinlock_t io_lock; /* the lock for io operations */ |
| 99 | struct pci_dev *pdev; | 110 | struct pci_dev *pdev; /* the PCI-device */ |
| 100 | } pcipcwd_private; | 111 | } pcipcwd_private; |
| 101 | 112 | ||
| 102 | /* module parameters */ | 113 | /* module parameters */ |
| 114 | #define QUIET 0 /* Default */ | ||
| 115 | #define VERBOSE 1 /* Verbose */ | ||
| 116 | #define DEBUG 2 /* print fancy stuff too */ | ||
| 117 | static int debug = QUIET; | ||
| 118 | module_param(debug, int, 0); | ||
| 119 | MODULE_PARM_DESC(debug, "Debug level: 0=Quiet, 1=Verbose, 2=Debug (default=0)"); | ||
| 120 | |||
| 103 | #define WATCHDOG_HEARTBEAT 2 /* 2 sec default heartbeat */ | 121 | #define WATCHDOG_HEARTBEAT 2 /* 2 sec default heartbeat */ |
| 104 | static int heartbeat = WATCHDOG_HEARTBEAT; | 122 | static int heartbeat = WATCHDOG_HEARTBEAT; |
| 105 | module_param(heartbeat, int, 0); | 123 | module_param(heartbeat, int, 0); |
| @@ -117,6 +135,10 @@ static int send_command(int cmd, int *msb, int *lsb) | |||
| 117 | { | 135 | { |
| 118 | int got_response, count; | 136 | int got_response, count; |
| 119 | 137 | ||
| 138 | if (debug >= DEBUG) | ||
| 139 | printk(KERN_DEBUG PFX "sending following data cmd=0x%02x msb=0x%02x lsb=0x%02x\n", | ||
| 140 | cmd, *msb, *lsb); | ||
| 141 | |||
| 120 | spin_lock(&pcipcwd_private.io_lock); | 142 | spin_lock(&pcipcwd_private.io_lock); |
| 121 | /* If a command requires data it should be written first. | 143 | /* If a command requires data it should be written first. |
| 122 | * Data for commands with 8 bits of data should be written to port 4. | 144 | * Data for commands with 8 bits of data should be written to port 4. |
| @@ -131,10 +153,19 @@ static int send_command(int cmd, int *msb, int *lsb) | |||
| 131 | /* wait till the pci card processed the command, signaled by | 153 | /* wait till the pci card processed the command, signaled by |
| 132 | * the WRSP bit in port 2 and give it a max. timeout of | 154 | * the WRSP bit in port 2 and give it a max. timeout of |
| 133 | * PCI_COMMAND_TIMEOUT to process */ | 155 | * PCI_COMMAND_TIMEOUT to process */ |
| 134 | got_response = inb_p(pcipcwd_private.io_addr + 2) & 0x40; | 156 | got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; |
| 135 | for (count = 0; (count < PCI_COMMAND_TIMEOUT) && (!got_response); count++) { | 157 | for (count = 0; (count < PCI_COMMAND_TIMEOUT) && (!got_response); count++) { |
| 136 | mdelay(1); | 158 | mdelay(1); |
| 137 | got_response = inb_p(pcipcwd_private.io_addr + 2) & 0x40; | 159 | got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; |
| 160 | } | ||
| 161 | |||
| 162 | if (debug >= DEBUG) { | ||
| 163 | if (got_response) { | ||
| 164 | printk(KERN_DEBUG PFX "time to process command was: %d ms\n", | ||
| 165 | count); | ||
| 166 | } else { | ||
| 167 | printk(KERN_DEBUG PFX "card did not respond on command!\n"); | ||
| 168 | } | ||
| 138 | } | 169 | } |
| 139 | 170 | ||
| 140 | if (got_response) { | 171 | if (got_response) { |
| @@ -144,12 +175,66 @@ static int send_command(int cmd, int *msb, int *lsb) | |||
| 144 | 175 | ||
| 145 | /* clear WRSP bit */ | 176 | /* clear WRSP bit */ |
| 146 | inb_p(pcipcwd_private.io_addr + 6); | 177 | inb_p(pcipcwd_private.io_addr + 6); |
| 178 | |||
| 179 | if (debug >= DEBUG) | ||
| 180 | printk(KERN_DEBUG PFX "received following data for cmd=0x%02x: msb=0x%02x lsb=0x%02x\n", | ||
| 181 | cmd, *msb, *lsb); | ||
| 147 | } | 182 | } |
| 183 | |||
| 148 | spin_unlock(&pcipcwd_private.io_lock); | 184 | spin_unlock(&pcipcwd_private.io_lock); |
| 149 | 185 | ||
| 150 | return got_response; | 186 | return got_response; |
| 151 | } | 187 | } |
| 152 | 188 | ||
| 189 | static inline void pcipcwd_check_temperature_support(void) | ||
| 190 | { | ||
| 191 | if (inb_p(pcipcwd_private.io_addr) != 0xF0) | ||
| 192 | pcipcwd_private.supports_temp = 1; | ||
| 193 | } | ||
| 194 | |||
| 195 | static int pcipcwd_get_option_switches(void) | ||
| 196 | { | ||
| 197 | int option_switches; | ||
| 198 | |||
| 199 | option_switches = inb_p(pcipcwd_private.io_addr + 3); | ||
| 200 | return option_switches; | ||
| 201 | } | ||
| 202 | |||
| 203 | static void pcipcwd_show_card_info(void) | ||
| 204 | { | ||
| 205 | int got_fw_rev, fw_rev_major, fw_rev_minor; | ||
| 206 | char fw_ver_str[20]; /* The cards firmware version */ | ||
| 207 | int option_switches; | ||
| 208 | |||
| 209 | got_fw_rev = send_command(CMD_GET_FIRMWARE_VERSION, &fw_rev_major, &fw_rev_minor); | ||
| 210 | if (got_fw_rev) { | ||
| 211 | sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); | ||
| 212 | } else { | ||
| 213 | sprintf(fw_ver_str, "<card no answer>"); | ||
| 214 | } | ||
| 215 | |||
| 216 | /* Get switch settings */ | ||
| 217 | option_switches = pcipcwd_get_option_switches(); | ||
| 218 | |||
| 219 | printk(KERN_INFO PFX "Found card at port 0x%04x (Firmware: %s) %s temp option\n", | ||
| 220 | (int) pcipcwd_private.io_addr, fw_ver_str, | ||
| 221 | (pcipcwd_private.supports_temp ? "with" : "without")); | ||
| 222 | |||
| 223 | printk(KERN_INFO PFX "Option switches (0x%02x): Temperature Reset Enable=%s, Power On Delay=%s\n", | ||
| 224 | option_switches, | ||
| 225 | ((option_switches & 0x10) ? "ON" : "OFF"), | ||
| 226 | ((option_switches & 0x08) ? "ON" : "OFF")); | ||
| 227 | |||
| 228 | if (pcipcwd_private.boot_status & WDIOF_CARDRESET) | ||
| 229 | printk(KERN_INFO PFX "Previous reset was caused by the Watchdog card\n"); | ||
| 230 | |||
| 231 | if (pcipcwd_private.boot_status & WDIOF_OVERHEAT) | ||
| 232 | printk(KERN_INFO PFX "Card sensed a CPU Overheat\n"); | ||
| 233 | |||
| 234 | if (pcipcwd_private.boot_status == 0) | ||
| 235 | printk(KERN_INFO PFX "No previous trip detected - Cold boot or reset\n"); | ||
| 236 | } | ||
| 237 | |||
| 153 | static int pcipcwd_start(void) | 238 | static int pcipcwd_start(void) |
| 154 | { | 239 | { |
| 155 | int stat_reg; | 240 | int stat_reg; |
| @@ -161,11 +246,14 @@ static int pcipcwd_start(void) | |||
| 161 | stat_reg = inb_p(pcipcwd_private.io_addr + 2); | 246 | stat_reg = inb_p(pcipcwd_private.io_addr + 2); |
| 162 | spin_unlock(&pcipcwd_private.io_lock); | 247 | spin_unlock(&pcipcwd_private.io_lock); |
| 163 | 248 | ||
| 164 | if (stat_reg & 0x10) { | 249 | if (stat_reg & WD_PCI_WDIS) { |
| 165 | printk(KERN_ERR PFX "Card timer not enabled\n"); | 250 | printk(KERN_ERR PFX "Card timer not enabled\n"); |
| 166 | return -1; | 251 | return -1; |
| 167 | } | 252 | } |
| 168 | 253 | ||
| 254 | if (debug >= VERBOSE) | ||
| 255 | printk(KERN_DEBUG PFX "Watchdog started\n"); | ||
| 256 | |||
| 169 | return 0; | 257 | return 0; |
| 170 | } | 258 | } |
| 171 | 259 | ||
| @@ -183,18 +271,25 @@ static int pcipcwd_stop(void) | |||
| 183 | stat_reg = inb_p(pcipcwd_private.io_addr + 2); | 271 | stat_reg = inb_p(pcipcwd_private.io_addr + 2); |
| 184 | spin_unlock(&pcipcwd_private.io_lock); | 272 | spin_unlock(&pcipcwd_private.io_lock); |
| 185 | 273 | ||
| 186 | if (!(stat_reg & 0x10)) { | 274 | if (!(stat_reg & WD_PCI_WDIS)) { |
| 187 | printk(KERN_ERR PFX "Card did not acknowledge disable attempt\n"); | 275 | printk(KERN_ERR PFX "Card did not acknowledge disable attempt\n"); |
| 188 | return -1; | 276 | return -1; |
| 189 | } | 277 | } |
| 190 | 278 | ||
| 279 | if (debug >= VERBOSE) | ||
| 280 | printk(KERN_DEBUG PFX "Watchdog stopped\n"); | ||
| 281 | |||
| 191 | return 0; | 282 | return 0; |
| 192 | } | 283 | } |
| 193 | 284 | ||
| 194 | static int pcipcwd_keepalive(void) | 285 | static int pcipcwd_keepalive(void) |
| 195 | { | 286 | { |
| 196 | /* Re-trigger watchdog by writing to port 0 */ | 287 | /* Re-trigger watchdog by writing to port 0 */ |
| 197 | outb_p(0x42, pcipcwd_private.io_addr); | 288 | outb_p(0x42, pcipcwd_private.io_addr); /* send out any data */ |
| 289 | |||
| 290 | if (debug >= DEBUG) | ||
| 291 | printk(KERN_DEBUG PFX "Watchdog keepalive signal send\n"); | ||
| 292 | |||
| 198 | return 0; | 293 | return 0; |
| 199 | } | 294 | } |
| 200 | 295 | ||
| @@ -210,29 +305,64 @@ static int pcipcwd_set_heartbeat(int t) | |||
| 210 | send_command(CMD_WRITE_WATCHDOG_TIMEOUT, &t_msb, &t_lsb); | 305 | send_command(CMD_WRITE_WATCHDOG_TIMEOUT, &t_msb, &t_lsb); |
| 211 | 306 | ||
| 212 | heartbeat = t; | 307 | heartbeat = t; |
| 308 | if (debug >= VERBOSE) | ||
| 309 | printk(KERN_DEBUG PFX "New heartbeat: %d\n", | ||
| 310 | heartbeat); | ||
| 311 | |||
| 213 | return 0; | 312 | return 0; |
| 214 | } | 313 | } |
| 215 | 314 | ||
| 216 | static int pcipcwd_get_status(int *status) | 315 | static int pcipcwd_get_status(int *status) |
| 217 | { | 316 | { |
| 218 | int new_status; | 317 | int control_status; |
| 219 | 318 | ||
| 220 | *status=0; | 319 | *status=0; |
| 221 | new_status = inb_p(pcipcwd_private.io_addr + 1); | 320 | control_status = inb_p(pcipcwd_private.io_addr + 1); |
| 222 | if (new_status & WD_PCI_WTRP) | 321 | if (control_status & WD_PCI_WTRP) |
| 223 | *status |= WDIOF_CARDRESET; | 322 | *status |= WDIOF_CARDRESET; |
| 224 | if (new_status & WD_PCI_TTRP) { | 323 | if (control_status & WD_PCI_TTRP) { |
| 225 | *status |= WDIOF_OVERHEAT; | 324 | *status |= WDIOF_OVERHEAT; |
| 226 | if (temp_panic) | 325 | if (temp_panic) |
| 227 | panic(PFX "Temperature overheat trip!\n"); | 326 | panic(PFX "Temperature overheat trip!\n"); |
| 228 | } | 327 | } |
| 229 | 328 | ||
| 329 | if (debug >= DEBUG) | ||
| 330 | printk(KERN_DEBUG PFX "Control Status #1: 0x%02x\n", | ||
| 331 | control_status); | ||
| 332 | |||
| 230 | return 0; | 333 | return 0; |
| 231 | } | 334 | } |
| 232 | 335 | ||
| 233 | static int pcipcwd_clear_status(void) | 336 | static int pcipcwd_clear_status(void) |
| 234 | { | 337 | { |
| 235 | outb_p(0x01, pcipcwd_private.io_addr + 1); | 338 | int control_status; |
| 339 | int msb; | ||
| 340 | int reset_counter; | ||
| 341 | |||
| 342 | if (debug >= VERBOSE) | ||
| 343 | printk(KERN_INFO PFX "clearing watchdog trip status & LED\n"); | ||
| 344 | |||
| 345 | control_status = inb_p(pcipcwd_private.io_addr + 1); | ||
| 346 | |||
| 347 | if (debug >= DEBUG) { | ||
| 348 | printk(KERN_DEBUG PFX "status was: 0x%02x\n", control_status); | ||
| 349 | printk(KERN_DEBUG PFX "sending: 0x%02x\n", | ||
| 350 | (control_status & WD_PCI_R2DS) | WD_PCI_WTRP); | ||
| 351 | } | ||
| 352 | |||
| 353 | /* clear trip status & LED and keep mode of relay 2 */ | ||
| 354 | outb_p((control_status & WD_PCI_R2DS) | WD_PCI_WTRP, pcipcwd_private.io_addr + 1); | ||
| 355 | |||
| 356 | /* clear reset counter */ | ||
| 357 | msb=0; | ||
| 358 | reset_counter=0xff; | ||
| 359 | send_command(CMD_GET_CLEAR_RESET_COUNT, &msb, &reset_counter); | ||
| 360 | |||
| 361 | if (debug >= DEBUG) { | ||
| 362 | printk(KERN_DEBUG PFX "reset count was: 0x%02x\n", | ||
| 363 | reset_counter); | ||
| 364 | } | ||
| 365 | |||
| 236 | return 0; | 366 | return 0; |
| 237 | } | 367 | } |
| 238 | 368 | ||
| @@ -242,11 +372,18 @@ static int pcipcwd_get_temperature(int *temperature) | |||
| 242 | if (!pcipcwd_private.supports_temp) | 372 | if (!pcipcwd_private.supports_temp) |
| 243 | return -ENODEV; | 373 | return -ENODEV; |
| 244 | 374 | ||
| 375 | *temperature = inb_p(pcipcwd_private.io_addr); | ||
| 376 | |||
| 245 | /* | 377 | /* |
| 246 | * Convert celsius to fahrenheit, since this was | 378 | * Convert celsius to fahrenheit, since this was |
| 247 | * the decided 'standard' for this return value. | 379 | * the decided 'standard' for this return value. |
| 248 | */ | 380 | */ |
| 249 | *temperature = ((inb_p(pcipcwd_private.io_addr)) * 9 / 5) + 32; | 381 | *temperature = (*temperature * 9 / 5) + 32; |
| 382 | |||
| 383 | if (debug >= DEBUG) { | ||
| 384 | printk(KERN_DEBUG PFX "temperature is: %d F\n", | ||
| 385 | *temperature); | ||
| 386 | } | ||
| 250 | 387 | ||
| 251 | return 0; | 388 | return 0; |
| 252 | } | 389 | } |
| @@ -256,7 +393,7 @@ static int pcipcwd_get_temperature(int *temperature) | |||
| 256 | */ | 393 | */ |
| 257 | 394 | ||
| 258 | static ssize_t pcipcwd_write(struct file *file, const char __user *data, | 395 | static ssize_t pcipcwd_write(struct file *file, const char __user *data, |
| 259 | size_t len, loff_t *ppos) | 396 | size_t len, loff_t *ppos) |
| 260 | { | 397 | { |
| 261 | /* See if we got the magic character 'V' and reload the timer */ | 398 | /* See if we got the magic character 'V' and reload the timer */ |
| 262 | if (len) { | 399 | if (len) { |
| @@ -381,8 +518,11 @@ static int pcipcwd_ioctl(struct inode *inode, struct file *file, | |||
| 381 | static int pcipcwd_open(struct inode *inode, struct file *file) | 518 | static int pcipcwd_open(struct inode *inode, struct file *file) |
| 382 | { | 519 | { |
| 383 | /* /dev/watchdog can only be opened once */ | 520 | /* /dev/watchdog can only be opened once */ |
| 384 | if (test_and_set_bit(0, &is_active)) | 521 | if (test_and_set_bit(0, &is_active)) { |
| 522 | if (debug >= VERBOSE) | ||
| 523 | printk(KERN_ERR PFX "Attempt to open already opened device.\n"); | ||
| 385 | return -EBUSY; | 524 | return -EBUSY; |
| 525 | } | ||
| 386 | 526 | ||
| 387 | /* Activate */ | 527 | /* Activate */ |
| 388 | pcipcwd_start(); | 528 | pcipcwd_start(); |
| @@ -492,19 +632,10 @@ static struct notifier_block pcipcwd_notifier = { | |||
| 492 | * Init & exit routines | 632 | * Init & exit routines |
| 493 | */ | 633 | */ |
| 494 | 634 | ||
| 495 | static inline void check_temperature_support(void) | ||
| 496 | { | ||
| 497 | if (inb_p(pcipcwd_private.io_addr) != 0xF0) | ||
| 498 | pcipcwd_private.supports_temp = 1; | ||
| 499 | } | ||
| 500 | |||
| 501 | static int __devinit pcipcwd_card_init(struct pci_dev *pdev, | 635 | static int __devinit pcipcwd_card_init(struct pci_dev *pdev, |
| 502 | const struct pci_device_id *ent) | 636 | const struct pci_device_id *ent) |
| 503 | { | 637 | { |
| 504 | int ret = -EIO; | 638 | int ret = -EIO; |
| 505 | int got_fw_rev, fw_rev_major, fw_rev_minor; | ||
| 506 | char fw_ver_str[20]; | ||
| 507 | char option_switches; | ||
| 508 | 639 | ||
| 509 | cards_found++; | 640 | cards_found++; |
| 510 | if (cards_found == 1) | 641 | if (cards_found == 1) |
| @@ -546,36 +677,10 @@ static int __devinit pcipcwd_card_init(struct pci_dev *pdev, | |||
| 546 | pcipcwd_stop(); | 677 | pcipcwd_stop(); |
| 547 | 678 | ||
| 548 | /* Check whether or not the card supports the temperature device */ | 679 | /* Check whether or not the card supports the temperature device */ |
| 549 | check_temperature_support(); | 680 | pcipcwd_check_temperature_support(); |
| 550 | |||
| 551 | /* Get the Firmware Version */ | ||
| 552 | got_fw_rev = send_command(CMD_GET_FIRMWARE_VERSION, &fw_rev_major, &fw_rev_minor); | ||
| 553 | if (got_fw_rev) { | ||
| 554 | sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); | ||
| 555 | } else { | ||
| 556 | sprintf(fw_ver_str, "<card no answer>"); | ||
| 557 | } | ||
| 558 | 681 | ||
| 559 | /* Get switch settings */ | 682 | /* Show info about the card itself */ |
| 560 | option_switches = inb_p(pcipcwd_private.io_addr + 3); | 683 | pcipcwd_show_card_info(); |
| 561 | |||
| 562 | printk(KERN_INFO PFX "Found card at port 0x%04x (Firmware: %s) %s temp option\n", | ||
| 563 | (int) pcipcwd_private.io_addr, fw_ver_str, | ||
| 564 | (pcipcwd_private.supports_temp ? "with" : "without")); | ||
| 565 | |||
| 566 | printk(KERN_INFO PFX "Option switches (0x%02x): Temperature Reset Enable=%s, Power On Delay=%s\n", | ||
| 567 | option_switches, | ||
| 568 | ((option_switches & 0x10) ? "ON" : "OFF"), | ||
| 569 | ((option_switches & 0x08) ? "ON" : "OFF")); | ||
| 570 | |||
| 571 | if (pcipcwd_private.boot_status & WDIOF_CARDRESET) | ||
| 572 | printk(KERN_INFO PFX "Previous reset was caused by the Watchdog card\n"); | ||
| 573 | |||
| 574 | if (pcipcwd_private.boot_status & WDIOF_OVERHEAT) | ||
| 575 | printk(KERN_INFO PFX "Card sensed a CPU Overheat\n"); | ||
| 576 | |||
| 577 | if (pcipcwd_private.boot_status == 0) | ||
| 578 | printk(KERN_INFO PFX "No previous trip detected - Cold boot or reset\n"); | ||
| 579 | 684 | ||
| 580 | /* Check that the heartbeat value is within it's range ; if not reset to the default */ | 685 | /* Check that the heartbeat value is within it's range ; if not reset to the default */ |
| 581 | if (pcipcwd_set_heartbeat(heartbeat)) { | 686 | if (pcipcwd_set_heartbeat(heartbeat)) { |
| @@ -656,7 +761,7 @@ static struct pci_driver pcipcwd_driver = { | |||
| 656 | 761 | ||
| 657 | static int __init pcipcwd_init_module(void) | 762 | static int __init pcipcwd_init_module(void) |
| 658 | { | 763 | { |
| 659 | spin_lock_init (&pcipcwd_private.io_lock); | 764 | spin_lock_init(&pcipcwd_private.io_lock); |
| 660 | 765 | ||
| 661 | return pci_register_driver(&pcipcwd_driver); | 766 | return pci_register_driver(&pcipcwd_driver); |
| 662 | } | 767 | } |
diff --git a/drivers/connector/connector.c b/drivers/connector/connector.c index bb0b3a8de14b..505677fb3157 100644 --- a/drivers/connector/connector.c +++ b/drivers/connector/connector.c | |||
| @@ -69,7 +69,7 @@ int cn_already_initialized = 0; | |||
| 69 | * a new message. | 69 | * a new message. |
| 70 | * | 70 | * |
| 71 | */ | 71 | */ |
| 72 | int cn_netlink_send(struct cn_msg *msg, u32 __group, int gfp_mask) | 72 | int cn_netlink_send(struct cn_msg *msg, u32 __group, gfp_t gfp_mask) |
| 73 | { | 73 | { |
| 74 | struct cn_callback_entry *__cbq; | 74 | struct cn_callback_entry *__cbq; |
| 75 | unsigned int size; | 75 | unsigned int size; |
diff --git a/drivers/firmware/dell_rbu.c b/drivers/firmware/dell_rbu.c index b66782398258..4f4ba9b6d182 100644 --- a/drivers/firmware/dell_rbu.c +++ b/drivers/firmware/dell_rbu.c | |||
| @@ -50,7 +50,7 @@ | |||
| 50 | MODULE_AUTHOR("Abhay Salunke <abhay_salunke@dell.com>"); | 50 | MODULE_AUTHOR("Abhay Salunke <abhay_salunke@dell.com>"); |
| 51 | MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems"); | 51 | MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems"); |
| 52 | MODULE_LICENSE("GPL"); | 52 | MODULE_LICENSE("GPL"); |
| 53 | MODULE_VERSION("2.0"); | 53 | MODULE_VERSION("3.0"); |
| 54 | 54 | ||
| 55 | #define BIOS_SCAN_LIMIT 0xffffffff | 55 | #define BIOS_SCAN_LIMIT 0xffffffff |
| 56 | #define MAX_IMAGE_LENGTH 16 | 56 | #define MAX_IMAGE_LENGTH 16 |
| @@ -62,15 +62,16 @@ static struct _rbu_data { | |||
| 62 | int dma_alloc; | 62 | int dma_alloc; |
| 63 | spinlock_t lock; | 63 | spinlock_t lock; |
| 64 | unsigned long packet_read_count; | 64 | unsigned long packet_read_count; |
| 65 | unsigned long packet_write_count; | ||
| 66 | unsigned long num_packets; | 65 | unsigned long num_packets; |
| 67 | unsigned long packetsize; | 66 | unsigned long packetsize; |
| 67 | unsigned long imagesize; | ||
| 68 | int entry_created; | 68 | int entry_created; |
| 69 | } rbu_data; | 69 | } rbu_data; |
| 70 | 70 | ||
| 71 | static char image_type[MAX_IMAGE_LENGTH + 1] = "mono"; | 71 | static char image_type[MAX_IMAGE_LENGTH + 1] = "mono"; |
| 72 | module_param_string(image_type, image_type, sizeof (image_type), 0); | 72 | module_param_string(image_type, image_type, sizeof (image_type), 0); |
| 73 | MODULE_PARM_DESC(image_type, "BIOS image type. choose- mono or packet"); | 73 | MODULE_PARM_DESC(image_type, |
| 74 | "BIOS image type. choose- mono or packet or init"); | ||
| 74 | 75 | ||
| 75 | struct packet_data { | 76 | struct packet_data { |
| 76 | struct list_head list; | 77 | struct list_head list; |
| @@ -88,55 +89,13 @@ static dma_addr_t dell_rbu_dmaaddr; | |||
| 88 | static void init_packet_head(void) | 89 | static void init_packet_head(void) |
| 89 | { | 90 | { |
| 90 | INIT_LIST_HEAD(&packet_data_head.list); | 91 | INIT_LIST_HEAD(&packet_data_head.list); |
| 91 | rbu_data.packet_write_count = 0; | ||
| 92 | rbu_data.packet_read_count = 0; | 92 | rbu_data.packet_read_count = 0; |
| 93 | rbu_data.num_packets = 0; | 93 | rbu_data.num_packets = 0; |
| 94 | rbu_data.packetsize = 0; | 94 | rbu_data.packetsize = 0; |
| 95 | rbu_data.imagesize = 0; | ||
| 95 | } | 96 | } |
| 96 | 97 | ||
| 97 | static int fill_last_packet(void *data, size_t length) | 98 | static int create_packet(void *data, size_t length) |
| 98 | { | ||
| 99 | struct list_head *ptemp_list; | ||
| 100 | struct packet_data *packet = NULL; | ||
| 101 | int packet_count = 0; | ||
| 102 | |||
| 103 | pr_debug("fill_last_packet: entry \n"); | ||
| 104 | |||
| 105 | if (!rbu_data.num_packets) { | ||
| 106 | pr_debug("fill_last_packet: num_packets=0\n"); | ||
| 107 | return -ENOMEM; | ||
| 108 | } | ||
| 109 | |||
| 110 | packet_count = rbu_data.num_packets; | ||
| 111 | |||
| 112 | ptemp_list = (&packet_data_head.list)->prev; | ||
| 113 | |||
| 114 | packet = list_entry(ptemp_list, struct packet_data, list); | ||
| 115 | |||
| 116 | if ((rbu_data.packet_write_count + length) > rbu_data.packetsize) { | ||
| 117 | pr_debug("dell_rbu:%s: packet size data " | ||
| 118 | "overrun\n", __FUNCTION__); | ||
| 119 | return -EINVAL; | ||
| 120 | } | ||
| 121 | |||
| 122 | pr_debug("fill_last_packet : buffer = %p\n", packet->data); | ||
| 123 | |||
| 124 | memcpy((packet->data + rbu_data.packet_write_count), data, length); | ||
| 125 | |||
| 126 | if ((rbu_data.packet_write_count + length) == rbu_data.packetsize) { | ||
| 127 | /* | ||
| 128 | * this was the last data chunk in the packet | ||
| 129 | * so reinitialize the packet data counter to zero | ||
| 130 | */ | ||
| 131 | rbu_data.packet_write_count = 0; | ||
| 132 | } else | ||
| 133 | rbu_data.packet_write_count += length; | ||
| 134 | |||
| 135 | pr_debug("fill_last_packet: exit \n"); | ||
| 136 | return 0; | ||
| 137 | } | ||
| 138 | |||
| 139 | static int create_packet(size_t length) | ||
| 140 | { | 99 | { |
| 141 | struct packet_data *newpacket; | 100 | struct packet_data *newpacket; |
| 142 | int ordernum = 0; | 101 | int ordernum = 0; |
| @@ -186,9 +145,11 @@ static int create_packet(size_t length) | |||
| 186 | INIT_LIST_HEAD(&newpacket->list); | 145 | INIT_LIST_HEAD(&newpacket->list); |
| 187 | list_add_tail(&newpacket->list, &packet_data_head.list); | 146 | list_add_tail(&newpacket->list, &packet_data_head.list); |
| 188 | /* | 147 | /* |
| 189 | * packets have fixed size | 148 | * packets may not have fixed size |
| 190 | */ | 149 | */ |
| 191 | newpacket->length = rbu_data.packetsize; | 150 | newpacket->length = length; |
| 151 | |||
| 152 | memcpy(newpacket->data, data, length); | ||
| 192 | 153 | ||
| 193 | pr_debug("create_packet: exit \n"); | 154 | pr_debug("create_packet: exit \n"); |
| 194 | 155 | ||
| @@ -198,13 +159,37 @@ static int create_packet(size_t length) | |||
| 198 | static int packetize_data(void *data, size_t length) | 159 | static int packetize_data(void *data, size_t length) |
| 199 | { | 160 | { |
| 200 | int rc = 0; | 161 | int rc = 0; |
| 162 | int done = 0; | ||
| 163 | int packet_length; | ||
| 164 | u8 *temp; | ||
| 165 | u8 *end = (u8 *) data + length; | ||
| 166 | pr_debug("packetize_data: data length %d\n", length); | ||
| 167 | if (!rbu_data.packetsize) { | ||
| 168 | printk(KERN_WARNING | ||
| 169 | "dell_rbu: packetsize not specified\n"); | ||
| 170 | return -EIO; | ||
| 171 | } | ||
| 201 | 172 | ||
| 202 | if (!rbu_data.packet_write_count) { | 173 | temp = (u8 *) data; |
| 203 | if ((rc = create_packet(length))) | 174 | |
| 175 | /* packetize the hunk */ | ||
| 176 | while (!done) { | ||
| 177 | if ((temp + rbu_data.packetsize) < end) | ||
| 178 | packet_length = rbu_data.packetsize; | ||
| 179 | else { | ||
| 180 | /* this is the last packet */ | ||
| 181 | packet_length = end - temp; | ||
| 182 | done = 1; | ||
| 183 | } | ||
| 184 | |||
| 185 | if ((rc = create_packet(temp, packet_length))) | ||
| 204 | return rc; | 186 | return rc; |
| 187 | |||
| 188 | pr_debug("%lu:%lu\n", temp, (end - temp)); | ||
| 189 | temp += packet_length; | ||
| 205 | } | 190 | } |
| 206 | if ((rc = fill_last_packet(data, length))) | 191 | |
| 207 | return rc; | 192 | rbu_data.imagesize = length; |
| 208 | 193 | ||
| 209 | return rc; | 194 | return rc; |
| 210 | } | 195 | } |
| @@ -243,7 +228,7 @@ static int do_packet_read(char *data, struct list_head *ptemp_list, | |||
| 243 | return bytes_copied; | 228 | return bytes_copied; |
| 244 | } | 229 | } |
| 245 | 230 | ||
| 246 | static int packet_read_list(char *data, size_t *pread_length) | 231 | static int packet_read_list(char *data, size_t * pread_length) |
| 247 | { | 232 | { |
| 248 | struct list_head *ptemp_list; | 233 | struct list_head *ptemp_list; |
| 249 | int temp_count = 0; | 234 | int temp_count = 0; |
| @@ -303,10 +288,9 @@ static void packet_empty_list(void) | |||
| 303 | newpacket->ordernum); | 288 | newpacket->ordernum); |
| 304 | kfree(newpacket); | 289 | kfree(newpacket); |
| 305 | } | 290 | } |
| 306 | rbu_data.packet_write_count = 0; | ||
| 307 | rbu_data.packet_read_count = 0; | 291 | rbu_data.packet_read_count = 0; |
| 308 | rbu_data.num_packets = 0; | 292 | rbu_data.num_packets = 0; |
| 309 | rbu_data.packetsize = 0; | 293 | rbu_data.imagesize = 0; |
| 310 | } | 294 | } |
| 311 | 295 | ||
| 312 | /* | 296 | /* |
| @@ -425,7 +409,6 @@ static ssize_t read_packet_data(char *buffer, loff_t pos, size_t count) | |||
| 425 | size_t bytes_left; | 409 | size_t bytes_left; |
| 426 | size_t data_length; | 410 | size_t data_length; |
| 427 | char *ptempBuf = buffer; | 411 | char *ptempBuf = buffer; |
| 428 | unsigned long imagesize; | ||
| 429 | 412 | ||
| 430 | /* check to see if we have something to return */ | 413 | /* check to see if we have something to return */ |
| 431 | if (rbu_data.num_packets == 0) { | 414 | if (rbu_data.num_packets == 0) { |
| @@ -434,22 +417,20 @@ static ssize_t read_packet_data(char *buffer, loff_t pos, size_t count) | |||
| 434 | goto read_rbu_data_exit; | 417 | goto read_rbu_data_exit; |
| 435 | } | 418 | } |
| 436 | 419 | ||
| 437 | imagesize = rbu_data.num_packets * rbu_data.packetsize; | 420 | if (pos > rbu_data.imagesize) { |
| 438 | |||
| 439 | if (pos > imagesize) { | ||
| 440 | retval = 0; | 421 | retval = 0; |
| 441 | printk(KERN_WARNING "dell_rbu:read_packet_data: " | 422 | printk(KERN_WARNING "dell_rbu:read_packet_data: " |
| 442 | "data underrun\n"); | 423 | "data underrun\n"); |
| 443 | goto read_rbu_data_exit; | 424 | goto read_rbu_data_exit; |
| 444 | } | 425 | } |
| 445 | 426 | ||
| 446 | bytes_left = imagesize - pos; | 427 | bytes_left = rbu_data.imagesize - pos; |
| 447 | data_length = min(bytes_left, count); | 428 | data_length = min(bytes_left, count); |
| 448 | 429 | ||
| 449 | if ((retval = packet_read_list(ptempBuf, &data_length)) < 0) | 430 | if ((retval = packet_read_list(ptempBuf, &data_length)) < 0) |
| 450 | goto read_rbu_data_exit; | 431 | goto read_rbu_data_exit; |
| 451 | 432 | ||
| 452 | if ((pos + count) > imagesize) { | 433 | if ((pos + count) > rbu_data.imagesize) { |
| 453 | rbu_data.packet_read_count = 0; | 434 | rbu_data.packet_read_count = 0; |
| 454 | /* this was the last copy */ | 435 | /* this was the last copy */ |
| 455 | retval = bytes_left; | 436 | retval = bytes_left; |
| @@ -499,7 +480,7 @@ static ssize_t read_rbu_mono_data(char *buffer, loff_t pos, size_t count) | |||
| 499 | } | 480 | } |
| 500 | 481 | ||
| 501 | static ssize_t read_rbu_data(struct kobject *kobj, char *buffer, | 482 | static ssize_t read_rbu_data(struct kobject *kobj, char *buffer, |
| 502 | loff_t pos, size_t count) | 483 | loff_t pos, size_t count) |
| 503 | { | 484 | { |
| 504 | ssize_t ret_count = 0; | 485 | ssize_t ret_count = 0; |
| 505 | 486 | ||
| @@ -531,13 +512,18 @@ static void callbackfn_rbu(const struct firmware *fw, void *context) | |||
| 531 | memcpy(rbu_data.image_update_buffer, | 512 | memcpy(rbu_data.image_update_buffer, |
| 532 | fw->data, fw->size); | 513 | fw->data, fw->size); |
| 533 | } else if (!strcmp(image_type, "packet")) { | 514 | } else if (!strcmp(image_type, "packet")) { |
| 534 | if (!rbu_data.packetsize) | 515 | /* |
| 535 | rbu_data.packetsize = fw->size; | 516 | * we need to free previous packets if a |
| 536 | else if (rbu_data.packetsize != fw->size) { | 517 | * new hunk of packets needs to be downloaded |
| 518 | */ | ||
| 519 | packet_empty_list(); | ||
| 520 | if (packetize_data(fw->data, fw->size)) | ||
| 521 | /* Incase something goes wrong when we are | ||
| 522 | * in middle of packetizing the data, we | ||
| 523 | * need to free up whatever packets might | ||
| 524 | * have been created before we quit. | ||
| 525 | */ | ||
| 537 | packet_empty_list(); | 526 | packet_empty_list(); |
| 538 | rbu_data.packetsize = fw->size; | ||
| 539 | } | ||
| 540 | packetize_data(fw->data, fw->size); | ||
| 541 | } else | 527 | } else |
| 542 | pr_debug("invalid image type specified.\n"); | 528 | pr_debug("invalid image type specified.\n"); |
| 543 | spin_unlock(&rbu_data.lock); | 529 | spin_unlock(&rbu_data.lock); |
| @@ -553,7 +539,7 @@ static void callbackfn_rbu(const struct firmware *fw, void *context) | |||
| 553 | } | 539 | } |
| 554 | 540 | ||
| 555 | static ssize_t read_rbu_image_type(struct kobject *kobj, char *buffer, | 541 | static ssize_t read_rbu_image_type(struct kobject *kobj, char *buffer, |
| 556 | loff_t pos, size_t count) | 542 | loff_t pos, size_t count) |
| 557 | { | 543 | { |
| 558 | int size = 0; | 544 | int size = 0; |
| 559 | if (!pos) | 545 | if (!pos) |
| @@ -562,7 +548,7 @@ static ssize_t read_rbu_image_type(struct kobject *kobj, char *buffer, | |||
| 562 | } | 548 | } |
| 563 | 549 | ||
| 564 | static ssize_t write_rbu_image_type(struct kobject *kobj, char *buffer, | 550 | static ssize_t write_rbu_image_type(struct kobject *kobj, char *buffer, |
| 565 | loff_t pos, size_t count) | 551 | loff_t pos, size_t count) |
| 566 | { | 552 | { |
| 567 | int rc = count; | 553 | int rc = count; |
| 568 | int req_firm_rc = 0; | 554 | int req_firm_rc = 0; |
| @@ -621,25 +607,49 @@ static ssize_t write_rbu_image_type(struct kobject *kobj, char *buffer, | |||
| 621 | return rc; | 607 | return rc; |
| 622 | } | 608 | } |
| 623 | 609 | ||
| 610 | static ssize_t read_rbu_packet_size(struct kobject *kobj, char *buffer, | ||
| 611 | loff_t pos, size_t count) | ||
| 612 | { | ||
| 613 | int size = 0; | ||
| 614 | if (!pos) { | ||
| 615 | spin_lock(&rbu_data.lock); | ||
| 616 | size = sprintf(buffer, "%lu\n", rbu_data.packetsize); | ||
| 617 | spin_unlock(&rbu_data.lock); | ||
| 618 | } | ||
| 619 | return size; | ||
| 620 | } | ||
| 621 | |||
| 622 | static ssize_t write_rbu_packet_size(struct kobject *kobj, char *buffer, | ||
| 623 | loff_t pos, size_t count) | ||
| 624 | { | ||
| 625 | unsigned long temp; | ||
| 626 | spin_lock(&rbu_data.lock); | ||
| 627 | packet_empty_list(); | ||
| 628 | sscanf(buffer, "%lu", &temp); | ||
| 629 | if (temp < 0xffffffff) | ||
| 630 | rbu_data.packetsize = temp; | ||
| 631 | |||
| 632 | spin_unlock(&rbu_data.lock); | ||
| 633 | return count; | ||
| 634 | } | ||
| 635 | |||
| 624 | static struct bin_attribute rbu_data_attr = { | 636 | static struct bin_attribute rbu_data_attr = { |
| 625 | .attr = { | 637 | .attr = {.name = "data",.owner = THIS_MODULE,.mode = 0444}, |
| 626 | .name = "data", | ||
| 627 | .owner = THIS_MODULE, | ||
| 628 | .mode = 0444, | ||
| 629 | }, | ||
| 630 | .read = read_rbu_data, | 638 | .read = read_rbu_data, |
| 631 | }; | 639 | }; |
| 632 | 640 | ||
| 633 | static struct bin_attribute rbu_image_type_attr = { | 641 | static struct bin_attribute rbu_image_type_attr = { |
| 634 | .attr = { | 642 | .attr = {.name = "image_type",.owner = THIS_MODULE,.mode = 0644}, |
| 635 | .name = "image_type", | ||
| 636 | .owner = THIS_MODULE, | ||
| 637 | .mode = 0644, | ||
| 638 | }, | ||
| 639 | .read = read_rbu_image_type, | 643 | .read = read_rbu_image_type, |
| 640 | .write = write_rbu_image_type, | 644 | .write = write_rbu_image_type, |
| 641 | }; | 645 | }; |
| 642 | 646 | ||
| 647 | static struct bin_attribute rbu_packet_size_attr = { | ||
| 648 | .attr = {.name = "packet_size",.owner = THIS_MODULE,.mode = 0644}, | ||
| 649 | .read = read_rbu_packet_size, | ||
| 650 | .write = write_rbu_packet_size, | ||
| 651 | }; | ||
| 652 | |||
| 643 | static int __init dcdrbu_init(void) | 653 | static int __init dcdrbu_init(void) |
| 644 | { | 654 | { |
| 645 | int rc = 0; | 655 | int rc = 0; |
| @@ -657,6 +667,8 @@ static int __init dcdrbu_init(void) | |||
| 657 | 667 | ||
| 658 | sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_data_attr); | 668 | sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_data_attr); |
| 659 | sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_image_type_attr); | 669 | sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_image_type_attr); |
| 670 | sysfs_create_bin_file(&rbu_device->dev.kobj, | ||
| 671 | &rbu_packet_size_attr); | ||
| 660 | 672 | ||
| 661 | rc = request_firmware_nowait(THIS_MODULE, FW_ACTION_NOHOTPLUG, | 673 | rc = request_firmware_nowait(THIS_MODULE, FW_ACTION_NOHOTPLUG, |
| 662 | "dell_rbu", &rbu_device->dev, &context, callbackfn_rbu); | 674 | "dell_rbu", &rbu_device->dev, &context, callbackfn_rbu); |
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 9e9cf1407311..5275cbb1afe9 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
| @@ -1101,6 +1101,7 @@ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq) | |||
| 1101 | ide_hwif_t *hwif; | 1101 | ide_hwif_t *hwif; |
| 1102 | struct request *rq; | 1102 | struct request *rq; |
| 1103 | ide_startstop_t startstop; | 1103 | ide_startstop_t startstop; |
| 1104 | int loops = 0; | ||
| 1104 | 1105 | ||
| 1105 | /* for atari only: POSSIBLY BROKEN HERE(?) */ | 1106 | /* for atari only: POSSIBLY BROKEN HERE(?) */ |
| 1106 | ide_get_lock(ide_intr, hwgroup); | 1107 | ide_get_lock(ide_intr, hwgroup); |
| @@ -1153,6 +1154,7 @@ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq) | |||
| 1153 | /* no more work for this hwgroup (for now) */ | 1154 | /* no more work for this hwgroup (for now) */ |
| 1154 | return; | 1155 | return; |
| 1155 | } | 1156 | } |
| 1157 | again: | ||
| 1156 | hwif = HWIF(drive); | 1158 | hwif = HWIF(drive); |
| 1157 | if (hwgroup->hwif->sharing_irq && | 1159 | if (hwgroup->hwif->sharing_irq && |
| 1158 | hwif != hwgroup->hwif && | 1160 | hwif != hwgroup->hwif && |
| @@ -1192,8 +1194,14 @@ static void ide_do_request (ide_hwgroup_t *hwgroup, int masked_irq) | |||
| 1192 | * though. I hope that doesn't happen too much, hopefully not | 1194 | * though. I hope that doesn't happen too much, hopefully not |
| 1193 | * unless the subdriver triggers such a thing in its own PM | 1195 | * unless the subdriver triggers such a thing in its own PM |
| 1194 | * state machine. | 1196 | * state machine. |
| 1197 | * | ||
| 1198 | * We count how many times we loop here to make sure we service | ||
| 1199 | * all drives in the hwgroup without looping for ever | ||
| 1195 | */ | 1200 | */ |
| 1196 | if (drive->blocked && !blk_pm_request(rq) && !(rq->flags & REQ_PREEMPT)) { | 1201 | if (drive->blocked && !blk_pm_request(rq) && !(rq->flags & REQ_PREEMPT)) { |
| 1202 | drive = drive->next ? drive->next : hwgroup->drive; | ||
| 1203 | if (loops++ < 4 && !blk_queue_plugged(drive->queue)) | ||
| 1204 | goto again; | ||
| 1197 | /* We clear busy, there should be no pending ATA command at this point. */ | 1205 | /* We clear busy, there should be no pending ATA command at this point. */ |
| 1198 | hwgroup->busy = 0; | 1206 | hwgroup->busy = 0; |
| 1199 | break; | 1207 | break; |
diff --git a/drivers/ieee1394/ohci1394.c b/drivers/ieee1394/ohci1394.c index 6a6acbd80af4..4cf9b8f3e336 100644 --- a/drivers/ieee1394/ohci1394.c +++ b/drivers/ieee1394/ohci1394.c | |||
| @@ -2283,8 +2283,9 @@ static void ohci_schedule_iso_tasklets(struct ti_ohci *ohci, | |||
| 2283 | { | 2283 | { |
| 2284 | struct ohci1394_iso_tasklet *t; | 2284 | struct ohci1394_iso_tasklet *t; |
| 2285 | unsigned long mask; | 2285 | unsigned long mask; |
| 2286 | unsigned long flags; | ||
| 2286 | 2287 | ||
| 2287 | spin_lock(&ohci->iso_tasklet_list_lock); | 2288 | spin_lock_irqsave(&ohci->iso_tasklet_list_lock, flags); |
| 2288 | 2289 | ||
| 2289 | list_for_each_entry(t, &ohci->iso_tasklet_list, link) { | 2290 | list_for_each_entry(t, &ohci->iso_tasklet_list, link) { |
| 2290 | mask = 1 << t->context; | 2291 | mask = 1 << t->context; |
| @@ -2295,8 +2296,7 @@ static void ohci_schedule_iso_tasklets(struct ti_ohci *ohci, | |||
| 2295 | tasklet_schedule(&t->tasklet); | 2296 | tasklet_schedule(&t->tasklet); |
| 2296 | } | 2297 | } |
| 2297 | 2298 | ||
| 2298 | spin_unlock(&ohci->iso_tasklet_list_lock); | 2299 | spin_unlock_irqrestore(&ohci->iso_tasklet_list_lock, flags); |
| 2299 | |||
| 2300 | } | 2300 | } |
| 2301 | 2301 | ||
| 2302 | static irqreturn_t ohci_irq_handler(int irq, void *dev_id, | 2302 | static irqreturn_t ohci_irq_handler(int irq, void *dev_id, |
diff --git a/drivers/ieee1394/raw1394.c b/drivers/ieee1394/raw1394.c index 5fe4f2ba0979..0470f77a9cd1 100644 --- a/drivers/ieee1394/raw1394.c +++ b/drivers/ieee1394/raw1394.c | |||
| @@ -98,7 +98,7 @@ static struct hpsb_address_ops arm_ops = { | |||
| 98 | 98 | ||
| 99 | static void queue_complete_cb(struct pending_request *req); | 99 | static void queue_complete_cb(struct pending_request *req); |
| 100 | 100 | ||
| 101 | static struct pending_request *__alloc_pending_request(unsigned int __nocast flags) | 101 | static struct pending_request *__alloc_pending_request(gfp_t flags) |
| 102 | { | 102 | { |
| 103 | struct pending_request *req; | 103 | struct pending_request *req; |
| 104 | 104 | ||
| @@ -412,6 +412,7 @@ static void fcp_request(struct hpsb_host *host, int nodeid, int direction, | |||
| 412 | static ssize_t raw1394_read(struct file *file, char __user * buffer, | 412 | static ssize_t raw1394_read(struct file *file, char __user * buffer, |
| 413 | size_t count, loff_t * offset_is_ignored) | 413 | size_t count, loff_t * offset_is_ignored) |
| 414 | { | 414 | { |
| 415 | unsigned long flags; | ||
| 415 | struct file_info *fi = (struct file_info *)file->private_data; | 416 | struct file_info *fi = (struct file_info *)file->private_data; |
| 416 | struct list_head *lh; | 417 | struct list_head *lh; |
| 417 | struct pending_request *req; | 418 | struct pending_request *req; |
| @@ -435,10 +436,10 @@ static ssize_t raw1394_read(struct file *file, char __user * buffer, | |||
| 435 | } | 436 | } |
| 436 | } | 437 | } |
| 437 | 438 | ||
| 438 | spin_lock_irq(&fi->reqlists_lock); | 439 | spin_lock_irqsave(&fi->reqlists_lock, flags); |
| 439 | lh = fi->req_complete.next; | 440 | lh = fi->req_complete.next; |
| 440 | list_del(lh); | 441 | list_del(lh); |
| 441 | spin_unlock_irq(&fi->reqlists_lock); | 442 | spin_unlock_irqrestore(&fi->reqlists_lock, flags); |
| 442 | 443 | ||
| 443 | req = list_entry(lh, struct pending_request, list); | 444 | req = list_entry(lh, struct pending_request, list); |
| 444 | 445 | ||
| @@ -486,6 +487,7 @@ static int state_opened(struct file_info *fi, struct pending_request *req) | |||
| 486 | 487 | ||
| 487 | static int state_initialized(struct file_info *fi, struct pending_request *req) | 488 | static int state_initialized(struct file_info *fi, struct pending_request *req) |
| 488 | { | 489 | { |
| 490 | unsigned long flags; | ||
| 489 | struct host_info *hi; | 491 | struct host_info *hi; |
| 490 | struct raw1394_khost_list *khl; | 492 | struct raw1394_khost_list *khl; |
| 491 | 493 | ||
| @@ -499,7 +501,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req) | |||
| 499 | 501 | ||
| 500 | switch (req->req.type) { | 502 | switch (req->req.type) { |
| 501 | case RAW1394_REQ_LIST_CARDS: | 503 | case RAW1394_REQ_LIST_CARDS: |
| 502 | spin_lock_irq(&host_info_lock); | 504 | spin_lock_irqsave(&host_info_lock, flags); |
| 503 | khl = kmalloc(sizeof(struct raw1394_khost_list) * host_count, | 505 | khl = kmalloc(sizeof(struct raw1394_khost_list) * host_count, |
| 504 | SLAB_ATOMIC); | 506 | SLAB_ATOMIC); |
| 505 | 507 | ||
| @@ -513,7 +515,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req) | |||
| 513 | khl++; | 515 | khl++; |
| 514 | } | 516 | } |
| 515 | } | 517 | } |
| 516 | spin_unlock_irq(&host_info_lock); | 518 | spin_unlock_irqrestore(&host_info_lock, flags); |
| 517 | 519 | ||
| 518 | if (khl != NULL) { | 520 | if (khl != NULL) { |
| 519 | req->req.error = RAW1394_ERROR_NONE; | 521 | req->req.error = RAW1394_ERROR_NONE; |
| @@ -528,7 +530,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req) | |||
| 528 | break; | 530 | break; |
| 529 | 531 | ||
| 530 | case RAW1394_REQ_SET_CARD: | 532 | case RAW1394_REQ_SET_CARD: |
| 531 | spin_lock_irq(&host_info_lock); | 533 | spin_lock_irqsave(&host_info_lock, flags); |
| 532 | if (req->req.misc < host_count) { | 534 | if (req->req.misc < host_count) { |
| 533 | list_for_each_entry(hi, &host_info_list, list) { | 535 | list_for_each_entry(hi, &host_info_list, list) { |
| 534 | if (!req->req.misc--) | 536 | if (!req->req.misc--) |
| @@ -550,7 +552,7 @@ static int state_initialized(struct file_info *fi, struct pending_request *req) | |||
| 550 | } else { | 552 | } else { |
| 551 | req->req.error = RAW1394_ERROR_INVALID_ARG; | 553 | req->req.error = RAW1394_ERROR_INVALID_ARG; |
| 552 | } | 554 | } |
| 553 | spin_unlock_irq(&host_info_lock); | 555 | spin_unlock_irqrestore(&host_info_lock, flags); |
| 554 | 556 | ||
| 555 | req->req.length = 0; | 557 | req->req.length = 0; |
| 556 | break; | 558 | break; |
| @@ -569,7 +571,6 @@ static void handle_iso_listen(struct file_info *fi, struct pending_request *req) | |||
| 569 | { | 571 | { |
| 570 | int channel = req->req.misc; | 572 | int channel = req->req.misc; |
| 571 | 573 | ||
| 572 | spin_lock_irq(&host_info_lock); | ||
| 573 | if ((channel > 63) || (channel < -64)) { | 574 | if ((channel > 63) || (channel < -64)) { |
| 574 | req->req.error = RAW1394_ERROR_INVALID_ARG; | 575 | req->req.error = RAW1394_ERROR_INVALID_ARG; |
| 575 | } else if (channel >= 0) { | 576 | } else if (channel >= 0) { |
| @@ -601,7 +602,6 @@ static void handle_iso_listen(struct file_info *fi, struct pending_request *req) | |||
| 601 | 602 | ||
| 602 | req->req.length = 0; | 603 | req->req.length = 0; |
| 603 | queue_complete_req(req); | 604 | queue_complete_req(req); |
| 604 | spin_unlock_irq(&host_info_lock); | ||
| 605 | } | 605 | } |
| 606 | 606 | ||
| 607 | static void handle_fcp_listen(struct file_info *fi, struct pending_request *req) | 607 | static void handle_fcp_listen(struct file_info *fi, struct pending_request *req) |
| @@ -627,6 +627,7 @@ static void handle_fcp_listen(struct file_info *fi, struct pending_request *req) | |||
| 627 | static int handle_async_request(struct file_info *fi, | 627 | static int handle_async_request(struct file_info *fi, |
| 628 | struct pending_request *req, int node) | 628 | struct pending_request *req, int node) |
| 629 | { | 629 | { |
| 630 | unsigned long flags; | ||
| 630 | struct hpsb_packet *packet = NULL; | 631 | struct hpsb_packet *packet = NULL; |
| 631 | u64 addr = req->req.address & 0xffffffffffffULL; | 632 | u64 addr = req->req.address & 0xffffffffffffULL; |
| 632 | 633 | ||
| @@ -761,9 +762,9 @@ static int handle_async_request(struct file_info *fi, | |||
| 761 | hpsb_set_packet_complete_task(packet, | 762 | hpsb_set_packet_complete_task(packet, |
| 762 | (void (*)(void *))queue_complete_cb, req); | 763 | (void (*)(void *))queue_complete_cb, req); |
| 763 | 764 | ||
| 764 | spin_lock_irq(&fi->reqlists_lock); | 765 | spin_lock_irqsave(&fi->reqlists_lock, flags); |
| 765 | list_add_tail(&req->list, &fi->req_pending); | 766 | list_add_tail(&req->list, &fi->req_pending); |
| 766 | spin_unlock_irq(&fi->reqlists_lock); | 767 | spin_unlock_irqrestore(&fi->reqlists_lock, flags); |
| 767 | 768 | ||
| 768 | packet->generation = req->req.generation; | 769 | packet->generation = req->req.generation; |
| 769 | 770 | ||
| @@ -779,6 +780,7 @@ static int handle_async_request(struct file_info *fi, | |||
| 779 | static int handle_iso_send(struct file_info *fi, struct pending_request *req, | 780 | static int handle_iso_send(struct file_info *fi, struct pending_request *req, |
| 780 | int channel) | 781 | int channel) |
| 781 | { | 782 | { |
| 783 | unsigned long flags; | ||
| 782 | struct hpsb_packet *packet; | 784 | struct hpsb_packet *packet; |
| 783 | 785 | ||
| 784 | packet = hpsb_make_isopacket(fi->host, req->req.length, channel & 0x3f, | 786 | packet = hpsb_make_isopacket(fi->host, req->req.length, channel & 0x3f, |
| @@ -804,9 +806,9 @@ static int handle_iso_send(struct file_info *fi, struct pending_request *req, | |||
| 804 | (void (*)(void *))queue_complete_req, | 806 | (void (*)(void *))queue_complete_req, |
| 805 | req); | 807 | req); |
| 806 | 808 | ||
| 807 | spin_lock_irq(&fi->reqlists_lock); | 809 | spin_lock_irqsave(&fi->reqlists_lock, flags); |
| 808 | list_add_tail(&req->list, &fi->req_pending); | 810 | list_add_tail(&req->list, &fi->req_pending); |
| 809 | spin_unlock_irq(&fi->reqlists_lock); | 811 | spin_unlock_irqrestore(&fi->reqlists_lock, flags); |
| 810 | 812 | ||
| 811 | /* Update the generation of the packet just before sending. */ | 813 | /* Update the generation of the packet just before sending. */ |
| 812 | packet->generation = req->req.generation; | 814 | packet->generation = req->req.generation; |
| @@ -821,6 +823,7 @@ static int handle_iso_send(struct file_info *fi, struct pending_request *req, | |||
| 821 | 823 | ||
| 822 | static int handle_async_send(struct file_info *fi, struct pending_request *req) | 824 | static int handle_async_send(struct file_info *fi, struct pending_request *req) |
| 823 | { | 825 | { |
| 826 | unsigned long flags; | ||
| 824 | struct hpsb_packet *packet; | 827 | struct hpsb_packet *packet; |
| 825 | int header_length = req->req.misc & 0xffff; | 828 | int header_length = req->req.misc & 0xffff; |
| 826 | int expect_response = req->req.misc >> 16; | 829 | int expect_response = req->req.misc >> 16; |
| @@ -867,9 +870,9 @@ static int handle_async_send(struct file_info *fi, struct pending_request *req) | |||
| 867 | hpsb_set_packet_complete_task(packet, | 870 | hpsb_set_packet_complete_task(packet, |
| 868 | (void (*)(void *))queue_complete_cb, req); | 871 | (void (*)(void *))queue_complete_cb, req); |
| 869 | 872 | ||
| 870 | spin_lock_irq(&fi->reqlists_lock); | 873 | spin_lock_irqsave(&fi->reqlists_lock, flags); |
| 871 | list_add_tail(&req->list, &fi->req_pending); | 874 | list_add_tail(&req->list, &fi->req_pending); |
| 872 | spin_unlock_irq(&fi->reqlists_lock); | 875 | spin_unlock_irqrestore(&fi->reqlists_lock, flags); |
| 873 | 876 | ||
| 874 | /* Update the generation of the packet just before sending. */ | 877 | /* Update the generation of the packet just before sending. */ |
| 875 | packet->generation = req->req.generation; | 878 | packet->generation = req->req.generation; |
| @@ -885,6 +888,7 @@ static int handle_async_send(struct file_info *fi, struct pending_request *req) | |||
| 885 | static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer, | 888 | static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer, |
| 886 | u64 addr, size_t length, u16 flags) | 889 | u64 addr, size_t length, u16 flags) |
| 887 | { | 890 | { |
| 891 | unsigned long irqflags; | ||
| 888 | struct pending_request *req; | 892 | struct pending_request *req; |
| 889 | struct host_info *hi; | 893 | struct host_info *hi; |
| 890 | struct file_info *fi = NULL; | 894 | struct file_info *fi = NULL; |
| @@ -899,7 +903,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer, | |||
| 899 | "addr: %4.4x %8.8x length: %Zu", nodeid, | 903 | "addr: %4.4x %8.8x length: %Zu", nodeid, |
| 900 | (u16) ((addr >> 32) & 0xFFFF), (u32) (addr & 0xFFFFFFFF), | 904 | (u16) ((addr >> 32) & 0xFFFF), (u32) (addr & 0xFFFFFFFF), |
| 901 | length); | 905 | length); |
| 902 | spin_lock(&host_info_lock); | 906 | spin_lock_irqsave(&host_info_lock, irqflags); |
| 903 | hi = find_host_info(host); /* search address-entry */ | 907 | hi = find_host_info(host); /* search address-entry */ |
| 904 | if (hi != NULL) { | 908 | if (hi != NULL) { |
| 905 | list_for_each_entry(fi, &hi->file_info_list, list) { | 909 | list_for_each_entry(fi, &hi->file_info_list, list) { |
| @@ -924,7 +928,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer, | |||
| 924 | if (!found) { | 928 | if (!found) { |
| 925 | printk(KERN_ERR "raw1394: arm_read FAILED addr_entry not found" | 929 | printk(KERN_ERR "raw1394: arm_read FAILED addr_entry not found" |
| 926 | " -> rcode_address_error\n"); | 930 | " -> rcode_address_error\n"); |
| 927 | spin_unlock(&host_info_lock); | 931 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 928 | return (RCODE_ADDRESS_ERROR); | 932 | return (RCODE_ADDRESS_ERROR); |
| 929 | } else { | 933 | } else { |
| 930 | DBGMSG("arm_read addr_entry FOUND"); | 934 | DBGMSG("arm_read addr_entry FOUND"); |
| @@ -954,7 +958,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer, | |||
| 954 | req = __alloc_pending_request(SLAB_ATOMIC); | 958 | req = __alloc_pending_request(SLAB_ATOMIC); |
| 955 | if (!req) { | 959 | if (!req) { |
| 956 | DBGMSG("arm_read -> rcode_conflict_error"); | 960 | DBGMSG("arm_read -> rcode_conflict_error"); |
| 957 | spin_unlock(&host_info_lock); | 961 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 958 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 962 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 959 | The request may be retried */ | 963 | The request may be retried */ |
| 960 | } | 964 | } |
| @@ -974,7 +978,7 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer, | |||
| 974 | if (!(req->data)) { | 978 | if (!(req->data)) { |
| 975 | free_pending_request(req); | 979 | free_pending_request(req); |
| 976 | DBGMSG("arm_read -> rcode_conflict_error"); | 980 | DBGMSG("arm_read -> rcode_conflict_error"); |
| 977 | spin_unlock(&host_info_lock); | 981 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 978 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 982 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 979 | The request may be retried */ | 983 | The request may be retried */ |
| 980 | } | 984 | } |
| @@ -1031,13 +1035,14 @@ static int arm_read(struct hpsb_host *host, int nodeid, quadlet_t * buffer, | |||
| 1031 | sizeof(struct arm_request)); | 1035 | sizeof(struct arm_request)); |
| 1032 | queue_complete_req(req); | 1036 | queue_complete_req(req); |
| 1033 | } | 1037 | } |
| 1034 | spin_unlock(&host_info_lock); | 1038 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1035 | return (rcode); | 1039 | return (rcode); |
| 1036 | } | 1040 | } |
| 1037 | 1041 | ||
| 1038 | static int arm_write(struct hpsb_host *host, int nodeid, int destid, | 1042 | static int arm_write(struct hpsb_host *host, int nodeid, int destid, |
| 1039 | quadlet_t * data, u64 addr, size_t length, u16 flags) | 1043 | quadlet_t * data, u64 addr, size_t length, u16 flags) |
| 1040 | { | 1044 | { |
| 1045 | unsigned long irqflags; | ||
| 1041 | struct pending_request *req; | 1046 | struct pending_request *req; |
| 1042 | struct host_info *hi; | 1047 | struct host_info *hi; |
| 1043 | struct file_info *fi = NULL; | 1048 | struct file_info *fi = NULL; |
| @@ -1052,7 +1057,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid, | |||
| 1052 | "addr: %4.4x %8.8x length: %Zu", nodeid, | 1057 | "addr: %4.4x %8.8x length: %Zu", nodeid, |
| 1053 | (u16) ((addr >> 32) & 0xFFFF), (u32) (addr & 0xFFFFFFFF), | 1058 | (u16) ((addr >> 32) & 0xFFFF), (u32) (addr & 0xFFFFFFFF), |
| 1054 | length); | 1059 | length); |
| 1055 | spin_lock(&host_info_lock); | 1060 | spin_lock_irqsave(&host_info_lock, irqflags); |
| 1056 | hi = find_host_info(host); /* search address-entry */ | 1061 | hi = find_host_info(host); /* search address-entry */ |
| 1057 | if (hi != NULL) { | 1062 | if (hi != NULL) { |
| 1058 | list_for_each_entry(fi, &hi->file_info_list, list) { | 1063 | list_for_each_entry(fi, &hi->file_info_list, list) { |
| @@ -1077,7 +1082,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid, | |||
| 1077 | if (!found) { | 1082 | if (!found) { |
| 1078 | printk(KERN_ERR "raw1394: arm_write FAILED addr_entry not found" | 1083 | printk(KERN_ERR "raw1394: arm_write FAILED addr_entry not found" |
| 1079 | " -> rcode_address_error\n"); | 1084 | " -> rcode_address_error\n"); |
| 1080 | spin_unlock(&host_info_lock); | 1085 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1081 | return (RCODE_ADDRESS_ERROR); | 1086 | return (RCODE_ADDRESS_ERROR); |
| 1082 | } else { | 1087 | } else { |
| 1083 | DBGMSG("arm_write addr_entry FOUND"); | 1088 | DBGMSG("arm_write addr_entry FOUND"); |
| @@ -1106,7 +1111,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid, | |||
| 1106 | req = __alloc_pending_request(SLAB_ATOMIC); | 1111 | req = __alloc_pending_request(SLAB_ATOMIC); |
| 1107 | if (!req) { | 1112 | if (!req) { |
| 1108 | DBGMSG("arm_write -> rcode_conflict_error"); | 1113 | DBGMSG("arm_write -> rcode_conflict_error"); |
| 1109 | spin_unlock(&host_info_lock); | 1114 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1110 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 1115 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 1111 | The request my be retried */ | 1116 | The request my be retried */ |
| 1112 | } | 1117 | } |
| @@ -1118,7 +1123,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid, | |||
| 1118 | if (!(req->data)) { | 1123 | if (!(req->data)) { |
| 1119 | free_pending_request(req); | 1124 | free_pending_request(req); |
| 1120 | DBGMSG("arm_write -> rcode_conflict_error"); | 1125 | DBGMSG("arm_write -> rcode_conflict_error"); |
| 1121 | spin_unlock(&host_info_lock); | 1126 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1122 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 1127 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 1123 | The request may be retried */ | 1128 | The request may be retried */ |
| 1124 | } | 1129 | } |
| @@ -1165,7 +1170,7 @@ static int arm_write(struct hpsb_host *host, int nodeid, int destid, | |||
| 1165 | sizeof(struct arm_request)); | 1170 | sizeof(struct arm_request)); |
| 1166 | queue_complete_req(req); | 1171 | queue_complete_req(req); |
| 1167 | } | 1172 | } |
| 1168 | spin_unlock(&host_info_lock); | 1173 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1169 | return (rcode); | 1174 | return (rcode); |
| 1170 | } | 1175 | } |
| 1171 | 1176 | ||
| @@ -1173,6 +1178,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store, | |||
| 1173 | u64 addr, quadlet_t data, quadlet_t arg, int ext_tcode, | 1178 | u64 addr, quadlet_t data, quadlet_t arg, int ext_tcode, |
| 1174 | u16 flags) | 1179 | u16 flags) |
| 1175 | { | 1180 | { |
| 1181 | unsigned long irqflags; | ||
| 1176 | struct pending_request *req; | 1182 | struct pending_request *req; |
| 1177 | struct host_info *hi; | 1183 | struct host_info *hi; |
| 1178 | struct file_info *fi = NULL; | 1184 | struct file_info *fi = NULL; |
| @@ -1198,7 +1204,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store, | |||
| 1198 | (u32) (addr & 0xFFFFFFFF), ext_tcode & 0xFF, | 1204 | (u32) (addr & 0xFFFFFFFF), ext_tcode & 0xFF, |
| 1199 | be32_to_cpu(data), be32_to_cpu(arg)); | 1205 | be32_to_cpu(data), be32_to_cpu(arg)); |
| 1200 | } | 1206 | } |
| 1201 | spin_lock(&host_info_lock); | 1207 | spin_lock_irqsave(&host_info_lock, irqflags); |
| 1202 | hi = find_host_info(host); /* search address-entry */ | 1208 | hi = find_host_info(host); /* search address-entry */ |
| 1203 | if (hi != NULL) { | 1209 | if (hi != NULL) { |
| 1204 | list_for_each_entry(fi, &hi->file_info_list, list) { | 1210 | list_for_each_entry(fi, &hi->file_info_list, list) { |
| @@ -1224,7 +1230,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store, | |||
| 1224 | if (!found) { | 1230 | if (!found) { |
| 1225 | printk(KERN_ERR "raw1394: arm_lock FAILED addr_entry not found" | 1231 | printk(KERN_ERR "raw1394: arm_lock FAILED addr_entry not found" |
| 1226 | " -> rcode_address_error\n"); | 1232 | " -> rcode_address_error\n"); |
| 1227 | spin_unlock(&host_info_lock); | 1233 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1228 | return (RCODE_ADDRESS_ERROR); | 1234 | return (RCODE_ADDRESS_ERROR); |
| 1229 | } else { | 1235 | } else { |
| 1230 | DBGMSG("arm_lock addr_entry FOUND"); | 1236 | DBGMSG("arm_lock addr_entry FOUND"); |
| @@ -1307,7 +1313,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store, | |||
| 1307 | req = __alloc_pending_request(SLAB_ATOMIC); | 1313 | req = __alloc_pending_request(SLAB_ATOMIC); |
| 1308 | if (!req) { | 1314 | if (!req) { |
| 1309 | DBGMSG("arm_lock -> rcode_conflict_error"); | 1315 | DBGMSG("arm_lock -> rcode_conflict_error"); |
| 1310 | spin_unlock(&host_info_lock); | 1316 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1311 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 1317 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 1312 | The request may be retried */ | 1318 | The request may be retried */ |
| 1313 | } | 1319 | } |
| @@ -1316,7 +1322,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store, | |||
| 1316 | if (!(req->data)) { | 1322 | if (!(req->data)) { |
| 1317 | free_pending_request(req); | 1323 | free_pending_request(req); |
| 1318 | DBGMSG("arm_lock -> rcode_conflict_error"); | 1324 | DBGMSG("arm_lock -> rcode_conflict_error"); |
| 1319 | spin_unlock(&host_info_lock); | 1325 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1320 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 1326 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 1321 | The request may be retried */ | 1327 | The request may be retried */ |
| 1322 | } | 1328 | } |
| @@ -1382,7 +1388,7 @@ static int arm_lock(struct hpsb_host *host, int nodeid, quadlet_t * store, | |||
| 1382 | sizeof(struct arm_response) + 2 * sizeof(*store)); | 1388 | sizeof(struct arm_response) + 2 * sizeof(*store)); |
| 1383 | queue_complete_req(req); | 1389 | queue_complete_req(req); |
| 1384 | } | 1390 | } |
| 1385 | spin_unlock(&host_info_lock); | 1391 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1386 | return (rcode); | 1392 | return (rcode); |
| 1387 | } | 1393 | } |
| 1388 | 1394 | ||
| @@ -1390,6 +1396,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store, | |||
| 1390 | u64 addr, octlet_t data, octlet_t arg, int ext_tcode, | 1396 | u64 addr, octlet_t data, octlet_t arg, int ext_tcode, |
| 1391 | u16 flags) | 1397 | u16 flags) |
| 1392 | { | 1398 | { |
| 1399 | unsigned long irqflags; | ||
| 1393 | struct pending_request *req; | 1400 | struct pending_request *req; |
| 1394 | struct host_info *hi; | 1401 | struct host_info *hi; |
| 1395 | struct file_info *fi = NULL; | 1402 | struct file_info *fi = NULL; |
| @@ -1422,7 +1429,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store, | |||
| 1422 | (u32) ((be64_to_cpu(arg) >> 32) & 0xFFFFFFFF), | 1429 | (u32) ((be64_to_cpu(arg) >> 32) & 0xFFFFFFFF), |
| 1423 | (u32) (be64_to_cpu(arg) & 0xFFFFFFFF)); | 1430 | (u32) (be64_to_cpu(arg) & 0xFFFFFFFF)); |
| 1424 | } | 1431 | } |
| 1425 | spin_lock(&host_info_lock); | 1432 | spin_lock_irqsave(&host_info_lock, irqflags); |
| 1426 | hi = find_host_info(host); /* search addressentry in file_info's for host */ | 1433 | hi = find_host_info(host); /* search addressentry in file_info's for host */ |
| 1427 | if (hi != NULL) { | 1434 | if (hi != NULL) { |
| 1428 | list_for_each_entry(fi, &hi->file_info_list, list) { | 1435 | list_for_each_entry(fi, &hi->file_info_list, list) { |
| @@ -1449,7 +1456,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store, | |||
| 1449 | printk(KERN_ERR | 1456 | printk(KERN_ERR |
| 1450 | "raw1394: arm_lock64 FAILED addr_entry not found" | 1457 | "raw1394: arm_lock64 FAILED addr_entry not found" |
| 1451 | " -> rcode_address_error\n"); | 1458 | " -> rcode_address_error\n"); |
| 1452 | spin_unlock(&host_info_lock); | 1459 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1453 | return (RCODE_ADDRESS_ERROR); | 1460 | return (RCODE_ADDRESS_ERROR); |
| 1454 | } else { | 1461 | } else { |
| 1455 | DBGMSG("arm_lock64 addr_entry FOUND"); | 1462 | DBGMSG("arm_lock64 addr_entry FOUND"); |
| @@ -1533,7 +1540,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store, | |||
| 1533 | DBGMSG("arm_lock64 -> entering notification-section"); | 1540 | DBGMSG("arm_lock64 -> entering notification-section"); |
| 1534 | req = __alloc_pending_request(SLAB_ATOMIC); | 1541 | req = __alloc_pending_request(SLAB_ATOMIC); |
| 1535 | if (!req) { | 1542 | if (!req) { |
| 1536 | spin_unlock(&host_info_lock); | 1543 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1537 | DBGMSG("arm_lock64 -> rcode_conflict_error"); | 1544 | DBGMSG("arm_lock64 -> rcode_conflict_error"); |
| 1538 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 1545 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 1539 | The request may be retried */ | 1546 | The request may be retried */ |
| @@ -1542,7 +1549,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store, | |||
| 1542 | req->data = kmalloc(size, SLAB_ATOMIC); | 1549 | req->data = kmalloc(size, SLAB_ATOMIC); |
| 1543 | if (!(req->data)) { | 1550 | if (!(req->data)) { |
| 1544 | free_pending_request(req); | 1551 | free_pending_request(req); |
| 1545 | spin_unlock(&host_info_lock); | 1552 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1546 | DBGMSG("arm_lock64 -> rcode_conflict_error"); | 1553 | DBGMSG("arm_lock64 -> rcode_conflict_error"); |
| 1547 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. | 1554 | return (RCODE_CONFLICT_ERROR); /* A resource conflict was detected. |
| 1548 | The request may be retried */ | 1555 | The request may be retried */ |
| @@ -1609,7 +1616,7 @@ static int arm_lock64(struct hpsb_host *host, int nodeid, octlet_t * store, | |||
| 1609 | sizeof(struct arm_response) + 2 * sizeof(*store)); | 1616 | sizeof(struct arm_response) + 2 * sizeof(*store)); |
| 1610 | queue_complete_req(req); | 1617 | queue_complete_req(req); |
| 1611 | } | 1618 | } |
| 1612 | spin_unlock(&host_info_lock); | 1619 | spin_unlock_irqrestore(&host_info_lock, irqflags); |
| 1613 | return (rcode); | 1620 | return (rcode); |
| 1614 | } | 1621 | } |
| 1615 | 1622 | ||
| @@ -1980,6 +1987,7 @@ static int write_phypacket(struct file_info *fi, struct pending_request *req) | |||
| 1980 | struct hpsb_packet *packet = NULL; | 1987 | struct hpsb_packet *packet = NULL; |
| 1981 | int retval = 0; | 1988 | int retval = 0; |
| 1982 | quadlet_t data; | 1989 | quadlet_t data; |
| 1990 | unsigned long flags; | ||
| 1983 | 1991 | ||
| 1984 | data = be32_to_cpu((u32) req->req.sendb); | 1992 | data = be32_to_cpu((u32) req->req.sendb); |
| 1985 | DBGMSG("write_phypacket called - quadlet 0x%8.8x ", data); | 1993 | DBGMSG("write_phypacket called - quadlet 0x%8.8x ", data); |
| @@ -1990,9 +1998,9 @@ static int write_phypacket(struct file_info *fi, struct pending_request *req) | |||
| 1990 | req->packet = packet; | 1998 | req->packet = packet; |
| 1991 | hpsb_set_packet_complete_task(packet, | 1999 | hpsb_set_packet_complete_task(packet, |
| 1992 | (void (*)(void *))queue_complete_cb, req); | 2000 | (void (*)(void *))queue_complete_cb, req); |
| 1993 | spin_lock_irq(&fi->reqlists_lock); | 2001 | spin_lock_irqsave(&fi->reqlists_lock, flags); |
| 1994 | list_add_tail(&req->list, &fi->req_pending); | 2002 | list_add_tail(&req->list, &fi->req_pending); |
| 1995 | spin_unlock_irq(&fi->reqlists_lock); | 2003 | spin_unlock_irqrestore(&fi->reqlists_lock, flags); |
| 1996 | packet->generation = req->req.generation; | 2004 | packet->generation = req->req.generation; |
| 1997 | retval = hpsb_send_packet(packet); | 2005 | retval = hpsb_send_packet(packet); |
| 1998 | DBGMSG("write_phypacket send_packet called => retval: %d ", retval); | 2006 | DBGMSG("write_phypacket send_packet called => retval: %d ", retval); |
| @@ -2659,14 +2667,15 @@ static unsigned int raw1394_poll(struct file *file, poll_table * pt) | |||
| 2659 | { | 2667 | { |
| 2660 | struct file_info *fi = file->private_data; | 2668 | struct file_info *fi = file->private_data; |
| 2661 | unsigned int mask = POLLOUT | POLLWRNORM; | 2669 | unsigned int mask = POLLOUT | POLLWRNORM; |
| 2670 | unsigned long flags; | ||
| 2662 | 2671 | ||
| 2663 | poll_wait(file, &fi->poll_wait_complete, pt); | 2672 | poll_wait(file, &fi->poll_wait_complete, pt); |
| 2664 | 2673 | ||
| 2665 | spin_lock_irq(&fi->reqlists_lock); | 2674 | spin_lock_irqsave(&fi->reqlists_lock, flags); |
| 2666 | if (!list_empty(&fi->req_complete)) { | 2675 | if (!list_empty(&fi->req_complete)) { |
| 2667 | mask |= POLLIN | POLLRDNORM; | 2676 | mask |= POLLIN | POLLRDNORM; |
| 2668 | } | 2677 | } |
| 2669 | spin_unlock_irq(&fi->reqlists_lock); | 2678 | spin_unlock_irqrestore(&fi->reqlists_lock, flags); |
| 2670 | 2679 | ||
| 2671 | return mask; | 2680 | return mask; |
| 2672 | } | 2681 | } |
| @@ -2710,6 +2719,7 @@ static int raw1394_release(struct inode *inode, struct file *file) | |||
| 2710 | struct arm_addr *arm_addr = NULL; | 2719 | struct arm_addr *arm_addr = NULL; |
| 2711 | int another_host; | 2720 | int another_host; |
| 2712 | int csr_mod = 0; | 2721 | int csr_mod = 0; |
| 2722 | unsigned long flags; | ||
| 2713 | 2723 | ||
| 2714 | if (fi->iso_state != RAW1394_ISO_INACTIVE) | 2724 | if (fi->iso_state != RAW1394_ISO_INACTIVE) |
| 2715 | raw1394_iso_shutdown(fi); | 2725 | raw1394_iso_shutdown(fi); |
| @@ -2720,13 +2730,11 @@ static int raw1394_release(struct inode *inode, struct file *file) | |||
| 2720 | } | 2730 | } |
| 2721 | } | 2731 | } |
| 2722 | 2732 | ||
| 2723 | spin_lock_irq(&host_info_lock); | 2733 | spin_lock_irqsave(&host_info_lock, flags); |
| 2724 | fi->listen_channels = 0; | 2734 | fi->listen_channels = 0; |
| 2725 | spin_unlock_irq(&host_info_lock); | ||
| 2726 | 2735 | ||
| 2727 | fail = 0; | 2736 | fail = 0; |
| 2728 | /* set address-entries invalid */ | 2737 | /* set address-entries invalid */ |
| 2729 | spin_lock_irq(&host_info_lock); | ||
| 2730 | 2738 | ||
| 2731 | while (!list_empty(&fi->addr_list)) { | 2739 | while (!list_empty(&fi->addr_list)) { |
| 2732 | another_host = 0; | 2740 | another_host = 0; |
| @@ -2777,14 +2785,14 @@ static int raw1394_release(struct inode *inode, struct file *file) | |||
| 2777 | vfree(addr->addr_space_buffer); | 2785 | vfree(addr->addr_space_buffer); |
| 2778 | kfree(addr); | 2786 | kfree(addr); |
| 2779 | } /* while */ | 2787 | } /* while */ |
| 2780 | spin_unlock_irq(&host_info_lock); | 2788 | spin_unlock_irqrestore(&host_info_lock, flags); |
| 2781 | if (fail > 0) { | 2789 | if (fail > 0) { |
| 2782 | printk(KERN_ERR "raw1394: during addr_list-release " | 2790 | printk(KERN_ERR "raw1394: during addr_list-release " |
| 2783 | "error(s) occurred \n"); | 2791 | "error(s) occurred \n"); |
| 2784 | } | 2792 | } |
| 2785 | 2793 | ||
| 2786 | while (!done) { | 2794 | while (!done) { |
| 2787 | spin_lock_irq(&fi->reqlists_lock); | 2795 | spin_lock_irqsave(&fi->reqlists_lock, flags); |
| 2788 | 2796 | ||
| 2789 | while (!list_empty(&fi->req_complete)) { | 2797 | while (!list_empty(&fi->req_complete)) { |
| 2790 | lh = fi->req_complete.next; | 2798 | lh = fi->req_complete.next; |
| @@ -2798,7 +2806,7 @@ static int raw1394_release(struct inode *inode, struct file *file) | |||
| 2798 | if (list_empty(&fi->req_pending)) | 2806 | if (list_empty(&fi->req_pending)) |
| 2799 | done = 1; | 2807 | done = 1; |
| 2800 | 2808 | ||
| 2801 | spin_unlock_irq(&fi->reqlists_lock); | 2809 | spin_unlock_irqrestore(&fi->reqlists_lock, flags); |
| 2802 | 2810 | ||
| 2803 | if (!done) | 2811 | if (!done) |
| 2804 | down_interruptible(&fi->complete_sem); | 2812 | down_interruptible(&fi->complete_sem); |
| @@ -2828,9 +2836,9 @@ static int raw1394_release(struct inode *inode, struct file *file) | |||
| 2828 | fi->host->id); | 2836 | fi->host->id); |
| 2829 | 2837 | ||
| 2830 | if (fi->state == connected) { | 2838 | if (fi->state == connected) { |
| 2831 | spin_lock_irq(&host_info_lock); | 2839 | spin_lock_irqsave(&host_info_lock, flags); |
| 2832 | list_del(&fi->list); | 2840 | list_del(&fi->list); |
| 2833 | spin_unlock_irq(&host_info_lock); | 2841 | spin_unlock_irqrestore(&host_info_lock, flags); |
| 2834 | 2842 | ||
| 2835 | put_device(&fi->host->device); | 2843 | put_device(&fi->host->device); |
| 2836 | } | 2844 | } |
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c index a4a4d9c1eef3..a14ca87fda18 100644 --- a/drivers/infiniband/core/mad.c +++ b/drivers/infiniband/core/mad.c | |||
| @@ -783,7 +783,7 @@ struct ib_mad_send_buf * ib_create_send_mad(struct ib_mad_agent *mad_agent, | |||
| 783 | u32 remote_qpn, u16 pkey_index, | 783 | u32 remote_qpn, u16 pkey_index, |
| 784 | struct ib_ah *ah, int rmpp_active, | 784 | struct ib_ah *ah, int rmpp_active, |
| 785 | int hdr_len, int data_len, | 785 | int hdr_len, int data_len, |
| 786 | unsigned int __nocast gfp_mask) | 786 | gfp_t gfp_mask) |
| 787 | { | 787 | { |
| 788 | struct ib_mad_agent_private *mad_agent_priv; | 788 | struct ib_mad_agent_private *mad_agent_priv; |
| 789 | struct ib_mad_send_buf *send_buf; | 789 | struct ib_mad_send_buf *send_buf; |
diff --git a/drivers/infiniband/core/sa_query.c b/drivers/infiniband/core/sa_query.c index 78de2dd1a4f2..262618210c1c 100644 --- a/drivers/infiniband/core/sa_query.c +++ b/drivers/infiniband/core/sa_query.c | |||
| @@ -574,7 +574,7 @@ static void ib_sa_path_rec_release(struct ib_sa_query *sa_query) | |||
| 574 | int ib_sa_path_rec_get(struct ib_device *device, u8 port_num, | 574 | int ib_sa_path_rec_get(struct ib_device *device, u8 port_num, |
| 575 | struct ib_sa_path_rec *rec, | 575 | struct ib_sa_path_rec *rec, |
| 576 | ib_sa_comp_mask comp_mask, | 576 | ib_sa_comp_mask comp_mask, |
| 577 | int timeout_ms, unsigned int __nocast gfp_mask, | 577 | int timeout_ms, gfp_t gfp_mask, |
| 578 | void (*callback)(int status, | 578 | void (*callback)(int status, |
| 579 | struct ib_sa_path_rec *resp, | 579 | struct ib_sa_path_rec *resp, |
| 580 | void *context), | 580 | void *context), |
| @@ -676,7 +676,7 @@ static void ib_sa_service_rec_release(struct ib_sa_query *sa_query) | |||
| 676 | int ib_sa_service_rec_query(struct ib_device *device, u8 port_num, u8 method, | 676 | int ib_sa_service_rec_query(struct ib_device *device, u8 port_num, u8 method, |
| 677 | struct ib_sa_service_rec *rec, | 677 | struct ib_sa_service_rec *rec, |
| 678 | ib_sa_comp_mask comp_mask, | 678 | ib_sa_comp_mask comp_mask, |
| 679 | int timeout_ms, unsigned int __nocast gfp_mask, | 679 | int timeout_ms, gfp_t gfp_mask, |
| 680 | void (*callback)(int status, | 680 | void (*callback)(int status, |
| 681 | struct ib_sa_service_rec *resp, | 681 | struct ib_sa_service_rec *resp, |
| 682 | void *context), | 682 | void *context), |
| @@ -759,7 +759,7 @@ int ib_sa_mcmember_rec_query(struct ib_device *device, u8 port_num, | |||
| 759 | u8 method, | 759 | u8 method, |
| 760 | struct ib_sa_mcmember_rec *rec, | 760 | struct ib_sa_mcmember_rec *rec, |
| 761 | ib_sa_comp_mask comp_mask, | 761 | ib_sa_comp_mask comp_mask, |
| 762 | int timeout_ms, unsigned int __nocast gfp_mask, | 762 | int timeout_ms, gfp_t gfp_mask, |
| 763 | void (*callback)(int status, | 763 | void (*callback)(int status, |
| 764 | struct ib_sa_mcmember_rec *resp, | 764 | struct ib_sa_mcmember_rec *resp, |
| 765 | void *context), | 765 | void *context), |
diff --git a/drivers/infiniband/hw/mthca/mthca_eq.c b/drivers/infiniband/hw/mthca/mthca_eq.c index c81fa8e975ef..8dfafda5ed24 100644 --- a/drivers/infiniband/hw/mthca/mthca_eq.c +++ b/drivers/infiniband/hw/mthca/mthca_eq.c | |||
| @@ -396,20 +396,21 @@ static irqreturn_t mthca_tavor_interrupt(int irq, void *dev_ptr, struct pt_regs | |||
| 396 | writel(dev->eq_table.clr_mask, dev->eq_table.clr_int); | 396 | writel(dev->eq_table.clr_mask, dev->eq_table.clr_int); |
| 397 | 397 | ||
| 398 | ecr = readl(dev->eq_regs.tavor.ecr_base + 4); | 398 | ecr = readl(dev->eq_regs.tavor.ecr_base + 4); |
| 399 | if (ecr) { | 399 | if (!ecr) |
| 400 | writel(ecr, dev->eq_regs.tavor.ecr_base + | 400 | return IRQ_NONE; |
| 401 | MTHCA_ECR_CLR_BASE - MTHCA_ECR_BASE + 4); | ||
| 402 | 401 | ||
| 403 | for (i = 0; i < MTHCA_NUM_EQ; ++i) | 402 | writel(ecr, dev->eq_regs.tavor.ecr_base + |
| 404 | if (ecr & dev->eq_table.eq[i].eqn_mask && | 403 | MTHCA_ECR_CLR_BASE - MTHCA_ECR_BASE + 4); |
| 405 | mthca_eq_int(dev, &dev->eq_table.eq[i])) { | 404 | |
| 405 | for (i = 0; i < MTHCA_NUM_EQ; ++i) | ||
| 406 | if (ecr & dev->eq_table.eq[i].eqn_mask) { | ||
| 407 | if (mthca_eq_int(dev, &dev->eq_table.eq[i])) | ||
| 406 | tavor_set_eq_ci(dev, &dev->eq_table.eq[i], | 408 | tavor_set_eq_ci(dev, &dev->eq_table.eq[i], |
| 407 | dev->eq_table.eq[i].cons_index); | 409 | dev->eq_table.eq[i].cons_index); |
| 408 | tavor_eq_req_not(dev, dev->eq_table.eq[i].eqn); | 410 | tavor_eq_req_not(dev, dev->eq_table.eq[i].eqn); |
| 409 | } | 411 | } |
| 410 | } | ||
| 411 | 412 | ||
| 412 | return IRQ_RETVAL(ecr); | 413 | return IRQ_HANDLED; |
| 413 | } | 414 | } |
| 414 | 415 | ||
| 415 | static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr, | 416 | static irqreturn_t mthca_tavor_msi_x_interrupt(int irq, void *eq_ptr, |
diff --git a/drivers/infiniband/hw/mthca/mthca_main.c b/drivers/infiniband/hw/mthca/mthca_main.c index ffbcd40418d5..23a3f56c7899 100644 --- a/drivers/infiniband/hw/mthca/mthca_main.c +++ b/drivers/infiniband/hw/mthca/mthca_main.c | |||
| @@ -503,6 +503,25 @@ err_free_aux: | |||
| 503 | return err; | 503 | return err; |
| 504 | } | 504 | } |
| 505 | 505 | ||
| 506 | static void mthca_free_icms(struct mthca_dev *mdev) | ||
| 507 | { | ||
| 508 | u8 status; | ||
| 509 | |||
| 510 | mthca_free_icm_table(mdev, mdev->mcg_table.table); | ||
| 511 | if (mdev->mthca_flags & MTHCA_FLAG_SRQ) | ||
| 512 | mthca_free_icm_table(mdev, mdev->srq_table.table); | ||
| 513 | mthca_free_icm_table(mdev, mdev->cq_table.table); | ||
| 514 | mthca_free_icm_table(mdev, mdev->qp_table.rdb_table); | ||
| 515 | mthca_free_icm_table(mdev, mdev->qp_table.eqp_table); | ||
| 516 | mthca_free_icm_table(mdev, mdev->qp_table.qp_table); | ||
| 517 | mthca_free_icm_table(mdev, mdev->mr_table.mpt_table); | ||
| 518 | mthca_free_icm_table(mdev, mdev->mr_table.mtt_table); | ||
| 519 | mthca_unmap_eq_icm(mdev); | ||
| 520 | |||
| 521 | mthca_UNMAP_ICM_AUX(mdev, &status); | ||
| 522 | mthca_free_icm(mdev, mdev->fw.arbel.aux_icm); | ||
| 523 | } | ||
| 524 | |||
| 506 | static int __devinit mthca_init_arbel(struct mthca_dev *mdev) | 525 | static int __devinit mthca_init_arbel(struct mthca_dev *mdev) |
| 507 | { | 526 | { |
| 508 | struct mthca_dev_lim dev_lim; | 527 | struct mthca_dev_lim dev_lim; |
| @@ -580,18 +599,7 @@ static int __devinit mthca_init_arbel(struct mthca_dev *mdev) | |||
| 580 | return 0; | 599 | return 0; |
| 581 | 600 | ||
| 582 | err_free_icm: | 601 | err_free_icm: |
| 583 | if (mdev->mthca_flags & MTHCA_FLAG_SRQ) | 602 | mthca_free_icms(mdev); |
| 584 | mthca_free_icm_table(mdev, mdev->srq_table.table); | ||
| 585 | mthca_free_icm_table(mdev, mdev->cq_table.table); | ||
| 586 | mthca_free_icm_table(mdev, mdev->qp_table.rdb_table); | ||
| 587 | mthca_free_icm_table(mdev, mdev->qp_table.eqp_table); | ||
| 588 | mthca_free_icm_table(mdev, mdev->qp_table.qp_table); | ||
| 589 | mthca_free_icm_table(mdev, mdev->mr_table.mpt_table); | ||
| 590 | mthca_free_icm_table(mdev, mdev->mr_table.mtt_table); | ||
| 591 | mthca_unmap_eq_icm(mdev); | ||
| 592 | |||
| 593 | mthca_UNMAP_ICM_AUX(mdev, &status); | ||
| 594 | mthca_free_icm(mdev, mdev->fw.arbel.aux_icm); | ||
| 595 | 603 | ||
| 596 | err_stop_fw: | 604 | err_stop_fw: |
| 597 | mthca_UNMAP_FA(mdev, &status); | 605 | mthca_UNMAP_FA(mdev, &status); |
| @@ -611,18 +619,7 @@ static void mthca_close_hca(struct mthca_dev *mdev) | |||
| 611 | mthca_CLOSE_HCA(mdev, 0, &status); | 619 | mthca_CLOSE_HCA(mdev, 0, &status); |
| 612 | 620 | ||
| 613 | if (mthca_is_memfree(mdev)) { | 621 | if (mthca_is_memfree(mdev)) { |
| 614 | if (mdev->mthca_flags & MTHCA_FLAG_SRQ) | 622 | mthca_free_icms(mdev); |
| 615 | mthca_free_icm_table(mdev, mdev->srq_table.table); | ||
| 616 | mthca_free_icm_table(mdev, mdev->cq_table.table); | ||
| 617 | mthca_free_icm_table(mdev, mdev->qp_table.rdb_table); | ||
| 618 | mthca_free_icm_table(mdev, mdev->qp_table.eqp_table); | ||
| 619 | mthca_free_icm_table(mdev, mdev->qp_table.qp_table); | ||
| 620 | mthca_free_icm_table(mdev, mdev->mr_table.mpt_table); | ||
| 621 | mthca_free_icm_table(mdev, mdev->mr_table.mtt_table); | ||
| 622 | mthca_unmap_eq_icm(mdev); | ||
| 623 | |||
| 624 | mthca_UNMAP_ICM_AUX(mdev, &status); | ||
| 625 | mthca_free_icm(mdev, mdev->fw.arbel.aux_icm); | ||
| 626 | 623 | ||
| 627 | mthca_UNMAP_FA(mdev, &status); | 624 | mthca_UNMAP_FA(mdev, &status); |
| 628 | mthca_free_icm(mdev, mdev->fw.arbel.fw_icm); | 625 | mthca_free_icm(mdev, mdev->fw.arbel.fw_icm); |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 704f48e0b6a7..6c5bf07489f4 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
| @@ -474,7 +474,7 @@ err: | |||
| 474 | spin_unlock(&priv->lock); | 474 | spin_unlock(&priv->lock); |
| 475 | } | 475 | } |
| 476 | 476 | ||
| 477 | static void path_lookup(struct sk_buff *skb, struct net_device *dev) | 477 | static void ipoib_path_lookup(struct sk_buff *skb, struct net_device *dev) |
| 478 | { | 478 | { |
| 479 | struct ipoib_dev_priv *priv = netdev_priv(skb->dev); | 479 | struct ipoib_dev_priv *priv = netdev_priv(skb->dev); |
| 480 | 480 | ||
| @@ -569,7 +569,7 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 569 | 569 | ||
| 570 | if (skb->dst && skb->dst->neighbour) { | 570 | if (skb->dst && skb->dst->neighbour) { |
| 571 | if (unlikely(!*to_ipoib_neigh(skb->dst->neighbour))) { | 571 | if (unlikely(!*to_ipoib_neigh(skb->dst->neighbour))) { |
| 572 | path_lookup(skb, dev); | 572 | ipoib_path_lookup(skb, dev); |
| 573 | goto out; | 573 | goto out; |
| 574 | } | 574 | } |
| 575 | 575 | ||
diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig index 444f7756fee6..571a68691a4a 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig | |||
| @@ -93,7 +93,7 @@ config KEYBOARD_LKKBD | |||
| 93 | 93 | ||
| 94 | config KEYBOARD_LOCOMO | 94 | config KEYBOARD_LOCOMO |
| 95 | tristate "LoCoMo Keyboard Support" | 95 | tristate "LoCoMo Keyboard Support" |
| 96 | depends on SHARP_LOCOMO | 96 | depends on SHARP_LOCOMO && INPUT_KEYBOARD |
| 97 | help | 97 | help |
| 98 | Say Y here if you are running Linux on a Sharp Zaurus Collie or Poodle based PDA | 98 | Say Y here if you are running Linux on a Sharp Zaurus Collie or Poodle based PDA |
| 99 | 99 | ||
diff --git a/drivers/input/keyboard/spitzkbd.c b/drivers/input/keyboard/spitzkbd.c index 1714045a182b..344f46005401 100644 --- a/drivers/input/keyboard/spitzkbd.c +++ b/drivers/input/keyboard/spitzkbd.c | |||
| @@ -53,7 +53,7 @@ static unsigned char spitzkbd_keycode[NR_SCANCODES] = { | |||
| 53 | KEY_LEFTCTRL, KEY_1, KEY_3, KEY_5, KEY_6, KEY_7, KEY_9, KEY_0, KEY_BACKSPACE, SPITZ_KEY_EXOK, SPITZ_KEY_EXCANCEL, 0, 0, 0, 0, 0, /* 1-16 */ | 53 | KEY_LEFTCTRL, KEY_1, KEY_3, KEY_5, KEY_6, KEY_7, KEY_9, KEY_0, KEY_BACKSPACE, SPITZ_KEY_EXOK, SPITZ_KEY_EXCANCEL, 0, 0, 0, 0, 0, /* 1-16 */ |
| 54 | 0, KEY_2, KEY_4, KEY_R, KEY_Y, KEY_8, KEY_I, KEY_O, KEY_P, SPITZ_KEY_EXJOGDOWN, SPITZ_KEY_EXJOGUP, 0, 0, 0, 0, 0, /* 17-32 */ | 54 | 0, KEY_2, KEY_4, KEY_R, KEY_Y, KEY_8, KEY_I, KEY_O, KEY_P, SPITZ_KEY_EXJOGDOWN, SPITZ_KEY_EXJOGUP, 0, 0, 0, 0, 0, /* 17-32 */ |
| 55 | KEY_TAB, KEY_Q, KEY_E, KEY_T, KEY_G, KEY_U, KEY_J, KEY_K, 0, 0, 0, 0, 0, 0, 0, 0, /* 33-48 */ | 55 | KEY_TAB, KEY_Q, KEY_E, KEY_T, KEY_G, KEY_U, KEY_J, KEY_K, 0, 0, 0, 0, 0, 0, 0, 0, /* 33-48 */ |
| 56 | SPITZ_KEY_CALENDER, KEY_W, KEY_S, KEY_F, KEY_V, KEY_H, KEY_M, KEY_L, 0, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, /* 49-64 */ | 56 | SPITZ_KEY_CALENDER, KEY_W, KEY_S, KEY_F, KEY_V, KEY_H, KEY_M, KEY_L, 0, KEY_RIGHTSHIFT, 0, 0, 0, 0, 0, 0, /* 49-64 */ |
| 57 | SPITZ_KEY_ADDRESS, KEY_A, KEY_D, KEY_C, KEY_B, KEY_N, KEY_DOT, 0, KEY_ENTER, KEY_LEFTSHIFT, 0, 0, 0, 0, 0, 0, /* 65-80 */ | 57 | SPITZ_KEY_ADDRESS, KEY_A, KEY_D, KEY_C, KEY_B, KEY_N, KEY_DOT, 0, KEY_ENTER, KEY_LEFTSHIFT, 0, 0, 0, 0, 0, 0, /* 65-80 */ |
| 58 | SPITZ_KEY_MAIL, KEY_Z, KEY_X, KEY_MINUS, KEY_SPACE, KEY_COMMA, 0, KEY_UP, 0, 0, SPITZ_KEY_FN, 0, 0, 0, 0, 0, /* 81-96 */ | 58 | SPITZ_KEY_MAIL, KEY_Z, KEY_X, KEY_MINUS, KEY_SPACE, KEY_COMMA, 0, KEY_UP, 0, 0, SPITZ_KEY_FN, 0, 0, 0, 0, 0, /* 81-96 */ |
| 59 | KEY_SYSRQ, SPITZ_KEY_JAP1, SPITZ_KEY_JAP2, SPITZ_KEY_CANCEL, SPITZ_KEY_OK, SPITZ_KEY_MENU, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, 0, 0 /* 97-112 */ | 59 | KEY_SYSRQ, SPITZ_KEY_JAP1, SPITZ_KEY_JAP2, SPITZ_KEY_CANCEL, SPITZ_KEY_OK, SPITZ_KEY_MENU, KEY_LEFT, KEY_DOWN, KEY_RIGHT, 0, 0, 0, 0, 0, 0, 0 /* 97-112 */ |
diff --git a/drivers/input/misc/uinput.c b/drivers/input/misc/uinput.c index d5c5b32045af..4015a91f4b6e 100644 --- a/drivers/input/misc/uinput.c +++ b/drivers/input/misc/uinput.c | |||
| @@ -90,11 +90,11 @@ static inline int uinput_request_reserve_slot(struct uinput_device *udev, struct | |||
| 90 | 90 | ||
| 91 | static void uinput_request_done(struct uinput_device *udev, struct uinput_request *request) | 91 | static void uinput_request_done(struct uinput_device *udev, struct uinput_request *request) |
| 92 | { | 92 | { |
| 93 | complete(&request->done); | ||
| 94 | |||
| 95 | /* Mark slot as available */ | 93 | /* Mark slot as available */ |
| 96 | udev->requests[request->id] = NULL; | 94 | udev->requests[request->id] = NULL; |
| 97 | wake_up_interruptible(&udev->requests_waitq); | 95 | wake_up_interruptible(&udev->requests_waitq); |
| 96 | |||
| 97 | complete(&request->done); | ||
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | static int uinput_request_submit(struct input_dev *dev, struct uinput_request *request) | 100 | static int uinput_request_submit(struct input_dev *dev, struct uinput_request *request) |
diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c index b82bc3150476..b6148f6f7836 100644 --- a/drivers/md/dm-crypt.c +++ b/drivers/md/dm-crypt.c | |||
| @@ -96,7 +96,7 @@ static kmem_cache_t *_crypt_io_pool; | |||
| 96 | /* | 96 | /* |
| 97 | * Mempool alloc and free functions for the page | 97 | * Mempool alloc and free functions for the page |
| 98 | */ | 98 | */ |
| 99 | static void *mempool_alloc_page(unsigned int __nocast gfp_mask, void *data) | 99 | static void *mempool_alloc_page(gfp_t gfp_mask, void *data) |
| 100 | { | 100 | { |
| 101 | return alloc_page(gfp_mask); | 101 | return alloc_page(gfp_mask); |
| 102 | } | 102 | } |
diff --git a/drivers/md/dm-io.c b/drivers/md/dm-io.c index 9de000131a8a..4809b209fbb1 100644 --- a/drivers/md/dm-io.c +++ b/drivers/md/dm-io.c | |||
| @@ -32,7 +32,7 @@ struct io { | |||
| 32 | static unsigned _num_ios; | 32 | static unsigned _num_ios; |
| 33 | static mempool_t *_io_pool; | 33 | static mempool_t *_io_pool; |
| 34 | 34 | ||
| 35 | static void *alloc_io(unsigned int __nocast gfp_mask, void *pool_data) | 35 | static void *alloc_io(gfp_t gfp_mask, void *pool_data) |
| 36 | { | 36 | { |
| 37 | return kmalloc(sizeof(struct io), gfp_mask); | 37 | return kmalloc(sizeof(struct io), gfp_mask); |
| 38 | } | 38 | } |
diff --git a/drivers/md/dm-raid1.c b/drivers/md/dm-raid1.c index 863282513753..2375709a392c 100644 --- a/drivers/md/dm-raid1.c +++ b/drivers/md/dm-raid1.c | |||
| @@ -122,7 +122,7 @@ static inline sector_t region_to_sector(struct region_hash *rh, region_t region) | |||
| 122 | /* FIXME move this */ | 122 | /* FIXME move this */ |
| 123 | static void queue_bio(struct mirror_set *ms, struct bio *bio, int rw); | 123 | static void queue_bio(struct mirror_set *ms, struct bio *bio, int rw); |
| 124 | 124 | ||
| 125 | static void *region_alloc(unsigned int __nocast gfp_mask, void *pool_data) | 125 | static void *region_alloc(gfp_t gfp_mask, void *pool_data) |
| 126 | { | 126 | { |
| 127 | return kmalloc(sizeof(struct region), gfp_mask); | 127 | return kmalloc(sizeof(struct region), gfp_mask); |
| 128 | } | 128 | } |
diff --git a/drivers/md/md.c b/drivers/md/md.c index 2897df90df44..2a8a5696bf8a 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
| @@ -3063,6 +3063,7 @@ static int md_thread(void * arg) | |||
| 3063 | * many dirty RAID5 blocks. | 3063 | * many dirty RAID5 blocks. |
| 3064 | */ | 3064 | */ |
| 3065 | 3065 | ||
| 3066 | allow_signal(SIGKILL); | ||
| 3066 | complete(thread->event); | 3067 | complete(thread->event); |
| 3067 | while (!kthread_should_stop()) { | 3068 | while (!kthread_should_stop()) { |
| 3068 | void (*run)(mddev_t *); | 3069 | void (*run)(mddev_t *); |
| @@ -3111,7 +3112,7 @@ mdk_thread_t *md_register_thread(void (*run) (mddev_t *), mddev_t *mddev, | |||
| 3111 | thread->mddev = mddev; | 3112 | thread->mddev = mddev; |
| 3112 | thread->name = name; | 3113 | thread->name = name; |
| 3113 | thread->timeout = MAX_SCHEDULE_TIMEOUT; | 3114 | thread->timeout = MAX_SCHEDULE_TIMEOUT; |
| 3114 | thread->tsk = kthread_run(md_thread, thread, mdname(thread->mddev)); | 3115 | thread->tsk = kthread_run(md_thread, thread, name, mdname(thread->mddev)); |
| 3115 | if (IS_ERR(thread->tsk)) { | 3116 | if (IS_ERR(thread->tsk)) { |
| 3116 | kfree(thread); | 3117 | kfree(thread); |
| 3117 | return NULL; | 3118 | return NULL; |
| @@ -3567,8 +3568,10 @@ static void md_do_sync(mddev_t *mddev) | |||
| 3567 | mddev->curr_resync = 2; | 3568 | mddev->curr_resync = 2; |
| 3568 | 3569 | ||
| 3569 | try_again: | 3570 | try_again: |
| 3570 | if (signal_pending(current)) { | 3571 | if (signal_pending(current) || |
| 3572 | kthread_should_stop()) { | ||
| 3571 | flush_signals(current); | 3573 | flush_signals(current); |
| 3574 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); | ||
| 3572 | goto skip; | 3575 | goto skip; |
| 3573 | } | 3576 | } |
| 3574 | ITERATE_MDDEV(mddev2,tmp) { | 3577 | ITERATE_MDDEV(mddev2,tmp) { |
| @@ -3588,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev) | |||
| 3588 | */ | 3591 | */ |
| 3589 | continue; | 3592 | continue; |
| 3590 | prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE); | 3593 | prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE); |
| 3591 | if (!signal_pending(current) | 3594 | if (!signal_pending(current) && |
| 3592 | && mddev2->curr_resync >= mddev->curr_resync) { | 3595 | !kthread_should_stop() && |
| 3596 | mddev2->curr_resync >= mddev->curr_resync) { | ||
| 3593 | printk(KERN_INFO "md: delaying resync of %s" | 3597 | printk(KERN_INFO "md: delaying resync of %s" |
| 3594 | " until %s has finished resync (they" | 3598 | " until %s has finished resync (they" |
| 3595 | " share one or more physical units)\n", | 3599 | " share one or more physical units)\n", |
| @@ -3695,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev) | |||
| 3695 | } | 3699 | } |
| 3696 | 3700 | ||
| 3697 | 3701 | ||
| 3698 | if (signal_pending(current)) { | 3702 | if (signal_pending(current) || kthread_should_stop()) { |
| 3699 | /* | 3703 | /* |
| 3700 | * got a signal, exit. | 3704 | * got a signal, exit. |
| 3701 | */ | 3705 | */ |
diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c index 286342375fb7..1151c3ed3006 100644 --- a/drivers/md/multipath.c +++ b/drivers/md/multipath.c | |||
| @@ -38,7 +38,7 @@ | |||
| 38 | static mdk_personality_t multipath_personality; | 38 | static mdk_personality_t multipath_personality; |
| 39 | 39 | ||
| 40 | 40 | ||
| 41 | static void *mp_pool_alloc(unsigned int __nocast gfp_flags, void *data) | 41 | static void *mp_pool_alloc(gfp_t gfp_flags, void *data) |
| 42 | { | 42 | { |
| 43 | struct multipath_bh *mpb; | 43 | struct multipath_bh *mpb; |
| 44 | mpb = kmalloc(sizeof(*mpb), gfp_flags); | 44 | mpb = kmalloc(sizeof(*mpb), gfp_flags); |
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c index a93ca478142a..0e1f148dd41d 100644 --- a/drivers/md/raid1.c +++ b/drivers/md/raid1.c | |||
| @@ -52,7 +52,7 @@ static mdk_personality_t raid1_personality; | |||
| 52 | static void unplug_slaves(mddev_t *mddev); | 52 | static void unplug_slaves(mddev_t *mddev); |
| 53 | 53 | ||
| 54 | 54 | ||
| 55 | static void * r1bio_pool_alloc(unsigned int __nocast gfp_flags, void *data) | 55 | static void * r1bio_pool_alloc(gfp_t gfp_flags, void *data) |
| 56 | { | 56 | { |
| 57 | struct pool_info *pi = data; | 57 | struct pool_info *pi = data; |
| 58 | r1bio_t *r1_bio; | 58 | r1bio_t *r1_bio; |
| @@ -79,7 +79,7 @@ static void r1bio_pool_free(void *r1_bio, void *data) | |||
| 79 | #define RESYNC_PAGES ((RESYNC_BLOCK_SIZE + PAGE_SIZE-1) / PAGE_SIZE) | 79 | #define RESYNC_PAGES ((RESYNC_BLOCK_SIZE + PAGE_SIZE-1) / PAGE_SIZE) |
| 80 | #define RESYNC_WINDOW (2048*1024) | 80 | #define RESYNC_WINDOW (2048*1024) |
| 81 | 81 | ||
| 82 | static void * r1buf_pool_alloc(unsigned int __nocast gfp_flags, void *data) | 82 | static void * r1buf_pool_alloc(gfp_t gfp_flags, void *data) |
| 83 | { | 83 | { |
| 84 | struct pool_info *pi = data; | 84 | struct pool_info *pi = data; |
| 85 | struct page *page; | 85 | struct page *page; |
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 5bd1e9ec899d..28dd028415e4 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c | |||
| @@ -47,7 +47,7 @@ | |||
| 47 | 47 | ||
| 48 | static void unplug_slaves(mddev_t *mddev); | 48 | static void unplug_slaves(mddev_t *mddev); |
| 49 | 49 | ||
| 50 | static void * r10bio_pool_alloc(unsigned int __nocast gfp_flags, void *data) | 50 | static void * r10bio_pool_alloc(gfp_t gfp_flags, void *data) |
| 51 | { | 51 | { |
| 52 | conf_t *conf = data; | 52 | conf_t *conf = data; |
| 53 | r10bio_t *r10_bio; | 53 | r10bio_t *r10_bio; |
| @@ -81,7 +81,7 @@ static void r10bio_pool_free(void *r10_bio, void *data) | |||
| 81 | * one for write (we recover only one drive per r10buf) | 81 | * one for write (we recover only one drive per r10buf) |
| 82 | * | 82 | * |
| 83 | */ | 83 | */ |
| 84 | static void * r10buf_pool_alloc(unsigned int __nocast gfp_flags, void *data) | 84 | static void * r10buf_pool_alloc(gfp_t gfp_flags, void *data) |
| 85 | { | 85 | { |
| 86 | conf_t *conf = data; | 86 | conf_t *conf = data; |
| 87 | struct page *page; | 87 | struct page *page; |
diff --git a/drivers/media/radio/radio-cadet.c b/drivers/media/radio/radio-cadet.c index 022913da8c59..9b0406318f2d 100644 --- a/drivers/media/radio/radio-cadet.c +++ b/drivers/media/radio/radio-cadet.c | |||
| @@ -543,7 +543,7 @@ static int cadet_probe(void) | |||
| 543 | 543 | ||
| 544 | for(i=0;i<8;i++) { | 544 | for(i=0;i<8;i++) { |
| 545 | io=iovals[i]; | 545 | io=iovals[i]; |
| 546 | if(request_region(io,2, "cadet-probe")>=0) { | 546 | if (request_region(io, 2, "cadet-probe")) { |
| 547 | cadet_setfreq(1410); | 547 | cadet_setfreq(1410); |
| 548 | if(cadet_getfreq()==1410) { | 548 | if(cadet_getfreq()==1410) { |
| 549 | release_region(io, 2); | 549 | release_region(io, 2); |
diff --git a/drivers/media/video/Kconfig b/drivers/media/video/Kconfig index 93570355819a..bbb989df4cf0 100644 --- a/drivers/media/video/Kconfig +++ b/drivers/media/video/Kconfig | |||
| @@ -262,7 +262,6 @@ config VIDEO_SAA7134_DVB | |||
| 262 | depends on VIDEO_SAA7134 && DVB_CORE | 262 | depends on VIDEO_SAA7134 && DVB_CORE |
| 263 | select VIDEO_BUF_DVB | 263 | select VIDEO_BUF_DVB |
| 264 | select DVB_MT352 | 264 | select DVB_MT352 |
| 265 | select DVB_CX22702 | ||
| 266 | select DVB_TDA1004X | 265 | select DVB_TDA1004X |
| 267 | ---help--- | 266 | ---help--- |
| 268 | This adds support for DVB cards based on the | 267 | This adds support for DVB cards based on the |
diff --git a/drivers/media/video/bttv-cards.c b/drivers/media/video/bttv-cards.c index 6c332800d6ab..0881a17d5226 100644 --- a/drivers/media/video/bttv-cards.c +++ b/drivers/media/video/bttv-cards.c | |||
| @@ -2393,10 +2393,10 @@ struct tvcard bttv_tvcards[] = { | |||
| 2393 | .tuner = 0, | 2393 | .tuner = 0, |
| 2394 | .tuner_type = TUNER_LG_TDVS_H062F, | 2394 | .tuner_type = TUNER_LG_TDVS_H062F, |
| 2395 | .tuner_addr = ADDR_UNSET, | 2395 | .tuner_addr = ADDR_UNSET, |
| 2396 | .video_inputs = 2, | 2396 | .video_inputs = 3, |
| 2397 | .audio_inputs = 1, | 2397 | .audio_inputs = 1, |
| 2398 | .svhs = 2, | 2398 | .svhs = 2, |
| 2399 | .muxsel = { 2, 3 }, | 2399 | .muxsel = { 2, 3, 1 }, |
| 2400 | .gpiomask = 0x00e00007, | 2400 | .gpiomask = 0x00e00007, |
| 2401 | .audiomux = { 0x00400005, 0, 0x00000001, 0, 0x00c00007, 0 }, | 2401 | .audiomux = { 0x00400005, 0, 0x00000001, 0, 0x00c00007, 0 }, |
| 2402 | .no_msp34xx = 1, | 2402 | .no_msp34xx = 1, |
diff --git a/drivers/media/video/vpx3220.c b/drivers/media/video/vpx3220.c index 4437bdebe24f..137b58f2c666 100644 --- a/drivers/media/video/vpx3220.c +++ b/drivers/media/video/vpx3220.c | |||
| @@ -203,7 +203,7 @@ static const unsigned short init_ntsc[] = { | |||
| 203 | 0x8c, 640, /* Horizontal length */ | 203 | 0x8c, 640, /* Horizontal length */ |
| 204 | 0x8d, 640, /* Number of pixels */ | 204 | 0x8d, 640, /* Number of pixels */ |
| 205 | 0x8f, 0xc00, /* Disable window 2 */ | 205 | 0x8f, 0xc00, /* Disable window 2 */ |
| 206 | 0xf0, 0x173, /* 13.5 MHz transport, Forced | 206 | 0xf0, 0x73, /* 13.5 MHz transport, Forced |
| 207 | * mode, latch windows */ | 207 | * mode, latch windows */ |
| 208 | 0xf2, 0x13, /* NTSC M, composite input */ | 208 | 0xf2, 0x13, /* NTSC M, composite input */ |
| 209 | 0xe7, 0x1e1, /* Enable vertical standard | 209 | 0xe7, 0x1e1, /* Enable vertical standard |
| @@ -212,38 +212,36 @@ static const unsigned short init_ntsc[] = { | |||
| 212 | 212 | ||
| 213 | static const unsigned short init_pal[] = { | 213 | static const unsigned short init_pal[] = { |
| 214 | 0x88, 23, /* Window 1 vertical begin */ | 214 | 0x88, 23, /* Window 1 vertical begin */ |
| 215 | 0x89, 288 + 16, /* Vertical lines in (16 lines | 215 | 0x89, 288, /* Vertical lines in (16 lines |
| 216 | * skipped by the VFE) */ | 216 | * skipped by the VFE) */ |
| 217 | 0x8a, 288 + 16, /* Vertical lines out (16 lines | 217 | 0x8a, 288, /* Vertical lines out (16 lines |
| 218 | * skipped by the VFE) */ | 218 | * skipped by the VFE) */ |
| 219 | 0x8b, 16, /* Horizontal begin */ | 219 | 0x8b, 16, /* Horizontal begin */ |
| 220 | 0x8c, 768, /* Horizontal length */ | 220 | 0x8c, 768, /* Horizontal length */ |
| 221 | 0x8d, 784, /* Number of pixels | 221 | 0x8d, 784, /* Number of pixels |
| 222 | * Must be >= Horizontal begin + Horizontal length */ | 222 | * Must be >= Horizontal begin + Horizontal length */ |
| 223 | 0x8f, 0xc00, /* Disable window 2 */ | 223 | 0x8f, 0xc00, /* Disable window 2 */ |
| 224 | 0xf0, 0x177, /* 13.5 MHz transport, Forced | 224 | 0xf0, 0x77, /* 13.5 MHz transport, Forced |
| 225 | * mode, latch windows */ | 225 | * mode, latch windows */ |
| 226 | 0xf2, 0x3d1, /* PAL B,G,H,I, composite input */ | 226 | 0xf2, 0x3d1, /* PAL B,G,H,I, composite input */ |
| 227 | 0xe7, 0x261, /* PAL/SECAM set to 288 + 16 lines | 227 | 0xe7, 0x241, /* PAL/SECAM set to 288 lines */ |
| 228 | * change to 0x241 for 288 lines */ | ||
| 229 | }; | 228 | }; |
| 230 | 229 | ||
| 231 | static const unsigned short init_secam[] = { | 230 | static const unsigned short init_secam[] = { |
| 232 | 0x88, 23 - 16, /* Window 1 vertical begin */ | 231 | 0x88, 23, /* Window 1 vertical begin */ |
| 233 | 0x89, 288 + 16, /* Vertical lines in (16 lines | 232 | 0x89, 288, /* Vertical lines in (16 lines |
| 234 | * skipped by the VFE) */ | 233 | * skipped by the VFE) */ |
| 235 | 0x8a, 288 + 16, /* Vertical lines out (16 lines | 234 | 0x8a, 288, /* Vertical lines out (16 lines |
| 236 | * skipped by the VFE) */ | 235 | * skipped by the VFE) */ |
| 237 | 0x8b, 16, /* Horizontal begin */ | 236 | 0x8b, 16, /* Horizontal begin */ |
| 238 | 0x8c, 768, /* Horizontal length */ | 237 | 0x8c, 768, /* Horizontal length */ |
| 239 | 0x8d, 784, /* Number of pixels | 238 | 0x8d, 784, /* Number of pixels |
| 240 | * Must be >= Horizontal begin + Horizontal length */ | 239 | * Must be >= Horizontal begin + Horizontal length */ |
| 241 | 0x8f, 0xc00, /* Disable window 2 */ | 240 | 0x8f, 0xc00, /* Disable window 2 */ |
| 242 | 0xf0, 0x177, /* 13.5 MHz transport, Forced | 241 | 0xf0, 0x77, /* 13.5 MHz transport, Forced |
| 243 | * mode, latch windows */ | 242 | * mode, latch windows */ |
| 244 | 0xf2, 0x3d5, /* SECAM, composite input */ | 243 | 0xf2, 0x3d5, /* SECAM, composite input */ |
| 245 | 0xe7, 0x261, /* PAL/SECAM set to 288 + 16 lines | 244 | 0xe7, 0x241, /* PAL/SECAM set to 288 lines */ |
| 246 | * change to 0x241 for 288 lines */ | ||
| 247 | }; | 245 | }; |
| 248 | 246 | ||
| 249 | static const unsigned char init_common[] = { | 247 | static const unsigned char init_common[] = { |
| @@ -410,6 +408,12 @@ vpx3220_command (struct i2c_client *client, | |||
| 410 | case DECODER_SET_NORM: | 408 | case DECODER_SET_NORM: |
| 411 | { | 409 | { |
| 412 | int *iarg = arg, data; | 410 | int *iarg = arg, data; |
| 411 | int temp_input; | ||
| 412 | |||
| 413 | /* Here we back up the input selection because it gets | ||
| 414 | overwritten when we fill the registers with the | ||
| 415 | choosen video norm */ | ||
| 416 | temp_input = vpx3220_fp_read(client, 0xf2); | ||
| 413 | 417 | ||
| 414 | dprintk(1, KERN_DEBUG "%s: DECODER_SET_NORM %d\n", | 418 | dprintk(1, KERN_DEBUG "%s: DECODER_SET_NORM %d\n", |
| 415 | I2C_NAME(client), *iarg); | 419 | I2C_NAME(client), *iarg); |
| @@ -449,6 +453,10 @@ vpx3220_command (struct i2c_client *client, | |||
| 449 | 453 | ||
| 450 | } | 454 | } |
| 451 | decoder->norm = *iarg; | 455 | decoder->norm = *iarg; |
| 456 | |||
| 457 | /* And here we set the backed up video input again */ | ||
| 458 | vpx3220_fp_write(client, 0xf2, temp_input | 0x0010); | ||
| 459 | udelay(10); | ||
| 452 | } | 460 | } |
| 453 | break; | 461 | break; |
| 454 | 462 | ||
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c index 429820e48c69..7de19a84dc74 100644 --- a/drivers/message/fusion/mptsas.c +++ b/drivers/message/fusion/mptsas.c | |||
| @@ -257,8 +257,8 @@ static void mptsas_print_device_pg0(SasDevicePage0_t *pg0) | |||
| 257 | printk("SAS Address=0x%llX\n", le64_to_cpu(sas_address)); | 257 | printk("SAS Address=0x%llX\n", le64_to_cpu(sas_address)); |
| 258 | printk("Target ID=0x%X\n", pg0->TargetID); | 258 | printk("Target ID=0x%X\n", pg0->TargetID); |
| 259 | printk("Bus=0x%X\n", pg0->Bus); | 259 | printk("Bus=0x%X\n", pg0->Bus); |
| 260 | printk("PhyNum=0x%X\n", pg0->PhyNum); | 260 | printk("Parent Phy Num=0x%X\n", pg0->PhyNum); |
| 261 | printk("AccessStatus=0x%X\n", le16_to_cpu(pg0->AccessStatus)); | 261 | printk("Access Status=0x%X\n", le16_to_cpu(pg0->AccessStatus)); |
| 262 | printk("Device Info=0x%X\n", le32_to_cpu(pg0->DeviceInfo)); | 262 | printk("Device Info=0x%X\n", le32_to_cpu(pg0->DeviceInfo)); |
| 263 | printk("Flags=0x%X\n", le16_to_cpu(pg0->Flags)); | 263 | printk("Flags=0x%X\n", le16_to_cpu(pg0->Flags)); |
| 264 | printk("Physical Port=0x%X\n", pg0->PhysicalPort); | 264 | printk("Physical Port=0x%X\n", pg0->PhysicalPort); |
| @@ -270,7 +270,7 @@ static void mptsas_print_expander_pg1(SasExpanderPage1_t *pg1) | |||
| 270 | printk("---- SAS EXPANDER PAGE 1 ------------\n"); | 270 | printk("---- SAS EXPANDER PAGE 1 ------------\n"); |
| 271 | 271 | ||
| 272 | printk("Physical Port=0x%X\n", pg1->PhysicalPort); | 272 | printk("Physical Port=0x%X\n", pg1->PhysicalPort); |
| 273 | printk("PHY Identifier=0x%X\n", pg1->Phy); | 273 | printk("PHY Identifier=0x%X\n", pg1->PhyIdentifier); |
| 274 | printk("Negotiated Link Rate=0x%X\n", pg1->NegotiatedLinkRate); | 274 | printk("Negotiated Link Rate=0x%X\n", pg1->NegotiatedLinkRate); |
| 275 | printk("Programmed Link Rate=0x%X\n", pg1->ProgrammedLinkRate); | 275 | printk("Programmed Link Rate=0x%X\n", pg1->ProgrammedLinkRate); |
| 276 | printk("Hardware Link Rate=0x%X\n", pg1->HwLinkRate); | 276 | printk("Hardware Link Rate=0x%X\n", pg1->HwLinkRate); |
| @@ -604,7 +604,7 @@ mptsas_sas_expander_pg1(MPT_ADAPTER *ioc, struct mptsas_phyinfo *phy_info, | |||
| 604 | mptsas_print_expander_pg1(buffer); | 604 | mptsas_print_expander_pg1(buffer); |
| 605 | 605 | ||
| 606 | /* save config data */ | 606 | /* save config data */ |
| 607 | phy_info->phy_id = buffer->Phy; | 607 | phy_info->phy_id = buffer->PhyIdentifier; |
| 608 | phy_info->port_id = buffer->PhysicalPort; | 608 | phy_info->port_id = buffer->PhysicalPort; |
| 609 | phy_info->negotiated_link_rate = buffer->NegotiatedLinkRate; | 609 | phy_info->negotiated_link_rate = buffer->NegotiatedLinkRate; |
| 610 | phy_info->programmed_link_rate = buffer->ProgrammedLinkRate; | 610 | phy_info->programmed_link_rate = buffer->ProgrammedLinkRate; |
| @@ -825,6 +825,8 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index) | |||
| 825 | mptsas_sas_device_pg0(ioc, &port_info->phy_info[i].identify, | 825 | mptsas_sas_device_pg0(ioc, &port_info->phy_info[i].identify, |
| 826 | (MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE << | 826 | (MPI_SAS_DEVICE_PGAD_FORM_GET_NEXT_HANDLE << |
| 827 | MPI_SAS_DEVICE_PGAD_FORM_SHIFT), handle); | 827 | MPI_SAS_DEVICE_PGAD_FORM_SHIFT), handle); |
| 828 | port_info->phy_info[i].identify.phy_id = | ||
| 829 | port_info->phy_info[i].phy_id; | ||
| 828 | handle = port_info->phy_info[i].identify.handle; | 830 | handle = port_info->phy_info[i].identify.handle; |
| 829 | 831 | ||
| 830 | if (port_info->phy_info[i].attached.handle) { | 832 | if (port_info->phy_info[i].attached.handle) { |
| @@ -881,6 +883,8 @@ mptsas_probe_expander_phys(MPT_ADAPTER *ioc, u32 *handle, int *index) | |||
| 881 | (MPI_SAS_DEVICE_PGAD_FORM_HANDLE << | 883 | (MPI_SAS_DEVICE_PGAD_FORM_HANDLE << |
| 882 | MPI_SAS_DEVICE_PGAD_FORM_SHIFT), | 884 | MPI_SAS_DEVICE_PGAD_FORM_SHIFT), |
| 883 | port_info->phy_info[i].identify.handle); | 885 | port_info->phy_info[i].identify.handle); |
| 886 | port_info->phy_info[i].identify.phy_id = | ||
| 887 | port_info->phy_info[i].phy_id; | ||
| 884 | } | 888 | } |
| 885 | 889 | ||
| 886 | if (port_info->phy_info[i].attached.handle) { | 890 | if (port_info->phy_info[i].attached.handle) { |
diff --git a/drivers/mfd/ucb1x00-core.c b/drivers/mfd/ucb1x00-core.c index 10f6ce1bc0ab..e335d54c4659 100644 --- a/drivers/mfd/ucb1x00-core.c +++ b/drivers/mfd/ucb1x00-core.c | |||
| @@ -457,6 +457,17 @@ static int ucb1x00_detect_irq(struct ucb1x00 *ucb) | |||
| 457 | return probe_irq_off(mask); | 457 | return probe_irq_off(mask); |
| 458 | } | 458 | } |
| 459 | 459 | ||
| 460 | static void ucb1x00_release(struct class_device *dev) | ||
| 461 | { | ||
| 462 | struct ucb1x00 *ucb = classdev_to_ucb1x00(dev); | ||
| 463 | kfree(ucb); | ||
| 464 | } | ||
| 465 | |||
| 466 | static struct class ucb1x00_class = { | ||
| 467 | .name = "ucb1x00", | ||
| 468 | .release = ucb1x00_release, | ||
| 469 | }; | ||
| 470 | |||
| 460 | static int ucb1x00_probe(struct mcp *mcp) | 471 | static int ucb1x00_probe(struct mcp *mcp) |
| 461 | { | 472 | { |
| 462 | struct ucb1x00 *ucb; | 473 | struct ucb1x00 *ucb; |
| @@ -546,17 +557,6 @@ static void ucb1x00_remove(struct mcp *mcp) | |||
| 546 | class_device_unregister(&ucb->cdev); | 557 | class_device_unregister(&ucb->cdev); |
| 547 | } | 558 | } |
| 548 | 559 | ||
| 549 | static void ucb1x00_release(struct class_device *dev) | ||
| 550 | { | ||
| 551 | struct ucb1x00 *ucb = classdev_to_ucb1x00(dev); | ||
| 552 | kfree(ucb); | ||
| 553 | } | ||
| 554 | |||
| 555 | static struct class ucb1x00_class = { | ||
| 556 | .name = "ucb1x00", | ||
| 557 | .release = ucb1x00_release, | ||
| 558 | }; | ||
| 559 | |||
| 560 | int ucb1x00_register_driver(struct ucb1x00_driver *drv) | 560 | int ucb1x00_register_driver(struct ucb1x00_driver *drv) |
| 561 | { | 561 | { |
| 562 | struct ucb1x00 *ucb; | 562 | struct ucb1x00 *ucb; |
| @@ -642,8 +642,6 @@ static void __exit ucb1x00_exit(void) | |||
| 642 | module_init(ucb1x00_init); | 642 | module_init(ucb1x00_init); |
| 643 | module_exit(ucb1x00_exit); | 643 | module_exit(ucb1x00_exit); |
| 644 | 644 | ||
| 645 | EXPORT_SYMBOL(ucb1x00_class); | ||
| 646 | |||
| 647 | EXPORT_SYMBOL(ucb1x00_io_set_dir); | 645 | EXPORT_SYMBOL(ucb1x00_io_set_dir); |
| 648 | EXPORT_SYMBOL(ucb1x00_io_write); | 646 | EXPORT_SYMBOL(ucb1x00_io_write); |
| 649 | EXPORT_SYMBOL(ucb1x00_io_read); | 647 | EXPORT_SYMBOL(ucb1x00_io_read); |
diff --git a/drivers/mfd/ucb1x00.h b/drivers/mfd/ucb1x00.h index 6b632644f59a..9c9a647d8b7b 100644 --- a/drivers/mfd/ucb1x00.h +++ b/drivers/mfd/ucb1x00.h | |||
| @@ -106,8 +106,6 @@ struct ucb1x00_irq { | |||
| 106 | void (*fn)(int, void *); | 106 | void (*fn)(int, void *); |
| 107 | }; | 107 | }; |
| 108 | 108 | ||
| 109 | extern struct class ucb1x00_class; | ||
| 110 | |||
| 111 | struct ucb1x00 { | 109 | struct ucb1x00 { |
| 112 | spinlock_t lock; | 110 | spinlock_t lock; |
| 113 | struct mcp *mcp; | 111 | struct mcp *mcp; |
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index fd62e43a3510..f264ff162979 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
| @@ -1289,12 +1289,13 @@ static void bond_mc_list_destroy(struct bonding *bond) | |||
| 1289 | /* | 1289 | /* |
| 1290 | * Copy all the Multicast addresses from src to the bonding device dst | 1290 | * Copy all the Multicast addresses from src to the bonding device dst |
| 1291 | */ | 1291 | */ |
| 1292 | static int bond_mc_list_copy(struct dev_mc_list *mc_list, struct bonding *bond, int gpf_flag) | 1292 | static int bond_mc_list_copy(struct dev_mc_list *mc_list, struct bonding *bond, |
| 1293 | gfp_t gfp_flag) | ||
| 1293 | { | 1294 | { |
| 1294 | struct dev_mc_list *dmi, *new_dmi; | 1295 | struct dev_mc_list *dmi, *new_dmi; |
| 1295 | 1296 | ||
| 1296 | for (dmi = mc_list; dmi; dmi = dmi->next) { | 1297 | for (dmi = mc_list; dmi; dmi = dmi->next) { |
| 1297 | new_dmi = kmalloc(sizeof(struct dev_mc_list), gpf_flag); | 1298 | new_dmi = kmalloc(sizeof(struct dev_mc_list), gfp_flag); |
| 1298 | 1299 | ||
| 1299 | if (!new_dmi) { | 1300 | if (!new_dmi) { |
| 1300 | /* FIXME: Potential memory leak !!! */ | 1301 | /* FIXME: Potential memory leak !!! */ |
diff --git a/drivers/net/e100.c b/drivers/net/e100.c index fbf1c06ec5c1..40887f09b681 100644 --- a/drivers/net/e100.c +++ b/drivers/net/e100.c | |||
| @@ -903,8 +903,8 @@ static void mdio_write(struct net_device *netdev, int addr, int reg, int data) | |||
| 903 | 903 | ||
| 904 | static void e100_get_defaults(struct nic *nic) | 904 | static void e100_get_defaults(struct nic *nic) |
| 905 | { | 905 | { |
| 906 | struct param_range rfds = { .min = 16, .max = 256, .count = 256 }; | 906 | struct param_range rfds = { .min = 16, .max = 256, .count = 64 }; |
| 907 | struct param_range cbs = { .min = 64, .max = 256, .count = 128 }; | 907 | struct param_range cbs = { .min = 64, .max = 256, .count = 64 }; |
| 908 | 908 | ||
| 909 | pci_read_config_byte(nic->pdev, PCI_REVISION_ID, &nic->rev_id); | 909 | pci_read_config_byte(nic->pdev, PCI_REVISION_ID, &nic->rev_id); |
| 910 | /* MAC type is encoded as rev ID; exception: ICH is treated as 82559 */ | 910 | /* MAC type is encoded as rev ID; exception: ICH is treated as 82559 */ |
| @@ -1007,213 +1007,25 @@ static void e100_configure(struct nic *nic, struct cb *cb, struct sk_buff *skb) | |||
| 1007 | c[16], c[17], c[18], c[19], c[20], c[21], c[22], c[23]); | 1007 | c[16], c[17], c[18], c[19], c[20], c[21], c[22], c[23]); |
| 1008 | } | 1008 | } |
| 1009 | 1009 | ||
| 1010 | /********************************************************/ | ||
| 1011 | /* Micro code for 8086:1229 Rev 8 */ | ||
| 1012 | /********************************************************/ | ||
| 1013 | |||
| 1014 | /* Parameter values for the D101M B-step */ | ||
| 1015 | #define D101M_CPUSAVER_TIMER_DWORD 78 | ||
| 1016 | #define D101M_CPUSAVER_BUNDLE_DWORD 65 | ||
| 1017 | #define D101M_CPUSAVER_MIN_SIZE_DWORD 126 | ||
| 1018 | |||
| 1019 | #define D101M_B_RCVBUNDLE_UCODE \ | ||
| 1020 | {\ | ||
| 1021 | 0x00550215, 0xFFFF0437, 0xFFFFFFFF, 0x06A70789, 0xFFFFFFFF, 0x0558FFFF, \ | ||
| 1022 | 0x000C0001, 0x00101312, 0x000C0008, 0x00380216, \ | ||
| 1023 | 0x0010009C, 0x00204056, 0x002380CC, 0x00380056, \ | ||
| 1024 | 0x0010009C, 0x00244C0B, 0x00000800, 0x00124818, \ | ||
| 1025 | 0x00380438, 0x00000000, 0x00140000, 0x00380555, \ | ||
| 1026 | 0x00308000, 0x00100662, 0x00100561, 0x000E0408, \ | ||
| 1027 | 0x00134861, 0x000C0002, 0x00103093, 0x00308000, \ | ||
| 1028 | 0x00100624, 0x00100561, 0x000E0408, 0x00100861, \ | ||
| 1029 | 0x000C007E, 0x00222C21, 0x000C0002, 0x00103093, \ | ||
| 1030 | 0x00380C7A, 0x00080000, 0x00103090, 0x00380C7A, \ | ||
| 1031 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1032 | 0x0010009C, 0x00244C2D, 0x00010004, 0x00041000, \ | ||
| 1033 | 0x003A0437, 0x00044010, 0x0038078A, 0x00000000, \ | ||
| 1034 | 0x00100099, 0x00206C7A, 0x0010009C, 0x00244C48, \ | ||
| 1035 | 0x00130824, 0x000C0001, 0x00101213, 0x00260C75, \ | ||
| 1036 | 0x00041000, 0x00010004, 0x00130826, 0x000C0006, \ | ||
| 1037 | 0x002206A8, 0x0013C926, 0x00101313, 0x003806A8, \ | ||
| 1038 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1039 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1040 | 0x00080600, 0x00101B10, 0x00050004, 0x00100826, \ | ||
| 1041 | 0x00101210, 0x00380C34, 0x00000000, 0x00000000, \ | ||
| 1042 | 0x0021155B, 0x00100099, 0x00206559, 0x0010009C, \ | ||
| 1043 | 0x00244559, 0x00130836, 0x000C0000, 0x00220C62, \ | ||
| 1044 | 0x000C0001, 0x00101B13, 0x00229C0E, 0x00210C0E, \ | ||
| 1045 | 0x00226C0E, 0x00216C0E, 0x0022FC0E, 0x00215C0E, \ | ||
| 1046 | 0x00214C0E, 0x00380555, 0x00010004, 0x00041000, \ | ||
| 1047 | 0x00278C67, 0x00040800, 0x00018100, 0x003A0437, \ | ||
| 1048 | 0x00130826, 0x000C0001, 0x00220559, 0x00101313, \ | ||
| 1049 | 0x00380559, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1050 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1051 | 0x00000000, 0x00130831, 0x0010090B, 0x00124813, \ | ||
| 1052 | 0x000CFF80, 0x002606AB, 0x00041000, 0x00010004, \ | ||
| 1053 | 0x003806A8, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1054 | } | ||
| 1055 | |||
| 1056 | /********************************************************/ | ||
| 1057 | /* Micro code for 8086:1229 Rev 9 */ | ||
| 1058 | /********************************************************/ | ||
| 1059 | |||
| 1060 | /* Parameter values for the D101S */ | ||
| 1061 | #define D101S_CPUSAVER_TIMER_DWORD 78 | ||
| 1062 | #define D101S_CPUSAVER_BUNDLE_DWORD 67 | ||
| 1063 | #define D101S_CPUSAVER_MIN_SIZE_DWORD 128 | ||
| 1064 | |||
| 1065 | #define D101S_RCVBUNDLE_UCODE \ | ||
| 1066 | {\ | ||
| 1067 | 0x00550242, 0xFFFF047E, 0xFFFFFFFF, 0x06FF0818, 0xFFFFFFFF, 0x05A6FFFF, \ | ||
| 1068 | 0x000C0001, 0x00101312, 0x000C0008, 0x00380243, \ | ||
| 1069 | 0x0010009C, 0x00204056, 0x002380D0, 0x00380056, \ | ||
| 1070 | 0x0010009C, 0x00244F8B, 0x00000800, 0x00124818, \ | ||
| 1071 | 0x0038047F, 0x00000000, 0x00140000, 0x003805A3, \ | ||
| 1072 | 0x00308000, 0x00100610, 0x00100561, 0x000E0408, \ | ||
| 1073 | 0x00134861, 0x000C0002, 0x00103093, 0x00308000, \ | ||
| 1074 | 0x00100624, 0x00100561, 0x000E0408, 0x00100861, \ | ||
| 1075 | 0x000C007E, 0x00222FA1, 0x000C0002, 0x00103093, \ | ||
| 1076 | 0x00380F90, 0x00080000, 0x00103090, 0x00380F90, \ | ||
| 1077 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1078 | 0x0010009C, 0x00244FAD, 0x00010004, 0x00041000, \ | ||
| 1079 | 0x003A047E, 0x00044010, 0x00380819, 0x00000000, \ | ||
| 1080 | 0x00100099, 0x00206FFD, 0x0010009A, 0x0020AFFD, \ | ||
| 1081 | 0x0010009C, 0x00244FC8, 0x00130824, 0x000C0001, \ | ||
| 1082 | 0x00101213, 0x00260FF7, 0x00041000, 0x00010004, \ | ||
| 1083 | 0x00130826, 0x000C0006, 0x00220700, 0x0013C926, \ | ||
| 1084 | 0x00101313, 0x00380700, 0x00000000, 0x00000000, \ | ||
| 1085 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1086 | 0x00080600, 0x00101B10, 0x00050004, 0x00100826, \ | ||
| 1087 | 0x00101210, 0x00380FB6, 0x00000000, 0x00000000, \ | ||
| 1088 | 0x002115A9, 0x00100099, 0x002065A7, 0x0010009A, \ | ||
| 1089 | 0x0020A5A7, 0x0010009C, 0x002445A7, 0x00130836, \ | ||
| 1090 | 0x000C0000, 0x00220FE4, 0x000C0001, 0x00101B13, \ | ||
| 1091 | 0x00229F8E, 0x00210F8E, 0x00226F8E, 0x00216F8E, \ | ||
| 1092 | 0x0022FF8E, 0x00215F8E, 0x00214F8E, 0x003805A3, \ | ||
| 1093 | 0x00010004, 0x00041000, 0x00278FE9, 0x00040800, \ | ||
| 1094 | 0x00018100, 0x003A047E, 0x00130826, 0x000C0001, \ | ||
| 1095 | 0x002205A7, 0x00101313, 0x003805A7, 0x00000000, \ | ||
| 1096 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1097 | 0x00000000, 0x00000000, 0x00000000, 0x00130831, \ | ||
| 1098 | 0x0010090B, 0x00124813, 0x000CFF80, 0x00260703, \ | ||
| 1099 | 0x00041000, 0x00010004, 0x00380700 \ | ||
| 1100 | } | ||
| 1101 | |||
| 1102 | /********************************************************/ | ||
| 1103 | /* Micro code for the 8086:1229 Rev F/10 */ | ||
| 1104 | /********************************************************/ | ||
| 1105 | |||
| 1106 | /* Parameter values for the D102 E-step */ | ||
| 1107 | #define D102_E_CPUSAVER_TIMER_DWORD 42 | ||
| 1108 | #define D102_E_CPUSAVER_BUNDLE_DWORD 54 | ||
| 1109 | #define D102_E_CPUSAVER_MIN_SIZE_DWORD 46 | ||
| 1110 | |||
| 1111 | #define D102_E_RCVBUNDLE_UCODE \ | ||
| 1112 | {\ | ||
| 1113 | 0x007D028F, 0x0E4204F9, 0x14ED0C85, 0x14FA14E9, 0x0EF70E36, 0x1FFF1FFF, \ | ||
| 1114 | 0x00E014B9, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1115 | 0x00E014BD, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1116 | 0x00E014D5, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1117 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1118 | 0x00E014C1, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1119 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1120 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1121 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1122 | 0x00E014C8, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1123 | 0x00200600, 0x00E014EE, 0x00000000, 0x00000000, \ | ||
| 1124 | 0x0030FF80, 0x00940E46, 0x00038200, 0x00102000, \ | ||
| 1125 | 0x00E00E43, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1126 | 0x00300006, 0x00E014FB, 0x00000000, 0x00000000, \ | ||
| 1127 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1128 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1129 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1130 | 0x00906E41, 0x00800E3C, 0x00E00E39, 0x00000000, \ | ||
| 1131 | 0x00906EFD, 0x00900EFD, 0x00E00EF8, 0x00000000, \ | ||
| 1132 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1133 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1134 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1135 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1136 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1137 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1138 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1139 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1140 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1141 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1142 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1143 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1144 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1145 | 0x00000000, 0x00000000, 0x00000000, 0x00000000, \ | ||
| 1146 | } | ||
| 1147 | |||
| 1148 | static void e100_load_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb) | 1010 | static void e100_load_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb) |
| 1149 | { | 1011 | { |
| 1150 | /* *INDENT-OFF* */ | 1012 | int i; |
| 1151 | static struct { | 1013 | static const u32 ucode[UCODE_SIZE] = { |
| 1152 | u32 ucode[UCODE_SIZE + 1]; | 1014 | /* NFS packets are misinterpreted as TCO packets and |
| 1153 | u8 mac; | 1015 | * incorrectly routed to the BMC over SMBus. This |
| 1154 | u8 timer_dword; | 1016 | * microcode patch checks the fragmented IP bit in the |
| 1155 | u8 bundle_dword; | 1017 | * NFS/UDP header to distinguish between NFS and TCO. */ |
| 1156 | u8 min_size_dword; | 1018 | 0x0EF70E36, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF, |
| 1157 | } ucode_opts[] = { | 1019 | 0x1FFF1FFF, 0x00906E41, 0x00800E3C, 0x00E00E39, 0x00000000, |
| 1158 | { D101M_B_RCVBUNDLE_UCODE, | 1020 | 0x00906EFD, 0x00900EFD, 0x00E00EF8, |
| 1159 | mac_82559_D101M, | 1021 | }; |
| 1160 | D101M_CPUSAVER_TIMER_DWORD, | ||
| 1161 | D101M_CPUSAVER_BUNDLE_DWORD, | ||
| 1162 | D101M_CPUSAVER_MIN_SIZE_DWORD }, | ||
| 1163 | { D101S_RCVBUNDLE_UCODE, | ||
| 1164 | mac_82559_D101S, | ||
| 1165 | D101S_CPUSAVER_TIMER_DWORD, | ||
| 1166 | D101S_CPUSAVER_BUNDLE_DWORD, | ||
| 1167 | D101S_CPUSAVER_MIN_SIZE_DWORD }, | ||
| 1168 | { D102_E_RCVBUNDLE_UCODE, | ||
| 1169 | mac_82551_F, | ||
| 1170 | D102_E_CPUSAVER_TIMER_DWORD, | ||
| 1171 | D102_E_CPUSAVER_BUNDLE_DWORD, | ||
| 1172 | D102_E_CPUSAVER_MIN_SIZE_DWORD }, | ||
| 1173 | { D102_E_RCVBUNDLE_UCODE, | ||
| 1174 | mac_82551_10, | ||
| 1175 | D102_E_CPUSAVER_TIMER_DWORD, | ||
| 1176 | D102_E_CPUSAVER_BUNDLE_DWORD, | ||
| 1177 | D102_E_CPUSAVER_MIN_SIZE_DWORD }, | ||
| 1178 | { {0}, 0, 0, 0, 0} | ||
| 1179 | }, *opts; | ||
| 1180 | /* *INDENT-ON* */ | ||
| 1181 | |||
| 1182 | #define BUNDLESMALL 1 | ||
| 1183 | #define BUNDLEMAX 50 | ||
| 1184 | #define INTDELAY 15000 | ||
| 1185 | |||
| 1186 | opts = ucode_opts; | ||
| 1187 | |||
| 1188 | /* do not load u-code for ICH devices */ | ||
| 1189 | if (nic->flags & ich) | ||
| 1190 | return; | ||
| 1191 | |||
| 1192 | /* Search for ucode match against h/w rev_id */ | ||
| 1193 | while (opts->mac) { | ||
| 1194 | if (nic->mac == opts->mac) { | ||
| 1195 | int i; | ||
| 1196 | u32 *ucode = opts->ucode; | ||
| 1197 | |||
| 1198 | /* Insert user-tunable settings */ | ||
| 1199 | ucode[opts->timer_dword] &= 0xFFFF0000; | ||
| 1200 | ucode[opts->timer_dword] |= | ||
| 1201 | (u16) INTDELAY; | ||
| 1202 | ucode[opts->bundle_dword] &= 0xFFFF0000; | ||
| 1203 | ucode[opts->bundle_dword] |= (u16) BUNDLEMAX; | ||
| 1204 | ucode[opts->min_size_dword] &= 0xFFFF0000; | ||
| 1205 | ucode[opts->min_size_dword] |= | ||
| 1206 | (BUNDLESMALL) ? 0xFFFF : 0xFF80; | ||
| 1207 | |||
| 1208 | for(i = 0; i < UCODE_SIZE; i++) | ||
| 1209 | cb->u.ucode[i] = cpu_to_le32(ucode[i]); | ||
| 1210 | cb->command = cpu_to_le16(cb_ucode); | ||
| 1211 | return; | ||
| 1212 | } | ||
| 1213 | opts++; | ||
| 1214 | } | ||
| 1215 | 1022 | ||
| 1216 | cb->command = cpu_to_le16(cb_nop); | 1023 | if(nic->mac == mac_82551_F || nic->mac == mac_82551_10) { |
| 1024 | for(i = 0; i < UCODE_SIZE; i++) | ||
| 1025 | cb->u.ucode[i] = cpu_to_le32(ucode[i]); | ||
| 1026 | cb->command = cpu_to_le16(cb_ucode); | ||
| 1027 | } else | ||
| 1028 | cb->command = cpu_to_le16(cb_nop); | ||
| 1217 | } | 1029 | } |
| 1218 | 1030 | ||
| 1219 | static void e100_setup_iaaddr(struct nic *nic, struct cb *cb, | 1031 | static void e100_setup_iaaddr(struct nic *nic, struct cb *cb, |
diff --git a/drivers/net/ns83820.c b/drivers/net/ns83820.c index 83334db2921c..e4811b42a6b7 100644 --- a/drivers/net/ns83820.c +++ b/drivers/net/ns83820.c | |||
| @@ -584,7 +584,7 @@ static inline int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb) | |||
| 584 | return 0; | 584 | return 0; |
| 585 | } | 585 | } |
| 586 | 586 | ||
| 587 | static inline int rx_refill(struct net_device *ndev, unsigned int __nocast gfp) | 587 | static inline int rx_refill(struct net_device *ndev, gfp_t gfp) |
| 588 | { | 588 | { |
| 589 | struct ns83820 *dev = PRIV(ndev); | 589 | struct ns83820 *dev = PRIV(ndev); |
| 590 | unsigned i; | 590 | unsigned i; |
diff --git a/drivers/net/sungem.h b/drivers/net/sungem.h index 16edbb1a4a7a..13006d759ad8 100644 --- a/drivers/net/sungem.h +++ b/drivers/net/sungem.h | |||
| @@ -1036,7 +1036,7 @@ struct gem { | |||
| 1036 | #define ALIGNED_RX_SKB_ADDR(addr) \ | 1036 | #define ALIGNED_RX_SKB_ADDR(addr) \ |
| 1037 | ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr)) | 1037 | ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr)) |
| 1038 | static __inline__ struct sk_buff *gem_alloc_skb(int size, | 1038 | static __inline__ struct sk_buff *gem_alloc_skb(int size, |
| 1039 | unsigned int __nocast gfp_flags) | 1039 | gfp_t gfp_flags) |
| 1040 | { | 1040 | { |
| 1041 | struct sk_buff *skb = alloc_skb(size + 64, gfp_flags); | 1041 | struct sk_buff *skb = alloc_skb(size + 64, gfp_flags); |
| 1042 | 1042 | ||
diff --git a/drivers/net/tokenring/ibmtr.c b/drivers/net/tokenring/ibmtr.c index e7b001017b9a..32057e65808b 100644 --- a/drivers/net/tokenring/ibmtr.c +++ b/drivers/net/tokenring/ibmtr.c | |||
| @@ -531,7 +531,6 @@ static int __devinit ibmtr_probe1(struct net_device *dev, int PIOaddr) | |||
| 531 | if (!time_after(jiffies, timeout)) continue; | 531 | if (!time_after(jiffies, timeout)) continue; |
| 532 | DPRINTK( "Hardware timeout during initialization.\n"); | 532 | DPRINTK( "Hardware timeout during initialization.\n"); |
| 533 | iounmap(t_mmio); | 533 | iounmap(t_mmio); |
| 534 | kfree(ti); | ||
| 535 | return -ENODEV; | 534 | return -ENODEV; |
| 536 | } | 535 | } |
| 537 | ti->sram_phys = | 536 | ti->sram_phys = |
| @@ -645,7 +644,6 @@ static int __devinit ibmtr_probe1(struct net_device *dev, int PIOaddr) | |||
| 645 | DPRINTK("Unknown shared ram paging info %01X\n", | 644 | DPRINTK("Unknown shared ram paging info %01X\n", |
| 646 | ti->shared_ram_paging); | 645 | ti->shared_ram_paging); |
| 647 | iounmap(t_mmio); | 646 | iounmap(t_mmio); |
| 648 | kfree(ti); | ||
| 649 | return -ENODEV; | 647 | return -ENODEV; |
| 650 | break; | 648 | break; |
| 651 | } /*end switch shared_ram_paging */ | 649 | } /*end switch shared_ram_paging */ |
| @@ -675,7 +673,6 @@ static int __devinit ibmtr_probe1(struct net_device *dev, int PIOaddr) | |||
| 675 | "driver limit (%05x), adapter not started.\n", | 673 | "driver limit (%05x), adapter not started.\n", |
| 676 | chk_base, ibmtr_mem_base + IBMTR_SHARED_RAM_SIZE); | 674 | chk_base, ibmtr_mem_base + IBMTR_SHARED_RAM_SIZE); |
| 677 | iounmap(t_mmio); | 675 | iounmap(t_mmio); |
| 678 | kfree(ti); | ||
| 679 | return -ENODEV; | 676 | return -ENODEV; |
| 680 | } else { /* seems cool, record what we have figured out */ | 677 | } else { /* seems cool, record what we have figured out */ |
| 681 | ti->sram_base = new_base >> 12; | 678 | ti->sram_base = new_base >> 12; |
| @@ -690,7 +687,6 @@ static int __devinit ibmtr_probe1(struct net_device *dev, int PIOaddr) | |||
| 690 | DPRINTK("Could not grab irq %d. Halting Token Ring driver.\n", | 687 | DPRINTK("Could not grab irq %d. Halting Token Ring driver.\n", |
| 691 | irq); | 688 | irq); |
| 692 | iounmap(t_mmio); | 689 | iounmap(t_mmio); |
| 693 | kfree(ti); | ||
| 694 | return -ENODEV; | 690 | return -ENODEV; |
| 695 | } | 691 | } |
| 696 | /*?? Now, allocate some of the PIO PORTs for this driver.. */ | 692 | /*?? Now, allocate some of the PIO PORTs for this driver.. */ |
| @@ -699,7 +695,6 @@ static int __devinit ibmtr_probe1(struct net_device *dev, int PIOaddr) | |||
| 699 | DPRINTK("Could not grab PIO range. Halting driver.\n"); | 695 | DPRINTK("Could not grab PIO range. Halting driver.\n"); |
| 700 | free_irq(dev->irq, dev); | 696 | free_irq(dev->irq, dev); |
| 701 | iounmap(t_mmio); | 697 | iounmap(t_mmio); |
| 702 | kfree(ti); | ||
| 703 | return -EBUSY; | 698 | return -EBUSY; |
| 704 | } | 699 | } |
| 705 | 700 | ||
diff --git a/drivers/net/wireless/Kconfig b/drivers/net/wireless/Kconfig index 00a07f32a81e..7187958e40ca 100644 --- a/drivers/net/wireless/Kconfig +++ b/drivers/net/wireless/Kconfig | |||
| @@ -243,7 +243,7 @@ config IPW_DEBUG | |||
| 243 | 243 | ||
| 244 | config AIRO | 244 | config AIRO |
| 245 | tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards" | 245 | tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards" |
| 246 | depends on NET_RADIO && ISA && (PCI || BROKEN) | 246 | depends on NET_RADIO && ISA_DMA_API && (PCI || BROKEN) |
| 247 | ---help--- | 247 | ---help--- |
| 248 | This is the standard Linux driver to support Cisco/Aironet ISA and | 248 | This is the standard Linux driver to support Cisco/Aironet ISA and |
| 249 | PCI 802.11 wireless cards. | 249 | PCI 802.11 wireless cards. |
diff --git a/drivers/net/wireless/orinoco.c b/drivers/net/wireless/orinoco.c index 6deb7cc810cc..15ceaf615756 100644 --- a/drivers/net/wireless/orinoco.c +++ b/drivers/net/wireless/orinoco.c | |||
| @@ -503,9 +503,14 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 503 | return 0; | 503 | return 0; |
| 504 | } | 504 | } |
| 505 | 505 | ||
| 506 | /* Length of the packet body */ | 506 | /* Check packet length, pad short packets, round up odd length */ |
| 507 | /* FIXME: what if the skb is smaller than this? */ | 507 | len = max_t(int, ALIGN(skb->len, 2), ETH_ZLEN); |
| 508 | len = max_t(int,skb->len - ETH_HLEN, ETH_ZLEN - ETH_HLEN); | 508 | if (skb->len < len) { |
| 509 | skb = skb_padto(skb, len); | ||
| 510 | if (skb == NULL) | ||
| 511 | goto fail; | ||
| 512 | } | ||
| 513 | len -= ETH_HLEN; | ||
| 509 | 514 | ||
| 510 | eh = (struct ethhdr *)skb->data; | 515 | eh = (struct ethhdr *)skb->data; |
| 511 | 516 | ||
| @@ -557,8 +562,7 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 557 | p = skb->data; | 562 | p = skb->data; |
| 558 | } | 563 | } |
| 559 | 564 | ||
| 560 | /* Round up for odd length packets */ | 565 | err = hermes_bap_pwrite(hw, USER_BAP, p, data_len, |
| 561 | err = hermes_bap_pwrite(hw, USER_BAP, p, ALIGN(data_len, 2), | ||
| 562 | txfid, data_off); | 566 | txfid, data_off); |
| 563 | if (err) { | 567 | if (err) { |
| 564 | printk(KERN_ERR "%s: Error %d writing packet to BAP\n", | 568 | printk(KERN_ERR "%s: Error %d writing packet to BAP\n", |
| @@ -574,8 +578,9 @@ static int orinoco_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 574 | txfid, NULL); | 578 | txfid, NULL); |
| 575 | if (err) { | 579 | if (err) { |
| 576 | netif_start_queue(dev); | 580 | netif_start_queue(dev); |
| 577 | printk(KERN_ERR "%s: Error %d transmitting packet\n", | 581 | if (net_ratelimit()) |
| 578 | dev->name, err); | 582 | printk(KERN_ERR "%s: Error %d transmitting packet\n", |
| 583 | dev->name, err); | ||
| 579 | stats->tx_errors++; | 584 | stats->tx_errors++; |
| 580 | goto fail; | 585 | goto fail; |
| 581 | } | 586 | } |
diff --git a/drivers/pci/.gitignore b/drivers/pci/.gitignore new file mode 100644 index 000000000000..f297ca8d313e --- /dev/null +++ b/drivers/pci/.gitignore | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | classlist.h | ||
| 2 | devlist.h | ||
| 3 | gen-devlist | ||
| 4 | |||
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 11ca44387cb0..7992bc8cc6a4 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
| @@ -241,7 +241,8 @@ static void __devinit quirk_s3_64M(struct pci_dev *dev) | |||
| 241 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M ); | 241 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M ); |
| 242 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M ); | 242 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M ); |
| 243 | 243 | ||
| 244 | static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsigned size, int nr) | 244 | static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, |
| 245 | unsigned size, int nr, const char *name) | ||
| 245 | { | 246 | { |
| 246 | region &= ~(size-1); | 247 | region &= ~(size-1); |
| 247 | if (region) { | 248 | if (region) { |
| @@ -259,6 +260,7 @@ static void __devinit quirk_io_region(struct pci_dev *dev, unsigned region, unsi | |||
| 259 | pcibios_bus_to_resource(dev, res, &bus_region); | 260 | pcibios_bus_to_resource(dev, res, &bus_region); |
| 260 | 261 | ||
| 261 | pci_claim_resource(dev, nr); | 262 | pci_claim_resource(dev, nr); |
| 263 | printk("PCI quirk: region %04x-%04x claimed by %s\n", region, region + size - 1, name); | ||
| 262 | } | 264 | } |
| 263 | } | 265 | } |
| 264 | 266 | ||
| @@ -291,25 +293,98 @@ static void __devinit quirk_ali7101_acpi(struct pci_dev *dev) | |||
| 291 | u16 region; | 293 | u16 region; |
| 292 | 294 | ||
| 293 | pci_read_config_word(dev, 0xE0, ®ion); | 295 | pci_read_config_word(dev, 0xE0, ®ion); |
| 294 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES); | 296 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES, "ali7101 ACPI"); |
| 295 | pci_read_config_word(dev, 0xE2, ®ion); | 297 | pci_read_config_word(dev, 0xE2, ®ion); |
| 296 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1); | 298 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1, "ali7101 SMB"); |
| 297 | } | 299 | } |
| 298 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, quirk_ali7101_acpi ); | 300 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_AL, PCI_DEVICE_ID_AL_M7101, quirk_ali7101_acpi ); |
| 299 | 301 | ||
| 302 | static void piix4_io_quirk(struct pci_dev *dev, const char *name, unsigned int port, unsigned int enable) | ||
| 303 | { | ||
| 304 | u32 devres; | ||
| 305 | u32 mask, size, base; | ||
| 306 | |||
| 307 | pci_read_config_dword(dev, port, &devres); | ||
| 308 | if ((devres & enable) != enable) | ||
| 309 | return; | ||
| 310 | mask = (devres >> 16) & 15; | ||
| 311 | base = devres & 0xffff; | ||
| 312 | size = 16; | ||
| 313 | for (;;) { | ||
| 314 | unsigned bit = size >> 1; | ||
| 315 | if ((bit & mask) == bit) | ||
| 316 | break; | ||
| 317 | size = bit; | ||
| 318 | } | ||
| 319 | /* | ||
| 320 | * For now we only print it out. Eventually we'll want to | ||
| 321 | * reserve it (at least if it's in the 0x1000+ range), but | ||
| 322 | * let's get enough confirmation reports first. | ||
| 323 | */ | ||
| 324 | base &= -size; | ||
| 325 | printk("%s PIO at %04x-%04x\n", name, base, base + size - 1); | ||
| 326 | } | ||
| 327 | |||
| 328 | static void piix4_mem_quirk(struct pci_dev *dev, const char *name, unsigned int port, unsigned int enable) | ||
| 329 | { | ||
| 330 | u32 devres; | ||
| 331 | u32 mask, size, base; | ||
| 332 | |||
| 333 | pci_read_config_dword(dev, port, &devres); | ||
| 334 | if ((devres & enable) != enable) | ||
| 335 | return; | ||
| 336 | base = devres & 0xffff0000; | ||
| 337 | mask = (devres & 0x3f) << 16; | ||
| 338 | size = 128 << 16; | ||
| 339 | for (;;) { | ||
| 340 | unsigned bit = size >> 1; | ||
| 341 | if ((bit & mask) == bit) | ||
| 342 | break; | ||
| 343 | size = bit; | ||
| 344 | } | ||
| 345 | /* | ||
| 346 | * For now we only print it out. Eventually we'll want to | ||
| 347 | * reserve it, but let's get enough confirmation reports first. | ||
| 348 | */ | ||
| 349 | base &= -size; | ||
| 350 | printk("%s MMIO at %04x-%04x\n", name, base, base + size - 1); | ||
| 351 | } | ||
| 352 | |||
| 300 | /* | 353 | /* |
| 301 | * PIIX4 ACPI: Two IO regions pointed to by longwords at | 354 | * PIIX4 ACPI: Two IO regions pointed to by longwords at |
| 302 | * 0x40 (64 bytes of ACPI registers) | 355 | * 0x40 (64 bytes of ACPI registers) |
| 303 | * 0x90 (32 bytes of SMB registers) | 356 | * 0x90 (32 bytes of SMB registers) |
| 357 | * and a few strange programmable PIIX4 device resources. | ||
| 304 | */ | 358 | */ |
| 305 | static void __devinit quirk_piix4_acpi(struct pci_dev *dev) | 359 | static void __devinit quirk_piix4_acpi(struct pci_dev *dev) |
| 306 | { | 360 | { |
| 307 | u32 region; | 361 | u32 region, res_a; |
| 308 | 362 | ||
| 309 | pci_read_config_dword(dev, 0x40, ®ion); | 363 | pci_read_config_dword(dev, 0x40, ®ion); |
| 310 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES); | 364 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES, "PIIX4 ACPI"); |
| 311 | pci_read_config_dword(dev, 0x90, ®ion); | 365 | pci_read_config_dword(dev, 0x90, ®ion); |
| 312 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1); | 366 | quirk_io_region(dev, region, 32, PCI_BRIDGE_RESOURCES+1, "PIIX4 SMB"); |
| 367 | |||
| 368 | /* Device resource A has enables for some of the other ones */ | ||
| 369 | pci_read_config_dword(dev, 0x5c, &res_a); | ||
| 370 | |||
| 371 | piix4_io_quirk(dev, "PIIX4 devres B", 0x60, 3 << 21); | ||
| 372 | piix4_io_quirk(dev, "PIIX4 devres C", 0x64, 3 << 21); | ||
| 373 | |||
| 374 | /* Device resource D is just bitfields for static resources */ | ||
| 375 | |||
| 376 | /* Device 12 enabled? */ | ||
| 377 | if (res_a & (1 << 29)) { | ||
| 378 | piix4_io_quirk(dev, "PIIX4 devres E", 0x68, 1 << 20); | ||
| 379 | piix4_mem_quirk(dev, "PIIX4 devres F", 0x6c, 1 << 7); | ||
| 380 | } | ||
| 381 | /* Device 13 enabled? */ | ||
| 382 | if (res_a & (1 << 30)) { | ||
| 383 | piix4_io_quirk(dev, "PIIX4 devres G", 0x70, 1 << 20); | ||
| 384 | piix4_mem_quirk(dev, "PIIX4 devres H", 0x74, 1 << 7); | ||
| 385 | } | ||
| 386 | piix4_io_quirk(dev, "PIIX4 devres I", 0x78, 1 << 20); | ||
| 387 | piix4_io_quirk(dev, "PIIX4 devres J", 0x7c, 1 << 20); | ||
| 313 | } | 388 | } |
| 314 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, quirk_piix4_acpi ); | 389 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82371AB_3, quirk_piix4_acpi ); |
| 315 | 390 | ||
| @@ -323,10 +398,10 @@ static void __devinit quirk_ich4_lpc_acpi(struct pci_dev *dev) | |||
| 323 | u32 region; | 398 | u32 region; |
| 324 | 399 | ||
| 325 | pci_read_config_dword(dev, 0x40, ®ion); | 400 | pci_read_config_dword(dev, 0x40, ®ion); |
| 326 | quirk_io_region(dev, region, 128, PCI_BRIDGE_RESOURCES); | 401 | quirk_io_region(dev, region, 128, PCI_BRIDGE_RESOURCES, "ICH4 ACPI/GPIO/TCO"); |
| 327 | 402 | ||
| 328 | pci_read_config_dword(dev, 0x58, ®ion); | 403 | pci_read_config_dword(dev, 0x58, ®ion); |
| 329 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES+1); | 404 | quirk_io_region(dev, region, 64, PCI_BRIDGE_RESOURCES+1, "ICH4 GPIO"); |
| 330 | } | 405 | } |
| 331 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, quirk_ich4_lpc_acpi ); | 406 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AA_0, quirk_ich4_lpc_acpi ); |
| 332 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AB_0, quirk_ich4_lpc_acpi ); | 407 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82801AB_0, quirk_ich4_lpc_acpi ); |
| @@ -352,7 +427,7 @@ static void __devinit quirk_vt82c586_acpi(struct pci_dev *dev) | |||
| 352 | if (rev & 0x10) { | 427 | if (rev & 0x10) { |
| 353 | pci_read_config_dword(dev, 0x48, ®ion); | 428 | pci_read_config_dword(dev, 0x48, ®ion); |
| 354 | region &= PCI_BASE_ADDRESS_IO_MASK; | 429 | region &= PCI_BASE_ADDRESS_IO_MASK; |
| 355 | quirk_io_region(dev, region, 256, PCI_BRIDGE_RESOURCES); | 430 | quirk_io_region(dev, region, 256, PCI_BRIDGE_RESOURCES, "vt82c586 ACPI"); |
| 356 | } | 431 | } |
| 357 | } | 432 | } |
| 358 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_vt82c586_acpi ); | 433 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C586_3, quirk_vt82c586_acpi ); |
| @@ -372,11 +447,11 @@ static void __devinit quirk_vt82c686_acpi(struct pci_dev *dev) | |||
| 372 | 447 | ||
| 373 | pci_read_config_word(dev, 0x70, &hm); | 448 | pci_read_config_word(dev, 0x70, &hm); |
| 374 | hm &= PCI_BASE_ADDRESS_IO_MASK; | 449 | hm &= PCI_BASE_ADDRESS_IO_MASK; |
| 375 | quirk_io_region(dev, hm, 128, PCI_BRIDGE_RESOURCES + 1); | 450 | quirk_io_region(dev, hm, 128, PCI_BRIDGE_RESOURCES + 1, "vt82c868 HW-mon"); |
| 376 | 451 | ||
| 377 | pci_read_config_dword(dev, 0x90, &smb); | 452 | pci_read_config_dword(dev, 0x90, &smb); |
| 378 | smb &= PCI_BASE_ADDRESS_IO_MASK; | 453 | smb &= PCI_BASE_ADDRESS_IO_MASK; |
| 379 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 2); | 454 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 2, "vt82c868 SMB"); |
| 380 | } | 455 | } |
| 381 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_vt82c686_acpi ); | 456 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686_4, quirk_vt82c686_acpi ); |
| 382 | 457 | ||
| @@ -391,11 +466,11 @@ static void __devinit quirk_vt8235_acpi(struct pci_dev *dev) | |||
| 391 | 466 | ||
| 392 | pci_read_config_word(dev, 0x88, &pm); | 467 | pci_read_config_word(dev, 0x88, &pm); |
| 393 | pm &= PCI_BASE_ADDRESS_IO_MASK; | 468 | pm &= PCI_BASE_ADDRESS_IO_MASK; |
| 394 | quirk_io_region(dev, pm, 128, PCI_BRIDGE_RESOURCES); | 469 | quirk_io_region(dev, pm, 128, PCI_BRIDGE_RESOURCES, "vt8235 PM"); |
| 395 | 470 | ||
| 396 | pci_read_config_word(dev, 0xd0, &smb); | 471 | pci_read_config_word(dev, 0xd0, &smb); |
| 397 | smb &= PCI_BASE_ADDRESS_IO_MASK; | 472 | smb &= PCI_BASE_ADDRESS_IO_MASK; |
| 398 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 1); | 473 | quirk_io_region(dev, smb, 16, PCI_BRIDGE_RESOURCES + 1, "vt8235 SMB"); |
| 399 | } | 474 | } |
| 400 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); | 475 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_8235, quirk_vt8235_acpi); |
| 401 | 476 | ||
| @@ -1233,7 +1308,7 @@ static void __init quirk_alder_ioapic(struct pci_dev *pdev) | |||
| 1233 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic ); | 1308 | DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_EESSC, quirk_alder_ioapic ); |
| 1234 | #endif | 1309 | #endif |
| 1235 | 1310 | ||
| 1236 | #ifdef CONFIG_SCSI_SATA | 1311 | #ifdef CONFIG_SCSI_SATA_INTEL_COMBINED |
| 1237 | static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) | 1312 | static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) |
| 1238 | { | 1313 | { |
| 1239 | u8 prog, comb, tmp; | 1314 | u8 prog, comb, tmp; |
| @@ -1310,7 +1385,7 @@ static void __devinit quirk_intel_ide_combined(struct pci_dev *pdev) | |||
| 1310 | request_region(0x170, 8, "libata"); /* port 1 */ | 1385 | request_region(0x170, 8, "libata"); /* port 1 */ |
| 1311 | } | 1386 | } |
| 1312 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_intel_ide_combined ); | 1387 | DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, quirk_intel_ide_combined ); |
| 1313 | #endif /* CONFIG_SCSI_SATA */ | 1388 | #endif /* CONFIG_SCSI_SATA_INTEL_COMBINED */ |
| 1314 | 1389 | ||
| 1315 | 1390 | ||
| 1316 | int pcie_mch_quirk; | 1391 | int pcie_mch_quirk; |
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index 657be948baf7..28ce3a7ee434 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c | |||
| @@ -40,7 +40,7 @@ | |||
| 40 | * FIXME: IO should be max 256 bytes. However, since we may | 40 | * FIXME: IO should be max 256 bytes. However, since we may |
| 41 | * have a P2P bridge below a cardbus bridge, we need 4K. | 41 | * have a P2P bridge below a cardbus bridge, we need 4K. |
| 42 | */ | 42 | */ |
| 43 | #define CARDBUS_IO_SIZE (4*1024) | 43 | #define CARDBUS_IO_SIZE (256) |
| 44 | #define CARDBUS_MEM_SIZE (32*1024*1024) | 44 | #define CARDBUS_MEM_SIZE (32*1024*1024) |
| 45 | 45 | ||
| 46 | static void __devinit | 46 | static void __devinit |
diff --git a/drivers/pcmcia/cs.c b/drivers/pcmcia/cs.c index fabd3529cebc..d5e76423a0ee 100644 --- a/drivers/pcmcia/cs.c +++ b/drivers/pcmcia/cs.c | |||
| @@ -689,6 +689,9 @@ static int pccardd(void *__skt) | |||
| 689 | schedule(); | 689 | schedule(); |
| 690 | try_to_freeze(); | 690 | try_to_freeze(); |
| 691 | } | 691 | } |
| 692 | /* make sure we are running before we exit */ | ||
| 693 | set_current_state(TASK_RUNNING); | ||
| 694 | |||
| 692 | remove_wait_queue(&skt->thread_wait, &wait); | 695 | remove_wait_queue(&skt->thread_wait, &wait); |
| 693 | 696 | ||
| 694 | /* remove from the device core */ | 697 | /* remove from the device core */ |
diff --git a/drivers/pcmcia/soc_common.c b/drivers/pcmcia/soc_common.c index 888b70e6a484..9e7ccd8a4321 100644 --- a/drivers/pcmcia/soc_common.c +++ b/drivers/pcmcia/soc_common.c | |||
| @@ -66,7 +66,7 @@ void soc_pcmcia_debug(struct soc_pcmcia_socket *skt, const char *func, | |||
| 66 | if (pc_debug > lvl) { | 66 | if (pc_debug > lvl) { |
| 67 | printk(KERN_DEBUG "skt%u: %s: ", skt->nr, func); | 67 | printk(KERN_DEBUG "skt%u: %s: ", skt->nr, func); |
| 68 | va_start(args, fmt); | 68 | va_start(args, fmt); |
| 69 | printk(fmt, args); | 69 | vprintk(fmt, args); |
| 70 | va_end(args); | 70 | va_end(args); |
| 71 | } | 71 | } |
| 72 | } | 72 | } |
| @@ -321,8 +321,6 @@ soc_common_pcmcia_get_socket(struct pcmcia_socket *sock, socket_state_t *state) | |||
| 321 | * less punt all of this work and let the kernel handle the details | 321 | * less punt all of this work and let the kernel handle the details |
| 322 | * of power configuration, reset, &c. We also record the value of | 322 | * of power configuration, reset, &c. We also record the value of |
| 323 | * `state' in order to regurgitate it to the PCMCIA core later. | 323 | * `state' in order to regurgitate it to the PCMCIA core later. |
| 324 | * | ||
| 325 | * Returns: 0 | ||
| 326 | */ | 324 | */ |
| 327 | static int | 325 | static int |
| 328 | soc_common_pcmcia_set_socket(struct pcmcia_socket *sock, socket_state_t *state) | 326 | soc_common_pcmcia_set_socket(struct pcmcia_socket *sock, socket_state_t *state) |
| @@ -407,7 +405,7 @@ soc_common_pcmcia_set_io_map(struct pcmcia_socket *sock, struct pccard_io_map *m | |||
| 407 | * the map speed as requested, but override the address ranges | 405 | * the map speed as requested, but override the address ranges |
| 408 | * supplied by Card Services. | 406 | * supplied by Card Services. |
| 409 | * | 407 | * |
| 410 | * Returns: 0 on success, -1 on error | 408 | * Returns: 0 on success, -ERRNO on error |
| 411 | */ | 409 | */ |
| 412 | static int | 410 | static int |
| 413 | soc_common_pcmcia_set_mem_map(struct pcmcia_socket *sock, struct pccard_mem_map *map) | 411 | soc_common_pcmcia_set_mem_map(struct pcmcia_socket *sock, struct pccard_mem_map *map) |
| @@ -655,8 +653,8 @@ static void soc_pcmcia_cpufreq_unregister(void) | |||
| 655 | } | 653 | } |
| 656 | 654 | ||
| 657 | #else | 655 | #else |
| 658 | #define soc_pcmcia_cpufreq_register() | 656 | static int soc_pcmcia_cpufreq_register(void) { return 0; } |
| 659 | #define soc_pcmcia_cpufreq_unregister() | 657 | static void soc_pcmcia_cpufreq_unregister(void) {} |
| 660 | #endif | 658 | #endif |
| 661 | 659 | ||
| 662 | int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops, int first, int nr) | 660 | int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops, int first, int nr) |
| @@ -738,7 +736,7 @@ int soc_common_drv_pcmcia_probe(struct device *dev, struct pcmcia_low_level *ops | |||
| 738 | goto out_err_5; | 736 | goto out_err_5; |
| 739 | } | 737 | } |
| 740 | 738 | ||
| 741 | if ( list_empty(&soc_pcmcia_sockets) ) | 739 | if (list_empty(&soc_pcmcia_sockets)) |
| 742 | soc_pcmcia_cpufreq_register(); | 740 | soc_pcmcia_cpufreq_register(); |
| 743 | 741 | ||
| 744 | list_add(&skt->node, &soc_pcmcia_sockets); | 742 | list_add(&skt->node, &soc_pcmcia_sockets); |
| @@ -839,7 +837,7 @@ int soc_common_drv_pcmcia_remove(struct device *dev) | |||
| 839 | release_resource(&skt->res_io); | 837 | release_resource(&skt->res_io); |
| 840 | release_resource(&skt->res_skt); | 838 | release_resource(&skt->res_skt); |
| 841 | } | 839 | } |
| 842 | if ( list_empty(&soc_pcmcia_sockets) ) | 840 | if (list_empty(&soc_pcmcia_sockets)) |
| 843 | soc_pcmcia_cpufreq_unregister(); | 841 | soc_pcmcia_cpufreq_unregister(); |
| 844 | 842 | ||
| 845 | up(&soc_pcmcia_sockets_lock); | 843 | up(&soc_pcmcia_sockets_lock); |
diff --git a/drivers/pcmcia/ti113x.h b/drivers/pcmcia/ti113x.h index da0b404561c9..539b5cd1a598 100644 --- a/drivers/pcmcia/ti113x.h +++ b/drivers/pcmcia/ti113x.h | |||
| @@ -873,6 +873,7 @@ static int ti1250_override(struct yenta_socket *socket) | |||
| 873 | * Some fixup code to make everybody happy (TM). | 873 | * Some fixup code to make everybody happy (TM). |
| 874 | */ | 874 | */ |
| 875 | 875 | ||
| 876 | #ifdef CONFIG_CARDBUS | ||
| 876 | /** | 877 | /** |
| 877 | * set/clear various test bits: | 878 | * set/clear various test bits: |
| 878 | * Defaults to clear the bit. | 879 | * Defaults to clear the bit. |
| @@ -927,7 +928,6 @@ static void ene_tune_bridge(struct pcmcia_socket *sock, struct pci_bus *bus) | |||
| 927 | config_writeb(socket, ENE_TEST_C9, test_c9); | 928 | config_writeb(socket, ENE_TEST_C9, test_c9); |
| 928 | } | 929 | } |
| 929 | 930 | ||
| 930 | |||
| 931 | static int ene_override(struct yenta_socket *socket) | 931 | static int ene_override(struct yenta_socket *socket) |
| 932 | { | 932 | { |
| 933 | /* install tune_bridge() function */ | 933 | /* install tune_bridge() function */ |
| @@ -935,6 +935,9 @@ static int ene_override(struct yenta_socket *socket) | |||
| 935 | 935 | ||
| 936 | return ti1250_override(socket); | 936 | return ti1250_override(socket); |
| 937 | } | 937 | } |
| 938 | #else | ||
| 939 | # define ene_override ti1250_override | ||
| 940 | #endif | ||
| 938 | 941 | ||
| 939 | #endif /* _LINUX_TI113X_H */ | 942 | #endif /* _LINUX_TI113X_H */ |
| 940 | 943 | ||
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c index 14c76f5e4177..9adc11e8b8bc 100644 --- a/drivers/s390/cio/device.c +++ b/drivers/s390/cio/device.c | |||
| @@ -544,7 +544,7 @@ get_disc_ccwdev_by_devno(unsigned int devno, struct ccw_device *sibling) | |||
| 544 | .sibling = sibling, | 544 | .sibling = sibling, |
| 545 | }; | 545 | }; |
| 546 | 546 | ||
| 547 | dev = bus_find_device(&css_bus_type, NULL, &data, match_devno); | 547 | dev = bus_find_device(&ccw_bus_type, NULL, &data, match_devno); |
| 548 | 548 | ||
| 549 | return dev ? to_ccwdev(dev) : NULL; | 549 | return dev ? to_ccwdev(dev) : NULL; |
| 550 | } | 550 | } |
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c index 0b5087f7cabc..cab098556b44 100644 --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c | |||
| @@ -833,7 +833,7 @@ zfcp_unit_dequeue(struct zfcp_unit *unit) | |||
| 833 | } | 833 | } |
| 834 | 834 | ||
| 835 | static void * | 835 | static void * |
| 836 | zfcp_mempool_alloc(unsigned int __nocast gfp_mask, void *size) | 836 | zfcp_mempool_alloc(gfp_t gfp_mask, void *size) |
| 837 | { | 837 | { |
| 838 | return kmalloc((size_t) size, gfp_mask); | 838 | return kmalloc((size_t) size, gfp_mask); |
| 839 | } | 839 | } |
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig index 20019b82b4a8..3ee9b8b33be0 100644 --- a/drivers/scsi/Kconfig +++ b/drivers/scsi/Kconfig | |||
| @@ -553,6 +553,11 @@ config SCSI_SATA_VITESSE | |||
| 553 | 553 | ||
| 554 | If unsure, say N. | 554 | If unsure, say N. |
| 555 | 555 | ||
| 556 | config SCSI_SATA_INTEL_COMBINED | ||
| 557 | bool | ||
| 558 | depends on IDE=y && !BLK_DEV_IDE_SATA && (SCSI_SATA_AHCI || SCSI_ATA_PIIX) | ||
| 559 | default y | ||
| 560 | |||
| 556 | config SCSI_BUSLOGIC | 561 | config SCSI_BUSLOGIC |
| 557 | tristate "BusLogic SCSI support" | 562 | tristate "BusLogic SCSI support" |
| 558 | depends on (PCI || ISA || MCA) && SCSI && ISA_DMA_API | 563 | depends on (PCI || ISA || MCA) && SCSI && ISA_DMA_API |
diff --git a/drivers/scsi/NCR5380.c b/drivers/scsi/NCR5380.c index d40ba0bd68a3..23392ae7df8b 100644 --- a/drivers/scsi/NCR5380.c +++ b/drivers/scsi/NCR5380.c | |||
| @@ -91,7 +91,7 @@ | |||
| 91 | #ifndef NDEBUG | 91 | #ifndef NDEBUG |
| 92 | #define NDEBUG 0 | 92 | #define NDEBUG 0 |
| 93 | #endif | 93 | #endif |
| 94 | #ifndef NDEBUG | 94 | #ifndef NDEBUG_ABORT |
| 95 | #define NDEBUG_ABORT 0 | 95 | #define NDEBUG_ABORT 0 |
| 96 | #endif | 96 | #endif |
| 97 | 97 | ||
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 4a99d2f000f4..d54b1cc88d0d 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #define AAC_MAX_LUN (8) | 19 | #define AAC_MAX_LUN (8) |
| 20 | 20 | ||
| 21 | #define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff) | 21 | #define AAC_MAX_HOSTPHYSMEMPAGES (0xfffff) |
| 22 | #define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)512) | 22 | #define AAC_MAX_32BIT_SGBCOUNT ((unsigned short)256) |
| 23 | 23 | ||
| 24 | /* | 24 | /* |
| 25 | * These macros convert from physical channels to virtual channels | 25 | * These macros convert from physical channels to virtual channels |
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c index de8490a92831..a1f9ceef0ac9 100644 --- a/drivers/scsi/aacraid/linit.c +++ b/drivers/scsi/aacraid/linit.c | |||
| @@ -453,9 +453,9 @@ static int aac_eh_reset(struct scsi_cmnd* cmd) | |||
| 453 | /* | 453 | /* |
| 454 | * We can exit If all the commands are complete | 454 | * We can exit If all the commands are complete |
| 455 | */ | 455 | */ |
| 456 | spin_unlock_irq(host->host_lock); | ||
| 456 | if (active == 0) | 457 | if (active == 0) |
| 457 | return SUCCESS; | 458 | return SUCCESS; |
| 458 | spin_unlock_irq(host->host_lock); | ||
| 459 | ssleep(1); | 459 | ssleep(1); |
| 460 | spin_lock_irq(host->host_lock); | 460 | spin_lock_irq(host->host_lock); |
| 461 | } | 461 | } |
diff --git a/drivers/scsi/megaraid/megaraid_sas.c b/drivers/scsi/megaraid/megaraid_sas.c index 1b3148e842af..c3f637395734 100644 --- a/drivers/scsi/megaraid/megaraid_sas.c +++ b/drivers/scsi/megaraid/megaraid_sas.c | |||
| @@ -34,6 +34,7 @@ | |||
| 34 | #include <linux/delay.h> | 34 | #include <linux/delay.h> |
| 35 | #include <linux/uio.h> | 35 | #include <linux/uio.h> |
| 36 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
| 37 | #include <linux/fs.h> | ||
| 37 | #include <linux/compat.h> | 38 | #include <linux/compat.h> |
| 38 | 39 | ||
| 39 | #include <scsi/scsi.h> | 40 | #include <scsi/scsi.h> |
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 8982978c42fd..7aec93f9d423 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
| @@ -1325,6 +1325,8 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
| 1325 | ha->brd_info = brd_info; | 1325 | ha->brd_info = brd_info; |
| 1326 | sprintf(ha->host_str, "%s_%ld", ha->brd_info->drv_name, ha->host_no); | 1326 | sprintf(ha->host_str, "%s_%ld", ha->brd_info->drv_name, ha->host_no); |
| 1327 | 1327 | ||
| 1328 | ha->dpc_pid = -1; | ||
| 1329 | |||
| 1328 | /* Configure PCI I/O space */ | 1330 | /* Configure PCI I/O space */ |
| 1329 | ret = qla2x00_iospace_config(ha); | 1331 | ret = qla2x00_iospace_config(ha); |
| 1330 | if (ret) | 1332 | if (ret) |
| @@ -1448,7 +1450,6 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
| 1448 | */ | 1450 | */ |
| 1449 | spin_lock_init(&ha->mbx_reg_lock); | 1451 | spin_lock_init(&ha->mbx_reg_lock); |
| 1450 | 1452 | ||
| 1451 | ha->dpc_pid = -1; | ||
| 1452 | init_completion(&ha->dpc_inited); | 1453 | init_completion(&ha->dpc_inited); |
| 1453 | init_completion(&ha->dpc_exited); | 1454 | init_completion(&ha->dpc_exited); |
| 1454 | 1455 | ||
diff --git a/drivers/scsi/qlogicpti.c b/drivers/scsi/qlogicpti.c index a917ab7475ac..1fd5fc6d0fe3 100644 --- a/drivers/scsi/qlogicpti.c +++ b/drivers/scsi/qlogicpti.c | |||
| @@ -1119,6 +1119,36 @@ static inline void update_can_queue(struct Scsi_Host *host, u_int in_ptr, u_int | |||
| 1119 | host->sg_tablesize = QLOGICPTI_MAX_SG(num_free); | 1119 | host->sg_tablesize = QLOGICPTI_MAX_SG(num_free); |
| 1120 | } | 1120 | } |
| 1121 | 1121 | ||
| 1122 | static unsigned int scsi_rbuf_get(struct scsi_cmnd *cmd, unsigned char **buf_out) | ||
| 1123 | { | ||
| 1124 | unsigned char *buf; | ||
| 1125 | unsigned int buflen; | ||
| 1126 | |||
| 1127 | if (cmd->use_sg) { | ||
| 1128 | struct scatterlist *sg; | ||
| 1129 | |||
| 1130 | sg = (struct scatterlist *) cmd->request_buffer; | ||
| 1131 | buf = kmap_atomic(sg->page, KM_IRQ0) + sg->offset; | ||
| 1132 | buflen = sg->length; | ||
| 1133 | } else { | ||
| 1134 | buf = cmd->request_buffer; | ||
| 1135 | buflen = cmd->request_bufflen; | ||
| 1136 | } | ||
| 1137 | |||
| 1138 | *buf_out = buf; | ||
| 1139 | return buflen; | ||
| 1140 | } | ||
| 1141 | |||
| 1142 | static void scsi_rbuf_put(struct scsi_cmnd *cmd, unsigned char *buf) | ||
| 1143 | { | ||
| 1144 | if (cmd->use_sg) { | ||
| 1145 | struct scatterlist *sg; | ||
| 1146 | |||
| 1147 | sg = (struct scatterlist *) cmd->request_buffer; | ||
| 1148 | kunmap_atomic(buf - sg->offset, KM_IRQ0); | ||
| 1149 | } | ||
| 1150 | } | ||
| 1151 | |||
| 1122 | /* | 1152 | /* |
| 1123 | * Until we scan the entire bus with inquiries, go throught this fella... | 1153 | * Until we scan the entire bus with inquiries, go throught this fella... |
| 1124 | */ | 1154 | */ |
| @@ -1145,11 +1175,9 @@ static void ourdone(struct scsi_cmnd *Cmnd) | |||
| 1145 | int ok = host_byte(Cmnd->result) == DID_OK; | 1175 | int ok = host_byte(Cmnd->result) == DID_OK; |
| 1146 | if (Cmnd->cmnd[0] == 0x12 && ok) { | 1176 | if (Cmnd->cmnd[0] == 0x12 && ok) { |
| 1147 | unsigned char *iqd; | 1177 | unsigned char *iqd; |
| 1178 | unsigned int iqd_len; | ||
| 1148 | 1179 | ||
| 1149 | if (Cmnd->use_sg != 0) | 1180 | iqd_len = scsi_rbuf_get(Cmnd, &iqd); |
| 1150 | BUG(); | ||
| 1151 | |||
| 1152 | iqd = ((unsigned char *)Cmnd->buffer); | ||
| 1153 | 1181 | ||
| 1154 | /* tags handled in midlayer */ | 1182 | /* tags handled in midlayer */ |
| 1155 | /* enable sync mode? */ | 1183 | /* enable sync mode? */ |
| @@ -1163,6 +1191,9 @@ static void ourdone(struct scsi_cmnd *Cmnd) | |||
| 1163 | if (iqd[7] & 0x20) { | 1191 | if (iqd[7] & 0x20) { |
| 1164 | qpti->dev_param[tgt].device_flags |= 0x20; | 1192 | qpti->dev_param[tgt].device_flags |= 0x20; |
| 1165 | } | 1193 | } |
| 1194 | |||
| 1195 | scsi_rbuf_put(Cmnd, iqd); | ||
| 1196 | |||
| 1166 | qpti->sbits |= (1 << tgt); | 1197 | qpti->sbits |= (1 << tgt); |
| 1167 | } else if (!ok) { | 1198 | } else if (!ok) { |
| 1168 | qpti->sbits |= (1 << tgt); | 1199 | qpti->sbits |= (1 << tgt); |
diff --git a/drivers/scsi/sata_nv.c b/drivers/scsi/sata_nv.c index c05653c7779d..cb832b03ec5e 100644 --- a/drivers/scsi/sata_nv.c +++ b/drivers/scsi/sata_nv.c | |||
| @@ -29,6 +29,8 @@ | |||
| 29 | * NV-specific details such as register offsets, SATA phy location, | 29 | * NV-specific details such as register offsets, SATA phy location, |
| 30 | * hotplug info, etc. | 30 | * hotplug info, etc. |
| 31 | * | 31 | * |
| 32 | * 0.09 | ||
| 33 | * - Fixed bug introduced by 0.08's MCP51 and MCP55 support. | ||
| 32 | * | 34 | * |
| 33 | * 0.08 | 35 | * 0.08 |
| 34 | * - Added support for MCP51 and MCP55. | 36 | * - Added support for MCP51 and MCP55. |
| @@ -132,9 +134,7 @@ enum nv_host_type | |||
| 132 | GENERIC, | 134 | GENERIC, |
| 133 | NFORCE2, | 135 | NFORCE2, |
| 134 | NFORCE3, | 136 | NFORCE3, |
| 135 | CK804, | 137 | CK804 |
| 136 | MCP51, | ||
| 137 | MCP55 | ||
| 138 | }; | 138 | }; |
| 139 | 139 | ||
| 140 | static struct pci_device_id nv_pci_tbl[] = { | 140 | static struct pci_device_id nv_pci_tbl[] = { |
| @@ -153,13 +153,13 @@ static struct pci_device_id nv_pci_tbl[] = { | |||
| 153 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2, | 153 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2, |
| 154 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, | 154 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, |
| 155 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA, | 155 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA, |
| 156 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP51 }, | 156 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, |
| 157 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2, | 157 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2, |
| 158 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP51 }, | 158 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, |
| 159 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA, | 159 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA, |
| 160 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP55 }, | 160 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, |
| 161 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2, | 161 | { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2, |
| 162 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, MCP55 }, | 162 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, GENERIC }, |
| 163 | { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, | 163 | { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, |
| 164 | PCI_ANY_ID, PCI_ANY_ID, | 164 | PCI_ANY_ID, PCI_ANY_ID, |
| 165 | PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC }, | 165 | PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC }, |
diff --git a/drivers/scsi/scsi_devinfo.c b/drivers/scsi/scsi_devinfo.c index 64fc9e21f35b..e69477d1889b 100644 --- a/drivers/scsi/scsi_devinfo.c +++ b/drivers/scsi/scsi_devinfo.c | |||
| @@ -185,6 +185,7 @@ static struct { | |||
| 185 | {"PIONEER", "CD-ROM DRM-600", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | 185 | {"PIONEER", "CD-ROM DRM-600", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, |
| 186 | {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | 186 | {"PIONEER", "CD-ROM DRM-602X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, |
| 187 | {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | 187 | {"PIONEER", "CD-ROM DRM-604X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, |
| 188 | {"PIONEER", "CD-ROM DRM-624X", NULL, BLIST_FORCELUN | BLIST_SINGLELUN}, | ||
| 188 | {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN}, | 189 | {"REGAL", "CDC-4X", NULL, BLIST_MAX5LUN | BLIST_SINGLELUN}, |
| 189 | {"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN}, | 190 | {"SanDisk", "ImageMate CF-SD1", NULL, BLIST_FORCELUN}, |
| 190 | {"SEAGATE", "ST34555N", "0930", BLIST_NOTQ}, /* Chokes on tagged INQUIRY */ | 191 | {"SEAGATE", "ST34555N", "0930", BLIST_NOTQ}, /* Chokes on tagged INQUIRY */ |
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index ad5342165079..52b348c36d56 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c | |||
| @@ -1645,6 +1645,8 @@ int scsi_error_handler(void *data) | |||
| 1645 | set_current_state(TASK_INTERRUPTIBLE); | 1645 | set_current_state(TASK_INTERRUPTIBLE); |
| 1646 | } | 1646 | } |
| 1647 | 1647 | ||
| 1648 | __set_current_state(TASK_RUNNING); | ||
| 1649 | |||
| 1648 | SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler scsi_eh_%d" | 1650 | SCSI_LOG_ERROR_RECOVERY(1, printk("Error handler scsi_eh_%d" |
| 1649 | " exiting\n",shost->host_no)); | 1651 | " exiting\n",shost->host_no)); |
| 1650 | 1652 | ||
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index dc9c772bc874..0074f28c37b2 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
| @@ -97,7 +97,6 @@ int scsi_insert_special_req(struct scsi_request *sreq, int at_head) | |||
| 97 | } | 97 | } |
| 98 | 98 | ||
| 99 | static void scsi_run_queue(struct request_queue *q); | 99 | static void scsi_run_queue(struct request_queue *q); |
| 100 | static void scsi_release_buffers(struct scsi_cmnd *cmd); | ||
| 101 | 100 | ||
| 102 | /* | 101 | /* |
| 103 | * Function: scsi_unprep_request() | 102 | * Function: scsi_unprep_request() |
| @@ -1040,8 +1039,10 @@ static int scsi_init_io(struct scsi_cmnd *cmd) | |||
| 1040 | * if sg table allocation fails, requeue request later. | 1039 | * if sg table allocation fails, requeue request later. |
| 1041 | */ | 1040 | */ |
| 1042 | sgpnt = scsi_alloc_sgtable(cmd, GFP_ATOMIC); | 1041 | sgpnt = scsi_alloc_sgtable(cmd, GFP_ATOMIC); |
| 1043 | if (unlikely(!sgpnt)) | 1042 | if (unlikely(!sgpnt)) { |
| 1043 | scsi_unprep_request(req); | ||
| 1044 | return BLKPREP_DEFER; | 1044 | return BLKPREP_DEFER; |
| 1045 | } | ||
| 1045 | 1046 | ||
| 1046 | cmd->request_buffer = (char *) sgpnt; | 1047 | cmd->request_buffer = (char *) sgpnt; |
| 1047 | cmd->request_bufflen = req->nr_sectors << 9; | 1048 | cmd->request_bufflen = req->nr_sectors << 9; |
| @@ -1245,8 +1246,8 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req) | |||
| 1245 | */ | 1246 | */ |
| 1246 | ret = scsi_init_io(cmd); | 1247 | ret = scsi_init_io(cmd); |
| 1247 | switch(ret) { | 1248 | switch(ret) { |
| 1249 | /* For BLKPREP_KILL/DEFER the cmd was released */ | ||
| 1248 | case BLKPREP_KILL: | 1250 | case BLKPREP_KILL: |
| 1249 | /* BLKPREP_KILL return also releases the command */ | ||
| 1250 | goto kill; | 1251 | goto kill; |
| 1251 | case BLKPREP_DEFER: | 1252 | case BLKPREP_DEFER: |
| 1252 | goto defer; | 1253 | goto defer; |
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c index 2cab556b6e82..771e97ef136e 100644 --- a/drivers/scsi/scsi_transport_fc.c +++ b/drivers/scsi/scsi_transport_fc.c | |||
| @@ -819,12 +819,15 @@ show_fc_private_host_tgtid_bind_type(struct class_device *cdev, char *buf) | |||
| 819 | return snprintf(buf, FC_BINDTYPE_MAX_NAMELEN, "%s\n", name); | 819 | return snprintf(buf, FC_BINDTYPE_MAX_NAMELEN, "%s\n", name); |
| 820 | } | 820 | } |
| 821 | 821 | ||
| 822 | #define get_list_head_entry(pos, head, member) \ | ||
| 823 | pos = list_entry((head)->next, typeof(*pos), member) | ||
| 824 | |||
| 822 | static ssize_t | 825 | static ssize_t |
| 823 | store_fc_private_host_tgtid_bind_type(struct class_device *cdev, | 826 | store_fc_private_host_tgtid_bind_type(struct class_device *cdev, |
| 824 | const char *buf, size_t count) | 827 | const char *buf, size_t count) |
| 825 | { | 828 | { |
| 826 | struct Scsi_Host *shost = transport_class_to_shost(cdev); | 829 | struct Scsi_Host *shost = transport_class_to_shost(cdev); |
| 827 | struct fc_rport *rport, *next_rport; | 830 | struct fc_rport *rport; |
| 828 | enum fc_tgtid_binding_type val; | 831 | enum fc_tgtid_binding_type val; |
| 829 | unsigned long flags; | 832 | unsigned long flags; |
| 830 | 833 | ||
| @@ -834,9 +837,13 @@ store_fc_private_host_tgtid_bind_type(struct class_device *cdev, | |||
| 834 | /* if changing bind type, purge all unused consistent bindings */ | 837 | /* if changing bind type, purge all unused consistent bindings */ |
| 835 | if (val != fc_host_tgtid_bind_type(shost)) { | 838 | if (val != fc_host_tgtid_bind_type(shost)) { |
| 836 | spin_lock_irqsave(shost->host_lock, flags); | 839 | spin_lock_irqsave(shost->host_lock, flags); |
| 837 | list_for_each_entry_safe(rport, next_rport, | 840 | while (!list_empty(&fc_host_rport_bindings(shost))) { |
| 838 | &fc_host_rport_bindings(shost), peers) | 841 | get_list_head_entry(rport, |
| 842 | &fc_host_rport_bindings(shost), peers); | ||
| 843 | spin_unlock_irqrestore(shost->host_lock, flags); | ||
| 839 | fc_rport_terminate(rport); | 844 | fc_rport_terminate(rport); |
| 845 | spin_lock_irqsave(shost->host_lock, flags); | ||
| 846 | } | ||
| 840 | spin_unlock_irqrestore(shost->host_lock, flags); | 847 | spin_unlock_irqrestore(shost->host_lock, flags); |
| 841 | } | 848 | } |
| 842 | 849 | ||
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index 0e21f583690e..5c3c03932d6d 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
| @@ -152,6 +152,7 @@ static int __devinit pci_hp_diva_init(struct pci_dev *dev) | |||
| 152 | rc = 4; | 152 | rc = 4; |
| 153 | break; | 153 | break; |
| 154 | case PCI_DEVICE_ID_HP_DIVA_POWERBAR: | 154 | case PCI_DEVICE_ID_HP_DIVA_POWERBAR: |
| 155 | case PCI_DEVICE_ID_HP_DIVA_HURRICANE: | ||
| 155 | rc = 1; | 156 | rc = 1; |
| 156 | break; | 157 | break; |
| 157 | } | 158 | } |
| @@ -226,8 +227,10 @@ static int __devinit pci_plx9050_init(struct pci_dev *dev) | |||
| 226 | } | 227 | } |
| 227 | 228 | ||
| 228 | irq_config = 0x41; | 229 | irq_config = 0x41; |
| 229 | if (dev->vendor == PCI_VENDOR_ID_PANACOM) | 230 | if (dev->vendor == PCI_VENDOR_ID_PANACOM || |
| 231 | dev->subsystem_vendor == PCI_SUBVENDOR_ID_EXSYS) { | ||
| 230 | irq_config = 0x43; | 232 | irq_config = 0x43; |
| 233 | } | ||
| 231 | if ((dev->vendor == PCI_VENDOR_ID_PLX) && | 234 | if ((dev->vendor == PCI_VENDOR_ID_PLX) && |
| 232 | (dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) { | 235 | (dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) { |
| 233 | /* | 236 | /* |
| @@ -664,6 +667,15 @@ static struct pci_serial_quirk pci_serial_quirks[] = { | |||
| 664 | { | 667 | { |
| 665 | .vendor = PCI_VENDOR_ID_PLX, | 668 | .vendor = PCI_VENDOR_ID_PLX, |
| 666 | .device = PCI_DEVICE_ID_PLX_9050, | 669 | .device = PCI_DEVICE_ID_PLX_9050, |
| 670 | .subvendor = PCI_SUBVENDOR_ID_EXSYS, | ||
| 671 | .subdevice = PCI_SUBDEVICE_ID_EXSYS_4055, | ||
| 672 | .init = pci_plx9050_init, | ||
| 673 | .setup = pci_default_setup, | ||
| 674 | .exit = __devexit_p(pci_plx9050_exit), | ||
| 675 | }, | ||
| 676 | { | ||
| 677 | .vendor = PCI_VENDOR_ID_PLX, | ||
| 678 | .device = PCI_DEVICE_ID_PLX_9050, | ||
| 667 | .subvendor = PCI_SUBVENDOR_ID_KEYSPAN, | 679 | .subvendor = PCI_SUBVENDOR_ID_KEYSPAN, |
| 668 | .subdevice = PCI_SUBDEVICE_ID_KEYSPAN_SX2, | 680 | .subdevice = PCI_SUBDEVICE_ID_KEYSPAN_SX2, |
| 669 | .init = pci_plx9050_init, | 681 | .init = pci_plx9050_init, |
| @@ -927,6 +939,7 @@ enum pci_board_num_t { | |||
| 927 | pbn_panacom, | 939 | pbn_panacom, |
| 928 | pbn_panacom2, | 940 | pbn_panacom2, |
| 929 | pbn_panacom4, | 941 | pbn_panacom4, |
| 942 | pbn_exsys_4055, | ||
| 930 | pbn_plx_romulus, | 943 | pbn_plx_romulus, |
| 931 | pbn_oxsemi, | 944 | pbn_oxsemi, |
| 932 | pbn_intel_i960, | 945 | pbn_intel_i960, |
| @@ -1292,6 +1305,13 @@ static struct pciserial_board pci_boards[] __devinitdata = { | |||
| 1292 | .reg_shift = 7, | 1305 | .reg_shift = 7, |
| 1293 | }, | 1306 | }, |
| 1294 | 1307 | ||
| 1308 | [pbn_exsys_4055] = { | ||
| 1309 | .flags = FL_BASE2, | ||
| 1310 | .num_ports = 4, | ||
| 1311 | .base_baud = 115200, | ||
| 1312 | .uart_offset = 8, | ||
| 1313 | }, | ||
| 1314 | |||
| 1295 | /* I think this entry is broken - the first_offset looks wrong --rmk */ | 1315 | /* I think this entry is broken - the first_offset looks wrong --rmk */ |
| 1296 | [pbn_plx_romulus] = { | 1316 | [pbn_plx_romulus] = { |
| 1297 | .flags = FL_BASE2, | 1317 | .flags = FL_BASE2, |
| @@ -1853,6 +1873,10 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
| 1853 | PCI_SUBVENDOR_ID_CHASE_PCIRAS, | 1873 | PCI_SUBVENDOR_ID_CHASE_PCIRAS, |
| 1854 | PCI_SUBDEVICE_ID_CHASE_PCIRAS8, 0, 0, | 1874 | PCI_SUBDEVICE_ID_CHASE_PCIRAS8, 0, 0, |
| 1855 | pbn_b2_8_460800 }, | 1875 | pbn_b2_8_460800 }, |
| 1876 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, | ||
| 1877 | PCI_SUBVENDOR_ID_EXSYS, | ||
| 1878 | PCI_SUBDEVICE_ID_EXSYS_4055, 0, 0, | ||
| 1879 | pbn_exsys_4055 }, | ||
| 1856 | /* | 1880 | /* |
| 1857 | * Megawolf Romulus PCI Serial Card, from Mike Hudson | 1881 | * Megawolf Romulus PCI Serial Card, from Mike Hudson |
| 1858 | * (Exoray@isys.ca) | 1882 | * (Exoray@isys.ca) |
diff --git a/drivers/serial/8250_pnp.c b/drivers/serial/8250_pnp.c index 6b321e82cafb..5d8660a42b77 100644 --- a/drivers/serial/8250_pnp.c +++ b/drivers/serial/8250_pnp.c | |||
| @@ -272,8 +272,12 @@ static const struct pnp_device_id pnp_dev_table[] = { | |||
| 272 | { "SUP1421", 0 }, | 272 | { "SUP1421", 0 }, |
| 273 | /* SupraExpress 33.6 Data/Fax PnP modem */ | 273 | /* SupraExpress 33.6 Data/Fax PnP modem */ |
| 274 | { "SUP1590", 0 }, | 274 | { "SUP1590", 0 }, |
| 275 | /* SupraExpress 336i Sp ASVD */ | ||
| 276 | { "SUP1620", 0 }, | ||
| 275 | /* SupraExpress 33.6 Data/Fax PnP modem */ | 277 | /* SupraExpress 33.6 Data/Fax PnP modem */ |
| 276 | { "SUP1760", 0 }, | 278 | { "SUP1760", 0 }, |
| 279 | /* SupraExpress 56i Sp Intl */ | ||
| 280 | { "SUP2171", 0 }, | ||
| 277 | /* Phoebe Micro */ | 281 | /* Phoebe Micro */ |
| 278 | /* Phoebe Micro 33.6 Data Fax 1433VQH Plug & Play */ | 282 | /* Phoebe Micro 33.6 Data Fax 1433VQH Plug & Play */ |
| 279 | { "TEX0011", 0 }, | 283 | { "TEX0011", 0 }, |
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index 4e1e80adaf11..bdb4e454b8b0 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
| @@ -73,7 +73,7 @@ struct imx_port { | |||
| 73 | struct uart_port port; | 73 | struct uart_port port; |
| 74 | struct timer_list timer; | 74 | struct timer_list timer; |
| 75 | unsigned int old_status; | 75 | unsigned int old_status; |
| 76 | int txirq,rxirq; | 76 | int txirq,rxirq,rtsirq; |
| 77 | }; | 77 | }; |
| 78 | 78 | ||
| 79 | /* | 79 | /* |
| @@ -181,6 +181,22 @@ static void imx_start_tx(struct uart_port *port) | |||
| 181 | imx_transmit_buffer(sport); | 181 | imx_transmit_buffer(sport); |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | static irqreturn_t imx_rtsint(int irq, void *dev_id, struct pt_regs *regs) | ||
| 185 | { | ||
| 186 | struct imx_port *sport = (struct imx_port *)dev_id; | ||
| 187 | unsigned int val = USR1((u32)sport->port.membase)&USR1_RTSS; | ||
| 188 | unsigned long flags; | ||
| 189 | |||
| 190 | spin_lock_irqsave(&sport->port.lock, flags); | ||
| 191 | |||
| 192 | USR1((u32)sport->port.membase) = USR1_RTSD; | ||
| 193 | uart_handle_cts_change(&sport->port, !!val); | ||
| 194 | wake_up_interruptible(&sport->port.info->delta_msr_wait); | ||
| 195 | |||
| 196 | spin_unlock_irqrestore(&sport->port.lock, flags); | ||
| 197 | return IRQ_HANDLED; | ||
| 198 | } | ||
| 199 | |||
| 184 | static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs) | 200 | static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs) |
| 185 | { | 201 | { |
| 186 | struct imx_port *sport = (struct imx_port *)dev_id; | 202 | struct imx_port *sport = (struct imx_port *)dev_id; |
| @@ -383,18 +399,24 @@ static int imx_startup(struct uart_port *port) | |||
| 383 | */ | 399 | */ |
| 384 | retval = request_irq(sport->rxirq, imx_rxint, 0, | 400 | retval = request_irq(sport->rxirq, imx_rxint, 0, |
| 385 | DRIVER_NAME, sport); | 401 | DRIVER_NAME, sport); |
| 386 | if (retval) goto error_out2; | 402 | if (retval) goto error_out1; |
| 387 | 403 | ||
| 388 | retval = request_irq(sport->txirq, imx_txint, 0, | 404 | retval = request_irq(sport->txirq, imx_txint, 0, |
| 389 | "imx-uart", sport); | 405 | DRIVER_NAME, sport); |
| 390 | if (retval) goto error_out1; | 406 | if (retval) goto error_out2; |
| 407 | |||
| 408 | retval = request_irq(sport->rtsirq, imx_rtsint, 0, | ||
| 409 | DRIVER_NAME, sport); | ||
| 410 | if (retval) goto error_out3; | ||
| 411 | set_irq_type(sport->rtsirq, IRQT_BOTHEDGE); | ||
| 391 | 412 | ||
| 392 | /* | 413 | /* |
| 393 | * Finally, clear and enable interrupts | 414 | * Finally, clear and enable interrupts |
| 394 | */ | 415 | */ |
| 395 | 416 | ||
| 417 | USR1((u32)sport->port.membase) = USR1_RTSD; | ||
| 396 | UCR1((u32)sport->port.membase) |= | 418 | UCR1((u32)sport->port.membase) |= |
| 397 | (UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_UARTEN); | 419 | (UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN); |
| 398 | 420 | ||
| 399 | UCR2((u32)sport->port.membase) |= (UCR2_RXEN | UCR2_TXEN); | 421 | UCR2((u32)sport->port.membase) |= (UCR2_RXEN | UCR2_TXEN); |
| 400 | /* | 422 | /* |
| @@ -406,10 +428,11 @@ static int imx_startup(struct uart_port *port) | |||
| 406 | 428 | ||
| 407 | return 0; | 429 | return 0; |
| 408 | 430 | ||
| 409 | error_out1: | 431 | error_out3: |
| 410 | free_irq(sport->rxirq, sport); | ||
| 411 | error_out2: | ||
| 412 | free_irq(sport->txirq, sport); | 432 | free_irq(sport->txirq, sport); |
| 433 | error_out2: | ||
| 434 | free_irq(sport->rxirq, sport); | ||
| 435 | error_out1: | ||
| 413 | return retval; | 436 | return retval; |
| 414 | } | 437 | } |
| 415 | 438 | ||
| @@ -425,6 +448,7 @@ static void imx_shutdown(struct uart_port *port) | |||
| 425 | /* | 448 | /* |
| 426 | * Free the interrupts | 449 | * Free the interrupts |
| 427 | */ | 450 | */ |
| 451 | free_irq(sport->rtsirq, sport); | ||
| 428 | free_irq(sport->txirq, sport); | 452 | free_irq(sport->txirq, sport); |
| 429 | free_irq(sport->rxirq, sport); | 453 | free_irq(sport->rxirq, sport); |
| 430 | 454 | ||
| @@ -433,7 +457,7 @@ static void imx_shutdown(struct uart_port *port) | |||
| 433 | */ | 457 | */ |
| 434 | 458 | ||
| 435 | UCR1((u32)sport->port.membase) &= | 459 | UCR1((u32)sport->port.membase) &= |
| 436 | ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_UARTEN); | 460 | ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN); |
| 437 | } | 461 | } |
| 438 | 462 | ||
| 439 | static void | 463 | static void |
| @@ -523,7 +547,7 @@ imx_set_termios(struct uart_port *port, struct termios *termios, | |||
| 523 | * disable interrupts and drain transmitter | 547 | * disable interrupts and drain transmitter |
| 524 | */ | 548 | */ |
| 525 | old_ucr1 = UCR1((u32)sport->port.membase); | 549 | old_ucr1 = UCR1((u32)sport->port.membase); |
| 526 | UCR1((u32)sport->port.membase) &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN); | 550 | UCR1((u32)sport->port.membase) &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN); |
| 527 | 551 | ||
| 528 | while ( !(USR2((u32)sport->port.membase) & USR2_TXDC)) | 552 | while ( !(USR2((u32)sport->port.membase) & USR2_TXDC)) |
| 529 | barrier(); | 553 | barrier(); |
| @@ -644,6 +668,7 @@ static struct imx_port imx_ports[] = { | |||
| 644 | { | 668 | { |
| 645 | .txirq = UART1_MINT_TX, | 669 | .txirq = UART1_MINT_TX, |
| 646 | .rxirq = UART1_MINT_RX, | 670 | .rxirq = UART1_MINT_RX, |
| 671 | .rtsirq = UART1_MINT_RTS, | ||
| 647 | .port = { | 672 | .port = { |
| 648 | .type = PORT_IMX, | 673 | .type = PORT_IMX, |
| 649 | .iotype = SERIAL_IO_MEM, | 674 | .iotype = SERIAL_IO_MEM, |
| @@ -659,6 +684,7 @@ static struct imx_port imx_ports[] = { | |||
| 659 | }, { | 684 | }, { |
| 660 | .txirq = UART2_MINT_TX, | 685 | .txirq = UART2_MINT_TX, |
| 661 | .rxirq = UART2_MINT_RX, | 686 | .rxirq = UART2_MINT_RX, |
| 687 | .rtsirq = UART2_MINT_RTS, | ||
| 662 | .port = { | 688 | .port = { |
| 663 | .type = PORT_IMX, | 689 | .type = PORT_IMX, |
| 664 | .iotype = SERIAL_IO_MEM, | 690 | .iotype = SERIAL_IO_MEM, |
| @@ -738,7 +764,7 @@ imx_console_write(struct console *co, const char *s, unsigned int count) | |||
| 738 | 764 | ||
| 739 | UCR1((u32)sport->port.membase) = | 765 | UCR1((u32)sport->port.membase) = |
| 740 | (old_ucr1 | UCR1_UARTCLKEN | UCR1_UARTEN) | 766 | (old_ucr1 | UCR1_UARTCLKEN | UCR1_UARTEN) |
| 741 | & ~(UCR1_TXMPTYEN | UCR1_RRDYEN); | 767 | & ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN); |
| 742 | UCR2((u32)sport->port.membase) = old_ucr2 | UCR2_TXEN; | 768 | UCR2((u32)sport->port.membase) = old_ucr2 | UCR2_TXEN; |
| 743 | 769 | ||
| 744 | /* | 770 | /* |
diff --git a/drivers/serial/pxa.c b/drivers/serial/pxa.c index 672b359b07ce..90c2a86c421b 100644 --- a/drivers/serial/pxa.c +++ b/drivers/serial/pxa.c | |||
| @@ -499,7 +499,7 @@ serial_pxa_set_termios(struct uart_port *port, struct termios *termios, | |||
| 499 | /* | 499 | /* |
| 500 | * Update the per-port timeout. | 500 | * Update the per-port timeout. |
| 501 | */ | 501 | */ |
| 502 | uart_update_timeout(port, termios->c_cflag, quot); | 502 | uart_update_timeout(port, termios->c_cflag, baud); |
| 503 | 503 | ||
| 504 | up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; | 504 | up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; |
| 505 | if (termios->c_iflag & INPCK) | 505 | if (termios->c_iflag & INPCK) |
diff --git a/drivers/serial/s3c2410.c b/drivers/serial/s3c2410.c index 50d7870d92bb..52692aa345ec 100644 --- a/drivers/serial/s3c2410.c +++ b/drivers/serial/s3c2410.c | |||
| @@ -1092,8 +1092,8 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport, | |||
| 1092 | 1092 | ||
| 1093 | static int probe_index = 0; | 1093 | static int probe_index = 0; |
| 1094 | 1094 | ||
| 1095 | int s3c24xx_serial_probe(struct device *_dev, | 1095 | static int s3c24xx_serial_probe(struct device *_dev, |
| 1096 | struct s3c24xx_uart_info *info) | 1096 | struct s3c24xx_uart_info *info) |
| 1097 | { | 1097 | { |
| 1098 | struct s3c24xx_uart_port *ourport; | 1098 | struct s3c24xx_uart_port *ourport; |
| 1099 | struct platform_device *dev = to_platform_device(_dev); | 1099 | struct platform_device *dev = to_platform_device(_dev); |
| @@ -1120,7 +1120,7 @@ int s3c24xx_serial_probe(struct device *_dev, | |||
| 1120 | return ret; | 1120 | return ret; |
| 1121 | } | 1121 | } |
| 1122 | 1122 | ||
| 1123 | int s3c24xx_serial_remove(struct device *_dev) | 1123 | static int s3c24xx_serial_remove(struct device *_dev) |
| 1124 | { | 1124 | { |
| 1125 | struct uart_port *port = s3c24xx_dev_to_port(_dev); | 1125 | struct uart_port *port = s3c24xx_dev_to_port(_dev); |
| 1126 | 1126 | ||
| @@ -1134,7 +1134,8 @@ int s3c24xx_serial_remove(struct device *_dev) | |||
| 1134 | 1134 | ||
| 1135 | #ifdef CONFIG_PM | 1135 | #ifdef CONFIG_PM |
| 1136 | 1136 | ||
| 1137 | int s3c24xx_serial_suspend(struct device *dev, pm_message_t state, u32 level) | 1137 | static int s3c24xx_serial_suspend(struct device *dev, pm_message_t state, |
| 1138 | u32 level) | ||
| 1138 | { | 1139 | { |
| 1139 | struct uart_port *port = s3c24xx_dev_to_port(dev); | 1140 | struct uart_port *port = s3c24xx_dev_to_port(dev); |
| 1140 | 1141 | ||
| @@ -1144,7 +1145,7 @@ int s3c24xx_serial_suspend(struct device *dev, pm_message_t state, u32 level) | |||
| 1144 | return 0; | 1145 | return 0; |
| 1145 | } | 1146 | } |
| 1146 | 1147 | ||
| 1147 | int s3c24xx_serial_resume(struct device *dev, u32 level) | 1148 | static int s3c24xx_serial_resume(struct device *dev, u32 level) |
| 1148 | { | 1149 | { |
| 1149 | struct uart_port *port = s3c24xx_dev_to_port(dev); | 1150 | struct uart_port *port = s3c24xx_dev_to_port(dev); |
| 1150 | struct s3c24xx_uart_port *ourport = to_ourport(port); | 1151 | struct s3c24xx_uart_port *ourport = to_ourport(port); |
| @@ -1165,8 +1166,8 @@ int s3c24xx_serial_resume(struct device *dev, u32 level) | |||
| 1165 | #define s3c24xx_serial_resume NULL | 1166 | #define s3c24xx_serial_resume NULL |
| 1166 | #endif | 1167 | #endif |
| 1167 | 1168 | ||
| 1168 | int s3c24xx_serial_init(struct device_driver *drv, | 1169 | static int s3c24xx_serial_init(struct device_driver *drv, |
| 1169 | struct s3c24xx_uart_info *info) | 1170 | struct s3c24xx_uart_info *info) |
| 1170 | { | 1171 | { |
| 1171 | dbg("s3c24xx_serial_init(%p,%p)\n", drv, info); | 1172 | dbg("s3c24xx_serial_init(%p,%p)\n", drv, info); |
| 1172 | return driver_register(drv); | 1173 | return driver_register(drv); |
| @@ -1235,6 +1236,7 @@ static int s3c2400_serial_probe(struct device *dev) | |||
| 1235 | 1236 | ||
| 1236 | static struct device_driver s3c2400_serial_drv = { | 1237 | static struct device_driver s3c2400_serial_drv = { |
| 1237 | .name = "s3c2400-uart", | 1238 | .name = "s3c2400-uart", |
| 1239 | .owner = THIS_MODULE, | ||
| 1238 | .bus = &platform_bus_type, | 1240 | .bus = &platform_bus_type, |
| 1239 | .probe = s3c2400_serial_probe, | 1241 | .probe = s3c2400_serial_probe, |
| 1240 | .remove = s3c24xx_serial_remove, | 1242 | .remove = s3c24xx_serial_remove, |
| @@ -1338,6 +1340,7 @@ static int s3c2410_serial_probe(struct device *dev) | |||
| 1338 | 1340 | ||
| 1339 | static struct device_driver s3c2410_serial_drv = { | 1341 | static struct device_driver s3c2410_serial_drv = { |
| 1340 | .name = "s3c2410-uart", | 1342 | .name = "s3c2410-uart", |
| 1343 | .owner = THIS_MODULE, | ||
| 1341 | .bus = &platform_bus_type, | 1344 | .bus = &platform_bus_type, |
| 1342 | .probe = s3c2410_serial_probe, | 1345 | .probe = s3c2410_serial_probe, |
| 1343 | .remove = s3c24xx_serial_remove, | 1346 | .remove = s3c24xx_serial_remove, |
| @@ -1499,6 +1502,7 @@ static int s3c2440_serial_probe(struct device *dev) | |||
| 1499 | 1502 | ||
| 1500 | static struct device_driver s3c2440_serial_drv = { | 1503 | static struct device_driver s3c2440_serial_drv = { |
| 1501 | .name = "s3c2440-uart", | 1504 | .name = "s3c2440-uart", |
| 1505 | .owner = THIS_MODULE, | ||
| 1502 | .bus = &platform_bus_type, | 1506 | .bus = &platform_bus_type, |
| 1503 | .probe = s3c2440_serial_probe, | 1507 | .probe = s3c2440_serial_probe, |
| 1504 | .remove = s3c24xx_serial_remove, | 1508 | .remove = s3c24xx_serial_remove, |
diff --git a/drivers/serial/sh-sci.c b/drivers/serial/sh-sci.c index 512266307866..430754ebac8a 100644 --- a/drivers/serial/sh-sci.c +++ b/drivers/serial/sh-sci.c | |||
| @@ -967,7 +967,7 @@ static int sci_startup(struct uart_port *port) | |||
| 967 | #endif | 967 | #endif |
| 968 | 968 | ||
| 969 | sci_request_irq(s); | 969 | sci_request_irq(s); |
| 970 | sci_start_tx(port, 1); | 970 | sci_start_tx(port); |
| 971 | sci_start_rx(port, 1); | 971 | sci_start_rx(port, 1); |
| 972 | 972 | ||
| 973 | return 0; | 973 | return 0; |
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c index e971156daa60..ba9381fd3f2d 100644 --- a/drivers/serial/sunsab.c +++ b/drivers/serial/sunsab.c | |||
| @@ -274,7 +274,6 @@ static void transmit_chars(struct uart_sunsab_port *up, | |||
| 274 | if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { | 274 | if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { |
| 275 | up->interrupt_mask1 |= SAB82532_IMR1_XPR; | 275 | up->interrupt_mask1 |= SAB82532_IMR1_XPR; |
| 276 | writeb(up->interrupt_mask1, &up->regs->w.imr1); | 276 | writeb(up->interrupt_mask1, &up->regs->w.imr1); |
| 277 | uart_write_wakeup(&up->port); | ||
| 278 | return; | 277 | return; |
| 279 | } | 278 | } |
| 280 | 279 | ||
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c index d75445738c88..7653d6cf05af 100644 --- a/drivers/serial/sunzilog.c +++ b/drivers/serial/sunzilog.c | |||
| @@ -517,10 +517,9 @@ static void sunzilog_transmit_chars(struct uart_sunzilog_port *up, | |||
| 517 | if (up->port.info == NULL) | 517 | if (up->port.info == NULL) |
| 518 | goto ack_tx_int; | 518 | goto ack_tx_int; |
| 519 | xmit = &up->port.info->xmit; | 519 | xmit = &up->port.info->xmit; |
| 520 | if (uart_circ_empty(xmit)) { | 520 | if (uart_circ_empty(xmit)) |
| 521 | uart_write_wakeup(&up->port); | ||
| 522 | goto ack_tx_int; | 521 | goto ack_tx_int; |
| 523 | } | 522 | |
| 524 | if (uart_tx_stopped(&up->port)) | 523 | if (uart_tx_stopped(&up->port)) |
| 525 | goto ack_tx_int; | 524 | goto ack_tx_int; |
| 526 | 525 | ||
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index b4265aa7d45e..487ff672b104 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
| @@ -30,6 +30,8 @@ | |||
| 30 | * Revision history | 30 | * Revision history |
| 31 | * 22.12.1999 0.1 Initial release (split from proc_usb.c) | 31 | * 22.12.1999 0.1 Initial release (split from proc_usb.c) |
| 32 | * 04.01.2000 0.2 Turned into its own filesystem | 32 | * 04.01.2000 0.2 Turned into its own filesystem |
| 33 | * 30.09.2005 0.3 Fix user-triggerable oops in async URB delivery | ||
| 34 | * (CAN-2005-3055) | ||
| 33 | */ | 35 | */ |
| 34 | 36 | ||
| 35 | /*****************************************************************************/ | 37 | /*****************************************************************************/ |
| @@ -58,7 +60,8 @@ static struct class *usb_device_class; | |||
| 58 | struct async { | 60 | struct async { |
| 59 | struct list_head asynclist; | 61 | struct list_head asynclist; |
| 60 | struct dev_state *ps; | 62 | struct dev_state *ps; |
| 61 | struct task_struct *task; | 63 | pid_t pid; |
| 64 | uid_t uid, euid; | ||
| 62 | unsigned int signr; | 65 | unsigned int signr; |
| 63 | unsigned int ifnum; | 66 | unsigned int ifnum; |
| 64 | void __user *userbuffer; | 67 | void __user *userbuffer; |
| @@ -290,7 +293,8 @@ static void async_completed(struct urb *urb, struct pt_regs *regs) | |||
| 290 | sinfo.si_errno = as->urb->status; | 293 | sinfo.si_errno = as->urb->status; |
| 291 | sinfo.si_code = SI_ASYNCIO; | 294 | sinfo.si_code = SI_ASYNCIO; |
| 292 | sinfo.si_addr = as->userurb; | 295 | sinfo.si_addr = as->userurb; |
| 293 | send_sig_info(as->signr, &sinfo, as->task); | 296 | kill_proc_info_as_uid(as->signr, &sinfo, as->pid, as->uid, |
| 297 | as->euid); | ||
| 294 | } | 298 | } |
| 295 | wake_up(&ps->wait); | 299 | wake_up(&ps->wait); |
| 296 | } | 300 | } |
| @@ -526,7 +530,9 @@ static int usbdev_open(struct inode *inode, struct file *file) | |||
| 526 | INIT_LIST_HEAD(&ps->async_completed); | 530 | INIT_LIST_HEAD(&ps->async_completed); |
| 527 | init_waitqueue_head(&ps->wait); | 531 | init_waitqueue_head(&ps->wait); |
| 528 | ps->discsignr = 0; | 532 | ps->discsignr = 0; |
| 529 | ps->disctask = current; | 533 | ps->disc_pid = current->pid; |
| 534 | ps->disc_uid = current->uid; | ||
| 535 | ps->disc_euid = current->euid; | ||
| 530 | ps->disccontext = NULL; | 536 | ps->disccontext = NULL; |
| 531 | ps->ifclaimed = 0; | 537 | ps->ifclaimed = 0; |
| 532 | wmb(); | 538 | wmb(); |
| @@ -988,7 +994,9 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb, | |||
| 988 | as->userbuffer = NULL; | 994 | as->userbuffer = NULL; |
| 989 | as->signr = uurb->signr; | 995 | as->signr = uurb->signr; |
| 990 | as->ifnum = ifnum; | 996 | as->ifnum = ifnum; |
| 991 | as->task = current; | 997 | as->pid = current->pid; |
| 998 | as->uid = current->uid; | ||
| 999 | as->euid = current->euid; | ||
| 992 | if (!(uurb->endpoint & USB_DIR_IN)) { | 1000 | if (!(uurb->endpoint & USB_DIR_IN)) { |
| 993 | if (copy_from_user(as->urb->transfer_buffer, uurb->buffer, as->urb->transfer_buffer_length)) { | 1001 | if (copy_from_user(as->urb->transfer_buffer, uurb->buffer, as->urb->transfer_buffer_length)) { |
| 994 | free_async(as); | 1002 | free_async(as); |
diff --git a/drivers/usb/core/inode.c b/drivers/usb/core/inode.c index 640f41e47029..d07bba01995b 100644 --- a/drivers/usb/core/inode.c +++ b/drivers/usb/core/inode.c | |||
| @@ -713,7 +713,7 @@ void usbfs_remove_device(struct usb_device *dev) | |||
| 713 | sinfo.si_errno = EPIPE; | 713 | sinfo.si_errno = EPIPE; |
| 714 | sinfo.si_code = SI_ASYNCIO; | 714 | sinfo.si_code = SI_ASYNCIO; |
| 715 | sinfo.si_addr = ds->disccontext; | 715 | sinfo.si_addr = ds->disccontext; |
| 716 | send_sig_info(ds->discsignr, &sinfo, ds->disctask); | 716 | kill_proc_info_as_uid(ds->discsignr, &sinfo, ds->disc_pid, ds->disc_uid, ds->disc_euid); |
| 717 | } | 717 | } |
| 718 | } | 718 | } |
| 719 | usbfs_update_special(); | 719 | usbfs_update_special(); |
diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h index 83d48c8133af..e6504f3370ad 100644 --- a/drivers/usb/core/usb.h +++ b/drivers/usb/core/usb.h | |||
| @@ -52,7 +52,8 @@ struct dev_state { | |||
| 52 | struct list_head async_completed; | 52 | struct list_head async_completed; |
| 53 | wait_queue_head_t wait; /* wake up if a request completed */ | 53 | wait_queue_head_t wait; /* wake up if a request completed */ |
| 54 | unsigned int discsignr; | 54 | unsigned int discsignr; |
| 55 | struct task_struct *disctask; | 55 | pid_t disc_pid; |
| 56 | uid_t disc_uid, disc_euid; | ||
| 56 | void __user *disccontext; | 57 | void __user *disccontext; |
| 57 | unsigned long ifclaimed; | 58 | unsigned long ifclaimed; |
| 58 | }; | 59 | }; |
diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c index 41bbae83fc71..e142056b0d2c 100644 --- a/drivers/usb/host/isp116x-hcd.c +++ b/drivers/usb/host/isp116x-hcd.c | |||
| @@ -326,7 +326,8 @@ static void postproc_atl_queue(struct isp116x *isp116x) | |||
| 326 | usb_settoggle(udev, ep->epnum, | 326 | usb_settoggle(udev, ep->epnum, |
| 327 | ep->nextpid == | 327 | ep->nextpid == |
| 328 | USB_PID_OUT, | 328 | USB_PID_OUT, |
| 329 | PTD_GET_TOGGLE(ptd) ^ 1); | 329 | PTD_GET_TOGGLE(ptd)); |
| 330 | urb->actual_length += PTD_GET_COUNT(ptd); | ||
| 330 | urb->status = cc_to_error[TD_DATAUNDERRUN]; | 331 | urb->status = cc_to_error[TD_DATAUNDERRUN]; |
| 331 | spin_unlock(&urb->lock); | 332 | spin_unlock(&urb->lock); |
| 332 | continue; | 333 | continue; |
diff --git a/drivers/usb/input/hid-core.c b/drivers/usb/input/hid-core.c index a99865c689c5..41f92b924761 100644 --- a/drivers/usb/input/hid-core.c +++ b/drivers/usb/input/hid-core.c | |||
| @@ -1702,10 +1702,7 @@ static struct hid_device *usb_hid_configure(struct usb_interface *intf) | |||
| 1702 | if ((endpoint->bmAttributes & 3) != 3) /* Not an interrupt endpoint */ | 1702 | if ((endpoint->bmAttributes & 3) != 3) /* Not an interrupt endpoint */ |
| 1703 | continue; | 1703 | continue; |
| 1704 | 1704 | ||
| 1705 | /* handle potential highspeed HID correctly */ | ||
| 1706 | interval = endpoint->bInterval; | 1705 | interval = endpoint->bInterval; |
| 1707 | if (dev->speed == USB_SPEED_HIGH) | ||
| 1708 | interval = 1 << (interval - 1); | ||
| 1709 | 1706 | ||
| 1710 | /* Change the polling interval of mice. */ | 1707 | /* Change the polling interval of mice. */ |
| 1711 | if (hid->collection->usage == HID_GD_MOUSE && hid_mousepoll_interval > 0) | 1708 | if (hid->collection->usage == HID_GD_MOUSE && hid_mousepoll_interval > 0) |
diff --git a/drivers/usb/serial/generic.c b/drivers/usb/serial/generic.c index ddde5fb13f6b..5f7d3193d355 100644 --- a/drivers/usb/serial/generic.c +++ b/drivers/usb/serial/generic.c | |||
| @@ -223,7 +223,7 @@ int usb_serial_generic_write_room (struct usb_serial_port *port) | |||
| 223 | dbg("%s - port %d", __FUNCTION__, port->number); | 223 | dbg("%s - port %d", __FUNCTION__, port->number); |
| 224 | 224 | ||
| 225 | if (serial->num_bulk_out) { | 225 | if (serial->num_bulk_out) { |
| 226 | if (port->write_urb_busy) | 226 | if (!(port->write_urb_busy)) |
| 227 | room = port->bulk_out_size; | 227 | room = port->bulk_out_size; |
| 228 | } | 228 | } |
| 229 | 229 | ||
diff --git a/drivers/video/console/vgacon.c b/drivers/video/console/vgacon.c index 6ef6f7760e47..809fee2140ac 100644 --- a/drivers/video/console/vgacon.c +++ b/drivers/video/console/vgacon.c | |||
| @@ -565,7 +565,11 @@ static int vgacon_switch(struct vc_data *c) | |||
| 565 | scr_memcpyw((u16 *) c->vc_origin, (u16 *) c->vc_screenbuf, | 565 | scr_memcpyw((u16 *) c->vc_origin, (u16 *) c->vc_screenbuf, |
| 566 | c->vc_screenbuf_size > vga_vram_size ? | 566 | c->vc_screenbuf_size > vga_vram_size ? |
| 567 | vga_vram_size : c->vc_screenbuf_size); | 567 | vga_vram_size : c->vc_screenbuf_size); |
| 568 | vgacon_doresize(c, c->vc_cols, c->vc_rows); | 568 | if (!(vga_video_num_columns % 2) && |
| 569 | vga_video_num_columns <= ORIG_VIDEO_COLS && | ||
| 570 | vga_video_num_lines <= (ORIG_VIDEO_LINES * | ||
| 571 | vga_default_font_height) / c->vc_font.height) | ||
| 572 | vgacon_doresize(c, c->vc_cols, c->vc_rows); | ||
| 569 | } | 573 | } |
| 570 | 574 | ||
| 571 | return 0; /* Redrawing not needed */ | 575 | return 0; /* Redrawing not needed */ |
| @@ -1023,7 +1027,8 @@ static int vgacon_resize(struct vc_data *c, unsigned int width, | |||
| 1023 | if (width % 2 || width > ORIG_VIDEO_COLS || | 1027 | if (width % 2 || width > ORIG_VIDEO_COLS || |
| 1024 | height > (ORIG_VIDEO_LINES * vga_default_font_height)/ | 1028 | height > (ORIG_VIDEO_LINES * vga_default_font_height)/ |
| 1025 | c->vc_font.height) | 1029 | c->vc_font.height) |
| 1026 | return -EINVAL; | 1030 | /* let svgatextmode tinker with video timings */ |
| 1031 | return 0; | ||
| 1027 | 1032 | ||
| 1028 | if (CON_IS_VISIBLE(c) && !vga_is_gfx) /* who knows */ | 1033 | if (CON_IS_VISIBLE(c) && !vga_is_gfx) /* who knows */ |
| 1029 | vgacon_doresize(c, width, height); | 1034 | vgacon_doresize(c, width, height); |
diff --git a/drivers/video/fbsysfs.c b/drivers/video/fbsysfs.c index 1147b899f007..007c8e9b2b39 100644 --- a/drivers/video/fbsysfs.c +++ b/drivers/video/fbsysfs.c | |||
| @@ -242,6 +242,13 @@ static ssize_t show_virtual(struct class_device *class_device, char *buf) | |||
| 242 | fb_info->var.yres_virtual); | 242 | fb_info->var.yres_virtual); |
| 243 | } | 243 | } |
| 244 | 244 | ||
| 245 | static ssize_t show_stride(struct class_device *class_device, char *buf) | ||
| 246 | { | ||
| 247 | struct fb_info *fb_info = | ||
| 248 | (struct fb_info *)class_get_devdata(class_device); | ||
| 249 | return snprintf(buf, PAGE_SIZE, "%d\n", fb_info->fix.line_length); | ||
| 250 | } | ||
| 251 | |||
| 245 | /* Format for cmap is "%02x%c%4x%4x%4x\n" */ | 252 | /* Format for cmap is "%02x%c%4x%4x%4x\n" */ |
| 246 | /* %02x entry %c transp %4x red %4x blue %4x green \n */ | 253 | /* %02x entry %c transp %4x red %4x blue %4x green \n */ |
| 247 | /* 256 rows at 16 chars equals 4096, the normal page size */ | 254 | /* 256 rows at 16 chars equals 4096, the normal page size */ |
| @@ -432,6 +439,7 @@ static struct class_device_attribute class_device_attrs[] = { | |||
| 432 | __ATTR(pan, S_IRUGO|S_IWUSR, show_pan, store_pan), | 439 | __ATTR(pan, S_IRUGO|S_IWUSR, show_pan, store_pan), |
| 433 | __ATTR(virtual_size, S_IRUGO|S_IWUSR, show_virtual, store_virtual), | 440 | __ATTR(virtual_size, S_IRUGO|S_IWUSR, show_virtual, store_virtual), |
| 434 | __ATTR(name, S_IRUGO, show_name, NULL), | 441 | __ATTR(name, S_IRUGO, show_name, NULL), |
| 442 | __ATTR(stride, S_IRUGO, show_stride, NULL), | ||
| 435 | }; | 443 | }; |
| 436 | 444 | ||
| 437 | int fb_init_class_device(struct fb_info *fb_info) | 445 | int fb_init_class_device(struct fb_info *fb_info) |
diff --git a/drivers/video/logo/.gitignore b/drivers/video/logo/.gitignore new file mode 100644 index 000000000000..e48355f538fa --- /dev/null +++ b/drivers/video/logo/.gitignore | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # | ||
| 2 | # Generated files | ||
| 3 | # | ||
| 4 | *_mono.c | ||
| 5 | *_vga16.c | ||
| 6 | *_clut224.c | ||
| 7 | *_gray256.c | ||
diff --git a/drivers/video/p9100.c b/drivers/video/p9100.c index 7808a01493ad..b76a5a9a125b 100644 --- a/drivers/video/p9100.c +++ b/drivers/video/p9100.c | |||
| @@ -288,6 +288,9 @@ static void p9100_init_one(struct sbus_dev *sdev) | |||
| 288 | all->par.physbase = sdev->reg_addrs[2].phys_addr; | 288 | all->par.physbase = sdev->reg_addrs[2].phys_addr; |
| 289 | 289 | ||
| 290 | sbusfb_fill_var(&all->info.var, sdev->prom_node, 8); | 290 | sbusfb_fill_var(&all->info.var, sdev->prom_node, 8); |
| 291 | all->info.var.red.length = 8; | ||
| 292 | all->info.var.green.length = 8; | ||
| 293 | all->info.var.blue.length = 8; | ||
| 291 | 294 | ||
| 292 | linebytes = prom_getintdefault(sdev->prom_node, "linebytes", | 295 | linebytes = prom_getintdefault(sdev->prom_node, "linebytes", |
| 293 | all->info.var.xres); | 296 | all->info.var.xres); |
| @@ -323,6 +326,7 @@ static void p9100_init_one(struct sbus_dev *sdev) | |||
| 323 | kfree(all); | 326 | kfree(all); |
| 324 | return; | 327 | return; |
| 325 | } | 328 | } |
| 329 | fb_set_cmap(&all->info.cmap, &all->info); | ||
| 326 | 330 | ||
| 327 | list_add(&all->list, &p9100_list); | 331 | list_add(&all->list, &p9100_list); |
| 328 | 332 | ||
diff --git a/drivers/video/sa1100fb.c b/drivers/video/sa1100fb.c index beeec7b51425..8000890e4271 100644 --- a/drivers/video/sa1100fb.c +++ b/drivers/video/sa1100fb.c | |||
| @@ -592,6 +592,7 @@ sa1100fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue, | |||
| 592 | return ret; | 592 | return ret; |
| 593 | } | 593 | } |
| 594 | 594 | ||
| 595 | #ifdef CONFIG_CPU_FREQ | ||
| 595 | /* | 596 | /* |
| 596 | * sa1100fb_display_dma_period() | 597 | * sa1100fb_display_dma_period() |
| 597 | * Calculate the minimum period (in picoseconds) between two DMA | 598 | * Calculate the minimum period (in picoseconds) between two DMA |
| @@ -606,6 +607,7 @@ static inline unsigned int sa1100fb_display_dma_period(struct fb_var_screeninfo | |||
| 606 | */ | 607 | */ |
| 607 | return var->pixclock * 8 * 16 / var->bits_per_pixel; | 608 | return var->pixclock * 8 * 16 / var->bits_per_pixel; |
| 608 | } | 609 | } |
| 610 | #endif | ||
| 609 | 611 | ||
| 610 | /* | 612 | /* |
| 611 | * sa1100fb_check_var(): | 613 | * sa1100fb_check_var(): |
diff --git a/drivers/video/vesafb.c b/drivers/video/vesafb.c index 1ca80264c7b0..b1243da55fc5 100644 --- a/drivers/video/vesafb.c +++ b/drivers/video/vesafb.c | |||
| @@ -96,14 +96,14 @@ static int vesafb_blank(int blank, struct fb_info *info) | |||
| 96 | int loop = 10000; | 96 | int loop = 10000; |
| 97 | u8 seq = 0, crtc17 = 0; | 97 | u8 seq = 0, crtc17 = 0; |
| 98 | 98 | ||
| 99 | err = 0; | 99 | if (blank == FB_BLANK_POWERDOWN) { |
| 100 | |||
| 101 | if (blank) { | ||
| 102 | seq = 0x20; | 100 | seq = 0x20; |
| 103 | crtc17 = 0x00; | 101 | crtc17 = 0x00; |
| 102 | err = 0; | ||
| 104 | } else { | 103 | } else { |
| 105 | seq = 0x00; | 104 | seq = 0x00; |
| 106 | crtc17 = 0x80; | 105 | crtc17 = 0x80; |
| 106 | err = (blank == FB_BLANK_UNBLANK) ? 0 : -EINVAL; | ||
| 107 | } | 107 | } |
| 108 | 108 | ||
| 109 | vga_wseq(NULL, 0x00, 0x01); | 109 | vga_wseq(NULL, 0x00, 0x01); |
diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c index 1b6b74c116a9..14016b1cd948 100644 --- a/drivers/w1/w1.c +++ b/drivers/w1/w1.c | |||
| @@ -77,8 +77,7 @@ static void w1_master_release(struct device *dev) | |||
| 77 | 77 | ||
| 78 | dev_dbg(dev, "%s: Releasing %s.\n", __func__, md->name); | 78 | dev_dbg(dev, "%s: Releasing %s.\n", __func__, md->name); |
| 79 | 79 | ||
| 80 | if (md->nls && md->nls->sk_socket) | 80 | dev_fini_netlink(md); |
| 81 | sock_release(md->nls->sk_socket); | ||
| 82 | memset(md, 0, sizeof(struct w1_master) + sizeof(struct w1_bus_master)); | 81 | memset(md, 0, sizeof(struct w1_master) + sizeof(struct w1_bus_master)); |
| 83 | kfree(md); | 82 | kfree(md); |
| 84 | } | 83 | } |
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c index a4799e971d1c..bbc3cc63854f 100644 --- a/fs/9p/vfs_file.c +++ b/fs/9p/vfs_file.c | |||
| @@ -175,16 +175,16 @@ static int v9fs_file_lock(struct file *filp, int cmd, struct file_lock *fl) | |||
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | /** | 177 | /** |
| 178 | * v9fs_read - read from a file (internal) | 178 | * v9fs_file_read - read from a file |
| 179 | * @filep: file pointer to read | 179 | * @filep: file pointer to read |
| 180 | * @data: data buffer to read data into | 180 | * @data: data buffer to read data into |
| 181 | * @count: size of buffer | 181 | * @count: size of buffer |
| 182 | * @offset: offset at which to read data | 182 | * @offset: offset at which to read data |
| 183 | * | 183 | * |
| 184 | */ | 184 | */ |
| 185 | |||
| 186 | static ssize_t | 185 | static ssize_t |
| 187 | v9fs_read(struct file *filp, char *buffer, size_t count, loff_t * offset) | 186 | v9fs_file_read(struct file *filp, char __user * data, size_t count, |
| 187 | loff_t * offset) | ||
| 188 | { | 188 | { |
| 189 | struct inode *inode = filp->f_dentry->d_inode; | 189 | struct inode *inode = filp->f_dentry->d_inode; |
| 190 | struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); | 190 | struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); |
| @@ -194,6 +194,7 @@ v9fs_read(struct file *filp, char *buffer, size_t count, loff_t * offset) | |||
| 194 | int rsize = 0; | 194 | int rsize = 0; |
| 195 | int result = 0; | 195 | int result = 0; |
| 196 | int total = 0; | 196 | int total = 0; |
| 197 | int n; | ||
| 197 | 198 | ||
| 198 | dprintk(DEBUG_VFS, "\n"); | 199 | dprintk(DEBUG_VFS, "\n"); |
| 199 | 200 | ||
| @@ -216,10 +217,15 @@ v9fs_read(struct file *filp, char *buffer, size_t count, loff_t * offset) | |||
| 216 | } else | 217 | } else |
| 217 | *offset += result; | 218 | *offset += result; |
| 218 | 219 | ||
| 219 | /* XXX - extra copy */ | 220 | n = copy_to_user(data, fcall->params.rread.data, result); |
| 220 | memcpy(buffer, fcall->params.rread.data, result); | 221 | if (n) { |
| 222 | dprintk(DEBUG_ERROR, "Problem copying to user %d\n", n); | ||
| 223 | kfree(fcall); | ||
| 224 | return -EFAULT; | ||
| 225 | } | ||
| 226 | |||
| 221 | count -= result; | 227 | count -= result; |
| 222 | buffer += result; | 228 | data += result; |
| 223 | total += result; | 229 | total += result; |
| 224 | 230 | ||
| 225 | kfree(fcall); | 231 | kfree(fcall); |
| @@ -232,42 +238,7 @@ v9fs_read(struct file *filp, char *buffer, size_t count, loff_t * offset) | |||
| 232 | } | 238 | } |
| 233 | 239 | ||
| 234 | /** | 240 | /** |
| 235 | * v9fs_file_read - read from a file | 241 | * v9fs_file_write - write to a file |
| 236 | * @filep: file pointer to read | ||
| 237 | * @data: data buffer to read data into | ||
| 238 | * @count: size of buffer | ||
| 239 | * @offset: offset at which to read data | ||
| 240 | * | ||
| 241 | */ | ||
| 242 | |||
| 243 | static ssize_t | ||
| 244 | v9fs_file_read(struct file *filp, char __user * data, size_t count, | ||
| 245 | loff_t * offset) | ||
| 246 | { | ||
| 247 | int retval = -1; | ||
| 248 | int ret = 0; | ||
| 249 | char *buffer; | ||
| 250 | |||
| 251 | buffer = kmalloc(count, GFP_KERNEL); | ||
| 252 | if (!buffer) | ||
| 253 | return -ENOMEM; | ||
| 254 | |||
| 255 | retval = v9fs_read(filp, buffer, count, offset); | ||
| 256 | if (retval > 0) { | ||
| 257 | if ((ret = copy_to_user(data, buffer, retval)) != 0) { | ||
| 258 | dprintk(DEBUG_ERROR, "Problem copying to user %d\n", | ||
| 259 | ret); | ||
| 260 | retval = ret; | ||
| 261 | } | ||
| 262 | } | ||
| 263 | |||
| 264 | kfree(buffer); | ||
| 265 | |||
| 266 | return retval; | ||
| 267 | } | ||
| 268 | |||
| 269 | /** | ||
| 270 | * v9fs_write - write to a file | ||
| 271 | * @filep: file pointer to write | 242 | * @filep: file pointer to write |
| 272 | * @data: data buffer to write data from | 243 | * @data: data buffer to write data from |
| 273 | * @count: size of buffer | 244 | * @count: size of buffer |
| @@ -276,7 +247,8 @@ v9fs_file_read(struct file *filp, char __user * data, size_t count, | |||
| 276 | */ | 247 | */ |
| 277 | 248 | ||
| 278 | static ssize_t | 249 | static ssize_t |
| 279 | v9fs_write(struct file *filp, char *buffer, size_t count, loff_t * offset) | 250 | v9fs_file_write(struct file *filp, const char __user * data, |
| 251 | size_t count, loff_t * offset) | ||
| 280 | { | 252 | { |
| 281 | struct inode *inode = filp->f_dentry->d_inode; | 253 | struct inode *inode = filp->f_dentry->d_inode; |
| 282 | struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); | 254 | struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); |
| @@ -286,30 +258,42 @@ v9fs_write(struct file *filp, char *buffer, size_t count, loff_t * offset) | |||
| 286 | int result = -EIO; | 258 | int result = -EIO; |
| 287 | int rsize = 0; | 259 | int rsize = 0; |
| 288 | int total = 0; | 260 | int total = 0; |
| 261 | char *buf; | ||
| 289 | 262 | ||
| 290 | dprintk(DEBUG_VFS, "data %p count %d offset %x\n", buffer, (int)count, | 263 | dprintk(DEBUG_VFS, "data %p count %d offset %x\n", data, (int)count, |
| 291 | (int)*offset); | 264 | (int)*offset); |
| 292 | rsize = v9ses->maxdata - V9FS_IOHDRSZ; | 265 | rsize = v9ses->maxdata - V9FS_IOHDRSZ; |
| 293 | if (v9fid->iounit != 0 && rsize > v9fid->iounit) | 266 | if (v9fid->iounit != 0 && rsize > v9fid->iounit) |
| 294 | rsize = v9fid->iounit; | 267 | rsize = v9fid->iounit; |
| 295 | 268 | ||
| 296 | dump_data(buffer, count); | 269 | buf = kmalloc(v9ses->maxdata - V9FS_IOHDRSZ, GFP_KERNEL); |
| 270 | if (!buf) | ||
| 271 | return -ENOMEM; | ||
| 297 | 272 | ||
| 298 | do { | 273 | do { |
| 299 | if (count < rsize) | 274 | if (count < rsize) |
| 300 | rsize = count; | 275 | rsize = count; |
| 301 | 276 | ||
| 302 | result = | 277 | result = copy_from_user(buf, data, rsize); |
| 303 | v9fs_t_write(v9ses, fid, *offset, rsize, buffer, &fcall); | 278 | if (result) { |
| 279 | dprintk(DEBUG_ERROR, "Problem copying from user\n"); | ||
| 280 | kfree(buf); | ||
| 281 | return -EFAULT; | ||
| 282 | } | ||
| 283 | |||
| 284 | dump_data(buf, rsize); | ||
| 285 | result = v9fs_t_write(v9ses, fid, *offset, rsize, buf, &fcall); | ||
| 304 | if (result < 0) { | 286 | if (result < 0) { |
| 305 | eprintk(KERN_ERR, "error while writing: %s(%d)\n", | 287 | eprintk(KERN_ERR, "error while writing: %s(%d)\n", |
| 306 | FCALL_ERROR(fcall), result); | 288 | FCALL_ERROR(fcall), result); |
| 307 | kfree(fcall); | 289 | kfree(fcall); |
| 290 | kfree(buf); | ||
| 308 | return result; | 291 | return result; |
| 309 | } else | 292 | } else |
| 310 | *offset += result; | 293 | *offset += result; |
| 311 | 294 | ||
| 312 | kfree(fcall); | 295 | kfree(fcall); |
| 296 | fcall = NULL; | ||
| 313 | 297 | ||
| 314 | if (result != rsize) { | 298 | if (result != rsize) { |
| 315 | eprintk(KERN_ERR, | 299 | eprintk(KERN_ERR, |
| @@ -319,46 +303,14 @@ v9fs_write(struct file *filp, char *buffer, size_t count, loff_t * offset) | |||
| 319 | } | 303 | } |
| 320 | 304 | ||
| 321 | count -= result; | 305 | count -= result; |
| 322 | buffer += result; | 306 | data += result; |
| 323 | total += result; | 307 | total += result; |
| 324 | } while (count); | 308 | } while (count); |
| 325 | 309 | ||
| 310 | kfree(buf); | ||
| 326 | return total; | 311 | return total; |
| 327 | } | 312 | } |
| 328 | 313 | ||
| 329 | /** | ||
| 330 | * v9fs_file_write - write to a file | ||
| 331 | * @filep: file pointer to write | ||
| 332 | * @data: data buffer to write data from | ||
| 333 | * @count: size of buffer | ||
| 334 | * @offset: offset at which to write data | ||
| 335 | * | ||
| 336 | */ | ||
| 337 | |||
| 338 | static ssize_t | ||
| 339 | v9fs_file_write(struct file *filp, const char __user * data, | ||
| 340 | size_t count, loff_t * offset) | ||
| 341 | { | ||
| 342 | int ret = -1; | ||
| 343 | char *buffer; | ||
| 344 | |||
| 345 | buffer = kmalloc(count, GFP_KERNEL); | ||
| 346 | if (buffer == NULL) | ||
| 347 | return -ENOMEM; | ||
| 348 | |||
| 349 | ret = copy_from_user(buffer, data, count); | ||
| 350 | if (ret) { | ||
| 351 | dprintk(DEBUG_ERROR, "Problem copying from user\n"); | ||
| 352 | ret = -EFAULT; | ||
| 353 | } else { | ||
| 354 | ret = v9fs_write(filp, buffer, count, offset); | ||
| 355 | } | ||
| 356 | |||
| 357 | kfree(buffer); | ||
| 358 | |||
| 359 | return ret; | ||
| 360 | } | ||
| 361 | |||
| 362 | struct file_operations v9fs_file_operations = { | 314 | struct file_operations v9fs_file_operations = { |
| 363 | .llseek = generic_file_llseek, | 315 | .llseek = generic_file_llseek, |
| 364 | .read = v9fs_file_read, | 316 | .read = v9fs_file_read, |
| @@ -398,7 +398,7 @@ static struct kiocb fastcall *__aio_get_req(struct kioctx *ctx) | |||
| 398 | if (unlikely(!req)) | 398 | if (unlikely(!req)) |
| 399 | return NULL; | 399 | return NULL; |
| 400 | 400 | ||
| 401 | req->ki_flags = 1 << KIF_LOCKED; | 401 | req->ki_flags = 0; |
| 402 | req->ki_users = 2; | 402 | req->ki_users = 2; |
| 403 | req->ki_key = 0; | 403 | req->ki_key = 0; |
| 404 | req->ki_ctx = ctx; | 404 | req->ki_ctx = ctx; |
| @@ -547,25 +547,6 @@ struct kioctx *lookup_ioctx(unsigned long ctx_id) | |||
| 547 | return ioctx; | 547 | return ioctx; |
| 548 | } | 548 | } |
| 549 | 549 | ||
| 550 | static int lock_kiocb_action(void *param) | ||
| 551 | { | ||
| 552 | schedule(); | ||
| 553 | return 0; | ||
| 554 | } | ||
| 555 | |||
| 556 | static inline void lock_kiocb(struct kiocb *iocb) | ||
| 557 | { | ||
| 558 | wait_on_bit_lock(&iocb->ki_flags, KIF_LOCKED, lock_kiocb_action, | ||
| 559 | TASK_UNINTERRUPTIBLE); | ||
| 560 | } | ||
| 561 | |||
| 562 | static inline void unlock_kiocb(struct kiocb *iocb) | ||
| 563 | { | ||
| 564 | kiocbClearLocked(iocb); | ||
| 565 | smp_mb__after_clear_bit(); | ||
| 566 | wake_up_bit(&iocb->ki_flags, KIF_LOCKED); | ||
| 567 | } | ||
| 568 | |||
| 569 | /* | 550 | /* |
| 570 | * use_mm | 551 | * use_mm |
| 571 | * Makes the calling kernel thread take on the specified | 552 | * Makes the calling kernel thread take on the specified |
| @@ -796,9 +777,7 @@ static int __aio_run_iocbs(struct kioctx *ctx) | |||
| 796 | * Hold an extra reference while retrying i/o. | 777 | * Hold an extra reference while retrying i/o. |
| 797 | */ | 778 | */ |
| 798 | iocb->ki_users++; /* grab extra reference */ | 779 | iocb->ki_users++; /* grab extra reference */ |
| 799 | lock_kiocb(iocb); | ||
| 800 | aio_run_iocb(iocb); | 780 | aio_run_iocb(iocb); |
| 801 | unlock_kiocb(iocb); | ||
| 802 | if (__aio_put_req(ctx, iocb)) /* drop extra ref */ | 781 | if (__aio_put_req(ctx, iocb)) /* drop extra ref */ |
| 803 | put_ioctx(ctx); | 782 | put_ioctx(ctx); |
| 804 | } | 783 | } |
| @@ -1418,6 +1397,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb) | |||
| 1418 | if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf, | 1397 | if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf, |
| 1419 | kiocb->ki_left))) | 1398 | kiocb->ki_left))) |
| 1420 | break; | 1399 | break; |
| 1400 | ret = security_file_permission(file, MAY_READ); | ||
| 1401 | if (unlikely(ret)) | ||
| 1402 | break; | ||
| 1421 | ret = -EINVAL; | 1403 | ret = -EINVAL; |
| 1422 | if (file->f_op->aio_read) | 1404 | if (file->f_op->aio_read) |
| 1423 | kiocb->ki_retry = aio_pread; | 1405 | kiocb->ki_retry = aio_pread; |
| @@ -1430,6 +1412,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb) | |||
| 1430 | if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf, | 1412 | if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf, |
| 1431 | kiocb->ki_left))) | 1413 | kiocb->ki_left))) |
| 1432 | break; | 1414 | break; |
| 1415 | ret = security_file_permission(file, MAY_WRITE); | ||
| 1416 | if (unlikely(ret)) | ||
| 1417 | break; | ||
| 1433 | ret = -EINVAL; | 1418 | ret = -EINVAL; |
| 1434 | if (file->f_op->aio_write) | 1419 | if (file->f_op->aio_write) |
| 1435 | kiocb->ki_retry = aio_pwrite; | 1420 | kiocb->ki_retry = aio_pwrite; |
| @@ -1542,7 +1527,6 @@ int fastcall io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, | |||
| 1542 | 1527 | ||
| 1543 | spin_lock_irq(&ctx->ctx_lock); | 1528 | spin_lock_irq(&ctx->ctx_lock); |
| 1544 | aio_run_iocb(req); | 1529 | aio_run_iocb(req); |
| 1545 | unlock_kiocb(req); | ||
| 1546 | if (!list_empty(&ctx->run_list)) { | 1530 | if (!list_empty(&ctx->run_list)) { |
| 1547 | /* drain the run list */ | 1531 | /* drain the run list */ |
| 1548 | while (__aio_run_iocbs(ctx)) | 1532 | while (__aio_run_iocbs(ctx)) |
| @@ -1674,7 +1658,6 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb, | |||
| 1674 | if (NULL != cancel) { | 1658 | if (NULL != cancel) { |
| 1675 | struct io_event tmp; | 1659 | struct io_event tmp; |
| 1676 | pr_debug("calling cancel\n"); | 1660 | pr_debug("calling cancel\n"); |
| 1677 | lock_kiocb(kiocb); | ||
| 1678 | memset(&tmp, 0, sizeof(tmp)); | 1661 | memset(&tmp, 0, sizeof(tmp)); |
| 1679 | tmp.obj = (u64)(unsigned long)kiocb->ki_obj.user; | 1662 | tmp.obj = (u64)(unsigned long)kiocb->ki_obj.user; |
| 1680 | tmp.data = kiocb->ki_user_data; | 1663 | tmp.data = kiocb->ki_user_data; |
| @@ -1686,7 +1669,6 @@ asmlinkage long sys_io_cancel(aio_context_t ctx_id, struct iocb __user *iocb, | |||
| 1686 | if (copy_to_user(result, &tmp, sizeof(tmp))) | 1669 | if (copy_to_user(result, &tmp, sizeof(tmp))) |
| 1687 | ret = -EFAULT; | 1670 | ret = -EFAULT; |
| 1688 | } | 1671 | } |
| 1689 | unlock_kiocb(kiocb); | ||
| 1690 | } else | 1672 | } else |
| 1691 | ret = -EINVAL; | 1673 | ret = -EINVAL; |
| 1692 | 1674 | ||
diff --git a/fs/bfs/dir.c b/fs/bfs/dir.c index e240c335eb23..5af928fa0449 100644 --- a/fs/bfs/dir.c +++ b/fs/bfs/dir.c | |||
| @@ -108,7 +108,7 @@ static int bfs_create(struct inode * dir, struct dentry * dentry, int mode, | |||
| 108 | inode->i_mapping->a_ops = &bfs_aops; | 108 | inode->i_mapping->a_ops = &bfs_aops; |
| 109 | inode->i_mode = mode; | 109 | inode->i_mode = mode; |
| 110 | inode->i_ino = ino; | 110 | inode->i_ino = ino; |
| 111 | BFS_I(inode)->i_dsk_ino = cpu_to_le16(ino); | 111 | BFS_I(inode)->i_dsk_ino = ino; |
| 112 | BFS_I(inode)->i_sblock = 0; | 112 | BFS_I(inode)->i_sblock = 0; |
| 113 | BFS_I(inode)->i_eblock = 0; | 113 | BFS_I(inode)->i_eblock = 0; |
| 114 | insert_inode_hash(inode); | 114 | insert_inode_hash(inode); |
diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c index c7b39aa279d7..3af6c73c5b5a 100644 --- a/fs/bfs/inode.c +++ b/fs/bfs/inode.c | |||
| @@ -357,28 +357,46 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
| 357 | } | 357 | } |
| 358 | 358 | ||
| 359 | info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1)>>BFS_BSIZE_BITS; /* for statfs(2) */ | 359 | info->si_blocks = (le32_to_cpu(bfs_sb->s_end) + 1)>>BFS_BSIZE_BITS; /* for statfs(2) */ |
| 360 | info->si_freeb = (le32_to_cpu(bfs_sb->s_end) + 1 - cpu_to_le32(bfs_sb->s_start))>>BFS_BSIZE_BITS; | 360 | info->si_freeb = (le32_to_cpu(bfs_sb->s_end) + 1 - le32_to_cpu(bfs_sb->s_start))>>BFS_BSIZE_BITS; |
| 361 | info->si_freei = 0; | 361 | info->si_freei = 0; |
| 362 | info->si_lf_eblk = 0; | 362 | info->si_lf_eblk = 0; |
| 363 | info->si_lf_sblk = 0; | 363 | info->si_lf_sblk = 0; |
| 364 | info->si_lf_ioff = 0; | 364 | info->si_lf_ioff = 0; |
| 365 | bh = NULL; | ||
| 365 | for (i=BFS_ROOT_INO; i<=info->si_lasti; i++) { | 366 | for (i=BFS_ROOT_INO; i<=info->si_lasti; i++) { |
| 366 | inode = iget(s,i); | 367 | struct bfs_inode *di; |
| 367 | if (BFS_I(inode)->i_dsk_ino == 0) | 368 | int block = (i - BFS_ROOT_INO)/BFS_INODES_PER_BLOCK + 1; |
| 369 | int off = (i - BFS_ROOT_INO) % BFS_INODES_PER_BLOCK; | ||
| 370 | unsigned long sblock, eblock; | ||
| 371 | |||
| 372 | if (!off) { | ||
| 373 | brelse(bh); | ||
| 374 | bh = sb_bread(s, block); | ||
| 375 | } | ||
| 376 | |||
| 377 | if (!bh) | ||
| 378 | continue; | ||
| 379 | |||
| 380 | di = (struct bfs_inode *)bh->b_data + off; | ||
| 381 | |||
| 382 | if (!di->i_ino) { | ||
| 368 | info->si_freei++; | 383 | info->si_freei++; |
| 369 | else { | 384 | continue; |
| 370 | set_bit(i, info->si_imap); | 385 | } |
| 371 | info->si_freeb -= inode->i_blocks; | 386 | set_bit(i, info->si_imap); |
| 372 | if (BFS_I(inode)->i_eblock > info->si_lf_eblk) { | 387 | info->si_freeb -= BFS_FILEBLOCKS(di); |
| 373 | info->si_lf_eblk = BFS_I(inode)->i_eblock; | 388 | |
| 374 | info->si_lf_sblk = BFS_I(inode)->i_sblock; | 389 | sblock = le32_to_cpu(di->i_sblock); |
| 375 | info->si_lf_ioff = BFS_INO2OFF(i); | 390 | eblock = le32_to_cpu(di->i_eblock); |
| 376 | } | 391 | if (eblock > info->si_lf_eblk) { |
| 392 | info->si_lf_eblk = eblock; | ||
| 393 | info->si_lf_sblk = sblock; | ||
| 394 | info->si_lf_ioff = BFS_INO2OFF(i); | ||
| 377 | } | 395 | } |
| 378 | iput(inode); | ||
| 379 | } | 396 | } |
| 397 | brelse(bh); | ||
| 380 | if (!(s->s_flags & MS_RDONLY)) { | 398 | if (!(s->s_flags & MS_RDONLY)) { |
| 381 | mark_buffer_dirty(bh); | 399 | mark_buffer_dirty(info->si_sbh); |
| 382 | s->s_dirt = 1; | 400 | s->s_dirt = 1; |
| 383 | } | 401 | } |
| 384 | dump_imap("read_super", s); | 402 | dump_imap("read_super", s); |
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 7976a238f0a3..d4b15576e584 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c | |||
| @@ -905,7 +905,7 @@ static int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs) | |||
| 905 | send_sig(SIGKILL, current, 0); | 905 | send_sig(SIGKILL, current, 0); |
| 906 | goto out_free_dentry; | 906 | goto out_free_dentry; |
| 907 | } | 907 | } |
| 908 | if (padzero(elf_bss)) { | 908 | if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { |
| 909 | send_sig(SIGSEGV, current, 0); | 909 | send_sig(SIGSEGV, current, 0); |
| 910 | retval = -EFAULT; /* Nobody gets to see this, but.. */ | 910 | retval = -EFAULT; /* Nobody gets to see this, but.. */ |
| 911 | goto out_free_dentry; | 911 | goto out_free_dentry; |
| @@ -75,7 +75,7 @@ struct bio_set { | |||
| 75 | */ | 75 | */ |
| 76 | static struct bio_set *fs_bio_set; | 76 | static struct bio_set *fs_bio_set; |
| 77 | 77 | ||
| 78 | static inline struct bio_vec *bvec_alloc_bs(unsigned int __nocast gfp_mask, int nr, unsigned long *idx, struct bio_set *bs) | 78 | static inline struct bio_vec *bvec_alloc_bs(gfp_t gfp_mask, int nr, unsigned long *idx, struct bio_set *bs) |
| 79 | { | 79 | { |
| 80 | struct bio_vec *bvl; | 80 | struct bio_vec *bvl; |
| 81 | struct biovec_slab *bp; | 81 | struct biovec_slab *bp; |
| @@ -155,7 +155,7 @@ inline void bio_init(struct bio *bio) | |||
| 155 | * allocate bio and iovecs from the memory pools specified by the | 155 | * allocate bio and iovecs from the memory pools specified by the |
| 156 | * bio_set structure. | 156 | * bio_set structure. |
| 157 | **/ | 157 | **/ |
| 158 | struct bio *bio_alloc_bioset(unsigned int __nocast gfp_mask, int nr_iovecs, struct bio_set *bs) | 158 | struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs) |
| 159 | { | 159 | { |
| 160 | struct bio *bio = mempool_alloc(bs->bio_pool, gfp_mask); | 160 | struct bio *bio = mempool_alloc(bs->bio_pool, gfp_mask); |
| 161 | 161 | ||
| @@ -181,7 +181,7 @@ out: | |||
| 181 | return bio; | 181 | return bio; |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | struct bio *bio_alloc(unsigned int __nocast gfp_mask, int nr_iovecs) | 184 | struct bio *bio_alloc(gfp_t gfp_mask, int nr_iovecs) |
| 185 | { | 185 | { |
| 186 | struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set); | 186 | struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set); |
| 187 | 187 | ||
| @@ -277,7 +277,7 @@ inline void __bio_clone(struct bio *bio, struct bio *bio_src) | |||
| 277 | * | 277 | * |
| 278 | * Like __bio_clone, only also allocates the returned bio | 278 | * Like __bio_clone, only also allocates the returned bio |
| 279 | */ | 279 | */ |
| 280 | struct bio *bio_clone(struct bio *bio, unsigned int __nocast gfp_mask) | 280 | struct bio *bio_clone(struct bio *bio, gfp_t gfp_mask) |
| 281 | { | 281 | { |
| 282 | struct bio *b = bio_alloc_bioset(gfp_mask, bio->bi_max_vecs, fs_bio_set); | 282 | struct bio *b = bio_alloc_bioset(gfp_mask, bio->bi_max_vecs, fs_bio_set); |
| 283 | 283 | ||
| @@ -1078,7 +1078,7 @@ struct bio_pair *bio_split(struct bio *bi, mempool_t *pool, int first_sectors) | |||
| 1078 | return bp; | 1078 | return bp; |
| 1079 | } | 1079 | } |
| 1080 | 1080 | ||
| 1081 | static void *bio_pair_alloc(unsigned int __nocast gfp_flags, void *data) | 1081 | static void *bio_pair_alloc(gfp_t gfp_flags, void *data) |
| 1082 | { | 1082 | { |
| 1083 | return kmalloc(sizeof(struct bio_pair), gfp_flags); | 1083 | return kmalloc(sizeof(struct bio_pair), gfp_flags); |
| 1084 | } | 1084 | } |
diff --git a/fs/buffer.c b/fs/buffer.c index 6cbfceabd95d..1216c0d3c8ce 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
| @@ -3045,7 +3045,7 @@ static void recalc_bh_state(void) | |||
| 3045 | buffer_heads_over_limit = (tot > max_buffer_heads); | 3045 | buffer_heads_over_limit = (tot > max_buffer_heads); |
| 3046 | } | 3046 | } |
| 3047 | 3047 | ||
| 3048 | struct buffer_head *alloc_buffer_head(unsigned int __nocast gfp_flags) | 3048 | struct buffer_head *alloc_buffer_head(gfp_t gfp_flags) |
| 3049 | { | 3049 | { |
| 3050 | struct buffer_head *ret = kmem_cache_alloc(bh_cachep, gfp_flags); | 3050 | struct buffer_head *ret = kmem_cache_alloc(bh_cachep, gfp_flags); |
| 3051 | if (ret) { | 3051 | if (ret) { |
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index fd0f0f050e1d..452fc1fdbd32 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c | |||
| @@ -50,6 +50,7 @@ static void hfsplus_read_inode(struct inode *inode) | |||
| 50 | init_MUTEX(&HFSPLUS_I(inode).extents_lock); | 50 | init_MUTEX(&HFSPLUS_I(inode).extents_lock); |
| 51 | HFSPLUS_I(inode).flags = 0; | 51 | HFSPLUS_I(inode).flags = 0; |
| 52 | HFSPLUS_I(inode).rsrc_inode = NULL; | 52 | HFSPLUS_I(inode).rsrc_inode = NULL; |
| 53 | atomic_set(&HFSPLUS_I(inode).opencnt, 0); | ||
| 53 | 54 | ||
| 54 | if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID) { | 55 | if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID) { |
| 55 | read_inode: | 56 | read_inode: |
diff --git a/fs/inotify.c b/fs/inotify.c index a37e9fb1da58..9fbaebfdf40b 100644 --- a/fs/inotify.c +++ b/fs/inotify.c | |||
| @@ -176,6 +176,7 @@ static inline void put_inotify_dev(struct inotify_device *dev) | |||
| 176 | if (atomic_dec_and_test(&dev->count)) { | 176 | if (atomic_dec_and_test(&dev->count)) { |
| 177 | atomic_dec(&dev->user->inotify_devs); | 177 | atomic_dec(&dev->user->inotify_devs); |
| 178 | free_uid(dev->user); | 178 | free_uid(dev->user); |
| 179 | idr_destroy(&dev->idr); | ||
| 179 | kfree(dev); | 180 | kfree(dev); |
| 180 | } | 181 | } |
| 181 | } | 182 | } |
diff --git a/fs/mpage.c b/fs/mpage.c index bb9aebe93862..c5adcdddf3cc 100644 --- a/fs/mpage.c +++ b/fs/mpage.c | |||
| @@ -102,7 +102,7 @@ static struct bio *mpage_bio_submit(int rw, struct bio *bio) | |||
| 102 | static struct bio * | 102 | static struct bio * |
| 103 | mpage_alloc(struct block_device *bdev, | 103 | mpage_alloc(struct block_device *bdev, |
| 104 | sector_t first_sector, int nr_vecs, | 104 | sector_t first_sector, int nr_vecs, |
| 105 | unsigned int __nocast gfp_flags) | 105 | gfp_t gfp_flags) |
| 106 | { | 106 | { |
| 107 | struct bio *bio; | 107 | struct bio *bio; |
| 108 | 108 | ||
diff --git a/fs/namei.c b/fs/namei.c index 043d587216b5..aa62dbda93ac 100644 --- a/fs/namei.c +++ b/fs/namei.c | |||
| @@ -1551,19 +1551,19 @@ do_link: | |||
| 1551 | if (nd->last_type != LAST_NORM) | 1551 | if (nd->last_type != LAST_NORM) |
| 1552 | goto exit; | 1552 | goto exit; |
| 1553 | if (nd->last.name[nd->last.len]) { | 1553 | if (nd->last.name[nd->last.len]) { |
| 1554 | putname(nd->last.name); | 1554 | __putname(nd->last.name); |
| 1555 | goto exit; | 1555 | goto exit; |
| 1556 | } | 1556 | } |
| 1557 | error = -ELOOP; | 1557 | error = -ELOOP; |
| 1558 | if (count++==32) { | 1558 | if (count++==32) { |
| 1559 | putname(nd->last.name); | 1559 | __putname(nd->last.name); |
| 1560 | goto exit; | 1560 | goto exit; |
| 1561 | } | 1561 | } |
| 1562 | dir = nd->dentry; | 1562 | dir = nd->dentry; |
| 1563 | down(&dir->d_inode->i_sem); | 1563 | down(&dir->d_inode->i_sem); |
| 1564 | path.dentry = __lookup_hash(&nd->last, nd->dentry, nd); | 1564 | path.dentry = __lookup_hash(&nd->last, nd->dentry, nd); |
| 1565 | path.mnt = nd->mnt; | 1565 | path.mnt = nd->mnt; |
| 1566 | putname(nd->last.name); | 1566 | __putname(nd->last.name); |
| 1567 | goto do_last; | 1567 | goto do_last; |
| 1568 | } | 1568 | } |
| 1569 | 1569 | ||
diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index d7f7eb669d03..4a36839f0bbd 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c | |||
| @@ -85,6 +85,10 @@ int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct | |||
| 85 | struct nfs_delegation *delegation; | 85 | struct nfs_delegation *delegation; |
| 86 | int status = 0; | 86 | int status = 0; |
| 87 | 87 | ||
| 88 | /* Ensure we first revalidate the attributes and page cache! */ | ||
| 89 | if ((nfsi->cache_validity & (NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_ATTR))) | ||
| 90 | __nfs_revalidate_inode(NFS_SERVER(inode), inode); | ||
| 91 | |||
| 88 | delegation = nfs_alloc_delegation(); | 92 | delegation = nfs_alloc_delegation(); |
| 89 | if (delegation == NULL) | 93 | if (delegation == NULL) |
| 90 | return -ENOMEM; | 94 | return -ENOMEM; |
diff --git a/fs/nfs/file.c b/fs/nfs/file.c index f6b9eda925c5..6bdcfa95de94 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c | |||
| @@ -137,7 +137,8 @@ static int nfs_revalidate_file(struct inode *inode, struct file *filp) | |||
| 137 | struct nfs_inode *nfsi = NFS_I(inode); | 137 | struct nfs_inode *nfsi = NFS_I(inode); |
| 138 | int retval = 0; | 138 | int retval = 0; |
| 139 | 139 | ||
| 140 | if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE) || nfs_attribute_timeout(inode)) | 140 | if ((nfsi->cache_validity & (NFS_INO_REVAL_PAGECACHE|NFS_INO_INVALID_ATTR)) |
| 141 | || nfs_attribute_timeout(inode)) | ||
| 141 | retval = __nfs_revalidate_inode(NFS_SERVER(inode), inode); | 142 | retval = __nfs_revalidate_inode(NFS_SERVER(inode), inode); |
| 142 | nfs_revalidate_mapping(inode, filp->f_mapping); | 143 | nfs_revalidate_mapping(inode, filp->f_mapping); |
| 143 | return 0; | 144 | return 0; |
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 6922469d6fc5..d4eadeea128e 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
| @@ -877,12 +877,10 @@ static int nfs_wait_on_inode(struct inode *inode) | |||
| 877 | sigset_t oldmask; | 877 | sigset_t oldmask; |
| 878 | int error; | 878 | int error; |
| 879 | 879 | ||
| 880 | atomic_inc(&inode->i_count); | ||
| 881 | rpc_clnt_sigmask(clnt, &oldmask); | 880 | rpc_clnt_sigmask(clnt, &oldmask); |
| 882 | error = wait_on_bit_lock(&nfsi->flags, NFS_INO_REVALIDATING, | 881 | error = wait_on_bit_lock(&nfsi->flags, NFS_INO_REVALIDATING, |
| 883 | nfs_wait_schedule, TASK_INTERRUPTIBLE); | 882 | nfs_wait_schedule, TASK_INTERRUPTIBLE); |
| 884 | rpc_clnt_sigunmask(clnt, &oldmask); | 883 | rpc_clnt_sigunmask(clnt, &oldmask); |
| 885 | iput(inode); | ||
| 886 | 884 | ||
| 887 | return error; | 885 | return error; |
| 888 | } | 886 | } |
| @@ -1226,10 +1224,6 @@ int nfs_refresh_inode(struct inode *inode, struct nfs_fattr *fattr) | |||
| 1226 | loff_t cur_size, new_isize; | 1224 | loff_t cur_size, new_isize; |
| 1227 | int data_unstable; | 1225 | int data_unstable; |
| 1228 | 1226 | ||
| 1229 | /* Do we hold a delegation? */ | ||
| 1230 | if (nfs_have_delegation(inode, FMODE_READ)) | ||
| 1231 | return 0; | ||
| 1232 | |||
| 1233 | spin_lock(&inode->i_lock); | 1227 | spin_lock(&inode->i_lock); |
| 1234 | 1228 | ||
| 1235 | /* Are we in the process of updating data on the server? */ | 1229 | /* Are we in the process of updating data on the server? */ |
| @@ -1350,7 +1344,8 @@ static int nfs_update_inode(struct inode *inode, struct nfs_fattr *fattr, unsign | |||
| 1350 | nfsi->read_cache_jiffies = fattr->timestamp; | 1344 | nfsi->read_cache_jiffies = fattr->timestamp; |
| 1351 | 1345 | ||
| 1352 | /* Are we racing with known updates of the metadata on the server? */ | 1346 | /* Are we racing with known updates of the metadata on the server? */ |
| 1353 | data_unstable = ! nfs_verify_change_attribute(inode, verifier); | 1347 | data_unstable = ! (nfs_verify_change_attribute(inode, verifier) || |
| 1348 | (nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE)); | ||
| 1354 | 1349 | ||
| 1355 | /* Check if our cached file size is stale */ | 1350 | /* Check if our cached file size is stale */ |
| 1356 | new_isize = nfs_size_to_loff_t(fattr->size); | 1351 | new_isize = nfs_size_to_loff_t(fattr->size); |
diff --git a/fs/nfs_common/nfsacl.c b/fs/nfs_common/nfsacl.c index 251e5a1bb1c4..0c2be8c0307d 100644 --- a/fs/nfs_common/nfsacl.c +++ b/fs/nfs_common/nfsacl.c | |||
| @@ -48,43 +48,26 @@ xdr_nfsace_encode(struct xdr_array2_desc *desc, void *elem) | |||
| 48 | (struct nfsacl_encode_desc *) desc; | 48 | (struct nfsacl_encode_desc *) desc; |
| 49 | u32 *p = (u32 *) elem; | 49 | u32 *p = (u32 *) elem; |
| 50 | 50 | ||
| 51 | if (nfsacl_desc->count < nfsacl_desc->acl->a_count) { | 51 | struct posix_acl_entry *entry = |
| 52 | struct posix_acl_entry *entry = | 52 | &nfsacl_desc->acl->a_entries[nfsacl_desc->count++]; |
| 53 | &nfsacl_desc->acl->a_entries[nfsacl_desc->count++]; | ||
| 54 | 53 | ||
| 55 | *p++ = htonl(entry->e_tag | nfsacl_desc->typeflag); | 54 | *p++ = htonl(entry->e_tag | nfsacl_desc->typeflag); |
| 56 | switch(entry->e_tag) { | 55 | switch(entry->e_tag) { |
| 57 | case ACL_USER_OBJ: | 56 | case ACL_USER_OBJ: |
| 58 | *p++ = htonl(nfsacl_desc->uid); | 57 | *p++ = htonl(nfsacl_desc->uid); |
| 59 | break; | 58 | break; |
| 60 | case ACL_GROUP_OBJ: | 59 | case ACL_GROUP_OBJ: |
| 61 | *p++ = htonl(nfsacl_desc->gid); | 60 | *p++ = htonl(nfsacl_desc->gid); |
| 62 | break; | 61 | break; |
| 63 | case ACL_USER: | 62 | case ACL_USER: |
| 64 | case ACL_GROUP: | 63 | case ACL_GROUP: |
| 65 | *p++ = htonl(entry->e_id); | 64 | *p++ = htonl(entry->e_id); |
| 66 | break; | 65 | break; |
| 67 | default: /* Solaris depends on that! */ | 66 | default: /* Solaris depends on that! */ |
| 68 | *p++ = 0; | 67 | *p++ = 0; |
| 69 | break; | 68 | break; |
| 70 | } | ||
| 71 | *p++ = htonl(entry->e_perm & S_IRWXO); | ||
| 72 | } else { | ||
| 73 | const struct posix_acl_entry *pa, *pe; | ||
| 74 | int group_obj_perm = ACL_READ|ACL_WRITE|ACL_EXECUTE; | ||
| 75 | |||
| 76 | FOREACH_ACL_ENTRY(pa, nfsacl_desc->acl, pe) { | ||
| 77 | if (pa->e_tag == ACL_GROUP_OBJ) { | ||
| 78 | group_obj_perm = pa->e_perm & S_IRWXO; | ||
| 79 | break; | ||
| 80 | } | ||
| 81 | } | ||
| 82 | /* fake up ACL_MASK entry */ | ||
| 83 | *p++ = htonl(ACL_MASK | nfsacl_desc->typeflag); | ||
| 84 | *p++ = htonl(0); | ||
| 85 | *p++ = htonl(group_obj_perm); | ||
| 86 | } | 69 | } |
| 87 | 70 | *p++ = htonl(entry->e_perm & S_IRWXO); | |
| 88 | return 0; | 71 | return 0; |
| 89 | } | 72 | } |
| 90 | 73 | ||
| @@ -105,11 +88,28 @@ nfsacl_encode(struct xdr_buf *buf, unsigned int base, struct inode *inode, | |||
| 105 | .gid = inode->i_gid, | 88 | .gid = inode->i_gid, |
| 106 | }; | 89 | }; |
| 107 | int err; | 90 | int err; |
| 91 | struct posix_acl *acl2 = NULL; | ||
| 108 | 92 | ||
| 109 | if (entries > NFS_ACL_MAX_ENTRIES || | 93 | if (entries > NFS_ACL_MAX_ENTRIES || |
| 110 | xdr_encode_word(buf, base, entries)) | 94 | xdr_encode_word(buf, base, entries)) |
| 111 | return -EINVAL; | 95 | return -EINVAL; |
| 96 | if (encode_entries && acl && acl->a_count == 3) { | ||
| 97 | /* Fake up an ACL_MASK entry. */ | ||
| 98 | acl2 = posix_acl_alloc(4, GFP_KERNEL); | ||
| 99 | if (!acl2) | ||
| 100 | return -ENOMEM; | ||
| 101 | /* Insert entries in canonical order: other orders seem | ||
| 102 | to confuse Solaris VxFS. */ | ||
| 103 | acl2->a_entries[0] = acl->a_entries[0]; /* ACL_USER_OBJ */ | ||
| 104 | acl2->a_entries[1] = acl->a_entries[1]; /* ACL_GROUP_OBJ */ | ||
| 105 | acl2->a_entries[2] = acl->a_entries[1]; /* ACL_MASK */ | ||
| 106 | acl2->a_entries[2].e_tag = ACL_MASK; | ||
| 107 | acl2->a_entries[3] = acl->a_entries[2]; /* ACL_OTHER */ | ||
| 108 | nfsacl_desc.acl = acl2; | ||
| 109 | } | ||
| 112 | err = xdr_encode_array2(buf, base + 4, &nfsacl_desc.desc); | 110 | err = xdr_encode_array2(buf, base + 4, &nfsacl_desc.desc); |
| 111 | if (acl2) | ||
| 112 | posix_acl_release(acl2); | ||
| 113 | if (!err) | 113 | if (!err) |
| 114 | err = 8 + nfsacl_desc.desc.elem_size * | 114 | err = 8 + nfsacl_desc.desc.elem_size * |
| 115 | nfsacl_desc.desc.array_len; | 115 | nfsacl_desc.desc.array_len; |
diff --git a/fs/ntfs/malloc.h b/fs/ntfs/malloc.h index 006946efca8c..590887b943f5 100644 --- a/fs/ntfs/malloc.h +++ b/fs/ntfs/malloc.h | |||
| @@ -40,7 +40,7 @@ | |||
| 40 | * Depending on @gfp_mask the allocation may be guaranteed to succeed. | 40 | * Depending on @gfp_mask the allocation may be guaranteed to succeed. |
| 41 | */ | 41 | */ |
| 42 | static inline void *__ntfs_malloc(unsigned long size, | 42 | static inline void *__ntfs_malloc(unsigned long size, |
| 43 | unsigned int __nocast gfp_mask) | 43 | gfp_t gfp_mask) |
| 44 | { | 44 | { |
| 45 | if (likely(size <= PAGE_SIZE)) { | 45 | if (likely(size <= PAGE_SIZE)) { |
| 46 | BUG_ON(!size); | 46 | BUG_ON(!size); |
diff --git a/fs/posix_acl.c b/fs/posix_acl.c index 296480e96dd5..6c8dcf7613fd 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c | |||
| @@ -35,7 +35,7 @@ EXPORT_SYMBOL(posix_acl_permission); | |||
| 35 | * Allocate a new ACL with the specified number of entries. | 35 | * Allocate a new ACL with the specified number of entries. |
| 36 | */ | 36 | */ |
| 37 | struct posix_acl * | 37 | struct posix_acl * |
| 38 | posix_acl_alloc(int count, unsigned int __nocast flags) | 38 | posix_acl_alloc(int count, gfp_t flags) |
| 39 | { | 39 | { |
| 40 | const size_t size = sizeof(struct posix_acl) + | 40 | const size_t size = sizeof(struct posix_acl) + |
| 41 | count * sizeof(struct posix_acl_entry); | 41 | count * sizeof(struct posix_acl_entry); |
| @@ -51,7 +51,7 @@ posix_acl_alloc(int count, unsigned int __nocast flags) | |||
| 51 | * Clone an ACL. | 51 | * Clone an ACL. |
| 52 | */ | 52 | */ |
| 53 | struct posix_acl * | 53 | struct posix_acl * |
| 54 | posix_acl_clone(const struct posix_acl *acl, unsigned int __nocast flags) | 54 | posix_acl_clone(const struct posix_acl *acl, gfp_t flags) |
| 55 | { | 55 | { |
| 56 | struct posix_acl *clone = NULL; | 56 | struct posix_acl *clone = NULL; |
| 57 | 57 | ||
| @@ -185,7 +185,7 @@ posix_acl_equiv_mode(const struct posix_acl *acl, mode_t *mode_p) | |||
| 185 | * Create an ACL representing the file mode permission bits of an inode. | 185 | * Create an ACL representing the file mode permission bits of an inode. |
| 186 | */ | 186 | */ |
| 187 | struct posix_acl * | 187 | struct posix_acl * |
| 188 | posix_acl_from_mode(mode_t mode, unsigned int __nocast flags) | 188 | posix_acl_from_mode(mode_t mode, gfp_t flags) |
| 189 | { | 189 | { |
| 190 | struct posix_acl *acl = posix_acl_alloc(3, flags); | 190 | struct posix_acl *acl = posix_acl_alloc(3, flags); |
| 191 | if (!acl) | 191 | if (!acl) |
diff --git a/fs/proc/base.c b/fs/proc/base.c index 3b33f94020db..a170450aadb1 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c | |||
| @@ -103,7 +103,9 @@ enum pid_directory_inos { | |||
| 103 | PROC_TGID_NUMA_MAPS, | 103 | PROC_TGID_NUMA_MAPS, |
| 104 | PROC_TGID_MOUNTS, | 104 | PROC_TGID_MOUNTS, |
| 105 | PROC_TGID_WCHAN, | 105 | PROC_TGID_WCHAN, |
| 106 | #ifdef CONFIG_MMU | ||
| 106 | PROC_TGID_SMAPS, | 107 | PROC_TGID_SMAPS, |
| 108 | #endif | ||
| 107 | #ifdef CONFIG_SCHEDSTATS | 109 | #ifdef CONFIG_SCHEDSTATS |
| 108 | PROC_TGID_SCHEDSTAT, | 110 | PROC_TGID_SCHEDSTAT, |
| 109 | #endif | 111 | #endif |
| @@ -141,7 +143,9 @@ enum pid_directory_inos { | |||
| 141 | PROC_TID_NUMA_MAPS, | 143 | PROC_TID_NUMA_MAPS, |
| 142 | PROC_TID_MOUNTS, | 144 | PROC_TID_MOUNTS, |
| 143 | PROC_TID_WCHAN, | 145 | PROC_TID_WCHAN, |
| 146 | #ifdef CONFIG_MMU | ||
| 144 | PROC_TID_SMAPS, | 147 | PROC_TID_SMAPS, |
| 148 | #endif | ||
| 145 | #ifdef CONFIG_SCHEDSTATS | 149 | #ifdef CONFIG_SCHEDSTATS |
| 146 | PROC_TID_SCHEDSTAT, | 150 | PROC_TID_SCHEDSTAT, |
| 147 | #endif | 151 | #endif |
| @@ -195,7 +199,9 @@ static struct pid_entry tgid_base_stuff[] = { | |||
| 195 | E(PROC_TGID_ROOT, "root", S_IFLNK|S_IRWXUGO), | 199 | E(PROC_TGID_ROOT, "root", S_IFLNK|S_IRWXUGO), |
| 196 | E(PROC_TGID_EXE, "exe", S_IFLNK|S_IRWXUGO), | 200 | E(PROC_TGID_EXE, "exe", S_IFLNK|S_IRWXUGO), |
| 197 | E(PROC_TGID_MOUNTS, "mounts", S_IFREG|S_IRUGO), | 201 | E(PROC_TGID_MOUNTS, "mounts", S_IFREG|S_IRUGO), |
| 202 | #ifdef CONFIG_MMU | ||
| 198 | E(PROC_TGID_SMAPS, "smaps", S_IFREG|S_IRUGO), | 203 | E(PROC_TGID_SMAPS, "smaps", S_IFREG|S_IRUGO), |
| 204 | #endif | ||
| 199 | #ifdef CONFIG_SECURITY | 205 | #ifdef CONFIG_SECURITY |
| 200 | E(PROC_TGID_ATTR, "attr", S_IFDIR|S_IRUGO|S_IXUGO), | 206 | E(PROC_TGID_ATTR, "attr", S_IFDIR|S_IRUGO|S_IXUGO), |
| 201 | #endif | 207 | #endif |
| @@ -235,7 +241,9 @@ static struct pid_entry tid_base_stuff[] = { | |||
| 235 | E(PROC_TID_ROOT, "root", S_IFLNK|S_IRWXUGO), | 241 | E(PROC_TID_ROOT, "root", S_IFLNK|S_IRWXUGO), |
| 236 | E(PROC_TID_EXE, "exe", S_IFLNK|S_IRWXUGO), | 242 | E(PROC_TID_EXE, "exe", S_IFLNK|S_IRWXUGO), |
| 237 | E(PROC_TID_MOUNTS, "mounts", S_IFREG|S_IRUGO), | 243 | E(PROC_TID_MOUNTS, "mounts", S_IFREG|S_IRUGO), |
| 244 | #ifdef CONFIG_MMU | ||
| 238 | E(PROC_TID_SMAPS, "smaps", S_IFREG|S_IRUGO), | 245 | E(PROC_TID_SMAPS, "smaps", S_IFREG|S_IRUGO), |
| 246 | #endif | ||
| 239 | #ifdef CONFIG_SECURITY | 247 | #ifdef CONFIG_SECURITY |
| 240 | E(PROC_TID_ATTR, "attr", S_IFDIR|S_IRUGO|S_IXUGO), | 248 | E(PROC_TID_ATTR, "attr", S_IFDIR|S_IRUGO|S_IXUGO), |
| 241 | #endif | 249 | #endif |
| @@ -630,6 +638,7 @@ static struct file_operations proc_numa_maps_operations = { | |||
| 630 | }; | 638 | }; |
| 631 | #endif | 639 | #endif |
| 632 | 640 | ||
| 641 | #ifdef CONFIG_MMU | ||
| 633 | extern struct seq_operations proc_pid_smaps_op; | 642 | extern struct seq_operations proc_pid_smaps_op; |
| 634 | static int smaps_open(struct inode *inode, struct file *file) | 643 | static int smaps_open(struct inode *inode, struct file *file) |
| 635 | { | 644 | { |
| @@ -648,6 +657,7 @@ static struct file_operations proc_smaps_operations = { | |||
| 648 | .llseek = seq_lseek, | 657 | .llseek = seq_lseek, |
| 649 | .release = seq_release, | 658 | .release = seq_release, |
| 650 | }; | 659 | }; |
| 660 | #endif | ||
| 651 | 661 | ||
| 652 | extern struct seq_operations mounts_op; | 662 | extern struct seq_operations mounts_op; |
| 653 | static int mounts_open(struct inode *inode, struct file *file) | 663 | static int mounts_open(struct inode *inode, struct file *file) |
| @@ -1681,10 +1691,12 @@ static struct dentry *proc_pident_lookup(struct inode *dir, | |||
| 1681 | case PROC_TGID_MOUNTS: | 1691 | case PROC_TGID_MOUNTS: |
| 1682 | inode->i_fop = &proc_mounts_operations; | 1692 | inode->i_fop = &proc_mounts_operations; |
| 1683 | break; | 1693 | break; |
| 1694 | #ifdef CONFIG_MMU | ||
| 1684 | case PROC_TID_SMAPS: | 1695 | case PROC_TID_SMAPS: |
| 1685 | case PROC_TGID_SMAPS: | 1696 | case PROC_TGID_SMAPS: |
| 1686 | inode->i_fop = &proc_smaps_operations; | 1697 | inode->i_fop = &proc_smaps_operations; |
| 1687 | break; | 1698 | break; |
| 1699 | #endif | ||
| 1688 | #ifdef CONFIG_SECURITY | 1700 | #ifdef CONFIG_SECURITY |
| 1689 | case PROC_TID_ATTR: | 1701 | case PROC_TID_ATTR: |
| 1690 | inode->i_nlink = 2; | 1702 | inode->i_nlink = 2; |
diff --git a/fs/proc/nommu.c b/fs/proc/nommu.c index f3bf016d5ee3..cff10ab1af63 100644 --- a/fs/proc/nommu.c +++ b/fs/proc/nommu.c | |||
| @@ -91,6 +91,7 @@ static void *nommu_vma_list_start(struct seq_file *m, loff_t *_pos) | |||
| 91 | next = _rb; | 91 | next = _rb; |
| 92 | break; | 92 | break; |
| 93 | } | 93 | } |
| 94 | pos--; | ||
| 94 | } | 95 | } |
| 95 | 96 | ||
| 96 | return next; | 97 | return next; |
diff --git a/fs/relayfs/buffers.c b/fs/relayfs/buffers.c index 2aa8e2719999..84e21ffa5ca8 100644 --- a/fs/relayfs/buffers.c +++ b/fs/relayfs/buffers.c | |||
| @@ -109,7 +109,7 @@ static void *relay_alloc_buf(struct rchan_buf *buf, unsigned long size) | |||
| 109 | if (unlikely(!buf->page_array[i])) | 109 | if (unlikely(!buf->page_array[i])) |
| 110 | goto depopulate; | 110 | goto depopulate; |
| 111 | } | 111 | } |
| 112 | mem = vmap(buf->page_array, n_pages, GFP_KERNEL, PAGE_KERNEL); | 112 | mem = vmap(buf->page_array, n_pages, VM_MAP, PAGE_KERNEL); |
| 113 | if (!mem) | 113 | if (!mem) |
| 114 | goto depopulate; | 114 | goto depopulate; |
| 115 | 115 | ||
diff --git a/fs/xfs/linux-2.6/kmem.c b/fs/xfs/linux-2.6/kmem.c index 4b184559f231..d2653b589b1c 100644 --- a/fs/xfs/linux-2.6/kmem.c +++ b/fs/xfs/linux-2.6/kmem.c | |||
| @@ -45,7 +45,7 @@ | |||
| 45 | 45 | ||
| 46 | 46 | ||
| 47 | void * | 47 | void * |
| 48 | kmem_alloc(size_t size, unsigned int __nocast flags) | 48 | kmem_alloc(size_t size, gfp_t flags) |
| 49 | { | 49 | { |
| 50 | int retries = 0; | 50 | int retries = 0; |
| 51 | unsigned int lflags = kmem_flags_convert(flags); | 51 | unsigned int lflags = kmem_flags_convert(flags); |
| @@ -67,7 +67,7 @@ kmem_alloc(size_t size, unsigned int __nocast flags) | |||
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | void * | 69 | void * |
| 70 | kmem_zalloc(size_t size, unsigned int __nocast flags) | 70 | kmem_zalloc(size_t size, gfp_t flags) |
| 71 | { | 71 | { |
| 72 | void *ptr; | 72 | void *ptr; |
| 73 | 73 | ||
| @@ -90,7 +90,7 @@ kmem_free(void *ptr, size_t size) | |||
| 90 | 90 | ||
| 91 | void * | 91 | void * |
| 92 | kmem_realloc(void *ptr, size_t newsize, size_t oldsize, | 92 | kmem_realloc(void *ptr, size_t newsize, size_t oldsize, |
| 93 | unsigned int __nocast flags) | 93 | gfp_t flags) |
| 94 | { | 94 | { |
| 95 | void *new; | 95 | void *new; |
| 96 | 96 | ||
| @@ -105,7 +105,7 @@ kmem_realloc(void *ptr, size_t newsize, size_t oldsize, | |||
| 105 | } | 105 | } |
| 106 | 106 | ||
| 107 | void * | 107 | void * |
| 108 | kmem_zone_alloc(kmem_zone_t *zone, unsigned int __nocast flags) | 108 | kmem_zone_alloc(kmem_zone_t *zone, gfp_t flags) |
| 109 | { | 109 | { |
| 110 | int retries = 0; | 110 | int retries = 0; |
| 111 | unsigned int lflags = kmem_flags_convert(flags); | 111 | unsigned int lflags = kmem_flags_convert(flags); |
| @@ -124,7 +124,7 @@ kmem_zone_alloc(kmem_zone_t *zone, unsigned int __nocast flags) | |||
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | void * | 126 | void * |
| 127 | kmem_zone_zalloc(kmem_zone_t *zone, unsigned int __nocast flags) | 127 | kmem_zone_zalloc(kmem_zone_t *zone, gfp_t flags) |
| 128 | { | 128 | { |
| 129 | void *ptr; | 129 | void *ptr; |
| 130 | 130 | ||
diff --git a/fs/xfs/linux-2.6/kmem.h b/fs/xfs/linux-2.6/kmem.h index 109fcf27e256..ee7010f085bc 100644 --- a/fs/xfs/linux-2.6/kmem.h +++ b/fs/xfs/linux-2.6/kmem.h | |||
| @@ -81,7 +81,7 @@ typedef unsigned long xfs_pflags_t; | |||
| 81 | *(NSTATEP) = *(OSTATEP); \ | 81 | *(NSTATEP) = *(OSTATEP); \ |
| 82 | } while (0) | 82 | } while (0) |
| 83 | 83 | ||
| 84 | static __inline unsigned int kmem_flags_convert(unsigned int __nocast flags) | 84 | static __inline unsigned int kmem_flags_convert(gfp_t flags) |
| 85 | { | 85 | { |
| 86 | unsigned int lflags = __GFP_NOWARN; /* we'll report problems, if need be */ | 86 | unsigned int lflags = __GFP_NOWARN; /* we'll report problems, if need be */ |
| 87 | 87 | ||
| @@ -125,13 +125,12 @@ kmem_zone_destroy(kmem_zone_t *zone) | |||
| 125 | BUG(); | 125 | BUG(); |
| 126 | } | 126 | } |
| 127 | 127 | ||
| 128 | extern void *kmem_zone_zalloc(kmem_zone_t *, unsigned int __nocast); | 128 | extern void *kmem_zone_zalloc(kmem_zone_t *, gfp_t); |
| 129 | extern void *kmem_zone_alloc(kmem_zone_t *, unsigned int __nocast); | 129 | extern void *kmem_zone_alloc(kmem_zone_t *, gfp_t); |
| 130 | 130 | ||
| 131 | extern void *kmem_alloc(size_t, unsigned int __nocast); | 131 | extern void *kmem_alloc(size_t, gfp_t); |
| 132 | extern void *kmem_realloc(void *, size_t, size_t, | 132 | extern void *kmem_realloc(void *, size_t, size_t, gfp_t); |
| 133 | unsigned int __nocast); | 133 | extern void *kmem_zalloc(size_t, gfp_t); |
| 134 | extern void *kmem_zalloc(size_t, unsigned int __nocast); | ||
| 135 | extern void kmem_free(void *, size_t); | 134 | extern void kmem_free(void *, size_t); |
| 136 | 135 | ||
| 137 | typedef struct shrinker *kmem_shaker_t; | 136 | typedef struct shrinker *kmem_shaker_t; |
diff --git a/include/asm-alpha/atomic.h b/include/asm-alpha/atomic.h index 1b383e3cb68c..20ac3d95ecd9 100644 --- a/include/asm-alpha/atomic.h +++ b/include/asm-alpha/atomic.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #ifndef _ALPHA_ATOMIC_H | 1 | #ifndef _ALPHA_ATOMIC_H |
| 2 | #define _ALPHA_ATOMIC_H | 2 | #define _ALPHA_ATOMIC_H |
| 3 | 3 | ||
| 4 | #include <asm/barrier.h> | ||
| 5 | |||
| 4 | /* | 6 | /* |
| 5 | * Atomic operations that C can't guarantee us. Useful for | 7 | * Atomic operations that C can't guarantee us. Useful for |
| 6 | * resource counting etc... | 8 | * resource counting etc... |
| @@ -100,18 +102,19 @@ static __inline__ void atomic64_sub(long i, atomic64_t * v) | |||
| 100 | static __inline__ long atomic_add_return(int i, atomic_t * v) | 102 | static __inline__ long atomic_add_return(int i, atomic_t * v) |
| 101 | { | 103 | { |
| 102 | long temp, result; | 104 | long temp, result; |
| 105 | smp_mb(); | ||
| 103 | __asm__ __volatile__( | 106 | __asm__ __volatile__( |
| 104 | "1: ldl_l %0,%1\n" | 107 | "1: ldl_l %0,%1\n" |
| 105 | " addl %0,%3,%2\n" | 108 | " addl %0,%3,%2\n" |
| 106 | " addl %0,%3,%0\n" | 109 | " addl %0,%3,%0\n" |
| 107 | " stl_c %0,%1\n" | 110 | " stl_c %0,%1\n" |
| 108 | " beq %0,2f\n" | 111 | " beq %0,2f\n" |
| 109 | " mb\n" | ||
| 110 | ".subsection 2\n" | 112 | ".subsection 2\n" |
| 111 | "2: br 1b\n" | 113 | "2: br 1b\n" |
| 112 | ".previous" | 114 | ".previous" |
| 113 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 115 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
| 114 | :"Ir" (i), "m" (v->counter) : "memory"); | 116 | :"Ir" (i), "m" (v->counter) : "memory"); |
| 117 | smp_mb(); | ||
| 115 | return result; | 118 | return result; |
| 116 | } | 119 | } |
| 117 | 120 | ||
| @@ -120,54 +123,57 @@ static __inline__ long atomic_add_return(int i, atomic_t * v) | |||
| 120 | static __inline__ long atomic64_add_return(long i, atomic64_t * v) | 123 | static __inline__ long atomic64_add_return(long i, atomic64_t * v) |
| 121 | { | 124 | { |
| 122 | long temp, result; | 125 | long temp, result; |
| 126 | smp_mb(); | ||
| 123 | __asm__ __volatile__( | 127 | __asm__ __volatile__( |
| 124 | "1: ldq_l %0,%1\n" | 128 | "1: ldq_l %0,%1\n" |
| 125 | " addq %0,%3,%2\n" | 129 | " addq %0,%3,%2\n" |
| 126 | " addq %0,%3,%0\n" | 130 | " addq %0,%3,%0\n" |
| 127 | " stq_c %0,%1\n" | 131 | " stq_c %0,%1\n" |
| 128 | " beq %0,2f\n" | 132 | " beq %0,2f\n" |
| 129 | " mb\n" | ||
| 130 | ".subsection 2\n" | 133 | ".subsection 2\n" |
| 131 | "2: br 1b\n" | 134 | "2: br 1b\n" |
| 132 | ".previous" | 135 | ".previous" |
| 133 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 136 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
| 134 | :"Ir" (i), "m" (v->counter) : "memory"); | 137 | :"Ir" (i), "m" (v->counter) : "memory"); |
| 138 | smp_mb(); | ||
| 135 | return result; | 139 | return result; |
| 136 | } | 140 | } |
| 137 | 141 | ||
| 138 | static __inline__ long atomic_sub_return(int i, atomic_t * v) | 142 | static __inline__ long atomic_sub_return(int i, atomic_t * v) |
| 139 | { | 143 | { |
| 140 | long temp, result; | 144 | long temp, result; |
| 145 | smp_mb(); | ||
| 141 | __asm__ __volatile__( | 146 | __asm__ __volatile__( |
| 142 | "1: ldl_l %0,%1\n" | 147 | "1: ldl_l %0,%1\n" |
| 143 | " subl %0,%3,%2\n" | 148 | " subl %0,%3,%2\n" |
| 144 | " subl %0,%3,%0\n" | 149 | " subl %0,%3,%0\n" |
| 145 | " stl_c %0,%1\n" | 150 | " stl_c %0,%1\n" |
| 146 | " beq %0,2f\n" | 151 | " beq %0,2f\n" |
| 147 | " mb\n" | ||
| 148 | ".subsection 2\n" | 152 | ".subsection 2\n" |
| 149 | "2: br 1b\n" | 153 | "2: br 1b\n" |
| 150 | ".previous" | 154 | ".previous" |
| 151 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 155 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
| 152 | :"Ir" (i), "m" (v->counter) : "memory"); | 156 | :"Ir" (i), "m" (v->counter) : "memory"); |
| 157 | smp_mb(); | ||
| 153 | return result; | 158 | return result; |
| 154 | } | 159 | } |
| 155 | 160 | ||
| 156 | static __inline__ long atomic64_sub_return(long i, atomic64_t * v) | 161 | static __inline__ long atomic64_sub_return(long i, atomic64_t * v) |
| 157 | { | 162 | { |
| 158 | long temp, result; | 163 | long temp, result; |
| 164 | smp_mb(); | ||
| 159 | __asm__ __volatile__( | 165 | __asm__ __volatile__( |
| 160 | "1: ldq_l %0,%1\n" | 166 | "1: ldq_l %0,%1\n" |
| 161 | " subq %0,%3,%2\n" | 167 | " subq %0,%3,%2\n" |
| 162 | " subq %0,%3,%0\n" | 168 | " subq %0,%3,%0\n" |
| 163 | " stq_c %0,%1\n" | 169 | " stq_c %0,%1\n" |
| 164 | " beq %0,2f\n" | 170 | " beq %0,2f\n" |
| 165 | " mb\n" | ||
| 166 | ".subsection 2\n" | 171 | ".subsection 2\n" |
| 167 | "2: br 1b\n" | 172 | "2: br 1b\n" |
| 168 | ".previous" | 173 | ".previous" |
| 169 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) | 174 | :"=&r" (temp), "=m" (v->counter), "=&r" (result) |
| 170 | :"Ir" (i), "m" (v->counter) : "memory"); | 175 | :"Ir" (i), "m" (v->counter) : "memory"); |
| 176 | smp_mb(); | ||
| 171 | return result; | 177 | return result; |
| 172 | } | 178 | } |
| 173 | 179 | ||
diff --git a/include/asm-alpha/barrier.h b/include/asm-alpha/barrier.h new file mode 100644 index 000000000000..229c83fe77cb --- /dev/null +++ b/include/asm-alpha/barrier.h | |||
| @@ -0,0 +1,34 @@ | |||
| 1 | #ifndef __BARRIER_H | ||
| 2 | #define __BARRIER_H | ||
| 3 | |||
| 4 | #define mb() \ | ||
| 5 | __asm__ __volatile__("mb": : :"memory") | ||
| 6 | |||
| 7 | #define rmb() \ | ||
| 8 | __asm__ __volatile__("mb": : :"memory") | ||
| 9 | |||
| 10 | #define wmb() \ | ||
| 11 | __asm__ __volatile__("wmb": : :"memory") | ||
| 12 | |||
| 13 | #define read_barrier_depends() \ | ||
| 14 | __asm__ __volatile__("mb": : :"memory") | ||
| 15 | |||
| 16 | #ifdef CONFIG_SMP | ||
| 17 | #define smp_mb() mb() | ||
| 18 | #define smp_rmb() rmb() | ||
| 19 | #define smp_wmb() wmb() | ||
| 20 | #define smp_read_barrier_depends() read_barrier_depends() | ||
| 21 | #else | ||
| 22 | #define smp_mb() barrier() | ||
| 23 | #define smp_rmb() barrier() | ||
| 24 | #define smp_wmb() barrier() | ||
| 25 | #define smp_read_barrier_depends() barrier() | ||
| 26 | #endif | ||
| 27 | |||
| 28 | #define set_mb(var, value) \ | ||
| 29 | do { var = value; mb(); } while (0) | ||
| 30 | |||
| 31 | #define set_wmb(var, value) \ | ||
| 32 | do { var = value; wmb(); } while (0) | ||
| 33 | |||
| 34 | #endif /* __BARRIER_H */ | ||
diff --git a/include/asm-alpha/system.h b/include/asm-alpha/system.h index bdb4d66418f1..050e86d12891 100644 --- a/include/asm-alpha/system.h +++ b/include/asm-alpha/system.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #include <linux/config.h> | 4 | #include <linux/config.h> |
| 5 | #include <asm/pal.h> | 5 | #include <asm/pal.h> |
| 6 | #include <asm/page.h> | 6 | #include <asm/page.h> |
| 7 | #include <asm/barrier.h> | ||
| 7 | 8 | ||
| 8 | /* | 9 | /* |
| 9 | * System defines.. Note that this is included both from .c and .S | 10 | * System defines.. Note that this is included both from .c and .S |
| @@ -139,36 +140,6 @@ extern void halt(void) __attribute__((noreturn)); | |||
| 139 | struct task_struct; | 140 | struct task_struct; |
| 140 | extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); | 141 | extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); |
| 141 | 142 | ||
| 142 | #define mb() \ | ||
| 143 | __asm__ __volatile__("mb": : :"memory") | ||
| 144 | |||
| 145 | #define rmb() \ | ||
| 146 | __asm__ __volatile__("mb": : :"memory") | ||
| 147 | |||
| 148 | #define wmb() \ | ||
| 149 | __asm__ __volatile__("wmb": : :"memory") | ||
| 150 | |||
| 151 | #define read_barrier_depends() \ | ||
| 152 | __asm__ __volatile__("mb": : :"memory") | ||
| 153 | |||
| 154 | #ifdef CONFIG_SMP | ||
| 155 | #define smp_mb() mb() | ||
| 156 | #define smp_rmb() rmb() | ||
| 157 | #define smp_wmb() wmb() | ||
| 158 | #define smp_read_barrier_depends() read_barrier_depends() | ||
| 159 | #else | ||
| 160 | #define smp_mb() barrier() | ||
| 161 | #define smp_rmb() barrier() | ||
| 162 | #define smp_wmb() barrier() | ||
| 163 | #define smp_read_barrier_depends() barrier() | ||
| 164 | #endif | ||
| 165 | |||
| 166 | #define set_mb(var, value) \ | ||
| 167 | do { var = value; mb(); } while (0) | ||
| 168 | |||
| 169 | #define set_wmb(var, value) \ | ||
| 170 | do { var = value; wmb(); } while (0) | ||
| 171 | |||
| 172 | #define imb() \ | 143 | #define imb() \ |
| 173 | __asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") | 144 | __asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") |
| 174 | 145 | ||
diff --git a/include/asm-arm/arch-h720x/system.h b/include/asm-arm/arch-h720x/system.h index 0b025e227ec2..09eda84592ff 100644 --- a/include/asm-arm/arch-h720x/system.h +++ b/include/asm-arm/arch-h720x/system.h | |||
| @@ -17,9 +17,11 @@ | |||
| 17 | static void arch_idle(void) | 17 | static void arch_idle(void) |
| 18 | { | 18 | { |
| 19 | CPU_REG (PMU_BASE, PMU_MODE) = PMU_MODE_IDLE; | 19 | CPU_REG (PMU_BASE, PMU_MODE) = PMU_MODE_IDLE; |
| 20 | __asm__ __volatile__( | 20 | nop(); |
| 21 | "mov r0, r0\n\t" | 21 | nop(); |
| 22 | "mov r0, r0"); | 22 | CPU_REG (PMU_BASE, PMU_MODE) = PMU_MODE_RUN; |
| 23 | nop(); | ||
| 24 | nop(); | ||
| 23 | } | 25 | } |
| 24 | 26 | ||
| 25 | 27 | ||
diff --git a/include/asm-arm/arch-imx/imx-regs.h b/include/asm-arm/arch-imx/imx-regs.h index 93b840e8fa60..a6912b3d8671 100644 --- a/include/asm-arm/arch-imx/imx-regs.h +++ b/include/asm-arm/arch-imx/imx-regs.h | |||
| @@ -76,6 +76,7 @@ | |||
| 76 | #define GPIO_PIN_MASK 0x1f | 76 | #define GPIO_PIN_MASK 0x1f |
| 77 | #define GPIO_PORT_MASK (0x3 << 5) | 77 | #define GPIO_PORT_MASK (0x3 << 5) |
| 78 | 78 | ||
| 79 | #define GPIO_PORT_SHIFT 5 | ||
| 79 | #define GPIO_PORTA (0<<5) | 80 | #define GPIO_PORTA (0<<5) |
| 80 | #define GPIO_PORTB (1<<5) | 81 | #define GPIO_PORTB (1<<5) |
| 81 | #define GPIO_PORTC (2<<5) | 82 | #define GPIO_PORTC (2<<5) |
| @@ -88,24 +89,37 @@ | |||
| 88 | #define GPIO_PF (0<<9) | 89 | #define GPIO_PF (0<<9) |
| 89 | #define GPIO_AF (1<<9) | 90 | #define GPIO_AF (1<<9) |
| 90 | 91 | ||
| 92 | #define GPIO_OCR_SHIFT 10 | ||
| 91 | #define GPIO_OCR_MASK (3<<10) | 93 | #define GPIO_OCR_MASK (3<<10) |
| 92 | #define GPIO_AIN (0<<10) | 94 | #define GPIO_AIN (0<<10) |
| 93 | #define GPIO_BIN (1<<10) | 95 | #define GPIO_BIN (1<<10) |
| 94 | #define GPIO_CIN (2<<10) | 96 | #define GPIO_CIN (2<<10) |
| 95 | #define GPIO_GPIO (3<<10) | 97 | #define GPIO_DR (3<<10) |
| 96 | 98 | ||
| 97 | #define GPIO_AOUT (1<<12) | 99 | #define GPIO_AOUT_SHIFT 12 |
| 98 | #define GPIO_BOUT (1<<13) | 100 | #define GPIO_AOUT_MASK (3<<12) |
| 101 | #define GPIO_AOUT (0<<12) | ||
| 102 | #define GPIO_AOUT_ISR (1<<12) | ||
| 103 | #define GPIO_AOUT_0 (2<<12) | ||
| 104 | #define GPIO_AOUT_1 (3<<12) | ||
| 105 | |||
| 106 | #define GPIO_BOUT_SHIFT 14 | ||
| 107 | #define GPIO_BOUT_MASK (3<<14) | ||
| 108 | #define GPIO_BOUT (0<<14) | ||
| 109 | #define GPIO_BOUT_ISR (1<<14) | ||
| 110 | #define GPIO_BOUT_0 (2<<14) | ||
| 111 | #define GPIO_BOUT_1 (3<<14) | ||
| 112 | |||
| 113 | #define GPIO_GIUS (1<<16) | ||
| 99 | 114 | ||
| 100 | /* assignements for GPIO alternate/primary functions */ | 115 | /* assignements for GPIO alternate/primary functions */ |
| 101 | 116 | ||
| 102 | /* FIXME: This list is not completed. The correct directions are | 117 | /* FIXME: This list is not completed. The correct directions are |
| 103 | * missing on some (many) pins | 118 | * missing on some (many) pins |
| 104 | */ | 119 | */ |
| 105 | #define PA0_PF_A24 ( GPIO_PORTA | GPIO_PF | 0 ) | 120 | #define PA0_AIN_SPI2_CLK ( GPIO_GIUS | GPIO_PORTA | GPIO_OUT | 0 ) |
| 106 | #define PA0_AIN_SPI2_CLK ( GPIO_PORTA | GPIO_OUT | GPIO_AIN | 0 ) | ||
| 107 | #define PA0_AF_ETMTRACESYNC ( GPIO_PORTA | GPIO_AF | 0 ) | 121 | #define PA0_AF_ETMTRACESYNC ( GPIO_PORTA | GPIO_AF | 0 ) |
| 108 | #define PA1_AOUT_SPI2_RXD ( GPIO_PORTA | GPIO_IN | GPIO_AOUT | 1 ) | 122 | #define PA1_AOUT_SPI2_RXD ( GPIO_GIUS | GPIO_PORTA | GPIO_IN | 1 ) |
| 109 | #define PA1_PF_TIN ( GPIO_PORTA | GPIO_PF | 1 ) | 123 | #define PA1_PF_TIN ( GPIO_PORTA | GPIO_PF | 1 ) |
| 110 | #define PA2_PF_PWM0 ( GPIO_PORTA | GPIO_OUT | GPIO_PF | 2 ) | 124 | #define PA2_PF_PWM0 ( GPIO_PORTA | GPIO_OUT | GPIO_PF | 2 ) |
| 111 | #define PA3_PF_CSI_MCLK ( GPIO_PORTA | GPIO_PF | 3 ) | 125 | #define PA3_PF_CSI_MCLK ( GPIO_PORTA | GPIO_PF | 3 ) |
| @@ -123,7 +137,7 @@ | |||
| 123 | #define PA15_PF_I2C_SDA ( GPIO_PORTA | GPIO_OUT | GPIO_PF | 15 ) | 137 | #define PA15_PF_I2C_SDA ( GPIO_PORTA | GPIO_OUT | GPIO_PF | 15 ) |
| 124 | #define PA16_PF_I2C_SCL ( GPIO_PORTA | GPIO_OUT | GPIO_PF | 16 ) | 138 | #define PA16_PF_I2C_SCL ( GPIO_PORTA | GPIO_OUT | GPIO_PF | 16 ) |
| 125 | #define PA17_AF_ETMTRACEPKT4 ( GPIO_PORTA | GPIO_AF | 17 ) | 139 | #define PA17_AF_ETMTRACEPKT4 ( GPIO_PORTA | GPIO_AF | 17 ) |
| 126 | #define PA17_AIN_SPI2_SS ( GPIO_PORTA | GPIO_AIN | 17 ) | 140 | #define PA17_AIN_SPI2_SS ( GPIO_GIUS | GPIO_PORTA | GPIO_OUT | 17 ) |
| 127 | #define PA18_AF_ETMTRACEPKT5 ( GPIO_PORTA | GPIO_AF | 18 ) | 141 | #define PA18_AF_ETMTRACEPKT5 ( GPIO_PORTA | GPIO_AF | 18 ) |
| 128 | #define PA19_AF_ETMTRACEPKT6 ( GPIO_PORTA | GPIO_AF | 19 ) | 142 | #define PA19_AF_ETMTRACEPKT6 ( GPIO_PORTA | GPIO_AF | 19 ) |
| 129 | #define PA20_AF_ETMTRACEPKT7 ( GPIO_PORTA | GPIO_AF | 20 ) | 143 | #define PA20_AF_ETMTRACEPKT7 ( GPIO_PORTA | GPIO_AF | 20 ) |
| @@ -191,19 +205,27 @@ | |||
| 191 | #define PC15_PF_SPI1_SS ( GPIO_PORTC | GPIO_PF | 15 ) | 205 | #define PC15_PF_SPI1_SS ( GPIO_PORTC | GPIO_PF | 15 ) |
| 192 | #define PC16_PF_SPI1_MISO ( GPIO_PORTC | GPIO_PF | 16 ) | 206 | #define PC16_PF_SPI1_MISO ( GPIO_PORTC | GPIO_PF | 16 ) |
| 193 | #define PC17_PF_SPI1_MOSI ( GPIO_PORTC | GPIO_PF | 17 ) | 207 | #define PC17_PF_SPI1_MOSI ( GPIO_PORTC | GPIO_PF | 17 ) |
| 208 | #define PC24_BIN_UART3_RI ( GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 24 ) | ||
| 209 | #define PC25_BIN_UART3_DSR ( GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 25 ) | ||
| 210 | #define PC26_AOUT_UART3_DTR ( GPIO_GIUS | GPIO_PORTC | GPIO_IN | 26 ) | ||
| 211 | #define PC27_BIN_UART3_DCD ( GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 27 ) | ||
| 212 | #define PC28_BIN_UART3_CTS ( GPIO_GIUS | GPIO_PORTC | GPIO_OUT | GPIO_BIN | 28 ) | ||
| 213 | #define PC29_AOUT_UART3_RTS ( GPIO_GIUS | GPIO_PORTC | GPIO_IN | 29 ) | ||
| 214 | #define PC30_BIN_UART3_TX ( GPIO_GIUS | GPIO_PORTC | GPIO_BIN | 30 ) | ||
| 215 | #define PC31_AOUT_UART3_RX ( GPIO_GIUS | GPIO_PORTC | GPIO_IN | 31) | ||
| 194 | #define PD6_PF_LSCLK ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 6 ) | 216 | #define PD6_PF_LSCLK ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 6 ) |
| 195 | #define PD7_PF_REV ( GPIO_PORTD | GPIO_PF | 7 ) | 217 | #define PD7_PF_REV ( GPIO_PORTD | GPIO_PF | 7 ) |
| 196 | #define PD7_AF_UART2_DTR ( GPIO_PORTD | GPIO_IN | GPIO_AF | 7 ) | 218 | #define PD7_AF_UART2_DTR ( GPIO_GIUS | GPIO_PORTD | GPIO_IN | GPIO_AF | 7 ) |
| 197 | #define PD7_AIN_SPI2_SCLK ( GPIO_PORTD | GPIO_AIN | 7 ) | 219 | #define PD7_AIN_SPI2_SCLK ( GPIO_GIUS | GPIO_PORTD | GPIO_AIN | 7 ) |
| 198 | #define PD8_PF_CLS ( GPIO_PORTD | GPIO_PF | 8 ) | 220 | #define PD8_PF_CLS ( GPIO_PORTD | GPIO_PF | 8 ) |
| 199 | #define PD8_AF_UART2_DCD ( GPIO_PORTD | GPIO_OUT | GPIO_AF | 8 ) | 221 | #define PD8_AF_UART2_DCD ( GPIO_PORTD | GPIO_OUT | GPIO_AF | 8 ) |
| 200 | #define PD8_AIN_SPI2_SS ( GPIO_PORTD | GPIO_AIN | 8 ) | 222 | #define PD8_AIN_SPI2_SS ( GPIO_GIUS | GPIO_PORTD | GPIO_AIN | 8 ) |
| 201 | #define PD9_PF_PS ( GPIO_PORTD | GPIO_PF | 9 ) | 223 | #define PD9_PF_PS ( GPIO_PORTD | GPIO_PF | 9 ) |
| 202 | #define PD9_AF_UART2_RI ( GPIO_PORTD | GPIO_OUT | GPIO_AF | 9 ) | 224 | #define PD9_AF_UART2_RI ( GPIO_PORTD | GPIO_OUT | GPIO_AF | 9 ) |
| 203 | #define PD9_AOUT_SPI2_RXD ( GPIO_PORTD | GPIO_IN | GPIO_AOUT | 9 ) | 225 | #define PD9_AOUT_SPI2_RXD ( GPIO_GIUS | GPIO_PORTD | GPIO_IN | 9 ) |
| 204 | #define PD10_PF_SPL_SPR ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 10 ) | 226 | #define PD10_PF_SPL_SPR ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 10 ) |
| 205 | #define PD10_AF_UART2_DSR ( GPIO_PORTD | GPIO_OUT | GPIO_AF | 10 ) | 227 | #define PD10_AF_UART2_DSR ( GPIO_PORTD | GPIO_OUT | GPIO_AF | 10 ) |
| 206 | #define PD10_AIN_SPI2_TXD ( GPIO_PORTD | GPIO_OUT | GPIO_AIN | 10 ) | 228 | #define PD10_AIN_SPI2_TXD ( GPIO_GIUS | GPIO_PORTD | GPIO_OUT | 10 ) |
| 207 | #define PD11_PF_CONTRAST ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 11 ) | 229 | #define PD11_PF_CONTRAST ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 11 ) |
| 208 | #define PD12_PF_ACD_OE ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 12 ) | 230 | #define PD12_PF_ACD_OE ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 12 ) |
| 209 | #define PD13_PF_LP_HSYNC ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 13 ) | 231 | #define PD13_PF_LP_HSYNC ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 13 ) |
| @@ -225,7 +247,7 @@ | |||
| 225 | #define PD29_PF_LD14 ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 29 ) | 247 | #define PD29_PF_LD14 ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 29 ) |
| 226 | #define PD30_PF_LD15 ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 30 ) | 248 | #define PD30_PF_LD15 ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 30 ) |
| 227 | #define PD31_PF_TMR2OUT ( GPIO_PORTD | GPIO_PF | 31 ) | 249 | #define PD31_PF_TMR2OUT ( GPIO_PORTD | GPIO_PF | 31 ) |
| 228 | #define PD31_BIN_SPI2_TXD ( GPIO_PORTD | GPIO_BIN | 31 ) | 250 | #define PD31_BIN_SPI2_TXD ( GPIO_GIUS | GPIO_PORTD | GPIO_BIN | 31 ) |
| 229 | 251 | ||
| 230 | /* | 252 | /* |
| 231 | * PWM controller | 253 | * PWM controller |
diff --git a/include/asm-arm/arch-ixp4xx/entry-macro.S b/include/asm-arm/arch-ixp4xx/entry-macro.S index 455da64832de..323b0bc4a39c 100644 --- a/include/asm-arm/arch-ixp4xx/entry-macro.S +++ b/include/asm-arm/arch-ixp4xx/entry-macro.S | |||
| @@ -15,25 +15,26 @@ | |||
| 15 | ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET) | 15 | ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP_OFFSET) |
| 16 | ldr \irqstat, [\irqstat] @ get interrupts | 16 | ldr \irqstat, [\irqstat] @ get interrupts |
| 17 | cmp \irqstat, #0 | 17 | cmp \irqstat, #0 |
| 18 | beq 1001f | 18 | beq 1001f @ upper IRQ? |
| 19 | clz \irqnr, \irqstat | 19 | clz \irqnr, \irqstat |
| 20 | mov \base, #31 | 20 | mov \base, #31 |
| 21 | subs \irqnr, \base, \irqnr | 21 | sub \irqnr, \base, \irqnr |
| 22 | b 1002f @ lower IRQ being | ||
| 23 | @ handled | ||
| 22 | 24 | ||
| 23 | 1001: | 25 | 1001: |
| 24 | /* | 26 | /* |
| 25 | * IXP465 has an upper IRQ status register | 27 | * IXP465 has an upper IRQ status register |
| 26 | */ | 28 | */ |
| 27 | #if defined(CONFIG_CPU_IXP46X) | 29 | #if defined(CONFIG_CPU_IXP46X) |
| 28 | bne 1002f | ||
| 29 | ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET) | 30 | ldr \irqstat, =(IXP4XX_INTC_BASE_VIRT+IXP4XX_ICIP2_OFFSET) |
| 30 | ldr \irqstat, [\irqstat] @ get upper interrupts | 31 | ldr \irqstat, [\irqstat] @ get upper interrupts |
| 31 | mov \irqnr, #63 | 32 | mov \irqnr, #63 |
| 32 | clz \irqstat, \irqstat | 33 | clz \irqstat, \irqstat |
| 33 | cmp \irqstat, #32 | 34 | cmp \irqstat, #32 |
| 34 | subne \irqnr, \irqnr, \irqstat | 35 | subne \irqnr, \irqnr, \irqstat |
| 35 | 1002: | ||
| 36 | #endif | 36 | #endif |
| 37 | 1002: | ||
| 37 | .endm | 38 | .endm |
| 38 | 39 | ||
| 39 | 40 | ||
diff --git a/include/asm-arm/arch-ixp4xx/hardware.h b/include/asm-arm/arch-ixp4xx/hardware.h index 4ac964b9078a..55d85eea8c1a 100644 --- a/include/asm-arm/arch-ixp4xx/hardware.h +++ b/include/asm-arm/arch-ixp4xx/hardware.h | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | 27 | ||
| 28 | #define pcibios_assign_all_busses() 1 | 28 | #define pcibios_assign_all_busses() 1 |
| 29 | 29 | ||
| 30 | #if defined(CONFIG_CPU_IXP465) && !defined(__ASSEMBLY__) | 30 | #if defined(CONFIG_CPU_IXP46X) && !defined(__ASSEMBLY__) |
| 31 | extern unsigned int processor_id; | 31 | extern unsigned int processor_id; |
| 32 | #define cpu_is_ixp465() ((processor_id & 0xffffffc0) == 0x69054200) | 32 | #define cpu_is_ixp465() ((processor_id & 0xffffffc0) == 0x69054200) |
| 33 | #else | 33 | #else |
diff --git a/include/asm-arm/arch-ixp4xx/platform.h b/include/asm-arm/arch-ixp4xx/platform.h index d13ee7f78c70..f14ed63590c3 100644 --- a/include/asm-arm/arch-ixp4xx/platform.h +++ b/include/asm-arm/arch-ixp4xx/platform.h | |||
| @@ -93,7 +93,7 @@ extern struct pci_bus *ixp4xx_scan_bus(int nr, struct pci_sys_data *sys); | |||
| 93 | 93 | ||
| 94 | static inline void gpio_line_config(u8 line, u32 direction) | 94 | static inline void gpio_line_config(u8 line, u32 direction) |
| 95 | { | 95 | { |
| 96 | if (direction == IXP4XX_GPIO_OUT) | 96 | if (direction == IXP4XX_GPIO_IN) |
| 97 | *IXP4XX_GPIO_GPOER |= (1 << line); | 97 | *IXP4XX_GPIO_GPOER |= (1 << line); |
| 98 | else | 98 | else |
| 99 | *IXP4XX_GPIO_GPOER &= ~(1 << line); | 99 | *IXP4XX_GPIO_GPOER &= ~(1 << line); |
diff --git a/include/asm-arm/arch-pxa/pxa-regs.h b/include/asm-arm/arch-pxa/pxa-regs.h index 939d9e5020a0..3af7165ab0d7 100644 --- a/include/asm-arm/arch-pxa/pxa-regs.h +++ b/include/asm-arm/arch-pxa/pxa-regs.h | |||
| @@ -126,8 +126,8 @@ | |||
| 126 | #define DRCMR12 __REG(0x40000130) /* Request to Channel Map Register for AC97 audio transmit Request */ | 126 | #define DRCMR12 __REG(0x40000130) /* Request to Channel Map Register for AC97 audio transmit Request */ |
| 127 | #define DRCMR13 __REG(0x40000134) /* Request to Channel Map Register for SSP receive Request */ | 127 | #define DRCMR13 __REG(0x40000134) /* Request to Channel Map Register for SSP receive Request */ |
| 128 | #define DRCMR14 __REG(0x40000138) /* Request to Channel Map Register for SSP transmit Request */ | 128 | #define DRCMR14 __REG(0x40000138) /* Request to Channel Map Register for SSP transmit Request */ |
| 129 | #define DRCMR15 __REG(0x4000013c) /* Reserved */ | 129 | #define DRCMR15 __REG(0x4000013c) /* Request to Channel Map Register for SSP2 receive Request */ |
| 130 | #define DRCMR16 __REG(0x40000140) /* Reserved */ | 130 | #define DRCMR16 __REG(0x40000140) /* Request to Channel Map Register for SSP2 transmit Request */ |
| 131 | #define DRCMR17 __REG(0x40000144) /* Request to Channel Map Register for ICP receive Request */ | 131 | #define DRCMR17 __REG(0x40000144) /* Request to Channel Map Register for ICP receive Request */ |
| 132 | #define DRCMR18 __REG(0x40000148) /* Request to Channel Map Register for ICP transmit Request */ | 132 | #define DRCMR18 __REG(0x40000148) /* Request to Channel Map Register for ICP transmit Request */ |
| 133 | #define DRCMR19 __REG(0x4000014c) /* Request to Channel Map Register for STUART receive Request */ | 133 | #define DRCMR19 __REG(0x4000014c) /* Request to Channel Map Register for STUART receive Request */ |
| @@ -151,7 +151,8 @@ | |||
| 151 | #define DRCMR37 __REG(0x40000194) /* Request to Channel Map Register for USB endpoint 13 Request */ | 151 | #define DRCMR37 __REG(0x40000194) /* Request to Channel Map Register for USB endpoint 13 Request */ |
| 152 | #define DRCMR38 __REG(0x40000198) /* Request to Channel Map Register for USB endpoint 14 Request */ | 152 | #define DRCMR38 __REG(0x40000198) /* Request to Channel Map Register for USB endpoint 14 Request */ |
| 153 | #define DRCMR39 __REG(0x4000019C) /* Reserved */ | 153 | #define DRCMR39 __REG(0x4000019C) /* Reserved */ |
| 154 | 154 | #define DRCMR66 __REG(0x40001108) /* Request to Channel Map Register for SSP3 receive Request */ | |
| 155 | #define DRCMR67 __REG(0x4000110C) /* Request to Channel Map Register for SSP3 transmit Request */ | ||
| 155 | #define DRCMR68 __REG(0x40001110) /* Request to Channel Map Register for Camera FIFO 0 Request */ | 156 | #define DRCMR68 __REG(0x40001110) /* Request to Channel Map Register for Camera FIFO 0 Request */ |
| 156 | #define DRCMR69 __REG(0x40001114) /* Request to Channel Map Register for Camera FIFO 1 Request */ | 157 | #define DRCMR69 __REG(0x40001114) /* Request to Channel Map Register for Camera FIFO 1 Request */ |
| 157 | #define DRCMR70 __REG(0x40001118) /* Request to Channel Map Register for Camera FIFO 2 Request */ | 158 | #define DRCMR70 __REG(0x40001118) /* Request to Channel Map Register for Camera FIFO 2 Request */ |
| @@ -652,7 +653,7 @@ | |||
| 652 | 653 | ||
| 653 | #define UDCCS_IO_RFS (1 << 0) /* Receive FIFO service */ | 654 | #define UDCCS_IO_RFS (1 << 0) /* Receive FIFO service */ |
| 654 | #define UDCCS_IO_RPC (1 << 1) /* Receive packet complete */ | 655 | #define UDCCS_IO_RPC (1 << 1) /* Receive packet complete */ |
| 655 | #define UDCCS_IO_ROF (1 << 3) /* Receive overflow */ | 656 | #define UDCCS_IO_ROF (1 << 2) /* Receive overflow */ |
| 656 | #define UDCCS_IO_DME (1 << 3) /* DMA enable */ | 657 | #define UDCCS_IO_DME (1 << 3) /* DMA enable */ |
| 657 | #define UDCCS_IO_RNE (1 << 6) /* Receive FIFO not empty */ | 658 | #define UDCCS_IO_RNE (1 << 6) /* Receive FIFO not empty */ |
| 658 | #define UDCCS_IO_RSP (1 << 7) /* Receive short packet */ | 659 | #define UDCCS_IO_RSP (1 << 7) /* Receive short packet */ |
diff --git a/include/asm-arm/arch-pxa/pxafb.h b/include/asm-arm/arch-pxa/pxafb.h index 21c0e16dce5f..aba9b30f4249 100644 --- a/include/asm-arm/arch-pxa/pxafb.h +++ b/include/asm-arm/arch-pxa/pxafb.h | |||
| @@ -66,4 +66,5 @@ struct pxafb_mach_info { | |||
| 66 | 66 | ||
| 67 | }; | 67 | }; |
| 68 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); | 68 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); |
| 69 | void set_pxa_fb_parent(struct device *parent_dev); | ||
| 69 | unsigned long pxafb_get_hsync_time(struct device *dev); | 70 | unsigned long pxafb_get_hsync_time(struct device *dev); |
diff --git a/include/asm-arm/arch-s3c2410/hardware.h b/include/asm-arm/arch-s3c2410/hardware.h index 48a39918a760..1c9de29cafef 100644 --- a/include/asm-arm/arch-s3c2410/hardware.h +++ b/include/asm-arm/arch-s3c2410/hardware.h | |||
| @@ -92,6 +92,13 @@ extern unsigned int s3c2410_gpio_getpin(unsigned int pin); | |||
| 92 | 92 | ||
| 93 | extern unsigned int s3c2410_modify_misccr(unsigned int clr, unsigned int chg); | 93 | extern unsigned int s3c2410_modify_misccr(unsigned int clr, unsigned int chg); |
| 94 | 94 | ||
| 95 | #ifdef CONFIG_CPU_S3C2440 | ||
| 96 | |||
| 97 | extern int s3c2440_set_dsc(unsigned int pin, unsigned int value); | ||
| 98 | |||
| 99 | #endif /* CONFIG_CPU_S3C2440 */ | ||
| 100 | |||
| 101 | |||
| 95 | #endif /* __ASSEMBLY__ */ | 102 | #endif /* __ASSEMBLY__ */ |
| 96 | 103 | ||
| 97 | #include <asm/sizes.h> | 104 | #include <asm/sizes.h> |
diff --git a/include/asm-arm/arch-s3c2410/io.h b/include/asm-arm/arch-s3c2410/io.h index 418233a7ee6f..4bf272ed9add 100644 --- a/include/asm-arm/arch-s3c2410/io.h +++ b/include/asm-arm/arch-s3c2410/io.h | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | * 06-Dec-1997 RMK Created. | 9 | * 06-Dec-1997 RMK Created. |
| 10 | * 02-Sep-2003 BJD Modified for S3C2410 | 10 | * 02-Sep-2003 BJD Modified for S3C2410 |
| 11 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA | 11 | * 10-Mar-2005 LCVR Changed S3C2410_VA to S3C24XX_VA |
| 12 | * | 12 | * 13-Oct-2005 BJD Fixed problems with LDRH/STRH offset range |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #ifndef __ASM_ARM_ARCH_IO_H | 15 | #ifndef __ASM_ARM_ARCH_IO_H |
| @@ -97,7 +97,7 @@ DECLARE_IO(int,l,"") | |||
| 97 | else \ | 97 | else \ |
| 98 | __asm__ __volatile__( \ | 98 | __asm__ __volatile__( \ |
| 99 | "strb %0, [%1, #0] @ outbc" \ | 99 | "strb %0, [%1, #0] @ outbc" \ |
| 100 | : : "r" (value), "r" ((port))); \ | 100 | : : "r" (value), "r" ((port))); \ |
| 101 | }) | 101 | }) |
| 102 | 102 | ||
| 103 | #define __inbc(port) \ | 103 | #define __inbc(port) \ |
| @@ -110,35 +110,61 @@ DECLARE_IO(int,l,"") | |||
| 110 | else \ | 110 | else \ |
| 111 | __asm__ __volatile__( \ | 111 | __asm__ __volatile__( \ |
| 112 | "ldrb %0, [%1, #0] @ inbc" \ | 112 | "ldrb %0, [%1, #0] @ inbc" \ |
| 113 | : "=r" (result) : "r" ((port))); \ | 113 | : "=r" (result) : "r" ((port))); \ |
| 114 | result; \ | 114 | result; \ |
| 115 | }) | 115 | }) |
| 116 | 116 | ||
| 117 | #define __outwc(value,port) \ | 117 | #define __outwc(value,port) \ |
| 118 | ({ \ | 118 | ({ \ |
| 119 | unsigned long v = value; \ | 119 | unsigned long v = value; \ |
| 120 | if (__PORT_PCIO((port))) \ | 120 | if (__PORT_PCIO((port))) { \ |
| 121 | __asm__ __volatile__( \ | 121 | if ((port) < 256 && (port) > -256) \ |
| 122 | "strh %0, [%1, %2] @ outwc" \ | 122 | __asm__ __volatile__( \ |
| 123 | : : "r" (v), "r" (PCIO_BASE), "Jr" ((port))); \ | 123 | "strh %0, [%1, %2] @ outwc" \ |
| 124 | else \ | 124 | : : "r" (v), "r" (PCIO_BASE), "Jr" ((port))); \ |
| 125 | else if ((port) > 0) \ | ||
| 126 | __asm__ __volatile__( \ | ||
| 127 | "strh %0, [%1, %2] @ outwc" \ | ||
| 128 | : : "r" (v), \ | ||
| 129 | "r" (PCIO_BASE + ((port) & ~0xff)), \ | ||
| 130 | "Jr" (((port) & 0xff))); \ | ||
| 131 | else \ | ||
| 132 | __asm__ __volatile__( \ | ||
| 133 | "strh %0, [%1, #0] @ outwc" \ | ||
| 134 | : : "r" (v), \ | ||
| 135 | "r" (PCIO_BASE + (port))); \ | ||
| 136 | } else \ | ||
| 125 | __asm__ __volatile__( \ | 137 | __asm__ __volatile__( \ |
| 126 | "strh %0, [%1, #0] @ outwc" \ | 138 | "strh %0, [%1, #0] @ outwc" \ |
| 127 | : : "r" (v), "r" ((port))); \ | 139 | : : "r" (v), "r" ((port))); \ |
| 128 | }) | 140 | }) |
| 129 | 141 | ||
| 130 | #define __inwc(port) \ | 142 | #define __inwc(port) \ |
| 131 | ({ \ | 143 | ({ \ |
| 132 | unsigned short result; \ | 144 | unsigned short result; \ |
| 133 | if (__PORT_PCIO((port))) \ | 145 | if (__PORT_PCIO((port))) { \ |
| 134 | __asm__ __volatile__( \ | 146 | if ((port) < 256 && (port) > -256 ) \ |
| 135 | "ldrh %0, [%1, %2] @ inwc" \ | 147 | __asm__ __volatile__( \ |
| 136 | : "=r" (result) : "r" (PCIO_BASE), "Jr" ((port))); \ | 148 | "ldrh %0, [%1, %2] @ inwc" \ |
| 137 | else \ | 149 | : "=r" (result) \ |
| 150 | : "r" (PCIO_BASE), \ | ||
| 151 | "Jr" ((port))); \ | ||
| 152 | else if ((port) > 0) \ | ||
| 153 | __asm__ __volatile__( \ | ||
| 154 | "ldrh %0, [%1, %2] @ inwc" \ | ||
| 155 | : "=r" (result) \ | ||
| 156 | : "r" (PCIO_BASE + ((port) & ~0xff)), \ | ||
| 157 | "Jr" (((port) & 0xff))); \ | ||
| 158 | else \ | ||
| 159 | __asm__ __volatile__( \ | ||
| 160 | "ldrh %0, [%1, #0] @ inwc" \ | ||
| 161 | : "=r" (result) \ | ||
| 162 | : "r" (PCIO_BASE + ((port)))); \ | ||
| 163 | } else \ | ||
| 138 | __asm__ __volatile__( \ | 164 | __asm__ __volatile__( \ |
| 139 | "ldrh %0, [%1, #0] @ inwc" \ | 165 | "ldrh %0, [%1, #0] @ inwc" \ |
| 140 | : "=r" (result) : "r" ((port))); \ | 166 | : "=r" (result) : "r" ((port))); \ |
| 141 | result; \ | 167 | result; \ |
| 142 | }) | 168 | }) |
| 143 | 169 | ||
| 144 | #define __outlc(value,port) \ | 170 | #define __outlc(value,port) \ |
diff --git a/include/asm-arm/arch-s3c2410/regs-clock.h b/include/asm-arm/arch-s3c2410/regs-clock.h index 16f4c3cc1388..34360706e016 100644 --- a/include/asm-arm/arch-s3c2410/regs-clock.h +++ b/include/asm-arm/arch-s3c2410/regs-clock.h | |||
| @@ -18,7 +18,9 @@ | |||
| 18 | * 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat) | 18 | * 10-Feb-2005 Ben Dooks Fixed CAMDIVN address (Guillaume Gourat) |
| 19 | * 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA | 19 | * 10-Mar-2005 Lucas Villa Real Changed S3C2410_VA to S3C24XX_VA |
| 20 | * 27-Aug-2005 Ben Dooks Add clock-slow info | 20 | * 27-Aug-2005 Ben Dooks Add clock-slow info |
| 21 | */ | 21 | * 20-Oct-2005 Ben Dooks Fixed overflow in PLL (Guillaume Gourat) |
| 22 | * 20-Oct-2005 Ben Dooks Add masks for DCLK (Guillaume Gourat) | ||
| 23 | */ | ||
| 22 | 24 | ||
| 23 | #ifndef __ASM_ARM_REGS_CLOCK | 25 | #ifndef __ASM_ARM_REGS_CLOCK |
| 24 | #define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $" | 26 | #define __ASM_ARM_REGS_CLOCK "$Id: clock.h,v 1.4 2003/04/30 14:50:51 ben Exp $" |
| @@ -66,11 +68,16 @@ | |||
| 66 | #define S3C2410_DCLKCON_DCLK0_UCLK (1<<1) | 68 | #define S3C2410_DCLKCON_DCLK0_UCLK (1<<1) |
| 67 | #define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4) | 69 | #define S3C2410_DCLKCON_DCLK0_DIV(x) (((x) - 1 )<<4) |
| 68 | #define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8) | 70 | #define S3C2410_DCLKCON_DCLK0_CMP(x) (((x) - 1 )<<8) |
| 71 | #define S3C2410_DCLKCON_DCLK0_DIV_MASK ((0xf)<<4) | ||
| 72 | #define S3C2410_DCLKCON_DCLK0_CMP_MASK ((0xf)<<8) | ||
| 69 | 73 | ||
| 70 | #define S3C2410_DCLKCON_DCLK1EN (1<<16) | 74 | #define S3C2410_DCLKCON_DCLK1EN (1<<16) |
| 71 | #define S3C2410_DCLKCON_DCLK1_PCLK (0<<17) | 75 | #define S3C2410_DCLKCON_DCLK1_PCLK (0<<17) |
| 72 | #define S3C2410_DCLKCON_DCLK1_UCLK (1<<17) | 76 | #define S3C2410_DCLKCON_DCLK1_UCLK (1<<17) |
| 73 | #define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20) | 77 | #define S3C2410_DCLKCON_DCLK1_DIV(x) (((x) - 1) <<20) |
| 78 | #define S3C2410_DCLKCON_DCLK1_CMP(x) (((x) - 1) <<24) | ||
| 79 | #define S3C2410_DCLKCON_DCLK1_DIV_MASK ((0xf) <<20) | ||
| 80 | #define S3C2410_DCLKCON_DCLK1_CMP_MASK ((0xf) <<24) | ||
| 74 | 81 | ||
| 75 | #define S3C2410_CLKDIVN_PDIVN (1<<0) | 82 | #define S3C2410_CLKDIVN_PDIVN (1<<0) |
| 76 | #define S3C2410_CLKDIVN_HDIVN (1<<1) | 83 | #define S3C2410_CLKDIVN_HDIVN (1<<1) |
| @@ -83,10 +90,13 @@ | |||
| 83 | 90 | ||
| 84 | #ifndef __ASSEMBLY__ | 91 | #ifndef __ASSEMBLY__ |
| 85 | 92 | ||
| 93 | #include <asm/div64.h> | ||
| 94 | |||
| 86 | static inline unsigned int | 95 | static inline unsigned int |
| 87 | s3c2410_get_pll(int pllval, int baseclk) | 96 | s3c2410_get_pll(unsigned int pllval, unsigned int baseclk) |
| 88 | { | 97 | { |
| 89 | int mdiv, pdiv, sdiv; | 98 | unsigned int mdiv, pdiv, sdiv; |
| 99 | uint64_t fvco; | ||
| 90 | 100 | ||
| 91 | mdiv = pllval >> S3C2410_PLLCON_MDIVSHIFT; | 101 | mdiv = pllval >> S3C2410_PLLCON_MDIVSHIFT; |
| 92 | pdiv = pllval >> S3C2410_PLLCON_PDIVSHIFT; | 102 | pdiv = pllval >> S3C2410_PLLCON_PDIVSHIFT; |
| @@ -96,7 +106,10 @@ s3c2410_get_pll(int pllval, int baseclk) | |||
| 96 | pdiv &= S3C2410_PLLCON_PDIVMASK; | 106 | pdiv &= S3C2410_PLLCON_PDIVMASK; |
| 97 | sdiv &= S3C2410_PLLCON_SDIVMASK; | 107 | sdiv &= S3C2410_PLLCON_SDIVMASK; |
| 98 | 108 | ||
| 99 | return (baseclk * (mdiv + 8)) / ((pdiv + 2) << sdiv); | 109 | fvco = (uint64_t)baseclk * (mdiv + 8); |
| 110 | do_div(fvco, (pdiv + 2) << sdiv); | ||
| 111 | |||
| 112 | return (unsigned int)fvco; | ||
| 100 | } | 113 | } |
| 101 | 114 | ||
| 102 | #endif /* __ASSEMBLY__ */ | 115 | #endif /* __ASSEMBLY__ */ |
diff --git a/include/asm-arm/bitops.h b/include/asm-arm/bitops.h index aad7aad026b3..e007dd990da5 100644 --- a/include/asm-arm/bitops.h +++ b/include/asm-arm/bitops.h | |||
| @@ -347,7 +347,6 @@ static inline unsigned long __ffs(unsigned long word) | |||
| 347 | * the clz instruction for much better code efficiency. | 347 | * the clz instruction for much better code efficiency. |
| 348 | */ | 348 | */ |
| 349 | 349 | ||
| 350 | static __inline__ int generic_fls(int x); | ||
| 351 | #define fls(x) \ | 350 | #define fls(x) \ |
| 352 | ( __builtin_constant_p(x) ? generic_fls(x) : \ | 351 | ( __builtin_constant_p(x) ? generic_fls(x) : \ |
| 353 | ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) | 352 | ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) |
diff --git a/include/asm-arm/hardware/scoop.h b/include/asm-arm/hardware/scoop.h index 527404b5a8df..a8f1013930e3 100644 --- a/include/asm-arm/hardware/scoop.h +++ b/include/asm-arm/hardware/scoop.h | |||
| @@ -38,6 +38,8 @@ | |||
| 38 | struct scoop_config { | 38 | struct scoop_config { |
| 39 | unsigned short io_out; | 39 | unsigned short io_out; |
| 40 | unsigned short io_dir; | 40 | unsigned short io_dir; |
| 41 | unsigned short suspend_clr; | ||
| 42 | unsigned short suspend_set; | ||
| 41 | }; | 43 | }; |
| 42 | 44 | ||
| 43 | /* Structure for linking scoop devices to PCMCIA sockets */ | 45 | /* Structure for linking scoop devices to PCMCIA sockets */ |
diff --git a/include/asm-arm/locks.h b/include/asm-arm/locks.h index f08dc8447913..852220eecdbc 100644 --- a/include/asm-arm/locks.h +++ b/include/asm-arm/locks.h | |||
| @@ -103,7 +103,7 @@ | |||
| 103 | ({ \ | 103 | ({ \ |
| 104 | smp_mb(); \ | 104 | smp_mb(); \ |
| 105 | __asm__ __volatile__( \ | 105 | __asm__ __volatile__( \ |
| 106 | "@ up_op_read\n" \ | 106 | "@ up_op_write\n" \ |
| 107 | "1: ldrex lr, [%0]\n" \ | 107 | "1: ldrex lr, [%0]\n" \ |
| 108 | " adds lr, lr, %1\n" \ | 108 | " adds lr, lr, %1\n" \ |
| 109 | " strex ip, lr, [%0]\n" \ | 109 | " strex ip, lr, [%0]\n" \ |
| @@ -231,7 +231,7 @@ | |||
| 231 | #define __up_op_write(ptr,wake) \ | 231 | #define __up_op_write(ptr,wake) \ |
| 232 | ({ \ | 232 | ({ \ |
| 233 | __asm__ __volatile__( \ | 233 | __asm__ __volatile__( \ |
| 234 | "@ up_op_read\n" \ | 234 | "@ up_op_write\n" \ |
| 235 | " mrs ip, cpsr\n" \ | 235 | " mrs ip, cpsr\n" \ |
| 236 | " orr lr, ip, #128\n" \ | 236 | " orr lr, ip, #128\n" \ |
| 237 | " msr cpsr_c, lr\n" \ | 237 | " msr cpsr_c, lr\n" \ |
diff --git a/include/asm-generic/dma-mapping.h b/include/asm-generic/dma-mapping.h index 8cef663c5cd9..747d790295f3 100644 --- a/include/asm-generic/dma-mapping.h +++ b/include/asm-generic/dma-mapping.h | |||
| @@ -35,7 +35,7 @@ dma_set_mask(struct device *dev, u64 dma_mask) | |||
| 35 | 35 | ||
| 36 | static inline void * | 36 | static inline void * |
| 37 | dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, | 37 | dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, |
| 38 | unsigned int __nocast flag) | 38 | gfp_t flag) |
| 39 | { | 39 | { |
| 40 | BUG_ON(dev->bus != &pci_bus_type); | 40 | BUG_ON(dev->bus != &pci_bus_type); |
| 41 | 41 | ||
| @@ -168,7 +168,7 @@ dma_set_mask(struct device *dev, u64 dma_mask) | |||
| 168 | 168 | ||
| 169 | static inline void * | 169 | static inline void * |
| 170 | dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, | 170 | dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, |
| 171 | unsigned int __nocast flag) | 171 | gfp_t flag) |
| 172 | { | 172 | { |
| 173 | BUG(); | 173 | BUG(); |
| 174 | return NULL; | 174 | return NULL; |
diff --git a/include/asm-i386/dma-mapping.h b/include/asm-i386/dma-mapping.h index 563964b2995b..e56c335f8ef9 100644 --- a/include/asm-i386/dma-mapping.h +++ b/include/asm-i386/dma-mapping.h | |||
| @@ -11,7 +11,7 @@ | |||
| 11 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) | 11 | #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) |
| 12 | 12 | ||
| 13 | void *dma_alloc_coherent(struct device *dev, size_t size, | 13 | void *dma_alloc_coherent(struct device *dev, size_t size, |
| 14 | dma_addr_t *dma_handle, unsigned int __nocast flag); | 14 | dma_addr_t *dma_handle, gfp_t flag); |
| 15 | 15 | ||
| 16 | void dma_free_coherent(struct device *dev, size_t size, | 16 | void dma_free_coherent(struct device *dev, size_t size, |
| 17 | void *vaddr, dma_addr_t dma_handle); | 17 | void *vaddr, dma_addr_t dma_handle); |
diff --git a/include/asm-ia64/machvec_hpzx1.h b/include/asm-ia64/machvec_hpzx1.h index daafe504c5f4..e90daf9ce340 100644 --- a/include/asm-ia64/machvec_hpzx1.h +++ b/include/asm-ia64/machvec_hpzx1.h | |||
| @@ -1,8 +1,7 @@ | |||
| 1 | #ifndef _ASM_IA64_MACHVEC_HPZX1_h | 1 | #ifndef _ASM_IA64_MACHVEC_HPZX1_h |
| 2 | #define _ASM_IA64_MACHVEC_HPZX1_h | 2 | #define _ASM_IA64_MACHVEC_HPZX1_h |
| 3 | 3 | ||
| 4 | extern ia64_mv_setup_t dig_setup; | 4 | extern ia64_mv_setup_t dig_setup; |
| 5 | extern ia64_mv_setup_t sba_setup; | ||
| 6 | extern ia64_mv_dma_alloc_coherent sba_alloc_coherent; | 5 | extern ia64_mv_dma_alloc_coherent sba_alloc_coherent; |
| 7 | extern ia64_mv_dma_free_coherent sba_free_coherent; | 6 | extern ia64_mv_dma_free_coherent sba_free_coherent; |
| 8 | extern ia64_mv_dma_map_single sba_map_single; | 7 | extern ia64_mv_dma_map_single sba_map_single; |
| @@ -19,15 +18,15 @@ extern ia64_mv_dma_mapping_error sba_dma_mapping_error; | |||
| 19 | * platform's machvec structure. When compiling a non-generic kernel, | 18 | * platform's machvec structure. When compiling a non-generic kernel, |
| 20 | * the macros are used directly. | 19 | * the macros are used directly. |
| 21 | */ | 20 | */ |
| 22 | #define platform_name "hpzx1" | 21 | #define platform_name "hpzx1" |
| 23 | #define platform_setup sba_setup | 22 | #define platform_setup dig_setup |
| 24 | #define platform_dma_init machvec_noop | 23 | #define platform_dma_init machvec_noop |
| 25 | #define platform_dma_alloc_coherent sba_alloc_coherent | 24 | #define platform_dma_alloc_coherent sba_alloc_coherent |
| 26 | #define platform_dma_free_coherent sba_free_coherent | 25 | #define platform_dma_free_coherent sba_free_coherent |
| 27 | #define platform_dma_map_single sba_map_single | 26 | #define platform_dma_map_single sba_map_single |
| 28 | #define platform_dma_unmap_single sba_unmap_single | 27 | #define platform_dma_unmap_single sba_unmap_single |
| 29 | #define platform_dma_map_sg sba_map_sg | 28 | #define platform_dma_map_sg sba_map_sg |
| 30 | #define platform_dma_unmap_sg sba_unmap_sg | 29 | #define platform_dma_unmap_sg sba_unmap_sg |
| 31 | #define platform_dma_sync_single_for_cpu machvec_dma_sync_single | 30 | #define platform_dma_sync_single_for_cpu machvec_dma_sync_single |
| 32 | #define platform_dma_sync_sg_for_cpu machvec_dma_sync_sg | 31 | #define platform_dma_sync_sg_for_cpu machvec_dma_sync_sg |
| 33 | #define platform_dma_sync_single_for_device machvec_dma_sync_single | 32 | #define platform_dma_sync_single_for_device machvec_dma_sync_single |
diff --git a/include/asm-ia64/machvec_hpzx1_swiotlb.h b/include/asm-ia64/machvec_hpzx1_swiotlb.h index 9924b1b00a6c..f00a34a148ff 100644 --- a/include/asm-ia64/machvec_hpzx1_swiotlb.h +++ b/include/asm-ia64/machvec_hpzx1_swiotlb.h | |||
| @@ -2,7 +2,6 @@ | |||
| 2 | #define _ASM_IA64_MACHVEC_HPZX1_SWIOTLB_h | 2 | #define _ASM_IA64_MACHVEC_HPZX1_SWIOTLB_h |
| 3 | 3 | ||
| 4 | extern ia64_mv_setup_t dig_setup; | 4 | extern ia64_mv_setup_t dig_setup; |
| 5 | extern ia64_mv_dma_init hwsw_init; | ||
| 6 | extern ia64_mv_dma_alloc_coherent hwsw_alloc_coherent; | 5 | extern ia64_mv_dma_alloc_coherent hwsw_alloc_coherent; |
| 7 | extern ia64_mv_dma_free_coherent hwsw_free_coherent; | 6 | extern ia64_mv_dma_free_coherent hwsw_free_coherent; |
| 8 | extern ia64_mv_dma_map_single hwsw_map_single; | 7 | extern ia64_mv_dma_map_single hwsw_map_single; |
| @@ -26,7 +25,7 @@ extern ia64_mv_dma_sync_sg_for_device hwsw_sync_sg_for_device; | |||
| 26 | #define platform_name "hpzx1_swiotlb" | 25 | #define platform_name "hpzx1_swiotlb" |
| 27 | 26 | ||
| 28 | #define platform_setup dig_setup | 27 | #define platform_setup dig_setup |
| 29 | #define platform_dma_init hwsw_init | 28 | #define platform_dma_init machvec_noop |
| 30 | #define platform_dma_alloc_coherent hwsw_alloc_coherent | 29 | #define platform_dma_alloc_coherent hwsw_alloc_coherent |
| 31 | #define platform_dma_free_coherent hwsw_free_coherent | 30 | #define platform_dma_free_coherent hwsw_free_coherent |
| 32 | #define platform_dma_map_single hwsw_map_single | 31 | #define platform_dma_map_single hwsw_map_single |
diff --git a/include/asm-ia64/meminit.h b/include/asm-ia64/meminit.h index 74477fc31d51..46501b01a5c5 100644 --- a/include/asm-ia64/meminit.h +++ b/include/asm-ia64/meminit.h | |||
| @@ -16,10 +16,11 @@ | |||
| 16 | * - initrd (optional) | 16 | * - initrd (optional) |
| 17 | * - command line string | 17 | * - command line string |
| 18 | * - kernel code & data | 18 | * - kernel code & data |
| 19 | * - Kernel memory map built from EFI memory map | ||
| 19 | * | 20 | * |
| 20 | * More could be added if necessary | 21 | * More could be added if necessary |
| 21 | */ | 22 | */ |
| 22 | #define IA64_MAX_RSVD_REGIONS 5 | 23 | #define IA64_MAX_RSVD_REGIONS 6 |
| 23 | 24 | ||
| 24 | struct rsvd_region { | 25 | struct rsvd_region { |
| 25 | unsigned long start; /* virtual address of beginning of element */ | 26 | unsigned long start; /* virtual address of beginning of element */ |
| @@ -33,6 +34,7 @@ extern void find_memory (void); | |||
| 33 | extern void reserve_memory (void); | 34 | extern void reserve_memory (void); |
| 34 | extern void find_initrd (void); | 35 | extern void find_initrd (void); |
| 35 | extern int filter_rsvd_memory (unsigned long start, unsigned long end, void *arg); | 36 | extern int filter_rsvd_memory (unsigned long start, unsigned long end, void *arg); |
| 37 | extern void efi_memmap_init(unsigned long *, unsigned long *); | ||
| 36 | 38 | ||
| 37 | /* | 39 | /* |
| 38 | * For rounding an address to the next IA64_GRANULE_SIZE or order | 40 | * For rounding an address to the next IA64_GRANULE_SIZE or order |
diff --git a/include/asm-ia64/sn/arch.h b/include/asm-ia64/sn/arch.h index ab827d298569..1a3831c04af6 100644 --- a/include/asm-ia64/sn/arch.h +++ b/include/asm-ia64/sn/arch.h | |||
| @@ -18,6 +18,32 @@ | |||
| 18 | #include <asm/sn/sn_cpuid.h> | 18 | #include <asm/sn/sn_cpuid.h> |
| 19 | 19 | ||
| 20 | /* | 20 | /* |
| 21 | * This is the maximum number of NUMALINK nodes that can be part of a single | ||
| 22 | * SSI kernel. This number includes C-brick, M-bricks, and TIOs. Nodes in | ||
| 23 | * remote partitions are NOT included in this number. | ||
| 24 | * The number of compact nodes cannot exceed size of a coherency domain. | ||
| 25 | * The purpose of this define is to specify a node count that includes | ||
| 26 | * all C/M/TIO nodes in an SSI system. | ||
| 27 | * | ||
| 28 | * SGI system can currently support up to 256 C/M nodes plus additional TIO nodes. | ||
| 29 | * | ||
| 30 | * Note: ACPI20 has an architectural limit of 256 nodes. When we upgrade | ||
| 31 | * to ACPI3.0, this limit will be removed. The notion of "compact nodes" | ||
| 32 | * should be deleted and TIOs should be included in MAX_NUMNODES. | ||
| 33 | */ | ||
| 34 | #define MAX_COMPACT_NODES 512 | ||
| 35 | |||
| 36 | /* | ||
| 37 | * Maximum number of nodes in all partitions and in all coherency domains. | ||
| 38 | * This is the total number of nodes accessible in the numalink fabric. It | ||
| 39 | * includes all C & M bricks, plus all TIOs. | ||
| 40 | * | ||
| 41 | * This value is also the value of the maximum number of NASIDs in the numalink | ||
| 42 | * fabric. | ||
| 43 | */ | ||
| 44 | #define MAX_NUMALINK_NODES 16384 | ||
| 45 | |||
| 46 | /* | ||
| 21 | * The following defines attributes of the HUB chip. These attributes are | 47 | * The following defines attributes of the HUB chip. These attributes are |
| 22 | * frequently referenced. They are kept in the per-cpu data areas of each cpu. | 48 | * frequently referenced. They are kept in the per-cpu data areas of each cpu. |
| 23 | * They are kept together in a struct to minimize cache misses. | 49 | * They are kept together in a struct to minimize cache misses. |
| @@ -41,15 +67,6 @@ DECLARE_PER_CPU(struct sn_hub_info_s, __sn_hub_info); | |||
| 41 | 67 | ||
| 42 | 68 | ||
| 43 | /* | 69 | /* |
| 44 | * This is the maximum number of nodes that can be part of a kernel. | ||
| 45 | * Effectively, it's the maximum number of compact node ids (cnodeid_t). | ||
| 46 | * This is not necessarily the same as MAX_NASIDS. | ||
| 47 | */ | ||
| 48 | #define MAX_COMPACT_NODES 2048 | ||
| 49 | #define CPUS_PER_NODE 4 | ||
| 50 | |||
| 51 | |||
| 52 | /* | ||
| 53 | * Compact node ID to nasid mappings kept in the per-cpu data areas of each | 70 | * Compact node ID to nasid mappings kept in the per-cpu data areas of each |
| 54 | * cpu. | 71 | * cpu. |
| 55 | */ | 72 | */ |
| @@ -57,7 +74,6 @@ DECLARE_PER_CPU(short, __sn_cnodeid_to_nasid[MAX_NUMNODES]); | |||
| 57 | #define sn_cnodeid_to_nasid (&__get_cpu_var(__sn_cnodeid_to_nasid[0])) | 74 | #define sn_cnodeid_to_nasid (&__get_cpu_var(__sn_cnodeid_to_nasid[0])) |
| 58 | 75 | ||
| 59 | 76 | ||
| 60 | |||
| 61 | extern u8 sn_partition_id; | 77 | extern u8 sn_partition_id; |
| 62 | extern u8 sn_system_size; | 78 | extern u8 sn_system_size; |
| 63 | extern u8 sn_sharing_domain_size; | 79 | extern u8 sn_sharing_domain_size; |
diff --git a/include/asm-ia64/sn/io.h b/include/asm-ia64/sn/io.h index 42209733f6b1..41c73a735628 100644 --- a/include/asm-ia64/sn/io.h +++ b/include/asm-ia64/sn/io.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | extern void * sn_io_addr(unsigned long port) __attribute_const__; /* Forward definition */ | 14 | extern void * sn_io_addr(unsigned long port) __attribute_const__; /* Forward definition */ |
| 15 | extern void __sn_mmiowb(void); /* Forward definition */ | 15 | extern void __sn_mmiowb(void); /* Forward definition */ |
| 16 | 16 | ||
| 17 | extern int numionodes; | 17 | extern int num_cnodes; |
| 18 | 18 | ||
| 19 | #define __sn_mf_a() ia64_mfa() | 19 | #define __sn_mf_a() ia64_mfa() |
| 20 | 20 | ||
| @@ -36,6 +36,15 @@ extern void sn_dma_flush(unsigned long); | |||
| 36 | #define __sn_readq_relaxed ___sn_readq_relaxed | 36 | #define __sn_readq_relaxed ___sn_readq_relaxed |
| 37 | 37 | ||
| 38 | /* | 38 | /* |
| 39 | * Convenience macros for setting/clearing bits using the above accessors | ||
| 40 | */ | ||
| 41 | |||
| 42 | #define __sn_setq_relaxed(addr, val) \ | ||
| 43 | writeq((__sn_readq_relaxed(addr) | (val)), (addr)) | ||
| 44 | #define __sn_clrq_relaxed(addr, val) \ | ||
| 45 | writeq((__sn_readq_relaxed(addr) & ~(val)), (addr)) | ||
| 46 | |||
| 47 | /* | ||
| 39 | * The following routines are SN Platform specific, called when | 48 | * The following routines are SN Platform specific, called when |
| 40 | * a reference is made to inX/outX set macros. SN Platform | 49 | * a reference is made to inX/outX set macros. SN Platform |
| 41 | * inX set of macros ensures that Posted DMA writes on the | 50 | * inX set of macros ensures that Posted DMA writes on the |
diff --git a/include/asm-ia64/sn/klconfig.h b/include/asm-ia64/sn/klconfig.h index 9f920c70a62a..bcbf209d63be 100644 --- a/include/asm-ia64/sn/klconfig.h +++ b/include/asm-ia64/sn/klconfig.h | |||
| @@ -208,19 +208,6 @@ typedef struct lboard_s { | |||
| 208 | klconf_off_t brd_next_same; /* Next BOARD with same nasid */ | 208 | klconf_off_t brd_next_same; /* Next BOARD with same nasid */ |
| 209 | } lboard_t; | 209 | } lboard_t; |
| 210 | 210 | ||
| 211 | #define KLCF_NUM_COMPS(_brd) ((_brd)->brd_numcompts) | ||
| 212 | #define NODE_OFFSET_TO_KLINFO(n,off) ((klinfo_t*) TO_NODE_CAC(n,off)) | ||
| 213 | #define KLCF_NEXT(_brd) \ | ||
| 214 | ((_brd)->brd_next_same ? \ | ||
| 215 | (NODE_OFFSET_TO_LBOARD((_brd)->brd_next_same_host, (_brd)->brd_next_same)): NULL) | ||
| 216 | #define KLCF_NEXT_ANY(_brd) \ | ||
| 217 | ((_brd)->brd_next_any ? \ | ||
| 218 | (NODE_OFFSET_TO_LBOARD(NASID_GET(_brd), (_brd)->brd_next_any)): NULL) | ||
| 219 | #define KLCF_COMP(_brd, _ndx) \ | ||
| 220 | ((((_brd)->brd_compts[(_ndx)]) == 0) ? 0 : \ | ||
| 221 | (NODE_OFFSET_TO_KLINFO(NASID_GET(_brd), (_brd)->brd_compts[(_ndx)]))) | ||
| 222 | |||
| 223 | |||
| 224 | /* | 211 | /* |
| 225 | * Generic info structure. This stores common info about a | 212 | * Generic info structure. This stores common info about a |
| 226 | * component. | 213 | * component. |
| @@ -249,24 +236,11 @@ typedef struct klinfo_s { /* Generic info */ | |||
| 249 | } klinfo_t ; | 236 | } klinfo_t ; |
| 250 | 237 | ||
| 251 | 238 | ||
| 252 | static inline lboard_t *find_lboard_any(lboard_t * start, unsigned char brd_type) | 239 | static inline lboard_t *find_lboard_next(lboard_t * brd) |
| 253 | { | 240 | { |
| 254 | /* Search all boards stored on this node. */ | 241 | if (brd && brd->brd_next_any) |
| 255 | 242 | return NODE_OFFSET_TO_LBOARD(NASID_GET(brd), brd->brd_next_any); | |
| 256 | while (start) { | 243 | return NULL; |
| 257 | if (start->brd_type == brd_type) | ||
| 258 | return start; | ||
| 259 | start = KLCF_NEXT_ANY(start); | ||
| 260 | } | ||
| 261 | /* Didn't find it. */ | ||
| 262 | return (lboard_t *) NULL; | ||
| 263 | } | 244 | } |
| 264 | 245 | ||
| 265 | |||
| 266 | /* external declarations of Linux kernel functions. */ | ||
| 267 | |||
| 268 | extern lboard_t *root_lboard[]; | ||
| 269 | extern klinfo_t *find_component(lboard_t *brd, klinfo_t *kli, unsigned char type); | ||
| 270 | extern klinfo_t *find_first_component(lboard_t *brd, unsigned char type); | ||
| 271 | |||
| 272 | #endif /* _ASM_IA64_SN_KLCONFIG_H */ | 246 | #endif /* _ASM_IA64_SN_KLCONFIG_H */ |
diff --git a/include/asm-ia64/sn/l1.h b/include/asm-ia64/sn/l1.h index 2e5f0aa38889..e3b819110d47 100644 --- a/include/asm-ia64/sn/l1.h +++ b/include/asm-ia64/sn/l1.h | |||
| @@ -35,4 +35,16 @@ | |||
| 35 | #define L1_BRICKTYPE_ATHENA 0x2b /* + */ | 35 | #define L1_BRICKTYPE_ATHENA 0x2b /* + */ |
| 36 | #define L1_BRICKTYPE_DAYTONA 0x7a /* z */ | 36 | #define L1_BRICKTYPE_DAYTONA 0x7a /* z */ |
| 37 | 37 | ||
| 38 | /* board type response codes */ | ||
| 39 | #define L1_BOARDTYPE_IP69 0x0100 /* CA */ | ||
| 40 | #define L1_BOARDTYPE_IP63 0x0200 /* CB */ | ||
| 41 | #define L1_BOARDTYPE_BASEIO 0x0300 /* IB */ | ||
| 42 | #define L1_BOARDTYPE_PCIE2SLOT 0x0400 /* IC */ | ||
| 43 | #define L1_BOARDTYPE_PCIX3SLOT 0x0500 /* ID */ | ||
| 44 | #define L1_BOARDTYPE_PCIXPCIE4SLOT 0x0600 /* IE */ | ||
| 45 | #define L1_BOARDTYPE_ABACUS 0x0700 /* AB */ | ||
| 46 | #define L1_BOARDTYPE_DAYTONA 0x0800 /* AD */ | ||
| 47 | #define L1_BOARDTYPE_INVAL (-1) /* invalid brick type */ | ||
| 48 | |||
| 49 | |||
| 38 | #endif /* _ASM_IA64_SN_L1_H */ | 50 | #endif /* _ASM_IA64_SN_L1_H */ |
diff --git a/include/asm-ia64/sn/nodepda.h b/include/asm-ia64/sn/nodepda.h index 47bb8100fd00..6f6d69e39ff5 100644 --- a/include/asm-ia64/sn/nodepda.h +++ b/include/asm-ia64/sn/nodepda.h | |||
| @@ -55,7 +55,6 @@ struct nodepda_s { | |||
| 55 | */ | 55 | */ |
| 56 | struct phys_cpuid phys_cpuid[NR_CPUS]; | 56 | struct phys_cpuid phys_cpuid[NR_CPUS]; |
| 57 | spinlock_t ptc_lock ____cacheline_aligned_in_smp; | 57 | spinlock_t ptc_lock ____cacheline_aligned_in_smp; |
| 58 | spinlock_t bist_lock; | ||
| 59 | }; | 58 | }; |
| 60 | 59 | ||
| 61 | typedef struct nodepda_s nodepda_t; | 60 | typedef struct nodepda_s nodepda_t; |
diff --git a/include/asm-ia64/sn/sn_cpuid.h b/include/asm-ia64/sn/sn_cpuid.h index d2c1d34dcce4..749deb2ca6c1 100644 --- a/include/asm-ia64/sn/sn_cpuid.h +++ b/include/asm-ia64/sn/sn_cpuid.h | |||
| @@ -105,7 +105,6 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */ | |||
| 105 | #define cpuid_to_nasid(cpuid) (sn_nodepda->phys_cpuid[cpuid].nasid) | 105 | #define cpuid_to_nasid(cpuid) (sn_nodepda->phys_cpuid[cpuid].nasid) |
| 106 | #define cpuid_to_subnode(cpuid) (sn_nodepda->phys_cpuid[cpuid].subnode) | 106 | #define cpuid_to_subnode(cpuid) (sn_nodepda->phys_cpuid[cpuid].subnode) |
| 107 | #define cpuid_to_slice(cpuid) (sn_nodepda->phys_cpuid[cpuid].slice) | 107 | #define cpuid_to_slice(cpuid) (sn_nodepda->phys_cpuid[cpuid].slice) |
| 108 | #define cpuid_to_cnodeid(cpuid) (physical_node_map[cpuid_to_nasid(cpuid)]) | ||
| 109 | 108 | ||
| 110 | 109 | ||
| 111 | /* | 110 | /* |
| @@ -113,8 +112,6 @@ extern short physical_node_map[]; /* indexed by nasid to get cnode */ | |||
| 113 | * of potentially large tables. | 112 | * of potentially large tables. |
| 114 | */ | 113 | */ |
| 115 | extern int nasid_slice_to_cpuid(int, int); | 114 | extern int nasid_slice_to_cpuid(int, int); |
| 116 | #define nasid_slice_to_cpu_physical_id(nasid, slice) \ | ||
| 117 | cpu_physical_id(nasid_slice_to_cpuid(nasid, slice)) | ||
| 118 | 115 | ||
| 119 | /* | 116 | /* |
| 120 | * cnodeid_to_nasid - convert a cnodeid to a NASID | 117 | * cnodeid_to_nasid - convert a cnodeid to a NASID |
diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h index fea35b33d4e4..3f7564dc0aa9 100644 --- a/include/asm-ia64/sn/sn_sal.h +++ b/include/asm-ia64/sn/sn_sal.h | |||
| @@ -47,6 +47,7 @@ | |||
| 47 | #define SN_SAL_CONSOLE_PUTB 0x02000028 | 47 | #define SN_SAL_CONSOLE_PUTB 0x02000028 |
| 48 | #define SN_SAL_CONSOLE_XMIT_CHARS 0x0200002a | 48 | #define SN_SAL_CONSOLE_XMIT_CHARS 0x0200002a |
| 49 | #define SN_SAL_CONSOLE_READC 0x0200002b | 49 | #define SN_SAL_CONSOLE_READC 0x0200002b |
| 50 | #define SN_SAL_SYSCTL_OP 0x02000030 | ||
| 50 | #define SN_SAL_SYSCTL_MODID_GET 0x02000031 | 51 | #define SN_SAL_SYSCTL_MODID_GET 0x02000031 |
| 51 | #define SN_SAL_SYSCTL_GET 0x02000032 | 52 | #define SN_SAL_SYSCTL_GET 0x02000032 |
| 52 | #define SN_SAL_SYSCTL_IOBRICK_MODULE_GET 0x02000033 | 53 | #define SN_SAL_SYSCTL_IOBRICK_MODULE_GET 0x02000033 |
| @@ -67,7 +68,7 @@ | |||
| 67 | #define SN_SAL_IOIF_INTERRUPT 0x0200004a | 68 | #define SN_SAL_IOIF_INTERRUPT 0x0200004a |
| 68 | #define SN_SAL_HWPERF_OP 0x02000050 // lock | 69 | #define SN_SAL_HWPERF_OP 0x02000050 // lock |
| 69 | #define SN_SAL_IOIF_ERROR_INTERRUPT 0x02000051 | 70 | #define SN_SAL_IOIF_ERROR_INTERRUPT 0x02000051 |
| 70 | 71 | #define SN_SAL_IOIF_PCI_SAFE 0x02000052 | |
| 71 | #define SN_SAL_IOIF_SLOT_ENABLE 0x02000053 | 72 | #define SN_SAL_IOIF_SLOT_ENABLE 0x02000053 |
| 72 | #define SN_SAL_IOIF_SLOT_DISABLE 0x02000054 | 73 | #define SN_SAL_IOIF_SLOT_DISABLE 0x02000054 |
| 73 | #define SN_SAL_IOIF_GET_HUBDEV_INFO 0x02000055 | 74 | #define SN_SAL_IOIF_GET_HUBDEV_INFO 0x02000055 |
| @@ -101,6 +102,13 @@ | |||
| 101 | #define SAL_INTR_FREE 2 | 102 | #define SAL_INTR_FREE 2 |
| 102 | 103 | ||
| 103 | /* | 104 | /* |
| 105 | * operations available on the generic SN_SAL_SYSCTL_OP | ||
| 106 | * runtime service | ||
| 107 | */ | ||
| 108 | #define SAL_SYSCTL_OP_IOBOARD 0x0001 /* retrieve board type */ | ||
| 109 | #define SAL_SYSCTL_OP_TIO_JLCK_RST 0x0002 /* issue TIO clock reset */ | ||
| 110 | |||
| 111 | /* | ||
| 104 | * IRouter (i.e. generalized system controller) operations | 112 | * IRouter (i.e. generalized system controller) operations |
| 105 | */ | 113 | */ |
| 106 | #define SAL_IROUTER_OPEN 0 /* open a subchannel */ | 114 | #define SAL_IROUTER_OPEN 0 /* open a subchannel */ |
| @@ -198,26 +206,16 @@ ia64_sn_get_master_baseio_nasid(void) | |||
| 198 | return ret_stuff.v0; | 206 | return ret_stuff.v0; |
| 199 | } | 207 | } |
| 200 | 208 | ||
| 201 | static inline char * | 209 | static inline void * |
| 202 | ia64_sn_get_klconfig_addr(nasid_t nasid) | 210 | ia64_sn_get_klconfig_addr(nasid_t nasid) |
| 203 | { | 211 | { |
| 204 | struct ia64_sal_retval ret_stuff; | 212 | struct ia64_sal_retval ret_stuff; |
| 205 | int cnodeid; | ||
| 206 | 213 | ||
| 207 | cnodeid = nasid_to_cnodeid(nasid); | ||
| 208 | ret_stuff.status = 0; | 214 | ret_stuff.status = 0; |
| 209 | ret_stuff.v0 = 0; | 215 | ret_stuff.v0 = 0; |
| 210 | ret_stuff.v1 = 0; | 216 | ret_stuff.v1 = 0; |
| 211 | ret_stuff.v2 = 0; | 217 | ret_stuff.v2 = 0; |
| 212 | SAL_CALL(ret_stuff, SN_SAL_GET_KLCONFIG_ADDR, (u64)nasid, 0, 0, 0, 0, 0, 0); | 218 | SAL_CALL(ret_stuff, SN_SAL_GET_KLCONFIG_ADDR, (u64)nasid, 0, 0, 0, 0, 0, 0); |
| 213 | |||
| 214 | /* | ||
| 215 | * We should panic if a valid cnode nasid does not produce | ||
| 216 | * a klconfig address. | ||
| 217 | */ | ||
| 218 | if (ret_stuff.status != 0) { | ||
| 219 | panic("ia64_sn_get_klconfig_addr: Returned error %lx\n", ret_stuff.status); | ||
| 220 | } | ||
| 221 | return ret_stuff.v0 ? __va(ret_stuff.v0) : NULL; | 219 | return ret_stuff.v0 ? __va(ret_stuff.v0) : NULL; |
| 222 | } | 220 | } |
| 223 | 221 | ||
| @@ -694,12 +692,10 @@ sn_change_memprotect(u64 paddr, u64 len, u64 perms, u64 *nasid_array) | |||
| 694 | unsigned long irq_flags; | 692 | unsigned long irq_flags; |
| 695 | 693 | ||
| 696 | cnodeid = nasid_to_cnodeid(get_node_number(paddr)); | 694 | cnodeid = nasid_to_cnodeid(get_node_number(paddr)); |
| 697 | // spin_lock(&NODEPDA(cnodeid)->bist_lock); | ||
| 698 | local_irq_save(irq_flags); | 695 | local_irq_save(irq_flags); |
| 699 | ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_MEMPROTECT, paddr, len, | 696 | ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_MEMPROTECT, paddr, len, |
| 700 | (u64)nasid_array, perms, 0, 0, 0); | 697 | (u64)nasid_array, perms, 0, 0, 0); |
| 701 | local_irq_restore(irq_flags); | 698 | local_irq_restore(irq_flags); |
| 702 | // spin_unlock(&NODEPDA(cnodeid)->bist_lock); | ||
| 703 | return ret_stuff.status; | 699 | return ret_stuff.status; |
| 704 | } | 700 | } |
| 705 | #define SN_MEMPROT_ACCESS_CLASS_0 0x14a080 | 701 | #define SN_MEMPROT_ACCESS_CLASS_0 0x14a080 |
| @@ -873,6 +869,41 @@ ia64_sn_sysctl_event_init(nasid_t nasid) | |||
| 873 | return (int) rv.v0; | 869 | return (int) rv.v0; |
| 874 | } | 870 | } |
| 875 | 871 | ||
| 872 | /* | ||
| 873 | * Ask the system controller on the specified nasid to reset | ||
| 874 | * the CX corelet clock. Only valid on TIO nodes. | ||
| 875 | */ | ||
| 876 | static inline int | ||
| 877 | ia64_sn_sysctl_tio_clock_reset(nasid_t nasid) | ||
| 878 | { | ||
| 879 | struct ia64_sal_retval rv; | ||
| 880 | SAL_CALL_REENTRANT(rv, SN_SAL_SYSCTL_OP, SAL_SYSCTL_OP_TIO_JLCK_RST, | ||
| 881 | nasid, 0, 0, 0, 0, 0); | ||
| 882 | if (rv.status != 0) | ||
| 883 | return (int)rv.status; | ||
| 884 | if (rv.v0 != 0) | ||
| 885 | return (int)rv.v0; | ||
| 886 | |||
| 887 | return 0; | ||
| 888 | } | ||
| 889 | |||
| 890 | /* | ||
| 891 | * Get the associated ioboard type for a given nasid. | ||
| 892 | */ | ||
| 893 | static inline int | ||
| 894 | ia64_sn_sysctl_ioboard_get(nasid_t nasid) | ||
| 895 | { | ||
| 896 | struct ia64_sal_retval rv; | ||
| 897 | SAL_CALL_REENTRANT(rv, SN_SAL_SYSCTL_OP, SAL_SYSCTL_OP_IOBOARD, | ||
| 898 | nasid, 0, 0, 0, 0, 0); | ||
| 899 | if (rv.v0 != 0) | ||
| 900 | return (int)rv.v0; | ||
| 901 | if (rv.v1 != 0) | ||
| 902 | return (int)rv.v1; | ||
| 903 | |||
| 904 | return 0; | ||
| 905 | } | ||
| 906 | |||
| 876 | /** | 907 | /** |
| 877 | * ia64_sn_get_fit_compt - read a FIT entry from the PROM header | 908 | * ia64_sn_get_fit_compt - read a FIT entry from the PROM header |
| 878 | * @nasid: NASID of node to read | 909 | * @nasid: NASID of node to read |
diff --git a/include/asm-ia64/sn/tioca_provider.h b/include/asm-ia64/sn/tioca_provider.h index 5ccec608d325..b532ef6148ed 100644 --- a/include/asm-ia64/sn/tioca_provider.h +++ b/include/asm-ia64/sn/tioca_provider.h | |||
| @@ -182,11 +182,11 @@ tioca_tlbflush(struct tioca_kernel *tioca_kernel) | |||
| 182 | * touch every CL aligned GART entry. | 182 | * touch every CL aligned GART entry. |
| 183 | */ | 183 | */ |
| 184 | 184 | ||
| 185 | ca_base->ca_control2 &= ~(CA_GART_MEM_PARAM); | 185 | __sn_clrq_relaxed(&ca_base->ca_control2, CA_GART_MEM_PARAM); |
| 186 | ca_base->ca_control2 |= CA_GART_FLUSH_TLB; | 186 | __sn_setq_relaxed(&ca_base->ca_control2, CA_GART_FLUSH_TLB); |
| 187 | ca_base->ca_control2 |= | 187 | __sn_setq_relaxed(&ca_base->ca_control2, |
| 188 | (0x2ull << CA_GART_MEM_PARAM_SHFT); | 188 | (0x2ull << CA_GART_MEM_PARAM_SHFT)); |
| 189 | tmp = ca_base->ca_control2; | 189 | tmp = __sn_readq_relaxed(&ca_base->ca_control2); |
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | return; | 192 | return; |
| @@ -196,8 +196,8 @@ tioca_tlbflush(struct tioca_kernel *tioca_kernel) | |||
| 196 | * Gart in uncached mode ... need an explicit flush. | 196 | * Gart in uncached mode ... need an explicit flush. |
| 197 | */ | 197 | */ |
| 198 | 198 | ||
| 199 | ca_base->ca_control2 |= CA_GART_FLUSH_TLB; | 199 | __sn_setq_relaxed(&ca_base->ca_control2, CA_GART_FLUSH_TLB); |
| 200 | tmp = ca_base->ca_control2; | 200 | tmp = __sn_readq_relaxed(&ca_base->ca_control2); |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | extern uint32_t tioca_gart_found; | 203 | extern uint32_t tioca_gart_found; |
diff --git a/include/asm-ia64/sn/tiocx.h b/include/asm-ia64/sn/tiocx.h index c5447a504509..5699e75e5024 100644 --- a/include/asm-ia64/sn/tiocx.h +++ b/include/asm-ia64/sn/tiocx.h | |||
| @@ -19,6 +19,7 @@ struct cx_id_s { | |||
| 19 | 19 | ||
| 20 | struct cx_dev { | 20 | struct cx_dev { |
| 21 | struct cx_id_s cx_id; | 21 | struct cx_id_s cx_id; |
| 22 | int bt; /* board/blade type */ | ||
| 22 | void *soft; /* driver specific */ | 23 | void *soft; /* driver specific */ |
| 23 | struct hubdev_info *hubdev; | 24 | struct hubdev_info *hubdev; |
| 24 | struct device dev; | 25 | struct device dev; |
| @@ -59,7 +60,7 @@ struct cx_drv { | |||
| 59 | extern struct sn_irq_info *tiocx_irq_alloc(nasid_t, int, int, nasid_t, int); | 60 | extern struct sn_irq_info *tiocx_irq_alloc(nasid_t, int, int, nasid_t, int); |
| 60 | extern void tiocx_irq_free(struct sn_irq_info *); | 61 | extern void tiocx_irq_free(struct sn_irq_info *); |
| 61 | extern int cx_device_unregister(struct cx_dev *); | 62 | extern int cx_device_unregister(struct cx_dev *); |
| 62 | extern int cx_device_register(nasid_t, int, int, struct hubdev_info *); | 63 | extern int cx_device_register(nasid_t, int, int, struct hubdev_info *, int); |
| 63 | extern int cx_driver_unregister(struct cx_drv *); | 64 | extern int cx_driver_unregister(struct cx_drv *); |
| 64 | extern int cx_driver_register(struct cx_drv *); | 65 | extern int cx_driver_register(struct cx_drv *); |
| 65 | extern uint64_t tiocx_dma_addr(uint64_t addr); | 66 | extern uint64_t tiocx_dma_addr(uint64_t addr); |
diff --git a/include/asm-ia64/sn/xp.h b/include/asm-ia64/sn/xp.h index 1df1c9f61a65..75a2f39c6ac6 100644 --- a/include/asm-ia64/sn/xp.h +++ b/include/asm-ia64/sn/xp.h | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | * C-brick nasids, thus the need for bitmaps which don't account for | 49 | * C-brick nasids, thus the need for bitmaps which don't account for |
| 50 | * odd-numbered (non C-brick) nasids. | 50 | * odd-numbered (non C-brick) nasids. |
| 51 | */ | 51 | */ |
| 52 | #define XP_MAX_PHYSNODE_ID (MAX_PHYSNODE_ID / 2) | 52 | #define XP_MAX_PHYSNODE_ID (MAX_NUMALINK_NODES / 2) |
| 53 | #define XP_NASID_MASK_BYTES ((XP_MAX_PHYSNODE_ID + 7) / 8) | 53 | #define XP_NASID_MASK_BYTES ((XP_MAX_PHYSNODE_ID + 7) / 8) |
| 54 | #define XP_NASID_MASK_WORDS ((XP_MAX_PHYSNODE_ID + 63) / 64) | 54 | #define XP_NASID_MASK_WORDS ((XP_MAX_PHYSNODE_ID + 63) / 64) |
| 55 | 55 | ||
diff --git a/include/asm-powerpc/timex.h b/include/asm-powerpc/timex.h index 51c5b316be55..c02d15aced91 100644 --- a/include/asm-powerpc/timex.h +++ b/include/asm-powerpc/timex.h | |||
| @@ -10,7 +10,7 @@ | |||
| 10 | #include <linux/config.h> | 10 | #include <linux/config.h> |
| 11 | #include <asm/cputable.h> | 11 | #include <asm/cputable.h> |
| 12 | 12 | ||
| 13 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ | 13 | #define CLOCK_TICK_RATE 1024000 /* Underlying HZ */ |
| 14 | 14 | ||
| 15 | typedef unsigned long cycles_t; | 15 | typedef unsigned long cycles_t; |
| 16 | 16 | ||
diff --git a/include/asm-ppc/cputable.h b/include/asm-ppc/cputable.h index 41d8f8425c04..e17c492c870b 100644 --- a/include/asm-ppc/cputable.h +++ b/include/asm-ppc/cputable.h | |||
| @@ -24,6 +24,7 @@ | |||
| 24 | #define PPC_FEATURE_HAS_SPE 0x00800000 | 24 | #define PPC_FEATURE_HAS_SPE 0x00800000 |
| 25 | #define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 | 25 | #define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 |
| 26 | #define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 | 26 | #define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 |
| 27 | #define PPC_FEATURE_NO_TB 0x00100000 | ||
| 27 | 28 | ||
| 28 | #ifdef __KERNEL__ | 29 | #ifdef __KERNEL__ |
| 29 | 30 | ||
diff --git a/include/asm-ppc/dma-mapping.h b/include/asm-ppc/dma-mapping.h index 92b8ee78dcc2..061bfcac1bf1 100644 --- a/include/asm-ppc/dma-mapping.h +++ b/include/asm-ppc/dma-mapping.h | |||
| @@ -61,7 +61,7 @@ static inline int dma_set_mask(struct device *dev, u64 dma_mask) | |||
| 61 | 61 | ||
| 62 | static inline void *dma_alloc_coherent(struct device *dev, size_t size, | 62 | static inline void *dma_alloc_coherent(struct device *dev, size_t size, |
| 63 | dma_addr_t * dma_handle, | 63 | dma_addr_t * dma_handle, |
| 64 | unsigned int __nocast gfp) | 64 | gfp_t gfp) |
| 65 | { | 65 | { |
| 66 | #ifdef CONFIG_NOT_COHERENT_CACHE | 66 | #ifdef CONFIG_NOT_COHERENT_CACHE |
| 67 | return __dma_alloc_coherent(size, dma_handle, gfp); | 67 | return __dma_alloc_coherent(size, dma_handle, gfp); |
diff --git a/include/asm-ppc64/dma-mapping.h b/include/asm-ppc64/dma-mapping.h index 9ad8adee0067..fb68fa23bea8 100644 --- a/include/asm-ppc64/dma-mapping.h +++ b/include/asm-ppc64/dma-mapping.h | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | extern int dma_supported(struct device *dev, u64 mask); | 19 | extern int dma_supported(struct device *dev, u64 mask); |
| 20 | extern int dma_set_mask(struct device *dev, u64 dma_mask); | 20 | extern int dma_set_mask(struct device *dev, u64 dma_mask); |
| 21 | extern void *dma_alloc_coherent(struct device *dev, size_t size, | 21 | extern void *dma_alloc_coherent(struct device *dev, size_t size, |
| 22 | dma_addr_t *dma_handle, unsigned int __nocast flag); | 22 | dma_addr_t *dma_handle, gfp_t flag); |
| 23 | extern void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, | 23 | extern void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, |
| 24 | dma_addr_t dma_handle); | 24 | dma_addr_t dma_handle); |
| 25 | extern dma_addr_t dma_map_single(struct device *dev, void *cpu_addr, | 25 | extern dma_addr_t dma_map_single(struct device *dev, void *cpu_addr, |
| @@ -118,7 +118,7 @@ dma_cache_sync(void *vaddr, size_t size, | |||
| 118 | */ | 118 | */ |
| 119 | struct dma_mapping_ops { | 119 | struct dma_mapping_ops { |
| 120 | void * (*alloc_coherent)(struct device *dev, size_t size, | 120 | void * (*alloc_coherent)(struct device *dev, size_t size, |
| 121 | dma_addr_t *dma_handle, unsigned int __nocast flag); | 121 | dma_addr_t *dma_handle, gfp_t flag); |
| 122 | void (*free_coherent)(struct device *dev, size_t size, | 122 | void (*free_coherent)(struct device *dev, size_t size, |
| 123 | void *vaddr, dma_addr_t dma_handle); | 123 | void *vaddr, dma_addr_t dma_handle); |
| 124 | dma_addr_t (*map_single)(struct device *dev, void *ptr, | 124 | dma_addr_t (*map_single)(struct device *dev, void *ptr, |
diff --git a/include/asm-ppc64/iommu.h b/include/asm-ppc64/iommu.h index 72dcf8116b04..c2f3b6e8a42f 100644 --- a/include/asm-ppc64/iommu.h +++ b/include/asm-ppc64/iommu.h | |||
| @@ -122,7 +122,7 @@ extern void iommu_unmap_sg(struct iommu_table *tbl, struct scatterlist *sglist, | |||
| 122 | int nelems, enum dma_data_direction direction); | 122 | int nelems, enum dma_data_direction direction); |
| 123 | 123 | ||
| 124 | extern void *iommu_alloc_coherent(struct iommu_table *tbl, size_t size, | 124 | extern void *iommu_alloc_coherent(struct iommu_table *tbl, size_t size, |
| 125 | dma_addr_t *dma_handle, unsigned int __nocast flag); | 125 | dma_addr_t *dma_handle, gfp_t flag); |
| 126 | extern void iommu_free_coherent(struct iommu_table *tbl, size_t size, | 126 | extern void iommu_free_coherent(struct iommu_table *tbl, size_t size, |
| 127 | void *vaddr, dma_addr_t dma_handle); | 127 | void *vaddr, dma_addr_t dma_handle); |
| 128 | extern dma_addr_t iommu_map_single(struct iommu_table *tbl, void *vaddr, | 128 | extern dma_addr_t iommu_map_single(struct iommu_table *tbl, void *vaddr, |
diff --git a/include/asm-sparc/btfixup.h b/include/asm-sparc/btfixup.h index 6b29503256fd..c2868d0f60b6 100644 --- a/include/asm-sparc/btfixup.h +++ b/include/asm-sparc/btfixup.h | |||
| @@ -49,7 +49,7 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void); | |||
| 49 | /* Put bottom 13bits into some register variable */ | 49 | /* Put bottom 13bits into some register variable */ |
| 50 | 50 | ||
| 51 | #define BTFIXUPDEF_SIMM13(__name) \ | 51 | #define BTFIXUPDEF_SIMM13(__name) \ |
| 52 | extern unsigned int ___sf_##__name(void) __attribute_const__; \ | 52 | static inline unsigned int ___sf_##__name(void) __attribute_const__; \ |
| 53 | extern unsigned ___ss_##__name[2]; \ | 53 | extern unsigned ___ss_##__name[2]; \ |
| 54 | static inline unsigned int ___sf_##__name(void) { \ | 54 | static inline unsigned int ___sf_##__name(void) { \ |
| 55 | unsigned int ret; \ | 55 | unsigned int ret; \ |
| @@ -57,7 +57,7 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void); | |||
| 57 | return ret; \ | 57 | return ret; \ |
| 58 | } | 58 | } |
| 59 | #define BTFIXUPDEF_SIMM13_INIT(__name,__val) \ | 59 | #define BTFIXUPDEF_SIMM13_INIT(__name,__val) \ |
| 60 | extern unsigned int ___sf_##__name(void) __attribute_const__; \ | 60 | static inline unsigned int ___sf_##__name(void) __attribute_const__; \ |
| 61 | extern unsigned ___ss_##__name[2]; \ | 61 | extern unsigned ___ss_##__name[2]; \ |
| 62 | static inline unsigned int ___sf_##__name(void) { \ | 62 | static inline unsigned int ___sf_##__name(void) { \ |
| 63 | unsigned int ret; \ | 63 | unsigned int ret; \ |
| @@ -71,7 +71,7 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void); | |||
| 71 | */ | 71 | */ |
| 72 | 72 | ||
| 73 | #define BTFIXUPDEF_HALF(__name) \ | 73 | #define BTFIXUPDEF_HALF(__name) \ |
| 74 | extern unsigned int ___af_##__name(void) __attribute_const__; \ | 74 | static inline unsigned int ___af_##__name(void) __attribute_const__; \ |
| 75 | extern unsigned ___as_##__name[2]; \ | 75 | extern unsigned ___as_##__name[2]; \ |
| 76 | static inline unsigned int ___af_##__name(void) { \ | 76 | static inline unsigned int ___af_##__name(void) { \ |
| 77 | unsigned int ret; \ | 77 | unsigned int ret; \ |
| @@ -79,7 +79,7 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void); | |||
| 79 | return ret; \ | 79 | return ret; \ |
| 80 | } | 80 | } |
| 81 | #define BTFIXUPDEF_HALF_INIT(__name,__val) \ | 81 | #define BTFIXUPDEF_HALF_INIT(__name,__val) \ |
| 82 | extern unsigned int ___af_##__name(void) __attribute_const__; \ | 82 | static inline unsigned int ___af_##__name(void) __attribute_const__; \ |
| 83 | extern unsigned ___as_##__name[2]; \ | 83 | extern unsigned ___as_##__name[2]; \ |
| 84 | static inline unsigned int ___af_##__name(void) { \ | 84 | static inline unsigned int ___af_##__name(void) { \ |
| 85 | unsigned int ret; \ | 85 | unsigned int ret; \ |
| @@ -90,7 +90,7 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void); | |||
| 90 | /* Put upper 22 bits into some register variable */ | 90 | /* Put upper 22 bits into some register variable */ |
| 91 | 91 | ||
| 92 | #define BTFIXUPDEF_SETHI(__name) \ | 92 | #define BTFIXUPDEF_SETHI(__name) \ |
| 93 | extern unsigned int ___hf_##__name(void) __attribute_const__; \ | 93 | static inline unsigned int ___hf_##__name(void) __attribute_const__; \ |
| 94 | extern unsigned ___hs_##__name[2]; \ | 94 | extern unsigned ___hs_##__name[2]; \ |
| 95 | static inline unsigned int ___hf_##__name(void) { \ | 95 | static inline unsigned int ___hf_##__name(void) { \ |
| 96 | unsigned int ret; \ | 96 | unsigned int ret; \ |
| @@ -98,7 +98,7 @@ extern unsigned int ___illegal_use_of_BTFIXUP_INT_in_module(void); | |||
| 98 | return ret; \ | 98 | return ret; \ |
| 99 | } | 99 | } |
| 100 | #define BTFIXUPDEF_SETHI_INIT(__name,__val) \ | 100 | #define BTFIXUPDEF_SETHI_INIT(__name,__val) \ |
| 101 | extern unsigned int ___hf_##__name(void) __attribute_const__; \ | 101 | static inline unsigned int ___hf_##__name(void) __attribute_const__; \ |
| 102 | extern unsigned ___hs_##__name[2]; \ | 102 | extern unsigned ___hs_##__name[2]; \ |
| 103 | static inline unsigned int ___hf_##__name(void) { \ | 103 | static inline unsigned int ___hf_##__name(void) { \ |
| 104 | unsigned int ret; \ | 104 | unsigned int ret; \ |
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h index ae883f295f1f..a14e98677500 100644 --- a/include/asm-sparc/pgtable.h +++ b/include/asm-sparc/pgtable.h | |||
| @@ -194,19 +194,19 @@ BTFIXUPDEF_HALF(pte_writei) | |||
| 194 | BTFIXUPDEF_HALF(pte_dirtyi) | 194 | BTFIXUPDEF_HALF(pte_dirtyi) |
| 195 | BTFIXUPDEF_HALF(pte_youngi) | 195 | BTFIXUPDEF_HALF(pte_youngi) |
| 196 | 196 | ||
| 197 | extern int pte_write(pte_t pte) __attribute_const__; | 197 | static int pte_write(pte_t pte) __attribute_const__; |
| 198 | static inline int pte_write(pte_t pte) | 198 | static inline int pte_write(pte_t pte) |
| 199 | { | 199 | { |
| 200 | return pte_val(pte) & BTFIXUP_HALF(pte_writei); | 200 | return pte_val(pte) & BTFIXUP_HALF(pte_writei); |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | extern int pte_dirty(pte_t pte) __attribute_const__; | 203 | static int pte_dirty(pte_t pte) __attribute_const__; |
| 204 | static inline int pte_dirty(pte_t pte) | 204 | static inline int pte_dirty(pte_t pte) |
| 205 | { | 205 | { |
| 206 | return pte_val(pte) & BTFIXUP_HALF(pte_dirtyi); | 206 | return pte_val(pte) & BTFIXUP_HALF(pte_dirtyi); |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | extern int pte_young(pte_t pte) __attribute_const__; | 209 | static int pte_young(pte_t pte) __attribute_const__; |
| 210 | static inline int pte_young(pte_t pte) | 210 | static inline int pte_young(pte_t pte) |
| 211 | { | 211 | { |
| 212 | return pte_val(pte) & BTFIXUP_HALF(pte_youngi); | 212 | return pte_val(pte) & BTFIXUP_HALF(pte_youngi); |
| @@ -217,7 +217,7 @@ static inline int pte_young(pte_t pte) | |||
| 217 | */ | 217 | */ |
| 218 | BTFIXUPDEF_HALF(pte_filei) | 218 | BTFIXUPDEF_HALF(pte_filei) |
| 219 | 219 | ||
| 220 | extern int pte_file(pte_t pte) __attribute_const__; | 220 | static int pte_file(pte_t pte) __attribute_const__; |
| 221 | static inline int pte_file(pte_t pte) | 221 | static inline int pte_file(pte_t pte) |
| 222 | { | 222 | { |
| 223 | return pte_val(pte) & BTFIXUP_HALF(pte_filei); | 223 | return pte_val(pte) & BTFIXUP_HALF(pte_filei); |
| @@ -229,19 +229,19 @@ BTFIXUPDEF_HALF(pte_wrprotecti) | |||
| 229 | BTFIXUPDEF_HALF(pte_mkcleani) | 229 | BTFIXUPDEF_HALF(pte_mkcleani) |
| 230 | BTFIXUPDEF_HALF(pte_mkoldi) | 230 | BTFIXUPDEF_HALF(pte_mkoldi) |
| 231 | 231 | ||
| 232 | extern pte_t pte_wrprotect(pte_t pte) __attribute_const__; | 232 | static pte_t pte_wrprotect(pte_t pte) __attribute_const__; |
| 233 | static inline pte_t pte_wrprotect(pte_t pte) | 233 | static inline pte_t pte_wrprotect(pte_t pte) |
| 234 | { | 234 | { |
| 235 | return __pte(pte_val(pte) & ~BTFIXUP_HALF(pte_wrprotecti)); | 235 | return __pte(pte_val(pte) & ~BTFIXUP_HALF(pte_wrprotecti)); |
| 236 | } | 236 | } |
| 237 | 237 | ||
| 238 | extern pte_t pte_mkclean(pte_t pte) __attribute_const__; | 238 | static pte_t pte_mkclean(pte_t pte) __attribute_const__; |
| 239 | static inline pte_t pte_mkclean(pte_t pte) | 239 | static inline pte_t pte_mkclean(pte_t pte) |
| 240 | { | 240 | { |
| 241 | return __pte(pte_val(pte) & ~BTFIXUP_HALF(pte_mkcleani)); | 241 | return __pte(pte_val(pte) & ~BTFIXUP_HALF(pte_mkcleani)); |
| 242 | } | 242 | } |
| 243 | 243 | ||
| 244 | extern pte_t pte_mkold(pte_t pte) __attribute_const__; | 244 | static pte_t pte_mkold(pte_t pte) __attribute_const__; |
| 245 | static inline pte_t pte_mkold(pte_t pte) | 245 | static inline pte_t pte_mkold(pte_t pte) |
| 246 | { | 246 | { |
| 247 | return __pte(pte_val(pte) & ~BTFIXUP_HALF(pte_mkoldi)); | 247 | return __pte(pte_val(pte) & ~BTFIXUP_HALF(pte_mkoldi)); |
| @@ -278,7 +278,7 @@ BTFIXUPDEF_CALL_CONST(pte_t, mk_pte_io, unsigned long, pgprot_t, int) | |||
| 278 | 278 | ||
| 279 | BTFIXUPDEF_INT(pte_modify_mask) | 279 | BTFIXUPDEF_INT(pte_modify_mask) |
| 280 | 280 | ||
| 281 | extern pte_t pte_modify(pte_t pte, pgprot_t newprot) __attribute_const__; | 281 | static pte_t pte_modify(pte_t pte, pgprot_t newprot) __attribute_const__; |
| 282 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | 282 | static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) |
| 283 | { | 283 | { |
| 284 | return __pte((pte_val(pte) & BTFIXUP_INT(pte_modify_mask)) | | 284 | return __pte((pte_val(pte) & BTFIXUP_INT(pte_modify_mask)) | |
diff --git a/include/asm-sparc64/pbm.h b/include/asm-sparc64/pbm.h index 38bbbccb4068..dd35a2c7798a 100644 --- a/include/asm-sparc64/pbm.h +++ b/include/asm-sparc64/pbm.h | |||
| @@ -27,23 +27,27 @@ | |||
| 27 | * PCI bus. | 27 | * PCI bus. |
| 28 | */ | 28 | */ |
| 29 | 29 | ||
| 30 | #define PBM_LOGCLUSTERS 3 | ||
| 31 | #define PBM_NCLUSTERS (1 << PBM_LOGCLUSTERS) | ||
| 32 | |||
| 33 | struct pci_controller_info; | 30 | struct pci_controller_info; |
| 34 | 31 | ||
| 35 | /* This contains the software state necessary to drive a PCI | 32 | /* This contains the software state necessary to drive a PCI |
| 36 | * controller's IOMMU. | 33 | * controller's IOMMU. |
| 37 | */ | 34 | */ |
| 35 | struct pci_iommu_arena { | ||
| 36 | unsigned long *map; | ||
| 37 | unsigned int hint; | ||
| 38 | unsigned int limit; | ||
| 39 | }; | ||
| 40 | |||
| 38 | struct pci_iommu { | 41 | struct pci_iommu { |
| 39 | /* This protects the controller's IOMMU and all | 42 | /* This protects the controller's IOMMU and all |
| 40 | * streaming buffers underneath. | 43 | * streaming buffers underneath. |
| 41 | */ | 44 | */ |
| 42 | spinlock_t lock; | 45 | spinlock_t lock; |
| 43 | 46 | ||
| 47 | struct pci_iommu_arena arena; | ||
| 48 | |||
| 44 | /* IOMMU page table, a linear array of ioptes. */ | 49 | /* IOMMU page table, a linear array of ioptes. */ |
| 45 | iopte_t *page_table; /* The page table itself. */ | 50 | iopte_t *page_table; /* The page table itself. */ |
| 46 | int page_table_sz_bits; /* log2 of ow many pages does it map? */ | ||
| 47 | 51 | ||
| 48 | /* Base PCI memory space address where IOMMU mappings | 52 | /* Base PCI memory space address where IOMMU mappings |
| 49 | * begin. | 53 | * begin. |
| @@ -62,12 +66,6 @@ struct pci_iommu { | |||
| 62 | */ | 66 | */ |
| 63 | unsigned long write_complete_reg; | 67 | unsigned long write_complete_reg; |
| 64 | 68 | ||
| 65 | /* The lowest used consistent mapping entry. Since | ||
| 66 | * we allocate consistent maps out of cluster 0 this | ||
| 67 | * is relative to the beginning of closter 0. | ||
| 68 | */ | ||
| 69 | u32 lowest_consistent_map; | ||
| 70 | |||
| 71 | /* In order to deal with some buggy third-party PCI bridges that | 69 | /* In order to deal with some buggy third-party PCI bridges that |
| 72 | * do wrong prefetching, we never mark valid mappings as invalid. | 70 | * do wrong prefetching, we never mark valid mappings as invalid. |
| 73 | * Instead we point them at this dummy page. | 71 | * Instead we point them at this dummy page. |
| @@ -75,16 +73,6 @@ struct pci_iommu { | |||
| 75 | unsigned long dummy_page; | 73 | unsigned long dummy_page; |
| 76 | unsigned long dummy_page_pa; | 74 | unsigned long dummy_page_pa; |
| 77 | 75 | ||
| 78 | /* If PBM_NCLUSTERS is ever decreased to 4 or lower, | ||
| 79 | * or if largest supported page_table_sz * 8K goes above | ||
| 80 | * 2GB, you must increase the size of the type of | ||
| 81 | * these counters. You have been duly warned. -DaveM | ||
| 82 | */ | ||
| 83 | struct { | ||
| 84 | u16 next; | ||
| 85 | u16 flush; | ||
| 86 | } alloc_info[PBM_NCLUSTERS]; | ||
| 87 | |||
| 88 | /* CTX allocation. */ | 76 | /* CTX allocation. */ |
| 89 | unsigned long ctx_lowest_free; | 77 | unsigned long ctx_lowest_free; |
| 90 | unsigned long ctx_bitmap[IOMMU_NUM_CTXS / (sizeof(unsigned long) * 8)]; | 78 | unsigned long ctx_bitmap[IOMMU_NUM_CTXS / (sizeof(unsigned long) * 8)]; |
| @@ -102,7 +90,7 @@ struct pci_iommu { | |||
| 102 | u32 dma_addr_mask; | 90 | u32 dma_addr_mask; |
| 103 | }; | 91 | }; |
| 104 | 92 | ||
| 105 | extern void pci_iommu_table_init(struct pci_iommu *, int); | 93 | extern void pci_iommu_table_init(struct pci_iommu *iommu, int tsbsize, u32 dma_offset, u32 dma_addr_mask); |
| 106 | 94 | ||
| 107 | /* This describes a PCI bus module's streaming buffer. */ | 95 | /* This describes a PCI bus module's streaming buffer. */ |
| 108 | struct pci_strbuf { | 96 | struct pci_strbuf { |
diff --git a/include/asm-um/processor-generic.h b/include/asm-um/processor-generic.h index 2d242360c3d6..075771c371f6 100644 --- a/include/asm-um/processor-generic.h +++ b/include/asm-um/processor-generic.h | |||
| @@ -13,6 +13,7 @@ struct task_struct; | |||
| 13 | #include "linux/config.h" | 13 | #include "linux/config.h" |
| 14 | #include "asm/ptrace.h" | 14 | #include "asm/ptrace.h" |
| 15 | #include "choose-mode.h" | 15 | #include "choose-mode.h" |
| 16 | #include "registers.h" | ||
| 16 | 17 | ||
| 17 | struct mm_struct; | 18 | struct mm_struct; |
| 18 | 19 | ||
| @@ -136,19 +137,15 @@ extern struct cpuinfo_um cpu_data[]; | |||
| 136 | #define current_cpu_data boot_cpu_data | 137 | #define current_cpu_data boot_cpu_data |
| 137 | #endif | 138 | #endif |
| 138 | 139 | ||
| 139 | #define KSTK_EIP(tsk) (PT_REGS_IP(&tsk->thread.regs)) | ||
| 140 | #define KSTK_ESP(tsk) (PT_REGS_SP(&tsk->thread.regs)) | ||
| 141 | #define get_wchan(p) (0) | ||
| 142 | 140 | ||
| 141 | #ifdef CONFIG_MODE_SKAS | ||
| 142 | #define KSTK_REG(tsk, reg) \ | ||
| 143 | ({ union uml_pt_regs regs; \ | ||
| 144 | get_thread_regs(®s, tsk->thread.mode.skas.switch_buf); \ | ||
| 145 | UPT_REG(®s, reg); }) | ||
| 146 | #else | ||
| 147 | #define KSTK_REG(tsk, reg) (0xbadbabe) | ||
| 143 | #endif | 148 | #endif |
| 149 | #define get_wchan(p) (0) | ||
| 144 | 150 | ||
| 145 | /* | 151 | #endif |
| 146 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 147 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 148 | * adjust the settings for this buffer only. This must remain at the end | ||
| 149 | * of the file. | ||
| 150 | * --------------------------------------------------------------------------- | ||
| 151 | * Local variables: | ||
| 152 | * c-file-style: "linux" | ||
| 153 | * End: | ||
| 154 | */ | ||
diff --git a/include/asm-um/processor-i386.h b/include/asm-um/processor-i386.h index 431bad3ae9d7..4108a579eb92 100644 --- a/include/asm-um/processor-i386.h +++ b/include/asm-um/processor-i386.h | |||
| @@ -43,17 +43,10 @@ static inline void rep_nop(void) | |||
| 43 | #define ARCH_IS_STACKGROW(address) \ | 43 | #define ARCH_IS_STACKGROW(address) \ |
| 44 | (address + 32 >= UPT_SP(¤t->thread.regs.regs)) | 44 | (address + 32 >= UPT_SP(¤t->thread.regs.regs)) |
| 45 | 45 | ||
| 46 | #define KSTK_EIP(tsk) KSTK_REG(tsk, EIP) | ||
| 47 | #define KSTK_ESP(tsk) KSTK_REG(tsk, UESP) | ||
| 48 | #define KSTK_EBP(tsk) KSTK_REG(tsk, EBP) | ||
| 49 | |||
| 46 | #include "asm/processor-generic.h" | 50 | #include "asm/processor-generic.h" |
| 47 | 51 | ||
| 48 | #endif | 52 | #endif |
| 49 | |||
| 50 | /* | ||
| 51 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 52 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 53 | * adjust the settings for this buffer only. This must remain at the end | ||
| 54 | * of the file. | ||
| 55 | * --------------------------------------------------------------------------- | ||
| 56 | * Local variables: | ||
| 57 | * c-file-style: "linux" | ||
| 58 | * End: | ||
| 59 | */ | ||
diff --git a/include/asm-um/processor-x86_64.h b/include/asm-um/processor-x86_64.h index 0beb9a42ae05..e1e1255a1d36 100644 --- a/include/asm-um/processor-x86_64.h +++ b/include/asm-um/processor-x86_64.h | |||
| @@ -36,17 +36,9 @@ extern inline void rep_nop(void) | |||
| 36 | #define ARCH_IS_STACKGROW(address) \ | 36 | #define ARCH_IS_STACKGROW(address) \ |
| 37 | (address + 128 >= UPT_SP(¤t->thread.regs.regs)) | 37 | (address + 128 >= UPT_SP(¤t->thread.regs.regs)) |
| 38 | 38 | ||
| 39 | #define KSTK_EIP(tsk) KSTK_REG(tsk, RIP) | ||
| 40 | #define KSTK_ESP(tsk) KSTK_REG(tsk, RSP) | ||
| 41 | |||
| 39 | #include "asm/processor-generic.h" | 42 | #include "asm/processor-generic.h" |
| 40 | 43 | ||
| 41 | #endif | 44 | #endif |
| 42 | |||
| 43 | /* | ||
| 44 | * Overrides for Emacs so that we follow Linus's tabbing style. | ||
| 45 | * Emacs will notice this stuff at the end of the file and automatically | ||
| 46 | * adjust the settings for this buffer only. This must remain at the end | ||
| 47 | * of the file. | ||
| 48 | * --------------------------------------------------------------------------- | ||
| 49 | * Local variables: | ||
| 50 | * c-file-style: "linux" | ||
| 51 | * End: | ||
| 52 | */ | ||
diff --git a/include/asm-x86_64/smp.h b/include/asm-x86_64/smp.h index 24e32611f0bf..c57ce4071342 100644 --- a/include/asm-x86_64/smp.h +++ b/include/asm-x86_64/smp.h | |||
| @@ -81,6 +81,7 @@ static inline int hard_smp_processor_id(void) | |||
| 81 | extern int safe_smp_processor_id(void); | 81 | extern int safe_smp_processor_id(void); |
| 82 | extern int __cpu_disable(void); | 82 | extern int __cpu_disable(void); |
| 83 | extern void __cpu_die(unsigned int cpu); | 83 | extern void __cpu_die(unsigned int cpu); |
| 84 | extern void prefill_possible_map(void); | ||
| 84 | 85 | ||
| 85 | #endif /* !ASSEMBLY */ | 86 | #endif /* !ASSEMBLY */ |
| 86 | 87 | ||
diff --git a/include/linux/acct.h b/include/linux/acct.h index 1993a3691768..19f70462b3be 100644 --- a/include/linux/acct.h +++ b/include/linux/acct.h | |||
| @@ -162,13 +162,13 @@ typedef struct acct acct_t; | |||
| 162 | #ifdef __KERNEL__ | 162 | #ifdef __KERNEL__ |
| 163 | /* | 163 | /* |
| 164 | * Yet another set of HZ to *HZ helper functions. | 164 | * Yet another set of HZ to *HZ helper functions. |
| 165 | * See <linux/times.h> for the original. | 165 | * See <linux/jiffies.h> for the original. |
| 166 | */ | 166 | */ |
| 167 | 167 | ||
| 168 | static inline u32 jiffies_to_AHZ(unsigned long x) | 168 | static inline u32 jiffies_to_AHZ(unsigned long x) |
| 169 | { | 169 | { |
| 170 | #if (TICK_NSEC % (NSEC_PER_SEC / AHZ)) == 0 | 170 | #if (TICK_NSEC % (NSEC_PER_SEC / AHZ)) == 0 |
| 171 | return x / (HZ / USER_HZ); | 171 | return x / (HZ / AHZ); |
| 172 | #else | 172 | #else |
| 173 | u64 tmp = (u64)x * TICK_NSEC; | 173 | u64 tmp = (u64)x * TICK_NSEC; |
| 174 | do_div(tmp, (NSEC_PER_SEC / AHZ)); | 174 | do_div(tmp, (NSEC_PER_SEC / AHZ)); |
diff --git a/include/linux/aio.h b/include/linux/aio.h index 60def658b246..0decf66117c1 100644 --- a/include/linux/aio.h +++ b/include/linux/aio.h | |||
| @@ -24,7 +24,12 @@ struct kioctx; | |||
| 24 | #define KIOCB_SYNC_KEY (~0U) | 24 | #define KIOCB_SYNC_KEY (~0U) |
| 25 | 25 | ||
| 26 | /* ki_flags bits */ | 26 | /* ki_flags bits */ |
| 27 | #define KIF_LOCKED 0 | 27 | /* |
| 28 | * This may be used for cancel/retry serialization in the future, but | ||
| 29 | * for now it's unused and we probably don't want modules to even | ||
| 30 | * think they can use it. | ||
| 31 | */ | ||
| 32 | /* #define KIF_LOCKED 0 */ | ||
| 28 | #define KIF_KICKED 1 | 33 | #define KIF_KICKED 1 |
| 29 | #define KIF_CANCELLED 2 | 34 | #define KIF_CANCELLED 2 |
| 30 | 35 | ||
diff --git a/include/linux/atmdev.h b/include/linux/atmdev.h index 9f374cfa1b05..e7d0593bb576 100644 --- a/include/linux/atmdev.h +++ b/include/linux/atmdev.h | |||
| @@ -76,6 +76,13 @@ struct atm_dev_stats { | |||
| 76 | /* set interface ESI */ | 76 | /* set interface ESI */ |
| 77 | #define ATM_SETESIF _IOW('a',ATMIOC_ITF+13,struct atmif_sioc) | 77 | #define ATM_SETESIF _IOW('a',ATMIOC_ITF+13,struct atmif_sioc) |
| 78 | /* force interface ESI */ | 78 | /* force interface ESI */ |
| 79 | #define ATM_ADDLECSADDR _IOW('a', ATMIOC_ITF+14, struct atmif_sioc) | ||
| 80 | /* register a LECS address */ | ||
| 81 | #define ATM_DELLECSADDR _IOW('a', ATMIOC_ITF+15, struct atmif_sioc) | ||
| 82 | /* unregister a LECS address */ | ||
| 83 | #define ATM_GETLECSADDR _IOW('a', ATMIOC_ITF+16, struct atmif_sioc) | ||
| 84 | /* retrieve LECS address(es) */ | ||
| 85 | |||
| 79 | #define ATM_GETSTAT _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc) | 86 | #define ATM_GETSTAT _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc) |
| 80 | /* get AAL layer statistics */ | 87 | /* get AAL layer statistics */ |
| 81 | #define ATM_GETSTATZ _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc) | 88 | #define ATM_GETSTATZ _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc) |
| @@ -328,6 +335,8 @@ struct atm_dev_addr { | |||
| 328 | struct list_head entry; /* next address */ | 335 | struct list_head entry; /* next address */ |
| 329 | }; | 336 | }; |
| 330 | 337 | ||
| 338 | enum atm_addr_type_t { ATM_ADDR_LOCAL, ATM_ADDR_LECS }; | ||
| 339 | |||
| 331 | struct atm_dev { | 340 | struct atm_dev { |
| 332 | const struct atmdev_ops *ops; /* device operations; NULL if unused */ | 341 | const struct atmdev_ops *ops; /* device operations; NULL if unused */ |
| 333 | const struct atmphy_ops *phy; /* PHY operations, may be undefined */ | 342 | const struct atmphy_ops *phy; /* PHY operations, may be undefined */ |
| @@ -338,6 +347,7 @@ struct atm_dev { | |||
| 338 | void *phy_data; /* private PHY date */ | 347 | void *phy_data; /* private PHY date */ |
| 339 | unsigned long flags; /* device flags (ATM_DF_*) */ | 348 | unsigned long flags; /* device flags (ATM_DF_*) */ |
| 340 | struct list_head local; /* local ATM addresses */ | 349 | struct list_head local; /* local ATM addresses */ |
| 350 | struct list_head lecs; /* LECS ATM addresses learned via ILMI */ | ||
| 341 | unsigned char esi[ESI_LEN]; /* ESI ("MAC" addr) */ | 351 | unsigned char esi[ESI_LEN]; /* ESI ("MAC" addr) */ |
| 342 | struct atm_cirange ci_range; /* VPI/VCI range */ | 352 | struct atm_cirange ci_range; /* VPI/VCI range */ |
| 343 | struct k_atm_dev_stats stats; /* statistics */ | 353 | struct k_atm_dev_stats stats; /* statistics */ |
| @@ -457,7 +467,7 @@ static inline void atm_dev_put(struct atm_dev *dev) | |||
| 457 | 467 | ||
| 458 | int atm_charge(struct atm_vcc *vcc,int truesize); | 468 | int atm_charge(struct atm_vcc *vcc,int truesize); |
| 459 | struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size, | 469 | struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size, |
| 460 | int gfp_flags); | 470 | gfp_t gfp_flags); |
| 461 | int atm_pcr_goal(struct atm_trafprm *tp); | 471 | int atm_pcr_goal(struct atm_trafprm *tp); |
| 462 | 472 | ||
| 463 | void vcc_release_async(struct atm_vcc *vcc, int reply); | 473 | void vcc_release_async(struct atm_vcc *vcc, int reply); |
diff --git a/include/linux/bfs_fs.h b/include/linux/bfs_fs.h index c1237aa92e38..8ed6dfdcd783 100644 --- a/include/linux/bfs_fs.h +++ b/include/linux/bfs_fs.h | |||
| @@ -20,19 +20,19 @@ | |||
| 20 | 20 | ||
| 21 | /* BFS inode layout on disk */ | 21 | /* BFS inode layout on disk */ |
| 22 | struct bfs_inode { | 22 | struct bfs_inode { |
| 23 | __u16 i_ino; | 23 | __le16 i_ino; |
| 24 | __u16 i_unused; | 24 | __u16 i_unused; |
| 25 | __u32 i_sblock; | 25 | __le32 i_sblock; |
| 26 | __u32 i_eblock; | 26 | __le32 i_eblock; |
| 27 | __u32 i_eoffset; | 27 | __le32 i_eoffset; |
| 28 | __u32 i_vtype; | 28 | __le32 i_vtype; |
| 29 | __u32 i_mode; | 29 | __le32 i_mode; |
| 30 | __s32 i_uid; | 30 | __le32 i_uid; |
| 31 | __s32 i_gid; | 31 | __le32 i_gid; |
| 32 | __u32 i_nlink; | 32 | __le32 i_nlink; |
| 33 | __u32 i_atime; | 33 | __le32 i_atime; |
| 34 | __u32 i_mtime; | 34 | __le32 i_mtime; |
| 35 | __u32 i_ctime; | 35 | __le32 i_ctime; |
| 36 | __u32 i_padding[4]; | 36 | __u32 i_padding[4]; |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| @@ -41,17 +41,17 @@ struct bfs_inode { | |||
| 41 | #define BFS_DIRS_PER_BLOCK 32 | 41 | #define BFS_DIRS_PER_BLOCK 32 |
| 42 | 42 | ||
| 43 | struct bfs_dirent { | 43 | struct bfs_dirent { |
| 44 | __u16 ino; | 44 | __le16 ino; |
| 45 | char name[BFS_NAMELEN]; | 45 | char name[BFS_NAMELEN]; |
| 46 | }; | 46 | }; |
| 47 | 47 | ||
| 48 | /* BFS superblock layout on disk */ | 48 | /* BFS superblock layout on disk */ |
| 49 | struct bfs_super_block { | 49 | struct bfs_super_block { |
| 50 | __u32 s_magic; | 50 | __le32 s_magic; |
| 51 | __u32 s_start; | 51 | __le32 s_start; |
| 52 | __u32 s_end; | 52 | __le32 s_end; |
| 53 | __s32 s_from; | 53 | __le32 s_from; |
| 54 | __s32 s_to; | 54 | __le32 s_to; |
| 55 | __s32 s_bfrom; | 55 | __s32 s_bfrom; |
| 56 | __s32 s_bto; | 56 | __s32 s_bto; |
| 57 | char s_fsname[6]; | 57 | char s_fsname[6]; |
| @@ -66,15 +66,15 @@ struct bfs_super_block { | |||
| 66 | #define BFS_INO2OFF(ino) \ | 66 | #define BFS_INO2OFF(ino) \ |
| 67 | ((__u32)(((ino) - BFS_ROOT_INO) * sizeof(struct bfs_inode)) + BFS_BSIZE) | 67 | ((__u32)(((ino) - BFS_ROOT_INO) * sizeof(struct bfs_inode)) + BFS_BSIZE) |
| 68 | #define BFS_NZFILESIZE(ip) \ | 68 | #define BFS_NZFILESIZE(ip) \ |
| 69 | ((cpu_to_le32((ip)->i_eoffset) + 1) - cpu_to_le32((ip)->i_sblock) * BFS_BSIZE) | 69 | ((le32_to_cpu((ip)->i_eoffset) + 1) - le32_to_cpu((ip)->i_sblock) * BFS_BSIZE) |
| 70 | 70 | ||
| 71 | #define BFS_FILESIZE(ip) \ | 71 | #define BFS_FILESIZE(ip) \ |
| 72 | ((ip)->i_sblock == 0 ? 0 : BFS_NZFILESIZE(ip)) | 72 | ((ip)->i_sblock == 0 ? 0 : BFS_NZFILESIZE(ip)) |
| 73 | 73 | ||
| 74 | #define BFS_FILEBLOCKS(ip) \ | 74 | #define BFS_FILEBLOCKS(ip) \ |
| 75 | ((ip)->i_sblock == 0 ? 0 : (cpu_to_le32((ip)->i_eblock) + 1) - cpu_to_le32((ip)->i_sblock)) | 75 | ((ip)->i_sblock == 0 ? 0 : (le32_to_cpu((ip)->i_eblock) + 1) - le32_to_cpu((ip)->i_sblock)) |
| 76 | #define BFS_UNCLEAN(bfs_sb, sb) \ | 76 | #define BFS_UNCLEAN(bfs_sb, sb) \ |
| 77 | ((cpu_to_le32(bfs_sb->s_from) != -1) && (cpu_to_le32(bfs_sb->s_to) != -1) && !(sb->s_flags & MS_RDONLY)) | 77 | ((le32_to_cpu(bfs_sb->s_from) != -1) && (le32_to_cpu(bfs_sb->s_to) != -1) && !(sb->s_flags & MS_RDONLY)) |
| 78 | 78 | ||
| 79 | 79 | ||
| 80 | #endif /* _LINUX_BFS_FS_H */ | 80 | #endif /* _LINUX_BFS_FS_H */ |
diff --git a/include/linux/bio.h b/include/linux/bio.h index 6e1c79c8b6bf..3344b4e8e43a 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
| @@ -276,8 +276,8 @@ extern void bio_pair_release(struct bio_pair *dbio); | |||
| 276 | extern struct bio_set *bioset_create(int, int, int); | 276 | extern struct bio_set *bioset_create(int, int, int); |
| 277 | extern void bioset_free(struct bio_set *); | 277 | extern void bioset_free(struct bio_set *); |
| 278 | 278 | ||
| 279 | extern struct bio *bio_alloc(unsigned int __nocast, int); | 279 | extern struct bio *bio_alloc(gfp_t, int); |
| 280 | extern struct bio *bio_alloc_bioset(unsigned int __nocast, int, struct bio_set *); | 280 | extern struct bio *bio_alloc_bioset(gfp_t, int, struct bio_set *); |
| 281 | extern void bio_put(struct bio *); | 281 | extern void bio_put(struct bio *); |
| 282 | extern void bio_free(struct bio *, struct bio_set *); | 282 | extern void bio_free(struct bio *, struct bio_set *); |
| 283 | 283 | ||
| @@ -287,7 +287,7 @@ extern int bio_phys_segments(struct request_queue *, struct bio *); | |||
| 287 | extern int bio_hw_segments(struct request_queue *, struct bio *); | 287 | extern int bio_hw_segments(struct request_queue *, struct bio *); |
| 288 | 288 | ||
| 289 | extern void __bio_clone(struct bio *, struct bio *); | 289 | extern void __bio_clone(struct bio *, struct bio *); |
| 290 | extern struct bio *bio_clone(struct bio *, unsigned int __nocast); | 290 | extern struct bio *bio_clone(struct bio *, gfp_t); |
| 291 | 291 | ||
| 292 | extern void bio_init(struct bio *); | 292 | extern void bio_init(struct bio *); |
| 293 | 293 | ||
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 82bd8842d11c..3b03b0b868dd 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h | |||
| @@ -43,7 +43,7 @@ typedef struct bootmem_data { | |||
| 43 | extern unsigned long __init bootmem_bootmap_pages (unsigned long); | 43 | extern unsigned long __init bootmem_bootmap_pages (unsigned long); |
| 44 | extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend); | 44 | extern unsigned long __init init_bootmem (unsigned long addr, unsigned long memend); |
| 45 | extern void __init free_bootmem (unsigned long addr, unsigned long size); | 45 | extern void __init free_bootmem (unsigned long addr, unsigned long size); |
| 46 | extern void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal); | 46 | extern void * __init __alloc_bootmem_limit (unsigned long size, unsigned long align, unsigned long goal, unsigned long limit); |
| 47 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE | 47 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE |
| 48 | extern void __init reserve_bootmem (unsigned long addr, unsigned long size); | 48 | extern void __init reserve_bootmem (unsigned long addr, unsigned long size); |
| 49 | #define alloc_bootmem(x) \ | 49 | #define alloc_bootmem(x) \ |
| @@ -54,6 +54,16 @@ extern void __init reserve_bootmem (unsigned long addr, unsigned long size); | |||
| 54 | __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 54 | __alloc_bootmem((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) |
| 55 | #define alloc_bootmem_low_pages(x) \ | 55 | #define alloc_bootmem_low_pages(x) \ |
| 56 | __alloc_bootmem((x), PAGE_SIZE, 0) | 56 | __alloc_bootmem((x), PAGE_SIZE, 0) |
| 57 | |||
| 58 | #define alloc_bootmem_limit(x, limit) \ | ||
| 59 | __alloc_bootmem_limit((x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit)) | ||
| 60 | #define alloc_bootmem_low_limit(x, limit) \ | ||
| 61 | __alloc_bootmem_limit((x), SMP_CACHE_BYTES, 0, (limit)) | ||
| 62 | #define alloc_bootmem_pages_limit(x, limit) \ | ||
| 63 | __alloc_bootmem_limit((x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit)) | ||
| 64 | #define alloc_bootmem_low_pages_limit(x, limit) \ | ||
| 65 | __alloc_bootmem_limit((x), PAGE_SIZE, 0, (limit)) | ||
| 66 | |||
| 57 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ | 67 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ |
| 58 | extern unsigned long __init free_all_bootmem (void); | 68 | extern unsigned long __init free_all_bootmem (void); |
| 59 | 69 | ||
| @@ -61,7 +71,7 @@ extern unsigned long __init init_bootmem_node (pg_data_t *pgdat, unsigned long f | |||
| 61 | extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size); | 71 | extern void __init reserve_bootmem_node (pg_data_t *pgdat, unsigned long physaddr, unsigned long size); |
| 62 | extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size); | 72 | extern void __init free_bootmem_node (pg_data_t *pgdat, unsigned long addr, unsigned long size); |
| 63 | extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat); | 73 | extern unsigned long __init free_all_bootmem_node (pg_data_t *pgdat); |
| 64 | extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal); | 74 | extern void * __init __alloc_bootmem_node_limit (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal, unsigned long limit); |
| 65 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE | 75 | #ifndef CONFIG_HAVE_ARCH_BOOTMEM_NODE |
| 66 | #define alloc_bootmem_node(pgdat, x) \ | 76 | #define alloc_bootmem_node(pgdat, x) \ |
| 67 | __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) | 77 | __alloc_bootmem_node((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS)) |
| @@ -69,6 +79,14 @@ extern void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, | |||
| 69 | __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) | 79 | __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS)) |
| 70 | #define alloc_bootmem_low_pages_node(pgdat, x) \ | 80 | #define alloc_bootmem_low_pages_node(pgdat, x) \ |
| 71 | __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0) | 81 | __alloc_bootmem_node((pgdat), (x), PAGE_SIZE, 0) |
| 82 | |||
| 83 | #define alloc_bootmem_node_limit(pgdat, x, limit) \ | ||
| 84 | __alloc_bootmem_node_limit((pgdat), (x), SMP_CACHE_BYTES, __pa(MAX_DMA_ADDRESS), (limit)) | ||
| 85 | #define alloc_bootmem_pages_node_limit(pgdat, x, limit) \ | ||
| 86 | __alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, __pa(MAX_DMA_ADDRESS), (limit)) | ||
| 87 | #define alloc_bootmem_low_pages_node_limit(pgdat, x, limit) \ | ||
| 88 | __alloc_bootmem_node_limit((pgdat), (x), PAGE_SIZE, 0, (limit)) | ||
| 89 | |||
| 72 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ | 90 | #endif /* !CONFIG_HAVE_ARCH_BOOTMEM_NODE */ |
| 73 | 91 | ||
| 74 | #ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP | 92 | #ifdef CONFIG_HAVE_ARCH_ALLOC_REMAP |
| @@ -105,5 +123,15 @@ extern void *__init alloc_large_system_hash(const char *tablename, | |||
| 105 | #endif | 123 | #endif |
| 106 | extern int __initdata hashdist; /* Distribute hashes across NUMA nodes? */ | 124 | extern int __initdata hashdist; /* Distribute hashes across NUMA nodes? */ |
| 107 | 125 | ||
| 126 | static inline void *__alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal) | ||
| 127 | { | ||
| 128 | return __alloc_bootmem_limit(size, align, goal, 0); | ||
| 129 | } | ||
| 130 | |||
| 131 | static inline void *__alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, | ||
| 132 | unsigned long goal) | ||
| 133 | { | ||
| 134 | return __alloc_bootmem_node_limit(pgdat, size, align, goal, 0); | ||
| 135 | } | ||
| 108 | 136 | ||
| 109 | #endif /* _LINUX_BOOTMEM_H */ | 137 | #endif /* _LINUX_BOOTMEM_H */ |
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h index 90828493791f..6a1d154c0825 100644 --- a/include/linux/buffer_head.h +++ b/include/linux/buffer_head.h | |||
| @@ -172,7 +172,7 @@ void __brelse(struct buffer_head *); | |||
| 172 | void __bforget(struct buffer_head *); | 172 | void __bforget(struct buffer_head *); |
| 173 | void __breadahead(struct block_device *, sector_t block, int size); | 173 | void __breadahead(struct block_device *, sector_t block, int size); |
| 174 | struct buffer_head *__bread(struct block_device *, sector_t block, int size); | 174 | struct buffer_head *__bread(struct block_device *, sector_t block, int size); |
| 175 | struct buffer_head *alloc_buffer_head(unsigned int __nocast gfp_flags); | 175 | struct buffer_head *alloc_buffer_head(gfp_t gfp_flags); |
| 176 | void free_buffer_head(struct buffer_head * bh); | 176 | void free_buffer_head(struct buffer_head * bh); |
| 177 | void FASTCALL(unlock_buffer(struct buffer_head *bh)); | 177 | void FASTCALL(unlock_buffer(struct buffer_head *bh)); |
| 178 | void FASTCALL(__lock_buffer(struct buffer_head *bh)); | 178 | void FASTCALL(__lock_buffer(struct buffer_head *bh)); |
diff --git a/include/linux/connector.h b/include/linux/connector.h index 86d4b0a81713..95952cc1f525 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
| @@ -149,7 +149,7 @@ struct cn_dev { | |||
| 149 | 149 | ||
| 150 | int cn_add_callback(struct cb_id *, char *, void (*callback) (void *)); | 150 | int cn_add_callback(struct cb_id *, char *, void (*callback) (void *)); |
| 151 | void cn_del_callback(struct cb_id *); | 151 | void cn_del_callback(struct cb_id *); |
| 152 | int cn_netlink_send(struct cn_msg *, u32, int); | 152 | int cn_netlink_send(struct cn_msg *, u32, gfp_t); |
| 153 | 153 | ||
| 154 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); | 154 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); |
| 155 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); | 155 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); |
diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h index b15826f6e3a2..9bdba8169b41 100644 --- a/include/linux/cpumask.h +++ b/include/linux/cpumask.h | |||
| @@ -392,4 +392,14 @@ extern cpumask_t cpu_present_map; | |||
| 392 | #define for_each_online_cpu(cpu) for_each_cpu_mask((cpu), cpu_online_map) | 392 | #define for_each_online_cpu(cpu) for_each_cpu_mask((cpu), cpu_online_map) |
| 393 | #define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map) | 393 | #define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map) |
| 394 | 394 | ||
| 395 | /* Find the highest possible smp_processor_id() */ | ||
| 396 | #define highest_possible_processor_id() \ | ||
| 397 | ({ \ | ||
| 398 | unsigned int cpu, highest = 0; \ | ||
| 399 | for_each_cpu_mask(cpu, cpu_possible_map) \ | ||
| 400 | highest = cpu; \ | ||
| 401 | highest; \ | ||
| 402 | }) | ||
| 403 | |||
| 404 | |||
| 395 | #endif /* __LINUX_CPUMASK_H */ | 405 | #endif /* __LINUX_CPUMASK_H */ |
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h index 24062a1dbf61..6e2deef96b34 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h | |||
| @@ -23,7 +23,7 @@ void cpuset_init_current_mems_allowed(void); | |||
| 23 | void cpuset_update_current_mems_allowed(void); | 23 | void cpuset_update_current_mems_allowed(void); |
| 24 | void cpuset_restrict_to_mems_allowed(unsigned long *nodes); | 24 | void cpuset_restrict_to_mems_allowed(unsigned long *nodes); |
| 25 | int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl); | 25 | int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl); |
| 26 | extern int cpuset_zone_allowed(struct zone *z, unsigned int __nocast gfp_mask); | 26 | extern int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask); |
| 27 | extern int cpuset_excl_nodes_overlap(const struct task_struct *p); | 27 | extern int cpuset_excl_nodes_overlap(const struct task_struct *p); |
| 28 | extern struct file_operations proc_cpuset_operations; | 28 | extern struct file_operations proc_cpuset_operations; |
| 29 | extern char *cpuset_task_status_allowed(struct task_struct *task, char *buffer); | 29 | extern char *cpuset_task_status_allowed(struct task_struct *task, char *buffer); |
| @@ -49,8 +49,7 @@ static inline int cpuset_zonelist_valid_mems_allowed(struct zonelist *zl) | |||
| 49 | return 1; | 49 | return 1; |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | static inline int cpuset_zone_allowed(struct zone *z, | 52 | static inline int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask) |
| 53 | unsigned int __nocast gfp_mask) | ||
| 54 | { | 53 | { |
| 55 | return 1; | 54 | return 1; |
| 56 | } | 55 | } |
diff --git a/include/linux/dmapool.h b/include/linux/dmapool.h index 4932ee5c77f0..76f12f46db7f 100644 --- a/include/linux/dmapool.h +++ b/include/linux/dmapool.h | |||
| @@ -19,7 +19,7 @@ struct dma_pool *dma_pool_create(const char *name, struct device *dev, | |||
| 19 | 19 | ||
| 20 | void dma_pool_destroy(struct dma_pool *pool); | 20 | void dma_pool_destroy(struct dma_pool *pool); |
| 21 | 21 | ||
| 22 | void *dma_pool_alloc(struct dma_pool *pool, unsigned int __nocast mem_flags, | 22 | void *dma_pool_alloc(struct dma_pool *pool, gfp_t mem_flags, |
| 23 | dma_addr_t *handle); | 23 | dma_addr_t *handle); |
| 24 | 24 | ||
| 25 | void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr); | 25 | void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr); |
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 4dc990f3b5cc..3010e172394d 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
| @@ -85,9 +85,9 @@ static inline void arch_free_page(struct page *page, int order) { } | |||
| 85 | #endif | 85 | #endif |
| 86 | 86 | ||
| 87 | extern struct page * | 87 | extern struct page * |
| 88 | FASTCALL(__alloc_pages(unsigned int, unsigned int, struct zonelist *)); | 88 | FASTCALL(__alloc_pages(gfp_t, unsigned int, struct zonelist *)); |
| 89 | 89 | ||
| 90 | static inline struct page *alloc_pages_node(int nid, unsigned int __nocast gfp_mask, | 90 | static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, |
| 91 | unsigned int order) | 91 | unsigned int order) |
| 92 | { | 92 | { |
| 93 | if (unlikely(order >= MAX_ORDER)) | 93 | if (unlikely(order >= MAX_ORDER)) |
| @@ -98,17 +98,17 @@ static inline struct page *alloc_pages_node(int nid, unsigned int __nocast gfp_m | |||
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | #ifdef CONFIG_NUMA | 100 | #ifdef CONFIG_NUMA |
| 101 | extern struct page *alloc_pages_current(unsigned int __nocast gfp_mask, unsigned order); | 101 | extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); |
| 102 | 102 | ||
| 103 | static inline struct page * | 103 | static inline struct page * |
| 104 | alloc_pages(unsigned int __nocast gfp_mask, unsigned int order) | 104 | alloc_pages(gfp_t gfp_mask, unsigned int order) |
| 105 | { | 105 | { |
| 106 | if (unlikely(order >= MAX_ORDER)) | 106 | if (unlikely(order >= MAX_ORDER)) |
| 107 | return NULL; | 107 | return NULL; |
| 108 | 108 | ||
| 109 | return alloc_pages_current(gfp_mask, order); | 109 | return alloc_pages_current(gfp_mask, order); |
| 110 | } | 110 | } |
| 111 | extern struct page *alloc_page_vma(unsigned __nocast gfp_mask, | 111 | extern struct page *alloc_page_vma(gfp_t gfp_mask, |
| 112 | struct vm_area_struct *vma, unsigned long addr); | 112 | struct vm_area_struct *vma, unsigned long addr); |
| 113 | #else | 113 | #else |
| 114 | #define alloc_pages(gfp_mask, order) \ | 114 | #define alloc_pages(gfp_mask, order) \ |
| @@ -117,8 +117,8 @@ extern struct page *alloc_page_vma(unsigned __nocast gfp_mask, | |||
| 117 | #endif | 117 | #endif |
| 118 | #define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0) | 118 | #define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0) |
| 119 | 119 | ||
| 120 | extern unsigned long FASTCALL(__get_free_pages(unsigned int __nocast gfp_mask, unsigned int order)); | 120 | extern unsigned long FASTCALL(__get_free_pages(gfp_t gfp_mask, unsigned int order)); |
| 121 | extern unsigned long FASTCALL(get_zeroed_page(unsigned int __nocast gfp_mask)); | 121 | extern unsigned long FASTCALL(get_zeroed_page(gfp_t gfp_mask)); |
| 122 | 122 | ||
| 123 | #define __get_free_page(gfp_mask) \ | 123 | #define __get_free_page(gfp_mask) \ |
| 124 | __get_free_pages((gfp_mask),0) | 124 | __get_free_pages((gfp_mask),0) |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index e670b0d13fe0..d664330d900e 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
| @@ -25,6 +25,8 @@ int is_hugepage_mem_enough(size_t); | |||
| 25 | unsigned long hugetlb_total_pages(void); | 25 | unsigned long hugetlb_total_pages(void); |
| 26 | struct page *alloc_huge_page(void); | 26 | struct page *alloc_huge_page(void); |
| 27 | void free_huge_page(struct page *); | 27 | void free_huge_page(struct page *); |
| 28 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | ||
| 29 | unsigned long address, int write_access); | ||
| 28 | 30 | ||
| 29 | extern unsigned long max_huge_pages; | 31 | extern unsigned long max_huge_pages; |
| 30 | extern const unsigned long hugetlb_zero, hugetlb_infinity; | 32 | extern const unsigned long hugetlb_zero, hugetlb_infinity; |
| @@ -99,6 +101,7 @@ static inline unsigned long hugetlb_total_pages(void) | |||
| 99 | do { } while (0) | 101 | do { } while (0) |
| 100 | #define alloc_huge_page() ({ NULL; }) | 102 | #define alloc_huge_page() ({ NULL; }) |
| 101 | #define free_huge_page(p) ({ (void)(p); BUG(); }) | 103 | #define free_huge_page(p) ({ (void)(p); BUG(); }) |
| 104 | #define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; }) | ||
| 102 | 105 | ||
| 103 | #ifndef HPAGE_MASK | 106 | #ifndef HPAGE_MASK |
| 104 | #define HPAGE_MASK 0 /* Keep the compiler happy */ | 107 | #define HPAGE_MASK 0 /* Keep the compiler happy */ |
diff --git a/include/linux/idr.h b/include/linux/idr.h index ca3b7e462576..3d5de45f961b 100644 --- a/include/linux/idr.h +++ b/include/linux/idr.h | |||
| @@ -75,4 +75,5 @@ int idr_pre_get(struct idr *idp, unsigned gfp_mask); | |||
| 75 | int idr_get_new(struct idr *idp, void *ptr, int *id); | 75 | int idr_get_new(struct idr *idp, void *ptr, int *id); |
| 76 | int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id); | 76 | int idr_get_new_above(struct idr *idp, void *ptr, int starting_id, int *id); |
| 77 | void idr_remove(struct idr *idp, int id); | 77 | void idr_remove(struct idr *idp, int id); |
| 78 | void idr_destroy(struct idr *idp); | ||
| 78 | void idr_init(struct idr *idp); | 79 | void idr_init(struct idr *idp); |
diff --git a/include/linux/jbd.h b/include/linux/jbd.h index de097269bd7f..ff853b3173c6 100644 --- a/include/linux/jbd.h +++ b/include/linux/jbd.h | |||
| @@ -935,7 +935,7 @@ void journal_put_journal_head(struct journal_head *jh); | |||
| 935 | */ | 935 | */ |
| 936 | extern kmem_cache_t *jbd_handle_cache; | 936 | extern kmem_cache_t *jbd_handle_cache; |
| 937 | 937 | ||
| 938 | static inline handle_t *jbd_alloc_handle(unsigned int __nocast gfp_flags) | 938 | static inline handle_t *jbd_alloc_handle(gfp_t gfp_flags) |
| 939 | { | 939 | { |
| 940 | return kmem_cache_alloc(jbd_handle_cache, gfp_flags); | 940 | return kmem_cache_alloc(jbd_handle_cache, gfp_flags); |
| 941 | } | 941 | } |
diff --git a/include/linux/key-ui.h b/include/linux/key-ui.h index 918c34a8347e..7a2e332067c3 100644 --- a/include/linux/key-ui.h +++ b/include/linux/key-ui.h | |||
| @@ -38,97 +38,16 @@ struct keyring_list { | |||
| 38 | struct key *keys[0]; | 38 | struct key *keys[0]; |
| 39 | }; | 39 | }; |
| 40 | 40 | ||
| 41 | |||
| 42 | /* | 41 | /* |
| 43 | * check to see whether permission is granted to use a key in the desired way | 42 | * check to see whether permission is granted to use a key in the desired way |
| 44 | */ | 43 | */ |
| 45 | static inline int key_permission(const key_ref_t key_ref, key_perm_t perm) | 44 | extern int key_task_permission(const key_ref_t key_ref, |
| 46 | { | 45 | struct task_struct *context, |
| 47 | struct key *key = key_ref_to_ptr(key_ref); | 46 | key_perm_t perm); |
| 48 | key_perm_t kperm; | ||
| 49 | |||
| 50 | if (is_key_possessed(key_ref)) | ||
| 51 | kperm = key->perm >> 24; | ||
| 52 | else if (key->uid == current->fsuid) | ||
| 53 | kperm = key->perm >> 16; | ||
| 54 | else if (key->gid != -1 && | ||
| 55 | key->perm & KEY_GRP_ALL && | ||
| 56 | in_group_p(key->gid) | ||
| 57 | ) | ||
| 58 | kperm = key->perm >> 8; | ||
| 59 | else | ||
| 60 | kperm = key->perm; | ||
| 61 | |||
| 62 | kperm = kperm & perm & KEY_ALL; | ||
| 63 | |||
| 64 | return kperm == perm; | ||
| 65 | } | ||
| 66 | |||
| 67 | /* | ||
| 68 | * check to see whether permission is granted to use a key in at least one of | ||
| 69 | * the desired ways | ||
| 70 | */ | ||
| 71 | static inline int key_any_permission(const key_ref_t key_ref, key_perm_t perm) | ||
| 72 | { | ||
| 73 | struct key *key = key_ref_to_ptr(key_ref); | ||
| 74 | key_perm_t kperm; | ||
| 75 | |||
| 76 | if (is_key_possessed(key_ref)) | ||
| 77 | kperm = key->perm >> 24; | ||
| 78 | else if (key->uid == current->fsuid) | ||
| 79 | kperm = key->perm >> 16; | ||
| 80 | else if (key->gid != -1 && | ||
| 81 | key->perm & KEY_GRP_ALL && | ||
| 82 | in_group_p(key->gid) | ||
| 83 | ) | ||
| 84 | kperm = key->perm >> 8; | ||
| 85 | else | ||
| 86 | kperm = key->perm; | ||
| 87 | 47 | ||
| 88 | kperm = kperm & perm & KEY_ALL; | 48 | static inline int key_permission(const key_ref_t key_ref, key_perm_t perm) |
| 89 | |||
| 90 | return kperm != 0; | ||
| 91 | } | ||
| 92 | |||
| 93 | static inline int key_task_groups_search(struct task_struct *tsk, gid_t gid) | ||
| 94 | { | ||
| 95 | int ret; | ||
| 96 | |||
| 97 | task_lock(tsk); | ||
| 98 | ret = groups_search(tsk->group_info, gid); | ||
| 99 | task_unlock(tsk); | ||
| 100 | return ret; | ||
| 101 | } | ||
| 102 | |||
| 103 | static inline int key_task_permission(const key_ref_t key_ref, | ||
| 104 | struct task_struct *context, | ||
| 105 | key_perm_t perm) | ||
| 106 | { | 49 | { |
| 107 | struct key *key = key_ref_to_ptr(key_ref); | 50 | return key_task_permission(key_ref, current, perm); |
| 108 | key_perm_t kperm; | ||
| 109 | |||
| 110 | if (is_key_possessed(key_ref)) { | ||
| 111 | kperm = key->perm >> 24; | ||
| 112 | } | ||
| 113 | else if (key->uid == context->fsuid) { | ||
| 114 | kperm = key->perm >> 16; | ||
| 115 | } | ||
| 116 | else if (key->gid != -1 && | ||
| 117 | key->perm & KEY_GRP_ALL && ( | ||
| 118 | key->gid == context->fsgid || | ||
| 119 | key_task_groups_search(context, key->gid) | ||
| 120 | ) | ||
| 121 | ) { | ||
| 122 | kperm = key->perm >> 8; | ||
| 123 | } | ||
| 124 | else { | ||
| 125 | kperm = key->perm; | ||
| 126 | } | ||
| 127 | |||
| 128 | kperm = kperm & perm & KEY_ALL; | ||
| 129 | |||
| 130 | return kperm == perm; | ||
| 131 | |||
| 132 | } | 51 | } |
| 133 | 52 | ||
| 134 | extern key_ref_t lookup_user_key(struct task_struct *context, | 53 | extern key_ref_t lookup_user_key(struct task_struct *context, |
diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h index c27cd428d269..48eccd865bd8 100644 --- a/include/linux/kfifo.h +++ b/include/linux/kfifo.h | |||
| @@ -35,8 +35,8 @@ struct kfifo { | |||
| 35 | }; | 35 | }; |
| 36 | 36 | ||
| 37 | extern struct kfifo *kfifo_init(unsigned char *buffer, unsigned int size, | 37 | extern struct kfifo *kfifo_init(unsigned char *buffer, unsigned int size, |
| 38 | unsigned int __nocast gfp_mask, spinlock_t *lock); | 38 | gfp_t gfp_mask, spinlock_t *lock); |
| 39 | extern struct kfifo *kfifo_alloc(unsigned int size, unsigned int __nocast gfp_mask, | 39 | extern struct kfifo *kfifo_alloc(unsigned int size, gfp_t gfp_mask, |
| 40 | spinlock_t *lock); | 40 | spinlock_t *lock); |
| 41 | extern void kfifo_free(struct kfifo *fifo); | 41 | extern void kfifo_free(struct kfifo *fifo); |
| 42 | extern unsigned int __kfifo_put(struct kfifo *fifo, | 42 | extern unsigned int __kfifo_put(struct kfifo *fifo, |
diff --git a/include/linux/list.h b/include/linux/list.h index e6ec59682274..084971f333fe 100644 --- a/include/linux/list.h +++ b/include/linux/list.h | |||
| @@ -442,12 +442,14 @@ static inline void list_splice_init(struct list_head *list, | |||
| 442 | * as long as the traversal is guarded by rcu_read_lock(). | 442 | * as long as the traversal is guarded by rcu_read_lock(). |
| 443 | */ | 443 | */ |
| 444 | #define list_for_each_rcu(pos, head) \ | 444 | #define list_for_each_rcu(pos, head) \ |
| 445 | for (pos = (head)->next; prefetch(pos->next), pos != (head); \ | 445 | for (pos = (head)->next; \ |
| 446 | pos = rcu_dereference(pos->next)) | 446 | prefetch(rcu_dereference(pos)->next), pos != (head); \ |
| 447 | pos = pos->next) | ||
| 447 | 448 | ||
| 448 | #define __list_for_each_rcu(pos, head) \ | 449 | #define __list_for_each_rcu(pos, head) \ |
| 449 | for (pos = (head)->next; pos != (head); \ | 450 | for (pos = (head)->next; \ |
| 450 | pos = rcu_dereference(pos->next)) | 451 | rcu_dereference(pos) != (head); \ |
| 452 | pos = pos->next) | ||
| 451 | 453 | ||
| 452 | /** | 454 | /** |
| 453 | * list_for_each_safe_rcu - iterate over an rcu-protected list safe | 455 | * list_for_each_safe_rcu - iterate over an rcu-protected list safe |
| @@ -461,8 +463,9 @@ static inline void list_splice_init(struct list_head *list, | |||
| 461 | * as long as the traversal is guarded by rcu_read_lock(). | 463 | * as long as the traversal is guarded by rcu_read_lock(). |
| 462 | */ | 464 | */ |
| 463 | #define list_for_each_safe_rcu(pos, n, head) \ | 465 | #define list_for_each_safe_rcu(pos, n, head) \ |
| 464 | for (pos = (head)->next, n = pos->next; pos != (head); \ | 466 | for (pos = (head)->next; \ |
| 465 | pos = rcu_dereference(n), n = pos->next) | 467 | n = rcu_dereference(pos)->next, pos != (head); \ |
| 468 | pos = n) | ||
| 466 | 469 | ||
| 467 | /** | 470 | /** |
| 468 | * list_for_each_entry_rcu - iterate over rcu list of given type | 471 | * list_for_each_entry_rcu - iterate over rcu list of given type |
| @@ -474,11 +477,11 @@ static inline void list_splice_init(struct list_head *list, | |||
| 474 | * the _rcu list-mutation primitives such as list_add_rcu() | 477 | * the _rcu list-mutation primitives such as list_add_rcu() |
| 475 | * as long as the traversal is guarded by rcu_read_lock(). | 478 | * as long as the traversal is guarded by rcu_read_lock(). |
| 476 | */ | 479 | */ |
| 477 | #define list_for_each_entry_rcu(pos, head, member) \ | 480 | #define list_for_each_entry_rcu(pos, head, member) \ |
| 478 | for (pos = list_entry((head)->next, typeof(*pos), member); \ | 481 | for (pos = list_entry((head)->next, typeof(*pos), member); \ |
| 479 | prefetch(pos->member.next), &pos->member != (head); \ | 482 | prefetch(rcu_dereference(pos)->member.next), \ |
| 480 | pos = rcu_dereference(list_entry(pos->member.next, \ | 483 | &pos->member != (head); \ |
| 481 | typeof(*pos), member))) | 484 | pos = list_entry(pos->member.next, typeof(*pos), member)) |
| 482 | 485 | ||
| 483 | 486 | ||
| 484 | /** | 487 | /** |
| @@ -492,8 +495,9 @@ static inline void list_splice_init(struct list_head *list, | |||
| 492 | * as long as the traversal is guarded by rcu_read_lock(). | 495 | * as long as the traversal is guarded by rcu_read_lock(). |
| 493 | */ | 496 | */ |
| 494 | #define list_for_each_continue_rcu(pos, head) \ | 497 | #define list_for_each_continue_rcu(pos, head) \ |
| 495 | for ((pos) = (pos)->next; prefetch((pos)->next), (pos) != (head); \ | 498 | for ((pos) = (pos)->next; \ |
| 496 | (pos) = rcu_dereference((pos)->next)) | 499 | prefetch(rcu_dereference((pos))->next), (pos) != (head); \ |
| 500 | (pos) = (pos)->next) | ||
| 497 | 501 | ||
| 498 | /* | 502 | /* |
| 499 | * Double linked lists with a single pointer list head. | 503 | * Double linked lists with a single pointer list head. |
| @@ -696,8 +700,9 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev, | |||
| 696 | pos = n) | 700 | pos = n) |
| 697 | 701 | ||
| 698 | #define hlist_for_each_rcu(pos, head) \ | 702 | #define hlist_for_each_rcu(pos, head) \ |
| 699 | for ((pos) = (head)->first; pos && ({ prefetch((pos)->next); 1; }); \ | 703 | for ((pos) = (head)->first; \ |
| 700 | (pos) = rcu_dereference((pos)->next)) | 704 | rcu_dereference((pos)) && ({ prefetch((pos)->next); 1; }); \ |
| 705 | (pos) = (pos)->next) | ||
| 701 | 706 | ||
| 702 | /** | 707 | /** |
| 703 | * hlist_for_each_entry - iterate over list of given type | 708 | * hlist_for_each_entry - iterate over list of given type |
| @@ -762,9 +767,9 @@ static inline void hlist_add_after_rcu(struct hlist_node *prev, | |||
| 762 | */ | 767 | */ |
| 763 | #define hlist_for_each_entry_rcu(tpos, pos, head, member) \ | 768 | #define hlist_for_each_entry_rcu(tpos, pos, head, member) \ |
| 764 | for (pos = (head)->first; \ | 769 | for (pos = (head)->first; \ |
| 765 | pos && ({ prefetch(pos->next); 1;}) && \ | 770 | rcu_dereference(pos) && ({ prefetch(pos->next); 1;}) && \ |
| 766 | ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ | 771 | ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \ |
| 767 | pos = rcu_dereference(pos->next)) | 772 | pos = pos->next) |
| 768 | 773 | ||
| 769 | #else | 774 | #else |
| 770 | #warning "don't include kernel headers in userspace" | 775 | #warning "don't include kernel headers in userspace" |
diff --git a/include/linux/mempool.h b/include/linux/mempool.h index 796220ce47cc..f2427d7394b0 100644 --- a/include/linux/mempool.h +++ b/include/linux/mempool.h | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | 6 | ||
| 7 | #include <linux/wait.h> | 7 | #include <linux/wait.h> |
| 8 | 8 | ||
| 9 | typedef void * (mempool_alloc_t)(unsigned int __nocast gfp_mask, void *pool_data); | 9 | typedef void * (mempool_alloc_t)(gfp_t gfp_mask, void *pool_data); |
| 10 | typedef void (mempool_free_t)(void *element, void *pool_data); | 10 | typedef void (mempool_free_t)(void *element, void *pool_data); |
| 11 | 11 | ||
| 12 | typedef struct mempool_s { | 12 | typedef struct mempool_s { |
| @@ -26,17 +26,16 @@ extern mempool_t *mempool_create(int min_nr, mempool_alloc_t *alloc_fn, | |||
| 26 | extern mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn, | 26 | extern mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn, |
| 27 | mempool_free_t *free_fn, void *pool_data, int nid); | 27 | mempool_free_t *free_fn, void *pool_data, int nid); |
| 28 | 28 | ||
| 29 | extern int mempool_resize(mempool_t *pool, int new_min_nr, | 29 | extern int mempool_resize(mempool_t *pool, int new_min_nr, gfp_t gfp_mask); |
| 30 | unsigned int __nocast gfp_mask); | ||
| 31 | extern void mempool_destroy(mempool_t *pool); | 30 | extern void mempool_destroy(mempool_t *pool); |
| 32 | extern void * mempool_alloc(mempool_t *pool, unsigned int __nocast gfp_mask); | 31 | extern void * mempool_alloc(mempool_t *pool, gfp_t gfp_mask); |
| 33 | extern void mempool_free(void *element, mempool_t *pool); | 32 | extern void mempool_free(void *element, mempool_t *pool); |
| 34 | 33 | ||
| 35 | /* | 34 | /* |
| 36 | * A mempool_alloc_t and mempool_free_t that get the memory from | 35 | * A mempool_alloc_t and mempool_free_t that get the memory from |
| 37 | * a slab that is passed in through pool_data. | 36 | * a slab that is passed in through pool_data. |
| 38 | */ | 37 | */ |
| 39 | void *mempool_alloc_slab(unsigned int __nocast gfp_mask, void *pool_data); | 38 | void *mempool_alloc_slab(gfp_t gfp_mask, void *pool_data); |
| 40 | void mempool_free_slab(void *element, void *pool_data); | 39 | void mempool_free_slab(void *element, void *pool_data); |
| 41 | 40 | ||
| 42 | #endif /* _LINUX_MEMPOOL_H */ | 41 | #endif /* _LINUX_MEMPOOL_H */ |
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h index 1d5b10ae2399..f08e870100f4 100644 --- a/include/linux/netfilter/nfnetlink.h +++ b/include/linux/netfilter/nfnetlink.h | |||
| @@ -41,11 +41,15 @@ enum nfnetlink_groups { | |||
| 41 | struct nfattr | 41 | struct nfattr |
| 42 | { | 42 | { |
| 43 | u_int16_t nfa_len; | 43 | u_int16_t nfa_len; |
| 44 | u_int16_t nfa_type; | 44 | u_int16_t nfa_type; /* we use 15 bits for the type, and the highest |
| 45 | * bit to indicate whether the payload is nested */ | ||
| 45 | } __attribute__ ((packed)); | 46 | } __attribute__ ((packed)); |
| 46 | 47 | ||
| 47 | /* FIXME: Shamelessly copy and pasted from rtnetlink.h, it's time | 48 | /* FIXME: Apart from NFNL_NFA_NESTED shamelessly copy and pasted from |
| 48 | * to put this in a generic file */ | 49 | * rtnetlink.h, it's time to put this in a generic file */ |
| 50 | |||
| 51 | #define NFNL_NFA_NEST 0x8000 | ||
| 52 | #define NFA_TYPE(attr) ((attr)->nfa_type & 0x7fff) | ||
| 49 | 53 | ||
| 50 | #define NFA_ALIGNTO 4 | 54 | #define NFA_ALIGNTO 4 |
| 51 | #define NFA_ALIGN(len) (((len) + NFA_ALIGNTO - 1) & ~(NFA_ALIGNTO - 1)) | 55 | #define NFA_ALIGN(len) (((len) + NFA_ALIGNTO - 1) & ~(NFA_ALIGNTO - 1)) |
| @@ -59,7 +63,7 @@ struct nfattr | |||
| 59 | #define NFA_PAYLOAD(nfa) ((int)((nfa)->nfa_len) - NFA_LENGTH(0)) | 63 | #define NFA_PAYLOAD(nfa) ((int)((nfa)->nfa_len) - NFA_LENGTH(0)) |
| 60 | #define NFA_NEST(skb, type) \ | 64 | #define NFA_NEST(skb, type) \ |
| 61 | ({ struct nfattr *__start = (struct nfattr *) (skb)->tail; \ | 65 | ({ struct nfattr *__start = (struct nfattr *) (skb)->tail; \ |
| 62 | NFA_PUT(skb, type, 0, NULL); \ | 66 | NFA_PUT(skb, (NFNL_NFA_NEST | type), 0, NULL); \ |
| 63 | __start; }) | 67 | __start; }) |
| 64 | #define NFA_NEST_END(skb, start) \ | 68 | #define NFA_NEST_END(skb, start) \ |
| 65 | ({ (start)->nfa_len = ((skb)->tail - (unsigned char *) (start)); \ | 69 | ({ (start)->nfa_len = ((skb)->tail - (unsigned char *) (start)); \ |
diff --git a/include/linux/netfilter/nfnetlink_conntrack.h b/include/linux/netfilter/nfnetlink_conntrack.h index 5c55751c78e4..116fcaced909 100644 --- a/include/linux/netfilter/nfnetlink_conntrack.h +++ b/include/linux/netfilter/nfnetlink_conntrack.h | |||
| @@ -70,15 +70,24 @@ enum ctattr_l4proto { | |||
| 70 | 70 | ||
| 71 | enum ctattr_protoinfo { | 71 | enum ctattr_protoinfo { |
| 72 | CTA_PROTOINFO_UNSPEC, | 72 | CTA_PROTOINFO_UNSPEC, |
| 73 | CTA_PROTOINFO_TCP_STATE, | 73 | CTA_PROTOINFO_TCP, |
| 74 | __CTA_PROTOINFO_MAX | 74 | __CTA_PROTOINFO_MAX |
| 75 | }; | 75 | }; |
| 76 | #define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1) | 76 | #define CTA_PROTOINFO_MAX (__CTA_PROTOINFO_MAX - 1) |
| 77 | 77 | ||
| 78 | enum ctattr_protoinfo_tcp { | ||
| 79 | CTA_PROTOINFO_TCP_UNSPEC, | ||
| 80 | CTA_PROTOINFO_TCP_STATE, | ||
| 81 | __CTA_PROTOINFO_TCP_MAX | ||
| 82 | }; | ||
| 83 | #define CTA_PROTOINFO_TCP_MAX (__CTA_PROTOINFO_TCP_MAX - 1) | ||
| 84 | |||
| 78 | enum ctattr_counters { | 85 | enum ctattr_counters { |
| 79 | CTA_COUNTERS_UNSPEC, | 86 | CTA_COUNTERS_UNSPEC, |
| 80 | CTA_COUNTERS_PACKETS, | 87 | CTA_COUNTERS_PACKETS, /* old 64bit counters */ |
| 81 | CTA_COUNTERS_BYTES, | 88 | CTA_COUNTERS_BYTES, /* old 64bit counters */ |
| 89 | CTA_COUNTERS32_PACKETS, | ||
| 90 | CTA_COUNTERS32_BYTES, | ||
| 82 | __CTA_COUNTERS_MAX | 91 | __CTA_COUNTERS_MAX |
| 83 | }; | 92 | }; |
| 84 | #define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1) | 93 | #define CTA_COUNTERS_MAX (__CTA_COUNTERS_MAX - 1) |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack.h b/include/linux/netfilter_ipv4/ip_conntrack.h index 4ced38736813..d078bb91d9e5 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack.h +++ b/include/linux/netfilter_ipv4/ip_conntrack.h | |||
| @@ -117,6 +117,10 @@ enum ip_conntrack_events | |||
| 117 | /* NAT info */ | 117 | /* NAT info */ |
| 118 | IPCT_NATINFO_BIT = 10, | 118 | IPCT_NATINFO_BIT = 10, |
| 119 | IPCT_NATINFO = (1 << IPCT_NATINFO_BIT), | 119 | IPCT_NATINFO = (1 << IPCT_NATINFO_BIT), |
| 120 | |||
| 121 | /* Counter highest bit has been set */ | ||
| 122 | IPCT_COUNTER_FILLING_BIT = 11, | ||
| 123 | IPCT_COUNTER_FILLING = (1 << IPCT_COUNTER_FILLING_BIT), | ||
| 120 | }; | 124 | }; |
| 121 | 125 | ||
| 122 | enum ip_conntrack_expect_events { | 126 | enum ip_conntrack_expect_events { |
| @@ -192,8 +196,8 @@ do { \ | |||
| 192 | 196 | ||
| 193 | struct ip_conntrack_counter | 197 | struct ip_conntrack_counter |
| 194 | { | 198 | { |
| 195 | u_int64_t packets; | 199 | u_int32_t packets; |
| 196 | u_int64_t bytes; | 200 | u_int32_t bytes; |
| 197 | }; | 201 | }; |
| 198 | 202 | ||
| 199 | struct ip_conntrack_helper; | 203 | struct ip_conntrack_helper; |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_protocol.h b/include/linux/netfilter_ipv4/ip_conntrack_protocol.h index b6b99be8632a..2c76b879e3dc 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack_protocol.h +++ b/include/linux/netfilter_ipv4/ip_conntrack_protocol.h | |||
| @@ -52,6 +52,9 @@ struct ip_conntrack_protocol | |||
| 52 | int (*to_nfattr)(struct sk_buff *skb, struct nfattr *nfa, | 52 | int (*to_nfattr)(struct sk_buff *skb, struct nfattr *nfa, |
| 53 | const struct ip_conntrack *ct); | 53 | const struct ip_conntrack *ct); |
| 54 | 54 | ||
| 55 | /* convert nfnetlink attributes to protoinfo */ | ||
| 56 | int (*from_nfattr)(struct nfattr *tb[], struct ip_conntrack *ct); | ||
| 57 | |||
| 55 | int (*tuple_to_nfattr)(struct sk_buff *skb, | 58 | int (*tuple_to_nfattr)(struct sk_buff *skb, |
| 56 | const struct ip_conntrack_tuple *t); | 59 | const struct ip_conntrack_tuple *t); |
| 57 | int (*nfattr_to_tuple)(struct nfattr *tb[], | 60 | int (*nfattr_to_tuple)(struct nfattr *tb[], |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_tuple.h b/include/linux/netfilter_ipv4/ip_conntrack_tuple.h index 20e43f018b7c..3232db11a4e5 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack_tuple.h +++ b/include/linux/netfilter_ipv4/ip_conntrack_tuple.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | #ifndef _IP_CONNTRACK_TUPLE_H | 1 | #ifndef _IP_CONNTRACK_TUPLE_H |
| 2 | #define _IP_CONNTRACK_TUPLE_H | 2 | #define _IP_CONNTRACK_TUPLE_H |
| 3 | 3 | ||
| 4 | #include <linux/types.h> | ||
| 5 | |||
| 4 | /* A `tuple' is a structure containing the information to uniquely | 6 | /* A `tuple' is a structure containing the information to uniquely |
| 5 | identify a connection. ie. if two packets have the same tuple, they | 7 | identify a connection. ie. if two packets have the same tuple, they |
| 6 | are in the same connection; if not, they are not. | 8 | are in the same connection; if not, they are not. |
diff --git a/include/linux/netfilter_ipv4/ip_nat.h b/include/linux/netfilter_ipv4/ip_nat.h index e201ec6e9905..41a107de17cf 100644 --- a/include/linux/netfilter_ipv4/ip_nat.h +++ b/include/linux/netfilter_ipv4/ip_nat.h | |||
| @@ -58,10 +58,6 @@ extern rwlock_t ip_nat_lock; | |||
| 58 | struct ip_nat_info | 58 | struct ip_nat_info |
| 59 | { | 59 | { |
| 60 | struct list_head bysource; | 60 | struct list_head bysource; |
| 61 | |||
| 62 | /* Helper (NULL if none). */ | ||
| 63 | struct ip_nat_helper *helper; | ||
| 64 | |||
| 65 | struct ip_nat_seq seq[IP_CT_DIR_MAX]; | 61 | struct ip_nat_seq seq[IP_CT_DIR_MAX]; |
| 66 | }; | 62 | }; |
| 67 | 63 | ||
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index bdebdc564506..ba25ca874c20 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
| @@ -131,7 +131,7 @@ extern struct sock *netlink_kernel_create(int unit, unsigned int groups, void (* | |||
| 131 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); | 131 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); |
| 132 | extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); | 132 | extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); |
| 133 | extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid, | 133 | extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid, |
| 134 | __u32 group, unsigned int __nocast allocation); | 134 | __u32 group, gfp_t allocation); |
| 135 | extern void netlink_set_err(struct sock *ssk, __u32 pid, __u32 group, int code); | 135 | extern void netlink_set_err(struct sock *ssk, __u32 pid, __u32 group, int code); |
| 136 | extern int netlink_register_notifier(struct notifier_block *nb); | 136 | extern int netlink_register_notifier(struct notifier_block *nb); |
| 137 | extern int netlink_unregister_notifier(struct notifier_block *nb); | 137 | extern int netlink_unregister_notifier(struct notifier_block *nb); |
diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h index 5ade54a78dbb..ca5a8733000f 100644 --- a/include/linux/netpoll.h +++ b/include/linux/netpoll.h | |||
| @@ -86,7 +86,7 @@ static inline void netpoll_poll_unlock(void *have) | |||
| 86 | 86 | ||
| 87 | #else | 87 | #else |
| 88 | #define netpoll_rx(a) 0 | 88 | #define netpoll_rx(a) 0 |
| 89 | #define netpoll_poll_lock(a) 0 | 89 | #define netpoll_poll_lock(a) NULL |
| 90 | #define netpoll_poll_unlock(a) | 90 | #define netpoll_poll_unlock(a) |
| 91 | #endif | 91 | #endif |
| 92 | 92 | ||
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index d9a25647a295..acbf31c154f8 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #define AS_EIO (__GFP_BITS_SHIFT + 0) /* IO error on async write */ | 19 | #define AS_EIO (__GFP_BITS_SHIFT + 0) /* IO error on async write */ |
| 20 | #define AS_ENOSPC (__GFP_BITS_SHIFT + 1) /* ENOSPC on async write */ | 20 | #define AS_ENOSPC (__GFP_BITS_SHIFT + 1) /* ENOSPC on async write */ |
| 21 | 21 | ||
| 22 | static inline unsigned int __nocast mapping_gfp_mask(struct address_space * mapping) | 22 | static inline gfp_t mapping_gfp_mask(struct address_space * mapping) |
| 23 | { | 23 | { |
| 24 | return mapping->flags & __GFP_BITS_MASK; | 24 | return mapping->flags & __GFP_BITS_MASK; |
| 25 | } | 25 | } |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index f74ed9462475..71834f05504f 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -723,6 +723,7 @@ | |||
| 723 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 | 723 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 |
| 724 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 | 724 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 |
| 725 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 | 725 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 |
| 726 | #define PCI_DEVICE_ID_HP_DIVA_HURRICANE 0x132a | ||
| 726 | #define PCI_DEVICE_ID_HP_CISS 0x3210 | 727 | #define PCI_DEVICE_ID_HP_CISS 0x3210 |
| 727 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 | 728 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 |
| 728 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 | 729 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 |
| @@ -2696,6 +2697,7 @@ | |||
| 2696 | 2697 | ||
| 2697 | #define PCI_SUBVENDOR_ID_EXSYS 0xd84d | 2698 | #define PCI_SUBVENDOR_ID_EXSYS 0xd84d |
| 2698 | #define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 | 2699 | #define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 |
| 2700 | #define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055 | ||
| 2699 | 2701 | ||
| 2700 | #define PCI_VENDOR_ID_TIGERJET 0xe159 | 2702 | #define PCI_VENDOR_ID_TIGERJET 0xe159 |
| 2701 | #define PCI_DEVICE_ID_TIGERJET_300 0x0001 | 2703 | #define PCI_DEVICE_ID_TIGERJET_300 0x0001 |
diff --git a/include/linux/posix_acl.h b/include/linux/posix_acl.h index 4caedddaa033..4bc241290c24 100644 --- a/include/linux/posix_acl.h +++ b/include/linux/posix_acl.h | |||
| @@ -71,11 +71,11 @@ posix_acl_release(struct posix_acl *acl) | |||
| 71 | 71 | ||
| 72 | /* posix_acl.c */ | 72 | /* posix_acl.c */ |
| 73 | 73 | ||
| 74 | extern struct posix_acl *posix_acl_alloc(int, unsigned int __nocast); | 74 | extern struct posix_acl *posix_acl_alloc(int, gfp_t); |
| 75 | extern struct posix_acl *posix_acl_clone(const struct posix_acl *, unsigned int __nocast); | 75 | extern struct posix_acl *posix_acl_clone(const struct posix_acl *, gfp_t); |
| 76 | extern int posix_acl_valid(const struct posix_acl *); | 76 | extern int posix_acl_valid(const struct posix_acl *); |
| 77 | extern int posix_acl_permission(struct inode *, const struct posix_acl *, int); | 77 | extern int posix_acl_permission(struct inode *, const struct posix_acl *, int); |
| 78 | extern struct posix_acl *posix_acl_from_mode(mode_t, unsigned int __nocast); | 78 | extern struct posix_acl *posix_acl_from_mode(mode_t, gfp_t); |
| 79 | extern int posix_acl_equiv_mode(const struct posix_acl *, mode_t *); | 79 | extern int posix_acl_equiv_mode(const struct posix_acl *, mode_t *); |
| 80 | extern int posix_acl_create_masq(struct posix_acl *, mode_t *); | 80 | extern int posix_acl_create_masq(struct posix_acl *, mode_t *); |
| 81 | extern int posix_acl_chmod_masq(struct posix_acl *, mode_t); | 81 | extern int posix_acl_chmod_masq(struct posix_acl *, mode_t); |
diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h index 9c51917b1cce..045d4761febc 100644 --- a/include/linux/radix-tree.h +++ b/include/linux/radix-tree.h | |||
| @@ -50,7 +50,7 @@ void *radix_tree_delete(struct radix_tree_root *, unsigned long); | |||
| 50 | unsigned int | 50 | unsigned int |
| 51 | radix_tree_gang_lookup(struct radix_tree_root *root, void **results, | 51 | radix_tree_gang_lookup(struct radix_tree_root *root, void **results, |
| 52 | unsigned long first_index, unsigned int max_items); | 52 | unsigned long first_index, unsigned int max_items); |
| 53 | int radix_tree_preload(unsigned int __nocast gfp_mask); | 53 | int radix_tree_preload(gfp_t gfp_mask); |
| 54 | void radix_tree_init(void); | 54 | void radix_tree_init(void); |
| 55 | void *radix_tree_tag_set(struct radix_tree_root *root, | 55 | void *radix_tree_tag_set(struct radix_tree_root *root, |
| 56 | unsigned long index, int tag); | 56 | unsigned long index, int tag); |
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h index 4e65eb44adfd..70191a5a148f 100644 --- a/include/linux/rcupdate.h +++ b/include/linux/rcupdate.h | |||
| @@ -94,6 +94,7 @@ struct rcu_data { | |||
| 94 | long batch; /* Batch # for current RCU batch */ | 94 | long batch; /* Batch # for current RCU batch */ |
| 95 | struct rcu_head *nxtlist; | 95 | struct rcu_head *nxtlist; |
| 96 | struct rcu_head **nxttail; | 96 | struct rcu_head **nxttail; |
| 97 | long count; /* # of queued items */ | ||
| 97 | struct rcu_head *curlist; | 98 | struct rcu_head *curlist; |
| 98 | struct rcu_head **curtail; | 99 | struct rcu_head **curtail; |
| 99 | struct rcu_head *donelist; | 100 | struct rcu_head *donelist; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index c3ba31f210a9..27519df0f987 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1018,6 +1018,7 @@ extern int force_sig_info(int, struct siginfo *, struct task_struct *); | |||
| 1018 | extern int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp); | 1018 | extern int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp); |
| 1019 | extern int kill_pg_info(int, struct siginfo *, pid_t); | 1019 | extern int kill_pg_info(int, struct siginfo *, pid_t); |
| 1020 | extern int kill_proc_info(int, struct siginfo *, pid_t); | 1020 | extern int kill_proc_info(int, struct siginfo *, pid_t); |
| 1021 | extern int kill_proc_info_as_uid(int, struct siginfo *, pid_t, uid_t, uid_t); | ||
| 1021 | extern void do_notify_parent(struct task_struct *, int); | 1022 | extern void do_notify_parent(struct task_struct *, int); |
| 1022 | extern void force_sig(int, struct task_struct *); | 1023 | extern void force_sig(int, struct task_struct *); |
| 1023 | extern void force_sig_specific(int, struct task_struct *); | 1024 | extern void force_sig_specific(int, struct task_struct *); |
diff --git a/include/linux/security.h b/include/linux/security.h index 0e43460d374e..627382e74057 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
| @@ -2634,8 +2634,7 @@ static inline int security_socket_getpeersec(struct socket *sock, char __user *o | |||
| 2634 | return security_ops->socket_getpeersec(sock, optval, optlen, len); | 2634 | return security_ops->socket_getpeersec(sock, optval, optlen, len); |
| 2635 | } | 2635 | } |
| 2636 | 2636 | ||
| 2637 | static inline int security_sk_alloc(struct sock *sk, int family, | 2637 | static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority) |
| 2638 | unsigned int __nocast priority) | ||
| 2639 | { | 2638 | { |
| 2640 | return security_ops->sk_alloc_security(sk, family, priority); | 2639 | return security_ops->sk_alloc_security(sk, family, priority); |
| 2641 | } | 2640 | } |
| @@ -2752,8 +2751,7 @@ static inline int security_socket_getpeersec(struct socket *sock, char __user *o | |||
| 2752 | return -ENOPROTOOPT; | 2751 | return -ENOPROTOOPT; |
| 2753 | } | 2752 | } |
| 2754 | 2753 | ||
| 2755 | static inline int security_sk_alloc(struct sock *sk, int family, | 2754 | static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority) |
| 2756 | unsigned int __nocast priority) | ||
| 2757 | { | 2755 | { |
| 2758 | return 0; | 2756 | return 0; |
| 2759 | } | 2757 | } |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 466c879f82b8..8f5d9e7f8734 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -302,37 +302,37 @@ struct sk_buff { | |||
| 302 | 302 | ||
| 303 | extern void __kfree_skb(struct sk_buff *skb); | 303 | extern void __kfree_skb(struct sk_buff *skb); |
| 304 | extern struct sk_buff *__alloc_skb(unsigned int size, | 304 | extern struct sk_buff *__alloc_skb(unsigned int size, |
| 305 | unsigned int __nocast priority, int fclone); | 305 | gfp_t priority, int fclone); |
| 306 | static inline struct sk_buff *alloc_skb(unsigned int size, | 306 | static inline struct sk_buff *alloc_skb(unsigned int size, |
| 307 | unsigned int __nocast priority) | 307 | gfp_t priority) |
| 308 | { | 308 | { |
| 309 | return __alloc_skb(size, priority, 0); | 309 | return __alloc_skb(size, priority, 0); |
| 310 | } | 310 | } |
| 311 | 311 | ||
| 312 | static inline struct sk_buff *alloc_skb_fclone(unsigned int size, | 312 | static inline struct sk_buff *alloc_skb_fclone(unsigned int size, |
| 313 | unsigned int __nocast priority) | 313 | gfp_t priority) |
| 314 | { | 314 | { |
| 315 | return __alloc_skb(size, priority, 1); | 315 | return __alloc_skb(size, priority, 1); |
| 316 | } | 316 | } |
| 317 | 317 | ||
| 318 | extern struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, | 318 | extern struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, |
| 319 | unsigned int size, | 319 | unsigned int size, |
| 320 | unsigned int __nocast priority); | 320 | gfp_t priority); |
| 321 | extern void kfree_skbmem(struct sk_buff *skb); | 321 | extern void kfree_skbmem(struct sk_buff *skb); |
| 322 | extern struct sk_buff *skb_clone(struct sk_buff *skb, | 322 | extern struct sk_buff *skb_clone(struct sk_buff *skb, |
| 323 | unsigned int __nocast priority); | 323 | gfp_t priority); |
| 324 | extern struct sk_buff *skb_copy(const struct sk_buff *skb, | 324 | extern struct sk_buff *skb_copy(const struct sk_buff *skb, |
| 325 | unsigned int __nocast priority); | 325 | gfp_t priority); |
| 326 | extern struct sk_buff *pskb_copy(struct sk_buff *skb, | 326 | extern struct sk_buff *pskb_copy(struct sk_buff *skb, |
| 327 | unsigned int __nocast gfp_mask); | 327 | gfp_t gfp_mask); |
| 328 | extern int pskb_expand_head(struct sk_buff *skb, | 328 | extern int pskb_expand_head(struct sk_buff *skb, |
| 329 | int nhead, int ntail, | 329 | int nhead, int ntail, |
| 330 | unsigned int __nocast gfp_mask); | 330 | gfp_t gfp_mask); |
| 331 | extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, | 331 | extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, |
| 332 | unsigned int headroom); | 332 | unsigned int headroom); |
| 333 | extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb, | 333 | extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb, |
| 334 | int newheadroom, int newtailroom, | 334 | int newheadroom, int newtailroom, |
| 335 | unsigned int __nocast priority); | 335 | gfp_t priority); |
| 336 | extern struct sk_buff * skb_pad(struct sk_buff *skb, int pad); | 336 | extern struct sk_buff * skb_pad(struct sk_buff *skb, int pad); |
| 337 | #define dev_kfree_skb(a) kfree_skb(a) | 337 | #define dev_kfree_skb(a) kfree_skb(a) |
| 338 | extern void skb_over_panic(struct sk_buff *skb, int len, | 338 | extern void skb_over_panic(struct sk_buff *skb, int len, |
| @@ -484,7 +484,7 @@ static inline int skb_shared(const struct sk_buff *skb) | |||
| 484 | * NULL is returned on a memory allocation failure. | 484 | * NULL is returned on a memory allocation failure. |
| 485 | */ | 485 | */ |
| 486 | static inline struct sk_buff *skb_share_check(struct sk_buff *skb, | 486 | static inline struct sk_buff *skb_share_check(struct sk_buff *skb, |
| 487 | unsigned int __nocast pri) | 487 | gfp_t pri) |
| 488 | { | 488 | { |
| 489 | might_sleep_if(pri & __GFP_WAIT); | 489 | might_sleep_if(pri & __GFP_WAIT); |
| 490 | if (skb_shared(skb)) { | 490 | if (skb_shared(skb)) { |
| @@ -516,7 +516,7 @@ static inline struct sk_buff *skb_share_check(struct sk_buff *skb, | |||
| 516 | * %NULL is returned on a memory allocation failure. | 516 | * %NULL is returned on a memory allocation failure. |
| 517 | */ | 517 | */ |
| 518 | static inline struct sk_buff *skb_unshare(struct sk_buff *skb, | 518 | static inline struct sk_buff *skb_unshare(struct sk_buff *skb, |
| 519 | unsigned int __nocast pri) | 519 | gfp_t pri) |
| 520 | { | 520 | { |
| 521 | might_sleep_if(pri & __GFP_WAIT); | 521 | might_sleep_if(pri & __GFP_WAIT); |
| 522 | if (skb_cloned(skb)) { | 522 | if (skb_cloned(skb)) { |
| @@ -1017,7 +1017,7 @@ static inline void __skb_queue_purge(struct sk_buff_head *list) | |||
| 1017 | * %NULL is returned in there is no free memory. | 1017 | * %NULL is returned in there is no free memory. |
| 1018 | */ | 1018 | */ |
| 1019 | static inline struct sk_buff *__dev_alloc_skb(unsigned int length, | 1019 | static inline struct sk_buff *__dev_alloc_skb(unsigned int length, |
| 1020 | unsigned int __nocast gfp_mask) | 1020 | gfp_t gfp_mask) |
| 1021 | { | 1021 | { |
| 1022 | struct sk_buff *skb = alloc_skb(length + 16, gfp_mask); | 1022 | struct sk_buff *skb = alloc_skb(length + 16, gfp_mask); |
| 1023 | if (likely(skb)) | 1023 | if (likely(skb)) |
| @@ -1130,8 +1130,8 @@ static inline int skb_can_coalesce(struct sk_buff *skb, int i, | |||
| 1130 | * If there is no free memory -ENOMEM is returned, otherwise zero | 1130 | * If there is no free memory -ENOMEM is returned, otherwise zero |
| 1131 | * is returned and the old skb data released. | 1131 | * is returned and the old skb data released. |
| 1132 | */ | 1132 | */ |
| 1133 | extern int __skb_linearize(struct sk_buff *skb, unsigned int __nocast gfp); | 1133 | extern int __skb_linearize(struct sk_buff *skb, gfp_t gfp); |
| 1134 | static inline int skb_linearize(struct sk_buff *skb, unsigned int __nocast gfp) | 1134 | static inline int skb_linearize(struct sk_buff *skb, gfp_t gfp) |
| 1135 | { | 1135 | { |
| 1136 | return __skb_linearize(skb, gfp); | 1136 | return __skb_linearize(skb, gfp); |
| 1137 | } | 1137 | } |
diff --git a/include/linux/slab.h b/include/linux/slab.h index 1f356f3bbc64..5fc04a16ecb0 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
| @@ -61,11 +61,11 @@ extern kmem_cache_t *kmem_cache_create(const char *, size_t, size_t, unsigned lo | |||
| 61 | void (*)(void *, kmem_cache_t *, unsigned long)); | 61 | void (*)(void *, kmem_cache_t *, unsigned long)); |
| 62 | extern int kmem_cache_destroy(kmem_cache_t *); | 62 | extern int kmem_cache_destroy(kmem_cache_t *); |
| 63 | extern int kmem_cache_shrink(kmem_cache_t *); | 63 | extern int kmem_cache_shrink(kmem_cache_t *); |
| 64 | extern void *kmem_cache_alloc(kmem_cache_t *, unsigned int __nocast); | 64 | extern void *kmem_cache_alloc(kmem_cache_t *, gfp_t); |
| 65 | extern void kmem_cache_free(kmem_cache_t *, void *); | 65 | extern void kmem_cache_free(kmem_cache_t *, void *); |
| 66 | extern unsigned int kmem_cache_size(kmem_cache_t *); | 66 | extern unsigned int kmem_cache_size(kmem_cache_t *); |
| 67 | extern const char *kmem_cache_name(kmem_cache_t *); | 67 | extern const char *kmem_cache_name(kmem_cache_t *); |
| 68 | extern kmem_cache_t *kmem_find_general_cachep(size_t size, unsigned int __nocast gfpflags); | 68 | extern kmem_cache_t *kmem_find_general_cachep(size_t size, gfp_t gfpflags); |
| 69 | 69 | ||
| 70 | /* Size description struct for general caches. */ | 70 | /* Size description struct for general caches. */ |
| 71 | struct cache_sizes { | 71 | struct cache_sizes { |
| @@ -74,9 +74,9 @@ struct cache_sizes { | |||
| 74 | kmem_cache_t *cs_dmacachep; | 74 | kmem_cache_t *cs_dmacachep; |
| 75 | }; | 75 | }; |
| 76 | extern struct cache_sizes malloc_sizes[]; | 76 | extern struct cache_sizes malloc_sizes[]; |
| 77 | extern void *__kmalloc(size_t, unsigned int __nocast); | 77 | extern void *__kmalloc(size_t, gfp_t); |
| 78 | 78 | ||
| 79 | static inline void *kmalloc(size_t size, unsigned int __nocast flags) | 79 | static inline void *kmalloc(size_t size, gfp_t flags) |
| 80 | { | 80 | { |
| 81 | if (__builtin_constant_p(size)) { | 81 | if (__builtin_constant_p(size)) { |
| 82 | int i = 0; | 82 | int i = 0; |
| @@ -99,7 +99,7 @@ found: | |||
| 99 | return __kmalloc(size, flags); | 99 | return __kmalloc(size, flags); |
| 100 | } | 100 | } |
| 101 | 101 | ||
| 102 | extern void *kzalloc(size_t, unsigned int __nocast); | 102 | extern void *kzalloc(size_t, gfp_t); |
| 103 | 103 | ||
| 104 | /** | 104 | /** |
| 105 | * kcalloc - allocate memory for an array. The memory is set to zero. | 105 | * kcalloc - allocate memory for an array. The memory is set to zero. |
| @@ -107,7 +107,7 @@ extern void *kzalloc(size_t, unsigned int __nocast); | |||
| 107 | * @size: element size. | 107 | * @size: element size. |
| 108 | * @flags: the type of memory to allocate. | 108 | * @flags: the type of memory to allocate. |
| 109 | */ | 109 | */ |
| 110 | static inline void *kcalloc(size_t n, size_t size, unsigned int __nocast flags) | 110 | static inline void *kcalloc(size_t n, size_t size, gfp_t flags) |
| 111 | { | 111 | { |
| 112 | if (n != 0 && size > INT_MAX / n) | 112 | if (n != 0 && size > INT_MAX / n) |
| 113 | return NULL; | 113 | return NULL; |
| @@ -118,15 +118,14 @@ extern void kfree(const void *); | |||
| 118 | extern unsigned int ksize(const void *); | 118 | extern unsigned int ksize(const void *); |
| 119 | 119 | ||
| 120 | #ifdef CONFIG_NUMA | 120 | #ifdef CONFIG_NUMA |
| 121 | extern void *kmem_cache_alloc_node(kmem_cache_t *, | 121 | extern void *kmem_cache_alloc_node(kmem_cache_t *, gfp_t flags, int node); |
| 122 | unsigned int __nocast flags, int node); | 122 | extern void *kmalloc_node(size_t size, gfp_t flags, int node); |
| 123 | extern void *kmalloc_node(size_t size, unsigned int __nocast flags, int node); | ||
| 124 | #else | 123 | #else |
| 125 | static inline void *kmem_cache_alloc_node(kmem_cache_t *cachep, int flags, int node) | 124 | static inline void *kmem_cache_alloc_node(kmem_cache_t *cachep, int flags, int node) |
| 126 | { | 125 | { |
| 127 | return kmem_cache_alloc(cachep, flags); | 126 | return kmem_cache_alloc(cachep, flags); |
| 128 | } | 127 | } |
| 129 | static inline void *kmalloc_node(size_t size, unsigned int __nocast flags, int node) | 128 | static inline void *kmalloc_node(size_t size, gfp_t flags, int node) |
| 130 | { | 129 | { |
| 131 | return kmalloc(size, flags); | 130 | return kmalloc(size, flags); |
| 132 | } | 131 | } |
diff --git a/include/linux/string.h b/include/linux/string.h index dab2652acbd8..369be3264a55 100644 --- a/include/linux/string.h +++ b/include/linux/string.h | |||
| @@ -88,7 +88,7 @@ extern int memcmp(const void *,const void *,__kernel_size_t); | |||
| 88 | extern void * memchr(const void *,int,__kernel_size_t); | 88 | extern void * memchr(const void *,int,__kernel_size_t); |
| 89 | #endif | 89 | #endif |
| 90 | 90 | ||
| 91 | extern char *kstrdup(const char *s, unsigned int __nocast gfp); | 91 | extern char *kstrdup(const char *s, gfp_t gfp); |
| 92 | 92 | ||
| 93 | #ifdef __cplusplus | 93 | #ifdef __cplusplus |
| 94 | } | 94 | } |
diff --git a/include/linux/suspend.h b/include/linux/suspend.h index f2e96fdfaae0..ad15a54806d8 100644 --- a/include/linux/suspend.h +++ b/include/linux/suspend.h | |||
| @@ -71,5 +71,7 @@ void restore_processor_state(void); | |||
| 71 | struct saved_context; | 71 | struct saved_context; |
| 72 | void __save_processor_state(struct saved_context *ctxt); | 72 | void __save_processor_state(struct saved_context *ctxt); |
| 73 | void __restore_processor_state(struct saved_context *ctxt); | 73 | void __restore_processor_state(struct saved_context *ctxt); |
| 74 | extern unsigned long get_usable_page(unsigned gfp_mask); | ||
| 75 | extern void free_eaten_memory(void); | ||
| 74 | 76 | ||
| 75 | #endif /* _LINUX_SWSUSP_H */ | 77 | #endif /* _LINUX_SWSUSP_H */ |
diff --git a/include/linux/swap.h b/include/linux/swap.h index 3c9ff0048153..a7bf1a3b1496 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
| @@ -147,7 +147,7 @@ struct swap_list_t { | |||
| 147 | #define vm_swap_full() (nr_swap_pages*2 < total_swap_pages) | 147 | #define vm_swap_full() (nr_swap_pages*2 < total_swap_pages) |
| 148 | 148 | ||
| 149 | /* linux/mm/oom_kill.c */ | 149 | /* linux/mm/oom_kill.c */ |
| 150 | extern void out_of_memory(unsigned int __nocast gfp_mask, int order); | 150 | extern void out_of_memory(gfp_t gfp_mask, int order); |
| 151 | 151 | ||
| 152 | /* linux/mm/memory.c */ | 152 | /* linux/mm/memory.c */ |
| 153 | extern void swapin_readahead(swp_entry_t, unsigned long, struct vm_area_struct *); | 153 | extern void swapin_readahead(swp_entry_t, unsigned long, struct vm_area_struct *); |
diff --git a/include/linux/textsearch.h b/include/linux/textsearch.h index 941f45ac117a..515046d1b2f4 100644 --- a/include/linux/textsearch.h +++ b/include/linux/textsearch.h | |||
| @@ -158,7 +158,8 @@ extern unsigned int textsearch_find_continuous(struct ts_config *, | |||
| 158 | #define TS_PRIV_ALIGNTO 8 | 158 | #define TS_PRIV_ALIGNTO 8 |
| 159 | #define TS_PRIV_ALIGN(len) (((len) + TS_PRIV_ALIGNTO-1) & ~(TS_PRIV_ALIGNTO-1)) | 159 | #define TS_PRIV_ALIGN(len) (((len) + TS_PRIV_ALIGNTO-1) & ~(TS_PRIV_ALIGNTO-1)) |
| 160 | 160 | ||
| 161 | static inline struct ts_config *alloc_ts_config(size_t payload, int gfp_mask) | 161 | static inline struct ts_config *alloc_ts_config(size_t payload, |
| 162 | gfp_t gfp_mask) | ||
| 162 | { | 163 | { |
| 163 | struct ts_config *conf; | 164 | struct ts_config *conf; |
| 164 | 165 | ||
diff --git a/include/linux/types.h b/include/linux/types.h index 2b678c22ca4a..0aee34f9da9f 100644 --- a/include/linux/types.h +++ b/include/linux/types.h | |||
| @@ -165,6 +165,10 @@ typedef __u64 __bitwise __le64; | |||
| 165 | typedef __u64 __bitwise __be64; | 165 | typedef __u64 __bitwise __be64; |
| 166 | #endif | 166 | #endif |
| 167 | 167 | ||
| 168 | #ifdef __KERNEL__ | ||
| 169 | typedef unsigned __nocast gfp_t; | ||
| 170 | #endif | ||
| 171 | |||
| 168 | struct ustat { | 172 | struct ustat { |
| 169 | __kernel_daddr_t f_tfree; | 173 | __kernel_daddr_t f_tfree; |
| 170 | __kernel_ino_t f_tinode; | 174 | __kernel_ino_t f_tinode; |
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index b244f69ef682..3701a0673d2c 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
| @@ -34,8 +34,8 @@ struct vm_struct { | |||
| 34 | extern void *vmalloc(unsigned long size); | 34 | extern void *vmalloc(unsigned long size); |
| 35 | extern void *vmalloc_exec(unsigned long size); | 35 | extern void *vmalloc_exec(unsigned long size); |
| 36 | extern void *vmalloc_32(unsigned long size); | 36 | extern void *vmalloc_32(unsigned long size); |
| 37 | extern void *__vmalloc(unsigned long size, unsigned int __nocast gfp_mask, pgprot_t prot); | 37 | extern void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot); |
| 38 | extern void *__vmalloc_area(struct vm_struct *area, unsigned int __nocast gfp_mask, pgprot_t prot); | 38 | extern void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask, pgprot_t prot); |
| 39 | extern void vfree(void *addr); | 39 | extern void vfree(void *addr); |
| 40 | 40 | ||
| 41 | extern void *vmap(struct page **pages, unsigned int count, | 41 | extern void *vmap(struct page **pages, unsigned int count, |
diff --git a/include/net/ax25.h b/include/net/ax25.h index 9dbcd9e51c00..30bb4a893237 100644 --- a/include/net/ax25.h +++ b/include/net/ax25.h | |||
| @@ -171,7 +171,7 @@ typedef struct { | |||
| 171 | ax25_address calls[AX25_MAX_DIGIS]; | 171 | ax25_address calls[AX25_MAX_DIGIS]; |
| 172 | unsigned char repeated[AX25_MAX_DIGIS]; | 172 | unsigned char repeated[AX25_MAX_DIGIS]; |
| 173 | unsigned char ndigi; | 173 | unsigned char ndigi; |
| 174 | char lastrepeat; | 174 | signed char lastrepeat; |
| 175 | } ax25_digi; | 175 | } ax25_digi; |
| 176 | 176 | ||
| 177 | typedef struct ax25_route { | 177 | typedef struct ax25_route { |
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 6dfa4a61ffd0..210458624840 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
| @@ -136,7 +136,7 @@ struct bt_skb_cb { | |||
| 136 | }; | 136 | }; |
| 137 | #define bt_cb(skb) ((struct bt_skb_cb *)(skb->cb)) | 137 | #define bt_cb(skb) ((struct bt_skb_cb *)(skb->cb)) |
| 138 | 138 | ||
| 139 | static inline struct sk_buff *bt_skb_alloc(unsigned int len, unsigned int __nocast how) | 139 | static inline struct sk_buff *bt_skb_alloc(unsigned int len, gfp_t how) |
| 140 | { | 140 | { |
| 141 | struct sk_buff *skb; | 141 | struct sk_buff *skb; |
| 142 | 142 | ||
diff --git a/include/net/bluetooth/rfcomm.h b/include/net/bluetooth/rfcomm.h index ffea9d54071f..fbe557f7ea1d 100644 --- a/include/net/bluetooth/rfcomm.h +++ b/include/net/bluetooth/rfcomm.h | |||
| @@ -230,7 +230,7 @@ int rfcomm_send_rpn(struct rfcomm_session *s, int cr, u8 dlci, | |||
| 230 | u8 xon_char, u8 xoff_char, u16 param_mask); | 230 | u8 xon_char, u8 xoff_char, u16 param_mask); |
| 231 | 231 | ||
| 232 | /* ---- RFCOMM DLCs (channels) ---- */ | 232 | /* ---- RFCOMM DLCs (channels) ---- */ |
| 233 | struct rfcomm_dlc *rfcomm_dlc_alloc(unsigned int __nocast prio); | 233 | struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio); |
| 234 | void rfcomm_dlc_free(struct rfcomm_dlc *d); | 234 | void rfcomm_dlc_free(struct rfcomm_dlc *d); |
| 235 | int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel); | 235 | int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel); |
| 236 | int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason); | 236 | int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason); |
diff --git a/include/net/dn_nsp.h b/include/net/dn_nsp.h index 6bbeafa73e8b..1ba03be0af3a 100644 --- a/include/net/dn_nsp.h +++ b/include/net/dn_nsp.h | |||
| @@ -19,9 +19,9 @@ extern void dn_nsp_send_data_ack(struct sock *sk); | |||
| 19 | extern void dn_nsp_send_oth_ack(struct sock *sk); | 19 | extern void dn_nsp_send_oth_ack(struct sock *sk); |
| 20 | extern void dn_nsp_delayed_ack(struct sock *sk); | 20 | extern void dn_nsp_delayed_ack(struct sock *sk); |
| 21 | extern void dn_send_conn_ack(struct sock *sk); | 21 | extern void dn_send_conn_ack(struct sock *sk); |
| 22 | extern void dn_send_conn_conf(struct sock *sk, int gfp); | 22 | extern void dn_send_conn_conf(struct sock *sk, gfp_t gfp); |
| 23 | extern void dn_nsp_send_disc(struct sock *sk, unsigned char type, | 23 | extern void dn_nsp_send_disc(struct sock *sk, unsigned char type, |
| 24 | unsigned short reason, int gfp); | 24 | unsigned short reason, gfp_t gfp); |
| 25 | extern void dn_nsp_return_disc(struct sk_buff *skb, unsigned char type, | 25 | extern void dn_nsp_return_disc(struct sk_buff *skb, unsigned char type, |
| 26 | unsigned short reason); | 26 | unsigned short reason); |
| 27 | extern void dn_nsp_send_link(struct sock *sk, unsigned char lsflags, char fcval); | 27 | extern void dn_nsp_send_link(struct sock *sk, unsigned char lsflags, char fcval); |
| @@ -29,14 +29,14 @@ extern void dn_nsp_send_conninit(struct sock *sk, unsigned char flags); | |||
| 29 | 29 | ||
| 30 | extern void dn_nsp_output(struct sock *sk); | 30 | extern void dn_nsp_output(struct sock *sk); |
| 31 | extern int dn_nsp_check_xmit_queue(struct sock *sk, struct sk_buff *skb, struct sk_buff_head *q, unsigned short acknum); | 31 | extern int dn_nsp_check_xmit_queue(struct sock *sk, struct sk_buff *skb, struct sk_buff_head *q, unsigned short acknum); |
| 32 | extern void dn_nsp_queue_xmit(struct sock *sk, struct sk_buff *skb, int gfp, int oob); | 32 | extern void dn_nsp_queue_xmit(struct sock *sk, struct sk_buff *skb, gfp_t gfp, int oob); |
| 33 | extern unsigned long dn_nsp_persist(struct sock *sk); | 33 | extern unsigned long dn_nsp_persist(struct sock *sk); |
| 34 | extern int dn_nsp_xmit_timeout(struct sock *sk); | 34 | extern int dn_nsp_xmit_timeout(struct sock *sk); |
| 35 | 35 | ||
| 36 | extern int dn_nsp_rx(struct sk_buff *); | 36 | extern int dn_nsp_rx(struct sk_buff *); |
| 37 | extern int dn_nsp_backlog_rcv(struct sock *sk, struct sk_buff *skb); | 37 | extern int dn_nsp_backlog_rcv(struct sock *sk, struct sk_buff *skb); |
| 38 | 38 | ||
| 39 | extern struct sk_buff *dn_alloc_skb(struct sock *sk, int size, int pri); | 39 | extern struct sk_buff *dn_alloc_skb(struct sock *sk, int size, gfp_t pri); |
| 40 | extern struct sk_buff *dn_alloc_send_skb(struct sock *sk, size_t *size, int noblock, long timeo, int *err); | 40 | extern struct sk_buff *dn_alloc_send_skb(struct sock *sk, size_t *size, int noblock, long timeo, int *err); |
| 41 | 41 | ||
| 42 | #define NSP_REASON_OK 0 /* No error */ | 42 | #define NSP_REASON_OK 0 /* No error */ |
diff --git a/include/net/dn_route.h b/include/net/dn_route.h index d084721db198..5122da3f2eb3 100644 --- a/include/net/dn_route.h +++ b/include/net/dn_route.h | |||
| @@ -15,7 +15,7 @@ | |||
| 15 | GNU General Public License for more details. | 15 | GNU General Public License for more details. |
| 16 | *******************************************************************************/ | 16 | *******************************************************************************/ |
| 17 | 17 | ||
| 18 | extern struct sk_buff *dn_alloc_skb(struct sock *sk, int size, int pri); | 18 | extern struct sk_buff *dn_alloc_skb(struct sock *sk, int size, gfp_t pri); |
| 19 | extern int dn_route_output_sock(struct dst_entry **pprt, struct flowi *, struct sock *sk, int flags); | 19 | extern int dn_route_output_sock(struct dst_entry **pprt, struct flowi *, struct sock *sk, int flags); |
| 20 | extern int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb); | 20 | extern int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb); |
| 21 | extern int dn_cache_getroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg); | 21 | extern int dn_cache_getroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg); |
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index 651f824c1008..b0c99060b78d 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h | |||
| @@ -94,7 +94,7 @@ static inline void *inet_csk_ca(const struct sock *sk) | |||
| 94 | 94 | ||
| 95 | extern struct sock *inet_csk_clone(struct sock *sk, | 95 | extern struct sock *inet_csk_clone(struct sock *sk, |
| 96 | const struct request_sock *req, | 96 | const struct request_sock *req, |
| 97 | const unsigned int __nocast priority); | 97 | const gfp_t priority); |
| 98 | 98 | ||
| 99 | enum inet_csk_ack_state_t { | 99 | enum inet_csk_ack_state_t { |
| 100 | ICSK_ACK_SCHED = 1, | 100 | ICSK_ACK_SCHED = 1, |
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h index 35f49e65e295..f50f95968340 100644 --- a/include/net/inet_hashtables.h +++ b/include/net/inet_hashtables.h | |||
| @@ -40,7 +40,7 @@ | |||
| 40 | struct inet_ehash_bucket { | 40 | struct inet_ehash_bucket { |
| 41 | rwlock_t lock; | 41 | rwlock_t lock; |
| 42 | struct hlist_head chain; | 42 | struct hlist_head chain; |
| 43 | } __attribute__((__aligned__(8))); | 43 | }; |
| 44 | 44 | ||
| 45 | /* There are a few simple rules, which allow for local port reuse by | 45 | /* There are a few simple rules, which allow for local port reuse by |
| 46 | * an application. In essence: | 46 | * an application. In essence: |
diff --git a/include/net/inet_timewait_sock.h b/include/net/inet_timewait_sock.h index 4ade56ef3a4d..28f7b2103505 100644 --- a/include/net/inet_timewait_sock.h +++ b/include/net/inet_timewait_sock.h | |||
| @@ -19,6 +19,7 @@ | |||
| 19 | 19 | ||
| 20 | #include <linux/ip.h> | 20 | #include <linux/ip.h> |
| 21 | #include <linux/list.h> | 21 | #include <linux/list.h> |
| 22 | #include <linux/module.h> | ||
| 22 | #include <linux/timer.h> | 23 | #include <linux/timer.h> |
| 23 | #include <linux/types.h> | 24 | #include <linux/types.h> |
| 24 | #include <linux/workqueue.h> | 25 | #include <linux/workqueue.h> |
| @@ -193,11 +194,13 @@ static inline u32 inet_rcv_saddr(const struct sock *sk) | |||
| 193 | static inline void inet_twsk_put(struct inet_timewait_sock *tw) | 194 | static inline void inet_twsk_put(struct inet_timewait_sock *tw) |
| 194 | { | 195 | { |
| 195 | if (atomic_dec_and_test(&tw->tw_refcnt)) { | 196 | if (atomic_dec_and_test(&tw->tw_refcnt)) { |
| 197 | struct module *owner = tw->tw_prot->owner; | ||
| 196 | #ifdef SOCK_REFCNT_DEBUG | 198 | #ifdef SOCK_REFCNT_DEBUG |
| 197 | printk(KERN_DEBUG "%s timewait_sock %p released\n", | 199 | printk(KERN_DEBUG "%s timewait_sock %p released\n", |
| 198 | tw->tw_prot->name, tw); | 200 | tw->tw_prot->name, tw); |
| 199 | #endif | 201 | #endif |
| 200 | kmem_cache_free(tw->tw_prot->twsk_slab, tw); | 202 | kmem_cache_free(tw->tw_prot->twsk_slab, tw); |
| 203 | module_put(owner); | ||
| 201 | } | 204 | } |
| 202 | } | 205 | } |
| 203 | 206 | ||
diff --git a/include/net/ip_vs.h b/include/net/ip_vs.h index 06b4235aa016..3b5559a023a4 100644 --- a/include/net/ip_vs.h +++ b/include/net/ip_vs.h | |||
| @@ -832,7 +832,7 @@ extern void ip_vs_app_inc_put(struct ip_vs_app *inc); | |||
| 832 | 832 | ||
| 833 | extern int ip_vs_app_pkt_out(struct ip_vs_conn *, struct sk_buff **pskb); | 833 | extern int ip_vs_app_pkt_out(struct ip_vs_conn *, struct sk_buff **pskb); |
| 834 | extern int ip_vs_app_pkt_in(struct ip_vs_conn *, struct sk_buff **pskb); | 834 | extern int ip_vs_app_pkt_in(struct ip_vs_conn *, struct sk_buff **pskb); |
| 835 | extern int ip_vs_skb_replace(struct sk_buff *skb, int pri, | 835 | extern int ip_vs_skb_replace(struct sk_buff *skb, gfp_t pri, |
| 836 | char *o_buf, int o_len, char *n_buf, int n_len); | 836 | char *o_buf, int o_len, char *n_buf, int n_len); |
| 837 | extern int ip_vs_app_init(void); | 837 | extern int ip_vs_app_init(void); |
| 838 | extern void ip_vs_app_cleanup(void); | 838 | extern void ip_vs_app_cleanup(void); |
diff --git a/include/net/llc_conn.h b/include/net/llc_conn.h index 54852ff6033b..00730d21b522 100644 --- a/include/net/llc_conn.h +++ b/include/net/llc_conn.h | |||
| @@ -93,7 +93,7 @@ static __inline__ char llc_backlog_type(struct sk_buff *skb) | |||
| 93 | return skb->cb[sizeof(skb->cb) - 1]; | 93 | return skb->cb[sizeof(skb->cb) - 1]; |
| 94 | } | 94 | } |
| 95 | 95 | ||
| 96 | extern struct sock *llc_sk_alloc(int family, unsigned int __nocast priority, | 96 | extern struct sock *llc_sk_alloc(int family, gfp_t priority, |
| 97 | struct proto *prot); | 97 | struct proto *prot); |
| 98 | extern void llc_sk_free(struct sock *sk); | 98 | extern void llc_sk_free(struct sock *sk); |
| 99 | 99 | ||
diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h index f45c37d89cf7..c7a959428b4f 100644 --- a/include/net/llc_pdu.h +++ b/include/net/llc_pdu.h | |||
| @@ -254,8 +254,10 @@ static inline void llc_pdu_decode_sa(struct sk_buff *skb, u8 *sa) | |||
| 254 | { | 254 | { |
| 255 | if (skb->protocol == ntohs(ETH_P_802_2)) | 255 | if (skb->protocol == ntohs(ETH_P_802_2)) |
| 256 | memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN); | 256 | memcpy(sa, eth_hdr(skb)->h_source, ETH_ALEN); |
| 257 | else if (skb->protocol == ntohs(ETH_P_TR_802_2)) | 257 | else if (skb->protocol == ntohs(ETH_P_TR_802_2)) { |
| 258 | memcpy(sa, tr_hdr(skb)->saddr, ETH_ALEN); | 258 | memcpy(sa, tr_hdr(skb)->saddr, ETH_ALEN); |
| 259 | *sa &= 0x7F; | ||
| 260 | } | ||
| 259 | } | 261 | } |
| 260 | 262 | ||
| 261 | /** | 263 | /** |
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index e1d5ec1c23c0..8f241216f46b 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h | |||
| @@ -125,7 +125,7 @@ | |||
| 125 | */ | 125 | */ |
| 126 | extern struct sock *sctp_get_ctl_sock(void); | 126 | extern struct sock *sctp_get_ctl_sock(void); |
| 127 | extern int sctp_copy_local_addr_list(struct sctp_bind_addr *, | 127 | extern int sctp_copy_local_addr_list(struct sctp_bind_addr *, |
| 128 | sctp_scope_t, unsigned int __nocast gfp, | 128 | sctp_scope_t, gfp_t gfp, |
| 129 | int flags); | 129 | int flags); |
| 130 | extern struct sctp_pf *sctp_get_pf_specific(sa_family_t family); | 130 | extern struct sctp_pf *sctp_get_pf_specific(sa_family_t family); |
| 131 | extern int sctp_register_pf(struct sctp_pf *, sa_family_t); | 131 | extern int sctp_register_pf(struct sctp_pf *, sa_family_t); |
diff --git a/include/net/sctp/sm.h b/include/net/sctp/sm.h index 58462164d960..1eac3d0eb7a9 100644 --- a/include/net/sctp/sm.h +++ b/include/net/sctp/sm.h | |||
| @@ -181,17 +181,17 @@ const sctp_sm_table_entry_t *sctp_sm_lookup_event(sctp_event_t, | |||
| 181 | int sctp_chunk_iif(const struct sctp_chunk *); | 181 | int sctp_chunk_iif(const struct sctp_chunk *); |
| 182 | struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *, | 182 | struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *, |
| 183 | struct sctp_chunk *, | 183 | struct sctp_chunk *, |
| 184 | unsigned int __nocast gfp); | 184 | gfp_t gfp); |
| 185 | __u32 sctp_generate_verification_tag(void); | 185 | __u32 sctp_generate_verification_tag(void); |
| 186 | void sctp_populate_tie_tags(__u8 *cookie, __u32 curTag, __u32 hisTag); | 186 | void sctp_populate_tie_tags(__u8 *cookie, __u32 curTag, __u32 hisTag); |
| 187 | 187 | ||
| 188 | /* Prototypes for chunk-building functions. */ | 188 | /* Prototypes for chunk-building functions. */ |
| 189 | struct sctp_chunk *sctp_make_init(const struct sctp_association *, | 189 | struct sctp_chunk *sctp_make_init(const struct sctp_association *, |
| 190 | const struct sctp_bind_addr *, | 190 | const struct sctp_bind_addr *, |
| 191 | unsigned int __nocast gfp, int vparam_len); | 191 | gfp_t gfp, int vparam_len); |
| 192 | struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *, | 192 | struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *, |
| 193 | const struct sctp_chunk *, | 193 | const struct sctp_chunk *, |
| 194 | const unsigned int __nocast gfp, | 194 | const gfp_t gfp, |
| 195 | const int unkparam_len); | 195 | const int unkparam_len); |
| 196 | struct sctp_chunk *sctp_make_cookie_echo(const struct sctp_association *, | 196 | struct sctp_chunk *sctp_make_cookie_echo(const struct sctp_association *, |
| 197 | const struct sctp_chunk *); | 197 | const struct sctp_chunk *); |
| @@ -265,7 +265,7 @@ int sctp_do_sm(sctp_event_t event_type, sctp_subtype_t subtype, | |||
| 265 | struct sctp_endpoint *, | 265 | struct sctp_endpoint *, |
| 266 | struct sctp_association *asoc, | 266 | struct sctp_association *asoc, |
| 267 | void *event_arg, | 267 | void *event_arg, |
| 268 | unsigned int __nocast gfp); | 268 | gfp_t gfp); |
| 269 | 269 | ||
| 270 | /* 2nd level prototypes */ | 270 | /* 2nd level prototypes */ |
| 271 | void sctp_generate_t3_rtx_event(unsigned long peer); | 271 | void sctp_generate_t3_rtx_event(unsigned long peer); |
| @@ -276,7 +276,7 @@ void sctp_ootb_pkt_free(struct sctp_packet *); | |||
| 276 | struct sctp_association *sctp_unpack_cookie(const struct sctp_endpoint *, | 276 | struct sctp_association *sctp_unpack_cookie(const struct sctp_endpoint *, |
| 277 | const struct sctp_association *, | 277 | const struct sctp_association *, |
| 278 | struct sctp_chunk *, | 278 | struct sctp_chunk *, |
| 279 | unsigned int __nocast gfp, int *err, | 279 | gfp_t gfp, int *err, |
| 280 | struct sctp_chunk **err_chk_p); | 280 | struct sctp_chunk **err_chk_p); |
| 281 | int sctp_addip_addr_config(struct sctp_association *, sctp_param_t, | 281 | int sctp_addip_addr_config(struct sctp_association *, sctp_param_t, |
| 282 | struct sockaddr_storage*, int); | 282 | struct sockaddr_storage*, int); |
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 994009bbe3b4..9c385b6417c7 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
| @@ -446,7 +446,7 @@ struct sctp_ssnmap { | |||
| 446 | }; | 446 | }; |
| 447 | 447 | ||
| 448 | struct sctp_ssnmap *sctp_ssnmap_new(__u16 in, __u16 out, | 448 | struct sctp_ssnmap *sctp_ssnmap_new(__u16 in, __u16 out, |
| 449 | unsigned int __nocast gfp); | 449 | gfp_t gfp); |
| 450 | void sctp_ssnmap_free(struct sctp_ssnmap *map); | 450 | void sctp_ssnmap_free(struct sctp_ssnmap *map); |
| 451 | void sctp_ssnmap_clear(struct sctp_ssnmap *map); | 451 | void sctp_ssnmap_clear(struct sctp_ssnmap *map); |
| 452 | 452 | ||
| @@ -947,7 +947,7 @@ struct sctp_transport { | |||
| 947 | }; | 947 | }; |
| 948 | 948 | ||
| 949 | struct sctp_transport *sctp_transport_new(const union sctp_addr *, | 949 | struct sctp_transport *sctp_transport_new(const union sctp_addr *, |
| 950 | unsigned int __nocast); | 950 | gfp_t); |
| 951 | void sctp_transport_set_owner(struct sctp_transport *, | 951 | void sctp_transport_set_owner(struct sctp_transport *, |
| 952 | struct sctp_association *); | 952 | struct sctp_association *); |
| 953 | void sctp_transport_route(struct sctp_transport *, union sctp_addr *, | 953 | void sctp_transport_route(struct sctp_transport *, union sctp_addr *, |
| @@ -1095,10 +1095,10 @@ void sctp_bind_addr_init(struct sctp_bind_addr *, __u16 port); | |||
| 1095 | void sctp_bind_addr_free(struct sctp_bind_addr *); | 1095 | void sctp_bind_addr_free(struct sctp_bind_addr *); |
| 1096 | int sctp_bind_addr_copy(struct sctp_bind_addr *dest, | 1096 | int sctp_bind_addr_copy(struct sctp_bind_addr *dest, |
| 1097 | const struct sctp_bind_addr *src, | 1097 | const struct sctp_bind_addr *src, |
| 1098 | sctp_scope_t scope, unsigned int __nocast gfp, | 1098 | sctp_scope_t scope, gfp_t gfp, |
| 1099 | int flags); | 1099 | int flags); |
| 1100 | int sctp_add_bind_addr(struct sctp_bind_addr *, union sctp_addr *, | 1100 | int sctp_add_bind_addr(struct sctp_bind_addr *, union sctp_addr *, |
| 1101 | unsigned int __nocast gfp); | 1101 | gfp_t gfp); |
| 1102 | int sctp_del_bind_addr(struct sctp_bind_addr *, union sctp_addr *); | 1102 | int sctp_del_bind_addr(struct sctp_bind_addr *, union sctp_addr *); |
| 1103 | int sctp_bind_addr_match(struct sctp_bind_addr *, const union sctp_addr *, | 1103 | int sctp_bind_addr_match(struct sctp_bind_addr *, const union sctp_addr *, |
| 1104 | struct sctp_sock *); | 1104 | struct sctp_sock *); |
| @@ -1108,9 +1108,9 @@ union sctp_addr *sctp_find_unmatch_addr(struct sctp_bind_addr *bp, | |||
| 1108 | struct sctp_sock *opt); | 1108 | struct sctp_sock *opt); |
| 1109 | union sctp_params sctp_bind_addrs_to_raw(const struct sctp_bind_addr *bp, | 1109 | union sctp_params sctp_bind_addrs_to_raw(const struct sctp_bind_addr *bp, |
| 1110 | int *addrs_len, | 1110 | int *addrs_len, |
| 1111 | unsigned int __nocast gfp); | 1111 | gfp_t gfp); |
| 1112 | int sctp_raw_to_bind_addrs(struct sctp_bind_addr *bp, __u8 *raw, int len, | 1112 | int sctp_raw_to_bind_addrs(struct sctp_bind_addr *bp, __u8 *raw, int len, |
| 1113 | __u16 port, unsigned int __nocast gfp); | 1113 | __u16 port, gfp_t gfp); |
| 1114 | 1114 | ||
| 1115 | sctp_scope_t sctp_scope(const union sctp_addr *); | 1115 | sctp_scope_t sctp_scope(const union sctp_addr *); |
| 1116 | int sctp_in_scope(const union sctp_addr *addr, const sctp_scope_t scope); | 1116 | int sctp_in_scope(const union sctp_addr *addr, const sctp_scope_t scope); |
| @@ -1239,7 +1239,7 @@ static inline struct sctp_endpoint *sctp_ep(struct sctp_ep_common *base) | |||
| 1239 | } | 1239 | } |
| 1240 | 1240 | ||
| 1241 | /* These are function signatures for manipulating endpoints. */ | 1241 | /* These are function signatures for manipulating endpoints. */ |
| 1242 | struct sctp_endpoint *sctp_endpoint_new(struct sock *, unsigned int __nocast); | 1242 | struct sctp_endpoint *sctp_endpoint_new(struct sock *, gfp_t); |
| 1243 | void sctp_endpoint_free(struct sctp_endpoint *); | 1243 | void sctp_endpoint_free(struct sctp_endpoint *); |
| 1244 | void sctp_endpoint_put(struct sctp_endpoint *); | 1244 | void sctp_endpoint_put(struct sctp_endpoint *); |
| 1245 | void sctp_endpoint_hold(struct sctp_endpoint *); | 1245 | void sctp_endpoint_hold(struct sctp_endpoint *); |
| @@ -1260,7 +1260,7 @@ int sctp_verify_init(const struct sctp_association *asoc, sctp_cid_t, | |||
| 1260 | struct sctp_chunk **err_chunk); | 1260 | struct sctp_chunk **err_chunk); |
| 1261 | int sctp_process_init(struct sctp_association *, sctp_cid_t cid, | 1261 | int sctp_process_init(struct sctp_association *, sctp_cid_t cid, |
| 1262 | const union sctp_addr *peer, | 1262 | const union sctp_addr *peer, |
| 1263 | sctp_init_chunk_t *init, unsigned int __nocast gfp); | 1263 | sctp_init_chunk_t *init, gfp_t gfp); |
| 1264 | __u32 sctp_generate_tag(const struct sctp_endpoint *); | 1264 | __u32 sctp_generate_tag(const struct sctp_endpoint *); |
| 1265 | __u32 sctp_generate_tsn(const struct sctp_endpoint *); | 1265 | __u32 sctp_generate_tsn(const struct sctp_endpoint *); |
| 1266 | 1266 | ||
| @@ -1723,7 +1723,7 @@ static inline struct sctp_association *sctp_assoc(struct sctp_ep_common *base) | |||
| 1723 | 1723 | ||
| 1724 | struct sctp_association * | 1724 | struct sctp_association * |
| 1725 | sctp_association_new(const struct sctp_endpoint *, const struct sock *, | 1725 | sctp_association_new(const struct sctp_endpoint *, const struct sock *, |
| 1726 | sctp_scope_t scope, unsigned int __nocast gfp); | 1726 | sctp_scope_t scope, gfp_t gfp); |
| 1727 | void sctp_association_free(struct sctp_association *); | 1727 | void sctp_association_free(struct sctp_association *); |
| 1728 | void sctp_association_put(struct sctp_association *); | 1728 | void sctp_association_put(struct sctp_association *); |
| 1729 | void sctp_association_hold(struct sctp_association *); | 1729 | void sctp_association_hold(struct sctp_association *); |
| @@ -1739,7 +1739,7 @@ int sctp_assoc_lookup_laddr(struct sctp_association *asoc, | |||
| 1739 | const union sctp_addr *laddr); | 1739 | const union sctp_addr *laddr); |
| 1740 | struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *, | 1740 | struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *, |
| 1741 | const union sctp_addr *address, | 1741 | const union sctp_addr *address, |
| 1742 | const unsigned int __nocast gfp, | 1742 | const gfp_t gfp, |
| 1743 | const int peer_state); | 1743 | const int peer_state); |
| 1744 | void sctp_assoc_del_peer(struct sctp_association *asoc, | 1744 | void sctp_assoc_del_peer(struct sctp_association *asoc, |
| 1745 | const union sctp_addr *addr); | 1745 | const union sctp_addr *addr); |
| @@ -1764,10 +1764,10 @@ void sctp_assoc_rwnd_decrease(struct sctp_association *, unsigned); | |||
| 1764 | void sctp_assoc_set_primary(struct sctp_association *, | 1764 | void sctp_assoc_set_primary(struct sctp_association *, |
| 1765 | struct sctp_transport *); | 1765 | struct sctp_transport *); |
| 1766 | int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *, | 1766 | int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *, |
| 1767 | unsigned int __nocast); | 1767 | gfp_t); |
| 1768 | int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *, | 1768 | int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *, |
| 1769 | struct sctp_cookie*, | 1769 | struct sctp_cookie*, |
| 1770 | unsigned int __nocast gfp); | 1770 | gfp_t gfp); |
| 1771 | 1771 | ||
| 1772 | int sctp_cmp_addr_exact(const union sctp_addr *ss1, | 1772 | int sctp_cmp_addr_exact(const union sctp_addr *ss1, |
| 1773 | const union sctp_addr *ss2); | 1773 | const union sctp_addr *ss2); |
diff --git a/include/net/sctp/ulpevent.h b/include/net/sctp/ulpevent.h index 90fe4bf6754f..6c40cfc4832d 100644 --- a/include/net/sctp/ulpevent.h +++ b/include/net/sctp/ulpevent.h | |||
| @@ -88,7 +88,7 @@ struct sctp_ulpevent *sctp_ulpevent_make_assoc_change( | |||
| 88 | __u16 error, | 88 | __u16 error, |
| 89 | __u16 outbound, | 89 | __u16 outbound, |
| 90 | __u16 inbound, | 90 | __u16 inbound, |
| 91 | unsigned int __nocast gfp); | 91 | gfp_t gfp); |
| 92 | 92 | ||
| 93 | struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change( | 93 | struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change( |
| 94 | const struct sctp_association *asoc, | 94 | const struct sctp_association *asoc, |
| @@ -96,35 +96,35 @@ struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change( | |||
| 96 | int flags, | 96 | int flags, |
| 97 | int state, | 97 | int state, |
| 98 | int error, | 98 | int error, |
| 99 | unsigned int __nocast gfp); | 99 | gfp_t gfp); |
| 100 | 100 | ||
| 101 | struct sctp_ulpevent *sctp_ulpevent_make_remote_error( | 101 | struct sctp_ulpevent *sctp_ulpevent_make_remote_error( |
| 102 | const struct sctp_association *asoc, | 102 | const struct sctp_association *asoc, |
| 103 | struct sctp_chunk *chunk, | 103 | struct sctp_chunk *chunk, |
| 104 | __u16 flags, | 104 | __u16 flags, |
| 105 | unsigned int __nocast gfp); | 105 | gfp_t gfp); |
| 106 | struct sctp_ulpevent *sctp_ulpevent_make_send_failed( | 106 | struct sctp_ulpevent *sctp_ulpevent_make_send_failed( |
| 107 | const struct sctp_association *asoc, | 107 | const struct sctp_association *asoc, |
| 108 | struct sctp_chunk *chunk, | 108 | struct sctp_chunk *chunk, |
| 109 | __u16 flags, | 109 | __u16 flags, |
| 110 | __u32 error, | 110 | __u32 error, |
| 111 | unsigned int __nocast gfp); | 111 | gfp_t gfp); |
| 112 | 112 | ||
| 113 | struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event( | 113 | struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event( |
| 114 | const struct sctp_association *asoc, | 114 | const struct sctp_association *asoc, |
| 115 | __u16 flags, | 115 | __u16 flags, |
| 116 | unsigned int __nocast gfp); | 116 | gfp_t gfp); |
| 117 | 117 | ||
| 118 | struct sctp_ulpevent *sctp_ulpevent_make_pdapi( | 118 | struct sctp_ulpevent *sctp_ulpevent_make_pdapi( |
| 119 | const struct sctp_association *asoc, | 119 | const struct sctp_association *asoc, |
| 120 | __u32 indication, unsigned int __nocast gfp); | 120 | __u32 indication, gfp_t gfp); |
| 121 | 121 | ||
| 122 | struct sctp_ulpevent *sctp_ulpevent_make_adaption_indication( | 122 | struct sctp_ulpevent *sctp_ulpevent_make_adaption_indication( |
| 123 | const struct sctp_association *asoc, unsigned int __nocast gfp); | 123 | const struct sctp_association *asoc, gfp_t gfp); |
| 124 | 124 | ||
| 125 | struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, | 125 | struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, |
| 126 | struct sctp_chunk *chunk, | 126 | struct sctp_chunk *chunk, |
| 127 | unsigned int __nocast gfp); | 127 | gfp_t gfp); |
| 128 | 128 | ||
| 129 | void sctp_ulpevent_read_sndrcvinfo(const struct sctp_ulpevent *event, | 129 | void sctp_ulpevent_read_sndrcvinfo(const struct sctp_ulpevent *event, |
| 130 | struct msghdr *); | 130 | struct msghdr *); |
diff --git a/include/net/sctp/ulpqueue.h b/include/net/sctp/ulpqueue.h index 1a60c6d943c1..a43c8788b650 100644 --- a/include/net/sctp/ulpqueue.h +++ b/include/net/sctp/ulpqueue.h | |||
| @@ -62,22 +62,19 @@ struct sctp_ulpq *sctp_ulpq_init(struct sctp_ulpq *, | |||
| 62 | void sctp_ulpq_free(struct sctp_ulpq *); | 62 | void sctp_ulpq_free(struct sctp_ulpq *); |
| 63 | 63 | ||
| 64 | /* Add a new DATA chunk for processing. */ | 64 | /* Add a new DATA chunk for processing. */ |
| 65 | int sctp_ulpq_tail_data(struct sctp_ulpq *, struct sctp_chunk *, | 65 | int sctp_ulpq_tail_data(struct sctp_ulpq *, struct sctp_chunk *, gfp_t); |
| 66 | unsigned int __nocast); | ||
| 67 | 66 | ||
| 68 | /* Add a new event for propagation to the ULP. */ | 67 | /* Add a new event for propagation to the ULP. */ |
| 69 | int sctp_ulpq_tail_event(struct sctp_ulpq *, struct sctp_ulpevent *ev); | 68 | int sctp_ulpq_tail_event(struct sctp_ulpq *, struct sctp_ulpevent *ev); |
| 70 | 69 | ||
| 71 | /* Renege previously received chunks. */ | 70 | /* Renege previously received chunks. */ |
| 72 | void sctp_ulpq_renege(struct sctp_ulpq *, struct sctp_chunk *, | 71 | void sctp_ulpq_renege(struct sctp_ulpq *, struct sctp_chunk *, gfp_t); |
| 73 | unsigned int __nocast); | ||
| 74 | 72 | ||
| 75 | /* Perform partial delivery. */ | 73 | /* Perform partial delivery. */ |
| 76 | void sctp_ulpq_partial_delivery(struct sctp_ulpq *, struct sctp_chunk *, | 74 | void sctp_ulpq_partial_delivery(struct sctp_ulpq *, struct sctp_chunk *, gfp_t); |
| 77 | unsigned int __nocast); | ||
| 78 | 75 | ||
| 79 | /* Abort the partial delivery. */ | 76 | /* Abort the partial delivery. */ |
| 80 | void sctp_ulpq_abort_pd(struct sctp_ulpq *, unsigned int __nocast); | 77 | void sctp_ulpq_abort_pd(struct sctp_ulpq *, gfp_t); |
| 81 | 78 | ||
| 82 | /* Clear the partial data delivery condition on this socket. */ | 79 | /* Clear the partial data delivery condition on this socket. */ |
| 83 | int sctp_clear_pd(struct sock *sk); | 80 | int sctp_clear_pd(struct sock *sk); |
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h index f6328aeddcce..1c5f19f995ad 100644 --- a/include/net/sctp/user.h +++ b/include/net/sctp/user.h | |||
| @@ -103,16 +103,20 @@ enum sctp_optname { | |||
| 103 | #define SCTP_SOCKOPT_BINDX_REM SCTP_SOCKOPT_BINDX_REM | 103 | #define SCTP_SOCKOPT_BINDX_REM SCTP_SOCKOPT_BINDX_REM |
| 104 | SCTP_SOCKOPT_PEELOFF, /* peel off association. */ | 104 | SCTP_SOCKOPT_PEELOFF, /* peel off association. */ |
| 105 | #define SCTP_SOCKOPT_PEELOFF SCTP_SOCKOPT_PEELOFF | 105 | #define SCTP_SOCKOPT_PEELOFF SCTP_SOCKOPT_PEELOFF |
| 106 | SCTP_GET_PEER_ADDRS_NUM, /* Get number of peer addresss. */ | 106 | SCTP_GET_PEER_ADDRS_NUM_OLD, /* Get number of peer addresss. */ |
| 107 | #define SCTP_GET_PEER_ADDRS_NUM SCTP_GET_PEER_ADDRS_NUM | 107 | #define SCTP_GET_PEER_ADDRS_NUM_OLD SCTP_GET_PEER_ADDRS_NUM_OLD |
| 108 | SCTP_GET_PEER_ADDRS_OLD, /* Get all peer addresss. */ | ||
| 109 | #define SCTP_GET_PEER_ADDRS_OLD SCTP_GET_PEER_ADDRS_OLD | ||
| 110 | SCTP_GET_LOCAL_ADDRS_NUM_OLD, /* Get number of local addresss. */ | ||
| 111 | #define SCTP_GET_LOCAL_ADDRS_NUM_OLD SCTP_GET_LOCAL_ADDRS_NUM_OLD | ||
| 112 | SCTP_GET_LOCAL_ADDRS_OLD, /* Get all local addresss. */ | ||
| 113 | #define SCTP_GET_LOCAL_ADDRS_OLD SCTP_GET_LOCAL_ADDRS_OLD | ||
| 114 | SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ | ||
| 115 | #define SCTP_SOCKOPT_CONNECTX SCTP_SOCKOPT_CONNECTX | ||
| 108 | SCTP_GET_PEER_ADDRS, /* Get all peer addresss. */ | 116 | SCTP_GET_PEER_ADDRS, /* Get all peer addresss. */ |
| 109 | #define SCTP_GET_PEER_ADDRS SCTP_GET_PEER_ADDRS | 117 | #define SCTP_GET_PEER_ADDRS SCTP_GET_PEER_ADDRS |
| 110 | SCTP_GET_LOCAL_ADDRS_NUM, /* Get number of local addresss. */ | ||
| 111 | #define SCTP_GET_LOCAL_ADDRS_NUM SCTP_GET_LOCAL_ADDRS_NUM | ||
| 112 | SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ | 118 | SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ |
| 113 | #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS | 119 | #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS |
| 114 | SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ | ||
| 115 | #define SCTP_SOCKOPT_CONNECTX SCTP_SOCKOPT_CONNECTX | ||
| 116 | }; | 120 | }; |
| 117 | 121 | ||
| 118 | /* | 122 | /* |
| @@ -239,7 +243,7 @@ struct sctp_paddr_change { | |||
| 239 | int spc_state; | 243 | int spc_state; |
| 240 | int spc_error; | 244 | int spc_error; |
| 241 | sctp_assoc_t spc_assoc_id; | 245 | sctp_assoc_t spc_assoc_id; |
| 242 | }; | 246 | } __attribute__((packed, aligned(4))); |
| 243 | 247 | ||
| 244 | /* | 248 | /* |
| 245 | * spc_state: 32 bits (signed integer) | 249 | * spc_state: 32 bits (signed integer) |
| @@ -464,7 +468,7 @@ struct sctp_assocparams { | |||
| 464 | struct sctp_setpeerprim { | 468 | struct sctp_setpeerprim { |
| 465 | sctp_assoc_t sspp_assoc_id; | 469 | sctp_assoc_t sspp_assoc_id; |
| 466 | struct sockaddr_storage sspp_addr; | 470 | struct sockaddr_storage sspp_addr; |
| 467 | }; | 471 | } __attribute__((packed, aligned(4))); |
| 468 | 472 | ||
| 469 | /* | 473 | /* |
| 470 | * 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR) | 474 | * 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR) |
| @@ -477,7 +481,7 @@ struct sctp_setpeerprim { | |||
| 477 | struct sctp_prim { | 481 | struct sctp_prim { |
| 478 | sctp_assoc_t ssp_assoc_id; | 482 | sctp_assoc_t ssp_assoc_id; |
| 479 | struct sockaddr_storage ssp_addr; | 483 | struct sockaddr_storage ssp_addr; |
| 480 | }; | 484 | } __attribute__((packed, aligned(4))); |
| 481 | 485 | ||
| 482 | /* | 486 | /* |
| 483 | * 7.1.11 Set Adaption Layer Indicator (SCTP_ADAPTION_LAYER) | 487 | * 7.1.11 Set Adaption Layer Indicator (SCTP_ADAPTION_LAYER) |
| @@ -504,7 +508,7 @@ struct sctp_paddrparams { | |||
| 504 | struct sockaddr_storage spp_address; | 508 | struct sockaddr_storage spp_address; |
| 505 | __u32 spp_hbinterval; | 509 | __u32 spp_hbinterval; |
| 506 | __u16 spp_pathmaxrxt; | 510 | __u16 spp_pathmaxrxt; |
| 507 | }; | 511 | } __attribute__((packed, aligned(4))); |
| 508 | 512 | ||
| 509 | /* | 513 | /* |
| 510 | * 7.2.2 Peer Address Information | 514 | * 7.2.2 Peer Address Information |
| @@ -523,7 +527,7 @@ struct sctp_paddrinfo { | |||
| 523 | __u32 spinfo_srtt; | 527 | __u32 spinfo_srtt; |
| 524 | __u32 spinfo_rto; | 528 | __u32 spinfo_rto; |
| 525 | __u32 spinfo_mtu; | 529 | __u32 spinfo_mtu; |
| 526 | }; | 530 | } __attribute__((packed, aligned(4))); |
| 527 | 531 | ||
| 528 | /* Peer addresses's state. */ | 532 | /* Peer addresses's state. */ |
| 529 | enum sctp_spinfo_state { | 533 | enum sctp_spinfo_state { |
| @@ -559,11 +563,16 @@ struct sctp_status { | |||
| 559 | * SCTP_GET_LOCAL_ADDRS socket options used internally to implement | 563 | * SCTP_GET_LOCAL_ADDRS socket options used internally to implement |
| 560 | * sctp_getpaddrs() and sctp_getladdrs() API. | 564 | * sctp_getpaddrs() and sctp_getladdrs() API. |
| 561 | */ | 565 | */ |
| 562 | struct sctp_getaddrs { | 566 | struct sctp_getaddrs_old { |
| 563 | sctp_assoc_t assoc_id; | 567 | sctp_assoc_t assoc_id; |
| 564 | int addr_num; | 568 | int addr_num; |
| 565 | struct sockaddr __user *addrs; | 569 | struct sockaddr __user *addrs; |
| 566 | }; | 570 | }; |
| 571 | struct sctp_getaddrs { | ||
| 572 | sctp_assoc_t assoc_id; /*input*/ | ||
| 573 | __u32 addr_num; /*output*/ | ||
| 574 | __u8 addrs[0]; /*output, variable size*/ | ||
| 575 | }; | ||
| 567 | 576 | ||
| 568 | /* These are bit fields for msghdr->msg_flags. See section 5.1. */ | 577 | /* These are bit fields for msghdr->msg_flags. See section 5.1. */ |
| 569 | /* On user space Linux, these live in <bits/socket.h> as an enum. */ | 578 | /* On user space Linux, these live in <bits/socket.h> as an enum. */ |
diff --git a/include/net/sock.h b/include/net/sock.h index b6440805c420..ecb75526cba0 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
| @@ -739,18 +739,18 @@ extern void FASTCALL(release_sock(struct sock *sk)); | |||
| 739 | #define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock)) | 739 | #define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock)) |
| 740 | 740 | ||
| 741 | extern struct sock *sk_alloc(int family, | 741 | extern struct sock *sk_alloc(int family, |
| 742 | unsigned int __nocast priority, | 742 | gfp_t priority, |
| 743 | struct proto *prot, int zero_it); | 743 | struct proto *prot, int zero_it); |
| 744 | extern void sk_free(struct sock *sk); | 744 | extern void sk_free(struct sock *sk); |
| 745 | extern struct sock *sk_clone(const struct sock *sk, | 745 | extern struct sock *sk_clone(const struct sock *sk, |
| 746 | const unsigned int __nocast priority); | 746 | const gfp_t priority); |
| 747 | 747 | ||
| 748 | extern struct sk_buff *sock_wmalloc(struct sock *sk, | 748 | extern struct sk_buff *sock_wmalloc(struct sock *sk, |
| 749 | unsigned long size, int force, | 749 | unsigned long size, int force, |
| 750 | unsigned int __nocast priority); | 750 | gfp_t priority); |
| 751 | extern struct sk_buff *sock_rmalloc(struct sock *sk, | 751 | extern struct sk_buff *sock_rmalloc(struct sock *sk, |
| 752 | unsigned long size, int force, | 752 | unsigned long size, int force, |
| 753 | unsigned int __nocast priority); | 753 | gfp_t priority); |
| 754 | extern void sock_wfree(struct sk_buff *skb); | 754 | extern void sock_wfree(struct sk_buff *skb); |
| 755 | extern void sock_rfree(struct sk_buff *skb); | 755 | extern void sock_rfree(struct sk_buff *skb); |
| 756 | 756 | ||
| @@ -766,7 +766,7 @@ extern struct sk_buff *sock_alloc_send_skb(struct sock *sk, | |||
| 766 | int noblock, | 766 | int noblock, |
| 767 | int *errcode); | 767 | int *errcode); |
| 768 | extern void *sock_kmalloc(struct sock *sk, int size, | 768 | extern void *sock_kmalloc(struct sock *sk, int size, |
| 769 | unsigned int __nocast priority); | 769 | gfp_t priority); |
| 770 | extern void sock_kfree_s(struct sock *sk, void *mem, int size); | 770 | extern void sock_kfree_s(struct sock *sk, void *mem, int size); |
| 771 | extern void sk_send_sigurg(struct sock *sk); | 771 | extern void sk_send_sigurg(struct sock *sk); |
| 772 | 772 | ||
| @@ -1201,7 +1201,7 @@ static inline void sk_stream_moderate_sndbuf(struct sock *sk) | |||
| 1201 | 1201 | ||
| 1202 | static inline struct sk_buff *sk_stream_alloc_pskb(struct sock *sk, | 1202 | static inline struct sk_buff *sk_stream_alloc_pskb(struct sock *sk, |
| 1203 | int size, int mem, | 1203 | int size, int mem, |
| 1204 | unsigned int __nocast gfp) | 1204 | gfp_t gfp) |
| 1205 | { | 1205 | { |
| 1206 | struct sk_buff *skb; | 1206 | struct sk_buff *skb; |
| 1207 | int hdr_len; | 1207 | int hdr_len; |
| @@ -1224,7 +1224,7 @@ static inline struct sk_buff *sk_stream_alloc_pskb(struct sock *sk, | |||
| 1224 | 1224 | ||
| 1225 | static inline struct sk_buff *sk_stream_alloc_skb(struct sock *sk, | 1225 | static inline struct sk_buff *sk_stream_alloc_skb(struct sock *sk, |
| 1226 | int size, | 1226 | int size, |
| 1227 | unsigned int __nocast gfp) | 1227 | gfp_t gfp) |
| 1228 | { | 1228 | { |
| 1229 | return sk_stream_alloc_pskb(sk, size, 0, gfp); | 1229 | return sk_stream_alloc_pskb(sk, size, 0, gfp); |
| 1230 | } | 1230 | } |
| @@ -1255,7 +1255,7 @@ static inline int sock_writeable(const struct sock *sk) | |||
| 1255 | return atomic_read(&sk->sk_wmem_alloc) < (sk->sk_sndbuf / 2); | 1255 | return atomic_read(&sk->sk_wmem_alloc) < (sk->sk_sndbuf / 2); |
| 1256 | } | 1256 | } |
| 1257 | 1257 | ||
| 1258 | static inline unsigned int __nocast gfp_any(void) | 1258 | static inline gfp_t gfp_any(void) |
| 1259 | { | 1259 | { |
| 1260 | return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; | 1260 | return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; |
| 1261 | } | 1261 | } |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 97af77c4d096..c24339c4e310 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
| @@ -460,8 +460,7 @@ extern void tcp_send_probe0(struct sock *); | |||
| 460 | extern void tcp_send_partial(struct sock *); | 460 | extern void tcp_send_partial(struct sock *); |
| 461 | extern int tcp_write_wakeup(struct sock *); | 461 | extern int tcp_write_wakeup(struct sock *); |
| 462 | extern void tcp_send_fin(struct sock *sk); | 462 | extern void tcp_send_fin(struct sock *sk); |
| 463 | extern void tcp_send_active_reset(struct sock *sk, | 463 | extern void tcp_send_active_reset(struct sock *sk, gfp_t priority); |
| 464 | unsigned int __nocast priority); | ||
| 465 | extern int tcp_send_synack(struct sock *); | 464 | extern int tcp_send_synack(struct sock *); |
| 466 | extern void tcp_push_one(struct sock *, unsigned int mss_now); | 465 | extern void tcp_push_one(struct sock *, unsigned int mss_now); |
| 467 | extern void tcp_send_ack(struct sock *sk); | 466 | extern void tcp_send_ack(struct sock *sk); |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index a9d0d8c5dfbf..5beae1ccd574 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
| @@ -875,7 +875,7 @@ static inline int xfrm_dst_lookup(struct xfrm_dst **dst, struct flowi *fl, unsig | |||
| 875 | } | 875 | } |
| 876 | #endif | 876 | #endif |
| 877 | 877 | ||
| 878 | struct xfrm_policy *xfrm_policy_alloc(int gfp); | 878 | struct xfrm_policy *xfrm_policy_alloc(gfp_t gfp); |
| 879 | extern int xfrm_policy_walk(int (*func)(struct xfrm_policy *, int, int, void*), void *); | 879 | extern int xfrm_policy_walk(int (*func)(struct xfrm_policy *, int, int, void*), void *); |
| 880 | int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl); | 880 | int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl); |
| 881 | struct xfrm_policy *xfrm_policy_bysel(int dir, struct xfrm_selector *sel, | 881 | struct xfrm_policy *xfrm_policy_bysel(int dir, struct xfrm_selector *sel, |
| @@ -931,4 +931,9 @@ static inline int xfrm_addr_cmp(xfrm_address_t *a, xfrm_address_t *b, | |||
| 931 | } | 931 | } |
| 932 | } | 932 | } |
| 933 | 933 | ||
| 934 | static inline int xfrm_policy_id2dir(u32 index) | ||
| 935 | { | ||
| 936 | return index & 7; | ||
| 937 | } | ||
| 938 | |||
| 934 | #endif /* _NET_XFRM_H */ | 939 | #endif /* _NET_XFRM_H */ |
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h index 0e293fe733b0..4172e6841e3d 100644 --- a/include/rdma/ib_mad.h +++ b/include/rdma/ib_mad.h | |||
| @@ -596,7 +596,7 @@ struct ib_mad_send_buf * ib_create_send_mad(struct ib_mad_agent *mad_agent, | |||
| 596 | u32 remote_qpn, u16 pkey_index, | 596 | u32 remote_qpn, u16 pkey_index, |
| 597 | struct ib_ah *ah, int rmpp_active, | 597 | struct ib_ah *ah, int rmpp_active, |
| 598 | int hdr_len, int data_len, | 598 | int hdr_len, int data_len, |
| 599 | unsigned int __nocast gfp_mask); | 599 | gfp_t gfp_mask); |
| 600 | 600 | ||
| 601 | /** | 601 | /** |
| 602 | * ib_free_send_mad - Returns data buffers used to send a MAD. | 602 | * ib_free_send_mad - Returns data buffers used to send a MAD. |
diff --git a/include/rdma/ib_sa.h b/include/rdma/ib_sa.h index a7555c800ecf..f404fe21cc21 100644 --- a/include/rdma/ib_sa.h +++ b/include/rdma/ib_sa.h | |||
| @@ -285,7 +285,7 @@ void ib_sa_cancel_query(int id, struct ib_sa_query *query); | |||
| 285 | int ib_sa_path_rec_get(struct ib_device *device, u8 port_num, | 285 | int ib_sa_path_rec_get(struct ib_device *device, u8 port_num, |
| 286 | struct ib_sa_path_rec *rec, | 286 | struct ib_sa_path_rec *rec, |
| 287 | ib_sa_comp_mask comp_mask, | 287 | ib_sa_comp_mask comp_mask, |
| 288 | int timeout_ms, unsigned int __nocast gfp_mask, | 288 | int timeout_ms, gfp_t gfp_mask, |
| 289 | void (*callback)(int status, | 289 | void (*callback)(int status, |
| 290 | struct ib_sa_path_rec *resp, | 290 | struct ib_sa_path_rec *resp, |
| 291 | void *context), | 291 | void *context), |
| @@ -296,7 +296,7 @@ int ib_sa_mcmember_rec_query(struct ib_device *device, u8 port_num, | |||
| 296 | u8 method, | 296 | u8 method, |
| 297 | struct ib_sa_mcmember_rec *rec, | 297 | struct ib_sa_mcmember_rec *rec, |
| 298 | ib_sa_comp_mask comp_mask, | 298 | ib_sa_comp_mask comp_mask, |
| 299 | int timeout_ms, unsigned int __nocast gfp_mask, | 299 | int timeout_ms, gfp_t gfp_mask, |
| 300 | void (*callback)(int status, | 300 | void (*callback)(int status, |
| 301 | struct ib_sa_mcmember_rec *resp, | 301 | struct ib_sa_mcmember_rec *resp, |
| 302 | void *context), | 302 | void *context), |
| @@ -307,7 +307,7 @@ int ib_sa_service_rec_query(struct ib_device *device, u8 port_num, | |||
| 307 | u8 method, | 307 | u8 method, |
| 308 | struct ib_sa_service_rec *rec, | 308 | struct ib_sa_service_rec *rec, |
| 309 | ib_sa_comp_mask comp_mask, | 309 | ib_sa_comp_mask comp_mask, |
| 310 | int timeout_ms, unsigned int __nocast gfp_mask, | 310 | int timeout_ms, gfp_t gfp_mask, |
| 311 | void (*callback)(int status, | 311 | void (*callback)(int status, |
| 312 | struct ib_sa_service_rec *resp, | 312 | struct ib_sa_service_rec *resp, |
| 313 | void *context), | 313 | void *context), |
| @@ -342,7 +342,7 @@ static inline int | |||
| 342 | ib_sa_mcmember_rec_set(struct ib_device *device, u8 port_num, | 342 | ib_sa_mcmember_rec_set(struct ib_device *device, u8 port_num, |
| 343 | struct ib_sa_mcmember_rec *rec, | 343 | struct ib_sa_mcmember_rec *rec, |
| 344 | ib_sa_comp_mask comp_mask, | 344 | ib_sa_comp_mask comp_mask, |
| 345 | int timeout_ms, unsigned int __nocast gfp_mask, | 345 | int timeout_ms, gfp_t gfp_mask, |
| 346 | void (*callback)(int status, | 346 | void (*callback)(int status, |
| 347 | struct ib_sa_mcmember_rec *resp, | 347 | struct ib_sa_mcmember_rec *resp, |
| 348 | void *context), | 348 | void *context), |
| @@ -384,7 +384,7 @@ static inline int | |||
| 384 | ib_sa_mcmember_rec_delete(struct ib_device *device, u8 port_num, | 384 | ib_sa_mcmember_rec_delete(struct ib_device *device, u8 port_num, |
| 385 | struct ib_sa_mcmember_rec *rec, | 385 | struct ib_sa_mcmember_rec *rec, |
| 386 | ib_sa_comp_mask comp_mask, | 386 | ib_sa_comp_mask comp_mask, |
| 387 | int timeout_ms, unsigned int __nocast gfp_mask, | 387 | int timeout_ms, gfp_t gfp_mask, |
| 388 | void (*callback)(int status, | 388 | void (*callback)(int status, |
| 389 | struct ib_sa_mcmember_rec *resp, | 389 | struct ib_sa_mcmember_rec *resp, |
| 390 | void *context), | 390 | void *context), |
diff --git a/include/rxrpc/call.h b/include/rxrpc/call.h index f48f27e9e0ab..b86f83743510 100644 --- a/include/rxrpc/call.h +++ b/include/rxrpc/call.h | |||
| @@ -203,7 +203,7 @@ extern int rxrpc_call_write_data(struct rxrpc_call *call, | |||
| 203 | size_t sioc, | 203 | size_t sioc, |
| 204 | struct kvec *siov, | 204 | struct kvec *siov, |
| 205 | uint8_t rxhdr_flags, | 205 | uint8_t rxhdr_flags, |
| 206 | int alloc_flags, | 206 | gfp_t alloc_flags, |
| 207 | int dup_data, | 207 | int dup_data, |
| 208 | size_t *size_sent); | 208 | size_t *size_sent); |
| 209 | 209 | ||
diff --git a/include/rxrpc/message.h b/include/rxrpc/message.h index 3a59df6870b2..b318f273d4f2 100644 --- a/include/rxrpc/message.h +++ b/include/rxrpc/message.h | |||
| @@ -63,7 +63,7 @@ extern int rxrpc_conn_newmsg(struct rxrpc_connection *conn, | |||
| 63 | uint8_t type, | 63 | uint8_t type, |
| 64 | int count, | 64 | int count, |
| 65 | struct kvec *diov, | 65 | struct kvec *diov, |
| 66 | int alloc_flags, | 66 | gfp_t alloc_flags, |
| 67 | struct rxrpc_message **_msg); | 67 | struct rxrpc_message **_msg); |
| 68 | 68 | ||
| 69 | extern int rxrpc_conn_sendmsg(struct rxrpc_connection *conn, struct rxrpc_message *msg); | 69 | extern int rxrpc_conn_sendmsg(struct rxrpc_connection *conn, struct rxrpc_message *msg); |
diff --git a/include/sound/ac97_codec.h b/include/sound/ac97_codec.h index 2857cf0472df..d11f34832a97 100644 --- a/include/sound/ac97_codec.h +++ b/include/sound/ac97_codec.h | |||
| @@ -527,6 +527,8 @@ struct _snd_ac97 { | |||
| 527 | struct device dev; | 527 | struct device dev; |
| 528 | }; | 528 | }; |
| 529 | 529 | ||
| 530 | #define to_ac97_t(d) container_of(d, struct _snd_ac97, dev) | ||
| 531 | |||
| 530 | /* conditions */ | 532 | /* conditions */ |
| 531 | static inline int ac97_is_audio(ac97_t * ac97) | 533 | static inline int ac97_is_audio(ac97_t * ac97) |
| 532 | { | 534 | { |
diff --git a/include/sound/core.h b/include/sound/core.h index 26160adcdffc..6d971a4c4ca0 100644 --- a/include/sound/core.h +++ b/include/sound/core.h | |||
| @@ -290,13 +290,13 @@ void snd_memory_init(void); | |||
| 290 | void snd_memory_done(void); | 290 | void snd_memory_done(void); |
| 291 | int snd_memory_info_init(void); | 291 | int snd_memory_info_init(void); |
| 292 | int snd_memory_info_done(void); | 292 | int snd_memory_info_done(void); |
| 293 | void *snd_hidden_kmalloc(size_t size, unsigned int __nocast flags); | 293 | void *snd_hidden_kmalloc(size_t size, gfp_t flags); |
| 294 | void *snd_hidden_kzalloc(size_t size, unsigned int __nocast flags); | 294 | void *snd_hidden_kzalloc(size_t size, gfp_t flags); |
| 295 | void *snd_hidden_kcalloc(size_t n, size_t size, unsigned int __nocast flags); | 295 | void *snd_hidden_kcalloc(size_t n, size_t size, gfp_t flags); |
| 296 | void snd_hidden_kfree(const void *obj); | 296 | void snd_hidden_kfree(const void *obj); |
| 297 | void *snd_hidden_vmalloc(unsigned long size); | 297 | void *snd_hidden_vmalloc(unsigned long size); |
| 298 | void snd_hidden_vfree(void *obj); | 298 | void snd_hidden_vfree(void *obj); |
| 299 | char *snd_hidden_kstrdup(const char *s, unsigned int __nocast flags); | 299 | char *snd_hidden_kstrdup(const char *s, gfp_t flags); |
| 300 | #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags) | 300 | #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags) |
| 301 | #define kzalloc(size, flags) snd_hidden_kzalloc(size, flags) | 301 | #define kzalloc(size, flags) snd_hidden_kzalloc(size, flags) |
| 302 | #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags) | 302 | #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags) |
diff --git a/include/sound/driver.h b/include/sound/driver.h index 0d12456ec3ae..1ec2fae050a6 100644 --- a/include/sound/driver.h +++ b/include/sound/driver.h | |||
| @@ -51,7 +51,7 @@ | |||
| 51 | #ifdef CONFIG_SND_DEBUG_MEMORY | 51 | #ifdef CONFIG_SND_DEBUG_MEMORY |
| 52 | #include <linux/slab.h> | 52 | #include <linux/slab.h> |
| 53 | #include <linux/vmalloc.h> | 53 | #include <linux/vmalloc.h> |
| 54 | void *snd_wrapper_kmalloc(size_t, unsigned int __nocast); | 54 | void *snd_wrapper_kmalloc(size_t, gfp_t); |
| 55 | #undef kmalloc | 55 | #undef kmalloc |
| 56 | void snd_wrapper_kfree(const void *); | 56 | void snd_wrapper_kfree(const void *); |
| 57 | #undef kfree | 57 | #undef kfree |
diff --git a/include/sound/emu10k1.h b/include/sound/emu10k1.h index 67bf3f18e96a..14cb2718cb77 100644 --- a/include/sound/emu10k1.h +++ b/include/sound/emu10k1.h | |||
| @@ -1059,7 +1059,7 @@ typedef struct { | |||
| 1059 | unsigned char spk71; /* Has 7.1 speakers */ | 1059 | unsigned char spk71; /* Has 7.1 speakers */ |
| 1060 | unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ | 1060 | unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ |
| 1061 | unsigned char spdif_bug; /* Has Spdif phasing bug */ | 1061 | unsigned char spdif_bug; /* Has Spdif phasing bug */ |
| 1062 | unsigned char ac97_chip; /* Has an AC97 chip */ | 1062 | unsigned char ac97_chip; /* Has an AC97 chip: 1 = mandatory, 2 = optional */ |
| 1063 | unsigned char ecard; /* APS EEPROM */ | 1063 | unsigned char ecard; /* APS EEPROM */ |
| 1064 | const char *driver; | 1064 | const char *driver; |
| 1065 | const char *name; | 1065 | const char *name; |
diff --git a/kernel/audit.c b/kernel/audit.c index 83096b67510a..aefa73a8a586 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
| @@ -560,7 +560,7 @@ static void audit_buffer_free(struct audit_buffer *ab) | |||
| 560 | } | 560 | } |
| 561 | 561 | ||
| 562 | static struct audit_buffer * audit_buffer_alloc(struct audit_context *ctx, | 562 | static struct audit_buffer * audit_buffer_alloc(struct audit_context *ctx, |
| 563 | unsigned int __nocast gfp_mask, int type) | 563 | gfp_t gfp_mask, int type) |
| 564 | { | 564 | { |
| 565 | unsigned long flags; | 565 | unsigned long flags; |
| 566 | struct audit_buffer *ab = NULL; | 566 | struct audit_buffer *ab = NULL; |
diff --git a/kernel/cpuset.c b/kernel/cpuset.c index 45a5719a0104..28176d083f7b 100644 --- a/kernel/cpuset.c +++ b/kernel/cpuset.c | |||
| @@ -1670,7 +1670,7 @@ static const struct cpuset *nearest_exclusive_ancestor(const struct cpuset *cs) | |||
| 1670 | * GFP_USER - only nodes in current tasks mems allowed ok. | 1670 | * GFP_USER - only nodes in current tasks mems allowed ok. |
| 1671 | **/ | 1671 | **/ |
| 1672 | 1672 | ||
| 1673 | int cpuset_zone_allowed(struct zone *z, unsigned int __nocast gfp_mask) | 1673 | int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask) |
| 1674 | { | 1674 | { |
| 1675 | int node; /* node that zone z is on */ | 1675 | int node; /* node that zone z is on */ |
| 1676 | const struct cpuset *cs; /* current cpuset ancestors */ | 1676 | const struct cpuset *cs; /* current cpuset ancestors */ |
diff --git a/kernel/exit.c b/kernel/exit.c index 43077732619b..3b25b182d2be 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -843,6 +843,7 @@ fastcall NORET_TYPE void do_exit(long code) | |||
| 843 | group_dead = atomic_dec_and_test(&tsk->signal->live); | 843 | group_dead = atomic_dec_and_test(&tsk->signal->live); |
| 844 | if (group_dead) { | 844 | if (group_dead) { |
| 845 | del_timer_sync(&tsk->signal->real_timer); | 845 | del_timer_sync(&tsk->signal->real_timer); |
| 846 | exit_itimers(tsk->signal); | ||
| 846 | acct_process(code); | 847 | acct_process(code); |
| 847 | } | 848 | } |
| 848 | exit_mm(tsk); | 849 | exit_mm(tsk); |
diff --git a/kernel/fork.c b/kernel/fork.c index 533ce27f4b2c..280bd44ac441 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
| @@ -848,7 +848,7 @@ static inline void copy_flags(unsigned long clone_flags, struct task_struct *p) | |||
| 848 | { | 848 | { |
| 849 | unsigned long new_flags = p->flags; | 849 | unsigned long new_flags = p->flags; |
| 850 | 850 | ||
| 851 | new_flags &= ~PF_SUPERPRIV; | 851 | new_flags &= ~(PF_SUPERPRIV | PF_NOFREEZE); |
| 852 | new_flags |= PF_FORKNOEXEC; | 852 | new_flags |= PF_FORKNOEXEC; |
| 853 | if (!(clone_flags & CLONE_PTRACE)) | 853 | if (!(clone_flags & CLONE_PTRACE)) |
| 854 | p->ptrace = 0; | 854 | p->ptrace = 0; |
diff --git a/kernel/kfifo.c b/kernel/kfifo.c index 179baafcdd96..64ab045c3d9d 100644 --- a/kernel/kfifo.c +++ b/kernel/kfifo.c | |||
| @@ -36,7 +36,7 @@ | |||
| 36 | * struct kfifo with kfree(). | 36 | * struct kfifo with kfree(). |
| 37 | */ | 37 | */ |
| 38 | struct kfifo *kfifo_init(unsigned char *buffer, unsigned int size, | 38 | struct kfifo *kfifo_init(unsigned char *buffer, unsigned int size, |
| 39 | unsigned int __nocast gfp_mask, spinlock_t *lock) | 39 | gfp_t gfp_mask, spinlock_t *lock) |
| 40 | { | 40 | { |
| 41 | struct kfifo *fifo; | 41 | struct kfifo *fifo; |
| 42 | 42 | ||
| @@ -64,7 +64,7 @@ EXPORT_SYMBOL(kfifo_init); | |||
| 64 | * | 64 | * |
| 65 | * The size will be rounded-up to a power of 2. | 65 | * The size will be rounded-up to a power of 2. |
| 66 | */ | 66 | */ |
| 67 | struct kfifo *kfifo_alloc(unsigned int size, unsigned int __nocast gfp_mask, spinlock_t *lock) | 67 | struct kfifo *kfifo_alloc(unsigned int size, gfp_t gfp_mask, spinlock_t *lock) |
| 68 | { | 68 | { |
| 69 | unsigned char *buffer; | 69 | unsigned char *buffer; |
| 70 | struct kfifo *ret; | 70 | struct kfifo *ret; |
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index ad85d3f0dcc4..bf374fceb39c 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
| @@ -91,7 +91,7 @@ static inline union cpu_time_count cpu_time_sub(clockid_t which_clock, | |||
| 91 | * Update expiry time from increment, and increase overrun count, | 91 | * Update expiry time from increment, and increase overrun count, |
| 92 | * given the current clock sample. | 92 | * given the current clock sample. |
| 93 | */ | 93 | */ |
| 94 | static inline void bump_cpu_timer(struct k_itimer *timer, | 94 | static void bump_cpu_timer(struct k_itimer *timer, |
| 95 | union cpu_time_count now) | 95 | union cpu_time_count now) |
| 96 | { | 96 | { |
| 97 | int i; | 97 | int i; |
| @@ -110,7 +110,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer, | |||
| 110 | for (i = 0; incr < delta - incr; i++) | 110 | for (i = 0; incr < delta - incr; i++) |
| 111 | incr = incr << 1; | 111 | incr = incr << 1; |
| 112 | for (; i >= 0; incr >>= 1, i--) { | 112 | for (; i >= 0; incr >>= 1, i--) { |
| 113 | if (delta <= incr) | 113 | if (delta < incr) |
| 114 | continue; | 114 | continue; |
| 115 | timer->it.cpu.expires.sched += incr; | 115 | timer->it.cpu.expires.sched += incr; |
| 116 | timer->it_overrun += 1 << i; | 116 | timer->it_overrun += 1 << i; |
| @@ -128,7 +128,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer, | |||
| 128 | for (i = 0; cputime_lt(incr, cputime_sub(delta, incr)); i++) | 128 | for (i = 0; cputime_lt(incr, cputime_sub(delta, incr)); i++) |
| 129 | incr = cputime_add(incr, incr); | 129 | incr = cputime_add(incr, incr); |
| 130 | for (; i >= 0; incr = cputime_halve(incr), i--) { | 130 | for (; i >= 0; incr = cputime_halve(incr), i--) { |
| 131 | if (cputime_le(delta, incr)) | 131 | if (cputime_lt(delta, incr)) |
| 132 | continue; | 132 | continue; |
| 133 | timer->it.cpu.expires.cpu = | 133 | timer->it.cpu.expires.cpu = |
| 134 | cputime_add(timer->it.cpu.expires.cpu, incr); | 134 | cputime_add(timer->it.cpu.expires.cpu, incr); |
| @@ -380,14 +380,9 @@ int posix_cpu_timer_create(struct k_itimer *new_timer) | |||
| 380 | int posix_cpu_timer_del(struct k_itimer *timer) | 380 | int posix_cpu_timer_del(struct k_itimer *timer) |
| 381 | { | 381 | { |
| 382 | struct task_struct *p = timer->it.cpu.task; | 382 | struct task_struct *p = timer->it.cpu.task; |
| 383 | int ret = 0; | ||
| 383 | 384 | ||
| 384 | if (timer->it.cpu.firing) | 385 | if (likely(p != NULL)) { |
| 385 | return TIMER_RETRY; | ||
| 386 | |||
| 387 | if (unlikely(p == NULL)) | ||
| 388 | return 0; | ||
| 389 | |||
| 390 | if (!list_empty(&timer->it.cpu.entry)) { | ||
| 391 | read_lock(&tasklist_lock); | 386 | read_lock(&tasklist_lock); |
| 392 | if (unlikely(p->signal == NULL)) { | 387 | if (unlikely(p->signal == NULL)) { |
| 393 | /* | 388 | /* |
| @@ -396,18 +391,20 @@ int posix_cpu_timer_del(struct k_itimer *timer) | |||
| 396 | */ | 391 | */ |
| 397 | BUG_ON(!list_empty(&timer->it.cpu.entry)); | 392 | BUG_ON(!list_empty(&timer->it.cpu.entry)); |
| 398 | } else { | 393 | } else { |
| 399 | /* | ||
| 400 | * Take us off the task's timer list. | ||
| 401 | */ | ||
| 402 | spin_lock(&p->sighand->siglock); | 394 | spin_lock(&p->sighand->siglock); |
| 403 | list_del(&timer->it.cpu.entry); | 395 | if (timer->it.cpu.firing) |
| 396 | ret = TIMER_RETRY; | ||
| 397 | else | ||
| 398 | list_del(&timer->it.cpu.entry); | ||
| 404 | spin_unlock(&p->sighand->siglock); | 399 | spin_unlock(&p->sighand->siglock); |
| 405 | } | 400 | } |
| 406 | read_unlock(&tasklist_lock); | 401 | read_unlock(&tasklist_lock); |
| 402 | |||
| 403 | if (!ret) | ||
| 404 | put_task_struct(p); | ||
| 407 | } | 405 | } |
| 408 | put_task_struct(p); | ||
| 409 | 406 | ||
| 410 | return 0; | 407 | return ret; |
| 411 | } | 408 | } |
| 412 | 409 | ||
| 413 | /* | 410 | /* |
| @@ -424,7 +421,6 @@ static void cleanup_timers(struct list_head *head, | |||
| 424 | cputime_t ptime = cputime_add(utime, stime); | 421 | cputime_t ptime = cputime_add(utime, stime); |
| 425 | 422 | ||
| 426 | list_for_each_entry_safe(timer, next, head, entry) { | 423 | list_for_each_entry_safe(timer, next, head, entry) { |
| 427 | timer->task = NULL; | ||
| 428 | list_del_init(&timer->entry); | 424 | list_del_init(&timer->entry); |
| 429 | if (cputime_lt(timer->expires.cpu, ptime)) { | 425 | if (cputime_lt(timer->expires.cpu, ptime)) { |
| 430 | timer->expires.cpu = cputime_zero; | 426 | timer->expires.cpu = cputime_zero; |
| @@ -436,7 +432,6 @@ static void cleanup_timers(struct list_head *head, | |||
| 436 | 432 | ||
| 437 | ++head; | 433 | ++head; |
| 438 | list_for_each_entry_safe(timer, next, head, entry) { | 434 | list_for_each_entry_safe(timer, next, head, entry) { |
| 439 | timer->task = NULL; | ||
| 440 | list_del_init(&timer->entry); | 435 | list_del_init(&timer->entry); |
| 441 | if (cputime_lt(timer->expires.cpu, utime)) { | 436 | if (cputime_lt(timer->expires.cpu, utime)) { |
| 442 | timer->expires.cpu = cputime_zero; | 437 | timer->expires.cpu = cputime_zero; |
| @@ -448,7 +443,6 @@ static void cleanup_timers(struct list_head *head, | |||
| 448 | 443 | ||
| 449 | ++head; | 444 | ++head; |
| 450 | list_for_each_entry_safe(timer, next, head, entry) { | 445 | list_for_each_entry_safe(timer, next, head, entry) { |
| 451 | timer->task = NULL; | ||
| 452 | list_del_init(&timer->entry); | 446 | list_del_init(&timer->entry); |
| 453 | if (timer->expires.sched < sched_time) { | 447 | if (timer->expires.sched < sched_time) { |
| 454 | timer->expires.sched = 0; | 448 | timer->expires.sched = 0; |
| @@ -492,6 +486,9 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 492 | struct task_struct *t = p; | 486 | struct task_struct *t = p; |
| 493 | unsigned int nthreads = atomic_read(&p->signal->live); | 487 | unsigned int nthreads = atomic_read(&p->signal->live); |
| 494 | 488 | ||
| 489 | if (!nthreads) | ||
| 490 | return; | ||
| 491 | |||
| 495 | switch (clock_idx) { | 492 | switch (clock_idx) { |
| 496 | default: | 493 | default: |
| 497 | BUG(); | 494 | BUG(); |
| @@ -500,7 +497,7 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 500 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), | 497 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), |
| 501 | nthreads); | 498 | nthreads); |
| 502 | do { | 499 | do { |
| 503 | if (!unlikely(t->exit_state)) { | 500 | if (!unlikely(t->flags & PF_EXITING)) { |
| 504 | ticks = cputime_add(prof_ticks(t), left); | 501 | ticks = cputime_add(prof_ticks(t), left); |
| 505 | if (cputime_eq(t->it_prof_expires, | 502 | if (cputime_eq(t->it_prof_expires, |
| 506 | cputime_zero) || | 503 | cputime_zero) || |
| @@ -515,7 +512,7 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 515 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), | 512 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), |
| 516 | nthreads); | 513 | nthreads); |
| 517 | do { | 514 | do { |
| 518 | if (!unlikely(t->exit_state)) { | 515 | if (!unlikely(t->flags & PF_EXITING)) { |
| 519 | ticks = cputime_add(virt_ticks(t), left); | 516 | ticks = cputime_add(virt_ticks(t), left); |
| 520 | if (cputime_eq(t->it_virt_expires, | 517 | if (cputime_eq(t->it_virt_expires, |
| 521 | cputime_zero) || | 518 | cputime_zero) || |
| @@ -530,7 +527,7 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 530 | nsleft = expires.sched - val.sched; | 527 | nsleft = expires.sched - val.sched; |
| 531 | do_div(nsleft, nthreads); | 528 | do_div(nsleft, nthreads); |
| 532 | do { | 529 | do { |
| 533 | if (!unlikely(t->exit_state)) { | 530 | if (!unlikely(t->flags & PF_EXITING)) { |
| 534 | ns = t->sched_time + nsleft; | 531 | ns = t->sched_time + nsleft; |
| 535 | if (t->it_sched_expires == 0 || | 532 | if (t->it_sched_expires == 0 || |
| 536 | t->it_sched_expires > ns) { | 533 | t->it_sched_expires > ns) { |
| @@ -569,6 +566,9 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now) | |||
| 569 | struct cpu_timer_list *next; | 566 | struct cpu_timer_list *next; |
| 570 | unsigned long i; | 567 | unsigned long i; |
| 571 | 568 | ||
| 569 | if (CPUCLOCK_PERTHREAD(timer->it_clock) && (p->flags & PF_EXITING)) | ||
| 570 | return; | ||
| 571 | |||
| 572 | head = (CPUCLOCK_PERTHREAD(timer->it_clock) ? | 572 | head = (CPUCLOCK_PERTHREAD(timer->it_clock) ? |
| 573 | p->cpu_timers : p->signal->cpu_timers); | 573 | p->cpu_timers : p->signal->cpu_timers); |
| 574 | head += CPUCLOCK_WHICH(timer->it_clock); | 574 | head += CPUCLOCK_WHICH(timer->it_clock); |
| @@ -579,17 +579,15 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now) | |||
| 579 | listpos = head; | 579 | listpos = head; |
| 580 | if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) { | 580 | if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) { |
| 581 | list_for_each_entry(next, head, entry) { | 581 | list_for_each_entry(next, head, entry) { |
| 582 | if (next->expires.sched > nt->expires.sched) { | 582 | if (next->expires.sched > nt->expires.sched) |
| 583 | listpos = &next->entry; | ||
| 584 | break; | 583 | break; |
| 585 | } | 584 | listpos = &next->entry; |
| 586 | } | 585 | } |
| 587 | } else { | 586 | } else { |
| 588 | list_for_each_entry(next, head, entry) { | 587 | list_for_each_entry(next, head, entry) { |
| 589 | if (cputime_gt(next->expires.cpu, nt->expires.cpu)) { | 588 | if (cputime_gt(next->expires.cpu, nt->expires.cpu)) |
| 590 | listpos = &next->entry; | ||
| 591 | break; | 589 | break; |
| 592 | } | 590 | listpos = &next->entry; |
| 593 | } | 591 | } |
| 594 | } | 592 | } |
| 595 | list_add(&nt->entry, listpos); | 593 | list_add(&nt->entry, listpos); |
| @@ -733,9 +731,15 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags, | |||
| 733 | * Disarm any old timer after extracting its expiry time. | 731 | * Disarm any old timer after extracting its expiry time. |
| 734 | */ | 732 | */ |
| 735 | BUG_ON(!irqs_disabled()); | 733 | BUG_ON(!irqs_disabled()); |
| 734 | |||
| 735 | ret = 0; | ||
| 736 | spin_lock(&p->sighand->siglock); | 736 | spin_lock(&p->sighand->siglock); |
| 737 | old_expires = timer->it.cpu.expires; | 737 | old_expires = timer->it.cpu.expires; |
| 738 | list_del_init(&timer->it.cpu.entry); | 738 | if (unlikely(timer->it.cpu.firing)) { |
| 739 | timer->it.cpu.firing = -1; | ||
| 740 | ret = TIMER_RETRY; | ||
| 741 | } else | ||
| 742 | list_del_init(&timer->it.cpu.entry); | ||
| 739 | spin_unlock(&p->sighand->siglock); | 743 | spin_unlock(&p->sighand->siglock); |
| 740 | 744 | ||
| 741 | /* | 745 | /* |
| @@ -783,7 +787,7 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags, | |||
| 783 | } | 787 | } |
| 784 | } | 788 | } |
| 785 | 789 | ||
| 786 | if (unlikely(timer->it.cpu.firing)) { | 790 | if (unlikely(ret)) { |
| 787 | /* | 791 | /* |
| 788 | * We are colliding with the timer actually firing. | 792 | * We are colliding with the timer actually firing. |
| 789 | * Punt after filling in the timer's old value, and | 793 | * Punt after filling in the timer's old value, and |
| @@ -791,8 +795,6 @@ int posix_cpu_timer_set(struct k_itimer *timer, int flags, | |||
| 791 | * it as an overrun (thanks to bump_cpu_timer above). | 795 | * it as an overrun (thanks to bump_cpu_timer above). |
| 792 | */ | 796 | */ |
| 793 | read_unlock(&tasklist_lock); | 797 | read_unlock(&tasklist_lock); |
| 794 | timer->it.cpu.firing = -1; | ||
| 795 | ret = TIMER_RETRY; | ||
| 796 | goto out; | 798 | goto out; |
| 797 | } | 799 | } |
| 798 | 800 | ||
| @@ -958,14 +960,16 @@ void posix_cpu_timer_get(struct k_itimer *timer, struct itimerspec *itp) | |||
| 958 | static void check_thread_timers(struct task_struct *tsk, | 960 | static void check_thread_timers(struct task_struct *tsk, |
| 959 | struct list_head *firing) | 961 | struct list_head *firing) |
| 960 | { | 962 | { |
| 963 | int maxfire; | ||
| 961 | struct list_head *timers = tsk->cpu_timers; | 964 | struct list_head *timers = tsk->cpu_timers; |
| 962 | 965 | ||
| 966 | maxfire = 20; | ||
| 963 | tsk->it_prof_expires = cputime_zero; | 967 | tsk->it_prof_expires = cputime_zero; |
| 964 | while (!list_empty(timers)) { | 968 | while (!list_empty(timers)) { |
| 965 | struct cpu_timer_list *t = list_entry(timers->next, | 969 | struct cpu_timer_list *t = list_entry(timers->next, |
| 966 | struct cpu_timer_list, | 970 | struct cpu_timer_list, |
| 967 | entry); | 971 | entry); |
| 968 | if (cputime_lt(prof_ticks(tsk), t->expires.cpu)) { | 972 | if (!--maxfire || cputime_lt(prof_ticks(tsk), t->expires.cpu)) { |
| 969 | tsk->it_prof_expires = t->expires.cpu; | 973 | tsk->it_prof_expires = t->expires.cpu; |
| 970 | break; | 974 | break; |
| 971 | } | 975 | } |
| @@ -974,12 +978,13 @@ static void check_thread_timers(struct task_struct *tsk, | |||
| 974 | } | 978 | } |
| 975 | 979 | ||
| 976 | ++timers; | 980 | ++timers; |
| 981 | maxfire = 20; | ||
| 977 | tsk->it_virt_expires = cputime_zero; | 982 | tsk->it_virt_expires = cputime_zero; |
| 978 | while (!list_empty(timers)) { | 983 | while (!list_empty(timers)) { |
| 979 | struct cpu_timer_list *t = list_entry(timers->next, | 984 | struct cpu_timer_list *t = list_entry(timers->next, |
| 980 | struct cpu_timer_list, | 985 | struct cpu_timer_list, |
| 981 | entry); | 986 | entry); |
| 982 | if (cputime_lt(virt_ticks(tsk), t->expires.cpu)) { | 987 | if (!--maxfire || cputime_lt(virt_ticks(tsk), t->expires.cpu)) { |
| 983 | tsk->it_virt_expires = t->expires.cpu; | 988 | tsk->it_virt_expires = t->expires.cpu; |
| 984 | break; | 989 | break; |
| 985 | } | 990 | } |
| @@ -988,12 +993,13 @@ static void check_thread_timers(struct task_struct *tsk, | |||
| 988 | } | 993 | } |
| 989 | 994 | ||
| 990 | ++timers; | 995 | ++timers; |
| 996 | maxfire = 20; | ||
| 991 | tsk->it_sched_expires = 0; | 997 | tsk->it_sched_expires = 0; |
| 992 | while (!list_empty(timers)) { | 998 | while (!list_empty(timers)) { |
| 993 | struct cpu_timer_list *t = list_entry(timers->next, | 999 | struct cpu_timer_list *t = list_entry(timers->next, |
| 994 | struct cpu_timer_list, | 1000 | struct cpu_timer_list, |
| 995 | entry); | 1001 | entry); |
| 996 | if (tsk->sched_time < t->expires.sched) { | 1002 | if (!--maxfire || tsk->sched_time < t->expires.sched) { |
| 997 | tsk->it_sched_expires = t->expires.sched; | 1003 | tsk->it_sched_expires = t->expires.sched; |
| 998 | break; | 1004 | break; |
| 999 | } | 1005 | } |
| @@ -1010,6 +1016,7 @@ static void check_thread_timers(struct task_struct *tsk, | |||
| 1010 | static void check_process_timers(struct task_struct *tsk, | 1016 | static void check_process_timers(struct task_struct *tsk, |
| 1011 | struct list_head *firing) | 1017 | struct list_head *firing) |
| 1012 | { | 1018 | { |
| 1019 | int maxfire; | ||
| 1013 | struct signal_struct *const sig = tsk->signal; | 1020 | struct signal_struct *const sig = tsk->signal; |
| 1014 | cputime_t utime, stime, ptime, virt_expires, prof_expires; | 1021 | cputime_t utime, stime, ptime, virt_expires, prof_expires; |
| 1015 | unsigned long long sched_time, sched_expires; | 1022 | unsigned long long sched_time, sched_expires; |
| @@ -1042,12 +1049,13 @@ static void check_process_timers(struct task_struct *tsk, | |||
| 1042 | } while (t != tsk); | 1049 | } while (t != tsk); |
| 1043 | ptime = cputime_add(utime, stime); | 1050 | ptime = cputime_add(utime, stime); |
| 1044 | 1051 | ||
| 1052 | maxfire = 20; | ||
| 1045 | prof_expires = cputime_zero; | 1053 | prof_expires = cputime_zero; |
| 1046 | while (!list_empty(timers)) { | 1054 | while (!list_empty(timers)) { |
| 1047 | struct cpu_timer_list *t = list_entry(timers->next, | 1055 | struct cpu_timer_list *t = list_entry(timers->next, |
| 1048 | struct cpu_timer_list, | 1056 | struct cpu_timer_list, |
| 1049 | entry); | 1057 | entry); |
| 1050 | if (cputime_lt(ptime, t->expires.cpu)) { | 1058 | if (!--maxfire || cputime_lt(ptime, t->expires.cpu)) { |
| 1051 | prof_expires = t->expires.cpu; | 1059 | prof_expires = t->expires.cpu; |
| 1052 | break; | 1060 | break; |
| 1053 | } | 1061 | } |
| @@ -1056,12 +1064,13 @@ static void check_process_timers(struct task_struct *tsk, | |||
| 1056 | } | 1064 | } |
| 1057 | 1065 | ||
| 1058 | ++timers; | 1066 | ++timers; |
| 1067 | maxfire = 20; | ||
| 1059 | virt_expires = cputime_zero; | 1068 | virt_expires = cputime_zero; |
| 1060 | while (!list_empty(timers)) { | 1069 | while (!list_empty(timers)) { |
| 1061 | struct cpu_timer_list *t = list_entry(timers->next, | 1070 | struct cpu_timer_list *t = list_entry(timers->next, |
| 1062 | struct cpu_timer_list, | 1071 | struct cpu_timer_list, |
| 1063 | entry); | 1072 | entry); |
| 1064 | if (cputime_lt(utime, t->expires.cpu)) { | 1073 | if (!--maxfire || cputime_lt(utime, t->expires.cpu)) { |
| 1065 | virt_expires = t->expires.cpu; | 1074 | virt_expires = t->expires.cpu; |
| 1066 | break; | 1075 | break; |
| 1067 | } | 1076 | } |
| @@ -1070,12 +1079,13 @@ static void check_process_timers(struct task_struct *tsk, | |||
| 1070 | } | 1079 | } |
| 1071 | 1080 | ||
| 1072 | ++timers; | 1081 | ++timers; |
| 1082 | maxfire = 20; | ||
| 1073 | sched_expires = 0; | 1083 | sched_expires = 0; |
| 1074 | while (!list_empty(timers)) { | 1084 | while (!list_empty(timers)) { |
| 1075 | struct cpu_timer_list *t = list_entry(timers->next, | 1085 | struct cpu_timer_list *t = list_entry(timers->next, |
| 1076 | struct cpu_timer_list, | 1086 | struct cpu_timer_list, |
| 1077 | entry); | 1087 | entry); |
| 1078 | if (sched_time < t->expires.sched) { | 1088 | if (!--maxfire || sched_time < t->expires.sched) { |
| 1079 | sched_expires = t->expires.sched; | 1089 | sched_expires = t->expires.sched; |
| 1080 | break; | 1090 | break; |
| 1081 | } | 1091 | } |
| @@ -1158,6 +1168,9 @@ static void check_process_timers(struct task_struct *tsk, | |||
| 1158 | unsigned long long sched_left, sched; | 1168 | unsigned long long sched_left, sched; |
| 1159 | const unsigned int nthreads = atomic_read(&sig->live); | 1169 | const unsigned int nthreads = atomic_read(&sig->live); |
| 1160 | 1170 | ||
| 1171 | if (!nthreads) | ||
| 1172 | return; | ||
| 1173 | |||
| 1161 | prof_left = cputime_sub(prof_expires, utime); | 1174 | prof_left = cputime_sub(prof_expires, utime); |
| 1162 | prof_left = cputime_sub(prof_left, stime); | 1175 | prof_left = cputime_sub(prof_left, stime); |
| 1163 | prof_left = cputime_div(prof_left, nthreads); | 1176 | prof_left = cputime_div(prof_left, nthreads); |
| @@ -1194,7 +1207,7 @@ static void check_process_timers(struct task_struct *tsk, | |||
| 1194 | 1207 | ||
| 1195 | do { | 1208 | do { |
| 1196 | t = next_thread(t); | 1209 | t = next_thread(t); |
| 1197 | } while (unlikely(t->exit_state)); | 1210 | } while (unlikely(t->flags & PF_EXITING)); |
| 1198 | } while (t != tsk); | 1211 | } while (t != tsk); |
| 1199 | } | 1212 | } |
| 1200 | } | 1213 | } |
diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index b7b532acd9fc..dda3cda73c77 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c | |||
| @@ -1157,7 +1157,7 @@ retry_delete: | |||
| 1157 | } | 1157 | } |
| 1158 | 1158 | ||
| 1159 | /* | 1159 | /* |
| 1160 | * This is called by __exit_signal, only when there are no more | 1160 | * This is called by do_exit or de_thread, only when there are no more |
| 1161 | * references to the shared signal_struct. | 1161 | * references to the shared signal_struct. |
| 1162 | */ | 1162 | */ |
| 1163 | void exit_itimers(struct signal_struct *sig) | 1163 | void exit_itimers(struct signal_struct *sig) |
diff --git a/kernel/power/swsusp.c b/kernel/power/swsusp.c index acf79ac1cb6d..2d5c45676442 100644 --- a/kernel/power/swsusp.c +++ b/kernel/power/swsusp.c | |||
| @@ -1095,7 +1095,7 @@ static inline void eat_page(void *page) | |||
| 1095 | *eaten_memory = c; | 1095 | *eaten_memory = c; |
| 1096 | } | 1096 | } |
| 1097 | 1097 | ||
| 1098 | static unsigned long get_usable_page(unsigned gfp_mask) | 1098 | unsigned long get_usable_page(unsigned gfp_mask) |
| 1099 | { | 1099 | { |
| 1100 | unsigned long m; | 1100 | unsigned long m; |
| 1101 | 1101 | ||
| @@ -1109,7 +1109,7 @@ static unsigned long get_usable_page(unsigned gfp_mask) | |||
| 1109 | return m; | 1109 | return m; |
| 1110 | } | 1110 | } |
| 1111 | 1111 | ||
| 1112 | static void free_eaten_memory(void) | 1112 | void free_eaten_memory(void) |
| 1113 | { | 1113 | { |
| 1114 | unsigned long m; | 1114 | unsigned long m; |
| 1115 | void **c; | 1115 | void **c; |
| @@ -1481,11 +1481,12 @@ static int read_suspend_image(void) | |||
| 1481 | /* Allocate memory for the image and read the data from swap */ | 1481 | /* Allocate memory for the image and read the data from swap */ |
| 1482 | 1482 | ||
| 1483 | error = check_pagedir(pagedir_nosave); | 1483 | error = check_pagedir(pagedir_nosave); |
| 1484 | free_eaten_memory(); | 1484 | |
| 1485 | if (!error) | 1485 | if (!error) |
| 1486 | error = data_read(pagedir_nosave); | 1486 | error = data_read(pagedir_nosave); |
| 1487 | 1487 | ||
| 1488 | if (error) { /* We fail cleanly */ | 1488 | if (error) { /* We fail cleanly */ |
| 1489 | free_eaten_memory(); | ||
| 1489 | for_each_pbe (p, pagedir_nosave) | 1490 | for_each_pbe (p, pagedir_nosave) |
| 1490 | if (p->address) { | 1491 | if (p->address) { |
| 1491 | free_page(p->address); | 1492 | free_page(p->address); |
diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c index bef3b6901b76..2559d4b8f23f 100644 --- a/kernel/rcupdate.c +++ b/kernel/rcupdate.c | |||
| @@ -71,7 +71,7 @@ DEFINE_PER_CPU(struct rcu_data, rcu_bh_data) = { 0L }; | |||
| 71 | 71 | ||
| 72 | /* Fake initialization required by compiler */ | 72 | /* Fake initialization required by compiler */ |
| 73 | static DEFINE_PER_CPU(struct tasklet_struct, rcu_tasklet) = {NULL}; | 73 | static DEFINE_PER_CPU(struct tasklet_struct, rcu_tasklet) = {NULL}; |
| 74 | static int maxbatch = 10; | 74 | static int maxbatch = 10000; |
| 75 | 75 | ||
| 76 | #ifndef __HAVE_ARCH_CMPXCHG | 76 | #ifndef __HAVE_ARCH_CMPXCHG |
| 77 | /* | 77 | /* |
| @@ -109,6 +109,10 @@ void fastcall call_rcu(struct rcu_head *head, | |||
| 109 | rdp = &__get_cpu_var(rcu_data); | 109 | rdp = &__get_cpu_var(rcu_data); |
| 110 | *rdp->nxttail = head; | 110 | *rdp->nxttail = head; |
| 111 | rdp->nxttail = &head->next; | 111 | rdp->nxttail = &head->next; |
| 112 | |||
| 113 | if (unlikely(++rdp->count > 10000)) | ||
| 114 | set_need_resched(); | ||
| 115 | |||
| 112 | local_irq_restore(flags); | 116 | local_irq_restore(flags); |
| 113 | } | 117 | } |
| 114 | 118 | ||
| @@ -140,6 +144,12 @@ void fastcall call_rcu_bh(struct rcu_head *head, | |||
| 140 | rdp = &__get_cpu_var(rcu_bh_data); | 144 | rdp = &__get_cpu_var(rcu_bh_data); |
| 141 | *rdp->nxttail = head; | 145 | *rdp->nxttail = head; |
| 142 | rdp->nxttail = &head->next; | 146 | rdp->nxttail = &head->next; |
| 147 | rdp->count++; | ||
| 148 | /* | ||
| 149 | * Should we directly call rcu_do_batch() here ? | ||
| 150 | * if (unlikely(rdp->count > 10000)) | ||
| 151 | * rcu_do_batch(rdp); | ||
| 152 | */ | ||
| 143 | local_irq_restore(flags); | 153 | local_irq_restore(flags); |
| 144 | } | 154 | } |
| 145 | 155 | ||
| @@ -157,6 +167,7 @@ static void rcu_do_batch(struct rcu_data *rdp) | |||
| 157 | next = rdp->donelist = list->next; | 167 | next = rdp->donelist = list->next; |
| 158 | list->func(list); | 168 | list->func(list); |
| 159 | list = next; | 169 | list = next; |
| 170 | rdp->count--; | ||
| 160 | if (++count >= maxbatch) | 171 | if (++count >= maxbatch) |
| 161 | break; | 172 | break; |
| 162 | } | 173 | } |
diff --git a/kernel/sched.c b/kernel/sched.c index 1f31a528fdba..1e5cafdf4e27 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -3879,6 +3879,7 @@ EXPORT_SYMBOL(cpu_present_map); | |||
| 3879 | 3879 | ||
| 3880 | #ifndef CONFIG_SMP | 3880 | #ifndef CONFIG_SMP |
| 3881 | cpumask_t cpu_online_map = CPU_MASK_ALL; | 3881 | cpumask_t cpu_online_map = CPU_MASK_ALL; |
| 3882 | EXPORT_SYMBOL_GPL(cpu_online_map); | ||
| 3882 | cpumask_t cpu_possible_map = CPU_MASK_ALL; | 3883 | cpumask_t cpu_possible_map = CPU_MASK_ALL; |
| 3883 | #endif | 3884 | #endif |
| 3884 | 3885 | ||
diff --git a/kernel/signal.c b/kernel/signal.c index 619b027e92b5..f2b96b08fb44 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
| @@ -262,7 +262,7 @@ next_signal(struct sigpending *pending, sigset_t *mask) | |||
| 262 | return sig; | 262 | return sig; |
| 263 | } | 263 | } |
| 264 | 264 | ||
| 265 | static struct sigqueue *__sigqueue_alloc(struct task_struct *t, unsigned int __nocast flags, | 265 | static struct sigqueue *__sigqueue_alloc(struct task_struct *t, gfp_t flags, |
| 266 | int override_rlimit) | 266 | int override_rlimit) |
| 267 | { | 267 | { |
| 268 | struct sigqueue *q = NULL; | 268 | struct sigqueue *q = NULL; |
| @@ -397,20 +397,8 @@ void __exit_signal(struct task_struct *tsk) | |||
| 397 | flush_sigqueue(&tsk->pending); | 397 | flush_sigqueue(&tsk->pending); |
| 398 | if (sig) { | 398 | if (sig) { |
| 399 | /* | 399 | /* |
| 400 | * We are cleaning up the signal_struct here. We delayed | 400 | * We are cleaning up the signal_struct here. |
| 401 | * calling exit_itimers until after flush_sigqueue, just in | ||
| 402 | * case our thread-local pending queue contained a queued | ||
| 403 | * timer signal that would have been cleared in | ||
| 404 | * exit_itimers. When that called sigqueue_free, it would | ||
| 405 | * attempt to re-take the tasklist_lock and deadlock. This | ||
| 406 | * can never happen if we ensure that all queues the | ||
| 407 | * timer's signal might be queued on have been flushed | ||
| 408 | * first. The shared_pending queue, and our own pending | ||
| 409 | * queue are the only queues the timer could be on, since | ||
| 410 | * there are no other threads left in the group and timer | ||
| 411 | * signals are constrained to threads inside the group. | ||
| 412 | */ | 401 | */ |
| 413 | exit_itimers(sig); | ||
| 414 | exit_thread_group_keys(sig); | 402 | exit_thread_group_keys(sig); |
| 415 | kmem_cache_free(signal_cachep, sig); | 403 | kmem_cache_free(signal_cachep, sig); |
| 416 | } | 404 | } |
| @@ -578,7 +566,8 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) | |||
| 578 | * is to alert stop-signal processing code when another | 566 | * is to alert stop-signal processing code when another |
| 579 | * processor has come along and cleared the flag. | 567 | * processor has come along and cleared the flag. |
| 580 | */ | 568 | */ |
| 581 | tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; | 569 | if (!(tsk->signal->flags & SIGNAL_GROUP_EXIT)) |
| 570 | tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; | ||
| 582 | } | 571 | } |
| 583 | if ( signr && | 572 | if ( signr && |
| 584 | ((info->si_code & __SI_MASK) == __SI_TIMER) && | 573 | ((info->si_code & __SI_MASK) == __SI_TIMER) && |
| @@ -1192,6 +1181,40 @@ kill_proc_info(int sig, struct siginfo *info, pid_t pid) | |||
| 1192 | return error; | 1181 | return error; |
| 1193 | } | 1182 | } |
| 1194 | 1183 | ||
| 1184 | /* like kill_proc_info(), but doesn't use uid/euid of "current" */ | ||
| 1185 | int kill_proc_info_as_uid(int sig, struct siginfo *info, pid_t pid, | ||
| 1186 | uid_t uid, uid_t euid) | ||
| 1187 | { | ||
| 1188 | int ret = -EINVAL; | ||
| 1189 | struct task_struct *p; | ||
| 1190 | |||
| 1191 | if (!valid_signal(sig)) | ||
| 1192 | return ret; | ||
| 1193 | |||
| 1194 | read_lock(&tasklist_lock); | ||
| 1195 | p = find_task_by_pid(pid); | ||
| 1196 | if (!p) { | ||
| 1197 | ret = -ESRCH; | ||
| 1198 | goto out_unlock; | ||
| 1199 | } | ||
| 1200 | if ((!info || ((unsigned long)info != 1 && | ||
| 1201 | (unsigned long)info != 2 && SI_FROMUSER(info))) | ||
| 1202 | && (euid != p->suid) && (euid != p->uid) | ||
| 1203 | && (uid != p->suid) && (uid != p->uid)) { | ||
| 1204 | ret = -EPERM; | ||
| 1205 | goto out_unlock; | ||
| 1206 | } | ||
| 1207 | if (sig && p->sighand) { | ||
| 1208 | unsigned long flags; | ||
| 1209 | spin_lock_irqsave(&p->sighand->siglock, flags); | ||
| 1210 | ret = __group_send_sig_info(sig, info, p); | ||
| 1211 | spin_unlock_irqrestore(&p->sighand->siglock, flags); | ||
| 1212 | } | ||
| 1213 | out_unlock: | ||
| 1214 | read_unlock(&tasklist_lock); | ||
| 1215 | return ret; | ||
| 1216 | } | ||
| 1217 | EXPORT_SYMBOL_GPL(kill_proc_info_as_uid); | ||
| 1195 | 1218 | ||
| 1196 | /* | 1219 | /* |
| 1197 | * kill_something_info() interprets pid in interesting ways just like kill(2). | 1220 | * kill_something_info() interprets pid in interesting ways just like kill(2). |
diff --git a/kernel/time.c b/kernel/time.c index dd5ae1162a8f..40c2410ac99a 100644 --- a/kernel/time.c +++ b/kernel/time.c | |||
| @@ -570,6 +570,7 @@ void getnstimeofday(struct timespec *tv) | |||
| 570 | tv->tv_sec = x.tv_sec; | 570 | tv->tv_sec = x.tv_sec; |
| 571 | tv->tv_nsec = x.tv_usec * NSEC_PER_USEC; | 571 | tv->tv_nsec = x.tv_usec * NSEC_PER_USEC; |
| 572 | } | 572 | } |
| 573 | EXPORT_SYMBOL_GPL(getnstimeofday); | ||
| 573 | #endif | 574 | #endif |
| 574 | 575 | ||
| 575 | #if (BITS_PER_LONG < 64) | 576 | #if (BITS_PER_LONG < 64) |
diff --git a/lib/.gitignore b/lib/.gitignore new file mode 100644 index 000000000000..3bef1ea94c99 --- /dev/null +++ b/lib/.gitignore | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | # | ||
| 2 | # Generated files | ||
| 3 | # | ||
| 4 | gen_crc32table | ||
| 5 | crc32table.h | ||
| 6 | |||
| @@ -346,6 +346,19 @@ void idr_remove(struct idr *idp, int id) | |||
| 346 | EXPORT_SYMBOL(idr_remove); | 346 | EXPORT_SYMBOL(idr_remove); |
| 347 | 347 | ||
| 348 | /** | 348 | /** |
| 349 | * idr_destroy - release all cached layers within an idr tree | ||
| 350 | * idp: idr handle | ||
| 351 | */ | ||
| 352 | void idr_destroy(struct idr *idp) | ||
| 353 | { | ||
| 354 | while (idp->id_free_cnt) { | ||
| 355 | struct idr_layer *p = alloc_layer(idp); | ||
| 356 | kmem_cache_free(idr_layer_cache, p); | ||
| 357 | } | ||
| 358 | } | ||
| 359 | EXPORT_SYMBOL(idr_destroy); | ||
| 360 | |||
| 361 | /** | ||
| 349 | * idr_find - return pointer for given id | 362 | * idr_find - return pointer for given id |
| 350 | * @idp: idr handle | 363 | * @idp: idr handle |
| 351 | * @id: lookup key | 364 | * @id: lookup key |
diff --git a/lib/radix-tree.c b/lib/radix-tree.c index 6a8bc6e06431..d1c057e71b68 100644 --- a/lib/radix-tree.c +++ b/lib/radix-tree.c | |||
| @@ -110,7 +110,7 @@ radix_tree_node_free(struct radix_tree_node *node) | |||
| 110 | * success, return zero, with preemption disabled. On error, return -ENOMEM | 110 | * success, return zero, with preemption disabled. On error, return -ENOMEM |
| 111 | * with preemption not disabled. | 111 | * with preemption not disabled. |
| 112 | */ | 112 | */ |
| 113 | int radix_tree_preload(unsigned int __nocast gfp_mask) | 113 | int radix_tree_preload(gfp_t gfp_mask) |
| 114 | { | 114 | { |
| 115 | struct radix_tree_preload *rtp; | 115 | struct radix_tree_preload *rtp; |
| 116 | struct radix_tree_node *node; | 116 | struct radix_tree_node *node; |
diff --git a/lib/ts_bm.c b/lib/ts_bm.c index 2cc79112ecc3..8a8b3a16133e 100644 --- a/lib/ts_bm.c +++ b/lib/ts_bm.c | |||
| @@ -127,7 +127,7 @@ static void compute_prefix_tbl(struct ts_bm *bm, const u8 *pattern, | |||
| 127 | } | 127 | } |
| 128 | 128 | ||
| 129 | static struct ts_config *bm_init(const void *pattern, unsigned int len, | 129 | static struct ts_config *bm_init(const void *pattern, unsigned int len, |
| 130 | int gfp_mask) | 130 | gfp_t gfp_mask) |
| 131 | { | 131 | { |
| 132 | struct ts_config *conf; | 132 | struct ts_config *conf; |
| 133 | struct ts_bm *bm; | 133 | struct ts_bm *bm; |
diff --git a/lib/ts_fsm.c b/lib/ts_fsm.c index d27c0a072940..ca3211206eef 100644 --- a/lib/ts_fsm.c +++ b/lib/ts_fsm.c | |||
| @@ -258,7 +258,7 @@ found_match: | |||
| 258 | } | 258 | } |
| 259 | 259 | ||
| 260 | static struct ts_config *fsm_init(const void *pattern, unsigned int len, | 260 | static struct ts_config *fsm_init(const void *pattern, unsigned int len, |
| 261 | int gfp_mask) | 261 | gfp_t gfp_mask) |
| 262 | { | 262 | { |
| 263 | int i, err = -EINVAL; | 263 | int i, err = -EINVAL; |
| 264 | struct ts_config *conf; | 264 | struct ts_config *conf; |
diff --git a/lib/ts_kmp.c b/lib/ts_kmp.c index 73266b975585..7fd45451b44a 100644 --- a/lib/ts_kmp.c +++ b/lib/ts_kmp.c | |||
| @@ -87,7 +87,7 @@ static inline void compute_prefix_tbl(const u8 *pattern, unsigned int len, | |||
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | static struct ts_config *kmp_init(const void *pattern, unsigned int len, | 89 | static struct ts_config *kmp_init(const void *pattern, unsigned int len, |
| 90 | int gfp_mask) | 90 | gfp_t gfp_mask) |
| 91 | { | 91 | { |
| 92 | struct ts_config *conf; | 92 | struct ts_config *conf; |
| 93 | struct ts_kmp *kmp; | 93 | struct ts_kmp *kmp; |
diff --git a/mm/bootmem.c b/mm/bootmem.c index c1330cc19783..a58699b6579e 100644 --- a/mm/bootmem.c +++ b/mm/bootmem.c | |||
| @@ -154,10 +154,10 @@ static void __init free_bootmem_core(bootmem_data_t *bdata, unsigned long addr, | |||
| 154 | */ | 154 | */ |
| 155 | static void * __init | 155 | static void * __init |
| 156 | __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size, | 156 | __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size, |
| 157 | unsigned long align, unsigned long goal) | 157 | unsigned long align, unsigned long goal, unsigned long limit) |
| 158 | { | 158 | { |
| 159 | unsigned long offset, remaining_size, areasize, preferred; | 159 | unsigned long offset, remaining_size, areasize, preferred; |
| 160 | unsigned long i, start = 0, incr, eidx; | 160 | unsigned long i, start = 0, incr, eidx, end_pfn = bdata->node_low_pfn; |
| 161 | void *ret; | 161 | void *ret; |
| 162 | 162 | ||
| 163 | if(!size) { | 163 | if(!size) { |
| @@ -166,7 +166,14 @@ __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size, | |||
| 166 | } | 166 | } |
| 167 | BUG_ON(align & (align-1)); | 167 | BUG_ON(align & (align-1)); |
| 168 | 168 | ||
| 169 | eidx = bdata->node_low_pfn - (bdata->node_boot_start >> PAGE_SHIFT); | 169 | if (limit && bdata->node_boot_start >= limit) |
| 170 | return NULL; | ||
| 171 | |||
| 172 | limit >>=PAGE_SHIFT; | ||
| 173 | if (limit && end_pfn > limit) | ||
| 174 | end_pfn = limit; | ||
| 175 | |||
| 176 | eidx = end_pfn - (bdata->node_boot_start >> PAGE_SHIFT); | ||
| 170 | offset = 0; | 177 | offset = 0; |
| 171 | if (align && | 178 | if (align && |
| 172 | (bdata->node_boot_start & (align - 1UL)) != 0) | 179 | (bdata->node_boot_start & (align - 1UL)) != 0) |
| @@ -178,11 +185,12 @@ __alloc_bootmem_core(struct bootmem_data *bdata, unsigned long size, | |||
| 178 | * first, then we try to allocate lower pages. | 185 | * first, then we try to allocate lower pages. |
| 179 | */ | 186 | */ |
| 180 | if (goal && (goal >= bdata->node_boot_start) && | 187 | if (goal && (goal >= bdata->node_boot_start) && |
| 181 | ((goal >> PAGE_SHIFT) < bdata->node_low_pfn)) { | 188 | ((goal >> PAGE_SHIFT) < end_pfn)) { |
| 182 | preferred = goal - bdata->node_boot_start; | 189 | preferred = goal - bdata->node_boot_start; |
| 183 | 190 | ||
| 184 | if (bdata->last_success >= preferred) | 191 | if (bdata->last_success >= preferred) |
| 185 | preferred = bdata->last_success; | 192 | if (!limit || (limit && limit > bdata->last_success)) |
| 193 | preferred = bdata->last_success; | ||
| 186 | } else | 194 | } else |
| 187 | preferred = 0; | 195 | preferred = 0; |
| 188 | 196 | ||
| @@ -382,14 +390,15 @@ unsigned long __init free_all_bootmem (void) | |||
| 382 | return(free_all_bootmem_core(NODE_DATA(0))); | 390 | return(free_all_bootmem_core(NODE_DATA(0))); |
| 383 | } | 391 | } |
| 384 | 392 | ||
| 385 | void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned long goal) | 393 | void * __init __alloc_bootmem_limit (unsigned long size, unsigned long align, unsigned long goal, |
| 394 | unsigned long limit) | ||
| 386 | { | 395 | { |
| 387 | pg_data_t *pgdat = pgdat_list; | 396 | pg_data_t *pgdat = pgdat_list; |
| 388 | void *ptr; | 397 | void *ptr; |
| 389 | 398 | ||
| 390 | for_each_pgdat(pgdat) | 399 | for_each_pgdat(pgdat) |
| 391 | if ((ptr = __alloc_bootmem_core(pgdat->bdata, size, | 400 | if ((ptr = __alloc_bootmem_core(pgdat->bdata, size, |
| 392 | align, goal))) | 401 | align, goal, limit))) |
| 393 | return(ptr); | 402 | return(ptr); |
| 394 | 403 | ||
| 395 | /* | 404 | /* |
| @@ -400,14 +409,16 @@ void * __init __alloc_bootmem (unsigned long size, unsigned long align, unsigned | |||
| 400 | return NULL; | 409 | return NULL; |
| 401 | } | 410 | } |
| 402 | 411 | ||
| 403 | void * __init __alloc_bootmem_node (pg_data_t *pgdat, unsigned long size, unsigned long align, unsigned long goal) | 412 | |
| 413 | void * __init __alloc_bootmem_node_limit (pg_data_t *pgdat, unsigned long size, unsigned long align, | ||
| 414 | unsigned long goal, unsigned long limit) | ||
| 404 | { | 415 | { |
| 405 | void *ptr; | 416 | void *ptr; |
| 406 | 417 | ||
| 407 | ptr = __alloc_bootmem_core(pgdat->bdata, size, align, goal); | 418 | ptr = __alloc_bootmem_core(pgdat->bdata, size, align, goal, limit); |
| 408 | if (ptr) | 419 | if (ptr) |
| 409 | return (ptr); | 420 | return (ptr); |
| 410 | 421 | ||
| 411 | return __alloc_bootmem(size, align, goal); | 422 | return __alloc_bootmem_limit(size, align, goal, limit); |
| 412 | } | 423 | } |
| 413 | 424 | ||
diff --git a/mm/fremap.c b/mm/fremap.c index 3235fb77c133..ab23a0673c35 100644 --- a/mm/fremap.c +++ b/mm/fremap.c | |||
| @@ -89,6 +89,9 @@ int install_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
| 89 | size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; | 89 | size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; |
| 90 | if (!page->mapping || page->index >= size) | 90 | if (!page->mapping || page->index >= size) |
| 91 | goto err_unlock; | 91 | goto err_unlock; |
| 92 | err = -ENOMEM; | ||
| 93 | if (page_mapcount(page) > INT_MAX/2) | ||
| 94 | goto err_unlock; | ||
| 92 | 95 | ||
| 93 | zap_pte(mm, vma, addr, pte); | 96 | zap_pte(mm, vma, addr, pte); |
| 94 | 97 | ||
diff --git a/mm/highmem.c b/mm/highmem.c index 400911599468..90e1861e2da0 100644 --- a/mm/highmem.c +++ b/mm/highmem.c | |||
| @@ -30,7 +30,7 @@ | |||
| 30 | 30 | ||
| 31 | static mempool_t *page_pool, *isa_page_pool; | 31 | static mempool_t *page_pool, *isa_page_pool; |
| 32 | 32 | ||
| 33 | static void *page_pool_alloc(unsigned int __nocast gfp_mask, void *data) | 33 | static void *page_pool_alloc(gfp_t gfp_mask, void *data) |
| 34 | { | 34 | { |
| 35 | unsigned int gfp = gfp_mask | (unsigned int) (long) data; | 35 | unsigned int gfp = gfp_mask | (unsigned int) (long) data; |
| 36 | 36 | ||
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 901ac523a1c3..61d380678030 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
| @@ -274,21 +274,22 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src, | |||
| 274 | { | 274 | { |
| 275 | pte_t *src_pte, *dst_pte, entry; | 275 | pte_t *src_pte, *dst_pte, entry; |
| 276 | struct page *ptepage; | 276 | struct page *ptepage; |
| 277 | unsigned long addr = vma->vm_start; | 277 | unsigned long addr; |
| 278 | unsigned long end = vma->vm_end; | ||
| 279 | 278 | ||
| 280 | while (addr < end) { | 279 | for (addr = vma->vm_start; addr < vma->vm_end; addr += HPAGE_SIZE) { |
| 281 | dst_pte = huge_pte_alloc(dst, addr); | 280 | dst_pte = huge_pte_alloc(dst, addr); |
| 282 | if (!dst_pte) | 281 | if (!dst_pte) |
| 283 | goto nomem; | 282 | goto nomem; |
| 283 | spin_lock(&src->page_table_lock); | ||
| 284 | src_pte = huge_pte_offset(src, addr); | 284 | src_pte = huge_pte_offset(src, addr); |
| 285 | BUG_ON(!src_pte || pte_none(*src_pte)); /* prefaulted */ | 285 | if (src_pte && !pte_none(*src_pte)) { |
| 286 | entry = *src_pte; | 286 | entry = *src_pte; |
| 287 | ptepage = pte_page(entry); | 287 | ptepage = pte_page(entry); |
| 288 | get_page(ptepage); | 288 | get_page(ptepage); |
| 289 | add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE); | 289 | add_mm_counter(dst, rss, HPAGE_SIZE / PAGE_SIZE); |
| 290 | set_huge_pte_at(dst, addr, dst_pte, entry); | 290 | set_huge_pte_at(dst, addr, dst_pte, entry); |
| 291 | addr += HPAGE_SIZE; | 291 | } |
| 292 | spin_unlock(&src->page_table_lock); | ||
| 292 | } | 293 | } |
| 293 | return 0; | 294 | return 0; |
| 294 | 295 | ||
| @@ -323,8 +324,8 @@ void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start, | |||
| 323 | 324 | ||
| 324 | page = pte_page(pte); | 325 | page = pte_page(pte); |
| 325 | put_page(page); | 326 | put_page(page); |
| 327 | add_mm_counter(mm, rss, - (HPAGE_SIZE / PAGE_SIZE)); | ||
| 326 | } | 328 | } |
| 327 | add_mm_counter(mm, rss, -((end - start) >> PAGE_SHIFT)); | ||
| 328 | flush_tlb_range(vma, start, end); | 329 | flush_tlb_range(vma, start, end); |
| 329 | } | 330 | } |
| 330 | 331 | ||
| @@ -393,6 +394,28 @@ out: | |||
| 393 | return ret; | 394 | return ret; |
| 394 | } | 395 | } |
| 395 | 396 | ||
| 397 | /* | ||
| 398 | * On ia64 at least, it is possible to receive a hugetlb fault from a | ||
| 399 | * stale zero entry left in the TLB from earlier hardware prefetching. | ||
| 400 | * Low-level arch code should already have flushed the stale entry as | ||
| 401 | * part of its fault handling, but we do need to accept this minor fault | ||
| 402 | * and return successfully. Whereas the "normal" case is that this is | ||
| 403 | * an access to a hugetlb page which has been truncated off since mmap. | ||
| 404 | */ | ||
| 405 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | ||
| 406 | unsigned long address, int write_access) | ||
| 407 | { | ||
| 408 | int ret = VM_FAULT_SIGBUS; | ||
| 409 | pte_t *pte; | ||
| 410 | |||
| 411 | spin_lock(&mm->page_table_lock); | ||
| 412 | pte = huge_pte_offset(mm, address); | ||
| 413 | if (pte && !pte_none(*pte)) | ||
| 414 | ret = VM_FAULT_MINOR; | ||
| 415 | spin_unlock(&mm->page_table_lock); | ||
| 416 | return ret; | ||
| 417 | } | ||
| 418 | |||
| 396 | int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, | 419 | int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, |
| 397 | struct page **pages, struct vm_area_struct **vmas, | 420 | struct page **pages, struct vm_area_struct **vmas, |
| 398 | unsigned long *position, int *length, int i) | 421 | unsigned long *position, int *length, int i) |
| @@ -403,6 +426,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
| 403 | BUG_ON(!is_vm_hugetlb_page(vma)); | 426 | BUG_ON(!is_vm_hugetlb_page(vma)); |
| 404 | 427 | ||
| 405 | vpfn = vaddr/PAGE_SIZE; | 428 | vpfn = vaddr/PAGE_SIZE; |
| 429 | spin_lock(&mm->page_table_lock); | ||
| 406 | while (vaddr < vma->vm_end && remainder) { | 430 | while (vaddr < vma->vm_end && remainder) { |
| 407 | 431 | ||
| 408 | if (pages) { | 432 | if (pages) { |
| @@ -415,8 +439,13 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
| 415 | * indexing below to work. */ | 439 | * indexing below to work. */ |
| 416 | pte = huge_pte_offset(mm, vaddr & HPAGE_MASK); | 440 | pte = huge_pte_offset(mm, vaddr & HPAGE_MASK); |
| 417 | 441 | ||
| 418 | /* hugetlb should be locked, and hence, prefaulted */ | 442 | /* the hugetlb file might have been truncated */ |
| 419 | WARN_ON(!pte || pte_none(*pte)); | 443 | if (!pte || pte_none(*pte)) { |
| 444 | remainder = 0; | ||
| 445 | if (!i) | ||
| 446 | i = -EFAULT; | ||
| 447 | break; | ||
| 448 | } | ||
| 420 | 449 | ||
| 421 | page = &pte_page(*pte)[vpfn % (HPAGE_SIZE/PAGE_SIZE)]; | 450 | page = &pte_page(*pte)[vpfn % (HPAGE_SIZE/PAGE_SIZE)]; |
| 422 | 451 | ||
| @@ -434,7 +463,7 @@ int follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, | |||
| 434 | --remainder; | 463 | --remainder; |
| 435 | ++i; | 464 | ++i; |
| 436 | } | 465 | } |
| 437 | 466 | spin_unlock(&mm->page_table_lock); | |
| 438 | *length = remainder; | 467 | *length = remainder; |
| 439 | *position = vaddr; | 468 | *position = vaddr; |
| 440 | 469 | ||
diff --git a/mm/madvise.c b/mm/madvise.c index 4454936f87d1..20e075d1c64c 100644 --- a/mm/madvise.c +++ b/mm/madvise.c | |||
| @@ -83,6 +83,9 @@ static long madvise_willneed(struct vm_area_struct * vma, | |||
| 83 | { | 83 | { |
| 84 | struct file *file = vma->vm_file; | 84 | struct file *file = vma->vm_file; |
| 85 | 85 | ||
| 86 | if (!file) | ||
| 87 | return -EBADF; | ||
| 88 | |||
| 86 | if (file->f_mapping->a_ops->get_xip_page) { | 89 | if (file->f_mapping->a_ops->get_xip_page) { |
| 87 | /* no bad return value, but ignore advice */ | 90 | /* no bad return value, but ignore advice */ |
| 88 | return 0; | 91 | return 0; |
| @@ -141,11 +144,7 @@ static long | |||
| 141 | madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev, | 144 | madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev, |
| 142 | unsigned long start, unsigned long end, int behavior) | 145 | unsigned long start, unsigned long end, int behavior) |
| 143 | { | 146 | { |
| 144 | struct file *filp = vma->vm_file; | 147 | long error; |
| 145 | long error = -EBADF; | ||
| 146 | |||
| 147 | if (!filp) | ||
| 148 | goto out; | ||
| 149 | 148 | ||
| 150 | switch (behavior) { | 149 | switch (behavior) { |
| 151 | case MADV_NORMAL: | 150 | case MADV_NORMAL: |
| @@ -166,8 +165,6 @@ madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev, | |||
| 166 | error = -EINVAL; | 165 | error = -EINVAL; |
| 167 | break; | 166 | break; |
| 168 | } | 167 | } |
| 169 | |||
| 170 | out: | ||
| 171 | return error; | 168 | return error; |
| 172 | } | 169 | } |
| 173 | 170 | ||
diff --git a/mm/memory.c b/mm/memory.c index ae8161f1f459..1db40e935e55 100644 --- a/mm/memory.c +++ b/mm/memory.c | |||
| @@ -2045,8 +2045,8 @@ int __handle_mm_fault(struct mm_struct *mm, struct vm_area_struct * vma, | |||
| 2045 | 2045 | ||
| 2046 | inc_page_state(pgfault); | 2046 | inc_page_state(pgfault); |
| 2047 | 2047 | ||
| 2048 | if (is_vm_hugetlb_page(vma)) | 2048 | if (unlikely(is_vm_hugetlb_page(vma))) |
| 2049 | return VM_FAULT_SIGBUS; /* mapping truncation does this. */ | 2049 | return hugetlb_fault(mm, vma, address, write_access); |
| 2050 | 2050 | ||
| 2051 | /* | 2051 | /* |
| 2052 | * We need the page table lock to synchronize with kswapd | 2052 | * We need the page table lock to synchronize with kswapd |
diff --git a/mm/mempolicy.c b/mm/mempolicy.c index 9033f0859aa8..37af443eb094 100644 --- a/mm/mempolicy.c +++ b/mm/mempolicy.c | |||
| @@ -687,7 +687,7 @@ get_vma_policy(struct task_struct *task, struct vm_area_struct *vma, unsigned lo | |||
| 687 | } | 687 | } |
| 688 | 688 | ||
| 689 | /* Return a zonelist representing a mempolicy */ | 689 | /* Return a zonelist representing a mempolicy */ |
| 690 | static struct zonelist *zonelist_policy(unsigned int __nocast gfp, struct mempolicy *policy) | 690 | static struct zonelist *zonelist_policy(gfp_t gfp, struct mempolicy *policy) |
| 691 | { | 691 | { |
| 692 | int nd; | 692 | int nd; |
| 693 | 693 | ||
| @@ -751,7 +751,7 @@ static unsigned offset_il_node(struct mempolicy *pol, | |||
| 751 | 751 | ||
| 752 | /* Allocate a page in interleaved policy. | 752 | /* Allocate a page in interleaved policy. |
| 753 | Own path because it needs to do special accounting. */ | 753 | Own path because it needs to do special accounting. */ |
| 754 | static struct page *alloc_page_interleave(unsigned int __nocast gfp, unsigned order, unsigned nid) | 754 | static struct page *alloc_page_interleave(gfp_t gfp, unsigned order, unsigned nid) |
| 755 | { | 755 | { |
| 756 | struct zonelist *zl; | 756 | struct zonelist *zl; |
| 757 | struct page *page; | 757 | struct page *page; |
| @@ -789,7 +789,7 @@ static struct page *alloc_page_interleave(unsigned int __nocast gfp, unsigned or | |||
| 789 | * Should be called with the mm_sem of the vma hold. | 789 | * Should be called with the mm_sem of the vma hold. |
| 790 | */ | 790 | */ |
| 791 | struct page * | 791 | struct page * |
| 792 | alloc_page_vma(unsigned int __nocast gfp, struct vm_area_struct *vma, unsigned long addr) | 792 | alloc_page_vma(gfp_t gfp, struct vm_area_struct *vma, unsigned long addr) |
| 793 | { | 793 | { |
| 794 | struct mempolicy *pol = get_vma_policy(current, vma, addr); | 794 | struct mempolicy *pol = get_vma_policy(current, vma, addr); |
| 795 | 795 | ||
| @@ -832,7 +832,7 @@ alloc_page_vma(unsigned int __nocast gfp, struct vm_area_struct *vma, unsigned l | |||
| 832 | * 1) it's ok to take cpuset_sem (can WAIT), and | 832 | * 1) it's ok to take cpuset_sem (can WAIT), and |
| 833 | * 2) allocating for current task (not interrupt). | 833 | * 2) allocating for current task (not interrupt). |
| 834 | */ | 834 | */ |
| 835 | struct page *alloc_pages_current(unsigned int __nocast gfp, unsigned order) | 835 | struct page *alloc_pages_current(gfp_t gfp, unsigned order) |
| 836 | { | 836 | { |
| 837 | struct mempolicy *pol = current->mempolicy; | 837 | struct mempolicy *pol = current->mempolicy; |
| 838 | 838 | ||
diff --git a/mm/mempool.c b/mm/mempool.c index 65f2957b8d51..9e377ea700b2 100644 --- a/mm/mempool.c +++ b/mm/mempool.c | |||
| @@ -112,7 +112,7 @@ EXPORT_SYMBOL(mempool_create_node); | |||
| 112 | * while this function is running. mempool_alloc() & mempool_free() | 112 | * while this function is running. mempool_alloc() & mempool_free() |
| 113 | * might be called (eg. from IRQ contexts) while this function executes. | 113 | * might be called (eg. from IRQ contexts) while this function executes. |
| 114 | */ | 114 | */ |
| 115 | int mempool_resize(mempool_t *pool, int new_min_nr, unsigned int __nocast gfp_mask) | 115 | int mempool_resize(mempool_t *pool, int new_min_nr, gfp_t gfp_mask) |
| 116 | { | 116 | { |
| 117 | void *element; | 117 | void *element; |
| 118 | void **new_elements; | 118 | void **new_elements; |
| @@ -200,7 +200,7 @@ EXPORT_SYMBOL(mempool_destroy); | |||
| 200 | * *never* fails when called from process contexts. (it might | 200 | * *never* fails when called from process contexts. (it might |
| 201 | * fail if called from an IRQ context.) | 201 | * fail if called from an IRQ context.) |
| 202 | */ | 202 | */ |
| 203 | void * mempool_alloc(mempool_t *pool, unsigned int __nocast gfp_mask) | 203 | void * mempool_alloc(mempool_t *pool, gfp_t gfp_mask) |
| 204 | { | 204 | { |
| 205 | void *element; | 205 | void *element; |
| 206 | unsigned long flags; | 206 | unsigned long flags; |
| @@ -276,7 +276,7 @@ EXPORT_SYMBOL(mempool_free); | |||
| 276 | /* | 276 | /* |
| 277 | * A commonly used alloc and free fn. | 277 | * A commonly used alloc and free fn. |
| 278 | */ | 278 | */ |
| 279 | void *mempool_alloc_slab(unsigned int __nocast gfp_mask, void *pool_data) | 279 | void *mempool_alloc_slab(gfp_t gfp_mask, void *pool_data) |
| 280 | { | 280 | { |
| 281 | kmem_cache_t *mem = (kmem_cache_t *) pool_data; | 281 | kmem_cache_t *mem = (kmem_cache_t *) pool_data; |
| 282 | return kmem_cache_alloc(mem, gfp_mask); | 282 | return kmem_cache_alloc(mem, gfp_mask); |
diff --git a/mm/nommu.c b/mm/nommu.c index 064d70442895..0ef241ae3763 100644 --- a/mm/nommu.c +++ b/mm/nommu.c | |||
| @@ -157,8 +157,7 @@ void vfree(void *addr) | |||
| 157 | kfree(addr); | 157 | kfree(addr); |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | void *__vmalloc(unsigned long size, unsigned int __nocast gfp_mask, | 160 | void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot) |
| 161 | pgprot_t prot) | ||
| 162 | { | 161 | { |
| 163 | /* | 162 | /* |
| 164 | * kmalloc doesn't like __GFP_HIGHMEM for some reason | 163 | * kmalloc doesn't like __GFP_HIGHMEM for some reason |
diff --git a/mm/oom_kill.c b/mm/oom_kill.c index ac3bf33e5370..d348b9035955 100644 --- a/mm/oom_kill.c +++ b/mm/oom_kill.c | |||
| @@ -263,7 +263,7 @@ static struct mm_struct *oom_kill_process(struct task_struct *p) | |||
| 263 | * OR try to be smart about which process to kill. Note that we | 263 | * OR try to be smart about which process to kill. Note that we |
| 264 | * don't have to be perfect here, we just have to be good. | 264 | * don't have to be perfect here, we just have to be good. |
| 265 | */ | 265 | */ |
| 266 | void out_of_memory(unsigned int __nocast gfp_mask, int order) | 266 | void out_of_memory(gfp_t gfp_mask, int order) |
| 267 | { | 267 | { |
| 268 | struct mm_struct *mm = NULL; | 268 | struct mm_struct *mm = NULL; |
| 269 | task_t * p; | 269 | task_t * p; |
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index ae2903339e71..e1d3d77f4aee 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
| @@ -671,7 +671,7 @@ void fastcall free_cold_page(struct page *page) | |||
| 671 | free_hot_cold_page(page, 1); | 671 | free_hot_cold_page(page, 1); |
| 672 | } | 672 | } |
| 673 | 673 | ||
| 674 | static inline void prep_zero_page(struct page *page, int order, unsigned int __nocast gfp_flags) | 674 | static inline void prep_zero_page(struct page *page, int order, gfp_t gfp_flags) |
| 675 | { | 675 | { |
| 676 | int i; | 676 | int i; |
| 677 | 677 | ||
| @@ -686,7 +686,7 @@ static inline void prep_zero_page(struct page *page, int order, unsigned int __n | |||
| 686 | * or two. | 686 | * or two. |
| 687 | */ | 687 | */ |
| 688 | static struct page * | 688 | static struct page * |
| 689 | buffered_rmqueue(struct zone *zone, int order, unsigned int __nocast gfp_flags) | 689 | buffered_rmqueue(struct zone *zone, int order, gfp_t gfp_flags) |
| 690 | { | 690 | { |
| 691 | unsigned long flags; | 691 | unsigned long flags; |
| 692 | struct page *page = NULL; | 692 | struct page *page = NULL; |
| @@ -761,7 +761,7 @@ int zone_watermark_ok(struct zone *z, int order, unsigned long mark, | |||
| 761 | } | 761 | } |
| 762 | 762 | ||
| 763 | static inline int | 763 | static inline int |
| 764 | should_reclaim_zone(struct zone *z, unsigned int gfp_mask) | 764 | should_reclaim_zone(struct zone *z, gfp_t gfp_mask) |
| 765 | { | 765 | { |
| 766 | if (!z->reclaim_pages) | 766 | if (!z->reclaim_pages) |
| 767 | return 0; | 767 | return 0; |
| @@ -774,7 +774,7 @@ should_reclaim_zone(struct zone *z, unsigned int gfp_mask) | |||
| 774 | * This is the 'heart' of the zoned buddy allocator. | 774 | * This is the 'heart' of the zoned buddy allocator. |
| 775 | */ | 775 | */ |
| 776 | struct page * fastcall | 776 | struct page * fastcall |
| 777 | __alloc_pages(unsigned int __nocast gfp_mask, unsigned int order, | 777 | __alloc_pages(gfp_t gfp_mask, unsigned int order, |
| 778 | struct zonelist *zonelist) | 778 | struct zonelist *zonelist) |
| 779 | { | 779 | { |
| 780 | const int wait = gfp_mask & __GFP_WAIT; | 780 | const int wait = gfp_mask & __GFP_WAIT; |
| @@ -977,7 +977,7 @@ EXPORT_SYMBOL(__alloc_pages); | |||
| 977 | /* | 977 | /* |
| 978 | * Common helper functions. | 978 | * Common helper functions. |
| 979 | */ | 979 | */ |
| 980 | fastcall unsigned long __get_free_pages(unsigned int __nocast gfp_mask, unsigned int order) | 980 | fastcall unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order) |
| 981 | { | 981 | { |
| 982 | struct page * page; | 982 | struct page * page; |
| 983 | page = alloc_pages(gfp_mask, order); | 983 | page = alloc_pages(gfp_mask, order); |
| @@ -988,7 +988,7 @@ fastcall unsigned long __get_free_pages(unsigned int __nocast gfp_mask, unsigned | |||
| 988 | 988 | ||
| 989 | EXPORT_SYMBOL(__get_free_pages); | 989 | EXPORT_SYMBOL(__get_free_pages); |
| 990 | 990 | ||
| 991 | fastcall unsigned long get_zeroed_page(unsigned int __nocast gfp_mask) | 991 | fastcall unsigned long get_zeroed_page(gfp_t gfp_mask) |
| 992 | { | 992 | { |
| 993 | struct page * page; | 993 | struct page * page; |
| 994 | 994 | ||
| @@ -1750,6 +1750,8 @@ inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch) | |||
| 1750 | { | 1750 | { |
| 1751 | struct per_cpu_pages *pcp; | 1751 | struct per_cpu_pages *pcp; |
| 1752 | 1752 | ||
| 1753 | memset(p, 0, sizeof(*p)); | ||
| 1754 | |||
| 1753 | pcp = &p->pcp[0]; /* hot */ | 1755 | pcp = &p->pcp[0]; /* hot */ |
| 1754 | pcp->count = 0; | 1756 | pcp->count = 0; |
| 1755 | pcp->low = 2 * batch; | 1757 | pcp->low = 2 * batch; |
diff --git a/mm/page_io.c b/mm/page_io.c index 2e605a19ce57..330e00d6db00 100644 --- a/mm/page_io.c +++ b/mm/page_io.c | |||
| @@ -19,7 +19,7 @@ | |||
| 19 | #include <linux/writeback.h> | 19 | #include <linux/writeback.h> |
| 20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
| 21 | 21 | ||
| 22 | static struct bio *get_swap_bio(unsigned int __nocast gfp_flags, pgoff_t index, | 22 | static struct bio *get_swap_bio(gfp_t gfp_flags, pgoff_t index, |
| 23 | struct page *page, bio_end_io_t end_io) | 23 | struct page *page, bio_end_io_t end_io) |
| 24 | { | 24 | { |
| 25 | struct bio *bio; | 25 | struct bio *bio; |
diff --git a/mm/shmem.c b/mm/shmem.c index 1f7aeb210c7b..ea064d89cda9 100644 --- a/mm/shmem.c +++ b/mm/shmem.c | |||
| @@ -921,8 +921,7 @@ shmem_swapin(struct shmem_inode_info *info,swp_entry_t entry,unsigned long idx) | |||
| 921 | } | 921 | } |
| 922 | 922 | ||
| 923 | static inline struct page * | 923 | static inline struct page * |
| 924 | shmem_alloc_page(unsigned int __nocast gfp,struct shmem_inode_info *info, | 924 | shmem_alloc_page(gfp_t gfp,struct shmem_inode_info *info, unsigned long idx) |
| 925 | unsigned long idx) | ||
| 926 | { | 925 | { |
| 927 | return alloc_page(gfp | __GFP_ZERO); | 926 | return alloc_page(gfp | __GFP_ZERO); |
| 928 | } | 927 | } |
| @@ -650,8 +650,7 @@ static inline struct array_cache *ac_data(kmem_cache_t *cachep) | |||
| 650 | return cachep->array[smp_processor_id()]; | 650 | return cachep->array[smp_processor_id()]; |
| 651 | } | 651 | } |
| 652 | 652 | ||
| 653 | static inline kmem_cache_t *__find_general_cachep(size_t size, | 653 | static inline kmem_cache_t *__find_general_cachep(size_t size, gfp_t gfpflags) |
| 654 | unsigned int __nocast gfpflags) | ||
| 655 | { | 654 | { |
| 656 | struct cache_sizes *csizep = malloc_sizes; | 655 | struct cache_sizes *csizep = malloc_sizes; |
| 657 | 656 | ||
| @@ -675,8 +674,7 @@ static inline kmem_cache_t *__find_general_cachep(size_t size, | |||
| 675 | return csizep->cs_cachep; | 674 | return csizep->cs_cachep; |
| 676 | } | 675 | } |
| 677 | 676 | ||
| 678 | kmem_cache_t *kmem_find_general_cachep(size_t size, | 677 | kmem_cache_t *kmem_find_general_cachep(size_t size, gfp_t gfpflags) |
| 679 | unsigned int __nocast gfpflags) | ||
| 680 | { | 678 | { |
| 681 | return __find_general_cachep(size, gfpflags); | 679 | return __find_general_cachep(size, gfpflags); |
| 682 | } | 680 | } |
| @@ -1185,7 +1183,7 @@ __initcall(cpucache_init); | |||
| 1185 | * did not request dmaable memory, we might get it, but that | 1183 | * did not request dmaable memory, we might get it, but that |
| 1186 | * would be relatively rare and ignorable. | 1184 | * would be relatively rare and ignorable. |
| 1187 | */ | 1185 | */ |
| 1188 | static void *kmem_getpages(kmem_cache_t *cachep, unsigned int __nocast flags, int nodeid) | 1186 | static void *kmem_getpages(kmem_cache_t *cachep, gfp_t flags, int nodeid) |
| 1189 | { | 1187 | { |
| 1190 | struct page *page; | 1188 | struct page *page; |
| 1191 | void *addr; | 1189 | void *addr; |
| @@ -2048,7 +2046,7 @@ EXPORT_SYMBOL(kmem_cache_destroy); | |||
| 2048 | 2046 | ||
| 2049 | /* Get the memory for a slab management obj. */ | 2047 | /* Get the memory for a slab management obj. */ |
| 2050 | static struct slab* alloc_slabmgmt(kmem_cache_t *cachep, void *objp, | 2048 | static struct slab* alloc_slabmgmt(kmem_cache_t *cachep, void *objp, |
| 2051 | int colour_off, unsigned int __nocast local_flags) | 2049 | int colour_off, gfp_t local_flags) |
| 2052 | { | 2050 | { |
| 2053 | struct slab *slabp; | 2051 | struct slab *slabp; |
| 2054 | 2052 | ||
| @@ -2149,7 +2147,7 @@ static void set_slab_attr(kmem_cache_t *cachep, struct slab *slabp, void *objp) | |||
| 2149 | * Grow (by 1) the number of slabs within a cache. This is called by | 2147 | * Grow (by 1) the number of slabs within a cache. This is called by |
| 2150 | * kmem_cache_alloc() when there are no active objs left in a cache. | 2148 | * kmem_cache_alloc() when there are no active objs left in a cache. |
| 2151 | */ | 2149 | */ |
| 2152 | static int cache_grow(kmem_cache_t *cachep, unsigned int __nocast flags, int nodeid) | 2150 | static int cache_grow(kmem_cache_t *cachep, gfp_t flags, int nodeid) |
| 2153 | { | 2151 | { |
| 2154 | struct slab *slabp; | 2152 | struct slab *slabp; |
| 2155 | void *objp; | 2153 | void *objp; |
| @@ -2356,7 +2354,7 @@ bad: | |||
| 2356 | #define check_slabp(x,y) do { } while(0) | 2354 | #define check_slabp(x,y) do { } while(0) |
| 2357 | #endif | 2355 | #endif |
| 2358 | 2356 | ||
| 2359 | static void *cache_alloc_refill(kmem_cache_t *cachep, unsigned int __nocast flags) | 2357 | static void *cache_alloc_refill(kmem_cache_t *cachep, gfp_t flags) |
| 2360 | { | 2358 | { |
| 2361 | int batchcount; | 2359 | int batchcount; |
| 2362 | struct kmem_list3 *l3; | 2360 | struct kmem_list3 *l3; |
| @@ -2456,7 +2454,7 @@ alloc_done: | |||
| 2456 | } | 2454 | } |
| 2457 | 2455 | ||
| 2458 | static inline void | 2456 | static inline void |
| 2459 | cache_alloc_debugcheck_before(kmem_cache_t *cachep, unsigned int __nocast flags) | 2457 | cache_alloc_debugcheck_before(kmem_cache_t *cachep, gfp_t flags) |
| 2460 | { | 2458 | { |
| 2461 | might_sleep_if(flags & __GFP_WAIT); | 2459 | might_sleep_if(flags & __GFP_WAIT); |
| 2462 | #if DEBUG | 2460 | #if DEBUG |
| @@ -2467,7 +2465,7 @@ cache_alloc_debugcheck_before(kmem_cache_t *cachep, unsigned int __nocast flags) | |||
| 2467 | #if DEBUG | 2465 | #if DEBUG |
| 2468 | static void * | 2466 | static void * |
| 2469 | cache_alloc_debugcheck_after(kmem_cache_t *cachep, | 2467 | cache_alloc_debugcheck_after(kmem_cache_t *cachep, |
| 2470 | unsigned int __nocast flags, void *objp, void *caller) | 2468 | gfp_t flags, void *objp, void *caller) |
| 2471 | { | 2469 | { |
| 2472 | if (!objp) | 2470 | if (!objp) |
| 2473 | return objp; | 2471 | return objp; |
| @@ -2510,7 +2508,7 @@ cache_alloc_debugcheck_after(kmem_cache_t *cachep, | |||
| 2510 | #define cache_alloc_debugcheck_after(a,b,objp,d) (objp) | 2508 | #define cache_alloc_debugcheck_after(a,b,objp,d) (objp) |
| 2511 | #endif | 2509 | #endif |
| 2512 | 2510 | ||
| 2513 | static inline void *____cache_alloc(kmem_cache_t *cachep, unsigned int __nocast flags) | 2511 | static inline void *____cache_alloc(kmem_cache_t *cachep, gfp_t flags) |
| 2514 | { | 2512 | { |
| 2515 | void* objp; | 2513 | void* objp; |
| 2516 | struct array_cache *ac; | 2514 | struct array_cache *ac; |
| @@ -2528,7 +2526,7 @@ static inline void *____cache_alloc(kmem_cache_t *cachep, unsigned int __nocast | |||
| 2528 | return objp; | 2526 | return objp; |
| 2529 | } | 2527 | } |
| 2530 | 2528 | ||
| 2531 | static inline void *__cache_alloc(kmem_cache_t *cachep, unsigned int __nocast flags) | 2529 | static inline void *__cache_alloc(kmem_cache_t *cachep, gfp_t flags) |
| 2532 | { | 2530 | { |
| 2533 | unsigned long save_flags; | 2531 | unsigned long save_flags; |
| 2534 | void* objp; | 2532 | void* objp; |
| @@ -2787,7 +2785,7 @@ static inline void __cache_free(kmem_cache_t *cachep, void *objp) | |||
| 2787 | * Allocate an object from this cache. The flags are only relevant | 2785 | * Allocate an object from this cache. The flags are only relevant |
| 2788 | * if the cache has no available objects. | 2786 | * if the cache has no available objects. |
| 2789 | */ | 2787 | */ |
| 2790 | void *kmem_cache_alloc(kmem_cache_t *cachep, unsigned int __nocast flags) | 2788 | void *kmem_cache_alloc(kmem_cache_t *cachep, gfp_t flags) |
| 2791 | { | 2789 | { |
| 2792 | return __cache_alloc(cachep, flags); | 2790 | return __cache_alloc(cachep, flags); |
| 2793 | } | 2791 | } |
| @@ -2848,7 +2846,7 @@ out: | |||
| 2848 | * New and improved: it will now make sure that the object gets | 2846 | * New and improved: it will now make sure that the object gets |
| 2849 | * put on the correct node list so that there is no false sharing. | 2847 | * put on the correct node list so that there is no false sharing. |
| 2850 | */ | 2848 | */ |
| 2851 | void *kmem_cache_alloc_node(kmem_cache_t *cachep, unsigned int __nocast flags, int nodeid) | 2849 | void *kmem_cache_alloc_node(kmem_cache_t *cachep, gfp_t flags, int nodeid) |
| 2852 | { | 2850 | { |
| 2853 | unsigned long save_flags; | 2851 | unsigned long save_flags; |
| 2854 | void *ptr; | 2852 | void *ptr; |
| @@ -2875,7 +2873,7 @@ void *kmem_cache_alloc_node(kmem_cache_t *cachep, unsigned int __nocast flags, i | |||
| 2875 | } | 2873 | } |
| 2876 | EXPORT_SYMBOL(kmem_cache_alloc_node); | 2874 | EXPORT_SYMBOL(kmem_cache_alloc_node); |
| 2877 | 2875 | ||
| 2878 | void *kmalloc_node(size_t size, unsigned int __nocast flags, int node) | 2876 | void *kmalloc_node(size_t size, gfp_t flags, int node) |
| 2879 | { | 2877 | { |
| 2880 | kmem_cache_t *cachep; | 2878 | kmem_cache_t *cachep; |
| 2881 | 2879 | ||
| @@ -2908,7 +2906,7 @@ EXPORT_SYMBOL(kmalloc_node); | |||
| 2908 | * platforms. For example, on i386, it means that the memory must come | 2906 | * platforms. For example, on i386, it means that the memory must come |
| 2909 | * from the first 16MB. | 2907 | * from the first 16MB. |
| 2910 | */ | 2908 | */ |
| 2911 | void *__kmalloc(size_t size, unsigned int __nocast flags) | 2909 | void *__kmalloc(size_t size, gfp_t flags) |
| 2912 | { | 2910 | { |
| 2913 | kmem_cache_t *cachep; | 2911 | kmem_cache_t *cachep; |
| 2914 | 2912 | ||
| @@ -2997,7 +2995,7 @@ EXPORT_SYMBOL(kmem_cache_free); | |||
| 2997 | * @size: how many bytes of memory are required. | 2995 | * @size: how many bytes of memory are required. |
| 2998 | * @flags: the type of memory to allocate. | 2996 | * @flags: the type of memory to allocate. |
| 2999 | */ | 2997 | */ |
| 3000 | void *kzalloc(size_t size, unsigned int __nocast flags) | 2998 | void *kzalloc(size_t size, gfp_t flags) |
| 3001 | { | 2999 | { |
| 3002 | void *ret = kmalloc(size, flags); | 3000 | void *ret = kmalloc(size, flags); |
| 3003 | if (ret) | 3001 | if (ret) |
| @@ -3603,7 +3601,7 @@ unsigned int ksize(const void *objp) | |||
| 3603 | * @s: the string to duplicate | 3601 | * @s: the string to duplicate |
| 3604 | * @gfp: the GFP mask used in the kmalloc() call when allocating memory | 3602 | * @gfp: the GFP mask used in the kmalloc() call when allocating memory |
| 3605 | */ | 3603 | */ |
| 3606 | char *kstrdup(const char *s, unsigned int __nocast gfp) | 3604 | char *kstrdup(const char *s, gfp_t gfp) |
| 3607 | { | 3605 | { |
| 3608 | size_t len; | 3606 | size_t len; |
| 3609 | char *buf; | 3607 | char *buf; |
diff --git a/mm/swap_state.c b/mm/swap_state.c index adbc2b426c2f..132164f7d0a7 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c | |||
| @@ -68,7 +68,7 @@ void show_swap_cache_info(void) | |||
| 68 | * but sets SwapCache flag and private instead of mapping and index. | 68 | * but sets SwapCache flag and private instead of mapping and index. |
| 69 | */ | 69 | */ |
| 70 | static int __add_to_swap_cache(struct page *page, swp_entry_t entry, | 70 | static int __add_to_swap_cache(struct page *page, swp_entry_t entry, |
| 71 | unsigned int __nocast gfp_mask) | 71 | gfp_t gfp_mask) |
| 72 | { | 72 | { |
| 73 | int error; | 73 | int error; |
| 74 | 74 | ||
diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 13c3d82968ae..1150229b6366 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c | |||
| @@ -395,7 +395,7 @@ void *vmap(struct page **pages, unsigned int count, | |||
| 395 | 395 | ||
| 396 | EXPORT_SYMBOL(vmap); | 396 | EXPORT_SYMBOL(vmap); |
| 397 | 397 | ||
| 398 | void *__vmalloc_area(struct vm_struct *area, unsigned int __nocast gfp_mask, pgprot_t prot) | 398 | void *__vmalloc_area(struct vm_struct *area, gfp_t gfp_mask, pgprot_t prot) |
| 399 | { | 399 | { |
| 400 | struct page **pages; | 400 | struct page **pages; |
| 401 | unsigned int nr_pages, array_size, i; | 401 | unsigned int nr_pages, array_size, i; |
| @@ -446,7 +446,7 @@ fail: | |||
| 446 | * allocator with @gfp_mask flags. Map them into contiguous | 446 | * allocator with @gfp_mask flags. Map them into contiguous |
| 447 | * kernel virtual space, using a pagetable protection of @prot. | 447 | * kernel virtual space, using a pagetable protection of @prot. |
| 448 | */ | 448 | */ |
| 449 | void *__vmalloc(unsigned long size, unsigned int __nocast gfp_mask, pgprot_t prot) | 449 | void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot) |
| 450 | { | 450 | { |
| 451 | struct vm_struct *area; | 451 | struct vm_struct *area; |
| 452 | 452 | ||
diff --git a/mm/vmscan.c b/mm/vmscan.c index 0ea71e887bb6..64f9570cff56 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c | |||
| @@ -511,10 +511,11 @@ static int shrink_list(struct list_head *page_list, struct scan_control *sc) | |||
| 511 | * PageDirty _after_ making sure that the page is freeable and | 511 | * PageDirty _after_ making sure that the page is freeable and |
| 512 | * not in use by anybody. (pagecache + us == 2) | 512 | * not in use by anybody. (pagecache + us == 2) |
| 513 | */ | 513 | */ |
| 514 | if (page_count(page) != 2 || PageDirty(page)) { | 514 | if (unlikely(page_count(page) != 2)) |
| 515 | write_unlock_irq(&mapping->tree_lock); | 515 | goto cannot_free; |
| 516 | goto keep_locked; | 516 | smp_rmb(); |
| 517 | } | 517 | if (unlikely(PageDirty(page))) |
| 518 | goto cannot_free; | ||
| 518 | 519 | ||
| 519 | #ifdef CONFIG_SWAP | 520 | #ifdef CONFIG_SWAP |
| 520 | if (PageSwapCache(page)) { | 521 | if (PageSwapCache(page)) { |
| @@ -538,6 +539,10 @@ free_it: | |||
| 538 | __pagevec_release_nonlru(&freed_pvec); | 539 | __pagevec_release_nonlru(&freed_pvec); |
| 539 | continue; | 540 | continue; |
| 540 | 541 | ||
| 542 | cannot_free: | ||
| 543 | write_unlock_irq(&mapping->tree_lock); | ||
| 544 | goto keep_locked; | ||
| 545 | |||
| 541 | activate_locked: | 546 | activate_locked: |
| 542 | SetPageActive(page); | 547 | SetPageActive(page); |
| 543 | pgactivate++; | 548 | pgactivate++; |
diff --git a/net/802/tr.c b/net/802/tr.c index 1eaa3d19d8bf..afd8385c0c9c 100644 --- a/net/802/tr.c +++ b/net/802/tr.c | |||
| @@ -340,9 +340,10 @@ static void tr_add_rif_info(struct trh_hdr *trh, struct net_device *dev) | |||
| 340 | unsigned int hash, rii_p = 0; | 340 | unsigned int hash, rii_p = 0; |
| 341 | unsigned long flags; | 341 | unsigned long flags; |
| 342 | struct rif_cache *entry; | 342 | struct rif_cache *entry; |
| 343 | 343 | unsigned char saddr0; | |
| 344 | 344 | ||
| 345 | spin_lock_irqsave(&rif_lock, flags); | 345 | spin_lock_irqsave(&rif_lock, flags); |
| 346 | saddr0 = trh->saddr[0]; | ||
| 346 | 347 | ||
| 347 | /* | 348 | /* |
| 348 | * Firstly see if the entry exists | 349 | * Firstly see if the entry exists |
| @@ -395,7 +396,6 @@ printk("adding rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
| 395 | entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK); | 396 | entry->rcf = trh->rcf & htons((unsigned short)~TR_RCF_BROADCAST_MASK); |
| 396 | memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short)); | 397 | memcpy(&(entry->rseg[0]),&(trh->rseg[0]),8*sizeof(unsigned short)); |
| 397 | entry->local_ring = 0; | 398 | entry->local_ring = 0; |
| 398 | trh->saddr[0]|=TR_RII; /* put the routing indicator back for tcpdump */ | ||
| 399 | } | 399 | } |
| 400 | else | 400 | else |
| 401 | { | 401 | { |
| @@ -422,6 +422,7 @@ printk("updating rif_entry: addr:%02X:%02X:%02X:%02X:%02X:%02X rcf:%04X\n", | |||
| 422 | } | 422 | } |
| 423 | entry->last_used=jiffies; | 423 | entry->last_used=jiffies; |
| 424 | } | 424 | } |
| 425 | trh->saddr[0]=saddr0; /* put the routing indicator back for tcpdump */ | ||
| 425 | spin_unlock_irqrestore(&rif_lock, flags); | 426 | spin_unlock_irqrestore(&rif_lock, flags); |
| 426 | } | 427 | } |
| 427 | 428 | ||
diff --git a/net/atm/addr.c b/net/atm/addr.c index a30d0bf48063..3060fd0ba4b9 100644 --- a/net/atm/addr.c +++ b/net/atm/addr.c | |||
| @@ -44,31 +44,43 @@ static void notify_sigd(struct atm_dev *dev) | |||
| 44 | sigd_enq(NULL, as_itf_notify, NULL, &pvc, NULL); | 44 | sigd_enq(NULL, as_itf_notify, NULL, &pvc, NULL); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | void atm_reset_addr(struct atm_dev *dev) | 47 | void atm_reset_addr(struct atm_dev *dev, enum atm_addr_type_t atype) |
| 48 | { | 48 | { |
| 49 | unsigned long flags; | 49 | unsigned long flags; |
| 50 | struct atm_dev_addr *this, *p; | 50 | struct atm_dev_addr *this, *p; |
| 51 | struct list_head *head; | ||
| 51 | 52 | ||
| 52 | spin_lock_irqsave(&dev->lock, flags); | 53 | spin_lock_irqsave(&dev->lock, flags); |
| 53 | list_for_each_entry_safe(this, p, &dev->local, entry) { | 54 | if (atype == ATM_ADDR_LECS) |
| 55 | head = &dev->lecs; | ||
| 56 | else | ||
| 57 | head = &dev->local; | ||
| 58 | list_for_each_entry_safe(this, p, head, entry) { | ||
| 54 | list_del(&this->entry); | 59 | list_del(&this->entry); |
| 55 | kfree(this); | 60 | kfree(this); |
| 56 | } | 61 | } |
| 57 | spin_unlock_irqrestore(&dev->lock, flags); | 62 | spin_unlock_irqrestore(&dev->lock, flags); |
| 58 | notify_sigd(dev); | 63 | if (head == &dev->local) |
| 64 | notify_sigd(dev); | ||
| 59 | } | 65 | } |
| 60 | 66 | ||
| 61 | int atm_add_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr) | 67 | int atm_add_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr, |
| 68 | enum atm_addr_type_t atype) | ||
| 62 | { | 69 | { |
| 63 | unsigned long flags; | 70 | unsigned long flags; |
| 64 | struct atm_dev_addr *this; | 71 | struct atm_dev_addr *this; |
| 72 | struct list_head *head; | ||
| 65 | int error; | 73 | int error; |
| 66 | 74 | ||
| 67 | error = check_addr(addr); | 75 | error = check_addr(addr); |
| 68 | if (error) | 76 | if (error) |
| 69 | return error; | 77 | return error; |
| 70 | spin_lock_irqsave(&dev->lock, flags); | 78 | spin_lock_irqsave(&dev->lock, flags); |
| 71 | list_for_each_entry(this, &dev->local, entry) { | 79 | if (atype == ATM_ADDR_LECS) |
| 80 | head = &dev->lecs; | ||
| 81 | else | ||
| 82 | head = &dev->local; | ||
| 83 | list_for_each_entry(this, head, entry) { | ||
| 72 | if (identical(&this->addr, addr)) { | 84 | if (identical(&this->addr, addr)) { |
| 73 | spin_unlock_irqrestore(&dev->lock, flags); | 85 | spin_unlock_irqrestore(&dev->lock, flags); |
| 74 | return -EEXIST; | 86 | return -EEXIST; |
| @@ -80,28 +92,36 @@ int atm_add_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr) | |||
| 80 | return -ENOMEM; | 92 | return -ENOMEM; |
| 81 | } | 93 | } |
| 82 | this->addr = *addr; | 94 | this->addr = *addr; |
| 83 | list_add(&this->entry, &dev->local); | 95 | list_add(&this->entry, head); |
| 84 | spin_unlock_irqrestore(&dev->lock, flags); | 96 | spin_unlock_irqrestore(&dev->lock, flags); |
| 85 | notify_sigd(dev); | 97 | if (head == &dev->local) |
| 98 | notify_sigd(dev); | ||
| 86 | return 0; | 99 | return 0; |
| 87 | } | 100 | } |
| 88 | 101 | ||
| 89 | int atm_del_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr) | 102 | int atm_del_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr, |
| 103 | enum atm_addr_type_t atype) | ||
| 90 | { | 104 | { |
| 91 | unsigned long flags; | 105 | unsigned long flags; |
| 92 | struct atm_dev_addr *this; | 106 | struct atm_dev_addr *this; |
| 107 | struct list_head *head; | ||
| 93 | int error; | 108 | int error; |
| 94 | 109 | ||
| 95 | error = check_addr(addr); | 110 | error = check_addr(addr); |
| 96 | if (error) | 111 | if (error) |
| 97 | return error; | 112 | return error; |
| 98 | spin_lock_irqsave(&dev->lock, flags); | 113 | spin_lock_irqsave(&dev->lock, flags); |
| 99 | list_for_each_entry(this, &dev->local, entry) { | 114 | if (atype == ATM_ADDR_LECS) |
| 115 | head = &dev->lecs; | ||
| 116 | else | ||
| 117 | head = &dev->local; | ||
| 118 | list_for_each_entry(this, head, entry) { | ||
| 100 | if (identical(&this->addr, addr)) { | 119 | if (identical(&this->addr, addr)) { |
| 101 | list_del(&this->entry); | 120 | list_del(&this->entry); |
| 102 | spin_unlock_irqrestore(&dev->lock, flags); | 121 | spin_unlock_irqrestore(&dev->lock, flags); |
| 103 | kfree(this); | 122 | kfree(this); |
| 104 | notify_sigd(dev); | 123 | if (head == &dev->local) |
| 124 | notify_sigd(dev); | ||
| 105 | return 0; | 125 | return 0; |
| 106 | } | 126 | } |
| 107 | } | 127 | } |
| @@ -110,22 +130,27 @@ int atm_del_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr) | |||
| 110 | } | 130 | } |
| 111 | 131 | ||
| 112 | int atm_get_addr(struct atm_dev *dev, struct sockaddr_atmsvc __user * buf, | 132 | int atm_get_addr(struct atm_dev *dev, struct sockaddr_atmsvc __user * buf, |
| 113 | size_t size) | 133 | size_t size, enum atm_addr_type_t atype) |
| 114 | { | 134 | { |
| 115 | unsigned long flags; | 135 | unsigned long flags; |
| 116 | struct atm_dev_addr *this; | 136 | struct atm_dev_addr *this; |
| 137 | struct list_head *head; | ||
| 117 | int total = 0, error; | 138 | int total = 0, error; |
| 118 | struct sockaddr_atmsvc *tmp_buf, *tmp_bufp; | 139 | struct sockaddr_atmsvc *tmp_buf, *tmp_bufp; |
| 119 | 140 | ||
| 120 | spin_lock_irqsave(&dev->lock, flags); | 141 | spin_lock_irqsave(&dev->lock, flags); |
| 121 | list_for_each_entry(this, &dev->local, entry) | 142 | if (atype == ATM_ADDR_LECS) |
| 143 | head = &dev->lecs; | ||
| 144 | else | ||
| 145 | head = &dev->local; | ||
| 146 | list_for_each_entry(this, head, entry) | ||
| 122 | total += sizeof(struct sockaddr_atmsvc); | 147 | total += sizeof(struct sockaddr_atmsvc); |
| 123 | tmp_buf = tmp_bufp = kmalloc(total, GFP_ATOMIC); | 148 | tmp_buf = tmp_bufp = kmalloc(total, GFP_ATOMIC); |
| 124 | if (!tmp_buf) { | 149 | if (!tmp_buf) { |
| 125 | spin_unlock_irqrestore(&dev->lock, flags); | 150 | spin_unlock_irqrestore(&dev->lock, flags); |
| 126 | return -ENOMEM; | 151 | return -ENOMEM; |
| 127 | } | 152 | } |
| 128 | list_for_each_entry(this, &dev->local, entry) | 153 | list_for_each_entry(this, head, entry) |
| 129 | memcpy(tmp_bufp++, &this->addr, sizeof(struct sockaddr_atmsvc)); | 154 | memcpy(tmp_bufp++, &this->addr, sizeof(struct sockaddr_atmsvc)); |
| 130 | spin_unlock_irqrestore(&dev->lock, flags); | 155 | spin_unlock_irqrestore(&dev->lock, flags); |
| 131 | error = total > size ? -E2BIG : total; | 156 | error = total > size ? -E2BIG : total; |
diff --git a/net/atm/addr.h b/net/atm/addr.h index 3099d21feeaa..f39433ad45da 100644 --- a/net/atm/addr.h +++ b/net/atm/addr.h | |||
| @@ -9,10 +9,12 @@ | |||
| 9 | #include <linux/atm.h> | 9 | #include <linux/atm.h> |
| 10 | #include <linux/atmdev.h> | 10 | #include <linux/atmdev.h> |
| 11 | 11 | ||
| 12 | 12 | void atm_reset_addr(struct atm_dev *dev, enum atm_addr_type_t type); | |
| 13 | void atm_reset_addr(struct atm_dev *dev); | 13 | int atm_add_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr, |
| 14 | int atm_add_addr(struct atm_dev *dev,struct sockaddr_atmsvc *addr); | 14 | enum atm_addr_type_t type); |
| 15 | int atm_del_addr(struct atm_dev *dev,struct sockaddr_atmsvc *addr); | 15 | int atm_del_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr, |
| 16 | int atm_get_addr(struct atm_dev *dev,struct sockaddr_atmsvc __user *buf,size_t size); | 16 | enum atm_addr_type_t type); |
| 17 | int atm_get_addr(struct atm_dev *dev, struct sockaddr_atmsvc __user *buf, | ||
| 18 | size_t size, enum atm_addr_type_t type); | ||
| 17 | 19 | ||
| 18 | #endif | 20 | #endif |
diff --git a/net/atm/atm_misc.c b/net/atm/atm_misc.c index b2113c3454ae..223c7ad5bd0f 100644 --- a/net/atm/atm_misc.c +++ b/net/atm/atm_misc.c | |||
| @@ -25,7 +25,7 @@ int atm_charge(struct atm_vcc *vcc,int truesize) | |||
| 25 | 25 | ||
| 26 | 26 | ||
| 27 | struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size, | 27 | struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size, |
| 28 | int gfp_flags) | 28 | gfp_t gfp_flags) |
| 29 | { | 29 | { |
| 30 | struct sock *sk = sk_atm(vcc); | 30 | struct sock *sk = sk_atm(vcc); |
| 31 | int guess = atm_guess_pdu2truesize(pdu_size); | 31 | int guess = atm_guess_pdu2truesize(pdu_size); |
diff --git a/net/atm/br2684.c b/net/atm/br2684.c index 289956c4dd3e..72f3f7b8de80 100644 --- a/net/atm/br2684.c +++ b/net/atm/br2684.c | |||
| @@ -220,7 +220,7 @@ static int br2684_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
| 220 | /* netif_stop_queue(dev); */ | 220 | /* netif_stop_queue(dev); */ |
| 221 | dev_kfree_skb(skb); | 221 | dev_kfree_skb(skb); |
| 222 | read_unlock(&devs_lock); | 222 | read_unlock(&devs_lock); |
| 223 | return -EUNATCH; | 223 | return 0; |
| 224 | } | 224 | } |
| 225 | if (!br2684_xmit_vcc(skb, brdev, brvcc)) { | 225 | if (!br2684_xmit_vcc(skb, brdev, brvcc)) { |
| 226 | /* | 226 | /* |
diff --git a/net/atm/resources.c b/net/atm/resources.c index a57a9268bd24..415d2615d475 100644 --- a/net/atm/resources.c +++ b/net/atm/resources.c | |||
| @@ -40,6 +40,7 @@ static struct atm_dev *__alloc_atm_dev(const char *type) | |||
| 40 | dev->link_rate = ATM_OC3_PCR; | 40 | dev->link_rate = ATM_OC3_PCR; |
| 41 | spin_lock_init(&dev->lock); | 41 | spin_lock_init(&dev->lock); |
| 42 | INIT_LIST_HEAD(&dev->local); | 42 | INIT_LIST_HEAD(&dev->local); |
| 43 | INIT_LIST_HEAD(&dev->lecs); | ||
| 43 | 44 | ||
| 44 | return dev; | 45 | return dev; |
| 45 | } | 46 | } |
| @@ -320,10 +321,12 @@ int atm_dev_ioctl(unsigned int cmd, void __user *arg) | |||
| 320 | error = -EPERM; | 321 | error = -EPERM; |
| 321 | goto done; | 322 | goto done; |
| 322 | } | 323 | } |
| 323 | atm_reset_addr(dev); | 324 | atm_reset_addr(dev, ATM_ADDR_LOCAL); |
| 324 | break; | 325 | break; |
| 325 | case ATM_ADDADDR: | 326 | case ATM_ADDADDR: |
| 326 | case ATM_DELADDR: | 327 | case ATM_DELADDR: |
| 328 | case ATM_ADDLECSADDR: | ||
| 329 | case ATM_DELLECSADDR: | ||
| 327 | if (!capable(CAP_NET_ADMIN)) { | 330 | if (!capable(CAP_NET_ADMIN)) { |
| 328 | error = -EPERM; | 331 | error = -EPERM; |
| 329 | goto done; | 332 | goto done; |
| @@ -335,14 +338,21 @@ int atm_dev_ioctl(unsigned int cmd, void __user *arg) | |||
| 335 | error = -EFAULT; | 338 | error = -EFAULT; |
| 336 | goto done; | 339 | goto done; |
| 337 | } | 340 | } |
| 338 | if (cmd == ATM_ADDADDR) | 341 | if (cmd == ATM_ADDADDR || cmd == ATM_ADDLECSADDR) |
| 339 | error = atm_add_addr(dev, &addr); | 342 | error = atm_add_addr(dev, &addr, |
| 343 | (cmd == ATM_ADDADDR ? | ||
| 344 | ATM_ADDR_LOCAL : ATM_ADDR_LECS)); | ||
| 340 | else | 345 | else |
| 341 | error = atm_del_addr(dev, &addr); | 346 | error = atm_del_addr(dev, &addr, |
| 347 | (cmd == ATM_DELADDR ? | ||
| 348 | ATM_ADDR_LOCAL : ATM_ADDR_LECS)); | ||
| 342 | goto done; | 349 | goto done; |
| 343 | } | 350 | } |
| 344 | case ATM_GETADDR: | 351 | case ATM_GETADDR: |
| 345 | error = atm_get_addr(dev, buf, len); | 352 | case ATM_GETLECSADDR: |
| 353 | error = atm_get_addr(dev, buf, len, | ||
| 354 | (cmd == ATM_GETADDR ? | ||
| 355 | ATM_ADDR_LOCAL : ATM_ADDR_LECS)); | ||
| 346 | if (error < 0) | 356 | if (error < 0) |
| 347 | goto done; | 357 | goto done; |
| 348 | size = error; | 358 | size = error; |
diff --git a/net/ax25/ax25_in.c b/net/ax25/ax25_in.c index 810c9c76c2e0..73cfc3411c46 100644 --- a/net/ax25/ax25_in.c +++ b/net/ax25/ax25_in.c | |||
| @@ -123,7 +123,7 @@ int ax25_rx_iframe(ax25_cb *ax25, struct sk_buff *skb) | |||
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | skb_pull(skb, 1); /* Remove PID */ | 125 | skb_pull(skb, 1); /* Remove PID */ |
| 126 | skb->h.raw = skb->data; | 126 | skb->mac.raw = skb->nh.raw; |
| 127 | skb->nh.raw = skb->data; | 127 | skb->nh.raw = skb->data; |
| 128 | skb->dev = ax25->ax25_dev->dev; | 128 | skb->dev = ax25->ax25_dev->dev; |
| 129 | skb->pkt_type = PACKET_HOST; | 129 | skb->pkt_type = PACKET_HOST; |
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index d3d6bc547212..59b2dd36baa7 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
| @@ -372,7 +372,7 @@ static struct proto l2cap_proto = { | |||
| 372 | .obj_size = sizeof(struct l2cap_pinfo) | 372 | .obj_size = sizeof(struct l2cap_pinfo) |
| 373 | }; | 373 | }; |
| 374 | 374 | ||
| 375 | static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, unsigned int __nocast prio) | 375 | static struct sock *l2cap_sock_alloc(struct socket *sock, int proto, gfp_t prio) |
| 376 | { | 376 | { |
| 377 | struct sock *sk; | 377 | struct sock *sk; |
| 378 | 378 | ||
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index 173f46e8cdae..35adce6482b6 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
| @@ -229,7 +229,7 @@ static void rfcomm_dlc_clear_state(struct rfcomm_dlc *d) | |||
| 229 | d->rx_credits = RFCOMM_DEFAULT_CREDITS; | 229 | d->rx_credits = RFCOMM_DEFAULT_CREDITS; |
| 230 | } | 230 | } |
| 231 | 231 | ||
| 232 | struct rfcomm_dlc *rfcomm_dlc_alloc(unsigned int __nocast prio) | 232 | struct rfcomm_dlc *rfcomm_dlc_alloc(gfp_t prio) |
| 233 | { | 233 | { |
| 234 | struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio); | 234 | struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio); |
| 235 | if (!d) | 235 | if (!d) |
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c index f49e7e938bfb..a2b30f0aedb7 100644 --- a/net/bluetooth/rfcomm/sock.c +++ b/net/bluetooth/rfcomm/sock.c | |||
| @@ -284,7 +284,7 @@ static struct proto rfcomm_proto = { | |||
| 284 | .obj_size = sizeof(struct rfcomm_pinfo) | 284 | .obj_size = sizeof(struct rfcomm_pinfo) |
| 285 | }; | 285 | }; |
| 286 | 286 | ||
| 287 | static struct sock *rfcomm_sock_alloc(struct socket *sock, int proto, unsigned int __nocast prio) | 287 | static struct sock *rfcomm_sock_alloc(struct socket *sock, int proto, gfp_t prio) |
| 288 | { | 288 | { |
| 289 | struct rfcomm_dlc *d; | 289 | struct rfcomm_dlc *d; |
| 290 | struct sock *sk; | 290 | struct sock *sk; |
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c index 1bca860a6109..158a9c46d863 100644 --- a/net/bluetooth/rfcomm/tty.c +++ b/net/bluetooth/rfcomm/tty.c | |||
| @@ -286,7 +286,7 @@ static inline void rfcomm_set_owner_w(struct sk_buff *skb, struct rfcomm_dev *de | |||
| 286 | skb->destructor = rfcomm_wfree; | 286 | skb->destructor = rfcomm_wfree; |
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, unsigned int __nocast priority) | 289 | static struct sk_buff *rfcomm_wmalloc(struct rfcomm_dev *dev, unsigned long size, gfp_t priority) |
| 290 | { | 290 | { |
| 291 | if (atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) { | 291 | if (atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) { |
| 292 | struct sk_buff *skb = alloc_skb(size, priority); | 292 | struct sk_buff *skb = alloc_skb(size, priority); |
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index ce7ab7dfa0b2..997e42df115c 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c | |||
| @@ -418,7 +418,7 @@ static struct proto sco_proto = { | |||
| 418 | .obj_size = sizeof(struct sco_pinfo) | 418 | .obj_size = sizeof(struct sco_pinfo) |
| 419 | }; | 419 | }; |
| 420 | 420 | ||
| 421 | static struct sock *sco_sock_alloc(struct socket *sock, int proto, unsigned int __nocast prio) | 421 | static struct sock *sco_sock_alloc(struct socket *sock, int proto, gfp_t prio) |
| 422 | { | 422 | { |
| 423 | struct sock *sk; | 423 | struct sock *sk; |
| 424 | 424 | ||
diff --git a/net/bridge/br_if.c b/net/bridge/br_if.c index 91bb895375f4..defcf6a8607c 100644 --- a/net/bridge/br_if.c +++ b/net/bridge/br_if.c | |||
| @@ -79,7 +79,6 @@ static void destroy_nbp(struct net_bridge_port *p) | |||
| 79 | { | 79 | { |
| 80 | struct net_device *dev = p->dev; | 80 | struct net_device *dev = p->dev; |
| 81 | 81 | ||
| 82 | dev->br_port = NULL; | ||
| 83 | p->br = NULL; | 82 | p->br = NULL; |
| 84 | p->dev = NULL; | 83 | p->dev = NULL; |
| 85 | dev_put(dev); | 84 | dev_put(dev); |
| @@ -100,6 +99,7 @@ static void del_nbp(struct net_bridge_port *p) | |||
| 100 | struct net_bridge *br = p->br; | 99 | struct net_bridge *br = p->br; |
| 101 | struct net_device *dev = p->dev; | 100 | struct net_device *dev = p->dev; |
| 102 | 101 | ||
| 102 | dev->br_port = NULL; | ||
| 103 | dev_set_promiscuity(dev, -1); | 103 | dev_set_promiscuity(dev, -1); |
| 104 | 104 | ||
| 105 | spin_lock_bh(&br->lock); | 105 | spin_lock_bh(&br->lock); |
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index c4540144f0f4..f8ffbf6e2333 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | #include <linux/spinlock.h> | 26 | #include <linux/spinlock.h> |
| 27 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
| 28 | #include <linux/smp.h> | 28 | #include <linux/smp.h> |
| 29 | #include <linux/cpumask.h> | ||
| 29 | #include <net/sock.h> | 30 | #include <net/sock.h> |
| 30 | /* needed for logical [in,out]-dev filtering */ | 31 | /* needed for logical [in,out]-dev filtering */ |
| 31 | #include "../br_private.h" | 32 | #include "../br_private.h" |
| @@ -823,10 +824,11 @@ static int translate_table(struct ebt_replace *repl, | |||
| 823 | /* this will get free'd in do_replace()/ebt_register_table() | 824 | /* this will get free'd in do_replace()/ebt_register_table() |
| 824 | if an error occurs */ | 825 | if an error occurs */ |
| 825 | newinfo->chainstack = (struct ebt_chainstack **) | 826 | newinfo->chainstack = (struct ebt_chainstack **) |
| 826 | vmalloc(num_possible_cpus() * sizeof(struct ebt_chainstack)); | 827 | vmalloc((highest_possible_processor_id()+1) |
| 828 | * sizeof(struct ebt_chainstack)); | ||
| 827 | if (!newinfo->chainstack) | 829 | if (!newinfo->chainstack) |
| 828 | return -ENOMEM; | 830 | return -ENOMEM; |
| 829 | for (i = 0; i < num_possible_cpus(); i++) { | 831 | for_each_cpu(i) { |
| 830 | newinfo->chainstack[i] = | 832 | newinfo->chainstack[i] = |
| 831 | vmalloc(udc_cnt * sizeof(struct ebt_chainstack)); | 833 | vmalloc(udc_cnt * sizeof(struct ebt_chainstack)); |
| 832 | if (!newinfo->chainstack[i]) { | 834 | if (!newinfo->chainstack[i]) { |
| @@ -895,9 +897,12 @@ static void get_counters(struct ebt_counter *oldcounters, | |||
| 895 | 897 | ||
| 896 | /* counters of cpu 0 */ | 898 | /* counters of cpu 0 */ |
| 897 | memcpy(counters, oldcounters, | 899 | memcpy(counters, oldcounters, |
| 898 | sizeof(struct ebt_counter) * nentries); | 900 | sizeof(struct ebt_counter) * nentries); |
| 901 | |||
| 899 | /* add other counters to those of cpu 0 */ | 902 | /* add other counters to those of cpu 0 */ |
| 900 | for (cpu = 1; cpu < num_possible_cpus(); cpu++) { | 903 | for_each_cpu(cpu) { |
| 904 | if (cpu == 0) | ||
| 905 | continue; | ||
| 901 | counter_base = COUNTER_BASE(oldcounters, nentries, cpu); | 906 | counter_base = COUNTER_BASE(oldcounters, nentries, cpu); |
| 902 | for (i = 0; i < nentries; i++) { | 907 | for (i = 0; i < nentries; i++) { |
| 903 | counters[i].pcnt += counter_base[i].pcnt; | 908 | counters[i].pcnt += counter_base[i].pcnt; |
| @@ -929,7 +934,8 @@ static int do_replace(void __user *user, unsigned int len) | |||
| 929 | BUGPRINT("Entries_size never zero\n"); | 934 | BUGPRINT("Entries_size never zero\n"); |
| 930 | return -EINVAL; | 935 | return -EINVAL; |
| 931 | } | 936 | } |
| 932 | countersize = COUNTER_OFFSET(tmp.nentries) * num_possible_cpus(); | 937 | countersize = COUNTER_OFFSET(tmp.nentries) * |
| 938 | (highest_possible_processor_id()+1); | ||
| 933 | newinfo = (struct ebt_table_info *) | 939 | newinfo = (struct ebt_table_info *) |
| 934 | vmalloc(sizeof(struct ebt_table_info) + countersize); | 940 | vmalloc(sizeof(struct ebt_table_info) + countersize); |
| 935 | if (!newinfo) | 941 | if (!newinfo) |
| @@ -1022,7 +1028,7 @@ static int do_replace(void __user *user, unsigned int len) | |||
| 1022 | 1028 | ||
| 1023 | vfree(table->entries); | 1029 | vfree(table->entries); |
| 1024 | if (table->chainstack) { | 1030 | if (table->chainstack) { |
| 1025 | for (i = 0; i < num_possible_cpus(); i++) | 1031 | for_each_cpu(i) |
| 1026 | vfree(table->chainstack[i]); | 1032 | vfree(table->chainstack[i]); |
| 1027 | vfree(table->chainstack); | 1033 | vfree(table->chainstack); |
| 1028 | } | 1034 | } |
| @@ -1040,7 +1046,7 @@ free_counterstmp: | |||
| 1040 | vfree(counterstmp); | 1046 | vfree(counterstmp); |
| 1041 | /* can be initialized in translate_table() */ | 1047 | /* can be initialized in translate_table() */ |
| 1042 | if (newinfo->chainstack) { | 1048 | if (newinfo->chainstack) { |
| 1043 | for (i = 0; i < num_possible_cpus(); i++) | 1049 | for_each_cpu(i) |
| 1044 | vfree(newinfo->chainstack[i]); | 1050 | vfree(newinfo->chainstack[i]); |
| 1045 | vfree(newinfo->chainstack); | 1051 | vfree(newinfo->chainstack); |
| 1046 | } | 1052 | } |
| @@ -1132,7 +1138,8 @@ int ebt_register_table(struct ebt_table *table) | |||
| 1132 | return -EINVAL; | 1138 | return -EINVAL; |
| 1133 | } | 1139 | } |
| 1134 | 1140 | ||
| 1135 | countersize = COUNTER_OFFSET(table->table->nentries) * num_possible_cpus(); | 1141 | countersize = COUNTER_OFFSET(table->table->nentries) * |
| 1142 | (highest_possible_processor_id()+1); | ||
| 1136 | newinfo = (struct ebt_table_info *) | 1143 | newinfo = (struct ebt_table_info *) |
| 1137 | vmalloc(sizeof(struct ebt_table_info) + countersize); | 1144 | vmalloc(sizeof(struct ebt_table_info) + countersize); |
| 1138 | ret = -ENOMEM; | 1145 | ret = -ENOMEM; |
| @@ -1186,7 +1193,7 @@ free_unlock: | |||
| 1186 | up(&ebt_mutex); | 1193 | up(&ebt_mutex); |
| 1187 | free_chainstack: | 1194 | free_chainstack: |
| 1188 | if (newinfo->chainstack) { | 1195 | if (newinfo->chainstack) { |
| 1189 | for (i = 0; i < num_possible_cpus(); i++) | 1196 | for_each_cpu(i) |
| 1190 | vfree(newinfo->chainstack[i]); | 1197 | vfree(newinfo->chainstack[i]); |
| 1191 | vfree(newinfo->chainstack); | 1198 | vfree(newinfo->chainstack); |
| 1192 | } | 1199 | } |
| @@ -1209,7 +1216,7 @@ void ebt_unregister_table(struct ebt_table *table) | |||
| 1209 | up(&ebt_mutex); | 1216 | up(&ebt_mutex); |
| 1210 | vfree(table->private->entries); | 1217 | vfree(table->private->entries); |
| 1211 | if (table->private->chainstack) { | 1218 | if (table->private->chainstack) { |
| 1212 | for (i = 0; i < num_possible_cpus(); i++) | 1219 | for_each_cpu(i) |
| 1213 | vfree(table->private->chainstack[i]); | 1220 | vfree(table->private->chainstack[i]); |
| 1214 | vfree(table->private->chainstack); | 1221 | vfree(table->private->chainstack); |
| 1215 | } | 1222 | } |
diff --git a/net/core/dev.c b/net/core/dev.c index 9066c874e273..a44eeef24edf 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -1132,7 +1132,7 @@ static inline int illegal_highdma(struct net_device *dev, struct sk_buff *skb) | |||
| 1132 | #endif | 1132 | #endif |
| 1133 | 1133 | ||
| 1134 | /* Keep head the same: replace data */ | 1134 | /* Keep head the same: replace data */ |
| 1135 | int __skb_linearize(struct sk_buff *skb, unsigned int __nocast gfp_mask) | 1135 | int __skb_linearize(struct sk_buff *skb, gfp_t gfp_mask) |
| 1136 | { | 1136 | { |
| 1137 | unsigned int size; | 1137 | unsigned int size; |
| 1138 | u8 *data; | 1138 | u8 *data; |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 4128fc76ac3a..1dcf7fa1f0fe 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
| @@ -175,39 +175,10 @@ static void pneigh_queue_purge(struct sk_buff_head *list) | |||
| 175 | } | 175 | } |
| 176 | } | 176 | } |
| 177 | 177 | ||
| 178 | void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev) | 178 | static void neigh_flush_dev(struct neigh_table *tbl, struct net_device *dev) |
| 179 | { | 179 | { |
| 180 | int i; | 180 | int i; |
| 181 | 181 | ||
| 182 | write_lock_bh(&tbl->lock); | ||
| 183 | |||
| 184 | for (i=0; i <= tbl->hash_mask; i++) { | ||
| 185 | struct neighbour *n, **np; | ||
| 186 | |||
| 187 | np = &tbl->hash_buckets[i]; | ||
| 188 | while ((n = *np) != NULL) { | ||
| 189 | if (dev && n->dev != dev) { | ||
| 190 | np = &n->next; | ||
| 191 | continue; | ||
| 192 | } | ||
| 193 | *np = n->next; | ||
| 194 | write_lock_bh(&n->lock); | ||
| 195 | n->dead = 1; | ||
| 196 | neigh_del_timer(n); | ||
| 197 | write_unlock_bh(&n->lock); | ||
| 198 | neigh_release(n); | ||
| 199 | } | ||
| 200 | } | ||
| 201 | |||
| 202 | write_unlock_bh(&tbl->lock); | ||
| 203 | } | ||
| 204 | |||
| 205 | int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev) | ||
| 206 | { | ||
| 207 | int i; | ||
| 208 | |||
| 209 | write_lock_bh(&tbl->lock); | ||
| 210 | |||
| 211 | for (i = 0; i <= tbl->hash_mask; i++) { | 182 | for (i = 0; i <= tbl->hash_mask; i++) { |
| 212 | struct neighbour *n, **np = &tbl->hash_buckets[i]; | 183 | struct neighbour *n, **np = &tbl->hash_buckets[i]; |
| 213 | 184 | ||
| @@ -243,7 +214,19 @@ int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev) | |||
| 243 | neigh_release(n); | 214 | neigh_release(n); |
| 244 | } | 215 | } |
| 245 | } | 216 | } |
| 217 | } | ||
| 246 | 218 | ||
| 219 | void neigh_changeaddr(struct neigh_table *tbl, struct net_device *dev) | ||
| 220 | { | ||
| 221 | write_lock_bh(&tbl->lock); | ||
| 222 | neigh_flush_dev(tbl, dev); | ||
| 223 | write_unlock_bh(&tbl->lock); | ||
| 224 | } | ||
| 225 | |||
| 226 | int neigh_ifdown(struct neigh_table *tbl, struct net_device *dev) | ||
| 227 | { | ||
| 228 | write_lock_bh(&tbl->lock); | ||
| 229 | neigh_flush_dev(tbl, dev); | ||
| 247 | pneigh_ifdown(tbl, dev); | 230 | pneigh_ifdown(tbl, dev); |
| 248 | write_unlock_bh(&tbl->lock); | 231 | write_unlock_bh(&tbl->lock); |
| 249 | 232 | ||
| @@ -732,6 +715,7 @@ static inline void neigh_add_timer(struct neighbour *n, unsigned long when) | |||
| 732 | if (unlikely(mod_timer(&n->timer, when))) { | 715 | if (unlikely(mod_timer(&n->timer, when))) { |
| 733 | printk("NEIGH: BUG, double timer add, state is %x\n", | 716 | printk("NEIGH: BUG, double timer add, state is %x\n", |
| 734 | n->nud_state); | 717 | n->nud_state); |
| 718 | dump_stack(); | ||
| 735 | } | 719 | } |
| 736 | } | 720 | } |
| 737 | 721 | ||
| @@ -815,10 +799,10 @@ static void neigh_timer_handler(unsigned long arg) | |||
| 815 | } | 799 | } |
| 816 | 800 | ||
| 817 | if (neigh->nud_state & NUD_IN_TIMER) { | 801 | if (neigh->nud_state & NUD_IN_TIMER) { |
| 818 | neigh_hold(neigh); | ||
| 819 | if (time_before(next, jiffies + HZ/2)) | 802 | if (time_before(next, jiffies + HZ/2)) |
| 820 | next = jiffies + HZ/2; | 803 | next = jiffies + HZ/2; |
| 821 | neigh_add_timer(neigh, next); | 804 | if (!mod_timer(&neigh->timer, next)) |
| 805 | neigh_hold(neigh); | ||
| 822 | } | 806 | } |
| 823 | if (neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) { | 807 | if (neigh->nud_state & (NUD_INCOMPLETE | NUD_PROBE)) { |
| 824 | struct sk_buff *skb = skb_peek(&neigh->arp_queue); | 808 | struct sk_buff *skb = skb_peek(&neigh->arp_queue); |
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 0e9431b59fb2..02cd4cde2112 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
| @@ -130,7 +130,7 @@ void skb_under_panic(struct sk_buff *skb, int sz, void *here) | |||
| 130 | * Buffers may only be allocated from interrupts using a @gfp_mask of | 130 | * Buffers may only be allocated from interrupts using a @gfp_mask of |
| 131 | * %GFP_ATOMIC. | 131 | * %GFP_ATOMIC. |
| 132 | */ | 132 | */ |
| 133 | struct sk_buff *__alloc_skb(unsigned int size, unsigned int __nocast gfp_mask, | 133 | struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, |
| 134 | int fclone) | 134 | int fclone) |
| 135 | { | 135 | { |
| 136 | struct sk_buff *skb; | 136 | struct sk_buff *skb; |
| @@ -198,7 +198,7 @@ nodata: | |||
| 198 | */ | 198 | */ |
| 199 | struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, | 199 | struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, |
| 200 | unsigned int size, | 200 | unsigned int size, |
| 201 | unsigned int __nocast gfp_mask) | 201 | gfp_t gfp_mask) |
| 202 | { | 202 | { |
| 203 | struct sk_buff *skb; | 203 | struct sk_buff *skb; |
| 204 | u8 *data; | 204 | u8 *data; |
| @@ -361,7 +361,7 @@ void __kfree_skb(struct sk_buff *skb) | |||
| 361 | * %GFP_ATOMIC. | 361 | * %GFP_ATOMIC. |
| 362 | */ | 362 | */ |
| 363 | 363 | ||
| 364 | struct sk_buff *skb_clone(struct sk_buff *skb, unsigned int __nocast gfp_mask) | 364 | struct sk_buff *skb_clone(struct sk_buff *skb, gfp_t gfp_mask) |
| 365 | { | 365 | { |
| 366 | struct sk_buff *n; | 366 | struct sk_buff *n; |
| 367 | 367 | ||
| @@ -410,6 +410,9 @@ struct sk_buff *skb_clone(struct sk_buff *skb, unsigned int __nocast gfp_mask) | |||
| 410 | C(nfct); | 410 | C(nfct); |
| 411 | nf_conntrack_get(skb->nfct); | 411 | nf_conntrack_get(skb->nfct); |
| 412 | C(nfctinfo); | 412 | C(nfctinfo); |
| 413 | #if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE) | ||
| 414 | C(ipvs_property); | ||
| 415 | #endif | ||
| 413 | #ifdef CONFIG_BRIDGE_NETFILTER | 416 | #ifdef CONFIG_BRIDGE_NETFILTER |
| 414 | C(nf_bridge); | 417 | C(nf_bridge); |
| 415 | nf_bridge_get(skb->nf_bridge); | 418 | nf_bridge_get(skb->nf_bridge); |
| @@ -467,6 +470,9 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old) | |||
| 467 | new->nfct = old->nfct; | 470 | new->nfct = old->nfct; |
| 468 | nf_conntrack_get(old->nfct); | 471 | nf_conntrack_get(old->nfct); |
| 469 | new->nfctinfo = old->nfctinfo; | 472 | new->nfctinfo = old->nfctinfo; |
| 473 | #if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE) | ||
| 474 | new->ipvs_property = old->ipvs_property; | ||
| 475 | #endif | ||
| 470 | #ifdef CONFIG_BRIDGE_NETFILTER | 476 | #ifdef CONFIG_BRIDGE_NETFILTER |
| 471 | new->nf_bridge = old->nf_bridge; | 477 | new->nf_bridge = old->nf_bridge; |
| 472 | nf_bridge_get(old->nf_bridge); | 478 | nf_bridge_get(old->nf_bridge); |
| @@ -500,7 +506,7 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old) | |||
| 500 | * header is going to be modified. Use pskb_copy() instead. | 506 | * header is going to be modified. Use pskb_copy() instead. |
| 501 | */ | 507 | */ |
| 502 | 508 | ||
| 503 | struct sk_buff *skb_copy(const struct sk_buff *skb, unsigned int __nocast gfp_mask) | 509 | struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask) |
| 504 | { | 510 | { |
| 505 | int headerlen = skb->data - skb->head; | 511 | int headerlen = skb->data - skb->head; |
| 506 | /* | 512 | /* |
| @@ -539,7 +545,7 @@ struct sk_buff *skb_copy(const struct sk_buff *skb, unsigned int __nocast gfp_ma | |||
| 539 | * The returned buffer has a reference count of 1. | 545 | * The returned buffer has a reference count of 1. |
| 540 | */ | 546 | */ |
| 541 | 547 | ||
| 542 | struct sk_buff *pskb_copy(struct sk_buff *skb, unsigned int __nocast gfp_mask) | 548 | struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask) |
| 543 | { | 549 | { |
| 544 | /* | 550 | /* |
| 545 | * Allocate the copy buffer | 551 | * Allocate the copy buffer |
| @@ -598,7 +604,7 @@ out: | |||
| 598 | */ | 604 | */ |
| 599 | 605 | ||
| 600 | int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, | 606 | int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, |
| 601 | unsigned int __nocast gfp_mask) | 607 | gfp_t gfp_mask) |
| 602 | { | 608 | { |
| 603 | int i; | 609 | int i; |
| 604 | u8 *data; | 610 | u8 *data; |
| @@ -689,7 +695,7 @@ struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, unsigned int headroom) | |||
| 689 | */ | 695 | */ |
| 690 | struct sk_buff *skb_copy_expand(const struct sk_buff *skb, | 696 | struct sk_buff *skb_copy_expand(const struct sk_buff *skb, |
| 691 | int newheadroom, int newtailroom, | 697 | int newheadroom, int newtailroom, |
| 692 | unsigned int __nocast gfp_mask) | 698 | gfp_t gfp_mask) |
| 693 | { | 699 | { |
| 694 | /* | 700 | /* |
| 695 | * Allocate the copy buffer | 701 | * Allocate the copy buffer |
diff --git a/net/core/sock.c b/net/core/sock.c index 928d2a1d6d8e..1c52fe809eda 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
| @@ -637,7 +637,7 @@ lenout: | |||
| 637 | * @prot: struct proto associated with this new sock instance | 637 | * @prot: struct proto associated with this new sock instance |
| 638 | * @zero_it: if we should zero the newly allocated sock | 638 | * @zero_it: if we should zero the newly allocated sock |
| 639 | */ | 639 | */ |
| 640 | struct sock *sk_alloc(int family, unsigned int __nocast priority, | 640 | struct sock *sk_alloc(int family, gfp_t priority, |
| 641 | struct proto *prot, int zero_it) | 641 | struct proto *prot, int zero_it) |
| 642 | { | 642 | { |
| 643 | struct sock *sk = NULL; | 643 | struct sock *sk = NULL; |
| @@ -704,7 +704,7 @@ void sk_free(struct sock *sk) | |||
| 704 | module_put(owner); | 704 | module_put(owner); |
| 705 | } | 705 | } |
| 706 | 706 | ||
| 707 | struct sock *sk_clone(const struct sock *sk, const unsigned int __nocast priority) | 707 | struct sock *sk_clone(const struct sock *sk, const gfp_t priority) |
| 708 | { | 708 | { |
| 709 | struct sock *newsk = sk_alloc(sk->sk_family, priority, sk->sk_prot, 0); | 709 | struct sock *newsk = sk_alloc(sk->sk_family, priority, sk->sk_prot, 0); |
| 710 | 710 | ||
| @@ -845,7 +845,7 @@ unsigned long sock_i_ino(struct sock *sk) | |||
| 845 | * Allocate a skb from the socket's send buffer. | 845 | * Allocate a skb from the socket's send buffer. |
| 846 | */ | 846 | */ |
| 847 | struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force, | 847 | struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force, |
| 848 | unsigned int __nocast priority) | 848 | gfp_t priority) |
| 849 | { | 849 | { |
| 850 | if (force || atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) { | 850 | if (force || atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) { |
| 851 | struct sk_buff * skb = alloc_skb(size, priority); | 851 | struct sk_buff * skb = alloc_skb(size, priority); |
| @@ -861,7 +861,7 @@ struct sk_buff *sock_wmalloc(struct sock *sk, unsigned long size, int force, | |||
| 861 | * Allocate a skb from the socket's receive buffer. | 861 | * Allocate a skb from the socket's receive buffer. |
| 862 | */ | 862 | */ |
| 863 | struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force, | 863 | struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force, |
| 864 | unsigned int __nocast priority) | 864 | gfp_t priority) |
| 865 | { | 865 | { |
| 866 | if (force || atomic_read(&sk->sk_rmem_alloc) < sk->sk_rcvbuf) { | 866 | if (force || atomic_read(&sk->sk_rmem_alloc) < sk->sk_rcvbuf) { |
| 867 | struct sk_buff *skb = alloc_skb(size, priority); | 867 | struct sk_buff *skb = alloc_skb(size, priority); |
| @@ -876,7 +876,7 @@ struct sk_buff *sock_rmalloc(struct sock *sk, unsigned long size, int force, | |||
| 876 | /* | 876 | /* |
| 877 | * Allocate a memory block from the socket's option memory buffer. | 877 | * Allocate a memory block from the socket's option memory buffer. |
| 878 | */ | 878 | */ |
| 879 | void *sock_kmalloc(struct sock *sk, int size, unsigned int __nocast priority) | 879 | void *sock_kmalloc(struct sock *sk, int size, gfp_t priority) |
| 880 | { | 880 | { |
| 881 | if ((unsigned)size <= sysctl_optmem_max && | 881 | if ((unsigned)size <= sysctl_optmem_max && |
| 882 | atomic_read(&sk->sk_omem_alloc) + size < sysctl_optmem_max) { | 882 | atomic_read(&sk->sk_omem_alloc) + size < sysctl_optmem_max) { |
diff --git a/net/core/wireless.c b/net/core/wireless.c index d17f1583ea3e..271ddb35b0b2 100644 --- a/net/core/wireless.c +++ b/net/core/wireless.c | |||
| @@ -455,10 +455,15 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev) | |||
| 455 | 455 | ||
| 456 | /* Old location, field to be removed in next WE */ | 456 | /* Old location, field to be removed in next WE */ |
| 457 | if(dev->get_wireless_stats) { | 457 | if(dev->get_wireless_stats) { |
| 458 | printk(KERN_DEBUG "%s (WE) : Driver using old /proc/net/wireless support, please fix driver !\n", | 458 | static int printed_message; |
| 459 | dev->name); | 459 | |
| 460 | if (!printed_message++) | ||
| 461 | printk(KERN_DEBUG "%s (WE) : Driver using old /proc/net/wireless support, please fix driver !\n", | ||
| 462 | dev->name); | ||
| 463 | |||
| 460 | return dev->get_wireless_stats(dev); | 464 | return dev->get_wireless_stats(dev); |
| 461 | } | 465 | } |
| 466 | |||
| 462 | /* Not found */ | 467 | /* Not found */ |
| 463 | return (struct iw_statistics *) NULL; | 468 | return (struct iw_statistics *) NULL; |
| 464 | } | 469 | } |
diff --git a/net/dccp/ackvec.c b/net/dccp/ackvec.c index 6530283eafca..c9a62cca22fc 100644 --- a/net/dccp/ackvec.c +++ b/net/dccp/ackvec.c | |||
| @@ -91,7 +91,7 @@ int dccp_insert_option_ackvec(struct sock *sk, struct sk_buff *skb) | |||
| 91 | } | 91 | } |
| 92 | 92 | ||
| 93 | struct dccp_ackvec *dccp_ackvec_alloc(const unsigned int len, | 93 | struct dccp_ackvec *dccp_ackvec_alloc(const unsigned int len, |
| 94 | const unsigned int __nocast priority) | 94 | const gfp_t priority) |
| 95 | { | 95 | { |
| 96 | struct dccp_ackvec *av = kmalloc(sizeof(*av) + len, priority); | 96 | struct dccp_ackvec *av = kmalloc(sizeof(*av) + len, priority); |
| 97 | 97 | ||
diff --git a/net/dccp/ackvec.h b/net/dccp/ackvec.h index 8ca51c9191f7..d0fd6c60c574 100644 --- a/net/dccp/ackvec.h +++ b/net/dccp/ackvec.h | |||
| @@ -74,7 +74,7 @@ struct sk_buff; | |||
| 74 | 74 | ||
| 75 | #ifdef CONFIG_IP_DCCP_ACKVEC | 75 | #ifdef CONFIG_IP_DCCP_ACKVEC |
| 76 | extern struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len, | 76 | extern struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len, |
| 77 | const unsigned int __nocast priority); | 77 | const gfp_t priority); |
| 78 | extern void dccp_ackvec_free(struct dccp_ackvec *av); | 78 | extern void dccp_ackvec_free(struct dccp_ackvec *av); |
| 79 | 79 | ||
| 80 | extern int dccp_ackvec_add(struct dccp_ackvec *av, const struct sock *sk, | 80 | extern int dccp_ackvec_add(struct dccp_ackvec *av, const struct sock *sk, |
| @@ -93,7 +93,7 @@ static inline int dccp_ackvec_pending(const struct dccp_ackvec *av) | |||
| 93 | } | 93 | } |
| 94 | #else /* CONFIG_IP_DCCP_ACKVEC */ | 94 | #else /* CONFIG_IP_DCCP_ACKVEC */ |
| 95 | static inline struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len, | 95 | static inline struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len, |
| 96 | const unsigned int __nocast priority) | 96 | const gfp_t priority) |
| 97 | { | 97 | { |
| 98 | return NULL; | 98 | return NULL; |
| 99 | } | 99 | } |
diff --git a/net/dccp/ccid.h b/net/dccp/ccid.h index 21e55142dcd3..c37eeeaf5c6e 100644 --- a/net/dccp/ccid.h +++ b/net/dccp/ccid.h | |||
| @@ -110,14 +110,14 @@ static inline int ccid_hc_tx_init(struct ccid *ccid, struct sock *sk) | |||
| 110 | 110 | ||
| 111 | static inline void ccid_hc_rx_exit(struct ccid *ccid, struct sock *sk) | 111 | static inline void ccid_hc_rx_exit(struct ccid *ccid, struct sock *sk) |
| 112 | { | 112 | { |
| 113 | if (ccid->ccid_hc_rx_exit != NULL && | 113 | if (ccid != NULL && ccid->ccid_hc_rx_exit != NULL && |
| 114 | dccp_sk(sk)->dccps_hc_rx_ccid_private != NULL) | 114 | dccp_sk(sk)->dccps_hc_rx_ccid_private != NULL) |
| 115 | ccid->ccid_hc_rx_exit(sk); | 115 | ccid->ccid_hc_rx_exit(sk); |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | static inline void ccid_hc_tx_exit(struct ccid *ccid, struct sock *sk) | 118 | static inline void ccid_hc_tx_exit(struct ccid *ccid, struct sock *sk) |
| 119 | { | 119 | { |
| 120 | if (ccid->ccid_hc_tx_exit != NULL && | 120 | if (ccid != NULL && ccid->ccid_hc_tx_exit != NULL && |
| 121 | dccp_sk(sk)->dccps_hc_tx_ccid_private != NULL) | 121 | dccp_sk(sk)->dccps_hc_tx_ccid_private != NULL) |
| 122 | ccid->ccid_hc_tx_exit(sk); | 122 | ccid->ccid_hc_tx_exit(sk); |
| 123 | } | 123 | } |
diff --git a/net/dccp/ccids/lib/loss_interval.h b/net/dccp/ccids/lib/loss_interval.h index 13ad47ba1420..417d9d82df3e 100644 --- a/net/dccp/ccids/lib/loss_interval.h +++ b/net/dccp/ccids/lib/loss_interval.h | |||
| @@ -36,7 +36,7 @@ struct dccp_li_hist_entry { | |||
| 36 | 36 | ||
| 37 | static inline struct dccp_li_hist_entry * | 37 | static inline struct dccp_li_hist_entry * |
| 38 | dccp_li_hist_entry_new(struct dccp_li_hist *hist, | 38 | dccp_li_hist_entry_new(struct dccp_li_hist *hist, |
| 39 | const unsigned int __nocast prio) | 39 | const gfp_t prio) |
| 40 | { | 40 | { |
| 41 | return kmem_cache_alloc(hist->dccplih_slab, prio); | 41 | return kmem_cache_alloc(hist->dccplih_slab, prio); |
| 42 | } | 42 | } |
diff --git a/net/dccp/ccids/lib/packet_history.h b/net/dccp/ccids/lib/packet_history.h index b375ebdb7dcf..122e96737ff6 100644 --- a/net/dccp/ccids/lib/packet_history.h +++ b/net/dccp/ccids/lib/packet_history.h | |||
| @@ -86,7 +86,7 @@ extern struct dccp_rx_hist_entry * | |||
| 86 | 86 | ||
| 87 | static inline struct dccp_tx_hist_entry * | 87 | static inline struct dccp_tx_hist_entry * |
| 88 | dccp_tx_hist_entry_new(struct dccp_tx_hist *hist, | 88 | dccp_tx_hist_entry_new(struct dccp_tx_hist *hist, |
| 89 | const unsigned int __nocast prio) | 89 | const gfp_t prio) |
| 90 | { | 90 | { |
| 91 | struct dccp_tx_hist_entry *entry = kmem_cache_alloc(hist->dccptxh_slab, | 91 | struct dccp_tx_hist_entry *entry = kmem_cache_alloc(hist->dccptxh_slab, |
| 92 | prio); | 92 | prio); |
| @@ -137,7 +137,7 @@ static inline struct dccp_rx_hist_entry * | |||
| 137 | const struct sock *sk, | 137 | const struct sock *sk, |
| 138 | const u32 ndp, | 138 | const u32 ndp, |
| 139 | const struct sk_buff *skb, | 139 | const struct sk_buff *skb, |
| 140 | const unsigned int __nocast prio) | 140 | const gfp_t prio) |
| 141 | { | 141 | { |
| 142 | struct dccp_rx_hist_entry *entry = kmem_cache_alloc(hist->dccprxh_slab, | 142 | struct dccp_rx_hist_entry *entry = kmem_cache_alloc(hist->dccprxh_slab, |
| 143 | prio); | 143 | prio); |
diff --git a/net/dccp/input.c b/net/dccp/input.c index 1b6b2cb12376..3454d5941900 100644 --- a/net/dccp/input.c +++ b/net/dccp/input.c | |||
| @@ -375,6 +375,9 @@ static int dccp_rcv_respond_partopen_state_process(struct sock *sk, | |||
| 375 | case DCCP_PKT_RESET: | 375 | case DCCP_PKT_RESET: |
| 376 | inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK); | 376 | inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK); |
| 377 | break; | 377 | break; |
| 378 | case DCCP_PKT_DATA: | ||
| 379 | if (sk->sk_state == DCCP_RESPOND) | ||
| 380 | break; | ||
| 378 | case DCCP_PKT_DATAACK: | 381 | case DCCP_PKT_DATAACK: |
| 379 | case DCCP_PKT_ACK: | 382 | case DCCP_PKT_ACK: |
| 380 | /* | 383 | /* |
| @@ -393,7 +396,8 @@ static int dccp_rcv_respond_partopen_state_process(struct sock *sk, | |||
| 393 | dccp_sk(sk)->dccps_osr = DCCP_SKB_CB(skb)->dccpd_seq; | 396 | dccp_sk(sk)->dccps_osr = DCCP_SKB_CB(skb)->dccpd_seq; |
| 394 | dccp_set_state(sk, DCCP_OPEN); | 397 | dccp_set_state(sk, DCCP_OPEN); |
| 395 | 398 | ||
| 396 | if (dh->dccph_type == DCCP_PKT_DATAACK) { | 399 | if (dh->dccph_type == DCCP_PKT_DATAACK || |
| 400 | dh->dccph_type == DCCP_PKT_DATA) { | ||
| 397 | dccp_rcv_established(sk, skb, dh, len); | 401 | dccp_rcv_established(sk, skb, dh, len); |
| 398 | queued = 1; /* packet was queued | 402 | queued = 1; /* packet was queued |
| 399 | (by dccp_rcv_established) */ | 403 | (by dccp_rcv_established) */ |
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c index ae088d1347af..6298cf58ff9e 100644 --- a/net/dccp/ipv4.c +++ b/net/dccp/ipv4.c | |||
| @@ -463,6 +463,7 @@ static int dccp_v4_send_response(struct sock *sk, struct request_sock *req, | |||
| 463 | if (skb != NULL) { | 463 | if (skb != NULL) { |
| 464 | const struct inet_request_sock *ireq = inet_rsk(req); | 464 | const struct inet_request_sock *ireq = inet_rsk(req); |
| 465 | 465 | ||
| 466 | memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); | ||
| 466 | err = ip_build_and_send_pkt(skb, sk, ireq->loc_addr, | 467 | err = ip_build_and_send_pkt(skb, sk, ireq->loc_addr, |
| 467 | ireq->rmt_addr, | 468 | ireq->rmt_addr, |
| 468 | ireq->opt); | 469 | ireq->opt); |
| @@ -647,6 +648,7 @@ int dccp_v4_send_reset(struct sock *sk, enum dccp_reset_codes code) | |||
| 647 | if (skb != NULL) { | 648 | if (skb != NULL) { |
| 648 | const struct inet_sock *inet = inet_sk(sk); | 649 | const struct inet_sock *inet = inet_sk(sk); |
| 649 | 650 | ||
| 651 | memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); | ||
| 650 | err = ip_build_and_send_pkt(skb, sk, | 652 | err = ip_build_and_send_pkt(skb, sk, |
| 651 | inet->saddr, inet->daddr, NULL); | 653 | inet->saddr, inet->daddr, NULL); |
| 652 | if (err == NET_XMIT_CN) | 654 | if (err == NET_XMIT_CN) |
diff --git a/net/dccp/output.c b/net/dccp/output.c index 4786bdcddcc9..29250749f16f 100644 --- a/net/dccp/output.c +++ b/net/dccp/output.c | |||
| @@ -62,10 +62,8 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb) | |||
| 62 | 62 | ||
| 63 | skb->h.raw = skb_push(skb, dccp_header_size); | 63 | skb->h.raw = skb_push(skb, dccp_header_size); |
| 64 | dh = dccp_hdr(skb); | 64 | dh = dccp_hdr(skb); |
| 65 | /* | 65 | |
| 66 | * Data packets are not cloned as they are never retransmitted | 66 | if (!skb->sk) |
| 67 | */ | ||
| 68 | if (skb_cloned(skb)) | ||
| 69 | skb_set_owner_w(skb, sk); | 67 | skb_set_owner_w(skb, sk); |
| 70 | 68 | ||
| 71 | /* Build DCCP header and checksum it. */ | 69 | /* Build DCCP header and checksum it. */ |
| @@ -102,6 +100,7 @@ int dccp_transmit_skb(struct sock *sk, struct sk_buff *skb) | |||
| 102 | 100 | ||
| 103 | DCCP_INC_STATS(DCCP_MIB_OUTSEGS); | 101 | DCCP_INC_STATS(DCCP_MIB_OUTSEGS); |
| 104 | 102 | ||
| 103 | memset(&(IPCB(skb)->opt), 0, sizeof(IPCB(skb)->opt)); | ||
| 105 | err = ip_queue_xmit(skb, 0); | 104 | err = ip_queue_xmit(skb, 0); |
| 106 | if (err <= 0) | 105 | if (err <= 0) |
| 107 | return err; | 106 | return err; |
| @@ -243,7 +242,8 @@ int dccp_write_xmit(struct sock *sk, struct sk_buff *skb, long *timeo) | |||
| 243 | 242 | ||
| 244 | err = dccp_transmit_skb(sk, skb); | 243 | err = dccp_transmit_skb(sk, skb); |
| 245 | ccid_hc_tx_packet_sent(dp->dccps_hc_tx_ccid, sk, 0, len); | 244 | ccid_hc_tx_packet_sent(dp->dccps_hc_tx_ccid, sk, 0, len); |
| 246 | } | 245 | } else |
| 246 | kfree_skb(skb); | ||
| 247 | 247 | ||
| 248 | return err; | 248 | return err; |
| 249 | } | 249 | } |
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index a1cfd0e9e3bc..a021c3422f67 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c | |||
| @@ -402,8 +402,6 @@ int dccp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, | |||
| 402 | * This bug was _quickly_ found & fixed by just looking at an OSTRA | 402 | * This bug was _quickly_ found & fixed by just looking at an OSTRA |
| 403 | * generated callgraph 8) -acme | 403 | * generated callgraph 8) -acme |
| 404 | */ | 404 | */ |
| 405 | if (rc != 0) | ||
| 406 | goto out_discard; | ||
| 407 | out_release: | 405 | out_release: |
| 408 | release_sock(sk); | 406 | release_sock(sk); |
| 409 | return rc ? : len; | 407 | return rc ? : len; |
diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c index 348f36b529f7..1186dc44cdff 100644 --- a/net/decnet/af_decnet.c +++ b/net/decnet/af_decnet.c | |||
| @@ -452,7 +452,7 @@ static struct proto dn_proto = { | |||
| 452 | .obj_size = sizeof(struct dn_sock), | 452 | .obj_size = sizeof(struct dn_sock), |
| 453 | }; | 453 | }; |
| 454 | 454 | ||
| 455 | static struct sock *dn_alloc_sock(struct socket *sock, int gfp) | 455 | static struct sock *dn_alloc_sock(struct socket *sock, gfp_t gfp) |
| 456 | { | 456 | { |
| 457 | struct dn_scp *scp; | 457 | struct dn_scp *scp; |
| 458 | struct sock *sk = sk_alloc(PF_DECnet, gfp, &dn_proto, 1); | 458 | struct sock *sk = sk_alloc(PF_DECnet, gfp, &dn_proto, 1); |
| @@ -804,7 +804,7 @@ static int dn_auto_bind(struct socket *sock) | |||
| 804 | return rv; | 804 | return rv; |
| 805 | } | 805 | } |
| 806 | 806 | ||
| 807 | static int dn_confirm_accept(struct sock *sk, long *timeo, int allocation) | 807 | static int dn_confirm_accept(struct sock *sk, long *timeo, gfp_t allocation) |
| 808 | { | 808 | { |
| 809 | struct dn_scp *scp = DN_SK(sk); | 809 | struct dn_scp *scp = DN_SK(sk); |
| 810 | DEFINE_WAIT(wait); | 810 | DEFINE_WAIT(wait); |
diff --git a/net/decnet/dn_nsp_out.c b/net/decnet/dn_nsp_out.c index 53633d352868..c96c767b1f74 100644 --- a/net/decnet/dn_nsp_out.c +++ b/net/decnet/dn_nsp_out.c | |||
| @@ -117,7 +117,7 @@ try_again: | |||
| 117 | * The eventual aim is for each socket to have a cached header size | 117 | * The eventual aim is for each socket to have a cached header size |
| 118 | * for its outgoing packets, and to set hdr from this when sk != NULL. | 118 | * for its outgoing packets, and to set hdr from this when sk != NULL. |
| 119 | */ | 119 | */ |
| 120 | struct sk_buff *dn_alloc_skb(struct sock *sk, int size, int pri) | 120 | struct sk_buff *dn_alloc_skb(struct sock *sk, int size, gfp_t pri) |
| 121 | { | 121 | { |
| 122 | struct sk_buff *skb; | 122 | struct sk_buff *skb; |
| 123 | int hdr = 64; | 123 | int hdr = 64; |
| @@ -210,7 +210,8 @@ static void dn_nsp_rtt(struct sock *sk, long rtt) | |||
| 210 | * | 210 | * |
| 211 | * Returns: The number of times the packet has been sent previously | 211 | * Returns: The number of times the packet has been sent previously |
| 212 | */ | 212 | */ |
| 213 | static inline unsigned dn_nsp_clone_and_send(struct sk_buff *skb, int gfp) | 213 | static inline unsigned dn_nsp_clone_and_send(struct sk_buff *skb, |
| 214 | gfp_t gfp) | ||
| 214 | { | 215 | { |
| 215 | struct dn_skb_cb *cb = DN_SKB_CB(skb); | 216 | struct dn_skb_cb *cb = DN_SKB_CB(skb); |
| 216 | struct sk_buff *skb2; | 217 | struct sk_buff *skb2; |
| @@ -350,7 +351,8 @@ static unsigned short *dn_nsp_mk_data_header(struct sock *sk, struct sk_buff *sk | |||
| 350 | return ptr; | 351 | return ptr; |
| 351 | } | 352 | } |
| 352 | 353 | ||
| 353 | void dn_nsp_queue_xmit(struct sock *sk, struct sk_buff *skb, int gfp, int oth) | 354 | void dn_nsp_queue_xmit(struct sock *sk, struct sk_buff *skb, |
| 355 | gfp_t gfp, int oth) | ||
| 354 | { | 356 | { |
| 355 | struct dn_scp *scp = DN_SK(sk); | 357 | struct dn_scp *scp = DN_SK(sk); |
| 356 | struct dn_skb_cb *cb = DN_SKB_CB(skb); | 358 | struct dn_skb_cb *cb = DN_SKB_CB(skb); |
| @@ -517,7 +519,7 @@ static int dn_nsp_retrans_conn_conf(struct sock *sk) | |||
| 517 | return 0; | 519 | return 0; |
| 518 | } | 520 | } |
| 519 | 521 | ||
| 520 | void dn_send_conn_conf(struct sock *sk, int gfp) | 522 | void dn_send_conn_conf(struct sock *sk, gfp_t gfp) |
| 521 | { | 523 | { |
| 522 | struct dn_scp *scp = DN_SK(sk); | 524 | struct dn_scp *scp = DN_SK(sk); |
| 523 | struct sk_buff *skb = NULL; | 525 | struct sk_buff *skb = NULL; |
| @@ -549,7 +551,8 @@ void dn_send_conn_conf(struct sock *sk, int gfp) | |||
| 549 | 551 | ||
| 550 | 552 | ||
| 551 | static __inline__ void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, | 553 | static __inline__ void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, |
| 552 | unsigned short reason, int gfp, struct dst_entry *dst, | 554 | unsigned short reason, gfp_t gfp, |
| 555 | struct dst_entry *dst, | ||
| 553 | int ddl, unsigned char *dd, __u16 rem, __u16 loc) | 556 | int ddl, unsigned char *dd, __u16 rem, __u16 loc) |
| 554 | { | 557 | { |
| 555 | struct sk_buff *skb = NULL; | 558 | struct sk_buff *skb = NULL; |
| @@ -591,7 +594,7 @@ static __inline__ void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, | |||
| 591 | 594 | ||
| 592 | 595 | ||
| 593 | void dn_nsp_send_disc(struct sock *sk, unsigned char msgflg, | 596 | void dn_nsp_send_disc(struct sock *sk, unsigned char msgflg, |
| 594 | unsigned short reason, int gfp) | 597 | unsigned short reason, gfp_t gfp) |
| 595 | { | 598 | { |
| 596 | struct dn_scp *scp = DN_SK(sk); | 599 | struct dn_scp *scp = DN_SK(sk); |
| 597 | int ddl = 0; | 600 | int ddl = 0; |
| @@ -612,7 +615,7 @@ void dn_nsp_return_disc(struct sk_buff *skb, unsigned char msgflg, | |||
| 612 | { | 615 | { |
| 613 | struct dn_skb_cb *cb = DN_SKB_CB(skb); | 616 | struct dn_skb_cb *cb = DN_SKB_CB(skb); |
| 614 | int ddl = 0; | 617 | int ddl = 0; |
| 615 | int gfp = GFP_ATOMIC; | 618 | gfp_t gfp = GFP_ATOMIC; |
| 616 | 619 | ||
| 617 | dn_nsp_do_disc(NULL, msgflg, reason, gfp, skb->dst, ddl, | 620 | dn_nsp_do_disc(NULL, msgflg, reason, gfp, skb->dst, ddl, |
| 618 | NULL, cb->src_port, cb->dst_port); | 621 | NULL, cb->src_port, cb->dst_port); |
| @@ -624,7 +627,7 @@ void dn_nsp_send_link(struct sock *sk, unsigned char lsflags, char fcval) | |||
| 624 | struct dn_scp *scp = DN_SK(sk); | 627 | struct dn_scp *scp = DN_SK(sk); |
| 625 | struct sk_buff *skb; | 628 | struct sk_buff *skb; |
| 626 | unsigned char *ptr; | 629 | unsigned char *ptr; |
| 627 | int gfp = GFP_ATOMIC; | 630 | gfp_t gfp = GFP_ATOMIC; |
| 628 | 631 | ||
| 629 | if ((skb = dn_alloc_skb(sk, DN_MAX_NSP_DATA_HEADER + 2, gfp)) == NULL) | 632 | if ((skb = dn_alloc_skb(sk, DN_MAX_NSP_DATA_HEADER + 2, gfp)) == NULL) |
| 630 | return; | 633 | return; |
| @@ -659,7 +662,7 @@ void dn_nsp_send_conninit(struct sock *sk, unsigned char msgflg) | |||
| 659 | unsigned char menuver; | 662 | unsigned char menuver; |
| 660 | struct dn_skb_cb *cb; | 663 | struct dn_skb_cb *cb; |
| 661 | unsigned char type = 1; | 664 | unsigned char type = 1; |
| 662 | int allocation = (msgflg == NSP_CI) ? sk->sk_allocation : GFP_ATOMIC; | 665 | gfp_t allocation = (msgflg == NSP_CI) ? sk->sk_allocation : GFP_ATOMIC; |
| 663 | struct sk_buff *skb = dn_alloc_skb(sk, 200, allocation); | 666 | struct sk_buff *skb = dn_alloc_skb(sk, 200, allocation); |
| 664 | 667 | ||
| 665 | if (!skb) | 668 | if (!skb) |
diff --git a/net/ieee80211/ieee80211_tx.c b/net/ieee80211/ieee80211_tx.c index ecdf9f7a538f..eed07bbbe6b6 100644 --- a/net/ieee80211/ieee80211_tx.c +++ b/net/ieee80211/ieee80211_tx.c | |||
| @@ -207,7 +207,7 @@ void ieee80211_txb_free(struct ieee80211_txb *txb) | |||
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, | 209 | static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, |
| 210 | unsigned int __nocast gfp_mask) | 210 | gfp_t gfp_mask) |
| 211 | { | 211 | { |
| 212 | struct ieee80211_txb *txb; | 212 | struct ieee80211_txb *txb; |
| 213 | int i; | 213 | int i; |
diff --git a/net/ipv4/esp4.c b/net/ipv4/esp4.c index 1b5a09d1b90b..1b18ce66e7b7 100644 --- a/net/ipv4/esp4.c +++ b/net/ipv4/esp4.c | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include <net/esp.h> | 5 | #include <net/esp.h> |
| 6 | #include <asm/scatterlist.h> | 6 | #include <asm/scatterlist.h> |
| 7 | #include <linux/crypto.h> | 7 | #include <linux/crypto.h> |
| 8 | #include <linux/kernel.h> | ||
| 8 | #include <linux/pfkeyv2.h> | 9 | #include <linux/pfkeyv2.h> |
| 9 | #include <linux/random.h> | 10 | #include <linux/random.h> |
| 10 | #include <net/icmp.h> | 11 | #include <net/icmp.h> |
| @@ -42,10 +43,10 @@ static int esp_output(struct xfrm_state *x, struct sk_buff *skb) | |||
| 42 | esp = x->data; | 43 | esp = x->data; |
| 43 | alen = esp->auth.icv_trunc_len; | 44 | alen = esp->auth.icv_trunc_len; |
| 44 | tfm = esp->conf.tfm; | 45 | tfm = esp->conf.tfm; |
| 45 | blksize = (crypto_tfm_alg_blocksize(tfm) + 3) & ~3; | 46 | blksize = ALIGN(crypto_tfm_alg_blocksize(tfm), 4); |
| 46 | clen = (clen + 2 + blksize-1)&~(blksize-1); | 47 | clen = ALIGN(clen + 2, blksize); |
| 47 | if (esp->conf.padlen) | 48 | if (esp->conf.padlen) |
| 48 | clen = (clen + esp->conf.padlen-1)&~(esp->conf.padlen-1); | 49 | clen = ALIGN(clen, esp->conf.padlen); |
| 49 | 50 | ||
| 50 | if ((nfrags = skb_cow_data(skb, clen-skb->len+alen, &trailer)) < 0) | 51 | if ((nfrags = skb_cow_data(skb, clen-skb->len+alen, &trailer)) < 0) |
| 51 | goto error; | 52 | goto error; |
| @@ -143,7 +144,7 @@ static int esp_input(struct xfrm_state *x, struct xfrm_decap_state *decap, struc | |||
| 143 | struct ip_esp_hdr *esph; | 144 | struct ip_esp_hdr *esph; |
| 144 | struct esp_data *esp = x->data; | 145 | struct esp_data *esp = x->data; |
| 145 | struct sk_buff *trailer; | 146 | struct sk_buff *trailer; |
| 146 | int blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); | 147 | int blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); |
| 147 | int alen = esp->auth.icv_trunc_len; | 148 | int alen = esp->auth.icv_trunc_len; |
| 148 | int elen = skb->len - sizeof(struct ip_esp_hdr) - esp->conf.ivlen - alen; | 149 | int elen = skb->len - sizeof(struct ip_esp_hdr) - esp->conf.ivlen - alen; |
| 149 | int nfrags; | 150 | int nfrags; |
| @@ -304,16 +305,16 @@ static int esp_post_input(struct xfrm_state *x, struct xfrm_decap_state *decap, | |||
| 304 | static u32 esp4_get_max_size(struct xfrm_state *x, int mtu) | 305 | static u32 esp4_get_max_size(struct xfrm_state *x, int mtu) |
| 305 | { | 306 | { |
| 306 | struct esp_data *esp = x->data; | 307 | struct esp_data *esp = x->data; |
| 307 | u32 blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); | 308 | u32 blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); |
| 308 | 309 | ||
| 309 | if (x->props.mode) { | 310 | if (x->props.mode) { |
| 310 | mtu = (mtu + 2 + blksize-1)&~(blksize-1); | 311 | mtu = ALIGN(mtu + 2, blksize); |
| 311 | } else { | 312 | } else { |
| 312 | /* The worst case. */ | 313 | /* The worst case. */ |
| 313 | mtu += 2 + blksize; | 314 | mtu = ALIGN(mtu + 2, 4) + blksize - 4; |
| 314 | } | 315 | } |
| 315 | if (esp->conf.padlen) | 316 | if (esp->conf.padlen) |
| 316 | mtu = (mtu + esp->conf.padlen-1)&~(esp->conf.padlen-1); | 317 | mtu = ALIGN(mtu, esp->conf.padlen); |
| 317 | 318 | ||
| 318 | return mtu + x->props.header_len + esp->auth.icv_trunc_len; | 319 | return mtu + x->props.header_len + esp->auth.icv_trunc_len; |
| 319 | } | 320 | } |
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index 50c0519cd70d..0093ea08c7f5 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
| @@ -286,6 +286,8 @@ static inline void check_tnode(const struct tnode *tn) | |||
| 286 | 286 | ||
| 287 | static int halve_threshold = 25; | 287 | static int halve_threshold = 25; |
| 288 | static int inflate_threshold = 50; | 288 | static int inflate_threshold = 50; |
| 289 | static int halve_threshold_root = 15; | ||
| 290 | static int inflate_threshold_root = 25; | ||
| 289 | 291 | ||
| 290 | 292 | ||
| 291 | static void __alias_free_mem(struct rcu_head *head) | 293 | static void __alias_free_mem(struct rcu_head *head) |
| @@ -449,6 +451,8 @@ static struct node *resize(struct trie *t, struct tnode *tn) | |||
| 449 | int i; | 451 | int i; |
| 450 | int err = 0; | 452 | int err = 0; |
| 451 | struct tnode *old_tn; | 453 | struct tnode *old_tn; |
| 454 | int inflate_threshold_use; | ||
| 455 | int halve_threshold_use; | ||
| 452 | 456 | ||
| 453 | if (!tn) | 457 | if (!tn) |
| 454 | return NULL; | 458 | return NULL; |
| @@ -541,10 +545,17 @@ static struct node *resize(struct trie *t, struct tnode *tn) | |||
| 541 | 545 | ||
| 542 | check_tnode(tn); | 546 | check_tnode(tn); |
| 543 | 547 | ||
| 548 | /* Keep root node larger */ | ||
| 549 | |||
| 550 | if(!tn->parent) | ||
| 551 | inflate_threshold_use = inflate_threshold_root; | ||
| 552 | else | ||
| 553 | inflate_threshold_use = inflate_threshold; | ||
| 554 | |||
| 544 | err = 0; | 555 | err = 0; |
| 545 | while ((tn->full_children > 0 && | 556 | while ((tn->full_children > 0 && |
| 546 | 50 * (tn->full_children + tnode_child_length(tn) - tn->empty_children) >= | 557 | 50 * (tn->full_children + tnode_child_length(tn) - tn->empty_children) >= |
| 547 | inflate_threshold * tnode_child_length(tn))) { | 558 | inflate_threshold_use * tnode_child_length(tn))) { |
| 548 | 559 | ||
| 549 | old_tn = tn; | 560 | old_tn = tn; |
| 550 | tn = inflate(t, tn); | 561 | tn = inflate(t, tn); |
| @@ -564,10 +575,18 @@ static struct node *resize(struct trie *t, struct tnode *tn) | |||
| 564 | * node is above threshold. | 575 | * node is above threshold. |
| 565 | */ | 576 | */ |
| 566 | 577 | ||
| 578 | |||
| 579 | /* Keep root node larger */ | ||
| 580 | |||
| 581 | if(!tn->parent) | ||
| 582 | halve_threshold_use = halve_threshold_root; | ||
| 583 | else | ||
| 584 | halve_threshold_use = halve_threshold; | ||
| 585 | |||
| 567 | err = 0; | 586 | err = 0; |
| 568 | while (tn->bits > 1 && | 587 | while (tn->bits > 1 && |
| 569 | 100 * (tnode_child_length(tn) - tn->empty_children) < | 588 | 100 * (tnode_child_length(tn) - tn->empty_children) < |
| 570 | halve_threshold * tnode_child_length(tn)) { | 589 | halve_threshold_use * tnode_child_length(tn)) { |
| 571 | 590 | ||
| 572 | old_tn = tn; | 591 | old_tn = tn; |
| 573 | tn = halve(t, tn); | 592 | tn = halve(t, tn); |
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index fe3c6d3d0c91..94468a76c5b4 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c | |||
| @@ -494,7 +494,7 @@ void inet_csk_reqsk_queue_prune(struct sock *parent, | |||
| 494 | EXPORT_SYMBOL_GPL(inet_csk_reqsk_queue_prune); | 494 | EXPORT_SYMBOL_GPL(inet_csk_reqsk_queue_prune); |
| 495 | 495 | ||
| 496 | struct sock *inet_csk_clone(struct sock *sk, const struct request_sock *req, | 496 | struct sock *inet_csk_clone(struct sock *sk, const struct request_sock *req, |
| 497 | const unsigned int __nocast priority) | 497 | const gfp_t priority) |
| 498 | { | 498 | { |
| 499 | struct sock *newsk = sk_clone(sk, priority); | 499 | struct sock *newsk = sk_clone(sk, priority); |
| 500 | 500 | ||
diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c index f9076ef3a1a8..a010e9a68811 100644 --- a/net/ipv4/inet_timewait_sock.c +++ b/net/ipv4/inet_timewait_sock.c | |||
| @@ -111,6 +111,7 @@ struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk, const int stat | |||
| 111 | tw->tw_prot = sk->sk_prot_creator; | 111 | tw->tw_prot = sk->sk_prot_creator; |
| 112 | atomic_set(&tw->tw_refcnt, 1); | 112 | atomic_set(&tw->tw_refcnt, 1); |
| 113 | inet_twsk_dead_node_init(tw); | 113 | inet_twsk_dead_node_init(tw); |
| 114 | __module_get(tw->tw_prot->owner); | ||
| 114 | } | 115 | } |
| 115 | 116 | ||
| 116 | return tw; | 117 | return tw; |
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 3f1a263e1249..1ad5202e556b 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
| @@ -391,6 +391,9 @@ static void ip_copy_metadata(struct sk_buff *to, struct sk_buff *from) | |||
| 391 | to->nfct = from->nfct; | 391 | to->nfct = from->nfct; |
| 392 | nf_conntrack_get(to->nfct); | 392 | nf_conntrack_get(to->nfct); |
| 393 | to->nfctinfo = from->nfctinfo; | 393 | to->nfctinfo = from->nfctinfo; |
| 394 | #if defined(CONFIG_IP_VS) || defined(CONFIG_IP_VS_MODULE) | ||
| 395 | to->ipvs_property = from->ipvs_property; | ||
| 396 | #endif | ||
| 394 | #ifdef CONFIG_BRIDGE_NETFILTER | 397 | #ifdef CONFIG_BRIDGE_NETFILTER |
| 395 | nf_bridge_put(to->nf_bridge); | 398 | nf_bridge_put(to->nf_bridge); |
| 396 | to->nf_bridge = from->nf_bridge; | 399 | to->nf_bridge = from->nf_bridge; |
diff --git a/net/ipv4/ipvs/ip_vs_app.c b/net/ipv4/ipvs/ip_vs_app.c index 6e092dadb388..fc6f95aaa969 100644 --- a/net/ipv4/ipvs/ip_vs_app.c +++ b/net/ipv4/ipvs/ip_vs_app.c | |||
| @@ -604,7 +604,7 @@ static struct file_operations ip_vs_app_fops = { | |||
| 604 | /* | 604 | /* |
| 605 | * Replace a segment of data with a new segment | 605 | * Replace a segment of data with a new segment |
| 606 | */ | 606 | */ |
| 607 | int ip_vs_skb_replace(struct sk_buff *skb, int pri, | 607 | int ip_vs_skb_replace(struct sk_buff *skb, gfp_t pri, |
| 608 | char *o_buf, int o_len, char *n_buf, int n_len) | 608 | char *o_buf, int o_len, char *n_buf, int n_len) |
| 609 | { | 609 | { |
| 610 | struct iphdr *iph; | 610 | struct iphdr *iph; |
diff --git a/net/ipv4/netfilter/Kconfig b/net/ipv4/netfilter/Kconfig index 2cd7e7d1ac90..7d917e4ce1d9 100644 --- a/net/ipv4/netfilter/Kconfig +++ b/net/ipv4/netfilter/Kconfig | |||
| @@ -139,9 +139,10 @@ config IP_NF_AMANDA | |||
| 139 | 139 | ||
| 140 | config IP_NF_PPTP | 140 | config IP_NF_PPTP |
| 141 | tristate 'PPTP protocol support' | 141 | tristate 'PPTP protocol support' |
| 142 | depends on IP_NF_CONNTRACK | ||
| 142 | help | 143 | help |
| 143 | This module adds support for PPTP (Point to Point Tunnelling | 144 | This module adds support for PPTP (Point to Point Tunnelling |
| 144 | Protocol, RFC2637) conncection tracking and NAT. | 145 | Protocol, RFC2637) connection tracking and NAT. |
| 145 | 146 | ||
| 146 | If you are running PPTP sessions over a stateful firewall or NAT | 147 | If you are running PPTP sessions over a stateful firewall or NAT |
| 147 | box, you may want to enable this feature. | 148 | box, you may want to enable this feature. |
| @@ -498,9 +499,14 @@ config IP_NF_TARGET_LOG | |||
| 498 | To compile it as a module, choose M here. If unsure, say N. | 499 | To compile it as a module, choose M here. If unsure, say N. |
| 499 | 500 | ||
| 500 | config IP_NF_TARGET_ULOG | 501 | config IP_NF_TARGET_ULOG |
| 501 | tristate "ULOG target support" | 502 | tristate "ULOG target support (OBSOLETE)" |
| 502 | depends on IP_NF_IPTABLES | 503 | depends on IP_NF_IPTABLES |
| 503 | ---help--- | 504 | ---help--- |
| 505 | |||
| 506 | This option enables the old IPv4-only "ipt_ULOG" implementation | ||
| 507 | which has been obsoleted by the new "nfnetlink_log" code (see | ||
| 508 | CONFIG_NETFILTER_NETLINK_LOG). | ||
| 509 | |||
| 504 | This option adds a `ULOG' target, which allows you to create rules in | 510 | This option adds a `ULOG' target, which allows you to create rules in |
| 505 | any iptables table. The packet is passed to a userspace logging | 511 | any iptables table. The packet is passed to a userspace logging |
| 506 | daemon using netlink multicast sockets; unlike the LOG target | 512 | daemon using netlink multicast sockets; unlike the LOG target |
diff --git a/net/ipv4/netfilter/arp_tables.c b/net/ipv4/netfilter/arp_tables.c index fa1634256680..a7969286e6e7 100644 --- a/net/ipv4/netfilter/arp_tables.c +++ b/net/ipv4/netfilter/arp_tables.c | |||
| @@ -716,8 +716,10 @@ static int translate_table(const char *name, | |||
| 716 | } | 716 | } |
| 717 | 717 | ||
| 718 | /* And one copy for every other CPU */ | 718 | /* And one copy for every other CPU */ |
| 719 | for (i = 1; i < num_possible_cpus(); i++) { | 719 | for_each_cpu(i) { |
| 720 | memcpy(newinfo->entries + SMP_ALIGN(newinfo->size)*i, | 720 | if (i == 0) |
| 721 | continue; | ||
| 722 | memcpy(newinfo->entries + SMP_ALIGN(newinfo->size) * i, | ||
| 721 | newinfo->entries, | 723 | newinfo->entries, |
| 722 | SMP_ALIGN(newinfo->size)); | 724 | SMP_ALIGN(newinfo->size)); |
| 723 | } | 725 | } |
| @@ -767,7 +769,7 @@ static void get_counters(const struct arpt_table_info *t, | |||
| 767 | unsigned int cpu; | 769 | unsigned int cpu; |
| 768 | unsigned int i; | 770 | unsigned int i; |
| 769 | 771 | ||
| 770 | for (cpu = 0; cpu < num_possible_cpus(); cpu++) { | 772 | for_each_cpu(cpu) { |
| 771 | i = 0; | 773 | i = 0; |
| 772 | ARPT_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), | 774 | ARPT_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), |
| 773 | t->size, | 775 | t->size, |
| @@ -885,7 +887,8 @@ static int do_replace(void __user *user, unsigned int len) | |||
| 885 | return -ENOMEM; | 887 | return -ENOMEM; |
| 886 | 888 | ||
| 887 | newinfo = vmalloc(sizeof(struct arpt_table_info) | 889 | newinfo = vmalloc(sizeof(struct arpt_table_info) |
| 888 | + SMP_ALIGN(tmp.size) * num_possible_cpus()); | 890 | + SMP_ALIGN(tmp.size) * |
| 891 | (highest_possible_processor_id()+1)); | ||
| 889 | if (!newinfo) | 892 | if (!newinfo) |
| 890 | return -ENOMEM; | 893 | return -ENOMEM; |
| 891 | 894 | ||
| @@ -1158,7 +1161,8 @@ int arpt_register_table(struct arpt_table *table, | |||
| 1158 | = { 0, 0, 0, { 0 }, { 0 }, { } }; | 1161 | = { 0, 0, 0, { 0 }, { 0 }, { } }; |
| 1159 | 1162 | ||
| 1160 | newinfo = vmalloc(sizeof(struct arpt_table_info) | 1163 | newinfo = vmalloc(sizeof(struct arpt_table_info) |
| 1161 | + SMP_ALIGN(repl->size) * num_possible_cpus()); | 1164 | + SMP_ALIGN(repl->size) * |
| 1165 | (highest_possible_processor_id()+1)); | ||
| 1162 | if (!newinfo) { | 1166 | if (!newinfo) { |
| 1163 | ret = -ENOMEM; | 1167 | ret = -ENOMEM; |
| 1164 | return ret; | 1168 | return ret; |
diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c index ea65dd3e517a..07a80b56e8dc 100644 --- a/net/ipv4/netfilter/ip_conntrack_core.c +++ b/net/ipv4/netfilter/ip_conntrack_core.c | |||
| @@ -1119,7 +1119,7 @@ void __ip_ct_refresh_acct(struct ip_conntrack *ct, | |||
| 1119 | unsigned long extra_jiffies, | 1119 | unsigned long extra_jiffies, |
| 1120 | int do_acct) | 1120 | int do_acct) |
| 1121 | { | 1121 | { |
| 1122 | int do_event = 0; | 1122 | int event = 0; |
| 1123 | 1123 | ||
| 1124 | IP_NF_ASSERT(ct->timeout.data == (unsigned long)ct); | 1124 | IP_NF_ASSERT(ct->timeout.data == (unsigned long)ct); |
| 1125 | IP_NF_ASSERT(skb); | 1125 | IP_NF_ASSERT(skb); |
| @@ -1129,13 +1129,13 @@ void __ip_ct_refresh_acct(struct ip_conntrack *ct, | |||
| 1129 | /* If not in hash table, timer will not be active yet */ | 1129 | /* If not in hash table, timer will not be active yet */ |
| 1130 | if (!is_confirmed(ct)) { | 1130 | if (!is_confirmed(ct)) { |
| 1131 | ct->timeout.expires = extra_jiffies; | 1131 | ct->timeout.expires = extra_jiffies; |
| 1132 | do_event = 1; | 1132 | event = IPCT_REFRESH; |
| 1133 | } else { | 1133 | } else { |
| 1134 | /* Need del_timer for race avoidance (may already be dying). */ | 1134 | /* Need del_timer for race avoidance (may already be dying). */ |
| 1135 | if (del_timer(&ct->timeout)) { | 1135 | if (del_timer(&ct->timeout)) { |
| 1136 | ct->timeout.expires = jiffies + extra_jiffies; | 1136 | ct->timeout.expires = jiffies + extra_jiffies; |
| 1137 | add_timer(&ct->timeout); | 1137 | add_timer(&ct->timeout); |
| 1138 | do_event = 1; | 1138 | event = IPCT_REFRESH; |
| 1139 | } | 1139 | } |
| 1140 | } | 1140 | } |
| 1141 | 1141 | ||
| @@ -1144,14 +1144,17 @@ void __ip_ct_refresh_acct(struct ip_conntrack *ct, | |||
| 1144 | ct->counters[CTINFO2DIR(ctinfo)].packets++; | 1144 | ct->counters[CTINFO2DIR(ctinfo)].packets++; |
| 1145 | ct->counters[CTINFO2DIR(ctinfo)].bytes += | 1145 | ct->counters[CTINFO2DIR(ctinfo)].bytes += |
| 1146 | ntohs(skb->nh.iph->tot_len); | 1146 | ntohs(skb->nh.iph->tot_len); |
| 1147 | if ((ct->counters[CTINFO2DIR(ctinfo)].packets & 0x80000000) | ||
| 1148 | || (ct->counters[CTINFO2DIR(ctinfo)].bytes & 0x80000000)) | ||
| 1149 | event |= IPCT_COUNTER_FILLING; | ||
| 1147 | } | 1150 | } |
| 1148 | #endif | 1151 | #endif |
| 1149 | 1152 | ||
| 1150 | write_unlock_bh(&ip_conntrack_lock); | 1153 | write_unlock_bh(&ip_conntrack_lock); |
| 1151 | 1154 | ||
| 1152 | /* must be unlocked when calling event cache */ | 1155 | /* must be unlocked when calling event cache */ |
| 1153 | if (do_event) | 1156 | if (event) |
| 1154 | ip_conntrack_event_cache(IPCT_REFRESH, skb); | 1157 | ip_conntrack_event_cache(event, skb); |
| 1155 | } | 1158 | } |
| 1156 | 1159 | ||
| 1157 | #if defined(CONFIG_IP_NF_CONNTRACK_NETLINK) || \ | 1160 | #if defined(CONFIG_IP_NF_CONNTRACK_NETLINK) || \ |
diff --git a/net/ipv4/netfilter/ip_conntrack_netlink.c b/net/ipv4/netfilter/ip_conntrack_netlink.c index b08a432efcf8..166e6069f121 100644 --- a/net/ipv4/netfilter/ip_conntrack_netlink.c +++ b/net/ipv4/netfilter/ip_conntrack_netlink.c | |||
| @@ -177,11 +177,11 @@ ctnetlink_dump_counters(struct sk_buff *skb, const struct ip_conntrack *ct, | |||
| 177 | struct nfattr *nest_count = NFA_NEST(skb, type); | 177 | struct nfattr *nest_count = NFA_NEST(skb, type); |
| 178 | u_int64_t tmp; | 178 | u_int64_t tmp; |
| 179 | 179 | ||
| 180 | tmp = cpu_to_be64(ct->counters[dir].packets); | 180 | tmp = htonl(ct->counters[dir].packets); |
| 181 | NFA_PUT(skb, CTA_COUNTERS_PACKETS, sizeof(u_int64_t), &tmp); | 181 | NFA_PUT(skb, CTA_COUNTERS32_PACKETS, sizeof(u_int32_t), &tmp); |
| 182 | 182 | ||
| 183 | tmp = cpu_to_be64(ct->counters[dir].bytes); | 183 | tmp = htonl(ct->counters[dir].bytes); |
| 184 | NFA_PUT(skb, CTA_COUNTERS_BYTES, sizeof(u_int64_t), &tmp); | 184 | NFA_PUT(skb, CTA_COUNTERS32_BYTES, sizeof(u_int32_t), &tmp); |
| 185 | 185 | ||
| 186 | NFA_NEST_END(skb, nest_count); | 186 | NFA_NEST_END(skb, nest_count); |
| 187 | 187 | ||
| @@ -833,7 +833,8 @@ out: | |||
| 833 | static inline int | 833 | static inline int |
| 834 | ctnetlink_change_status(struct ip_conntrack *ct, struct nfattr *cda[]) | 834 | ctnetlink_change_status(struct ip_conntrack *ct, struct nfattr *cda[]) |
| 835 | { | 835 | { |
| 836 | unsigned long d, status = *(u_int32_t *)NFA_DATA(cda[CTA_STATUS-1]); | 836 | unsigned long d; |
| 837 | unsigned status = ntohl(*(u_int32_t *)NFA_DATA(cda[CTA_STATUS-1])); | ||
| 837 | d = ct->status ^ status; | 838 | d = ct->status ^ status; |
| 838 | 839 | ||
| 839 | if (d & (IPS_EXPECTED|IPS_CONFIRMED|IPS_DYING)) | 840 | if (d & (IPS_EXPECTED|IPS_CONFIRMED|IPS_DYING)) |
| @@ -948,6 +949,31 @@ ctnetlink_change_timeout(struct ip_conntrack *ct, struct nfattr *cda[]) | |||
| 948 | return 0; | 949 | return 0; |
| 949 | } | 950 | } |
| 950 | 951 | ||
| 952 | static inline int | ||
| 953 | ctnetlink_change_protoinfo(struct ip_conntrack *ct, struct nfattr *cda[]) | ||
| 954 | { | ||
| 955 | struct nfattr *tb[CTA_PROTOINFO_MAX], *attr = cda[CTA_PROTOINFO-1]; | ||
| 956 | struct ip_conntrack_protocol *proto; | ||
| 957 | u_int16_t npt = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum; | ||
| 958 | int err = 0; | ||
| 959 | |||
| 960 | if (nfattr_parse_nested(tb, CTA_PROTOINFO_MAX, attr) < 0) | ||
| 961 | goto nfattr_failure; | ||
| 962 | |||
| 963 | proto = ip_conntrack_proto_find_get(npt); | ||
| 964 | if (!proto) | ||
| 965 | return -EINVAL; | ||
| 966 | |||
| 967 | if (proto->from_nfattr) | ||
| 968 | err = proto->from_nfattr(tb, ct); | ||
| 969 | ip_conntrack_proto_put(proto); | ||
| 970 | |||
| 971 | return err; | ||
| 972 | |||
| 973 | nfattr_failure: | ||
| 974 | return -ENOMEM; | ||
| 975 | } | ||
| 976 | |||
| 951 | static int | 977 | static int |
| 952 | ctnetlink_change_conntrack(struct ip_conntrack *ct, struct nfattr *cda[]) | 978 | ctnetlink_change_conntrack(struct ip_conntrack *ct, struct nfattr *cda[]) |
| 953 | { | 979 | { |
| @@ -973,6 +999,12 @@ ctnetlink_change_conntrack(struct ip_conntrack *ct, struct nfattr *cda[]) | |||
| 973 | return err; | 999 | return err; |
| 974 | } | 1000 | } |
| 975 | 1001 | ||
| 1002 | if (cda[CTA_PROTOINFO-1]) { | ||
| 1003 | err = ctnetlink_change_protoinfo(ct, cda); | ||
| 1004 | if (err < 0) | ||
| 1005 | return err; | ||
| 1006 | } | ||
| 1007 | |||
| 976 | DEBUGP("all done\n"); | 1008 | DEBUGP("all done\n"); |
| 977 | return 0; | 1009 | return 0; |
| 978 | } | 1010 | } |
| @@ -1002,6 +1034,12 @@ ctnetlink_create_conntrack(struct nfattr *cda[], | |||
| 1002 | if (err < 0) | 1034 | if (err < 0) |
| 1003 | goto err; | 1035 | goto err; |
| 1004 | 1036 | ||
| 1037 | if (cda[CTA_PROTOINFO-1]) { | ||
| 1038 | err = ctnetlink_change_protoinfo(ct, cda); | ||
| 1039 | if (err < 0) | ||
| 1040 | return err; | ||
| 1041 | } | ||
| 1042 | |||
| 1005 | ct->helper = ip_conntrack_helper_find_get(rtuple); | 1043 | ct->helper = ip_conntrack_helper_find_get(rtuple); |
| 1006 | 1044 | ||
| 1007 | add_timer(&ct->timeout); | 1045 | add_timer(&ct->timeout); |
diff --git a/net/ipv4/netfilter/ip_conntrack_proto_icmp.c b/net/ipv4/netfilter/ip_conntrack_proto_icmp.c index 838d1d69b36e..98f0015dd255 100644 --- a/net/ipv4/netfilter/ip_conntrack_proto_icmp.c +++ b/net/ipv4/netfilter/ip_conntrack_proto_icmp.c | |||
| @@ -296,8 +296,7 @@ static int icmp_nfattr_to_tuple(struct nfattr *tb[], | |||
| 296 | struct ip_conntrack_tuple *tuple) | 296 | struct ip_conntrack_tuple *tuple) |
| 297 | { | 297 | { |
| 298 | if (!tb[CTA_PROTO_ICMP_TYPE-1] | 298 | if (!tb[CTA_PROTO_ICMP_TYPE-1] |
| 299 | || !tb[CTA_PROTO_ICMP_CODE-1] | 299 | || !tb[CTA_PROTO_ICMP_CODE-1]) |
| 300 | || !tb[CTA_PROTO_ICMP_ID-1]) | ||
| 301 | return -1; | 300 | return -1; |
| 302 | 301 | ||
| 303 | tuple->dst.u.icmp.type = | 302 | tuple->dst.u.icmp.type = |
diff --git a/net/ipv4/netfilter/ip_conntrack_proto_tcp.c b/net/ipv4/netfilter/ip_conntrack_proto_tcp.c index 121760d6cc50..d6701cafbcc2 100644 --- a/net/ipv4/netfilter/ip_conntrack_proto_tcp.c +++ b/net/ipv4/netfilter/ip_conntrack_proto_tcp.c | |||
| @@ -341,17 +341,43 @@ static int tcp_print_conntrack(struct seq_file *s, | |||
| 341 | static int tcp_to_nfattr(struct sk_buff *skb, struct nfattr *nfa, | 341 | static int tcp_to_nfattr(struct sk_buff *skb, struct nfattr *nfa, |
| 342 | const struct ip_conntrack *ct) | 342 | const struct ip_conntrack *ct) |
| 343 | { | 343 | { |
| 344 | struct nfattr *nest_parms = NFA_NEST(skb, CTA_PROTOINFO_TCP); | ||
| 345 | |||
| 344 | read_lock_bh(&tcp_lock); | 346 | read_lock_bh(&tcp_lock); |
| 345 | NFA_PUT(skb, CTA_PROTOINFO_TCP_STATE, sizeof(u_int8_t), | 347 | NFA_PUT(skb, CTA_PROTOINFO_TCP_STATE, sizeof(u_int8_t), |
| 346 | &ct->proto.tcp.state); | 348 | &ct->proto.tcp.state); |
| 347 | read_unlock_bh(&tcp_lock); | 349 | read_unlock_bh(&tcp_lock); |
| 348 | 350 | ||
| 351 | NFA_NEST_END(skb, nest_parms); | ||
| 352 | |||
| 349 | return 0; | 353 | return 0; |
| 350 | 354 | ||
| 351 | nfattr_failure: | 355 | nfattr_failure: |
| 352 | read_unlock_bh(&tcp_lock); | 356 | read_unlock_bh(&tcp_lock); |
| 353 | return -1; | 357 | return -1; |
| 354 | } | 358 | } |
| 359 | |||
| 360 | static int nfattr_to_tcp(struct nfattr *cda[], struct ip_conntrack *ct) | ||
| 361 | { | ||
| 362 | struct nfattr *attr = cda[CTA_PROTOINFO_TCP-1]; | ||
| 363 | struct nfattr *tb[CTA_PROTOINFO_TCP_MAX]; | ||
| 364 | |||
| 365 | if (nfattr_parse_nested(tb, CTA_PROTOINFO_TCP_MAX, attr) < 0) | ||
| 366 | goto nfattr_failure; | ||
| 367 | |||
| 368 | if (!tb[CTA_PROTOINFO_TCP_STATE-1]) | ||
| 369 | return -EINVAL; | ||
| 370 | |||
| 371 | write_lock_bh(&tcp_lock); | ||
| 372 | ct->proto.tcp.state = | ||
| 373 | *(u_int8_t *)NFA_DATA(tb[CTA_PROTOINFO_TCP_STATE-1]); | ||
| 374 | write_unlock_bh(&tcp_lock); | ||
| 375 | |||
| 376 | return 0; | ||
| 377 | |||
| 378 | nfattr_failure: | ||
| 379 | return -1; | ||
| 380 | } | ||
| 355 | #endif | 381 | #endif |
| 356 | 382 | ||
| 357 | static unsigned int get_conntrack_index(const struct tcphdr *tcph) | 383 | static unsigned int get_conntrack_index(const struct tcphdr *tcph) |
| @@ -1123,6 +1149,7 @@ struct ip_conntrack_protocol ip_conntrack_protocol_tcp = | |||
| 1123 | #if defined(CONFIG_IP_NF_CONNTRACK_NETLINK) || \ | 1149 | #if defined(CONFIG_IP_NF_CONNTRACK_NETLINK) || \ |
| 1124 | defined(CONFIG_IP_NF_CONNTRACK_NETLINK_MODULE) | 1150 | defined(CONFIG_IP_NF_CONNTRACK_NETLINK_MODULE) |
| 1125 | .to_nfattr = tcp_to_nfattr, | 1151 | .to_nfattr = tcp_to_nfattr, |
| 1152 | .from_nfattr = nfattr_to_tcp, | ||
| 1126 | .tuple_to_nfattr = ip_ct_port_tuple_to_nfattr, | 1153 | .tuple_to_nfattr = ip_ct_port_tuple_to_nfattr, |
| 1127 | .nfattr_to_tuple = ip_ct_port_nfattr_to_tuple, | 1154 | .nfattr_to_tuple = ip_ct_port_nfattr_to_tuple, |
| 1128 | #endif | 1155 | #endif |
diff --git a/net/ipv4/netfilter/ip_tables.c b/net/ipv4/netfilter/ip_tables.c index eef99a1b5de6..75c27e92f6ab 100644 --- a/net/ipv4/netfilter/ip_tables.c +++ b/net/ipv4/netfilter/ip_tables.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <asm/semaphore.h> | 27 | #include <asm/semaphore.h> |
| 28 | #include <linux/proc_fs.h> | 28 | #include <linux/proc_fs.h> |
| 29 | #include <linux/err.h> | 29 | #include <linux/err.h> |
| 30 | #include <linux/cpumask.h> | ||
| 30 | 31 | ||
| 31 | #include <linux/netfilter_ipv4/ip_tables.h> | 32 | #include <linux/netfilter_ipv4/ip_tables.h> |
| 32 | 33 | ||
| @@ -921,8 +922,10 @@ translate_table(const char *name, | |||
| 921 | } | 922 | } |
| 922 | 923 | ||
| 923 | /* And one copy for every other CPU */ | 924 | /* And one copy for every other CPU */ |
| 924 | for (i = 1; i < num_possible_cpus(); i++) { | 925 | for_each_cpu(i) { |
| 925 | memcpy(newinfo->entries + SMP_ALIGN(newinfo->size)*i, | 926 | if (i == 0) |
| 927 | continue; | ||
| 928 | memcpy(newinfo->entries + SMP_ALIGN(newinfo->size) * i, | ||
| 926 | newinfo->entries, | 929 | newinfo->entries, |
| 927 | SMP_ALIGN(newinfo->size)); | 930 | SMP_ALIGN(newinfo->size)); |
| 928 | } | 931 | } |
| @@ -943,7 +946,7 @@ replace_table(struct ipt_table *table, | |||
| 943 | struct ipt_entry *table_base; | 946 | struct ipt_entry *table_base; |
| 944 | unsigned int i; | 947 | unsigned int i; |
| 945 | 948 | ||
| 946 | for (i = 0; i < num_possible_cpus(); i++) { | 949 | for_each_cpu(i) { |
| 947 | table_base = | 950 | table_base = |
| 948 | (void *)newinfo->entries | 951 | (void *)newinfo->entries |
| 949 | + TABLE_OFFSET(newinfo, i); | 952 | + TABLE_OFFSET(newinfo, i); |
| @@ -990,7 +993,7 @@ get_counters(const struct ipt_table_info *t, | |||
| 990 | unsigned int cpu; | 993 | unsigned int cpu; |
| 991 | unsigned int i; | 994 | unsigned int i; |
| 992 | 995 | ||
| 993 | for (cpu = 0; cpu < num_possible_cpus(); cpu++) { | 996 | for_each_cpu(cpu) { |
| 994 | i = 0; | 997 | i = 0; |
| 995 | IPT_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), | 998 | IPT_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), |
| 996 | t->size, | 999 | t->size, |
| @@ -1128,7 +1131,8 @@ do_replace(void __user *user, unsigned int len) | |||
| 1128 | return -ENOMEM; | 1131 | return -ENOMEM; |
| 1129 | 1132 | ||
| 1130 | newinfo = vmalloc(sizeof(struct ipt_table_info) | 1133 | newinfo = vmalloc(sizeof(struct ipt_table_info) |
| 1131 | + SMP_ALIGN(tmp.size) * num_possible_cpus()); | 1134 | + SMP_ALIGN(tmp.size) * |
| 1135 | (highest_possible_processor_id()+1)); | ||
| 1132 | if (!newinfo) | 1136 | if (!newinfo) |
| 1133 | return -ENOMEM; | 1137 | return -ENOMEM; |
| 1134 | 1138 | ||
| @@ -1458,7 +1462,8 @@ int ipt_register_table(struct ipt_table *table, const struct ipt_replace *repl) | |||
| 1458 | = { 0, 0, 0, { 0 }, { 0 }, { } }; | 1462 | = { 0, 0, 0, { 0 }, { 0 }, { } }; |
| 1459 | 1463 | ||
| 1460 | newinfo = vmalloc(sizeof(struct ipt_table_info) | 1464 | newinfo = vmalloc(sizeof(struct ipt_table_info) |
| 1461 | + SMP_ALIGN(repl->size) * num_possible_cpus()); | 1465 | + SMP_ALIGN(repl->size) * |
| 1466 | (highest_possible_processor_id()+1)); | ||
| 1462 | if (!newinfo) | 1467 | if (!newinfo) |
| 1463 | return -ENOMEM; | 1468 | return -ENOMEM; |
| 1464 | 1469 | ||
diff --git a/net/ipv4/tcp_bic.c b/net/ipv4/tcp_bic.c index b940346de4e7..6d80e063c187 100644 --- a/net/ipv4/tcp_bic.c +++ b/net/ipv4/tcp_bic.c | |||
| @@ -136,7 +136,7 @@ static inline void bictcp_update(struct bictcp *ca, u32 cwnd) | |||
| 136 | else if (cwnd < ca->last_max_cwnd + max_increment*(BICTCP_B-1)) | 136 | else if (cwnd < ca->last_max_cwnd + max_increment*(BICTCP_B-1)) |
| 137 | /* slow start */ | 137 | /* slow start */ |
| 138 | ca->cnt = (cwnd * (BICTCP_B-1)) | 138 | ca->cnt = (cwnd * (BICTCP_B-1)) |
| 139 | / cwnd-ca->last_max_cwnd; | 139 | / (cwnd - ca->last_max_cwnd); |
| 140 | else | 140 | else |
| 141 | /* linear increase */ | 141 | /* linear increase */ |
| 142 | ca->cnt = cwnd / max_increment; | 142 | ca->cnt = cwnd / max_increment; |
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index c5b911f9b662..b907456a79f4 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
| @@ -435,8 +435,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss | |||
| 435 | int nsize, old_factor; | 435 | int nsize, old_factor; |
| 436 | u16 flags; | 436 | u16 flags; |
| 437 | 437 | ||
| 438 | BUG_ON(len >= skb->len); | 438 | BUG_ON(len > skb->len); |
| 439 | |||
| 440 | nsize = skb_headlen(skb) - len; | 439 | nsize = skb_headlen(skb) - len; |
| 441 | if (nsize < 0) | 440 | if (nsize < 0) |
| 442 | nsize = 0; | 441 | nsize = 0; |
| @@ -1610,7 +1609,7 @@ void tcp_send_fin(struct sock *sk) | |||
| 1610 | * was unread data in the receive queue. This behavior is recommended | 1609 | * was unread data in the receive queue. This behavior is recommended |
| 1611 | * by draft-ietf-tcpimpl-prob-03.txt section 3.10. -DaveM | 1610 | * by draft-ietf-tcpimpl-prob-03.txt section 3.10. -DaveM |
| 1612 | */ | 1611 | */ |
| 1613 | void tcp_send_active_reset(struct sock *sk, unsigned int __nocast priority) | 1612 | void tcp_send_active_reset(struct sock *sk, gfp_t priority) |
| 1614 | { | 1613 | { |
| 1615 | struct tcp_sock *tp = tcp_sk(sk); | 1614 | struct tcp_sock *tp = tcp_sk(sk); |
| 1616 | struct sk_buff *skb; | 1615 | struct sk_buff *skb; |
diff --git a/net/ipv6/esp6.c b/net/ipv6/esp6.c index 9b27460f0cc7..40d9a1935ab5 100644 --- a/net/ipv6/esp6.c +++ b/net/ipv6/esp6.c | |||
| @@ -31,6 +31,7 @@ | |||
| 31 | #include <net/esp.h> | 31 | #include <net/esp.h> |
| 32 | #include <asm/scatterlist.h> | 32 | #include <asm/scatterlist.h> |
| 33 | #include <linux/crypto.h> | 33 | #include <linux/crypto.h> |
| 34 | #include <linux/kernel.h> | ||
| 34 | #include <linux/pfkeyv2.h> | 35 | #include <linux/pfkeyv2.h> |
| 35 | #include <linux/random.h> | 36 | #include <linux/random.h> |
| 36 | #include <net/icmp.h> | 37 | #include <net/icmp.h> |
| @@ -66,10 +67,10 @@ static int esp6_output(struct xfrm_state *x, struct sk_buff *skb) | |||
| 66 | 67 | ||
| 67 | alen = esp->auth.icv_trunc_len; | 68 | alen = esp->auth.icv_trunc_len; |
| 68 | tfm = esp->conf.tfm; | 69 | tfm = esp->conf.tfm; |
| 69 | blksize = (crypto_tfm_alg_blocksize(tfm) + 3) & ~3; | 70 | blksize = ALIGN(crypto_tfm_alg_blocksize(tfm), 4); |
| 70 | clen = (clen + 2 + blksize-1)&~(blksize-1); | 71 | clen = ALIGN(clen + 2, blksize); |
| 71 | if (esp->conf.padlen) | 72 | if (esp->conf.padlen) |
| 72 | clen = (clen + esp->conf.padlen-1)&~(esp->conf.padlen-1); | 73 | clen = ALIGN(clen, esp->conf.padlen); |
| 73 | 74 | ||
| 74 | if ((nfrags = skb_cow_data(skb, clen-skb->len+alen, &trailer)) < 0) { | 75 | if ((nfrags = skb_cow_data(skb, clen-skb->len+alen, &trailer)) < 0) { |
| 75 | goto error; | 76 | goto error; |
| @@ -133,7 +134,7 @@ static int esp6_input(struct xfrm_state *x, struct xfrm_decap_state *decap, stru | |||
| 133 | struct ipv6_esp_hdr *esph; | 134 | struct ipv6_esp_hdr *esph; |
| 134 | struct esp_data *esp = x->data; | 135 | struct esp_data *esp = x->data; |
| 135 | struct sk_buff *trailer; | 136 | struct sk_buff *trailer; |
| 136 | int blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); | 137 | int blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); |
| 137 | int alen = esp->auth.icv_trunc_len; | 138 | int alen = esp->auth.icv_trunc_len; |
| 138 | int elen = skb->len - sizeof(struct ipv6_esp_hdr) - esp->conf.ivlen - alen; | 139 | int elen = skb->len - sizeof(struct ipv6_esp_hdr) - esp->conf.ivlen - alen; |
| 139 | 140 | ||
| @@ -235,16 +236,17 @@ out_nofree: | |||
| 235 | static u32 esp6_get_max_size(struct xfrm_state *x, int mtu) | 236 | static u32 esp6_get_max_size(struct xfrm_state *x, int mtu) |
| 236 | { | 237 | { |
| 237 | struct esp_data *esp = x->data; | 238 | struct esp_data *esp = x->data; |
| 238 | u32 blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); | 239 | u32 blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); |
| 239 | 240 | ||
| 240 | if (x->props.mode) { | 241 | if (x->props.mode) { |
| 241 | mtu = (mtu + 2 + blksize-1)&~(blksize-1); | 242 | mtu = ALIGN(mtu + 2, blksize); |
| 242 | } else { | 243 | } else { |
| 243 | /* The worst case. */ | 244 | /* The worst case. */ |
| 244 | mtu += 2 + blksize; | 245 | u32 padsize = ((blksize - 1) & 7) + 1; |
| 246 | mtu = ALIGN(mtu + 2, padsize) + blksize - padsize; | ||
| 245 | } | 247 | } |
| 246 | if (esp->conf.padlen) | 248 | if (esp->conf.padlen) |
| 247 | mtu = (mtu + esp->conf.padlen-1)&~(esp->conf.padlen-1); | 249 | mtu = ALIGN(mtu, esp->conf.padlen); |
| 248 | 250 | ||
| 249 | return mtu + x->props.header_len + esp->auth.icv_full_len; | 251 | return mtu + x->props.header_len + esp->auth.icv_full_len; |
| 250 | } | 252 | } |
diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c index f841bde30c18..bbbe80cdaf72 100644 --- a/net/ipv6/ip6_flowlabel.c +++ b/net/ipv6/ip6_flowlabel.c | |||
| @@ -483,7 +483,7 @@ int ipv6_flowlabel_opt(struct sock *sk, char __user *optval, int optlen) | |||
| 483 | goto done; | 483 | goto done; |
| 484 | } | 484 | } |
| 485 | fl1 = sfl->fl; | 485 | fl1 = sfl->fl; |
| 486 | atomic_inc(&fl->users); | 486 | atomic_inc(&fl1->users); |
| 487 | break; | 487 | break; |
| 488 | } | 488 | } |
| 489 | } | 489 | } |
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index 519899fb11d5..39a96c768102 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c | |||
| @@ -1393,7 +1393,7 @@ static void mld_sendpack(struct sk_buff *skb) | |||
| 1393 | 1393 | ||
| 1394 | static int grec_size(struct ifmcaddr6 *pmc, int type, int gdel, int sdel) | 1394 | static int grec_size(struct ifmcaddr6 *pmc, int type, int gdel, int sdel) |
| 1395 | { | 1395 | { |
| 1396 | return sizeof(struct mld2_grec) + 4*mld_scount(pmc,type,gdel,sdel); | 1396 | return sizeof(struct mld2_grec) + 16 * mld_scount(pmc,type,gdel,sdel); |
| 1397 | } | 1397 | } |
| 1398 | 1398 | ||
| 1399 | static struct sk_buff *add_grhead(struct sk_buff *skb, struct ifmcaddr6 *pmc, | 1399 | static struct sk_buff *add_grhead(struct sk_buff *skb, struct ifmcaddr6 *pmc, |
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 555a31347eda..305d9ee6d7db 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
| @@ -1450,7 +1450,7 @@ void ndisc_send_redirect(struct sk_buff *skb, struct neighbour *neigh, | |||
| 1450 | 1450 | ||
| 1451 | static void pndisc_redo(struct sk_buff *skb) | 1451 | static void pndisc_redo(struct sk_buff *skb) |
| 1452 | { | 1452 | { |
| 1453 | ndisc_rcv(skb); | 1453 | ndisc_recv_ns(skb); |
| 1454 | kfree_skb(skb); | 1454 | kfree_skb(skb); |
| 1455 | } | 1455 | } |
| 1456 | 1456 | ||
diff --git a/net/ipv6/netfilter/ip6_tables.c b/net/ipv6/netfilter/ip6_tables.c index 2da514b16d95..21deec25a12b 100644 --- a/net/ipv6/netfilter/ip6_tables.c +++ b/net/ipv6/netfilter/ip6_tables.c | |||
| @@ -28,6 +28,7 @@ | |||
| 28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
| 29 | #include <asm/semaphore.h> | 29 | #include <asm/semaphore.h> |
| 30 | #include <linux/proc_fs.h> | 30 | #include <linux/proc_fs.h> |
| 31 | #include <linux/cpumask.h> | ||
| 31 | 32 | ||
| 32 | #include <linux/netfilter_ipv6/ip6_tables.h> | 33 | #include <linux/netfilter_ipv6/ip6_tables.h> |
| 33 | 34 | ||
| @@ -950,8 +951,10 @@ translate_table(const char *name, | |||
| 950 | } | 951 | } |
| 951 | 952 | ||
| 952 | /* And one copy for every other CPU */ | 953 | /* And one copy for every other CPU */ |
| 953 | for (i = 1; i < num_possible_cpus(); i++) { | 954 | for_each_cpu(i) { |
| 954 | memcpy(newinfo->entries + SMP_ALIGN(newinfo->size)*i, | 955 | if (i == 0) |
| 956 | continue; | ||
| 957 | memcpy(newinfo->entries + SMP_ALIGN(newinfo->size) * i, | ||
| 955 | newinfo->entries, | 958 | newinfo->entries, |
| 956 | SMP_ALIGN(newinfo->size)); | 959 | SMP_ALIGN(newinfo->size)); |
| 957 | } | 960 | } |
| @@ -972,7 +975,7 @@ replace_table(struct ip6t_table *table, | |||
| 972 | struct ip6t_entry *table_base; | 975 | struct ip6t_entry *table_base; |
| 973 | unsigned int i; | 976 | unsigned int i; |
| 974 | 977 | ||
| 975 | for (i = 0; i < num_possible_cpus(); i++) { | 978 | for_each_cpu(i) { |
| 976 | table_base = | 979 | table_base = |
| 977 | (void *)newinfo->entries | 980 | (void *)newinfo->entries |
| 978 | + TABLE_OFFSET(newinfo, i); | 981 | + TABLE_OFFSET(newinfo, i); |
| @@ -1019,7 +1022,7 @@ get_counters(const struct ip6t_table_info *t, | |||
| 1019 | unsigned int cpu; | 1022 | unsigned int cpu; |
| 1020 | unsigned int i; | 1023 | unsigned int i; |
| 1021 | 1024 | ||
| 1022 | for (cpu = 0; cpu < num_possible_cpus(); cpu++) { | 1025 | for_each_cpu(cpu) { |
| 1023 | i = 0; | 1026 | i = 0; |
| 1024 | IP6T_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), | 1027 | IP6T_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), |
| 1025 | t->size, | 1028 | t->size, |
| @@ -1153,7 +1156,8 @@ do_replace(void __user *user, unsigned int len) | |||
| 1153 | return -ENOMEM; | 1156 | return -ENOMEM; |
| 1154 | 1157 | ||
| 1155 | newinfo = vmalloc(sizeof(struct ip6t_table_info) | 1158 | newinfo = vmalloc(sizeof(struct ip6t_table_info) |
| 1156 | + SMP_ALIGN(tmp.size) * num_possible_cpus()); | 1159 | + SMP_ALIGN(tmp.size) * |
| 1160 | (highest_possible_processor_id()+1)); | ||
| 1157 | if (!newinfo) | 1161 | if (!newinfo) |
| 1158 | return -ENOMEM; | 1162 | return -ENOMEM; |
| 1159 | 1163 | ||
| @@ -1467,7 +1471,8 @@ int ip6t_register_table(struct ip6t_table *table, | |||
| 1467 | = { 0, 0, 0, { 0 }, { 0 }, { } }; | 1471 | = { 0, 0, 0, { 0 }, { 0 }, { } }; |
| 1468 | 1472 | ||
| 1469 | newinfo = vmalloc(sizeof(struct ip6t_table_info) | 1473 | newinfo = vmalloc(sizeof(struct ip6t_table_info) |
| 1470 | + SMP_ALIGN(repl->size) * num_possible_cpus()); | 1474 | + SMP_ALIGN(repl->size) * |
| 1475 | (highest_possible_processor_id()+1)); | ||
| 1471 | if (!newinfo) | 1476 | if (!newinfo) |
| 1472 | return -ENOMEM; | 1477 | return -ENOMEM; |
| 1473 | 1478 | ||
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index e4cad11f284a..bf9519341fd3 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
| @@ -99,7 +99,7 @@ static int udp_v6_get_port(struct sock *sk, unsigned short snum) | |||
| 99 | next:; | 99 | next:; |
| 100 | } | 100 | } |
| 101 | result = best; | 101 | result = best; |
| 102 | for(;; result += UDP_HTABLE_SIZE) { | 102 | for(i = 0; i < (1 << 16) / UDP_HTABLE_SIZE; i++, result += UDP_HTABLE_SIZE) { |
| 103 | if (result > sysctl_local_port_range[1]) | 103 | if (result > sysctl_local_port_range[1]) |
| 104 | result = sysctl_local_port_range[0] | 104 | result = sysctl_local_port_range[0] |
| 105 | + ((result - sysctl_local_port_range[0]) & | 105 | + ((result - sysctl_local_port_range[0]) & |
| @@ -107,6 +107,8 @@ static int udp_v6_get_port(struct sock *sk, unsigned short snum) | |||
| 107 | if (!udp_lport_inuse(result)) | 107 | if (!udp_lport_inuse(result)) |
| 108 | break; | 108 | break; |
| 109 | } | 109 | } |
| 110 | if (i >= (1 << 16) / UDP_HTABLE_SIZE) | ||
| 111 | goto fail; | ||
| 110 | gotit: | 112 | gotit: |
| 111 | udp_port_rover = snum = result; | 113 | udp_port_rover = snum = result; |
| 112 | } else { | 114 | } else { |
diff --git a/net/key/af_key.c b/net/key/af_key.c index 4879743b945a..39031684b65c 100644 --- a/net/key/af_key.c +++ b/net/key/af_key.c | |||
| @@ -185,7 +185,7 @@ static int pfkey_release(struct socket *sock) | |||
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | static int pfkey_broadcast_one(struct sk_buff *skb, struct sk_buff **skb2, | 187 | static int pfkey_broadcast_one(struct sk_buff *skb, struct sk_buff **skb2, |
| 188 | int allocation, struct sock *sk) | 188 | gfp_t allocation, struct sock *sk) |
| 189 | { | 189 | { |
| 190 | int err = -ENOBUFS; | 190 | int err = -ENOBUFS; |
| 191 | 191 | ||
| @@ -217,7 +217,7 @@ static int pfkey_broadcast_one(struct sk_buff *skb, struct sk_buff **skb2, | |||
| 217 | #define BROADCAST_ONE 1 | 217 | #define BROADCAST_ONE 1 |
| 218 | #define BROADCAST_REGISTERED 2 | 218 | #define BROADCAST_REGISTERED 2 |
| 219 | #define BROADCAST_PROMISC_ONLY 4 | 219 | #define BROADCAST_PROMISC_ONLY 4 |
| 220 | static int pfkey_broadcast(struct sk_buff *skb, int allocation, | 220 | static int pfkey_broadcast(struct sk_buff *skb, gfp_t allocation, |
| 221 | int broadcast_flags, struct sock *one_sk) | 221 | int broadcast_flags, struct sock *one_sk) |
| 222 | { | 222 | { |
| 223 | struct sock *sk; | 223 | struct sock *sk; |
| @@ -1416,7 +1416,8 @@ static int pfkey_get(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hdr, | |||
| 1416 | return 0; | 1416 | return 0; |
| 1417 | } | 1417 | } |
| 1418 | 1418 | ||
| 1419 | static struct sk_buff *compose_sadb_supported(struct sadb_msg *orig, int allocation) | 1419 | static struct sk_buff *compose_sadb_supported(struct sadb_msg *orig, |
| 1420 | gfp_t allocation) | ||
| 1420 | { | 1421 | { |
| 1421 | struct sk_buff *skb; | 1422 | struct sk_buff *skb; |
| 1422 | struct sadb_msg *hdr; | 1423 | struct sadb_msg *hdr; |
| @@ -2153,6 +2154,7 @@ out: | |||
| 2153 | 2154 | ||
| 2154 | static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hdr, void **ext_hdrs) | 2155 | static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hdr, void **ext_hdrs) |
| 2155 | { | 2156 | { |
| 2157 | unsigned int dir; | ||
| 2156 | int err; | 2158 | int err; |
| 2157 | struct sadb_x_policy *pol; | 2159 | struct sadb_x_policy *pol; |
| 2158 | struct xfrm_policy *xp; | 2160 | struct xfrm_policy *xp; |
| @@ -2161,7 +2163,11 @@ static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h | |||
| 2161 | if ((pol = ext_hdrs[SADB_X_EXT_POLICY-1]) == NULL) | 2163 | if ((pol = ext_hdrs[SADB_X_EXT_POLICY-1]) == NULL) |
| 2162 | return -EINVAL; | 2164 | return -EINVAL; |
| 2163 | 2165 | ||
| 2164 | xp = xfrm_policy_byid(0, pol->sadb_x_policy_id, | 2166 | dir = xfrm_policy_id2dir(pol->sadb_x_policy_id); |
| 2167 | if (dir >= XFRM_POLICY_MAX) | ||
| 2168 | return -EINVAL; | ||
| 2169 | |||
| 2170 | xp = xfrm_policy_byid(dir, pol->sadb_x_policy_id, | ||
| 2165 | hdr->sadb_msg_type == SADB_X_SPDDELETE2); | 2171 | hdr->sadb_msg_type == SADB_X_SPDDELETE2); |
| 2166 | if (xp == NULL) | 2172 | if (xp == NULL) |
| 2167 | return -ENOENT; | 2173 | return -ENOENT; |
| @@ -2173,9 +2179,9 @@ static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *h | |||
| 2173 | if (hdr->sadb_msg_type == SADB_X_SPDDELETE2) { | 2179 | if (hdr->sadb_msg_type == SADB_X_SPDDELETE2) { |
| 2174 | c.data.byid = 1; | 2180 | c.data.byid = 1; |
| 2175 | c.event = XFRM_MSG_DELPOLICY; | 2181 | c.event = XFRM_MSG_DELPOLICY; |
| 2176 | km_policy_notify(xp, pol->sadb_x_policy_dir-1, &c); | 2182 | km_policy_notify(xp, dir, &c); |
| 2177 | } else { | 2183 | } else { |
| 2178 | err = key_pol_get_resp(sk, xp, hdr, pol->sadb_x_policy_dir-1); | 2184 | err = key_pol_get_resp(sk, xp, hdr, dir); |
| 2179 | } | 2185 | } |
| 2180 | 2186 | ||
| 2181 | xfrm_pol_put(xp); | 2187 | xfrm_pol_put(xp); |
diff --git a/net/llc/llc_conn.c b/net/llc/llc_conn.c index 042b24a8ca4c..c761c15da421 100644 --- a/net/llc/llc_conn.c +++ b/net/llc/llc_conn.c | |||
| @@ -867,8 +867,7 @@ static void llc_sk_init(struct sock* sk) | |||
| 867 | * Allocates a LLC sock and initializes it. Returns the new LLC sock | 867 | * Allocates a LLC sock and initializes it. Returns the new LLC sock |
| 868 | * or %NULL if there's no memory available for one | 868 | * or %NULL if there's no memory available for one |
| 869 | */ | 869 | */ |
| 870 | struct sock *llc_sk_alloc(int family, unsigned int __nocast priority, | 870 | struct sock *llc_sk_alloc(int family, gfp_t priority, struct proto *prot) |
| 871 | struct proto *prot) | ||
| 872 | { | 871 | { |
| 873 | struct sock *sk = sk_alloc(family, priority, prot, 1); | 872 | struct sock *sk = sk_alloc(family, priority, prot, 1); |
| 874 | 873 | ||
diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c index 49a3900e3d32..4bc27a6334c1 100644 --- a/net/netfilter/nfnetlink.c +++ b/net/netfilter/nfnetlink.c | |||
| @@ -133,7 +133,7 @@ int nfattr_parse(struct nfattr *tb[], int maxattr, struct nfattr *nfa, int len) | |||
| 133 | memset(tb, 0, sizeof(struct nfattr *) * maxattr); | 133 | memset(tb, 0, sizeof(struct nfattr *) * maxattr); |
| 134 | 134 | ||
| 135 | while (NFA_OK(nfa, len)) { | 135 | while (NFA_OK(nfa, len)) { |
| 136 | unsigned flavor = nfa->nfa_type; | 136 | unsigned flavor = NFA_TYPE(nfa); |
| 137 | if (flavor && flavor <= maxattr) | 137 | if (flavor && flavor <= maxattr) |
| 138 | tb[flavor-1] = nfa; | 138 | tb[flavor-1] = nfa; |
| 139 | nfa = NFA_NEXT(nfa, len); | 139 | nfa = NFA_NEXT(nfa, len); |
| @@ -177,7 +177,7 @@ nfnetlink_check_attributes(struct nfnetlink_subsystem *subsys, | |||
| 177 | int attrlen = nlh->nlmsg_len - NLMSG_ALIGN(min_len); | 177 | int attrlen = nlh->nlmsg_len - NLMSG_ALIGN(min_len); |
| 178 | 178 | ||
| 179 | while (NFA_OK(attr, attrlen)) { | 179 | while (NFA_OK(attr, attrlen)) { |
| 180 | unsigned flavor = attr->nfa_type; | 180 | unsigned flavor = NFA_TYPE(attr); |
| 181 | if (flavor) { | 181 | if (flavor) { |
| 182 | if (flavor > attr_count) | 182 | if (flavor > attr_count) |
| 183 | return -EINVAL; | 183 | return -EINVAL; |
| @@ -195,7 +195,7 @@ nfnetlink_check_attributes(struct nfnetlink_subsystem *subsys, | |||
| 195 | 195 | ||
| 196 | int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) | 196 | int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, int echo) |
| 197 | { | 197 | { |
| 198 | int allocation = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL; | 198 | gfp_t allocation = in_interrupt() ? GFP_ATOMIC : GFP_KERNEL; |
| 199 | int err = 0; | 199 | int err = 0; |
| 200 | 200 | ||
| 201 | NETLINK_CB(skb).dst_group = group; | 201 | NETLINK_CB(skb).dst_group = group; |
diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c index a64e1d5ce3ca..678c3f2c0d0b 100644 --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c | |||
| @@ -758,7 +758,7 @@ void netlink_detachskb(struct sock *sk, struct sk_buff *skb) | |||
| 758 | } | 758 | } |
| 759 | 759 | ||
| 760 | static inline struct sk_buff *netlink_trim(struct sk_buff *skb, | 760 | static inline struct sk_buff *netlink_trim(struct sk_buff *skb, |
| 761 | unsigned int __nocast allocation) | 761 | gfp_t allocation) |
| 762 | { | 762 | { |
| 763 | int delta; | 763 | int delta; |
| 764 | 764 | ||
| @@ -880,7 +880,7 @@ out: | |||
| 880 | } | 880 | } |
| 881 | 881 | ||
| 882 | int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, u32 pid, | 882 | int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, u32 pid, |
| 883 | u32 group, unsigned int __nocast allocation) | 883 | u32 group, gfp_t allocation) |
| 884 | { | 884 | { |
| 885 | struct netlink_broadcast_data info; | 885 | struct netlink_broadcast_data info; |
| 886 | struct hlist_node *node; | 886 | struct hlist_node *node; |
diff --git a/net/netrom/nr_dev.c b/net/netrom/nr_dev.c index 4e66eef9a034..509afddae569 100644 --- a/net/netrom/nr_dev.c +++ b/net/netrom/nr_dev.c | |||
| @@ -58,7 +58,7 @@ int nr_rx_ip(struct sk_buff *skb, struct net_device *dev) | |||
| 58 | 58 | ||
| 59 | /* Spoof incoming device */ | 59 | /* Spoof incoming device */ |
| 60 | skb->dev = dev; | 60 | skb->dev = dev; |
| 61 | skb->h.raw = skb->data; | 61 | skb->mac.raw = skb->nh.raw; |
| 62 | skb->nh.raw = skb->data; | 62 | skb->nh.raw = skb->data; |
| 63 | skb->pkt_type = PACKET_HOST; | 63 | skb->pkt_type = PACKET_HOST; |
| 64 | 64 | ||
diff --git a/net/rxrpc/call.c b/net/rxrpc/call.c index 5cfd4cadee42..c4aeb7d40266 100644 --- a/net/rxrpc/call.c +++ b/net/rxrpc/call.c | |||
| @@ -1923,7 +1923,7 @@ int rxrpc_call_write_data(struct rxrpc_call *call, | |||
| 1923 | size_t sioc, | 1923 | size_t sioc, |
| 1924 | struct kvec *siov, | 1924 | struct kvec *siov, |
| 1925 | u8 rxhdr_flags, | 1925 | u8 rxhdr_flags, |
| 1926 | int alloc_flags, | 1926 | gfp_t alloc_flags, |
| 1927 | int dup_data, | 1927 | int dup_data, |
| 1928 | size_t *size_sent) | 1928 | size_t *size_sent) |
| 1929 | { | 1929 | { |
diff --git a/net/rxrpc/connection.c b/net/rxrpc/connection.c index 61463c74f8cc..2ba14a75dbbe 100644 --- a/net/rxrpc/connection.c +++ b/net/rxrpc/connection.c | |||
| @@ -522,7 +522,7 @@ int rxrpc_conn_newmsg(struct rxrpc_connection *conn, | |||
| 522 | uint8_t type, | 522 | uint8_t type, |
| 523 | int dcount, | 523 | int dcount, |
| 524 | struct kvec diov[], | 524 | struct kvec diov[], |
| 525 | int alloc_flags, | 525 | gfp_t alloc_flags, |
| 526 | struct rxrpc_message **_msg) | 526 | struct rxrpc_message **_msg) |
| 527 | { | 527 | { |
| 528 | struct rxrpc_message *msg; | 528 | struct rxrpc_message *msg; |
diff --git a/net/sched/Kconfig b/net/sched/Kconfig index 45d3bc0812c8..81510da31792 100644 --- a/net/sched/Kconfig +++ b/net/sched/Kconfig | |||
| @@ -72,9 +72,11 @@ config NET_SCH_CLK_GETTIMEOFDAY | |||
| 72 | Choose this if you need a high resolution clock source but can't use | 72 | Choose this if you need a high resolution clock source but can't use |
| 73 | the CPU's cycle counter. | 73 | the CPU's cycle counter. |
| 74 | 74 | ||
| 75 | # don't allow on SMP x86 because they can have unsynchronized TSCs. | ||
| 76 | # gettimeofday is a good alternative | ||
| 75 | config NET_SCH_CLK_CPU | 77 | config NET_SCH_CLK_CPU |
| 76 | bool "CPU cycle counter" | 78 | bool "CPU cycle counter" |
| 77 | depends on X86_TSC || X86_64 || ALPHA || SPARC64 || PPC64 || IA64 | 79 | depends on ((X86_TSC || X86_64) && !SMP) || ALPHA || SPARC64 || PPC64 || IA64 |
| 78 | help | 80 | help |
| 79 | Say Y here if you want to use the CPU's cycle counter as clock source. | 81 | Say Y here if you want to use the CPU's cycle counter as clock source. |
| 80 | This is a cheap and high resolution clock source, but on some | 82 | This is a cheap and high resolution clock source, but on some |
diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 5b24ae0650d3..12b0f582a66b 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c | |||
| @@ -71,7 +71,7 @@ static struct sctp_association *sctp_association_init(struct sctp_association *a | |||
| 71 | const struct sctp_endpoint *ep, | 71 | const struct sctp_endpoint *ep, |
| 72 | const struct sock *sk, | 72 | const struct sock *sk, |
| 73 | sctp_scope_t scope, | 73 | sctp_scope_t scope, |
| 74 | unsigned int __nocast gfp) | 74 | gfp_t gfp) |
| 75 | { | 75 | { |
| 76 | struct sctp_sock *sp; | 76 | struct sctp_sock *sp; |
| 77 | int i; | 77 | int i; |
| @@ -273,7 +273,7 @@ fail_init: | |||
| 273 | struct sctp_association *sctp_association_new(const struct sctp_endpoint *ep, | 273 | struct sctp_association *sctp_association_new(const struct sctp_endpoint *ep, |
| 274 | const struct sock *sk, | 274 | const struct sock *sk, |
| 275 | sctp_scope_t scope, | 275 | sctp_scope_t scope, |
| 276 | unsigned int __nocast gfp) | 276 | gfp_t gfp) |
| 277 | { | 277 | { |
| 278 | struct sctp_association *asoc; | 278 | struct sctp_association *asoc; |
| 279 | 279 | ||
| @@ -479,7 +479,7 @@ void sctp_assoc_rm_peer(struct sctp_association *asoc, | |||
| 479 | /* Add a transport address to an association. */ | 479 | /* Add a transport address to an association. */ |
| 480 | struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, | 480 | struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, |
| 481 | const union sctp_addr *addr, | 481 | const union sctp_addr *addr, |
| 482 | const unsigned int __nocast gfp, | 482 | const gfp_t gfp, |
| 483 | const int peer_state) | 483 | const int peer_state) |
| 484 | { | 484 | { |
| 485 | struct sctp_transport *peer; | 485 | struct sctp_transport *peer; |
| @@ -1231,7 +1231,7 @@ void sctp_assoc_rwnd_decrease(struct sctp_association *asoc, unsigned len) | |||
| 1231 | * local endpoint and the remote peer. | 1231 | * local endpoint and the remote peer. |
| 1232 | */ | 1232 | */ |
| 1233 | int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc, | 1233 | int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc, |
| 1234 | unsigned int __nocast gfp) | 1234 | gfp_t gfp) |
| 1235 | { | 1235 | { |
| 1236 | sctp_scope_t scope; | 1236 | sctp_scope_t scope; |
| 1237 | int flags; | 1237 | int flags; |
| @@ -1254,7 +1254,7 @@ int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *asoc, | |||
| 1254 | /* Build the association's bind address list from the cookie. */ | 1254 | /* Build the association's bind address list from the cookie. */ |
| 1255 | int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *asoc, | 1255 | int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *asoc, |
| 1256 | struct sctp_cookie *cookie, | 1256 | struct sctp_cookie *cookie, |
| 1257 | unsigned int __nocast gfp) | 1257 | gfp_t gfp) |
| 1258 | { | 1258 | { |
| 1259 | int var_size2 = ntohs(cookie->peer_init->chunk_hdr.length); | 1259 | int var_size2 = ntohs(cookie->peer_init->chunk_hdr.length); |
| 1260 | int var_size3 = cookie->raw_addr_list_len; | 1260 | int var_size3 = cookie->raw_addr_list_len; |
diff --git a/net/sctp/bind_addr.c b/net/sctp/bind_addr.c index f71549710f2e..2b962627f631 100644 --- a/net/sctp/bind_addr.c +++ b/net/sctp/bind_addr.c | |||
| @@ -53,7 +53,7 @@ | |||
| 53 | 53 | ||
| 54 | /* Forward declarations for internal helpers. */ | 54 | /* Forward declarations for internal helpers. */ |
| 55 | static int sctp_copy_one_addr(struct sctp_bind_addr *, union sctp_addr *, | 55 | static int sctp_copy_one_addr(struct sctp_bind_addr *, union sctp_addr *, |
| 56 | sctp_scope_t scope, unsigned int __nocast gfp, | 56 | sctp_scope_t scope, gfp_t gfp, |
| 57 | int flags); | 57 | int flags); |
| 58 | static void sctp_bind_addr_clean(struct sctp_bind_addr *); | 58 | static void sctp_bind_addr_clean(struct sctp_bind_addr *); |
| 59 | 59 | ||
| @@ -64,7 +64,7 @@ static void sctp_bind_addr_clean(struct sctp_bind_addr *); | |||
| 64 | */ | 64 | */ |
| 65 | int sctp_bind_addr_copy(struct sctp_bind_addr *dest, | 65 | int sctp_bind_addr_copy(struct sctp_bind_addr *dest, |
| 66 | const struct sctp_bind_addr *src, | 66 | const struct sctp_bind_addr *src, |
| 67 | sctp_scope_t scope, unsigned int __nocast gfp, | 67 | sctp_scope_t scope, gfp_t gfp, |
| 68 | int flags) | 68 | int flags) |
| 69 | { | 69 | { |
| 70 | struct sctp_sockaddr_entry *addr; | 70 | struct sctp_sockaddr_entry *addr; |
| @@ -146,7 +146,7 @@ void sctp_bind_addr_free(struct sctp_bind_addr *bp) | |||
| 146 | 146 | ||
| 147 | /* Add an address to the bind address list in the SCTP_bind_addr structure. */ | 147 | /* Add an address to the bind address list in the SCTP_bind_addr structure. */ |
| 148 | int sctp_add_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *new, | 148 | int sctp_add_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *new, |
| 149 | unsigned int __nocast gfp) | 149 | gfp_t gfp) |
| 150 | { | 150 | { |
| 151 | struct sctp_sockaddr_entry *addr; | 151 | struct sctp_sockaddr_entry *addr; |
| 152 | 152 | ||
| @@ -200,7 +200,7 @@ int sctp_del_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *del_addr) | |||
| 200 | */ | 200 | */ |
| 201 | union sctp_params sctp_bind_addrs_to_raw(const struct sctp_bind_addr *bp, | 201 | union sctp_params sctp_bind_addrs_to_raw(const struct sctp_bind_addr *bp, |
| 202 | int *addrs_len, | 202 | int *addrs_len, |
| 203 | unsigned int __nocast gfp) | 203 | gfp_t gfp) |
| 204 | { | 204 | { |
| 205 | union sctp_params addrparms; | 205 | union sctp_params addrparms; |
| 206 | union sctp_params retval; | 206 | union sctp_params retval; |
| @@ -252,7 +252,7 @@ end_raw: | |||
| 252 | * address parameters). | 252 | * address parameters). |
| 253 | */ | 253 | */ |
| 254 | int sctp_raw_to_bind_addrs(struct sctp_bind_addr *bp, __u8 *raw_addr_list, | 254 | int sctp_raw_to_bind_addrs(struct sctp_bind_addr *bp, __u8 *raw_addr_list, |
| 255 | int addrs_len, __u16 port, unsigned int __nocast gfp) | 255 | int addrs_len, __u16 port, gfp_t gfp) |
| 256 | { | 256 | { |
| 257 | union sctp_addr_param *rawaddr; | 257 | union sctp_addr_param *rawaddr; |
| 258 | struct sctp_paramhdr *param; | 258 | struct sctp_paramhdr *param; |
| @@ -350,7 +350,7 @@ union sctp_addr *sctp_find_unmatch_addr(struct sctp_bind_addr *bp, | |||
| 350 | /* Copy out addresses from the global local address list. */ | 350 | /* Copy out addresses from the global local address list. */ |
| 351 | static int sctp_copy_one_addr(struct sctp_bind_addr *dest, | 351 | static int sctp_copy_one_addr(struct sctp_bind_addr *dest, |
| 352 | union sctp_addr *addr, | 352 | union sctp_addr *addr, |
| 353 | sctp_scope_t scope, unsigned int __nocast gfp, | 353 | sctp_scope_t scope, gfp_t gfp, |
| 354 | int flags) | 354 | int flags) |
| 355 | { | 355 | { |
| 356 | int error = 0; | 356 | int error = 0; |
diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c index 61da2937e641..83ef411772f4 100644 --- a/net/sctp/chunk.c +++ b/net/sctp/chunk.c | |||
| @@ -62,7 +62,7 @@ static void sctp_datamsg_init(struct sctp_datamsg *msg) | |||
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | /* Allocate and initialize datamsg. */ | 64 | /* Allocate and initialize datamsg. */ |
| 65 | SCTP_STATIC struct sctp_datamsg *sctp_datamsg_new(unsigned int __nocast gfp) | 65 | SCTP_STATIC struct sctp_datamsg *sctp_datamsg_new(gfp_t gfp) |
| 66 | { | 66 | { |
| 67 | struct sctp_datamsg *msg; | 67 | struct sctp_datamsg *msg; |
| 68 | msg = kmalloc(sizeof(struct sctp_datamsg), gfp); | 68 | msg = kmalloc(sizeof(struct sctp_datamsg), gfp); |
diff --git a/net/sctp/endpointola.c b/net/sctp/endpointola.c index e22ccd655965..96984f7a2d69 100644 --- a/net/sctp/endpointola.c +++ b/net/sctp/endpointola.c | |||
| @@ -68,7 +68,7 @@ static void sctp_endpoint_bh_rcv(struct sctp_endpoint *ep); | |||
| 68 | */ | 68 | */ |
| 69 | static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, | 69 | static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, |
| 70 | struct sock *sk, | 70 | struct sock *sk, |
| 71 | unsigned int __nocast gfp) | 71 | gfp_t gfp) |
| 72 | { | 72 | { |
| 73 | struct sctp_sock *sp = sctp_sk(sk); | 73 | struct sctp_sock *sp = sctp_sk(sk); |
| 74 | memset(ep, 0, sizeof(struct sctp_endpoint)); | 74 | memset(ep, 0, sizeof(struct sctp_endpoint)); |
| @@ -138,8 +138,7 @@ static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, | |||
| 138 | /* Create a sctp_endpoint with all that boring stuff initialized. | 138 | /* Create a sctp_endpoint with all that boring stuff initialized. |
| 139 | * Returns NULL if there isn't enough memory. | 139 | * Returns NULL if there isn't enough memory. |
| 140 | */ | 140 | */ |
| 141 | struct sctp_endpoint *sctp_endpoint_new(struct sock *sk, | 141 | struct sctp_endpoint *sctp_endpoint_new(struct sock *sk, gfp_t gfp) |
| 142 | unsigned int __nocast gfp) | ||
| 143 | { | 142 | { |
| 144 | struct sctp_endpoint *ep; | 143 | struct sctp_endpoint *ep; |
| 145 | 144 | ||
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index f01d1c9002a1..26de4d3e1bd9 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
| @@ -219,7 +219,7 @@ static void sctp_free_local_addr_list(void) | |||
| 219 | 219 | ||
| 220 | /* Copy the local addresses which are valid for 'scope' into 'bp'. */ | 220 | /* Copy the local addresses which are valid for 'scope' into 'bp'. */ |
| 221 | int sctp_copy_local_addr_list(struct sctp_bind_addr *bp, sctp_scope_t scope, | 221 | int sctp_copy_local_addr_list(struct sctp_bind_addr *bp, sctp_scope_t scope, |
| 222 | unsigned int __nocast gfp, int copy_flags) | 222 | gfp_t gfp, int copy_flags) |
| 223 | { | 223 | { |
| 224 | struct sctp_sockaddr_entry *addr; | 224 | struct sctp_sockaddr_entry *addr; |
| 225 | int error = 0; | 225 | int error = 0; |
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 3868a8d70cc0..10e82ec2ebd3 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
| @@ -78,7 +78,7 @@ static sctp_cookie_param_t *sctp_pack_cookie(const struct sctp_endpoint *ep, | |||
| 78 | static int sctp_process_param(struct sctp_association *asoc, | 78 | static int sctp_process_param(struct sctp_association *asoc, |
| 79 | union sctp_params param, | 79 | union sctp_params param, |
| 80 | const union sctp_addr *peer_addr, | 80 | const union sctp_addr *peer_addr, |
| 81 | unsigned int __nocast gfp); | 81 | gfp_t gfp); |
| 82 | 82 | ||
| 83 | /* What was the inbound interface for this chunk? */ | 83 | /* What was the inbound interface for this chunk? */ |
| 84 | int sctp_chunk_iif(const struct sctp_chunk *chunk) | 84 | int sctp_chunk_iif(const struct sctp_chunk *chunk) |
| @@ -174,7 +174,7 @@ void sctp_init_cause(struct sctp_chunk *chunk, __u16 cause_code, | |||
| 174 | */ | 174 | */ |
| 175 | struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, | 175 | struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, |
| 176 | const struct sctp_bind_addr *bp, | 176 | const struct sctp_bind_addr *bp, |
| 177 | unsigned int __nocast gfp, int vparam_len) | 177 | gfp_t gfp, int vparam_len) |
| 178 | { | 178 | { |
| 179 | sctp_inithdr_t init; | 179 | sctp_inithdr_t init; |
| 180 | union sctp_params addrs; | 180 | union sctp_params addrs; |
| @@ -261,7 +261,7 @@ nodata: | |||
| 261 | 261 | ||
| 262 | struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc, | 262 | struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc, |
| 263 | const struct sctp_chunk *chunk, | 263 | const struct sctp_chunk *chunk, |
| 264 | unsigned int __nocast gfp, int unkparam_len) | 264 | gfp_t gfp, int unkparam_len) |
| 265 | { | 265 | { |
| 266 | sctp_inithdr_t initack; | 266 | sctp_inithdr_t initack; |
| 267 | struct sctp_chunk *retval; | 267 | struct sctp_chunk *retval; |
| @@ -1234,7 +1234,7 @@ void sctp_chunk_assign_tsn(struct sctp_chunk *chunk) | |||
| 1234 | /* Create a CLOSED association to use with an incoming packet. */ | 1234 | /* Create a CLOSED association to use with an incoming packet. */ |
| 1235 | struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *ep, | 1235 | struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *ep, |
| 1236 | struct sctp_chunk *chunk, | 1236 | struct sctp_chunk *chunk, |
| 1237 | unsigned int __nocast gfp) | 1237 | gfp_t gfp) |
| 1238 | { | 1238 | { |
| 1239 | struct sctp_association *asoc; | 1239 | struct sctp_association *asoc; |
| 1240 | struct sk_buff *skb; | 1240 | struct sk_buff *skb; |
| @@ -1349,7 +1349,7 @@ nodata: | |||
| 1349 | struct sctp_association *sctp_unpack_cookie( | 1349 | struct sctp_association *sctp_unpack_cookie( |
| 1350 | const struct sctp_endpoint *ep, | 1350 | const struct sctp_endpoint *ep, |
| 1351 | const struct sctp_association *asoc, | 1351 | const struct sctp_association *asoc, |
| 1352 | struct sctp_chunk *chunk, unsigned int __nocast gfp, | 1352 | struct sctp_chunk *chunk, gfp_t gfp, |
| 1353 | int *error, struct sctp_chunk **errp) | 1353 | int *error, struct sctp_chunk **errp) |
| 1354 | { | 1354 | { |
| 1355 | struct sctp_association *retval = NULL; | 1355 | struct sctp_association *retval = NULL; |
| @@ -1814,7 +1814,7 @@ int sctp_verify_init(const struct sctp_association *asoc, | |||
| 1814 | */ | 1814 | */ |
| 1815 | int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid, | 1815 | int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid, |
| 1816 | const union sctp_addr *peer_addr, | 1816 | const union sctp_addr *peer_addr, |
| 1817 | sctp_init_chunk_t *peer_init, unsigned int __nocast gfp) | 1817 | sctp_init_chunk_t *peer_init, gfp_t gfp) |
| 1818 | { | 1818 | { |
| 1819 | union sctp_params param; | 1819 | union sctp_params param; |
| 1820 | struct sctp_transport *transport; | 1820 | struct sctp_transport *transport; |
| @@ -1985,7 +1985,7 @@ nomem: | |||
| 1985 | static int sctp_process_param(struct sctp_association *asoc, | 1985 | static int sctp_process_param(struct sctp_association *asoc, |
| 1986 | union sctp_params param, | 1986 | union sctp_params param, |
| 1987 | const union sctp_addr *peer_addr, | 1987 | const union sctp_addr *peer_addr, |
| 1988 | unsigned int __nocast gfp) | 1988 | gfp_t gfp) |
| 1989 | { | 1989 | { |
| 1990 | union sctp_addr addr; | 1990 | union sctp_addr addr; |
| 1991 | int i; | 1991 | int i; |
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 39c970b5b198..f84173ea8ec1 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c | |||
| @@ -63,7 +63,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type, | |||
| 63 | void *event_arg, | 63 | void *event_arg, |
| 64 | sctp_disposition_t status, | 64 | sctp_disposition_t status, |
| 65 | sctp_cmd_seq_t *commands, | 65 | sctp_cmd_seq_t *commands, |
| 66 | unsigned int __nocast gfp); | 66 | gfp_t gfp); |
| 67 | static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype, | 67 | static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype, |
| 68 | sctp_state_t state, | 68 | sctp_state_t state, |
| 69 | struct sctp_endpoint *ep, | 69 | struct sctp_endpoint *ep, |
| @@ -71,7 +71,7 @@ static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype, | |||
| 71 | void *event_arg, | 71 | void *event_arg, |
| 72 | sctp_disposition_t status, | 72 | sctp_disposition_t status, |
| 73 | sctp_cmd_seq_t *commands, | 73 | sctp_cmd_seq_t *commands, |
| 74 | unsigned int __nocast gfp); | 74 | gfp_t gfp); |
| 75 | 75 | ||
| 76 | /******************************************************************** | 76 | /******************************************************************** |
| 77 | * Helper functions | 77 | * Helper functions |
| @@ -498,7 +498,7 @@ static int sctp_cmd_process_init(sctp_cmd_seq_t *commands, | |||
| 498 | struct sctp_association *asoc, | 498 | struct sctp_association *asoc, |
| 499 | struct sctp_chunk *chunk, | 499 | struct sctp_chunk *chunk, |
| 500 | sctp_init_chunk_t *peer_init, | 500 | sctp_init_chunk_t *peer_init, |
| 501 | unsigned int __nocast gfp) | 501 | gfp_t gfp) |
| 502 | { | 502 | { |
| 503 | int error; | 503 | int error; |
| 504 | 504 | ||
| @@ -853,7 +853,7 @@ int sctp_do_sm(sctp_event_t event_type, sctp_subtype_t subtype, | |||
| 853 | struct sctp_endpoint *ep, | 853 | struct sctp_endpoint *ep, |
| 854 | struct sctp_association *asoc, | 854 | struct sctp_association *asoc, |
| 855 | void *event_arg, | 855 | void *event_arg, |
| 856 | unsigned int __nocast gfp) | 856 | gfp_t gfp) |
| 857 | { | 857 | { |
| 858 | sctp_cmd_seq_t commands; | 858 | sctp_cmd_seq_t commands; |
| 859 | const sctp_sm_table_entry_t *state_fn; | 859 | const sctp_sm_table_entry_t *state_fn; |
| @@ -898,7 +898,7 @@ static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype, | |||
| 898 | void *event_arg, | 898 | void *event_arg, |
| 899 | sctp_disposition_t status, | 899 | sctp_disposition_t status, |
| 900 | sctp_cmd_seq_t *commands, | 900 | sctp_cmd_seq_t *commands, |
| 901 | unsigned int __nocast gfp) | 901 | gfp_t gfp) |
| 902 | { | 902 | { |
| 903 | int error; | 903 | int error; |
| 904 | 904 | ||
| @@ -986,7 +986,7 @@ static int sctp_cmd_interpreter(sctp_event_t event_type, | |||
| 986 | void *event_arg, | 986 | void *event_arg, |
| 987 | sctp_disposition_t status, | 987 | sctp_disposition_t status, |
| 988 | sctp_cmd_seq_t *commands, | 988 | sctp_cmd_seq_t *commands, |
| 989 | unsigned int __nocast gfp) | 989 | gfp_t gfp) |
| 990 | { | 990 | { |
| 991 | int error = 0; | 991 | int error = 0; |
| 992 | int force; | 992 | int force; |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 91ec8c936913..02e068d3450d 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
| @@ -3159,8 +3159,9 @@ static int sctp_getsockopt_initmsg(struct sock *sk, int len, char __user *optval | |||
| 3159 | return 0; | 3159 | return 0; |
| 3160 | } | 3160 | } |
| 3161 | 3161 | ||
| 3162 | static int sctp_getsockopt_peer_addrs_num(struct sock *sk, int len, | 3162 | static int sctp_getsockopt_peer_addrs_num_old(struct sock *sk, int len, |
| 3163 | char __user *optval, int __user *optlen) | 3163 | char __user *optval, |
| 3164 | int __user *optlen) | ||
| 3164 | { | 3165 | { |
| 3165 | sctp_assoc_t id; | 3166 | sctp_assoc_t id; |
| 3166 | struct sctp_association *asoc; | 3167 | struct sctp_association *asoc; |
| @@ -3185,23 +3186,28 @@ static int sctp_getsockopt_peer_addrs_num(struct sock *sk, int len, | |||
| 3185 | return cnt; | 3186 | return cnt; |
| 3186 | } | 3187 | } |
| 3187 | 3188 | ||
| 3188 | static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, | 3189 | /* |
| 3189 | char __user *optval, int __user *optlen) | 3190 | * Old API for getting list of peer addresses. Does not work for 32-bit |
| 3191 | * programs running on a 64-bit kernel | ||
| 3192 | */ | ||
| 3193 | static int sctp_getsockopt_peer_addrs_old(struct sock *sk, int len, | ||
| 3194 | char __user *optval, | ||
| 3195 | int __user *optlen) | ||
| 3190 | { | 3196 | { |
| 3191 | struct sctp_association *asoc; | 3197 | struct sctp_association *asoc; |
| 3192 | struct list_head *pos; | 3198 | struct list_head *pos; |
| 3193 | int cnt = 0; | 3199 | int cnt = 0; |
| 3194 | struct sctp_getaddrs getaddrs; | 3200 | struct sctp_getaddrs_old getaddrs; |
| 3195 | struct sctp_transport *from; | 3201 | struct sctp_transport *from; |
| 3196 | void __user *to; | 3202 | void __user *to; |
| 3197 | union sctp_addr temp; | 3203 | union sctp_addr temp; |
| 3198 | struct sctp_sock *sp = sctp_sk(sk); | 3204 | struct sctp_sock *sp = sctp_sk(sk); |
| 3199 | int addrlen; | 3205 | int addrlen; |
| 3200 | 3206 | ||
| 3201 | if (len != sizeof(struct sctp_getaddrs)) | 3207 | if (len != sizeof(struct sctp_getaddrs_old)) |
| 3202 | return -EINVAL; | 3208 | return -EINVAL; |
| 3203 | 3209 | ||
| 3204 | if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) | 3210 | if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs_old))) |
| 3205 | return -EFAULT; | 3211 | return -EFAULT; |
| 3206 | 3212 | ||
| 3207 | if (getaddrs.addr_num <= 0) return -EINVAL; | 3213 | if (getaddrs.addr_num <= 0) return -EINVAL; |
| @@ -3225,15 +3231,69 @@ static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, | |||
| 3225 | if (cnt >= getaddrs.addr_num) break; | 3231 | if (cnt >= getaddrs.addr_num) break; |
| 3226 | } | 3232 | } |
| 3227 | getaddrs.addr_num = cnt; | 3233 | getaddrs.addr_num = cnt; |
| 3228 | if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs))) | 3234 | if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs_old))) |
| 3235 | return -EFAULT; | ||
| 3236 | |||
| 3237 | return 0; | ||
| 3238 | } | ||
| 3239 | |||
| 3240 | static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, | ||
| 3241 | char __user *optval, int __user *optlen) | ||
| 3242 | { | ||
| 3243 | struct sctp_association *asoc; | ||
| 3244 | struct list_head *pos; | ||
| 3245 | int cnt = 0; | ||
| 3246 | struct sctp_getaddrs getaddrs; | ||
| 3247 | struct sctp_transport *from; | ||
| 3248 | void __user *to; | ||
| 3249 | union sctp_addr temp; | ||
| 3250 | struct sctp_sock *sp = sctp_sk(sk); | ||
| 3251 | int addrlen; | ||
| 3252 | size_t space_left; | ||
| 3253 | int bytes_copied; | ||
| 3254 | |||
| 3255 | if (len < sizeof(struct sctp_getaddrs)) | ||
| 3256 | return -EINVAL; | ||
| 3257 | |||
| 3258 | if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) | ||
| 3259 | return -EFAULT; | ||
| 3260 | |||
| 3261 | /* For UDP-style sockets, id specifies the association to query. */ | ||
| 3262 | asoc = sctp_id2assoc(sk, getaddrs.assoc_id); | ||
| 3263 | if (!asoc) | ||
| 3264 | return -EINVAL; | ||
| 3265 | |||
| 3266 | to = optval + offsetof(struct sctp_getaddrs,addrs); | ||
| 3267 | space_left = len - sizeof(struct sctp_getaddrs) - | ||
| 3268 | offsetof(struct sctp_getaddrs,addrs); | ||
| 3269 | |||
| 3270 | list_for_each(pos, &asoc->peer.transport_addr_list) { | ||
| 3271 | from = list_entry(pos, struct sctp_transport, transports); | ||
| 3272 | memcpy(&temp, &from->ipaddr, sizeof(temp)); | ||
| 3273 | sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp); | ||
| 3274 | addrlen = sctp_get_af_specific(sk->sk_family)->sockaddr_len; | ||
| 3275 | if(space_left < addrlen) | ||
| 3276 | return -ENOMEM; | ||
| 3277 | temp.v4.sin_port = htons(temp.v4.sin_port); | ||
| 3278 | if (copy_to_user(to, &temp, addrlen)) | ||
| 3279 | return -EFAULT; | ||
| 3280 | to += addrlen; | ||
| 3281 | cnt++; | ||
| 3282 | space_left -= addrlen; | ||
| 3283 | } | ||
| 3284 | |||
| 3285 | if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num)) | ||
| 3286 | return -EFAULT; | ||
| 3287 | bytes_copied = ((char __user *)to) - optval; | ||
| 3288 | if (put_user(bytes_copied, optlen)) | ||
| 3229 | return -EFAULT; | 3289 | return -EFAULT; |
| 3230 | 3290 | ||
| 3231 | return 0; | 3291 | return 0; |
| 3232 | } | 3292 | } |
| 3233 | 3293 | ||
| 3234 | static int sctp_getsockopt_local_addrs_num(struct sock *sk, int len, | 3294 | static int sctp_getsockopt_local_addrs_num_old(struct sock *sk, int len, |
| 3235 | char __user *optval, | 3295 | char __user *optval, |
| 3236 | int __user *optlen) | 3296 | int __user *optlen) |
| 3237 | { | 3297 | { |
| 3238 | sctp_assoc_t id; | 3298 | sctp_assoc_t id; |
| 3239 | struct sctp_bind_addr *bp; | 3299 | struct sctp_bind_addr *bp; |
| @@ -3306,8 +3366,8 @@ done: | |||
| 3306 | /* Helper function that copies local addresses to user and returns the number | 3366 | /* Helper function that copies local addresses to user and returns the number |
| 3307 | * of addresses copied. | 3367 | * of addresses copied. |
| 3308 | */ | 3368 | */ |
| 3309 | static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port, int max_addrs, | 3369 | static int sctp_copy_laddrs_to_user_old(struct sock *sk, __u16 port, int max_addrs, |
| 3310 | void __user *to) | 3370 | void __user *to) |
| 3311 | { | 3371 | { |
| 3312 | struct list_head *pos; | 3372 | struct list_head *pos; |
| 3313 | struct sctp_sockaddr_entry *addr; | 3373 | struct sctp_sockaddr_entry *addr; |
| @@ -3341,14 +3401,54 @@ static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port, int max_addrs, | |||
| 3341 | return cnt; | 3401 | return cnt; |
| 3342 | } | 3402 | } |
| 3343 | 3403 | ||
| 3344 | static int sctp_getsockopt_local_addrs(struct sock *sk, int len, | 3404 | static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port, |
| 3345 | char __user *optval, int __user *optlen) | 3405 | void * __user *to, size_t space_left) |
| 3406 | { | ||
| 3407 | struct list_head *pos; | ||
| 3408 | struct sctp_sockaddr_entry *addr; | ||
| 3409 | unsigned long flags; | ||
| 3410 | union sctp_addr temp; | ||
| 3411 | int cnt = 0; | ||
| 3412 | int addrlen; | ||
| 3413 | |||
| 3414 | sctp_spin_lock_irqsave(&sctp_local_addr_lock, flags); | ||
| 3415 | list_for_each(pos, &sctp_local_addr_list) { | ||
| 3416 | addr = list_entry(pos, struct sctp_sockaddr_entry, list); | ||
| 3417 | if ((PF_INET == sk->sk_family) && | ||
| 3418 | (AF_INET6 == addr->a.sa.sa_family)) | ||
| 3419 | continue; | ||
| 3420 | memcpy(&temp, &addr->a, sizeof(temp)); | ||
| 3421 | sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk), | ||
| 3422 | &temp); | ||
| 3423 | addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; | ||
| 3424 | if(space_left<addrlen) | ||
| 3425 | return -ENOMEM; | ||
| 3426 | temp.v4.sin_port = htons(port); | ||
| 3427 | if (copy_to_user(*to, &temp, addrlen)) { | ||
| 3428 | sctp_spin_unlock_irqrestore(&sctp_local_addr_lock, | ||
| 3429 | flags); | ||
| 3430 | return -EFAULT; | ||
| 3431 | } | ||
| 3432 | *to += addrlen; | ||
| 3433 | cnt ++; | ||
| 3434 | space_left -= addrlen; | ||
| 3435 | } | ||
| 3436 | sctp_spin_unlock_irqrestore(&sctp_local_addr_lock, flags); | ||
| 3437 | |||
| 3438 | return cnt; | ||
| 3439 | } | ||
| 3440 | |||
| 3441 | /* Old API for getting list of local addresses. Does not work for 32-bit | ||
| 3442 | * programs running on a 64-bit kernel | ||
| 3443 | */ | ||
| 3444 | static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len, | ||
| 3445 | char __user *optval, int __user *optlen) | ||
| 3346 | { | 3446 | { |
| 3347 | struct sctp_bind_addr *bp; | 3447 | struct sctp_bind_addr *bp; |
| 3348 | struct sctp_association *asoc; | 3448 | struct sctp_association *asoc; |
| 3349 | struct list_head *pos; | 3449 | struct list_head *pos; |
| 3350 | int cnt = 0; | 3450 | int cnt = 0; |
| 3351 | struct sctp_getaddrs getaddrs; | 3451 | struct sctp_getaddrs_old getaddrs; |
| 3352 | struct sctp_sockaddr_entry *addr; | 3452 | struct sctp_sockaddr_entry *addr; |
| 3353 | void __user *to; | 3453 | void __user *to; |
| 3354 | union sctp_addr temp; | 3454 | union sctp_addr temp; |
| @@ -3357,10 +3457,10 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len, | |||
| 3357 | rwlock_t *addr_lock; | 3457 | rwlock_t *addr_lock; |
| 3358 | int err = 0; | 3458 | int err = 0; |
| 3359 | 3459 | ||
| 3360 | if (len != sizeof(struct sctp_getaddrs)) | 3460 | if (len != sizeof(struct sctp_getaddrs_old)) |
| 3361 | return -EINVAL; | 3461 | return -EINVAL; |
| 3362 | 3462 | ||
| 3363 | if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) | 3463 | if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs_old))) |
| 3364 | return -EFAULT; | 3464 | return -EFAULT; |
| 3365 | 3465 | ||
| 3366 | if (getaddrs.addr_num <= 0) return -EINVAL; | 3466 | if (getaddrs.addr_num <= 0) return -EINVAL; |
| @@ -3392,8 +3492,9 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len, | |||
| 3392 | addr = list_entry(bp->address_list.next, | 3492 | addr = list_entry(bp->address_list.next, |
| 3393 | struct sctp_sockaddr_entry, list); | 3493 | struct sctp_sockaddr_entry, list); |
| 3394 | if (sctp_is_any(&addr->a)) { | 3494 | if (sctp_is_any(&addr->a)) { |
| 3395 | cnt = sctp_copy_laddrs_to_user(sk, bp->port, | 3495 | cnt = sctp_copy_laddrs_to_user_old(sk, bp->port, |
| 3396 | getaddrs.addr_num, to); | 3496 | getaddrs.addr_num, |
| 3497 | to); | ||
| 3397 | if (cnt < 0) { | 3498 | if (cnt < 0) { |
| 3398 | err = cnt; | 3499 | err = cnt; |
| 3399 | goto unlock; | 3500 | goto unlock; |
| @@ -3419,7 +3520,7 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len, | |||
| 3419 | 3520 | ||
| 3420 | copy_getaddrs: | 3521 | copy_getaddrs: |
| 3421 | getaddrs.addr_num = cnt; | 3522 | getaddrs.addr_num = cnt; |
| 3422 | if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs))) | 3523 | if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs_old))) |
| 3423 | err = -EFAULT; | 3524 | err = -EFAULT; |
| 3424 | 3525 | ||
| 3425 | unlock: | 3526 | unlock: |
| @@ -3427,6 +3528,99 @@ unlock: | |||
| 3427 | return err; | 3528 | return err; |
| 3428 | } | 3529 | } |
| 3429 | 3530 | ||
| 3531 | static int sctp_getsockopt_local_addrs(struct sock *sk, int len, | ||
| 3532 | char __user *optval, int __user *optlen) | ||
| 3533 | { | ||
| 3534 | struct sctp_bind_addr *bp; | ||
| 3535 | struct sctp_association *asoc; | ||
| 3536 | struct list_head *pos; | ||
| 3537 | int cnt = 0; | ||
| 3538 | struct sctp_getaddrs getaddrs; | ||
| 3539 | struct sctp_sockaddr_entry *addr; | ||
| 3540 | void __user *to; | ||
| 3541 | union sctp_addr temp; | ||
| 3542 | struct sctp_sock *sp = sctp_sk(sk); | ||
| 3543 | int addrlen; | ||
| 3544 | rwlock_t *addr_lock; | ||
| 3545 | int err = 0; | ||
| 3546 | size_t space_left; | ||
| 3547 | int bytes_copied; | ||
| 3548 | |||
| 3549 | if (len <= sizeof(struct sctp_getaddrs)) | ||
| 3550 | return -EINVAL; | ||
| 3551 | |||
| 3552 | if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) | ||
| 3553 | return -EFAULT; | ||
| 3554 | |||
| 3555 | /* | ||
| 3556 | * For UDP-style sockets, id specifies the association to query. | ||
| 3557 | * If the id field is set to the value '0' then the locally bound | ||
| 3558 | * addresses are returned without regard to any particular | ||
| 3559 | * association. | ||
| 3560 | */ | ||
| 3561 | if (0 == getaddrs.assoc_id) { | ||
| 3562 | bp = &sctp_sk(sk)->ep->base.bind_addr; | ||
| 3563 | addr_lock = &sctp_sk(sk)->ep->base.addr_lock; | ||
| 3564 | } else { | ||
| 3565 | asoc = sctp_id2assoc(sk, getaddrs.assoc_id); | ||
| 3566 | if (!asoc) | ||
| 3567 | return -EINVAL; | ||
| 3568 | bp = &asoc->base.bind_addr; | ||
| 3569 | addr_lock = &asoc->base.addr_lock; | ||
| 3570 | } | ||
| 3571 | |||
| 3572 | to = optval + offsetof(struct sctp_getaddrs,addrs); | ||
| 3573 | space_left = len - sizeof(struct sctp_getaddrs) - | ||
| 3574 | offsetof(struct sctp_getaddrs,addrs); | ||
| 3575 | |||
| 3576 | sctp_read_lock(addr_lock); | ||
| 3577 | |||
| 3578 | /* If the endpoint is bound to 0.0.0.0 or ::0, get the valid | ||
| 3579 | * addresses from the global local address list. | ||
| 3580 | */ | ||
| 3581 | if (sctp_list_single_entry(&bp->address_list)) { | ||
| 3582 | addr = list_entry(bp->address_list.next, | ||
| 3583 | struct sctp_sockaddr_entry, list); | ||
| 3584 | if (sctp_is_any(&addr->a)) { | ||
| 3585 | cnt = sctp_copy_laddrs_to_user(sk, bp->port, | ||
| 3586 | &to, space_left); | ||
| 3587 | if (cnt < 0) { | ||
| 3588 | err = cnt; | ||
| 3589 | goto unlock; | ||
| 3590 | } | ||
| 3591 | goto copy_getaddrs; | ||
| 3592 | } | ||
| 3593 | } | ||
| 3594 | |||
| 3595 | list_for_each(pos, &bp->address_list) { | ||
| 3596 | addr = list_entry(pos, struct sctp_sockaddr_entry, list); | ||
| 3597 | memcpy(&temp, &addr->a, sizeof(temp)); | ||
| 3598 | sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp); | ||
| 3599 | addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; | ||
| 3600 | if(space_left < addrlen) | ||
| 3601 | return -ENOMEM; /*fixme: right error?*/ | ||
| 3602 | temp.v4.sin_port = htons(temp.v4.sin_port); | ||
| 3603 | if (copy_to_user(to, &temp, addrlen)) { | ||
| 3604 | err = -EFAULT; | ||
| 3605 | goto unlock; | ||
| 3606 | } | ||
| 3607 | to += addrlen; | ||
| 3608 | cnt ++; | ||
| 3609 | space_left -= addrlen; | ||
| 3610 | } | ||
| 3611 | |||
| 3612 | copy_getaddrs: | ||
| 3613 | if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num)) | ||
| 3614 | return -EFAULT; | ||
| 3615 | bytes_copied = ((char __user *)to) - optval; | ||
| 3616 | if (put_user(bytes_copied, optlen)) | ||
| 3617 | return -EFAULT; | ||
| 3618 | |||
| 3619 | unlock: | ||
| 3620 | sctp_read_unlock(addr_lock); | ||
| 3621 | return err; | ||
| 3622 | } | ||
| 3623 | |||
| 3430 | /* 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR) | 3624 | /* 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR) |
| 3431 | * | 3625 | * |
| 3432 | * Requests that the local SCTP stack use the enclosed peer address as | 3626 | * Requests that the local SCTP stack use the enclosed peer address as |
| @@ -3807,12 +4001,20 @@ SCTP_STATIC int sctp_getsockopt(struct sock *sk, int level, int optname, | |||
| 3807 | case SCTP_INITMSG: | 4001 | case SCTP_INITMSG: |
| 3808 | retval = sctp_getsockopt_initmsg(sk, len, optval, optlen); | 4002 | retval = sctp_getsockopt_initmsg(sk, len, optval, optlen); |
| 3809 | break; | 4003 | break; |
| 3810 | case SCTP_GET_PEER_ADDRS_NUM: | 4004 | case SCTP_GET_PEER_ADDRS_NUM_OLD: |
| 3811 | retval = sctp_getsockopt_peer_addrs_num(sk, len, optval, | 4005 | retval = sctp_getsockopt_peer_addrs_num_old(sk, len, optval, |
| 4006 | optlen); | ||
| 4007 | break; | ||
| 4008 | case SCTP_GET_LOCAL_ADDRS_NUM_OLD: | ||
| 4009 | retval = sctp_getsockopt_local_addrs_num_old(sk, len, optval, | ||
| 4010 | optlen); | ||
| 4011 | break; | ||
| 4012 | case SCTP_GET_PEER_ADDRS_OLD: | ||
| 4013 | retval = sctp_getsockopt_peer_addrs_old(sk, len, optval, | ||
| 3812 | optlen); | 4014 | optlen); |
| 3813 | break; | 4015 | break; |
| 3814 | case SCTP_GET_LOCAL_ADDRS_NUM: | 4016 | case SCTP_GET_LOCAL_ADDRS_OLD: |
| 3815 | retval = sctp_getsockopt_local_addrs_num(sk, len, optval, | 4017 | retval = sctp_getsockopt_local_addrs_old(sk, len, optval, |
| 3816 | optlen); | 4018 | optlen); |
| 3817 | break; | 4019 | break; |
| 3818 | case SCTP_GET_PEER_ADDRS: | 4020 | case SCTP_GET_PEER_ADDRS: |
diff --git a/net/sctp/ssnmap.c b/net/sctp/ssnmap.c index 25037daf3fa0..cbe2513d2822 100644 --- a/net/sctp/ssnmap.c +++ b/net/sctp/ssnmap.c | |||
| @@ -58,7 +58,7 @@ static inline size_t sctp_ssnmap_size(__u16 in, __u16 out) | |||
| 58 | * Allocate room to store at least 'len' contiguous TSNs. | 58 | * Allocate room to store at least 'len' contiguous TSNs. |
| 59 | */ | 59 | */ |
| 60 | struct sctp_ssnmap *sctp_ssnmap_new(__u16 in, __u16 out, | 60 | struct sctp_ssnmap *sctp_ssnmap_new(__u16 in, __u16 out, |
| 61 | unsigned int __nocast gfp) | 61 | gfp_t gfp) |
| 62 | { | 62 | { |
| 63 | struct sctp_ssnmap *retval; | 63 | struct sctp_ssnmap *retval; |
| 64 | int size; | 64 | int size; |
diff --git a/net/sctp/transport.c b/net/sctp/transport.c index d2f04ebe5081..6bc27200e6ca 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c | |||
| @@ -57,7 +57,7 @@ | |||
| 57 | /* Initialize a new transport from provided memory. */ | 57 | /* Initialize a new transport from provided memory. */ |
| 58 | static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer, | 58 | static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer, |
| 59 | const union sctp_addr *addr, | 59 | const union sctp_addr *addr, |
| 60 | unsigned int __nocast gfp) | 60 | gfp_t gfp) |
| 61 | { | 61 | { |
| 62 | /* Copy in the address. */ | 62 | /* Copy in the address. */ |
| 63 | peer->ipaddr = *addr; | 63 | peer->ipaddr = *addr; |
| @@ -122,7 +122,7 @@ static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer, | |||
| 122 | 122 | ||
| 123 | /* Allocate and initialize a new transport. */ | 123 | /* Allocate and initialize a new transport. */ |
| 124 | struct sctp_transport *sctp_transport_new(const union sctp_addr *addr, | 124 | struct sctp_transport *sctp_transport_new(const union sctp_addr *addr, |
| 125 | unsigned int __nocast gfp) | 125 | gfp_t gfp) |
| 126 | { | 126 | { |
| 127 | struct sctp_transport *transport; | 127 | struct sctp_transport *transport; |
| 128 | 128 | ||
diff --git a/net/sctp/ulpevent.c b/net/sctp/ulpevent.c index 0abd5101107c..057e7fac3af0 100644 --- a/net/sctp/ulpevent.c +++ b/net/sctp/ulpevent.c | |||
| @@ -74,7 +74,7 @@ SCTP_STATIC void sctp_ulpevent_init(struct sctp_ulpevent *event, int msg_flags) | |||
| 74 | 74 | ||
| 75 | /* Create a new sctp_ulpevent. */ | 75 | /* Create a new sctp_ulpevent. */ |
| 76 | SCTP_STATIC struct sctp_ulpevent *sctp_ulpevent_new(int size, int msg_flags, | 76 | SCTP_STATIC struct sctp_ulpevent *sctp_ulpevent_new(int size, int msg_flags, |
| 77 | unsigned int __nocast gfp) | 77 | gfp_t gfp) |
| 78 | { | 78 | { |
| 79 | struct sctp_ulpevent *event; | 79 | struct sctp_ulpevent *event; |
| 80 | struct sk_buff *skb; | 80 | struct sk_buff *skb; |
| @@ -136,7 +136,7 @@ static inline void sctp_ulpevent_release_owner(struct sctp_ulpevent *event) | |||
| 136 | struct sctp_ulpevent *sctp_ulpevent_make_assoc_change( | 136 | struct sctp_ulpevent *sctp_ulpevent_make_assoc_change( |
| 137 | const struct sctp_association *asoc, | 137 | const struct sctp_association *asoc, |
| 138 | __u16 flags, __u16 state, __u16 error, __u16 outbound, | 138 | __u16 flags, __u16 state, __u16 error, __u16 outbound, |
| 139 | __u16 inbound, unsigned int __nocast gfp) | 139 | __u16 inbound, gfp_t gfp) |
| 140 | { | 140 | { |
| 141 | struct sctp_ulpevent *event; | 141 | struct sctp_ulpevent *event; |
| 142 | struct sctp_assoc_change *sac; | 142 | struct sctp_assoc_change *sac; |
| @@ -237,7 +237,7 @@ fail: | |||
| 237 | struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change( | 237 | struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change( |
| 238 | const struct sctp_association *asoc, | 238 | const struct sctp_association *asoc, |
| 239 | const struct sockaddr_storage *aaddr, | 239 | const struct sockaddr_storage *aaddr, |
| 240 | int flags, int state, int error, unsigned int __nocast gfp) | 240 | int flags, int state, int error, gfp_t gfp) |
| 241 | { | 241 | { |
| 242 | struct sctp_ulpevent *event; | 242 | struct sctp_ulpevent *event; |
| 243 | struct sctp_paddr_change *spc; | 243 | struct sctp_paddr_change *spc; |
| @@ -350,7 +350,7 @@ fail: | |||
| 350 | */ | 350 | */ |
| 351 | struct sctp_ulpevent *sctp_ulpevent_make_remote_error( | 351 | struct sctp_ulpevent *sctp_ulpevent_make_remote_error( |
| 352 | const struct sctp_association *asoc, struct sctp_chunk *chunk, | 352 | const struct sctp_association *asoc, struct sctp_chunk *chunk, |
| 353 | __u16 flags, unsigned int __nocast gfp) | 353 | __u16 flags, gfp_t gfp) |
| 354 | { | 354 | { |
| 355 | struct sctp_ulpevent *event; | 355 | struct sctp_ulpevent *event; |
| 356 | struct sctp_remote_error *sre; | 356 | struct sctp_remote_error *sre; |
| @@ -448,7 +448,7 @@ fail: | |||
| 448 | */ | 448 | */ |
| 449 | struct sctp_ulpevent *sctp_ulpevent_make_send_failed( | 449 | struct sctp_ulpevent *sctp_ulpevent_make_send_failed( |
| 450 | const struct sctp_association *asoc, struct sctp_chunk *chunk, | 450 | const struct sctp_association *asoc, struct sctp_chunk *chunk, |
| 451 | __u16 flags, __u32 error, unsigned int __nocast gfp) | 451 | __u16 flags, __u32 error, gfp_t gfp) |
| 452 | { | 452 | { |
| 453 | struct sctp_ulpevent *event; | 453 | struct sctp_ulpevent *event; |
| 454 | struct sctp_send_failed *ssf; | 454 | struct sctp_send_failed *ssf; |
| @@ -557,7 +557,7 @@ fail: | |||
| 557 | */ | 557 | */ |
| 558 | struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event( | 558 | struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event( |
| 559 | const struct sctp_association *asoc, | 559 | const struct sctp_association *asoc, |
| 560 | __u16 flags, unsigned int __nocast gfp) | 560 | __u16 flags, gfp_t gfp) |
| 561 | { | 561 | { |
| 562 | struct sctp_ulpevent *event; | 562 | struct sctp_ulpevent *event; |
| 563 | struct sctp_shutdown_event *sse; | 563 | struct sctp_shutdown_event *sse; |
| @@ -620,7 +620,7 @@ fail: | |||
| 620 | * 5.3.1.6 SCTP_ADAPTION_INDICATION | 620 | * 5.3.1.6 SCTP_ADAPTION_INDICATION |
| 621 | */ | 621 | */ |
| 622 | struct sctp_ulpevent *sctp_ulpevent_make_adaption_indication( | 622 | struct sctp_ulpevent *sctp_ulpevent_make_adaption_indication( |
| 623 | const struct sctp_association *asoc, unsigned int __nocast gfp) | 623 | const struct sctp_association *asoc, gfp_t gfp) |
| 624 | { | 624 | { |
| 625 | struct sctp_ulpevent *event; | 625 | struct sctp_ulpevent *event; |
| 626 | struct sctp_adaption_event *sai; | 626 | struct sctp_adaption_event *sai; |
| @@ -657,7 +657,7 @@ fail: | |||
| 657 | */ | 657 | */ |
| 658 | struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, | 658 | struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, |
| 659 | struct sctp_chunk *chunk, | 659 | struct sctp_chunk *chunk, |
| 660 | unsigned int __nocast gfp) | 660 | gfp_t gfp) |
| 661 | { | 661 | { |
| 662 | struct sctp_ulpevent *event = NULL; | 662 | struct sctp_ulpevent *event = NULL; |
| 663 | struct sk_buff *skb; | 663 | struct sk_buff *skb; |
| @@ -719,7 +719,7 @@ fail: | |||
| 719 | */ | 719 | */ |
| 720 | struct sctp_ulpevent *sctp_ulpevent_make_pdapi( | 720 | struct sctp_ulpevent *sctp_ulpevent_make_pdapi( |
| 721 | const struct sctp_association *asoc, __u32 indication, | 721 | const struct sctp_association *asoc, __u32 indication, |
| 722 | unsigned int __nocast gfp) | 722 | gfp_t gfp) |
| 723 | { | 723 | { |
| 724 | struct sctp_ulpevent *event; | 724 | struct sctp_ulpevent *event; |
| 725 | struct sctp_pdapi_event *pd; | 725 | struct sctp_pdapi_event *pd; |
diff --git a/net/sctp/ulpqueue.c b/net/sctp/ulpqueue.c index ec2c857eae7f..2080b2d28c98 100644 --- a/net/sctp/ulpqueue.c +++ b/net/sctp/ulpqueue.c | |||
| @@ -100,7 +100,7 @@ void sctp_ulpq_free(struct sctp_ulpq *ulpq) | |||
| 100 | 100 | ||
| 101 | /* Process an incoming DATA chunk. */ | 101 | /* Process an incoming DATA chunk. */ |
| 102 | int sctp_ulpq_tail_data(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, | 102 | int sctp_ulpq_tail_data(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, |
| 103 | unsigned int __nocast gfp) | 103 | gfp_t gfp) |
| 104 | { | 104 | { |
| 105 | struct sk_buff_head temp; | 105 | struct sk_buff_head temp; |
| 106 | sctp_data_chunk_t *hdr; | 106 | sctp_data_chunk_t *hdr; |
| @@ -792,7 +792,7 @@ static __u16 sctp_ulpq_renege_frags(struct sctp_ulpq *ulpq, __u16 needed) | |||
| 792 | /* Partial deliver the first message as there is pressure on rwnd. */ | 792 | /* Partial deliver the first message as there is pressure on rwnd. */ |
| 793 | void sctp_ulpq_partial_delivery(struct sctp_ulpq *ulpq, | 793 | void sctp_ulpq_partial_delivery(struct sctp_ulpq *ulpq, |
| 794 | struct sctp_chunk *chunk, | 794 | struct sctp_chunk *chunk, |
| 795 | unsigned int __nocast gfp) | 795 | gfp_t gfp) |
| 796 | { | 796 | { |
| 797 | struct sctp_ulpevent *event; | 797 | struct sctp_ulpevent *event; |
| 798 | struct sctp_association *asoc; | 798 | struct sctp_association *asoc; |
| @@ -816,7 +816,7 @@ void sctp_ulpq_partial_delivery(struct sctp_ulpq *ulpq, | |||
| 816 | 816 | ||
| 817 | /* Renege some packets to make room for an incoming chunk. */ | 817 | /* Renege some packets to make room for an incoming chunk. */ |
| 818 | void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, | 818 | void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, |
| 819 | unsigned int __nocast gfp) | 819 | gfp_t gfp) |
| 820 | { | 820 | { |
| 821 | struct sctp_association *asoc; | 821 | struct sctp_association *asoc; |
| 822 | __u16 needed, freed; | 822 | __u16 needed, freed; |
| @@ -855,7 +855,7 @@ void sctp_ulpq_renege(struct sctp_ulpq *ulpq, struct sctp_chunk *chunk, | |||
| 855 | /* Notify the application if an association is aborted and in | 855 | /* Notify the application if an association is aborted and in |
| 856 | * partial delivery mode. Send up any pending received messages. | 856 | * partial delivery mode. Send up any pending received messages. |
| 857 | */ | 857 | */ |
| 858 | void sctp_ulpq_abort_pd(struct sctp_ulpq *ulpq, unsigned int __nocast gfp) | 858 | void sctp_ulpq_abort_pd(struct sctp_ulpq *ulpq, gfp_t gfp) |
| 859 | { | 859 | { |
| 860 | struct sctp_ulpevent *ev = NULL; | 860 | struct sctp_ulpevent *ev = NULL; |
| 861 | struct sock *sk; | 861 | struct sock *sk; |
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index f3104035e35d..54e60a657500 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c | |||
| @@ -719,7 +719,7 @@ static void rpc_async_schedule(void *arg) | |||
| 719 | void * | 719 | void * |
| 720 | rpc_malloc(struct rpc_task *task, size_t size) | 720 | rpc_malloc(struct rpc_task *task, size_t size) |
| 721 | { | 721 | { |
| 722 | int gfp; | 722 | gfp_t gfp; |
| 723 | 723 | ||
| 724 | if (task->tk_flags & RPC_TASK_SWAPPER) | 724 | if (task->tk_flags & RPC_TASK_SWAPPER) |
| 725 | gfp = GFP_ATOMIC; | 725 | gfp = GFP_ATOMIC; |
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 30ec3efc48a6..691dea4a58e7 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
| @@ -587,7 +587,7 @@ svc_udp_recvfrom(struct svc_rqst *rqstp) | |||
| 587 | struct timeval tv; | 587 | struct timeval tv; |
| 588 | 588 | ||
| 589 | tv.tv_sec = xtime.tv_sec; | 589 | tv.tv_sec = xtime.tv_sec; |
| 590 | tv.tv_usec = xtime.tv_nsec * 1000; | 590 | tv.tv_usec = xtime.tv_nsec / NSEC_PER_USEC; |
| 591 | skb_set_timestamp(skb, &tv); | 591 | skb_set_timestamp(skb, &tv); |
| 592 | /* Don't enable netstamp, sunrpc doesn't | 592 | /* Don't enable netstamp, sunrpc doesn't |
| 593 | need that much accuracy */ | 593 | need that much accuracy */ |
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index fda737d77edc..cbb0ba34a600 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
| @@ -163,7 +163,7 @@ static void xfrm_policy_timer(unsigned long data) | |||
| 163 | if (xp->dead) | 163 | if (xp->dead) |
| 164 | goto out; | 164 | goto out; |
| 165 | 165 | ||
| 166 | dir = xp->index & 7; | 166 | dir = xfrm_policy_id2dir(xp->index); |
| 167 | 167 | ||
| 168 | if (xp->lft.hard_add_expires_seconds) { | 168 | if (xp->lft.hard_add_expires_seconds) { |
| 169 | long tmo = xp->lft.hard_add_expires_seconds + | 169 | long tmo = xp->lft.hard_add_expires_seconds + |
| @@ -225,7 +225,7 @@ expired: | |||
| 225 | * SPD calls. | 225 | * SPD calls. |
| 226 | */ | 226 | */ |
| 227 | 227 | ||
| 228 | struct xfrm_policy *xfrm_policy_alloc(int gfp) | 228 | struct xfrm_policy *xfrm_policy_alloc(gfp_t gfp) |
| 229 | { | 229 | { |
| 230 | struct xfrm_policy *policy; | 230 | struct xfrm_policy *policy; |
| 231 | 231 | ||
| @@ -417,7 +417,7 @@ struct xfrm_policy *xfrm_policy_byid(int dir, u32 id, int delete) | |||
| 417 | struct xfrm_policy *pol, **p; | 417 | struct xfrm_policy *pol, **p; |
| 418 | 418 | ||
| 419 | write_lock_bh(&xfrm_policy_lock); | 419 | write_lock_bh(&xfrm_policy_lock); |
| 420 | for (p = &xfrm_policy_list[id & 7]; (pol=*p)!=NULL; p = &pol->next) { | 420 | for (p = &xfrm_policy_list[dir]; (pol=*p)!=NULL; p = &pol->next) { |
| 421 | if (pol->index == id) { | 421 | if (pol->index == id) { |
| 422 | xfrm_pol_hold(pol); | 422 | xfrm_pol_hold(pol); |
| 423 | if (delete) | 423 | if (delete) |
diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 000000000000..b46d68bb9e17 --- /dev/null +++ b/scripts/.gitignore | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | conmakehash | ||
| 2 | kallsyms | ||
| 3 | pnmtologo | ||
| 4 | |||
diff --git a/scripts/basic/.gitignore b/scripts/basic/.gitignore new file mode 100644 index 000000000000..7304e19782c7 --- /dev/null +++ b/scripts/basic/.gitignore | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | fixdep | ||
| 2 | split-include | ||
| 3 | docproc | ||
diff --git a/scripts/kconfig/.gitignore b/scripts/kconfig/.gitignore new file mode 100644 index 000000000000..2dac3442e0ac --- /dev/null +++ b/scripts/kconfig/.gitignore | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | # | ||
| 2 | # Generated files | ||
| 3 | # | ||
| 4 | config* | ||
| 5 | lex.*.c | ||
| 6 | *.tab.c | ||
| 7 | *.tab.h | ||
| 8 | |||
| 9 | # | ||
| 10 | # configuration programs | ||
| 11 | # | ||
| 12 | conf | ||
| 13 | mconf | ||
| 14 | qconf | ||
| 15 | gconf | ||
| 16 | kxgettext | ||
diff --git a/scripts/mod/.gitignore b/scripts/mod/.gitignore new file mode 100644 index 000000000000..e9b7abe7b95b --- /dev/null +++ b/scripts/mod/.gitignore | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | elfconfig.h | ||
| 2 | mk_elfconfig | ||
| 3 | modpost | ||
| 4 | |||
diff --git a/security/keys/Makefile b/security/keys/Makefile index c392d750b208..5145adfb6a05 100644 --- a/security/keys/Makefile +++ b/security/keys/Makefile | |||
| @@ -6,6 +6,7 @@ obj-y := \ | |||
| 6 | key.o \ | 6 | key.o \ |
| 7 | keyring.o \ | 7 | keyring.o \ |
| 8 | keyctl.o \ | 8 | keyctl.o \ |
| 9 | permission.o \ | ||
| 9 | process_keys.o \ | 10 | process_keys.o \ |
| 10 | request_key.o \ | 11 | request_key.o \ |
| 11 | request_key_auth.o \ | 12 | request_key_auth.o \ |
diff --git a/security/keys/permission.c b/security/keys/permission.c new file mode 100644 index 000000000000..03db073ba45c --- /dev/null +++ b/security/keys/permission.c | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | /* permission.c: key permission determination | ||
| 2 | * | ||
| 3 | * Copyright (C) 2005 Red Hat, Inc. All Rights Reserved. | ||
| 4 | * Written by David Howells (dhowells@redhat.com) | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or | ||
| 7 | * modify it under the terms of the GNU General Public License | ||
| 8 | * as published by the Free Software Foundation; either version | ||
| 9 | * 2 of the License, or (at your option) any later version. | ||
| 10 | */ | ||
| 11 | |||
| 12 | #include <linux/module.h> | ||
| 13 | #include "internal.h" | ||
| 14 | |||
| 15 | /*****************************************************************************/ | ||
| 16 | /* | ||
| 17 | * check to see whether permission is granted to use a key in the desired way, | ||
| 18 | * but permit the security modules to override | ||
| 19 | */ | ||
| 20 | int key_task_permission(const key_ref_t key_ref, | ||
| 21 | struct task_struct *context, | ||
| 22 | key_perm_t perm) | ||
| 23 | { | ||
| 24 | struct key *key; | ||
| 25 | key_perm_t kperm; | ||
| 26 | int ret; | ||
| 27 | |||
| 28 | key = key_ref_to_ptr(key_ref); | ||
| 29 | |||
| 30 | /* use the second 8-bits of permissions for keys the caller owns */ | ||
| 31 | if (key->uid == context->fsuid) { | ||
| 32 | kperm = key->perm >> 16; | ||
| 33 | goto use_these_perms; | ||
| 34 | } | ||
| 35 | |||
| 36 | /* use the third 8-bits of permissions for keys the caller has a group | ||
| 37 | * membership in common with */ | ||
| 38 | if (key->gid != -1 && key->perm & KEY_GRP_ALL) { | ||
| 39 | if (key->gid == context->fsgid) { | ||
| 40 | kperm = key->perm >> 8; | ||
| 41 | goto use_these_perms; | ||
| 42 | } | ||
| 43 | |||
| 44 | task_lock(context); | ||
| 45 | ret = groups_search(context->group_info, key->gid); | ||
| 46 | task_unlock(context); | ||
| 47 | |||
| 48 | if (ret) { | ||
| 49 | kperm = key->perm >> 8; | ||
| 50 | goto use_these_perms; | ||
| 51 | } | ||
| 52 | } | ||
| 53 | |||
| 54 | /* otherwise use the least-significant 8-bits */ | ||
| 55 | kperm = key->perm; | ||
| 56 | |||
| 57 | use_these_perms: | ||
| 58 | /* use the top 8-bits of permissions for keys the caller possesses | ||
| 59 | * - possessor permissions are additive with other permissions | ||
| 60 | */ | ||
| 61 | if (is_key_possessed(key_ref)) | ||
| 62 | kperm |= key->perm >> 24; | ||
| 63 | |||
| 64 | kperm = kperm & perm & KEY_ALL; | ||
| 65 | |||
| 66 | return kperm == perm; | ||
| 67 | |||
| 68 | } /* end key_task_permission() */ | ||
| 69 | |||
| 70 | EXPORT_SYMBOL(key_task_permission); | ||
diff --git a/security/keys/request_key.c b/security/keys/request_key.c index e6dd366d43a3..5cc4bba70db6 100644 --- a/security/keys/request_key.c +++ b/security/keys/request_key.c | |||
| @@ -7,6 +7,8 @@ | |||
| 7 | * modify it under the terms of the GNU General Public License | 7 | * modify it under the terms of the GNU General Public License |
| 8 | * as published by the Free Software Foundation; either version | 8 | * as published by the Free Software Foundation; either version |
| 9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
| 10 | * | ||
| 11 | * See Documentation/keys-request-key.txt | ||
| 10 | */ | 12 | */ |
| 11 | 13 | ||
| 12 | #include <linux/module.h> | 14 | #include <linux/module.h> |
diff --git a/security/keys/request_key_auth.c b/security/keys/request_key_auth.c index 1ecd3d3fa9f8..a8e4069d48cb 100644 --- a/security/keys/request_key_auth.c +++ b/security/keys/request_key_auth.c | |||
| @@ -7,6 +7,8 @@ | |||
| 7 | * modify it under the terms of the GNU General Public License | 7 | * modify it under the terms of the GNU General Public License |
| 8 | * as published by the Free Software Foundation; either version | 8 | * as published by the Free Software Foundation; either version |
| 9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
| 10 | * | ||
| 11 | * See Documentation/keys-request-key.txt | ||
| 10 | */ | 12 | */ |
| 11 | 13 | ||
| 12 | #include <linux/module.h> | 14 | #include <linux/module.h> |
| @@ -96,6 +98,7 @@ static void request_key_auth_destroy(struct key *key) | |||
| 96 | kenter("{%d}", key->serial); | 98 | kenter("{%d}", key->serial); |
| 97 | 99 | ||
| 98 | key_put(rka->target_key); | 100 | key_put(rka->target_key); |
| 101 | kfree(rka); | ||
| 99 | 102 | ||
| 100 | } /* end request_key_auth_destroy() */ | 103 | } /* end request_key_auth_destroy() */ |
| 101 | 104 | ||
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c index 8eb140dd2e4b..a45cc971e735 100644 --- a/security/selinux/selinuxfs.c +++ b/security/selinux/selinuxfs.c | |||
| @@ -879,7 +879,7 @@ static ssize_t sel_commit_bools_write(struct file *filep, | |||
| 879 | if (sscanf(page, "%d", &new_value) != 1) | 879 | if (sscanf(page, "%d", &new_value) != 1) |
| 880 | goto out; | 880 | goto out; |
| 881 | 881 | ||
| 882 | if (new_value) { | 882 | if (new_value && bool_pending_values) { |
| 883 | security_set_bools(bool_num, bool_pending_values); | 883 | security_set_bools(bool_num, bool_pending_values); |
| 884 | } | 884 | } |
| 885 | 885 | ||
| @@ -952,6 +952,7 @@ static int sel_make_bools(void) | |||
| 952 | 952 | ||
| 953 | /* remove any existing files */ | 953 | /* remove any existing files */ |
| 954 | kfree(bool_pending_values); | 954 | kfree(bool_pending_values); |
| 955 | bool_pending_values = NULL; | ||
| 955 | 956 | ||
| 956 | sel_remove_bools(dir); | 957 | sel_remove_bools(dir); |
| 957 | 958 | ||
| @@ -1002,6 +1003,7 @@ out: | |||
| 1002 | } | 1003 | } |
| 1003 | return ret; | 1004 | return ret; |
| 1004 | err: | 1005 | err: |
| 1006 | kfree(values); | ||
| 1005 | d_genocide(dir); | 1007 | d_genocide(dir); |
| 1006 | ret = -ENOMEM; | 1008 | ret = -ENOMEM; |
| 1007 | goto out; | 1009 | goto out; |
diff --git a/security/selinux/ss/policydb.c b/security/selinux/ss/policydb.c index 0a758323a9cf..8e6262d12aa9 100644 --- a/security/selinux/ss/policydb.c +++ b/security/selinux/ss/policydb.c | |||
| @@ -650,8 +650,10 @@ void policydb_destroy(struct policydb *p) | |||
| 650 | } | 650 | } |
| 651 | if (lrt) kfree(lrt); | 651 | if (lrt) kfree(lrt); |
| 652 | 652 | ||
| 653 | for (i = 0; i < p->p_types.nprim; i++) | 653 | if (p->type_attr_map) { |
| 654 | ebitmap_destroy(&p->type_attr_map[i]); | 654 | for (i = 0; i < p->p_types.nprim; i++) |
| 655 | ebitmap_destroy(&p->type_attr_map[i]); | ||
| 656 | } | ||
| 655 | kfree(p->type_attr_map); | 657 | kfree(p->type_attr_map); |
| 656 | 658 | ||
| 657 | return; | 659 | return; |
diff --git a/sound/arm/pxa2xx-ac97.c b/sound/arm/pxa2xx-ac97.c index 29450befb5da..38b20efc9c0b 100644 --- a/sound/arm/pxa2xx-ac97.c +++ b/sound/arm/pxa2xx-ac97.c | |||
| @@ -245,7 +245,7 @@ static pxa2xx_pcm_client_t pxa2xx_ac97_pcm_client = { | |||
| 245 | 245 | ||
| 246 | #ifdef CONFIG_PM | 246 | #ifdef CONFIG_PM |
| 247 | 247 | ||
| 248 | static int pxa2xx_ac97_do_suspend(snd_card_t *card, unsigned int state) | 248 | static int pxa2xx_ac97_do_suspend(snd_card_t *card, pm_message_t state) |
| 249 | { | 249 | { |
| 250 | if (card->power_state != SNDRV_CTL_POWER_D3cold) { | 250 | if (card->power_state != SNDRV_CTL_POWER_D3cold) { |
| 251 | pxa2xx_audio_ops_t *platform_ops = card->dev->platform_data; | 251 | pxa2xx_audio_ops_t *platform_ops = card->dev->platform_data; |
diff --git a/sound/core/init.c b/sound/core/init.c index a5702014a704..c72a79115cca 100644 --- a/sound/core/init.c +++ b/sound/core/init.c | |||
| @@ -828,7 +828,8 @@ static int snd_generic_suspend(struct device *dev, pm_message_t state, u32 level | |||
| 828 | card = get_snd_generic_card(dev); | 828 | card = get_snd_generic_card(dev); |
| 829 | if (card->power_state == SNDRV_CTL_POWER_D3hot) | 829 | if (card->power_state == SNDRV_CTL_POWER_D3hot) |
| 830 | return 0; | 830 | return 0; |
| 831 | card->pm_suspend(card, PMSG_SUSPEND); | 831 | if (card->pm_suspend) |
| 832 | card->pm_suspend(card, PMSG_SUSPEND); | ||
| 832 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); | 833 | snd_power_change_state(card, SNDRV_CTL_POWER_D3hot); |
| 833 | return 0; | 834 | return 0; |
| 834 | } | 835 | } |
| @@ -843,7 +844,8 @@ static int snd_generic_resume(struct device *dev, u32 level) | |||
| 843 | card = get_snd_generic_card(dev); | 844 | card = get_snd_generic_card(dev); |
| 844 | if (card->power_state == SNDRV_CTL_POWER_D0) | 845 | if (card->power_state == SNDRV_CTL_POWER_D0) |
| 845 | return 0; | 846 | return 0; |
| 846 | card->pm_resume(card); | 847 | if (card->pm_suspend) |
| 848 | card->pm_resume(card); | ||
| 847 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); | 849 | snd_power_change_state(card, SNDRV_CTL_POWER_D0); |
| 848 | return 0; | 850 | return 0; |
| 849 | } | 851 | } |
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c index 91124ddbdda9..e72cec77f0db 100644 --- a/sound/core/memalloc.c +++ b/sound/core/memalloc.c | |||
| @@ -106,7 +106,7 @@ struct snd_mem_list { | |||
| 106 | 106 | ||
| 107 | static void *snd_dma_hack_alloc_coherent(struct device *dev, size_t size, | 107 | static void *snd_dma_hack_alloc_coherent(struct device *dev, size_t size, |
| 108 | dma_addr_t *dma_handle, | 108 | dma_addr_t *dma_handle, |
| 109 | unsigned int __nocast flags) | 109 | gfp_t flags) |
| 110 | { | 110 | { |
| 111 | void *ret; | 111 | void *ret; |
| 112 | u64 dma_mask, coherent_dma_mask; | 112 | u64 dma_mask, coherent_dma_mask; |
diff --git a/sound/core/memory.c b/sound/core/memory.c index 8fa888fc53a0..7d8e2eebba51 100644 --- a/sound/core/memory.c +++ b/sound/core/memory.c | |||
| @@ -89,7 +89,7 @@ void snd_memory_done(void) | |||
| 89 | } | 89 | } |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | static void *__snd_kmalloc(size_t size, unsigned int __nocast flags, void *caller) | 92 | static void *__snd_kmalloc(size_t size, gfp_t flags, void *caller) |
| 93 | { | 93 | { |
| 94 | unsigned long cpu_flags; | 94 | unsigned long cpu_flags; |
| 95 | struct snd_alloc_track *t; | 95 | struct snd_alloc_track *t; |
| @@ -111,12 +111,12 @@ static void *__snd_kmalloc(size_t size, unsigned int __nocast flags, void *calle | |||
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | #define _snd_kmalloc(size, flags) __snd_kmalloc((size), (flags), __builtin_return_address(0)); | 113 | #define _snd_kmalloc(size, flags) __snd_kmalloc((size), (flags), __builtin_return_address(0)); |
| 114 | void *snd_hidden_kmalloc(size_t size, unsigned int __nocast flags) | 114 | void *snd_hidden_kmalloc(size_t size, gfp_t flags) |
| 115 | { | 115 | { |
| 116 | return _snd_kmalloc(size, flags); | 116 | return _snd_kmalloc(size, flags); |
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | void *snd_hidden_kzalloc(size_t size, unsigned int __nocast flags) | 119 | void *snd_hidden_kzalloc(size_t size, gfp_t flags) |
| 120 | { | 120 | { |
| 121 | void *ret = _snd_kmalloc(size, flags); | 121 | void *ret = _snd_kmalloc(size, flags); |
| 122 | if (ret) | 122 | if (ret) |
| @@ -125,7 +125,7 @@ void *snd_hidden_kzalloc(size_t size, unsigned int __nocast flags) | |||
| 125 | } | 125 | } |
| 126 | EXPORT_SYMBOL(snd_hidden_kzalloc); | 126 | EXPORT_SYMBOL(snd_hidden_kzalloc); |
| 127 | 127 | ||
| 128 | void *snd_hidden_kcalloc(size_t n, size_t size, unsigned int __nocast flags) | 128 | void *snd_hidden_kcalloc(size_t n, size_t size, gfp_t flags) |
| 129 | { | 129 | { |
| 130 | void *ret = NULL; | 130 | void *ret = NULL; |
| 131 | if (n != 0 && size > INT_MAX / n) | 131 | if (n != 0 && size > INT_MAX / n) |
| @@ -190,7 +190,7 @@ void snd_hidden_vfree(void *obj) | |||
| 190 | snd_wrapper_vfree(obj); | 190 | snd_wrapper_vfree(obj); |
| 191 | } | 191 | } |
| 192 | 192 | ||
| 193 | char *snd_hidden_kstrdup(const char *s, unsigned int __nocast flags) | 193 | char *snd_hidden_kstrdup(const char *s, gfp_t flags) |
| 194 | { | 194 | { |
| 195 | int len; | 195 | int len; |
| 196 | char *buf; | 196 | char *buf; |
diff --git a/sound/core/seq/instr/ainstr_iw.c b/sound/core/seq/instr/ainstr_iw.c index b3cee092b1a4..67c24c8e8e7b 100644 --- a/sound/core/seq/instr/ainstr_iw.c +++ b/sound/core/seq/instr/ainstr_iw.c | |||
| @@ -58,7 +58,7 @@ static int snd_seq_iwffff_copy_env_from_stream(__u32 req_stype, | |||
| 58 | iwffff_xenv_t *ex, | 58 | iwffff_xenv_t *ex, |
| 59 | char __user **data, | 59 | char __user **data, |
| 60 | long *len, | 60 | long *len, |
| 61 | unsigned int __nocast gfp_mask) | 61 | gfp_t gfp_mask) |
| 62 | { | 62 | { |
| 63 | __u32 stype; | 63 | __u32 stype; |
| 64 | iwffff_env_record_t *rp, *rp_last; | 64 | iwffff_env_record_t *rp, *rp_last; |
diff --git a/sound/core/wrappers.c b/sound/core/wrappers.c index 508e6d67ee19..296b716f1376 100644 --- a/sound/core/wrappers.c +++ b/sound/core/wrappers.c | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #include <linux/fs.h> | 27 | #include <linux/fs.h> |
| 28 | 28 | ||
| 29 | #ifdef CONFIG_SND_DEBUG_MEMORY | 29 | #ifdef CONFIG_SND_DEBUG_MEMORY |
| 30 | void *snd_wrapper_kmalloc(size_t size, unsigned int __nocast flags) | 30 | void *snd_wrapper_kmalloc(size_t size, gfp_t flags) |
| 31 | { | 31 | { |
| 32 | return kmalloc(size, flags); | 32 | return kmalloc(size, flags); |
| 33 | } | 33 | } |
diff --git a/sound/isa/opl3sa2.c b/sound/isa/opl3sa2.c index e2d2babcd20b..4ba268f251e3 100644 --- a/sound/isa/opl3sa2.c +++ b/sound/isa/opl3sa2.c | |||
| @@ -914,6 +914,7 @@ static int __init alsa_card_opl3sa2_init(void) | |||
| 914 | #endif | 914 | #endif |
| 915 | #ifdef CONFIG_PNP | 915 | #ifdef CONFIG_PNP |
| 916 | pnp_unregister_card_driver(&opl3sa2_pnpc_driver); | 916 | pnp_unregister_card_driver(&opl3sa2_pnpc_driver); |
| 917 | pnp_unregister_driver(&opl3sa2_pnp_driver); | ||
| 917 | #endif | 918 | #endif |
| 918 | return -ENODEV; | 919 | return -ENODEV; |
| 919 | } | 920 | } |
| @@ -927,6 +928,7 @@ static void __exit alsa_card_opl3sa2_exit(void) | |||
| 927 | #ifdef CONFIG_PNP | 928 | #ifdef CONFIG_PNP |
| 928 | /* PnP cards first */ | 929 | /* PnP cards first */ |
| 929 | pnp_unregister_card_driver(&opl3sa2_pnpc_driver); | 930 | pnp_unregister_card_driver(&opl3sa2_pnpc_driver); |
| 931 | pnp_unregister_driver(&opl3sa2_pnp_driver); | ||
| 930 | #endif | 932 | #endif |
| 931 | for (idx = 0; idx < SNDRV_CARDS; idx++) | 933 | for (idx = 0; idx < SNDRV_CARDS; idx++) |
| 932 | snd_card_free(snd_opl3sa2_legacy[idx]); | 934 | snd_card_free(snd_opl3sa2_legacy[idx]); |
diff --git a/sound/pci/ac97/ac97_bus.c b/sound/pci/ac97/ac97_bus.c index 227f8b9f67ce..becbc420ba41 100644 --- a/sound/pci/ac97/ac97_bus.c +++ b/sound/pci/ac97/ac97_bus.c | |||
| @@ -17,25 +17,21 @@ | |||
| 17 | #include <linux/string.h> | 17 | #include <linux/string.h> |
| 18 | 18 | ||
| 19 | /* | 19 | /* |
| 20 | * Codec families have names seperated by commas, so we search for an | 20 | * Let drivers decide whether they want to support given codec from their |
| 21 | * individual codec name within the family string. | 21 | * probe method. Drivers have direct access to the ac97_t structure and may |
| 22 | * decide based on the id field amongst other things. | ||
| 22 | */ | 23 | */ |
| 23 | static int ac97_bus_match(struct device *dev, struct device_driver *drv) | 24 | static int ac97_bus_match(struct device *dev, struct device_driver *drv) |
| 24 | { | 25 | { |
| 25 | return (strstr(dev->bus_id, drv->name) != NULL); | 26 | return 1; |
| 26 | } | 27 | } |
| 27 | 28 | ||
| 28 | static int ac97_bus_suspend(struct device *dev, pm_message_t state) | 29 | static int ac97_bus_suspend(struct device *dev, pm_message_t state) |
| 29 | { | 30 | { |
| 30 | int ret = 0; | 31 | int ret = 0; |
| 31 | 32 | ||
| 32 | if (dev->driver && dev->driver->suspend) { | 33 | if (dev->driver && dev->driver->suspend) |
| 33 | ret = dev->driver->suspend(dev, state, SUSPEND_DISABLE); | 34 | ret = dev->driver->suspend(dev, state, SUSPEND_POWER_DOWN); |
| 34 | if (ret == 0) | ||
| 35 | ret = dev->driver->suspend(dev, state, SUSPEND_SAVE_STATE); | ||
| 36 | if (ret == 0) | ||
| 37 | ret = dev->driver->suspend(dev, state, SUSPEND_POWER_DOWN); | ||
| 38 | } | ||
| 39 | return ret; | 35 | return ret; |
| 40 | } | 36 | } |
| 41 | 37 | ||
| @@ -43,13 +39,8 @@ static int ac97_bus_resume(struct device *dev) | |||
| 43 | { | 39 | { |
| 44 | int ret = 0; | 40 | int ret = 0; |
| 45 | 41 | ||
| 46 | if (dev->driver && dev->driver->resume) { | 42 | if (dev->driver && dev->driver->resume) |
| 47 | ret = dev->driver->resume(dev, RESUME_POWER_ON); | 43 | ret = dev->driver->resume(dev, RESUME_POWER_ON); |
| 48 | if (ret == 0) | ||
| 49 | ret = dev->driver->resume(dev, RESUME_RESTORE_STATE); | ||
| 50 | if (ret == 0) | ||
| 51 | ret = dev->driver->resume(dev, RESUME_ENABLE); | ||
| 52 | } | ||
| 53 | return ret; | 44 | return ret; |
| 54 | } | 45 | } |
| 55 | 46 | ||
diff --git a/sound/pci/ac97/ac97_codec.c b/sound/pci/ac97/ac97_codec.c index e64cb07a39c2..41fc290149ed 100644 --- a/sound/pci/ac97/ac97_codec.c +++ b/sound/pci/ac97/ac97_codec.c | |||
| @@ -1557,7 +1557,7 @@ static int snd_ac97_modem_build(snd_card_t * card, ac97_t * ac97) | |||
| 1557 | 1557 | ||
| 1558 | /* build modem switches */ | 1558 | /* build modem switches */ |
| 1559 | for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_modem_switches); idx++) | 1559 | for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_modem_switches); idx++) |
| 1560 | if ((err = snd_ctl_add(card, snd_ac97_cnew(&snd_ac97_controls_modem_switches[idx], ac97))) < 0) | 1560 | if ((err = snd_ctl_add(card, snd_ctl_new1(&snd_ac97_controls_modem_switches[idx], ac97))) < 0) |
| 1561 | return err; | 1561 | return err; |
| 1562 | 1562 | ||
| 1563 | /* build chip specific controls */ | 1563 | /* build chip specific controls */ |
| @@ -1828,7 +1828,6 @@ static int snd_ac97_dev_register(snd_device_t *device) | |||
| 1828 | 1828 | ||
| 1829 | ac97->dev.bus = &ac97_bus_type; | 1829 | ac97->dev.bus = &ac97_bus_type; |
| 1830 | ac97->dev.parent = ac97->bus->card->dev; | 1830 | ac97->dev.parent = ac97->bus->card->dev; |
| 1831 | ac97->dev.platform_data = ac97; | ||
| 1832 | ac97->dev.release = ac97_device_release; | 1831 | ac97->dev.release = ac97_device_release; |
| 1833 | snprintf(ac97->dev.bus_id, BUS_ID_SIZE, "card%d-%d", ac97->bus->card->number, ac97->num); | 1832 | snprintf(ac97->dev.bus_id, BUS_ID_SIZE, "card%d-%d", ac97->bus->card->number, ac97->num); |
| 1834 | if ((err = device_register(&ac97->dev)) < 0) { | 1833 | if ((err = device_register(&ac97->dev)) < 0) { |
diff --git a/sound/pci/ac97/ac97_patch.c b/sound/pci/ac97/ac97_patch.c index 045ddc743edc..0238cc65d32a 100644 --- a/sound/pci/ac97/ac97_patch.c +++ b/sound/pci/ac97/ac97_patch.c | |||
| @@ -2752,7 +2752,11 @@ AC97_DOUBLE("Modem Speaker Volume", 0x5c, 14, 12, 3, 1) | |||
| 2752 | 2752 | ||
| 2753 | static int patch_si3036_specific(ac97_t * ac97) | 2753 | static int patch_si3036_specific(ac97_t * ac97) |
| 2754 | { | 2754 | { |
| 2755 | return patch_build_controls(ac97, snd_ac97_controls_si3036, ARRAY_SIZE(snd_ac97_controls_si3036)); | 2755 | int idx, err; |
| 2756 | for (idx = 0; idx < ARRAY_SIZE(snd_ac97_controls_si3036); idx++) | ||
| 2757 | if ((err = snd_ctl_add(ac97->bus->card, snd_ctl_new1(&snd_ac97_controls_si3036[idx], ac97))) < 0) | ||
| 2758 | return err; | ||
| 2759 | return 0; | ||
| 2756 | } | 2760 | } |
| 2757 | 2761 | ||
| 2758 | static struct snd_ac97_build_ops patch_si3036_ops = { | 2762 | static struct snd_ac97_build_ops patch_si3036_ops = { |
diff --git a/sound/pci/ali5451/ali5451.c b/sound/pci/ali5451/ali5451.c index d683f7736a63..f35b558c29b2 100644 --- a/sound/pci/ali5451/ali5451.c +++ b/sound/pci/ali5451/ali5451.c | |||
| @@ -1993,8 +1993,10 @@ static int __devinit snd_ali_mixer(ali_t * codec) | |||
| 1993 | if ((err = snd_ac97_mixer(codec->ac97_bus, &ac97, &codec->ac97[i])) < 0) { | 1993 | if ((err = snd_ac97_mixer(codec->ac97_bus, &ac97, &codec->ac97[i])) < 0) { |
| 1994 | snd_printk("ali mixer %d creating error.\n", i); | 1994 | snd_printk("ali mixer %d creating error.\n", i); |
| 1995 | if(i == 0) | 1995 | if(i == 0) |
| 1996 | return err; | 1996 | return err; |
| 1997 | } | 1997 | codec->num_of_codecs = 1; |
| 1998 | break; | ||
| 1999 | } | ||
| 1998 | } | 2000 | } |
| 1999 | 2001 | ||
| 2000 | if (codec->spdif_support) { | 2002 | if (codec->spdif_support) { |
diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c index e87e8427f25f..e9cd8e054f25 100644 --- a/sound/pci/emu10k1/emu10k1_main.c +++ b/sound/pci/emu10k1/emu10k1_main.c | |||
| @@ -756,9 +756,12 @@ static emu_chip_details_t emu_chip_details[] = { | |||
| 756 | .sblive51 = 1} , | 756 | .sblive51 = 1} , |
| 757 | /* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */ | 757 | /* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */ |
| 758 | {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80611102, | 758 | {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80611102, |
| 759 | .driver = "EMU10K1", .name = "SBLive! Platinum 5.1 [SB0060]", | 759 | .driver = "EMU10K1", .name = "SBLive 5.1 [SB0060]", |
| 760 | .id = "Live", | 760 | .id = "Live", |
| 761 | .emu10k1_chip = 1, | 761 | .emu10k1_chip = 1, |
| 762 | .ac97_chip = 2, /* ac97 is optional; both SBLive 5.1 and platinum | ||
| 763 | * share the same IDs! | ||
| 764 | */ | ||
| 762 | .sblive51 = 1} , | 765 | .sblive51 = 1} , |
| 763 | {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102, | 766 | {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102, |
| 764 | .driver = "EMU10K1", .name = "SBLive! Value [CT4850]", | 767 | .driver = "EMU10K1", .name = "SBLive! Value [CT4850]", |
diff --git a/sound/pci/emu10k1/emumixer.c b/sound/pci/emu10k1/emumixer.c index d71a72e84bcc..7cc831ccd0cb 100644 --- a/sound/pci/emu10k1/emumixer.c +++ b/sound/pci/emu10k1/emumixer.c | |||
| @@ -810,8 +810,14 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu, | |||
| 810 | ac97.private_data = emu; | 810 | ac97.private_data = emu; |
| 811 | ac97.private_free = snd_emu10k1_mixer_free_ac97; | 811 | ac97.private_free = snd_emu10k1_mixer_free_ac97; |
| 812 | ac97.scaps = AC97_SCAP_NO_SPDIF; | 812 | ac97.scaps = AC97_SCAP_NO_SPDIF; |
| 813 | if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) | 813 | if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) { |
| 814 | return err; | 814 | if (emu->card_capabilities->ac97_chip == 1) |
| 815 | return err; | ||
| 816 | snd_printd(KERN_INFO "emu10k1: AC97 is optional on this board\n"); | ||
| 817 | snd_printd(KERN_INFO" Proceeding without ac97 mixers...\n"); | ||
| 818 | snd_device_free(emu->card, pbus); | ||
| 819 | goto no_ac97; /* FIXME: get rid of ugly gotos.. */ | ||
| 820 | } | ||
| 815 | if (emu->audigy) { | 821 | if (emu->audigy) { |
| 816 | /* set master volume to 0 dB */ | 822 | /* set master volume to 0 dB */ |
| 817 | snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); | 823 | snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); |
| @@ -836,6 +842,7 @@ int __devinit snd_emu10k1_mixer(emu10k1_t *emu, | |||
| 836 | for (; *c; c++) | 842 | for (; *c; c++) |
| 837 | remove_ctl(card, *c); | 843 | remove_ctl(card, *c); |
| 838 | } else { | 844 | } else { |
| 845 | no_ac97: | ||
| 839 | if (emu->card_capabilities->ecard) | 846 | if (emu->card_capabilities->ecard) |
| 840 | strcpy(emu->card->mixername, "EMU APS"); | 847 | strcpy(emu->card->mixername, "EMU APS"); |
| 841 | else if (emu->audigy) | 848 | else if (emu->audigy) |
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index 5b829a1a4c60..d0eb9f2250aa 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c | |||
| @@ -881,10 +881,8 @@ int snd_hda_parse_generic_codec(struct hda_codec *codec) | |||
| 881 | struct hda_gspec *spec; | 881 | struct hda_gspec *spec; |
| 882 | int err; | 882 | int err; |
| 883 | 883 | ||
| 884 | if(!codec->afg) { | 884 | if(!codec->afg) |
| 885 | snd_printdd("hda_generic: no generic modem yet\n"); | 885 | return 0; |
| 886 | return -ENODEV; | ||
| 887 | } | ||
| 888 | 886 | ||
| 889 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); | 887 | spec = kzalloc(sizeof(*spec), GFP_KERNEL); |
| 890 | if (spec == NULL) { | 888 | if (spec == NULL) { |
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 9590ece2099d..6fe696e53ea6 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c | |||
| @@ -1137,6 +1137,7 @@ static snd_pcm_uframes_t azx_pcm_pointer(snd_pcm_substream_t *substream) | |||
| 1137 | pos = azx_sd_readl(azx_dev, SD_LPIB); | 1137 | pos = azx_sd_readl(azx_dev, SD_LPIB); |
| 1138 | if (chip->position_fix == POS_FIX_FIFO) | 1138 | if (chip->position_fix == POS_FIX_FIFO) |
| 1139 | pos += azx_dev->fifo_size; | 1139 | pos += azx_dev->fifo_size; |
| 1140 | #if 0 /* disabled temprarily, auto-correction doesn't work well... */ | ||
| 1140 | else if (chip->position_fix == POS_FIX_AUTO && azx_dev->period_updating) { | 1141 | else if (chip->position_fix == POS_FIX_AUTO && azx_dev->period_updating) { |
| 1141 | /* check the validity of DMA position */ | 1142 | /* check the validity of DMA position */ |
| 1142 | unsigned int diff = 0; | 1143 | unsigned int diff = 0; |
| @@ -1157,6 +1158,10 @@ static snd_pcm_uframes_t azx_pcm_pointer(snd_pcm_substream_t *substream) | |||
| 1157 | } | 1158 | } |
| 1158 | azx_dev->period_updating = 0; | 1159 | azx_dev->period_updating = 0; |
| 1159 | } | 1160 | } |
| 1161 | #else | ||
| 1162 | else if (chip->position_fix == POS_FIX_AUTO) | ||
| 1163 | pos += azx_dev->fifo_size; | ||
| 1164 | #endif | ||
| 1160 | } | 1165 | } |
| 1161 | if (pos >= azx_dev->bufsize) | 1166 | if (pos >= azx_dev->bufsize) |
| 1162 | pos = 0; | 1167 | pos = 0; |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 849b5b50c921..7327deb6df9f 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -1385,8 +1385,8 @@ static snd_kcontrol_new_t alc880_test_mixer[] = { | |||
| 1385 | HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), | 1385 | HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), |
| 1386 | ALC_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), | 1386 | ALC_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), |
| 1387 | ALC_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), | 1387 | ALC_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), |
| 1388 | ALC_BIND_MUTE("CLFE Playback Volume", 0x0e, 2, HDA_INPUT), | 1388 | ALC_BIND_MUTE("CLFE Playback Switch", 0x0e, 2, HDA_INPUT), |
| 1389 | ALC_BIND_MUTE("Side Playback Volume", 0x0f, 2, HDA_INPUT), | 1389 | ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), |
| 1390 | PIN_CTL_TEST("Front Pin Mode", 0x14), | 1390 | PIN_CTL_TEST("Front Pin Mode", 0x14), |
| 1391 | PIN_CTL_TEST("Surround Pin Mode", 0x15), | 1391 | PIN_CTL_TEST("Surround Pin Mode", 0x15), |
| 1392 | PIN_CTL_TEST("CLFE Pin Mode", 0x16), | 1392 | PIN_CTL_TEST("CLFE Pin Mode", 0x16), |
| @@ -1409,18 +1409,6 @@ static snd_kcontrol_new_t alc880_test_mixer[] = { | |||
| 1409 | HDA_CODEC_MUTE("In-4 Playback Switch", 0x0b, 0x3, HDA_INPUT), | 1409 | HDA_CODEC_MUTE("In-4 Playback Switch", 0x0b, 0x3, HDA_INPUT), |
| 1410 | HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x4, HDA_INPUT), | 1410 | HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x4, HDA_INPUT), |
| 1411 | HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x4, HDA_INPUT), | 1411 | HDA_CODEC_MUTE("CD Playback Switch", 0x0b, 0x4, HDA_INPUT), |
| 1412 | HDA_CODEC_VOLUME("Capture Volume", 0x08, 0x0, HDA_INPUT), | ||
| 1413 | HDA_CODEC_MUTE("Capture Switch", 0x08, 0x0, HDA_INPUT), | ||
| 1414 | HDA_CODEC_VOLUME_IDX("Capture Volume", 1, 0x09, 0x0, HDA_INPUT), | ||
| 1415 | HDA_CODEC_MUTE_IDX("Capture Switch", 1, 0x09, 0x0, HDA_INPUT), | ||
| 1416 | { | ||
| 1417 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | ||
| 1418 | .name = "Input Source", | ||
| 1419 | .count = 2, | ||
| 1420 | .info = alc_mux_enum_info, | ||
| 1421 | .get = alc_mux_enum_get, | ||
| 1422 | .put = alc_mux_enum_put, | ||
| 1423 | }, | ||
| 1424 | { | 1412 | { |
| 1425 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, | 1413 | .iface = SNDRV_CTL_ELEM_IFACE_MIXER, |
| 1426 | .name = "Channel Mode", | 1414 | .name = "Channel Mode", |
| @@ -2243,7 +2231,7 @@ static snd_kcontrol_new_t alc260_base_mixer[] = { | |||
| 2243 | HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), | 2231 | HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), |
| 2244 | ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), | 2232 | ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), |
| 2245 | HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), | 2233 | HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), |
| 2246 | ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_OUTPUT), | 2234 | ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_INPUT), |
| 2247 | HDA_CODEC_VOLUME("Capture Volume", 0x04, 0x0, HDA_INPUT), | 2235 | HDA_CODEC_VOLUME("Capture Volume", 0x04, 0x0, HDA_INPUT), |
| 2248 | HDA_CODEC_MUTE("Capture Switch", 0x04, 0x0, HDA_INPUT), | 2236 | HDA_CODEC_MUTE("Capture Switch", 0x04, 0x0, HDA_INPUT), |
| 2249 | { | 2237 | { |
| @@ -2270,7 +2258,7 @@ static snd_kcontrol_new_t alc260_hp_mixer[] = { | |||
| 2270 | HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), | 2258 | HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), |
| 2271 | ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), | 2259 | ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), |
| 2272 | HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), | 2260 | HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), |
| 2273 | ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_OUTPUT), | 2261 | ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_INPUT), |
| 2274 | HDA_CODEC_VOLUME("Capture Volume", 0x05, 0x0, HDA_INPUT), | 2262 | HDA_CODEC_VOLUME("Capture Volume", 0x05, 0x0, HDA_INPUT), |
| 2275 | HDA_CODEC_MUTE("Capture Switch", 0x05, 0x0, HDA_INPUT), | 2263 | HDA_CODEC_MUTE("Capture Switch", 0x05, 0x0, HDA_INPUT), |
| 2276 | { | 2264 | { |
| @@ -2501,7 +2489,7 @@ static snd_kcontrol_new_t alc882_base_mixer[] = { | |||
| 2501 | HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT), | 2489 | HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT), |
| 2502 | HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), | 2490 | HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), |
| 2503 | ALC_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), | 2491 | ALC_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), |
| 2504 | ALC_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_OUTPUT), | 2492 | ALC_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT), |
| 2505 | HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), | 2493 | HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), |
| 2506 | ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), | 2494 | ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), |
| 2507 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT), | 2495 | HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT), |
diff --git a/sound/pci/korg1212/korg1212.c b/sound/pci/korg1212/korg1212.c index 09f9cbe116a3..5561fd4091e8 100644 --- a/sound/pci/korg1212/korg1212.c +++ b/sound/pci/korg1212/korg1212.c | |||
| @@ -442,7 +442,7 @@ static char* stateName[] = { | |||
| 442 | "Setup for play", | 442 | "Setup for play", |
| 443 | "Playing", | 443 | "Playing", |
| 444 | "Monitor mode on", | 444 | "Monitor mode on", |
| 445 | "Calibrating" | 445 | "Calibrating", |
| 446 | "Invalid" | 446 | "Invalid" |
| 447 | }; | 447 | }; |
| 448 | 448 | ||
diff --git a/sound/pci/via82xx.c b/sound/pci/via82xx.c index 6db7de6b9719..3c0205b91e10 100644 --- a/sound/pci/via82xx.c +++ b/sound/pci/via82xx.c | |||
| @@ -2147,11 +2147,13 @@ static int __devinit check_dxs_list(struct pci_dev *pci) | |||
| 2147 | { .subvendor = 0x1019, .subdevice = 0x0996, .action = VIA_DXS_48K }, | 2147 | { .subvendor = 0x1019, .subdevice = 0x0996, .action = VIA_DXS_48K }, |
| 2148 | { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ | 2148 | { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ |
| 2149 | { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */ | 2149 | { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */ |
| 2150 | { .subvendor = 0x1019, .subdevice = 0xa101, .action = VIA_DXS_SRC }, | ||
| 2150 | { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */ | 2151 | { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */ |
| 2151 | { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */ | 2152 | { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */ |
| 2152 | { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/ | 2153 | { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/ |
| 2153 | { .subvendor = 0x1043, .subdevice = 0x80a1, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8-X */ | 2154 | { .subvendor = 0x1043, .subdevice = 0x80a1, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8-X */ |
| 2154 | { .subvendor = 0x1043, .subdevice = 0x80b0, .action = VIA_DXS_NO_VRA }, /* ASUS A7V600 & K8V*/ | 2155 | { .subvendor = 0x1043, .subdevice = 0x80b0, .action = VIA_DXS_NO_VRA }, /* ASUS A7V600 & K8V*/ |
| 2156 | { .subvendor = 0x1043, .subdevice = 0x810d, .action = VIA_DXS_SRC }, /* ASUS */ | ||
| 2155 | { .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC }, /* ASUS A8V Deluxe */ | 2157 | { .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC }, /* ASUS A8V Deluxe */ |
| 2156 | { .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */ | 2158 | { .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */ |
| 2157 | { .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */ | 2159 | { .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */ |
diff --git a/sound/ppc/pmac.c b/sound/ppc/pmac.c index e35b48d29c45..392b2abd9f13 100644 --- a/sound/ppc/pmac.c +++ b/sound/ppc/pmac.c | |||
| @@ -988,6 +988,7 @@ static int __init snd_pmac_detect(pmac_t *chip) | |||
| 988 | case 0x33: | 988 | case 0x33: |
| 989 | case 0x29: | 989 | case 0x29: |
| 990 | case 0x24: | 990 | case 0x24: |
| 991 | case 0x50: | ||
| 991 | case 0x5c: | 992 | case 0x5c: |
| 992 | chip->num_freqs = ARRAY_SIZE(tumbler_freqs); | 993 | chip->num_freqs = ARRAY_SIZE(tumbler_freqs); |
| 993 | chip->model = PMAC_SNAPPER; | 994 | chip->model = PMAC_SNAPPER; |
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index d5ae2055b896..2ead878bcb8f 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
| @@ -1444,9 +1444,9 @@ static snd_pcm_hardware_t snd_usb_playback = | |||
| 1444 | SNDRV_PCM_INFO_BATCH | | 1444 | SNDRV_PCM_INFO_BATCH | |
| 1445 | SNDRV_PCM_INFO_INTERLEAVED | | 1445 | SNDRV_PCM_INFO_INTERLEAVED | |
| 1446 | SNDRV_PCM_INFO_BLOCK_TRANSFER, | 1446 | SNDRV_PCM_INFO_BLOCK_TRANSFER, |
| 1447 | .buffer_bytes_max = (256*1024), | 1447 | .buffer_bytes_max = 1024 * 1024, |
| 1448 | .period_bytes_min = 64, | 1448 | .period_bytes_min = 64, |
| 1449 | .period_bytes_max = (128*1024), | 1449 | .period_bytes_max = 512 * 1024, |
| 1450 | .periods_min = 2, | 1450 | .periods_min = 2, |
| 1451 | .periods_max = 1024, | 1451 | .periods_max = 1024, |
| 1452 | }; | 1452 | }; |
| @@ -1458,9 +1458,9 @@ static snd_pcm_hardware_t snd_usb_capture = | |||
| 1458 | SNDRV_PCM_INFO_BATCH | | 1458 | SNDRV_PCM_INFO_BATCH | |
| 1459 | SNDRV_PCM_INFO_INTERLEAVED | | 1459 | SNDRV_PCM_INFO_INTERLEAVED | |
| 1460 | SNDRV_PCM_INFO_BLOCK_TRANSFER, | 1460 | SNDRV_PCM_INFO_BLOCK_TRANSFER, |
| 1461 | .buffer_bytes_max = (256*1024), | 1461 | .buffer_bytes_max = 1024 * 1024, |
| 1462 | .period_bytes_min = 64, | 1462 | .period_bytes_min = 64, |
| 1463 | .period_bytes_max = (128*1024), | 1463 | .period_bytes_max = 512 * 1024, |
| 1464 | .periods_min = 2, | 1464 | .periods_min = 2, |
| 1465 | .periods_max = 1024, | 1465 | .periods_max = 1024, |
| 1466 | }; | 1466 | }; |
diff --git a/sound/usb/usbmixer_maps.c b/sound/usb/usbmixer_maps.c index f05500b05ec0..c1264434e50a 100644 --- a/sound/usb/usbmixer_maps.c +++ b/sound/usb/usbmixer_maps.c | |||
| @@ -238,6 +238,16 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = { | |||
| 238 | .selector_map = audigy2nx_selectors, | 238 | .selector_map = audigy2nx_selectors, |
| 239 | }, | 239 | }, |
| 240 | { | 240 | { |
| 241 | /* Hercules DJ Console (Windows Edition) */ | ||
| 242 | .id = USB_ID(0x06f8, 0xb000), | ||
| 243 | .ignore_ctl_error = 1, | ||
| 244 | }, | ||
| 245 | { | ||
| 246 | /* Hercules DJ Console (Macintosh Edition) */ | ||
| 247 | .id = USB_ID(0x06f8, 0xd002), | ||
| 248 | .ignore_ctl_error = 1, | ||
| 249 | }, | ||
| 250 | { | ||
| 241 | .id = USB_ID(0x08bb, 0x2702), | 251 | .id = USB_ID(0x08bb, 0x2702), |
| 242 | .map = linex_map, | 252 | .map = linex_map, |
| 243 | .ignore_ctl_error = 1, | 253 | .ignore_ctl_error = 1, |
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h index f74e652a1e51..948759da6563 100644 --- a/sound/usb/usbquirks.h +++ b/sound/usb/usbquirks.h | |||
| @@ -117,6 +117,10 @@ YAMAHA_DEVICE(0x103a, NULL), | |||
| 117 | YAMAHA_DEVICE(0x103b, NULL), | 117 | YAMAHA_DEVICE(0x103b, NULL), |
| 118 | YAMAHA_DEVICE(0x103c, NULL), | 118 | YAMAHA_DEVICE(0x103c, NULL), |
| 119 | YAMAHA_DEVICE(0x103d, NULL), | 119 | YAMAHA_DEVICE(0x103d, NULL), |
| 120 | YAMAHA_DEVICE(0x103e, NULL), | ||
| 121 | YAMAHA_DEVICE(0x103f, NULL), | ||
| 122 | YAMAHA_DEVICE(0x1040, NULL), | ||
| 123 | YAMAHA_DEVICE(0x1041, NULL), | ||
| 120 | YAMAHA_DEVICE(0x2000, "DGP-7"), | 124 | YAMAHA_DEVICE(0x2000, "DGP-7"), |
| 121 | YAMAHA_DEVICE(0x2001, "DGP-5"), | 125 | YAMAHA_DEVICE(0x2001, "DGP-5"), |
| 122 | YAMAHA_DEVICE(0x2002, NULL), | 126 | YAMAHA_DEVICE(0x2002, NULL), |
| @@ -1010,6 +1014,40 @@ YAMAHA_DEVICE(0x7010, "UB99"), | |||
| 1010 | } | 1014 | } |
| 1011 | } | 1015 | } |
| 1012 | }, | 1016 | }, |
| 1017 | { | ||
| 1018 | USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a), | ||
| 1019 | .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { | ||
| 1020 | .vendor_name = "Roland", | ||
| 1021 | /* RD-700SX, RD-300SX */ | ||
| 1022 | .ifnum = 0, | ||
| 1023 | .type = QUIRK_MIDI_FIXED_ENDPOINT, | ||
| 1024 | .data = & (const snd_usb_midi_endpoint_info_t) { | ||
| 1025 | .out_cables = 0x0003, | ||
| 1026 | .in_cables = 0x0003 | ||
| 1027 | } | ||
| 1028 | } | ||
| 1029 | }, | ||
| 1030 | |||
| 1031 | /* Guillemot devices */ | ||
| 1032 | { | ||
| 1033 | /* | ||
| 1034 | * This is for the "Windows Edition" where the external MIDI ports are | ||
| 1035 | * the only MIDI ports; the control data is reported through HID | ||
| 1036 | * interfaces. The "Macintosh Edition" has ID 0xd002 and uses standard | ||
| 1037 | * compliant USB MIDI ports for external MIDI and controls. | ||
| 1038 | */ | ||
| 1039 | USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000), | ||
| 1040 | .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { | ||
| 1041 | .vendor_name = "Hercules", | ||
| 1042 | .product_name = "DJ Console (WE)", | ||
| 1043 | .ifnum = 4, | ||
| 1044 | .type = QUIRK_MIDI_FIXED_ENDPOINT, | ||
| 1045 | .data = & (const snd_usb_midi_endpoint_info_t) { | ||
| 1046 | .out_cables = 0x0001, | ||
| 1047 | .in_cables = 0x0001 | ||
| 1048 | } | ||
| 1049 | } | ||
| 1050 | }, | ||
| 1013 | 1051 | ||
| 1014 | /* Midiman/M-Audio devices */ | 1052 | /* Midiman/M-Audio devices */ |
| 1015 | { | 1053 | { |
| @@ -1339,10 +1377,20 @@ YAMAHA_DEVICE(0x7010, "UB99"), | |||
| 1339 | } | 1377 | } |
| 1340 | }, | 1378 | }, |
| 1341 | 1379 | ||
| 1380 | /* TerraTec devices */ | ||
| 1381 | { | ||
| 1382 | USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012), | ||
| 1383 | .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { | ||
| 1384 | .vendor_name = "TerraTec", | ||
| 1385 | .product_name = "PHASE 26", | ||
| 1386 | .ifnum = 3, | ||
| 1387 | .type = QUIRK_MIDI_STANDARD_INTERFACE | ||
| 1388 | } | ||
| 1389 | }, | ||
| 1342 | { | 1390 | { |
| 1343 | USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013), | 1391 | USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013), |
| 1344 | .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { | 1392 | .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { |
| 1345 | .vendor_name = "Terratec", | 1393 | .vendor_name = "TerraTec", |
| 1346 | .product_name = "PHASE 26", | 1394 | .product_name = "PHASE 26", |
| 1347 | .ifnum = 3, | 1395 | .ifnum = 3, |
| 1348 | .type = QUIRK_MIDI_STANDARD_INTERFACE | 1396 | .type = QUIRK_MIDI_STANDARD_INTERFACE |
diff --git a/usr/.gitignore b/usr/.gitignore new file mode 100644 index 000000000000..be186a82e8d0 --- /dev/null +++ b/usr/.gitignore | |||
| @@ -0,0 +1,7 @@ | |||
| 1 | # | ||
| 2 | # Generated files | ||
| 3 | # | ||
| 4 | gen_init_cpio | ||
| 5 | initramfs_data.cpio | ||
| 6 | initramfs_data.cpio.gz | ||
| 7 | initramfs_list | ||
