···954954 results in some sort of conflict internally,955955 this hook allows it to do that.956956957957-elevator_dispatch_fn fills the dispatch queue with ready requests.957957+elevator_dispatch_fn* fills the dispatch queue with ready requests.958958 I/O schedulers are free to postpone requests by959959 not filling the dispatch queue unless @force960960 is non-zero. Once dispatched, I/O schedulers961961 are not allowed to manipulate the requests -962962 they belong to generic dispatch queue.963963964964-elevator_add_req_fn called to add a new request into the scheduler964964+elevator_add_req_fn* called to add a new request into the scheduler965965966966elevator_queue_empty_fn returns true if the merge queue is empty.967967 Drivers shouldn't use this, but rather check···991991elevator_deactivate_req_fn Called when device driver decides to delay992992 a request by requeueing it.993993994994-elevator_init_fn994994+elevator_init_fn*995995elevator_exit_fn Allocate and free any elevator specific storage996996 for a queue.997997
+63
Documentation/block/queue-sysfs.txt
···11+Queue sysfs files22+=================33+44+This text file will detail the queue files that are located in the sysfs tree55+for each block device. Note that stacked devices typically do not export66+any settings, since their queue merely functions are a remapping target.77+These files are the ones found in the /sys/block/xxx/queue/ directory.88+99+Files denoted with a RO postfix are readonly and the RW postfix means1010+read-write.1111+1212+hw_sector_size (RO)1313+-------------------1414+This is the hardware sector size of the device, in bytes.1515+1616+max_hw_sectors_kb (RO)1717+----------------------1818+This is the maximum number of kilobytes supported in a single data transfer.1919+2020+max_sectors_kb (RW)2121+-------------------2222+This is the maximum number of kilobytes that the block layer will allow2323+for a filesystem request. Must be smaller than or equal to the maximum2424+size allowed by the hardware.2525+2626+nomerges (RW)2727+-------------2828+This enables the user to disable the lookup logic involved with IO merging2929+requests in the block layer. Merging may still occur through a direct3030+1-hit cache, since that comes for (almost) free. The IO scheduler will not3131+waste cycles doing tree/hash lookups for merges if nomerges is 1. Defaults3232+to 0, enabling all merges.3333+3434+nr_requests (RW)3535+----------------3636+This controls how many requests may be allocated in the block layer for3737+read or write requests. Note that the total allocated number may be twice3838+this amount, since it applies only to reads or writes (not the accumulated3939+sum).4040+4141+read_ahead_kb (RW)4242+------------------4343+Maximum number of kilobytes to read-ahead for filesystems on this block4444+device.4545+4646+rq_affinity (RW)4747+----------------4848+If this option is enabled, the block layer will migrate request completions4949+to the CPU that originally submitted the request. For some workloads5050+this provides a significant reduction in CPU cycles due to caching effects.5151+5252+scheduler (RW)5353+--------------5454+When read, this file will display the current and available IO schedulers5555+for this block device. The currently active IO scheduler will be enclosed5656+in [] brackets. Writing an IO scheduler name to this file will switch5757+control of this block device to that new IO scheduler. Note that writing5858+an IO scheduler name to this file will attempt to load that IO scheduler5959+module, if it isn't already present in the system.6060+6161+6262+6363+Jens Axboe <jens.axboe@oracle.com>, February 2009
+6-19
Documentation/networking/alias.txt
···22IP-Aliasing:33============4455-IP-aliases are additional IP-addresses/masks hooked up to a base 66-interface by adding a colon and a string when running ifconfig. 55+IP-aliases are an obsolete way to manage multiple IP-addresses/masks66+per interface. Newer tools such as iproute2 support multiple77+address/prefixes per interface, but aliases are still supported88+for backwards compatibility.99+1010+An alias is formed by adding a colon and a string when running ifconfig.711This string is usually numeric, but this is not a must.88-99-IP-Aliases are avail if CONFIG_INET (`standard' IPv4 networking) 1010-is configured in the kernel.1111-12121313o Alias creation.1414 Alias creation is done by 'magic' interface naming: eg. to create a···38383939 If the base device is shut down the added aliases will be deleted 4040 too.4141-4242-4343-Contact4444--------4545-Please finger or e-mail me:4646- Juan Jose Ciarlante <jjciarla@raiz.uncu.edu.ar>4747-4848-Updated by Erik Schoenfelder <schoenfr@gaertner.DE>4949-5050-; local variables:5151-; mode: indented-text5252-; mode: auto-fill5353-; end:
···11+MPC5200 Device Tree Bindings22+----------------------------33+44+(c) 2006-2009 Secret Lab Technologies Ltd55+Grant Likely <grant.likely@secretlab.ca>66+77+Naming conventions88+------------------99+For mpc5200 on-chip devices, the format for each compatible value is1010+<chip>-<device>[-<mode>]. The OS should be able to match a device driver1111+to the device based solely on the compatible value. If two drivers1212+match on the compatible list; the 'most compatible' driver should be1313+selected.1414+1515+The split between the MPC5200 and the MPC5200B leaves a bit of a1616+conundrum. How should the compatible property be set up to provide1717+maximum compatibility information; but still accurately describe the1818+chip? For the MPC5200; the answer is easy. Most of the SoC devices1919+originally appeared on the MPC5200. Since they didn't exist anywhere2020+else; the 5200 compatible properties will contain only one item;2121+"fsl,mpc5200-<device>".2222+2323+The 5200B is almost the same as the 5200, but not quite. It fixes2424+silicon bugs and it adds a small number of enhancements. Most of the2525+devices either provide exactly the same interface as on the 5200. A few2626+devices have extra functions but still have a backwards compatible mode.2727+To express this information as completely as possible, 5200B device trees2828+should have two items in the compatible list:2929+ compatible = "fsl,mpc5200b-<device>","fsl,mpc5200-<device>";3030+3131+It is *strongly* recommended that 5200B device trees follow this convention3232+(instead of only listing the base mpc5200 item).3333+3434+ie. ethernet on mpc5200: compatible = "fsl,mpc5200-fec";3535+ ethernet on mpc5200b: compatible = "fsl,mpc5200b-fec", "fsl,mpc5200-fec";3636+3737+Modal devices, like PSCs, also append the configured function to the3838+end of the compatible field. ie. A PSC in i2s mode would specify3939+"fsl,mpc5200-psc-i2s", not "fsl,mpc5200-i2s". This convention is chosen to4040+avoid naming conflicts with non-psc devices providing the same4141+function. For example, "fsl,mpc5200-spi" and "fsl,mpc5200-psc-spi" describe4242+the mpc5200 simple spi device and a PSC spi mode respectively.4343+4444+At the time of writing, exact chip may be either 'fsl,mpc5200' or4545+'fsl,mpc5200b'.4646+4747+The soc node4848+------------4949+This node describes the on chip SOC peripherals. Every mpc5200 based5050+board will have this node, and as such there is a common naming5151+convention for SOC devices.5252+5353+Required properties:5454+name description5555+---- -----------5656+ranges Memory range of the internal memory mapped registers.5757+ Should be <0 [baseaddr] 0xc000>5858+reg Should be <[baseaddr] 0x100>5959+compatible mpc5200: "fsl,mpc5200-immr"6060+ mpc5200b: "fsl,mpc5200b-immr"6161+system-frequency 'fsystem' frequency in Hz; XLB, IPB, USB and PCI6262+ clocks are derived from the fsystem clock.6363+bus-frequency IPB bus frequency in Hz. Clock rate6464+ used by most of the soc devices.6565+6666+soc child nodes6767+---------------6868+Any on chip SOC devices available to Linux must appear as soc5200 child nodes.6969+7070+Note: The tables below show the value for the mpc5200. A mpc5200b device7171+tree should use the "fsl,mpc5200b-<device>","fsl,mpc5200-<device>" form.7272+7373+Required soc5200 child nodes:7474+name compatible Description7575+---- ---------- -----------7676+cdm@<addr> fsl,mpc5200-cdm Clock Distribution7777+interrupt-controller@<addr> fsl,mpc5200-pic need an interrupt7878+ controller to boot7979+bestcomm@<addr> fsl,mpc5200-bestcomm Bestcomm DMA controller8080+8181+Recommended soc5200 child nodes; populate as needed for your board8282+name compatible Description8383+---- ---------- -----------8484+timer@<addr> fsl,mpc5200-gpt General purpose timers8585+gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio controller8686+gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio controller8787+rtc@<addr> fsl,mpc5200-rtc Real time clock8888+mscan@<addr> fsl,mpc5200-mscan CAN bus controller8989+pci@<addr> fsl,mpc5200-pci PCI bridge9090+serial@<addr> fsl,mpc5200-psc-uart PSC in serial mode9191+i2s@<addr> fsl,mpc5200-psc-i2s PSC in i2s mode9292+ac97@<addr> fsl,mpc5200-psc-ac97 PSC in ac97 mode9393+spi@<addr> fsl,mpc5200-psc-spi PSC in spi mode9494+irda@<addr> fsl,mpc5200-psc-irda PSC in IrDA mode9595+spi@<addr> fsl,mpc5200-spi MPC5200 spi device9696+ethernet@<addr> fsl,mpc5200-fec MPC5200 ethernet device9797+ata@<addr> fsl,mpc5200-ata IDE ATA interface9898+i2c@<addr> fsl,mpc5200-i2c I2C controller9999+usb@<addr> fsl,mpc5200-ohci,ohci-be USB controller100100+xlb@<addr> fsl,mpc5200-xlb XLB arbitrator101101+102102+fsl,mpc5200-gpt nodes103103+---------------------104104+On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board105105+design supports the internal wdt, then the device node for GPT0 should106106+include the empty property 'fsl,has-wdt'.107107+108108+An mpc5200-gpt can be used as a single line GPIO controller. To do so,109109+add the following properties to the gpt node:110110+ gpio-controller;111111+ #gpio-cells = <2>;112112+When referencing the GPIO line from another node, the first cell must always113113+be zero and the second cell represents the gpio flags and described in the114114+gpio device tree binding.115115+116116+An mpc5200-gpt can be used as a single line edge sensitive interrupt117117+controller. To do so, add the following properties to the gpt node:118118+ interrupt-controller;119119+ #interrupt-cells = <1>;120120+When referencing the IRQ line from another node, the cell represents the121121+sense mode; 1 for edge rising, 2 for edge falling.122122+123123+fsl,mpc5200-psc nodes124124+---------------------125125+The PSCs should include a cell-index which is the index of the PSC in126126+hardware. cell-index is used to determine which shared SoC registers to127127+use when setting up PSC clocking. cell-index number starts at '0'. ie:128128+ PSC1 has 'cell-index = <0>'129129+ PSC4 has 'cell-index = <3>'130130+131131+PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in132132+i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the133133+compatible field.134134+135135+136136+fsl,mpc5200-gpio and fsl,mpc5200-gpio-wkup nodes137137+------------------------------------------------138138+Each GPIO controller node should have the empty property gpio-controller and139139+#gpio-cells set to 2. First cell is the GPIO number which is interpreted140140+according to the bit numbers in the GPIO control registers. The second cell141141+is for flags which is currently unused.142142+143143+fsl,mpc5200-fec nodes144144+---------------------145145+The FEC node can specify one of the following properties to configure146146+the MII link:147147+- fsl,7-wire-mode - An empty property that specifies the link uses 7-wire148148+ mode instead of MII149149+- current-speed - Specifies that the MII should be configured for a fixed150150+ speed. This property should contain two cells. The151151+ first cell specifies the speed in Mbps and the second152152+ should be '0' for half duplex and '1' for full duplex153153+- phy-handle - Contains a phandle to an Ethernet PHY.154154+155155+Interrupt controller (fsl,mpc5200-pic) node156156+-------------------------------------------157157+The mpc5200 pic binding splits hardware IRQ numbers into two levels. The158158+split reflects the layout of the PIC hardware itself, which groups159159+interrupts into one of three groups; CRIT, MAIN or PERP. Also, the160160+Bestcomm dma engine has it's own set of interrupt sources which are161161+cascaded off of peripheral interrupt 0, which the driver interprets as a162162+fourth group, SDMA.163163+164164+The interrupts property for device nodes using the mpc5200 pic consists165165+of three cells; <L1 L2 level>166166+167167+ L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]168168+ L2 := interrupt number; directly mapped from the value in the169169+ "ICTL PerStat, MainStat, CritStat Encoded Register"170170+ level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]171171+172172+For external IRQs, use the following interrupt property values (how to173173+specify external interrupts is a frequently asked question):174174+External interrupts:175175+ external irq0: interrupts = <0 0 n>;176176+ external irq1: interrupts = <1 1 n>;177177+ external irq2: interrupts = <1 2 n>;178178+ external irq3: interrupts = <1 3 n>;179179+'n' is sense (0: level high, 1: edge rising, 2: edge falling 3: level low)180180+
···11-MPC5200 Device Tree Bindings22-----------------------------33-44-(c) 2006-2007 Secret Lab Technologies Ltd55-Grant Likely <grant.likely at secretlab.ca>66-77-********** DRAFT ***********88-* WARNING: Do not depend on the stability of these bindings just yet.99-* The MPC5200 device tree conventions are still in flux1010-* Keep an eye on the linuxppc-dev mailing list for more details1111-********** DRAFT ***********1212-1313-I - Introduction1414-================1515-Boards supported by the arch/powerpc architecture require device tree be1616-passed by the boot loader to the kernel at boot time. The device tree1717-describes what devices are present on the board and how they are1818-connected. The device tree can either be passed as a binary blob (as1919-described in Documentation/powerpc/booting-without-of.txt), or passed2020-by Open Firmware (IEEE 1275) compatible firmware using an OF compatible2121-client interface API.2222-2323-This document specifies the requirements on the device-tree for mpc52002424-based boards. These requirements are above and beyond the details2525-specified in either the Open Firmware spec or booting-without-of.txt2626-2727-All new mpc5200-based boards are expected to match this document. In2828-cases where this document is not sufficient to support a new board port,2929-this document should be updated as part of adding the new board support.3030-3131-II - Philosophy3232-===============3333-The core of this document is naming convention. The whole point of3434-defining this convention is to reduce or eliminate the number of3535-special cases required to support a 5200 board. If all 5200 boards3636-follow the same convention, then generic 5200 support code will work3737-rather than coding special cases for each new board.3838-3939-This section tries to capture the thought process behind why the naming4040-convention is what it is.4141-4242-1. names4343----------4444-There is strong convention/requirements already established for children4545-of the root node. 'cpus' describes the processor cores, 'memory'4646-describes memory, and 'chosen' provides boot configuration. Other nodes4747-are added to describe devices attached to the processor local bus.4848-4949-Following convention already established with other system-on-chip5050-processors, 5200 device trees should use the name 'soc5200' for the5151-parent node of on chip devices, and the root node should be its parent.5252-5353-Child nodes are typically named after the configured function. ie.5454-the FEC node is named 'ethernet', and a PSC in uart mode is named 'serial'.5555-5656-2. device_type property5757------------------------5858-similar to the node name convention above; the device_type reflects the5959-configured function of a device. ie. 'serial' for a uart and 'spi' for6060-an spi controller. However, while node names *should* reflect the6161-configured function, device_type *must* match the configured function6262-exactly.6363-6464-3. compatible property6565-----------------------6666-Since device_type isn't enough to match devices to drivers, there also6767-needs to be a naming convention for the compatible property. Compatible6868-is an list of device descriptions sorted from specific to generic. For6969-the mpc5200, the required format for each compatible value is7070-<chip>-<device>[-<mode>]. The OS should be able to match a device driver7171-to the device based solely on the compatible value. If two drivers7272-match on the compatible list; the 'most compatible' driver should be7373-selected.7474-7575-The split between the MPC5200 and the MPC5200B leaves a bit of a7676-conundrum. How should the compatible property be set up to provide7777-maximum compatibility information; but still accurately describe the7878-chip? For the MPC5200; the answer is easy. Most of the SoC devices7979-originally appeared on the MPC5200. Since they didn't exist anywhere8080-else; the 5200 compatible properties will contain only one item;8181-"mpc5200-<device>".8282-8383-The 5200B is almost the same as the 5200, but not quite. It fixes8484-silicon bugs and it adds a small number of enhancements. Most of the8585-devices either provide exactly the same interface as on the 5200. A few8686-devices have extra functions but still have a backwards compatible mode.8787-To express this information as completely as possible, 5200B device trees8888-should have two items in the compatible list;8989-"mpc5200b-<device>\0mpc5200-<device>". It is *strongly* recommended9090-that 5200B device trees follow this convention (instead of only listing9191-the base mpc5200 item).9292-9393-If another chip appear on the market with one of the mpc5200 SoC9494-devices, then the compatible list should include mpc5200-<device>.9595-9696-ie. ethernet on mpc5200: compatible = "mpc5200-ethernet"9797- ethernet on mpc5200b: compatible = "mpc5200b-ethernet\0mpc5200-ethernet"9898-9999-Modal devices, like PSCs, also append the configured function to the100100-end of the compatible field. ie. A PSC in i2s mode would specify101101-"mpc5200-psc-i2s", not "mpc5200-i2s". This convention is chosen to102102-avoid naming conflicts with non-psc devices providing the same103103-function. For example, "mpc5200-spi" and "mpc5200-psc-spi" describe104104-the mpc5200 simple spi device and a PSC spi mode respectively.105105-106106-If the soc device is more generic and present on other SOCs, the107107-compatible property can specify the more generic device type also.108108-109109-ie. mscan: compatible = "mpc5200-mscan\0fsl,mscan";110110-111111-At the time of writing, exact chip may be either 'mpc5200' or112112-'mpc5200b'.113113-114114-Device drivers should always try to match as generically as possible.115115-116116-III - Structure117117-===============118118-The device tree for an mpc5200 board follows the structure defined in119119-booting-without-of.txt with the following additional notes:120120-121121-0) the root node122122-----------------123123-Typical root description node; see booting-without-of124124-125125-1) The cpus node126126-----------------127127-The cpus node follows the basic layout described in booting-without-of.128128-The bus-frequency property holds the XLB bus frequency129129-The clock-frequency property holds the core frequency130130-131131-2) The memory node132132-------------------133133-Typical memory description node; see booting-without-of.134134-135135-3) The soc5200 node136136--------------------137137-This node describes the on chip SOC peripherals. Every mpc5200 based138138-board will have this node, and as such there is a common naming139139-convention for SOC devices.140140-141141-Required properties:142142-name type description143143----- ---- -----------144144-device_type string must be "soc"145145-ranges int should be <0 baseaddr baseaddr+10000>146146-reg int must be <baseaddr 10000>147147-compatible string mpc5200: "mpc5200-soc"148148- mpc5200b: "mpc5200b-soc\0mpc5200-soc"149149-system-frequency int Fsystem frequency; source of all150150- other clocks.151151-bus-frequency int IPB bus frequency in HZ. Clock rate152152- used by most of the soc devices.153153-#interrupt-cells int must be <3>.154154-155155-Recommended properties:156156-name type description157157----- ---- -----------158158-model string Exact model of the chip;159159- ie: model="fsl,mpc5200"160160-revision string Silicon revision of chip161161- ie: revision="M08A"162162-163163-The 'model' and 'revision' properties are *strongly* recommended. Having164164-them presence acts as a bit of a safety net for working around as yet165165-undiscovered bugs on one version of silicon. For example, device drivers166166-can use the model and revision properties to decide if a bug fix should167167-be turned on.168168-169169-4) soc5200 child nodes170170-----------------------171171-Any on chip SOC devices available to Linux must appear as soc5200 child nodes.172172-173173-Note: The tables below show the value for the mpc5200. A mpc5200b device174174-tree should use the "mpc5200b-<device>\0mpc5200-<device> form.175175-176176-Required soc5200 child nodes:177177-name device_type compatible Description178178----- ----------- ---------- -----------179179-cdm@<addr> cdm mpc5200-cmd Clock Distribution180180-pic@<addr> interrupt-controller mpc5200-pic need an interrupt181181- controller to boot182182-bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires183183- the bestcomm device184184-185185-Recommended soc5200 child nodes; populate as needed for your board186186-name device_type compatible Description187187----- ----------- ---------- -----------188188-gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers189189-gpt@<addr> gpt fsl,mpc5200-gpt-gpio General purpose190190- timers in GPIO mode191191-gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio192192- controller193193-gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio194194- controller195195-rtc@<addr> rtc mpc5200-rtc Real time clock196196-mscan@<addr> mscan mpc5200-mscan CAN bus controller197197-pci@<addr> pci mpc5200-pci PCI bridge198198-serial@<addr> serial mpc5200-psc-uart PSC in serial mode199199-i2s@<addr> sound mpc5200-psc-i2s PSC in i2s mode200200-ac97@<addr> sound mpc5200-psc-ac97 PSC in ac97 mode201201-spi@<addr> spi mpc5200-psc-spi PSC in spi mode202202-irda@<addr> irda mpc5200-psc-irda PSC in IrDA mode203203-spi@<addr> spi mpc5200-spi MPC5200 spi device204204-ethernet@<addr> network mpc5200-fec MPC5200 ethernet device205205-ata@<addr> ata mpc5200-ata IDE ATA interface206206-i2c@<addr> i2c mpc5200-i2c I2C controller207207-usb@<addr> usb-ohci-be mpc5200-ohci,ohci-be USB controller208208-xlb@<addr> xlb mpc5200-xlb XLB arbitrator209209-210210-Important child node properties211211-name type description212212----- ---- -----------213213-cell-index int When multiple devices are present, is the214214- index of the device in the hardware (ie. There215215- are 6 PSC on the 5200 numbered PSC1 to PSC6)216216- PSC1 has 'cell-index = <0>'217217- PSC4 has 'cell-index = <3>'218218-219219-5) General Purpose Timer nodes (child of soc5200 node)220220-On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board221221-design supports the internal wdt, then the device node for GPT0 should222222-include the empty property 'fsl,has-wdt'.223223-224224-6) PSC nodes (child of soc5200 node)225225-PSC nodes can define the optional 'port-number' property to force assignment226226-order of serial ports. For example, PSC5 might be physically connected to227227-the port labeled 'COM1' and PSC1 wired to 'COM1'. In this case, PSC5 would228228-have a "port-number = <0>" property, and PSC1 would have "port-number = <1>".229229-230230-PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in231231-i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the232232-compatible field.233233-234234-7) GPIO controller nodes235235-Each GPIO controller node should have the empty property gpio-controller and236236-#gpio-cells set to 2. First cell is the GPIO number which is interpreted237237-according to the bit numbers in the GPIO control registers. The second cell238238-is for flags which is currently unsused.239239-240240-8) FEC nodes241241-The FEC node can specify one of the following properties to configure242242-the MII link:243243-"fsl,7-wire-mode" - An empty property that specifies the link uses 7-wire244244- mode instead of MII245245-"current-speed" - Specifies that the MII should be configured for a fixed246246- speed. This property should contain two cells. The247247- first cell specifies the speed in Mbps and the second248248- should be '0' for half duplex and '1' for full duplex249249-"phy-handle" - Contains a phandle to an Ethernet PHY.250250-251251-IV - Extra Notes252252-================253253-254254-1. Interrupt mapping255255---------------------256256-The mpc5200 pic driver splits hardware IRQ numbers into two levels. The257257-split reflects the layout of the PIC hardware itself, which groups258258-interrupts into one of three groups; CRIT, MAIN or PERP. Also, the259259-Bestcomm dma engine has it's own set of interrupt sources which are260260-cascaded off of peripheral interrupt 0, which the driver interprets as a261261-fourth group, SDMA.262262-263263-The interrupts property for device nodes using the mpc5200 pic consists264264-of three cells; <L1 L2 level>265265-266266- L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]267267- L2 := interrupt number; directly mapped from the value in the268268- "ICTL PerStat, MainStat, CritStat Encoded Register"269269- level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]270270-271271-2. Shared registers272272--------------------273273-Some SoC devices share registers between them. ie. the i2c devices use274274-a single clock control register, and almost all device are affected by275275-the port_config register. Devices which need to manipulate shared regs276276-should look to the parent SoC node. The soc node is responsible277277-for arbitrating all shared register access.
+17-8
Documentation/video4linux/v4lgrab.c
···44 *55 * Compile with:66 * gcc -s -Wall -Wstrict-prototypes v4lgrab.c -o v4lgrab77- * Use as:88- * v4lgrab >image.ppm77+ * Use as:88+ * v4lgrab >image.ppm99 *1010 * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org>1111- * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c1212- * with minor modifications (Dave Forrest, drf5n@virginia.edu).1111+ * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c1212+ * with minor modifications (Dave Forrest, drf5n@virginia.edu).1313+ *1414+ *1515+ * For some cameras you may need to pre-load libv4l to perform1616+ * the necessary decompression, e.g.:1717+ *1818+ * export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so1919+ * ./v4lgrab >image.ppm2020+ *2121+ * see http://hansdegoede.livejournal.com/3636.html for details.1322 *1423 */1524···3324#include <linux/types.h>3425#include <linux/videodev.h>35263636-#define FILE "/dev/video0"2727+#define VIDEO_DEV "/dev/video0"37283829/* Stole this from tvset.c */3930···999010091int main(int argc, char ** argv)10192{102102- int fd = open(FILE, O_RDONLY), f;9393+ int fd = open(VIDEO_DEV, O_RDONLY), f;10394 struct video_capability cap;10495 struct video_window win;10596 struct video_picture vpic;···109100 unsigned int i, src_depth;110101111102 if (fd < 0) {112112- perror(FILE);103103+ perror(VIDEO_DEV);113104 exit(1);114105 }115106116107 if (ioctl(fd, VIDIOCGCAP, &cap) < 0) {117108 perror("VIDIOGCAP");118118- fprintf(stderr, "(" FILE " not a video4linux device?)\n");109109+ fprintf(stderr, "(" VIDEO_DEV " not a video4linux device?)\n");119110 close(fd);120111 exit(1);121112 }
-2
MAINTAINERS
···28362836MAC8021128372837P: Johannes Berg28382838M: johannes@sipsolutions.net28392839-P: Michael Wu28402840-M: flamingice@sourmilk.net28412839L: linux-wireless@vger.kernel.org28422840W: http://linuxwireless.org/28432841T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
+36
arch/arm/plat-mxc/include/mach/mmc.h
···11+#ifndef ASMARM_ARCH_MMC_H22+#define ASMARM_ARCH_MMC_H33+44+#include <linux/mmc/host.h>55+66+struct device;77+88+/* board specific SDHC data, optional.99+ * If not present, a writable card with 3,3V is assumed.1010+ */1111+struct imxmmc_platform_data {1212+ /* Return values for the get_ro callback should be:1313+ * 0 for a read/write card1414+ * 1 for a read-only card1515+ * -ENOSYS when not supported (equal to NULL callback)1616+ * or a negative errno value when something bad happened1717+ */1818+ int (*get_ro)(struct device *);1919+2020+ /* board specific hook to (de)initialize the SD slot.2121+ * The board code can call 'handler' on a card detection2222+ * change giving data as argument.2323+ */2424+ int (*init)(struct device *dev, irq_handler_t handler, void *data);2525+ void (*exit)(struct device *dev, void *data);2626+2727+ /* available voltages. If not given, assume2828+ * MMC_VDD_32_33 | MMC_VDD_33_342929+ */3030+ unsigned int ocr_avail;3131+3232+ /* adjust slot voltage */3333+ void (*setpower)(struct device *, unsigned int vdd);3434+};3535+3636+#endif
···5353CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y5454CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y5555CONFIG_ARC=y5656-CONFIG_DMA_IP27=y5656+CONFIG_DMA_COHERENT=y5757CONFIG_EARLY_PRINTK=y5858CONFIG_SYS_HAS_EARLY_PRINTK=y5959# CONFIG_NO_IOPORT is not set
+26-26
arch/mips/include/asm/atomic.h
···5050static __inline__ void atomic_add(int i, atomic_t * v)5151{5252 if (cpu_has_llsc && R10000_LLSC_WAR) {5353- unsigned long temp;5353+ int temp;54545555 __asm__ __volatile__(5656 " .set mips3 \n"···6262 : "=&r" (temp), "=m" (v->counter)6363 : "Ir" (i), "m" (v->counter));6464 } else if (cpu_has_llsc) {6565- unsigned long temp;6565+ int temp;66666767 __asm__ __volatile__(6868 " .set mips3 \n"···9595static __inline__ void atomic_sub(int i, atomic_t * v)9696{9797 if (cpu_has_llsc && R10000_LLSC_WAR) {9898- unsigned long temp;9898+ int temp;9999100100 __asm__ __volatile__(101101 " .set mips3 \n"···107107 : "=&r" (temp), "=m" (v->counter)108108 : "Ir" (i), "m" (v->counter));109109 } else if (cpu_has_llsc) {110110- unsigned long temp;110110+ int temp;111111112112 __asm__ __volatile__(113113 " .set mips3 \n"···135135 */136136static __inline__ int atomic_add_return(int i, atomic_t * v)137137{138138- unsigned long result;138138+ int result;139139140140 smp_llsc_mb();141141142142 if (cpu_has_llsc && R10000_LLSC_WAR) {143143- unsigned long temp;143143+ int temp;144144145145 __asm__ __volatile__(146146 " .set mips3 \n"···154154 : "Ir" (i), "m" (v->counter)155155 : "memory");156156 } else if (cpu_has_llsc) {157157- unsigned long temp;157157+ int temp;158158159159 __asm__ __volatile__(160160 " .set mips3 \n"···187187188188static __inline__ int atomic_sub_return(int i, atomic_t * v)189189{190190- unsigned long result;190190+ int result;191191192192 smp_llsc_mb();193193194194 if (cpu_has_llsc && R10000_LLSC_WAR) {195195- unsigned long temp;195195+ int temp;196196197197 __asm__ __volatile__(198198 " .set mips3 \n"···206206 : "Ir" (i), "m" (v->counter)207207 : "memory");208208 } else if (cpu_has_llsc) {209209- unsigned long temp;209209+ int temp;210210211211 __asm__ __volatile__(212212 " .set mips3 \n"···247247 */248248static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)249249{250250- unsigned long result;250250+ int result;251251252252 smp_llsc_mb();253253254254 if (cpu_has_llsc && R10000_LLSC_WAR) {255255- unsigned long temp;255255+ int temp;256256257257 __asm__ __volatile__(258258 " .set mips3 \n"···270270 : "Ir" (i), "m" (v->counter)271271 : "memory");272272 } else if (cpu_has_llsc) {273273- unsigned long temp;273273+ int temp;274274275275 __asm__ __volatile__(276276 " .set mips3 \n"···429429static __inline__ void atomic64_add(long i, atomic64_t * v)430430{431431 if (cpu_has_llsc && R10000_LLSC_WAR) {432432- unsigned long temp;432432+ long temp;433433434434 __asm__ __volatile__(435435 " .set mips3 \n"···441441 : "=&r" (temp), "=m" (v->counter)442442 : "Ir" (i), "m" (v->counter));443443 } else if (cpu_has_llsc) {444444- unsigned long temp;444444+ long temp;445445446446 __asm__ __volatile__(447447 " .set mips3 \n"···474474static __inline__ void atomic64_sub(long i, atomic64_t * v)475475{476476 if (cpu_has_llsc && R10000_LLSC_WAR) {477477- unsigned long temp;477477+ long temp;478478479479 __asm__ __volatile__(480480 " .set mips3 \n"···486486 : "=&r" (temp), "=m" (v->counter)487487 : "Ir" (i), "m" (v->counter));488488 } else if (cpu_has_llsc) {489489- unsigned long temp;489489+ long temp;490490491491 __asm__ __volatile__(492492 " .set mips3 \n"···514514 */515515static __inline__ long atomic64_add_return(long i, atomic64_t * v)516516{517517- unsigned long result;517517+ long result;518518519519 smp_llsc_mb();520520521521 if (cpu_has_llsc && R10000_LLSC_WAR) {522522- unsigned long temp;522522+ long temp;523523524524 __asm__ __volatile__(525525 " .set mips3 \n"···533533 : "Ir" (i), "m" (v->counter)534534 : "memory");535535 } else if (cpu_has_llsc) {536536- unsigned long temp;536536+ long temp;537537538538 __asm__ __volatile__(539539 " .set mips3 \n"···566566567567static __inline__ long atomic64_sub_return(long i, atomic64_t * v)568568{569569- unsigned long result;569569+ long result;570570571571 smp_llsc_mb();572572573573 if (cpu_has_llsc && R10000_LLSC_WAR) {574574- unsigned long temp;574574+ long temp;575575576576 __asm__ __volatile__(577577 " .set mips3 \n"···585585 : "Ir" (i), "m" (v->counter)586586 : "memory");587587 } else if (cpu_has_llsc) {588588- unsigned long temp;588588+ long temp;589589590590 __asm__ __volatile__(591591 " .set mips3 \n"···626626 */627627static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)628628{629629- unsigned long result;629629+ long result;630630631631 smp_llsc_mb();632632633633 if (cpu_has_llsc && R10000_LLSC_WAR) {634634- unsigned long temp;634634+ long temp;635635636636 __asm__ __volatile__(637637 " .set mips3 \n"···649649 : "Ir" (i), "m" (v->counter)650650 : "memory");651651 } else if (cpu_has_llsc) {652652- unsigned long temp;652652+ long temp;653653654654 __asm__ __volatile__(655655 " .set mips3 \n"
···944944 force_sig(SIGILL, current);945945}946946947947+/*948948+ * Called with interrupts disabled.949949+ */947950asmlinkage void do_watch(struct pt_regs *regs)948951{949952 u32 cause;···966963 */967964 if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) {968965 mips_read_watch_registers();966966+ local_irq_enable();969967 force_sig(SIGTRAP, current);970970- } else968968+ } else {971969 mips_clear_watch_registers();970970+ local_irq_enable();971971+ }972972}973973974974asmlinkage void do_mcheck(struct pt_regs *regs)···15881582static char panic_null_cerr[] __cpuinitdata =15891583 "Trying to set NULL cache error exception handler";1590158415911591-/* Install uncached CPU exception handler */15851585+/*15861586+ * Install uncached CPU exception handler.15871587+ * This is suitable only for the cache error exception which is the only15881588+ * exception handler that is being run uncached.15891589+ */15921590void __cpuinit set_uncached_handler(unsigned long offset, void *addr,15931591 unsigned long size)15941592{···16031593 unsigned long uncached_ebase = TO_UNCAC(ebase);16041594#endif16051595 if (cpu_has_mips_r2)16061606- ebase += (read_c0_ebase() & 0x3ffff000);15961596+ uncached_ebase += (read_c0_ebase() & 0x3ffff000);1607159716081598 if (!addr)16091599 panic(panic_null_cerr);
+1-1
arch/mips/lib/memcpy-inatomic.S
···2121 * end of memory on some systems. It's also a seriously bad idea on non2222 * dma-coherent systems.2323 */2424-#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)2424+#ifdef CONFIG_DMA_NONCOHERENT2525#undef CONFIG_CPU_HAS_PREFETCH2626#endif2727#ifdef CONFIG_MIPS_MALTA
+1-1
arch/mips/lib/memcpy.S
···2121 * end of memory on some systems. It's also a seriously bad idea on non2222 * dma-coherent systems.2323 */2424-#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)2424+#ifdef CONFIG_DMA_NONCOHERENT2525#undef CONFIG_CPU_HAS_PREFETCH2626#endif2727#ifdef CONFIG_MIPS_MALTA
+21-1
arch/mips/mm/c-r4k.c
···618618 if (cpu_has_inclusive_pcaches) {619619 if (size >= scache_size)620620 r4k_blast_scache();621621- else621621+ else {622622+ unsigned long lsize = cpu_scache_line_size();623623+ unsigned long almask = ~(lsize - 1);624624+625625+ /*626626+ * There is no clearly documented alignment requirement627627+ * for the cache instruction on MIPS processors and628628+ * some processors, among them the RM5200 and RM7000629629+ * QED processors will throw an address error for cache630630+ * hit ops with insufficient alignment. Solved by631631+ * aligning the address to cache line size.632632+ */633633+ cache_op(Hit_Writeback_Inv_SD, addr & almask);634634+ cache_op(Hit_Writeback_Inv_SD,635635+ (addr + size - 1) & almask);622636 blast_inv_scache_range(addr, addr + size);637637+ }623638 return;624639 }625640626641 if (cpu_has_safe_index_cacheops && size >= dcache_size) {627642 r4k_blast_dcache();628643 } else {644644+ unsigned long lsize = cpu_dcache_line_size();645645+ unsigned long almask = ~(lsize - 1);646646+629647 R4600_HIT_CACHEOP_WAR_IMPL;648648+ cache_op(Hit_Writeback_Inv_D, addr & almask);649649+ cache_op(Hit_Writeback_Inv_D, (addr + size - 1) & almask);630650 blast_inv_dcache_range(addr, addr + size);631651 }632652
+6-15
arch/mips/mm/fault.c
···9797 goto bad_area;9898 }9999100100-survive:101100 /*102101 * If for any reason at all we couldn't handle the fault,103102 * make sure we exit gracefully rather than endlessly redo···166167 field, regs->regs[31]);167168 die("Oops", regs);168169169169-/*170170- * We ran out of memory, or some other thing happened to us that made171171- * us unable to handle the page fault gracefully.172172- */173170out_of_memory:174174- up_read(&mm->mmap_sem);175175- if (is_global_init(tsk)) {176176- yield();177177- down_read(&mm->mmap_sem);178178- goto survive;179179- }180180- printk("VM: killing process %s\n", tsk->comm);181181- if (user_mode(regs))182182- do_group_exit(SIGKILL);183183- goto no_context;171171+ /*172172+ * We ran out of memory, call the OOM killer, and return the userspace173173+ * (which will retry the fault, or kill us if we got oom-killed).174174+ */175175+ pagefault_out_of_memory();176176+ return;184177185178do_sigbus:186179 up_read(&mm->mmap_sem);
···11#22# Automatically generated make config: don't edit33-# Linux kernel version: 2.6.28-rc444-# Thu Nov 13 02:12:40 200833+# Linux kernel version: 2.6.29-rc244+# Mon Jan 26 21:41:58 200955#66# CONFIG_PPC64 is not set77···4343CONFIG_PPC=y4444CONFIG_EARLY_PRINTK=y4545CONFIG_GENERIC_NVRAM=y4646-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y4646+CONFIG_SCHED_OMIT_FRAME_POINTER=y4747CONFIG_ARCH_MAY_HAVE_PC_FDC=y4848CONFIG_PPC_OF=y4949CONFIG_OF=y···7171# CONFIG_BSD_PROCESS_ACCT is not set7272# CONFIG_TASKSTATS is not set7373# CONFIG_AUDIT is not set7474+7575+#7676+# RCU Subsystem7777+#7878+CONFIG_CLASSIC_RCU=y7979+# CONFIG_TREE_RCU is not set8080+# CONFIG_PREEMPT_RCU is not set8181+# CONFIG_TREE_RCU_TRACE is not set8282+# CONFIG_PREEMPT_RCU_TRACE is not set7483# CONFIG_IKCONFIG is not set7584CONFIG_LOG_BUF_SHIFT=147676-# CONFIG_CGROUPS is not set7785CONFIG_GROUP_SCHED=y7886CONFIG_FAIR_GROUP_SCHED=y7987# CONFIG_RT_GROUP_SCHED is not set8088CONFIG_USER_SCHED=y8189# CONFIG_CGROUP_SCHED is not set9090+# CONFIG_CGROUPS is not set8291CONFIG_SYSFS_DEPRECATED=y8392CONFIG_SYSFS_DEPRECATED_V2=y8493# CONFIG_RELAY is not set···119110CONFIG_SLUB=y120111# CONFIG_SLOB is not set121112# CONFIG_PROFILING is not set122122-# CONFIG_MARKERS is not set123113CONFIG_HAVE_OPROFILE=y124114CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y125115CONFIG_HAVE_IOREMAP_PROT=y···129121# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set130122CONFIG_SLABINFO=y131123CONFIG_RT_MUTEXES=y132132-# CONFIG_TINY_SHMEM is not set133124CONFIG_BASE_SMALL=0134125# CONFIG_MODULES is not set135126CONFIG_BLOCK=y136127# CONFIG_LBD is not set137128# CONFIG_BLK_DEV_IO_TRACE is not set138138-# CONFIG_LSF is not set139129# CONFIG_BLK_DEV_BSG is not set140130# CONFIG_BLK_DEV_INTEGRITY is not set141131···149143# CONFIG_DEFAULT_CFQ is not set150144# CONFIG_DEFAULT_NOOP is not set151145CONFIG_DEFAULT_IOSCHED="anticipatory"152152-CONFIG_CLASSIC_RCU=y153146# CONFIG_FREEZER is not set154147155148#···187182# CONFIG_TAU is not set188183# CONFIG_FSL_ULI1575 is not set189184CONFIG_PPC_BESTCOMM=y190190-# CONFIG_PPC_BESTCOMM_ATA is not set191185CONFIG_PPC_BESTCOMM_FEC=y192192-# CONFIG_PPC_BESTCOMM_GEN_BD is not set186186+# CONFIG_SIMPLE_GPIO is not set193187194188#195189# Kernel options···215211CONFIG_ARCH_HAS_WALK_MEMORY=y216212CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y217213# CONFIG_KEXEC is not set214214+# CONFIG_CRASH_DUMP is not set218215CONFIG_ARCH_FLATMEM_ENABLE=y219216CONFIG_ARCH_POPULATES_NODE_MAP=y220217CONFIG_SELECT_MEMORY_MODEL=y···227222CONFIG_PAGEFLAGS_EXTENDED=y228223CONFIG_SPLIT_PTLOCK_CPUS=4229224CONFIG_MIGRATION=y230230-# CONFIG_RESOURCES_64BIT is not set231225# CONFIG_PHYS_ADDR_T_64BIT is not set232226CONFIG_ZONE_DMA_FLAG=1233227CONFIG_BOUNCE=y234228CONFIG_VIRT_TO_BUS=y235229CONFIG_UNEVICTABLE_LRU=y230230+CONFIG_PPC_4K_PAGES=y231231+# CONFIG_PPC_16K_PAGES is not set232232+# CONFIG_PPC_64K_PAGES is not set236233CONFIG_FORCE_MAX_ZONEORDER=11237234CONFIG_PROC_DEVICETREE=y238235# CONFIG_CMDLINE_BOOL is not set···275268#276269# Networking options277270#271271+CONFIG_COMPAT_NET_DEV_OPS=y278272CONFIG_PACKET=y279273# CONFIG_PACKET_MMAP is not set280274CONFIG_UNIX=y···332324# CONFIG_ECONET is not set333325# CONFIG_WAN_ROUTER is not set334326# CONFIG_NET_SCHED is not set327327+# CONFIG_DCB is not set335328336329#337330# Network testing···345336# CONFIG_AF_RXRPC is not set346337# CONFIG_PHONET is not set347338# CONFIG_WIRELESS is not set339339+# CONFIG_WIMAX is not set348340# CONFIG_RFKILL is not set349341# CONFIG_NET_9P is not set350342···437427# CONFIG_MTD_ONENAND is not set438428439429#430430+# LPDDR flash memory drivers431431+#432432+# CONFIG_MTD_LPDDR is not set433433+# CONFIG_MTD_QINFO_PROBE is not set434434+435435+#440436# UBI - Unsorted block images441437#442438# CONFIG_MTD_UBI is not set···530514# CONFIG_BROADCOM_PHY is not set531515# CONFIG_ICPLUS_PHY is not set532516# CONFIG_REALTEK_PHY is not set517517+# CONFIG_NATIONAL_PHY is not set518518+# CONFIG_STE10XP is not set519519+# CONFIG_LSI_ET1011C_PHY is not set533520# CONFIG_FIXED_PHY is not set534521# CONFIG_MDIO_BITBANG is not set535522CONFIG_NET_ETHERNET=y···556537# CONFIG_WLAN_PRE80211 is not set557538# CONFIG_WLAN_80211 is not set558539# CONFIG_IWLWIFI_LEDS is not set540540+541541+#542542+# Enable WiMAX (Networking options) to see the WiMAX drivers543543+#559544560545#561546# USB Network Adapters···611588CONFIG_SERIAL_MPC52xx_CONSOLE=y612589CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600613590CONFIG_UNIX98_PTYS=y591591+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set614592CONFIG_LEGACY_PTYS=y615593CONFIG_LEGACY_PTY_COUNT=256594594+# CONFIG_HVC_UDBG is not set616595# CONFIG_IPMI_HANDLER is not set617596# CONFIG_HW_RANDOM is not set618597# CONFIG_NVRAM is not set···654629# Miscellaneous I2C Chip support655630#656631# CONFIG_DS1682 is not set657657-# CONFIG_EEPROM_AT24 is not set658658-# CONFIG_EEPROM_LEGACY is not set659632# CONFIG_SENSORS_PCF8574 is not set660633# CONFIG_PCF8575 is not set661634# CONFIG_SENSORS_PCA9539 is not set···698675# CONFIG_MFD_CORE is not set699676# CONFIG_MFD_SM501 is not set700677# CONFIG_HTC_PASIC3 is not set678678+# CONFIG_TWL4030_CORE is not set701679# CONFIG_MFD_TMIO is not set702680# CONFIG_PMIC_DA903X is not set703681# CONFIG_MFD_WM8400 is not set704682# CONFIG_MFD_WM8350_I2C is not set683683+# CONFIG_MFD_PCF50633 is not set705684# CONFIG_REGULATOR is not set706685707686#···761736# USB Host Controller Drivers762737#763738# CONFIG_USB_C67X00_HCD is not set739739+# CONFIG_USB_OXU210HP_HCD is not set764740# CONFIG_USB_ISP116X_HCD is not set765741# CONFIG_USB_ISP1760_HCD is not set766742CONFIG_USB_OHCI_HCD=y···786760# CONFIG_USB_TMC is not set787761788762#789789-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'763763+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;790764#791765792766#793793-# may also be needed; see USB_STORAGE Help for more information767767+# see USB_STORAGE Help for more information794768#795769CONFIG_USB_STORAGE=y796770# CONFIG_USB_STORAGE_DEBUG is not set797771# CONFIG_USB_STORAGE_DATAFAB is not set798772# CONFIG_USB_STORAGE_FREECOM is not set799773# CONFIG_USB_STORAGE_ISD200 is not set800800-# CONFIG_USB_STORAGE_DPCM is not set801774# CONFIG_USB_STORAGE_USBAT is not set802775# CONFIG_USB_STORAGE_SDDR09 is not set803776# CONFIG_USB_STORAGE_SDDR55 is not set···842817# CONFIG_USB_ISIGHTFW is not set843818# CONFIG_USB_VST is not set844819# CONFIG_USB_GADGET is not set820820+821821+#822822+# OTG and related infrastructure823823+#845824# CONFIG_MMC is not set846825# CONFIG_MEMSTICK is not set847826# CONFIG_NEW_LEDS is not set···855826# CONFIG_DMADEVICES is not set856827# CONFIG_UIO is not set857828# CONFIG_STAGING is not set858858-CONFIG_STAGING_EXCLUDE_BUILD=y859829860830#861831# File systems···875847CONFIG_FILE_LOCKING=y876848# CONFIG_XFS_FS is not set877849# CONFIG_OCFS2_FS is not set850850+# CONFIG_BTRFS_FS is not set878851CONFIG_DNOTIFY=y879852CONFIG_INOTIFY=y880853CONFIG_INOTIFY_USER=y···912883# CONFIG_TMPFS_POSIX_ACL is not set913884# CONFIG_HUGETLB_PAGE is not set914885# CONFIG_CONFIGFS_FS is not set915915-916916-#917917-# Miscellaneous filesystems918918-#886886+CONFIG_MISC_FILESYSTEMS=y919887# CONFIG_ADFS_FS is not set920888# CONFIG_AFFS_FS is not set921889# CONFIG_HFS_FS is not set···932906CONFIG_JFFS2_RTIME=y933907# CONFIG_JFFS2_RUBIN is not set934908CONFIG_CRAMFS=y909909+# CONFIG_SQUASHFS is not set935910# CONFIG_VXFS_FS is not set936911# CONFIG_MINIX_FS is not set937912# CONFIG_OMFS_FS is not set···10291002# Library routines10301003#10311004CONFIG_BITREVERSE=y10051005+CONFIG_GENERIC_FIND_LAST_BIT=y10321006# CONFIG_CRC_CCITT is not set10331007# CONFIG_CRC16 is not set10341008# CONFIG_CRC_T10DIF is not set···10811053# CONFIG_DEBUG_MEMORY_INIT is not set10821054# CONFIG_DEBUG_LIST is not set10831055# CONFIG_DEBUG_SG is not set10561056+# CONFIG_DEBUG_NOTIFIERS is not set10841057# CONFIG_BOOT_PRINTK_DELAY is not set10851058# CONFIG_RCU_TORTURE_TEST is not set10861059# CONFIG_RCU_CPU_STALL_DETECTOR is not set···10901061# CONFIG_FAULT_INJECTION is not set10911062# CONFIG_LATENCYTOP is not set10921063CONFIG_HAVE_FUNCTION_TRACER=y10641064+CONFIG_HAVE_DYNAMIC_FTRACE=y10651065+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y1093106610941067#10951068# Tracers···11001069# CONFIG_SCHED_TRACER is not set11011070# CONFIG_CONTEXT_SWITCH_TRACER is not set11021071# CONFIG_BOOT_TRACER is not set10721072+# CONFIG_TRACE_BRANCH_PROFILING is not set11031073# CONFIG_STACK_TRACER is not set11041074# CONFIG_DYNAMIC_PRINTK_DEBUG is not set11051075# CONFIG_SAMPLES is not set11061076CONFIG_HAVE_ARCH_KGDB=y11071077# CONFIG_KGDB is not set10781078+CONFIG_PRINT_STACK_DEPTH=6411081079# CONFIG_DEBUG_STACKOVERFLOW is not set11091080# CONFIG_DEBUG_STACK_USAGE is not set11101081# CONFIG_DEBUG_PAGEALLOC is not set···11331100#11341101# CONFIG_CRYPTO_FIPS is not set11351102CONFIG_CRYPTO_ALGAPI=y11361136-CONFIG_CRYPTO_AEAD=y11031103+CONFIG_CRYPTO_ALGAPI2=y11041104+CONFIG_CRYPTO_AEAD2=y11371105CONFIG_CRYPTO_BLKCIPHER=y11061106+CONFIG_CRYPTO_BLKCIPHER2=y11381107CONFIG_CRYPTO_HASH=y11391139-CONFIG_CRYPTO_RNG=y11081108+CONFIG_CRYPTO_HASH2=y11091109+CONFIG_CRYPTO_RNG2=y11401110CONFIG_CRYPTO_MANAGER=y11111111+CONFIG_CRYPTO_MANAGER2=y11411112# CONFIG_CRYPTO_GF128MUL is not set11421113# CONFIG_CRYPTO_NULL is not set11431114# CONFIG_CRYPTO_CRYPTD is not set
+64-22
arch/powerpc/configs/52xx/lite5200b_defconfig
···11#22# Automatically generated make config: don't edit33-# Linux kernel version: 2.6.28-rc444-# Thu Nov 13 02:10:16 200833+# Linux kernel version: 2.6.29-rc244+# Mon Jan 26 21:41:14 200955#66# CONFIG_PPC64 is not set77···4343CONFIG_PPC=y4444CONFIG_EARLY_PRINTK=y4545CONFIG_GENERIC_NVRAM=y4646-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y4646+CONFIG_SCHED_OMIT_FRAME_POINTER=y4747CONFIG_ARCH_MAY_HAVE_PC_FDC=y4848CONFIG_PPC_OF=y4949CONFIG_OF=y···7272# CONFIG_BSD_PROCESS_ACCT is not set7373# CONFIG_TASKSTATS is not set7474# CONFIG_AUDIT is not set7575+7676+#7777+# RCU Subsystem7878+#7979+CONFIG_CLASSIC_RCU=y8080+# CONFIG_TREE_RCU is not set8181+# CONFIG_PREEMPT_RCU is not set8282+# CONFIG_TREE_RCU_TRACE is not set8383+# CONFIG_PREEMPT_RCU_TRACE is not set7584# CONFIG_IKCONFIG is not set7685CONFIG_LOG_BUF_SHIFT=147777-# CONFIG_CGROUPS is not set7886CONFIG_GROUP_SCHED=y7987# CONFIG_FAIR_GROUP_SCHED is not set8088# CONFIG_RT_GROUP_SCHED is not set8189CONFIG_USER_SCHED=y8290# CONFIG_CGROUP_SCHED is not set9191+# CONFIG_CGROUPS is not set8392CONFIG_SYSFS_DEPRECATED=y8493CONFIG_SYSFS_DEPRECATED_V2=y8594# CONFIG_RELAY is not set···121112CONFIG_SLUB=y122113# CONFIG_SLOB is not set123114# CONFIG_PROFILING is not set124124-# CONFIG_MARKERS is not set125115CONFIG_HAVE_OPROFILE=y126116CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y127117CONFIG_HAVE_IOREMAP_PROT=y···131123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set132124CONFIG_SLABINFO=y133125CONFIG_RT_MUTEXES=y134134-# CONFIG_TINY_SHMEM is not set135126CONFIG_BASE_SMALL=0136127CONFIG_MODULES=y137128# CONFIG_MODULE_FORCE_LOAD is not set···138131# CONFIG_MODULE_FORCE_UNLOAD is not set139132# CONFIG_MODVERSIONS is not set140133# CONFIG_MODULE_SRCVERSION_ALL is not set141141-CONFIG_KMOD=y142134CONFIG_BLOCK=y143135# CONFIG_LBD is not set144136# CONFIG_BLK_DEV_IO_TRACE is not set145145-# CONFIG_LSF is not set146137# CONFIG_BLK_DEV_BSG is not set147138# CONFIG_BLK_DEV_INTEGRITY is not set148139···156151# CONFIG_DEFAULT_CFQ is not set157152# CONFIG_DEFAULT_NOOP is not set158153CONFIG_DEFAULT_IOSCHED="anticipatory"159159-CONFIG_CLASSIC_RCU=y160154CONFIG_FREEZER=y161155162156#···196192CONFIG_PPC_BESTCOMM=y197193CONFIG_PPC_BESTCOMM_ATA=y198194CONFIG_PPC_BESTCOMM_FEC=y199199-CONFIG_PPC_BESTCOMM_GEN_BD=y195195+# CONFIG_SIMPLE_GPIO is not set200196201197#202198# Kernel options···224220CONFIG_ARCH_HAS_WALK_MEMORY=y225221CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y226222# CONFIG_KEXEC is not set223223+# CONFIG_CRASH_DUMP is not set227224CONFIG_ARCH_FLATMEM_ENABLE=y228225CONFIG_ARCH_POPULATES_NODE_MAP=y229226CONFIG_SELECT_MEMORY_MODEL=y···236231CONFIG_PAGEFLAGS_EXTENDED=y237232CONFIG_SPLIT_PTLOCK_CPUS=4238233CONFIG_MIGRATION=y239239-# CONFIG_RESOURCES_64BIT is not set240234# CONFIG_PHYS_ADDR_T_64BIT is not set241235CONFIG_ZONE_DMA_FLAG=1242236CONFIG_BOUNCE=y243237CONFIG_VIRT_TO_BUS=y244238CONFIG_UNEVICTABLE_LRU=y239239+CONFIG_PPC_4K_PAGES=y240240+# CONFIG_PPC_16K_PAGES is not set241241+# CONFIG_PPC_64K_PAGES is not set245242CONFIG_FORCE_MAX_ZONEORDER=11246243CONFIG_PROC_DEVICETREE=y247244# CONFIG_CMDLINE_BOOL is not set···271264# CONFIG_PCI_MSI is not set272265CONFIG_PCI_LEGACY=y273266# CONFIG_PCI_DEBUG is not set267267+# CONFIG_PCI_STUB is not set274268# CONFIG_PCCARD is not set275269# CONFIG_HOTPLUG_PCI is not set276270# CONFIG_HAS_RAPIDIO is not set···294286#295287# Networking options296288#289289+CONFIG_COMPAT_NET_DEV_OPS=y297290CONFIG_PACKET=y298291# CONFIG_PACKET_MMAP is not set299292CONFIG_UNIX=y···351342# CONFIG_ECONET is not set352343# CONFIG_WAN_ROUTER is not set353344# CONFIG_NET_SCHED is not set345345+# CONFIG_DCB is not set354346355347#356348# Network testing···364354# CONFIG_AF_RXRPC is not set365355# CONFIG_PHONET is not set366356# CONFIG_WIRELESS is not set357357+# CONFIG_WIMAX is not set367358# CONFIG_RFKILL is not set368359# CONFIG_NET_9P is not set369360···407396# CONFIG_BLK_DEV_HD is not set408397CONFIG_MISC_DEVICES=y409398# CONFIG_PHANTOM is not set410410-# CONFIG_EEPROM_93CX6 is not set411399# CONFIG_SGI_IOC4 is not set412400# CONFIG_TIFM_CORE is not set413401# CONFIG_ICS932S401 is not set414402# CONFIG_ENCLOSURE_SERVICES is not set415403# CONFIG_HP_ILO is not set416404# CONFIG_C2PORT is not set405405+406406+#407407+# EEPROM support408408+#409409+# CONFIG_EEPROM_AT24 is not set410410+# CONFIG_EEPROM_LEGACY is not set411411+# CONFIG_EEPROM_93CX6 is not set417412CONFIG_HAVE_IDE=y418413# CONFIG_IDE is not set419414···462445# CONFIG_SCSI_SRP_ATTRS is not set463446CONFIG_SCSI_LOWLEVEL=y464447# CONFIG_ISCSI_TCP is not set448448+# CONFIG_SCSI_CXGB3_ISCSI is not set465449# CONFIG_BLK_DEV_3W_XXXX_RAID is not set466450# CONFIG_SCSI_3W_9XXX is not set467451# CONFIG_SCSI_ACARD is not set···479461# CONFIG_MEGARAID_SAS is not set480462# CONFIG_SCSI_HPTIOP is not set481463# CONFIG_SCSI_BUSLOGIC is not set464464+# CONFIG_LIBFC is not set465465+# CONFIG_FCOE is not set482466# CONFIG_SCSI_DMX3191D is not set483467# CONFIG_SCSI_EATA is not set484468# CONFIG_SCSI_FUTURE_DOMAIN is not set···600580# CONFIG_BROADCOM_PHY is not set601581# CONFIG_ICPLUS_PHY is not set602582# CONFIG_REALTEK_PHY is not set583583+# CONFIG_NATIONAL_PHY is not set584584+# CONFIG_STE10XP is not set585585+# CONFIG_LSI_ET1011C_PHY is not set603586# CONFIG_FIXED_PHY is not set604587# CONFIG_MDIO_BITBANG is not set605588CONFIG_NET_ETHERNET=y···649626# CONFIG_JME is not set650627CONFIG_NETDEV_10000=y651628# CONFIG_CHELSIO_T1 is not set629629+CONFIG_CHELSIO_T3_DEPENDS=y652630# CONFIG_CHELSIO_T3 is not set653631# CONFIG_ENIC is not set654632# CONFIG_IXGBE is not set···672648# CONFIG_WLAN_PRE80211 is not set673649# CONFIG_WLAN_80211 is not set674650# CONFIG_IWLWIFI_LEDS is not set651651+652652+#653653+# Enable WiMAX (Networking options) to see the WiMAX drivers654654+#675655# CONFIG_WAN is not set676656# CONFIG_FDDI is not set677657# CONFIG_HIPPI is not set···723695CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200724696# CONFIG_SERIAL_JSM is not set725697CONFIG_UNIX98_PTYS=y698698+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set726699CONFIG_LEGACY_PTYS=y727700CONFIG_LEGACY_PTY_COUNT=256701701+# CONFIG_HVC_UDBG is not set728702# CONFIG_IPMI_HANDLER is not set729703# CONFIG_HW_RANDOM is not set730704# CONFIG_NVRAM is not set···792762# Miscellaneous I2C Chip support793763#794764# CONFIG_DS1682 is not set795795-# CONFIG_EEPROM_AT24 is not set796796-# CONFIG_EEPROM_LEGACY is not set797765# CONFIG_SENSORS_PCF8574 is not set798766# CONFIG_PCF8575 is not set799767# CONFIG_SENSORS_PCA9539 is not set···824796# CONFIG_MFD_CORE is not set825797# CONFIG_MFD_SM501 is not set826798# CONFIG_HTC_PASIC3 is not set799799+# CONFIG_TWL4030_CORE is not set827800# CONFIG_MFD_TMIO is not set828801# CONFIG_PMIC_DA903X is not set829802# CONFIG_MFD_WM8400 is not set830803# CONFIG_MFD_WM8350_I2C is not set804804+# CONFIG_MFD_PCF50633 is not set831805# CONFIG_REGULATOR is not set832806833807#···876846#877847878848#879879-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'849849+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;880850#881851# CONFIG_USB_GADGET is not set852852+853853+#854854+# OTG and related infrastructure855855+#882856# CONFIG_UWB is not set883857# CONFIG_MMC is not set884858# CONFIG_MEMSTICK is not set···894860# CONFIG_DMADEVICES is not set895861# CONFIG_UIO is not set896862# CONFIG_STAGING is not set897897-CONFIG_STAGING_EXCLUDE_BUILD=y898863899864#900865# File systems···914881CONFIG_FILE_LOCKING=y915882# CONFIG_XFS_FS is not set916883# CONFIG_OCFS2_FS is not set884884+# CONFIG_BTRFS_FS is not set917885CONFIG_DNOTIFY=y918886CONFIG_INOTIFY=y919887CONFIG_INOTIFY_USER=y···948914# CONFIG_TMPFS_POSIX_ACL is not set949915# CONFIG_HUGETLB_PAGE is not set950916# CONFIG_CONFIGFS_FS is not set951951-952952-#953953-# Miscellaneous filesystems954954-#917917+CONFIG_MISC_FILESYSTEMS=y955918# CONFIG_ADFS_FS is not set956919# CONFIG_AFFS_FS is not set957920# CONFIG_HFS_FS is not set···957926# CONFIG_BFS_FS is not set958927# CONFIG_EFS_FS is not set959928# CONFIG_CRAMFS is not set929929+# CONFIG_SQUASHFS is not set960930# CONFIG_VXFS_FS is not set961931# CONFIG_MINIX_FS is not set962932# CONFIG_OMFS_FS is not set···999967# Library routines1000968#1001969CONFIG_BITREVERSE=y970970+CONFIG_GENERIC_FIND_LAST_BIT=y1002971# CONFIG_CRC_CCITT is not set1003972# CONFIG_CRC16 is not set1004973# CONFIG_CRC_T10DIF is not set···10491016# CONFIG_DEBUG_MEMORY_INIT is not set10501017# CONFIG_DEBUG_LIST is not set10511018# CONFIG_DEBUG_SG is not set10191019+# CONFIG_DEBUG_NOTIFIERS is not set10521020# CONFIG_BOOT_PRINTK_DELAY is not set10531021# CONFIG_RCU_TORTURE_TEST is not set10541022# CONFIG_RCU_CPU_STALL_DETECTOR is not set···10581024# CONFIG_FAULT_INJECTION is not set10591025# CONFIG_LATENCYTOP is not set10601026CONFIG_HAVE_FUNCTION_TRACER=y10271027+CONFIG_HAVE_DYNAMIC_FTRACE=y10281028+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y1061102910621030#10631031# Tracers···10681032# CONFIG_SCHED_TRACER is not set10691033# CONFIG_CONTEXT_SWITCH_TRACER is not set10701034# CONFIG_BOOT_TRACER is not set10351035+# CONFIG_TRACE_BRANCH_PROFILING is not set10711036# CONFIG_STACK_TRACER is not set10721037# CONFIG_DYNAMIC_PRINTK_DEBUG is not set10731038# CONFIG_SAMPLES is not set10741039CONFIG_HAVE_ARCH_KGDB=y10751040# CONFIG_KGDB is not set10411041+CONFIG_PRINT_STACK_DEPTH=6410761042# CONFIG_DEBUG_STACKOVERFLOW is not set10771043# CONFIG_DEBUG_STACK_USAGE is not set10781044# CONFIG_DEBUG_PAGEALLOC is not set···11011063#11021064# CONFIG_CRYPTO_FIPS is not set11031065CONFIG_CRYPTO_ALGAPI=y11041104-CONFIG_CRYPTO_AEAD=y10661066+CONFIG_CRYPTO_ALGAPI2=y10671067+CONFIG_CRYPTO_AEAD2=y11051068CONFIG_CRYPTO_BLKCIPHER=y10691069+CONFIG_CRYPTO_BLKCIPHER2=y11061070CONFIG_CRYPTO_HASH=y11071107-CONFIG_CRYPTO_RNG=y10711071+CONFIG_CRYPTO_HASH2=y10721072+CONFIG_CRYPTO_RNG2=y11081073CONFIG_CRYPTO_MANAGER=y10741074+CONFIG_CRYPTO_MANAGER2=y11091075# CONFIG_CRYPTO_GF128MUL is not set11101076# CONFIG_CRYPTO_NULL is not set11111077# CONFIG_CRYPTO_CRYPTD is not set
+64-21
arch/powerpc/configs/52xx/motionpro_defconfig
···11#22# Automatically generated make config: don't edit33-# Linux kernel version: 2.6.28-rc444-# Thu Nov 13 02:11:02 200833+# Linux kernel version: 2.6.29-rc244+# Mon Jan 26 21:42:29 200955#66# CONFIG_PPC64 is not set77···4343CONFIG_PPC=y4444CONFIG_EARLY_PRINTK=y4545CONFIG_GENERIC_NVRAM=y4646-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y4646+CONFIG_SCHED_OMIT_FRAME_POINTER=y4747CONFIG_ARCH_MAY_HAVE_PC_FDC=y4848CONFIG_PPC_OF=y4949CONFIG_OF=y···7171# CONFIG_BSD_PROCESS_ACCT is not set7272# CONFIG_TASKSTATS is not set7373# CONFIG_AUDIT is not set7474+7575+#7676+# RCU Subsystem7777+#7878+CONFIG_CLASSIC_RCU=y7979+# CONFIG_TREE_RCU is not set8080+# CONFIG_PREEMPT_RCU is not set8181+# CONFIG_TREE_RCU_TRACE is not set8282+# CONFIG_PREEMPT_RCU_TRACE is not set7483# CONFIG_IKCONFIG is not set7584CONFIG_LOG_BUF_SHIFT=147676-# CONFIG_CGROUPS is not set7785CONFIG_GROUP_SCHED=y7886CONFIG_FAIR_GROUP_SCHED=y7987# CONFIG_RT_GROUP_SCHED is not set8088CONFIG_USER_SCHED=y8189# CONFIG_CGROUP_SCHED is not set9090+# CONFIG_CGROUPS is not set8291CONFIG_SYSFS_DEPRECATED=y8392CONFIG_SYSFS_DEPRECATED_V2=y8493# CONFIG_RELAY is not set···119110CONFIG_SLUB=y120111# CONFIG_SLOB is not set121112# CONFIG_PROFILING is not set122122-# CONFIG_MARKERS is not set123113CONFIG_HAVE_OPROFILE=y124114CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y125115CONFIG_HAVE_IOREMAP_PROT=y···129121# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set130122CONFIG_SLABINFO=y131123CONFIG_RT_MUTEXES=y132132-# CONFIG_TINY_SHMEM is not set133124CONFIG_BASE_SMALL=0134125# CONFIG_MODULES is not set135126CONFIG_BLOCK=y136127# CONFIG_LBD is not set137128# CONFIG_BLK_DEV_IO_TRACE is not set138138-# CONFIG_LSF is not set139129# CONFIG_BLK_DEV_BSG is not set140130# CONFIG_BLK_DEV_INTEGRITY is not set141131···149143# CONFIG_DEFAULT_CFQ is not set150144# CONFIG_DEFAULT_NOOP is not set151145CONFIG_DEFAULT_IOSCHED="anticipatory"152152-CONFIG_CLASSIC_RCU=y153146# CONFIG_FREEZER is not set154147155148#···187182# CONFIG_TAU is not set188183# CONFIG_FSL_ULI1575 is not set189184CONFIG_PPC_BESTCOMM=y190190-# CONFIG_PPC_BESTCOMM_ATA is not set185185+CONFIG_PPC_BESTCOMM_ATA=y191186CONFIG_PPC_BESTCOMM_FEC=y192192-# CONFIG_PPC_BESTCOMM_GEN_BD is not set187187+# CONFIG_SIMPLE_GPIO is not set193188194189#195190# Kernel options···216211CONFIG_ARCH_HAS_WALK_MEMORY=y217212CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y218213# CONFIG_KEXEC is not set214214+# CONFIG_CRASH_DUMP is not set219215CONFIG_ARCH_FLATMEM_ENABLE=y220216CONFIG_ARCH_POPULATES_NODE_MAP=y221217CONFIG_SELECT_MEMORY_MODEL=y···228222CONFIG_PAGEFLAGS_EXTENDED=y229223CONFIG_SPLIT_PTLOCK_CPUS=4230224CONFIG_MIGRATION=y231231-# CONFIG_RESOURCES_64BIT is not set232225# CONFIG_PHYS_ADDR_T_64BIT is not set233226CONFIG_ZONE_DMA_FLAG=1234227CONFIG_BOUNCE=y235228CONFIG_VIRT_TO_BUS=y236229CONFIG_UNEVICTABLE_LRU=y230230+CONFIG_PPC_4K_PAGES=y231231+# CONFIG_PPC_16K_PAGES is not set232232+# CONFIG_PPC_64K_PAGES is not set237233CONFIG_FORCE_MAX_ZONEORDER=11238234CONFIG_PROC_DEVICETREE=y239235# CONFIG_CMDLINE_BOOL is not set···276268#277269# Networking options278270#271271+CONFIG_COMPAT_NET_DEV_OPS=y279272CONFIG_PACKET=y280273# CONFIG_PACKET_MMAP is not set281274CONFIG_UNIX=y···333324# CONFIG_ECONET is not set334325# CONFIG_WAN_ROUTER is not set335326# CONFIG_NET_SCHED is not set327327+# CONFIG_DCB is not set336328337329#338330# Network testing···346336# CONFIG_AF_RXRPC is not set347337# CONFIG_PHONET is not set348338# CONFIG_WIRELESS is not set339339+# CONFIG_WIMAX is not set349340# CONFIG_RFKILL is not set350341# CONFIG_NET_9P is not set351342···438427# CONFIG_MTD_ONENAND is not set439428440429#430430+# LPDDR flash memory drivers431431+#432432+# CONFIG_MTD_LPDDR is not set433433+# CONFIG_MTD_QINFO_PROBE is not set434434+435435+#441436# UBI - Unsorted block images442437#443438# CONFIG_MTD_UBI is not set···464447# CONFIG_ATA_OVER_ETH is not set465448# CONFIG_BLK_DEV_HD is not set466449CONFIG_MISC_DEVICES=y467467-# CONFIG_EEPROM_93CX6 is not set468450# CONFIG_ICS932S401 is not set469451# CONFIG_ENCLOSURE_SERVICES is not set470452# CONFIG_C2PORT is not set453453+454454+#455455+# EEPROM support456456+#457457+# CONFIG_EEPROM_AT24 is not set458458+CONFIG_EEPROM_LEGACY=y459459+# CONFIG_EEPROM_93CX6 is not set471460CONFIG_HAVE_IDE=y472461# CONFIG_IDE is not set473462···515492# CONFIG_SCSI_SRP_ATTRS is not set516493CONFIG_SCSI_LOWLEVEL=y517494# CONFIG_ISCSI_TCP is not set495495+# CONFIG_LIBFC is not set518496# CONFIG_SCSI_DEBUG is not set519497# CONFIG_SCSI_DH is not set520498CONFIG_ATA=y···549525CONFIG_BROADCOM_PHY=y550526CONFIG_ICPLUS_PHY=y551527# CONFIG_REALTEK_PHY is not set528528+# CONFIG_NATIONAL_PHY is not set529529+# CONFIG_STE10XP is not set530530+# CONFIG_LSI_ET1011C_PHY is not set552531# CONFIG_FIXED_PHY is not set553532CONFIG_MDIO_BITBANG=y554533CONFIG_NET_ETHERNET=y···575548# CONFIG_WLAN_PRE80211 is not set576549# CONFIG_WLAN_80211 is not set577550# CONFIG_IWLWIFI_LEDS is not set551551+552552+#553553+# Enable WiMAX (Networking options) to see the WiMAX drivers554554+#578555# CONFIG_WAN is not set579556# CONFIG_PPP is not set580557# CONFIG_SLIP is not set···621590CONFIG_SERIAL_MPC52xx_CONSOLE=y622591CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200623592CONFIG_UNIX98_PTYS=y593593+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set624594CONFIG_LEGACY_PTYS=y625595CONFIG_LEGACY_PTY_COUNT=256596596+# CONFIG_HVC_UDBG is not set626597# CONFIG_IPMI_HANDLER is not set627598# CONFIG_HW_RANDOM is not set628599# CONFIG_NVRAM is not set···662629# Miscellaneous I2C Chip support663630#664631# CONFIG_DS1682 is not set665665-# CONFIG_EEPROM_AT24 is not set666666-CONFIG_EEPROM_LEGACY=y667632# CONFIG_SENSORS_PCF8574 is not set668633# CONFIG_PCF8575 is not set669634# CONFIG_SENSORS_PCA9539 is not set···690659# CONFIG_SENSORS_ADT7462 is not set691660# CONFIG_SENSORS_ADT7470 is not set692661# CONFIG_SENSORS_ADT7473 is not set662662+# CONFIG_SENSORS_ADT7475 is not set693663# CONFIG_SENSORS_ATXP1 is not set694664# CONFIG_SENSORS_DS1621 is not set695665# CONFIG_SENSORS_F71805F is not set···710678# CONFIG_SENSORS_LM90 is not set711679# CONFIG_SENSORS_LM92 is not set712680# CONFIG_SENSORS_LM93 is not set681681+# CONFIG_SENSORS_LTC4245 is not set713682# CONFIG_SENSORS_MAX1619 is not set714683# CONFIG_SENSORS_MAX6650 is not set715684# CONFIG_SENSORS_PC87360 is not set···754721# CONFIG_MFD_CORE is not set755722# CONFIG_MFD_SM501 is not set756723# CONFIG_HTC_PASIC3 is not set724724+# CONFIG_TWL4030_CORE is not set757725# CONFIG_MFD_TMIO is not set758726# CONFIG_PMIC_DA903X is not set759727# CONFIG_MFD_WM8400 is not set760728# CONFIG_MFD_WM8350_I2C is not set729729+# CONFIG_MFD_PCF50633 is not set761730# CONFIG_REGULATOR is not set762731763732#···870835# CONFIG_DMADEVICES is not set871836# CONFIG_UIO is not set872837# CONFIG_STAGING is not set873873-CONFIG_STAGING_EXCLUDE_BUILD=y874838875839#876840# File systems···890856CONFIG_FILE_LOCKING=y891857# CONFIG_XFS_FS is not set892858# CONFIG_OCFS2_FS is not set859859+# CONFIG_BTRFS_FS is not set893860CONFIG_DNOTIFY=y894861CONFIG_INOTIFY=y895862CONFIG_INOTIFY_USER=y···927892# CONFIG_TMPFS_POSIX_ACL is not set928893# CONFIG_HUGETLB_PAGE is not set929894# CONFIG_CONFIGFS_FS is not set930930-931931-#932932-# Miscellaneous filesystems933933-#895895+CONFIG_MISC_FILESYSTEMS=y934896# CONFIG_ADFS_FS is not set935897# CONFIG_AFFS_FS is not set936898# CONFIG_HFS_FS is not set···947915CONFIG_JFFS2_RTIME=y948916# CONFIG_JFFS2_RUBIN is not set949917CONFIG_CRAMFS=y918918+# CONFIG_SQUASHFS is not set950919# CONFIG_VXFS_FS is not set951920# CONFIG_MINIX_FS is not set952921# CONFIG_OMFS_FS is not set···10441011# Library routines10451012#10461013CONFIG_BITREVERSE=y10141014+CONFIG_GENERIC_FIND_LAST_BIT=y10471015# CONFIG_CRC_CCITT is not set10481016# CONFIG_CRC16 is not set10491017# CONFIG_CRC_T10DIF is not set···10961062# CONFIG_DEBUG_MEMORY_INIT is not set10971063# CONFIG_DEBUG_LIST is not set10981064# CONFIG_DEBUG_SG is not set10651065+# CONFIG_DEBUG_NOTIFIERS is not set10991066# CONFIG_BOOT_PRINTK_DELAY is not set11001067# CONFIG_RCU_TORTURE_TEST is not set11011068# CONFIG_RCU_CPU_STALL_DETECTOR is not set···11051070# CONFIG_FAULT_INJECTION is not set11061071# CONFIG_LATENCYTOP is not set11071072CONFIG_HAVE_FUNCTION_TRACER=y10731073+CONFIG_HAVE_DYNAMIC_FTRACE=y10741074+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y1108107511091076#11101077# Tracers···11151078# CONFIG_SCHED_TRACER is not set11161079# CONFIG_CONTEXT_SWITCH_TRACER is not set11171080# CONFIG_BOOT_TRACER is not set10811081+# CONFIG_TRACE_BRANCH_PROFILING is not set11181082# CONFIG_STACK_TRACER is not set11191083# CONFIG_DYNAMIC_PRINTK_DEBUG is not set11201084# CONFIG_SAMPLES is not set11211085CONFIG_HAVE_ARCH_KGDB=y11221086# CONFIG_KGDB is not set10871087+CONFIG_PRINT_STACK_DEPTH=6411231088# CONFIG_DEBUG_STACKOVERFLOW is not set11241089# CONFIG_DEBUG_STACK_USAGE is not set11251090# CONFIG_DEBUG_PAGEALLOC is not set···11481109#11491110# CONFIG_CRYPTO_FIPS is not set11501111CONFIG_CRYPTO_ALGAPI=y11511151-CONFIG_CRYPTO_AEAD=y11121112+CONFIG_CRYPTO_ALGAPI2=y11131113+CONFIG_CRYPTO_AEAD2=y11521114CONFIG_CRYPTO_BLKCIPHER=y11151115+CONFIG_CRYPTO_BLKCIPHER2=y11531116CONFIG_CRYPTO_HASH=y11541154-CONFIG_CRYPTO_RNG=y11171117+CONFIG_CRYPTO_HASH2=y11181118+CONFIG_CRYPTO_RNG2=y11551119CONFIG_CRYPTO_MANAGER=y11201120+CONFIG_CRYPTO_MANAGER2=y11561121# CONFIG_CRYPTO_GF128MUL is not set11571122# CONFIG_CRYPTO_NULL is not set11581123# CONFIG_CRYPTO_CRYPTD is not set
+56-26
arch/powerpc/configs/52xx/pcm030_defconfig
···11#22# Automatically generated make config: don't edit33-# Linux kernel version: 2.6.28-rc444-# Thu Nov 13 02:13:16 200833+# Linux kernel version: 2.6.29-rc244+# Mon Jan 26 21:41:33 200955#66# CONFIG_PPC64 is not set77···4343CONFIG_PPC=y4444CONFIG_EARLY_PRINTK=y4545CONFIG_GENERIC_NVRAM=y4646-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y4646+CONFIG_SCHED_OMIT_FRAME_POINTER=y4747CONFIG_ARCH_MAY_HAVE_PC_FDC=y4848CONFIG_PPC_OF=y4949CONFIG_OF=y···7272# CONFIG_BSD_PROCESS_ACCT is not set7373# CONFIG_TASKSTATS is not set7474# CONFIG_AUDIT is not set7575+7676+#7777+# RCU Subsystem7878+#7979+CONFIG_CLASSIC_RCU=y8080+# CONFIG_TREE_RCU is not set8181+# CONFIG_PREEMPT_RCU is not set8282+# CONFIG_TREE_RCU_TRACE is not set8383+# CONFIG_PREEMPT_RCU_TRACE is not set7584CONFIG_IKCONFIG=y7685CONFIG_IKCONFIG_PROC=y7786CONFIG_LOG_BUF_SHIFT=147878-# CONFIG_CGROUPS is not set7987CONFIG_GROUP_SCHED=y8088CONFIG_FAIR_GROUP_SCHED=y8189# CONFIG_RT_GROUP_SCHED is not set8290CONFIG_USER_SCHED=y8391# CONFIG_CGROUP_SCHED is not set9292+# CONFIG_CGROUPS is not set8493CONFIG_SYSFS_DEPRECATED=y8594CONFIG_SYSFS_DEPRECATED_V2=y8695# CONFIG_RELAY is not set···121112# CONFIG_SLUB is not set122113# CONFIG_SLOB is not set123114# CONFIG_PROFILING is not set124124-# CONFIG_MARKERS is not set125115CONFIG_HAVE_OPROFILE=y126116# CONFIG_KPROBES is not set127117CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y···132124# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set133125CONFIG_SLABINFO=y134126CONFIG_RT_MUTEXES=y135135-# CONFIG_TINY_SHMEM is not set136127CONFIG_BASE_SMALL=0137128CONFIG_MODULES=y138129# CONFIG_MODULE_FORCE_LOAD is not set···139132# CONFIG_MODULE_FORCE_UNLOAD is not set140133# CONFIG_MODVERSIONS is not set141134# CONFIG_MODULE_SRCVERSION_ALL is not set142142-CONFIG_KMOD=y143135CONFIG_BLOCK=y144136# CONFIG_LBD is not set145137# CONFIG_BLK_DEV_IO_TRACE is not set146146-# CONFIG_LSF is not set147138# CONFIG_BLK_DEV_BSG is not set148139# CONFIG_BLK_DEV_INTEGRITY is not set149140···157152# CONFIG_DEFAULT_CFQ is not set158153CONFIG_DEFAULT_NOOP=y159154CONFIG_DEFAULT_IOSCHED="noop"160160-CONFIG_CLASSIC_RCU=y161155# CONFIG_FREEZER is not set162156163157#···195191# CONFIG_TAU is not set196192# CONFIG_FSL_ULI1575 is not set197193CONFIG_PPC_BESTCOMM=y198198-CONFIG_PPC_BESTCOMM_ATA=y194194+CONFIG_PPC_BESTCOMM_ATA=m199195CONFIG_PPC_BESTCOMM_FEC=y200200-CONFIG_PPC_BESTCOMM_GEN_BD=y196196+# CONFIG_SIMPLE_GPIO is not set201197202198#203199# Kernel options···216212# CONFIG_PREEMPT_NONE is not set217213# CONFIG_PREEMPT_VOLUNTARY is not set218214CONFIG_PREEMPT=y219219-# CONFIG_PREEMPT_RCU is not set220215CONFIG_BINFMT_ELF=y221216# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set222217# CONFIG_HAVE_AOUT is not set···225222CONFIG_ARCH_HAS_WALK_MEMORY=y226223CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y227224# CONFIG_KEXEC is not set225225+# CONFIG_CRASH_DUMP is not set228226CONFIG_ARCH_FLATMEM_ENABLE=y229227CONFIG_ARCH_POPULATES_NODE_MAP=y230228CONFIG_SELECT_MEMORY_MODEL=y···237233CONFIG_PAGEFLAGS_EXTENDED=y238234CONFIG_SPLIT_PTLOCK_CPUS=4239235CONFIG_MIGRATION=y240240-# CONFIG_RESOURCES_64BIT is not set241236# CONFIG_PHYS_ADDR_T_64BIT is not set242237CONFIG_ZONE_DMA_FLAG=1243238CONFIG_BOUNCE=y244239CONFIG_VIRT_TO_BUS=y245240CONFIG_UNEVICTABLE_LRU=y241241+CONFIG_PPC_4K_PAGES=y242242+# CONFIG_PPC_16K_PAGES is not set243243+# CONFIG_PPC_64K_PAGES is not set246244CONFIG_FORCE_MAX_ZONEORDER=11247245CONFIG_PROC_DEVICETREE=y248246# CONFIG_CMDLINE_BOOL is not set···267261CONFIG_ARCH_SUPPORTS_MSI=y268262# CONFIG_PCI_MSI is not set269263CONFIG_PCI_LEGACY=y264264+# CONFIG_PCI_STUB is not set270265# CONFIG_PCCARD is not set271266# CONFIG_HOTPLUG_PCI is not set272267# CONFIG_HAS_RAPIDIO is not set···290283#291284# Networking options292285#286286+CONFIG_COMPAT_NET_DEV_OPS=y293287CONFIG_PACKET=y294288# CONFIG_PACKET_MMAP is not set295289CONFIG_UNIX=y···341333# CONFIG_ECONET is not set342334# CONFIG_WAN_ROUTER is not set343335# CONFIG_NET_SCHED is not set336336+# CONFIG_DCB is not set344337345338#346339# Network testing···354345# CONFIG_AF_RXRPC is not set355346# CONFIG_PHONET is not set356347# CONFIG_WIRELESS is not set348348+# CONFIG_WIMAX is not set357349# CONFIG_RFKILL is not set358350# CONFIG_NET_9P is not set359351···375365# CONFIG_MTD_DEBUG is not set376366# CONFIG_MTD_CONCAT is not set377367CONFIG_MTD_PARTITIONS=y368368+# CONFIG_MTD_TESTS is not set378369# CONFIG_MTD_REDBOOT_PARTS is not set379370CONFIG_MTD_CMDLINE_PARTS=y380371# CONFIG_MTD_OF_PARTS is not set···424413#425414# CONFIG_MTD_COMPLEX_MAPPINGS is not set426415CONFIG_MTD_PHYSMAP=y427427-CONFIG_MTD_PHYSMAP_START=0x0428428-CONFIG_MTD_PHYSMAP_LEN=0x0429429-CONFIG_MTD_PHYSMAP_BANKWIDTH=1416416+# CONFIG_MTD_PHYSMAP_COMPAT is not set430417# CONFIG_MTD_PHYSMAP_OF is not set431418# CONFIG_MTD_INTEL_VR_NOR is not set432419# CONFIG_MTD_PLATRAM is not set···446437# CONFIG_MTD_DOC2001PLUS is not set447438# CONFIG_MTD_NAND is not set448439# CONFIG_MTD_ONENAND is not set440440+441441+#442442+# LPDDR flash memory drivers443443+#444444+# CONFIG_MTD_LPDDR is not set445445+# CONFIG_MTD_QINFO_PROBE is not set449446450447#451448# UBI - Unsorted block images···602587# CONFIG_BROADCOM_PHY is not set603588# CONFIG_ICPLUS_PHY is not set604589# CONFIG_REALTEK_PHY is not set590590+# CONFIG_NATIONAL_PHY is not set591591+# CONFIG_STE10XP is not set592592+# CONFIG_LSI_ET1011C_PHY is not set605593# CONFIG_FIXED_PHY is not set606594# CONFIG_MDIO_BITBANG is not set607595CONFIG_NET_ETHERNET=y···637619# CONFIG_WLAN_PRE80211 is not set638620# CONFIG_WLAN_80211 is not set639621# CONFIG_IWLWIFI_LEDS is not set622622+623623+#624624+# Enable WiMAX (Networking options) to see the WiMAX drivers625625+#640626641627#642628# USB Network Adapters···697675CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600698676# CONFIG_SERIAL_JSM is not set699677CONFIG_UNIX98_PTYS=y678678+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set700679# CONFIG_LEGACY_PTYS is not set680680+# CONFIG_HVC_UDBG is not set701681# CONFIG_IPMI_HANDLER is not set702682CONFIG_HW_RANDOM=y703683# CONFIG_NVRAM is not set···764740# Miscellaneous I2C Chip support765741#766742# CONFIG_DS1682 is not set767767-# CONFIG_EEPROM_AT24 is not set768768-CONFIG_EEPROM_LEGACY=m769743# CONFIG_SENSORS_PCF8574 is not set770744# CONFIG_PCF8575 is not set771745# CONFIG_SENSORS_PCA9539 is not set···796774# CONFIG_MFD_CORE is not set797775# CONFIG_MFD_SM501 is not set798776# CONFIG_HTC_PASIC3 is not set777777+# CONFIG_TWL4030_CORE is not set799778# CONFIG_MFD_TMIO is not set800779# CONFIG_PMIC_DA903X is not set801780# CONFIG_MFD_WM8400 is not set802781# CONFIG_MFD_WM8350_I2C is not set782782+# CONFIG_MFD_PCF50633 is not set803783# CONFIG_REGULATOR is not set804784805785#···861837#862838# CONFIG_USB_C67X00_HCD is not set863839# CONFIG_USB_EHCI_HCD is not set840840+# CONFIG_USB_OXU210HP_HCD is not set864841# CONFIG_USB_ISP116X_HCD is not set865842# CONFIG_USB_ISP1760_HCD is not set866843CONFIG_USB_OHCI_HCD=m···889864# CONFIG_USB_TMC is not set890865891866#892892-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'867867+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;893868#894869895870#896896-# may also be needed; see USB_STORAGE Help for more information871871+# see USB_STORAGE Help for more information897872#898873CONFIG_USB_STORAGE=m899874# CONFIG_USB_STORAGE_DEBUG is not set900875# CONFIG_USB_STORAGE_DATAFAB is not set901876# CONFIG_USB_STORAGE_FREECOM is not set902877# CONFIG_USB_STORAGE_ISD200 is not set903903-# CONFIG_USB_STORAGE_DPCM is not set904878# CONFIG_USB_STORAGE_USBAT is not set905879# CONFIG_USB_STORAGE_SDDR09 is not set906880# CONFIG_USB_STORAGE_SDDR55 is not set···945921# CONFIG_USB_ISIGHTFW is not set946922# CONFIG_USB_VST is not set947923# CONFIG_USB_GADGET is not set924924+925925+#926926+# OTG and related infrastructure927927+#948928# CONFIG_UWB is not set949929# CONFIG_MMC is not set950930# CONFIG_MEMSTICK is not set···1011983# CONFIG_DMADEVICES is not set1012984# CONFIG_UIO is not set1013985# CONFIG_STAGING is not set10141014-CONFIG_STAGING_EXCLUDE_BUILD=y10159861016987#1017988# File systems···10311004CONFIG_FILE_LOCKING=y10321005# CONFIG_XFS_FS is not set10331006# CONFIG_OCFS2_FS is not set10071007+# CONFIG_BTRFS_FS is not set10341008# CONFIG_DNOTIFY is not set10351009# CONFIG_INOTIFY is not set10361010# CONFIG_QUOTA is not set···10671039# CONFIG_TMPFS_POSIX_ACL is not set10681040# CONFIG_HUGETLB_PAGE is not set10691041# CONFIG_CONFIGFS_FS is not set10701070-10711071-#10721072-# Miscellaneous filesystems10731073-#10421042+CONFIG_MISC_FILESYSTEMS=y10741043# CONFIG_ADFS_FS is not set10751044# CONFIG_AFFS_FS is not set10761045# CONFIG_HFS_FS is not set···10871062CONFIG_JFFS2_RTIME=y10881063# CONFIG_JFFS2_RUBIN is not set10891064# CONFIG_CRAMFS is not set10651065+# CONFIG_SQUASHFS is not set10901066# CONFIG_VXFS_FS is not set10911067# CONFIG_MINIX_FS is not set10921068# CONFIG_OMFS_FS is not set···11671141# Library routines11681142#11691143CONFIG_BITREVERSE=y11441144+CONFIG_GENERIC_FIND_LAST_BIT=y11701145# CONFIG_CRC_CCITT is not set11711146# CONFIG_CRC16 is not set11721147# CONFIG_CRC_T10DIF is not set···12001173# CONFIG_RCU_CPU_STALL_DETECTOR is not set12011174# CONFIG_LATENCYTOP is not set12021175CONFIG_HAVE_FUNCTION_TRACER=y11761176+CONFIG_HAVE_DYNAMIC_FTRACE=y11771177+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y1203117812041179#12051180# Tracers···12091180# CONFIG_DYNAMIC_PRINTK_DEBUG is not set12101181# CONFIG_SAMPLES is not set12111182CONFIG_HAVE_ARCH_KGDB=y11831183+CONFIG_PRINT_STACK_DEPTH=6412121184# CONFIG_IRQSTACKS is not set12131185# CONFIG_BOOTX_TEXT is not set12141186# CONFIG_PPC_EARLY_DEBUG is not set
+65-24
arch/powerpc/configs/52xx/tqm5200_defconfig
···11#22# Automatically generated make config: don't edit33-# Linux kernel version: 2.6.28-rc444-# Thu Nov 13 02:09:30 200833+# Linux kernel version: 2.6.29-rc244+# Mon Jan 26 21:42:58 200955#66# CONFIG_PPC64 is not set77···4343CONFIG_PPC=y4444CONFIG_EARLY_PRINTK=y4545CONFIG_GENERIC_NVRAM=y4646-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y4646+CONFIG_SCHED_OMIT_FRAME_POINTER=y4747CONFIG_ARCH_MAY_HAVE_PC_FDC=y4848CONFIG_PPC_OF=y4949CONFIG_OF=y···7171# CONFIG_BSD_PROCESS_ACCT is not set7272# CONFIG_TASKSTATS is not set7373# CONFIG_AUDIT is not set7474+7575+#7676+# RCU Subsystem7777+#7878+CONFIG_CLASSIC_RCU=y7979+# CONFIG_TREE_RCU is not set8080+# CONFIG_PREEMPT_RCU is not set8181+# CONFIG_TREE_RCU_TRACE is not set8282+# CONFIG_PREEMPT_RCU_TRACE is not set7483# CONFIG_IKCONFIG is not set7584CONFIG_LOG_BUF_SHIFT=147676-# CONFIG_CGROUPS is not set7785CONFIG_GROUP_SCHED=y7886CONFIG_FAIR_GROUP_SCHED=y7987# CONFIG_RT_GROUP_SCHED is not set8088CONFIG_USER_SCHED=y8189# CONFIG_CGROUP_SCHED is not set9090+# CONFIG_CGROUPS is not set8291CONFIG_SYSFS_DEPRECATED=y8392CONFIG_SYSFS_DEPRECATED_V2=y8493# CONFIG_RELAY is not set···119110CONFIG_SLUB=y120111# CONFIG_SLOB is not set121112# CONFIG_PROFILING is not set122122-# CONFIG_MARKERS is not set123113CONFIG_HAVE_OPROFILE=y124114CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y125115CONFIG_HAVE_IOREMAP_PROT=y···129121# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set130122CONFIG_SLABINFO=y131123CONFIG_RT_MUTEXES=y132132-# CONFIG_TINY_SHMEM is not set133124CONFIG_BASE_SMALL=0134125CONFIG_MODULES=y135126# CONFIG_MODULE_FORCE_LOAD is not set···136129# CONFIG_MODULE_FORCE_UNLOAD is not set137130CONFIG_MODVERSIONS=y138131# CONFIG_MODULE_SRCVERSION_ALL is not set139139-CONFIG_KMOD=y140132CONFIG_BLOCK=y141133# CONFIG_LBD is not set142134# CONFIG_BLK_DEV_IO_TRACE is not set143143-# CONFIG_LSF is not set144135# CONFIG_BLK_DEV_BSG is not set145136# CONFIG_BLK_DEV_INTEGRITY is not set146137···154149# CONFIG_DEFAULT_CFQ is not set155150# CONFIG_DEFAULT_NOOP is not set156151CONFIG_DEFAULT_IOSCHED="anticipatory"157157-CONFIG_CLASSIC_RCU=y158152# CONFIG_FREEZER is not set159153160154#···192188# CONFIG_TAU is not set193189# CONFIG_FSL_ULI1575 is not set194190CONFIG_PPC_BESTCOMM=y195195-# CONFIG_PPC_BESTCOMM_ATA is not set191191+CONFIG_PPC_BESTCOMM_ATA=y196192CONFIG_PPC_BESTCOMM_FEC=y197197-# CONFIG_PPC_BESTCOMM_GEN_BD is not set193193+# CONFIG_SIMPLE_GPIO is not set198194199195#200196# Kernel options···221217CONFIG_ARCH_HAS_WALK_MEMORY=y222218CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y223219# CONFIG_KEXEC is not set220220+# CONFIG_CRASH_DUMP is not set224221CONFIG_ARCH_FLATMEM_ENABLE=y225222CONFIG_ARCH_POPULATES_NODE_MAP=y226223CONFIG_SELECT_MEMORY_MODEL=y···233228CONFIG_PAGEFLAGS_EXTENDED=y234229CONFIG_SPLIT_PTLOCK_CPUS=4235230CONFIG_MIGRATION=y236236-# CONFIG_RESOURCES_64BIT is not set237231# CONFIG_PHYS_ADDR_T_64BIT is not set238232CONFIG_ZONE_DMA_FLAG=1239233CONFIG_BOUNCE=y240234CONFIG_VIRT_TO_BUS=y241235CONFIG_UNEVICTABLE_LRU=y236236+CONFIG_PPC_4K_PAGES=y237237+# CONFIG_PPC_16K_PAGES is not set238238+# CONFIG_PPC_64K_PAGES is not set242239CONFIG_FORCE_MAX_ZONEORDER=11243240CONFIG_PROC_DEVICETREE=y244241# CONFIG_CMDLINE_BOOL is not set···281274#282275# Networking options283276#277277+CONFIG_COMPAT_NET_DEV_OPS=y284278CONFIG_PACKET=y285279# CONFIG_PACKET_MMAP is not set286280CONFIG_UNIX=y···338330# CONFIG_ECONET is not set339331# CONFIG_WAN_ROUTER is not set340332# CONFIG_NET_SCHED is not set333333+# CONFIG_DCB is not set341334342335#343336# Network testing···351342# CONFIG_AF_RXRPC is not set352343# CONFIG_PHONET is not set353344# CONFIG_WIRELESS is not set345345+# CONFIG_WIMAX is not set354346# CONFIG_RFKILL is not set355347# CONFIG_NET_9P is not set356348···374364# CONFIG_MTD_DEBUG is not set375365CONFIG_MTD_CONCAT=y376366CONFIG_MTD_PARTITIONS=y367367+# CONFIG_MTD_TESTS is not set377368# CONFIG_MTD_REDBOOT_PARTS is not set378369CONFIG_MTD_CMDLINE_PARTS=y379370# CONFIG_MTD_OF_PARTS is not set···444433# CONFIG_MTD_ONENAND is not set445434446435#436436+# LPDDR flash memory drivers437437+#438438+# CONFIG_MTD_LPDDR is not set439439+# CONFIG_MTD_QINFO_PROBE is not set440440+441441+#447442# UBI - Unsorted block images448443#449444# CONFIG_MTD_UBI is not set···513496# CONFIG_SCSI_SRP_ATTRS is not set514497CONFIG_SCSI_LOWLEVEL=y515498# CONFIG_ISCSI_TCP is not set499499+# CONFIG_LIBFC is not set516500# CONFIG_SCSI_DEBUG is not set517501# CONFIG_SCSI_DH is not set518502CONFIG_ATA=y···548530# CONFIG_BROADCOM_PHY is not set549531# CONFIG_ICPLUS_PHY is not set550532# CONFIG_REALTEK_PHY is not set533533+# CONFIG_NATIONAL_PHY is not set534534+# CONFIG_STE10XP is not set535535+# CONFIG_LSI_ET1011C_PHY is not set551536# CONFIG_FIXED_PHY is not set552537# CONFIG_MDIO_BITBANG is not set553538CONFIG_NET_ETHERNET=y···574553# CONFIG_WLAN_PRE80211 is not set575554# CONFIG_WLAN_80211 is not set576555# CONFIG_IWLWIFI_LEDS is not set556556+557557+#558558+# Enable WiMAX (Networking options) to see the WiMAX drivers559559+#577560578561#579562# USB Network Adapters···629604CONFIG_SERIAL_MPC52xx_CONSOLE=y630605CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200631606CONFIG_UNIX98_PTYS=y607607+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set632608CONFIG_LEGACY_PTYS=y633609CONFIG_LEGACY_PTY_COUNT=256610610+# CONFIG_HVC_UDBG is not set634611# CONFIG_IPMI_HANDLER is not set635612# CONFIG_HW_RANDOM is not set636613# CONFIG_NVRAM is not set···672645# Miscellaneous I2C Chip support673646#674647# CONFIG_DS1682 is not set675675-# CONFIG_EEPROM_AT24 is not set676676-# CONFIG_EEPROM_LEGACY is not set677648# CONFIG_SENSORS_PCF8574 is not set678649# CONFIG_PCF8575 is not set679650# CONFIG_SENSORS_PCA9539 is not set···700675# CONFIG_SENSORS_ADT7462 is not set701676# CONFIG_SENSORS_ADT7470 is not set702677# CONFIG_SENSORS_ADT7473 is not set678678+# CONFIG_SENSORS_ADT7475 is not set703679# CONFIG_SENSORS_ATXP1 is not set704680# CONFIG_SENSORS_DS1621 is not set705681# CONFIG_SENSORS_F71805F is not set···720694# CONFIG_SENSORS_LM90 is not set721695# CONFIG_SENSORS_LM92 is not set722696# CONFIG_SENSORS_LM93 is not set697697+# CONFIG_SENSORS_LTC4245 is not set723698# CONFIG_SENSORS_MAX1619 is not set724699# CONFIG_SENSORS_MAX6650 is not set725700# CONFIG_SENSORS_PC87360 is not set···769742# CONFIG_MFD_CORE is not set770743# CONFIG_MFD_SM501 is not set771744# CONFIG_HTC_PASIC3 is not set745745+# CONFIG_TWL4030_CORE is not set772746# CONFIG_MFD_TMIO is not set773747# CONFIG_PMIC_DA903X is not set774748# CONFIG_MFD_WM8400 is not set775749# CONFIG_MFD_WM8350_I2C is not set750750+# CONFIG_MFD_PCF50633 is not set776751# CONFIG_REGULATOR is not set777752778753#···832803# USB Host Controller Drivers833804#834805# CONFIG_USB_C67X00_HCD is not set806806+# CONFIG_USB_OXU210HP_HCD is not set835807# CONFIG_USB_ISP116X_HCD is not set836808# CONFIG_USB_ISP1760_HCD is not set837809CONFIG_USB_OHCI_HCD=y···857827# CONFIG_USB_TMC is not set858828859829#860860-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'830830+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;861831#862832863833#864864-# may also be needed; see USB_STORAGE Help for more information834834+# see USB_STORAGE Help for more information865835#866836CONFIG_USB_STORAGE=y867837# CONFIG_USB_STORAGE_DEBUG is not set868838# CONFIG_USB_STORAGE_DATAFAB is not set869839# CONFIG_USB_STORAGE_FREECOM is not set870840# CONFIG_USB_STORAGE_ISD200 is not set871871-# CONFIG_USB_STORAGE_DPCM is not set872841# CONFIG_USB_STORAGE_USBAT is not set873842# CONFIG_USB_STORAGE_SDDR09 is not set874843# CONFIG_USB_STORAGE_SDDR55 is not set···913884# CONFIG_USB_ISIGHTFW is not set914885# CONFIG_USB_VST is not set915886# CONFIG_USB_GADGET is not set887887+888888+#889889+# OTG and related infrastructure890890+#916891# CONFIG_MMC is not set917892# CONFIG_MEMSTICK is not set918893# CONFIG_NEW_LEDS is not set···980947# CONFIG_DMADEVICES is not set981948# CONFIG_UIO is not set982949# CONFIG_STAGING is not set983983-CONFIG_STAGING_EXCLUDE_BUILD=y984950985951#986952# File systems···1000968CONFIG_FILE_LOCKING=y1001969# CONFIG_XFS_FS is not set1002970# CONFIG_OCFS2_FS is not set971971+# CONFIG_BTRFS_FS is not set1003972CONFIG_DNOTIFY=y1004973CONFIG_INOTIFY=y1005974CONFIG_INOTIFY_USER=y···10371004# CONFIG_TMPFS_POSIX_ACL is not set10381005# CONFIG_HUGETLB_PAGE is not set10391006# CONFIG_CONFIGFS_FS is not set10401040-10411041-#10421042-# Miscellaneous filesystems10431043-#10071007+CONFIG_MISC_FILESYSTEMS=y10441008# CONFIG_ADFS_FS is not set10451009# CONFIG_AFFS_FS is not set10461010# CONFIG_HFS_FS is not set···10571027CONFIG_JFFS2_RTIME=y10581028# CONFIG_JFFS2_RUBIN is not set10591029CONFIG_CRAMFS=y10301030+# CONFIG_SQUASHFS is not set10601031# CONFIG_VXFS_FS is not set10611032# CONFIG_MINIX_FS is not set10621033# CONFIG_OMFS_FS is not set···11541123# Library routines11551124#11561125CONFIG_BITREVERSE=y11261126+CONFIG_GENERIC_FIND_LAST_BIT=y11571127# CONFIG_CRC_CCITT is not set11581128# CONFIG_CRC16 is not set11591129# CONFIG_CRC_T10DIF is not set···12061174# CONFIG_DEBUG_MEMORY_INIT is not set12071175# CONFIG_DEBUG_LIST is not set12081176# CONFIG_DEBUG_SG is not set11771177+# CONFIG_DEBUG_NOTIFIERS is not set12091178# CONFIG_BOOT_PRINTK_DELAY is not set12101179# CONFIG_RCU_TORTURE_TEST is not set12111180# CONFIG_RCU_CPU_STALL_DETECTOR is not set···12151182# CONFIG_FAULT_INJECTION is not set12161183# CONFIG_LATENCYTOP is not set12171184CONFIG_HAVE_FUNCTION_TRACER=y11851185+CONFIG_HAVE_DYNAMIC_FTRACE=y11861186+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y1218118712191188#12201189# Tracers···12251190# CONFIG_SCHED_TRACER is not set12261191# CONFIG_CONTEXT_SWITCH_TRACER is not set12271192# CONFIG_BOOT_TRACER is not set11931193+# CONFIG_TRACE_BRANCH_PROFILING is not set12281194# CONFIG_STACK_TRACER is not set12291195# CONFIG_DYNAMIC_PRINTK_DEBUG is not set12301196# CONFIG_SAMPLES is not set12311197CONFIG_HAVE_ARCH_KGDB=y12321198# CONFIG_KGDB is not set11991199+CONFIG_PRINT_STACK_DEPTH=6412331200# CONFIG_DEBUG_STACKOVERFLOW is not set12341201# CONFIG_DEBUG_STACK_USAGE is not set12351202# CONFIG_DEBUG_PAGEALLOC is not set···12581221#12591222# CONFIG_CRYPTO_FIPS is not set12601223CONFIG_CRYPTO_ALGAPI=y12611261-CONFIG_CRYPTO_AEAD=y12241224+CONFIG_CRYPTO_ALGAPI2=y12251225+CONFIG_CRYPTO_AEAD2=y12621226CONFIG_CRYPTO_BLKCIPHER=y12271227+CONFIG_CRYPTO_BLKCIPHER2=y12631228CONFIG_CRYPTO_HASH=y12641264-CONFIG_CRYPTO_RNG=y12291229+CONFIG_CRYPTO_HASH2=y12301230+CONFIG_CRYPTO_RNG2=y12651231CONFIG_CRYPTO_MANAGER=y12321232+CONFIG_CRYPTO_MANAGER2=y12661233# CONFIG_CRYPTO_GF128MUL is not set12671234# CONFIG_CRYPTO_NULL is not set12681235# CONFIG_CRYPTO_CRYPTD is not set
+77-27
arch/powerpc/configs/mpc5200_defconfig
···11#22# Automatically generated make config: don't edit33-# Linux kernel version: 2.6.28-rc444-# Thu Nov 13 02:09:07 200833+# Linux kernel version: 2.6.29-rc244+# Mon Jan 26 21:40:44 200955#66# CONFIG_PPC64 is not set77···4343CONFIG_PPC=y4444CONFIG_EARLY_PRINTK=y4545CONFIG_GENERIC_NVRAM=y4646-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y4646+CONFIG_SCHED_OMIT_FRAME_POINTER=y4747CONFIG_ARCH_MAY_HAVE_PC_FDC=y4848CONFIG_PPC_OF=y4949CONFIG_OF=y···7272# CONFIG_BSD_PROCESS_ACCT is not set7373# CONFIG_TASKSTATS is not set7474# CONFIG_AUDIT is not set7575+7676+#7777+# RCU Subsystem7878+#7979+CONFIG_CLASSIC_RCU=y8080+# CONFIG_TREE_RCU is not set8181+# CONFIG_PREEMPT_RCU is not set8282+# CONFIG_TREE_RCU_TRACE is not set8383+# CONFIG_PREEMPT_RCU_TRACE is not set7584# CONFIG_IKCONFIG is not set7685CONFIG_LOG_BUF_SHIFT=147777-# CONFIG_CGROUPS is not set7886# CONFIG_GROUP_SCHED is not set8787+# CONFIG_CGROUPS is not set7988CONFIG_SYSFS_DEPRECATED=y8089CONFIG_SYSFS_DEPRECATED_V2=y8190# CONFIG_RELAY is not set···117108CONFIG_SLUB=y118109# CONFIG_SLOB is not set119110# CONFIG_PROFILING is not set120120-# CONFIG_MARKERS is not set121111CONFIG_HAVE_OPROFILE=y122112CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y123113CONFIG_HAVE_IOREMAP_PROT=y···127119# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set128120CONFIG_SLABINFO=y129121CONFIG_RT_MUTEXES=y130130-# CONFIG_TINY_SHMEM is not set131122CONFIG_BASE_SMALL=0132123CONFIG_MODULES=y133124# CONFIG_MODULE_FORCE_LOAD is not set···134127# CONFIG_MODULE_FORCE_UNLOAD is not set135128# CONFIG_MODVERSIONS is not set136129# CONFIG_MODULE_SRCVERSION_ALL is not set137137-CONFIG_KMOD=y138130CONFIG_BLOCK=y139131# CONFIG_LBD is not set140132# CONFIG_BLK_DEV_IO_TRACE is not set141141-# CONFIG_LSF is not set142133# CONFIG_BLK_DEV_BSG is not set143134# CONFIG_BLK_DEV_INTEGRITY is not set144135···152147# CONFIG_DEFAULT_CFQ is not set153148# CONFIG_DEFAULT_NOOP is not set154149CONFIG_DEFAULT_IOSCHED="anticipatory"155155-CONFIG_CLASSIC_RCU=y156150CONFIG_FREEZER=y157151158152#···196192CONFIG_PPC_BESTCOMM=y197193CONFIG_PPC_BESTCOMM_ATA=y198194CONFIG_PPC_BESTCOMM_FEC=y199199-CONFIG_PPC_BESTCOMM_GEN_BD=y195195+# CONFIG_SIMPLE_GPIO is not set200196201197#202198# Kernel options···224220CONFIG_ARCH_HAS_WALK_MEMORY=y225221CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y226222# CONFIG_KEXEC is not set223223+# CONFIG_CRASH_DUMP is not set227224CONFIG_ARCH_FLATMEM_ENABLE=y228225CONFIG_ARCH_POPULATES_NODE_MAP=y229226CONFIG_SELECT_MEMORY_MODEL=y···236231CONFIG_PAGEFLAGS_EXTENDED=y237232CONFIG_SPLIT_PTLOCK_CPUS=4238233CONFIG_MIGRATION=y239239-# CONFIG_RESOURCES_64BIT is not set240234# CONFIG_PHYS_ADDR_T_64BIT is not set241235CONFIG_ZONE_DMA_FLAG=1242236CONFIG_BOUNCE=y243237CONFIG_VIRT_TO_BUS=y244238CONFIG_UNEVICTABLE_LRU=y239239+CONFIG_PPC_4K_PAGES=y240240+# CONFIG_PPC_16K_PAGES is not set241241+# CONFIG_PPC_64K_PAGES is not set245242CONFIG_FORCE_MAX_ZONEORDER=11246243CONFIG_PROC_DEVICETREE=y247244# CONFIG_CMDLINE_BOOL is not set···271264# CONFIG_PCI_MSI is not set272265CONFIG_PCI_LEGACY=y273266# CONFIG_PCI_DEBUG is not set267267+# CONFIG_PCI_STUB is not set274268# CONFIG_PCCARD is not set275269# CONFIG_HOTPLUG_PCI is not set276270# CONFIG_HAS_RAPIDIO is not set···294286#295287# Networking options296288#289289+CONFIG_COMPAT_NET_DEV_OPS=y297290CONFIG_PACKET=y298291# CONFIG_PACKET_MMAP is not set299292CONFIG_UNIX=y···351342# CONFIG_ECONET is not set352343# CONFIG_WAN_ROUTER is not set353344# CONFIG_NET_SCHED is not set345345+# CONFIG_DCB is not set354346355347#356348# Network testing···364354# CONFIG_AF_RXRPC is not set365355# CONFIG_PHONET is not set366356# CONFIG_WIRELESS is not set357357+# CONFIG_WIMAX is not set367358# CONFIG_RFKILL is not set368359# CONFIG_NET_9P is not set369360···387376# CONFIG_MTD_DEBUG is not set388377CONFIG_MTD_CONCAT=y389378CONFIG_MTD_PARTITIONS=y379379+# CONFIG_MTD_TESTS is not set390380# CONFIG_MTD_REDBOOT_PARTS is not set391381CONFIG_MTD_CMDLINE_PARTS=y392382# CONFIG_MTD_OF_PARTS is not set···459447# CONFIG_MTD_ONENAND is not set460448461449#450450+# LPDDR flash memory drivers451451+#452452+# CONFIG_MTD_LPDDR is not set453453+# CONFIG_MTD_QINFO_PROBE is not set454454+455455+#462456# UBI - Unsorted block images463457#464458# CONFIG_MTD_UBI is not set···492474# CONFIG_BLK_DEV_HD is not set493475CONFIG_MISC_DEVICES=y494476# CONFIG_PHANTOM is not set495495-# CONFIG_EEPROM_93CX6 is not set496477# CONFIG_SGI_IOC4 is not set497478# CONFIG_TIFM_CORE is not set498479# CONFIG_ICS932S401 is not set499480# CONFIG_ENCLOSURE_SERVICES is not set500481# CONFIG_HP_ILO is not set501482# CONFIG_C2PORT is not set483483+484484+#485485+# EEPROM support486486+#487487+# CONFIG_EEPROM_AT24 is not set488488+# CONFIG_EEPROM_LEGACY is not set489489+# CONFIG_EEPROM_93CX6 is not set502490CONFIG_HAVE_IDE=y503491# CONFIG_IDE is not set504492···563539# CONFIG_MEGARAID_SAS is not set564540# CONFIG_SCSI_HPTIOP is not set565541# CONFIG_SCSI_BUSLOGIC is not set542542+# CONFIG_LIBFC is not set543543+# CONFIG_FCOE is not set566544# CONFIG_SCSI_DMX3191D is not set567545# CONFIG_SCSI_EATA is not set568546# CONFIG_SCSI_FUTURE_DOMAIN is not set···685659# CONFIG_BROADCOM_PHY is not set686660# CONFIG_ICPLUS_PHY is not set687661# CONFIG_REALTEK_PHY is not set662662+# CONFIG_NATIONAL_PHY is not set663663+# CONFIG_STE10XP is not set664664+# CONFIG_LSI_ET1011C_PHY is not set688665# CONFIG_FIXED_PHY is not set689666# CONFIG_MDIO_BITBANG is not set690667CONFIG_NET_ETHERNET=y···720691# CONFIG_WLAN_PRE80211 is not set721692# CONFIG_WLAN_80211 is not set722693# CONFIG_IWLWIFI_LEDS is not set694694+695695+#696696+# Enable WiMAX (Networking options) to see the WiMAX drivers697697+#723698724699#725700# USB Network Adapters···807774CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200808775# CONFIG_SERIAL_JSM is not set809776CONFIG_UNIX98_PTYS=y777777+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set810778CONFIG_LEGACY_PTYS=y811779CONFIG_LEGACY_PTY_COUNT=256812780# CONFIG_HVC_RTAS is not set781781+# CONFIG_HVC_UDBG is not set813782# CONFIG_IPMI_HANDLER is not set814783# CONFIG_HW_RANDOM is not set815784# CONFIG_NVRAM is not set···879844# Miscellaneous I2C Chip support880845#881846# CONFIG_DS1682 is not set882882-# CONFIG_EEPROM_AT24 is not set883883-# CONFIG_EEPROM_LEGACY is not set884847# CONFIG_SENSORS_PCF8574 is not set885848# CONFIG_PCF8575 is not set886849# CONFIG_SENSORS_PCA9539 is not set···907874# CONFIG_SENSORS_ADT7462 is not set908875# CONFIG_SENSORS_ADT7470 is not set909876# CONFIG_SENSORS_ADT7473 is not set877877+# CONFIG_SENSORS_ADT7475 is not set910878# CONFIG_SENSORS_ATXP1 is not set911879# CONFIG_SENSORS_DS1621 is not set912880# CONFIG_SENSORS_I5K_AMB is not set···928894# CONFIG_SENSORS_LM90 is not set929895# CONFIG_SENSORS_LM92 is not set930896# CONFIG_SENSORS_LM93 is not set897897+# CONFIG_SENSORS_LTC4245 is not set931898# CONFIG_SENSORS_MAX1619 is not set932899# CONFIG_SENSORS_MAX6650 is not set933900# CONFIG_SENSORS_PC87360 is not set···988953# CONFIG_MFD_CORE is not set989954# CONFIG_MFD_SM501 is not set990955# CONFIG_HTC_PASIC3 is not set956956+# CONFIG_TWL4030_CORE is not set991957# CONFIG_MFD_TMIO is not set992958# CONFIG_PMIC_DA903X is not set993959# CONFIG_MFD_WM8400 is not set994960# CONFIG_MFD_WM8350_I2C is not set961961+# CONFIG_MFD_PCF50633 is not set995962# CONFIG_REGULATOR is not set996963997964#···10881051# CONFIG_LCD_ILI9320 is not set10891052# CONFIG_LCD_PLATFORM is not set10901053CONFIG_BACKLIGHT_CLASS_DEVICE=y10911091-# CONFIG_BACKLIGHT_CORGI is not set10541054+CONFIG_BACKLIGHT_GENERIC=y1092105510931056#10941057# Display device support···11301093CONFIG_HID_A4TECH=y11311094# CONFIG_HID_APPLE is not set11321095CONFIG_HID_BELKIN=y11331133-CONFIG_HID_BRIGHT=y11341096CONFIG_HID_CHERRY=y11351097# CONFIG_HID_CHICONY is not set11361098CONFIG_HID_CYPRESS=y11371137-CONFIG_HID_DELL=y11381099CONFIG_HID_EZKEY=y11391100# CONFIG_HID_GYRATION is not set11401101# CONFIG_HID_LOGITECH is not set11411102# CONFIG_HID_MICROSOFT is not set11421103# CONFIG_HID_MONTEREY is not set11041104+# CONFIG_HID_NTRIG is not set11431105# CONFIG_HID_PANTHERLORD is not set11441106# CONFIG_HID_PETALYNX is not set11451107# CONFIG_HID_SAMSUNG is not set11461108# CONFIG_HID_SONY is not set11471109# CONFIG_HID_SUNPLUS is not set11101110+# CONFIG_GREENASIA_FF is not set11111111+# CONFIG_HID_TOPSEED is not set11481112# CONFIG_THRUSTMASTER_FF is not set11491113# CONFIG_ZEROPLUS_FF is not set11501114CONFIG_USB_SUPPORT=y···11751137#11761138# CONFIG_USB_C67X00_HCD is not set11771139# CONFIG_USB_EHCI_HCD is not set11401140+# CONFIG_USB_OXU210HP_HCD is not set11781141# CONFIG_USB_ISP116X_HCD is not set11791142# CONFIG_USB_ISP1760_HCD is not set11801143CONFIG_USB_OHCI_HCD=y···12031164# CONFIG_USB_TMC is not set1204116512051166#12061206-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'11671167+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;12071168#1208116912091170#12101210-# may also be needed; see USB_STORAGE Help for more information11711171+# see USB_STORAGE Help for more information12111172#12121173CONFIG_USB_STORAGE=y12131174# CONFIG_USB_STORAGE_DEBUG is not set12141175# CONFIG_USB_STORAGE_DATAFAB is not set12151176# CONFIG_USB_STORAGE_FREECOM is not set12161177# CONFIG_USB_STORAGE_ISD200 is not set12171217-# CONFIG_USB_STORAGE_DPCM is not set12181178# CONFIG_USB_STORAGE_USBAT is not set12191179# CONFIG_USB_STORAGE_SDDR09 is not set12201180# CONFIG_USB_STORAGE_SDDR55 is not set···12601222# CONFIG_USB_ISIGHTFW is not set12611223# CONFIG_USB_VST is not set12621224# CONFIG_USB_GADGET is not set12251225+12261226+#12271227+# OTG and related infrastructure12281228+#12631229# CONFIG_UWB is not set12641230# CONFIG_MMC is not set12651231# CONFIG_MEMSTICK is not set···12851243# CONFIG_DMADEVICES is not set12861244# CONFIG_UIO is not set12871245# CONFIG_STAGING is not set12881288-CONFIG_STAGING_EXCLUDE_BUILD=y1289124612901247#12911248# File systems···13051264CONFIG_FILE_LOCKING=y13061265# CONFIG_XFS_FS is not set13071266# CONFIG_OCFS2_FS is not set12671267+# CONFIG_BTRFS_FS is not set13081268CONFIG_DNOTIFY=y13091269CONFIG_INOTIFY=y13101270CONFIG_INOTIFY_USER=y···13421300# CONFIG_TMPFS_POSIX_ACL is not set13431301# CONFIG_HUGETLB_PAGE is not set13441302# CONFIG_CONFIGFS_FS is not set13451345-13461346-#13471347-# Miscellaneous filesystems13481348-#13031303+CONFIG_MISC_FILESYSTEMS=y13491304# CONFIG_ADFS_FS is not set13501305# CONFIG_AFFS_FS is not set13511306# CONFIG_HFS_FS is not set···13621323CONFIG_JFFS2_RTIME=y13631324# CONFIG_JFFS2_RUBIN is not set13641325CONFIG_CRAMFS=y13261326+# CONFIG_SQUASHFS is not set13651327# CONFIG_VXFS_FS is not set13661328# CONFIG_MINIX_FS is not set13671329# CONFIG_OMFS_FS is not set···14431403# Library routines14441404#14451405CONFIG_BITREVERSE=y14061406+CONFIG_GENERIC_FIND_LAST_BIT=y14461407# CONFIG_CRC_CCITT is not set14471408# CONFIG_CRC16 is not set14481409# CONFIG_CRC_T10DIF is not set···14951454# CONFIG_DEBUG_MEMORY_INIT is not set14961455# CONFIG_DEBUG_LIST is not set14971456# CONFIG_DEBUG_SG is not set14571457+# CONFIG_DEBUG_NOTIFIERS is not set14981458# CONFIG_BOOT_PRINTK_DELAY is not set14991459# CONFIG_RCU_TORTURE_TEST is not set15001460# CONFIG_RCU_CPU_STALL_DETECTOR is not set···15041462# CONFIG_FAULT_INJECTION is not set15051463# CONFIG_LATENCYTOP is not set15061464CONFIG_HAVE_FUNCTION_TRACER=y14651465+CONFIG_HAVE_DYNAMIC_FTRACE=y14661466+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y1507146715081468#15091469# Tracers···15141470# CONFIG_SCHED_TRACER is not set15151471# CONFIG_CONTEXT_SWITCH_TRACER is not set15161472# CONFIG_BOOT_TRACER is not set14731473+# CONFIG_TRACE_BRANCH_PROFILING is not set15171474# CONFIG_STACK_TRACER is not set15181475# CONFIG_DYNAMIC_PRINTK_DEBUG is not set15191476# CONFIG_SAMPLES is not set15201477CONFIG_HAVE_ARCH_KGDB=y15211478# CONFIG_KGDB is not set14791479+CONFIG_PRINT_STACK_DEPTH=6415221480# CONFIG_DEBUG_STACKOVERFLOW is not set15231481# CONFIG_DEBUG_STACK_USAGE is not set15241482# CONFIG_DEBUG_PAGEALLOC is not set···15471501#15481502# CONFIG_CRYPTO_FIPS is not set15491503CONFIG_CRYPTO_ALGAPI=y15501550-CONFIG_CRYPTO_AEAD=y15041504+CONFIG_CRYPTO_ALGAPI2=y15051505+CONFIG_CRYPTO_AEAD2=y15511506CONFIG_CRYPTO_BLKCIPHER=y15071507+CONFIG_CRYPTO_BLKCIPHER2=y15521508CONFIG_CRYPTO_HASH=y15531553-CONFIG_CRYPTO_RNG=y15091509+CONFIG_CRYPTO_HASH2=y15101510+CONFIG_CRYPTO_RNG2=y15541511CONFIG_CRYPTO_MANAGER=y15121512+CONFIG_CRYPTO_MANAGER2=y15551513# CONFIG_CRYPTO_GF128MUL is not set15561514# CONFIG_CRYPTO_NULL is not set15571515# CONFIG_CRYPTO_CRYPTD is not set
+2-3
arch/powerpc/kernel/pci-common.c
···1616 * 2 of the License, or (at your option) any later version.1717 */18181919-#define DEBUG2020-2119#include <linux/kernel.h>2220#include <linux/pci.h>2321#include <linux/string.h>···256258 } else {257259 pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",258260 oirq.size, oirq.specifier[0], oirq.specifier[1],259259- oirq.controller->full_name);261261+ oirq.controller ? oirq.controller->full_name :262262+ "<default>");260263261264 virq = irq_create_of_mapping(oirq.controller, oirq.specifier,262265 oirq.size);
+10-14
arch/powerpc/platforms/52xx/mpc52xx_pci.c
···202021212222/* ======================================================================== */2323-/* PCI windows config */2424-/* ======================================================================== */2525-2626-#define MPC52xx_PCI_TARGET_IO 0xf00000002727-#define MPC52xx_PCI_TARGET_MEM 0x000000002828-2929-3030-/* ======================================================================== */3123/* Structures mapping & Defines for PCI Unit */3224/* ======================================================================== */3325···236244237245static void __init238246mpc52xx_pci_setup(struct pci_controller *hose,239239- struct mpc52xx_pci __iomem *pci_regs)247247+ struct mpc52xx_pci __iomem *pci_regs, phys_addr_t pci_phys)240248{241249 struct resource *res;242250 u32 tmp;···306314 /* Set all the IWCR fields at once; they're in the same reg */307315 out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));308316309309- out_be32(&pci_regs->tbatr0,310310- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );311311- out_be32(&pci_regs->tbatr1,312312- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );317317+ /* Map IMMR onto PCI bus */318318+ pci_phys &= 0xfffc0000; /* bar0 has only 14 significant bits */319319+ out_be32(&pci_regs->tbatr0, MPC52xx_PCI_TBATR_ENABLE | pci_phys);320320+ out_be32(&pci_regs->bar0, PCI_BASE_ADDRESS_MEM_PREFETCH | pci_phys);321321+322322+ /* Map memory onto PCI bus */323323+ out_be32(&pci_regs->tbatr1, MPC52xx_PCI_TBATR_ENABLE);324324+ out_be32(&pci_regs->bar1, PCI_BASE_ADDRESS_MEM_PREFETCH);313325314326 out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD | MPC52xx_PCI_TCR_WCT8);315327···410414411415 /* Finish setting up PCI using values obtained by412416 * pci_proces_bridge_OF_ranges */413413- mpc52xx_pci_setup(hose, pci_regs);417417+ mpc52xx_pci_setup(hose, pci_regs, rsrc.start);414418415419 return 0;416420}
···1594159415951595 /* kvm/qemu doesn't have mtrr set right, don't trim them all */15961596 if (!highest_pfn) {15971597- WARN(!kvm_para_available(), KERN_WARNING15981598- "WARNING: strange, CPU MTRRs all blank?\n");15971597+ printk(KERN_INFO "CPU MTRRs all blank - virtualized system.\n");15991598 return 0;16001599 }16011600
+17-14
arch/x86/kernel/ds.c
···1515 * - buffer allocation (memory accounting)1616 *1717 *1818- * Copyright (C) 2007-2008 Intel Corporation.1919- * Markus Metzger <markus.t.metzger@intel.com>, 2007-20081818+ * Copyright (C) 2007-2009 Intel Corporation.1919+ * Markus Metzger <markus.t.metzger@intel.com>, 2007-20092020 */21212222···890890}891891892892static const struct ds_configuration ds_cfg_netburst = {893893- .name = "netburst",893893+ .name = "Netburst",894894 .ctl[dsf_bts] = (1 << 2) | (1 << 3),895895 .ctl[dsf_bts_kernel] = (1 << 5),896896 .ctl[dsf_bts_user] = (1 << 6),···904904#endif905905};906906static const struct ds_configuration ds_cfg_pentium_m = {907907- .name = "pentium m",907907+ .name = "Pentium M",908908 .ctl[dsf_bts] = (1 << 6) | (1 << 7),909909910910 .sizeof_field = sizeof(long),···915915 .sizeof_rec[ds_pebs] = sizeof(long) * 18,916916#endif917917};918918-static const struct ds_configuration ds_cfg_core2 = {919919- .name = "core 2",918918+static const struct ds_configuration ds_cfg_core2_atom = {919919+ .name = "Core 2/Atom",920920 .ctl[dsf_bts] = (1 << 6) | (1 << 7),921921 .ctl[dsf_bts_kernel] = (1 << 9),922922 .ctl[dsf_bts_user] = (1 << 10),···949949 switch (c->x86) {950950 case 0x6:951951 switch (c->x86_model) {952952- case 0 ... 0xC:953953- /* sorry, don't know about them */954954- break;955955- case 0xD:956956- case 0xE: /* Pentium M */952952+ case 0x9:953953+ case 0xd: /* Pentium M */957954 ds_configure(&ds_cfg_pentium_m);958955 break;959959- default: /* Core2, Atom, ... */960960- ds_configure(&ds_cfg_core2);956956+ case 0xf:957957+ case 0x17: /* Core2 */958958+ case 0x1c: /* Atom */959959+ ds_configure(&ds_cfg_core2_atom);960960+ break;961961+ case 0x1a: /* i7 */962962+ default:963963+ /* sorry, don't know about them */961964 break;962965 }963966 break;964964- case 0xF:967967+ case 0xf:965968 switch (c->x86_model) {966969 case 0x0:967970 case 0x1:
+1
arch/x86/pci/irq.c
···572572 case PCI_DEVICE_ID_INTEL_ICH7_1:573573 case PCI_DEVICE_ID_INTEL_ICH7_30:574574 case PCI_DEVICE_ID_INTEL_ICH7_31:575575+ case PCI_DEVICE_ID_INTEL_TGP_LPC:575576 case PCI_DEVICE_ID_INTEL_ESB2_0:576577 case PCI_DEVICE_ID_INTEL_ICH8_0:577578 case PCI_DEVICE_ID_INTEL_ICH8_1:
+1-1
block/blk-barrier.c
···302302 * Description:303303 * Issue a flush for the block device in question. Caller can supply304304 * room for storing the error offset in case of a flush error, if they305305- * wish to. Caller must run wait_for_completion() on its own.305305+ * wish to.306306 */307307int blkdev_issue_flush(struct block_device *bdev, sector_t *error_sector)308308{
+63-37
block/blk-core.c
···64646565static void drive_stat_acct(struct request *rq, int new_io)6666{6767+ struct gendisk *disk = rq->rq_disk;6768 struct hd_struct *part;6869 int rw = rq_data_dir(rq);6970 int cpu;70717171- if (!blk_fs_request(rq) || !rq->rq_disk)7272+ if (!blk_fs_request(rq) || !disk || !blk_do_io_stat(disk->queue))7273 return;73747475 cpu = part_stat_lock();···600599 q->request_fn = rfn;601600 q->prep_rq_fn = NULL;602601 q->unplug_fn = generic_unplug_device;603603- q->queue_flags = (1 << QUEUE_FLAG_CLUSTER |604604- 1 << QUEUE_FLAG_STACKABLE);602602+ q->queue_flags = QUEUE_FLAG_DEFAULT;605603 q->queue_lock = lock;606604607605 blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);···1125112511261126 if (bio_sync(bio))11271127 req->cmd_flags |= REQ_RW_SYNC;11281128+ if (bio_unplug(bio))11291129+ req->cmd_flags |= REQ_UNPLUG;11281130 if (bio_rw_meta(bio))11291131 req->cmd_flags |= REQ_RW_META;11301132···11431141 int el_ret, nr_sectors;11441142 const unsigned short prio = bio_prio(bio);11451143 const int sync = bio_sync(bio);11441144+ const int unplug = bio_unplug(bio);11461145 int rw_flags;1147114611481147 nr_sectors = bio_sectors(bio);···12471244 blk_plug_device(q);12481245 add_request(q, req);12491246out:12501250- if (sync || blk_queue_nonrot(q))12471247+ if (unplug || blk_queue_nonrot(q))12511248 __generic_unplug_device(q);12521249 spin_unlock_irq(q->queue_lock);12531250 return 0;···14481445 goto end_io;1449144614501447 if (bio_discard(bio) && !q->prepare_discard_fn) {14481448+ err = -EOPNOTSUPP;14491449+ goto end_io;14501450+ }14511451+ if (bio_barrier(bio) && bio_has_data(bio) &&14521452+ (q->next_ordered == QUEUE_ORDERED_NONE)) {14511453 err = -EOPNOTSUPP;14521454 goto end_io;14531455 }···16631655}16641656EXPORT_SYMBOL(blkdev_dequeue_request);1665165716581658+static void blk_account_io_completion(struct request *req, unsigned int bytes)16591659+{16601660+ struct gendisk *disk = req->rq_disk;16611661+16621662+ if (!disk || !blk_do_io_stat(disk->queue))16631663+ return;16641664+16651665+ if (blk_fs_request(req)) {16661666+ const int rw = rq_data_dir(req);16671667+ struct hd_struct *part;16681668+ int cpu;16691669+16701670+ cpu = part_stat_lock();16711671+ part = disk_map_sector_rcu(req->rq_disk, req->sector);16721672+ part_stat_add(cpu, part, sectors[rw], bytes >> 9);16731673+ part_stat_unlock();16741674+ }16751675+}16761676+16771677+static void blk_account_io_done(struct request *req)16781678+{16791679+ struct gendisk *disk = req->rq_disk;16801680+16811681+ if (!disk || !blk_do_io_stat(disk->queue))16821682+ return;16831683+16841684+ /*16851685+ * Account IO completion. bar_rq isn't accounted as a normal16861686+ * IO on queueing nor completion. Accounting the containing16871687+ * request is enough.16881688+ */16891689+ if (blk_fs_request(req) && req != &req->q->bar_rq) {16901690+ unsigned long duration = jiffies - req->start_time;16911691+ const int rw = rq_data_dir(req);16921692+ struct hd_struct *part;16931693+ int cpu;16941694+16951695+ cpu = part_stat_lock();16961696+ part = disk_map_sector_rcu(disk, req->sector);16971697+16981698+ part_stat_inc(cpu, part, ios[rw]);16991699+ part_stat_add(cpu, part, ticks[rw], duration);17001700+ part_round_stats(cpu, part);17011701+ part_dec_in_flight(part);17021702+17031703+ part_stat_unlock();17041704+ }17051705+}17061706+16661707/**16671708 * __end_that_request_first - end I/O on a request16681709 * @req: the request being processed···17471690 (unsigned long long)req->sector);17481691 }1749169217501750- if (blk_fs_request(req) && req->rq_disk) {17511751- const int rw = rq_data_dir(req);17521752- struct hd_struct *part;17531753- int cpu;17541754-17551755- cpu = part_stat_lock();17561756- part = disk_map_sector_rcu(req->rq_disk, req->sector);17571757- part_stat_add(cpu, part, sectors[rw], nr_bytes >> 9);17581758- part_stat_unlock();17591759- }16931693+ blk_account_io_completion(req, nr_bytes);1760169417611695 total_bytes = bio_nbytes = 0;17621696 while ((bio = req->bio) != NULL) {···18271779 */18281780static void end_that_request_last(struct request *req, int error)18291781{18301830- struct gendisk *disk = req->rq_disk;18311831-18321782 if (blk_rq_tagged(req))18331783 blk_queue_end_tag(req->q, req);18341784···1838179218391793 blk_delete_timer(req);1840179418411841- /*18421842- * Account IO completion. bar_rq isn't accounted as a normal18431843- * IO on queueing nor completion. Accounting the containing18441844- * request is enough.18451845- */18461846- if (disk && blk_fs_request(req) && req != &req->q->bar_rq) {18471847- unsigned long duration = jiffies - req->start_time;18481848- const int rw = rq_data_dir(req);18491849- struct hd_struct *part;18501850- int cpu;18511851-18521852- cpu = part_stat_lock();18531853- part = disk_map_sector_rcu(disk, req->sector);18541854-18551855- part_stat_inc(cpu, part, ios[rw]);18561856- part_stat_add(cpu, part, ticks[rw], duration);18571857- part_round_stats(cpu, part);18581858- part_dec_in_flight(part);18591859-18601860- part_stat_unlock();18611861- }17951795+ blk_account_io_done(req);1862179618631797 if (req->end_io)18641798 req->end_io(req, error);
+14-11
block/blk-integrity.c
···309309/**310310 * blk_integrity_register - Register a gendisk as being integrity-capable311311 * @disk: struct gendisk pointer to make integrity-aware312312- * @template: integrity profile312312+ * @template: optional integrity profile to register313313 *314314 * Description: When a device needs to advertise itself as being able315315 * to send/receive integrity metadata it must use this function to316316 * register the capability with the block layer. The template is a317317 * blk_integrity struct with values appropriate for the underlying318318- * hardware. See Documentation/block/data-integrity.txt.318318+ * hardware. If template is NULL the new profile is allocated but319319+ * not filled out. See Documentation/block/data-integrity.txt.319320 */320321int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)321322{322323 struct blk_integrity *bi;323324324325 BUG_ON(disk == NULL);325325- BUG_ON(template == NULL);326326327327 if (disk->integrity == NULL) {328328 bi = kmem_cache_alloc(integrity_cachep,329329- GFP_KERNEL | __GFP_ZERO);329329+ GFP_KERNEL | __GFP_ZERO);330330 if (!bi)331331 return -1;332332···346346 bi = disk->integrity;347347348348 /* Use the provided profile as template */349349- bi->name = template->name;350350- bi->generate_fn = template->generate_fn;351351- bi->verify_fn = template->verify_fn;352352- bi->tuple_size = template->tuple_size;353353- bi->set_tag_fn = template->set_tag_fn;354354- bi->get_tag_fn = template->get_tag_fn;355355- bi->tag_size = template->tag_size;349349+ if (template != NULL) {350350+ bi->name = template->name;351351+ bi->generate_fn = template->generate_fn;352352+ bi->verify_fn = template->verify_fn;353353+ bi->tuple_size = template->tuple_size;354354+ bi->set_tag_fn = template->set_tag_fn;355355+ bi->get_tag_fn = template->get_tag_fn;356356+ bi->tag_size = template->tag_size;357357+ } else358358+ bi->name = "unsupported";356359357360 return 0;358361}
···108108#endif109109}110110111111+static inline int blk_do_io_stat(struct request_queue *q)112112+{113113+ if (q)114114+ return blk_queue_io_stat(q);115115+116116+ return 0;117117+}118118+111119#endif
+21-51
block/blktrace.c
···187187188188static struct dentry *blk_tree_root;189189static DEFINE_MUTEX(blk_tree_mutex);190190-static unsigned int root_users;191191-192192-static inline void blk_remove_root(void)193193-{194194- if (blk_tree_root) {195195- debugfs_remove(blk_tree_root);196196- blk_tree_root = NULL;197197- }198198-}199199-200200-static void blk_remove_tree(struct dentry *dir)201201-{202202- mutex_lock(&blk_tree_mutex);203203- debugfs_remove(dir);204204- if (--root_users == 0)205205- blk_remove_root();206206- mutex_unlock(&blk_tree_mutex);207207-}208208-209209-static struct dentry *blk_create_tree(const char *blk_name)210210-{211211- struct dentry *dir = NULL;212212- int created = 0;213213-214214- mutex_lock(&blk_tree_mutex);215215-216216- if (!blk_tree_root) {217217- blk_tree_root = debugfs_create_dir("block", NULL);218218- if (!blk_tree_root)219219- goto err;220220- created = 1;221221- }222222-223223- dir = debugfs_create_dir(blk_name, blk_tree_root);224224- if (dir)225225- root_users++;226226- else {227227- /* Delete root only if we created it */228228- if (created)229229- blk_remove_root();230230- }231231-232232-err:233233- mutex_unlock(&blk_tree_mutex);234234- return dir;235235-}236190237191static void blk_trace_cleanup(struct blk_trace *bt)238192{239239- relay_close(bt->rchan);240193 debugfs_remove(bt->msg_file);241194 debugfs_remove(bt->dropped_file);242242- blk_remove_tree(bt->dir);195195+ relay_close(bt->rchan);243196 free_percpu(bt->sequence);244197 free_percpu(bt->msg_data);245198 kfree(bt);···299346300347static int blk_remove_buf_file_callback(struct dentry *dentry)301348{349349+ struct dentry *parent = dentry->d_parent;302350 debugfs_remove(dentry);351351+352352+ /*353353+ * this will fail for all but the last file, but that is ok. what we354354+ * care about is the top level buts->name directory going away, when355355+ * the last trace file is gone. Then we don't have to rmdir() that356356+ * manually on trace stop, so it nicely solves the issue with357357+ * force killing of running traces.358358+ */359359+360360+ debugfs_remove(parent);303361 return 0;304362}305363···368404 goto err;369405370406 ret = -ENOENT;371371- dir = blk_create_tree(buts->name);407407+408408+ if (!blk_tree_root) {409409+ blk_tree_root = debugfs_create_dir("block", NULL);410410+ if (!blk_tree_root)411411+ return -ENOMEM;412412+ }413413+414414+ dir = debugfs_create_dir(buts->name, blk_tree_root);415415+372416 if (!dir)373417 goto err;374418···430458 atomic_dec(&blk_probes_ref);431459 mutex_unlock(&blk_probe_mutex);432460err:433433- if (dir)434434- blk_remove_tree(dir);435461 if (bt) {436462 if (bt->msg_file)437463 debugfs_remove(bt->msg_file);
+38-1
block/cfq-iosched.c
···8484 */8585 struct cfq_rb_root service_tree;8686 unsigned int busy_queues;8787+ /*8888+ * Used to track any pending rt requests so we can pre-empt current8989+ * non-RT cfqq in service when this value is non-zero.9090+ */9191+ unsigned int busy_rt_queues;87928893 int rq_in_driver;8994 int sync_flight;···567562 BUG_ON(cfq_cfqq_on_rr(cfqq));568563 cfq_mark_cfqq_on_rr(cfqq);569564 cfqd->busy_queues++;565565+ if (cfq_class_rt(cfqq))566566+ cfqd->busy_rt_queues++;570567571568 cfq_resort_rr_list(cfqd, cfqq);572569}···588581589582 BUG_ON(!cfqd->busy_queues);590583 cfqd->busy_queues--;584584+ if (cfq_class_rt(cfqq))585585+ cfqd->busy_rt_queues--;591586}592587593588/*···10141005 goto expire;1015100610161007 /*10081008+ * If we have a RT cfqq waiting, then we pre-empt the current non-rt10091009+ * cfqq.10101010+ */10111011+ if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues) {10121012+ /*10131013+ * We simulate this as cfqq timed out so that it gets to bank10141014+ * the remaining of its time slice.10151015+ */10161016+ cfq_log_cfqq(cfqd, cfqq, "preempt");10171017+ cfq_slice_expired(cfqd, 1);10181018+ goto new_queue;10191019+ }10201020+10211021+ /*10171022 * The active queue has requests and isn't expired, allow it to10181023 * dispatch.10191024 */···10881065 }1089106610901067 if (RB_EMPTY_ROOT(&cfqq->sort_list))10681068+ break;10691069+10701070+ /*10711071+ * If there is a non-empty RT cfqq waiting for current10721072+ * cfqq's timeslice to complete, pre-empt this cfqq10731073+ */10741074+ if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues)10911075 break;1092107610931077 } while (dispatched < max_dispatch);···18311801 if (rq_is_meta(rq) && !cfqq->meta_pending)18321802 return 1;1833180318041804+ /*18051805+ * Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice.18061806+ */18071807+ if (cfq_class_rt(new_cfqq) && !cfq_class_rt(cfqq))18081808+ return 1;18091809+18341810 if (!cfqd->active_cic || !cfq_cfqq_wait_request(cfqq))18351811 return 0;18361812···19061870 /*19071871 * not the active queue - expire current slice if it is19081872 * idle and has expired it's mean thinktime or this new queue19091909- * has some old slice time left and is of higher priority18731873+ * has some old slice time left and is of higher priority or18741874+ * this new queue is RT and the current one is BE19101875 */19111876 cfq_preempt_queue(cfqd, cfqq);19121877 cfq_mark_cfqq_must_dispatch(cfqq);
+1-1
drivers/char/selection.c
···268268269269 /* Allocate a new buffer before freeing the old one ... */270270 multiplier = use_unicode ? 3 : 1; /* chars can take up to 3 bytes */271271- bp = kmalloc((sel_end-sel_start)/2*multiplier+1, GFP_KERNEL);271271+ bp = kmalloc(((sel_end-sel_start)/2+1)*multiplier, GFP_KERNEL);272272 if (!bp) {273273 printk(KERN_WARNING "selection: kmalloc() failed\n");274274 clear_selection();
+1-1
drivers/gpu/drm/drm_gem.c
···136136 obj = kcalloc(1, sizeof(*obj), GFP_KERNEL);137137138138 obj->dev = dev;139139- obj->filp = shmem_file_setup("drm mm object", size, 0);139139+ obj->filp = shmem_file_setup("drm mm object", size, VM_NORESERVE);140140 if (IS_ERR(obj->filp)) {141141 kfree(obj);142142 return NULL;
+10
drivers/ide/Kconfig
···465465466466 It is safe to say Y to this question.467467468468+config BLK_DEV_CS5536469469+ tristate "CS5536 chipset support"470470+ depends on X86_32471471+ select BLK_DEV_IDEDMA_PCI472472+ help473473+ This option enables support for the AMD CS5536474474+ companion chip used with the Geode LX processor family.475475+476476+ If unsure, say N.477477+468478config BLK_DEV_HPT366469479 tristate "HPT36X/37X chipset support"470480 select BLK_DEV_IDEDMA_PCI
···657657{658658 struct mxl5007t_state *state = fe->tuner_priv;659659 int rf_locked, ref_locked;660660- s32 rf_input_level;660660+ s32 rf_input_level = 0;661661 int ret;662662663663 if (fe->ops.i2c_gate_ctrl)
+21-3
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
···9393 /* current state of the CAM */9494 int slot_state;95959696+ /* mutex used for serializing access to one CI slot */9797+ struct mutex slot_lock;9898+9699 /* Number of CAMCHANGES that have occurred since last processing */97100 atomic_t camchange_count;98101···714711 dprintk("%s\n", __func__);715712716713717717- // sanity check714714+ /* sanity check */718715 if (bytes_write > ca->slot_info[slot].link_buf_size)719716 return -EINVAL;720717721721- /* check if interface is actually waiting for us to read from it, or if a read is in progress */718718+ /* it is possible we are dealing with a single buffer implementation,719719+ thus if there is data available for read or if there is even a read720720+ already in progress, we do nothing but awake the kernel thread to721721+ process the data if necessary. */722722 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0)723723 goto exitnowrite;724724 if (status & (STATUSREG_DA | STATUSREG_RE)) {725725+ if (status & STATUSREG_DA)726726+ dvb_ca_en50221_thread_wakeup(ca);727727+725728 status = -EAGAIN;726729 goto exitnowrite;727730 }···996987 /* go through all the slots processing them */997988 for (slot = 0; slot < ca->slot_count; slot++) {998989990990+ mutex_lock(&ca->slot_info[slot].slot_lock);991991+999992 // check the cam status + deal with CAMCHANGEs1000993 while (dvb_ca_en50221_check_camstatus(ca, slot)) {1001994 /* clear down an old CI slot if necessary */···1133112211341123 case DVB_CA_SLOTSTATE_RUNNING:11351124 if (!ca->open)11361136- continue;11251125+ break;1137112611381127 // poll slots for data11391128 pktcount = 0;···11571146 }11581147 break;11591148 }11491149+11501150+ mutex_unlock(&ca->slot_info[slot].slot_lock);11601151 }11611152 }11621153···11941181 switch (cmd) {11951182 case CA_RESET:11961183 for (slot = 0; slot < ca->slot_count; slot++) {11841184+ mutex_lock(&ca->slot_info[slot].slot_lock);11971185 if (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_NONE) {11981186 dvb_ca_en50221_slot_shutdown(ca, slot);11991187 if (ca->flags & DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE)···12021188 slot,12031189 DVB_CA_EN50221_CAMCHANGE_INSERTED);12041190 }11911191+ mutex_unlock(&ca->slot_info[slot].slot_lock);12051192 }12061193 ca->next_read_slot = 0;12071194 dvb_ca_en50221_thread_wakeup(ca);···13231308 goto exit;13241309 }1325131013111311+ mutex_lock(&ca->slot_info[slot].slot_lock);13261312 status = dvb_ca_en50221_write_data(ca, slot, fragbuf, fraglen + 2);13131313+ mutex_unlock(&ca->slot_info[slot].slot_lock);13271314 if (status == (fraglen + 2)) {13281315 written = 1;13291316 break;···16811664 ca->slot_info[i].slot_state = DVB_CA_SLOTSTATE_NONE;16821665 atomic_set(&ca->slot_info[i].camchange_count, 0);16831666 ca->slot_info[i].camchange_type = DVB_CA_EN50221_CAMCHANGE_REMOVED;16671667+ mutex_init(&ca->slot_info[i].slot_lock);16841668 }1685166916861670 if (signal_pending(current)) {
+4-2
drivers/media/dvb/dvb-core/dvb_ca_en50221.h
···4545 /* the module owning this structure */4646 struct module* owner;47474848- /* NOTE: the read_*, write_* and poll_slot_status functions must use locks as4949- * they may be called from several threads at once */4848+ /* NOTE: the read_*, write_* and poll_slot_status functions will be4949+ * called for different slots concurrently and need to use locks where5050+ * and if appropriate. There will be no concurrent access to one slot.5151+ */50525153 /* functions for accessing attribute memory on the CAM */5254 int (*read_attribute_mem)(struct dvb_ca_en50221* ca, int slot, int address);
+1-1
drivers/media/dvb/dvb-usb/af9005-fe.c
···220220 u16 * abort_count)221221{222222 u32 loc_cw_count = 0, loc_err_count;223223- u16 loc_abort_count;223223+ u16 loc_abort_count = 0;224224 int ret;225225226226 ret =
+24-6
drivers/media/dvb/dvb-usb/af9015.c
···694694695695 /* IR remote controller */696696 req.addr = AF9015_EEPROM_IR_MODE;697697- ret = af9015_rw_udev(udev, &req);697697+ /* first message will timeout often due to possible hw bug */698698+ for (i = 0; i < 4; i++) {699699+ ret = af9015_rw_udev(udev, &req);700700+ if (!ret)701701+ break;702702+ }698703 if (ret)699704 goto error;700705 deb_info("%s: IR mode:%d\n", __func__, val);···840835 if (!dvb_usb_af9015_dual_mode)841836 af9015_config.dual_mode = 0;842837843843- /* set buffer size according to USB port speed */838838+ /* Set adapter0 buffer size according to USB port speed, adapter1 buffer839839+ size can be static because it is enabled only USB2.0 */844840 for (i = 0; i < af9015_properties_count; i++) {845841 /* USB1.1 set smaller buffersize and disable 2nd adapter */846842 if (udev->speed == USB_SPEED_FULL) {847847- af9015_properties[i].adapter->stream.u.bulk.buffersize =848848- TS_USB11_MAX_PACKET_SIZE;843843+ af9015_properties[i].adapter[0].stream.u.bulk.buffersize844844+ = TS_USB11_MAX_PACKET_SIZE;849845 /* disable 2nd adapter because we don't have850846 PID-filters */851847 af9015_config.dual_mode = 0;852848 } else {853853- af9015_properties[i].adapter->stream.u.bulk.buffersize =854854- TS_USB20_MAX_PACKET_SIZE;849849+ af9015_properties[i].adapter[0].stream.u.bulk.buffersize850850+ = TS_USB20_MAX_PACKET_SIZE;855851 }856852 }857853···12601254 .type = USB_BULK,12611255 .count = 6,12621256 .endpoint = 0x85,12571257+ .u = {12581258+ .bulk = {12591259+ .buffersize =12601260+ TS_USB20_MAX_PACKET_SIZE,12611261+ }12621262+ }12631263 },12641264 }12651265 },···13651353 .type = USB_BULK,13661354 .count = 6,13671355 .endpoint = 0x85,13561356+ .u = {13571357+ .bulk = {13581358+ .buffersize =13591359+ TS_USB20_MAX_PACKET_SIZE,13601360+ }13611361+ }13681362 },13691363 }13701364 },
···545545546546 s5h1409_enable_modulation(fe, p->u.vsb.modulation);547547548548- /* Allow the demod to settle */549549- msleep(100);550550-551548 if (fe->ops.tuner_ops.set_params) {552549 if (fe->ops.i2c_gate_ctrl)553550 fe->ops.i2c_gate_ctrl(fe, 1);···558561 s5h1409_set_qam_amhum_mode(fe);559562 s5h1409_set_qam_interleave_mode(fe);560563 }564564+565565+ /* Issue a reset to the demod so it knows to resync against the566566+ newly tuned frequency */567567+ s5h1409_softreset(fe);561568562569 return 0;563570}
+3
drivers/media/dvb/frontends/stb0899_algo.c
···3131 return n;3232}33333434+#if 03535+/* These functions are currently unused */3436/*3537 * stb0899_calc_srate3638 * Compute symbol rate···65636664 return stb0899_calc_srate(internal->master_clk, sfr);6765}6666+#endif68676968/*7069 * stb0899_set_srate
···13841384static int ttusb_dec_init_stb(struct ttusb_dec *dec)13851385{13861386 int result;13871387- unsigned int mode, model, version;13871387+ unsigned int mode = 0, model = 0, version = 0;1388138813891389 dprintk("%s\n", __func__);13901390
···15861586 lock_kernel();15871587 list_for_each(list, &cx23885_devlist) {15881588 h = list_entry(list, struct cx23885_dev, devlist);15891589- if (h->v4l_device->minor == minor) {15891589+ if (h->v4l_device &&15901590+ h->v4l_device->minor == minor) {15901591 dev = h;15911592 break;15921593 }
+3-2
drivers/media/video/cx23885/cx23885-video.c
···730730 lock_kernel();731731 list_for_each(list, &cx23885_devlist) {732732 h = list_entry(list, struct cx23885_dev, devlist);733733- if (h->video_dev->minor == minor) {733733+ if (h->video_dev &&734734+ h->video_dev->minor == minor) {734735 dev = h;735736 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;736737 }737738 if (h->vbi_dev &&738738- h->vbi_dev->minor == minor) {739739+ h->vbi_dev->minor == minor) {739740 dev = h;740741 type = V4L2_BUF_TYPE_VBI_CAPTURE;741742 }
+8
drivers/media/video/cx25840/cx25840-core.c
···1382138213831383static int cx25840_command(struct i2c_client *client, unsigned cmd, void *arg)13841384{13851385+ /* ignore this command */13861386+ if (cmd == TUNER_SET_TYPE_ADDR || cmd == TUNER_SET_CONFIG)13871387+ return 0;13881388+13891389+ /* Old-style drivers rely on initialization on first use, so13901390+ call the init whenever a command is issued to this driver.13911391+ New-style drivers using v4l2_subdev should call init explicitly. */13921392+ cx25840_init(i2c_get_clientdata(client), 0);13851393 return v4l2_subdev_command(i2c_get_clientdata(client), cmd, arg);13861394}13871395
+42-38
drivers/media/video/cx88/cx88-dvb.c
···614614 .set_ts_params = cx24116_set_ts_param,615615};616616617617+static int cx8802_alloc_frontends(struct cx8802_dev *dev)618618+{619619+ struct cx88_core *core = dev->core;620620+ struct videobuf_dvb_frontend *fe = NULL;621621+ int i;622622+623623+ mutex_init(&dev->frontends.lock);624624+ INIT_LIST_HEAD(&dev->frontends.felist);625625+626626+ if (!core->board.num_frontends)627627+ return -ENODEV;628628+629629+ printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,630630+ core->board.num_frontends);631631+ for (i = 1; i <= core->board.num_frontends; i++) {632632+ fe = videobuf_dvb_alloc_frontend(&dev->frontends, i);633633+ if (!fe) {634634+ printk(KERN_ERR "%s() failed to alloc\n", __func__);635635+ videobuf_dvb_dealloc_frontends(&dev->frontends);636636+ return -ENOMEM;637637+ }638638+ }639639+ return 0;640640+}641641+617642static int dvb_register(struct cx8802_dev *dev)618643{619644 struct cx88_core *core = dev->core;620645 struct videobuf_dvb_frontend *fe0, *fe1 = NULL;621646 int mfe_shared = 0; /* bus not shared by default */622622- int i;623647624648 if (0 != core->i2c_rc) {625649 printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);626650 goto frontend_detach;627627- }628628-629629- if (!core->board.num_frontends)630630- return -EINVAL;631631-632632- mutex_init(&dev->frontends.lock);633633- INIT_LIST_HEAD(&dev->frontends.felist);634634-635635- printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,636636- core->board.num_frontends);637637- for (i = 1; i <= core->board.num_frontends; i++) {638638- fe0 = videobuf_dvb_alloc_frontend(&dev->frontends, i);639639- if (!fe0) {640640- printk(KERN_ERR "%s() failed to alloc\n", __func__);641641- videobuf_dvb_dealloc_frontends(&dev->frontends);642642- goto frontend_detach;643643- }644651 }645652646653 /* Get the first frontend */···12501243 struct cx88_core *core = drv->core;12511244 struct cx8802_dev *dev = drv->core->dvbdev;12521245 int err;12461246+ struct videobuf_dvb_frontend *fe;12471247+ int i;1253124812541249 dprintk( 1, "%s\n", __func__);12551250 dprintk( 1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",···12671258 /* If vp3054 isn't enabled, a stub will just return 0 */12681259 err = vp3054_i2c_probe(dev);12691260 if (0 != err)12701270- goto fail_probe;12611261+ goto fail_core;1271126212721263 /* dvb stuff */12731264 printk(KERN_INFO "%s/2: cx2388x based DVB/ATSC card\n", core->name);12741265 dev->ts_gen_cntrl = 0x0c;1275126612761276- err = -ENODEV;12771277- if (core->board.num_frontends) {12781278- struct videobuf_dvb_frontend *fe;12791279- int i;12671267+ err = cx8802_alloc_frontends(dev);12681268+ if (err)12691269+ goto fail_core;1280127012811281- for (i = 1; i <= core->board.num_frontends; i++) {12821282- fe = videobuf_dvb_get_frontend(&core->dvbdev->frontends, i);12831283- if (fe == NULL) {12841284- printk(KERN_ERR "%s() failed to get frontend(%d)\n",12711271+ err = -ENODEV;12721272+ for (i = 1; i <= core->board.num_frontends; i++) {12731273+ fe = videobuf_dvb_get_frontend(&core->dvbdev->frontends, i);12741274+ if (fe == NULL) {12751275+ printk(KERN_ERR "%s() failed to get frontend(%d)\n",12851276 __func__, i);12861286- goto fail_probe;12871287- }12881288- videobuf_queue_sg_init(&fe->dvb.dvbq, &dvb_qops,12771277+ goto fail_probe;12781278+ }12791279+ videobuf_queue_sg_init(&fe->dvb.dvbq, &dvb_qops,12891280 &dev->pci->dev, &dev->slock,12901281 V4L2_BUF_TYPE_VIDEO_CAPTURE,12911282 V4L2_FIELD_TOP,12921283 sizeof(struct cx88_buffer),12931284 dev);12941294- /* init struct videobuf_dvb */12951295- fe->dvb.name = dev->core->name;12961296- }12971297- } else {12981298- /* no frontends allocated */12991299- printk(KERN_ERR "%s/2 .num_frontends should be non-zero\n",13001300- core->name);13011301- goto fail_core;12851285+ /* init struct videobuf_dvb */12861286+ fe->dvb.name = dev->core->name;13021287 }12881288+13031289 err = dvb_register(dev);13041290 if (err)13051291 /* frontends/adapter de-allocated in dvb_register */
+1-1
drivers/media/video/cx88/cx88.h
···336336 /* config info -- dvb */337337#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)338338 int (*prev_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage);339339- void (*gate_ctrl)(struct cx88_core *core, int open);340339#endif340340+ void (*gate_ctrl)(struct cx88_core *core, int open);341341342342 /* state info */343343 struct task_struct *kthread;
+12-2
drivers/media/video/em28xx/em28xx-audio.c
···62626363 dprintk("Stopping isoc\n");6464 for (i = 0; i < EM28XX_AUDIO_BUFS; i++) {6565- usb_unlink_urb(dev->adev.urb[i]);6565+ if (!irqs_disabled())6666+ usb_kill_urb(dev->adev.urb[i]);6767+ else6868+ usb_unlink_urb(dev->adev.urb[i]);6669 usb_free_urb(dev->adev.urb[i]);6770 dev->adev.urb[i] = NULL;7171+7272+ kfree(dev->adev.transfer_buffer[i]);7373+ dev->adev.transfer_buffer[i] = NULL;6874 }69757076 return 0;···395389static snd_pcm_uframes_t snd_em28xx_capture_pointer(struct snd_pcm_substream396390 *substream)397391{398398- struct em28xx *dev;392392+ unsigned long flags;399393394394+ struct em28xx *dev;400395 snd_pcm_uframes_t hwptr_done;396396+401397 dev = snd_pcm_substream_chip(substream);398398+ spin_lock_irqsave(&dev->adev.slock, flags);402399 hwptr_done = dev->adev.hwptr_done_capture;400400+ spin_unlock_irqrestore(&dev->adev.slock, flags);403401404402 return hwptr_done;405403}
···438438 if (dev->audio_mode.ac97 != EM28XX_NO_AC97) {439439 int vol;440440441441+ em28xx_write_ac97(dev, AC97_POWER_DOWN_CTRL, 0x4200);442442+ em28xx_write_ac97(dev, AC97_EXT_AUD_CTRL, 0x0031);443443+ em28xx_write_ac97(dev, AC97_PCM_IN_SRATE, 0xbb80);444444+441445 /* LSB: left channel - both channels with the same level */442446 vol = (0x1f - dev->volume) | ((0x1f - dev->volume) << 8);443447···457453 if (ret < 0)458454 em28xx_warn("couldn't setup AC97 register %d\n",459455 outputs[i].reg);456456+ }457457+458458+ if (dev->ctl_aoutput & EM28XX_AOUT_PCM_IN) {459459+ int sel = ac97_return_record_select(dev->ctl_aoutput);460460+461461+ /* Use the same input for both left and right channels */462462+ sel |= (sel << 8);463463+464464+ em28xx_write_ac97(dev, AC97_RECORD_SELECT, sel);460465 }461466 }462467···860847 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {861848 urb = dev->isoc_ctl.urb[i];862849 if (urb) {863863- usb_kill_urb(urb);864864- usb_unlink_urb(urb);850850+ if (!irqs_disabled())851851+ usb_kill_urb(urb);852852+ else853853+ usb_unlink_urb(urb);854854+865855 if (dev->isoc_ctl.transfer_buffer[i]) {866856 usb_buffer_free(dev->udev,867857 urb->transfer_buffer_length,
+19-1
drivers/media/video/em28xx/em28xx-dvb.c
···28282929#include "lgdt330x.h"3030#include "zl10353.h"3131+#include "s5h1409.h"3132#ifdef EM28XX_DRX397XD_SUPPORT3233#include "drx397xD.h"3334#endif···233232 .if2 = 45600,234233};235234235235+static struct s5h1409_config em28xx_s5h1409_with_xc3028 = {236236+ .demod_address = 0x32 >> 1,237237+ .output_mode = S5H1409_PARALLEL_OUTPUT,238238+ .gpio = S5H1409_GPIO_OFF,239239+ .inversion = S5H1409_INVERSION_OFF,240240+ .status_mode = S5H1409_DEMODLOCKING,241241+ .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK242242+};243243+236244#ifdef EM28XX_DRX397XD_SUPPORT237245/* [TODO] djh - not sure yet what the device config needs to contain */238246static struct drx397xD_config em28xx_drx397xD_with_xc3028 = {···422412 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850:423413 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:424414 case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:425425- case EM2883_BOARD_KWORLD_HYBRID_A316:426415 case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:427416 dvb->frontend = dvb_attach(lgdt330x_attach,428417 &em2880_lgdt3303_dev,···436427 case EM2880_BOARD_KWORLD_DVB_310U:437428 dvb->frontend = dvb_attach(zl10353_attach,438429 &em28xx_zl10353_with_xc3028,430430+ &dev->i2c_adap);431431+ if (attach_xc3028(0x61, dev) < 0) {432432+ result = -EINVAL;433433+ goto out_free;434434+ }435435+ break;436436+ case EM2883_BOARD_KWORLD_HYBRID_330U:437437+ dvb->frontend = dvb_attach(s5h1409_attach,438438+ &em28xx_s5h1409_with_xc3028,439439 &dev->i2c_adap);440440 if (attach_xc3028(0x61, dev) < 0) {441441 result = -EINVAL;
+29-22
drivers/media/video/em28xx/em28xx-video.c
···886886 if (0 == INPUT(i)->type)887887 return -EINVAL;888888889889+ dev->ctl_input = i;890890+889891 mutex_lock(&dev->lock);890890-891891- video_mux(dev, i);892892-892892+ video_mux(dev, dev->ctl_input);893893 mutex_unlock(&dev->lock);894894 return 0;895895}···938938{939939 struct em28xx_fh *fh = priv;940940 struct em28xx *dev = fh->dev;941941+942942+943943+ if (a->index >= MAX_EM28XX_INPUT)944944+ return -EINVAL;945945+ if (0 == INPUT(a->index)->type)946946+ return -EINVAL;941947942948 mutex_lock(&dev->lock);943949···1956195019571951int em28xx_register_analog_devices(struct em28xx *dev)19581952{19531953+ u8 val;19591954 int ret;1960195519611956 printk(KERN_INFO "%s: v4l2 driver version %d.%d.%d\n",19621957 dev->name,19631958 (EM28XX_VERSION_CODE >> 16) & 0xff,19641959 (EM28XX_VERSION_CODE >> 8) & 0xff, EM28XX_VERSION_CODE & 0xff);19651965-19661966- /* Analog specific initialization */19671967- dev->format = &format[0];19681968- video_mux(dev, 0);19691969-19701970- /* enable vbi capturing */19711971-19721972-/* em28xx_write_reg(dev, EM28XX_R0E_AUDIOSRC, 0xc0); audio register */19731973-/* em28xx_write_reg(dev, EM28XX_R0F_XCLK, 0x80); clk register */19741974- em28xx_write_reg(dev, EM28XX_R11_VINCTRL, 0x51);19751975-19761976- dev->mute = 1; /* maybe not the right place... */19771977- dev->volume = 0x1f;19781978-19791979- em28xx_set_outfmt(dev);19801980- em28xx_colorlevels_set_default(dev);19811981- em28xx_compression_disable(dev);1982196019831961 /* set default norm */19841962 dev->norm = em28xx_video_template.current_norm;···19711981 dev->interlaced = EM28XX_INTERLACED_DEFAULT;19721982 dev->hscale = 0;19731983 dev->vscale = 0;19841984+ dev->ctl_input = 0;1974198519751975- /* FIXME: This is a very bad hack! Not all devices have TV on input 2 */19761976- dev->ctl_input = 2;19861986+ /* Analog specific initialization */19871987+ dev->format = &format[0];19881988+ video_mux(dev, dev->ctl_input);19891989+19901990+ /* Audio defaults */19911991+ dev->mute = 1;19921992+ dev->volume = 0x1f;19931993+19941994+ /* enable vbi capturing */19951995+19961996+/* em28xx_write_reg(dev, EM28XX_R0E_AUDIOSRC, 0xc0); audio register */19971997+ val = (u8)em28xx_read_reg(dev, EM28XX_R0F_XCLK);19981998+ em28xx_write_reg(dev, EM28XX_R0F_XCLK, (EM28XX_XCLK_AUDIO_UNMUTE | val));19991999+ em28xx_write_reg(dev, EM28XX_R11_VINCTRL, 0x51);20002000+20012001+ em28xx_set_outfmt(dev);20022002+ em28xx_colorlevels_set_default(dev);20032003+ em28xx_compression_disable(dev);1977200419782005 /* allocate and fill video video_device struct */19792006 dev->vdev = em28xx_vdev_init(dev, &em28xx_video_template, "video");
···949949 itv->instance = atomic_inc_return(&ivtv_instance) - 1;950950951951 retval = v4l2_device_register(&dev->dev, &itv->device);952952- if (retval)952952+ if (retval) {953953+ kfree(itv);953954 return retval;955955+ }954956 /* "ivtv + PCI ID" is a bit of a mouthful, so use955957 "ivtv + instance" instead. */956958 snprintf(itv->device.name, sizeof(itv->device.name),
···11/*22 * uvc_ctrl.c -- USB Video Class driver - Controls33 *44- * Copyright (C) 2005-200844+ * Copyright (C) 2005-200955 * Laurent Pinchart (laurent.pinchart@skynet.be)66 *77 * This program is free software; you can redistribute it and/or modify···1212 */13131414#include <linux/kernel.h>1515-#include <linux/version.h>1615#include <linux/list.h>1716#include <linux/module.h>1817#include <linux/uaccess.h>···2829#define UVC_CTRL_DATA_BACKUP 129303031/* ------------------------------------------------------------------------3131- * Control, formats, ...3232+ * Controls3233 */33343435static struct uvc_control_info uvc_ctrls[] = {···634635 mask = (1 << bits) - 1;635636 }636637637637- /* Sign-extend the value if needed */638638+ /* Sign-extend the value if needed. */638639 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED)639640 value |= -(value & (1 << (mapping->size - 1)));640641
+25-30
drivers/media/video/uvc/uvc_driver.c
···11/*22 * uvc_driver.c -- USB Video Class driver33 *44- * Copyright (C) 2005-200844+ * Copyright (C) 2005-200955 * Laurent Pinchart (laurent.pinchart@skynet.be)66 *77 * This program is free software; you can redistribute it and/or modify···2424 */25252626#include <linux/kernel.h>2727-#include <linux/version.h>2827#include <linux/list.h>2928#include <linux/module.h>3029#include <linux/usb.h>···4849unsigned int uvc_trace_param;49505051/* ------------------------------------------------------------------------5151- * Control, formats, ...5252+ * Video formats5253 */53545455static struct uvc_format_desc uvc_fmts[] = {···473474474475 /* Several UVC chipsets screw up dwMaxVideoFrameBufferSize475476 * completely. Observed behaviours range from setting the476476- * value to 1.1x the actual frame size of hardwiring the477477+ * value to 1.1x the actual frame size to hardwiring the477478 * 16 low bits to 0. This results in a higher than necessary478479 * memory usage as well as a wrong image size information. For479480 * uncompressed formats this can be fixed by computing the···486487 /* Some bogus devices report dwMinFrameInterval equal to487488 * dwMaxFrameInterval and have dwFrameIntervalStep set to488489 * zero. Setting all null intervals to 1 fixes the problem and489489- * some other divisions by zero which could happen.490490+ * some other divisions by zero that could happen.490491 */491492 for (i = 0; i < n; ++i) {492493 interval = get_unaligned_le32(&buffer[26+4*i]);···11991200 * Scan the UVC descriptors to locate a chain starting at an Output Terminal12001201 * and containing the following units:12011202 *12021202- * - a USB Streaming Output Terminal12031203+ * - one Output Terminal (USB Streaming or Display)12031204 * - zero or one Processing Unit12041205 * - zero, one or mode single-input Selector Units12051206 * - zero or one multiple-input Selector Units, provided all inputs are12061207 * connected to input terminals12071208 * - zero, one or mode single-input Extension Units12081208- * - one Camera Input Terminal, or one or more External terminals.12091209+ * - one or more Input Terminals (Camera, External or USB Streaming)12091210 *12101211 * A side forward scan is made on each detected entity to check for additional12111212 * extension units.···1530153115311532 /* Set the driver data before calling video_register_device, otherwise15321533 * uvc_v4l2_open might race us.15331533- *15341534- * FIXME: usb_set_intfdata hasn't been called so far. Is that a15351535- * problem ? Does any function which could be called here get15361536- * a pointer to the usb_interface ?15371534 */15381535 dev->video.vdev = vdev;15391536 video_set_drvdata(vdev, &dev->video);···15641569 struct uvc_device *dev = container_of(kref, struct uvc_device, kref);15651570 struct list_head *p, *n;1566157115671567- /* Unregister the video device */15721572+ /* Unregister the video device. */15681573 uvc_unregister_video(dev);15691574 usb_put_intf(dev->intf);15701575 usb_put_dev(dev->udev);···16071612 uvc_trace(UVC_TRACE_PROBE, "Probing generic UVC device %s\n",16081613 udev->devpath);1609161416101610- /* Allocate memory for the device and initialize it */16151615+ /* Allocate memory for the device and initialize it. */16111616 if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == NULL)16121617 return -ENOMEM;16131618···16281633 le16_to_cpu(udev->descriptor.idVendor),16291634 le16_to_cpu(udev->descriptor.idProduct));1630163516311631- /* Parse the Video Class control descriptor */16361636+ /* Parse the Video Class control descriptor. */16321637 if (uvc_parse_control(dev) < 0) {16331638 uvc_trace(UVC_TRACE_PROBE, "Unable to parse UVC "16341639 "descriptors.\n");16351640 goto error;16361641 }1637164216381638- uvc_printk(KERN_INFO, "Found UVC %u.%02u device %s (%04x:%04x)\n",16431643+ uvc_printk(KERN_INFO, "Found UVC %u.%02x device %s (%04x:%04x)\n",16391644 dev->uvc_version >> 8, dev->uvc_version & 0xff,16401645 udev->product ? udev->product : "<unnamed>",16411646 le16_to_cpu(udev->descriptor.idVendor),···16481653 "linux-uvc-devel mailing list.\n");16491654 }1650165516511651- /* Initialize controls */16561656+ /* Initialize controls. */16521657 if (uvc_ctrl_init_device(dev) < 0)16531658 goto error;1654165916551655- /* Register the video devices */16601660+ /* Register the video devices. */16561661 if (uvc_register_video(dev) < 0)16571662 goto error;1658166316591659- /* Save our data pointer in the interface data */16641664+ /* Save our data pointer in the interface data. */16601665 usb_set_intfdata(intf, dev);1661166616621662- /* Initialize the interrupt URB */16671667+ /* Initialize the interrupt URB. */16631668 if ((ret = uvc_status_init(dev)) < 0) {16641669 uvc_printk(KERN_INFO, "Unable to initialize the status "16651670 "endpoint (%d), status interrupt will not be "···18341839 .bInterfaceSubClass = 1,18351840 .bInterfaceProtocol = 0 },18361841 /* Apple Built-In iSight */18371837- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE18421842+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE18381843 | USB_DEVICE_ID_MATCH_INT_INFO,18391844 .idVendor = 0x05ac,18401845 .idProduct = 0x8501,18411841- .bInterfaceClass = USB_CLASS_VIDEO,18421842- .bInterfaceSubClass = 1,18431843- .bInterfaceProtocol = 0,18461846+ .bInterfaceClass = USB_CLASS_VIDEO,18471847+ .bInterfaceSubClass = 1,18481848+ .bInterfaceProtocol = 0,18441849 .driver_info = UVC_QUIRK_PROBE_MINMAX18451850 | UVC_QUIRK_BUILTIN_ISIGHT },18461851 /* Genesys Logic USB 2.0 PC Camera */18471847- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE18521852+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE18481853 | USB_DEVICE_ID_MATCH_INT_INFO,18491849- .idVendor = 0x05e3,18501850- .idProduct = 0x0505,18511851- .bInterfaceClass = USB_CLASS_VIDEO,18521852- .bInterfaceSubClass = 1,18531853- .bInterfaceProtocol = 0,18541854- .driver_info = UVC_QUIRK_STREAM_NO_FID },18541854+ .idVendor = 0x05e3,18551855+ .idProduct = 0x0505,18561856+ .bInterfaceClass = USB_CLASS_VIDEO,18571857+ .bInterfaceSubClass = 1,18581858+ .bInterfaceProtocol = 0,18591859+ .driver_info = UVC_QUIRK_STREAM_NO_FID },18551860 /* MT6227 */18561861 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE18571862 | USB_DEVICE_ID_MATCH_INT_INFO,
+2
drivers/media/video/uvc/uvc_isight.c
···33 *44 * Copyright (C) 2006-200755 * Ivan N. Zlatev <contact@i-nz.net>66+ * Copyright (C) 2008-200977+ * Laurent Pinchart <laurent.pinchart@skynet.be>68 *79 * This program is free software; you can redistribute it and/or modify810 * it under the terms of the GNU General Public License as published by
+15-16
drivers/media/video/uvc/uvc_queue.c
···11/*22 * uvc_queue.c -- USB Video Class driver - Buffers management33 *44- * Copyright (C) 2005-200844+ * Copyright (C) 2005-200955 * Laurent Pinchart (laurent.pinchart@skynet.be)66 *77 * This program is free software; you can redistribute it and/or modify···1212 */13131414#include <linux/kernel.h>1515-#include <linux/version.h>1615#include <linux/mm.h>1716#include <linux/list.h>1817#include <linux/module.h>···3637 * to user space will return -EBUSY.3738 *3839 * Video buffers are managed using two queues. However, unlike most USB video3939- * drivers which use an in queue and an out queue, we use a main queue which4040- * holds all queued buffers (both 'empty' and 'done' buffers), and an irq4141- * queue which holds empty buffers. This design (copied from video-buf)4242- * minimizes locking in interrupt, as only one queue is shared between4343- * interrupt and user contexts.4040+ * drivers that use an in queue and an out queue, we use a main queue to hold4141+ * all queued buffers (both 'empty' and 'done' buffers), and an irq queue to4242+ * hold empty buffers. This design (copied from video-buf) minimizes locking4343+ * in interrupt, as only one queue is shared between interrupt and user4444+ * contexts.4445 *4546 * Use cases4647 * ---------4748 *4848- * Unless stated otherwise, all operations which modify the irq buffers queue4949+ * Unless stated otherwise, all operations that modify the irq buffers queue4950 * are protected by the irq spinlock.5051 *5152 * 1. The user queues the buffers, starts streaming and dequeues a buffer.5253 *5354 * The buffers are added to the main and irq queues. Both operations are5454- * protected by the queue lock, and the latert is protected by the irq5555+ * protected by the queue lock, and the later is protected by the irq5556 * spinlock as well.5657 *5758 * The completion handler fetches a buffer from the irq queue and fills it···5960 * returns immediately.6061 *6162 * When the buffer is full, the completion handler removes it from the irq6262- * queue, marks it as ready (UVC_BUF_STATE_DONE) and wake its wait queue.6363+ * queue, marks it as ready (UVC_BUF_STATE_DONE) and wakes its wait queue.6364 * At that point, any process waiting on the buffer will be woken up. If a6465 * process tries to dequeue a buffer after it has been marked ready, the6566 * dequeing will succeed immediately.···9091/*9192 * Allocate the video buffers.9293 *9393- * Pages are reserved to make sure they will not be swaped, as they will be9494- * filled in URB completion handler.9494+ * Pages are reserved to make sure they will not be swapped, as they will be9595+ * filled in the URB completion handler.9596 *9697 * Buffers will be individually mapped, so they must all be page aligned.9798 */···209210 __uvc_query_buffer(&queue->buffer[v4l2_buf->index], v4l2_buf);210211211212done:212212- mutex_unlock(&queue->mutex);213213- return ret;213213+ mutex_unlock(&queue->mutex);214214+ return ret;214215}215216216217/*···235236 }236237237238 mutex_lock(&queue->mutex);238238- if (v4l2_buf->index >= queue->count) {239239+ if (v4l2_buf->index >= queue->count) {239240 uvc_trace(UVC_TRACE_CAPTURE, "[E] Out of range index.\n");240241 ret = -EINVAL;241242 goto done;···428429 * Cancel the video buffers queue.429430 *430431 * Cancelling the queue marks all buffers on the irq queue as erroneous,431431- * wakes them up and remove them from the queue.432432+ * wakes them up and removes them from the queue.432433 *433434 * If the disconnect parameter is set, further calls to uvc_queue_buffer will434435 * fail with -ENODEV.
+1-2
drivers/media/video/uvc/uvc_status.c
···11/*22 * uvc_status.c -- USB Video Class driver - Status endpoint33 *44- * Copyright (C) 2007-200844+ * Copyright (C) 2007-200955 * Laurent Pinchart (laurent.pinchart@skynet.be)66 *77 * This program is free software; you can redistribute it and/or modify···1212 */13131414#include <linux/kernel.h>1515-#include <linux/version.h>1615#include <linux/input.h>1716#include <linux/usb.h>1817#include <linux/usb/input.h>
+5-5
drivers/media/video/uvc/uvc_v4l2.c
···11/*22 * uvc_v4l2.c -- USB Video Class driver - V4L2 API33 *44- * Copyright (C) 2005-200844+ * Copyright (C) 2005-200955 * Laurent Pinchart (laurent.pinchart@skynet.be)66 *77 * This program is free software; you can redistribute it and/or modify···3737 * must be grouped (for instance the Red Balance, Blue Balance and Do White3838 * Balance V4L2 controls use the White Balance Component UVC control) or3939 * otherwise translated. The approach we take here is to use a translation4040- * table for the controls which can be mapped directly, and handle the others4040+ * table for the controls that can be mapped directly, and handle the others4141 * manually.4242 */4343static int uvc_v4l2_query_menu(struct uvc_video_device *video,···189189 probe->dwMaxVideoFrameSize =190190 video->streaming->ctrl.dwMaxVideoFrameSize;191191192192- /* Probe the device */192192+ /* Probe the device. */193193 if ((ret = uvc_probe_video(video, probe)) < 0)194194 goto done;195195···354354 *355355 * Each open instance of a UVC device can either be in a privileged or356356 * unprivileged state. Only a single instance can be in a privileged state at357357- * a given time. Trying to perform an operation which requires privileges will357357+ * a given time. Trying to perform an operation that requires privileges will358358 * automatically acquire the required privileges if possible, or return -EBUSY359359 * otherwise. Privileges are dismissed when closing the instance.360360 *361361- * Operations which require privileges are:361361+ * Operations that require privileges are:362362 *363363 * - VIDIOC_S_INPUT364364 * - VIDIOC_S_PARM
+19-12
drivers/media/video/uvc/uvc_video.c
···11/*22 * uvc_video.c -- USB Video Class driver - Video handling33 *44- * Copyright (C) 2005-200844+ * Copyright (C) 2005-200955 * Laurent Pinchart (laurent.pinchart@skynet.be)66 *77 * This program is free software; you can redistribute it and/or modify···1212 */13131414#include <linux/kernel.h>1515-#include <linux/version.h>1615#include <linux/list.h>1716#include <linux/module.h>1817#include <linux/usb.h>···114115 ctrl->wCompQuality = le16_to_cpup((__le16 *)data);115116 ret = 0;116117 goto out;117117- } else if (query == GET_DEF && probe == 1) {118118+ } else if (query == GET_DEF && probe == 1 && ret != size) {118119 /* Many cameras don't support the GET_DEF request on their119120 * video probe control. Warn once and return, the caller will120121 * fall back to GET_CUR.···159160 }160161161162 /* Some broken devices return a null or wrong dwMaxVideoFrameSize.162162- * Try to get the value from the format and frame descriptor.163163+ * Try to get the value from the format and frame descriptors.163164 */164165 uvc_fixup_buffer_size(video, ctrl);165166 ret = 0;···190191 *(__le16 *)&data[12] = cpu_to_le16(ctrl->wCompQuality);191192 *(__le16 *)&data[14] = cpu_to_le16(ctrl->wCompWindowSize);192193 *(__le16 *)&data[16] = cpu_to_le16(ctrl->wDelay);193193- /* Note: Some of the fields below are not required for IN devices (see194194- * UVC spec, 4.3.1.1), but we still copy them in case support for OUT195195- * devices is added in the future. */196194 put_unaligned_le32(ctrl->dwMaxVideoFrameSize, &data[18]);197195 put_unaligned_le32(ctrl->dwMaxPayloadTransferSize, &data[22]);198196···396400 *397401 * Empty buffers (bytesused == 0) don't trigger end of frame detection398402 * as it doesn't make sense to return an empty buffer. This also399399- * avoids detecting and of frame conditions at FID toggling if the403403+ * avoids detecting end of frame conditions at FID toggling if the400404 * previous payload had the EOF bit set.401405 */402406 if (fid != video->last_fid && buf->buf.bytesused != 0) {···449453 }450454}451455456456+/* Video payload encoding is handled by uvc_video_encode_header() and457457+ * uvc_video_encode_data(). Only bulk transfers are currently supported.458458+ *459459+ * uvc_video_encode_header is called at the start of a payload. It adds header460460+ * data to the transfer buffer and returns the header size. As the only known461461+ * UVC output device transfers a whole frame in a single payload, the EOF bit462462+ * is always set in the header.463463+ *464464+ * uvc_video_encode_data is called for every URB and copies the data from the465465+ * video buffer to the transfer buffer.466466+ */452467static int uvc_video_encode_header(struct uvc_video_device *video,453468 struct uvc_buffer *buf, __u8 *data, int len)454469{···960953}961954962955/*963963- * Reconfigure the video interface and restart streaming if it was enable956956+ * Reconfigure the video interface and restart streaming if it was enabled964957 * before suspend.965958 *966959 * If an error occurs, disable the video queue. This will wake all pending···992985 */993986994987/*995995- * Initialize the UVC video device by retrieving the default format and996996- * committing it.988988+ * Initialize the UVC video device by switching to alternate setting 0 and989989+ * retrieve the default format.997990 *998991 * Some cameras (namely the Fuji Finepix) set the format and frame999992 * indexes to zero. The UVC standard doesn't clearly make this a spec···10211014 */10221015 usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);1023101610241024- /* Some webcams don't suport GET_DEF request on the probe control. We10171017+ /* Some webcams don't suport GET_DEF requests on the probe control. We10251018 * fall back to GET_CUR if GET_DEF fails.10261019 */10271020 if ((ret = uvc_get_video_ctrl(video, probe, 1, GET_DEF)) < 0 &&
···2828{2929 switch (cmd) {3030 case VIDIOC_QUERYCTRL:3131- return v4l2_subdev_call(sd, core, querymenu, arg);3131+ return v4l2_subdev_call(sd, core, queryctrl, arg);3232 case VIDIOC_G_CTRL:3333 return v4l2_subdev_call(sd, core, g_ctrl, arg);3434 case VIDIOC_S_CTRL:3535 return v4l2_subdev_call(sd, core, s_ctrl, arg);3636 case VIDIOC_QUERYMENU:3737- return v4l2_subdev_call(sd, core, queryctrl, arg);3737+ return v4l2_subdev_call(sd, core, querymenu, arg);3838 case VIDIOC_LOG_STATUS:3939 return v4l2_subdev_call(sd, core, log_status);4040 case VIDIOC_DBG_G_CHIP_IDENT:
+2-10
drivers/media/video/zoran/zoran.h
···349349 u16 i2c_decoder, i2c_encoder; /* I2C types */350350 u16 video_vfe, video_codec; /* videocodec types */351351 u16 audio_chip; /* audio type */352352- u16 vendor_id, device_id; /* subsystem vendor/device ID */353352354353 int inputs; /* number of video inputs */355354 struct input {···400401 char name[32]; /* name of this device */401402 struct pci_dev *pci_dev; /* PCI device */402403 unsigned char revision; /* revision of zr36057 */403403- unsigned int zr36057_adr; /* bus address of IO mem returned by PCI BIOS */404404 unsigned char __iomem *zr36057_mem;/* pointer to mapped IO memory */405405406406 spinlock_t spinlock; /* Spinlock */···488490 wait_queue_head_t test_q;489491};490492491491-/*The following should be done in more portable way. It depends on define492492- of _ALPHA_BUZ in the Makefile.*/493493-494494-#ifdef _ALPHA_BUZ495495-#define btwrite(dat,adr) writel((dat), zr->zr36057_adr+(adr))496496-#define btread(adr) readl(zr->zr36057_adr+(adr))497497-#else493493+/* There was something called _ALPHA_BUZ that used the PCI address instead of494494+ * the kernel iomapped address for btread/btwrite. */498495#define btwrite(dat,adr) writel((dat), zr->zr36057_mem+(adr))499496#define btread(adr) readl(zr->zr36057_mem+(adr))500500-#endif501497502498#define btand(dat,adr) btwrite((dat) & btread(adr), adr)503499#define btor(dat,adr) btwrite((dat) | btread(adr), adr)
+317-337
drivers/media/video/zoran/zoran_card.c
···61616262extern const struct zoran_format zoran_formats[];63636464-static int card[BUZ_MAX] = { -1, -1, -1, -1 };6464+static int card[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };6565module_param_array(card, int, NULL, 0444);6666-MODULE_PARM_DESC(card, "The type of card");6666+MODULE_PARM_DESC(card, "Card type");67676868-static int encoder[BUZ_MAX] = { -1, -1, -1, -1 };6868+static int encoder[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };6969module_param_array(encoder, int, NULL, 0444);7070-MODULE_PARM_DESC(encoder, "i2c TV encoder");7070+MODULE_PARM_DESC(encoder, "Video encoder chip");71717272-static int decoder[BUZ_MAX] = { -1, -1, -1, -1 };7272+static int decoder[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };7373module_param_array(decoder, int, NULL, 0444);7474-MODULE_PARM_DESC(decoder, "i2c TV decoder");7474+MODULE_PARM_DESC(decoder, "Video decoder chip");75757676/*7777 The video mem address of the video card.···104104MODULE_PARM_DESC(default_norm, "Default norm (0=PAL, 1=NTSC, 2=SECAM)");105105106106/* /dev/videoN, -1 for autodetect */107107-static int video_nr[BUZ_MAX] = {-1, -1, -1, -1};107107+static int video_nr[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };108108module_param_array(video_nr, int, NULL, 0444);109109-MODULE_PARM_DESC(video_nr, "video device number (-1=Auto)");109109+MODULE_PARM_DESC(video_nr, "Video device number (-1=Auto)");110110111111/*112112 Number and size of grab buffers for Video 4 Linux···153153MODULE_AUTHOR("Serguei Miridonov");154154MODULE_LICENSE("GPL");155155156156+#define ZR_DEVICE(subven, subdev, data) { \157157+ .vendor = PCI_VENDOR_ID_ZORAN, .device = PCI_DEVICE_ID_ZORAN_36057, \158158+ .subvendor = (subven), .subdevice = (subdev), .driver_data = (data) }156159157157-int zoran_num; /* number of Buzs in use */158158-struct zoran *zoran[BUZ_MAX];160160+static struct pci_device_id zr36067_pci_tbl[] = {161161+ ZR_DEVICE(PCI_VENDOR_ID_MIRO, PCI_DEVICE_ID_MIRO_DC10PLUS, DC10plus),162162+ ZR_DEVICE(PCI_VENDOR_ID_MIRO, PCI_DEVICE_ID_MIRO_DC30PLUS, DC30plus),163163+ ZR_DEVICE(PCI_VENDOR_ID_ELECTRONICDESIGNGMBH, PCI_DEVICE_ID_LML_33R10, LML33R10),164164+ ZR_DEVICE(PCI_VENDOR_ID_IOMEGA, PCI_DEVICE_ID_IOMEGA_BUZ, BUZ),165165+ ZR_DEVICE(PCI_ANY_ID, PCI_ANY_ID, NUM_CARDS),166166+ {0}167167+};168168+MODULE_DEVICE_TABLE(pci, zr36067_pci_tbl);169169+170170+static unsigned int zoran_num; /* number of cards found */159171160172/* videocodec bus functions ZR36060 */161173static u32···484472 }, {485473 .type = DC10plus,486474 .name = "DC10plus",487487- .vendor_id = PCI_VENDOR_ID_MIRO,488488- .device_id = PCI_DEVICE_ID_MIRO_DC10PLUS,489475 .i2c_decoder = I2C_DRIVERID_SAA7110,490476 .i2c_encoder = I2C_DRIVERID_ADV7175,491477 .video_codec = CODEC_TYPE_ZR36060,···541531 }, {542532 .type = DC30plus,543533 .name = "DC30plus",544544- .vendor_id = PCI_VENDOR_ID_MIRO,545545- .device_id = PCI_DEVICE_ID_MIRO_DC30PLUS,546534 .i2c_decoder = I2C_DRIVERID_VPX3220,547535 .i2c_encoder = I2C_DRIVERID_ADV7175,548536 .video_codec = CODEC_TYPE_ZR36050,···597589 }, {598590 .type = LML33R10,599591 .name = "LML33R10",600600- .vendor_id = PCI_VENDOR_ID_ELECTRONICDESIGNGMBH,601601- .device_id = PCI_DEVICE_ID_LML_33R10,602592 .i2c_decoder = I2C_DRIVERID_SAA7114,603593 .i2c_encoder = I2C_DRIVERID_ADV7170,604594 .video_codec = CODEC_TYPE_ZR36060,···624618 }, {625619 .type = BUZ,626620 .name = "Buz",627627- .vendor_id = PCI_VENDOR_ID_IOMEGA,628628- .device_id = PCI_DEVICE_ID_IOMEGA_BUZ,629621 .i2c_decoder = I2C_DRIVERID_SAA7111A,630622 .i2c_encoder = I2C_DRIVERID_SAA7185B,631623 .video_codec = CODEC_TYPE_ZR36060,···653649 .name = "6-Eyes",654650 /* AverMedia chose not to brand the 6-Eyes. Thus it655651 can't be autodetected, and requires card=x. */656656- .vendor_id = -1,657657- .device_id = -1,658652 .i2c_decoder = I2C_DRIVERID_KS0127,659653 .i2c_encoder = I2C_DRIVERID_BT866,660654 .video_codec = CODEC_TYPE_ZR36060,···11401138 strcpy(zr->video_dev->name, ZR_DEVNAME(zr));11411139 err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]);11421140 if (err < 0)11431143- goto exit_unregister;11411141+ goto exit_free;11421142+ video_set_drvdata(zr->video_dev, zr);1144114311451144 zoran_init_hardware(zr);11461145 if (zr36067_debug > 2)···11561153 zr->initialized = 1;11571154 return 0;1158115511591159-exit_unregister:11601160- zoran_unregister_i2c(zr);11611156exit_free:11621157 kfree(zr->stat_com);11631158 kfree(zr->video_dev);11641159 return err;11651160}1166116111671167-static void11681168-zoran_release (struct zoran *zr)11621162+static void __devexit zoran_remove(struct pci_dev *pdev)11691163{11641164+ struct zoran *zr = pci_get_drvdata(pdev);11651165+11701166 if (!zr->initialized)11711167 goto exit_free;11681168+11721169 /* unregister videocodec bus */11731170 if (zr->codec) {11741171 struct videocodec_master *master = zr->codec->master_data;···11971194 pci_disable_device(zr->pci_dev);11981195 video_unregister_device(zr->video_dev);11991196exit_free:11971197+ pci_set_drvdata(pdev, NULL);12001198 kfree(zr);12011199}12021200···12601256 * Scan for a Buz card (actually for the PCI controller ZR36057),12611257 * request the irq and map the io memory12621258 */12631263-static int __devinit12641264-find_zr36057 (void)12591259+static int __devinit zoran_probe(struct pci_dev *pdev,12601260+ const struct pci_device_id *ent)12651261{12661262 unsigned char latency, need_latency;12671263 struct zoran *zr;12681268- struct pci_dev *dev = NULL;12691264 int result;12701265 struct videocodec_master *master_vfe = NULL;12711266 struct videocodec_master *master_codec = NULL;12721267 int card_num;12731268 char *i2c_enc_name, *i2c_dec_name, *codec_name, *vfe_name;12691269+ unsigned int nr;1274127012751275- zoran_num = 0;12761276- while (zoran_num < BUZ_MAX &&12771277- (dev = pci_get_device(PCI_VENDOR_ID_ZORAN, PCI_DEVICE_ID_ZORAN_36057, dev)) != NULL) {12781278- card_num = card[zoran_num];12791279- zr = kzalloc(sizeof(struct zoran), GFP_KERNEL);12801280- if (!zr) {12811281- dprintk(1,12821282- KERN_ERR12831283- "%s: find_zr36057() - kzalloc failed\n",12841284- ZORAN_NAME);12851285- continue;12861286- }12871287- zr->pci_dev = dev;12881288- //zr->zr36057_mem = NULL;12891289- zr->id = zoran_num;12901290- snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id);12911291- spin_lock_init(&zr->spinlock);12921292- mutex_init(&zr->resource_lock);12931293- if (pci_enable_device(dev))12941294- goto zr_free_mem;12951295- zr->zr36057_adr = pci_resource_start(zr->pci_dev, 0);12961296- pci_read_config_byte(zr->pci_dev, PCI_CLASS_REVISION,12971297- &zr->revision);12711271+12721272+ nr = zoran_num++;12731273+ if (nr >= BUZ_MAX) {12741274+ dprintk(1,12751275+ KERN_ERR12761276+ "%s: driver limited to %d card(s) maximum\n",12771277+ ZORAN_NAME, BUZ_MAX);12781278+ return -ENOENT;12791279+ }12801280+12811281+ zr = kzalloc(sizeof(struct zoran), GFP_KERNEL);12821282+ if (!zr) {12831283+ dprintk(1,12841284+ KERN_ERR12851285+ "%s: find_zr36057() - kzalloc failed\n",12861286+ ZORAN_NAME);12871287+ return -ENOMEM;12881288+ }12891289+ zr->pci_dev = pdev;12901290+ zr->id = nr;12911291+ snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id);12921292+ spin_lock_init(&zr->spinlock);12931293+ mutex_init(&zr->resource_lock);12941294+ if (pci_enable_device(pdev))12951295+ goto zr_free_mem;12961296+ pci_read_config_byte(zr->pci_dev, PCI_CLASS_REVISION, &zr->revision);12971297+12981298+ dprintk(1,12991299+ KERN_INFO13001300+ "%s: Zoran ZR360%c7 (rev %d), irq: %d, memory: 0x%08llx\n",13011301+ ZR_DEVNAME(zr), zr->revision < 2 ? '5' : '6', zr->revision,13021302+ zr->pci_dev->irq, (uint64_t)pci_resource_start(zr->pci_dev, 0));13031303+ if (zr->revision >= 2) {13041304+ dprintk(1,13051305+ KERN_INFO13061306+ "%s: Subsystem vendor=0x%04x id=0x%04x\n",13071307+ ZR_DEVNAME(zr), zr->pci_dev->subsystem_vendor,13081308+ zr->pci_dev->subsystem_device);13091309+ }13101310+13111311+ /* Use auto-detected card type? */13121312+ if (card[nr] == -1) {12981313 if (zr->revision < 2) {12991314 dprintk(1,13001300- KERN_INFO13011301- "%s: Zoran ZR36057 (rev %d) irq: %d, memory: 0x%08x.\n",13021302- ZR_DEVNAME(zr), zr->revision, zr->pci_dev->irq,13031303- zr->zr36057_adr);13041304-13051305- if (card_num == -1) {13061306- dprintk(1,13071307- KERN_ERR13081308- "%s: find_zr36057() - no card specified, please use the card=X insmod option\n",13091309- ZR_DEVNAME(zr));13101310- goto zr_free_mem;13111311- }13121312- } else {13131313- int i;13141314- unsigned short ss_vendor, ss_device;13151315-13161316- ss_vendor = zr->pci_dev->subsystem_vendor;13171317- ss_device = zr->pci_dev->subsystem_device;13181318- dprintk(1,13191319- KERN_INFO13201320- "%s: Zoran ZR36067 (rev %d) irq: %d, memory: 0x%08x\n",13211321- ZR_DEVNAME(zr), zr->revision, zr->pci_dev->irq,13221322- zr->zr36057_adr);13231323- dprintk(1,13241324- KERN_INFO13251325- "%s: subsystem vendor=0x%04x id=0x%04x\n",13261326- ZR_DEVNAME(zr), ss_vendor, ss_device);13271327- if (card_num == -1) {13281328- dprintk(3,13291329- KERN_DEBUG13301330- "%s: find_zr36057() - trying to autodetect card type\n",13311331- ZR_DEVNAME(zr));13321332- for (i=0;i<NUM_CARDS;i++) {13331333- if (ss_vendor == zoran_cards[i].vendor_id &&13341334- ss_device == zoran_cards[i].device_id) {13351335- dprintk(3,13361336- KERN_DEBUG13371337- "%s: find_zr36057() - card %s detected\n",13381338- ZR_DEVNAME(zr),13391339- zoran_cards[i].name);13401340- card_num = i;13411341- break;13421342- }13431343- }13441344- if (i == NUM_CARDS) {13451345- dprintk(1,13461346- KERN_ERR13471347- "%s: find_zr36057() - unknown card\n",13481348- ZR_DEVNAME(zr));13491349- goto zr_free_mem;13501350- }13511351- }13521352- }13531353-13541354- if (card_num < 0 || card_num >= NUM_CARDS) {13551355- dprintk(2,13561315 KERN_ERR13571357- "%s: find_zr36057() - invalid cardnum %d\n",13581358- ZR_DEVNAME(zr), card_num);13591359- goto zr_free_mem;13601360- }13611361-13621362- /* even though we make this a non pointer and thus13631363- * theoretically allow for making changes to this struct13641364- * on a per-individual card basis at runtime, this is13651365- * strongly discouraged. This structure is intended to13661366- * keep general card information, no settings or anything */13671367- zr->card = zoran_cards[card_num];13681368- snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)),13691369- "%s[%u]", zr->card.name, zr->id);13701370-13711371- zr->zr36057_mem = ioremap_nocache(zr->zr36057_adr, 0x1000);13721372- if (!zr->zr36057_mem) {13161316+ "%s: No card type specified, please use the card=X module parameter\n",13171317+ ZR_DEVNAME(zr));13731318 dprintk(1,13741319 KERN_ERR13751375- "%s: find_zr36057() - ioremap failed\n",13201320+ "%s: It is not possible to auto-detect ZR36057 based cards\n",13761321 ZR_DEVNAME(zr));13771322 goto zr_free_mem;13781323 }1379132413801380- result = request_irq(zr->pci_dev->irq,13811381- zoran_irq,13821382- IRQF_SHARED | IRQF_DISABLED,13831383- ZR_DEVNAME(zr),13841384- (void *) zr);13851385- if (result < 0) {13861386- if (result == -EINVAL) {13871387- dprintk(1,13881388- KERN_ERR13891389- "%s: find_zr36057() - bad irq number or handler\n",13901390- ZR_DEVNAME(zr));13911391- } else if (result == -EBUSY) {13921392- dprintk(1,13931393- KERN_ERR13941394- "%s: find_zr36057() - IRQ %d busy, change your PnP config in BIOS\n",13951395- ZR_DEVNAME(zr), zr->pci_dev->irq);13961396- } else {13971397- dprintk(1,13981398- KERN_ERR13991399- "%s: find_zr36057() - can't assign irq, error code %d\n",14001400- ZR_DEVNAME(zr), result);14011401- }14021402- goto zr_unmap;14031403- }14041404-14051405- /* set PCI latency timer */14061406- pci_read_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,14071407- &latency);14081408- need_latency = zr->revision > 1 ? 32 : 48;14091409- if (latency != need_latency) {14101410- dprintk(2,14111411- KERN_INFO14121412- "%s: Changing PCI latency from %d to %d.\n",14131413- ZR_DEVNAME(zr), latency, need_latency);14141414- pci_write_config_byte(zr->pci_dev,14151415- PCI_LATENCY_TIMER,14161416- need_latency);14171417- }14181418-14191419- zr36057_restart(zr);14201420- /* i2c */14211421- dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n",14221422- ZR_DEVNAME(zr));14231423-14241424- /* i2c decoder */14251425- if (decoder[zr->id] != -1) {14261426- i2c_dec_name = i2cid_to_modulename(decoder[zr->id]);14271427- zr->card.i2c_decoder = decoder[zr->id];14281428- } else if (zr->card.i2c_decoder != 0) {14291429- i2c_dec_name =14301430- i2cid_to_modulename(zr->card.i2c_decoder);14311431- } else {14321432- i2c_dec_name = NULL;14331433- }14341434-14351435- if (i2c_dec_name) {14361436- if ((result = request_module(i2c_dec_name)) < 0) {14371437- dprintk(1,14381438- KERN_ERR14391439- "%s: failed to load module %s: %d\n",14401440- ZR_DEVNAME(zr), i2c_dec_name, result);14411441- }14421442- }14431443-14441444- /* i2c encoder */14451445- if (encoder[zr->id] != -1) {14461446- i2c_enc_name = i2cid_to_modulename(encoder[zr->id]);14471447- zr->card.i2c_encoder = encoder[zr->id];14481448- } else if (zr->card.i2c_encoder != 0) {14491449- i2c_enc_name =14501450- i2cid_to_modulename(zr->card.i2c_encoder);14511451- } else {14521452- i2c_enc_name = NULL;14531453- }14541454-14551455- if (i2c_enc_name) {14561456- if ((result = request_module(i2c_enc_name)) < 0) {14571457- dprintk(1,14581458- KERN_ERR14591459- "%s: failed to load module %s: %d\n",14601460- ZR_DEVNAME(zr), i2c_enc_name, result);14611461- }14621462- }14631463-14641464- if (zoran_register_i2c(zr) < 0) {13251325+ card_num = ent->driver_data;13261326+ if (card_num >= NUM_CARDS) {14651327 dprintk(1,14661328 KERN_ERR14671467- "%s: find_zr36057() - can't initialize i2c bus\n",13291329+ "%s: Unknown card, try specifying card=X module parameter\n",14681330 ZR_DEVNAME(zr));14691469- goto zr_free_irq;13311331+ goto zr_free_mem;14701332 }13331333+ dprintk(3,13341334+ KERN_DEBUG13351335+ "%s: %s() - card %s detected\n",13361336+ ZR_DEVNAME(zr), __func__, zoran_cards[card_num].name);13371337+ } else {13381338+ card_num = card[nr];13391339+ if (card_num >= NUM_CARDS || card_num < 0) {13401340+ dprintk(1,13411341+ KERN_ERR13421342+ "%s: User specified card type %d out of range (0 .. %d)\n",13431343+ ZR_DEVNAME(zr), card_num, NUM_CARDS - 1);13441344+ goto zr_free_mem;13451345+ }13461346+ }1471134713481348+ /* even though we make this a non pointer and thus13491349+ * theoretically allow for making changes to this struct13501350+ * on a per-individual card basis at runtime, this is13511351+ * strongly discouraged. This structure is intended to13521352+ * keep general card information, no settings or anything */13531353+ zr->card = zoran_cards[card_num];13541354+ snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)),13551355+ "%s[%u]", zr->card.name, zr->id);13561356+13571357+ zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0);13581358+ if (!zr->zr36057_mem) {13591359+ dprintk(1,13601360+ KERN_ERR13611361+ "%s: %s() - ioremap failed\n",13621362+ ZR_DEVNAME(zr), __func__);13631363+ goto zr_free_mem;13641364+ }13651365+13661366+ result = request_irq(zr->pci_dev->irq, zoran_irq,13671367+ IRQF_SHARED | IRQF_DISABLED, ZR_DEVNAME(zr), zr);13681368+ if (result < 0) {13691369+ if (result == -EINVAL) {13701370+ dprintk(1,13711371+ KERN_ERR13721372+ "%s: find_zr36057() - bad irq number or handler\n",13731373+ ZR_DEVNAME(zr));13741374+ } else if (result == -EBUSY) {13751375+ dprintk(1,13761376+ KERN_ERR13771377+ "%s: find_zr36057() - IRQ %d busy, change your PnP config in BIOS\n",13781378+ ZR_DEVNAME(zr), zr->pci_dev->irq);13791379+ } else {13801380+ dprintk(1,13811381+ KERN_ERR13821382+ "%s: find_zr36057() - can't assign irq, error code %d\n",13831383+ ZR_DEVNAME(zr), result);13841384+ }13851385+ goto zr_unmap;13861386+ }13871387+13881388+ /* set PCI latency timer */13891389+ pci_read_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,13901390+ &latency);13911391+ need_latency = zr->revision > 1 ? 32 : 48;13921392+ if (latency != need_latency) {14721393 dprintk(2,14731473- KERN_INFO "%s: Initializing videocodec bus...\n",14741474- ZR_DEVNAME(zr));13941394+ KERN_INFO13951395+ "%s: Changing PCI latency from %d to %d\n",13961396+ ZR_DEVNAME(zr), latency, need_latency);13971397+ pci_write_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,13981398+ need_latency);13991399+ }1475140014761476- if (zr->card.video_codec != 0 &&14771477- (codec_name =14781478- codecid_to_modulename(zr->card.video_codec)) != NULL) {14791479- if ((result = request_module(codec_name)) < 0) {14011401+ zr36057_restart(zr);14021402+ /* i2c */14031403+ dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n",14041404+ ZR_DEVNAME(zr));14051405+14061406+ /* i2c decoder */14071407+ if (decoder[zr->id] != -1) {14081408+ i2c_dec_name = i2cid_to_modulename(decoder[zr->id]);14091409+ zr->card.i2c_decoder = decoder[zr->id];14101410+ } else if (zr->card.i2c_decoder != 0) {14111411+ i2c_dec_name = i2cid_to_modulename(zr->card.i2c_decoder);14121412+ } else {14131413+ i2c_dec_name = NULL;14141414+ }14151415+14161416+ if (i2c_dec_name) {14171417+ result = request_module(i2c_dec_name);14181418+ if (result < 0) {14191419+ dprintk(1,14201420+ KERN_ERR14211421+ "%s: failed to load module %s: %d\n",14221422+ ZR_DEVNAME(zr), i2c_dec_name, result);14231423+ }14241424+ }14251425+14261426+ /* i2c encoder */14271427+ if (encoder[zr->id] != -1) {14281428+ i2c_enc_name = i2cid_to_modulename(encoder[zr->id]);14291429+ zr->card.i2c_encoder = encoder[zr->id];14301430+ } else if (zr->card.i2c_encoder != 0) {14311431+ i2c_enc_name = i2cid_to_modulename(zr->card.i2c_encoder);14321432+ } else {14331433+ i2c_enc_name = NULL;14341434+ }14351435+14361436+ if (i2c_enc_name) {14371437+ result = request_module(i2c_enc_name);14381438+ if (result < 0) {14391439+ dprintk(1,14401440+ KERN_ERR14411441+ "%s: failed to load module %s: %d\n",14421442+ ZR_DEVNAME(zr), i2c_enc_name, result);14431443+ }14441444+ }14451445+14461446+ if (zoran_register_i2c(zr) < 0) {14471447+ dprintk(1,14481448+ KERN_ERR14491449+ "%s: find_zr36057() - can't initialize i2c bus\n",14501450+ ZR_DEVNAME(zr));14511451+ goto zr_free_irq;14521452+ }14531453+14541454+ dprintk(2,14551455+ KERN_INFO "%s: Initializing videocodec bus...\n",14561456+ ZR_DEVNAME(zr));14571457+14581458+ if (zr->card.video_codec) {14591459+ codec_name = codecid_to_modulename(zr->card.video_codec);14601460+ if (codec_name) {14611461+ result = request_module(codec_name);14621462+ if (result) {14801463 dprintk(1,14811464 KERN_ERR14821465 "%s: failed to load modules %s: %d\n",14831466 ZR_DEVNAME(zr), codec_name, result);14841467 }14851468 }14861486- if (zr->card.video_vfe != 0 &&14871487- (vfe_name =14881488- codecid_to_modulename(zr->card.video_vfe)) != NULL) {14891489- if ((result = request_module(vfe_name)) < 0) {14691469+ }14701470+ if (zr->card.video_vfe) {14711471+ vfe_name = codecid_to_modulename(zr->card.video_vfe);14721472+ if (vfe_name) {14731473+ result = request_module(vfe_name);14741474+ if (result < 0) {14901475 dprintk(1,14911476 KERN_ERR14921477 "%s: failed to load modules %s: %d\n",14931478 ZR_DEVNAME(zr), vfe_name, result);14941479 }14951480 }14961496-14971497- /* reset JPEG codec */14981498- jpeg_codec_sleep(zr, 1);14991499- jpeg_codec_reset(zr);15001500- /* video bus enabled */15011501- /* display codec revision */15021502- if (zr->card.video_codec != 0) {15031503- master_codec = zoran_setup_videocodec(zr,15041504- zr->card.video_codec);15051505- if (!master_codec)15061506- goto zr_unreg_i2c;15071507- zr->codec = videocodec_attach(master_codec);15081508- if (!zr->codec) {15091509- dprintk(1,15101510- KERN_ERR15111511- "%s: find_zr36057() - no codec found\n",15121512- ZR_DEVNAME(zr));15131513- goto zr_free_codec;15141514- }15151515- if (zr->codec->type != zr->card.video_codec) {15161516- dprintk(1,15171517- KERN_ERR15181518- "%s: find_zr36057() - wrong codec\n",15191519- ZR_DEVNAME(zr));15201520- goto zr_detach_codec;15211521- }15221522- }15231523- if (zr->card.video_vfe != 0) {15241524- master_vfe = zoran_setup_videocodec(zr,15251525- zr->card.video_vfe);15261526- if (!master_vfe)15271527- goto zr_detach_codec;15281528- zr->vfe = videocodec_attach(master_vfe);15291529- if (!zr->vfe) {15301530- dprintk(1,15311531- KERN_ERR15321532- "%s: find_zr36057() - no VFE found\n",15331533- ZR_DEVNAME(zr));15341534- goto zr_free_vfe;15351535- }15361536- if (zr->vfe->type != zr->card.video_vfe) {15371537- dprintk(1,15381538- KERN_ERR15391539- "%s: find_zr36057() = wrong VFE\n",15401540- ZR_DEVNAME(zr));15411541- goto zr_detach_vfe;15421542- }15431543- }15441544- /* Success so keep the pci_dev referenced */15451545- pci_dev_get(zr->pci_dev);15461546- zoran[zoran_num++] = zr;15471547- continue;15481548-15491549- // Init errors15501550- zr_detach_vfe:15511551- videocodec_detach(zr->vfe);15521552- zr_free_vfe:15531553- kfree(master_vfe);15541554- zr_detach_codec:15551555- videocodec_detach(zr->codec);15561556- zr_free_codec:15571557- kfree(master_codec);15581558- zr_unreg_i2c:15591559- zoran_unregister_i2c(zr);15601560- zr_free_irq:15611561- btwrite(0, ZR36057_SPGPPCR);15621562- free_irq(zr->pci_dev->irq, zr);15631563- zr_unmap:15641564- iounmap(zr->zr36057_mem);15651565- zr_free_mem:15661566- kfree(zr);15671567- continue;15681481 }15691569- if (dev) /* Clean up ref count on early exit */15701570- pci_dev_put(dev);1571148215721572- if (zoran_num == 0) {15731573- dprintk(1, KERN_INFO "No known MJPEG cards found.\n");14831483+ /* reset JPEG codec */14841484+ jpeg_codec_sleep(zr, 1);14851485+ jpeg_codec_reset(zr);14861486+ /* video bus enabled */14871487+ /* display codec revision */14881488+ if (zr->card.video_codec != 0) {14891489+ master_codec = zoran_setup_videocodec(zr, zr->card.video_codec);14901490+ if (!master_codec)14911491+ goto zr_unreg_i2c;14921492+ zr->codec = videocodec_attach(master_codec);14931493+ if (!zr->codec) {14941494+ dprintk(1,14951495+ KERN_ERR14961496+ "%s: find_zr36057() - no codec found\n",14971497+ ZR_DEVNAME(zr));14981498+ goto zr_free_codec;14991499+ }15001500+ if (zr->codec->type != zr->card.video_codec) {15011501+ dprintk(1,15021502+ KERN_ERR15031503+ "%s: find_zr36057() - wrong codec\n",15041504+ ZR_DEVNAME(zr));15051505+ goto zr_detach_codec;15061506+ }15741507 }15751575- return zoran_num;15081508+ if (zr->card.video_vfe != 0) {15091509+ master_vfe = zoran_setup_videocodec(zr, zr->card.video_vfe);15101510+ if (!master_vfe)15111511+ goto zr_detach_codec;15121512+ zr->vfe = videocodec_attach(master_vfe);15131513+ if (!zr->vfe) {15141514+ dprintk(1,15151515+ KERN_ERR15161516+ "%s: find_zr36057() - no VFE found\n",15171517+ ZR_DEVNAME(zr));15181518+ goto zr_free_vfe;15191519+ }15201520+ if (zr->vfe->type != zr->card.video_vfe) {15211521+ dprintk(1,15221522+ KERN_ERR15231523+ "%s: find_zr36057() = wrong VFE\n",15241524+ ZR_DEVNAME(zr));15251525+ goto zr_detach_vfe;15261526+ }15271527+ }15281528+15291529+ /* take care of Natoma chipset and a revision 1 zr36057 */15301530+ if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) {15311531+ zr->jpg_buffers.need_contiguous = 1;15321532+ dprintk(1,15331533+ KERN_INFO15341534+ "%s: ZR36057/Natoma bug, max. buffer size is 128K\n",15351535+ ZR_DEVNAME(zr));15361536+ }15371537+15381538+ if (zr36057_init(zr) < 0)15391539+ goto zr_detach_vfe;15401540+15411541+ zoran_proc_init(zr);15421542+15431543+ pci_set_drvdata(pdev, zr);15441544+15451545+ return 0;15461546+15471547+zr_detach_vfe:15481548+ videocodec_detach(zr->vfe);15491549+zr_free_vfe:15501550+ kfree(master_vfe);15511551+zr_detach_codec:15521552+ videocodec_detach(zr->codec);15531553+zr_free_codec:15541554+ kfree(master_codec);15551555+zr_unreg_i2c:15561556+ zoran_unregister_i2c(zr);15571557+zr_free_irq:15581558+ btwrite(0, ZR36057_SPGPPCR);15591559+ free_irq(zr->pci_dev->irq, zr);15601560+zr_unmap:15611561+ iounmap(zr->zr36057_mem);15621562+zr_free_mem:15631563+ kfree(zr);15641564+15651565+ return -ENODEV;15761566}1577156715781578-static int __init15791579-init_dc10_cards (void)15801580-{15811581- int i;15681568+static struct pci_driver zoran_driver = {15691569+ .name = "zr36067",15701570+ .id_table = zr36067_pci_tbl,15711571+ .probe = zoran_probe,15721572+ .remove = zoran_remove,15731573+};1582157415831583- memset(zoran, 0, sizeof(zoran));15751575+static int __init zoran_init(void)15761576+{15771577+ int res;15781578+15841579 printk(KERN_INFO "Zoran MJPEG board driver version %d.%d.%d\n",15851580 MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION);1586158115871587- /* Look for cards */15881588- if (find_zr36057() < 0) {15891589- return -EIO;15901590- }15911591- if (zoran_num == 0)15921592- return -ENODEV;15931593- dprintk(1, KERN_INFO "%s: %d card(s) found\n", ZORAN_NAME,15941594- zoran_num);15951582 /* check the parameters we have been given, adjust if necessary */15961583 if (v4l_nbufs < 2)15971584 v4l_nbufs = 2;···16241629 ZORAN_NAME);16251630 }1626163116271627- /* take care of Natoma chipset and a revision 1 zr36057 */16281628- for (i = 0; i < zoran_num; i++) {16291629- struct zoran *zr = zoran[i];16301630-16311631- if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) {16321632- zr->jpg_buffers.need_contiguous = 1;16331633- dprintk(1,16341634- KERN_INFO16351635- "%s: ZR36057/Natoma bug, max. buffer size is 128K\n",16361636- ZR_DEVNAME(zr));16371637- }16381638-16391639- if (zr36057_init(zr) < 0) {16401640- for (i = 0; i < zoran_num; i++)16411641- zoran_release(zoran[i]);16421642- return -EIO;16431643- }16441644- zoran_proc_init(zr);16321632+ res = pci_register_driver(&zoran_driver);16331633+ if (res) {16341634+ dprintk(1,16351635+ KERN_ERR16361636+ "%s: Unable to register ZR36057 driver\n",16371637+ ZORAN_NAME);16381638+ return res;16451639 }1646164016471641 return 0;16481642}1649164316501650-static void __exit16511651-unload_dc10_cards (void)16441644+static void __exit zoran_exit(void)16521645{16531653- int i;16541654-16551655- for (i = 0; i < zoran_num; i++)16561656- zoran_release(zoran[i]);16461646+ pci_unregister_driver(&zoran_driver);16571647}1658164816591659-module_init(init_dc10_cards);16601660-module_exit(unload_dc10_cards);16491649+module_init(zoran_init);16501650+module_exit(zoran_exit);
-2
drivers/media/video/zoran/zoran_card.h
···40404141/* Anybody who uses more than four? */4242#define BUZ_MAX 44343-extern int zoran_num;4444-extern struct zoran *zoran[BUZ_MAX];45434644extern struct video_device zoran_template;4745
+35-70
drivers/media/video/zoran/zoran_driver.c
···11961196 * Open a zoran card. Right now the flags stuff is just playing11971197 */1198119811991199-static int12001200-zoran_open(struct file *file)11991199+static int zoran_open(struct file *file)12011200{12021202- unsigned int minor = video_devdata(file)->minor;12031203- struct zoran *zr = NULL;12011201+ struct zoran *zr = video_drvdata(file);12041202 struct zoran_fh *fh;12051205- int i, res, first_open = 0, have_module_locks = 0;12031203+ int res, first_open = 0;12041204+12051205+ dprintk(2, KERN_INFO "%s: zoran_open(%s, pid=[%d]), users(-)=%d\n",12061206+ ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user + 1);1206120712071208 lock_kernel();12081208- /* find the device */12091209- for (i = 0; i < zoran_num; i++) {12101210- if (zoran[i]->video_dev->minor == minor) {12111211- zr = zoran[i];12121212- break;12131213- }12141214- }12151215-12161216- if (!zr) {12171217- dprintk(1, KERN_ERR "%s: device not found!\n", ZORAN_NAME);12181218- res = -ENODEV;12191219- goto open_unlock_and_return;12201220- }1221120912221210 /* see fs/device.c - the kernel already locks during open(),12231211 * so locking ourselves only causes deadlocks */12241212 /*mutex_lock(&zr->resource_lock);*/12131213+12141214+ if (zr->user >= 2048) {12151215+ dprintk(1, KERN_ERR "%s: too many users (%d) on device\n",12161216+ ZR_DEVNAME(zr), zr->user);12171217+ res = -EBUSY;12181218+ goto fail_unlock;12191219+ }1225122012261221 if (!zr->decoder) {12271222 dprintk(1,12281223 KERN_ERR "%s: no TV decoder loaded for device!\n",12291224 ZR_DEVNAME(zr));12301225 res = -EIO;12311231- goto open_unlock_and_return;12261226+ goto fail_unlock;12321227 }1233122812341234- /* try to grab a module lock */12351235- if (!try_module_get(THIS_MODULE)) {12361236- dprintk(1,12371237- KERN_ERR12381238- "%s: failed to acquire my own lock! PANIC!\n",12391239- ZR_DEVNAME(zr));12401240- res = -ENODEV;12411241- goto open_unlock_and_return;12421242- }12431229 if (!try_module_get(zr->decoder->driver->driver.owner)) {12441230 dprintk(1,12451231 KERN_ERR12461246- "%s: failed to grab ownership of i2c decoder\n",12321232+ "%s: failed to grab ownership of video decoder\n",12471233 ZR_DEVNAME(zr));12481234 res = -EIO;12491249- module_put(THIS_MODULE);12501250- goto open_unlock_and_return;12351235+ goto fail_unlock;12511236 }12521237 if (zr->encoder &&12531238 !try_module_get(zr->encoder->driver->driver.owner)) {12541239 dprintk(1,12551240 KERN_ERR12561256- "%s: failed to grab ownership of i2c encoder\n",12411241+ "%s: failed to grab ownership of video encoder\n",12571242 ZR_DEVNAME(zr));12581243 res = -EIO;12591259- module_put(zr->decoder->driver->driver.owner);12601260- module_put(THIS_MODULE);12611261- goto open_unlock_and_return;12441244+ goto fail_decoder;12621245 }12631263-12641264- have_module_locks = 1;12651265-12661266- if (zr->user >= 2048) {12671267- dprintk(1, KERN_ERR "%s: too many users (%d) on device\n",12681268- ZR_DEVNAME(zr), zr->user);12691269- res = -EBUSY;12701270- goto open_unlock_and_return;12711271- }12721272-12731273- dprintk(1, KERN_INFO "%s: zoran_open(%s, pid=[%d]), users(-)=%d\n",12741274- ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user);1275124612761247 /* now, create the open()-specific file_ops struct */12771248 fh = kzalloc(sizeof(struct zoran_fh), GFP_KERNEL);···12521281 "%s: zoran_open() - allocation of zoran_fh failed\n",12531282 ZR_DEVNAME(zr));12541283 res = -ENOMEM;12551255- goto open_unlock_and_return;12841284+ goto fail_encoder;12561285 }12571286 /* used to be BUZ_MAX_WIDTH/HEIGHT, but that gives overflows12581287 * on norm-change! */···12631292 KERN_ERR12641293 "%s: zoran_open() - allocation of overlay_mask failed\n",12651294 ZR_DEVNAME(zr));12661266- kfree(fh);12671295 res = -ENOMEM;12681268- goto open_unlock_and_return;12961296+ goto fail_fh;12691297 }1270129812711299 if (zr->user++ == 0)···1289131912901320 return 0;1291132112921292-open_unlock_and_return:12931293- /* if we grabbed locks, release them accordingly */12941294- if (have_module_locks) {12951295- module_put(zr->decoder->driver->driver.owner);12961296- if (zr->encoder) {12971297- module_put(zr->encoder->driver->driver.owner);12981298- }12991299- module_put(THIS_MODULE);13001300- }13011301-13021302- /* if there's no device found, we didn't obtain the lock either */13031303- if (zr) {13041304- /*mutex_unlock(&zr->resource_lock);*/13051305- }13221322+fail_fh:13231323+ kfree(fh);13241324+fail_encoder:13251325+ if (zr->encoder)13261326+ module_put(zr->encoder->driver->driver.owner);13271327+fail_decoder:13281328+ module_put(zr->decoder->driver->driver.owner);13291329+fail_unlock:13061330 unlock_kernel();13311331+13321332+ dprintk(2, KERN_INFO "%s: open failed (%d), users(-)=%d\n",13331333+ ZR_DEVNAME(zr), res, zr->user);1307133413081335 return res;13091336}···13111344 struct zoran_fh *fh = file->private_data;13121345 struct zoran *zr = fh->zr;1313134613141314- dprintk(1, KERN_INFO "%s: zoran_close(%s, pid=[%d]), users(+)=%d\n",13151315- ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user);13471347+ dprintk(2, KERN_INFO "%s: zoran_close(%s, pid=[%d]), users(+)=%d\n",13481348+ ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user - 1);1316134913171350 /* kernel locks (fs/device.c), so don't do that ourselves13181351 * (prevents deadlocks) */···1358139113591392 /* release locks on the i2c modules */13601393 module_put(zr->decoder->driver->driver.owner);13611361- if (zr->encoder) {13621362- module_put(zr->encoder->driver->driver.owner);13631363- }13641364- module_put(THIS_MODULE);13941394+ if (zr->encoder)13951395+ module_put(zr->encoder->driver->driver.owner);1365139613661397 /*mutex_unlock(&zr->resource_lock);*/13671398
+10
drivers/mmc/host/Kconfig
···145145146146 If unsure, say N.147147148148+config MMC_MXC149149+ tristate "Freescale i.MX2/3 Multimedia Card Interface support"150150+ depends on ARCH_MXC151151+ help152152+ This selects the Freescale i.MX2/3 Multimedia card Interface.153153+ If you have a i.MX platform with a Multimedia Card slot,154154+ say Y or M here.155155+156156+ If unsure, say N.157157+148158config MMC_TIFM_SD149159 tristate "TI Flash Media MMC/SD Interface support (EXPERIMENTAL)"150160 depends on EXPERIMENTAL && PCI
···31313232char e1000_driver_name[] = "e1000";3333static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";3434-#define DRV_VERSION "7.3.20-k3-NAPI"3434+#define DRV_VERSION "7.3.21-k3-NAPI"3535const char e1000_driver_version[] = DRV_VERSION;3636static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";3737···37123712 struct e1000_hw *hw = &adapter->hw;37133713 u32 rctl, icr = er32(ICR);3714371437153715- if (unlikely(!icr))37153715+ if (unlikely((!icr) || test_bit(__E1000_RESETTING, &adapter->flags)))37163716 return IRQ_NONE; /* Not our interrupt */3717371737183718 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
+2
drivers/net/gianfar_mii.c
···234234 if (NULL == new_bus)235235 return -ENOMEM;236236237237+ device_init_wakeup(&ofdev->dev, 1);238238+237239 new_bus->name = "Gianfar MII Bus",238240 new_bus->read = &gfar_mdio_read,239241 new_bus->write = &gfar_mdio_write,
+9-2
drivers/net/igb/e1000_82575.c
···699699700700 /* SGMII link check is done through the PCS register. */701701 if ((hw->phy.media_type != e1000_media_type_copper) ||702702- (igb_sgmii_active_82575(hw)))702702+ (igb_sgmii_active_82575(hw))) {703703 ret_val = igb_get_pcs_speed_and_duplex_82575(hw, &speed,704704 &duplex);705705- else705705+ /*706706+ * Use this flag to determine if link needs to be checked or707707+ * not. If we have link clear the flag so that we do not708708+ * continue to check for link.709709+ */710710+ hw->mac.get_link_status = !hw->mac.serdes_has_link;711711+ } else {706712 ret_val = igb_check_for_copper_link(hw);713713+ }707714708715 return ret_val;709716}
···676676 rc = efx->phy_op->init(efx);677677 if (rc)678678 return rc;679679- efx->phy_op->reconfigure(efx);680680-681679 mutex_lock(&efx->mac_lock);680680+ efx->phy_op->reconfigure(efx);682681 rc = falcon_switch_mac(efx);683682 mutex_unlock(&efx->mac_lock);684683 if (rc)···685686 efx->mac_op->reconfigure(efx);686687687688 efx->port_initialized = true;688688- efx->stats_enabled = true;689689+ efx_stats_enable(efx);689690 return 0;690691691692fail:···734735 if (!efx->port_initialized)735736 return;736737738738+ efx_stats_disable(efx);737739 efx->phy_op->fini(efx);738740 efx->port_initialized = false;739741···13611361 return 0;13621362}1363136313641364+void efx_stats_disable(struct efx_nic *efx)13651365+{13661366+ spin_lock(&efx->stats_lock);13671367+ ++efx->stats_disable_count;13681368+ spin_unlock(&efx->stats_lock);13691369+}13701370+13711371+void efx_stats_enable(struct efx_nic *efx)13721372+{13731373+ spin_lock(&efx->stats_lock);13741374+ --efx->stats_disable_count;13751375+ spin_unlock(&efx->stats_lock);13761376+}13771377+13641378/* Context: process, dev_base_lock or RTNL held, non-blocking. */13651379static struct net_device_stats *efx_net_stats(struct net_device *net_dev)13661380{···13831369 struct net_device_stats *stats = &net_dev->stats;1384137013851371 /* Update stats if possible, but do not wait if another thread13861386- * is updating them (or resetting the NIC); slightly stale13871387- * stats are acceptable.13721372+ * is updating them or if MAC stats fetches are temporarily13731373+ * disabled; slightly stale stats are acceptable.13881374 */13891375 if (!spin_trylock(&efx->stats_lock))13901376 return stats;13911391- if (efx->stats_enabled) {13771377+ if (!efx->stats_disable_count) {13921378 efx->mac_op->update_stats(efx);13931379 falcon_update_nic_stats(efx);13941380 }···1636162216371623/* Tears down the entire software state and most of the hardware state16381624 * before reset. */16391639-void efx_reset_down(struct efx_nic *efx, struct ethtool_cmd *ecmd)16251625+void efx_reset_down(struct efx_nic *efx, enum reset_type method,16261626+ struct ethtool_cmd *ecmd)16401627{16411628 EFX_ASSERT_RESET_SERIALISED(efx);1642162916431643- /* The net_dev->get_stats handler is quite slow, and will fail16441644- * if a fetch is pending over reset. Serialise against it. */16451645- spin_lock(&efx->stats_lock);16461646- efx->stats_enabled = false;16471647- spin_unlock(&efx->stats_lock);16481648-16301630+ efx_stats_disable(efx);16491631 efx_stop_all(efx);16501632 mutex_lock(&efx->mac_lock);16511633 mutex_lock(&efx->spi_lock);···16491639 efx->phy_op->get_settings(efx, ecmd);1650164016511641 efx_fini_channels(efx);16421642+ if (efx->port_initialized && method != RESET_TYPE_INVISIBLE)16431643+ efx->phy_op->fini(efx);16521644}1653164516541646/* This function will always ensure that the locks acquired in···16581646 * that we were unable to reinitialise the hardware, and the16591647 * driver should be disabled. If ok is false, then the rx and tx16601648 * engines are not restarted, pending a RESET_DISABLE. */16611661-int efx_reset_up(struct efx_nic *efx, struct ethtool_cmd *ecmd, bool ok)16491649+int efx_reset_up(struct efx_nic *efx, enum reset_type method,16501650+ struct ethtool_cmd *ecmd, bool ok)16621651{16631652 int rc;16641653···16691656 if (rc) {16701657 EFX_ERR(efx, "failed to initialise NIC\n");16711658 ok = false;16591659+ }16601660+16611661+ if (efx->port_initialized && method != RESET_TYPE_INVISIBLE) {16621662+ if (ok) {16631663+ rc = efx->phy_op->init(efx);16641664+ if (rc)16651665+ ok = false;16661666+ } else16671667+ efx->port_initialized = false;16721668 }1673166916741670 if (ok) {···1692167016931671 if (ok) {16941672 efx_start_all(efx);16951695- efx->stats_enabled = true;16731673+ efx_stats_enable(efx);16961674 }16971675 return rc;16981676}···1724170217251703 EFX_INFO(efx, "resetting (%d)\n", method);1726170417271727- efx_reset_down(efx, &ecmd);17051705+ efx_reset_down(efx, method, &ecmd);1728170617291707 rc = falcon_reset_hw(efx, method);17301708 if (rc) {···1743172117441722 /* Leave device stopped if necessary */17451723 if (method == RESET_TYPE_DISABLE) {17461746- efx_reset_up(efx, &ecmd, false);17241724+ efx_reset_up(efx, method, &ecmd, false);17471725 rc = -EIO;17481726 } else {17491749- rc = efx_reset_up(efx, &ecmd, true);17271727+ rc = efx_reset_up(efx, method, &ecmd, true);17501728 }1751172917521730out_disable:···18981876 efx->rx_checksum_enabled = true;18991877 spin_lock_init(&efx->netif_stop_lock);19001878 spin_lock_init(&efx->stats_lock);18791879+ efx->stats_disable_count = 1;19011880 mutex_init(&efx->mac_lock);19021881 efx->mac_op = &efx_dummy_mac_operations;19031882 efx->phy_op = &efx_dummy_phy_operations;
···219219 struct efx_nic *efx = netdev_priv(net_dev);220220 int rc;221221222222- if (EFX_WORKAROUND_13963(efx) && !ecmd->autoneg)223223- return -EINVAL;224224-225222 /* Falcon GMAC does not support 1000Mbps HD */226223 if (ecmd->speed == SPEED_1000 && ecmd->duplex != DUPLEX_FULL) {227224 EFX_LOG(efx, "rejecting unsupported 1000Mbps HD"
+18-14
drivers/net/sfc/falcon.c
···824824 rx_ev_pause_frm ? " [PAUSE]" : "");825825 }826826#endif827827-828828- if (unlikely(rx_ev_eth_crc_err && EFX_WORKAROUND_10750(efx) &&829829- efx->phy_type == PHY_TYPE_SFX7101))830830- tenxpress_crc_err(efx);831827}832828833829/* Handle receive events that are not in-order. */···1883188718841888 /* MAC stats will fail whilst the TX fifo is draining. Serialise18851889 * the drain sequence with the statistics fetch */18861886- spin_lock(&efx->stats_lock);18901890+ efx_stats_disable(efx);1887189118881892 falcon_read(efx, ®, MAC0_CTRL_REG_KER);18891893 EFX_SET_OWORD_FIELD(reg, TXFIFO_DRAIN_EN_B0, 1);···19131917 udelay(10);19141918 }1915191919161916- spin_unlock(&efx->stats_lock);19201920+ efx_stats_enable(efx);1917192119181922 /* If we've reset the EM block and the link is up, then19191923 * we'll have to kick the XAUI link so the PHY can recover */···22732277 struct efx_mac_operations *old_mac_op = efx->mac_op;22742278 efx_oword_t nic_stat;22752279 unsigned strap_val;22802280+ int rc = 0;22812281+22822282+ /* Don't try to fetch MAC stats while we're switching MACs */22832283+ efx_stats_disable(efx);2276228422772285 /* Internal loopbacks override the phy speed setting */22782286 if (efx->loopback_mode == LOOPBACK_GMAC) {···22872287 efx->link_fd = true;22882288 }2289228922902290+ WARN_ON(!mutex_is_locked(&efx->mac_lock));22902291 efx->mac_op = (EFX_IS10G(efx) ?22912292 &falcon_xmac_operations : &falcon_gmac_operations);22922292- if (old_mac_op == efx->mac_op)22932293- return 0;2294229322952295- WARN_ON(!mutex_is_locked(&efx->mac_lock));22962296-22972297- /* Not all macs support a mac-level link state */22982298- efx->mac_up = true;22992299-22942294+ /* Always push the NIC_STAT_REG setting even if the mac hasn't22952295+ * changed, because this function is run post online reset */23002296 falcon_read(efx, &nic_stat, NIC_STAT_REG);23012297 strap_val = EFX_IS10G(efx) ? 5 : 3;23022298 if (falcon_rev(efx) >= FALCON_REV_B0) {···23052309 BUG_ON(EFX_OWORD_FIELD(nic_stat, STRAP_PINS) != strap_val);23062310 }2307231123122312+ if (old_mac_op == efx->mac_op)23132313+ goto out;2308231423092315 EFX_LOG(efx, "selected %cMAC\n", EFX_IS10G(efx) ? 'X' : 'G');23102310- return falcon_reset_macs(efx);23162316+ /* Not all macs support a mac-level link state */23172317+ efx->mac_up = true;23182318+23192319+ rc = falcon_reset_macs(efx);23202320+out:23212321+ efx_stats_enable(efx);23222322+ return rc;23112323}2312232423132325/* This call is responsible for hooking in the MAC and PHY operations */
+87-100
drivers/net/sfc/mdio_10g.c
···1515#include "net_driver.h"1616#include "mdio_10g.h"1717#include "boards.h"1818+#include "workarounds.h"18191920int mdio_clause45_reset_mmd(struct efx_nic *port, int mmd,2021 int spins, int spintime)···180179 return false;181180 else if (efx_phy_mode_disabled(efx->phy_mode))182181 return false;183183- else if (efx->loopback_mode == LOOPBACK_PHYXS) {182182+ else if (efx->loopback_mode == LOOPBACK_PHYXS)184183 mmd_mask &= ~(MDIO_MMDREG_DEVS_PHYXS |185184 MDIO_MMDREG_DEVS_PCS |186185 MDIO_MMDREG_DEVS_PMAPMD |187186 MDIO_MMDREG_DEVS_AN);188188- if (!mmd_mask) {189189- reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PHYXS,190190- MDIO_PHYXS_STATUS2);191191- return !(reg & (1 << MDIO_PHYXS_STATUS2_RX_FAULT_LBN));192192- }193193- } else if (efx->loopback_mode == LOOPBACK_PCS)187187+ else if (efx->loopback_mode == LOOPBACK_PCS)194188 mmd_mask &= ~(MDIO_MMDREG_DEVS_PCS |195189 MDIO_MMDREG_DEVS_PMAPMD |196190 MDIO_MMDREG_DEVS_AN);197191 else if (efx->loopback_mode == LOOPBACK_PMAPMD)198192 mmd_mask &= ~(MDIO_MMDREG_DEVS_PMAPMD |199193 MDIO_MMDREG_DEVS_AN);194194+195195+ if (!mmd_mask) {196196+ /* Use presence of XGMII faults in leui of link state */197197+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PHYXS,198198+ MDIO_PHYXS_STATUS2);199199+ return !(reg & (1 << MDIO_PHYXS_STATUS2_RX_FAULT_LBN));200200+ }200201201202 while (mmd_mask) {202203 if (mmd_mask & 1) {···266263 }267264}268265269269-static u32 mdio_clause45_get_an(struct efx_nic *efx, u16 addr, u32 xnp)266266+static u32 mdio_clause45_get_an(struct efx_nic *efx, u16 addr)270267{271268 int phy_id = efx->mii.phy_id;272269 u32 result = 0;···281278 result |= ADVERTISED_100baseT_Half;282279 if (reg & ADVERTISE_100FULL)283280 result |= ADVERTISED_100baseT_Full;284284- if (reg & LPA_RESV)285285- result |= xnp;286286-287281 return result;288282}289283···310310 */311311void mdio_clause45_get_settings_ext(struct efx_nic *efx,312312 struct ethtool_cmd *ecmd,313313- u32 xnp, u32 xnp_lpa)313313+ u32 npage_adv, u32 npage_lpa)314314{315315 int phy_id = efx->mii.phy_id;316316 int reg;···361361 ecmd->autoneg = AUTONEG_ENABLE;362362 ecmd->advertising |=363363 ADVERTISED_Autoneg |364364- mdio_clause45_get_an(efx,365365- MDIO_AN_ADVERTISE, xnp);364364+ mdio_clause45_get_an(efx, MDIO_AN_ADVERTISE) |365365+ npage_adv;366366 } else367367 ecmd->autoneg = AUTONEG_DISABLE;368368 } else···371371 if (ecmd->autoneg) {372372 /* If AN is complete, report best common mode,373373 * otherwise report best advertised mode. */374374- u32 common = ecmd->advertising;374374+ u32 modes = 0;375375 if (mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,376376 MDIO_MMDREG_STAT1) &377377- (1 << MDIO_AN_STATUS_AN_DONE_LBN)) {378378- common &= mdio_clause45_get_an(efx, MDIO_AN_LPA,379379- xnp_lpa);380380- }381381- if (common & ADVERTISED_10000baseT_Full) {377377+ (1 << MDIO_AN_STATUS_AN_DONE_LBN))378378+ modes = (ecmd->advertising &379379+ (mdio_clause45_get_an(efx, MDIO_AN_LPA) |380380+ npage_lpa));381381+ if (modes == 0)382382+ modes = ecmd->advertising;383383+384384+ if (modes & ADVERTISED_10000baseT_Full) {382385 ecmd->speed = SPEED_10000;383386 ecmd->duplex = DUPLEX_FULL;384384- } else if (common & (ADVERTISED_1000baseT_Full |385385- ADVERTISED_1000baseT_Half)) {387387+ } else if (modes & (ADVERTISED_1000baseT_Full |388388+ ADVERTISED_1000baseT_Half)) {386389 ecmd->speed = SPEED_1000;387387- ecmd->duplex = !!(common & ADVERTISED_1000baseT_Full);388388- } else if (common & (ADVERTISED_100baseT_Full |389389- ADVERTISED_100baseT_Half)) {390390+ ecmd->duplex = !!(modes & ADVERTISED_1000baseT_Full);391391+ } else if (modes & (ADVERTISED_100baseT_Full |392392+ ADVERTISED_100baseT_Half)) {390393 ecmd->speed = SPEED_100;391391- ecmd->duplex = !!(common & ADVERTISED_100baseT_Full);394394+ ecmd->duplex = !!(modes & ADVERTISED_100baseT_Full);392395 } else {393396 ecmd->speed = SPEED_10;394394- ecmd->duplex = !!(common & ADVERTISED_10baseT_Full);397397+ ecmd->duplex = !!(modes & ADVERTISED_10baseT_Full);395398 }396399 } else {397400 /* Report forced settings */···418415 int phy_id = efx->mii.phy_id;419416 struct ethtool_cmd prev;420417 u32 required;421421- int ctrl1_bits, reg;418418+ int reg;422419423420 efx->phy_op->get_settings(efx, &prev);424421···433430 if (prev.port != PORT_TP || ecmd->port != PORT_TP)434431 return -EINVAL;435432436436- /* Check that PHY supports these settings and work out the437437- * basic control bits */438438- if (ecmd->duplex) {433433+ /* Check that PHY supports these settings */434434+ if (ecmd->autoneg) {435435+ required = SUPPORTED_Autoneg;436436+ } else if (ecmd->duplex) {439437 switch (ecmd->speed) {440440- case SPEED_10:441441- ctrl1_bits = BMCR_FULLDPLX;442442- required = SUPPORTED_10baseT_Full;443443- break;444444- case SPEED_100:445445- ctrl1_bits = BMCR_SPEED100 | BMCR_FULLDPLX;446446- required = SUPPORTED_100baseT_Full;447447- break;448448- case SPEED_1000:449449- ctrl1_bits = BMCR_SPEED1000 | BMCR_FULLDPLX;450450- required = SUPPORTED_1000baseT_Full;451451- break;452452- case SPEED_10000:453453- ctrl1_bits = (BMCR_SPEED1000 | BMCR_SPEED100 |454454- BMCR_FULLDPLX);455455- required = SUPPORTED_10000baseT_Full;456456- break;457457- default:458458- return -EINVAL;438438+ case SPEED_10: required = SUPPORTED_10baseT_Full; break;439439+ case SPEED_100: required = SUPPORTED_100baseT_Full; break;440440+ default: return -EINVAL;459441 }460442 } else {461443 switch (ecmd->speed) {462462- case SPEED_10:463463- ctrl1_bits = 0;464464- required = SUPPORTED_10baseT_Half;465465- break;466466- case SPEED_100:467467- ctrl1_bits = BMCR_SPEED100;468468- required = SUPPORTED_100baseT_Half;469469- break;470470- case SPEED_1000:471471- ctrl1_bits = BMCR_SPEED1000;472472- required = SUPPORTED_1000baseT_Half;473473- break;474474- default:475475- return -EINVAL;444444+ case SPEED_10: required = SUPPORTED_10baseT_Half; break;445445+ case SPEED_100: required = SUPPORTED_100baseT_Half; break;446446+ default: return -EINVAL;476447 }477448 }478478- if (ecmd->autoneg)479479- required |= SUPPORTED_Autoneg;480449 required |= ecmd->advertising;481450 if (required & ~prev.supported)482451 return -EINVAL;483452484484- /* Set the basic control bits */485485- reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,486486- MDIO_MMDREG_CTRL1);487487- reg &= ~(BMCR_SPEED1000 | BMCR_SPEED100 | BMCR_FULLDPLX | 0x003c);488488- reg |= ctrl1_bits;489489- mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD, MDIO_MMDREG_CTRL1,490490- reg);453453+ if (ecmd->autoneg) {454454+ bool xnp = (ecmd->advertising & ADVERTISED_10000baseT_Full455455+ || EFX_WORKAROUND_13204(efx));491456492492- /* Set the AN registers */493493- if (ecmd->autoneg != prev.autoneg ||494494- ecmd->advertising != prev.advertising) {495495- bool xnp = false;457457+ /* Set up the base page */458458+ reg = ADVERTISE_CSMA;459459+ if (ecmd->advertising & ADVERTISED_10baseT_Half)460460+ reg |= ADVERTISE_10HALF;461461+ if (ecmd->advertising & ADVERTISED_10baseT_Full)462462+ reg |= ADVERTISE_10FULL;463463+ if (ecmd->advertising & ADVERTISED_100baseT_Half)464464+ reg |= ADVERTISE_100HALF;465465+ if (ecmd->advertising & ADVERTISED_100baseT_Full)466466+ reg |= ADVERTISE_100FULL;467467+ if (xnp)468468+ reg |= ADVERTISE_RESV;469469+ else if (ecmd->advertising & (ADVERTISED_1000baseT_Half |470470+ ADVERTISED_1000baseT_Full))471471+ reg |= ADVERTISE_NPAGE;472472+ reg |= efx_fc_advertise(efx->wanted_fc);473473+ mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,474474+ MDIO_AN_ADVERTISE, reg);496475497497- if (efx->phy_op->set_xnp_advertise)498498- xnp = efx->phy_op->set_xnp_advertise(efx,499499- ecmd->advertising);476476+ /* Set up the (extended) next page if necessary */477477+ if (efx->phy_op->set_npage_adv)478478+ efx->phy_op->set_npage_adv(efx, ecmd->advertising);500479501501- if (ecmd->autoneg) {502502- reg = 0;503503- if (ecmd->advertising & ADVERTISED_10baseT_Half)504504- reg |= ADVERTISE_10HALF;505505- if (ecmd->advertising & ADVERTISED_10baseT_Full)506506- reg |= ADVERTISE_10FULL;507507- if (ecmd->advertising & ADVERTISED_100baseT_Half)508508- reg |= ADVERTISE_100HALF;509509- if (ecmd->advertising & ADVERTISED_100baseT_Full)510510- reg |= ADVERTISE_100FULL;511511- if (xnp)512512- reg |= ADVERTISE_RESV;513513- mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,514514- MDIO_AN_ADVERTISE, reg);515515- }516516-480480+ /* Enable and restart AN */517481 reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,518482 MDIO_MMDREG_CTRL1);519519- if (ecmd->autoneg)520520- reg |= BMCR_ANENABLE | BMCR_ANRESTART;521521- else522522- reg &= ~BMCR_ANENABLE;483483+ reg |= BMCR_ANENABLE;484484+ if (!(EFX_WORKAROUND_15195(efx) &&485485+ LOOPBACK_MASK(efx) & efx->phy_op->loopbacks))486486+ reg |= BMCR_ANRESTART;523487 if (xnp)524488 reg |= 1 << MDIO_AN_CTRL_XNP_LBN;525489 else526490 reg &= ~(1 << MDIO_AN_CTRL_XNP_LBN);527491 mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,492492+ MDIO_MMDREG_CTRL1, reg);493493+ } else {494494+ /* Disable AN */495495+ mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_AN,496496+ MDIO_MMDREG_CTRL1,497497+ __ffs(BMCR_ANENABLE), false);498498+499499+ /* Set the basic control bits */500500+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,501501+ MDIO_MMDREG_CTRL1);502502+ reg &= ~(BMCR_SPEED1000 | BMCR_SPEED100 | BMCR_FULLDPLX |503503+ 0x003c);504504+ if (ecmd->speed == SPEED_100)505505+ reg |= BMCR_SPEED100;506506+ if (ecmd->duplex)507507+ reg |= BMCR_FULLDPLX;508508+ mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD,528509 MDIO_MMDREG_CTRL1, reg);529510 }530511
···953953 do {954954 udelay(1);955955 val = smsc911x_reg_read(pdata, RX_DP_CTRL);956956- } while (timeout-- && (val & RX_DP_CTRL_RX_FFWD_));956956+ } while (--timeout && (val & RX_DP_CTRL_RX_FFWD_));957957958958 if (unlikely(timeout == 0))959959 SMSC_WARNING(HW, "Timed out waiting for "
+1-2
drivers/net/smsc9420.c
···1378137813791379 /* test the IRQ connection to the ISR */13801380 smsc_dbg(IFUP, "Testing ISR using IRQ %d", dev->irq);13811381+ pd->software_irq_signal = false;1381138213821383 spin_lock_irqsave(&pd->int_lock, flags);13831384 /* configure interrupt deassertion timer and enable interrupts */···13941393 smsc9420_pci_flush_write(pd);1395139413961395 timeout = 1000;13971397- pd->software_irq_signal = false;13981398- smp_wmb();13991396 while (timeout--) {14001397 if (pd->software_irq_signal)14011398 break;
+19-4
drivers/net/tulip/21142.c
···991010 Please refer to Documentation/DocBook/tulip-user.{pdf,ps,html}1111 for more information on this driver.1212+1313+ DC21143 manual "21143 PCI/CardBus 10/100Mb/s Ethernet LAN Controller1414+ Hardware Reference Manual" is currently available at :1515+ http://developer.intel.com/design/network/manuals/278074.htm1616+1217 Please submit bugs to http://bugzilla.kernel.org/ .1318*/1419···3732 int csr12 = ioread32(ioaddr + CSR12);3833 int next_tick = 60*HZ;3934 int new_csr6 = 0;3535+ int csr14 = ioread32(ioaddr + CSR14);40363737+ /* CSR12[LS10,LS100] are not reliable during autonegotiation */3838+ if ((csr14 & 0x80) && (csr12 & 0x7000) != 0x5000)3939+ csr12 |= 6;4140 if (tulip_debug > 2)4241 printk(KERN_INFO"%s: 21143 negotiation status %8.8x, %s.\n",4342 dev->name, csr12, medianame[dev->if_port]);···8576 new_csr6 = 0x83860000;8677 dev->if_port = 3;8778 iowrite32(0, ioaddr + CSR13);8888- iowrite32(0x0003FF7F, ioaddr + CSR14);7979+ iowrite32(0x0003FFFF, ioaddr + CSR14);8980 iowrite16(8, ioaddr + CSR15);9081 iowrite32(1, ioaddr + CSR13);9182 }···141132 struct tulip_private *tp = netdev_priv(dev);142133 void __iomem *ioaddr = tp->base_addr;143134 int csr12 = ioread32(ioaddr + CSR12);135135+ int csr14 = ioread32(ioaddr + CSR14);144136137137+ /* CSR12[LS10,LS100] are not reliable during autonegotiation */138138+ if ((csr14 & 0x80) && (csr12 & 0x7000) != 0x5000)139139+ csr12 |= 6;145140 if (tulip_debug > 1)146141 printk(KERN_INFO"%s: 21143 link status interrupt %8.8x, CSR5 %x, "147147- "%8.8x.\n", dev->name, csr12, csr5, ioread32(ioaddr + CSR14));142142+ "%8.8x.\n", dev->name, csr12, csr5, csr14);148143149144 /* If NWay finished and we have a negotiated partner capability. */150145 if (tp->nway && !tp->nwayset && (csr12 & 0x7000) == 0x5000) {···156143 int negotiated = tp->sym_advertise & (csr12 >> 16);157144 tp->lpar = csr12 >> 16;158145 tp->nwayset = 1;159159- if (negotiated & 0x0100) dev->if_port = 5;146146+ /* If partner cannot negotiate, it is 10Mbps Half Duplex */147147+ if (!(csr12 & 0x8000)) dev->if_port = 0;148148+ else if (negotiated & 0x0100) dev->if_port = 5;160149 else if (negotiated & 0x0080) dev->if_port = 3;161150 else if (negotiated & 0x0040) dev->if_port = 4;162151 else if (negotiated & 0x0020) dev->if_port = 0;···229214 tp->timer.expires = RUN_AT(3*HZ);230215 add_timer(&tp->timer);231216 } else if (dev->if_port == 5)232232- iowrite32(ioread32(ioaddr + CSR14) & ~0x080, ioaddr + CSR14);217217+ iowrite32(csr14 & ~0x080, ioaddr + CSR14);233218 } else if (dev->if_port == 0 || dev->if_port == 4) {234219 if ((csr12 & 4) == 0)235220 printk(KERN_INFO"%s: 21143 10baseT link beat good.\n",
···10281028 * it's done by reseting the chip. To accomplish this we must10291029 * first cleanup any pending DMA, then restart stuff after a la10301030 * ath5k_init.10311031+ *10321032+ * Called with sc->lock.10311033 */10321034static int10331035ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan)···28162814{28172815 struct ath5k_softc *sc = hw->priv;28182816 struct ieee80211_conf *conf = &hw->conf;28172817+ int ret;28182818+28192819+ mutex_lock(&sc->lock);2819282028202821 sc->bintval = conf->beacon_int;28212822 sc->power_level = conf->power_level;2822282328232823- return ath5k_chan_set(sc, conf->channel);28242824+ ret = ath5k_chan_set(sc, conf->channel);28252825+28262826+ mutex_unlock(&sc->lock);28272827+ return ret;28242828}2825282928262830static int
+4
drivers/net/wireless/iwlwifi/iwl-agn.c
···17191719 priv->ucode_data_backup.len = data_size;17201720 iwl_alloc_fw_desc(priv->pci_dev, &priv->ucode_data_backup);1721172117221722+ if (!priv->ucode_code.v_addr || !priv->ucode_data.v_addr ||17231723+ !priv->ucode_data_backup.v_addr)17241724+ goto err_pci_alloc;17251725+17221726 /* Initialization instructions and data */17231727 if (init_size && init_data_size) {17241728 priv->ucode_init.len = init_size;
···55obj-$(CONFIG_HOTPLUG_PCI) += pci_hotplug.o66obj-$(CONFIG_HOTPLUG_PCI_COMPAQ) += cpqphp.o77obj-$(CONFIG_HOTPLUG_PCI_IBM) += ibmphp.o88+99+# pciehp should be linked before acpiphp in order to allow the native driver1010+# to attempt to bind first. We can then fall back to generic support.1111+1212+obj-$(CONFIG_HOTPLUG_PCI_PCIE) += pciehp.o813obj-$(CONFIG_HOTPLUG_PCI_ACPI) += acpiphp.o914obj-$(CONFIG_HOTPLUG_PCI_ACPI_IBM) += acpiphp_ibm.o1015obj-$(CONFIG_HOTPLUG_PCI_CPCI_ZT5550) += cpcihp_zt5550.o1116obj-$(CONFIG_HOTPLUG_PCI_CPCI_GENERIC) += cpcihp_generic.o1212-obj-$(CONFIG_HOTPLUG_PCI_PCIE) += pciehp.o1317obj-$(CONFIG_HOTPLUG_PCI_SHPC) += shpchp.o1418obj-$(CONFIG_HOTPLUG_PCI_RPA) += rpaphp.o1519obj-$(CONFIG_HOTPLUG_PCI_RPA_DLPAR) += rpadlpar_io.o
+26-16
drivers/pci/hotplug/fakephp.c
···195195 * Tries hard not to re-enable already existing devices;196196 * also handles scanning of subfunctions.197197 */198198-static void pci_rescan_slot(struct pci_dev *temp)198198+static int pci_rescan_slot(struct pci_dev *temp)199199{200200 struct pci_bus *bus = temp->bus;201201 struct pci_dev *dev;202202 int func;203203- int retval;204203 u8 hdr_type;204204+ int count = 0;205205206206 if (!pci_read_config_byte(temp, PCI_HEADER_TYPE, &hdr_type)) {207207 temp->hdr_type = hdr_type & 0x7f;···213213 dbg("New device on %s function %x:%x\n",214214 bus->name, temp->devfn >> 3,215215 temp->devfn & 7);216216- retval = pci_bus_add_device(dev);217217- if (retval)218218- dev_err(&dev->dev, "error adding "219219- "device, continuing.\n");220220- else221221- add_slot(dev);216216+ count++;222217 }223218 }224219 /* multifunction device? */225220 if (!(hdr_type & 0x80))226226- return;221221+ return count;227222228223 /* continue scanning for other functions */229224 for (func = 1, temp->devfn++; func < 8; func++, temp->devfn++) {···234239 dbg("New device on %s function %x:%x\n",235240 bus->name, temp->devfn >> 3,236241 temp->devfn & 7);237237- retval = pci_bus_add_device(dev);238238- if (retval)239239- dev_err(&dev->dev, "error adding "240240- "device, continuing.\n");241241- else242242- add_slot(dev);242242+ count++;243243 }244244 }245245 }246246 }247247+248248+ return count;247249}248250249251···254262{255263 unsigned int devfn;256264 struct pci_dev *dev;265265+ int retval;266266+ int found = 0;257267 dev = alloc_pci_dev();258268 if (!dev)259269 return;···264270 dev->sysdata = bus->sysdata;265271 for (devfn = 0; devfn < 0x100; devfn += 8) {266272 dev->devfn = devfn;267267- pci_rescan_slot(dev);273273+ found += pci_rescan_slot(dev);274274+ }275275+276276+ if (found) {277277+ pci_bus_assign_resources(bus);278278+ list_for_each_entry(dev, &bus->devices, bus_list) {279279+ /* Skip already-added devices */280280+ if (dev->is_added)281281+ continue;282282+ retval = pci_bus_add_device(dev);283283+ if (retval)284284+ dev_err(&dev->dev,285285+ "Error adding device, continuing\n");286286+ else287287+ add_slot(dev);288288+ }289289+ pci_bus_add_devices(bus);268290 }269291 kfree(dev);270292}
+11-2
drivers/pci/msi.c
···103103 }104104}105105106106+/*107107+ * Essentially, this is ((1 << (1 << x)) - 1), but without the108108+ * undefinedness of a << 32.109109+ */110110+static inline __attribute_const__ u32 msi_mask(unsigned x)111111+{112112+ static const u32 mask[] = { 1, 2, 4, 0xf, 0xff, 0xffff, 0xffffffff };113113+ return mask[x];114114+}115115+106116static void msix_flush_writes(struct irq_desc *desc)107117{108118 struct msi_desc *entry;···417407418408 /* All MSIs are unmasked by default, Mask them all */419409 pci_read_config_dword(dev, base, &maskbits);420420- temp = (1 << multi_msi_capable(control));421421- temp = ((temp - 1) & ~temp);410410+ temp = msi_mask((control & PCI_MSI_FLAGS_QMASK) >> 1);422411 maskbits |= temp;423412 pci_write_config_dword(dev, base, maskbits);424413 entry->msi_attrib.maskbits_mask = temp;
+20-1
drivers/pci/pci-driver.c
···370370 }371371372372 pci_save_state(pci_dev);373373+ pci_dev->state_saved = true;373374 /*374375 * This is for compatibility with existing code with legacy PM support.375376 */···420419static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev)421420{422421 pci_restore_standard_config(pci_dev);422422+ pci_dev->state_saved = false;423423 pci_fixup_device(pci_fixup_resume_early, pci_dev);424424}425425···557555 struct device_driver *drv = dev->driver;558556 int error = 0;559557558558+ /*559559+ * This is necessary for the suspend error path in which resume is560560+ * called without restoring the standard config registers of the device.561561+ */562562+ if (pci_dev->state_saved)563563+ pci_restore_standard_config(pci_dev);564564+560565 if (pci_has_legacy_pm_support(pci_dev))561566 return pci_legacy_resume(dev);562567···669660 if (pci_has_legacy_pm_support(pci_dev))670661 return pci_legacy_suspend(dev, PMSG_HIBERNATE);671662672672- if (drv && drv->pm && drv->pm->poweroff) {663663+ if (!drv || !drv->pm)664664+ return 0;665665+666666+ if (drv->pm->poweroff) {673667 error = drv->pm->poweroff(dev);674668 suspend_report_result(drv->pm->poweroff, error);675669 }···721709 struct pci_dev *pci_dev = to_pci_dev(dev);722710 struct device_driver *drv = dev->driver;723711 int error = 0;712712+713713+ /*714714+ * This is necessary for the hibernation error path in which restore is715715+ * called without restoring the standard config registers of the device.716716+ */717717+ if (pci_dev->state_saved)718718+ pci_restore_standard_config(pci_dev);724719725720 if (pci_has_legacy_pm_support(pci_dev))726721 return pci_legacy_resume(dev);
+16-16
drivers/pci/pci.c
···13931393 pci_power_t prev_state;13941394 int error;1395139513961396- pci_restore_state(dev);13971396 pci_update_current_state(dev, PCI_D0);1398139713991398 prev_state = dev->current_state;14001399 if (prev_state == PCI_D0)14011401- return 0;14001400+ goto Restore;1402140114031402 error = pci_raw_set_power_state(dev, PCI_D0, false);14041403 if (error)14051404 return error;1406140514071407- if (pci_is_bridge(dev)) {14081408- if (prev_state > PCI_D1)14091409- mdelay(PCI_PM_BUS_WAIT);14101410- } else {14111411- switch(prev_state) {14121412- case PCI_D3cold:14131413- case PCI_D3hot:14141414- mdelay(pci_pm_d3_delay);14151415- break;14161416- case PCI_D2:14171417- udelay(PCI_PM_D2_DELAY);14181418- break;14191419- }14061406+ /*14071407+ * This assumes that we won't get a bus in B2 or B3 from the BIOS, but14081408+ * we've made this assumption forever and it appears to be universally14091409+ * satisfied.14101410+ */14111411+ switch(prev_state) {14121412+ case PCI_D3cold:14131413+ case PCI_D3hot:14141414+ mdelay(pci_pm_d3_delay);14151415+ break;14161416+ case PCI_D2:14171417+ udelay(PCI_PM_D2_DELAY);14181418+ break;14201419 }1421142014221421 dev->current_state = PCI_D0;1423142214241424- return 0;14231423+ Restore:14241424+ return pci_restore_state(dev);14251425}1426142614271427/**
+1-5
drivers/regulator/bq24022.c
···152152 platform_driver_unregister(&bq24022_driver);153153}154154155155-/*156156- * make sure this is probed before gpio_vbus and pda_power,157157- * but after asic3 or other GPIO expander drivers.158158- */159159-subsys_initcall(bq24022_init);155155+module_init(bq24022_init);160156module_exit(bq24022_exit);161157162158MODULE_AUTHOR("Philipp Zabel");
+1-1
drivers/regulator/wm8350-regulator.c
···14351435 struct platform_device *pdev;14361436 int ret;1437143714381438- if (lednum > ARRAY_SIZE(wm8350->pmic.led) || lednum < 0) {14381438+ if (lednum >= ARRAY_SIZE(wm8350->pmic.led) || lednum < 0) {14391439 dev_err(wm8350->dev, "Invalid LED index %d\n", lednum);14401440 return -ENODEV;14411441 }
···87878888 return ret;8989}9090+9191+/**9292+ * whc_hw_error - recover from a hardware error9393+ * @whc: the WHCI HC that broke.9494+ * @reason: a description of the failure.9595+ *9696+ * Recover from broken hardware with a full reset.9797+ */9898+void whc_hw_error(struct whc *whc, const char *reason)9999+{100100+ struct wusbhc *wusbhc = &whc->wusbhc;101101+102102+ dev_err(&whc->umc->dev, "hardware error: %s\n", reason);103103+ wusbhc_reset_all(wusbhc);104104+}
···386386 | USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED);387387 port->change |= USB_PORT_STAT_C_CONNECTION | USB_PORT_STAT_C_ENABLE;388388 if (wusb_dev) {389389+ dev_dbg(wusbhc->dev, "disconnecting device from port %d\n", wusb_dev->port_idx);389390 if (!list_empty(&wusb_dev->cack_node))390391 list_del_init(&wusb_dev->cack_node);391392 /* For the one in cack_add() */
···1515 * You should have received a copy of the GNU General Public License1616 * along with this program. If not, see <http://www.gnu.org/licenses/>.1717 */1818-#include <linux/version.h>1918#include <linux/kernel.h>2019#include <linux/uwb.h>2120
···140140141141 iv = bip_vec_idx(bip, bip->bip_vcnt);142142 BUG_ON(iv == NULL);143143- BUG_ON(iv->bv_page != NULL);144143145144 iv->bv_page = page;146145 iv->bv_len = len;···464465465466 if (ret) {466467 kunmap_atomic(kaddr, KM_USER0);467467- break;468468+ return ret;468469 }469470470471 sectors = bv->bv_len / bi->sector_size;···492493 struct bio_integrity_payload *bip =493494 container_of(work, struct bio_integrity_payload, bip_work);494495 struct bio *bio = bip->bip_bio;495495- int error = bip->bip_error;496496+ int error;496497497497- if (bio_integrity_verify(bio)) {498498- clear_bit(BIO_UPTODATE, &bio->bi_flags);499499- error = -EIO;500500- }498498+ error = bio_integrity_verify(bio);501499502500 /* Restore original bio completion handler */503501 bio->bi_end_io = bip->bip_end_io;504504-505505- if (bio->bi_end_io)506506- bio->bi_end_io(bio, error);502502+ bio_endio(bio, error);507503}508504509505/**···519525520526 BUG_ON(bip->bip_bio != bio);521527522522- bip->bip_error = error;528528+ /* In case of an I/O error there is no point in verifying the529529+ * integrity metadata. Restore original bio end_io handler530530+ * and run it.531531+ */532532+ if (error) {533533+ bio->bi_end_io = bip->bip_end_io;534534+ bio_endio(bio, error);535535+536536+ return;537537+ }538538+523539 INIT_WORK(&bip->bip_work, bio_integrity_verify_fn);524540 queue_work(kintegrityd_wq, &bip->bip_work);525541}
+7
fs/compat_ioctl.c
···538538 * cannot be fixed without breaking all existing apps.539539 */540540 case TUNSETIFF:541541+ case TUNGETIFF:541542 case SIOCGIFFLAGS:542543 case SIOCGIFMETRIC:543544 case SIOCGIFMTU:···19831982COMPATIBLE_IOCTL(TUNSETDEBUG)19841983COMPATIBLE_IOCTL(TUNSETPERSIST)19851984COMPATIBLE_IOCTL(TUNSETOWNER)19851985+COMPATIBLE_IOCTL(TUNSETLINK)19861986+COMPATIBLE_IOCTL(TUNSETGROUP)19871987+COMPATIBLE_IOCTL(TUNGETFEATURES)19881988+COMPATIBLE_IOCTL(TUNSETOFFLOAD)19891989+COMPATIBLE_IOCTL(TUNSETTXFILTER)19861990/* Big V */19871991COMPATIBLE_IOCTL(VT_SETMODE)19881992COMPATIBLE_IOCTL(VT_GETMODE)···25792573HANDLE_IOCTL(SIOCGIFTXQLEN, dev_ifsioc)25802574HANDLE_IOCTL(SIOCSIFTXQLEN, dev_ifsioc)25812575HANDLE_IOCTL(TUNSETIFF, dev_ifsioc)25762576+HANDLE_IOCTL(TUNGETIFF, dev_ifsioc)25822577HANDLE_IOCTL(SIOCETHTOOL, ethtool_ioctl)25832578HANDLE_IOCTL(SIOCBONDENSLAVE, bond_ioctl)25842579HANDLE_IOCTL(SIOCBONDRELEASE, bond_ioctl)
+14-6
fs/ext3/namei.c
···13581358 struct fake_dirent *fde;1359135913601360 blocksize = dir->i_sb->s_blocksize;13611361- dxtrace(printk("Creating index\n"));13611361+ dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino));13621362 retval = ext3_journal_get_write_access(handle, bh);13631363 if (retval) {13641364 ext3_std_error(dir->i_sb, retval);···13661366 return retval;13671367 }13681368 root = (struct dx_root *) bh->b_data;13691369+13701370+ /* The 0th block becomes the root, move the dirents out */13711371+ fde = &root->dotdot;13721372+ de = (struct ext3_dir_entry_2 *)((char *)fde +13731373+ ext3_rec_len_from_disk(fde->rec_len));13741374+ if ((char *) de >= (((char *) root) + blocksize)) {13751375+ ext3_error(dir->i_sb, __func__,13761376+ "invalid rec_len for '..' in inode %lu",13771377+ dir->i_ino);13781378+ brelse(bh);13791379+ return -EIO;13801380+ }13811381+ len = ((char *) root) + blocksize - (char *) de;1369138213701383 bh2 = ext3_append (handle, dir, &block, &retval);13711384 if (!(bh2)) {···13881375 EXT3_I(dir)->i_flags |= EXT3_INDEX_FL;13891376 data1 = bh2->b_data;1390137713911391- /* The 0th block becomes the root, move the dirents out */13921392- fde = &root->dotdot;13931393- de = (struct ext3_dir_entry_2 *)((char *)fde +13941394- ext3_rec_len_from_disk(fde->rec_len));13951395- len = ((char *) root) + blocksize - (char *) de;13961378 memcpy (data1, de, len);13971379 de = (struct ext3_dir_entry_2 *) data1;13981380 top = data1 + len;
+3-3
fs/ext4/balloc.c
···684684 gdp = ext4_get_group_desc(sb, i, NULL);685685 if (!gdp)686686 continue;687687- desc_count += le16_to_cpu(gdp->bg_free_blocks_count);687687+ desc_count += ext4_free_blks_count(sb, gdp);688688 brelse(bitmap_bh);689689 bitmap_bh = ext4_read_block_bitmap(sb, i);690690 if (bitmap_bh == NULL)691691 continue;692692693693 x = ext4_count_free(bitmap_bh, sb->s_blocksize);694694- printk(KERN_DEBUG "group %lu: stored = %d, counted = %u\n",695695- i, le16_to_cpu(gdp->bg_free_blocks_count), x);694694+ printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n",695695+ i, ext4_free_blks_count(sb, gdp), x);696696 bitmap_count += x;697697 }698698 brelse(bitmap_bh);
···360360 final = ptrs;361361 } else {362362 ext4_warning(inode->i_sb, "ext4_block_to_path",363363- "block %lu > max",363363+ "block %lu > max in inode %lu",364364 i_block + direct_blocks +365365- indirect_blocks + double_blocks);365365+ indirect_blocks + double_blocks, inode->i_ino);366366 }367367 if (boundary)368368 *boundary = final - 1 - (i_block & (ptrs - 1));···28212821 filemap_write_and_wait(mapping);28222822 }2823282328242824- BUG_ON(!EXT4_JOURNAL(inode) &&28252825- EXT4_I(inode)->i_state & EXT4_STATE_JDATA);28262826-28272824 if (EXT4_JOURNAL(inode) && EXT4_I(inode)->i_state & EXT4_STATE_JDATA) {28282825 /*28292826 * This is a REALLY heavyweight approach, but the use of···36193622 * block pointed to itself, it would have been detached when36203623 * the block was cleared. Check for this instead of OOPSing.36213624 */36223622- if (bh2jh(this_bh))36253625+ if ((EXT4_JOURNAL(inode) == NULL) || bh2jh(this_bh))36233626 ext4_handle_dirty_metadata(handle, inode, this_bh);36243627 else36253628 ext4_error(inode->i_sb, __func__,
+1-1
fs/ext4/mballoc.c
···30253025 goto out_err;3026302630273027 ext4_debug("using block group %u(%d)\n", ac->ac_b_ex.fe_group,30283028- gdp->bg_free_blocks_count);30283028+ ext4_free_blks_count(sb, gdp));3029302930303030 err = ext4_journal_get_write_access(handle, gdp_bh);30313031 if (err)
+15-6
fs/ext4/namei.c
···13681368 struct fake_dirent *fde;1369136913701370 blocksize = dir->i_sb->s_blocksize;13711371- dxtrace(printk(KERN_DEBUG "Creating index\n"));13711371+ dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino));13721372 retval = ext4_journal_get_write_access(handle, bh);13731373 if (retval) {13741374 ext4_std_error(dir->i_sb, retval);···13771377 }13781378 root = (struct dx_root *) bh->b_data;1379137913801380+ /* The 0th block becomes the root, move the dirents out */13811381+ fde = &root->dotdot;13821382+ de = (struct ext4_dir_entry_2 *)((char *)fde +13831383+ ext4_rec_len_from_disk(fde->rec_len));13841384+ if ((char *) de >= (((char *) root) + blocksize)) {13851385+ ext4_error(dir->i_sb, __func__,13861386+ "invalid rec_len for '..' in inode %lu",13871387+ dir->i_ino);13881388+ brelse(bh);13891389+ return -EIO;13901390+ }13911391+ len = ((char *) root) + blocksize - (char *) de;13921392+13931393+ /* Allocate new block for the 0th block's dirents */13801394 bh2 = ext4_append(handle, dir, &block, &retval);13811395 if (!(bh2)) {13821396 brelse(bh);···13991385 EXT4_I(dir)->i_flags |= EXT4_INDEX_FL;14001386 data1 = bh2->b_data;1401138714021402- /* The 0th block becomes the root, move the dirents out */14031403- fde = &root->dotdot;14041404- de = (struct ext4_dir_entry_2 *)((char *)fde +14051405- ext4_rec_len_from_disk(fde->rec_len));14061406- len = ((char *) root) + blocksize - (char *) de;14071388 memcpy (data1, de, len);14081389 de = (struct ext4_dir_entry_2 *) data1;14091390 top = data1 + len;
···11#ifndef _LINUX_ATMBR2684_H22#define _LINUX_ATMBR2684_H3344+#include <linux/types.h>45#include <linux/atm.h>56#include <linux/if.h> /* For IFNAMSIZ */67
+1
include/linux/auto_fs4.h
···1212#define _LINUX_AUTO_FS4_H13131414/* Include common v3 definitions */1515+#include <linux/types.h>1516#include <linux/auto_fs.h>16171718/* autofs v4 definitions */
+2-1
include/linux/bfs_fs.h
···66#ifndef _LINUX_BFS_FS_H77#define _LINUX_BFS_FS_H8899+#include <linux/types.h>1010+911#define BFS_BSIZE_BITS 91012#define BFS_BSIZE (1<<BFS_BSIZE_BITS)1113···1816/* SVR4 vnode type values (bfs_inode->i_vtype) */1917#define BFS_VDIR 2L2018#define BFS_VREG 1L2121-22192320/* BFS inode layout on disk */2421struct bfs_inode {
+34-21
include/linux/bio.h
···144144 * bit 1 -- rw-ahead when set145145 * bit 2 -- barrier146146 * Insert a serialization point in the IO queue, forcing previously147147- * submitted IO to be completed before this oen is issued.147147+ * submitted IO to be completed before this one is issued.148148 * bit 3 -- synchronous I/O hint: the block layer will unplug immediately149149 * Note that this does NOT indicate that the IO itself is sync, just150150 * that the block layer will not postpone issue of this IO by plugging.···163163#define BIO_RW 0 /* Must match RW in req flags (blkdev.h) */164164#define BIO_RW_AHEAD 1 /* Must match FAILFAST in req flags */165165#define BIO_RW_BARRIER 2166166-#define BIO_RW_SYNC 3167167-#define BIO_RW_META 4168168-#define BIO_RW_DISCARD 5169169-#define BIO_RW_FAILFAST_DEV 6170170-#define BIO_RW_FAILFAST_TRANSPORT 7171171-#define BIO_RW_FAILFAST_DRIVER 8166166+#define BIO_RW_SYNCIO 3167167+#define BIO_RW_UNPLUG 4168168+#define BIO_RW_META 5169169+#define BIO_RW_DISCARD 6170170+#define BIO_RW_FAILFAST_DEV 7171171+#define BIO_RW_FAILFAST_TRANSPORT 8172172+#define BIO_RW_FAILFAST_DRIVER 9173173+174174+#define BIO_RW_SYNC (BIO_RW_SYNCIO | BIO_RW_UNPLUG)175175+176176+#define bio_rw_flagged(bio, flag) ((bio)->bi_rw & (1 << (flag)))177177+178178+/*179179+ * Old defines, these should eventually be replaced by direct usage of180180+ * bio_rw_flagged()181181+ */182182+#define bio_barrier(bio) bio_rw_flagged(bio, BIO_RW_BARRIER)183183+#define bio_sync(bio) bio_rw_flagged(bio, BIO_RW_SYNCIO)184184+#define bio_unplug(bio) bio_rw_flagged(bio, BIO_RW_UNPLUG)185185+#define bio_failfast_dev(bio) bio_rw_flagged(bio, BIO_RW_FAILFAST_DEV)186186+#define bio_failfast_transport(bio) \187187+ bio_rw_flagged(bio, BIO_RW_FAILFAST_TRANSPORT)188188+#define bio_failfast_driver(bio) \189189+ bio_rw_flagged(bio, BIO_RW_FAILFAST_DRIVER)190190+#define bio_rw_ahead(bio) bio_rw_flagged(bio, BIO_RW_AHEAD)191191+#define bio_rw_meta(bio) bio_rw_flagged(bio, BIO_RW_META)192192+#define bio_discard(bio) bio_rw_flagged(bio, BIO_RW_DISCARD)172193173194/*174195 * upper 16 bits of bi_rw define the io priority of this bio···214193#define bio_offset(bio) bio_iovec((bio))->bv_offset215194#define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx)216195#define bio_sectors(bio) ((bio)->bi_size >> 9)217217-#define bio_barrier(bio) ((bio)->bi_rw & (1 << BIO_RW_BARRIER))218218-#define bio_sync(bio) ((bio)->bi_rw & (1 << BIO_RW_SYNC))219219-#define bio_failfast_dev(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DEV))220220-#define bio_failfast_transport(bio) \221221- ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_TRANSPORT))222222-#define bio_failfast_driver(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DRIVER))223223-#define bio_rw_ahead(bio) ((bio)->bi_rw & (1 << BIO_RW_AHEAD))224224-#define bio_rw_meta(bio) ((bio)->bi_rw & (1 << BIO_RW_META))225225-#define bio_discard(bio) ((bio)->bi_rw & (1 << BIO_RW_DISCARD))226196#define bio_empty_barrier(bio) (bio_barrier(bio) && !bio_has_data(bio) && !bio_discard(bio))227197228198static inline unsigned int bio_cur_sectors(struct bio *bio)···324312 void *bip_buf; /* generated integrity data */325313 bio_end_io_t *bip_end_io; /* saved I/O completion fn */326314327327- int bip_error; /* saved I/O error */328315 unsigned int bip_size;329316330317 unsigned short bip_pool; /* pool the ivec came from */···451440452441#ifdef CONFIG_HIGHMEM453442/*454454- * remember to add offset! and never ever reenable interrupts between a455455- * bvec_kmap_irq and bvec_kunmap_irq!!443443+ * remember never ever reenable interrupts between a bvec_kmap_irq and444444+ * bvec_kunmap_irq!456445 *457446 * This function MUST be inlined - it plays with the CPU interrupt flags.458447 */459459-static inline char *bvec_kmap_irq(struct bio_vec *bvec, unsigned long *flags)448448+static __always_inline char *bvec_kmap_irq(struct bio_vec *bvec,449449+ unsigned long *flags)460450{461451 unsigned long addr;462452···473461 return (char *) addr + bvec->bv_offset;474462}475463476476-static inline void bvec_kunmap_irq(char *buffer, unsigned long *flags)464464+static __always_inline void bvec_kunmap_irq(char *buffer,465465+ unsigned long *flags)477466{478467 unsigned long ptr = (unsigned long) buffer & PAGE_MASK;479468
···11#ifndef _LINUX_DN_H22#define _LINUX_DN_H3344+#include <linux/types.h>55+46/*5768 DECnet Data Structures and Constants
-5
include/linux/dvb/audio.h
···2424#ifndef _DVBAUDIO_H_2525#define _DVBAUDIO_H_26262727-#ifdef __KERNEL__2827#include <linux/types.h>2929-#else3030-#include <stdint.h>3131-#endif3232-33283429typedef enum {3530 AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
···3030#ifndef _LINUX_EDD_H3131#define _LINUX_EDD_H32323333+#include <linux/types.h>3434+3335#define EDDNR 0x1e9 /* addr of number of edd_info structs at EDDBUF3436 in boot_params - treat this as 1 byte */3537#define EDDBUF 0xd00 /* addr of edd_info structs in boot_params */
···11#ifndef __LINUX_GENERIC_NETLINK_H22#define __LINUX_GENERIC_NETLINK_H3344+#include <linux/types.h>45#include <linux/netlink.h>5667#define GENL_NAMSIZ 16 /* length of family name */
···11#ifndef _LINUX_IF_LINK_H22#define _LINUX_IF_LINK_H3344+#include <linux/types.h>45#include <linux/netlink.h>5667/* The struct should be in sync with struct net_device_stats */
···11#ifndef _INET_DIAG_H_22#define _INET_DIAG_H_ 13344+#include <linux/types.h>55+46/* Just some random number */57#define TCPDIAG_GETSOCK 1868#define DCCPDIAG_GETSOCK 19
···1313#ifndef _LINUX_IPV6_ROUTE_H1414#define _LINUX_IPV6_ROUTE_H15151616+#include <linux/types.h>1717+1618#define RTF_DEFAULT 0x00010000 /* default - learned via ND */1719#define RTF_ALLONLINK 0x00020000 /* (deprecated and will be removed)1820 fallback, no routers on link */
···2525#ifndef KERNEL_IRDA_H2626#define KERNEL_IRDA_H27272828+#include <linux/types.h>2929+2830/* Please do *not* add any #include in this file, this file is2931 * included as-is in user space.3032 * Please fix the calling file to properly included needed files before
···3737#ifndef NFS_IDMAP_H3838#define NFS_IDMAP_H39394040+#include <linux/types.h>4141+4042/* XXX from bits/utmp.h */4143#define IDMAP_NAMESZ 1284244
+1-2
include/linux/nfsd/export.h
···1010#ifndef NFSD_EXPORT_H1111#define NFSD_EXPORT_H12121313-#include <asm/types.h>1414-#ifdef __KERNEL__1513# include <linux/types.h>1414+#ifdef __KERNEL__1615# include <linux/in.h>1716#endif1817
+1-2
include/linux/nfsd/nfsfh.h
···1414#ifndef _LINUX_NFSD_FH_H1515#define _LINUX_NFSD_FH_H16161717-#include <asm/types.h>1818-#ifdef __KERNEL__1917# include <linux/types.h>1818+#ifdef __KERNEL__2019# include <linux/string.h>2120# include <linux/fs.h>2221#endif
+1-2
include/linux/nfsd/syscall.h
···99#ifndef NFSD_SYSCALL_H1010#define NFSD_SYSCALL_H11111212-#include <asm/types.h>1313-#ifdef __KERNEL__1412# include <linux/types.h>1313+#ifdef __KERNEL__1514# include <linux/in.h>1615#endif 1716#include <linux/posix_types.h>
···11#ifndef __LINUX_PKT_CLS_H22#define __LINUX_PKT_CLS_H3344+#include <linux/types.h>45#include <linux/pkt_sched.h>5667/* I think i could have done better macros ; for now this is stolen from
+2
include/linux/pkt_sched.h
···11#ifndef __LINUX_PKT_SCHED_H22#define __LINUX_PKT_SCHED_H3344+#include <linux/types.h>55+46/* Logical priority bands not depending on specific packet scheduler.57 Every scheduler will map them to real traffic classes, if it has68 no more precise mechanism to classify packets.
+2
include/linux/ppp_defs.h
···2525 * OR MODIFICATIONS.2626 */27272828+#include <linux/types.h>2929+2830/*2931 * ==FILEVERSION 20000114==3032 *
···88#ifndef _LINUX_SIGNALFD_H99#define _LINUX_SIGNALFD_H10101111+#include <linux/types.h>1112/* For O_CLOEXEC and O_NONBLOCK */1213#include <linux/fcntl.h>1314
···2222#ifndef SPIDEV_H2323#define SPIDEV_H24242525+#include <linux/types.h>25262627/* User space versions of kernel symbols for SPI clocking modes,2728 * matching <linux/spi/spi.h>
···1616#ifndef _LINUX_TASKSTATS_H1717#define _LINUX_TASKSTATS_H18181919+#include <linux/types.h>2020+1921/* Format for per-task data returned to userland when2022 * - a task exits2123 * - listener requests stats for a task
···11#ifndef _LINUX_VIDEO_DECODER_H22#define _LINUX_VIDEO_DECODER_H3344+#include <linux/types.h>55+46#define HAVE_VIDEO_DECODER 15768struct video_decoder_capability { /* this name is too long */
+2
include/linux/video_encoder.h
···11#ifndef _LINUX_VIDEO_ENCODER_H22#define _LINUX_VIDEO_ENCODER_H3344+#include <linux/types.h>55+46struct video_encoder_capability { /* this name is too long */57 __u32 flags;68#define VIDEO_ENCODER_PAL 1 /* can encode PAL signal */
···22#define _LINUX_VIRTIO_BLK_H33/* This header is BSD licensed so anyone can use the definitions to implement44 * compatible drivers/servers. */55+#include <linux/types.h>56#include <linux/virtio_config.h>6778/* The ID for virtio_block */
+1
include/linux/virtio_console.h
···11#ifndef _LINUX_VIRTIO_CONSOLE_H22#define _LINUX_VIRTIO_CONSOLE_H33+#include <linux/types.h>34#include <linux/virtio_config.h>45/* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so56 * anyone can use the definitions to implement compatible drivers/servers. */
+1
include/linux/virtio_net.h
···22#define _LINUX_VIRTIO_NET_H33/* This header is BSD licensed so anyone can use the definitions to implement44 * compatible drivers/servers. */55+#include <linux/types.h>56#include <linux/virtio_config.h>6778/* The ID for virtio_net */
+4-4
include/media/v4l2-device.h
···9494/* Call the specified callback for all subdevs matching grp_id (if 0, then9595 match them all). Ignore any errors. Note that you cannot add or delete9696 a subdev while walking the subdevs list. */9797-#define v4l2_device_call_all(dev, grp_id, o, f, args...) \9797+#define v4l2_device_call_all(dev, grpid, o, f, args...) \9898 __v4l2_device_call_subdevs(dev, \9999- !(grp_id) || sd->grp_id == (grp_id), o, f , ##args)9999+ !(grpid) || sd->grp_id == (grpid), o, f , ##args)100100101101/* Call the specified callback for all subdevs matching grp_id (if 0, then102102 match them all). If the callback returns an error other than 0 or103103 -ENOIOCTLCMD, then return with that error code. Note that you cannot104104 add or delete a subdev while walking the subdevs list. */105105-#define v4l2_device_call_until_err(dev, grp_id, o, f, args...) \105105+#define v4l2_device_call_until_err(dev, grpid, o, f, args...) \106106 __v4l2_device_call_subdevs_until_err(dev, \107107- !(grp_id) || sd->grp_id == (grp_id), o, f , ##args)107107+ !(grpid) || sd->grp_id == (grpid), o, f , ##args)108108109109#endif
···368368 file = hugetlb_file_setup(name, size);369369 shp->mlock_user = current_user();370370 } else {371371- int acctflag = VM_ACCOUNT;371371+ int acctflag = 0;372372 /*373373 * Do not allow no accounting for OVERCOMMIT_NEVER, even374374 * if it's asked for.375375 */376376 if ((shmflg & SHM_NORESERVE) &&377377 sysctl_overcommit_memory != OVERCOMMIT_NEVER)378378- acctflag = 0;378378+ acctflag = VM_NORESERVE;379379 file = shmem_file_setup(name, size, acctflag);380380 }381381 error = PTR_ERR(file);
+12-1
kernel/cpuset.c
···6161#include <linux/cgroup.h>62626363/*6464+ * Workqueue for cpuset related tasks.6565+ *6666+ * Using kevent workqueue may cause deadlock when memory_migrate6767+ * is set. So we create a separate workqueue thread for cpuset.6868+ */6969+static struct workqueue_struct *cpuset_wq;7070+7171+/*6472 * Tracks how many cpusets are currently defined in system.6573 * When there is only one cpuset (the root cpuset) we can6674 * short circuit some hooks.···839831 */840832static void async_rebuild_sched_domains(void)841833{842842- schedule_work(&rebuild_sched_domains_work);834834+ queue_work(cpuset_wq, &rebuild_sched_domains_work);843835}844836845837/*···2119211121202112 hotcpu_notifier(cpuset_track_online_cpus, 0);21212113 hotplug_memory_notifier(cpuset_track_online_nodes, 10);21142114+21152115+ cpuset_wq = create_singlethread_workqueue("cpuset");21162116+ BUG_ON(!cpuset_wq);21222117}2123211821242119/**
+40-1
kernel/hrtimer.c
···501501 continue;502502 timer = rb_entry(base->first, struct hrtimer, node);503503 expires = ktime_sub(hrtimer_get_expires(timer), base->offset);504504+ /*505505+ * clock_was_set() has changed base->offset so the506506+ * result might be negative. Fix it up to prevent a507507+ * false positive in clockevents_program_event()508508+ */509509+ if (expires.tv64 < 0)510510+ expires.tv64 = 0;504511 if (expires.tv64 < cpu_base->expires_next.tv64)505512 cpu_base->expires_next = expires;506513 }···1165115811661159#ifdef CONFIG_HIGH_RES_TIMERS1167116011611161+static int force_clock_reprogram;11621162+11631163+/*11641164+ * After 5 iteration's attempts, we consider that hrtimer_interrupt()11651165+ * is hanging, which could happen with something that slows the interrupt11661166+ * such as the tracing. Then we force the clock reprogramming for each future11671167+ * hrtimer interrupts to avoid infinite loops and use the min_delta_ns11681168+ * threshold that we will overwrite.11691169+ * The next tick event will be scheduled to 3 times we currently spend on11701170+ * hrtimer_interrupt(). This gives a good compromise, the cpus will spend11711171+ * 1/4 of their time to process the hrtimer interrupts. This is enough to11721172+ * let it running without serious starvation.11731173+ */11741174+11751175+static inline void11761176+hrtimer_interrupt_hanging(struct clock_event_device *dev,11771177+ ktime_t try_time)11781178+{11791179+ force_clock_reprogram = 1;11801180+ dev->min_delta_ns = (unsigned long)try_time.tv64 * 3;11811181+ printk(KERN_WARNING "hrtimer: interrupt too slow, "11821182+ "forcing clock min delta to %lu ns\n", dev->min_delta_ns);11831183+}11681184/*11691185 * High resolution timer interrupt11701186 * Called with interrupts disabled···11971167 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);11981168 struct hrtimer_clock_base *base;11991169 ktime_t expires_next, now;11701170+ int nr_retries = 0;12001171 int i;1201117212021173 BUG_ON(!cpu_base->hres_active);···12051174 dev->next_event.tv64 = KTIME_MAX;1206117512071176 retry:11771177+ /* 5 retries is enough to notice a hang */11781178+ if (!(++nr_retries % 5))11791179+ hrtimer_interrupt_hanging(dev, ktime_sub(ktime_get(), now));11801180+12081181 now = ktime_get();1209118212101183 expires_next.tv64 = KTIME_MAX;···1261122612621227 /* Reprogramming necessary ? */12631228 if (expires_next.tv64 != KTIME_MAX) {12641264- if (tick_program_event(expires_next, 0))12291229+ if (tick_program_event(expires_next, force_clock_reprogram))12651230 goto retry;12661231 }12671232}···16151580 break;1616158116171582#ifdef CONFIG_HOTPLUG_CPU15831583+ case CPU_DYING:15841584+ case CPU_DYING_FROZEN:15851585+ clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DYING, &scpu);15861586+ break;16181587 case CPU_DEAD:16191588 case CPU_DEAD_FROZEN:16201589 {
+2
kernel/irq/chip.c
···383383out_unlock:384384 spin_unlock(&desc->lock);385385}386386+EXPORT_SYMBOL_GPL(handle_level_irq);386387387388/**388389 * handle_fasteoi_irq - irq handler for transparent controllers···594593 }595594 spin_unlock_irqrestore(&desc->lock, flags);596595}596596+EXPORT_SYMBOL_GPL(__set_irq_handler);597597598598void599599set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
+25-10
kernel/module.c
···573573/* Init the unload section of the module. */574574static void module_unload_init(struct module *mod)575575{576576- unsigned int i;576576+ int cpu;577577578578 INIT_LIST_HEAD(&mod->modules_which_use_me);579579- for (i = 0; i < NR_CPUS; i++)580580- local_set(&mod->ref[i].count, 0);579579+ for_each_possible_cpu(cpu)580580+ local_set(__module_ref_addr(mod, cpu), 0);581581 /* Hold reference count during initialization. */582582- local_set(&mod->ref[raw_smp_processor_id()].count, 1);582582+ local_set(__module_ref_addr(mod, raw_smp_processor_id()), 1);583583 /* Backwards compatibility macros put refcount during init. */584584 mod->waiter = current;585585}···717717718718unsigned int module_refcount(struct module *mod)719719{720720- unsigned int i, total = 0;720720+ unsigned int total = 0;721721+ int cpu;721722722722- for (i = 0; i < NR_CPUS; i++)723723- total += local_read(&mod->ref[i].count);723723+ for_each_possible_cpu(cpu)724724+ total += local_read(__module_ref_addr(mod, cpu));724725 return total;725726}726727EXPORT_SYMBOL(module_refcount);···895894{896895 if (module) {897896 unsigned int cpu = get_cpu();898898- local_dec(&module->ref[cpu].count);897897+ local_dec(__module_ref_addr(module, cpu));899898 /* Maybe they're waiting for us to drop reference? */900899 if (unlikely(!module_is_live(module)))901900 wake_up_process(module->waiter);···14651464 kfree(mod->args);14661465 if (mod->percpu)14671466 percpu_modfree(mod->percpu);14681468-14671467+#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)14681468+ if (mod->refptr)14691469+ percpu_modfree(mod->refptr);14701470+#endif14691471 /* Free lock-classes: */14701472 lockdep_free_key_range(mod->module_core, mod->core_size);14711473···20152011 if (err < 0)20162012 goto free_mod;2017201320142014+#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)20152015+ mod->refptr = percpu_modalloc(sizeof(local_t), __alignof__(local_t),20162016+ mod->name);20172017+ if (!mod->refptr) {20182018+ err = -ENOMEM;20192019+ goto free_mod;20202020+ }20212021+#endif20182022 if (pcpuindex) {20192023 /* We have a special allocation for this section. */20202024 percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size,···20302018 mod->name);20312019 if (!percpu) {20322020 err = -ENOMEM;20332033- goto free_mod;20212021+ goto free_percpu;20342022 }20352023 sechdrs[pcpuindex].sh_flags &= ~(unsigned long)SHF_ALLOC;20362024 mod->percpu = percpu;···22942282 free_percpu:22952283 if (percpu)22962284 percpu_modfree(percpu);22852285+#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)22862286+ percpu_modfree(mod->refptr);22872287+#endif22972288 free_mod:22982289 kfree(args);22992290 free_hdr:
+10
kernel/sched.c
···22662266 if (!sched_feat(SYNC_WAKEUPS))22672267 sync = 0;2268226822692269+ if (!sync) {22702270+ if (current->se.avg_overlap < sysctl_sched_migration_cost &&22712271+ p->se.avg_overlap < sysctl_sched_migration_cost)22722272+ sync = 1;22732273+ } else {22742274+ if (current->se.avg_overlap >= sysctl_sched_migration_cost ||22752275+ p->se.avg_overlap >= sysctl_sched_migration_cost)22762276+ sync = 0;22772277+ }22782278+22692279#ifdef CONFIG_SMP22702280 if (sched_feat(LB_WAKEUP_UPDATE)) {22712281 struct sched_domain *sd;
+21-11
kernel/sched_fair.c
···719719 __enqueue_entity(cfs_rq, se);720720}721721722722-static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)722722+static void __clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)723723{724724 if (cfs_rq->last == se)725725 cfs_rq->last = NULL;726726727727 if (cfs_rq->next == se)728728 cfs_rq->next = NULL;729729+}730730+731731+static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)732732+{733733+ for_each_sched_entity(se)734734+ __clear_buddies(cfs_rq_of(se), se);729735}730736731737static void···774768775769 ideal_runtime = sched_slice(cfs_rq, curr);776770 delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;777777- if (delta_exec > ideal_runtime)771771+ if (delta_exec > ideal_runtime) {778772 resched_task(rq_of(cfs_rq)->curr);773773+ /*774774+ * The current task ran long enough, ensure it doesn't get775775+ * re-elected due to buddy favours.776776+ */777777+ clear_buddies(cfs_rq, curr);778778+ }779779}780780781781static void···11911179 int idx, unsigned long load, unsigned long this_load,11921180 unsigned int imbalance)11931181{11941194- struct task_struct *curr = this_rq->curr;11951195- struct task_group *tg;11961182 unsigned long tl = this_load;11971183 unsigned long tl_per_task;11841184+ struct task_group *tg;11981185 unsigned long weight;11991186 int balanced;1200118712011188 if (!(this_sd->flags & SD_WAKE_AFFINE) || !sched_feat(AFFINE_WAKEUPS))12021189 return 0;12031203-12041204- if (sync && (curr->se.avg_overlap > sysctl_sched_migration_cost ||12051205- p->se.avg_overlap > sysctl_sched_migration_cost))12061206- sync = 0;1207119012081191 /*12091192 * If sync wakeup then subtract the (maximum possible)···14261419 if (!sched_feat(WAKEUP_PREEMPT))14271420 return;1428142114291429- if (sched_feat(WAKEUP_OVERLAP) && (sync ||14301430- (se->avg_overlap < sysctl_sched_migration_cost &&14311431- pse->avg_overlap < sysctl_sched_migration_cost))) {14221422+ if (sched_feat(WAKEUP_OVERLAP) && sync) {14321423 resched_task(curr);14331424 return;14341425 }···1457145214581453 do {14591454 se = pick_next_entity(cfs_rq);14551455+ /*14561456+ * If se was a buddy, clear it so that it will have to earn14571457+ * the favour again.14581458+ */14591459+ __clear_buddies(cfs_rq, se);14601460 set_next_entity(cfs_rq, se);14611461 cfs_rq = group_cfs_rq(se);14621462 } while (cfs_rq);
+2-2
kernel/sched_rt.c
···968968 if ((this_cpu != -1) && cpu_isset(this_cpu, *mask))969969 return this_cpu;970970971971- first = first_cpu(*mask);972972- if (first != NR_CPUS)971971+ first = cpumask_first(mask);972972+ if (first < nr_cpu_ids)973973 return first;974974975975 return -1;
···1818enum {1919 CSD_FLAG_WAIT = 0x01,2020 CSD_FLAG_ALLOC = 0x02,2121+ CSD_FLAG_LOCK = 0x04,2122};22232324struct call_function_data {···187186 if (data_flags & CSD_FLAG_WAIT) {188187 smp_wmb();189188 data->flags &= ~CSD_FLAG_WAIT;189189+ } else if (data_flags & CSD_FLAG_LOCK) {190190+ smp_wmb();191191+ data->flags &= ~CSD_FLAG_LOCK;190192 } else if (data_flags & CSD_FLAG_ALLOC)191193 kfree(data);192194 }···199195 smp_read_barrier_depends();200196 }201197}198198+199199+static DEFINE_PER_CPU(struct call_single_data, csd_data);202200203201/*204202 * smp_call_function_single - Run a function on a specific CPU···230224 func(info);231225 local_irq_restore(flags);232226 } else if ((unsigned)cpu < nr_cpu_ids && cpu_online(cpu)) {233233- struct call_single_data *data = NULL;227227+ struct call_single_data *data;234228235229 if (!wait) {230230+ /*231231+ * We are calling a function on a single CPU232232+ * and we are not going to wait for it to finish.233233+ * We first try to allocate the data, but if we234234+ * fail, we fall back to use a per cpu data to pass235235+ * the information to that CPU. Since all callers236236+ * of this code will use the same data, we must237237+ * synchronize the callers to prevent a new caller238238+ * from corrupting the data before the callee239239+ * can access it.240240+ *241241+ * The CSD_FLAG_LOCK is used to let us know when242242+ * the IPI handler is done with the data.243243+ * The first caller will set it, and the callee244244+ * will clear it. The next caller must wait for245245+ * it to clear before we set it again. This246246+ * will make sure the callee is done with the247247+ * data before a new caller will use it.248248+ */236249 data = kmalloc(sizeof(*data), GFP_ATOMIC);237250 if (data)238251 data->flags = CSD_FLAG_ALLOC;239239- }240240- if (!data) {252252+ else {253253+ data = &per_cpu(csd_data, me);254254+ while (data->flags & CSD_FLAG_LOCK)255255+ cpu_relax();256256+ data->flags = CSD_FLAG_LOCK;257257+ }258258+ } else {241259 data = &d;242260 data->flags = CSD_FLAG_WAIT;243261 }
+19-7
kernel/time/tick-common.c
···274274}275275276276/*277277+ * Transfer the do_timer job away from a dying cpu.278278+ *279279+ * Called with interrupts disabled.280280+ */281281+static void tick_handover_do_timer(int *cpup)282282+{283283+ if (*cpup == tick_do_timer_cpu) {284284+ int cpu = cpumask_first(cpu_online_mask);285285+286286+ tick_do_timer_cpu = (cpu < nr_cpu_ids) ? cpu :287287+ TICK_DO_TIMER_NONE;288288+ }289289+}290290+291291+/*277292 * Shutdown an event device on a given cpu:278293 *279294 * This is called on a life CPU, when a CPU is dead. So we cannot···311296 dev->mode = CLOCK_EVT_MODE_UNUSED;312297 clockevents_exchange_device(dev, NULL);313298 td->evtdev = NULL;314314- }315315- /* Transfer the do_timer job away from this cpu */316316- if (*cpup == tick_do_timer_cpu) {317317- int cpu = cpumask_first(cpu_online_mask);318318-319319- tick_do_timer_cpu = (cpu < nr_cpu_ids) ? cpu :320320- TICK_DO_TIMER_NONE;321299 }322300 spin_unlock_irqrestore(&tick_device_lock, flags);323301}···363355 case CLOCK_EVT_NOTIFY_BROADCAST_ENTER:364356 case CLOCK_EVT_NOTIFY_BROADCAST_EXIT:365357 tick_broadcast_oneshot_control(reason);358358+ break;359359+360360+ case CLOCK_EVT_NOTIFY_CPU_DYING:361361+ tick_handover_do_timer(dev);366362 break;367363368364 case CLOCK_EVT_NOTIFY_CPU_DEAD:
+27
kernel/trace/ftrace.c
···1717#include <linux/clocksource.h>1818#include <linux/kallsyms.h>1919#include <linux/seq_file.h>2020+#include <linux/suspend.h>2021#include <linux/debugfs.h>2122#include <linux/hardirq.h>2223#include <linux/kthread.h>···19661965#ifdef CONFIG_FUNCTION_GRAPH_TRACER1967196619681967static atomic_t ftrace_graph_active;19681968+static struct notifier_block ftrace_suspend_notifier;1969196919701970int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)19711971{···20452043 return ret;20462044}2047204520462046+/*20472047+ * Hibernation protection.20482048+ * The state of the current task is too much unstable during20492049+ * suspend/restore to disk. We want to protect against that.20502050+ */20512051+static int20522052+ftrace_suspend_notifier_call(struct notifier_block *bl, unsigned long state,20532053+ void *unused)20542054+{20552055+ switch (state) {20562056+ case PM_HIBERNATION_PREPARE:20572057+ pause_graph_tracing();20582058+ break;20592059+20602060+ case PM_POST_HIBERNATION:20612061+ unpause_graph_tracing();20622062+ break;20632063+ }20642064+ return NOTIFY_DONE;20652065+}20662066+20482067int register_ftrace_graph(trace_func_graph_ret_t retfunc,20492068 trace_func_graph_ent_t entryfunc)20502069{20512070 int ret = 0;2052207120532072 mutex_lock(&ftrace_sysctl_lock);20732073+20742074+ ftrace_suspend_notifier.notifier_call = ftrace_suspend_notifier_call;20752075+ register_pm_notifier(&ftrace_suspend_notifier);2054207620552077 atomic_inc(&ftrace_graph_active);20562078 ret = start_graph_tracing();···21012075 ftrace_graph_return = (trace_func_graph_ret_t)ftrace_stub;21022076 ftrace_graph_entry = ftrace_graph_entry_stub;21032077 ftrace_shutdown(FTRACE_STOP_FUNC_RET);20782078+ unregister_pm_notifier(&ftrace_suspend_notifier);2104207921052080 mutex_unlock(&ftrace_sysctl_lock);21062081}
+9-6
kernel/trace/ring_buffer.c
···246246 return 0;247247}248248249249-#define BUF_PAGE_SIZE (PAGE_SIZE - sizeof(struct buffer_data_page))249249+#define BUF_PAGE_SIZE (PAGE_SIZE - offsetof(struct buffer_data_page, data))250250251251/*252252 * head_page == tail_page && head == tail then buffer is empty.···10251025 }1026102610271027 if (next_page == head_page) {10281028- if (!(buffer->flags & RB_FL_OVERWRITE)) {10291029- /* reset write */10301030- if (tail <= BUF_PAGE_SIZE)10311031- local_set(&tail_page->write, tail);10281028+ if (!(buffer->flags & RB_FL_OVERWRITE))10321029 goto out_unlock;10331033- }1034103010351031 /* tail_page has not moved yet? */10361032 if (tail_page == cpu_buffer->tail_page) {···11011105 return event;1102110611031107 out_unlock:11081108+ /* reset write */11091109+ if (tail <= BUF_PAGE_SIZE)11101110+ local_set(&tail_page->write, tail);11111111+11041112 __raw_spin_unlock(&cpu_buffer->lock);11051113 local_irq_restore(flags);11061114 return NULL;···2174217421752175 cpu_buffer->overrun = 0;21762176 cpu_buffer->entries = 0;21772177+21782178+ cpu_buffer->write_stamp = 0;21792179+ cpu_buffer->read_stamp = 0;21772180}2178218121792182/**
+3-2
kernel/trace/trace.c
···40404141#define TRACE_BUFFER_FLAGS (RB_FL_OVERWRITE)42424343-unsigned long __read_mostly tracing_max_latency = (cycle_t)ULONG_MAX;4343+unsigned long __read_mostly tracing_max_latency;4444unsigned long __read_mostly tracing_thresh;45454646/*···37363736 * it if we decide to change what log level the ftrace dump37373737 * should be at.37383738 */37393739-#define KERN_TRACE KERN_INFO37393739+#define KERN_TRACE KERN_EMERG3740374037413741static void37423742trace_printk_seq(struct trace_seq *s)···37703770 dump_ran = 1;3771377137723772 /* No turning back! */37733773+ tracing_off();37733774 ftrace_kill();3774377537753776 for_each_tracing_cpu(cpu) {
+1
kernel/trace/trace_irqsoff.c
···380380381381static void __irqsoff_tracer_init(struct trace_array *tr)382382{383383+ tracing_max_latency = 0;383384 irqsoff_trace = tr;384385 /* make sure that the tracer is visible */385386 smp_wmb();
···2222 * Kernel threads bound to a single CPU can safely use2323 * smp_processor_id():2424 */2525- if (cpus_equal(current->cpus_allowed, cpumask_of_cpu(this_cpu)))2525+ if (cpumask_equal(¤t->cpus_allowed, cpumask_of(this_cpu)))2626 goto out;27272828 /*
+2-45
mm/mlock.c
···294294 *295295 * return number of pages [> 0] to be removed from locked_vm on success296296 * of "special" vmas.297297- *298298- * return negative error if vma spanning @start-@range disappears while299299- * mmap semaphore is dropped. Unlikely?300297 */301298long mlock_vma_pages_range(struct vm_area_struct *vma,302299 unsigned long start, unsigned long end)303300{304304- struct mm_struct *mm = vma->vm_mm;305301 int nr_pages = (end - start) / PAGE_SIZE;306302 BUG_ON(!(vma->vm_flags & VM_LOCKED));307303···310314 if (!((vma->vm_flags & (VM_DONTEXPAND | VM_RESERVED)) ||311315 is_vm_hugetlb_page(vma) ||312316 vma == get_gate_vma(current))) {313313- long error;314314- downgrade_write(&mm->mmap_sem);315317316316- error = __mlock_vma_pages_range(vma, start, end, 1);317317-318318- up_read(&mm->mmap_sem);319319- /* vma can change or disappear */320320- down_write(&mm->mmap_sem);321321- vma = find_vma(mm, start);322322- /* non-NULL vma must contain @start, but need to check @end */323323- if (!vma || end > vma->vm_end)324324- return -ENOMEM;325325-326326- return 0; /* hide other errors from mmap(), et al */318318+ return __mlock_vma_pages_range(vma, start, end, 1);327319 }328320329321 /*···422438 vma->vm_flags = newflags;423439424440 if (lock) {425425- /*426426- * mmap_sem is currently held for write. Downgrade the write427427- * lock to a read lock so that other faults, mmap scans, ...428428- * while we fault in all pages.429429- */430430- downgrade_write(&mm->mmap_sem);431431-432441 ret = __mlock_vma_pages_range(vma, start, end, 1);433442434434- /*435435- * Need to reacquire mmap sem in write mode, as our callers436436- * expect this. We have no support for atomically upgrading437437- * a sem to write, so we need to check for ranges while sem438438- * is unlocked.439439- */440440- up_read(&mm->mmap_sem);441441- /* vma can change or disappear */442442- down_write(&mm->mmap_sem);443443- *prev = find_vma(mm, start);444444- /* non-NULL *prev must contain @start, but need to check @end */445445- if (!(*prev) || end > (*prev)->vm_end)446446- ret = -ENOMEM;447447- else if (ret > 0) {443443+ if (ret > 0) {448444 mm->locked_vm -= ret;449445 ret = 0;450446 } else451447 ret = __mlock_posix_error_return(ret); /* translate if needed */452448 } else {453453- /*454454- * TODO: for unlocking, pages will already be resident, so455455- * we don't need to wait for allocations/reclaim/pagein, ...456456- * However, unlocking a very large region can still take a457457- * while. Should we downgrade the semaphore for both lock458458- * AND unlock ?459459- */460449 __mlock_vma_pages_range(vma, start, end, 0);461450 }462451
+29-24
mm/mmap.c
···658658 validate_mm(mm);659659}660660661661+/* Flags that can be inherited from an existing mapping when merging */662662+#define VM_MERGEABLE_FLAGS (VM_CAN_NONLINEAR)663663+661664/*662665 * If the vma has a ->close operation then the driver probably needs to release663666 * per-vma resources, so we don't attempt to merge those.···668665static inline int is_mergeable_vma(struct vm_area_struct *vma,669666 struct file *file, unsigned long vm_flags)670667{671671- if (vma->vm_flags != vm_flags)668668+ if ((vma->vm_flags ^ vm_flags) & ~VM_MERGEABLE_FLAGS)672669 return 0;673670 if (vma->vm_file != file)674671 return 0;···10901087 mapping_cap_account_dirty(vma->vm_file->f_mapping);10911088}1092108910901090+/*10911091+ * We account for memory if it's a private writeable mapping,10921092+ * and VM_NORESERVE wasn't set.10931093+ */10941094+static inline int accountable_mapping(unsigned int vm_flags)10951095+{10961096+ return (vm_flags & (VM_NORESERVE | VM_SHARED | VM_WRITE)) == VM_WRITE;10971097+}10981098+10931099unsigned long mmap_region(struct file *file, unsigned long addr,10941100 unsigned long len, unsigned long flags,10951101 unsigned int vm_flags, unsigned long pgoff,···11261114 if (!may_expand_vm(mm, len >> PAGE_SHIFT))11271115 return -ENOMEM;1128111611291129- if (flags & MAP_NORESERVE)11171117+ /*11181118+ * Set 'VM_NORESERVE' if we should not account for the11191119+ * memory use of this mapping. We only honor MAP_NORESERVE11201120+ * if we're allowed to overcommit memory.11211121+ */11221122+ if ((flags & MAP_NORESERVE) && sysctl_overcommit_memory != OVERCOMMIT_NEVER)11231123+ vm_flags |= VM_NORESERVE;11241124+ if (!accountable)11301125 vm_flags |= VM_NORESERVE;1131112611321132- if (accountable && (!(flags & MAP_NORESERVE) ||11331133- sysctl_overcommit_memory == OVERCOMMIT_NEVER)) {11341134- if (vm_flags & VM_SHARED) {11351135- /* Check memory availability in shmem_file_setup? */11361136- vm_flags |= VM_ACCOUNT;11371137- } else if (vm_flags & VM_WRITE) {11381138- /*11391139- * Private writable mapping: check memory availability11401140- */11411141- charged = len >> PAGE_SHIFT;11421142- if (security_vm_enough_memory(charged))11431143- return -ENOMEM;11441144- vm_flags |= VM_ACCOUNT;11451145- }11271127+ /*11281128+ * Private writable mapping: check memory availability11291129+ */11301130+ if (accountable_mapping(vm_flags)) {11311131+ charged = len >> PAGE_SHIFT;11321132+ if (security_vm_enough_memory(charged))11331133+ return -ENOMEM;11341134+ vm_flags |= VM_ACCOUNT;11461135 }1147113611481137 /*···11931180 if (error)11941181 goto free_vma;11951182 }11961196-11971197- /* We set VM_ACCOUNT in a shared mapping's vm_flags, to inform11981198- * shmem_zero_setup (perhaps called through /dev/zero's ->mmap)11991199- * that memory reservation must be checked; but that reservation12001200- * belongs to shared memory object, not to vma: so now clear it.12011201- */12021202- if ((vm_flags & (VM_SHARED|VM_ACCOUNT)) == (VM_SHARED|VM_ACCOUNT))12031203- vma->vm_flags &= ~VM_ACCOUNT;1204118312051184 /* Can addr have changed??12061185 *
···498498 * calculate the number of reg rules we will need. We will need one499499 * for each channel subband */500500 while (country_ie_len >= 3) {501501+ int end_channel = 0;501502 struct ieee80211_country_ie_triplet *triplet =502503 (struct ieee80211_country_ie_triplet *) country_ie;503504 int cur_sub_max_channel = 0, cur_channel = 0;···510509 continue;511510 }512511512512+ /* 2 GHz */513513+ if (triplet->chans.first_channel <= 14)514514+ end_channel = triplet->chans.first_channel +515515+ triplet->chans.num_channels;516516+ else517517+ /*518518+ * 5 GHz -- For example in country IEs if the first519519+ * channel given is 36 and the number of channels is 4520520+ * then the individual channel numbers defined for the521521+ * 5 GHz PHY by these parameters are: 36, 40, 44, and 48522522+ * and not 36, 37, 38, 39.523523+ *524524+ * See: http://tinyurl.com/11d-clarification525525+ */526526+ end_channel = triplet->chans.first_channel +527527+ (4 * (triplet->chans.num_channels - 1));528528+513529 cur_channel = triplet->chans.first_channel;514514- cur_sub_max_channel = ieee80211_channel_to_frequency(515515- cur_channel + triplet->chans.num_channels);530530+ cur_sub_max_channel = end_channel;516531517532 /* Basic sanity check */518533 if (cur_sub_max_channel < cur_channel)···607590 end_channel = triplet->chans.first_channel +608591 triplet->chans.num_channels;609592 else610610- /*611611- * 5 GHz -- For example in country IEs if the first612612- * channel given is 36 and the number of channels is 4613613- * then the individual channel numbers defined for the614614- * 5 GHz PHY by these parameters are: 36, 40, 44, and 48615615- * and not 36, 37, 38, 39.616616- *617617- * See: http://tinyurl.com/11d-clarification618618- */619593 end_channel = triplet->chans.first_channel +620594 (4 * (triplet->chans.num_channels - 1));621595···12841276 if (intersected_rd) {12851277 printk(KERN_DEBUG "cfg80211: We intersect both of these "12861278 "and get:\n");12871287- print_regdomain_info(rd);12791279+ print_regdomain_info(intersected_rd);12881280 return;12891281 }12901282 printk(KERN_DEBUG "cfg80211: Intersection between both failed\n");