Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'master'

+8096 -2327
+44
Documentation/connector/connector.txt
··· 131 131 be lost due to memory pressure or process' receiving queue overflowed, 132 132 so caller is warned must be prepared. That is why struct cn_msg [main 133 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.
+28 -10
Documentation/dell_rbu.txt
··· 35 35 /sys/class/firmware/dell_rbu/data 36 36 /sys/devices/platform/dell_rbu/image_type 37 37 /sys/devices/platform/dell_rbu/data 38 + /sys/devices/platform/dell_rbu/packet_size 38 39 39 40 The driver supports two types of update mechanism; monolithic and packetized. 40 41 These update mechanism depends upon the BIOS currently running on the system. ··· 48 47 changed to packets during the driver load time by specifying the load 49 48 parameter image_type=packet. This can also be changed later as below 50 49 echo packet > /sys/devices/platform/dell_rbu/image_type 51 - Also echoing either mono ,packet or init in to image_type will free up the 52 - memory allocated by the driver. 50 + 51 + In packet update mode the packet size has to be given before any packets can 52 + be downloaded. It is done as below 53 + echo XXXX > /sys/devices/platform/dell_rbu/packet_size 54 + In the packet update mechanism, the user neesd to create a new file having 55 + packets of data arranged back to back. It can be done as follows 56 + The user creates packets header, gets the chunk of the BIOS image and 57 + placs it next to the packetheader; now, the packetheader + BIOS image chunk 58 + added to geather should match the specified packet_size. This makes one 59 + packet, the user needs to create more such packets out of the entire BIOS 60 + image file and then arrange all these packets back to back in to one single 61 + file. 62 + This file is then copied to /sys/class/firmware/dell_rbu/data. 63 + Once this file gets to the driver, the driver extracts packet_size data from 64 + the file and spreads it accross the physical memory in contiguous packet_sized 65 + space. 66 + This method makes sure that all the packets get to the driver in a single operation. 67 + 68 + In monolithic update the user simply get the BIOS image (.hdr file) and copies 69 + to the data file as is without any change to the BIOS image itself. 53 70 54 71 Do the steps below to download the BIOS image. 55 72 1) echo 1 > /sys/class/firmware/dell_rbu/loading ··· 77 58 The /sys/class/firmware/dell_rbu/ entries will remain till the following is 78 59 done. 79 60 echo -1 > /sys/class/firmware/dell_rbu/loading. 80 - Until this step is completed the drivr cannot be unloaded. 61 + Until this step is completed the driver cannot be unloaded. 62 + Also echoing either mono ,packet or init in to image_type will free up the 63 + memory allocated by the driver. 64 + 81 65 If an user by accident executes steps 1 and 3 above without executing step 2; 82 66 it will make the /sys/class/firmware/dell_rbu/ entries to disappear. 83 67 The entries can be recreated by doing the following ··· 88 66 NOTE: echoing init in image_type does not change it original value. 89 67 90 68 Also the driver provides /sys/devices/platform/dell_rbu/data readonly file to 91 - read back the image downloaded. This is useful in case of packet update 92 - mechanism where the above steps 1,2,3 will repeated for every packet. 93 - By reading the /sys/devices/platform/dell_rbu/data file all packet data 94 - downloaded can be verified in a single file. 95 - The packets are arranged in this file one after the other in a FIFO order. 69 + read back the image downloaded. 96 70 97 71 NOTE: 98 - This driver requires a patch for firmware_class.c which has the addition 99 - of request_firmware_nowait_nohotplug function to wortk 72 + This driver requires a patch for firmware_class.c which has the modified 73 + request_firmware_nowait function. 100 74 Also after updating the BIOS image an user mdoe application neeeds to execute 101 75 code which message the BIOS update request to the BIOS. So on the next reboot 102 76 the BIOS knows about the new image downloaded and it updates it self.
+161
Documentation/keys-request-key.txt
··· 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.
+11 -7
Documentation/keys.txt
··· 361 361 /sbin/request-key will be invoked in an attempt to obtain a key. The 362 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 367 The keyctl syscall functions are: 366 368 ··· 535 533 536 534 (*) Read the payload data from a key: 537 535 538 - key_serial_t keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer, 539 - size_t buflen); 536 + long keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer, 537 + size_t buflen); 540 538 541 539 This function attempts to read the payload data from the specified key 542 540 into the buffer. The process must have read permission on the key to ··· 557 555 558 556 (*) Instantiate a partially constructed key. 559 557 560 - key_serial_t keyctl(KEYCTL_INSTANTIATE, key_serial_t key, 561 - const void *payload, size_t plen, 562 - key_serial_t keyring); 558 + long keyctl(KEYCTL_INSTANTIATE, key_serial_t key, 559 + const void *payload, size_t plen, 560 + key_serial_t keyring); 563 561 564 562 If the kernel calls back to userspace to complete the instantiation of a 565 563 key, userspace should use this call to supply data for the key before the ··· 578 576 579 577 (*) Negatively instantiate a partially constructed key. 580 578 581 - key_serial_t keyctl(KEYCTL_NEGATE, key_serial_t key, 582 - unsigned timeout, key_serial_t keyring); 579 + long keyctl(KEYCTL_NEGATE, key_serial_t key, 580 + unsigned timeout, key_serial_t keyring); 583 581 584 582 If the kernel calls back to userspace to complete the instantiation of a 585 583 key, userspace should use this call mark the key as negative before the ··· 689 687 690 688 If successful, the key will have been attached to the default keyring for 691 689 implicitly obtained request-key keys, as set by KEYCTL_SET_REQKEY_KEYRING. 690 + 691 + See also Documentation/keys-request-key.txt. 692 692 693 693 694 694 (*) When it is no longer required, the key should be released using:
+1 -1
Makefile
··· 1 1 VERSION = 2 2 2 PATCHLEVEL = 6 3 3 SUBLEVEL = 14 4 - EXTRAVERSION =-rc3 4 + EXTRAVERSION =-rc4 5 5 NAME=Affluent Albatross 6 6 7 7 # *DOCUMENTATION*
+1 -1
arch/arm/Makefile
··· 53 53 tune-$(CONFIG_CPU_SA110) :=-mtune=strongarm110 54 54 tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100 55 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 58 # Need -Uarm for gcc < 3.x 59 59 CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
+18 -2
arch/arm/common/scoop.c
··· 26 26 struct scoop_dev { 27 27 void *base; 28 28 spinlock_t scoop_lock; 29 + unsigned short suspend_clr; 30 + unsigned short suspend_set; 29 31 u32 scoop_gpwr; 30 32 }; 31 33 ··· 92 90 EXPORT_SYMBOL(read_scoop_reg); 93 91 EXPORT_SYMBOL(write_scoop_reg); 94 92 93 + static void check_scoop_reg(struct scoop_dev *sdev) 94 + { 95 + unsigned short mcr; 96 + 97 + mcr = SCOOP_REG(sdev->base, SCOOP_MCR); 98 + if ((mcr & 0x100) == 0) 99 + SCOOP_REG(sdev->base, SCOOP_MCR) = 0x0101; 100 + } 101 + 95 102 #ifdef CONFIG_PM 96 103 static int scoop_suspend(struct device *dev, pm_message_t state, uint32_t level) 97 104 { 98 105 if (level == SUSPEND_POWER_DOWN) { 99 106 struct scoop_dev *sdev = dev_get_drvdata(dev); 100 107 101 - sdev->scoop_gpwr = SCOOP_REG(sdev->base,SCOOP_GPWR); 102 - SCOOP_REG(sdev->base,SCOOP_GPWR) = 0; 108 + check_scoop_reg(sdev); 109 + sdev->scoop_gpwr = SCOOP_REG(sdev->base, SCOOP_GPWR); 110 + SCOOP_REG(sdev->base, SCOOP_GPWR) = (sdev->scoop_gpwr & ~sdev->suspend_clr) | sdev->suspend_set; 103 111 } 104 112 return 0; 105 113 } ··· 119 107 if (level == RESUME_POWER_ON) { 120 108 struct scoop_dev *sdev = dev_get_drvdata(dev); 121 109 110 + check_scoop_reg(sdev); 122 111 SCOOP_REG(sdev->base,SCOOP_GPWR) = sdev->scoop_gpwr; 123 112 } 124 113 return 0; ··· 163 150 reset_scoop(dev); 164 151 SCOOP_REG(devptr->base, SCOOP_GPCR) = inf->io_dir & 0xffff; 165 152 SCOOP_REG(devptr->base, SCOOP_GPWR) = inf->io_out & 0xffff; 153 + 154 + devptr->suspend_clr = inf->suspend_clr; 155 + devptr->suspend_set = inf->suspend_set; 166 156 167 157 return 0; 168 158 }
+888
arch/arm/configs/collie_defconfig
··· 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
+1523
arch/arm/configs/corgi_defconfig
··· 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
+1015
arch/arm/configs/poodle_defconfig
··· 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
+1401
arch/arm/configs/spitz_defconfig
··· 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
+2 -2
arch/arm/kernel/armksyms.c
··· 45 45 46 46 #define EXPORT_SYMBOL_ALIAS(sym,orig) \ 47 47 EXPORT_CRC_ALIAS(sym) \ 48 - const struct kernel_symbol __ksymtab_##sym \ 49 - __attribute__((section("__ksymtab"))) = \ 48 + static const struct kernel_symbol __ksymtab_##sym \ 49 + __attribute_used__ __attribute__((section("__ksymtab"))) = \ 50 50 { (unsigned long)&orig, #sym }; 51 51 52 52 /*
+1 -6
arch/arm/kernel/entry-common.S
··· 106 106 .endm 107 107 108 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 109 ldmia sp, {r0 - lr}^ @ Get calling r0 - lr 114 110 mov r0, r0 115 - ldr lr, [sp, #S_PC] @ Get PC 116 111 add sp, sp, #S_FRAME_SIZE 117 - movs pc, lr 112 + subs pc, lr, #4 118 113 #else 119 114 .macro arm710_bug_check, instr, temp 120 115 .endm
+1
arch/arm/mach-pxa/corgi.c
··· 36 36 #include <asm/arch/mmc.h> 37 37 #include <asm/arch/udc.h> 38 38 #include <asm/arch/corgi.h> 39 + #include <asm/arch/sharpsl.h> 39 40 40 41 #include <asm/mach/sharpsl_param.h> 41 42 #include <asm/hardware/scoop.h>
+1 -1
arch/arm/mach-s3c2410/mach-anubis.c
··· 125 125 static int chip0_map[] = { 0 }; 126 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 129 [0] = { 130 130 .name = "Boot Agent", 131 131 .size = SZ_16K,
+2 -2
arch/arm/mach-s3c2410/mach-bast.c
··· 230 230 static int chip1_map[] = { 2 }; 231 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 234 [0] = { 235 235 .name = "Boot Agent", 236 236 .size = SZ_16K, ··· 340 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 344 .flags = DM9000_PLATF_16BITONLY 345 345 }; 346 346
+1 -1
arch/arm/mach-s3c2410/mach-vr1000.c
··· 288 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 292 .flags = DM9000_PLATF_16BITONLY, 293 293 }; 294 294
-3
arch/arm/mach-s3c2410/s3c2410.c
··· 125 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 128 static int s3c2410_uart_count = 0; 132 129 133 130 /* uart registration process */
+2 -2
arch/arm/mach-s3c2410/s3c2440.c
··· 151 151 152 152 #ifdef CONFIG_PM 153 153 154 - struct sleep_save s3c2440_sleep[] = { 154 + static struct sleep_save s3c2440_sleep[] = { 155 155 SAVE_ITEM(S3C2440_DSC0), 156 156 SAVE_ITEM(S3C2440_DSC1), 157 157 SAVE_ITEM(S3C2440_GPJDAT), ··· 260 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 265 return sysdev_class_register(&s3c2440_sysclass); 266 266 }
+1
arch/arm/mach-s3c2410/time.c
··· 38 38 #include <asm/hardware/clock.h> 39 39 40 40 #include "clock.h" 41 + #include "cpu.h" 41 42 42 43 static unsigned long timer_startval; 43 44 static unsigned long timer_usec_ticks;
+3 -3
arch/arm/mach-sa1100/collie.c
··· 111 111 112 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 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 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 121 static struct flash_platform_data collie_flash_data = {
+4 -4
arch/arm/mm/Kconfig
··· 370 370 371 371 config CPU_ICACHE_DISABLE 372 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 374 help 375 375 Say Y here to disable the processor instruction cache. Unless 376 376 you have a reason not to or are unsure, say N. 377 377 378 378 config CPU_DCACHE_DISABLE 379 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 381 help 382 382 Say Y here to disable the processor data cache. Unless 383 383 you have a reason not to or are unsure, say N. 384 384 385 385 config CPU_DCACHE_WRITETHROUGH 386 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 388 default y if CPU_ARM925T 389 389 help 390 390 Say Y here to use the data cache in writethrough mode. Unless you ··· 399 399 400 400 config CPU_BPREDICT_DISABLE 401 401 bool "Disable branch prediction" 402 - depends on CPU_ARM1020 402 + depends on CPU_ARM1020 || CPU_V6 403 403 help 404 404 Say Y here to disable branch prediction. If unsure, say N. 405 405
+32 -23
arch/arm/mm/alignment.c
··· 111 111 } 112 112 113 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 116 char mode; 117 117 ··· 119 119 if (get_user(mode, buffer)) 120 120 return -EFAULT; 121 121 if (mode >= '0' && mode <= '5') 122 - ai_usermode = mode - '0'; 122 + ai_usermode = mode - '0'; 123 123 } 124 124 return count; 125 125 } ··· 262 262 goto fault; \ 263 263 } while (0) 264 264 265 - #define put32_unaligned_check(val,addr) \ 265 + #define put32_unaligned_check(val,addr) \ 266 266 __put32_unaligned_check("strb", val, addr) 267 267 268 268 #define put32t_unaligned_check(val,addr) \ ··· 306 306 return TYPE_LDST; 307 307 308 308 user: 309 - if (LDST_L_BIT(instr)) { 310 - unsigned long val; 311 - get16t_unaligned_check(val, addr); 309 + if (LDST_L_BIT(instr)) { 310 + unsigned long val; 311 + get16t_unaligned_check(val, addr); 312 312 313 - /* signed half-word? */ 314 - if (instr & 0x40) 315 - val = (signed long)((signed short) val); 313 + /* signed half-word? */ 314 + if (instr & 0x40) 315 + val = (signed long)((signed short) val); 316 316 317 - regs->uregs[rd] = val; 318 - } else 319 - put16t_unaligned_check(regs->uregs[rd], addr); 317 + regs->uregs[rd] = val; 318 + } else 319 + put16t_unaligned_check(regs->uregs[rd], addr); 320 320 321 - return TYPE_LDST; 321 + return TYPE_LDST; 322 322 323 323 fault: 324 324 return TYPE_FAULT; ··· 330 330 { 331 331 unsigned int rd = RD_BITS(instr); 332 332 333 + if (((rd & 1) == 1) || (rd == 14)) 334 + goto bad; 335 + 333 336 ai_dword += 1; 334 337 335 338 if (user_mode(regs)) ··· 342 339 unsigned long val; 343 340 get32_unaligned_check(val, addr); 344 341 regs->uregs[rd] = val; 345 - get32_unaligned_check(val, addr+4); 346 - regs->uregs[rd+1] = val; 342 + get32_unaligned_check(val, addr + 4); 343 + regs->uregs[rd + 1] = val; 347 344 } else { 348 345 put32_unaligned_check(regs->uregs[rd], addr); 349 - put32_unaligned_check(regs->uregs[rd+1], addr+4); 346 + put32_unaligned_check(regs->uregs[rd + 1], addr + 4); 350 347 } 351 348 352 349 return TYPE_LDST; ··· 356 353 unsigned long val; 357 354 get32t_unaligned_check(val, addr); 358 355 regs->uregs[rd] = val; 359 - get32t_unaligned_check(val, addr+4); 360 - regs->uregs[rd+1] = val; 356 + get32t_unaligned_check(val, addr + 4); 357 + regs->uregs[rd + 1] = val; 361 358 } else { 362 359 put32t_unaligned_check(regs->uregs[rd], addr); 363 - put32t_unaligned_check(regs->uregs[rd+1], addr+4); 360 + put32t_unaligned_check(regs->uregs[rd + 1], addr + 4); 364 361 } 365 362 366 363 return TYPE_LDST; 367 - 364 + bad: 365 + return TYPE_ERROR; 368 366 fault: 369 367 return TYPE_FAULT; 370 368 } ··· 443 439 if (LDST_P_EQ_U(instr)) /* U = P */ 444 440 eaddr += 4; 445 441 446 - /* 442 + /* 447 443 * For alignment faults on the ARM922T/ARM920T the MMU makes 448 444 * the FSR (and hence addr) equal to the updated base address 449 445 * of the multiple access rather than the restored value. ··· 570 566 /* 6.5.1 Format 3: */ 571 567 case 0x4800 >> 11: /* 7.1.28 LDR(3) */ 572 568 /* NOTE: This case is not technically possible. We're 573 - * loading 32-bit memory data via PC relative 569 + * loading 32-bit memory data via PC relative 574 570 * addressing mode. So we can and should eliminate 575 571 * this case. But I'll leave it here for now. 576 572 */ ··· 642 638 643 639 if (fault) { 644 640 type = TYPE_FAULT; 645 - goto bad_or_fault; 641 + goto bad_or_fault; 646 642 } 647 643 648 644 if (user_mode(regs)) ··· 667 663 else if ((instr & 0x001000f0) == 0x000000d0 || /* LDRD */ 668 664 (instr & 0x001000f0) == 0x000000f0) /* STRD */ 669 665 handler = do_alignment_ldrdstrd; 666 + else if ((instr & 0x01f00ff0) == 0x01000090) /* SWP */ 667 + goto swp; 670 668 else 671 669 goto bad; 672 670 break; ··· 738 732 */ 739 733 do_bad_area(current, current->mm, addr, fsr, regs); 740 734 return 0; 735 + 736 + swp: 737 + printk(KERN_ERR "Alignment trap: not handling swp instruction\n"); 741 738 742 739 bad: 743 740 /*
-5
arch/arm/nwfpe/fpa11.c
··· 31 31 #include <linux/string.h> 32 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 34 /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ 40 35 static void resetFPA11(void) 41 36 {
+20
arch/arm/nwfpe/fpa11.h
··· 95 95 extern int8 SetRoundingPrecision(const unsigned int); 96 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 118 #endif
+1 -2
arch/arm/nwfpe/fpa11_cprt.c
··· 26 26 #include "fpa11.inl" 27 27 #include "fpmodule.h" 28 28 #include "fpmodule.inl" 29 + #include "softfloat.h" 29 30 30 31 #ifdef CONFIG_FPE_NWFPE_XP 31 32 extern flag floatx80_is_nan(floatx80); 32 33 #endif 33 - extern flag float64_is_nan(float64); 34 - extern flag float32_is_nan(float32); 35 34 36 35 unsigned int PerformFLT(const unsigned int opcode); 37 36 unsigned int PerformFIX(const unsigned int opcode);
+6
arch/arm/nwfpe/fpopcode.h
··· 476 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 485 #endif
+3
arch/arm/nwfpe/softfloat.h
··· 265 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 271 #endif
+86 -4
arch/arm/tools/mach-types
··· 2 2 # 3 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 9 # Please do not send patches to this file; it is automatically generated! 6 10 # To add an entry into this database, please see Documentation/arm/README, 7 - # or contact rmk@arm.linux.org.uk 11 + # or visit: 8 12 # 9 - # Last update: Thu Jun 23 20:19:33 2005 13 + # http://www.arm.linux.org.uk/developer/machines/?action=new 14 + # 15 + # Last update: Mon Oct 10 09:46:25 2005 10 16 # 11 17 # machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number 12 18 # ··· 427 421 mport3s MACH_MPORT3S MPORT3S 411 428 422 ra_alpha MACH_RA_ALPHA RA_ALPHA 412 429 423 xcep MACH_XCEP XCEP 413 430 - arcom_mercury MACH_ARCOM_MERCURY ARCOM_MERCURY 414 424 + arcom_vulcan MACH_ARCOM_VULCAN ARCOM_VULCAN 414 431 425 stargate MACH_STARGATE STARGATE 415 432 426 armadilloj MACH_ARMADILLOJ ARMADILLOJ 416 433 427 elroy_jack MACH_ELROY_JACK ELROY_JACK 417 ··· 460 454 xm250 MACH_XM250 XM250 444 461 455 t6tc1xb MACH_T6TC1XB T6TC1XB 445 462 456 ess710 MACH_ESS710 ESS710 446 463 - mx3ads MACH_MX3ADS MX3ADS 447 457 + mx31ads MACH_MX3ADS MX3ADS 447 464 458 himalaya MACH_HIMALAYA HIMALAYA 448 465 459 bolfenk MACH_BOLFENK BOLFENK 449 466 460 at91rm9200kr MACH_AT91RM9200KR AT91RM9200KR 450 ··· 793 787 tapwave_zodiac MACH_TAPWAVE_ZODIAC TAPWAVE_ZODIAC 779 794 788 universalmeter MACH_UNIVERSALMETER UNIVERSALMETER 780 795 789 hicoarm9 MACH_HICOARM9 HICOARM9 781 790 + pnx4008 MACH_PNX4008 PNX4008 782 791 + kws6000 MACH_KWS6000 KWS6000 783 792 + portux920t MACH_PORTUX920T PORTUX920T 784 793 + ez_x5 MACH_EZ_X5 EZ_X5 785 794 + omap_rudolph MACH_OMAP_RUDOLPH OMAP_RUDOLPH 786 795 + cpuat91 MACH_CPUAT91 CPUAT91 787 796 + rea9200 MACH_REA9200 REA9200 788 797 + acts_pune_sa1110 MACH_ACTS_PUNE_SA1110 ACTS_PUNE_SA1110 789 798 + ixp425 MACH_IXP425 IXP425 790 799 + argonplusodyssey MACH_ODYSSEY ODYSSEY 791 800 + perch MACH_PERCH PERCH 792 801 + eis05r1 MACH_EIS05R1 EIS05R1 793 802 + pepperpad MACH_PEPPERPAD PEPPERPAD 794 803 + sb3010 MACH_SB3010 SB3010 795 804 + rm9200 MACH_RM9200 RM9200 796 805 + dma03 MACH_DMA03 DMA03 797 806 + road_s101 MACH_ROAD_S101 ROAD_S101 798 807 + iq_nextgen_a MACH_IQ_NEXTGEN_A IQ_NEXTGEN_A 799 808 + iq_nextgen_b MACH_IQ_NEXTGEN_B IQ_NEXTGEN_B 800 809 + iq_nextgen_c MACH_IQ_NEXTGEN_C IQ_NEXTGEN_C 801 810 + iq_nextgen_d MACH_IQ_NEXTGEN_D IQ_NEXTGEN_D 802 811 + iq_nextgen_e MACH_IQ_NEXTGEN_E IQ_NEXTGEN_E 803 812 + mallow_at91 MACH_MALLOW_AT91 MALLOW_AT91 804 813 + cybertracker MACH_CYBERTRACKER CYBERTRACKER 805 814 + gesbc931x MACH_GESBC931X GESBC931X 806 815 + centipad MACH_CENTIPAD CENTIPAD 807 816 + armsoc MACH_ARMSOC ARMSOC 808 817 + se4200 MACH_SE4200 SE4200 809 818 + ems197a MACH_EMS197A EMS197A 810 819 + micro9 MACH_MICRO9 MICRO9 811 820 + micro9l MACH_MICRO9L MICRO9L 812 821 + uc5471dsp MACH_UC5471DSP UC5471DSP 813 822 + sj5471eng MACH_SJ5471ENG SJ5471ENG 814 823 + none MACH_CMPXA26X CMPXA26X 815 824 + nc MACH_NC NC 816 825 + omap_palmte MACH_OMAP_PALMTE OMAP_PALMTE 817 826 + ajax52x MACH_AJAX52X AJAX52X 818 827 + siriustar MACH_SIRIUSTAR SIRIUSTAR 819 828 + iodata_hdlg MACH_IODATA_HDLG IODATA_HDLG 820 829 + at91rm9200utl MACH_AT91RM9200UTL AT91RM9200UTL 821 830 + biosafe MACH_BIOSAFE BIOSAFE 822 831 + mp1000 MACH_MP1000 MP1000 823 832 + parsy MACH_PARSY PARSY 824 833 + ccxp270 MACH_CCXP CCXP 825 834 + omap_gsample MACH_OMAP_GSAMPLE OMAP_GSAMPLE 826 835 + realview_eb MACH_REALVIEW_EB REALVIEW_EB 827 836 + samoa MACH_SAMOA SAMOA 828 837 + t3xscale MACH_T3XSCALE T3XSCALE 829 838 + i878 MACH_I878 I878 830 839 + borzoi MACH_BORZOI BORZOI 831 840 + gecko MACH_GECKO GECKO 832 841 + ds101 MACH_DS101 DS101 833 842 + omap_palmtt2 MACH_OMAP_PALMTT2 OMAP_PALMTT2 834 843 + xscale_palmld MACH_XSCALE_PALMLD XSCALE_PALMLD 835 844 + cc9c MACH_CC9C CC9C 836 845 + sbc1670 MACH_SBC1670 SBC1670 837 846 + ixdp28x5 MACH_IXDP28X5 IXDP28X5 838 847 + omap_palmtt MACH_OMAP_PALMTT OMAP_PALMTT 839 848 + ml696k MACH_ML696K ML696K 840 849 + arcom_zeus MACH_ARCOM_ZEUS ARCOM_ZEUS 841 850 + osiris MACH_OSIRIS OSIRIS 842 851 + maestro MACH_MAESTRO MAESTRO 843 852 + tunge2 MACH_TUNGE2 TUNGE2 844 853 + ixbbm MACH_IXBBM IXBBM 845 854 + mx27 MACH_MX27 MX27 846 855 + ax8004 MACH_AX8004 AX8004 847 856 + at91sam9261ek MACH_AT91SAM9261EK AT91SAM9261EK 848 857 + loft MACH_LOFT LOFT 849 858 + magpie MACH_MAGPIE MAGPIE 850 859 + mx21 MACH_MX21 MX21 851 860 + mb87m3400 MACH_MB87M3400 MB87M3400 852 861 + mguard_delta MACH_MGUARD_DELTA MGUARD_DELTA 853 862 + davinci_dvdp MACH_DAVINCI_DVDP DAVINCI_DVDP 854 863 + htcuniversal MACH_HTCUNIVERSAL HTCUNIVERSAL 855 864 + tpad MACH_TPAD TPAD 856 865 + roverp3 MACH_ROVERP3 ROVERP3 857
+1 -1
arch/cris/arch-v32/drivers/pci/dma.c
··· 24 24 }; 25 25 26 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 29 void *ret; 30 30 struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
+2
arch/cris/arch-v32/kernel/smp.c
··· 15 15 #include <linux/kernel.h> 16 16 #include <linux/cpumask.h> 17 17 #include <linux/interrupt.h> 18 + #include <linux/module.h> 18 19 19 20 #define IPI_SCHEDULE 1 20 21 #define IPI_CALL 2 ··· 29 28 /* CPU masks */ 30 29 cpumask_t cpu_online_map = CPU_MASK_NONE; 31 30 cpumask_t phys_cpu_present_map = CPU_MASK_NONE; 31 + EXPORT_SYMBOL(phys_cpu_present_map); 32 32 33 33 /* Variables used during SMP boot */ 34 34 volatile int cpu_now_booting = 0;
+1 -1
arch/i386/kernel/cpu/amd.c
··· 29 29 int r; 30 30 31 31 #ifdef CONFIG_SMP 32 - unsigned long value; 32 + unsigned long long value; 33 33 34 34 /* Disable TLB flush filter by setting HWCR.FFDIS on K8 35 35 * bit 6 of msr C001_0015
+1 -1
arch/i386/kernel/pci-dma.c
··· 23 23 }; 24 24 25 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 28 void *ret; 29 29 struct dma_coherent_mem *mem = dev ? dev->dma_mem : NULL;
+5 -1
arch/i386/kernel/signal.c
··· 338 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 348 /* These symbols are defined with the addresses in the vsyscall page.
+5
arch/ia64/kernel/mca.c
··· 1016 1016 1017 1017 cmc_polling_enabled = 1; 1018 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 1024 schedule_work(&cmc_disable_work); 1020 1025 1021 1026 /*
+9
arch/m32r/kernel/entry.S
··· 681 681 bl do_debug_trap 682 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 694 /* Cache flushing handler */ 686 695 ENTRY(cache_flushing_handler)
+16 -17
arch/m32r/kernel/traps.c
··· 5 5 * Hitoshi Yamamoto 6 6 */ 7 7 8 - /* $Id$ */ 9 - 10 8 /* 11 9 * 'traps.c' handles hardware traps and faults after we have saved some 12 10 * state in 'entry.S'. ··· 33 35 asmlinkage void rie_handler(void); 34 36 asmlinkage void debug_trap(void); 35 37 asmlinkage void cache_flushing_handler(void); 38 + asmlinkage void ill_trap(void); 36 39 37 40 #ifdef CONFIG_SMP 38 41 extern void smp_reschedule_interrupt(void); ··· 76 77 eit_vector[5] = BRA_INSN(default_eit_handler, 5); 77 78 eit_vector[8] = BRA_INSN(rie_handler, 8); 78 79 eit_vector[12] = BRA_INSN(alignment_check, 12); 79 - eit_vector[16] = 0xff000000UL; 80 + eit_vector[16] = BRA_INSN(ill_trap, 16); 80 81 eit_vector[17] = BRA_INSN(debug_trap, 17); 81 82 eit_vector[18] = BRA_INSN(system_call, 18); 82 - eit_vector[19] = 0xff000000UL; 83 - eit_vector[20] = 0xff000000UL; 84 - eit_vector[21] = 0xff000000UL; 85 - eit_vector[22] = 0xff000000UL; 86 - eit_vector[23] = 0xff000000UL; 87 - eit_vector[24] = 0xff000000UL; 88 - eit_vector[25] = 0xff000000UL; 89 - eit_vector[26] = 0xff000000UL; 90 - eit_vector[27] = 0xff000000UL; 83 + eit_vector[19] = BRA_INSN(ill_trap, 19); 84 + eit_vector[20] = BRA_INSN(ill_trap, 20); 85 + eit_vector[21] = BRA_INSN(ill_trap, 21); 86 + eit_vector[22] = BRA_INSN(ill_trap, 22); 87 + eit_vector[23] = BRA_INSN(ill_trap, 23); 88 + eit_vector[24] = BRA_INSN(ill_trap, 24); 89 + eit_vector[25] = BRA_INSN(ill_trap, 25); 90 + eit_vector[26] = BRA_INSN(ill_trap, 26); 91 + eit_vector[27] = BRA_INSN(ill_trap, 27); 91 92 eit_vector[28] = BRA_INSN(cache_flushing_handler, 28); 92 - eit_vector[29] = 0xff000000UL; 93 - eit_vector[30] = 0xff000000UL; 94 - eit_vector[31] = 0xff000000UL; 93 + eit_vector[29] = BRA_INSN(ill_trap, 29); 94 + eit_vector[30] = BRA_INSN(ill_trap, 30); 95 + eit_vector[31] = BRA_INSN(ill_trap, 31); 95 96 eit_vector[32] = BRA_INSN(ei_handler, 32); 96 97 eit_vector[64] = BRA_INSN(pie_handler, 64); 97 98 #ifdef CONFIG_MMU ··· 285 286 286 287 DO_ERROR( 1, SIGTRAP, "debug trap", debug_trap) 287 288 DO_ERROR_INFO(0x20, SIGILL, "reserved instruction ", rie_handler, ILL_ILLOPC, regs->bpc) 288 - DO_ERROR_INFO(0x100, SIGILL, "privilege instruction", pie_handler, ILL_PRVOPC, regs->bpc) 289 + DO_ERROR_INFO(0x100, SIGILL, "privileged instruction", pie_handler, ILL_PRVOPC, regs->bpc) 290 + DO_ERROR_INFO(-1, SIGILL, "illegal trap", ill_trap, ILL_ILLTRP, regs->bpc) 289 291 290 292 extern int handle_unaligned_access(unsigned long, struct pt_regs *); 291 293 ··· 329 329 set_fs(oldfs); 330 330 } 331 331 } 332 -
+3 -2
arch/ppc/kernel/cputable.c
··· 91 91 .cpu_features = CPU_FTR_COMMON | CPU_FTR_601 | 92 92 CPU_FTR_HPTE_TABLE, 93 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 95 .icache_bsize = 32, 96 96 .dcache_bsize = 32, 97 97 .cpu_setup = __setup_cpu_601 ··· 745 745 .cpu_name = "403GCX", 746 746 .cpu_features = CPU_FTR_SPLIT_ID_CACHE | 747 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 750 .icache_bsize = 16, 750 751 .dcache_bsize = 16, 751 752 },
+2 -2
arch/ppc/kernel/dma-mapping.c
··· 401 401 static inline void __dma_sync_page_highmem(struct page *page, 402 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 405 size_t cur_size = seg_size; 406 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 408 int seg_nr = 0; 409 409 410 410 local_irq_save(flags);
+1 -1
arch/ppc/platforms/pmac_time.c
··· 195 195 ; 196 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 199 tb_to_us = mulhwu_scale_factor(dstart - dend, 60000); 200 200 201 201 printk(KERN_INFO "via_calibrate_decr: ticks per jiffy = %u (%u ticks)\n",
+1 -1
arch/ppc64/kernel/bpa_iommu.c
··· 310 310 311 311 312 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 315 void *ret; 316 316
+1 -1
arch/ppc64/kernel/dma.c
··· 53 53 EXPORT_SYMBOL(dma_set_mask); 54 54 55 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 58 struct dma_mapping_ops *dma_ops = get_dma_ops(dev); 59 59
+1 -1
arch/ppc64/kernel/iommu.c
··· 519 519 * to the dma address (mapping) of the first page. 520 520 */ 521 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 524 void *ret = NULL; 525 525 dma_addr_t mapping;
+13
arch/ppc64/kernel/module.c
··· 341 341 *(unsigned long *)location = my_r2(sechdrs, me); 342 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 357 case R_PPC64_TOC16_DS: 345 358 /* Subtact TOC pointer */ 346 359 value -= my_r2(sechdrs, me);
+2 -2
arch/ppc64/kernel/pSeries_pci.c
··· 32 32 33 33 #include "pci.h" 34 34 35 - static int __initdata s7a_workaround = -1; 35 + static int __devinitdata s7a_workaround = -1; 36 36 37 37 #if 0 38 38 void pcibios_name_device(struct pci_dev *dev) ··· 60 60 DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_name_device); 61 61 #endif 62 62 63 - static void __init check_s7a(void) 63 + static void __devinit check_s7a(void) 64 64 { 65 65 struct device_node *root; 66 66 char *model;
+1 -1
arch/ppc64/kernel/pci_direct_iommu.c
··· 31 31 #include "pci.h" 32 32 33 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 36 void *ret; 37 37
+1 -1
arch/ppc64/kernel/pci_iommu.c
··· 76 76 * to the dma address (mapping) of the first page. 77 77 */ 78 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 81 return iommu_alloc_coherent(devnode_table(hwdev), size, dma_handle, 82 82 flag);
+1 -1
arch/ppc64/kernel/vio.c
··· 218 218 } 219 219 220 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 223 return iommu_alloc_coherent(to_vio_dev(dev)->iommu_table, size, 224 224 dma_handle, flag);
+3
arch/sh/kernel/smp.c
··· 22 22 #include <linux/time.h> 23 23 #include <linux/timex.h> 24 24 #include <linux/sched.h> 25 + #include <linux/module.h> 25 26 26 27 #include <asm/atomic.h> 27 28 #include <asm/processor.h> ··· 40 39 extern void per_cpu_trap_init(void); 41 40 42 41 cpumask_t cpu_possible_map; 42 + EXPORT_SYMBOL(cpu_possible_map); 43 + 43 44 cpumask_t cpu_online_map; 44 45 static atomic_t cpus_booted = ATOMIC_INIT(0); 45 46
-56
arch/sparc/Kconfig
··· 25 25 26 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 28 config SMP 85 29 bool "Symmetric multi-processing support (does not work on sun4/sun4c)" 86 30 depends on BROKEN
+5 -9
arch/sparc64/kernel/dtlb_base.S
··· 53 53 * be guaranteed to be 0 ... mmu_context.h does guarantee this 54 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 57 #define CREATE_VPTE_OFFSET2(r1, r2) \ 58 58 srax r1, 10, r2 59 - #define CREATE_VPTE_NOP nop 60 59 #else 61 60 #define CREATE_VPTE_OFFSET1(r1, r2) \ 62 61 srax r1, PAGE_SHIFT, r2 63 62 #define CREATE_VPTE_OFFSET2(r1, r2) \ 64 63 sllx r2, 3, r2 65 - #define CREATE_VPTE_NOP 66 64 #endif 67 65 68 66 /* DTLB ** ICACHE line 1: Quick user TLB misses */ 67 + mov TLB_SFSR, %g1 69 68 ldxa [%g1 + %g1] ASI_DMMU, %g4 ! Get TAG_ACCESS 70 69 andcc %g4, TAG_CONTEXT_BITS, %g0 ! From Nucleus? 71 70 from_tl1_trap: ··· 73 74 be,pn %xcc, kvmap ! Yep, special processing 74 75 CREATE_VPTE_OFFSET2(%g4, %g6) ! Create VPTE offset 75 76 cmp %g5, 4 ! Last trap level? 76 - be,pn %xcc, longpath ! Yep, cannot risk VPTE miss 77 - nop ! delay slot 78 77 79 78 /* DTLB ** ICACHE line 2: User finish + quick kernel TLB misses */ 79 + be,pn %xcc, longpath ! Yep, cannot risk VPTE miss 80 + nop ! delay slot 80 81 ldxa [%g3 + %g6] ASI_S, %g5 ! Load VPTE 81 82 1: brgez,pn %g5, longpath ! Invalid, branch out 82 83 nop ! Delay-slot 83 84 9: stxa %g5, [%g0] ASI_DTLB_DATA_IN ! Reload TLB 84 85 retry ! Trap return 85 - nop 86 - nop 87 86 nop 88 87 89 88 /* DTLB ** ICACHE line 3: winfixups+real_faults */ ··· 103 106 nop 104 107 nop 105 108 nop 106 - CREATE_VPTE_NOP 109 + nop 107 110 108 111 #undef CREATE_VPTE_OFFSET1 109 112 #undef CREATE_VPTE_OFFSET2 110 - #undef CREATE_VPTE_NOP
+6 -6
arch/sparc64/kernel/dtlb_prot.S
··· 14 14 */ 15 15 16 16 /* PROT ** ICACHE line 1: User DTLB protection trap */ 17 - stxa %g0, [%g1] ASI_DMMU ! Clear SFSR FaultValid bit 18 - membar #Sync ! Synchronize ASI stores 19 - rdpr %pstate, %g5 ! Move into alternate globals 17 + mov TLB_SFSR, %g1 18 + stxa %g0, [%g1] ASI_DMMU ! Clear FaultValid bit 19 + membar #Sync ! Synchronize stores 20 + rdpr %pstate, %g5 ! Move into alt-globals 20 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 23 cmp %g1, 1 ! Trap level >1? 23 - mov TLB_TAG_ACCESS, %g4 ! Prepare reload of vaddr 24 - nop 24 + mov TLB_TAG_ACCESS, %g4 ! For reload of vaddr 25 25 26 26 /* PROT ** ICACHE line 2: More real fault processing */ 27 27 bgu,pn %xcc, winfix_trampoline ! Yes, perform winfixup
+29 -53
arch/sparc64/kernel/entry.S
··· 33 33 /* This is trivial with the new code... */ 34 34 .globl do_fpdis 35 35 do_fpdis: 36 - sethi %hi(TSTATE_PEF), %g4 ! IEU0 36 + sethi %hi(TSTATE_PEF), %g4 37 37 rdpr %tstate, %g5 38 38 andcc %g5, %g4, %g0 39 39 be,pt %xcc, 1f ··· 50 50 add %g0, %g0, %g0 51 51 ba,a,pt %xcc, rtrap_clr_l6 52 52 53 - 1: ldub [%g6 + TI_FPSAVED], %g5 ! Load Group 54 - wr %g0, FPRS_FEF, %fprs ! LSU Group+4bubbles 55 - andcc %g5, FPRS_FEF, %g0 ! IEU1 Group 56 - be,a,pt %icc, 1f ! CTI 57 - clr %g7 ! IEU0 58 - ldx [%g6 + TI_GSR], %g7 ! Load Group 59 - 1: andcc %g5, FPRS_DL, %g0 ! IEU1 60 - bne,pn %icc, 2f ! CTI 61 - fzero %f0 ! FPA 62 - andcc %g5, FPRS_DU, %g0 ! IEU1 Group 63 - bne,pn %icc, 1f ! CTI 64 - fzero %f2 ! FPA 53 + 1: ldub [%g6 + TI_FPSAVED], %g5 54 + wr %g0, FPRS_FEF, %fprs 55 + andcc %g5, FPRS_FEF, %g0 56 + be,a,pt %icc, 1f 57 + clr %g7 58 + ldx [%g6 + TI_GSR], %g7 59 + 1: andcc %g5, FPRS_DL, %g0 60 + bne,pn %icc, 2f 61 + fzero %f0 62 + andcc %g5, FPRS_DU, %g0 63 + bne,pn %icc, 1f 64 + fzero %f2 65 65 faddd %f0, %f2, %f4 66 66 fmuld %f0, %f2, %f6 67 67 faddd %f0, %f2, %f8 ··· 97 97 faddd %f0, %f2, %f4 98 98 fmuld %f0, %f2, %f6 99 99 ldxa [%g3] ASI_DMMU, %g5 100 - cplus_fptrap_insn_1: 101 - sethi %hi(0), %g2 100 + sethi %hi(sparc64_kern_sec_context), %g2 101 + ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 102 102 stxa %g2, [%g3] ASI_DMMU 103 103 membar #Sync 104 104 add %g6, TI_FPREGS + 0xc0, %g2 105 105 faddd %f0, %f2, %f8 106 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 109 ldda [%g2] ASI_BLK_S, %f48 110 + membar #Sync 109 111 faddd %f0, %f2, %f12 110 112 fmuld %f0, %f2, %f14 111 113 faddd %f0, %f2, %f16 ··· 118 116 fmuld %f0, %f2, %f26 119 117 faddd %f0, %f2, %f28 120 118 fmuld %f0, %f2, %f30 121 - membar #Sync 122 119 b,pt %xcc, fpdis_exit 123 120 nop 124 121 2: andcc %g5, FPRS_DU, %g0 ··· 127 126 fzero %f34 128 127 ldxa [%g3] ASI_DMMU, %g5 129 128 add %g6, TI_FPREGS, %g1 130 - cplus_fptrap_insn_2: 131 - sethi %hi(0), %g2 129 + sethi %hi(sparc64_kern_sec_context), %g2 130 + ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 132 131 stxa %g2, [%g3] ASI_DMMU 133 132 membar #Sync 134 133 add %g6, TI_FPREGS + 0x40, %g2 135 134 faddd %f32, %f34, %f36 136 135 fmuld %f32, %f34, %f38 137 - ldda [%g1] ASI_BLK_S, %f0 ! grrr, where is ASI_BLK_NUCLEUS 8-( 136 + membar #Sync 137 + ldda [%g1] ASI_BLK_S, %f0 138 138 ldda [%g2] ASI_BLK_S, %f16 139 + membar #Sync 139 140 faddd %f32, %f34, %f40 140 141 fmuld %f32, %f34, %f42 141 142 faddd %f32, %f34, %f44 ··· 150 147 fmuld %f32, %f34, %f58 151 148 faddd %f32, %f34, %f60 152 149 fmuld %f32, %f34, %f62 153 - membar #Sync 154 150 ba,pt %xcc, fpdis_exit 155 151 nop 156 152 3: mov SECONDARY_CONTEXT, %g3 157 153 add %g6, TI_FPREGS, %g1 158 154 ldxa [%g3] ASI_DMMU, %g5 159 - cplus_fptrap_insn_3: 160 - sethi %hi(0), %g2 155 + sethi %hi(sparc64_kern_sec_context), %g2 156 + ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 161 157 stxa %g2, [%g3] ASI_DMMU 162 158 membar #Sync 163 159 mov 0x40, %g2 164 - ldda [%g1] ASI_BLK_S, %f0 ! grrr, where is ASI_BLK_NUCLEUS 8-( 160 + membar #Sync 161 + ldda [%g1] ASI_BLK_S, %f0 165 162 ldda [%g1 + %g2] ASI_BLK_S, %f16 166 163 add %g1, 0x80, %g1 167 164 ldda [%g1] ASI_BLK_S, %f32 ··· 322 319 stx %g3, [%g6 + TI_GSR] 323 320 mov SECONDARY_CONTEXT, %g3 324 321 ldxa [%g3] ASI_DMMU, %g5 325 - cplus_fptrap_insn_4: 326 - sethi %hi(0), %g2 322 + sethi %hi(sparc64_kern_sec_context), %g2 323 + ldx [%g2 + %lo(sparc64_kern_sec_context)], %g2 327 324 stxa %g2, [%g3] ASI_DMMU 328 325 membar #Sync 329 326 add %g6, TI_FPREGS, %g2 ··· 343 340 membar #Sync 344 341 ba,pt %xcc, etrap 345 342 wr %g0, 0, %fprs 346 - 347 - cplus_fptrap_1: 348 - sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 349 - 350 - .globl cheetah_plus_patch_fpdis 351 - cheetah_plus_patch_fpdis: 352 - /* We configure the dTLB512_0 for 4MB pages and the 353 - * dTLB512_1 for 8K pages when in context zero. 354 - */ 355 - sethi %hi(cplus_fptrap_1), %o0 356 - lduw [%o0 + %lo(cplus_fptrap_1)], %o1 357 - 358 - set cplus_fptrap_insn_1, %o2 359 - stw %o1, [%o2] 360 - flush %o2 361 - set cplus_fptrap_insn_2, %o2 362 - stw %o1, [%o2] 363 - flush %o2 364 - set cplus_fptrap_insn_3, %o2 365 - stw %o1, [%o2] 366 - flush %o2 367 - set cplus_fptrap_insn_4, %o2 368 - stw %o1, [%o2] 369 - flush %o2 370 - 371 - retl 372 - nop 373 343 374 344 /* The registers for cross calls will be: 375 345 *
+4 -47
arch/sparc64/kernel/etrap.S
··· 68 68 69 69 wrpr %g3, 0, %otherwin 70 70 wrpr %g2, 0, %wstate 71 - cplus_etrap_insn_1: 72 - sethi %hi(0), %g3 73 - sllx %g3, 32, %g3 74 - cplus_etrap_insn_2: 75 - sethi %hi(0), %g2 76 - or %g3, %g2, %g3 71 + sethi %hi(sparc64_kern_pri_context), %g2 72 + ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3 77 73 stxa %g3, [%l4] ASI_DMMU 78 74 flush %l6 79 75 wr %g0, ASI_AIUS, %asi ··· 211 215 mov PRIMARY_CONTEXT, %l4 212 216 wrpr %g3, 0, %otherwin 213 217 wrpr %g2, 0, %wstate 214 - cplus_etrap_insn_3: 215 - sethi %hi(0), %g3 216 - sllx %g3, 32, %g3 217 - cplus_etrap_insn_4: 218 - sethi %hi(0), %g2 219 - or %g3, %g2, %g3 218 + sethi %hi(sparc64_kern_pri_context), %g2 219 + ldx [%g2 + %lo(sparc64_kern_pri_context)], %g3 220 220 stxa %g3, [%l4] ASI_DMMU 221 221 flush %l6 222 222 ··· 256 264 257 265 #undef TASK_REGOFF 258 266 #undef ETRAP_PSTATE1 259 - 260 - cplus_einsn_1: 261 - sethi %uhi(CTX_CHEETAH_PLUS_NUC), %g3 262 - cplus_einsn_2: 263 - sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 264 - 265 - .globl cheetah_plus_patch_etrap 266 - cheetah_plus_patch_etrap: 267 - /* We configure the dTLB512_0 for 4MB pages and the 268 - * dTLB512_1 for 8K pages when in context zero. 269 - */ 270 - sethi %hi(cplus_einsn_1), %o0 271 - sethi %hi(cplus_etrap_insn_1), %o2 272 - lduw [%o0 + %lo(cplus_einsn_1)], %o1 273 - or %o2, %lo(cplus_etrap_insn_1), %o2 274 - stw %o1, [%o2] 275 - flush %o2 276 - sethi %hi(cplus_etrap_insn_3), %o2 277 - or %o2, %lo(cplus_etrap_insn_3), %o2 278 - stw %o1, [%o2] 279 - flush %o2 280 - 281 - sethi %hi(cplus_einsn_2), %o0 282 - sethi %hi(cplus_etrap_insn_2), %o2 283 - lduw [%o0 + %lo(cplus_einsn_2)], %o1 284 - or %o2, %lo(cplus_etrap_insn_2), %o2 285 - stw %o1, [%o2] 286 - flush %o2 287 - sethi %hi(cplus_etrap_insn_4), %o2 288 - or %o2, %lo(cplus_etrap_insn_4), %o2 289 - stw %o1, [%o2] 290 - flush %o2 291 - 292 - retl 293 - nop
+109 -82
arch/sparc64/kernel/head.S
··· 28 28 #include <asm/mmu.h> 29 29 30 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 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. 31 + * 0x0000000000404000 to 0x0000000000408000. 35 32 */ 36 - 37 33 .text 38 34 .globl start, _start, stext, _stext 39 35 _start: 40 36 start: 41 37 _stext: 42 38 stext: 43 - bootup_user_stack: 44 39 ! 0x0000000000404000 45 40 b sparc64_boot 46 41 flushw /* Flush register file. */ ··· 186 191 stx %l3, [%sp + 2047 + 128 + 0x10] ! num_rets, 5 187 192 stx %l2, [%sp + 2047 + 128 + 0x18] ! arg1: "translate" 188 193 stx %l5, [%sp + 2047 + 128 + 0x20] ! arg2: prom_mmu_ihandle_cache 189 - srlx %l0, 22, %l3 190 - sllx %l3, 22, %l3 194 + /* PAGE align */ 195 + srlx %l0, 13, %l3 196 + sllx %l3, 13, %l3 191 197 stx %l3, [%sp + 2047 + 128 + 0x28] ! arg3: vaddr, our PC 192 198 stx %g0, [%sp + 2047 + 128 + 0x30] ! res1 193 199 stx %g0, [%sp + 2047 + 128 + 0x38] ! res2 ··· 207 211 ldx [%sp + 2047 + 128 + 0x48], %l2 ! physaddr high 208 212 stx %l2, [%l4 + 0x0] 209 213 ldx [%sp + 2047 + 128 + 0x50], %l3 ! physaddr low 214 + /* 4MB align */ 215 + srlx %l3, 22, %l3 216 + sllx %l3, 22, %l3 210 217 stx %l3, [%l4 + 0x8] 211 218 212 219 /* Leave service as-is, "call-method" */ ··· 324 325 1: sethi %hi(tlb_type), %g1 325 326 stw %g2, [%g1 + %lo(tlb_type)] 326 327 327 - BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g1,g7,1f) 328 - ba,pt %xcc, 2f 329 - nop 330 - 331 - 1: /* Patch context register writes to support nucleus page 332 - * size correctly. 333 - */ 334 - call cheetah_plus_patch_etrap 335 - nop 336 - call cheetah_plus_patch_rtrap 337 - nop 338 - call cheetah_plus_patch_fpdis 339 - nop 340 - call cheetah_plus_patch_winfixup 341 - nop 342 - 343 - 2: /* Patch copy/page operations to cheetah optimized versions. */ 328 + /* Patch copy/page operations to cheetah optimized versions. */ 344 329 call cheetah_patch_copyops 345 330 nop 346 331 call cheetah_patch_copy_page ··· 381 398 nop 382 399 /* Not reached... */ 383 400 384 - /* IMPORTANT NOTE: Whenever making changes here, check 385 - * trampoline.S as well. -jj */ 386 - .globl setup_tba 387 - setup_tba: /* i0 = is_starfire */ 388 - save %sp, -160, %sp 401 + /* This is meant to allow the sharing of this code between 402 + * boot processor invocation (via setup_tba() below) and 403 + * secondary processor startup (via trampoline.S). The 404 + * former does use this code, the latter does not yet due 405 + * to some complexities. That should be fixed up at some 406 + * point. 407 + * 408 + * There used to be enormous complexity wrt. transferring 409 + * over from the firwmare's trap table to the Linux kernel's. 410 + * For example, there was a chicken & egg problem wrt. building 411 + * the OBP page tables, yet needing to be on the Linux kernel 412 + * trap table (to translate PAGE_OFFSET addresses) in order to 413 + * do that. 414 + * 415 + * We now handle OBP tlb misses differently, via linear lookups 416 + * into the prom_trans[] array. So that specific problem no 417 + * longer exists. Yet, unfortunately there are still some issues 418 + * preventing trampoline.S from using this code... ho hum. 419 + */ 420 + .globl setup_trap_table 421 + setup_trap_table: 422 + save %sp, -192, %sp 389 423 390 - rdpr %tba, %g7 391 - sethi %hi(prom_tba), %o1 392 - or %o1, %lo(prom_tba), %o1 393 - stx %g7, [%o1] 424 + /* Force interrupts to be disabled. */ 425 + rdpr %pstate, %o1 426 + andn %o1, PSTATE_IE, %o1 427 + wrpr %o1, 0x0, %pstate 428 + wrpr %g0, 15, %pil 394 429 395 - /* Setup "Linux" globals 8-) */ 430 + /* Make the firmware call to jump over to the Linux trap table. */ 431 + call prom_set_trap_table 432 + sethi %hi(sparc64_ttable_tl0), %o0 433 + 434 + /* Start using proper page size encodings in ctx register. */ 435 + sethi %hi(sparc64_kern_pri_context), %g3 436 + ldx [%g3 + %lo(sparc64_kern_pri_context)], %g2 437 + mov PRIMARY_CONTEXT, %g1 438 + stxa %g2, [%g1] ASI_DMMU 439 + membar #Sync 440 + 441 + /* The Linux trap handlers expect various trap global registers 442 + * to be setup with some fixed values. So here we set these 443 + * up very carefully. These globals are: 444 + * 445 + * Alternate Globals (PSTATE_AG): 446 + * 447 + * %g6 --> current_thread_info() 448 + * 449 + * MMU Globals (PSTATE_MG): 450 + * 451 + * %g1 --> TLB_SFSR 452 + * %g2 --> ((_PAGE_VALID | _PAGE_SZ4MB | 453 + * _PAGE_CP | _PAGE_CV | _PAGE_P | _PAGE_W) 454 + * ^ 0xfffff80000000000) 455 + * (this %g2 value is used for computing the PAGE_OFFSET kernel 456 + * TLB entries quickly, the virtual address of the fault XOR'd 457 + * with this %g2 value is the PTE to load into the TLB) 458 + * %g3 --> VPTE_BASE_CHEETAH or VPTE_BASE_SPITFIRE 459 + * 460 + * Interrupt Globals (PSTATE_IG, setup by init_irqwork_curcpu()): 461 + * 462 + * %g6 --> __irq_work[smp_processor_id()] 463 + */ 464 + 396 465 rdpr %pstate, %o1 397 466 mov %g6, %o2 398 - wrpr %o1, (PSTATE_AG|PSTATE_IE), %pstate 399 - sethi %hi(sparc64_ttable_tl0), %g1 400 - wrpr %g1, %tba 467 + wrpr %o1, PSTATE_AG, %pstate 401 468 mov %o2, %g6 402 469 403 - /* Set up MMU globals */ 404 - wrpr %o1, (PSTATE_MG|PSTATE_IE), %pstate 405 - 406 - /* Set fixed globals used by dTLB miss handler. */ 407 470 #define KERN_HIGHBITS ((_PAGE_VALID|_PAGE_SZ4MB)^0xfffff80000000000) 408 471 #define KERN_LOWBITS (_PAGE_CP | _PAGE_CV | _PAGE_P | _PAGE_W) 409 - 472 + wrpr %o1, PSTATE_MG, %pstate 410 473 mov TSB_REG, %g1 411 474 stxa %g0, [%g1] ASI_DMMU 412 475 membar #Sync ··· 464 435 sllx %g2, 32, %g2 465 436 or %g2, KERN_LOWBITS, %g2 466 437 467 - BRANCH_IF_ANY_CHEETAH(g3,g7,cheetah_vpte_base) 468 - ba,pt %xcc, spitfire_vpte_base 438 + BRANCH_IF_ANY_CHEETAH(g3,g7,8f) 439 + ba,pt %xcc, 9f 469 440 nop 470 441 471 - cheetah_vpte_base: 442 + 8: 472 443 sethi %uhi(VPTE_BASE_CHEETAH), %g3 473 444 or %g3, %ulo(VPTE_BASE_CHEETAH), %g3 474 445 ba,pt %xcc, 2f 475 446 sllx %g3, 32, %g3 476 447 477 - spitfire_vpte_base: 448 + 9: 478 449 sethi %uhi(VPTE_BASE_SPITFIRE), %g3 479 450 or %g3, %ulo(VPTE_BASE_SPITFIRE), %g3 480 451 sllx %g3, 32, %g3 ··· 500 471 sllx %o2, 32, %o2 501 472 wr %o2, %asr25 502 473 503 - /* Ok, we're done setting up all the state our trap mechanims needs, 504 - * now get back into normal globals and let the PROM know what is up. 505 - */ 506 474 2: 507 475 wrpr %g0, %g0, %wstate 508 - wrpr %o1, PSTATE_IE, %pstate 476 + wrpr %o1, 0x0, %pstate 509 477 510 478 call init_irqwork_curcpu 511 479 nop 512 480 513 - call prom_set_trap_table 514 - sethi %hi(sparc64_ttable_tl0), %o0 515 - 516 - BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g2,g3,1f) 517 - ba,pt %xcc, 2f 518 - nop 519 - 520 - 1: /* Start using proper page size encodings in ctx register. */ 521 - sethi %uhi(CTX_CHEETAH_PLUS_NUC), %g3 522 - mov PRIMARY_CONTEXT, %g1 523 - sllx %g3, 32, %g3 524 - sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 525 - or %g3, %g2, %g3 526 - stxa %g3, [%g1] ASI_DMMU 527 - membar #Sync 528 - 529 - 2: 481 + /* Now we can turn interrupts back on. */ 530 482 rdpr %pstate, %o1 531 483 or %o1, PSTATE_IE, %o1 532 484 wrpr %o1, 0, %pstate 485 + wrpr %g0, 0x0, %pil 533 486 534 487 ret 535 488 restore 536 489 490 + .globl setup_tba 491 + setup_tba: /* i0 = is_starfire */ 492 + save %sp, -192, %sp 493 + 494 + /* The boot processor is the only cpu which invokes this 495 + * routine, the other cpus set things up via trampoline.S. 496 + * So save the OBP trap table address here. 497 + */ 498 + rdpr %tba, %g7 499 + sethi %hi(prom_tba), %o1 500 + or %o1, %lo(prom_tba), %o1 501 + stx %g7, [%o1] 502 + 503 + call setup_trap_table 504 + nop 505 + 506 + ret 507 + restore 508 + sparc64_boot_end: 509 + 510 + #include "systbls.S" 511 + #include "ktlb.S" 512 + #include "etrap.S" 513 + #include "rtrap.S" 514 + #include "winfixup.S" 515 + #include "entry.S" 516 + 537 517 /* 538 - * The following skips make sure the trap table in ttable.S is aligned 518 + * The following skip makes sure the trap table in ttable.S is aligned 539 519 * on a 32K boundary as required by the v9 specs for TBA register. 540 520 */ 541 - sparc64_boot_end: 542 - .skip 0x2000 + _start - sparc64_boot_end 543 - bootup_user_stack_end: 544 - .skip 0x2000 521 + 1: 522 + .skip 0x4000 + _start - 1b 545 523 546 524 #ifdef CONFIG_SBUS 547 525 /* This is just a hack to fool make depend config.h discovering ··· 560 524 ! 0x0000000000408000 561 525 562 526 #include "ttable.S" 563 - #include "systbls.S" 564 - #include "ktlb.S" 565 - #include "etrap.S" 566 - #include "rtrap.S" 567 - #include "winfixup.S" 568 - #include "entry.S" 569 - 570 - /* This is just anal retentiveness on my part... */ 571 - .align 16384 572 527 573 528 .data 574 529 .align 8
+1
arch/sparc64/kernel/irq.c
··· 27 27 #include <asm/atomic.h> 28 28 #include <asm/system.h> 29 29 #include <asm/irq.h> 30 + #include <asm/io.h> 30 31 #include <asm/sbus.h> 31 32 #include <asm/iommu.h> 32 33 #include <asm/upa.h>
+11 -15
arch/sparc64/kernel/itlb_base.S
··· 15 15 */ 16 16 #define CREATE_VPTE_OFFSET1(r1, r2) \ 17 17 srax r1, 10, r2 18 - #define CREATE_VPTE_OFFSET2(r1, r2) 19 - #define CREATE_VPTE_NOP nop 18 + #define CREATE_VPTE_OFFSET2(r1, r2) nop 20 19 #else /* PAGE_SHIFT */ 21 20 #define CREATE_VPTE_OFFSET1(r1, r2) \ 22 21 srax r1, PAGE_SHIFT, r2 23 22 #define CREATE_VPTE_OFFSET2(r1, r2) \ 24 23 sllx r2, 3, r2 25 - #define CREATE_VPTE_NOP 26 24 #endif /* PAGE_SHIFT */ 27 25 28 26 ··· 34 36 */ 35 37 36 38 /* ITLB ** ICACHE line 1: Quick user TLB misses */ 39 + mov TLB_SFSR, %g1 37 40 ldxa [%g1 + %g1] ASI_IMMU, %g4 ! Get TAG_ACCESS 38 41 CREATE_VPTE_OFFSET1(%g4, %g6) ! Create VPTE offset 39 42 CREATE_VPTE_OFFSET2(%g4, %g6) ! Create VPTE offset ··· 42 43 1: brgez,pn %g5, 3f ! Not valid, branch out 43 44 sethi %hi(_PAGE_EXEC), %g4 ! Delay-slot 44 45 andcc %g5, %g4, %g0 ! Executable? 46 + 47 + /* ITLB ** ICACHE line 2: Real faults */ 45 48 be,pn %xcc, 3f ! Nope, branch. 46 49 nop ! Delay-slot 47 50 2: stxa %g5, [%g0] ASI_ITLB_DATA_IN ! Load PTE into TLB 48 51 retry ! Trap return 49 - 3: rdpr %pstate, %g4 ! Move into alternate globals 50 - 51 - /* ITLB ** ICACHE line 2: Real faults */ 52 + 3: rdpr %pstate, %g4 ! Move into alt-globals 52 53 wrpr %g4, PSTATE_AG|PSTATE_MG, %pstate 53 54 rdpr %tpc, %g5 ! And load faulting VA 54 55 mov FAULT_CODE_ITLB, %g4 ! It was read from ITLB 55 - sparc64_realfault_common: ! Called by TL0 dtlb_miss too 56 + 57 + /* ITLB ** ICACHE line 3: Finish faults */ 58 + sparc64_realfault_common: ! Called by dtlb_miss 56 59 stb %g4, [%g6 + TI_FAULT_CODE] 57 60 stx %g5, [%g6 + TI_FAULT_ADDR] 58 61 ba,pt %xcc, etrap ! Save state 59 62 1: rd %pc, %g7 ! ... 60 - nop 61 - 62 - /* ITLB ** ICACHE line 3: Finish faults + window fixups */ 63 63 call do_sparc64_fault ! Call fault handler 64 64 add %sp, PTREGS_OFF, %o0! Compute pt_regs arg 65 65 ba,pt %xcc, rtrap_clr_l6 ! Restore cpu state 66 66 nop 67 + 68 + /* ITLB ** ICACHE line 4: Window fixups */ 67 69 winfix_trampoline: 68 70 rdpr %tpc, %g3 ! Prepare winfixup TNPC 69 - or %g3, 0x7c, %g3 ! Compute offset to branch 71 + or %g3, 0x7c, %g3 ! Compute branch offset 70 72 wrpr %g3, %tnpc ! Write it into TNPC 71 73 done ! Do it to it 72 - 73 - /* ITLB ** ICACHE line 4: Unused... */ 74 74 nop 75 75 nop 76 76 nop 77 77 nop 78 - CREATE_VPTE_NOP 79 78 80 79 #undef CREATE_VPTE_OFFSET1 81 80 #undef CREATE_VPTE_OFFSET2 82 - #undef CREATE_VPTE_NOP
+40 -44
arch/sparc64/kernel/ktlb.S
··· 58 58 done 59 59 60 60 vpte_insn_obp: 61 - sethi %hi(prom_pmd_phys), %g5 62 - ldx [%g5 + %lo(prom_pmd_phys)], %g5 63 - 64 61 /* Behave as if we are at TL0. */ 65 62 wrpr %g0, 1, %tl 66 63 rdpr %tpc, %g4 /* Find original faulting iaddr */ ··· 68 71 mov TLB_SFSR, %g1 69 72 stxa %g4, [%g1 + %g1] ASI_IMMU 70 73 71 - /* Get PMD offset. */ 72 - srlx %g4, 23, %g6 73 - and %g6, 0x7ff, %g6 74 - sllx %g6, 2, %g6 74 + sethi %hi(prom_trans), %g5 75 + or %g5, %lo(prom_trans), %g5 75 76 76 - /* Load PMD, is it valid? */ 77 - lduwa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 78 - brz,pn %g5, longpath 79 - sllx %g5, 11, %g5 77 + 1: ldx [%g5 + 0x00], %g6 ! base 78 + brz,a,pn %g6, longpath ! no more entries, fail 79 + mov TLB_SFSR, %g1 ! and restore %g1 80 + ldx [%g5 + 0x08], %g1 ! len 81 + add %g6, %g1, %g1 ! end 82 + cmp %g6, %g4 83 + bgu,pt %xcc, 2f 84 + cmp %g4, %g1 85 + bgeu,pt %xcc, 2f 86 + ldx [%g5 + 0x10], %g1 ! PTE 80 87 81 - /* Get PTE offset. */ 82 - srlx %g4, 13, %g6 83 - and %g6, 0x3ff, %g6 84 - sllx %g6, 3, %g6 85 - 86 - /* Load PTE. */ 87 - ldxa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 88 - brgez,pn %g5, longpath 89 - nop 90 - 91 - /* TLB load and return from trap. */ 88 + /* TLB load, restore %g1, and return from trap. */ 89 + sub %g4, %g6, %g6 90 + add %g1, %g6, %g5 91 + mov TLB_SFSR, %g1 92 92 stxa %g5, [%g0] ASI_ITLB_DATA_IN 93 93 retry 94 94 95 + 2: ba,pt %xcc, 1b 96 + add %g5, (3 * 8), %g5 ! next entry 97 + 95 98 kvmap_do_obp: 96 - sethi %hi(prom_pmd_phys), %g5 97 - ldx [%g5 + %lo(prom_pmd_phys)], %g5 99 + sethi %hi(prom_trans), %g5 100 + or %g5, %lo(prom_trans), %g5 101 + srlx %g4, 13, %g4 102 + sllx %g4, 13, %g4 98 103 99 - /* Get PMD offset. */ 100 - srlx %g4, 23, %g6 101 - and %g6, 0x7ff, %g6 102 - sllx %g6, 2, %g6 104 + 1: ldx [%g5 + 0x00], %g6 ! base 105 + brz,a,pn %g6, longpath ! no more entries, fail 106 + mov TLB_SFSR, %g1 ! and restore %g1 107 + ldx [%g5 + 0x08], %g1 ! len 108 + add %g6, %g1, %g1 ! end 109 + cmp %g6, %g4 110 + bgu,pt %xcc, 2f 111 + cmp %g4, %g1 112 + bgeu,pt %xcc, 2f 113 + ldx [%g5 + 0x10], %g1 ! PTE 103 114 104 - /* Load PMD, is it valid? */ 105 - lduwa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 106 - brz,pn %g5, longpath 107 - sllx %g5, 11, %g5 108 - 109 - /* Get PTE offset. */ 110 - srlx %g4, 13, %g6 111 - and %g6, 0x3ff, %g6 112 - sllx %g6, 3, %g6 113 - 114 - /* Load PTE. */ 115 - ldxa [%g5 + %g6] ASI_PHYS_USE_EC, %g5 116 - brgez,pn %g5, longpath 117 - nop 118 - 119 - /* TLB load and return from trap. */ 115 + /* TLB load, restore %g1, and return from trap. */ 116 + sub %g4, %g6, %g6 117 + add %g1, %g6, %g5 118 + mov TLB_SFSR, %g1 120 119 stxa %g5, [%g0] ASI_DTLB_DATA_IN 121 120 retry 121 + 122 + 2: ba,pt %xcc, 1b 123 + add %g5, (3 * 8), %g5 ! next entry 122 124 123 125 /* 124 126 * On a first level data miss, check whether this is to the OBP range (note
+51 -13
arch/sparc64/kernel/power.c
··· 17 17 18 18 #include <asm/system.h> 19 19 #include <asm/ebus.h> 20 + #include <asm/isa.h> 20 21 #include <asm/auxio.h> 21 22 22 23 #include <linux/unistd.h> ··· 101 100 return 0; 102 101 } 103 102 104 - static int __init has_button_interrupt(struct linux_ebus_device *edev) 103 + static int __init has_button_interrupt(unsigned int irq, int prom_node) 105 104 { 106 - if (edev->irqs[0] == PCI_IRQ_NONE) 105 + if (irq == PCI_IRQ_NONE) 107 106 return 0; 108 - if (!prom_node_has_property(edev->prom_node, "button")) 107 + if (!prom_node_has_property(prom_node, "button")) 109 108 return 0; 110 109 111 110 return 1; 112 111 } 113 112 114 - void __init power_init(void) 113 + static int __init power_probe_ebus(struct resource **resp, unsigned int *irq_p, int *prom_node_p) 115 114 { 116 115 struct linux_ebus *ebus; 117 116 struct linux_ebus_device *edev; 117 + 118 + for_each_ebus(ebus) { 119 + for_each_ebusdev(edev, ebus) { 120 + if (!strcmp(edev->prom_name, "power")) { 121 + *resp = &edev->resource[0]; 122 + *irq_p = edev->irqs[0]; 123 + *prom_node_p = edev->prom_node; 124 + return 0; 125 + } 126 + } 127 + } 128 + return -ENODEV; 129 + } 130 + 131 + static int __init power_probe_isa(struct resource **resp, unsigned int *irq_p, int *prom_node_p) 132 + { 133 + struct sparc_isa_bridge *isa_bus; 134 + struct sparc_isa_device *isa_dev; 135 + 136 + for_each_isa(isa_bus) { 137 + for_each_isadev(isa_dev, isa_bus) { 138 + if (!strcmp(isa_dev->prom_name, "power")) { 139 + *resp = &isa_dev->resource; 140 + *irq_p = isa_dev->irq; 141 + *prom_node_p = isa_dev->prom_node; 142 + return 0; 143 + } 144 + } 145 + } 146 + return -ENODEV; 147 + } 148 + 149 + void __init power_init(void) 150 + { 151 + struct resource *res = NULL; 152 + unsigned int irq; 153 + int prom_node; 118 154 static int invoked; 119 155 120 156 if (invoked) 121 157 return; 122 158 invoked = 1; 123 159 124 - for_each_ebus(ebus) { 125 - for_each_ebusdev(edev, ebus) { 126 - if (!strcmp(edev->prom_name, "power")) 127 - goto found; 128 - } 129 - } 160 + if (!power_probe_ebus(&res, &irq, &prom_node)) 161 + goto found; 162 + 163 + if (!power_probe_isa(&res, &irq, &prom_node)) 164 + goto found; 165 + 130 166 return; 131 167 132 168 found: 133 - power_reg = ioremap(edev->resource[0].start, 0x4); 169 + power_reg = ioremap(res->start, 0x4); 134 170 printk("power: Control reg at %p ... ", power_reg); 135 171 poweroff_method = machine_halt; /* able to use the standard halt */ 136 - if (has_button_interrupt(edev)) { 172 + if (has_button_interrupt(irq, prom_node)) { 137 173 if (kernel_thread(powerd, NULL, CLONE_FS) < 0) { 138 174 printk("Failed to start power daemon.\n"); 139 175 return; 140 176 } 141 177 printk("powerd running.\n"); 142 178 143 - if (request_irq(edev->irqs[0], 179 + if (request_irq(irq, 144 180 power_handler, SA_SHIRQ, "power", NULL) < 0) 145 181 printk("power: Error, cannot register IRQ handler.\n"); 146 182 } else {
+6 -24
arch/sparc64/kernel/rtrap.S
··· 256 256 brnz,pn %l3, kern_rtt 257 257 mov PRIMARY_CONTEXT, %l7 258 258 ldxa [%l7 + %l7] ASI_DMMU, %l0 259 - cplus_rtrap_insn_1: 260 - sethi %hi(0), %l1 261 - sllx %l1, 32, %l1 259 + sethi %hi(sparc64_kern_pri_nuc_bits), %l1 260 + ldx [%l1 + %lo(sparc64_kern_pri_nuc_bits)], %l1 262 261 or %l0, %l1, %l0 263 262 stxa %l0, [%l7] ASI_DMMU 264 263 flush %g6 ··· 312 313 wr %g1, FPRS_FEF, %fprs 313 314 ldx [%o1 + %o5], %g1 314 315 add %g6, TI_XFSR, %o1 315 - membar #StoreLoad | #LoadLoad 316 316 sll %o0, 8, %o2 317 317 add %g6, TI_FPREGS, %o3 318 318 brz,pn %l6, 1f 319 319 add %g6, TI_FPREGS+0x40, %o4 320 320 321 + membar #Sync 321 322 ldda [%o3 + %o2] ASI_BLK_P, %f0 322 323 ldda [%o4 + %o2] ASI_BLK_P, %f16 324 + membar #Sync 323 325 1: andcc %l2, FPRS_DU, %g0 324 326 be,pn %icc, 1f 325 327 wr %g1, 0, %gsr 326 328 add %o2, 0x80, %o2 329 + membar #Sync 327 330 ldda [%o3 + %o2] ASI_BLK_P, %f32 328 331 ldda [%o4 + %o2] ASI_BLK_P, %f48 329 - 330 332 1: membar #Sync 331 333 ldx [%o1 + %o5], %fsr 332 334 2: stb %l5, [%g6 + TI_FPDEPTH] 333 335 ba,pt %xcc, rt_continue 334 336 nop 335 337 5: wr %g0, FPRS_FEF, %fprs 336 - membar #StoreLoad | #LoadLoad 337 338 sll %o0, 8, %o2 338 339 339 340 add %g6, TI_FPREGS+0x80, %o3 340 341 add %g6, TI_FPREGS+0xc0, %o4 342 + membar #Sync 341 343 ldda [%o3 + %o2] ASI_BLK_P, %f32 342 344 ldda [%o4 + %o2] ASI_BLK_P, %f48 343 345 membar #Sync 344 346 wr %g0, FPRS_DU, %fprs 345 347 ba,pt %xcc, rt_continue 346 348 stb %l5, [%g6 + TI_FPDEPTH] 347 - 348 - cplus_rinsn_1: 349 - sethi %uhi(CTX_CHEETAH_PLUS_NUC), %l1 350 - 351 - .globl cheetah_plus_patch_rtrap 352 - cheetah_plus_patch_rtrap: 353 - /* We configure the dTLB512_0 for 4MB pages and the 354 - * dTLB512_1 for 8K pages when in context zero. 355 - */ 356 - sethi %hi(cplus_rinsn_1), %o0 357 - sethi %hi(cplus_rtrap_insn_1), %o2 358 - lduw [%o0 + %lo(cplus_rinsn_1)], %o1 359 - or %o2, %lo(cplus_rtrap_insn_1), %o2 360 - stw %o1, [%o2] 361 - flush %o2 362 - 363 - retl 364 - nop
+2 -6
arch/sparc64/kernel/setup.c
··· 187 187 } 188 188 189 189 if ((va >= KERNBASE) && (va < (KERNBASE + (4 * 1024 * 1024)))) { 190 - unsigned long kernel_pctx = 0; 191 - 192 - if (tlb_type == cheetah_plus) 193 - kernel_pctx |= (CTX_CHEETAH_PLUS_NUC | 194 - CTX_CHEETAH_PLUS_CTX0); 190 + extern unsigned long sparc64_kern_pri_context; 195 191 196 192 /* Spitfire Errata #32 workaround */ 197 193 __asm__ __volatile__("stxa %0, [%1] %2\n\t" 198 194 "flush %%g6" 199 195 : /* No outputs */ 200 - : "r" (kernel_pctx), 196 + : "r" (sparc64_kern_pri_context), 201 197 "r" (PRIMARY_CONTEXT), 202 198 "i" (ASI_DMMU)); 203 199
+4 -11
arch/sparc64/kernel/trampoline.S
··· 336 336 call init_irqwork_curcpu 337 337 nop 338 338 339 - BRANCH_IF_CHEETAH_PLUS_OR_FOLLOWON(g2,g3,1f) 340 - ba,pt %xcc, 2f 341 - nop 342 - 343 - 1: /* Start using proper page size encodings in ctx register. */ 344 - sethi %uhi(CTX_CHEETAH_PLUS_NUC), %g3 339 + /* Start using proper page size encodings in ctx register. */ 340 + sethi %hi(sparc64_kern_pri_context), %g3 341 + ldx [%g3 + %lo(sparc64_kern_pri_context)], %g2 345 342 mov PRIMARY_CONTEXT, %g1 346 - sllx %g3, 32, %g3 347 - sethi %hi(CTX_CHEETAH_PLUS_CTX0), %g2 348 - or %g3, %g2, %g3 349 - stxa %g3, [%g1] ASI_DMMU 343 + stxa %g2, [%g1] ASI_DMMU 350 344 membar #Sync 351 345 352 - 2: 353 346 rdpr %pstate, %o1 354 347 or %o1, PSTATE_IE, %o1 355 348 wrpr %o1, 0, %pstate
+2 -31
arch/sparc64/kernel/winfixup.S
··· 16 16 .text 17 17 18 18 set_pcontext: 19 - cplus_winfixup_insn_1: 20 - sethi %hi(0), %l1 19 + sethi %hi(sparc64_kern_pri_context), %l1 20 + ldx [%l1 + %lo(sparc64_kern_pri_context)], %l1 21 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 22 stxa %l1, [%g1] ASI_DMMU 27 23 flush %g6 28 24 retl 29 25 nop 30 - 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 26 36 27 .align 32 37 28 ··· 386 395 add %sp, PTREGS_OFF, %o0 387 396 ba,pt %xcc, rtrap 388 397 clr %l6 389 - 390 - 391 - .globl cheetah_plus_patch_winfixup 392 - cheetah_plus_patch_winfixup: 393 - sethi %hi(cplus_wfinsn_1), %o0 394 - sethi %hi(cplus_winfixup_insn_1), %o2 395 - lduw [%o0 + %lo(cplus_wfinsn_1)], %o1 396 - or %o2, %lo(cplus_winfixup_insn_1), %o2 397 - stw %o1, [%o2] 398 - flush %o2 399 - 400 - sethi %hi(cplus_wfinsn_2), %o0 401 - sethi %hi(cplus_winfixup_insn_2), %o2 402 - lduw [%o0 + %lo(cplus_wfinsn_2)], %o1 403 - or %o2, %lo(cplus_winfixup_insn_2), %o2 404 - stw %o1, [%o2] 405 - flush %o2 406 - 407 - retl 408 - nop
+5 -3
arch/sparc64/lib/VISsave.S
··· 59 59 be,pn %icc, 9b 60 60 add %g6, TI_FPREGS, %g2 61 61 andcc %o5, FPRS_DL, %g0 62 - membar #StoreStore | #LoadStore 63 62 64 63 be,pn %icc, 4f 65 64 add %g6, TI_FPREGS+0x40, %g3 65 + membar #Sync 66 66 stda %f0, [%g2 + %g1] ASI_BLK_P 67 67 stda %f16, [%g3 + %g1] ASI_BLK_P 68 + membar #Sync 68 69 andcc %o5, FPRS_DU, %g0 69 70 be,pn %icc, 5f 70 71 4: add %g1, 128, %g1 72 + membar #Sync 71 73 stda %f32, [%g2 + %g1] ASI_BLK_P 72 74 73 75 stda %f48, [%g3 + %g1] ASI_BLK_P ··· 89 87 sll %g1, 5, %g1 90 88 add %g6, TI_FPREGS+0xc0, %g3 91 89 wr %g0, FPRS_FEF, %fprs 92 - membar #StoreStore | #LoadStore 90 + membar #Sync 93 91 stda %f32, [%g2 + %g1] ASI_BLK_P 94 92 stda %f48, [%g3 + %g1] ASI_BLK_P 95 93 membar #Sync ··· 130 128 be,pn %icc, 4f 131 129 add %g6, TI_FPREGS, %g2 132 130 133 - membar #StoreStore | #LoadStore 134 131 add %g6, TI_FPREGS+0x40, %g3 132 + membar #Sync 135 133 stda %f0, [%g2 + %g1] ASI_BLK_P 136 134 stda %f16, [%g3 + %g1] ASI_BLK_P 137 135 membar #Sync
+92 -161
arch/sparc64/mm/init.c
··· 105 105 regs[i].phys_addr = base; 106 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 109 cmp_p64, NULL); 110 110 } 111 111 ··· 132 132 extern unsigned int sparc_ramdisk_size; 133 133 134 134 struct page *mem_map_zero __read_mostly; 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; 135 141 136 142 int bigkernel = 0; 137 143 ··· 367 361 unsigned long size; 368 362 unsigned long data; 369 363 }; 370 - static struct linux_prom_translation prom_trans[512] __initdata; 364 + 365 + /* Exported for kernel TLB miss handling in ktlb.S */ 366 + struct linux_prom_translation prom_trans[512] __read_mostly; 367 + unsigned int prom_trans_ents __read_mostly; 368 + unsigned int swapper_pgd_zero __read_mostly; 371 369 372 370 extern unsigned long prom_boot_page; 373 371 extern void prom_remap(unsigned long physpage, unsigned long virtpage, int mmu_ihandle); ··· 381 371 /* Exported for SMP bootup purposes. */ 382 372 unsigned long kern_locked_tte_data; 383 373 384 - /* Exported for kernel TLB miss handling in ktlb.S */ 385 - unsigned long prom_pmd_phys __read_mostly; 386 - unsigned int swapper_pgd_zero __read_mostly; 387 - 388 - /* Allocate power-of-2 aligned chunks from the end of the 389 - * kernel image. Return physical address. 390 - */ 391 - static inline unsigned long early_alloc_phys(unsigned long size) 392 - { 393 - unsigned long base; 394 - 395 - BUILD_BUG_ON(size & (size - 1)); 396 - 397 - kern_size = (kern_size + (size - 1)) & ~(size - 1); 398 - base = kern_base + kern_size; 399 - kern_size += size; 400 - 401 - return base; 402 - } 403 - 404 - static inline unsigned long load_phys32(unsigned long pa) 405 - { 406 - unsigned long val; 407 - 408 - __asm__ __volatile__("lduwa [%1] %2, %0" 409 - : "=&r" (val) 410 - : "r" (pa), "i" (ASI_PHYS_USE_EC)); 411 - 412 - return val; 413 - } 414 - 415 - static inline unsigned long load_phys64(unsigned long pa) 416 - { 417 - unsigned long val; 418 - 419 - __asm__ __volatile__("ldxa [%1] %2, %0" 420 - : "=&r" (val) 421 - : "r" (pa), "i" (ASI_PHYS_USE_EC)); 422 - 423 - return val; 424 - } 425 - 426 - static inline void store_phys32(unsigned long pa, unsigned long val) 427 - { 428 - __asm__ __volatile__("stwa %0, [%1] %2" 429 - : /* no outputs */ 430 - : "r" (val), "r" (pa), "i" (ASI_PHYS_USE_EC)); 431 - } 432 - 433 - static inline void store_phys64(unsigned long pa, unsigned long val) 434 - { 435 - __asm__ __volatile__("stxa %0, [%1] %2" 436 - : /* no outputs */ 437 - : "r" (val), "r" (pa), "i" (ASI_PHYS_USE_EC)); 438 - } 439 - 440 - #define BASE_PAGE_SIZE 8192 441 - 442 374 /* 443 375 * Translate PROM's mapping we capture at boot time into physical address. 444 376 * The second parameter is only set from prom_callback() invocations. 445 377 */ 446 378 unsigned long prom_virt_to_phys(unsigned long promva, int *error) 447 379 { 448 - unsigned long pmd_phys = (prom_pmd_phys + 449 - ((promva >> 23) & 0x7ff) * sizeof(pmd_t)); 450 - unsigned long pte_phys; 451 - pmd_t pmd_ent; 452 - pte_t pte_ent; 453 - unsigned long base; 380 + int i; 454 381 455 - pmd_val(pmd_ent) = load_phys32(pmd_phys); 456 - if (pmd_none(pmd_ent)) { 457 - if (error) 458 - *error = 1; 459 - return 0; 460 - } 382 + for (i = 0; i < prom_trans_ents; i++) { 383 + struct linux_prom_translation *p = &prom_trans[i]; 461 384 462 - pte_phys = (unsigned long)pmd_val(pmd_ent) << 11UL; 463 - pte_phys += ((promva >> 13) & 0x3ff) * sizeof(pte_t); 464 - pte_val(pte_ent) = load_phys64(pte_phys); 465 - if (!pte_present(pte_ent)) { 466 - if (error) 467 - *error = 1; 468 - return 0; 385 + if (promva >= p->virt && 386 + promva < (p->virt + p->size)) { 387 + unsigned long base = p->data & _PAGE_PADDR; 388 + 389 + if (error) 390 + *error = 0; 391 + return base + (promva & (8192 - 1)); 392 + } 469 393 } 470 - if (error) { 471 - *error = 0; 472 - return pte_val(pte_ent); 473 - } 474 - base = pte_val(pte_ent) & _PAGE_PADDR; 475 - return (base + (promva & (BASE_PAGE_SIZE - 1))); 394 + if (error) 395 + *error = 1; 396 + return 0UL; 476 397 } 477 398 478 399 /* The obp translations are saved based on 8k pagesize, since obp can 479 400 * use a mixture of pagesizes. Misses to the LOW_OBP_ADDRESS -> 480 - * HI_OBP_ADDRESS range are handled in entry.S and do not use the vpte 401 + * HI_OBP_ADDRESS range are handled in ktlb.S and do not use the vpte 481 402 * scheme (also, see rant in inherit_locked_prom_mappings()). 482 403 */ 483 - static void __init build_obp_range(unsigned long start, unsigned long end, unsigned long data) 484 - { 485 - unsigned long vaddr; 486 - 487 - for (vaddr = start; vaddr < end; vaddr += BASE_PAGE_SIZE) { 488 - unsigned long val, pte_phys, pmd_phys; 489 - pmd_t pmd_ent; 490 - int i; 491 - 492 - pmd_phys = (prom_pmd_phys + 493 - (((vaddr >> 23) & 0x7ff) * sizeof(pmd_t))); 494 - pmd_val(pmd_ent) = load_phys32(pmd_phys); 495 - if (pmd_none(pmd_ent)) { 496 - pte_phys = early_alloc_phys(BASE_PAGE_SIZE); 497 - 498 - for (i = 0; i < BASE_PAGE_SIZE / sizeof(pte_t); i++) 499 - store_phys64(pte_phys+i*sizeof(pte_t),0); 500 - 501 - pmd_val(pmd_ent) = pte_phys >> 11UL; 502 - store_phys32(pmd_phys, pmd_val(pmd_ent)); 503 - } 504 - 505 - pte_phys = (unsigned long)pmd_val(pmd_ent) << 11UL; 506 - pte_phys += (((vaddr >> 13) & 0x3ff) * sizeof(pte_t)); 507 - 508 - val = data; 509 - 510 - /* Clear diag TTE bits. */ 511 - if (tlb_type == spitfire) 512 - val &= ~0x0003fe0000000000UL; 513 - 514 - store_phys64(pte_phys, val | _PAGE_MODIFIED); 515 - 516 - data += BASE_PAGE_SIZE; 517 - } 518 - } 519 - 520 404 static inline int in_obp_range(unsigned long vaddr) 521 405 { 522 406 return (vaddr >= LOW_OBP_ADDRESS && 523 407 vaddr < HI_OBP_ADDRESS); 524 408 } 525 409 526 - #define OBP_PMD_SIZE 2048 527 - static void __init build_obp_pgtable(int prom_trans_ents) 410 + static int cmp_ptrans(const void *a, const void *b) 528 411 { 529 - unsigned long i; 412 + const struct linux_prom_translation *x = a, *y = b; 530 413 531 - prom_pmd_phys = early_alloc_phys(OBP_PMD_SIZE); 532 - for (i = 0; i < OBP_PMD_SIZE; i += 4) 533 - store_phys32(prom_pmd_phys + i, 0); 534 - 535 - for (i = 0; i < prom_trans_ents; i++) { 536 - unsigned long start, end; 537 - 538 - if (!in_obp_range(prom_trans[i].virt)) 539 - continue; 540 - 541 - start = prom_trans[i].virt; 542 - end = start + prom_trans[i].size; 543 - if (end > HI_OBP_ADDRESS) 544 - end = HI_OBP_ADDRESS; 545 - 546 - build_obp_range(start, end, prom_trans[i].data); 547 - } 414 + if (x->virt > y->virt) 415 + return 1; 416 + if (x->virt < y->virt) 417 + return -1; 418 + return 0; 548 419 } 549 420 550 - /* Read OBP translations property into 'prom_trans[]'. 551 - * Return the number of entries. 552 - */ 553 - static int __init read_obp_translations(void) 421 + /* Read OBP translations property into 'prom_trans[]'. */ 422 + static void __init read_obp_translations(void) 554 423 { 555 - int n, node; 424 + int n, node, ents, first, last, i; 556 425 557 426 node = prom_finddevice("/virtual-memory"); 558 427 n = prom_getproplen(node, "translations"); ··· 450 561 prom_printf("prom_mappings: Couldn't get property.\n"); 451 562 prom_halt(); 452 563 } 564 + 453 565 n = n / sizeof(struct linux_prom_translation); 454 - return n; 566 + 567 + ents = n; 568 + 569 + sort(prom_trans, ents, sizeof(struct linux_prom_translation), 570 + cmp_ptrans, NULL); 571 + 572 + /* Now kick out all the non-OBP entries. */ 573 + for (i = 0; i < ents; i++) { 574 + if (in_obp_range(prom_trans[i].virt)) 575 + break; 576 + } 577 + first = i; 578 + for (; i < ents; i++) { 579 + if (!in_obp_range(prom_trans[i].virt)) 580 + break; 581 + } 582 + last = i; 583 + 584 + for (i = 0; i < (last - first); i++) { 585 + struct linux_prom_translation *src = &prom_trans[i + first]; 586 + struct linux_prom_translation *dest = &prom_trans[i]; 587 + 588 + *dest = *src; 589 + } 590 + for (; i < ents; i++) { 591 + struct linux_prom_translation *dest = &prom_trans[i]; 592 + dest->virt = dest->size = dest->data = 0x0UL; 593 + } 594 + 595 + prom_trans_ents = last - first; 596 + 597 + if (tlb_type == spitfire) { 598 + /* Clear diag TTE bits. */ 599 + for (i = 0; i < prom_trans_ents; i++) 600 + prom_trans[i].data &= ~0x0003fe0000000000UL; 601 + } 455 602 } 456 603 457 604 static void __init remap_kernel(void) ··· 507 582 prom_dtlb_load(tlb_ent, tte_data, tte_vaddr); 508 583 prom_itlb_load(tlb_ent, tte_data, tte_vaddr); 509 584 if (bigkernel) { 510 - prom_dtlb_load(tlb_ent - 1, 585 + tlb_ent -= 1; 586 + prom_dtlb_load(tlb_ent, 511 587 tte_data + 0x400000, 512 588 tte_vaddr + 0x400000); 513 - prom_itlb_load(tlb_ent - 1, 589 + prom_itlb_load(tlb_ent, 514 590 tte_data + 0x400000, 515 591 tte_vaddr + 0x400000); 516 592 } 593 + sparc64_highest_unlocked_tlb_ent = tlb_ent - 1; 594 + if (tlb_type == cheetah_plus) { 595 + sparc64_kern_pri_context = (CTX_CHEETAH_PLUS_CTX0 | 596 + CTX_CHEETAH_PLUS_NUC); 597 + sparc64_kern_pri_nuc_bits = CTX_CHEETAH_PLUS_NUC; 598 + sparc64_kern_sec_context = CTX_CHEETAH_PLUS_CTX0; 599 + } 517 600 } 601 + 518 602 519 603 static void __init inherit_prom_mappings(void) 520 604 { 521 - int n; 522 - 523 - n = read_obp_translations(); 524 - build_obp_pgtable(n); 605 + read_obp_translations(); 525 606 526 607 /* Now fixup OBP's idea about where we really are mapped. */ 527 608 prom_printf("Remapping the kernel... "); 528 609 remap_kernel(); 529 - 530 610 prom_printf("done.\n"); 531 611 612 + prom_printf("Registering callbacks... "); 532 613 register_prom_callbacks(); 614 + prom_printf("done.\n"); 533 615 } 534 616 535 617 /* The OBP specifications for sun4u mark 0xfffffffc00000000 and ··· 720 788 } 721 789 } 722 790 if (tlb_type == spitfire) { 723 - int high = SPITFIRE_HIGHEST_LOCKED_TLBENT - bigkernel; 724 - for (i = 0; i < high; i++) { 791 + int high = sparc64_highest_unlocked_tlb_ent; 792 + for (i = 0; i <= high; i++) { 725 793 unsigned long data; 726 794 727 795 /* Spitfire Errata #32 workaround */ ··· 809 877 } 810 878 } 811 879 } else if (tlb_type == cheetah || tlb_type == cheetah_plus) { 812 - int high = CHEETAH_HIGHEST_LOCKED_TLBENT - bigkernel; 880 + int high = sparc64_highest_unlocked_tlb_ent; 813 881 814 - for (i = 0; i < high; i++) { 882 + for (i = 0; i <= high; i++) { 815 883 unsigned long data; 816 884 817 885 data = cheetah_get_ldtlb_data(i); ··· 1488 1556 1489 1557 swapper_pgd_zero = pgd_val(swapper_pg_dir[0]); 1490 1558 1491 - /* Inherit non-locked OBP mappings. */ 1492 1559 inherit_prom_mappings(); 1493 1560 1494 1561 /* Ok, we can use our TLB miss and window trap handlers safely.
+1 -1
arch/um/Makefile
··· 152 152 $(SYMLINK_HEADERS): 153 153 @echo ' SYMLINK $@' 154 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 156 else 157 157 $(Q)cd $(TOPDIR)/$(dir $@) ; \ 158 158 ln -sf $(basename $(notdir $@))-$(SUBARCH)$(suffix $@) $(notdir $@)
+1 -1
arch/um/drivers/Makefile
··· 13 13 net-objs := net_kern.o net_user.o 14 14 mconsole-objs := mconsole_kern.o mconsole_user.o 15 15 hostaudio-objs := hostaudio_kern.o 16 - ubd-objs := ubd_kern.o 16 + ubd-objs := ubd_kern.o ubd_user.o 17 17 port-objs := port_kern.o port_user.o 18 18 harddog-objs := harddog_kern.o harddog_user.o 19 19
+32 -7
arch/um/drivers/cow.h
··· 3 3 4 4 #include <asm/types.h> 5 5 6 - #if defined(__BIG_ENDIAN) 7 - # define ntohll(x) (x) 8 - # define htonll(x) (x) 9 - #elif defined(__LITTLE_ENDIAN) 10 - # define ntohll(x) bswap_64(x) 11 - # define htonll(x) bswap_64(x) 6 + #if defined(__KERNEL__) 7 + 8 + # include <asm/byteorder.h> 9 + 10 + # if defined(__BIG_ENDIAN) 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 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 38 #endif 39 + #endif /* ! defined(__KERNEL__) */ 15 40 16 41 extern int init_cow_file(int fd, char *cow_file, char *backing_file, 17 42 int sectorsize, int alignment, int *bitmap_offset_out,
-1
arch/um/drivers/cow_user.c
··· 9 9 #include <sys/time.h> 10 10 #include <sys/param.h> 11 11 #include <sys/user.h> 12 - #include <netinet/in.h> 13 12 14 13 #include "os.h" 15 14
+312 -248
arch/um/drivers/ubd_kern.c
··· 35 35 #include "linux/blkpg.h" 36 36 #include "linux/genhd.h" 37 37 #include "linux/spinlock.h" 38 - #include "asm/atomic.h" 39 38 #include "asm/segment.h" 40 39 #include "asm/uaccess.h" 41 40 #include "asm/irq.h" ··· 53 54 #include "mem.h" 54 55 #include "mem_kern.h" 55 56 #include "cow.h" 56 - #include "aio.h" 57 57 58 58 enum ubd_req { UBD_READ, UBD_WRITE }; 59 59 60 60 struct io_thread_req { 61 - enum aio_type op; 61 + enum ubd_req op; 62 62 int fds[2]; 63 63 unsigned long offsets[2]; 64 64 unsigned long long offset; 65 65 unsigned long length; 66 66 char *buffer; 67 67 int sectorsize; 68 - int bitmap_offset; 69 - long bitmap_start; 70 - long bitmap_end; 68 + unsigned long sector_mask; 69 + unsigned long long cow_offset; 70 + unsigned long bitmap_words[2]; 71 71 int error; 72 72 }; 73 73 ··· 80 82 unsigned long *bitmap_len_out, 81 83 int *data_offset_out); 82 84 extern int read_cow_bitmap(int fd, void *buf, int offset, int len); 83 - extern void do_io(struct io_thread_req *req, struct request *r, 84 - unsigned long *bitmap); 85 + extern void do_io(struct io_thread_req *req); 85 86 86 - static inline int ubd_test_bit(__u64 bit, void *data) 87 + static inline int ubd_test_bit(__u64 bit, unsigned char *data) 87 88 { 88 - unsigned char *buffer = data; 89 89 __u64 n; 90 90 int bits, off; 91 91 92 - bits = sizeof(buffer[0]) * 8; 92 + bits = sizeof(data[0]) * 8; 93 93 n = bit / bits; 94 94 off = bit % bits; 95 - return((buffer[n] & (1 << off)) != 0); 95 + return((data[n] & (1 << off)) != 0); 96 96 } 97 97 98 - static inline void ubd_set_bit(__u64 bit, void *data) 98 + static inline void ubd_set_bit(__u64 bit, unsigned char *data) 99 99 { 100 - unsigned char *buffer = data; 101 100 __u64 n; 102 101 int bits, off; 103 102 104 - bits = sizeof(buffer[0]) * 8; 103 + bits = sizeof(data[0]) * 8; 105 104 n = bit / bits; 106 105 off = bit % bits; 107 - buffer[n] |= (1 << off); 106 + data[n] |= (1 << off); 108 107 } 109 108 /*End stuff from ubd_user.h*/ 110 109 ··· 109 114 110 115 static DEFINE_SPINLOCK(ubd_io_lock); 111 116 static DEFINE_SPINLOCK(ubd_lock); 117 + 118 + static void (*do_ubd)(void); 112 119 113 120 static int ubd_open(struct inode * inode, struct file * filp); 114 121 static int ubd_release(struct inode * inode, struct file * file); ··· 158 161 int data_offset; 159 162 }; 160 163 161 - #define MAX_SG 64 162 - 163 164 struct ubd { 164 165 char *file; 165 166 int count; ··· 168 173 int no_cow; 169 174 struct cow cow; 170 175 struct platform_device pdev; 171 - struct scatterlist sg[MAX_SG]; 172 176 }; 173 177 174 178 #define DEFAULT_COW { \ ··· 460 466 ); 461 467 462 468 static void do_ubd_request(request_queue_t * q); 463 - static int in_ubd; 469 + 470 + /* Only changed by ubd_init, which is an initcall. */ 471 + int thread_fd = -1; 464 472 465 473 /* Changed by ubd_handler, which is serialized because interrupts only 466 474 * happen on CPU 0. 467 475 */ 468 476 int intr_count = 0; 469 477 470 - static void ubd_end_request(struct request *req, int bytes, int uptodate) 471 - { 472 - if (!end_that_request_first(req, uptodate, bytes >> 9)) { 473 - add_disk_randomness(req->rq_disk); 474 - end_that_request_last(req); 475 - } 476 - } 477 - 478 478 /* call ubd_finish if you need to serialize */ 479 - static void __ubd_finish(struct request *req, int bytes) 479 + static void __ubd_finish(struct request *req, int error) 480 480 { 481 - if(bytes < 0){ 482 - ubd_end_request(req, 0, 0); 483 - return; 484 - } 481 + int nsect; 485 482 486 - ubd_end_request(req, bytes, 1); 483 + if(error){ 484 + end_request(req, 0); 485 + return; 486 + } 487 + nsect = req->current_nr_sectors; 488 + req->sector += nsect; 489 + req->buffer += nsect << 9; 490 + req->errors = 0; 491 + req->nr_sectors -= nsect; 492 + req->current_nr_sectors = 0; 493 + end_request(req, 1); 487 494 } 488 495 489 - static inline void ubd_finish(struct request *req, int bytes) 496 + static inline void ubd_finish(struct request *req, int error) 490 497 { 491 - spin_lock(&ubd_io_lock); 492 - __ubd_finish(req, bytes); 493 - spin_unlock(&ubd_io_lock); 498 + spin_lock(&ubd_io_lock); 499 + __ubd_finish(req, error); 500 + spin_unlock(&ubd_io_lock); 494 501 } 495 502 496 - struct bitmap_io { 497 - atomic_t count; 498 - struct aio_context aio; 499 - }; 503 + /* Called without ubd_io_lock held */ 504 + static void ubd_handler(void) 505 + { 506 + struct io_thread_req req; 507 + struct request *rq = elv_next_request(ubd_queue); 508 + int n; 500 509 501 - struct ubd_aio { 502 - struct aio_context aio; 503 - struct request *req; 504 - int len; 505 - struct bitmap_io *bitmap; 506 - void *bitmap_buf; 507 - }; 508 - 509 - static int ubd_reply_fd = -1; 510 + do_ubd = NULL; 511 + intr_count++; 512 + n = os_read_file(thread_fd, &req, sizeof(req)); 513 + if(n != sizeof(req)){ 514 + printk(KERN_ERR "Pid %d - spurious interrupt in ubd_handler, " 515 + "err = %d\n", os_getpid(), -n); 516 + spin_lock(&ubd_io_lock); 517 + end_request(rq, 0); 518 + spin_unlock(&ubd_io_lock); 519 + return; 520 + } 521 + 522 + ubd_finish(rq, req.error); 523 + reactivate_fd(thread_fd, UBD_IRQ); 524 + do_ubd_request(ubd_queue); 525 + } 510 526 511 527 static irqreturn_t ubd_intr(int irq, void *dev, struct pt_regs *unused) 512 528 { 513 - struct aio_thread_reply reply; 514 - struct ubd_aio *aio; 515 - struct request *req; 516 - int err, n, fd = (int) (long) dev; 517 - 518 - while(1){ 519 - err = os_read_file(fd, &reply, sizeof(reply)); 520 - if(err == -EAGAIN) 521 - break; 522 - if(err < 0){ 523 - printk("ubd_aio_handler - read returned err %d\n", 524 - -err); 525 - break; 526 - } 527 - 528 - aio = container_of(reply.data, struct ubd_aio, aio); 529 - n = reply.err; 530 - 531 - if(n == 0){ 532 - req = aio->req; 533 - req->nr_sectors -= aio->len >> 9; 534 - 535 - if((aio->bitmap != NULL) && 536 - (atomic_dec_and_test(&aio->bitmap->count))){ 537 - aio->aio = aio->bitmap->aio; 538 - aio->len = 0; 539 - kfree(aio->bitmap); 540 - aio->bitmap = NULL; 541 - submit_aio(&aio->aio); 542 - } 543 - else { 544 - if((req->nr_sectors == 0) && 545 - (aio->bitmap == NULL)){ 546 - int len = req->hard_nr_sectors << 9; 547 - ubd_finish(req, len); 548 - } 549 - 550 - if(aio->bitmap_buf != NULL) 551 - kfree(aio->bitmap_buf); 552 - kfree(aio); 553 - } 554 - } 555 - else if(n < 0){ 556 - ubd_finish(aio->req, n); 557 - if(aio->bitmap != NULL) 558 - kfree(aio->bitmap); 559 - if(aio->bitmap_buf != NULL) 560 - kfree(aio->bitmap_buf); 561 - kfree(aio); 562 - } 563 - } 564 - reactivate_fd(fd, UBD_IRQ); 565 - 566 - do_ubd_request(ubd_queue); 567 - 529 + ubd_handler(); 568 530 return(IRQ_HANDLED); 569 531 } 532 + 533 + /* Only changed by ubd_init, which is an initcall. */ 534 + static int io_pid = -1; 535 + 536 + void kill_io_thread(void) 537 + { 538 + if(io_pid != -1) 539 + os_kill_process(io_pid, 1); 540 + } 541 + 542 + __uml_exitcall(kill_io_thread); 570 543 571 544 static int ubd_file_size(struct ubd *dev, __u64 *size_out) 572 545 { ··· 569 608 &dev->cow.data_offset, create_ptr); 570 609 571 610 if((dev->fd == -ENOENT) && create_cow){ 572 - dev->fd = create_cow_file(dev->file, dev->cow.file, 611 + dev->fd = create_cow_file(dev->file, dev->cow.file, 573 612 dev->openflags, 1 << 9, PAGE_SIZE, 574 613 &dev->cow.bitmap_offset, 575 614 &dev->cow.bitmap_len, ··· 831 870 { 832 871 int i; 833 872 834 - ubd_reply_fd = init_aio_irq(UBD_IRQ, "ubd", ubd_intr); 835 - if(ubd_reply_fd < 0) 836 - printk("Setting up ubd AIO failed, err = %d\n", ubd_reply_fd); 837 - 838 873 devfs_mk_dir("ubd"); 839 874 if (register_blkdev(MAJOR_NR, "ubd")) 840 875 return -1; ··· 841 884 return -1; 842 885 } 843 886 844 - blk_queue_max_hw_segments(ubd_queue, MAX_SG); 845 887 if (fake_major != MAJOR_NR) { 846 888 char name[sizeof("ubd_nnn\0")]; 847 889 ··· 852 896 driver_register(&ubd_driver); 853 897 for (i = 0; i < MAX_DEV; i++) 854 898 ubd_add(i); 855 - 856 899 return 0; 857 900 } 858 901 859 902 late_initcall(ubd_init); 903 + 904 + int ubd_driver_init(void){ 905 + unsigned long stack; 906 + int err; 907 + 908 + /* Set by CONFIG_BLK_DEV_UBD_SYNC or ubd=sync.*/ 909 + if(global_openflags.s){ 910 + printk(KERN_INFO "ubd: Synchronous mode\n"); 911 + /* Letting ubd=sync be like using ubd#s= instead of ubd#= is 912 + * enough. So use anyway the io thread. */ 913 + } 914 + stack = alloc_stack(0, 0); 915 + io_pid = start_io_thread(stack + PAGE_SIZE - sizeof(void *), 916 + &thread_fd); 917 + if(io_pid < 0){ 918 + printk(KERN_ERR 919 + "ubd : Failed to start I/O thread (errno = %d) - " 920 + "falling back to synchronous I/O\n", -io_pid); 921 + io_pid = -1; 922 + return(0); 923 + } 924 + err = um_request_irq(UBD_IRQ, thread_fd, IRQ_READ, ubd_intr, 925 + SA_INTERRUPT, "ubd", ubd_dev); 926 + if(err != 0) 927 + printk(KERN_ERR "um_request_irq failed - errno = %d\n", -err); 928 + return(err); 929 + } 930 + 931 + device_initcall(ubd_driver_init); 860 932 861 933 static int ubd_open(struct inode *inode, struct file *filp) 862 934 { ··· 923 939 return(0); 924 940 } 925 941 926 - static void cowify_bitmap(struct io_thread_req *req, unsigned long *bitmap) 942 + static void cowify_bitmap(__u64 io_offset, int length, unsigned long *cow_mask, 943 + __u64 *cow_offset, unsigned long *bitmap, 944 + __u64 bitmap_offset, unsigned long *bitmap_words, 945 + __u64 bitmap_len) 927 946 { 928 - __u64 sector = req->offset / req->sectorsize; 929 - int i; 947 + __u64 sector = io_offset >> 9; 948 + int i, update_bitmap = 0; 930 949 931 - for(i = 0; i < req->length / req->sectorsize; i++){ 932 - if(ubd_test_bit(sector + i, bitmap)) 933 - continue; 950 + for(i = 0; i < length >> 9; i++){ 951 + if(cow_mask != NULL) 952 + ubd_set_bit(i, (unsigned char *) cow_mask); 953 + if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) 954 + continue; 934 955 935 - if(req->bitmap_start == -1) 936 - req->bitmap_start = sector + i; 937 - req->bitmap_end = sector + i + 1; 956 + update_bitmap = 1; 957 + ubd_set_bit(sector + i, (unsigned char *) bitmap); 958 + } 938 959 939 - ubd_set_bit(sector + i, bitmap); 940 - } 960 + if(!update_bitmap) 961 + return; 962 + 963 + *cow_offset = sector / (sizeof(unsigned long) * 8); 964 + 965 + /* This takes care of the case where we're exactly at the end of the 966 + * device, and *cow_offset + 1 is off the end. So, just back it up 967 + * by one word. Thanks to Lynn Kerby for the fix and James McMechan 968 + * for the original diagnosis. 969 + */ 970 + if(*cow_offset == ((bitmap_len + sizeof(unsigned long) - 1) / 971 + sizeof(unsigned long) - 1)) 972 + (*cow_offset)--; 973 + 974 + bitmap_words[0] = bitmap[*cow_offset]; 975 + bitmap_words[1] = bitmap[*cow_offset + 1]; 976 + 977 + *cow_offset *= sizeof(unsigned long); 978 + *cow_offset += bitmap_offset; 979 + } 980 + 981 + static void cowify_req(struct io_thread_req *req, unsigned long *bitmap, 982 + __u64 bitmap_offset, __u64 bitmap_len) 983 + { 984 + __u64 sector = req->offset >> 9; 985 + int i; 986 + 987 + if(req->length > (sizeof(req->sector_mask) * 8) << 9) 988 + panic("Operation too long"); 989 + 990 + if(req->op == UBD_READ) { 991 + for(i = 0; i < req->length >> 9; i++){ 992 + if(ubd_test_bit(sector + i, (unsigned char *) bitmap)) 993 + ubd_set_bit(i, (unsigned char *) 994 + &req->sector_mask); 995 + } 996 + } 997 + else cowify_bitmap(req->offset, req->length, &req->sector_mask, 998 + &req->cow_offset, bitmap, bitmap_offset, 999 + req->bitmap_words, bitmap_len); 941 1000 } 942 1001 943 1002 /* Called with ubd_io_lock held */ 944 - static int prepare_request(struct request *req, struct io_thread_req *io_req, 945 - unsigned long long offset, int page_offset, 946 - int len, struct page *page) 1003 + static int prepare_request(struct request *req, struct io_thread_req *io_req) 947 1004 { 948 1005 struct gendisk *disk = req->rq_disk; 949 1006 struct ubd *dev = disk->private_data; 1007 + __u64 offset; 1008 + int len; 1009 + 1010 + if(req->rq_status == RQ_INACTIVE) return(1); 950 1011 951 1012 /* This should be impossible now */ 952 1013 if((rq_data_dir(req) == WRITE) && !dev->openflags.w){ 953 1014 printk("Write attempted on readonly ubd device %s\n", 954 1015 disk->disk_name); 955 - ubd_end_request(req, 0, 0); 1016 + end_request(req, 0); 956 1017 return(1); 957 1018 } 958 1019 1020 + offset = ((__u64) req->sector) << 9; 1021 + len = req->current_nr_sectors << 9; 1022 + 959 1023 io_req->fds[0] = (dev->cow.file != NULL) ? dev->cow.fd : dev->fd; 960 1024 io_req->fds[1] = dev->fd; 1025 + io_req->cow_offset = -1; 961 1026 io_req->offset = offset; 962 1027 io_req->length = len; 963 1028 io_req->error = 0; 964 - io_req->op = (rq_data_dir(req) == READ) ? AIO_READ : AIO_WRITE; 1029 + io_req->sector_mask = 0; 1030 + 1031 + io_req->op = (rq_data_dir(req) == READ) ? UBD_READ : UBD_WRITE; 965 1032 io_req->offsets[0] = 0; 966 1033 io_req->offsets[1] = dev->cow.data_offset; 967 - io_req->buffer = page_address(page) + page_offset; 1034 + io_req->buffer = req->buffer; 968 1035 io_req->sectorsize = 1 << 9; 969 - io_req->bitmap_offset = dev->cow.bitmap_offset; 970 - io_req->bitmap_start = -1; 971 - io_req->bitmap_end = -1; 972 1036 973 - if((dev->cow.file != NULL) && (io_req->op == UBD_WRITE)) 974 - cowify_bitmap(io_req, dev->cow.bitmap); 1037 + if(dev->cow.file != NULL) 1038 + cowify_req(io_req, dev->cow.bitmap, dev->cow.bitmap_offset, 1039 + dev->cow.bitmap_len); 1040 + 975 1041 return(0); 976 1042 } 977 1043 ··· 1030 996 { 1031 997 struct io_thread_req io_req; 1032 998 struct request *req; 1033 - __u64 sector; 1034 - int err; 999 + int err, n; 1035 1000 1036 - if(in_ubd) 1037 - return; 1038 - in_ubd = 1; 1039 - while((req = elv_next_request(q)) != NULL){ 1040 - struct gendisk *disk = req->rq_disk; 1041 - struct ubd *dev = disk->private_data; 1042 - int n, i; 1043 - 1044 - blkdev_dequeue_request(req); 1045 - 1046 - sector = req->sector; 1047 - n = blk_rq_map_sg(q, req, dev->sg); 1048 - 1049 - for(i = 0; i < n; i++){ 1050 - struct scatterlist *sg = &dev->sg[i]; 1051 - 1052 - err = prepare_request(req, &io_req, sector << 9, 1053 - sg->offset, sg->length, 1054 - sg->page); 1055 - if(err) 1056 - continue; 1057 - 1058 - sector += sg->length >> 9; 1059 - do_io(&io_req, req, dev->cow.bitmap); 1001 + if(thread_fd == -1){ 1002 + while((req = elv_next_request(q)) != NULL){ 1003 + err = prepare_request(req, &io_req); 1004 + if(!err){ 1005 + do_io(&io_req); 1006 + __ubd_finish(req, io_req.error); 1007 + } 1060 1008 } 1061 1009 } 1062 - in_ubd = 0; 1010 + else { 1011 + if(do_ubd || (req = elv_next_request(q)) == NULL) 1012 + return; 1013 + err = prepare_request(req, &io_req); 1014 + if(!err){ 1015 + do_ubd = ubd_handler; 1016 + n = os_write_file(thread_fd, (char *) &io_req, 1017 + sizeof(io_req)); 1018 + if(n != sizeof(io_req)) 1019 + printk("write to io thread failed, " 1020 + "errno = %d\n", -n); 1021 + } 1022 + } 1063 1023 } 1064 1024 1065 1025 static int ubd_ioctl(struct inode * inode, struct file * file, ··· 1269 1241 return(err); 1270 1242 } 1271 1243 1272 - void do_io(struct io_thread_req *req, struct request *r, unsigned long *bitmap) 1244 + static int update_bitmap(struct io_thread_req *req) 1273 1245 { 1274 - struct ubd_aio *aio; 1275 - struct bitmap_io *bitmap_io = NULL; 1276 - char *buf; 1277 - void *bitmap_buf = NULL; 1278 - unsigned long len, sector; 1279 - int nsectors, start, end, bit, err; 1280 - __u64 off; 1246 + int n; 1281 1247 1282 - if(req->bitmap_start != -1){ 1283 - /* Round up to the nearest word */ 1284 - int round = sizeof(unsigned long); 1285 - len = (req->bitmap_end - req->bitmap_start + 1286 - round * 8 - 1) / (round * 8); 1287 - len *= round; 1248 + if(req->cow_offset == -1) 1249 + return(0); 1288 1250 1289 - off = req->bitmap_start / (8 * round); 1290 - off *= round; 1251 + n = os_seek_file(req->fds[1], req->cow_offset); 1252 + if(n < 0){ 1253 + printk("do_io - bitmap lseek failed : err = %d\n", -n); 1254 + return(1); 1255 + } 1291 1256 1292 - bitmap_io = kmalloc(sizeof(*bitmap_io), GFP_KERNEL); 1293 - if(bitmap_io == NULL){ 1294 - printk("Failed to kmalloc bitmap IO\n"); 1295 - req->error = 1; 1296 - return; 1297 - } 1257 + n = os_write_file(req->fds[1], &req->bitmap_words, 1258 + sizeof(req->bitmap_words)); 1259 + if(n != sizeof(req->bitmap_words)){ 1260 + printk("do_io - bitmap update failed, err = %d fd = %d\n", -n, 1261 + req->fds[1]); 1262 + return(1); 1263 + } 1298 1264 1299 - bitmap_buf = kmalloc(len, GFP_KERNEL); 1300 - if(bitmap_buf == NULL){ 1301 - printk("do_io : kmalloc of bitmap chunk " 1302 - "failed\n"); 1303 - kfree(bitmap_io); 1304 - req->error = 1; 1305 - return; 1306 - } 1307 - memcpy(bitmap_buf, &bitmap[off / sizeof(bitmap[0])], len); 1308 - 1309 - *bitmap_io = ((struct bitmap_io) 1310 - { .count = ATOMIC_INIT(0), 1311 - .aio = INIT_AIO(AIO_WRITE, req->fds[1], 1312 - bitmap_buf, len, 1313 - req->bitmap_offset + off, 1314 - ubd_reply_fd) } ); 1315 - } 1316 - 1317 - nsectors = req->length / req->sectorsize; 1318 - start = 0; 1319 - end = nsectors; 1320 - bit = 0; 1321 - do { 1322 - if(bitmap != NULL){ 1323 - sector = req->offset / req->sectorsize; 1324 - bit = ubd_test_bit(sector + start, bitmap); 1325 - end = start; 1326 - while((end < nsectors) && 1327 - (ubd_test_bit(sector + end, bitmap) == bit)) 1328 - end++; 1329 - } 1330 - 1331 - off = req->offsets[bit] + req->offset + 1332 - start * req->sectorsize; 1333 - len = (end - start) * req->sectorsize; 1334 - buf = &req->buffer[start * req->sectorsize]; 1335 - 1336 - aio = kmalloc(sizeof(*aio), GFP_KERNEL); 1337 - if(aio == NULL){ 1338 - req->error = 1; 1339 - return; 1340 - } 1341 - 1342 - *aio = ((struct ubd_aio) 1343 - { .aio = INIT_AIO(req->op, req->fds[bit], buf, 1344 - len, off, ubd_reply_fd), 1345 - .len = len, 1346 - .req = r, 1347 - .bitmap = bitmap_io, 1348 - .bitmap_buf = bitmap_buf }); 1349 - 1350 - if(aio->bitmap != NULL) 1351 - atomic_inc(&aio->bitmap->count); 1352 - 1353 - err = submit_aio(&aio->aio); 1354 - if(err){ 1355 - printk("do_io - submit_aio failed, " 1356 - "err = %d\n", err); 1357 - req->error = 1; 1358 - return; 1359 - } 1360 - 1361 - start = end; 1362 - } while(start < nsectors); 1265 + return(0); 1363 1266 } 1267 + 1268 + void do_io(struct io_thread_req *req) 1269 + { 1270 + char *buf; 1271 + unsigned long len; 1272 + int n, nsectors, start, end, bit; 1273 + int err; 1274 + __u64 off; 1275 + 1276 + nsectors = req->length / req->sectorsize; 1277 + start = 0; 1278 + do { 1279 + bit = ubd_test_bit(start, (unsigned char *) &req->sector_mask); 1280 + end = start; 1281 + while((end < nsectors) && 1282 + (ubd_test_bit(end, (unsigned char *) 1283 + &req->sector_mask) == bit)) 1284 + end++; 1285 + 1286 + off = req->offset + req->offsets[bit] + 1287 + start * req->sectorsize; 1288 + len = (end - start) * req->sectorsize; 1289 + buf = &req->buffer[start * req->sectorsize]; 1290 + 1291 + err = os_seek_file(req->fds[bit], off); 1292 + if(err < 0){ 1293 + printk("do_io - lseek failed : err = %d\n", -err); 1294 + req->error = 1; 1295 + return; 1296 + } 1297 + if(req->op == UBD_READ){ 1298 + n = 0; 1299 + do { 1300 + buf = &buf[n]; 1301 + len -= n; 1302 + n = os_read_file(req->fds[bit], buf, len); 1303 + if (n < 0) { 1304 + printk("do_io - read failed, err = %d " 1305 + "fd = %d\n", -n, req->fds[bit]); 1306 + req->error = 1; 1307 + return; 1308 + } 1309 + } while((n < len) && (n != 0)); 1310 + if (n < len) memset(&buf[n], 0, len - n); 1311 + } else { 1312 + n = os_write_file(req->fds[bit], buf, len); 1313 + if(n != len){ 1314 + printk("do_io - write failed err = %d " 1315 + "fd = %d\n", -n, req->fds[bit]); 1316 + req->error = 1; 1317 + return; 1318 + } 1319 + } 1320 + 1321 + start = end; 1322 + } while(start < nsectors); 1323 + 1324 + req->error = update_bitmap(req); 1325 + } 1326 + 1327 + /* Changed in start_io_thread, which is serialized by being called only 1328 + * from ubd_init, which is an initcall. 1329 + */ 1330 + int kernel_fd = -1; 1331 + 1332 + /* Only changed by the io thread */ 1333 + int io_count = 0; 1334 + 1335 + int io_thread(void *arg) 1336 + { 1337 + struct io_thread_req req; 1338 + int n; 1339 + 1340 + ignore_sigwinch_sig(); 1341 + while(1){ 1342 + n = os_read_file(kernel_fd, &req, sizeof(req)); 1343 + if(n != sizeof(req)){ 1344 + if(n < 0) 1345 + printk("io_thread - read failed, fd = %d, " 1346 + "err = %d\n", kernel_fd, -n); 1347 + else { 1348 + printk("io_thread - short read, fd = %d, " 1349 + "length = %d\n", kernel_fd, n); 1350 + } 1351 + continue; 1352 + } 1353 + io_count++; 1354 + do_io(&req); 1355 + n = os_write_file(kernel_fd, &req, sizeof(req)); 1356 + if(n != sizeof(req)) 1357 + printk("io_thread - write failed, fd = %d, err = %d\n", 1358 + kernel_fd, -n); 1359 + } 1360 + } 1361 + 1362 + /* 1363 + * Overrides for Emacs so that we follow Linus's tabbing style. 1364 + * Emacs will notice this stuff at the end of the file and automatically 1365 + * adjust the settings for this buffer only. This must remain at the end 1366 + * of the file. 1367 + * --------------------------------------------------------------------------- 1368 + * Local variables: 1369 + * c-file-style: "linux" 1370 + * End: 1371 + */
+75
arch/um/drivers/ubd_user.c
··· 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 + */
+3 -15
arch/um/include/aio.h
··· 14 14 }; 15 15 16 16 struct aio_context { 17 - enum aio_type type; 18 - int fd; 19 - void *data; 20 - int len; 21 - unsigned long long offset; 22 17 int reply_fd; 23 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 21 #define INIT_AIO_CONTEXT { .reply_fd = -1, \ 36 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 28 #endif
+5
arch/um/include/os.h
··· 6 6 #ifndef __OS_H__ 7 7 #define __OS_H__ 8 8 9 + #include "uml-config.h" 9 10 #include "asm/types.h" 10 11 #include "../os/include/file.h" 11 12 ··· 160 159 161 160 /* Make sure they are clear when running in TT mode. Required by 162 161 * SEGV_MAYBE_FIXABLE */ 162 + #ifdef UML_CONFIG_MODE_SKAS 163 163 #define clear_can_do_skas() do { ptrace_faultinfo = proc_mm = 0; } while (0) 164 + #else 165 + #define clear_can_do_skas() do {} while (0) 166 + #endif 164 167 165 168 /* mem.c */ 166 169 extern int create_mem_file(unsigned long len);
+95 -112
arch/um/os-Linux/aio.c
··· 6 6 #include <stdlib.h> 7 7 #include <unistd.h> 8 8 #include <signal.h> 9 - #include <string.h> 10 9 #include <errno.h> 11 10 #include <sched.h> 12 11 #include <sys/syscall.h> ··· 16 17 #include "user.h" 17 18 #include "mode.h" 18 19 20 + struct aio_thread_req { 21 + enum aio_type type; 22 + int io_fd; 23 + unsigned long long offset; 24 + char *buf; 25 + int len; 26 + struct aio_context *aio; 27 + }; 28 + 19 29 static int aio_req_fd_r = -1; 20 30 static int aio_req_fd_w = -1; 21 - 22 - static int update_aio(struct aio_context *aio, int res) 23 - { 24 - if(res < 0) 25 - aio->len = res; 26 - else if((res == 0) && (aio->type == AIO_READ)){ 27 - /* This is the EOF case - we have hit the end of the file 28 - * and it ends in a partial block, so we fill the end of 29 - * the block with zeros and claim success. 30 - */ 31 - memset(aio->data, 0, aio->len); 32 - aio->len = 0; 33 - } 34 - else if(res > 0){ 35 - aio->len -= res; 36 - aio->data += res; 37 - aio->offset += res; 38 - return aio->len; 39 - } 40 - 41 - return 0; 42 - } 43 31 44 32 #if defined(HAVE_AIO_ABI) 45 33 #include <linux/aio_abi.h> ··· 66 80 * that it now backs the mmapped area. 67 81 */ 68 82 69 - static int do_aio(aio_context_t ctx, struct aio_context *aio) 83 + static int do_aio(aio_context_t ctx, enum aio_type type, int fd, char *buf, 84 + int len, unsigned long long offset, struct aio_context *aio) 70 85 { 71 86 struct iocb iocb, *iocbp = &iocb; 72 87 char c; ··· 75 88 76 89 iocb = ((struct iocb) { .aio_data = (unsigned long) aio, 77 90 .aio_reqprio = 0, 78 - .aio_fildes = aio->fd, 79 - .aio_buf = (unsigned long) aio->data, 80 - .aio_nbytes = aio->len, 81 - .aio_offset = aio->offset, 91 + .aio_fildes = fd, 92 + .aio_buf = (unsigned long) buf, 93 + .aio_nbytes = len, 94 + .aio_offset = offset, 82 95 .aio_reserved1 = 0, 83 96 .aio_reserved2 = 0, 84 97 .aio_reserved3 = 0 }); 85 98 86 - switch(aio->type){ 99 + switch(type){ 87 100 case AIO_READ: 88 101 iocb.aio_lio_opcode = IOCB_CMD_PREAD; 102 + err = io_submit(ctx, 1, &iocbp); 89 103 break; 90 104 case AIO_WRITE: 91 105 iocb.aio_lio_opcode = IOCB_CMD_PWRITE; 106 + err = io_submit(ctx, 1, &iocbp); 92 107 break; 93 108 case AIO_MMAP: 94 109 iocb.aio_lio_opcode = IOCB_CMD_PREAD; 95 110 iocb.aio_buf = (unsigned long) &c; 96 111 iocb.aio_nbytes = sizeof(c); 112 + err = io_submit(ctx, 1, &iocbp); 97 113 break; 98 114 default: 99 - printk("Bogus op in do_aio - %d\n", aio->type); 115 + printk("Bogus op in do_aio - %d\n", type); 100 116 err = -EINVAL; 101 - goto out; 117 + break; 102 118 } 103 119 104 - err = io_submit(ctx, 1, &iocbp); 105 120 if(err > 0) 106 121 err = 0; 107 122 else 108 123 err = -errno; 109 124 110 - out: 111 125 return err; 112 126 } 113 127 ··· 117 129 static int aio_thread(void *arg) 118 130 { 119 131 struct aio_thread_reply reply; 120 - struct aio_context *aio; 121 132 struct io_event event; 122 - int err, n; 133 + int err, n, reply_fd; 123 134 124 135 signal(SIGWINCH, SIG_IGN); 125 136 ··· 131 144 "errno = %d\n", errno); 132 145 } 133 146 else { 134 - /* This is safe as we've just a pointer here. */ 135 - aio = (struct aio_context *) (long) event.data; 136 - if(update_aio(aio, event.res)){ 137 - do_aio(ctx, aio); 138 - continue; 139 - } 140 - 141 147 reply = ((struct aio_thread_reply) 142 - { .data = aio, 143 - .err = aio->len }); 144 - err = os_write_file(aio->reply_fd, &reply, 145 - sizeof(reply)); 148 + { .data = (void *) (long) event.data, 149 + .err = event.res }); 150 + reply_fd = ((struct aio_context *) reply.data)->reply_fd; 151 + err = os_write_file(reply_fd, &reply, sizeof(reply)); 146 152 if(err != sizeof(reply)) 147 - printk("aio_thread - write failed, " 148 - "fd = %d, err = %d\n", aio->reply_fd, 149 - -err); 153 + printk("aio_thread - write failed, fd = %d, " 154 + "err = %d\n", aio_req_fd_r, -err); 150 155 } 151 156 } 152 157 return 0; ··· 146 167 147 168 #endif 148 169 149 - static int do_not_aio(struct aio_context *aio) 170 + static int do_not_aio(struct aio_thread_req *req) 150 171 { 151 172 char c; 152 173 int err; 153 174 154 - switch(aio->type){ 175 + switch(req->type){ 155 176 case AIO_READ: 156 - err = os_seek_file(aio->fd, aio->offset); 177 + err = os_seek_file(req->io_fd, req->offset); 157 178 if(err) 158 179 goto out; 159 180 160 - err = os_read_file(aio->fd, aio->data, aio->len); 181 + err = os_read_file(req->io_fd, req->buf, req->len); 161 182 break; 162 183 case AIO_WRITE: 163 - err = os_seek_file(aio->fd, aio->offset); 184 + err = os_seek_file(req->io_fd, req->offset); 164 185 if(err) 165 186 goto out; 166 187 167 - err = os_write_file(aio->fd, aio->data, aio->len); 188 + err = os_write_file(req->io_fd, req->buf, req->len); 168 189 break; 169 190 case AIO_MMAP: 170 - err = os_seek_file(aio->fd, aio->offset); 191 + err = os_seek_file(req->io_fd, req->offset); 171 192 if(err) 172 193 goto out; 173 194 174 - err = os_read_file(aio->fd, &c, sizeof(c)); 195 + err = os_read_file(req->io_fd, &c, sizeof(c)); 175 196 break; 176 197 default: 177 - printk("do_not_aio - bad request type : %d\n", aio->type); 198 + printk("do_not_aio - bad request type : %d\n", req->type); 178 199 err = -EINVAL; 179 200 break; 180 201 } ··· 185 206 186 207 static int not_aio_thread(void *arg) 187 208 { 188 - struct aio_context *aio; 209 + struct aio_thread_req req; 189 210 struct aio_thread_reply reply; 190 211 int err; 191 212 192 213 signal(SIGWINCH, SIG_IGN); 193 214 while(1){ 194 - err = os_read_file(aio_req_fd_r, &aio, sizeof(aio)); 195 - if(err != sizeof(aio)){ 215 + err = os_read_file(aio_req_fd_r, &req, sizeof(req)); 216 + if(err != sizeof(req)){ 196 217 if(err < 0) 197 218 printk("not_aio_thread - read failed, " 198 219 "fd = %d, err = %d\n", aio_req_fd_r, ··· 203 224 } 204 225 continue; 205 226 } 206 - again: 207 - err = do_not_aio(aio); 208 - 209 - if(update_aio(aio, err)) 210 - goto again; 211 - 212 - reply = ((struct aio_thread_reply) { .data = aio, 213 - .err = aio->len }); 214 - err = os_write_file(aio->reply_fd, &reply, sizeof(reply)); 227 + err = do_not_aio(&req); 228 + reply = ((struct aio_thread_reply) { .data = req.aio, 229 + .err = err }); 230 + err = os_write_file(req.aio->reply_fd, &reply, sizeof(reply)); 215 231 if(err != sizeof(reply)) 216 232 printk("not_aio_thread - write failed, fd = %d, " 217 233 "err = %d\n", aio_req_fd_r, -err); 218 234 } 219 235 } 220 236 221 - static int submit_aio_24(struct aio_context *aio) 222 - { 223 - int err; 224 - 225 - err = os_write_file(aio_req_fd_w, &aio, sizeof(aio)); 226 - if(err == sizeof(aio)) 227 - err = 0; 228 - 229 - return err; 230 - } 231 - 232 237 static int aio_pid = -1; 233 - static int (*submit_proc)(struct aio_context *aio); 234 238 235 239 static int init_aio_24(void) 236 240 { ··· 245 283 #endif 246 284 printk("2.6 host AIO support not used - falling back to I/O " 247 285 "thread\n"); 248 - 249 - submit_proc = submit_aio_24; 250 - 251 286 return 0; 252 287 } 253 288 254 289 #ifdef HAVE_AIO_ABI 255 290 #define DEFAULT_24_AIO 0 256 - static int submit_aio_26(struct aio_context *aio) 257 - { 258 - struct aio_thread_reply reply; 259 - int err; 260 - 261 - err = do_aio(ctx, aio); 262 - if(err){ 263 - reply = ((struct aio_thread_reply) { .data = aio, 264 - .err = err }); 265 - err = os_write_file(aio->reply_fd, &reply, sizeof(reply)); 266 - if(err != sizeof(reply)) 267 - printk("submit_aio_26 - write failed, " 268 - "fd = %d, err = %d\n", aio->reply_fd, -err); 269 - else err = 0; 270 - } 271 - 272 - return err; 273 - } 274 - 275 291 static int init_aio_26(void) 276 292 { 277 293 unsigned long stack; ··· 270 330 aio_pid = err; 271 331 272 332 printk("Using 2.6 host AIO\n"); 273 - 274 - submit_proc = submit_aio_26; 275 - 276 333 return 0; 334 + } 335 + 336 + static int submit_aio_26(enum aio_type type, int io_fd, char *buf, int len, 337 + unsigned long long offset, struct aio_context *aio) 338 + { 339 + struct aio_thread_reply reply; 340 + int err; 341 + 342 + err = do_aio(ctx, type, io_fd, buf, len, offset, aio); 343 + if(err){ 344 + reply = ((struct aio_thread_reply) { .data = aio, 345 + .err = err }); 346 + err = os_write_file(aio->reply_fd, &reply, sizeof(reply)); 347 + if(err != sizeof(reply)) 348 + printk("submit_aio_26 - write failed, " 349 + "fd = %d, err = %d\n", aio->reply_fd, -err); 350 + else err = 0; 351 + } 352 + 353 + return err; 277 354 } 278 355 279 356 #else 280 357 #define DEFAULT_24_AIO 1 281 - static int submit_aio_26(struct aio_context *aio) 358 + static int init_aio_26(void) 282 359 { 283 360 return -ENOSYS; 284 361 } 285 362 286 - static int init_aio_26(void) 363 + static int submit_aio_26(enum aio_type type, int io_fd, char *buf, int len, 364 + unsigned long long offset, struct aio_context *aio) 287 365 { 288 - submit_proc = submit_aio_26; 289 366 return -ENOSYS; 290 367 } 291 368 #endif ··· 369 412 370 413 __uml_exitcall(exit_aio); 371 414 372 - int submit_aio(struct aio_context *aio) 415 + static int submit_aio_24(enum aio_type type, int io_fd, char *buf, int len, 416 + unsigned long long offset, struct aio_context *aio) 373 417 { 374 - return (*submit_proc)(aio); 418 + struct aio_thread_req req = { .type = type, 419 + .io_fd = io_fd, 420 + .offset = offset, 421 + .buf = buf, 422 + .len = len, 423 + .aio = aio, 424 + }; 425 + int err; 426 + 427 + err = os_write_file(aio_req_fd_w, &req, sizeof(req)); 428 + if(err == sizeof(req)) 429 + err = 0; 430 + 431 + return err; 432 + } 433 + 434 + int submit_aio(enum aio_type type, int io_fd, char *buf, int len, 435 + unsigned long long offset, int reply_fd, 436 + struct aio_context *aio) 437 + { 438 + aio->reply_fd = reply_fd; 439 + if(aio_24) 440 + return submit_aio_24(type, io_fd, buf, len, offset, aio); 441 + else { 442 + return submit_aio_26(type, io_fd, buf, len, offset, aio); 443 + } 375 444 }
+11
arch/um/os-Linux/start_up.c
··· 143 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 151 __uml_setup("skas0", skas0_cmd_param, 147 152 "skas0\n" 148 153 " Disables SKAS3 usage, so that SKAS0 is used, unless \n" 149 154 " you specify mode=tt.\n\n"); 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"); 150 161 151 162 static int force_sysemu_disabled = 0; 152 163
+2 -2
arch/um/scripts/Makefile.rules
··· 7 7 USER_OBJS += $(filter %_user.o,$(obj-y) $(obj-m) $(USER_SINGLE_OBJS)) 8 8 USER_OBJS := $(foreach file,$(USER_OBJS),$(obj)/$(file)) 9 9 10 - $(USER_OBJS) : c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) \ 11 - $(CFLAGS_$(notdir $@)) 10 + $(USER_OBJS) $(USER_OBJS:.o=.i) $(USER_OBJS:.o=.s) $(USER_OBJS:.o=.lst): \ 11 + c_flags = -Wp,-MD,$(depfile) $(USER_CFLAGS) $(CFLAGS_$(notdir $@)) 12 12 $(USER_OBJS): cmd_checksrc = 13 13 $(USER_OBJS): quiet_cmd_checksrc = 14 14 $(USER_OBJS): cmd_force_checksrc =
+28 -9
arch/um/sys-x86_64/stub_segv.c
··· 10 10 #include "uml-config.h" 11 11 #include "sysdep/sigcontext.h" 12 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 30 void __attribute__ ((__section__ (".__syscall_stub"))) 15 31 stub_segv_handler(int sig) ··· 33 17 struct ucontext *uc; 34 18 35 19 __asm__("movq %%rdx, %0" : "=g" (uc) :); 36 - GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA), 37 - &uc->uc_mcontext); 20 + GET_FAULTINFO_FROM_SC(*((struct faultinfo *) UML_CONFIG_STUB_DATA), 21 + &uc->uc_mcontext); 38 22 39 - __asm__("movq %0, %%rax ; syscall": : "g" (__NR_getpid)); 23 + __asm__("movq %0, %%rax ; syscall": : "g" (__NR_getpid)); 40 24 __asm__("movq %%rax, %%rdi ; movq %0, %%rax ; movq %1, %%rsi ;" 41 - "syscall": : "g" (__NR_kill), "g" (SIGUSR1)); 42 - /* Two popqs to restore the stack to the state just before entering 43 - * the handler, one pops the return address, the other pops the frame 44 - * pointer. 25 + "syscall": : "g" (__NR_kill), "g" (SIGUSR1) : 26 + "%rdi", "%rax", "%rsi"); 27 + /* sys_sigreturn expects that the stack pointer will be 8 bytes into 28 + * the signal frame. So, we use the ucontext pointer, which we know 29 + * already, to get the signal frame pointer, and add 8 to that. 45 30 */ 46 - __asm__("popq %%rax ; popq %%rax ; movq %0, %%rax ; syscall" : : "g" 47 - (__NR_rt_sigreturn)); 31 + __asm__("movq %0, %%rsp": : 32 + "g" ((unsigned long) container_of(uc, struct rt_sigframe, 33 + uc) + 8)); 34 + __asm__("movq %0, %%rax ; syscall" : : "g" (__NR_rt_sigreturn)); 48 35 }
+5 -1
arch/x86_64/ia32/ia32_signal.c
··· 425 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 435 int ia32_setup_frame(int sig, struct k_sigaction *ka,
+4
arch/x86_64/kernel/setup64.c
··· 87 87 int i; 88 88 unsigned long size; 89 89 90 + #ifdef CONFIG_HOTPLUG_CPU 91 + prefill_possible_map(); 92 + #endif 93 + 90 94 /* Copy section for each CPU (we discard the original) */ 91 95 size = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES); 92 96 #ifdef CONFIG_MODULES
+1 -5
arch/x86_64/kernel/smpboot.c
··· 892 892 * those NR_CPUS, hence cpu_possible_map represents entire NR_CPUS range. 893 893 * - Ashok Raj 894 894 */ 895 - static void prefill_possible_map(void) 895 + __init void prefill_possible_map(void) 896 896 { 897 897 int i; 898 898 for (i = 0; i < NR_CPUS; i++) ··· 966 966 nmi_watchdog_default(); 967 967 current_cpu_data = boot_cpu_data; 968 968 current_thread_info()->cpu = 0; /* needed? */ 969 - 970 - #ifdef CONFIG_HOTPLUG_CPU 971 - prefill_possible_map(); 972 - #endif 973 969 974 970 if (smp_sanity_check(max_cpus) < 0) { 975 971 printk(KERN_INFO "SMP disabled\n");
+127
arch/x86_64/kernel/suspend.c
··· 11 11 #include <linux/smp.h> 12 12 #include <linux/suspend.h> 13 13 #include <asm/proto.h> 14 + #include <asm/page.h> 15 + #include <asm/pgtable.h> 14 16 15 17 struct saved_context saved_context; 16 18 ··· 142 140 143 141 } 144 142 143 + #ifdef CONFIG_SOFTWARE_SUSPEND 144 + /* Defined in arch/x86_64/kernel/suspend_asm.S */ 145 + extern int restore_image(void); 145 146 147 + pgd_t *temp_level4_pgt; 148 + 149 + static void **pages; 150 + 151 + static inline void *__add_page(void) 152 + { 153 + void **c; 154 + 155 + c = (void **)get_usable_page(GFP_ATOMIC); 156 + if (c) { 157 + *c = pages; 158 + pages = c; 159 + } 160 + return c; 161 + } 162 + 163 + static inline void *__next_page(void) 164 + { 165 + void **c; 166 + 167 + c = pages; 168 + if (c) { 169 + pages = *c; 170 + *c = NULL; 171 + } 172 + return c; 173 + } 174 + 175 + /* 176 + * Try to allocate as many usable pages as needed and daisy chain them. 177 + * If one allocation fails, free the pages allocated so far 178 + */ 179 + static int alloc_usable_pages(unsigned long n) 180 + { 181 + void *p; 182 + 183 + pages = NULL; 184 + do 185 + if (!__add_page()) 186 + break; 187 + while (--n); 188 + if (n) { 189 + p = __next_page(); 190 + while (p) { 191 + free_page((unsigned long)p); 192 + p = __next_page(); 193 + } 194 + return -ENOMEM; 195 + } 196 + return 0; 197 + } 198 + 199 + static void res_phys_pud_init(pud_t *pud, unsigned long address, unsigned long end) 200 + { 201 + long i, j; 202 + 203 + i = pud_index(address); 204 + pud = pud + i; 205 + for (; i < PTRS_PER_PUD; pud++, i++) { 206 + unsigned long paddr; 207 + pmd_t *pmd; 208 + 209 + paddr = address + i*PUD_SIZE; 210 + if (paddr >= end) 211 + break; 212 + 213 + pmd = (pmd_t *)__next_page(); 214 + set_pud(pud, __pud(__pa(pmd) | _KERNPG_TABLE)); 215 + for (j = 0; j < PTRS_PER_PMD; pmd++, j++, paddr += PMD_SIZE) { 216 + unsigned long pe; 217 + 218 + if (paddr >= end) 219 + break; 220 + pe = _PAGE_NX | _PAGE_PSE | _KERNPG_TABLE | paddr; 221 + pe &= __supported_pte_mask; 222 + set_pmd(pmd, __pmd(pe)); 223 + } 224 + } 225 + } 226 + 227 + static void set_up_temporary_mappings(void) 228 + { 229 + unsigned long start, end, next; 230 + 231 + temp_level4_pgt = (pgd_t *)__next_page(); 232 + 233 + /* It is safe to reuse the original kernel mapping */ 234 + set_pgd(temp_level4_pgt + pgd_index(__START_KERNEL_map), 235 + init_level4_pgt[pgd_index(__START_KERNEL_map)]); 236 + 237 + /* Set up the direct mapping from scratch */ 238 + start = (unsigned long)pfn_to_kaddr(0); 239 + end = (unsigned long)pfn_to_kaddr(end_pfn); 240 + 241 + for (; start < end; start = next) { 242 + pud_t *pud = (pud_t *)__next_page(); 243 + next = start + PGDIR_SIZE; 244 + if (next > end) 245 + next = end; 246 + res_phys_pud_init(pud, __pa(start), __pa(next)); 247 + set_pgd(temp_level4_pgt + pgd_index(start), 248 + mk_kernel_pgd(__pa(pud))); 249 + } 250 + } 251 + 252 + int swsusp_arch_resume(void) 253 + { 254 + unsigned long n; 255 + 256 + n = ((end_pfn << PAGE_SHIFT) + PUD_SIZE - 1) >> PUD_SHIFT; 257 + n += (n + PTRS_PER_PUD - 1) / PTRS_PER_PUD + 1; 258 + pr_debug("swsusp_arch_resume(): pages needed = %lu\n", n); 259 + if (alloc_usable_pages(n)) { 260 + free_eaten_memory(); 261 + return -ENOMEM; 262 + } 263 + /* We have got enough memory and from now on we cannot recover */ 264 + set_up_temporary_mappings(); 265 + restore_image(); 266 + return 0; 267 + } 268 + #endif /* CONFIG_SOFTWARE_SUSPEND */
+11 -6
arch/x86_64/kernel/suspend_asm.S
··· 39 39 call swsusp_save 40 40 ret 41 41 42 - ENTRY(swsusp_arch_resume) 43 - /* set up cr3 */ 44 - leaq init_level4_pgt(%rip),%rax 45 - subq $__START_KERNEL_map,%rax 46 - movq %rax,%cr3 47 - 42 + ENTRY(restore_image) 43 + /* switch to temporary page tables */ 44 + movq $__PAGE_OFFSET, %rdx 45 + movq temp_level4_pgt(%rip), %rax 46 + subq %rdx, %rax 47 + movq %rax, %cr3 48 + /* Flush TLB */ 48 49 movq mmu_cr4_features(%rip), %rax 49 50 movq %rax, %rdx 50 51 andq $~(1<<7), %rdx # PGE ··· 70 69 movq pbe_next(%rdx), %rdx 71 70 jmp loop 72 71 done: 72 + /* go back to the original page tables */ 73 + leaq init_level4_pgt(%rip), %rax 74 + subq $__START_KERNEL_map, %rax 75 + movq %rax, %cr3 73 76 /* Flush TLB, including "global" things (vmalloc) */ 74 77 movq mmu_cr4_features(%rip), %rax 75 78 movq %rax, %rdx
-2
arch/x86_64/mm/pageattr.c
··· 220 220 down_read(&init_mm.mmap_sem); 221 221 df = xchg(&df_list, NULL); 222 222 up_read(&init_mm.mmap_sem); 223 - if (!df) 224 - return; 225 223 flush_map((df && !df->next) ? df->address : 0); 226 224 for (; df; df = next_df) { 227 225 next_df = df->next;
+1 -1
drivers/atm/ambassador.c
··· 795 795 } 796 796 797 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 800 rx_in rx; 801 801 amb_rxq * rxq;
+2 -3
drivers/atm/firestream.c
··· 1374 1374 } 1375 1375 } 1376 1376 1377 - static void __devinit *aligned_kmalloc (int size, unsigned int __nocast flags, 1378 - int alignment) 1377 + static void __devinit *aligned_kmalloc (int size, gfp_t flags, int alignment) 1379 1378 { 1380 1379 void *t; 1381 1380 ··· 1465 1466 working again after that... -- REW */ 1466 1467 1467 1468 static void top_off_fp (struct fs_dev *dev, struct freepool *fp, 1468 - unsigned int __nocast gfp_flags) 1469 + gfp_t gfp_flags) 1469 1470 { 1470 1471 struct FS_BPENTRY *qe, *ne; 1471 1472 struct sk_buff *skb;
+4 -6
drivers/atm/fore200e.c
··· 178 178 179 179 180 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) 186 - memset(chunk, 0x00, size); 187 - else 188 - printk(FORE200E "kmalloc() failed, requested size = %d, flags = 0x%x\n", size, flags); 185 + if (!chunk) 186 + printk(FORE200E "kmalloc() failed, requested size = %d, flags = 0x%x\n", size, flags); 189 187 190 188 return chunk; 191 189 }
+2 -3
drivers/base/dmapool.c
··· 156 156 157 157 158 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 161 struct dma_page *page; 162 162 int mapsize; ··· 262 262 * If such a memory block can't be allocated, null is returned. 263 263 */ 264 264 void * 265 - dma_pool_alloc (struct dma_pool *pool, unsigned int __nocast mem_flags, 266 - dma_addr_t *handle) 265 + dma_pool_alloc (struct dma_pool *pool, gfp_t mem_flags, dma_addr_t *handle) 267 266 { 268 267 unsigned long flags; 269 268 struct dma_page *page;
+2 -2
drivers/block/pktcdvd.c
··· 229 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 234 return kmalloc(sizeof(struct pkt_rb_node), gfp_mask); 235 235 } ··· 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 2087 return kmalloc(sizeof(struct packet_stacked_data), gfp_mask); 2088 2088 }
+4 -4
drivers/block/scsi_ioctl.c
··· 201 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 208 if (!type) { 205 209 cmd_type[cmd[0]] = CMD_WARNED; 206 210 printk(KERN_WARNING "scsi: unknown opcode 0x%02x\n", cmd[0]); 207 211 } 208 - 209 - /* And root can do any command.. */ 210 - if (capable(CAP_SYS_RAWIO)) 211 - return 0; 212 212 213 213 /* Otherwise fail it with an "Operation not permitted" */ 214 214 return -EPERM;
+1 -1
drivers/bluetooth/bpa10x.c
··· 308 308 } 309 309 310 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 313 struct urb *urb; 314 314 struct usb_ctrlrequest *cr;
+1 -1
drivers/bluetooth/hci_usb.c
··· 132 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 137 struct _urb *_urb = kmalloc(sizeof(struct _urb) + 138 138 sizeof(struct usb_iso_packet_descriptor) * isoc, gfp);
+1 -1
drivers/char/drm/drm_stub.c
··· 47 47 MODULE_PARM_DESC(debug, "Enable debug output"); 48 48 49 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 52 drm_head_t **drm_heads; 53 53 struct drm_sysfs_class *drm_class;
+1
drivers/char/s3c2410-rtc.c
··· 564 564 565 565 static struct device_driver s3c2410_rtcdrv = { 566 566 .name = "s3c2410-rtc", 567 + .owner = THIS_MODULE, 567 568 .bus = &platform_bus_type, 568 569 .probe = s3c2410_rtc_probe, 569 570 .remove = s3c2410_rtc_remove,
+172 -67
drivers/char/watchdog/pcwd_pci.c
··· 50 50 #include <asm/io.h> /* For inb/outb/... */ 51 51 52 52 /* Module and version information */ 53 - #define WATCHDOG_VERSION "1.01" 54 - #define WATCHDOG_DATE "02 Sep 2005" 53 + #define WATCHDOG_VERSION "1.02" 54 + #define WATCHDOG_DATE "03 Sep 2005" 55 55 #define WATCHDOG_DRIVER_NAME "PCI-PC Watchdog" 56 56 #define WATCHDOG_NAME "pcwd_pci" 57 57 #define PFX WATCHDOG_NAME ": " ··· 70 70 * These are the defines that describe the control status bits for the 71 71 * PCI-PC Watchdog card. 72 72 */ 73 - #define WD_PCI_WTRP 0x01 /* Watchdog Trip status */ 74 - #define WD_PCI_HRBT 0x02 /* Watchdog Heartbeat */ 75 - #define WD_PCI_TTRP 0x04 /* Temperature Trip status */ 73 + /* Port 1 : Control Status #1 */ 74 + #define WD_PCI_WTRP 0x01 /* Watchdog 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 87 /* according to documentation max. time to process a command for the pci 78 88 * watchdog card is 100 ms, so we give it 150 ms to do it's job */ 79 89 #define PCI_COMMAND_TIMEOUT 150 80 90 81 91 /* Watchdog's internal commands */ 82 - #define CMD_GET_STATUS 0x04 83 - #define CMD_GET_FIRMWARE_VERSION 0x08 84 - #define CMD_READ_WATCHDOG_TIMEOUT 0x18 85 - #define CMD_WRITE_WATCHDOG_TIMEOUT 0x19 92 + #define CMD_GET_STATUS 0x04 93 + #define CMD_GET_FIRMWARE_VERSION 0x08 94 + #define CMD_READ_WATCHDOG_TIMEOUT 0x18 95 + #define CMD_WRITE_WATCHDOG_TIMEOUT 0x19 96 + #define CMD_GET_CLEAR_RESET_COUNT 0x84 86 97 87 98 /* We can only use 1 card due to the /dev/watchdog restriction */ 88 99 static int cards_found; ··· 102 91 static int temp_panic; 103 92 static unsigned long is_active; 104 93 static char expect_release; 105 - static struct { 106 - int supports_temp; /* Wether or not the card has a temperature device */ 107 - int boot_status; /* The card's boot status */ 108 - unsigned long io_addr; /* The cards I/O address */ 109 - spinlock_t io_lock; 110 - struct pci_dev *pdev; 94 + 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 */ 96 + int boot_status; /* The card's boot status */ 97 + unsigned long io_addr; /* The cards I/O address */ 98 + spinlock_t io_lock; /* the lock for io operations */ 99 + struct pci_dev *pdev; /* the PCI-device */ 111 100 } pcipcwd_private; 112 101 113 102 /* module parameters */ 103 + #define QUIET 0 /* Default */ 104 + #define VERBOSE 1 /* Verbose */ 105 + #define DEBUG 2 /* print fancy stuff too */ 106 + static int debug = QUIET; 107 + module_param(debug, int, 0); 108 + MODULE_PARM_DESC(debug, "Debug level: 0=Quiet, 1=Verbose, 2=Debug (default=0)"); 109 + 114 110 #define WATCHDOG_HEARTBEAT 2 /* 2 sec default heartbeat */ 115 111 static int heartbeat = WATCHDOG_HEARTBEAT; 116 112 module_param(heartbeat, int, 0); ··· 135 117 { 136 118 int got_response, count; 137 119 120 + if (debug >= DEBUG) 121 + printk(KERN_DEBUG PFX "sending following data cmd=0x%02x msb=0x%02x lsb=0x%02x\n", 122 + cmd, *msb, *lsb); 123 + 138 124 spin_lock(&pcipcwd_private.io_lock); 139 125 /* If a command requires data it should be written first. 140 126 * Data for commands with 8 bits of data should be written to port 4. ··· 153 131 /* wait till the pci card processed the command, signaled by 154 132 * the WRSP bit in port 2 and give it a max. timeout of 155 133 * PCI_COMMAND_TIMEOUT to process */ 156 - got_response = inb_p(pcipcwd_private.io_addr + 2) & 0x40; 134 + got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; 157 135 for (count = 0; (count < PCI_COMMAND_TIMEOUT) && (!got_response); count++) { 158 136 mdelay(1); 159 - got_response = inb_p(pcipcwd_private.io_addr + 2) & 0x40; 137 + got_response = inb_p(pcipcwd_private.io_addr + 2) & WD_PCI_WRSP; 138 + } 139 + 140 + if (debug >= DEBUG) { 141 + if (got_response) { 142 + printk(KERN_DEBUG PFX "time to process command was: %d ms\n", 143 + count); 144 + } else { 145 + printk(KERN_DEBUG PFX "card did not respond on command!\n"); 146 + } 160 147 } 161 148 162 149 if (got_response) { ··· 175 144 176 145 /* clear WRSP bit */ 177 146 inb_p(pcipcwd_private.io_addr + 6); 147 + 148 + if (debug >= DEBUG) 149 + printk(KERN_DEBUG PFX "received following data for cmd=0x%02x: msb=0x%02x lsb=0x%02x\n", 150 + cmd, *msb, *lsb); 178 151 } 152 + 179 153 spin_unlock(&pcipcwd_private.io_lock); 180 154 181 155 return got_response; 156 + } 157 + 158 + static inline void pcipcwd_check_temperature_support(void) 159 + { 160 + if (inb_p(pcipcwd_private.io_addr) != 0xF0) 161 + pcipcwd_private.supports_temp = 1; 162 + } 163 + 164 + static int pcipcwd_get_option_switches(void) 165 + { 166 + int option_switches; 167 + 168 + option_switches = inb_p(pcipcwd_private.io_addr + 3); 169 + return option_switches; 170 + } 171 + 172 + static void pcipcwd_show_card_info(void) 173 + { 174 + int got_fw_rev, fw_rev_major, fw_rev_minor; 175 + char fw_ver_str[20]; /* The cards firmware version */ 176 + int option_switches; 177 + 178 + got_fw_rev = send_command(CMD_GET_FIRMWARE_VERSION, &fw_rev_major, &fw_rev_minor); 179 + if (got_fw_rev) { 180 + sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); 181 + } else { 182 + sprintf(fw_ver_str, "<card no answer>"); 183 + } 184 + 185 + /* Get switch settings */ 186 + option_switches = pcipcwd_get_option_switches(); 187 + 188 + printk(KERN_INFO PFX "Found card at port 0x%04x (Firmware: %s) %s temp option\n", 189 + (int) pcipcwd_private.io_addr, fw_ver_str, 190 + (pcipcwd_private.supports_temp ? "with" : "without")); 191 + 192 + printk(KERN_INFO PFX "Option switches (0x%02x): Temperature Reset Enable=%s, Power On Delay=%s\n", 193 + option_switches, 194 + ((option_switches & 0x10) ? "ON" : "OFF"), 195 + ((option_switches & 0x08) ? "ON" : "OFF")); 196 + 197 + if (pcipcwd_private.boot_status & WDIOF_CARDRESET) 198 + printk(KERN_INFO PFX "Previous reset was caused by the Watchdog card\n"); 199 + 200 + if (pcipcwd_private.boot_status & WDIOF_OVERHEAT) 201 + printk(KERN_INFO PFX "Card sensed a CPU Overheat\n"); 202 + 203 + if (pcipcwd_private.boot_status == 0) 204 + printk(KERN_INFO PFX "No previous trip detected - Cold boot or reset\n"); 182 205 } 183 206 184 207 static int pcipcwd_start(void) ··· 246 161 stat_reg = inb_p(pcipcwd_private.io_addr + 2); 247 162 spin_unlock(&pcipcwd_private.io_lock); 248 163 249 - if (stat_reg & 0x10) { 164 + if (stat_reg & WD_PCI_WDIS) { 250 165 printk(KERN_ERR PFX "Card timer not enabled\n"); 251 166 return -1; 252 167 } 168 + 169 + if (debug >= VERBOSE) 170 + printk(KERN_DEBUG PFX "Watchdog started\n"); 253 171 254 172 return 0; 255 173 } ··· 271 183 stat_reg = inb_p(pcipcwd_private.io_addr + 2); 272 184 spin_unlock(&pcipcwd_private.io_lock); 273 185 274 - if (!(stat_reg & 0x10)) { 186 + if (!(stat_reg & WD_PCI_WDIS)) { 275 187 printk(KERN_ERR PFX "Card did not acknowledge disable attempt\n"); 276 188 return -1; 277 189 } 190 + 191 + if (debug >= VERBOSE) 192 + printk(KERN_DEBUG PFX "Watchdog stopped\n"); 278 193 279 194 return 0; 280 195 } ··· 285 194 static int pcipcwd_keepalive(void) 286 195 { 287 196 /* Re-trigger watchdog by writing to port 0 */ 288 - outb_p(0x42, pcipcwd_private.io_addr); 197 + outb_p(0x42, pcipcwd_private.io_addr); /* send out any data */ 198 + 199 + if (debug >= DEBUG) 200 + printk(KERN_DEBUG PFX "Watchdog keepalive signal send\n"); 201 + 289 202 return 0; 290 203 } 291 204 ··· 305 210 send_command(CMD_WRITE_WATCHDOG_TIMEOUT, &t_msb, &t_lsb); 306 211 307 212 heartbeat = t; 213 + if (debug >= VERBOSE) 214 + printk(KERN_DEBUG PFX "New heartbeat: %d\n", 215 + heartbeat); 216 + 308 217 return 0; 309 218 } 310 219 311 220 static int pcipcwd_get_status(int *status) 312 221 { 313 - int new_status; 222 + int control_status; 314 223 315 224 *status=0; 316 - new_status = inb_p(pcipcwd_private.io_addr + 1); 317 - if (new_status & WD_PCI_WTRP) 225 + control_status = inb_p(pcipcwd_private.io_addr + 1); 226 + if (control_status & WD_PCI_WTRP) 318 227 *status |= WDIOF_CARDRESET; 319 - if (new_status & WD_PCI_TTRP) { 228 + if (control_status & WD_PCI_TTRP) { 320 229 *status |= WDIOF_OVERHEAT; 321 230 if (temp_panic) 322 231 panic(PFX "Temperature overheat trip!\n"); 323 232 } 233 + 234 + if (debug >= DEBUG) 235 + printk(KERN_DEBUG PFX "Control Status #1: 0x%02x\n", 236 + control_status); 324 237 325 238 return 0; 326 239 } 327 240 328 241 static int pcipcwd_clear_status(void) 329 242 { 330 - outb_p(0x01, pcipcwd_private.io_addr + 1); 243 + int control_status; 244 + int msb; 245 + int reset_counter; 246 + 247 + if (debug >= VERBOSE) 248 + printk(KERN_INFO PFX "clearing watchdog trip status & LED\n"); 249 + 250 + control_status = inb_p(pcipcwd_private.io_addr + 1); 251 + 252 + if (debug >= DEBUG) { 253 + printk(KERN_DEBUG PFX "status was: 0x%02x\n", control_status); 254 + printk(KERN_DEBUG PFX "sending: 0x%02x\n", 255 + (control_status & WD_PCI_R2DS) | WD_PCI_WTRP); 256 + } 257 + 258 + /* clear trip status & LED and keep mode of relay 2 */ 259 + outb_p((control_status & WD_PCI_R2DS) | WD_PCI_WTRP, pcipcwd_private.io_addr + 1); 260 + 261 + /* clear reset counter */ 262 + msb=0; 263 + reset_counter=0xff; 264 + send_command(CMD_GET_CLEAR_RESET_COUNT, &msb, &reset_counter); 265 + 266 + if (debug >= DEBUG) { 267 + printk(KERN_DEBUG PFX "reset count was: 0x%02x\n", 268 + reset_counter); 269 + } 270 + 331 271 return 0; 332 272 } 333 273 ··· 372 242 if (!pcipcwd_private.supports_temp) 373 243 return -ENODEV; 374 244 245 + *temperature = inb_p(pcipcwd_private.io_addr); 246 + 375 247 /* 376 248 * Convert celsius to fahrenheit, since this was 377 249 * the decided 'standard' for this return value. 378 250 */ 379 - *temperature = ((inb_p(pcipcwd_private.io_addr)) * 9 / 5) + 32; 251 + *temperature = (*temperature * 9 / 5) + 32; 252 + 253 + if (debug >= DEBUG) { 254 + printk(KERN_DEBUG PFX "temperature is: %d F\n", 255 + *temperature); 256 + } 380 257 381 258 return 0; 382 259 } ··· 393 256 */ 394 257 395 258 static ssize_t pcipcwd_write(struct file *file, const char __user *data, 396 - size_t len, loff_t *ppos) 259 + size_t len, loff_t *ppos) 397 260 { 398 261 /* See if we got the magic character 'V' and reload the timer */ 399 262 if (len) { ··· 518 381 static int pcipcwd_open(struct inode *inode, struct file *file) 519 382 { 520 383 /* /dev/watchdog can only be opened once */ 521 - if (test_and_set_bit(0, &is_active)) 384 + if (test_and_set_bit(0, &is_active)) { 385 + if (debug >= VERBOSE) 386 + printk(KERN_ERR PFX "Attempt to open already opened device.\n"); 522 387 return -EBUSY; 388 + } 523 389 524 390 /* Activate */ 525 391 pcipcwd_start(); ··· 632 492 * Init & exit routines 633 493 */ 634 494 635 - static inline void check_temperature_support(void) 636 - { 637 - if (inb_p(pcipcwd_private.io_addr) != 0xF0) 638 - pcipcwd_private.supports_temp = 1; 639 - } 640 - 641 495 static int __devinit pcipcwd_card_init(struct pci_dev *pdev, 642 496 const struct pci_device_id *ent) 643 497 { 644 498 int ret = -EIO; 645 - int got_fw_rev, fw_rev_major, fw_rev_minor; 646 - char fw_ver_str[20]; 647 - char option_switches; 648 499 649 500 cards_found++; 650 501 if (cards_found == 1) ··· 677 546 pcipcwd_stop(); 678 547 679 548 /* Check whether or not the card supports the temperature device */ 680 - check_temperature_support(); 549 + pcipcwd_check_temperature_support(); 681 550 682 - /* Get the Firmware Version */ 683 - got_fw_rev = send_command(CMD_GET_FIRMWARE_VERSION, &fw_rev_major, &fw_rev_minor); 684 - if (got_fw_rev) { 685 - sprintf(fw_ver_str, "%u.%02u", fw_rev_major, fw_rev_minor); 686 - } else { 687 - sprintf(fw_ver_str, "<card no answer>"); 688 - } 689 - 690 - /* Get switch settings */ 691 - option_switches = inb_p(pcipcwd_private.io_addr + 3); 692 - 693 - printk(KERN_INFO PFX "Found card at port 0x%04x (Firmware: %s) %s temp option\n", 694 - (int) pcipcwd_private.io_addr, fw_ver_str, 695 - (pcipcwd_private.supports_temp ? "with" : "without")); 696 - 697 - printk(KERN_INFO PFX "Option switches (0x%02x): Temperature Reset Enable=%s, Power On Delay=%s\n", 698 - option_switches, 699 - ((option_switches & 0x10) ? "ON" : "OFF"), 700 - ((option_switches & 0x08) ? "ON" : "OFF")); 701 - 702 - if (pcipcwd_private.boot_status & WDIOF_CARDRESET) 703 - printk(KERN_INFO PFX "Previous reset was caused by the Watchdog card\n"); 704 - 705 - if (pcipcwd_private.boot_status & WDIOF_OVERHEAT) 706 - printk(KERN_INFO PFX "Card sensed a CPU Overheat\n"); 707 - 708 - if (pcipcwd_private.boot_status == 0) 709 - printk(KERN_INFO PFX "No previous trip detected - Cold boot or reset\n"); 551 + /* Show info about the card itself */ 552 + pcipcwd_show_card_info(); 710 553 711 554 /* Check that the heartbeat value is within it's range ; if not reset to the default */ 712 555 if (pcipcwd_set_heartbeat(heartbeat)) { ··· 761 656 762 657 static int __init pcipcwd_init_module(void) 763 658 { 764 - spin_lock_init (&pcipcwd_private.io_lock); 659 + spin_lock_init(&pcipcwd_private.io_lock); 765 660 766 661 return pci_register_driver(&pcipcwd_driver); 767 662 }
+1 -1
drivers/connector/connector.c
··· 69 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 74 struct cn_callback_entry *__cbq; 75 75 unsigned int size;
+95 -83
drivers/firmware/dell_rbu.c
··· 50 50 MODULE_AUTHOR("Abhay Salunke <abhay_salunke@dell.com>"); 51 51 MODULE_DESCRIPTION("Driver for updating BIOS image on DELL systems"); 52 52 MODULE_LICENSE("GPL"); 53 - MODULE_VERSION("2.0"); 53 + MODULE_VERSION("3.0"); 54 54 55 55 #define BIOS_SCAN_LIMIT 0xffffffff 56 56 #define MAX_IMAGE_LENGTH 16 ··· 62 62 int dma_alloc; 63 63 spinlock_t lock; 64 64 unsigned long packet_read_count; 65 - unsigned long packet_write_count; 66 65 unsigned long num_packets; 67 66 unsigned long packetsize; 67 + unsigned long imagesize; 68 68 int entry_created; 69 69 } rbu_data; 70 70 71 71 static char image_type[MAX_IMAGE_LENGTH + 1] = "mono"; 72 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 76 struct packet_data { 76 77 struct list_head list; ··· 89 88 static void init_packet_head(void) 90 89 { 91 90 INIT_LIST_HEAD(&packet_data_head.list); 92 - rbu_data.packet_write_count = 0; 93 91 rbu_data.packet_read_count = 0; 94 92 rbu_data.num_packets = 0; 95 93 rbu_data.packetsize = 0; 94 + rbu_data.imagesize = 0; 96 95 } 97 96 98 - static int fill_last_packet(void *data, size_t length) 99 - { 100 - struct list_head *ptemp_list; 101 - struct packet_data *packet = NULL; 102 - int packet_count = 0; 103 - 104 - pr_debug("fill_last_packet: entry \n"); 105 - 106 - if (!rbu_data.num_packets) { 107 - pr_debug("fill_last_packet: num_packets=0\n"); 108 - return -ENOMEM; 109 - } 110 - 111 - packet_count = rbu_data.num_packets; 112 - 113 - ptemp_list = (&packet_data_head.list)->prev; 114 - 115 - packet = list_entry(ptemp_list, struct packet_data, list); 116 - 117 - if ((rbu_data.packet_write_count + length) > rbu_data.packetsize) { 118 - pr_debug("dell_rbu:%s: packet size data " 119 - "overrun\n", __FUNCTION__); 120 - return -EINVAL; 121 - } 122 - 123 - pr_debug("fill_last_packet : buffer = %p\n", packet->data); 124 - 125 - memcpy((packet->data + rbu_data.packet_write_count), data, length); 126 - 127 - if ((rbu_data.packet_write_count + length) == rbu_data.packetsize) { 128 - /* 129 - * this was the last data chunk in the packet 130 - * so reinitialize the packet data counter to zero 131 - */ 132 - rbu_data.packet_write_count = 0; 133 - } else 134 - rbu_data.packet_write_count += length; 135 - 136 - pr_debug("fill_last_packet: exit \n"); 137 - return 0; 138 - } 139 - 140 - static int create_packet(size_t length) 97 + static int create_packet(void *data, size_t length) 141 98 { 142 99 struct packet_data *newpacket; 143 100 int ordernum = 0; ··· 145 186 INIT_LIST_HEAD(&newpacket->list); 146 187 list_add_tail(&newpacket->list, &packet_data_head.list); 147 188 /* 148 - * packets have fixed size 189 + * packets may not have fixed size 149 190 */ 150 - newpacket->length = rbu_data.packetsize; 191 + newpacket->length = length; 192 + 193 + memcpy(newpacket->data, data, length); 151 194 152 195 pr_debug("create_packet: exit \n"); 153 196 ··· 159 198 static int packetize_data(void *data, size_t length) 160 199 { 161 200 int rc = 0; 162 - 163 - if (!rbu_data.packet_write_count) { 164 - if ((rc = create_packet(length))) 165 - return rc; 201 + int done = 0; 202 + int packet_length; 203 + u8 *temp; 204 + u8 *end = (u8 *) data + length; 205 + pr_debug("packetize_data: data length %d\n", length); 206 + if (!rbu_data.packetsize) { 207 + printk(KERN_WARNING 208 + "dell_rbu: packetsize not specified\n"); 209 + return -EIO; 166 210 } 167 - if ((rc = fill_last_packet(data, length))) 168 - return rc; 211 + 212 + temp = (u8 *) data; 213 + 214 + /* packetize the hunk */ 215 + while (!done) { 216 + if ((temp + rbu_data.packetsize) < end) 217 + packet_length = rbu_data.packetsize; 218 + else { 219 + /* this is the last packet */ 220 + packet_length = end - temp; 221 + done = 1; 222 + } 223 + 224 + if ((rc = create_packet(temp, packet_length))) 225 + return rc; 226 + 227 + pr_debug("%lu:%lu\n", temp, (end - temp)); 228 + temp += packet_length; 229 + } 230 + 231 + rbu_data.imagesize = length; 169 232 170 233 return rc; 171 234 } ··· 228 243 return bytes_copied; 229 244 } 230 245 231 - static int packet_read_list(char *data, size_t *pread_length) 246 + static int packet_read_list(char *data, size_t * pread_length) 232 247 { 233 248 struct list_head *ptemp_list; 234 249 int temp_count = 0; ··· 288 303 newpacket->ordernum); 289 304 kfree(newpacket); 290 305 } 291 - rbu_data.packet_write_count = 0; 292 306 rbu_data.packet_read_count = 0; 293 307 rbu_data.num_packets = 0; 294 - rbu_data.packetsize = 0; 308 + rbu_data.imagesize = 0; 295 309 } 296 310 297 311 /* ··· 409 425 size_t bytes_left; 410 426 size_t data_length; 411 427 char *ptempBuf = buffer; 412 - unsigned long imagesize; 413 428 414 429 /* check to see if we have something to return */ 415 430 if (rbu_data.num_packets == 0) { ··· 417 434 goto read_rbu_data_exit; 418 435 } 419 436 420 - imagesize = rbu_data.num_packets * rbu_data.packetsize; 421 - 422 - if (pos > imagesize) { 437 + if (pos > rbu_data.imagesize) { 423 438 retval = 0; 424 439 printk(KERN_WARNING "dell_rbu:read_packet_data: " 425 440 "data underrun\n"); 426 441 goto read_rbu_data_exit; 427 442 } 428 443 429 - bytes_left = imagesize - pos; 444 + bytes_left = rbu_data.imagesize - pos; 430 445 data_length = min(bytes_left, count); 431 446 432 447 if ((retval = packet_read_list(ptempBuf, &data_length)) < 0) 433 448 goto read_rbu_data_exit; 434 449 435 - if ((pos + count) > imagesize) { 450 + if ((pos + count) > rbu_data.imagesize) { 436 451 rbu_data.packet_read_count = 0; 437 452 /* this was the last copy */ 438 453 retval = bytes_left; ··· 480 499 } 481 500 482 501 static ssize_t read_rbu_data(struct kobject *kobj, char *buffer, 483 - loff_t pos, size_t count) 502 + loff_t pos, size_t count) 484 503 { 485 504 ssize_t ret_count = 0; 486 505 ··· 512 531 memcpy(rbu_data.image_update_buffer, 513 532 fw->data, fw->size); 514 533 } else if (!strcmp(image_type, "packet")) { 515 - if (!rbu_data.packetsize) 516 - rbu_data.packetsize = fw->size; 517 - else if (rbu_data.packetsize != fw->size) { 534 + /* 535 + * we need to free previous packets if a 536 + * new hunk of packets needs to be downloaded 537 + */ 538 + packet_empty_list(); 539 + if (packetize_data(fw->data, fw->size)) 540 + /* Incase something goes wrong when we are 541 + * in middle of packetizing the data, we 542 + * need to free up whatever packets might 543 + * have been created before we quit. 544 + */ 518 545 packet_empty_list(); 519 - rbu_data.packetsize = fw->size; 520 - } 521 - packetize_data(fw->data, fw->size); 522 546 } else 523 547 pr_debug("invalid image type specified.\n"); 524 548 spin_unlock(&rbu_data.lock); ··· 539 553 } 540 554 541 555 static ssize_t read_rbu_image_type(struct kobject *kobj, char *buffer, 542 - loff_t pos, size_t count) 556 + loff_t pos, size_t count) 543 557 { 544 558 int size = 0; 545 559 if (!pos) ··· 548 562 } 549 563 550 564 static ssize_t write_rbu_image_type(struct kobject *kobj, char *buffer, 551 - loff_t pos, size_t count) 565 + loff_t pos, size_t count) 552 566 { 553 567 int rc = count; 554 568 int req_firm_rc = 0; ··· 607 621 return rc; 608 622 } 609 623 624 + static ssize_t read_rbu_packet_size(struct kobject *kobj, char *buffer, 625 + loff_t pos, size_t count) 626 + { 627 + int size = 0; 628 + if (!pos) { 629 + spin_lock(&rbu_data.lock); 630 + size = sprintf(buffer, "%lu\n", rbu_data.packetsize); 631 + spin_unlock(&rbu_data.lock); 632 + } 633 + return size; 634 + } 635 + 636 + static ssize_t write_rbu_packet_size(struct kobject *kobj, char *buffer, 637 + loff_t pos, size_t count) 638 + { 639 + unsigned long temp; 640 + spin_lock(&rbu_data.lock); 641 + packet_empty_list(); 642 + sscanf(buffer, "%lu", &temp); 643 + if (temp < 0xffffffff) 644 + rbu_data.packetsize = temp; 645 + 646 + spin_unlock(&rbu_data.lock); 647 + return count; 648 + } 649 + 610 650 static struct bin_attribute rbu_data_attr = { 611 - .attr = { 612 - .name = "data", 613 - .owner = THIS_MODULE, 614 - .mode = 0444, 615 - }, 651 + .attr = {.name = "data",.owner = THIS_MODULE,.mode = 0444}, 616 652 .read = read_rbu_data, 617 653 }; 618 654 619 655 static struct bin_attribute rbu_image_type_attr = { 620 - .attr = { 621 - .name = "image_type", 622 - .owner = THIS_MODULE, 623 - .mode = 0644, 624 - }, 656 + .attr = {.name = "image_type",.owner = THIS_MODULE,.mode = 0644}, 625 657 .read = read_rbu_image_type, 626 658 .write = write_rbu_image_type, 659 + }; 660 + 661 + static struct bin_attribute rbu_packet_size_attr = { 662 + .attr = {.name = "packet_size",.owner = THIS_MODULE,.mode = 0644}, 663 + .read = read_rbu_packet_size, 664 + .write = write_rbu_packet_size, 627 665 }; 628 666 629 667 static int __init dcdrbu_init(void) ··· 667 657 668 658 sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_data_attr); 669 659 sysfs_create_bin_file(&rbu_device->dev.kobj, &rbu_image_type_attr); 660 + sysfs_create_bin_file(&rbu_device->dev.kobj, 661 + &rbu_packet_size_attr); 670 662 671 663 rc = request_firmware_nowait(THIS_MODULE, FW_ACTION_NOHOTPLUG, 672 664 "dell_rbu", &rbu_device->dev, &context, callbackfn_rbu);
+8
drivers/ide/ide-io.c
··· 1101 1101 ide_hwif_t *hwif; 1102 1102 struct request *rq; 1103 1103 ide_startstop_t startstop; 1104 + int loops = 0; 1104 1105 1105 1106 /* for atari only: POSSIBLY BROKEN HERE(?) */ 1106 1107 ide_get_lock(ide_intr, hwgroup); ··· 1154 1153 /* no more work for this hwgroup (for now) */ 1155 1154 return; 1156 1155 } 1156 + again: 1157 1157 hwif = HWIF(drive); 1158 1158 if (hwgroup->hwif->sharing_irq && 1159 1159 hwif != hwgroup->hwif && ··· 1194 1192 * though. I hope that doesn't happen too much, hopefully not 1195 1193 * unless the subdriver triggers such a thing in its own PM 1196 1194 * state machine. 1195 + * 1196 + * We count how many times we loop here to make sure we service 1197 + * all drives in the hwgroup without looping for ever 1197 1198 */ 1198 1199 if (drive->blocked && !blk_pm_request(rq) && !(rq->flags & REQ_PREEMPT)) { 1200 + drive = drive->next ? drive->next : hwgroup->drive; 1201 + if (loops++ < 4 && !blk_queue_plugged(drive->queue)) 1202 + goto again; 1199 1203 /* We clear busy, there should be no pending ATA command at this point. */ 1200 1204 hwgroup->busy = 0; 1201 1205 break;
+1 -1
drivers/ieee1394/raw1394.c
··· 98 98 99 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 103 struct pending_request *req; 104 104
+1 -1
drivers/infiniband/core/mad.c
··· 783 783 u32 remote_qpn, u16 pkey_index, 784 784 struct ib_ah *ah, int rmpp_active, 785 785 int hdr_len, int data_len, 786 - unsigned int __nocast gfp_mask) 786 + gfp_t gfp_mask) 787 787 { 788 788 struct ib_mad_agent_private *mad_agent_priv; 789 789 struct ib_mad_send_buf *send_buf;
+3 -3
drivers/infiniband/core/sa_query.c
··· 574 574 int ib_sa_path_rec_get(struct ib_device *device, u8 port_num, 575 575 struct ib_sa_path_rec *rec, 576 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 578 void (*callback)(int status, 579 579 struct ib_sa_path_rec *resp, 580 580 void *context), ··· 676 676 int ib_sa_service_rec_query(struct ib_device *device, u8 port_num, u8 method, 677 677 struct ib_sa_service_rec *rec, 678 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 680 void (*callback)(int status, 681 681 struct ib_sa_service_rec *resp, 682 682 void *context), ··· 759 759 u8 method, 760 760 struct ib_sa_mcmember_rec *rec, 761 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 763 void (*callback)(int status, 764 764 struct ib_sa_mcmember_rec *resp, 765 765 void *context),
+1 -1
drivers/md/dm-crypt.c
··· 96 96 /* 97 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 101 return alloc_page(gfp_mask); 102 102 }
+1 -1
drivers/md/dm-io.c
··· 32 32 static unsigned _num_ios; 33 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 37 return kmalloc(sizeof(struct io), gfp_mask); 38 38 }
+1 -1
drivers/md/dm-raid1.c
··· 122 122 /* FIXME move this */ 123 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 127 return kmalloc(sizeof(struct region), gfp_mask); 128 128 }
+1 -1
drivers/md/multipath.c
··· 38 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 43 struct multipath_bh *mpb; 44 44 mpb = kmalloc(sizeof(*mpb), gfp_flags);
+2 -2
drivers/md/raid1.c
··· 52 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 57 struct pool_info *pi = data; 58 58 r1bio_t *r1_bio; ··· 79 79 #define RESYNC_PAGES ((RESYNC_BLOCK_SIZE + PAGE_SIZE-1) / PAGE_SIZE) 80 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 84 struct pool_info *pi = data; 85 85 struct page *page;
+2 -2
drivers/md/raid10.c
··· 47 47 48 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 52 conf_t *conf = data; 53 53 r10bio_t *r10_bio; ··· 81 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 86 conf_t *conf = data; 87 87 struct page *page;
+2 -2
drivers/media/video/bttv-cards.c
··· 2393 2393 .tuner = 0, 2394 2394 .tuner_type = TUNER_LG_TDVS_H062F, 2395 2395 .tuner_addr = ADDR_UNSET, 2396 - .video_inputs = 2, 2396 + .video_inputs = 3, 2397 2397 .audio_inputs = 1, 2398 2398 .svhs = 2, 2399 - .muxsel = { 2, 3 }, 2399 + .muxsel = { 2, 3, 1 }, 2400 2400 .gpiomask = 0x00e00007, 2401 2401 .audiomux = { 0x00400005, 0, 0x00000001, 0, 0x00c00007, 0 }, 2402 2402 .no_msp34xx = 1,
+11 -13
drivers/mfd/ucb1x00-core.c
··· 457 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 471 static int ucb1x00_probe(struct mcp *mcp) 461 472 { 462 473 struct ucb1x00 *ucb; ··· 557 546 class_device_unregister(&ucb->cdev); 558 547 } 559 548 560 - static void ucb1x00_release(struct class_device *dev) 561 - { 562 - struct ucb1x00 *ucb = classdev_to_ucb1x00(dev); 563 - kfree(ucb); 564 - } 565 - 566 - static struct class ucb1x00_class = { 567 - .name = "ucb1x00", 568 - .release = ucb1x00_release, 569 - }; 570 - 571 549 int ucb1x00_register_driver(struct ucb1x00_driver *drv) 572 550 { 573 551 struct ucb1x00 *ucb; ··· 641 641 642 642 module_init(ucb1x00_init); 643 643 module_exit(ucb1x00_exit); 644 - 645 - EXPORT_SYMBOL(ucb1x00_class); 646 644 647 645 EXPORT_SYMBOL(ucb1x00_io_set_dir); 648 646 EXPORT_SYMBOL(ucb1x00_io_write);
-2
drivers/mfd/ucb1x00.h
··· 106 106 void (*fn)(int, void *); 107 107 }; 108 108 109 - extern struct class ucb1x00_class; 110 - 111 109 struct ucb1x00 { 112 110 spinlock_t lock; 113 111 struct mcp *mcp;
+3 -2
drivers/net/bonding/bond_main.c
··· 1289 1289 /* 1290 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 1295 struct dev_mc_list *dmi, *new_dmi; 1295 1296 1296 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 1300 if (!new_dmi) { 1300 1301 /* FIXME: Potential memory leak !!! */
+18 -206
drivers/net/e100.c
··· 903 903 904 904 static void e100_get_defaults(struct nic *nic) 905 905 { 906 - struct param_range rfds = { .min = 16, .max = 256, .count = 256 }; 907 - struct param_range cbs = { .min = 64, .max = 256, .count = 128 }; 906 + struct param_range rfds = { .min = 16, .max = 256, .count = 64 }; 907 + struct param_range cbs = { .min = 64, .max = 256, .count = 64 }; 908 908 909 909 pci_read_config_byte(nic->pdev, PCI_REVISION_ID, &nic->rev_id); 910 910 /* MAC type is encoded as rev ID; exception: ICH is treated as 82559 */ ··· 1007 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 1010 static void e100_load_ucode(struct nic *nic, struct cb *cb, struct sk_buff *skb) 1149 1011 { 1150 - /* *INDENT-OFF* */ 1151 - static struct { 1152 - u32 ucode[UCODE_SIZE + 1]; 1153 - u8 mac; 1154 - u8 timer_dword; 1155 - u8 bundle_dword; 1156 - u8 min_size_dword; 1157 - } ucode_opts[] = { 1158 - { D101M_B_RCVBUNDLE_UCODE, 1159 - mac_82559_D101M, 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* */ 1012 + int i; 1013 + static const u32 ucode[UCODE_SIZE] = { 1014 + /* NFS packets are misinterpreted as TCO packets and 1015 + * incorrectly routed to the BMC over SMBus. This 1016 + * microcode patch checks the fragmented IP bit in the 1017 + * NFS/UDP header to distinguish between NFS and TCO. */ 1018 + 0x0EF70E36, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF, 0x1FFF1FFF, 1019 + 0x1FFF1FFF, 0x00906E41, 0x00800E3C, 0x00E00E39, 0x00000000, 1020 + 0x00906EFD, 0x00900EFD, 0x00E00EF8, 1021 + }; 1181 1022 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 - 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 1031 static void e100_setup_iaaddr(struct nic *nic, struct cb *cb,
+1 -1
drivers/net/ns83820.c
··· 584 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 589 struct ns83820 *dev = PRIV(ndev); 590 590 unsigned i;
+1 -1
drivers/net/sungem.h
··· 1036 1036 #define ALIGNED_RX_SKB_ADDR(addr) \ 1037 1037 ((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr)) 1038 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 1041 struct sk_buff *skb = alloc_skb(size + 64, gfp_flags); 1042 1042
+3
drivers/pcmcia/cs.c
··· 689 689 schedule(); 690 690 try_to_freeze(); 691 691 } 692 + /* make sure we are running before we exit */ 693 + set_current_state(TASK_RUNNING); 694 + 692 695 remove_wait_queue(&skt->thread_wait, &wait); 693 696 694 697 /* remove from the device core */
+4 -1
drivers/pcmcia/ti113x.h
··· 873 873 * Some fixup code to make everybody happy (TM). 874 874 */ 875 875 876 + #ifdef CONFIG_CARDBUS 876 877 /** 877 878 * set/clear various test bits: 878 879 * Defaults to clear the bit. ··· 928 927 config_writeb(socket, ENE_TEST_C9, test_c9); 929 928 } 930 929 931 - 932 930 static int ene_override(struct yenta_socket *socket) 933 931 { 934 932 /* install tune_bridge() function */ ··· 935 935 936 936 return ti1250_override(socket); 937 937 } 938 + #else 939 + # define ene_override ti1250_override 940 + #endif 938 941 939 942 #endif /* _LINUX_TI113X_H */ 940 943
+1 -1
drivers/s390/cio/device.c
··· 544 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 549 return dev ? to_ccwdev(dev) : NULL; 550 550 }
+1 -1
drivers/s390/scsi/zfcp_aux.c
··· 833 833 } 834 834 835 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 838 return kmalloc((size_t) size, gfp_mask); 839 839 }
+7 -7
drivers/scsi/sata_nv.c
··· 29 29 * NV-specific details such as register offsets, SATA phy location, 30 30 * hotplug info, etc. 31 31 * 32 + * 0.09 33 + * - Fixed bug introduced by 0.08's MCP51 and MCP55 support. 32 34 * 33 35 * 0.08 34 36 * - Added support for MCP51 and MCP55. ··· 134 132 GENERIC, 135 133 NFORCE2, 136 134 NFORCE3, 137 - CK804, 138 - MCP51, 139 - MCP55 135 + CK804 140 136 }; 141 137 142 138 static struct pci_device_id nv_pci_tbl[] = { ··· 153 153 { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2, 154 154 PCI_ANY_ID, PCI_ANY_ID, 0, 0, CK804 }, 155 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 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 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 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 163 { PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, 164 164 PCI_ANY_ID, PCI_ANY_ID, 165 165 PCI_CLASS_STORAGE_IDE<<8, 0xffff00, GENERIC },
+37 -11
drivers/serial/imx.c
··· 73 73 struct uart_port port; 74 74 struct timer_list timer; 75 75 unsigned int old_status; 76 - int txirq,rxirq; 76 + int txirq,rxirq,rtsirq; 77 77 }; 78 78 79 79 /* ··· 179 179 180 180 if(UTS((u32)sport->port.membase) & UTS_TXEMPTY) 181 181 imx_transmit_buffer(sport); 182 + } 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; 182 198 } 183 199 184 200 static irqreturn_t imx_txint(int irq, void *dev_id, struct pt_regs *regs) ··· 399 383 */ 400 384 retval = request_irq(sport->rxirq, imx_rxint, 0, 401 385 DRIVER_NAME, sport); 402 - if (retval) goto error_out2; 386 + if (retval) goto error_out1; 403 387 404 388 retval = request_irq(sport->txirq, imx_txint, 0, 405 - "imx-uart", sport); 406 - if (retval) goto error_out1; 389 + DRIVER_NAME, sport); 390 + if (retval) goto error_out2; 391 + 392 + retval = request_irq(sport->rtsirq, imx_rtsint, 0, 393 + DRIVER_NAME, sport); 394 + if (retval) goto error_out3; 395 + set_irq_type(sport->rtsirq, IRQT_BOTHEDGE); 407 396 408 397 /* 409 398 * Finally, clear and enable interrupts 410 399 */ 411 400 401 + USR1((u32)sport->port.membase) = USR1_RTSD; 412 402 UCR1((u32)sport->port.membase) |= 413 - (UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_UARTEN); 403 + (UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN); 414 404 415 405 UCR2((u32)sport->port.membase) |= (UCR2_RXEN | UCR2_TXEN); 416 406 /* ··· 428 406 429 407 return 0; 430 408 431 - error_out1: 432 - free_irq(sport->rxirq, sport); 433 - error_out2: 409 + error_out3: 434 410 free_irq(sport->txirq, sport); 411 + error_out2: 412 + free_irq(sport->rxirq, sport); 413 + error_out1: 435 414 return retval; 436 415 } 437 416 ··· 448 425 /* 449 426 * Free the interrupts 450 427 */ 428 + free_irq(sport->rtsirq, sport); 451 429 free_irq(sport->txirq, sport); 452 430 free_irq(sport->rxirq, sport); 453 431 ··· 457 433 */ 458 434 459 435 UCR1((u32)sport->port.membase) &= 460 - ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_UARTEN); 436 + ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN | UCR1_UARTEN); 461 437 } 462 438 463 439 static void ··· 547 523 * disable interrupts and drain transmitter 548 524 */ 549 525 old_ucr1 = UCR1((u32)sport->port.membase); 550 - UCR1((u32)sport->port.membase) &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN); 526 + UCR1((u32)sport->port.membase) &= ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN); 551 527 552 528 while ( !(USR2((u32)sport->port.membase) & USR2_TXDC)) 553 529 barrier(); ··· 668 644 { 669 645 .txirq = UART1_MINT_TX, 670 646 .rxirq = UART1_MINT_RX, 647 + .rtsirq = UART1_MINT_RTS, 671 648 .port = { 672 649 .type = PORT_IMX, 673 650 .iotype = SERIAL_IO_MEM, ··· 684 659 }, { 685 660 .txirq = UART2_MINT_TX, 686 661 .rxirq = UART2_MINT_RX, 662 + .rtsirq = UART2_MINT_RTS, 687 663 .port = { 688 664 .type = PORT_IMX, 689 665 .iotype = SERIAL_IO_MEM, ··· 764 738 765 739 UCR1((u32)sport->port.membase) = 766 740 (old_ucr1 | UCR1_UARTCLKEN | UCR1_UARTEN) 767 - & ~(UCR1_TXMPTYEN | UCR1_RRDYEN); 741 + & ~(UCR1_TXMPTYEN | UCR1_RRDYEN | UCR1_RTSDEN); 768 742 UCR2((u32)sport->port.membase) = old_ucr2 | UCR2_TXEN; 769 743 770 744 /*
+1 -1
drivers/serial/pxa.c
··· 499 499 /* 500 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 504 up->port.read_status_mask = UART_LSR_OE | UART_LSR_THRE | UART_LSR_DR; 505 505 if (termios->c_iflag & INPCK)
+11 -7
drivers/serial/s3c2410.c
··· 1092 1092 1093 1093 static int probe_index = 0; 1094 1094 1095 - int s3c24xx_serial_probe(struct device *_dev, 1096 - struct s3c24xx_uart_info *info) 1095 + static int s3c24xx_serial_probe(struct device *_dev, 1096 + struct s3c24xx_uart_info *info) 1097 1097 { 1098 1098 struct s3c24xx_uart_port *ourport; 1099 1099 struct platform_device *dev = to_platform_device(_dev); ··· 1120 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 1125 struct uart_port *port = s3c24xx_dev_to_port(_dev); 1126 1126 ··· 1134 1134 1135 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 1140 struct uart_port *port = s3c24xx_dev_to_port(dev); 1140 1141 ··· 1145 1144 return 0; 1146 1145 } 1147 1146 1148 - int s3c24xx_serial_resume(struct device *dev, u32 level) 1147 + static int s3c24xx_serial_resume(struct device *dev, u32 level) 1149 1148 { 1150 1149 struct uart_port *port = s3c24xx_dev_to_port(dev); 1151 1150 struct s3c24xx_uart_port *ourport = to_ourport(port); ··· 1166 1165 #define s3c24xx_serial_resume NULL 1167 1166 #endif 1168 1167 1169 - int s3c24xx_serial_init(struct device_driver *drv, 1170 - struct s3c24xx_uart_info *info) 1168 + static int s3c24xx_serial_init(struct device_driver *drv, 1169 + struct s3c24xx_uart_info *info) 1171 1170 { 1172 1171 dbg("s3c24xx_serial_init(%p,%p)\n", drv, info); 1173 1172 return driver_register(drv); ··· 1236 1235 1237 1236 static struct device_driver s3c2400_serial_drv = { 1238 1237 .name = "s3c2400-uart", 1238 + .owner = THIS_MODULE, 1239 1239 .bus = &platform_bus_type, 1240 1240 .probe = s3c2400_serial_probe, 1241 1241 .remove = s3c24xx_serial_remove, ··· 1340 1338 1341 1339 static struct device_driver s3c2410_serial_drv = { 1342 1340 .name = "s3c2410-uart", 1341 + .owner = THIS_MODULE, 1343 1342 .bus = &platform_bus_type, 1344 1343 .probe = s3c2410_serial_probe, 1345 1344 .remove = s3c24xx_serial_remove, ··· 1502 1499 1503 1500 static struct device_driver s3c2440_serial_drv = { 1504 1501 .name = "s3c2440-uart", 1502 + .owner = THIS_MODULE, 1505 1503 .bus = &platform_bus_type, 1506 1504 .probe = s3c2440_serial_probe, 1507 1505 .remove = s3c24xx_serial_remove,
-1
drivers/serial/sunsab.c
··· 274 274 if (uart_circ_empty(xmit) || uart_tx_stopped(&up->port)) { 275 275 up->interrupt_mask1 |= SAB82532_IMR1_XPR; 276 276 writeb(up->interrupt_mask1, &up->regs->w.imr1); 277 - uart_write_wakeup(&up->port); 278 277 return; 279 278 } 280 279
+2 -3
drivers/serial/sunzilog.c
··· 517 517 if (up->port.info == NULL) 518 518 goto ack_tx_int; 519 519 xmit = &up->port.info->xmit; 520 - if (uart_circ_empty(xmit)) { 521 - uart_write_wakeup(&up->port); 520 + if (uart_circ_empty(xmit)) 522 521 goto ack_tx_int; 523 - } 522 + 524 523 if (uart_tx_stopped(&up->port)) 525 524 goto ack_tx_int; 526 525
+12 -4
drivers/usb/core/devio.c
··· 30 30 * Revision history 31 31 * 22.12.1999 0.1 Initial release (split from proc_usb.c) 32 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 /*****************************************************************************/ ··· 60 58 struct async { 61 59 struct list_head asynclist; 62 60 struct dev_state *ps; 63 - struct task_struct *task; 61 + pid_t pid; 62 + uid_t uid, euid; 64 63 unsigned int signr; 65 64 unsigned int ifnum; 66 65 void __user *userbuffer; ··· 293 290 sinfo.si_errno = as->urb->status; 294 291 sinfo.si_code = SI_ASYNCIO; 295 292 sinfo.si_addr = as->userurb; 296 - send_sig_info(as->signr, &sinfo, as->task); 293 + kill_proc_info_as_uid(as->signr, &sinfo, as->pid, as->uid, 294 + as->euid); 297 295 } 298 296 wake_up(&ps->wait); 299 297 } ··· 530 526 INIT_LIST_HEAD(&ps->async_completed); 531 527 init_waitqueue_head(&ps->wait); 532 528 ps->discsignr = 0; 533 - ps->disctask = current; 529 + ps->disc_pid = current->pid; 530 + ps->disc_uid = current->uid; 531 + ps->disc_euid = current->euid; 534 532 ps->disccontext = NULL; 535 533 ps->ifclaimed = 0; 536 534 wmb(); ··· 994 988 as->userbuffer = NULL; 995 989 as->signr = uurb->signr; 996 990 as->ifnum = ifnum; 997 - as->task = current; 991 + as->pid = current->pid; 992 + as->uid = current->uid; 993 + as->euid = current->euid; 998 994 if (!(uurb->endpoint & USB_DIR_IN)) { 999 995 if (copy_from_user(as->urb->transfer_buffer, uurb->buffer, as->urb->transfer_buffer_length)) { 1000 996 free_async(as);
+1 -1
drivers/usb/core/inode.c
··· 713 713 sinfo.si_errno = EPIPE; 714 714 sinfo.si_code = SI_ASYNCIO; 715 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 719 usbfs_update_special();
+2 -1
drivers/usb/core/usb.h
··· 52 52 struct list_head async_completed; 53 53 wait_queue_head_t wait; /* wake up if a request completed */ 54 54 unsigned int discsignr; 55 - struct task_struct *disctask; 55 + pid_t disc_pid; 56 + uid_t disc_uid, disc_euid; 56 57 void __user *disccontext; 57 58 unsigned long ifclaimed; 58 59 };
+4
drivers/video/p9100.c
··· 288 288 all->par.physbase = sdev->reg_addrs[2].phys_addr; 289 289 290 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 295 linebytes = prom_getintdefault(sdev->prom_node, "linebytes", 293 296 all->info.var.xres); ··· 326 323 kfree(all); 327 324 return; 328 325 } 326 + fb_set_cmap(&all->info.cmap, &all->info); 329 327 330 328 list_add(&all->list, &p9100_list); 331 329
+66 -114
fs/9p/vfs_file.c
··· 175 175 } 176 176 177 177 /** 178 - * v9fs_read - read from a file (internal) 178 + * v9fs_file_read - read from a file 179 179 * @filep: file pointer to read 180 180 * @data: data buffer to read data into 181 181 * @count: size of buffer 182 182 * @offset: offset at which to read data 183 183 * 184 184 */ 185 - 186 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 189 struct inode *inode = filp->f_dentry->d_inode; 190 190 struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); ··· 194 194 int rsize = 0; 195 195 int result = 0; 196 196 int total = 0; 197 + int n; 197 198 198 199 dprintk(DEBUG_VFS, "\n"); 199 200 ··· 217 216 } else 218 217 *offset += result; 219 218 220 - /* XXX - extra copy */ 221 - memcpy(buffer, fcall->params.rread.data, result); 219 + n = copy_to_user(data, fcall->params.rread.data, result); 220 + if (n) { 221 + dprintk(DEBUG_ERROR, "Problem copying to user %d\n", n); 222 + kfree(fcall); 223 + return -EFAULT; 224 + } 225 + 222 226 count -= result; 223 - buffer += result; 227 + data += result; 224 228 total += result; 225 229 226 230 kfree(fcall); 227 231 228 232 if (result < rsize) 229 233 break; 230 - } while (count); 231 - 232 - return total; 233 - } 234 - 235 - /** 236 - * v9fs_file_read - read from a file 237 - * @filep: file pointer to read 238 - * @data: data buffer to read data into 239 - * @count: size of buffer 240 - * @offset: offset at which to read data 241 - * 242 - */ 243 - 244 - static ssize_t 245 - v9fs_file_read(struct file *filp, char __user * data, size_t count, 246 - loff_t * offset) 247 - { 248 - int retval = -1; 249 - int ret = 0; 250 - char *buffer; 251 - 252 - buffer = kmalloc(count, GFP_KERNEL); 253 - if (!buffer) 254 - return -ENOMEM; 255 - 256 - retval = v9fs_read(filp, buffer, count, offset); 257 - if (retval > 0) { 258 - if ((ret = copy_to_user(data, buffer, retval)) != 0) { 259 - dprintk(DEBUG_ERROR, "Problem copying to user %d\n", 260 - ret); 261 - retval = ret; 262 - } 263 - } 264 - 265 - kfree(buffer); 266 - 267 - return retval; 268 - } 269 - 270 - /** 271 - * v9fs_write - write to a file 272 - * @filep: file pointer to write 273 - * @data: data buffer to write data from 274 - * @count: size of buffer 275 - * @offset: offset at which to write data 276 - * 277 - */ 278 - 279 - static ssize_t 280 - v9fs_write(struct file *filp, char *buffer, size_t count, loff_t * offset) 281 - { 282 - struct inode *inode = filp->f_dentry->d_inode; 283 - struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); 284 - struct v9fs_fid *v9fid = filp->private_data; 285 - struct v9fs_fcall *fcall; 286 - int fid = v9fid->fid; 287 - int result = -EIO; 288 - int rsize = 0; 289 - int total = 0; 290 - 291 - dprintk(DEBUG_VFS, "data %p count %d offset %x\n", buffer, (int)count, 292 - (int)*offset); 293 - rsize = v9ses->maxdata - V9FS_IOHDRSZ; 294 - if (v9fid->iounit != 0 && rsize > v9fid->iounit) 295 - rsize = v9fid->iounit; 296 - 297 - dump_data(buffer, count); 298 - 299 - do { 300 - if (count < rsize) 301 - rsize = count; 302 - 303 - result = 304 - v9fs_t_write(v9ses, fid, *offset, rsize, buffer, &fcall); 305 - if (result < 0) { 306 - eprintk(KERN_ERR, "error while writing: %s(%d)\n", 307 - FCALL_ERROR(fcall), result); 308 - kfree(fcall); 309 - return result; 310 - } else 311 - *offset += result; 312 - 313 - kfree(fcall); 314 - 315 - if (result != rsize) { 316 - eprintk(KERN_ERR, 317 - "short write: v9fs_t_write returned %d\n", 318 - result); 319 - break; 320 - } 321 - 322 - count -= result; 323 - buffer += result; 324 - total += result; 325 234 } while (count); 326 235 327 236 return total; ··· 250 339 v9fs_file_write(struct file *filp, const char __user * data, 251 340 size_t count, loff_t * offset) 252 341 { 253 - int ret = -1; 254 - char *buffer; 342 + struct inode *inode = filp->f_dentry->d_inode; 343 + struct v9fs_session_info *v9ses = v9fs_inode2v9ses(inode); 344 + struct v9fs_fid *v9fid = filp->private_data; 345 + struct v9fs_fcall *fcall; 346 + int fid = v9fid->fid; 347 + int result = -EIO; 348 + int rsize = 0; 349 + int total = 0; 350 + char *buf; 255 351 256 - buffer = kmalloc(count, GFP_KERNEL); 257 - if (buffer == NULL) 352 + dprintk(DEBUG_VFS, "data %p count %d offset %x\n", data, (int)count, 353 + (int)*offset); 354 + rsize = v9ses->maxdata - V9FS_IOHDRSZ; 355 + if (v9fid->iounit != 0 && rsize > v9fid->iounit) 356 + rsize = v9fid->iounit; 357 + 358 + buf = kmalloc(v9ses->maxdata - V9FS_IOHDRSZ, GFP_KERNEL); 359 + if (!buf) 258 360 return -ENOMEM; 259 361 260 - ret = copy_from_user(buffer, data, count); 261 - if (ret) { 262 - dprintk(DEBUG_ERROR, "Problem copying from user\n"); 263 - ret = -EFAULT; 264 - } else { 265 - ret = v9fs_write(filp, buffer, count, offset); 266 - } 362 + do { 363 + if (count < rsize) 364 + rsize = count; 267 365 268 - kfree(buffer); 366 + result = copy_from_user(buf, data, rsize); 367 + if (result) { 368 + dprintk(DEBUG_ERROR, "Problem copying from user\n"); 369 + kfree(buf); 370 + return -EFAULT; 371 + } 269 372 270 - return ret; 373 + dump_data(buf, rsize); 374 + result = v9fs_t_write(v9ses, fid, *offset, rsize, buf, &fcall); 375 + if (result < 0) { 376 + eprintk(KERN_ERR, "error while writing: %s(%d)\n", 377 + FCALL_ERROR(fcall), result); 378 + kfree(fcall); 379 + kfree(buf); 380 + return result; 381 + } else 382 + *offset += result; 383 + 384 + kfree(fcall); 385 + fcall = NULL; 386 + 387 + if (result != rsize) { 388 + eprintk(KERN_ERR, 389 + "short write: v9fs_t_write returned %d\n", 390 + result); 391 + break; 392 + } 393 + 394 + count -= result; 395 + data += result; 396 + total += result; 397 + } while (count); 398 + 399 + kfree(buf); 400 + return total; 271 401 } 272 402 273 403 struct file_operations v9fs_file_operations = {
+1 -1
fs/binfmt_elf.c
··· 905 905 send_sig(SIGKILL, current, 0); 906 906 goto out_free_dentry; 907 907 } 908 - if (padzero(elf_bss)) { 908 + if (likely(elf_bss != elf_brk) && unlikely(padzero(elf_bss))) { 909 909 send_sig(SIGSEGV, current, 0); 910 910 retval = -EFAULT; /* Nobody gets to see this, but.. */ 911 911 goto out_free_dentry;
+5 -5
fs/bio.c
··· 75 75 */ 76 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 80 struct bio_vec *bvl; 81 81 struct biovec_slab *bp; ··· 155 155 * allocate bio and iovecs from the memory pools specified by the 156 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 160 struct bio *bio = mempool_alloc(bs->bio_pool, gfp_mask); 161 161 ··· 181 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 186 struct bio *bio = bio_alloc_bioset(gfp_mask, nr_iovecs, fs_bio_set); 187 187 ··· 277 277 * 278 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 282 struct bio *b = bio_alloc_bioset(gfp_mask, bio->bi_max_vecs, fs_bio_set); 283 283 ··· 1078 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 1083 return kmalloc(sizeof(struct bio_pair), gfp_flags); 1084 1084 }
+1 -1
fs/buffer.c
··· 3045 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 3050 struct buffer_head *ret = kmem_cache_alloc(bh_cachep, gfp_flags); 3051 3051 if (ret) {
+1 -1
fs/mpage.c
··· 102 102 static struct bio * 103 103 mpage_alloc(struct block_device *bdev, 104 104 sector_t first_sector, int nr_vecs, 105 - unsigned int __nocast gfp_flags) 105 + gfp_t gfp_flags) 106 106 { 107 107 struct bio *bio; 108 108
+3 -3
fs/namei.c
··· 1551 1551 if (nd->last_type != LAST_NORM) 1552 1552 goto exit; 1553 1553 if (nd->last.name[nd->last.len]) { 1554 - putname(nd->last.name); 1554 + __putname(nd->last.name); 1555 1555 goto exit; 1556 1556 } 1557 1557 error = -ELOOP; 1558 1558 if (count++==32) { 1559 - putname(nd->last.name); 1559 + __putname(nd->last.name); 1560 1560 goto exit; 1561 1561 } 1562 1562 dir = nd->dentry; 1563 1563 down(&dir->d_inode->i_sem); 1564 1564 path.dentry = __lookup_hash(&nd->last, nd->dentry, nd); 1565 1565 path.mnt = nd->mnt; 1566 - putname(nd->last.name); 1566 + __putname(nd->last.name); 1567 1567 goto do_last; 1568 1568 } 1569 1569
+35 -35
fs/nfs_common/nfsacl.c
··· 48 48 (struct nfsacl_encode_desc *) desc; 49 49 u32 *p = (u32 *) elem; 50 50 51 - if (nfsacl_desc->count < nfsacl_desc->acl->a_count) { 52 - struct posix_acl_entry *entry = 53 - &nfsacl_desc->acl->a_entries[nfsacl_desc->count++]; 51 + struct posix_acl_entry *entry = 52 + &nfsacl_desc->acl->a_entries[nfsacl_desc->count++]; 54 53 55 - *p++ = htonl(entry->e_tag | nfsacl_desc->typeflag); 56 - switch(entry->e_tag) { 57 - case ACL_USER_OBJ: 58 - *p++ = htonl(nfsacl_desc->uid); 59 - break; 60 - case ACL_GROUP_OBJ: 61 - *p++ = htonl(nfsacl_desc->gid); 62 - break; 63 - case ACL_USER: 64 - case ACL_GROUP: 65 - *p++ = htonl(entry->e_id); 66 - break; 67 - default: /* Solaris depends on that! */ 68 - *p++ = 0; 69 - 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); 54 + *p++ = htonl(entry->e_tag | nfsacl_desc->typeflag); 55 + switch(entry->e_tag) { 56 + case ACL_USER_OBJ: 57 + *p++ = htonl(nfsacl_desc->uid); 58 + break; 59 + case ACL_GROUP_OBJ: 60 + *p++ = htonl(nfsacl_desc->gid); 61 + break; 62 + case ACL_USER: 63 + case ACL_GROUP: 64 + *p++ = htonl(entry->e_id); 65 + break; 66 + default: /* Solaris depends on that! */ 67 + *p++ = 0; 68 + break; 86 69 } 87 - 70 + *p++ = htonl(entry->e_perm & S_IRWXO); 88 71 return 0; 89 72 } 90 73 ··· 88 105 .gid = inode->i_gid, 89 106 }; 90 107 int err; 108 + struct posix_acl *acl2 = NULL; 91 109 92 110 if (entries > NFS_ACL_MAX_ENTRIES || 93 111 xdr_encode_word(buf, base, entries)) 94 112 return -EINVAL; 113 + if (encode_entries && acl && acl->a_count == 3) { 114 + /* Fake up an ACL_MASK entry. */ 115 + acl2 = posix_acl_alloc(4, GFP_KERNEL); 116 + if (!acl2) 117 + return -ENOMEM; 118 + /* Insert entries in canonical order: other orders seem 119 + to confuse Solaris VxFS. */ 120 + acl2->a_entries[0] = acl->a_entries[0]; /* ACL_USER_OBJ */ 121 + acl2->a_entries[1] = acl->a_entries[1]; /* ACL_GROUP_OBJ */ 122 + acl2->a_entries[2] = acl->a_entries[1]; /* ACL_MASK */ 123 + acl2->a_entries[2].e_tag = ACL_MASK; 124 + acl2->a_entries[3] = acl->a_entries[2]; /* ACL_OTHER */ 125 + nfsacl_desc.acl = acl2; 126 + } 95 127 err = xdr_encode_array2(buf, base + 4, &nfsacl_desc.desc); 128 + if (acl2) 129 + posix_acl_release(acl2); 96 130 if (!err) 97 131 err = 8 + nfsacl_desc.desc.elem_size * 98 132 nfsacl_desc.desc.array_len;
+1 -1
fs/ntfs/malloc.h
··· 40 40 * Depending on @gfp_mask the allocation may be guaranteed to succeed. 41 41 */ 42 42 static inline void *__ntfs_malloc(unsigned long size, 43 - unsigned int __nocast gfp_mask) 43 + gfp_t gfp_mask) 44 44 { 45 45 if (likely(size <= PAGE_SIZE)) { 46 46 BUG_ON(!size);
+3 -3
fs/posix_acl.c
··· 35 35 * Allocate a new ACL with the specified number of entries. 36 36 */ 37 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 40 const size_t size = sizeof(struct posix_acl) + 41 41 count * sizeof(struct posix_acl_entry); ··· 51 51 * Clone an ACL. 52 52 */ 53 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 56 struct posix_acl *clone = NULL; 57 57 ··· 185 185 * Create an ACL representing the file mode permission bits of an inode. 186 186 */ 187 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 190 struct posix_acl *acl = posix_acl_alloc(3, flags); 191 191 if (!acl)
+1 -1
fs/relayfs/buffers.c
··· 109 109 if (unlikely(!buf->page_array[i])) 110 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 113 if (!mem) 114 114 goto depopulate; 115 115
+5 -5
fs/xfs/linux-2.6/kmem.c
··· 45 45 46 46 47 47 void * 48 - kmem_alloc(size_t size, unsigned int __nocast flags) 48 + kmem_alloc(size_t size, gfp_t flags) 49 49 { 50 50 int retries = 0; 51 51 unsigned int lflags = kmem_flags_convert(flags); ··· 67 67 } 68 68 69 69 void * 70 - kmem_zalloc(size_t size, unsigned int __nocast flags) 70 + kmem_zalloc(size_t size, gfp_t flags) 71 71 { 72 72 void *ptr; 73 73 ··· 90 90 91 91 void * 92 92 kmem_realloc(void *ptr, size_t newsize, size_t oldsize, 93 - unsigned int __nocast flags) 93 + gfp_t flags) 94 94 { 95 95 void *new; 96 96 ··· 105 105 } 106 106 107 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 110 int retries = 0; 111 111 unsigned int lflags = kmem_flags_convert(flags); ··· 124 124 } 125 125 126 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 129 void *ptr; 130 130
+6 -7
fs/xfs/linux-2.6/kmem.h
··· 81 81 *(NSTATEP) = *(OSTATEP); \ 82 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 86 unsigned int lflags = __GFP_NOWARN; /* we'll report problems, if need be */ 87 87 ··· 125 125 BUG(); 126 126 } 127 127 128 - extern void *kmem_zone_zalloc(kmem_zone_t *, unsigned int __nocast); 129 - extern void *kmem_zone_alloc(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 *, gfp_t); 130 130 131 - extern void *kmem_alloc(size_t, unsigned int __nocast); 132 - extern void *kmem_realloc(void *, size_t, size_t, 133 - unsigned int __nocast); 134 - extern void *kmem_zalloc(size_t, unsigned int __nocast); 131 + extern void *kmem_alloc(size_t, gfp_t); 132 + extern void *kmem_realloc(void *, size_t, size_t, gfp_t); 133 + extern void *kmem_zalloc(size_t, gfp_t); 135 134 extern void kmem_free(void *, size_t); 136 135 137 136 typedef struct shrinker *kmem_shaker_t;
+1 -1
include/asm-arm/arch-imx/imx-regs.h
··· 215 215 #define PC31_AOUT_UART3_RX ( GPIO_GIUS | GPIO_PORTC | GPIO_IN | 31) 216 216 #define PD6_PF_LSCLK ( GPIO_PORTD | GPIO_OUT | GPIO_PF | 6 ) 217 217 #define PD7_PF_REV ( GPIO_PORTD | GPIO_PF | 7 ) 218 - #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 ) 219 219 #define PD7_AIN_SPI2_SCLK ( GPIO_GIUS | GPIO_PORTD | GPIO_AIN | 7 ) 220 220 #define PD8_PF_CLS ( GPIO_PORTD | GPIO_PF | 8 ) 221 221 #define PD8_AF_UART2_DCD ( GPIO_PORTD | GPIO_OUT | GPIO_AF | 8 )
+4 -3
include/asm-arm/arch-pxa/pxa-regs.h
··· 126 126 #define DRCMR12 __REG(0x40000130) /* Request to Channel Map Register for AC97 audio transmit Request */ 127 127 #define DRCMR13 __REG(0x40000134) /* Request to Channel Map Register for SSP receive Request */ 128 128 #define DRCMR14 __REG(0x40000138) /* Request to Channel Map Register for SSP transmit Request */ 129 - #define DRCMR15 __REG(0x4000013c) /* Reserved */ 130 - #define DRCMR16 __REG(0x40000140) /* Reserved */ 129 + #define DRCMR15 __REG(0x4000013c) /* Request to Channel Map Register for SSP2 receive Request */ 130 + #define DRCMR16 __REG(0x40000140) /* Request to Channel Map Register for SSP2 transmit Request */ 131 131 #define DRCMR17 __REG(0x40000144) /* Request to Channel Map Register for ICP receive Request */ 132 132 #define DRCMR18 __REG(0x40000148) /* Request to Channel Map Register for ICP transmit Request */ 133 133 #define DRCMR19 __REG(0x4000014c) /* Request to Channel Map Register for STUART receive Request */ ··· 151 151 #define DRCMR37 __REG(0x40000194) /* Request to Channel Map Register for USB endpoint 13 Request */ 152 152 #define DRCMR38 __REG(0x40000198) /* Request to Channel Map Register for USB endpoint 14 Request */ 153 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 156 #define DRCMR68 __REG(0x40001110) /* Request to Channel Map Register for Camera FIFO 0 Request */ 156 157 #define DRCMR69 __REG(0x40001114) /* Request to Channel Map Register for Camera FIFO 1 Request */ 157 158 #define DRCMR70 __REG(0x40001118) /* Request to Channel Map Register for Camera FIFO 2 Request */
+7
include/asm-arm/arch-s3c2410/hardware.h
··· 92 92 93 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 102 #endif /* __ASSEMBLY__ */ 96 103 97 104 #include <asm/sizes.h>
+2
include/asm-arm/hardware/scoop.h
··· 38 38 struct scoop_config { 39 39 unsigned short io_out; 40 40 unsigned short io_dir; 41 + unsigned short suspend_clr; 42 + unsigned short suspend_set; 41 43 }; 42 44 43 45 /* Structure for linking scoop devices to PCMCIA sockets */
+2 -2
include/asm-generic/dma-mapping.h
··· 35 35 36 36 static inline void * 37 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 40 BUG_ON(dev->bus != &pci_bus_type); 41 41 ··· 168 168 169 169 static inline void * 170 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 173 BUG(); 174 174 return NULL;
+1 -1
include/asm-i386/dma-mapping.h
··· 11 11 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) 12 12 13 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 16 void dma_free_coherent(struct device *dev, size_t size, 17 17 void *vaddr, dma_addr_t dma_handle);
+1 -1
include/asm-powerpc/timex.h
··· 10 10 #include <linux/config.h> 11 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 15 typedef unsigned long cycles_t; 16 16
+1
include/asm-ppc/cputable.h
··· 24 24 #define PPC_FEATURE_HAS_SPE 0x00800000 25 25 #define PPC_FEATURE_HAS_EFP_SINGLE 0x00400000 26 26 #define PPC_FEATURE_HAS_EFP_DOUBLE 0x00200000 27 + #define PPC_FEATURE_NO_TB 0x00100000 27 28 28 29 #ifdef __KERNEL__ 29 30
+1 -1
include/asm-ppc/dma-mapping.h
··· 61 61 62 62 static inline void *dma_alloc_coherent(struct device *dev, size_t size, 63 63 dma_addr_t * dma_handle, 64 - unsigned int __nocast gfp) 64 + gfp_t gfp) 65 65 { 66 66 #ifdef CONFIG_NOT_COHERENT_CACHE 67 67 return __dma_alloc_coherent(size, dma_handle, gfp);
+2 -2
include/asm-ppc64/dma-mapping.h
··· 19 19 extern int dma_supported(struct device *dev, u64 mask); 20 20 extern int dma_set_mask(struct device *dev, u64 dma_mask); 21 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 23 extern void dma_free_coherent(struct device *dev, size_t size, void *cpu_addr, 24 24 dma_addr_t dma_handle); 25 25 extern dma_addr_t dma_map_single(struct device *dev, void *cpu_addr, ··· 118 118 */ 119 119 struct dma_mapping_ops { 120 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 122 void (*free_coherent)(struct device *dev, size_t size, 123 123 void *vaddr, dma_addr_t dma_handle); 124 124 dma_addr_t (*map_single)(struct device *dev, void *ptr,
+1 -1
include/asm-ppc64/iommu.h
··· 122 122 int nelems, enum dma_data_direction direction); 123 123 124 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 126 extern void iommu_free_coherent(struct iommu_table *tbl, size_t size, 127 127 void *vaddr, dma_addr_t dma_handle); 128 128 extern dma_addr_t iommu_map_single(struct iommu_table *tbl, void *vaddr,
+6 -6
include/asm-sparc/btfixup.h
··· 49 49 /* Put bottom 13bits into some register variable */ 50 50 51 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 53 extern unsigned ___ss_##__name[2]; \ 54 54 static inline unsigned int ___sf_##__name(void) { \ 55 55 unsigned int ret; \ ··· 57 57 return ret; \ 58 58 } 59 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 61 extern unsigned ___ss_##__name[2]; \ 62 62 static inline unsigned int ___sf_##__name(void) { \ 63 63 unsigned int ret; \ ··· 71 71 */ 72 72 73 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 75 extern unsigned ___as_##__name[2]; \ 76 76 static inline unsigned int ___af_##__name(void) { \ 77 77 unsigned int ret; \ ··· 79 79 return ret; \ 80 80 } 81 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 83 extern unsigned ___as_##__name[2]; \ 84 84 static inline unsigned int ___af_##__name(void) { \ 85 85 unsigned int ret; \ ··· 90 90 /* Put upper 22 bits into some register variable */ 91 91 92 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 94 extern unsigned ___hs_##__name[2]; \ 95 95 static inline unsigned int ___hf_##__name(void) { \ 96 96 unsigned int ret; \ ··· 98 98 return ret; \ 99 99 } 100 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 102 extern unsigned ___hs_##__name[2]; \ 103 103 static inline unsigned int ___hf_##__name(void) { \ 104 104 unsigned int ret; \
+8 -8
include/asm-sparc/pgtable.h
··· 194 194 BTFIXUPDEF_HALF(pte_dirtyi) 195 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 198 static inline int pte_write(pte_t pte) 199 199 { 200 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 204 static inline int pte_dirty(pte_t pte) 205 205 { 206 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 210 static inline int pte_young(pte_t pte) 211 211 { 212 212 return pte_val(pte) & BTFIXUP_HALF(pte_youngi); ··· 217 217 */ 218 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 221 static inline int pte_file(pte_t pte) 222 222 { 223 223 return pte_val(pte) & BTFIXUP_HALF(pte_filei); ··· 229 229 BTFIXUPDEF_HALF(pte_mkcleani) 230 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 233 static inline pte_t pte_wrprotect(pte_t pte) 234 234 { 235 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 239 static inline pte_t pte_mkclean(pte_t pte) 240 240 { 241 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 245 static inline pte_t pte_mkold(pte_t pte) 246 246 { 247 247 return __pte(pte_val(pte) & ~BTFIXUP_HALF(pte_mkoldi)); ··· 278 278 279 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 282 static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) 283 283 { 284 284 return __pte((pte_val(pte) & BTFIXUP_INT(pte_modify_mask)) |
+1
include/asm-x86_64/smp.h
··· 81 81 extern int safe_smp_processor_id(void); 82 82 extern int __cpu_disable(void); 83 83 extern void __cpu_die(unsigned int cpu); 84 + extern void prefill_possible_map(void); 84 85 85 86 #endif /* !ASSEMBLY */ 86 87
+11 -1
include/linux/atmdev.h
··· 76 76 /* set interface ESI */ 77 77 #define ATM_SETESIF _IOW('a',ATMIOC_ITF+13,struct atmif_sioc) 78 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 86 #define ATM_GETSTAT _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc) 80 87 /* get AAL layer statistics */ 81 88 #define ATM_GETSTATZ _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc) ··· 335 328 struct list_head entry; /* next address */ 336 329 }; 337 330 331 + enum atm_addr_type_t { ATM_ADDR_LOCAL, ATM_ADDR_LECS }; 332 + 338 333 struct atm_dev { 339 334 const struct atmdev_ops *ops; /* device operations; NULL if unused */ 340 335 const struct atmphy_ops *phy; /* PHY operations, may be undefined */ ··· 347 338 void *phy_data; /* private PHY date */ 348 339 unsigned long flags; /* device flags (ATM_DF_*) */ 349 340 struct list_head local; /* local ATM addresses */ 341 + struct list_head lecs; /* LECS ATM addresses learned via ILMI */ 350 342 unsigned char esi[ESI_LEN]; /* ESI ("MAC" addr) */ 351 343 struct atm_cirange ci_range; /* VPI/VCI range */ 352 344 struct k_atm_dev_stats stats; /* statistics */ ··· 467 457 468 458 int atm_charge(struct atm_vcc *vcc,int truesize); 469 459 struct sk_buff *atm_alloc_charge(struct atm_vcc *vcc,int pdu_size, 470 - int gfp_flags); 460 + gfp_t gfp_flags); 471 461 int atm_pcr_goal(struct atm_trafprm *tp); 472 462 473 463 void vcc_release_async(struct atm_vcc *vcc, int reply);
+3 -3
include/linux/bio.h
··· 276 276 extern struct bio_set *bioset_create(int, int, int); 277 277 extern void bioset_free(struct bio_set *); 278 278 279 - extern struct bio *bio_alloc(unsigned int __nocast, int); 280 - extern struct bio *bio_alloc_bioset(unsigned int __nocast, int, struct bio_set *); 279 + extern struct bio *bio_alloc(gfp_t, int); 280 + extern struct bio *bio_alloc_bioset(gfp_t, int, struct bio_set *); 281 281 extern void bio_put(struct bio *); 282 282 extern void bio_free(struct bio *, struct bio_set *); 283 283 ··· 287 287 extern int bio_hw_segments(struct request_queue *, struct bio *); 288 288 289 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 292 extern void bio_init(struct bio *); 293 293
+1 -1
include/linux/buffer_head.h
··· 172 172 void __bforget(struct buffer_head *); 173 173 void __breadahead(struct block_device *, sector_t block, int size); 174 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 176 void free_buffer_head(struct buffer_head * bh); 177 177 void FASTCALL(unlock_buffer(struct buffer_head *bh)); 178 178 void FASTCALL(__lock_buffer(struct buffer_head *bh));
+1 -1
include/linux/connector.h
··· 149 149 150 150 int cn_add_callback(struct cb_id *, char *, void (*callback) (void *)); 151 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 154 int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); 155 155 void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id);
+12
include/linux/cpumask.h
··· 392 392 #define for_each_online_cpu(cpu) for_each_cpu_mask((cpu), cpu_online_map) 393 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 + static inline unsigned int highest_possible_processor_id(void) 397 + { 398 + unsigned int cpu, highest = 0; 399 + 400 + for_each_cpu_mask(cpu, cpu_possible_map) 401 + highest = cpu; 402 + 403 + return highest; 404 + } 405 + 406 + 395 407 #endif /* __LINUX_CPUMASK_H */
+2 -3
include/linux/cpuset.h
··· 23 23 void cpuset_update_current_mems_allowed(void); 24 24 void cpuset_restrict_to_mems_allowed(unsigned long *nodes); 25 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 27 extern int cpuset_excl_nodes_overlap(const struct task_struct *p); 28 28 extern struct file_operations proc_cpuset_operations; 29 29 extern char *cpuset_task_status_allowed(struct task_struct *task, char *buffer); ··· 49 49 return 1; 50 50 } 51 51 52 - static inline int cpuset_zone_allowed(struct zone *z, 53 - unsigned int __nocast gfp_mask) 52 + static inline int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask) 54 53 { 55 54 return 1; 56 55 }
+1 -1
include/linux/dmapool.h
··· 19 19 20 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 23 dma_addr_t *handle); 24 24 25 25 void dma_pool_free(struct dma_pool *pool, void *vaddr, dma_addr_t addr);
+7 -7
include/linux/gfp.h
··· 85 85 #endif 86 86 87 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 91 unsigned int order) 92 92 { 93 93 if (unlikely(order >= MAX_ORDER)) ··· 98 98 } 99 99 100 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 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 106 if (unlikely(order >= MAX_ORDER)) 107 107 return NULL; 108 108 109 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 112 struct vm_area_struct *vma, unsigned long addr); 113 113 #else 114 114 #define alloc_pages(gfp_mask, order) \ ··· 117 117 #endif 118 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)); 121 - extern unsigned long FASTCALL(get_zeroed_page(unsigned int __nocast gfp_mask)); 120 + extern unsigned long FASTCALL(__get_free_pages(gfp_t gfp_mask, unsigned int order)); 121 + extern unsigned long FASTCALL(get_zeroed_page(gfp_t gfp_mask)); 122 122 123 123 #define __get_free_page(gfp_mask) \ 124 124 __get_free_pages((gfp_mask),0)
+1 -1
include/linux/jbd.h
··· 935 935 */ 936 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 940 return kmem_cache_alloc(jbd_handle_cache, gfp_flags); 941 941 }
+5 -86
include/linux/key-ui.h
··· 38 38 struct key *keys[0]; 39 39 }; 40 40 41 - 42 41 /* 43 42 * check to see whether permission is granted to use a key in the desired way 44 43 */ 44 + extern int key_task_permission(const key_ref_t key_ref, 45 + struct task_struct *context, 46 + key_perm_t perm); 47 + 45 48 static inline int key_permission(const key_ref_t key_ref, key_perm_t perm) 46 49 { 47 - struct key *key = key_ref_to_ptr(key_ref); 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 - 88 - kperm = kperm & perm & KEY_ALL; 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 - { 107 - struct key *key = key_ref_to_ptr(key_ref); 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 - 50 + return key_task_permission(key_ref, current, perm); 132 51 } 133 52 134 53 extern key_ref_t lookup_user_key(struct task_struct *context,
+2 -2
include/linux/kfifo.h
··· 35 35 }; 36 36 37 37 extern struct kfifo *kfifo_init(unsigned char *buffer, unsigned int size, 38 - unsigned int __nocast gfp_mask, spinlock_t *lock); 39 - extern struct kfifo *kfifo_alloc(unsigned int size, unsigned int __nocast gfp_mask, 38 + gfp_t gfp_mask, spinlock_t *lock); 39 + extern struct kfifo *kfifo_alloc(unsigned int size, gfp_t gfp_mask, 40 40 spinlock_t *lock); 41 41 extern void kfifo_free(struct kfifo *fifo); 42 42 extern unsigned int __kfifo_put(struct kfifo *fifo,
+4 -5
include/linux/mempool.h
··· 6 6 7 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 10 typedef void (mempool_free_t)(void *element, void *pool_data); 11 11 12 12 typedef struct mempool_s { ··· 26 26 extern mempool_t *mempool_create_node(int min_nr, mempool_alloc_t *alloc_fn, 27 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, 30 - unsigned int __nocast gfp_mask); 29 + extern int mempool_resize(mempool_t *pool, int new_min_nr, gfp_t gfp_mask); 31 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 32 extern void mempool_free(void *element, mempool_t *pool); 34 33 35 34 /* 36 35 * A mempool_alloc_t and mempool_free_t that get the memory from 37 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 39 void mempool_free_slab(void *element, void *pool_data); 41 40 42 41 #endif /* _LINUX_MEMPOOL_H */
+8 -4
include/linux/netfilter/nfnetlink.h
··· 41 41 struct nfattr 42 42 { 43 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 46 } __attribute__ ((packed)); 46 47 47 - /* FIXME: Shamelessly copy and pasted from rtnetlink.h, it's time 48 - * to put this in a generic file */ 48 + /* FIXME: Apart from NFNL_NFA_NESTED shamelessly copy and pasted from 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 54 #define NFA_ALIGNTO 4 51 55 #define NFA_ALIGN(len) (((len) + NFA_ALIGNTO - 1) & ~(NFA_ALIGNTO - 1)) ··· 63 59 #define NFA_PAYLOAD(nfa) ((int)((nfa)->nfa_len) - NFA_LENGTH(0)) 64 60 #define NFA_NEST(skb, type) \ 65 61 ({ struct nfattr *__start = (struct nfattr *) (skb)->tail; \ 66 - NFA_PUT(skb, type, 0, NULL); \ 62 + NFA_PUT(skb, (NFNL_NFA_NEST | type), 0, NULL); \ 67 63 __start; }) 68 64 #define NFA_NEST_END(skb, start) \ 69 65 ({ (start)->nfa_len = ((skb)->tail - (unsigned char *) (start)); \
+6 -2
include/linux/netfilter_ipv4/ip_conntrack.h
··· 117 117 /* NAT info */ 118 118 IPCT_NATINFO_BIT = 10, 119 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 126 enum ip_conntrack_expect_events { ··· 196 192 197 193 struct ip_conntrack_counter 198 194 { 199 - u_int64_t packets; 200 - u_int64_t bytes; 195 + u_int32_t packets; 196 + u_int32_t bytes; 201 197 }; 202 198 203 199 struct ip_conntrack_helper;
+3
include/linux/netfilter_ipv4/ip_conntrack_protocol.h
··· 52 52 int (*to_nfattr)(struct sk_buff *skb, struct nfattr *nfa, 53 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 58 int (*tuple_to_nfattr)(struct sk_buff *skb, 56 59 const struct ip_conntrack_tuple *t); 57 60 int (*nfattr_to_tuple)(struct nfattr *tb[],
+2
include/linux/netfilter_ipv4/ip_conntrack_tuple.h
··· 1 1 #ifndef _IP_CONNTRACK_TUPLE_H 2 2 #define _IP_CONNTRACK_TUPLE_H 3 3 4 + #include <linux/types.h> 5 + 4 6 /* A `tuple' is a structure containing the information to uniquely 5 7 identify a connection. ie. if two packets have the same tuple, they 6 8 are in the same connection; if not, they are not.
-4
include/linux/netfilter_ipv4/ip_nat.h
··· 58 58 struct ip_nat_info 59 59 { 60 60 struct list_head bysource; 61 - 62 - /* Helper (NULL if none). */ 63 - struct ip_nat_helper *helper; 64 - 65 61 struct ip_nat_seq seq[IP_CT_DIR_MAX]; 66 62 }; 67 63
+1 -1
include/linux/netlink.h
··· 131 131 extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); 132 132 extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); 133 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 135 extern void netlink_set_err(struct sock *ssk, __u32 pid, __u32 group, int code); 136 136 extern int netlink_register_notifier(struct notifier_block *nb); 137 137 extern int netlink_unregister_notifier(struct notifier_block *nb);
+1 -1
include/linux/netpoll.h
··· 86 86 87 87 #else 88 88 #define netpoll_rx(a) 0 89 - #define netpoll_poll_lock(a) 0 89 + #define netpoll_poll_lock(a) NULL 90 90 #define netpoll_poll_unlock(a) 91 91 #endif 92 92
+1 -1
include/linux/pagemap.h
··· 19 19 #define AS_EIO (__GFP_BITS_SHIFT + 0) /* IO error on async write */ 20 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 24 return mapping->flags & __GFP_BITS_MASK; 25 25 }
+3 -3
include/linux/posix_acl.h
··· 71 71 72 72 /* posix_acl.c */ 73 73 74 - extern struct posix_acl *posix_acl_alloc(int, unsigned int __nocast); 75 - extern struct posix_acl *posix_acl_clone(const struct posix_acl *, 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 *, gfp_t); 76 76 extern int posix_acl_valid(const struct posix_acl *); 77 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 79 extern int posix_acl_equiv_mode(const struct posix_acl *, mode_t *); 80 80 extern int posix_acl_create_masq(struct posix_acl *, mode_t *); 81 81 extern int posix_acl_chmod_masq(struct posix_acl *, mode_t);
+1 -1
include/linux/radix-tree.h
··· 50 50 unsigned int 51 51 radix_tree_gang_lookup(struct radix_tree_root *root, void **results, 52 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 54 void radix_tree_init(void); 55 55 void *radix_tree_tag_set(struct radix_tree_root *root, 56 56 unsigned long index, int tag);
+1
include/linux/sched.h
··· 1018 1018 extern int __kill_pg_info(int sig, struct siginfo *info, pid_t pgrp); 1019 1019 extern int kill_pg_info(int, struct siginfo *, pid_t); 1020 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 1022 extern void do_notify_parent(struct task_struct *, int); 1022 1023 extern void force_sig(int, struct task_struct *); 1023 1024 extern void force_sig_specific(int, struct task_struct *);
+2 -4
include/linux/security.h
··· 2634 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, 2638 - unsigned int __nocast priority) 2637 + static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority) 2639 2638 { 2640 2639 return security_ops->sk_alloc_security(sk, family, priority); 2641 2640 } ··· 2751 2752 return -ENOPROTOOPT; 2752 2753 } 2753 2754 2754 - static inline int security_sk_alloc(struct sock *sk, int family, 2755 - unsigned int __nocast priority) 2755 + static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority) 2756 2756 { 2757 2757 return 0; 2758 2758 }
+14 -14
include/linux/skbuff.h
··· 302 302 303 303 extern void __kfree_skb(struct sk_buff *skb); 304 304 extern struct sk_buff *__alloc_skb(unsigned int size, 305 - unsigned int __nocast priority, int fclone); 305 + gfp_t priority, int fclone); 306 306 static inline struct sk_buff *alloc_skb(unsigned int size, 307 - unsigned int __nocast priority) 307 + gfp_t priority) 308 308 { 309 309 return __alloc_skb(size, priority, 0); 310 310 } 311 311 312 312 static inline struct sk_buff *alloc_skb_fclone(unsigned int size, 313 - unsigned int __nocast priority) 313 + gfp_t priority) 314 314 { 315 315 return __alloc_skb(size, priority, 1); 316 316 } 317 317 318 318 extern struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, 319 319 unsigned int size, 320 - unsigned int __nocast priority); 320 + gfp_t priority); 321 321 extern void kfree_skbmem(struct sk_buff *skb); 322 322 extern struct sk_buff *skb_clone(struct sk_buff *skb, 323 - unsigned int __nocast priority); 323 + gfp_t priority); 324 324 extern struct sk_buff *skb_copy(const struct sk_buff *skb, 325 - unsigned int __nocast priority); 325 + gfp_t priority); 326 326 extern struct sk_buff *pskb_copy(struct sk_buff *skb, 327 - unsigned int __nocast gfp_mask); 327 + gfp_t gfp_mask); 328 328 extern int pskb_expand_head(struct sk_buff *skb, 329 329 int nhead, int ntail, 330 - unsigned int __nocast gfp_mask); 330 + gfp_t gfp_mask); 331 331 extern struct sk_buff *skb_realloc_headroom(struct sk_buff *skb, 332 332 unsigned int headroom); 333 333 extern struct sk_buff *skb_copy_expand(const struct sk_buff *skb, 334 334 int newheadroom, int newtailroom, 335 - unsigned int __nocast priority); 335 + gfp_t priority); 336 336 extern struct sk_buff * skb_pad(struct sk_buff *skb, int pad); 337 337 #define dev_kfree_skb(a) kfree_skb(a) 338 338 extern void skb_over_panic(struct sk_buff *skb, int len, ··· 484 484 * NULL is returned on a memory allocation failure. 485 485 */ 486 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 489 might_sleep_if(pri & __GFP_WAIT); 490 490 if (skb_shared(skb)) { ··· 516 516 * %NULL is returned on a memory allocation failure. 517 517 */ 518 518 static inline struct sk_buff *skb_unshare(struct sk_buff *skb, 519 - unsigned int __nocast pri) 519 + gfp_t pri) 520 520 { 521 521 might_sleep_if(pri & __GFP_WAIT); 522 522 if (skb_cloned(skb)) { ··· 1017 1017 * %NULL is returned in there is no free memory. 1018 1018 */ 1019 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 1022 struct sk_buff *skb = alloc_skb(length + 16, gfp_mask); 1023 1023 if (likely(skb)) ··· 1130 1130 * If there is no free memory -ENOMEM is returned, otherwise zero 1131 1131 * is returned and the old skb data released. 1132 1132 */ 1133 - extern int __skb_linearize(struct sk_buff *skb, unsigned int __nocast gfp); 1134 - static inline 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, gfp_t gfp) 1135 1135 { 1136 1136 return __skb_linearize(skb, gfp); 1137 1137 }
+9 -10
include/linux/slab.h
··· 61 61 void (*)(void *, kmem_cache_t *, unsigned long)); 62 62 extern int kmem_cache_destroy(kmem_cache_t *); 63 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 65 extern void kmem_cache_free(kmem_cache_t *, void *); 66 66 extern unsigned int kmem_cache_size(kmem_cache_t *); 67 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 70 /* Size description struct for general caches. */ 71 71 struct cache_sizes { ··· 74 74 kmem_cache_t *cs_dmacachep; 75 75 }; 76 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 81 if (__builtin_constant_p(size)) { 82 82 int i = 0; ··· 99 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 105 * kcalloc - allocate memory for an array. The memory is set to zero. ··· 107 107 * @size: element size. 108 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 112 if (n != 0 && size > INT_MAX / n) 113 113 return NULL; ··· 118 118 extern unsigned int ksize(const void *); 119 119 120 120 #ifdef CONFIG_NUMA 121 - extern void *kmem_cache_alloc_node(kmem_cache_t *, 122 - unsigned int __nocast flags, int node); 123 - extern void *kmalloc_node(size_t size, unsigned int __nocast flags, int node); 121 + extern void *kmem_cache_alloc_node(kmem_cache_t *, gfp_t flags, int node); 122 + extern void *kmalloc_node(size_t size, gfp_t flags, int node); 124 123 #else 125 124 static inline void *kmem_cache_alloc_node(kmem_cache_t *cachep, int flags, int node) 126 125 { 127 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 130 return kmalloc(size, flags); 132 131 }
+1 -1
include/linux/string.h
··· 88 88 extern void * memchr(const void *,int,__kernel_size_t); 89 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 93 #ifdef __cplusplus 94 94 }
+2
include/linux/suspend.h
··· 71 71 struct saved_context; 72 72 void __save_processor_state(struct saved_context *ctxt); 73 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 77 #endif /* _LINUX_SWSUSP_H */
+1 -1
include/linux/swap.h
··· 147 147 #define vm_swap_full() (nr_swap_pages*2 < total_swap_pages) 148 148 149 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 152 /* linux/mm/memory.c */ 153 153 extern void swapin_readahead(swp_entry_t, unsigned long, struct vm_area_struct *);
+2 -1
include/linux/textsearch.h
··· 158 158 #define TS_PRIV_ALIGNTO 8 159 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 164 struct ts_config *conf; 164 165
+4
include/linux/types.h
··· 165 165 typedef __u64 __bitwise __be64; 166 166 #endif 167 167 168 + #ifdef __KERNEL__ 169 + typedef unsigned __nocast gfp_t; 170 + #endif 171 + 168 172 struct ustat { 169 173 __kernel_daddr_t f_tfree; 170 174 __kernel_ino_t f_tinode;
+2 -2
include/linux/vmalloc.h
··· 34 34 extern void *vmalloc(unsigned long size); 35 35 extern void *vmalloc_exec(unsigned long size); 36 36 extern void *vmalloc_32(unsigned long size); 37 - extern void *__vmalloc(unsigned long size, unsigned int __nocast gfp_mask, pgprot_t prot); 38 - extern void *__vmalloc_area(struct vm_struct *area, 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, gfp_t gfp_mask, pgprot_t prot); 39 39 extern void vfree(void *addr); 40 40 41 41 extern void *vmap(struct page **pages, unsigned int count,
+1 -1
include/net/bluetooth/bluetooth.h
··· 136 136 }; 137 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 141 struct sk_buff *skb; 142 142
+1 -1
include/net/bluetooth/rfcomm.h
··· 230 230 u8 xon_char, u8 xoff_char, u16 param_mask); 231 231 232 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 234 void rfcomm_dlc_free(struct rfcomm_dlc *d); 235 235 int rfcomm_dlc_open(struct rfcomm_dlc *d, bdaddr_t *src, bdaddr_t *dst, u8 channel); 236 236 int rfcomm_dlc_close(struct rfcomm_dlc *d, int reason);
+4 -4
include/net/dn_nsp.h
··· 19 19 extern void dn_nsp_send_oth_ack(struct sock *sk); 20 20 extern void dn_nsp_delayed_ack(struct sock *sk); 21 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 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 25 extern void dn_nsp_return_disc(struct sk_buff *skb, unsigned char type, 26 26 unsigned short reason); 27 27 extern void dn_nsp_send_link(struct sock *sk, unsigned char lsflags, char fcval); ··· 29 29 30 30 extern void dn_nsp_output(struct sock *sk); 31 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 33 extern unsigned long dn_nsp_persist(struct sock *sk); 34 34 extern int dn_nsp_xmit_timeout(struct sock *sk); 35 35 36 36 extern int dn_nsp_rx(struct sk_buff *); 37 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 40 extern struct sk_buff *dn_alloc_send_skb(struct sock *sk, size_t *size, int noblock, long timeo, int *err); 41 41 42 42 #define NSP_REASON_OK 0 /* No error */
+1 -1
include/net/dn_route.h
··· 15 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 19 extern int dn_route_output_sock(struct dst_entry **pprt, struct flowi *, struct sock *sk, int flags); 20 20 extern int dn_cache_dump(struct sk_buff *skb, struct netlink_callback *cb); 21 21 extern int dn_cache_getroute(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg);
+1 -1
include/net/inet_connection_sock.h
··· 94 94 95 95 extern struct sock *inet_csk_clone(struct sock *sk, 96 96 const struct request_sock *req, 97 - const unsigned int __nocast priority); 97 + const gfp_t priority); 98 98 99 99 enum inet_csk_ack_state_t { 100 100 ICSK_ACK_SCHED = 1,
+1 -1
include/net/inet_hashtables.h
··· 40 40 struct inet_ehash_bucket { 41 41 rwlock_t lock; 42 42 struct hlist_head chain; 43 - } __attribute__((__aligned__(8))); 43 + }; 44 44 45 45 /* There are a few simple rules, which allow for local port reuse by 46 46 * an application. In essence:
+3
include/net/inet_timewait_sock.h
··· 19 19 20 20 #include <linux/ip.h> 21 21 #include <linux/list.h> 22 + #include <linux/module.h> 22 23 #include <linux/timer.h> 23 24 #include <linux/types.h> 24 25 #include <linux/workqueue.h> ··· 194 193 static inline void inet_twsk_put(struct inet_timewait_sock *tw) 195 194 { 196 195 if (atomic_dec_and_test(&tw->tw_refcnt)) { 196 + struct module *owner = tw->tw_prot->owner; 197 197 #ifdef SOCK_REFCNT_DEBUG 198 198 printk(KERN_DEBUG "%s timewait_sock %p released\n", 199 199 tw->tw_prot->name, tw); 200 200 #endif 201 201 kmem_cache_free(tw->tw_prot->twsk_slab, tw); 202 + module_put(owner); 202 203 } 203 204 } 204 205
+1 -1
include/net/ip_vs.h
··· 832 832 833 833 extern int ip_vs_app_pkt_out(struct ip_vs_conn *, struct sk_buff **pskb); 834 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 836 char *o_buf, int o_len, char *n_buf, int n_len); 837 837 extern int ip_vs_app_init(void); 838 838 extern void ip_vs_app_cleanup(void);
+1 -1
include/net/llc_conn.h
··· 93 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 97 struct proto *prot); 98 98 extern void llc_sk_free(struct sock *sk); 99 99
+1 -1
include/net/sctp/sctp.h
··· 125 125 */ 126 126 extern struct sock *sctp_get_ctl_sock(void); 127 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 129 int flags); 130 130 extern struct sctp_pf *sctp_get_pf_specific(sa_family_t family); 131 131 extern int sctp_register_pf(struct sctp_pf *, sa_family_t);
+5 -5
include/net/sctp/sm.h
··· 181 181 int sctp_chunk_iif(const struct sctp_chunk *); 182 182 struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *, 183 183 struct sctp_chunk *, 184 - unsigned int __nocast gfp); 184 + gfp_t gfp); 185 185 __u32 sctp_generate_verification_tag(void); 186 186 void sctp_populate_tie_tags(__u8 *cookie, __u32 curTag, __u32 hisTag); 187 187 188 188 /* Prototypes for chunk-building functions. */ 189 189 struct sctp_chunk *sctp_make_init(const struct sctp_association *, 190 190 const struct sctp_bind_addr *, 191 - unsigned int __nocast gfp, int vparam_len); 191 + gfp_t gfp, int vparam_len); 192 192 struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *, 193 193 const struct sctp_chunk *, 194 - const unsigned int __nocast gfp, 194 + const gfp_t gfp, 195 195 const int unkparam_len); 196 196 struct sctp_chunk *sctp_make_cookie_echo(const struct sctp_association *, 197 197 const struct sctp_chunk *); ··· 265 265 struct sctp_endpoint *, 266 266 struct sctp_association *asoc, 267 267 void *event_arg, 268 - unsigned int __nocast gfp); 268 + gfp_t gfp); 269 269 270 270 /* 2nd level prototypes */ 271 271 void sctp_generate_t3_rtx_event(unsigned long peer); ··· 276 276 struct sctp_association *sctp_unpack_cookie(const struct sctp_endpoint *, 277 277 const struct sctp_association *, 278 278 struct sctp_chunk *, 279 - unsigned int __nocast gfp, int *err, 279 + gfp_t gfp, int *err, 280 280 struct sctp_chunk **err_chk_p); 281 281 int sctp_addip_addr_config(struct sctp_association *, sctp_param_t, 282 282 struct sockaddr_storage*, int);
+12 -12
include/net/sctp/structs.h
··· 446 446 }; 447 447 448 448 struct sctp_ssnmap *sctp_ssnmap_new(__u16 in, __u16 out, 449 - unsigned int __nocast gfp); 449 + gfp_t gfp); 450 450 void sctp_ssnmap_free(struct sctp_ssnmap *map); 451 451 void sctp_ssnmap_clear(struct sctp_ssnmap *map); 452 452 ··· 947 947 }; 948 948 949 949 struct sctp_transport *sctp_transport_new(const union sctp_addr *, 950 - unsigned int __nocast); 950 + gfp_t); 951 951 void sctp_transport_set_owner(struct sctp_transport *, 952 952 struct sctp_association *); 953 953 void sctp_transport_route(struct sctp_transport *, union sctp_addr *, ··· 1095 1095 void sctp_bind_addr_free(struct sctp_bind_addr *); 1096 1096 int sctp_bind_addr_copy(struct sctp_bind_addr *dest, 1097 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 1099 int flags); 1100 1100 int sctp_add_bind_addr(struct sctp_bind_addr *, union sctp_addr *, 1101 - unsigned int __nocast gfp); 1101 + gfp_t gfp); 1102 1102 int sctp_del_bind_addr(struct sctp_bind_addr *, union sctp_addr *); 1103 1103 int sctp_bind_addr_match(struct sctp_bind_addr *, const union sctp_addr *, 1104 1104 struct sctp_sock *); ··· 1108 1108 struct sctp_sock *opt); 1109 1109 union sctp_params sctp_bind_addrs_to_raw(const struct sctp_bind_addr *bp, 1110 1110 int *addrs_len, 1111 - unsigned int __nocast gfp); 1111 + gfp_t gfp); 1112 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 1115 sctp_scope_t sctp_scope(const union sctp_addr *); 1116 1116 int sctp_in_scope(const union sctp_addr *addr, const sctp_scope_t scope); ··· 1239 1239 } 1240 1240 1241 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 1243 void sctp_endpoint_free(struct sctp_endpoint *); 1244 1244 void sctp_endpoint_put(struct sctp_endpoint *); 1245 1245 void sctp_endpoint_hold(struct sctp_endpoint *); ··· 1260 1260 struct sctp_chunk **err_chunk); 1261 1261 int sctp_process_init(struct sctp_association *, sctp_cid_t cid, 1262 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 1264 __u32 sctp_generate_tag(const struct sctp_endpoint *); 1265 1265 __u32 sctp_generate_tsn(const struct sctp_endpoint *); 1266 1266 ··· 1723 1723 1724 1724 struct sctp_association * 1725 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 1727 void sctp_association_free(struct sctp_association *); 1728 1728 void sctp_association_put(struct sctp_association *); 1729 1729 void sctp_association_hold(struct sctp_association *); ··· 1739 1739 const union sctp_addr *laddr); 1740 1740 struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *, 1741 1741 const union sctp_addr *address, 1742 - const unsigned int __nocast gfp, 1742 + const gfp_t gfp, 1743 1743 const int peer_state); 1744 1744 void sctp_assoc_del_peer(struct sctp_association *asoc, 1745 1745 const union sctp_addr *addr); ··· 1764 1764 void sctp_assoc_set_primary(struct sctp_association *, 1765 1765 struct sctp_transport *); 1766 1766 int sctp_assoc_set_bind_addr_from_ep(struct sctp_association *, 1767 - unsigned int __nocast); 1767 + gfp_t); 1768 1768 int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *, 1769 1769 struct sctp_cookie*, 1770 - unsigned int __nocast gfp); 1770 + gfp_t gfp); 1771 1771 1772 1772 int sctp_cmp_addr_exact(const union sctp_addr *ss1, 1773 1773 const union sctp_addr *ss2);
+8 -8
include/net/sctp/ulpevent.h
··· 88 88 __u16 error, 89 89 __u16 outbound, 90 90 __u16 inbound, 91 - unsigned int __nocast gfp); 91 + gfp_t gfp); 92 92 93 93 struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change( 94 94 const struct sctp_association *asoc, ··· 96 96 int flags, 97 97 int state, 98 98 int error, 99 - unsigned int __nocast gfp); 99 + gfp_t gfp); 100 100 101 101 struct sctp_ulpevent *sctp_ulpevent_make_remote_error( 102 102 const struct sctp_association *asoc, 103 103 struct sctp_chunk *chunk, 104 104 __u16 flags, 105 - unsigned int __nocast gfp); 105 + gfp_t gfp); 106 106 struct sctp_ulpevent *sctp_ulpevent_make_send_failed( 107 107 const struct sctp_association *asoc, 108 108 struct sctp_chunk *chunk, 109 109 __u16 flags, 110 110 __u32 error, 111 - unsigned int __nocast gfp); 111 + gfp_t gfp); 112 112 113 113 struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event( 114 114 const struct sctp_association *asoc, 115 115 __u16 flags, 116 - unsigned int __nocast gfp); 116 + gfp_t gfp); 117 117 118 118 struct sctp_ulpevent *sctp_ulpevent_make_pdapi( 119 119 const struct sctp_association *asoc, 120 - __u32 indication, unsigned int __nocast gfp); 120 + __u32 indication, gfp_t gfp); 121 121 122 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 125 struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, 126 126 struct sctp_chunk *chunk, 127 - unsigned int __nocast gfp); 127 + gfp_t gfp); 128 128 129 129 void sctp_ulpevent_read_sndrcvinfo(const struct sctp_ulpevent *event, 130 130 struct msghdr *);
+4 -7
include/net/sctp/ulpqueue.h
··· 62 62 void sctp_ulpq_free(struct sctp_ulpq *); 63 63 64 64 /* Add a new DATA chunk for processing. */ 65 - int sctp_ulpq_tail_data(struct sctp_ulpq *, struct sctp_chunk *, 66 - unsigned int __nocast); 65 + int sctp_ulpq_tail_data(struct sctp_ulpq *, struct sctp_chunk *, gfp_t); 67 66 68 67 /* Add a new event for propagation to the ULP. */ 69 68 int sctp_ulpq_tail_event(struct sctp_ulpq *, struct sctp_ulpevent *ev); 70 69 71 70 /* Renege previously received chunks. */ 72 - void sctp_ulpq_renege(struct sctp_ulpq *, struct sctp_chunk *, 73 - unsigned int __nocast); 71 + void sctp_ulpq_renege(struct sctp_ulpq *, struct sctp_chunk *, gfp_t); 74 72 75 73 /* Perform partial delivery. */ 76 - void sctp_ulpq_partial_delivery(struct sctp_ulpq *, struct sctp_chunk *, 77 - unsigned int __nocast); 74 + void sctp_ulpq_partial_delivery(struct sctp_ulpq *, struct sctp_chunk *, gfp_t); 78 75 79 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 79 /* Clear the partial data delivery condition on this socket. */ 83 80 int sctp_clear_pd(struct sock *sk);
+23 -14
include/net/sctp/user.h
··· 103 103 #define SCTP_SOCKOPT_BINDX_REM SCTP_SOCKOPT_BINDX_REM 104 104 SCTP_SOCKOPT_PEELOFF, /* peel off association. */ 105 105 #define SCTP_SOCKOPT_PEELOFF SCTP_SOCKOPT_PEELOFF 106 - SCTP_GET_PEER_ADDRS_NUM, /* Get number of peer addresss. */ 107 - #define SCTP_GET_PEER_ADDRS_NUM SCTP_GET_PEER_ADDRS_NUM 108 - SCTP_GET_PEER_ADDRS, /* Get all peer addresss. */ 109 - #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. */ 113 - #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS 106 + SCTP_GET_PEER_ADDRS_NUM_OLD, /* Get number of peer addresss. */ 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 114 SCTP_SOCKOPT_CONNECTX, /* CONNECTX requests. */ 115 115 #define SCTP_SOCKOPT_CONNECTX SCTP_SOCKOPT_CONNECTX 116 + SCTP_GET_PEER_ADDRS, /* Get all peer addresss. */ 117 + #define SCTP_GET_PEER_ADDRS SCTP_GET_PEER_ADDRS 118 + SCTP_GET_LOCAL_ADDRS, /* Get all local addresss. */ 119 + #define SCTP_GET_LOCAL_ADDRS SCTP_GET_LOCAL_ADDRS 116 120 }; 117 121 118 122 /* ··· 243 239 int spc_state; 244 240 int spc_error; 245 241 sctp_assoc_t spc_assoc_id; 246 - }; 242 + } __attribute__((packed, aligned(4))); 247 243 248 244 /* 249 245 * spc_state: 32 bits (signed integer) ··· 468 464 struct sctp_setpeerprim { 469 465 sctp_assoc_t sspp_assoc_id; 470 466 struct sockaddr_storage sspp_addr; 471 - }; 467 + } __attribute__((packed, aligned(4))); 472 468 473 469 /* 474 470 * 7.1.10 Set Primary Address (SCTP_PRIMARY_ADDR) ··· 481 477 struct sctp_prim { 482 478 sctp_assoc_t ssp_assoc_id; 483 479 struct sockaddr_storage ssp_addr; 484 - }; 480 + } __attribute__((packed, aligned(4))); 485 481 486 482 /* 487 483 * 7.1.11 Set Adaption Layer Indicator (SCTP_ADAPTION_LAYER) ··· 508 504 struct sockaddr_storage spp_address; 509 505 __u32 spp_hbinterval; 510 506 __u16 spp_pathmaxrxt; 511 - }; 507 + } __attribute__((packed, aligned(4))); 512 508 513 509 /* 514 510 * 7.2.2 Peer Address Information ··· 527 523 __u32 spinfo_srtt; 528 524 __u32 spinfo_rto; 529 525 __u32 spinfo_mtu; 530 - }; 526 + } __attribute__((packed, aligned(4))); 531 527 532 528 /* Peer addresses's state. */ 533 529 enum sctp_spinfo_state { ··· 563 559 * SCTP_GET_LOCAL_ADDRS socket options used internally to implement 564 560 * sctp_getpaddrs() and sctp_getladdrs() API. 565 561 */ 566 - struct sctp_getaddrs { 562 + struct sctp_getaddrs_old { 567 563 sctp_assoc_t assoc_id; 568 564 int addr_num; 569 565 struct sockaddr __user *addrs; 566 + }; 567 + struct sctp_getaddrs { 568 + sctp_assoc_t assoc_id; /*input*/ 569 + __u32 addr_num; /*output*/ 570 + __u8 addrs[0]; /*output, variable size*/ 570 571 }; 571 572 572 573 /* These are bit fields for msghdr->msg_flags. See section 5.1. */
+8 -8
include/net/sock.h
··· 739 739 #define bh_unlock_sock(__sk) spin_unlock(&((__sk)->sk_lock.slock)) 740 740 741 741 extern struct sock *sk_alloc(int family, 742 - unsigned int __nocast priority, 742 + gfp_t priority, 743 743 struct proto *prot, int zero_it); 744 744 extern void sk_free(struct sock *sk); 745 745 extern struct sock *sk_clone(const struct sock *sk, 746 - const unsigned int __nocast priority); 746 + const gfp_t priority); 747 747 748 748 extern struct sk_buff *sock_wmalloc(struct sock *sk, 749 749 unsigned long size, int force, 750 - unsigned int __nocast priority); 750 + gfp_t priority); 751 751 extern struct sk_buff *sock_rmalloc(struct sock *sk, 752 752 unsigned long size, int force, 753 - unsigned int __nocast priority); 753 + gfp_t priority); 754 754 extern void sock_wfree(struct sk_buff *skb); 755 755 extern void sock_rfree(struct sk_buff *skb); 756 756 ··· 766 766 int noblock, 767 767 int *errcode); 768 768 extern void *sock_kmalloc(struct sock *sk, int size, 769 - unsigned int __nocast priority); 769 + gfp_t priority); 770 770 extern void sock_kfree_s(struct sock *sk, void *mem, int size); 771 771 extern void sk_send_sigurg(struct sock *sk); 772 772 ··· 1201 1201 1202 1202 static inline struct sk_buff *sk_stream_alloc_pskb(struct sock *sk, 1203 1203 int size, int mem, 1204 - unsigned int __nocast gfp) 1204 + gfp_t gfp) 1205 1205 { 1206 1206 struct sk_buff *skb; 1207 1207 int hdr_len; ··· 1224 1224 1225 1225 static inline struct sk_buff *sk_stream_alloc_skb(struct sock *sk, 1226 1226 int size, 1227 - unsigned int __nocast gfp) 1227 + gfp_t gfp) 1228 1228 { 1229 1229 return sk_stream_alloc_pskb(sk, size, 0, gfp); 1230 1230 } ··· 1255 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 1260 return in_softirq() ? GFP_ATOMIC : GFP_KERNEL; 1261 1261 }
+1 -2
include/net/tcp.h
··· 460 460 extern void tcp_send_partial(struct sock *); 461 461 extern int tcp_write_wakeup(struct sock *); 462 462 extern void tcp_send_fin(struct sock *sk); 463 - extern void tcp_send_active_reset(struct sock *sk, 464 - unsigned int __nocast priority); 463 + extern void tcp_send_active_reset(struct sock *sk, gfp_t priority); 465 464 extern int tcp_send_synack(struct sock *); 466 465 extern void tcp_push_one(struct sock *, unsigned int mss_now); 467 466 extern void tcp_send_ack(struct sock *sk);
+6 -1
include/net/xfrm.h
··· 875 875 } 876 876 #endif 877 877 878 - struct xfrm_policy *xfrm_policy_alloc(int gfp); 878 + struct xfrm_policy *xfrm_policy_alloc(gfp_t gfp); 879 879 extern int xfrm_policy_walk(int (*func)(struct xfrm_policy *, int, int, void*), void *); 880 880 int xfrm_policy_insert(int dir, struct xfrm_policy *policy, int excl); 881 881 struct xfrm_policy *xfrm_policy_bysel(int dir, struct xfrm_selector *sel, ··· 929 929 return ipv6_addr_cmp((struct in6_addr *)a, 930 930 (struct in6_addr *)b); 931 931 } 932 + } 933 + 934 + static inline int xfrm_policy_id2dir(u32 index) 935 + { 936 + return index & 7; 932 937 } 933 938 934 939 #endif /* _NET_XFRM_H */
+1 -1
include/rdma/ib_mad.h
··· 596 596 u32 remote_qpn, u16 pkey_index, 597 597 struct ib_ah *ah, int rmpp_active, 598 598 int hdr_len, int data_len, 599 - unsigned int __nocast gfp_mask); 599 + gfp_t gfp_mask); 600 600 601 601 /** 602 602 * ib_free_send_mad - Returns data buffers used to send a MAD.
+5 -5
include/rdma/ib_sa.h
··· 285 285 int ib_sa_path_rec_get(struct ib_device *device, u8 port_num, 286 286 struct ib_sa_path_rec *rec, 287 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 289 void (*callback)(int status, 290 290 struct ib_sa_path_rec *resp, 291 291 void *context), ··· 296 296 u8 method, 297 297 struct ib_sa_mcmember_rec *rec, 298 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 300 void (*callback)(int status, 301 301 struct ib_sa_mcmember_rec *resp, 302 302 void *context), ··· 307 307 u8 method, 308 308 struct ib_sa_service_rec *rec, 309 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 311 void (*callback)(int status, 312 312 struct ib_sa_service_rec *resp, 313 313 void *context), ··· 342 342 ib_sa_mcmember_rec_set(struct ib_device *device, u8 port_num, 343 343 struct ib_sa_mcmember_rec *rec, 344 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 346 void (*callback)(int status, 347 347 struct ib_sa_mcmember_rec *resp, 348 348 void *context), ··· 384 384 ib_sa_mcmember_rec_delete(struct ib_device *device, u8 port_num, 385 385 struct ib_sa_mcmember_rec *rec, 386 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 388 void (*callback)(int status, 389 389 struct ib_sa_mcmember_rec *resp, 390 390 void *context),
+1 -1
include/rxrpc/call.h
··· 203 203 size_t sioc, 204 204 struct kvec *siov, 205 205 uint8_t rxhdr_flags, 206 - int alloc_flags, 206 + gfp_t alloc_flags, 207 207 int dup_data, 208 208 size_t *size_sent); 209 209
+1 -1
include/rxrpc/message.h
··· 63 63 uint8_t type, 64 64 int count, 65 65 struct kvec *diov, 66 - int alloc_flags, 66 + gfp_t alloc_flags, 67 67 struct rxrpc_message **_msg); 68 68 69 69 extern int rxrpc_conn_sendmsg(struct rxrpc_connection *conn, struct rxrpc_message *msg);
+2
include/sound/ac97_codec.h
··· 527 527 struct device dev; 528 528 }; 529 529 530 + #define to_ac97_t(d) container_of(d, struct _snd_ac97, dev) 531 + 530 532 /* conditions */ 531 533 static inline int ac97_is_audio(ac97_t * ac97) 532 534 {
+4 -4
include/sound/core.h
··· 290 290 void snd_memory_done(void); 291 291 int snd_memory_info_init(void); 292 292 int snd_memory_info_done(void); 293 - void *snd_hidden_kmalloc(size_t size, unsigned int __nocast flags); 294 - void *snd_hidden_kzalloc(size_t size, unsigned int __nocast flags); 295 - void *snd_hidden_kcalloc(size_t n, 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, gfp_t flags); 295 + void *snd_hidden_kcalloc(size_t n, size_t size, gfp_t flags); 296 296 void snd_hidden_kfree(const void *obj); 297 297 void *snd_hidden_vmalloc(unsigned long size); 298 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 300 #define kmalloc(size, flags) snd_hidden_kmalloc(size, flags) 301 301 #define kzalloc(size, flags) snd_hidden_kzalloc(size, flags) 302 302 #define kcalloc(n, size, flags) snd_hidden_kcalloc(n, size, flags)
+1 -1
include/sound/driver.h
··· 51 51 #ifdef CONFIG_SND_DEBUG_MEMORY 52 52 #include <linux/slab.h> 53 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 55 #undef kmalloc 56 56 void snd_wrapper_kfree(const void *); 57 57 #undef kfree
+1 -1
include/sound/emu10k1.h
··· 1059 1059 unsigned char spk71; /* Has 7.1 speakers */ 1060 1060 unsigned char sblive51; /* SBLive! 5.1 - extout 0x11 -> center, 0x12 -> lfe */ 1061 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 1063 unsigned char ecard; /* APS EEPROM */ 1064 1064 const char *driver; 1065 1065 const char *name;
+1 -1
kernel/audit.c
··· 560 560 } 561 561 562 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 565 unsigned long flags; 566 566 struct audit_buffer *ab = NULL;
+1 -1
kernel/cpuset.c
··· 1670 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 1675 int node; /* node that zone z is on */ 1676 1676 const struct cpuset *cs; /* current cpuset ancestors */
+2 -2
kernel/kfifo.c
··· 36 36 * struct kfifo with kfree(). 37 37 */ 38 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 41 struct kfifo *fifo; 42 42 ··· 64 64 * 65 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 69 unsigned char *buffer; 70 70 struct kfifo *ret;
+4 -3
kernel/power/swsusp.c
··· 1095 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 1100 unsigned long m; 1101 1101 ··· 1109 1109 return m; 1110 1110 } 1111 1111 1112 - static void free_eaten_memory(void) 1112 + void free_eaten_memory(void) 1113 1113 { 1114 1114 unsigned long m; 1115 1115 void **c; ··· 1481 1481 /* Allocate memory for the image and read the data from swap */ 1482 1482 1483 1483 error = check_pagedir(pagedir_nosave); 1484 - free_eaten_memory(); 1484 + 1485 1485 if (!error) 1486 1486 error = data_read(pagedir_nosave); 1487 1487 1488 1488 if (error) { /* We fail cleanly */ 1489 + free_eaten_memory(); 1489 1490 for_each_pbe (p, pagedir_nosave) 1490 1491 if (p->address) { 1491 1492 free_page(p->address);
+37 -2
kernel/signal.c
··· 262 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 266 int override_rlimit) 267 267 { 268 268 struct sigqueue *q = NULL; ··· 578 578 * is to alert stop-signal processing code when another 579 579 * processor has come along and cleared the flag. 580 580 */ 581 - tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; 581 + if (!(tsk->signal->flags & SIGNAL_GROUP_EXIT)) 582 + tsk->signal->flags |= SIGNAL_STOP_DEQUEUED; 582 583 } 583 584 if ( signr && 584 585 ((info->si_code & __SI_MASK) == __SI_TIMER) && ··· 1193 1192 return error; 1194 1193 } 1195 1194 1195 + /* like kill_proc_info(), but doesn't use uid/euid of "current" */ 1196 + int kill_proc_info_as_uid(int sig, struct siginfo *info, pid_t pid, 1197 + uid_t uid, uid_t euid) 1198 + { 1199 + int ret = -EINVAL; 1200 + struct task_struct *p; 1201 + 1202 + if (!valid_signal(sig)) 1203 + return ret; 1204 + 1205 + read_lock(&tasklist_lock); 1206 + p = find_task_by_pid(pid); 1207 + if (!p) { 1208 + ret = -ESRCH; 1209 + goto out_unlock; 1210 + } 1211 + if ((!info || ((unsigned long)info != 1 && 1212 + (unsigned long)info != 2 && SI_FROMUSER(info))) 1213 + && (euid != p->suid) && (euid != p->uid) 1214 + && (uid != p->suid) && (uid != p->uid)) { 1215 + ret = -EPERM; 1216 + goto out_unlock; 1217 + } 1218 + if (sig && p->sighand) { 1219 + unsigned long flags; 1220 + spin_lock_irqsave(&p->sighand->siglock, flags); 1221 + ret = __group_send_sig_info(sig, info, p); 1222 + spin_unlock_irqrestore(&p->sighand->siglock, flags); 1223 + } 1224 + out_unlock: 1225 + read_unlock(&tasklist_lock); 1226 + return ret; 1227 + } 1228 + EXPORT_SYMBOL_GPL(kill_proc_info_as_uid); 1196 1229 1197 1230 /* 1198 1231 * kill_something_info() interprets pid in interesting ways just like kill(2).
+1 -1
lib/radix-tree.c
··· 110 110 * success, return zero, with preemption disabled. On error, return -ENOMEM 111 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 115 struct radix_tree_preload *rtp; 116 116 struct radix_tree_node *node;
+1 -1
lib/ts_bm.c
··· 127 127 } 128 128 129 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 132 struct ts_config *conf; 133 133 struct ts_bm *bm;
+1 -1
lib/ts_fsm.c
··· 258 258 } 259 259 260 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 263 int i, err = -EINVAL; 264 264 struct ts_config *conf;
+1 -1
lib/ts_kmp.c
··· 87 87 } 88 88 89 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 92 struct ts_config *conf; 93 93 struct ts_kmp *kmp;
+3
mm/fremap.c
··· 89 89 size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; 90 90 if (!page->mapping || page->index >= size) 91 91 goto err_unlock; 92 + err = -ENOMEM; 93 + if (page_mapcount(page) > INT_MAX/2) 94 + goto err_unlock; 92 95 93 96 zap_pte(mm, vma, addr, pte); 94 97
+1 -1
mm/highmem.c
··· 30 30 31 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 35 unsigned int gfp = gfp_mask | (unsigned int) (long) data; 36 36
+4 -7
mm/madvise.c
··· 83 83 { 84 84 struct file *file = vma->vm_file; 85 85 86 + if (!file) 87 + return -EBADF; 88 + 86 89 if (file->f_mapping->a_ops->get_xip_page) { 87 90 /* no bad return value, but ignore advice */ 88 91 return 0; ··· 144 141 madvise_vma(struct vm_area_struct *vma, struct vm_area_struct **prev, 145 142 unsigned long start, unsigned long end, int behavior) 146 143 { 147 - struct file *filp = vma->vm_file; 148 - long error = -EBADF; 149 - 150 - if (!filp) 151 - goto out; 144 + long error; 152 145 153 146 switch (behavior) { 154 147 case MADV_NORMAL: ··· 165 166 error = -EINVAL; 166 167 break; 167 168 } 168 - 169 - out: 170 169 return error; 171 170 } 172 171
+4 -4
mm/mempolicy.c
··· 687 687 } 688 688 689 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 692 int nd; 693 693 ··· 751 751 752 752 /* Allocate a page in interleaved policy. 753 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 756 struct zonelist *zl; 757 757 struct page *page; ··· 789 789 * Should be called with the mm_sem of the vma hold. 790 790 */ 791 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 794 struct mempolicy *pol = get_vma_policy(current, vma, addr); 795 795 ··· 832 832 * 1) it's ok to take cpuset_sem (can WAIT), and 833 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 837 struct mempolicy *pol = current->mempolicy; 838 838
+3 -3
mm/mempool.c
··· 112 112 * while this function is running. mempool_alloc() & mempool_free() 113 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 117 void *element; 118 118 void **new_elements; ··· 200 200 * *never* fails when called from process contexts. (it might 201 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 205 void *element; 206 206 unsigned long flags; ··· 276 276 /* 277 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 281 kmem_cache_t *mem = (kmem_cache_t *) pool_data; 282 282 return kmem_cache_alloc(mem, gfp_mask);
+1 -2
mm/nommu.c
··· 157 157 kfree(addr); 158 158 } 159 159 160 - void *__vmalloc(unsigned long size, unsigned int __nocast gfp_mask, 161 - pgprot_t prot) 160 + void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot) 162 161 { 163 162 /* 164 163 * kmalloc doesn't like __GFP_HIGHMEM for some reason
+1 -1
mm/oom_kill.c
··· 263 263 * OR try to be smart about which process to kill. Note that we 264 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 268 struct mm_struct *mm = NULL; 269 269 task_t * p;
+6 -6
mm/page_alloc.c
··· 671 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 676 int i; 677 677 ··· 686 686 * or two. 687 687 */ 688 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 691 unsigned long flags; 692 692 struct page *page = NULL; ··· 761 761 } 762 762 763 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 766 if (!z->reclaim_pages) 767 767 return 0; ··· 774 774 * This is the 'heart' of the zoned buddy allocator. 775 775 */ 776 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 778 struct zonelist *zonelist) 779 779 { 780 780 const int wait = gfp_mask & __GFP_WAIT; ··· 977 977 /* 978 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 982 struct page * page; 983 983 page = alloc_pages(gfp_mask, order); ··· 988 988 989 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 993 struct page * page; 994 994
+1 -1
mm/page_io.c
··· 19 19 #include <linux/writeback.h> 20 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 23 struct page *page, bio_end_io_t end_io) 24 24 { 25 25 struct bio *bio;
+1 -2
mm/shmem.c
··· 921 921 } 922 922 923 923 static inline struct page * 924 - shmem_alloc_page(unsigned int __nocast gfp,struct shmem_inode_info *info, 925 - unsigned long idx) 924 + shmem_alloc_page(gfp_t gfp,struct shmem_inode_info *info, unsigned long idx) 926 925 { 927 926 return alloc_page(gfp | __GFP_ZERO); 928 927 }
+16 -18
mm/slab.c
··· 650 650 return cachep->array[smp_processor_id()]; 651 651 } 652 652 653 - static inline kmem_cache_t *__find_general_cachep(size_t size, 654 - unsigned int __nocast gfpflags) 653 + static inline kmem_cache_t *__find_general_cachep(size_t size, gfp_t gfpflags) 655 654 { 656 655 struct cache_sizes *csizep = malloc_sizes; 657 656 ··· 674 675 return csizep->cs_cachep; 675 676 } 676 677 677 - kmem_cache_t *kmem_find_general_cachep(size_t size, 678 - unsigned int __nocast gfpflags) 678 + kmem_cache_t *kmem_find_general_cachep(size_t size, gfp_t gfpflags) 679 679 { 680 680 return __find_general_cachep(size, gfpflags); 681 681 } ··· 1183 1185 * did not request dmaable memory, we might get it, but that 1184 1186 * would be relatively rare and ignorable. 1185 1187 */ 1186 - static void *kmem_getpages(kmem_cache_t *cachep, unsigned int __nocast flags, int nodeid) 1188 + static void *kmem_getpages(kmem_cache_t *cachep, gfp_t flags, int nodeid) 1187 1189 { 1188 1190 struct page *page; 1189 1191 void *addr; ··· 2046 2048 2047 2049 /* Get the memory for a slab management obj. */ 2048 2050 static struct slab* alloc_slabmgmt(kmem_cache_t *cachep, void *objp, 2049 - int colour_off, unsigned int __nocast local_flags) 2051 + int colour_off, gfp_t local_flags) 2050 2052 { 2051 2053 struct slab *slabp; 2052 2054 ··· 2147 2149 * Grow (by 1) the number of slabs within a cache. This is called by 2148 2150 * kmem_cache_alloc() when there are no active objs left in a cache. 2149 2151 */ 2150 - static int cache_grow(kmem_cache_t *cachep, unsigned int __nocast flags, int nodeid) 2152 + static int cache_grow(kmem_cache_t *cachep, gfp_t flags, int nodeid) 2151 2153 { 2152 2154 struct slab *slabp; 2153 2155 void *objp; ··· 2354 2356 #define check_slabp(x,y) do { } while(0) 2355 2357 #endif 2356 2358 2357 - static void *cache_alloc_refill(kmem_cache_t *cachep, unsigned int __nocast flags) 2359 + static void *cache_alloc_refill(kmem_cache_t *cachep, gfp_t flags) 2358 2360 { 2359 2361 int batchcount; 2360 2362 struct kmem_list3 *l3; ··· 2454 2456 } 2455 2457 2456 2458 static inline void 2457 - cache_alloc_debugcheck_before(kmem_cache_t *cachep, unsigned int __nocast flags) 2459 + cache_alloc_debugcheck_before(kmem_cache_t *cachep, gfp_t flags) 2458 2460 { 2459 2461 might_sleep_if(flags & __GFP_WAIT); 2460 2462 #if DEBUG ··· 2465 2467 #if DEBUG 2466 2468 static void * 2467 2469 cache_alloc_debugcheck_after(kmem_cache_t *cachep, 2468 - unsigned int __nocast flags, void *objp, void *caller) 2470 + gfp_t flags, void *objp, void *caller) 2469 2471 { 2470 2472 if (!objp) 2471 2473 return objp; ··· 2508 2510 #define cache_alloc_debugcheck_after(a,b,objp,d) (objp) 2509 2511 #endif 2510 2512 2511 - static inline void *____cache_alloc(kmem_cache_t *cachep, unsigned int __nocast flags) 2513 + static inline void *____cache_alloc(kmem_cache_t *cachep, gfp_t flags) 2512 2514 { 2513 2515 void* objp; 2514 2516 struct array_cache *ac; ··· 2526 2528 return objp; 2527 2529 } 2528 2530 2529 - static inline void *__cache_alloc(kmem_cache_t *cachep, unsigned int __nocast flags) 2531 + static inline void *__cache_alloc(kmem_cache_t *cachep, gfp_t flags) 2530 2532 { 2531 2533 unsigned long save_flags; 2532 2534 void* objp; ··· 2785 2787 * Allocate an object from this cache. The flags are only relevant 2786 2788 * if the cache has no available objects. 2787 2789 */ 2788 - void *kmem_cache_alloc(kmem_cache_t *cachep, unsigned int __nocast flags) 2790 + void *kmem_cache_alloc(kmem_cache_t *cachep, gfp_t flags) 2789 2791 { 2790 2792 return __cache_alloc(cachep, flags); 2791 2793 } ··· 2846 2848 * New and improved: it will now make sure that the object gets 2847 2849 * put on the correct node list so that there is no false sharing. 2848 2850 */ 2849 - void *kmem_cache_alloc_node(kmem_cache_t *cachep, unsigned int __nocast flags, int nodeid) 2851 + void *kmem_cache_alloc_node(kmem_cache_t *cachep, gfp_t flags, int nodeid) 2850 2852 { 2851 2853 unsigned long save_flags; 2852 2854 void *ptr; ··· 2873 2875 } 2874 2876 EXPORT_SYMBOL(kmem_cache_alloc_node); 2875 2877 2876 - void *kmalloc_node(size_t size, unsigned int __nocast flags, int node) 2878 + void *kmalloc_node(size_t size, gfp_t flags, int node) 2877 2879 { 2878 2880 kmem_cache_t *cachep; 2879 2881 ··· 2906 2908 * platforms. For example, on i386, it means that the memory must come 2907 2909 * from the first 16MB. 2908 2910 */ 2909 - void *__kmalloc(size_t size, unsigned int __nocast flags) 2911 + void *__kmalloc(size_t size, gfp_t flags) 2910 2912 { 2911 2913 kmem_cache_t *cachep; 2912 2914 ··· 2995 2997 * @size: how many bytes of memory are required. 2996 2998 * @flags: the type of memory to allocate. 2997 2999 */ 2998 - void *kzalloc(size_t size, unsigned int __nocast flags) 3000 + void *kzalloc(size_t size, gfp_t flags) 2999 3001 { 3000 3002 void *ret = kmalloc(size, flags); 3001 3003 if (ret) ··· 3601 3603 * @s: the string to duplicate 3602 3604 * @gfp: the GFP mask used in the kmalloc() call when allocating memory 3603 3605 */ 3604 - char *kstrdup(const char *s, unsigned int __nocast gfp) 3606 + char *kstrdup(const char *s, gfp_t gfp) 3605 3607 { 3606 3608 size_t len; 3607 3609 char *buf;
+1 -1
mm/swap_state.c
··· 68 68 * but sets SwapCache flag and private instead of mapping and index. 69 69 */ 70 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 73 int error; 74 74
+2 -2
mm/vmalloc.c
··· 395 395 396 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 400 struct page **pages; 401 401 unsigned int nr_pages, array_size, i; ··· 446 446 * allocator with @gfp_mask flags. Map them into contiguous 447 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 451 struct vm_struct *area; 452 452
+38 -13
net/atm/addr.c
··· 44 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 49 unsigned long flags; 50 50 struct atm_dev_addr *this, *p; 51 + struct list_head *head; 51 52 52 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 59 list_del(&this->entry); 55 60 kfree(this); 56 61 } 57 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 70 unsigned long flags; 64 71 struct atm_dev_addr *this; 72 + struct list_head *head; 65 73 int error; 66 74 67 75 error = check_addr(addr); 68 76 if (error) 69 77 return error; 70 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 84 if (identical(&this->addr, addr)) { 73 85 spin_unlock_irqrestore(&dev->lock, flags); 74 86 return -EEXIST; ··· 92 80 return -ENOMEM; 93 81 } 94 82 this->addr = *addr; 95 - list_add(&this->entry, &dev->local); 83 + list_add(&this->entry, head); 96 84 spin_unlock_irqrestore(&dev->lock, flags); 97 - notify_sigd(dev); 85 + if (head == &dev->local) 86 + notify_sigd(dev); 98 87 return 0; 99 88 } 100 89 101 - int atm_del_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr) 90 + int atm_del_addr(struct atm_dev *dev, struct sockaddr_atmsvc *addr, 91 + enum atm_addr_type_t atype) 102 92 { 103 93 unsigned long flags; 104 94 struct atm_dev_addr *this; 95 + struct list_head *head; 105 96 int error; 106 97 107 98 error = check_addr(addr); 108 99 if (error) 109 100 return error; 110 101 spin_lock_irqsave(&dev->lock, flags); 111 - list_for_each_entry(this, &dev->local, entry) { 102 + if (atype == ATM_ADDR_LECS) 103 + head = &dev->lecs; 104 + else 105 + head = &dev->local; 106 + list_for_each_entry(this, head, entry) { 112 107 if (identical(&this->addr, addr)) { 113 108 list_del(&this->entry); 114 109 spin_unlock_irqrestore(&dev->lock, flags); 115 110 kfree(this); 116 - notify_sigd(dev); 111 + if (head == &dev->local) 112 + notify_sigd(dev); 117 113 return 0; 118 114 } 119 115 } ··· 130 110 } 131 111 132 112 int atm_get_addr(struct atm_dev *dev, struct sockaddr_atmsvc __user * buf, 133 - size_t size) 113 + size_t size, enum atm_addr_type_t atype) 134 114 { 135 115 unsigned long flags; 136 116 struct atm_dev_addr *this; 117 + struct list_head *head; 137 118 int total = 0, error; 138 119 struct sockaddr_atmsvc *tmp_buf, *tmp_bufp; 139 120 140 121 spin_lock_irqsave(&dev->lock, flags); 141 - list_for_each_entry(this, &dev->local, entry) 122 + if (atype == ATM_ADDR_LECS) 123 + head = &dev->lecs; 124 + else 125 + head = &dev->local; 126 + list_for_each_entry(this, head, entry) 142 127 total += sizeof(struct sockaddr_atmsvc); 143 128 tmp_buf = tmp_bufp = kmalloc(total, GFP_ATOMIC); 144 129 if (!tmp_buf) { 145 130 spin_unlock_irqrestore(&dev->lock, flags); 146 131 return -ENOMEM; 147 132 } 148 - list_for_each_entry(this, &dev->local, entry) 133 + list_for_each_entry(this, head, entry) 149 134 memcpy(tmp_bufp++, &this->addr, sizeof(struct sockaddr_atmsvc)); 150 135 spin_unlock_irqrestore(&dev->lock, flags); 151 136 error = total > size ? -E2BIG : total;
+7 -5
net/atm/addr.h
··· 9 9 #include <linux/atm.h> 10 10 #include <linux/atmdev.h> 11 11 12 - 13 - void atm_reset_addr(struct atm_dev *dev); 14 - int atm_add_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); 12 + void atm_reset_addr(struct atm_dev *dev, enum atm_addr_type_t type); 13 + 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, 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 20 #endif
+1 -1
net/atm/atm_misc.c
··· 25 25 26 26 27 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 30 struct sock *sk = sk_atm(vcc); 31 31 int guess = atm_guess_pdu2truesize(pdu_size);
+1 -1
net/atm/br2684.c
··· 220 220 /* netif_stop_queue(dev); */ 221 221 dev_kfree_skb(skb); 222 222 read_unlock(&devs_lock); 223 - return -EUNATCH; 223 + return 0; 224 224 } 225 225 if (!br2684_xmit_vcc(skb, brdev, brvcc)) { 226 226 /*
+15 -5
net/atm/resources.c
··· 40 40 dev->link_rate = ATM_OC3_PCR; 41 41 spin_lock_init(&dev->lock); 42 42 INIT_LIST_HEAD(&dev->local); 43 + INIT_LIST_HEAD(&dev->lecs); 43 44 44 45 return dev; 45 46 } ··· 321 320 error = -EPERM; 322 321 goto done; 323 322 } 324 - atm_reset_addr(dev); 323 + atm_reset_addr(dev, ATM_ADDR_LOCAL); 325 324 break; 326 325 case ATM_ADDADDR: 327 326 case ATM_DELADDR: 327 + case ATM_ADDLECSADDR: 328 + case ATM_DELLECSADDR: 328 329 if (!capable(CAP_NET_ADMIN)) { 329 330 error = -EPERM; 330 331 goto done; ··· 338 335 error = -EFAULT; 339 336 goto done; 340 337 } 341 - if (cmd == ATM_ADDADDR) 342 - error = atm_add_addr(dev, &addr); 338 + if (cmd == ATM_ADDADDR || cmd == ATM_ADDLECSADDR) 339 + error = atm_add_addr(dev, &addr, 340 + (cmd == ATM_ADDADDR ? 341 + ATM_ADDR_LOCAL : ATM_ADDR_LECS)); 343 342 else 344 - error = atm_del_addr(dev, &addr); 343 + error = atm_del_addr(dev, &addr, 344 + (cmd == ATM_DELADDR ? 345 + ATM_ADDR_LOCAL : ATM_ADDR_LECS)); 345 346 goto done; 346 347 } 347 348 case ATM_GETADDR: 348 - error = atm_get_addr(dev, buf, len); 349 + case ATM_GETLECSADDR: 350 + error = atm_get_addr(dev, buf, len, 351 + (cmd == ATM_GETADDR ? 352 + ATM_ADDR_LOCAL : ATM_ADDR_LECS)); 349 353 if (error < 0) 350 354 goto done; 351 355 size = error;
+1 -1
net/ax25/ax25_in.c
··· 123 123 } 124 124 125 125 skb_pull(skb, 1); /* Remove PID */ 126 - skb->h.raw = skb->data; 126 + skb->mac.raw = skb->nh.raw; 127 127 skb->nh.raw = skb->data; 128 128 skb->dev = ax25->ax25_dev->dev; 129 129 skb->pkt_type = PACKET_HOST;
+1 -1
net/bluetooth/l2cap.c
··· 372 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 377 struct sock *sk; 378 378
+1 -1
net/bluetooth/rfcomm/core.c
··· 229 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 234 struct rfcomm_dlc *d = kmalloc(sizeof(*d), prio); 235 235 if (!d)
+1 -1
net/bluetooth/rfcomm/sock.c
··· 284 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 289 struct rfcomm_dlc *d; 290 290 struct sock *sk;
+1 -1
net/bluetooth/rfcomm/tty.c
··· 286 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 291 if (atomic_read(&dev->wmem_alloc) < rfcomm_room(dev->dlc)) { 292 292 struct sk_buff *skb = alloc_skb(size, priority);
+1 -1
net/bluetooth/sco.c
··· 418 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 423 struct sock *sk; 424 424
+1 -1
net/bridge/br_if.c
··· 79 79 { 80 80 struct net_device *dev = p->dev; 81 81 82 - dev->br_port = NULL; 83 82 p->br = NULL; 84 83 p->dev = NULL; 85 84 dev_put(dev); ··· 99 100 struct net_bridge *br = p->br; 100 101 struct net_device *dev = p->dev; 101 102 103 + dev->br_port = NULL; 102 104 dev_set_promiscuity(dev, -1); 103 105 104 106 spin_lock_bh(&br->lock);
+17 -10
net/bridge/netfilter/ebtables.c
··· 26 26 #include <linux/spinlock.h> 27 27 #include <asm/uaccess.h> 28 28 #include <linux/smp.h> 29 + #include <linux/cpumask.h> 29 30 #include <net/sock.h> 30 31 /* needed for logical [in,out]-dev filtering */ 31 32 #include "../br_private.h" ··· 824 823 /* this will get free'd in do_replace()/ebt_register_table() 825 824 if an error occurs */ 826 825 newinfo->chainstack = (struct ebt_chainstack **) 827 - vmalloc(num_possible_cpus() * sizeof(struct ebt_chainstack)); 826 + vmalloc((highest_possible_processor_id()+1) 827 + * sizeof(struct ebt_chainstack)); 828 828 if (!newinfo->chainstack) 829 829 return -ENOMEM; 830 - for (i = 0; i < num_possible_cpus(); i++) { 830 + for_each_cpu(i) { 831 831 newinfo->chainstack[i] = 832 832 vmalloc(udc_cnt * sizeof(struct ebt_chainstack)); 833 833 if (!newinfo->chainstack[i]) { ··· 897 895 898 896 /* counters of cpu 0 */ 899 897 memcpy(counters, oldcounters, 900 - sizeof(struct ebt_counter) * nentries); 898 + sizeof(struct ebt_counter) * nentries); 899 + 901 900 /* add other counters to those of cpu 0 */ 902 - for (cpu = 1; cpu < num_possible_cpus(); cpu++) { 901 + for_each_cpu(cpu) { 902 + if (cpu == 0) 903 + continue; 903 904 counter_base = COUNTER_BASE(oldcounters, nentries, cpu); 904 905 for (i = 0; i < nentries; i++) { 905 906 counters[i].pcnt += counter_base[i].pcnt; ··· 934 929 BUGPRINT("Entries_size never zero\n"); 935 930 return -EINVAL; 936 931 } 937 - countersize = COUNTER_OFFSET(tmp.nentries) * num_possible_cpus(); 932 + countersize = COUNTER_OFFSET(tmp.nentries) * 933 + (highest_possible_processor_id()+1); 938 934 newinfo = (struct ebt_table_info *) 939 935 vmalloc(sizeof(struct ebt_table_info) + countersize); 940 936 if (!newinfo) ··· 1028 1022 1029 1023 vfree(table->entries); 1030 1024 if (table->chainstack) { 1031 - for (i = 0; i < num_possible_cpus(); i++) 1025 + for_each_cpu(i) 1032 1026 vfree(table->chainstack[i]); 1033 1027 vfree(table->chainstack); 1034 1028 } ··· 1046 1040 vfree(counterstmp); 1047 1041 /* can be initialized in translate_table() */ 1048 1042 if (newinfo->chainstack) { 1049 - for (i = 0; i < num_possible_cpus(); i++) 1043 + for_each_cpu(i) 1050 1044 vfree(newinfo->chainstack[i]); 1051 1045 vfree(newinfo->chainstack); 1052 1046 } ··· 1138 1132 return -EINVAL; 1139 1133 } 1140 1134 1141 - countersize = COUNTER_OFFSET(table->table->nentries) * num_possible_cpus(); 1135 + countersize = COUNTER_OFFSET(table->table->nentries) * 1136 + (highest_possible_processor_id()+1); 1142 1137 newinfo = (struct ebt_table_info *) 1143 1138 vmalloc(sizeof(struct ebt_table_info) + countersize); 1144 1139 ret = -ENOMEM; ··· 1193 1186 up(&ebt_mutex); 1194 1187 free_chainstack: 1195 1188 if (newinfo->chainstack) { 1196 - for (i = 0; i < num_possible_cpus(); i++) 1189 + for_each_cpu(i) 1197 1190 vfree(newinfo->chainstack[i]); 1198 1191 vfree(newinfo->chainstack); 1199 1192 } ··· 1216 1209 up(&ebt_mutex); 1217 1210 vfree(table->private->entries); 1218 1211 if (table->private->chainstack) { 1219 - for (i = 0; i < num_possible_cpus(); i++) 1212 + for_each_cpu(i) 1220 1213 vfree(table->private->chainstack[i]); 1221 1214 vfree(table->private->chainstack); 1222 1215 }
+1 -1
net/core/dev.c
··· 1132 1132 #endif 1133 1133 1134 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 1137 unsigned int size; 1138 1138 u8 *data;
+7 -7
net/core/skbuff.c
··· 130 130 * Buffers may only be allocated from interrupts using a @gfp_mask of 131 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 134 int fclone) 135 135 { 136 136 struct sk_buff *skb; ··· 198 198 */ 199 199 struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, 200 200 unsigned int size, 201 - unsigned int __nocast gfp_mask) 201 + gfp_t gfp_mask) 202 202 { 203 203 struct sk_buff *skb; 204 204 u8 *data; ··· 361 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 366 struct sk_buff *n; 367 367 ··· 500 500 * header is going to be modified. Use pskb_copy() instead. 501 501 */ 502 502 503 - struct sk_buff *skb_copy(const struct sk_buff *skb, unsigned int __nocast gfp_mask) 503 + struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask) 504 504 { 505 505 int headerlen = skb->data - skb->head; 506 506 /* ··· 539 539 * The returned buffer has a reference count of 1. 540 540 */ 541 541 542 - struct sk_buff *pskb_copy(struct sk_buff *skb, unsigned int __nocast gfp_mask) 542 + struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask) 543 543 { 544 544 /* 545 545 * Allocate the copy buffer ··· 598 598 */ 599 599 600 600 int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, 601 - unsigned int __nocast gfp_mask) 601 + gfp_t gfp_mask) 602 602 { 603 603 int i; 604 604 u8 *data; ··· 689 689 */ 690 690 struct sk_buff *skb_copy_expand(const struct sk_buff *skb, 691 691 int newheadroom, int newtailroom, 692 - unsigned int __nocast gfp_mask) 692 + gfp_t gfp_mask) 693 693 { 694 694 /* 695 695 * Allocate the copy buffer
+5 -5
net/core/sock.c
··· 637 637 * @prot: struct proto associated with this new sock instance 638 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 641 struct proto *prot, int zero_it) 642 642 { 643 643 struct sock *sk = NULL; ··· 704 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 709 struct sock *newsk = sk_alloc(sk->sk_family, priority, sk->sk_prot, 0); 710 710 ··· 845 845 * Allocate a skb from the socket's send buffer. 846 846 */ 847 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 850 if (force || atomic_read(&sk->sk_wmem_alloc) < sk->sk_sndbuf) { 851 851 struct sk_buff * skb = alloc_skb(size, priority); ··· 861 861 * Allocate a skb from the socket's receive buffer. 862 862 */ 863 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 866 if (force || atomic_read(&sk->sk_rmem_alloc) < sk->sk_rcvbuf) { 867 867 struct sk_buff *skb = alloc_skb(size, priority); ··· 876 876 /* 877 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 881 if ((unsigned)size <= sysctl_optmem_max && 882 882 atomic_read(&sk->sk_omem_alloc) + size < sysctl_optmem_max) {
+1 -1
net/dccp/ackvec.c
··· 91 91 } 92 92 93 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 96 struct dccp_ackvec *av = kmalloc(sizeof(*av) + len, priority); 97 97
+2 -2
net/dccp/ackvec.h
··· 74 74 75 75 #ifdef CONFIG_IP_DCCP_ACKVEC 76 76 extern struct dccp_ackvec *dccp_ackvec_alloc(unsigned int len, 77 - const unsigned int __nocast priority); 77 + const gfp_t priority); 78 78 extern void dccp_ackvec_free(struct dccp_ackvec *av); 79 79 80 80 extern int dccp_ackvec_add(struct dccp_ackvec *av, const struct sock *sk, ··· 93 93 } 94 94 #else /* CONFIG_IP_DCCP_ACKVEC */ 95 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 98 return NULL; 99 99 }
+2 -2
net/dccp/ccid.h
··· 110 110 111 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 114 dccp_sk(sk)->dccps_hc_rx_ccid_private != NULL) 115 115 ccid->ccid_hc_rx_exit(sk); 116 116 } 117 117 118 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 121 dccp_sk(sk)->dccps_hc_tx_ccid_private != NULL) 122 122 ccid->ccid_hc_tx_exit(sk); 123 123 }
+1 -1
net/dccp/ccids/lib/loss_interval.h
··· 36 36 37 37 static inline struct dccp_li_hist_entry * 38 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 41 return kmem_cache_alloc(hist->dccplih_slab, prio); 42 42 }
+2 -2
net/dccp/ccids/lib/packet_history.h
··· 86 86 87 87 static inline struct dccp_tx_hist_entry * 88 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 91 struct dccp_tx_hist_entry *entry = kmem_cache_alloc(hist->dccptxh_slab, 92 92 prio); ··· 137 137 const struct sock *sk, 138 138 const u32 ndp, 139 139 const struct sk_buff *skb, 140 - const unsigned int __nocast prio) 140 + const gfp_t prio) 141 141 { 142 142 struct dccp_rx_hist_entry *entry = kmem_cache_alloc(hist->dccprxh_slab, 143 143 prio);
+5 -1
net/dccp/input.c
··· 375 375 case DCCP_PKT_RESET: 376 376 inet_csk_clear_xmit_timer(sk, ICSK_TIME_DACK); 377 377 break; 378 + case DCCP_PKT_DATA: 379 + if (sk->sk_state == DCCP_RESPOND) 380 + break; 378 381 case DCCP_PKT_DATAACK: 379 382 case DCCP_PKT_ACK: 380 383 /* ··· 396 393 dccp_sk(sk)->dccps_osr = DCCP_SKB_CB(skb)->dccpd_seq; 397 394 dccp_set_state(sk, DCCP_OPEN); 398 395 399 - if (dh->dccph_type == DCCP_PKT_DATAACK) { 396 + if (dh->dccph_type == DCCP_PKT_DATAACK || 397 + dh->dccph_type == DCCP_PKT_DATA) { 400 398 dccp_rcv_established(sk, skb, dh, len); 401 399 queued = 1; /* packet was queued 402 400 (by dccp_rcv_established) */
+2 -2
net/decnet/af_decnet.c
··· 452 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 457 struct dn_scp *scp; 458 458 struct sock *sk = sk_alloc(PF_DECnet, gfp, &dn_proto, 1); ··· 804 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 809 struct dn_scp *scp = DN_SK(sk); 810 810 DEFINE_WAIT(wait);
+12 -9
net/decnet/dn_nsp_out.c
··· 117 117 * The eventual aim is for each socket to have a cached header size 118 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 122 struct sk_buff *skb; 123 123 int hdr = 64; ··· 210 210 * 211 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 216 struct dn_skb_cb *cb = DN_SKB_CB(skb); 216 217 struct sk_buff *skb2; ··· 351 350 return ptr; 352 351 } 353 352 354 - void dn_nsp_queue_xmit(struct sock *sk, struct sk_buff *skb, int gfp, int oth) 353 + void dn_nsp_queue_xmit(struct sock *sk, struct sk_buff *skb, 354 + gfp_t gfp, int oth) 355 355 { 356 356 struct dn_scp *scp = DN_SK(sk); 357 357 struct dn_skb_cb *cb = DN_SKB_CB(skb); ··· 519 517 return 0; 520 518 } 521 519 522 - void dn_send_conn_conf(struct sock *sk, int gfp) 520 + void dn_send_conn_conf(struct sock *sk, gfp_t gfp) 523 521 { 524 522 struct dn_scp *scp = DN_SK(sk); 525 523 struct sk_buff *skb = NULL; ··· 551 549 552 550 553 551 static __inline__ void dn_nsp_do_disc(struct sock *sk, unsigned char msgflg, 554 - unsigned short reason, int gfp, struct dst_entry *dst, 552 + unsigned short reason, gfp_t gfp, 553 + struct dst_entry *dst, 555 554 int ddl, unsigned char *dd, __u16 rem, __u16 loc) 556 555 { 557 556 struct sk_buff *skb = NULL; ··· 594 591 595 592 596 593 void dn_nsp_send_disc(struct sock *sk, unsigned char msgflg, 597 - unsigned short reason, int gfp) 594 + unsigned short reason, gfp_t gfp) 598 595 { 599 596 struct dn_scp *scp = DN_SK(sk); 600 597 int ddl = 0; ··· 615 612 { 616 613 struct dn_skb_cb *cb = DN_SKB_CB(skb); 617 614 int ddl = 0; 618 - int gfp = GFP_ATOMIC; 615 + gfp_t gfp = GFP_ATOMIC; 619 616 620 617 dn_nsp_do_disc(NULL, msgflg, reason, gfp, skb->dst, ddl, 621 618 NULL, cb->src_port, cb->dst_port); ··· 627 624 struct dn_scp *scp = DN_SK(sk); 628 625 struct sk_buff *skb; 629 626 unsigned char *ptr; 630 - int gfp = GFP_ATOMIC; 627 + gfp_t gfp = GFP_ATOMIC; 631 628 632 629 if ((skb = dn_alloc_skb(sk, DN_MAX_NSP_DATA_HEADER + 2, gfp)) == NULL) 633 630 return; ··· 662 659 unsigned char menuver; 663 660 struct dn_skb_cb *cb; 664 661 unsigned char type = 1; 665 - int allocation = (msgflg == NSP_CI) ? sk->sk_allocation : GFP_ATOMIC; 662 + gfp_t allocation = (msgflg == NSP_CI) ? sk->sk_allocation : GFP_ATOMIC; 666 663 struct sk_buff *skb = dn_alloc_skb(sk, 200, allocation); 667 664 668 665 if (!skb)
+1 -1
net/ieee80211/ieee80211_tx.c
··· 187 187 } 188 188 189 189 static struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, 190 - unsigned int __nocast gfp_mask) 190 + gfp_t gfp_mask) 191 191 { 192 192 struct ieee80211_txb *txb; 193 193 int i;
+9 -8
net/ipv4/esp4.c
··· 5 5 #include <net/esp.h> 6 6 #include <asm/scatterlist.h> 7 7 #include <linux/crypto.h> 8 + #include <linux/kernel.h> 8 9 #include <linux/pfkeyv2.h> 9 10 #include <linux/random.h> 10 11 #include <net/icmp.h> ··· 43 42 esp = x->data; 44 43 alen = esp->auth.icv_trunc_len; 45 44 tfm = esp->conf.tfm; 46 - blksize = (crypto_tfm_alg_blocksize(tfm) + 3) & ~3; 47 - clen = (clen + 2 + blksize-1)&~(blksize-1); 45 + blksize = ALIGN(crypto_tfm_alg_blocksize(tfm), 4); 46 + clen = ALIGN(clen + 2, blksize); 48 47 if (esp->conf.padlen) 49 - clen = (clen + esp->conf.padlen-1)&~(esp->conf.padlen-1); 48 + clen = ALIGN(clen, esp->conf.padlen); 50 49 51 50 if ((nfrags = skb_cow_data(skb, clen-skb->len+alen, &trailer)) < 0) 52 51 goto error; ··· 144 143 struct ip_esp_hdr *esph; 145 144 struct esp_data *esp = x->data; 146 145 struct sk_buff *trailer; 147 - int blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); 146 + int blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); 148 147 int alen = esp->auth.icv_trunc_len; 149 148 int elen = skb->len - sizeof(struct ip_esp_hdr) - esp->conf.ivlen - alen; 150 149 int nfrags; ··· 305 304 static u32 esp4_get_max_size(struct xfrm_state *x, int mtu) 306 305 { 307 306 struct esp_data *esp = x->data; 308 - u32 blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); 307 + u32 blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); 309 308 310 309 if (x->props.mode) { 311 - mtu = (mtu + 2 + blksize-1)&~(blksize-1); 310 + mtu = ALIGN(mtu + 2, blksize); 312 311 } else { 313 312 /* The worst case. */ 314 - mtu += 2 + blksize; 313 + mtu = ALIGN(mtu + 2, 4) + blksize - 4; 315 314 } 316 315 if (esp->conf.padlen) 317 - mtu = (mtu + esp->conf.padlen-1)&~(esp->conf.padlen-1); 316 + mtu = ALIGN(mtu, esp->conf.padlen); 318 317 319 318 return mtu + x->props.header_len + esp->auth.icv_trunc_len; 320 319 }
+1 -1
net/ipv4/inet_connection_sock.c
··· 494 494 EXPORT_SYMBOL_GPL(inet_csk_reqsk_queue_prune); 495 495 496 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 499 struct sock *newsk = sk_clone(sk, priority); 500 500
+1
net/ipv4/inet_timewait_sock.c
··· 111 111 tw->tw_prot = sk->sk_prot_creator; 112 112 atomic_set(&tw->tw_refcnt, 1); 113 113 inet_twsk_dead_node_init(tw); 114 + __module_get(tw->tw_prot->owner); 114 115 } 115 116 116 117 return tw;
+1 -1
net/ipv4/ipvs/ip_vs_app.c
··· 604 604 /* 605 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 608 char *o_buf, int o_len, char *n_buf, int n_len) 609 609 { 610 610 struct iphdr *iph;
+8 -2
net/ipv4/netfilter/Kconfig
··· 139 139 140 140 config IP_NF_PPTP 141 141 tristate 'PPTP protocol support' 142 + depends on IP_NF_CONNTRACK 142 143 help 143 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 147 If you are running PPTP sessions over a stateful firewall or NAT 147 148 box, you may want to enable this feature. ··· 499 498 To compile it as a module, choose M here. If unsure, say N. 500 499 501 500 config IP_NF_TARGET_ULOG 502 - tristate "ULOG target support" 501 + tristate "ULOG target support (OBSOLETE)" 503 502 depends on IP_NF_IPTABLES 504 503 ---help--- 504 + 505 + This option enables the old IPv4-only "ipt_ULOG" implementation 506 + which has been obsoleted by the new "nfnetlink_log" code (see 507 + CONFIG_NETFILTER_NETLINK_LOG). 508 + 505 509 This option adds a `ULOG' target, which allows you to create rules in 506 510 any iptables table. The packet is passed to a userspace logging 507 511 daemon using netlink multicast sockets; unlike the LOG target
+9 -5
net/ipv4/netfilter/arp_tables.c
··· 716 716 } 717 717 718 718 /* And one copy for every other CPU */ 719 - for (i = 1; i < num_possible_cpus(); i++) { 720 - memcpy(newinfo->entries + SMP_ALIGN(newinfo->size)*i, 719 + for_each_cpu(i) { 720 + if (i == 0) 721 + continue; 722 + memcpy(newinfo->entries + SMP_ALIGN(newinfo->size) * i, 721 723 newinfo->entries, 722 724 SMP_ALIGN(newinfo->size)); 723 725 } ··· 769 767 unsigned int cpu; 770 768 unsigned int i; 771 769 772 - for (cpu = 0; cpu < num_possible_cpus(); cpu++) { 770 + for_each_cpu(cpu) { 773 771 i = 0; 774 772 ARPT_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), 775 773 t->size, ··· 887 885 return -ENOMEM; 888 886 889 887 newinfo = vmalloc(sizeof(struct arpt_table_info) 890 - + SMP_ALIGN(tmp.size) * num_possible_cpus()); 888 + + SMP_ALIGN(tmp.size) * 889 + (highest_possible_processor_id()+1)); 891 890 if (!newinfo) 892 891 return -ENOMEM; 893 892 ··· 1161 1158 = { 0, 0, 0, { 0 }, { 0 }, { } }; 1162 1159 1163 1160 newinfo = vmalloc(sizeof(struct arpt_table_info) 1164 - + SMP_ALIGN(repl->size) * num_possible_cpus()); 1161 + + SMP_ALIGN(repl->size) * 1162 + (highest_possible_processor_id()+1)); 1165 1163 if (!newinfo) { 1166 1164 ret = -ENOMEM; 1167 1165 return ret;
+8 -5
net/ipv4/netfilter/ip_conntrack_core.c
··· 1119 1119 unsigned long extra_jiffies, 1120 1120 int do_acct) 1121 1121 { 1122 - int do_event = 0; 1122 + int event = 0; 1123 1123 1124 1124 IP_NF_ASSERT(ct->timeout.data == (unsigned long)ct); 1125 1125 IP_NF_ASSERT(skb); ··· 1129 1129 /* If not in hash table, timer will not be active yet */ 1130 1130 if (!is_confirmed(ct)) { 1131 1131 ct->timeout.expires = extra_jiffies; 1132 - do_event = 1; 1132 + event = IPCT_REFRESH; 1133 1133 } else { 1134 1134 /* Need del_timer for race avoidance (may already be dying). */ 1135 1135 if (del_timer(&ct->timeout)) { 1136 1136 ct->timeout.expires = jiffies + extra_jiffies; 1137 1137 add_timer(&ct->timeout); 1138 - do_event = 1; 1138 + event = IPCT_REFRESH; 1139 1139 } 1140 1140 } 1141 1141 ··· 1144 1144 ct->counters[CTINFO2DIR(ctinfo)].packets++; 1145 1145 ct->counters[CTINFO2DIR(ctinfo)].bytes += 1146 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 1151 #endif 1149 1152 1150 1153 write_unlock_bh(&ip_conntrack_lock); 1151 1154 1152 1155 /* must be unlocked when calling event cache */ 1153 - if (do_event) 1154 - ip_conntrack_event_cache(IPCT_REFRESH, skb); 1156 + if (event) 1157 + ip_conntrack_event_cache(event, skb); 1155 1158 } 1156 1159 1157 1160 #if defined(CONFIG_IP_NF_CONNTRACK_NETLINK) || \
+43 -5
net/ipv4/netfilter/ip_conntrack_netlink.c
··· 177 177 struct nfattr *nest_count = NFA_NEST(skb, type); 178 178 u_int64_t tmp; 179 179 180 - tmp = cpu_to_be64(ct->counters[dir].packets); 181 - NFA_PUT(skb, CTA_COUNTERS_PACKETS, sizeof(u_int64_t), &tmp); 180 + tmp = htonl(ct->counters[dir].packets); 181 + NFA_PUT(skb, CTA_COUNTERS32_PACKETS, sizeof(u_int32_t), &tmp); 182 182 183 - tmp = cpu_to_be64(ct->counters[dir].bytes); 184 - NFA_PUT(skb, CTA_COUNTERS_BYTES, sizeof(u_int64_t), &tmp); 183 + tmp = htonl(ct->counters[dir].bytes); 184 + NFA_PUT(skb, CTA_COUNTERS32_BYTES, sizeof(u_int32_t), &tmp); 185 185 186 186 NFA_NEST_END(skb, nest_count); 187 187 ··· 833 833 static inline int 834 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 838 d = ct->status ^ status; 838 839 839 840 if (d & (IPS_EXPECTED|IPS_CONFIRMED|IPS_DYING)) ··· 949 948 return 0; 950 949 } 951 950 951 + static inline int 952 + ctnetlink_change_protoinfo(struct ip_conntrack *ct, struct nfattr *cda[]) 953 + { 954 + struct nfattr *tb[CTA_PROTOINFO_MAX], *attr = cda[CTA_PROTOINFO-1]; 955 + struct ip_conntrack_protocol *proto; 956 + u_int16_t npt = ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum; 957 + int err = 0; 958 + 959 + if (nfattr_parse_nested(tb, CTA_PROTOINFO_MAX, attr) < 0) 960 + goto nfattr_failure; 961 + 962 + proto = ip_conntrack_proto_find_get(npt); 963 + if (!proto) 964 + return -EINVAL; 965 + 966 + if (proto->from_nfattr) 967 + err = proto->from_nfattr(tb, ct); 968 + ip_conntrack_proto_put(proto); 969 + 970 + return err; 971 + 972 + nfattr_failure: 973 + return -ENOMEM; 974 + } 975 + 952 976 static int 953 977 ctnetlink_change_conntrack(struct ip_conntrack *ct, struct nfattr *cda[]) 954 978 { ··· 995 969 996 970 if (cda[CTA_STATUS-1]) { 997 971 err = ctnetlink_change_status(ct, cda); 972 + if (err < 0) 973 + return err; 974 + } 975 + 976 + if (cda[CTA_PROTOINFO-1]) { 977 + err = ctnetlink_change_protoinfo(ct, cda); 998 978 if (err < 0) 999 979 return err; 1000 980 } ··· 1033 1001 err = ctnetlink_change_status(ct, cda); 1034 1002 if (err < 0) 1035 1003 goto err; 1004 + 1005 + if (cda[CTA_PROTOINFO-1]) { 1006 + err = ctnetlink_change_protoinfo(ct, cda); 1007 + if (err < 0) 1008 + return err; 1009 + } 1036 1010 1037 1011 ct->helper = ip_conntrack_helper_find_get(rtuple); 1038 1012
+1 -2
net/ipv4/netfilter/ip_conntrack_proto_icmp.c
··· 296 296 struct ip_conntrack_tuple *tuple) 297 297 { 298 298 if (!tb[CTA_PROTO_ICMP_TYPE-1] 299 - || !tb[CTA_PROTO_ICMP_CODE-1] 300 - || !tb[CTA_PROTO_ICMP_ID-1]) 299 + || !tb[CTA_PROTO_ICMP_CODE-1]) 301 300 return -1; 302 301 303 302 tuple->dst.u.icmp.type =
+27
net/ipv4/netfilter/ip_conntrack_proto_tcp.c
··· 341 341 static int tcp_to_nfattr(struct sk_buff *skb, struct nfattr *nfa, 342 342 const struct ip_conntrack *ct) 343 343 { 344 + struct nfattr *nest_parms = NFA_NEST(skb, CTA_PROTOINFO_TCP); 345 + 344 346 read_lock_bh(&tcp_lock); 345 347 NFA_PUT(skb, CTA_PROTOINFO_TCP_STATE, sizeof(u_int8_t), 346 348 &ct->proto.tcp.state); 347 349 read_unlock_bh(&tcp_lock); 348 350 351 + NFA_NEST_END(skb, nest_parms); 352 + 349 353 return 0; 350 354 351 355 nfattr_failure: 352 356 read_unlock_bh(&tcp_lock); 357 + return -1; 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: 353 379 return -1; 354 380 } 355 381 #endif ··· 1149 1123 #if defined(CONFIG_IP_NF_CONNTRACK_NETLINK) || \ 1150 1124 defined(CONFIG_IP_NF_CONNTRACK_NETLINK_MODULE) 1151 1125 .to_nfattr = tcp_to_nfattr, 1126 + .from_nfattr = nfattr_to_tcp, 1152 1127 .tuple_to_nfattr = ip_ct_port_tuple_to_nfattr, 1153 1128 .nfattr_to_tuple = ip_ct_port_nfattr_to_tuple, 1154 1129 #endif
+11 -6
net/ipv4/netfilter/ip_tables.c
··· 27 27 #include <asm/semaphore.h> 28 28 #include <linux/proc_fs.h> 29 29 #include <linux/err.h> 30 + #include <linux/cpumask.h> 30 31 31 32 #include <linux/netfilter_ipv4/ip_tables.h> 32 33 ··· 922 921 } 923 922 924 923 /* And one copy for every other CPU */ 925 - for (i = 1; i < num_possible_cpus(); i++) { 926 - memcpy(newinfo->entries + SMP_ALIGN(newinfo->size)*i, 924 + for_each_cpu(i) { 925 + if (i == 0) 926 + continue; 927 + memcpy(newinfo->entries + SMP_ALIGN(newinfo->size) * i, 927 928 newinfo->entries, 928 929 SMP_ALIGN(newinfo->size)); 929 930 } ··· 946 943 struct ipt_entry *table_base; 947 944 unsigned int i; 948 945 949 - for (i = 0; i < num_possible_cpus(); i++) { 946 + for_each_cpu(i) { 950 947 table_base = 951 948 (void *)newinfo->entries 952 949 + TABLE_OFFSET(newinfo, i); ··· 993 990 unsigned int cpu; 994 991 unsigned int i; 995 992 996 - for (cpu = 0; cpu < num_possible_cpus(); cpu++) { 993 + for_each_cpu(cpu) { 997 994 i = 0; 998 995 IPT_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), 999 996 t->size, ··· 1131 1128 return -ENOMEM; 1132 1129 1133 1130 newinfo = vmalloc(sizeof(struct ipt_table_info) 1134 - + SMP_ALIGN(tmp.size) * num_possible_cpus()); 1131 + + SMP_ALIGN(tmp.size) * 1132 + (highest_possible_processor_id()+1)); 1135 1133 if (!newinfo) 1136 1134 return -ENOMEM; 1137 1135 ··· 1462 1458 = { 0, 0, 0, { 0 }, { 0 }, { } }; 1463 1459 1464 1460 newinfo = vmalloc(sizeof(struct ipt_table_info) 1465 - + SMP_ALIGN(repl->size) * num_possible_cpus()); 1461 + + SMP_ALIGN(repl->size) * 1462 + (highest_possible_processor_id()+1)); 1466 1463 if (!newinfo) 1467 1464 return -ENOMEM; 1468 1465
+1 -1
net/ipv4/tcp_bic.c
··· 136 136 else if (cwnd < ca->last_max_cwnd + max_increment*(BICTCP_B-1)) 137 137 /* slow start */ 138 138 ca->cnt = (cwnd * (BICTCP_B-1)) 139 - / cwnd-ca->last_max_cwnd; 139 + / (cwnd - ca->last_max_cwnd); 140 140 else 141 141 /* linear increase */ 142 142 ca->cnt = cwnd / max_increment;
+11 -2
net/ipv4/tcp_output.c
··· 435 435 int nsize, old_factor; 436 436 u16 flags; 437 437 438 - BUG_ON(len >= skb->len); 438 + if (unlikely(len >= skb->len)) { 439 + if (net_ratelimit()) { 440 + printk(KERN_DEBUG "TCP: seg_size=%u, mss=%u, seq=%u, " 441 + "end_seq=%u, skb->len=%u.\n", len, mss_now, 442 + TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq, 443 + skb->len); 444 + WARN_ON(1); 445 + } 446 + return 0; 447 + } 439 448 440 449 nsize = skb_headlen(skb) - len; 441 450 if (nsize < 0) ··· 1619 1610 * was unread data in the receive queue. This behavior is recommended 1620 1611 * by draft-ietf-tcpimpl-prob-03.txt section 3.10. -DaveM 1621 1612 */ 1622 - void tcp_send_active_reset(struct sock *sk, unsigned int __nocast priority) 1613 + void tcp_send_active_reset(struct sock *sk, gfp_t priority) 1623 1614 { 1624 1615 struct tcp_sock *tp = tcp_sk(sk); 1625 1616 struct sk_buff *skb;
+10 -8
net/ipv6/esp6.c
··· 31 31 #include <net/esp.h> 32 32 #include <asm/scatterlist.h> 33 33 #include <linux/crypto.h> 34 + #include <linux/kernel.h> 34 35 #include <linux/pfkeyv2.h> 35 36 #include <linux/random.h> 36 37 #include <net/icmp.h> ··· 67 66 68 67 alen = esp->auth.icv_trunc_len; 69 68 tfm = esp->conf.tfm; 70 - blksize = (crypto_tfm_alg_blocksize(tfm) + 3) & ~3; 71 - clen = (clen + 2 + blksize-1)&~(blksize-1); 69 + blksize = ALIGN(crypto_tfm_alg_blocksize(tfm), 4); 70 + clen = ALIGN(clen + 2, blksize); 72 71 if (esp->conf.padlen) 73 - clen = (clen + esp->conf.padlen-1)&~(esp->conf.padlen-1); 72 + clen = ALIGN(clen, esp->conf.padlen); 74 73 75 74 if ((nfrags = skb_cow_data(skb, clen-skb->len+alen, &trailer)) < 0) { 76 75 goto error; ··· 134 133 struct ipv6_esp_hdr *esph; 135 134 struct esp_data *esp = x->data; 136 135 struct sk_buff *trailer; 137 - int blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); 136 + int blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); 138 137 int alen = esp->auth.icv_trunc_len; 139 138 int elen = skb->len - sizeof(struct ipv6_esp_hdr) - esp->conf.ivlen - alen; 140 139 ··· 236 235 static u32 esp6_get_max_size(struct xfrm_state *x, int mtu) 237 236 { 238 237 struct esp_data *esp = x->data; 239 - u32 blksize = crypto_tfm_alg_blocksize(esp->conf.tfm); 238 + u32 blksize = ALIGN(crypto_tfm_alg_blocksize(esp->conf.tfm), 4); 240 239 241 240 if (x->props.mode) { 242 - mtu = (mtu + 2 + blksize-1)&~(blksize-1); 241 + mtu = ALIGN(mtu + 2, blksize); 243 242 } else { 244 243 /* The worst case. */ 245 - mtu += 2 + blksize; 244 + u32 padsize = ((blksize - 1) & 7) + 1; 245 + mtu = ALIGN(mtu + 2, padsize) + blksize - padsize; 246 246 } 247 247 if (esp->conf.padlen) 248 - mtu = (mtu + esp->conf.padlen-1)&~(esp->conf.padlen-1); 248 + mtu = ALIGN(mtu, esp->conf.padlen); 249 249 250 250 return mtu + x->props.header_len + esp->auth.icv_full_len; 251 251 }
+1 -1
net/ipv6/mcast.c
··· 1393 1393 1394 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 1399 static struct sk_buff *add_grhead(struct sk_buff *skb, struct ifmcaddr6 *pmc,
+1 -1
net/ipv6/ndisc.c
··· 1450 1450 1451 1451 static void pndisc_redo(struct sk_buff *skb) 1452 1452 { 1453 - ndisc_rcv(skb); 1453 + ndisc_recv_ns(skb); 1454 1454 kfree_skb(skb); 1455 1455 } 1456 1456
+11 -5
net/ipv6/netfilter/ip6_tables.c
··· 28 28 #include <asm/uaccess.h> 29 29 #include <asm/semaphore.h> 30 30 #include <linux/proc_fs.h> 31 + #include <linux/cpumask.h> 31 32 32 33 #include <linux/netfilter_ipv6/ip6_tables.h> 33 34 ··· 951 950 } 952 951 953 952 /* And one copy for every other CPU */ 954 - for (i = 1; i < num_possible_cpus(); i++) { 955 - memcpy(newinfo->entries + SMP_ALIGN(newinfo->size)*i, 953 + for_each_cpu(i) { 954 + if (i == 0) 955 + continue; 956 + memcpy(newinfo->entries + SMP_ALIGN(newinfo->size) * i, 956 957 newinfo->entries, 957 958 SMP_ALIGN(newinfo->size)); 958 959 } ··· 976 973 unsigned int i; 977 974 978 975 for (i = 0; i < num_possible_cpus(); i++) { 976 + for_each_cpu(i) { 979 977 table_base = 980 978 (void *)newinfo->entries 981 979 + TABLE_OFFSET(newinfo, i); ··· 1023 1019 unsigned int cpu; 1024 1020 unsigned int i; 1025 1021 1026 - for (cpu = 0; cpu < num_possible_cpus(); cpu++) { 1022 + for_each_cpu(cpu) { 1027 1023 i = 0; 1028 1024 IP6T_ENTRY_ITERATE(t->entries + TABLE_OFFSET(t, cpu), 1029 1025 t->size, ··· 1157 1153 return -ENOMEM; 1158 1154 1159 1155 newinfo = vmalloc(sizeof(struct ip6t_table_info) 1160 - + SMP_ALIGN(tmp.size) * num_possible_cpus()); 1156 + + SMP_ALIGN(tmp.size) * 1157 + (highest_possible_processor_id()+1)); 1161 1158 if (!newinfo) 1162 1159 return -ENOMEM; 1163 1160 ··· 1472 1467 = { 0, 0, 0, { 0 }, { 0 }, { } }; 1473 1468 1474 1469 newinfo = vmalloc(sizeof(struct ip6t_table_info) 1475 - + SMP_ALIGN(repl->size) * num_possible_cpus()); 1470 + + SMP_ALIGN(repl->size) * 1471 + (highest_possible_processor_id()+1)); 1476 1472 if (!newinfo) 1477 1473 return -ENOMEM; 1478 1474
+12 -6
net/key/af_key.c
··· 185 185 } 186 186 187 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 190 int err = -ENOBUFS; 191 191 ··· 217 217 #define BROADCAST_ONE 1 218 218 #define BROADCAST_REGISTERED 2 219 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 221 int broadcast_flags, struct sock *one_sk) 222 222 { 223 223 struct sock *sk; ··· 1416 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 1422 struct sk_buff *skb; 1422 1423 struct sadb_msg *hdr; ··· 2154 2153 2155 2154 static int pfkey_spdget(struct sock *sk, struct sk_buff *skb, struct sadb_msg *hdr, void **ext_hdrs) 2156 2155 { 2156 + unsigned int dir; 2157 2157 int err; 2158 2158 struct sadb_x_policy *pol; 2159 2159 struct xfrm_policy *xp; ··· 2163 2161 if ((pol = ext_hdrs[SADB_X_EXT_POLICY-1]) == NULL) 2164 2162 return -EINVAL; 2165 2163 2166 - xp = xfrm_policy_byid(0, pol->sadb_x_policy_id, 2164 + dir = xfrm_policy_id2dir(pol->sadb_x_policy_id); 2165 + if (dir >= XFRM_POLICY_MAX) 2166 + return -EINVAL; 2167 + 2168 + xp = xfrm_policy_byid(dir, pol->sadb_x_policy_id, 2167 2169 hdr->sadb_msg_type == SADB_X_SPDDELETE2); 2168 2170 if (xp == NULL) 2169 2171 return -ENOENT; ··· 2179 2173 if (hdr->sadb_msg_type == SADB_X_SPDDELETE2) { 2180 2174 c.data.byid = 1; 2181 2175 c.event = XFRM_MSG_DELPOLICY; 2182 - km_policy_notify(xp, pol->sadb_x_policy_dir-1, &c); 2176 + km_policy_notify(xp, dir, &c); 2183 2177 } else { 2184 - err = key_pol_get_resp(sk, xp, hdr, pol->sadb_x_policy_dir-1); 2178 + err = key_pol_get_resp(sk, xp, hdr, dir); 2185 2179 } 2186 2180 2187 2181 xfrm_pol_put(xp);
+1 -2
net/llc/llc_conn.c
··· 867 867 * Allocates a LLC sock and initializes it. Returns the new LLC sock 868 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, 871 - struct proto *prot) 870 + struct sock *llc_sk_alloc(int family, gfp_t priority, struct proto *prot) 872 871 { 873 872 struct sock *sk = sk_alloc(family, priority, prot, 1); 874 873
+3 -3
net/netfilter/nfnetlink.c
··· 133 133 memset(tb, 0, sizeof(struct nfattr *) * maxattr); 134 134 135 135 while (NFA_OK(nfa, len)) { 136 - unsigned flavor = nfa->nfa_type; 136 + unsigned flavor = NFA_TYPE(nfa); 137 137 if (flavor && flavor <= maxattr) 138 138 tb[flavor-1] = nfa; 139 139 nfa = NFA_NEXT(nfa, len); ··· 177 177 int attrlen = nlh->nlmsg_len - NLMSG_ALIGN(min_len); 178 178 179 179 while (NFA_OK(attr, attrlen)) { 180 - unsigned flavor = attr->nfa_type; 180 + unsigned flavor = NFA_TYPE(attr); 181 181 if (flavor) { 182 182 if (flavor > attr_count) 183 183 return -EINVAL; ··· 195 195 196 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 199 int err = 0; 200 200 201 201 NETLINK_CB(skb).dst_group = group;
+2 -2
net/netlink/af_netlink.c
··· 758 758 } 759 759 760 760 static inline struct sk_buff *netlink_trim(struct sk_buff *skb, 761 - unsigned int __nocast allocation) 761 + gfp_t allocation) 762 762 { 763 763 int delta; 764 764 ··· 880 880 } 881 881 882 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 885 struct netlink_broadcast_data info; 886 886 struct hlist_node *node;
+1 -1
net/netrom/nr_dev.c
··· 58 58 59 59 /* Spoof incoming device */ 60 60 skb->dev = dev; 61 - skb->h.raw = skb->data; 61 + skb->mac.raw = skb->nh.raw; 62 62 skb->nh.raw = skb->data; 63 63 skb->pkt_type = PACKET_HOST; 64 64
+1 -1
net/rxrpc/call.c
··· 1923 1923 size_t sioc, 1924 1924 struct kvec *siov, 1925 1925 u8 rxhdr_flags, 1926 - int alloc_flags, 1926 + gfp_t alloc_flags, 1927 1927 int dup_data, 1928 1928 size_t *size_sent) 1929 1929 {
+1 -1
net/rxrpc/connection.c
··· 522 522 uint8_t type, 523 523 int dcount, 524 524 struct kvec diov[], 525 - int alloc_flags, 525 + gfp_t alloc_flags, 526 526 struct rxrpc_message **_msg) 527 527 { 528 528 struct rxrpc_message *msg;
+3 -1
net/sched/Kconfig
··· 72 72 Choose this if you need a high resolution clock source but can't use 73 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 77 config NET_SCH_CLK_CPU 76 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 80 help 79 81 Say Y here if you want to use the CPU's cycle counter as clock source. 80 82 This is a cheap and high resolution clock source, but on some
+5 -5
net/sctp/associola.c
··· 71 71 const struct sctp_endpoint *ep, 72 72 const struct sock *sk, 73 73 sctp_scope_t scope, 74 - unsigned int __nocast gfp) 74 + gfp_t gfp) 75 75 { 76 76 struct sctp_sock *sp; 77 77 int i; ··· 273 273 struct sctp_association *sctp_association_new(const struct sctp_endpoint *ep, 274 274 const struct sock *sk, 275 275 sctp_scope_t scope, 276 - unsigned int __nocast gfp) 276 + gfp_t gfp) 277 277 { 278 278 struct sctp_association *asoc; 279 279 ··· 479 479 /* Add a transport address to an association. */ 480 480 struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, 481 481 const union sctp_addr *addr, 482 - const unsigned int __nocast gfp, 482 + const gfp_t gfp, 483 483 const int peer_state) 484 484 { 485 485 struct sctp_transport *peer; ··· 1231 1231 * local endpoint and the remote peer. 1232 1232 */ 1233 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 1236 sctp_scope_t scope; 1237 1237 int flags; ··· 1254 1254 /* Build the association's bind address list from the cookie. */ 1255 1255 int sctp_assoc_set_bind_addr_from_cookie(struct sctp_association *asoc, 1256 1256 struct sctp_cookie *cookie, 1257 - unsigned int __nocast gfp) 1257 + gfp_t gfp) 1258 1258 { 1259 1259 int var_size2 = ntohs(cookie->peer_init->chunk_hdr.length); 1260 1260 int var_size3 = cookie->raw_addr_list_len;
+6 -6
net/sctp/bind_addr.c
··· 53 53 54 54 /* Forward declarations for internal helpers. */ 55 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 57 int flags); 58 58 static void sctp_bind_addr_clean(struct sctp_bind_addr *); 59 59 ··· 64 64 */ 65 65 int sctp_bind_addr_copy(struct sctp_bind_addr *dest, 66 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 68 int flags) 69 69 { 70 70 struct sctp_sockaddr_entry *addr; ··· 146 146 147 147 /* Add an address to the bind address list in the SCTP_bind_addr structure. */ 148 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 151 struct sctp_sockaddr_entry *addr; 152 152 ··· 200 200 */ 201 201 union sctp_params sctp_bind_addrs_to_raw(const struct sctp_bind_addr *bp, 202 202 int *addrs_len, 203 - unsigned int __nocast gfp) 203 + gfp_t gfp) 204 204 { 205 205 union sctp_params addrparms; 206 206 union sctp_params retval; ··· 252 252 * address parameters). 253 253 */ 254 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 257 union sctp_addr_param *rawaddr; 258 258 struct sctp_paramhdr *param; ··· 350 350 /* Copy out addresses from the global local address list. */ 351 351 static int sctp_copy_one_addr(struct sctp_bind_addr *dest, 352 352 union sctp_addr *addr, 353 - sctp_scope_t scope, unsigned int __nocast gfp, 353 + sctp_scope_t scope, gfp_t gfp, 354 354 int flags) 355 355 { 356 356 int error = 0;
+1 -1
net/sctp/chunk.c
··· 62 62 } 63 63 64 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 67 struct sctp_datamsg *msg; 68 68 msg = kmalloc(sizeof(struct sctp_datamsg), gfp);
+2 -3
net/sctp/endpointola.c
··· 68 68 */ 69 69 static struct sctp_endpoint *sctp_endpoint_init(struct sctp_endpoint *ep, 70 70 struct sock *sk, 71 - unsigned int __nocast gfp) 71 + gfp_t gfp) 72 72 { 73 73 struct sctp_sock *sp = sctp_sk(sk); 74 74 memset(ep, 0, sizeof(struct sctp_endpoint)); ··· 138 138 /* Create a sctp_endpoint with all that boring stuff initialized. 139 139 * Returns NULL if there isn't enough memory. 140 140 */ 141 - struct sctp_endpoint *sctp_endpoint_new(struct sock *sk, 142 - unsigned int __nocast gfp) 141 + struct sctp_endpoint *sctp_endpoint_new(struct sock *sk, gfp_t gfp) 143 142 { 144 143 struct sctp_endpoint *ep; 145 144
+1 -1
net/sctp/protocol.c
··· 219 219 220 220 /* Copy the local addresses which are valid for 'scope' into 'bp'. */ 221 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 224 struct sctp_sockaddr_entry *addr; 225 225 int error = 0;
+7 -7
net/sctp/sm_make_chunk.c
··· 78 78 static int sctp_process_param(struct sctp_association *asoc, 79 79 union sctp_params param, 80 80 const union sctp_addr *peer_addr, 81 - unsigned int __nocast gfp); 81 + gfp_t gfp); 82 82 83 83 /* What was the inbound interface for this chunk? */ 84 84 int sctp_chunk_iif(const struct sctp_chunk *chunk) ··· 174 174 */ 175 175 struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc, 176 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 179 sctp_inithdr_t init; 180 180 union sctp_params addrs; ··· 261 261 262 262 struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc, 263 263 const struct sctp_chunk *chunk, 264 - unsigned int __nocast gfp, int unkparam_len) 264 + gfp_t gfp, int unkparam_len) 265 265 { 266 266 sctp_inithdr_t initack; 267 267 struct sctp_chunk *retval; ··· 1234 1234 /* Create a CLOSED association to use with an incoming packet. */ 1235 1235 struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *ep, 1236 1236 struct sctp_chunk *chunk, 1237 - unsigned int __nocast gfp) 1237 + gfp_t gfp) 1238 1238 { 1239 1239 struct sctp_association *asoc; 1240 1240 struct sk_buff *skb; ··· 1349 1349 struct sctp_association *sctp_unpack_cookie( 1350 1350 const struct sctp_endpoint *ep, 1351 1351 const struct sctp_association *asoc, 1352 - struct sctp_chunk *chunk, unsigned int __nocast gfp, 1352 + struct sctp_chunk *chunk, gfp_t gfp, 1353 1353 int *error, struct sctp_chunk **errp) 1354 1354 { 1355 1355 struct sctp_association *retval = NULL; ··· 1814 1814 */ 1815 1815 int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid, 1816 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 1819 union sctp_params param; 1820 1820 struct sctp_transport *transport; ··· 1985 1985 static int sctp_process_param(struct sctp_association *asoc, 1986 1986 union sctp_params param, 1987 1987 const union sctp_addr *peer_addr, 1988 - unsigned int __nocast gfp) 1988 + gfp_t gfp) 1989 1989 { 1990 1990 union sctp_addr addr; 1991 1991 int i;
+6 -6
net/sctp/sm_sideeffect.c
··· 63 63 void *event_arg, 64 64 sctp_disposition_t status, 65 65 sctp_cmd_seq_t *commands, 66 - unsigned int __nocast gfp); 66 + gfp_t gfp); 67 67 static int sctp_side_effects(sctp_event_t event_type, sctp_subtype_t subtype, 68 68 sctp_state_t state, 69 69 struct sctp_endpoint *ep, ··· 71 71 void *event_arg, 72 72 sctp_disposition_t status, 73 73 sctp_cmd_seq_t *commands, 74 - unsigned int __nocast gfp); 74 + gfp_t gfp); 75 75 76 76 /******************************************************************** 77 77 * Helper functions ··· 498 498 struct sctp_association *asoc, 499 499 struct sctp_chunk *chunk, 500 500 sctp_init_chunk_t *peer_init, 501 - unsigned int __nocast gfp) 501 + gfp_t gfp) 502 502 { 503 503 int error; 504 504 ··· 853 853 struct sctp_endpoint *ep, 854 854 struct sctp_association *asoc, 855 855 void *event_arg, 856 - unsigned int __nocast gfp) 856 + gfp_t gfp) 857 857 { 858 858 sctp_cmd_seq_t commands; 859 859 const sctp_sm_table_entry_t *state_fn; ··· 898 898 void *event_arg, 899 899 sctp_disposition_t status, 900 900 sctp_cmd_seq_t *commands, 901 - unsigned int __nocast gfp) 901 + gfp_t gfp) 902 902 { 903 903 int error; 904 904 ··· 986 986 void *event_arg, 987 987 sctp_disposition_t status, 988 988 sctp_cmd_seq_t *commands, 989 - unsigned int __nocast gfp) 989 + gfp_t gfp) 990 990 { 991 991 int error = 0; 992 992 int force;
+227 -25
net/sctp/socket.c
··· 3159 3159 return 0; 3160 3160 } 3161 3161 3162 - static int sctp_getsockopt_peer_addrs_num(struct sock *sk, int len, 3163 - char __user *optval, int __user *optlen) 3162 + static int sctp_getsockopt_peer_addrs_num_old(struct sock *sk, int len, 3163 + char __user *optval, 3164 + int __user *optlen) 3164 3165 { 3165 3166 sctp_assoc_t id; 3166 3167 struct sctp_association *asoc; ··· 3186 3185 return cnt; 3187 3186 } 3188 3187 3189 - static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, 3190 - char __user *optval, int __user *optlen) 3188 + /* 3189 + * Old API for getting list of peer addresses. Does not work for 32-bit 3190 + * programs running on a 64-bit kernel 3191 + */ 3192 + static int sctp_getsockopt_peer_addrs_old(struct sock *sk, int len, 3193 + char __user *optval, 3194 + int __user *optlen) 3191 3195 { 3192 3196 struct sctp_association *asoc; 3193 3197 struct list_head *pos; 3194 3198 int cnt = 0; 3195 - struct sctp_getaddrs getaddrs; 3199 + struct sctp_getaddrs_old getaddrs; 3196 3200 struct sctp_transport *from; 3197 3201 void __user *to; 3198 3202 union sctp_addr temp; 3199 3203 struct sctp_sock *sp = sctp_sk(sk); 3200 3204 int addrlen; 3201 3205 3202 - if (len != sizeof(struct sctp_getaddrs)) 3206 + if (len != sizeof(struct sctp_getaddrs_old)) 3203 3207 return -EINVAL; 3204 3208 3205 - if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) 3209 + if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs_old))) 3206 3210 return -EFAULT; 3207 3211 3208 3212 if (getaddrs.addr_num <= 0) return -EINVAL; ··· 3231 3225 if (cnt >= getaddrs.addr_num) break; 3232 3226 } 3233 3227 getaddrs.addr_num = cnt; 3234 - if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs))) 3228 + if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs_old))) 3235 3229 return -EFAULT; 3236 3230 3237 3231 return 0; 3238 3232 } 3239 3233 3240 - static int sctp_getsockopt_local_addrs_num(struct sock *sk, int len, 3241 - char __user *optval, 3242 - int __user *optlen) 3234 + static int sctp_getsockopt_peer_addrs(struct sock *sk, int len, 3235 + char __user *optval, int __user *optlen) 3236 + { 3237 + struct sctp_association *asoc; 3238 + struct list_head *pos; 3239 + int cnt = 0; 3240 + struct sctp_getaddrs getaddrs; 3241 + struct sctp_transport *from; 3242 + void __user *to; 3243 + union sctp_addr temp; 3244 + struct sctp_sock *sp = sctp_sk(sk); 3245 + int addrlen; 3246 + size_t space_left; 3247 + int bytes_copied; 3248 + 3249 + if (len < sizeof(struct sctp_getaddrs)) 3250 + return -EINVAL; 3251 + 3252 + if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) 3253 + return -EFAULT; 3254 + 3255 + /* For UDP-style sockets, id specifies the association to query. */ 3256 + asoc = sctp_id2assoc(sk, getaddrs.assoc_id); 3257 + if (!asoc) 3258 + return -EINVAL; 3259 + 3260 + to = optval + offsetof(struct sctp_getaddrs,addrs); 3261 + space_left = len - sizeof(struct sctp_getaddrs) - 3262 + offsetof(struct sctp_getaddrs,addrs); 3263 + 3264 + list_for_each(pos, &asoc->peer.transport_addr_list) { 3265 + from = list_entry(pos, struct sctp_transport, transports); 3266 + memcpy(&temp, &from->ipaddr, sizeof(temp)); 3267 + sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp); 3268 + addrlen = sctp_get_af_specific(sk->sk_family)->sockaddr_len; 3269 + if(space_left < addrlen) 3270 + return -ENOMEM; 3271 + temp.v4.sin_port = htons(temp.v4.sin_port); 3272 + if (copy_to_user(to, &temp, addrlen)) 3273 + return -EFAULT; 3274 + to += addrlen; 3275 + cnt++; 3276 + space_left -= addrlen; 3277 + } 3278 + 3279 + if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num)) 3280 + return -EFAULT; 3281 + bytes_copied = ((char __user *)to) - optval; 3282 + if (put_user(bytes_copied, optlen)) 3283 + return -EFAULT; 3284 + 3285 + return 0; 3286 + } 3287 + 3288 + static int sctp_getsockopt_local_addrs_num_old(struct sock *sk, int len, 3289 + char __user *optval, 3290 + int __user *optlen) 3243 3291 { 3244 3292 sctp_assoc_t id; 3245 3293 struct sctp_bind_addr *bp; ··· 3366 3306 /* Helper function that copies local addresses to user and returns the number 3367 3307 * of addresses copied. 3368 3308 */ 3369 - static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port, int max_addrs, 3370 - void __user *to) 3309 + static int sctp_copy_laddrs_to_user_old(struct sock *sk, __u16 port, int max_addrs, 3310 + void __user *to) 3371 3311 { 3372 3312 struct list_head *pos; 3373 3313 struct sctp_sockaddr_entry *addr; ··· 3401 3341 return cnt; 3402 3342 } 3403 3343 3404 - static int sctp_getsockopt_local_addrs(struct sock *sk, int len, 3405 - char __user *optval, int __user *optlen) 3344 + static int sctp_copy_laddrs_to_user(struct sock *sk, __u16 port, 3345 + void * __user *to, size_t space_left) 3346 + { 3347 + struct list_head *pos; 3348 + struct sctp_sockaddr_entry *addr; 3349 + unsigned long flags; 3350 + union sctp_addr temp; 3351 + int cnt = 0; 3352 + int addrlen; 3353 + 3354 + sctp_spin_lock_irqsave(&sctp_local_addr_lock, flags); 3355 + list_for_each(pos, &sctp_local_addr_list) { 3356 + addr = list_entry(pos, struct sctp_sockaddr_entry, list); 3357 + if ((PF_INET == sk->sk_family) && 3358 + (AF_INET6 == addr->a.sa.sa_family)) 3359 + continue; 3360 + memcpy(&temp, &addr->a, sizeof(temp)); 3361 + sctp_get_pf_specific(sk->sk_family)->addr_v4map(sctp_sk(sk), 3362 + &temp); 3363 + addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; 3364 + if(space_left<addrlen) 3365 + return -ENOMEM; 3366 + temp.v4.sin_port = htons(port); 3367 + if (copy_to_user(*to, &temp, addrlen)) { 3368 + sctp_spin_unlock_irqrestore(&sctp_local_addr_lock, 3369 + flags); 3370 + return -EFAULT; 3371 + } 3372 + *to += addrlen; 3373 + cnt ++; 3374 + space_left -= addrlen; 3375 + } 3376 + sctp_spin_unlock_irqrestore(&sctp_local_addr_lock, flags); 3377 + 3378 + return cnt; 3379 + } 3380 + 3381 + /* Old API for getting list of local addresses. Does not work for 32-bit 3382 + * programs running on a 64-bit kernel 3383 + */ 3384 + static int sctp_getsockopt_local_addrs_old(struct sock *sk, int len, 3385 + char __user *optval, int __user *optlen) 3406 3386 { 3407 3387 struct sctp_bind_addr *bp; 3408 3388 struct sctp_association *asoc; 3409 3389 struct list_head *pos; 3410 3390 int cnt = 0; 3411 - struct sctp_getaddrs getaddrs; 3391 + struct sctp_getaddrs_old getaddrs; 3412 3392 struct sctp_sockaddr_entry *addr; 3413 3393 void __user *to; 3414 3394 union sctp_addr temp; ··· 3457 3357 rwlock_t *addr_lock; 3458 3358 int err = 0; 3459 3359 3460 - if (len != sizeof(struct sctp_getaddrs)) 3360 + if (len != sizeof(struct sctp_getaddrs_old)) 3461 3361 return -EINVAL; 3462 3362 3463 - if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) 3363 + if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs_old))) 3464 3364 return -EFAULT; 3465 3365 3466 3366 if (getaddrs.addr_num <= 0) return -EINVAL; ··· 3492 3392 addr = list_entry(bp->address_list.next, 3493 3393 struct sctp_sockaddr_entry, list); 3494 3394 if (sctp_is_any(&addr->a)) { 3495 - cnt = sctp_copy_laddrs_to_user(sk, bp->port, 3496 - getaddrs.addr_num, to); 3395 + cnt = sctp_copy_laddrs_to_user_old(sk, bp->port, 3396 + getaddrs.addr_num, 3397 + to); 3497 3398 if (cnt < 0) { 3498 3399 err = cnt; 3499 3400 goto unlock; ··· 3520 3419 3521 3420 copy_getaddrs: 3522 3421 getaddrs.addr_num = cnt; 3523 - if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs))) 3422 + if (copy_to_user(optval, &getaddrs, sizeof(struct sctp_getaddrs_old))) 3524 3423 err = -EFAULT; 3424 + 3425 + unlock: 3426 + sctp_read_unlock(addr_lock); 3427 + return err; 3428 + } 3429 + 3430 + static int sctp_getsockopt_local_addrs(struct sock *sk, int len, 3431 + char __user *optval, int __user *optlen) 3432 + { 3433 + struct sctp_bind_addr *bp; 3434 + struct sctp_association *asoc; 3435 + struct list_head *pos; 3436 + int cnt = 0; 3437 + struct sctp_getaddrs getaddrs; 3438 + struct sctp_sockaddr_entry *addr; 3439 + void __user *to; 3440 + union sctp_addr temp; 3441 + struct sctp_sock *sp = sctp_sk(sk); 3442 + int addrlen; 3443 + rwlock_t *addr_lock; 3444 + int err = 0; 3445 + size_t space_left; 3446 + int bytes_copied; 3447 + 3448 + if (len <= sizeof(struct sctp_getaddrs)) 3449 + return -EINVAL; 3450 + 3451 + if (copy_from_user(&getaddrs, optval, sizeof(struct sctp_getaddrs))) 3452 + return -EFAULT; 3453 + 3454 + /* 3455 + * For UDP-style sockets, id specifies the association to query. 3456 + * If the id field is set to the value '0' then the locally bound 3457 + * addresses are returned without regard to any particular 3458 + * association. 3459 + */ 3460 + if (0 == getaddrs.assoc_id) { 3461 + bp = &sctp_sk(sk)->ep->base.bind_addr; 3462 + addr_lock = &sctp_sk(sk)->ep->base.addr_lock; 3463 + } else { 3464 + asoc = sctp_id2assoc(sk, getaddrs.assoc_id); 3465 + if (!asoc) 3466 + return -EINVAL; 3467 + bp = &asoc->base.bind_addr; 3468 + addr_lock = &asoc->base.addr_lock; 3469 + } 3470 + 3471 + to = optval + offsetof(struct sctp_getaddrs,addrs); 3472 + space_left = len - sizeof(struct sctp_getaddrs) - 3473 + offsetof(struct sctp_getaddrs,addrs); 3474 + 3475 + sctp_read_lock(addr_lock); 3476 + 3477 + /* If the endpoint is bound to 0.0.0.0 or ::0, get the valid 3478 + * addresses from the global local address list. 3479 + */ 3480 + if (sctp_list_single_entry(&bp->address_list)) { 3481 + addr = list_entry(bp->address_list.next, 3482 + struct sctp_sockaddr_entry, list); 3483 + if (sctp_is_any(&addr->a)) { 3484 + cnt = sctp_copy_laddrs_to_user(sk, bp->port, 3485 + &to, space_left); 3486 + if (cnt < 0) { 3487 + err = cnt; 3488 + goto unlock; 3489 + } 3490 + goto copy_getaddrs; 3491 + } 3492 + } 3493 + 3494 + list_for_each(pos, &bp->address_list) { 3495 + addr = list_entry(pos, struct sctp_sockaddr_entry, list); 3496 + memcpy(&temp, &addr->a, sizeof(temp)); 3497 + sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp, &temp); 3498 + addrlen = sctp_get_af_specific(temp.sa.sa_family)->sockaddr_len; 3499 + if(space_left < addrlen) 3500 + return -ENOMEM; /*fixme: right error?*/ 3501 + temp.v4.sin_port = htons(temp.v4.sin_port); 3502 + if (copy_to_user(to, &temp, addrlen)) { 3503 + err = -EFAULT; 3504 + goto unlock; 3505 + } 3506 + to += addrlen; 3507 + cnt ++; 3508 + space_left -= addrlen; 3509 + } 3510 + 3511 + copy_getaddrs: 3512 + if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num)) 3513 + return -EFAULT; 3514 + bytes_copied = ((char __user *)to) - optval; 3515 + if (put_user(bytes_copied, optlen)) 3516 + return -EFAULT; 3525 3517 3526 3518 unlock: 3527 3519 sctp_read_unlock(addr_lock); ··· 4001 3807 case SCTP_INITMSG: 4002 3808 retval = sctp_getsockopt_initmsg(sk, len, optval, optlen); 4003 3809 break; 4004 - case SCTP_GET_PEER_ADDRS_NUM: 4005 - retval = sctp_getsockopt_peer_addrs_num(sk, len, optval, 3810 + case SCTP_GET_PEER_ADDRS_NUM_OLD: 3811 + retval = sctp_getsockopt_peer_addrs_num_old(sk, len, optval, 3812 + optlen); 3813 + break; 3814 + case SCTP_GET_LOCAL_ADDRS_NUM_OLD: 3815 + retval = sctp_getsockopt_local_addrs_num_old(sk, len, optval, 3816 + optlen); 3817 + break; 3818 + case SCTP_GET_PEER_ADDRS_OLD: 3819 + retval = sctp_getsockopt_peer_addrs_old(sk, len, optval, 4006 3820 optlen); 4007 3821 break; 4008 - case SCTP_GET_LOCAL_ADDRS_NUM: 4009 - retval = sctp_getsockopt_local_addrs_num(sk, len, optval, 3822 + case SCTP_GET_LOCAL_ADDRS_OLD: 3823 + retval = sctp_getsockopt_local_addrs_old(sk, len, optval, 4010 3824 optlen); 4011 3825 break; 4012 3826 case SCTP_GET_PEER_ADDRS:
+1 -1
net/sctp/ssnmap.c
··· 58 58 * Allocate room to store at least 'len' contiguous TSNs. 59 59 */ 60 60 struct sctp_ssnmap *sctp_ssnmap_new(__u16 in, __u16 out, 61 - unsigned int __nocast gfp) 61 + gfp_t gfp) 62 62 { 63 63 struct sctp_ssnmap *retval; 64 64 int size;
+2 -2
net/sctp/transport.c
··· 57 57 /* Initialize a new transport from provided memory. */ 58 58 static struct sctp_transport *sctp_transport_init(struct sctp_transport *peer, 59 59 const union sctp_addr *addr, 60 - unsigned int __nocast gfp) 60 + gfp_t gfp) 61 61 { 62 62 /* Copy in the address. */ 63 63 peer->ipaddr = *addr; ··· 122 122 123 123 /* Allocate and initialize a new transport. */ 124 124 struct sctp_transport *sctp_transport_new(const union sctp_addr *addr, 125 - unsigned int __nocast gfp) 125 + gfp_t gfp) 126 126 { 127 127 struct sctp_transport *transport; 128 128
+9 -9
net/sctp/ulpevent.c
··· 74 74 75 75 /* Create a new sctp_ulpevent. */ 76 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 79 struct sctp_ulpevent *event; 80 80 struct sk_buff *skb; ··· 136 136 struct sctp_ulpevent *sctp_ulpevent_make_assoc_change( 137 137 const struct sctp_association *asoc, 138 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 141 struct sctp_ulpevent *event; 142 142 struct sctp_assoc_change *sac; ··· 237 237 struct sctp_ulpevent *sctp_ulpevent_make_peer_addr_change( 238 238 const struct sctp_association *asoc, 239 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 242 struct sctp_ulpevent *event; 243 243 struct sctp_paddr_change *spc; ··· 350 350 */ 351 351 struct sctp_ulpevent *sctp_ulpevent_make_remote_error( 352 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 355 struct sctp_ulpevent *event; 356 356 struct sctp_remote_error *sre; ··· 448 448 */ 449 449 struct sctp_ulpevent *sctp_ulpevent_make_send_failed( 450 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 453 struct sctp_ulpevent *event; 454 454 struct sctp_send_failed *ssf; ··· 557 557 */ 558 558 struct sctp_ulpevent *sctp_ulpevent_make_shutdown_event( 559 559 const struct sctp_association *asoc, 560 - __u16 flags, unsigned int __nocast gfp) 560 + __u16 flags, gfp_t gfp) 561 561 { 562 562 struct sctp_ulpevent *event; 563 563 struct sctp_shutdown_event *sse; ··· 620 620 * 5.3.1.6 SCTP_ADAPTION_INDICATION 621 621 */ 622 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 625 struct sctp_ulpevent *event; 626 626 struct sctp_adaption_event *sai; ··· 657 657 */ 658 658 struct sctp_ulpevent *sctp_ulpevent_make_rcvmsg(struct sctp_association *asoc, 659 659 struct sctp_chunk *chunk, 660 - unsigned int __nocast gfp) 660 + gfp_t gfp) 661 661 { 662 662 struct sctp_ulpevent *event = NULL; 663 663 struct sk_buff *skb; ··· 719 719 */ 720 720 struct sctp_ulpevent *sctp_ulpevent_make_pdapi( 721 721 const struct sctp_association *asoc, __u32 indication, 722 - unsigned int __nocast gfp) 722 + gfp_t gfp) 723 723 { 724 724 struct sctp_ulpevent *event; 725 725 struct sctp_pdapi_event *pd;
+4 -4
net/sctp/ulpqueue.c
··· 100 100 101 101 /* Process an incoming DATA chunk. */ 102 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 105 struct sk_buff_head temp; 106 106 sctp_data_chunk_t *hdr; ··· 792 792 /* Partial deliver the first message as there is pressure on rwnd. */ 793 793 void sctp_ulpq_partial_delivery(struct sctp_ulpq *ulpq, 794 794 struct sctp_chunk *chunk, 795 - unsigned int __nocast gfp) 795 + gfp_t gfp) 796 796 { 797 797 struct sctp_ulpevent *event; 798 798 struct sctp_association *asoc; ··· 816 816 817 817 /* Renege some packets to make room for an incoming chunk. */ 818 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 821 struct sctp_association *asoc; 822 822 __u16 needed, freed; ··· 855 855 /* Notify the application if an association is aborted and in 856 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 860 struct sctp_ulpevent *ev = NULL; 861 861 struct sock *sk;
+1 -1
net/sunrpc/sched.c
··· 719 719 void * 720 720 rpc_malloc(struct rpc_task *task, size_t size) 721 721 { 722 - int gfp; 722 + gfp_t gfp; 723 723 724 724 if (task->tk_flags & RPC_TASK_SWAPPER) 725 725 gfp = GFP_ATOMIC;
+3 -3
net/xfrm/xfrm_policy.c
··· 163 163 if (xp->dead) 164 164 goto out; 165 165 166 - dir = xp->index & 7; 166 + dir = xfrm_policy_id2dir(xp->index); 167 167 168 168 if (xp->lft.hard_add_expires_seconds) { 169 169 long tmo = xp->lft.hard_add_expires_seconds + ··· 225 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 230 struct xfrm_policy *policy; 231 231 ··· 417 417 struct xfrm_policy *pol, **p; 418 418 419 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 421 if (pol->index == id) { 422 422 xfrm_pol_hold(pol); 423 423 if (delete)
+1
security/keys/Makefile
··· 6 6 key.o \ 7 7 keyring.o \ 8 8 keyctl.o \ 9 + permission.o \ 9 10 process_keys.o \ 10 11 request_key.o \ 11 12 request_key_auth.o \
+70
security/keys/permission.c
··· 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);
+2
security/keys/request_key.c
··· 7 7 * modify it under the terms of the GNU General Public License 8 8 * as published by the Free Software Foundation; either version 9 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 14 #include <linux/module.h>
+3
security/keys/request_key_auth.c
··· 7 7 * modify it under the terms of the GNU General Public License 8 8 * as published by the Free Software Foundation; either version 9 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 14 #include <linux/module.h> ··· 98 96 kenter("{%d}", key->serial); 99 97 100 98 key_put(rka->target_key); 99 + kfree(rka); 101 100 102 101 } /* end request_key_auth_destroy() */ 103 102
+1 -1
sound/arm/pxa2xx-ac97.c
··· 245 245 246 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 250 if (card->power_state != SNDRV_CTL_POWER_D3cold) { 251 251 pxa2xx_audio_ops_t *platform_ops = card->dev->platform_data;
+1 -1
sound/core/memalloc.c
··· 106 106 107 107 static void *snd_dma_hack_alloc_coherent(struct device *dev, size_t size, 108 108 dma_addr_t *dma_handle, 109 - unsigned int __nocast flags) 109 + gfp_t flags) 110 110 { 111 111 void *ret; 112 112 u64 dma_mask, coherent_dma_mask;
+5 -5
sound/core/memory.c
··· 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 94 unsigned long cpu_flags; 95 95 struct snd_alloc_track *t; ··· 111 111 } 112 112 113 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 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 121 void *ret = _snd_kmalloc(size, flags); 122 122 if (ret) ··· 125 125 } 126 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 130 void *ret = NULL; 131 131 if (n != 0 && size > INT_MAX / n) ··· 190 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 195 int len; 196 196 char *buf;
+1 -1
sound/core/seq/instr/ainstr_iw.c
··· 58 58 iwffff_xenv_t *ex, 59 59 char __user **data, 60 60 long *len, 61 - unsigned int __nocast gfp_mask) 61 + gfp_t gfp_mask) 62 62 { 63 63 __u32 stype; 64 64 iwffff_env_record_t *rp, *rp_last;
+1 -1
sound/core/wrappers.c
··· 27 27 #include <linux/fs.h> 28 28 29 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 32 return kmalloc(size, flags); 33 33 }
+2
sound/isa/opl3sa2.c
··· 914 914 #endif 915 915 #ifdef CONFIG_PNP 916 916 pnp_unregister_card_driver(&opl3sa2_pnpc_driver); 917 + pnp_unregister_driver(&opl3sa2_pnp_driver); 917 918 #endif 918 919 return -ENODEV; 919 920 } ··· 928 927 #ifdef CONFIG_PNP 929 928 /* PnP cards first */ 930 929 pnp_unregister_card_driver(&opl3sa2_pnpc_driver); 930 + pnp_unregister_driver(&opl3sa2_pnp_driver); 931 931 #endif 932 932 for (idx = 0; idx < SNDRV_CARDS; idx++) 933 933 snd_card_free(snd_opl3sa2_legacy[idx]);
+7 -16
sound/pci/ac97/ac97_bus.c
··· 17 17 #include <linux/string.h> 18 18 19 19 /* 20 - * Codec families have names seperated by commas, so we search for an 21 - * individual codec name within the family string. 20 + * Let drivers decide whether they want to support given codec from their 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 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 29 static int ac97_bus_suspend(struct device *dev, pm_message_t state) 29 30 { 30 31 int ret = 0; 31 32 32 - if (dev->driver && dev->driver->suspend) { 33 - ret = dev->driver->suspend(dev, state, SUSPEND_DISABLE); 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 - } 33 + if (dev->driver && dev->driver->suspend) 34 + ret = dev->driver->suspend(dev, state, SUSPEND_POWER_DOWN); 39 35 return ret; 40 36 } 41 37 ··· 39 43 { 40 44 int ret = 0; 41 45 42 - if (dev->driver && dev->driver->resume) { 46 + if (dev->driver && dev->driver->resume) 43 47 ret = dev->driver->resume(dev, RESUME_POWER_ON); 44 - if (ret == 0) 45 - ret = dev->driver->resume(dev, RESUME_RESTORE_STATE); 46 - if (ret == 0) 47 - ret = dev->driver->resume(dev, RESUME_ENABLE); 48 - } 49 48 return ret; 50 49 } 51 50
+1 -2
sound/pci/ac97/ac97_codec.c
··· 1557 1557 1558 1558 /* build modem switches */ 1559 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 1561 return err; 1562 1562 1563 1563 /* build chip specific controls */ ··· 1828 1828 1829 1829 ac97->dev.bus = &ac97_bus_type; 1830 1830 ac97->dev.parent = ac97->bus->card->dev; 1831 - ac97->dev.platform_data = ac97; 1832 1831 ac97->dev.release = ac97_device_release; 1833 1832 snprintf(ac97->dev.bus_id, BUS_ID_SIZE, "card%d-%d", ac97->bus->card->number, ac97->num); 1834 1833 if ((err = device_register(&ac97->dev)) < 0) {
+5 -1
sound/pci/ac97/ac97_patch.c
··· 2752 2752 2753 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 2762 static struct snd_ac97_build_ops patch_si3036_ops = {
+4 -2
sound/pci/ali5451/ali5451.c
··· 1993 1993 if ((err = snd_ac97_mixer(codec->ac97_bus, &ac97, &codec->ac97[i])) < 0) { 1994 1994 snd_printk("ali mixer %d creating error.\n", i); 1995 1995 if(i == 0) 1996 - return err; 1997 - } 1996 + return err; 1997 + codec->num_of_codecs = 1; 1998 + break; 1999 + } 1998 2000 } 1999 2001 2000 2002 if (codec->spdif_support) {
+4 -1
sound/pci/emu10k1/emu10k1_main.c
··· 756 756 .sblive51 = 1} , 757 757 /* Tested by alsa bugtrack user "hus" bug #1297 12th Aug 2005 */ 758 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 760 .id = "Live", 761 761 .emu10k1_chip = 1, 762 + .ac97_chip = 2, /* ac97 is optional; both SBLive 5.1 and platinum 763 + * share the same IDs! 764 + */ 762 765 .sblive51 = 1} , 763 766 {.vendor = 0x1102, .device = 0x0002, .subsystem = 0x80511102, 764 767 .driver = "EMU10K1", .name = "SBLive! Value [CT4850]",
+9 -2
sound/pci/emu10k1/emumixer.c
··· 810 810 ac97.private_data = emu; 811 811 ac97.private_free = snd_emu10k1_mixer_free_ac97; 812 812 ac97.scaps = AC97_SCAP_NO_SPDIF; 813 - if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) 814 - return err; 813 + if ((err = snd_ac97_mixer(pbus, &ac97, &emu->ac97)) < 0) { 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 821 if (emu->audigy) { 816 822 /* set master volume to 0 dB */ 817 823 snd_ac97_write(emu->ac97, AC97_MASTER, 0x0000); ··· 842 836 for (; *c; c++) 843 837 remove_ctl(card, *c); 844 838 } else { 839 + no_ac97: 845 840 if (emu->card_capabilities->ecard) 846 841 strcpy(emu->card->mixername, "EMU APS"); 847 842 else if (emu->audigy)
+2 -4
sound/pci/hda/hda_generic.c
··· 881 881 struct hda_gspec *spec; 882 882 int err; 883 883 884 - if(!codec->afg) { 885 - snd_printdd("hda_generic: no generic modem yet\n"); 886 - return -ENODEV; 887 - } 884 + if(!codec->afg) 885 + return 0; 888 886 889 887 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 890 888 if (spec == NULL) {
+5
sound/pci/hda/hda_intel.c
··· 1137 1137 pos = azx_sd_readl(azx_dev, SD_LPIB); 1138 1138 if (chip->position_fix == POS_FIX_FIFO) 1139 1139 pos += azx_dev->fifo_size; 1140 + #if 0 /* disabled temprarily, auto-correction doesn't work well... */ 1140 1141 else if (chip->position_fix == POS_FIX_AUTO && azx_dev->period_updating) { 1141 1142 /* check the validity of DMA position */ 1142 1143 unsigned int diff = 0; ··· 1158 1157 } 1159 1158 azx_dev->period_updating = 0; 1160 1159 } 1160 + #else 1161 + else if (chip->position_fix == POS_FIX_AUTO) 1162 + pos += azx_dev->fifo_size; 1163 + #endif 1161 1164 } 1162 1165 if (pos >= azx_dev->bufsize) 1163 1166 pos = 0;
+5 -17
sound/pci/hda/patch_realtek.c
··· 1385 1385 HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), 1386 1386 ALC_BIND_MUTE("Front Playback Switch", 0x0c, 2, HDA_INPUT), 1387 1387 ALC_BIND_MUTE("Surround Playback Switch", 0x0d, 2, HDA_INPUT), 1388 - ALC_BIND_MUTE("CLFE Playback Volume", 0x0e, 2, HDA_INPUT), 1389 - ALC_BIND_MUTE("Side Playback Volume", 0x0f, 2, HDA_INPUT), 1388 + ALC_BIND_MUTE("CLFE Playback Switch", 0x0e, 2, HDA_INPUT), 1389 + ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), 1390 1390 PIN_CTL_TEST("Front Pin Mode", 0x14), 1391 1391 PIN_CTL_TEST("Surround Pin Mode", 0x15), 1392 1392 PIN_CTL_TEST("CLFE Pin Mode", 0x16), ··· 1409 1409 HDA_CODEC_MUTE("In-4 Playback Switch", 0x0b, 0x3, HDA_INPUT), 1410 1410 HDA_CODEC_VOLUME("CD Playback Volume", 0x0b, 0x4, HDA_INPUT), 1411 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 1413 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1426 1414 .name = "Channel Mode", ··· 2231 2243 HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), 2232 2244 ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), 2233 2245 HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), 2234 - ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_OUTPUT), 2246 + ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_INPUT), 2235 2247 HDA_CODEC_VOLUME("Capture Volume", 0x04, 0x0, HDA_INPUT), 2236 2248 HDA_CODEC_MUTE("Capture Switch", 0x04, 0x0, HDA_INPUT), 2237 2249 { ··· 2258 2270 HDA_CODEC_VOLUME("Headphone Playback Volume", 0x09, 0x0, HDA_OUTPUT), 2259 2271 ALC_BIND_MUTE("Headphone Playback Switch", 0x09, 2, HDA_INPUT), 2260 2272 HDA_CODEC_VOLUME_MONO("Mono Playback Volume", 0x0a, 1, 0x0, HDA_OUTPUT), 2261 - ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_OUTPUT), 2273 + ALC_BIND_MUTE_MONO("Mono Playback Switch", 0x0a, 1, 2, HDA_INPUT), 2262 2274 HDA_CODEC_VOLUME("Capture Volume", 0x05, 0x0, HDA_INPUT), 2263 2275 HDA_CODEC_MUTE("Capture Switch", 0x05, 0x0, HDA_INPUT), 2264 2276 { ··· 2489 2501 HDA_CODEC_VOLUME_MONO("Center Playback Volume", 0x0e, 1, 0x0, HDA_OUTPUT), 2490 2502 HDA_CODEC_VOLUME_MONO("LFE Playback Volume", 0x0e, 2, 0x0, HDA_OUTPUT), 2491 2503 ALC_BIND_MUTE_MONO("Center Playback Switch", 0x0e, 1, 2, HDA_INPUT), 2492 - ALC_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_OUTPUT), 2504 + ALC_BIND_MUTE_MONO("LFE Playback Switch", 0x0e, 2, 2, HDA_INPUT), 2493 2505 HDA_CODEC_VOLUME("Side Playback Volume", 0x0f, 0x0, HDA_OUTPUT), 2494 2506 ALC_BIND_MUTE("Side Playback Switch", 0x0f, 2, HDA_INPUT), 2495 2507 HDA_CODEC_MUTE("Headphone Playback Switch", 0x1b, 0x0, HDA_OUTPUT),
+1 -1
sound/pci/korg1212/korg1212.c
··· 442 442 "Setup for play", 443 443 "Playing", 444 444 "Monitor mode on", 445 - "Calibrating" 445 + "Calibrating", 446 446 "Invalid" 447 447 }; 448 448
+2
sound/pci/via82xx.c
··· 2147 2147 { .subvendor = 0x1019, .subdevice = 0x0996, .action = VIA_DXS_48K }, 2148 2148 { .subvendor = 0x1019, .subdevice = 0x0a81, .action = VIA_DXS_NO_VRA }, /* ECS K7VTA3 v8.0 */ 2149 2149 { .subvendor = 0x1019, .subdevice = 0x0a85, .action = VIA_DXS_NO_VRA }, /* ECS L7VMM2 */ 2150 + { .subvendor = 0x1019, .subdevice = 0xa101, .action = VIA_DXS_SRC }, 2150 2151 { .subvendor = 0x1025, .subdevice = 0x0033, .action = VIA_DXS_NO_VRA }, /* Acer Inspire 1353LM */ 2151 2152 { .subvendor = 0x1025, .subdevice = 0x0046, .action = VIA_DXS_SRC }, /* Acer Aspire 1524 WLMi */ 2152 2153 { .subvendor = 0x1043, .subdevice = 0x8095, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8X (FIXME: possibly VIA_DXS_ENABLE?)*/ 2153 2154 { .subvendor = 0x1043, .subdevice = 0x80a1, .action = VIA_DXS_NO_VRA }, /* ASUS A7V8-X */ 2154 2155 { .subvendor = 0x1043, .subdevice = 0x80b0, .action = VIA_DXS_NO_VRA }, /* ASUS A7V600 & K8V*/ 2156 + { .subvendor = 0x1043, .subdevice = 0x810d, .action = VIA_DXS_SRC }, /* ASUS */ 2155 2157 { .subvendor = 0x1043, .subdevice = 0x812a, .action = VIA_DXS_SRC }, /* ASUS A8V Deluxe */ 2156 2158 { .subvendor = 0x1071, .subdevice = 0x8375, .action = VIA_DXS_NO_VRA }, /* Vobis/Yakumo/Mitac notebook */ 2157 2159 { .subvendor = 0x1071, .subdevice = 0x8399, .action = VIA_DXS_NO_VRA }, /* Umax AB 595T (VIA K8N800A - VT8237) */
+1
sound/ppc/pmac.c
··· 988 988 case 0x33: 989 989 case 0x29: 990 990 case 0x24: 991 + case 0x50: 991 992 case 0x5c: 992 993 chip->num_freqs = ARRAY_SIZE(tumbler_freqs); 993 994 chip->model = PMAC_SNAPPER;
+4 -4
sound/usb/usbaudio.c
··· 1444 1444 SNDRV_PCM_INFO_BATCH | 1445 1445 SNDRV_PCM_INFO_INTERLEAVED | 1446 1446 SNDRV_PCM_INFO_BLOCK_TRANSFER, 1447 - .buffer_bytes_max = (256*1024), 1447 + .buffer_bytes_max = 1024 * 1024, 1448 1448 .period_bytes_min = 64, 1449 - .period_bytes_max = (128*1024), 1449 + .period_bytes_max = 512 * 1024, 1450 1450 .periods_min = 2, 1451 1451 .periods_max = 1024, 1452 1452 }; ··· 1458 1458 SNDRV_PCM_INFO_BATCH | 1459 1459 SNDRV_PCM_INFO_INTERLEAVED | 1460 1460 SNDRV_PCM_INFO_BLOCK_TRANSFER, 1461 - .buffer_bytes_max = (256*1024), 1461 + .buffer_bytes_max = 1024 * 1024, 1462 1462 .period_bytes_min = 64, 1463 - .period_bytes_max = (128*1024), 1463 + .period_bytes_max = 512 * 1024, 1464 1464 .periods_min = 2, 1465 1465 .periods_max = 1024, 1466 1466 };
+10
sound/usb/usbmixer_maps.c
··· 238 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 251 .id = USB_ID(0x08bb, 0x2702), 242 252 .map = linex_map, 243 253 .ignore_ctl_error = 1,
+49 -1
sound/usb/usbquirks.h
··· 117 117 YAMAHA_DEVICE(0x103b, NULL), 118 118 YAMAHA_DEVICE(0x103c, NULL), 119 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 124 YAMAHA_DEVICE(0x2000, "DGP-7"), 121 125 YAMAHA_DEVICE(0x2001, "DGP-5"), 122 126 YAMAHA_DEVICE(0x2002, NULL), ··· 1014 1010 } 1015 1011 } 1016 1012 }, 1013 + { 1014 + USB_DEVICE_VENDOR_SPEC(0x0582, 0x007a), 1015 + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1016 + .vendor_name = "Roland", 1017 + /* RD-700SX, RD-300SX */ 1018 + .ifnum = 0, 1019 + .type = QUIRK_MIDI_FIXED_ENDPOINT, 1020 + .data = & (const snd_usb_midi_endpoint_info_t) { 1021 + .out_cables = 0x0003, 1022 + .in_cables = 0x0003 1023 + } 1024 + } 1025 + }, 1026 + 1027 + /* Guillemot devices */ 1028 + { 1029 + /* 1030 + * This is for the "Windows Edition" where the external MIDI ports are 1031 + * the only MIDI ports; the control data is reported through HID 1032 + * interfaces. The "Macintosh Edition" has ID 0xd002 and uses standard 1033 + * compliant USB MIDI ports for external MIDI and controls. 1034 + */ 1035 + USB_DEVICE_VENDOR_SPEC(0x06f8, 0xb000), 1036 + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1037 + .vendor_name = "Hercules", 1038 + .product_name = "DJ Console (WE)", 1039 + .ifnum = 4, 1040 + .type = QUIRK_MIDI_FIXED_ENDPOINT, 1041 + .data = & (const snd_usb_midi_endpoint_info_t) { 1042 + .out_cables = 0x0001, 1043 + .in_cables = 0x0001 1044 + } 1045 + } 1046 + }, 1017 1047 1018 1048 /* Midiman/M-Audio devices */ 1019 1049 { ··· 1377 1339 } 1378 1340 }, 1379 1341 1342 + /* TerraTec devices */ 1343 + { 1344 + USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012), 1345 + .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1346 + .vendor_name = "TerraTec", 1347 + .product_name = "PHASE 26", 1348 + .ifnum = 3, 1349 + .type = QUIRK_MIDI_STANDARD_INTERFACE 1350 + } 1351 + }, 1380 1352 { 1381 1353 USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0013), 1382 1354 .driver_info = (unsigned long) & (const snd_usb_audio_quirk_t) { 1383 - .vendor_name = "Terratec", 1355 + .vendor_name = "TerraTec", 1384 1356 .product_name = "PHASE 26", 1385 1357 .ifnum = 3, 1386 1358 .type = QUIRK_MIDI_STANDARD_INTERFACE