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

Merge branches 'bugzilla-15418', 'bugzilla-21722', 'bugzilla-22932', 'misc-2.6.37' and 'osi-regression' into release

Len Brown 6cc5615f a5dc4f89

+3879 -3801
+83
Documentation/ABI/testing/sysfs-bus-rbd
··· 1 + What: /sys/bus/rbd/ 2 + Date: November 2010 3 + Contact: Yehuda Sadeh <yehuda@hq.newdream.net>, 4 + Sage Weil <sage@newdream.net> 5 + Description: 6 + 7 + Being used for adding and removing rbd block devices. 8 + 9 + Usage: <mon ip addr> <options> <pool name> <rbd image name> [snap name] 10 + 11 + $ echo "192.168.0.1 name=admin rbd foo" > /sys/bus/rbd/add 12 + 13 + The snapshot name can be "-" or omitted to map the image read/write. A <dev-id> 14 + will be assigned for any registered block device. If snapshot is used, it will 15 + be mapped read-only. 16 + 17 + Removal of a device: 18 + 19 + $ echo <dev-id> > /sys/bus/rbd/remove 20 + 21 + Entries under /sys/bus/rbd/devices/<dev-id>/ 22 + -------------------------------------------- 23 + 24 + client_id 25 + 26 + The ceph unique client id that was assigned for this specific session. 27 + 28 + major 29 + 30 + The block device major number. 31 + 32 + name 33 + 34 + The name of the rbd image. 35 + 36 + pool 37 + 38 + The pool where this rbd image resides. The pool-name pair is unique 39 + per rados system. 40 + 41 + size 42 + 43 + The size (in bytes) of the mapped block device. 44 + 45 + refresh 46 + 47 + Writing to this file will reread the image header data and set 48 + all relevant datastructures accordingly. 49 + 50 + current_snap 51 + 52 + The current snapshot for which the device is mapped. 53 + 54 + create_snap 55 + 56 + Create a snapshot: 57 + 58 + $ echo <snap-name> > /sys/bus/rbd/devices/<dev-id>/snap_create 59 + 60 + rollback_snap 61 + 62 + Rolls back data to the specified snapshot. This goes over the entire 63 + list of rados blocks and sends a rollback command to each. 64 + 65 + $ echo <snap-name> > /sys/bus/rbd/devices/<dev-id>/snap_rollback 66 + 67 + snap_* 68 + 69 + A directory per each snapshot 70 + 71 + 72 + Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name> 73 + ------------------------------------------------------------- 74 + 75 + id 76 + 77 + The rados internal snapshot id assigned for this snapshot 78 + 79 + size 80 + 81 + The size of the image when this snapshot was taken. 82 + 83 +
-129
Documentation/driver-model/interface.txt
··· 1 - 2 - Device Interfaces 3 - 4 - Introduction 5 - ~~~~~~~~~~~~ 6 - 7 - Device interfaces are the logical interfaces of device classes that correlate 8 - directly to userspace interfaces, like device nodes. 9 - 10 - Each device class may have multiple interfaces through which you can 11 - access the same device. An input device may support the mouse interface, 12 - the 'evdev' interface, and the touchscreen interface. A SCSI disk would 13 - support the disk interface, the SCSI generic interface, and possibly a raw 14 - device interface. 15 - 16 - Device interfaces are registered with the class they belong to. As devices 17 - are added to the class, they are added to each interface registered with 18 - the class. The interface is responsible for determining whether the device 19 - supports the interface or not. 20 - 21 - 22 - Programming Interface 23 - ~~~~~~~~~~~~~~~~~~~~~ 24 - 25 - struct device_interface { 26 - char * name; 27 - rwlock_t lock; 28 - u32 devnum; 29 - struct device_class * devclass; 30 - 31 - struct list_head node; 32 - struct driver_dir_entry dir; 33 - 34 - int (*add_device)(struct device *); 35 - int (*add_device)(struct intf_data *); 36 - }; 37 - 38 - int interface_register(struct device_interface *); 39 - void interface_unregister(struct device_interface *); 40 - 41 - 42 - An interface must specify the device class it belongs to. It is added 43 - to that class's list of interfaces on registration. 44 - 45 - 46 - Interfaces can be added to a device class at any time. Whenever it is 47 - added, each device in the class is passed to the interface's 48 - add_device callback. When an interface is removed, each device is 49 - removed from the interface. 50 - 51 - 52 - Devices 53 - ~~~~~~~ 54 - Once a device is added to a device class, it is added to each 55 - interface that is registered with the device class. The class 56 - is expected to place a class-specific data structure in 57 - struct device::class_data. The interface can use that (along with 58 - other fields of struct device) to determine whether or not the driver 59 - and/or device support that particular interface. 60 - 61 - 62 - Data 63 - ~~~~ 64 - 65 - struct intf_data { 66 - struct list_head node; 67 - struct device_interface * intf; 68 - struct device * dev; 69 - u32 intf_num; 70 - }; 71 - 72 - int interface_add_data(struct interface_data *); 73 - 74 - The interface is responsible for allocating and initializing a struct 75 - intf_data and calling interface_add_data() to add it to the device's list 76 - of interfaces it belongs to. This list will be iterated over when the device 77 - is removed from the class (instead of all possible interfaces for a class). 78 - This structure should probably be embedded in whatever per-device data 79 - structure the interface is allocating anyway. 80 - 81 - Devices are enumerated within the interface. This happens in interface_add_data() 82 - and the enumerated value is stored in the struct intf_data for that device. 83 - 84 - sysfs 85 - ~~~~~ 86 - Each interface is given a directory in the directory of the device 87 - class it belongs to: 88 - 89 - Interfaces get a directory in the class's directory as well: 90 - 91 - class/ 92 - `-- input 93 - |-- devices 94 - |-- drivers 95 - |-- mouse 96 - `-- evdev 97 - 98 - When a device is added to the interface, a symlink is created that points 99 - to the device's directory in the physical hierarchy: 100 - 101 - class/ 102 - `-- input 103 - |-- devices 104 - | `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/ 105 - |-- drivers 106 - | `-- usb:usb_mouse -> ../../../bus/drivers/usb_mouse/ 107 - |-- mouse 108 - | `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/ 109 - `-- evdev 110 - `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/ 111 - 112 - 113 - Future Plans 114 - ~~~~~~~~~~~~ 115 - A device interface is correlated directly with a userspace interface 116 - for a device, specifically a device node. For instance, a SCSI disk 117 - exposes at least two interfaces to userspace: the standard SCSI disk 118 - interface and the SCSI generic interface. It might also export a raw 119 - device interface. 120 - 121 - Many interfaces have a major number associated with them and each 122 - device gets a minor number. Or, multiple interfaces might share one 123 - major number, and each will receive a range of minor numbers (like in 124 - the case of input devices). 125 - 126 - These major and minor numbers could be stored in the interface 127 - structure. Major and minor allocations could happen when the interface 128 - is registered with the class, or via a helper function. 129 -
+4 -5
Documentation/filesystems/vfs.txt
··· 660 660 releasepage: releasepage is called on PagePrivate pages to indicate 661 661 that the page should be freed if possible. ->releasepage 662 662 should remove any private data from the page and clear the 663 - PagePrivate flag. It may also remove the page from the 664 - address_space. If this fails for some reason, it may indicate 665 - failure with a 0 return value. 666 - This is used in two distinct though related cases. The first 667 - is when the VM finds a clean page with no active users and 663 + PagePrivate flag. If releasepage() fails for some reason, it must 664 + indicate failure with a 0 return value. 665 + releasepage() is used in two distinct though related cases. The 666 + first is when the VM finds a clean page with no active users and 668 667 wants to make it a free page. If ->releasepage succeeds, the 669 668 page will be removed from the address_space and become free. 670 669
+3 -4
MAINTAINERS
··· 2060 2060 2061 2061 DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS 2062 2062 M: Greg Kroah-Hartman <gregkh@suse.de> 2063 - T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ 2063 + T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git 2064 2064 S: Supported 2065 2065 F: Documentation/kobject.txt 2066 2066 F: drivers/base/ ··· 2080 2080 2081 2081 INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets) 2082 2082 M: Chris Wilson <chris@chris-wilson.co.uk> 2083 - L: intel-gfx@lists.freedesktop.org 2083 + L: intel-gfx@lists.freedesktop.org (subscribers-only) 2084 2084 L: dri-devel@lists.freedesktop.org 2085 2085 T: git git://git.kernel.org/pub/scm/linux/kernel/git/ickle/drm-intel.git 2086 2086 S: Supported ··· 4064 4064 4065 4065 NETEFFECT IWARP RNIC DRIVER (IW_NES) 4066 4066 M: Faisal Latif <faisal.latif@intel.com> 4067 - M: Chien Tung <chien.tin.tung@intel.com> 4068 4067 L: linux-rdma@vger.kernel.org 4069 - W: http://www.neteffect.com 4068 + W: http://www.intel.com/Products/Server/Adapters/Server-Cluster/Server-Cluster-overview.htm 4070 4069 S: Supported 4071 4070 F: drivers/infiniband/hw/nes/ 4072 4071
+1 -1
Makefile
··· 1 1 VERSION = 2 2 2 PATCHLEVEL = 6 3 3 SUBLEVEL = 37 4 - EXTRAVERSION = -rc4 4 + EXTRAVERSION = -rc5 5 5 NAME = Flesh-Eating Bats with Fangs 6 6 7 7 # *DOCUMENTATION*
+1 -1
arch/arm/Kconfig
··· 9 9 select GENERIC_ATOMIC64 if (!CPU_32v6K || !AEABI) 10 10 select HAVE_OPROFILE if (HAVE_PERF_EVENTS) 11 11 select HAVE_ARCH_KGDB 12 - select HAVE_KPROBES if (!XIP_KERNEL) 12 + select HAVE_KPROBES if (!XIP_KERNEL && !THUMB2_KERNEL) 13 13 select HAVE_KRETPROBES if (HAVE_KPROBES) 14 14 select HAVE_FUNCTION_TRACER if (!XIP_KERNEL) 15 15 select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
-5
arch/arm/boot/Makefile
··· 70 70 $(obj)/uImage: LOADADDR=$(ZRELADDR) 71 71 endif 72 72 73 - ifeq ($(CONFIG_THUMB2_KERNEL),y) 74 - # Set bit 0 to 1 so that "mov pc, rx" switches to Thumb-2 mode 75 - $(obj)/uImage: STARTADDR=$(shell echo $(LOADADDR) | sed -e "s/.$$/1/") 76 - else 77 73 $(obj)/uImage: STARTADDR=$(LOADADDR) 78 - endif 79 74 80 75 $(obj)/uImage: $(obj)/zImage FORCE 81 76 $(call if_changed,uimage)
+2
arch/arm/boot/bootp/init.S
··· 73 73 74 74 .size _start, . - _start 75 75 76 + .align 77 + 76 78 .type data,#object 77 79 data: .word initrd_start @ source initrd address 78 80 .word initrd_phys @ destination initrd address
+10 -3
arch/arm/boot/compressed/head.S
··· 125 125 * sort out different calling conventions 126 126 */ 127 127 .align 128 + .arm @ Always enter in ARM state 128 129 start: 129 130 .type start,#function 130 - .rept 8 131 + THUMB( adr r12, BSYM(1f) ) 132 + THUMB( bx r12 ) 133 + THUMB( .rept 6 ) 134 + ARM( .rept 8 ) 131 135 mov r0, r0 132 136 .endr 133 137 ··· 139 135 .word 0x016f2818 @ Magic numbers to help the loader 140 136 .word start @ absolute load/run zImage address 141 137 .word _edata @ zImage end address 138 + THUMB( .thumb ) 142 139 1: mov r7, r1 @ save architecture ID 143 140 mov r8, r2 @ save atags pointer 144 141 ··· 179 174 ldr sp, [r0, #28] 180 175 #ifdef CONFIG_AUTO_ZRELADDR 181 176 @ determine final kernel image address 182 - and r4, pc, #0xf8000000 177 + mov r4, pc 178 + and r4, r4, #0xf8000000 183 179 add r4, r4, #TEXT_OFFSET 184 180 #else 185 181 ldr r4, =zreladdr ··· 451 445 */ 452 446 mov r1, #0x1e 453 447 orr r1, r1, #3 << 10 454 - mov r2, pc, lsr #20 448 + mov r2, pc 449 + mov r2, r2, lsr #20 455 450 orr r1, r1, r2, lsl #20 456 451 add r0, r3, r2, lsl #2 457 452 str r1, [r0], #4
+24 -16
arch/arm/common/gic.c
··· 146 146 unsigned int shift = (irq % 4) * 8; 147 147 unsigned int cpu = cpumask_first(mask_val); 148 148 u32 val; 149 + struct irq_desc *desc; 149 150 150 151 spin_lock(&irq_controller_lock); 151 - irq_desc[irq].node = cpu; 152 + desc = irq_to_desc(irq); 153 + if (desc == NULL) { 154 + spin_unlock(&irq_controller_lock); 155 + return -EINVAL; 156 + } 157 + desc->node = cpu; 152 158 val = readl(reg) & ~(0xff << shift); 153 159 val |= 1 << (cpu + shift); 154 160 writel(val, reg); ··· 216 210 void __init gic_dist_init(unsigned int gic_nr, void __iomem *base, 217 211 unsigned int irq_start) 218 212 { 219 - unsigned int max_irq, i; 213 + unsigned int gic_irqs, irq_limit, i; 220 214 u32 cpumask = 1 << smp_processor_id(); 221 215 222 216 if (gic_nr >= MAX_GIC_NR) ··· 232 226 233 227 /* 234 228 * Find out how many interrupts are supported. 235 - */ 236 - max_irq = readl(base + GIC_DIST_CTR) & 0x1f; 237 - max_irq = (max_irq + 1) * 32; 238 - 239 - /* 240 229 * The GIC only supports up to 1020 interrupt sources. 241 - * Limit this to either the architected maximum, or the 242 - * platform maximum. 243 230 */ 244 - if (max_irq > max(1020, NR_IRQS)) 245 - max_irq = max(1020, NR_IRQS); 231 + gic_irqs = readl(base + GIC_DIST_CTR) & 0x1f; 232 + gic_irqs = (gic_irqs + 1) * 32; 233 + if (gic_irqs > 1020) 234 + gic_irqs = 1020; 246 235 247 236 /* 248 237 * Set all global interrupts to be level triggered, active low. 249 238 */ 250 - for (i = 32; i < max_irq; i += 16) 239 + for (i = 32; i < gic_irqs; i += 16) 251 240 writel(0, base + GIC_DIST_CONFIG + i * 4 / 16); 252 241 253 242 /* 254 243 * Set all global interrupts to this CPU only. 255 244 */ 256 - for (i = 32; i < max_irq; i += 4) 245 + for (i = 32; i < gic_irqs; i += 4) 257 246 writel(cpumask, base + GIC_DIST_TARGET + i * 4 / 4); 258 247 259 248 /* 260 249 * Set priority on all global interrupts. 261 250 */ 262 - for (i = 32; i < max_irq; i += 4) 251 + for (i = 32; i < gic_irqs; i += 4) 263 252 writel(0xa0a0a0a0, base + GIC_DIST_PRI + i * 4 / 4); 264 253 265 254 /* 266 255 * Disable all interrupts. Leave the PPI and SGIs alone 267 256 * as these enables are banked registers. 268 257 */ 269 - for (i = 32; i < max_irq; i += 32) 258 + for (i = 32; i < gic_irqs; i += 32) 270 259 writel(0xffffffff, base + GIC_DIST_ENABLE_CLEAR + i * 4 / 32); 260 + 261 + /* 262 + * Limit number of interrupts registered to the platform maximum 263 + */ 264 + irq_limit = gic_data[gic_nr].irq_offset + gic_irqs; 265 + if (WARN_ON(irq_limit > NR_IRQS)) 266 + irq_limit = NR_IRQS; 271 267 272 268 /* 273 269 * Setup the Linux IRQ subsystem. 274 270 */ 275 - for (i = irq_start; i < gic_data[gic_nr].irq_offset + max_irq; i++) { 271 + for (i = irq_start; i < irq_limit; i++) { 276 272 set_irq_chip(i, &gic_chip); 277 273 set_irq_chip_data(i, &gic_data[gic_nr]); 278 274 set_irq_handler(i, handle_level_irq);
+341
arch/arm/configs/at91rm9200_defconfig
··· 1 + CONFIG_EXPERIMENTAL=y 2 + # CONFIG_LOCALVERSION_AUTO is not set 3 + # CONFIG_SWAP is not set 4 + CONFIG_SYSVIPC=y 5 + CONFIG_IKCONFIG=y 6 + CONFIG_IKCONFIG_PROC=y 7 + CONFIG_LOG_BUF_SHIFT=14 8 + CONFIG_SYSFS_DEPRECATED_V2=y 9 + CONFIG_BLK_DEV_INITRD=y 10 + CONFIG_MODULES=y 11 + CONFIG_MODULE_FORCE_LOAD=y 12 + CONFIG_MODULE_UNLOAD=y 13 + CONFIG_MODVERSIONS=y 14 + CONFIG_MODULE_SRCVERSION_ALL=y 15 + # CONFIG_BLK_DEV_BSG is not set 16 + # CONFIG_IOSCHED_CFQ is not set 17 + CONFIG_ARCH_AT91=y 18 + CONFIG_MACH_ONEARM=y 19 + CONFIG_ARCH_AT91RM9200DK=y 20 + CONFIG_MACH_AT91RM9200EK=y 21 + CONFIG_MACH_CSB337=y 22 + CONFIG_MACH_CSB637=y 23 + CONFIG_MACH_CARMEVA=y 24 + CONFIG_MACH_ATEB9200=y 25 + CONFIG_MACH_KB9200=y 26 + CONFIG_MACH_PICOTUX2XX=y 27 + CONFIG_MACH_KAFA=y 28 + CONFIG_MACH_ECBAT91=y 29 + CONFIG_MACH_YL9200=y 30 + CONFIG_MACH_CPUAT91=y 31 + CONFIG_MACH_ECO920=y 32 + CONFIG_MTD_AT91_DATAFLASH_CARD=y 33 + CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 34 + CONFIG_AT91_TIMER_HZ=100 35 + # CONFIG_ARM_THUMB is not set 36 + CONFIG_PCCARD=y 37 + CONFIG_AT91_CF=y 38 + CONFIG_NO_HZ=y 39 + CONFIG_HIGH_RES_TIMERS=y 40 + CONFIG_PREEMPT=y 41 + CONFIG_AEABI=y 42 + CONFIG_LEDS=y 43 + CONFIG_LEDS_CPU=y 44 + CONFIG_ZBOOT_ROM_TEXT=0x10000000 45 + CONFIG_ZBOOT_ROM_BSS=0x20040000 46 + CONFIG_KEXEC=y 47 + CONFIG_FPE_NWFPE=y 48 + CONFIG_BINFMT_MISC=y 49 + CONFIG_NET=y 50 + CONFIG_PACKET=y 51 + CONFIG_UNIX=y 52 + CONFIG_XFRM_USER=m 53 + CONFIG_INET=y 54 + CONFIG_IP_MULTICAST=y 55 + CONFIG_IP_PNP=y 56 + CONFIG_IP_PNP_DHCP=y 57 + CONFIG_IP_PNP_BOOTP=y 58 + CONFIG_NET_IPIP=m 59 + CONFIG_NET_IPGRE=m 60 + CONFIG_INET_AH=m 61 + CONFIG_INET_ESP=m 62 + CONFIG_INET_IPCOMP=m 63 + CONFIG_INET_XFRM_MODE_TRANSPORT=m 64 + CONFIG_INET_XFRM_MODE_TUNNEL=m 65 + CONFIG_INET_XFRM_MODE_BEET=m 66 + CONFIG_IPV6_PRIVACY=y 67 + CONFIG_IPV6_ROUTER_PREF=y 68 + CONFIG_IPV6_ROUTE_INFO=y 69 + CONFIG_INET6_AH=m 70 + CONFIG_INET6_ESP=m 71 + CONFIG_INET6_IPCOMP=m 72 + CONFIG_IPV6_MIP6=m 73 + CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m 74 + CONFIG_IPV6_TUNNEL=m 75 + CONFIG_BRIDGE=m 76 + CONFIG_VLAN_8021Q=m 77 + CONFIG_BT=m 78 + CONFIG_BT_L2CAP=m 79 + CONFIG_BT_SCO=m 80 + CONFIG_BT_RFCOMM=m 81 + CONFIG_BT_RFCOMM_TTY=y 82 + CONFIG_BT_BNEP=m 83 + CONFIG_BT_BNEP_MC_FILTER=y 84 + CONFIG_BT_BNEP_PROTO_FILTER=y 85 + CONFIG_BT_HIDP=m 86 + CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 87 + CONFIG_MTD=y 88 + CONFIG_MTD_CONCAT=y 89 + CONFIG_MTD_PARTITIONS=y 90 + CONFIG_MTD_CMDLINE_PARTS=y 91 + CONFIG_MTD_AFS_PARTS=y 92 + CONFIG_MTD_CHAR=y 93 + CONFIG_MTD_BLOCK=y 94 + CONFIG_MTD_CFI=y 95 + CONFIG_MTD_JEDECPROBE=y 96 + CONFIG_MTD_CFI_INTELEXT=y 97 + CONFIG_MTD_CFI_AMDSTD=y 98 + CONFIG_MTD_COMPLEX_MAPPINGS=y 99 + CONFIG_MTD_PHYSMAP=y 100 + CONFIG_MTD_PLATRAM=y 101 + CONFIG_MTD_DATAFLASH=y 102 + CONFIG_MTD_NAND=y 103 + CONFIG_MTD_NAND_ATMEL=y 104 + CONFIG_MTD_NAND_PLATFORM=y 105 + CONFIG_MTD_UBI=y 106 + CONFIG_MTD_UBI_GLUEBI=y 107 + CONFIG_BLK_DEV_LOOP=y 108 + CONFIG_BLK_DEV_NBD=y 109 + CONFIG_BLK_DEV_RAM=y 110 + CONFIG_BLK_DEV_RAM_SIZE=8192 111 + CONFIG_ATMEL_TCLIB=y 112 + CONFIG_EEPROM_LEGACY=m 113 + CONFIG_SCSI=y 114 + CONFIG_BLK_DEV_SD=y 115 + CONFIG_BLK_DEV_SR=m 116 + CONFIG_BLK_DEV_SR_VENDOR=y 117 + CONFIG_CHR_DEV_SG=m 118 + CONFIG_SCSI_MULTI_LUN=y 119 + # CONFIG_SCSI_LOWLEVEL is not set 120 + CONFIG_NETDEVICES=y 121 + CONFIG_TUN=m 122 + CONFIG_PHYLIB=y 123 + CONFIG_DAVICOM_PHY=y 124 + CONFIG_SMSC_PHY=y 125 + CONFIG_MICREL_PHY=y 126 + CONFIG_NET_ETHERNET=y 127 + CONFIG_ARM_AT91_ETHER=y 128 + # CONFIG_NETDEV_1000 is not set 129 + # CONFIG_NETDEV_10000 is not set 130 + CONFIG_USB_CATC=m 131 + CONFIG_USB_KAWETH=m 132 + CONFIG_USB_PEGASUS=m 133 + CONFIG_USB_RTL8150=m 134 + CONFIG_USB_USBNET=m 135 + CONFIG_USB_NET_DM9601=m 136 + CONFIG_USB_NET_GL620A=m 137 + CONFIG_USB_NET_PLUSB=m 138 + CONFIG_USB_NET_RNDIS_HOST=m 139 + CONFIG_USB_ALI_M5632=y 140 + CONFIG_USB_AN2720=y 141 + CONFIG_USB_EPSON2888=y 142 + CONFIG_PPP=y 143 + CONFIG_PPP_MULTILINK=y 144 + CONFIG_PPP_FILTER=y 145 + CONFIG_PPP_ASYNC=y 146 + CONFIG_PPP_DEFLATE=y 147 + CONFIG_PPP_BSDCOMP=y 148 + CONFIG_PPP_MPPE=m 149 + CONFIG_PPPOE=m 150 + CONFIG_SLIP=m 151 + CONFIG_SLIP_COMPRESSED=y 152 + CONFIG_SLIP_SMART=y 153 + CONFIG_SLIP_MODE_SLIP6=y 154 + # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 155 + CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 156 + CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 157 + CONFIG_INPUT_EVDEV=y 158 + CONFIG_KEYBOARD_GPIO=y 159 + # CONFIG_INPUT_MOUSE is not set 160 + CONFIG_INPUT_TOUCHSCREEN=y 161 + CONFIG_SERIAL_ATMEL=y 162 + CONFIG_SERIAL_ATMEL_CONSOLE=y 163 + CONFIG_LEGACY_PTY_COUNT=32 164 + CONFIG_HW_RANDOM=y 165 + CONFIG_I2C=y 166 + CONFIG_I2C_CHARDEV=y 167 + CONFIG_I2C_GPIO=y 168 + CONFIG_SPI=y 169 + CONFIG_SPI_ATMEL=y 170 + CONFIG_SPI_BITBANG=y 171 + CONFIG_GPIO_SYSFS=y 172 + CONFIG_HWMON=m 173 + CONFIG_SENSORS_ADM1021=m 174 + CONFIG_SENSORS_ADM1025=m 175 + CONFIG_SENSORS_ADM1026=m 176 + CONFIG_SENSORS_ADM1029=m 177 + CONFIG_SENSORS_ADM1031=m 178 + CONFIG_SENSORS_ADM9240=m 179 + CONFIG_SENSORS_DS1621=m 180 + CONFIG_SENSORS_GL518SM=m 181 + CONFIG_SENSORS_GL520SM=m 182 + CONFIG_SENSORS_IT87=m 183 + CONFIG_SENSORS_LM63=m 184 + CONFIG_SENSORS_LM73=m 185 + CONFIG_SENSORS_LM75=m 186 + CONFIG_SENSORS_LM77=m 187 + CONFIG_SENSORS_LM78=m 188 + CONFIG_SENSORS_LM80=m 189 + CONFIG_SENSORS_LM83=m 190 + CONFIG_SENSORS_LM85=m 191 + CONFIG_SENSORS_LM87=m 192 + CONFIG_SENSORS_LM90=m 193 + CONFIG_SENSORS_LM92=m 194 + CONFIG_SENSORS_MAX1619=m 195 + CONFIG_SENSORS_PCF8591=m 196 + CONFIG_SENSORS_SMSC47B397=m 197 + CONFIG_SENSORS_W83781D=m 198 + CONFIG_SENSORS_W83791D=m 199 + CONFIG_SENSORS_W83792D=m 200 + CONFIG_SENSORS_W83793=m 201 + CONFIG_SENSORS_W83L785TS=m 202 + CONFIG_WATCHDOG=y 203 + CONFIG_WATCHDOG_NOWAYOUT=y 204 + CONFIG_AT91RM9200_WATCHDOG=y 205 + CONFIG_FB=y 206 + CONFIG_FB_MODE_HELPERS=y 207 + CONFIG_FB_TILEBLITTING=y 208 + CONFIG_FB_S1D13XXX=y 209 + CONFIG_BACKLIGHT_LCD_SUPPORT=y 210 + CONFIG_LCD_CLASS_DEVICE=y 211 + CONFIG_BACKLIGHT_CLASS_DEVICE=y 212 + # CONFIG_BACKLIGHT_GENERIC is not set 213 + CONFIG_DISPLAY_SUPPORT=y 214 + CONFIG_FRAMEBUFFER_CONSOLE=y 215 + CONFIG_FONTS=y 216 + CONFIG_FONT_MINI_4x6=y 217 + CONFIG_LOGO=y 218 + # CONFIG_LOGO_LINUX_MONO is not set 219 + # CONFIG_LOGO_LINUX_VGA16 is not set 220 + CONFIG_USB=y 221 + CONFIG_USB_DEVICEFS=y 222 + # CONFIG_USB_DEVICE_CLASS is not set 223 + CONFIG_USB_MON=y 224 + CONFIG_USB_OHCI_HCD=y 225 + CONFIG_USB_ACM=m 226 + CONFIG_USB_PRINTER=m 227 + CONFIG_USB_STORAGE=y 228 + CONFIG_USB_SERIAL=y 229 + CONFIG_USB_SERIAL_CONSOLE=y 230 + CONFIG_USB_SERIAL_GENERIC=y 231 + CONFIG_USB_SERIAL_FTDI_SIO=y 232 + CONFIG_USB_SERIAL_KEYSPAN=y 233 + CONFIG_USB_SERIAL_KEYSPAN_MPR=y 234 + CONFIG_USB_SERIAL_KEYSPAN_USA28=y 235 + CONFIG_USB_SERIAL_KEYSPAN_USA28X=y 236 + CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y 237 + CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y 238 + CONFIG_USB_SERIAL_KEYSPAN_USA19=y 239 + CONFIG_USB_SERIAL_KEYSPAN_USA18X=y 240 + CONFIG_USB_SERIAL_KEYSPAN_USA19W=y 241 + CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y 242 + CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y 243 + CONFIG_USB_SERIAL_KEYSPAN_USA49W=y 244 + CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y 245 + CONFIG_USB_SERIAL_MCT_U232=y 246 + CONFIG_USB_SERIAL_PL2303=y 247 + CONFIG_USB_GADGET=y 248 + CONFIG_USB_ETH=m 249 + CONFIG_USB_MASS_STORAGE=m 250 + CONFIG_MMC=y 251 + CONFIG_MMC_AT91=y 252 + CONFIG_NEW_LEDS=y 253 + CONFIG_LEDS_CLASS=y 254 + CONFIG_LEDS_GPIO=y 255 + CONFIG_LEDS_TRIGGERS=y 256 + CONFIG_LEDS_TRIGGER_TIMER=y 257 + CONFIG_LEDS_TRIGGER_HEARTBEAT=y 258 + CONFIG_LEDS_TRIGGER_GPIO=y 259 + CONFIG_LEDS_TRIGGER_DEFAULT_ON=y 260 + CONFIG_RTC_CLASS=y 261 + # CONFIG_RTC_HCTOSYS is not set 262 + CONFIG_RTC_DRV_DS1307=y 263 + CONFIG_RTC_DRV_PCF8563=y 264 + CONFIG_RTC_DRV_AT91RM9200=y 265 + CONFIG_EXT2_FS=y 266 + CONFIG_EXT2_FS_XATTR=y 267 + CONFIG_EXT3_FS=y 268 + # CONFIG_EXT3_FS_XATTR is not set 269 + CONFIG_REISERFS_FS=y 270 + CONFIG_AUTOFS4_FS=y 271 + CONFIG_ISO9660_FS=y 272 + CONFIG_JOLIET=y 273 + CONFIG_ZISOFS=y 274 + CONFIG_UDF_FS=y 275 + CONFIG_MSDOS_FS=y 276 + CONFIG_VFAT_FS=y 277 + CONFIG_NTFS_FS=m 278 + CONFIG_TMPFS=y 279 + CONFIG_CONFIGFS_FS=y 280 + CONFIG_JFFS2_FS=y 281 + CONFIG_JFFS2_SUMMARY=y 282 + CONFIG_JFFS2_COMPRESSION_OPTIONS=y 283 + CONFIG_JFFS2_LZO=y 284 + CONFIG_JFFS2_RUBIN=y 285 + CONFIG_CRAMFS=y 286 + CONFIG_MINIX_FS=y 287 + CONFIG_NFS_FS=y 288 + CONFIG_NFS_V3=y 289 + CONFIG_NFS_V3_ACL=y 290 + CONFIG_NFS_V4=y 291 + CONFIG_ROOT_NFS=y 292 + CONFIG_NFSD=y 293 + CONFIG_SMB_FS=m 294 + CONFIG_CIFS=m 295 + CONFIG_PARTITION_ADVANCED=y 296 + CONFIG_MAC_PARTITION=y 297 + CONFIG_NLS_CODEPAGE_437=y 298 + CONFIG_NLS_CODEPAGE_737=m 299 + CONFIG_NLS_CODEPAGE_775=m 300 + CONFIG_NLS_CODEPAGE_850=m 301 + CONFIG_NLS_CODEPAGE_852=m 302 + CONFIG_NLS_CODEPAGE_855=m 303 + CONFIG_NLS_CODEPAGE_857=m 304 + CONFIG_NLS_CODEPAGE_860=m 305 + CONFIG_NLS_CODEPAGE_861=m 306 + CONFIG_NLS_CODEPAGE_862=m 307 + CONFIG_NLS_CODEPAGE_863=m 308 + CONFIG_NLS_CODEPAGE_864=m 309 + CONFIG_NLS_CODEPAGE_865=m 310 + CONFIG_NLS_CODEPAGE_866=m 311 + CONFIG_NLS_CODEPAGE_869=m 312 + CONFIG_NLS_CODEPAGE_936=m 313 + CONFIG_NLS_CODEPAGE_950=m 314 + CONFIG_NLS_CODEPAGE_932=m 315 + CONFIG_NLS_CODEPAGE_949=m 316 + CONFIG_NLS_CODEPAGE_874=m 317 + CONFIG_NLS_ISO8859_8=m 318 + CONFIG_NLS_CODEPAGE_1250=m 319 + CONFIG_NLS_CODEPAGE_1251=m 320 + CONFIG_NLS_ASCII=m 321 + CONFIG_NLS_ISO8859_1=y 322 + CONFIG_NLS_ISO8859_2=m 323 + CONFIG_NLS_ISO8859_3=m 324 + CONFIG_NLS_ISO8859_4=m 325 + CONFIG_NLS_ISO8859_5=m 326 + CONFIG_NLS_ISO8859_6=m 327 + CONFIG_NLS_ISO8859_7=m 328 + CONFIG_NLS_ISO8859_9=m 329 + CONFIG_NLS_ISO8859_13=m 330 + CONFIG_NLS_ISO8859_14=m 331 + CONFIG_NLS_ISO8859_15=m 332 + CONFIG_NLS_KOI8_R=m 333 + CONFIG_NLS_KOI8_U=m 334 + CONFIG_NLS_UTF8=y 335 + CONFIG_MAGIC_SYSRQ=y 336 + CONFIG_DEBUG_FS=y 337 + CONFIG_DEBUG_KERNEL=y 338 + # CONFIG_RCU_CPU_STALL_DETECTOR is not set 339 + # CONFIG_FTRACE is not set 340 + CONFIG_CRYPTO_PCBC=y 341 + CONFIG_CRYPTO_SHA1=y
-72
arch/arm/configs/at91rm9200dk_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_SWAP is not set 3 - CONFIG_SYSVIPC=y 4 - CONFIG_LOG_BUF_SHIFT=14 5 - CONFIG_BLK_DEV_INITRD=y 6 - CONFIG_MODULES=y 7 - CONFIG_MODULE_UNLOAD=y 8 - # CONFIG_IOSCHED_DEADLINE is not set 9 - # CONFIG_IOSCHED_CFQ is not set 10 - CONFIG_ARCH_AT91=y 11 - CONFIG_ARCH_AT91RM9200DK=y 12 - CONFIG_MACH_ECO920=y 13 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 14 - # CONFIG_ARM_THUMB is not set 15 - CONFIG_PCCARD=y 16 - CONFIG_AT91_CF=y 17 - CONFIG_LEDS=y 18 - CONFIG_ZBOOT_ROM_TEXT=0x0 19 - CONFIG_ZBOOT_ROM_BSS=0x0 20 - CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw" 21 - CONFIG_FPE_NWFPE=y 22 - CONFIG_NET=y 23 - CONFIG_PACKET=y 24 - CONFIG_UNIX=y 25 - CONFIG_INET=y 26 - CONFIG_IP_PNP=y 27 - CONFIG_IP_PNP_BOOTP=y 28 - # CONFIG_IPV6 is not set 29 - CONFIG_MTD=y 30 - CONFIG_MTD_PARTITIONS=y 31 - CONFIG_MTD_CMDLINE_PARTS=y 32 - CONFIG_MTD_CHAR=y 33 - CONFIG_MTD_BLOCK=y 34 - CONFIG_MTD_CFI=y 35 - CONFIG_MTD_JEDECPROBE=y 36 - CONFIG_MTD_CFI_AMDSTD=y 37 - CONFIG_MTD_PHYSMAP=y 38 - CONFIG_BLK_DEV_RAM=y 39 - CONFIG_BLK_DEV_RAM_SIZE=8192 40 - CONFIG_NETDEVICES=y 41 - CONFIG_NET_ETHERNET=y 42 - CONFIG_ARM_AT91_ETHER=y 43 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 44 - # CONFIG_INPUT_KEYBOARD is not set 45 - # CONFIG_INPUT_MOUSE is not set 46 - # CONFIG_SERIO is not set 47 - CONFIG_SERIAL_ATMEL=y 48 - CONFIG_SERIAL_ATMEL_CONSOLE=y 49 - CONFIG_I2C=y 50 - CONFIG_I2C_CHARDEV=y 51 - CONFIG_I2C_GPIO=y 52 - CONFIG_WATCHDOG=y 53 - CONFIG_WATCHDOG_NOWAYOUT=y 54 - CONFIG_AT91RM9200_WATCHDOG=y 55 - # CONFIG_VGA_CONSOLE is not set 56 - # CONFIG_USB_HID is not set 57 - CONFIG_USB=y 58 - CONFIG_USB_DEBUG=y 59 - CONFIG_USB_DEVICEFS=y 60 - CONFIG_USB_MON=y 61 - CONFIG_USB_OHCI_HCD=y 62 - CONFIG_USB_GADGET=y 63 - CONFIG_MMC=y 64 - CONFIG_RTC_CLASS=y 65 - CONFIG_RTC_DRV_AT91RM9200=y 66 - CONFIG_EXT2_FS=y 67 - CONFIG_INOTIFY=y 68 - CONFIG_TMPFS=y 69 - CONFIG_CRAMFS=y 70 - CONFIG_DEBUG_KERNEL=y 71 - CONFIG_DEBUG_USER=y 72 - CONFIG_DEBUG_LL=y
-73
arch/arm/configs/at91rm9200ek_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_LOCALVERSION_AUTO is not set 3 - # CONFIG_SWAP is not set 4 - CONFIG_SYSVIPC=y 5 - CONFIG_LOG_BUF_SHIFT=14 6 - CONFIG_BLK_DEV_INITRD=y 7 - CONFIG_MODULES=y 8 - CONFIG_MODULE_UNLOAD=y 9 - # CONFIG_IOSCHED_DEADLINE is not set 10 - # CONFIG_IOSCHED_CFQ is not set 11 - CONFIG_ARCH_AT91=y 12 - CONFIG_MACH_AT91RM9200EK=y 13 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 14 - # CONFIG_ARM_THUMB is not set 15 - CONFIG_LEDS=y 16 - CONFIG_LEDS_CPU=y 17 - CONFIG_ZBOOT_ROM_TEXT=0x0 18 - CONFIG_ZBOOT_ROM_BSS=0x0 19 - CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw" 20 - CONFIG_FPE_NWFPE=y 21 - CONFIG_NET=y 22 - CONFIG_PACKET=y 23 - CONFIG_UNIX=y 24 - CONFIG_INET=y 25 - CONFIG_IP_PNP=y 26 - CONFIG_IP_PNP_BOOTP=y 27 - # CONFIG_IPV6 is not set 28 - CONFIG_MTD=y 29 - CONFIG_MTD_PARTITIONS=y 30 - CONFIG_MTD_CMDLINE_PARTS=y 31 - CONFIG_MTD_CHAR=y 32 - CONFIG_MTD_BLOCK=y 33 - CONFIG_MTD_CFI=y 34 - CONFIG_MTD_JEDECPROBE=y 35 - CONFIG_MTD_CFI_AMDSTD=y 36 - CONFIG_MTD_PHYSMAP=y 37 - CONFIG_BLK_DEV_RAM=y 38 - CONFIG_BLK_DEV_RAM_SIZE=8192 39 - CONFIG_NETDEVICES=y 40 - CONFIG_NET_ETHERNET=y 41 - CONFIG_ARM_AT91_ETHER=y 42 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 43 - # CONFIG_INPUT_KEYBOARD is not set 44 - # CONFIG_INPUT_MOUSE is not set 45 - # CONFIG_SERIO is not set 46 - CONFIG_SERIAL_ATMEL=y 47 - CONFIG_SERIAL_ATMEL_CONSOLE=y 48 - CONFIG_I2C=y 49 - CONFIG_I2C_CHARDEV=y 50 - CONFIG_I2C_GPIO=y 51 - CONFIG_WATCHDOG=y 52 - CONFIG_WATCHDOG_NOWAYOUT=y 53 - CONFIG_AT91RM9200_WATCHDOG=y 54 - CONFIG_FB=y 55 - CONFIG_FB_S1D13XXX=y 56 - # CONFIG_VGA_CONSOLE is not set 57 - # CONFIG_USB_HID is not set 58 - CONFIG_USB=y 59 - CONFIG_USB_DEBUG=y 60 - CONFIG_USB_DEVICEFS=y 61 - CONFIG_USB_MON=y 62 - CONFIG_USB_OHCI_HCD=y 63 - CONFIG_USB_GADGET=y 64 - CONFIG_MMC=y 65 - CONFIG_RTC_CLASS=y 66 - CONFIG_RTC_DRV_AT91RM9200=y 67 - CONFIG_EXT2_FS=y 68 - CONFIG_INOTIFY=y 69 - CONFIG_TMPFS=y 70 - CONFIG_CRAMFS=y 71 - CONFIG_DEBUG_KERNEL=y 72 - CONFIG_DEBUG_USER=y 73 - CONFIG_DEBUG_LL=y
-131
arch/arm/configs/ateb9200_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - CONFIG_SYSVIPC=y 3 - CONFIG_LOG_BUF_SHIFT=14 4 - CONFIG_EMBEDDED=y 5 - CONFIG_SLAB=y 6 - CONFIG_PROFILING=y 7 - CONFIG_OPROFILE=m 8 - CONFIG_MODULES=y 9 - CONFIG_MODULE_UNLOAD=y 10 - CONFIG_ARCH_AT91=y 11 - CONFIG_MACH_ATEB9200=y 12 - CONFIG_PCCARD=m 13 - CONFIG_AT91_CF=m 14 - CONFIG_PREEMPT=y 15 - CONFIG_ZBOOT_ROM_TEXT=0x0 16 - CONFIG_ZBOOT_ROM_BSS=0x0 17 - CONFIG_FPE_NWFPE=y 18 - CONFIG_PM=y 19 - CONFIG_NET=y 20 - CONFIG_PACKET=y 21 - CONFIG_UNIX=y 22 - CONFIG_NET_KEY=y 23 - CONFIG_INET=y 24 - # CONFIG_IPV6 is not set 25 - CONFIG_BRIDGE=m 26 - CONFIG_VLAN_8021Q=m 27 - CONFIG_MTD=y 28 - CONFIG_MTD_PARTITIONS=y 29 - CONFIG_MTD_CMDLINE_PARTS=y 30 - CONFIG_MTD_CHAR=y 31 - CONFIG_MTD_BLOCK_RO=y 32 - CONFIG_BLK_DEV_LOOP=m 33 - CONFIG_BLK_DEV_NBD=m 34 - CONFIG_SCSI=m 35 - CONFIG_BLK_DEV_SD=m 36 - CONFIG_BLK_DEV_SR=m 37 - CONFIG_BLK_DEV_SR_VENDOR=y 38 - CONFIG_CHR_DEV_SG=m 39 - CONFIG_SCSI_MULTI_LUN=y 40 - CONFIG_NETDEVICES=y 41 - CONFIG_DUMMY=m 42 - CONFIG_TUN=m 43 - CONFIG_PHYLIB=y 44 - CONFIG_DAVICOM_PHY=y 45 - CONFIG_NET_ETHERNET=y 46 - CONFIG_ARM_AT91_ETHER=y 47 - CONFIG_USB_USBNET=y 48 - CONFIG_USB_NET_GL620A=y 49 - CONFIG_USB_NET_PLUSB=y 50 - CONFIG_USB_NET_RNDIS_HOST=y 51 - CONFIG_USB_ALI_M5632=y 52 - CONFIG_USB_AN2720=y 53 - CONFIG_USB_EPSON2888=y 54 - CONFIG_PPP=m 55 - CONFIG_PPP_ASYNC=m 56 - CONFIG_PPP_SYNC_TTY=m 57 - CONFIG_PPP_DEFLATE=m 58 - CONFIG_PPP_BSDCOMP=m 59 - CONFIG_PPPOE=m 60 - CONFIG_SERIAL_ATMEL=y 61 - CONFIG_SERIAL_ATMEL_CONSOLE=y 62 - CONFIG_I2C=m 63 - CONFIG_I2C_CHARDEV=m 64 - CONFIG_I2C_GPIO=m 65 - # CONFIG_VGA_CONSOLE is not set 66 - CONFIG_SOUND=y 67 - CONFIG_USB_HID=m 68 - CONFIG_HID_PID=y 69 - CONFIG_USB_HIDDEV=y 70 - CONFIG_USB=y 71 - CONFIG_USB_DEVICEFS=y 72 - CONFIG_USB_MON=y 73 - CONFIG_USB_OHCI_HCD=y 74 - CONFIG_USB_ACM=m 75 - CONFIG_USB_PRINTER=m 76 - CONFIG_USB_STORAGE=m 77 - CONFIG_USB_STORAGE_DATAFAB=m 78 - CONFIG_USB_STORAGE_FREECOM=m 79 - CONFIG_USB_STORAGE_USBAT=m 80 - CONFIG_USB_STORAGE_SDDR09=m 81 - CONFIG_USB_STORAGE_SDDR55=m 82 - CONFIG_USB_STORAGE_JUMPSHOT=m 83 - CONFIG_USB_SERIAL=m 84 - CONFIG_USB_SERIAL_GENERIC=y 85 - CONFIG_USB_SERIAL_FTDI_SIO=m 86 - CONFIG_USB_SERIAL_PL2303=m 87 - CONFIG_USB_GADGET=m 88 - CONFIG_USB_ETH=m 89 - CONFIG_USB_GADGETFS=m 90 - CONFIG_USB_FILE_STORAGE=m 91 - CONFIG_USB_G_SERIAL=m 92 - CONFIG_MMC=m 93 - CONFIG_MMC_DEBUG=y 94 - CONFIG_RTC_CLASS=y 95 - # CONFIG_RTC_HCTOSYS is not set 96 - CONFIG_RTC_DRV_AT91RM9200=y 97 - CONFIG_EXT2_FS=m 98 - CONFIG_EXT3_FS=m 99 - CONFIG_REISERFS_FS=m 100 - CONFIG_INOTIFY=y 101 - CONFIG_ISO9660_FS=m 102 - CONFIG_JOLIET=y 103 - CONFIG_ZISOFS=y 104 - CONFIG_UDF_FS=m 105 - CONFIG_MSDOS_FS=m 106 - CONFIG_VFAT_FS=m 107 - CONFIG_NTFS_FS=m 108 - CONFIG_NTFS_RW=y 109 - CONFIG_TMPFS=y 110 - CONFIG_CRAMFS=y 111 - CONFIG_NFS_FS=m 112 - CONFIG_NFS_V3=y 113 - CONFIG_NFS_V3_ACL=y 114 - CONFIG_NFS_V4=y 115 - CONFIG_NFSD=m 116 - CONFIG_NFSD_V4=y 117 - CONFIG_PARTITION_ADVANCED=y 118 - CONFIG_MAC_PARTITION=y 119 - CONFIG_BSD_DISKLABEL=y 120 - CONFIG_MINIX_SUBPARTITION=y 121 - CONFIG_SOLARIS_X86_PARTITION=y 122 - CONFIG_UNIXWARE_DISKLABEL=y 123 - CONFIG_NLS_CODEPAGE_932=m 124 - CONFIG_NLS_ASCII=m 125 - CONFIG_NLS_ISO8859_15=m 126 - CONFIG_NLS_UTF8=m 127 - CONFIG_CRYPTO_MD5=y 128 - CONFIG_CRYPTO_MICHAEL_MIC=m 129 - CONFIG_CRYPTO_ARC4=m 130 - CONFIG_CRC16=m 131 - CONFIG_LIBCRC32C=m
-47
arch/arm/configs/carmeva_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - CONFIG_LOG_BUF_SHIFT=14 3 - CONFIG_BLK_DEV_INITRD=y 4 - CONFIG_EMBEDDED=y 5 - # CONFIG_HOTPLUG is not set 6 - CONFIG_MODULES=y 7 - CONFIG_MODULE_UNLOAD=y 8 - CONFIG_MODULE_FORCE_UNLOAD=y 9 - CONFIG_ARCH_AT91=y 10 - CONFIG_MACH_CARMEVA=y 11 - CONFIG_ZBOOT_ROM_TEXT=0x0 12 - CONFIG_ZBOOT_ROM_BSS=0x0 13 - CONFIG_FPE_NWFPE=y 14 - CONFIG_NET=y 15 - CONFIG_UNIX=y 16 - CONFIG_INET=y 17 - CONFIG_IP_MULTICAST=y 18 - CONFIG_IP_PNP=y 19 - # CONFIG_IPV6 is not set 20 - CONFIG_MTD=y 21 - CONFIG_MTD_PARTITIONS=y 22 - CONFIG_MTD_CMDLINE_PARTS=y 23 - CONFIG_MTD_CHAR=y 24 - CONFIG_MTD_BLOCK=y 25 - CONFIG_BLK_DEV_RAM=y 26 - CONFIG_NETDEVICES=y 27 - CONFIG_NET_ETHERNET=y 28 - CONFIG_ARM_AT91_ETHER=y 29 - # CONFIG_INPUT_MOUSEDEV is not set 30 - # CONFIG_INPUT_KEYBOARD is not set 31 - # CONFIG_INPUT_MOUSE is not set 32 - CONFIG_SERIO=m 33 - CONFIG_SERIAL_ATMEL=y 34 - CONFIG_SERIAL_ATMEL_CONSOLE=y 35 - # CONFIG_VGA_CONSOLE is not set 36 - CONFIG_MMC=m 37 - CONFIG_MMC_DEBUG=y 38 - CONFIG_EXT2_FS=y 39 - CONFIG_EXT2_FS_XATTR=y 40 - # CONFIG_DNOTIFY is not set 41 - CONFIG_JFFS2_FS=y 42 - CONFIG_JFFS2_COMPRESSION_OPTIONS=y 43 - CONFIG_NFS_FS=y 44 - CONFIG_NFS_V3=y 45 - CONFIG_NFS_V4=y 46 - CONFIG_ROOT_NFS=y 47 - CONFIG_NFSD=y
-112
arch/arm/configs/cpuat91_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_LOCALVERSION_AUTO is not set 3 - # CONFIG_SWAP is not set 4 - CONFIG_SYSVIPC=y 5 - CONFIG_LOG_BUF_SHIFT=14 6 - CONFIG_SYSFS_DEPRECATED_V2=y 7 - CONFIG_MODULES=y 8 - CONFIG_MODULE_UNLOAD=y 9 - # CONFIG_BLK_DEV_BSG is not set 10 - # CONFIG_IOSCHED_CFQ is not set 11 - CONFIG_ARCH_AT91=y 12 - CONFIG_MACH_CPUAT91=y 13 - CONFIG_AT91_TIMER_HZ=100 14 - # CONFIG_ARM_THUMB is not set 15 - CONFIG_PREEMPT=y 16 - CONFIG_ZBOOT_ROM_TEXT=0x0 17 - CONFIG_ZBOOT_ROM_BSS=0x0 18 - CONFIG_NET=y 19 - CONFIG_PACKET=y 20 - CONFIG_UNIX=y 21 - CONFIG_INET=y 22 - CONFIG_IP_PNP=y 23 - # CONFIG_INET_XFRM_MODE_TRANSPORT is not set 24 - # CONFIG_INET_XFRM_MODE_TUNNEL is not set 25 - # CONFIG_INET_XFRM_MODE_BEET is not set 26 - # CONFIG_IPV6 is not set 27 - CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 28 - CONFIG_MTD=y 29 - CONFIG_MTD_PARTITIONS=y 30 - CONFIG_MTD_CMDLINE_PARTS=y 31 - CONFIG_MTD_CHAR=y 32 - CONFIG_MTD_BLOCK=y 33 - CONFIG_MTD_CFI=y 34 - CONFIG_MTD_CFI_INTELEXT=y 35 - CONFIG_MTD_PHYSMAP=y 36 - CONFIG_MTD_PLATRAM=y 37 - CONFIG_BLK_DEV_LOOP=y 38 - CONFIG_BLK_DEV_NBD=y 39 - CONFIG_BLK_DEV_RAM=y 40 - # CONFIG_MISC_DEVICES is not set 41 - CONFIG_SCSI=y 42 - CONFIG_BLK_DEV_SD=y 43 - CONFIG_SCSI_MULTI_LUN=y 44 - # CONFIG_SCSI_LOWLEVEL is not set 45 - CONFIG_NETDEVICES=y 46 - CONFIG_PHYLIB=y 47 - CONFIG_NET_ETHERNET=y 48 - CONFIG_ARM_AT91_ETHER=y 49 - # CONFIG_NETDEV_1000 is not set 50 - # CONFIG_NETDEV_10000 is not set 51 - CONFIG_PPP=y 52 - CONFIG_PPP_ASYNC=y 53 - CONFIG_PPP_DEFLATE=y 54 - CONFIG_PPP_BSDCOMP=y 55 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 56 - # CONFIG_INPUT_KEYBOARD is not set 57 - # CONFIG_INPUT_MOUSE is not set 58 - # CONFIG_SERIO is not set 59 - CONFIG_SERIAL_ATMEL=y 60 - CONFIG_SERIAL_ATMEL_CONSOLE=y 61 - CONFIG_LEGACY_PTY_COUNT=32 62 - # CONFIG_HW_RANDOM is not set 63 - CONFIG_I2C=y 64 - CONFIG_I2C_CHARDEV=y 65 - CONFIG_I2C_GPIO=y 66 - CONFIG_GPIO_SYSFS=y 67 - # CONFIG_HWMON is not set 68 - CONFIG_WATCHDOG=y 69 - CONFIG_WATCHDOG_NOWAYOUT=y 70 - CONFIG_AT91RM9200_WATCHDOG=y 71 - # CONFIG_VGA_CONSOLE is not set 72 - # CONFIG_HID_SUPPORT is not set 73 - CONFIG_USB=y 74 - # CONFIG_USB_DEVICE_CLASS is not set 75 - CONFIG_USB_OHCI_HCD=y 76 - CONFIG_USB_STORAGE=y 77 - CONFIG_USB_GADGET=y 78 - CONFIG_USB_ETH=m 79 - CONFIG_MMC=y 80 - CONFIG_MMC_AT91=m 81 - CONFIG_NEW_LEDS=y 82 - CONFIG_LEDS_CLASS=y 83 - CONFIG_LEDS_GPIO=y 84 - CONFIG_LEDS_TRIGGERS=y 85 - CONFIG_LEDS_TRIGGER_TIMER=y 86 - CONFIG_LEDS_TRIGGER_HEARTBEAT=y 87 - CONFIG_LEDS_TRIGGER_GPIO=y 88 - CONFIG_LEDS_TRIGGER_DEFAULT_ON=y 89 - CONFIG_RTC_CLASS=y 90 - # CONFIG_RTC_HCTOSYS is not set 91 - CONFIG_RTC_DRV_DS1307=y 92 - CONFIG_RTC_DRV_PCF8563=y 93 - CONFIG_EXT2_FS=y 94 - CONFIG_EXT3_FS=y 95 - # CONFIG_EXT3_FS_XATTR is not set 96 - CONFIG_INOTIFY=y 97 - CONFIG_AUTOFS4_FS=y 98 - CONFIG_MSDOS_FS=y 99 - CONFIG_VFAT_FS=y 100 - CONFIG_TMPFS=y 101 - CONFIG_JFFS2_FS=y 102 - CONFIG_JFFS2_SUMMARY=y 103 - CONFIG_CRAMFS=y 104 - CONFIG_MINIX_FS=y 105 - CONFIG_NFS_FS=y 106 - CONFIG_NFS_V3=y 107 - CONFIG_ROOT_NFS=y 108 - CONFIG_PARTITION_ADVANCED=y 109 - CONFIG_NLS_CODEPAGE_437=y 110 - CONFIG_NLS_ISO8859_1=y 111 - CONFIG_NLS_UTF8=y 112 - # CONFIG_RCU_CPU_STALL_DETECTOR is not set
-104
arch/arm/configs/csb337_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_SWAP is not set 3 - CONFIG_SYSVIPC=y 4 - CONFIG_LOG_BUF_SHIFT=14 5 - CONFIG_BLK_DEV_INITRD=y 6 - CONFIG_MODULES=y 7 - CONFIG_MODULE_UNLOAD=y 8 - # CONFIG_BLK_DEV_BSG is not set 9 - CONFIG_ARCH_AT91=y 10 - CONFIG_MACH_CSB337=y 11 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 12 - # CONFIG_ARM_THUMB is not set 13 - CONFIG_PCCARD=y 14 - CONFIG_AT91_CF=y 15 - CONFIG_LEDS=y 16 - CONFIG_LEDS_CPU=y 17 - CONFIG_ZBOOT_ROM_TEXT=0x0 18 - CONFIG_ZBOOT_ROM_BSS=0x0 19 - CONFIG_CMDLINE="mem=32M console=ttyS0,38400 initrd=0x20410000,3145728 root=/dev/ram0 rw" 20 - CONFIG_FPE_NWFPE=y 21 - CONFIG_NET=y 22 - CONFIG_PACKET=y 23 - CONFIG_UNIX=y 24 - CONFIG_INET=y 25 - CONFIG_IP_PNP=y 26 - CONFIG_IP_PNP_DHCP=y 27 - CONFIG_IP_PNP_BOOTP=y 28 - # CONFIG_INET_LRO is not set 29 - # CONFIG_IPV6 is not set 30 - CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 31 - CONFIG_MTD=y 32 - CONFIG_MTD_PARTITIONS=y 33 - CONFIG_MTD_CMDLINE_PARTS=y 34 - CONFIG_MTD_CHAR=y 35 - CONFIG_MTD_BLOCK=y 36 - CONFIG_MTD_CFI=y 37 - CONFIG_MTD_CFI_INTELEXT=y 38 - CONFIG_MTD_PHYSMAP=y 39 - CONFIG_BLK_DEV_LOOP=y 40 - CONFIG_BLK_DEV_RAM=y 41 - CONFIG_BLK_DEV_RAM_SIZE=8192 42 - CONFIG_ATMEL_SSC=y 43 - CONFIG_SCSI=y 44 - CONFIG_NETDEVICES=y 45 - CONFIG_NET_ETHERNET=y 46 - CONFIG_ARM_AT91_ETHER=y 47 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 48 - # CONFIG_INPUT_KEYBOARD is not set 49 - # CONFIG_INPUT_MOUSE is not set 50 - # CONFIG_SERIO is not set 51 - CONFIG_SERIAL_ATMEL=y 52 - CONFIG_SERIAL_ATMEL_CONSOLE=y 53 - # CONFIG_HW_RANDOM is not set 54 - CONFIG_I2C=y 55 - CONFIG_I2C_CHARDEV=y 56 - CONFIG_I2C_GPIO=y 57 - # CONFIG_HWMON is not set 58 - CONFIG_WATCHDOG=y 59 - CONFIG_WATCHDOG_NOWAYOUT=y 60 - CONFIG_AT91RM9200_WATCHDOG=y 61 - # CONFIG_VGA_CONSOLE is not set 62 - # CONFIG_USB_HID is not set 63 - CONFIG_USB=y 64 - CONFIG_USB_DEBUG=y 65 - CONFIG_USB_DEVICEFS=y 66 - CONFIG_USB_MON=y 67 - CONFIG_USB_OHCI_HCD=y 68 - CONFIG_USB_STORAGE=y 69 - CONFIG_USB_SERIAL=y 70 - CONFIG_USB_SERIAL_CONSOLE=y 71 - CONFIG_USB_SERIAL_GENERIC=y 72 - CONFIG_USB_SERIAL_FTDI_SIO=y 73 - CONFIG_USB_SERIAL_KEYSPAN=y 74 - CONFIG_USB_SERIAL_KEYSPAN_MPR=y 75 - CONFIG_USB_SERIAL_KEYSPAN_USA28=y 76 - CONFIG_USB_SERIAL_KEYSPAN_USA28X=y 77 - CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y 78 - CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y 79 - CONFIG_USB_SERIAL_KEYSPAN_USA19=y 80 - CONFIG_USB_SERIAL_KEYSPAN_USA18X=y 81 - CONFIG_USB_SERIAL_KEYSPAN_USA19W=y 82 - CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y 83 - CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y 84 - CONFIG_USB_SERIAL_KEYSPAN_USA49W=y 85 - CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y 86 - CONFIG_USB_SERIAL_MCT_U232=y 87 - CONFIG_USB_GADGET=y 88 - CONFIG_MMC=y 89 - CONFIG_RTC_CLASS=y 90 - CONFIG_RTC_HCTOSYS_DEVICE="rtc1" 91 - # CONFIG_RTC_INTF_SYSFS is not set 92 - CONFIG_RTC_DRV_DS1307=y 93 - CONFIG_RTC_DRV_AT91RM9200=y 94 - CONFIG_EXT2_FS=y 95 - CONFIG_INOTIFY=y 96 - CONFIG_TMPFS=y 97 - CONFIG_CRAMFS=y 98 - CONFIG_NFS_FS=y 99 - CONFIG_NFS_V3=y 100 - CONFIG_NFS_V4=y 101 - CONFIG_ROOT_NFS=y 102 - CONFIG_DEBUG_KERNEL=y 103 - CONFIG_DEBUG_USER=y 104 - CONFIG_DEBUG_LL=y
-98
arch/arm/configs/csb637_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_SWAP is not set 3 - CONFIG_SYSVIPC=y 4 - CONFIG_LOG_BUF_SHIFT=14 5 - CONFIG_SYSFS_DEPRECATED_V2=y 6 - CONFIG_BLK_DEV_INITRD=y 7 - CONFIG_MODULES=y 8 - CONFIG_MODULE_UNLOAD=y 9 - # CONFIG_BLK_DEV_BSG is not set 10 - CONFIG_ARCH_AT91=y 11 - CONFIG_MACH_CSB637=y 12 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 13 - # CONFIG_ARM_THUMB is not set 14 - CONFIG_PCCARD=y 15 - CONFIG_AT91_CF=y 16 - CONFIG_LEDS=y 17 - CONFIG_LEDS_CPU=y 18 - CONFIG_ZBOOT_ROM_TEXT=0x0 19 - CONFIG_ZBOOT_ROM_BSS=0x0 20 - CONFIG_CMDLINE="mem=32M console=ttyS0,38400 initrd=0x20410000,3145728 root=/dev/ram0 rw" 21 - CONFIG_FPE_NWFPE=y 22 - CONFIG_NET=y 23 - CONFIG_PACKET=y 24 - CONFIG_UNIX=y 25 - CONFIG_INET=y 26 - CONFIG_IP_PNP=y 27 - CONFIG_IP_PNP_DHCP=y 28 - CONFIG_IP_PNP_BOOTP=y 29 - # CONFIG_INET_LRO is not set 30 - # CONFIG_IPV6 is not set 31 - CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 32 - CONFIG_MTD=y 33 - CONFIG_MTD_PARTITIONS=y 34 - CONFIG_MTD_CMDLINE_PARTS=y 35 - CONFIG_MTD_CHAR=y 36 - CONFIG_MTD_BLOCK=y 37 - CONFIG_MTD_CFI=y 38 - CONFIG_MTD_CFI_INTELEXT=y 39 - CONFIG_MTD_PHYSMAP=y 40 - CONFIG_BLK_DEV_LOOP=y 41 - CONFIG_BLK_DEV_RAM=y 42 - CONFIG_BLK_DEV_RAM_SIZE=8192 43 - CONFIG_SCSI=y 44 - CONFIG_NETDEVICES=y 45 - CONFIG_NET_ETHERNET=y 46 - CONFIG_ARM_AT91_ETHER=y 47 - # CONFIG_INPUT_KEYBOARD is not set 48 - # CONFIG_INPUT_MOUSE is not set 49 - # CONFIG_SERIO is not set 50 - CONFIG_SERIAL_ATMEL=y 51 - CONFIG_SERIAL_ATMEL_CONSOLE=y 52 - CONFIG_I2C=y 53 - CONFIG_I2C_CHARDEV=y 54 - CONFIG_WATCHDOG=y 55 - CONFIG_WATCHDOG_NOWAYOUT=y 56 - CONFIG_AT91RM9200_WATCHDOG=y 57 - # CONFIG_VGA_CONSOLE is not set 58 - # CONFIG_USB_HID is not set 59 - CONFIG_USB=y 60 - CONFIG_USB_DEBUG=y 61 - CONFIG_USB_DEVICEFS=y 62 - CONFIG_USB_MON=y 63 - CONFIG_USB_OHCI_HCD=y 64 - CONFIG_USB_STORAGE=y 65 - CONFIG_USB_SERIAL=y 66 - CONFIG_USB_SERIAL_CONSOLE=y 67 - CONFIG_USB_SERIAL_GENERIC=y 68 - CONFIG_USB_SERIAL_FTDI_SIO=y 69 - CONFIG_USB_SERIAL_KEYSPAN=y 70 - CONFIG_USB_SERIAL_KEYSPAN_MPR=y 71 - CONFIG_USB_SERIAL_KEYSPAN_USA28=y 72 - CONFIG_USB_SERIAL_KEYSPAN_USA28X=y 73 - CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y 74 - CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y 75 - CONFIG_USB_SERIAL_KEYSPAN_USA19=y 76 - CONFIG_USB_SERIAL_KEYSPAN_USA18X=y 77 - CONFIG_USB_SERIAL_KEYSPAN_USA19W=y 78 - CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y 79 - CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y 80 - CONFIG_USB_SERIAL_KEYSPAN_USA49W=y 81 - CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y 82 - CONFIG_USB_SERIAL_MCT_U232=y 83 - CONFIG_NEW_LEDS=y 84 - CONFIG_LEDS_CLASS=y 85 - CONFIG_LEDS_GPIO=y 86 - CONFIG_LEDS_TRIGGERS=y 87 - CONFIG_LEDS_TRIGGER_HEARTBEAT=y 88 - CONFIG_EXT2_FS=y 89 - CONFIG_INOTIFY=y 90 - CONFIG_TMPFS=y 91 - CONFIG_CRAMFS=y 92 - CONFIG_NFS_FS=y 93 - CONFIG_NFS_V3=y 94 - CONFIG_NFS_V4=y 95 - CONFIG_ROOT_NFS=y 96 - CONFIG_DEBUG_KERNEL=y 97 - CONFIG_DEBUG_USER=y 98 - CONFIG_DEBUG_LL=y
-99
arch/arm/configs/ecbat91_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - CONFIG_SYSVIPC=y 3 - CONFIG_IKCONFIG=y 4 - CONFIG_IKCONFIG_PROC=y 5 - CONFIG_LOG_BUF_SHIFT=14 6 - CONFIG_SLAB=y 7 - CONFIG_MODULES=y 8 - CONFIG_MODULE_UNLOAD=y 9 - # CONFIG_IOSCHED_DEADLINE is not set 10 - # CONFIG_IOSCHED_CFQ is not set 11 - CONFIG_ARCH_AT91=y 12 - CONFIG_MACH_ECBAT91=y 13 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 14 - CONFIG_PCCARD=y 15 - CONFIG_AT91_CF=y 16 - CONFIG_PREEMPT=y 17 - CONFIG_LEDS=y 18 - CONFIG_LEDS_CPU=y 19 - CONFIG_ZBOOT_ROM_TEXT=0x0 20 - CONFIG_ZBOOT_ROM_BSS=0x0 21 - CONFIG_CMDLINE="rootfstype=reiserfs root=/dev/mmcblk0p1 console=ttyS0,115200n8 rootdelay=1" 22 - CONFIG_FPE_NWFPE=y 23 - CONFIG_NET=y 24 - CONFIG_PACKET=y 25 - CONFIG_UNIX=y 26 - CONFIG_INET=y 27 - CONFIG_IP_PNP=y 28 - CONFIG_IP_PNP_DHCP=y 29 - # CONFIG_IPV6 is not set 30 - CONFIG_CFG80211=y 31 - CONFIG_MAC80211=y 32 - # CONFIG_STANDALONE is not set 33 - # CONFIG_PREVENT_FIRMWARE_BUILD is not set 34 - CONFIG_MTD=y 35 - CONFIG_MTD_PARTITIONS=y 36 - CONFIG_MTD_CMDLINE_PARTS=y 37 - CONFIG_MTD_AFS_PARTS=y 38 - CONFIG_MTD_CHAR=y 39 - CONFIG_MTD_BLOCK=y 40 - CONFIG_MTD_DATAFLASH=y 41 - CONFIG_BLK_DEV_LOOP=y 42 - CONFIG_SCSI=y 43 - CONFIG_BLK_DEV_SD=y 44 - CONFIG_CHR_DEV_SG=y 45 - CONFIG_NETDEVICES=y 46 - CONFIG_NET_ETHERNET=y 47 - CONFIG_ARM_AT91_ETHER=y 48 - # CONFIG_NETDEV_1000 is not set 49 - # CONFIG_NETDEV_10000 is not set 50 - CONFIG_PPP=y 51 - CONFIG_PPP_MULTILINK=y 52 - CONFIG_PPP_FILTER=y 53 - CONFIG_PPP_ASYNC=y 54 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 55 - # CONFIG_INPUT_KEYBOARD is not set 56 - # CONFIG_INPUT_MOUSE is not set 57 - # CONFIG_SERIO is not set 58 - CONFIG_SERIAL_ATMEL=y 59 - CONFIG_SERIAL_ATMEL_CONSOLE=y 60 - CONFIG_HW_RANDOM=y 61 - CONFIG_I2C=y 62 - CONFIG_I2C_CHARDEV=y 63 - CONFIG_SPI=y 64 - CONFIG_SPI_BITBANG=y 65 - CONFIG_WATCHDOG=y 66 - CONFIG_WATCHDOG_NOWAYOUT=y 67 - # CONFIG_VGA_CONSOLE is not set 68 - # CONFIG_USB_HID is not set 69 - CONFIG_USB=y 70 - CONFIG_USB_DEVICEFS=y 71 - # CONFIG_USB_DEVICE_CLASS is not set 72 - CONFIG_USB_OHCI_HCD=y 73 - CONFIG_USB_PRINTER=y 74 - CONFIG_USB_STORAGE=y 75 - CONFIG_USB_GADGET=y 76 - CONFIG_MMC=y 77 - CONFIG_MMC_DEBUG=y 78 - CONFIG_MMC_AT91=m 79 - CONFIG_NEW_LEDS=y 80 - CONFIG_LEDS_CLASS=y 81 - CONFIG_RTC_CLASS=y 82 - # CONFIG_RTC_HCTOSYS is not set 83 - CONFIG_RTC_DRV_AT91RM9200=y 84 - CONFIG_EXT2_FS=y 85 - CONFIG_EXT3_FS=y 86 - CONFIG_REISERFS_FS=y 87 - CONFIG_INOTIFY=y 88 - CONFIG_TMPFS=y 89 - CONFIG_CONFIGFS_FS=y 90 - CONFIG_CRAMFS=y 91 - CONFIG_NFS_FS=y 92 - CONFIG_NFS_V3=y 93 - CONFIG_NFS_V3_ACL=y 94 - CONFIG_NFS_V4=y 95 - CONFIG_ROOT_NFS=y 96 - CONFIG_PARTITION_ADVANCED=y 97 - CONFIG_DEBUG_USER=y 98 - CONFIG_CRYPTO_PCBC=y 99 - CONFIG_CRYPTO_SHA1=y
-61
arch/arm/configs/kafa_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_LOCALVERSION_AUTO is not set 3 - # CONFIG_SWAP is not set 4 - CONFIG_SYSVIPC=y 5 - CONFIG_LOG_BUF_SHIFT=14 6 - CONFIG_SLAB=y 7 - CONFIG_MODULES=y 8 - CONFIG_MODULE_UNLOAD=y 9 - # CONFIG_IOSCHED_CFQ is not set 10 - CONFIG_ARCH_AT91=y 11 - CONFIG_MACH_KAFA=y 12 - # CONFIG_ARM_THUMB is not set 13 - CONFIG_PREEMPT=y 14 - CONFIG_LEDS=y 15 - CONFIG_LEDS_CPU=y 16 - CONFIG_ZBOOT_ROM_TEXT=0x0 17 - CONFIG_ZBOOT_ROM_BSS=0x0 18 - CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20800000,10M root=/dev/ram0 rw" 19 - CONFIG_FPE_NWFPE=y 20 - CONFIG_BINFMT_MISC=y 21 - CONFIG_NET=y 22 - CONFIG_PACKET=y 23 - CONFIG_UNIX=y 24 - CONFIG_INET=y 25 - # CONFIG_INET_DIAG is not set 26 - # CONFIG_IPV6 is not set 27 - CONFIG_MTD=y 28 - CONFIG_MTD_PARTITIONS=y 29 - CONFIG_MTD_CHAR=y 30 - CONFIG_MTD_BLOCK_RO=y 31 - CONFIG_NETDEVICES=y 32 - CONFIG_PHYLIB=y 33 - CONFIG_DAVICOM_PHY=y 34 - CONFIG_NET_ETHERNET=y 35 - CONFIG_ARM_AT91_ETHER=y 36 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 37 - # CONFIG_INPUT_KEYBOARD is not set 38 - # CONFIG_INPUT_MOUSE is not set 39 - # CONFIG_SERIO is not set 40 - CONFIG_SERIAL_ATMEL=y 41 - CONFIG_SERIAL_ATMEL_CONSOLE=y 42 - CONFIG_LEGACY_PTY_COUNT=32 43 - CONFIG_I2C=y 44 - CONFIG_I2C_CHARDEV=y 45 - CONFIG_I2C_GPIO=y 46 - # CONFIG_HWMON is not set 47 - CONFIG_WATCHDOG=y 48 - CONFIG_WATCHDOG_NOWAYOUT=y 49 - CONFIG_AT91RM9200_WATCHDOG=y 50 - # CONFIG_VGA_CONSOLE is not set 51 - CONFIG_RTC_CLASS=y 52 - # CONFIG_RTC_HCTOSYS is not set 53 - CONFIG_RTC_DRV_AT91RM9200=y 54 - CONFIG_EXT3_FS=y 55 - # CONFIG_EXT3_FS_XATTR is not set 56 - CONFIG_TMPFS=y 57 - CONFIG_CRAMFS=y 58 - CONFIG_NFS_FS=m 59 - CONFIG_NFS_V3=y 60 - CONFIG_CRYPTO_MD5=y 61 - CONFIG_CRYPTO_DES=y
-127
arch/arm/configs/kb9202_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_SWAP is not set 3 - CONFIG_SYSVIPC=y 4 - CONFIG_POSIX_MQUEUE=y 5 - CONFIG_BSD_PROCESS_ACCT=y 6 - CONFIG_AUDIT=y 7 - CONFIG_IKCONFIG=y 8 - CONFIG_IKCONFIG_PROC=y 9 - CONFIG_BLK_DEV_INITRD=y 10 - CONFIG_KALLSYMS_EXTRA_PASS=y 11 - CONFIG_MODULES=y 12 - CONFIG_MODULE_UNLOAD=y 13 - CONFIG_MODVERSIONS=y 14 - CONFIG_MODULE_SRCVERSION_ALL=y 15 - # CONFIG_BLK_DEV_BSG is not set 16 - # CONFIG_IOSCHED_DEADLINE is not set 17 - CONFIG_ARCH_AT91=y 18 - CONFIG_MACH_KB9200=y 19 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 20 - CONFIG_NO_HZ=y 21 - CONFIG_HIGH_RES_TIMERS=y 22 - CONFIG_PREEMPT=y 23 - CONFIG_AEABI=y 24 - CONFIG_ZBOOT_ROM_TEXT=0x10000000 25 - CONFIG_ZBOOT_ROM_BSS=0x20040000 26 - CONFIG_CMDLINE="noinitrd root=/dev/mtdblock0 rootfstype=jffs2 mem=64M" 27 - CONFIG_KEXEC=y 28 - CONFIG_FPE_NWFPE=y 29 - CONFIG_BINFMT_MISC=y 30 - CONFIG_NET=y 31 - CONFIG_PACKET=y 32 - CONFIG_UNIX=y 33 - CONFIG_INET=y 34 - CONFIG_IP_PNP=y 35 - CONFIG_IP_PNP_DHCP=y 36 - CONFIG_IP_PNP_BOOTP=y 37 - # CONFIG_INET_XFRM_MODE_TRANSPORT is not set 38 - # CONFIG_INET_XFRM_MODE_TUNNEL is not set 39 - # CONFIG_INET_XFRM_MODE_BEET is not set 40 - # CONFIG_INET_LRO is not set 41 - # CONFIG_INET_DIAG is not set 42 - # CONFIG_IPV6 is not set 43 - CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 44 - # CONFIG_FIRMWARE_IN_KERNEL is not set 45 - CONFIG_MTD=y 46 - CONFIG_MTD_CONCAT=y 47 - CONFIG_MTD_PARTITIONS=y 48 - CONFIG_MTD_CMDLINE_PARTS=y 49 - CONFIG_MTD_CHAR=y 50 - CONFIG_MTD_BLOCK=y 51 - CONFIG_MTD_CFI=y 52 - CONFIG_MTD_CFI_INTELEXT=y 53 - CONFIG_MTD_COMPLEX_MAPPINGS=y 54 - CONFIG_MTD_PHYSMAP=y 55 - CONFIG_MTD_NAND=y 56 - CONFIG_MTD_NAND_ATMEL=y 57 - CONFIG_MTD_UBI=y 58 - CONFIG_MTD_UBI_GLUEBI=y 59 - CONFIG_BLK_DEV_LOOP=y 60 - CONFIG_BLK_DEV_RAM=y 61 - CONFIG_BLK_DEV_RAM_SIZE=16384 62 - CONFIG_ATMEL_TCLIB=y 63 - CONFIG_ATMEL_SSC=y 64 - CONFIG_SCSI=y 65 - CONFIG_BLK_DEV_SD=y 66 - CONFIG_CHR_DEV_SG=y 67 - CONFIG_SCSI_MULTI_LUN=y 68 - CONFIG_SCSI_CONSTANTS=y 69 - CONFIG_SCSI_LOGGING=y 70 - CONFIG_SCSI_SPI_ATTRS=m 71 - # CONFIG_SCSI_LOWLEVEL is not set 72 - CONFIG_NETDEVICES=y 73 - CONFIG_NET_ETHERNET=y 74 - CONFIG_ARM_AT91_ETHER=y 75 - # CONFIG_NETDEV_1000 is not set 76 - # CONFIG_NETDEV_10000 is not set 77 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 78 - # CONFIG_INPUT_KEYBOARD is not set 79 - # CONFIG_INPUT_MOUSE is not set 80 - # CONFIG_SERIO is not set 81 - CONFIG_SERIAL_ATMEL=y 82 - CONFIG_SERIAL_ATMEL_CONSOLE=y 83 - # CONFIG_LEGACY_PTYS is not set 84 - # CONFIG_HW_RANDOM is not set 85 - # CONFIG_HWMON is not set 86 - CONFIG_WATCHDOG=y 87 - CONFIG_AT91RM9200_WATCHDOG=y 88 - CONFIG_FB=y 89 - CONFIG_FB_MODE_HELPERS=y 90 - CONFIG_FB_TILEBLITTING=y 91 - CONFIG_BACKLIGHT_LCD_SUPPORT=y 92 - # CONFIG_LCD_CLASS_DEVICE is not set 93 - CONFIG_BACKLIGHT_CLASS_DEVICE=y 94 - # CONFIG_BACKLIGHT_GENERIC is not set 95 - # CONFIG_VGA_CONSOLE is not set 96 - CONFIG_FRAMEBUFFER_CONSOLE=y 97 - CONFIG_FONTS=y 98 - CONFIG_FONT_MINI_4x6=y 99 - # CONFIG_HID_SUPPORT is not set 100 - CONFIG_USB=y 101 - CONFIG_USB_DEVICEFS=y 102 - CONFIG_USB_OHCI_HCD=y 103 - CONFIG_USB_STORAGE=y 104 - CONFIG_USB_LIBUSUAL=y 105 - CONFIG_MMC=y 106 - CONFIG_MMC_AT91=m 107 - CONFIG_RTC_CLASS=y 108 - CONFIG_RTC_DRV_AT91RM9200=y 109 - CONFIG_EXT2_FS=y 110 - CONFIG_EXT3_FS=y 111 - # CONFIG_DNOTIFY is not set 112 - CONFIG_INOTIFY=y 113 - CONFIG_VFAT_FS=y 114 - CONFIG_TMPFS=y 115 - CONFIG_CONFIGFS_FS=y 116 - CONFIG_JFFS2_FS=y 117 - CONFIG_NFS_FS=y 118 - CONFIG_NFS_V3=y 119 - CONFIG_ROOT_NFS=y 120 - CONFIG_NLS_CODEPAGE_437=y 121 - CONFIG_NLS_UTF8=y 122 - CONFIG_MAGIC_SYSRQ=y 123 - CONFIG_DEBUG_FS=y 124 - CONFIG_DEBUG_KERNEL=y 125 - # CONFIG_SCHED_DEBUG is not set 126 - # CONFIG_DEBUG_PREEMPT is not set 127 - # CONFIG_RCU_CPU_STALL_DETECTOR is not set
-80
arch/arm/configs/onearm_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - # CONFIG_SWAP is not set 3 - CONFIG_SYSVIPC=y 4 - CONFIG_LOG_BUF_SHIFT=14 5 - CONFIG_BLK_DEV_INITRD=y 6 - CONFIG_EMBEDDED=y 7 - CONFIG_SLAB=y 8 - CONFIG_MODULES=y 9 - CONFIG_MODULE_UNLOAD=y 10 - # CONFIG_IOSCHED_DEADLINE is not set 11 - # CONFIG_IOSCHED_CFQ is not set 12 - CONFIG_ARCH_AT91=y 13 - CONFIG_MACH_ONEARM=y 14 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 15 - # CONFIG_ARM_THUMB is not set 16 - CONFIG_PCCARD=y 17 - CONFIG_AT91_CF=y 18 - CONFIG_LEDS=y 19 - CONFIG_ZBOOT_ROM_TEXT=0x0 20 - CONFIG_ZBOOT_ROM_BSS=0x0 21 - CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M" 22 - CONFIG_FPE_NWFPE=y 23 - CONFIG_NET=y 24 - CONFIG_PACKET=y 25 - CONFIG_UNIX=y 26 - CONFIG_INET=y 27 - CONFIG_IP_PNP=y 28 - CONFIG_IP_PNP_BOOTP=y 29 - CONFIG_IPV6=y 30 - # CONFIG_INET6_XFRM_MODE_TRANSPORT is not set 31 - # CONFIG_INET6_XFRM_MODE_TUNNEL is not set 32 - # CONFIG_INET6_XFRM_MODE_BEET is not set 33 - # CONFIG_IPV6_SIT is not set 34 - CONFIG_MTD=y 35 - CONFIG_MTD_PARTITIONS=y 36 - CONFIG_MTD_CMDLINE_PARTS=y 37 - CONFIG_MTD_CHAR=y 38 - CONFIG_MTD_BLOCK=y 39 - CONFIG_MTD_CFI=y 40 - CONFIG_MTD_JEDECPROBE=y 41 - CONFIG_MTD_CFI_AMDSTD=y 42 - CONFIG_MTD_PHYSMAP=y 43 - CONFIG_BLK_DEV_NBD=y 44 - CONFIG_BLK_DEV_RAM=y 45 - CONFIG_BLK_DEV_RAM_SIZE=8192 46 - CONFIG_NETDEVICES=y 47 - CONFIG_NET_ETHERNET=y 48 - CONFIG_ARM_AT91_ETHER=y 49 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 50 - # CONFIG_INPUT_KEYBOARD is not set 51 - # CONFIG_INPUT_MOUSE is not set 52 - # CONFIG_SERIO is not set 53 - # CONFIG_VT is not set 54 - CONFIG_SERIAL_ATMEL=y 55 - CONFIG_SERIAL_ATMEL_CONSOLE=y 56 - # CONFIG_HW_RANDOM is not set 57 - CONFIG_I2C=y 58 - CONFIG_I2C_CHARDEV=y 59 - CONFIG_WATCHDOG=y 60 - CONFIG_WATCHDOG_NOWAYOUT=y 61 - CONFIG_AT91RM9200_WATCHDOG=y 62 - # CONFIG_USB_HID is not set 63 - CONFIG_USB=y 64 - CONFIG_USB_DEBUG=y 65 - CONFIG_USB_DEVICEFS=y 66 - CONFIG_USB_MON=y 67 - CONFIG_USB_OHCI_HCD=y 68 - CONFIG_USB_GADGET=y 69 - CONFIG_MMC=y 70 - CONFIG_EXT2_FS=y 71 - CONFIG_INOTIFY=y 72 - CONFIG_TMPFS=y 73 - CONFIG_CRAMFS=y 74 - CONFIG_NFS_FS=y 75 - CONFIG_NFS_V3=y 76 - CONFIG_NFS_V3_ACL=y 77 - CONFIG_ROOT_NFS=y 78 - CONFIG_DEBUG_KERNEL=y 79 - CONFIG_DEBUG_USER=y 80 - CONFIG_DEBUG_LL=y
-242
arch/arm/configs/picotux200_defconfig
··· 1 - CONFIG_EXPERIMENTAL=y 2 - CONFIG_SYSVIPC=y 3 - CONFIG_IKCONFIG=m 4 - CONFIG_IKCONFIG_PROC=y 5 - CONFIG_LOG_BUF_SHIFT=14 6 - CONFIG_EMBEDDED=y 7 - # CONFIG_KALLSYMS is not set 8 - CONFIG_SLAB=y 9 - CONFIG_MODULES=y 10 - CONFIG_MODULE_UNLOAD=y 11 - # CONFIG_IOSCHED_DEADLINE is not set 12 - # CONFIG_IOSCHED_CFQ is not set 13 - CONFIG_ARCH_AT91=y 14 - CONFIG_MACH_PICOTUX2XX=y 15 - CONFIG_AT91_PROGRAMMABLE_CLOCKS=y 16 - CONFIG_AEABI=y 17 - CONFIG_ZBOOT_ROM_TEXT=0x0 18 - CONFIG_ZBOOT_ROM_BSS=0x0 19 - CONFIG_KEXEC=y 20 - CONFIG_FPE_NWFPE=y 21 - CONFIG_BINFMT_MISC=m 22 - CONFIG_NET=y 23 - CONFIG_PACKET=m 24 - CONFIG_UNIX=y 25 - CONFIG_XFRM_USER=m 26 - CONFIG_INET=y 27 - CONFIG_IP_PNP=y 28 - CONFIG_IP_PNP_BOOTP=y 29 - CONFIG_NET_IPIP=m 30 - CONFIG_NET_IPGRE=m 31 - CONFIG_INET_AH=m 32 - CONFIG_INET_ESP=m 33 - CONFIG_INET_IPCOMP=m 34 - CONFIG_INET_XFRM_MODE_TRANSPORT=m 35 - CONFIG_INET_XFRM_MODE_TUNNEL=m 36 - CONFIG_INET_XFRM_MODE_BEET=m 37 - CONFIG_INET_DIAG=m 38 - CONFIG_IPV6_PRIVACY=y 39 - CONFIG_IPV6_ROUTER_PREF=y 40 - CONFIG_IPV6_ROUTE_INFO=y 41 - CONFIG_INET6_AH=m 42 - CONFIG_INET6_ESP=m 43 - CONFIG_INET6_IPCOMP=m 44 - CONFIG_IPV6_MIP6=m 45 - CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m 46 - CONFIG_IPV6_TUNNEL=m 47 - CONFIG_BRIDGE=m 48 - CONFIG_VLAN_8021Q=m 49 - CONFIG_BT=m 50 - CONFIG_BT_L2CAP=m 51 - CONFIG_BT_SCO=m 52 - CONFIG_BT_RFCOMM=m 53 - CONFIG_BT_RFCOMM_TTY=y 54 - CONFIG_BT_BNEP=m 55 - CONFIG_BT_BNEP_MC_FILTER=y 56 - CONFIG_BT_BNEP_PROTO_FILTER=y 57 - CONFIG_BT_HIDP=m 58 - CONFIG_FW_LOADER=m 59 - CONFIG_MTD=y 60 - CONFIG_MTD_PARTITIONS=y 61 - CONFIG_MTD_CMDLINE_PARTS=y 62 - CONFIG_MTD_CHAR=y 63 - CONFIG_MTD_BLOCK=y 64 - CONFIG_MTD_CFI=y 65 - CONFIG_MTD_CFI_AMDSTD=y 66 - CONFIG_MTD_PHYSMAP=y 67 - CONFIG_BLK_DEV_LOOP=m 68 - CONFIG_EEPROM_LEGACY=m 69 - CONFIG_SCSI=m 70 - CONFIG_BLK_DEV_SD=m 71 - CONFIG_BLK_DEV_SR=m 72 - CONFIG_BLK_DEV_SR_VENDOR=y 73 - CONFIG_CHR_DEV_SG=m 74 - CONFIG_NETDEVICES=y 75 - CONFIG_TUN=m 76 - CONFIG_NET_ETHERNET=y 77 - CONFIG_ARM_AT91_ETHER=y 78 - CONFIG_USB_CATC=m 79 - CONFIG_USB_KAWETH=m 80 - CONFIG_USB_PEGASUS=m 81 - CONFIG_USB_RTL8150=m 82 - CONFIG_USB_USBNET=m 83 - CONFIG_USB_NET_DM9601=m 84 - CONFIG_USB_NET_GL620A=m 85 - CONFIG_USB_NET_PLUSB=m 86 - CONFIG_USB_NET_MCS7830=m 87 - CONFIG_USB_NET_RNDIS_HOST=m 88 - CONFIG_USB_ALI_M5632=y 89 - CONFIG_USB_AN2720=y 90 - CONFIG_USB_EPSON2888=y 91 - CONFIG_USB_KC2190=y 92 - CONFIG_PPP=m 93 - CONFIG_PPP_FILTER=y 94 - CONFIG_PPP_ASYNC=m 95 - CONFIG_PPP_DEFLATE=m 96 - CONFIG_PPP_BSDCOMP=m 97 - CONFIG_PPP_MPPE=m 98 - CONFIG_PPPOE=m 99 - CONFIG_SLIP=m 100 - CONFIG_SLIP_COMPRESSED=y 101 - CONFIG_SLIP_SMART=y 102 - CONFIG_SLIP_MODE_SLIP6=y 103 - # CONFIG_INPUT_MOUSEDEV is not set 104 - # CONFIG_INPUT_KEYBOARD is not set 105 - # CONFIG_INPUT_MOUSE is not set 106 - # CONFIG_SERIO is not set 107 - # CONFIG_VT is not set 108 - CONFIG_SERIAL_ATMEL=y 109 - CONFIG_SERIAL_ATMEL_CONSOLE=y 110 - # CONFIG_LEGACY_PTYS is not set 111 - CONFIG_I2C=m 112 - CONFIG_I2C_CHARDEV=m 113 - CONFIG_I2C_GPIO=m 114 - CONFIG_HWMON=m 115 - CONFIG_SENSORS_ADM1021=m 116 - CONFIG_SENSORS_ADM1025=m 117 - CONFIG_SENSORS_ADM1026=m 118 - CONFIG_SENSORS_ADM1029=m 119 - CONFIG_SENSORS_ADM1031=m 120 - CONFIG_SENSORS_ADM9240=m 121 - CONFIG_SENSORS_DS1621=m 122 - CONFIG_SENSORS_GL518SM=m 123 - CONFIG_SENSORS_GL520SM=m 124 - CONFIG_SENSORS_IT87=m 125 - CONFIG_SENSORS_LM63=m 126 - CONFIG_SENSORS_LM75=m 127 - CONFIG_SENSORS_LM77=m 128 - CONFIG_SENSORS_LM78=m 129 - CONFIG_SENSORS_LM80=m 130 - CONFIG_SENSORS_LM83=m 131 - CONFIG_SENSORS_LM85=m 132 - CONFIG_SENSORS_LM87=m 133 - CONFIG_SENSORS_LM90=m 134 - CONFIG_SENSORS_LM92=m 135 - CONFIG_SENSORS_MAX1619=m 136 - CONFIG_SENSORS_PCF8591=m 137 - CONFIG_SENSORS_SMSC47B397=m 138 - CONFIG_SENSORS_W83781D=m 139 - CONFIG_SENSORS_W83791D=m 140 - CONFIG_SENSORS_W83792D=m 141 - CONFIG_SENSORS_W83793=m 142 - CONFIG_SENSORS_W83L785TS=m 143 - CONFIG_WATCHDOG=y 144 - CONFIG_WATCHDOG_NOWAYOUT=y 145 - CONFIG_AT91RM9200_WATCHDOG=m 146 - CONFIG_HID=m 147 - CONFIG_USB=m 148 - CONFIG_USB_DEVICEFS=y 149 - CONFIG_USB_OHCI_HCD=m 150 - CONFIG_USB_ACM=m 151 - CONFIG_USB_PRINTER=m 152 - CONFIG_USB_STORAGE=m 153 - CONFIG_USB_SERIAL=m 154 - CONFIG_USB_SERIAL_GENERIC=y 155 - CONFIG_USB_SERIAL_PL2303=m 156 - CONFIG_MMC=m 157 - CONFIG_MMC_AT91=m 158 - CONFIG_RTC_CLASS=m 159 - CONFIG_RTC_DRV_AT91RM9200=m 160 - CONFIG_EXT2_FS=m 161 - CONFIG_EXT3_FS=m 162 - # CONFIG_EXT3_FS_XATTR is not set 163 - CONFIG_INOTIFY=y 164 - CONFIG_ISO9660_FS=m 165 - CONFIG_JOLIET=y 166 - CONFIG_UDF_FS=m 167 - CONFIG_MSDOS_FS=m 168 - CONFIG_VFAT_FS=m 169 - CONFIG_NTFS_FS=m 170 - CONFIG_TMPFS=y 171 - CONFIG_JFFS2_FS=y 172 - CONFIG_JFFS2_SUMMARY=y 173 - CONFIG_JFFS2_COMPRESSION_OPTIONS=y 174 - CONFIG_NFS_FS=m 175 - CONFIG_SMB_FS=m 176 - CONFIG_CIFS=m 177 - CONFIG_PARTITION_ADVANCED=y 178 - CONFIG_AMIGA_PARTITION=y 179 - CONFIG_NLS_DEFAULT="utf-8" 180 - CONFIG_NLS_CODEPAGE_437=m 181 - CONFIG_NLS_CODEPAGE_737=m 182 - CONFIG_NLS_CODEPAGE_775=m 183 - CONFIG_NLS_CODEPAGE_850=m 184 - CONFIG_NLS_CODEPAGE_852=m 185 - CONFIG_NLS_CODEPAGE_855=m 186 - CONFIG_NLS_CODEPAGE_857=m 187 - CONFIG_NLS_CODEPAGE_860=m 188 - CONFIG_NLS_CODEPAGE_861=m 189 - CONFIG_NLS_CODEPAGE_862=m 190 - CONFIG_NLS_CODEPAGE_863=m 191 - CONFIG_NLS_CODEPAGE_864=m 192 - CONFIG_NLS_CODEPAGE_865=m 193 - CONFIG_NLS_CODEPAGE_866=m 194 - CONFIG_NLS_CODEPAGE_869=m 195 - CONFIG_NLS_CODEPAGE_936=m 196 - CONFIG_NLS_CODEPAGE_950=m 197 - CONFIG_NLS_CODEPAGE_932=m 198 - CONFIG_NLS_CODEPAGE_949=m 199 - CONFIG_NLS_CODEPAGE_874=m 200 - CONFIG_NLS_ISO8859_8=m 201 - CONFIG_NLS_CODEPAGE_1250=m 202 - CONFIG_NLS_CODEPAGE_1251=m 203 - CONFIG_NLS_ASCII=m 204 - CONFIG_NLS_ISO8859_1=m 205 - CONFIG_NLS_ISO8859_2=m 206 - CONFIG_NLS_ISO8859_3=m 207 - CONFIG_NLS_ISO8859_4=m 208 - CONFIG_NLS_ISO8859_5=m 209 - CONFIG_NLS_ISO8859_6=m 210 - CONFIG_NLS_ISO8859_7=m 211 - CONFIG_NLS_ISO8859_9=m 212 - CONFIG_NLS_ISO8859_13=m 213 - CONFIG_NLS_ISO8859_14=m 214 - CONFIG_NLS_ISO8859_15=m 215 - CONFIG_NLS_KOI8_R=m 216 - CONFIG_NLS_KOI8_U=m 217 - CONFIG_NLS_UTF8=m 218 - CONFIG_DEBUG_KERNEL=y 219 - # CONFIG_DEBUG_BUGVERBOSE is not set 220 - CONFIG_DEBUG_LL=y 221 - CONFIG_CRYPTO_NULL=m 222 - CONFIG_CRYPTO_TEST=m 223 - CONFIG_CRYPTO_LRW=m 224 - CONFIG_CRYPTO_PCBC=m 225 - CONFIG_CRYPTO_XCBC=m 226 - CONFIG_CRYPTO_MD4=m 227 - CONFIG_CRYPTO_MICHAEL_MIC=m 228 - CONFIG_CRYPTO_SHA256=m 229 - CONFIG_CRYPTO_SHA512=m 230 - CONFIG_CRYPTO_TGR192=m 231 - CONFIG_CRYPTO_WP512=m 232 - CONFIG_CRYPTO_ANUBIS=m 233 - CONFIG_CRYPTO_BLOWFISH=m 234 - CONFIG_CRYPTO_CAMELLIA=m 235 - CONFIG_CRYPTO_CAST5=m 236 - CONFIG_CRYPTO_CAST6=m 237 - CONFIG_CRYPTO_FCRYPT=m 238 - CONFIG_CRYPTO_KHAZAD=m 239 - CONFIG_CRYPTO_SERPENT=m 240 - CONFIG_CRYPTO_TEA=m 241 - CONFIG_CRYPTO_TWOFISH=m 242 - CONFIG_LIBCRC32C=m
-137
arch/arm/configs/yl9200_defconfig
··· 1 - # CONFIG_SWAP is not set 2 - CONFIG_SYSVIPC=y 3 - CONFIG_LOG_BUF_SHIFT=14 4 - CONFIG_BLK_DEV_INITRD=y 5 - # CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 6 - CONFIG_MODULES=y 7 - CONFIG_MODULE_UNLOAD=y 8 - # CONFIG_IOSCHED_DEADLINE is not set 9 - # CONFIG_IOSCHED_CFQ is not set 10 - CONFIG_ARCH_AT91=y 11 - CONFIG_ARCH_AT91RM9200DK=y 12 - CONFIG_MACH_YL9200=y 13 - # CONFIG_ARM_THUMB is not set 14 - CONFIG_ZBOOT_ROM_TEXT=0x0 15 - CONFIG_ZBOOT_ROM_BSS=0x0 16 - CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw" 17 - CONFIG_FPE_NWFPE=y 18 - CONFIG_NET=y 19 - CONFIG_PACKET=y 20 - CONFIG_UNIX=y 21 - CONFIG_INET=y 22 - CONFIG_IP_PNP=y 23 - CONFIG_IP_PNP_DHCP=y 24 - # CONFIG_INET_XFRM_MODE_TRANSPORT is not set 25 - # CONFIG_INET_XFRM_MODE_TUNNEL is not set 26 - # CONFIG_INET_XFRM_MODE_BEET is not set 27 - # CONFIG_INET_LRO is not set 28 - # CONFIG_INET_DIAG is not set 29 - # CONFIG_IPV6 is not set 30 - CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 31 - CONFIG_MTD=y 32 - CONFIG_MTD_CONCAT=y 33 - CONFIG_MTD_PARTITIONS=y 34 - CONFIG_MTD_CMDLINE_PARTS=y 35 - CONFIG_MTD_CHAR=y 36 - CONFIG_MTD_BLOCK=y 37 - CONFIG_MTD_CFI=y 38 - CONFIG_MTD_JEDECPROBE=y 39 - CONFIG_MTD_CFI_INTELEXT=y 40 - CONFIG_MTD_COMPLEX_MAPPINGS=y 41 - CONFIG_MTD_PHYSMAP=y 42 - CONFIG_MTD_PLATRAM=y 43 - CONFIG_MTD_NAND=y 44 - CONFIG_MTD_NAND_ATMEL=y 45 - CONFIG_MTD_NAND_PLATFORM=y 46 - CONFIG_BLK_DEV_LOOP=y 47 - CONFIG_BLK_DEV_RAM=y 48 - CONFIG_BLK_DEV_RAM_COUNT=3 49 - CONFIG_BLK_DEV_RAM_SIZE=8192 50 - # CONFIG_MISC_DEVICES is not set 51 - CONFIG_BLK_DEV_SD=y 52 - CONFIG_ATA=y 53 - CONFIG_NETDEVICES=y 54 - CONFIG_PHYLIB=y 55 - CONFIG_DAVICOM_PHY=y 56 - CONFIG_NET_ETHERNET=y 57 - CONFIG_ARM_AT91_ETHER=y 58 - # CONFIG_NETDEV_1000 is not set 59 - # CONFIG_NETDEV_10000 is not set 60 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 61 - CONFIG_INPUT_MOUSEDEV_SCREEN_X=640 62 - CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480 63 - CONFIG_INPUT_EVDEV=y 64 - # CONFIG_KEYBOARD_ATKBD is not set 65 - CONFIG_KEYBOARD_GPIO=y 66 - CONFIG_INPUT_TOUCHSCREEN=y 67 - CONFIG_TOUCHSCREEN_ADS7846=y 68 - # CONFIG_SERIO_SERPORT is not set 69 - CONFIG_SERIAL_ATMEL=y 70 - CONFIG_SERIAL_ATMEL_CONSOLE=y 71 - # CONFIG_HW_RANDOM is not set 72 - CONFIG_I2C=y 73 - CONFIG_SPI=y 74 - CONFIG_SPI_DEBUG=y 75 - CONFIG_SPI_ATMEL=y 76 - CONFIG_FB=y 77 - CONFIG_BACKLIGHT_LCD_SUPPORT=y 78 - CONFIG_LCD_CLASS_DEVICE=y 79 - CONFIG_BACKLIGHT_CLASS_DEVICE=y 80 - CONFIG_DISPLAY_SUPPORT=y 81 - # CONFIG_VGA_CONSOLE is not set 82 - CONFIG_LOGO=y 83 - # CONFIG_LOGO_LINUX_MONO is not set 84 - # CONFIG_LOGO_LINUX_VGA16 is not set 85 - CONFIG_USB=y 86 - CONFIG_USB_DEBUG=y 87 - CONFIG_USB_DEVICEFS=y 88 - # CONFIG_USB_DEVICE_CLASS is not set 89 - CONFIG_USB_MON=y 90 - CONFIG_USB_OHCI_HCD=y 91 - CONFIG_USB_STORAGE=y 92 - CONFIG_USB_GADGET=y 93 - CONFIG_USB_GADGET_M66592=y 94 - CONFIG_USB_FILE_STORAGE=m 95 - CONFIG_MMC=y 96 - CONFIG_MMC_DEBUG=y 97 - # CONFIG_MMC_BLOCK_BOUNCE is not set 98 - CONFIG_MMC_AT91=m 99 - CONFIG_NEW_LEDS=y 100 - CONFIG_LEDS_CLASS=y 101 - CONFIG_LEDS_GPIO=y 102 - CONFIG_LEDS_TRIGGERS=y 103 - CONFIG_LEDS_TRIGGER_TIMER=y 104 - CONFIG_LEDS_TRIGGER_HEARTBEAT=y 105 - CONFIG_RTC_CLASS=y 106 - CONFIG_RTC_DRV_AT91RM9200=y 107 - CONFIG_EXT2_FS=y 108 - CONFIG_EXT2_FS_XATTR=y 109 - CONFIG_EXT3_FS=y 110 - CONFIG_REISERFS_FS=y 111 - CONFIG_INOTIFY=y 112 - CONFIG_ISO9660_FS=y 113 - CONFIG_JOLIET=y 114 - CONFIG_ZISOFS=y 115 - CONFIG_UDF_FS=y 116 - CONFIG_MSDOS_FS=y 117 - CONFIG_VFAT_FS=y 118 - CONFIG_TMPFS=y 119 - CONFIG_JFFS2_FS=y 120 - CONFIG_JFFS2_FS_DEBUG=1 121 - CONFIG_JFFS2_COMPRESSION_OPTIONS=y 122 - CONFIG_JFFS2_RUBIN=y 123 - CONFIG_CRAMFS=y 124 - CONFIG_PARTITION_ADVANCED=y 125 - CONFIG_MAC_PARTITION=y 126 - CONFIG_NLS_CODEPAGE_437=y 127 - CONFIG_NLS_ISO8859_1=y 128 - # CONFIG_ENABLE_MUST_CHECK is not set 129 - CONFIG_DEBUG_FS=y 130 - CONFIG_DEBUG_KERNEL=y 131 - CONFIG_SLUB_DEBUG_ON=y 132 - CONFIG_DEBUG_KOBJECT=y 133 - CONFIG_DEBUG_INFO=y 134 - CONFIG_DEBUG_LIST=y 135 - CONFIG_DEBUG_USER=y 136 - CONFIG_DEBUG_ERRORS=y 137 - CONFIG_DEBUG_LL=y
+1 -1
arch/arm/kernel/entry-armv.S
··· 911 911 * A special ghost syscall is used for that (see traps.c). 912 912 */ 913 913 stmfd sp!, {r7, lr} 914 - ldr r7, =1f @ it's 20 bits 914 + ldr r7, 1f @ it's 20 bits 915 915 swi __ARM_NR_cmpxchg 916 916 ldmfd sp!, {r7, pc} 917 917 1: .word __ARM_NR_cmpxchg
+7
arch/arm/kernel/head.S
··· 85 85 mrc p15, 0, r9, c0, c0 @ get processor id 86 86 bl __lookup_processor_type @ r5=procinfo r9=cpuid 87 87 movs r10, r5 @ invalid processor (r5=0)? 88 + THUMB( it eq ) @ force fixup-able long branch encoding 88 89 beq __error_p @ yes, error 'p' 89 90 bl __lookup_machine_type @ r5=machinfo 90 91 movs r8, r5 @ invalid machine (r5=0)? 92 + THUMB( it eq ) @ force fixup-able long branch encoding 91 93 beq __error_a @ yes, error 'a' 92 94 bl __vet_atags 93 95 #ifdef CONFIG_SMP_ON_UP ··· 264 262 mov pc, lr 265 263 ENDPROC(__create_page_tables) 266 264 .ltorg 265 + .align 267 266 __enable_mmu_loc: 268 267 .long . 269 268 .long __enable_mmu ··· 285 282 bl __lookup_processor_type 286 283 movs r10, r5 @ invalid processor? 287 284 moveq r0, #'p' @ yes, error 'p' 285 + THUMB( it eq ) @ force fixup-able long branch encoding 288 286 beq __error_p 289 287 290 288 /* ··· 311 307 mov fp, #0 312 308 b secondary_start_kernel 313 309 ENDPROC(__secondary_switched) 310 + 311 + .align 314 312 315 313 .type __secondary_data, %object 316 314 __secondary_data: ··· 419 413 mov pc, lr 420 414 ENDPROC(__fixup_smp) 421 415 416 + .align 422 417 1: .word . 423 418 .word __smpalt_begin 424 419 .word __smpalt_end
+2
arch/arm/kernel/relocate_kernel.S
··· 59 59 ldr r2,kexec_boot_atags 60 60 mov pc,lr 61 61 62 + .align 63 + 62 64 .globl kexec_start_address 63 65 kexec_start_address: 64 66 .long 0x0
+2 -2
arch/arm/mach-at91/Makefile
··· 24 24 25 25 # AT91RM9200 board-specific support 26 26 obj-$(CONFIG_MACH_ONEARM) += board-1arm.o 27 - obj-$(CONFIG_ARCH_AT91RM9200DK) += board-dk.o 28 - obj-$(CONFIG_MACH_AT91RM9200EK) += board-ek.o 27 + obj-$(CONFIG_ARCH_AT91RM9200DK) += board-rm9200dk.o 28 + obj-$(CONFIG_MACH_AT91RM9200EK) += board-rm9200ek.o 29 29 obj-$(CONFIG_MACH_CSB337) += board-csb337.o 30 30 obj-$(CONFIG_MACH_CSB637) += board-csb637.o 31 31 obj-$(CONFIG_MACH_CARMEVA) += board-carmeva.o
-45
arch/arm/mach-at91/at91rm9200_devices.c
··· 1106 1106 static struct platform_device *__initdata at91_uarts[ATMEL_MAX_UART]; /* the UARTs to use */ 1107 1107 struct platform_device *atmel_default_console_device; /* the serial console device */ 1108 1108 1109 - void __init __deprecated at91_init_serial(struct at91_uart_config *config) 1110 - { 1111 - int i; 1112 - 1113 - /* Fill in list of supported UARTs */ 1114 - for (i = 0; i < config->nr_tty; i++) { 1115 - switch (config->tty_map[i]) { 1116 - case 0: 1117 - configure_usart0_pins(ATMEL_UART_CTS | ATMEL_UART_RTS); 1118 - at91_uarts[i] = &at91rm9200_uart0_device; 1119 - at91_clock_associate("usart0_clk", &at91rm9200_uart0_device.dev, "usart"); 1120 - break; 1121 - case 1: 1122 - configure_usart1_pins(ATMEL_UART_CTS | ATMEL_UART_RTS | ATMEL_UART_DSR | ATMEL_UART_DTR | ATMEL_UART_DCD | ATMEL_UART_RI); 1123 - at91_uarts[i] = &at91rm9200_uart1_device; 1124 - at91_clock_associate("usart1_clk", &at91rm9200_uart1_device.dev, "usart"); 1125 - break; 1126 - case 2: 1127 - configure_usart2_pins(0); 1128 - at91_uarts[i] = &at91rm9200_uart2_device; 1129 - at91_clock_associate("usart2_clk", &at91rm9200_uart2_device.dev, "usart"); 1130 - break; 1131 - case 3: 1132 - configure_usart3_pins(0); 1133 - at91_uarts[i] = &at91rm9200_uart3_device; 1134 - at91_clock_associate("usart3_clk", &at91rm9200_uart3_device.dev, "usart"); 1135 - break; 1136 - case 4: 1137 - configure_dbgu_pins(); 1138 - at91_uarts[i] = &at91rm9200_dbgu_device; 1139 - at91_clock_associate("mck", &at91rm9200_dbgu_device.dev, "usart"); 1140 - break; 1141 - default: 1142 - continue; 1143 - } 1144 - at91_uarts[i]->id = i; /* update ID number to mapped ID */ 1145 - } 1146 - 1147 - /* Set serial console device */ 1148 - if (config->console_tty < ATMEL_MAX_UART) 1149 - atmel_default_console_device = at91_uarts[config->console_tty]; 1150 - if (!atmel_default_console_device) 1151 - printk(KERN_INFO "AT91: No default serial console defined.\n"); 1152 - } 1153 - 1154 1109 void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) 1155 1110 { 1156 1111 struct platform_device *pdev;
+13 -13
arch/arm/mach-at91/board-1arm.c
··· 39 39 #include "generic.h" 40 40 41 41 42 - /* 43 - * Serial port configuration. 44 - * 0 .. 3 = USART0 .. USART3 45 - * 4 = DBGU 46 - */ 47 - static struct at91_uart_config __initdata onearm_uart_config = { 48 - .console_tty = 0, /* ttyS0 */ 49 - .nr_tty = 3, 50 - .tty_map = { 4, 0, 1, -1, -1 }, /* ttyS0, ..., ttyS4 */ 51 - }; 52 - 53 42 static void __init onearm_map_io(void) 54 43 { 55 44 /* Initialize processor: 18.432 MHz crystal */ 56 45 at91rm9200_initialize(18432000, AT91RM9200_PQFP); 57 46 58 - /* Setup the serial ports and console */ 59 - at91_init_serial(&onearm_uart_config); 47 + /* DBGU on ttyS0. (Rx & Tx only) */ 48 + at91_register_uart(0, 0, 0); 49 + 50 + /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */ 51 + at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); 52 + 53 + /* USART1 on ttyS2 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ 54 + at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS 55 + | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD 56 + | ATMEL_UART_RI); 57 + 58 + /* set serial console to ttyS0 (ie, DBGU) */ 59 + at91_set_serial_console(0); 60 60 } 61 61 62 62 static void __init onearm_init_irq(void)
+3 -1
arch/arm/mach-at91/board-dk.c arch/arm/mach-at91/board-rm9200dk.c
··· 1 1 /* 2 - * linux/arch/arm/mach-at91/board-dk.c 2 + * linux/arch/arm/mach-at91/board-rm9200dk.c 3 3 * 4 4 * Copyright (C) 2005 SAN People 5 5 * ··· 91 91 // .vcc_pin = ... always powered 92 92 }; 93 93 94 + #ifndef CONFIG_MTD_AT91_DATAFLASH_CARD 94 95 static struct at91_mmc_data __initdata dk_mmc_data = { 95 96 .slot_b = 0, 96 97 .wire4 = 1, 97 98 }; 99 + #endif 98 100 99 101 static struct spi_board_info dk_spi_devices[] = { 100 102 { /* DataFlash chip */
+3 -1
arch/arm/mach-at91/board-ek.c arch/arm/mach-at91/board-rm9200ek.c
··· 1 1 /* 2 - * linux/arch/arm/mach-at91/board-ek.c 2 + * linux/arch/arm/mach-at91/board-rm9200ek.c 3 3 * 4 4 * Copyright (C) 2005 SAN People 5 5 * ··· 84 84 .pullup_pin = AT91_PIN_PD5, 85 85 }; 86 86 87 + #ifndef CONFIG_MTD_AT91_DATAFLASH_CARD 87 88 static struct at91_mmc_data __initdata ek_mmc_data = { 88 89 .det_pin = AT91_PIN_PB27, 89 90 .slot_b = 0, 90 91 .wire4 = 1, 91 92 .wp_pin = AT91_PIN_PA17, 92 93 }; 94 + #endif 93 95 94 96 static struct spi_board_info ek_spi_devices[] = { 95 97 { /* DataFlash chip */
+8 -13
arch/arm/mach-at91/board-kafa.c
··· 39 39 #include "generic.h" 40 40 41 41 42 - /* 43 - * Serial port configuration. 44 - * 0 .. 3 = USART0 .. USART3 45 - * 4 = DBGU 46 - */ 47 - static struct at91_uart_config __initdata kafa_uart_config = { 48 - .console_tty = 0, /* ttyS0 */ 49 - .nr_tty = 2, 50 - .tty_map = { 4, 0, -1, -1, -1 } /* ttyS0, ..., ttyS4 */ 51 - }; 52 - 53 42 static void __init kafa_map_io(void) 54 43 { 55 44 /* Initialize processor: 18.432 MHz crystal */ ··· 47 58 /* Set up the LEDs */ 48 59 at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4); 49 60 50 - /* Setup the serial ports and console */ 51 - at91_init_serial(&kafa_uart_config); 61 + /* DBGU on ttyS0. (Rx & Tx only) */ 62 + at91_register_uart(0, 0, 0); 63 + 64 + /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */ 65 + at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS); 66 + 67 + /* set serial console to ttyS0 (ie, DBGU) */ 68 + at91_set_serial_console(0); 52 69 } 53 70 54 71 static void __init kafa_init_irq(void)
+10 -43
arch/arm/mach-at91/board-picotux200.c
··· 43 43 #include "generic.h" 44 44 45 45 46 - /* 47 - * Serial port configuration. 48 - * 0 .. 3 = USART0 .. USART3 49 - * 4 = DBGU 50 - */ 51 - static struct at91_uart_config __initdata picotux200_uart_config = { 52 - .console_tty = 0, /* ttyS0 */ 53 - .nr_tty = 2, 54 - .tty_map = { 4, 1, -1, -1, -1 } /* ttyS0, ..., ttyS4 */ 55 - }; 56 - 57 46 static void __init picotux200_map_io(void) 58 47 { 59 48 /* Initialize processor: 18.432 MHz crystal */ 60 49 at91rm9200_initialize(18432000, AT91RM9200_BGA); 61 50 62 - /* Setup the serial ports and console */ 63 - at91_init_serial(&picotux200_uart_config); 51 + /* DBGU on ttyS0. (Rx & Tx only) */ 52 + at91_register_uart(0, 0, 0); 53 + 54 + /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */ 55 + at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS 56 + | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD 57 + | ATMEL_UART_RI); 58 + 59 + /* set serial console to ttyS0 (ie, DBGU) */ 60 + at91_set_serial_console(0); 64 61 } 65 62 66 63 static void __init picotux200_init_irq(void) ··· 74 77 .ports = 1, 75 78 }; 76 79 77 - // static struct at91_udc_data __initdata picotux200_udc_data = { 78 - // .vbus_pin = AT91_PIN_PD4, 79 - // .pullup_pin = AT91_PIN_PD5, 80 - // }; 81 - 82 80 static struct at91_mmc_data __initdata picotux200_mmc_data = { 83 81 .det_pin = AT91_PIN_PB27, 84 82 .slot_b = 0, 85 83 .wire4 = 1, 86 84 .wp_pin = AT91_PIN_PA17, 87 85 }; 88 - 89 - // static struct spi_board_info picotux200_spi_devices[] = { 90 - // { /* DataFlash chip */ 91 - // .modalias = "mtd_dataflash", 92 - // .chip_select = 0, 93 - // .max_speed_hz = 15 * 1000 * 1000, 94 - // }, 95 - // #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD 96 - // { /* DataFlash card */ 97 - // .modalias = "mtd_dataflash", 98 - // .chip_select = 3, 99 - // .max_speed_hz = 15 * 1000 * 1000, 100 - // }, 101 - // #endif 102 - // }; 103 86 104 87 #define PICOTUX200_FLASH_BASE AT91_CHIPSELECT_0 105 88 #define PICOTUX200_FLASH_SIZE SZ_4M ··· 112 135 at91_add_device_eth(&picotux200_eth_data); 113 136 /* USB Host */ 114 137 at91_add_device_usbh(&picotux200_usbh_data); 115 - /* USB Device */ 116 - // at91_add_device_udc(&picotux200_udc_data); 117 - // at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ 118 138 /* I2C */ 119 139 at91_add_device_i2c(NULL, 0); 120 - /* SPI */ 121 - // at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices)); 122 - #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD 123 - /* DataFlash card */ 124 - at91_set_gpio_output(AT91_PIN_PB22, 0); 125 - #else 126 140 /* MMC */ 127 141 at91_set_gpio_output(AT91_PIN_PB22, 1); /* this MMC card slot can optionally use SPI signaling (CS3). */ 128 142 at91_add_device_mmc(0, &picotux200_mmc_data); 129 - #endif 130 143 /* NOR Flash */ 131 144 platform_device_register(&picotux200_flash); 132 145 }
+1 -1
arch/arm/mach-at91/board-yl-9200.c
··· 387 387 * EPSON S1D13806 FB (discontinued chip) 388 388 * EPSON S1D13506 FB 389 389 */ 390 - #if defined(CONFIG_FB_S1D135XX) || defined(CONFIG_FB_S1D13XXX_MODULE) 390 + #if defined(CONFIG_FB_S1D13XXX) || defined(CONFIG_FB_S1D13XXX_MODULE) 391 391 #include <video/s1d13xxxfb.h> 392 392 393 393
-6
arch/arm/mach-at91/include/mach/board.h
··· 137 137 extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins); 138 138 extern void __init at91_set_serial_console(unsigned portnr); 139 139 140 - struct at91_uart_config { 141 - unsigned short console_tty; /* tty number of serial console */ 142 - unsigned short nr_tty; /* number of serial tty's */ 143 - short tty_map[]; /* map UART to tty number */ 144 - }; 145 140 extern struct platform_device *atmel_default_console_device; 146 - extern void __init __deprecated at91_init_serial(struct at91_uart_config *config); 147 141 148 142 struct atmel_uart_data { 149 143 short use_dma_tx; /* use transmit DMA? */
+1 -1
arch/arm/mach-cns3xxx/pcie.c
··· 369 369 { 370 370 int i; 371 371 372 - hook_fault_code(16 + 6, cns3xxx_pcie_abort_handler, SIGBUS, 372 + hook_fault_code(16 + 6, cns3xxx_pcie_abort_handler, SIGBUS, 0, 373 373 "imprecise external abort"); 374 374 375 375 for (i = 0; i < ARRAY_SIZE(cns3xxx_pcie); i++) {
+1
arch/arm/mach-realview/headsmp.S
··· 35 35 */ 36 36 b secondary_startup 37 37 38 + .align 38 39 1: .long . 39 40 .long pen_release
+2 -2
arch/arm/mach-tegra/include/mach/debug-macro.S
··· 21 21 #include <mach/io.h> 22 22 23 23 .macro addruart, rp, rv 24 - ldreq \rp, =IO_APB_PHYS @ physical 25 - ldrne \rv, =IO_APB_VIRT @ virtual 24 + ldr \rp, =IO_APB_PHYS @ physical 25 + ldr \rv, =IO_APB_VIRT @ virtual 26 26 #if defined(CONFIG_TEGRA_DEBUG_UART_NONE) 27 27 #error "A debug UART must be selected in the kernel config to use DEBUG_LL" 28 28 #elif defined(CONFIG_TEGRA_DEBUG_UARTA)
+1
arch/arm/mach-vexpress/headsmp.S
··· 35 35 */ 36 36 b secondary_startup 37 37 38 + .align 38 39 1: .long . 39 40 .long pen_release
+2 -2
arch/arm/mm/proc-v7.S
··· 381 381 PMD_SECT_XN | \ 382 382 PMD_SECT_AP_WRITE | \ 383 383 PMD_SECT_AP_READ 384 - b __v7_ca9mp_setup 384 + W(b) __v7_ca9mp_setup 385 385 .long cpu_arch_name 386 386 .long cpu_elf_name 387 387 .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS ··· 413 413 PMD_SECT_XN | \ 414 414 PMD_SECT_AP_WRITE | \ 415 415 PMD_SECT_AP_READ 416 - b __v7_setup 416 + W(b) __v7_setup 417 417 .long cpu_arch_name 418 418 .long cpu_elf_name 419 419 .long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_TLS
+2 -1
arch/arm/plat-iop/time.c
··· 18 18 #include <linux/time.h> 19 19 #include <linux/init.h> 20 20 #include <linux/timex.h> 21 + #include <linux/sched.h> 21 22 #include <linux/io.h> 22 23 #include <linux/clocksource.h> 23 24 #include <linux/clockchips.h> ··· 37 36 /* 38 37 * IOP clocksource (free-running timer 1). 39 38 */ 40 - static cycle_t iop_clocksource_read(struct clocksource *unused) 39 + static cycle_t notrace iop_clocksource_read(struct clocksource *unused) 41 40 { 42 41 return 0xffffffffu - read_tcr1(); 43 42 }
+1
arch/arm/vfp/vfphw.S
··· 206 206 mov pc, lr 207 207 ENDPROC(vfp_save_state) 208 208 209 + .align 209 210 last_VFP_context_address: 210 211 .word last_VFP_context 211 212
+117
arch/mn10300/include/asm/syscall.h
··· 1 + /* Access to user system call parameters and results 2 + * 3 + * See asm-generic/syscall.h for function descriptions. 4 + * 5 + * Copyright (C) 2010 Red Hat, Inc. All Rights Reserved. 6 + * Written by David Howells (dhowells@redhat.com) 7 + * 8 + * This program is free software; you can redistribute it and/or 9 + * modify it under the terms of the GNU General Public Licence 10 + * as published by the Free Software Foundation; either version 11 + * 2 of the Licence, or (at your option) any later version. 12 + */ 13 + 14 + #ifndef _ASM_SYSCALL_H 15 + #define _ASM_SYSCALL_H 16 + 17 + #include <linux/sched.h> 18 + #include <linux/err.h> 19 + 20 + extern const unsigned long sys_call_table[]; 21 + 22 + static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs) 23 + { 24 + return regs->orig_d0; 25 + } 26 + 27 + static inline void syscall_rollback(struct task_struct *task, 28 + struct pt_regs *regs) 29 + { 30 + regs->d0 = regs->orig_d0; 31 + } 32 + 33 + static inline long syscall_get_error(struct task_struct *task, 34 + struct pt_regs *regs) 35 + { 36 + unsigned long error = regs->d0; 37 + return IS_ERR_VALUE(error) ? error : 0; 38 + } 39 + 40 + static inline long syscall_get_return_value(struct task_struct *task, 41 + struct pt_regs *regs) 42 + { 43 + return regs->d0; 44 + } 45 + 46 + static inline void syscall_set_return_value(struct task_struct *task, 47 + struct pt_regs *regs, 48 + int error, long val) 49 + { 50 + regs->d0 = (long) error ?: val; 51 + } 52 + 53 + static inline void syscall_get_arguments(struct task_struct *task, 54 + struct pt_regs *regs, 55 + unsigned int i, unsigned int n, 56 + unsigned long *args) 57 + { 58 + switch (i) { 59 + case 0: 60 + if (!n--) break; 61 + *args++ = regs->a0; 62 + case 1: 63 + if (!n--) break; 64 + *args++ = regs->d1; 65 + case 2: 66 + if (!n--) break; 67 + *args++ = regs->a3; 68 + case 3: 69 + if (!n--) break; 70 + *args++ = regs->a2; 71 + case 4: 72 + if (!n--) break; 73 + *args++ = regs->d3; 74 + case 5: 75 + if (!n--) break; 76 + *args++ = regs->d2; 77 + case 6: 78 + if (!n--) break; 79 + default: 80 + BUG(); 81 + break; 82 + } 83 + } 84 + 85 + static inline void syscall_set_arguments(struct task_struct *task, 86 + struct pt_regs *regs, 87 + unsigned int i, unsigned int n, 88 + const unsigned long *args) 89 + { 90 + switch (i) { 91 + case 0: 92 + if (!n--) break; 93 + regs->a0 = *args++; 94 + case 1: 95 + if (!n--) break; 96 + regs->d1 = *args++; 97 + case 2: 98 + if (!n--) break; 99 + regs->a3 = *args++; 100 + case 3: 101 + if (!n--) break; 102 + regs->a2 = *args++; 103 + case 4: 104 + if (!n--) break; 105 + regs->d3 = *args++; 106 + case 5: 107 + if (!n--) break; 108 + regs->d2 = *args++; 109 + case 6: 110 + if (!n--) break; 111 + default: 112 + BUG(); 113 + break; 114 + } 115 + } 116 + 117 + #endif /* _ASM_SYSCALL_H */
+2 -5
arch/parisc/kernel/irq.c
··· 75 75 smp_send_all_nop(); 76 76 } 77 77 78 - void no_ack_irq(unsigned int irq) { } 79 - void no_end_irq(unsigned int irq) { } 80 - 81 78 void cpu_ack_irq(unsigned int irq) 82 79 { 83 80 unsigned long mask = EIEM_MASK(irq); ··· 238 241 239 242 /* for iosapic interrupts */ 240 243 if (type) { 241 - set_irq_chip_and_handler(irq, type, handle_level_irq); 244 + set_irq_chip_and_handler(irq, type, handle_percpu_irq); 242 245 set_irq_chip_data(irq, data); 243 246 cpu_unmask_irq(irq); 244 247 } ··· 389 392 int i; 390 393 for (i = CPU_IRQ_BASE; i <= CPU_IRQ_MAX; i++) { 391 394 set_irq_chip_and_handler(i, &cpu_interrupt_type, 392 - handle_level_irq); 395 + handle_percpu_irq); 393 396 } 394 397 395 398 set_irq_handler(TIMER_IRQ, handle_percpu_irq);
+1 -8
arch/parisc/kernel/signal.c
··· 98 98 sys_rt_sigreturn(struct pt_regs *regs, int in_syscall) 99 99 { 100 100 struct rt_sigframe __user *frame; 101 - struct siginfo si; 102 101 sigset_t set; 103 102 unsigned long usp = (regs->gr[30] & ~(0x01UL)); 104 103 unsigned long sigframe_size = PARISC_RT_SIGFRAME_SIZE; ··· 177 178 178 179 give_sigsegv: 179 180 DBG(1,"sys_rt_sigreturn: Sending SIGSEGV\n"); 180 - si.si_signo = SIGSEGV; 181 - si.si_errno = 0; 182 - si.si_code = SI_KERNEL; 183 - si.si_pid = task_pid_vnr(current); 184 - si.si_uid = current_uid(); 185 - si.si_addr = &frame->uc; 186 - force_sig_info(SIGSEGV, &si, current); 181 + force_sig(SIGSEGV, current); 187 182 return; 188 183 } 189 184
+4 -30
arch/sh/boards/mach-ecovec24/setup.c
··· 720 720 }; 721 721 722 722 /* FSI */ 723 - /* 724 - * FSI-B use external clock which came from da7210. 725 - * So, we should change parent of fsi 726 - */ 727 - #define FCLKBCR 0xa415000c 728 - static void fsimck_init(struct clk *clk) 729 - { 730 - u32 status = __raw_readl(clk->enable_reg); 731 - 732 - /* use external clock */ 733 - status &= ~0x000000ff; 734 - status |= 0x00000080; 735 - 736 - __raw_writel(status, clk->enable_reg); 737 - } 738 - 739 - static struct clk_ops fsimck_clk_ops = { 740 - .init = fsimck_init, 741 - }; 742 - 743 - static struct clk fsimckb_clk = { 744 - .ops = &fsimck_clk_ops, 745 - .enable_reg = (void __iomem *)FCLKBCR, 746 - .rate = 0, /* unknown */ 747 - }; 748 - 749 723 static struct sh_fsi_platform_info fsi_info = { 750 724 .portb_flags = SH_FSI_BRS_INV | 751 725 SH_FSI_OUT_SLAVE_MODE | ··· 1238 1264 /* change parent of FSI B */ 1239 1265 clk = clk_get(NULL, "fsib_clk"); 1240 1266 if (!IS_ERR(clk)) { 1241 - clk_register(&fsimckb_clk); 1242 - clk_set_parent(clk, &fsimckb_clk); 1243 - clk_set_rate(clk, 11000); 1244 - clk_set_rate(&fsimckb_clk, 11000); 1267 + /* 48kHz dummy clock was used to make sure 1/1 divide */ 1268 + clk_set_rate(&sh7724_fsimckb_clk, 48000); 1269 + clk_set_parent(clk, &sh7724_fsimckb_clk); 1270 + clk_set_rate(clk, 48000); 1245 1271 clk_put(clk); 1246 1272 } 1247 1273
+7 -40
arch/sh/boards/mach-se/7724/setup.c
··· 283 283 }; 284 284 285 285 /* FSI */ 286 - /* 287 - * FSI-A use external clock which came from ak464x. 288 - * So, we should change parent of fsi 289 - */ 290 - #define FCLKACR 0xa4150008 291 - static void fsimck_init(struct clk *clk) 292 - { 293 - u32 status = __raw_readl(clk->enable_reg); 294 - 295 - /* use external clock */ 296 - status &= ~0x000000ff; 297 - status |= 0x00000080; 298 - __raw_writel(status, clk->enable_reg); 299 - } 300 - 301 - static struct clk_ops fsimck_clk_ops = { 302 - .init = fsimck_init, 303 - }; 304 - 305 - static struct clk fsimcka_clk = { 306 - .ops = &fsimck_clk_ops, 307 - .enable_reg = (void __iomem *)FCLKACR, 308 - .rate = 0, /* unknown */ 309 - }; 310 - 311 286 /* change J20, J21, J22 pin to 1-2 connection to use slave mode */ 312 287 static struct sh_fsi_platform_info fsi_info = { 313 288 .porta_flags = SH_FSI_BRS_INV | ··· 827 852 gpio_request(GPIO_FN_KEYOUT0, NULL); 828 853 829 854 /* enable FSI */ 830 - gpio_request(GPIO_FN_FSIMCKB, NULL); 831 855 gpio_request(GPIO_FN_FSIMCKA, NULL); 856 + gpio_request(GPIO_FN_FSIIASD, NULL); 832 857 gpio_request(GPIO_FN_FSIOASD, NULL); 833 858 gpio_request(GPIO_FN_FSIIABCK, NULL); 834 859 gpio_request(GPIO_FN_FSIIALRCK, NULL); 835 860 gpio_request(GPIO_FN_FSIOABCK, NULL); 836 861 gpio_request(GPIO_FN_FSIOALRCK, NULL); 837 862 gpio_request(GPIO_FN_CLKAUDIOAO, NULL); 838 - gpio_request(GPIO_FN_FSIIBSD, NULL); 839 - gpio_request(GPIO_FN_FSIOBSD, NULL); 840 - gpio_request(GPIO_FN_FSIIBBCK, NULL); 841 - gpio_request(GPIO_FN_FSIIBLRCK, NULL); 842 - gpio_request(GPIO_FN_FSIOBBCK, NULL); 843 - gpio_request(GPIO_FN_FSIOBLRCK, NULL); 844 - gpio_request(GPIO_FN_CLKAUDIOBO, NULL); 845 - gpio_request(GPIO_FN_FSIIASD, NULL); 846 863 847 864 /* set SPU2 clock to 83.4 MHz */ 848 865 clk = clk_get(NULL, "spu_clk"); 849 - if (clk) { 866 + if (!IS_ERR(clk)) { 850 867 clk_set_rate(clk, clk_round_rate(clk, 83333333)); 851 868 clk_put(clk); 852 869 } 853 870 854 871 /* change parent of FSI A */ 855 872 clk = clk_get(NULL, "fsia_clk"); 856 - if (clk) { 857 - clk_register(&fsimcka_clk); 858 - clk_set_parent(clk, &fsimcka_clk); 859 - clk_set_rate(clk, 11000); 860 - clk_set_rate(&fsimcka_clk, 11000); 873 + if (!IS_ERR(clk)) { 874 + /* 48kHz dummy clock was used to make sure 1/1 divide */ 875 + clk_set_rate(&sh7724_fsimcka_clk, 48000); 876 + clk_set_parent(clk, &sh7724_fsimcka_clk); 877 + clk_set_rate(clk, 48000); 861 878 clk_put(clk); 862 879 } 863 880
+1 -1
arch/sh/include/asm/cacheflush.h
··· 96 96 void *kmap_coherent(struct page *page, unsigned long addr); 97 97 void kunmap_coherent(void *kvaddr); 98 98 99 - #define PG_dcache_dirty PG_arch_1 99 + #define PG_dcache_clean PG_arch_1 100 100 101 101 void cpu_cache_init(void); 102 102
+3
arch/sh/include/cpu-sh4/cpu/sh7724.h
··· 303 303 SHDMA_SLAVE_SDHI1_RX, 304 304 }; 305 305 306 + extern struct clk sh7724_fsimcka_clk; 307 + extern struct clk sh7724_fsimckb_clk; 308 + 306 309 #endif /* __ASM_SH7724_H__ */
+39 -5
arch/sh/kernel/cpu/sh4a/clock-sh7724.c
··· 111 111 .parent = &pll_clk, 112 112 }; 113 113 114 + /* External input clock (pin name: FSIMCKA/FSIMCKB ) */ 115 + struct clk sh7724_fsimcka_clk = { 116 + }; 117 + 118 + struct clk sh7724_fsimckb_clk = { 119 + }; 120 + 114 121 static struct clk *main_clks[] = { 115 122 &r_clk, 116 123 &extal_clk, 117 124 &fll_clk, 118 125 &pll_clk, 119 126 &div3_clk, 127 + &sh7724_fsimcka_clk, 128 + &sh7724_fsimckb_clk, 120 129 }; 121 130 122 131 static void div4_kick(struct clk *clk) ··· 163 154 [DIV4_M1] = DIV4(FRQCRB, 4, 0x2f7c, CLK_ENABLE_ON_INIT), 164 155 }; 165 156 166 - enum { DIV6_V, DIV6_FA, DIV6_FB, DIV6_I, DIV6_S, DIV6_NR }; 157 + enum { DIV6_V, DIV6_I, DIV6_S, DIV6_NR }; 167 158 168 159 static struct clk div6_clks[DIV6_NR] = { 169 160 [DIV6_V] = SH_CLK_DIV6(&div3_clk, VCLKCR, 0), 170 - [DIV6_FA] = SH_CLK_DIV6(&div3_clk, FCLKACR, 0), 171 - [DIV6_FB] = SH_CLK_DIV6(&div3_clk, FCLKBCR, 0), 172 161 [DIV6_I] = SH_CLK_DIV6(&div3_clk, IRDACLKCR, 0), 173 162 [DIV6_S] = SH_CLK_DIV6(&div3_clk, SPUCLKCR, CLK_ENABLE_ON_INIT), 163 + }; 164 + 165 + enum { DIV6_FA, DIV6_FB, DIV6_REPARENT_NR }; 166 + 167 + /* Indices are important - they are the actual src selecting values */ 168 + static struct clk *fclkacr_parent[] = { 169 + [0] = &div3_clk, 170 + [1] = NULL, 171 + [2] = &sh7724_fsimcka_clk, 172 + [3] = NULL, 173 + }; 174 + 175 + static struct clk *fclkbcr_parent[] = { 176 + [0] = &div3_clk, 177 + [1] = NULL, 178 + [2] = &sh7724_fsimckb_clk, 179 + [3] = NULL, 180 + }; 181 + 182 + static struct clk div6_reparent_clks[DIV6_REPARENT_NR] = { 183 + [DIV6_FA] = SH_CLK_DIV6_EXT(&div3_clk, FCLKACR, 0, 184 + fclkacr_parent, ARRAY_SIZE(fclkacr_parent), 6, 2), 185 + [DIV6_FB] = SH_CLK_DIV6_EXT(&div3_clk, FCLKBCR, 0, 186 + fclkbcr_parent, ARRAY_SIZE(fclkbcr_parent), 6, 2), 174 187 }; 175 188 176 189 static struct clk mstp_clks[HWBLK_NR] = { ··· 271 240 272 241 /* DIV6 clocks */ 273 242 CLKDEV_CON_ID("video_clk", &div6_clks[DIV6_V]), 274 - CLKDEV_CON_ID("fsia_clk", &div6_clks[DIV6_FA]), 275 - CLKDEV_CON_ID("fsib_clk", &div6_clks[DIV6_FB]), 243 + CLKDEV_CON_ID("fsia_clk", &div6_reparent_clks[DIV6_FA]), 244 + CLKDEV_CON_ID("fsib_clk", &div6_reparent_clks[DIV6_FB]), 276 245 CLKDEV_CON_ID("irda_clk", &div6_clks[DIV6_I]), 277 246 CLKDEV_CON_ID("spu_clk", &div6_clks[DIV6_S]), 278 247 ··· 405 374 406 375 if (!ret) 407 376 ret = sh_clk_div6_register(div6_clks, DIV6_NR); 377 + 378 + if (!ret) 379 + ret = sh_clk_div6_reparent_register(div6_reparent_clks, DIV6_REPARENT_NR); 408 380 409 381 if (!ret) 410 382 ret = sh_hwblk_clk_register(mstp_clks, HWBLK_NR);
+2 -2
arch/sh/mm/cache-sh4.c
··· 114 114 struct address_space *mapping = page_mapping(page); 115 115 116 116 if (mapping && !mapping_mapped(mapping)) 117 - set_bit(PG_dcache_dirty, &page->flags); 117 + clear_bit(PG_dcache_clean, &page->flags); 118 118 else 119 119 #endif 120 120 flush_cache_one(CACHE_OC_ADDRESS_ARRAY | ··· 239 239 * another ASID than the current one. 240 240 */ 241 241 map_coherent = (current_cpu_data.dcache.n_aliases && 242 - !test_bit(PG_dcache_dirty, &page->flags) && 242 + test_bit(PG_dcache_clean, &page->flags) && 243 243 page_mapped(page)); 244 244 if (map_coherent) 245 245 vaddr = kmap_coherent(page, address);
+1 -1
arch/sh/mm/cache-sh7705.c
··· 139 139 struct address_space *mapping = page_mapping(page); 140 140 141 141 if (mapping && !mapping_mapped(mapping)) 142 - set_bit(PG_dcache_dirty, &page->flags); 142 + clear_bit(PG_dcache_clean, &page->flags); 143 143 else 144 144 __flush_dcache_page(__pa(page_address(page))); 145 145 }
+7 -7
arch/sh/mm/cache.c
··· 60 60 unsigned long len) 61 61 { 62 62 if (boot_cpu_data.dcache.n_aliases && page_mapped(page) && 63 - !test_bit(PG_dcache_dirty, &page->flags)) { 63 + test_bit(PG_dcache_clean, &page->flags)) { 64 64 void *vto = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK); 65 65 memcpy(vto, src, len); 66 66 kunmap_coherent(vto); 67 67 } else { 68 68 memcpy(dst, src, len); 69 69 if (boot_cpu_data.dcache.n_aliases) 70 - set_bit(PG_dcache_dirty, &page->flags); 70 + clear_bit(PG_dcache_clean, &page->flags); 71 71 } 72 72 73 73 if (vma->vm_flags & VM_EXEC) ··· 79 79 unsigned long len) 80 80 { 81 81 if (boot_cpu_data.dcache.n_aliases && page_mapped(page) && 82 - !test_bit(PG_dcache_dirty, &page->flags)) { 82 + test_bit(PG_dcache_clean, &page->flags)) { 83 83 void *vfrom = kmap_coherent(page, vaddr) + (vaddr & ~PAGE_MASK); 84 84 memcpy(dst, vfrom, len); 85 85 kunmap_coherent(vfrom); 86 86 } else { 87 87 memcpy(dst, src, len); 88 88 if (boot_cpu_data.dcache.n_aliases) 89 - set_bit(PG_dcache_dirty, &page->flags); 89 + clear_bit(PG_dcache_clean, &page->flags); 90 90 } 91 91 } 92 92 ··· 98 98 vto = kmap_atomic(to, KM_USER1); 99 99 100 100 if (boot_cpu_data.dcache.n_aliases && page_mapped(from) && 101 - !test_bit(PG_dcache_dirty, &from->flags)) { 101 + test_bit(PG_dcache_clean, &from->flags)) { 102 102 vfrom = kmap_coherent(from, vaddr); 103 103 copy_page(vto, vfrom); 104 104 kunmap_coherent(vfrom); ··· 141 141 142 142 page = pfn_to_page(pfn); 143 143 if (pfn_valid(pfn)) { 144 - int dirty = test_and_clear_bit(PG_dcache_dirty, &page->flags); 144 + int dirty = !test_and_set_bit(PG_dcache_clean, &page->flags); 145 145 if (dirty) 146 146 __flush_purge_region(page_address(page), PAGE_SIZE); 147 147 } ··· 153 153 154 154 if (pages_do_alias(addr, vmaddr)) { 155 155 if (boot_cpu_data.dcache.n_aliases && page_mapped(page) && 156 - !test_bit(PG_dcache_dirty, &page->flags)) { 156 + test_bit(PG_dcache_clean, &page->flags)) { 157 157 void *kaddr; 158 158 159 159 kaddr = kmap_coherent(page, vmaddr);
+1 -1
arch/sh/mm/kmap.c
··· 34 34 enum fixed_addresses idx; 35 35 unsigned long vaddr; 36 36 37 - BUG_ON(test_bit(PG_dcache_dirty, &page->flags)); 37 + BUG_ON(!test_bit(PG_dcache_clean, &page->flags)); 38 38 39 39 pagefault_disable(); 40 40
+20 -7
arch/x86/pci/xen.c
··· 70 70 struct xen_pci_frontend_ops *xen_pci_frontend; 71 71 EXPORT_SYMBOL_GPL(xen_pci_frontend); 72 72 73 + #define XEN_PIRQ_MSI_DATA (MSI_DATA_TRIGGER_EDGE | \ 74 + MSI_DATA_LEVEL_ASSERT | (3 << 8) | MSI_DATA_VECTOR(0)) 75 + 73 76 static void xen_msi_compose_msg(struct pci_dev *pdev, unsigned int pirq, 74 77 struct msi_msg *msg) 75 78 { ··· 86 83 MSI_ADDR_REDIRECTION_CPU | 87 84 MSI_ADDR_DEST_ID(pirq); 88 85 89 - msg->data = 90 - MSI_DATA_TRIGGER_EDGE | 91 - MSI_DATA_LEVEL_ASSERT | 92 - /* delivery mode reserved */ 93 - (3 << 8) | 94 - MSI_DATA_VECTOR(0); 86 + msg->data = XEN_PIRQ_MSI_DATA; 95 87 } 96 88 97 89 static int xen_hvm_setup_msi_irqs(struct pci_dev *dev, int nvec, int type) ··· 96 98 struct msi_msg msg; 97 99 98 100 list_for_each_entry(msidesc, &dev->msi_list, list) { 101 + __read_msi_msg(msidesc, &msg); 102 + pirq = MSI_ADDR_EXT_DEST_ID(msg.address_hi) | 103 + ((msg.address_lo >> MSI_ADDR_DEST_ID_SHIFT) & 0xff); 104 + if (xen_irq_from_pirq(pirq) >= 0 && msg.data == XEN_PIRQ_MSI_DATA) { 105 + xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? 106 + "msi-x" : "msi", &irq, &pirq, XEN_ALLOC_IRQ); 107 + if (irq < 0) 108 + goto error; 109 + ret = set_irq_msi(irq, msidesc); 110 + if (ret < 0) 111 + goto error_while; 112 + printk(KERN_DEBUG "xen: msi already setup: msi --> irq=%d" 113 + " pirq=%d\n", irq, pirq); 114 + return 0; 115 + } 99 116 xen_allocate_pirq_msi((type == PCI_CAP_ID_MSIX) ? 100 - "msi-x" : "msi", &irq, &pirq); 117 + "msi-x" : "msi", &irq, &pirq, (XEN_ALLOC_IRQ | XEN_ALLOC_PIRQ)); 101 118 if (irq < 0 || pirq < 0) 102 119 goto error; 103 120 printk(KERN_DEBUG "xen: msi --> irq=%d, pirq=%d\n", irq, pirq);
-4
arch/x86/xen/enlighten.c
··· 1021 1021 { 1022 1022 struct sched_shutdown r = { .reason = reason }; 1023 1023 1024 - #ifdef CONFIG_SMP 1025 - stop_other_cpus(); 1026 - #endif 1027 - 1028 1024 if (HYPERVISOR_sched_op(SCHEDOP_shutdown, &r)) 1029 1025 BUG(); 1030 1026 }
-2
arch/x86/xen/mmu.c
··· 2415 2415 x86_init.paging.pagetable_setup_done = xen_pagetable_setup_done; 2416 2416 pv_mmu_ops = xen_mmu_ops; 2417 2417 2418 - vmap_lazy_unmap = false; 2419 - 2420 2418 memset(dummy_mapping, 0xff, PAGE_SIZE); 2421 2419 } 2422 2420
+1 -1
arch/x86/xen/platform-pci-unplug.c
··· 68 68 return 0; 69 69 } 70 70 71 - void __init xen_unplug_emulated_devices(void) 71 + void xen_unplug_emulated_devices(void) 72 72 { 73 73 int r; 74 74
+14 -27
arch/x86/xen/setup.c
··· 181 181 for (i = 0; i < memmap.nr_entries; i++) { 182 182 unsigned long long end = map[i].addr + map[i].size; 183 183 184 - if (map[i].type == E820_RAM) { 185 - if (map[i].addr < mem_end && end > mem_end) { 186 - /* Truncate region to max_mem. */ 187 - u64 delta = end - mem_end; 184 + if (map[i].type == E820_RAM && end > mem_end) { 185 + /* RAM off the end - may be partially included */ 186 + u64 delta = min(map[i].size, end - mem_end); 188 187 189 - map[i].size -= delta; 190 - extra_pages += PFN_DOWN(delta); 188 + map[i].size -= delta; 189 + end -= delta; 191 190 192 - end = mem_end; 193 - } 191 + extra_pages += PFN_DOWN(delta); 194 192 } 195 193 196 - if (end > xen_extra_mem_start) 194 + if (map[i].size > 0 && end > xen_extra_mem_start) 197 195 xen_extra_mem_start = end; 198 196 199 - /* If region is non-RAM or below mem_end, add what remains */ 200 - if ((map[i].type != E820_RAM || map[i].addr < mem_end) && 201 - map[i].size > 0) 197 + /* Add region if any remains */ 198 + if (map[i].size > 0) 202 199 e820_add_region(map[i].addr, map[i].size, map[i].type); 203 200 } 204 201 ··· 247 250 xen_add_extra_mem(extra_pages); 248 251 249 252 return "Xen"; 250 - } 251 - 252 - static void xen_idle(void) 253 - { 254 - local_irq_disable(); 255 - 256 - if (need_resched()) 257 - local_irq_enable(); 258 - else { 259 - current_thread_info()->status &= ~TS_POLLING; 260 - smp_mb__after_clear_bit(); 261 - safe_halt(); 262 - current_thread_info()->status |= TS_POLLING; 263 - } 264 253 } 265 254 266 255 /* ··· 345 362 MAX_GUEST_CMDLINE > COMMAND_LINE_SIZE ? 346 363 COMMAND_LINE_SIZE : MAX_GUEST_CMDLINE); 347 364 348 - pm_idle = xen_idle; 365 + /* Set up idle, making sure it calls safe_halt() pvop */ 366 + #ifdef CONFIG_X86_32 367 + boot_cpu_data.hlt_works_ok = 1; 368 + #endif 369 + pm_idle = default_idle; 349 370 350 371 fiddle_vdso(); 351 372 }
+1
arch/x86/xen/suspend.c
··· 31 31 int cpu; 32 32 xen_hvm_init_shared_info(); 33 33 xen_callback_vector(); 34 + xen_unplug_emulated_devices(); 34 35 if (xen_feature(XENFEAT_hvm_safe_pvclock)) { 35 36 for_each_online_cpu(cpu) { 36 37 xen_setup_runstate_info(cpu);
+1 -1
arch/x86/xen/xen-ops.h
··· 43 43 44 44 void xen_callback_vector(void); 45 45 void xen_hvm_init_shared_info(void); 46 - void __init xen_unplug_emulated_devices(void); 46 + void xen_unplug_emulated_devices(void); 47 47 48 48 void __init xen_build_dynamic_phys_to_machine(void); 49 49
+29 -17
drivers/acpi/ac.c
··· 100 100 .release = single_release, 101 101 }; 102 102 #endif 103 - static int get_ac_property(struct power_supply *psy, 104 - enum power_supply_property psp, 105 - union power_supply_propval *val) 106 - { 107 - struct acpi_ac *ac = to_acpi_ac(psy); 108 - switch (psp) { 109 - case POWER_SUPPLY_PROP_ONLINE: 110 - val->intval = ac->state; 111 - break; 112 - default: 113 - return -EINVAL; 114 - } 115 - return 0; 116 - } 117 103 118 - static enum power_supply_property ac_props[] = { 119 - POWER_SUPPLY_PROP_ONLINE, 120 - }; 121 104 /* -------------------------------------------------------------------------- 122 105 AC Adapter Management 123 106 -------------------------------------------------------------------------- */ ··· 122 139 123 140 return 0; 124 141 } 142 + 143 + /* -------------------------------------------------------------------------- 144 + sysfs I/F 145 + -------------------------------------------------------------------------- */ 146 + static int get_ac_property(struct power_supply *psy, 147 + enum power_supply_property psp, 148 + union power_supply_propval *val) 149 + { 150 + struct acpi_ac *ac = to_acpi_ac(psy); 151 + 152 + if (!ac) 153 + return -ENODEV; 154 + 155 + if (acpi_ac_get_state(ac)) 156 + return -ENODEV; 157 + 158 + switch (psp) { 159 + case POWER_SUPPLY_PROP_ONLINE: 160 + val->intval = ac->state; 161 + break; 162 + default: 163 + return -EINVAL; 164 + } 165 + return 0; 166 + } 167 + 168 + static enum power_supply_property ac_props[] = { 169 + POWER_SUPPLY_PROP_ONLINE, 170 + }; 125 171 126 172 #ifdef CONFIG_ACPI_PROCFS_POWER 127 173 /* --------------------------------------------------------------------------
+17 -17
drivers/acpi/apei/erst.c
··· 86 86 * It is used to provide exclusive accessing for ERST Error Log 87 87 * Address Range too. 88 88 */ 89 - static DEFINE_SPINLOCK(erst_lock); 89 + static DEFINE_RAW_SPINLOCK(erst_lock); 90 90 91 91 static inline int erst_errno(int command_status) 92 92 { ··· 421 421 if (erst_disable) 422 422 return -ENODEV; 423 423 424 - spin_lock_irqsave(&erst_lock, flags); 424 + raw_spin_lock_irqsave(&erst_lock, flags); 425 425 count = __erst_get_record_count(); 426 - spin_unlock_irqrestore(&erst_lock, flags); 426 + raw_spin_unlock_irqrestore(&erst_lock, flags); 427 427 428 428 return count; 429 429 } ··· 456 456 if (erst_disable) 457 457 return -ENODEV; 458 458 459 - spin_lock_irqsave(&erst_lock, flags); 459 + raw_spin_lock_irqsave(&erst_lock, flags); 460 460 rc = __erst_get_next_record_id(record_id); 461 - spin_unlock_irqrestore(&erst_lock, flags); 461 + raw_spin_unlock_irqrestore(&erst_lock, flags); 462 462 463 463 return rc; 464 464 } ··· 624 624 return -EINVAL; 625 625 626 626 if (erst_erange.attr & ERST_RANGE_NVRAM) { 627 - if (!spin_trylock_irqsave(&erst_lock, flags)) 627 + if (!raw_spin_trylock_irqsave(&erst_lock, flags)) 628 628 return -EBUSY; 629 629 rc = __erst_write_to_nvram(record); 630 - spin_unlock_irqrestore(&erst_lock, flags); 630 + raw_spin_unlock_irqrestore(&erst_lock, flags); 631 631 return rc; 632 632 } 633 633 634 634 if (record->record_length > erst_erange.size) 635 635 return -EINVAL; 636 636 637 - if (!spin_trylock_irqsave(&erst_lock, flags)) 637 + if (!raw_spin_trylock_irqsave(&erst_lock, flags)) 638 638 return -EBUSY; 639 639 memcpy(erst_erange.vaddr, record, record->record_length); 640 640 rcd_erange = erst_erange.vaddr; ··· 642 642 memcpy(&rcd_erange->persistence_information, "ER", 2); 643 643 644 644 rc = __erst_write_to_storage(0); 645 - spin_unlock_irqrestore(&erst_lock, flags); 645 + raw_spin_unlock_irqrestore(&erst_lock, flags); 646 646 647 647 return rc; 648 648 } ··· 696 696 if (erst_disable) 697 697 return -ENODEV; 698 698 699 - spin_lock_irqsave(&erst_lock, flags); 699 + raw_spin_lock_irqsave(&erst_lock, flags); 700 700 len = __erst_read(record_id, record, buflen); 701 - spin_unlock_irqrestore(&erst_lock, flags); 701 + raw_spin_unlock_irqrestore(&erst_lock, flags); 702 702 return len; 703 703 } 704 704 EXPORT_SYMBOL_GPL(erst_read); ··· 719 719 if (erst_disable) 720 720 return -ENODEV; 721 721 722 - spin_lock_irqsave(&erst_lock, flags); 722 + raw_spin_lock_irqsave(&erst_lock, flags); 723 723 rc = __erst_get_next_record_id(&record_id); 724 724 if (rc) { 725 - spin_unlock_irqrestore(&erst_lock, flags); 725 + raw_spin_unlock_irqrestore(&erst_lock, flags); 726 726 return rc; 727 727 } 728 728 /* no more record */ 729 729 if (record_id == APEI_ERST_INVALID_RECORD_ID) { 730 - spin_unlock_irqrestore(&erst_lock, flags); 730 + raw_spin_unlock_irqrestore(&erst_lock, flags); 731 731 return 0; 732 732 } 733 733 734 734 len = __erst_read(record_id, record, buflen); 735 - spin_unlock_irqrestore(&erst_lock, flags); 735 + raw_spin_unlock_irqrestore(&erst_lock, flags); 736 736 737 737 return len; 738 738 } ··· 746 746 if (erst_disable) 747 747 return -ENODEV; 748 748 749 - spin_lock_irqsave(&erst_lock, flags); 749 + raw_spin_lock_irqsave(&erst_lock, flags); 750 750 if (erst_erange.attr & ERST_RANGE_NVRAM) 751 751 rc = __erst_clear_from_nvram(record_id); 752 752 else 753 753 rc = __erst_clear_from_storage(record_id); 754 - spin_unlock_irqrestore(&erst_lock, flags); 754 + raw_spin_unlock_irqrestore(&erst_lock, flags); 755 755 756 756 return rc; 757 757 }
+5 -5
drivers/acpi/apei/hest.c
··· 46 46 47 47 /* HEST table parsing */ 48 48 49 - static struct acpi_table_hest *hest_tab; 49 + static struct acpi_table_hest *__read_mostly hest_tab; 50 50 51 - static int hest_esrc_len_tab[ACPI_HEST_TYPE_RESERVED] = { 51 + static const int hest_esrc_len_tab[ACPI_HEST_TYPE_RESERVED] = { 52 52 [ACPI_HEST_TYPE_IA32_CHECK] = -1, /* need further calculation */ 53 53 [ACPI_HEST_TYPE_IA32_CORRECTED_CHECK] = -1, 54 54 [ACPI_HEST_TYPE_IA32_NMI] = sizeof(struct acpi_hest_ia_nmi), ··· 126 126 unsigned int count; 127 127 }; 128 128 129 - static int hest_parse_ghes_count(struct acpi_hest_header *hest_hdr, void *data) 129 + static int __init hest_parse_ghes_count(struct acpi_hest_header *hest_hdr, void *data) 130 130 { 131 131 int *count = data; 132 132 ··· 135 135 return 0; 136 136 } 137 137 138 - static int hest_parse_ghes(struct acpi_hest_header *hest_hdr, void *data) 138 + static int __init hest_parse_ghes(struct acpi_hest_header *hest_hdr, void *data) 139 139 { 140 140 struct platform_device *ghes_dev; 141 141 struct ghes_arr *ghes_arr = data; ··· 165 165 return rc; 166 166 } 167 167 168 - static int hest_ghes_dev_register(unsigned int ghes_count) 168 + static int __init hest_ghes_dev_register(unsigned int ghes_count) 169 169 { 170 170 int rc, i; 171 171 struct ghes_arr ghes_arr;
+5
drivers/acpi/battery.c
··· 130 130 unsigned long flags; 131 131 }; 132 132 133 + static int acpi_battery_update(struct acpi_battery *battery); 134 + 133 135 #define to_acpi_battery(x) container_of(x, struct acpi_battery, bat); 134 136 135 137 inline int acpi_battery_present(struct acpi_battery *battery) ··· 185 183 { 186 184 int ret = 0; 187 185 struct acpi_battery *battery = to_acpi_battery(psy); 186 + 187 + if (acpi_battery_update(battery)) 188 + return -ENODEV; 188 189 189 190 if (acpi_battery_present(battery)) { 190 191 /* run battery update only if it is present */
+77 -36
drivers/acpi/osl.c
··· 110 110 static LIST_HEAD(acpi_ioremaps); 111 111 static DEFINE_SPINLOCK(acpi_ioremap_lock); 112 112 113 - #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ 114 - static char osi_setup_string[OSI_STRING_LENGTH_MAX]; 115 - 116 113 static void __init acpi_osi_setup_late(void); 117 114 118 115 /* ··· 149 152 unsigned int enable:1; 150 153 unsigned int dmi:1; 151 154 unsigned int cmdline:1; 152 - unsigned int known:1; 153 - } osi_linux = { 0, 0, 0, 0}; 155 + } osi_linux = {0, 0, 0}; 154 156 155 157 static u32 acpi_osi_handler(acpi_string interface, u32 supported) 156 158 { ··· 1051 1055 1052 1056 __setup("acpi_os_name=", acpi_os_name_setup); 1053 1057 1058 + #define OSI_STRING_LENGTH_MAX 64 /* arbitrary */ 1059 + #define OSI_STRING_ENTRIES_MAX 16 /* arbitrary */ 1060 + 1061 + struct osi_setup_entry { 1062 + char string[OSI_STRING_LENGTH_MAX]; 1063 + bool enable; 1064 + }; 1065 + 1066 + static struct osi_setup_entry __initdata osi_setup_entries[OSI_STRING_ENTRIES_MAX]; 1067 + 1068 + void __init acpi_osi_setup(char *str) 1069 + { 1070 + struct osi_setup_entry *osi; 1071 + bool enable = true; 1072 + int i; 1073 + 1074 + if (!acpi_gbl_create_osi_method) 1075 + return; 1076 + 1077 + if (str == NULL || *str == '\0') { 1078 + printk(KERN_INFO PREFIX "_OSI method disabled\n"); 1079 + acpi_gbl_create_osi_method = FALSE; 1080 + return; 1081 + } 1082 + 1083 + if (*str == '!') { 1084 + str++; 1085 + enable = false; 1086 + } 1087 + 1088 + for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) { 1089 + osi = &osi_setup_entries[i]; 1090 + if (!strcmp(osi->string, str)) { 1091 + osi->enable = enable; 1092 + break; 1093 + } else if (osi->string[0] == '\0') { 1094 + osi->enable = enable; 1095 + strncpy(osi->string, str, OSI_STRING_LENGTH_MAX); 1096 + break; 1097 + } 1098 + } 1099 + } 1100 + 1054 1101 static void __init set_osi_linux(unsigned int enable) 1055 1102 { 1056 - if (osi_linux.enable != enable) { 1103 + if (osi_linux.enable != enable) 1057 1104 osi_linux.enable = enable; 1058 - printk(KERN_NOTICE PREFIX "%sed _OSI(Linux)\n", 1059 - enable ? "Add": "Delet"); 1060 - } 1061 1105 1062 1106 if (osi_linux.enable) 1063 1107 acpi_osi_setup("Linux"); ··· 1109 1073 1110 1074 static void __init acpi_cmdline_osi_linux(unsigned int enable) 1111 1075 { 1112 - osi_linux.cmdline = 1; /* cmdline set the default */ 1076 + osi_linux.cmdline = 1; /* cmdline set the default and override DMI */ 1077 + osi_linux.dmi = 0; 1113 1078 set_osi_linux(enable); 1114 1079 1115 1080 return; ··· 1118 1081 1119 1082 void __init acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d) 1120 1083 { 1121 - osi_linux.dmi = 1; /* DMI knows that this box asks OSI(Linux) */ 1122 - 1123 1084 printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident); 1124 1085 1125 1086 if (enable == -1) 1126 1087 return; 1127 1088 1128 - osi_linux.known = 1; /* DMI knows which OSI(Linux) default needed */ 1129 - 1089 + osi_linux.dmi = 1; /* DMI knows that this box asks OSI(Linux) */ 1130 1090 set_osi_linux(enable); 1131 1091 1132 1092 return; ··· 1138 1104 */ 1139 1105 static void __init acpi_osi_setup_late(void) 1140 1106 { 1141 - char *str = osi_setup_string; 1107 + struct osi_setup_entry *osi; 1108 + char *str; 1109 + int i; 1110 + acpi_status status; 1142 1111 1143 - if (*str == '\0') 1144 - return; 1112 + for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) { 1113 + osi = &osi_setup_entries[i]; 1114 + str = osi->string; 1145 1115 1146 - if (!strcmp("!Linux", str)) { 1147 - acpi_cmdline_osi_linux(0); /* !enable */ 1148 - } else if (*str == '!') { 1149 - if (acpi_remove_interface(++str) == AE_OK) 1150 - printk(KERN_INFO PREFIX "Deleted _OSI(%s)\n", str); 1151 - } else if (!strcmp("Linux", str)) { 1152 - acpi_cmdline_osi_linux(1); /* enable */ 1153 - } else { 1154 - if (acpi_install_interface(str) == AE_OK) 1155 - printk(KERN_INFO PREFIX "Added _OSI(%s)\n", str); 1116 + if (*str == '\0') 1117 + break; 1118 + if (osi->enable) { 1119 + status = acpi_install_interface(str); 1120 + 1121 + if (ACPI_SUCCESS(status)) 1122 + printk(KERN_INFO PREFIX "Added _OSI(%s)\n", str); 1123 + } else { 1124 + status = acpi_remove_interface(str); 1125 + 1126 + if (ACPI_SUCCESS(status)) 1127 + printk(KERN_INFO PREFIX "Deleted _OSI(%s)\n", str); 1128 + } 1156 1129 } 1157 1130 } 1158 1131 1159 - int __init acpi_osi_setup(char *str) 1132 + static int __init osi_setup(char *str) 1160 1133 { 1161 - if (str == NULL || *str == '\0') { 1162 - printk(KERN_INFO PREFIX "_OSI method disabled\n"); 1163 - acpi_gbl_create_osi_method = FALSE; 1164 - } else { 1165 - strncpy(osi_setup_string, str, OSI_STRING_LENGTH_MAX); 1166 - } 1134 + if (str && !strcmp("Linux", str)) 1135 + acpi_cmdline_osi_linux(1); 1136 + else if (str && !strcmp("!Linux", str)) 1137 + acpi_cmdline_osi_linux(0); 1138 + else 1139 + acpi_osi_setup(str); 1167 1140 1168 1141 return 1; 1169 1142 } 1170 1143 1171 - __setup("acpi_osi=", acpi_osi_setup); 1144 + __setup("acpi_osi=", osi_setup); 1172 1145 1173 1146 /* enable serialization to combat AE_ALREADY_EXISTS errors */ 1174 1147 static int __init acpi_serialize_setup(char *str) ··· 1571 1530 return AE_OK; 1572 1531 } 1573 1532 1574 - acpi_status acpi_os_initialize1(void) 1533 + acpi_status __init acpi_os_initialize1(void) 1575 1534 { 1576 1535 kacpid_wq = create_workqueue("kacpid"); 1577 1536 kacpi_notify_wq = create_workqueue("kacpi_notify");
+6 -6
drivers/acpi/power.c
··· 213 213 resource->name)); 214 214 } else { 215 215 result = __acpi_power_on(resource); 216 + if (result) 217 + resource->ref_count--; 216 218 } 217 219 218 220 mutex_unlock(&resource->resource_lock); 219 221 220 - return 0; 222 + return result; 221 223 } 222 224 223 225 static int acpi_power_off_device(acpi_handle handle) ··· 467 465 struct acpi_handle_list *tl = NULL; /* Target Resources */ 468 466 int i = 0; 469 467 470 - 471 468 if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3)) 472 469 return -EINVAL; 470 + 471 + if (device->power.state == state) 472 + return 0; 473 473 474 474 if ((device->power.state < ACPI_STATE_D0) 475 475 || (device->power.state > ACPI_STATE_D3)) ··· 490 486 result = acpi_power_on(tl->handles[i]); 491 487 if (result) 492 488 goto end; 493 - } 494 - 495 - if (device->power.state == state) { 496 - goto end; 497 489 } 498 490 499 491 /*
-9
drivers/acpi/processor_thermal.c
··· 156 156 return 0; 157 157 } 158 158 159 - static int acpi_thermal_cpufreq_increase(unsigned int cpu) 160 - { 161 - return -ENODEV; 162 - } 163 - static int acpi_thermal_cpufreq_decrease(unsigned int cpu) 164 - { 165 - return -ENODEV; 166 - } 167 - 168 159 #endif 169 160 170 161 int acpi_processor_get_limit_info(struct acpi_processor *pr)
+2 -2
drivers/acpi/sleep.c
··· 27 27 28 28 static u8 sleep_states[ACPI_S_STATE_COUNT]; 29 29 30 - static u32 acpi_target_sleep_state = ACPI_STATE_S0; 31 - 32 30 static void acpi_sleep_tts_switch(u32 acpi_state) 33 31 { 34 32 union acpi_object in_arg = { ACPI_TYPE_INTEGER }; ··· 79 81 } 80 82 81 83 #ifdef CONFIG_ACPI_SLEEP 84 + static u32 acpi_target_sleep_state = ACPI_STATE_S0; 85 + 82 86 /* 83 87 * The ACPI specification wants us to save NVS memory regions during hibernation 84 88 * and to restore them during the subsequent resume. Windows does that also for
+473 -279
drivers/block/rbd.c
··· 21 21 22 22 23 23 24 - Instructions for use 25 - -------------------- 24 + For usage instructions, please refer to: 26 25 27 - 1) Map a Linux block device to an existing rbd image. 28 - 29 - Usage: <mon ip addr> <options> <pool name> <rbd image name> [snap name] 30 - 31 - $ echo "192.168.0.1 name=admin rbd foo" > /sys/class/rbd/add 32 - 33 - The snapshot name can be "-" or omitted to map the image read/write. 34 - 35 - 2) List all active blkdev<->object mappings. 36 - 37 - In this example, we have performed step #1 twice, creating two blkdevs, 38 - mapped to two separate rados objects in the rados rbd pool 39 - 40 - $ cat /sys/class/rbd/list 41 - #id major client_name pool name snap KB 42 - 0 254 client4143 rbd foo - 1024000 43 - 44 - The columns, in order, are: 45 - - blkdev unique id 46 - - blkdev assigned major 47 - - rados client id 48 - - rados pool name 49 - - rados block device name 50 - - mapped snapshot ("-" if none) 51 - - device size in KB 52 - 53 - 54 - 3) Create a snapshot. 55 - 56 - Usage: <blkdev id> <snapname> 57 - 58 - $ echo "0 mysnap" > /sys/class/rbd/snap_create 59 - 60 - 61 - 4) Listing a snapshot. 62 - 63 - $ cat /sys/class/rbd/snaps_list 64 - #id snap KB 65 - 0 - 1024000 (*) 66 - 0 foo 1024000 67 - 68 - The columns, in order, are: 69 - - blkdev unique id 70 - - snapshot name, '-' means none (active read/write version) 71 - - size of device at time of snapshot 72 - - the (*) indicates this is the active version 73 - 74 - 5) Rollback to snapshot. 75 - 76 - Usage: <blkdev id> <snapname> 77 - 78 - $ echo "0 mysnap" > /sys/class/rbd/snap_rollback 79 - 80 - 81 - 6) Mapping an image using snapshot. 82 - 83 - A snapshot mapping is read-only. This is being done by passing 84 - snap=<snapname> to the options when adding a device. 85 - 86 - $ echo "192.168.0.1 name=admin,snap=mysnap rbd foo" > /sys/class/rbd/add 87 - 88 - 89 - 7) Remove an active blkdev<->rbd image mapping. 90 - 91 - In this example, we remove the mapping with blkdev unique id 1. 92 - 93 - $ echo 1 > /sys/class/rbd/remove 94 - 95 - 96 - NOTE: The actual creation and deletion of rados objects is outside the scope 97 - of this driver. 26 + Documentation/ABI/testing/sysfs-bus-rbd 98 27 99 28 */ 100 29 ··· 92 163 u64 len; 93 164 }; 94 165 166 + struct rbd_snap { 167 + struct device dev; 168 + const char *name; 169 + size_t size; 170 + struct list_head node; 171 + u64 id; 172 + }; 173 + 95 174 /* 96 175 * a single device 97 176 */ ··· 130 193 int read_only; 131 194 132 195 struct list_head node; 196 + 197 + /* list of snapshots */ 198 + struct list_head snaps; 199 + 200 + /* sysfs related */ 201 + struct device dev; 202 + }; 203 + 204 + static struct bus_type rbd_bus_type = { 205 + .name = "rbd", 133 206 }; 134 207 135 208 static spinlock_t node_lock; /* protects client get/put */ 136 209 137 - static struct class *class_rbd; /* /sys/class/rbd */ 138 210 static DEFINE_MUTEX(ctl_mutex); /* Serialize open/close/setup/teardown */ 139 211 static LIST_HEAD(rbd_dev_list); /* devices */ 140 212 static LIST_HEAD(rbd_client_list); /* clients */ 141 213 214 + static int __rbd_init_snaps_header(struct rbd_device *rbd_dev); 215 + static void rbd_dev_release(struct device *dev); 216 + static ssize_t rbd_snap_rollback(struct device *dev, 217 + struct device_attribute *attr, 218 + const char *buf, 219 + size_t size); 220 + static ssize_t rbd_snap_add(struct device *dev, 221 + struct device_attribute *attr, 222 + const char *buf, 223 + size_t count); 224 + static void __rbd_remove_snap_dev(struct rbd_device *rbd_dev, 225 + struct rbd_snap *snap);; 226 + 227 + 228 + static struct rbd_device *dev_to_rbd(struct device *dev) 229 + { 230 + return container_of(dev, struct rbd_device, dev); 231 + } 232 + 233 + static struct device *rbd_get_dev(struct rbd_device *rbd_dev) 234 + { 235 + return get_device(&rbd_dev->dev); 236 + } 237 + 238 + static void rbd_put_dev(struct rbd_device *rbd_dev) 239 + { 240 + put_device(&rbd_dev->dev); 241 + } 142 242 143 243 static int rbd_open(struct block_device *bdev, fmode_t mode) 144 244 { 145 245 struct gendisk *disk = bdev->bd_disk; 146 246 struct rbd_device *rbd_dev = disk->private_data; 247 + 248 + rbd_get_dev(rbd_dev); 147 249 148 250 set_device_ro(bdev, rbd_dev->read_only); 149 251 ··· 192 216 return 0; 193 217 } 194 218 219 + static int rbd_release(struct gendisk *disk, fmode_t mode) 220 + { 221 + struct rbd_device *rbd_dev = disk->private_data; 222 + 223 + rbd_put_dev(rbd_dev); 224 + 225 + return 0; 226 + } 227 + 195 228 static const struct block_device_operations rbd_bd_ops = { 196 229 .owner = THIS_MODULE, 197 230 .open = rbd_open, 231 + .release = rbd_release, 198 232 }; 199 233 200 234 /* ··· 347 361 int ret = -ENOMEM; 348 362 349 363 init_rwsem(&header->snap_rwsem); 350 - 351 364 header->snap_names_len = le64_to_cpu(ondisk->snap_names_len); 352 365 header->snapc = kmalloc(sizeof(struct ceph_snap_context) + 353 366 snap_count * ··· 1241 1256 return -ERANGE; 1242 1257 } 1243 1258 1259 + static void __rbd_remove_all_snaps(struct rbd_device *rbd_dev) 1260 + { 1261 + struct rbd_snap *snap; 1262 + 1263 + while (!list_empty(&rbd_dev->snaps)) { 1264 + snap = list_first_entry(&rbd_dev->snaps, struct rbd_snap, node); 1265 + __rbd_remove_snap_dev(rbd_dev, snap); 1266 + } 1267 + } 1268 + 1244 1269 /* 1245 1270 * only read the first part of the ondisk header, without the snaps info 1246 1271 */ 1247 - static int rbd_update_snaps(struct rbd_device *rbd_dev) 1272 + static int __rbd_update_snaps(struct rbd_device *rbd_dev) 1248 1273 { 1249 1274 int ret; 1250 1275 struct rbd_image_header h; ··· 1275 1280 rbd_dev->header.total_snaps = h.total_snaps; 1276 1281 rbd_dev->header.snapc = h.snapc; 1277 1282 rbd_dev->header.snap_names = h.snap_names; 1283 + rbd_dev->header.snap_names_len = h.snap_names_len; 1278 1284 rbd_dev->header.snap_sizes = h.snap_sizes; 1279 1285 rbd_dev->header.snapc->seq = snap_seq; 1280 1286 1287 + ret = __rbd_init_snaps_header(rbd_dev); 1288 + 1281 1289 up_write(&rbd_dev->header.snap_rwsem); 1282 1290 1283 - return 0; 1291 + return ret; 1284 1292 } 1285 1293 1286 1294 static int rbd_init_disk(struct rbd_device *rbd_dev) ··· 1295 1297 1296 1298 /* contact OSD, request size info about the object being mapped */ 1297 1299 rc = rbd_read_header(rbd_dev, &rbd_dev->header); 1300 + if (rc) 1301 + return rc; 1302 + 1303 + /* no need to lock here, as rbd_dev is not registered yet */ 1304 + rc = __rbd_init_snaps_header(rbd_dev); 1298 1305 if (rc) 1299 1306 return rc; 1300 1307 ··· 1346 1343 return rc; 1347 1344 } 1348 1345 1349 - /******************************************************************** 1350 - * /sys/class/rbd/ 1351 - * add map rados objects to blkdev 1352 - * remove unmap rados objects 1353 - * list show mappings 1354 - *******************************************************************/ 1346 + /* 1347 + sysfs 1348 + */ 1355 1349 1356 - static void class_rbd_release(struct class *cls) 1350 + static ssize_t rbd_size_show(struct device *dev, 1351 + struct device_attribute *attr, char *buf) 1357 1352 { 1358 - kfree(cls); 1353 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1354 + 1355 + return sprintf(buf, "%llu\n", (unsigned long long)rbd_dev->header.image_size); 1359 1356 } 1360 1357 1361 - static ssize_t class_rbd_list(struct class *c, 1362 - struct class_attribute *attr, 1363 - char *data) 1358 + static ssize_t rbd_major_show(struct device *dev, 1359 + struct device_attribute *attr, char *buf) 1364 1360 { 1365 - int n = 0; 1366 - struct list_head *tmp; 1367 - int max = PAGE_SIZE; 1361 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1362 + 1363 + return sprintf(buf, "%d\n", rbd_dev->major); 1364 + } 1365 + 1366 + static ssize_t rbd_client_id_show(struct device *dev, 1367 + struct device_attribute *attr, char *buf) 1368 + { 1369 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1370 + 1371 + return sprintf(buf, "client%lld\n", ceph_client_id(rbd_dev->client)); 1372 + } 1373 + 1374 + static ssize_t rbd_pool_show(struct device *dev, 1375 + struct device_attribute *attr, char *buf) 1376 + { 1377 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1378 + 1379 + return sprintf(buf, "%s\n", rbd_dev->pool_name); 1380 + } 1381 + 1382 + static ssize_t rbd_name_show(struct device *dev, 1383 + struct device_attribute *attr, char *buf) 1384 + { 1385 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1386 + 1387 + return sprintf(buf, "%s\n", rbd_dev->obj); 1388 + } 1389 + 1390 + static ssize_t rbd_snap_show(struct device *dev, 1391 + struct device_attribute *attr, 1392 + char *buf) 1393 + { 1394 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1395 + 1396 + return sprintf(buf, "%s\n", rbd_dev->snap_name); 1397 + } 1398 + 1399 + static ssize_t rbd_image_refresh(struct device *dev, 1400 + struct device_attribute *attr, 1401 + const char *buf, 1402 + size_t size) 1403 + { 1404 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1405 + int rc; 1406 + int ret = size; 1368 1407 1369 1408 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1370 1409 1371 - n += snprintf(data, max, 1372 - "#id\tmajor\tclient_name\tpool\tname\tsnap\tKB\n"); 1410 + rc = __rbd_update_snaps(rbd_dev); 1411 + if (rc < 0) 1412 + ret = rc; 1373 1413 1374 - list_for_each(tmp, &rbd_dev_list) { 1375 - struct rbd_device *rbd_dev; 1414 + mutex_unlock(&ctl_mutex); 1415 + return ret; 1416 + } 1376 1417 1377 - rbd_dev = list_entry(tmp, struct rbd_device, node); 1378 - n += snprintf(data+n, max-n, 1379 - "%d\t%d\tclient%lld\t%s\t%s\t%s\t%lld\n", 1380 - rbd_dev->id, 1381 - rbd_dev->major, 1382 - ceph_client_id(rbd_dev->client), 1383 - rbd_dev->pool_name, 1384 - rbd_dev->obj, rbd_dev->snap_name, 1385 - rbd_dev->header.image_size >> 10); 1386 - if (n == max) 1418 + static DEVICE_ATTR(size, S_IRUGO, rbd_size_show, NULL); 1419 + static DEVICE_ATTR(major, S_IRUGO, rbd_major_show, NULL); 1420 + static DEVICE_ATTR(client_id, S_IRUGO, rbd_client_id_show, NULL); 1421 + static DEVICE_ATTR(pool, S_IRUGO, rbd_pool_show, NULL); 1422 + static DEVICE_ATTR(name, S_IRUGO, rbd_name_show, NULL); 1423 + static DEVICE_ATTR(refresh, S_IWUSR, NULL, rbd_image_refresh); 1424 + static DEVICE_ATTR(current_snap, S_IRUGO, rbd_snap_show, NULL); 1425 + static DEVICE_ATTR(create_snap, S_IWUSR, NULL, rbd_snap_add); 1426 + static DEVICE_ATTR(rollback_snap, S_IWUSR, NULL, rbd_snap_rollback); 1427 + 1428 + static struct attribute *rbd_attrs[] = { 1429 + &dev_attr_size.attr, 1430 + &dev_attr_major.attr, 1431 + &dev_attr_client_id.attr, 1432 + &dev_attr_pool.attr, 1433 + &dev_attr_name.attr, 1434 + &dev_attr_current_snap.attr, 1435 + &dev_attr_refresh.attr, 1436 + &dev_attr_create_snap.attr, 1437 + &dev_attr_rollback_snap.attr, 1438 + NULL 1439 + }; 1440 + 1441 + static struct attribute_group rbd_attr_group = { 1442 + .attrs = rbd_attrs, 1443 + }; 1444 + 1445 + static const struct attribute_group *rbd_attr_groups[] = { 1446 + &rbd_attr_group, 1447 + NULL 1448 + }; 1449 + 1450 + static void rbd_sysfs_dev_release(struct device *dev) 1451 + { 1452 + } 1453 + 1454 + static struct device_type rbd_device_type = { 1455 + .name = "rbd", 1456 + .groups = rbd_attr_groups, 1457 + .release = rbd_sysfs_dev_release, 1458 + }; 1459 + 1460 + 1461 + /* 1462 + sysfs - snapshots 1463 + */ 1464 + 1465 + static ssize_t rbd_snap_size_show(struct device *dev, 1466 + struct device_attribute *attr, 1467 + char *buf) 1468 + { 1469 + struct rbd_snap *snap = container_of(dev, struct rbd_snap, dev); 1470 + 1471 + return sprintf(buf, "%lld\n", (long long)snap->size); 1472 + } 1473 + 1474 + static ssize_t rbd_snap_id_show(struct device *dev, 1475 + struct device_attribute *attr, 1476 + char *buf) 1477 + { 1478 + struct rbd_snap *snap = container_of(dev, struct rbd_snap, dev); 1479 + 1480 + return sprintf(buf, "%lld\n", (long long)snap->id); 1481 + } 1482 + 1483 + static DEVICE_ATTR(snap_size, S_IRUGO, rbd_snap_size_show, NULL); 1484 + static DEVICE_ATTR(snap_id, S_IRUGO, rbd_snap_id_show, NULL); 1485 + 1486 + static struct attribute *rbd_snap_attrs[] = { 1487 + &dev_attr_snap_size.attr, 1488 + &dev_attr_snap_id.attr, 1489 + NULL, 1490 + }; 1491 + 1492 + static struct attribute_group rbd_snap_attr_group = { 1493 + .attrs = rbd_snap_attrs, 1494 + }; 1495 + 1496 + static void rbd_snap_dev_release(struct device *dev) 1497 + { 1498 + struct rbd_snap *snap = container_of(dev, struct rbd_snap, dev); 1499 + kfree(snap->name); 1500 + kfree(snap); 1501 + } 1502 + 1503 + static const struct attribute_group *rbd_snap_attr_groups[] = { 1504 + &rbd_snap_attr_group, 1505 + NULL 1506 + }; 1507 + 1508 + static struct device_type rbd_snap_device_type = { 1509 + .groups = rbd_snap_attr_groups, 1510 + .release = rbd_snap_dev_release, 1511 + }; 1512 + 1513 + static void __rbd_remove_snap_dev(struct rbd_device *rbd_dev, 1514 + struct rbd_snap *snap) 1515 + { 1516 + list_del(&snap->node); 1517 + device_unregister(&snap->dev); 1518 + } 1519 + 1520 + static int rbd_register_snap_dev(struct rbd_device *rbd_dev, 1521 + struct rbd_snap *snap, 1522 + struct device *parent) 1523 + { 1524 + struct device *dev = &snap->dev; 1525 + int ret; 1526 + 1527 + dev->type = &rbd_snap_device_type; 1528 + dev->parent = parent; 1529 + dev->release = rbd_snap_dev_release; 1530 + dev_set_name(dev, "snap_%s", snap->name); 1531 + ret = device_register(dev); 1532 + 1533 + return ret; 1534 + } 1535 + 1536 + static int __rbd_add_snap_dev(struct rbd_device *rbd_dev, 1537 + int i, const char *name, 1538 + struct rbd_snap **snapp) 1539 + { 1540 + int ret; 1541 + struct rbd_snap *snap = kzalloc(sizeof(*snap), GFP_KERNEL); 1542 + if (!snap) 1543 + return -ENOMEM; 1544 + snap->name = kstrdup(name, GFP_KERNEL); 1545 + snap->size = rbd_dev->header.snap_sizes[i]; 1546 + snap->id = rbd_dev->header.snapc->snaps[i]; 1547 + if (device_is_registered(&rbd_dev->dev)) { 1548 + ret = rbd_register_snap_dev(rbd_dev, snap, 1549 + &rbd_dev->dev); 1550 + if (ret < 0) 1551 + goto err; 1552 + } 1553 + *snapp = snap; 1554 + return 0; 1555 + err: 1556 + kfree(snap->name); 1557 + kfree(snap); 1558 + return ret; 1559 + } 1560 + 1561 + /* 1562 + * search for the previous snap in a null delimited string list 1563 + */ 1564 + const char *rbd_prev_snap_name(const char *name, const char *start) 1565 + { 1566 + if (name < start + 2) 1567 + return NULL; 1568 + 1569 + name -= 2; 1570 + while (*name) { 1571 + if (name == start) 1572 + return start; 1573 + name--; 1574 + } 1575 + return name + 1; 1576 + } 1577 + 1578 + /* 1579 + * compare the old list of snapshots that we have to what's in the header 1580 + * and update it accordingly. Note that the header holds the snapshots 1581 + * in a reverse order (from newest to oldest) and we need to go from 1582 + * older to new so that we don't get a duplicate snap name when 1583 + * doing the process (e.g., removed snapshot and recreated a new 1584 + * one with the same name. 1585 + */ 1586 + static int __rbd_init_snaps_header(struct rbd_device *rbd_dev) 1587 + { 1588 + const char *name, *first_name; 1589 + int i = rbd_dev->header.total_snaps; 1590 + struct rbd_snap *snap, *old_snap = NULL; 1591 + int ret; 1592 + struct list_head *p, *n; 1593 + 1594 + first_name = rbd_dev->header.snap_names; 1595 + name = first_name + rbd_dev->header.snap_names_len; 1596 + 1597 + list_for_each_prev_safe(p, n, &rbd_dev->snaps) { 1598 + u64 cur_id; 1599 + 1600 + old_snap = list_entry(p, struct rbd_snap, node); 1601 + 1602 + if (i) 1603 + cur_id = rbd_dev->header.snapc->snaps[i - 1]; 1604 + 1605 + if (!i || old_snap->id < cur_id) { 1606 + /* old_snap->id was skipped, thus was removed */ 1607 + __rbd_remove_snap_dev(rbd_dev, old_snap); 1608 + continue; 1609 + } 1610 + if (old_snap->id == cur_id) { 1611 + /* we have this snapshot already */ 1612 + i--; 1613 + name = rbd_prev_snap_name(name, first_name); 1614 + continue; 1615 + } 1616 + for (; i > 0; 1617 + i--, name = rbd_prev_snap_name(name, first_name)) { 1618 + if (!name) { 1619 + WARN_ON(1); 1620 + return -EINVAL; 1621 + } 1622 + cur_id = rbd_dev->header.snapc->snaps[i]; 1623 + /* snapshot removal? handle it above */ 1624 + if (cur_id >= old_snap->id) 1625 + break; 1626 + /* a new snapshot */ 1627 + ret = __rbd_add_snap_dev(rbd_dev, i - 1, name, &snap); 1628 + if (ret < 0) 1629 + return ret; 1630 + 1631 + /* note that we add it backward so using n and not p */ 1632 + list_add(&snap->node, n); 1633 + p = &snap->node; 1634 + } 1635 + } 1636 + /* we're done going over the old snap list, just add what's left */ 1637 + for (; i > 0; i--) { 1638 + name = rbd_prev_snap_name(name, first_name); 1639 + if (!name) { 1640 + WARN_ON(1); 1641 + return -EINVAL; 1642 + } 1643 + ret = __rbd_add_snap_dev(rbd_dev, i - 1, name, &snap); 1644 + if (ret < 0) 1645 + return ret; 1646 + list_add(&snap->node, &rbd_dev->snaps); 1647 + } 1648 + 1649 + return 0; 1650 + } 1651 + 1652 + 1653 + static void rbd_root_dev_release(struct device *dev) 1654 + { 1655 + } 1656 + 1657 + static struct device rbd_root_dev = { 1658 + .init_name = "rbd", 1659 + .release = rbd_root_dev_release, 1660 + }; 1661 + 1662 + static int rbd_bus_add_dev(struct rbd_device *rbd_dev) 1663 + { 1664 + int ret = -ENOMEM; 1665 + struct device *dev; 1666 + struct rbd_snap *snap; 1667 + 1668 + mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1669 + dev = &rbd_dev->dev; 1670 + 1671 + dev->bus = &rbd_bus_type; 1672 + dev->type = &rbd_device_type; 1673 + dev->parent = &rbd_root_dev; 1674 + dev->release = rbd_dev_release; 1675 + dev_set_name(dev, "%d", rbd_dev->id); 1676 + ret = device_register(dev); 1677 + if (ret < 0) 1678 + goto done_free; 1679 + 1680 + list_for_each_entry(snap, &rbd_dev->snaps, node) { 1681 + ret = rbd_register_snap_dev(rbd_dev, snap, 1682 + &rbd_dev->dev); 1683 + if (ret < 0) 1387 1684 break; 1388 1685 } 1389 1686 1390 1687 mutex_unlock(&ctl_mutex); 1391 - return n; 1688 + return 0; 1689 + done_free: 1690 + mutex_unlock(&ctl_mutex); 1691 + return ret; 1392 1692 } 1393 1693 1394 - static ssize_t class_rbd_add(struct class *c, 1395 - struct class_attribute *attr, 1396 - const char *buf, size_t count) 1694 + static void rbd_bus_del_dev(struct rbd_device *rbd_dev) 1695 + { 1696 + device_unregister(&rbd_dev->dev); 1697 + } 1698 + 1699 + static ssize_t rbd_add(struct bus_type *bus, const char *buf, size_t count) 1397 1700 { 1398 1701 struct ceph_osd_client *osdc; 1399 1702 struct rbd_device *rbd_dev; ··· 1728 1419 /* static rbd_device initialization */ 1729 1420 spin_lock_init(&rbd_dev->lock); 1730 1421 INIT_LIST_HEAD(&rbd_dev->node); 1422 + INIT_LIST_HEAD(&rbd_dev->snaps); 1731 1423 1732 1424 /* generate unique id: find highest unique id, add one */ 1733 1425 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); ··· 1788 1478 } 1789 1479 rbd_dev->major = irc; 1790 1480 1481 + rc = rbd_bus_add_dev(rbd_dev); 1482 + if (rc) 1483 + goto err_out_disk; 1791 1484 /* set up and announce blkdev mapping */ 1792 1485 rc = rbd_init_disk(rbd_dev); 1793 1486 if (rc) ··· 1800 1487 1801 1488 err_out_blkdev: 1802 1489 unregister_blkdev(rbd_dev->major, rbd_dev->name); 1490 + err_out_disk: 1491 + rbd_free_disk(rbd_dev); 1803 1492 err_out_client: 1804 1493 rbd_put_client(rbd_dev); 1805 1494 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); ··· 1833 1518 return NULL; 1834 1519 } 1835 1520 1836 - static ssize_t class_rbd_remove(struct class *c, 1837 - struct class_attribute *attr, 1838 - const char *buf, 1839 - size_t count) 1521 + static void rbd_dev_release(struct device *dev) 1840 1522 { 1841 - struct rbd_device *rbd_dev = NULL; 1842 - int target_id, rc; 1843 - unsigned long ul; 1844 - 1845 - rc = strict_strtoul(buf, 10, &ul); 1846 - if (rc) 1847 - return rc; 1848 - 1849 - /* convert to int; abort if we lost anything in the conversion */ 1850 - target_id = (int) ul; 1851 - if (target_id != ul) 1852 - return -EINVAL; 1853 - 1854 - /* remove object from list immediately */ 1855 - mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1856 - 1857 - rbd_dev = __rbd_get_dev(target_id); 1858 - if (rbd_dev) 1859 - list_del_init(&rbd_dev->node); 1860 - 1861 - mutex_unlock(&ctl_mutex); 1862 - 1863 - if (!rbd_dev) 1864 - return -ENOENT; 1523 + struct rbd_device *rbd_dev = 1524 + container_of(dev, struct rbd_device, dev); 1865 1525 1866 1526 rbd_put_client(rbd_dev); 1867 1527 ··· 1847 1557 1848 1558 /* release module ref */ 1849 1559 module_put(THIS_MODULE); 1850 - 1851 - return count; 1852 1560 } 1853 1561 1854 - static ssize_t class_rbd_snaps_list(struct class *c, 1855 - struct class_attribute *attr, 1856 - char *data) 1857 - { 1858 - struct rbd_device *rbd_dev = NULL; 1859 - struct list_head *tmp; 1860 - struct rbd_image_header *header; 1861 - int i, n = 0, max = PAGE_SIZE; 1862 - int ret; 1863 - 1864 - mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1865 - 1866 - n += snprintf(data, max, "#id\tsnap\tKB\n"); 1867 - 1868 - list_for_each(tmp, &rbd_dev_list) { 1869 - char *names, *p; 1870 - struct ceph_snap_context *snapc; 1871 - 1872 - rbd_dev = list_entry(tmp, struct rbd_device, node); 1873 - header = &rbd_dev->header; 1874 - 1875 - down_read(&header->snap_rwsem); 1876 - 1877 - names = header->snap_names; 1878 - snapc = header->snapc; 1879 - 1880 - n += snprintf(data + n, max - n, "%d\t%s\t%lld%s\n", 1881 - rbd_dev->id, RBD_SNAP_HEAD_NAME, 1882 - header->image_size >> 10, 1883 - (!rbd_dev->cur_snap ? " (*)" : "")); 1884 - if (n == max) 1885 - break; 1886 - 1887 - p = names; 1888 - for (i = 0; i < header->total_snaps; i++, p += strlen(p) + 1) { 1889 - n += snprintf(data + n, max - n, "%d\t%s\t%lld%s\n", 1890 - rbd_dev->id, p, header->snap_sizes[i] >> 10, 1891 - (rbd_dev->cur_snap && 1892 - (snap_index(header, i) == rbd_dev->cur_snap) ? 1893 - " (*)" : "")); 1894 - if (n == max) 1895 - break; 1896 - } 1897 - 1898 - up_read(&header->snap_rwsem); 1899 - } 1900 - 1901 - 1902 - ret = n; 1903 - mutex_unlock(&ctl_mutex); 1904 - return ret; 1905 - } 1906 - 1907 - static ssize_t class_rbd_snaps_refresh(struct class *c, 1908 - struct class_attribute *attr, 1909 - const char *buf, 1910 - size_t count) 1562 + static ssize_t rbd_remove(struct bus_type *bus, 1563 + const char *buf, 1564 + size_t count) 1911 1565 { 1912 1566 struct rbd_device *rbd_dev = NULL; 1913 1567 int target_id, rc; ··· 1875 1641 goto done; 1876 1642 } 1877 1643 1878 - rc = rbd_update_snaps(rbd_dev); 1879 - if (rc < 0) 1880 - ret = rc; 1644 + list_del_init(&rbd_dev->node); 1645 + 1646 + __rbd_remove_all_snaps(rbd_dev); 1647 + rbd_bus_del_dev(rbd_dev); 1881 1648 1882 1649 done: 1883 1650 mutex_unlock(&ctl_mutex); 1884 1651 return ret; 1885 1652 } 1886 1653 1887 - static ssize_t class_rbd_snap_create(struct class *c, 1888 - struct class_attribute *attr, 1889 - const char *buf, 1890 - size_t count) 1654 + static ssize_t rbd_snap_add(struct device *dev, 1655 + struct device_attribute *attr, 1656 + const char *buf, 1657 + size_t count) 1891 1658 { 1892 - struct rbd_device *rbd_dev = NULL; 1893 - int target_id, ret; 1894 - char *name; 1895 - 1896 - name = kmalloc(RBD_MAX_SNAP_NAME_LEN + 1, GFP_KERNEL); 1659 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1660 + int ret; 1661 + char *name = kmalloc(count + 1, GFP_KERNEL); 1897 1662 if (!name) 1898 1663 return -ENOMEM; 1899 1664 1900 - /* parse snaps add command */ 1901 - if (sscanf(buf, "%d " 1902 - "%" __stringify(RBD_MAX_SNAP_NAME_LEN) "s", 1903 - &target_id, 1904 - name) != 2) { 1905 - ret = -EINVAL; 1906 - goto done; 1907 - } 1665 + snprintf(name, count, "%s", buf); 1908 1666 1909 1667 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1910 - 1911 - rbd_dev = __rbd_get_dev(target_id); 1912 - if (!rbd_dev) { 1913 - ret = -ENOENT; 1914 - goto done_unlock; 1915 - } 1916 1668 1917 1669 ret = rbd_header_add_snap(rbd_dev, 1918 1670 name, GFP_KERNEL); 1919 1671 if (ret < 0) 1920 1672 goto done_unlock; 1921 1673 1922 - ret = rbd_update_snaps(rbd_dev); 1674 + ret = __rbd_update_snaps(rbd_dev); 1923 1675 if (ret < 0) 1924 1676 goto done_unlock; 1925 1677 1926 1678 ret = count; 1927 1679 done_unlock: 1928 1680 mutex_unlock(&ctl_mutex); 1929 - done: 1930 1681 kfree(name); 1931 1682 return ret; 1932 1683 } 1933 1684 1934 - static ssize_t class_rbd_rollback(struct class *c, 1935 - struct class_attribute *attr, 1936 - const char *buf, 1937 - size_t count) 1685 + static ssize_t rbd_snap_rollback(struct device *dev, 1686 + struct device_attribute *attr, 1687 + const char *buf, 1688 + size_t count) 1938 1689 { 1939 - struct rbd_device *rbd_dev = NULL; 1940 - int target_id, ret; 1690 + struct rbd_device *rbd_dev = dev_to_rbd(dev); 1691 + int ret; 1941 1692 u64 snapid; 1942 - char snap_name[RBD_MAX_SNAP_NAME_LEN]; 1943 1693 u64 cur_ofs; 1944 - char *seg_name; 1945 - 1946 - /* parse snaps add command */ 1947 - if (sscanf(buf, "%d " 1948 - "%" __stringify(RBD_MAX_SNAP_NAME_LEN) "s", 1949 - &target_id, 1950 - snap_name) != 2) { 1951 - return -EINVAL; 1952 - } 1953 - 1694 + char *seg_name = NULL; 1695 + char *snap_name = kmalloc(count + 1, GFP_KERNEL); 1954 1696 ret = -ENOMEM; 1955 - seg_name = kmalloc(RBD_MAX_SEG_NAME_LEN + 1, GFP_NOIO); 1956 - if (!seg_name) 1697 + if (!snap_name) 1957 1698 return ret; 1958 1699 1959 - mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1700 + /* parse snaps add command */ 1701 + snprintf(snap_name, count, "%s", buf); 1702 + seg_name = kmalloc(RBD_MAX_SEG_NAME_LEN + 1, GFP_NOIO); 1703 + if (!seg_name) 1704 + goto done; 1960 1705 1961 - rbd_dev = __rbd_get_dev(target_id); 1962 - if (!rbd_dev) { 1963 - ret = -ENOENT; 1964 - goto done_unlock; 1965 - } 1706 + mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING); 1966 1707 1967 1708 ret = snap_by_name(&rbd_dev->header, snap_name, &snapid, NULL); 1968 1709 if (ret < 0) ··· 1959 1750 seg_name, ret); 1960 1751 } 1961 1752 1962 - ret = rbd_update_snaps(rbd_dev); 1753 + ret = __rbd_update_snaps(rbd_dev); 1963 1754 if (ret < 0) 1964 1755 goto done_unlock; 1965 1756 ··· 1967 1758 1968 1759 done_unlock: 1969 1760 mutex_unlock(&ctl_mutex); 1761 + done: 1970 1762 kfree(seg_name); 1763 + kfree(snap_name); 1971 1764 1972 1765 return ret; 1973 1766 } 1974 1767 1975 - static struct class_attribute class_rbd_attrs[] = { 1976 - __ATTR(add, 0200, NULL, class_rbd_add), 1977 - __ATTR(remove, 0200, NULL, class_rbd_remove), 1978 - __ATTR(list, 0444, class_rbd_list, NULL), 1979 - __ATTR(snaps_refresh, 0200, NULL, class_rbd_snaps_refresh), 1980 - __ATTR(snap_create, 0200, NULL, class_rbd_snap_create), 1981 - __ATTR(snaps_list, 0444, class_rbd_snaps_list, NULL), 1982 - __ATTR(snap_rollback, 0200, NULL, class_rbd_rollback), 1768 + static struct bus_attribute rbd_bus_attrs[] = { 1769 + __ATTR(add, S_IWUSR, NULL, rbd_add), 1770 + __ATTR(remove, S_IWUSR, NULL, rbd_remove), 1983 1771 __ATTR_NULL 1984 1772 }; 1985 1773 1986 1774 /* 1987 1775 * create control files in sysfs 1988 - * /sys/class/rbd/... 1776 + * /sys/bus/rbd/... 1989 1777 */ 1990 1778 static int rbd_sysfs_init(void) 1991 1779 { 1992 - int ret = -ENOMEM; 1780 + int ret; 1993 1781 1994 - class_rbd = kzalloc(sizeof(*class_rbd), GFP_KERNEL); 1995 - if (!class_rbd) 1996 - goto out; 1782 + rbd_bus_type.bus_attrs = rbd_bus_attrs; 1997 1783 1998 - class_rbd->name = DRV_NAME; 1999 - class_rbd->owner = THIS_MODULE; 2000 - class_rbd->class_release = class_rbd_release; 2001 - class_rbd->class_attrs = class_rbd_attrs; 1784 + ret = bus_register(&rbd_bus_type); 1785 + if (ret < 0) 1786 + return ret; 2002 1787 2003 - ret = class_register(class_rbd); 2004 - if (ret) 2005 - goto out_class; 2006 - return 0; 1788 + ret = device_register(&rbd_root_dev); 2007 1789 2008 - out_class: 2009 - kfree(class_rbd); 2010 - class_rbd = NULL; 2011 - pr_err(DRV_NAME ": failed to create class rbd\n"); 2012 - out: 2013 1790 return ret; 2014 1791 } 2015 1792 2016 1793 static void rbd_sysfs_cleanup(void) 2017 1794 { 2018 - if (class_rbd) 2019 - class_destroy(class_rbd); 2020 - class_rbd = NULL; 1795 + device_unregister(&rbd_root_dev); 1796 + bus_unregister(&rbd_bus_type); 2021 1797 } 2022 1798 2023 1799 int __init rbd_init(void)
+1
drivers/dma/shdma.c
··· 1213 1213 MODULE_AUTHOR("Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>"); 1214 1214 MODULE_DESCRIPTION("Renesas SH DMA Engine driver"); 1215 1215 MODULE_LICENSE("GPL"); 1216 + MODULE_ALIAS("platform:sh-dma-engine");
+14 -2
drivers/gpio/cs5535-gpio.c
··· 56 56 * registers, see include/linux/cs5535.h. 57 57 */ 58 58 59 + static void errata_outl(u32 val, unsigned long addr) 60 + { 61 + /* 62 + * According to the CS5536 errata (#36), after suspend 63 + * a write to the high bank GPIO register will clear all 64 + * non-selected bits; the recommended workaround is a 65 + * read-modify-write operation. 66 + */ 67 + val |= inl(addr); 68 + outl(val, addr); 69 + } 70 + 59 71 static void __cs5535_gpio_set(struct cs5535_gpio_chip *chip, unsigned offset, 60 72 unsigned int reg) 61 73 { ··· 76 64 outl(1 << offset, chip->base + reg); 77 65 else 78 66 /* high bank register */ 79 - outl(1 << (offset - 16), chip->base + 0x80 + reg); 67 + errata_outl(1 << (offset - 16), chip->base + 0x80 + reg); 80 68 } 81 69 82 70 void cs5535_gpio_set(unsigned offset, unsigned int reg) ··· 98 86 outl(1 << (offset + 16), chip->base + reg); 99 87 else 100 88 /* high bank register */ 101 - outl(1 << offset, chip->base + 0x80 + reg); 89 + errata_outl(1 << offset, chip->base + 0x80 + reg); 102 90 } 103 91 104 92 void cs5535_gpio_clear(unsigned offset, unsigned int reg)
+11 -3
drivers/gpu/drm/drm_crtc_helper.c
··· 471 471 int count = 0, ro, fail = 0; 472 472 struct drm_crtc_helper_funcs *crtc_funcs; 473 473 int ret = 0; 474 + int i; 474 475 475 476 DRM_DEBUG_KMS("\n"); 476 477 ··· 667 666 if (ret != 0) 668 667 goto fail; 669 668 } 669 + DRM_DEBUG_KMS("Setting connector DPMS state to on\n"); 670 + for (i = 0; i < set->num_connectors; i++) { 671 + DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id, 672 + drm_get_connector_name(set->connectors[i])); 673 + set->connectors[i]->dpms = DRM_MODE_DPMS_ON; 674 + } 670 675 671 676 kfree(save_connectors); 672 677 kfree(save_encoders); ··· 848 841 struct delayed_work *delayed_work = to_delayed_work(work); 849 842 struct drm_device *dev = container_of(delayed_work, struct drm_device, mode_config.output_poll_work); 850 843 struct drm_connector *connector; 851 - enum drm_connector_status old_status, status; 844 + enum drm_connector_status old_status; 852 845 bool repoll = false, changed = false; 853 846 854 847 if (!drm_kms_helper_poll) ··· 873 866 !(connector->polled & DRM_CONNECTOR_POLL_HPD)) 874 867 continue; 875 868 876 - status = connector->funcs->detect(connector, false); 877 - if (old_status != status) 869 + connector->status = connector->funcs->detect(connector, false); 870 + DRM_DEBUG_KMS("connector status updated to %d\n", connector->status); 871 + if (old_status != connector->status) 878 872 changed = true; 879 873 } 880 874
+329 -204
drivers/gpu/drm/i915/i915_gem.c
··· 38 38 39 39 static uint32_t i915_gem_get_gtt_alignment(struct drm_gem_object *obj); 40 40 41 - static int i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj, 42 - bool pipelined); 41 + static int i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj); 43 42 static void i915_gem_object_flush_gtt_write_domain(struct drm_gem_object *obj); 44 43 static void i915_gem_object_flush_cpu_write_domain(struct drm_gem_object *obj); 45 44 static int i915_gem_object_set_to_cpu_domain(struct drm_gem_object *obj, ··· 2593 2594 if (reg->gpu) { 2594 2595 int ret; 2595 2596 2596 - ret = i915_gem_object_flush_gpu_write_domain(obj, true); 2597 + ret = i915_gem_object_flush_gpu_write_domain(obj); 2597 2598 if (ret) 2598 2599 return ret; 2599 2600 ··· 2741 2742 2742 2743 /** Flushes any GPU write domain for the object if it's dirty. */ 2743 2744 static int 2744 - i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj, 2745 - bool pipelined) 2745 + i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj) 2746 2746 { 2747 2747 struct drm_device *dev = obj->dev; 2748 2748 uint32_t old_write_domain; ··· 2760 2762 obj->read_domains, 2761 2763 old_write_domain); 2762 2764 2763 - if (pipelined) 2764 - return 0; 2765 - 2766 - return i915_gem_object_wait_rendering(obj, true); 2765 + return 0; 2767 2766 } 2768 2767 2769 2768 /** Flushes the GTT write domain for the object if it's dirty. */ ··· 2821 2826 if (obj_priv->gtt_space == NULL) 2822 2827 return -EINVAL; 2823 2828 2824 - ret = i915_gem_object_flush_gpu_write_domain(obj, false); 2829 + ret = i915_gem_object_flush_gpu_write_domain(obj); 2825 2830 if (ret != 0) 2831 + return ret; 2832 + ret = i915_gem_object_wait_rendering(obj, true); 2833 + if (ret) 2826 2834 return ret; 2827 2835 2828 2836 i915_gem_object_flush_cpu_write_domain(obj); 2829 - 2830 - if (write) { 2831 - ret = i915_gem_object_wait_rendering(obj, true); 2832 - if (ret) 2833 - return ret; 2834 - } 2835 2837 2836 2838 old_write_domain = obj->write_domain; 2837 2839 old_read_domains = obj->read_domains; ··· 2867 2875 if (obj_priv->gtt_space == NULL) 2868 2876 return -EINVAL; 2869 2877 2870 - ret = i915_gem_object_flush_gpu_write_domain(obj, true); 2878 + ret = i915_gem_object_flush_gpu_write_domain(obj); 2871 2879 if (ret) 2872 2880 return ret; 2873 2881 ··· 2916 2924 uint32_t old_write_domain, old_read_domains; 2917 2925 int ret; 2918 2926 2919 - ret = i915_gem_object_flush_gpu_write_domain(obj, false); 2927 + ret = i915_gem_object_flush_gpu_write_domain(obj); 2920 2928 if (ret != 0) 2929 + return ret; 2930 + ret = i915_gem_object_wait_rendering(obj, true); 2931 + if (ret) 2921 2932 return ret; 2922 2933 2923 2934 i915_gem_object_flush_gtt_write_domain(obj); ··· 2929 2934 * finish invalidating it and free the per-page flags. 2930 2935 */ 2931 2936 i915_gem_object_set_to_full_cpu_read_domain(obj); 2932 - 2933 - if (write) { 2934 - ret = i915_gem_object_wait_rendering(obj, true); 2935 - if (ret) 2936 - return ret; 2937 - } 2938 2937 2939 2938 old_write_domain = obj->write_domain; 2940 2939 old_read_domains = obj->read_domains; ··· 3194 3205 if (offset == 0 && size == obj->size) 3195 3206 return i915_gem_object_set_to_cpu_domain(obj, 0); 3196 3207 3197 - ret = i915_gem_object_flush_gpu_write_domain(obj, false); 3208 + ret = i915_gem_object_flush_gpu_write_domain(obj); 3198 3209 if (ret != 0) 3199 3210 return ret; 3211 + ret = i915_gem_object_wait_rendering(obj, true); 3212 + if (ret) 3213 + return ret; 3214 + 3200 3215 i915_gem_object_flush_gtt_write_domain(obj); 3201 3216 3202 3217 /* If we're already fully in the CPU read domain, we're done. */ ··· 3247 3254 return 0; 3248 3255 } 3249 3256 3250 - /** 3251 - * Pin an object to the GTT and evaluate the relocations landing in it. 3252 - */ 3253 3257 static int 3254 - i915_gem_execbuffer_relocate(struct drm_i915_gem_object *obj, 3255 - struct drm_file *file_priv, 3256 - struct drm_i915_gem_exec_object2 *entry) 3258 + i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj, 3259 + struct drm_file *file_priv, 3260 + struct drm_i915_gem_exec_object2 *entry, 3261 + struct drm_i915_gem_relocation_entry *reloc) 3257 3262 { 3258 3263 struct drm_device *dev = obj->base.dev; 3259 - drm_i915_private_t *dev_priv = dev->dev_private; 3260 - struct drm_i915_gem_relocation_entry __user *user_relocs; 3261 - struct drm_gem_object *target_obj = NULL; 3262 - uint32_t target_handle = 0; 3263 - int i, ret = 0; 3264 + struct drm_gem_object *target_obj; 3265 + uint32_t target_offset; 3266 + int ret = -EINVAL; 3264 3267 3265 - user_relocs = (void __user *)(uintptr_t)entry->relocs_ptr; 3266 - for (i = 0; i < entry->relocation_count; i++) { 3267 - struct drm_i915_gem_relocation_entry reloc; 3268 - uint32_t target_offset; 3268 + target_obj = drm_gem_object_lookup(dev, file_priv, 3269 + reloc->target_handle); 3270 + if (target_obj == NULL) 3271 + return -ENOENT; 3269 3272 3270 - if (__copy_from_user_inatomic(&reloc, 3271 - user_relocs+i, 3272 - sizeof(reloc))) { 3273 - ret = -EFAULT; 3274 - break; 3275 - } 3276 - 3277 - if (reloc.target_handle != target_handle) { 3278 - drm_gem_object_unreference(target_obj); 3279 - 3280 - target_obj = drm_gem_object_lookup(dev, file_priv, 3281 - reloc.target_handle); 3282 - if (target_obj == NULL) { 3283 - ret = -ENOENT; 3284 - break; 3285 - } 3286 - 3287 - target_handle = reloc.target_handle; 3288 - } 3289 - target_offset = to_intel_bo(target_obj)->gtt_offset; 3273 + target_offset = to_intel_bo(target_obj)->gtt_offset; 3290 3274 3291 3275 #if WATCH_RELOC 3292 - DRM_INFO("%s: obj %p offset %08x target %d " 3293 - "read %08x write %08x gtt %08x " 3294 - "presumed %08x delta %08x\n", 3295 - __func__, 3296 - obj, 3297 - (int) reloc.offset, 3298 - (int) reloc.target_handle, 3299 - (int) reloc.read_domains, 3300 - (int) reloc.write_domain, 3301 - (int) target_offset, 3302 - (int) reloc.presumed_offset, 3303 - reloc.delta); 3276 + DRM_INFO("%s: obj %p offset %08x target %d " 3277 + "read %08x write %08x gtt %08x " 3278 + "presumed %08x delta %08x\n", 3279 + __func__, 3280 + obj, 3281 + (int) reloc->offset, 3282 + (int) reloc->target_handle, 3283 + (int) reloc->read_domains, 3284 + (int) reloc->write_domain, 3285 + (int) target_offset, 3286 + (int) reloc->presumed_offset, 3287 + reloc->delta); 3304 3288 #endif 3305 3289 3306 - /* The target buffer should have appeared before us in the 3307 - * exec_object list, so it should have a GTT space bound by now. 3308 - */ 3309 - if (target_offset == 0) { 3310 - DRM_ERROR("No GTT space found for object %d\n", 3311 - reloc.target_handle); 3312 - ret = -EINVAL; 3313 - break; 3314 - } 3315 - 3316 - /* Validate that the target is in a valid r/w GPU domain */ 3317 - if (reloc.write_domain & (reloc.write_domain - 1)) { 3318 - DRM_ERROR("reloc with multiple write domains: " 3319 - "obj %p target %d offset %d " 3320 - "read %08x write %08x", 3321 - obj, reloc.target_handle, 3322 - (int) reloc.offset, 3323 - reloc.read_domains, 3324 - reloc.write_domain); 3325 - ret = -EINVAL; 3326 - break; 3327 - } 3328 - if (reloc.write_domain & I915_GEM_DOMAIN_CPU || 3329 - reloc.read_domains & I915_GEM_DOMAIN_CPU) { 3330 - DRM_ERROR("reloc with read/write CPU domains: " 3331 - "obj %p target %d offset %d " 3332 - "read %08x write %08x", 3333 - obj, reloc.target_handle, 3334 - (int) reloc.offset, 3335 - reloc.read_domains, 3336 - reloc.write_domain); 3337 - ret = -EINVAL; 3338 - break; 3339 - } 3340 - if (reloc.write_domain && target_obj->pending_write_domain && 3341 - reloc.write_domain != target_obj->pending_write_domain) { 3342 - DRM_ERROR("Write domain conflict: " 3343 - "obj %p target %d offset %d " 3344 - "new %08x old %08x\n", 3345 - obj, reloc.target_handle, 3346 - (int) reloc.offset, 3347 - reloc.write_domain, 3348 - target_obj->pending_write_domain); 3349 - ret = -EINVAL; 3350 - break; 3351 - } 3352 - 3353 - target_obj->pending_read_domains |= reloc.read_domains; 3354 - target_obj->pending_write_domain |= reloc.write_domain; 3355 - 3356 - /* If the relocation already has the right value in it, no 3357 - * more work needs to be done. 3358 - */ 3359 - if (target_offset == reloc.presumed_offset) 3360 - continue; 3361 - 3362 - /* Check that the relocation address is valid... */ 3363 - if (reloc.offset > obj->base.size - 4) { 3364 - DRM_ERROR("Relocation beyond object bounds: " 3365 - "obj %p target %d offset %d size %d.\n", 3366 - obj, reloc.target_handle, 3367 - (int) reloc.offset, (int) obj->base.size); 3368 - ret = -EINVAL; 3369 - break; 3370 - } 3371 - if (reloc.offset & 3) { 3372 - DRM_ERROR("Relocation not 4-byte aligned: " 3373 - "obj %p target %d offset %d.\n", 3374 - obj, reloc.target_handle, 3375 - (int) reloc.offset); 3376 - ret = -EINVAL; 3377 - break; 3378 - } 3379 - 3380 - /* and points to somewhere within the target object. */ 3381 - if (reloc.delta >= target_obj->size) { 3382 - DRM_ERROR("Relocation beyond target object bounds: " 3383 - "obj %p target %d delta %d size %d.\n", 3384 - obj, reloc.target_handle, 3385 - (int) reloc.delta, (int) target_obj->size); 3386 - ret = -EINVAL; 3387 - break; 3388 - } 3389 - 3390 - reloc.delta += target_offset; 3391 - if (obj->base.write_domain == I915_GEM_DOMAIN_CPU) { 3392 - uint32_t page_offset = reloc.offset & ~PAGE_MASK; 3393 - char *vaddr; 3394 - 3395 - vaddr = kmap_atomic(obj->pages[reloc.offset >> PAGE_SHIFT]); 3396 - *(uint32_t *)(vaddr + page_offset) = reloc.delta; 3397 - kunmap_atomic(vaddr); 3398 - } else { 3399 - uint32_t __iomem *reloc_entry; 3400 - void __iomem *reloc_page; 3401 - 3402 - ret = i915_gem_object_set_to_gtt_domain(&obj->base, 1); 3403 - if (ret) 3404 - break; 3405 - 3406 - /* Map the page containing the relocation we're going to perform. */ 3407 - reloc.offset += obj->gtt_offset; 3408 - reloc_page = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, 3409 - reloc.offset & PAGE_MASK); 3410 - reloc_entry = (uint32_t __iomem *) 3411 - (reloc_page + (reloc.offset & ~PAGE_MASK)); 3412 - iowrite32(reloc.delta, reloc_entry); 3413 - io_mapping_unmap_atomic(reloc_page); 3414 - } 3415 - 3416 - /* and update the user's relocation entry */ 3417 - reloc.presumed_offset = target_offset; 3418 - if (__copy_to_user_inatomic(&user_relocs[i].presumed_offset, 3419 - &reloc.presumed_offset, 3420 - sizeof(reloc.presumed_offset))) { 3421 - ret = -EFAULT; 3422 - break; 3423 - } 3290 + /* The target buffer should have appeared before us in the 3291 + * exec_object list, so it should have a GTT space bound by now. 3292 + */ 3293 + if (target_offset == 0) { 3294 + DRM_ERROR("No GTT space found for object %d\n", 3295 + reloc->target_handle); 3296 + goto err; 3424 3297 } 3425 3298 3299 + /* Validate that the target is in a valid r/w GPU domain */ 3300 + if (reloc->write_domain & (reloc->write_domain - 1)) { 3301 + DRM_ERROR("reloc with multiple write domains: " 3302 + "obj %p target %d offset %d " 3303 + "read %08x write %08x", 3304 + obj, reloc->target_handle, 3305 + (int) reloc->offset, 3306 + reloc->read_domains, 3307 + reloc->write_domain); 3308 + goto err; 3309 + } 3310 + if (reloc->write_domain & I915_GEM_DOMAIN_CPU || 3311 + reloc->read_domains & I915_GEM_DOMAIN_CPU) { 3312 + DRM_ERROR("reloc with read/write CPU domains: " 3313 + "obj %p target %d offset %d " 3314 + "read %08x write %08x", 3315 + obj, reloc->target_handle, 3316 + (int) reloc->offset, 3317 + reloc->read_domains, 3318 + reloc->write_domain); 3319 + goto err; 3320 + } 3321 + if (reloc->write_domain && target_obj->pending_write_domain && 3322 + reloc->write_domain != target_obj->pending_write_domain) { 3323 + DRM_ERROR("Write domain conflict: " 3324 + "obj %p target %d offset %d " 3325 + "new %08x old %08x\n", 3326 + obj, reloc->target_handle, 3327 + (int) reloc->offset, 3328 + reloc->write_domain, 3329 + target_obj->pending_write_domain); 3330 + goto err; 3331 + } 3332 + 3333 + target_obj->pending_read_domains |= reloc->read_domains; 3334 + target_obj->pending_write_domain |= reloc->write_domain; 3335 + 3336 + /* If the relocation already has the right value in it, no 3337 + * more work needs to be done. 3338 + */ 3339 + if (target_offset == reloc->presumed_offset) 3340 + goto out; 3341 + 3342 + /* Check that the relocation address is valid... */ 3343 + if (reloc->offset > obj->base.size - 4) { 3344 + DRM_ERROR("Relocation beyond object bounds: " 3345 + "obj %p target %d offset %d size %d.\n", 3346 + obj, reloc->target_handle, 3347 + (int) reloc->offset, 3348 + (int) obj->base.size); 3349 + goto err; 3350 + } 3351 + if (reloc->offset & 3) { 3352 + DRM_ERROR("Relocation not 4-byte aligned: " 3353 + "obj %p target %d offset %d.\n", 3354 + obj, reloc->target_handle, 3355 + (int) reloc->offset); 3356 + goto err; 3357 + } 3358 + 3359 + /* and points to somewhere within the target object. */ 3360 + if (reloc->delta >= target_obj->size) { 3361 + DRM_ERROR("Relocation beyond target object bounds: " 3362 + "obj %p target %d delta %d size %d.\n", 3363 + obj, reloc->target_handle, 3364 + (int) reloc->delta, 3365 + (int) target_obj->size); 3366 + goto err; 3367 + } 3368 + 3369 + reloc->delta += target_offset; 3370 + if (obj->base.write_domain == I915_GEM_DOMAIN_CPU) { 3371 + uint32_t page_offset = reloc->offset & ~PAGE_MASK; 3372 + char *vaddr; 3373 + 3374 + vaddr = kmap_atomic(obj->pages[reloc->offset >> PAGE_SHIFT]); 3375 + *(uint32_t *)(vaddr + page_offset) = reloc->delta; 3376 + kunmap_atomic(vaddr); 3377 + } else { 3378 + struct drm_i915_private *dev_priv = dev->dev_private; 3379 + uint32_t __iomem *reloc_entry; 3380 + void __iomem *reloc_page; 3381 + 3382 + ret = i915_gem_object_set_to_gtt_domain(&obj->base, 1); 3383 + if (ret) 3384 + goto err; 3385 + 3386 + /* Map the page containing the relocation we're going to perform. */ 3387 + reloc->offset += obj->gtt_offset; 3388 + reloc_page = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping, 3389 + reloc->offset & PAGE_MASK); 3390 + reloc_entry = (uint32_t __iomem *) 3391 + (reloc_page + (reloc->offset & ~PAGE_MASK)); 3392 + iowrite32(reloc->delta, reloc_entry); 3393 + io_mapping_unmap_atomic(reloc_page); 3394 + } 3395 + 3396 + /* and update the user's relocation entry */ 3397 + reloc->presumed_offset = target_offset; 3398 + 3399 + out: 3400 + ret = 0; 3401 + err: 3426 3402 drm_gem_object_unreference(target_obj); 3427 3403 return ret; 3428 3404 } 3429 3405 3430 3406 static int 3431 - i915_gem_execbuffer_pin(struct drm_device *dev, 3432 - struct drm_file *file, 3433 - struct drm_gem_object **object_list, 3434 - struct drm_i915_gem_exec_object2 *exec_list, 3435 - int count) 3407 + i915_gem_execbuffer_relocate_object(struct drm_i915_gem_object *obj, 3408 + struct drm_file *file_priv, 3409 + struct drm_i915_gem_exec_object2 *entry) 3410 + { 3411 + struct drm_i915_gem_relocation_entry __user *user_relocs; 3412 + int i, ret; 3413 + 3414 + user_relocs = (void __user *)(uintptr_t)entry->relocs_ptr; 3415 + for (i = 0; i < entry->relocation_count; i++) { 3416 + struct drm_i915_gem_relocation_entry reloc; 3417 + 3418 + if (__copy_from_user_inatomic(&reloc, 3419 + user_relocs+i, 3420 + sizeof(reloc))) 3421 + return -EFAULT; 3422 + 3423 + ret = i915_gem_execbuffer_relocate_entry(obj, file_priv, entry, &reloc); 3424 + if (ret) 3425 + return ret; 3426 + 3427 + if (__copy_to_user_inatomic(&user_relocs[i].presumed_offset, 3428 + &reloc.presumed_offset, 3429 + sizeof(reloc.presumed_offset))) 3430 + return -EFAULT; 3431 + } 3432 + 3433 + return 0; 3434 + } 3435 + 3436 + static int 3437 + i915_gem_execbuffer_relocate_object_slow(struct drm_i915_gem_object *obj, 3438 + struct drm_file *file_priv, 3439 + struct drm_i915_gem_exec_object2 *entry, 3440 + struct drm_i915_gem_relocation_entry *relocs) 3441 + { 3442 + int i, ret; 3443 + 3444 + for (i = 0; i < entry->relocation_count; i++) { 3445 + ret = i915_gem_execbuffer_relocate_entry(obj, file_priv, entry, &relocs[i]); 3446 + if (ret) 3447 + return ret; 3448 + } 3449 + 3450 + return 0; 3451 + } 3452 + 3453 + static int 3454 + i915_gem_execbuffer_relocate(struct drm_device *dev, 3455 + struct drm_file *file, 3456 + struct drm_gem_object **object_list, 3457 + struct drm_i915_gem_exec_object2 *exec_list, 3458 + int count) 3459 + { 3460 + int i, ret; 3461 + 3462 + for (i = 0; i < count; i++) { 3463 + struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]); 3464 + obj->base.pending_read_domains = 0; 3465 + obj->base.pending_write_domain = 0; 3466 + ret = i915_gem_execbuffer_relocate_object(obj, file, 3467 + &exec_list[i]); 3468 + if (ret) 3469 + return ret; 3470 + } 3471 + 3472 + return 0; 3473 + } 3474 + 3475 + static int 3476 + i915_gem_execbuffer_reserve(struct drm_device *dev, 3477 + struct drm_file *file, 3478 + struct drm_gem_object **object_list, 3479 + struct drm_i915_gem_exec_object2 *exec_list, 3480 + int count) 3436 3481 { 3437 3482 struct drm_i915_private *dev_priv = dev->dev_private; 3438 3483 int ret, i, retry; ··· 3530 3499 } 3531 3500 3532 3501 return 0; 3502 + } 3503 + 3504 + static int 3505 + i915_gem_execbuffer_relocate_slow(struct drm_device *dev, 3506 + struct drm_file *file, 3507 + struct drm_gem_object **object_list, 3508 + struct drm_i915_gem_exec_object2 *exec_list, 3509 + int count) 3510 + { 3511 + struct drm_i915_gem_relocation_entry *reloc; 3512 + int i, total, ret; 3513 + 3514 + for (i = 0; i < count; i++) { 3515 + struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]); 3516 + obj->in_execbuffer = false; 3517 + } 3518 + 3519 + mutex_unlock(&dev->struct_mutex); 3520 + 3521 + total = 0; 3522 + for (i = 0; i < count; i++) 3523 + total += exec_list[i].relocation_count; 3524 + 3525 + reloc = drm_malloc_ab(total, sizeof(*reloc)); 3526 + if (reloc == NULL) { 3527 + mutex_lock(&dev->struct_mutex); 3528 + return -ENOMEM; 3529 + } 3530 + 3531 + total = 0; 3532 + for (i = 0; i < count; i++) { 3533 + struct drm_i915_gem_relocation_entry __user *user_relocs; 3534 + 3535 + user_relocs = (void __user *)(uintptr_t)exec_list[i].relocs_ptr; 3536 + 3537 + if (copy_from_user(reloc+total, user_relocs, 3538 + exec_list[i].relocation_count * 3539 + sizeof(*reloc))) { 3540 + ret = -EFAULT; 3541 + mutex_lock(&dev->struct_mutex); 3542 + goto err; 3543 + } 3544 + 3545 + total += exec_list[i].relocation_count; 3546 + } 3547 + 3548 + ret = i915_mutex_lock_interruptible(dev); 3549 + if (ret) { 3550 + mutex_lock(&dev->struct_mutex); 3551 + goto err; 3552 + } 3553 + 3554 + ret = i915_gem_execbuffer_reserve(dev, file, 3555 + object_list, exec_list, 3556 + count); 3557 + if (ret) 3558 + goto err; 3559 + 3560 + total = 0; 3561 + for (i = 0; i < count; i++) { 3562 + struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]); 3563 + obj->base.pending_read_domains = 0; 3564 + obj->base.pending_write_domain = 0; 3565 + ret = i915_gem_execbuffer_relocate_object_slow(obj, file, 3566 + &exec_list[i], 3567 + reloc + total); 3568 + if (ret) 3569 + goto err; 3570 + 3571 + total += exec_list[i].relocation_count; 3572 + } 3573 + 3574 + /* Leave the user relocations as are, this is the painfully slow path, 3575 + * and we want to avoid the complication of dropping the lock whilst 3576 + * having buffers reserved in the aperture and so causing spurious 3577 + * ENOSPC for random operations. 3578 + */ 3579 + 3580 + err: 3581 + drm_free_large(reloc); 3582 + return ret; 3533 3583 } 3534 3584 3535 3585 static int ··· 3742 3630 3743 3631 for (i = 0; i < count; i++) { 3744 3632 char __user *ptr = (char __user *)(uintptr_t)exec[i].relocs_ptr; 3745 - size_t length = exec[i].relocation_count * sizeof(struct drm_i915_gem_relocation_entry); 3633 + int length; /* limited by fault_in_pages_readable() */ 3746 3634 3635 + /* First check for malicious input causing overflow */ 3636 + if (exec[i].relocation_count > 3637 + INT_MAX / sizeof(struct drm_i915_gem_relocation_entry)) 3638 + return -EINVAL; 3639 + 3640 + length = exec[i].relocation_count * 3641 + sizeof(struct drm_i915_gem_relocation_entry); 3747 3642 if (!access_ok(VERIFY_READ, ptr, length)) 3748 3643 return -EFAULT; 3749 3644 ··· 3893 3774 } 3894 3775 3895 3776 /* Move the objects en-masse into the GTT, evicting if necessary. */ 3896 - ret = i915_gem_execbuffer_pin(dev, file, 3897 - object_list, exec_list, 3898 - args->buffer_count); 3777 + ret = i915_gem_execbuffer_reserve(dev, file, 3778 + object_list, exec_list, 3779 + args->buffer_count); 3899 3780 if (ret) 3900 3781 goto err; 3901 3782 3902 3783 /* The objects are in their final locations, apply the relocations. */ 3903 - for (i = 0; i < args->buffer_count; i++) { 3904 - struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]); 3905 - obj->base.pending_read_domains = 0; 3906 - obj->base.pending_write_domain = 0; 3907 - ret = i915_gem_execbuffer_relocate(obj, file, &exec_list[i]); 3784 + ret = i915_gem_execbuffer_relocate(dev, file, 3785 + object_list, exec_list, 3786 + args->buffer_count); 3787 + if (ret) { 3788 + if (ret == -EFAULT) { 3789 + ret = i915_gem_execbuffer_relocate_slow(dev, file, 3790 + object_list, 3791 + exec_list, 3792 + args->buffer_count); 3793 + BUG_ON(!mutex_is_locked(&dev->struct_mutex)); 3794 + } 3908 3795 if (ret) 3909 3796 goto err; 3910 3797 }
+20 -20
drivers/gpu/drm/i915/i915_suspend.c
··· 239 239 if (drm_core_check_feature(dev, DRIVER_MODESET)) 240 240 return; 241 241 242 + /* Cursor state */ 243 + dev_priv->saveCURACNTR = I915_READ(CURACNTR); 244 + dev_priv->saveCURAPOS = I915_READ(CURAPOS); 245 + dev_priv->saveCURABASE = I915_READ(CURABASE); 246 + dev_priv->saveCURBCNTR = I915_READ(CURBCNTR); 247 + dev_priv->saveCURBPOS = I915_READ(CURBPOS); 248 + dev_priv->saveCURBBASE = I915_READ(CURBBASE); 249 + if (IS_GEN2(dev)) 250 + dev_priv->saveCURSIZE = I915_READ(CURSIZE); 251 + 242 252 if (HAS_PCH_SPLIT(dev)) { 243 253 dev_priv->savePCH_DREF_CONTROL = I915_READ(PCH_DREF_CONTROL); 244 254 dev_priv->saveDISP_ARB_CTL = I915_READ(DISP_ARB_CTL); ··· 539 529 I915_WRITE(DSPBCNTR, dev_priv->saveDSPBCNTR); 540 530 I915_WRITE(DSPBADDR, I915_READ(DSPBADDR)); 541 531 532 + /* Cursor state */ 533 + I915_WRITE(CURAPOS, dev_priv->saveCURAPOS); 534 + I915_WRITE(CURACNTR, dev_priv->saveCURACNTR); 535 + I915_WRITE(CURABASE, dev_priv->saveCURABASE); 536 + I915_WRITE(CURBPOS, dev_priv->saveCURBPOS); 537 + I915_WRITE(CURBCNTR, dev_priv->saveCURBCNTR); 538 + I915_WRITE(CURBBASE, dev_priv->saveCURBBASE); 539 + if (IS_GEN2(dev)) 540 + I915_WRITE(CURSIZE, dev_priv->saveCURSIZE); 541 + 542 542 return; 543 543 } 544 544 ··· 562 542 /* This is only meaningful in non-KMS mode */ 563 543 /* Don't save them in KMS mode */ 564 544 i915_save_modeset_reg(dev); 565 - 566 - /* Cursor state */ 567 - dev_priv->saveCURACNTR = I915_READ(CURACNTR); 568 - dev_priv->saveCURAPOS = I915_READ(CURAPOS); 569 - dev_priv->saveCURABASE = I915_READ(CURABASE); 570 - dev_priv->saveCURBCNTR = I915_READ(CURBCNTR); 571 - dev_priv->saveCURBPOS = I915_READ(CURBPOS); 572 - dev_priv->saveCURBBASE = I915_READ(CURBBASE); 573 - if (IS_GEN2(dev)) 574 - dev_priv->saveCURSIZE = I915_READ(CURSIZE); 575 545 576 546 /* CRT state */ 577 547 if (HAS_PCH_SPLIT(dev)) { ··· 666 656 /* This is only meaningful in non-KMS mode */ 667 657 /* Don't restore them in KMS mode */ 668 658 i915_restore_modeset_reg(dev); 669 - 670 - /* Cursor state */ 671 - I915_WRITE(CURAPOS, dev_priv->saveCURAPOS); 672 - I915_WRITE(CURACNTR, dev_priv->saveCURACNTR); 673 - I915_WRITE(CURABASE, dev_priv->saveCURABASE); 674 - I915_WRITE(CURBPOS, dev_priv->saveCURBPOS); 675 - I915_WRITE(CURBCNTR, dev_priv->saveCURBCNTR); 676 - I915_WRITE(CURBBASE, dev_priv->saveCURBBASE); 677 - if (IS_GEN2(dev)) 678 - I915_WRITE(CURSIZE, dev_priv->saveCURSIZE); 679 659 680 660 /* CRT state */ 681 661 if (HAS_PCH_SPLIT(dev))
+6 -1
drivers/gpu/drm/i915/intel_display.c
··· 5336 5336 struct drm_i915_private *dev_priv = dev->dev_private; 5337 5337 struct intel_encoder *encoder; 5338 5338 bool dpd_is_edp = false; 5339 + bool has_lvds = false; 5339 5340 5340 5341 if (IS_MOBILE(dev) && !IS_I830(dev)) 5341 - intel_lvds_init(dev); 5342 + has_lvds = intel_lvds_init(dev); 5343 + if (!has_lvds && !HAS_PCH_SPLIT(dev)) { 5344 + /* disable the panel fitter on everything but LVDS */ 5345 + I915_WRITE(PFIT_CONTROL, 0); 5346 + } 5342 5347 5343 5348 if (HAS_PCH_SPLIT(dev)) { 5344 5349 dpd_is_edp = intel_dpd_is_edp(dev);
+61 -93
drivers/gpu/drm/i915/intel_dp.c
··· 584 584 mode->clock = dev_priv->panel_fixed_mode->clock; 585 585 } 586 586 587 - /* Just use VBT values for eDP */ 588 - if (is_edp(intel_dp)) { 589 - intel_dp->lane_count = dev_priv->edp.lanes; 590 - intel_dp->link_bw = dev_priv->edp.rate; 591 - adjusted_mode->clock = intel_dp_link_clock(intel_dp->link_bw); 592 - DRM_DEBUG_KMS("eDP link bw %02x lane count %d clock %d\n", 593 - intel_dp->link_bw, intel_dp->lane_count, 594 - adjusted_mode->clock); 595 - return true; 596 - } 597 - 598 587 for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) { 599 588 for (clock = 0; clock <= max_clock; clock++) { 600 589 int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count); ··· 600 611 return true; 601 612 } 602 613 } 614 + } 615 + 616 + if (is_edp(intel_dp)) { 617 + /* okay we failed just pick the highest */ 618 + intel_dp->lane_count = max_lane_count; 619 + intel_dp->link_bw = bws[max_clock]; 620 + adjusted_mode->clock = intel_dp_link_clock(intel_dp->link_bw); 621 + DRM_DEBUG_KMS("Force picking display port link bw %02x lane " 622 + "count %d clock %d\n", 623 + intel_dp->link_bw, intel_dp->lane_count, 624 + adjusted_mode->clock); 625 + 626 + return true; 603 627 } 604 628 605 629 return false; ··· 1089 1087 } 1090 1088 1091 1089 static uint32_t 1092 - intel_dp_signal_levels(struct intel_dp *intel_dp) 1090 + intel_dp_signal_levels(uint8_t train_set, int lane_count) 1093 1091 { 1094 - struct drm_device *dev = intel_dp->base.base.dev; 1095 - struct drm_i915_private *dev_priv = dev->dev_private; 1096 - uint32_t signal_levels = 0; 1097 - u8 train_set = intel_dp->train_set[0]; 1098 - u32 vswing = train_set & DP_TRAIN_VOLTAGE_SWING_MASK; 1099 - u32 preemphasis = train_set & DP_TRAIN_PRE_EMPHASIS_MASK; 1092 + uint32_t signal_levels = 0; 1100 1093 1101 - if (is_edp(intel_dp)) { 1102 - vswing = dev_priv->edp.vswing; 1103 - preemphasis = dev_priv->edp.preemphasis; 1104 - } 1105 - 1106 - switch (vswing) { 1094 + switch (train_set & DP_TRAIN_VOLTAGE_SWING_MASK) { 1107 1095 case DP_TRAIN_VOLTAGE_SWING_400: 1108 1096 default: 1109 1097 signal_levels |= DP_VOLTAGE_0_4; ··· 1108 1116 signal_levels |= DP_VOLTAGE_1_2; 1109 1117 break; 1110 1118 } 1111 - switch (preemphasis) { 1119 + switch (train_set & DP_TRAIN_PRE_EMPHASIS_MASK) { 1112 1120 case DP_TRAIN_PRE_EMPHASIS_0: 1113 1121 default: 1114 1122 signal_levels |= DP_PRE_EMPHASIS_0; ··· 1195 1203 } 1196 1204 1197 1205 static bool 1198 - intel_dp_aux_handshake_required(struct intel_dp *intel_dp) 1199 - { 1200 - struct drm_device *dev = intel_dp->base.base.dev; 1201 - struct drm_i915_private *dev_priv = dev->dev_private; 1202 - 1203 - if (is_edp(intel_dp) && dev_priv->no_aux_handshake) 1204 - return false; 1205 - 1206 - return true; 1207 - } 1208 - 1209 - static bool 1210 1206 intel_dp_set_link_train(struct intel_dp *intel_dp, 1211 1207 uint32_t dp_reg_value, 1212 1208 uint8_t dp_train_pat) ··· 1205 1225 1206 1226 I915_WRITE(intel_dp->output_reg, dp_reg_value); 1207 1227 POSTING_READ(intel_dp->output_reg); 1208 - 1209 - if (!intel_dp_aux_handshake_required(intel_dp)) 1210 - return true; 1211 1228 1212 1229 intel_dp_aux_native_write_1(intel_dp, 1213 1230 DP_TRAINING_PATTERN_SET, ··· 1238 1261 POSTING_READ(intel_dp->output_reg); 1239 1262 intel_wait_for_vblank(dev, intel_crtc->pipe); 1240 1263 1241 - if (intel_dp_aux_handshake_required(intel_dp)) 1242 - /* Write the link configuration data */ 1243 - intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET, 1244 - intel_dp->link_configuration, 1245 - DP_LINK_CONFIGURATION_SIZE); 1264 + /* Write the link configuration data */ 1265 + intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET, 1266 + intel_dp->link_configuration, 1267 + DP_LINK_CONFIGURATION_SIZE); 1246 1268 1247 1269 DP |= DP_PORT_EN; 1248 1270 if (HAS_PCH_CPT(dev) && !is_edp(intel_dp)) ··· 1259 1283 signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]); 1260 1284 DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels; 1261 1285 } else { 1262 - signal_levels = intel_dp_signal_levels(intel_dp); 1286 + signal_levels = intel_dp_signal_levels(intel_dp->train_set[0], intel_dp->lane_count); 1263 1287 DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; 1264 1288 } 1265 1289 ··· 1273 1297 break; 1274 1298 /* Set training pattern 1 */ 1275 1299 1276 - udelay(500); 1277 - if (intel_dp_aux_handshake_required(intel_dp)) { 1300 + udelay(100); 1301 + if (!intel_dp_get_link_status(intel_dp)) 1278 1302 break; 1279 - } else { 1280 - if (!intel_dp_get_link_status(intel_dp)) 1281 - break; 1282 1303 1283 - if (intel_clock_recovery_ok(intel_dp->link_status, intel_dp->lane_count)) { 1284 - clock_recovery = true; 1285 - break; 1286 - } 1287 - 1288 - /* Check to see if we've tried the max voltage */ 1289 - for (i = 0; i < intel_dp->lane_count; i++) 1290 - if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) 1291 - break; 1292 - if (i == intel_dp->lane_count) 1293 - break; 1294 - 1295 - /* Check to see if we've tried the same voltage 5 times */ 1296 - if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) { 1297 - ++tries; 1298 - if (tries == 5) 1299 - break; 1300 - } else 1301 - tries = 0; 1302 - voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; 1303 - 1304 - /* Compute new intel_dp->train_set as requested by target */ 1305 - intel_get_adjust_train(intel_dp); 1304 + if (intel_clock_recovery_ok(intel_dp->link_status, intel_dp->lane_count)) { 1305 + clock_recovery = true; 1306 + break; 1306 1307 } 1308 + 1309 + /* Check to see if we've tried the max voltage */ 1310 + for (i = 0; i < intel_dp->lane_count; i++) 1311 + if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0) 1312 + break; 1313 + if (i == intel_dp->lane_count) 1314 + break; 1315 + 1316 + /* Check to see if we've tried the same voltage 5 times */ 1317 + if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) { 1318 + ++tries; 1319 + if (tries == 5) 1320 + break; 1321 + } else 1322 + tries = 0; 1323 + voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK; 1324 + 1325 + /* Compute new intel_dp->train_set as requested by target */ 1326 + intel_get_adjust_train(intel_dp); 1307 1327 } 1308 1328 1309 1329 intel_dp->DP = DP; ··· 1326 1354 signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]); 1327 1355 DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels; 1328 1356 } else { 1329 - signal_levels = intel_dp_signal_levels(intel_dp); 1357 + signal_levels = intel_dp_signal_levels(intel_dp->train_set[0], intel_dp->lane_count); 1330 1358 DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels; 1331 1359 } 1332 1360 ··· 1340 1368 DP_TRAINING_PATTERN_2)) 1341 1369 break; 1342 1370 1343 - udelay(500); 1344 - 1345 - if (!intel_dp_aux_handshake_required(intel_dp)) { 1371 + udelay(400); 1372 + if (!intel_dp_get_link_status(intel_dp)) 1346 1373 break; 1347 - } else { 1348 - if (!intel_dp_get_link_status(intel_dp)) 1349 - break; 1350 1374 1351 - if (intel_channel_eq_ok(intel_dp)) { 1352 - channel_eq = true; 1353 - break; 1354 - } 1355 - 1356 - /* Try 5 times */ 1357 - if (tries > 5) 1358 - break; 1359 - 1360 - /* Compute new intel_dp->train_set as requested by target */ 1361 - intel_get_adjust_train(intel_dp); 1362 - ++tries; 1375 + if (intel_channel_eq_ok(intel_dp)) { 1376 + channel_eq = true; 1377 + break; 1363 1378 } 1379 + 1380 + /* Try 5 times */ 1381 + if (tries > 5) 1382 + break; 1383 + 1384 + /* Compute new intel_dp->train_set as requested by target */ 1385 + intel_get_adjust_train(intel_dp); 1386 + ++tries; 1364 1387 } 1388 + 1365 1389 if (HAS_PCH_CPT(dev) && !is_edp(intel_dp)) 1366 1390 reg = DP | DP_LINK_TRAIN_OFF_CPT; 1367 1391 else
+1 -1
drivers/gpu/drm/i915/intel_drv.h
··· 237 237 extern void intel_dvo_init(struct drm_device *dev); 238 238 extern void intel_tv_init(struct drm_device *dev); 239 239 extern void intel_mark_busy(struct drm_device *dev, struct drm_gem_object *obj); 240 - extern void intel_lvds_init(struct drm_device *dev); 240 + extern bool intel_lvds_init(struct drm_device *dev); 241 241 extern void intel_dp_init(struct drm_device *dev, int dp_reg); 242 242 void 243 243 intel_dp_set_m_n(struct drm_crtc *crtc, struct drm_display_mode *mode,
+10 -9
drivers/gpu/drm/i915/intel_lvds.c
··· 837 837 * Create the connector, register the LVDS DDC bus, and try to figure out what 838 838 * modes we can display on the LVDS panel (if present). 839 839 */ 840 - void intel_lvds_init(struct drm_device *dev) 840 + bool intel_lvds_init(struct drm_device *dev) 841 841 { 842 842 struct drm_i915_private *dev_priv = dev->dev_private; 843 843 struct intel_lvds *intel_lvds; ··· 853 853 854 854 /* Skip init on machines we know falsely report LVDS */ 855 855 if (dmi_check_system(intel_no_lvds)) 856 - return; 856 + return false; 857 857 858 858 pin = GMBUS_PORT_PANEL; 859 859 if (!lvds_is_present_in_vbt(dev, &pin)) { 860 860 DRM_DEBUG_KMS("LVDS is not present in VBT\n"); 861 - return; 861 + return false; 862 862 } 863 863 864 864 if (HAS_PCH_SPLIT(dev)) { 865 865 if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0) 866 - return; 866 + return false; 867 867 if (dev_priv->edp.support) { 868 868 DRM_DEBUG_KMS("disable LVDS for eDP support\n"); 869 - return; 869 + return false; 870 870 } 871 871 } 872 872 873 873 if (!intel_lvds_ddc_probe(dev, pin)) { 874 874 DRM_DEBUG_KMS("LVDS did not respond to DDC probe\n"); 875 - return; 875 + return false; 876 876 } 877 877 878 878 intel_lvds = kzalloc(sizeof(struct intel_lvds), GFP_KERNEL); 879 879 if (!intel_lvds) { 880 - return; 880 + return false; 881 881 } 882 882 883 883 intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); 884 884 if (!intel_connector) { 885 885 kfree(intel_lvds); 886 - return; 886 + return false; 887 887 } 888 888 889 889 if (!HAS_PCH_SPLIT(dev)) { ··· 1026 1026 /* keep the LVDS connector */ 1027 1027 dev_priv->int_lvds_connector = connector; 1028 1028 drm_sysfs_connector_add(connector); 1029 - return; 1029 + return true; 1030 1030 1031 1031 failed: 1032 1032 DRM_DEBUG_KMS("No LVDS modes found, disabling.\n"); ··· 1034 1034 drm_encoder_cleanup(encoder); 1035 1035 kfree(intel_lvds); 1036 1036 kfree(intel_connector); 1037 + return false; 1037 1038 }
+25 -59
drivers/gpu/drm/i915/intel_sdvo.c
··· 107 107 * This is set if we treat the device as HDMI, instead of DVI. 108 108 */ 109 109 bool is_hdmi; 110 - bool has_audio; 110 + bool has_hdmi_monitor; 111 + bool has_hdmi_audio; 111 112 112 113 /** 113 114 * This is set if we detect output of sdvo device as LVDS and ··· 1024 1023 if (!intel_sdvo_set_target_input(intel_sdvo)) 1025 1024 return; 1026 1025 1027 - if (intel_sdvo->is_hdmi && 1026 + if (intel_sdvo->has_hdmi_monitor && 1028 1027 !intel_sdvo_set_avi_infoframe(intel_sdvo)) 1029 1028 return; 1030 1029 ··· 1064 1063 } 1065 1064 if (intel_crtc->pipe == 1) 1066 1065 sdvox |= SDVO_PIPE_B_SELECT; 1067 - if (intel_sdvo->has_audio) 1066 + if (intel_sdvo->has_hdmi_audio) 1068 1067 sdvox |= SDVO_AUDIO_ENABLE; 1069 1068 1070 1069 if (INTEL_INFO(dev)->gen >= 4) { ··· 1296 1295 return drm_get_edid(connector, &sdvo->ddc); 1297 1296 } 1298 1297 1299 - static struct drm_connector * 1300 - intel_find_analog_connector(struct drm_device *dev) 1301 - { 1302 - struct drm_connector *connector; 1303 - struct intel_sdvo *encoder; 1304 - 1305 - list_for_each_entry(encoder, 1306 - &dev->mode_config.encoder_list, 1307 - base.base.head) { 1308 - if (encoder->base.type == INTEL_OUTPUT_ANALOG) { 1309 - list_for_each_entry(connector, 1310 - &dev->mode_config.connector_list, 1311 - head) { 1312 - if (&encoder->base == 1313 - intel_attached_encoder(connector)) 1314 - return connector; 1315 - } 1316 - } 1317 - } 1318 - 1319 - return NULL; 1320 - } 1321 - 1322 - static int 1323 - intel_analog_is_connected(struct drm_device *dev) 1324 - { 1325 - struct drm_connector *analog_connector; 1326 - 1327 - analog_connector = intel_find_analog_connector(dev); 1328 - if (!analog_connector) 1329 - return false; 1330 - 1331 - if (analog_connector->funcs->detect(analog_connector, false) == 1332 - connector_status_disconnected) 1333 - return false; 1334 - 1335 - return true; 1336 - } 1337 - 1338 1298 /* Mac mini hack -- use the same DDC as the analog connector */ 1339 1299 static struct edid * 1340 1300 intel_sdvo_get_analog_edid(struct drm_connector *connector) 1341 1301 { 1342 1302 struct drm_i915_private *dev_priv = connector->dev->dev_private; 1343 1303 1344 - if (!intel_analog_is_connected(connector->dev)) 1345 - return NULL; 1346 - 1347 - return drm_get_edid(connector, &dev_priv->gmbus[dev_priv->crt_ddc_pin].adapter); 1304 + return drm_get_edid(connector, 1305 + &dev_priv->gmbus[dev_priv->crt_ddc_pin].adapter); 1348 1306 } 1349 1307 1350 1308 enum drm_connector_status ··· 1348 1388 /* DDC bus is shared, match EDID to connector type */ 1349 1389 if (edid->input & DRM_EDID_INPUT_DIGITAL) { 1350 1390 status = connector_status_connected; 1351 - intel_sdvo->is_hdmi = drm_detect_hdmi_monitor(edid); 1352 - intel_sdvo->has_audio = drm_detect_monitor_audio(edid); 1391 + if (intel_sdvo->is_hdmi) { 1392 + intel_sdvo->has_hdmi_monitor = drm_detect_hdmi_monitor(edid); 1393 + intel_sdvo->has_hdmi_audio = drm_detect_monitor_audio(edid); 1394 + } 1353 1395 } 1354 1396 connector->display_info.raw_edid = NULL; 1355 1397 kfree(edid); ··· 1360 1398 if (status == connector_status_connected) { 1361 1399 struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector); 1362 1400 if (intel_sdvo_connector->force_audio) 1363 - intel_sdvo->has_audio = intel_sdvo_connector->force_audio > 0; 1401 + intel_sdvo->has_hdmi_audio = intel_sdvo_connector->force_audio > 0; 1364 1402 } 1365 1403 1366 1404 return status; ··· 1377 1415 if (!intel_sdvo_write_cmd(intel_sdvo, 1378 1416 SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0)) 1379 1417 return connector_status_unknown; 1380 - if (intel_sdvo->is_tv) { 1381 - /* add 30ms delay when the output type is SDVO-TV */ 1418 + 1419 + /* add 30ms delay when the output type might be TV */ 1420 + if (intel_sdvo->caps.output_flags & 1421 + (SDVO_OUTPUT_SVID0 | SDVO_OUTPUT_CVBS0)) 1382 1422 mdelay(30); 1383 - } 1423 + 1384 1424 if (!intel_sdvo_read_response(intel_sdvo, &response, 2)) 1385 1425 return connector_status_unknown; 1386 1426 ··· 1436 1472 edid = intel_sdvo_get_analog_edid(connector); 1437 1473 1438 1474 if (edid != NULL) { 1439 - drm_mode_connector_update_edid_property(connector, edid); 1440 - drm_add_edid_modes(connector, edid); 1475 + if (edid->input & DRM_EDID_INPUT_DIGITAL) { 1476 + drm_mode_connector_update_edid_property(connector, edid); 1477 + drm_add_edid_modes(connector, edid); 1478 + } 1441 1479 connector->display_info.raw_edid = NULL; 1442 1480 kfree(edid); 1443 1481 } ··· 1679 1713 1680 1714 intel_sdvo_connector->force_audio = val; 1681 1715 1682 - if (val > 0 && intel_sdvo->has_audio) 1716 + if (val > 0 && intel_sdvo->has_hdmi_audio) 1683 1717 return 0; 1684 - if (val < 0 && !intel_sdvo->has_audio) 1718 + if (val < 0 && !intel_sdvo->has_hdmi_audio) 1685 1719 return 0; 1686 1720 1687 - intel_sdvo->has_audio = val > 0; 1721 + intel_sdvo->has_hdmi_audio = val > 0; 1688 1722 goto done; 1689 1723 } 1690 1724 ··· 2036 2070 intel_sdvo_set_colorimetry(intel_sdvo, 2037 2071 SDVO_COLORIMETRY_RGB256); 2038 2072 connector->connector_type = DRM_MODE_CONNECTOR_HDMIA; 2073 + 2074 + intel_sdvo_add_hdmi_properties(intel_sdvo_connector); 2039 2075 intel_sdvo->is_hdmi = true; 2040 2076 } 2041 2077 intel_sdvo->base.clone_mask = ((1 << INTEL_SDVO_NON_TV_CLONE_BIT) | 2042 2078 (1 << INTEL_ANALOG_CLONE_BIT)); 2043 2079 2044 2080 intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo); 2045 - 2046 - intel_sdvo_add_hdmi_properties(intel_sdvo_connector); 2047 2081 2048 2082 return true; 2049 2083 }
+1
drivers/gpu/drm/radeon/atom.c
··· 112 112 base += 3; 113 113 break; 114 114 case ATOM_IIO_WRITE: 115 + (void)ctx->card->ioreg_read(ctx->card, CU16(base + 1)); 115 116 ctx->card->ioreg_write(ctx->card, CU16(base + 1), temp); 116 117 base += 3; 117 118 break;
+1 -1
drivers/gpu/drm/radeon/r600_cs.c
··· 315 315 if (array_mode == V_0280A0_ARRAY_LINEAR_GENERAL) { 316 316 /* the initial DDX does bad things with the CB size occasionally */ 317 317 /* it rounds up height too far for slice tile max but the BO is smaller */ 318 - tmp = (height - 7) * pitch * bpe; 318 + tmp = (height - 7) * 8 * bpe; 319 319 if ((tmp + track->cb_color_bo_offset[i]) > radeon_bo_size(track->cb_color_bo[i])) { 320 320 dev_warn(p->dev, "%s offset[%d] %d %d %lu too big\n", __func__, i, track->cb_color_bo_offset[i], tmp, radeon_bo_size(track->cb_color_bo[i])); 321 321 return -EINVAL;
+1
drivers/gpu/drm/radeon/r600_reg.h
··· 86 86 #define R600_HDP_NONSURFACE_BASE 0x2c04 87 87 88 88 #define R600_BUS_CNTL 0x5420 89 + # define R600_BIOS_ROM_DIS (1 << 1) 89 90 #define R600_CONFIG_CNTL 0x5424 90 91 #define R600_CONFIG_MEMSIZE 0x5428 91 92 #define R600_CONFIG_F0_BASE 0x542C
+16
drivers/gpu/drm/radeon/radeon_atombios.c
··· 98 98 } 99 99 } 100 100 101 + /* some DCE3 boards have bad data for this entry */ 102 + if (ASIC_IS_DCE3(rdev)) { 103 + if ((i == 4) && 104 + (gpio->usClkMaskRegisterIndex == 0x1fda) && 105 + (gpio->sucI2cId.ucAccess == 0x94)) 106 + gpio->sucI2cId.ucAccess = 0x14; 107 + } 108 + 101 109 if (gpio->sucI2cId.ucAccess == id) { 102 110 i2c.mask_clk_reg = le16_to_cpu(gpio->usClkMaskRegisterIndex) * 4; 103 111 i2c.mask_data_reg = le16_to_cpu(gpio->usDataMaskRegisterIndex) * 4; ··· 180 172 gpio->ucDataY_Shift = 8; 181 173 gpio->ucDataA_Shift = 8; 182 174 } 175 + } 176 + 177 + /* some DCE3 boards have bad data for this entry */ 178 + if (ASIC_IS_DCE3(rdev)) { 179 + if ((i == 4) && 180 + (gpio->usClkMaskRegisterIndex == 0x1fda) && 181 + (gpio->sucI2cId.ucAccess == 0x94)) 182 + gpio->sucI2cId.ucAccess = 0x14; 183 183 } 184 184 185 185 i2c.mask_clk_reg = le16_to_cpu(gpio->usClkMaskRegisterIndex) * 4;
+7 -6
drivers/gpu/drm/radeon/radeon_bios.c
··· 130 130 } 131 131 return true; 132 132 } 133 + 133 134 static bool r700_read_disabled_bios(struct radeon_device *rdev) 134 135 { 135 136 uint32_t viph_control; ··· 144 143 bool r; 145 144 146 145 viph_control = RREG32(RADEON_VIPH_CONTROL); 147 - bus_cntl = RREG32(RADEON_BUS_CNTL); 146 + bus_cntl = RREG32(R600_BUS_CNTL); 148 147 d1vga_control = RREG32(AVIVO_D1VGA_CONTROL); 149 148 d2vga_control = RREG32(AVIVO_D2VGA_CONTROL); 150 149 vga_render_control = RREG32(AVIVO_VGA_RENDER_CONTROL); ··· 153 152 /* disable VIP */ 154 153 WREG32(RADEON_VIPH_CONTROL, (viph_control & ~RADEON_VIPH_EN)); 155 154 /* enable the rom */ 156 - WREG32(RADEON_BUS_CNTL, (bus_cntl & ~RADEON_BUS_BIOS_DIS_ROM)); 155 + WREG32(R600_BUS_CNTL, (bus_cntl & ~R600_BIOS_ROM_DIS)); 157 156 /* Disable VGA mode */ 158 157 WREG32(AVIVO_D1VGA_CONTROL, 159 158 (d1vga_control & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE | ··· 192 191 cg_spll_status = RREG32(R600_CG_SPLL_STATUS); 193 192 } 194 193 WREG32(RADEON_VIPH_CONTROL, viph_control); 195 - WREG32(RADEON_BUS_CNTL, bus_cntl); 194 + WREG32(R600_BUS_CNTL, bus_cntl); 196 195 WREG32(AVIVO_D1VGA_CONTROL, d1vga_control); 197 196 WREG32(AVIVO_D2VGA_CONTROL, d2vga_control); 198 197 WREG32(AVIVO_VGA_RENDER_CONTROL, vga_render_control); ··· 217 216 bool r; 218 217 219 218 viph_control = RREG32(RADEON_VIPH_CONTROL); 220 - bus_cntl = RREG32(RADEON_BUS_CNTL); 219 + bus_cntl = RREG32(R600_BUS_CNTL); 221 220 d1vga_control = RREG32(AVIVO_D1VGA_CONTROL); 222 221 d2vga_control = RREG32(AVIVO_D2VGA_CONTROL); 223 222 vga_render_control = RREG32(AVIVO_VGA_RENDER_CONTROL); ··· 232 231 /* disable VIP */ 233 232 WREG32(RADEON_VIPH_CONTROL, (viph_control & ~RADEON_VIPH_EN)); 234 233 /* enable the rom */ 235 - WREG32(RADEON_BUS_CNTL, (bus_cntl & ~RADEON_BUS_BIOS_DIS_ROM)); 234 + WREG32(R600_BUS_CNTL, (bus_cntl & ~R600_BIOS_ROM_DIS)); 236 235 /* Disable VGA mode */ 237 236 WREG32(AVIVO_D1VGA_CONTROL, 238 237 (d1vga_control & ~(AVIVO_DVGA_CONTROL_MODE_ENABLE | ··· 263 262 264 263 /* restore regs */ 265 264 WREG32(RADEON_VIPH_CONTROL, viph_control); 266 - WREG32(RADEON_BUS_CNTL, bus_cntl); 265 + WREG32(R600_BUS_CNTL, bus_cntl); 267 266 WREG32(AVIVO_D1VGA_CONTROL, d1vga_control); 268 267 WREG32(AVIVO_D2VGA_CONTROL, d2vga_control); 269 268 WREG32(AVIVO_VGA_RENDER_CONTROL, vga_render_control);
+1 -1
drivers/gpu/drm/radeon/radeon_combios.c
··· 729 729 clk = RBIOS8(offset + 3 + (i * 5) + 3); 730 730 data = RBIOS8(offset + 3 + (i * 5) + 4); 731 731 i2c = combios_setup_i2c_bus(rdev, DDC_MONID, 732 - clk, data); 732 + (1 << clk), (1 << data)); 733 733 rdev->i2c_bus[4] = radeon_i2c_create(dev, &i2c, "GPIOPAD_MASK"); 734 734 break; 735 735 }
+34
drivers/gpu/drm/radeon/radeon_connectors.c
··· 1175 1175 /* no HPD on analog connectors */ 1176 1176 radeon_connector->hpd.hpd = RADEON_HPD_NONE; 1177 1177 connector->polled = DRM_CONNECTOR_POLL_CONNECT; 1178 + connector->interlace_allowed = true; 1179 + connector->doublescan_allowed = true; 1178 1180 break; 1179 1181 case DRM_MODE_CONNECTOR_DVIA: 1180 1182 drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); ··· 1192 1190 1); 1193 1191 /* no HPD on analog connectors */ 1194 1192 radeon_connector->hpd.hpd = RADEON_HPD_NONE; 1193 + connector->interlace_allowed = true; 1194 + connector->doublescan_allowed = true; 1195 1195 break; 1196 1196 case DRM_MODE_CONNECTOR_DVII: 1197 1197 case DRM_MODE_CONNECTOR_DVID: ··· 1230 1226 rdev->mode_info.load_detect_property, 1231 1227 1); 1232 1228 } 1229 + connector->interlace_allowed = true; 1230 + if (connector_type == DRM_MODE_CONNECTOR_DVII) 1231 + connector->doublescan_allowed = true; 1232 + else 1233 + connector->doublescan_allowed = false; 1233 1234 break; 1234 1235 case DRM_MODE_CONNECTOR_HDMIA: 1235 1236 case DRM_MODE_CONNECTOR_HDMIB: ··· 1265 1256 0); 1266 1257 } 1267 1258 subpixel_order = SubPixelHorizontalRGB; 1259 + connector->interlace_allowed = true; 1260 + if (connector_type == DRM_MODE_CONNECTOR_HDMIB) 1261 + connector->doublescan_allowed = true; 1262 + else 1263 + connector->doublescan_allowed = false; 1268 1264 break; 1269 1265 case DRM_MODE_CONNECTOR_DisplayPort: 1270 1266 case DRM_MODE_CONNECTOR_eDP: ··· 1307 1293 rdev->mode_info.underscan_vborder_property, 1308 1294 0); 1309 1295 } 1296 + connector->interlace_allowed = true; 1297 + /* in theory with a DP to VGA converter... */ 1298 + connector->doublescan_allowed = false; 1310 1299 break; 1311 1300 case DRM_MODE_CONNECTOR_SVIDEO: 1312 1301 case DRM_MODE_CONNECTOR_Composite: ··· 1325 1308 radeon_atombios_get_tv_info(rdev)); 1326 1309 /* no HPD on analog connectors */ 1327 1310 radeon_connector->hpd.hpd = RADEON_HPD_NONE; 1311 + connector->interlace_allowed = false; 1312 + connector->doublescan_allowed = false; 1328 1313 break; 1329 1314 case DRM_MODE_CONNECTOR_LVDS: 1330 1315 radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); ··· 1345 1326 dev->mode_config.scaling_mode_property, 1346 1327 DRM_MODE_SCALE_FULLSCREEN); 1347 1328 subpixel_order = SubPixelHorizontalRGB; 1329 + connector->interlace_allowed = false; 1330 + connector->doublescan_allowed = false; 1348 1331 break; 1349 1332 } 1350 1333 ··· 1424 1403 /* no HPD on analog connectors */ 1425 1404 radeon_connector->hpd.hpd = RADEON_HPD_NONE; 1426 1405 connector->polled = DRM_CONNECTOR_POLL_CONNECT; 1406 + connector->interlace_allowed = true; 1407 + connector->doublescan_allowed = true; 1427 1408 break; 1428 1409 case DRM_MODE_CONNECTOR_DVIA: 1429 1410 drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); ··· 1441 1418 1); 1442 1419 /* no HPD on analog connectors */ 1443 1420 radeon_connector->hpd.hpd = RADEON_HPD_NONE; 1421 + connector->interlace_allowed = true; 1422 + connector->doublescan_allowed = true; 1444 1423 break; 1445 1424 case DRM_MODE_CONNECTOR_DVII: 1446 1425 case DRM_MODE_CONNECTOR_DVID: ··· 1460 1435 1); 1461 1436 } 1462 1437 subpixel_order = SubPixelHorizontalRGB; 1438 + connector->interlace_allowed = true; 1439 + if (connector_type == DRM_MODE_CONNECTOR_DVII) 1440 + connector->doublescan_allowed = true; 1441 + else 1442 + connector->doublescan_allowed = false; 1463 1443 break; 1464 1444 case DRM_MODE_CONNECTOR_SVIDEO: 1465 1445 case DRM_MODE_CONNECTOR_Composite: ··· 1487 1457 radeon_combios_get_tv_info(rdev)); 1488 1458 /* no HPD on analog connectors */ 1489 1459 radeon_connector->hpd.hpd = RADEON_HPD_NONE; 1460 + connector->interlace_allowed = false; 1461 + connector->doublescan_allowed = false; 1490 1462 break; 1491 1463 case DRM_MODE_CONNECTOR_LVDS: 1492 1464 drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type); ··· 1502 1470 dev->mode_config.scaling_mode_property, 1503 1471 DRM_MODE_SCALE_FULLSCREEN); 1504 1472 subpixel_order = SubPixelHorizontalRGB; 1473 + connector->interlace_allowed = false; 1474 + connector->doublescan_allowed = false; 1505 1475 break; 1506 1476 } 1507 1477
+1
drivers/hid/hid-core.c
··· 1386 1386 { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb651) }, 1387 1387 { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb653) }, 1388 1388 { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654) }, 1389 + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb65a) }, 1389 1390 { HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED, USB_DEVICE_ID_TOPSEED_CYBERLINK) }, 1390 1391 { HID_USB_DEVICE(USB_VENDOR_ID_TOPSEED2, USB_DEVICE_ID_TOPSEED2_RF_COMBO) }, 1391 1392 { HID_USB_DEVICE(USB_VENDOR_ID_TWINHAN, USB_DEVICE_ID_TWINHAN_IR_REMOTE) },
+1 -1
drivers/hid/hid-egalax.c
··· 221 221 struct egalax_data *td; 222 222 struct hid_report *report; 223 223 224 - td = kmalloc(sizeof(struct egalax_data), GFP_KERNEL); 224 + td = kzalloc(sizeof(struct egalax_data), GFP_KERNEL); 225 225 if (!td) { 226 226 dev_err(&hdev->dev, "cannot allocate eGalax data\n"); 227 227 return -ENOMEM;
+12 -9
drivers/hid/hid-input.c
··· 174 174 175 175 clear_bit(*old_keycode, dev->keybit); 176 176 set_bit(usage->code, dev->keybit); 177 - dbg_hid(KERN_DEBUG "Assigned keycode %d to HID usage code %x\n", 177 + dbg_hid("Assigned keycode %d to HID usage code %x\n", 178 178 usage->code, usage->hid); 179 179 180 180 /* ··· 203 203 * 204 204 * as seen in the HID specification v1.11 6.2.2.7 Global Items. 205 205 * 206 - * Only exponent 1 length units are processed. Centimeters are converted to 207 - * inches. Degrees are converted to radians. 206 + * Only exponent 1 length units are processed. Centimeters and inches are 207 + * converted to millimeters. Degrees are converted to radians. 208 208 */ 209 209 static __s32 hidinput_calc_abs_res(const struct hid_field *field, __u16 code) 210 210 { ··· 225 225 */ 226 226 if (code == ABS_X || code == ABS_Y || code == ABS_Z) { 227 227 if (field->unit == 0x11) { /* If centimeters */ 228 - /* Convert to inches */ 229 - prev = logical_extents; 230 - logical_extents *= 254; 231 - if (logical_extents < prev) 228 + /* Convert to millimeters */ 229 + unit_exponent += 1; 230 + } else if (field->unit == 0x13) { /* If inches */ 231 + /* Convert to millimeters */ 232 + prev = physical_extents; 233 + physical_extents *= 254; 234 + if (physical_extents < prev) 232 235 return 0; 233 - unit_exponent += 2; 234 - } else if (field->unit != 0x13) { /* If not inches */ 236 + unit_exponent -= 1; 237 + } else { 235 238 return 0; 236 239 } 237 240 } else if (code == ABS_RX || code == ABS_RY || code == ABS_RZ) {
+2
drivers/hid/hid-tmff.c
··· 256 256 .driver_data = (unsigned long)ff_joystick }, 257 257 { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb654), /* FGT Force Feedback Wheel */ 258 258 .driver_data = (unsigned long)ff_joystick }, 259 + { HID_USB_DEVICE(USB_VENDOR_ID_THRUSTMASTER, 0xb65a), /* F430 Force Feedback Wheel */ 260 + .driver_data = (unsigned long)ff_joystick }, 259 261 { } 260 262 }; 261 263 MODULE_DEVICE_TABLE(hid, tm_devices);
+1 -2
drivers/i2c/Kconfig
··· 75 75 In doubt, say Y. 76 76 77 77 config I2C_SMBUS 78 - tristate 79 - prompt "SMBus-specific protocols" if !I2C_HELPER_AUTO 78 + tristate "SMBus-specific protocols" if !I2C_HELPER_AUTO 80 79 help 81 80 Say Y here if you want support for SMBus extensions to the I2C 82 81 specification. At the moment, the only supported extension is
+1 -13
drivers/i2c/algos/Kconfig
··· 3 3 # 4 4 5 5 menu "I2C Algorithms" 6 - depends on !I2C_HELPER_AUTO 6 + visible if !I2C_HELPER_AUTO 7 7 8 8 config I2C_ALGOBIT 9 9 tristate "I2C bit-banging interfaces" ··· 15 15 tristate "I2C PCA 9564 interfaces" 16 16 17 17 endmenu 18 - 19 - # In automatic configuration mode, we still have to define the 20 - # symbols to avoid unmet dependencies. 21 - 22 - if I2C_HELPER_AUTO 23 - config I2C_ALGOBIT 24 - tristate 25 - config I2C_ALGOPCF 26 - tristate 27 - config I2C_ALGOPCA 28 - tristate 29 - endif
-30
drivers/infiniband/core/ud_header.c
··· 278 278 EXPORT_SYMBOL(ib_ud_header_init); 279 279 280 280 /** 281 - * ib_lrh_header_pack - Pack LRH header struct into wire format 282 - * @lrh:unpacked LRH header struct 283 - * @buf:Buffer to pack into 284 - * 285 - * ib_lrh_header_pack() packs the LRH header structure @lrh into 286 - * wire format in the buffer @buf. 287 - */ 288 - int ib_lrh_header_pack(struct ib_unpacked_lrh *lrh, void *buf) 289 - { 290 - ib_pack(lrh_table, ARRAY_SIZE(lrh_table), lrh, buf); 291 - return 0; 292 - } 293 - EXPORT_SYMBOL(ib_lrh_header_pack); 294 - 295 - /** 296 - * ib_lrh_header_unpack - Unpack LRH structure from wire format 297 - * @lrh:unpacked LRH header struct 298 - * @buf:Buffer to pack into 299 - * 300 - * ib_lrh_header_unpack() unpacks the LRH header structure from 301 - * wire format (in buf) into @lrh. 302 - */ 303 - int ib_lrh_header_unpack(void *buf, struct ib_unpacked_lrh *lrh) 304 - { 305 - ib_unpack(lrh_table, ARRAY_SIZE(lrh_table), buf, lrh); 306 - return 0; 307 - } 308 - EXPORT_SYMBOL(ib_lrh_header_unpack); 309 - 310 - /** 311 281 * ib_ud_header_pack - Pack UD header struct into wire format 312 282 * @header:UD header struct 313 283 * @buf:Buffer to pack into
+4
drivers/infiniband/core/uverbs_marshall.c
··· 40 40 dst->grh.sgid_index = src->grh.sgid_index; 41 41 dst->grh.hop_limit = src->grh.hop_limit; 42 42 dst->grh.traffic_class = src->grh.traffic_class; 43 + memset(&dst->grh.reserved, 0, sizeof(dst->grh.reserved)); 43 44 dst->dlid = src->dlid; 44 45 dst->sl = src->sl; 45 46 dst->src_path_bits = src->src_path_bits; 46 47 dst->static_rate = src->static_rate; 47 48 dst->is_global = src->ah_flags & IB_AH_GRH ? 1 : 0; 48 49 dst->port_num = src->port_num; 50 + dst->reserved = 0; 49 51 } 50 52 EXPORT_SYMBOL(ib_copy_ah_attr_to_user); 51 53 52 54 void ib_copy_qp_attr_to_user(struct ib_uverbs_qp_attr *dst, 53 55 struct ib_qp_attr *src) 54 56 { 57 + dst->qp_state = src->qp_state; 55 58 dst->cur_qp_state = src->cur_qp_state; 56 59 dst->path_mtu = src->path_mtu; 57 60 dst->path_mig_state = src->path_mig_state; ··· 86 83 dst->rnr_retry = src->rnr_retry; 87 84 dst->alt_port_num = src->alt_port_num; 88 85 dst->alt_timeout = src->alt_timeout; 86 + memset(dst->reserved, 0, sizeof(dst->reserved)); 89 87 } 90 88 EXPORT_SYMBOL(ib_copy_qp_attr_to_user); 91 89
+2 -2
drivers/infiniband/hw/mlx4/main.c
··· 219 219 struct net_device *ndev; 220 220 enum ib_mtu tmp; 221 221 222 - props->active_width = IB_WIDTH_4X; 222 + props->active_width = IB_WIDTH_1X; 223 223 props->active_speed = 4; 224 224 props->port_cap_flags = IB_PORT_CM_SUP; 225 225 props->gid_tbl_len = to_mdev(ibdev)->dev->caps.gid_table_len[port]; ··· 242 242 tmp = iboe_get_mtu(ndev->mtu); 243 243 props->active_mtu = tmp ? min(props->max_mtu, tmp) : IB_MTU_256; 244 244 245 - props->state = netif_running(ndev) && netif_oper_up(ndev) ? 245 + props->state = (netif_running(ndev) && netif_carrier_ok(ndev)) ? 246 246 IB_PORT_ACTIVE : IB_PORT_DOWN; 247 247 props->phys_state = state_to_phys_state(props->state); 248 248
+5 -5
drivers/infiniband/hw/mlx4/qp.c
··· 1816 1816 ctrl->fence_size = (wr->send_flags & IB_SEND_FENCE ? 1817 1817 MLX4_WQE_CTRL_FENCE : 0) | size; 1818 1818 1819 + if (be16_to_cpu(vlan) < 0x1000) { 1820 + ctrl->ins_vlan = 1 << 6; 1821 + ctrl->vlan_tag = vlan; 1822 + } 1823 + 1819 1824 /* 1820 1825 * Make sure descriptor is fully written before 1821 1826 * setting ownership bit (because HW can start ··· 1835 1830 1836 1831 ctrl->owner_opcode = mlx4_ib_opcode[wr->opcode] | 1837 1832 (ind & qp->sq.wqe_cnt ? cpu_to_be32(1 << 31) : 0) | blh; 1838 - 1839 - if (be16_to_cpu(vlan) < 0x1000) { 1840 - ctrl->ins_vlan = 1 << 6; 1841 - ctrl->vlan_tag = vlan; 1842 - } 1843 1833 1844 1834 stamp = ind + qp->sq_spare_wqes; 1845 1835 ind += DIV_ROUND_UP(size * 16, 1U << qp->sq.wqe_shift);
+1 -1
drivers/input/serio/gscps2.c
··· 358 358 gscps2_reset(ps2port); 359 359 ps2port->id = readb(ps2port->addr + GSC_ID) & 0x0f; 360 360 361 - snprintf(serio->name, sizeof(serio->name), "GSC PS/2 %s", 361 + snprintf(serio->name, sizeof(serio->name), "gsc-ps2-%s", 362 362 (ps2port->id == GSC_ID_KEYBOARD) ? "keyboard" : "mouse"); 363 363 strlcpy(serio->phys, dev_name(&dev->dev), sizeof(serio->phys)); 364 364 serio->id.type = SERIO_8042;
+41 -9
drivers/leds/Kconfig
··· 7 7 This is not related to standard keyboard LEDs which are controlled 8 8 via the input system. 9 9 10 - if NEW_LEDS 11 - 12 10 config LEDS_CLASS 13 11 bool "LED Class Support" 12 + depends on NEW_LEDS 14 13 help 15 14 This option enables the led sysfs class in /sys/class/leds. You'll 16 15 need this to do anything useful with LEDs. If unsure, say N. 17 16 18 - if LEDS_CLASS 17 + if NEW_LEDS 19 18 20 19 comment "LED drivers" 21 20 22 21 config LEDS_88PM860X 23 22 tristate "LED Support for Marvell 88PM860x PMIC" 23 + depends on LEDS_CLASS 24 24 depends on MFD_88PM860X 25 25 help 26 26 This option enables support for on-chip LED drivers found on Marvell ··· 28 28 29 29 config LEDS_ATMEL_PWM 30 30 tristate "LED Support using Atmel PWM outputs" 31 + depends on LEDS_CLASS 31 32 depends on ATMEL_PWM 32 33 help 33 34 This option enables support for LEDs driven using outputs ··· 36 35 37 36 config LEDS_LOCOMO 38 37 tristate "LED Support for Locomo device" 38 + depends on LEDS_CLASS 39 39 depends on SHARP_LOCOMO 40 40 help 41 41 This option enables support for the LEDs on Sharp Locomo. ··· 44 42 45 43 config LEDS_MIKROTIK_RB532 46 44 tristate "LED Support for Mikrotik Routerboard 532" 45 + depends on LEDS_CLASS 47 46 depends on MIKROTIK_RB532 48 47 help 49 48 This option enables support for the so called "User LED" of ··· 52 49 53 50 config LEDS_S3C24XX 54 51 tristate "LED Support for Samsung S3C24XX GPIO LEDs" 52 + depends on LEDS_CLASS 55 53 depends on ARCH_S3C2410 56 54 help 57 55 This option enables support for LEDs connected to GPIO lines ··· 60 56 61 57 config LEDS_AMS_DELTA 62 58 tristate "LED Support for the Amstrad Delta (E3)" 59 + depends on LEDS_CLASS 63 60 depends on MACH_AMS_DELTA 64 61 help 65 62 This option enables support for the LEDs on Amstrad Delta (E3). 66 63 67 64 config LEDS_NET48XX 68 65 tristate "LED Support for Soekris net48xx series Error LED" 66 + depends on LEDS_CLASS 69 67 depends on SCx200_GPIO 70 68 help 71 69 This option enables support for the Soekris net4801 and net4826 error ··· 85 79 86 80 config LEDS_FSG 87 81 tristate "LED Support for the Freecom FSG-3" 82 + depends on LEDS_CLASS 88 83 depends on MACH_FSG 89 84 help 90 85 This option enables support for the LEDs on the Freecom FSG-3. 91 86 92 87 config LEDS_WRAP 93 88 tristate "LED Support for the WRAP series LEDs" 89 + depends on LEDS_CLASS 94 90 depends on SCx200_GPIO 95 91 help 96 92 This option enables support for the PCEngines WRAP programmable LEDs. 97 93 98 94 config LEDS_ALIX2 99 95 tristate "LED Support for ALIX.2 and ALIX.3 series" 96 + depends on LEDS_CLASS 100 97 depends on X86 && !GPIO_CS5535 && !CS5535_GPIO 101 98 help 102 99 This option enables support for the PCEngines ALIX.2 and ALIX.3 LEDs. ··· 107 98 108 99 config LEDS_H1940 109 100 tristate "LED Support for iPAQ H1940 device" 101 + depends on LEDS_CLASS 110 102 depends on ARCH_H1940 111 103 help 112 104 This option enables support for the LEDs on the h1940. 113 105 114 106 config LEDS_COBALT_QUBE 115 107 tristate "LED Support for the Cobalt Qube series front LED" 108 + depends on LEDS_CLASS 116 109 depends on MIPS_COBALT 117 110 help 118 111 This option enables support for the front LED on Cobalt Qube series ··· 128 117 129 118 config LEDS_SUNFIRE 130 119 tristate "LED support for SunFire servers." 120 + depends on LEDS_CLASS 131 121 depends on SPARC64 132 122 select LEDS_TRIGGERS 133 123 help ··· 137 125 138 126 config LEDS_HP6XX 139 127 tristate "LED Support for the HP Jornada 6xx" 128 + depends on LEDS_CLASS 140 129 depends on SH_HP6XX 141 130 help 142 131 This option enables LED support for the handheld ··· 145 132 146 133 config LEDS_PCA9532 147 134 tristate "LED driver for PCA9532 dimmer" 135 + depends on LEDS_CLASS 148 136 depends on I2C && INPUT && EXPERIMENTAL 149 137 help 150 138 This option enables support for NXP pca9532 ··· 154 140 155 141 config LEDS_GPIO 156 142 tristate "LED Support for GPIO connected LEDs" 143 + depends on LEDS_CLASS 157 144 depends on GENERIC_GPIO 158 145 help 159 146 This option enables support for the LEDs connected to GPIO ··· 182 167 183 168 config LEDS_LP3944 184 169 tristate "LED Support for N.S. LP3944 (Fun Light) I2C chip" 170 + depends on LEDS_CLASS 185 171 depends on I2C 186 172 help 187 173 This option enables support for LEDs connected to the National ··· 212 196 213 197 config LEDS_CLEVO_MAIL 214 198 tristate "Mail LED on Clevo notebook" 199 + depends on LEDS_CLASS 215 200 depends on X86 && SERIO_I8042 && DMI 216 201 help 217 202 This driver makes the mail LED accessible from userspace ··· 243 226 244 227 config LEDS_PCA955X 245 228 tristate "LED Support for PCA955x I2C chips" 229 + depends on LEDS_CLASS 246 230 depends on I2C 247 231 help 248 232 This option enables support for LEDs connected to PCA955x ··· 252 234 253 235 config LEDS_WM831X_STATUS 254 236 tristate "LED support for status LEDs on WM831x PMICs" 237 + depends on LEDS_CLASS 255 238 depends on MFD_WM831X 256 239 help 257 240 This option enables support for the status LEDs of the WM831x ··· 260 241 261 242 config LEDS_WM8350 262 243 tristate "LED Support for WM8350 AudioPlus PMIC" 244 + depends on LEDS_CLASS 263 245 depends on MFD_WM8350 264 246 help 265 247 This option enables support for LEDs driven by the Wolfson ··· 268 248 269 249 config LEDS_DA903X 270 250 tristate "LED Support for DA9030/DA9034 PMIC" 251 + depends on LEDS_CLASS 271 252 depends on PMIC_DA903X 272 253 help 273 254 This option enables support for on-chip LED drivers found ··· 276 255 277 256 config LEDS_DAC124S085 278 257 tristate "LED Support for DAC124S085 SPI DAC" 258 + depends on LEDS_CLASS 279 259 depends on SPI 280 260 help 281 261 This option enables support for DAC124S085 SPI DAC from NatSemi, ··· 284 262 285 263 config LEDS_PWM 286 264 tristate "PWM driven LED Support" 265 + depends on LEDS_CLASS 287 266 depends on HAVE_PWM 288 267 help 289 268 This option enables support for pwm driven LEDs 290 269 291 270 config LEDS_REGULATOR 292 271 tristate "REGULATOR driven LED support" 272 + depends on LEDS_CLASS 293 273 depends on REGULATOR 294 274 help 295 275 This option enables support for regulator driven LEDs. 296 276 297 277 config LEDS_BD2802 298 278 tristate "LED driver for BD2802 RGB LED" 279 + depends on LEDS_CLASS 299 280 depends on I2C 300 281 help 301 282 This option enables support for BD2802GU RGB LED driver chips ··· 306 281 307 282 config LEDS_INTEL_SS4200 308 283 tristate "LED driver for Intel NAS SS4200 series" 284 + depends on LEDS_CLASS 309 285 depends on PCI && DMI 310 286 help 311 287 This option enables support for the Intel SS4200 series of ··· 316 290 317 291 config LEDS_LT3593 318 292 tristate "LED driver for LT3593 controllers" 293 + depends on LEDS_CLASS 319 294 depends on GENERIC_GPIO 320 295 help 321 296 This option enables support for LEDs driven by a Linear Technology ··· 325 298 326 299 config LEDS_ADP5520 327 300 tristate "LED Support for ADP5520/ADP5501 PMIC" 301 + depends on LEDS_CLASS 328 302 depends on PMIC_ADP5520 329 303 help 330 304 This option enables support for on-chip LED drivers found ··· 336 308 337 309 config LEDS_DELL_NETBOOKS 338 310 tristate "External LED on Dell Business Netbooks" 311 + depends on LEDS_CLASS 339 312 depends on X86 && ACPI_WMI 340 313 help 341 314 This adds support for the Latitude 2100 and similar ··· 344 315 345 316 config LEDS_MC13783 346 317 tristate "LED Support for MC13783 PMIC" 318 + depends on LEDS_CLASS 347 319 depends on MFD_MC13783 348 320 help 349 321 This option enable support for on-chip LED drivers found ··· 352 322 353 323 config LEDS_NS2 354 324 tristate "LED support for Network Space v2 GPIO LEDs" 325 + depends on LEDS_CLASS 355 326 depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || MACH_NETSPACE_MAX_V2 || D2NET_V2 356 327 default y 357 328 help ··· 371 340 372 341 config LEDS_TRIGGERS 373 342 bool "LED Trigger support" 343 + depends on LEDS_CLASS 374 344 help 375 345 This option enables trigger support for the leds class. 376 346 These triggers allow kernel events to drive the LEDs and can 377 347 be configured via sysfs. If unsure, say Y. 378 348 379 - if LEDS_TRIGGERS 380 - 381 349 comment "LED Triggers" 382 350 383 351 config LEDS_TRIGGER_TIMER 384 352 tristate "LED Timer Trigger" 353 + depends on LEDS_TRIGGERS 385 354 help 386 355 This allows LEDs to be controlled by a programmable timer 387 356 via sysfs. Some LED hardware can be programmed to start ··· 393 362 config LEDS_TRIGGER_IDE_DISK 394 363 bool "LED IDE Disk Trigger" 395 364 depends on IDE_GD_ATA 365 + depends on LEDS_TRIGGERS 396 366 help 397 367 This allows LEDs to be controlled by IDE disk activity. 398 368 If unsure, say Y. 399 369 400 370 config LEDS_TRIGGER_HEARTBEAT 401 371 tristate "LED Heartbeat Trigger" 372 + depends on LEDS_TRIGGERS 402 373 help 403 374 This allows LEDs to be controlled by a CPU load average. 404 375 The flash frequency is a hyperbolic function of the 1-minute ··· 409 376 410 377 config LEDS_TRIGGER_BACKLIGHT 411 378 tristate "LED backlight Trigger" 379 + depends on LEDS_TRIGGERS 412 380 help 413 381 This allows LEDs to be controlled as a backlight device: they 414 382 turn off and on when the display is blanked and unblanked. ··· 418 384 419 385 config LEDS_TRIGGER_GPIO 420 386 tristate "LED GPIO Trigger" 387 + depends on LEDS_TRIGGERS 421 388 depends on GPIOLIB 422 389 help 423 390 This allows LEDs to be controlled by gpio events. It's good ··· 431 396 432 397 config LEDS_TRIGGER_DEFAULT_ON 433 398 tristate "LED Default ON Trigger" 399 + depends on LEDS_TRIGGERS 434 400 help 435 401 This allows LEDs to be initialised in the ON state. 436 402 If unsure, say Y. 437 403 438 404 comment "iptables trigger is under Netfilter config (LED target)" 439 405 depends on LEDS_TRIGGERS 440 - 441 - endif # LEDS_TRIGGERS 442 - 443 - endif # LEDS_CLASS 444 406 445 407 endif # NEW_LEDS
+1
drivers/macintosh/Kconfig
··· 102 102 config ADB_PMU_LED_IDE 103 103 bool "Use front LED as IDE LED by default" 104 104 depends on ADB_PMU_LED 105 + depends on LEDS_CLASS 105 106 select LEDS_TRIGGERS 106 107 select LEDS_TRIGGER_IDE_DISK 107 108 help
+4 -4
drivers/media/common/tuners/Kconfig
··· 31 31 select MEDIA_TUNER_TDA9887 if !MEDIA_TUNER_CUSTOMISE 32 32 select MEDIA_TUNER_MC44S803 if !MEDIA_TUNER_CUSTOMISE 33 33 34 - menuconfig MEDIA_TUNER_CUSTOMISE 34 + config MEDIA_TUNER_CUSTOMISE 35 35 bool "Customize analog and hybrid tuner modules to build" 36 36 depends on MEDIA_TUNER 37 37 default y if EMBEDDED ··· 44 44 45 45 If unsure say N. 46 46 47 - if MEDIA_TUNER_CUSTOMISE 47 + menu "Customize TV tuners" 48 + visible if MEDIA_TUNER_CUSTOMISE 48 49 49 50 config MEDIA_TUNER_SIMPLE 50 51 tristate "Simple tuner support" ··· 186 185 default m if MEDIA_TUNER_CUSTOMISE 187 186 help 188 187 NXP TDA18218 silicon tuner driver. 189 - 190 - endif # MEDIA_TUNER_CUSTOMISE 188 + endmenu
+1 -4
drivers/media/dvb/frontends/Kconfig
··· 12 12 13 13 If unsure say N. 14 14 15 - if DVB_FE_CUSTOMISE 16 - 17 15 menu "Customise DVB Frontends" 16 + visible if DVB_FE_CUSTOMISE 18 17 19 18 comment "Multistandard (satellite) frontends" 20 19 depends on DVB_CORE ··· 618 619 tristate "Dummy frontend driver" 619 620 default n 620 621 endmenu 621 - 622 - endif
+1 -1
drivers/media/radio/radio-si4713.c
··· 291 291 goto unregister_v4l2_dev; 292 292 } 293 293 294 - sd = v4l2_i2c_new_subdev_board(&rsdev->v4l2_dev, adapter, NULL, 294 + sd = v4l2_i2c_new_subdev_board(&rsdev->v4l2_dev, adapter, 295 295 pdata->subdev_board_info, NULL); 296 296 if (!sd) { 297 297 dev_err(&pdev->dev, "Cannot get v4l2 subdevice\n");
+1 -1
drivers/media/video/Kconfig
··· 112 112 # 113 113 114 114 menu "Encoders/decoders and other helper chips" 115 - depends on !VIDEO_HELPER_CHIPS_AUTO 115 + visible if !VIDEO_HELPER_CHIPS_AUTO 116 116 117 117 comment "Audio decoders" 118 118
+2 -2
drivers/media/video/au0828/au0828-cards.c
··· 212 212 be abstracted out if we ever need to support a different 213 213 demod) */ 214 214 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 215 - NULL, "au8522", 0x8e >> 1, NULL); 215 + "au8522", 0x8e >> 1, NULL); 216 216 if (sd == NULL) 217 217 printk(KERN_ERR "analog subdev registration failed\n"); 218 218 } ··· 221 221 if (dev->board.tuner_type != TUNER_ABSENT) { 222 222 /* Load the tuner module, which does the attach */ 223 223 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 224 - NULL, "tuner", dev->board.tuner_addr, NULL); 224 + "tuner", dev->board.tuner_addr, NULL); 225 225 if (sd == NULL) 226 226 printk(KERN_ERR "tuner subdev registration fail\n"); 227 227
+11 -11
drivers/media/video/bt8xx/bttv-cards.c
··· 3529 3529 struct v4l2_subdev *sd; 3530 3530 3531 3531 sd = v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3532 - &btv->c.i2c_adap, NULL, "saa6588", 0, addrs); 3532 + &btv->c.i2c_adap, "saa6588", 0, addrs); 3533 3533 btv->has_saa6588 = (sd != NULL); 3534 3534 } 3535 3535 ··· 3554 3554 }; 3555 3555 3556 3556 btv->sd_msp34xx = v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3557 - &btv->c.i2c_adap, NULL, "msp3400", 0, addrs); 3557 + &btv->c.i2c_adap, "msp3400", 0, addrs); 3558 3558 if (btv->sd_msp34xx) 3559 3559 return; 3560 3560 goto no_audio; ··· 3568 3568 }; 3569 3569 3570 3570 if (v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3571 - &btv->c.i2c_adap, NULL, "tda7432", 0, addrs)) 3571 + &btv->c.i2c_adap, "tda7432", 0, addrs)) 3572 3572 return; 3573 3573 goto no_audio; 3574 3574 } ··· 3576 3576 case 3: { 3577 3577 /* The user specified that we should probe for tvaudio */ 3578 3578 btv->sd_tvaudio = v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3579 - &btv->c.i2c_adap, NULL, "tvaudio", 0, tvaudio_addrs()); 3579 + &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); 3580 3580 if (btv->sd_tvaudio) 3581 3581 return; 3582 3582 goto no_audio; ··· 3596 3596 found is really something else (e.g. a tea6300). */ 3597 3597 if (!bttv_tvcards[btv->c.type].no_msp34xx) { 3598 3598 btv->sd_msp34xx = v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3599 - &btv->c.i2c_adap, NULL, "msp3400", 3599 + &btv->c.i2c_adap, "msp3400", 3600 3600 0, I2C_ADDRS(I2C_ADDR_MSP3400 >> 1)); 3601 3601 } else if (bttv_tvcards[btv->c.type].msp34xx_alt) { 3602 3602 btv->sd_msp34xx = v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3603 - &btv->c.i2c_adap, NULL, "msp3400", 3603 + &btv->c.i2c_adap, "msp3400", 3604 3604 0, I2C_ADDRS(I2C_ADDR_MSP3400_ALT >> 1)); 3605 3605 } 3606 3606 ··· 3616 3616 }; 3617 3617 3618 3618 if (v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3619 - &btv->c.i2c_adap, NULL, "tda7432", 0, addrs)) 3619 + &btv->c.i2c_adap, "tda7432", 0, addrs)) 3620 3620 return; 3621 3621 } 3622 3622 3623 3623 /* Now see if we can find one of the tvaudio devices. */ 3624 3624 btv->sd_tvaudio = v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3625 - &btv->c.i2c_adap, NULL, "tvaudio", 0, tvaudio_addrs()); 3625 + &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs()); 3626 3626 if (btv->sd_tvaudio) 3627 3627 return; 3628 3628 ··· 3646 3646 /* Load tuner module before issuing tuner config call! */ 3647 3647 if (bttv_tvcards[btv->c.type].has_radio) 3648 3648 v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3649 - &btv->c.i2c_adap, NULL, "tuner", 3649 + &btv->c.i2c_adap, "tuner", 3650 3650 0, v4l2_i2c_tuner_addrs(ADDRS_RADIO)); 3651 3651 v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3652 - &btv->c.i2c_adap, NULL, "tuner", 3652 + &btv->c.i2c_adap, "tuner", 3653 3653 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); 3654 3654 v4l2_i2c_new_subdev(&btv->c.v4l2_dev, 3655 - &btv->c.i2c_adap, NULL, "tuner", 3655 + &btv->c.i2c_adap, "tuner", 3656 3656 0, v4l2_i2c_tuner_addrs(ADDRS_TV_WITH_DEMOD)); 3657 3657 3658 3658 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
+1 -2
drivers/media/video/cafe_ccic.c
··· 2066 2066 2067 2067 cam->sensor_addr = 0x42; 2068 2068 cam->sensor = v4l2_i2c_new_subdev_cfg(&cam->v4l2_dev, &cam->i2c_adapter, 2069 - "ov7670", "ov7670", 0, &sensor_cfg, cam->sensor_addr, 2070 - NULL); 2069 + "ov7670", 0, &sensor_cfg, cam->sensor_addr, NULL); 2071 2070 if (cam->sensor == NULL) { 2072 2071 ret = -ENODEV; 2073 2072 goto out_smbus;
+4 -4
drivers/media/video/cx18/cx18-i2c.c
··· 122 122 if (hw == CX18_HW_TUNER) { 123 123 /* special tuner group handling */ 124 124 sd = v4l2_i2c_new_subdev(&cx->v4l2_dev, 125 - adap, NULL, type, 0, cx->card_i2c->radio); 125 + adap, type, 0, cx->card_i2c->radio); 126 126 if (sd != NULL) 127 127 sd->grp_id = hw; 128 128 sd = v4l2_i2c_new_subdev(&cx->v4l2_dev, 129 - adap, NULL, type, 0, cx->card_i2c->demod); 129 + adap, type, 0, cx->card_i2c->demod); 130 130 if (sd != NULL) 131 131 sd->grp_id = hw; 132 132 sd = v4l2_i2c_new_subdev(&cx->v4l2_dev, 133 - adap, NULL, type, 0, cx->card_i2c->tv); 133 + adap, type, 0, cx->card_i2c->tv); 134 134 if (sd != NULL) 135 135 sd->grp_id = hw; 136 136 return sd != NULL ? 0 : -1; ··· 144 144 return -1; 145 145 146 146 /* It's an I2C device other than an analog tuner or IR chip */ 147 - sd = v4l2_i2c_new_subdev(&cx->v4l2_dev, adap, NULL, type, hw_addrs[idx], 147 + sd = v4l2_i2c_new_subdev(&cx->v4l2_dev, adap, type, hw_addrs[idx], 148 148 NULL); 149 149 if (sd != NULL) 150 150 sd->grp_id = hw;
+2 -2
drivers/media/video/cx231xx/cx231xx-cards.c
··· 560 560 if (dev->board.decoder == CX231XX_AVDECODER) { 561 561 dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, 562 562 &dev->i2c_bus[0].i2c_adap, 563 - NULL, "cx25840", 0x88 >> 1, NULL); 563 + "cx25840", 0x88 >> 1, NULL); 564 564 if (dev->sd_cx25840 == NULL) 565 565 cx231xx_info("cx25840 subdev registration failure\n"); 566 566 cx25840_call(dev, core, load_fw); ··· 571 571 if (dev->board.tuner_type != TUNER_ABSENT) { 572 572 dev->sd_tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, 573 573 &dev->i2c_bus[dev->board.tuner_i2c_master].i2c_adap, 574 - NULL, "tuner", 574 + "tuner", 575 575 dev->tuner_addr, NULL); 576 576 if (dev->sd_tuner == NULL) 577 577 cx231xx_info("tuner subdev registration failure\n");
+1 -1
drivers/media/video/cx23885/cx23885-cards.c
··· 1247 1247 case CX23885_BOARD_LEADTEK_WINFAST_PXTV1200: 1248 1248 dev->sd_cx25840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, 1249 1249 &dev->i2c_bus[2].i2c_adap, 1250 - NULL, "cx25840", 0x88 >> 1, NULL); 1250 + "cx25840", 0x88 >> 1, NULL); 1251 1251 if (dev->sd_cx25840) { 1252 1252 dev->sd_cx25840->grp_id = CX23885_HW_AV_CORE; 1253 1253 v4l2_subdev_call(dev->sd_cx25840, core, load_fw);
+2 -2
drivers/media/video/cx23885/cx23885-video.c
··· 1507 1507 if (dev->tuner_addr) 1508 1508 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, 1509 1509 &dev->i2c_bus[1].i2c_adap, 1510 - NULL, "tuner", dev->tuner_addr, NULL); 1510 + "tuner", dev->tuner_addr, NULL); 1511 1511 else 1512 1512 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, 1513 - &dev->i2c_bus[1].i2c_adap, NULL, 1513 + &dev->i2c_bus[1].i2c_adap, 1514 1514 "tuner", 0, v4l2_i2c_tuner_addrs(ADDRS_TV)); 1515 1515 if (sd) { 1516 1516 struct tuner_setup tun_setup;
+4 -5
drivers/media/video/cx88/cx88-cards.c
··· 3515 3515 later code configures a tea5767. 3516 3516 */ 3517 3517 v4l2_i2c_new_subdev(&core->v4l2_dev, &core->i2c_adap, 3518 - NULL, "tuner", 3519 - 0, v4l2_i2c_tuner_addrs(ADDRS_RADIO)); 3518 + "tuner", 0, v4l2_i2c_tuner_addrs(ADDRS_RADIO)); 3520 3519 if (has_demod) 3521 3520 v4l2_i2c_new_subdev(&core->v4l2_dev, 3522 - &core->i2c_adap, NULL, "tuner", 3521 + &core->i2c_adap, "tuner", 3523 3522 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); 3524 3523 if (core->board.tuner_addr == ADDR_UNSET) { 3525 3524 v4l2_i2c_new_subdev(&core->v4l2_dev, 3526 - &core->i2c_adap, NULL, "tuner", 3525 + &core->i2c_adap, "tuner", 3527 3526 0, has_demod ? tv_addrs + 4 : tv_addrs); 3528 3527 } else { 3529 3528 v4l2_i2c_new_subdev(&core->v4l2_dev, &core->i2c_adap, 3530 - NULL, "tuner", core->board.tuner_addr, NULL); 3529 + "tuner", core->board.tuner_addr, NULL); 3531 3530 } 3532 3531 } 3533 3532
+3 -4
drivers/media/video/cx88/cx88-video.c
··· 1895 1895 1896 1896 if (core->board.audio_chip == V4L2_IDENT_WM8775) 1897 1897 v4l2_i2c_new_subdev(&core->v4l2_dev, &core->i2c_adap, 1898 - NULL, "wm8775", 0x36 >> 1, NULL); 1898 + "wm8775", 0x36 >> 1, NULL); 1899 1899 1900 1900 if (core->board.audio_chip == V4L2_IDENT_TVAUDIO) { 1901 1901 /* This probes for a tda9874 as is used on some 1902 1902 Pixelview Ultra boards. */ 1903 - v4l2_i2c_new_subdev(&core->v4l2_dev, 1904 - &core->i2c_adap, 1905 - NULL, "tvaudio", 0, I2C_ADDRS(0xb0 >> 1)); 1903 + v4l2_i2c_new_subdev(&core->v4l2_dev, &core->i2c_adap, 1904 + "tvaudio", 0, I2C_ADDRS(0xb0 >> 1)); 1906 1905 } 1907 1906 1908 1907 switch (core->boardnr) {
-1
drivers/media/video/davinci/vpfe_capture.c
··· 1986 1986 vpfe_dev->sd[i] = 1987 1987 v4l2_i2c_new_subdev_board(&vpfe_dev->v4l2_dev, 1988 1988 i2c_adap, 1989 - NULL, 1990 1989 &sdinfo->board_info, 1991 1990 NULL); 1992 1991 if (vpfe_dev->sd[i]) {
-1
drivers/media/video/davinci/vpif_capture.c
··· 2013 2013 vpif_obj.sd[i] = 2014 2014 v4l2_i2c_new_subdev_board(&vpif_obj.v4l2_dev, 2015 2015 i2c_adap, 2016 - NULL, 2017 2016 &subdevdata->board_info, 2018 2017 NULL); 2019 2018
+1 -1
drivers/media/video/davinci/vpif_display.c
··· 1553 1553 1554 1554 for (i = 0; i < subdev_count; i++) { 1555 1555 vpif_obj.sd[i] = v4l2_i2c_new_subdev_board(&vpif_obj.v4l2_dev, 1556 - i2c_adap, NULL, 1556 + i2c_adap, 1557 1557 &subdevdata[i].board_info, 1558 1558 NULL); 1559 1559 if (!vpif_obj.sd[i]) {
+9 -9
drivers/media/video/em28xx/em28xx-cards.c
··· 2554 2554 /* request some modules */ 2555 2555 if (dev->board.has_msp34xx) 2556 2556 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 2557 - NULL, "msp3400", 0, msp3400_addrs); 2557 + "msp3400", 0, msp3400_addrs); 2558 2558 2559 2559 if (dev->board.decoder == EM28XX_SAA711X) 2560 2560 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 2561 - NULL, "saa7115_auto", 0, saa711x_addrs); 2561 + "saa7115_auto", 0, saa711x_addrs); 2562 2562 2563 2563 if (dev->board.decoder == EM28XX_TVP5150) 2564 2564 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 2565 - NULL, "tvp5150", 0, tvp5150_addrs); 2565 + "tvp5150", 0, tvp5150_addrs); 2566 2566 2567 2567 if (dev->em28xx_sensor == EM28XX_MT9V011) { 2568 2568 struct v4l2_subdev *sd; 2569 2569 2570 2570 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, 2571 - &dev->i2c_adap, NULL, "mt9v011", 0, mt9v011_addrs); 2571 + &dev->i2c_adap, "mt9v011", 0, mt9v011_addrs); 2572 2572 v4l2_subdev_call(sd, core, s_config, 0, &dev->sensor_xtal); 2573 2573 } 2574 2574 2575 2575 2576 2576 if (dev->board.adecoder == EM28XX_TVAUDIO) 2577 2577 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 2578 - NULL, "tvaudio", dev->board.tvaudio_addr, NULL); 2578 + "tvaudio", dev->board.tvaudio_addr, NULL); 2579 2579 2580 2580 if (dev->board.tuner_type != TUNER_ABSENT) { 2581 2581 int has_demod = (dev->tda9887_conf & TDA9887_PRESENT); 2582 2582 2583 2583 if (dev->board.radio.type) 2584 2584 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 2585 - NULL, "tuner", dev->board.radio_addr, NULL); 2585 + "tuner", dev->board.radio_addr, NULL); 2586 2586 2587 2587 if (has_demod) 2588 2588 v4l2_i2c_new_subdev(&dev->v4l2_dev, 2589 - &dev->i2c_adap, NULL, "tuner", 2589 + &dev->i2c_adap, "tuner", 2590 2590 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); 2591 2591 if (dev->tuner_addr == 0) { 2592 2592 enum v4l2_i2c_tuner_type type = ··· 2594 2594 struct v4l2_subdev *sd; 2595 2595 2596 2596 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, 2597 - &dev->i2c_adap, NULL, "tuner", 2597 + &dev->i2c_adap, "tuner", 2598 2598 0, v4l2_i2c_tuner_addrs(type)); 2599 2599 2600 2600 if (sd) 2601 2601 dev->tuner_addr = v4l2_i2c_subdev_addr(sd); 2602 2602 } else { 2603 2603 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 2604 - NULL, "tuner", dev->tuner_addr, NULL); 2604 + "tuner", dev->tuner_addr, NULL); 2605 2605 } 2606 2606 } 2607 2607
+1 -1
drivers/media/video/fsl-viu.c
··· 1486 1486 1487 1487 ad = i2c_get_adapter(0); 1488 1488 viu_dev->decoder = v4l2_i2c_new_subdev(&viu_dev->v4l2_dev, ad, 1489 - NULL, "saa7113", VIU_VIDEO_DECODER_ADDR, NULL); 1489 + "saa7113", VIU_VIDEO_DECODER_ADDR, NULL); 1490 1490 1491 1491 viu_dev->vidq.timeout.function = viu_vid_timeout; 1492 1492 viu_dev->vidq.timeout.data = (unsigned long)viu_dev;
+9 -13
drivers/media/video/ivtv/ivtv-i2c.c
··· 239 239 return -1; 240 240 if (hw == IVTV_HW_TUNER) { 241 241 /* special tuner handling */ 242 - sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, 243 - adap, NULL, type, 244 - 0, itv->card_i2c->radio); 242 + sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, 243 + itv->card_i2c->radio); 245 244 if (sd) 246 245 sd->grp_id = 1 << idx; 247 - sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, 248 - adap, NULL, type, 249 - 0, itv->card_i2c->demod); 246 + sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, 247 + itv->card_i2c->demod); 250 248 if (sd) 251 249 sd->grp_id = 1 << idx; 252 - sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, 253 - adap, NULL, type, 254 - 0, itv->card_i2c->tv); 250 + sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, adap, type, 0, 251 + itv->card_i2c->tv); 255 252 if (sd) 256 253 sd->grp_id = 1 << idx; 257 254 return sd ? 0 : -1; ··· 264 267 /* It's an I2C device other than an analog tuner or IR chip */ 265 268 if (hw == IVTV_HW_UPD64031A || hw == IVTV_HW_UPD6408X) { 266 269 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, 267 - adap, NULL, type, 0, I2C_ADDRS(hw_addrs[idx])); 270 + adap, type, 0, I2C_ADDRS(hw_addrs[idx])); 268 271 } else if (hw == IVTV_HW_CX25840) { 269 272 struct cx25840_platform_data pdata; 270 273 271 274 pdata.pvr150_workaround = itv->pvr150_workaround; 272 275 sd = v4l2_i2c_new_subdev_cfg(&itv->v4l2_dev, 273 - adap, NULL, type, 0, &pdata, hw_addrs[idx], 274 - NULL); 276 + adap, type, 0, &pdata, hw_addrs[idx], NULL); 275 277 } else { 276 278 sd = v4l2_i2c_new_subdev(&itv->v4l2_dev, 277 - adap, NULL, type, hw_addrs[idx], NULL); 279 + adap, type, hw_addrs[idx], NULL); 278 280 } 279 281 if (sd) 280 282 sd->grp_id = 1 << idx;
+6 -6
drivers/media/video/mxb.c
··· 185 185 } 186 186 187 187 mxb->saa7111a = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, 188 - NULL, "saa7111", I2C_SAA7111A, NULL); 188 + "saa7111", I2C_SAA7111A, NULL); 189 189 mxb->tea6420_1 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, 190 - NULL, "tea6420", I2C_TEA6420_1, NULL); 190 + "tea6420", I2C_TEA6420_1, NULL); 191 191 mxb->tea6420_2 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, 192 - NULL, "tea6420", I2C_TEA6420_2, NULL); 192 + "tea6420", I2C_TEA6420_2, NULL); 193 193 mxb->tea6415c = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, 194 - NULL, "tea6415c", I2C_TEA6415C, NULL); 194 + "tea6415c", I2C_TEA6415C, NULL); 195 195 mxb->tda9840 = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, 196 - NULL, "tda9840", I2C_TDA9840, NULL); 196 + "tda9840", I2C_TDA9840, NULL); 197 197 mxb->tuner = v4l2_i2c_new_subdev(&dev->v4l2_dev, &mxb->i2c_adapter, 198 - NULL, "tuner", I2C_TUNER, NULL); 198 + "tuner", I2C_TUNER, NULL); 199 199 200 200 /* check if all devices are present */ 201 201 if (!mxb->tea6420_1 || !mxb->tea6420_2 || !mxb->tea6415c ||
+2 -4
drivers/media/video/pvrusb2/pvrusb2-hdw.c
··· 2088 2088 " Setting up with specified i2c address 0x%x", 2089 2089 mid, i2caddr[0]); 2090 2090 sd = v4l2_i2c_new_subdev(&hdw->v4l2_dev, &hdw->i2c_adap, 2091 - NULL, fname, 2092 - i2caddr[0], NULL); 2091 + fname, i2caddr[0], NULL); 2093 2092 } else { 2094 2093 pvr2_trace(PVR2_TRACE_INIT, 2095 2094 "Module ID %u:" 2096 2095 " Setting up with address probe list", 2097 2096 mid); 2098 2097 sd = v4l2_i2c_new_subdev(&hdw->v4l2_dev, &hdw->i2c_adap, 2099 - NULL, fname, 2100 - 0, i2caddr); 2098 + fname, 0, i2caddr); 2101 2099 } 2102 2100 2103 2101 if (!sd) {
+1 -1
drivers/media/video/s5p-fimc/fimc-capture.c
··· 44 44 return ERR_PTR(-ENOMEM); 45 45 46 46 sd = v4l2_i2c_new_subdev_board(&vid_cap->v4l2_dev, i2c_adap, 47 - MODULE_NAME, isp_info->board_info, NULL); 47 + isp_info->board_info, NULL); 48 48 if (!sd) { 49 49 v4l2_err(&vid_cap->v4l2_dev, "failed to acquire subdev\n"); 50 50 return NULL;
+4 -4
drivers/media/video/saa7134/saa7134-cards.c
··· 7551 7551 so we do not need to probe for a radio tuner device. */ 7552 7552 if (dev->radio_type != UNSET) 7553 7553 v4l2_i2c_new_subdev(&dev->v4l2_dev, 7554 - &dev->i2c_adap, NULL, "tuner", 7554 + &dev->i2c_adap, "tuner", 7555 7555 dev->radio_addr, NULL); 7556 7556 if (has_demod) 7557 7557 v4l2_i2c_new_subdev(&dev->v4l2_dev, 7558 - &dev->i2c_adap, NULL, "tuner", 7558 + &dev->i2c_adap, "tuner", 7559 7559 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); 7560 7560 if (dev->tuner_addr == ADDR_UNSET) { 7561 7561 enum v4l2_i2c_tuner_type type = 7562 7562 has_demod ? ADDRS_TV_WITH_DEMOD : ADDRS_TV; 7563 7563 7564 7564 v4l2_i2c_new_subdev(&dev->v4l2_dev, 7565 - &dev->i2c_adap, NULL, "tuner", 7565 + &dev->i2c_adap, "tuner", 7566 7566 0, v4l2_i2c_tuner_addrs(type)); 7567 7567 } else { 7568 7568 v4l2_i2c_new_subdev(&dev->v4l2_dev, 7569 - &dev->i2c_adap, NULL, "tuner", 7569 + &dev->i2c_adap, "tuner", 7570 7570 dev->tuner_addr, NULL); 7571 7571 } 7572 7572 }
+2 -2
drivers/media/video/saa7134/saa7134-core.c
··· 991 991 if (card_is_empress(dev)) { 992 992 struct v4l2_subdev *sd = 993 993 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 994 - NULL, "saa6752hs", 994 + "saa6752hs", 995 995 saa7134_boards[dev->board].empress_addr, NULL); 996 996 997 997 if (sd) ··· 1002 1002 struct v4l2_subdev *sd; 1003 1003 1004 1004 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, 1005 - &dev->i2c_adap, NULL, "saa6588", 1005 + &dev->i2c_adap, "saa6588", 1006 1006 0, I2C_ADDRS(saa7134_boards[dev->board].rds_addr)); 1007 1007 if (sd) { 1008 1008 printk(KERN_INFO "%s: found RDS decoder\n", dev->name);
+1 -1
drivers/media/video/sh_vou.c
··· 1406 1406 goto ereset; 1407 1407 1408 1408 subdev = v4l2_i2c_new_subdev_board(&vou_dev->v4l2_dev, i2c_adap, 1409 - NULL, vou_pdata->board_info, NULL); 1409 + vou_pdata->board_info, NULL); 1410 1410 if (!subdev) { 1411 1411 ret = -ENOMEM; 1412 1412 goto ei2cnd;
+1 -1
drivers/media/video/soc_camera.c
··· 896 896 icl->board_info->platform_data = icd; 897 897 898 898 subdev = v4l2_i2c_new_subdev_board(&ici->v4l2_dev, adap, 899 - NULL, icl->board_info, NULL); 899 + icl->board_info, NULL); 900 900 if (!subdev) 901 901 goto ei2cnd; 902 902
+3 -3
drivers/media/video/usbvision/usbvision-i2c.c
··· 251 251 hit-and-miss. */ 252 252 mdelay(10); 253 253 v4l2_i2c_new_subdev(&usbvision->v4l2_dev, 254 - &usbvision->i2c_adap, NULL, 254 + &usbvision->i2c_adap, 255 255 "saa7115_auto", 0, saa711x_addrs); 256 256 break; 257 257 } ··· 261 261 struct tuner_setup tun_setup; 262 262 263 263 sd = v4l2_i2c_new_subdev(&usbvision->v4l2_dev, 264 - &usbvision->i2c_adap, NULL, 264 + &usbvision->i2c_adap, 265 265 "tuner", 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD)); 266 266 /* depending on whether we found a demod or not, select 267 267 the tuner type. */ 268 268 type = sd ? ADDRS_TV_WITH_DEMOD : ADDRS_TV; 269 269 270 270 sd = v4l2_i2c_new_subdev(&usbvision->v4l2_dev, 271 - &usbvision->i2c_adap, NULL, 271 + &usbvision->i2c_adap, 272 272 "tuner", 0, v4l2_i2c_tuner_addrs(type)); 273 273 274 274 if (sd == NULL)
+5 -10
drivers/media/video/v4l2-common.c
··· 368 368 369 369 /* Load an i2c sub-device. */ 370 370 struct v4l2_subdev *v4l2_i2c_new_subdev_board(struct v4l2_device *v4l2_dev, 371 - struct i2c_adapter *adapter, const char *module_name, 372 - struct i2c_board_info *info, const unsigned short *probe_addrs) 371 + struct i2c_adapter *adapter, struct i2c_board_info *info, 372 + const unsigned short *probe_addrs) 373 373 { 374 374 struct v4l2_subdev *sd = NULL; 375 375 struct i2c_client *client; 376 376 377 377 BUG_ON(!v4l2_dev); 378 378 379 - if (module_name) 380 - request_module(module_name); 381 - else 382 - request_module(I2C_MODULE_PREFIX "%s", info->type); 379 + request_module(I2C_MODULE_PREFIX "%s", info->type); 383 380 384 381 /* Create the i2c client */ 385 382 if (info->addr == 0 && probe_addrs) ··· 429 432 EXPORT_SYMBOL_GPL(v4l2_i2c_new_subdev_board); 430 433 431 434 struct v4l2_subdev *v4l2_i2c_new_subdev_cfg(struct v4l2_device *v4l2_dev, 432 - struct i2c_adapter *adapter, 433 - const char *module_name, const char *client_type, 435 + struct i2c_adapter *adapter, const char *client_type, 434 436 int irq, void *platform_data, 435 437 u8 addr, const unsigned short *probe_addrs) 436 438 { ··· 443 447 info.irq = irq; 444 448 info.platform_data = platform_data; 445 449 446 - return v4l2_i2c_new_subdev_board(v4l2_dev, adapter, module_name, 447 - &info, probe_addrs); 450 + return v4l2_i2c_new_subdev_board(v4l2_dev, adapter, &info, probe_addrs); 448 451 } 449 452 EXPORT_SYMBOL_GPL(v4l2_i2c_new_subdev_cfg); 450 453
+1 -1
drivers/media/video/via-camera.c
··· 1360 1360 */ 1361 1361 sensor_adapter = viafb_find_i2c_adapter(VIA_PORT_31); 1362 1362 cam->sensor = v4l2_i2c_new_subdev(&cam->v4l2_dev, sensor_adapter, 1363 - "ov7670", "ov7670", 0x42 >> 1, NULL); 1363 + "ov7670", 0x42 >> 1, NULL); 1364 1364 if (cam->sensor == NULL) { 1365 1365 dev_err(&pdev->dev, "Unable to find the sensor!\n"); 1366 1366 ret = -ENODEV;
+2 -2
drivers/media/video/vino.c
··· 4334 4334 4335 4335 vino_drvdata->decoder = 4336 4336 v4l2_i2c_new_subdev(&vino_drvdata->v4l2_dev, &vino_i2c_adapter, 4337 - NULL, "saa7191", 0, I2C_ADDRS(0x45)); 4337 + "saa7191", 0, I2C_ADDRS(0x45)); 4338 4338 vino_drvdata->camera = 4339 4339 v4l2_i2c_new_subdev(&vino_drvdata->v4l2_dev, &vino_i2c_adapter, 4340 - NULL, "indycam", 0, I2C_ADDRS(0x2b)); 4340 + "indycam", 0, I2C_ADDRS(0x2b)); 4341 4341 4342 4342 dprintk("init complete!\n"); 4343 4343
+2 -3
drivers/media/video/zoran/zoran_card.c
··· 1343 1343 } 1344 1344 1345 1345 zr->decoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, 1346 - &zr->i2c_adapter, NULL, zr->card.i2c_decoder, 1346 + &zr->i2c_adapter, zr->card.i2c_decoder, 1347 1347 0, zr->card.addrs_decoder); 1348 1348 1349 1349 if (zr->card.i2c_encoder) 1350 1350 zr->encoder = v4l2_i2c_new_subdev(&zr->v4l2_dev, 1351 - &zr->i2c_adapter, 1352 - NULL, zr->card.i2c_encoder, 1351 + &zr->i2c_adapter, zr->card.i2c_encoder, 1353 1352 0, zr->card.addrs_encoder); 1354 1353 1355 1354 dprintk(2,
+25 -12
drivers/mtd/ubi/io.c
··· 482 482 uint32_t data = 0; 483 483 struct ubi_vid_hdr vid_hdr; 484 484 485 - addr = (loff_t)pnum * ubi->peb_size + ubi->vid_hdr_aloffset; 485 + /* 486 + * It is important to first invalidate the EC header, and then the VID 487 + * header. Otherwise a power cut may lead to valid EC header and 488 + * invalid VID header, in which case UBI will treat this PEB as 489 + * corrupted and will try to preserve it, and print scary warnings (see 490 + * the header comment in scan.c for more information). 491 + */ 492 + addr = (loff_t)pnum * ubi->peb_size; 486 493 err = ubi->mtd->write(ubi->mtd, addr, 4, &written, (void *)&data); 487 494 if (!err) { 488 - addr -= ubi->vid_hdr_aloffset; 495 + addr += ubi->vid_hdr_aloffset; 489 496 err = ubi->mtd->write(ubi->mtd, addr, 4, &written, 490 497 (void *)&data); 491 498 if (!err) ··· 501 494 502 495 /* 503 496 * We failed to write to the media. This was observed with Spansion 504 - * S29GL512N NOR flash. Most probably the eraseblock erasure was 505 - * interrupted at a very inappropriate moment, so it became unwritable. 506 - * In this case we probably anyway have garbage in this PEB. 497 + * S29GL512N NOR flash. Most probably the previously eraseblock erasure 498 + * was interrupted at a very inappropriate moment, so it became 499 + * unwritable. In this case we probably anyway have garbage in this 500 + * PEB. 507 501 */ 508 502 err1 = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0); 509 - if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR) 510 - /* 511 - * The VID header is corrupted, so we can safely erase this 512 - * PEB and not afraid that it will be treated as a valid PEB in 513 - * case of an unclean reboot. 514 - */ 515 - return 0; 503 + if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR) { 504 + struct ubi_ec_hdr ec_hdr; 505 + 506 + err1 = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0); 507 + if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR) 508 + /* 509 + * Both VID and EC headers are corrupted, so we can 510 + * safely erase this PEB and not afraid that it will be 511 + * treated as a valid PEB in case of an unclean reboot. 512 + */ 513 + return 0; 514 + } 516 515 517 516 /* 518 517 * The PEB contains a valid VID header, but we cannot invalidate it.
+4
drivers/mtd/ubi/scan.c
··· 953 953 * impossible to distinguish it from a PEB which just 954 954 * contains garbage because of a power cut during erase 955 955 * operation. So we just schedule this PEB for erasure. 956 + * 957 + * Besides, in case of NOR flash, we deliberatly 958 + * corrupt both headers because NOR flash erasure is 959 + * slow and can start from the end. 956 960 */ 957 961 err = 0; 958 962 else
+4
drivers/net/mlx4/fw.c
··· 289 289 MLX4_GET(field, outbox, QUERY_DEV_CAP_LOG_BF_REG_SZ_OFFSET); 290 290 dev_cap->bf_reg_size = 1 << (field & 0x1f); 291 291 MLX4_GET(field, outbox, QUERY_DEV_CAP_LOG_MAX_BF_REGS_PER_PAGE_OFFSET); 292 + if ((1 << (field & 0x3f)) > (PAGE_SIZE / dev_cap->bf_reg_size)) { 293 + mlx4_warn(dev, "firmware bug: log2 # of blue flame regs is invalid (%d), forcing 3\n", field & 0x1f); 294 + field = 3; 295 + } 292 296 dev_cap->bf_regs_per_page = 1 << (field & 0x3f); 293 297 mlx4_dbg(dev, "BlueFlame available (reg size %d, regs/page %d)\n", 294 298 dev_cap->bf_reg_size, dev_cap->bf_regs_per_page);
+1 -1
drivers/net/wan/x25_asy.c
··· 577 577 if (err) 578 578 return err; 579 579 /* Done. We have linked the TTY line to a channel. */ 580 - return sl->dev->base_addr; 580 + return 0; 581 581 } 582 582 583 583
-1
drivers/parisc/dino.c
··· 349 349 .name = "GSC-PCI", 350 350 .unmask = dino_unmask_irq, 351 351 .mask = dino_mask_irq, 352 - .ack = no_ack_irq, 353 352 }; 354 353 355 354
+1 -2
drivers/parisc/eisa.c
··· 186 186 .name = "EISA", 187 187 .unmask = eisa_unmask_irq, 188 188 .mask = eisa_mask_irq, 189 - .ack = no_ack_irq, 190 189 }; 191 190 192 191 static irqreturn_t eisa_irq(int wax_irq, void *intr_dev) ··· 339 340 setup_irq(2, &irq2_action); 340 341 for (i = 0; i < 16; i++) { 341 342 set_irq_chip_and_handler(i, &eisa_interrupt_type, 342 - handle_level_irq); 343 + handle_simple_irq); 343 344 } 344 345 345 346 EISA_bus = 1;
+1 -2
drivers/parisc/gsc.c
··· 143 143 .name = "GSC-ASIC", 144 144 .unmask = gsc_asic_unmask_irq, 145 145 .mask = gsc_asic_mask_irq, 146 - .ack = no_ack_irq, 147 146 }; 148 147 149 148 int gsc_assign_irq(struct irq_chip *type, void *data) ··· 152 153 if (irq > GSC_IRQ_MAX) 153 154 return NO_IRQ; 154 155 155 - set_irq_chip_and_handler(irq, type, handle_level_irq); 156 + set_irq_chip_and_handler(irq, type, handle_simple_irq); 156 157 set_irq_chip_data(irq, data); 157 158 158 159 return irq++;
+8
drivers/parisc/iosapic.c
··· 669 669 DBG(KERN_DEBUG "enable_irq(%d): eoi(%p, 0x%x)\n", irq, 670 670 vi->eoi_addr, vi->eoi_data); 671 671 iosapic_eoi(vi->eoi_addr, vi->eoi_data); 672 + } 673 + 674 + static void iosapic_eoi_irq(unsigned int irq) 675 + { 676 + struct vector_info *vi = get_irq_chip_data(irq); 677 + 678 + iosapic_eoi(vi->eoi_addr, vi->eoi_data); 672 679 cpu_eoi_irq(irq); 673 680 } 674 681 ··· 712 705 .unmask = iosapic_unmask_irq, 713 706 .mask = iosapic_mask_irq, 714 707 .ack = cpu_ack_irq, 708 + .eoi = iosapic_eoi_irq, 715 709 #ifdef CONFIG_SMP 716 710 .set_affinity = iosapic_set_affinity_irq, 717 711 #endif
+13 -4
drivers/parisc/led.c
··· 64 64 static unsigned int led_lanrxtx __read_mostly = 1; 65 65 static char lcd_text[32] __read_mostly; 66 66 static char lcd_text_default[32] __read_mostly; 67 + static int lcd_no_led_support __read_mostly = 0; /* KittyHawk doesn't support LED on its LCD */ 67 68 68 69 69 70 static struct workqueue_struct *led_wq; ··· 116 115 .lcd_width = 16, 117 116 .lcd_cmd_reg_addr = KITTYHAWK_LCD_CMD, 118 117 .lcd_data_reg_addr = KITTYHAWK_LCD_DATA, 119 - .min_cmd_delay = 40, 118 + .min_cmd_delay = 80, 120 119 .reset_cmd1 = 0x80, 121 120 .reset_cmd2 = 0xc0, 122 121 }; ··· 135 134 { 136 135 /* Display the default text now */ 137 136 if (led_type == LED_HASLCD) lcd_print( lcd_text_default ); 137 + 138 + /* KittyHawk has no LED support on its LCD */ 139 + if (lcd_no_led_support) return 0; 138 140 139 141 /* Create the work queue and queue the LED task */ 140 142 led_wq = create_singlethread_workqueue("led_wq"); ··· 252 248 253 249 proc_pdc_root = proc_mkdir("pdc", 0); 254 250 if (!proc_pdc_root) return -1; 255 - ent = proc_create_data("led", S_IRUGO|S_IWUSR, proc_pdc_root, 256 - &led_proc_fops, (void *)LED_NOLCD); /* LED */ 257 - if (!ent) return -1; 251 + 252 + if (!lcd_no_led_support) 253 + { 254 + ent = proc_create_data("led", S_IRUGO|S_IWUSR, proc_pdc_root, 255 + &led_proc_fops, (void *)LED_NOLCD); /* LED */ 256 + if (!ent) return -1; 257 + } 258 258 259 259 if (led_type == LED_HASLCD) 260 260 { ··· 700 692 case 0x58B: /* KittyHawk DC2 100 (K200) */ 701 693 printk(KERN_INFO "%s: KittyHawk-Machine (hversion 0x%x) found, " 702 694 "LED detection skipped.\n", __FILE__, CPU_HVERSION); 695 + lcd_no_led_support = 1; 703 696 goto found; /* use the preinitialized values of lcd_info */ 704 697 } 705 698
+1 -2
drivers/parisc/superio.c
··· 323 323 .name = SUPERIO, 324 324 .unmask = superio_unmask_irq, 325 325 .mask = superio_mask_irq, 326 - .ack = no_ack_irq, 327 326 }; 328 327 329 328 #ifdef DEBUG_SUPERIO_INIT ··· 353 354 #endif 354 355 355 356 for (i = 0; i < 16; i++) { 356 - set_irq_chip_and_handler(i, &superio_interrupt_type, handle_level_irq); 357 + set_irq_chip_and_handler(i, &superio_interrupt_type, handle_simple_irq); 357 358 } 358 359 359 360 /*
+1
drivers/pcmcia/soc_common.c
··· 70 70 va_end(args); 71 71 } 72 72 } 73 + EXPORT_SYMBOL(soc_pcmcia_debug); 73 74 74 75 #endif 75 76
+1 -1
drivers/pnp/pnpacpi/core.c
··· 180 180 }; 181 181 EXPORT_SYMBOL(pnpacpi_protocol); 182 182 183 - static char *pnpacpi_get_id(struct acpi_device *device) 183 + static char *__init pnpacpi_get_id(struct acpi_device *device) 184 184 { 185 185 struct acpi_hardware_id *id; 186 186
+19 -11
drivers/regulator/core.c
··· 911 911 } 912 912 913 913 /** 914 - * set_consumer_device_supply: Bind a regulator to a symbolic supply 914 + * set_consumer_device_supply - Bind a regulator to a symbolic supply 915 915 * @rdev: regulator source 916 916 * @consumer_dev: device the supply applies to 917 917 * @consumer_dev_name: dev_name() string for device supply applies to ··· 1052 1052 printk(KERN_WARNING 1053 1053 "%s: could not add device link %s err %d\n", 1054 1054 __func__, dev->kobj.name, err); 1055 - device_remove_file(dev, &regulator->dev_attr); 1056 1055 goto link_name_err; 1057 1056 } 1058 1057 } ··· 1267 1268 { 1268 1269 int ret, delay; 1269 1270 1270 - /* do we need to enable the supply regulator first */ 1271 - if (rdev->supply) { 1272 - ret = _regulator_enable(rdev->supply); 1273 - if (ret < 0) { 1274 - printk(KERN_ERR "%s: failed to enable %s: %d\n", 1275 - __func__, rdev_get_name(rdev), ret); 1276 - return ret; 1271 + if (rdev->use_count == 0) { 1272 + /* do we need to enable the supply regulator first */ 1273 + if (rdev->supply) { 1274 + mutex_lock(&rdev->supply->mutex); 1275 + ret = _regulator_enable(rdev->supply); 1276 + mutex_unlock(&rdev->supply->mutex); 1277 + if (ret < 0) { 1278 + printk(KERN_ERR "%s: failed to enable %s: %d\n", 1279 + __func__, rdev_get_name(rdev), ret); 1280 + return ret; 1281 + } 1277 1282 } 1278 1283 } 1279 1284 ··· 1316 1313 if (ret < 0) 1317 1314 return ret; 1318 1315 1319 - if (delay >= 1000) 1316 + if (delay >= 1000) { 1320 1317 mdelay(delay / 1000); 1321 - else if (delay) 1318 + udelay(delay % 1000); 1319 + } else if (delay) { 1322 1320 udelay(delay); 1321 + } 1323 1322 1324 1323 } else if (ret < 0) { 1325 1324 printk(KERN_ERR "%s: is_enabled() failed for %s: %d\n", ··· 1364 1359 struct regulator_dev **supply_rdev_ptr) 1365 1360 { 1366 1361 int ret = 0; 1362 + *supply_rdev_ptr = NULL; 1367 1363 1368 1364 if (WARN(rdev->use_count <= 0, 1369 1365 "unbalanced disables for %s\n", ··· 2352 2346 if (init_data->supply_regulator && init_data->supply_regulator_dev) { 2353 2347 dev_err(dev, 2354 2348 "Supply regulator specified by both name and dev\n"); 2349 + ret = -EINVAL; 2355 2350 goto scrub; 2356 2351 } 2357 2352 ··· 2371 2364 if (!found) { 2372 2365 dev_err(dev, "Failed to find supply %s\n", 2373 2366 init_data->supply_regulator); 2367 + ret = -ENODEV; 2374 2368 goto scrub; 2375 2369 } 2376 2370
+2 -2
drivers/regulator/mc13783-regulator.c
··· 465 465 .get_voltage = mc13783_fixed_regulator_get_voltage, 466 466 }; 467 467 468 - int mc13783_powermisc_rmw(struct mc13783_regulator_priv *priv, u32 mask, 469 - u32 val) 468 + static int mc13783_powermisc_rmw(struct mc13783_regulator_priv *priv, u32 mask, 469 + u32 val) 470 470 { 471 471 struct mc13783 *mc13783 = priv->mc13783; 472 472 int ret;
+3 -3
drivers/regulator/twl-regulator.c
··· 219 219 return -EACCES; 220 220 221 221 status = twl_i2c_write_u8(TWL_MODULE_PM_MASTER, 222 - message >> 8, 0x15 /* PB_WORD_MSB */ ); 223 - if (status >= 0) 222 + message >> 8, TWL4030_PM_MASTER_PB_WORD_MSB); 223 + if (status < 0) 224 224 return status; 225 225 226 226 return twl_i2c_write_u8(TWL_MODULE_PM_MASTER, 227 - message, 0x16 /* PB_WORD_LSB */ ); 227 + message & 0xff, TWL4030_PM_MASTER_PB_WORD_LSB); 228 228 } 229 229 230 230 /*----------------------------------------------------------------------*/
+1 -1
drivers/serial/8250.c
··· 2872 2872 .device = uart_console_device, 2873 2873 .setup = serial8250_console_setup, 2874 2874 .early_setup = serial8250_console_early_setup, 2875 - .flags = CON_PRINTBUFFER, 2875 + .flags = CON_PRINTBUFFER | CON_ANYTIME, 2876 2876 .index = -1, 2877 2877 .data = &serial8250_reg, 2878 2878 };
+8 -16
drivers/serial/mfd.c
··· 900 900 unsigned char cval, fcr = 0; 901 901 unsigned long flags; 902 902 unsigned int baud, quot; 903 - u32 mul = 0x3600; 904 - u32 ps = 0x10; 903 + u32 ps, mul; 905 904 906 905 switch (termios->c_cflag & CSIZE) { 907 906 case CS5: ··· 942 943 baud = uart_get_baud_rate(port, termios, old, 0, 4000000); 943 944 944 945 quot = 1; 946 + ps = 0x10; 947 + mul = 0x3600; 945 948 switch (baud) { 946 949 case 3500000: 947 950 mul = 0x3345; 948 951 ps = 0xC; 949 952 break; 950 - case 3000000: 951 - mul = 0x2EE0; 952 - break; 953 - case 2500000: 954 - mul = 0x2710; 955 - break; 956 - case 2000000: 957 - mul = 0x1F40; 958 - break; 959 953 case 1843200: 960 954 mul = 0x2400; 961 955 break; 956 + case 3000000: 957 + case 2500000: 958 + case 2000000: 962 959 case 1500000: 963 - mul = 0x1770; 964 - break; 965 960 case 1000000: 966 - mul = 0xFA0; 967 - break; 968 961 case 500000: 969 - mul = 0x7D0; 962 + /* mul/ps/quot = 0x9C4/0x10/0x1 will make a 500000 bps */ 963 + mul = baud / 500000 * 0x9C4; 970 964 break; 971 965 default: 972 966 /* Use uart_get_divisor to get quot for other baud rates */
+5 -1
drivers/spi/atmel_spi.c
··· 352 352 353 353 xfer->tx_dma = xfer->rx_dma = INVALID_DMA_ADDRESS; 354 354 if (xfer->tx_buf) { 355 + /* tx_buf is a const void* where we need a void * for the dma 356 + * mapping */ 357 + void *nonconst_tx = (void *)xfer->tx_buf; 358 + 355 359 xfer->tx_dma = dma_map_single(dev, 356 - (void *) xfer->tx_buf, xfer->len, 360 + nonconst_tx, xfer->len, 357 361 DMA_TO_DEVICE); 358 362 if (dma_mapping_error(dev, xfer->tx_dma)) 359 363 return -ENOMEM;
+4 -4
drivers/staging/asus_oled/asus_oled.c
··· 620 620 621 621 #define ASUS_OLED_DEVICE_ATTR(_file) dev_attr_asus_oled_##_file 622 622 623 - static DEVICE_ATTR(asus_oled_enabled, S_IWUGO | S_IRUGO, 623 + static DEVICE_ATTR(asus_oled_enabled, S_IWUSR | S_IRUGO, 624 624 get_enabled, set_enabled); 625 - static DEVICE_ATTR(asus_oled_picture, S_IWUGO , NULL, set_picture); 625 + static DEVICE_ATTR(asus_oled_picture, S_IWUSR , NULL, set_picture); 626 626 627 - static DEVICE_ATTR(enabled, S_IWUGO | S_IRUGO, 627 + static DEVICE_ATTR(enabled, S_IWUSR | S_IRUGO, 628 628 class_get_enabled, class_set_enabled); 629 - static DEVICE_ATTR(picture, S_IWUGO, NULL, class_set_picture); 629 + static DEVICE_ATTR(picture, S_IWUSR, NULL, class_set_picture); 630 630 631 631 static int asus_oled_probe(struct usb_interface *interface, 632 632 const struct usb_device_id *id)
+13 -6
drivers/staging/batman-adv/hard-interface.c
··· 463 463 return; 464 464 465 465 batman_if->if_status = IF_TO_BE_REMOVED; 466 - 467 - /* caller must take if_list_lock */ 468 - list_del_rcu(&batman_if->list); 469 466 synchronize_rcu(); 470 467 sysfs_del_hardif(&batman_if->hardif_obj); 471 468 hardif_put(batman_if); ··· 471 474 void hardif_remove_interfaces(void) 472 475 { 473 476 struct batman_if *batman_if, *batman_if_tmp; 477 + struct list_head if_queue; 474 478 475 - rtnl_lock(); 479 + INIT_LIST_HEAD(&if_queue); 480 + 476 481 spin_lock(&if_list_lock); 477 482 list_for_each_entry_safe(batman_if, batman_if_tmp, &if_list, list) { 478 - hardif_remove_interface(batman_if); 483 + list_del_rcu(&batman_if->list); 484 + list_add_tail(&batman_if->list, &if_queue); 479 485 } 480 486 spin_unlock(&if_list_lock); 487 + 488 + rtnl_lock(); 489 + list_for_each_entry_safe(batman_if, batman_if_tmp, &if_queue, list) { 490 + hardif_remove_interface(batman_if); 491 + } 481 492 rtnl_unlock(); 482 493 } 483 494 ··· 512 507 break; 513 508 case NETDEV_UNREGISTER: 514 509 spin_lock(&if_list_lock); 515 - hardif_remove_interface(batman_if); 510 + list_del_rcu(&batman_if->list); 516 511 spin_unlock(&if_list_lock); 512 + 513 + hardif_remove_interface(batman_if); 517 514 break; 518 515 case NETDEV_CHANGEMTU: 519 516 if (batman_if->soft_iface)
+10 -4
drivers/staging/batman-adv/soft-interface.c
··· 194 194 struct bat_priv *priv = netdev_priv(soft_iface); 195 195 196 196 /* check if enough space is available for pulling, and pull */ 197 - if (!pskb_may_pull(skb, hdr_size)) { 198 - kfree_skb(skb); 199 - return; 200 - } 197 + if (!pskb_may_pull(skb, hdr_size)) 198 + goto dropped; 199 + 201 200 skb_pull_rcsum(skb, hdr_size); 202 201 /* skb_set_mac_header(skb, -sizeof(struct ethhdr));*/ 203 202 204 203 /* skb->dev & skb->pkt_type are set here */ 204 + if (unlikely(!pskb_may_pull(skb, ETH_HLEN))) 205 + goto dropped; 205 206 skb->protocol = eth_type_trans(skb, soft_iface); 206 207 207 208 /* should not be neccesary anymore as we use skb_pull_rcsum() ··· 217 216 soft_iface->last_rx = jiffies; 218 217 219 218 netif_rx(skb); 219 + return; 220 + 221 + dropped: 222 + kfree_skb(skb); 223 + return; 220 224 } 221 225 222 226 #ifdef HAVE_NET_DEVICE_OPS
+5 -3
drivers/staging/brcm80211/README
··· 88 88 89 89 Contact Info: 90 90 ============= 91 - Brett Rudley brudley@broadcom.com 92 - Henry Ptasinski henryp@broadcom.com 93 - Dowan Kim dowan@broadcom.com 91 + Brett Rudley brudley@broadcom.com 92 + Henry Ptasinski henryp@broadcom.com 93 + Dowan Kim dowan@broadcom.com 94 + Roland Vossen rvossen@broadcom.com 95 + Arend van Spriel arend@broadcom.com 94 96
+2
drivers/staging/brcm80211/TODO
··· 46 46 Brett Rudley <brudley@broadcom.com> 47 47 Henry Ptasinski <henryp@broadcom.com> 48 48 Dowan Kim <dowan@broadcom.com> 49 + Roland Vossen <rvossen@broadcom.com> 50 + Arend van Spriel <arend@broadcom.com> 49 51
+2 -2
drivers/staging/comedi/drivers/usbdux.c
··· 2295 2295 usbduxsub_tmp->inBuffer = NULL; 2296 2296 kfree(usbduxsub_tmp->insnBuffer); 2297 2297 usbduxsub_tmp->insnBuffer = NULL; 2298 - kfree(usbduxsub_tmp->inBuffer); 2299 - usbduxsub_tmp->inBuffer = NULL; 2298 + kfree(usbduxsub_tmp->outBuffer); 2299 + usbduxsub_tmp->outBuffer = NULL; 2300 2300 kfree(usbduxsub_tmp->dac_commands); 2301 2301 usbduxsub_tmp->dac_commands = NULL; 2302 2302 kfree(usbduxsub_tmp->dux_commands);
+1
drivers/staging/easycap/easycap.h
··· 75 75 #include <linux/errno.h> 76 76 #include <linux/init.h> 77 77 #include <linux/slab.h> 78 + #include <linux/smp_lock.h> 78 79 #include <linux/module.h> 79 80 #include <linux/kref.h> 80 81 #include <linux/usb.h>
+1 -1
drivers/staging/frontier/tranzport.c
··· 204 204 t->value = temp; \ 205 205 return count; \ 206 206 } \ 207 - static DEVICE_ATTR(value, S_IWUGO | S_IRUGO, show_##value, set_##value); 207 + static DEVICE_ATTR(value, S_IWUSR | S_IRUGO, show_##value, set_##value); 208 208 209 209 show_int(enable); 210 210 show_int(offline);
+1 -1
drivers/staging/go7007/go7007-driver.c
··· 199 199 struct go7007 *go = i2c_get_adapdata(adapter); 200 200 struct v4l2_device *v4l2_dev = &go->v4l2_dev; 201 201 202 - if (v4l2_i2c_new_subdev(v4l2_dev, adapter, NULL, type, addr, NULL)) 202 + if (v4l2_i2c_new_subdev(v4l2_dev, adapter, type, addr, NULL)) 203 203 return 0; 204 204 205 205 printk(KERN_INFO "go7007: probing for module i2c:%s failed\n", type);
+1 -1
drivers/staging/iio/accel/adis16220_core.c
··· 507 507 adis16220_write_reset, 0); 508 508 509 509 #define IIO_DEV_ATTR_CAPTURE(_store) \ 510 - IIO_DEVICE_ATTR(capture, S_IWUGO, NULL, _store, 0) 510 + IIO_DEVICE_ATTR(capture, S_IWUSR, NULL, _store, 0) 511 511 512 512 static IIO_DEV_ATTR_CAPTURE(adis16220_write_capture); 513 513
+1 -1
drivers/staging/intel_sst/intel_sst_stream_encoded.c
··· 1269 1269 dbufs->output_bytes_produced = total_output; 1270 1270 str_info->status = str_info->prev; 1271 1271 str_info->prev = STREAM_DECODE; 1272 - str_info->decode_ibuf = NULL; 1273 1272 kfree(str_info->decode_ibuf); 1273 + str_info->decode_ibuf = NULL; 1274 1274 return retval; 1275 1275 }
+102 -102
drivers/staging/line6/control.c
··· 266 266 VARIAX_PARAM_R(float, mix1); 267 267 VARIAX_PARAM_R(int, pickup_wiring); 268 268 269 - static DEVICE_ATTR(tweak, S_IWUGO | S_IRUGO, pod_get_tweak, pod_set_tweak); 270 - static DEVICE_ATTR(wah_position, S_IWUGO | S_IRUGO, pod_get_wah_position, 269 + static DEVICE_ATTR(tweak, S_IWUSR | S_IRUGO, pod_get_tweak, pod_set_tweak); 270 + static DEVICE_ATTR(wah_position, S_IWUSR | S_IRUGO, pod_get_wah_position, 271 271 pod_set_wah_position); 272 - static DEVICE_ATTR(compression_gain, S_IWUGO | S_IRUGO, 272 + static DEVICE_ATTR(compression_gain, S_IWUSR | S_IRUGO, 273 273 pod_get_compression_gain, pod_set_compression_gain); 274 - static DEVICE_ATTR(vol_pedal_position, S_IWUGO | S_IRUGO, 274 + static DEVICE_ATTR(vol_pedal_position, S_IWUSR | S_IRUGO, 275 275 pod_get_vol_pedal_position, pod_set_vol_pedal_position); 276 - static DEVICE_ATTR(compression_threshold, S_IWUGO | S_IRUGO, 276 + static DEVICE_ATTR(compression_threshold, S_IWUSR | S_IRUGO, 277 277 pod_get_compression_threshold, 278 278 pod_set_compression_threshold); 279 - static DEVICE_ATTR(pan, S_IWUGO | S_IRUGO, pod_get_pan, pod_set_pan); 280 - static DEVICE_ATTR(amp_model_setup, S_IWUGO | S_IRUGO, pod_get_amp_model_setup, 279 + static DEVICE_ATTR(pan, S_IWUSR | S_IRUGO, pod_get_pan, pod_set_pan); 280 + static DEVICE_ATTR(amp_model_setup, S_IWUSR | S_IRUGO, pod_get_amp_model_setup, 281 281 pod_set_amp_model_setup); 282 - static DEVICE_ATTR(amp_model, S_IWUGO | S_IRUGO, pod_get_amp_model, 282 + static DEVICE_ATTR(amp_model, S_IWUSR | S_IRUGO, pod_get_amp_model, 283 283 pod_set_amp_model); 284 - static DEVICE_ATTR(drive, S_IWUGO | S_IRUGO, pod_get_drive, pod_set_drive); 285 - static DEVICE_ATTR(bass, S_IWUGO | S_IRUGO, pod_get_bass, pod_set_bass); 286 - static DEVICE_ATTR(mid, S_IWUGO | S_IRUGO, pod_get_mid, pod_set_mid); 287 - static DEVICE_ATTR(lowmid, S_IWUGO | S_IRUGO, pod_get_lowmid, pod_set_lowmid); 288 - static DEVICE_ATTR(treble, S_IWUGO | S_IRUGO, pod_get_treble, pod_set_treble); 289 - static DEVICE_ATTR(highmid, S_IWUGO | S_IRUGO, pod_get_highmid, 284 + static DEVICE_ATTR(drive, S_IWUSR | S_IRUGO, pod_get_drive, pod_set_drive); 285 + static DEVICE_ATTR(bass, S_IWUSR | S_IRUGO, pod_get_bass, pod_set_bass); 286 + static DEVICE_ATTR(mid, S_IWUSR | S_IRUGO, pod_get_mid, pod_set_mid); 287 + static DEVICE_ATTR(lowmid, S_IWUSR | S_IRUGO, pod_get_lowmid, pod_set_lowmid); 288 + static DEVICE_ATTR(treble, S_IWUSR | S_IRUGO, pod_get_treble, pod_set_treble); 289 + static DEVICE_ATTR(highmid, S_IWUSR | S_IRUGO, pod_get_highmid, 290 290 pod_set_highmid); 291 - static DEVICE_ATTR(chan_vol, S_IWUGO | S_IRUGO, pod_get_chan_vol, 291 + static DEVICE_ATTR(chan_vol, S_IWUSR | S_IRUGO, pod_get_chan_vol, 292 292 pod_set_chan_vol); 293 - static DEVICE_ATTR(reverb_mix, S_IWUGO | S_IRUGO, pod_get_reverb_mix, 293 + static DEVICE_ATTR(reverb_mix, S_IWUSR | S_IRUGO, pod_get_reverb_mix, 294 294 pod_set_reverb_mix); 295 - static DEVICE_ATTR(effect_setup, S_IWUGO | S_IRUGO, pod_get_effect_setup, 295 + static DEVICE_ATTR(effect_setup, S_IWUSR | S_IRUGO, pod_get_effect_setup, 296 296 pod_set_effect_setup); 297 - static DEVICE_ATTR(band_1_frequency, S_IWUGO | S_IRUGO, 297 + static DEVICE_ATTR(band_1_frequency, S_IWUSR | S_IRUGO, 298 298 pod_get_band_1_frequency, pod_set_band_1_frequency); 299 - static DEVICE_ATTR(presence, S_IWUGO | S_IRUGO, pod_get_presence, 299 + static DEVICE_ATTR(presence, S_IWUSR | S_IRUGO, pod_get_presence, 300 300 pod_set_presence); 301 - static DEVICE_ATTR2(treble__bass, treble, S_IWUGO | S_IRUGO, 301 + static DEVICE_ATTR2(treble__bass, treble, S_IWUSR | S_IRUGO, 302 302 pod_get_treble__bass, pod_set_treble__bass); 303 - static DEVICE_ATTR(noise_gate_enable, S_IWUGO | S_IRUGO, 303 + static DEVICE_ATTR(noise_gate_enable, S_IWUSR | S_IRUGO, 304 304 pod_get_noise_gate_enable, pod_set_noise_gate_enable); 305 - static DEVICE_ATTR(gate_threshold, S_IWUGO | S_IRUGO, pod_get_gate_threshold, 305 + static DEVICE_ATTR(gate_threshold, S_IWUSR | S_IRUGO, pod_get_gate_threshold, 306 306 pod_set_gate_threshold); 307 - static DEVICE_ATTR(gate_decay_time, S_IWUGO | S_IRUGO, pod_get_gate_decay_time, 307 + static DEVICE_ATTR(gate_decay_time, S_IWUSR | S_IRUGO, pod_get_gate_decay_time, 308 308 pod_set_gate_decay_time); 309 - static DEVICE_ATTR(stomp_enable, S_IWUGO | S_IRUGO, pod_get_stomp_enable, 309 + static DEVICE_ATTR(stomp_enable, S_IWUSR | S_IRUGO, pod_get_stomp_enable, 310 310 pod_set_stomp_enable); 311 - static DEVICE_ATTR(comp_enable, S_IWUGO | S_IRUGO, pod_get_comp_enable, 311 + static DEVICE_ATTR(comp_enable, S_IWUSR | S_IRUGO, pod_get_comp_enable, 312 312 pod_set_comp_enable); 313 - static DEVICE_ATTR(stomp_time, S_IWUGO | S_IRUGO, pod_get_stomp_time, 313 + static DEVICE_ATTR(stomp_time, S_IWUSR | S_IRUGO, pod_get_stomp_time, 314 314 pod_set_stomp_time); 315 - static DEVICE_ATTR(delay_enable, S_IWUGO | S_IRUGO, pod_get_delay_enable, 315 + static DEVICE_ATTR(delay_enable, S_IWUSR | S_IRUGO, pod_get_delay_enable, 316 316 pod_set_delay_enable); 317 - static DEVICE_ATTR(mod_param_1, S_IWUGO | S_IRUGO, pod_get_mod_param_1, 317 + static DEVICE_ATTR(mod_param_1, S_IWUSR | S_IRUGO, pod_get_mod_param_1, 318 318 pod_set_mod_param_1); 319 - static DEVICE_ATTR(delay_param_1, S_IWUGO | S_IRUGO, pod_get_delay_param_1, 319 + static DEVICE_ATTR(delay_param_1, S_IWUSR | S_IRUGO, pod_get_delay_param_1, 320 320 pod_set_delay_param_1); 321 - static DEVICE_ATTR(delay_param_1_note_value, S_IWUGO | S_IRUGO, 321 + static DEVICE_ATTR(delay_param_1_note_value, S_IWUSR | S_IRUGO, 322 322 pod_get_delay_param_1_note_value, 323 323 pod_set_delay_param_1_note_value); 324 - static DEVICE_ATTR2(band_2_frequency__bass, band_2_frequency, S_IWUGO | S_IRUGO, 324 + static DEVICE_ATTR2(band_2_frequency__bass, band_2_frequency, S_IWUSR | S_IRUGO, 325 325 pod_get_band_2_frequency__bass, 326 326 pod_set_band_2_frequency__bass); 327 - static DEVICE_ATTR(delay_param_2, S_IWUGO | S_IRUGO, pod_get_delay_param_2, 327 + static DEVICE_ATTR(delay_param_2, S_IWUSR | S_IRUGO, pod_get_delay_param_2, 328 328 pod_set_delay_param_2); 329 - static DEVICE_ATTR(delay_volume_mix, S_IWUGO | S_IRUGO, 329 + static DEVICE_ATTR(delay_volume_mix, S_IWUSR | S_IRUGO, 330 330 pod_get_delay_volume_mix, pod_set_delay_volume_mix); 331 - static DEVICE_ATTR(delay_param_3, S_IWUGO | S_IRUGO, pod_get_delay_param_3, 331 + static DEVICE_ATTR(delay_param_3, S_IWUSR | S_IRUGO, pod_get_delay_param_3, 332 332 pod_set_delay_param_3); 333 - static DEVICE_ATTR(reverb_enable, S_IWUGO | S_IRUGO, pod_get_reverb_enable, 333 + static DEVICE_ATTR(reverb_enable, S_IWUSR | S_IRUGO, pod_get_reverb_enable, 334 334 pod_set_reverb_enable); 335 - static DEVICE_ATTR(reverb_type, S_IWUGO | S_IRUGO, pod_get_reverb_type, 335 + static DEVICE_ATTR(reverb_type, S_IWUSR | S_IRUGO, pod_get_reverb_type, 336 336 pod_set_reverb_type); 337 - static DEVICE_ATTR(reverb_decay, S_IWUGO | S_IRUGO, pod_get_reverb_decay, 337 + static DEVICE_ATTR(reverb_decay, S_IWUSR | S_IRUGO, pod_get_reverb_decay, 338 338 pod_set_reverb_decay); 339 - static DEVICE_ATTR(reverb_tone, S_IWUGO | S_IRUGO, pod_get_reverb_tone, 339 + static DEVICE_ATTR(reverb_tone, S_IWUSR | S_IRUGO, pod_get_reverb_tone, 340 340 pod_set_reverb_tone); 341 - static DEVICE_ATTR(reverb_pre_delay, S_IWUGO | S_IRUGO, 341 + static DEVICE_ATTR(reverb_pre_delay, S_IWUSR | S_IRUGO, 342 342 pod_get_reverb_pre_delay, pod_set_reverb_pre_delay); 343 - static DEVICE_ATTR(reverb_pre_post, S_IWUGO | S_IRUGO, pod_get_reverb_pre_post, 343 + static DEVICE_ATTR(reverb_pre_post, S_IWUSR | S_IRUGO, pod_get_reverb_pre_post, 344 344 pod_set_reverb_pre_post); 345 - static DEVICE_ATTR(band_2_frequency, S_IWUGO | S_IRUGO, 345 + static DEVICE_ATTR(band_2_frequency, S_IWUSR | S_IRUGO, 346 346 pod_get_band_2_frequency, pod_set_band_2_frequency); 347 - static DEVICE_ATTR2(band_3_frequency__bass, band_3_frequency, S_IWUGO | S_IRUGO, 347 + static DEVICE_ATTR2(band_3_frequency__bass, band_3_frequency, S_IWUSR | S_IRUGO, 348 348 pod_get_band_3_frequency__bass, 349 349 pod_set_band_3_frequency__bass); 350 - static DEVICE_ATTR(wah_enable, S_IWUGO | S_IRUGO, pod_get_wah_enable, 350 + static DEVICE_ATTR(wah_enable, S_IWUSR | S_IRUGO, pod_get_wah_enable, 351 351 pod_set_wah_enable); 352 - static DEVICE_ATTR(modulation_lo_cut, S_IWUGO | S_IRUGO, 352 + static DEVICE_ATTR(modulation_lo_cut, S_IWUSR | S_IRUGO, 353 353 pod_get_modulation_lo_cut, pod_set_modulation_lo_cut); 354 - static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUGO | S_IRUGO, 354 + static DEVICE_ATTR(delay_reverb_lo_cut, S_IWUSR | S_IRUGO, 355 355 pod_get_delay_reverb_lo_cut, pod_set_delay_reverb_lo_cut); 356 - static DEVICE_ATTR(volume_pedal_minimum, S_IWUGO | S_IRUGO, 356 + static DEVICE_ATTR(volume_pedal_minimum, S_IWUSR | S_IRUGO, 357 357 pod_get_volume_pedal_minimum, pod_set_volume_pedal_minimum); 358 - static DEVICE_ATTR(eq_pre_post, S_IWUGO | S_IRUGO, pod_get_eq_pre_post, 358 + static DEVICE_ATTR(eq_pre_post, S_IWUSR | S_IRUGO, pod_get_eq_pre_post, 359 359 pod_set_eq_pre_post); 360 - static DEVICE_ATTR(volume_pre_post, S_IWUGO | S_IRUGO, pod_get_volume_pre_post, 360 + static DEVICE_ATTR(volume_pre_post, S_IWUSR | S_IRUGO, pod_get_volume_pre_post, 361 361 pod_set_volume_pre_post); 362 - static DEVICE_ATTR(di_model, S_IWUGO | S_IRUGO, pod_get_di_model, 362 + static DEVICE_ATTR(di_model, S_IWUSR | S_IRUGO, pod_get_di_model, 363 363 pod_set_di_model); 364 - static DEVICE_ATTR(di_delay, S_IWUGO | S_IRUGO, pod_get_di_delay, 364 + static DEVICE_ATTR(di_delay, S_IWUSR | S_IRUGO, pod_get_di_delay, 365 365 pod_set_di_delay); 366 - static DEVICE_ATTR(mod_enable, S_IWUGO | S_IRUGO, pod_get_mod_enable, 366 + static DEVICE_ATTR(mod_enable, S_IWUSR | S_IRUGO, pod_get_mod_enable, 367 367 pod_set_mod_enable); 368 - static DEVICE_ATTR(mod_param_1_note_value, S_IWUGO | S_IRUGO, 368 + static DEVICE_ATTR(mod_param_1_note_value, S_IWUSR | S_IRUGO, 369 369 pod_get_mod_param_1_note_value, 370 370 pod_set_mod_param_1_note_value); 371 - static DEVICE_ATTR(mod_param_2, S_IWUGO | S_IRUGO, pod_get_mod_param_2, 371 + static DEVICE_ATTR(mod_param_2, S_IWUSR | S_IRUGO, pod_get_mod_param_2, 372 372 pod_set_mod_param_2); 373 - static DEVICE_ATTR(mod_param_3, S_IWUGO | S_IRUGO, pod_get_mod_param_3, 373 + static DEVICE_ATTR(mod_param_3, S_IWUSR | S_IRUGO, pod_get_mod_param_3, 374 374 pod_set_mod_param_3); 375 - static DEVICE_ATTR(mod_param_4, S_IWUGO | S_IRUGO, pod_get_mod_param_4, 375 + static DEVICE_ATTR(mod_param_4, S_IWUSR | S_IRUGO, pod_get_mod_param_4, 376 376 pod_set_mod_param_4); 377 - static DEVICE_ATTR(mod_param_5, S_IWUGO | S_IRUGO, pod_get_mod_param_5, 377 + static DEVICE_ATTR(mod_param_5, S_IWUSR | S_IRUGO, pod_get_mod_param_5, 378 378 pod_set_mod_param_5); 379 - static DEVICE_ATTR(mod_volume_mix, S_IWUGO | S_IRUGO, pod_get_mod_volume_mix, 379 + static DEVICE_ATTR(mod_volume_mix, S_IWUSR | S_IRUGO, pod_get_mod_volume_mix, 380 380 pod_set_mod_volume_mix); 381 - static DEVICE_ATTR(mod_pre_post, S_IWUGO | S_IRUGO, pod_get_mod_pre_post, 381 + static DEVICE_ATTR(mod_pre_post, S_IWUSR | S_IRUGO, pod_get_mod_pre_post, 382 382 pod_set_mod_pre_post); 383 - static DEVICE_ATTR(modulation_model, S_IWUGO | S_IRUGO, 383 + static DEVICE_ATTR(modulation_model, S_IWUSR | S_IRUGO, 384 384 pod_get_modulation_model, pod_set_modulation_model); 385 - static DEVICE_ATTR(band_3_frequency, S_IWUGO | S_IRUGO, 385 + static DEVICE_ATTR(band_3_frequency, S_IWUSR | S_IRUGO, 386 386 pod_get_band_3_frequency, pod_set_band_3_frequency); 387 - static DEVICE_ATTR2(band_4_frequency__bass, band_4_frequency, S_IWUGO | S_IRUGO, 387 + static DEVICE_ATTR2(band_4_frequency__bass, band_4_frequency, S_IWUSR | S_IRUGO, 388 388 pod_get_band_4_frequency__bass, 389 389 pod_set_band_4_frequency__bass); 390 - static DEVICE_ATTR(mod_param_1_double_precision, S_IWUGO | S_IRUGO, 390 + static DEVICE_ATTR(mod_param_1_double_precision, S_IWUSR | S_IRUGO, 391 391 pod_get_mod_param_1_double_precision, 392 392 pod_set_mod_param_1_double_precision); 393 - static DEVICE_ATTR(delay_param_1_double_precision, S_IWUGO | S_IRUGO, 393 + static DEVICE_ATTR(delay_param_1_double_precision, S_IWUSR | S_IRUGO, 394 394 pod_get_delay_param_1_double_precision, 395 395 pod_set_delay_param_1_double_precision); 396 - static DEVICE_ATTR(eq_enable, S_IWUGO | S_IRUGO, pod_get_eq_enable, 396 + static DEVICE_ATTR(eq_enable, S_IWUSR | S_IRUGO, pod_get_eq_enable, 397 397 pod_set_eq_enable); 398 - static DEVICE_ATTR(tap, S_IWUGO | S_IRUGO, pod_get_tap, pod_set_tap); 399 - static DEVICE_ATTR(volume_tweak_pedal_assign, S_IWUGO | S_IRUGO, 398 + static DEVICE_ATTR(tap, S_IWUSR | S_IRUGO, pod_get_tap, pod_set_tap); 399 + static DEVICE_ATTR(volume_tweak_pedal_assign, S_IWUSR | S_IRUGO, 400 400 pod_get_volume_tweak_pedal_assign, 401 401 pod_set_volume_tweak_pedal_assign); 402 - static DEVICE_ATTR(band_5_frequency, S_IWUGO | S_IRUGO, 402 + static DEVICE_ATTR(band_5_frequency, S_IWUSR | S_IRUGO, 403 403 pod_get_band_5_frequency, pod_set_band_5_frequency); 404 - static DEVICE_ATTR(tuner, S_IWUGO | S_IRUGO, pod_get_tuner, pod_set_tuner); 405 - static DEVICE_ATTR(mic_selection, S_IWUGO | S_IRUGO, pod_get_mic_selection, 404 + static DEVICE_ATTR(tuner, S_IWUSR | S_IRUGO, pod_get_tuner, pod_set_tuner); 405 + static DEVICE_ATTR(mic_selection, S_IWUSR | S_IRUGO, pod_get_mic_selection, 406 406 pod_set_mic_selection); 407 - static DEVICE_ATTR(cabinet_model, S_IWUGO | S_IRUGO, pod_get_cabinet_model, 407 + static DEVICE_ATTR(cabinet_model, S_IWUSR | S_IRUGO, pod_get_cabinet_model, 408 408 pod_set_cabinet_model); 409 - static DEVICE_ATTR(stomp_model, S_IWUGO | S_IRUGO, pod_get_stomp_model, 409 + static DEVICE_ATTR(stomp_model, S_IWUSR | S_IRUGO, pod_get_stomp_model, 410 410 pod_set_stomp_model); 411 - static DEVICE_ATTR(roomlevel, S_IWUGO | S_IRUGO, pod_get_roomlevel, 411 + static DEVICE_ATTR(roomlevel, S_IWUSR | S_IRUGO, pod_get_roomlevel, 412 412 pod_set_roomlevel); 413 - static DEVICE_ATTR(band_4_frequency, S_IWUGO | S_IRUGO, 413 + static DEVICE_ATTR(band_4_frequency, S_IWUSR | S_IRUGO, 414 414 pod_get_band_4_frequency, pod_set_band_4_frequency); 415 - static DEVICE_ATTR(band_6_frequency, S_IWUGO | S_IRUGO, 415 + static DEVICE_ATTR(band_6_frequency, S_IWUSR | S_IRUGO, 416 416 pod_get_band_6_frequency, pod_set_band_6_frequency); 417 - static DEVICE_ATTR(stomp_param_1_note_value, S_IWUGO | S_IRUGO, 417 + static DEVICE_ATTR(stomp_param_1_note_value, S_IWUSR | S_IRUGO, 418 418 pod_get_stomp_param_1_note_value, 419 419 pod_set_stomp_param_1_note_value); 420 - static DEVICE_ATTR(stomp_param_2, S_IWUGO | S_IRUGO, pod_get_stomp_param_2, 420 + static DEVICE_ATTR(stomp_param_2, S_IWUSR | S_IRUGO, pod_get_stomp_param_2, 421 421 pod_set_stomp_param_2); 422 - static DEVICE_ATTR(stomp_param_3, S_IWUGO | S_IRUGO, pod_get_stomp_param_3, 422 + static DEVICE_ATTR(stomp_param_3, S_IWUSR | S_IRUGO, pod_get_stomp_param_3, 423 423 pod_set_stomp_param_3); 424 - static DEVICE_ATTR(stomp_param_4, S_IWUGO | S_IRUGO, pod_get_stomp_param_4, 424 + static DEVICE_ATTR(stomp_param_4, S_IWUSR | S_IRUGO, pod_get_stomp_param_4, 425 425 pod_set_stomp_param_4); 426 - static DEVICE_ATTR(stomp_param_5, S_IWUGO | S_IRUGO, pod_get_stomp_param_5, 426 + static DEVICE_ATTR(stomp_param_5, S_IWUSR | S_IRUGO, pod_get_stomp_param_5, 427 427 pod_set_stomp_param_5); 428 - static DEVICE_ATTR(stomp_param_6, S_IWUGO | S_IRUGO, pod_get_stomp_param_6, 428 + static DEVICE_ATTR(stomp_param_6, S_IWUSR | S_IRUGO, pod_get_stomp_param_6, 429 429 pod_set_stomp_param_6); 430 - static DEVICE_ATTR(amp_switch_select, S_IWUGO | S_IRUGO, 430 + static DEVICE_ATTR(amp_switch_select, S_IWUSR | S_IRUGO, 431 431 pod_get_amp_switch_select, pod_set_amp_switch_select); 432 - static DEVICE_ATTR(delay_param_4, S_IWUGO | S_IRUGO, pod_get_delay_param_4, 432 + static DEVICE_ATTR(delay_param_4, S_IWUSR | S_IRUGO, pod_get_delay_param_4, 433 433 pod_set_delay_param_4); 434 - static DEVICE_ATTR(delay_param_5, S_IWUGO | S_IRUGO, pod_get_delay_param_5, 434 + static DEVICE_ATTR(delay_param_5, S_IWUSR | S_IRUGO, pod_get_delay_param_5, 435 435 pod_set_delay_param_5); 436 - static DEVICE_ATTR(delay_pre_post, S_IWUGO | S_IRUGO, pod_get_delay_pre_post, 436 + static DEVICE_ATTR(delay_pre_post, S_IWUSR | S_IRUGO, pod_get_delay_pre_post, 437 437 pod_set_delay_pre_post); 438 - static DEVICE_ATTR(delay_model, S_IWUGO | S_IRUGO, pod_get_delay_model, 438 + static DEVICE_ATTR(delay_model, S_IWUSR | S_IRUGO, pod_get_delay_model, 439 439 pod_set_delay_model); 440 - static DEVICE_ATTR(delay_verb_model, S_IWUGO | S_IRUGO, 440 + static DEVICE_ATTR(delay_verb_model, S_IWUSR | S_IRUGO, 441 441 pod_get_delay_verb_model, pod_set_delay_verb_model); 442 - static DEVICE_ATTR(tempo_msb, S_IWUGO | S_IRUGO, pod_get_tempo_msb, 442 + static DEVICE_ATTR(tempo_msb, S_IWUSR | S_IRUGO, pod_get_tempo_msb, 443 443 pod_set_tempo_msb); 444 - static DEVICE_ATTR(tempo_lsb, S_IWUGO | S_IRUGO, pod_get_tempo_lsb, 444 + static DEVICE_ATTR(tempo_lsb, S_IWUSR | S_IRUGO, pod_get_tempo_lsb, 445 445 pod_set_tempo_lsb); 446 - static DEVICE_ATTR(wah_model, S_IWUGO | S_IRUGO, pod_get_wah_model, 446 + static DEVICE_ATTR(wah_model, S_IWUSR | S_IRUGO, pod_get_wah_model, 447 447 pod_set_wah_model); 448 - static DEVICE_ATTR(bypass_volume, S_IWUGO | S_IRUGO, pod_get_bypass_volume, 448 + static DEVICE_ATTR(bypass_volume, S_IWUSR | S_IRUGO, pod_get_bypass_volume, 449 449 pod_set_bypass_volume); 450 - static DEVICE_ATTR(fx_loop_on_off, S_IWUGO | S_IRUGO, pod_get_fx_loop_on_off, 450 + static DEVICE_ATTR(fx_loop_on_off, S_IWUSR | S_IRUGO, pod_get_fx_loop_on_off, 451 451 pod_set_fx_loop_on_off); 452 - static DEVICE_ATTR(tweak_param_select, S_IWUGO | S_IRUGO, 452 + static DEVICE_ATTR(tweak_param_select, S_IWUSR | S_IRUGO, 453 453 pod_get_tweak_param_select, pod_set_tweak_param_select); 454 - static DEVICE_ATTR(amp1_engage, S_IWUGO | S_IRUGO, pod_get_amp1_engage, 454 + static DEVICE_ATTR(amp1_engage, S_IWUSR | S_IRUGO, pod_get_amp1_engage, 455 455 pod_set_amp1_engage); 456 - static DEVICE_ATTR(band_1_gain, S_IWUGO | S_IRUGO, pod_get_band_1_gain, 456 + static DEVICE_ATTR(band_1_gain, S_IWUSR | S_IRUGO, pod_get_band_1_gain, 457 457 pod_set_band_1_gain); 458 - static DEVICE_ATTR2(band_2_gain__bass, band_2_gain, S_IWUGO | S_IRUGO, 458 + static DEVICE_ATTR2(band_2_gain__bass, band_2_gain, S_IWUSR | S_IRUGO, 459 459 pod_get_band_2_gain__bass, pod_set_band_2_gain__bass); 460 - static DEVICE_ATTR(band_2_gain, S_IWUGO | S_IRUGO, pod_get_band_2_gain, 460 + static DEVICE_ATTR(band_2_gain, S_IWUSR | S_IRUGO, pod_get_band_2_gain, 461 461 pod_set_band_2_gain); 462 - static DEVICE_ATTR2(band_3_gain__bass, band_3_gain, S_IWUGO | S_IRUGO, 462 + static DEVICE_ATTR2(band_3_gain__bass, band_3_gain, S_IWUSR | S_IRUGO, 463 463 pod_get_band_3_gain__bass, pod_set_band_3_gain__bass); 464 - static DEVICE_ATTR(band_3_gain, S_IWUGO | S_IRUGO, pod_get_band_3_gain, 464 + static DEVICE_ATTR(band_3_gain, S_IWUSR | S_IRUGO, pod_get_band_3_gain, 465 465 pod_set_band_3_gain); 466 - static DEVICE_ATTR2(band_4_gain__bass, band_4_gain, S_IWUGO | S_IRUGO, 466 + static DEVICE_ATTR2(band_4_gain__bass, band_4_gain, S_IWUSR | S_IRUGO, 467 467 pod_get_band_4_gain__bass, pod_set_band_4_gain__bass); 468 - static DEVICE_ATTR2(band_5_gain__bass, band_5_gain, S_IWUGO | S_IRUGO, 468 + static DEVICE_ATTR2(band_5_gain__bass, band_5_gain, S_IWUSR | S_IRUGO, 469 469 pod_get_band_5_gain__bass, pod_set_band_5_gain__bass); 470 - static DEVICE_ATTR(band_4_gain, S_IWUGO | S_IRUGO, pod_get_band_4_gain, 470 + static DEVICE_ATTR(band_4_gain, S_IWUSR | S_IRUGO, pod_get_band_4_gain, 471 471 pod_set_band_4_gain); 472 - static DEVICE_ATTR2(band_6_gain__bass, band_6_gain, S_IWUGO | S_IRUGO, 472 + static DEVICE_ATTR2(band_6_gain__bass, band_6_gain, S_IWUSR | S_IRUGO, 473 473 pod_get_band_6_gain__bass, pod_set_band_6_gain__bass); 474 474 static DEVICE_ATTR(body, S_IRUGO, variax_get_body, line6_nop_write); 475 475 static DEVICE_ATTR(pickup1_enable, S_IRUGO, variax_get_pickup1_enable,
+2 -2
drivers/staging/line6/midi.c
··· 350 350 return count; 351 351 } 352 352 353 - static DEVICE_ATTR(midi_mask_transmit, S_IWUGO | S_IRUGO, 353 + static DEVICE_ATTR(midi_mask_transmit, S_IWUSR | S_IRUGO, 354 354 midi_get_midi_mask_transmit, midi_set_midi_mask_transmit); 355 - static DEVICE_ATTR(midi_mask_receive, S_IWUGO | S_IRUGO, 355 + static DEVICE_ATTR(midi_mask_receive, S_IWUSR | S_IRUGO, 356 356 midi_get_midi_mask_receive, midi_set_midi_mask_receive); 357 357 358 358 /* MIDI device destructor */
+2 -2
drivers/staging/line6/pcm.c
··· 79 79 return count; 80 80 } 81 81 82 - static DEVICE_ATTR(impulse_volume, S_IWUGO | S_IRUGO, pcm_get_impulse_volume, 82 + static DEVICE_ATTR(impulse_volume, S_IWUSR | S_IRUGO, pcm_get_impulse_volume, 83 83 pcm_set_impulse_volume); 84 - static DEVICE_ATTR(impulse_period, S_IWUGO | S_IRUGO, pcm_get_impulse_period, 84 + static DEVICE_ATTR(impulse_period, S_IWUSR | S_IRUGO, pcm_get_impulse_period, 85 85 pcm_set_impulse_period); 86 86 87 87 #endif
+16 -16
drivers/staging/line6/pod.c
··· 1051 1051 #undef GET_SYSTEM_PARAM 1052 1052 1053 1053 /* POD special files: */ 1054 - static DEVICE_ATTR(channel, S_IWUGO | S_IRUGO, pod_get_channel, 1054 + static DEVICE_ATTR(channel, S_IWUSR | S_IRUGO, pod_get_channel, 1055 1055 pod_set_channel); 1056 1056 static DEVICE_ATTR(clip, S_IRUGO, pod_wait_for_clip, line6_nop_write); 1057 1057 static DEVICE_ATTR(device_id, S_IRUGO, pod_get_device_id, line6_nop_write); 1058 1058 static DEVICE_ATTR(dirty, S_IRUGO, pod_get_dirty, line6_nop_write); 1059 - static DEVICE_ATTR(dump, S_IWUGO | S_IRUGO, pod_get_dump, pod_set_dump); 1060 - static DEVICE_ATTR(dump_buf, S_IWUGO | S_IRUGO, pod_get_dump_buf, 1059 + static DEVICE_ATTR(dump, S_IWUSR | S_IRUGO, pod_get_dump, pod_set_dump); 1060 + static DEVICE_ATTR(dump_buf, S_IWUSR | S_IRUGO, pod_get_dump_buf, 1061 1061 pod_set_dump_buf); 1062 - static DEVICE_ATTR(finish, S_IWUGO, line6_nop_read, pod_set_finish); 1062 + static DEVICE_ATTR(finish, S_IWUSR, line6_nop_read, pod_set_finish); 1063 1063 static DEVICE_ATTR(firmware_version, S_IRUGO, pod_get_firmware_version, 1064 1064 line6_nop_write); 1065 - static DEVICE_ATTR(midi_postprocess, S_IWUGO | S_IRUGO, 1065 + static DEVICE_ATTR(midi_postprocess, S_IWUSR | S_IRUGO, 1066 1066 pod_get_midi_postprocess, pod_set_midi_postprocess); 1067 - static DEVICE_ATTR(monitor_level, S_IWUGO | S_IRUGO, pod_get_monitor_level, 1067 + static DEVICE_ATTR(monitor_level, S_IWUSR | S_IRUGO, pod_get_monitor_level, 1068 1068 pod_set_monitor_level); 1069 1069 static DEVICE_ATTR(name, S_IRUGO, pod_get_name, line6_nop_write); 1070 1070 static DEVICE_ATTR(name_buf, S_IRUGO, pod_get_name_buf, line6_nop_write); 1071 - static DEVICE_ATTR(retrieve_amp_setup, S_IWUGO, line6_nop_read, 1071 + static DEVICE_ATTR(retrieve_amp_setup, S_IWUSR, line6_nop_read, 1072 1072 pod_set_retrieve_amp_setup); 1073 - static DEVICE_ATTR(retrieve_channel, S_IWUGO, line6_nop_read, 1073 + static DEVICE_ATTR(retrieve_channel, S_IWUSR, line6_nop_read, 1074 1074 pod_set_retrieve_channel); 1075 - static DEVICE_ATTR(retrieve_effects_setup, S_IWUGO, line6_nop_read, 1075 + static DEVICE_ATTR(retrieve_effects_setup, S_IWUSR, line6_nop_read, 1076 1076 pod_set_retrieve_effects_setup); 1077 - static DEVICE_ATTR(routing, S_IWUGO | S_IRUGO, pod_get_routing, 1077 + static DEVICE_ATTR(routing, S_IWUSR | S_IRUGO, pod_get_routing, 1078 1078 pod_set_routing); 1079 1079 static DEVICE_ATTR(serial_number, S_IRUGO, pod_get_serial_number, 1080 1080 line6_nop_write); 1081 - static DEVICE_ATTR(store_amp_setup, S_IWUGO, line6_nop_read, 1081 + static DEVICE_ATTR(store_amp_setup, S_IWUSR, line6_nop_read, 1082 1082 pod_set_store_amp_setup); 1083 - static DEVICE_ATTR(store_channel, S_IWUGO, line6_nop_read, 1083 + static DEVICE_ATTR(store_channel, S_IWUSR, line6_nop_read, 1084 1084 pod_set_store_channel); 1085 - static DEVICE_ATTR(store_effects_setup, S_IWUGO, line6_nop_read, 1085 + static DEVICE_ATTR(store_effects_setup, S_IWUSR, line6_nop_read, 1086 1086 pod_set_store_effects_setup); 1087 - static DEVICE_ATTR(tuner_freq, S_IWUGO | S_IRUGO, pod_get_tuner_freq, 1087 + static DEVICE_ATTR(tuner_freq, S_IWUSR | S_IRUGO, pod_get_tuner_freq, 1088 1088 pod_set_tuner_freq); 1089 - static DEVICE_ATTR(tuner_mute, S_IWUGO | S_IRUGO, pod_get_tuner_mute, 1089 + static DEVICE_ATTR(tuner_mute, S_IWUSR | S_IRUGO, pod_get_tuner_mute, 1090 1090 pod_set_tuner_mute); 1091 1091 static DEVICE_ATTR(tuner_note, S_IRUGO, pod_get_tuner_note, line6_nop_write); 1092 1092 static DEVICE_ATTR(tuner_pitch, S_IRUGO, pod_get_tuner_pitch, line6_nop_write); 1093 1093 1094 1094 #ifdef CONFIG_LINE6_USB_RAW 1095 - static DEVICE_ATTR(raw, S_IWUGO, line6_nop_read, line6_set_raw); 1095 + static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw); 1096 1096 #endif 1097 1097 1098 1098 /* control info callback */
+2 -2
drivers/staging/line6/toneport.c
··· 154 154 return count; 155 155 } 156 156 157 - static DEVICE_ATTR(led_red, S_IWUGO | S_IRUGO, line6_nop_read, 157 + static DEVICE_ATTR(led_red, S_IWUSR | S_IRUGO, line6_nop_read, 158 158 toneport_set_led_red); 159 - static DEVICE_ATTR(led_green, S_IWUGO | S_IRUGO, line6_nop_read, 159 + static DEVICE_ATTR(led_green, S_IWUSR | S_IRUGO, line6_nop_read, 160 160 toneport_set_led_green); 161 161 162 162 static int toneport_send_cmd(struct usb_device *usbdev, int cmd1, int cmd2)
+6 -6
drivers/staging/line6/variax.c
··· 549 549 #endif 550 550 551 551 /* Variax workbench special files: */ 552 - static DEVICE_ATTR(model, S_IWUGO | S_IRUGO, variax_get_model, 552 + static DEVICE_ATTR(model, S_IWUSR | S_IRUGO, variax_get_model, 553 553 variax_set_model); 554 - static DEVICE_ATTR(volume, S_IWUGO | S_IRUGO, variax_get_volume, 554 + static DEVICE_ATTR(volume, S_IWUSR | S_IRUGO, variax_get_volume, 555 555 variax_set_volume); 556 - static DEVICE_ATTR(tone, S_IWUGO | S_IRUGO, variax_get_tone, variax_set_tone); 556 + static DEVICE_ATTR(tone, S_IWUSR | S_IRUGO, variax_get_tone, variax_set_tone); 557 557 static DEVICE_ATTR(name, S_IRUGO, variax_get_name, line6_nop_write); 558 558 static DEVICE_ATTR(bank, S_IRUGO, variax_get_bank, line6_nop_write); 559 559 static DEVICE_ATTR(dump, S_IRUGO, variax_get_dump, line6_nop_write); 560 - static DEVICE_ATTR(active, S_IWUGO | S_IRUGO, variax_get_active, 560 + static DEVICE_ATTR(active, S_IWUSR | S_IRUGO, variax_get_active, 561 561 variax_set_active); 562 562 static DEVICE_ATTR(guitar, S_IRUGO, variax_get_guitar, line6_nop_write); 563 563 564 564 #ifdef CONFIG_LINE6_USB_RAW 565 - static DEVICE_ATTR(raw, S_IWUGO, line6_nop_read, line6_set_raw); 566 - static DEVICE_ATTR(raw2, S_IWUGO, line6_nop_read, variax_set_raw2); 565 + static DEVICE_ATTR(raw, S_IWUSR, line6_nop_read, line6_set_raw); 566 + static DEVICE_ATTR(raw2, S_IWUSR, line6_nop_read, variax_set_raw2); 567 567 #endif 568 568 569 569 /*
+8 -2
drivers/staging/quickstart/quickstart.c
··· 355 355 static void quickstart_exit(void) 356 356 { 357 357 input_unregister_device(quickstart_input); 358 - input_free_device(quickstart_input); 359 358 360 359 device_remove_file(&pf_device->dev, &dev_attr_pressed_button); 361 360 device_remove_file(&pf_device->dev, &dev_attr_buttons); ··· 374 375 { 375 376 struct quickstart_btn **ptr = &quickstart_data.btn_lst; 376 377 int count; 378 + int ret; 377 379 378 380 quickstart_input = input_allocate_device(); 379 381 ··· 391 391 ptr = &((*ptr)->next); 392 392 } 393 393 394 - return input_register_device(quickstart_input); 394 + ret = input_register_device(quickstart_input); 395 + if (ret) { 396 + input_free_device(quickstart_input); 397 + return ret; 398 + } 399 + 400 + return 0; 395 401 } 396 402 397 403 static int __init quickstart_init(void)
+1
drivers/staging/rt2860/usb_main_dev.c
··· 182 182 {USB_DEVICE(0x2001, 0x3C09)}, /* D-Link */ 183 183 {USB_DEVICE(0x2001, 0x3C0A)}, /* D-Link 3072 */ 184 184 {USB_DEVICE(0x2019, 0xED14)}, /* Planex Communications, Inc. */ 185 + {USB_DEVICE(0x0411, 0x015D)}, /* Buffalo Airstation WLI-UC-GN */ 185 186 {} /* Terminating entry */ 186 187 }; 187 188
+22 -8
drivers/staging/rtl8187se/r8185b_init.c
··· 264 264 265 265 udelay(10); 266 266 } 267 - if (TryCnt == TC_3W_POLL_MAX_TRY_CNT) 268 - panic("HwThreeWire(): CmdReg: %#X RE|WE bits are not clear!!\n", u1bTmp); 267 + if (TryCnt == TC_3W_POLL_MAX_TRY_CNT) { 268 + printk(KERN_ERR "rtl8187se: HwThreeWire(): CmdReg:" 269 + " %#X RE|WE bits are not clear!!\n", u1bTmp); 270 + dump_stack(); 271 + return 0; 272 + } 269 273 270 274 /* RTL8187S HSSI Read/Write Function */ 271 275 u1bTmp = read_nic_byte(dev, RF_SW_CONFIG); ··· 302 298 int idx; 303 299 int ByteCnt = nDataBufBitCnt / 8; 304 300 /* printk("%d\n",nDataBufBitCnt); */ 305 - if ((nDataBufBitCnt % 8) != 0) 306 - panic("HwThreeWire(): nDataBufBitCnt(%d) should be multiple of 8!!!\n", 307 - nDataBufBitCnt); 301 + if ((nDataBufBitCnt % 8) != 0) { 302 + printk(KERN_ERR "rtl8187se: " 303 + "HwThreeWire(): nDataBufBitCnt(%d)" 304 + " should be multiple of 8!!!\n", 305 + nDataBufBitCnt); 306 + dump_stack(); 307 + nDataBufBitCnt += 8; 308 + nDataBufBitCnt &= ~7; 309 + } 308 310 309 - if (nDataBufBitCnt > 64) 310 - panic("HwThreeWire(): nDataBufBitCnt(%d) should <= 64!!!\n", 311 - nDataBufBitCnt); 311 + if (nDataBufBitCnt > 64) { 312 + printk(KERN_ERR "rtl8187se: HwThreeWire():" 313 + " nDataBufBitCnt(%d) should <= 64!!!\n", 314 + nDataBufBitCnt); 315 + dump_stack(); 316 + nDataBufBitCnt = 64; 317 + } 312 318 313 319 for (idx = 0; idx < ByteCnt; idx++) 314 320 write_nic_byte(dev, (SW_3W_DB0+idx), *(pDataBuf+idx));
+1 -1
drivers/staging/rtl8712/usb_halinit.c
··· 37 37 { 38 38 u8 val8 = 0; 39 39 u8 ret = _SUCCESS; 40 - u8 PollingCnt = 20; 40 + int PollingCnt = 20; 41 41 struct registry_priv *pregistrypriv = &padapter->registrypriv; 42 42 43 43 if (pregistrypriv->chip_version == RTL8712_FPGA) {
+1 -1
drivers/staging/samsung-laptop/samsung-laptop.c
··· 356 356 } 357 357 return count; 358 358 } 359 - static DEVICE_ATTR(silent, S_IWUGO | S_IRUGO, 359 + static DEVICE_ATTR(silent, S_IWUSR | S_IRUGO, 360 360 get_silent_state, set_silent_state); 361 361 362 362
-1
drivers/staging/speakup/fakekey.c
··· 62 62 { 63 63 if (virt_keyboard != NULL) { 64 64 input_unregister_device(virt_keyboard); 65 - input_free_device(virt_keyboard); 66 65 virt_keyboard = NULL; 67 66 } 68 67 }
+1 -1
drivers/staging/spectra/ffsport.c
··· 656 656 /* Here we force report 512 byte hardware sector size to Kernel */ 657 657 blk_queue_logical_block_size(dev->queue, 512); 658 658 659 - blk_queue_ordered(dev->queue, QUEUE_ORDERED_DRAIN_FLUSH); 659 + blk_queue_flush(dev->queue, REQ_FLUSH); 660 660 661 661 dev->thread = kthread_run(spectra_trans_thread, dev, "nand_thd"); 662 662 if (IS_ERR(dev->thread)) {
+2 -2
drivers/staging/tm6000/tm6000-cards.c
··· 545 545 546 546 /* Load tuner module */ 547 547 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 548 - NULL, "tuner", dev->tuner_addr, NULL); 548 + "tuner", dev->tuner_addr, NULL); 549 549 550 550 memset(&tun_setup, 0, sizeof(tun_setup)); 551 551 tun_setup.type = dev->tuner_type; ··· 683 683 684 684 if (dev->caps.has_tda9874) 685 685 v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap, 686 - NULL, "tvaudio", I2C_ADDR_TDA9874, NULL); 686 + "tvaudio", I2C_ADDR_TDA9874, NULL); 687 687 688 688 /* register and initialize V4L2 */ 689 689 rc = tm6000_v4l2_register(dev);
+1 -1
drivers/staging/udlfb/udlfb.c
··· 1441 1441 __ATTR_RO(metrics_bytes_identical), 1442 1442 __ATTR_RO(metrics_bytes_sent), 1443 1443 __ATTR_RO(metrics_cpu_kcycles_used), 1444 - __ATTR(metrics_reset, S_IWUGO, NULL, metrics_reset_store), 1444 + __ATTR(metrics_reset, S_IWUSR, NULL, metrics_reset_store), 1445 1445 }; 1446 1446 1447 1447 /*
+3
drivers/staging/winbond/sysdef.h
··· 2 2 3 3 #ifndef SYS_DEF_H 4 4 #define SYS_DEF_H 5 + 6 + #include <linux/delay.h> 7 + 5 8 #define WB_LINUX 6 9 #define WB_LINUX_WPA_PSK 7 10
+2 -2
drivers/staging/zram/zram_sysfs.c
··· 189 189 return sprintf(buf, "%llu\n", val); 190 190 } 191 191 192 - static DEVICE_ATTR(disksize, S_IRUGO | S_IWUGO, 192 + static DEVICE_ATTR(disksize, S_IRUGO | S_IWUSR, 193 193 disksize_show, disksize_store); 194 194 static DEVICE_ATTR(initstate, S_IRUGO, initstate_show, NULL); 195 - static DEVICE_ATTR(reset, S_IWUGO, NULL, reset_store); 195 + static DEVICE_ATTR(reset, S_IWUSR, NULL, reset_store); 196 196 static DEVICE_ATTR(num_reads, S_IRUGO, num_reads_show, NULL); 197 197 static DEVICE_ATTR(num_writes, S_IRUGO, num_writes_show, NULL); 198 198 static DEVICE_ATTR(invalid_io, S_IRUGO, invalid_io_show, NULL);
+11 -2
drivers/tty/tty_io.c
··· 559 559 560 560 tty_lock(); 561 561 562 + /* some functions below drop BTM, so we need this bit */ 563 + set_bit(TTY_HUPPING, &tty->flags); 564 + 562 565 /* inuse_filps is protected by the single tty lock, 563 566 this really needs to change if we want to flush the 564 567 workqueue with the lock held */ ··· 581 578 } 582 579 spin_unlock(&tty_files_lock); 583 580 581 + /* 582 + * it drops BTM and thus races with reopen 583 + * we protect the race by TTY_HUPPING 584 + */ 584 585 tty_ldisc_hangup(tty); 585 586 586 587 read_lock(&tasklist_lock); ··· 622 615 tty->session = NULL; 623 616 tty->pgrp = NULL; 624 617 tty->ctrl_status = 0; 625 - set_bit(TTY_HUPPED, &tty->flags); 626 618 spin_unlock_irqrestore(&tty->ctrl_lock, flags); 627 619 628 620 /* Account for the p->signal references we killed */ ··· 647 641 * can't yet guarantee all that. 648 642 */ 649 643 set_bit(TTY_HUPPED, &tty->flags); 644 + clear_bit(TTY_HUPPING, &tty->flags); 650 645 tty_ldisc_enable(tty); 651 646 652 647 tty_unlock(); ··· 1317 1310 { 1318 1311 struct tty_driver *driver = tty->driver; 1319 1312 1320 - if (test_bit(TTY_CLOSING, &tty->flags)) 1313 + if (test_bit(TTY_CLOSING, &tty->flags) || 1314 + test_bit(TTY_HUPPING, &tty->flags) || 1315 + test_bit(TTY_LDISC_CHANGING, &tty->flags)) 1321 1316 return -EIO; 1322 1317 1323 1318 if (driver->type == TTY_DRIVER_TYPE_PTY &&
+2
drivers/tty/tty_ldisc.c
··· 454 454 /* BTM here locks versus a hangup event */ 455 455 WARN_ON(!tty_locked()); 456 456 ret = ld->ops->open(tty); 457 + if (ret) 458 + clear_bit(TTY_LDISC_OPEN, &tty->flags); 457 459 return ret; 458 460 } 459 461 return 0;
+1 -1
drivers/uio/uio.c
··· 3 3 * 4 4 * Copyright(C) 2005, Benedikt Spranger <b.spranger@linutronix.de> 5 5 * Copyright(C) 2005, Thomas Gleixner <tglx@linutronix.de> 6 - * Copyright(C) 2006, Hans J. Koch <hjk@linutronix.de> 6 + * Copyright(C) 2006, Hans J. Koch <hjk@hansjkoch.de> 7 7 * Copyright(C) 2006, Greg Kroah-Hartman <greg@kroah.com> 8 8 * 9 9 * Userspace IO
+1 -1
drivers/uio/uio_cif.c
··· 1 1 /* 2 2 * UIO Hilscher CIF card driver 3 3 * 4 - * (C) 2007 Hans J. Koch <hjk@linutronix.de> 4 + * (C) 2007 Hans J. Koch <hjk@hansjkoch.de> 5 5 * Original code (C) 2005 Benedikt Spranger <b.spranger@linutronix.de> 6 6 * 7 7 * Licensed under GPL version 2 only.
+1 -1
drivers/uio/uio_netx.c
··· 2 2 * UIO driver for Hilscher NetX based fieldbus cards (cifX, comX). 3 3 * See http://www.hilscher.com for details. 4 4 * 5 - * (C) 2007 Hans J. Koch <hjk@linutronix.de> 5 + * (C) 2007 Hans J. Koch <hjk@hansjkoch.de> 6 6 * (C) 2008 Manuel Traut <manut@linutronix.de> 7 7 * 8 8 * Licensed under GPL version 2 only.
+2
drivers/usb/core/hcd.c
··· 1330 1330 */ 1331 1331 1332 1332 if (usb_endpoint_xfer_control(&urb->ep->desc)) { 1333 + if (hcd->self.uses_pio_for_control) 1334 + return ret; 1333 1335 if (hcd->self.uses_dma) { 1334 1336 urb->setup_dma = dma_map_single( 1335 1337 hcd->self.controller,
+12
drivers/usb/host/ehci-pci.c
··· 161 161 if (pdev->revision < 0xa4) 162 162 ehci->no_selective_suspend = 1; 163 163 break; 164 + 165 + /* MCP89 chips on the MacBookAir3,1 give EPROTO when 166 + * fetching device descriptors unless LPM is disabled. 167 + * There are also intermittent problems enumerating 168 + * devices with PPCD enabled. 169 + */ 170 + case 0x0d9d: 171 + ehci_info(ehci, "disable lpm/ppcd for nvidia mcp89"); 172 + ehci->has_lpm = 0; 173 + ehci->has_ppcd = 0; 174 + ehci->command &= ~CMD_PPCEE; 175 + break; 164 176 } 165 177 break; 166 178 case PCI_VENDOR_ID_VIA:
+7
drivers/usb/host/xhci-hub.c
··· 229 229 static void xhci_disable_port(struct xhci_hcd *xhci, u16 wIndex, 230 230 u32 __iomem *addr, u32 port_status) 231 231 { 232 + /* Don't allow the USB core to disable SuperSpeed ports. */ 233 + if (xhci->port_array[wIndex] == 0x03) { 234 + xhci_dbg(xhci, "Ignoring request to disable " 235 + "SuperSpeed port.\n"); 236 + return; 237 + } 238 + 232 239 /* Write 1 to disable the port */ 233 240 xhci_writel(xhci, port_status | PORT_PE, addr); 234 241 port_status = xhci_readl(xhci, addr);
+164
drivers/usb/host/xhci-mem.c
··· 1443 1443 xhci->dcbaa = NULL; 1444 1444 1445 1445 scratchpad_free(xhci); 1446 + 1447 + xhci->num_usb2_ports = 0; 1448 + xhci->num_usb3_ports = 0; 1449 + kfree(xhci->usb2_ports); 1450 + kfree(xhci->usb3_ports); 1451 + kfree(xhci->port_array); 1452 + 1446 1453 xhci->page_size = 0; 1447 1454 xhci->page_shift = 0; 1448 1455 xhci->bus_suspended = 0; ··· 1634 1627 &xhci->ir_set->erst_dequeue); 1635 1628 } 1636 1629 1630 + static void xhci_add_in_port(struct xhci_hcd *xhci, unsigned int num_ports, 1631 + u32 __iomem *addr, u8 major_revision) 1632 + { 1633 + u32 temp, port_offset, port_count; 1634 + int i; 1635 + 1636 + if (major_revision > 0x03) { 1637 + xhci_warn(xhci, "Ignoring unknown port speed, " 1638 + "Ext Cap %p, revision = 0x%x\n", 1639 + addr, major_revision); 1640 + /* Ignoring port protocol we can't understand. FIXME */ 1641 + return; 1642 + } 1643 + 1644 + /* Port offset and count in the third dword, see section 7.2 */ 1645 + temp = xhci_readl(xhci, addr + 2); 1646 + port_offset = XHCI_EXT_PORT_OFF(temp); 1647 + port_count = XHCI_EXT_PORT_COUNT(temp); 1648 + xhci_dbg(xhci, "Ext Cap %p, port offset = %u, " 1649 + "count = %u, revision = 0x%x\n", 1650 + addr, port_offset, port_count, major_revision); 1651 + /* Port count includes the current port offset */ 1652 + if (port_offset == 0 || (port_offset + port_count - 1) > num_ports) 1653 + /* WTF? "Valid values are ‘1’ to MaxPorts" */ 1654 + return; 1655 + port_offset--; 1656 + for (i = port_offset; i < (port_offset + port_count); i++) { 1657 + /* Duplicate entry. Ignore the port if the revisions differ. */ 1658 + if (xhci->port_array[i] != 0) { 1659 + xhci_warn(xhci, "Duplicate port entry, Ext Cap %p," 1660 + " port %u\n", addr, i); 1661 + xhci_warn(xhci, "Port was marked as USB %u, " 1662 + "duplicated as USB %u\n", 1663 + xhci->port_array[i], major_revision); 1664 + /* Only adjust the roothub port counts if we haven't 1665 + * found a similar duplicate. 1666 + */ 1667 + if (xhci->port_array[i] != major_revision && 1668 + xhci->port_array[i] != (u8) -1) { 1669 + if (xhci->port_array[i] == 0x03) 1670 + xhci->num_usb3_ports--; 1671 + else 1672 + xhci->num_usb2_ports--; 1673 + xhci->port_array[i] = (u8) -1; 1674 + } 1675 + /* FIXME: Should we disable the port? */ 1676 + } 1677 + xhci->port_array[i] = major_revision; 1678 + if (major_revision == 0x03) 1679 + xhci->num_usb3_ports++; 1680 + else 1681 + xhci->num_usb2_ports++; 1682 + } 1683 + /* FIXME: Should we disable ports not in the Extended Capabilities? */ 1684 + } 1685 + 1686 + /* 1687 + * Scan the Extended Capabilities for the "Supported Protocol Capabilities" that 1688 + * specify what speeds each port is supposed to be. We can't count on the port 1689 + * speed bits in the PORTSC register being correct until a device is connected, 1690 + * but we need to set up the two fake roothubs with the correct number of USB 1691 + * 3.0 and USB 2.0 ports at host controller initialization time. 1692 + */ 1693 + static int xhci_setup_port_arrays(struct xhci_hcd *xhci, gfp_t flags) 1694 + { 1695 + u32 __iomem *addr; 1696 + u32 offset; 1697 + unsigned int num_ports; 1698 + int i, port_index; 1699 + 1700 + addr = &xhci->cap_regs->hcc_params; 1701 + offset = XHCI_HCC_EXT_CAPS(xhci_readl(xhci, addr)); 1702 + if (offset == 0) { 1703 + xhci_err(xhci, "No Extended Capability registers, " 1704 + "unable to set up roothub.\n"); 1705 + return -ENODEV; 1706 + } 1707 + 1708 + num_ports = HCS_MAX_PORTS(xhci->hcs_params1); 1709 + xhci->port_array = kzalloc(sizeof(*xhci->port_array)*num_ports, flags); 1710 + if (!xhci->port_array) 1711 + return -ENOMEM; 1712 + 1713 + /* 1714 + * For whatever reason, the first capability offset is from the 1715 + * capability register base, not from the HCCPARAMS register. 1716 + * See section 5.3.6 for offset calculation. 1717 + */ 1718 + addr = &xhci->cap_regs->hc_capbase + offset; 1719 + while (1) { 1720 + u32 cap_id; 1721 + 1722 + cap_id = xhci_readl(xhci, addr); 1723 + if (XHCI_EXT_CAPS_ID(cap_id) == XHCI_EXT_CAPS_PROTOCOL) 1724 + xhci_add_in_port(xhci, num_ports, addr, 1725 + (u8) XHCI_EXT_PORT_MAJOR(cap_id)); 1726 + offset = XHCI_EXT_CAPS_NEXT(cap_id); 1727 + if (!offset || (xhci->num_usb2_ports + xhci->num_usb3_ports) 1728 + == num_ports) 1729 + break; 1730 + /* 1731 + * Once you're into the Extended Capabilities, the offset is 1732 + * always relative to the register holding the offset. 1733 + */ 1734 + addr += offset; 1735 + } 1736 + 1737 + if (xhci->num_usb2_ports == 0 && xhci->num_usb3_ports == 0) { 1738 + xhci_warn(xhci, "No ports on the roothubs?\n"); 1739 + return -ENODEV; 1740 + } 1741 + xhci_dbg(xhci, "Found %u USB 2.0 ports and %u USB 3.0 ports.\n", 1742 + xhci->num_usb2_ports, xhci->num_usb3_ports); 1743 + /* 1744 + * Note we could have all USB 3.0 ports, or all USB 2.0 ports. 1745 + * Not sure how the USB core will handle a hub with no ports... 1746 + */ 1747 + if (xhci->num_usb2_ports) { 1748 + xhci->usb2_ports = kmalloc(sizeof(*xhci->usb2_ports)* 1749 + xhci->num_usb2_ports, flags); 1750 + if (!xhci->usb2_ports) 1751 + return -ENOMEM; 1752 + 1753 + port_index = 0; 1754 + for (i = 0; i < num_ports; i++) 1755 + if (xhci->port_array[i] != 0x03) { 1756 + xhci->usb2_ports[port_index] = 1757 + &xhci->op_regs->port_status_base + 1758 + NUM_PORT_REGS*i; 1759 + xhci_dbg(xhci, "USB 2.0 port at index %u, " 1760 + "addr = %p\n", i, 1761 + xhci->usb2_ports[port_index]); 1762 + port_index++; 1763 + } 1764 + } 1765 + if (xhci->num_usb3_ports) { 1766 + xhci->usb3_ports = kmalloc(sizeof(*xhci->usb3_ports)* 1767 + xhci->num_usb3_ports, flags); 1768 + if (!xhci->usb3_ports) 1769 + return -ENOMEM; 1770 + 1771 + port_index = 0; 1772 + for (i = 0; i < num_ports; i++) 1773 + if (xhci->port_array[i] == 0x03) { 1774 + xhci->usb3_ports[port_index] = 1775 + &xhci->op_regs->port_status_base + 1776 + NUM_PORT_REGS*i; 1777 + xhci_dbg(xhci, "USB 3.0 port at index %u, " 1778 + "addr = %p\n", i, 1779 + xhci->usb3_ports[port_index]); 1780 + port_index++; 1781 + } 1782 + } 1783 + return 0; 1784 + } 1637 1785 1638 1786 int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) 1639 1787 { ··· 1970 1808 xhci->resume_done[i] = 0; 1971 1809 1972 1810 if (scratchpad_alloc(xhci, flags)) 1811 + goto fail; 1812 + if (xhci_setup_port_arrays(xhci, flags)) 1973 1813 goto fail; 1974 1814 1975 1815 return 0;
+18
drivers/usb/host/xhci.c
··· 1549 1549 cmd_completion = command->completion; 1550 1550 cmd_status = &command->status; 1551 1551 command->command_trb = xhci->cmd_ring->enqueue; 1552 + 1553 + /* Enqueue pointer can be left pointing to the link TRB, 1554 + * we must handle that 1555 + */ 1556 + if ((command->command_trb->link.control & TRB_TYPE_BITMASK) 1557 + == TRB_TYPE(TRB_LINK)) 1558 + command->command_trb = 1559 + xhci->cmd_ring->enq_seg->next->trbs; 1560 + 1552 1561 list_add_tail(&command->cmd_list, &virt_dev->cmd_list); 1553 1562 } else { 1554 1563 in_ctx = virt_dev->in_ctx; ··· 2281 2272 /* Attempt to submit the Reset Device command to the command ring */ 2282 2273 spin_lock_irqsave(&xhci->lock, flags); 2283 2274 reset_device_cmd->command_trb = xhci->cmd_ring->enqueue; 2275 + 2276 + /* Enqueue pointer can be left pointing to the link TRB, 2277 + * we must handle that 2278 + */ 2279 + if ((reset_device_cmd->command_trb->link.control & TRB_TYPE_BITMASK) 2280 + == TRB_TYPE(TRB_LINK)) 2281 + reset_device_cmd->command_trb = 2282 + xhci->cmd_ring->enq_seg->next->trbs; 2283 + 2284 2284 list_add_tail(&reset_device_cmd->cmd_list, &virt_dev->cmd_list); 2285 2285 ret = xhci_queue_reset_device(xhci, slot_id); 2286 2286 if (ret) {
+26
drivers/usb/host/xhci.h
··· 454 454 455 455 456 456 /** 457 + * struct xhci_protocol_caps 458 + * @revision: major revision, minor revision, capability ID, 459 + * and next capability pointer. 460 + * @name_string: Four ASCII characters to say which spec this xHC 461 + * follows, typically "USB ". 462 + * @port_info: Port offset, count, and protocol-defined information. 463 + */ 464 + struct xhci_protocol_caps { 465 + u32 revision; 466 + u32 name_string; 467 + u32 port_info; 468 + }; 469 + 470 + #define XHCI_EXT_PORT_MAJOR(x) (((x) >> 24) & 0xff) 471 + #define XHCI_EXT_PORT_OFF(x) ((x) & 0xff) 472 + #define XHCI_EXT_PORT_COUNT(x) (((x) >> 8) & 0xff) 473 + 474 + /** 457 475 * struct xhci_container_ctx 458 476 * @type: Type of context. Used to calculated offsets to contained contexts. 459 477 * @size: Size of the context data ··· 1258 1240 u32 suspended_ports[8]; /* which ports are 1259 1241 suspended */ 1260 1242 unsigned long resume_done[MAX_HC_PORTS]; 1243 + /* Is each xHCI roothub port a USB 3.0, USB 2.0, or USB 1.1 port? */ 1244 + u8 *port_array; 1245 + /* Array of pointers to USB 3.0 PORTSC registers */ 1246 + u32 __iomem **usb3_ports; 1247 + unsigned int num_usb3_ports; 1248 + /* Array of pointers to USB 2.0 PORTSC registers */ 1249 + u32 __iomem **usb2_ports; 1250 + unsigned int num_usb2_ports; 1261 1251 }; 1262 1252 1263 1253 /* For testing purposes */
+1
drivers/usb/misc/yurex.c
··· 536 536 .open = yurex_open, 537 537 .release = yurex_release, 538 538 .fasync = yurex_fasync, 539 + .llseek = default_llseek, 539 540 }; 540 541 541 542
+3
drivers/usb/musb/musb_core.c
··· 2116 2116 * Otherwise, wait till the gadget driver hooks up. 2117 2117 */ 2118 2118 if (!is_otg_enabled(musb) && is_host_enabled(musb)) { 2119 + struct usb_hcd *hcd = musb_to_hcd(musb); 2120 + 2119 2121 MUSB_HST_MODE(musb); 2120 2122 musb->xceiv->default_a = 1; 2121 2123 musb->xceiv->state = OTG_STATE_A_IDLE; 2122 2124 2123 2125 status = usb_add_hcd(musb_to_hcd(musb), -1, 0); 2124 2126 2127 + hcd->self.uses_pio_for_control = 1; 2125 2128 DBG(1, "%s mode, status %d, devctl %02x %c\n", 2126 2129 "HOST", status, 2127 2130 musb_readb(musb->mregs, MUSB_DEVCTL),
+86 -38
drivers/usb/musb/musb_gadget.c
··· 92 92 93 93 /* ----------------------------------------------------------------------- */ 94 94 95 + /* Maps the buffer to dma */ 96 + 97 + static inline void map_dma_buffer(struct musb_request *request, 98 + struct musb *musb) 99 + { 100 + if (request->request.dma == DMA_ADDR_INVALID) { 101 + request->request.dma = dma_map_single( 102 + musb->controller, 103 + request->request.buf, 104 + request->request.length, 105 + request->tx 106 + ? DMA_TO_DEVICE 107 + : DMA_FROM_DEVICE); 108 + request->mapped = 1; 109 + } else { 110 + dma_sync_single_for_device(musb->controller, 111 + request->request.dma, 112 + request->request.length, 113 + request->tx 114 + ? DMA_TO_DEVICE 115 + : DMA_FROM_DEVICE); 116 + request->mapped = 0; 117 + } 118 + } 119 + 120 + /* Unmap the buffer from dma and maps it back to cpu */ 121 + static inline void unmap_dma_buffer(struct musb_request *request, 122 + struct musb *musb) 123 + { 124 + if (request->request.dma == DMA_ADDR_INVALID) { 125 + DBG(20, "not unmapping a never mapped buffer\n"); 126 + return; 127 + } 128 + if (request->mapped) { 129 + dma_unmap_single(musb->controller, 130 + request->request.dma, 131 + request->request.length, 132 + request->tx 133 + ? DMA_TO_DEVICE 134 + : DMA_FROM_DEVICE); 135 + request->request.dma = DMA_ADDR_INVALID; 136 + request->mapped = 0; 137 + } else { 138 + dma_sync_single_for_cpu(musb->controller, 139 + request->request.dma, 140 + request->request.length, 141 + request->tx 142 + ? DMA_TO_DEVICE 143 + : DMA_FROM_DEVICE); 144 + 145 + } 146 + } 147 + 95 148 /* 96 149 * Immediately complete a request. 97 150 * ··· 172 119 173 120 ep->busy = 1; 174 121 spin_unlock(&musb->lock); 175 - if (is_dma_capable()) { 176 - if (req->mapped) { 177 - dma_unmap_single(musb->controller, 178 - req->request.dma, 179 - req->request.length, 180 - req->tx 181 - ? DMA_TO_DEVICE 182 - : DMA_FROM_DEVICE); 183 - req->request.dma = DMA_ADDR_INVALID; 184 - req->mapped = 0; 185 - } else if (req->request.dma != DMA_ADDR_INVALID) 186 - dma_sync_single_for_cpu(musb->controller, 187 - req->request.dma, 188 - req->request.length, 189 - req->tx 190 - ? DMA_TO_DEVICE 191 - : DMA_FROM_DEVICE); 192 - } 122 + if (is_dma_capable() && ep->dma) 123 + unmap_dma_buffer(req, musb); 193 124 if (request->status == 0) 194 125 DBG(5, "%s done request %p, %d/%d\n", 195 126 ep->end_point.name, request, ··· 432 395 #endif 433 396 434 397 if (!use_dma) { 398 + /* 399 + * Unmap the dma buffer back to cpu if dma channel 400 + * programming fails 401 + */ 402 + if (is_dma_capable() && musb_ep->dma) 403 + unmap_dma_buffer(req, musb); 404 + 435 405 musb_write_fifo(musb_ep->hw_ep, fifo_count, 436 406 (u8 *) (request->buf + request->actual)); 437 407 request->actual += fifo_count; ··· 757 713 return; 758 714 } 759 715 #endif 716 + /* 717 + * Unmap the dma buffer back to cpu if dma channel 718 + * programming fails. This buffer is mapped if the 719 + * channel allocation is successful 720 + */ 721 + if (is_dma_capable() && musb_ep->dma) { 722 + unmap_dma_buffer(req, musb); 723 + 724 + /* 725 + * Clear DMAENAB and AUTOCLEAR for the 726 + * PIO mode transfer 727 + */ 728 + csr &= ~(MUSB_RXCSR_DMAENAB | MUSB_RXCSR_AUTOCLEAR); 729 + musb_writew(epio, MUSB_RXCSR, csr); 730 + } 760 731 761 732 musb_read_fifo(musb_ep->hw_ep, fifo_count, (u8 *) 762 733 (request->buf + request->actual)); ··· 896 837 if (!request) 897 838 return; 898 839 } 840 + #if defined(CONFIG_USB_INVENTRA_DMA) || defined(CONFIG_USB_TUSB_OMAP_DMA) 899 841 exit: 842 + #endif 900 843 /* Analyze request */ 901 844 rxstate(musb, to_musb_request(request)); 902 845 } ··· 1211 1150 request->epnum = musb_ep->current_epnum; 1212 1151 request->tx = musb_ep->is_in; 1213 1152 1214 - if (is_dma_capable() && musb_ep->dma) { 1215 - if (request->request.dma == DMA_ADDR_INVALID) { 1216 - request->request.dma = dma_map_single( 1217 - musb->controller, 1218 - request->request.buf, 1219 - request->request.length, 1220 - request->tx 1221 - ? DMA_TO_DEVICE 1222 - : DMA_FROM_DEVICE); 1223 - request->mapped = 1; 1224 - } else { 1225 - dma_sync_single_for_device(musb->controller, 1226 - request->request.dma, 1227 - request->request.length, 1228 - request->tx 1229 - ? DMA_TO_DEVICE 1230 - : DMA_FROM_DEVICE); 1231 - request->mapped = 0; 1232 - } 1233 - } else 1153 + if (is_dma_capable() && musb_ep->dma) 1154 + map_dma_buffer(request, musb); 1155 + else 1234 1156 request->mapped = 0; 1235 1157 1236 1158 spin_lock_irqsave(&musb->lock, lockflags); ··· 1833 1789 spin_unlock_irqrestore(&musb->lock, flags); 1834 1790 1835 1791 if (is_otg_enabled(musb)) { 1792 + struct usb_hcd *hcd = musb_to_hcd(musb); 1793 + 1836 1794 DBG(3, "OTG startup...\n"); 1837 1795 1838 1796 /* REVISIT: funcall to other code, which also ··· 1849 1803 musb->gadget_driver = NULL; 1850 1804 musb->g.dev.driver = NULL; 1851 1805 spin_unlock_irqrestore(&musb->lock, flags); 1806 + } else { 1807 + hcd->self.uses_pio_for_control = 1; 1852 1808 } 1853 1809 } 1854 1810 }
+2
drivers/usb/serial/ftdi_sio.c
··· 201 201 { USB_DEVICE(FTDI_VID, FTDI_MTXORB_5_PID) }, 202 202 { USB_DEVICE(FTDI_VID, FTDI_MTXORB_6_PID) }, 203 203 { USB_DEVICE(FTDI_VID, FTDI_R2000KU_TRUE_RNG) }, 204 + { USB_DEVICE(FTDI_VID, FTDI_VARDAAN_PID) }, 204 205 { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_0100_PID) }, 205 206 { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_0101_PID) }, 206 207 { USB_DEVICE(MTXORB_VID, MTXORB_FTDI_RANGE_0102_PID) }, ··· 697 696 .driver_info = (kernel_ulong_t)&ftdi_NDI_device_quirk }, 698 697 { USB_DEVICE(TELLDUS_VID, TELLDUS_TELLSTICK_PID) }, 699 698 { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_SERIAL_VX7_PID) }, 699 + { USB_DEVICE(RTSYSTEMS_VID, RTSYSTEMS_CT29B_PID) }, 700 700 { USB_DEVICE(FTDI_VID, FTDI_MAXSTREAM_PID) }, 701 701 { USB_DEVICE(FTDI_VID, FTDI_PHI_FISCO_PID) }, 702 702 { USB_DEVICE(TML_VID, TML_USB_SERIAL_PID) },
+4
drivers/usb/serial/ftdi_sio_ids.h
··· 114 114 /* Lenz LI-USB Computer Interface. */ 115 115 #define FTDI_LENZ_LIUSB_PID 0xD780 116 116 117 + /* Vardaan Enterprises Serial Interface VEUSB422R3 */ 118 + #define FTDI_VARDAAN_PID 0xF070 119 + 117 120 /* 118 121 * Xsens Technologies BV products (http://www.xsens.com). 119 122 */ ··· 724 721 */ 725 722 #define RTSYSTEMS_VID 0x2100 /* Vendor ID */ 726 723 #define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */ 724 + #define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */ 727 725 728 726 /* 729 727 * Bayer Ascensia Contour blood glucose meter USB-converter cable.
+3
drivers/usb/serial/usb-serial.c
··· 51 51 .suspend = usb_serial_suspend, 52 52 .resume = usb_serial_resume, 53 53 .no_dynamic_id = 1, 54 + .supports_autosuspend = 1, 54 55 }; 55 56 56 57 /* There is no MODULE_DEVICE_TABLE for usbserial.c. Instead ··· 1344 1343 return -ENODEV; 1345 1344 1346 1345 fixup_generic(driver); 1346 + if (driver->usb_driver) 1347 + driver->usb_driver->supports_autosuspend = 1; 1347 1348 1348 1349 if (!driver->description) 1349 1350 driver->description = driver->driver.name;
+6 -8
drivers/video/da8xx-fb.c
··· 1029 1029 goto err_release_pl_mem; 1030 1030 } 1031 1031 1032 - ret = request_irq(par->irq, lcdc_irq_handler, 0, DRIVER_NAME, par); 1033 - if (ret) 1034 - goto err_release_pl_mem; 1035 - 1036 1032 /* Initialize par */ 1037 1033 da8xx_fb_info->var.bits_per_pixel = lcd_cfg->bpp; 1038 1034 ··· 1056 1060 1057 1061 ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0); 1058 1062 if (ret) 1059 - goto err_free_irq; 1063 + goto err_release_pl_mem; 1060 1064 da8xx_fb_info->cmap.len = par->palette_sz; 1061 1065 1062 1066 /* initialize var_screeninfo */ ··· 1084 1088 goto err_cpu_freq; 1085 1089 } 1086 1090 #endif 1091 + 1092 + ret = request_irq(par->irq, lcdc_irq_handler, 0, DRIVER_NAME, par); 1093 + if (ret) 1094 + goto irq_freq; 1087 1095 return 0; 1088 1096 1097 + irq_freq: 1089 1098 #ifdef CONFIG_CPU_FREQ 1090 1099 err_cpu_freq: 1091 1100 unregister_framebuffer(da8xx_fb_info); ··· 1098 1097 1099 1098 err_dealloc_cmap: 1100 1099 fb_dealloc_cmap(&da8xx_fb_info->cmap); 1101 - 1102 - err_free_irq: 1103 - free_irq(par->irq, par); 1104 1100 1105 1101 err_release_pl_mem: 1106 1102 dma_free_coherent(NULL, PALETTE_SIZE, par->v_palette_base,
+1
drivers/video/fbcmap.c
··· 80 80 * @cmap: frame buffer colormap structure 81 81 * @len: length of @cmap 82 82 * @transp: boolean, 1 if there is transparency, 0 otherwise 83 + * @flags: flags for kmalloc memory allocation 83 84 * 84 85 * Allocates memory for a colormap @cmap. @len is the 85 86 * number of entries in the palette.
+3 -1
drivers/video/geode/lxfb.h
··· 22 22 #define DC_HFILT_COUNT 0x100 23 23 #define DC_VFILT_COUNT 0x100 24 24 #define VP_COEFF_SIZE 0x1000 25 + #define VP_PAL_COUNT 0x100 25 26 26 27 #define OUTPUT_CRT 0x01 27 28 #define OUTPUT_PANEL 0x02 ··· 49 48 uint64_t vp[VP_REG_COUNT]; 50 49 uint64_t fp[FP_REG_COUNT]; 51 50 52 - uint32_t pal[DC_PAL_COUNT]; 51 + uint32_t dc_pal[DC_PAL_COUNT]; 52 + uint32_t vp_pal[VP_PAL_COUNT]; 53 53 uint32_t hcoeff[DC_HFILT_COUNT * 2]; 54 54 uint32_t vcoeff[DC_VFILT_COUNT]; 55 55 uint32_t vp_coeff[VP_COEFF_SIZE / 4];
+15 -5
drivers/video/geode/lxfb_ops.c
··· 610 610 memcpy(par->vp, par->vp_regs, sizeof(par->vp)); 611 611 memcpy(par->fp, par->vp_regs + VP_FP_START, sizeof(par->fp)); 612 612 613 - /* save the palette */ 613 + /* save the display controller palette */ 614 614 write_dc(par, DC_PAL_ADDRESS, 0); 615 - for (i = 0; i < ARRAY_SIZE(par->pal); i++) 616 - par->pal[i] = read_dc(par, DC_PAL_DATA); 615 + for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++) 616 + par->dc_pal[i] = read_dc(par, DC_PAL_DATA); 617 + 618 + /* save the video processor palette */ 619 + write_vp(par, VP_PAR, 0); 620 + for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++) 621 + par->vp_pal[i] = read_vp(par, VP_PDR); 617 622 618 623 /* save the horizontal filter coefficients */ 619 624 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL; ··· 711 706 712 707 /* restore the palette */ 713 708 write_dc(par, DC_PAL_ADDRESS, 0); 714 - for (i = 0; i < ARRAY_SIZE(par->pal); i++) 715 - write_dc(par, DC_PAL_DATA, par->pal[i]); 709 + for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++) 710 + write_dc(par, DC_PAL_DATA, par->dc_pal[i]); 716 711 717 712 /* restore the horizontal filter coefficients */ 718 713 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL; ··· 755 750 write_vp(par, i, par->vp[i]); 756 751 } 757 752 } 753 + 754 + /* restore video processor palette */ 755 + write_vp(par, VP_PAR, 0); 756 + for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++) 757 + write_vp(par, VP_PDR, par->vp_pal[i]); 758 758 759 759 /* restore video coeff ram */ 760 760 memcpy(par->vp_regs + VP_VCR, par->vp_coeff, sizeof(par->vp_coeff));
+3
drivers/watchdog/Kconfig
··· 558 558 This is the driver for the built-in watchdog timer on the IT8712F 559 559 Super I/0 chipset used on many motherboards. 560 560 561 + If the driver does not work, then make sure that the game port in 562 + the BIOS is enabled. 563 + 561 564 To compile this driver as a module, choose M here: the 562 565 module will be called it8712f_wdt. 563 566
+12 -30
drivers/watchdog/bcm63xx_wdt.c
··· 18 18 #include <linux/miscdevice.h> 19 19 #include <linux/module.h> 20 20 #include <linux/moduleparam.h> 21 - #include <linux/reboot.h> 22 21 #include <linux/types.h> 23 22 #include <linux/uaccess.h> 24 23 #include <linux/watchdog.h> ··· 219 220 } 220 221 } 221 222 222 - static int bcm63xx_wdt_notify_sys(struct notifier_block *this, 223 - unsigned long code, void *unused) 224 - { 225 - if (code == SYS_DOWN || code == SYS_HALT) 226 - bcm63xx_wdt_pause(); 227 - return NOTIFY_DONE; 228 - } 229 - 230 223 static const struct file_operations bcm63xx_wdt_fops = { 231 224 .owner = THIS_MODULE, 232 225 .llseek = no_llseek, ··· 234 243 .fops = &bcm63xx_wdt_fops, 235 244 }; 236 245 237 - static struct notifier_block bcm63xx_wdt_notifier = { 238 - .notifier_call = bcm63xx_wdt_notify_sys, 239 - }; 240 246 241 - 242 - static int bcm63xx_wdt_probe(struct platform_device *pdev) 247 + static int __devinit bcm63xx_wdt_probe(struct platform_device *pdev) 243 248 { 244 249 int ret; 245 250 struct resource *r; ··· 267 280 wdt_time); 268 281 } 269 282 270 - ret = register_reboot_notifier(&bcm63xx_wdt_notifier); 271 - if (ret) { 272 - dev_err(&pdev->dev, "failed to register reboot_notifier\n"); 273 - goto unregister_timer; 274 - } 275 - 276 283 ret = misc_register(&bcm63xx_wdt_miscdev); 277 284 if (ret < 0) { 278 285 dev_err(&pdev->dev, "failed to register watchdog device\n"); 279 - goto unregister_reboot_notifier; 286 + goto unregister_timer; 280 287 } 281 288 282 289 dev_info(&pdev->dev, " started, timer margin: %d sec\n", ··· 278 297 279 298 return 0; 280 299 281 - unregister_reboot_notifier: 282 - unregister_reboot_notifier(&bcm63xx_wdt_notifier); 283 300 unregister_timer: 284 301 bcm63xx_timer_unregister(TIMER_WDT_ID); 285 302 unmap: ··· 285 306 return ret; 286 307 } 287 308 288 - static int bcm63xx_wdt_remove(struct platform_device *pdev) 309 + static int __devexit bcm63xx_wdt_remove(struct platform_device *pdev) 289 310 { 290 311 if (!nowayout) 291 312 bcm63xx_wdt_pause(); 292 313 293 314 misc_deregister(&bcm63xx_wdt_miscdev); 294 - 295 - iounmap(bcm63xx_wdt_device.regs); 296 - 297 - unregister_reboot_notifier(&bcm63xx_wdt_notifier); 298 315 bcm63xx_timer_unregister(TIMER_WDT_ID); 299 - 316 + iounmap(bcm63xx_wdt_device.regs); 300 317 return 0; 318 + } 319 + 320 + static void bcm63xx_wdt_shutdown(struct platform_device *pdev) 321 + { 322 + bcm63xx_wdt_pause(); 301 323 } 302 324 303 325 static struct platform_driver bcm63xx_wdt = { 304 326 .probe = bcm63xx_wdt_probe, 305 - .remove = bcm63xx_wdt_remove, 327 + .remove = __devexit_p(bcm63xx_wdt_remove), 328 + .shutdown = bcm63xx_wdt_shutdown, 306 329 .driver = { 330 + .owner = THIS_MODULE, 307 331 .name = "bcm63xx-wdt", 308 332 } 309 333 };
+1
drivers/watchdog/gef_wdt.c
··· 30 30 #include <linux/module.h> 31 31 #include <linux/miscdevice.h> 32 32 #include <linux/watchdog.h> 33 + #include <linux/fs.h> 33 34 #include <linux/of.h> 34 35 #include <linux/of_platform.h> 35 36 #include <linux/io.h>
+6 -2
drivers/watchdog/iTCO_wdt.c
··· 32 32 * document number 322169-001, 322170-003: 5 Series, 3400 Series (PCH) 33 33 * document number 320066-003, 320257-008: EP80597 (IICH) 34 34 * document number TBD : Cougar Point (CPT) 35 + * document number TBD : Patsburg (PBG) 35 36 */ 36 37 37 38 /* ··· 147 146 TCO_CPT29, /* Cougar Point */ 148 147 TCO_CPT30, /* Cougar Point */ 149 148 TCO_CPT31, /* Cougar Point */ 150 - TCO_PBG, /* Patsburg */ 149 + TCO_PBG1, /* Patsburg */ 150 + TCO_PBG2, /* Patsburg */ 151 151 }; 152 152 153 153 static struct { ··· 236 234 {"Cougar Point", 2}, 237 235 {"Cougar Point", 2}, 238 236 {"Cougar Point", 2}, 237 + {"Patsburg", 2}, 239 238 {"Patsburg", 2}, 240 239 {NULL, 0} 241 240 }; ··· 353 350 { ITCO_PCI_DEVICE(0x1c5d, TCO_CPT29)}, 354 351 { ITCO_PCI_DEVICE(0x1c5e, TCO_CPT30)}, 355 352 { ITCO_PCI_DEVICE(0x1c5f, TCO_CPT31)}, 356 - { ITCO_PCI_DEVICE(0x1d40, TCO_PBG)}, 353 + { ITCO_PCI_DEVICE(0x1d40, TCO_PBG1)}, 354 + { ITCO_PCI_DEVICE(0x1d41, TCO_PBG2)}, 357 355 { 0, }, /* End of list */ 358 356 }; 359 357 MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl);
+10 -2
drivers/xen/balloon.c
··· 412 412 413 413 register_balloon(&balloon_sysdev); 414 414 415 - /* Initialise the balloon with excess memory space. */ 416 - extra_pfn_end = min(e820_end_of_ram_pfn(), 415 + /* 416 + * Initialise the balloon with excess memory space. We need 417 + * to make sure we don't add memory which doesn't exist or 418 + * logically exist. The E820 map can be trimmed to be smaller 419 + * than the amount of physical memory due to the mem= command 420 + * line parameter. And if this is a 32-bit non-HIGHMEM kernel 421 + * on a system with memory which requires highmem to access, 422 + * don't try to use it. 423 + */ 424 + extra_pfn_end = min(min(max_pfn, e820_end_of_ram_pfn()), 417 425 (unsigned long)PFN_DOWN(xen_extra_mem_start + xen_extra_mem_size)); 418 426 for (pfn = PFN_UP(xen_extra_mem_start); 419 427 pfn < extra_pfn_end;
+76 -33
drivers/xen/events.c
··· 105 105 106 106 static struct irq_info *irq_info; 107 107 static int *pirq_to_irq; 108 - static int nr_pirqs; 109 108 110 109 static int *evtchn_to_irq; 111 110 struct cpu_evtchn_s { ··· 384 385 return ret; 385 386 } 386 387 387 - /* callers of this function should make sure that PHYSDEVOP_get_nr_pirqs 388 - * succeeded otherwise nr_pirqs won't hold the right value */ 389 - static int find_unbound_pirq(void) 388 + static int find_unbound_pirq(int type) 390 389 { 391 - int i; 392 - for (i = nr_pirqs-1; i >= 0; i--) { 390 + int rc, i; 391 + struct physdev_get_free_pirq op_get_free_pirq; 392 + op_get_free_pirq.type = type; 393 + 394 + rc = HYPERVISOR_physdev_op(PHYSDEVOP_get_free_pirq, &op_get_free_pirq); 395 + if (!rc) 396 + return op_get_free_pirq.pirq; 397 + 398 + for (i = 0; i < nr_irqs; i++) { 393 399 if (pirq_to_irq[i] < 0) 394 400 return i; 395 401 } ··· 427 423 if (irq == start) 428 424 goto no_irqs; 429 425 430 - res = irq_alloc_desc_at(irq, 0); 426 + res = irq_alloc_desc_at(irq, -1); 431 427 432 428 if (WARN_ON(res != irq)) 433 429 return -1; ··· 615 611 616 612 spin_lock(&irq_mapping_update_lock); 617 613 618 - if ((pirq > nr_pirqs) || (gsi > nr_irqs)) { 614 + if ((pirq > nr_irqs) || (gsi > nr_irqs)) { 619 615 printk(KERN_WARNING "xen_map_pirq_gsi: %s %s is incorrect!\n", 620 - pirq > nr_pirqs ? "nr_pirqs" :"", 621 - gsi > nr_irqs ? "nr_irqs" : ""); 616 + pirq > nr_irqs ? "pirq" :"", 617 + gsi > nr_irqs ? "gsi" : ""); 622 618 goto out; 623 619 } 624 620 ··· 634 630 if (identity_mapped_irq(gsi) || (!xen_initial_domain() && 635 631 xen_pv_domain())) { 636 632 irq = gsi; 637 - irq_alloc_desc_at(irq, 0); 633 + irq_alloc_desc_at(irq, -1); 638 634 } else 639 635 irq = find_unbound_irq(); 640 636 ··· 668 664 #include <linux/msi.h> 669 665 #include "../pci/msi.h" 670 666 671 - void xen_allocate_pirq_msi(char *name, int *irq, int *pirq) 667 + void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc) 672 668 { 673 669 spin_lock(&irq_mapping_update_lock); 674 670 675 - *irq = find_unbound_irq(); 676 - if (*irq == -1) 677 - goto out; 671 + if (alloc & XEN_ALLOC_IRQ) { 672 + *irq = find_unbound_irq(); 673 + if (*irq == -1) 674 + goto out; 675 + } 678 676 679 - *pirq = find_unbound_pirq(); 680 - if (*pirq == -1) 681 - goto out; 677 + if (alloc & XEN_ALLOC_PIRQ) { 678 + *pirq = find_unbound_pirq(MAP_PIRQ_TYPE_MSI); 679 + if (*pirq == -1) 680 + goto out; 681 + } 682 682 683 683 set_irq_chip_and_handler_name(*irq, &xen_pirq_chip, 684 684 handle_level_irq, name); ··· 770 762 printk(KERN_WARNING "unmap irq failed %d\n", rc); 771 763 goto out; 772 764 } 765 + pirq_to_irq[info->u.pirq.pirq] = -1; 773 766 } 774 767 irq_info[irq] = mk_unbound_info(); 775 768 ··· 789 780 int xen_gsi_from_irq(unsigned irq) 790 781 { 791 782 return gsi_from_irq(irq); 783 + } 784 + 785 + int xen_irq_from_pirq(unsigned pirq) 786 + { 787 + return pirq_to_irq[pirq]; 792 788 } 793 789 794 790 int bind_evtchn_to_irq(unsigned int evtchn) ··· 1293 1279 return ret; 1294 1280 } 1295 1281 1282 + static void restore_cpu_pirqs(void) 1283 + { 1284 + int pirq, rc, irq, gsi; 1285 + struct physdev_map_pirq map_irq; 1286 + 1287 + for (pirq = 0; pirq < nr_irqs; pirq++) { 1288 + irq = pirq_to_irq[pirq]; 1289 + if (irq == -1) 1290 + continue; 1291 + 1292 + /* save/restore of PT devices doesn't work, so at this point the 1293 + * only devices present are GSI based emulated devices */ 1294 + gsi = gsi_from_irq(irq); 1295 + if (!gsi) 1296 + continue; 1297 + 1298 + map_irq.domid = DOMID_SELF; 1299 + map_irq.type = MAP_PIRQ_TYPE_GSI; 1300 + map_irq.index = gsi; 1301 + map_irq.pirq = pirq; 1302 + 1303 + rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq); 1304 + if (rc) { 1305 + printk(KERN_WARNING "xen map irq failed gsi=%d irq=%d pirq=%d rc=%d\n", 1306 + gsi, irq, pirq, rc); 1307 + irq_info[irq] = mk_unbound_info(); 1308 + pirq_to_irq[pirq] = -1; 1309 + continue; 1310 + } 1311 + 1312 + printk(KERN_DEBUG "xen: --> irq=%d, pirq=%d\n", irq, map_irq.pirq); 1313 + 1314 + startup_pirq(irq); 1315 + } 1316 + } 1317 + 1296 1318 static void restore_cpu_virqs(unsigned int cpu) 1297 1319 { 1298 1320 struct evtchn_bind_virq bind_virq; ··· 1472 1422 1473 1423 unmask_evtchn(evtchn); 1474 1424 } 1425 + 1426 + restore_cpu_pirqs(); 1475 1427 } 1476 1428 1477 1429 static struct irq_chip xen_dynamic_chip __read_mostly = { ··· 1558 1506 1559 1507 void __init xen_init_IRQ(void) 1560 1508 { 1561 - int i, rc; 1562 - struct physdev_nr_pirqs op_nr_pirqs; 1509 + int i; 1563 1510 1564 1511 cpu_evtchn_mask_p = kcalloc(nr_cpu_ids, sizeof(struct cpu_evtchn_s), 1565 1512 GFP_KERNEL); 1566 1513 irq_info = kcalloc(nr_irqs, sizeof(*irq_info), GFP_KERNEL); 1567 1514 1568 - rc = HYPERVISOR_physdev_op(PHYSDEVOP_get_nr_pirqs, &op_nr_pirqs); 1569 - if (rc < 0) { 1570 - nr_pirqs = nr_irqs; 1571 - if (rc != -ENOSYS) 1572 - printk(KERN_WARNING "PHYSDEVOP_get_nr_pirqs returned rc=%d\n", rc); 1573 - } else { 1574 - if (xen_pv_domain() && !xen_initial_domain()) 1575 - nr_pirqs = max((int)op_nr_pirqs.nr_pirqs, nr_irqs); 1576 - else 1577 - nr_pirqs = op_nr_pirqs.nr_pirqs; 1578 - } 1579 - pirq_to_irq = kcalloc(nr_pirqs, sizeof(*pirq_to_irq), GFP_KERNEL); 1580 - for (i = 0; i < nr_pirqs; i++) 1515 + /* We are using nr_irqs as the maximum number of pirq available but 1516 + * that number is actually chosen by Xen and we don't know exactly 1517 + * what it is. Be careful choosing high pirq numbers. */ 1518 + pirq_to_irq = kcalloc(nr_irqs, sizeof(*pirq_to_irq), GFP_KERNEL); 1519 + for (i = 0; i < nr_irqs; i++) 1581 1520 pirq_to_irq[i] = -1; 1582 1521 1583 1522 evtchn_to_irq = kcalloc(NR_EVENT_CHANNELS, sizeof(*evtchn_to_irq),
+1
drivers/xen/manage.c
··· 49 49 50 50 if (!*cancelled) { 51 51 xen_irq_resume(); 52 + xen_console_resume(); 52 53 xen_timer_resume(); 53 54 } 54 55
+8
fs/cifs/Kconfig
··· 4 4 select NLS 5 5 select CRYPTO 6 6 select CRYPTO_MD5 7 + select CRYPTO_HMAC 7 8 select CRYPTO_ARC4 8 9 help 9 10 This is the client VFS module for the Common Internet File System ··· 143 142 Makes CIFS FS-Cache capable. Say Y here if you want your CIFS data 144 143 to be cached locally on disk through the general filesystem cache 145 144 manager. If unsure, say N. 145 + 146 + config CIFS_ACL 147 + bool "Provide CIFS ACL support (EXPERIMENTAL)" 148 + depends on EXPERIMENTAL && CIFS_XATTR 149 + help 150 + Allows to fetch CIFS/NTFS ACL from the server. The DACL blob 151 + is handed over to the application/caller. 146 152 147 153 config CIFS_EXPERIMENTAL 148 154 bool "CIFS Experimental Features (EXPERIMENTAL)"
+28 -20
fs/cifs/cifsacl.c
··· 560 560 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb); 561 561 562 562 if (IS_ERR(tlink)) 563 - return NULL; 563 + return ERR_CAST(tlink); 564 564 565 565 xid = GetXid(); 566 566 rc = CIFSSMBGetCIFSACL(xid, tlink_tcon(tlink), fid, &pntsd, pacllen); ··· 568 568 569 569 cifs_put_tlink(tlink); 570 570 571 - cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen); 571 + cFYI(1, "%s: rc = %d ACL len %d", __func__, rc, *pacllen); 572 + if (rc) 573 + return ERR_PTR(rc); 572 574 return pntsd; 573 575 } 574 576 ··· 585 583 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb); 586 584 587 585 if (IS_ERR(tlink)) 588 - return NULL; 586 + return ERR_CAST(tlink); 589 587 590 588 tcon = tlink_tcon(tlink); 591 589 xid = GetXid(); ··· 593 591 rc = CIFSSMBOpen(xid, tcon, path, FILE_OPEN, READ_CONTROL, 0, 594 592 &fid, &oplock, NULL, cifs_sb->local_nls, 595 593 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR); 596 - if (rc) { 597 - cERROR(1, "Unable to open file to get ACL"); 598 - goto out; 594 + if (!rc) { 595 + rc = CIFSSMBGetCIFSACL(xid, tcon, fid, &pntsd, pacllen); 596 + CIFSSMBClose(xid, tcon, fid); 599 597 } 600 598 601 - rc = CIFSSMBGetCIFSACL(xid, tcon, fid, &pntsd, pacllen); 602 - cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen); 603 - 604 - CIFSSMBClose(xid, tcon, fid); 605 - out: 606 599 cifs_put_tlink(tlink); 607 600 FreeXid(xid); 601 + 602 + cFYI(1, "%s: rc = %d ACL len %d", __func__, rc, *pacllen); 603 + if (rc) 604 + return ERR_PTR(rc); 608 605 return pntsd; 609 606 } 610 607 611 608 /* Retrieve an ACL from the server */ 612 - static struct cifs_ntsd *get_cifs_acl(struct cifs_sb_info *cifs_sb, 609 + struct cifs_ntsd *get_cifs_acl(struct cifs_sb_info *cifs_sb, 613 610 struct inode *inode, const char *path, 614 611 u32 *pacllen) 615 612 { ··· 696 695 } 697 696 698 697 /* Translate the CIFS ACL (simlar to NTFS ACL) for a file into mode bits */ 699 - void 698 + int 700 699 cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr, 701 700 struct inode *inode, const char *path, const __u16 *pfid) 702 701 { ··· 712 711 pntsd = get_cifs_acl(cifs_sb, inode, path, &acllen); 713 712 714 713 /* if we can retrieve the ACL, now parse Access Control Entries, ACEs */ 715 - if (pntsd) 714 + if (IS_ERR(pntsd)) { 715 + rc = PTR_ERR(pntsd); 716 + cERROR(1, "%s: error %d getting sec desc", __func__, rc); 717 + } else { 716 718 rc = parse_sec_desc(pntsd, acllen, fattr); 717 - if (rc) 718 - cFYI(1, "parse sec desc failed rc = %d", rc); 719 + kfree(pntsd); 720 + if (rc) 721 + cERROR(1, "parse sec desc failed rc = %d", rc); 722 + } 719 723 720 - kfree(pntsd); 721 - return; 724 + return rc; 722 725 } 723 726 724 727 /* Convert mode bits to an ACL so we can update the ACL on the server */ 725 - int mode_to_acl(struct inode *inode, const char *path, __u64 nmode) 728 + int mode_to_cifs_acl(struct inode *inode, const char *path, __u64 nmode) 726 729 { 727 730 int rc = 0; 728 731 __u32 secdesclen = 0; ··· 741 736 /* Add three ACEs for owner, group, everyone getting rid of 742 737 other ACEs as chmod disables ACEs and set the security descriptor */ 743 738 744 - if (pntsd) { 739 + if (IS_ERR(pntsd)) { 740 + rc = PTR_ERR(pntsd); 741 + cERROR(1, "%s: error %d getting sec desc", __func__, rc); 742 + } else { 745 743 /* allocate memory for the smb header, 746 744 set security descriptor request security descriptor 747 745 parameters, and secuirty descriptor itself */
+2
fs/cifs/cifsfs.c
··· 458 458 seq_printf(s, ",acl"); 459 459 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MF_SYMLINKS) 460 460 seq_printf(s, ",mfsymlinks"); 461 + if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_FSCACHE) 462 + seq_printf(s, ",fsc"); 461 463 462 464 seq_printf(s, ",rsize=%d", cifs_sb->rsize); 463 465 seq_printf(s, ",wsize=%d", cifs_sb->wsize);
+4 -2
fs/cifs/cifsproto.h
··· 130 130 extern int cifs_get_inode_info_unix(struct inode **pinode, 131 131 const unsigned char *search_path, 132 132 struct super_block *sb, int xid); 133 - extern void cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, 133 + extern int cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, 134 134 struct cifs_fattr *fattr, struct inode *inode, 135 135 const char *path, const __u16 *pfid); 136 - extern int mode_to_acl(struct inode *inode, const char *path, __u64); 136 + extern int mode_to_cifs_acl(struct inode *inode, const char *path, __u64); 137 + extern struct cifs_ntsd *get_cifs_acl(struct cifs_sb_info *, struct inode *, 138 + const char *, u32 *); 137 139 138 140 extern int cifs_mount(struct super_block *, struct cifs_sb_info *, char *, 139 141 const char *);
+5
fs/cifs/connect.c
··· 1352 1352 "supported. Instead set " 1353 1353 "/proc/fs/cifs/LookupCacheEnabled to 0\n"); 1354 1354 } else if (strnicmp(data, "fsc", 3) == 0) { 1355 + #ifndef CONFIG_CIFS_FSCACHE 1356 + cERROR(1, "FS-Cache support needs CONFIG_CIFS_FSCACHE" 1357 + "kernel config option set"); 1358 + return 1; 1359 + #endif 1355 1360 vol->fsc = true; 1356 1361 } else if (strnicmp(data, "mfsymlinks", 10) == 0) { 1357 1362 vol->mfsymlinks = true;
+1 -1
fs/cifs/dns_resolve.c
··· 66 66 /* Search for server name delimiter */ 67 67 sep = memchr(hostname, '\\', len); 68 68 if (sep) 69 - len = sep - unc; 69 + len = sep - hostname; 70 70 else 71 71 cFYI(1, "%s: probably server name is whole unc: %s", 72 72 __func__, unc);
+3 -1
fs/cifs/file.c
··· 2271 2271 2272 2272 void cifs_oplock_break_put(struct cifsFileInfo *cfile) 2273 2273 { 2274 + struct super_block *sb = cfile->dentry->d_sb; 2275 + 2274 2276 cifsFileInfo_put(cfile); 2275 - cifs_sb_deactive(cfile->dentry->d_sb); 2277 + cifs_sb_deactive(sb); 2276 2278 } 2277 2279 2278 2280 const struct address_space_operations cifs_addr_ops = {
+6 -6
fs/cifs/fscache.c
··· 2 2 * fs/cifs/fscache.c - CIFS filesystem cache interface 3 3 * 4 4 * Copyright (c) 2010 Novell, Inc. 5 - * Author(s): Suresh Jayaraman (sjayaraman@suse.de> 5 + * Author(s): Suresh Jayaraman <sjayaraman@suse.de> 6 6 * 7 7 * This library is free software; you can redistribute it and/or modify 8 8 * it under the terms of the GNU Lesser General Public License as published ··· 67 67 if (cifsi->fscache) 68 68 return; 69 69 70 - cifsi->fscache = fscache_acquire_cookie(tcon->fscache, 70 + if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_FSCACHE) { 71 + cifsi->fscache = fscache_acquire_cookie(tcon->fscache, 71 72 &cifs_fscache_inode_object_def, cifsi); 72 - cFYI(1, "CIFS: got FH cookie (0x%p/0x%p)", tcon->fscache, 73 + cFYI(1, "CIFS: got FH cookie (0x%p/0x%p)", tcon->fscache, 73 74 cifsi->fscache); 75 + } 74 76 } 75 77 76 78 void cifs_fscache_release_inode_cookie(struct inode *inode) ··· 103 101 { 104 102 if ((filp->f_flags & O_ACCMODE) != O_RDONLY) 105 103 cifs_fscache_disable_inode_cookie(inode); 106 - else { 104 + else 107 105 cifs_fscache_enable_inode_cookie(inode); 108 - cFYI(1, "CIFS: fscache inode cookie set"); 109 - } 110 106 } 111 107 112 108 void cifs_fscache_reset_inode_cookie(struct inode *inode)
+24 -12
fs/cifs/inode.c
··· 689 689 #ifdef CONFIG_CIFS_EXPERIMENTAL 690 690 /* fill in 0777 bits from ACL */ 691 691 if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { 692 - cFYI(1, "Getting mode bits from ACL"); 693 - cifs_acl_to_fattr(cifs_sb, &fattr, *pinode, full_path, pfid); 692 + rc = cifs_acl_to_fattr(cifs_sb, &fattr, *pinode, full_path, 693 + pfid); 694 + if (rc) { 695 + cFYI(1, "%s: Getting ACL failed with error: %d", 696 + __func__, rc); 697 + goto cgii_exit; 698 + } 694 699 } 695 700 #endif 696 701 ··· 886 881 rc = cifs_get_inode_info(&inode, full_path, NULL, sb, 887 882 xid, NULL); 888 883 889 - if (!inode) 890 - return ERR_PTR(rc); 884 + if (!inode) { 885 + inode = ERR_PTR(rc); 886 + goto out; 887 + } 891 888 892 889 #ifdef CONFIG_CIFS_FSCACHE 893 890 /* populate tcon->resource_id */ ··· 905 898 inode->i_uid = cifs_sb->mnt_uid; 906 899 inode->i_gid = cifs_sb->mnt_gid; 907 900 } else if (rc) { 908 - kfree(full_path); 909 - _FreeXid(xid); 910 901 iget_failed(inode); 911 - return ERR_PTR(rc); 902 + inode = ERR_PTR(rc); 912 903 } 913 904 914 - 905 + out: 915 906 kfree(full_path); 916 907 /* can not call macro FreeXid here since in a void func 917 908 * TODO: This is no longer true ··· 1675 1670 return false; 1676 1671 } 1677 1672 1678 - /* check invalid_mapping flag and zap the cache if it's set */ 1673 + /* 1674 + * Zap the cache. Called when invalid_mapping flag is set. 1675 + */ 1679 1676 static void 1680 1677 cifs_invalidate_mapping(struct inode *inode) 1681 1678 { ··· 2122 2115 if (attrs->ia_valid & ATTR_MODE) { 2123 2116 rc = 0; 2124 2117 #ifdef CONFIG_CIFS_EXPERIMENTAL 2125 - if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) 2126 - rc = mode_to_acl(inode, full_path, mode); 2127 - else 2118 + if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { 2119 + rc = mode_to_cifs_acl(inode, full_path, mode); 2120 + if (rc) { 2121 + cFYI(1, "%s: Setting ACL failed with error: %d", 2122 + __func__, rc); 2123 + goto cifs_setattr_exit; 2124 + } 2125 + } else 2128 2126 #endif 2129 2127 if (((mode & S_IWUGO) == 0) && 2130 2128 (cifsInode->cifsAttrs & ATTR_READONLY) == 0) {
+16 -13
fs/cifs/readdir.c
··· 226 226 char *full_path = NULL; 227 227 struct cifsFileInfo *cifsFile; 228 228 struct cifs_sb_info *cifs_sb = CIFS_SB(file->f_path.dentry->d_sb); 229 - struct tcon_link *tlink; 229 + struct tcon_link *tlink = NULL; 230 230 struct cifsTconInfo *pTcon; 231 231 232 - tlink = cifs_sb_tlink(cifs_sb); 233 - if (IS_ERR(tlink)) 234 - return PTR_ERR(tlink); 235 - pTcon = tlink_tcon(tlink); 236 - 237 - if (file->private_data == NULL) 238 - file->private_data = 239 - kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL); 240 232 if (file->private_data == NULL) { 241 - rc = -ENOMEM; 242 - goto error_exit; 233 + tlink = cifs_sb_tlink(cifs_sb); 234 + if (IS_ERR(tlink)) 235 + return PTR_ERR(tlink); 236 + 237 + cifsFile = kzalloc(sizeof(struct cifsFileInfo), GFP_KERNEL); 238 + if (cifsFile == NULL) { 239 + rc = -ENOMEM; 240 + goto error_exit; 241 + } 242 + file->private_data = cifsFile; 243 + cifsFile->tlink = cifs_get_tlink(tlink); 244 + pTcon = tlink_tcon(tlink); 245 + } else { 246 + cifsFile = file->private_data; 247 + pTcon = tlink_tcon(cifsFile->tlink); 243 248 } 244 249 245 - cifsFile = file->private_data; 246 250 cifsFile->invalidHandle = true; 247 251 cifsFile->srch_inf.endOfSearch = false; 248 - cifsFile->tlink = cifs_get_tlink(tlink); 249 252 250 253 full_path = build_path_from_dentry(file->f_path.dentry); 251 254 if (full_path == NULL) {
+30 -25
fs/cifs/xattr.c
··· 30 30 31 31 #define MAX_EA_VALUE_SIZE 65535 32 32 #define CIFS_XATTR_DOS_ATTRIB "user.DosAttrib" 33 + #define CIFS_XATTR_CIFS_ACL "system.cifs_acl" 33 34 #define CIFS_XATTR_USER_PREFIX "user." 34 35 #define CIFS_XATTR_SYSTEM_PREFIX "system." 35 36 #define CIFS_XATTR_OS2_PREFIX "os2." 36 - #define CIFS_XATTR_SECURITY_PREFIX ".security" 37 + #define CIFS_XATTR_SECURITY_PREFIX "security." 37 38 #define CIFS_XATTR_TRUSTED_PREFIX "trusted." 38 39 #define XATTR_TRUSTED_PREFIX_LEN 8 39 40 #define XATTR_SECURITY_PREFIX_LEN 9 ··· 278 277 cifs_sb->local_nls, 279 278 cifs_sb->mnt_cifs_flags & 280 279 CIFS_MOUNT_MAP_SPECIAL_CHR); 281 - #ifdef CONFIG_CIFS_EXPERIMENTAL 282 - else if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_CIFS_ACL) { 283 - __u16 fid; 284 - int oplock = 0; 285 - struct cifs_ntsd *pacl = NULL; 286 - __u32 buflen = 0; 287 - if (experimEnabled) 288 - rc = CIFSSMBOpen(xid, pTcon, full_path, 289 - FILE_OPEN, GENERIC_READ, 0, &fid, 290 - &oplock, NULL, cifs_sb->local_nls, 291 - cifs_sb->mnt_cifs_flags & 292 - CIFS_MOUNT_MAP_SPECIAL_CHR); 293 - /* else rc is EOPNOTSUPP from above */ 294 - 295 - if (rc == 0) { 296 - rc = CIFSSMBGetCIFSACL(xid, pTcon, fid, &pacl, 297 - &buflen); 298 - CIFSSMBClose(xid, pTcon, fid); 299 - } 300 - } 301 - #endif /* EXPERIMENTAL */ 302 280 #else 303 - cFYI(1, "query POSIX ACL not supported yet"); 281 + cFYI(1, "Query POSIX ACL not supported yet"); 304 282 #endif /* CONFIG_CIFS_POSIX */ 305 283 } else if (strncmp(ea_name, POSIX_ACL_XATTR_DEFAULT, 306 284 strlen(POSIX_ACL_XATTR_DEFAULT)) == 0) { ··· 291 311 cifs_sb->mnt_cifs_flags & 292 312 CIFS_MOUNT_MAP_SPECIAL_CHR); 293 313 #else 294 - cFYI(1, "query POSIX default ACL not supported yet"); 295 - #endif 314 + cFYI(1, "Query POSIX default ACL not supported yet"); 315 + #endif /* CONFIG_CIFS_POSIX */ 316 + } else if (strncmp(ea_name, CIFS_XATTR_CIFS_ACL, 317 + strlen(CIFS_XATTR_CIFS_ACL)) == 0) { 318 + #ifdef CONFIG_CIFS_ACL 319 + u32 acllen; 320 + struct cifs_ntsd *pacl; 321 + 322 + pacl = get_cifs_acl(cifs_sb, direntry->d_inode, 323 + full_path, &acllen); 324 + if (IS_ERR(pacl)) { 325 + rc = PTR_ERR(pacl); 326 + cERROR(1, "%s: error %zd getting sec desc", 327 + __func__, rc); 328 + } else { 329 + if (ea_value) { 330 + if (acllen > buf_size) 331 + acllen = -ERANGE; 332 + else 333 + memcpy(ea_value, pacl, acllen); 334 + } 335 + rc = acllen; 336 + kfree(pacl); 337 + } 338 + #else 339 + cFYI(1, "Query CIFS ACL not supported yet"); 340 + #endif /* CONFIG_CIFS_ACL */ 296 341 } else if (strncmp(ea_name, 297 342 CIFS_XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN) == 0) { 298 343 cFYI(1, "Trusted xattr namespace not supported yet");
+15 -13
fs/compat.c
··· 1350 1350 argv++; 1351 1351 if (i++ >= max) 1352 1352 return -E2BIG; 1353 + 1354 + if (fatal_signal_pending(current)) 1355 + return -ERESTARTNOHAND; 1356 + cond_resched(); 1353 1357 } 1354 1358 } 1355 1359 return i; ··· 1395 1391 while (len > 0) { 1396 1392 int offset, bytes_to_copy; 1397 1393 1394 + if (fatal_signal_pending(current)) { 1395 + ret = -ERESTARTNOHAND; 1396 + goto out; 1397 + } 1398 + cond_resched(); 1399 + 1398 1400 offset = pos % PAGE_SIZE; 1399 1401 if (offset == 0) 1400 1402 offset = PAGE_SIZE; ··· 1417 1407 if (!kmapped_page || kpos != (pos & PAGE_MASK)) { 1418 1408 struct page *page; 1419 1409 1420 - #ifdef CONFIG_STACK_GROWSUP 1421 - ret = expand_stack_downwards(bprm->vma, pos); 1422 - if (ret < 0) { 1423 - /* We've exceed the stack rlimit. */ 1424 - ret = -E2BIG; 1425 - goto out; 1426 - } 1427 - #endif 1428 - ret = get_user_pages(current, bprm->mm, pos, 1429 - 1, 1, 1, &page, NULL); 1430 - if (ret <= 0) { 1431 - /* We've exceed the stack rlimit. */ 1410 + page = get_arg_page(bprm, pos, 1); 1411 + if (!page) { 1432 1412 ret = -E2BIG; 1433 1413 goto out; 1434 1414 } ··· 1539 1539 return retval; 1540 1540 1541 1541 out: 1542 - if (bprm->mm) 1542 + if (bprm->mm) { 1543 + acct_arg_size(bprm, 0); 1543 1544 mmput(bprm->mm); 1545 + } 1544 1546 1545 1547 out_file: 1546 1548 if (bprm->file) {
+32 -4
fs/exec.c
··· 164 164 165 165 #ifdef CONFIG_MMU 166 166 167 - static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, 167 + void acct_arg_size(struct linux_binprm *bprm, unsigned long pages) 168 + { 169 + struct mm_struct *mm = current->mm; 170 + long diff = (long)(pages - bprm->vma_pages); 171 + 172 + if (!mm || !diff) 173 + return; 174 + 175 + bprm->vma_pages = pages; 176 + 177 + #ifdef SPLIT_RSS_COUNTING 178 + add_mm_counter(mm, MM_ANONPAGES, diff); 179 + #else 180 + spin_lock(&mm->page_table_lock); 181 + add_mm_counter(mm, MM_ANONPAGES, diff); 182 + spin_unlock(&mm->page_table_lock); 183 + #endif 184 + } 185 + 186 + struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, 168 187 int write) 169 188 { 170 189 struct page *page; ··· 204 185 if (write) { 205 186 unsigned long size = bprm->vma->vm_end - bprm->vma->vm_start; 206 187 struct rlimit *rlim; 188 + 189 + acct_arg_size(bprm, size / PAGE_SIZE); 207 190 208 191 /* 209 192 * We've historically supported up to 32 pages (ARG_MAX) ··· 297 276 298 277 #else 299 278 300 - static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, 279 + void acct_arg_size(struct linux_binprm *bprm, unsigned long pages) 280 + { 281 + } 282 + 283 + struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, 301 284 int write) 302 285 { 303 286 struct page *page; ··· 1028 1003 /* 1029 1004 * Release all of the old mmap stuff 1030 1005 */ 1006 + acct_arg_size(bprm, 0); 1031 1007 retval = exec_mmap(bprm->mm); 1032 1008 if (retval) 1033 1009 goto out; ··· 1452 1426 return retval; 1453 1427 1454 1428 out: 1455 - if (bprm->mm) 1456 - mmput (bprm->mm); 1429 + if (bprm->mm) { 1430 + acct_arg_size(bprm, 0); 1431 + mmput(bprm->mm); 1432 + } 1457 1433 1458 1434 out_file: 1459 1435 if (bprm->file) {
+1 -5
fs/nfs/dir.c
··· 395 395 static 396 396 int nfs_same_file(struct dentry *dentry, struct nfs_entry *entry) 397 397 { 398 - struct nfs_inode *node; 399 398 if (dentry->d_inode == NULL) 400 399 goto different; 401 - node = NFS_I(dentry->d_inode); 402 - if (node->fh.size != entry->fh->size) 403 - goto different; 404 - if (strncmp(node->fh.data, entry->fh->data, node->fh.size) != 0) 400 + if (nfs_compare_fh(entry->fh, NFS_FH(dentry->d_inode)) != 0) 405 401 goto different; 406 402 return 1; 407 403 different:
+10 -4
fs/ocfs2/cluster/heartbeat.c
··· 1964 1964 if (reg == NULL) 1965 1965 return ERR_PTR(-ENOMEM); 1966 1966 1967 - if (strlen(name) > O2HB_MAX_REGION_NAME_LEN) 1968 - return ERR_PTR(-ENAMETOOLONG); 1967 + if (strlen(name) > O2HB_MAX_REGION_NAME_LEN) { 1968 + ret = -ENAMETOOLONG; 1969 + goto free; 1970 + } 1969 1971 1970 1972 spin_lock(&o2hb_live_lock); 1971 1973 reg->hr_region_num = 0; ··· 1976 1974 O2NM_MAX_REGIONS); 1977 1975 if (reg->hr_region_num >= O2NM_MAX_REGIONS) { 1978 1976 spin_unlock(&o2hb_live_lock); 1979 - return ERR_PTR(-EFBIG); 1977 + ret = -EFBIG; 1978 + goto free; 1980 1979 } 1981 1980 set_bit(reg->hr_region_num, o2hb_region_bitmap); 1982 1981 } ··· 1989 1986 ret = o2hb_debug_region_init(reg, o2hb_debug_dir); 1990 1987 if (ret) { 1991 1988 config_item_put(&reg->hr_item); 1992 - return ERR_PTR(ret); 1989 + goto free; 1993 1990 } 1994 1991 1995 1992 return &reg->hr_item; 1993 + free: 1994 + kfree(reg); 1995 + return ERR_PTR(ret); 1996 1996 } 1997 1997 1998 1998 static void o2hb_heartbeat_group_drop_item(struct config_group *group,
-1
fs/ocfs2/dcache.c
··· 476 476 477 477 out: 478 478 iput(inode); 479 - ocfs2_dentry_attach_gen(dentry); 480 479 } 481 480 482 481 /*
+1 -1
fs/ocfs2/dlm/dlmdomain.c
··· 959 959 r += O2HB_MAX_REGION_NAME_LEN; 960 960 } 961 961 962 - local = kmalloc(sizeof(qr->qr_regions), GFP_KERNEL); 962 + local = kmalloc(sizeof(qr->qr_regions), GFP_ATOMIC); 963 963 if (!local) { 964 964 status = -ENOMEM; 965 965 goto bail;
+3 -3
fs/ocfs2/ocfs2.h
··· 159 159 char l_name[OCFS2_LOCK_ID_MAX_LEN]; 160 160 unsigned int l_ro_holders; 161 161 unsigned int l_ex_holders; 162 - char l_level; 163 - char l_requested; 164 - char l_blocking; 162 + signed char l_level; 163 + signed char l_requested; 164 + signed char l_blocking; 165 165 166 166 /* Data packed - type enum ocfs2_lock_type */ 167 167 unsigned char l_type;
+1 -1
fs/ocfs2/stack_user.c
··· 190 190 return c; 191 191 } 192 192 193 - return c; 193 + return NULL; 194 194 } 195 195 196 196 /*
+1 -1
fs/proc/base.c
··· 1574 1574 if (!tmp) 1575 1575 return -ENOMEM; 1576 1576 1577 - pathname = d_path_with_unreachable(path, tmp, PAGE_SIZE); 1577 + pathname = d_path(path, tmp, PAGE_SIZE); 1578 1578 len = PTR_ERR(pathname); 1579 1579 if (IS_ERR(pathname)) 1580 1580 goto out;
+4 -2
fs/reiserfs/xattr_acl.c
··· 472 472 struct reiserfs_transaction_handle th; 473 473 size_t size = reiserfs_xattr_nblocks(inode, 474 474 reiserfs_acl_size(clone->a_count)); 475 - reiserfs_write_lock(inode->i_sb); 475 + int depth; 476 + 477 + depth = reiserfs_write_lock_once(inode->i_sb); 476 478 error = journal_begin(&th, inode->i_sb, size * 2); 477 479 if (!error) { 478 480 int error2; ··· 484 482 if (error2) 485 483 error = error2; 486 484 } 487 - reiserfs_write_unlock(inode->i_sb); 485 + reiserfs_write_unlock_once(inode->i_sb, depth); 488 486 } 489 487 posix_acl_release(clone); 490 488 return error;
+40 -54
fs/xfs/linux-2.6/xfs_aops.c
··· 934 934 struct xfs_inode *ip = XFS_I(inode); 935 935 struct buffer_head *bh, *head; 936 936 loff_t offset = page_offset(page); 937 - ssize_t len = 1 << inode->i_blkbits; 938 937 939 938 if (!xfs_is_delayed_page(page, IO_DELAY)) 940 939 goto out_invalidate; ··· 948 949 xfs_ilock(ip, XFS_ILOCK_EXCL); 949 950 bh = head = page_buffers(page); 950 951 do { 951 - int done; 952 - xfs_fileoff_t offset_fsb; 953 - xfs_bmbt_irec_t imap; 954 - int nimaps = 1; 955 952 int error; 956 - xfs_fsblock_t firstblock; 957 - xfs_bmap_free_t flist; 953 + xfs_fileoff_t start_fsb; 958 954 959 955 if (!buffer_delay(bh)) 960 956 goto next_buffer; 961 957 962 - offset_fsb = XFS_B_TO_FSBT(ip->i_mount, offset); 963 - 964 - /* 965 - * Map the range first and check that it is a delalloc extent 966 - * before trying to unmap the range. Otherwise we will be 967 - * trying to remove a real extent (which requires a 968 - * transaction) or a hole, which is probably a bad idea... 969 - */ 970 - error = xfs_bmapi(NULL, ip, offset_fsb, 1, 971 - XFS_BMAPI_ENTIRE, NULL, 0, &imap, 972 - &nimaps, NULL); 973 - 974 - if (error) { 975 - /* something screwed, just bail */ 976 - if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { 977 - xfs_fs_cmn_err(CE_ALERT, ip->i_mount, 978 - "page discard failed delalloc mapping lookup."); 979 - } 980 - break; 981 - } 982 - if (!nimaps) { 983 - /* nothing there */ 984 - goto next_buffer; 985 - } 986 - if (imap.br_startblock != DELAYSTARTBLOCK) { 987 - /* been converted, ignore */ 988 - goto next_buffer; 989 - } 990 - WARN_ON(imap.br_blockcount == 0); 991 - 992 - /* 993 - * Note: while we initialise the firstblock/flist pair, they 994 - * should never be used because blocks should never be 995 - * allocated or freed for a delalloc extent and hence we need 996 - * don't cancel or finish them after the xfs_bunmapi() call. 997 - */ 998 - xfs_bmap_init(&flist, &firstblock); 999 - error = xfs_bunmapi(NULL, ip, offset_fsb, 1, 0, 1, &firstblock, 1000 - &flist, &done); 1001 - 1002 - ASSERT(!flist.xbf_count && !flist.xbf_first); 958 + start_fsb = XFS_B_TO_FSBT(ip->i_mount, offset); 959 + error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1); 1003 960 if (error) { 1004 961 /* something screwed, just bail */ 1005 962 if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { ··· 965 1010 break; 966 1011 } 967 1012 next_buffer: 968 - offset += len; 1013 + offset += 1 << inode->i_blkbits; 969 1014 970 1015 } while ((bh = bh->b_this_page) != head); 971 1016 ··· 1460 1505 struct inode *inode = mapping->host; 1461 1506 1462 1507 if (to > inode->i_size) { 1463 - struct iattr ia = { 1464 - .ia_valid = ATTR_SIZE | ATTR_FORCE, 1465 - .ia_size = inode->i_size, 1466 - }; 1467 - xfs_setattr(XFS_I(inode), &ia, XFS_ATTR_NOLOCK); 1508 + /* 1509 + * punch out the delalloc blocks we have already allocated. We 1510 + * don't call xfs_setattr() to do this as we may be in the 1511 + * middle of a multi-iovec write and so the vfs inode->i_size 1512 + * will not match the xfs ip->i_size and so it will zero too 1513 + * much. Hence we jus truncate the page cache to zero what is 1514 + * necessary and punch the delalloc blocks directly. 1515 + */ 1516 + struct xfs_inode *ip = XFS_I(inode); 1517 + xfs_fileoff_t start_fsb; 1518 + xfs_fileoff_t end_fsb; 1519 + int error; 1520 + 1521 + truncate_pagecache(inode, to, inode->i_size); 1522 + 1523 + /* 1524 + * Check if there are any blocks that are outside of i_size 1525 + * that need to be trimmed back. 1526 + */ 1527 + start_fsb = XFS_B_TO_FSB(ip->i_mount, inode->i_size) + 1; 1528 + end_fsb = XFS_B_TO_FSB(ip->i_mount, to); 1529 + if (end_fsb <= start_fsb) 1530 + return; 1531 + 1532 + xfs_ilock(ip, XFS_ILOCK_EXCL); 1533 + error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1534 + end_fsb - start_fsb); 1535 + if (error) { 1536 + /* something screwed, just bail */ 1537 + if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { 1538 + xfs_fs_cmn_err(CE_ALERT, ip->i_mount, 1539 + "xfs_vm_write_failed: unable to clean up ino %lld", 1540 + ip->i_ino); 1541 + } 1542 + } 1543 + xfs_iunlock(ip, XFS_ILOCK_EXCL); 1468 1544 } 1469 1545 } 1470 1546
+16 -19
fs/xfs/linux-2.6/xfs_buf.c
··· 488 488 spin_unlock(&pag->pag_buf_lock); 489 489 xfs_perag_put(pag); 490 490 491 - /* Attempt to get the semaphore without sleeping, 492 - * if this does not work then we need to drop the 493 - * spinlock and do a hard attempt on the semaphore. 494 - */ 495 - if (down_trylock(&bp->b_sema)) { 491 + if (xfs_buf_cond_lock(bp)) { 492 + /* failed, so wait for the lock if requested. */ 496 493 if (!(flags & XBF_TRYLOCK)) { 497 - /* wait for buffer ownership */ 498 494 xfs_buf_lock(bp); 499 495 XFS_STATS_INC(xb_get_locked_waited); 500 496 } else { 501 - /* We asked for a trylock and failed, no need 502 - * to look at file offset and length here, we 503 - * know that this buffer at least overlaps our 504 - * buffer and is locked, therefore our buffer 505 - * either does not exist, or is this buffer. 506 - */ 507 497 xfs_buf_rele(bp); 508 498 XFS_STATS_INC(xb_busy_locked); 509 499 return NULL; 510 500 } 511 - } else { 512 - /* trylock worked */ 513 - XB_SET_OWNER(bp); 514 501 } 515 502 516 503 if (bp->b_flags & XBF_STALE) { ··· 863 876 */ 864 877 865 878 /* 866 - * Locks a buffer object, if it is not already locked. 867 - * Note that this in no way locks the underlying pages, so it is only 868 - * useful for synchronizing concurrent use of buffer objects, not for 869 - * synchronizing independent access to the underlying pages. 879 + * Locks a buffer object, if it is not already locked. Note that this in 880 + * no way locks the underlying pages, so it is only useful for 881 + * synchronizing concurrent use of buffer objects, not for synchronizing 882 + * independent access to the underlying pages. 883 + * 884 + * If we come across a stale, pinned, locked buffer, we know that we are 885 + * being asked to lock a buffer that has been reallocated. Because it is 886 + * pinned, we know that the log has not been pushed to disk and hence it 887 + * will still be locked. Rather than continuing to have trylock attempts 888 + * fail until someone else pushes the log, push it ourselves before 889 + * returning. This means that the xfsaild will not get stuck trying 890 + * to push on stale inode buffers. 870 891 */ 871 892 int 872 893 xfs_buf_cond_lock( ··· 885 890 locked = down_trylock(&bp->b_sema) == 0; 886 891 if (locked) 887 892 XB_SET_OWNER(bp); 893 + else if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE)) 894 + xfs_log_force(bp->b_target->bt_mount, 0); 888 895 889 896 trace_xfs_buf_cond_lock(bp, _RET_IP_); 890 897 return locked ? 0 : -EBUSY;
+83 -2
fs/xfs/xfs_bmap.c
··· 5471 5471 if (error) 5472 5472 goto out_unlock_iolock; 5473 5473 } 5474 - 5475 - ASSERT(ip->i_delayed_blks == 0); 5474 + /* 5475 + * even after flushing the inode, there can still be delalloc 5476 + * blocks on the inode beyond EOF due to speculative 5477 + * preallocation. These are not removed until the release 5478 + * function is called or the inode is inactivated. Hence we 5479 + * cannot assert here that ip->i_delayed_blks == 0. 5480 + */ 5476 5481 } 5477 5482 5478 5483 lock = xfs_ilock_map_shared(ip); ··· 6074 6069 frp = XFS_BMBT_REC_ADDR(mp, block, b); 6075 6070 *count += xfs_bmbt_disk_get_blockcount(frp); 6076 6071 } 6072 + } 6073 + 6074 + /* 6075 + * dead simple method of punching delalyed allocation blocks from a range in 6076 + * the inode. Walks a block at a time so will be slow, but is only executed in 6077 + * rare error cases so the overhead is not critical. This will alays punch out 6078 + * both the start and end blocks, even if the ranges only partially overlap 6079 + * them, so it is up to the caller to ensure that partial blocks are not 6080 + * passed in. 6081 + */ 6082 + int 6083 + xfs_bmap_punch_delalloc_range( 6084 + struct xfs_inode *ip, 6085 + xfs_fileoff_t start_fsb, 6086 + xfs_fileoff_t length) 6087 + { 6088 + xfs_fileoff_t remaining = length; 6089 + int error = 0; 6090 + 6091 + ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL)); 6092 + 6093 + do { 6094 + int done; 6095 + xfs_bmbt_irec_t imap; 6096 + int nimaps = 1; 6097 + xfs_fsblock_t firstblock; 6098 + xfs_bmap_free_t flist; 6099 + 6100 + /* 6101 + * Map the range first and check that it is a delalloc extent 6102 + * before trying to unmap the range. Otherwise we will be 6103 + * trying to remove a real extent (which requires a 6104 + * transaction) or a hole, which is probably a bad idea... 6105 + */ 6106 + error = xfs_bmapi(NULL, ip, start_fsb, 1, 6107 + XFS_BMAPI_ENTIRE, NULL, 0, &imap, 6108 + &nimaps, NULL); 6109 + 6110 + if (error) { 6111 + /* something screwed, just bail */ 6112 + if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) { 6113 + xfs_fs_cmn_err(CE_ALERT, ip->i_mount, 6114 + "Failed delalloc mapping lookup ino %lld fsb %lld.", 6115 + ip->i_ino, start_fsb); 6116 + } 6117 + break; 6118 + } 6119 + if (!nimaps) { 6120 + /* nothing there */ 6121 + goto next_block; 6122 + } 6123 + if (imap.br_startblock != DELAYSTARTBLOCK) { 6124 + /* been converted, ignore */ 6125 + goto next_block; 6126 + } 6127 + WARN_ON(imap.br_blockcount == 0); 6128 + 6129 + /* 6130 + * Note: while we initialise the firstblock/flist pair, they 6131 + * should never be used because blocks should never be 6132 + * allocated or freed for a delalloc extent and hence we need 6133 + * don't cancel or finish them after the xfs_bunmapi() call. 6134 + */ 6135 + xfs_bmap_init(&flist, &firstblock); 6136 + error = xfs_bunmapi(NULL, ip, start_fsb, 1, 0, 1, &firstblock, 6137 + &flist, &done); 6138 + if (error) 6139 + break; 6140 + 6141 + ASSERT(!flist.xbf_count && !flist.xbf_first); 6142 + next_block: 6143 + start_fsb++; 6144 + remaining--; 6145 + } while(remaining > 0); 6146 + 6147 + return error; 6077 6148 }
+5
fs/xfs/xfs_bmap.h
··· 394 394 int whichfork, 395 395 int *count); 396 396 397 + int 398 + xfs_bmap_punch_delalloc_range( 399 + struct xfs_inode *ip, 400 + xfs_fileoff_t start_fsb, 401 + xfs_fileoff_t length); 397 402 #endif /* __KERNEL__ */ 398 403 399 404 #endif /* __XFS_BMAP_H__ */
+13
fs/xfs/xfs_dfrag.c
··· 377 377 ip->i_d.di_format = tip->i_d.di_format; 378 378 tip->i_d.di_format = tmp; 379 379 380 + /* 381 + * The extents in the source inode could still contain speculative 382 + * preallocation beyond EOF (e.g. the file is open but not modified 383 + * while defrag is in progress). In that case, we need to copy over the 384 + * number of delalloc blocks the data fork in the source inode is 385 + * tracking beyond EOF so that when the fork is truncated away when the 386 + * temporary inode is unlinked we don't underrun the i_delayed_blks 387 + * counter on that inode. 388 + */ 389 + ASSERT(tip->i_delayed_blks == 0); 390 + tip->i_delayed_blks = ip->i_delayed_blks; 391 + ip->i_delayed_blks = 0; 392 + 380 393 ilf_fields = XFS_ILOG_CORE; 381 394 382 395 switch(ip->i_d.di_format) {
+3
fs/xfs/xfs_error.c
··· 58 58 int xfs_etest[XFS_NUM_INJECT_ERROR]; 59 59 int64_t xfs_etest_fsid[XFS_NUM_INJECT_ERROR]; 60 60 char * xfs_etest_fsname[XFS_NUM_INJECT_ERROR]; 61 + int xfs_error_test_active; 61 62 62 63 int 63 64 xfs_error_test(int error_tag, int *fsidp, char *expression, ··· 109 108 len = strlen(mp->m_fsname); 110 109 xfs_etest_fsname[i] = kmem_alloc(len + 1, KM_SLEEP); 111 110 strcpy(xfs_etest_fsname[i], mp->m_fsname); 111 + xfs_error_test_active++; 112 112 return 0; 113 113 } 114 114 } ··· 139 137 xfs_etest_fsid[i] = 0LL; 140 138 kmem_free(xfs_etest_fsname[i]); 141 139 xfs_etest_fsname[i] = NULL; 140 + xfs_error_test_active--; 142 141 } 143 142 } 144 143
+3 -2
fs/xfs/xfs_error.h
··· 127 127 #define XFS_RANDOM_BMAPIFORMAT XFS_RANDOM_DEFAULT 128 128 129 129 #ifdef DEBUG 130 + extern int xfs_error_test_active; 130 131 extern int xfs_error_test(int, int *, char *, int, char *, unsigned long); 131 132 132 133 #define XFS_NUM_INJECT_ERROR 10 133 134 #define XFS_TEST_ERROR(expr, mp, tag, rf) \ 134 - ((expr) || \ 135 + ((expr) || (xfs_error_test_active && \ 135 136 xfs_error_test((tag), (mp)->m_fixedfsid, "expr", __LINE__, __FILE__, \ 136 - (rf))) 137 + (rf)))) 137 138 138 139 extern int xfs_errortag_add(int error_tag, xfs_mount_t *mp); 139 140 extern int xfs_errortag_clearall(xfs_mount_t *mp, int loud);
+25 -6
fs/xfs/xfs_inode_item.c
··· 657 657 } 658 658 659 659 /* 660 - * This is called to find out where the oldest active copy of the 661 - * inode log item in the on disk log resides now that the last log 662 - * write of it completed at the given lsn. Since we always re-log 663 - * all dirty data in an inode, the latest copy in the on disk log 664 - * is the only one that matters. Therefore, simply return the 665 - * given lsn. 660 + * This is called to find out where the oldest active copy of the inode log 661 + * item in the on disk log resides now that the last log write of it completed 662 + * at the given lsn. Since we always re-log all dirty data in an inode, the 663 + * latest copy in the on disk log is the only one that matters. Therefore, 664 + * simply return the given lsn. 665 + * 666 + * If the inode has been marked stale because the cluster is being freed, we 667 + * don't want to (re-)insert this inode into the AIL. There is a race condition 668 + * where the cluster buffer may be unpinned before the inode is inserted into 669 + * the AIL during transaction committed processing. If the buffer is unpinned 670 + * before the inode item has been committed and inserted, then it is possible 671 + * for the buffer to be written and IO completions before the inode is inserted 672 + * into the AIL. In that case, we'd be inserting a clean, stale inode into the 673 + * AIL which will never get removed. It will, however, get reclaimed which 674 + * triggers an assert in xfs_inode_free() complaining about freein an inode 675 + * still in the AIL. 676 + * 677 + * To avoid this, return a lower LSN than the one passed in so that the 678 + * transaction committed code will not move the inode forward in the AIL but 679 + * will still unpin it properly. 666 680 */ 667 681 STATIC xfs_lsn_t 668 682 xfs_inode_item_committed( 669 683 struct xfs_log_item *lip, 670 684 xfs_lsn_t lsn) 671 685 { 686 + struct xfs_inode_log_item *iip = INODE_ITEM(lip); 687 + struct xfs_inode *ip = iip->ili_inode; 688 + 689 + if (xfs_iflags_test(ip, XFS_ISTALE)) 690 + return lsn - 1; 672 691 return lsn; 673 692 } 674 693
+4 -1
include/acpi/video.h
··· 1 1 #ifndef __ACPI_VIDEO_H 2 2 #define __ACPI_VIDEO_H 3 3 4 + #include <linux/errno.h> /* for ENODEV */ 5 + 6 + struct acpi_device; 7 + 4 8 #define ACPI_VIDEO_DISPLAY_CRT 1 5 9 #define ACPI_VIDEO_DISPLAY_TV 2 6 10 #define ACPI_VIDEO_DISPLAY_DVI 3 ··· 30 26 #endif 31 27 32 28 #endif 33 -
+1 -1
include/linux/acpi.h
··· 219 219 220 220 extern int acpi_blacklisted(void); 221 221 extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d); 222 - extern int acpi_osi_setup(char *str); 222 + extern void acpi_osi_setup(char *str); 223 223 224 224 #ifdef CONFIG_ACPI_NUMA 225 225 int acpi_get_pxm(acpi_handle handle);
+5
include/linux/binfmts.h
··· 29 29 char buf[BINPRM_BUF_SIZE]; 30 30 #ifdef CONFIG_MMU 31 31 struct vm_area_struct *vma; 32 + unsigned long vma_pages; 32 33 #else 33 34 # define MAX_ARG_PAGES 32 34 35 struct page *page[MAX_ARG_PAGES]; ··· 59 58 unsigned interp_data; 60 59 unsigned long loader, exec; 61 60 }; 61 + 62 + extern void acct_arg_size(struct linux_binprm *bprm, unsigned long pages); 63 + extern struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos, 64 + int write); 62 65 63 66 #define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0 64 67 #define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT)
-5
include/linux/cpu.h
··· 10 10 * 11 11 * CPUs are exported via sysfs in the class/cpu/devices/ 12 12 * directory. 13 - * 14 - * Per-cpu interfaces can be implemented using a struct device_interface. 15 - * See the following for how to do this: 16 - * - drivers/base/intf.c 17 - * - Documentation/driver-model/interface.txt 18 13 */ 19 14 #ifndef _LINUX_CPU_H_ 20 15 #define _LINUX_CPU_H_
+2 -2
include/linux/gfp.h
··· 360 360 361 361 extern gfp_t gfp_allowed_mask; 362 362 363 - extern void set_gfp_allowed_mask(gfp_t mask); 364 - extern gfp_t clear_gfp_allowed_mask(gfp_t mask); 363 + extern void pm_restrict_gfp_mask(void); 364 + extern void pm_restore_gfp_mask(void); 365 365 366 366 #endif /* __LINUX_GFP_H */
+6
include/linux/memory_hotplug.h
··· 161 161 extern void put_page_bootmem(struct page *page); 162 162 #endif 163 163 164 + void lock_memory_hotplug(void); 165 + void unlock_memory_hotplug(void); 166 + 164 167 #else /* ! CONFIG_MEMORY_HOTPLUG */ 165 168 /* 166 169 * Stub functions for when hotplug is off ··· 194 191 static inline void register_page_bootmem_info_node(struct pglist_data *pgdat) 195 192 { 196 193 } 194 + 195 + static inline void lock_memory_hotplug(void) {} 196 + static inline void unlock_memory_hotplug(void) {} 197 197 198 198 #endif /* ! CONFIG_MEMORY_HOTPLUG */ 199 199
-5
include/linux/node.h
··· 10 10 * 11 11 * Nodes are exported via driverfs in the class/node/devices/ 12 12 * directory. 13 - * 14 - * Per-node interfaces can be implemented using a struct device_interface. 15 - * See the following for how to do this: 16 - * - drivers/base/intf.c 17 - * - Documentation/driver-model/interface.txt 18 13 */ 19 14 #ifndef _LINUX_NODE_H_ 20 15 #define _LINUX_NODE_H_
+1
include/linux/tty.h
··· 366 366 #define TTY_HUPPED 18 /* Post driver->hangup() */ 367 367 #define TTY_FLUSHING 19 /* Flushing to ldisc in progress */ 368 368 #define TTY_FLUSHPENDING 20 /* Queued buffer flush pending */ 369 + #define TTY_HUPPING 21 /* ->hangup() in progress */ 369 370 370 371 #define TTY_WRITE_FLUSH(tty) tty_write_flush((tty)) 371 372
+1 -1
include/linux/uio_driver.h
··· 3 3 * 4 4 * Copyright(C) 2005, Benedikt Spranger <b.spranger@linutronix.de> 5 5 * Copyright(C) 2005, Thomas Gleixner <tglx@linutronix.de> 6 - * Copyright(C) 2006, Hans J. Koch <hjk@linutronix.de> 6 + * Copyright(C) 2006, Hans J. Koch <hjk@hansjkoch.de> 7 7 * Copyright(C) 2006, Greg Kroah-Hartman <greg@kroah.com> 8 8 * 9 9 * Userspace IO driver.
+4
include/linux/usb.h
··· 313 313 int busnum; /* Bus number (in order of reg) */ 314 314 const char *bus_name; /* stable id (PCI slot_name etc) */ 315 315 u8 uses_dma; /* Does the host controller use DMA? */ 316 + u8 uses_pio_for_control; /* 317 + * Does the host controller use PIO 318 + * for control transfers? 319 + */ 316 320 u8 otg_port; /* 0, or number of OTG/HNP port */ 317 321 unsigned is_b_host:1; /* true during some HNP roleswitches */ 318 322 unsigned b_hnp_enable:1; /* OTG: did A-Host enable HNP? */
+15
include/linux/video_output.h
··· 23 23 #ifndef _LINUX_VIDEO_OUTPUT_H 24 24 #define _LINUX_VIDEO_OUTPUT_H 25 25 #include <linux/device.h> 26 + #include <linux/err.h> 26 27 struct output_device; 27 28 struct output_properties { 28 29 int (*set_state)(struct output_device *); ··· 35 34 struct device dev; 36 35 }; 37 36 #define to_output_device(obj) container_of(obj, struct output_device, dev) 37 + #if defined(CONFIG_VIDEO_OUTPUT_CONTROL) || defined(CONFIG_VIDEO_OUTPUT_CONTROL_MODULE) 38 38 struct output_device *video_output_register(const char *name, 39 39 struct device *dev, 40 40 void *devdata, 41 41 struct output_properties *op); 42 42 void video_output_unregister(struct output_device *dev); 43 + #else 44 + static struct output_device *video_output_register(const char *name, 45 + struct device *dev, 46 + void *devdata, 47 + struct output_properties *op) 48 + { 49 + return ERR_PTR(-ENODEV); 50 + } 51 + static void video_output_unregister(struct output_device *dev) 52 + { 53 + return; 54 + } 55 + #endif 43 56 #endif
-2
include/linux/vmalloc.h
··· 7 7 8 8 struct vm_area_struct; /* vma defining user mapping in mm_types.h */ 9 9 10 - extern bool vmap_lazy_unmap; 11 - 12 10 /* bits in flags of vmalloc's vm_struct below */ 13 11 #define VM_IOREMAP 0x00000001 /* ioremap() and friends */ 14 12 #define VM_ALLOC 0x00000002 /* vmalloc() */
+6 -10
include/media/v4l2-common.h
··· 137 137 138 138 139 139 /* Load an i2c module and return an initialized v4l2_subdev struct. 140 - Only call request_module if module_name != NULL. 141 140 The client_type argument is the name of the chip that's on the adapter. */ 142 141 struct v4l2_subdev *v4l2_i2c_new_subdev_cfg(struct v4l2_device *v4l2_dev, 143 - struct i2c_adapter *adapter, 144 - const char *module_name, const char *client_type, 142 + struct i2c_adapter *adapter, const char *client_type, 145 143 int irq, void *platform_data, 146 144 u8 addr, const unsigned short *probe_addrs); 147 145 148 146 /* Load an i2c module and return an initialized v4l2_subdev struct. 149 - Only call request_module if module_name != NULL. 150 147 The client_type argument is the name of the chip that's on the adapter. */ 151 148 static inline struct v4l2_subdev *v4l2_i2c_new_subdev(struct v4l2_device *v4l2_dev, 152 - struct i2c_adapter *adapter, 153 - const char *module_name, const char *client_type, 149 + struct i2c_adapter *adapter, const char *client_type, 154 150 u8 addr, const unsigned short *probe_addrs) 155 151 { 156 - return v4l2_i2c_new_subdev_cfg(v4l2_dev, adapter, module_name, 157 - client_type, 0, NULL, addr, probe_addrs); 152 + return v4l2_i2c_new_subdev_cfg(v4l2_dev, adapter, client_type, 0, NULL, 153 + addr, probe_addrs); 158 154 } 159 155 160 156 struct i2c_board_info; 161 157 162 158 struct v4l2_subdev *v4l2_i2c_new_subdev_board(struct v4l2_device *v4l2_dev, 163 - struct i2c_adapter *adapter, const char *module_name, 164 - struct i2c_board_info *info, const unsigned short *probe_addrs); 159 + struct i2c_adapter *adapter, struct i2c_board_info *info, 160 + const unsigned short *probe_addrs); 165 161 166 162 /* Initialize an v4l2_subdev with data from an i2c_client struct */ 167 163 void v4l2_i2c_subdev_init(struct v4l2_subdev *sd, struct i2c_client *client,
+6 -1
include/xen/events.h
··· 76 76 77 77 #ifdef CONFIG_PCI_MSI 78 78 /* Allocate an irq and a pirq to be used with MSIs. */ 79 - void xen_allocate_pirq_msi(char *name, int *irq, int *pirq); 79 + #define XEN_ALLOC_PIRQ (1 << 0) 80 + #define XEN_ALLOC_IRQ (1 << 1) 81 + void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc_mask); 80 82 int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type); 81 83 #endif 82 84 ··· 90 88 91 89 /* Return gsi allocated to pirq */ 92 90 int xen_gsi_from_irq(unsigned pirq); 91 + 92 + /* Return irq from pirq */ 93 + int xen_irq_from_pirq(unsigned pirq); 93 94 94 95 #endif /* _XEN_EVENTS_H */
+10
include/xen/interface/physdev.h
··· 188 188 uint32_t nr_pirqs; 189 189 }; 190 190 191 + /* type is MAP_PIRQ_TYPE_GSI or MAP_PIRQ_TYPE_MSI 192 + * the hypercall returns a free pirq */ 193 + #define PHYSDEVOP_get_free_pirq 23 194 + struct physdev_get_free_pirq { 195 + /* IN */ 196 + int type; 197 + /* OUT */ 198 + uint32_t pirq; 199 + }; 200 + 191 201 /* 192 202 * Notify that some PIRQ-bound event channels have been unmasked. 193 203 * ** This command is obsolete since interface version 0x00030202 and is **
+9
kernel/exit.c
··· 914 914 if (unlikely(!tsk->pid)) 915 915 panic("Attempted to kill the idle task!"); 916 916 917 + /* 918 + * If do_exit is called because this processes oopsed, it's possible 919 + * that get_fs() was left as KERNEL_DS, so reset it to USER_DS before 920 + * continuing. Amongst other possible reasons, this is to prevent 921 + * mm_release()->clear_child_tid() from writing to a user-controlled 922 + * kernel address. 923 + */ 924 + set_fs(USER_DS); 925 + 917 926 tracehook_report_exit(&code); 918 927 919 928 validate_creds_for_do_exit(tsk);
+12 -10
kernel/power/hibernate.c
··· 327 327 int hibernation_snapshot(int platform_mode) 328 328 { 329 329 int error; 330 - gfp_t saved_mask; 331 330 332 331 error = platform_begin(platform_mode); 333 332 if (error) ··· 338 339 goto Close; 339 340 340 341 suspend_console(); 341 - saved_mask = clear_gfp_allowed_mask(GFP_IOFS); 342 + pm_restrict_gfp_mask(); 342 343 error = dpm_suspend_start(PMSG_FREEZE); 343 344 if (error) 344 345 goto Recover_platform; ··· 347 348 goto Recover_platform; 348 349 349 350 error = create_image(platform_mode); 350 - /* Control returns here after successful restore */ 351 + /* 352 + * Control returns here (1) after the image has been created or the 353 + * image creation has failed and (2) after a successful restore. 354 + */ 351 355 352 356 Resume_devices: 353 357 /* We may need to release the preallocated image pages here. */ ··· 359 357 360 358 dpm_resume_end(in_suspend ? 361 359 (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE); 362 - set_gfp_allowed_mask(saved_mask); 360 + 361 + if (error || !in_suspend) 362 + pm_restore_gfp_mask(); 363 + 363 364 resume_console(); 364 365 Close: 365 366 platform_end(platform_mode); ··· 457 452 int hibernation_restore(int platform_mode) 458 453 { 459 454 int error; 460 - gfp_t saved_mask; 461 455 462 456 pm_prepare_console(); 463 457 suspend_console(); 464 - saved_mask = clear_gfp_allowed_mask(GFP_IOFS); 458 + pm_restrict_gfp_mask(); 465 459 error = dpm_suspend_start(PMSG_QUIESCE); 466 460 if (!error) { 467 461 error = resume_target_kernel(platform_mode); 468 462 dpm_resume_end(PMSG_RECOVER); 469 463 } 470 - set_gfp_allowed_mask(saved_mask); 464 + pm_restore_gfp_mask(); 471 465 resume_console(); 472 466 pm_restore_console(); 473 467 return error; ··· 480 476 int hibernation_platform_enter(void) 481 477 { 482 478 int error; 483 - gfp_t saved_mask; 484 479 485 480 if (!hibernation_ops) 486 481 return -ENOSYS; ··· 495 492 496 493 entering_platform_hibernation = true; 497 494 suspend_console(); 498 - saved_mask = clear_gfp_allowed_mask(GFP_IOFS); 499 495 error = dpm_suspend_start(PMSG_HIBERNATE); 500 496 if (error) { 501 497 if (hibernation_ops->recover) ··· 538 536 Resume_devices: 539 537 entering_platform_hibernation = false; 540 538 dpm_resume_end(PMSG_RESTORE); 541 - set_gfp_allowed_mask(saved_mask); 542 539 resume_console(); 543 540 544 541 Close: ··· 647 646 swsusp_free(); 648 647 if (!error) 649 648 power_down(); 649 + pm_restore_gfp_mask(); 650 650 } else { 651 651 pr_debug("PM: Image restored successfully.\n"); 652 652 }
+2 -3
kernel/power/suspend.c
··· 197 197 int suspend_devices_and_enter(suspend_state_t state) 198 198 { 199 199 int error; 200 - gfp_t saved_mask; 201 200 202 201 if (!suspend_ops) 203 202 return -ENOSYS; ··· 207 208 goto Close; 208 209 } 209 210 suspend_console(); 210 - saved_mask = clear_gfp_allowed_mask(GFP_IOFS); 211 + pm_restrict_gfp_mask(); 211 212 suspend_test_start(); 212 213 error = dpm_suspend_start(PMSG_SUSPEND); 213 214 if (error) { ··· 224 225 suspend_test_start(); 225 226 dpm_resume_end(PMSG_RESUME); 226 227 suspend_test_finish("resume devices"); 227 - set_gfp_allowed_mask(saved_mask); 228 + pm_restore_gfp_mask(); 228 229 resume_console(); 229 230 Close: 230 231 if (suspend_ops->end)
+38 -15
kernel/power/swap.c
··· 6 6 * 7 7 * Copyright (C) 1998,2001-2005 Pavel Machek <pavel@ucw.cz> 8 8 * Copyright (C) 2006 Rafael J. Wysocki <rjw@sisk.pl> 9 + * Copyright (C) 2010 Bojan Smojver <bojan@rexursive.com> 9 10 * 10 11 * This file is released under the GPLv2. 11 12 * ··· 754 753 { 755 754 unsigned int m; 756 755 int error = 0; 756 + struct bio *bio; 757 757 struct timeval start; 758 758 struct timeval stop; 759 759 unsigned nr_pages; 760 - size_t off, unc_len, cmp_len; 761 - unsigned char *unc, *cmp, *page; 760 + size_t i, off, unc_len, cmp_len; 761 + unsigned char *unc, *cmp, *page[LZO_CMP_PAGES]; 762 762 763 - page = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH); 764 - if (!page) { 765 - printk(KERN_ERR "PM: Failed to allocate LZO page\n"); 766 - return -ENOMEM; 763 + for (i = 0; i < LZO_CMP_PAGES; i++) { 764 + page[i] = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH); 765 + if (!page[i]) { 766 + printk(KERN_ERR "PM: Failed to allocate LZO page\n"); 767 + 768 + while (i) 769 + free_page((unsigned long)page[--i]); 770 + 771 + return -ENOMEM; 772 + } 767 773 } 768 774 769 775 unc = vmalloc(LZO_UNC_SIZE); 770 776 if (!unc) { 771 777 printk(KERN_ERR "PM: Failed to allocate LZO uncompressed\n"); 772 - free_page((unsigned long)page); 778 + 779 + for (i = 0; i < LZO_CMP_PAGES; i++) 780 + free_page((unsigned long)page[i]); 781 + 773 782 return -ENOMEM; 774 783 } 775 784 776 785 cmp = vmalloc(LZO_CMP_SIZE); 777 786 if (!cmp) { 778 787 printk(KERN_ERR "PM: Failed to allocate LZO compressed\n"); 788 + 779 789 vfree(unc); 780 - free_page((unsigned long)page); 790 + for (i = 0; i < LZO_CMP_PAGES; i++) 791 + free_page((unsigned long)page[i]); 792 + 781 793 return -ENOMEM; 782 794 } 783 795 ··· 801 787 if (!m) 802 788 m = 1; 803 789 nr_pages = 0; 790 + bio = NULL; 804 791 do_gettimeofday(&start); 805 792 806 793 error = snapshot_write_next(snapshot); ··· 809 794 goto out_finish; 810 795 811 796 for (;;) { 812 - error = swap_read_page(handle, page, NULL); /* sync */ 797 + error = swap_read_page(handle, page[0], NULL); /* sync */ 813 798 if (error) 814 799 break; 815 800 816 - cmp_len = *(size_t *)page; 801 + cmp_len = *(size_t *)page[0]; 817 802 if (unlikely(!cmp_len || 818 803 cmp_len > lzo1x_worst_compress(LZO_UNC_SIZE))) { 819 804 printk(KERN_ERR "PM: Invalid LZO compressed length\n"); ··· 821 806 break; 822 807 } 823 808 824 - memcpy(cmp, page, PAGE_SIZE); 825 - for (off = PAGE_SIZE; off < LZO_HEADER + cmp_len; off += PAGE_SIZE) { 826 - error = swap_read_page(handle, page, NULL); /* sync */ 809 + for (off = PAGE_SIZE, i = 1; 810 + off < LZO_HEADER + cmp_len; off += PAGE_SIZE, i++) { 811 + error = swap_read_page(handle, page[i], &bio); 827 812 if (error) 828 813 goto out_finish; 814 + } 829 815 830 - memcpy(cmp + off, page, PAGE_SIZE); 816 + error = hib_wait_on_bio_chain(&bio); /* need all data now */ 817 + if (error) 818 + goto out_finish; 819 + 820 + for (off = 0, i = 0; 821 + off < LZO_HEADER + cmp_len; off += PAGE_SIZE, i++) { 822 + memcpy(cmp + off, page[i], PAGE_SIZE); 831 823 } 832 824 833 825 unc_len = LZO_UNC_SIZE; ··· 879 857 880 858 vfree(cmp); 881 859 vfree(unc); 882 - free_page((unsigned long)page); 860 + for (i = 0; i < LZO_CMP_PAGES; i++) 861 + free_page((unsigned long)page[i]); 883 862 884 863 return error; 885 864 }
+2
kernel/power/user.c
··· 263 263 case SNAPSHOT_UNFREEZE: 264 264 if (!data->frozen || data->ready) 265 265 break; 266 + pm_restore_gfp_mask(); 266 267 thaw_processes(); 267 268 usermodehelper_enable(); 268 269 data->frozen = 0; ··· 276 275 error = -EPERM; 277 276 break; 278 277 } 278 + pm_restore_gfp_mask(); 279 279 error = hibernation_snapshot(data->platform_support); 280 280 if (!error) 281 281 error = put_user(in_suspend, (int __user *)arg);
+2 -1
mm/hugetlb.c
··· 2738 2738 unlock_page(pagecache_page); 2739 2739 put_page(pagecache_page); 2740 2740 } 2741 - unlock_page(page); 2741 + if (page != pagecache_page) 2742 + unlock_page(page); 2742 2743 2743 2744 out_mutex: 2744 2745 mutex_unlock(&hugetlb_instantiation_mutex);
+6 -1
mm/ksm.c
··· 1724 1724 /* 1725 1725 * Keep it very simple for now: just lock out ksmd and 1726 1726 * MADV_UNMERGEABLE while any memory is going offline. 1727 + * mutex_lock_nested() is necessary because lockdep was alarmed 1728 + * that here we take ksm_thread_mutex inside notifier chain 1729 + * mutex, and later take notifier chain mutex inside 1730 + * ksm_thread_mutex to unlock it. But that's safe because both 1731 + * are inside mem_hotplug_mutex. 1727 1732 */ 1728 - mutex_lock(&ksm_thread_mutex); 1733 + mutex_lock_nested(&ksm_thread_mutex, SINGLE_DEPTH_NESTING); 1729 1734 break; 1730 1735 1731 1736 case MEM_OFFLINE:
+4 -4
mm/memory-failure.c
··· 51 51 #include <linux/slab.h> 52 52 #include <linux/swapops.h> 53 53 #include <linux/hugetlb.h> 54 + #include <linux/memory_hotplug.h> 54 55 #include "internal.h" 55 56 56 57 int sysctl_memory_failure_early_kill __read_mostly = 0; ··· 1231 1230 return 1; 1232 1231 1233 1232 /* 1234 - * The lock_system_sleep prevents a race with memory hotplug, 1235 - * because the isolation assumes there's only a single user. 1233 + * The lock_memory_hotplug prevents a race with memory hotplug. 1236 1234 * This is a big hammer, a better would be nicer. 1237 1235 */ 1238 - lock_system_sleep(); 1236 + lock_memory_hotplug(); 1239 1237 1240 1238 /* 1241 1239 * Isolate the page, so that it doesn't get reallocated if it ··· 1264 1264 ret = 1; 1265 1265 } 1266 1266 unset_migratetype_isolate(p); 1267 - unlock_system_sleep(); 1267 + unlock_memory_hotplug(); 1268 1268 return ret; 1269 1269 } 1270 1270
+24 -7
mm/memory_hotplug.c
··· 34 34 35 35 #include "internal.h" 36 36 37 + DEFINE_MUTEX(mem_hotplug_mutex); 38 + 39 + void lock_memory_hotplug(void) 40 + { 41 + mutex_lock(&mem_hotplug_mutex); 42 + 43 + /* for exclusive hibernation if CONFIG_HIBERNATION=y */ 44 + lock_system_sleep(); 45 + } 46 + 47 + void unlock_memory_hotplug(void) 48 + { 49 + unlock_system_sleep(); 50 + mutex_unlock(&mem_hotplug_mutex); 51 + } 52 + 53 + 37 54 /* add this memory to iomem resource */ 38 55 static struct resource *register_memory_resource(u64 start, u64 size) 39 56 { ··· 510 493 pg_data_t *pgdat; 511 494 int ret; 512 495 513 - lock_system_sleep(); 496 + lock_memory_hotplug(); 514 497 pgdat = hotadd_new_pgdat(nid, 0); 515 498 if (pgdat) { 516 499 ret = -ENOMEM; ··· 521 504 BUG_ON(ret); 522 505 523 506 out: 524 - unlock_system_sleep(); 507 + unlock_memory_hotplug(); 525 508 return ret; 526 509 } 527 510 ··· 533 516 struct resource *res; 534 517 int ret; 535 518 536 - lock_system_sleep(); 519 + lock_memory_hotplug(); 537 520 538 521 res = register_memory_resource(start, size); 539 522 ret = -EEXIST; ··· 580 563 release_memory_resource(res); 581 564 582 565 out: 583 - unlock_system_sleep(); 566 + unlock_memory_hotplug(); 584 567 return ret; 585 568 } 586 569 EXPORT_SYMBOL_GPL(add_memory); ··· 808 791 if (!test_pages_in_a_zone(start_pfn, end_pfn)) 809 792 return -EINVAL; 810 793 811 - lock_system_sleep(); 794 + lock_memory_hotplug(); 812 795 813 796 zone = page_zone(pfn_to_page(start_pfn)); 814 797 node = zone_to_nid(zone); ··· 897 880 writeback_set_ratelimit(); 898 881 899 882 memory_notify(MEM_OFFLINE, &arg); 900 - unlock_system_sleep(); 883 + unlock_memory_hotplug(); 901 884 return 0; 902 885 903 886 failed_removal: ··· 908 891 undo_isolate_page_range(start_pfn, end_pfn); 909 892 910 893 out: 911 - unlock_system_sleep(); 894 + unlock_memory_hotplug(); 912 895 return ret; 913 896 } 914 897
+3
mm/mempolicy.c
··· 1307 1307 goto out; 1308 1308 1309 1309 /* Find the mm_struct */ 1310 + rcu_read_lock(); 1310 1311 read_lock(&tasklist_lock); 1311 1312 task = pid ? find_task_by_vpid(pid) : current; 1312 1313 if (!task) { 1313 1314 read_unlock(&tasklist_lock); 1315 + rcu_read_unlock(); 1314 1316 err = -ESRCH; 1315 1317 goto out; 1316 1318 } 1317 1319 mm = get_task_mm(task); 1318 1320 read_unlock(&tasklist_lock); 1321 + rcu_read_unlock(); 1319 1322 1320 1323 err = -EINVAL; 1321 1324 if (!mm)
+12 -7
mm/page_alloc.c
··· 104 104 * only be modified with pm_mutex held, unless the suspend/hibernate code is 105 105 * guaranteed not to run in parallel with that modification). 106 106 */ 107 - void set_gfp_allowed_mask(gfp_t mask) 107 + 108 + static gfp_t saved_gfp_mask; 109 + 110 + void pm_restore_gfp_mask(void) 108 111 { 109 112 WARN_ON(!mutex_is_locked(&pm_mutex)); 110 - gfp_allowed_mask = mask; 113 + if (saved_gfp_mask) { 114 + gfp_allowed_mask = saved_gfp_mask; 115 + saved_gfp_mask = 0; 116 + } 111 117 } 112 118 113 - gfp_t clear_gfp_allowed_mask(gfp_t mask) 119 + void pm_restrict_gfp_mask(void) 114 120 { 115 - gfp_t ret = gfp_allowed_mask; 116 - 117 121 WARN_ON(!mutex_is_locked(&pm_mutex)); 118 - gfp_allowed_mask &= ~mask; 119 - return ret; 122 + WARN_ON(saved_gfp_mask); 123 + saved_gfp_mask = gfp_allowed_mask; 124 + gfp_allowed_mask &= ~GFP_IOFS; 120 125 } 121 126 #endif /* CONFIG_PM_SLEEP */ 122 127
+2 -2
mm/slub.c
··· 3401 3401 3402 3402 for_each_free_object(p, s, page->freelist) { 3403 3403 set_bit(slab_index(p, s, addr), map); 3404 - if (!check_object(s, page, p, 0)) 3404 + if (!check_object(s, page, p, SLUB_RED_INACTIVE)) 3405 3405 return 0; 3406 3406 } 3407 3407 3408 3408 for_each_object(p, s, addr, page->objects) 3409 3409 if (!test_bit(slab_index(p, s, addr), map)) 3410 - if (!check_object(s, page, p, 1)) 3410 + if (!check_object(s, page, p, SLUB_RED_ACTIVE)) 3411 3411 return 0; 3412 3412 return 1; 3413 3413 }
+17 -11
mm/vmalloc.c
··· 31 31 #include <asm/tlbflush.h> 32 32 #include <asm/shmparam.h> 33 33 34 - bool vmap_lazy_unmap __read_mostly = true; 35 - 36 34 /*** Page table manipulation functions ***/ 37 35 38 36 static void vunmap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end) ··· 501 503 { 502 504 unsigned int log; 503 505 504 - if (!vmap_lazy_unmap) 505 - return 0; 506 - 507 506 log = fls(num_online_cpus()); 508 507 509 508 return log * (32UL * 1024 * 1024 / PAGE_SIZE); ··· 561 566 if (va->va_end > *end) 562 567 *end = va->va_end; 563 568 nr += (va->va_end - va->va_start) >> PAGE_SHIFT; 564 - unmap_vmap_area(va); 565 569 list_add_tail(&va->purge_list, &valist); 566 570 va->flags |= VM_LAZY_FREEING; 567 571 va->flags &= ~VM_LAZY_FREE; ··· 605 611 } 606 612 607 613 /* 608 - * Free and unmap a vmap area, caller ensuring flush_cache_vunmap had been 609 - * called for the correct range previously. 614 + * Free a vmap area, caller ensuring that the area has been unmapped 615 + * and flush_cache_vunmap had been called for the correct range 616 + * previously. 610 617 */ 611 - static void free_unmap_vmap_area_noflush(struct vmap_area *va) 618 + static void free_vmap_area_noflush(struct vmap_area *va) 612 619 { 613 620 va->flags |= VM_LAZY_FREE; 614 621 atomic_add((va->va_end - va->va_start) >> PAGE_SHIFT, &vmap_lazy_nr); 615 622 if (unlikely(atomic_read(&vmap_lazy_nr) > lazy_max_pages())) 616 623 try_purge_vmap_area_lazy(); 624 + } 625 + 626 + /* 627 + * Free and unmap a vmap area, caller ensuring flush_cache_vunmap had been 628 + * called for the correct range previously. 629 + */ 630 + static void free_unmap_vmap_area_noflush(struct vmap_area *va) 631 + { 632 + unmap_vmap_area(va); 633 + free_vmap_area_noflush(va); 617 634 } 618 635 619 636 /* ··· 803 798 spin_unlock(&vmap_block_tree_lock); 804 799 BUG_ON(tmp != vb); 805 800 806 - free_unmap_vmap_area_noflush(vb->va); 801 + free_vmap_area_noflush(vb->va); 807 802 call_rcu(&vb->rcu_head, rcu_free_vb); 808 803 } 809 804 ··· 941 936 rcu_read_unlock(); 942 937 BUG_ON(!vb); 943 938 939 + vunmap_page_range((unsigned long)addr, (unsigned long)addr + size); 940 + 944 941 spin_lock(&vb->lock); 945 942 BUG_ON(bitmap_allocate_region(vb->dirty_map, offset >> PAGE_SHIFT, order)); 946 943 ··· 995 988 996 989 s = vb->va->va_start + (i << PAGE_SHIFT); 997 990 e = vb->va->va_start + (j << PAGE_SHIFT); 998 - vunmap_page_range(s, e); 999 991 flush = 1; 1000 992 1001 993 if (s < start)
+2 -2
mm/vmstat.c
··· 750 750 "nr_shmem", 751 751 "nr_dirtied", 752 752 "nr_written", 753 - "nr_dirty_threshold", 754 - "nr_dirty_background_threshold", 755 753 756 754 #ifdef CONFIG_NUMA 757 755 "numa_hit", ··· 759 761 "numa_local", 760 762 "numa_other", 761 763 #endif 764 + "nr_dirty_threshold", 765 + "nr_dirty_background_threshold", 762 766 763 767 #ifdef CONFIG_VM_EVENT_COUNTERS 764 768 "pgpgin",
+1 -1
net/mac80211/Kconfig
··· 92 92 config MAC80211_LEDS 93 93 bool "Enable LED triggers" 94 94 depends on MAC80211 95 - select NEW_LEDS 95 + depends on LEDS_CLASS 96 96 select LEDS_TRIGGERS 97 97 ---help--- 98 98 This option enables a few LED triggers for different
+1
scripts/kconfig/expr.h
··· 164 164 struct menu *list; 165 165 struct symbol *sym; 166 166 struct property *prompt; 167 + struct expr *visibility; 167 168 struct expr *dep; 168 169 unsigned int flags; 169 170 char *help;
+1
scripts/kconfig/lkc.h
··· 107 107 void menu_add_entry(struct symbol *sym); 108 108 void menu_end_entry(void); 109 109 void menu_add_dep(struct expr *dep); 110 + void menu_add_visibility(struct expr *dep); 110 111 struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep); 111 112 struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep); 112 113 void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
+11
scripts/kconfig/menu.c
··· 152 152 return menu_add_prop(type, prompt, NULL, dep); 153 153 } 154 154 155 + void menu_add_visibility(struct expr *expr) 156 + { 157 + current_entry->visibility = expr_alloc_and(current_entry->visibility, 158 + expr); 159 + } 160 + 155 161 void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep) 156 162 { 157 163 menu_add_prop(type, NULL, expr, dep); ··· 415 409 416 410 if (!menu->prompt) 417 411 return false; 412 + 413 + if (menu->visibility) { 414 + if (expr_calc_value(menu->visibility) == no) 415 + return no; 416 + } 418 417 419 418 sym = menu->sym; 420 419 if (sym) {
+1
scripts/kconfig/zconf.gperf
··· 38 38 string, T_TYPE, TF_COMMAND, S_STRING 39 39 select, T_SELECT, TF_COMMAND 40 40 range, T_RANGE, TF_COMMAND 41 + visible, T_VISIBLE, TF_COMMAND 41 42 option, T_OPTION, TF_COMMAND 42 43 on, T_ON, TF_PARAM 43 44 modules, T_OPT_MODULES, TF_OPTION
+64 -58
scripts/kconfig/zconf.hash.c_shipped
··· 32 32 struct kconf_id; 33 33 34 34 static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len); 35 - /* maximum key range = 47, duplicates = 0 */ 35 + /* maximum key range = 50, duplicates = 0 */ 36 36 37 37 #ifdef __GNUC__ 38 38 __inline ··· 46 46 { 47 47 static unsigned char asso_values[] = 48 48 { 49 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 50 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 51 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 52 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 53 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 54 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 55 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 56 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 57 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 58 - 49, 49, 49, 49, 49, 49, 49, 49, 11, 5, 59 - 0, 0, 5, 49, 5, 20, 49, 49, 5, 20, 60 - 5, 0, 30, 49, 0, 15, 0, 10, 0, 49, 61 - 25, 49, 49, 49, 49, 49, 49, 49, 49, 49, 62 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 63 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 64 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 65 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 66 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 67 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 68 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 69 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 70 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 71 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 72 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 73 - 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 74 - 49, 49, 49, 49, 49, 49 49 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 50 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 51 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 54 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 55 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 56 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 57 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 58 + 52, 52, 52, 52, 52, 52, 52, 52, 40, 5, 59 + 0, 0, 5, 52, 0, 20, 52, 52, 10, 20, 60 + 5, 0, 35, 52, 0, 30, 0, 15, 0, 52, 61 + 15, 52, 52, 52, 52, 52, 52, 52, 52, 52, 62 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 63 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 64 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 65 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 66 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 67 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 68 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 69 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 70 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 71 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 72 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 73 + 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 74 + 52, 52, 52, 52, 52, 52 75 75 }; 76 76 register int hval = len; 77 77 ··· 102 102 char kconf_id_strings_str12[sizeof("default")]; 103 103 char kconf_id_strings_str13[sizeof("def_bool")]; 104 104 char kconf_id_strings_str14[sizeof("help")]; 105 - char kconf_id_strings_str15[sizeof("bool")]; 106 105 char kconf_id_strings_str16[sizeof("config")]; 107 106 char kconf_id_strings_str17[sizeof("def_tristate")]; 108 - char kconf_id_strings_str18[sizeof("boolean")]; 107 + char kconf_id_strings_str18[sizeof("hex")]; 109 108 char kconf_id_strings_str19[sizeof("defconfig_list")]; 110 - char kconf_id_strings_str21[sizeof("string")]; 111 109 char kconf_id_strings_str22[sizeof("if")]; 112 110 char kconf_id_strings_str23[sizeof("int")]; 113 - char kconf_id_strings_str26[sizeof("select")]; 114 111 char kconf_id_strings_str27[sizeof("modules")]; 115 112 char kconf_id_strings_str28[sizeof("tristate")]; 116 113 char kconf_id_strings_str29[sizeof("menu")]; 117 - char kconf_id_strings_str31[sizeof("source")]; 118 114 char kconf_id_strings_str32[sizeof("comment")]; 119 - char kconf_id_strings_str33[sizeof("hex")]; 120 115 char kconf_id_strings_str35[sizeof("menuconfig")]; 121 - char kconf_id_strings_str36[sizeof("prompt")]; 122 - char kconf_id_strings_str37[sizeof("depends")]; 116 + char kconf_id_strings_str36[sizeof("string")]; 117 + char kconf_id_strings_str37[sizeof("visible")]; 118 + char kconf_id_strings_str41[sizeof("prompt")]; 119 + char kconf_id_strings_str42[sizeof("depends")]; 120 + char kconf_id_strings_str44[sizeof("bool")]; 121 + char kconf_id_strings_str46[sizeof("select")]; 122 + char kconf_id_strings_str47[sizeof("boolean")]; 123 123 char kconf_id_strings_str48[sizeof("mainmenu")]; 124 + char kconf_id_strings_str51[sizeof("source")]; 124 125 }; 125 126 static struct kconf_id_strings_t kconf_id_strings_contents = 126 127 { ··· 137 136 "default", 138 137 "def_bool", 139 138 "help", 140 - "bool", 141 139 "config", 142 140 "def_tristate", 143 - "boolean", 141 + "hex", 144 142 "defconfig_list", 145 - "string", 146 143 "if", 147 144 "int", 148 - "select", 149 145 "modules", 150 146 "tristate", 151 147 "menu", 152 - "source", 153 148 "comment", 154 - "hex", 155 149 "menuconfig", 150 + "string", 151 + "visible", 156 152 "prompt", 157 153 "depends", 158 - "mainmenu" 154 + "bool", 155 + "select", 156 + "boolean", 157 + "mainmenu", 158 + "source" 159 159 }; 160 160 #define kconf_id_strings ((const char *) &kconf_id_strings_contents) 161 161 #ifdef __GNUC__ ··· 170 168 { 171 169 enum 172 170 { 173 - TOTAL_KEYWORDS = 31, 171 + TOTAL_KEYWORDS = 32, 174 172 MIN_WORD_LENGTH = 2, 175 173 MAX_WORD_LENGTH = 14, 176 174 MIN_HASH_VALUE = 2, 177 - MAX_HASH_VALUE = 48 175 + MAX_HASH_VALUE = 51 178 176 }; 179 177 180 178 static struct kconf_id wordlist[] = ··· 193 191 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN}, 194 192 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN}, 195 193 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND}, 196 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_TYPE, TF_COMMAND, S_BOOLEAN}, 194 + {-1}, 197 195 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND}, 198 196 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE}, 199 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_BOOLEAN}, 197 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_HEX}, 200 198 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION}, 201 - {-1}, 202 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING}, 199 + {-1}, {-1}, 203 200 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM}, 204 201 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT}, 205 - {-1}, {-1}, 206 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND}, 202 + {-1}, {-1}, {-1}, 207 203 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION}, 208 204 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE}, 209 205 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND}, 210 - {-1}, 211 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND}, 206 + {-1}, {-1}, 212 207 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND}, 213 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_HEX}, 214 - {-1}, 208 + {-1}, {-1}, 215 209 {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND}, 216 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND}, 217 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND}, 218 - {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, 210 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_TYPE, TF_COMMAND, S_STRING}, 211 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_VISIBLE, TF_COMMAND}, 212 + {-1}, {-1}, {-1}, 213 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41, T_PROMPT, TF_COMMAND}, 214 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42, T_DEPENDS, TF_COMMAND}, 219 215 {-1}, 220 - {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND} 216 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str44, T_TYPE, TF_COMMAND, S_BOOLEAN}, 217 + {-1}, 218 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46, T_SELECT, TF_COMMAND}, 219 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47, T_TYPE, TF_COMMAND, S_BOOLEAN}, 220 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND}, 221 + {-1}, {-1}, 222 + {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51, T_SOURCE, TF_COMMAND} 221 223 }; 222 224 223 225 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+313 -295
scripts/kconfig/zconf.tab.c_shipped
··· 160 160 T_DEFAULT = 275, 161 161 T_SELECT = 276, 162 162 T_RANGE = 277, 163 - T_OPTION = 278, 164 - T_ON = 279, 165 - T_WORD = 280, 166 - T_WORD_QUOTE = 281, 167 - T_UNEQUAL = 282, 168 - T_CLOSE_PAREN = 283, 169 - T_OPEN_PAREN = 284, 170 - T_EOL = 285, 171 - T_OR = 286, 172 - T_AND = 287, 173 - T_EQUAL = 288, 174 - T_NOT = 289 163 + T_VISIBLE = 278, 164 + T_OPTION = 279, 165 + T_ON = 280, 166 + T_WORD = 281, 167 + T_WORD_QUOTE = 282, 168 + T_UNEQUAL = 283, 169 + T_CLOSE_PAREN = 284, 170 + T_OPEN_PAREN = 285, 171 + T_EOL = 286, 172 + T_OR = 287, 173 + T_AND = 288, 174 + T_EQUAL = 289, 175 + T_NOT = 290 175 176 }; 176 177 #endif 177 178 ··· 420 419 /* YYFINAL -- State number of the termination state. */ 421 420 #define YYFINAL 11 422 421 /* YYLAST -- Last index in YYTABLE. */ 423 - #define YYLAST 277 422 + #define YYLAST 290 424 423 425 424 /* YYNTOKENS -- Number of terminals. */ 426 - #define YYNTOKENS 35 425 + #define YYNTOKENS 36 427 426 /* YYNNTS -- Number of nonterminals. */ 428 - #define YYNNTS 48 427 + #define YYNNTS 50 429 428 /* YYNRULES -- Number of rules. */ 430 - #define YYNRULES 113 429 + #define YYNRULES 118 431 430 /* YYNRULES -- Number of states. */ 432 - #define YYNSTATES 185 431 + #define YYNSTATES 191 433 432 434 433 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ 435 434 #define YYUNDEFTOK 2 436 - #define YYMAXUTOK 289 435 + #define YYMAXUTOK 290 437 436 438 437 #define YYTRANSLATE(YYX) \ 439 438 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) ··· 469 468 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 470 469 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 471 470 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 472 - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 471 + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 472 + 35 473 473 }; 474 474 475 475 #if YYDEBUG ··· 480 478 { 481 479 0, 0, 3, 6, 8, 11, 13, 14, 17, 20, 482 480 23, 26, 31, 36, 40, 42, 44, 46, 48, 50, 483 - 52, 54, 56, 58, 60, 62, 64, 66, 70, 73, 484 - 77, 80, 84, 87, 88, 91, 94, 97, 100, 103, 485 - 106, 110, 115, 120, 125, 131, 135, 136, 140, 141, 486 - 144, 148, 151, 153, 157, 158, 161, 164, 167, 170, 487 - 173, 178, 182, 185, 190, 191, 194, 198, 200, 204, 488 - 205, 208, 211, 214, 218, 222, 225, 227, 231, 232, 489 - 235, 238, 241, 245, 249, 252, 255, 258, 259, 262, 490 - 265, 268, 273, 274, 277, 279, 281, 284, 287, 290, 491 - 292, 295, 296, 299, 301, 305, 309, 313, 316, 320, 492 - 324, 326, 328, 329 481 + 52, 54, 56, 58, 60, 62, 64, 66, 68, 72, 482 + 75, 79, 82, 86, 89, 90, 93, 96, 99, 102, 483 + 105, 108, 112, 117, 122, 127, 133, 137, 138, 142, 484 + 143, 146, 150, 153, 155, 159, 160, 163, 166, 169, 485 + 172, 175, 180, 184, 187, 192, 193, 196, 200, 202, 486 + 206, 207, 210, 213, 216, 220, 224, 228, 230, 234, 487 + 235, 238, 241, 244, 248, 252, 255, 258, 261, 262, 488 + 265, 268, 271, 276, 277, 280, 283, 286, 287, 290, 489 + 292, 294, 297, 300, 303, 305, 308, 309, 312, 314, 490 + 318, 322, 326, 329, 333, 337, 339, 341, 342 493 491 }; 494 492 495 493 /* YYRHS -- A `-1'-separated list of the rules' RHS. */ 496 494 static const yytype_int8 yyrhs[] = 497 495 { 498 - 36, 0, -1, 78, 37, -1, 37, -1, 62, 38, 499 - -1, 38, -1, -1, 38, 40, -1, 38, 54, -1, 500 - 38, 66, -1, 38, 77, -1, 38, 25, 1, 30, 501 - -1, 38, 39, 1, 30, -1, 38, 1, 30, -1, 496 + 37, 0, -1, 81, 38, -1, 38, -1, 63, 39, 497 + -1, 39, -1, -1, 39, 41, -1, 39, 55, -1, 498 + 39, 67, -1, 39, 80, -1, 39, 26, 1, 31, 499 + -1, 39, 40, 1, 31, -1, 39, 1, 31, -1, 502 500 16, -1, 18, -1, 19, -1, 21, -1, 17, -1, 503 - 22, -1, 20, -1, 30, -1, 60, -1, 70, -1, 504 - 43, -1, 45, -1, 68, -1, 25, 1, 30, -1, 505 - 1, 30, -1, 10, 25, 30, -1, 42, 46, -1, 506 - 11, 25, 30, -1, 44, 46, -1, -1, 46, 47, 507 - -1, 46, 48, -1, 46, 74, -1, 46, 72, -1, 508 - 46, 41, -1, 46, 30, -1, 19, 75, 30, -1, 509 - 18, 76, 79, 30, -1, 20, 80, 79, 30, -1, 510 - 21, 25, 79, 30, -1, 22, 81, 81, 79, 30, 511 - -1, 23, 49, 30, -1, -1, 49, 25, 50, -1, 512 - -1, 33, 76, -1, 7, 82, 30, -1, 51, 55, 513 - -1, 77, -1, 52, 57, 53, -1, -1, 55, 56, 514 - -1, 55, 74, -1, 55, 72, -1, 55, 30, -1, 515 - 55, 41, -1, 18, 76, 79, 30, -1, 19, 75, 516 - 30, -1, 17, 30, -1, 20, 25, 79, 30, -1, 517 - -1, 57, 40, -1, 14, 80, 78, -1, 77, -1, 518 - 58, 61, 59, -1, -1, 61, 40, -1, 61, 66, 519 - -1, 61, 54, -1, 3, 76, 78, -1, 4, 76, 520 - 30, -1, 63, 73, -1, 77, -1, 64, 67, 65, 521 - -1, -1, 67, 40, -1, 67, 66, -1, 67, 54, 522 - -1, 6, 76, 30, -1, 9, 76, 30, -1, 69, 523 - 73, -1, 12, 30, -1, 71, 13, -1, -1, 73, 524 - 74, -1, 73, 30, -1, 73, 41, -1, 16, 24, 525 - 80, 30, -1, -1, 76, 79, -1, 25, -1, 26, 526 - -1, 5, 30, -1, 8, 30, -1, 15, 30, -1, 527 - 30, -1, 78, 30, -1, -1, 14, 80, -1, 81, 528 - -1, 81, 33, 81, -1, 81, 27, 81, -1, 29, 529 - 80, 28, -1, 34, 80, -1, 80, 31, 80, -1, 530 - 80, 32, 80, -1, 25, -1, 26, -1, -1, 25, 531 - -1 501 + 22, -1, 20, -1, 23, -1, 31, -1, 61, -1, 502 + 71, -1, 44, -1, 46, -1, 69, -1, 26, 1, 503 + 31, -1, 1, 31, -1, 10, 26, 31, -1, 43, 504 + 47, -1, 11, 26, 31, -1, 45, 47, -1, -1, 505 + 47, 48, -1, 47, 49, -1, 47, 75, -1, 47, 506 + 73, -1, 47, 42, -1, 47, 31, -1, 19, 78, 507 + 31, -1, 18, 79, 82, 31, -1, 20, 83, 82, 508 + 31, -1, 21, 26, 82, 31, -1, 22, 84, 84, 509 + 82, 31, -1, 24, 50, 31, -1, -1, 50, 26, 510 + 51, -1, -1, 34, 79, -1, 7, 85, 31, -1, 511 + 52, 56, -1, 80, -1, 53, 58, 54, -1, -1, 512 + 56, 57, -1, 56, 75, -1, 56, 73, -1, 56, 513 + 31, -1, 56, 42, -1, 18, 79, 82, 31, -1, 514 + 19, 78, 31, -1, 17, 31, -1, 20, 26, 82, 515 + 31, -1, -1, 58, 41, -1, 14, 83, 81, -1, 516 + 80, -1, 59, 62, 60, -1, -1, 62, 41, -1, 517 + 62, 67, -1, 62, 55, -1, 3, 79, 81, -1, 518 + 4, 79, 31, -1, 64, 76, 74, -1, 80, -1, 519 + 65, 68, 66, -1, -1, 68, 41, -1, 68, 67, 520 + -1, 68, 55, -1, 6, 79, 31, -1, 9, 79, 521 + 31, -1, 70, 74, -1, 12, 31, -1, 72, 13, 522 + -1, -1, 74, 75, -1, 74, 31, -1, 74, 42, 523 + -1, 16, 25, 83, 31, -1, -1, 76, 77, -1, 524 + 76, 31, -1, 23, 82, -1, -1, 79, 82, -1, 525 + 26, -1, 27, -1, 5, 31, -1, 8, 31, -1, 526 + 15, 31, -1, 31, -1, 81, 31, -1, -1, 14, 527 + 83, -1, 84, -1, 84, 34, 84, -1, 84, 28, 528 + 84, -1, 30, 83, 29, -1, 35, 83, -1, 83, 529 + 32, 83, -1, 83, 33, 83, -1, 26, -1, 27, 530 + -1, -1, 26, -1 532 531 }; 533 532 534 533 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ 535 534 static const yytype_uint16 yyrline[] = 536 535 { 537 - 0, 107, 107, 107, 109, 109, 111, 113, 114, 115, 538 - 116, 117, 118, 122, 126, 126, 126, 126, 126, 126, 539 - 126, 130, 131, 132, 133, 134, 135, 139, 140, 146, 540 - 154, 160, 168, 178, 180, 181, 182, 183, 184, 185, 541 - 188, 196, 202, 212, 218, 224, 227, 229, 240, 241, 542 - 246, 255, 260, 268, 271, 273, 274, 275, 276, 277, 543 - 280, 286, 297, 303, 313, 315, 320, 328, 336, 339, 544 - 341, 342, 343, 348, 355, 362, 367, 375, 378, 380, 545 - 381, 382, 385, 393, 400, 407, 413, 420, 422, 423, 546 - 424, 427, 435, 437, 442, 443, 446, 447, 448, 452, 547 - 453, 456, 457, 460, 461, 462, 463, 464, 465, 466, 548 - 469, 470, 473, 474 536 + 0, 108, 108, 108, 110, 110, 112, 114, 115, 116, 537 + 117, 118, 119, 123, 127, 127, 127, 127, 127, 127, 538 + 127, 127, 131, 132, 133, 134, 135, 136, 140, 141, 539 + 147, 155, 161, 169, 179, 181, 182, 183, 184, 185, 540 + 186, 189, 197, 203, 213, 219, 225, 228, 230, 241, 541 + 242, 247, 256, 261, 269, 272, 274, 275, 276, 277, 542 + 278, 281, 287, 298, 304, 314, 316, 321, 329, 337, 543 + 340, 342, 343, 344, 349, 356, 363, 368, 376, 379, 544 + 381, 382, 383, 386, 394, 401, 408, 414, 421, 423, 545 + 424, 425, 428, 436, 438, 439, 442, 449, 451, 456, 546 + 457, 460, 461, 462, 466, 467, 470, 471, 474, 475, 547 + 476, 477, 478, 479, 480, 483, 484, 487, 488 549 548 }; 550 549 #endif 551 550 ··· 559 556 "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG", 560 557 "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS", 561 558 "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE", 562 - "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", 559 + "T_VISIBLE", "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL", 563 560 "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL", 564 561 "T_NOT", "$accept", "input", "start", "stmt_list", "option_name", 565 562 "common_stmt", "option_error", "config_entry_start", "config_stmt", ··· 570 567 "if_entry", "if_end", "if_stmt", "if_block", "mainmenu_stmt", "menu", 571 568 "menu_entry", "menu_end", "menu_stmt", "menu_block", "source_stmt", 572 569 "comment", "comment_stmt", "help_start", "help", "depends_list", 573 - "depends", "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", 574 - "symbol", "word_opt", 0 570 + "depends", "visibility_list", "visible", "prompt_stmt_opt", "prompt", 571 + "end", "nl", "if_expr", "expr", "symbol", "word_opt", 0 575 572 }; 576 573 #endif 577 574 ··· 583 580 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 584 581 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 585 582 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 586 - 285, 286, 287, 288, 289 583 + 285, 286, 287, 288, 289, 290 587 584 }; 588 585 # endif 589 586 590 587 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ 591 588 static const yytype_uint8 yyr1[] = 592 589 { 593 - 0, 35, 36, 36, 37, 37, 38, 38, 38, 38, 594 - 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 595 - 39, 40, 40, 40, 40, 40, 40, 41, 41, 42, 596 - 43, 44, 45, 46, 46, 46, 46, 46, 46, 46, 597 - 47, 47, 47, 47, 47, 48, 49, 49, 50, 50, 598 - 51, 52, 53, 54, 55, 55, 55, 55, 55, 55, 599 - 56, 56, 56, 56, 57, 57, 58, 59, 60, 61, 600 - 61, 61, 61, 62, 63, 64, 65, 66, 67, 67, 601 - 67, 67, 68, 69, 70, 71, 72, 73, 73, 73, 602 - 73, 74, 75, 75, 76, 76, 77, 77, 77, 78, 603 - 78, 79, 79, 80, 80, 80, 80, 80, 80, 80, 604 - 81, 81, 82, 82 590 + 0, 36, 37, 37, 38, 38, 39, 39, 39, 39, 591 + 39, 39, 39, 39, 40, 40, 40, 40, 40, 40, 592 + 40, 40, 41, 41, 41, 41, 41, 41, 42, 42, 593 + 43, 44, 45, 46, 47, 47, 47, 47, 47, 47, 594 + 47, 48, 48, 48, 48, 48, 49, 50, 50, 51, 595 + 51, 52, 53, 54, 55, 56, 56, 56, 56, 56, 596 + 56, 57, 57, 57, 57, 58, 58, 59, 60, 61, 597 + 62, 62, 62, 62, 63, 64, 65, 66, 67, 68, 598 + 68, 68, 68, 69, 70, 71, 72, 73, 74, 74, 599 + 74, 74, 75, 76, 76, 76, 77, 78, 78, 79, 600 + 79, 80, 80, 80, 81, 81, 82, 82, 83, 83, 601 + 83, 83, 83, 83, 83, 84, 84, 85, 85 605 602 }; 606 603 607 604 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ ··· 609 606 { 610 607 0, 2, 2, 1, 2, 1, 0, 2, 2, 2, 611 608 2, 4, 4, 3, 1, 1, 1, 1, 1, 1, 612 - 1, 1, 1, 1, 1, 1, 1, 3, 2, 3, 613 - 2, 3, 2, 0, 2, 2, 2, 2, 2, 2, 614 - 3, 4, 4, 4, 5, 3, 0, 3, 0, 2, 615 - 3, 2, 1, 3, 0, 2, 2, 2, 2, 2, 616 - 4, 3, 2, 4, 0, 2, 3, 1, 3, 0, 617 - 2, 2, 2, 3, 3, 2, 1, 3, 0, 2, 618 - 2, 2, 3, 3, 2, 2, 2, 0, 2, 2, 619 - 2, 4, 0, 2, 1, 1, 2, 2, 2, 1, 620 - 2, 0, 2, 1, 3, 3, 3, 2, 3, 3, 621 - 1, 1, 0, 1 609 + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, 610 + 3, 2, 3, 2, 0, 2, 2, 2, 2, 2, 611 + 2, 3, 4, 4, 4, 5, 3, 0, 3, 0, 612 + 2, 3, 2, 1, 3, 0, 2, 2, 2, 2, 613 + 2, 4, 3, 2, 4, 0, 2, 3, 1, 3, 614 + 0, 2, 2, 2, 3, 3, 3, 1, 3, 0, 615 + 2, 2, 2, 3, 3, 2, 2, 2, 0, 2, 616 + 2, 2, 4, 0, 2, 2, 2, 0, 2, 1, 617 + 1, 2, 2, 2, 1, 2, 0, 2, 1, 3, 618 + 3, 3, 2, 3, 3, 1, 1, 0, 1 622 619 }; 623 620 624 621 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state ··· 626 623 means the default is an error. */ 627 624 static const yytype_uint8 yydefact[] = 628 625 { 629 - 6, 0, 99, 0, 3, 0, 6, 6, 94, 95, 630 - 0, 1, 0, 0, 0, 0, 112, 0, 0, 0, 626 + 6, 0, 104, 0, 3, 0, 6, 6, 99, 100, 627 + 0, 1, 0, 0, 0, 0, 117, 0, 0, 0, 631 628 0, 0, 0, 14, 18, 15, 16, 20, 17, 19, 632 - 0, 21, 0, 7, 33, 24, 33, 25, 54, 64, 633 - 8, 69, 22, 87, 78, 9, 26, 87, 23, 10, 634 - 0, 100, 2, 73, 13, 0, 96, 0, 113, 0, 635 - 97, 0, 0, 0, 110, 111, 0, 0, 0, 103, 636 - 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637 - 0, 74, 82, 50, 83, 29, 31, 0, 107, 0, 638 - 0, 66, 0, 0, 11, 12, 0, 0, 0, 0, 639 - 92, 0, 0, 0, 46, 0, 39, 38, 34, 35, 640 - 0, 37, 36, 0, 0, 92, 0, 58, 59, 55, 641 - 57, 56, 65, 53, 52, 70, 72, 68, 71, 67, 642 - 89, 90, 88, 79, 81, 77, 80, 76, 106, 108, 643 - 109, 105, 104, 28, 85, 0, 101, 0, 101, 101, 644 - 101, 0, 0, 0, 86, 62, 101, 0, 101, 0, 645 - 0, 0, 40, 93, 0, 0, 101, 48, 45, 27, 646 - 0, 61, 0, 91, 102, 41, 42, 43, 0, 0, 647 - 47, 60, 63, 44, 49 629 + 21, 0, 22, 0, 7, 34, 25, 34, 26, 55, 630 + 65, 8, 70, 23, 93, 79, 9, 27, 88, 24, 631 + 10, 0, 105, 2, 74, 13, 0, 101, 0, 118, 632 + 0, 102, 0, 0, 0, 115, 116, 0, 0, 0, 633 + 108, 103, 0, 0, 0, 0, 0, 0, 0, 88, 634 + 0, 0, 75, 83, 51, 84, 30, 32, 0, 112, 635 + 0, 0, 67, 0, 0, 11, 12, 0, 0, 0, 636 + 0, 97, 0, 0, 0, 47, 0, 40, 39, 35, 637 + 36, 0, 38, 37, 0, 0, 97, 0, 59, 60, 638 + 56, 58, 57, 66, 54, 53, 71, 73, 69, 72, 639 + 68, 106, 95, 0, 94, 80, 82, 78, 81, 77, 640 + 90, 91, 89, 111, 113, 114, 110, 109, 29, 86, 641 + 0, 106, 0, 106, 106, 106, 0, 0, 0, 87, 642 + 63, 106, 0, 106, 0, 96, 0, 0, 41, 98, 643 + 0, 0, 106, 49, 46, 28, 0, 62, 0, 107, 644 + 92, 42, 43, 44, 0, 0, 48, 61, 64, 45, 645 + 50 648 646 }; 649 647 650 648 /* YYDEFGOTO[NTERM-NUM]. */ 651 649 static const yytype_int16 yydefgoto[] = 652 650 { 653 - -1, 3, 4, 5, 32, 33, 107, 34, 35, 36, 654 - 37, 73, 108, 109, 152, 180, 38, 39, 123, 40, 655 - 75, 119, 76, 41, 127, 42, 77, 6, 43, 44, 656 - 135, 45, 79, 46, 47, 48, 110, 111, 78, 112, 657 - 147, 148, 49, 7, 161, 68, 69, 59 651 + -1, 3, 4, 5, 33, 34, 108, 35, 36, 37, 652 + 38, 74, 109, 110, 157, 186, 39, 40, 124, 41, 653 + 76, 120, 77, 42, 128, 43, 78, 6, 44, 45, 654 + 137, 46, 80, 47, 48, 49, 111, 112, 81, 113, 655 + 79, 134, 152, 153, 50, 7, 165, 69, 70, 60 658 656 }; 659 657 660 658 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing 661 659 STATE-NUM. */ 662 - #define YYPACT_NINF -89 660 + #define YYPACT_NINF -90 663 661 static const yytype_int16 yypact[] = 664 662 { 665 - 3, 4, -89, 20, -89, 100, -89, 7, -89, -89, 666 - -8, -89, 17, 4, 28, 4, 37, 36, 4, 68, 667 - 87, -18, 69, -89, -89, -89, -89, -89, -89, -89, 668 - 128, -89, 138, -89, -89, -89, -89, -89, -89, -89, 669 - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, 670 - 127, -89, -89, 110, -89, 126, -89, 136, -89, 137, 671 - -89, 147, 150, 152, -89, -89, -18, -18, 171, -14, 672 - -89, 153, 157, 34, 67, 180, 233, 220, 207, 220, 673 - 154, -89, -89, -89, -89, -89, -89, 0, -89, -18, 674 - -18, 110, 44, 44, -89, -89, 163, 174, 182, 4, 675 - 4, -18, 194, 44, -89, 219, -89, -89, -89, -89, 676 - 223, -89, -89, 203, 4, 4, 215, -89, -89, -89, 677 - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, 678 - -89, -89, -89, -89, -89, -89, -89, -89, -89, 213, 679 - -89, -89, -89, -89, -89, -18, 232, 227, 232, -5, 680 - 232, 44, 35, 234, -89, -89, 232, 235, 232, 224, 681 - -18, 236, -89, -89, 237, 238, 232, 216, -89, -89, 682 - 240, -89, 241, -89, 71, -89, -89, -89, 242, 4, 683 - -89, -89, -89, -89, -89 663 + 4, 42, -90, 96, -90, 111, -90, 15, -90, -90, 664 + 75, -90, 82, 42, 104, 42, 110, 107, 42, 115, 665 + 125, -4, 121, -90, -90, -90, -90, -90, -90, -90, 666 + -90, 162, -90, 163, -90, -90, -90, -90, -90, -90, 667 + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, 668 + -90, 139, -90, -90, 138, -90, 142, -90, 143, -90, 669 + 152, -90, 164, 167, 168, -90, -90, -4, -4, 77, 670 + -18, -90, 177, 185, 33, 71, 195, 247, 236, -2, 671 + 236, 171, -90, -90, -90, -90, -90, -90, 41, -90, 672 + -4, -4, 138, 97, 97, -90, -90, 186, 187, 194, 673 + 42, 42, -4, 196, 97, -90, 219, -90, -90, -90, 674 + -90, 210, -90, -90, 204, 42, 42, 199, -90, -90, 675 + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, 676 + -90, 222, -90, 223, -90, -90, -90, -90, -90, -90, 677 + -90, -90, -90, -90, 215, -90, -90, -90, -90, -90, 678 + -4, 222, 228, 222, -5, 222, 97, 35, 229, -90, 679 + -90, 222, 232, 222, -4, -90, 135, 233, -90, -90, 680 + 234, 235, 222, 240, -90, -90, 237, -90, 239, -13, 681 + -90, -90, -90, -90, 244, 42, -90, -90, -90, -90, 682 + -90 684 683 }; 685 684 686 685 /* YYPGOTO[NTERM-NUM]. */ 687 686 static const yytype_int16 yypgoto[] = 688 687 { 689 - -89, -89, 255, 267, -89, 47, -57, -89, -89, -89, 690 - -89, 239, -89, -89, -89, -89, -89, -89, -89, 130, 691 - -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, 692 - -89, 181, -89, -89, -89, -89, -89, 199, 229, 16, 693 - 162, -1, 74, -7, 103, -65, -88, -89 688 + -90, -90, 269, 271, -90, 23, -70, -90, -90, -90, 689 + -90, 243, -90, -90, -90, -90, -90, -90, -90, -48, 690 + -90, -90, -90, -90, -90, -90, -90, -90, -90, -90, 691 + -90, -20, -90, -90, -90, -90, -90, 206, 205, -68, 692 + -90, -90, 169, -1, 27, -7, 118, -66, -89, -90 694 693 }; 695 694 696 695 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If 697 696 positive, shift that token. If negative, reduce the rule which 698 697 number is the opposite. If zero, do what YYDEFACT says. 699 698 If YYTABLE_NINF, syntax error. */ 700 - #define YYTABLE_NINF -85 699 + #define YYTABLE_NINF -86 701 700 static const yytype_int16 yytable[] = 702 701 { 703 - 10, 87, 88, 53, 141, 142, 1, 64, 65, 160, 704 - 1, 66, 55, 92, 57, 151, 67, 61, 118, 93, 705 - 11, 131, 2, 131, 139, 140, 89, 90, 138, 8, 706 - 9, 89, 90, 2, -30, 96, 149, 51, -30, -30, 707 - -30, -30, -30, -30, -30, -30, 97, 54, -30, -30, 708 - 98, -30, 99, 100, 101, 102, 103, 104, 56, 105, 709 - 167, 91, 58, 166, 106, 168, 60, -32, 96, 64, 710 - 65, -32, -32, -32, -32, -32, -32, -32, -32, 97, 711 - 159, -32, -32, 98, -32, 99, 100, 101, 102, 103, 712 - 104, 121, 105, 62, 132, 174, 132, 106, 146, 70, 713 - -5, 12, 89, 90, 13, 14, 15, 16, 17, 18, 714 - 19, 20, 63, 156, 21, 22, 23, 24, 25, 26, 715 - 27, 28, 29, 122, 125, 30, 133, -4, 12, 71, 716 - 31, 13, 14, 15, 16, 17, 18, 19, 20, 72, 717 - 51, 21, 22, 23, 24, 25, 26, 27, 28, 29, 718 - 124, 129, 30, 137, -84, 96, 81, 31, -84, -84, 719 - -84, -84, -84, -84, -84, -84, 82, 83, -84, -84, 720 - 98, -84, -84, -84, -84, -84, -84, 84, 184, 105, 721 - 85, 96, 86, 94, 130, -51, -51, 95, -51, -51, 722 - -51, -51, 97, 143, -51, -51, 98, 113, 114, 115, 723 - 116, 2, 89, 90, 144, 105, 145, 126, 96, 134, 724 - 117, -75, -75, -75, -75, -75, -75, -75, -75, 150, 725 - 153, -75, -75, 98, 13, 14, 15, 16, 17, 18, 726 - 19, 20, 105, 155, 21, 22, 154, 130, 14, 15, 727 - 158, 17, 18, 19, 20, 90, 160, 21, 22, 179, 728 - 31, 163, 164, 165, 173, 89, 90, 162, 128, 170, 729 - 136, 172, 52, 31, 169, 171, 175, 176, 177, 178, 730 - 181, 182, 183, 50, 120, 74, 80, 157 702 + 10, 88, 89, 54, 146, 147, 119, 1, 122, 164, 703 + 93, 141, 56, 142, 58, 156, 94, 62, 1, 90, 704 + 91, 131, 65, 66, 144, 145, 67, 90, 91, 132, 705 + 127, 68, 136, -31, 97, 2, 154, -31, -31, -31, 706 + -31, -31, -31, -31, -31, 98, 52, -31, -31, 99, 707 + -31, 100, 101, 102, 103, 104, -31, 105, 129, 106, 708 + 138, 173, 92, 141, 107, 142, 174, 172, 8, 9, 709 + 143, -33, 97, 90, 91, -33, -33, -33, -33, -33, 710 + -33, -33, -33, 98, 166, -33, -33, 99, -33, 100, 711 + 101, 102, 103, 104, -33, 105, 11, 106, 179, 151, 712 + 123, 126, 107, 135, 125, 130, 2, 139, 2, 90, 713 + 91, -5, 12, 55, 161, 13, 14, 15, 16, 17, 714 + 18, 19, 20, 65, 66, 21, 22, 23, 24, 25, 715 + 26, 27, 28, 29, 30, 57, 59, 31, 61, -4, 716 + 12, 63, 32, 13, 14, 15, 16, 17, 18, 19, 717 + 20, 64, 71, 21, 22, 23, 24, 25, 26, 27, 718 + 28, 29, 30, 72, 73, 31, 180, 90, 91, 52, 719 + 32, -85, 97, 82, 83, -85, -85, -85, -85, -85, 720 + -85, -85, -85, 84, 190, -85, -85, 99, -85, -85, 721 + -85, -85, -85, -85, -85, 85, 97, 106, 86, 87, 722 + -52, -52, 140, -52, -52, -52, -52, 98, 95, -52, 723 + -52, 99, 114, 115, 116, 117, 96, 148, 149, 150, 724 + 158, 106, 155, 159, 97, 163, 118, -76, -76, -76, 725 + -76, -76, -76, -76, -76, 160, 164, -76, -76, 99, 726 + 13, 14, 15, 16, 17, 18, 19, 20, 91, 106, 727 + 21, 22, 14, 15, 140, 17, 18, 19, 20, 168, 728 + 175, 21, 22, 177, 181, 182, 183, 32, 187, 167, 729 + 188, 169, 170, 171, 185, 189, 53, 51, 32, 176, 730 + 75, 178, 121, 0, 133, 162, 0, 0, 0, 0, 731 + 184 731 732 }; 732 733 733 - static const yytype_uint8 yycheck[] = 734 + static const yytype_int16 yycheck[] = 734 735 { 735 - 1, 66, 67, 10, 92, 93, 3, 25, 26, 14, 736 - 3, 29, 13, 27, 15, 103, 34, 18, 75, 33, 737 - 0, 78, 30, 80, 89, 90, 31, 32, 28, 25, 738 - 26, 31, 32, 30, 0, 1, 101, 30, 4, 5, 739 - 6, 7, 8, 9, 10, 11, 12, 30, 14, 15, 740 - 16, 17, 18, 19, 20, 21, 22, 23, 30, 25, 741 - 25, 68, 25, 151, 30, 30, 30, 0, 1, 25, 742 - 26, 4, 5, 6, 7, 8, 9, 10, 11, 12, 743 - 145, 14, 15, 16, 17, 18, 19, 20, 21, 22, 744 - 23, 75, 25, 25, 78, 160, 80, 30, 99, 30, 745 - 0, 1, 31, 32, 4, 5, 6, 7, 8, 9, 746 - 10, 11, 25, 114, 14, 15, 16, 17, 18, 19, 747 - 20, 21, 22, 76, 77, 25, 79, 0, 1, 1, 748 - 30, 4, 5, 6, 7, 8, 9, 10, 11, 1, 749 - 30, 14, 15, 16, 17, 18, 19, 20, 21, 22, 750 - 76, 77, 25, 79, 0, 1, 30, 30, 4, 5, 751 - 6, 7, 8, 9, 10, 11, 30, 30, 14, 15, 752 - 16, 17, 18, 19, 20, 21, 22, 30, 179, 25, 753 - 30, 1, 30, 30, 30, 5, 6, 30, 8, 9, 754 - 10, 11, 12, 30, 14, 15, 16, 17, 18, 19, 755 - 20, 30, 31, 32, 30, 25, 24, 77, 1, 79, 756 - 30, 4, 5, 6, 7, 8, 9, 10, 11, 25, 757 - 1, 14, 15, 16, 4, 5, 6, 7, 8, 9, 758 - 10, 11, 25, 30, 14, 15, 13, 30, 5, 6, 759 - 25, 8, 9, 10, 11, 32, 14, 14, 15, 33, 760 - 30, 148, 149, 150, 30, 31, 32, 30, 77, 156, 761 - 79, 158, 7, 30, 30, 30, 30, 30, 30, 166, 762 - 30, 30, 30, 6, 75, 36, 47, 115 736 + 1, 67, 68, 10, 93, 94, 76, 3, 76, 14, 737 + 28, 81, 13, 81, 15, 104, 34, 18, 3, 32, 738 + 33, 23, 26, 27, 90, 91, 30, 32, 33, 31, 739 + 78, 35, 80, 0, 1, 31, 102, 4, 5, 6, 740 + 7, 8, 9, 10, 11, 12, 31, 14, 15, 16, 741 + 17, 18, 19, 20, 21, 22, 23, 24, 78, 26, 742 + 80, 26, 69, 133, 31, 133, 31, 156, 26, 27, 743 + 29, 0, 1, 32, 33, 4, 5, 6, 7, 8, 744 + 9, 10, 11, 12, 150, 14, 15, 16, 17, 18, 745 + 19, 20, 21, 22, 23, 24, 0, 26, 164, 100, 746 + 77, 78, 31, 80, 77, 78, 31, 80, 31, 32, 747 + 33, 0, 1, 31, 115, 4, 5, 6, 7, 8, 748 + 9, 10, 11, 26, 27, 14, 15, 16, 17, 18, 749 + 19, 20, 21, 22, 23, 31, 26, 26, 31, 0, 750 + 1, 26, 31, 4, 5, 6, 7, 8, 9, 10, 751 + 11, 26, 31, 14, 15, 16, 17, 18, 19, 20, 752 + 21, 22, 23, 1, 1, 26, 31, 32, 33, 31, 753 + 31, 0, 1, 31, 31, 4, 5, 6, 7, 8, 754 + 9, 10, 11, 31, 185, 14, 15, 16, 17, 18, 755 + 19, 20, 21, 22, 23, 31, 1, 26, 31, 31, 756 + 5, 6, 31, 8, 9, 10, 11, 12, 31, 14, 757 + 15, 16, 17, 18, 19, 20, 31, 31, 31, 25, 758 + 1, 26, 26, 13, 1, 26, 31, 4, 5, 6, 759 + 7, 8, 9, 10, 11, 31, 14, 14, 15, 16, 760 + 4, 5, 6, 7, 8, 9, 10, 11, 33, 26, 761 + 14, 15, 5, 6, 31, 8, 9, 10, 11, 31, 762 + 31, 14, 15, 31, 31, 31, 31, 31, 31, 151, 763 + 31, 153, 154, 155, 34, 31, 7, 6, 31, 161, 764 + 37, 163, 76, -1, 79, 116, -1, -1, -1, -1, 765 + 172 763 766 }; 764 767 765 768 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing 766 769 symbol of state STATE-NUM. */ 767 770 static const yytype_uint8 yystos[] = 768 771 { 769 - 0, 3, 30, 36, 37, 38, 62, 78, 25, 26, 770 - 76, 0, 1, 4, 5, 6, 7, 8, 9, 10, 772 + 0, 3, 31, 37, 38, 39, 63, 81, 26, 27, 773 + 79, 0, 1, 4, 5, 6, 7, 8, 9, 10, 771 774 11, 14, 15, 16, 17, 18, 19, 20, 21, 22, 772 - 25, 30, 39, 40, 42, 43, 44, 45, 51, 52, 773 - 54, 58, 60, 63, 64, 66, 68, 69, 70, 77, 774 - 38, 30, 37, 78, 30, 76, 30, 76, 25, 82, 775 - 30, 76, 25, 25, 25, 26, 29, 34, 80, 81, 776 - 30, 1, 1, 46, 46, 55, 57, 61, 73, 67, 777 - 73, 30, 30, 30, 30, 30, 30, 80, 80, 31, 778 - 32, 78, 27, 33, 30, 30, 1, 12, 16, 18, 779 - 19, 20, 21, 22, 23, 25, 30, 41, 47, 48, 780 - 71, 72, 74, 17, 18, 19, 20, 30, 41, 56, 781 - 72, 74, 40, 53, 77, 40, 54, 59, 66, 77, 782 - 30, 41, 74, 40, 54, 65, 66, 77, 28, 80, 783 - 80, 81, 81, 30, 30, 24, 76, 75, 76, 80, 784 - 25, 81, 49, 1, 13, 30, 76, 75, 25, 80, 785 - 14, 79, 30, 79, 79, 79, 81, 25, 30, 30, 786 - 79, 30, 79, 30, 80, 30, 30, 30, 79, 33, 787 - 50, 30, 30, 30, 76 775 + 23, 26, 31, 40, 41, 43, 44, 45, 46, 52, 776 + 53, 55, 59, 61, 64, 65, 67, 69, 70, 71, 777 + 80, 39, 31, 38, 81, 31, 79, 31, 79, 26, 778 + 85, 31, 79, 26, 26, 26, 27, 30, 35, 83, 779 + 84, 31, 1, 1, 47, 47, 56, 58, 62, 76, 780 + 68, 74, 31, 31, 31, 31, 31, 31, 83, 83, 781 + 32, 33, 81, 28, 34, 31, 31, 1, 12, 16, 782 + 18, 19, 20, 21, 22, 24, 26, 31, 42, 48, 783 + 49, 72, 73, 75, 17, 18, 19, 20, 31, 42, 784 + 57, 73, 75, 41, 54, 80, 41, 55, 60, 67, 785 + 80, 23, 31, 74, 77, 41, 55, 66, 67, 80, 786 + 31, 42, 75, 29, 83, 83, 84, 84, 31, 31, 787 + 25, 79, 78, 79, 83, 26, 84, 50, 1, 13, 788 + 31, 79, 78, 26, 14, 82, 83, 82, 31, 82, 789 + 82, 82, 84, 26, 31, 31, 82, 31, 82, 83, 790 + 31, 31, 31, 31, 82, 34, 51, 31, 31, 31, 791 + 79 788 792 }; 789 793 790 794 #define yyerrok (yyerrstatus = 0) ··· 1302 1292 1303 1293 switch (yytype) 1304 1294 { 1305 - case 52: /* "choice_entry" */ 1295 + case 53: /* "choice_entry" */ 1306 1296 1307 1297 { 1308 1298 fprintf(stderr, "%s:%d: missing end statement for this entry\n", ··· 1312 1302 }; 1313 1303 1314 1304 break; 1315 - case 58: /* "if_entry" */ 1305 + case 59: /* "if_entry" */ 1316 1306 1317 1307 { 1318 1308 fprintf(stderr, "%s:%d: missing end statement for this entry\n", ··· 1322 1312 }; 1323 1313 1324 1314 break; 1325 - case 64: /* "menu_entry" */ 1315 + case 65: /* "menu_entry" */ 1326 1316 1327 1317 { 1328 1318 fprintf(stderr, "%s:%d: missing end statement for this entry\n", ··· 1654 1644 { zconf_error("invalid statement"); ;} 1655 1645 break; 1656 1646 1657 - case 27: 1647 + case 28: 1658 1648 1659 1649 { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;} 1660 1650 break; 1661 1651 1662 - case 28: 1652 + case 29: 1663 1653 1664 1654 { zconf_error("invalid option"); ;} 1665 1655 break; 1666 1656 1667 - case 29: 1657 + case 30: 1668 1658 1669 1659 { 1670 1660 struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); ··· 1674 1664 ;} 1675 1665 break; 1676 1666 1677 - case 30: 1667 + case 31: 1678 1668 1679 1669 { 1680 1670 menu_end_entry(); ··· 1682 1672 ;} 1683 1673 break; 1684 1674 1685 - case 31: 1675 + case 32: 1686 1676 1687 1677 { 1688 1678 struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0); ··· 1692 1682 ;} 1693 1683 break; 1694 1684 1695 - case 32: 1685 + case 33: 1696 1686 1697 1687 { 1698 1688 if (current_entry->prompt) ··· 1704 1694 ;} 1705 1695 break; 1706 1696 1707 - case 40: 1697 + case 41: 1708 1698 1709 1699 { 1710 1700 menu_set_type((yyvsp[(1) - (3)].id)->stype); ··· 1714 1704 ;} 1715 1705 break; 1716 1706 1717 - case 41: 1707 + case 42: 1718 1708 1719 1709 { 1720 1710 menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); ··· 1722 1712 ;} 1723 1713 break; 1724 1714 1725 - case 42: 1715 + case 43: 1726 1716 1727 1717 { 1728 1718 menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr)); ··· 1734 1724 ;} 1735 1725 break; 1736 1726 1737 - case 43: 1727 + case 44: 1738 1728 1739 1729 { 1740 1730 menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr)); ··· 1742 1732 ;} 1743 1733 break; 1744 1734 1745 - case 44: 1735 + case 45: 1746 1736 1747 1737 { 1748 1738 menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr)); ··· 1750 1740 ;} 1751 1741 break; 1752 1742 1753 - case 47: 1743 + case 48: 1754 1744 1755 1745 { 1756 1746 struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string))); ··· 1762 1752 ;} 1763 1753 break; 1764 1754 1765 - case 48: 1755 + case 49: 1766 1756 1767 1757 { (yyval.string) = NULL; ;} 1768 1758 break; 1769 1759 1770 - case 49: 1760 + case 50: 1771 1761 1772 1762 { (yyval.string) = (yyvsp[(2) - (2)].string); ;} 1773 1763 break; 1774 1764 1775 - case 50: 1765 + case 51: 1776 1766 1777 1767 { 1778 1768 struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE); ··· 1783 1773 ;} 1784 1774 break; 1785 1775 1786 - case 51: 1776 + case 52: 1787 1777 1788 1778 { 1789 1779 (yyval.menu) = menu_add_menu(); 1790 1780 ;} 1791 1781 break; 1792 1782 1793 - case 52: 1783 + case 53: 1794 1784 1795 1785 { 1796 1786 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) { ··· 1800 1790 ;} 1801 1791 break; 1802 1792 1803 - case 60: 1793 + case 61: 1804 1794 1805 1795 { 1806 1796 menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr)); ··· 1808 1798 ;} 1809 1799 break; 1810 1800 1811 - case 61: 1801 + case 62: 1812 1802 1813 1803 { 1814 1804 if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) { ··· 1821 1811 ;} 1822 1812 break; 1823 1813 1824 - case 62: 1814 + case 63: 1825 1815 1826 1816 { 1827 1817 current_entry->sym->flags |= SYMBOL_OPTIONAL; ··· 1829 1819 ;} 1830 1820 break; 1831 1821 1832 - case 63: 1822 + case 64: 1833 1823 1834 1824 { 1835 1825 if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) { ··· 1841 1831 ;} 1842 1832 break; 1843 1833 1844 - case 66: 1834 + case 67: 1845 1835 1846 1836 { 1847 1837 printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno()); ··· 1851 1841 ;} 1852 1842 break; 1853 1843 1854 - case 67: 1844 + case 68: 1855 1845 1856 1846 { 1857 1847 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) { ··· 1861 1851 ;} 1862 1852 break; 1863 1853 1864 - case 73: 1854 + case 74: 1865 1855 1866 1856 { 1867 1857 menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL); 1868 1858 ;} 1869 1859 break; 1870 1860 1871 - case 74: 1861 + case 75: 1872 1862 1873 1863 { 1874 1864 menu_add_entry(NULL); ··· 1877 1867 ;} 1878 1868 break; 1879 1869 1880 - case 75: 1870 + case 76: 1881 1871 1882 1872 { 1883 1873 (yyval.menu) = menu_add_menu(); 1884 1874 ;} 1885 1875 break; 1886 1876 1887 - case 76: 1877 + case 77: 1888 1878 1889 1879 { 1890 1880 if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) { ··· 1894 1884 ;} 1895 1885 break; 1896 1886 1897 - case 82: 1887 + case 83: 1898 1888 1899 1889 { 1900 1890 printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string)); ··· 1902 1892 ;} 1903 1893 break; 1904 1894 1905 - case 83: 1895 + case 84: 1906 1896 1907 1897 { 1908 1898 menu_add_entry(NULL); ··· 1911 1901 ;} 1912 1902 break; 1913 1903 1914 - case 84: 1904 + case 85: 1915 1905 1916 1906 { 1917 1907 menu_end_entry(); 1918 1908 ;} 1919 1909 break; 1920 1910 1921 - case 85: 1911 + case 86: 1922 1912 1923 1913 { 1924 1914 printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno()); ··· 1926 1916 ;} 1927 1917 break; 1928 1918 1929 - case 86: 1919 + case 87: 1930 1920 1931 1921 { 1932 1922 current_entry->help = (yyvsp[(2) - (2)].string); 1933 1923 ;} 1934 1924 break; 1935 1925 1936 - case 91: 1926 + case 92: 1937 1927 1938 1928 { 1939 1929 menu_add_dep((yyvsp[(3) - (4)].expr)); ··· 1941 1931 ;} 1942 1932 break; 1943 1933 1944 - case 93: 1934 + case 96: 1935 + 1936 + { 1937 + menu_add_visibility((yyvsp[(2) - (2)].expr)); 1938 + ;} 1939 + break; 1940 + 1941 + case 98: 1945 1942 1946 1943 { 1947 1944 menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr)); 1948 1945 ;} 1949 1946 break; 1950 1947 1951 - case 96: 1952 - 1953 - { (yyval.id) = (yyvsp[(1) - (2)].id); ;} 1954 - break; 1955 - 1956 - case 97: 1957 - 1958 - { (yyval.id) = (yyvsp[(1) - (2)].id); ;} 1959 - break; 1960 - 1961 - case 98: 1962 - 1963 - { (yyval.id) = (yyvsp[(1) - (2)].id); ;} 1964 - break; 1965 - 1966 1948 case 101: 1967 1949 1968 - { (yyval.expr) = NULL; ;} 1950 + { (yyval.id) = (yyvsp[(1) - (2)].id); ;} 1969 1951 break; 1970 1952 1971 1953 case 102: 1972 1954 1973 - { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;} 1955 + { (yyval.id) = (yyvsp[(1) - (2)].id); ;} 1974 1956 break; 1975 1957 1976 1958 case 103: 1977 1959 1978 - { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;} 1979 - break; 1980 - 1981 - case 104: 1982 - 1983 - { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;} 1984 - break; 1985 - 1986 - case 105: 1987 - 1988 - { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;} 1960 + { (yyval.id) = (yyvsp[(1) - (2)].id); ;} 1989 1961 break; 1990 1962 1991 1963 case 106: 1992 1964 1993 - { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;} 1965 + { (yyval.expr) = NULL; ;} 1994 1966 break; 1995 1967 1996 1968 case 107: 1997 1969 1998 - { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;} 1970 + { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;} 1999 1971 break; 2000 1972 2001 1973 case 108: 2002 1974 2003 - { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;} 1975 + { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;} 2004 1976 break; 2005 1977 2006 1978 case 109: 2007 1979 2008 - { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;} 1980 + { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;} 2009 1981 break; 2010 1982 2011 1983 case 110: 2012 1984 2013 - { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;} 1985 + { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;} 2014 1986 break; 2015 1987 2016 1988 case 111: 2017 1989 2018 - { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;} 1990 + { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;} 2019 1991 break; 2020 1992 2021 1993 case 112: 1994 + 1995 + { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;} 1996 + break; 1997 + 1998 + case 113: 1999 + 2000 + { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;} 2001 + break; 2002 + 2003 + case 114: 2004 + 2005 + { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;} 2006 + break; 2007 + 2008 + case 115: 2009 + 2010 + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;} 2011 + break; 2012 + 2013 + case 116: 2014 + 2015 + { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;} 2016 + break; 2017 + 2018 + case 117: 2022 2019 2023 2020 { (yyval.string) = NULL; ;} 2024 2021 break; ··· 2295 2278 case T_IF: return "if"; 2296 2279 case T_ENDIF: return "endif"; 2297 2280 case T_DEPENDS: return "depends"; 2281 + case T_VISIBLE: return "visible"; 2298 2282 } 2299 2283 return "<token>"; 2300 2284 }
+18 -3
scripts/kconfig/zconf.y
··· 36 36 #define YYERROR_VERBOSE 37 37 #endif 38 38 %} 39 - %expect 28 39 + %expect 30 40 40 41 41 %union 42 42 { ··· 68 68 %token <id>T_DEFAULT 69 69 %token <id>T_SELECT 70 70 %token <id>T_RANGE 71 + %token <id>T_VISIBLE 71 72 %token <id>T_OPTION 72 73 %token <id>T_ON 73 74 %token <string> T_WORD ··· 124 123 ; 125 124 126 125 option_name: 127 - T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT 126 + T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT | T_VISIBLE 128 127 ; 129 128 130 129 common_stmt: ··· 360 359 printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno()); 361 360 }; 362 361 363 - menu_entry: menu depends_list 362 + menu_entry: menu visibility_list depends_list 364 363 { 365 364 $$ = menu_add_menu(); 366 365 }; ··· 429 428 { 430 429 menu_add_dep($3); 431 430 printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno()); 431 + }; 432 + 433 + /* visibility option */ 434 + 435 + visibility_list: 436 + /* empty */ 437 + | visibility_list visible 438 + | visibility_list T_EOL 439 + ; 440 + 441 + visible: T_VISIBLE if_expr 442 + { 443 + menu_add_visibility($2); 432 444 }; 433 445 434 446 /* prompt statement */ ··· 540 526 case T_IF: return "if"; 541 527 case T_ENDIF: return "endif"; 542 528 case T_DEPENDS: return "depends"; 529 + case T_VISIBLE: return "visible"; 543 530 } 544 531 return "<token>"; 545 532 }
+11 -8
sound/core/oss/pcm_oss.c
··· 1510 1510 static int snd_pcm_oss_reset(struct snd_pcm_oss_file *pcm_oss_file) 1511 1511 { 1512 1512 struct snd_pcm_substream *substream; 1513 + struct snd_pcm_runtime *runtime; 1514 + int i; 1513 1515 1514 - substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_PLAYBACK]; 1515 - if (substream != NULL) { 1516 + for (i = 0; i < 2; i++) { 1517 + substream = pcm_oss_file->streams[i]; 1518 + if (!substream) 1519 + continue; 1520 + runtime = substream->runtime; 1516 1521 snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL); 1517 - substream->runtime->oss.prepare = 1; 1518 - } 1519 - substream = pcm_oss_file->streams[SNDRV_PCM_STREAM_CAPTURE]; 1520 - if (substream != NULL) { 1521 - snd_pcm_kernel_ioctl(substream, SNDRV_PCM_IOCTL_DROP, NULL); 1522 - substream->runtime->oss.prepare = 1; 1522 + runtime->oss.prepare = 1; 1523 + runtime->oss.buffer_used = 0; 1524 + runtime->oss.prev_hw_ptr_period = 0; 1525 + runtime->oss.period_ptr = 0; 1523 1526 } 1524 1527 return 0; 1525 1528 }
-1
sound/pci/hda/patch_realtek.c
··· 9865 9865 SND_PCI_QUIRK(0x17aa, 0x3bfc, "Lenovo NB0763", ALC883_LENOVO_NB0763), 9866 9866 SND_PCI_QUIRK(0x17aa, 0x3bfd, "Lenovo NB0763", ALC883_LENOVO_NB0763), 9867 9867 SND_PCI_QUIRK(0x17aa, 0x101d, "Lenovo Sky", ALC888_LENOVO_SKY), 9868 - SND_PCI_QUIRK(0x17c0, 0x4071, "MEDION MD2", ALC883_MEDION_MD2), 9869 9868 SND_PCI_QUIRK(0x17c0, 0x4085, "MEDION MD96630", ALC888_LENOVO_MS7195_DIG), 9870 9869 SND_PCI_QUIRK(0x17f2, 0x5000, "Albatron KI690-AM2", ALC883_6ST_DIG), 9871 9870 SND_PCI_QUIRK(0x1991, 0x5625, "Haier W66", ALC883_HAIER_W66),
+2
sound/pci/hda/patch_sigmatel.c
··· 1627 1627 static struct snd_pci_quirk stac92hd73xx_codec_id_cfg_tbl[] = { 1628 1628 SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x02a1, 1629 1629 "Alienware M17x", STAC_ALIENWARE_M17X), 1630 + SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x043a, 1631 + "Alienware M17x", STAC_ALIENWARE_M17X), 1630 1632 {} /* terminator */ 1631 1633 }; 1632 1634
+1 -1
sound/soc/codecs/wm8731.c
··· 526 526 snd_soc_update_bits(codec, WM8731_RINVOL, 0x100, 0); 527 527 528 528 /* Disable bypass path by default */ 529 - snd_soc_update_bits(codec, WM8731_APANA, 0x4, 0); 529 + snd_soc_update_bits(codec, WM8731_APANA, 0x8, 0); 530 530 531 531 snd_soc_add_controls(codec, wm8731_snd_controls, 532 532 ARRAY_SIZE(wm8731_snd_controls));
+1
sound/soc/fsl/mpc8610_hpcd.c
··· 498 498 dev_err(&pdev->dev, "platform device add failed\n"); 499 499 goto error; 500 500 } 501 + dev_set_drvdata(&pdev->dev, sound_device); 501 502 502 503 of_node_put(codec_np); 503 504
+1
sound/soc/fsl/p1022_ds.c
··· 498 498 dev_err(&pdev->dev, "platform device add failed\n"); 499 499 goto error; 500 500 } 501 + dev_set_drvdata(&pdev->dev, sound_device); 501 502 502 503 of_node_put(codec_np); 503 504
+7 -8
sound/soc/nuc900/nuc900-ac97.c
··· 49 49 mutex_lock(&ac97_mutex); 50 50 51 51 val = nuc900_checkready(); 52 - if (!!val) { 52 + if (val) { 53 53 dev_err(nuc900_audio->dev, "AC97 codec is not ready\n"); 54 54 goto out; 55 55 } ··· 102 102 mutex_lock(&ac97_mutex); 103 103 104 104 tmp = nuc900_checkready(); 105 - if (!!tmp) 105 + if (tmp) 106 106 dev_err(nuc900_audio->dev, "AC97 codec is not ready\n"); 107 107 108 108 /* clear the R_WB bit and write register index */ ··· 149 149 udelay(100); 150 150 151 151 val = nuc900_checkready(); 152 - if (!!val) 152 + if (val) 153 153 dev_err(nuc900_audio->dev, "AC97 codec is not ready\n"); 154 154 155 155 mutex_unlock(&ac97_mutex); ··· 263 263 return ret; 264 264 } 265 265 266 - static int nuc900_ac97_probe(struct platform_device *pdev, 267 - struct snd_soc_dai *dai) 266 + static int nuc900_ac97_probe(struct snd_soc_dai *dai) 268 267 { 269 268 struct nuc900_audio *nuc900_audio = nuc900_ac97_data; 270 269 unsigned long val; ··· 283 284 return 0; 284 285 } 285 286 286 - static void nuc900_ac97_remove(struct platform_device *pdev, 287 - struct snd_soc_dai *dai) 287 + static int nuc900_ac97_remove(struct snd_soc_dai *dai) 288 288 { 289 289 struct nuc900_audio *nuc900_audio = nuc900_ac97_data; 290 290 291 291 clk_disable(nuc900_audio->clk); 292 + return 0; 292 293 } 293 294 294 295 static struct snd_soc_dai_ops nuc900_ac97_dai_ops = { ··· 312 313 .channels_max = 2, 313 314 }, 314 315 .ops = &nuc900_ac97_dai_ops, 315 - } 316 + }; 316 317 317 318 static int __devinit nuc900_ac97_drvprobe(struct platform_device *pdev) 318 319 {
+2
sound/soc/nuc900/nuc900-audio.h
··· 110 110 111 111 }; 112 112 113 + extern struct nuc900_audio *nuc900_ac97_data; 114 + 113 115 #endif /*end _NUC900_AUDIO_H */
+6 -5
sound/soc/nuc900/nuc900-pcm.c
··· 50 50 unsigned long flags; 51 51 int ret = 0; 52 52 53 - spin_lock_irqsave(&nuc900_audio->lock, flags); 54 - 55 53 ret = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params)); 56 54 if (ret < 0) 57 55 return ret; 56 + 57 + spin_lock_irqsave(&nuc900_audio->lock, flags); 58 58 59 59 nuc900_audio->substream = substream; 60 60 nuc900_audio->dma_addr[substream->stream] = runtime->dma_addr; ··· 169 169 struct snd_pcm_runtime *runtime = substream->runtime; 170 170 struct nuc900_audio *nuc900_audio = runtime->private_data; 171 171 unsigned long flags, val; 172 + int ret = 0; 172 173 173 174 spin_lock_irqsave(&nuc900_audio->lock, flags); 174 175 ··· 198 197 AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val); 199 198 break; 200 199 default: 201 - return -EINVAL; 200 + ret = -EINVAL; 202 201 } 203 202 spin_unlock_irqrestore(&nuc900_audio->lock, flags); 204 - return 0; 203 + return ret; 205 204 } 206 205 207 206 static int nuc900_dma_trigger(struct snd_pcm_substream *substream, int cmd) ··· 333 332 .ops = &nuc900_dma_ops, 334 333 .pcm_new = nuc900_dma_new, 335 334 .pcm_free = nuc900_dma_free_dma_buffers, 336 - } 335 + }; 337 336 338 337 static int __devinit nuc900_soc_platform_probe(struct platform_device *pdev) 339 338 {
+1 -1
sound/soc/omap/Kconfig
··· 12 12 config SND_OMAP_SOC_N810 13 13 tristate "SoC Audio support for Nokia N810" 14 14 depends on SND_OMAP_SOC && MACH_NOKIA_N810 && I2C 15 + depends on OMAP_MUX 15 16 select SND_OMAP_SOC_MCBSP 16 - select OMAP_MUX 17 17 select SND_SOC_TLV320AIC3X 18 18 help 19 19 Say Y if you want to add support for SoC audio on Nokia N810.
+1 -1
sound/soc/s6000/s6000-i2s.c
··· 434 434 .rate_max = 1562500, 435 435 }, 436 436 .ops = &s6000_i2s_dai_ops, 437 - } 437 + }; 438 438 439 439 static int __devinit s6000_i2s_probe(struct platform_device *pdev) 440 440 {
+1 -1
sound/soc/s6000/s6000-pcm.c
··· 473 473 } 474 474 475 475 res = request_irq(params->irq, s6000_pcm_irq, IRQF_SHARED, 476 - s6000_soc_platform.name, pcm); 476 + "s6000-audio", pcm); 477 477 if (res) { 478 478 printk(KERN_ERR "s6000-pcm couldn't get IRQ\n"); 479 479 return res;
+1 -1
sound/soc/s6000/s6105-ipcam.c
··· 167 167 168 168 snd_soc_dapm_sync(codec); 169 169 170 - snd_ctl_add(codec->snd_card, snd_ctl_new1(&audio_out_mux, codec)); 170 + snd_ctl_add(codec->card->snd_card, snd_ctl_new1(&audio_out_mux, codec)); 171 171 172 172 return 0; 173 173 }
+3 -2
usr/initramfs_data.S
··· 22 22 */ 23 23 24 24 #include <linux/stringify.h> 25 + #include <asm-generic/vmlinux.lds.h> 25 26 26 27 .section .init.ramfs,"a" 27 28 __irf_start: 28 29 .incbin __stringify(INITRAMFS_IMAGE) 29 30 __irf_end: 30 31 .section .init.ramfs.info,"a" 31 - .globl __initramfs_size 32 - __initramfs_size: 32 + .globl VMLINUX_SYMBOL(__initramfs_size) 33 + VMLINUX_SYMBOL(__initramfs_size): 33 34 #ifdef CONFIG_64BIT 34 35 .quad __irf_end - __irf_start 35 36 #else