···11+What: /sys/bus/rbd/22+Date: November 201033+Contact: Yehuda Sadeh <yehuda@hq.newdream.net>,44+ Sage Weil <sage@newdream.net>55+Description:66+77+Being used for adding and removing rbd block devices.88+99+Usage: <mon ip addr> <options> <pool name> <rbd image name> [snap name]1010+1111+ $ echo "192.168.0.1 name=admin rbd foo" > /sys/bus/rbd/add1212+1313+The snapshot name can be "-" or omitted to map the image read/write. A <dev-id>1414+will be assigned for any registered block device. If snapshot is used, it will1515+be mapped read-only.1616+1717+Removal of a device:1818+1919+ $ echo <dev-id> > /sys/bus/rbd/remove2020+2121+Entries under /sys/bus/rbd/devices/<dev-id>/2222+--------------------------------------------2323+2424+client_id2525+2626+ The ceph unique client id that was assigned for this specific session.2727+2828+major2929+3030+ The block device major number.3131+3232+name3333+3434+ The name of the rbd image.3535+3636+pool3737+3838+ The pool where this rbd image resides. The pool-name pair is unique3939+ per rados system.4040+4141+size4242+4343+ The size (in bytes) of the mapped block device.4444+4545+refresh4646+4747+ Writing to this file will reread the image header data and set4848+ all relevant datastructures accordingly.4949+5050+current_snap5151+5252+ The current snapshot for which the device is mapped.5353+5454+create_snap5555+5656+ Create a snapshot:5757+5858+ $ echo <snap-name> > /sys/bus/rbd/devices/<dev-id>/snap_create5959+6060+rollback_snap6161+6262+ Rolls back data to the specified snapshot. This goes over the entire6363+ list of rados blocks and sends a rollback command to each.6464+6565+ $ echo <snap-name> > /sys/bus/rbd/devices/<dev-id>/snap_rollback6666+6767+snap_*6868+6969+ A directory per each snapshot7070+7171+7272+Entries under /sys/bus/rbd/devices/<dev-id>/snap_<snap-name>7373+-------------------------------------------------------------7474+7575+id7676+7777+ The rados internal snapshot id assigned for this snapshot7878+7979+size8080+8181+ The size of the image when this snapshot was taken.8282+8383+
-129
Documentation/driver-model/interface.txt
···11-22-Device Interfaces33-44-Introduction55-~~~~~~~~~~~~66-77-Device interfaces are the logical interfaces of device classes that correlate88-directly to userspace interfaces, like device nodes. 99-1010-Each device class may have multiple interfaces through which you can 1111-access the same device. An input device may support the mouse interface, 1212-the 'evdev' interface, and the touchscreen interface. A SCSI disk would 1313-support the disk interface, the SCSI generic interface, and possibly a raw 1414-device interface. 1515-1616-Device interfaces are registered with the class they belong to. As devices1717-are added to the class, they are added to each interface registered with1818-the class. The interface is responsible for determining whether the device1919-supports the interface or not. 2020-2121-2222-Programming Interface2323-~~~~~~~~~~~~~~~~~~~~~2424-2525-struct device_interface {2626- char * name;2727- rwlock_t lock;2828- u32 devnum;2929- struct device_class * devclass;3030-3131- struct list_head node;3232- struct driver_dir_entry dir;3333-3434- int (*add_device)(struct device *);3535- int (*add_device)(struct intf_data *);3636-};3737-3838-int interface_register(struct device_interface *);3939-void interface_unregister(struct device_interface *);4040-4141-4242-An interface must specify the device class it belongs to. It is added4343-to that class's list of interfaces on registration.4444-4545-4646-Interfaces can be added to a device class at any time. Whenever it is4747-added, each device in the class is passed to the interface's4848-add_device callback. When an interface is removed, each device is4949-removed from the interface.5050-5151-5252-Devices5353-~~~~~~~5454-Once a device is added to a device class, it is added to each5555-interface that is registered with the device class. The class5656-is expected to place a class-specific data structure in 5757-struct device::class_data. The interface can use that (along with5858-other fields of struct device) to determine whether or not the driver5959-and/or device support that particular interface.6060-6161-6262-Data6363-~~~~6464-6565-struct intf_data {6666- struct list_head node;6767- struct device_interface * intf;6868- struct device * dev;6969- u32 intf_num;7070-};7171-7272-int interface_add_data(struct interface_data *);7373-7474-The interface is responsible for allocating and initializing a struct 7575-intf_data and calling interface_add_data() to add it to the device's list7676-of interfaces it belongs to. This list will be iterated over when the device7777-is removed from the class (instead of all possible interfaces for a class).7878-This structure should probably be embedded in whatever per-device data 7979-structure the interface is allocating anyway.8080-8181-Devices are enumerated within the interface. This happens in interface_add_data()8282-and the enumerated value is stored in the struct intf_data for that device. 8383-8484-sysfs8585-~~~~~8686-Each interface is given a directory in the directory of the device8787-class it belongs to:8888-8989-Interfaces get a directory in the class's directory as well:9090-9191- class/9292- `-- input9393- |-- devices9494- |-- drivers9595- |-- mouse9696- `-- evdev9797-9898-When a device is added to the interface, a symlink is created that points 9999-to the device's directory in the physical hierarchy:100100-101101- class/102102- `-- input103103- |-- devices104104- | `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/105105- |-- drivers106106- | `-- usb:usb_mouse -> ../../../bus/drivers/usb_mouse/107107- |-- mouse108108- | `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/109109- `-- evdev110110- `-- 1 -> ../../../root/pci0/00:1f.0/usb_bus/00:1f.2-1:0/111111-112112-113113-Future Plans114114-~~~~~~~~~~~~115115-A device interface is correlated directly with a userspace interface116116-for a device, specifically a device node. For instance, a SCSI disk117117-exposes at least two interfaces to userspace: the standard SCSI disk118118-interface and the SCSI generic interface. It might also export a raw119119-device interface. 120120-121121-Many interfaces have a major number associated with them and each122122-device gets a minor number. Or, multiple interfaces might share one123123-major number, and each will receive a range of minor numbers (like in124124-the case of input devices).125125-126126-These major and minor numbers could be stored in the interface127127-structure. Major and minor allocations could happen when the interface128128-is registered with the class, or via a helper function. 129129-
+4-5
Documentation/filesystems/vfs.txt
···660660 releasepage: releasepage is called on PagePrivate pages to indicate661661 that the page should be freed if possible. ->releasepage662662 should remove any private data from the page and clear the663663- PagePrivate flag. It may also remove the page from the664664- address_space. If this fails for some reason, it may indicate665665- failure with a 0 return value.666666- This is used in two distinct though related cases. The first667667- is when the VM finds a clean page with no active users and663663+ PagePrivate flag. If releasepage() fails for some reason, it must664664+ indicate failure with a 0 return value.665665+ releasepage() is used in two distinct though related cases. The666666+ first is when the VM finds a clean page with no active users and668667 wants to make it a free page. If ->releasepage succeeds, the669668 page will be removed from the address_space and become free.670669
···99 select GENERIC_ATOMIC64 if (!CPU_32v6K || !AEABI)1010 select HAVE_OPROFILE if (HAVE_PERF_EVENTS)1111 select HAVE_ARCH_KGDB1212- select HAVE_KPROBES if (!XIP_KERNEL)1212+ select HAVE_KPROBES if (!XIP_KERNEL && !THUMB2_KERNEL)1313 select HAVE_KRETPROBES if (HAVE_KPROBES)1414 select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)1515 select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
-5
arch/arm/boot/Makefile
···7070$(obj)/uImage: LOADADDR=$(ZRELADDR)7171endif72727373-ifeq ($(CONFIG_THUMB2_KERNEL),y)7474-# Set bit 0 to 1 so that "mov pc, rx" switches to Thumb-2 mode7575-$(obj)/uImage: STARTADDR=$(shell echo $(LOADADDR) | sed -e "s/.$$/1/")7676-else7773$(obj)/uImage: STARTADDR=$(LOADADDR)7878-endif79748075$(obj)/uImage: $(obj)/zImage FORCE8176 $(call if_changed,uimage)
···146146 unsigned int shift = (irq % 4) * 8;147147 unsigned int cpu = cpumask_first(mask_val);148148 u32 val;149149+ struct irq_desc *desc;149150150151 spin_lock(&irq_controller_lock);151151- irq_desc[irq].node = cpu;152152+ desc = irq_to_desc(irq);153153+ if (desc == NULL) {154154+ spin_unlock(&irq_controller_lock);155155+ return -EINVAL;156156+ }157157+ desc->node = cpu;152158 val = readl(reg) & ~(0xff << shift);153159 val |= 1 << (cpu + shift);154160 writel(val, reg);···216210void __init gic_dist_init(unsigned int gic_nr, void __iomem *base,217211 unsigned int irq_start)218212{219219- unsigned int max_irq, i;213213+ unsigned int gic_irqs, irq_limit, i;220214 u32 cpumask = 1 << smp_processor_id();221215222216 if (gic_nr >= MAX_GIC_NR)···232226233227 /*234228 * Find out how many interrupts are supported.235235- */236236- max_irq = readl(base + GIC_DIST_CTR) & 0x1f;237237- max_irq = (max_irq + 1) * 32;238238-239239- /*240229 * The GIC only supports up to 1020 interrupt sources.241241- * Limit this to either the architected maximum, or the242242- * platform maximum.243230 */244244- if (max_irq > max(1020, NR_IRQS))245245- max_irq = max(1020, NR_IRQS);231231+ gic_irqs = readl(base + GIC_DIST_CTR) & 0x1f;232232+ gic_irqs = (gic_irqs + 1) * 32;233233+ if (gic_irqs > 1020)234234+ gic_irqs = 1020;246235247236 /*248237 * Set all global interrupts to be level triggered, active low.249238 */250250- for (i = 32; i < max_irq; i += 16)239239+ for (i = 32; i < gic_irqs; i += 16)251240 writel(0, base + GIC_DIST_CONFIG + i * 4 / 16);252241253242 /*254243 * Set all global interrupts to this CPU only.255244 */256256- for (i = 32; i < max_irq; i += 4)245245+ for (i = 32; i < gic_irqs; i += 4)257246 writel(cpumask, base + GIC_DIST_TARGET + i * 4 / 4);258247259248 /*260249 * Set priority on all global interrupts.261250 */262262- for (i = 32; i < max_irq; i += 4)251251+ for (i = 32; i < gic_irqs; i += 4)263252 writel(0xa0a0a0a0, base + GIC_DIST_PRI + i * 4 / 4);264253265254 /*266255 * Disable all interrupts. Leave the PPI and SGIs alone267256 * as these enables are banked registers.268257 */269269- for (i = 32; i < max_irq; i += 32)258258+ for (i = 32; i < gic_irqs; i += 32)270259 writel(0xffffffff, base + GIC_DIST_ENABLE_CLEAR + i * 4 / 32);260260+261261+ /*262262+ * Limit number of interrupts registered to the platform maximum263263+ */264264+ irq_limit = gic_data[gic_nr].irq_offset + gic_irqs;265265+ if (WARN_ON(irq_limit > NR_IRQS))266266+ irq_limit = NR_IRQS;271267272268 /*273269 * Setup the Linux IRQ subsystem.274270 */275275- for (i = irq_start; i < gic_data[gic_nr].irq_offset + max_irq; i++) {271271+ for (i = irq_start; i < irq_limit; i++) {276272 set_irq_chip(i, &gic_chip);277273 set_irq_chip_data(i, &gic_data[gic_nr]);278274 set_irq_handler(i, handle_level_irq);
+341
arch/arm/configs/at91rm9200_defconfig
···11+CONFIG_EXPERIMENTAL=y22+# CONFIG_LOCALVERSION_AUTO is not set33+# CONFIG_SWAP is not set44+CONFIG_SYSVIPC=y55+CONFIG_IKCONFIG=y66+CONFIG_IKCONFIG_PROC=y77+CONFIG_LOG_BUF_SHIFT=1488+CONFIG_SYSFS_DEPRECATED_V2=y99+CONFIG_BLK_DEV_INITRD=y1010+CONFIG_MODULES=y1111+CONFIG_MODULE_FORCE_LOAD=y1212+CONFIG_MODULE_UNLOAD=y1313+CONFIG_MODVERSIONS=y1414+CONFIG_MODULE_SRCVERSION_ALL=y1515+# CONFIG_BLK_DEV_BSG is not set1616+# CONFIG_IOSCHED_CFQ is not set1717+CONFIG_ARCH_AT91=y1818+CONFIG_MACH_ONEARM=y1919+CONFIG_ARCH_AT91RM9200DK=y2020+CONFIG_MACH_AT91RM9200EK=y2121+CONFIG_MACH_CSB337=y2222+CONFIG_MACH_CSB637=y2323+CONFIG_MACH_CARMEVA=y2424+CONFIG_MACH_ATEB9200=y2525+CONFIG_MACH_KB9200=y2626+CONFIG_MACH_PICOTUX2XX=y2727+CONFIG_MACH_KAFA=y2828+CONFIG_MACH_ECBAT91=y2929+CONFIG_MACH_YL9200=y3030+CONFIG_MACH_CPUAT91=y3131+CONFIG_MACH_ECO920=y3232+CONFIG_MTD_AT91_DATAFLASH_CARD=y3333+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y3434+CONFIG_AT91_TIMER_HZ=1003535+# CONFIG_ARM_THUMB is not set3636+CONFIG_PCCARD=y3737+CONFIG_AT91_CF=y3838+CONFIG_NO_HZ=y3939+CONFIG_HIGH_RES_TIMERS=y4040+CONFIG_PREEMPT=y4141+CONFIG_AEABI=y4242+CONFIG_LEDS=y4343+CONFIG_LEDS_CPU=y4444+CONFIG_ZBOOT_ROM_TEXT=0x100000004545+CONFIG_ZBOOT_ROM_BSS=0x200400004646+CONFIG_KEXEC=y4747+CONFIG_FPE_NWFPE=y4848+CONFIG_BINFMT_MISC=y4949+CONFIG_NET=y5050+CONFIG_PACKET=y5151+CONFIG_UNIX=y5252+CONFIG_XFRM_USER=m5353+CONFIG_INET=y5454+CONFIG_IP_MULTICAST=y5555+CONFIG_IP_PNP=y5656+CONFIG_IP_PNP_DHCP=y5757+CONFIG_IP_PNP_BOOTP=y5858+CONFIG_NET_IPIP=m5959+CONFIG_NET_IPGRE=m6060+CONFIG_INET_AH=m6161+CONFIG_INET_ESP=m6262+CONFIG_INET_IPCOMP=m6363+CONFIG_INET_XFRM_MODE_TRANSPORT=m6464+CONFIG_INET_XFRM_MODE_TUNNEL=m6565+CONFIG_INET_XFRM_MODE_BEET=m6666+CONFIG_IPV6_PRIVACY=y6767+CONFIG_IPV6_ROUTER_PREF=y6868+CONFIG_IPV6_ROUTE_INFO=y6969+CONFIG_INET6_AH=m7070+CONFIG_INET6_ESP=m7171+CONFIG_INET6_IPCOMP=m7272+CONFIG_IPV6_MIP6=m7373+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m7474+CONFIG_IPV6_TUNNEL=m7575+CONFIG_BRIDGE=m7676+CONFIG_VLAN_8021Q=m7777+CONFIG_BT=m7878+CONFIG_BT_L2CAP=m7979+CONFIG_BT_SCO=m8080+CONFIG_BT_RFCOMM=m8181+CONFIG_BT_RFCOMM_TTY=y8282+CONFIG_BT_BNEP=m8383+CONFIG_BT_BNEP_MC_FILTER=y8484+CONFIG_BT_BNEP_PROTO_FILTER=y8585+CONFIG_BT_HIDP=m8686+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"8787+CONFIG_MTD=y8888+CONFIG_MTD_CONCAT=y8989+CONFIG_MTD_PARTITIONS=y9090+CONFIG_MTD_CMDLINE_PARTS=y9191+CONFIG_MTD_AFS_PARTS=y9292+CONFIG_MTD_CHAR=y9393+CONFIG_MTD_BLOCK=y9494+CONFIG_MTD_CFI=y9595+CONFIG_MTD_JEDECPROBE=y9696+CONFIG_MTD_CFI_INTELEXT=y9797+CONFIG_MTD_CFI_AMDSTD=y9898+CONFIG_MTD_COMPLEX_MAPPINGS=y9999+CONFIG_MTD_PHYSMAP=y100100+CONFIG_MTD_PLATRAM=y101101+CONFIG_MTD_DATAFLASH=y102102+CONFIG_MTD_NAND=y103103+CONFIG_MTD_NAND_ATMEL=y104104+CONFIG_MTD_NAND_PLATFORM=y105105+CONFIG_MTD_UBI=y106106+CONFIG_MTD_UBI_GLUEBI=y107107+CONFIG_BLK_DEV_LOOP=y108108+CONFIG_BLK_DEV_NBD=y109109+CONFIG_BLK_DEV_RAM=y110110+CONFIG_BLK_DEV_RAM_SIZE=8192111111+CONFIG_ATMEL_TCLIB=y112112+CONFIG_EEPROM_LEGACY=m113113+CONFIG_SCSI=y114114+CONFIG_BLK_DEV_SD=y115115+CONFIG_BLK_DEV_SR=m116116+CONFIG_BLK_DEV_SR_VENDOR=y117117+CONFIG_CHR_DEV_SG=m118118+CONFIG_SCSI_MULTI_LUN=y119119+# CONFIG_SCSI_LOWLEVEL is not set120120+CONFIG_NETDEVICES=y121121+CONFIG_TUN=m122122+CONFIG_PHYLIB=y123123+CONFIG_DAVICOM_PHY=y124124+CONFIG_SMSC_PHY=y125125+CONFIG_MICREL_PHY=y126126+CONFIG_NET_ETHERNET=y127127+CONFIG_ARM_AT91_ETHER=y128128+# CONFIG_NETDEV_1000 is not set129129+# CONFIG_NETDEV_10000 is not set130130+CONFIG_USB_CATC=m131131+CONFIG_USB_KAWETH=m132132+CONFIG_USB_PEGASUS=m133133+CONFIG_USB_RTL8150=m134134+CONFIG_USB_USBNET=m135135+CONFIG_USB_NET_DM9601=m136136+CONFIG_USB_NET_GL620A=m137137+CONFIG_USB_NET_PLUSB=m138138+CONFIG_USB_NET_RNDIS_HOST=m139139+CONFIG_USB_ALI_M5632=y140140+CONFIG_USB_AN2720=y141141+CONFIG_USB_EPSON2888=y142142+CONFIG_PPP=y143143+CONFIG_PPP_MULTILINK=y144144+CONFIG_PPP_FILTER=y145145+CONFIG_PPP_ASYNC=y146146+CONFIG_PPP_DEFLATE=y147147+CONFIG_PPP_BSDCOMP=y148148+CONFIG_PPP_MPPE=m149149+CONFIG_PPPOE=m150150+CONFIG_SLIP=m151151+CONFIG_SLIP_COMPRESSED=y152152+CONFIG_SLIP_SMART=y153153+CONFIG_SLIP_MODE_SLIP6=y154154+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set155155+CONFIG_INPUT_MOUSEDEV_SCREEN_X=640156156+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480157157+CONFIG_INPUT_EVDEV=y158158+CONFIG_KEYBOARD_GPIO=y159159+# CONFIG_INPUT_MOUSE is not set160160+CONFIG_INPUT_TOUCHSCREEN=y161161+CONFIG_SERIAL_ATMEL=y162162+CONFIG_SERIAL_ATMEL_CONSOLE=y163163+CONFIG_LEGACY_PTY_COUNT=32164164+CONFIG_HW_RANDOM=y165165+CONFIG_I2C=y166166+CONFIG_I2C_CHARDEV=y167167+CONFIG_I2C_GPIO=y168168+CONFIG_SPI=y169169+CONFIG_SPI_ATMEL=y170170+CONFIG_SPI_BITBANG=y171171+CONFIG_GPIO_SYSFS=y172172+CONFIG_HWMON=m173173+CONFIG_SENSORS_ADM1021=m174174+CONFIG_SENSORS_ADM1025=m175175+CONFIG_SENSORS_ADM1026=m176176+CONFIG_SENSORS_ADM1029=m177177+CONFIG_SENSORS_ADM1031=m178178+CONFIG_SENSORS_ADM9240=m179179+CONFIG_SENSORS_DS1621=m180180+CONFIG_SENSORS_GL518SM=m181181+CONFIG_SENSORS_GL520SM=m182182+CONFIG_SENSORS_IT87=m183183+CONFIG_SENSORS_LM63=m184184+CONFIG_SENSORS_LM73=m185185+CONFIG_SENSORS_LM75=m186186+CONFIG_SENSORS_LM77=m187187+CONFIG_SENSORS_LM78=m188188+CONFIG_SENSORS_LM80=m189189+CONFIG_SENSORS_LM83=m190190+CONFIG_SENSORS_LM85=m191191+CONFIG_SENSORS_LM87=m192192+CONFIG_SENSORS_LM90=m193193+CONFIG_SENSORS_LM92=m194194+CONFIG_SENSORS_MAX1619=m195195+CONFIG_SENSORS_PCF8591=m196196+CONFIG_SENSORS_SMSC47B397=m197197+CONFIG_SENSORS_W83781D=m198198+CONFIG_SENSORS_W83791D=m199199+CONFIG_SENSORS_W83792D=m200200+CONFIG_SENSORS_W83793=m201201+CONFIG_SENSORS_W83L785TS=m202202+CONFIG_WATCHDOG=y203203+CONFIG_WATCHDOG_NOWAYOUT=y204204+CONFIG_AT91RM9200_WATCHDOG=y205205+CONFIG_FB=y206206+CONFIG_FB_MODE_HELPERS=y207207+CONFIG_FB_TILEBLITTING=y208208+CONFIG_FB_S1D13XXX=y209209+CONFIG_BACKLIGHT_LCD_SUPPORT=y210210+CONFIG_LCD_CLASS_DEVICE=y211211+CONFIG_BACKLIGHT_CLASS_DEVICE=y212212+# CONFIG_BACKLIGHT_GENERIC is not set213213+CONFIG_DISPLAY_SUPPORT=y214214+CONFIG_FRAMEBUFFER_CONSOLE=y215215+CONFIG_FONTS=y216216+CONFIG_FONT_MINI_4x6=y217217+CONFIG_LOGO=y218218+# CONFIG_LOGO_LINUX_MONO is not set219219+# CONFIG_LOGO_LINUX_VGA16 is not set220220+CONFIG_USB=y221221+CONFIG_USB_DEVICEFS=y222222+# CONFIG_USB_DEVICE_CLASS is not set223223+CONFIG_USB_MON=y224224+CONFIG_USB_OHCI_HCD=y225225+CONFIG_USB_ACM=m226226+CONFIG_USB_PRINTER=m227227+CONFIG_USB_STORAGE=y228228+CONFIG_USB_SERIAL=y229229+CONFIG_USB_SERIAL_CONSOLE=y230230+CONFIG_USB_SERIAL_GENERIC=y231231+CONFIG_USB_SERIAL_FTDI_SIO=y232232+CONFIG_USB_SERIAL_KEYSPAN=y233233+CONFIG_USB_SERIAL_KEYSPAN_MPR=y234234+CONFIG_USB_SERIAL_KEYSPAN_USA28=y235235+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y236236+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y237237+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y238238+CONFIG_USB_SERIAL_KEYSPAN_USA19=y239239+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y240240+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y241241+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y242242+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y243243+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y244244+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y245245+CONFIG_USB_SERIAL_MCT_U232=y246246+CONFIG_USB_SERIAL_PL2303=y247247+CONFIG_USB_GADGET=y248248+CONFIG_USB_ETH=m249249+CONFIG_USB_MASS_STORAGE=m250250+CONFIG_MMC=y251251+CONFIG_MMC_AT91=y252252+CONFIG_NEW_LEDS=y253253+CONFIG_LEDS_CLASS=y254254+CONFIG_LEDS_GPIO=y255255+CONFIG_LEDS_TRIGGERS=y256256+CONFIG_LEDS_TRIGGER_TIMER=y257257+CONFIG_LEDS_TRIGGER_HEARTBEAT=y258258+CONFIG_LEDS_TRIGGER_GPIO=y259259+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y260260+CONFIG_RTC_CLASS=y261261+# CONFIG_RTC_HCTOSYS is not set262262+CONFIG_RTC_DRV_DS1307=y263263+CONFIG_RTC_DRV_PCF8563=y264264+CONFIG_RTC_DRV_AT91RM9200=y265265+CONFIG_EXT2_FS=y266266+CONFIG_EXT2_FS_XATTR=y267267+CONFIG_EXT3_FS=y268268+# CONFIG_EXT3_FS_XATTR is not set269269+CONFIG_REISERFS_FS=y270270+CONFIG_AUTOFS4_FS=y271271+CONFIG_ISO9660_FS=y272272+CONFIG_JOLIET=y273273+CONFIG_ZISOFS=y274274+CONFIG_UDF_FS=y275275+CONFIG_MSDOS_FS=y276276+CONFIG_VFAT_FS=y277277+CONFIG_NTFS_FS=m278278+CONFIG_TMPFS=y279279+CONFIG_CONFIGFS_FS=y280280+CONFIG_JFFS2_FS=y281281+CONFIG_JFFS2_SUMMARY=y282282+CONFIG_JFFS2_COMPRESSION_OPTIONS=y283283+CONFIG_JFFS2_LZO=y284284+CONFIG_JFFS2_RUBIN=y285285+CONFIG_CRAMFS=y286286+CONFIG_MINIX_FS=y287287+CONFIG_NFS_FS=y288288+CONFIG_NFS_V3=y289289+CONFIG_NFS_V3_ACL=y290290+CONFIG_NFS_V4=y291291+CONFIG_ROOT_NFS=y292292+CONFIG_NFSD=y293293+CONFIG_SMB_FS=m294294+CONFIG_CIFS=m295295+CONFIG_PARTITION_ADVANCED=y296296+CONFIG_MAC_PARTITION=y297297+CONFIG_NLS_CODEPAGE_437=y298298+CONFIG_NLS_CODEPAGE_737=m299299+CONFIG_NLS_CODEPAGE_775=m300300+CONFIG_NLS_CODEPAGE_850=m301301+CONFIG_NLS_CODEPAGE_852=m302302+CONFIG_NLS_CODEPAGE_855=m303303+CONFIG_NLS_CODEPAGE_857=m304304+CONFIG_NLS_CODEPAGE_860=m305305+CONFIG_NLS_CODEPAGE_861=m306306+CONFIG_NLS_CODEPAGE_862=m307307+CONFIG_NLS_CODEPAGE_863=m308308+CONFIG_NLS_CODEPAGE_864=m309309+CONFIG_NLS_CODEPAGE_865=m310310+CONFIG_NLS_CODEPAGE_866=m311311+CONFIG_NLS_CODEPAGE_869=m312312+CONFIG_NLS_CODEPAGE_936=m313313+CONFIG_NLS_CODEPAGE_950=m314314+CONFIG_NLS_CODEPAGE_932=m315315+CONFIG_NLS_CODEPAGE_949=m316316+CONFIG_NLS_CODEPAGE_874=m317317+CONFIG_NLS_ISO8859_8=m318318+CONFIG_NLS_CODEPAGE_1250=m319319+CONFIG_NLS_CODEPAGE_1251=m320320+CONFIG_NLS_ASCII=m321321+CONFIG_NLS_ISO8859_1=y322322+CONFIG_NLS_ISO8859_2=m323323+CONFIG_NLS_ISO8859_3=m324324+CONFIG_NLS_ISO8859_4=m325325+CONFIG_NLS_ISO8859_5=m326326+CONFIG_NLS_ISO8859_6=m327327+CONFIG_NLS_ISO8859_7=m328328+CONFIG_NLS_ISO8859_9=m329329+CONFIG_NLS_ISO8859_13=m330330+CONFIG_NLS_ISO8859_14=m331331+CONFIG_NLS_ISO8859_15=m332332+CONFIG_NLS_KOI8_R=m333333+CONFIG_NLS_KOI8_U=m334334+CONFIG_NLS_UTF8=y335335+CONFIG_MAGIC_SYSRQ=y336336+CONFIG_DEBUG_FS=y337337+CONFIG_DEBUG_KERNEL=y338338+# CONFIG_RCU_CPU_STALL_DETECTOR is not set339339+# CONFIG_FTRACE is not set340340+CONFIG_CRYPTO_PCBC=y341341+CONFIG_CRYPTO_SHA1=y
-72
arch/arm/configs/at91rm9200dk_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_SWAP is not set33-CONFIG_SYSVIPC=y44-CONFIG_LOG_BUF_SHIFT=1455-CONFIG_BLK_DEV_INITRD=y66-CONFIG_MODULES=y77-CONFIG_MODULE_UNLOAD=y88-# CONFIG_IOSCHED_DEADLINE is not set99-# CONFIG_IOSCHED_CFQ is not set1010-CONFIG_ARCH_AT91=y1111-CONFIG_ARCH_AT91RM9200DK=y1212-CONFIG_MACH_ECO920=y1313-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y1414-# CONFIG_ARM_THUMB is not set1515-CONFIG_PCCARD=y1616-CONFIG_AT91_CF=y1717-CONFIG_LEDS=y1818-CONFIG_ZBOOT_ROM_TEXT=0x01919-CONFIG_ZBOOT_ROM_BSS=0x02020-CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"2121-CONFIG_FPE_NWFPE=y2222-CONFIG_NET=y2323-CONFIG_PACKET=y2424-CONFIG_UNIX=y2525-CONFIG_INET=y2626-CONFIG_IP_PNP=y2727-CONFIG_IP_PNP_BOOTP=y2828-# CONFIG_IPV6 is not set2929-CONFIG_MTD=y3030-CONFIG_MTD_PARTITIONS=y3131-CONFIG_MTD_CMDLINE_PARTS=y3232-CONFIG_MTD_CHAR=y3333-CONFIG_MTD_BLOCK=y3434-CONFIG_MTD_CFI=y3535-CONFIG_MTD_JEDECPROBE=y3636-CONFIG_MTD_CFI_AMDSTD=y3737-CONFIG_MTD_PHYSMAP=y3838-CONFIG_BLK_DEV_RAM=y3939-CONFIG_BLK_DEV_RAM_SIZE=81924040-CONFIG_NETDEVICES=y4141-CONFIG_NET_ETHERNET=y4242-CONFIG_ARM_AT91_ETHER=y4343-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set4444-# CONFIG_INPUT_KEYBOARD is not set4545-# CONFIG_INPUT_MOUSE is not set4646-# CONFIG_SERIO is not set4747-CONFIG_SERIAL_ATMEL=y4848-CONFIG_SERIAL_ATMEL_CONSOLE=y4949-CONFIG_I2C=y5050-CONFIG_I2C_CHARDEV=y5151-CONFIG_I2C_GPIO=y5252-CONFIG_WATCHDOG=y5353-CONFIG_WATCHDOG_NOWAYOUT=y5454-CONFIG_AT91RM9200_WATCHDOG=y5555-# CONFIG_VGA_CONSOLE is not set5656-# CONFIG_USB_HID is not set5757-CONFIG_USB=y5858-CONFIG_USB_DEBUG=y5959-CONFIG_USB_DEVICEFS=y6060-CONFIG_USB_MON=y6161-CONFIG_USB_OHCI_HCD=y6262-CONFIG_USB_GADGET=y6363-CONFIG_MMC=y6464-CONFIG_RTC_CLASS=y6565-CONFIG_RTC_DRV_AT91RM9200=y6666-CONFIG_EXT2_FS=y6767-CONFIG_INOTIFY=y6868-CONFIG_TMPFS=y6969-CONFIG_CRAMFS=y7070-CONFIG_DEBUG_KERNEL=y7171-CONFIG_DEBUG_USER=y7272-CONFIG_DEBUG_LL=y
-73
arch/arm/configs/at91rm9200ek_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_LOCALVERSION_AUTO is not set33-# CONFIG_SWAP is not set44-CONFIG_SYSVIPC=y55-CONFIG_LOG_BUF_SHIFT=1466-CONFIG_BLK_DEV_INITRD=y77-CONFIG_MODULES=y88-CONFIG_MODULE_UNLOAD=y99-# CONFIG_IOSCHED_DEADLINE is not set1010-# CONFIG_IOSCHED_CFQ is not set1111-CONFIG_ARCH_AT91=y1212-CONFIG_MACH_AT91RM9200EK=y1313-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y1414-# CONFIG_ARM_THUMB is not set1515-CONFIG_LEDS=y1616-CONFIG_LEDS_CPU=y1717-CONFIG_ZBOOT_ROM_TEXT=0x01818-CONFIG_ZBOOT_ROM_BSS=0x01919-CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"2020-CONFIG_FPE_NWFPE=y2121-CONFIG_NET=y2222-CONFIG_PACKET=y2323-CONFIG_UNIX=y2424-CONFIG_INET=y2525-CONFIG_IP_PNP=y2626-CONFIG_IP_PNP_BOOTP=y2727-# CONFIG_IPV6 is not set2828-CONFIG_MTD=y2929-CONFIG_MTD_PARTITIONS=y3030-CONFIG_MTD_CMDLINE_PARTS=y3131-CONFIG_MTD_CHAR=y3232-CONFIG_MTD_BLOCK=y3333-CONFIG_MTD_CFI=y3434-CONFIG_MTD_JEDECPROBE=y3535-CONFIG_MTD_CFI_AMDSTD=y3636-CONFIG_MTD_PHYSMAP=y3737-CONFIG_BLK_DEV_RAM=y3838-CONFIG_BLK_DEV_RAM_SIZE=81923939-CONFIG_NETDEVICES=y4040-CONFIG_NET_ETHERNET=y4141-CONFIG_ARM_AT91_ETHER=y4242-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set4343-# CONFIG_INPUT_KEYBOARD is not set4444-# CONFIG_INPUT_MOUSE is not set4545-# CONFIG_SERIO is not set4646-CONFIG_SERIAL_ATMEL=y4747-CONFIG_SERIAL_ATMEL_CONSOLE=y4848-CONFIG_I2C=y4949-CONFIG_I2C_CHARDEV=y5050-CONFIG_I2C_GPIO=y5151-CONFIG_WATCHDOG=y5252-CONFIG_WATCHDOG_NOWAYOUT=y5353-CONFIG_AT91RM9200_WATCHDOG=y5454-CONFIG_FB=y5555-CONFIG_FB_S1D13XXX=y5656-# CONFIG_VGA_CONSOLE is not set5757-# CONFIG_USB_HID is not set5858-CONFIG_USB=y5959-CONFIG_USB_DEBUG=y6060-CONFIG_USB_DEVICEFS=y6161-CONFIG_USB_MON=y6262-CONFIG_USB_OHCI_HCD=y6363-CONFIG_USB_GADGET=y6464-CONFIG_MMC=y6565-CONFIG_RTC_CLASS=y6666-CONFIG_RTC_DRV_AT91RM9200=y6767-CONFIG_EXT2_FS=y6868-CONFIG_INOTIFY=y6969-CONFIG_TMPFS=y7070-CONFIG_CRAMFS=y7171-CONFIG_DEBUG_KERNEL=y7272-CONFIG_DEBUG_USER=y7373-CONFIG_DEBUG_LL=y
-131
arch/arm/configs/ateb9200_defconfig
···11-CONFIG_EXPERIMENTAL=y22-CONFIG_SYSVIPC=y33-CONFIG_LOG_BUF_SHIFT=1444-CONFIG_EMBEDDED=y55-CONFIG_SLAB=y66-CONFIG_PROFILING=y77-CONFIG_OPROFILE=m88-CONFIG_MODULES=y99-CONFIG_MODULE_UNLOAD=y1010-CONFIG_ARCH_AT91=y1111-CONFIG_MACH_ATEB9200=y1212-CONFIG_PCCARD=m1313-CONFIG_AT91_CF=m1414-CONFIG_PREEMPT=y1515-CONFIG_ZBOOT_ROM_TEXT=0x01616-CONFIG_ZBOOT_ROM_BSS=0x01717-CONFIG_FPE_NWFPE=y1818-CONFIG_PM=y1919-CONFIG_NET=y2020-CONFIG_PACKET=y2121-CONFIG_UNIX=y2222-CONFIG_NET_KEY=y2323-CONFIG_INET=y2424-# CONFIG_IPV6 is not set2525-CONFIG_BRIDGE=m2626-CONFIG_VLAN_8021Q=m2727-CONFIG_MTD=y2828-CONFIG_MTD_PARTITIONS=y2929-CONFIG_MTD_CMDLINE_PARTS=y3030-CONFIG_MTD_CHAR=y3131-CONFIG_MTD_BLOCK_RO=y3232-CONFIG_BLK_DEV_LOOP=m3333-CONFIG_BLK_DEV_NBD=m3434-CONFIG_SCSI=m3535-CONFIG_BLK_DEV_SD=m3636-CONFIG_BLK_DEV_SR=m3737-CONFIG_BLK_DEV_SR_VENDOR=y3838-CONFIG_CHR_DEV_SG=m3939-CONFIG_SCSI_MULTI_LUN=y4040-CONFIG_NETDEVICES=y4141-CONFIG_DUMMY=m4242-CONFIG_TUN=m4343-CONFIG_PHYLIB=y4444-CONFIG_DAVICOM_PHY=y4545-CONFIG_NET_ETHERNET=y4646-CONFIG_ARM_AT91_ETHER=y4747-CONFIG_USB_USBNET=y4848-CONFIG_USB_NET_GL620A=y4949-CONFIG_USB_NET_PLUSB=y5050-CONFIG_USB_NET_RNDIS_HOST=y5151-CONFIG_USB_ALI_M5632=y5252-CONFIG_USB_AN2720=y5353-CONFIG_USB_EPSON2888=y5454-CONFIG_PPP=m5555-CONFIG_PPP_ASYNC=m5656-CONFIG_PPP_SYNC_TTY=m5757-CONFIG_PPP_DEFLATE=m5858-CONFIG_PPP_BSDCOMP=m5959-CONFIG_PPPOE=m6060-CONFIG_SERIAL_ATMEL=y6161-CONFIG_SERIAL_ATMEL_CONSOLE=y6262-CONFIG_I2C=m6363-CONFIG_I2C_CHARDEV=m6464-CONFIG_I2C_GPIO=m6565-# CONFIG_VGA_CONSOLE is not set6666-CONFIG_SOUND=y6767-CONFIG_USB_HID=m6868-CONFIG_HID_PID=y6969-CONFIG_USB_HIDDEV=y7070-CONFIG_USB=y7171-CONFIG_USB_DEVICEFS=y7272-CONFIG_USB_MON=y7373-CONFIG_USB_OHCI_HCD=y7474-CONFIG_USB_ACM=m7575-CONFIG_USB_PRINTER=m7676-CONFIG_USB_STORAGE=m7777-CONFIG_USB_STORAGE_DATAFAB=m7878-CONFIG_USB_STORAGE_FREECOM=m7979-CONFIG_USB_STORAGE_USBAT=m8080-CONFIG_USB_STORAGE_SDDR09=m8181-CONFIG_USB_STORAGE_SDDR55=m8282-CONFIG_USB_STORAGE_JUMPSHOT=m8383-CONFIG_USB_SERIAL=m8484-CONFIG_USB_SERIAL_GENERIC=y8585-CONFIG_USB_SERIAL_FTDI_SIO=m8686-CONFIG_USB_SERIAL_PL2303=m8787-CONFIG_USB_GADGET=m8888-CONFIG_USB_ETH=m8989-CONFIG_USB_GADGETFS=m9090-CONFIG_USB_FILE_STORAGE=m9191-CONFIG_USB_G_SERIAL=m9292-CONFIG_MMC=m9393-CONFIG_MMC_DEBUG=y9494-CONFIG_RTC_CLASS=y9595-# CONFIG_RTC_HCTOSYS is not set9696-CONFIG_RTC_DRV_AT91RM9200=y9797-CONFIG_EXT2_FS=m9898-CONFIG_EXT3_FS=m9999-CONFIG_REISERFS_FS=m100100-CONFIG_INOTIFY=y101101-CONFIG_ISO9660_FS=m102102-CONFIG_JOLIET=y103103-CONFIG_ZISOFS=y104104-CONFIG_UDF_FS=m105105-CONFIG_MSDOS_FS=m106106-CONFIG_VFAT_FS=m107107-CONFIG_NTFS_FS=m108108-CONFIG_NTFS_RW=y109109-CONFIG_TMPFS=y110110-CONFIG_CRAMFS=y111111-CONFIG_NFS_FS=m112112-CONFIG_NFS_V3=y113113-CONFIG_NFS_V3_ACL=y114114-CONFIG_NFS_V4=y115115-CONFIG_NFSD=m116116-CONFIG_NFSD_V4=y117117-CONFIG_PARTITION_ADVANCED=y118118-CONFIG_MAC_PARTITION=y119119-CONFIG_BSD_DISKLABEL=y120120-CONFIG_MINIX_SUBPARTITION=y121121-CONFIG_SOLARIS_X86_PARTITION=y122122-CONFIG_UNIXWARE_DISKLABEL=y123123-CONFIG_NLS_CODEPAGE_932=m124124-CONFIG_NLS_ASCII=m125125-CONFIG_NLS_ISO8859_15=m126126-CONFIG_NLS_UTF8=m127127-CONFIG_CRYPTO_MD5=y128128-CONFIG_CRYPTO_MICHAEL_MIC=m129129-CONFIG_CRYPTO_ARC4=m130130-CONFIG_CRC16=m131131-CONFIG_LIBCRC32C=m
-47
arch/arm/configs/carmeva_defconfig
···11-CONFIG_EXPERIMENTAL=y22-CONFIG_LOG_BUF_SHIFT=1433-CONFIG_BLK_DEV_INITRD=y44-CONFIG_EMBEDDED=y55-# CONFIG_HOTPLUG is not set66-CONFIG_MODULES=y77-CONFIG_MODULE_UNLOAD=y88-CONFIG_MODULE_FORCE_UNLOAD=y99-CONFIG_ARCH_AT91=y1010-CONFIG_MACH_CARMEVA=y1111-CONFIG_ZBOOT_ROM_TEXT=0x01212-CONFIG_ZBOOT_ROM_BSS=0x01313-CONFIG_FPE_NWFPE=y1414-CONFIG_NET=y1515-CONFIG_UNIX=y1616-CONFIG_INET=y1717-CONFIG_IP_MULTICAST=y1818-CONFIG_IP_PNP=y1919-# CONFIG_IPV6 is not set2020-CONFIG_MTD=y2121-CONFIG_MTD_PARTITIONS=y2222-CONFIG_MTD_CMDLINE_PARTS=y2323-CONFIG_MTD_CHAR=y2424-CONFIG_MTD_BLOCK=y2525-CONFIG_BLK_DEV_RAM=y2626-CONFIG_NETDEVICES=y2727-CONFIG_NET_ETHERNET=y2828-CONFIG_ARM_AT91_ETHER=y2929-# CONFIG_INPUT_MOUSEDEV is not set3030-# CONFIG_INPUT_KEYBOARD is not set3131-# CONFIG_INPUT_MOUSE is not set3232-CONFIG_SERIO=m3333-CONFIG_SERIAL_ATMEL=y3434-CONFIG_SERIAL_ATMEL_CONSOLE=y3535-# CONFIG_VGA_CONSOLE is not set3636-CONFIG_MMC=m3737-CONFIG_MMC_DEBUG=y3838-CONFIG_EXT2_FS=y3939-CONFIG_EXT2_FS_XATTR=y4040-# CONFIG_DNOTIFY is not set4141-CONFIG_JFFS2_FS=y4242-CONFIG_JFFS2_COMPRESSION_OPTIONS=y4343-CONFIG_NFS_FS=y4444-CONFIG_NFS_V3=y4545-CONFIG_NFS_V4=y4646-CONFIG_ROOT_NFS=y4747-CONFIG_NFSD=y
-112
arch/arm/configs/cpuat91_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_LOCALVERSION_AUTO is not set33-# CONFIG_SWAP is not set44-CONFIG_SYSVIPC=y55-CONFIG_LOG_BUF_SHIFT=1466-CONFIG_SYSFS_DEPRECATED_V2=y77-CONFIG_MODULES=y88-CONFIG_MODULE_UNLOAD=y99-# CONFIG_BLK_DEV_BSG is not set1010-# CONFIG_IOSCHED_CFQ is not set1111-CONFIG_ARCH_AT91=y1212-CONFIG_MACH_CPUAT91=y1313-CONFIG_AT91_TIMER_HZ=1001414-# CONFIG_ARM_THUMB is not set1515-CONFIG_PREEMPT=y1616-CONFIG_ZBOOT_ROM_TEXT=0x01717-CONFIG_ZBOOT_ROM_BSS=0x01818-CONFIG_NET=y1919-CONFIG_PACKET=y2020-CONFIG_UNIX=y2121-CONFIG_INET=y2222-CONFIG_IP_PNP=y2323-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set2424-# CONFIG_INET_XFRM_MODE_TUNNEL is not set2525-# CONFIG_INET_XFRM_MODE_BEET is not set2626-# CONFIG_IPV6 is not set2727-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"2828-CONFIG_MTD=y2929-CONFIG_MTD_PARTITIONS=y3030-CONFIG_MTD_CMDLINE_PARTS=y3131-CONFIG_MTD_CHAR=y3232-CONFIG_MTD_BLOCK=y3333-CONFIG_MTD_CFI=y3434-CONFIG_MTD_CFI_INTELEXT=y3535-CONFIG_MTD_PHYSMAP=y3636-CONFIG_MTD_PLATRAM=y3737-CONFIG_BLK_DEV_LOOP=y3838-CONFIG_BLK_DEV_NBD=y3939-CONFIG_BLK_DEV_RAM=y4040-# CONFIG_MISC_DEVICES is not set4141-CONFIG_SCSI=y4242-CONFIG_BLK_DEV_SD=y4343-CONFIG_SCSI_MULTI_LUN=y4444-# CONFIG_SCSI_LOWLEVEL is not set4545-CONFIG_NETDEVICES=y4646-CONFIG_PHYLIB=y4747-CONFIG_NET_ETHERNET=y4848-CONFIG_ARM_AT91_ETHER=y4949-# CONFIG_NETDEV_1000 is not set5050-# CONFIG_NETDEV_10000 is not set5151-CONFIG_PPP=y5252-CONFIG_PPP_ASYNC=y5353-CONFIG_PPP_DEFLATE=y5454-CONFIG_PPP_BSDCOMP=y5555-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set5656-# CONFIG_INPUT_KEYBOARD is not set5757-# CONFIG_INPUT_MOUSE is not set5858-# CONFIG_SERIO is not set5959-CONFIG_SERIAL_ATMEL=y6060-CONFIG_SERIAL_ATMEL_CONSOLE=y6161-CONFIG_LEGACY_PTY_COUNT=326262-# CONFIG_HW_RANDOM is not set6363-CONFIG_I2C=y6464-CONFIG_I2C_CHARDEV=y6565-CONFIG_I2C_GPIO=y6666-CONFIG_GPIO_SYSFS=y6767-# CONFIG_HWMON is not set6868-CONFIG_WATCHDOG=y6969-CONFIG_WATCHDOG_NOWAYOUT=y7070-CONFIG_AT91RM9200_WATCHDOG=y7171-# CONFIG_VGA_CONSOLE is not set7272-# CONFIG_HID_SUPPORT is not set7373-CONFIG_USB=y7474-# CONFIG_USB_DEVICE_CLASS is not set7575-CONFIG_USB_OHCI_HCD=y7676-CONFIG_USB_STORAGE=y7777-CONFIG_USB_GADGET=y7878-CONFIG_USB_ETH=m7979-CONFIG_MMC=y8080-CONFIG_MMC_AT91=m8181-CONFIG_NEW_LEDS=y8282-CONFIG_LEDS_CLASS=y8383-CONFIG_LEDS_GPIO=y8484-CONFIG_LEDS_TRIGGERS=y8585-CONFIG_LEDS_TRIGGER_TIMER=y8686-CONFIG_LEDS_TRIGGER_HEARTBEAT=y8787-CONFIG_LEDS_TRIGGER_GPIO=y8888-CONFIG_LEDS_TRIGGER_DEFAULT_ON=y8989-CONFIG_RTC_CLASS=y9090-# CONFIG_RTC_HCTOSYS is not set9191-CONFIG_RTC_DRV_DS1307=y9292-CONFIG_RTC_DRV_PCF8563=y9393-CONFIG_EXT2_FS=y9494-CONFIG_EXT3_FS=y9595-# CONFIG_EXT3_FS_XATTR is not set9696-CONFIG_INOTIFY=y9797-CONFIG_AUTOFS4_FS=y9898-CONFIG_MSDOS_FS=y9999-CONFIG_VFAT_FS=y100100-CONFIG_TMPFS=y101101-CONFIG_JFFS2_FS=y102102-CONFIG_JFFS2_SUMMARY=y103103-CONFIG_CRAMFS=y104104-CONFIG_MINIX_FS=y105105-CONFIG_NFS_FS=y106106-CONFIG_NFS_V3=y107107-CONFIG_ROOT_NFS=y108108-CONFIG_PARTITION_ADVANCED=y109109-CONFIG_NLS_CODEPAGE_437=y110110-CONFIG_NLS_ISO8859_1=y111111-CONFIG_NLS_UTF8=y112112-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-104
arch/arm/configs/csb337_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_SWAP is not set33-CONFIG_SYSVIPC=y44-CONFIG_LOG_BUF_SHIFT=1455-CONFIG_BLK_DEV_INITRD=y66-CONFIG_MODULES=y77-CONFIG_MODULE_UNLOAD=y88-# CONFIG_BLK_DEV_BSG is not set99-CONFIG_ARCH_AT91=y1010-CONFIG_MACH_CSB337=y1111-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y1212-# CONFIG_ARM_THUMB is not set1313-CONFIG_PCCARD=y1414-CONFIG_AT91_CF=y1515-CONFIG_LEDS=y1616-CONFIG_LEDS_CPU=y1717-CONFIG_ZBOOT_ROM_TEXT=0x01818-CONFIG_ZBOOT_ROM_BSS=0x01919-CONFIG_CMDLINE="mem=32M console=ttyS0,38400 initrd=0x20410000,3145728 root=/dev/ram0 rw"2020-CONFIG_FPE_NWFPE=y2121-CONFIG_NET=y2222-CONFIG_PACKET=y2323-CONFIG_UNIX=y2424-CONFIG_INET=y2525-CONFIG_IP_PNP=y2626-CONFIG_IP_PNP_DHCP=y2727-CONFIG_IP_PNP_BOOTP=y2828-# CONFIG_INET_LRO is not set2929-# CONFIG_IPV6 is not set3030-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"3131-CONFIG_MTD=y3232-CONFIG_MTD_PARTITIONS=y3333-CONFIG_MTD_CMDLINE_PARTS=y3434-CONFIG_MTD_CHAR=y3535-CONFIG_MTD_BLOCK=y3636-CONFIG_MTD_CFI=y3737-CONFIG_MTD_CFI_INTELEXT=y3838-CONFIG_MTD_PHYSMAP=y3939-CONFIG_BLK_DEV_LOOP=y4040-CONFIG_BLK_DEV_RAM=y4141-CONFIG_BLK_DEV_RAM_SIZE=81924242-CONFIG_ATMEL_SSC=y4343-CONFIG_SCSI=y4444-CONFIG_NETDEVICES=y4545-CONFIG_NET_ETHERNET=y4646-CONFIG_ARM_AT91_ETHER=y4747-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set4848-# CONFIG_INPUT_KEYBOARD is not set4949-# CONFIG_INPUT_MOUSE is not set5050-# CONFIG_SERIO is not set5151-CONFIG_SERIAL_ATMEL=y5252-CONFIG_SERIAL_ATMEL_CONSOLE=y5353-# CONFIG_HW_RANDOM is not set5454-CONFIG_I2C=y5555-CONFIG_I2C_CHARDEV=y5656-CONFIG_I2C_GPIO=y5757-# CONFIG_HWMON is not set5858-CONFIG_WATCHDOG=y5959-CONFIG_WATCHDOG_NOWAYOUT=y6060-CONFIG_AT91RM9200_WATCHDOG=y6161-# CONFIG_VGA_CONSOLE is not set6262-# CONFIG_USB_HID is not set6363-CONFIG_USB=y6464-CONFIG_USB_DEBUG=y6565-CONFIG_USB_DEVICEFS=y6666-CONFIG_USB_MON=y6767-CONFIG_USB_OHCI_HCD=y6868-CONFIG_USB_STORAGE=y6969-CONFIG_USB_SERIAL=y7070-CONFIG_USB_SERIAL_CONSOLE=y7171-CONFIG_USB_SERIAL_GENERIC=y7272-CONFIG_USB_SERIAL_FTDI_SIO=y7373-CONFIG_USB_SERIAL_KEYSPAN=y7474-CONFIG_USB_SERIAL_KEYSPAN_MPR=y7575-CONFIG_USB_SERIAL_KEYSPAN_USA28=y7676-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y7777-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y7878-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y7979-CONFIG_USB_SERIAL_KEYSPAN_USA19=y8080-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y8181-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y8282-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y8383-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y8484-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y8585-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y8686-CONFIG_USB_SERIAL_MCT_U232=y8787-CONFIG_USB_GADGET=y8888-CONFIG_MMC=y8989-CONFIG_RTC_CLASS=y9090-CONFIG_RTC_HCTOSYS_DEVICE="rtc1"9191-# CONFIG_RTC_INTF_SYSFS is not set9292-CONFIG_RTC_DRV_DS1307=y9393-CONFIG_RTC_DRV_AT91RM9200=y9494-CONFIG_EXT2_FS=y9595-CONFIG_INOTIFY=y9696-CONFIG_TMPFS=y9797-CONFIG_CRAMFS=y9898-CONFIG_NFS_FS=y9999-CONFIG_NFS_V3=y100100-CONFIG_NFS_V4=y101101-CONFIG_ROOT_NFS=y102102-CONFIG_DEBUG_KERNEL=y103103-CONFIG_DEBUG_USER=y104104-CONFIG_DEBUG_LL=y
-98
arch/arm/configs/csb637_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_SWAP is not set33-CONFIG_SYSVIPC=y44-CONFIG_LOG_BUF_SHIFT=1455-CONFIG_SYSFS_DEPRECATED_V2=y66-CONFIG_BLK_DEV_INITRD=y77-CONFIG_MODULES=y88-CONFIG_MODULE_UNLOAD=y99-# CONFIG_BLK_DEV_BSG is not set1010-CONFIG_ARCH_AT91=y1111-CONFIG_MACH_CSB637=y1212-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y1313-# CONFIG_ARM_THUMB is not set1414-CONFIG_PCCARD=y1515-CONFIG_AT91_CF=y1616-CONFIG_LEDS=y1717-CONFIG_LEDS_CPU=y1818-CONFIG_ZBOOT_ROM_TEXT=0x01919-CONFIG_ZBOOT_ROM_BSS=0x02020-CONFIG_CMDLINE="mem=32M console=ttyS0,38400 initrd=0x20410000,3145728 root=/dev/ram0 rw"2121-CONFIG_FPE_NWFPE=y2222-CONFIG_NET=y2323-CONFIG_PACKET=y2424-CONFIG_UNIX=y2525-CONFIG_INET=y2626-CONFIG_IP_PNP=y2727-CONFIG_IP_PNP_DHCP=y2828-CONFIG_IP_PNP_BOOTP=y2929-# CONFIG_INET_LRO is not set3030-# CONFIG_IPV6 is not set3131-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"3232-CONFIG_MTD=y3333-CONFIG_MTD_PARTITIONS=y3434-CONFIG_MTD_CMDLINE_PARTS=y3535-CONFIG_MTD_CHAR=y3636-CONFIG_MTD_BLOCK=y3737-CONFIG_MTD_CFI=y3838-CONFIG_MTD_CFI_INTELEXT=y3939-CONFIG_MTD_PHYSMAP=y4040-CONFIG_BLK_DEV_LOOP=y4141-CONFIG_BLK_DEV_RAM=y4242-CONFIG_BLK_DEV_RAM_SIZE=81924343-CONFIG_SCSI=y4444-CONFIG_NETDEVICES=y4545-CONFIG_NET_ETHERNET=y4646-CONFIG_ARM_AT91_ETHER=y4747-# CONFIG_INPUT_KEYBOARD is not set4848-# CONFIG_INPUT_MOUSE is not set4949-# CONFIG_SERIO is not set5050-CONFIG_SERIAL_ATMEL=y5151-CONFIG_SERIAL_ATMEL_CONSOLE=y5252-CONFIG_I2C=y5353-CONFIG_I2C_CHARDEV=y5454-CONFIG_WATCHDOG=y5555-CONFIG_WATCHDOG_NOWAYOUT=y5656-CONFIG_AT91RM9200_WATCHDOG=y5757-# CONFIG_VGA_CONSOLE is not set5858-# CONFIG_USB_HID is not set5959-CONFIG_USB=y6060-CONFIG_USB_DEBUG=y6161-CONFIG_USB_DEVICEFS=y6262-CONFIG_USB_MON=y6363-CONFIG_USB_OHCI_HCD=y6464-CONFIG_USB_STORAGE=y6565-CONFIG_USB_SERIAL=y6666-CONFIG_USB_SERIAL_CONSOLE=y6767-CONFIG_USB_SERIAL_GENERIC=y6868-CONFIG_USB_SERIAL_FTDI_SIO=y6969-CONFIG_USB_SERIAL_KEYSPAN=y7070-CONFIG_USB_SERIAL_KEYSPAN_MPR=y7171-CONFIG_USB_SERIAL_KEYSPAN_USA28=y7272-CONFIG_USB_SERIAL_KEYSPAN_USA28X=y7373-CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y7474-CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y7575-CONFIG_USB_SERIAL_KEYSPAN_USA19=y7676-CONFIG_USB_SERIAL_KEYSPAN_USA18X=y7777-CONFIG_USB_SERIAL_KEYSPAN_USA19W=y7878-CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y7979-CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y8080-CONFIG_USB_SERIAL_KEYSPAN_USA49W=y8181-CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y8282-CONFIG_USB_SERIAL_MCT_U232=y8383-CONFIG_NEW_LEDS=y8484-CONFIG_LEDS_CLASS=y8585-CONFIG_LEDS_GPIO=y8686-CONFIG_LEDS_TRIGGERS=y8787-CONFIG_LEDS_TRIGGER_HEARTBEAT=y8888-CONFIG_EXT2_FS=y8989-CONFIG_INOTIFY=y9090-CONFIG_TMPFS=y9191-CONFIG_CRAMFS=y9292-CONFIG_NFS_FS=y9393-CONFIG_NFS_V3=y9494-CONFIG_NFS_V4=y9595-CONFIG_ROOT_NFS=y9696-CONFIG_DEBUG_KERNEL=y9797-CONFIG_DEBUG_USER=y9898-CONFIG_DEBUG_LL=y
-99
arch/arm/configs/ecbat91_defconfig
···11-CONFIG_EXPERIMENTAL=y22-CONFIG_SYSVIPC=y33-CONFIG_IKCONFIG=y44-CONFIG_IKCONFIG_PROC=y55-CONFIG_LOG_BUF_SHIFT=1466-CONFIG_SLAB=y77-CONFIG_MODULES=y88-CONFIG_MODULE_UNLOAD=y99-# CONFIG_IOSCHED_DEADLINE is not set1010-# CONFIG_IOSCHED_CFQ is not set1111-CONFIG_ARCH_AT91=y1212-CONFIG_MACH_ECBAT91=y1313-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y1414-CONFIG_PCCARD=y1515-CONFIG_AT91_CF=y1616-CONFIG_PREEMPT=y1717-CONFIG_LEDS=y1818-CONFIG_LEDS_CPU=y1919-CONFIG_ZBOOT_ROM_TEXT=0x02020-CONFIG_ZBOOT_ROM_BSS=0x02121-CONFIG_CMDLINE="rootfstype=reiserfs root=/dev/mmcblk0p1 console=ttyS0,115200n8 rootdelay=1"2222-CONFIG_FPE_NWFPE=y2323-CONFIG_NET=y2424-CONFIG_PACKET=y2525-CONFIG_UNIX=y2626-CONFIG_INET=y2727-CONFIG_IP_PNP=y2828-CONFIG_IP_PNP_DHCP=y2929-# CONFIG_IPV6 is not set3030-CONFIG_CFG80211=y3131-CONFIG_MAC80211=y3232-# CONFIG_STANDALONE is not set3333-# CONFIG_PREVENT_FIRMWARE_BUILD is not set3434-CONFIG_MTD=y3535-CONFIG_MTD_PARTITIONS=y3636-CONFIG_MTD_CMDLINE_PARTS=y3737-CONFIG_MTD_AFS_PARTS=y3838-CONFIG_MTD_CHAR=y3939-CONFIG_MTD_BLOCK=y4040-CONFIG_MTD_DATAFLASH=y4141-CONFIG_BLK_DEV_LOOP=y4242-CONFIG_SCSI=y4343-CONFIG_BLK_DEV_SD=y4444-CONFIG_CHR_DEV_SG=y4545-CONFIG_NETDEVICES=y4646-CONFIG_NET_ETHERNET=y4747-CONFIG_ARM_AT91_ETHER=y4848-# CONFIG_NETDEV_1000 is not set4949-# CONFIG_NETDEV_10000 is not set5050-CONFIG_PPP=y5151-CONFIG_PPP_MULTILINK=y5252-CONFIG_PPP_FILTER=y5353-CONFIG_PPP_ASYNC=y5454-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set5555-# CONFIG_INPUT_KEYBOARD is not set5656-# CONFIG_INPUT_MOUSE is not set5757-# CONFIG_SERIO is not set5858-CONFIG_SERIAL_ATMEL=y5959-CONFIG_SERIAL_ATMEL_CONSOLE=y6060-CONFIG_HW_RANDOM=y6161-CONFIG_I2C=y6262-CONFIG_I2C_CHARDEV=y6363-CONFIG_SPI=y6464-CONFIG_SPI_BITBANG=y6565-CONFIG_WATCHDOG=y6666-CONFIG_WATCHDOG_NOWAYOUT=y6767-# CONFIG_VGA_CONSOLE is not set6868-# CONFIG_USB_HID is not set6969-CONFIG_USB=y7070-CONFIG_USB_DEVICEFS=y7171-# CONFIG_USB_DEVICE_CLASS is not set7272-CONFIG_USB_OHCI_HCD=y7373-CONFIG_USB_PRINTER=y7474-CONFIG_USB_STORAGE=y7575-CONFIG_USB_GADGET=y7676-CONFIG_MMC=y7777-CONFIG_MMC_DEBUG=y7878-CONFIG_MMC_AT91=m7979-CONFIG_NEW_LEDS=y8080-CONFIG_LEDS_CLASS=y8181-CONFIG_RTC_CLASS=y8282-# CONFIG_RTC_HCTOSYS is not set8383-CONFIG_RTC_DRV_AT91RM9200=y8484-CONFIG_EXT2_FS=y8585-CONFIG_EXT3_FS=y8686-CONFIG_REISERFS_FS=y8787-CONFIG_INOTIFY=y8888-CONFIG_TMPFS=y8989-CONFIG_CONFIGFS_FS=y9090-CONFIG_CRAMFS=y9191-CONFIG_NFS_FS=y9292-CONFIG_NFS_V3=y9393-CONFIG_NFS_V3_ACL=y9494-CONFIG_NFS_V4=y9595-CONFIG_ROOT_NFS=y9696-CONFIG_PARTITION_ADVANCED=y9797-CONFIG_DEBUG_USER=y9898-CONFIG_CRYPTO_PCBC=y9999-CONFIG_CRYPTO_SHA1=y
-61
arch/arm/configs/kafa_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_LOCALVERSION_AUTO is not set33-# CONFIG_SWAP is not set44-CONFIG_SYSVIPC=y55-CONFIG_LOG_BUF_SHIFT=1466-CONFIG_SLAB=y77-CONFIG_MODULES=y88-CONFIG_MODULE_UNLOAD=y99-# CONFIG_IOSCHED_CFQ is not set1010-CONFIG_ARCH_AT91=y1111-CONFIG_MACH_KAFA=y1212-# CONFIG_ARM_THUMB is not set1313-CONFIG_PREEMPT=y1414-CONFIG_LEDS=y1515-CONFIG_LEDS_CPU=y1616-CONFIG_ZBOOT_ROM_TEXT=0x01717-CONFIG_ZBOOT_ROM_BSS=0x01818-CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20800000,10M root=/dev/ram0 rw"1919-CONFIG_FPE_NWFPE=y2020-CONFIG_BINFMT_MISC=y2121-CONFIG_NET=y2222-CONFIG_PACKET=y2323-CONFIG_UNIX=y2424-CONFIG_INET=y2525-# CONFIG_INET_DIAG is not set2626-# CONFIG_IPV6 is not set2727-CONFIG_MTD=y2828-CONFIG_MTD_PARTITIONS=y2929-CONFIG_MTD_CHAR=y3030-CONFIG_MTD_BLOCK_RO=y3131-CONFIG_NETDEVICES=y3232-CONFIG_PHYLIB=y3333-CONFIG_DAVICOM_PHY=y3434-CONFIG_NET_ETHERNET=y3535-CONFIG_ARM_AT91_ETHER=y3636-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set3737-# CONFIG_INPUT_KEYBOARD is not set3838-# CONFIG_INPUT_MOUSE is not set3939-# CONFIG_SERIO is not set4040-CONFIG_SERIAL_ATMEL=y4141-CONFIG_SERIAL_ATMEL_CONSOLE=y4242-CONFIG_LEGACY_PTY_COUNT=324343-CONFIG_I2C=y4444-CONFIG_I2C_CHARDEV=y4545-CONFIG_I2C_GPIO=y4646-# CONFIG_HWMON is not set4747-CONFIG_WATCHDOG=y4848-CONFIG_WATCHDOG_NOWAYOUT=y4949-CONFIG_AT91RM9200_WATCHDOG=y5050-# CONFIG_VGA_CONSOLE is not set5151-CONFIG_RTC_CLASS=y5252-# CONFIG_RTC_HCTOSYS is not set5353-CONFIG_RTC_DRV_AT91RM9200=y5454-CONFIG_EXT3_FS=y5555-# CONFIG_EXT3_FS_XATTR is not set5656-CONFIG_TMPFS=y5757-CONFIG_CRAMFS=y5858-CONFIG_NFS_FS=m5959-CONFIG_NFS_V3=y6060-CONFIG_CRYPTO_MD5=y6161-CONFIG_CRYPTO_DES=y
-127
arch/arm/configs/kb9202_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_SWAP is not set33-CONFIG_SYSVIPC=y44-CONFIG_POSIX_MQUEUE=y55-CONFIG_BSD_PROCESS_ACCT=y66-CONFIG_AUDIT=y77-CONFIG_IKCONFIG=y88-CONFIG_IKCONFIG_PROC=y99-CONFIG_BLK_DEV_INITRD=y1010-CONFIG_KALLSYMS_EXTRA_PASS=y1111-CONFIG_MODULES=y1212-CONFIG_MODULE_UNLOAD=y1313-CONFIG_MODVERSIONS=y1414-CONFIG_MODULE_SRCVERSION_ALL=y1515-# CONFIG_BLK_DEV_BSG is not set1616-# CONFIG_IOSCHED_DEADLINE is not set1717-CONFIG_ARCH_AT91=y1818-CONFIG_MACH_KB9200=y1919-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y2020-CONFIG_NO_HZ=y2121-CONFIG_HIGH_RES_TIMERS=y2222-CONFIG_PREEMPT=y2323-CONFIG_AEABI=y2424-CONFIG_ZBOOT_ROM_TEXT=0x100000002525-CONFIG_ZBOOT_ROM_BSS=0x200400002626-CONFIG_CMDLINE="noinitrd root=/dev/mtdblock0 rootfstype=jffs2 mem=64M"2727-CONFIG_KEXEC=y2828-CONFIG_FPE_NWFPE=y2929-CONFIG_BINFMT_MISC=y3030-CONFIG_NET=y3131-CONFIG_PACKET=y3232-CONFIG_UNIX=y3333-CONFIG_INET=y3434-CONFIG_IP_PNP=y3535-CONFIG_IP_PNP_DHCP=y3636-CONFIG_IP_PNP_BOOTP=y3737-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set3838-# CONFIG_INET_XFRM_MODE_TUNNEL is not set3939-# CONFIG_INET_XFRM_MODE_BEET is not set4040-# CONFIG_INET_LRO is not set4141-# CONFIG_INET_DIAG is not set4242-# CONFIG_IPV6 is not set4343-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"4444-# CONFIG_FIRMWARE_IN_KERNEL is not set4545-CONFIG_MTD=y4646-CONFIG_MTD_CONCAT=y4747-CONFIG_MTD_PARTITIONS=y4848-CONFIG_MTD_CMDLINE_PARTS=y4949-CONFIG_MTD_CHAR=y5050-CONFIG_MTD_BLOCK=y5151-CONFIG_MTD_CFI=y5252-CONFIG_MTD_CFI_INTELEXT=y5353-CONFIG_MTD_COMPLEX_MAPPINGS=y5454-CONFIG_MTD_PHYSMAP=y5555-CONFIG_MTD_NAND=y5656-CONFIG_MTD_NAND_ATMEL=y5757-CONFIG_MTD_UBI=y5858-CONFIG_MTD_UBI_GLUEBI=y5959-CONFIG_BLK_DEV_LOOP=y6060-CONFIG_BLK_DEV_RAM=y6161-CONFIG_BLK_DEV_RAM_SIZE=163846262-CONFIG_ATMEL_TCLIB=y6363-CONFIG_ATMEL_SSC=y6464-CONFIG_SCSI=y6565-CONFIG_BLK_DEV_SD=y6666-CONFIG_CHR_DEV_SG=y6767-CONFIG_SCSI_MULTI_LUN=y6868-CONFIG_SCSI_CONSTANTS=y6969-CONFIG_SCSI_LOGGING=y7070-CONFIG_SCSI_SPI_ATTRS=m7171-# CONFIG_SCSI_LOWLEVEL is not set7272-CONFIG_NETDEVICES=y7373-CONFIG_NET_ETHERNET=y7474-CONFIG_ARM_AT91_ETHER=y7575-# CONFIG_NETDEV_1000 is not set7676-# CONFIG_NETDEV_10000 is not set7777-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set7878-# CONFIG_INPUT_KEYBOARD is not set7979-# CONFIG_INPUT_MOUSE is not set8080-# CONFIG_SERIO is not set8181-CONFIG_SERIAL_ATMEL=y8282-CONFIG_SERIAL_ATMEL_CONSOLE=y8383-# CONFIG_LEGACY_PTYS is not set8484-# CONFIG_HW_RANDOM is not set8585-# CONFIG_HWMON is not set8686-CONFIG_WATCHDOG=y8787-CONFIG_AT91RM9200_WATCHDOG=y8888-CONFIG_FB=y8989-CONFIG_FB_MODE_HELPERS=y9090-CONFIG_FB_TILEBLITTING=y9191-CONFIG_BACKLIGHT_LCD_SUPPORT=y9292-# CONFIG_LCD_CLASS_DEVICE is not set9393-CONFIG_BACKLIGHT_CLASS_DEVICE=y9494-# CONFIG_BACKLIGHT_GENERIC is not set9595-# CONFIG_VGA_CONSOLE is not set9696-CONFIG_FRAMEBUFFER_CONSOLE=y9797-CONFIG_FONTS=y9898-CONFIG_FONT_MINI_4x6=y9999-# CONFIG_HID_SUPPORT is not set100100-CONFIG_USB=y101101-CONFIG_USB_DEVICEFS=y102102-CONFIG_USB_OHCI_HCD=y103103-CONFIG_USB_STORAGE=y104104-CONFIG_USB_LIBUSUAL=y105105-CONFIG_MMC=y106106-CONFIG_MMC_AT91=m107107-CONFIG_RTC_CLASS=y108108-CONFIG_RTC_DRV_AT91RM9200=y109109-CONFIG_EXT2_FS=y110110-CONFIG_EXT3_FS=y111111-# CONFIG_DNOTIFY is not set112112-CONFIG_INOTIFY=y113113-CONFIG_VFAT_FS=y114114-CONFIG_TMPFS=y115115-CONFIG_CONFIGFS_FS=y116116-CONFIG_JFFS2_FS=y117117-CONFIG_NFS_FS=y118118-CONFIG_NFS_V3=y119119-CONFIG_ROOT_NFS=y120120-CONFIG_NLS_CODEPAGE_437=y121121-CONFIG_NLS_UTF8=y122122-CONFIG_MAGIC_SYSRQ=y123123-CONFIG_DEBUG_FS=y124124-CONFIG_DEBUG_KERNEL=y125125-# CONFIG_SCHED_DEBUG is not set126126-# CONFIG_DEBUG_PREEMPT is not set127127-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
-80
arch/arm/configs/onearm_defconfig
···11-CONFIG_EXPERIMENTAL=y22-# CONFIG_SWAP is not set33-CONFIG_SYSVIPC=y44-CONFIG_LOG_BUF_SHIFT=1455-CONFIG_BLK_DEV_INITRD=y66-CONFIG_EMBEDDED=y77-CONFIG_SLAB=y88-CONFIG_MODULES=y99-CONFIG_MODULE_UNLOAD=y1010-# CONFIG_IOSCHED_DEADLINE is not set1111-# CONFIG_IOSCHED_CFQ is not set1212-CONFIG_ARCH_AT91=y1313-CONFIG_MACH_ONEARM=y1414-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y1515-# CONFIG_ARM_THUMB is not set1616-CONFIG_PCCARD=y1717-CONFIG_AT91_CF=y1818-CONFIG_LEDS=y1919-CONFIG_ZBOOT_ROM_TEXT=0x02020-CONFIG_ZBOOT_ROM_BSS=0x02121-CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp mem=64M"2222-CONFIG_FPE_NWFPE=y2323-CONFIG_NET=y2424-CONFIG_PACKET=y2525-CONFIG_UNIX=y2626-CONFIG_INET=y2727-CONFIG_IP_PNP=y2828-CONFIG_IP_PNP_BOOTP=y2929-CONFIG_IPV6=y3030-# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set3131-# CONFIG_INET6_XFRM_MODE_TUNNEL is not set3232-# CONFIG_INET6_XFRM_MODE_BEET is not set3333-# CONFIG_IPV6_SIT is not set3434-CONFIG_MTD=y3535-CONFIG_MTD_PARTITIONS=y3636-CONFIG_MTD_CMDLINE_PARTS=y3737-CONFIG_MTD_CHAR=y3838-CONFIG_MTD_BLOCK=y3939-CONFIG_MTD_CFI=y4040-CONFIG_MTD_JEDECPROBE=y4141-CONFIG_MTD_CFI_AMDSTD=y4242-CONFIG_MTD_PHYSMAP=y4343-CONFIG_BLK_DEV_NBD=y4444-CONFIG_BLK_DEV_RAM=y4545-CONFIG_BLK_DEV_RAM_SIZE=81924646-CONFIG_NETDEVICES=y4747-CONFIG_NET_ETHERNET=y4848-CONFIG_ARM_AT91_ETHER=y4949-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set5050-# CONFIG_INPUT_KEYBOARD is not set5151-# CONFIG_INPUT_MOUSE is not set5252-# CONFIG_SERIO is not set5353-# CONFIG_VT is not set5454-CONFIG_SERIAL_ATMEL=y5555-CONFIG_SERIAL_ATMEL_CONSOLE=y5656-# CONFIG_HW_RANDOM is not set5757-CONFIG_I2C=y5858-CONFIG_I2C_CHARDEV=y5959-CONFIG_WATCHDOG=y6060-CONFIG_WATCHDOG_NOWAYOUT=y6161-CONFIG_AT91RM9200_WATCHDOG=y6262-# CONFIG_USB_HID is not set6363-CONFIG_USB=y6464-CONFIG_USB_DEBUG=y6565-CONFIG_USB_DEVICEFS=y6666-CONFIG_USB_MON=y6767-CONFIG_USB_OHCI_HCD=y6868-CONFIG_USB_GADGET=y6969-CONFIG_MMC=y7070-CONFIG_EXT2_FS=y7171-CONFIG_INOTIFY=y7272-CONFIG_TMPFS=y7373-CONFIG_CRAMFS=y7474-CONFIG_NFS_FS=y7575-CONFIG_NFS_V3=y7676-CONFIG_NFS_V3_ACL=y7777-CONFIG_ROOT_NFS=y7878-CONFIG_DEBUG_KERNEL=y7979-CONFIG_DEBUG_USER=y8080-CONFIG_DEBUG_LL=y
-242
arch/arm/configs/picotux200_defconfig
···11-CONFIG_EXPERIMENTAL=y22-CONFIG_SYSVIPC=y33-CONFIG_IKCONFIG=m44-CONFIG_IKCONFIG_PROC=y55-CONFIG_LOG_BUF_SHIFT=1466-CONFIG_EMBEDDED=y77-# CONFIG_KALLSYMS is not set88-CONFIG_SLAB=y99-CONFIG_MODULES=y1010-CONFIG_MODULE_UNLOAD=y1111-# CONFIG_IOSCHED_DEADLINE is not set1212-# CONFIG_IOSCHED_CFQ is not set1313-CONFIG_ARCH_AT91=y1414-CONFIG_MACH_PICOTUX2XX=y1515-CONFIG_AT91_PROGRAMMABLE_CLOCKS=y1616-CONFIG_AEABI=y1717-CONFIG_ZBOOT_ROM_TEXT=0x01818-CONFIG_ZBOOT_ROM_BSS=0x01919-CONFIG_KEXEC=y2020-CONFIG_FPE_NWFPE=y2121-CONFIG_BINFMT_MISC=m2222-CONFIG_NET=y2323-CONFIG_PACKET=m2424-CONFIG_UNIX=y2525-CONFIG_XFRM_USER=m2626-CONFIG_INET=y2727-CONFIG_IP_PNP=y2828-CONFIG_IP_PNP_BOOTP=y2929-CONFIG_NET_IPIP=m3030-CONFIG_NET_IPGRE=m3131-CONFIG_INET_AH=m3232-CONFIG_INET_ESP=m3333-CONFIG_INET_IPCOMP=m3434-CONFIG_INET_XFRM_MODE_TRANSPORT=m3535-CONFIG_INET_XFRM_MODE_TUNNEL=m3636-CONFIG_INET_XFRM_MODE_BEET=m3737-CONFIG_INET_DIAG=m3838-CONFIG_IPV6_PRIVACY=y3939-CONFIG_IPV6_ROUTER_PREF=y4040-CONFIG_IPV6_ROUTE_INFO=y4141-CONFIG_INET6_AH=m4242-CONFIG_INET6_ESP=m4343-CONFIG_INET6_IPCOMP=m4444-CONFIG_IPV6_MIP6=m4545-CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m4646-CONFIG_IPV6_TUNNEL=m4747-CONFIG_BRIDGE=m4848-CONFIG_VLAN_8021Q=m4949-CONFIG_BT=m5050-CONFIG_BT_L2CAP=m5151-CONFIG_BT_SCO=m5252-CONFIG_BT_RFCOMM=m5353-CONFIG_BT_RFCOMM_TTY=y5454-CONFIG_BT_BNEP=m5555-CONFIG_BT_BNEP_MC_FILTER=y5656-CONFIG_BT_BNEP_PROTO_FILTER=y5757-CONFIG_BT_HIDP=m5858-CONFIG_FW_LOADER=m5959-CONFIG_MTD=y6060-CONFIG_MTD_PARTITIONS=y6161-CONFIG_MTD_CMDLINE_PARTS=y6262-CONFIG_MTD_CHAR=y6363-CONFIG_MTD_BLOCK=y6464-CONFIG_MTD_CFI=y6565-CONFIG_MTD_CFI_AMDSTD=y6666-CONFIG_MTD_PHYSMAP=y6767-CONFIG_BLK_DEV_LOOP=m6868-CONFIG_EEPROM_LEGACY=m6969-CONFIG_SCSI=m7070-CONFIG_BLK_DEV_SD=m7171-CONFIG_BLK_DEV_SR=m7272-CONFIG_BLK_DEV_SR_VENDOR=y7373-CONFIG_CHR_DEV_SG=m7474-CONFIG_NETDEVICES=y7575-CONFIG_TUN=m7676-CONFIG_NET_ETHERNET=y7777-CONFIG_ARM_AT91_ETHER=y7878-CONFIG_USB_CATC=m7979-CONFIG_USB_KAWETH=m8080-CONFIG_USB_PEGASUS=m8181-CONFIG_USB_RTL8150=m8282-CONFIG_USB_USBNET=m8383-CONFIG_USB_NET_DM9601=m8484-CONFIG_USB_NET_GL620A=m8585-CONFIG_USB_NET_PLUSB=m8686-CONFIG_USB_NET_MCS7830=m8787-CONFIG_USB_NET_RNDIS_HOST=m8888-CONFIG_USB_ALI_M5632=y8989-CONFIG_USB_AN2720=y9090-CONFIG_USB_EPSON2888=y9191-CONFIG_USB_KC2190=y9292-CONFIG_PPP=m9393-CONFIG_PPP_FILTER=y9494-CONFIG_PPP_ASYNC=m9595-CONFIG_PPP_DEFLATE=m9696-CONFIG_PPP_BSDCOMP=m9797-CONFIG_PPP_MPPE=m9898-CONFIG_PPPOE=m9999-CONFIG_SLIP=m100100-CONFIG_SLIP_COMPRESSED=y101101-CONFIG_SLIP_SMART=y102102-CONFIG_SLIP_MODE_SLIP6=y103103-# CONFIG_INPUT_MOUSEDEV is not set104104-# CONFIG_INPUT_KEYBOARD is not set105105-# CONFIG_INPUT_MOUSE is not set106106-# CONFIG_SERIO is not set107107-# CONFIG_VT is not set108108-CONFIG_SERIAL_ATMEL=y109109-CONFIG_SERIAL_ATMEL_CONSOLE=y110110-# CONFIG_LEGACY_PTYS is not set111111-CONFIG_I2C=m112112-CONFIG_I2C_CHARDEV=m113113-CONFIG_I2C_GPIO=m114114-CONFIG_HWMON=m115115-CONFIG_SENSORS_ADM1021=m116116-CONFIG_SENSORS_ADM1025=m117117-CONFIG_SENSORS_ADM1026=m118118-CONFIG_SENSORS_ADM1029=m119119-CONFIG_SENSORS_ADM1031=m120120-CONFIG_SENSORS_ADM9240=m121121-CONFIG_SENSORS_DS1621=m122122-CONFIG_SENSORS_GL518SM=m123123-CONFIG_SENSORS_GL520SM=m124124-CONFIG_SENSORS_IT87=m125125-CONFIG_SENSORS_LM63=m126126-CONFIG_SENSORS_LM75=m127127-CONFIG_SENSORS_LM77=m128128-CONFIG_SENSORS_LM78=m129129-CONFIG_SENSORS_LM80=m130130-CONFIG_SENSORS_LM83=m131131-CONFIG_SENSORS_LM85=m132132-CONFIG_SENSORS_LM87=m133133-CONFIG_SENSORS_LM90=m134134-CONFIG_SENSORS_LM92=m135135-CONFIG_SENSORS_MAX1619=m136136-CONFIG_SENSORS_PCF8591=m137137-CONFIG_SENSORS_SMSC47B397=m138138-CONFIG_SENSORS_W83781D=m139139-CONFIG_SENSORS_W83791D=m140140-CONFIG_SENSORS_W83792D=m141141-CONFIG_SENSORS_W83793=m142142-CONFIG_SENSORS_W83L785TS=m143143-CONFIG_WATCHDOG=y144144-CONFIG_WATCHDOG_NOWAYOUT=y145145-CONFIG_AT91RM9200_WATCHDOG=m146146-CONFIG_HID=m147147-CONFIG_USB=m148148-CONFIG_USB_DEVICEFS=y149149-CONFIG_USB_OHCI_HCD=m150150-CONFIG_USB_ACM=m151151-CONFIG_USB_PRINTER=m152152-CONFIG_USB_STORAGE=m153153-CONFIG_USB_SERIAL=m154154-CONFIG_USB_SERIAL_GENERIC=y155155-CONFIG_USB_SERIAL_PL2303=m156156-CONFIG_MMC=m157157-CONFIG_MMC_AT91=m158158-CONFIG_RTC_CLASS=m159159-CONFIG_RTC_DRV_AT91RM9200=m160160-CONFIG_EXT2_FS=m161161-CONFIG_EXT3_FS=m162162-# CONFIG_EXT3_FS_XATTR is not set163163-CONFIG_INOTIFY=y164164-CONFIG_ISO9660_FS=m165165-CONFIG_JOLIET=y166166-CONFIG_UDF_FS=m167167-CONFIG_MSDOS_FS=m168168-CONFIG_VFAT_FS=m169169-CONFIG_NTFS_FS=m170170-CONFIG_TMPFS=y171171-CONFIG_JFFS2_FS=y172172-CONFIG_JFFS2_SUMMARY=y173173-CONFIG_JFFS2_COMPRESSION_OPTIONS=y174174-CONFIG_NFS_FS=m175175-CONFIG_SMB_FS=m176176-CONFIG_CIFS=m177177-CONFIG_PARTITION_ADVANCED=y178178-CONFIG_AMIGA_PARTITION=y179179-CONFIG_NLS_DEFAULT="utf-8"180180-CONFIG_NLS_CODEPAGE_437=m181181-CONFIG_NLS_CODEPAGE_737=m182182-CONFIG_NLS_CODEPAGE_775=m183183-CONFIG_NLS_CODEPAGE_850=m184184-CONFIG_NLS_CODEPAGE_852=m185185-CONFIG_NLS_CODEPAGE_855=m186186-CONFIG_NLS_CODEPAGE_857=m187187-CONFIG_NLS_CODEPAGE_860=m188188-CONFIG_NLS_CODEPAGE_861=m189189-CONFIG_NLS_CODEPAGE_862=m190190-CONFIG_NLS_CODEPAGE_863=m191191-CONFIG_NLS_CODEPAGE_864=m192192-CONFIG_NLS_CODEPAGE_865=m193193-CONFIG_NLS_CODEPAGE_866=m194194-CONFIG_NLS_CODEPAGE_869=m195195-CONFIG_NLS_CODEPAGE_936=m196196-CONFIG_NLS_CODEPAGE_950=m197197-CONFIG_NLS_CODEPAGE_932=m198198-CONFIG_NLS_CODEPAGE_949=m199199-CONFIG_NLS_CODEPAGE_874=m200200-CONFIG_NLS_ISO8859_8=m201201-CONFIG_NLS_CODEPAGE_1250=m202202-CONFIG_NLS_CODEPAGE_1251=m203203-CONFIG_NLS_ASCII=m204204-CONFIG_NLS_ISO8859_1=m205205-CONFIG_NLS_ISO8859_2=m206206-CONFIG_NLS_ISO8859_3=m207207-CONFIG_NLS_ISO8859_4=m208208-CONFIG_NLS_ISO8859_5=m209209-CONFIG_NLS_ISO8859_6=m210210-CONFIG_NLS_ISO8859_7=m211211-CONFIG_NLS_ISO8859_9=m212212-CONFIG_NLS_ISO8859_13=m213213-CONFIG_NLS_ISO8859_14=m214214-CONFIG_NLS_ISO8859_15=m215215-CONFIG_NLS_KOI8_R=m216216-CONFIG_NLS_KOI8_U=m217217-CONFIG_NLS_UTF8=m218218-CONFIG_DEBUG_KERNEL=y219219-# CONFIG_DEBUG_BUGVERBOSE is not set220220-CONFIG_DEBUG_LL=y221221-CONFIG_CRYPTO_NULL=m222222-CONFIG_CRYPTO_TEST=m223223-CONFIG_CRYPTO_LRW=m224224-CONFIG_CRYPTO_PCBC=m225225-CONFIG_CRYPTO_XCBC=m226226-CONFIG_CRYPTO_MD4=m227227-CONFIG_CRYPTO_MICHAEL_MIC=m228228-CONFIG_CRYPTO_SHA256=m229229-CONFIG_CRYPTO_SHA512=m230230-CONFIG_CRYPTO_TGR192=m231231-CONFIG_CRYPTO_WP512=m232232-CONFIG_CRYPTO_ANUBIS=m233233-CONFIG_CRYPTO_BLOWFISH=m234234-CONFIG_CRYPTO_CAMELLIA=m235235-CONFIG_CRYPTO_CAST5=m236236-CONFIG_CRYPTO_CAST6=m237237-CONFIG_CRYPTO_FCRYPT=m238238-CONFIG_CRYPTO_KHAZAD=m239239-CONFIG_CRYPTO_SERPENT=m240240-CONFIG_CRYPTO_TEA=m241241-CONFIG_CRYPTO_TWOFISH=m242242-CONFIG_LIBCRC32C=m
-137
arch/arm/configs/yl9200_defconfig
···11-# CONFIG_SWAP is not set22-CONFIG_SYSVIPC=y33-CONFIG_LOG_BUF_SHIFT=1444-CONFIG_BLK_DEV_INITRD=y55-# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set66-CONFIG_MODULES=y77-CONFIG_MODULE_UNLOAD=y88-# CONFIG_IOSCHED_DEADLINE is not set99-# CONFIG_IOSCHED_CFQ is not set1010-CONFIG_ARCH_AT91=y1111-CONFIG_ARCH_AT91RM9200DK=y1212-CONFIG_MACH_YL9200=y1313-# CONFIG_ARM_THUMB is not set1414-CONFIG_ZBOOT_ROM_TEXT=0x01515-CONFIG_ZBOOT_ROM_BSS=0x01616-CONFIG_CMDLINE="mem=32M console=ttyS0,115200 initrd=0x20410000,3145728 root=/dev/ram0 rw"1717-CONFIG_FPE_NWFPE=y1818-CONFIG_NET=y1919-CONFIG_PACKET=y2020-CONFIG_UNIX=y2121-CONFIG_INET=y2222-CONFIG_IP_PNP=y2323-CONFIG_IP_PNP_DHCP=y2424-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set2525-# CONFIG_INET_XFRM_MODE_TUNNEL is not set2626-# CONFIG_INET_XFRM_MODE_BEET is not set2727-# CONFIG_INET_LRO is not set2828-# CONFIG_INET_DIAG is not set2929-# CONFIG_IPV6 is not set3030-CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"3131-CONFIG_MTD=y3232-CONFIG_MTD_CONCAT=y3333-CONFIG_MTD_PARTITIONS=y3434-CONFIG_MTD_CMDLINE_PARTS=y3535-CONFIG_MTD_CHAR=y3636-CONFIG_MTD_BLOCK=y3737-CONFIG_MTD_CFI=y3838-CONFIG_MTD_JEDECPROBE=y3939-CONFIG_MTD_CFI_INTELEXT=y4040-CONFIG_MTD_COMPLEX_MAPPINGS=y4141-CONFIG_MTD_PHYSMAP=y4242-CONFIG_MTD_PLATRAM=y4343-CONFIG_MTD_NAND=y4444-CONFIG_MTD_NAND_ATMEL=y4545-CONFIG_MTD_NAND_PLATFORM=y4646-CONFIG_BLK_DEV_LOOP=y4747-CONFIG_BLK_DEV_RAM=y4848-CONFIG_BLK_DEV_RAM_COUNT=34949-CONFIG_BLK_DEV_RAM_SIZE=81925050-# CONFIG_MISC_DEVICES is not set5151-CONFIG_BLK_DEV_SD=y5252-CONFIG_ATA=y5353-CONFIG_NETDEVICES=y5454-CONFIG_PHYLIB=y5555-CONFIG_DAVICOM_PHY=y5656-CONFIG_NET_ETHERNET=y5757-CONFIG_ARM_AT91_ETHER=y5858-# CONFIG_NETDEV_1000 is not set5959-# CONFIG_NETDEV_10000 is not set6060-# CONFIG_INPUT_MOUSEDEV_PSAUX is not set6161-CONFIG_INPUT_MOUSEDEV_SCREEN_X=6406262-CONFIG_INPUT_MOUSEDEV_SCREEN_Y=4806363-CONFIG_INPUT_EVDEV=y6464-# CONFIG_KEYBOARD_ATKBD is not set6565-CONFIG_KEYBOARD_GPIO=y6666-CONFIG_INPUT_TOUCHSCREEN=y6767-CONFIG_TOUCHSCREEN_ADS7846=y6868-# CONFIG_SERIO_SERPORT is not set6969-CONFIG_SERIAL_ATMEL=y7070-CONFIG_SERIAL_ATMEL_CONSOLE=y7171-# CONFIG_HW_RANDOM is not set7272-CONFIG_I2C=y7373-CONFIG_SPI=y7474-CONFIG_SPI_DEBUG=y7575-CONFIG_SPI_ATMEL=y7676-CONFIG_FB=y7777-CONFIG_BACKLIGHT_LCD_SUPPORT=y7878-CONFIG_LCD_CLASS_DEVICE=y7979-CONFIG_BACKLIGHT_CLASS_DEVICE=y8080-CONFIG_DISPLAY_SUPPORT=y8181-# CONFIG_VGA_CONSOLE is not set8282-CONFIG_LOGO=y8383-# CONFIG_LOGO_LINUX_MONO is not set8484-# CONFIG_LOGO_LINUX_VGA16 is not set8585-CONFIG_USB=y8686-CONFIG_USB_DEBUG=y8787-CONFIG_USB_DEVICEFS=y8888-# CONFIG_USB_DEVICE_CLASS is not set8989-CONFIG_USB_MON=y9090-CONFIG_USB_OHCI_HCD=y9191-CONFIG_USB_STORAGE=y9292-CONFIG_USB_GADGET=y9393-CONFIG_USB_GADGET_M66592=y9494-CONFIG_USB_FILE_STORAGE=m9595-CONFIG_MMC=y9696-CONFIG_MMC_DEBUG=y9797-# CONFIG_MMC_BLOCK_BOUNCE is not set9898-CONFIG_MMC_AT91=m9999-CONFIG_NEW_LEDS=y100100-CONFIG_LEDS_CLASS=y101101-CONFIG_LEDS_GPIO=y102102-CONFIG_LEDS_TRIGGERS=y103103-CONFIG_LEDS_TRIGGER_TIMER=y104104-CONFIG_LEDS_TRIGGER_HEARTBEAT=y105105-CONFIG_RTC_CLASS=y106106-CONFIG_RTC_DRV_AT91RM9200=y107107-CONFIG_EXT2_FS=y108108-CONFIG_EXT2_FS_XATTR=y109109-CONFIG_EXT3_FS=y110110-CONFIG_REISERFS_FS=y111111-CONFIG_INOTIFY=y112112-CONFIG_ISO9660_FS=y113113-CONFIG_JOLIET=y114114-CONFIG_ZISOFS=y115115-CONFIG_UDF_FS=y116116-CONFIG_MSDOS_FS=y117117-CONFIG_VFAT_FS=y118118-CONFIG_TMPFS=y119119-CONFIG_JFFS2_FS=y120120-CONFIG_JFFS2_FS_DEBUG=1121121-CONFIG_JFFS2_COMPRESSION_OPTIONS=y122122-CONFIG_JFFS2_RUBIN=y123123-CONFIG_CRAMFS=y124124-CONFIG_PARTITION_ADVANCED=y125125-CONFIG_MAC_PARTITION=y126126-CONFIG_NLS_CODEPAGE_437=y127127-CONFIG_NLS_ISO8859_1=y128128-# CONFIG_ENABLE_MUST_CHECK is not set129129-CONFIG_DEBUG_FS=y130130-CONFIG_DEBUG_KERNEL=y131131-CONFIG_SLUB_DEBUG_ON=y132132-CONFIG_DEBUG_KOBJECT=y133133-CONFIG_DEBUG_INFO=y134134-CONFIG_DEBUG_LIST=y135135-CONFIG_DEBUG_USER=y136136-CONFIG_DEBUG_ERRORS=y137137-CONFIG_DEBUG_LL=y
+1-1
arch/arm/kernel/entry-armv.S
···911911 * A special ghost syscall is used for that (see traps.c).912912 */913913 stmfd sp!, {r7, lr}914914- ldr r7, =1f @ it's 20 bits914914+ ldr r7, 1f @ it's 20 bits915915 swi __ARM_NR_cmpxchg916916 ldmfd sp!, {r7, pc}9179171: .word __ARM_NR_cmpxchg
···137137extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins);138138extern void __init at91_set_serial_console(unsigned portnr);139139140140-struct at91_uart_config {141141- unsigned short console_tty; /* tty number of serial console */142142- unsigned short nr_tty; /* number of serial tty's */143143- short tty_map[]; /* map UART to tty number */144144-};145140extern struct platform_device *atmel_default_console_device;146146-extern void __init __deprecated at91_init_serial(struct at91_uart_config *config);147141148142struct atmel_uart_data {149143 short use_dma_tx; /* use transmit DMA? */
+1-1
arch/arm/mach-cns3xxx/pcie.c
···369369{370370 int i;371371372372- hook_fault_code(16 + 6, cns3xxx_pcie_abort_handler, SIGBUS,372372+ hook_fault_code(16 + 6, cns3xxx_pcie_abort_handler, SIGBUS, 0,373373 "imprecise external abort");374374375375 for (i = 0; i < ARRAY_SIZE(cns3xxx_pcie); i++) {
···11+/* Access to user system call parameters and results22+ *33+ * See asm-generic/syscall.h for function descriptions.44+ *55+ * Copyright (C) 2010 Red Hat, Inc. All Rights Reserved.66+ * Written by David Howells (dhowells@redhat.com)77+ *88+ * This program is free software; you can redistribute it and/or99+ * modify it under the terms of the GNU General Public Licence1010+ * as published by the Free Software Foundation; either version1111+ * 2 of the Licence, or (at your option) any later version.1212+ */1313+1414+#ifndef _ASM_SYSCALL_H1515+#define _ASM_SYSCALL_H1616+1717+#include <linux/sched.h>1818+#include <linux/err.h>1919+2020+extern const unsigned long sys_call_table[];2121+2222+static inline int syscall_get_nr(struct task_struct *task, struct pt_regs *regs)2323+{2424+ return regs->orig_d0;2525+}2626+2727+static inline void syscall_rollback(struct task_struct *task,2828+ struct pt_regs *regs)2929+{3030+ regs->d0 = regs->orig_d0;3131+}3232+3333+static inline long syscall_get_error(struct task_struct *task,3434+ struct pt_regs *regs)3535+{3636+ unsigned long error = regs->d0;3737+ return IS_ERR_VALUE(error) ? error : 0;3838+}3939+4040+static inline long syscall_get_return_value(struct task_struct *task,4141+ struct pt_regs *regs)4242+{4343+ return regs->d0;4444+}4545+4646+static inline void syscall_set_return_value(struct task_struct *task,4747+ struct pt_regs *regs,4848+ int error, long val)4949+{5050+ regs->d0 = (long) error ?: val;5151+}5252+5353+static inline void syscall_get_arguments(struct task_struct *task,5454+ struct pt_regs *regs,5555+ unsigned int i, unsigned int n,5656+ unsigned long *args)5757+{5858+ switch (i) {5959+ case 0:6060+ if (!n--) break;6161+ *args++ = regs->a0;6262+ case 1:6363+ if (!n--) break;6464+ *args++ = regs->d1;6565+ case 2:6666+ if (!n--) break;6767+ *args++ = regs->a3;6868+ case 3:6969+ if (!n--) break;7070+ *args++ = regs->a2;7171+ case 4:7272+ if (!n--) break;7373+ *args++ = regs->d3;7474+ case 5:7575+ if (!n--) break;7676+ *args++ = regs->d2;7777+ case 6:7878+ if (!n--) break;7979+ default:8080+ BUG();8181+ break;8282+ }8383+}8484+8585+static inline void syscall_set_arguments(struct task_struct *task,8686+ struct pt_regs *regs,8787+ unsigned int i, unsigned int n,8888+ const unsigned long *args)8989+{9090+ switch (i) {9191+ case 0:9292+ if (!n--) break;9393+ regs->a0 = *args++;9494+ case 1:9595+ if (!n--) break;9696+ regs->d1 = *args++;9797+ case 2:9898+ if (!n--) break;9999+ regs->a3 = *args++;100100+ case 3:101101+ if (!n--) break;102102+ regs->a2 = *args++;103103+ case 4:104104+ if (!n--) break;105105+ regs->d3 = *args++;106106+ case 5:107107+ if (!n--) break;108108+ regs->d2 = *args++;109109+ case 6:110110+ if (!n--) break;111111+ default:112112+ BUG();113113+ break;114114+ }115115+}116116+117117+#endif /* _ASM_SYSCALL_H */
+2-5
arch/parisc/kernel/irq.c
···7575 smp_send_all_nop();7676}77777878-void no_ack_irq(unsigned int irq) { }7979-void no_end_irq(unsigned int irq) { }8080-8178void cpu_ack_irq(unsigned int irq)8279{8380 unsigned long mask = EIEM_MASK(irq);···238241239242 /* for iosapic interrupts */240243 if (type) {241241- set_irq_chip_and_handler(irq, type, handle_level_irq);244244+ set_irq_chip_and_handler(irq, type, handle_percpu_irq);242245 set_irq_chip_data(irq, data);243246 cpu_unmask_irq(irq);244247 }···389392 int i;390393 for (i = CPU_IRQ_BASE; i <= CPU_IRQ_MAX; i++) {391394 set_irq_chip_and_handler(i, &cpu_interrupt_type,392392- handle_level_irq);395395+ handle_percpu_irq);393396 }394397395398 set_irq_handler(TIMER_IRQ, handle_percpu_irq);
···6868 return 0;6969}70707171-void __init xen_unplug_emulated_devices(void)7171+void xen_unplug_emulated_devices(void)7272{7373 int r;7474
+14-27
arch/x86/xen/setup.c
···181181 for (i = 0; i < memmap.nr_entries; i++) {182182 unsigned long long end = map[i].addr + map[i].size;183183184184- if (map[i].type == E820_RAM) {185185- if (map[i].addr < mem_end && end > mem_end) {186186- /* Truncate region to max_mem. */187187- u64 delta = end - mem_end;184184+ if (map[i].type == E820_RAM && end > mem_end) {185185+ /* RAM off the end - may be partially included */186186+ u64 delta = min(map[i].size, end - mem_end);188187189189- map[i].size -= delta;190190- extra_pages += PFN_DOWN(delta);188188+ map[i].size -= delta;189189+ end -= delta;191190192192- end = mem_end;193193- }191191+ extra_pages += PFN_DOWN(delta);194192 }195193196196- if (end > xen_extra_mem_start)194194+ if (map[i].size > 0 && end > xen_extra_mem_start)197195 xen_extra_mem_start = end;198196199199- /* If region is non-RAM or below mem_end, add what remains */200200- if ((map[i].type != E820_RAM || map[i].addr < mem_end) &&201201- map[i].size > 0)197197+ /* Add region if any remains */198198+ if (map[i].size > 0)202199 e820_add_region(map[i].addr, map[i].size, map[i].type);203200 }204201···247250 xen_add_extra_mem(extra_pages);248251249252 return "Xen";250250-}251251-252252-static void xen_idle(void)253253-{254254- local_irq_disable();255255-256256- if (need_resched())257257- local_irq_enable();258258- else {259259- current_thread_info()->status &= ~TS_POLLING;260260- smp_mb__after_clear_bit();261261- safe_halt();262262- current_thread_info()->status |= TS_POLLING;263263- }264253}265254266255/*···345362 MAX_GUEST_CMDLINE > COMMAND_LINE_SIZE ?346363 COMMAND_LINE_SIZE : MAX_GUEST_CMDLINE);347364348348- pm_idle = xen_idle;365365+ /* Set up idle, making sure it calls safe_halt() pvop */366366+#ifdef CONFIG_X86_32367367+ boot_cpu_data.hlt_works_ok = 1;368368+#endif369369+ pm_idle = default_idle;349370350371 fiddle_vdso();351372}
+1
arch/x86/xen/suspend.c
···3131 int cpu;3232 xen_hvm_init_shared_info();3333 xen_callback_vector();3434+ xen_unplug_emulated_devices();3435 if (xen_feature(XENFEAT_hvm_safe_pvclock)) {3536 for_each_online_cpu(cpu) {3637 xen_setup_runstate_info(cpu);
···8686 * It is used to provide exclusive accessing for ERST Error Log8787 * Address Range too.8888 */8989-static DEFINE_SPINLOCK(erst_lock);8989+static DEFINE_RAW_SPINLOCK(erst_lock);90909191static inline int erst_errno(int command_status)9292{···421421 if (erst_disable)422422 return -ENODEV;423423424424- spin_lock_irqsave(&erst_lock, flags);424424+ raw_spin_lock_irqsave(&erst_lock, flags);425425 count = __erst_get_record_count();426426- spin_unlock_irqrestore(&erst_lock, flags);426426+ raw_spin_unlock_irqrestore(&erst_lock, flags);427427428428 return count;429429}···456456 if (erst_disable)457457 return -ENODEV;458458459459- spin_lock_irqsave(&erst_lock, flags);459459+ raw_spin_lock_irqsave(&erst_lock, flags);460460 rc = __erst_get_next_record_id(record_id);461461- spin_unlock_irqrestore(&erst_lock, flags);461461+ raw_spin_unlock_irqrestore(&erst_lock, flags);462462463463 return rc;464464}···624624 return -EINVAL;625625626626 if (erst_erange.attr & ERST_RANGE_NVRAM) {627627- if (!spin_trylock_irqsave(&erst_lock, flags))627627+ if (!raw_spin_trylock_irqsave(&erst_lock, flags))628628 return -EBUSY;629629 rc = __erst_write_to_nvram(record);630630- spin_unlock_irqrestore(&erst_lock, flags);630630+ raw_spin_unlock_irqrestore(&erst_lock, flags);631631 return rc;632632 }633633634634 if (record->record_length > erst_erange.size)635635 return -EINVAL;636636637637- if (!spin_trylock_irqsave(&erst_lock, flags))637637+ if (!raw_spin_trylock_irqsave(&erst_lock, flags))638638 return -EBUSY;639639 memcpy(erst_erange.vaddr, record, record->record_length);640640 rcd_erange = erst_erange.vaddr;···642642 memcpy(&rcd_erange->persistence_information, "ER", 2);643643644644 rc = __erst_write_to_storage(0);645645- spin_unlock_irqrestore(&erst_lock, flags);645645+ raw_spin_unlock_irqrestore(&erst_lock, flags);646646647647 return rc;648648}···696696 if (erst_disable)697697 return -ENODEV;698698699699- spin_lock_irqsave(&erst_lock, flags);699699+ raw_spin_lock_irqsave(&erst_lock, flags);700700 len = __erst_read(record_id, record, buflen);701701- spin_unlock_irqrestore(&erst_lock, flags);701701+ raw_spin_unlock_irqrestore(&erst_lock, flags);702702 return len;703703}704704EXPORT_SYMBOL_GPL(erst_read);···719719 if (erst_disable)720720 return -ENODEV;721721722722- spin_lock_irqsave(&erst_lock, flags);722722+ raw_spin_lock_irqsave(&erst_lock, flags);723723 rc = __erst_get_next_record_id(&record_id);724724 if (rc) {725725- spin_unlock_irqrestore(&erst_lock, flags);725725+ raw_spin_unlock_irqrestore(&erst_lock, flags);726726 return rc;727727 }728728 /* no more record */729729 if (record_id == APEI_ERST_INVALID_RECORD_ID) {730730- spin_unlock_irqrestore(&erst_lock, flags);730730+ raw_spin_unlock_irqrestore(&erst_lock, flags);731731 return 0;732732 }733733734734 len = __erst_read(record_id, record, buflen);735735- spin_unlock_irqrestore(&erst_lock, flags);735735+ raw_spin_unlock_irqrestore(&erst_lock, flags);736736737737 return len;738738}···746746 if (erst_disable)747747 return -ENODEV;748748749749- spin_lock_irqsave(&erst_lock, flags);749749+ raw_spin_lock_irqsave(&erst_lock, flags);750750 if (erst_erange.attr & ERST_RANGE_NVRAM)751751 rc = __erst_clear_from_nvram(record_id);752752 else753753 rc = __erst_clear_from_storage(record_id);754754- spin_unlock_irqrestore(&erst_lock, flags);754754+ raw_spin_unlock_irqrestore(&erst_lock, flags);755755756756 return rc;757757}
+5-5
drivers/acpi/apei/hest.c
···46464747/* HEST table parsing */48484949-static struct acpi_table_hest *hest_tab;4949+static struct acpi_table_hest *__read_mostly hest_tab;50505151-static int hest_esrc_len_tab[ACPI_HEST_TYPE_RESERVED] = {5151+static const int hest_esrc_len_tab[ACPI_HEST_TYPE_RESERVED] = {5252 [ACPI_HEST_TYPE_IA32_CHECK] = -1, /* need further calculation */5353 [ACPI_HEST_TYPE_IA32_CORRECTED_CHECK] = -1,5454 [ACPI_HEST_TYPE_IA32_NMI] = sizeof(struct acpi_hest_ia_nmi),···126126 unsigned int count;127127};128128129129-static int hest_parse_ghes_count(struct acpi_hest_header *hest_hdr, void *data)129129+static int __init hest_parse_ghes_count(struct acpi_hest_header *hest_hdr, void *data)130130{131131 int *count = data;132132···135135 return 0;136136}137137138138-static int hest_parse_ghes(struct acpi_hest_header *hest_hdr, void *data)138138+static int __init hest_parse_ghes(struct acpi_hest_header *hest_hdr, void *data)139139{140140 struct platform_device *ghes_dev;141141 struct ghes_arr *ghes_arr = data;···165165 return rc;166166}167167168168-static int hest_ghes_dev_register(unsigned int ghes_count)168168+static int __init hest_ghes_dev_register(unsigned int ghes_count)169169{170170 int rc, i;171171 struct ghes_arr ghes_arr;
+5
drivers/acpi/battery.c
···130130 unsigned long flags;131131};132132133133+static int acpi_battery_update(struct acpi_battery *battery);134134+133135#define to_acpi_battery(x) container_of(x, struct acpi_battery, bat);134136135137inline int acpi_battery_present(struct acpi_battery *battery)···185183{186184 int ret = 0;187185 struct acpi_battery *battery = to_acpi_battery(psy);186186+187187+ if (acpi_battery_update(battery))188188+ return -ENODEV;188189189190 if (acpi_battery_present(battery)) {190191 /* run battery update only if it is present */
+77-36
drivers/acpi/osl.c
···110110static LIST_HEAD(acpi_ioremaps);111111static DEFINE_SPINLOCK(acpi_ioremap_lock);112112113113-#define OSI_STRING_LENGTH_MAX 64 /* arbitrary */114114-static char osi_setup_string[OSI_STRING_LENGTH_MAX];115115-116113static void __init acpi_osi_setup_late(void);117114118115/*···149152 unsigned int enable:1;150153 unsigned int dmi:1;151154 unsigned int cmdline:1;152152- unsigned int known:1;153153-} osi_linux = { 0, 0, 0, 0};155155+} osi_linux = {0, 0, 0};154156155157static u32 acpi_osi_handler(acpi_string interface, u32 supported)156158{···1051105510521056__setup("acpi_os_name=", acpi_os_name_setup);1053105710581058+#define OSI_STRING_LENGTH_MAX 64 /* arbitrary */10591059+#define OSI_STRING_ENTRIES_MAX 16 /* arbitrary */10601060+10611061+struct osi_setup_entry {10621062+ char string[OSI_STRING_LENGTH_MAX];10631063+ bool enable;10641064+};10651065+10661066+static struct osi_setup_entry __initdata osi_setup_entries[OSI_STRING_ENTRIES_MAX];10671067+10681068+void __init acpi_osi_setup(char *str)10691069+{10701070+ struct osi_setup_entry *osi;10711071+ bool enable = true;10721072+ int i;10731073+10741074+ if (!acpi_gbl_create_osi_method)10751075+ return;10761076+10771077+ if (str == NULL || *str == '\0') {10781078+ printk(KERN_INFO PREFIX "_OSI method disabled\n");10791079+ acpi_gbl_create_osi_method = FALSE;10801080+ return;10811081+ }10821082+10831083+ if (*str == '!') {10841084+ str++;10851085+ enable = false;10861086+ }10871087+10881088+ for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) {10891089+ osi = &osi_setup_entries[i];10901090+ if (!strcmp(osi->string, str)) {10911091+ osi->enable = enable;10921092+ break;10931093+ } else if (osi->string[0] == '\0') {10941094+ osi->enable = enable;10951095+ strncpy(osi->string, str, OSI_STRING_LENGTH_MAX);10961096+ break;10971097+ }10981098+ }10991099+}11001100+10541101static void __init set_osi_linux(unsigned int enable)10551102{10561056- if (osi_linux.enable != enable) {11031103+ if (osi_linux.enable != enable)10571104 osi_linux.enable = enable;10581058- printk(KERN_NOTICE PREFIX "%sed _OSI(Linux)\n",10591059- enable ? "Add": "Delet");10601060- }1061110510621106 if (osi_linux.enable)10631107 acpi_osi_setup("Linux");···1109107311101074static void __init acpi_cmdline_osi_linux(unsigned int enable)11111075{11121112- osi_linux.cmdline = 1; /* cmdline set the default */10761076+ osi_linux.cmdline = 1; /* cmdline set the default and override DMI */10771077+ osi_linux.dmi = 0;11131078 set_osi_linux(enable);1114107911151080 return;···1118108111191082void __init acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d)11201083{11211121- osi_linux.dmi = 1; /* DMI knows that this box asks OSI(Linux) */11221122-11231084 printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident);1124108511251086 if (enable == -1)11261087 return;1127108811281128- osi_linux.known = 1; /* DMI knows which OSI(Linux) default needed */11291129-10891089+ osi_linux.dmi = 1; /* DMI knows that this box asks OSI(Linux) */11301090 set_osi_linux(enable);1131109111321092 return;···11381104 */11391105static void __init acpi_osi_setup_late(void)11401106{11411141- char *str = osi_setup_string;11071107+ struct osi_setup_entry *osi;11081108+ char *str;11091109+ int i;11101110+ acpi_status status;1142111111431143- if (*str == '\0')11441144- return;11121112+ for (i = 0; i < OSI_STRING_ENTRIES_MAX; i++) {11131113+ osi = &osi_setup_entries[i];11141114+ str = osi->string;1145111511461146- if (!strcmp("!Linux", str)) {11471147- acpi_cmdline_osi_linux(0); /* !enable */11481148- } else if (*str == '!') {11491149- if (acpi_remove_interface(++str) == AE_OK)11501150- printk(KERN_INFO PREFIX "Deleted _OSI(%s)\n", str);11511151- } else if (!strcmp("Linux", str)) {11521152- acpi_cmdline_osi_linux(1); /* enable */11531153- } else {11541154- if (acpi_install_interface(str) == AE_OK)11551155- printk(KERN_INFO PREFIX "Added _OSI(%s)\n", str);11161116+ if (*str == '\0')11171117+ break;11181118+ if (osi->enable) {11191119+ status = acpi_install_interface(str);11201120+11211121+ if (ACPI_SUCCESS(status))11221122+ printk(KERN_INFO PREFIX "Added _OSI(%s)\n", str);11231123+ } else {11241124+ status = acpi_remove_interface(str);11251125+11261126+ if (ACPI_SUCCESS(status))11271127+ printk(KERN_INFO PREFIX "Deleted _OSI(%s)\n", str);11281128+ }11561129 }11571130}1158113111591159-int __init acpi_osi_setup(char *str)11321132+static int __init osi_setup(char *str)11601133{11611161- if (str == NULL || *str == '\0') {11621162- printk(KERN_INFO PREFIX "_OSI method disabled\n");11631163- acpi_gbl_create_osi_method = FALSE;11641164- } else {11651165- strncpy(osi_setup_string, str, OSI_STRING_LENGTH_MAX);11661166- }11341134+ if (str && !strcmp("Linux", str))11351135+ acpi_cmdline_osi_linux(1);11361136+ else if (str && !strcmp("!Linux", str))11371137+ acpi_cmdline_osi_linux(0);11381138+ else11391139+ acpi_osi_setup(str);1167114011681141 return 1;11691142}1170114311711171-__setup("acpi_osi=", acpi_osi_setup);11441144+__setup("acpi_osi=", osi_setup);1172114511731146/* enable serialization to combat AE_ALREADY_EXISTS errors */11741147static int __init acpi_serialize_setup(char *str)···15711530 return AE_OK;15721531}1573153215741574-acpi_status acpi_os_initialize1(void)15331533+acpi_status __init acpi_os_initialize1(void)15751534{15761535 kacpid_wq = create_workqueue("kacpid");15771536 kacpi_notify_wq = create_workqueue("kacpi_notify");
+6-6
drivers/acpi/power.c
···213213 resource->name));214214 } else {215215 result = __acpi_power_on(resource);216216+ if (result)217217+ resource->ref_count--;216218 }217219218220 mutex_unlock(&resource->resource_lock);219221220220- return 0;222222+ return result;221223}222224223225static int acpi_power_off_device(acpi_handle handle)···467465 struct acpi_handle_list *tl = NULL; /* Target Resources */468466 int i = 0;469467470470-471468 if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3))472469 return -EINVAL;470470+471471+ if (device->power.state == state)472472+ return 0;473473474474 if ((device->power.state < ACPI_STATE_D0)475475 || (device->power.state > ACPI_STATE_D3))···490486 result = acpi_power_on(tl->handles[i]);491487 if (result)492488 goto end;493493- }494494-495495- if (device->power.state == state) {496496- goto end;497489 }498490499491 /*
-9
drivers/acpi/processor_thermal.c
···156156 return 0;157157}158158159159-static int acpi_thermal_cpufreq_increase(unsigned int cpu)160160-{161161- return -ENODEV;162162-}163163-static int acpi_thermal_cpufreq_decrease(unsigned int cpu)164164-{165165- return -ENODEV;166166-}167167-168159#endif169160170161int acpi_processor_get_limit_info(struct acpi_processor *pr)
+2-2
drivers/acpi/sleep.c
···27272828static u8 sleep_states[ACPI_S_STATE_COUNT];29293030-static u32 acpi_target_sleep_state = ACPI_STATE_S0;3131-3230static void acpi_sleep_tts_switch(u32 acpi_state)3331{3432 union acpi_object in_arg = { ACPI_TYPE_INTEGER };···7981}80828183#ifdef CONFIG_ACPI_SLEEP8484+static u32 acpi_target_sleep_state = ACPI_STATE_S0;8585+8286/*8387 * The ACPI specification wants us to save NVS memory regions during hibernation8488 * and to restore them during the subsequent resume. Windows does that also for
+473-279
drivers/block/rbd.c
···2121222223232424- Instructions for use2525- --------------------2424+ For usage instructions, please refer to:26252727- 1) Map a Linux block device to an existing rbd image.2828-2929- Usage: <mon ip addr> <options> <pool name> <rbd image name> [snap name]3030-3131- $ echo "192.168.0.1 name=admin rbd foo" > /sys/class/rbd/add3232-3333- The snapshot name can be "-" or omitted to map the image read/write.3434-3535- 2) List all active blkdev<->object mappings.3636-3737- In this example, we have performed step #1 twice, creating two blkdevs,3838- mapped to two separate rados objects in the rados rbd pool3939-4040- $ cat /sys/class/rbd/list4141- #id major client_name pool name snap KB4242- 0 254 client4143 rbd foo - 10240004343-4444- The columns, in order, are:4545- - blkdev unique id4646- - blkdev assigned major4747- - rados client id4848- - rados pool name4949- - rados block device name5050- - mapped snapshot ("-" if none)5151- - device size in KB5252-5353-5454- 3) Create a snapshot.5555-5656- Usage: <blkdev id> <snapname>5757-5858- $ echo "0 mysnap" > /sys/class/rbd/snap_create5959-6060-6161- 4) Listing a snapshot.6262-6363- $ cat /sys/class/rbd/snaps_list6464- #id snap KB6565- 0 - 1024000 (*)6666- 0 foo 10240006767-6868- The columns, in order, are:6969- - blkdev unique id7070- - snapshot name, '-' means none (active read/write version)7171- - size of device at time of snapshot7272- - the (*) indicates this is the active version7373-7474- 5) Rollback to snapshot.7575-7676- Usage: <blkdev id> <snapname>7777-7878- $ echo "0 mysnap" > /sys/class/rbd/snap_rollback7979-8080-8181- 6) Mapping an image using snapshot.8282-8383- A snapshot mapping is read-only. This is being done by passing8484- snap=<snapname> to the options when adding a device.8585-8686- $ echo "192.168.0.1 name=admin,snap=mysnap rbd foo" > /sys/class/rbd/add8787-8888-8989- 7) Remove an active blkdev<->rbd image mapping.9090-9191- In this example, we remove the mapping with blkdev unique id 1.9292-9393- $ echo 1 > /sys/class/rbd/remove9494-9595-9696- NOTE: The actual creation and deletion of rados objects is outside the scope9797- of this driver.2626+ Documentation/ABI/testing/sysfs-bus-rbd98279928 */10029···92163 u64 len;93164};94165166166+struct rbd_snap {167167+ struct device dev;168168+ const char *name;169169+ size_t size;170170+ struct list_head node;171171+ u64 id;172172+};173173+95174/*96175 * a single device97176 */···130193 int read_only;131194132195 struct list_head node;196196+197197+ /* list of snapshots */198198+ struct list_head snaps;199199+200200+ /* sysfs related */201201+ struct device dev;202202+};203203+204204+static struct bus_type rbd_bus_type = {205205+ .name = "rbd",133206};134207135208static spinlock_t node_lock; /* protects client get/put */136209137137-static struct class *class_rbd; /* /sys/class/rbd */138210static DEFINE_MUTEX(ctl_mutex); /* Serialize open/close/setup/teardown */139211static LIST_HEAD(rbd_dev_list); /* devices */140212static LIST_HEAD(rbd_client_list); /* clients */141213214214+static int __rbd_init_snaps_header(struct rbd_device *rbd_dev);215215+static void rbd_dev_release(struct device *dev);216216+static ssize_t rbd_snap_rollback(struct device *dev,217217+ struct device_attribute *attr,218218+ const char *buf,219219+ size_t size);220220+static ssize_t rbd_snap_add(struct device *dev,221221+ struct device_attribute *attr,222222+ const char *buf,223223+ size_t count);224224+static void __rbd_remove_snap_dev(struct rbd_device *rbd_dev,225225+ struct rbd_snap *snap);;226226+227227+228228+static struct rbd_device *dev_to_rbd(struct device *dev)229229+{230230+ return container_of(dev, struct rbd_device, dev);231231+}232232+233233+static struct device *rbd_get_dev(struct rbd_device *rbd_dev)234234+{235235+ return get_device(&rbd_dev->dev);236236+}237237+238238+static void rbd_put_dev(struct rbd_device *rbd_dev)239239+{240240+ put_device(&rbd_dev->dev);241241+}142242143243static int rbd_open(struct block_device *bdev, fmode_t mode)144244{145245 struct gendisk *disk = bdev->bd_disk;146246 struct rbd_device *rbd_dev = disk->private_data;247247+248248+ rbd_get_dev(rbd_dev);147249148250 set_device_ro(bdev, rbd_dev->read_only);149251···192216 return 0;193217}194218219219+static int rbd_release(struct gendisk *disk, fmode_t mode)220220+{221221+ struct rbd_device *rbd_dev = disk->private_data;222222+223223+ rbd_put_dev(rbd_dev);224224+225225+ return 0;226226+}227227+195228static const struct block_device_operations rbd_bd_ops = {196229 .owner = THIS_MODULE,197230 .open = rbd_open,231231+ .release = rbd_release,198232};199233200234/*···347361 int ret = -ENOMEM;348362349363 init_rwsem(&header->snap_rwsem);350350-351364 header->snap_names_len = le64_to_cpu(ondisk->snap_names_len);352365 header->snapc = kmalloc(sizeof(struct ceph_snap_context) +353366 snap_count *···12411256 return -ERANGE;12421257}1243125812591259+static void __rbd_remove_all_snaps(struct rbd_device *rbd_dev)12601260+{12611261+ struct rbd_snap *snap;12621262+12631263+ while (!list_empty(&rbd_dev->snaps)) {12641264+ snap = list_first_entry(&rbd_dev->snaps, struct rbd_snap, node);12651265+ __rbd_remove_snap_dev(rbd_dev, snap);12661266+ }12671267+}12681268+12441269/*12451270 * only read the first part of the ondisk header, without the snaps info12461271 */12471247-static int rbd_update_snaps(struct rbd_device *rbd_dev)12721272+static int __rbd_update_snaps(struct rbd_device *rbd_dev)12481273{12491274 int ret;12501275 struct rbd_image_header h;···12751280 rbd_dev->header.total_snaps = h.total_snaps;12761281 rbd_dev->header.snapc = h.snapc;12771282 rbd_dev->header.snap_names = h.snap_names;12831283+ rbd_dev->header.snap_names_len = h.snap_names_len;12781284 rbd_dev->header.snap_sizes = h.snap_sizes;12791285 rbd_dev->header.snapc->seq = snap_seq;1280128612871287+ ret = __rbd_init_snaps_header(rbd_dev);12881288+12811289 up_write(&rbd_dev->header.snap_rwsem);1282129012831283- return 0;12911291+ return ret;12841292}1285129312861294static int rbd_init_disk(struct rbd_device *rbd_dev)···1295129712961298 /* contact OSD, request size info about the object being mapped */12971299 rc = rbd_read_header(rbd_dev, &rbd_dev->header);13001300+ if (rc)13011301+ return rc;13021302+13031303+ /* no need to lock here, as rbd_dev is not registered yet */13041304+ rc = __rbd_init_snaps_header(rbd_dev);12981305 if (rc)12991306 return rc;13001307···13461343 return rc;13471344}1348134513491349-/********************************************************************13501350- * /sys/class/rbd/13511351- * add map rados objects to blkdev13521352- * remove unmap rados objects13531353- * list show mappings13541354- *******************************************************************/13461346+/*13471347+ sysfs13481348+*/1355134913561356-static void class_rbd_release(struct class *cls)13501350+static ssize_t rbd_size_show(struct device *dev,13511351+ struct device_attribute *attr, char *buf)13571352{13581358- kfree(cls);13531353+ struct rbd_device *rbd_dev = dev_to_rbd(dev);13541354+13551355+ return sprintf(buf, "%llu\n", (unsigned long long)rbd_dev->header.image_size);13591356}1360135713611361-static ssize_t class_rbd_list(struct class *c,13621362- struct class_attribute *attr,13631363- char *data)13581358+static ssize_t rbd_major_show(struct device *dev,13591359+ struct device_attribute *attr, char *buf)13641360{13651365- int n = 0;13661366- struct list_head *tmp;13671367- int max = PAGE_SIZE;13611361+ struct rbd_device *rbd_dev = dev_to_rbd(dev);13621362+13631363+ return sprintf(buf, "%d\n", rbd_dev->major);13641364+}13651365+13661366+static ssize_t rbd_client_id_show(struct device *dev,13671367+ struct device_attribute *attr, char *buf)13681368+{13691369+ struct rbd_device *rbd_dev = dev_to_rbd(dev);13701370+13711371+ return sprintf(buf, "client%lld\n", ceph_client_id(rbd_dev->client));13721372+}13731373+13741374+static ssize_t rbd_pool_show(struct device *dev,13751375+ struct device_attribute *attr, char *buf)13761376+{13771377+ struct rbd_device *rbd_dev = dev_to_rbd(dev);13781378+13791379+ return sprintf(buf, "%s\n", rbd_dev->pool_name);13801380+}13811381+13821382+static ssize_t rbd_name_show(struct device *dev,13831383+ struct device_attribute *attr, char *buf)13841384+{13851385+ struct rbd_device *rbd_dev = dev_to_rbd(dev);13861386+13871387+ return sprintf(buf, "%s\n", rbd_dev->obj);13881388+}13891389+13901390+static ssize_t rbd_snap_show(struct device *dev,13911391+ struct device_attribute *attr,13921392+ char *buf)13931393+{13941394+ struct rbd_device *rbd_dev = dev_to_rbd(dev);13951395+13961396+ return sprintf(buf, "%s\n", rbd_dev->snap_name);13971397+}13981398+13991399+static ssize_t rbd_image_refresh(struct device *dev,14001400+ struct device_attribute *attr,14011401+ const char *buf,14021402+ size_t size)14031403+{14041404+ struct rbd_device *rbd_dev = dev_to_rbd(dev);14051405+ int rc;14061406+ int ret = size;1368140713691408 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);1370140913711371- n += snprintf(data, max,13721372- "#id\tmajor\tclient_name\tpool\tname\tsnap\tKB\n");14101410+ rc = __rbd_update_snaps(rbd_dev);14111411+ if (rc < 0)14121412+ ret = rc;1373141313741374- list_for_each(tmp, &rbd_dev_list) {13751375- struct rbd_device *rbd_dev;14141414+ mutex_unlock(&ctl_mutex);14151415+ return ret;14161416+}1376141713771377- rbd_dev = list_entry(tmp, struct rbd_device, node);13781378- n += snprintf(data+n, max-n,13791379- "%d\t%d\tclient%lld\t%s\t%s\t%s\t%lld\n",13801380- rbd_dev->id,13811381- rbd_dev->major,13821382- ceph_client_id(rbd_dev->client),13831383- rbd_dev->pool_name,13841384- rbd_dev->obj, rbd_dev->snap_name,13851385- rbd_dev->header.image_size >> 10);13861386- if (n == max)14181418+static DEVICE_ATTR(size, S_IRUGO, rbd_size_show, NULL);14191419+static DEVICE_ATTR(major, S_IRUGO, rbd_major_show, NULL);14201420+static DEVICE_ATTR(client_id, S_IRUGO, rbd_client_id_show, NULL);14211421+static DEVICE_ATTR(pool, S_IRUGO, rbd_pool_show, NULL);14221422+static DEVICE_ATTR(name, S_IRUGO, rbd_name_show, NULL);14231423+static DEVICE_ATTR(refresh, S_IWUSR, NULL, rbd_image_refresh);14241424+static DEVICE_ATTR(current_snap, S_IRUGO, rbd_snap_show, NULL);14251425+static DEVICE_ATTR(create_snap, S_IWUSR, NULL, rbd_snap_add);14261426+static DEVICE_ATTR(rollback_snap, S_IWUSR, NULL, rbd_snap_rollback);14271427+14281428+static struct attribute *rbd_attrs[] = {14291429+ &dev_attr_size.attr,14301430+ &dev_attr_major.attr,14311431+ &dev_attr_client_id.attr,14321432+ &dev_attr_pool.attr,14331433+ &dev_attr_name.attr,14341434+ &dev_attr_current_snap.attr,14351435+ &dev_attr_refresh.attr,14361436+ &dev_attr_create_snap.attr,14371437+ &dev_attr_rollback_snap.attr,14381438+ NULL14391439+};14401440+14411441+static struct attribute_group rbd_attr_group = {14421442+ .attrs = rbd_attrs,14431443+};14441444+14451445+static const struct attribute_group *rbd_attr_groups[] = {14461446+ &rbd_attr_group,14471447+ NULL14481448+};14491449+14501450+static void rbd_sysfs_dev_release(struct device *dev)14511451+{14521452+}14531453+14541454+static struct device_type rbd_device_type = {14551455+ .name = "rbd",14561456+ .groups = rbd_attr_groups,14571457+ .release = rbd_sysfs_dev_release,14581458+};14591459+14601460+14611461+/*14621462+ sysfs - snapshots14631463+*/14641464+14651465+static ssize_t rbd_snap_size_show(struct device *dev,14661466+ struct device_attribute *attr,14671467+ char *buf)14681468+{14691469+ struct rbd_snap *snap = container_of(dev, struct rbd_snap, dev);14701470+14711471+ return sprintf(buf, "%lld\n", (long long)snap->size);14721472+}14731473+14741474+static ssize_t rbd_snap_id_show(struct device *dev,14751475+ struct device_attribute *attr,14761476+ char *buf)14771477+{14781478+ struct rbd_snap *snap = container_of(dev, struct rbd_snap, dev);14791479+14801480+ return sprintf(buf, "%lld\n", (long long)snap->id);14811481+}14821482+14831483+static DEVICE_ATTR(snap_size, S_IRUGO, rbd_snap_size_show, NULL);14841484+static DEVICE_ATTR(snap_id, S_IRUGO, rbd_snap_id_show, NULL);14851485+14861486+static struct attribute *rbd_snap_attrs[] = {14871487+ &dev_attr_snap_size.attr,14881488+ &dev_attr_snap_id.attr,14891489+ NULL,14901490+};14911491+14921492+static struct attribute_group rbd_snap_attr_group = {14931493+ .attrs = rbd_snap_attrs,14941494+};14951495+14961496+static void rbd_snap_dev_release(struct device *dev)14971497+{14981498+ struct rbd_snap *snap = container_of(dev, struct rbd_snap, dev);14991499+ kfree(snap->name);15001500+ kfree(snap);15011501+}15021502+15031503+static const struct attribute_group *rbd_snap_attr_groups[] = {15041504+ &rbd_snap_attr_group,15051505+ NULL15061506+};15071507+15081508+static struct device_type rbd_snap_device_type = {15091509+ .groups = rbd_snap_attr_groups,15101510+ .release = rbd_snap_dev_release,15111511+};15121512+15131513+static void __rbd_remove_snap_dev(struct rbd_device *rbd_dev,15141514+ struct rbd_snap *snap)15151515+{15161516+ list_del(&snap->node);15171517+ device_unregister(&snap->dev);15181518+}15191519+15201520+static int rbd_register_snap_dev(struct rbd_device *rbd_dev,15211521+ struct rbd_snap *snap,15221522+ struct device *parent)15231523+{15241524+ struct device *dev = &snap->dev;15251525+ int ret;15261526+15271527+ dev->type = &rbd_snap_device_type;15281528+ dev->parent = parent;15291529+ dev->release = rbd_snap_dev_release;15301530+ dev_set_name(dev, "snap_%s", snap->name);15311531+ ret = device_register(dev);15321532+15331533+ return ret;15341534+}15351535+15361536+static int __rbd_add_snap_dev(struct rbd_device *rbd_dev,15371537+ int i, const char *name,15381538+ struct rbd_snap **snapp)15391539+{15401540+ int ret;15411541+ struct rbd_snap *snap = kzalloc(sizeof(*snap), GFP_KERNEL);15421542+ if (!snap)15431543+ return -ENOMEM;15441544+ snap->name = kstrdup(name, GFP_KERNEL);15451545+ snap->size = rbd_dev->header.snap_sizes[i];15461546+ snap->id = rbd_dev->header.snapc->snaps[i];15471547+ if (device_is_registered(&rbd_dev->dev)) {15481548+ ret = rbd_register_snap_dev(rbd_dev, snap,15491549+ &rbd_dev->dev);15501550+ if (ret < 0)15511551+ goto err;15521552+ }15531553+ *snapp = snap;15541554+ return 0;15551555+err:15561556+ kfree(snap->name);15571557+ kfree(snap);15581558+ return ret;15591559+}15601560+15611561+/*15621562+ * search for the previous snap in a null delimited string list15631563+ */15641564+const char *rbd_prev_snap_name(const char *name, const char *start)15651565+{15661566+ if (name < start + 2)15671567+ return NULL;15681568+15691569+ name -= 2;15701570+ while (*name) {15711571+ if (name == start)15721572+ return start;15731573+ name--;15741574+ }15751575+ return name + 1;15761576+}15771577+15781578+/*15791579+ * compare the old list of snapshots that we have to what's in the header15801580+ * and update it accordingly. Note that the header holds the snapshots15811581+ * in a reverse order (from newest to oldest) and we need to go from15821582+ * older to new so that we don't get a duplicate snap name when15831583+ * doing the process (e.g., removed snapshot and recreated a new15841584+ * one with the same name.15851585+ */15861586+static int __rbd_init_snaps_header(struct rbd_device *rbd_dev)15871587+{15881588+ const char *name, *first_name;15891589+ int i = rbd_dev->header.total_snaps;15901590+ struct rbd_snap *snap, *old_snap = NULL;15911591+ int ret;15921592+ struct list_head *p, *n;15931593+15941594+ first_name = rbd_dev->header.snap_names;15951595+ name = first_name + rbd_dev->header.snap_names_len;15961596+15971597+ list_for_each_prev_safe(p, n, &rbd_dev->snaps) {15981598+ u64 cur_id;15991599+16001600+ old_snap = list_entry(p, struct rbd_snap, node);16011601+16021602+ if (i)16031603+ cur_id = rbd_dev->header.snapc->snaps[i - 1];16041604+16051605+ if (!i || old_snap->id < cur_id) {16061606+ /* old_snap->id was skipped, thus was removed */16071607+ __rbd_remove_snap_dev(rbd_dev, old_snap);16081608+ continue;16091609+ }16101610+ if (old_snap->id == cur_id) {16111611+ /* we have this snapshot already */16121612+ i--;16131613+ name = rbd_prev_snap_name(name, first_name);16141614+ continue;16151615+ }16161616+ for (; i > 0;16171617+ i--, name = rbd_prev_snap_name(name, first_name)) {16181618+ if (!name) {16191619+ WARN_ON(1);16201620+ return -EINVAL;16211621+ }16221622+ cur_id = rbd_dev->header.snapc->snaps[i];16231623+ /* snapshot removal? handle it above */16241624+ if (cur_id >= old_snap->id)16251625+ break;16261626+ /* a new snapshot */16271627+ ret = __rbd_add_snap_dev(rbd_dev, i - 1, name, &snap);16281628+ if (ret < 0)16291629+ return ret;16301630+16311631+ /* note that we add it backward so using n and not p */16321632+ list_add(&snap->node, n);16331633+ p = &snap->node;16341634+ }16351635+ }16361636+ /* we're done going over the old snap list, just add what's left */16371637+ for (; i > 0; i--) {16381638+ name = rbd_prev_snap_name(name, first_name);16391639+ if (!name) {16401640+ WARN_ON(1);16411641+ return -EINVAL;16421642+ }16431643+ ret = __rbd_add_snap_dev(rbd_dev, i - 1, name, &snap);16441644+ if (ret < 0)16451645+ return ret;16461646+ list_add(&snap->node, &rbd_dev->snaps);16471647+ }16481648+16491649+ return 0;16501650+}16511651+16521652+16531653+static void rbd_root_dev_release(struct device *dev)16541654+{16551655+}16561656+16571657+static struct device rbd_root_dev = {16581658+ .init_name = "rbd",16591659+ .release = rbd_root_dev_release,16601660+};16611661+16621662+static int rbd_bus_add_dev(struct rbd_device *rbd_dev)16631663+{16641664+ int ret = -ENOMEM;16651665+ struct device *dev;16661666+ struct rbd_snap *snap;16671667+16681668+ mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);16691669+ dev = &rbd_dev->dev;16701670+16711671+ dev->bus = &rbd_bus_type;16721672+ dev->type = &rbd_device_type;16731673+ dev->parent = &rbd_root_dev;16741674+ dev->release = rbd_dev_release;16751675+ dev_set_name(dev, "%d", rbd_dev->id);16761676+ ret = device_register(dev);16771677+ if (ret < 0)16781678+ goto done_free;16791679+16801680+ list_for_each_entry(snap, &rbd_dev->snaps, node) {16811681+ ret = rbd_register_snap_dev(rbd_dev, snap,16821682+ &rbd_dev->dev);16831683+ if (ret < 0)13871684 break;13881685 }1389168613901687 mutex_unlock(&ctl_mutex);13911391- return n;16881688+ return 0;16891689+done_free:16901690+ mutex_unlock(&ctl_mutex);16911691+ return ret;13921692}1393169313941394-static ssize_t class_rbd_add(struct class *c,13951395- struct class_attribute *attr,13961396- const char *buf, size_t count)16941694+static void rbd_bus_del_dev(struct rbd_device *rbd_dev)16951695+{16961696+ device_unregister(&rbd_dev->dev);16971697+}16981698+16991699+static ssize_t rbd_add(struct bus_type *bus, const char *buf, size_t count)13971700{13981701 struct ceph_osd_client *osdc;13991702 struct rbd_device *rbd_dev;···17281419 /* static rbd_device initialization */17291420 spin_lock_init(&rbd_dev->lock);17301421 INIT_LIST_HEAD(&rbd_dev->node);14221422+ INIT_LIST_HEAD(&rbd_dev->snaps);1731142317321424 /* generate unique id: find highest unique id, add one */17331425 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);···17881478 }17891479 rbd_dev->major = irc;1790148014811481+ rc = rbd_bus_add_dev(rbd_dev);14821482+ if (rc)14831483+ goto err_out_disk;17911484 /* set up and announce blkdev mapping */17921485 rc = rbd_init_disk(rbd_dev);17931486 if (rc)···1800148718011488err_out_blkdev:18021489 unregister_blkdev(rbd_dev->major, rbd_dev->name);14901490+err_out_disk:14911491+ rbd_free_disk(rbd_dev);18031492err_out_client:18041493 rbd_put_client(rbd_dev);18051494 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);···18331518 return NULL;18341519}1835152018361836-static ssize_t class_rbd_remove(struct class *c,18371837- struct class_attribute *attr,18381838- const char *buf,18391839- size_t count)15211521+static void rbd_dev_release(struct device *dev)18401522{18411841- struct rbd_device *rbd_dev = NULL;18421842- int target_id, rc;18431843- unsigned long ul;18441844-18451845- rc = strict_strtoul(buf, 10, &ul);18461846- if (rc)18471847- return rc;18481848-18491849- /* convert to int; abort if we lost anything in the conversion */18501850- target_id = (int) ul;18511851- if (target_id != ul)18521852- return -EINVAL;18531853-18541854- /* remove object from list immediately */18551855- mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);18561856-18571857- rbd_dev = __rbd_get_dev(target_id);18581858- if (rbd_dev)18591859- list_del_init(&rbd_dev->node);18601860-18611861- mutex_unlock(&ctl_mutex);18621862-18631863- if (!rbd_dev)18641864- return -ENOENT;15231523+ struct rbd_device *rbd_dev =15241524+ container_of(dev, struct rbd_device, dev);1865152518661526 rbd_put_client(rbd_dev);18671527···1847155718481558 /* release module ref */18491559 module_put(THIS_MODULE);18501850-18511851- return count;18521560}1853156118541854-static ssize_t class_rbd_snaps_list(struct class *c,18551855- struct class_attribute *attr,18561856- char *data)18571857-{18581858- struct rbd_device *rbd_dev = NULL;18591859- struct list_head *tmp;18601860- struct rbd_image_header *header;18611861- int i, n = 0, max = PAGE_SIZE;18621862- int ret;18631863-18641864- mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);18651865-18661866- n += snprintf(data, max, "#id\tsnap\tKB\n");18671867-18681868- list_for_each(tmp, &rbd_dev_list) {18691869- char *names, *p;18701870- struct ceph_snap_context *snapc;18711871-18721872- rbd_dev = list_entry(tmp, struct rbd_device, node);18731873- header = &rbd_dev->header;18741874-18751875- down_read(&header->snap_rwsem);18761876-18771877- names = header->snap_names;18781878- snapc = header->snapc;18791879-18801880- n += snprintf(data + n, max - n, "%d\t%s\t%lld%s\n",18811881- rbd_dev->id, RBD_SNAP_HEAD_NAME,18821882- header->image_size >> 10,18831883- (!rbd_dev->cur_snap ? " (*)" : ""));18841884- if (n == max)18851885- break;18861886-18871887- p = names;18881888- for (i = 0; i < header->total_snaps; i++, p += strlen(p) + 1) {18891889- n += snprintf(data + n, max - n, "%d\t%s\t%lld%s\n",18901890- rbd_dev->id, p, header->snap_sizes[i] >> 10,18911891- (rbd_dev->cur_snap &&18921892- (snap_index(header, i) == rbd_dev->cur_snap) ?18931893- " (*)" : ""));18941894- if (n == max)18951895- break;18961896- }18971897-18981898- up_read(&header->snap_rwsem);18991899- }19001900-19011901-19021902- ret = n;19031903- mutex_unlock(&ctl_mutex);19041904- return ret;19051905-}19061906-19071907-static ssize_t class_rbd_snaps_refresh(struct class *c,19081908- struct class_attribute *attr,19091909- const char *buf,19101910- size_t count)15621562+static ssize_t rbd_remove(struct bus_type *bus,15631563+ const char *buf,15641564+ size_t count)19111565{19121566 struct rbd_device *rbd_dev = NULL;19131567 int target_id, rc;···18751641 goto done;18761642 }1877164318781878- rc = rbd_update_snaps(rbd_dev);18791879- if (rc < 0)18801880- ret = rc;16441644+ list_del_init(&rbd_dev->node);16451645+16461646+ __rbd_remove_all_snaps(rbd_dev);16471647+ rbd_bus_del_dev(rbd_dev);1881164818821649done:18831650 mutex_unlock(&ctl_mutex);18841651 return ret;18851652}1886165318871887-static ssize_t class_rbd_snap_create(struct class *c,18881888- struct class_attribute *attr,18891889- const char *buf,18901890- size_t count)16541654+static ssize_t rbd_snap_add(struct device *dev,16551655+ struct device_attribute *attr,16561656+ const char *buf,16571657+ size_t count)18911658{18921892- struct rbd_device *rbd_dev = NULL;18931893- int target_id, ret;18941894- char *name;18951895-18961896- name = kmalloc(RBD_MAX_SNAP_NAME_LEN + 1, GFP_KERNEL);16591659+ struct rbd_device *rbd_dev = dev_to_rbd(dev);16601660+ int ret;16611661+ char *name = kmalloc(count + 1, GFP_KERNEL);18971662 if (!name)18981663 return -ENOMEM;1899166419001900- /* parse snaps add command */19011901- if (sscanf(buf, "%d "19021902- "%" __stringify(RBD_MAX_SNAP_NAME_LEN) "s",19031903- &target_id,19041904- name) != 2) {19051905- ret = -EINVAL;19061906- goto done;19071907- }16651665+ snprintf(name, count, "%s", buf);1908166619091667 mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);19101910-19111911- rbd_dev = __rbd_get_dev(target_id);19121912- if (!rbd_dev) {19131913- ret = -ENOENT;19141914- goto done_unlock;19151915- }1916166819171669 ret = rbd_header_add_snap(rbd_dev,19181670 name, GFP_KERNEL);19191671 if (ret < 0)19201672 goto done_unlock;1921167319221922- ret = rbd_update_snaps(rbd_dev);16741674+ ret = __rbd_update_snaps(rbd_dev);19231675 if (ret < 0)19241676 goto done_unlock;1925167719261678 ret = count;19271679done_unlock:19281680 mutex_unlock(&ctl_mutex);19291929-done:19301681 kfree(name);19311682 return ret;19321683}1933168419341934-static ssize_t class_rbd_rollback(struct class *c,19351935- struct class_attribute *attr,19361936- const char *buf,19371937- size_t count)16851685+static ssize_t rbd_snap_rollback(struct device *dev,16861686+ struct device_attribute *attr,16871687+ const char *buf,16881688+ size_t count)19381689{19391939- struct rbd_device *rbd_dev = NULL;19401940- int target_id, ret;16901690+ struct rbd_device *rbd_dev = dev_to_rbd(dev);16911691+ int ret;19411692 u64 snapid;19421942- char snap_name[RBD_MAX_SNAP_NAME_LEN];19431693 u64 cur_ofs;19441944- char *seg_name;19451945-19461946- /* parse snaps add command */19471947- if (sscanf(buf, "%d "19481948- "%" __stringify(RBD_MAX_SNAP_NAME_LEN) "s",19491949- &target_id,19501950- snap_name) != 2) {19511951- return -EINVAL;19521952- }19531953-16941694+ char *seg_name = NULL;16951695+ char *snap_name = kmalloc(count + 1, GFP_KERNEL);19541696 ret = -ENOMEM;19551955- seg_name = kmalloc(RBD_MAX_SEG_NAME_LEN + 1, GFP_NOIO);19561956- if (!seg_name)16971697+ if (!snap_name)19571698 return ret;1958169919591959- mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);17001700+ /* parse snaps add command */17011701+ snprintf(snap_name, count, "%s", buf);17021702+ seg_name = kmalloc(RBD_MAX_SEG_NAME_LEN + 1, GFP_NOIO);17031703+ if (!seg_name)17041704+ goto done;1960170519611961- rbd_dev = __rbd_get_dev(target_id);19621962- if (!rbd_dev) {19631963- ret = -ENOENT;19641964- goto done_unlock;19651965- }17061706+ mutex_lock_nested(&ctl_mutex, SINGLE_DEPTH_NESTING);1966170719671708 ret = snap_by_name(&rbd_dev->header, snap_name, &snapid, NULL);19681709 if (ret < 0)···19591750 seg_name, ret);19601751 }1961175219621962- ret = rbd_update_snaps(rbd_dev);17531753+ ret = __rbd_update_snaps(rbd_dev);19631754 if (ret < 0)19641755 goto done_unlock;19651756···1967175819681759done_unlock:19691760 mutex_unlock(&ctl_mutex);17611761+done:19701762 kfree(seg_name);17631763+ kfree(snap_name);1971176419721765 return ret;19731766}1974176719751975-static struct class_attribute class_rbd_attrs[] = {19761976- __ATTR(add, 0200, NULL, class_rbd_add),19771977- __ATTR(remove, 0200, NULL, class_rbd_remove),19781978- __ATTR(list, 0444, class_rbd_list, NULL),19791979- __ATTR(snaps_refresh, 0200, NULL, class_rbd_snaps_refresh),19801980- __ATTR(snap_create, 0200, NULL, class_rbd_snap_create),19811981- __ATTR(snaps_list, 0444, class_rbd_snaps_list, NULL),19821982- __ATTR(snap_rollback, 0200, NULL, class_rbd_rollback),17681768+static struct bus_attribute rbd_bus_attrs[] = {17691769+ __ATTR(add, S_IWUSR, NULL, rbd_add),17701770+ __ATTR(remove, S_IWUSR, NULL, rbd_remove),19831771 __ATTR_NULL19841772};1985177319861774/*19871775 * create control files in sysfs19881988- * /sys/class/rbd/...17761776+ * /sys/bus/rbd/...19891777 */19901778static int rbd_sysfs_init(void)19911779{19921992- int ret = -ENOMEM;17801780+ int ret;1993178119941994- class_rbd = kzalloc(sizeof(*class_rbd), GFP_KERNEL);19951995- if (!class_rbd)19961996- goto out;17821782+ rbd_bus_type.bus_attrs = rbd_bus_attrs;1997178319981998- class_rbd->name = DRV_NAME;19991999- class_rbd->owner = THIS_MODULE;20002000- class_rbd->class_release = class_rbd_release;20012001- class_rbd->class_attrs = class_rbd_attrs;17841784+ ret = bus_register(&rbd_bus_type);17851785+ if (ret < 0)17861786+ return ret;2002178720032003- ret = class_register(class_rbd);20042004- if (ret)20052005- goto out_class;20062006- return 0;17881788+ ret = device_register(&rbd_root_dev);2007178920082008-out_class:20092009- kfree(class_rbd);20102010- class_rbd = NULL;20112011- pr_err(DRV_NAME ": failed to create class rbd\n");20122012-out:20131790 return ret;20141791}2015179220161793static void rbd_sysfs_cleanup(void)20171794{20182018- if (class_rbd)20192019- class_destroy(class_rbd);20202020- class_rbd = NULL;17951795+ device_unregister(&rbd_root_dev);17961796+ bus_unregister(&rbd_bus_type);20211797}2022179820231799int __init rbd_init(void)
+1
drivers/dma/shdma.c
···12131213MODULE_AUTHOR("Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>");12141214MODULE_DESCRIPTION("Renesas SH DMA Engine driver");12151215MODULE_LICENSE("GPL");12161216+MODULE_ALIAS("platform:sh-dma-engine");
+14-2
drivers/gpio/cs5535-gpio.c
···5656 * registers, see include/linux/cs5535.h.5757 */58585959+static void errata_outl(u32 val, unsigned long addr)6060+{6161+ /*6262+ * According to the CS5536 errata (#36), after suspend6363+ * a write to the high bank GPIO register will clear all6464+ * non-selected bits; the recommended workaround is a6565+ * read-modify-write operation.6666+ */6767+ val |= inl(addr);6868+ outl(val, addr);6969+}7070+5971static void __cs5535_gpio_set(struct cs5535_gpio_chip *chip, unsigned offset,6072 unsigned int reg)6173{···7664 outl(1 << offset, chip->base + reg);7765 else7866 /* high bank register */7979- outl(1 << (offset - 16), chip->base + 0x80 + reg);6767+ errata_outl(1 << (offset - 16), chip->base + 0x80 + reg);8068}81698270void cs5535_gpio_set(unsigned offset, unsigned int reg)···9886 outl(1 << (offset + 16), chip->base + reg);9987 else10088 /* high bank register */101101- outl(1 << offset, chip->base + 0x80 + reg);8989+ errata_outl(1 << offset, chip->base + 0x80 + reg);10290}1039110492void cs5535_gpio_clear(unsigned offset, unsigned int reg)
+11-3
drivers/gpu/drm/drm_crtc_helper.c
···471471 int count = 0, ro, fail = 0;472472 struct drm_crtc_helper_funcs *crtc_funcs;473473 int ret = 0;474474+ int i;474475475476 DRM_DEBUG_KMS("\n");476477···667666 if (ret != 0)668667 goto fail;669668 }669669+ DRM_DEBUG_KMS("Setting connector DPMS state to on\n");670670+ for (i = 0; i < set->num_connectors; i++) {671671+ DRM_DEBUG_KMS("\t[CONNECTOR:%d:%s] set DPMS on\n", set->connectors[i]->base.id,672672+ drm_get_connector_name(set->connectors[i]));673673+ set->connectors[i]->dpms = DRM_MODE_DPMS_ON;674674+ }670675671676 kfree(save_connectors);672677 kfree(save_encoders);···848841 struct delayed_work *delayed_work = to_delayed_work(work);849842 struct drm_device *dev = container_of(delayed_work, struct drm_device, mode_config.output_poll_work);850843 struct drm_connector *connector;851851- enum drm_connector_status old_status, status;844844+ enum drm_connector_status old_status;852845 bool repoll = false, changed = false;853846854847 if (!drm_kms_helper_poll)···873866 !(connector->polled & DRM_CONNECTOR_POLL_HPD))874867 continue;875868876876- status = connector->funcs->detect(connector, false);877877- if (old_status != status)869869+ connector->status = connector->funcs->detect(connector, false);870870+ DRM_DEBUG_KMS("connector status updated to %d\n", connector->status);871871+ if (old_status != connector->status)878872 changed = true;879873 }880874
+329-204
drivers/gpu/drm/i915/i915_gem.c
···38383939static uint32_t i915_gem_get_gtt_alignment(struct drm_gem_object *obj);40404141-static int i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj,4242- bool pipelined);4141+static int i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj);4342static void i915_gem_object_flush_gtt_write_domain(struct drm_gem_object *obj);4443static void i915_gem_object_flush_cpu_write_domain(struct drm_gem_object *obj);4544static int i915_gem_object_set_to_cpu_domain(struct drm_gem_object *obj,···25932594 if (reg->gpu) {25942595 int ret;2595259625962596- ret = i915_gem_object_flush_gpu_write_domain(obj, true);25972597+ ret = i915_gem_object_flush_gpu_write_domain(obj);25972598 if (ret)25982599 return ret;25992600···2741274227422743/** Flushes any GPU write domain for the object if it's dirty. */27432744static int27442744-i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj,27452745- bool pipelined)27452745+i915_gem_object_flush_gpu_write_domain(struct drm_gem_object *obj)27462746{27472747 struct drm_device *dev = obj->dev;27482748 uint32_t old_write_domain;···27602762 obj->read_domains,27612763 old_write_domain);2762276427632763- if (pipelined)27642764- return 0;27652765-27662766- return i915_gem_object_wait_rendering(obj, true);27652765+ return 0;27672766}2768276727692768/** Flushes the GTT write domain for the object if it's dirty. */···28212826 if (obj_priv->gtt_space == NULL)28222827 return -EINVAL;2823282828242824- ret = i915_gem_object_flush_gpu_write_domain(obj, false);28292829+ ret = i915_gem_object_flush_gpu_write_domain(obj);28252830 if (ret != 0)28312831+ return ret;28322832+ ret = i915_gem_object_wait_rendering(obj, true);28332833+ if (ret)28262834 return ret;2827283528282836 i915_gem_object_flush_cpu_write_domain(obj);28292829-28302830- if (write) {28312831- ret = i915_gem_object_wait_rendering(obj, true);28322832- if (ret)28332833- return ret;28342834- }2835283728362838 old_write_domain = obj->write_domain;28372839 old_read_domains = obj->read_domains;···28672875 if (obj_priv->gtt_space == NULL)28682876 return -EINVAL;2869287728702870- ret = i915_gem_object_flush_gpu_write_domain(obj, true);28782878+ ret = i915_gem_object_flush_gpu_write_domain(obj);28712879 if (ret)28722880 return ret;28732881···29162924 uint32_t old_write_domain, old_read_domains;29172925 int ret;2918292629192919- ret = i915_gem_object_flush_gpu_write_domain(obj, false);29272927+ ret = i915_gem_object_flush_gpu_write_domain(obj);29202928 if (ret != 0)29292929+ return ret;29302930+ ret = i915_gem_object_wait_rendering(obj, true);29312931+ if (ret)29212932 return ret;2922293329232934 i915_gem_object_flush_gtt_write_domain(obj);···29292934 * finish invalidating it and free the per-page flags.29302935 */29312936 i915_gem_object_set_to_full_cpu_read_domain(obj);29322932-29332933- if (write) {29342934- ret = i915_gem_object_wait_rendering(obj, true);29352935- if (ret)29362936- return ret;29372937- }2938293729392938 old_write_domain = obj->write_domain;29402939 old_read_domains = obj->read_domains;···31943205 if (offset == 0 && size == obj->size)31953206 return i915_gem_object_set_to_cpu_domain(obj, 0);3196320731973197- ret = i915_gem_object_flush_gpu_write_domain(obj, false);32083208+ ret = i915_gem_object_flush_gpu_write_domain(obj);31983209 if (ret != 0)31993210 return ret;32113211+ ret = i915_gem_object_wait_rendering(obj, true);32123212+ if (ret)32133213+ return ret;32143214+32003215 i915_gem_object_flush_gtt_write_domain(obj);3201321632023217 /* If we're already fully in the CPU read domain, we're done. */···32473254 return 0;32483255}3249325632503250-/**32513251- * Pin an object to the GTT and evaluate the relocations landing in it.32523252- */32533257static int32543254-i915_gem_execbuffer_relocate(struct drm_i915_gem_object *obj,32553255- struct drm_file *file_priv,32563256- struct drm_i915_gem_exec_object2 *entry)32583258+i915_gem_execbuffer_relocate_entry(struct drm_i915_gem_object *obj,32593259+ struct drm_file *file_priv,32603260+ struct drm_i915_gem_exec_object2 *entry,32613261+ struct drm_i915_gem_relocation_entry *reloc)32573262{32583263 struct drm_device *dev = obj->base.dev;32593259- drm_i915_private_t *dev_priv = dev->dev_private;32603260- struct drm_i915_gem_relocation_entry __user *user_relocs;32613261- struct drm_gem_object *target_obj = NULL;32623262- uint32_t target_handle = 0;32633263- int i, ret = 0;32643264+ struct drm_gem_object *target_obj;32653265+ uint32_t target_offset;32663266+ int ret = -EINVAL;3264326732653265- user_relocs = (void __user *)(uintptr_t)entry->relocs_ptr;32663266- for (i = 0; i < entry->relocation_count; i++) {32673267- struct drm_i915_gem_relocation_entry reloc;32683268- uint32_t target_offset;32683268+ target_obj = drm_gem_object_lookup(dev, file_priv,32693269+ reloc->target_handle);32703270+ if (target_obj == NULL)32713271+ return -ENOENT;3269327232703270- if (__copy_from_user_inatomic(&reloc,32713271- user_relocs+i,32723272- sizeof(reloc))) {32733273- ret = -EFAULT;32743274- break;32753275- }32763276-32773277- if (reloc.target_handle != target_handle) {32783278- drm_gem_object_unreference(target_obj);32793279-32803280- target_obj = drm_gem_object_lookup(dev, file_priv,32813281- reloc.target_handle);32823282- if (target_obj == NULL) {32833283- ret = -ENOENT;32843284- break;32853285- }32863286-32873287- target_handle = reloc.target_handle;32883288- }32893289- target_offset = to_intel_bo(target_obj)->gtt_offset;32733273+ target_offset = to_intel_bo(target_obj)->gtt_offset;3290327432913275#if WATCH_RELOC32923292- DRM_INFO("%s: obj %p offset %08x target %d "32933293- "read %08x write %08x gtt %08x "32943294- "presumed %08x delta %08x\n",32953295- __func__,32963296- obj,32973297- (int) reloc.offset,32983298- (int) reloc.target_handle,32993299- (int) reloc.read_domains,33003300- (int) reloc.write_domain,33013301- (int) target_offset,33023302- (int) reloc.presumed_offset,33033303- reloc.delta);32763276+ DRM_INFO("%s: obj %p offset %08x target %d "32773277+ "read %08x write %08x gtt %08x "32783278+ "presumed %08x delta %08x\n",32793279+ __func__,32803280+ obj,32813281+ (int) reloc->offset,32823282+ (int) reloc->target_handle,32833283+ (int) reloc->read_domains,32843284+ (int) reloc->write_domain,32853285+ (int) target_offset,32863286+ (int) reloc->presumed_offset,32873287+ reloc->delta);33043288#endif3305328933063306- /* The target buffer should have appeared before us in the33073307- * exec_object list, so it should have a GTT space bound by now.33083308- */33093309- if (target_offset == 0) {33103310- DRM_ERROR("No GTT space found for object %d\n",33113311- reloc.target_handle);33123312- ret = -EINVAL;33133313- break;33143314- }33153315-33163316- /* Validate that the target is in a valid r/w GPU domain */33173317- if (reloc.write_domain & (reloc.write_domain - 1)) {33183318- DRM_ERROR("reloc with multiple write domains: "33193319- "obj %p target %d offset %d "33203320- "read %08x write %08x",33213321- obj, reloc.target_handle,33223322- (int) reloc.offset,33233323- reloc.read_domains,33243324- reloc.write_domain);33253325- ret = -EINVAL;33263326- break;33273327- }33283328- if (reloc.write_domain & I915_GEM_DOMAIN_CPU ||33293329- reloc.read_domains & I915_GEM_DOMAIN_CPU) {33303330- DRM_ERROR("reloc with read/write CPU domains: "33313331- "obj %p target %d offset %d "33323332- "read %08x write %08x",33333333- obj, reloc.target_handle,33343334- (int) reloc.offset,33353335- reloc.read_domains,33363336- reloc.write_domain);33373337- ret = -EINVAL;33383338- break;33393339- }33403340- if (reloc.write_domain && target_obj->pending_write_domain &&33413341- reloc.write_domain != target_obj->pending_write_domain) {33423342- DRM_ERROR("Write domain conflict: "33433343- "obj %p target %d offset %d "33443344- "new %08x old %08x\n",33453345- obj, reloc.target_handle,33463346- (int) reloc.offset,33473347- reloc.write_domain,33483348- target_obj->pending_write_domain);33493349- ret = -EINVAL;33503350- break;33513351- }33523352-33533353- target_obj->pending_read_domains |= reloc.read_domains;33543354- target_obj->pending_write_domain |= reloc.write_domain;33553355-33563356- /* If the relocation already has the right value in it, no33573357- * more work needs to be done.33583358- */33593359- if (target_offset == reloc.presumed_offset)33603360- continue;33613361-33623362- /* Check that the relocation address is valid... */33633363- if (reloc.offset > obj->base.size - 4) {33643364- DRM_ERROR("Relocation beyond object bounds: "33653365- "obj %p target %d offset %d size %d.\n",33663366- obj, reloc.target_handle,33673367- (int) reloc.offset, (int) obj->base.size);33683368- ret = -EINVAL;33693369- break;33703370- }33713371- if (reloc.offset & 3) {33723372- DRM_ERROR("Relocation not 4-byte aligned: "33733373- "obj %p target %d offset %d.\n",33743374- obj, reloc.target_handle,33753375- (int) reloc.offset);33763376- ret = -EINVAL;33773377- break;33783378- }33793379-33803380- /* and points to somewhere within the target object. */33813381- if (reloc.delta >= target_obj->size) {33823382- DRM_ERROR("Relocation beyond target object bounds: "33833383- "obj %p target %d delta %d size %d.\n",33843384- obj, reloc.target_handle,33853385- (int) reloc.delta, (int) target_obj->size);33863386- ret = -EINVAL;33873387- break;33883388- }33893389-33903390- reloc.delta += target_offset;33913391- if (obj->base.write_domain == I915_GEM_DOMAIN_CPU) {33923392- uint32_t page_offset = reloc.offset & ~PAGE_MASK;33933393- char *vaddr;33943394-33953395- vaddr = kmap_atomic(obj->pages[reloc.offset >> PAGE_SHIFT]);33963396- *(uint32_t *)(vaddr + page_offset) = reloc.delta;33973397- kunmap_atomic(vaddr);33983398- } else {33993399- uint32_t __iomem *reloc_entry;34003400- void __iomem *reloc_page;34013401-34023402- ret = i915_gem_object_set_to_gtt_domain(&obj->base, 1);34033403- if (ret)34043404- break;34053405-34063406- /* Map the page containing the relocation we're going to perform. */34073407- reloc.offset += obj->gtt_offset;34083408- reloc_page = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping,34093409- reloc.offset & PAGE_MASK);34103410- reloc_entry = (uint32_t __iomem *)34113411- (reloc_page + (reloc.offset & ~PAGE_MASK));34123412- iowrite32(reloc.delta, reloc_entry);34133413- io_mapping_unmap_atomic(reloc_page);34143414- }34153415-34163416- /* and update the user's relocation entry */34173417- reloc.presumed_offset = target_offset;34183418- if (__copy_to_user_inatomic(&user_relocs[i].presumed_offset,34193419- &reloc.presumed_offset,34203420- sizeof(reloc.presumed_offset))) {34213421- ret = -EFAULT;34223422- break;34233423- }32903290+ /* The target buffer should have appeared before us in the32913291+ * exec_object list, so it should have a GTT space bound by now.32923292+ */32933293+ if (target_offset == 0) {32943294+ DRM_ERROR("No GTT space found for object %d\n",32953295+ reloc->target_handle);32963296+ goto err;34243297 }3425329832993299+ /* Validate that the target is in a valid r/w GPU domain */33003300+ if (reloc->write_domain & (reloc->write_domain - 1)) {33013301+ DRM_ERROR("reloc with multiple write domains: "33023302+ "obj %p target %d offset %d "33033303+ "read %08x write %08x",33043304+ obj, reloc->target_handle,33053305+ (int) reloc->offset,33063306+ reloc->read_domains,33073307+ reloc->write_domain);33083308+ goto err;33093309+ }33103310+ if (reloc->write_domain & I915_GEM_DOMAIN_CPU ||33113311+ reloc->read_domains & I915_GEM_DOMAIN_CPU) {33123312+ DRM_ERROR("reloc with read/write CPU domains: "33133313+ "obj %p target %d offset %d "33143314+ "read %08x write %08x",33153315+ obj, reloc->target_handle,33163316+ (int) reloc->offset,33173317+ reloc->read_domains,33183318+ reloc->write_domain);33193319+ goto err;33203320+ }33213321+ if (reloc->write_domain && target_obj->pending_write_domain &&33223322+ reloc->write_domain != target_obj->pending_write_domain) {33233323+ DRM_ERROR("Write domain conflict: "33243324+ "obj %p target %d offset %d "33253325+ "new %08x old %08x\n",33263326+ obj, reloc->target_handle,33273327+ (int) reloc->offset,33283328+ reloc->write_domain,33293329+ target_obj->pending_write_domain);33303330+ goto err;33313331+ }33323332+33333333+ target_obj->pending_read_domains |= reloc->read_domains;33343334+ target_obj->pending_write_domain |= reloc->write_domain;33353335+33363336+ /* If the relocation already has the right value in it, no33373337+ * more work needs to be done.33383338+ */33393339+ if (target_offset == reloc->presumed_offset)33403340+ goto out;33413341+33423342+ /* Check that the relocation address is valid... */33433343+ if (reloc->offset > obj->base.size - 4) {33443344+ DRM_ERROR("Relocation beyond object bounds: "33453345+ "obj %p target %d offset %d size %d.\n",33463346+ obj, reloc->target_handle,33473347+ (int) reloc->offset,33483348+ (int) obj->base.size);33493349+ goto err;33503350+ }33513351+ if (reloc->offset & 3) {33523352+ DRM_ERROR("Relocation not 4-byte aligned: "33533353+ "obj %p target %d offset %d.\n",33543354+ obj, reloc->target_handle,33553355+ (int) reloc->offset);33563356+ goto err;33573357+ }33583358+33593359+ /* and points to somewhere within the target object. */33603360+ if (reloc->delta >= target_obj->size) {33613361+ DRM_ERROR("Relocation beyond target object bounds: "33623362+ "obj %p target %d delta %d size %d.\n",33633363+ obj, reloc->target_handle,33643364+ (int) reloc->delta,33653365+ (int) target_obj->size);33663366+ goto err;33673367+ }33683368+33693369+ reloc->delta += target_offset;33703370+ if (obj->base.write_domain == I915_GEM_DOMAIN_CPU) {33713371+ uint32_t page_offset = reloc->offset & ~PAGE_MASK;33723372+ char *vaddr;33733373+33743374+ vaddr = kmap_atomic(obj->pages[reloc->offset >> PAGE_SHIFT]);33753375+ *(uint32_t *)(vaddr + page_offset) = reloc->delta;33763376+ kunmap_atomic(vaddr);33773377+ } else {33783378+ struct drm_i915_private *dev_priv = dev->dev_private;33793379+ uint32_t __iomem *reloc_entry;33803380+ void __iomem *reloc_page;33813381+33823382+ ret = i915_gem_object_set_to_gtt_domain(&obj->base, 1);33833383+ if (ret)33843384+ goto err;33853385+33863386+ /* Map the page containing the relocation we're going to perform. */33873387+ reloc->offset += obj->gtt_offset;33883388+ reloc_page = io_mapping_map_atomic_wc(dev_priv->mm.gtt_mapping,33893389+ reloc->offset & PAGE_MASK);33903390+ reloc_entry = (uint32_t __iomem *)33913391+ (reloc_page + (reloc->offset & ~PAGE_MASK));33923392+ iowrite32(reloc->delta, reloc_entry);33933393+ io_mapping_unmap_atomic(reloc_page);33943394+ }33953395+33963396+ /* and update the user's relocation entry */33973397+ reloc->presumed_offset = target_offset;33983398+33993399+out:34003400+ ret = 0;34013401+err:34263402 drm_gem_object_unreference(target_obj);34273403 return ret;34283404}3429340534303406static int34313431-i915_gem_execbuffer_pin(struct drm_device *dev,34323432- struct drm_file *file,34333433- struct drm_gem_object **object_list,34343434- struct drm_i915_gem_exec_object2 *exec_list,34353435- int count)34073407+i915_gem_execbuffer_relocate_object(struct drm_i915_gem_object *obj,34083408+ struct drm_file *file_priv,34093409+ struct drm_i915_gem_exec_object2 *entry)34103410+{34113411+ struct drm_i915_gem_relocation_entry __user *user_relocs;34123412+ int i, ret;34133413+34143414+ user_relocs = (void __user *)(uintptr_t)entry->relocs_ptr;34153415+ for (i = 0; i < entry->relocation_count; i++) {34163416+ struct drm_i915_gem_relocation_entry reloc;34173417+34183418+ if (__copy_from_user_inatomic(&reloc,34193419+ user_relocs+i,34203420+ sizeof(reloc)))34213421+ return -EFAULT;34223422+34233423+ ret = i915_gem_execbuffer_relocate_entry(obj, file_priv, entry, &reloc);34243424+ if (ret)34253425+ return ret;34263426+34273427+ if (__copy_to_user_inatomic(&user_relocs[i].presumed_offset,34283428+ &reloc.presumed_offset,34293429+ sizeof(reloc.presumed_offset)))34303430+ return -EFAULT;34313431+ }34323432+34333433+ return 0;34343434+}34353435+34363436+static int34373437+i915_gem_execbuffer_relocate_object_slow(struct drm_i915_gem_object *obj,34383438+ struct drm_file *file_priv,34393439+ struct drm_i915_gem_exec_object2 *entry,34403440+ struct drm_i915_gem_relocation_entry *relocs)34413441+{34423442+ int i, ret;34433443+34443444+ for (i = 0; i < entry->relocation_count; i++) {34453445+ ret = i915_gem_execbuffer_relocate_entry(obj, file_priv, entry, &relocs[i]);34463446+ if (ret)34473447+ return ret;34483448+ }34493449+34503450+ return 0;34513451+}34523452+34533453+static int34543454+i915_gem_execbuffer_relocate(struct drm_device *dev,34553455+ struct drm_file *file,34563456+ struct drm_gem_object **object_list,34573457+ struct drm_i915_gem_exec_object2 *exec_list,34583458+ int count)34593459+{34603460+ int i, ret;34613461+34623462+ for (i = 0; i < count; i++) {34633463+ struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]);34643464+ obj->base.pending_read_domains = 0;34653465+ obj->base.pending_write_domain = 0;34663466+ ret = i915_gem_execbuffer_relocate_object(obj, file,34673467+ &exec_list[i]);34683468+ if (ret)34693469+ return ret;34703470+ }34713471+34723472+ return 0;34733473+}34743474+34753475+static int34763476+i915_gem_execbuffer_reserve(struct drm_device *dev,34773477+ struct drm_file *file,34783478+ struct drm_gem_object **object_list,34793479+ struct drm_i915_gem_exec_object2 *exec_list,34803480+ int count)34363481{34373482 struct drm_i915_private *dev_priv = dev->dev_private;34383483 int ret, i, retry;···35303499 }3531350035323501 return 0;35023502+}35033503+35043504+static int35053505+i915_gem_execbuffer_relocate_slow(struct drm_device *dev,35063506+ struct drm_file *file,35073507+ struct drm_gem_object **object_list,35083508+ struct drm_i915_gem_exec_object2 *exec_list,35093509+ int count)35103510+{35113511+ struct drm_i915_gem_relocation_entry *reloc;35123512+ int i, total, ret;35133513+35143514+ for (i = 0; i < count; i++) {35153515+ struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]);35163516+ obj->in_execbuffer = false;35173517+ }35183518+35193519+ mutex_unlock(&dev->struct_mutex);35203520+35213521+ total = 0;35223522+ for (i = 0; i < count; i++)35233523+ total += exec_list[i].relocation_count;35243524+35253525+ reloc = drm_malloc_ab(total, sizeof(*reloc));35263526+ if (reloc == NULL) {35273527+ mutex_lock(&dev->struct_mutex);35283528+ return -ENOMEM;35293529+ }35303530+35313531+ total = 0;35323532+ for (i = 0; i < count; i++) {35333533+ struct drm_i915_gem_relocation_entry __user *user_relocs;35343534+35353535+ user_relocs = (void __user *)(uintptr_t)exec_list[i].relocs_ptr;35363536+35373537+ if (copy_from_user(reloc+total, user_relocs,35383538+ exec_list[i].relocation_count *35393539+ sizeof(*reloc))) {35403540+ ret = -EFAULT;35413541+ mutex_lock(&dev->struct_mutex);35423542+ goto err;35433543+ }35443544+35453545+ total += exec_list[i].relocation_count;35463546+ }35473547+35483548+ ret = i915_mutex_lock_interruptible(dev);35493549+ if (ret) {35503550+ mutex_lock(&dev->struct_mutex);35513551+ goto err;35523552+ }35533553+35543554+ ret = i915_gem_execbuffer_reserve(dev, file,35553555+ object_list, exec_list,35563556+ count);35573557+ if (ret)35583558+ goto err;35593559+35603560+ total = 0;35613561+ for (i = 0; i < count; i++) {35623562+ struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]);35633563+ obj->base.pending_read_domains = 0;35643564+ obj->base.pending_write_domain = 0;35653565+ ret = i915_gem_execbuffer_relocate_object_slow(obj, file,35663566+ &exec_list[i],35673567+ reloc + total);35683568+ if (ret)35693569+ goto err;35703570+35713571+ total += exec_list[i].relocation_count;35723572+ }35733573+35743574+ /* Leave the user relocations as are, this is the painfully slow path,35753575+ * and we want to avoid the complication of dropping the lock whilst35763576+ * having buffers reserved in the aperture and so causing spurious35773577+ * ENOSPC for random operations.35783578+ */35793579+35803580+err:35813581+ drm_free_large(reloc);35823582+ return ret;35333583}3534358435353585static int···3742363037433631 for (i = 0; i < count; i++) {37443632 char __user *ptr = (char __user *)(uintptr_t)exec[i].relocs_ptr;37453745- size_t length = exec[i].relocation_count * sizeof(struct drm_i915_gem_relocation_entry);36333633+ int length; /* limited by fault_in_pages_readable() */3746363436353635+ /* First check for malicious input causing overflow */36363636+ if (exec[i].relocation_count >36373637+ INT_MAX / sizeof(struct drm_i915_gem_relocation_entry))36383638+ return -EINVAL;36393639+36403640+ length = exec[i].relocation_count *36413641+ sizeof(struct drm_i915_gem_relocation_entry);37473642 if (!access_ok(VERIFY_READ, ptr, length))37483643 return -EFAULT;37493644···38933774 }3894377538953776 /* Move the objects en-masse into the GTT, evicting if necessary. */38963896- ret = i915_gem_execbuffer_pin(dev, file,38973897- object_list, exec_list,38983898- args->buffer_count);37773777+ ret = i915_gem_execbuffer_reserve(dev, file,37783778+ object_list, exec_list,37793779+ args->buffer_count);38993780 if (ret)39003781 goto err;3901378239023783 /* The objects are in their final locations, apply the relocations. */39033903- for (i = 0; i < args->buffer_count; i++) {39043904- struct drm_i915_gem_object *obj = to_intel_bo(object_list[i]);39053905- obj->base.pending_read_domains = 0;39063906- obj->base.pending_write_domain = 0;39073907- ret = i915_gem_execbuffer_relocate(obj, file, &exec_list[i]);37843784+ ret = i915_gem_execbuffer_relocate(dev, file,37853785+ object_list, exec_list,37863786+ args->buffer_count);37873787+ if (ret) {37883788+ if (ret == -EFAULT) {37893789+ ret = i915_gem_execbuffer_relocate_slow(dev, file,37903790+ object_list,37913791+ exec_list,37923792+ args->buffer_count);37933793+ BUG_ON(!mutex_is_locked(&dev->struct_mutex));37943794+ }39083795 if (ret)39093796 goto err;39103797 }
+20-20
drivers/gpu/drm/i915/i915_suspend.c
···239239 if (drm_core_check_feature(dev, DRIVER_MODESET))240240 return;241241242242+ /* Cursor state */243243+ dev_priv->saveCURACNTR = I915_READ(CURACNTR);244244+ dev_priv->saveCURAPOS = I915_READ(CURAPOS);245245+ dev_priv->saveCURABASE = I915_READ(CURABASE);246246+ dev_priv->saveCURBCNTR = I915_READ(CURBCNTR);247247+ dev_priv->saveCURBPOS = I915_READ(CURBPOS);248248+ dev_priv->saveCURBBASE = I915_READ(CURBBASE);249249+ if (IS_GEN2(dev))250250+ dev_priv->saveCURSIZE = I915_READ(CURSIZE);251251+242252 if (HAS_PCH_SPLIT(dev)) {243253 dev_priv->savePCH_DREF_CONTROL = I915_READ(PCH_DREF_CONTROL);244254 dev_priv->saveDISP_ARB_CTL = I915_READ(DISP_ARB_CTL);···539529 I915_WRITE(DSPBCNTR, dev_priv->saveDSPBCNTR);540530 I915_WRITE(DSPBADDR, I915_READ(DSPBADDR));541531532532+ /* Cursor state */533533+ I915_WRITE(CURAPOS, dev_priv->saveCURAPOS);534534+ I915_WRITE(CURACNTR, dev_priv->saveCURACNTR);535535+ I915_WRITE(CURABASE, dev_priv->saveCURABASE);536536+ I915_WRITE(CURBPOS, dev_priv->saveCURBPOS);537537+ I915_WRITE(CURBCNTR, dev_priv->saveCURBCNTR);538538+ I915_WRITE(CURBBASE, dev_priv->saveCURBBASE);539539+ if (IS_GEN2(dev))540540+ I915_WRITE(CURSIZE, dev_priv->saveCURSIZE);541541+542542 return;543543}544544···562542 /* This is only meaningful in non-KMS mode */563543 /* Don't save them in KMS mode */564544 i915_save_modeset_reg(dev);565565-566566- /* Cursor state */567567- dev_priv->saveCURACNTR = I915_READ(CURACNTR);568568- dev_priv->saveCURAPOS = I915_READ(CURAPOS);569569- dev_priv->saveCURABASE = I915_READ(CURABASE);570570- dev_priv->saveCURBCNTR = I915_READ(CURBCNTR);571571- dev_priv->saveCURBPOS = I915_READ(CURBPOS);572572- dev_priv->saveCURBBASE = I915_READ(CURBBASE);573573- if (IS_GEN2(dev))574574- dev_priv->saveCURSIZE = I915_READ(CURSIZE);575545576546 /* CRT state */577547 if (HAS_PCH_SPLIT(dev)) {···666656 /* This is only meaningful in non-KMS mode */667657 /* Don't restore them in KMS mode */668658 i915_restore_modeset_reg(dev);669669-670670- /* Cursor state */671671- I915_WRITE(CURAPOS, dev_priv->saveCURAPOS);672672- I915_WRITE(CURACNTR, dev_priv->saveCURACNTR);673673- I915_WRITE(CURABASE, dev_priv->saveCURABASE);674674- I915_WRITE(CURBPOS, dev_priv->saveCURBPOS);675675- I915_WRITE(CURBCNTR, dev_priv->saveCURBCNTR);676676- I915_WRITE(CURBBASE, dev_priv->saveCURBBASE);677677- if (IS_GEN2(dev))678678- I915_WRITE(CURSIZE, dev_priv->saveCURSIZE);679659680660 /* CRT state */681661 if (HAS_PCH_SPLIT(dev))
+6-1
drivers/gpu/drm/i915/intel_display.c
···53365336 struct drm_i915_private *dev_priv = dev->dev_private;53375337 struct intel_encoder *encoder;53385338 bool dpd_is_edp = false;53395339+ bool has_lvds = false;5339534053405341 if (IS_MOBILE(dev) && !IS_I830(dev))53415341- intel_lvds_init(dev);53425342+ has_lvds = intel_lvds_init(dev);53435343+ if (!has_lvds && !HAS_PCH_SPLIT(dev)) {53445344+ /* disable the panel fitter on everything but LVDS */53455345+ I915_WRITE(PFIT_CONTROL, 0);53465346+ }5342534753435348 if (HAS_PCH_SPLIT(dev)) {53445349 dpd_is_edp = intel_dpd_is_edp(dev);
+61-93
drivers/gpu/drm/i915/intel_dp.c
···584584 mode->clock = dev_priv->panel_fixed_mode->clock;585585 }586586587587- /* Just use VBT values for eDP */588588- if (is_edp(intel_dp)) {589589- intel_dp->lane_count = dev_priv->edp.lanes;590590- intel_dp->link_bw = dev_priv->edp.rate;591591- adjusted_mode->clock = intel_dp_link_clock(intel_dp->link_bw);592592- DRM_DEBUG_KMS("eDP link bw %02x lane count %d clock %d\n",593593- intel_dp->link_bw, intel_dp->lane_count,594594- adjusted_mode->clock);595595- return true;596596- }597597-598587 for (lane_count = 1; lane_count <= max_lane_count; lane_count <<= 1) {599588 for (clock = 0; clock <= max_clock; clock++) {600589 int link_avail = intel_dp_max_data_rate(intel_dp_link_clock(bws[clock]), lane_count);···600611 return true;601612 }602613 }614614+ }615615+616616+ if (is_edp(intel_dp)) {617617+ /* okay we failed just pick the highest */618618+ intel_dp->lane_count = max_lane_count;619619+ intel_dp->link_bw = bws[max_clock];620620+ adjusted_mode->clock = intel_dp_link_clock(intel_dp->link_bw);621621+ DRM_DEBUG_KMS("Force picking display port link bw %02x lane "622622+ "count %d clock %d\n",623623+ intel_dp->link_bw, intel_dp->lane_count,624624+ adjusted_mode->clock);625625+626626+ return true;603627 }604628605629 return false;···10891087}1090108810911089static uint32_t10921092-intel_dp_signal_levels(struct intel_dp *intel_dp)10901090+intel_dp_signal_levels(uint8_t train_set, int lane_count)10931091{10941094- struct drm_device *dev = intel_dp->base.base.dev;10951095- struct drm_i915_private *dev_priv = dev->dev_private;10961096- uint32_t signal_levels = 0;10971097- u8 train_set = intel_dp->train_set[0];10981098- u32 vswing = train_set & DP_TRAIN_VOLTAGE_SWING_MASK;10991099- u32 preemphasis = train_set & DP_TRAIN_PRE_EMPHASIS_MASK;10921092+ uint32_t signal_levels = 0;1100109311011101- if (is_edp(intel_dp)) {11021102- vswing = dev_priv->edp.vswing;11031103- preemphasis = dev_priv->edp.preemphasis;11041104- }11051105-11061106- switch (vswing) {10941094+ switch (train_set & DP_TRAIN_VOLTAGE_SWING_MASK) {11071095 case DP_TRAIN_VOLTAGE_SWING_400:11081096 default:11091097 signal_levels |= DP_VOLTAGE_0_4;···11081116 signal_levels |= DP_VOLTAGE_1_2;11091117 break;11101118 }11111111- switch (preemphasis) {11191119+ switch (train_set & DP_TRAIN_PRE_EMPHASIS_MASK) {11121120 case DP_TRAIN_PRE_EMPHASIS_0:11131121 default:11141122 signal_levels |= DP_PRE_EMPHASIS_0;···11951203}1196120411971205static bool11981198-intel_dp_aux_handshake_required(struct intel_dp *intel_dp)11991199-{12001200- struct drm_device *dev = intel_dp->base.base.dev;12011201- struct drm_i915_private *dev_priv = dev->dev_private;12021202-12031203- if (is_edp(intel_dp) && dev_priv->no_aux_handshake)12041204- return false;12051205-12061206- return true;12071207-}12081208-12091209-static bool12101206intel_dp_set_link_train(struct intel_dp *intel_dp,12111207 uint32_t dp_reg_value,12121208 uint8_t dp_train_pat)···1205122512061226 I915_WRITE(intel_dp->output_reg, dp_reg_value);12071227 POSTING_READ(intel_dp->output_reg);12081208-12091209- if (!intel_dp_aux_handshake_required(intel_dp))12101210- return true;1211122812121229 intel_dp_aux_native_write_1(intel_dp,12131230 DP_TRAINING_PATTERN_SET,···12381261 POSTING_READ(intel_dp->output_reg);12391262 intel_wait_for_vblank(dev, intel_crtc->pipe);1240126312411241- if (intel_dp_aux_handshake_required(intel_dp))12421242- /* Write the link configuration data */12431243- intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET,12441244- intel_dp->link_configuration,12451245- DP_LINK_CONFIGURATION_SIZE);12641264+ /* Write the link configuration data */12651265+ intel_dp_aux_native_write(intel_dp, DP_LINK_BW_SET,12661266+ intel_dp->link_configuration,12671267+ DP_LINK_CONFIGURATION_SIZE);1246126812471269 DP |= DP_PORT_EN;12481270 if (HAS_PCH_CPT(dev) && !is_edp(intel_dp))···12591283 signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]);12601284 DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels;12611285 } else {12621262- signal_levels = intel_dp_signal_levels(intel_dp);12861286+ signal_levels = intel_dp_signal_levels(intel_dp->train_set[0], intel_dp->lane_count);12631287 DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels;12641288 }12651289···12731297 break;12741298 /* Set training pattern 1 */1275129912761276- udelay(500);12771277- if (intel_dp_aux_handshake_required(intel_dp)) {13001300+ udelay(100);13011301+ if (!intel_dp_get_link_status(intel_dp))12781302 break;12791279- } else {12801280- if (!intel_dp_get_link_status(intel_dp))12811281- break;1282130312831283- if (intel_clock_recovery_ok(intel_dp->link_status, intel_dp->lane_count)) {12841284- clock_recovery = true;12851285- break;12861286- }12871287-12881288- /* Check to see if we've tried the max voltage */12891289- for (i = 0; i < intel_dp->lane_count; i++)12901290- if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0)12911291- break;12921292- if (i == intel_dp->lane_count)12931293- break;12941294-12951295- /* Check to see if we've tried the same voltage 5 times */12961296- if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) {12971297- ++tries;12981298- if (tries == 5)12991299- break;13001300- } else13011301- tries = 0;13021302- voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK;13031303-13041304- /* Compute new intel_dp->train_set as requested by target */13051305- intel_get_adjust_train(intel_dp);13041304+ if (intel_clock_recovery_ok(intel_dp->link_status, intel_dp->lane_count)) {13051305+ clock_recovery = true;13061306+ break;13061307 }13081308+13091309+ /* Check to see if we've tried the max voltage */13101310+ for (i = 0; i < intel_dp->lane_count; i++)13111311+ if ((intel_dp->train_set[i] & DP_TRAIN_MAX_SWING_REACHED) == 0)13121312+ break;13131313+ if (i == intel_dp->lane_count)13141314+ break;13151315+13161316+ /* Check to see if we've tried the same voltage 5 times */13171317+ if ((intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK) == voltage) {13181318+ ++tries;13191319+ if (tries == 5)13201320+ break;13211321+ } else13221322+ tries = 0;13231323+ voltage = intel_dp->train_set[0] & DP_TRAIN_VOLTAGE_SWING_MASK;13241324+13251325+ /* Compute new intel_dp->train_set as requested by target */13261326+ intel_get_adjust_train(intel_dp);13071327 }1308132813091329 intel_dp->DP = DP;···13261354 signal_levels = intel_gen6_edp_signal_levels(intel_dp->train_set[0]);13271355 DP = (DP & ~EDP_LINK_TRAIN_VOL_EMP_MASK_SNB) | signal_levels;13281356 } else {13291329- signal_levels = intel_dp_signal_levels(intel_dp);13571357+ signal_levels = intel_dp_signal_levels(intel_dp->train_set[0], intel_dp->lane_count);13301358 DP = (DP & ~(DP_VOLTAGE_MASK|DP_PRE_EMPHASIS_MASK)) | signal_levels;13311359 }13321360···13401368 DP_TRAINING_PATTERN_2))13411369 break;1342137013431343- udelay(500);13441344-13451345- if (!intel_dp_aux_handshake_required(intel_dp)) {13711371+ udelay(400);13721372+ if (!intel_dp_get_link_status(intel_dp))13461373 break;13471347- } else {13481348- if (!intel_dp_get_link_status(intel_dp))13491349- break;1350137413511351- if (intel_channel_eq_ok(intel_dp)) {13521352- channel_eq = true;13531353- break;13541354- }13551355-13561356- /* Try 5 times */13571357- if (tries > 5)13581358- break;13591359-13601360- /* Compute new intel_dp->train_set as requested by target */13611361- intel_get_adjust_train(intel_dp);13621362- ++tries;13751375+ if (intel_channel_eq_ok(intel_dp)) {13761376+ channel_eq = true;13771377+ break;13631378 }13791379+13801380+ /* Try 5 times */13811381+ if (tries > 5)13821382+ break;13831383+13841384+ /* Compute new intel_dp->train_set as requested by target */13851385+ intel_get_adjust_train(intel_dp);13861386+ ++tries;13641387 }13881388+13651389 if (HAS_PCH_CPT(dev) && !is_edp(intel_dp))13661390 reg = DP | DP_LINK_TRAIN_OFF_CPT;13671391 else
···837837 * Create the connector, register the LVDS DDC bus, and try to figure out what838838 * modes we can display on the LVDS panel (if present).839839 */840840-void intel_lvds_init(struct drm_device *dev)840840+bool intel_lvds_init(struct drm_device *dev)841841{842842 struct drm_i915_private *dev_priv = dev->dev_private;843843 struct intel_lvds *intel_lvds;···853853854854 /* Skip init on machines we know falsely report LVDS */855855 if (dmi_check_system(intel_no_lvds))856856- return;856856+ return false;857857858858 pin = GMBUS_PORT_PANEL;859859 if (!lvds_is_present_in_vbt(dev, &pin)) {860860 DRM_DEBUG_KMS("LVDS is not present in VBT\n");861861- return;861861+ return false;862862 }863863864864 if (HAS_PCH_SPLIT(dev)) {865865 if ((I915_READ(PCH_LVDS) & LVDS_DETECTED) == 0)866866- return;866866+ return false;867867 if (dev_priv->edp.support) {868868 DRM_DEBUG_KMS("disable LVDS for eDP support\n");869869- return;869869+ return false;870870 }871871 }872872873873 if (!intel_lvds_ddc_probe(dev, pin)) {874874 DRM_DEBUG_KMS("LVDS did not respond to DDC probe\n");875875- return;875875+ return false;876876 }877877878878 intel_lvds = kzalloc(sizeof(struct intel_lvds), GFP_KERNEL);879879 if (!intel_lvds) {880880- return;880880+ return false;881881 }882882883883 intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL);884884 if (!intel_connector) {885885 kfree(intel_lvds);886886- return;886886+ return false;887887 }888888889889 if (!HAS_PCH_SPLIT(dev)) {···10261026 /* keep the LVDS connector */10271027 dev_priv->int_lvds_connector = connector;10281028 drm_sysfs_connector_add(connector);10291029- return;10291029+ return true;1030103010311031failed:10321032 DRM_DEBUG_KMS("No LVDS modes found, disabling.\n");···10341034 drm_encoder_cleanup(encoder);10351035 kfree(intel_lvds);10361036 kfree(intel_connector);10371037+ return false;10371038}
+25-59
drivers/gpu/drm/i915/intel_sdvo.c
···107107 * This is set if we treat the device as HDMI, instead of DVI.108108 */109109 bool is_hdmi;110110- bool has_audio;110110+ bool has_hdmi_monitor;111111+ bool has_hdmi_audio;111112112113 /**113114 * This is set if we detect output of sdvo device as LVDS and···10241023 if (!intel_sdvo_set_target_input(intel_sdvo))10251024 return;1026102510271027- if (intel_sdvo->is_hdmi &&10261026+ if (intel_sdvo->has_hdmi_monitor &&10281027 !intel_sdvo_set_avi_infoframe(intel_sdvo))10291028 return;10301029···10641063 }10651064 if (intel_crtc->pipe == 1)10661065 sdvox |= SDVO_PIPE_B_SELECT;10671067- if (intel_sdvo->has_audio)10661066+ if (intel_sdvo->has_hdmi_audio)10681067 sdvox |= SDVO_AUDIO_ENABLE;1069106810701069 if (INTEL_INFO(dev)->gen >= 4) {···12961295 return drm_get_edid(connector, &sdvo->ddc);12971296}1298129712991299-static struct drm_connector *13001300-intel_find_analog_connector(struct drm_device *dev)13011301-{13021302- struct drm_connector *connector;13031303- struct intel_sdvo *encoder;13041304-13051305- list_for_each_entry(encoder,13061306- &dev->mode_config.encoder_list,13071307- base.base.head) {13081308- if (encoder->base.type == INTEL_OUTPUT_ANALOG) {13091309- list_for_each_entry(connector,13101310- &dev->mode_config.connector_list,13111311- head) {13121312- if (&encoder->base ==13131313- intel_attached_encoder(connector))13141314- return connector;13151315- }13161316- }13171317- }13181318-13191319- return NULL;13201320-}13211321-13221322-static int13231323-intel_analog_is_connected(struct drm_device *dev)13241324-{13251325- struct drm_connector *analog_connector;13261326-13271327- analog_connector = intel_find_analog_connector(dev);13281328- if (!analog_connector)13291329- return false;13301330-13311331- if (analog_connector->funcs->detect(analog_connector, false) ==13321332- connector_status_disconnected)13331333- return false;13341334-13351335- return true;13361336-}13371337-13381298/* Mac mini hack -- use the same DDC as the analog connector */13391299static struct edid *13401300intel_sdvo_get_analog_edid(struct drm_connector *connector)13411301{13421302 struct drm_i915_private *dev_priv = connector->dev->dev_private;1343130313441344- if (!intel_analog_is_connected(connector->dev))13451345- return NULL;13461346-13471347- return drm_get_edid(connector, &dev_priv->gmbus[dev_priv->crt_ddc_pin].adapter);13041304+ return drm_get_edid(connector,13051305+ &dev_priv->gmbus[dev_priv->crt_ddc_pin].adapter);13481306}1349130713501308enum drm_connector_status···13481388 /* DDC bus is shared, match EDID to connector type */13491389 if (edid->input & DRM_EDID_INPUT_DIGITAL) {13501390 status = connector_status_connected;13511351- intel_sdvo->is_hdmi = drm_detect_hdmi_monitor(edid);13521352- intel_sdvo->has_audio = drm_detect_monitor_audio(edid);13911391+ if (intel_sdvo->is_hdmi) {13921392+ intel_sdvo->has_hdmi_monitor = drm_detect_hdmi_monitor(edid);13931393+ intel_sdvo->has_hdmi_audio = drm_detect_monitor_audio(edid);13941394+ }13531395 }13541396 connector->display_info.raw_edid = NULL;13551397 kfree(edid);···13601398 if (status == connector_status_connected) {13611399 struct intel_sdvo_connector *intel_sdvo_connector = to_intel_sdvo_connector(connector);13621400 if (intel_sdvo_connector->force_audio)13631363- intel_sdvo->has_audio = intel_sdvo_connector->force_audio > 0;14011401+ intel_sdvo->has_hdmi_audio = intel_sdvo_connector->force_audio > 0;13641402 }1365140313661404 return status;···13771415 if (!intel_sdvo_write_cmd(intel_sdvo,13781416 SDVO_CMD_GET_ATTACHED_DISPLAYS, NULL, 0))13791417 return connector_status_unknown;13801380- if (intel_sdvo->is_tv) {13811381- /* add 30ms delay when the output type is SDVO-TV */14181418+14191419+ /* add 30ms delay when the output type might be TV */14201420+ if (intel_sdvo->caps.output_flags &14211421+ (SDVO_OUTPUT_SVID0 | SDVO_OUTPUT_CVBS0))13821422 mdelay(30);13831383- }14231423+13841424 if (!intel_sdvo_read_response(intel_sdvo, &response, 2))13851425 return connector_status_unknown;13861426···14361472 edid = intel_sdvo_get_analog_edid(connector);1437147314381474 if (edid != NULL) {14391439- drm_mode_connector_update_edid_property(connector, edid);14401440- drm_add_edid_modes(connector, edid);14751475+ if (edid->input & DRM_EDID_INPUT_DIGITAL) {14761476+ drm_mode_connector_update_edid_property(connector, edid);14771477+ drm_add_edid_modes(connector, edid);14781478+ }14411479 connector->display_info.raw_edid = NULL;14421480 kfree(edid);14431481 }···1679171316801714 intel_sdvo_connector->force_audio = val;1681171516821682- if (val > 0 && intel_sdvo->has_audio)17161716+ if (val > 0 && intel_sdvo->has_hdmi_audio)16831717 return 0;16841684- if (val < 0 && !intel_sdvo->has_audio)17181718+ if (val < 0 && !intel_sdvo->has_hdmi_audio)16851719 return 0;1686172016871687- intel_sdvo->has_audio = val > 0;17211721+ intel_sdvo->has_hdmi_audio = val > 0;16881722 goto done;16891723 }16901724···20362070 intel_sdvo_set_colorimetry(intel_sdvo,20372071 SDVO_COLORIMETRY_RGB256);20382072 connector->connector_type = DRM_MODE_CONNECTOR_HDMIA;20732073+20742074+ intel_sdvo_add_hdmi_properties(intel_sdvo_connector);20392075 intel_sdvo->is_hdmi = true;20402076 }20412077 intel_sdvo->base.clone_mask = ((1 << INTEL_SDVO_NON_TV_CLONE_BIT) |20422078 (1 << INTEL_ANALOG_CLONE_BIT));2043207920442080 intel_sdvo_connector_init(intel_sdvo_connector, intel_sdvo);20452045-20462046- intel_sdvo_add_hdmi_properties(intel_sdvo_connector);2047208120482082 return true;20492083}
+1
drivers/gpu/drm/radeon/atom.c
···112112 base += 3;113113 break;114114 case ATOM_IIO_WRITE:115115+ (void)ctx->card->ioreg_read(ctx->card, CU16(base + 1));115116 ctx->card->ioreg_write(ctx->card, CU16(base + 1), temp);116117 base += 3;117118 break;
+1-1
drivers/gpu/drm/radeon/r600_cs.c
···315315 if (array_mode == V_0280A0_ARRAY_LINEAR_GENERAL) {316316 /* the initial DDX does bad things with the CB size occasionally */317317 /* it rounds up height too far for slice tile max but the BO is smaller */318318- tmp = (height - 7) * pitch * bpe;318318+ tmp = (height - 7) * 8 * bpe;319319 if ((tmp + track->cb_color_bo_offset[i]) > radeon_bo_size(track->cb_color_bo[i])) {320320 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]));321321 return -EINVAL;
···7575 In doubt, say Y.76767777config I2C_SMBUS7878- tristate7979- prompt "SMBus-specific protocols" if !I2C_HELPER_AUTO7878+ tristate "SMBus-specific protocols" if !I2C_HELPER_AUTO8079 help8180 Say Y here if you want support for SMBus extensions to the I2C8281 specification. At the moment, the only supported extension is
+1-13
drivers/i2c/algos/Kconfig
···33#4455menu "I2C Algorithms"66- depends on !I2C_HELPER_AUTO66+ visible if !I2C_HELPER_AUTO7788config I2C_ALGOBIT99 tristate "I2C bit-banging interfaces"···1515 tristate "I2C PCA 9564 interfaces"16161717endmenu1818-1919-# In automatic configuration mode, we still have to define the2020-# symbols to avoid unmet dependencies.2121-2222-if I2C_HELPER_AUTO2323-config I2C_ALGOBIT2424- tristate2525-config I2C_ALGOPCF2626- tristate2727-config I2C_ALGOPCA2828- tristate2929-endif
-30
drivers/infiniband/core/ud_header.c
···278278EXPORT_SYMBOL(ib_ud_header_init);279279280280/**281281- * ib_lrh_header_pack - Pack LRH header struct into wire format282282- * @lrh:unpacked LRH header struct283283- * @buf:Buffer to pack into284284- *285285- * ib_lrh_header_pack() packs the LRH header structure @lrh into286286- * wire format in the buffer @buf.287287- */288288-int ib_lrh_header_pack(struct ib_unpacked_lrh *lrh, void *buf)289289-{290290- ib_pack(lrh_table, ARRAY_SIZE(lrh_table), lrh, buf);291291- return 0;292292-}293293-EXPORT_SYMBOL(ib_lrh_header_pack);294294-295295-/**296296- * ib_lrh_header_unpack - Unpack LRH structure from wire format297297- * @lrh:unpacked LRH header struct298298- * @buf:Buffer to pack into299299- *300300- * ib_lrh_header_unpack() unpacks the LRH header structure from301301- * wire format (in buf) into @lrh.302302- */303303-int ib_lrh_header_unpack(void *buf, struct ib_unpacked_lrh *lrh)304304-{305305- ib_unpack(lrh_table, ARRAY_SIZE(lrh_table), buf, lrh);306306- return 0;307307-}308308-EXPORT_SYMBOL(ib_lrh_header_unpack);309309-310310-/**311281 * ib_ud_header_pack - Pack UD header struct into wire format312282 * @header:UD header struct313283 * @buf:Buffer to pack into
···77 This is not related to standard keyboard LEDs which are controlled88 via the input system.991010-if NEW_LEDS1111-1210config LEDS_CLASS1311 bool "LED Class Support"1212+ depends on NEW_LEDS1413 help1514 This option enables the led sysfs class in /sys/class/leds. You'll1615 need this to do anything useful with LEDs. If unsure, say N.17161818-if LEDS_CLASS1717+if NEW_LEDS19182019comment "LED drivers"21202221config LEDS_88PM860X2322 tristate "LED Support for Marvell 88PM860x PMIC"2323+ depends on LEDS_CLASS2424 depends on MFD_88PM860X2525 help2626 This option enables support for on-chip LED drivers found on Marvell···28282929config LEDS_ATMEL_PWM3030 tristate "LED Support using Atmel PWM outputs"3131+ depends on LEDS_CLASS3132 depends on ATMEL_PWM3233 help3334 This option enables support for LEDs driven using outputs···36353736config LEDS_LOCOMO3837 tristate "LED Support for Locomo device"3838+ depends on LEDS_CLASS3939 depends on SHARP_LOCOMO4040 help4141 This option enables support for the LEDs on Sharp Locomo.···44424543config LEDS_MIKROTIK_RB5324644 tristate "LED Support for Mikrotik Routerboard 532"4545+ depends on LEDS_CLASS4746 depends on MIKROTIK_RB5324847 help4948 This option enables support for the so called "User LED" of···52495350config LEDS_S3C24XX5451 tristate "LED Support for Samsung S3C24XX GPIO LEDs"5252+ depends on LEDS_CLASS5553 depends on ARCH_S3C24105654 help5755 This option enables support for LEDs connected to GPIO lines···60566157config LEDS_AMS_DELTA6258 tristate "LED Support for the Amstrad Delta (E3)"5959+ depends on LEDS_CLASS6360 depends on MACH_AMS_DELTA6461 help6562 This option enables support for the LEDs on Amstrad Delta (E3).66636764config LEDS_NET48XX6865 tristate "LED Support for Soekris net48xx series Error LED"6666+ depends on LEDS_CLASS6967 depends on SCx200_GPIO7068 help7169 This option enables support for the Soekris net4801 and net4826 error···85798680config LEDS_FSG8781 tristate "LED Support for the Freecom FSG-3"8282+ depends on LEDS_CLASS8883 depends on MACH_FSG8984 help9085 This option enables support for the LEDs on the Freecom FSG-3.91869287config LEDS_WRAP9388 tristate "LED Support for the WRAP series LEDs"8989+ depends on LEDS_CLASS9490 depends on SCx200_GPIO9591 help9692 This option enables support for the PCEngines WRAP programmable LEDs.97939894config LEDS_ALIX29995 tristate "LED Support for ALIX.2 and ALIX.3 series"9696+ depends on LEDS_CLASS10097 depends on X86 && !GPIO_CS5535 && !CS5535_GPIO10198 help10299 This option enables support for the PCEngines ALIX.2 and ALIX.3 LEDs.···1079810899config LEDS_H1940109100 tristate "LED Support for iPAQ H1940 device"101101+ depends on LEDS_CLASS110102 depends on ARCH_H1940111103 help112104 This option enables support for the LEDs on the h1940.113105114106config LEDS_COBALT_QUBE115107 tristate "LED Support for the Cobalt Qube series front LED"108108+ depends on LEDS_CLASS116109 depends on MIPS_COBALT117110 help118111 This option enables support for the front LED on Cobalt Qube series···128117129118config LEDS_SUNFIRE130119 tristate "LED support for SunFire servers."120120+ depends on LEDS_CLASS131121 depends on SPARC64132122 select LEDS_TRIGGERS133123 help···137125138126config LEDS_HP6XX139127 tristate "LED Support for the HP Jornada 6xx"128128+ depends on LEDS_CLASS140129 depends on SH_HP6XX141130 help142131 This option enables LED support for the handheld···145132146133config LEDS_PCA9532147134 tristate "LED driver for PCA9532 dimmer"135135+ depends on LEDS_CLASS148136 depends on I2C && INPUT && EXPERIMENTAL149137 help150138 This option enables support for NXP pca9532···154140155141config LEDS_GPIO156142 tristate "LED Support for GPIO connected LEDs"143143+ depends on LEDS_CLASS157144 depends on GENERIC_GPIO158145 help159146 This option enables support for the LEDs connected to GPIO···182167183168config LEDS_LP3944184169 tristate "LED Support for N.S. LP3944 (Fun Light) I2C chip"170170+ depends on LEDS_CLASS185171 depends on I2C186172 help187173 This option enables support for LEDs connected to the National···212196213197config LEDS_CLEVO_MAIL214198 tristate "Mail LED on Clevo notebook"199199+ depends on LEDS_CLASS215200 depends on X86 && SERIO_I8042 && DMI216201 help217202 This driver makes the mail LED accessible from userspace···243226244227config LEDS_PCA955X245228 tristate "LED Support for PCA955x I2C chips"229229+ depends on LEDS_CLASS246230 depends on I2C247231 help248232 This option enables support for LEDs connected to PCA955x···252234253235config LEDS_WM831X_STATUS254236 tristate "LED support for status LEDs on WM831x PMICs"237237+ depends on LEDS_CLASS255238 depends on MFD_WM831X256239 help257240 This option enables support for the status LEDs of the WM831x···260241261242config LEDS_WM8350262243 tristate "LED Support for WM8350 AudioPlus PMIC"244244+ depends on LEDS_CLASS263245 depends on MFD_WM8350264246 help265247 This option enables support for LEDs driven by the Wolfson···268248269249config LEDS_DA903X270250 tristate "LED Support for DA9030/DA9034 PMIC"251251+ depends on LEDS_CLASS271252 depends on PMIC_DA903X272253 help273254 This option enables support for on-chip LED drivers found···276255277256config LEDS_DAC124S085278257 tristate "LED Support for DAC124S085 SPI DAC"258258+ depends on LEDS_CLASS279259 depends on SPI280260 help281261 This option enables support for DAC124S085 SPI DAC from NatSemi,···284262285263config LEDS_PWM286264 tristate "PWM driven LED Support"265265+ depends on LEDS_CLASS287266 depends on HAVE_PWM288267 help289268 This option enables support for pwm driven LEDs290269291270config LEDS_REGULATOR292271 tristate "REGULATOR driven LED support"272272+ depends on LEDS_CLASS293273 depends on REGULATOR294274 help295275 This option enables support for regulator driven LEDs.296276297277config LEDS_BD2802298278 tristate "LED driver for BD2802 RGB LED"279279+ depends on LEDS_CLASS299280 depends on I2C300281 help301282 This option enables support for BD2802GU RGB LED driver chips···306281307282config LEDS_INTEL_SS4200308283 tristate "LED driver for Intel NAS SS4200 series"284284+ depends on LEDS_CLASS309285 depends on PCI && DMI310286 help311287 This option enables support for the Intel SS4200 series of···316290317291config LEDS_LT3593318292 tristate "LED driver for LT3593 controllers"293293+ depends on LEDS_CLASS319294 depends on GENERIC_GPIO320295 help321296 This option enables support for LEDs driven by a Linear Technology···325298326299config LEDS_ADP5520327300 tristate "LED Support for ADP5520/ADP5501 PMIC"301301+ depends on LEDS_CLASS328302 depends on PMIC_ADP5520329303 help330304 This option enables support for on-chip LED drivers found···336308337309config LEDS_DELL_NETBOOKS338310 tristate "External LED on Dell Business Netbooks"311311+ depends on LEDS_CLASS339312 depends on X86 && ACPI_WMI340313 help341314 This adds support for the Latitude 2100 and similar···344315345316config LEDS_MC13783346317 tristate "LED Support for MC13783 PMIC"318318+ depends on LEDS_CLASS347319 depends on MFD_MC13783348320 help349321 This option enable support for on-chip LED drivers found···352322353323config LEDS_NS2354324 tristate "LED support for Network Space v2 GPIO LEDs"325325+ depends on LEDS_CLASS355326 depends on MACH_NETSPACE_V2 || MACH_INETSPACE_V2 || MACH_NETSPACE_MAX_V2 || D2NET_V2356327 default y357328 help···371340372341config LEDS_TRIGGERS373342 bool "LED Trigger support"343343+ depends on LEDS_CLASS374344 help375345 This option enables trigger support for the leds class.376346 These triggers allow kernel events to drive the LEDs and can377347 be configured via sysfs. If unsure, say Y.378348379379-if LEDS_TRIGGERS380380-381349comment "LED Triggers"382350383351config LEDS_TRIGGER_TIMER384352 tristate "LED Timer Trigger"353353+ depends on LEDS_TRIGGERS385354 help386355 This allows LEDs to be controlled by a programmable timer387356 via sysfs. Some LED hardware can be programmed to start···393362config LEDS_TRIGGER_IDE_DISK394363 bool "LED IDE Disk Trigger"395364 depends on IDE_GD_ATA365365+ depends on LEDS_TRIGGERS396366 help397367 This allows LEDs to be controlled by IDE disk activity.398368 If unsure, say Y.399369400370config LEDS_TRIGGER_HEARTBEAT401371 tristate "LED Heartbeat Trigger"372372+ depends on LEDS_TRIGGERS402373 help403374 This allows LEDs to be controlled by a CPU load average.404375 The flash frequency is a hyperbolic function of the 1-minute···409376410377config LEDS_TRIGGER_BACKLIGHT411378 tristate "LED backlight Trigger"379379+ depends on LEDS_TRIGGERS412380 help413381 This allows LEDs to be controlled as a backlight device: they414382 turn off and on when the display is blanked and unblanked.···418384419385config LEDS_TRIGGER_GPIO420386 tristate "LED GPIO Trigger"387387+ depends on LEDS_TRIGGERS421388 depends on GPIOLIB422389 help423390 This allows LEDs to be controlled by gpio events. It's good···431396432397config LEDS_TRIGGER_DEFAULT_ON433398 tristate "LED Default ON Trigger"399399+ depends on LEDS_TRIGGERS434400 help435401 This allows LEDs to be initialised in the ON state.436402 If unsure, say Y.437403438404comment "iptables trigger is under Netfilter config (LED target)"439405 depends on LEDS_TRIGGERS440440-441441-endif # LEDS_TRIGGERS442442-443443-endif # LEDS_CLASS444406445407endif # NEW_LEDS
+1
drivers/macintosh/Kconfig
···102102config ADB_PMU_LED_IDE103103 bool "Use front LED as IDE LED by default"104104 depends on ADB_PMU_LED105105+ depends on LEDS_CLASS105106 select LEDS_TRIGGERS106107 select LEDS_TRIGGER_IDE_DISK107108 help
+4-4
drivers/media/common/tuners/Kconfig
···3131 select MEDIA_TUNER_TDA9887 if !MEDIA_TUNER_CUSTOMISE3232 select MEDIA_TUNER_MC44S803 if !MEDIA_TUNER_CUSTOMISE33333434-menuconfig MEDIA_TUNER_CUSTOMISE3434+config MEDIA_TUNER_CUSTOMISE3535 bool "Customize analog and hybrid tuner modules to build"3636 depends on MEDIA_TUNER3737 default y if EMBEDDED···44444545 If unsure say N.46464747-if MEDIA_TUNER_CUSTOMISE4747+menu "Customize TV tuners"4848+ visible if MEDIA_TUNER_CUSTOMISE48494950config MEDIA_TUNER_SIMPLE5051 tristate "Simple tuner support"···186185 default m if MEDIA_TUNER_CUSTOMISE187186 help188187 NXP TDA18218 silicon tuner driver.189189-190190-endif # MEDIA_TUNER_CUSTOMISE188188+endmenu
+1-4
drivers/media/dvb/frontends/Kconfig
···12121313 If unsure say N.14141515-if DVB_FE_CUSTOMISE1616-1715menu "Customise DVB Frontends"1616+ visible if DVB_FE_CUSTOMISE18171918comment "Multistandard (satellite) frontends"2019 depends on DVB_CORE···618619 tristate "Dummy frontend driver"619620 default n620621endmenu621621-622622-endif
···112112#113113114114menu "Encoders/decoders and other helper chips"115115- depends on !VIDEO_HELPER_CHIPS_AUTO115115+ visible if !VIDEO_HELPER_CHIPS_AUTO116116117117comment "Audio decoders"118118
+2-2
drivers/media/video/au0828/au0828-cards.c
···212212 be abstracted out if we ever need to support a different213213 demod) */214214 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap,215215- NULL, "au8522", 0x8e >> 1, NULL);215215+ "au8522", 0x8e >> 1, NULL);216216 if (sd == NULL)217217 printk(KERN_ERR "analog subdev registration failed\n");218218 }···221221 if (dev->board.tuner_type != TUNER_ABSENT) {222222 /* Load the tuner module, which does the attach */223223 sd = v4l2_i2c_new_subdev(&dev->v4l2_dev, &dev->i2c_adap,224224- NULL, "tuner", dev->board.tuner_addr, NULL);224224+ "tuner", dev->board.tuner_addr, NULL);225225 if (sd == NULL)226226 printk(KERN_ERR "tuner subdev registration fail\n");227227
+11-11
drivers/media/video/bt8xx/bttv-cards.c
···35293529 struct v4l2_subdev *sd;3530353035313531 sd = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,35323532- &btv->c.i2c_adap, NULL, "saa6588", 0, addrs);35323532+ &btv->c.i2c_adap, "saa6588", 0, addrs);35333533 btv->has_saa6588 = (sd != NULL);35343534 }35353535···35543554 };3555355535563556 btv->sd_msp34xx = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,35573557- &btv->c.i2c_adap, NULL, "msp3400", 0, addrs);35573557+ &btv->c.i2c_adap, "msp3400", 0, addrs);35583558 if (btv->sd_msp34xx)35593559 return;35603560 goto no_audio;···35683568 };3569356935703570 if (v4l2_i2c_new_subdev(&btv->c.v4l2_dev,35713571- &btv->c.i2c_adap, NULL, "tda7432", 0, addrs))35713571+ &btv->c.i2c_adap, "tda7432", 0, addrs))35723572 return;35733573 goto no_audio;35743574 }···35763576 case 3: {35773577 /* The user specified that we should probe for tvaudio */35783578 btv->sd_tvaudio = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,35793579- &btv->c.i2c_adap, NULL, "tvaudio", 0, tvaudio_addrs());35793579+ &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs());35803580 if (btv->sd_tvaudio)35813581 return;35823582 goto no_audio;···35963596 found is really something else (e.g. a tea6300). */35973597 if (!bttv_tvcards[btv->c.type].no_msp34xx) {35983598 btv->sd_msp34xx = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,35993599- &btv->c.i2c_adap, NULL, "msp3400",35993599+ &btv->c.i2c_adap, "msp3400",36003600 0, I2C_ADDRS(I2C_ADDR_MSP3400 >> 1));36013601 } else if (bttv_tvcards[btv->c.type].msp34xx_alt) {36023602 btv->sd_msp34xx = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,36033603- &btv->c.i2c_adap, NULL, "msp3400",36033603+ &btv->c.i2c_adap, "msp3400",36043604 0, I2C_ADDRS(I2C_ADDR_MSP3400_ALT >> 1));36053605 }36063606···36163616 };3617361736183618 if (v4l2_i2c_new_subdev(&btv->c.v4l2_dev,36193619- &btv->c.i2c_adap, NULL, "tda7432", 0, addrs))36193619+ &btv->c.i2c_adap, "tda7432", 0, addrs))36203620 return;36213621 }3622362236233623 /* Now see if we can find one of the tvaudio devices. */36243624 btv->sd_tvaudio = v4l2_i2c_new_subdev(&btv->c.v4l2_dev,36253625- &btv->c.i2c_adap, NULL, "tvaudio", 0, tvaudio_addrs());36253625+ &btv->c.i2c_adap, "tvaudio", 0, tvaudio_addrs());36263626 if (btv->sd_tvaudio)36273627 return;36283628···36463646 /* Load tuner module before issuing tuner config call! */36473647 if (bttv_tvcards[btv->c.type].has_radio)36483648 v4l2_i2c_new_subdev(&btv->c.v4l2_dev,36493649- &btv->c.i2c_adap, NULL, "tuner",36493649+ &btv->c.i2c_adap, "tuner",36503650 0, v4l2_i2c_tuner_addrs(ADDRS_RADIO));36513651 v4l2_i2c_new_subdev(&btv->c.v4l2_dev,36523652- &btv->c.i2c_adap, NULL, "tuner",36523652+ &btv->c.i2c_adap, "tuner",36533653 0, v4l2_i2c_tuner_addrs(ADDRS_DEMOD));36543654 v4l2_i2c_new_subdev(&btv->c.v4l2_dev,36553655- &btv->c.i2c_adap, NULL, "tuner",36553655+ &btv->c.i2c_adap, "tuner",36563656 0, v4l2_i2c_tuner_addrs(ADDRS_TV_WITH_DEMOD));3657365736583658 tun_setup.mode_mask = T_ANALOG_TV | T_DIGITAL_TV;
···482482 uint32_t data = 0;483483 struct ubi_vid_hdr vid_hdr;484484485485- addr = (loff_t)pnum * ubi->peb_size + ubi->vid_hdr_aloffset;485485+ /*486486+ * It is important to first invalidate the EC header, and then the VID487487+ * header. Otherwise a power cut may lead to valid EC header and488488+ * invalid VID header, in which case UBI will treat this PEB as489489+ * corrupted and will try to preserve it, and print scary warnings (see490490+ * the header comment in scan.c for more information).491491+ */492492+ addr = (loff_t)pnum * ubi->peb_size;486493 err = ubi->mtd->write(ubi->mtd, addr, 4, &written, (void *)&data);487494 if (!err) {488488- addr -= ubi->vid_hdr_aloffset;495495+ addr += ubi->vid_hdr_aloffset;489496 err = ubi->mtd->write(ubi->mtd, addr, 4, &written,490497 (void *)&data);491498 if (!err)···501494502495 /*503496 * We failed to write to the media. This was observed with Spansion504504- * S29GL512N NOR flash. Most probably the eraseblock erasure was505505- * interrupted at a very inappropriate moment, so it became unwritable.506506- * In this case we probably anyway have garbage in this PEB.497497+ * S29GL512N NOR flash. Most probably the previously eraseblock erasure498498+ * was interrupted at a very inappropriate moment, so it became499499+ * unwritable. In this case we probably anyway have garbage in this500500+ * PEB.507501 */508502 err1 = ubi_io_read_vid_hdr(ubi, pnum, &vid_hdr, 0);509509- if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR)510510- /*511511- * The VID header is corrupted, so we can safely erase this512512- * PEB and not afraid that it will be treated as a valid PEB in513513- * case of an unclean reboot.514514- */515515- return 0;503503+ if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR) {504504+ struct ubi_ec_hdr ec_hdr;505505+506506+ err1 = ubi_io_read_ec_hdr(ubi, pnum, &ec_hdr, 0);507507+ if (err1 == UBI_IO_BAD_HDR_EBADMSG || err1 == UBI_IO_BAD_HDR)508508+ /*509509+ * Both VID and EC headers are corrupted, so we can510510+ * safely erase this PEB and not afraid that it will be511511+ * treated as a valid PEB in case of an unclean reboot.512512+ */513513+ return 0;514514+ }516515517516 /*518517 * The PEB contains a valid VID header, but we cannot invalidate it.
+4
drivers/mtd/ubi/scan.c
···953953 * impossible to distinguish it from a PEB which just954954 * contains garbage because of a power cut during erase955955 * operation. So we just schedule this PEB for erasure.956956+ *957957+ * Besides, in case of NOR flash, we deliberatly958958+ * corrupt both headers because NOR flash erasure is959959+ * slow and can start from the end.956960 */957961 err = 0;958962 else
+4
drivers/net/mlx4/fw.c
···289289 MLX4_GET(field, outbox, QUERY_DEV_CAP_LOG_BF_REG_SZ_OFFSET);290290 dev_cap->bf_reg_size = 1 << (field & 0x1f);291291 MLX4_GET(field, outbox, QUERY_DEV_CAP_LOG_MAX_BF_REGS_PER_PAGE_OFFSET);292292+ if ((1 << (field & 0x3f)) > (PAGE_SIZE / dev_cap->bf_reg_size)) {293293+ mlx4_warn(dev, "firmware bug: log2 # of blue flame regs is invalid (%d), forcing 3\n", field & 0x1f);294294+ field = 3;295295+ }292296 dev_cap->bf_regs_per_page = 1 << (field & 0x3f);293297 mlx4_dbg(dev, "BlueFlame available (reg size %d, regs/page %d)\n",294298 dev_cap->bf_reg_size, dev_cap->bf_regs_per_page);
···911911}912912913913/**914914- * set_consumer_device_supply: Bind a regulator to a symbolic supply914914+ * set_consumer_device_supply - Bind a regulator to a symbolic supply915915 * @rdev: regulator source916916 * @consumer_dev: device the supply applies to917917 * @consumer_dev_name: dev_name() string for device supply applies to···10521052 printk(KERN_WARNING10531053 "%s: could not add device link %s err %d\n",10541054 __func__, dev->kobj.name, err);10551055- device_remove_file(dev, ®ulator->dev_attr);10561055 goto link_name_err;10571056 }10581057 }···12671268{12681269 int ret, delay;1269127012701270- /* do we need to enable the supply regulator first */12711271- if (rdev->supply) {12721272- ret = _regulator_enable(rdev->supply);12731273- if (ret < 0) {12741274- printk(KERN_ERR "%s: failed to enable %s: %d\n",12751275- __func__, rdev_get_name(rdev), ret);12761276- return ret;12711271+ if (rdev->use_count == 0) {12721272+ /* do we need to enable the supply regulator first */12731273+ if (rdev->supply) {12741274+ mutex_lock(&rdev->supply->mutex);12751275+ ret = _regulator_enable(rdev->supply);12761276+ mutex_unlock(&rdev->supply->mutex);12771277+ if (ret < 0) {12781278+ printk(KERN_ERR "%s: failed to enable %s: %d\n",12791279+ __func__, rdev_get_name(rdev), ret);12801280+ return ret;12811281+ }12771282 }12781283 }12791284···13161313 if (ret < 0)13171314 return ret;1318131513191319- if (delay >= 1000)13161316+ if (delay >= 1000) {13201317 mdelay(delay / 1000);13211321- else if (delay)13181318+ udelay(delay % 1000);13191319+ } else if (delay) {13221320 udelay(delay);13211321+ }1323132213241323 } else if (ret < 0) {13251324 printk(KERN_ERR "%s: is_enabled() failed for %s: %d\n",···13641359 struct regulator_dev **supply_rdev_ptr)13651360{13661361 int ret = 0;13621362+ *supply_rdev_ptr = NULL;1367136313681364 if (WARN(rdev->use_count <= 0,13691365 "unbalanced disables for %s\n",···23522346 if (init_data->supply_regulator && init_data->supply_regulator_dev) {23532347 dev_err(dev,23542348 "Supply regulator specified by both name and dev\n");23492349+ ret = -EINVAL;23552350 goto scrub;23562351 }23572352···23712364 if (!found) {23722365 dev_err(dev, "Failed to find supply %s\n",23732366 init_data->supply_regulator);23672367+ ret = -ENODEV;23742368 goto scrub;23752369 }23762370
···900900 unsigned char cval, fcr = 0;901901 unsigned long flags;902902 unsigned int baud, quot;903903- u32 mul = 0x3600;904904- u32 ps = 0x10;903903+ u32 ps, mul;905904906905 switch (termios->c_cflag & CSIZE) {907906 case CS5:···942943 baud = uart_get_baud_rate(port, termios, old, 0, 4000000);943944944945 quot = 1;946946+ ps = 0x10;947947+ mul = 0x3600;945948 switch (baud) {946949 case 3500000:947950 mul = 0x3345;948951 ps = 0xC;949952 break;950950- case 3000000:951951- mul = 0x2EE0;952952- break;953953- case 2500000:954954- mul = 0x2710;955955- break;956956- case 2000000:957957- mul = 0x1F40;958958- break;959953 case 1843200:960954 mul = 0x2400;961955 break;956956+ case 3000000:957957+ case 2500000:958958+ case 2000000:962959 case 1500000:963963- mul = 0x1770;964964- break;965960 case 1000000:966966- mul = 0xFA0;967967- break;968961 case 500000:969969- mul = 0x7D0;962962+ /* mul/ps/quot = 0x9C4/0x10/0x1 will make a 500000 bps */963963+ mul = baud / 500000 * 0x9C4;970964 break;971965 default:972966 /* Use uart_get_divisor to get quot for other baud rates */
+5-1
drivers/spi/atmel_spi.c
···352352353353 xfer->tx_dma = xfer->rx_dma = INVALID_DMA_ADDRESS;354354 if (xfer->tx_buf) {355355+ /* tx_buf is a const void* where we need a void * for the dma356356+ * mapping */357357+ void *nonconst_tx = (void *)xfer->tx_buf;358358+355359 xfer->tx_dma = dma_map_single(dev,356356- (void *) xfer->tx_buf, xfer->len,360360+ nonconst_tx, xfer->len,357361 DMA_TO_DEVICE);358362 if (dma_mapping_error(dev, xfer->tx_dma))359363 return -ENOMEM;
···194194 struct bat_priv *priv = netdev_priv(soft_iface);195195196196 /* check if enough space is available for pulling, and pull */197197- if (!pskb_may_pull(skb, hdr_size)) {198198- kfree_skb(skb);199199- return;200200- }197197+ if (!pskb_may_pull(skb, hdr_size))198198+ goto dropped;199199+201200 skb_pull_rcsum(skb, hdr_size);202201/* skb_set_mac_header(skb, -sizeof(struct ethhdr));*/203202204203 /* skb->dev & skb->pkt_type are set here */204204+ if (unlikely(!pskb_may_pull(skb, ETH_HLEN)))205205+ goto dropped;205206 skb->protocol = eth_type_trans(skb, soft_iface);206207207208 /* should not be neccesary anymore as we use skb_pull_rcsum()···217216 soft_iface->last_rx = jiffies;218217219218 netif_rx(skb);219219+ return;220220+221221+dropped:222222+ kfree_skb(skb);223223+ return;220224}221225222226#ifdef HAVE_NET_DEVICE_OPS
+5-3
drivers/staging/brcm80211/README
···88888989Contact Info:9090=============9191-Brett Rudley brudley@broadcom.com9292-Henry Ptasinski henryp@broadcom.com9393-Dowan Kim dowan@broadcom.com9191+Brett Rudley brudley@broadcom.com9292+Henry Ptasinski henryp@broadcom.com9393+Dowan Kim dowan@broadcom.com9494+Roland Vossen rvossen@broadcom.com9595+Arend van Spriel arend@broadcom.com9496
+2
drivers/staging/brcm80211/TODO
···4646Brett Rudley <brudley@broadcom.com>4747Henry Ptasinski <henryp@broadcom.com>4848Dowan Kim <dowan@broadcom.com>4949+Roland Vossen <rvossen@broadcom.com>5050+Arend van Spriel <arend@broadcom.com>4951
···559559560560 tty_lock();561561562562+ /* some functions below drop BTM, so we need this bit */563563+ set_bit(TTY_HUPPING, &tty->flags);564564+562565 /* inuse_filps is protected by the single tty lock,563566 this really needs to change if we want to flush the564567 workqueue with the lock held */···581578 }582579 spin_unlock(&tty_files_lock);583580581581+ /*582582+ * it drops BTM and thus races with reopen583583+ * we protect the race by TTY_HUPPING584584+ */584585 tty_ldisc_hangup(tty);585586586587 read_lock(&tasklist_lock);···622615 tty->session = NULL;623616 tty->pgrp = NULL;624617 tty->ctrl_status = 0;625625- set_bit(TTY_HUPPED, &tty->flags);626618 spin_unlock_irqrestore(&tty->ctrl_lock, flags);627619628620 /* Account for the p->signal references we killed */···647641 * can't yet guarantee all that.648642 */649643 set_bit(TTY_HUPPED, &tty->flags);644644+ clear_bit(TTY_HUPPING, &tty->flags);650645 tty_ldisc_enable(tty);651646652647 tty_unlock();···13171310{13181311 struct tty_driver *driver = tty->driver;1319131213201320- if (test_bit(TTY_CLOSING, &tty->flags))13131313+ if (test_bit(TTY_CLOSING, &tty->flags) ||13141314+ test_bit(TTY_HUPPING, &tty->flags) ||13151315+ test_bit(TTY_LDISC_CHANGING, &tty->flags))13211316 return -EIO;1322131713231318 if (driver->type == TTY_DRIVER_TYPE_PTY &&
+2
drivers/tty/tty_ldisc.c
···454454 /* BTM here locks versus a hangup event */455455 WARN_ON(!tty_locked());456456 ret = ld->ops->open(tty);457457+ if (ret)458458+ clear_bit(TTY_LDISC_OPEN, &tty->flags);457459 return ret;458460 }459461 return 0;
+1-1
drivers/uio/uio.c
···33 *44 * Copyright(C) 2005, Benedikt Spranger <b.spranger@linutronix.de>55 * Copyright(C) 2005, Thomas Gleixner <tglx@linutronix.de>66- * Copyright(C) 2006, Hans J. Koch <hjk@linutronix.de>66+ * Copyright(C) 2006, Hans J. Koch <hjk@hansjkoch.de>77 * Copyright(C) 2006, Greg Kroah-Hartman <greg@kroah.com>88 *99 * Userspace IO
+1-1
drivers/uio/uio_cif.c
···11/*22 * UIO Hilscher CIF card driver33 *44- * (C) 2007 Hans J. Koch <hjk@linutronix.de>44+ * (C) 2007 Hans J. Koch <hjk@hansjkoch.de>55 * Original code (C) 2005 Benedikt Spranger <b.spranger@linutronix.de>66 *77 * Licensed under GPL version 2 only.
+1-1
drivers/uio/uio_netx.c
···22 * UIO driver for Hilscher NetX based fieldbus cards (cifX, comX).33 * See http://www.hilscher.com for details.44 *55- * (C) 2007 Hans J. Koch <hjk@linutronix.de>55+ * (C) 2007 Hans J. Koch <hjk@hansjkoch.de>66 * (C) 2008 Manuel Traut <manut@linutronix.de>77 *88 * Licensed under GPL version 2 only.
+2
drivers/usb/core/hcd.c
···13301330 */1331133113321332 if (usb_endpoint_xfer_control(&urb->ep->desc)) {13331333+ if (hcd->self.uses_pio_for_control)13341334+ return ret;13331335 if (hcd->self.uses_dma) {13341336 urb->setup_dma = dma_map_single(13351337 hcd->self.controller,
+12
drivers/usb/host/ehci-pci.c
···161161 if (pdev->revision < 0xa4)162162 ehci->no_selective_suspend = 1;163163 break;164164+165165+ /* MCP89 chips on the MacBookAir3,1 give EPROTO when166166+ * fetching device descriptors unless LPM is disabled.167167+ * There are also intermittent problems enumerating168168+ * devices with PPCD enabled.169169+ */170170+ case 0x0d9d:171171+ ehci_info(ehci, "disable lpm/ppcd for nvidia mcp89");172172+ ehci->has_lpm = 0;173173+ ehci->has_ppcd = 0;174174+ ehci->command &= ~CMD_PPCEE;175175+ break;164176 }165177 break;166178 case PCI_VENDOR_ID_VIA:
+7
drivers/usb/host/xhci-hub.c
···229229static void xhci_disable_port(struct xhci_hcd *xhci, u16 wIndex,230230 u32 __iomem *addr, u32 port_status)231231{232232+ /* Don't allow the USB core to disable SuperSpeed ports. */233233+ if (xhci->port_array[wIndex] == 0x03) {234234+ xhci_dbg(xhci, "Ignoring request to disable "235235+ "SuperSpeed port.\n");236236+ return;237237+ }238238+232239 /* Write 1 to disable the port */233240 xhci_writel(xhci, port_status | PORT_PE, addr);234241 port_status = xhci_readl(xhci, addr);
+164
drivers/usb/host/xhci-mem.c
···14431443 xhci->dcbaa = NULL;1444144414451445 scratchpad_free(xhci);14461446+14471447+ xhci->num_usb2_ports = 0;14481448+ xhci->num_usb3_ports = 0;14491449+ kfree(xhci->usb2_ports);14501450+ kfree(xhci->usb3_ports);14511451+ kfree(xhci->port_array);14521452+14461453 xhci->page_size = 0;14471454 xhci->page_shift = 0;14481455 xhci->bus_suspended = 0;···16341627 &xhci->ir_set->erst_dequeue);16351628}1636162916301630+static void xhci_add_in_port(struct xhci_hcd *xhci, unsigned int num_ports,16311631+ u32 __iomem *addr, u8 major_revision)16321632+{16331633+ u32 temp, port_offset, port_count;16341634+ int i;16351635+16361636+ if (major_revision > 0x03) {16371637+ xhci_warn(xhci, "Ignoring unknown port speed, "16381638+ "Ext Cap %p, revision = 0x%x\n",16391639+ addr, major_revision);16401640+ /* Ignoring port protocol we can't understand. FIXME */16411641+ return;16421642+ }16431643+16441644+ /* Port offset and count in the third dword, see section 7.2 */16451645+ temp = xhci_readl(xhci, addr + 2);16461646+ port_offset = XHCI_EXT_PORT_OFF(temp);16471647+ port_count = XHCI_EXT_PORT_COUNT(temp);16481648+ xhci_dbg(xhci, "Ext Cap %p, port offset = %u, "16491649+ "count = %u, revision = 0x%x\n",16501650+ addr, port_offset, port_count, major_revision);16511651+ /* Port count includes the current port offset */16521652+ if (port_offset == 0 || (port_offset + port_count - 1) > num_ports)16531653+ /* WTF? "Valid values are ‘1’ to MaxPorts" */16541654+ return;16551655+ port_offset--;16561656+ for (i = port_offset; i < (port_offset + port_count); i++) {16571657+ /* Duplicate entry. Ignore the port if the revisions differ. */16581658+ if (xhci->port_array[i] != 0) {16591659+ xhci_warn(xhci, "Duplicate port entry, Ext Cap %p,"16601660+ " port %u\n", addr, i);16611661+ xhci_warn(xhci, "Port was marked as USB %u, "16621662+ "duplicated as USB %u\n",16631663+ xhci->port_array[i], major_revision);16641664+ /* Only adjust the roothub port counts if we haven't16651665+ * found a similar duplicate.16661666+ */16671667+ if (xhci->port_array[i] != major_revision &&16681668+ xhci->port_array[i] != (u8) -1) {16691669+ if (xhci->port_array[i] == 0x03)16701670+ xhci->num_usb3_ports--;16711671+ else16721672+ xhci->num_usb2_ports--;16731673+ xhci->port_array[i] = (u8) -1;16741674+ }16751675+ /* FIXME: Should we disable the port? */16761676+ }16771677+ xhci->port_array[i] = major_revision;16781678+ if (major_revision == 0x03)16791679+ xhci->num_usb3_ports++;16801680+ else16811681+ xhci->num_usb2_ports++;16821682+ }16831683+ /* FIXME: Should we disable ports not in the Extended Capabilities? */16841684+}16851685+16861686+/*16871687+ * Scan the Extended Capabilities for the "Supported Protocol Capabilities" that16881688+ * specify what speeds each port is supposed to be. We can't count on the port16891689+ * speed bits in the PORTSC register being correct until a device is connected,16901690+ * but we need to set up the two fake roothubs with the correct number of USB16911691+ * 3.0 and USB 2.0 ports at host controller initialization time.16921692+ */16931693+static int xhci_setup_port_arrays(struct xhci_hcd *xhci, gfp_t flags)16941694+{16951695+ u32 __iomem *addr;16961696+ u32 offset;16971697+ unsigned int num_ports;16981698+ int i, port_index;16991699+17001700+ addr = &xhci->cap_regs->hcc_params;17011701+ offset = XHCI_HCC_EXT_CAPS(xhci_readl(xhci, addr));17021702+ if (offset == 0) {17031703+ xhci_err(xhci, "No Extended Capability registers, "17041704+ "unable to set up roothub.\n");17051705+ return -ENODEV;17061706+ }17071707+17081708+ num_ports = HCS_MAX_PORTS(xhci->hcs_params1);17091709+ xhci->port_array = kzalloc(sizeof(*xhci->port_array)*num_ports, flags);17101710+ if (!xhci->port_array)17111711+ return -ENOMEM;17121712+17131713+ /*17141714+ * For whatever reason, the first capability offset is from the17151715+ * capability register base, not from the HCCPARAMS register.17161716+ * See section 5.3.6 for offset calculation.17171717+ */17181718+ addr = &xhci->cap_regs->hc_capbase + offset;17191719+ while (1) {17201720+ u32 cap_id;17211721+17221722+ cap_id = xhci_readl(xhci, addr);17231723+ if (XHCI_EXT_CAPS_ID(cap_id) == XHCI_EXT_CAPS_PROTOCOL)17241724+ xhci_add_in_port(xhci, num_ports, addr,17251725+ (u8) XHCI_EXT_PORT_MAJOR(cap_id));17261726+ offset = XHCI_EXT_CAPS_NEXT(cap_id);17271727+ if (!offset || (xhci->num_usb2_ports + xhci->num_usb3_ports)17281728+ == num_ports)17291729+ break;17301730+ /*17311731+ * Once you're into the Extended Capabilities, the offset is17321732+ * always relative to the register holding the offset.17331733+ */17341734+ addr += offset;17351735+ }17361736+17371737+ if (xhci->num_usb2_ports == 0 && xhci->num_usb3_ports == 0) {17381738+ xhci_warn(xhci, "No ports on the roothubs?\n");17391739+ return -ENODEV;17401740+ }17411741+ xhci_dbg(xhci, "Found %u USB 2.0 ports and %u USB 3.0 ports.\n",17421742+ xhci->num_usb2_ports, xhci->num_usb3_ports);17431743+ /*17441744+ * Note we could have all USB 3.0 ports, or all USB 2.0 ports.17451745+ * Not sure how the USB core will handle a hub with no ports...17461746+ */17471747+ if (xhci->num_usb2_ports) {17481748+ xhci->usb2_ports = kmalloc(sizeof(*xhci->usb2_ports)*17491749+ xhci->num_usb2_ports, flags);17501750+ if (!xhci->usb2_ports)17511751+ return -ENOMEM;17521752+17531753+ port_index = 0;17541754+ for (i = 0; i < num_ports; i++)17551755+ if (xhci->port_array[i] != 0x03) {17561756+ xhci->usb2_ports[port_index] =17571757+ &xhci->op_regs->port_status_base +17581758+ NUM_PORT_REGS*i;17591759+ xhci_dbg(xhci, "USB 2.0 port at index %u, "17601760+ "addr = %p\n", i,17611761+ xhci->usb2_ports[port_index]);17621762+ port_index++;17631763+ }17641764+ }17651765+ if (xhci->num_usb3_ports) {17661766+ xhci->usb3_ports = kmalloc(sizeof(*xhci->usb3_ports)*17671767+ xhci->num_usb3_ports, flags);17681768+ if (!xhci->usb3_ports)17691769+ return -ENOMEM;17701770+17711771+ port_index = 0;17721772+ for (i = 0; i < num_ports; i++)17731773+ if (xhci->port_array[i] == 0x03) {17741774+ xhci->usb3_ports[port_index] =17751775+ &xhci->op_regs->port_status_base +17761776+ NUM_PORT_REGS*i;17771777+ xhci_dbg(xhci, "USB 3.0 port at index %u, "17781778+ "addr = %p\n", i,17791779+ xhci->usb3_ports[port_index]);17801780+ port_index++;17811781+ }17821782+ }17831783+ return 0;17841784+}1637178516381786int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags)16391787{···19701808 xhci->resume_done[i] = 0;1971180919721810 if (scratchpad_alloc(xhci, flags))18111811+ goto fail;18121812+ if (xhci_setup_port_arrays(xhci, flags))19731813 goto fail;1974181419751815 return 0;
+18
drivers/usb/host/xhci.c
···15491549 cmd_completion = command->completion;15501550 cmd_status = &command->status;15511551 command->command_trb = xhci->cmd_ring->enqueue;15521552+15531553+ /* Enqueue pointer can be left pointing to the link TRB,15541554+ * we must handle that15551555+ */15561556+ if ((command->command_trb->link.control & TRB_TYPE_BITMASK)15571557+ == TRB_TYPE(TRB_LINK))15581558+ command->command_trb =15591559+ xhci->cmd_ring->enq_seg->next->trbs;15601560+15521561 list_add_tail(&command->cmd_list, &virt_dev->cmd_list);15531562 } else {15541563 in_ctx = virt_dev->in_ctx;···22812272 /* Attempt to submit the Reset Device command to the command ring */22822273 spin_lock_irqsave(&xhci->lock, flags);22832274 reset_device_cmd->command_trb = xhci->cmd_ring->enqueue;22752275+22762276+ /* Enqueue pointer can be left pointing to the link TRB,22772277+ * we must handle that22782278+ */22792279+ if ((reset_device_cmd->command_trb->link.control & TRB_TYPE_BITMASK)22802280+ == TRB_TYPE(TRB_LINK))22812281+ reset_device_cmd->command_trb =22822282+ xhci->cmd_ring->enq_seg->next->trbs;22832283+22842284 list_add_tail(&reset_device_cmd->cmd_list, &virt_dev->cmd_list);22852285 ret = xhci_queue_reset_device(xhci, slot_id);22862286 if (ret) {
+26
drivers/usb/host/xhci.h
···454454455455456456/**457457+ * struct xhci_protocol_caps458458+ * @revision: major revision, minor revision, capability ID,459459+ * and next capability pointer.460460+ * @name_string: Four ASCII characters to say which spec this xHC461461+ * follows, typically "USB ".462462+ * @port_info: Port offset, count, and protocol-defined information.463463+ */464464+struct xhci_protocol_caps {465465+ u32 revision;466466+ u32 name_string;467467+ u32 port_info;468468+};469469+470470+#define XHCI_EXT_PORT_MAJOR(x) (((x) >> 24) & 0xff)471471+#define XHCI_EXT_PORT_OFF(x) ((x) & 0xff)472472+#define XHCI_EXT_PORT_COUNT(x) (((x) >> 8) & 0xff)473473+474474+/**457475 * struct xhci_container_ctx458476 * @type: Type of context. Used to calculated offsets to contained contexts.459477 * @size: Size of the context data···12581240 u32 suspended_ports[8]; /* which ports are12591241 suspended */12601242 unsigned long resume_done[MAX_HC_PORTS];12431243+ /* Is each xHCI roothub port a USB 3.0, USB 2.0, or USB 1.1 port? */12441244+ u8 *port_array;12451245+ /* Array of pointers to USB 3.0 PORTSC registers */12461246+ u32 __iomem **usb3_ports;12471247+ unsigned int num_usb3_ports;12481248+ /* Array of pointers to USB 2.0 PORTSC registers */12491249+ u32 __iomem **usb2_ports;12501250+ unsigned int num_usb2_ports;12611251};1262125212631253/* For testing purposes */
···114114/* Lenz LI-USB Computer Interface. */115115#define FTDI_LENZ_LIUSB_PID 0xD780116116117117+/* Vardaan Enterprises Serial Interface VEUSB422R3 */118118+#define FTDI_VARDAAN_PID 0xF070119119+117120/*118121 * Xsens Technologies BV products (http://www.xsens.com).119122 */···724721 */725722#define RTSYSTEMS_VID 0x2100 /* Vendor ID */726723#define RTSYSTEMS_SERIAL_VX7_PID 0x9e52 /* Serial converter for VX-7 Radios using FT232RL */724724+#define RTSYSTEMS_CT29B_PID 0x9e54 /* CT29B Radio Cable */727725728726/*729727 * Bayer Ascensia Contour blood glucose meter USB-converter cable.
+3
drivers/usb/serial/usb-serial.c
···5151 .suspend = usb_serial_suspend,5252 .resume = usb_serial_resume,5353 .no_dynamic_id = 1,5454+ .supports_autosuspend = 1,5455};55565657/* There is no MODULE_DEVICE_TABLE for usbserial.c. Instead···13441343 return -ENODEV;1345134413461345 fixup_generic(driver);13461346+ if (driver->usb_driver)13471347+ driver->usb_driver->supports_autosuspend = 1;1347134813481349 if (!driver->description)13491350 driver->description = driver->driver.name;
+6-8
drivers/video/da8xx-fb.c
···10291029 goto err_release_pl_mem;10301030 }1031103110321032- ret = request_irq(par->irq, lcdc_irq_handler, 0, DRIVER_NAME, par);10331033- if (ret)10341034- goto err_release_pl_mem;10351035-10361032 /* Initialize par */10371033 da8xx_fb_info->var.bits_per_pixel = lcd_cfg->bpp;10381034···1056106010571061 ret = fb_alloc_cmap(&da8xx_fb_info->cmap, PALETTE_SIZE, 0);10581062 if (ret)10591059- goto err_free_irq;10631063+ goto err_release_pl_mem;10601064 da8xx_fb_info->cmap.len = par->palette_sz;1061106510621066 /* initialize var_screeninfo */···10841088 goto err_cpu_freq;10851089 }10861090#endif10911091+10921092+ ret = request_irq(par->irq, lcdc_irq_handler, 0, DRIVER_NAME, par);10931093+ if (ret)10941094+ goto irq_freq;10871095 return 0;1088109610971097+irq_freq:10891098#ifdef CONFIG_CPU_FREQ10901099err_cpu_freq:10911100 unregister_framebuffer(da8xx_fb_info);···1098109710991098err_dealloc_cmap:11001099 fb_dealloc_cmap(&da8xx_fb_info->cmap);11011101-11021102-err_free_irq:11031103- free_irq(par->irq, par);1104110011051101err_release_pl_mem:11061102 dma_free_coherent(NULL, PALETTE_SIZE, par->v_palette_base,
+1
drivers/video/fbcmap.c
···8080 * @cmap: frame buffer colormap structure8181 * @len: length of @cmap8282 * @transp: boolean, 1 if there is transparency, 0 otherwise8383+ * @flags: flags for kmalloc memory allocation8384 *8485 * Allocates memory for a colormap @cmap. @len is the8586 * number of entries in the palette.
···610610 memcpy(par->vp, par->vp_regs, sizeof(par->vp));611611 memcpy(par->fp, par->vp_regs + VP_FP_START, sizeof(par->fp));612612613613- /* save the palette */613613+ /* save the display controller palette */614614 write_dc(par, DC_PAL_ADDRESS, 0);615615- for (i = 0; i < ARRAY_SIZE(par->pal); i++)616616- par->pal[i] = read_dc(par, DC_PAL_DATA);615615+ for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)616616+ par->dc_pal[i] = read_dc(par, DC_PAL_DATA);617617+618618+ /* save the video processor palette */619619+ write_vp(par, VP_PAR, 0);620620+ for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)621621+ par->vp_pal[i] = read_vp(par, VP_PDR);617622618623 /* save the horizontal filter coefficients */619624 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;···711706712707 /* restore the palette */713708 write_dc(par, DC_PAL_ADDRESS, 0);714714- for (i = 0; i < ARRAY_SIZE(par->pal); i++)715715- write_dc(par, DC_PAL_DATA, par->pal[i]);709709+ for (i = 0; i < ARRAY_SIZE(par->dc_pal); i++)710710+ write_dc(par, DC_PAL_DATA, par->dc_pal[i]);716711717712 /* restore the horizontal filter coefficients */718713 filt = par->dc[DC_IRQ_FILT_CTL] | DC_IRQ_FILT_CTL_H_FILT_SEL;···755750 write_vp(par, i, par->vp[i]);756751 }757752 }753753+754754+ /* restore video processor palette */755755+ write_vp(par, VP_PAR, 0);756756+ for (i = 0; i < ARRAY_SIZE(par->vp_pal); i++)757757+ write_vp(par, VP_PDR, par->vp_pal[i]);758758759759 /* restore video coeff ram */760760 memcpy(par->vp_regs + VP_VCR, par->vp_coeff, sizeof(par->vp_coeff));
+3
drivers/watchdog/Kconfig
···558558 This is the driver for the built-in watchdog timer on the IT8712F559559 Super I/0 chipset used on many motherboards.560560561561+ If the driver does not work, then make sure that the game port in562562+ the BIOS is enabled.563563+561564 To compile this driver as a module, choose M here: the562565 module will be called it8712f_wdt.563566
···3232 * document number 322169-001, 322170-003: 5 Series, 3400 Series (PCH)3333 * document number 320066-003, 320257-008: EP80597 (IICH)3434 * document number TBD : Cougar Point (CPT)3535+ * document number TBD : Patsburg (PBG)3536 */36373738/*···147146 TCO_CPT29, /* Cougar Point */148147 TCO_CPT30, /* Cougar Point */149148 TCO_CPT31, /* Cougar Point */150150- TCO_PBG, /* Patsburg */149149+ TCO_PBG1, /* Patsburg */150150+ TCO_PBG2, /* Patsburg */151151};152152153153static struct {···236234 {"Cougar Point", 2},237235 {"Cougar Point", 2},238236 {"Cougar Point", 2},237237+ {"Patsburg", 2},239238 {"Patsburg", 2},240239 {NULL, 0}241240};···353350 { ITCO_PCI_DEVICE(0x1c5d, TCO_CPT29)},354351 { ITCO_PCI_DEVICE(0x1c5e, TCO_CPT30)},355352 { ITCO_PCI_DEVICE(0x1c5f, TCO_CPT31)},356356- { ITCO_PCI_DEVICE(0x1d40, TCO_PBG)},353353+ { ITCO_PCI_DEVICE(0x1d40, TCO_PBG1)},354354+ { ITCO_PCI_DEVICE(0x1d41, TCO_PBG2)},357355 { 0, }, /* End of list */358356};359357MODULE_DEVICE_TABLE(pci, iTCO_wdt_pci_tbl);
+10-2
drivers/xen/balloon.c
···412412413413 register_balloon(&balloon_sysdev);414414415415- /* Initialise the balloon with excess memory space. */416416- extra_pfn_end = min(e820_end_of_ram_pfn(),415415+ /*416416+ * Initialise the balloon with excess memory space. We need417417+ * to make sure we don't add memory which doesn't exist or418418+ * logically exist. The E820 map can be trimmed to be smaller419419+ * than the amount of physical memory due to the mem= command420420+ * line parameter. And if this is a 32-bit non-HIGHMEM kernel421421+ * on a system with memory which requires highmem to access,422422+ * don't try to use it.423423+ */424424+ extra_pfn_end = min(min(max_pfn, e820_end_of_ram_pfn()),417425 (unsigned long)PFN_DOWN(xen_extra_mem_start + xen_extra_mem_size));418426 for (pfn = PFN_UP(xen_extra_mem_start);419427 pfn < extra_pfn_end;
+76-33
drivers/xen/events.c
···105105106106static struct irq_info *irq_info;107107static int *pirq_to_irq;108108-static int nr_pirqs;109108110109static int *evtchn_to_irq;111110struct cpu_evtchn_s {···384385 return ret;385386}386387387387-/* callers of this function should make sure that PHYSDEVOP_get_nr_pirqs388388- * succeeded otherwise nr_pirqs won't hold the right value */389389-static int find_unbound_pirq(void)388388+static int find_unbound_pirq(int type)390389{391391- int i;392392- for (i = nr_pirqs-1; i >= 0; i--) {390390+ int rc, i;391391+ struct physdev_get_free_pirq op_get_free_pirq;392392+ op_get_free_pirq.type = type;393393+394394+ rc = HYPERVISOR_physdev_op(PHYSDEVOP_get_free_pirq, &op_get_free_pirq);395395+ if (!rc)396396+ return op_get_free_pirq.pirq;397397+398398+ for (i = 0; i < nr_irqs; i++) {393399 if (pirq_to_irq[i] < 0)394400 return i;395401 }···427423 if (irq == start)428424 goto no_irqs;429425430430- res = irq_alloc_desc_at(irq, 0);426426+ res = irq_alloc_desc_at(irq, -1);431427432428 if (WARN_ON(res != irq))433429 return -1;···615611616612 spin_lock(&irq_mapping_update_lock);617613618618- if ((pirq > nr_pirqs) || (gsi > nr_irqs)) {614614+ if ((pirq > nr_irqs) || (gsi > nr_irqs)) {619615 printk(KERN_WARNING "xen_map_pirq_gsi: %s %s is incorrect!\n",620620- pirq > nr_pirqs ? "nr_pirqs" :"",621621- gsi > nr_irqs ? "nr_irqs" : "");616616+ pirq > nr_irqs ? "pirq" :"",617617+ gsi > nr_irqs ? "gsi" : "");622618 goto out;623619 }624620···634630 if (identity_mapped_irq(gsi) || (!xen_initial_domain() &&635631 xen_pv_domain())) {636632 irq = gsi;637637- irq_alloc_desc_at(irq, 0);633633+ irq_alloc_desc_at(irq, -1);638634 } else639635 irq = find_unbound_irq();640636···668664#include <linux/msi.h>669665#include "../pci/msi.h"670666671671-void xen_allocate_pirq_msi(char *name, int *irq, int *pirq)667667+void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc)672668{673669 spin_lock(&irq_mapping_update_lock);674670675675- *irq = find_unbound_irq();676676- if (*irq == -1)677677- goto out;671671+ if (alloc & XEN_ALLOC_IRQ) {672672+ *irq = find_unbound_irq();673673+ if (*irq == -1)674674+ goto out;675675+ }678676679679- *pirq = find_unbound_pirq();680680- if (*pirq == -1)681681- goto out;677677+ if (alloc & XEN_ALLOC_PIRQ) {678678+ *pirq = find_unbound_pirq(MAP_PIRQ_TYPE_MSI);679679+ if (*pirq == -1)680680+ goto out;681681+ }682682683683 set_irq_chip_and_handler_name(*irq, &xen_pirq_chip,684684 handle_level_irq, name);···770762 printk(KERN_WARNING "unmap irq failed %d\n", rc);771763 goto out;772764 }765765+ pirq_to_irq[info->u.pirq.pirq] = -1;773766 }774767 irq_info[irq] = mk_unbound_info();775768···789780int xen_gsi_from_irq(unsigned irq)790781{791782 return gsi_from_irq(irq);783783+}784784+785785+int xen_irq_from_pirq(unsigned pirq)786786+{787787+ return pirq_to_irq[pirq];792788}793789794790int bind_evtchn_to_irq(unsigned int evtchn)···12931279 return ret;12941280}1295128112821282+static void restore_cpu_pirqs(void)12831283+{12841284+ int pirq, rc, irq, gsi;12851285+ struct physdev_map_pirq map_irq;12861286+12871287+ for (pirq = 0; pirq < nr_irqs; pirq++) {12881288+ irq = pirq_to_irq[pirq];12891289+ if (irq == -1)12901290+ continue;12911291+12921292+ /* save/restore of PT devices doesn't work, so at this point the12931293+ * only devices present are GSI based emulated devices */12941294+ gsi = gsi_from_irq(irq);12951295+ if (!gsi)12961296+ continue;12971297+12981298+ map_irq.domid = DOMID_SELF;12991299+ map_irq.type = MAP_PIRQ_TYPE_GSI;13001300+ map_irq.index = gsi;13011301+ map_irq.pirq = pirq;13021302+13031303+ rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);13041304+ if (rc) {13051305+ printk(KERN_WARNING "xen map irq failed gsi=%d irq=%d pirq=%d rc=%d\n",13061306+ gsi, irq, pirq, rc);13071307+ irq_info[irq] = mk_unbound_info();13081308+ pirq_to_irq[pirq] = -1;13091309+ continue;13101310+ }13111311+13121312+ printk(KERN_DEBUG "xen: --> irq=%d, pirq=%d\n", irq, map_irq.pirq);13131313+13141314+ startup_pirq(irq);13151315+ }13161316+}13171317+12961318static void restore_cpu_virqs(unsigned int cpu)12971319{12981320 struct evtchn_bind_virq bind_virq;···1472142214731423 unmask_evtchn(evtchn);14741424 }14251425+14261426+ restore_cpu_pirqs();14751427}1476142814771429static struct irq_chip xen_dynamic_chip __read_mostly = {···1558150615591507void __init xen_init_IRQ(void)15601508{15611561- int i, rc;15621562- struct physdev_nr_pirqs op_nr_pirqs;15091509+ int i;1563151015641511 cpu_evtchn_mask_p = kcalloc(nr_cpu_ids, sizeof(struct cpu_evtchn_s),15651512 GFP_KERNEL);15661513 irq_info = kcalloc(nr_irqs, sizeof(*irq_info), GFP_KERNEL);1567151415681568- rc = HYPERVISOR_physdev_op(PHYSDEVOP_get_nr_pirqs, &op_nr_pirqs);15691569- if (rc < 0) {15701570- nr_pirqs = nr_irqs;15711571- if (rc != -ENOSYS)15721572- printk(KERN_WARNING "PHYSDEVOP_get_nr_pirqs returned rc=%d\n", rc);15731573- } else {15741574- if (xen_pv_domain() && !xen_initial_domain())15751575- nr_pirqs = max((int)op_nr_pirqs.nr_pirqs, nr_irqs);15761576- else15771577- nr_pirqs = op_nr_pirqs.nr_pirqs;15781578- }15791579- pirq_to_irq = kcalloc(nr_pirqs, sizeof(*pirq_to_irq), GFP_KERNEL);15801580- for (i = 0; i < nr_pirqs; i++)15151515+ /* We are using nr_irqs as the maximum number of pirq available but15161516+ * that number is actually chosen by Xen and we don't know exactly15171517+ * what it is. Be careful choosing high pirq numbers. */15181518+ pirq_to_irq = kcalloc(nr_irqs, sizeof(*pirq_to_irq), GFP_KERNEL);15191519+ for (i = 0; i < nr_irqs; i++)15811520 pirq_to_irq[i] = -1;1582152115831522 evtchn_to_irq = kcalloc(NR_EVENT_CHANNELS, sizeof(*evtchn_to_irq),
+1
drivers/xen/manage.c
···49495050 if (!*cancelled) {5151 xen_irq_resume();5252+ xen_console_resume();5253 xen_timer_resume();5354 }5455
+8
fs/cifs/Kconfig
···44 select NLS55 select CRYPTO66 select CRYPTO_MD577+ select CRYPTO_HMAC78 select CRYPTO_ARC489 help910 This is the client VFS module for the Common Internet File System···143142 Makes CIFS FS-Cache capable. Say Y here if you want your CIFS data144143 to be cached locally on disk through the general filesystem cache145144 manager. If unsure, say N.145145+146146+config CIFS_ACL147147+ bool "Provide CIFS ACL support (EXPERIMENTAL)"148148+ depends on EXPERIMENTAL && CIFS_XATTR149149+ help150150+ Allows to fetch CIFS/NTFS ACL from the server. The DACL blob151151+ is handed over to the application/caller.146152147153config CIFS_EXPERIMENTAL148154 bool "CIFS Experimental Features (EXPERIMENTAL)"
+28-20
fs/cifs/cifsacl.c
···560560 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);561561562562 if (IS_ERR(tlink))563563- return NULL;563563+ return ERR_CAST(tlink);564564565565 xid = GetXid();566566 rc = CIFSSMBGetCIFSACL(xid, tlink_tcon(tlink), fid, &pntsd, pacllen);···568568569569 cifs_put_tlink(tlink);570570571571- cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen);571571+ cFYI(1, "%s: rc = %d ACL len %d", __func__, rc, *pacllen);572572+ if (rc)573573+ return ERR_PTR(rc);572574 return pntsd;573575}574576···585583 struct tcon_link *tlink = cifs_sb_tlink(cifs_sb);586584587585 if (IS_ERR(tlink))588588- return NULL;586586+ return ERR_CAST(tlink);589587590588 tcon = tlink_tcon(tlink);591589 xid = GetXid();···593591 rc = CIFSSMBOpen(xid, tcon, path, FILE_OPEN, READ_CONTROL, 0,594592 &fid, &oplock, NULL, cifs_sb->local_nls,595593 cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MAP_SPECIAL_CHR);596596- if (rc) {597597- cERROR(1, "Unable to open file to get ACL");598598- goto out;594594+ if (!rc) {595595+ rc = CIFSSMBGetCIFSACL(xid, tcon, fid, &pntsd, pacllen);596596+ CIFSSMBClose(xid, tcon, fid);599597 }600598601601- rc = CIFSSMBGetCIFSACL(xid, tcon, fid, &pntsd, pacllen);602602- cFYI(1, "GetCIFSACL rc = %d ACL len %d", rc, *pacllen);603603-604604- CIFSSMBClose(xid, tcon, fid);605605- out:606599 cifs_put_tlink(tlink);607600 FreeXid(xid);601601+602602+ cFYI(1, "%s: rc = %d ACL len %d", __func__, rc, *pacllen);603603+ if (rc)604604+ return ERR_PTR(rc);608605 return pntsd;609606}610607611608/* Retrieve an ACL from the server */612612-static struct cifs_ntsd *get_cifs_acl(struct cifs_sb_info *cifs_sb,609609+struct cifs_ntsd *get_cifs_acl(struct cifs_sb_info *cifs_sb,613610 struct inode *inode, const char *path,614611 u32 *pacllen)615612{···696695}697696698697/* Translate the CIFS ACL (simlar to NTFS ACL) for a file into mode bits */699699-void698698+int700699cifs_acl_to_fattr(struct cifs_sb_info *cifs_sb, struct cifs_fattr *fattr,701700 struct inode *inode, const char *path, const __u16 *pfid)702701{···712711 pntsd = get_cifs_acl(cifs_sb, inode, path, &acllen);713712714713 /* if we can retrieve the ACL, now parse Access Control Entries, ACEs */715715- if (pntsd)714714+ if (IS_ERR(pntsd)) {715715+ rc = PTR_ERR(pntsd);716716+ cERROR(1, "%s: error %d getting sec desc", __func__, rc);717717+ } else {716718 rc = parse_sec_desc(pntsd, acllen, fattr);717717- if (rc)718718- cFYI(1, "parse sec desc failed rc = %d", rc);719719+ kfree(pntsd);720720+ if (rc)721721+ cERROR(1, "parse sec desc failed rc = %d", rc);722722+ }719723720720- kfree(pntsd);721721- return;724724+ return rc;722725}723726724727/* Convert mode bits to an ACL so we can update the ACL on the server */725725-int mode_to_acl(struct inode *inode, const char *path, __u64 nmode)728728+int mode_to_cifs_acl(struct inode *inode, const char *path, __u64 nmode)726729{727730 int rc = 0;728731 __u32 secdesclen = 0;···741736 /* Add three ACEs for owner, group, everyone getting rid of742737 other ACEs as chmod disables ACEs and set the security descriptor */743738744744- if (pntsd) {739739+ if (IS_ERR(pntsd)) {740740+ rc = PTR_ERR(pntsd);741741+ cERROR(1, "%s: error %d getting sec desc", __func__, rc);742742+ } else {745743 /* allocate memory for the smb header,746744 set security descriptor request security descriptor747745 parameters, and secuirty descriptor itself */
···13521352 "supported. Instead set "13531353 "/proc/fs/cifs/LookupCacheEnabled to 0\n");13541354 } else if (strnicmp(data, "fsc", 3) == 0) {13551355+#ifndef CONFIG_CIFS_FSCACHE13561356+ cERROR(1, "FS-Cache support needs CONFIG_CIFS_FSCACHE"13571357+ "kernel config option set");13581358+ return 1;13591359+#endif13551360 vol->fsc = true;13561361 } else if (strnicmp(data, "mfsymlinks", 10) == 0) {13571362 vol->mfsymlinks = true;
+1-1
fs/cifs/dns_resolve.c
···6666 /* Search for server name delimiter */6767 sep = memchr(hostname, '\\', len);6868 if (sep)6969- len = sep - unc;6969+ len = sep - hostname;7070 else7171 cFYI(1, "%s: probably server name is whole unc: %s",7272 __func__, unc);
···959959 r += O2HB_MAX_REGION_NAME_LEN;960960 }961961962962- local = kmalloc(sizeof(qr->qr_regions), GFP_KERNEL);962962+ local = kmalloc(sizeof(qr->qr_regions), GFP_ATOMIC);963963 if (!local) {964964 status = -ENOMEM;965965 goto bail;
+3-3
fs/ocfs2/ocfs2.h
···159159 char l_name[OCFS2_LOCK_ID_MAX_LEN];160160 unsigned int l_ro_holders;161161 unsigned int l_ex_holders;162162- char l_level;163163- char l_requested;164164- char l_blocking;162162+ signed char l_level;163163+ signed char l_requested;164164+ signed char l_blocking;165165166166 /* Data packed - type enum ocfs2_lock_type */167167 unsigned char l_type;
···15741574 if (!tmp)15751575 return -ENOMEM;1576157615771577- pathname = d_path_with_unreachable(path, tmp, PAGE_SIZE);15771577+ pathname = d_path(path, tmp, PAGE_SIZE);15781578 len = PTR_ERR(pathname);15791579 if (IS_ERR(pathname))15801580 goto out;
+4-2
fs/reiserfs/xattr_acl.c
···472472 struct reiserfs_transaction_handle th;473473 size_t size = reiserfs_xattr_nblocks(inode,474474 reiserfs_acl_size(clone->a_count));475475- reiserfs_write_lock(inode->i_sb);475475+ int depth;476476+477477+ depth = reiserfs_write_lock_once(inode->i_sb);476478 error = journal_begin(&th, inode->i_sb, size * 2);477479 if (!error) {478480 int error2;···484482 if (error2)485483 error = error2;486484 }487487- reiserfs_write_unlock(inode->i_sb);485485+ reiserfs_write_unlock_once(inode->i_sb, depth);488486 }489487 posix_acl_release(clone);490488 return error;
+40-54
fs/xfs/linux-2.6/xfs_aops.c
···934934 struct xfs_inode *ip = XFS_I(inode);935935 struct buffer_head *bh, *head;936936 loff_t offset = page_offset(page);937937- ssize_t len = 1 << inode->i_blkbits;938937939938 if (!xfs_is_delayed_page(page, IO_DELAY))940939 goto out_invalidate;···948949 xfs_ilock(ip, XFS_ILOCK_EXCL);949950 bh = head = page_buffers(page);950951 do {951951- int done;952952- xfs_fileoff_t offset_fsb;953953- xfs_bmbt_irec_t imap;954954- int nimaps = 1;955952 int error;956956- xfs_fsblock_t firstblock;957957- xfs_bmap_free_t flist;953953+ xfs_fileoff_t start_fsb;958954959955 if (!buffer_delay(bh))960956 goto next_buffer;961957962962- offset_fsb = XFS_B_TO_FSBT(ip->i_mount, offset);963963-964964- /*965965- * Map the range first and check that it is a delalloc extent966966- * before trying to unmap the range. Otherwise we will be967967- * trying to remove a real extent (which requires a968968- * transaction) or a hole, which is probably a bad idea...969969- */970970- error = xfs_bmapi(NULL, ip, offset_fsb, 1,971971- XFS_BMAPI_ENTIRE, NULL, 0, &imap,972972- &nimaps, NULL);973973-974974- if (error) {975975- /* something screwed, just bail */976976- if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {977977- xfs_fs_cmn_err(CE_ALERT, ip->i_mount,978978- "page discard failed delalloc mapping lookup.");979979- }980980- break;981981- }982982- if (!nimaps) {983983- /* nothing there */984984- goto next_buffer;985985- }986986- if (imap.br_startblock != DELAYSTARTBLOCK) {987987- /* been converted, ignore */988988- goto next_buffer;989989- }990990- WARN_ON(imap.br_blockcount == 0);991991-992992- /*993993- * Note: while we initialise the firstblock/flist pair, they994994- * should never be used because blocks should never be995995- * allocated or freed for a delalloc extent and hence we need996996- * don't cancel or finish them after the xfs_bunmapi() call.997997- */998998- xfs_bmap_init(&flist, &firstblock);999999- error = xfs_bunmapi(NULL, ip, offset_fsb, 1, 0, 1, &firstblock,10001000- &flist, &done);10011001-10021002- ASSERT(!flist.xbf_count && !flist.xbf_first);958958+ start_fsb = XFS_B_TO_FSBT(ip->i_mount, offset);959959+ error = xfs_bmap_punch_delalloc_range(ip, start_fsb, 1);1003960 if (error) {1004961 /* something screwed, just bail */1005962 if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {···9651010 break;9661011 }9671012next_buffer:968968- offset += len;10131013+ offset += 1 << inode->i_blkbits;96910149701015 } while ((bh = bh->b_this_page) != head);9711016···14601505 struct inode *inode = mapping->host;1461150614621507 if (to > inode->i_size) {14631463- struct iattr ia = {14641464- .ia_valid = ATTR_SIZE | ATTR_FORCE,14651465- .ia_size = inode->i_size,14661466- };14671467- xfs_setattr(XFS_I(inode), &ia, XFS_ATTR_NOLOCK);15081508+ /*15091509+ * punch out the delalloc blocks we have already allocated. We15101510+ * don't call xfs_setattr() to do this as we may be in the15111511+ * middle of a multi-iovec write and so the vfs inode->i_size15121512+ * will not match the xfs ip->i_size and so it will zero too15131513+ * much. Hence we jus truncate the page cache to zero what is15141514+ * necessary and punch the delalloc blocks directly.15151515+ */15161516+ struct xfs_inode *ip = XFS_I(inode);15171517+ xfs_fileoff_t start_fsb;15181518+ xfs_fileoff_t end_fsb;15191519+ int error;15201520+15211521+ truncate_pagecache(inode, to, inode->i_size);15221522+15231523+ /*15241524+ * Check if there are any blocks that are outside of i_size15251525+ * that need to be trimmed back.15261526+ */15271527+ start_fsb = XFS_B_TO_FSB(ip->i_mount, inode->i_size) + 1;15281528+ end_fsb = XFS_B_TO_FSB(ip->i_mount, to);15291529+ if (end_fsb <= start_fsb)15301530+ return;15311531+15321532+ xfs_ilock(ip, XFS_ILOCK_EXCL);15331533+ error = xfs_bmap_punch_delalloc_range(ip, start_fsb,15341534+ end_fsb - start_fsb);15351535+ if (error) {15361536+ /* something screwed, just bail */15371537+ if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {15381538+ xfs_fs_cmn_err(CE_ALERT, ip->i_mount,15391539+ "xfs_vm_write_failed: unable to clean up ino %lld",15401540+ ip->i_ino);15411541+ }15421542+ }15431543+ xfs_iunlock(ip, XFS_ILOCK_EXCL);14681544 }14691545}14701546
+16-19
fs/xfs/linux-2.6/xfs_buf.c
···488488 spin_unlock(&pag->pag_buf_lock);489489 xfs_perag_put(pag);490490491491- /* Attempt to get the semaphore without sleeping,492492- * if this does not work then we need to drop the493493- * spinlock and do a hard attempt on the semaphore.494494- */495495- if (down_trylock(&bp->b_sema)) {491491+ if (xfs_buf_cond_lock(bp)) {492492+ /* failed, so wait for the lock if requested. */496493 if (!(flags & XBF_TRYLOCK)) {497497- /* wait for buffer ownership */498494 xfs_buf_lock(bp);499495 XFS_STATS_INC(xb_get_locked_waited);500496 } else {501501- /* We asked for a trylock and failed, no need502502- * to look at file offset and length here, we503503- * know that this buffer at least overlaps our504504- * buffer and is locked, therefore our buffer505505- * either does not exist, or is this buffer.506506- */507497 xfs_buf_rele(bp);508498 XFS_STATS_INC(xb_busy_locked);509499 return NULL;510500 }511511- } else {512512- /* trylock worked */513513- XB_SET_OWNER(bp);514501 }515502516503 if (bp->b_flags & XBF_STALE) {···863876 */864877865878/*866866- * Locks a buffer object, if it is not already locked.867867- * Note that this in no way locks the underlying pages, so it is only868868- * useful for synchronizing concurrent use of buffer objects, not for869869- * synchronizing independent access to the underlying pages.879879+ * Locks a buffer object, if it is not already locked. Note that this in880880+ * no way locks the underlying pages, so it is only useful for881881+ * synchronizing concurrent use of buffer objects, not for synchronizing882882+ * independent access to the underlying pages.883883+ *884884+ * If we come across a stale, pinned, locked buffer, we know that we are885885+ * being asked to lock a buffer that has been reallocated. Because it is886886+ * pinned, we know that the log has not been pushed to disk and hence it887887+ * will still be locked. Rather than continuing to have trylock attempts888888+ * fail until someone else pushes the log, push it ourselves before889889+ * returning. This means that the xfsaild will not get stuck trying890890+ * to push on stale inode buffers.870891 */871892int872893xfs_buf_cond_lock(···885890 locked = down_trylock(&bp->b_sema) == 0;886891 if (locked)887892 XB_SET_OWNER(bp);893893+ else if (atomic_read(&bp->b_pin_count) && (bp->b_flags & XBF_STALE))894894+ xfs_log_force(bp->b_target->bt_mount, 0);888895889896 trace_xfs_buf_cond_lock(bp, _RET_IP_);890897 return locked ? 0 : -EBUSY;
+83-2
fs/xfs/xfs_bmap.c
···54715471 if (error)54725472 goto out_unlock_iolock;54735473 }54745474-54755475- ASSERT(ip->i_delayed_blks == 0);54745474+ /*54755475+ * even after flushing the inode, there can still be delalloc54765476+ * blocks on the inode beyond EOF due to speculative54775477+ * preallocation. These are not removed until the release54785478+ * function is called or the inode is inactivated. Hence we54795479+ * cannot assert here that ip->i_delayed_blks == 0.54805480+ */54765481 }5477548254785483 lock = xfs_ilock_map_shared(ip);···60746069 frp = XFS_BMBT_REC_ADDR(mp, block, b);60756070 *count += xfs_bmbt_disk_get_blockcount(frp);60766071 }60726072+}60736073+60746074+/*60756075+ * dead simple method of punching delalyed allocation blocks from a range in60766076+ * the inode. Walks a block at a time so will be slow, but is only executed in60776077+ * rare error cases so the overhead is not critical. This will alays punch out60786078+ * both the start and end blocks, even if the ranges only partially overlap60796079+ * them, so it is up to the caller to ensure that partial blocks are not60806080+ * passed in.60816081+ */60826082+int60836083+xfs_bmap_punch_delalloc_range(60846084+ struct xfs_inode *ip,60856085+ xfs_fileoff_t start_fsb,60866086+ xfs_fileoff_t length)60876087+{60886088+ xfs_fileoff_t remaining = length;60896089+ int error = 0;60906090+60916091+ ASSERT(xfs_isilocked(ip, XFS_ILOCK_EXCL));60926092+60936093+ do {60946094+ int done;60956095+ xfs_bmbt_irec_t imap;60966096+ int nimaps = 1;60976097+ xfs_fsblock_t firstblock;60986098+ xfs_bmap_free_t flist;60996099+61006100+ /*61016101+ * Map the range first and check that it is a delalloc extent61026102+ * before trying to unmap the range. Otherwise we will be61036103+ * trying to remove a real extent (which requires a61046104+ * transaction) or a hole, which is probably a bad idea...61056105+ */61066106+ error = xfs_bmapi(NULL, ip, start_fsb, 1,61076107+ XFS_BMAPI_ENTIRE, NULL, 0, &imap,61086108+ &nimaps, NULL);61096109+61106110+ if (error) {61116111+ /* something screwed, just bail */61126112+ if (!XFS_FORCED_SHUTDOWN(ip->i_mount)) {61136113+ xfs_fs_cmn_err(CE_ALERT, ip->i_mount,61146114+ "Failed delalloc mapping lookup ino %lld fsb %lld.",61156115+ ip->i_ino, start_fsb);61166116+ }61176117+ break;61186118+ }61196119+ if (!nimaps) {61206120+ /* nothing there */61216121+ goto next_block;61226122+ }61236123+ if (imap.br_startblock != DELAYSTARTBLOCK) {61246124+ /* been converted, ignore */61256125+ goto next_block;61266126+ }61276127+ WARN_ON(imap.br_blockcount == 0);61286128+61296129+ /*61306130+ * Note: while we initialise the firstblock/flist pair, they61316131+ * should never be used because blocks should never be61326132+ * allocated or freed for a delalloc extent and hence we need61336133+ * don't cancel or finish them after the xfs_bunmapi() call.61346134+ */61356135+ xfs_bmap_init(&flist, &firstblock);61366136+ error = xfs_bunmapi(NULL, ip, start_fsb, 1, 0, 1, &firstblock,61376137+ &flist, &done);61386138+ if (error)61396139+ break;61406140+61416141+ ASSERT(!flist.xbf_count && !flist.xbf_first);61426142+next_block:61436143+ start_fsb++;61446144+ remaining--;61456145+ } while(remaining > 0);61466146+61476147+ return error;60776148}
+5
fs/xfs/xfs_bmap.h
···394394 int whichfork,395395 int *count);396396397397+int398398+xfs_bmap_punch_delalloc_range(399399+ struct xfs_inode *ip,400400+ xfs_fileoff_t start_fsb,401401+ xfs_fileoff_t length);397402#endif /* __KERNEL__ */398403399404#endif /* __XFS_BMAP_H__ */
+13
fs/xfs/xfs_dfrag.c
···377377 ip->i_d.di_format = tip->i_d.di_format;378378 tip->i_d.di_format = tmp;379379380380+ /*381381+ * The extents in the source inode could still contain speculative382382+ * preallocation beyond EOF (e.g. the file is open but not modified383383+ * while defrag is in progress). In that case, we need to copy over the384384+ * number of delalloc blocks the data fork in the source inode is385385+ * tracking beyond EOF so that when the fork is truncated away when the386386+ * temporary inode is unlinked we don't underrun the i_delayed_blks387387+ * counter on that inode.388388+ */389389+ ASSERT(tip->i_delayed_blks == 0);390390+ tip->i_delayed_blks = ip->i_delayed_blks;391391+ ip->i_delayed_blks = 0;392392+380393 ilf_fields = XFS_ILOG_CORE;381394382395 switch(ip->i_d.di_format) {
···127127#define XFS_RANDOM_BMAPIFORMAT XFS_RANDOM_DEFAULT128128129129#ifdef DEBUG130130+extern int xfs_error_test_active;130131extern int xfs_error_test(int, int *, char *, int, char *, unsigned long);131132132133#define XFS_NUM_INJECT_ERROR 10133134#define XFS_TEST_ERROR(expr, mp, tag, rf) \134134- ((expr) || \135135+ ((expr) || (xfs_error_test_active && \135136 xfs_error_test((tag), (mp)->m_fixedfsid, "expr", __LINE__, __FILE__, \136136- (rf)))137137+ (rf))))137138138139extern int xfs_errortag_add(int error_tag, xfs_mount_t *mp);139140extern int xfs_errortag_clearall(xfs_mount_t *mp, int loud);
+25-6
fs/xfs/xfs_inode_item.c
···657657}658658659659/*660660- * This is called to find out where the oldest active copy of the661661- * inode log item in the on disk log resides now that the last log662662- * write of it completed at the given lsn. Since we always re-log663663- * all dirty data in an inode, the latest copy in the on disk log664664- * is the only one that matters. Therefore, simply return the665665- * given lsn.660660+ * This is called to find out where the oldest active copy of the inode log661661+ * item in the on disk log resides now that the last log write of it completed662662+ * at the given lsn. Since we always re-log all dirty data in an inode, the663663+ * latest copy in the on disk log is the only one that matters. Therefore,664664+ * simply return the given lsn.665665+ *666666+ * If the inode has been marked stale because the cluster is being freed, we667667+ * don't want to (re-)insert this inode into the AIL. There is a race condition668668+ * where the cluster buffer may be unpinned before the inode is inserted into669669+ * the AIL during transaction committed processing. If the buffer is unpinned670670+ * before the inode item has been committed and inserted, then it is possible671671+ * for the buffer to be written and IO completions before the inode is inserted672672+ * into the AIL. In that case, we'd be inserting a clean, stale inode into the673673+ * AIL which will never get removed. It will, however, get reclaimed which674674+ * triggers an assert in xfs_inode_free() complaining about freein an inode675675+ * still in the AIL.676676+ *677677+ * To avoid this, return a lower LSN than the one passed in so that the678678+ * transaction committed code will not move the inode forward in the AIL but679679+ * will still unpin it properly.666680 */667681STATIC xfs_lsn_t668682xfs_inode_item_committed(669683 struct xfs_log_item *lip,670684 xfs_lsn_t lsn)671685{686686+ struct xfs_inode_log_item *iip = INODE_ITEM(lip);687687+ struct xfs_inode *ip = iip->ili_inode;688688+689689+ if (xfs_iflags_test(ip, XFS_ISTALE))690690+ return lsn - 1;672691 return lsn;673692}674693
···219219220220extern int acpi_blacklisted(void);221221extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d);222222-extern int acpi_osi_setup(char *str);222222+extern void acpi_osi_setup(char *str);223223224224#ifdef CONFIG_ACPI_NUMA225225int acpi_get_pxm(acpi_handle handle);
+5
include/linux/binfmts.h
···2929 char buf[BINPRM_BUF_SIZE];3030#ifdef CONFIG_MMU3131 struct vm_area_struct *vma;3232+ unsigned long vma_pages;3233#else3334# define MAX_ARG_PAGES 323435 struct page *page[MAX_ARG_PAGES];···5958 unsigned interp_data;6059 unsigned long loader, exec;6160};6161+6262+extern void acct_arg_size(struct linux_binprm *bprm, unsigned long pages);6363+extern struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,6464+ int write);62656366#define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 06467#define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT)
-5
include/linux/cpu.h
···1010 *1111 * CPUs are exported via sysfs in the class/cpu/devices/1212 * directory. 1313- *1414- * Per-cpu interfaces can be implemented using a struct device_interface. 1515- * See the following for how to do this: 1616- * - drivers/base/intf.c 1717- * - Documentation/driver-model/interface.txt1813 */1914#ifndef _LINUX_CPU_H_2015#define _LINUX_CPU_H_
···1010 *1111 * Nodes are exported via driverfs in the class/node/devices/1212 * directory. 1313- *1414- * Per-node interfaces can be implemented using a struct device_interface. 1515- * See the following for how to do this: 1616- * - drivers/base/intf.c 1717- * - Documentation/driver-model/interface.txt1813 */1914#ifndef _LINUX_NODE_H_2015#define _LINUX_NODE_H_
+1
include/linux/tty.h
···366366#define TTY_HUPPED 18 /* Post driver->hangup() */367367#define TTY_FLUSHING 19 /* Flushing to ldisc in progress */368368#define TTY_FLUSHPENDING 20 /* Queued buffer flush pending */369369+#define TTY_HUPPING 21 /* ->hangup() in progress */369370370371#define TTY_WRITE_FLUSH(tty) tty_write_flush((tty))371372
+1-1
include/linux/uio_driver.h
···33 *44 * Copyright(C) 2005, Benedikt Spranger <b.spranger@linutronix.de>55 * Copyright(C) 2005, Thomas Gleixner <tglx@linutronix.de>66- * Copyright(C) 2006, Hans J. Koch <hjk@linutronix.de>66+ * Copyright(C) 2006, Hans J. Koch <hjk@hansjkoch.de>77 * Copyright(C) 2006, Greg Kroah-Hartman <greg@kroah.com>88 *99 * Userspace IO driver.
+4
include/linux/usb.h
···313313 int busnum; /* Bus number (in order of reg) */314314 const char *bus_name; /* stable id (PCI slot_name etc) */315315 u8 uses_dma; /* Does the host controller use DMA? */316316+ u8 uses_pio_for_control; /*317317+ * Does the host controller use PIO318318+ * for control transfers?319319+ */316320 u8 otg_port; /* 0, or number of OTG/HNP port */317321 unsigned is_b_host:1; /* true during some HNP roleswitches */318322 unsigned b_hnp_enable:1; /* OTG: did A-Host enable HNP? */
···7788struct vm_area_struct; /* vma defining user mapping in mm_types.h */991010-extern bool vmap_lazy_unmap;1111-1210/* bits in flags of vmalloc's vm_struct below */1311#define VM_IOREMAP 0x00000001 /* ioremap() and friends */1412#define VM_ALLOC 0x00000002 /* vmalloc() */
+6-10
include/media/v4l2-common.h
···137137138138139139/* Load an i2c module and return an initialized v4l2_subdev struct.140140- Only call request_module if module_name != NULL.141140 The client_type argument is the name of the chip that's on the adapter. */142141struct v4l2_subdev *v4l2_i2c_new_subdev_cfg(struct v4l2_device *v4l2_dev,143143- struct i2c_adapter *adapter,144144- const char *module_name, const char *client_type,142142+ struct i2c_adapter *adapter, const char *client_type,145143 int irq, void *platform_data,146144 u8 addr, const unsigned short *probe_addrs);147145148146/* Load an i2c module and return an initialized v4l2_subdev struct.149149- Only call request_module if module_name != NULL.150147 The client_type argument is the name of the chip that's on the adapter. */151148static inline struct v4l2_subdev *v4l2_i2c_new_subdev(struct v4l2_device *v4l2_dev,152152- struct i2c_adapter *adapter,153153- const char *module_name, const char *client_type,149149+ struct i2c_adapter *adapter, const char *client_type,154150 u8 addr, const unsigned short *probe_addrs)155151{156156- return v4l2_i2c_new_subdev_cfg(v4l2_dev, adapter, module_name,157157- client_type, 0, NULL, addr, probe_addrs);152152+ return v4l2_i2c_new_subdev_cfg(v4l2_dev, adapter, client_type, 0, NULL,153153+ addr, probe_addrs);158154}159155160156struct i2c_board_info;161157162158struct v4l2_subdev *v4l2_i2c_new_subdev_board(struct v4l2_device *v4l2_dev,163163- struct i2c_adapter *adapter, const char *module_name,164164- struct i2c_board_info *info, const unsigned short *probe_addrs);159159+ struct i2c_adapter *adapter, struct i2c_board_info *info,160160+ const unsigned short *probe_addrs);165161166162/* Initialize an v4l2_subdev with data from an i2c_client struct */167163void v4l2_i2c_subdev_init(struct v4l2_subdev *sd, struct i2c_client *client,
+6-1
include/xen/events.h
···76767777#ifdef CONFIG_PCI_MSI7878/* Allocate an irq and a pirq to be used with MSIs. */7979-void xen_allocate_pirq_msi(char *name, int *irq, int *pirq);7979+#define XEN_ALLOC_PIRQ (1 << 0)8080+#define XEN_ALLOC_IRQ (1 << 1)8181+void xen_allocate_pirq_msi(char *name, int *irq, int *pirq, int alloc_mask);8082int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type);8183#endif8284···90889189/* Return gsi allocated to pirq */9290int xen_gsi_from_irq(unsigned pirq);9191+9292+/* Return irq from pirq */9393+int xen_irq_from_pirq(unsigned pirq);93949495#endif /* _XEN_EVENTS_H */
+10
include/xen/interface/physdev.h
···188188 uint32_t nr_pirqs;189189};190190191191+/* type is MAP_PIRQ_TYPE_GSI or MAP_PIRQ_TYPE_MSI192192+ * the hypercall returns a free pirq */193193+#define PHYSDEVOP_get_free_pirq 23194194+struct physdev_get_free_pirq {195195+ /* IN */ 196196+ int type;197197+ /* OUT */198198+ uint32_t pirq;199199+};200200+191201/*192202 * Notify that some PIRQ-bound event channels have been unmasked.193203 * ** This command is obsolete since interface version 0x00030202 and is **
+9
kernel/exit.c
···914914 if (unlikely(!tsk->pid))915915 panic("Attempted to kill the idle task!");916916917917+ /*918918+ * If do_exit is called because this processes oopsed, it's possible919919+ * that get_fs() was left as KERNEL_DS, so reset it to USER_DS before920920+ * continuing. Amongst other possible reasons, this is to prevent921921+ * mm_release()->clear_child_tid() from writing to a user-controlled922922+ * kernel address.923923+ */924924+ set_fs(USER_DS);925925+917926 tracehook_report_exit(&code);918927919928 validate_creds_for_do_exit(tsk);
+12-10
kernel/power/hibernate.c
···327327int hibernation_snapshot(int platform_mode)328328{329329 int error;330330- gfp_t saved_mask;331330332331 error = platform_begin(platform_mode);333332 if (error)···338339 goto Close;339340340341 suspend_console();341341- saved_mask = clear_gfp_allowed_mask(GFP_IOFS);342342+ pm_restrict_gfp_mask();342343 error = dpm_suspend_start(PMSG_FREEZE);343344 if (error)344345 goto Recover_platform;···347348 goto Recover_platform;348349349350 error = create_image(platform_mode);350350- /* Control returns here after successful restore */351351+ /*352352+ * Control returns here (1) after the image has been created or the353353+ * image creation has failed and (2) after a successful restore.354354+ */351355352356 Resume_devices:353357 /* We may need to release the preallocated image pages here. */···359357360358 dpm_resume_end(in_suspend ?361359 (error ? PMSG_RECOVER : PMSG_THAW) : PMSG_RESTORE);362362- set_gfp_allowed_mask(saved_mask);360360+361361+ if (error || !in_suspend)362362+ pm_restore_gfp_mask();363363+363364 resume_console();364365 Close:365366 platform_end(platform_mode);···457452int hibernation_restore(int platform_mode)458453{459454 int error;460460- gfp_t saved_mask;461455462456 pm_prepare_console();463457 suspend_console();464464- saved_mask = clear_gfp_allowed_mask(GFP_IOFS);458458+ pm_restrict_gfp_mask();465459 error = dpm_suspend_start(PMSG_QUIESCE);466460 if (!error) {467461 error = resume_target_kernel(platform_mode);468462 dpm_resume_end(PMSG_RECOVER);469463 }470470- set_gfp_allowed_mask(saved_mask);464464+ pm_restore_gfp_mask();471465 resume_console();472466 pm_restore_console();473467 return error;···480476int hibernation_platform_enter(void)481477{482478 int error;483483- gfp_t saved_mask;484479485480 if (!hibernation_ops)486481 return -ENOSYS;···495492496493 entering_platform_hibernation = true;497494 suspend_console();498498- saved_mask = clear_gfp_allowed_mask(GFP_IOFS);499495 error = dpm_suspend_start(PMSG_HIBERNATE);500496 if (error) {501497 if (hibernation_ops->recover)···538536 Resume_devices:539537 entering_platform_hibernation = false;540538 dpm_resume_end(PMSG_RESTORE);541541- set_gfp_allowed_mask(saved_mask);542539 resume_console();543540544541 Close:···647646 swsusp_free();648647 if (!error)649648 power_down();649649+ pm_restore_gfp_mask();650650 } else {651651 pr_debug("PM: Image restored successfully.\n");652652 }
+2-3
kernel/power/suspend.c
···197197int suspend_devices_and_enter(suspend_state_t state)198198{199199 int error;200200- gfp_t saved_mask;201200202201 if (!suspend_ops)203202 return -ENOSYS;···207208 goto Close;208209 }209210 suspend_console();210210- saved_mask = clear_gfp_allowed_mask(GFP_IOFS);211211+ pm_restrict_gfp_mask();211212 suspend_test_start();212213 error = dpm_suspend_start(PMSG_SUSPEND);213214 if (error) {···224225 suspend_test_start();225226 dpm_resume_end(PMSG_RESUME);226227 suspend_test_finish("resume devices");227227- set_gfp_allowed_mask(saved_mask);228228+ pm_restore_gfp_mask();228229 resume_console();229230 Close:230231 if (suspend_ops->end)
+38-15
kernel/power/swap.c
···66 *77 * Copyright (C) 1998,2001-2005 Pavel Machek <pavel@ucw.cz>88 * Copyright (C) 2006 Rafael J. Wysocki <rjw@sisk.pl>99+ * Copyright (C) 2010 Bojan Smojver <bojan@rexursive.com>910 *1011 * This file is released under the GPLv2.1112 *···754753{755754 unsigned int m;756755 int error = 0;756756+ struct bio *bio;757757 struct timeval start;758758 struct timeval stop;759759 unsigned nr_pages;760760- size_t off, unc_len, cmp_len;761761- unsigned char *unc, *cmp, *page;760760+ size_t i, off, unc_len, cmp_len;761761+ unsigned char *unc, *cmp, *page[LZO_CMP_PAGES];762762763763- page = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH);764764- if (!page) {765765- printk(KERN_ERR "PM: Failed to allocate LZO page\n");766766- return -ENOMEM;763763+ for (i = 0; i < LZO_CMP_PAGES; i++) {764764+ page[i] = (void *)__get_free_page(__GFP_WAIT | __GFP_HIGH);765765+ if (!page[i]) {766766+ printk(KERN_ERR "PM: Failed to allocate LZO page\n");767767+768768+ while (i)769769+ free_page((unsigned long)page[--i]);770770+771771+ return -ENOMEM;772772+ }767773 }768774769775 unc = vmalloc(LZO_UNC_SIZE);770776 if (!unc) {771777 printk(KERN_ERR "PM: Failed to allocate LZO uncompressed\n");772772- free_page((unsigned long)page);778778+779779+ for (i = 0; i < LZO_CMP_PAGES; i++)780780+ free_page((unsigned long)page[i]);781781+773782 return -ENOMEM;774783 }775784776785 cmp = vmalloc(LZO_CMP_SIZE);777786 if (!cmp) {778787 printk(KERN_ERR "PM: Failed to allocate LZO compressed\n");788788+779789 vfree(unc);780780- free_page((unsigned long)page);790790+ for (i = 0; i < LZO_CMP_PAGES; i++)791791+ free_page((unsigned long)page[i]);792792+781793 return -ENOMEM;782794 }783795···801787 if (!m)802788 m = 1;803789 nr_pages = 0;790790+ bio = NULL;804791 do_gettimeofday(&start);805792806793 error = snapshot_write_next(snapshot);···809794 goto out_finish;810795811796 for (;;) {812812- error = swap_read_page(handle, page, NULL); /* sync */797797+ error = swap_read_page(handle, page[0], NULL); /* sync */813798 if (error)814799 break;815800816816- cmp_len = *(size_t *)page;801801+ cmp_len = *(size_t *)page[0];817802 if (unlikely(!cmp_len ||818803 cmp_len > lzo1x_worst_compress(LZO_UNC_SIZE))) {819804 printk(KERN_ERR "PM: Invalid LZO compressed length\n");···821806 break;822807 }823808824824- memcpy(cmp, page, PAGE_SIZE);825825- for (off = PAGE_SIZE; off < LZO_HEADER + cmp_len; off += PAGE_SIZE) {826826- error = swap_read_page(handle, page, NULL); /* sync */809809+ for (off = PAGE_SIZE, i = 1;810810+ off < LZO_HEADER + cmp_len; off += PAGE_SIZE, i++) {811811+ error = swap_read_page(handle, page[i], &bio);827812 if (error)828813 goto out_finish;814814+ }829815830830- memcpy(cmp + off, page, PAGE_SIZE);816816+ error = hib_wait_on_bio_chain(&bio); /* need all data now */817817+ if (error)818818+ goto out_finish;819819+820820+ for (off = 0, i = 0;821821+ off < LZO_HEADER + cmp_len; off += PAGE_SIZE, i++) {822822+ memcpy(cmp + off, page[i], PAGE_SIZE);831823 }832824833825 unc_len = LZO_UNC_SIZE;···879857880858 vfree(cmp);881859 vfree(unc);882882- free_page((unsigned long)page);860860+ for (i = 0; i < LZO_CMP_PAGES; i++)861861+ free_page((unsigned long)page[i]);883862884863 return error;885864}
···17241724 /*17251725 * Keep it very simple for now: just lock out ksmd and17261726 * MADV_UNMERGEABLE while any memory is going offline.17271727+ * mutex_lock_nested() is necessary because lockdep was alarmed17281728+ * that here we take ksm_thread_mutex inside notifier chain17291729+ * mutex, and later take notifier chain mutex inside17301730+ * ksm_thread_mutex to unlock it. But that's safe because both17311731+ * are inside mem_hotplug_mutex.17271732 */17281728- mutex_lock(&ksm_thread_mutex);17331733+ mutex_lock_nested(&ksm_thread_mutex, SINGLE_DEPTH_NESTING);17291734 break;1730173517311736 case MEM_OFFLINE:
+4-4
mm/memory-failure.c
···5151#include <linux/slab.h>5252#include <linux/swapops.h>5353#include <linux/hugetlb.h>5454+#include <linux/memory_hotplug.h>5455#include "internal.h"55565657int sysctl_memory_failure_early_kill __read_mostly = 0;···12311230 return 1;1232123112331232 /*12341234- * The lock_system_sleep prevents a race with memory hotplug,12351235- * because the isolation assumes there's only a single user.12331233+ * The lock_memory_hotplug prevents a race with memory hotplug.12361234 * This is a big hammer, a better would be nicer.12371235 */12381238- lock_system_sleep();12361236+ lock_memory_hotplug();1239123712401238 /*12411239 * Isolate the page, so that it doesn't get reallocated if it···12641264 ret = 1;12651265 }12661266 unset_migratetype_isolate(p);12671267- unlock_system_sleep();12671267+ unlock_memory_hotplug();12681268 return ret;12691269}12701270
+24-7
mm/memory_hotplug.c
···34343535#include "internal.h"36363737+DEFINE_MUTEX(mem_hotplug_mutex);3838+3939+void lock_memory_hotplug(void)4040+{4141+ mutex_lock(&mem_hotplug_mutex);4242+4343+ /* for exclusive hibernation if CONFIG_HIBERNATION=y */4444+ lock_system_sleep();4545+}4646+4747+void unlock_memory_hotplug(void)4848+{4949+ unlock_system_sleep();5050+ mutex_unlock(&mem_hotplug_mutex);5151+}5252+5353+3754/* add this memory to iomem resource */3855static struct resource *register_memory_resource(u64 start, u64 size)3956{···510493 pg_data_t *pgdat;511494 int ret;512495513513- lock_system_sleep();496496+ lock_memory_hotplug();514497 pgdat = hotadd_new_pgdat(nid, 0);515498 if (pgdat) {516499 ret = -ENOMEM;···521504 BUG_ON(ret);522505523506out:524524- unlock_system_sleep();507507+ unlock_memory_hotplug();525508 return ret;526509}527510···533516 struct resource *res;534517 int ret;535518536536- lock_system_sleep();519519+ lock_memory_hotplug();537520538521 res = register_memory_resource(start, size);539522 ret = -EEXIST;···580563 release_memory_resource(res);581564582565out:583583- unlock_system_sleep();566566+ unlock_memory_hotplug();584567 return ret;585568}586569EXPORT_SYMBOL_GPL(add_memory);···808791 if (!test_pages_in_a_zone(start_pfn, end_pfn))809792 return -EINVAL;810793811811- lock_system_sleep();794794+ lock_memory_hotplug();812795813796 zone = page_zone(pfn_to_page(start_pfn));814797 node = zone_to_nid(zone);···897880 writeback_set_ratelimit();898881899882 memory_notify(MEM_OFFLINE, &arg);900900- unlock_system_sleep();883883+ unlock_memory_hotplug();901884 return 0;902885903886failed_removal:···908891 undo_isolate_page_range(start_pfn, end_pfn);909892910893out:911911- unlock_system_sleep();894894+ unlock_memory_hotplug();912895 return ret;913896}914897
···9292config MAC80211_LEDS9393 bool "Enable LED triggers"9494 depends on MAC802119595- select NEW_LEDS9595+ depends on LEDS_CLASS9696 select LEDS_TRIGGERS9797 ---help---9898 This option enables a few LED triggers for different
+1
scripts/kconfig/expr.h
···164164 struct menu *list;165165 struct symbol *sym;166166 struct property *prompt;167167+ struct expr *visibility;167168 struct expr *dep;168169 unsigned int flags;169170 char *help;
···5050 unsigned long flags;5151 int ret = 0;52525353- spin_lock_irqsave(&nuc900_audio->lock, flags);5454-5553 ret = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(params));5654 if (ret < 0)5755 return ret;5656+5757+ spin_lock_irqsave(&nuc900_audio->lock, flags);58585959 nuc900_audio->substream = substream;6060 nuc900_audio->dma_addr[substream->stream] = runtime->dma_addr;···169169 struct snd_pcm_runtime *runtime = substream->runtime;170170 struct nuc900_audio *nuc900_audio = runtime->private_data;171171 unsigned long flags, val;172172+ int ret = 0;172173173174 spin_lock_irqsave(&nuc900_audio->lock, flags);174175···198197 AUDIO_WRITE(nuc900_audio->mmio + ACTL_RESET, val);199198 break;200199 default:201201- return -EINVAL;200200+ ret = -EINVAL;202201 }203202 spin_unlock_irqrestore(&nuc900_audio->lock, flags);204204- return 0;203203+ return ret;205204}206205207206static int nuc900_dma_trigger(struct snd_pcm_substream *substream, int cmd)···333332 .ops = &nuc900_dma_ops,334333 .pcm_new = nuc900_dma_new,335334 .pcm_free = nuc900_dma_free_dma_buffers,336336-}335335+};337336338337static int __devinit nuc900_soc_platform_probe(struct platform_device *pdev)339338{
+1-1
sound/soc/omap/Kconfig
···1212config SND_OMAP_SOC_N8101313 tristate "SoC Audio support for Nokia N810"1414 depends on SND_OMAP_SOC && MACH_NOKIA_N810 && I2C1515+ depends on OMAP_MUX1516 select SND_OMAP_SOC_MCBSP1616- select OMAP_MUX1717 select SND_SOC_TLV320AIC3X1818 help1919 Say Y if you want to add support for SoC audio on Nokia N810.