···954 results in some sort of conflict internally,955 this hook allows it to do that.956957-elevator_dispatch_fn fills the dispatch queue with ready requests.958 I/O schedulers are free to postpone requests by959 not filling the dispatch queue unless @force960 is non-zero. Once dispatched, I/O schedulers961 are not allowed to manipulate the requests -962 they belong to generic dispatch queue.963964-elevator_add_req_fn called to add a new request into the scheduler965966elevator_queue_empty_fn returns true if the merge queue is empty.967 Drivers shouldn't use this, but rather check···991elevator_deactivate_req_fn Called when device driver decides to delay992 a request by requeueing it.993994-elevator_init_fn995elevator_exit_fn Allocate and free any elevator specific storage996 for a queue.997
···954 results in some sort of conflict internally,955 this hook allows it to do that.956957+elevator_dispatch_fn* fills the dispatch queue with ready requests.958 I/O schedulers are free to postpone requests by959 not filling the dispatch queue unless @force960 is non-zero. Once dispatched, I/O schedulers961 are not allowed to manipulate the requests -962 they belong to generic dispatch queue.963964+elevator_add_req_fn* called to add a new request into the scheduler965966elevator_queue_empty_fn returns true if the merge queue is empty.967 Drivers shouldn't use this, but rather check···991elevator_deactivate_req_fn Called when device driver decides to delay992 a request by requeueing it.993994+elevator_init_fn*995elevator_exit_fn Allocate and free any elevator specific storage996 for a queue.997
···1+Queue sysfs files2+=================3+4+This text file will detail the queue files that are located in the sysfs tree5+for each block device. Note that stacked devices typically do not export6+any settings, since their queue merely functions are a remapping target.7+These files are the ones found in the /sys/block/xxx/queue/ directory.8+9+Files denoted with a RO postfix are readonly and the RW postfix means10+read-write.11+12+hw_sector_size (RO)13+-------------------14+This is the hardware sector size of the device, in bytes.15+16+max_hw_sectors_kb (RO)17+----------------------18+This is the maximum number of kilobytes supported in a single data transfer.19+20+max_sectors_kb (RW)21+-------------------22+This is the maximum number of kilobytes that the block layer will allow23+for a filesystem request. Must be smaller than or equal to the maximum24+size allowed by the hardware.25+26+nomerges (RW)27+-------------28+This enables the user to disable the lookup logic involved with IO merging29+requests in the block layer. Merging may still occur through a direct30+1-hit cache, since that comes for (almost) free. The IO scheduler will not31+waste cycles doing tree/hash lookups for merges if nomerges is 1. Defaults32+to 0, enabling all merges.33+34+nr_requests (RW)35+----------------36+This controls how many requests may be allocated in the block layer for37+read or write requests. Note that the total allocated number may be twice38+this amount, since it applies only to reads or writes (not the accumulated39+sum).40+41+read_ahead_kb (RW)42+------------------43+Maximum number of kilobytes to read-ahead for filesystems on this block44+device.45+46+rq_affinity (RW)47+----------------48+If this option is enabled, the block layer will migrate request completions49+to the CPU that originally submitted the request. For some workloads50+this provides a significant reduction in CPU cycles due to caching effects.51+52+scheduler (RW)53+--------------54+When read, this file will display the current and available IO schedulers55+for this block device. The currently active IO scheduler will be enclosed56+in [] brackets. Writing an IO scheduler name to this file will switch57+control of this block device to that new IO scheduler. Note that writing58+an IO scheduler name to this file will attempt to load that IO scheduler59+module, if it isn't already present in the system.60+61+62+63+Jens Axboe <jens.axboe@oracle.com>, February 2009
+6-19
Documentation/networking/alias.txt
···2IP-Aliasing:3============45-IP-aliases are additional IP-addresses/masks hooked up to a base 6-interface by adding a colon and a string when running ifconfig. 00007This string is usually numeric, but this is not a must.8-9-IP-Aliases are avail if CONFIG_INET (`standard' IPv4 networking) 10-is configured in the kernel.11-1213o Alias creation.14 Alias creation is done by 'magic' interface naming: eg. to create a···3839 If the base device is shut down the added aliases will be deleted 40 too.41-42-43-Contact44--------45-Please finger or e-mail me:46- Juan Jose Ciarlante <jjciarla@raiz.uncu.edu.ar>47-48-Updated by Erik Schoenfelder <schoenfr@gaertner.DE>49-50-; local variables:51-; mode: indented-text52-; mode: auto-fill53-; end:
···2IP-Aliasing:3============45+IP-aliases are an obsolete way to manage multiple IP-addresses/masks6+per interface. Newer tools such as iproute2 support multiple7+address/prefixes per interface, but aliases are still supported8+for backwards compatibility.9+10+An alias is formed by adding a colon and a string when running ifconfig.11This string is usually numeric, but this is not a must.00001213o Alias creation.14 Alias creation is done by 'magic' interface naming: eg. to create a···3839 If the base device is shut down the added aliases will be deleted 40 too.0000000000000
···1+MPC5200 Device Tree Bindings2+----------------------------3+4+(c) 2006-2009 Secret Lab Technologies Ltd5+Grant Likely <grant.likely@secretlab.ca>6+7+Naming conventions8+------------------9+For mpc5200 on-chip devices, the format for each compatible value is10+<chip>-<device>[-<mode>]. The OS should be able to match a device driver11+to the device based solely on the compatible value. If two drivers12+match on the compatible list; the 'most compatible' driver should be13+selected.14+15+The split between the MPC5200 and the MPC5200B leaves a bit of a16+conundrum. How should the compatible property be set up to provide17+maximum compatibility information; but still accurately describe the18+chip? For the MPC5200; the answer is easy. Most of the SoC devices19+originally appeared on the MPC5200. Since they didn't exist anywhere20+else; the 5200 compatible properties will contain only one item;21+"fsl,mpc5200-<device>".22+23+The 5200B is almost the same as the 5200, but not quite. It fixes24+silicon bugs and it adds a small number of enhancements. Most of the25+devices either provide exactly the same interface as on the 5200. A few26+devices have extra functions but still have a backwards compatible mode.27+To express this information as completely as possible, 5200B device trees28+should have two items in the compatible list:29+ compatible = "fsl,mpc5200b-<device>","fsl,mpc5200-<device>";30+31+It is *strongly* recommended that 5200B device trees follow this convention32+(instead of only listing the base mpc5200 item).33+34+ie. ethernet on mpc5200: compatible = "fsl,mpc5200-fec";35+ ethernet on mpc5200b: compatible = "fsl,mpc5200b-fec", "fsl,mpc5200-fec";36+37+Modal devices, like PSCs, also append the configured function to the38+end of the compatible field. ie. A PSC in i2s mode would specify39+"fsl,mpc5200-psc-i2s", not "fsl,mpc5200-i2s". This convention is chosen to40+avoid naming conflicts with non-psc devices providing the same41+function. For example, "fsl,mpc5200-spi" and "fsl,mpc5200-psc-spi" describe42+the mpc5200 simple spi device and a PSC spi mode respectively.43+44+At the time of writing, exact chip may be either 'fsl,mpc5200' or45+'fsl,mpc5200b'.46+47+The soc node48+------------49+This node describes the on chip SOC peripherals. Every mpc5200 based50+board will have this node, and as such there is a common naming51+convention for SOC devices.52+53+Required properties:54+name description55+---- -----------56+ranges Memory range of the internal memory mapped registers.57+ Should be <0 [baseaddr] 0xc000>58+reg Should be <[baseaddr] 0x100>59+compatible mpc5200: "fsl,mpc5200-immr"60+ mpc5200b: "fsl,mpc5200b-immr"61+system-frequency 'fsystem' frequency in Hz; XLB, IPB, USB and PCI62+ clocks are derived from the fsystem clock.63+bus-frequency IPB bus frequency in Hz. Clock rate64+ used by most of the soc devices.65+66+soc child nodes67+---------------68+Any on chip SOC devices available to Linux must appear as soc5200 child nodes.69+70+Note: The tables below show the value for the mpc5200. A mpc5200b device71+tree should use the "fsl,mpc5200b-<device>","fsl,mpc5200-<device>" form.72+73+Required soc5200 child nodes:74+name compatible Description75+---- ---------- -----------76+cdm@<addr> fsl,mpc5200-cdm Clock Distribution77+interrupt-controller@<addr> fsl,mpc5200-pic need an interrupt78+ controller to boot79+bestcomm@<addr> fsl,mpc5200-bestcomm Bestcomm DMA controller80+81+Recommended soc5200 child nodes; populate as needed for your board82+name compatible Description83+---- ---------- -----------84+timer@<addr> fsl,mpc5200-gpt General purpose timers85+gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio controller86+gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio controller87+rtc@<addr> fsl,mpc5200-rtc Real time clock88+mscan@<addr> fsl,mpc5200-mscan CAN bus controller89+pci@<addr> fsl,mpc5200-pci PCI bridge90+serial@<addr> fsl,mpc5200-psc-uart PSC in serial mode91+i2s@<addr> fsl,mpc5200-psc-i2s PSC in i2s mode92+ac97@<addr> fsl,mpc5200-psc-ac97 PSC in ac97 mode93+spi@<addr> fsl,mpc5200-psc-spi PSC in spi mode94+irda@<addr> fsl,mpc5200-psc-irda PSC in IrDA mode95+spi@<addr> fsl,mpc5200-spi MPC5200 spi device96+ethernet@<addr> fsl,mpc5200-fec MPC5200 ethernet device97+ata@<addr> fsl,mpc5200-ata IDE ATA interface98+i2c@<addr> fsl,mpc5200-i2c I2C controller99+usb@<addr> fsl,mpc5200-ohci,ohci-be USB controller100+xlb@<addr> fsl,mpc5200-xlb XLB arbitrator101+102+fsl,mpc5200-gpt nodes103+---------------------104+On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board105+design supports the internal wdt, then the device node for GPT0 should106+include the empty property 'fsl,has-wdt'.107+108+An mpc5200-gpt can be used as a single line GPIO controller. To do so,109+add the following properties to the gpt node:110+ gpio-controller;111+ #gpio-cells = <2>;112+When referencing the GPIO line from another node, the first cell must always113+be zero and the second cell represents the gpio flags and described in the114+gpio device tree binding.115+116+An mpc5200-gpt can be used as a single line edge sensitive interrupt117+controller. To do so, add the following properties to the gpt node:118+ interrupt-controller;119+ #interrupt-cells = <1>;120+When referencing the IRQ line from another node, the cell represents the121+sense mode; 1 for edge rising, 2 for edge falling.122+123+fsl,mpc5200-psc nodes124+---------------------125+The PSCs should include a cell-index which is the index of the PSC in126+hardware. cell-index is used to determine which shared SoC registers to127+use when setting up PSC clocking. cell-index number starts at '0'. ie:128+ PSC1 has 'cell-index = <0>'129+ PSC4 has 'cell-index = <3>'130+131+PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in132+i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the133+compatible field.134+135+136+fsl,mpc5200-gpio and fsl,mpc5200-gpio-wkup nodes137+------------------------------------------------138+Each GPIO controller node should have the empty property gpio-controller and139+#gpio-cells set to 2. First cell is the GPIO number which is interpreted140+according to the bit numbers in the GPIO control registers. The second cell141+is for flags which is currently unused.142+143+fsl,mpc5200-fec nodes144+---------------------145+The FEC node can specify one of the following properties to configure146+the MII link:147+- fsl,7-wire-mode - An empty property that specifies the link uses 7-wire148+ mode instead of MII149+- current-speed - Specifies that the MII should be configured for a fixed150+ speed. This property should contain two cells. The151+ first cell specifies the speed in Mbps and the second152+ should be '0' for half duplex and '1' for full duplex153+- phy-handle - Contains a phandle to an Ethernet PHY.154+155+Interrupt controller (fsl,mpc5200-pic) node156+-------------------------------------------157+The mpc5200 pic binding splits hardware IRQ numbers into two levels. The158+split reflects the layout of the PIC hardware itself, which groups159+interrupts into one of three groups; CRIT, MAIN or PERP. Also, the160+Bestcomm dma engine has it's own set of interrupt sources which are161+cascaded off of peripheral interrupt 0, which the driver interprets as a162+fourth group, SDMA.163+164+The interrupts property for device nodes using the mpc5200 pic consists165+of three cells; <L1 L2 level>166+167+ L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]168+ L2 := interrupt number; directly mapped from the value in the169+ "ICTL PerStat, MainStat, CritStat Encoded Register"170+ level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]171+172+For external IRQs, use the following interrupt property values (how to173+specify external interrupts is a frequently asked question):174+External interrupts:175+ external irq0: interrupts = <0 0 n>;176+ external irq1: interrupts = <1 1 n>;177+ external irq2: interrupts = <1 2 n>;178+ external irq3: interrupts = <1 3 n>;179+'n' is sense (0: level high, 1: edge rising, 2: edge falling 3: level low)180+
···1-MPC5200 Device Tree Bindings2-----------------------------3-4-(c) 2006-2007 Secret Lab Technologies Ltd5-Grant Likely <grant.likely at secretlab.ca>6-7-********** DRAFT ***********8-* WARNING: Do not depend on the stability of these bindings just yet.9-* The MPC5200 device tree conventions are still in flux10-* Keep an eye on the linuxppc-dev mailing list for more details11-********** DRAFT ***********12-13-I - Introduction14-================15-Boards supported by the arch/powerpc architecture require device tree be16-passed by the boot loader to the kernel at boot time. The device tree17-describes what devices are present on the board and how they are18-connected. The device tree can either be passed as a binary blob (as19-described in Documentation/powerpc/booting-without-of.txt), or passed20-by Open Firmware (IEEE 1275) compatible firmware using an OF compatible21-client interface API.22-23-This document specifies the requirements on the device-tree for mpc520024-based boards. These requirements are above and beyond the details25-specified in either the Open Firmware spec or booting-without-of.txt26-27-All new mpc5200-based boards are expected to match this document. In28-cases where this document is not sufficient to support a new board port,29-this document should be updated as part of adding the new board support.30-31-II - Philosophy32-===============33-The core of this document is naming convention. The whole point of34-defining this convention is to reduce or eliminate the number of35-special cases required to support a 5200 board. If all 5200 boards36-follow the same convention, then generic 5200 support code will work37-rather than coding special cases for each new board.38-39-This section tries to capture the thought process behind why the naming40-convention is what it is.41-42-1. names43----------44-There is strong convention/requirements already established for children45-of the root node. 'cpus' describes the processor cores, 'memory'46-describes memory, and 'chosen' provides boot configuration. Other nodes47-are added to describe devices attached to the processor local bus.48-49-Following convention already established with other system-on-chip50-processors, 5200 device trees should use the name 'soc5200' for the51-parent node of on chip devices, and the root node should be its parent.52-53-Child nodes are typically named after the configured function. ie.54-the FEC node is named 'ethernet', and a PSC in uart mode is named 'serial'.55-56-2. device_type property57------------------------58-similar to the node name convention above; the device_type reflects the59-configured function of a device. ie. 'serial' for a uart and 'spi' for60-an spi controller. However, while node names *should* reflect the61-configured function, device_type *must* match the configured function62-exactly.63-64-3. compatible property65-----------------------66-Since device_type isn't enough to match devices to drivers, there also67-needs to be a naming convention for the compatible property. Compatible68-is an list of device descriptions sorted from specific to generic. For69-the mpc5200, the required format for each compatible value is70-<chip>-<device>[-<mode>]. The OS should be able to match a device driver71-to the device based solely on the compatible value. If two drivers72-match on the compatible list; the 'most compatible' driver should be73-selected.74-75-The split between the MPC5200 and the MPC5200B leaves a bit of a76-conundrum. How should the compatible property be set up to provide77-maximum compatibility information; but still accurately describe the78-chip? For the MPC5200; the answer is easy. Most of the SoC devices79-originally appeared on the MPC5200. Since they didn't exist anywhere80-else; the 5200 compatible properties will contain only one item;81-"mpc5200-<device>".82-83-The 5200B is almost the same as the 5200, but not quite. It fixes84-silicon bugs and it adds a small number of enhancements. Most of the85-devices either provide exactly the same interface as on the 5200. A few86-devices have extra functions but still have a backwards compatible mode.87-To express this information as completely as possible, 5200B device trees88-should have two items in the compatible list;89-"mpc5200b-<device>\0mpc5200-<device>". It is *strongly* recommended90-that 5200B device trees follow this convention (instead of only listing91-the base mpc5200 item).92-93-If another chip appear on the market with one of the mpc5200 SoC94-devices, then the compatible list should include mpc5200-<device>.95-96-ie. ethernet on mpc5200: compatible = "mpc5200-ethernet"97- ethernet on mpc5200b: compatible = "mpc5200b-ethernet\0mpc5200-ethernet"98-99-Modal devices, like PSCs, also append the configured function to the100-end of the compatible field. ie. A PSC in i2s mode would specify101-"mpc5200-psc-i2s", not "mpc5200-i2s". This convention is chosen to102-avoid naming conflicts with non-psc devices providing the same103-function. For example, "mpc5200-spi" and "mpc5200-psc-spi" describe104-the mpc5200 simple spi device and a PSC spi mode respectively.105-106-If the soc device is more generic and present on other SOCs, the107-compatible property can specify the more generic device type also.108-109-ie. mscan: compatible = "mpc5200-mscan\0fsl,mscan";110-111-At the time of writing, exact chip may be either 'mpc5200' or112-'mpc5200b'.113-114-Device drivers should always try to match as generically as possible.115-116-III - Structure117-===============118-The device tree for an mpc5200 board follows the structure defined in119-booting-without-of.txt with the following additional notes:120-121-0) the root node122-----------------123-Typical root description node; see booting-without-of124-125-1) The cpus node126-----------------127-The cpus node follows the basic layout described in booting-without-of.128-The bus-frequency property holds the XLB bus frequency129-The clock-frequency property holds the core frequency130-131-2) The memory node132-------------------133-Typical memory description node; see booting-without-of.134-135-3) The soc5200 node136--------------------137-This node describes the on chip SOC peripherals. Every mpc5200 based138-board will have this node, and as such there is a common naming139-convention for SOC devices.140-141-Required properties:142-name type description143----- ---- -----------144-device_type string must be "soc"145-ranges int should be <0 baseaddr baseaddr+10000>146-reg int must be <baseaddr 10000>147-compatible string mpc5200: "mpc5200-soc"148- mpc5200b: "mpc5200b-soc\0mpc5200-soc"149-system-frequency int Fsystem frequency; source of all150- other clocks.151-bus-frequency int IPB bus frequency in HZ. Clock rate152- used by most of the soc devices.153-#interrupt-cells int must be <3>.154-155-Recommended properties:156-name type description157----- ---- -----------158-model string Exact model of the chip;159- ie: model="fsl,mpc5200"160-revision string Silicon revision of chip161- ie: revision="M08A"162-163-The 'model' and 'revision' properties are *strongly* recommended. Having164-them presence acts as a bit of a safety net for working around as yet165-undiscovered bugs on one version of silicon. For example, device drivers166-can use the model and revision properties to decide if a bug fix should167-be turned on.168-169-4) soc5200 child nodes170-----------------------171-Any on chip SOC devices available to Linux must appear as soc5200 child nodes.172-173-Note: The tables below show the value for the mpc5200. A mpc5200b device174-tree should use the "mpc5200b-<device>\0mpc5200-<device> form.175-176-Required soc5200 child nodes:177-name device_type compatible Description178----- ----------- ---------- -----------179-cdm@<addr> cdm mpc5200-cmd Clock Distribution180-pic@<addr> interrupt-controller mpc5200-pic need an interrupt181- controller to boot182-bestcomm@<addr> dma-controller mpc5200-bestcomm 5200 pic also requires183- the bestcomm device184-185-Recommended soc5200 child nodes; populate as needed for your board186-name device_type compatible Description187----- ----------- ---------- -----------188-gpt@<addr> gpt fsl,mpc5200-gpt General purpose timers189-gpt@<addr> gpt fsl,mpc5200-gpt-gpio General purpose190- timers in GPIO mode191-gpio@<addr> fsl,mpc5200-gpio MPC5200 simple gpio192- controller193-gpio@<addr> fsl,mpc5200-gpio-wkup MPC5200 wakeup gpio194- controller195-rtc@<addr> rtc mpc5200-rtc Real time clock196-mscan@<addr> mscan mpc5200-mscan CAN bus controller197-pci@<addr> pci mpc5200-pci PCI bridge198-serial@<addr> serial mpc5200-psc-uart PSC in serial mode199-i2s@<addr> sound mpc5200-psc-i2s PSC in i2s mode200-ac97@<addr> sound mpc5200-psc-ac97 PSC in ac97 mode201-spi@<addr> spi mpc5200-psc-spi PSC in spi mode202-irda@<addr> irda mpc5200-psc-irda PSC in IrDA mode203-spi@<addr> spi mpc5200-spi MPC5200 spi device204-ethernet@<addr> network mpc5200-fec MPC5200 ethernet device205-ata@<addr> ata mpc5200-ata IDE ATA interface206-i2c@<addr> i2c mpc5200-i2c I2C controller207-usb@<addr> usb-ohci-be mpc5200-ohci,ohci-be USB controller208-xlb@<addr> xlb mpc5200-xlb XLB arbitrator209-210-Important child node properties211-name type description212----- ---- -----------213-cell-index int When multiple devices are present, is the214- index of the device in the hardware (ie. There215- are 6 PSC on the 5200 numbered PSC1 to PSC6)216- PSC1 has 'cell-index = <0>'217- PSC4 has 'cell-index = <3>'218-219-5) General Purpose Timer nodes (child of soc5200 node)220-On the mpc5200 and 5200b, GPT0 has a watchdog timer function. If the board221-design supports the internal wdt, then the device node for GPT0 should222-include the empty property 'fsl,has-wdt'.223-224-6) PSC nodes (child of soc5200 node)225-PSC nodes can define the optional 'port-number' property to force assignment226-order of serial ports. For example, PSC5 might be physically connected to227-the port labeled 'COM1' and PSC1 wired to 'COM1'. In this case, PSC5 would228-have a "port-number = <0>" property, and PSC1 would have "port-number = <1>".229-230-PSC in i2s mode: The mpc5200 and mpc5200b PSCs are not compatible when in231-i2s mode. An 'mpc5200b-psc-i2s' node cannot include 'mpc5200-psc-i2s' in the232-compatible field.233-234-7) GPIO controller nodes235-Each GPIO controller node should have the empty property gpio-controller and236-#gpio-cells set to 2. First cell is the GPIO number which is interpreted237-according to the bit numbers in the GPIO control registers. The second cell238-is for flags which is currently unsused.239-240-8) FEC nodes241-The FEC node can specify one of the following properties to configure242-the MII link:243-"fsl,7-wire-mode" - An empty property that specifies the link uses 7-wire244- mode instead of MII245-"current-speed" - Specifies that the MII should be configured for a fixed246- speed. This property should contain two cells. The247- first cell specifies the speed in Mbps and the second248- should be '0' for half duplex and '1' for full duplex249-"phy-handle" - Contains a phandle to an Ethernet PHY.250-251-IV - Extra Notes252-================253-254-1. Interrupt mapping255---------------------256-The mpc5200 pic driver splits hardware IRQ numbers into two levels. The257-split reflects the layout of the PIC hardware itself, which groups258-interrupts into one of three groups; CRIT, MAIN or PERP. Also, the259-Bestcomm dma engine has it's own set of interrupt sources which are260-cascaded off of peripheral interrupt 0, which the driver interprets as a261-fourth group, SDMA.262-263-The interrupts property for device nodes using the mpc5200 pic consists264-of three cells; <L1 L2 level>265-266- L1 := [CRIT=0, MAIN=1, PERP=2, SDMA=3]267- L2 := interrupt number; directly mapped from the value in the268- "ICTL PerStat, MainStat, CritStat Encoded Register"269- level := [LEVEL_HIGH=0, EDGE_RISING=1, EDGE_FALLING=2, LEVEL_LOW=3]270-271-2. Shared registers272--------------------273-Some SoC devices share registers between them. ie. the i2c devices use274-a single clock control register, and almost all device are affected by275-the port_config register. Devices which need to manipulate shared regs276-should look to the parent SoC node. The soc node is responsible277-for arbitrating all shared register access.
···4 *5 * Compile with:6 * gcc -s -Wall -Wstrict-prototypes v4lgrab.c -o v4lgrab7- * Use as:8- * v4lgrab >image.ppm9 *10 * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org>11- * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c12- * with minor modifications (Dave Forrest, drf5n@virginia.edu).00000000013 *14 */15···33#include <linux/types.h>34#include <linux/videodev.h>3536-#define FILE "/dev/video0"3738/* Stole this from tvset.c */39···99100int main(int argc, char ** argv)101{102- int fd = open(FILE, O_RDONLY), f;103 struct video_capability cap;104 struct video_window win;105 struct video_picture vpic;···109 unsigned int i, src_depth;110111 if (fd < 0) {112- perror(FILE);113 exit(1);114 }115116 if (ioctl(fd, VIDIOCGCAP, &cap) < 0) {117 perror("VIDIOGCAP");118- fprintf(stderr, "(" FILE " not a video4linux device?)\n");119 close(fd);120 exit(1);121 }
···4 *5 * Compile with:6 * gcc -s -Wall -Wstrict-prototypes v4lgrab.c -o v4lgrab7+ * Use as:8+ * v4lgrab >image.ppm9 *10 * Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org>11+ * Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c12+ * with minor modifications (Dave Forrest, drf5n@virginia.edu).13+ *14+ *15+ * For some cameras you may need to pre-load libv4l to perform16+ * the necessary decompression, e.g.:17+ *18+ * export LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so19+ * ./v4lgrab >image.ppm20+ *21+ * see http://hansdegoede.livejournal.com/3636.html for details.22 *23 */24···24#include <linux/types.h>25#include <linux/videodev.h>2627+#define VIDEO_DEV "/dev/video0"2829/* Stole this from tvset.c */30···9091int main(int argc, char ** argv)92{93+ int fd = open(VIDEO_DEV, O_RDONLY), f;94 struct video_capability cap;95 struct video_window win;96 struct video_picture vpic;···100 unsigned int i, src_depth;101102 if (fd < 0) {103+ perror(VIDEO_DEV);104 exit(1);105 }106107 if (ioctl(fd, VIDIOCGCAP, &cap) < 0) {108 perror("VIDIOGCAP");109+ fprintf(stderr, "(" VIDEO_DEV " not a video4linux device?)\n");110 close(fd);111 exit(1);112 }
-2
MAINTAINERS
···2836MAC802112837P: Johannes Berg2838M: johannes@sipsolutions.net2839-P: Michael Wu2840-M: flamingice@sourmilk.net2841L: linux-wireless@vger.kernel.org2842W: http://linuxwireless.org/2843T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
···2836MAC802112837P: Johannes Berg2838M: johannes@sipsolutions.net002839L: linux-wireless@vger.kernel.org2840W: http://linuxwireless.org/2841T: git kernel.org:/pub/scm/linux/kernel/git/linville/wireless-2.6.git
+36
arch/arm/plat-mxc/include/mach/mmc.h
···000000000000000000000000000000000000
···1+#ifndef ASMARM_ARCH_MMC_H2+#define ASMARM_ARCH_MMC_H3+4+#include <linux/mmc/host.h>5+6+struct device;7+8+/* board specific SDHC data, optional.9+ * If not present, a writable card with 3,3V is assumed.10+ */11+struct imxmmc_platform_data {12+ /* Return values for the get_ro callback should be:13+ * 0 for a read/write card14+ * 1 for a read-only card15+ * -ENOSYS when not supported (equal to NULL callback)16+ * or a negative errno value when something bad happened17+ */18+ int (*get_ro)(struct device *);19+20+ /* board specific hook to (de)initialize the SD slot.21+ * The board code can call 'handler' on a card detection22+ * change giving data as argument.23+ */24+ int (*init)(struct device *dev, irq_handler_t handler, void *data);25+ void (*exit)(struct device *dev, void *data);26+27+ /* available voltages. If not given, assume28+ * MMC_VDD_32_33 | MMC_VDD_33_3429+ */30+ unsigned int ocr_avail;31+32+ /* adjust slot voltage */33+ void (*setpower)(struct device *, unsigned int vdd);34+};35+36+#endif
···53CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y54CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y55CONFIG_ARC=y56-CONFIG_DMA_IP27=y57CONFIG_EARLY_PRINTK=y58CONFIG_SYS_HAS_EARLY_PRINTK=y59# CONFIG_NO_IOPORT is not set
···53CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y54CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y55CONFIG_ARC=y56+CONFIG_DMA_COHERENT=y57CONFIG_EARLY_PRINTK=y58CONFIG_SYS_HAS_EARLY_PRINTK=y59# CONFIG_NO_IOPORT is not set
+26-26
arch/mips/include/asm/atomic.h
···50static __inline__ void atomic_add(int i, atomic_t * v)51{52 if (cpu_has_llsc && R10000_LLSC_WAR) {53- unsigned long temp;5455 __asm__ __volatile__(56 " .set mips3 \n"···62 : "=&r" (temp), "=m" (v->counter)63 : "Ir" (i), "m" (v->counter));64 } else if (cpu_has_llsc) {65- unsigned long temp;6667 __asm__ __volatile__(68 " .set mips3 \n"···95static __inline__ void atomic_sub(int i, atomic_t * v)96{97 if (cpu_has_llsc && R10000_LLSC_WAR) {98- unsigned long temp;99100 __asm__ __volatile__(101 " .set mips3 \n"···107 : "=&r" (temp), "=m" (v->counter)108 : "Ir" (i), "m" (v->counter));109 } else if (cpu_has_llsc) {110- unsigned long temp;111112 __asm__ __volatile__(113 " .set mips3 \n"···135 */136static __inline__ int atomic_add_return(int i, atomic_t * v)137{138- unsigned long result;139140 smp_llsc_mb();141142 if (cpu_has_llsc && R10000_LLSC_WAR) {143- unsigned long temp;144145 __asm__ __volatile__(146 " .set mips3 \n"···154 : "Ir" (i), "m" (v->counter)155 : "memory");156 } else if (cpu_has_llsc) {157- unsigned long temp;158159 __asm__ __volatile__(160 " .set mips3 \n"···187188static __inline__ int atomic_sub_return(int i, atomic_t * v)189{190- unsigned long result;191192 smp_llsc_mb();193194 if (cpu_has_llsc && R10000_LLSC_WAR) {195- unsigned long temp;196197 __asm__ __volatile__(198 " .set mips3 \n"···206 : "Ir" (i), "m" (v->counter)207 : "memory");208 } else if (cpu_has_llsc) {209- unsigned long temp;210211 __asm__ __volatile__(212 " .set mips3 \n"···247 */248static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)249{250- unsigned long result;251252 smp_llsc_mb();253254 if (cpu_has_llsc && R10000_LLSC_WAR) {255- unsigned long temp;256257 __asm__ __volatile__(258 " .set mips3 \n"···270 : "Ir" (i), "m" (v->counter)271 : "memory");272 } else if (cpu_has_llsc) {273- unsigned long temp;274275 __asm__ __volatile__(276 " .set mips3 \n"···429static __inline__ void atomic64_add(long i, atomic64_t * v)430{431 if (cpu_has_llsc && R10000_LLSC_WAR) {432- unsigned long temp;433434 __asm__ __volatile__(435 " .set mips3 \n"···441 : "=&r" (temp), "=m" (v->counter)442 : "Ir" (i), "m" (v->counter));443 } else if (cpu_has_llsc) {444- unsigned long temp;445446 __asm__ __volatile__(447 " .set mips3 \n"···474static __inline__ void atomic64_sub(long i, atomic64_t * v)475{476 if (cpu_has_llsc && R10000_LLSC_WAR) {477- unsigned long temp;478479 __asm__ __volatile__(480 " .set mips3 \n"···486 : "=&r" (temp), "=m" (v->counter)487 : "Ir" (i), "m" (v->counter));488 } else if (cpu_has_llsc) {489- unsigned long temp;490491 __asm__ __volatile__(492 " .set mips3 \n"···514 */515static __inline__ long atomic64_add_return(long i, atomic64_t * v)516{517- unsigned long result;518519 smp_llsc_mb();520521 if (cpu_has_llsc && R10000_LLSC_WAR) {522- unsigned long temp;523524 __asm__ __volatile__(525 " .set mips3 \n"···533 : "Ir" (i), "m" (v->counter)534 : "memory");535 } else if (cpu_has_llsc) {536- unsigned long temp;537538 __asm__ __volatile__(539 " .set mips3 \n"···566567static __inline__ long atomic64_sub_return(long i, atomic64_t * v)568{569- unsigned long result;570571 smp_llsc_mb();572573 if (cpu_has_llsc && R10000_LLSC_WAR) {574- unsigned long temp;575576 __asm__ __volatile__(577 " .set mips3 \n"···585 : "Ir" (i), "m" (v->counter)586 : "memory");587 } else if (cpu_has_llsc) {588- unsigned long temp;589590 __asm__ __volatile__(591 " .set mips3 \n"···626 */627static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)628{629- unsigned long result;630631 smp_llsc_mb();632633 if (cpu_has_llsc && R10000_LLSC_WAR) {634- unsigned long temp;635636 __asm__ __volatile__(637 " .set mips3 \n"···649 : "Ir" (i), "m" (v->counter)650 : "memory");651 } else if (cpu_has_llsc) {652- unsigned long temp;653654 __asm__ __volatile__(655 " .set mips3 \n"
···50static __inline__ void atomic_add(int i, atomic_t * v)51{52 if (cpu_has_llsc && R10000_LLSC_WAR) {53+ int temp;5455 __asm__ __volatile__(56 " .set mips3 \n"···62 : "=&r" (temp), "=m" (v->counter)63 : "Ir" (i), "m" (v->counter));64 } else if (cpu_has_llsc) {65+ int temp;6667 __asm__ __volatile__(68 " .set mips3 \n"···95static __inline__ void atomic_sub(int i, atomic_t * v)96{97 if (cpu_has_llsc && R10000_LLSC_WAR) {98+ int temp;99100 __asm__ __volatile__(101 " .set mips3 \n"···107 : "=&r" (temp), "=m" (v->counter)108 : "Ir" (i), "m" (v->counter));109 } else if (cpu_has_llsc) {110+ int temp;111112 __asm__ __volatile__(113 " .set mips3 \n"···135 */136static __inline__ int atomic_add_return(int i, atomic_t * v)137{138+ int result;139140 smp_llsc_mb();141142 if (cpu_has_llsc && R10000_LLSC_WAR) {143+ int temp;144145 __asm__ __volatile__(146 " .set mips3 \n"···154 : "Ir" (i), "m" (v->counter)155 : "memory");156 } else if (cpu_has_llsc) {157+ int temp;158159 __asm__ __volatile__(160 " .set mips3 \n"···187188static __inline__ int atomic_sub_return(int i, atomic_t * v)189{190+ int result;191192 smp_llsc_mb();193194 if (cpu_has_llsc && R10000_LLSC_WAR) {195+ int temp;196197 __asm__ __volatile__(198 " .set mips3 \n"···206 : "Ir" (i), "m" (v->counter)207 : "memory");208 } else if (cpu_has_llsc) {209+ int temp;210211 __asm__ __volatile__(212 " .set mips3 \n"···247 */248static __inline__ int atomic_sub_if_positive(int i, atomic_t * v)249{250+ int result;251252 smp_llsc_mb();253254 if (cpu_has_llsc && R10000_LLSC_WAR) {255+ int temp;256257 __asm__ __volatile__(258 " .set mips3 \n"···270 : "Ir" (i), "m" (v->counter)271 : "memory");272 } else if (cpu_has_llsc) {273+ int temp;274275 __asm__ __volatile__(276 " .set mips3 \n"···429static __inline__ void atomic64_add(long i, atomic64_t * v)430{431 if (cpu_has_llsc && R10000_LLSC_WAR) {432+ long temp;433434 __asm__ __volatile__(435 " .set mips3 \n"···441 : "=&r" (temp), "=m" (v->counter)442 : "Ir" (i), "m" (v->counter));443 } else if (cpu_has_llsc) {444+ long temp;445446 __asm__ __volatile__(447 " .set mips3 \n"···474static __inline__ void atomic64_sub(long i, atomic64_t * v)475{476 if (cpu_has_llsc && R10000_LLSC_WAR) {477+ long temp;478479 __asm__ __volatile__(480 " .set mips3 \n"···486 : "=&r" (temp), "=m" (v->counter)487 : "Ir" (i), "m" (v->counter));488 } else if (cpu_has_llsc) {489+ long temp;490491 __asm__ __volatile__(492 " .set mips3 \n"···514 */515static __inline__ long atomic64_add_return(long i, atomic64_t * v)516{517+ long result;518519 smp_llsc_mb();520521 if (cpu_has_llsc && R10000_LLSC_WAR) {522+ long temp;523524 __asm__ __volatile__(525 " .set mips3 \n"···533 : "Ir" (i), "m" (v->counter)534 : "memory");535 } else if (cpu_has_llsc) {536+ long temp;537538 __asm__ __volatile__(539 " .set mips3 \n"···566567static __inline__ long atomic64_sub_return(long i, atomic64_t * v)568{569+ long result;570571 smp_llsc_mb();572573 if (cpu_has_llsc && R10000_LLSC_WAR) {574+ long temp;575576 __asm__ __volatile__(577 " .set mips3 \n"···585 : "Ir" (i), "m" (v->counter)586 : "memory");587 } else if (cpu_has_llsc) {588+ long temp;589590 __asm__ __volatile__(591 " .set mips3 \n"···626 */627static __inline__ long atomic64_sub_if_positive(long i, atomic64_t * v)628{629+ long result;630631 smp_llsc_mb();632633 if (cpu_has_llsc && R10000_LLSC_WAR) {634+ long temp;635636 __asm__ __volatile__(637 " .set mips3 \n"···649 : "Ir" (i), "m" (v->counter)650 : "memory");651 } else if (cpu_has_llsc) {652+ long temp;653654 __asm__ __volatile__(655 " .set mips3 \n"
···944 force_sig(SIGILL, current);945}946000947asmlinkage void do_watch(struct pt_regs *regs)948{949 u32 cause;···966 */967 if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) {968 mips_read_watch_registers();0969 force_sig(SIGTRAP, current);970- } else971 mips_clear_watch_registers();00972}973974asmlinkage void do_mcheck(struct pt_regs *regs)···1588static char panic_null_cerr[] __cpuinitdata =1589 "Trying to set NULL cache error exception handler";15901591-/* Install uncached CPU exception handler */00001592void __cpuinit set_uncached_handler(unsigned long offset, void *addr,1593 unsigned long size)1594{···1603 unsigned long uncached_ebase = TO_UNCAC(ebase);1604#endif1605 if (cpu_has_mips_r2)1606- ebase += (read_c0_ebase() & 0x3ffff000);16071608 if (!addr)1609 panic(panic_null_cerr);
···944 force_sig(SIGILL, current);945}946947+/*948+ * Called with interrupts disabled.949+ */950asmlinkage void do_watch(struct pt_regs *regs)951{952 u32 cause;···963 */964 if (test_tsk_thread_flag(current, TIF_LOAD_WATCH)) {965 mips_read_watch_registers();966+ local_irq_enable();967 force_sig(SIGTRAP, current);968+ } else {969 mips_clear_watch_registers();970+ local_irq_enable();971+ }972}973974asmlinkage void do_mcheck(struct pt_regs *regs)···1582static char panic_null_cerr[] __cpuinitdata =1583 "Trying to set NULL cache error exception handler";15841585+/*1586+ * Install uncached CPU exception handler.1587+ * This is suitable only for the cache error exception which is the only1588+ * exception handler that is being run uncached.1589+ */1590void __cpuinit set_uncached_handler(unsigned long offset, void *addr,1591 unsigned long size)1592{···1593 unsigned long uncached_ebase = TO_UNCAC(ebase);1594#endif1595 if (cpu_has_mips_r2)1596+ uncached_ebase += (read_c0_ebase() & 0x3ffff000);15971598 if (!addr)1599 panic(panic_null_cerr);
+1-1
arch/mips/lib/memcpy-inatomic.S
···21 * end of memory on some systems. It's also a seriously bad idea on non22 * dma-coherent systems.23 */24-#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)25#undef CONFIG_CPU_HAS_PREFETCH26#endif27#ifdef CONFIG_MIPS_MALTA
···21 * end of memory on some systems. It's also a seriously bad idea on non22 * dma-coherent systems.23 */24+#ifdef CONFIG_DMA_NONCOHERENT25#undef CONFIG_CPU_HAS_PREFETCH26#endif27#ifdef CONFIG_MIPS_MALTA
+1-1
arch/mips/lib/memcpy.S
···21 * end of memory on some systems. It's also a seriously bad idea on non22 * dma-coherent systems.23 */24-#if !defined(CONFIG_DMA_COHERENT) || !defined(CONFIG_DMA_IP27)25#undef CONFIG_CPU_HAS_PREFETCH26#endif27#ifdef CONFIG_MIPS_MALTA
···21 * end of memory on some systems. It's also a seriously bad idea on non22 * dma-coherent systems.23 */24+#ifdef CONFIG_DMA_NONCOHERENT25#undef CONFIG_CPU_HAS_PREFETCH26#endif27#ifdef CONFIG_MIPS_MALTA
···618 if (cpu_has_inclusive_pcaches) {619 if (size >= scache_size)620 r4k_blast_scache();621+ else {622+ unsigned long lsize = cpu_scache_line_size();623+ unsigned long almask = ~(lsize - 1);624+625+ /*626+ * There is no clearly documented alignment requirement627+ * for the cache instruction on MIPS processors and628+ * some processors, among them the RM5200 and RM7000629+ * QED processors will throw an address error for cache630+ * hit ops with insufficient alignment. Solved by631+ * aligning the address to cache line size.632+ */633+ cache_op(Hit_Writeback_Inv_SD, addr & almask);634+ cache_op(Hit_Writeback_Inv_SD,635+ (addr + size - 1) & almask);636 blast_inv_scache_range(addr, addr + size);637+ }638 return;639 }640641 if (cpu_has_safe_index_cacheops && size >= dcache_size) {642 r4k_blast_dcache();643 } else {644+ unsigned long lsize = cpu_dcache_line_size();645+ unsigned long almask = ~(lsize - 1);646+647 R4600_HIT_CACHEOP_WAR_IMPL;648+ cache_op(Hit_Writeback_Inv_D, addr & almask);649+ cache_op(Hit_Writeback_Inv_D, (addr + size - 1) & almask);650 blast_inv_dcache_range(addr, addr + size);651 }652
+6-15
arch/mips/mm/fault.c
···97 goto bad_area;98 }99100-survive:101 /*102 * If for any reason at all we couldn't handle the fault,103 * make sure we exit gracefully rather than endlessly redo···166 field, regs->regs[31]);167 die("Oops", regs);168169-/*170- * We ran out of memory, or some other thing happened to us that made171- * us unable to handle the page fault gracefully.172- */173out_of_memory:174- up_read(&mm->mmap_sem);175- if (is_global_init(tsk)) {176- yield();177- down_read(&mm->mmap_sem);178- goto survive;179- }180- printk("VM: killing process %s\n", tsk->comm);181- if (user_mode(regs))182- do_group_exit(SIGKILL);183- goto no_context;184185do_sigbus:186 up_read(&mm->mmap_sem);
···97 goto bad_area;98 }990100 /*101 * If for any reason at all we couldn't handle the fault,102 * make sure we exit gracefully rather than endlessly redo···167 field, regs->regs[31]);168 die("Oops", regs);1690000170out_of_memory:171+ /*172+ * We ran out of memory, call the OOM killer, and return the userspace173+ * (which will retry the fault, or kill us if we got oom-killed).174+ */175+ pagefault_out_of_memory();176+ return;0000177178do_sigbus:179 up_read(&mm->mmap_sem);
···1#2# Automatically generated make config: don't edit3-# Linux kernel version: 2.6.28-rc44-# Thu Nov 13 02:12:40 20085#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···71# CONFIG_BSD_PROCESS_ACCT is not set72# CONFIG_TASKSTATS is not set73# CONFIG_AUDIT is not set00000000074# CONFIG_IKCONFIG is not set75CONFIG_LOG_BUF_SHIFT=1476-# CONFIG_CGROUPS is not set77CONFIG_GROUP_SCHED=y78CONFIG_FAIR_GROUP_SCHED=y79# CONFIG_RT_GROUP_SCHED is not set80CONFIG_USER_SCHED=y81# CONFIG_CGROUP_SCHED is not set082CONFIG_SYSFS_DEPRECATED=y83CONFIG_SYSFS_DEPRECATED_V2=y84# CONFIG_RELAY is not set···119CONFIG_SLUB=y120# CONFIG_SLOB is not set121# CONFIG_PROFILING is not set122-# CONFIG_MARKERS is not set123CONFIG_HAVE_OPROFILE=y124CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y125CONFIG_HAVE_IOREMAP_PROT=y···129# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set130CONFIG_SLABINFO=y131CONFIG_RT_MUTEXES=y132-# CONFIG_TINY_SHMEM is not set133CONFIG_BASE_SMALL=0134# CONFIG_MODULES is not set135CONFIG_BLOCK=y136# CONFIG_LBD is not set137# CONFIG_BLK_DEV_IO_TRACE is not set138-# CONFIG_LSF is not set139# CONFIG_BLK_DEV_BSG is not set140# CONFIG_BLK_DEV_INTEGRITY is not set141···149# CONFIG_DEFAULT_CFQ is not set150# CONFIG_DEFAULT_NOOP is not set151CONFIG_DEFAULT_IOSCHED="anticipatory"152-CONFIG_CLASSIC_RCU=y153# CONFIG_FREEZER is not set154155#···187# CONFIG_TAU is not set188# CONFIG_FSL_ULI1575 is not set189CONFIG_PPC_BESTCOMM=y190-# CONFIG_PPC_BESTCOMM_ATA is not set191CONFIG_PPC_BESTCOMM_FEC=y192-# CONFIG_PPC_BESTCOMM_GEN_BD is not set193194#195# Kernel options···215CONFIG_ARCH_HAS_WALK_MEMORY=y216CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y217# CONFIG_KEXEC is not set0218CONFIG_ARCH_FLATMEM_ENABLE=y219CONFIG_ARCH_POPULATES_NODE_MAP=y220CONFIG_SELECT_MEMORY_MODEL=y···227CONFIG_PAGEFLAGS_EXTENDED=y228CONFIG_SPLIT_PTLOCK_CPUS=4229CONFIG_MIGRATION=y230-# CONFIG_RESOURCES_64BIT is not set231# CONFIG_PHYS_ADDR_T_64BIT is not set232CONFIG_ZONE_DMA_FLAG=1233CONFIG_BOUNCE=y234CONFIG_VIRT_TO_BUS=y235CONFIG_UNEVICTABLE_LRU=y000236CONFIG_FORCE_MAX_ZONEORDER=11237CONFIG_PROC_DEVICETREE=y238# CONFIG_CMDLINE_BOOL is not set···275#276# Networking options277#0278CONFIG_PACKET=y279# CONFIG_PACKET_MMAP is not set280CONFIG_UNIX=y···332# CONFIG_ECONET is not set333# CONFIG_WAN_ROUTER is not set334# CONFIG_NET_SCHED is not set0335336#337# Network testing···345# CONFIG_AF_RXRPC is not set346# CONFIG_PHONET is not set347# CONFIG_WIRELESS is not set0348# CONFIG_RFKILL is not set349# CONFIG_NET_9P is not set350···437# CONFIG_MTD_ONENAND is not set438439#000000440# UBI - Unsorted block images441#442# CONFIG_MTD_UBI is not set···530# CONFIG_BROADCOM_PHY is not set531# CONFIG_ICPLUS_PHY is not set532# CONFIG_REALTEK_PHY is not set000533# CONFIG_FIXED_PHY is not set534# CONFIG_MDIO_BITBANG is not set535CONFIG_NET_ETHERNET=y···556# CONFIG_WLAN_PRE80211 is not set557# CONFIG_WLAN_80211 is not set558# CONFIG_IWLWIFI_LEDS is not set0000559560#561# USB Network Adapters···611CONFIG_SERIAL_MPC52xx_CONSOLE=y612CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600613CONFIG_UNIX98_PTYS=y0614CONFIG_LEGACY_PTYS=y615CONFIG_LEGACY_PTY_COUNT=2560616# CONFIG_IPMI_HANDLER is not set617# CONFIG_HW_RANDOM is not set618# CONFIG_NVRAM is not set···654# Miscellaneous I2C Chip support655#656# CONFIG_DS1682 is not set657-# CONFIG_EEPROM_AT24 is not set658-# CONFIG_EEPROM_LEGACY is not set659# CONFIG_SENSORS_PCF8574 is not set660# CONFIG_PCF8575 is not set661# CONFIG_SENSORS_PCA9539 is not set···698# CONFIG_MFD_CORE is not set699# CONFIG_MFD_SM501 is not set700# CONFIG_HTC_PASIC3 is not set0701# CONFIG_MFD_TMIO is not set702# CONFIG_PMIC_DA903X is not set703# CONFIG_MFD_WM8400 is not set704# CONFIG_MFD_WM8350_I2C is not set0705# CONFIG_REGULATOR is not set706707#···761# USB Host Controller Drivers762#763# CONFIG_USB_C67X00_HCD is not set0764# CONFIG_USB_ISP116X_HCD is not set765# CONFIG_USB_ISP1760_HCD is not set766CONFIG_USB_OHCI_HCD=y···786# CONFIG_USB_TMC is not set787788#789-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'790#791792#793-# may also be needed; see USB_STORAGE Help for more information794#795CONFIG_USB_STORAGE=y796# CONFIG_USB_STORAGE_DEBUG is not set797# CONFIG_USB_STORAGE_DATAFAB is not set798# CONFIG_USB_STORAGE_FREECOM is not set799# CONFIG_USB_STORAGE_ISD200 is not set800-# CONFIG_USB_STORAGE_DPCM is not set801# CONFIG_USB_STORAGE_USBAT is not set802# CONFIG_USB_STORAGE_SDDR09 is not set803# CONFIG_USB_STORAGE_SDDR55 is not set···842# CONFIG_USB_ISIGHTFW is not set843# CONFIG_USB_VST is not set844# CONFIG_USB_GADGET is not set0000845# CONFIG_MMC is not set846# CONFIG_MEMSTICK is not set847# CONFIG_NEW_LEDS is not set···855# CONFIG_DMADEVICES is not set856# CONFIG_UIO is not set857# CONFIG_STAGING is not set858-CONFIG_STAGING_EXCLUDE_BUILD=y859860#861# File systems···875CONFIG_FILE_LOCKING=y876# CONFIG_XFS_FS is not set877# CONFIG_OCFS2_FS is not set0878CONFIG_DNOTIFY=y879CONFIG_INOTIFY=y880CONFIG_INOTIFY_USER=y···912# CONFIG_TMPFS_POSIX_ACL is not set913# CONFIG_HUGETLB_PAGE is not set914# CONFIG_CONFIGFS_FS is not set915-916-#917-# Miscellaneous filesystems918-#919# CONFIG_ADFS_FS is not set920# CONFIG_AFFS_FS is not set921# CONFIG_HFS_FS is not set···932CONFIG_JFFS2_RTIME=y933# CONFIG_JFFS2_RUBIN is not set934CONFIG_CRAMFS=y0935# CONFIG_VXFS_FS is not set936# CONFIG_MINIX_FS is not set937# CONFIG_OMFS_FS is not set···1029# Library routines1030#1031CONFIG_BITREVERSE=y01032# CONFIG_CRC_CCITT is not set1033# CONFIG_CRC16 is not set1034# CONFIG_CRC_T10DIF is not set···1081# CONFIG_DEBUG_MEMORY_INIT is not set1082# CONFIG_DEBUG_LIST is not set1083# CONFIG_DEBUG_SG is not set01084# CONFIG_BOOT_PRINTK_DELAY is not set1085# CONFIG_RCU_TORTURE_TEST is not set1086# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1090# CONFIG_FAULT_INJECTION is not set1091# CONFIG_LATENCYTOP is not set1092CONFIG_HAVE_FUNCTION_TRACER=y0010931094#1095# Tracers···1100# CONFIG_SCHED_TRACER is not set1101# CONFIG_CONTEXT_SWITCH_TRACER is not set1102# CONFIG_BOOT_TRACER is not set01103# CONFIG_STACK_TRACER is not set1104# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1105# CONFIG_SAMPLES is not set1106CONFIG_HAVE_ARCH_KGDB=y1107# CONFIG_KGDB is not set01108# CONFIG_DEBUG_STACKOVERFLOW is not set1109# CONFIG_DEBUG_STACK_USAGE is not set1110# CONFIG_DEBUG_PAGEALLOC is not set···1133#1134# CONFIG_CRYPTO_FIPS is not set1135CONFIG_CRYPTO_ALGAPI=y1136-CONFIG_CRYPTO_AEAD=y01137CONFIG_CRYPTO_BLKCIPHER=y01138CONFIG_CRYPTO_HASH=y1139-CONFIG_CRYPTO_RNG=y01140CONFIG_CRYPTO_MANAGER=y01141# CONFIG_CRYPTO_GF128MUL is not set1142# CONFIG_CRYPTO_NULL is not set1143# CONFIG_CRYPTO_CRYPTD is not set
···1#2# Automatically generated make config: don't edit3+# Linux kernel version: 2.6.29-rc24+# Mon Jan 26 21:41:58 20095#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46+CONFIG_SCHED_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···71# CONFIG_BSD_PROCESS_ACCT is not set72# CONFIG_TASKSTATS is not set73# CONFIG_AUDIT is not set74+75+#76+# RCU Subsystem77+#78+CONFIG_CLASSIC_RCU=y79+# CONFIG_TREE_RCU is not set80+# CONFIG_PREEMPT_RCU is not set81+# CONFIG_TREE_RCU_TRACE is not set82+# CONFIG_PREEMPT_RCU_TRACE is not set83# CONFIG_IKCONFIG is not set84CONFIG_LOG_BUF_SHIFT=14085CONFIG_GROUP_SCHED=y86CONFIG_FAIR_GROUP_SCHED=y87# CONFIG_RT_GROUP_SCHED is not set88CONFIG_USER_SCHED=y89# CONFIG_CGROUP_SCHED is not set90+# CONFIG_CGROUPS is not set91CONFIG_SYSFS_DEPRECATED=y92CONFIG_SYSFS_DEPRECATED_V2=y93# CONFIG_RELAY is not set···110CONFIG_SLUB=y111# CONFIG_SLOB is not set112# CONFIG_PROFILING is not set0113CONFIG_HAVE_OPROFILE=y114CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y115CONFIG_HAVE_IOREMAP_PROT=y···121# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set122CONFIG_SLABINFO=y123CONFIG_RT_MUTEXES=y0124CONFIG_BASE_SMALL=0125# CONFIG_MODULES is not set126CONFIG_BLOCK=y127# CONFIG_LBD is not set128# CONFIG_BLK_DEV_IO_TRACE is not set0129# CONFIG_BLK_DEV_BSG is not set130# CONFIG_BLK_DEV_INTEGRITY is not set131···143# CONFIG_DEFAULT_CFQ is not set144# CONFIG_DEFAULT_NOOP is not set145CONFIG_DEFAULT_IOSCHED="anticipatory"0146# CONFIG_FREEZER is not set147148#···182# CONFIG_TAU is not set183# CONFIG_FSL_ULI1575 is not set184CONFIG_PPC_BESTCOMM=y0185CONFIG_PPC_BESTCOMM_FEC=y186+# CONFIG_SIMPLE_GPIO is not set187188#189# Kernel options···211CONFIG_ARCH_HAS_WALK_MEMORY=y212CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y213# CONFIG_KEXEC is not set214+# CONFIG_CRASH_DUMP is not set215CONFIG_ARCH_FLATMEM_ENABLE=y216CONFIG_ARCH_POPULATES_NODE_MAP=y217CONFIG_SELECT_MEMORY_MODEL=y···222CONFIG_PAGEFLAGS_EXTENDED=y223CONFIG_SPLIT_PTLOCK_CPUS=4224CONFIG_MIGRATION=y0225# CONFIG_PHYS_ADDR_T_64BIT is not set226CONFIG_ZONE_DMA_FLAG=1227CONFIG_BOUNCE=y228CONFIG_VIRT_TO_BUS=y229CONFIG_UNEVICTABLE_LRU=y230+CONFIG_PPC_4K_PAGES=y231+# CONFIG_PPC_16K_PAGES is not set232+# CONFIG_PPC_64K_PAGES is not set233CONFIG_FORCE_MAX_ZONEORDER=11234CONFIG_PROC_DEVICETREE=y235# CONFIG_CMDLINE_BOOL is not set···268#269# Networking options270#271+CONFIG_COMPAT_NET_DEV_OPS=y272CONFIG_PACKET=y273# CONFIG_PACKET_MMAP is not set274CONFIG_UNIX=y···324# CONFIG_ECONET is not set325# CONFIG_WAN_ROUTER is not set326# CONFIG_NET_SCHED is not set327+# CONFIG_DCB is not set328329#330# Network testing···336# CONFIG_AF_RXRPC is not set337# CONFIG_PHONET is not set338# CONFIG_WIRELESS is not set339+# CONFIG_WIMAX is not set340# CONFIG_RFKILL is not set341# CONFIG_NET_9P is not set342···427# CONFIG_MTD_ONENAND is not set428429#430+# LPDDR flash memory drivers431+#432+# CONFIG_MTD_LPDDR is not set433+# CONFIG_MTD_QINFO_PROBE is not set434+435+#436# UBI - Unsorted block images437#438# CONFIG_MTD_UBI is not set···514# CONFIG_BROADCOM_PHY is not set515# CONFIG_ICPLUS_PHY is not set516# CONFIG_REALTEK_PHY is not set517+# CONFIG_NATIONAL_PHY is not set518+# CONFIG_STE10XP is not set519+# CONFIG_LSI_ET1011C_PHY is not set520# CONFIG_FIXED_PHY is not set521# CONFIG_MDIO_BITBANG is not set522CONFIG_NET_ETHERNET=y···537# CONFIG_WLAN_PRE80211 is not set538# CONFIG_WLAN_80211 is not set539# CONFIG_IWLWIFI_LEDS is not set540+541+#542+# Enable WiMAX (Networking options) to see the WiMAX drivers543+#544545#546# USB Network Adapters···588CONFIG_SERIAL_MPC52xx_CONSOLE=y589CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=57600590CONFIG_UNIX98_PTYS=y591+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set592CONFIG_LEGACY_PTYS=y593CONFIG_LEGACY_PTY_COUNT=256594+# CONFIG_HVC_UDBG is not set595# CONFIG_IPMI_HANDLER is not set596# CONFIG_HW_RANDOM is not set597# CONFIG_NVRAM is not set···629# Miscellaneous I2C Chip support630#631# CONFIG_DS1682 is not set00632# CONFIG_SENSORS_PCF8574 is not set633# CONFIG_PCF8575 is not set634# CONFIG_SENSORS_PCA9539 is not set···675# CONFIG_MFD_CORE is not set676# CONFIG_MFD_SM501 is not set677# CONFIG_HTC_PASIC3 is not set678+# CONFIG_TWL4030_CORE is not set679# CONFIG_MFD_TMIO is not set680# CONFIG_PMIC_DA903X is not set681# CONFIG_MFD_WM8400 is not set682# CONFIG_MFD_WM8350_I2C is not set683+# CONFIG_MFD_PCF50633 is not set684# CONFIG_REGULATOR is not set685686#···736# USB Host Controller Drivers737#738# CONFIG_USB_C67X00_HCD is not set739+# CONFIG_USB_OXU210HP_HCD is not set740# CONFIG_USB_ISP116X_HCD is not set741# CONFIG_USB_ISP1760_HCD is not set742CONFIG_USB_OHCI_HCD=y···760# CONFIG_USB_TMC is not set761762#763+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;764#765766#767+# see USB_STORAGE Help for more information768#769CONFIG_USB_STORAGE=y770# CONFIG_USB_STORAGE_DEBUG is not set771# CONFIG_USB_STORAGE_DATAFAB is not set772# CONFIG_USB_STORAGE_FREECOM is not set773# CONFIG_USB_STORAGE_ISD200 is not set0774# CONFIG_USB_STORAGE_USBAT is not set775# CONFIG_USB_STORAGE_SDDR09 is not set776# CONFIG_USB_STORAGE_SDDR55 is not set···817# CONFIG_USB_ISIGHTFW is not set818# CONFIG_USB_VST is not set819# CONFIG_USB_GADGET is not set820+821+#822+# OTG and related infrastructure823+#824# CONFIG_MMC is not set825# CONFIG_MEMSTICK is not set826# CONFIG_NEW_LEDS is not set···826# CONFIG_DMADEVICES is not set827# CONFIG_UIO is not set828# CONFIG_STAGING is not set0829830#831# File systems···847CONFIG_FILE_LOCKING=y848# CONFIG_XFS_FS is not set849# CONFIG_OCFS2_FS is not set850+# CONFIG_BTRFS_FS is not set851CONFIG_DNOTIFY=y852CONFIG_INOTIFY=y853CONFIG_INOTIFY_USER=y···883# CONFIG_TMPFS_POSIX_ACL is not set884# CONFIG_HUGETLB_PAGE is not set885# CONFIG_CONFIGFS_FS is not set886+CONFIG_MISC_FILESYSTEMS=y000887# CONFIG_ADFS_FS is not set888# CONFIG_AFFS_FS is not set889# CONFIG_HFS_FS is not set···906CONFIG_JFFS2_RTIME=y907# CONFIG_JFFS2_RUBIN is not set908CONFIG_CRAMFS=y909+# CONFIG_SQUASHFS is not set910# CONFIG_VXFS_FS is not set911# CONFIG_MINIX_FS is not set912# CONFIG_OMFS_FS is not set···1002# Library routines1003#1004CONFIG_BITREVERSE=y1005+CONFIG_GENERIC_FIND_LAST_BIT=y1006# CONFIG_CRC_CCITT is not set1007# CONFIG_CRC16 is not set1008# CONFIG_CRC_T10DIF is not set···1053# CONFIG_DEBUG_MEMORY_INIT is not set1054# CONFIG_DEBUG_LIST is not set1055# CONFIG_DEBUG_SG is not set1056+# CONFIG_DEBUG_NOTIFIERS is not set1057# CONFIG_BOOT_PRINTK_DELAY is not set1058# CONFIG_RCU_TORTURE_TEST is not set1059# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1061# CONFIG_FAULT_INJECTION is not set1062# CONFIG_LATENCYTOP is not set1063CONFIG_HAVE_FUNCTION_TRACER=y1064+CONFIG_HAVE_DYNAMIC_FTRACE=y1065+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y10661067#1068# Tracers···1069# CONFIG_SCHED_TRACER is not set1070# CONFIG_CONTEXT_SWITCH_TRACER is not set1071# CONFIG_BOOT_TRACER is not set1072+# CONFIG_TRACE_BRANCH_PROFILING is not set1073# CONFIG_STACK_TRACER is not set1074# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1075# CONFIG_SAMPLES is not set1076CONFIG_HAVE_ARCH_KGDB=y1077# CONFIG_KGDB is not set1078+CONFIG_PRINT_STACK_DEPTH=641079# CONFIG_DEBUG_STACKOVERFLOW is not set1080# CONFIG_DEBUG_STACK_USAGE is not set1081# CONFIG_DEBUG_PAGEALLOC is not set···1100#1101# CONFIG_CRYPTO_FIPS is not set1102CONFIG_CRYPTO_ALGAPI=y1103+CONFIG_CRYPTO_ALGAPI2=y1104+CONFIG_CRYPTO_AEAD2=y1105CONFIG_CRYPTO_BLKCIPHER=y1106+CONFIG_CRYPTO_BLKCIPHER2=y1107CONFIG_CRYPTO_HASH=y1108+CONFIG_CRYPTO_HASH2=y1109+CONFIG_CRYPTO_RNG2=y1110CONFIG_CRYPTO_MANAGER=y1111+CONFIG_CRYPTO_MANAGER2=y1112# CONFIG_CRYPTO_GF128MUL is not set1113# CONFIG_CRYPTO_NULL is not set1114# CONFIG_CRYPTO_CRYPTD is not set
+64-22
arch/powerpc/configs/52xx/lite5200b_defconfig
···1#2# Automatically generated make config: don't edit3-# Linux kernel version: 2.6.28-rc44-# Thu Nov 13 02:10:16 20085#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···72# CONFIG_BSD_PROCESS_ACCT is not set73# CONFIG_TASKSTATS is not set74# CONFIG_AUDIT is not set00000000075# CONFIG_IKCONFIG is not set76CONFIG_LOG_BUF_SHIFT=1477-# CONFIG_CGROUPS is not set78CONFIG_GROUP_SCHED=y79# CONFIG_FAIR_GROUP_SCHED is not set80# CONFIG_RT_GROUP_SCHED is not set81CONFIG_USER_SCHED=y82# CONFIG_CGROUP_SCHED is not set083CONFIG_SYSFS_DEPRECATED=y84CONFIG_SYSFS_DEPRECATED_V2=y85# CONFIG_RELAY is not set···121CONFIG_SLUB=y122# CONFIG_SLOB is not set123# CONFIG_PROFILING is not set124-# CONFIG_MARKERS is not set125CONFIG_HAVE_OPROFILE=y126CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y127CONFIG_HAVE_IOREMAP_PROT=y···131# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set132CONFIG_SLABINFO=y133CONFIG_RT_MUTEXES=y134-# CONFIG_TINY_SHMEM is not set135CONFIG_BASE_SMALL=0136CONFIG_MODULES=y137# CONFIG_MODULE_FORCE_LOAD is not set···138# CONFIG_MODULE_FORCE_UNLOAD is not set139# CONFIG_MODVERSIONS is not set140# CONFIG_MODULE_SRCVERSION_ALL is not set141-CONFIG_KMOD=y142CONFIG_BLOCK=y143# CONFIG_LBD is not set144# CONFIG_BLK_DEV_IO_TRACE is not set145-# CONFIG_LSF is not set146# CONFIG_BLK_DEV_BSG is not set147# CONFIG_BLK_DEV_INTEGRITY is not set148···156# CONFIG_DEFAULT_CFQ is not set157# CONFIG_DEFAULT_NOOP is not set158CONFIG_DEFAULT_IOSCHED="anticipatory"159-CONFIG_CLASSIC_RCU=y160CONFIG_FREEZER=y161162#···196CONFIG_PPC_BESTCOMM=y197CONFIG_PPC_BESTCOMM_ATA=y198CONFIG_PPC_BESTCOMM_FEC=y199-CONFIG_PPC_BESTCOMM_GEN_BD=y200201#202# Kernel options···224CONFIG_ARCH_HAS_WALK_MEMORY=y225CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y226# CONFIG_KEXEC is not set0227CONFIG_ARCH_FLATMEM_ENABLE=y228CONFIG_ARCH_POPULATES_NODE_MAP=y229CONFIG_SELECT_MEMORY_MODEL=y···236CONFIG_PAGEFLAGS_EXTENDED=y237CONFIG_SPLIT_PTLOCK_CPUS=4238CONFIG_MIGRATION=y239-# CONFIG_RESOURCES_64BIT is not set240# CONFIG_PHYS_ADDR_T_64BIT is not set241CONFIG_ZONE_DMA_FLAG=1242CONFIG_BOUNCE=y243CONFIG_VIRT_TO_BUS=y244CONFIG_UNEVICTABLE_LRU=y000245CONFIG_FORCE_MAX_ZONEORDER=11246CONFIG_PROC_DEVICETREE=y247# CONFIG_CMDLINE_BOOL is not set···271# CONFIG_PCI_MSI is not set272CONFIG_PCI_LEGACY=y273# CONFIG_PCI_DEBUG is not set0274# CONFIG_PCCARD is not set275# CONFIG_HOTPLUG_PCI is not set276# CONFIG_HAS_RAPIDIO is not set···294#295# Networking options296#0297CONFIG_PACKET=y298# CONFIG_PACKET_MMAP is not set299CONFIG_UNIX=y···351# CONFIG_ECONET is not set352# CONFIG_WAN_ROUTER is not set353# CONFIG_NET_SCHED is not set0354355#356# Network testing···364# CONFIG_AF_RXRPC is not set365# CONFIG_PHONET is not set366# CONFIG_WIRELESS is not set0367# CONFIG_RFKILL is not set368# CONFIG_NET_9P is not set369···407# CONFIG_BLK_DEV_HD is not set408CONFIG_MISC_DEVICES=y409# CONFIG_PHANTOM is not set410-# CONFIG_EEPROM_93CX6 is not set411# CONFIG_SGI_IOC4 is not set412# CONFIG_TIFM_CORE is not set413# CONFIG_ICS932S401 is not set414# CONFIG_ENCLOSURE_SERVICES is not set415# CONFIG_HP_ILO is not set416# CONFIG_C2PORT is not set0000000417CONFIG_HAVE_IDE=y418# CONFIG_IDE is not set419···462# CONFIG_SCSI_SRP_ATTRS is not set463CONFIG_SCSI_LOWLEVEL=y464# CONFIG_ISCSI_TCP is not set0465# CONFIG_BLK_DEV_3W_XXXX_RAID is not set466# CONFIG_SCSI_3W_9XXX is not set467# CONFIG_SCSI_ACARD is not set···479# CONFIG_MEGARAID_SAS is not set480# CONFIG_SCSI_HPTIOP is not set481# CONFIG_SCSI_BUSLOGIC is not set00482# CONFIG_SCSI_DMX3191D is not set483# CONFIG_SCSI_EATA is not set484# CONFIG_SCSI_FUTURE_DOMAIN is not set···600# CONFIG_BROADCOM_PHY is not set601# CONFIG_ICPLUS_PHY is not set602# CONFIG_REALTEK_PHY is not set000603# CONFIG_FIXED_PHY is not set604# CONFIG_MDIO_BITBANG is not set605CONFIG_NET_ETHERNET=y···649# CONFIG_JME is not set650CONFIG_NETDEV_10000=y651# CONFIG_CHELSIO_T1 is not set0652# CONFIG_CHELSIO_T3 is not set653# CONFIG_ENIC is not set654# CONFIG_IXGBE is not set···672# CONFIG_WLAN_PRE80211 is not set673# CONFIG_WLAN_80211 is not set674# CONFIG_IWLWIFI_LEDS is not set0000675# CONFIG_WAN is not set676# CONFIG_FDDI is not set677# CONFIG_HIPPI is not set···723CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200724# CONFIG_SERIAL_JSM is not set725CONFIG_UNIX98_PTYS=y0726CONFIG_LEGACY_PTYS=y727CONFIG_LEGACY_PTY_COUNT=2560728# CONFIG_IPMI_HANDLER is not set729# CONFIG_HW_RANDOM is not set730# CONFIG_NVRAM is not set···792# Miscellaneous I2C Chip support793#794# CONFIG_DS1682 is not set795-# CONFIG_EEPROM_AT24 is not set796-# CONFIG_EEPROM_LEGACY is not set797# CONFIG_SENSORS_PCF8574 is not set798# CONFIG_PCF8575 is not set799# CONFIG_SENSORS_PCA9539 is not set···824# CONFIG_MFD_CORE is not set825# CONFIG_MFD_SM501 is not set826# CONFIG_HTC_PASIC3 is not set0827# CONFIG_MFD_TMIO is not set828# CONFIG_PMIC_DA903X is not set829# CONFIG_MFD_WM8400 is not set830# CONFIG_MFD_WM8350_I2C is not set0831# CONFIG_REGULATOR is not set832833#···876#877878#879-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'880#881# CONFIG_USB_GADGET is not set0000882# CONFIG_UWB is not set883# CONFIG_MMC is not set884# CONFIG_MEMSTICK is not set···894# CONFIG_DMADEVICES is not set895# CONFIG_UIO is not set896# CONFIG_STAGING is not set897-CONFIG_STAGING_EXCLUDE_BUILD=y898899#900# File systems···914CONFIG_FILE_LOCKING=y915# CONFIG_XFS_FS is not set916# CONFIG_OCFS2_FS is not set0917CONFIG_DNOTIFY=y918CONFIG_INOTIFY=y919CONFIG_INOTIFY_USER=y···948# CONFIG_TMPFS_POSIX_ACL is not set949# CONFIG_HUGETLB_PAGE is not set950# CONFIG_CONFIGFS_FS is not set951-952-#953-# Miscellaneous filesystems954-#955# CONFIG_ADFS_FS is not set956# CONFIG_AFFS_FS is not set957# CONFIG_HFS_FS is not set···957# CONFIG_BFS_FS is not set958# CONFIG_EFS_FS is not set959# CONFIG_CRAMFS is not set0960# CONFIG_VXFS_FS is not set961# CONFIG_MINIX_FS is not set962# CONFIG_OMFS_FS is not set···999# Library routines1000#1001CONFIG_BITREVERSE=y01002# CONFIG_CRC_CCITT is not set1003# CONFIG_CRC16 is not set1004# CONFIG_CRC_T10DIF is not set···1049# CONFIG_DEBUG_MEMORY_INIT is not set1050# CONFIG_DEBUG_LIST is not set1051# CONFIG_DEBUG_SG is not set01052# CONFIG_BOOT_PRINTK_DELAY is not set1053# CONFIG_RCU_TORTURE_TEST is not set1054# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1058# CONFIG_FAULT_INJECTION is not set1059# CONFIG_LATENCYTOP is not set1060CONFIG_HAVE_FUNCTION_TRACER=y0010611062#1063# Tracers···1068# CONFIG_SCHED_TRACER is not set1069# CONFIG_CONTEXT_SWITCH_TRACER is not set1070# CONFIG_BOOT_TRACER is not set01071# CONFIG_STACK_TRACER is not set1072# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1073# CONFIG_SAMPLES is not set1074CONFIG_HAVE_ARCH_KGDB=y1075# CONFIG_KGDB is not set01076# CONFIG_DEBUG_STACKOVERFLOW is not set1077# CONFIG_DEBUG_STACK_USAGE is not set1078# CONFIG_DEBUG_PAGEALLOC is not set···1101#1102# CONFIG_CRYPTO_FIPS is not set1103CONFIG_CRYPTO_ALGAPI=y1104-CONFIG_CRYPTO_AEAD=y01105CONFIG_CRYPTO_BLKCIPHER=y01106CONFIG_CRYPTO_HASH=y1107-CONFIG_CRYPTO_RNG=y01108CONFIG_CRYPTO_MANAGER=y01109# CONFIG_CRYPTO_GF128MUL is not set1110# CONFIG_CRYPTO_NULL is not set1111# CONFIG_CRYPTO_CRYPTD is not set
···1#2# Automatically generated make config: don't edit3+# Linux kernel version: 2.6.29-rc24+# Mon Jan 26 21:41:14 20095#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46+CONFIG_SCHED_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···72# CONFIG_BSD_PROCESS_ACCT is not set73# CONFIG_TASKSTATS is not set74# CONFIG_AUDIT is not set75+76+#77+# RCU Subsystem78+#79+CONFIG_CLASSIC_RCU=y80+# CONFIG_TREE_RCU is not set81+# CONFIG_PREEMPT_RCU is not set82+# CONFIG_TREE_RCU_TRACE is not set83+# CONFIG_PREEMPT_RCU_TRACE is not set84# CONFIG_IKCONFIG is not set85CONFIG_LOG_BUF_SHIFT=14086CONFIG_GROUP_SCHED=y87# CONFIG_FAIR_GROUP_SCHED is not set88# CONFIG_RT_GROUP_SCHED is not set89CONFIG_USER_SCHED=y90# CONFIG_CGROUP_SCHED is not set91+# CONFIG_CGROUPS is not set92CONFIG_SYSFS_DEPRECATED=y93CONFIG_SYSFS_DEPRECATED_V2=y94# CONFIG_RELAY is not set···112CONFIG_SLUB=y113# CONFIG_SLOB is not set114# CONFIG_PROFILING is not set0115CONFIG_HAVE_OPROFILE=y116CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y117CONFIG_HAVE_IOREMAP_PROT=y···123# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set124CONFIG_SLABINFO=y125CONFIG_RT_MUTEXES=y0126CONFIG_BASE_SMALL=0127CONFIG_MODULES=y128# CONFIG_MODULE_FORCE_LOAD is not set···131# CONFIG_MODULE_FORCE_UNLOAD is not set132# CONFIG_MODVERSIONS is not set133# CONFIG_MODULE_SRCVERSION_ALL is not set0134CONFIG_BLOCK=y135# CONFIG_LBD is not set136# CONFIG_BLK_DEV_IO_TRACE is not set0137# CONFIG_BLK_DEV_BSG is not set138# CONFIG_BLK_DEV_INTEGRITY is not set139···151# CONFIG_DEFAULT_CFQ is not set152# CONFIG_DEFAULT_NOOP is not set153CONFIG_DEFAULT_IOSCHED="anticipatory"0154CONFIG_FREEZER=y155156#···192CONFIG_PPC_BESTCOMM=y193CONFIG_PPC_BESTCOMM_ATA=y194CONFIG_PPC_BESTCOMM_FEC=y195+# CONFIG_SIMPLE_GPIO is not set196197#198# Kernel options···220CONFIG_ARCH_HAS_WALK_MEMORY=y221CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y222# CONFIG_KEXEC is not set223+# CONFIG_CRASH_DUMP is not set224CONFIG_ARCH_FLATMEM_ENABLE=y225CONFIG_ARCH_POPULATES_NODE_MAP=y226CONFIG_SELECT_MEMORY_MODEL=y···231CONFIG_PAGEFLAGS_EXTENDED=y232CONFIG_SPLIT_PTLOCK_CPUS=4233CONFIG_MIGRATION=y0234# CONFIG_PHYS_ADDR_T_64BIT is not set235CONFIG_ZONE_DMA_FLAG=1236CONFIG_BOUNCE=y237CONFIG_VIRT_TO_BUS=y238CONFIG_UNEVICTABLE_LRU=y239+CONFIG_PPC_4K_PAGES=y240+# CONFIG_PPC_16K_PAGES is not set241+# CONFIG_PPC_64K_PAGES is not set242CONFIG_FORCE_MAX_ZONEORDER=11243CONFIG_PROC_DEVICETREE=y244# CONFIG_CMDLINE_BOOL is not set···264# CONFIG_PCI_MSI is not set265CONFIG_PCI_LEGACY=y266# CONFIG_PCI_DEBUG is not set267+# CONFIG_PCI_STUB is not set268# CONFIG_PCCARD is not set269# CONFIG_HOTPLUG_PCI is not set270# CONFIG_HAS_RAPIDIO is not set···286#287# Networking options288#289+CONFIG_COMPAT_NET_DEV_OPS=y290CONFIG_PACKET=y291# CONFIG_PACKET_MMAP is not set292CONFIG_UNIX=y···342# CONFIG_ECONET is not set343# CONFIG_WAN_ROUTER is not set344# CONFIG_NET_SCHED is not set345+# CONFIG_DCB is not set346347#348# Network testing···354# CONFIG_AF_RXRPC is not set355# CONFIG_PHONET is not set356# CONFIG_WIRELESS is not set357+# CONFIG_WIMAX is not set358# CONFIG_RFKILL is not set359# CONFIG_NET_9P is not set360···396# CONFIG_BLK_DEV_HD is not set397CONFIG_MISC_DEVICES=y398# CONFIG_PHANTOM is not set0399# CONFIG_SGI_IOC4 is not set400# CONFIG_TIFM_CORE is not set401# CONFIG_ICS932S401 is not set402# CONFIG_ENCLOSURE_SERVICES is not set403# CONFIG_HP_ILO is not set404# CONFIG_C2PORT is not set405+406+#407+# EEPROM support408+#409+# CONFIG_EEPROM_AT24 is not set410+# CONFIG_EEPROM_LEGACY is not set411+# CONFIG_EEPROM_93CX6 is not set412CONFIG_HAVE_IDE=y413# CONFIG_IDE is not set414···445# CONFIG_SCSI_SRP_ATTRS is not set446CONFIG_SCSI_LOWLEVEL=y447# CONFIG_ISCSI_TCP is not set448+# CONFIG_SCSI_CXGB3_ISCSI is not set449# CONFIG_BLK_DEV_3W_XXXX_RAID is not set450# CONFIG_SCSI_3W_9XXX is not set451# CONFIG_SCSI_ACARD is not set···461# CONFIG_MEGARAID_SAS is not set462# CONFIG_SCSI_HPTIOP is not set463# CONFIG_SCSI_BUSLOGIC is not set464+# CONFIG_LIBFC is not set465+# CONFIG_FCOE is not set466# CONFIG_SCSI_DMX3191D is not set467# CONFIG_SCSI_EATA is not set468# CONFIG_SCSI_FUTURE_DOMAIN is not set···580# CONFIG_BROADCOM_PHY is not set581# CONFIG_ICPLUS_PHY is not set582# CONFIG_REALTEK_PHY is not set583+# CONFIG_NATIONAL_PHY is not set584+# CONFIG_STE10XP is not set585+# CONFIG_LSI_ET1011C_PHY is not set586# CONFIG_FIXED_PHY is not set587# CONFIG_MDIO_BITBANG is not set588CONFIG_NET_ETHERNET=y···626# CONFIG_JME is not set627CONFIG_NETDEV_10000=y628# CONFIG_CHELSIO_T1 is not set629+CONFIG_CHELSIO_T3_DEPENDS=y630# CONFIG_CHELSIO_T3 is not set631# CONFIG_ENIC is not set632# CONFIG_IXGBE is not set···648# CONFIG_WLAN_PRE80211 is not set649# CONFIG_WLAN_80211 is not set650# CONFIG_IWLWIFI_LEDS is not set651+652+#653+# Enable WiMAX (Networking options) to see the WiMAX drivers654+#655# CONFIG_WAN is not set656# CONFIG_FDDI is not set657# CONFIG_HIPPI is not set···695CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200696# CONFIG_SERIAL_JSM is not set697CONFIG_UNIX98_PTYS=y698+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set699CONFIG_LEGACY_PTYS=y700CONFIG_LEGACY_PTY_COUNT=256701+# CONFIG_HVC_UDBG is not set702# CONFIG_IPMI_HANDLER is not set703# CONFIG_HW_RANDOM is not set704# CONFIG_NVRAM is not set···762# Miscellaneous I2C Chip support763#764# CONFIG_DS1682 is not set00765# CONFIG_SENSORS_PCF8574 is not set766# CONFIG_PCF8575 is not set767# CONFIG_SENSORS_PCA9539 is not set···796# CONFIG_MFD_CORE is not set797# CONFIG_MFD_SM501 is not set798# CONFIG_HTC_PASIC3 is not set799+# CONFIG_TWL4030_CORE is not set800# CONFIG_MFD_TMIO is not set801# CONFIG_PMIC_DA903X is not set802# CONFIG_MFD_WM8400 is not set803# CONFIG_MFD_WM8350_I2C is not set804+# CONFIG_MFD_PCF50633 is not set805# CONFIG_REGULATOR is not set806807#···846#847848#849+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;850#851# CONFIG_USB_GADGET is not set852+853+#854+# OTG and related infrastructure855+#856# CONFIG_UWB is not set857# CONFIG_MMC is not set858# CONFIG_MEMSTICK is not set···860# CONFIG_DMADEVICES is not set861# CONFIG_UIO is not set862# CONFIG_STAGING is not set0863864#865# File systems···881CONFIG_FILE_LOCKING=y882# CONFIG_XFS_FS is not set883# CONFIG_OCFS2_FS is not set884+# CONFIG_BTRFS_FS is not set885CONFIG_DNOTIFY=y886CONFIG_INOTIFY=y887CONFIG_INOTIFY_USER=y···914# CONFIG_TMPFS_POSIX_ACL is not set915# CONFIG_HUGETLB_PAGE is not set916# CONFIG_CONFIGFS_FS is not set917+CONFIG_MISC_FILESYSTEMS=y000918# CONFIG_ADFS_FS is not set919# CONFIG_AFFS_FS is not set920# CONFIG_HFS_FS is not set···926# CONFIG_BFS_FS is not set927# CONFIG_EFS_FS is not set928# CONFIG_CRAMFS is not set929+# CONFIG_SQUASHFS is not set930# CONFIG_VXFS_FS is not set931# CONFIG_MINIX_FS is not set932# CONFIG_OMFS_FS is not set···967# Library routines968#969CONFIG_BITREVERSE=y970+CONFIG_GENERIC_FIND_LAST_BIT=y971# CONFIG_CRC_CCITT is not set972# CONFIG_CRC16 is not set973# CONFIG_CRC_T10DIF is not set···1016# CONFIG_DEBUG_MEMORY_INIT is not set1017# CONFIG_DEBUG_LIST is not set1018# CONFIG_DEBUG_SG is not set1019+# CONFIG_DEBUG_NOTIFIERS is not set1020# CONFIG_BOOT_PRINTK_DELAY is not set1021# CONFIG_RCU_TORTURE_TEST is not set1022# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1024# CONFIG_FAULT_INJECTION is not set1025# CONFIG_LATENCYTOP is not set1026CONFIG_HAVE_FUNCTION_TRACER=y1027+CONFIG_HAVE_DYNAMIC_FTRACE=y1028+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y10291030#1031# Tracers···1032# CONFIG_SCHED_TRACER is not set1033# CONFIG_CONTEXT_SWITCH_TRACER is not set1034# CONFIG_BOOT_TRACER is not set1035+# CONFIG_TRACE_BRANCH_PROFILING is not set1036# CONFIG_STACK_TRACER is not set1037# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1038# CONFIG_SAMPLES is not set1039CONFIG_HAVE_ARCH_KGDB=y1040# CONFIG_KGDB is not set1041+CONFIG_PRINT_STACK_DEPTH=641042# CONFIG_DEBUG_STACKOVERFLOW is not set1043# CONFIG_DEBUG_STACK_USAGE is not set1044# CONFIG_DEBUG_PAGEALLOC is not set···1063#1064# CONFIG_CRYPTO_FIPS is not set1065CONFIG_CRYPTO_ALGAPI=y1066+CONFIG_CRYPTO_ALGAPI2=y1067+CONFIG_CRYPTO_AEAD2=y1068CONFIG_CRYPTO_BLKCIPHER=y1069+CONFIG_CRYPTO_BLKCIPHER2=y1070CONFIG_CRYPTO_HASH=y1071+CONFIG_CRYPTO_HASH2=y1072+CONFIG_CRYPTO_RNG2=y1073CONFIG_CRYPTO_MANAGER=y1074+CONFIG_CRYPTO_MANAGER2=y1075# CONFIG_CRYPTO_GF128MUL is not set1076# CONFIG_CRYPTO_NULL is not set1077# CONFIG_CRYPTO_CRYPTD is not set
+64-21
arch/powerpc/configs/52xx/motionpro_defconfig
···1#2# Automatically generated make config: don't edit3-# Linux kernel version: 2.6.28-rc44-# Thu Nov 13 02:11:02 20085#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···71# CONFIG_BSD_PROCESS_ACCT is not set72# CONFIG_TASKSTATS is not set73# CONFIG_AUDIT is not set00000000074# CONFIG_IKCONFIG is not set75CONFIG_LOG_BUF_SHIFT=1476-# CONFIG_CGROUPS is not set77CONFIG_GROUP_SCHED=y78CONFIG_FAIR_GROUP_SCHED=y79# CONFIG_RT_GROUP_SCHED is not set80CONFIG_USER_SCHED=y81# CONFIG_CGROUP_SCHED is not set082CONFIG_SYSFS_DEPRECATED=y83CONFIG_SYSFS_DEPRECATED_V2=y84# CONFIG_RELAY is not set···119CONFIG_SLUB=y120# CONFIG_SLOB is not set121# CONFIG_PROFILING is not set122-# CONFIG_MARKERS is not set123CONFIG_HAVE_OPROFILE=y124CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y125CONFIG_HAVE_IOREMAP_PROT=y···129# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set130CONFIG_SLABINFO=y131CONFIG_RT_MUTEXES=y132-# CONFIG_TINY_SHMEM is not set133CONFIG_BASE_SMALL=0134# CONFIG_MODULES is not set135CONFIG_BLOCK=y136# CONFIG_LBD is not set137# CONFIG_BLK_DEV_IO_TRACE is not set138-# CONFIG_LSF is not set139# CONFIG_BLK_DEV_BSG is not set140# CONFIG_BLK_DEV_INTEGRITY is not set141···149# CONFIG_DEFAULT_CFQ is not set150# CONFIG_DEFAULT_NOOP is not set151CONFIG_DEFAULT_IOSCHED="anticipatory"152-CONFIG_CLASSIC_RCU=y153# CONFIG_FREEZER is not set154155#···187# CONFIG_TAU is not set188# CONFIG_FSL_ULI1575 is not set189CONFIG_PPC_BESTCOMM=y190-# CONFIG_PPC_BESTCOMM_ATA is not set191CONFIG_PPC_BESTCOMM_FEC=y192-# CONFIG_PPC_BESTCOMM_GEN_BD is not set193194#195# Kernel options···216CONFIG_ARCH_HAS_WALK_MEMORY=y217CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y218# CONFIG_KEXEC is not set0219CONFIG_ARCH_FLATMEM_ENABLE=y220CONFIG_ARCH_POPULATES_NODE_MAP=y221CONFIG_SELECT_MEMORY_MODEL=y···228CONFIG_PAGEFLAGS_EXTENDED=y229CONFIG_SPLIT_PTLOCK_CPUS=4230CONFIG_MIGRATION=y231-# CONFIG_RESOURCES_64BIT is not set232# CONFIG_PHYS_ADDR_T_64BIT is not set233CONFIG_ZONE_DMA_FLAG=1234CONFIG_BOUNCE=y235CONFIG_VIRT_TO_BUS=y236CONFIG_UNEVICTABLE_LRU=y000237CONFIG_FORCE_MAX_ZONEORDER=11238CONFIG_PROC_DEVICETREE=y239# CONFIG_CMDLINE_BOOL is not set···276#277# Networking options278#0279CONFIG_PACKET=y280# CONFIG_PACKET_MMAP is not set281CONFIG_UNIX=y···333# CONFIG_ECONET is not set334# CONFIG_WAN_ROUTER is not set335# CONFIG_NET_SCHED is not set0336337#338# Network testing···346# CONFIG_AF_RXRPC is not set347# CONFIG_PHONET is not set348# CONFIG_WIRELESS is not set0349# CONFIG_RFKILL is not set350# CONFIG_NET_9P is not set351···438# CONFIG_MTD_ONENAND is not set439440#000000441# UBI - Unsorted block images442#443# CONFIG_MTD_UBI is not set···464# CONFIG_ATA_OVER_ETH is not set465# CONFIG_BLK_DEV_HD is not set466CONFIG_MISC_DEVICES=y467-# CONFIG_EEPROM_93CX6 is not set468# CONFIG_ICS932S401 is not set469# CONFIG_ENCLOSURE_SERVICES is not set470# CONFIG_C2PORT is not set0000000471CONFIG_HAVE_IDE=y472# CONFIG_IDE is not set473···515# CONFIG_SCSI_SRP_ATTRS is not set516CONFIG_SCSI_LOWLEVEL=y517# CONFIG_ISCSI_TCP is not set0518# CONFIG_SCSI_DEBUG is not set519# CONFIG_SCSI_DH is not set520CONFIG_ATA=y···549CONFIG_BROADCOM_PHY=y550CONFIG_ICPLUS_PHY=y551# CONFIG_REALTEK_PHY is not set000552# CONFIG_FIXED_PHY is not set553CONFIG_MDIO_BITBANG=y554CONFIG_NET_ETHERNET=y···575# CONFIG_WLAN_PRE80211 is not set576# CONFIG_WLAN_80211 is not set577# CONFIG_IWLWIFI_LEDS is not set0000578# CONFIG_WAN is not set579# CONFIG_PPP is not set580# CONFIG_SLIP is not set···621CONFIG_SERIAL_MPC52xx_CONSOLE=y622CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200623CONFIG_UNIX98_PTYS=y0624CONFIG_LEGACY_PTYS=y625CONFIG_LEGACY_PTY_COUNT=2560626# CONFIG_IPMI_HANDLER is not set627# CONFIG_HW_RANDOM is not set628# CONFIG_NVRAM is not set···662# Miscellaneous I2C Chip support663#664# CONFIG_DS1682 is not set665-# CONFIG_EEPROM_AT24 is not set666-CONFIG_EEPROM_LEGACY=y667# CONFIG_SENSORS_PCF8574 is not set668# CONFIG_PCF8575 is not set669# CONFIG_SENSORS_PCA9539 is not set···690# CONFIG_SENSORS_ADT7462 is not set691# CONFIG_SENSORS_ADT7470 is not set692# CONFIG_SENSORS_ADT7473 is not set0693# CONFIG_SENSORS_ATXP1 is not set694# CONFIG_SENSORS_DS1621 is not set695# CONFIG_SENSORS_F71805F is not set···710# CONFIG_SENSORS_LM90 is not set711# CONFIG_SENSORS_LM92 is not set712# CONFIG_SENSORS_LM93 is not set0713# CONFIG_SENSORS_MAX1619 is not set714# CONFIG_SENSORS_MAX6650 is not set715# CONFIG_SENSORS_PC87360 is not set···754# CONFIG_MFD_CORE is not set755# CONFIG_MFD_SM501 is not set756# CONFIG_HTC_PASIC3 is not set0757# CONFIG_MFD_TMIO is not set758# CONFIG_PMIC_DA903X is not set759# CONFIG_MFD_WM8400 is not set760# CONFIG_MFD_WM8350_I2C is not set0761# CONFIG_REGULATOR is not set762763#···870# CONFIG_DMADEVICES is not set871# CONFIG_UIO is not set872# CONFIG_STAGING is not set873-CONFIG_STAGING_EXCLUDE_BUILD=y874875#876# File systems···890CONFIG_FILE_LOCKING=y891# CONFIG_XFS_FS is not set892# CONFIG_OCFS2_FS is not set0893CONFIG_DNOTIFY=y894CONFIG_INOTIFY=y895CONFIG_INOTIFY_USER=y···927# CONFIG_TMPFS_POSIX_ACL is not set928# CONFIG_HUGETLB_PAGE is not set929# CONFIG_CONFIGFS_FS is not set930-931-#932-# Miscellaneous filesystems933-#934# CONFIG_ADFS_FS is not set935# CONFIG_AFFS_FS is not set936# CONFIG_HFS_FS is not set···947CONFIG_JFFS2_RTIME=y948# CONFIG_JFFS2_RUBIN is not set949CONFIG_CRAMFS=y0950# CONFIG_VXFS_FS is not set951# CONFIG_MINIX_FS is not set952# CONFIG_OMFS_FS is not set···1044# Library routines1045#1046CONFIG_BITREVERSE=y01047# CONFIG_CRC_CCITT is not set1048# CONFIG_CRC16 is not set1049# CONFIG_CRC_T10DIF is not set···1096# CONFIG_DEBUG_MEMORY_INIT is not set1097# CONFIG_DEBUG_LIST is not set1098# CONFIG_DEBUG_SG is not set01099# CONFIG_BOOT_PRINTK_DELAY is not set1100# CONFIG_RCU_TORTURE_TEST is not set1101# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1105# CONFIG_FAULT_INJECTION is not set1106# CONFIG_LATENCYTOP is not set1107CONFIG_HAVE_FUNCTION_TRACER=y0011081109#1110# Tracers···1115# CONFIG_SCHED_TRACER is not set1116# CONFIG_CONTEXT_SWITCH_TRACER is not set1117# CONFIG_BOOT_TRACER is not set01118# CONFIG_STACK_TRACER is not set1119# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1120# CONFIG_SAMPLES is not set1121CONFIG_HAVE_ARCH_KGDB=y1122# CONFIG_KGDB is not set01123# CONFIG_DEBUG_STACKOVERFLOW is not set1124# CONFIG_DEBUG_STACK_USAGE is not set1125# CONFIG_DEBUG_PAGEALLOC is not set···1148#1149# CONFIG_CRYPTO_FIPS is not set1150CONFIG_CRYPTO_ALGAPI=y1151-CONFIG_CRYPTO_AEAD=y01152CONFIG_CRYPTO_BLKCIPHER=y01153CONFIG_CRYPTO_HASH=y1154-CONFIG_CRYPTO_RNG=y01155CONFIG_CRYPTO_MANAGER=y01156# CONFIG_CRYPTO_GF128MUL is not set1157# CONFIG_CRYPTO_NULL is not set1158# CONFIG_CRYPTO_CRYPTD is not set
···1#2# Automatically generated make config: don't edit3+# Linux kernel version: 2.6.29-rc24+# Mon Jan 26 21:42:29 20095#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46+CONFIG_SCHED_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···71# CONFIG_BSD_PROCESS_ACCT is not set72# CONFIG_TASKSTATS is not set73# CONFIG_AUDIT is not set74+75+#76+# RCU Subsystem77+#78+CONFIG_CLASSIC_RCU=y79+# CONFIG_TREE_RCU is not set80+# CONFIG_PREEMPT_RCU is not set81+# CONFIG_TREE_RCU_TRACE is not set82+# CONFIG_PREEMPT_RCU_TRACE is not set83# CONFIG_IKCONFIG is not set84CONFIG_LOG_BUF_SHIFT=14085CONFIG_GROUP_SCHED=y86CONFIG_FAIR_GROUP_SCHED=y87# CONFIG_RT_GROUP_SCHED is not set88CONFIG_USER_SCHED=y89# CONFIG_CGROUP_SCHED is not set90+# CONFIG_CGROUPS is not set91CONFIG_SYSFS_DEPRECATED=y92CONFIG_SYSFS_DEPRECATED_V2=y93# CONFIG_RELAY is not set···110CONFIG_SLUB=y111# CONFIG_SLOB is not set112# CONFIG_PROFILING is not set0113CONFIG_HAVE_OPROFILE=y114CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y115CONFIG_HAVE_IOREMAP_PROT=y···121# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set122CONFIG_SLABINFO=y123CONFIG_RT_MUTEXES=y0124CONFIG_BASE_SMALL=0125# CONFIG_MODULES is not set126CONFIG_BLOCK=y127# CONFIG_LBD is not set128# CONFIG_BLK_DEV_IO_TRACE is not set0129# CONFIG_BLK_DEV_BSG is not set130# CONFIG_BLK_DEV_INTEGRITY is not set131···143# CONFIG_DEFAULT_CFQ is not set144# CONFIG_DEFAULT_NOOP is not set145CONFIG_DEFAULT_IOSCHED="anticipatory"0146# CONFIG_FREEZER is not set147148#···182# CONFIG_TAU is not set183# CONFIG_FSL_ULI1575 is not set184CONFIG_PPC_BESTCOMM=y185+CONFIG_PPC_BESTCOMM_ATA=y186CONFIG_PPC_BESTCOMM_FEC=y187+# CONFIG_SIMPLE_GPIO is not set188189#190# Kernel options···211CONFIG_ARCH_HAS_WALK_MEMORY=y212CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y213# CONFIG_KEXEC is not set214+# CONFIG_CRASH_DUMP is not set215CONFIG_ARCH_FLATMEM_ENABLE=y216CONFIG_ARCH_POPULATES_NODE_MAP=y217CONFIG_SELECT_MEMORY_MODEL=y···222CONFIG_PAGEFLAGS_EXTENDED=y223CONFIG_SPLIT_PTLOCK_CPUS=4224CONFIG_MIGRATION=y0225# CONFIG_PHYS_ADDR_T_64BIT is not set226CONFIG_ZONE_DMA_FLAG=1227CONFIG_BOUNCE=y228CONFIG_VIRT_TO_BUS=y229CONFIG_UNEVICTABLE_LRU=y230+CONFIG_PPC_4K_PAGES=y231+# CONFIG_PPC_16K_PAGES is not set232+# CONFIG_PPC_64K_PAGES is not set233CONFIG_FORCE_MAX_ZONEORDER=11234CONFIG_PROC_DEVICETREE=y235# CONFIG_CMDLINE_BOOL is not set···268#269# Networking options270#271+CONFIG_COMPAT_NET_DEV_OPS=y272CONFIG_PACKET=y273# CONFIG_PACKET_MMAP is not set274CONFIG_UNIX=y···324# CONFIG_ECONET is not set325# CONFIG_WAN_ROUTER is not set326# CONFIG_NET_SCHED is not set327+# CONFIG_DCB is not set328329#330# Network testing···336# CONFIG_AF_RXRPC is not set337# CONFIG_PHONET is not set338# CONFIG_WIRELESS is not set339+# CONFIG_WIMAX is not set340# CONFIG_RFKILL is not set341# CONFIG_NET_9P is not set342···427# CONFIG_MTD_ONENAND is not set428429#430+# LPDDR flash memory drivers431+#432+# CONFIG_MTD_LPDDR is not set433+# CONFIG_MTD_QINFO_PROBE is not set434+435+#436# UBI - Unsorted block images437#438# CONFIG_MTD_UBI is not set···447# CONFIG_ATA_OVER_ETH is not set448# CONFIG_BLK_DEV_HD is not set449CONFIG_MISC_DEVICES=y0450# CONFIG_ICS932S401 is not set451# CONFIG_ENCLOSURE_SERVICES is not set452# CONFIG_C2PORT is not set453+454+#455+# EEPROM support456+#457+# CONFIG_EEPROM_AT24 is not set458+CONFIG_EEPROM_LEGACY=y459+# CONFIG_EEPROM_93CX6 is not set460CONFIG_HAVE_IDE=y461# CONFIG_IDE is not set462···492# CONFIG_SCSI_SRP_ATTRS is not set493CONFIG_SCSI_LOWLEVEL=y494# CONFIG_ISCSI_TCP is not set495+# CONFIG_LIBFC is not set496# CONFIG_SCSI_DEBUG is not set497# CONFIG_SCSI_DH is not set498CONFIG_ATA=y···525CONFIG_BROADCOM_PHY=y526CONFIG_ICPLUS_PHY=y527# CONFIG_REALTEK_PHY is not set528+# CONFIG_NATIONAL_PHY is not set529+# CONFIG_STE10XP is not set530+# CONFIG_LSI_ET1011C_PHY is not set531# CONFIG_FIXED_PHY is not set532CONFIG_MDIO_BITBANG=y533CONFIG_NET_ETHERNET=y···548# CONFIG_WLAN_PRE80211 is not set549# CONFIG_WLAN_80211 is not set550# CONFIG_IWLWIFI_LEDS is not set551+552+#553+# Enable WiMAX (Networking options) to see the WiMAX drivers554+#555# CONFIG_WAN is not set556# CONFIG_PPP is not set557# CONFIG_SLIP is not set···590CONFIG_SERIAL_MPC52xx_CONSOLE=y591CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200592CONFIG_UNIX98_PTYS=y593+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set594CONFIG_LEGACY_PTYS=y595CONFIG_LEGACY_PTY_COUNT=256596+# CONFIG_HVC_UDBG is not set597# CONFIG_IPMI_HANDLER is not set598# CONFIG_HW_RANDOM is not set599# CONFIG_NVRAM is not set···629# Miscellaneous I2C Chip support630#631# CONFIG_DS1682 is not set00632# CONFIG_SENSORS_PCF8574 is not set633# CONFIG_PCF8575 is not set634# CONFIG_SENSORS_PCA9539 is not set···659# CONFIG_SENSORS_ADT7462 is not set660# CONFIG_SENSORS_ADT7470 is not set661# CONFIG_SENSORS_ADT7473 is not set662+# CONFIG_SENSORS_ADT7475 is not set663# CONFIG_SENSORS_ATXP1 is not set664# CONFIG_SENSORS_DS1621 is not set665# CONFIG_SENSORS_F71805F is not set···678# CONFIG_SENSORS_LM90 is not set679# CONFIG_SENSORS_LM92 is not set680# CONFIG_SENSORS_LM93 is not set681+# CONFIG_SENSORS_LTC4245 is not set682# CONFIG_SENSORS_MAX1619 is not set683# CONFIG_SENSORS_MAX6650 is not set684# CONFIG_SENSORS_PC87360 is not set···721# CONFIG_MFD_CORE is not set722# CONFIG_MFD_SM501 is not set723# CONFIG_HTC_PASIC3 is not set724+# CONFIG_TWL4030_CORE is not set725# CONFIG_MFD_TMIO is not set726# CONFIG_PMIC_DA903X is not set727# CONFIG_MFD_WM8400 is not set728# CONFIG_MFD_WM8350_I2C is not set729+# CONFIG_MFD_PCF50633 is not set730# CONFIG_REGULATOR is not set731732#···835# CONFIG_DMADEVICES is not set836# CONFIG_UIO is not set837# CONFIG_STAGING is not set0838839#840# File systems···856CONFIG_FILE_LOCKING=y857# CONFIG_XFS_FS is not set858# CONFIG_OCFS2_FS is not set859+# CONFIG_BTRFS_FS is not set860CONFIG_DNOTIFY=y861CONFIG_INOTIFY=y862CONFIG_INOTIFY_USER=y···892# CONFIG_TMPFS_POSIX_ACL is not set893# CONFIG_HUGETLB_PAGE is not set894# CONFIG_CONFIGFS_FS is not set895+CONFIG_MISC_FILESYSTEMS=y000896# CONFIG_ADFS_FS is not set897# CONFIG_AFFS_FS is not set898# CONFIG_HFS_FS is not set···915CONFIG_JFFS2_RTIME=y916# CONFIG_JFFS2_RUBIN is not set917CONFIG_CRAMFS=y918+# CONFIG_SQUASHFS is not set919# CONFIG_VXFS_FS is not set920# CONFIG_MINIX_FS is not set921# CONFIG_OMFS_FS is not set···1011# Library routines1012#1013CONFIG_BITREVERSE=y1014+CONFIG_GENERIC_FIND_LAST_BIT=y1015# CONFIG_CRC_CCITT is not set1016# CONFIG_CRC16 is not set1017# CONFIG_CRC_T10DIF is not set···1062# CONFIG_DEBUG_MEMORY_INIT is not set1063# CONFIG_DEBUG_LIST is not set1064# CONFIG_DEBUG_SG is not set1065+# CONFIG_DEBUG_NOTIFIERS is not set1066# CONFIG_BOOT_PRINTK_DELAY is not set1067# CONFIG_RCU_TORTURE_TEST is not set1068# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1070# CONFIG_FAULT_INJECTION is not set1071# CONFIG_LATENCYTOP is not set1072CONFIG_HAVE_FUNCTION_TRACER=y1073+CONFIG_HAVE_DYNAMIC_FTRACE=y1074+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y10751076#1077# Tracers···1078# CONFIG_SCHED_TRACER is not set1079# CONFIG_CONTEXT_SWITCH_TRACER is not set1080# CONFIG_BOOT_TRACER is not set1081+# CONFIG_TRACE_BRANCH_PROFILING is not set1082# CONFIG_STACK_TRACER is not set1083# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1084# CONFIG_SAMPLES is not set1085CONFIG_HAVE_ARCH_KGDB=y1086# CONFIG_KGDB is not set1087+CONFIG_PRINT_STACK_DEPTH=641088# CONFIG_DEBUG_STACKOVERFLOW is not set1089# CONFIG_DEBUG_STACK_USAGE is not set1090# CONFIG_DEBUG_PAGEALLOC is not set···1109#1110# CONFIG_CRYPTO_FIPS is not set1111CONFIG_CRYPTO_ALGAPI=y1112+CONFIG_CRYPTO_ALGAPI2=y1113+CONFIG_CRYPTO_AEAD2=y1114CONFIG_CRYPTO_BLKCIPHER=y1115+CONFIG_CRYPTO_BLKCIPHER2=y1116CONFIG_CRYPTO_HASH=y1117+CONFIG_CRYPTO_HASH2=y1118+CONFIG_CRYPTO_RNG2=y1119CONFIG_CRYPTO_MANAGER=y1120+CONFIG_CRYPTO_MANAGER2=y1121# CONFIG_CRYPTO_GF128MUL is not set1122# CONFIG_CRYPTO_NULL is not set1123# CONFIG_CRYPTO_CRYPTD is not set
+56-26
arch/powerpc/configs/52xx/pcm030_defconfig
···1#2# Automatically generated make config: don't edit3-# Linux kernel version: 2.6.28-rc44-# Thu Nov 13 02:13:16 20085#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···72# CONFIG_BSD_PROCESS_ACCT is not set73# CONFIG_TASKSTATS is not set74# CONFIG_AUDIT is not set00000000075CONFIG_IKCONFIG=y76CONFIG_IKCONFIG_PROC=y77CONFIG_LOG_BUF_SHIFT=1478-# CONFIG_CGROUPS is not set79CONFIG_GROUP_SCHED=y80CONFIG_FAIR_GROUP_SCHED=y81# CONFIG_RT_GROUP_SCHED is not set82CONFIG_USER_SCHED=y83# CONFIG_CGROUP_SCHED is not set084CONFIG_SYSFS_DEPRECATED=y85CONFIG_SYSFS_DEPRECATED_V2=y86# CONFIG_RELAY is not set···121# CONFIG_SLUB is not set122# CONFIG_SLOB is not set123# CONFIG_PROFILING is not set124-# CONFIG_MARKERS is not set125CONFIG_HAVE_OPROFILE=y126# CONFIG_KPROBES is not set127CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y···132# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set133CONFIG_SLABINFO=y134CONFIG_RT_MUTEXES=y135-# CONFIG_TINY_SHMEM is not set136CONFIG_BASE_SMALL=0137CONFIG_MODULES=y138# CONFIG_MODULE_FORCE_LOAD is not set···139# CONFIG_MODULE_FORCE_UNLOAD is not set140# CONFIG_MODVERSIONS is not set141# CONFIG_MODULE_SRCVERSION_ALL is not set142-CONFIG_KMOD=y143CONFIG_BLOCK=y144# CONFIG_LBD is not set145# CONFIG_BLK_DEV_IO_TRACE is not set146-# CONFIG_LSF is not set147# CONFIG_BLK_DEV_BSG is not set148# CONFIG_BLK_DEV_INTEGRITY is not set149···157# CONFIG_DEFAULT_CFQ is not set158CONFIG_DEFAULT_NOOP=y159CONFIG_DEFAULT_IOSCHED="noop"160-CONFIG_CLASSIC_RCU=y161# CONFIG_FREEZER is not set162163#···195# CONFIG_TAU is not set196# CONFIG_FSL_ULI1575 is not set197CONFIG_PPC_BESTCOMM=y198-CONFIG_PPC_BESTCOMM_ATA=y199CONFIG_PPC_BESTCOMM_FEC=y200-CONFIG_PPC_BESTCOMM_GEN_BD=y201202#203# Kernel options···216# CONFIG_PREEMPT_NONE is not set217# CONFIG_PREEMPT_VOLUNTARY is not set218CONFIG_PREEMPT=y219-# CONFIG_PREEMPT_RCU is not set220CONFIG_BINFMT_ELF=y221# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set222# CONFIG_HAVE_AOUT is not set···225CONFIG_ARCH_HAS_WALK_MEMORY=y226CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y227# CONFIG_KEXEC is not set0228CONFIG_ARCH_FLATMEM_ENABLE=y229CONFIG_ARCH_POPULATES_NODE_MAP=y230CONFIG_SELECT_MEMORY_MODEL=y···237CONFIG_PAGEFLAGS_EXTENDED=y238CONFIG_SPLIT_PTLOCK_CPUS=4239CONFIG_MIGRATION=y240-# CONFIG_RESOURCES_64BIT is not set241# CONFIG_PHYS_ADDR_T_64BIT is not set242CONFIG_ZONE_DMA_FLAG=1243CONFIG_BOUNCE=y244CONFIG_VIRT_TO_BUS=y245CONFIG_UNEVICTABLE_LRU=y000246CONFIG_FORCE_MAX_ZONEORDER=11247CONFIG_PROC_DEVICETREE=y248# CONFIG_CMDLINE_BOOL is not set···267CONFIG_ARCH_SUPPORTS_MSI=y268# CONFIG_PCI_MSI is not set269CONFIG_PCI_LEGACY=y0270# CONFIG_PCCARD is not set271# CONFIG_HOTPLUG_PCI is not set272# CONFIG_HAS_RAPIDIO is not set···290#291# Networking options292#0293CONFIG_PACKET=y294# CONFIG_PACKET_MMAP is not set295CONFIG_UNIX=y···341# CONFIG_ECONET is not set342# CONFIG_WAN_ROUTER is not set343# CONFIG_NET_SCHED is not set0344345#346# Network testing···354# CONFIG_AF_RXRPC is not set355# CONFIG_PHONET is not set356# CONFIG_WIRELESS is not set0357# CONFIG_RFKILL is not set358# CONFIG_NET_9P is not set359···375# CONFIG_MTD_DEBUG is not set376# CONFIG_MTD_CONCAT is not set377CONFIG_MTD_PARTITIONS=y0378# CONFIG_MTD_REDBOOT_PARTS is not set379CONFIG_MTD_CMDLINE_PARTS=y380# CONFIG_MTD_OF_PARTS is not set···424#425# CONFIG_MTD_COMPLEX_MAPPINGS is not set426CONFIG_MTD_PHYSMAP=y427-CONFIG_MTD_PHYSMAP_START=0x0428-CONFIG_MTD_PHYSMAP_LEN=0x0429-CONFIG_MTD_PHYSMAP_BANKWIDTH=1430# CONFIG_MTD_PHYSMAP_OF is not set431# CONFIG_MTD_INTEL_VR_NOR is not set432# CONFIG_MTD_PLATRAM is not set···446# CONFIG_MTD_DOC2001PLUS is not set447# CONFIG_MTD_NAND is not set448# CONFIG_MTD_ONENAND is not set000000449450#451# UBI - Unsorted block images···602# CONFIG_BROADCOM_PHY is not set603# CONFIG_ICPLUS_PHY is not set604# CONFIG_REALTEK_PHY is not set000605# CONFIG_FIXED_PHY is not set606# CONFIG_MDIO_BITBANG is not set607CONFIG_NET_ETHERNET=y···637# CONFIG_WLAN_PRE80211 is not set638# CONFIG_WLAN_80211 is not set639# CONFIG_IWLWIFI_LEDS is not set0000640641#642# USB Network Adapters···697CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600698# CONFIG_SERIAL_JSM is not set699CONFIG_UNIX98_PTYS=y0700# CONFIG_LEGACY_PTYS is not set0701# CONFIG_IPMI_HANDLER is not set702CONFIG_HW_RANDOM=y703# CONFIG_NVRAM is not set···764# Miscellaneous I2C Chip support765#766# CONFIG_DS1682 is not set767-# CONFIG_EEPROM_AT24 is not set768-CONFIG_EEPROM_LEGACY=m769# CONFIG_SENSORS_PCF8574 is not set770# CONFIG_PCF8575 is not set771# CONFIG_SENSORS_PCA9539 is not set···796# CONFIG_MFD_CORE is not set797# CONFIG_MFD_SM501 is not set798# CONFIG_HTC_PASIC3 is not set0799# CONFIG_MFD_TMIO is not set800# CONFIG_PMIC_DA903X is not set801# CONFIG_MFD_WM8400 is not set802# CONFIG_MFD_WM8350_I2C is not set0803# CONFIG_REGULATOR is not set804805#···861#862# CONFIG_USB_C67X00_HCD is not set863# CONFIG_USB_EHCI_HCD is not set0864# CONFIG_USB_ISP116X_HCD is not set865# CONFIG_USB_ISP1760_HCD is not set866CONFIG_USB_OHCI_HCD=m···889# CONFIG_USB_TMC is not set890891#892-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'893#894895#896-# may also be needed; see USB_STORAGE Help for more information897#898CONFIG_USB_STORAGE=m899# CONFIG_USB_STORAGE_DEBUG is not set900# CONFIG_USB_STORAGE_DATAFAB is not set901# CONFIG_USB_STORAGE_FREECOM is not set902# CONFIG_USB_STORAGE_ISD200 is not set903-# CONFIG_USB_STORAGE_DPCM is not set904# CONFIG_USB_STORAGE_USBAT is not set905# CONFIG_USB_STORAGE_SDDR09 is not set906# CONFIG_USB_STORAGE_SDDR55 is not set···945# CONFIG_USB_ISIGHTFW is not set946# CONFIG_USB_VST is not set947# CONFIG_USB_GADGET is not set0000948# CONFIG_UWB is not set949# CONFIG_MMC is not set950# CONFIG_MEMSTICK is not set···1011# CONFIG_DMADEVICES is not set1012# CONFIG_UIO is not set1013# CONFIG_STAGING is not set1014-CONFIG_STAGING_EXCLUDE_BUILD=y10151016#1017# File systems···1031CONFIG_FILE_LOCKING=y1032# CONFIG_XFS_FS is not set1033# CONFIG_OCFS2_FS is not set01034# CONFIG_DNOTIFY is not set1035# CONFIG_INOTIFY is not set1036# CONFIG_QUOTA is not set···1067# CONFIG_TMPFS_POSIX_ACL is not set1068# CONFIG_HUGETLB_PAGE is not set1069# CONFIG_CONFIGFS_FS is not set1070-1071-#1072-# Miscellaneous filesystems1073-#1074# CONFIG_ADFS_FS is not set1075# CONFIG_AFFS_FS is not set1076# CONFIG_HFS_FS is not set···1087CONFIG_JFFS2_RTIME=y1088# CONFIG_JFFS2_RUBIN is not set1089# CONFIG_CRAMFS is not set01090# CONFIG_VXFS_FS is not set1091# CONFIG_MINIX_FS is not set1092# CONFIG_OMFS_FS is not set···1167# Library routines1168#1169CONFIG_BITREVERSE=y01170# CONFIG_CRC_CCITT is not set1171# CONFIG_CRC16 is not set1172# CONFIG_CRC_T10DIF is not set···1200# CONFIG_RCU_CPU_STALL_DETECTOR is not set1201# CONFIG_LATENCYTOP is not set1202CONFIG_HAVE_FUNCTION_TRACER=y0012031204#1205# Tracers···1209# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1210# CONFIG_SAMPLES is not set1211CONFIG_HAVE_ARCH_KGDB=y01212# CONFIG_IRQSTACKS is not set1213# CONFIG_BOOTX_TEXT is not set1214# CONFIG_PPC_EARLY_DEBUG is not set
···1#2# Automatically generated make config: don't edit3+# Linux kernel version: 2.6.29-rc24+# Mon Jan 26 21:41:33 20095#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46+CONFIG_SCHED_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···72# CONFIG_BSD_PROCESS_ACCT is not set73# CONFIG_TASKSTATS is not set74# CONFIG_AUDIT is not set75+76+#77+# RCU Subsystem78+#79+CONFIG_CLASSIC_RCU=y80+# CONFIG_TREE_RCU is not set81+# CONFIG_PREEMPT_RCU is not set82+# CONFIG_TREE_RCU_TRACE is not set83+# CONFIG_PREEMPT_RCU_TRACE is not set84CONFIG_IKCONFIG=y85CONFIG_IKCONFIG_PROC=y86CONFIG_LOG_BUF_SHIFT=14087CONFIG_GROUP_SCHED=y88CONFIG_FAIR_GROUP_SCHED=y89# CONFIG_RT_GROUP_SCHED is not set90CONFIG_USER_SCHED=y91# CONFIG_CGROUP_SCHED is not set92+# CONFIG_CGROUPS is not set93CONFIG_SYSFS_DEPRECATED=y94CONFIG_SYSFS_DEPRECATED_V2=y95# CONFIG_RELAY is not set···112# CONFIG_SLUB is not set113# CONFIG_SLOB is not set114# CONFIG_PROFILING is not set0115CONFIG_HAVE_OPROFILE=y116# CONFIG_KPROBES is not set117CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y···124# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set125CONFIG_SLABINFO=y126CONFIG_RT_MUTEXES=y0127CONFIG_BASE_SMALL=0128CONFIG_MODULES=y129# CONFIG_MODULE_FORCE_LOAD is not set···132# CONFIG_MODULE_FORCE_UNLOAD is not set133# CONFIG_MODVERSIONS is not set134# CONFIG_MODULE_SRCVERSION_ALL is not set0135CONFIG_BLOCK=y136# CONFIG_LBD is not set137# CONFIG_BLK_DEV_IO_TRACE is not set0138# CONFIG_BLK_DEV_BSG is not set139# CONFIG_BLK_DEV_INTEGRITY is not set140···152# CONFIG_DEFAULT_CFQ is not set153CONFIG_DEFAULT_NOOP=y154CONFIG_DEFAULT_IOSCHED="noop"0155# CONFIG_FREEZER is not set156157#···191# CONFIG_TAU is not set192# CONFIG_FSL_ULI1575 is not set193CONFIG_PPC_BESTCOMM=y194+CONFIG_PPC_BESTCOMM_ATA=m195CONFIG_PPC_BESTCOMM_FEC=y196+# CONFIG_SIMPLE_GPIO is not set197198#199# Kernel options···212# CONFIG_PREEMPT_NONE is not set213# CONFIG_PREEMPT_VOLUNTARY is not set214CONFIG_PREEMPT=y0215CONFIG_BINFMT_ELF=y216# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set217# CONFIG_HAVE_AOUT is not set···222CONFIG_ARCH_HAS_WALK_MEMORY=y223CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y224# CONFIG_KEXEC is not set225+# CONFIG_CRASH_DUMP is not set226CONFIG_ARCH_FLATMEM_ENABLE=y227CONFIG_ARCH_POPULATES_NODE_MAP=y228CONFIG_SELECT_MEMORY_MODEL=y···233CONFIG_PAGEFLAGS_EXTENDED=y234CONFIG_SPLIT_PTLOCK_CPUS=4235CONFIG_MIGRATION=y0236# CONFIG_PHYS_ADDR_T_64BIT is not set237CONFIG_ZONE_DMA_FLAG=1238CONFIG_BOUNCE=y239CONFIG_VIRT_TO_BUS=y240CONFIG_UNEVICTABLE_LRU=y241+CONFIG_PPC_4K_PAGES=y242+# CONFIG_PPC_16K_PAGES is not set243+# CONFIG_PPC_64K_PAGES is not set244CONFIG_FORCE_MAX_ZONEORDER=11245CONFIG_PROC_DEVICETREE=y246# CONFIG_CMDLINE_BOOL is not set···261CONFIG_ARCH_SUPPORTS_MSI=y262# CONFIG_PCI_MSI is not set263CONFIG_PCI_LEGACY=y264+# CONFIG_PCI_STUB is not set265# CONFIG_PCCARD is not set266# CONFIG_HOTPLUG_PCI is not set267# CONFIG_HAS_RAPIDIO is not set···283#284# Networking options285#286+CONFIG_COMPAT_NET_DEV_OPS=y287CONFIG_PACKET=y288# CONFIG_PACKET_MMAP is not set289CONFIG_UNIX=y···333# CONFIG_ECONET is not set334# CONFIG_WAN_ROUTER is not set335# CONFIG_NET_SCHED is not set336+# CONFIG_DCB is not set337338#339# Network testing···345# CONFIG_AF_RXRPC is not set346# CONFIG_PHONET is not set347# CONFIG_WIRELESS is not set348+# CONFIG_WIMAX is not set349# CONFIG_RFKILL is not set350# CONFIG_NET_9P is not set351···365# CONFIG_MTD_DEBUG is not set366# CONFIG_MTD_CONCAT is not set367CONFIG_MTD_PARTITIONS=y368+# CONFIG_MTD_TESTS is not set369# CONFIG_MTD_REDBOOT_PARTS is not set370CONFIG_MTD_CMDLINE_PARTS=y371# CONFIG_MTD_OF_PARTS is not set···413#414# CONFIG_MTD_COMPLEX_MAPPINGS is not set415CONFIG_MTD_PHYSMAP=y416+# CONFIG_MTD_PHYSMAP_COMPAT is not set00417# CONFIG_MTD_PHYSMAP_OF is not set418# CONFIG_MTD_INTEL_VR_NOR is not set419# CONFIG_MTD_PLATRAM is not set···437# CONFIG_MTD_DOC2001PLUS is not set438# CONFIG_MTD_NAND is not set439# CONFIG_MTD_ONENAND is not set440+441+#442+# LPDDR flash memory drivers443+#444+# CONFIG_MTD_LPDDR is not set445+# CONFIG_MTD_QINFO_PROBE is not set446447#448# UBI - Unsorted block images···587# CONFIG_BROADCOM_PHY is not set588# CONFIG_ICPLUS_PHY is not set589# CONFIG_REALTEK_PHY is not set590+# CONFIG_NATIONAL_PHY is not set591+# CONFIG_STE10XP is not set592+# CONFIG_LSI_ET1011C_PHY is not set593# CONFIG_FIXED_PHY is not set594# CONFIG_MDIO_BITBANG is not set595CONFIG_NET_ETHERNET=y···619# CONFIG_WLAN_PRE80211 is not set620# CONFIG_WLAN_80211 is not set621# CONFIG_IWLWIFI_LEDS is not set622+623+#624+# Enable WiMAX (Networking options) to see the WiMAX drivers625+#626627#628# USB Network Adapters···675CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=9600676# CONFIG_SERIAL_JSM is not set677CONFIG_UNIX98_PTYS=y678+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set679# CONFIG_LEGACY_PTYS is not set680+# CONFIG_HVC_UDBG is not set681# CONFIG_IPMI_HANDLER is not set682CONFIG_HW_RANDOM=y683# CONFIG_NVRAM is not set···740# Miscellaneous I2C Chip support741#742# CONFIG_DS1682 is not set00743# CONFIG_SENSORS_PCF8574 is not set744# CONFIG_PCF8575 is not set745# CONFIG_SENSORS_PCA9539 is not set···774# CONFIG_MFD_CORE is not set775# CONFIG_MFD_SM501 is not set776# CONFIG_HTC_PASIC3 is not set777+# CONFIG_TWL4030_CORE is not set778# CONFIG_MFD_TMIO is not set779# CONFIG_PMIC_DA903X is not set780# CONFIG_MFD_WM8400 is not set781# CONFIG_MFD_WM8350_I2C is not set782+# CONFIG_MFD_PCF50633 is not set783# CONFIG_REGULATOR is not set784785#···837#838# CONFIG_USB_C67X00_HCD is not set839# CONFIG_USB_EHCI_HCD is not set840+# CONFIG_USB_OXU210HP_HCD is not set841# CONFIG_USB_ISP116X_HCD is not set842# CONFIG_USB_ISP1760_HCD is not set843CONFIG_USB_OHCI_HCD=m···864# CONFIG_USB_TMC is not set865866#867+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;868#869870#871+# see USB_STORAGE Help for more information872#873CONFIG_USB_STORAGE=m874# CONFIG_USB_STORAGE_DEBUG is not set875# CONFIG_USB_STORAGE_DATAFAB is not set876# CONFIG_USB_STORAGE_FREECOM is not set877# CONFIG_USB_STORAGE_ISD200 is not set0878# CONFIG_USB_STORAGE_USBAT is not set879# CONFIG_USB_STORAGE_SDDR09 is not set880# CONFIG_USB_STORAGE_SDDR55 is not set···921# CONFIG_USB_ISIGHTFW is not set922# CONFIG_USB_VST is not set923# CONFIG_USB_GADGET is not set924+925+#926+# OTG and related infrastructure927+#928# CONFIG_UWB is not set929# CONFIG_MMC is not set930# CONFIG_MEMSTICK is not set···983# CONFIG_DMADEVICES is not set984# CONFIG_UIO is not set985# CONFIG_STAGING is not set0986987#988# File systems···1004CONFIG_FILE_LOCKING=y1005# CONFIG_XFS_FS is not set1006# CONFIG_OCFS2_FS is not set1007+# CONFIG_BTRFS_FS is not set1008# CONFIG_DNOTIFY is not set1009# CONFIG_INOTIFY is not set1010# CONFIG_QUOTA is not set···1039# CONFIG_TMPFS_POSIX_ACL is not set1040# CONFIG_HUGETLB_PAGE is not set1041# CONFIG_CONFIGFS_FS is not set1042+CONFIG_MISC_FILESYSTEMS=y0001043# CONFIG_ADFS_FS is not set1044# CONFIG_AFFS_FS is not set1045# CONFIG_HFS_FS is not set···1062CONFIG_JFFS2_RTIME=y1063# CONFIG_JFFS2_RUBIN is not set1064# CONFIG_CRAMFS is not set1065+# CONFIG_SQUASHFS is not set1066# CONFIG_VXFS_FS is not set1067# CONFIG_MINIX_FS is not set1068# CONFIG_OMFS_FS is not set···1141# Library routines1142#1143CONFIG_BITREVERSE=y1144+CONFIG_GENERIC_FIND_LAST_BIT=y1145# CONFIG_CRC_CCITT is not set1146# CONFIG_CRC16 is not set1147# CONFIG_CRC_T10DIF is not set···1173# CONFIG_RCU_CPU_STALL_DETECTOR is not set1174# CONFIG_LATENCYTOP is not set1175CONFIG_HAVE_FUNCTION_TRACER=y1176+CONFIG_HAVE_DYNAMIC_FTRACE=y1177+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y11781179#1180# Tracers···1180# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1181# CONFIG_SAMPLES is not set1182CONFIG_HAVE_ARCH_KGDB=y1183+CONFIG_PRINT_STACK_DEPTH=641184# CONFIG_IRQSTACKS is not set1185# CONFIG_BOOTX_TEXT is not set1186# CONFIG_PPC_EARLY_DEBUG is not set
+65-24
arch/powerpc/configs/52xx/tqm5200_defconfig
···1#2# Automatically generated make config: don't edit3-# Linux kernel version: 2.6.28-rc44-# Thu Nov 13 02:09:30 20085#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···71# CONFIG_BSD_PROCESS_ACCT is not set72# CONFIG_TASKSTATS is not set73# CONFIG_AUDIT is not set00000000074# CONFIG_IKCONFIG is not set75CONFIG_LOG_BUF_SHIFT=1476-# CONFIG_CGROUPS is not set77CONFIG_GROUP_SCHED=y78CONFIG_FAIR_GROUP_SCHED=y79# CONFIG_RT_GROUP_SCHED is not set80CONFIG_USER_SCHED=y81# CONFIG_CGROUP_SCHED is not set082CONFIG_SYSFS_DEPRECATED=y83CONFIG_SYSFS_DEPRECATED_V2=y84# CONFIG_RELAY is not set···119CONFIG_SLUB=y120# CONFIG_SLOB is not set121# CONFIG_PROFILING is not set122-# CONFIG_MARKERS is not set123CONFIG_HAVE_OPROFILE=y124CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y125CONFIG_HAVE_IOREMAP_PROT=y···129# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set130CONFIG_SLABINFO=y131CONFIG_RT_MUTEXES=y132-# CONFIG_TINY_SHMEM is not set133CONFIG_BASE_SMALL=0134CONFIG_MODULES=y135# CONFIG_MODULE_FORCE_LOAD is not set···136# CONFIG_MODULE_FORCE_UNLOAD is not set137CONFIG_MODVERSIONS=y138# CONFIG_MODULE_SRCVERSION_ALL is not set139-CONFIG_KMOD=y140CONFIG_BLOCK=y141# CONFIG_LBD is not set142# CONFIG_BLK_DEV_IO_TRACE is not set143-# CONFIG_LSF is not set144# CONFIG_BLK_DEV_BSG is not set145# CONFIG_BLK_DEV_INTEGRITY is not set146···154# CONFIG_DEFAULT_CFQ is not set155# CONFIG_DEFAULT_NOOP is not set156CONFIG_DEFAULT_IOSCHED="anticipatory"157-CONFIG_CLASSIC_RCU=y158# CONFIG_FREEZER is not set159160#···192# CONFIG_TAU is not set193# CONFIG_FSL_ULI1575 is not set194CONFIG_PPC_BESTCOMM=y195-# CONFIG_PPC_BESTCOMM_ATA is not set196CONFIG_PPC_BESTCOMM_FEC=y197-# CONFIG_PPC_BESTCOMM_GEN_BD is not set198199#200# Kernel options···221CONFIG_ARCH_HAS_WALK_MEMORY=y222CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y223# CONFIG_KEXEC is not set0224CONFIG_ARCH_FLATMEM_ENABLE=y225CONFIG_ARCH_POPULATES_NODE_MAP=y226CONFIG_SELECT_MEMORY_MODEL=y···233CONFIG_PAGEFLAGS_EXTENDED=y234CONFIG_SPLIT_PTLOCK_CPUS=4235CONFIG_MIGRATION=y236-# CONFIG_RESOURCES_64BIT is not set237# CONFIG_PHYS_ADDR_T_64BIT is not set238CONFIG_ZONE_DMA_FLAG=1239CONFIG_BOUNCE=y240CONFIG_VIRT_TO_BUS=y241CONFIG_UNEVICTABLE_LRU=y000242CONFIG_FORCE_MAX_ZONEORDER=11243CONFIG_PROC_DEVICETREE=y244# CONFIG_CMDLINE_BOOL is not set···281#282# Networking options283#0284CONFIG_PACKET=y285# CONFIG_PACKET_MMAP is not set286CONFIG_UNIX=y···338# CONFIG_ECONET is not set339# CONFIG_WAN_ROUTER is not set340# CONFIG_NET_SCHED is not set0341342#343# Network testing···351# CONFIG_AF_RXRPC is not set352# CONFIG_PHONET is not set353# CONFIG_WIRELESS is not set0354# CONFIG_RFKILL is not set355# CONFIG_NET_9P is not set356···374# CONFIG_MTD_DEBUG is not set375CONFIG_MTD_CONCAT=y376CONFIG_MTD_PARTITIONS=y0377# CONFIG_MTD_REDBOOT_PARTS is not set378CONFIG_MTD_CMDLINE_PARTS=y379# CONFIG_MTD_OF_PARTS is not set···444# CONFIG_MTD_ONENAND is not set445446#000000447# UBI - Unsorted block images448#449# CONFIG_MTD_UBI is not set···513# CONFIG_SCSI_SRP_ATTRS is not set514CONFIG_SCSI_LOWLEVEL=y515# CONFIG_ISCSI_TCP is not set0516# CONFIG_SCSI_DEBUG is not set517# CONFIG_SCSI_DH is not set518CONFIG_ATA=y···548# CONFIG_BROADCOM_PHY is not set549# CONFIG_ICPLUS_PHY is not set550# CONFIG_REALTEK_PHY is not set000551# CONFIG_FIXED_PHY is not set552# CONFIG_MDIO_BITBANG is not set553CONFIG_NET_ETHERNET=y···574# CONFIG_WLAN_PRE80211 is not set575# CONFIG_WLAN_80211 is not set576# CONFIG_IWLWIFI_LEDS is not set0000577578#579# USB Network Adapters···629CONFIG_SERIAL_MPC52xx_CONSOLE=y630CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200631CONFIG_UNIX98_PTYS=y0632CONFIG_LEGACY_PTYS=y633CONFIG_LEGACY_PTY_COUNT=2560634# CONFIG_IPMI_HANDLER is not set635# CONFIG_HW_RANDOM is not set636# CONFIG_NVRAM is not set···672# Miscellaneous I2C Chip support673#674# CONFIG_DS1682 is not set675-# CONFIG_EEPROM_AT24 is not set676-# CONFIG_EEPROM_LEGACY is not set677# CONFIG_SENSORS_PCF8574 is not set678# CONFIG_PCF8575 is not set679# CONFIG_SENSORS_PCA9539 is not set···700# CONFIG_SENSORS_ADT7462 is not set701# CONFIG_SENSORS_ADT7470 is not set702# CONFIG_SENSORS_ADT7473 is not set0703# CONFIG_SENSORS_ATXP1 is not set704# CONFIG_SENSORS_DS1621 is not set705# CONFIG_SENSORS_F71805F is not set···720# CONFIG_SENSORS_LM90 is not set721# CONFIG_SENSORS_LM92 is not set722# CONFIG_SENSORS_LM93 is not set0723# CONFIG_SENSORS_MAX1619 is not set724# CONFIG_SENSORS_MAX6650 is not set725# CONFIG_SENSORS_PC87360 is not set···769# CONFIG_MFD_CORE is not set770# CONFIG_MFD_SM501 is not set771# CONFIG_HTC_PASIC3 is not set0772# CONFIG_MFD_TMIO is not set773# CONFIG_PMIC_DA903X is not set774# CONFIG_MFD_WM8400 is not set775# CONFIG_MFD_WM8350_I2C is not set0776# CONFIG_REGULATOR is not set777778#···832# USB Host Controller Drivers833#834# CONFIG_USB_C67X00_HCD is not set0835# CONFIG_USB_ISP116X_HCD is not set836# CONFIG_USB_ISP1760_HCD is not set837CONFIG_USB_OHCI_HCD=y···857# CONFIG_USB_TMC is not set858859#860-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'861#862863#864-# may also be needed; see USB_STORAGE Help for more information865#866CONFIG_USB_STORAGE=y867# CONFIG_USB_STORAGE_DEBUG is not set868# CONFIG_USB_STORAGE_DATAFAB is not set869# CONFIG_USB_STORAGE_FREECOM is not set870# CONFIG_USB_STORAGE_ISD200 is not set871-# CONFIG_USB_STORAGE_DPCM is not set872# CONFIG_USB_STORAGE_USBAT is not set873# CONFIG_USB_STORAGE_SDDR09 is not set874# CONFIG_USB_STORAGE_SDDR55 is not set···913# CONFIG_USB_ISIGHTFW is not set914# CONFIG_USB_VST is not set915# CONFIG_USB_GADGET is not set0000916# CONFIG_MMC is not set917# CONFIG_MEMSTICK is not set918# CONFIG_NEW_LEDS is not set···980# CONFIG_DMADEVICES is not set981# CONFIG_UIO is not set982# CONFIG_STAGING is not set983-CONFIG_STAGING_EXCLUDE_BUILD=y984985#986# File systems···1000CONFIG_FILE_LOCKING=y1001# CONFIG_XFS_FS is not set1002# CONFIG_OCFS2_FS is not set01003CONFIG_DNOTIFY=y1004CONFIG_INOTIFY=y1005CONFIG_INOTIFY_USER=y···1037# CONFIG_TMPFS_POSIX_ACL is not set1038# CONFIG_HUGETLB_PAGE is not set1039# CONFIG_CONFIGFS_FS is not set1040-1041-#1042-# Miscellaneous filesystems1043-#1044# CONFIG_ADFS_FS is not set1045# CONFIG_AFFS_FS is not set1046# CONFIG_HFS_FS is not set···1057CONFIG_JFFS2_RTIME=y1058# CONFIG_JFFS2_RUBIN is not set1059CONFIG_CRAMFS=y01060# CONFIG_VXFS_FS is not set1061# CONFIG_MINIX_FS is not set1062# CONFIG_OMFS_FS is not set···1154# Library routines1155#1156CONFIG_BITREVERSE=y01157# CONFIG_CRC_CCITT is not set1158# CONFIG_CRC16 is not set1159# CONFIG_CRC_T10DIF is not set···1206# CONFIG_DEBUG_MEMORY_INIT is not set1207# CONFIG_DEBUG_LIST is not set1208# CONFIG_DEBUG_SG is not set01209# CONFIG_BOOT_PRINTK_DELAY is not set1210# CONFIG_RCU_TORTURE_TEST is not set1211# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1215# CONFIG_FAULT_INJECTION is not set1216# CONFIG_LATENCYTOP is not set1217CONFIG_HAVE_FUNCTION_TRACER=y0012181219#1220# Tracers···1225# CONFIG_SCHED_TRACER is not set1226# CONFIG_CONTEXT_SWITCH_TRACER is not set1227# CONFIG_BOOT_TRACER is not set01228# CONFIG_STACK_TRACER is not set1229# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1230# CONFIG_SAMPLES is not set1231CONFIG_HAVE_ARCH_KGDB=y1232# CONFIG_KGDB is not set01233# CONFIG_DEBUG_STACKOVERFLOW is not set1234# CONFIG_DEBUG_STACK_USAGE is not set1235# CONFIG_DEBUG_PAGEALLOC is not set···1258#1259# CONFIG_CRYPTO_FIPS is not set1260CONFIG_CRYPTO_ALGAPI=y1261-CONFIG_CRYPTO_AEAD=y01262CONFIG_CRYPTO_BLKCIPHER=y01263CONFIG_CRYPTO_HASH=y1264-CONFIG_CRYPTO_RNG=y01265CONFIG_CRYPTO_MANAGER=y01266# CONFIG_CRYPTO_GF128MUL is not set1267# CONFIG_CRYPTO_NULL is not set1268# CONFIG_CRYPTO_CRYPTD is not set
···1#2# Automatically generated make config: don't edit3+# Linux kernel version: 2.6.29-rc24+# Mon Jan 26 21:42:58 20095#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46+CONFIG_SCHED_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···71# CONFIG_BSD_PROCESS_ACCT is not set72# CONFIG_TASKSTATS is not set73# CONFIG_AUDIT is not set74+75+#76+# RCU Subsystem77+#78+CONFIG_CLASSIC_RCU=y79+# CONFIG_TREE_RCU is not set80+# CONFIG_PREEMPT_RCU is not set81+# CONFIG_TREE_RCU_TRACE is not set82+# CONFIG_PREEMPT_RCU_TRACE is not set83# CONFIG_IKCONFIG is not set84CONFIG_LOG_BUF_SHIFT=14085CONFIG_GROUP_SCHED=y86CONFIG_FAIR_GROUP_SCHED=y87# CONFIG_RT_GROUP_SCHED is not set88CONFIG_USER_SCHED=y89# CONFIG_CGROUP_SCHED is not set90+# CONFIG_CGROUPS is not set91CONFIG_SYSFS_DEPRECATED=y92CONFIG_SYSFS_DEPRECATED_V2=y93# CONFIG_RELAY is not set···110CONFIG_SLUB=y111# CONFIG_SLOB is not set112# CONFIG_PROFILING is not set0113CONFIG_HAVE_OPROFILE=y114CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y115CONFIG_HAVE_IOREMAP_PROT=y···121# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set122CONFIG_SLABINFO=y123CONFIG_RT_MUTEXES=y0124CONFIG_BASE_SMALL=0125CONFIG_MODULES=y126# CONFIG_MODULE_FORCE_LOAD is not set···129# CONFIG_MODULE_FORCE_UNLOAD is not set130CONFIG_MODVERSIONS=y131# CONFIG_MODULE_SRCVERSION_ALL is not set0132CONFIG_BLOCK=y133# CONFIG_LBD is not set134# CONFIG_BLK_DEV_IO_TRACE is not set0135# CONFIG_BLK_DEV_BSG is not set136# CONFIG_BLK_DEV_INTEGRITY is not set137···149# CONFIG_DEFAULT_CFQ is not set150# CONFIG_DEFAULT_NOOP is not set151CONFIG_DEFAULT_IOSCHED="anticipatory"0152# CONFIG_FREEZER is not set153154#···188# CONFIG_TAU is not set189# CONFIG_FSL_ULI1575 is not set190CONFIG_PPC_BESTCOMM=y191+CONFIG_PPC_BESTCOMM_ATA=y192CONFIG_PPC_BESTCOMM_FEC=y193+# CONFIG_SIMPLE_GPIO is not set194195#196# Kernel options···217CONFIG_ARCH_HAS_WALK_MEMORY=y218CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y219# CONFIG_KEXEC is not set220+# CONFIG_CRASH_DUMP is not set221CONFIG_ARCH_FLATMEM_ENABLE=y222CONFIG_ARCH_POPULATES_NODE_MAP=y223CONFIG_SELECT_MEMORY_MODEL=y···228CONFIG_PAGEFLAGS_EXTENDED=y229CONFIG_SPLIT_PTLOCK_CPUS=4230CONFIG_MIGRATION=y0231# CONFIG_PHYS_ADDR_T_64BIT is not set232CONFIG_ZONE_DMA_FLAG=1233CONFIG_BOUNCE=y234CONFIG_VIRT_TO_BUS=y235CONFIG_UNEVICTABLE_LRU=y236+CONFIG_PPC_4K_PAGES=y237+# CONFIG_PPC_16K_PAGES is not set238+# CONFIG_PPC_64K_PAGES is not set239CONFIG_FORCE_MAX_ZONEORDER=11240CONFIG_PROC_DEVICETREE=y241# CONFIG_CMDLINE_BOOL is not set···274#275# Networking options276#277+CONFIG_COMPAT_NET_DEV_OPS=y278CONFIG_PACKET=y279# CONFIG_PACKET_MMAP is not set280CONFIG_UNIX=y···330# CONFIG_ECONET is not set331# CONFIG_WAN_ROUTER is not set332# CONFIG_NET_SCHED is not set333+# CONFIG_DCB is not set334335#336# Network testing···342# CONFIG_AF_RXRPC is not set343# CONFIG_PHONET is not set344# CONFIG_WIRELESS is not set345+# CONFIG_WIMAX is not set346# CONFIG_RFKILL is not set347# CONFIG_NET_9P is not set348···364# CONFIG_MTD_DEBUG is not set365CONFIG_MTD_CONCAT=y366CONFIG_MTD_PARTITIONS=y367+# CONFIG_MTD_TESTS is not set368# CONFIG_MTD_REDBOOT_PARTS is not set369CONFIG_MTD_CMDLINE_PARTS=y370# CONFIG_MTD_OF_PARTS is not set···433# CONFIG_MTD_ONENAND is not set434435#436+# LPDDR flash memory drivers437+#438+# CONFIG_MTD_LPDDR is not set439+# CONFIG_MTD_QINFO_PROBE is not set440+441+#442# UBI - Unsorted block images443#444# CONFIG_MTD_UBI is not set···496# CONFIG_SCSI_SRP_ATTRS is not set497CONFIG_SCSI_LOWLEVEL=y498# CONFIG_ISCSI_TCP is not set499+# CONFIG_LIBFC is not set500# CONFIG_SCSI_DEBUG is not set501# CONFIG_SCSI_DH is not set502CONFIG_ATA=y···530# CONFIG_BROADCOM_PHY is not set531# CONFIG_ICPLUS_PHY is not set532# CONFIG_REALTEK_PHY is not set533+# CONFIG_NATIONAL_PHY is not set534+# CONFIG_STE10XP is not set535+# CONFIG_LSI_ET1011C_PHY is not set536# CONFIG_FIXED_PHY is not set537# CONFIG_MDIO_BITBANG is not set538CONFIG_NET_ETHERNET=y···553# CONFIG_WLAN_PRE80211 is not set554# CONFIG_WLAN_80211 is not set555# CONFIG_IWLWIFI_LEDS is not set556+557+#558+# Enable WiMAX (Networking options) to see the WiMAX drivers559+#560561#562# USB Network Adapters···604CONFIG_SERIAL_MPC52xx_CONSOLE=y605CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200606CONFIG_UNIX98_PTYS=y607+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set608CONFIG_LEGACY_PTYS=y609CONFIG_LEGACY_PTY_COUNT=256610+# CONFIG_HVC_UDBG is not set611# CONFIG_IPMI_HANDLER is not set612# CONFIG_HW_RANDOM is not set613# CONFIG_NVRAM is not set···645# Miscellaneous I2C Chip support646#647# CONFIG_DS1682 is not set00648# CONFIG_SENSORS_PCF8574 is not set649# CONFIG_PCF8575 is not set650# CONFIG_SENSORS_PCA9539 is not set···675# CONFIG_SENSORS_ADT7462 is not set676# CONFIG_SENSORS_ADT7470 is not set677# CONFIG_SENSORS_ADT7473 is not set678+# CONFIG_SENSORS_ADT7475 is not set679# CONFIG_SENSORS_ATXP1 is not set680# CONFIG_SENSORS_DS1621 is not set681# CONFIG_SENSORS_F71805F is not set···694# CONFIG_SENSORS_LM90 is not set695# CONFIG_SENSORS_LM92 is not set696# CONFIG_SENSORS_LM93 is not set697+# CONFIG_SENSORS_LTC4245 is not set698# CONFIG_SENSORS_MAX1619 is not set699# CONFIG_SENSORS_MAX6650 is not set700# CONFIG_SENSORS_PC87360 is not set···742# CONFIG_MFD_CORE is not set743# CONFIG_MFD_SM501 is not set744# CONFIG_HTC_PASIC3 is not set745+# CONFIG_TWL4030_CORE is not set746# CONFIG_MFD_TMIO is not set747# CONFIG_PMIC_DA903X is not set748# CONFIG_MFD_WM8400 is not set749# CONFIG_MFD_WM8350_I2C is not set750+# CONFIG_MFD_PCF50633 is not set751# CONFIG_REGULATOR is not set752753#···803# USB Host Controller Drivers804#805# CONFIG_USB_C67X00_HCD is not set806+# CONFIG_USB_OXU210HP_HCD is not set807# CONFIG_USB_ISP116X_HCD is not set808# CONFIG_USB_ISP1760_HCD is not set809CONFIG_USB_OHCI_HCD=y···827# CONFIG_USB_TMC is not set828829#830+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;831#832833#834+# see USB_STORAGE Help for more information835#836CONFIG_USB_STORAGE=y837# CONFIG_USB_STORAGE_DEBUG is not set838# CONFIG_USB_STORAGE_DATAFAB is not set839# CONFIG_USB_STORAGE_FREECOM is not set840# CONFIG_USB_STORAGE_ISD200 is not set0841# CONFIG_USB_STORAGE_USBAT is not set842# CONFIG_USB_STORAGE_SDDR09 is not set843# CONFIG_USB_STORAGE_SDDR55 is not set···884# CONFIG_USB_ISIGHTFW is not set885# CONFIG_USB_VST is not set886# CONFIG_USB_GADGET is not set887+888+#889+# OTG and related infrastructure890+#891# CONFIG_MMC is not set892# CONFIG_MEMSTICK is not set893# CONFIG_NEW_LEDS is not set···947# CONFIG_DMADEVICES is not set948# CONFIG_UIO is not set949# CONFIG_STAGING is not set0950951#952# File systems···968CONFIG_FILE_LOCKING=y969# CONFIG_XFS_FS is not set970# CONFIG_OCFS2_FS is not set971+# CONFIG_BTRFS_FS is not set972CONFIG_DNOTIFY=y973CONFIG_INOTIFY=y974CONFIG_INOTIFY_USER=y···1004# CONFIG_TMPFS_POSIX_ACL is not set1005# CONFIG_HUGETLB_PAGE is not set1006# CONFIG_CONFIGFS_FS is not set1007+CONFIG_MISC_FILESYSTEMS=y0001008# CONFIG_ADFS_FS is not set1009# CONFIG_AFFS_FS is not set1010# CONFIG_HFS_FS is not set···1027CONFIG_JFFS2_RTIME=y1028# CONFIG_JFFS2_RUBIN is not set1029CONFIG_CRAMFS=y1030+# CONFIG_SQUASHFS is not set1031# CONFIG_VXFS_FS is not set1032# CONFIG_MINIX_FS is not set1033# CONFIG_OMFS_FS is not set···1123# Library routines1124#1125CONFIG_BITREVERSE=y1126+CONFIG_GENERIC_FIND_LAST_BIT=y1127# CONFIG_CRC_CCITT is not set1128# CONFIG_CRC16 is not set1129# CONFIG_CRC_T10DIF is not set···1174# CONFIG_DEBUG_MEMORY_INIT is not set1175# CONFIG_DEBUG_LIST is not set1176# CONFIG_DEBUG_SG is not set1177+# CONFIG_DEBUG_NOTIFIERS is not set1178# CONFIG_BOOT_PRINTK_DELAY is not set1179# CONFIG_RCU_TORTURE_TEST is not set1180# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1182# CONFIG_FAULT_INJECTION is not set1183# CONFIG_LATENCYTOP is not set1184CONFIG_HAVE_FUNCTION_TRACER=y1185+CONFIG_HAVE_DYNAMIC_FTRACE=y1186+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y11871188#1189# Tracers···1190# CONFIG_SCHED_TRACER is not set1191# CONFIG_CONTEXT_SWITCH_TRACER is not set1192# CONFIG_BOOT_TRACER is not set1193+# CONFIG_TRACE_BRANCH_PROFILING is not set1194# CONFIG_STACK_TRACER is not set1195# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1196# CONFIG_SAMPLES is not set1197CONFIG_HAVE_ARCH_KGDB=y1198# CONFIG_KGDB is not set1199+CONFIG_PRINT_STACK_DEPTH=641200# CONFIG_DEBUG_STACKOVERFLOW is not set1201# CONFIG_DEBUG_STACK_USAGE is not set1202# CONFIG_DEBUG_PAGEALLOC is not set···1221#1222# CONFIG_CRYPTO_FIPS is not set1223CONFIG_CRYPTO_ALGAPI=y1224+CONFIG_CRYPTO_ALGAPI2=y1225+CONFIG_CRYPTO_AEAD2=y1226CONFIG_CRYPTO_BLKCIPHER=y1227+CONFIG_CRYPTO_BLKCIPHER2=y1228CONFIG_CRYPTO_HASH=y1229+CONFIG_CRYPTO_HASH2=y1230+CONFIG_CRYPTO_RNG2=y1231CONFIG_CRYPTO_MANAGER=y1232+CONFIG_CRYPTO_MANAGER2=y1233# CONFIG_CRYPTO_GF128MUL is not set1234# CONFIG_CRYPTO_NULL is not set1235# CONFIG_CRYPTO_CRYPTD is not set
+77-27
arch/powerpc/configs/mpc5200_defconfig
···1#2# Automatically generated make config: don't edit3-# Linux kernel version: 2.6.28-rc44-# Thu Nov 13 02:09:07 20085#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46-CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···72# CONFIG_BSD_PROCESS_ACCT is not set73# CONFIG_TASKSTATS is not set74# CONFIG_AUDIT is not set00000000075# CONFIG_IKCONFIG is not set76CONFIG_LOG_BUF_SHIFT=1477-# CONFIG_CGROUPS is not set78# CONFIG_GROUP_SCHED is not set079CONFIG_SYSFS_DEPRECATED=y80CONFIG_SYSFS_DEPRECATED_V2=y81# CONFIG_RELAY is not set···117CONFIG_SLUB=y118# CONFIG_SLOB is not set119# CONFIG_PROFILING is not set120-# CONFIG_MARKERS is not set121CONFIG_HAVE_OPROFILE=y122CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y123CONFIG_HAVE_IOREMAP_PROT=y···127# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set128CONFIG_SLABINFO=y129CONFIG_RT_MUTEXES=y130-# CONFIG_TINY_SHMEM is not set131CONFIG_BASE_SMALL=0132CONFIG_MODULES=y133# CONFIG_MODULE_FORCE_LOAD is not set···134# CONFIG_MODULE_FORCE_UNLOAD is not set135# CONFIG_MODVERSIONS is not set136# CONFIG_MODULE_SRCVERSION_ALL is not set137-CONFIG_KMOD=y138CONFIG_BLOCK=y139# CONFIG_LBD is not set140# CONFIG_BLK_DEV_IO_TRACE is not set141-# CONFIG_LSF is not set142# CONFIG_BLK_DEV_BSG is not set143# CONFIG_BLK_DEV_INTEGRITY is not set144···152# CONFIG_DEFAULT_CFQ is not set153# CONFIG_DEFAULT_NOOP is not set154CONFIG_DEFAULT_IOSCHED="anticipatory"155-CONFIG_CLASSIC_RCU=y156CONFIG_FREEZER=y157158#···196CONFIG_PPC_BESTCOMM=y197CONFIG_PPC_BESTCOMM_ATA=y198CONFIG_PPC_BESTCOMM_FEC=y199-CONFIG_PPC_BESTCOMM_GEN_BD=y200201#202# Kernel options···224CONFIG_ARCH_HAS_WALK_MEMORY=y225CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y226# CONFIG_KEXEC is not set0227CONFIG_ARCH_FLATMEM_ENABLE=y228CONFIG_ARCH_POPULATES_NODE_MAP=y229CONFIG_SELECT_MEMORY_MODEL=y···236CONFIG_PAGEFLAGS_EXTENDED=y237CONFIG_SPLIT_PTLOCK_CPUS=4238CONFIG_MIGRATION=y239-# CONFIG_RESOURCES_64BIT is not set240# CONFIG_PHYS_ADDR_T_64BIT is not set241CONFIG_ZONE_DMA_FLAG=1242CONFIG_BOUNCE=y243CONFIG_VIRT_TO_BUS=y244CONFIG_UNEVICTABLE_LRU=y000245CONFIG_FORCE_MAX_ZONEORDER=11246CONFIG_PROC_DEVICETREE=y247# CONFIG_CMDLINE_BOOL is not set···271# CONFIG_PCI_MSI is not set272CONFIG_PCI_LEGACY=y273# CONFIG_PCI_DEBUG is not set0274# CONFIG_PCCARD is not set275# CONFIG_HOTPLUG_PCI is not set276# CONFIG_HAS_RAPIDIO is not set···294#295# Networking options296#0297CONFIG_PACKET=y298# CONFIG_PACKET_MMAP is not set299CONFIG_UNIX=y···351# CONFIG_ECONET is not set352# CONFIG_WAN_ROUTER is not set353# CONFIG_NET_SCHED is not set0354355#356# Network testing···364# CONFIG_AF_RXRPC is not set365# CONFIG_PHONET is not set366# CONFIG_WIRELESS is not set0367# CONFIG_RFKILL is not set368# CONFIG_NET_9P is not set369···387# CONFIG_MTD_DEBUG is not set388CONFIG_MTD_CONCAT=y389CONFIG_MTD_PARTITIONS=y0390# CONFIG_MTD_REDBOOT_PARTS is not set391CONFIG_MTD_CMDLINE_PARTS=y392# CONFIG_MTD_OF_PARTS is not set···459# CONFIG_MTD_ONENAND is not set460461#000000462# UBI - Unsorted block images463#464# CONFIG_MTD_UBI is not set···492# CONFIG_BLK_DEV_HD is not set493CONFIG_MISC_DEVICES=y494# CONFIG_PHANTOM is not set495-# CONFIG_EEPROM_93CX6 is not set496# CONFIG_SGI_IOC4 is not set497# CONFIG_TIFM_CORE is not set498# CONFIG_ICS932S401 is not set499# CONFIG_ENCLOSURE_SERVICES is not set500# CONFIG_HP_ILO is not set501# CONFIG_C2PORT is not set0000000502CONFIG_HAVE_IDE=y503# CONFIG_IDE is not set504···563# CONFIG_MEGARAID_SAS is not set564# CONFIG_SCSI_HPTIOP is not set565# CONFIG_SCSI_BUSLOGIC is not set00566# CONFIG_SCSI_DMX3191D is not set567# CONFIG_SCSI_EATA is not set568# CONFIG_SCSI_FUTURE_DOMAIN is not set···685# CONFIG_BROADCOM_PHY is not set686# CONFIG_ICPLUS_PHY is not set687# CONFIG_REALTEK_PHY is not set000688# CONFIG_FIXED_PHY is not set689# CONFIG_MDIO_BITBANG is not set690CONFIG_NET_ETHERNET=y···720# CONFIG_WLAN_PRE80211 is not set721# CONFIG_WLAN_80211 is not set722# CONFIG_IWLWIFI_LEDS is not set0000723724#725# USB Network Adapters···807CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200808# CONFIG_SERIAL_JSM is not set809CONFIG_UNIX98_PTYS=y0810CONFIG_LEGACY_PTYS=y811CONFIG_LEGACY_PTY_COUNT=256812# CONFIG_HVC_RTAS is not set0813# CONFIG_IPMI_HANDLER is not set814# CONFIG_HW_RANDOM is not set815# CONFIG_NVRAM is not set···879# Miscellaneous I2C Chip support880#881# CONFIG_DS1682 is not set882-# CONFIG_EEPROM_AT24 is not set883-# CONFIG_EEPROM_LEGACY is not set884# CONFIG_SENSORS_PCF8574 is not set885# CONFIG_PCF8575 is not set886# CONFIG_SENSORS_PCA9539 is not set···907# CONFIG_SENSORS_ADT7462 is not set908# CONFIG_SENSORS_ADT7470 is not set909# CONFIG_SENSORS_ADT7473 is not set0910# CONFIG_SENSORS_ATXP1 is not set911# CONFIG_SENSORS_DS1621 is not set912# CONFIG_SENSORS_I5K_AMB is not set···928# CONFIG_SENSORS_LM90 is not set929# CONFIG_SENSORS_LM92 is not set930# CONFIG_SENSORS_LM93 is not set0931# CONFIG_SENSORS_MAX1619 is not set932# CONFIG_SENSORS_MAX6650 is not set933# CONFIG_SENSORS_PC87360 is not set···988# CONFIG_MFD_CORE is not set989# CONFIG_MFD_SM501 is not set990# CONFIG_HTC_PASIC3 is not set0991# CONFIG_MFD_TMIO is not set992# CONFIG_PMIC_DA903X is not set993# CONFIG_MFD_WM8400 is not set994# CONFIG_MFD_WM8350_I2C is not set0995# CONFIG_REGULATOR is not set996997#···1088# CONFIG_LCD_ILI9320 is not set1089# CONFIG_LCD_PLATFORM is not set1090CONFIG_BACKLIGHT_CLASS_DEVICE=y1091-# CONFIG_BACKLIGHT_CORGI is not set10921093#1094# Display device support···1130CONFIG_HID_A4TECH=y1131# CONFIG_HID_APPLE is not set1132CONFIG_HID_BELKIN=y1133-CONFIG_HID_BRIGHT=y1134CONFIG_HID_CHERRY=y1135# CONFIG_HID_CHICONY is not set1136CONFIG_HID_CYPRESS=y1137-CONFIG_HID_DELL=y1138CONFIG_HID_EZKEY=y1139# CONFIG_HID_GYRATION is not set1140# CONFIG_HID_LOGITECH is not set1141# CONFIG_HID_MICROSOFT is not set1142# CONFIG_HID_MONTEREY is not set01143# CONFIG_HID_PANTHERLORD is not set1144# CONFIG_HID_PETALYNX is not set1145# CONFIG_HID_SAMSUNG is not set1146# CONFIG_HID_SONY is not set1147# CONFIG_HID_SUNPLUS is not set001148# CONFIG_THRUSTMASTER_FF is not set1149# CONFIG_ZEROPLUS_FF is not set1150CONFIG_USB_SUPPORT=y···1175#1176# CONFIG_USB_C67X00_HCD is not set1177# CONFIG_USB_EHCI_HCD is not set01178# CONFIG_USB_ISP116X_HCD is not set1179# CONFIG_USB_ISP1760_HCD is not set1180CONFIG_USB_OHCI_HCD=y···1203# CONFIG_USB_TMC is not set12041205#1206-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'1207#12081209#1210-# may also be needed; see USB_STORAGE Help for more information1211#1212CONFIG_USB_STORAGE=y1213# CONFIG_USB_STORAGE_DEBUG is not set1214# CONFIG_USB_STORAGE_DATAFAB is not set1215# CONFIG_USB_STORAGE_FREECOM is not set1216# CONFIG_USB_STORAGE_ISD200 is not set1217-# CONFIG_USB_STORAGE_DPCM is not set1218# CONFIG_USB_STORAGE_USBAT is not set1219# CONFIG_USB_STORAGE_SDDR09 is not set1220# CONFIG_USB_STORAGE_SDDR55 is not set···1260# CONFIG_USB_ISIGHTFW is not set1261# CONFIG_USB_VST is not set1262# CONFIG_USB_GADGET is not set00001263# CONFIG_UWB is not set1264# CONFIG_MMC is not set1265# CONFIG_MEMSTICK is not set···1285# CONFIG_DMADEVICES is not set1286# CONFIG_UIO is not set1287# CONFIG_STAGING is not set1288-CONFIG_STAGING_EXCLUDE_BUILD=y12891290#1291# File systems···1305CONFIG_FILE_LOCKING=y1306# CONFIG_XFS_FS is not set1307# CONFIG_OCFS2_FS is not set01308CONFIG_DNOTIFY=y1309CONFIG_INOTIFY=y1310CONFIG_INOTIFY_USER=y···1342# CONFIG_TMPFS_POSIX_ACL is not set1343# CONFIG_HUGETLB_PAGE is not set1344# CONFIG_CONFIGFS_FS is not set1345-1346-#1347-# Miscellaneous filesystems1348-#1349# CONFIG_ADFS_FS is not set1350# CONFIG_AFFS_FS is not set1351# CONFIG_HFS_FS is not set···1362CONFIG_JFFS2_RTIME=y1363# CONFIG_JFFS2_RUBIN is not set1364CONFIG_CRAMFS=y01365# CONFIG_VXFS_FS is not set1366# CONFIG_MINIX_FS is not set1367# CONFIG_OMFS_FS is not set···1443# Library routines1444#1445CONFIG_BITREVERSE=y01446# CONFIG_CRC_CCITT is not set1447# CONFIG_CRC16 is not set1448# CONFIG_CRC_T10DIF is not set···1495# CONFIG_DEBUG_MEMORY_INIT is not set1496# CONFIG_DEBUG_LIST is not set1497# CONFIG_DEBUG_SG is not set01498# CONFIG_BOOT_PRINTK_DELAY is not set1499# CONFIG_RCU_TORTURE_TEST is not set1500# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1504# CONFIG_FAULT_INJECTION is not set1505# CONFIG_LATENCYTOP is not set1506CONFIG_HAVE_FUNCTION_TRACER=y0015071508#1509# Tracers···1514# CONFIG_SCHED_TRACER is not set1515# CONFIG_CONTEXT_SWITCH_TRACER is not set1516# CONFIG_BOOT_TRACER is not set01517# CONFIG_STACK_TRACER is not set1518# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1519# CONFIG_SAMPLES is not set1520CONFIG_HAVE_ARCH_KGDB=y1521# CONFIG_KGDB is not set01522# CONFIG_DEBUG_STACKOVERFLOW is not set1523# CONFIG_DEBUG_STACK_USAGE is not set1524# CONFIG_DEBUG_PAGEALLOC is not set···1547#1548# CONFIG_CRYPTO_FIPS is not set1549CONFIG_CRYPTO_ALGAPI=y1550-CONFIG_CRYPTO_AEAD=y01551CONFIG_CRYPTO_BLKCIPHER=y01552CONFIG_CRYPTO_HASH=y1553-CONFIG_CRYPTO_RNG=y01554CONFIG_CRYPTO_MANAGER=y01555# CONFIG_CRYPTO_GF128MUL is not set1556# CONFIG_CRYPTO_NULL is not set1557# CONFIG_CRYPTO_CRYPTD is not set
···1#2# Automatically generated make config: don't edit3+# Linux kernel version: 2.6.29-rc24+# Mon Jan 26 21:40:44 20095#6# CONFIG_PPC64 is not set7···43CONFIG_PPC=y44CONFIG_EARLY_PRINTK=y45CONFIG_GENERIC_NVRAM=y46+CONFIG_SCHED_OMIT_FRAME_POINTER=y47CONFIG_ARCH_MAY_HAVE_PC_FDC=y48CONFIG_PPC_OF=y49CONFIG_OF=y···72# CONFIG_BSD_PROCESS_ACCT is not set73# CONFIG_TASKSTATS is not set74# CONFIG_AUDIT is not set75+76+#77+# RCU Subsystem78+#79+CONFIG_CLASSIC_RCU=y80+# CONFIG_TREE_RCU is not set81+# CONFIG_PREEMPT_RCU is not set82+# CONFIG_TREE_RCU_TRACE is not set83+# CONFIG_PREEMPT_RCU_TRACE is not set84# CONFIG_IKCONFIG is not set85CONFIG_LOG_BUF_SHIFT=14086# CONFIG_GROUP_SCHED is not set87+# CONFIG_CGROUPS is not set88CONFIG_SYSFS_DEPRECATED=y89CONFIG_SYSFS_DEPRECATED_V2=y90# CONFIG_RELAY is not set···108CONFIG_SLUB=y109# CONFIG_SLOB is not set110# CONFIG_PROFILING is not set0111CONFIG_HAVE_OPROFILE=y112CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y113CONFIG_HAVE_IOREMAP_PROT=y···119# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set120CONFIG_SLABINFO=y121CONFIG_RT_MUTEXES=y0122CONFIG_BASE_SMALL=0123CONFIG_MODULES=y124# CONFIG_MODULE_FORCE_LOAD is not set···127# CONFIG_MODULE_FORCE_UNLOAD is not set128# CONFIG_MODVERSIONS is not set129# CONFIG_MODULE_SRCVERSION_ALL is not set0130CONFIG_BLOCK=y131# CONFIG_LBD is not set132# CONFIG_BLK_DEV_IO_TRACE is not set0133# CONFIG_BLK_DEV_BSG is not set134# CONFIG_BLK_DEV_INTEGRITY is not set135···147# CONFIG_DEFAULT_CFQ is not set148# CONFIG_DEFAULT_NOOP is not set149CONFIG_DEFAULT_IOSCHED="anticipatory"0150CONFIG_FREEZER=y151152#···192CONFIG_PPC_BESTCOMM=y193CONFIG_PPC_BESTCOMM_ATA=y194CONFIG_PPC_BESTCOMM_FEC=y195+# CONFIG_SIMPLE_GPIO is not set196197#198# Kernel options···220CONFIG_ARCH_HAS_WALK_MEMORY=y221CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y222# CONFIG_KEXEC is not set223+# CONFIG_CRASH_DUMP is not set224CONFIG_ARCH_FLATMEM_ENABLE=y225CONFIG_ARCH_POPULATES_NODE_MAP=y226CONFIG_SELECT_MEMORY_MODEL=y···231CONFIG_PAGEFLAGS_EXTENDED=y232CONFIG_SPLIT_PTLOCK_CPUS=4233CONFIG_MIGRATION=y0234# CONFIG_PHYS_ADDR_T_64BIT is not set235CONFIG_ZONE_DMA_FLAG=1236CONFIG_BOUNCE=y237CONFIG_VIRT_TO_BUS=y238CONFIG_UNEVICTABLE_LRU=y239+CONFIG_PPC_4K_PAGES=y240+# CONFIG_PPC_16K_PAGES is not set241+# CONFIG_PPC_64K_PAGES is not set242CONFIG_FORCE_MAX_ZONEORDER=11243CONFIG_PROC_DEVICETREE=y244# CONFIG_CMDLINE_BOOL is not set···264# CONFIG_PCI_MSI is not set265CONFIG_PCI_LEGACY=y266# CONFIG_PCI_DEBUG is not set267+# CONFIG_PCI_STUB is not set268# CONFIG_PCCARD is not set269# CONFIG_HOTPLUG_PCI is not set270# CONFIG_HAS_RAPIDIO is not set···286#287# Networking options288#289+CONFIG_COMPAT_NET_DEV_OPS=y290CONFIG_PACKET=y291# CONFIG_PACKET_MMAP is not set292CONFIG_UNIX=y···342# CONFIG_ECONET is not set343# CONFIG_WAN_ROUTER is not set344# CONFIG_NET_SCHED is not set345+# CONFIG_DCB is not set346347#348# Network testing···354# CONFIG_AF_RXRPC is not set355# CONFIG_PHONET is not set356# CONFIG_WIRELESS is not set357+# CONFIG_WIMAX is not set358# CONFIG_RFKILL is not set359# CONFIG_NET_9P is not set360···376# CONFIG_MTD_DEBUG is not set377CONFIG_MTD_CONCAT=y378CONFIG_MTD_PARTITIONS=y379+# CONFIG_MTD_TESTS is not set380# CONFIG_MTD_REDBOOT_PARTS is not set381CONFIG_MTD_CMDLINE_PARTS=y382# CONFIG_MTD_OF_PARTS is not set···447# CONFIG_MTD_ONENAND is not set448449#450+# LPDDR flash memory drivers451+#452+# CONFIG_MTD_LPDDR is not set453+# CONFIG_MTD_QINFO_PROBE is not set454+455+#456# UBI - Unsorted block images457#458# CONFIG_MTD_UBI is not set···474# CONFIG_BLK_DEV_HD is not set475CONFIG_MISC_DEVICES=y476# CONFIG_PHANTOM is not set0477# CONFIG_SGI_IOC4 is not set478# CONFIG_TIFM_CORE is not set479# CONFIG_ICS932S401 is not set480# CONFIG_ENCLOSURE_SERVICES is not set481# CONFIG_HP_ILO is not set482# CONFIG_C2PORT is not set483+484+#485+# EEPROM support486+#487+# CONFIG_EEPROM_AT24 is not set488+# CONFIG_EEPROM_LEGACY is not set489+# CONFIG_EEPROM_93CX6 is not set490CONFIG_HAVE_IDE=y491# CONFIG_IDE is not set492···539# CONFIG_MEGARAID_SAS is not set540# CONFIG_SCSI_HPTIOP is not set541# CONFIG_SCSI_BUSLOGIC is not set542+# CONFIG_LIBFC is not set543+# CONFIG_FCOE is not set544# CONFIG_SCSI_DMX3191D is not set545# CONFIG_SCSI_EATA is not set546# CONFIG_SCSI_FUTURE_DOMAIN is not set···659# CONFIG_BROADCOM_PHY is not set660# CONFIG_ICPLUS_PHY is not set661# CONFIG_REALTEK_PHY is not set662+# CONFIG_NATIONAL_PHY is not set663+# CONFIG_STE10XP is not set664+# CONFIG_LSI_ET1011C_PHY is not set665# CONFIG_FIXED_PHY is not set666# CONFIG_MDIO_BITBANG is not set667CONFIG_NET_ETHERNET=y···691# CONFIG_WLAN_PRE80211 is not set692# CONFIG_WLAN_80211 is not set693# CONFIG_IWLWIFI_LEDS is not set694+695+#696+# Enable WiMAX (Networking options) to see the WiMAX drivers697+#698699#700# USB Network Adapters···774CONFIG_SERIAL_MPC52xx_CONSOLE_BAUD=115200775# CONFIG_SERIAL_JSM is not set776CONFIG_UNIX98_PTYS=y777+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set778CONFIG_LEGACY_PTYS=y779CONFIG_LEGACY_PTY_COUNT=256780# CONFIG_HVC_RTAS is not set781+# CONFIG_HVC_UDBG is not set782# CONFIG_IPMI_HANDLER is not set783# CONFIG_HW_RANDOM is not set784# CONFIG_NVRAM is not set···844# Miscellaneous I2C Chip support845#846# CONFIG_DS1682 is not set00847# CONFIG_SENSORS_PCF8574 is not set848# CONFIG_PCF8575 is not set849# CONFIG_SENSORS_PCA9539 is not set···874# CONFIG_SENSORS_ADT7462 is not set875# CONFIG_SENSORS_ADT7470 is not set876# CONFIG_SENSORS_ADT7473 is not set877+# CONFIG_SENSORS_ADT7475 is not set878# CONFIG_SENSORS_ATXP1 is not set879# CONFIG_SENSORS_DS1621 is not set880# CONFIG_SENSORS_I5K_AMB is not set···894# CONFIG_SENSORS_LM90 is not set895# CONFIG_SENSORS_LM92 is not set896# CONFIG_SENSORS_LM93 is not set897+# CONFIG_SENSORS_LTC4245 is not set898# CONFIG_SENSORS_MAX1619 is not set899# CONFIG_SENSORS_MAX6650 is not set900# CONFIG_SENSORS_PC87360 is not set···953# CONFIG_MFD_CORE is not set954# CONFIG_MFD_SM501 is not set955# CONFIG_HTC_PASIC3 is not set956+# CONFIG_TWL4030_CORE is not set957# CONFIG_MFD_TMIO is not set958# CONFIG_PMIC_DA903X is not set959# CONFIG_MFD_WM8400 is not set960# CONFIG_MFD_WM8350_I2C is not set961+# CONFIG_MFD_PCF50633 is not set962# CONFIG_REGULATOR is not set963964#···1051# CONFIG_LCD_ILI9320 is not set1052# CONFIG_LCD_PLATFORM is not set1053CONFIG_BACKLIGHT_CLASS_DEVICE=y1054+CONFIG_BACKLIGHT_GENERIC=y10551056#1057# Display device support···1093CONFIG_HID_A4TECH=y1094# CONFIG_HID_APPLE is not set1095CONFIG_HID_BELKIN=y01096CONFIG_HID_CHERRY=y1097# CONFIG_HID_CHICONY is not set1098CONFIG_HID_CYPRESS=y01099CONFIG_HID_EZKEY=y1100# CONFIG_HID_GYRATION is not set1101# CONFIG_HID_LOGITECH is not set1102# CONFIG_HID_MICROSOFT is not set1103# CONFIG_HID_MONTEREY is not set1104+# CONFIG_HID_NTRIG is not set1105# CONFIG_HID_PANTHERLORD is not set1106# CONFIG_HID_PETALYNX is not set1107# CONFIG_HID_SAMSUNG is not set1108# CONFIG_HID_SONY is not set1109# CONFIG_HID_SUNPLUS is not set1110+# CONFIG_GREENASIA_FF is not set1111+# CONFIG_HID_TOPSEED is not set1112# CONFIG_THRUSTMASTER_FF is not set1113# CONFIG_ZEROPLUS_FF is not set1114CONFIG_USB_SUPPORT=y···1137#1138# CONFIG_USB_C67X00_HCD is not set1139# CONFIG_USB_EHCI_HCD is not set1140+# CONFIG_USB_OXU210HP_HCD is not set1141# CONFIG_USB_ISP116X_HCD is not set1142# CONFIG_USB_ISP1760_HCD is not set1143CONFIG_USB_OHCI_HCD=y···1164# CONFIG_USB_TMC is not set11651166#1167+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;1168#11691170#1171+# see USB_STORAGE Help for more information1172#1173CONFIG_USB_STORAGE=y1174# CONFIG_USB_STORAGE_DEBUG is not set1175# CONFIG_USB_STORAGE_DATAFAB is not set1176# CONFIG_USB_STORAGE_FREECOM is not set1177# CONFIG_USB_STORAGE_ISD200 is not set01178# CONFIG_USB_STORAGE_USBAT is not set1179# CONFIG_USB_STORAGE_SDDR09 is not set1180# CONFIG_USB_STORAGE_SDDR55 is not set···1222# CONFIG_USB_ISIGHTFW is not set1223# CONFIG_USB_VST is not set1224# CONFIG_USB_GADGET is not set1225+1226+#1227+# OTG and related infrastructure1228+#1229# CONFIG_UWB is not set1230# CONFIG_MMC is not set1231# CONFIG_MEMSTICK is not set···1243# CONFIG_DMADEVICES is not set1244# CONFIG_UIO is not set1245# CONFIG_STAGING is not set012461247#1248# File systems···1264CONFIG_FILE_LOCKING=y1265# CONFIG_XFS_FS is not set1266# CONFIG_OCFS2_FS is not set1267+# CONFIG_BTRFS_FS is not set1268CONFIG_DNOTIFY=y1269CONFIG_INOTIFY=y1270CONFIG_INOTIFY_USER=y···1300# CONFIG_TMPFS_POSIX_ACL is not set1301# CONFIG_HUGETLB_PAGE is not set1302# CONFIG_CONFIGFS_FS is not set1303+CONFIG_MISC_FILESYSTEMS=y0001304# CONFIG_ADFS_FS is not set1305# CONFIG_AFFS_FS is not set1306# CONFIG_HFS_FS is not set···1323CONFIG_JFFS2_RTIME=y1324# CONFIG_JFFS2_RUBIN is not set1325CONFIG_CRAMFS=y1326+# CONFIG_SQUASHFS is not set1327# CONFIG_VXFS_FS is not set1328# CONFIG_MINIX_FS is not set1329# CONFIG_OMFS_FS is not set···1403# Library routines1404#1405CONFIG_BITREVERSE=y1406+CONFIG_GENERIC_FIND_LAST_BIT=y1407# CONFIG_CRC_CCITT is not set1408# CONFIG_CRC16 is not set1409# CONFIG_CRC_T10DIF is not set···1454# CONFIG_DEBUG_MEMORY_INIT is not set1455# CONFIG_DEBUG_LIST is not set1456# CONFIG_DEBUG_SG is not set1457+# CONFIG_DEBUG_NOTIFIERS is not set1458# CONFIG_BOOT_PRINTK_DELAY is not set1459# CONFIG_RCU_TORTURE_TEST is not set1460# CONFIG_RCU_CPU_STALL_DETECTOR is not set···1462# CONFIG_FAULT_INJECTION is not set1463# CONFIG_LATENCYTOP is not set1464CONFIG_HAVE_FUNCTION_TRACER=y1465+CONFIG_HAVE_DYNAMIC_FTRACE=y1466+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y14671468#1469# Tracers···1470# CONFIG_SCHED_TRACER is not set1471# CONFIG_CONTEXT_SWITCH_TRACER is not set1472# CONFIG_BOOT_TRACER is not set1473+# CONFIG_TRACE_BRANCH_PROFILING is not set1474# CONFIG_STACK_TRACER is not set1475# CONFIG_DYNAMIC_PRINTK_DEBUG is not set1476# CONFIG_SAMPLES is not set1477CONFIG_HAVE_ARCH_KGDB=y1478# CONFIG_KGDB is not set1479+CONFIG_PRINT_STACK_DEPTH=641480# CONFIG_DEBUG_STACKOVERFLOW is not set1481# CONFIG_DEBUG_STACK_USAGE is not set1482# CONFIG_DEBUG_PAGEALLOC is not set···1501#1502# CONFIG_CRYPTO_FIPS is not set1503CONFIG_CRYPTO_ALGAPI=y1504+CONFIG_CRYPTO_ALGAPI2=y1505+CONFIG_CRYPTO_AEAD2=y1506CONFIG_CRYPTO_BLKCIPHER=y1507+CONFIG_CRYPTO_BLKCIPHER2=y1508CONFIG_CRYPTO_HASH=y1509+CONFIG_CRYPTO_HASH2=y1510+CONFIG_CRYPTO_RNG2=y1511CONFIG_CRYPTO_MANAGER=y1512+CONFIG_CRYPTO_MANAGER2=y1513# CONFIG_CRYPTO_GF128MUL is not set1514# CONFIG_CRYPTO_NULL is not set1515# CONFIG_CRYPTO_CRYPTD is not set
+2-3
arch/powerpc/kernel/pci-common.c
···16 * 2 of the License, or (at your option) any later version.17 */1819-#define DEBUG20-21#include <linux/kernel.h>22#include <linux/pci.h>23#include <linux/string.h>···256 } else {257 pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",258 oirq.size, oirq.specifier[0], oirq.specifier[1],259- oirq.controller->full_name);0260261 virq = irq_create_of_mapping(oirq.controller, oirq.specifier,262 oirq.size);
···16 * 2 of the License, or (at your option) any later version.17 */180019#include <linux/kernel.h>20#include <linux/pci.h>21#include <linux/string.h>···258 } else {259 pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %s\n",260 oirq.size, oirq.specifier[0], oirq.specifier[1],261+ oirq.controller ? oirq.controller->full_name :262+ "<default>");263264 virq = irq_create_of_mapping(oirq.controller, oirq.specifier,265 oirq.size);
+10-14
arch/powerpc/platforms/52xx/mpc52xx_pci.c
···202122/* ======================================================================== */23-/* PCI windows config */24-/* ======================================================================== */25-26-#define MPC52xx_PCI_TARGET_IO 0xf000000027-#define MPC52xx_PCI_TARGET_MEM 0x0000000028-29-30-/* ======================================================================== */31/* Structures mapping & Defines for PCI Unit */32/* ======================================================================== */33···236237static void __init238mpc52xx_pci_setup(struct pci_controller *hose,239- struct mpc52xx_pci __iomem *pci_regs)240{241 struct resource *res;242 u32 tmp;···306 /* Set all the IWCR fields at once; they're in the same reg */307 out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));308309- out_be32(&pci_regs->tbatr0,310- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_IO );311- out_be32(&pci_regs->tbatr1,312- MPC52xx_PCI_TBATR_ENABLE | MPC52xx_PCI_TARGET_MEM );0000313314 out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD | MPC52xx_PCI_TCR_WCT8);315···410411 /* Finish setting up PCI using values obtained by412 * pci_proces_bridge_OF_ranges */413- mpc52xx_pci_setup(hose, pci_regs);414415 return 0;416}
···202122/* ======================================================================== */0000000023/* Structures mapping & Defines for PCI Unit */24/* ======================================================================== */25···244245static void __init246mpc52xx_pci_setup(struct pci_controller *hose,247+ struct mpc52xx_pci __iomem *pci_regs, phys_addr_t pci_phys)248{249 struct resource *res;250 u32 tmp;···314 /* Set all the IWCR fields at once; they're in the same reg */315 out_be32(&pci_regs->iwcr, MPC52xx_PCI_IWCR_PACK(iwcr0, iwcr1, iwcr2));316317+ /* Map IMMR onto PCI bus */318+ pci_phys &= 0xfffc0000; /* bar0 has only 14 significant bits */319+ out_be32(&pci_regs->tbatr0, MPC52xx_PCI_TBATR_ENABLE | pci_phys);320+ out_be32(&pci_regs->bar0, PCI_BASE_ADDRESS_MEM_PREFETCH | pci_phys);321+322+ /* Map memory onto PCI bus */323+ out_be32(&pci_regs->tbatr1, MPC52xx_PCI_TBATR_ENABLE);324+ out_be32(&pci_regs->bar1, PCI_BASE_ADDRESS_MEM_PREFETCH);325326 out_be32(&pci_regs->tcr, MPC52xx_PCI_TCR_LD | MPC52xx_PCI_TCR_WCT8);327···414415 /* Finish setting up PCI using values obtained by416 * pci_proces_bridge_OF_ranges */417+ mpc52xx_pci_setup(hose, pci_regs, rsrc.start);418419 return 0;420}
+5-6
arch/x86/boot/video-vesa.c
···269 we genuinely have to assume all registers are destroyed here. */270271 asm("pushw %%es; movw %2,%%es; "INT10"; popw %%es"272- : "+a" (ax), "+b" (bx)273- : "c" (cx), "D" (di)274- : "esi");275276 if (ax != 0x004f)277 return; /* No EDID */···284 dx = 0; /* EDID block number */285 di =(size_t) &boot_params.edid_info; /* (ES:)Pointer to block */286 asm(INT10287- : "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info)288- : "c" (cx), "D" (di)289- : "esi");290#endif /* CONFIG_FIRMWARE_EDID */291}292
···269 we genuinely have to assume all registers are destroyed here. */270271 asm("pushw %%es; movw %2,%%es; "INT10"; popw %%es"272+ : "+a" (ax), "+b" (bx), "+c" (cx), "+D" (di)273+ : : "esi", "edx");0274275 if (ax != 0x004f)276 return; /* No EDID */···285 dx = 0; /* EDID block number */286 di =(size_t) &boot_params.edid_info; /* (ES:)Pointer to block */287 asm(INT10288+ : "+a" (ax), "+b" (bx), "+d" (dx), "=m" (boot_params.edid_info),289+ "+c" (cx), "+D" (di)290+ : : "esi");291#endif /* CONFIG_FIRMWARE_EDID */292}293
···15941595 /* kvm/qemu doesn't have mtrr set right, don't trim them all */1596 if (!highest_pfn) {1597- WARN(!kvm_para_available(), KERN_WARNING1598- "WARNING: strange, CPU MTRRs all blank?\n");1599 return 0;1600 }1601
···15941595 /* kvm/qemu doesn't have mtrr set right, don't trim them all */1596 if (!highest_pfn) {1597+ printk(KERN_INFO "CPU MTRRs all blank - virtualized system.\n");01598 return 0;1599 }1600
···572 case PCI_DEVICE_ID_INTEL_ICH7_1:573 case PCI_DEVICE_ID_INTEL_ICH7_30:574 case PCI_DEVICE_ID_INTEL_ICH7_31:0575 case PCI_DEVICE_ID_INTEL_ESB2_0:576 case PCI_DEVICE_ID_INTEL_ICH8_0:577 case PCI_DEVICE_ID_INTEL_ICH8_1:
···572 case PCI_DEVICE_ID_INTEL_ICH7_1:573 case PCI_DEVICE_ID_INTEL_ICH7_30:574 case PCI_DEVICE_ID_INTEL_ICH7_31:575+ case PCI_DEVICE_ID_INTEL_TGP_LPC:576 case PCI_DEVICE_ID_INTEL_ESB2_0:577 case PCI_DEVICE_ID_INTEL_ICH8_0:578 case PCI_DEVICE_ID_INTEL_ICH8_1:
+1-1
block/blk-barrier.c
···302 * Description:303 * Issue a flush for the block device in question. Caller can supply304 * room for storing the error offset in case of a flush error, if they305- * wish to. Caller must run wait_for_completion() on its own.306 */307int blkdev_issue_flush(struct block_device *bdev, sector_t *error_sector)308{
···302 * Description:303 * Issue a flush for the block device in question. Caller can supply304 * room for storing the error offset in case of a flush error, if they305+ * wish to.306 */307int blkdev_issue_flush(struct block_device *bdev, sector_t *error_sector)308{
+63-37
block/blk-core.c
···6465static void drive_stat_acct(struct request *rq, int new_io)66{067 struct hd_struct *part;68 int rw = rq_data_dir(rq);69 int cpu;7071- if (!blk_fs_request(rq) || !rq->rq_disk)72 return;7374 cpu = part_stat_lock();···600 q->request_fn = rfn;601 q->prep_rq_fn = NULL;602 q->unplug_fn = generic_unplug_device;603- q->queue_flags = (1 << QUEUE_FLAG_CLUSTER |604- 1 << QUEUE_FLAG_STACKABLE);605 q->queue_lock = lock;606607 blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);···11251126 if (bio_sync(bio))1127 req->cmd_flags |= REQ_RW_SYNC;001128 if (bio_rw_meta(bio))1129 req->cmd_flags |= REQ_RW_META;1130···1143 int el_ret, nr_sectors;1144 const unsigned short prio = bio_prio(bio);1145 const int sync = bio_sync(bio);01146 int rw_flags;11471148 nr_sectors = bio_sectors(bio);···1247 blk_plug_device(q);1248 add_request(q, req);1249out:1250- if (sync || blk_queue_nonrot(q))1251 __generic_unplug_device(q);1252 spin_unlock_irq(q->queue_lock);1253 return 0;···1448 goto end_io;14491450 if (bio_discard(bio) && !q->prepare_discard_fn) {000001451 err = -EOPNOTSUPP;1452 goto end_io;1453 }···1663}1664EXPORT_SYMBOL(blkdev_dequeue_request);166500000000000000000000000000000000000000000000000001666/**1667 * __end_that_request_first - end I/O on a request1668 * @req: the request being processed···1747 (unsigned long long)req->sector);1748 }17491750- if (blk_fs_request(req) && req->rq_disk) {1751- const int rw = rq_data_dir(req);1752- struct hd_struct *part;1753- int cpu;1754-1755- cpu = part_stat_lock();1756- part = disk_map_sector_rcu(req->rq_disk, req->sector);1757- part_stat_add(cpu, part, sectors[rw], nr_bytes >> 9);1758- part_stat_unlock();1759- }17601761 total_bytes = bio_nbytes = 0;1762 while ((bio = req->bio) != NULL) {···1827 */1828static void end_that_request_last(struct request *req, int error)1829{1830- struct gendisk *disk = req->rq_disk;1831-1832 if (blk_rq_tagged(req))1833 blk_queue_end_tag(req->q, req);1834···18381839 blk_delete_timer(req);18401841- /*1842- * Account IO completion. bar_rq isn't accounted as a normal1843- * IO on queueing nor completion. Accounting the containing1844- * request is enough.1845- */1846- if (disk && blk_fs_request(req) && req != &req->q->bar_rq) {1847- unsigned long duration = jiffies - req->start_time;1848- const int rw = rq_data_dir(req);1849- struct hd_struct *part;1850- int cpu;1851-1852- cpu = part_stat_lock();1853- part = disk_map_sector_rcu(disk, req->sector);1854-1855- part_stat_inc(cpu, part, ios[rw]);1856- part_stat_add(cpu, part, ticks[rw], duration);1857- part_round_stats(cpu, part);1858- part_dec_in_flight(part);1859-1860- part_stat_unlock();1861- }18621863 if (req->end_io)1864 req->end_io(req, error);
···6465static void drive_stat_acct(struct request *rq, int new_io)66{67+ struct gendisk *disk = rq->rq_disk;68 struct hd_struct *part;69 int rw = rq_data_dir(rq);70 int cpu;7172+ if (!blk_fs_request(rq) || !disk || !blk_do_io_stat(disk->queue))73 return;7475 cpu = part_stat_lock();···599 q->request_fn = rfn;600 q->prep_rq_fn = NULL;601 q->unplug_fn = generic_unplug_device;602+ q->queue_flags = QUEUE_FLAG_DEFAULT;0603 q->queue_lock = lock;604605 blk_queue_segment_boundary(q, BLK_SEG_BOUNDARY_MASK);···11251126 if (bio_sync(bio))1127 req->cmd_flags |= REQ_RW_SYNC;1128+ if (bio_unplug(bio))1129+ req->cmd_flags |= REQ_UNPLUG;1130 if (bio_rw_meta(bio))1131 req->cmd_flags |= REQ_RW_META;1132···1141 int el_ret, nr_sectors;1142 const unsigned short prio = bio_prio(bio);1143 const int sync = bio_sync(bio);1144+ const int unplug = bio_unplug(bio);1145 int rw_flags;11461147 nr_sectors = bio_sectors(bio);···1244 blk_plug_device(q);1245 add_request(q, req);1246out:1247+ if (unplug || blk_queue_nonrot(q))1248 __generic_unplug_device(q);1249 spin_unlock_irq(q->queue_lock);1250 return 0;···1445 goto end_io;14461447 if (bio_discard(bio) && !q->prepare_discard_fn) {1448+ err = -EOPNOTSUPP;1449+ goto end_io;1450+ }1451+ if (bio_barrier(bio) && bio_has_data(bio) &&1452+ (q->next_ordered == QUEUE_ORDERED_NONE)) {1453 err = -EOPNOTSUPP;1454 goto end_io;1455 }···1655}1656EXPORT_SYMBOL(blkdev_dequeue_request);16571658+static void blk_account_io_completion(struct request *req, unsigned int bytes)1659+{1660+ struct gendisk *disk = req->rq_disk;1661+1662+ if (!disk || !blk_do_io_stat(disk->queue))1663+ return;1664+1665+ if (blk_fs_request(req)) {1666+ const int rw = rq_data_dir(req);1667+ struct hd_struct *part;1668+ int cpu;1669+1670+ cpu = part_stat_lock();1671+ part = disk_map_sector_rcu(req->rq_disk, req->sector);1672+ part_stat_add(cpu, part, sectors[rw], bytes >> 9);1673+ part_stat_unlock();1674+ }1675+}1676+1677+static void blk_account_io_done(struct request *req)1678+{1679+ struct gendisk *disk = req->rq_disk;1680+1681+ if (!disk || !blk_do_io_stat(disk->queue))1682+ return;1683+1684+ /*1685+ * Account IO completion. bar_rq isn't accounted as a normal1686+ * IO on queueing nor completion. Accounting the containing1687+ * request is enough.1688+ */1689+ if (blk_fs_request(req) && req != &req->q->bar_rq) {1690+ unsigned long duration = jiffies - req->start_time;1691+ const int rw = rq_data_dir(req);1692+ struct hd_struct *part;1693+ int cpu;1694+1695+ cpu = part_stat_lock();1696+ part = disk_map_sector_rcu(disk, req->sector);1697+1698+ part_stat_inc(cpu, part, ios[rw]);1699+ part_stat_add(cpu, part, ticks[rw], duration);1700+ part_round_stats(cpu, part);1701+ part_dec_in_flight(part);1702+1703+ part_stat_unlock();1704+ }1705+}1706+1707/**1708 * __end_that_request_first - end I/O on a request1709 * @req: the request being processed···1690 (unsigned long long)req->sector);1691 }16921693+ blk_account_io_completion(req, nr_bytes);00000000016941695 total_bytes = bio_nbytes = 0;1696 while ((bio = req->bio) != NULL) {···1779 */1780static void end_that_request_last(struct request *req, int error)1781{001782 if (blk_rq_tagged(req))1783 blk_queue_end_tag(req->q, req);1784···17921793 blk_delete_timer(req);17941795+ blk_account_io_done(req);0000000000000000000017961797 if (req->end_io)1798 req->end_io(req, error);
+14-11
block/blk-integrity.c
···309/**310 * blk_integrity_register - Register a gendisk as being integrity-capable311 * @disk: struct gendisk pointer to make integrity-aware312- * @template: integrity profile313 *314 * Description: When a device needs to advertise itself as being able315 * to send/receive integrity metadata it must use this function to316 * register the capability with the block layer. The template is a317 * blk_integrity struct with values appropriate for the underlying318- * hardware. See Documentation/block/data-integrity.txt.0319 */320int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)321{322 struct blk_integrity *bi;323324 BUG_ON(disk == NULL);325- BUG_ON(template == NULL);326327 if (disk->integrity == NULL) {328 bi = kmem_cache_alloc(integrity_cachep,329- GFP_KERNEL | __GFP_ZERO);330 if (!bi)331 return -1;332···346 bi = disk->integrity;347348 /* Use the provided profile as template */349- bi->name = template->name;350- bi->generate_fn = template->generate_fn;351- bi->verify_fn = template->verify_fn;352- bi->tuple_size = template->tuple_size;353- bi->set_tag_fn = template->set_tag_fn;354- bi->get_tag_fn = template->get_tag_fn;355- bi->tag_size = template->tag_size;000356357 return 0;358}
···309/**310 * blk_integrity_register - Register a gendisk as being integrity-capable311 * @disk: struct gendisk pointer to make integrity-aware312+ * @template: optional integrity profile to register313 *314 * Description: When a device needs to advertise itself as being able315 * to send/receive integrity metadata it must use this function to316 * register the capability with the block layer. The template is a317 * blk_integrity struct with values appropriate for the underlying318+ * hardware. If template is NULL the new profile is allocated but319+ * not filled out. See Documentation/block/data-integrity.txt.320 */321int blk_integrity_register(struct gendisk *disk, struct blk_integrity *template)322{323 struct blk_integrity *bi;324325 BUG_ON(disk == NULL);0326327 if (disk->integrity == NULL) {328 bi = kmem_cache_alloc(integrity_cachep,329+ GFP_KERNEL | __GFP_ZERO);330 if (!bi)331 return -1;332···346 bi = disk->integrity;347348 /* Use the provided profile as template */349+ if (template != NULL) {350+ bi->name = template->name;351+ bi->generate_fn = template->generate_fn;352+ bi->verify_fn = template->verify_fn;353+ bi->tuple_size = template->tuple_size;354+ bi->set_tag_fn = template->set_tag_fn;355+ bi->get_tag_fn = template->get_tag_fn;356+ bi->tag_size = template->tag_size;357+ } else358+ bi->name = "unsupported";359360 return 0;361}
···108#endif109}110111+static inline int blk_do_io_stat(struct request_queue *q)112+{113+ if (q)114+ return blk_queue_io_stat(q);115+116+ return 0;117+}118+119#endif
+21-51
block/blktrace.c
···187188static struct dentry *blk_tree_root;189static DEFINE_MUTEX(blk_tree_mutex);190-static unsigned int root_users;191-192-static inline void blk_remove_root(void)193-{194- if (blk_tree_root) {195- debugfs_remove(blk_tree_root);196- blk_tree_root = NULL;197- }198-}199-200-static void blk_remove_tree(struct dentry *dir)201-{202- mutex_lock(&blk_tree_mutex);203- debugfs_remove(dir);204- if (--root_users == 0)205- blk_remove_root();206- mutex_unlock(&blk_tree_mutex);207-}208-209-static struct dentry *blk_create_tree(const char *blk_name)210-{211- struct dentry *dir = NULL;212- int created = 0;213-214- mutex_lock(&blk_tree_mutex);215-216- if (!blk_tree_root) {217- blk_tree_root = debugfs_create_dir("block", NULL);218- if (!blk_tree_root)219- goto err;220- created = 1;221- }222-223- dir = debugfs_create_dir(blk_name, blk_tree_root);224- if (dir)225- root_users++;226- else {227- /* Delete root only if we created it */228- if (created)229- blk_remove_root();230- }231-232-err:233- mutex_unlock(&blk_tree_mutex);234- return dir;235-}236237static void blk_trace_cleanup(struct blk_trace *bt)238{239- relay_close(bt->rchan);240 debugfs_remove(bt->msg_file);241 debugfs_remove(bt->dropped_file);242- blk_remove_tree(bt->dir);243 free_percpu(bt->sequence);244 free_percpu(bt->msg_data);245 kfree(bt);···299300static int blk_remove_buf_file_callback(struct dentry *dentry)301{0302 debugfs_remove(dentry);0000000000303 return 0;304}305···368 goto err;369370 ret = -ENOENT;371- dir = blk_create_tree(buts->name);00000000372 if (!dir)373 goto err;374···430 atomic_dec(&blk_probes_ref);431 mutex_unlock(&blk_probe_mutex);432err:433- if (dir)434- blk_remove_tree(dir);435 if (bt) {436 if (bt->msg_file)437 debugfs_remove(bt->msg_file);
···187188static struct dentry *blk_tree_root;189static DEFINE_MUTEX(blk_tree_mutex);0000000000000000000000000000000000000000000000190191static void blk_trace_cleanup(struct blk_trace *bt)192{0193 debugfs_remove(bt->msg_file);194 debugfs_remove(bt->dropped_file);195+ relay_close(bt->rchan);196 free_percpu(bt->sequence);197 free_percpu(bt->msg_data);198 kfree(bt);···346347static int blk_remove_buf_file_callback(struct dentry *dentry)348{349+ struct dentry *parent = dentry->d_parent;350 debugfs_remove(dentry);351+352+ /*353+ * this will fail for all but the last file, but that is ok. what we354+ * care about is the top level buts->name directory going away, when355+ * the last trace file is gone. Then we don't have to rmdir() that356+ * manually on trace stop, so it nicely solves the issue with357+ * force killing of running traces.358+ */359+360+ debugfs_remove(parent);361 return 0;362}363···404 goto err;405406 ret = -ENOENT;407+408+ if (!blk_tree_root) {409+ blk_tree_root = debugfs_create_dir("block", NULL);410+ if (!blk_tree_root)411+ return -ENOMEM;412+ }413+414+ dir = debugfs_create_dir(buts->name, blk_tree_root);415+416 if (!dir)417 goto err;418···458 atomic_dec(&blk_probes_ref);459 mutex_unlock(&blk_probe_mutex);460err:00461 if (bt) {462 if (bt->msg_file)463 debugfs_remove(bt->msg_file);
+38-1
block/cfq-iosched.c
···84 */85 struct cfq_rb_root service_tree;86 unsigned int busy_queues;000008788 int rq_in_driver;89 int sync_flight;···567 BUG_ON(cfq_cfqq_on_rr(cfqq));568 cfq_mark_cfqq_on_rr(cfqq);569 cfqd->busy_queues++;00570571 cfq_resort_rr_list(cfqd, cfqq);572}···588589 BUG_ON(!cfqd->busy_queues);590 cfqd->busy_queues--;00591}592593/*···1014 goto expire;10151016 /*000000000000001017 * The active queue has requests and isn't expired, allow it to1018 * dispatch.1019 */···1088 }10891090 if (RB_EMPTY_ROOT(&cfqq->sort_list))00000001091 break;10921093 } while (dispatched < max_dispatch);···1831 if (rq_is_meta(rq) && !cfqq->meta_pending)1832 return 1;18330000001834 if (!cfqd->active_cic || !cfq_cfqq_wait_request(cfqq))1835 return 0;1836···1906 /*1907 * not the active queue - expire current slice if it is1908 * idle and has expired it's mean thinktime or this new queue1909- * has some old slice time left and is of higher priority01910 */1911 cfq_preempt_queue(cfqd, cfqq);1912 cfq_mark_cfqq_must_dispatch(cfqq);
···84 */85 struct cfq_rb_root service_tree;86 unsigned int busy_queues;87+ /*88+ * Used to track any pending rt requests so we can pre-empt current89+ * non-RT cfqq in service when this value is non-zero.90+ */91+ unsigned int busy_rt_queues;9293 int rq_in_driver;94 int sync_flight;···562 BUG_ON(cfq_cfqq_on_rr(cfqq));563 cfq_mark_cfqq_on_rr(cfqq);564 cfqd->busy_queues++;565+ if (cfq_class_rt(cfqq))566+ cfqd->busy_rt_queues++;567568 cfq_resort_rr_list(cfqd, cfqq);569}···581582 BUG_ON(!cfqd->busy_queues);583 cfqd->busy_queues--;584+ if (cfq_class_rt(cfqq))585+ cfqd->busy_rt_queues--;586}587588/*···1005 goto expire;10061007 /*1008+ * If we have a RT cfqq waiting, then we pre-empt the current non-rt1009+ * cfqq.1010+ */1011+ if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues) {1012+ /*1013+ * We simulate this as cfqq timed out so that it gets to bank1014+ * the remaining of its time slice.1015+ */1016+ cfq_log_cfqq(cfqd, cfqq, "preempt");1017+ cfq_slice_expired(cfqd, 1);1018+ goto new_queue;1019+ }1020+1021+ /*1022 * The active queue has requests and isn't expired, allow it to1023 * dispatch.1024 */···1065 }10661067 if (RB_EMPTY_ROOT(&cfqq->sort_list))1068+ break;1069+1070+ /*1071+ * If there is a non-empty RT cfqq waiting for current1072+ * cfqq's timeslice to complete, pre-empt this cfqq1073+ */1074+ if (!cfq_class_rt(cfqq) && cfqd->busy_rt_queues)1075 break;10761077 } while (dispatched < max_dispatch);···1801 if (rq_is_meta(rq) && !cfqq->meta_pending)1802 return 1;18031804+ /*1805+ * Allow an RT request to pre-empt an ongoing non-RT cfqq timeslice.1806+ */1807+ if (cfq_class_rt(new_cfqq) && !cfq_class_rt(cfqq))1808+ return 1;1809+1810 if (!cfqd->active_cic || !cfq_cfqq_wait_request(cfqq))1811 return 0;1812···1870 /*1871 * not the active queue - expire current slice if it is1872 * idle and has expired it's mean thinktime or this new queue1873+ * has some old slice time left and is of higher priority or1874+ * this new queue is RT and the current one is BE1875 */1876 cfq_preempt_queue(cfqd, cfqq);1877 cfq_mark_cfqq_must_dispatch(cfqq);
+1-1
drivers/char/selection.c
···268269 /* Allocate a new buffer before freeing the old one ... */270 multiplier = use_unicode ? 3 : 1; /* chars can take up to 3 bytes */271- bp = kmalloc((sel_end-sel_start)/2*multiplier+1, GFP_KERNEL);272 if (!bp) {273 printk(KERN_WARNING "selection: kmalloc() failed\n");274 clear_selection();
···268269 /* Allocate a new buffer before freeing the old one ... */270 multiplier = use_unicode ? 3 : 1; /* chars can take up to 3 bytes */271+ bp = kmalloc(((sel_end-sel_start)/2+1)*multiplier, GFP_KERNEL);272 if (!bp) {273 printk(KERN_WARNING "selection: kmalloc() failed\n");274 clear_selection();
···465466 It is safe to say Y to this question.4670000000000468config BLK_DEV_HPT366469 tristate "HPT36X/37X chipset support"470 select BLK_DEV_IDEDMA_PCI
···465466 It is safe to say Y to this question.467468+config BLK_DEV_CS5536469+ tristate "CS5536 chipset support"470+ depends on X86_32471+ select BLK_DEV_IDEDMA_PCI472+ help473+ This option enables support for the AMD CS5536474+ companion chip used with the Geode LX processor family.475+476+ If unsure, say N.477+478config BLK_DEV_HPT366479 tristate "HPT36X/37X chipset support"480 select BLK_DEV_IDEDMA_PCI
···657{658 struct mxl5007t_state *state = fe->tuner_priv;659 int rf_locked, ref_locked;660- s32 rf_input_level;661 int ret;662663 if (fe->ops.i2c_gate_ctrl)
···657{658 struct mxl5007t_state *state = fe->tuner_priv;659 int rf_locked, ref_locked;660+ s32 rf_input_level = 0;661 int ret;662663 if (fe->ops.i2c_gate_ctrl)
+21-3
drivers/media/dvb/dvb-core/dvb_ca_en50221.c
···93 /* current state of the CAM */94 int slot_state;9500096 /* Number of CAMCHANGES that have occurred since last processing */97 atomic_t camchange_count;98···714 dprintk("%s\n", __func__);715716717- // sanity check718 if (bytes_write > ca->slot_info[slot].link_buf_size)719 return -EINVAL;720721- /* check if interface is actually waiting for us to read from it, or if a read is in progress */000722 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0)723 goto exitnowrite;724 if (status & (STATUSREG_DA | STATUSREG_RE)) {000725 status = -EAGAIN;726 goto exitnowrite;727 }···996 /* go through all the slots processing them */997 for (slot = 0; slot < ca->slot_count; slot++) {99800999 // check the cam status + deal with CAMCHANGEs1000 while (dvb_ca_en50221_check_camstatus(ca, slot)) {1001 /* clear down an old CI slot if necessary */···11331134 case DVB_CA_SLOTSTATE_RUNNING:1135 if (!ca->open)1136- continue;11371138 // poll slots for data1139 pktcount = 0;···1157 }1158 break;1159 }001160 }1161 }1162···1194 switch (cmd) {1195 case CA_RESET:1196 for (slot = 0; slot < ca->slot_count; slot++) {01197 if (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_NONE) {1198 dvb_ca_en50221_slot_shutdown(ca, slot);1199 if (ca->flags & DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE)···1202 slot,1203 DVB_CA_EN50221_CAMCHANGE_INSERTED);1204 }01205 }1206 ca->next_read_slot = 0;1207 dvb_ca_en50221_thread_wakeup(ca);···1323 goto exit;1324 }132501326 status = dvb_ca_en50221_write_data(ca, slot, fragbuf, fraglen + 2);01327 if (status == (fraglen + 2)) {1328 written = 1;1329 break;···1681 ca->slot_info[i].slot_state = DVB_CA_SLOTSTATE_NONE;1682 atomic_set(&ca->slot_info[i].camchange_count, 0);1683 ca->slot_info[i].camchange_type = DVB_CA_EN50221_CAMCHANGE_REMOVED;01684 }16851686 if (signal_pending(current)) {
···93 /* current state of the CAM */94 int slot_state;9596+ /* mutex used for serializing access to one CI slot */97+ struct mutex slot_lock;98+99 /* Number of CAMCHANGES that have occurred since last processing */100 atomic_t camchange_count;101···711 dprintk("%s\n", __func__);712713714+ /* sanity check */715 if (bytes_write > ca->slot_info[slot].link_buf_size)716 return -EINVAL;717718+ /* it is possible we are dealing with a single buffer implementation,719+ thus if there is data available for read or if there is even a read720+ already in progress, we do nothing but awake the kernel thread to721+ process the data if necessary. */722 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0)723 goto exitnowrite;724 if (status & (STATUSREG_DA | STATUSREG_RE)) {725+ if (status & STATUSREG_DA)726+ dvb_ca_en50221_thread_wakeup(ca);727+728 status = -EAGAIN;729 goto exitnowrite;730 }···987 /* go through all the slots processing them */988 for (slot = 0; slot < ca->slot_count; slot++) {989990+ mutex_lock(&ca->slot_info[slot].slot_lock);991+992 // check the cam status + deal with CAMCHANGEs993 while (dvb_ca_en50221_check_camstatus(ca, slot)) {994 /* clear down an old CI slot if necessary */···11221123 case DVB_CA_SLOTSTATE_RUNNING:1124 if (!ca->open)1125+ break;11261127 // poll slots for data1128 pktcount = 0;···1146 }1147 break;1148 }1149+1150+ mutex_unlock(&ca->slot_info[slot].slot_lock);1151 }1152 }1153···1181 switch (cmd) {1182 case CA_RESET:1183 for (slot = 0; slot < ca->slot_count; slot++) {1184+ mutex_lock(&ca->slot_info[slot].slot_lock);1185 if (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_NONE) {1186 dvb_ca_en50221_slot_shutdown(ca, slot);1187 if (ca->flags & DVB_CA_EN50221_FLAG_IRQ_CAMCHANGE)···1188 slot,1189 DVB_CA_EN50221_CAMCHANGE_INSERTED);1190 }1191+ mutex_unlock(&ca->slot_info[slot].slot_lock);1192 }1193 ca->next_read_slot = 0;1194 dvb_ca_en50221_thread_wakeup(ca);···1308 goto exit;1309 }13101311+ mutex_lock(&ca->slot_info[slot].slot_lock);1312 status = dvb_ca_en50221_write_data(ca, slot, fragbuf, fraglen + 2);1313+ mutex_unlock(&ca->slot_info[slot].slot_lock);1314 if (status == (fraglen + 2)) {1315 written = 1;1316 break;···1664 ca->slot_info[i].slot_state = DVB_CA_SLOTSTATE_NONE;1665 atomic_set(&ca->slot_info[i].camchange_count, 0);1666 ca->slot_info[i].camchange_type = DVB_CA_EN50221_CAMCHANGE_REMOVED;1667+ mutex_init(&ca->slot_info[i].slot_lock);1668 }16691670 if (signal_pending(current)) {
+4-2
drivers/media/dvb/dvb-core/dvb_ca_en50221.h
···45 /* the module owning this structure */46 struct module* owner;4748- /* NOTE: the read_*, write_* and poll_slot_status functions must use locks as49- * they may be called from several threads at once */005051 /* functions for accessing attribute memory on the CAM */52 int (*read_attribute_mem)(struct dvb_ca_en50221* ca, int slot, int address);
···45 /* the module owning this structure */46 struct module* owner;4748+ /* NOTE: the read_*, write_* and poll_slot_status functions will be49+ * called for different slots concurrently and need to use locks where50+ * and if appropriate. There will be no concurrent access to one slot.51+ */5253 /* functions for accessing attribute memory on the CAM */54 int (*read_attribute_mem)(struct dvb_ca_en50221* ca, int slot, int address);
+1-1
drivers/media/dvb/dvb-usb/af9005-fe.c
···220 u16 * abort_count)221{222 u32 loc_cw_count = 0, loc_err_count;223- u16 loc_abort_count;224 int ret;225226 ret =
···220 u16 * abort_count)221{222 u32 loc_cw_count = 0, loc_err_count;223+ u16 loc_abort_count = 0;224 int ret;225226 ret =
+24-6
drivers/media/dvb/dvb-usb/af9015.c
···694695 /* IR remote controller */696 req.addr = AF9015_EEPROM_IR_MODE;697- ret = af9015_rw_udev(udev, &req);00000698 if (ret)699 goto error;700 deb_info("%s: IR mode:%d\n", __func__, val);···840 if (!dvb_usb_af9015_dual_mode)841 af9015_config.dual_mode = 0;842843- /* set buffer size according to USB port speed */0844 for (i = 0; i < af9015_properties_count; i++) {845 /* USB1.1 set smaller buffersize and disable 2nd adapter */846 if (udev->speed == USB_SPEED_FULL) {847- af9015_properties[i].adapter->stream.u.bulk.buffersize =848- TS_USB11_MAX_PACKET_SIZE;849 /* disable 2nd adapter because we don't have850 PID-filters */851 af9015_config.dual_mode = 0;852 } else {853- af9015_properties[i].adapter->stream.u.bulk.buffersize =854- TS_USB20_MAX_PACKET_SIZE;855 }856 }857···1260 .type = USB_BULK,1261 .count = 6,1262 .endpoint = 0x85,0000001263 },1264 }1265 },···1365 .type = USB_BULK,1366 .count = 6,1367 .endpoint = 0x85,0000001368 },1369 }1370 },
···694695 /* IR remote controller */696 req.addr = AF9015_EEPROM_IR_MODE;697+ /* first message will timeout often due to possible hw bug */698+ for (i = 0; i < 4; i++) {699+ ret = af9015_rw_udev(udev, &req);700+ if (!ret)701+ break;702+ }703 if (ret)704 goto error;705 deb_info("%s: IR mode:%d\n", __func__, val);···835 if (!dvb_usb_af9015_dual_mode)836 af9015_config.dual_mode = 0;837838+ /* Set adapter0 buffer size according to USB port speed, adapter1 buffer839+ size can be static because it is enabled only USB2.0 */840 for (i = 0; i < af9015_properties_count; i++) {841 /* USB1.1 set smaller buffersize and disable 2nd adapter */842 if (udev->speed == USB_SPEED_FULL) {843+ af9015_properties[i].adapter[0].stream.u.bulk.buffersize844+ = TS_USB11_MAX_PACKET_SIZE;845 /* disable 2nd adapter because we don't have846 PID-filters */847 af9015_config.dual_mode = 0;848 } else {849+ af9015_properties[i].adapter[0].stream.u.bulk.buffersize850+ = TS_USB20_MAX_PACKET_SIZE;851 }852 }853···1254 .type = USB_BULK,1255 .count = 6,1256 .endpoint = 0x85,1257+ .u = {1258+ .bulk = {1259+ .buffersize =1260+ TS_USB20_MAX_PACKET_SIZE,1261+ }1262+ }1263 },1264 }1265 },···1353 .type = USB_BULK,1354 .count = 6,1355 .endpoint = 0x85,1356+ .u = {1357+ .bulk = {1358+ .buffersize =1359+ TS_USB20_MAX_PACKET_SIZE,1360+ }1361+ }1362 },1363 }1364 },
···545546 s5h1409_enable_modulation(fe, p->u.vsb.modulation);547548- /* Allow the demod to settle */549- msleep(100);550-551 if (fe->ops.tuner_ops.set_params) {552 if (fe->ops.i2c_gate_ctrl)553 fe->ops.i2c_gate_ctrl(fe, 1);···558 s5h1409_set_qam_amhum_mode(fe);559 s5h1409_set_qam_interleave_mode(fe);560 }0000561562 return 0;563}
···545546 s5h1409_enable_modulation(fe, p->u.vsb.modulation);547000548 if (fe->ops.tuner_ops.set_params) {549 if (fe->ops.i2c_gate_ctrl)550 fe->ops.i2c_gate_ctrl(fe, 1);···561 s5h1409_set_qam_amhum_mode(fe);562 s5h1409_set_qam_interleave_mode(fe);563 }564+565+ /* Issue a reset to the demod so it knows to resync against the566+ newly tuned frequency */567+ s5h1409_softreset(fe);568569 return 0;570}
···1384static int ttusb_dec_init_stb(struct ttusb_dec *dec)1385{1386 int result;1387- unsigned int mode, model, version;13881389 dprintk("%s\n", __func__);1390
···1384static int ttusb_dec_init_stb(struct ttusb_dec *dec)1385{1386 int result;1387+ unsigned int mode = 0, model = 0, version = 0;13881389 dprintk("%s\n", __func__);1390
···13821383static int cx25840_command(struct i2c_client *client, unsigned cmd, void *arg)1384{1385+ /* ignore this command */1386+ if (cmd == TUNER_SET_TYPE_ADDR || cmd == TUNER_SET_CONFIG)1387+ return 0;1388+1389+ /* Old-style drivers rely on initialization on first use, so1390+ call the init whenever a command is issued to this driver.1391+ New-style drivers using v4l2_subdev should call init explicitly. */1392+ cx25840_init(i2c_get_clientdata(client), 0);1393 return v4l2_subdev_command(i2c_get_clientdata(client), cmd, arg);1394}1395
+42-38
drivers/media/video/cx88/cx88-dvb.c
···614 .set_ts_params = cx24116_set_ts_param,615};6160000000000000000000000000617static int dvb_register(struct cx8802_dev *dev)618{619 struct cx88_core *core = dev->core;620 struct videobuf_dvb_frontend *fe0, *fe1 = NULL;621 int mfe_shared = 0; /* bus not shared by default */622- int i;623624 if (0 != core->i2c_rc) {625 printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);626 goto frontend_detach;627- }628-629- if (!core->board.num_frontends)630- return -EINVAL;631-632- mutex_init(&dev->frontends.lock);633- INIT_LIST_HEAD(&dev->frontends.felist);634-635- printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,636- core->board.num_frontends);637- for (i = 1; i <= core->board.num_frontends; i++) {638- fe0 = videobuf_dvb_alloc_frontend(&dev->frontends, i);639- if (!fe0) {640- printk(KERN_ERR "%s() failed to alloc\n", __func__);641- videobuf_dvb_dealloc_frontends(&dev->frontends);642- goto frontend_detach;643- }644 }645646 /* Get the first frontend */···1250 struct cx88_core *core = drv->core;1251 struct cx8802_dev *dev = drv->core->dvbdev;1252 int err;0012531254 dprintk( 1, "%s\n", __func__);1255 dprintk( 1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",···1267 /* If vp3054 isn't enabled, a stub will just return 0 */1268 err = vp3054_i2c_probe(dev);1269 if (0 != err)1270- goto fail_probe;12711272 /* dvb stuff */1273 printk(KERN_INFO "%s/2: cx2388x based DVB/ATSC card\n", core->name);1274 dev->ts_gen_cntrl = 0x0c;12751276- err = -ENODEV;1277- if (core->board.num_frontends) {1278- struct videobuf_dvb_frontend *fe;1279- int i;12801281- for (i = 1; i <= core->board.num_frontends; i++) {1282- fe = videobuf_dvb_get_frontend(&core->dvbdev->frontends, i);1283- if (fe == NULL) {1284- printk(KERN_ERR "%s() failed to get frontend(%d)\n",01285 __func__, i);1286- goto fail_probe;1287- }1288- videobuf_queue_sg_init(&fe->dvb.dvbq, &dvb_qops,1289 &dev->pci->dev, &dev->slock,1290 V4L2_BUF_TYPE_VIDEO_CAPTURE,1291 V4L2_FIELD_TOP,1292 sizeof(struct cx88_buffer),1293 dev);1294- /* init struct videobuf_dvb */1295- fe->dvb.name = dev->core->name;1296- }1297- } else {1298- /* no frontends allocated */1299- printk(KERN_ERR "%s/2 .num_frontends should be non-zero\n",1300- core->name);1301- goto fail_core;1302 }01303 err = dvb_register(dev);1304 if (err)1305 /* frontends/adapter de-allocated in dvb_register */
···614 .set_ts_params = cx24116_set_ts_param,615};616617+static int cx8802_alloc_frontends(struct cx8802_dev *dev)618+{619+ struct cx88_core *core = dev->core;620+ struct videobuf_dvb_frontend *fe = NULL;621+ int i;622+623+ mutex_init(&dev->frontends.lock);624+ INIT_LIST_HEAD(&dev->frontends.felist);625+626+ if (!core->board.num_frontends)627+ return -ENODEV;628+629+ printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,630+ core->board.num_frontends);631+ for (i = 1; i <= core->board.num_frontends; i++) {632+ fe = videobuf_dvb_alloc_frontend(&dev->frontends, i);633+ if (!fe) {634+ printk(KERN_ERR "%s() failed to alloc\n", __func__);635+ videobuf_dvb_dealloc_frontends(&dev->frontends);636+ return -ENOMEM;637+ }638+ }639+ return 0;640+}641+642static int dvb_register(struct cx8802_dev *dev)643{644 struct cx88_core *core = dev->core;645 struct videobuf_dvb_frontend *fe0, *fe1 = NULL;646 int mfe_shared = 0; /* bus not shared by default */0647648 if (0 != core->i2c_rc) {649 printk(KERN_ERR "%s/2: no i2c-bus available, cannot attach dvb drivers\n", core->name);650 goto frontend_detach;00000000000000000651 }652653 /* Get the first frontend */···1243 struct cx88_core *core = drv->core;1244 struct cx8802_dev *dev = drv->core->dvbdev;1245 int err;1246+ struct videobuf_dvb_frontend *fe;1247+ int i;12481249 dprintk( 1, "%s\n", __func__);1250 dprintk( 1, " ->being probed by Card=%d Name=%s, PCI %02x:%02x\n",···1258 /* If vp3054 isn't enabled, a stub will just return 0 */1259 err = vp3054_i2c_probe(dev);1260 if (0 != err)1261+ goto fail_core;12621263 /* dvb stuff */1264 printk(KERN_INFO "%s/2: cx2388x based DVB/ATSC card\n", core->name);1265 dev->ts_gen_cntrl = 0x0c;12661267+ err = cx8802_alloc_frontends(dev);1268+ if (err)1269+ goto fail_core;012701271+ err = -ENODEV;1272+ for (i = 1; i <= core->board.num_frontends; i++) {1273+ fe = videobuf_dvb_get_frontend(&core->dvbdev->frontends, i);1274+ if (fe == NULL) {1275+ printk(KERN_ERR "%s() failed to get frontend(%d)\n",1276 __func__, i);1277+ goto fail_probe;1278+ }1279+ videobuf_queue_sg_init(&fe->dvb.dvbq, &dvb_qops,1280 &dev->pci->dev, &dev->slock,1281 V4L2_BUF_TYPE_VIDEO_CAPTURE,1282 V4L2_FIELD_TOP,1283 sizeof(struct cx88_buffer),1284 dev);1285+ /* init struct videobuf_dvb */1286+ fe->dvb.name = dev->core->name;0000001287 }1288+1289 err = dvb_register(dev);1290 if (err)1291 /* frontends/adapter de-allocated in dvb_register */
+1-1
drivers/media/video/cx88/cx88.h
···336 /* config info -- dvb */337#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)338 int (*prev_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage);339- void (*gate_ctrl)(struct cx88_core *core, int open);340#endif0341342 /* state info */343 struct task_struct *kthread;
···336 /* config info -- dvb */337#if defined(CONFIG_VIDEO_CX88_DVB) || defined(CONFIG_VIDEO_CX88_DVB_MODULE)338 int (*prev_set_voltage)(struct dvb_frontend *fe, fe_sec_voltage_t voltage);0339#endif340+ void (*gate_ctrl)(struct cx88_core *core, int open);341342 /* state info */343 struct task_struct *kthread;
+12-2
drivers/media/video/em28xx/em28xx-audio.c
···6263 dprintk("Stopping isoc\n");64 for (i = 0; i < EM28XX_AUDIO_BUFS; i++) {65- usb_unlink_urb(dev->adev.urb[i]);00066 usb_free_urb(dev->adev.urb[i]);67 dev->adev.urb[i] = NULL;00068 }6970 return 0;···395static snd_pcm_uframes_t snd_em28xx_capture_pointer(struct snd_pcm_substream396 *substream)397{398- struct em28xx *dev;3990400 snd_pcm_uframes_t hwptr_done;0401 dev = snd_pcm_substream_chip(substream);0402 hwptr_done = dev->adev.hwptr_done_capture;0403404 return hwptr_done;405}
···6263 dprintk("Stopping isoc\n");64 for (i = 0; i < EM28XX_AUDIO_BUFS; i++) {65+ if (!irqs_disabled())66+ usb_kill_urb(dev->adev.urb[i]);67+ else68+ usb_unlink_urb(dev->adev.urb[i]);69 usb_free_urb(dev->adev.urb[i]);70 dev->adev.urb[i] = NULL;71+72+ kfree(dev->adev.transfer_buffer[i]);73+ dev->adev.transfer_buffer[i] = NULL;74 }7576 return 0;···389static snd_pcm_uframes_t snd_em28xx_capture_pointer(struct snd_pcm_substream390 *substream)391{392+ unsigned long flags;393394+ struct em28xx *dev;395 snd_pcm_uframes_t hwptr_done;396+397 dev = snd_pcm_substream_chip(substream);398+ spin_lock_irqsave(&dev->adev.slock, flags);399 hwptr_done = dev->adev.hwptr_done_capture;400+ spin_unlock_irqrestore(&dev->adev.slock, flags);401402 return hwptr_done;403}
···438 if (dev->audio_mode.ac97 != EM28XX_NO_AC97) {439 int vol;4400000441 /* LSB: left channel - both channels with the same level */442 vol = (0x1f - dev->volume) | ((0x1f - dev->volume) << 8);443···457 if (ret < 0)458 em28xx_warn("couldn't setup AC97 register %d\n",459 outputs[i].reg);000000000460 }461 }462···860 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {861 urb = dev->isoc_ctl.urb[i];862 if (urb) {863- usb_kill_urb(urb);864- usb_unlink_urb(urb);000865 if (dev->isoc_ctl.transfer_buffer[i]) {866 usb_buffer_free(dev->udev,867 urb->transfer_buffer_length,
···438 if (dev->audio_mode.ac97 != EM28XX_NO_AC97) {439 int vol;440441+ em28xx_write_ac97(dev, AC97_POWER_DOWN_CTRL, 0x4200);442+ em28xx_write_ac97(dev, AC97_EXT_AUD_CTRL, 0x0031);443+ em28xx_write_ac97(dev, AC97_PCM_IN_SRATE, 0xbb80);444+445 /* LSB: left channel - both channels with the same level */446 vol = (0x1f - dev->volume) | ((0x1f - dev->volume) << 8);447···453 if (ret < 0)454 em28xx_warn("couldn't setup AC97 register %d\n",455 outputs[i].reg);456+ }457+458+ if (dev->ctl_aoutput & EM28XX_AOUT_PCM_IN) {459+ int sel = ac97_return_record_select(dev->ctl_aoutput);460+461+ /* Use the same input for both left and right channels */462+ sel |= (sel << 8);463+464+ em28xx_write_ac97(dev, AC97_RECORD_SELECT, sel);465 }466 }467···847 for (i = 0; i < dev->isoc_ctl.num_bufs; i++) {848 urb = dev->isoc_ctl.urb[i];849 if (urb) {850+ if (!irqs_disabled())851+ usb_kill_urb(urb);852+ else853+ usb_unlink_urb(urb);854+855 if (dev->isoc_ctl.transfer_buffer[i]) {856 usb_buffer_free(dev->udev,857 urb->transfer_buffer_length,
+19-1
drivers/media/video/em28xx/em28xx-dvb.c
···2829#include "lgdt330x.h"30#include "zl10353.h"031#ifdef EM28XX_DRX397XD_SUPPORT32#include "drx397xD.h"33#endif···233 .if2 = 45600,234};235000000000236#ifdef EM28XX_DRX397XD_SUPPORT237/* [TODO] djh - not sure yet what the device config needs to contain */238static struct drx397xD_config em28xx_drx397xD_with_xc3028 = {···422 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850:423 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:424 case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:425- case EM2883_BOARD_KWORLD_HYBRID_A316:426 case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:427 dvb->frontend = dvb_attach(lgdt330x_attach,428 &em2880_lgdt3303_dev,···436 case EM2880_BOARD_KWORLD_DVB_310U:437 dvb->frontend = dvb_attach(zl10353_attach,438 &em28xx_zl10353_with_xc3028,000000000439 &dev->i2c_adap);440 if (attach_xc3028(0x61, dev) < 0) {441 result = -EINVAL;
···2829#include "lgdt330x.h"30#include "zl10353.h"31+#include "s5h1409.h"32#ifdef EM28XX_DRX397XD_SUPPORT33#include "drx397xD.h"34#endif···232 .if2 = 45600,233};234235+static struct s5h1409_config em28xx_s5h1409_with_xc3028 = {236+ .demod_address = 0x32 >> 1,237+ .output_mode = S5H1409_PARALLEL_OUTPUT,238+ .gpio = S5H1409_GPIO_OFF,239+ .inversion = S5H1409_INVERSION_OFF,240+ .status_mode = S5H1409_DEMODLOCKING,241+ .mpeg_timing = S5H1409_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK242+};243+244#ifdef EM28XX_DRX397XD_SUPPORT245/* [TODO] djh - not sure yet what the device config needs to contain */246static struct drx397xD_config em28xx_drx397xD_with_xc3028 = {···412 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_850:413 case EM2883_BOARD_HAUPPAUGE_WINTV_HVR_950:414 case EM2880_BOARD_PINNACLE_PCTV_HD_PRO:0415 case EM2880_BOARD_AMD_ATI_TV_WONDER_HD_600:416 dvb->frontend = dvb_attach(lgdt330x_attach,417 &em2880_lgdt3303_dev,···427 case EM2880_BOARD_KWORLD_DVB_310U:428 dvb->frontend = dvb_attach(zl10353_attach,429 &em28xx_zl10353_with_xc3028,430+ &dev->i2c_adap);431+ if (attach_xc3028(0x61, dev) < 0) {432+ result = -EINVAL;433+ goto out_free;434+ }435+ break;436+ case EM2883_BOARD_KWORLD_HYBRID_330U:437+ dvb->frontend = dvb_attach(s5h1409_attach,438+ &em28xx_s5h1409_with_xc3028,439 &dev->i2c_adap);440 if (attach_xc3028(0x61, dev) < 0) {441 result = -EINVAL;
+29-22
drivers/media/video/em28xx/em28xx-video.c
···886 if (0 == INPUT(i)->type)887 return -EINVAL;88800889 mutex_lock(&dev->lock);890-891- video_mux(dev, i);892-893 mutex_unlock(&dev->lock);894 return 0;895}···938{939 struct em28xx_fh *fh = priv;940 struct em28xx *dev = fh->dev;000000941942 mutex_lock(&dev->lock);943···19561957int em28xx_register_analog_devices(struct em28xx *dev)1958{01959 int ret;19601961 printk(KERN_INFO "%s: v4l2 driver version %d.%d.%d\n",1962 dev->name,1963 (EM28XX_VERSION_CODE >> 16) & 0xff,1964 (EM28XX_VERSION_CODE >> 8) & 0xff, EM28XX_VERSION_CODE & 0xff);1965-1966- /* Analog specific initialization */1967- dev->format = &format[0];1968- video_mux(dev, 0);1969-1970- /* enable vbi capturing */1971-1972-/* em28xx_write_reg(dev, EM28XX_R0E_AUDIOSRC, 0xc0); audio register */1973-/* em28xx_write_reg(dev, EM28XX_R0F_XCLK, 0x80); clk register */1974- em28xx_write_reg(dev, EM28XX_R11_VINCTRL, 0x51);1975-1976- dev->mute = 1; /* maybe not the right place... */1977- dev->volume = 0x1f;1978-1979- em28xx_set_outfmt(dev);1980- em28xx_colorlevels_set_default(dev);1981- em28xx_compression_disable(dev);19821983 /* set default norm */1984 dev->norm = em28xx_video_template.current_norm;···1971 dev->interlaced = EM28XX_INTERLACED_DEFAULT;1972 dev->hscale = 0;1973 dev->vscale = 0;019741975- /* FIXME: This is a very bad hack! Not all devices have TV on input 2 */1976- dev->ctl_input = 2;000000000000000019771978 /* allocate and fill video video_device struct */1979 dev->vdev = em28xx_vdev_init(dev, &em28xx_video_template, "video");
···949 itv->instance = atomic_inc_return(&ivtv_instance) - 1;950951 retval = v4l2_device_register(&dev->dev, &itv->device);952- if (retval)0953 return retval;0954 /* "ivtv + PCI ID" is a bit of a mouthful, so use955 "ivtv + instance" instead. */956 snprintf(itv->device.name, sizeof(itv->device.name),
···949 itv->instance = atomic_inc_return(&ivtv_instance) - 1;950951 retval = v4l2_device_register(&dev->dev, &itv->device);952+ if (retval) {953+ kfree(itv);954 return retval;955+ }956 /* "ivtv + PCI ID" is a bit of a mouthful, so use957 "ivtv + instance" instead. */958 snprintf(itv->device.name, sizeof(itv->device.name),
···157 struct i2c_msg *pmsg;158 struct usb_usbvision *usbvision;159 int i, ret;160- unsigned char addr;161162 usbvision = (struct usb_usbvision *)i2c_get_adapdata(i2c_adap);163
···157 struct i2c_msg *pmsg;158 struct usb_usbvision *usbvision;159 int i, ret;160+ unsigned char addr = 0;161162 usbvision = (struct usb_usbvision *)i2c_get_adapdata(i2c_adap);163
+3-4
drivers/media/video/uvc/uvc_ctrl.c
···1/*2 * uvc_ctrl.c -- USB Video Class driver - Controls3 *4- * Copyright (C) 2005-20085 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>15-#include <linux/version.h>16#include <linux/list.h>17#include <linux/module.h>18#include <linux/uaccess.h>···28#define UVC_CTRL_DATA_BACKUP 12930/* ------------------------------------------------------------------------31- * Control, formats, ...32 */3334static struct uvc_control_info uvc_ctrls[] = {···634 mask = (1 << bits) - 1;635 }636637- /* Sign-extend the value if needed */638 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED)639 value |= -(value & (1 << (mapping->size - 1)));640
···1/*2 * uvc_ctrl.c -- USB Video Class driver - Controls3 *4+ * Copyright (C) 2005-20095 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>015#include <linux/list.h>16#include <linux/module.h>17#include <linux/uaccess.h>···29#define UVC_CTRL_DATA_BACKUP 13031/* ------------------------------------------------------------------------32+ * Controls33 */3435static struct uvc_control_info uvc_ctrls[] = {···635 mask = (1 << bits) - 1;636 }637638+ /* Sign-extend the value if needed. */639 if (mapping->data_type == UVC_CTRL_DATA_TYPE_SIGNED)640 value |= -(value & (1 << (mapping->size - 1)));641
+25-30
drivers/media/video/uvc/uvc_driver.c
···1/*2 * uvc_driver.c -- USB Video Class driver3 *4- * Copyright (C) 2005-20085 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···24 */2526#include <linux/kernel.h>27-#include <linux/version.h>28#include <linux/list.h>29#include <linux/module.h>30#include <linux/usb.h>···48unsigned int uvc_trace_param;4950/* ------------------------------------------------------------------------51- * Control, formats, ...52 */5354static struct uvc_format_desc uvc_fmts[] = {···473474 /* Several UVC chipsets screw up dwMaxVideoFrameBufferSize475 * completely. Observed behaviours range from setting the476- * value to 1.1x the actual frame size of hardwiring the477 * 16 low bits to 0. This results in a higher than necessary478 * memory usage as well as a wrong image size information. For479 * uncompressed formats this can be fixed by computing the···486 /* Some bogus devices report dwMinFrameInterval equal to487 * dwMaxFrameInterval and have dwFrameIntervalStep set to488 * zero. Setting all null intervals to 1 fixes the problem and489- * some other divisions by zero which could happen.490 */491 for (i = 0; i < n; ++i) {492 interval = get_unaligned_le32(&buffer[26+4*i]);···1199 * Scan the UVC descriptors to locate a chain starting at an Output Terminal1200 * and containing the following units:1201 *1202- * - a USB Streaming Output Terminal1203 * - zero or one Processing Unit1204 * - zero, one or mode single-input Selector Units1205 * - zero or one multiple-input Selector Units, provided all inputs are1206 * connected to input terminals1207 * - zero, one or mode single-input Extension Units1208- * - one Camera Input Terminal, or one or more External terminals.1209 *1210 * A side forward scan is made on each detected entity to check for additional1211 * extension units.···15301531 /* Set the driver data before calling video_register_device, otherwise1532 * uvc_v4l2_open might race us.1533- *1534- * FIXME: usb_set_intfdata hasn't been called so far. Is that a1535- * problem ? Does any function which could be called here get1536- * a pointer to the usb_interface ?1537 */1538 dev->video.vdev = vdev;1539 video_set_drvdata(vdev, &dev->video);···1564 struct uvc_device *dev = container_of(kref, struct uvc_device, kref);1565 struct list_head *p, *n;15661567- /* Unregister the video device */1568 uvc_unregister_video(dev);1569 usb_put_intf(dev->intf);1570 usb_put_dev(dev->udev);···1607 uvc_trace(UVC_TRACE_PROBE, "Probing generic UVC device %s\n",1608 udev->devpath);16091610- /* Allocate memory for the device and initialize it */1611 if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == NULL)1612 return -ENOMEM;1613···1628 le16_to_cpu(udev->descriptor.idVendor),1629 le16_to_cpu(udev->descriptor.idProduct));16301631- /* Parse the Video Class control descriptor */1632 if (uvc_parse_control(dev) < 0) {1633 uvc_trace(UVC_TRACE_PROBE, "Unable to parse UVC "1634 "descriptors.\n");1635 goto error;1636 }16371638- uvc_printk(KERN_INFO, "Found UVC %u.%02u device %s (%04x:%04x)\n",1639 dev->uvc_version >> 8, dev->uvc_version & 0xff,1640 udev->product ? udev->product : "<unnamed>",1641 le16_to_cpu(udev->descriptor.idVendor),···1648 "linux-uvc-devel mailing list.\n");1649 }16501651- /* Initialize controls */1652 if (uvc_ctrl_init_device(dev) < 0)1653 goto error;16541655- /* Register the video devices */1656 if (uvc_register_video(dev) < 0)1657 goto error;16581659- /* Save our data pointer in the interface data */1660 usb_set_intfdata(intf, dev);16611662- /* Initialize the interrupt URB */1663 if ((ret = uvc_status_init(dev)) < 0) {1664 uvc_printk(KERN_INFO, "Unable to initialize the status "1665 "endpoint (%d), status interrupt will not be "···1834 .bInterfaceSubClass = 1,1835 .bInterfaceProtocol = 0 },1836 /* Apple Built-In iSight */1837- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE1838 | USB_DEVICE_ID_MATCH_INT_INFO,1839 .idVendor = 0x05ac,1840 .idProduct = 0x8501,1841- .bInterfaceClass = USB_CLASS_VIDEO,1842- .bInterfaceSubClass = 1,1843- .bInterfaceProtocol = 0,1844 .driver_info = UVC_QUIRK_PROBE_MINMAX1845 | UVC_QUIRK_BUILTIN_ISIGHT },1846 /* Genesys Logic USB 2.0 PC Camera */1847- { .match_flags = USB_DEVICE_ID_MATCH_DEVICE1848 | USB_DEVICE_ID_MATCH_INT_INFO,1849- .idVendor = 0x05e3,1850- .idProduct = 0x0505,1851- .bInterfaceClass = USB_CLASS_VIDEO,1852- .bInterfaceSubClass = 1,1853- .bInterfaceProtocol = 0,1854- .driver_info = UVC_QUIRK_STREAM_NO_FID },1855 /* MT6227 */1856 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE1857 | USB_DEVICE_ID_MATCH_INT_INFO,
···1/*2 * uvc_driver.c -- USB Video Class driver3 *4+ * Copyright (C) 2005-20095 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···24 */2526#include <linux/kernel.h>027#include <linux/list.h>28#include <linux/module.h>29#include <linux/usb.h>···49unsigned int uvc_trace_param;5051/* ------------------------------------------------------------------------52+ * Video formats53 */5455static struct uvc_format_desc uvc_fmts[] = {···474475 /* Several UVC chipsets screw up dwMaxVideoFrameBufferSize476 * completely. Observed behaviours range from setting the477+ * value to 1.1x the actual frame size to hardwiring the478 * 16 low bits to 0. This results in a higher than necessary479 * memory usage as well as a wrong image size information. For480 * uncompressed formats this can be fixed by computing the···487 /* Some bogus devices report dwMinFrameInterval equal to488 * dwMaxFrameInterval and have dwFrameIntervalStep set to489 * zero. Setting all null intervals to 1 fixes the problem and490+ * some other divisions by zero that could happen.491 */492 for (i = 0; i < n; ++i) {493 interval = get_unaligned_le32(&buffer[26+4*i]);···1200 * Scan the UVC descriptors to locate a chain starting at an Output Terminal1201 * and containing the following units:1202 *1203+ * - one Output Terminal (USB Streaming or Display)1204 * - zero or one Processing Unit1205 * - zero, one or mode single-input Selector Units1206 * - zero or one multiple-input Selector Units, provided all inputs are1207 * connected to input terminals1208 * - zero, one or mode single-input Extension Units1209+ * - one or more Input Terminals (Camera, External or USB Streaming)1210 *1211 * A side forward scan is made on each detected entity to check for additional1212 * extension units.···15311532 /* Set the driver data before calling video_register_device, otherwise1533 * uvc_v4l2_open might race us.00001534 */1535 dev->video.vdev = vdev;1536 video_set_drvdata(vdev, &dev->video);···1569 struct uvc_device *dev = container_of(kref, struct uvc_device, kref);1570 struct list_head *p, *n;15711572+ /* Unregister the video device. */1573 uvc_unregister_video(dev);1574 usb_put_intf(dev->intf);1575 usb_put_dev(dev->udev);···1612 uvc_trace(UVC_TRACE_PROBE, "Probing generic UVC device %s\n",1613 udev->devpath);16141615+ /* Allocate memory for the device and initialize it. */1616 if ((dev = kzalloc(sizeof *dev, GFP_KERNEL)) == NULL)1617 return -ENOMEM;1618···1633 le16_to_cpu(udev->descriptor.idVendor),1634 le16_to_cpu(udev->descriptor.idProduct));16351636+ /* Parse the Video Class control descriptor. */1637 if (uvc_parse_control(dev) < 0) {1638 uvc_trace(UVC_TRACE_PROBE, "Unable to parse UVC "1639 "descriptors.\n");1640 goto error;1641 }16421643+ uvc_printk(KERN_INFO, "Found UVC %u.%02x device %s (%04x:%04x)\n",1644 dev->uvc_version >> 8, dev->uvc_version & 0xff,1645 udev->product ? udev->product : "<unnamed>",1646 le16_to_cpu(udev->descriptor.idVendor),···1653 "linux-uvc-devel mailing list.\n");1654 }16551656+ /* Initialize controls. */1657 if (uvc_ctrl_init_device(dev) < 0)1658 goto error;16591660+ /* Register the video devices. */1661 if (uvc_register_video(dev) < 0)1662 goto error;16631664+ /* Save our data pointer in the interface data. */1665 usb_set_intfdata(intf, dev);16661667+ /* Initialize the interrupt URB. */1668 if ((ret = uvc_status_init(dev)) < 0) {1669 uvc_printk(KERN_INFO, "Unable to initialize the status "1670 "endpoint (%d), status interrupt will not be "···1839 .bInterfaceSubClass = 1,1840 .bInterfaceProtocol = 0 },1841 /* Apple Built-In iSight */1842+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE1843 | USB_DEVICE_ID_MATCH_INT_INFO,1844 .idVendor = 0x05ac,1845 .idProduct = 0x8501,1846+ .bInterfaceClass = USB_CLASS_VIDEO,1847+ .bInterfaceSubClass = 1,1848+ .bInterfaceProtocol = 0,1849 .driver_info = UVC_QUIRK_PROBE_MINMAX1850 | UVC_QUIRK_BUILTIN_ISIGHT },1851 /* Genesys Logic USB 2.0 PC Camera */1852+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE1853 | USB_DEVICE_ID_MATCH_INT_INFO,1854+ .idVendor = 0x05e3,1855+ .idProduct = 0x0505,1856+ .bInterfaceClass = USB_CLASS_VIDEO,1857+ .bInterfaceSubClass = 1,1858+ .bInterfaceProtocol = 0,1859+ .driver_info = UVC_QUIRK_STREAM_NO_FID },1860 /* MT6227 */1861 { .match_flags = USB_DEVICE_ID_MATCH_DEVICE1862 | USB_DEVICE_ID_MATCH_INT_INFO,
+2
drivers/media/video/uvc/uvc_isight.c
···3 *4 * Copyright (C) 2006-20075 * Ivan N. Zlatev <contact@i-nz.net>006 *7 * This program is free software; you can redistribute it and/or modify8 * it under the terms of the GNU General Public License as published by
···3 *4 * Copyright (C) 2006-20075 * Ivan N. Zlatev <contact@i-nz.net>6+ * Copyright (C) 2008-20097+ * Laurent Pinchart <laurent.pinchart@skynet.be>8 *9 * This program is free software; you can redistribute it and/or modify10 * it under the terms of the GNU General Public License as published by
+15-16
drivers/media/video/uvc/uvc_queue.c
···1/*2 * uvc_queue.c -- USB Video Class driver - Buffers management3 *4- * Copyright (C) 2005-20085 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>15-#include <linux/version.h>16#include <linux/mm.h>17#include <linux/list.h>18#include <linux/module.h>···36 * to user space will return -EBUSY.37 *38 * Video buffers are managed using two queues. However, unlike most USB video39- * drivers which use an in queue and an out queue, we use a main queue which40- * holds all queued buffers (both 'empty' and 'done' buffers), and an irq41- * queue which holds empty buffers. This design (copied from video-buf)42- * minimizes locking in interrupt, as only one queue is shared between43- * interrupt and user contexts.44 *45 * Use cases46 * ---------47 *48- * Unless stated otherwise, all operations which modify the irq buffers queue49 * are protected by the irq spinlock.50 *51 * 1. The user queues the buffers, starts streaming and dequeues a buffer.52 *53 * The buffers are added to the main and irq queues. Both operations are54- * protected by the queue lock, and the latert is protected by the irq55 * spinlock as well.56 *57 * The completion handler fetches a buffer from the irq queue and fills it···59 * returns immediately.60 *61 * When the buffer is full, the completion handler removes it from the irq62- * queue, marks it as ready (UVC_BUF_STATE_DONE) and wake its wait queue.63 * At that point, any process waiting on the buffer will be woken up. If a64 * process tries to dequeue a buffer after it has been marked ready, the65 * dequeing will succeed immediately.···90/*91 * Allocate the video buffers.92 *93- * Pages are reserved to make sure they will not be swaped, as they will be94- * filled in URB completion handler.95 *96 * Buffers will be individually mapped, so they must all be page aligned.97 */···209 __uvc_query_buffer(&queue->buffer[v4l2_buf->index], v4l2_buf);210211done:212- mutex_unlock(&queue->mutex);213- return ret;214}215216/*···235 }236237 mutex_lock(&queue->mutex);238- if (v4l2_buf->index >= queue->count) {239 uvc_trace(UVC_TRACE_CAPTURE, "[E] Out of range index.\n");240 ret = -EINVAL;241 goto done;···428 * Cancel the video buffers queue.429 *430 * Cancelling the queue marks all buffers on the irq queue as erroneous,431- * wakes them up and remove them from the queue.432 *433 * If the disconnect parameter is set, further calls to uvc_queue_buffer will434 * fail with -ENODEV.
···1/*2 * uvc_queue.c -- USB Video Class driver - Buffers management3 *4+ * Copyright (C) 2005-20095 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>015#include <linux/mm.h>16#include <linux/list.h>17#include <linux/module.h>···37 * to user space will return -EBUSY.38 *39 * Video buffers are managed using two queues. However, unlike most USB video40+ * drivers that use an in queue and an out queue, we use a main queue to hold41+ * all queued buffers (both 'empty' and 'done' buffers), and an irq queue to42+ * hold empty buffers. This design (copied from video-buf) minimizes locking43+ * in interrupt, as only one queue is shared between interrupt and user44+ * contexts.45 *46 * Use cases47 * ---------48 *49+ * Unless stated otherwise, all operations that modify the irq buffers queue50 * are protected by the irq spinlock.51 *52 * 1. The user queues the buffers, starts streaming and dequeues a buffer.53 *54 * The buffers are added to the main and irq queues. Both operations are55+ * protected by the queue lock, and the later is protected by the irq56 * spinlock as well.57 *58 * The completion handler fetches a buffer from the irq queue and fills it···60 * returns immediately.61 *62 * When the buffer is full, the completion handler removes it from the irq63+ * queue, marks it as ready (UVC_BUF_STATE_DONE) and wakes its wait queue.64 * At that point, any process waiting on the buffer will be woken up. If a65 * process tries to dequeue a buffer after it has been marked ready, the66 * dequeing will succeed immediately.···91/*92 * Allocate the video buffers.93 *94+ * Pages are reserved to make sure they will not be swapped, as they will be95+ * filled in the URB completion handler.96 *97 * Buffers will be individually mapped, so they must all be page aligned.98 */···210 __uvc_query_buffer(&queue->buffer[v4l2_buf->index], v4l2_buf);211212done:213+ mutex_unlock(&queue->mutex);214+ return ret;215}216217/*···236 }237238 mutex_lock(&queue->mutex);239+ if (v4l2_buf->index >= queue->count) {240 uvc_trace(UVC_TRACE_CAPTURE, "[E] Out of range index.\n");241 ret = -EINVAL;242 goto done;···429 * Cancel the video buffers queue.430 *431 * Cancelling the queue marks all buffers on the irq queue as erroneous,432+ * wakes them up and removes them from the queue.433 *434 * If the disconnect parameter is set, further calls to uvc_queue_buffer will435 * fail with -ENODEV.
+1-2
drivers/media/video/uvc/uvc_status.c
···1/*2 * uvc_status.c -- USB Video Class driver - Status endpoint3 *4- * Copyright (C) 2007-20085 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>15-#include <linux/version.h>16#include <linux/input.h>17#include <linux/usb.h>18#include <linux/usb/input.h>
···1/*2 * uvc_status.c -- USB Video Class driver - Status endpoint3 *4+ * Copyright (C) 2007-20095 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>015#include <linux/input.h>16#include <linux/usb.h>17#include <linux/usb/input.h>
+5-5
drivers/media/video/uvc/uvc_v4l2.c
···1/*2 * uvc_v4l2.c -- USB Video Class driver - V4L2 API3 *4- * Copyright (C) 2005-20085 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···37 * must be grouped (for instance the Red Balance, Blue Balance and Do White38 * Balance V4L2 controls use the White Balance Component UVC control) or39 * otherwise translated. The approach we take here is to use a translation40- * table for the controls which can be mapped directly, and handle the others41 * manually.42 */43static int uvc_v4l2_query_menu(struct uvc_video_device *video,···189 probe->dwMaxVideoFrameSize =190 video->streaming->ctrl.dwMaxVideoFrameSize;191192- /* Probe the device */193 if ((ret = uvc_probe_video(video, probe)) < 0)194 goto done;195···354 *355 * Each open instance of a UVC device can either be in a privileged or356 * unprivileged state. Only a single instance can be in a privileged state at357- * a given time. Trying to perform an operation which requires privileges will358 * automatically acquire the required privileges if possible, or return -EBUSY359 * otherwise. Privileges are dismissed when closing the instance.360 *361- * Operations which require privileges are:362 *363 * - VIDIOC_S_INPUT364 * - VIDIOC_S_PARM
···1/*2 * uvc_v4l2.c -- USB Video Class driver - V4L2 API3 *4+ * Copyright (C) 2005-20095 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···37 * must be grouped (for instance the Red Balance, Blue Balance and Do White38 * Balance V4L2 controls use the White Balance Component UVC control) or39 * otherwise translated. The approach we take here is to use a translation40+ * table for the controls that can be mapped directly, and handle the others41 * manually.42 */43static int uvc_v4l2_query_menu(struct uvc_video_device *video,···189 probe->dwMaxVideoFrameSize =190 video->streaming->ctrl.dwMaxVideoFrameSize;191192+ /* Probe the device. */193 if ((ret = uvc_probe_video(video, probe)) < 0)194 goto done;195···354 *355 * Each open instance of a UVC device can either be in a privileged or356 * unprivileged state. Only a single instance can be in a privileged state at357+ * a given time. Trying to perform an operation that requires privileges will358 * automatically acquire the required privileges if possible, or return -EBUSY359 * otherwise. Privileges are dismissed when closing the instance.360 *361+ * Operations that require privileges are:362 *363 * - VIDIOC_S_INPUT364 * - VIDIOC_S_PARM
+19-12
drivers/media/video/uvc/uvc_video.c
···1/*2 * uvc_video.c -- USB Video Class driver - Video handling3 *4- * Copyright (C) 2005-20085 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>15-#include <linux/version.h>16#include <linux/list.h>17#include <linux/module.h>18#include <linux/usb.h>···114 ctrl->wCompQuality = le16_to_cpup((__le16 *)data);115 ret = 0;116 goto out;117- } else if (query == GET_DEF && probe == 1) {118 /* Many cameras don't support the GET_DEF request on their119 * video probe control. Warn once and return, the caller will120 * fall back to GET_CUR.···159 }160161 /* Some broken devices return a null or wrong dwMaxVideoFrameSize.162- * Try to get the value from the format and frame descriptor.163 */164 uvc_fixup_buffer_size(video, ctrl);165 ret = 0;···190 *(__le16 *)&data[12] = cpu_to_le16(ctrl->wCompQuality);191 *(__le16 *)&data[14] = cpu_to_le16(ctrl->wCompWindowSize);192 *(__le16 *)&data[16] = cpu_to_le16(ctrl->wDelay);193- /* Note: Some of the fields below are not required for IN devices (see194- * UVC spec, 4.3.1.1), but we still copy them in case support for OUT195- * devices is added in the future. */196 put_unaligned_le32(ctrl->dwMaxVideoFrameSize, &data[18]);197 put_unaligned_le32(ctrl->dwMaxPayloadTransferSize, &data[22]);198···396 *397 * Empty buffers (bytesused == 0) don't trigger end of frame detection398 * as it doesn't make sense to return an empty buffer. This also399- * avoids detecting and of frame conditions at FID toggling if the400 * previous payload had the EOF bit set.401 */402 if (fid != video->last_fid && buf->buf.bytesused != 0) {···449 }450}45100000000000452static int uvc_video_encode_header(struct uvc_video_device *video,453 struct uvc_buffer *buf, __u8 *data, int len)454{···960}961962/*963- * Reconfigure the video interface and restart streaming if it was enable964 * before suspend.965 *966 * If an error occurs, disable the video queue. This will wake all pending···992 */993994/*995- * Initialize the UVC video device by retrieving the default format and996- * committing it.997 *998 * Some cameras (namely the Fuji Finepix) set the format and frame999 * indexes to zero. The UVC standard doesn't clearly make this a spec···1021 */1022 usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);10231024- /* Some webcams don't suport GET_DEF request on the probe control. We1025 * fall back to GET_CUR if GET_DEF fails.1026 */1027 if ((ret = uvc_get_video_ctrl(video, probe, 1, GET_DEF)) < 0 &&
···1/*2 * uvc_video.c -- USB Video Class driver - Video handling3 *4+ * Copyright (C) 2005-20095 * Laurent Pinchart (laurent.pinchart@skynet.be)6 *7 * This program is free software; you can redistribute it and/or modify···12 */1314#include <linux/kernel.h>015#include <linux/list.h>16#include <linux/module.h>17#include <linux/usb.h>···115 ctrl->wCompQuality = le16_to_cpup((__le16 *)data);116 ret = 0;117 goto out;118+ } else if (query == GET_DEF && probe == 1 && ret != size) {119 /* Many cameras don't support the GET_DEF request on their120 * video probe control. Warn once and return, the caller will121 * fall back to GET_CUR.···160 }161162 /* Some broken devices return a null or wrong dwMaxVideoFrameSize.163+ * Try to get the value from the format and frame descriptors.164 */165 uvc_fixup_buffer_size(video, ctrl);166 ret = 0;···191 *(__le16 *)&data[12] = cpu_to_le16(ctrl->wCompQuality);192 *(__le16 *)&data[14] = cpu_to_le16(ctrl->wCompWindowSize);193 *(__le16 *)&data[16] = cpu_to_le16(ctrl->wDelay);000194 put_unaligned_le32(ctrl->dwMaxVideoFrameSize, &data[18]);195 put_unaligned_le32(ctrl->dwMaxPayloadTransferSize, &data[22]);196···400 *401 * Empty buffers (bytesused == 0) don't trigger end of frame detection402 * as it doesn't make sense to return an empty buffer. This also403+ * avoids detecting end of frame conditions at FID toggling if the404 * previous payload had the EOF bit set.405 */406 if (fid != video->last_fid && buf->buf.bytesused != 0) {···453 }454}455456+/* Video payload encoding is handled by uvc_video_encode_header() and457+ * uvc_video_encode_data(). Only bulk transfers are currently supported.458+ *459+ * uvc_video_encode_header is called at the start of a payload. It adds header460+ * data to the transfer buffer and returns the header size. As the only known461+ * UVC output device transfers a whole frame in a single payload, the EOF bit462+ * is always set in the header.463+ *464+ * uvc_video_encode_data is called for every URB and copies the data from the465+ * video buffer to the transfer buffer.466+ */467static int uvc_video_encode_header(struct uvc_video_device *video,468 struct uvc_buffer *buf, __u8 *data, int len)469{···953}954955/*956+ * Reconfigure the video interface and restart streaming if it was enabled957 * before suspend.958 *959 * If an error occurs, disable the video queue. This will wake all pending···985 */986987/*988+ * Initialize the UVC video device by switching to alternate setting 0 and989+ * retrieve the default format.990 *991 * Some cameras (namely the Fuji Finepix) set the format and frame992 * indexes to zero. The UVC standard doesn't clearly make this a spec···1014 */1015 usb_set_interface(video->dev->udev, video->streaming->intfnum, 0);10161017+ /* Some webcams don't suport GET_DEF requests on the probe control. We1018 * fall back to GET_CUR if GET_DEF fails.1019 */1020 if ((ret = uvc_get_video_ctrl(video, probe, 1, GET_DEF)) < 0 &&
···28{29 switch (cmd) {30 case VIDIOC_QUERYCTRL:31- return v4l2_subdev_call(sd, core, querymenu, arg);32 case VIDIOC_G_CTRL:33 return v4l2_subdev_call(sd, core, g_ctrl, arg);34 case VIDIOC_S_CTRL:35 return v4l2_subdev_call(sd, core, s_ctrl, arg);36 case VIDIOC_QUERYMENU:37- return v4l2_subdev_call(sd, core, queryctrl, arg);38 case VIDIOC_LOG_STATUS:39 return v4l2_subdev_call(sd, core, log_status);40 case VIDIOC_DBG_G_CHIP_IDENT:
···28{29 switch (cmd) {30 case VIDIOC_QUERYCTRL:31+ return v4l2_subdev_call(sd, core, queryctrl, arg);32 case VIDIOC_G_CTRL:33 return v4l2_subdev_call(sd, core, g_ctrl, arg);34 case VIDIOC_S_CTRL:35 return v4l2_subdev_call(sd, core, s_ctrl, arg);36 case VIDIOC_QUERYMENU:37+ return v4l2_subdev_call(sd, core, querymenu, arg);38 case VIDIOC_LOG_STATUS:39 return v4l2_subdev_call(sd, core, log_status);40 case VIDIOC_DBG_G_CHIP_IDENT:
+2-10
drivers/media/video/zoran/zoran.h
···349 u16 i2c_decoder, i2c_encoder; /* I2C types */350 u16 video_vfe, video_codec; /* videocodec types */351 u16 audio_chip; /* audio type */352- u16 vendor_id, device_id; /* subsystem vendor/device ID */353354 int inputs; /* number of video inputs */355 struct input {···400 char name[32]; /* name of this device */401 struct pci_dev *pci_dev; /* PCI device */402 unsigned char revision; /* revision of zr36057 */403- unsigned int zr36057_adr; /* bus address of IO mem returned by PCI BIOS */404 unsigned char __iomem *zr36057_mem;/* pointer to mapped IO memory */405406 spinlock_t spinlock; /* Spinlock */···488 wait_queue_head_t test_q;489};490491-/*The following should be done in more portable way. It depends on define492- of _ALPHA_BUZ in the Makefile.*/493-494-#ifdef _ALPHA_BUZ495-#define btwrite(dat,adr) writel((dat), zr->zr36057_adr+(adr))496-#define btread(adr) readl(zr->zr36057_adr+(adr))497-#else498#define btwrite(dat,adr) writel((dat), zr->zr36057_mem+(adr))499#define btread(adr) readl(zr->zr36057_mem+(adr))500-#endif501502#define btand(dat,adr) btwrite((dat) & btread(adr), adr)503#define btor(dat,adr) btwrite((dat) | btread(adr), adr)
···349 u16 i2c_decoder, i2c_encoder; /* I2C types */350 u16 video_vfe, video_codec; /* videocodec types */351 u16 audio_chip; /* audio type */0352353 int inputs; /* number of video inputs */354 struct input {···401 char name[32]; /* name of this device */402 struct pci_dev *pci_dev; /* PCI device */403 unsigned char revision; /* revision of zr36057 */0404 unsigned char __iomem *zr36057_mem;/* pointer to mapped IO memory */405406 spinlock_t spinlock; /* Spinlock */···490 wait_queue_head_t test_q;491};492493+/* There was something called _ALPHA_BUZ that used the PCI address instead of494+ * the kernel iomapped address for btread/btwrite. */00000495#define btwrite(dat,adr) writel((dat), zr->zr36057_mem+(adr))496#define btread(adr) readl(zr->zr36057_mem+(adr))0497498#define btand(dat,adr) btwrite((dat) & btread(adr), adr)499#define btor(dat,adr) btwrite((dat) | btread(adr), adr)
+317-337
drivers/media/video/zoran/zoran_card.c
···6162extern const struct zoran_format zoran_formats[];6364-static int card[BUZ_MAX] = { -1, -1, -1, -1 };65module_param_array(card, int, NULL, 0444);66-MODULE_PARM_DESC(card, "The type of card");6768-static int encoder[BUZ_MAX] = { -1, -1, -1, -1 };69module_param_array(encoder, int, NULL, 0444);70-MODULE_PARM_DESC(encoder, "i2c TV encoder");7172-static int decoder[BUZ_MAX] = { -1, -1, -1, -1 };73module_param_array(decoder, int, NULL, 0444);74-MODULE_PARM_DESC(decoder, "i2c TV decoder");7576/*77 The video mem address of the video card.···104MODULE_PARM_DESC(default_norm, "Default norm (0=PAL, 1=NTSC, 2=SECAM)");105106/* /dev/videoN, -1 for autodetect */107-static int video_nr[BUZ_MAX] = {-1, -1, -1, -1};108module_param_array(video_nr, int, NULL, 0444);109-MODULE_PARM_DESC(video_nr, "video device number (-1=Auto)");110111/*112 Number and size of grab buffers for Video 4 Linux···153MODULE_AUTHOR("Serguei Miridonov");154MODULE_LICENSE("GPL");155000156157-int zoran_num; /* number of Buzs in use */158-struct zoran *zoran[BUZ_MAX];000000000159160/* videocodec bus functions ZR36060 */161static u32···484 }, {485 .type = DC10plus,486 .name = "DC10plus",487- .vendor_id = PCI_VENDOR_ID_MIRO,488- .device_id = PCI_DEVICE_ID_MIRO_DC10PLUS,489 .i2c_decoder = I2C_DRIVERID_SAA7110,490 .i2c_encoder = I2C_DRIVERID_ADV7175,491 .video_codec = CODEC_TYPE_ZR36060,···541 }, {542 .type = DC30plus,543 .name = "DC30plus",544- .vendor_id = PCI_VENDOR_ID_MIRO,545- .device_id = PCI_DEVICE_ID_MIRO_DC30PLUS,546 .i2c_decoder = I2C_DRIVERID_VPX3220,547 .i2c_encoder = I2C_DRIVERID_ADV7175,548 .video_codec = CODEC_TYPE_ZR36050,···597 }, {598 .type = LML33R10,599 .name = "LML33R10",600- .vendor_id = PCI_VENDOR_ID_ELECTRONICDESIGNGMBH,601- .device_id = PCI_DEVICE_ID_LML_33R10,602 .i2c_decoder = I2C_DRIVERID_SAA7114,603 .i2c_encoder = I2C_DRIVERID_ADV7170,604 .video_codec = CODEC_TYPE_ZR36060,···624 }, {625 .type = BUZ,626 .name = "Buz",627- .vendor_id = PCI_VENDOR_ID_IOMEGA,628- .device_id = PCI_DEVICE_ID_IOMEGA_BUZ,629 .i2c_decoder = I2C_DRIVERID_SAA7111A,630 .i2c_encoder = I2C_DRIVERID_SAA7185B,631 .video_codec = CODEC_TYPE_ZR36060,···653 .name = "6-Eyes",654 /* AverMedia chose not to brand the 6-Eyes. Thus it655 can't be autodetected, and requires card=x. */656- .vendor_id = -1,657- .device_id = -1,658 .i2c_decoder = I2C_DRIVERID_KS0127,659 .i2c_encoder = I2C_DRIVERID_BT866,660 .video_codec = CODEC_TYPE_ZR36060,···1140 strcpy(zr->video_dev->name, ZR_DEVNAME(zr));1141 err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]);1142 if (err < 0)1143- goto exit_unregister;011441145 zoran_init_hardware(zr);1146 if (zr36067_debug > 2)···1156 zr->initialized = 1;1157 return 0;11581159-exit_unregister:1160- zoran_unregister_i2c(zr);1161exit_free:1162 kfree(zr->stat_com);1163 kfree(zr->video_dev);1164 return err;1165}11661167-static void1168-zoran_release (struct zoran *zr)1169{001170 if (!zr->initialized)1171 goto exit_free;01172 /* unregister videocodec bus */1173 if (zr->codec) {1174 struct videocodec_master *master = zr->codec->master_data;···1197 pci_disable_device(zr->pci_dev);1198 video_unregister_device(zr->video_dev);1199exit_free:01200 kfree(zr);1201}1202···1260 * Scan for a Buz card (actually for the PCI controller ZR36057),1261 * request the irq and map the io memory1262 */1263-static int __devinit1264-find_zr36057 (void)1265{1266 unsigned char latency, need_latency;1267 struct zoran *zr;1268- struct pci_dev *dev = NULL;1269 int result;1270 struct videocodec_master *master_vfe = NULL;1271 struct videocodec_master *master_codec = NULL;1272 int card_num;1273 char *i2c_enc_name, *i2c_dec_name, *codec_name, *vfe_name;012741275- zoran_num = 0;1276- while (zoran_num < BUZ_MAX &&1277- (dev = pci_get_device(PCI_VENDOR_ID_ZORAN, PCI_DEVICE_ID_ZORAN_36057, dev)) != NULL) {1278- card_num = card[zoran_num];1279- zr = kzalloc(sizeof(struct zoran), GFP_KERNEL);1280- if (!zr) {1281- dprintk(1,1282- KERN_ERR1283- "%s: find_zr36057() - kzalloc failed\n",1284- ZORAN_NAME);1285- continue;1286- }1287- zr->pci_dev = dev;1288- //zr->zr36057_mem = NULL;1289- zr->id = zoran_num;1290- snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id);1291- spin_lock_init(&zr->spinlock);1292- mutex_init(&zr->resource_lock);1293- if (pci_enable_device(dev))1294- goto zr_free_mem;1295- zr->zr36057_adr = pci_resource_start(zr->pci_dev, 0);1296- pci_read_config_byte(zr->pci_dev, PCI_CLASS_REVISION,1297- &zr->revision);00000000000000000001298 if (zr->revision < 2) {1299 dprintk(1,1300- KERN_INFO1301- "%s: Zoran ZR36057 (rev %d) irq: %d, memory: 0x%08x.\n",1302- ZR_DEVNAME(zr), zr->revision, zr->pci_dev->irq,1303- zr->zr36057_adr);1304-1305- if (card_num == -1) {1306- dprintk(1,1307- KERN_ERR1308- "%s: find_zr36057() - no card specified, please use the card=X insmod option\n",1309- ZR_DEVNAME(zr));1310- goto zr_free_mem;1311- }1312- } else {1313- int i;1314- unsigned short ss_vendor, ss_device;1315-1316- ss_vendor = zr->pci_dev->subsystem_vendor;1317- ss_device = zr->pci_dev->subsystem_device;1318- dprintk(1,1319- KERN_INFO1320- "%s: Zoran ZR36067 (rev %d) irq: %d, memory: 0x%08x\n",1321- ZR_DEVNAME(zr), zr->revision, zr->pci_dev->irq,1322- zr->zr36057_adr);1323- dprintk(1,1324- KERN_INFO1325- "%s: subsystem vendor=0x%04x id=0x%04x\n",1326- ZR_DEVNAME(zr), ss_vendor, ss_device);1327- if (card_num == -1) {1328- dprintk(3,1329- KERN_DEBUG1330- "%s: find_zr36057() - trying to autodetect card type\n",1331- ZR_DEVNAME(zr));1332- for (i=0;i<NUM_CARDS;i++) {1333- if (ss_vendor == zoran_cards[i].vendor_id &&1334- ss_device == zoran_cards[i].device_id) {1335- dprintk(3,1336- KERN_DEBUG1337- "%s: find_zr36057() - card %s detected\n",1338- ZR_DEVNAME(zr),1339- zoran_cards[i].name);1340- card_num = i;1341- break;1342- }1343- }1344- if (i == NUM_CARDS) {1345- dprintk(1,1346- KERN_ERR1347- "%s: find_zr36057() - unknown card\n",1348- ZR_DEVNAME(zr));1349- goto zr_free_mem;1350- }1351- }1352- }1353-1354- if (card_num < 0 || card_num >= NUM_CARDS) {1355- dprintk(2,1356 KERN_ERR1357- "%s: find_zr36057() - invalid cardnum %d\n",1358- ZR_DEVNAME(zr), card_num);1359- goto zr_free_mem;1360- }1361-1362- /* even though we make this a non pointer and thus1363- * theoretically allow for making changes to this struct1364- * on a per-individual card basis at runtime, this is1365- * strongly discouraged. This structure is intended to1366- * keep general card information, no settings or anything */1367- zr->card = zoran_cards[card_num];1368- snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)),1369- "%s[%u]", zr->card.name, zr->id);1370-1371- zr->zr36057_mem = ioremap_nocache(zr->zr36057_adr, 0x1000);1372- if (!zr->zr36057_mem) {1373 dprintk(1,1374 KERN_ERR1375- "%s: find_zr36057() - ioremap failed\n",1376 ZR_DEVNAME(zr));1377 goto zr_free_mem;1378 }13791380- result = request_irq(zr->pci_dev->irq,1381- zoran_irq,1382- IRQF_SHARED | IRQF_DISABLED,1383- ZR_DEVNAME(zr),1384- (void *) zr);1385- if (result < 0) {1386- if (result == -EINVAL) {1387- dprintk(1,1388- KERN_ERR1389- "%s: find_zr36057() - bad irq number or handler\n",1390- ZR_DEVNAME(zr));1391- } else if (result == -EBUSY) {1392- dprintk(1,1393- KERN_ERR1394- "%s: find_zr36057() - IRQ %d busy, change your PnP config in BIOS\n",1395- ZR_DEVNAME(zr), zr->pci_dev->irq);1396- } else {1397- dprintk(1,1398- KERN_ERR1399- "%s: find_zr36057() - can't assign irq, error code %d\n",1400- ZR_DEVNAME(zr), result);1401- }1402- goto zr_unmap;1403- }1404-1405- /* set PCI latency timer */1406- pci_read_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,1407- &latency);1408- need_latency = zr->revision > 1 ? 32 : 48;1409- if (latency != need_latency) {1410- dprintk(2,1411- KERN_INFO1412- "%s: Changing PCI latency from %d to %d.\n",1413- ZR_DEVNAME(zr), latency, need_latency);1414- pci_write_config_byte(zr->pci_dev,1415- PCI_LATENCY_TIMER,1416- need_latency);1417- }1418-1419- zr36057_restart(zr);1420- /* i2c */1421- dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n",1422- ZR_DEVNAME(zr));1423-1424- /* i2c decoder */1425- if (decoder[zr->id] != -1) {1426- i2c_dec_name = i2cid_to_modulename(decoder[zr->id]);1427- zr->card.i2c_decoder = decoder[zr->id];1428- } else if (zr->card.i2c_decoder != 0) {1429- i2c_dec_name =1430- i2cid_to_modulename(zr->card.i2c_decoder);1431- } else {1432- i2c_dec_name = NULL;1433- }1434-1435- if (i2c_dec_name) {1436- if ((result = request_module(i2c_dec_name)) < 0) {1437- dprintk(1,1438- KERN_ERR1439- "%s: failed to load module %s: %d\n",1440- ZR_DEVNAME(zr), i2c_dec_name, result);1441- }1442- }1443-1444- /* i2c encoder */1445- if (encoder[zr->id] != -1) {1446- i2c_enc_name = i2cid_to_modulename(encoder[zr->id]);1447- zr->card.i2c_encoder = encoder[zr->id];1448- } else if (zr->card.i2c_encoder != 0) {1449- i2c_enc_name =1450- i2cid_to_modulename(zr->card.i2c_encoder);1451- } else {1452- i2c_enc_name = NULL;1453- }1454-1455- if (i2c_enc_name) {1456- if ((result = request_module(i2c_enc_name)) < 0) {1457- dprintk(1,1458- KERN_ERR1459- "%s: failed to load module %s: %d\n",1460- ZR_DEVNAME(zr), i2c_enc_name, result);1461- }1462- }1463-1464- if (zoran_register_i2c(zr) < 0) {1465 dprintk(1,1466 KERN_ERR1467- "%s: find_zr36057() - can't initialize i2c bus\n",1468 ZR_DEVNAME(zr));1469- goto zr_free_irq;1470 }0000000000000014710000000000000000000000000000000000000000000001472 dprintk(2,1473- KERN_INFO "%s: Initializing videocodec bus...\n",1474- ZR_DEVNAME(zr));000014751476- if (zr->card.video_codec != 0 &&1477- (codec_name =1478- codecid_to_modulename(zr->card.video_codec)) != NULL) {1479- if ((result = request_module(codec_name)) < 0) {00000000000000000000000000000000000000000000000000000000001480 dprintk(1,1481 KERN_ERR1482 "%s: failed to load modules %s: %d\n",1483 ZR_DEVNAME(zr), codec_name, result);1484 }1485 }1486- if (zr->card.video_vfe != 0 &&1487- (vfe_name =1488- codecid_to_modulename(zr->card.video_vfe)) != NULL) {1489- if ((result = request_module(vfe_name)) < 0) {001490 dprintk(1,1491 KERN_ERR1492 "%s: failed to load modules %s: %d\n",1493 ZR_DEVNAME(zr), vfe_name, result);1494 }1495 }1496-1497- /* reset JPEG codec */1498- jpeg_codec_sleep(zr, 1);1499- jpeg_codec_reset(zr);1500- /* video bus enabled */1501- /* display codec revision */1502- if (zr->card.video_codec != 0) {1503- master_codec = zoran_setup_videocodec(zr,1504- zr->card.video_codec);1505- if (!master_codec)1506- goto zr_unreg_i2c;1507- zr->codec = videocodec_attach(master_codec);1508- if (!zr->codec) {1509- dprintk(1,1510- KERN_ERR1511- "%s: find_zr36057() - no codec found\n",1512- ZR_DEVNAME(zr));1513- goto zr_free_codec;1514- }1515- if (zr->codec->type != zr->card.video_codec) {1516- dprintk(1,1517- KERN_ERR1518- "%s: find_zr36057() - wrong codec\n",1519- ZR_DEVNAME(zr));1520- goto zr_detach_codec;1521- }1522- }1523- if (zr->card.video_vfe != 0) {1524- master_vfe = zoran_setup_videocodec(zr,1525- zr->card.video_vfe);1526- if (!master_vfe)1527- goto zr_detach_codec;1528- zr->vfe = videocodec_attach(master_vfe);1529- if (!zr->vfe) {1530- dprintk(1,1531- KERN_ERR1532- "%s: find_zr36057() - no VFE found\n",1533- ZR_DEVNAME(zr));1534- goto zr_free_vfe;1535- }1536- if (zr->vfe->type != zr->card.video_vfe) {1537- dprintk(1,1538- KERN_ERR1539- "%s: find_zr36057() = wrong VFE\n",1540- ZR_DEVNAME(zr));1541- goto zr_detach_vfe;1542- }1543- }1544- /* Success so keep the pci_dev referenced */1545- pci_dev_get(zr->pci_dev);1546- zoran[zoran_num++] = zr;1547- continue;1548-1549- // Init errors1550- zr_detach_vfe:1551- videocodec_detach(zr->vfe);1552- zr_free_vfe:1553- kfree(master_vfe);1554- zr_detach_codec:1555- videocodec_detach(zr->codec);1556- zr_free_codec:1557- kfree(master_codec);1558- zr_unreg_i2c:1559- zoran_unregister_i2c(zr);1560- zr_free_irq:1561- btwrite(0, ZR36057_SPGPPCR);1562- free_irq(zr->pci_dev->irq, zr);1563- zr_unmap:1564- iounmap(zr->zr36057_mem);1565- zr_free_mem:1566- kfree(zr);1567- continue;1568 }1569- if (dev) /* Clean up ref count on early exit */1570- pci_dev_put(dev);15711572- if (zoran_num == 0) {1573- dprintk(1, KERN_INFO "No known MJPEG cards found.\n");00000000000000000000001574 }1575- return zoran_num;0000000000000000000000000000000000000000000000000000000001576}15771578-static int __init1579-init_dc10_cards (void)1580-{1581- int i;0015821583- memset(zoran, 0, sizeof(zoran));0001584 printk(KERN_INFO "Zoran MJPEG board driver version %d.%d.%d\n",1585 MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION);15861587- /* Look for cards */1588- if (find_zr36057() < 0) {1589- return -EIO;1590- }1591- if (zoran_num == 0)1592- return -ENODEV;1593- dprintk(1, KERN_INFO "%s: %d card(s) found\n", ZORAN_NAME,1594- zoran_num);1595 /* check the parameters we have been given, adjust if necessary */1596 if (v4l_nbufs < 2)1597 v4l_nbufs = 2;···1624 ZORAN_NAME);1625 }16261627- /* take care of Natoma chipset and a revision 1 zr36057 */1628- for (i = 0; i < zoran_num; i++) {1629- struct zoran *zr = zoran[i];1630-1631- if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) {1632- zr->jpg_buffers.need_contiguous = 1;1633- dprintk(1,1634- KERN_INFO1635- "%s: ZR36057/Natoma bug, max. buffer size is 128K\n",1636- ZR_DEVNAME(zr));1637- }1638-1639- if (zr36057_init(zr) < 0) {1640- for (i = 0; i < zoran_num; i++)1641- zoran_release(zoran[i]);1642- return -EIO;1643- }1644- zoran_proc_init(zr);1645 }16461647 return 0;1648}16491650-static void __exit1651-unload_dc10_cards (void)1652{1653- int i;1654-1655- for (i = 0; i < zoran_num; i++)1656- zoran_release(zoran[i]);1657}16581659-module_init(init_dc10_cards);1660-module_exit(unload_dc10_cards);
···6162extern const struct zoran_format zoran_formats[];6364+static int card[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };65module_param_array(card, int, NULL, 0444);66+MODULE_PARM_DESC(card, "Card type");6768+static int encoder[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };69module_param_array(encoder, int, NULL, 0444);70+MODULE_PARM_DESC(encoder, "Video encoder chip");7172+static int decoder[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };73module_param_array(decoder, int, NULL, 0444);74+MODULE_PARM_DESC(decoder, "Video decoder chip");7576/*77 The video mem address of the video card.···104MODULE_PARM_DESC(default_norm, "Default norm (0=PAL, 1=NTSC, 2=SECAM)");105106/* /dev/videoN, -1 for autodetect */107+static int video_nr[BUZ_MAX] = { [0 ... (BUZ_MAX-1)] = -1 };108module_param_array(video_nr, int, NULL, 0444);109+MODULE_PARM_DESC(video_nr, "Video device number (-1=Auto)");110111/*112 Number and size of grab buffers for Video 4 Linux···153MODULE_AUTHOR("Serguei Miridonov");154MODULE_LICENSE("GPL");155156+#define ZR_DEVICE(subven, subdev, data) { \157+ .vendor = PCI_VENDOR_ID_ZORAN, .device = PCI_DEVICE_ID_ZORAN_36057, \158+ .subvendor = (subven), .subdevice = (subdev), .driver_data = (data) }159160+static struct pci_device_id zr36067_pci_tbl[] = {161+ ZR_DEVICE(PCI_VENDOR_ID_MIRO, PCI_DEVICE_ID_MIRO_DC10PLUS, DC10plus),162+ ZR_DEVICE(PCI_VENDOR_ID_MIRO, PCI_DEVICE_ID_MIRO_DC30PLUS, DC30plus),163+ ZR_DEVICE(PCI_VENDOR_ID_ELECTRONICDESIGNGMBH, PCI_DEVICE_ID_LML_33R10, LML33R10),164+ ZR_DEVICE(PCI_VENDOR_ID_IOMEGA, PCI_DEVICE_ID_IOMEGA_BUZ, BUZ),165+ ZR_DEVICE(PCI_ANY_ID, PCI_ANY_ID, NUM_CARDS),166+ {0}167+};168+MODULE_DEVICE_TABLE(pci, zr36067_pci_tbl);169+170+static unsigned int zoran_num; /* number of cards found */171172/* videocodec bus functions ZR36060 */173static u32···472 }, {473 .type = DC10plus,474 .name = "DC10plus",00475 .i2c_decoder = I2C_DRIVERID_SAA7110,476 .i2c_encoder = I2C_DRIVERID_ADV7175,477 .video_codec = CODEC_TYPE_ZR36060,···531 }, {532 .type = DC30plus,533 .name = "DC30plus",00534 .i2c_decoder = I2C_DRIVERID_VPX3220,535 .i2c_encoder = I2C_DRIVERID_ADV7175,536 .video_codec = CODEC_TYPE_ZR36050,···589 }, {590 .type = LML33R10,591 .name = "LML33R10",00592 .i2c_decoder = I2C_DRIVERID_SAA7114,593 .i2c_encoder = I2C_DRIVERID_ADV7170,594 .video_codec = CODEC_TYPE_ZR36060,···618 }, {619 .type = BUZ,620 .name = "Buz",00621 .i2c_decoder = I2C_DRIVERID_SAA7111A,622 .i2c_encoder = I2C_DRIVERID_SAA7185B,623 .video_codec = CODEC_TYPE_ZR36060,···649 .name = "6-Eyes",650 /* AverMedia chose not to brand the 6-Eyes. Thus it651 can't be autodetected, and requires card=x. */00652 .i2c_decoder = I2C_DRIVERID_KS0127,653 .i2c_encoder = I2C_DRIVERID_BT866,654 .video_codec = CODEC_TYPE_ZR36060,···1138 strcpy(zr->video_dev->name, ZR_DEVNAME(zr));1139 err = video_register_device(zr->video_dev, VFL_TYPE_GRABBER, video_nr[zr->id]);1140 if (err < 0)1141+ goto exit_free;1142+ video_set_drvdata(zr->video_dev, zr);11431144 zoran_init_hardware(zr);1145 if (zr36067_debug > 2)···1153 zr->initialized = 1;1154 return 0;1155001156exit_free:1157 kfree(zr->stat_com);1158 kfree(zr->video_dev);1159 return err;1160}11611162+static void __devexit zoran_remove(struct pci_dev *pdev)01163{1164+ struct zoran *zr = pci_get_drvdata(pdev);1165+1166 if (!zr->initialized)1167 goto exit_free;1168+1169 /* unregister videocodec bus */1170 if (zr->codec) {1171 struct videocodec_master *master = zr->codec->master_data;···1194 pci_disable_device(zr->pci_dev);1195 video_unregister_device(zr->video_dev);1196exit_free:1197+ pci_set_drvdata(pdev, NULL);1198 kfree(zr);1199}1200···1256 * Scan for a Buz card (actually for the PCI controller ZR36057),1257 * request the irq and map the io memory1258 */1259+static int __devinit zoran_probe(struct pci_dev *pdev,1260+ const struct pci_device_id *ent)1261{1262 unsigned char latency, need_latency;1263 struct zoran *zr;01264 int result;1265 struct videocodec_master *master_vfe = NULL;1266 struct videocodec_master *master_codec = NULL;1267 int card_num;1268 char *i2c_enc_name, *i2c_dec_name, *codec_name, *vfe_name;1269+ unsigned int nr;12701271+1272+ nr = zoran_num++;1273+ if (nr >= BUZ_MAX) {1274+ dprintk(1,1275+ KERN_ERR1276+ "%s: driver limited to %d card(s) maximum\n",1277+ ZORAN_NAME, BUZ_MAX);1278+ return -ENOENT;1279+ }1280+1281+ zr = kzalloc(sizeof(struct zoran), GFP_KERNEL);1282+ if (!zr) {1283+ dprintk(1,1284+ KERN_ERR1285+ "%s: find_zr36057() - kzalloc failed\n",1286+ ZORAN_NAME);1287+ return -ENOMEM;1288+ }1289+ zr->pci_dev = pdev;1290+ zr->id = nr;1291+ snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)), "MJPEG[%u]", zr->id);1292+ spin_lock_init(&zr->spinlock);1293+ mutex_init(&zr->resource_lock);1294+ if (pci_enable_device(pdev))1295+ goto zr_free_mem;1296+ pci_read_config_byte(zr->pci_dev, PCI_CLASS_REVISION, &zr->revision);1297+1298+ dprintk(1,1299+ KERN_INFO1300+ "%s: Zoran ZR360%c7 (rev %d), irq: %d, memory: 0x%08llx\n",1301+ ZR_DEVNAME(zr), zr->revision < 2 ? '5' : '6', zr->revision,1302+ zr->pci_dev->irq, (uint64_t)pci_resource_start(zr->pci_dev, 0));1303+ if (zr->revision >= 2) {1304+ dprintk(1,1305+ KERN_INFO1306+ "%s: Subsystem vendor=0x%04x id=0x%04x\n",1307+ ZR_DEVNAME(zr), zr->pci_dev->subsystem_vendor,1308+ zr->pci_dev->subsystem_device);1309+ }1310+1311+ /* Use auto-detected card type? */1312+ if (card[nr] == -1) {1313 if (zr->revision < 2) {1314 dprintk(1,000000000000000000000000000000000000000000000000000000001315 KERN_ERR1316+ "%s: No card type specified, please use the card=X module parameter\n",1317+ ZR_DEVNAME(zr));000000000000001318 dprintk(1,1319 KERN_ERR1320+ "%s: It is not possible to auto-detect ZR36057 based cards\n",1321 ZR_DEVNAME(zr));1322 goto zr_free_mem;1323 }13241325+ card_num = ent->driver_data;1326+ if (card_num >= NUM_CARDS) {000000000000000000000000000000000000000000000000000000000000000000000000000000000001327 dprintk(1,1328 KERN_ERR1329+ "%s: Unknown card, try specifying card=X module parameter\n",1330 ZR_DEVNAME(zr));1331+ goto zr_free_mem;1332 }1333+ dprintk(3,1334+ KERN_DEBUG1335+ "%s: %s() - card %s detected\n",1336+ ZR_DEVNAME(zr), __func__, zoran_cards[card_num].name);1337+ } else {1338+ card_num = card[nr];1339+ if (card_num >= NUM_CARDS || card_num < 0) {1340+ dprintk(1,1341+ KERN_ERR1342+ "%s: User specified card type %d out of range (0 .. %d)\n",1343+ ZR_DEVNAME(zr), card_num, NUM_CARDS - 1);1344+ goto zr_free_mem;1345+ }1346+ }13471348+ /* even though we make this a non pointer and thus1349+ * theoretically allow for making changes to this struct1350+ * on a per-individual card basis at runtime, this is1351+ * strongly discouraged. This structure is intended to1352+ * keep general card information, no settings or anything */1353+ zr->card = zoran_cards[card_num];1354+ snprintf(ZR_DEVNAME(zr), sizeof(ZR_DEVNAME(zr)),1355+ "%s[%u]", zr->card.name, zr->id);1356+1357+ zr->zr36057_mem = pci_ioremap_bar(zr->pci_dev, 0);1358+ if (!zr->zr36057_mem) {1359+ dprintk(1,1360+ KERN_ERR1361+ "%s: %s() - ioremap failed\n",1362+ ZR_DEVNAME(zr), __func__);1363+ goto zr_free_mem;1364+ }1365+1366+ result = request_irq(zr->pci_dev->irq, zoran_irq,1367+ IRQF_SHARED | IRQF_DISABLED, ZR_DEVNAME(zr), zr);1368+ if (result < 0) {1369+ if (result == -EINVAL) {1370+ dprintk(1,1371+ KERN_ERR1372+ "%s: find_zr36057() - bad irq number or handler\n",1373+ ZR_DEVNAME(zr));1374+ } else if (result == -EBUSY) {1375+ dprintk(1,1376+ KERN_ERR1377+ "%s: find_zr36057() - IRQ %d busy, change your PnP config in BIOS\n",1378+ ZR_DEVNAME(zr), zr->pci_dev->irq);1379+ } else {1380+ dprintk(1,1381+ KERN_ERR1382+ "%s: find_zr36057() - can't assign irq, error code %d\n",1383+ ZR_DEVNAME(zr), result);1384+ }1385+ goto zr_unmap;1386+ }1387+1388+ /* set PCI latency timer */1389+ pci_read_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,1390+ &latency);1391+ need_latency = zr->revision > 1 ? 32 : 48;1392+ if (latency != need_latency) {1393 dprintk(2,1394+ KERN_INFO1395+ "%s: Changing PCI latency from %d to %d\n",1396+ ZR_DEVNAME(zr), latency, need_latency);1397+ pci_write_config_byte(zr->pci_dev, PCI_LATENCY_TIMER,1398+ need_latency);1399+ }14001401+ zr36057_restart(zr);1402+ /* i2c */1403+ dprintk(2, KERN_INFO "%s: Initializing i2c bus...\n",1404+ ZR_DEVNAME(zr));1405+1406+ /* i2c decoder */1407+ if (decoder[zr->id] != -1) {1408+ i2c_dec_name = i2cid_to_modulename(decoder[zr->id]);1409+ zr->card.i2c_decoder = decoder[zr->id];1410+ } else if (zr->card.i2c_decoder != 0) {1411+ i2c_dec_name = i2cid_to_modulename(zr->card.i2c_decoder);1412+ } else {1413+ i2c_dec_name = NULL;1414+ }1415+1416+ if (i2c_dec_name) {1417+ result = request_module(i2c_dec_name);1418+ if (result < 0) {1419+ dprintk(1,1420+ KERN_ERR1421+ "%s: failed to load module %s: %d\n",1422+ ZR_DEVNAME(zr), i2c_dec_name, result);1423+ }1424+ }1425+1426+ /* i2c encoder */1427+ if (encoder[zr->id] != -1) {1428+ i2c_enc_name = i2cid_to_modulename(encoder[zr->id]);1429+ zr->card.i2c_encoder = encoder[zr->id];1430+ } else if (zr->card.i2c_encoder != 0) {1431+ i2c_enc_name = i2cid_to_modulename(zr->card.i2c_encoder);1432+ } else {1433+ i2c_enc_name = NULL;1434+ }1435+1436+ if (i2c_enc_name) {1437+ result = request_module(i2c_enc_name);1438+ if (result < 0) {1439+ dprintk(1,1440+ KERN_ERR1441+ "%s: failed to load module %s: %d\n",1442+ ZR_DEVNAME(zr), i2c_enc_name, result);1443+ }1444+ }1445+1446+ if (zoran_register_i2c(zr) < 0) {1447+ dprintk(1,1448+ KERN_ERR1449+ "%s: find_zr36057() - can't initialize i2c bus\n",1450+ ZR_DEVNAME(zr));1451+ goto zr_free_irq;1452+ }1453+1454+ dprintk(2,1455+ KERN_INFO "%s: Initializing videocodec bus...\n",1456+ ZR_DEVNAME(zr));1457+1458+ if (zr->card.video_codec) {1459+ codec_name = codecid_to_modulename(zr->card.video_codec);1460+ if (codec_name) {1461+ result = request_module(codec_name);1462+ if (result) {1463 dprintk(1,1464 KERN_ERR1465 "%s: failed to load modules %s: %d\n",1466 ZR_DEVNAME(zr), codec_name, result);1467 }1468 }1469+ }1470+ if (zr->card.video_vfe) {1471+ vfe_name = codecid_to_modulename(zr->card.video_vfe);1472+ if (vfe_name) {1473+ result = request_module(vfe_name);1474+ if (result < 0) {1475 dprintk(1,1476 KERN_ERR1477 "%s: failed to load modules %s: %d\n",1478 ZR_DEVNAME(zr), vfe_name, result);1479 }1480 }0000000000000000000000000000000000000000000000000000000000000000000000001481 }0014821483+ /* reset JPEG codec */1484+ jpeg_codec_sleep(zr, 1);1485+ jpeg_codec_reset(zr);1486+ /* video bus enabled */1487+ /* display codec revision */1488+ if (zr->card.video_codec != 0) {1489+ master_codec = zoran_setup_videocodec(zr, zr->card.video_codec);1490+ if (!master_codec)1491+ goto zr_unreg_i2c;1492+ zr->codec = videocodec_attach(master_codec);1493+ if (!zr->codec) {1494+ dprintk(1,1495+ KERN_ERR1496+ "%s: find_zr36057() - no codec found\n",1497+ ZR_DEVNAME(zr));1498+ goto zr_free_codec;1499+ }1500+ if (zr->codec->type != zr->card.video_codec) {1501+ dprintk(1,1502+ KERN_ERR1503+ "%s: find_zr36057() - wrong codec\n",1504+ ZR_DEVNAME(zr));1505+ goto zr_detach_codec;1506+ }1507 }1508+ if (zr->card.video_vfe != 0) {1509+ master_vfe = zoran_setup_videocodec(zr, zr->card.video_vfe);1510+ if (!master_vfe)1511+ goto zr_detach_codec;1512+ zr->vfe = videocodec_attach(master_vfe);1513+ if (!zr->vfe) {1514+ dprintk(1,1515+ KERN_ERR1516+ "%s: find_zr36057() - no VFE found\n",1517+ ZR_DEVNAME(zr));1518+ goto zr_free_vfe;1519+ }1520+ if (zr->vfe->type != zr->card.video_vfe) {1521+ dprintk(1,1522+ KERN_ERR1523+ "%s: find_zr36057() = wrong VFE\n",1524+ ZR_DEVNAME(zr));1525+ goto zr_detach_vfe;1526+ }1527+ }1528+1529+ /* take care of Natoma chipset and a revision 1 zr36057 */1530+ if ((pci_pci_problems & PCIPCI_NATOMA) && zr->revision <= 1) {1531+ zr->jpg_buffers.need_contiguous = 1;1532+ dprintk(1,1533+ KERN_INFO1534+ "%s: ZR36057/Natoma bug, max. buffer size is 128K\n",1535+ ZR_DEVNAME(zr));1536+ }1537+1538+ if (zr36057_init(zr) < 0)1539+ goto zr_detach_vfe;1540+1541+ zoran_proc_init(zr);1542+1543+ pci_set_drvdata(pdev, zr);1544+1545+ return 0;1546+1547+zr_detach_vfe:1548+ videocodec_detach(zr->vfe);1549+zr_free_vfe:1550+ kfree(master_vfe);1551+zr_detach_codec:1552+ videocodec_detach(zr->codec);1553+zr_free_codec:1554+ kfree(master_codec);1555+zr_unreg_i2c:1556+ zoran_unregister_i2c(zr);1557+zr_free_irq:1558+ btwrite(0, ZR36057_SPGPPCR);1559+ free_irq(zr->pci_dev->irq, zr);1560+zr_unmap:1561+ iounmap(zr->zr36057_mem);1562+zr_free_mem:1563+ kfree(zr);1564+1565+ return -ENODEV;1566}15671568+static struct pci_driver zoran_driver = {1569+ .name = "zr36067",1570+ .id_table = zr36067_pci_tbl,1571+ .probe = zoran_probe,1572+ .remove = zoran_remove,1573+};15741575+static int __init zoran_init(void)1576+{1577+ int res;1578+1579 printk(KERN_INFO "Zoran MJPEG board driver version %d.%d.%d\n",1580 MAJOR_VERSION, MINOR_VERSION, RELEASE_VERSION);1581000000001582 /* check the parameters we have been given, adjust if necessary */1583 if (v4l_nbufs < 2)1584 v4l_nbufs = 2;···1629 ZORAN_NAME);1630 }16311632+ res = pci_register_driver(&zoran_driver);1633+ if (res) {1634+ dprintk(1,1635+ KERN_ERR1636+ "%s: Unable to register ZR36057 driver\n",1637+ ZORAN_NAME);1638+ return res;000000000001639 }16401641 return 0;1642}16431644+static void __exit zoran_exit(void)01645{1646+ pci_unregister_driver(&zoran_driver);0001647}16481649+module_init(zoran_init);1650+module_exit(zoran_exit);
-2
drivers/media/video/zoran/zoran_card.h
···4041/* Anybody who uses more than four? */42#define BUZ_MAX 443-extern int zoran_num;44-extern struct zoran *zoran[BUZ_MAX];4546extern struct video_device zoran_template;47
···4041/* Anybody who uses more than four? */42#define BUZ_MAX 4004344extern struct video_device zoran_template;45
+35-70
drivers/media/video/zoran/zoran_driver.c
···1196 * Open a zoran card. Right now the flags stuff is just playing1197 */11981199-static int1200-zoran_open(struct file *file)1201{1202- unsigned int minor = video_devdata(file)->minor;1203- struct zoran *zr = NULL;1204 struct zoran_fh *fh;1205- int i, res, first_open = 0, have_module_locks = 0;00012061207 lock_kernel();1208- /* find the device */1209- for (i = 0; i < zoran_num; i++) {1210- if (zoran[i]->video_dev->minor == minor) {1211- zr = zoran[i];1212- break;1213- }1214- }1215-1216- if (!zr) {1217- dprintk(1, KERN_ERR "%s: device not found!\n", ZORAN_NAME);1218- res = -ENODEV;1219- goto open_unlock_and_return;1220- }12211222 /* see fs/device.c - the kernel already locks during open(),1223 * so locking ourselves only causes deadlocks */1224 /*mutex_lock(&zr->resource_lock);*/000000012251226 if (!zr->decoder) {1227 dprintk(1,1228 KERN_ERR "%s: no TV decoder loaded for device!\n",1229 ZR_DEVNAME(zr));1230 res = -EIO;1231- goto open_unlock_and_return;1232 }12331234- /* try to grab a module lock */1235- if (!try_module_get(THIS_MODULE)) {1236- dprintk(1,1237- KERN_ERR1238- "%s: failed to acquire my own lock! PANIC!\n",1239- ZR_DEVNAME(zr));1240- res = -ENODEV;1241- goto open_unlock_and_return;1242- }1243 if (!try_module_get(zr->decoder->driver->driver.owner)) {1244 dprintk(1,1245 KERN_ERR1246- "%s: failed to grab ownership of i2c decoder\n",1247 ZR_DEVNAME(zr));1248 res = -EIO;1249- module_put(THIS_MODULE);1250- goto open_unlock_and_return;1251 }1252 if (zr->encoder &&1253 !try_module_get(zr->encoder->driver->driver.owner)) {1254 dprintk(1,1255 KERN_ERR1256- "%s: failed to grab ownership of i2c encoder\n",1257 ZR_DEVNAME(zr));1258 res = -EIO;1259- module_put(zr->decoder->driver->driver.owner);1260- module_put(THIS_MODULE);1261- goto open_unlock_and_return;1262 }1263-1264- have_module_locks = 1;1265-1266- if (zr->user >= 2048) {1267- dprintk(1, KERN_ERR "%s: too many users (%d) on device\n",1268- ZR_DEVNAME(zr), zr->user);1269- res = -EBUSY;1270- goto open_unlock_and_return;1271- }1272-1273- dprintk(1, KERN_INFO "%s: zoran_open(%s, pid=[%d]), users(-)=%d\n",1274- ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user);12751276 /* now, create the open()-specific file_ops struct */1277 fh = kzalloc(sizeof(struct zoran_fh), GFP_KERNEL);···1252 "%s: zoran_open() - allocation of zoran_fh failed\n",1253 ZR_DEVNAME(zr));1254 res = -ENOMEM;1255- goto open_unlock_and_return;1256 }1257 /* used to be BUZ_MAX_WIDTH/HEIGHT, but that gives overflows1258 * on norm-change! */···1263 KERN_ERR1264 "%s: zoran_open() - allocation of overlay_mask failed\n",1265 ZR_DEVNAME(zr));1266- kfree(fh);1267 res = -ENOMEM;1268- goto open_unlock_and_return;1269 }12701271 if (zr->user++ == 0)···12891290 return 0;12911292-open_unlock_and_return:1293- /* if we grabbed locks, release them accordingly */1294- if (have_module_locks) {1295- module_put(zr->decoder->driver->driver.owner);1296- if (zr->encoder) {1297- module_put(zr->encoder->driver->driver.owner);1298- }1299- module_put(THIS_MODULE);1300- }1301-1302- /* if there's no device found, we didn't obtain the lock either */1303- if (zr) {1304- /*mutex_unlock(&zr->resource_lock);*/1305- }1306 unlock_kernel();00013071308 return res;1309}···1311 struct zoran_fh *fh = file->private_data;1312 struct zoran *zr = fh->zr;13131314- dprintk(1, KERN_INFO "%s: zoran_close(%s, pid=[%d]), users(+)=%d\n",1315- ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user);13161317 /* kernel locks (fs/device.c), so don't do that ourselves1318 * (prevents deadlocks) */···13581359 /* release locks on the i2c modules */1360 module_put(zr->decoder->driver->driver.owner);1361- if (zr->encoder) {1362- module_put(zr->encoder->driver->driver.owner);1363- }1364- module_put(THIS_MODULE);13651366 /*mutex_unlock(&zr->resource_lock);*/1367
···1196 * Open a zoran card. Right now the flags stuff is just playing1197 */11981199+static int zoran_open(struct file *file)01200{1201+ struct zoran *zr = video_drvdata(file);01202 struct zoran_fh *fh;1203+ int res, first_open = 0;1204+1205+ dprintk(2, KERN_INFO "%s: zoran_open(%s, pid=[%d]), users(-)=%d\n",1206+ ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user + 1);12071208 lock_kernel();000000000000012091210 /* see fs/device.c - the kernel already locks during open(),1211 * so locking ourselves only causes deadlocks */1212 /*mutex_lock(&zr->resource_lock);*/1213+1214+ if (zr->user >= 2048) {1215+ dprintk(1, KERN_ERR "%s: too many users (%d) on device\n",1216+ ZR_DEVNAME(zr), zr->user);1217+ res = -EBUSY;1218+ goto fail_unlock;1219+ }12201221 if (!zr->decoder) {1222 dprintk(1,1223 KERN_ERR "%s: no TV decoder loaded for device!\n",1224 ZR_DEVNAME(zr));1225 res = -EIO;1226+ goto fail_unlock;1227 }12280000000001229 if (!try_module_get(zr->decoder->driver->driver.owner)) {1230 dprintk(1,1231 KERN_ERR1232+ "%s: failed to grab ownership of video decoder\n",1233 ZR_DEVNAME(zr));1234 res = -EIO;1235+ goto fail_unlock;01236 }1237 if (zr->encoder &&1238 !try_module_get(zr->encoder->driver->driver.owner)) {1239 dprintk(1,1240 KERN_ERR1241+ "%s: failed to grab ownership of video encoder\n",1242 ZR_DEVNAME(zr));1243 res = -EIO;1244+ goto fail_decoder;001245 }00000000000012461247 /* now, create the open()-specific file_ops struct */1248 fh = kzalloc(sizeof(struct zoran_fh), GFP_KERNEL);···1281 "%s: zoran_open() - allocation of zoran_fh failed\n",1282 ZR_DEVNAME(zr));1283 res = -ENOMEM;1284+ goto fail_encoder;1285 }1286 /* used to be BUZ_MAX_WIDTH/HEIGHT, but that gives overflows1287 * on norm-change! */···1292 KERN_ERR1293 "%s: zoran_open() - allocation of overlay_mask failed\n",1294 ZR_DEVNAME(zr));01295 res = -ENOMEM;1296+ goto fail_fh;1297 }12981299 if (zr->user++ == 0)···13191320 return 0;13211322+fail_fh:1323+ kfree(fh);1324+fail_encoder:1325+ if (zr->encoder)1326+ module_put(zr->encoder->driver->driver.owner);1327+fail_decoder:1328+ module_put(zr->decoder->driver->driver.owner);1329+fail_unlock:0000001330 unlock_kernel();1331+1332+ dprintk(2, KERN_INFO "%s: open failed (%d), users(-)=%d\n",1333+ ZR_DEVNAME(zr), res, zr->user);13341335 return res;1336}···1344 struct zoran_fh *fh = file->private_data;1345 struct zoran *zr = fh->zr;13461347+ dprintk(2, KERN_INFO "%s: zoran_close(%s, pid=[%d]), users(+)=%d\n",1348+ ZR_DEVNAME(zr), current->comm, task_pid_nr(current), zr->user - 1);13491350 /* kernel locks (fs/device.c), so don't do that ourselves1351 * (prevents deadlocks) */···13911392 /* release locks on the i2c modules */1393 module_put(zr->decoder->driver->driver.owner);1394+ if (zr->encoder)1395+ module_put(zr->encoder->driver->driver.owner);0013961397 /*mutex_unlock(&zr->resource_lock);*/1398
+10
drivers/mmc/host/Kconfig
···145146 If unsure, say N.1470000000000148config MMC_TIFM_SD149 tristate "TI Flash Media MMC/SD Interface support (EXPERIMENTAL)"150 depends on EXPERIMENTAL && PCI
···145146 If unsure, say N.147148+config MMC_MXC149+ tristate "Freescale i.MX2/3 Multimedia Card Interface support"150+ depends on ARCH_MXC151+ help152+ This selects the Freescale i.MX2/3 Multimedia card Interface.153+ If you have a i.MX platform with a Multimedia Card slot,154+ say Y or M here.155+156+ If unsure, say N.157+158config MMC_TIFM_SD159 tristate "TI Flash Media MMC/SD Interface support (EXPERIMENTAL)"160 depends on EXPERIMENTAL && PCI
···3132char e1000_driver_name[] = "e1000";33static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";34-#define DRV_VERSION "7.3.20-k3-NAPI"35const char e1000_driver_version[] = DRV_VERSION;36static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";37···3712 struct e1000_hw *hw = &adapter->hw;3713 u32 rctl, icr = er32(ICR);37143715- if (unlikely(!icr))3716 return IRQ_NONE; /* Not our interrupt */37173718 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
···3132char e1000_driver_name[] = "e1000";33static char e1000_driver_string[] = "Intel(R) PRO/1000 Network Driver";34+#define DRV_VERSION "7.3.21-k3-NAPI"35const char e1000_driver_version[] = DRV_VERSION;36static const char e1000_copyright[] = "Copyright (c) 1999-2006 Intel Corporation.";37···3712 struct e1000_hw *hw = &adapter->hw;3713 u32 rctl, icr = er32(ICR);37143715+ if (unlikely((!icr) || test_bit(__E1000_RESETTING, &adapter->flags)))3716 return IRQ_NONE; /* Not our interrupt */37173718 /* IMS will not auto-mask if INT_ASSERTED is not set, and if it is
+2
drivers/net/gianfar_mii.c
···234 if (NULL == new_bus)235 return -ENOMEM;23600237 new_bus->name = "Gianfar MII Bus",238 new_bus->read = &gfar_mdio_read,239 new_bus->write = &gfar_mdio_write,
···234 if (NULL == new_bus)235 return -ENOMEM;236237+ device_init_wakeup(&ofdev->dev, 1);238+239 new_bus->name = "Gianfar MII Bus",240 new_bus->read = &gfar_mdio_read,241 new_bus->write = &gfar_mdio_write,
+9-2
drivers/net/igb/e1000_82575.c
···699700 /* SGMII link check is done through the PCS register. */701 if ((hw->phy.media_type != e1000_media_type_copper) ||702- (igb_sgmii_active_82575(hw)))703 ret_val = igb_get_pcs_speed_and_duplex_82575(hw, &speed,704 &duplex);705- else000000706 ret_val = igb_check_for_copper_link(hw);0707708 return ret_val;709}
···699700 /* SGMII link check is done through the PCS register. */701 if ((hw->phy.media_type != e1000_media_type_copper) ||702+ (igb_sgmii_active_82575(hw))) {703 ret_val = igb_get_pcs_speed_and_duplex_82575(hw, &speed,704 &duplex);705+ /*706+ * Use this flag to determine if link needs to be checked or707+ * not. If we have link clear the flag so that we do not708+ * continue to check for link.709+ */710+ hw->mac.get_link_status = !hw->mac.serdes_has_link;711+ } else {712 ret_val = igb_check_for_copper_link(hw);713+ }714715 return ret_val;716}
···676 rc = efx->phy_op->init(efx);677 if (rc)678 return rc;679- efx->phy_op->reconfigure(efx);680-681 mutex_lock(&efx->mac_lock);0682 rc = falcon_switch_mac(efx);683 mutex_unlock(&efx->mac_lock);684 if (rc)···685 efx->mac_op->reconfigure(efx);686687 efx->port_initialized = true;688- efx->stats_enabled = true;689 return 0;690691fail:···734 if (!efx->port_initialized)735 return;7360737 efx->phy_op->fini(efx);738 efx->port_initialized = false;739···1361 return 0;1362}1363000000000000001364/* Context: process, dev_base_lock or RTNL held, non-blocking. */1365static struct net_device_stats *efx_net_stats(struct net_device *net_dev)1366{···1383 struct net_device_stats *stats = &net_dev->stats;13841385 /* Update stats if possible, but do not wait if another thread1386- * is updating them (or resetting the NIC); slightly stale1387- * stats are acceptable.1388 */1389 if (!spin_trylock(&efx->stats_lock))1390 return stats;1391- if (efx->stats_enabled) {1392 efx->mac_op->update_stats(efx);1393 falcon_update_nic_stats(efx);1394 }···16361637/* Tears down the entire software state and most of the hardware state1638 * before reset. */1639-void efx_reset_down(struct efx_nic *efx, struct ethtool_cmd *ecmd)01640{1641 EFX_ASSERT_RESET_SERIALISED(efx);16421643- /* The net_dev->get_stats handler is quite slow, and will fail1644- * if a fetch is pending over reset. Serialise against it. */1645- spin_lock(&efx->stats_lock);1646- efx->stats_enabled = false;1647- spin_unlock(&efx->stats_lock);1648-1649 efx_stop_all(efx);1650 mutex_lock(&efx->mac_lock);1651 mutex_lock(&efx->spi_lock);···1649 efx->phy_op->get_settings(efx, ecmd);16501651 efx_fini_channels(efx);001652}16531654/* This function will always ensure that the locks acquired in···1658 * that we were unable to reinitialise the hardware, and the1659 * driver should be disabled. If ok is false, then the rx and tx1660 * engines are not restarted, pending a RESET_DISABLE. */1661-int efx_reset_up(struct efx_nic *efx, struct ethtool_cmd *ecmd, bool ok)01662{1663 int rc;1664···1669 if (rc) {1670 EFX_ERR(efx, "failed to initialise NIC\n");1671 ok = false;0000000001672 }16731674 if (ok) {···16921693 if (ok) {1694 efx_start_all(efx);1695- efx->stats_enabled = true;1696 }1697 return rc;1698}···17241725 EFX_INFO(efx, "resetting (%d)\n", method);17261727- efx_reset_down(efx, &ecmd);17281729 rc = falcon_reset_hw(efx, method);1730 if (rc) {···17431744 /* Leave device stopped if necessary */1745 if (method == RESET_TYPE_DISABLE) {1746- efx_reset_up(efx, &ecmd, false);1747 rc = -EIO;1748 } else {1749- rc = efx_reset_up(efx, &ecmd, true);1750 }17511752out_disable:···1898 efx->rx_checksum_enabled = true;1899 spin_lock_init(&efx->netif_stop_lock);1900 spin_lock_init(&efx->stats_lock);01901 mutex_init(&efx->mac_lock);1902 efx->mac_op = &efx_dummy_mac_operations;1903 efx->phy_op = &efx_dummy_phy_operations;
···676 rc = efx->phy_op->init(efx);677 if (rc)678 return rc;00679 mutex_lock(&efx->mac_lock);680+ efx->phy_op->reconfigure(efx);681 rc = falcon_switch_mac(efx);682 mutex_unlock(&efx->mac_lock);683 if (rc)···686 efx->mac_op->reconfigure(efx);687688 efx->port_initialized = true;689+ efx_stats_enable(efx);690 return 0;691692fail:···735 if (!efx->port_initialized)736 return;737738+ efx_stats_disable(efx);739 efx->phy_op->fini(efx);740 efx->port_initialized = false;741···1361 return 0;1362}13631364+void efx_stats_disable(struct efx_nic *efx)1365+{1366+ spin_lock(&efx->stats_lock);1367+ ++efx->stats_disable_count;1368+ spin_unlock(&efx->stats_lock);1369+}1370+1371+void efx_stats_enable(struct efx_nic *efx)1372+{1373+ spin_lock(&efx->stats_lock);1374+ --efx->stats_disable_count;1375+ spin_unlock(&efx->stats_lock);1376+}1377+1378/* Context: process, dev_base_lock or RTNL held, non-blocking. */1379static struct net_device_stats *efx_net_stats(struct net_device *net_dev)1380{···1369 struct net_device_stats *stats = &net_dev->stats;13701371 /* Update stats if possible, but do not wait if another thread1372+ * is updating them or if MAC stats fetches are temporarily1373+ * disabled; slightly stale stats are acceptable.1374 */1375 if (!spin_trylock(&efx->stats_lock))1376 return stats;1377+ if (!efx->stats_disable_count) {1378 efx->mac_op->update_stats(efx);1379 falcon_update_nic_stats(efx);1380 }···16221623/* Tears down the entire software state and most of the hardware state1624 * before reset. */1625+void efx_reset_down(struct efx_nic *efx, enum reset_type method,1626+ struct ethtool_cmd *ecmd)1627{1628 EFX_ASSERT_RESET_SERIALISED(efx);16291630+ efx_stats_disable(efx);000001631 efx_stop_all(efx);1632 mutex_lock(&efx->mac_lock);1633 mutex_lock(&efx->spi_lock);···1639 efx->phy_op->get_settings(efx, ecmd);16401641 efx_fini_channels(efx);1642+ if (efx->port_initialized && method != RESET_TYPE_INVISIBLE)1643+ efx->phy_op->fini(efx);1644}16451646/* This function will always ensure that the locks acquired in···1646 * that we were unable to reinitialise the hardware, and the1647 * driver should be disabled. If ok is false, then the rx and tx1648 * engines are not restarted, pending a RESET_DISABLE. */1649+int efx_reset_up(struct efx_nic *efx, enum reset_type method,1650+ struct ethtool_cmd *ecmd, bool ok)1651{1652 int rc;1653···1656 if (rc) {1657 EFX_ERR(efx, "failed to initialise NIC\n");1658 ok = false;1659+ }1660+1661+ if (efx->port_initialized && method != RESET_TYPE_INVISIBLE) {1662+ if (ok) {1663+ rc = efx->phy_op->init(efx);1664+ if (rc)1665+ ok = false;1666+ } else1667+ efx->port_initialized = false;1668 }16691670 if (ok) {···16701671 if (ok) {1672 efx_start_all(efx);1673+ efx_stats_enable(efx);1674 }1675 return rc;1676}···17021703 EFX_INFO(efx, "resetting (%d)\n", method);17041705+ efx_reset_down(efx, method, &ecmd);17061707 rc = falcon_reset_hw(efx, method);1708 if (rc) {···17211722 /* Leave device stopped if necessary */1723 if (method == RESET_TYPE_DISABLE) {1724+ efx_reset_up(efx, method, &ecmd, false);1725 rc = -EIO;1726 } else {1727+ rc = efx_reset_up(efx, method, &ecmd, true);1728 }17291730out_disable:···1876 efx->rx_checksum_enabled = true;1877 spin_lock_init(&efx->netif_stop_lock);1878 spin_lock_init(&efx->stats_lock);1879+ efx->stats_disable_count = 1;1880 mutex_init(&efx->mac_lock);1881 efx->mac_op = &efx_dummy_mac_operations;1882 efx->phy_op = &efx_dummy_phy_operations;
···219 struct efx_nic *efx = netdev_priv(net_dev);220 int rc;221222- if (EFX_WORKAROUND_13963(efx) && !ecmd->autoneg)223- return -EINVAL;224-225 /* Falcon GMAC does not support 1000Mbps HD */226 if (ecmd->speed == SPEED_1000 && ecmd->duplex != DUPLEX_FULL) {227 EFX_LOG(efx, "rejecting unsupported 1000Mbps HD"
···219 struct efx_nic *efx = netdev_priv(net_dev);220 int rc;221000222 /* Falcon GMAC does not support 1000Mbps HD */223 if (ecmd->speed == SPEED_1000 && ecmd->duplex != DUPLEX_FULL) {224 EFX_LOG(efx, "rejecting unsupported 1000Mbps HD"
+18-14
drivers/net/sfc/falcon.c
···824 rx_ev_pause_frm ? " [PAUSE]" : "");825 }826#endif827-828- if (unlikely(rx_ev_eth_crc_err && EFX_WORKAROUND_10750(efx) &&829- efx->phy_type == PHY_TYPE_SFX7101))830- tenxpress_crc_err(efx);831}832833/* Handle receive events that are not in-order. */···18831884 /* MAC stats will fail whilst the TX fifo is draining. Serialise1885 * the drain sequence with the statistics fetch */1886- spin_lock(&efx->stats_lock);18871888 falcon_read(efx, ®, MAC0_CTRL_REG_KER);1889 EFX_SET_OWORD_FIELD(reg, TXFIFO_DRAIN_EN_B0, 1);···1913 udelay(10);1914 }19151916- spin_unlock(&efx->stats_lock);19171918 /* If we've reset the EM block and the link is up, then1919 * we'll have to kick the XAUI link so the PHY can recover */···2273 struct efx_mac_operations *old_mac_op = efx->mac_op;2274 efx_oword_t nic_stat;2275 unsigned strap_val;000022762277 /* Internal loopbacks override the phy speed setting */2278 if (efx->loopback_mode == LOOPBACK_GMAC) {···2287 efx->link_fd = true;2288 }228902290 efx->mac_op = (EFX_IS10G(efx) ?2291 &falcon_xmac_operations : &falcon_gmac_operations);2292- if (old_mac_op == efx->mac_op)2293- return 0;22942295- WARN_ON(!mutex_is_locked(&efx->mac_lock));2296-2297- /* Not all macs support a mac-level link state */2298- efx->mac_up = true;2299-2300 falcon_read(efx, &nic_stat, NIC_STAT_REG);2301 strap_val = EFX_IS10G(efx) ? 5 : 3;2302 if (falcon_rev(efx) >= FALCON_REV_B0) {···2305 BUG_ON(EFX_OWORD_FIELD(nic_stat, STRAP_PINS) != strap_val);2306 }23070023082309 EFX_LOG(efx, "selected %cMAC\n", EFX_IS10G(efx) ? 'X' : 'G');2310- return falcon_reset_macs(efx);0000002311}23122313/* This call is responsible for hooking in the MAC and PHY operations */
···824 rx_ev_pause_frm ? " [PAUSE]" : "");825 }826#endif0000827}828829/* Handle receive events that are not in-order. */···18871888 /* MAC stats will fail whilst the TX fifo is draining. Serialise1889 * the drain sequence with the statistics fetch */1890+ efx_stats_disable(efx);18911892 falcon_read(efx, ®, MAC0_CTRL_REG_KER);1893 EFX_SET_OWORD_FIELD(reg, TXFIFO_DRAIN_EN_B0, 1);···1917 udelay(10);1918 }19191920+ efx_stats_enable(efx);19211922 /* If we've reset the EM block and the link is up, then1923 * we'll have to kick the XAUI link so the PHY can recover */···2277 struct efx_mac_operations *old_mac_op = efx->mac_op;2278 efx_oword_t nic_stat;2279 unsigned strap_val;2280+ int rc = 0;2281+2282+ /* Don't try to fetch MAC stats while we're switching MACs */2283+ efx_stats_disable(efx);22842285 /* Internal loopbacks override the phy speed setting */2286 if (efx->loopback_mode == LOOPBACK_GMAC) {···2287 efx->link_fd = true;2288 }22892290+ WARN_ON(!mutex_is_locked(&efx->mac_lock));2291 efx->mac_op = (EFX_IS10G(efx) ?2292 &falcon_xmac_operations : &falcon_gmac_operations);0022932294+ /* Always push the NIC_STAT_REG setting even if the mac hasn't2295+ * changed, because this function is run post online reset */0002296 falcon_read(efx, &nic_stat, NIC_STAT_REG);2297 strap_val = EFX_IS10G(efx) ? 5 : 3;2298 if (falcon_rev(efx) >= FALCON_REV_B0) {···2309 BUG_ON(EFX_OWORD_FIELD(nic_stat, STRAP_PINS) != strap_val);2310 }23112312+ if (old_mac_op == efx->mac_op)2313+ goto out;23142315 EFX_LOG(efx, "selected %cMAC\n", EFX_IS10G(efx) ? 'X' : 'G');2316+ /* Not all macs support a mac-level link state */2317+ efx->mac_up = true;2318+2319+ rc = falcon_reset_macs(efx);2320+out:2321+ efx_stats_enable(efx);2322+ return rc;2323}23242325/* This call is responsible for hooking in the MAC and PHY operations */
+87-100
drivers/net/sfc/mdio_10g.c
···15#include "net_driver.h"16#include "mdio_10g.h"17#include "boards.h"01819int mdio_clause45_reset_mmd(struct efx_nic *port, int mmd,20 int spins, int spintime)···180 return false;181 else if (efx_phy_mode_disabled(efx->phy_mode))182 return false;183- else if (efx->loopback_mode == LOOPBACK_PHYXS) {184 mmd_mask &= ~(MDIO_MMDREG_DEVS_PHYXS |185 MDIO_MMDREG_DEVS_PCS |186 MDIO_MMDREG_DEVS_PMAPMD |187 MDIO_MMDREG_DEVS_AN);188- if (!mmd_mask) {189- reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PHYXS,190- MDIO_PHYXS_STATUS2);191- return !(reg & (1 << MDIO_PHYXS_STATUS2_RX_FAULT_LBN));192- }193- } else if (efx->loopback_mode == LOOPBACK_PCS)194 mmd_mask &= ~(MDIO_MMDREG_DEVS_PCS |195 MDIO_MMDREG_DEVS_PMAPMD |196 MDIO_MMDREG_DEVS_AN);197 else if (efx->loopback_mode == LOOPBACK_PMAPMD)198 mmd_mask &= ~(MDIO_MMDREG_DEVS_PMAPMD |199 MDIO_MMDREG_DEVS_AN);0000000200201 while (mmd_mask) {202 if (mmd_mask & 1) {···266 }267}268269-static u32 mdio_clause45_get_an(struct efx_nic *efx, u16 addr, u32 xnp)270{271 int phy_id = efx->mii.phy_id;272 u32 result = 0;···281 result |= ADVERTISED_100baseT_Half;282 if (reg & ADVERTISE_100FULL)283 result |= ADVERTISED_100baseT_Full;284- if (reg & LPA_RESV)285- result |= xnp;286-287 return result;288}289···310 */311void mdio_clause45_get_settings_ext(struct efx_nic *efx,312 struct ethtool_cmd *ecmd,313- u32 xnp, u32 xnp_lpa)314{315 int phy_id = efx->mii.phy_id;316 int reg;···361 ecmd->autoneg = AUTONEG_ENABLE;362 ecmd->advertising |=363 ADVERTISED_Autoneg |364- mdio_clause45_get_an(efx,365- MDIO_AN_ADVERTISE, xnp);366 } else367 ecmd->autoneg = AUTONEG_DISABLE;368 } else···371 if (ecmd->autoneg) {372 /* If AN is complete, report best common mode,373 * otherwise report best advertised mode. */374- u32 common = ecmd->advertising;375 if (mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,376 MDIO_MMDREG_STAT1) &377- (1 << MDIO_AN_STATUS_AN_DONE_LBN)) {378- common &= mdio_clause45_get_an(efx, MDIO_AN_LPA,379- xnp_lpa);380- }381- if (common & ADVERTISED_10000baseT_Full) {000382 ecmd->speed = SPEED_10000;383 ecmd->duplex = DUPLEX_FULL;384- } else if (common & (ADVERTISED_1000baseT_Full |385- ADVERTISED_1000baseT_Half)) {386 ecmd->speed = SPEED_1000;387- ecmd->duplex = !!(common & ADVERTISED_1000baseT_Full);388- } else if (common & (ADVERTISED_100baseT_Full |389- ADVERTISED_100baseT_Half)) {390 ecmd->speed = SPEED_100;391- ecmd->duplex = !!(common & ADVERTISED_100baseT_Full);392 } else {393 ecmd->speed = SPEED_10;394- ecmd->duplex = !!(common & ADVERTISED_10baseT_Full);395 }396 } else {397 /* Report forced settings */···418 int phy_id = efx->mii.phy_id;419 struct ethtool_cmd prev;420 u32 required;421- int ctrl1_bits, reg;422423 efx->phy_op->get_settings(efx, &prev);424···433 if (prev.port != PORT_TP || ecmd->port != PORT_TP)434 return -EINVAL;435436- /* Check that PHY supports these settings and work out the437- * basic control bits */438- if (ecmd->duplex) {0439 switch (ecmd->speed) {440- case SPEED_10:441- ctrl1_bits = BMCR_FULLDPLX;442- required = SUPPORTED_10baseT_Full;443- break;444- case SPEED_100:445- ctrl1_bits = BMCR_SPEED100 | BMCR_FULLDPLX;446- required = SUPPORTED_100baseT_Full;447- break;448- case SPEED_1000:449- ctrl1_bits = BMCR_SPEED1000 | BMCR_FULLDPLX;450- required = SUPPORTED_1000baseT_Full;451- break;452- case SPEED_10000:453- ctrl1_bits = (BMCR_SPEED1000 | BMCR_SPEED100 |454- BMCR_FULLDPLX);455- required = SUPPORTED_10000baseT_Full;456- break;457- default:458- return -EINVAL;459 }460 } else {461 switch (ecmd->speed) {462- case SPEED_10:463- ctrl1_bits = 0;464- required = SUPPORTED_10baseT_Half;465- break;466- case SPEED_100:467- ctrl1_bits = BMCR_SPEED100;468- required = SUPPORTED_100baseT_Half;469- break;470- case SPEED_1000:471- ctrl1_bits = BMCR_SPEED1000;472- required = SUPPORTED_1000baseT_Half;473- break;474- default:475- return -EINVAL;476 }477 }478- if (ecmd->autoneg)479- required |= SUPPORTED_Autoneg;480 required |= ecmd->advertising;481 if (required & ~prev.supported)482 return -EINVAL;483484- /* Set the basic control bits */485- reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,486- MDIO_MMDREG_CTRL1);487- reg &= ~(BMCR_SPEED1000 | BMCR_SPEED100 | BMCR_FULLDPLX | 0x003c);488- reg |= ctrl1_bits;489- mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD, MDIO_MMDREG_CTRL1,490- reg);491492- /* Set the AN registers */493- if (ecmd->autoneg != prev.autoneg ||494- ecmd->advertising != prev.advertising) {495- bool xnp = false;00000000000000496497- if (efx->phy_op->set_xnp_advertise)498- xnp = efx->phy_op->set_xnp_advertise(efx,499- ecmd->advertising);500501- if (ecmd->autoneg) {502- reg = 0;503- if (ecmd->advertising & ADVERTISED_10baseT_Half)504- reg |= ADVERTISE_10HALF;505- if (ecmd->advertising & ADVERTISED_10baseT_Full)506- reg |= ADVERTISE_10FULL;507- if (ecmd->advertising & ADVERTISED_100baseT_Half)508- reg |= ADVERTISE_100HALF;509- if (ecmd->advertising & ADVERTISED_100baseT_Full)510- reg |= ADVERTISE_100FULL;511- if (xnp)512- reg |= ADVERTISE_RESV;513- mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,514- MDIO_AN_ADVERTISE, reg);515- }516-517 reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,518 MDIO_MMDREG_CTRL1);519- if (ecmd->autoneg)520- reg |= BMCR_ANENABLE | BMCR_ANRESTART;521- else522- reg &= ~BMCR_ANENABLE;523 if (xnp)524 reg |= 1 << MDIO_AN_CTRL_XNP_LBN;525 else526 reg &= ~(1 << MDIO_AN_CTRL_XNP_LBN);527 mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,00000000000000000528 MDIO_MMDREG_CTRL1, reg);529 }530
···15#include "net_driver.h"16#include "mdio_10g.h"17#include "boards.h"18+#include "workarounds.h"1920int mdio_clause45_reset_mmd(struct efx_nic *port, int mmd,21 int spins, int spintime)···179 return false;180 else if (efx_phy_mode_disabled(efx->phy_mode))181 return false;182+ else if (efx->loopback_mode == LOOPBACK_PHYXS)183 mmd_mask &= ~(MDIO_MMDREG_DEVS_PHYXS |184 MDIO_MMDREG_DEVS_PCS |185 MDIO_MMDREG_DEVS_PMAPMD |186 MDIO_MMDREG_DEVS_AN);187+ else if (efx->loopback_mode == LOOPBACK_PCS)00000188 mmd_mask &= ~(MDIO_MMDREG_DEVS_PCS |189 MDIO_MMDREG_DEVS_PMAPMD |190 MDIO_MMDREG_DEVS_AN);191 else if (efx->loopback_mode == LOOPBACK_PMAPMD)192 mmd_mask &= ~(MDIO_MMDREG_DEVS_PMAPMD |193 MDIO_MMDREG_DEVS_AN);194+195+ if (!mmd_mask) {196+ /* Use presence of XGMII faults in leui of link state */197+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PHYXS,198+ MDIO_PHYXS_STATUS2);199+ return !(reg & (1 << MDIO_PHYXS_STATUS2_RX_FAULT_LBN));200+ }201202 while (mmd_mask) {203 if (mmd_mask & 1) {···263 }264}265266+static u32 mdio_clause45_get_an(struct efx_nic *efx, u16 addr)267{268 int phy_id = efx->mii.phy_id;269 u32 result = 0;···278 result |= ADVERTISED_100baseT_Half;279 if (reg & ADVERTISE_100FULL)280 result |= ADVERTISED_100baseT_Full;000281 return result;282}283···310 */311void mdio_clause45_get_settings_ext(struct efx_nic *efx,312 struct ethtool_cmd *ecmd,313+ u32 npage_adv, u32 npage_lpa)314{315 int phy_id = efx->mii.phy_id;316 int reg;···361 ecmd->autoneg = AUTONEG_ENABLE;362 ecmd->advertising |=363 ADVERTISED_Autoneg |364+ mdio_clause45_get_an(efx, MDIO_AN_ADVERTISE) |365+ npage_adv;366 } else367 ecmd->autoneg = AUTONEG_DISABLE;368 } else···371 if (ecmd->autoneg) {372 /* If AN is complete, report best common mode,373 * otherwise report best advertised mode. */374+ u32 modes = 0;375 if (mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,376 MDIO_MMDREG_STAT1) &377+ (1 << MDIO_AN_STATUS_AN_DONE_LBN))378+ modes = (ecmd->advertising &379+ (mdio_clause45_get_an(efx, MDIO_AN_LPA) |380+ npage_lpa));381+ if (modes == 0)382+ modes = ecmd->advertising;383+384+ if (modes & ADVERTISED_10000baseT_Full) {385 ecmd->speed = SPEED_10000;386 ecmd->duplex = DUPLEX_FULL;387+ } else if (modes & (ADVERTISED_1000baseT_Full |388+ ADVERTISED_1000baseT_Half)) {389 ecmd->speed = SPEED_1000;390+ ecmd->duplex = !!(modes & ADVERTISED_1000baseT_Full);391+ } else if (modes & (ADVERTISED_100baseT_Full |392+ ADVERTISED_100baseT_Half)) {393 ecmd->speed = SPEED_100;394+ ecmd->duplex = !!(modes & ADVERTISED_100baseT_Full);395 } else {396 ecmd->speed = SPEED_10;397+ ecmd->duplex = !!(modes & ADVERTISED_10baseT_Full);398 }399 } else {400 /* Report forced settings */···415 int phy_id = efx->mii.phy_id;416 struct ethtool_cmd prev;417 u32 required;418+ int reg;419420 efx->phy_op->get_settings(efx, &prev);421···430 if (prev.port != PORT_TP || ecmd->port != PORT_TP)431 return -EINVAL;432433+ /* Check that PHY supports these settings */434+ if (ecmd->autoneg) {435+ required = SUPPORTED_Autoneg;436+ } else if (ecmd->duplex) {437 switch (ecmd->speed) {438+ case SPEED_10: required = SUPPORTED_10baseT_Full; break;439+ case SPEED_100: required = SUPPORTED_100baseT_Full; break;440+ default: return -EINVAL;0000000000000000441 }442 } else {443 switch (ecmd->speed) {444+ case SPEED_10: required = SUPPORTED_10baseT_Half; break;445+ case SPEED_100: required = SUPPORTED_100baseT_Half; break;446+ default: return -EINVAL;00000000000447 }448 }00449 required |= ecmd->advertising;450 if (required & ~prev.supported)451 return -EINVAL;452453+ if (ecmd->autoneg) {454+ bool xnp = (ecmd->advertising & ADVERTISED_10000baseT_Full455+ || EFX_WORKAROUND_13204(efx));0000456457+ /* Set up the base page */458+ reg = ADVERTISE_CSMA;459+ if (ecmd->advertising & ADVERTISED_10baseT_Half)460+ reg |= ADVERTISE_10HALF;461+ if (ecmd->advertising & ADVERTISED_10baseT_Full)462+ reg |= ADVERTISE_10FULL;463+ if (ecmd->advertising & ADVERTISED_100baseT_Half)464+ reg |= ADVERTISE_100HALF;465+ if (ecmd->advertising & ADVERTISED_100baseT_Full)466+ reg |= ADVERTISE_100FULL;467+ if (xnp)468+ reg |= ADVERTISE_RESV;469+ else if (ecmd->advertising & (ADVERTISED_1000baseT_Half |470+ ADVERTISED_1000baseT_Full))471+ reg |= ADVERTISE_NPAGE;472+ reg |= efx_fc_advertise(efx->wanted_fc);473+ mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,474+ MDIO_AN_ADVERTISE, reg);475476+ /* Set up the (extended) next page if necessary */477+ if (efx->phy_op->set_npage_adv)478+ efx->phy_op->set_npage_adv(efx, ecmd->advertising);479480+ /* Enable and restart AN */000000000000000481 reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,482 MDIO_MMDREG_CTRL1);483+ reg |= BMCR_ANENABLE;484+ if (!(EFX_WORKAROUND_15195(efx) &&485+ LOOPBACK_MASK(efx) & efx->phy_op->loopbacks))486+ reg |= BMCR_ANRESTART;487 if (xnp)488 reg |= 1 << MDIO_AN_CTRL_XNP_LBN;489 else490 reg &= ~(1 << MDIO_AN_CTRL_XNP_LBN);491 mdio_clause45_write(efx, phy_id, MDIO_MMD_AN,492+ MDIO_MMDREG_CTRL1, reg);493+ } else {494+ /* Disable AN */495+ mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_AN,496+ MDIO_MMDREG_CTRL1,497+ __ffs(BMCR_ANENABLE), false);498+499+ /* Set the basic control bits */500+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,501+ MDIO_MMDREG_CTRL1);502+ reg &= ~(BMCR_SPEED1000 | BMCR_SPEED100 | BMCR_FULLDPLX |503+ 0x003c);504+ if (ecmd->speed == SPEED_100)505+ reg |= BMCR_SPEED100;506+ if (ecmd->duplex)507+ reg |= BMCR_FULLDPLX;508+ mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD,509 MDIO_MMDREG_CTRL1, reg);510 }511
···566 * @poll: Poll for hardware state. Serialised by the mac_lock.567 * @get_settings: Get ethtool settings. Serialised by the mac_lock.568 * @set_settings: Set ethtool settings. Serialised by the mac_lock.569- * @set_xnp_advertise: Set abilities advertised in Extended Next Page570 * (only needed where AN bit is set in mmds)571 * @num_tests: Number of PHY-specific tests/results572 * @test_names: Names of the tests/results···586 struct ethtool_cmd *ecmd);587 int (*set_settings) (struct efx_nic *efx,588 struct ethtool_cmd *ecmd);589- bool (*set_xnp_advertise) (struct efx_nic *efx, u32);590 u32 num_tests;591 const char *const *test_names;592 int (*run_tests) (struct efx_nic *efx, int *results, unsigned flags);···754 * &struct net_device_stats.755 * @stats_buffer: DMA buffer for statistics756 * @stats_lock: Statistics update lock. Serialises statistics fetches757- * @stats_enabled: Temporarily disable statistics fetches.758- * Serialised by @stats_lock759 * @mac_op: MAC interface760 * @mac_address: Permanent MAC address761 * @phy_type: PHY type···836 struct efx_mac_stats mac_stats;837 struct efx_buffer stats_buffer;838 spinlock_t stats_lock;839- bool stats_enabled;840841 struct efx_mac_operations *mac_op;842 unsigned char mac_address[ETH_ALEN];
···566 * @poll: Poll for hardware state. Serialised by the mac_lock.567 * @get_settings: Get ethtool settings. Serialised by the mac_lock.568 * @set_settings: Set ethtool settings. Serialised by the mac_lock.569+ * @set_npage_adv: Set abilities advertised in (Extended) Next Page570 * (only needed where AN bit is set in mmds)571 * @num_tests: Number of PHY-specific tests/results572 * @test_names: Names of the tests/results···586 struct ethtool_cmd *ecmd);587 int (*set_settings) (struct efx_nic *efx,588 struct ethtool_cmd *ecmd);589+ void (*set_npage_adv) (struct efx_nic *efx, u32);590 u32 num_tests;591 const char *const *test_names;592 int (*run_tests) (struct efx_nic *efx, int *results, unsigned flags);···754 * &struct net_device_stats.755 * @stats_buffer: DMA buffer for statistics756 * @stats_lock: Statistics update lock. Serialises statistics fetches757+ * @stats_disable_count: Nest count for disabling statistics fetches0758 * @mac_op: MAC interface759 * @mac_address: Permanent MAC address760 * @phy_type: PHY type···837 struct efx_mac_stats mac_stats;838 struct efx_buffer stats_buffer;839 spinlock_t stats_lock;840+ unsigned int stats_disable_count;841842 struct efx_mac_operations *mac_op;843 unsigned char mac_address[ETH_ALEN];
-1
drivers/net/sfc/phy.h
···17extern struct efx_phy_operations falcon_sft9001_phy_ops;1819extern void tenxpress_phy_blink(struct efx_nic *efx, bool blink);20-extern void tenxpress_crc_err(struct efx_nic *efx);2122/****************************************************************************23 * Exported functions from the driver for XFP optical PHYs
···17extern struct efx_phy_operations falcon_sft9001_phy_ops;1819extern void tenxpress_phy_blink(struct efx_nic *efx, bool blink);02021/****************************************************************************22 * Exported functions from the driver for XFP optical PHYs
+4-3
drivers/net/sfc/selftest.c
···665{666 enum efx_loopback_mode loopback_mode = efx->loopback_mode;667 int phy_mode = efx->phy_mode;0668 struct ethtool_cmd ecmd;669 struct efx_channel *channel;670 int rc_test = 0, rc_reset = 0, rc;···719 mutex_unlock(&efx->mac_lock);720721 /* free up all consumers of SRAM (including all the queues) */722- efx_reset_down(efx, &ecmd);723724 rc = efx_test_chip(efx, tests);725 if (rc && !rc_test)726 rc_test = rc;727728 /* reset the chip to recover from the register test */729- rc_reset = falcon_reset_hw(efx, RESET_TYPE_ALL);730731 /* Ensure that the phy is powered and out of loopback732 * for the bist and loopback tests */733 efx->phy_mode &= ~PHY_MODE_LOW_POWER;734 efx->loopback_mode = LOOPBACK_NONE;735736- rc = efx_reset_up(efx, &ecmd, rc_reset == 0);737 if (rc && !rc_reset)738 rc_reset = rc;739
···665{666 enum efx_loopback_mode loopback_mode = efx->loopback_mode;667 int phy_mode = efx->phy_mode;668+ enum reset_type reset_method = RESET_TYPE_INVISIBLE;669 struct ethtool_cmd ecmd;670 struct efx_channel *channel;671 int rc_test = 0, rc_reset = 0, rc;···718 mutex_unlock(&efx->mac_lock);719720 /* free up all consumers of SRAM (including all the queues) */721+ efx_reset_down(efx, reset_method, &ecmd);722723 rc = efx_test_chip(efx, tests);724 if (rc && !rc_test)725 rc_test = rc;726727 /* reset the chip to recover from the register test */728+ rc_reset = falcon_reset_hw(efx, reset_method);729730 /* Ensure that the phy is powered and out of loopback731 * for the bist and loopback tests */732 efx->phy_mode &= ~PHY_MODE_LOW_POWER;733 efx->loopback_mode = LOOPBACK_NONE;734735+ rc = efx_reset_up(efx, reset_method, &ecmd, rc_reset == 0);736 if (rc && !rc_reset)737 rc_reset = rc;738
+33-9
drivers/net/sfc/sfe4001.c
···186{187 efx_oword_t reg;188189- /* GPIO pins are also used for I2C, so block that temporarily */190 mutex_lock(&efx->i2c_adap.bus_lock);1910000192 falcon_read(efx, ®, GPIO_CTL_REG_KER);193 EFX_SET_OWORD_FIELD(reg, GPIO2_OEN, true);194- EFX_SET_OWORD_FIELD(reg, GPIO2_OUT, false);195 falcon_write(efx, ®, GPIO_CTL_REG_KER);196 msleep(1000);197- EFX_SET_OWORD_FIELD(reg, GPIO2_OUT, true);198- EFX_SET_OWORD_FIELD(reg, GPIO3_OEN, true);199- EFX_SET_OWORD_FIELD(reg, GPIO3_OUT,200- !(efx->phy_mode & PHY_MODE_SPECIAL));201 falcon_write(efx, ®, GPIO_CTL_REG_KER);0202203 mutex_unlock(&efx->i2c_adap.bus_lock);204···235 } else if (efx->state != STATE_RUNNING || netif_running(efx->net_dev)) {236 err = -EBUSY;237 } else {00238 efx->phy_mode = new_mode;00239 if (efx->board_info.type == EFX_BOARD_SFE4001)240 err = sfe4001_poweron(efx);241 else242 err = sfn4111t_reset(efx);243 efx_reconfigure_port(efx);00244 }245 rtnl_unlock();246···335 efx->board_info.monitor = sfe4001_check_hw;336 efx->board_info.fini = sfe4001_fini;33700000338 rc = sfe4001_poweron(efx);339 if (rc)340 goto fail_ioexp;···386 i2c_unregister_device(efx->board_info.hwmon_client);387}388389-static struct i2c_board_info sfn4111t_hwmon_info = {390 I2C_BOARD_INFO("max6647", 0x4e),00000391 .irq = -1,392};393···401 int rc;402403 efx->board_info.hwmon_client =404- i2c_new_device(&efx->i2c_adap, &sfn4111t_hwmon_info);000405 if (!efx->board_info.hwmon_client)406 return -EIO;407···416 if (rc)417 goto fail_hwmon;418419- if (efx->phy_mode & PHY_MODE_SPECIAL)0420 sfn4111t_reset(efx);0421422 return 0;423
···186{187 efx_oword_t reg;188189+ /* GPIO 3 and the GPIO register are shared with I2C, so block that */190 mutex_lock(&efx->i2c_adap.bus_lock);191192+ /* Pull RST_N (GPIO 2) low then let it up again, setting the193+ * FLASH_CFG_1 strap (GPIO 3) appropriately. Only change the194+ * output enables; the output levels should always be 0 (low)195+ * and we rely on external pull-ups. */196 falcon_read(efx, ®, GPIO_CTL_REG_KER);197 EFX_SET_OWORD_FIELD(reg, GPIO2_OEN, true);0198 falcon_write(efx, ®, GPIO_CTL_REG_KER);199 msleep(1000);200+ EFX_SET_OWORD_FIELD(reg, GPIO2_OEN, false);201+ EFX_SET_OWORD_FIELD(reg, GPIO3_OEN,202+ !!(efx->phy_mode & PHY_MODE_SPECIAL));0203 falcon_write(efx, ®, GPIO_CTL_REG_KER);204+ msleep(1);205206 mutex_unlock(&efx->i2c_adap.bus_lock);207···232 } else if (efx->state != STATE_RUNNING || netif_running(efx->net_dev)) {233 err = -EBUSY;234 } else {235+ /* Reset the PHY, reconfigure the MAC and enable/disable236+ * MAC stats accordingly. */237 efx->phy_mode = new_mode;238+ if (new_mode & PHY_MODE_SPECIAL)239+ efx_stats_disable(efx);240 if (efx->board_info.type == EFX_BOARD_SFE4001)241 err = sfe4001_poweron(efx);242 else243 err = sfn4111t_reset(efx);244 efx_reconfigure_port(efx);245+ if (!(new_mode & PHY_MODE_SPECIAL))246+ efx_stats_enable(efx);247 }248 rtnl_unlock();249···326 efx->board_info.monitor = sfe4001_check_hw;327 efx->board_info.fini = sfe4001_fini;328329+ if (efx->phy_mode & PHY_MODE_SPECIAL) {330+ /* PHY won't generate a 156.25 MHz clock and MAC stats fetch331+ * will fail. */332+ efx_stats_disable(efx);333+ }334 rc = sfe4001_poweron(efx);335 if (rc)336 goto fail_ioexp;···372 i2c_unregister_device(efx->board_info.hwmon_client);373}374375+static struct i2c_board_info sfn4111t_a0_hwmon_info = {376 I2C_BOARD_INFO("max6647", 0x4e),377+ .irq = -1,378+};379+380+static struct i2c_board_info sfn4111t_r5_hwmon_info = {381+ I2C_BOARD_INFO("max6646", 0x4d),382 .irq = -1,383};384···382 int rc;383384 efx->board_info.hwmon_client =385+ i2c_new_device(&efx->i2c_adap,386+ (efx->board_info.minor < 5) ?387+ &sfn4111t_a0_hwmon_info :388+ &sfn4111t_r5_hwmon_info);389 if (!efx->board_info.hwmon_client)390 return -EIO;391···394 if (rc)395 goto fail_hwmon;396397+ if (efx->phy_mode & PHY_MODE_SPECIAL) {398+ efx_stats_disable(efx);399 sfn4111t_reset(efx);400+ }401402 return 0;403
+77-136
drivers/net/sfc/tenxpress.c
···67#define PMA_PMD_EXT_CLK312_WIDTH 168#define PMA_PMD_EXT_LPOWER_LBN 1269#define PMA_PMD_EXT_LPOWER_WIDTH 10070#define PMA_PMD_EXT_SSR_LBN 1571#define PMA_PMD_EXT_SSR_WIDTH 172···179#define C22EXT_STATUS_LINK_LBN 2180#define C22EXT_STATUS_LINK_WIDTH 1181182-#define C22EXT_MSTSLV_REG 49162183-#define C22EXT_MSTSLV_1000_HD_LBN 10184-#define C22EXT_MSTSLV_1000_HD_WIDTH 1185-#define C22EXT_MSTSLV_1000_FD_LBN 11186-#define C22EXT_MSTSLV_1000_FD_WIDTH 100187188/* Time to wait between powering down the LNPGA and turning off the power189 * rails */190#define LNPGA_PDOWN_WAIT (HZ / 5)191192-static int crc_error_reset_threshold = 100;193-module_param(crc_error_reset_threshold, int, 0644);194-MODULE_PARM_DESC(crc_error_reset_threshold,195- "Max number of CRC errors before XAUI reset");196-197struct tenxpress_phy_data {198 enum efx_loopback_mode loopback_mode;199- atomic_t bad_crc_count;200 enum efx_phy_mode phy_mode;201 int bad_lp_tries;202};203-204-void tenxpress_crc_err(struct efx_nic *efx)205-{206- struct tenxpress_phy_data *phy_data = efx->phy_data;207- if (phy_data != NULL)208- atomic_inc(&phy_data->bad_crc_count);209-}210211static ssize_t show_phy_short_reach(struct device *dev,212 struct device_attribute *attr, char *buf)···275 PMA_PMD_XCONTROL_REG);276 reg |= ((1 << PMA_PMD_EXT_GMII_EN_LBN) |277 (1 << PMA_PMD_EXT_CLK_OUT_LBN) |278- (1 << PMA_PMD_EXT_CLK312_LBN));00279 mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD,280 PMA_PMD_XCONTROL_REG, reg);281 mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_C22EXT,···339 rc = tenxpress_init(efx);340 if (rc < 0)341 goto fail;0342343 if (efx->phy_type == PHY_TYPE_SFT9001B) {344 rc = device_create_file(&efx->pci_dev->dev,···370371 /* The XGMAC clock is driven from the SFC7101/SFT9001 312MHz clock, so372 * a special software reset can glitch the XGMAC sufficiently for stats373- * requests to fail. Since we don't often special_reset, just lock. */374- spin_lock(&efx->stats_lock);375376 /* Initiate reset */377 reg = mdio_clause45_read(efx, efx->mii.phy_id,···386 rc = mdio_clause45_wait_reset_mmds(efx,387 TENXPRESS_REQUIRED_DEVS);388 if (rc < 0)389- goto unlock;390391 /* Try and reconfigure the device */392 rc = tenxpress_init(efx);393 if (rc < 0)394- goto unlock;395396 /* Wait for the XGXS state machine to churn */397 mdelay(10);398-unlock:399- spin_unlock(&efx->stats_lock);400 return rc;401}402···514{515 struct tenxpress_phy_data *phy_data = efx->phy_data;516 struct ethtool_cmd ecmd;517- bool phy_mode_change, loop_reset, loop_toggle, loopback;518519 if (efx->phy_mode & (PHY_MODE_OFF | PHY_MODE_SPECIAL)) {520 phy_data->phy_mode = efx->phy_mode;···525526 phy_mode_change = (efx->phy_mode == PHY_MODE_NORMAL &&527 phy_data->phy_mode != PHY_MODE_NORMAL);528- loopback = LOOPBACK_MASK(efx) & efx->phy_op->loopbacks;529- loop_toggle = LOOPBACK_CHANGED(phy_data, efx, efx->phy_op->loopbacks);530 loop_reset = (LOOPBACK_OUT_OF(phy_data, efx, efx->phy_op->loopbacks) ||531 LOOPBACK_CHANGED(phy_data, efx, 1 << LOOPBACK_GPHY));532533- if (loop_reset || loop_toggle || loopback || phy_mode_change) {534 int rc;535536 efx->phy_op->get_settings(efx, &ecmd);···541 * then xaui will be reset anyway */542 if (EFX_IS10G(efx))543 falcon_reset_xaui(efx);544- }545-546- if (efx->phy_type != PHY_TYPE_SFX7101) {547- /* Only change autoneg once, on coming out or548- * going into loopback */549- if (loop_toggle)550- ecmd.autoneg = !loopback;551- if (loopback) {552- ecmd.duplex = DUPLEX_FULL;553- if (efx->loopback_mode == LOOPBACK_GPHY)554- ecmd.speed = SPEED_1000;555- else556- ecmd.speed = SPEED_10000;557- }558 }559560 rc = efx->phy_op->set_settings(efx, &ecmd);···601602 if (phy_data->phy_mode != PHY_MODE_NORMAL)603 return;604-605- if (EFX_WORKAROUND_10750(efx) &&606- atomic_read(&phy_data->bad_crc_count) > crc_error_reset_threshold) {607- EFX_ERR(efx, "Resetting XAUI due to too many CRC errors\n");608- falcon_reset_xaui(efx);609- atomic_set(&phy_data->bad_crc_count, 0);610- }611}612613static void tenxpress_phy_fini(struct efx_nic *efx)···743 return rc;744}745746-static u32 tenxpress_get_xnp_lpa(struct efx_nic *efx)0747{748- int phy = efx->mii.phy_id;749- u32 lpa = 0;750 int reg;751752 if (efx->phy_type != PHY_TYPE_SFX7101) {753- reg = mdio_clause45_read(efx, phy, MDIO_MMD_C22EXT,754- C22EXT_MSTSLV_REG);755- if (reg & (1 << C22EXT_MSTSLV_1000_HD_LBN))0000756 lpa |= ADVERTISED_1000baseT_Half;757- if (reg & (1 << C22EXT_MSTSLV_1000_FD_LBN))758 lpa |= ADVERTISED_1000baseT_Full;759 }760- reg = mdio_clause45_read(efx, phy, MDIO_MMD_AN, MDIO_AN_10GBT_STATUS);00000761 if (reg & (1 << MDIO_AN_10GBT_STATUS_LP_10G_LBN))762 lpa |= ADVERTISED_10000baseT_Full;763- return lpa;000000000000764}765766-static void sfx7101_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)767{768- mdio_clause45_get_settings_ext(efx, ecmd, ADVERTISED_10000baseT_Full,769- tenxpress_get_xnp_lpa(efx));770- ecmd->supported |= SUPPORTED_10000baseT_Full;771- ecmd->advertising |= ADVERTISED_10000baseT_Full;772}773774-static void sft9001_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)775{776- int phy_id = efx->mii.phy_id;777- u32 xnp_adv = 0;778- int reg;779-780- reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD,781- PMA_PMD_SPEED_ENABLE_REG);782- if (EFX_WORKAROUND_13204(efx) && (reg & (1 << PMA_PMD_100TX_ADV_LBN)))783- xnp_adv |= ADVERTISED_100baseT_Full;784- if (reg & (1 << PMA_PMD_1000T_ADV_LBN))785- xnp_adv |= ADVERTISED_1000baseT_Full;786- if (reg & (1 << PMA_PMD_10000T_ADV_LBN))787- xnp_adv |= ADVERTISED_10000baseT_Full;788-789- mdio_clause45_get_settings_ext(efx, ecmd, xnp_adv,790- tenxpress_get_xnp_lpa(efx));791-792- ecmd->supported |= (SUPPORTED_100baseT_Half |793- SUPPORTED_100baseT_Full |794- SUPPORTED_1000baseT_Full);795-796- /* Use the vendor defined C22ext register for duplex settings */797- if (ecmd->speed != SPEED_10000 && !ecmd->autoneg) {798- reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_C22EXT,799- GPHY_XCONTROL_REG);800- ecmd->duplex = (reg & (1 << GPHY_DUPLEX_LBN) ?801- DUPLEX_FULL : DUPLEX_HALF);802- }803}804805-static int sft9001_set_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)806{807 int phy_id = efx->mii.phy_id;808- int rc;809810- rc = mdio_clause45_set_settings(efx, ecmd);811- if (rc)812- return rc;813-814- if (ecmd->speed != SPEED_10000 && !ecmd->autoneg)815- mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_C22EXT,816- GPHY_XCONTROL_REG, GPHY_DUPLEX_LBN,817- ecmd->duplex == DUPLEX_FULL);818-819- return rc;820-}821-822-static bool sft9001_set_xnp_advertise(struct efx_nic *efx, u32 advertising)823-{824- int phy = efx->mii.phy_id;825- int reg = mdio_clause45_read(efx, phy, MDIO_MMD_PMAPMD,826- PMA_PMD_SPEED_ENABLE_REG);827- bool enabled;828-829- reg &= ~((1 << 2) | (1 << 3));830- if (EFX_WORKAROUND_13204(efx) &&831- (advertising & ADVERTISED_100baseT_Full))832- reg |= 1 << PMA_PMD_100TX_ADV_LBN;833- if (advertising & ADVERTISED_1000baseT_Full)834- reg |= 1 << PMA_PMD_1000T_ADV_LBN;835- if (advertising & ADVERTISED_10000baseT_Full)836- reg |= 1 << PMA_PMD_10000T_ADV_LBN;837- mdio_clause45_write(efx, phy, MDIO_MMD_PMAPMD,838- PMA_PMD_SPEED_ENABLE_REG, reg);839-840- enabled = (advertising &841- (ADVERTISED_1000baseT_Half |842- ADVERTISED_1000baseT_Full |843- ADVERTISED_10000baseT_Full));844- if (EFX_WORKAROUND_13204(efx))845- enabled |= (advertising & ADVERTISED_100baseT_Full);846- return enabled;847}848849struct efx_phy_operations falcon_sfx7101_phy_ops = {···822 .poll = tenxpress_phy_poll,823 .fini = tenxpress_phy_fini,824 .clear_interrupt = efx_port_dummy_op_void,825- .get_settings = sfx7101_get_settings,826- .set_settings = mdio_clause45_set_settings,0827 .num_tests = ARRAY_SIZE(sfx7101_test_names),828 .test_names = sfx7101_test_names,829 .run_tests = sfx7101_run_tests,···839 .poll = tenxpress_phy_poll,840 .fini = tenxpress_phy_fini,841 .clear_interrupt = efx_port_dummy_op_void,842- .get_settings = sft9001_get_settings,843- .set_settings = sft9001_set_settings,844- .set_xnp_advertise = sft9001_set_xnp_advertise,845 .num_tests = ARRAY_SIZE(sft9001_test_names),846 .test_names = sft9001_test_names,847 .run_tests = sft9001_run_tests,
···67#define PMA_PMD_EXT_CLK312_WIDTH 168#define PMA_PMD_EXT_LPOWER_LBN 1269#define PMA_PMD_EXT_LPOWER_WIDTH 170+#define PMA_PMD_EXT_ROBUST_LBN 1471+#define PMA_PMD_EXT_ROBUST_WIDTH 172#define PMA_PMD_EXT_SSR_LBN 1573#define PMA_PMD_EXT_SSR_WIDTH 174···177#define C22EXT_STATUS_LINK_LBN 2178#define C22EXT_STATUS_LINK_WIDTH 1179180+#define C22EXT_MSTSLV_CTRL 49161181+#define C22EXT_MSTSLV_CTRL_ADV_1000_HD_LBN 8182+#define C22EXT_MSTSLV_CTRL_ADV_1000_FD_LBN 9183+184+#define C22EXT_MSTSLV_STATUS 49162185+#define C22EXT_MSTSLV_STATUS_LP_1000_HD_LBN 10186+#define C22EXT_MSTSLV_STATUS_LP_1000_FD_LBN 11187188/* Time to wait between powering down the LNPGA and turning off the power189 * rails */190#define LNPGA_PDOWN_WAIT (HZ / 5)19100000192struct tenxpress_phy_data {193 enum efx_loopback_mode loopback_mode;0194 enum efx_phy_mode phy_mode;195 int bad_lp_tries;196};0000000197198static ssize_t show_phy_short_reach(struct device *dev,199 struct device_attribute *attr, char *buf)···284 PMA_PMD_XCONTROL_REG);285 reg |= ((1 << PMA_PMD_EXT_GMII_EN_LBN) |286 (1 << PMA_PMD_EXT_CLK_OUT_LBN) |287+ (1 << PMA_PMD_EXT_CLK312_LBN) |288+ (1 << PMA_PMD_EXT_ROBUST_LBN));289+290 mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD,291 PMA_PMD_XCONTROL_REG, reg);292 mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_C22EXT,···346 rc = tenxpress_init(efx);347 if (rc < 0)348 goto fail;349+ mdio_clause45_set_pause(efx);350351 if (efx->phy_type == PHY_TYPE_SFT9001B) {352 rc = device_create_file(&efx->pci_dev->dev,···376377 /* The XGMAC clock is driven from the SFC7101/SFT9001 312MHz clock, so378 * a special software reset can glitch the XGMAC sufficiently for stats379+ * requests to fail. */380+ efx_stats_disable(efx);381382 /* Initiate reset */383 reg = mdio_clause45_read(efx, efx->mii.phy_id,···392 rc = mdio_clause45_wait_reset_mmds(efx,393 TENXPRESS_REQUIRED_DEVS);394 if (rc < 0)395+ goto out;396397 /* Try and reconfigure the device */398 rc = tenxpress_init(efx);399 if (rc < 0)400+ goto out;401402 /* Wait for the XGXS state machine to churn */403 mdelay(10);404+out:405+ efx_stats_enable(efx);406 return rc;407}408···520{521 struct tenxpress_phy_data *phy_data = efx->phy_data;522 struct ethtool_cmd ecmd;523+ bool phy_mode_change, loop_reset;524525 if (efx->phy_mode & (PHY_MODE_OFF | PHY_MODE_SPECIAL)) {526 phy_data->phy_mode = efx->phy_mode;···531532 phy_mode_change = (efx->phy_mode == PHY_MODE_NORMAL &&533 phy_data->phy_mode != PHY_MODE_NORMAL);00534 loop_reset = (LOOPBACK_OUT_OF(phy_data, efx, efx->phy_op->loopbacks) ||535 LOOPBACK_CHANGED(phy_data, efx, 1 << LOOPBACK_GPHY));536537+ if (loop_reset || phy_mode_change) {538 int rc;539540 efx->phy_op->get_settings(efx, &ecmd);···549 * then xaui will be reset anyway */550 if (EFX_IS10G(efx))551 falcon_reset_xaui(efx);00000000000000552 }553554 rc = efx->phy_op->set_settings(efx, &ecmd);···623624 if (phy_data->phy_mode != PHY_MODE_NORMAL)625 return;0000000626}627628static void tenxpress_phy_fini(struct efx_nic *efx)···772 return rc;773}774775+static void776+tenxpress_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)777{778+ int phy_id = efx->mii.phy_id;779+ u32 adv = 0, lpa = 0;780 int reg;781782 if (efx->phy_type != PHY_TYPE_SFX7101) {783+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_C22EXT,784+ C22EXT_MSTSLV_CTRL);785+ if (reg & (1 << C22EXT_MSTSLV_CTRL_ADV_1000_FD_LBN))786+ adv |= ADVERTISED_1000baseT_Full;787+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_C22EXT,788+ C22EXT_MSTSLV_STATUS);789+ if (reg & (1 << C22EXT_MSTSLV_STATUS_LP_1000_HD_LBN))790 lpa |= ADVERTISED_1000baseT_Half;791+ if (reg & (1 << C22EXT_MSTSLV_STATUS_LP_1000_FD_LBN))792 lpa |= ADVERTISED_1000baseT_Full;793 }794+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,795+ MDIO_AN_10GBT_CTRL);796+ if (reg & (1 << MDIO_AN_10GBT_CTRL_ADV_10G_LBN))797+ adv |= ADVERTISED_10000baseT_Full;798+ reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_AN,799+ MDIO_AN_10GBT_STATUS);800 if (reg & (1 << MDIO_AN_10GBT_STATUS_LP_10G_LBN))801 lpa |= ADVERTISED_10000baseT_Full;802+803+ mdio_clause45_get_settings_ext(efx, ecmd, adv, lpa);804+805+ if (efx->phy_type != PHY_TYPE_SFX7101)806+ ecmd->supported |= (SUPPORTED_100baseT_Full |807+ SUPPORTED_1000baseT_Full);808+809+ /* In loopback, the PHY automatically brings up the correct interface,810+ * but doesn't advertise the correct speed. So override it */811+ if (efx->loopback_mode == LOOPBACK_GPHY)812+ ecmd->speed = SPEED_1000;813+ else if (LOOPBACK_MASK(efx) & efx->phy_op->loopbacks)814+ ecmd->speed = SPEED_10000;815}816817+static int tenxpress_set_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd)818{819+ if (!ecmd->autoneg)820+ return -EINVAL;821+822+ return mdio_clause45_set_settings(efx, ecmd);823}824825+static void sfx7101_set_npage_adv(struct efx_nic *efx, u32 advertising)826{827+ mdio_clause45_set_flag(efx, efx->mii.phy_id, MDIO_MMD_AN,828+ MDIO_AN_10GBT_CTRL,829+ MDIO_AN_10GBT_CTRL_ADV_10G_LBN,830+ advertising & ADVERTISED_10000baseT_Full);00000000000000000000000831}832833+static void sft9001_set_npage_adv(struct efx_nic *efx, u32 advertising)834{835 int phy_id = efx->mii.phy_id;0836837+ mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_C22EXT,838+ C22EXT_MSTSLV_CTRL,839+ C22EXT_MSTSLV_CTRL_ADV_1000_FD_LBN,840+ advertising & ADVERTISED_1000baseT_Full);841+ mdio_clause45_set_flag(efx, phy_id, MDIO_MMD_AN,842+ MDIO_AN_10GBT_CTRL,843+ MDIO_AN_10GBT_CTRL_ADV_10G_LBN,844+ advertising & ADVERTISED_10000baseT_Full);00000000000000000000000000000845}846847struct efx_phy_operations falcon_sfx7101_phy_ops = {···882 .poll = tenxpress_phy_poll,883 .fini = tenxpress_phy_fini,884 .clear_interrupt = efx_port_dummy_op_void,885+ .get_settings = tenxpress_get_settings,886+ .set_settings = tenxpress_set_settings,887+ .set_npage_adv = sfx7101_set_npage_adv,888 .num_tests = ARRAY_SIZE(sfx7101_test_names),889 .test_names = sfx7101_test_names,890 .run_tests = sfx7101_run_tests,···898 .poll = tenxpress_phy_poll,899 .fini = tenxpress_phy_fini,900 .clear_interrupt = efx_port_dummy_op_void,901+ .get_settings = tenxpress_get_settings,902+ .set_settings = tenxpress_set_settings,903+ .set_npage_adv = sft9001_set_npage_adv,904 .num_tests = ARRAY_SIZE(sft9001_test_names),905 .test_names = sft9001_test_names,906 .run_tests = sft9001_run_tests,
+5-7
drivers/net/sfc/workarounds.h
···18#define EFX_WORKAROUND_ALWAYS(efx) 119#define EFX_WORKAROUND_FALCON_A(efx) (falcon_rev(efx) <= FALCON_REV_A1)20#define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx)21-#define EFX_WORKAROUND_SFX7101(efx) ((efx)->phy_type == PHY_TYPE_SFX7101)22-#define EFX_WORKAROUND_SFT9001A(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A)2324/* XAUI resets if link not detected */25#define EFX_WORKAROUND_5147 EFX_WORKAROUND_ALWAYS···29#define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G30/* TX pkt parser problem with <= 16 byte TXes */31#define EFX_WORKAROUND_9141 EFX_WORKAROUND_ALWAYS32-/* Low rate CRC errors require XAUI reset */33-#define EFX_WORKAROUND_10750 EFX_WORKAROUND_SFX710134/* TX_EV_PKT_ERR can be caused by a dangling TX descriptor35 * or a PCIe error (bug 11028) */36#define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS···53#define EFX_WORKAROUND_8071 EFX_WORKAROUND_FALCON_A5455/* Need to send XNP pages for 100BaseT */56-#define EFX_WORKAROUND_13204 EFX_WORKAROUND_SFT9001A57-/* Need to keep AN enabled */58-#define EFX_WORKAROUND_13963 EFX_WORKAROUND_SFT9001A5960#endif /* EFX_WORKAROUNDS_H */
···18#define EFX_WORKAROUND_ALWAYS(efx) 119#define EFX_WORKAROUND_FALCON_A(efx) (falcon_rev(efx) <= FALCON_REV_A1)20#define EFX_WORKAROUND_10G(efx) EFX_IS10G(efx)21+#define EFX_WORKAROUND_SFT9001(efx) ((efx)->phy_type == PHY_TYPE_SFT9001A || \22+ (efx)->phy_type == PHY_TYPE_SFT9001B)2324/* XAUI resets if link not detected */25#define EFX_WORKAROUND_5147 EFX_WORKAROUND_ALWAYS···29#define EFX_WORKAROUND_7884 EFX_WORKAROUND_10G30/* TX pkt parser problem with <= 16 byte TXes */31#define EFX_WORKAROUND_9141 EFX_WORKAROUND_ALWAYS0032/* TX_EV_PKT_ERR can be caused by a dangling TX descriptor33 * or a PCIe error (bug 11028) */34#define EFX_WORKAROUND_10727 EFX_WORKAROUND_ALWAYS···55#define EFX_WORKAROUND_8071 EFX_WORKAROUND_FALCON_A5657/* Need to send XNP pages for 100BaseT */58+#define EFX_WORKAROUND_13204 EFX_WORKAROUND_SFT900159+/* Don't restart AN in near-side loopback */60+#define EFX_WORKAROUND_15195 EFX_WORKAROUND_SFT90016162#endif /* EFX_WORKAROUNDS_H */
+2-2
drivers/net/skfp/skfddi.c
···1003 break;1004 case SKFP_CLR_STATS: /* Zero out the driver statistics */1005 if (!capable(CAP_NET_ADMIN)) {1006- memset(&lp->MacStat, 0, sizeof(lp->MacStat));1007- } else {1008 status = -EPERM;001009 }1010 break;1011 default:
···1003 break;1004 case SKFP_CLR_STATS: /* Zero out the driver statistics */1005 if (!capable(CAP_NET_ADMIN)) {001006 status = -EPERM;1007+ } else {1008+ memset(&lp->MacStat, 0, sizeof(lp->MacStat));1009 }1010 break;1011 default:
+3-3
drivers/net/sky2.c
···14031404 }14051406- if (netif_msg_ifup(sky2))1407- printk(KERN_INFO PFX "%s: enabling interface\n", dev->name);1408-1409 netif_carrier_off(dev);14101411 /* must be power of 2 */···1481 sky2_write32(hw, B0_IMSK, imask);14821483 sky2_set_multicast(dev);0001484 return 0;14851486err_out:
···14031404 }14050001406 netif_carrier_off(dev);14071408 /* must be power of 2 */···1484 sky2_write32(hw, B0_IMSK, imask);14851486 sky2_set_multicast(dev);1487+1488+ if (netif_msg_ifup(sky2))1489+ printk(KERN_INFO PFX "%s: enabling interface\n", dev->name);1490 return 0;14911492err_out:
+1-1
drivers/net/smsc911x.c
···953 do {954 udelay(1);955 val = smsc911x_reg_read(pdata, RX_DP_CTRL);956- } while (timeout-- && (val & RX_DP_CTRL_RX_FFWD_));957958 if (unlikely(timeout == 0))959 SMSC_WARNING(HW, "Timed out waiting for "
···953 do {954 udelay(1);955 val = smsc911x_reg_read(pdata, RX_DP_CTRL);956+ } while (--timeout && (val & RX_DP_CTRL_RX_FFWD_));957958 if (unlikely(timeout == 0))959 SMSC_WARNING(HW, "Timed out waiting for "
+1-2
drivers/net/smsc9420.c
···13781379 /* test the IRQ connection to the ISR */1380 smsc_dbg(IFUP, "Testing ISR using IRQ %d", dev->irq);013811382 spin_lock_irqsave(&pd->int_lock, flags);1383 /* configure interrupt deassertion timer and enable interrupts */···1394 smsc9420_pci_flush_write(pd);13951396 timeout = 1000;1397- pd->software_irq_signal = false;1398- smp_wmb();1399 while (timeout--) {1400 if (pd->software_irq_signal)1401 break;
···13781379 /* test the IRQ connection to the ISR */1380 smsc_dbg(IFUP, "Testing ISR using IRQ %d", dev->irq);1381+ pd->software_irq_signal = false;13821383 spin_lock_irqsave(&pd->int_lock, flags);1384 /* configure interrupt deassertion timer and enable interrupts */···1393 smsc9420_pci_flush_write(pd);13941395 timeout = 1000;001396 while (timeout--) {1397 if (pd->software_irq_signal)1398 break;
+19-4
drivers/net/tulip/21142.c
···910 Please refer to Documentation/DocBook/tulip-user.{pdf,ps,html}11 for more information on this driver.0000012 Please submit bugs to http://bugzilla.kernel.org/ .13*/14···37 int csr12 = ioread32(ioaddr + CSR12);38 int next_tick = 60*HZ;39 int new_csr6 = 0;04000041 if (tulip_debug > 2)42 printk(KERN_INFO"%s: 21143 negotiation status %8.8x, %s.\n",43 dev->name, csr12, medianame[dev->if_port]);···85 new_csr6 = 0x83860000;86 dev->if_port = 3;87 iowrite32(0, ioaddr + CSR13);88- iowrite32(0x0003FF7F, ioaddr + CSR14);89 iowrite16(8, ioaddr + CSR15);90 iowrite32(1, ioaddr + CSR13);91 }···141 struct tulip_private *tp = netdev_priv(dev);142 void __iomem *ioaddr = tp->base_addr;143 int csr12 = ioread32(ioaddr + CSR12);0144000145 if (tulip_debug > 1)146 printk(KERN_INFO"%s: 21143 link status interrupt %8.8x, CSR5 %x, "147- "%8.8x.\n", dev->name, csr12, csr5, ioread32(ioaddr + CSR14));148149 /* If NWay finished and we have a negotiated partner capability. */150 if (tp->nway && !tp->nwayset && (csr12 & 0x7000) == 0x5000) {···156 int negotiated = tp->sym_advertise & (csr12 >> 16);157 tp->lpar = csr12 >> 16;158 tp->nwayset = 1;159- if (negotiated & 0x0100) dev->if_port = 5;00160 else if (negotiated & 0x0080) dev->if_port = 3;161 else if (negotiated & 0x0040) dev->if_port = 4;162 else if (negotiated & 0x0020) dev->if_port = 0;···229 tp->timer.expires = RUN_AT(3*HZ);230 add_timer(&tp->timer);231 } else if (dev->if_port == 5)232- iowrite32(ioread32(ioaddr + CSR14) & ~0x080, ioaddr + CSR14);233 } else if (dev->if_port == 0 || dev->if_port == 4) {234 if ((csr12 & 4) == 0)235 printk(KERN_INFO"%s: 21143 10baseT link beat good.\n",
···910 Please refer to Documentation/DocBook/tulip-user.{pdf,ps,html}11 for more information on this driver.12+13+ DC21143 manual "21143 PCI/CardBus 10/100Mb/s Ethernet LAN Controller14+ Hardware Reference Manual" is currently available at :15+ http://developer.intel.com/design/network/manuals/278074.htm16+17 Please submit bugs to http://bugzilla.kernel.org/ .18*/19···32 int csr12 = ioread32(ioaddr + CSR12);33 int next_tick = 60*HZ;34 int new_csr6 = 0;35+ int csr14 = ioread32(ioaddr + CSR14);3637+ /* CSR12[LS10,LS100] are not reliable during autonegotiation */38+ if ((csr14 & 0x80) && (csr12 & 0x7000) != 0x5000)39+ csr12 |= 6;40 if (tulip_debug > 2)41 printk(KERN_INFO"%s: 21143 negotiation status %8.8x, %s.\n",42 dev->name, csr12, medianame[dev->if_port]);···76 new_csr6 = 0x83860000;77 dev->if_port = 3;78 iowrite32(0, ioaddr + CSR13);79+ iowrite32(0x0003FFFF, ioaddr + CSR14);80 iowrite16(8, ioaddr + CSR15);81 iowrite32(1, ioaddr + CSR13);82 }···132 struct tulip_private *tp = netdev_priv(dev);133 void __iomem *ioaddr = tp->base_addr;134 int csr12 = ioread32(ioaddr + CSR12);135+ int csr14 = ioread32(ioaddr + CSR14);136137+ /* CSR12[LS10,LS100] are not reliable during autonegotiation */138+ if ((csr14 & 0x80) && (csr12 & 0x7000) != 0x5000)139+ csr12 |= 6;140 if (tulip_debug > 1)141 printk(KERN_INFO"%s: 21143 link status interrupt %8.8x, CSR5 %x, "142+ "%8.8x.\n", dev->name, csr12, csr5, csr14);143144 /* If NWay finished and we have a negotiated partner capability. */145 if (tp->nway && !tp->nwayset && (csr12 & 0x7000) == 0x5000) {···143 int negotiated = tp->sym_advertise & (csr12 >> 16);144 tp->lpar = csr12 >> 16;145 tp->nwayset = 1;146+ /* If partner cannot negotiate, it is 10Mbps Half Duplex */147+ if (!(csr12 & 0x8000)) dev->if_port = 0;148+ else if (negotiated & 0x0100) dev->if_port = 5;149 else if (negotiated & 0x0080) dev->if_port = 3;150 else if (negotiated & 0x0040) dev->if_port = 4;151 else if (negotiated & 0x0020) dev->if_port = 0;···214 tp->timer.expires = RUN_AT(3*HZ);215 add_timer(&tp->timer);216 } else if (dev->if_port == 5)217+ iowrite32(csr14 & ~0x080, ioaddr + CSR14);218 } else if (dev->if_port == 0 || dev->if_port == 4) {219 if ((csr12 & 4) == 0)220 printk(KERN_INFO"%s: 21143 10baseT link beat good.\n",
···1186 int oldspeed;1187 int oldduplex;1188 int oldlink;001189};11901191void uec_set_ethtool_ops(struct net_device *netdev);
···1186 int oldspeed;1187 int oldduplex;1188 int oldlink;1189+1190+ struct device_node *node;1191};11921193void uec_set_ethtool_ops(struct net_device *netdev);
···1028 * it's done by reseting the chip. To accomplish this we must1029 * first cleanup any pending DMA, then restart stuff after a la1030 * ath5k_init.001031 */1032static int1033ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan)···2816{2817 struct ath5k_softc *sc = hw->priv;2818 struct ieee80211_conf *conf = &hw->conf;00028192820 sc->bintval = conf->beacon_int;2821 sc->power_level = conf->power_level;28222823- return ath5k_chan_set(sc, conf->channel);0002824}28252826static int
···1028 * it's done by reseting the chip. To accomplish this we must1029 * first cleanup any pending DMA, then restart stuff after a la1030 * ath5k_init.1031+ *1032+ * Called with sc->lock.1033 */1034static int1035ath5k_chan_set(struct ath5k_softc *sc, struct ieee80211_channel *chan)···2814{2815 struct ath5k_softc *sc = hw->priv;2816 struct ieee80211_conf *conf = &hw->conf;2817+ int ret;2818+2819+ mutex_lock(&sc->lock);28202821 sc->bintval = conf->beacon_int;2822 sc->power_level = conf->power_level;28232824+ ret = ath5k_chan_set(sc, conf->channel);2825+2826+ mutex_unlock(&sc->lock);2827+ return ret;2828}28292830static int
+4
drivers/net/wireless/iwlwifi/iwl-agn.c
···1719 priv->ucode_data_backup.len = data_size;1720 iwl_alloc_fw_desc(priv->pci_dev, &priv->ucode_data_backup);172100001722 /* Initialization instructions and data */1723 if (init_size && init_data_size) {1724 priv->ucode_init.len = init_size;
···1719 priv->ucode_data_backup.len = data_size;1720 iwl_alloc_fw_desc(priv->pci_dev, &priv->ucode_data_backup);17211722+ if (!priv->ucode_code.v_addr || !priv->ucode_data.v_addr ||1723+ !priv->ucode_data_backup.v_addr)1724+ goto err_pci_alloc;1725+1726 /* Initialization instructions and data */1727 if (init_size && init_data_size) {1728 priv->ucode_init.len = init_size;
···5obj-$(CONFIG_HOTPLUG_PCI) += pci_hotplug.o6obj-$(CONFIG_HOTPLUG_PCI_COMPAQ) += cpqphp.o7obj-$(CONFIG_HOTPLUG_PCI_IBM) += ibmphp.o8+9+# pciehp should be linked before acpiphp in order to allow the native driver10+# to attempt to bind first. We can then fall back to generic support.11+12+obj-$(CONFIG_HOTPLUG_PCI_PCIE) += pciehp.o13obj-$(CONFIG_HOTPLUG_PCI_ACPI) += acpiphp.o14obj-$(CONFIG_HOTPLUG_PCI_ACPI_IBM) += acpiphp_ibm.o15obj-$(CONFIG_HOTPLUG_PCI_CPCI_ZT5550) += cpcihp_zt5550.o16obj-$(CONFIG_HOTPLUG_PCI_CPCI_GENERIC) += cpcihp_generic.o017obj-$(CONFIG_HOTPLUG_PCI_SHPC) += shpchp.o18obj-$(CONFIG_HOTPLUG_PCI_RPA) += rpaphp.o19obj-$(CONFIG_HOTPLUG_PCI_RPA_DLPAR) += rpadlpar_io.o
+26-16
drivers/pci/hotplug/fakephp.c
···195 * Tries hard not to re-enable already existing devices;196 * also handles scanning of subfunctions.197 */198-static void pci_rescan_slot(struct pci_dev *temp)199{200 struct pci_bus *bus = temp->bus;201 struct pci_dev *dev;202 int func;203- int retval;204 u8 hdr_type;0205206 if (!pci_read_config_byte(temp, PCI_HEADER_TYPE, &hdr_type)) {207 temp->hdr_type = hdr_type & 0x7f;···213 dbg("New device on %s function %x:%x\n",214 bus->name, temp->devfn >> 3,215 temp->devfn & 7);216- retval = pci_bus_add_device(dev);217- if (retval)218- dev_err(&dev->dev, "error adding "219- "device, continuing.\n");220- else221- add_slot(dev);222 }223 }224 /* multifunction device? */225 if (!(hdr_type & 0x80))226- return;227228 /* continue scanning for other functions */229 for (func = 1, temp->devfn++; func < 8; func++, temp->devfn++) {···234 dbg("New device on %s function %x:%x\n",235 bus->name, temp->devfn >> 3,236 temp->devfn & 7);237- retval = pci_bus_add_device(dev);238- if (retval)239- dev_err(&dev->dev, "error adding "240- "device, continuing.\n");241- else242- add_slot(dev);243 }244 }245 }246 }00247}248249···254{255 unsigned int devfn;256 struct pci_dev *dev;00257 dev = alloc_pci_dev();258 if (!dev)259 return;···264 dev->sysdata = bus->sysdata;265 for (devfn = 0; devfn < 0x100; devfn += 8) {266 dev->devfn = devfn;267- pci_rescan_slot(dev);0000000000000000268 }269 kfree(dev);270}
···195 * Tries hard not to re-enable already existing devices;196 * also handles scanning of subfunctions.197 */198+static int pci_rescan_slot(struct pci_dev *temp)199{200 struct pci_bus *bus = temp->bus;201 struct pci_dev *dev;202 int func;0203 u8 hdr_type;204+ int count = 0;205206 if (!pci_read_config_byte(temp, PCI_HEADER_TYPE, &hdr_type)) {207 temp->hdr_type = hdr_type & 0x7f;···213 dbg("New device on %s function %x:%x\n",214 bus->name, temp->devfn >> 3,215 temp->devfn & 7);216+ count++;00000217 }218 }219 /* multifunction device? */220 if (!(hdr_type & 0x80))221+ return count;222223 /* continue scanning for other functions */224 for (func = 1, temp->devfn++; func < 8; func++, temp->devfn++) {···239 dbg("New device on %s function %x:%x\n",240 bus->name, temp->devfn >> 3,241 temp->devfn & 7);242+ count++;00000243 }244 }245 }246 }247+248+ return count;249}250251···262{263 unsigned int devfn;264 struct pci_dev *dev;265+ int retval;266+ int found = 0;267 dev = alloc_pci_dev();268 if (!dev)269 return;···270 dev->sysdata = bus->sysdata;271 for (devfn = 0; devfn < 0x100; devfn += 8) {272 dev->devfn = devfn;273+ found += pci_rescan_slot(dev);274+ }275+276+ if (found) {277+ pci_bus_assign_resources(bus);278+ list_for_each_entry(dev, &bus->devices, bus_list) {279+ /* Skip already-added devices */280+ if (dev->is_added)281+ continue;282+ retval = pci_bus_add_device(dev);283+ if (retval)284+ dev_err(&dev->dev,285+ "Error adding device, continuing\n");286+ else287+ add_slot(dev);288+ }289+ pci_bus_add_devices(bus);290 }291 kfree(dev);292}
+11-2
drivers/pci/msi.c
···103 }104}1050000000000106static void msix_flush_writes(struct irq_desc *desc)107{108 struct msi_desc *entry;···417418 /* All MSIs are unmasked by default, Mask them all */419 pci_read_config_dword(dev, base, &maskbits);420- temp = (1 << multi_msi_capable(control));421- temp = ((temp - 1) & ~temp);422 maskbits |= temp;423 pci_write_config_dword(dev, base, maskbits);424 entry->msi_attrib.maskbits_mask = temp;
···103 }104}105106+/*107+ * Essentially, this is ((1 << (1 << x)) - 1), but without the108+ * undefinedness of a << 32.109+ */110+static inline __attribute_const__ u32 msi_mask(unsigned x)111+{112+ static const u32 mask[] = { 1, 2, 4, 0xf, 0xff, 0xffff, 0xffffffff };113+ return mask[x];114+}115+116static void msix_flush_writes(struct irq_desc *desc)117{118 struct msi_desc *entry;···407408 /* All MSIs are unmasked by default, Mask them all */409 pci_read_config_dword(dev, base, &maskbits);410+ temp = msi_mask((control & PCI_MSI_FLAGS_QMASK) >> 1);0411 maskbits |= temp;412 pci_write_config_dword(dev, base, maskbits);413 entry->msi_attrib.maskbits_mask = temp;
+20-1
drivers/pci/pci-driver.c
···370 }371372 pci_save_state(pci_dev);0373 /*374 * This is for compatibility with existing code with legacy PM support.375 */···420static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev)421{422 pci_restore_standard_config(pci_dev);0423 pci_fixup_device(pci_fixup_resume_early, pci_dev);424}425···557 struct device_driver *drv = dev->driver;558 int error = 0;5590000000560 if (pci_has_legacy_pm_support(pci_dev))561 return pci_legacy_resume(dev);562···669 if (pci_has_legacy_pm_support(pci_dev))670 return pci_legacy_suspend(dev, PMSG_HIBERNATE);671672- if (drv && drv->pm && drv->pm->poweroff) {000673 error = drv->pm->poweroff(dev);674 suspend_report_result(drv->pm->poweroff, error);675 }···721 struct pci_dev *pci_dev = to_pci_dev(dev);722 struct device_driver *drv = dev->driver;723 int error = 0;0000000724725 if (pci_has_legacy_pm_support(pci_dev))726 return pci_legacy_resume(dev);
···370 }371372 pci_save_state(pci_dev);373+ pci_dev->state_saved = true;374 /*375 * This is for compatibility with existing code with legacy PM support.376 */···419static void pci_pm_default_resume_noirq(struct pci_dev *pci_dev)420{421 pci_restore_standard_config(pci_dev);422+ pci_dev->state_saved = false;423 pci_fixup_device(pci_fixup_resume_early, pci_dev);424}425···555 struct device_driver *drv = dev->driver;556 int error = 0;557558+ /*559+ * This is necessary for the suspend error path in which resume is560+ * called without restoring the standard config registers of the device.561+ */562+ if (pci_dev->state_saved)563+ pci_restore_standard_config(pci_dev);564+565 if (pci_has_legacy_pm_support(pci_dev))566 return pci_legacy_resume(dev);567···660 if (pci_has_legacy_pm_support(pci_dev))661 return pci_legacy_suspend(dev, PMSG_HIBERNATE);662663+ if (!drv || !drv->pm)664+ return 0;665+666+ if (drv->pm->poweroff) {667 error = drv->pm->poweroff(dev);668 suspend_report_result(drv->pm->poweroff, error);669 }···709 struct pci_dev *pci_dev = to_pci_dev(dev);710 struct device_driver *drv = dev->driver;711 int error = 0;712+713+ /*714+ * This is necessary for the hibernation error path in which restore is715+ * called without restoring the standard config registers of the device.716+ */717+ if (pci_dev->state_saved)718+ pci_restore_standard_config(pci_dev);719720 if (pci_has_legacy_pm_support(pci_dev))721 return pci_legacy_resume(dev);
+16-16
drivers/pci/pci.c
···1393 pci_power_t prev_state;1394 int error;13951396- pci_restore_state(dev);1397 pci_update_current_state(dev, PCI_D0);13981399 prev_state = dev->current_state;1400 if (prev_state == PCI_D0)1401- return 0;14021403 error = pci_raw_set_power_state(dev, PCI_D0, false);1404 if (error)1405 return error;14061407- if (pci_is_bridge(dev)) {1408- if (prev_state > PCI_D1)1409- mdelay(PCI_PM_BUS_WAIT);1410- } else {1411- switch(prev_state) {1412- case PCI_D3cold:1413- case PCI_D3hot:1414- mdelay(pci_pm_d3_delay);1415- break;1416- case PCI_D2:1417- udelay(PCI_PM_D2_DELAY);1418- break;1419- }1420 }14211422 dev->current_state = PCI_D0;14231424- return 0;01425}14261427/**
···1393 pci_power_t prev_state;1394 int error;139501396 pci_update_current_state(dev, PCI_D0);13971398 prev_state = dev->current_state;1399 if (prev_state == PCI_D0)1400+ goto Restore;14011402 error = pci_raw_set_power_state(dev, PCI_D0, false);1403 if (error)1404 return error;14051406+ /*1407+ * This assumes that we won't get a bus in B2 or B3 from the BIOS, but1408+ * we've made this assumption forever and it appears to be universally1409+ * satisfied.1410+ */1411+ switch(prev_state) {1412+ case PCI_D3cold:1413+ case PCI_D3hot:1414+ mdelay(pci_pm_d3_delay);1415+ break;1416+ case PCI_D2:1417+ udelay(PCI_PM_D2_DELAY);1418+ break;1419 }14201421 dev->current_state = PCI_D0;14221423+ Restore:1424+ return pci_restore_state(dev);1425}14261427/**
+1-5
drivers/regulator/bq24022.c
···152 platform_driver_unregister(&bq24022_driver);153}154155-/*156- * make sure this is probed before gpio_vbus and pda_power,157- * but after asic3 or other GPIO expander drivers.158- */159-subsys_initcall(bq24022_init);160module_exit(bq24022_exit);161162MODULE_AUTHOR("Philipp Zabel");
···8788 return ret;89}90+91+/**92+ * whc_hw_error - recover from a hardware error93+ * @whc: the WHCI HC that broke.94+ * @reason: a description of the failure.95+ *96+ * Recover from broken hardware with a full reset.97+ */98+void whc_hw_error(struct whc *whc, const char *reason)99+{100+ struct wusbhc *wusbhc = &whc->wusbhc;101+102+ dev_err(&whc->umc->dev, "hardware error: %s\n", reason);103+ wusbhc_reset_all(wusbhc);104+}
···386 | USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED);387 port->change |= USB_PORT_STAT_C_CONNECTION | USB_PORT_STAT_C_ENABLE;388 if (wusb_dev) {0389 if (!list_empty(&wusb_dev->cack_node))390 list_del_init(&wusb_dev->cack_node);391 /* For the one in cack_add() */
···386 | USB_PORT_STAT_LOW_SPEED | USB_PORT_STAT_HIGH_SPEED);387 port->change |= USB_PORT_STAT_C_CONNECTION | USB_PORT_STAT_C_ENABLE;388 if (wusb_dev) {389+ dev_dbg(wusbhc->dev, "disconnecting device from port %d\n", wusb_dev->port_idx);390 if (!list_empty(&wusb_dev->cack_node))391 list_del_init(&wusb_dev->cack_node);392 /* For the one in cack_add() */
···15 * You should have received a copy of the GNU General Public License16 * along with this program. If not, see <http://www.gnu.org/licenses/>.17 */18-#include <linux/version.h>19#include <linux/kernel.h>20#include <linux/uwb.h>21
···15 * You should have received a copy of the GNU General Public License16 * along with this program. If not, see <http://www.gnu.org/licenses/>.17 */018#include <linux/kernel.h>19#include <linux/uwb.h>20
···140141 iv = bip_vec_idx(bip, bip->bip_vcnt);142 BUG_ON(iv == NULL);143- BUG_ON(iv->bv_page != NULL);144145 iv->bv_page = page;146 iv->bv_len = len;···464465 if (ret) {466 kunmap_atomic(kaddr, KM_USER0);467- break;468 }469470 sectors = bv->bv_len / bi->sector_size;···492 struct bio_integrity_payload *bip =493 container_of(work, struct bio_integrity_payload, bip_work);494 struct bio *bio = bip->bip_bio;495- int error = bip->bip_error;496497- if (bio_integrity_verify(bio)) {498- clear_bit(BIO_UPTODATE, &bio->bi_flags);499- error = -EIO;500- }501502 /* Restore original bio completion handler */503 bio->bi_end_io = bip->bip_end_io;504-505- if (bio->bi_end_io)506- bio->bi_end_io(bio, error);507}508509/**···519520 BUG_ON(bip->bip_bio != bio);521522- bip->bip_error = error;0000000000523 INIT_WORK(&bip->bip_work, bio_integrity_verify_fn);524 queue_work(kintegrityd_wq, &bip->bip_work);525}
···140141 iv = bip_vec_idx(bip, bip->bip_vcnt);142 BUG_ON(iv == NULL);0143144 iv->bv_page = page;145 iv->bv_len = len;···465466 if (ret) {467 kunmap_atomic(kaddr, KM_USER0);468+ return ret;469 }470471 sectors = bv->bv_len / bi->sector_size;···493 struct bio_integrity_payload *bip =494 container_of(work, struct bio_integrity_payload, bip_work);495 struct bio *bio = bip->bip_bio;496+ int error;497498+ error = bio_integrity_verify(bio);000499500 /* Restore original bio completion handler */501 bio->bi_end_io = bip->bip_end_io;502+ bio_endio(bio, error);00503}504505/**···525526 BUG_ON(bip->bip_bio != bio);527528+ /* In case of an I/O error there is no point in verifying the529+ * integrity metadata. Restore original bio end_io handler530+ * and run it.531+ */532+ if (error) {533+ bio->bi_end_io = bip->bip_end_io;534+ bio_endio(bio, error);535+536+ return;537+ }538+539 INIT_WORK(&bip->bip_work, bio_integrity_verify_fn);540 queue_work(kintegrityd_wq, &bip->bip_work);541}
+7
fs/compat_ioctl.c
···538 * cannot be fixed without breaking all existing apps.539 */540 case TUNSETIFF:0541 case SIOCGIFFLAGS:542 case SIOCGIFMETRIC:543 case SIOCGIFMTU:···1983COMPATIBLE_IOCTL(TUNSETDEBUG)1984COMPATIBLE_IOCTL(TUNSETPERSIST)1985COMPATIBLE_IOCTL(TUNSETOWNER)000001986/* Big V */1987COMPATIBLE_IOCTL(VT_SETMODE)1988COMPATIBLE_IOCTL(VT_GETMODE)···2579HANDLE_IOCTL(SIOCGIFTXQLEN, dev_ifsioc)2580HANDLE_IOCTL(SIOCSIFTXQLEN, dev_ifsioc)2581HANDLE_IOCTL(TUNSETIFF, dev_ifsioc)02582HANDLE_IOCTL(SIOCETHTOOL, ethtool_ioctl)2583HANDLE_IOCTL(SIOCBONDENSLAVE, bond_ioctl)2584HANDLE_IOCTL(SIOCBONDRELEASE, bond_ioctl)
···538 * cannot be fixed without breaking all existing apps.539 */540 case TUNSETIFF:541+ case TUNGETIFF:542 case SIOCGIFFLAGS:543 case SIOCGIFMETRIC:544 case SIOCGIFMTU:···1982COMPATIBLE_IOCTL(TUNSETDEBUG)1983COMPATIBLE_IOCTL(TUNSETPERSIST)1984COMPATIBLE_IOCTL(TUNSETOWNER)1985+COMPATIBLE_IOCTL(TUNSETLINK)1986+COMPATIBLE_IOCTL(TUNSETGROUP)1987+COMPATIBLE_IOCTL(TUNGETFEATURES)1988+COMPATIBLE_IOCTL(TUNSETOFFLOAD)1989+COMPATIBLE_IOCTL(TUNSETTXFILTER)1990/* Big V */1991COMPATIBLE_IOCTL(VT_SETMODE)1992COMPATIBLE_IOCTL(VT_GETMODE)···2573HANDLE_IOCTL(SIOCGIFTXQLEN, dev_ifsioc)2574HANDLE_IOCTL(SIOCSIFTXQLEN, dev_ifsioc)2575HANDLE_IOCTL(TUNSETIFF, dev_ifsioc)2576+HANDLE_IOCTL(TUNGETIFF, dev_ifsioc)2577HANDLE_IOCTL(SIOCETHTOOL, ethtool_ioctl)2578HANDLE_IOCTL(SIOCBONDENSLAVE, bond_ioctl)2579HANDLE_IOCTL(SIOCBONDRELEASE, bond_ioctl)
+14-6
fs/ext3/namei.c
···1358 struct fake_dirent *fde;13591360 blocksize = dir->i_sb->s_blocksize;1361- dxtrace(printk("Creating index\n"));1362 retval = ext3_journal_get_write_access(handle, bh);1363 if (retval) {1364 ext3_std_error(dir->i_sb, retval);···1366 return retval;1367 }1368 root = (struct dx_root *) bh->b_data;000000000000013691370 bh2 = ext3_append (handle, dir, &block, &retval);1371 if (!(bh2)) {···1388 EXT3_I(dir)->i_flags |= EXT3_INDEX_FL;1389 data1 = bh2->b_data;13901391- /* The 0th block becomes the root, move the dirents out */1392- fde = &root->dotdot;1393- de = (struct ext3_dir_entry_2 *)((char *)fde +1394- ext3_rec_len_from_disk(fde->rec_len));1395- len = ((char *) root) + blocksize - (char *) de;1396 memcpy (data1, de, len);1397 de = (struct ext3_dir_entry_2 *) data1;1398 top = data1 + len;
···1358 struct fake_dirent *fde;13591360 blocksize = dir->i_sb->s_blocksize;1361+ dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino));1362 retval = ext3_journal_get_write_access(handle, bh);1363 if (retval) {1364 ext3_std_error(dir->i_sb, retval);···1366 return retval;1367 }1368 root = (struct dx_root *) bh->b_data;1369+1370+ /* The 0th block becomes the root, move the dirents out */1371+ fde = &root->dotdot;1372+ de = (struct ext3_dir_entry_2 *)((char *)fde +1373+ ext3_rec_len_from_disk(fde->rec_len));1374+ if ((char *) de >= (((char *) root) + blocksize)) {1375+ ext3_error(dir->i_sb, __func__,1376+ "invalid rec_len for '..' in inode %lu",1377+ dir->i_ino);1378+ brelse(bh);1379+ return -EIO;1380+ }1381+ len = ((char *) root) + blocksize - (char *) de;13821383 bh2 = ext3_append (handle, dir, &block, &retval);1384 if (!(bh2)) {···1375 EXT3_I(dir)->i_flags |= EXT3_INDEX_FL;1376 data1 = bh2->b_data;1377000001378 memcpy (data1, de, len);1379 de = (struct ext3_dir_entry_2 *) data1;1380 top = data1 + len;
+3-3
fs/ext4/balloc.c
···684 gdp = ext4_get_group_desc(sb, i, NULL);685 if (!gdp)686 continue;687- desc_count += le16_to_cpu(gdp->bg_free_blocks_count);688 brelse(bitmap_bh);689 bitmap_bh = ext4_read_block_bitmap(sb, i);690 if (bitmap_bh == NULL)691 continue;692693 x = ext4_count_free(bitmap_bh, sb->s_blocksize);694- printk(KERN_DEBUG "group %lu: stored = %d, counted = %u\n",695- i, le16_to_cpu(gdp->bg_free_blocks_count), x);696 bitmap_count += x;697 }698 brelse(bitmap_bh);
···684 gdp = ext4_get_group_desc(sb, i, NULL);685 if (!gdp)686 continue;687+ desc_count += ext4_free_blks_count(sb, gdp);688 brelse(bitmap_bh);689 bitmap_bh = ext4_read_block_bitmap(sb, i);690 if (bitmap_bh == NULL)691 continue;692693 x = ext4_count_free(bitmap_bh, sb->s_blocksize);694+ printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n",695+ i, ext4_free_blks_count(sb, gdp), x);696 bitmap_count += x;697 }698 brelse(bitmap_bh);
···360 final = ptrs;361 } else {362 ext4_warning(inode->i_sb, "ext4_block_to_path",363- "block %lu > max",364 i_block + direct_blocks +365- indirect_blocks + double_blocks);366 }367 if (boundary)368 *boundary = final - 1 - (i_block & (ptrs - 1));···2821 filemap_write_and_wait(mapping);2822 }28232824- BUG_ON(!EXT4_JOURNAL(inode) &&2825- EXT4_I(inode)->i_state & EXT4_STATE_JDATA);2826-2827 if (EXT4_JOURNAL(inode) && EXT4_I(inode)->i_state & EXT4_STATE_JDATA) {2828 /*2829 * This is a REALLY heavyweight approach, but the use of···3619 * block pointed to itself, it would have been detached when3620 * the block was cleared. Check for this instead of OOPSing.3621 */3622- if (bh2jh(this_bh))3623 ext4_handle_dirty_metadata(handle, inode, this_bh);3624 else3625 ext4_error(inode->i_sb, __func__,
···360 final = ptrs;361 } else {362 ext4_warning(inode->i_sb, "ext4_block_to_path",363+ "block %lu > max in inode %lu",364 i_block + direct_blocks +365+ indirect_blocks + double_blocks, inode->i_ino);366 }367 if (boundary)368 *boundary = final - 1 - (i_block & (ptrs - 1));···2821 filemap_write_and_wait(mapping);2822 }28230002824 if (EXT4_JOURNAL(inode) && EXT4_I(inode)->i_state & EXT4_STATE_JDATA) {2825 /*2826 * This is a REALLY heavyweight approach, but the use of···3622 * block pointed to itself, it would have been detached when3623 * the block was cleared. Check for this instead of OOPSing.3624 */3625+ if ((EXT4_JOURNAL(inode) == NULL) || bh2jh(this_bh))3626 ext4_handle_dirty_metadata(handle, inode, this_bh);3627 else3628 ext4_error(inode->i_sb, __func__,
+1-1
fs/ext4/mballoc.c
···3025 goto out_err;30263027 ext4_debug("using block group %u(%d)\n", ac->ac_b_ex.fe_group,3028- gdp->bg_free_blocks_count);30293030 err = ext4_journal_get_write_access(handle, gdp_bh);3031 if (err)
···3025 goto out_err;30263027 ext4_debug("using block group %u(%d)\n", ac->ac_b_ex.fe_group,3028+ ext4_free_blks_count(sb, gdp));30293030 err = ext4_journal_get_write_access(handle, gdp_bh);3031 if (err)
+15-6
fs/ext4/namei.c
···1368 struct fake_dirent *fde;13691370 blocksize = dir->i_sb->s_blocksize;1371- dxtrace(printk(KERN_DEBUG "Creating index\n"));1372 retval = ext4_journal_get_write_access(handle, bh);1373 if (retval) {1374 ext4_std_error(dir->i_sb, retval);···1377 }1378 root = (struct dx_root *) bh->b_data;1379000000000000001380 bh2 = ext4_append(handle, dir, &block, &retval);1381 if (!(bh2)) {1382 brelse(bh);···1399 EXT4_I(dir)->i_flags |= EXT4_INDEX_FL;1400 data1 = bh2->b_data;14011402- /* The 0th block becomes the root, move the dirents out */1403- fde = &root->dotdot;1404- de = (struct ext4_dir_entry_2 *)((char *)fde +1405- ext4_rec_len_from_disk(fde->rec_len));1406- len = ((char *) root) + blocksize - (char *) de;1407 memcpy (data1, de, len);1408 de = (struct ext4_dir_entry_2 *) data1;1409 top = data1 + len;
···1368 struct fake_dirent *fde;13691370 blocksize = dir->i_sb->s_blocksize;1371+ dxtrace(printk(KERN_DEBUG "Creating index: inode %lu\n", dir->i_ino));1372 retval = ext4_journal_get_write_access(handle, bh);1373 if (retval) {1374 ext4_std_error(dir->i_sb, retval);···1377 }1378 root = (struct dx_root *) bh->b_data;13791380+ /* The 0th block becomes the root, move the dirents out */1381+ fde = &root->dotdot;1382+ de = (struct ext4_dir_entry_2 *)((char *)fde +1383+ ext4_rec_len_from_disk(fde->rec_len));1384+ if ((char *) de >= (((char *) root) + blocksize)) {1385+ ext4_error(dir->i_sb, __func__,1386+ "invalid rec_len for '..' in inode %lu",1387+ dir->i_ino);1388+ brelse(bh);1389+ return -EIO;1390+ }1391+ len = ((char *) root) + blocksize - (char *) de;1392+1393+ /* Allocate new block for the 0th block's dirents */1394 bh2 = ext4_append(handle, dir, &block, &retval);1395 if (!(bh2)) {1396 brelse(bh);···1385 EXT4_I(dir)->i_flags |= EXT4_INDEX_FL;1386 data1 = bh2->b_data;1387000001388 memcpy (data1, de, len);1389 de = (struct ext4_dir_entry_2 *) data1;1390 top = data1 + len;
···1#ifndef _LINUX_ATMBR2684_H2#define _LINUX_ATMBR2684_H304#include <linux/atm.h>5#include <linux/if.h> /* For IFNAMSIZ */6
···1#ifndef _LINUX_ATMBR2684_H2#define _LINUX_ATMBR2684_H34+#include <linux/types.h>5#include <linux/atm.h>6#include <linux/if.h> /* For IFNAMSIZ */7
+1
include/linux/auto_fs4.h
···12#define _LINUX_AUTO_FS4_H1314/* Include common v3 definitions */015#include <linux/auto_fs.h>1617/* autofs v4 definitions */
···12#define _LINUX_AUTO_FS4_H1314/* Include common v3 definitions */15+#include <linux/types.h>16#include <linux/auto_fs.h>1718/* autofs v4 definitions */
+2-1
include/linux/bfs_fs.h
···6#ifndef _LINUX_BFS_FS_H7#define _LINUX_BFS_FS_H8009#define BFS_BSIZE_BITS 910#define BFS_BSIZE (1<<BFS_BSIZE_BITS)11···18/* SVR4 vnode type values (bfs_inode->i_vtype) */19#define BFS_VDIR 2L20#define BFS_VREG 1L21-2223/* BFS inode layout on disk */24struct bfs_inode {
···6#ifndef _LINUX_BFS_FS_H7#define _LINUX_BFS_FS_H89+#include <linux/types.h>10+11#define BFS_BSIZE_BITS 912#define BFS_BSIZE (1<<BFS_BSIZE_BITS)13···16/* SVR4 vnode type values (bfs_inode->i_vtype) */17#define BFS_VDIR 2L18#define BFS_VREG 1L01920/* BFS inode layout on disk */21struct bfs_inode {
+34-21
include/linux/bio.h
···144 * bit 1 -- rw-ahead when set145 * bit 2 -- barrier146 * Insert a serialization point in the IO queue, forcing previously147- * submitted IO to be completed before this oen is issued.148 * bit 3 -- synchronous I/O hint: the block layer will unplug immediately149 * Note that this does NOT indicate that the IO itself is sync, just150 * that the block layer will not postpone issue of this IO by plugging.···163#define BIO_RW 0 /* Must match RW in req flags (blkdev.h) */164#define BIO_RW_AHEAD 1 /* Must match FAILFAST in req flags */165#define BIO_RW_BARRIER 2166-#define BIO_RW_SYNC 3167-#define BIO_RW_META 4168-#define BIO_RW_DISCARD 5169-#define BIO_RW_FAILFAST_DEV 6170-#define BIO_RW_FAILFAST_TRANSPORT 7171-#define BIO_RW_FAILFAST_DRIVER 8000000000000000000000172173/*174 * upper 16 bits of bi_rw define the io priority of this bio···214#define bio_offset(bio) bio_iovec((bio))->bv_offset215#define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx)216#define bio_sectors(bio) ((bio)->bi_size >> 9)217-#define bio_barrier(bio) ((bio)->bi_rw & (1 << BIO_RW_BARRIER))218-#define bio_sync(bio) ((bio)->bi_rw & (1 << BIO_RW_SYNC))219-#define bio_failfast_dev(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DEV))220-#define bio_failfast_transport(bio) \221- ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_TRANSPORT))222-#define bio_failfast_driver(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST_DRIVER))223-#define bio_rw_ahead(bio) ((bio)->bi_rw & (1 << BIO_RW_AHEAD))224-#define bio_rw_meta(bio) ((bio)->bi_rw & (1 << BIO_RW_META))225-#define bio_discard(bio) ((bio)->bi_rw & (1 << BIO_RW_DISCARD))226#define bio_empty_barrier(bio) (bio_barrier(bio) && !bio_has_data(bio) && !bio_discard(bio))227228static inline unsigned int bio_cur_sectors(struct bio *bio)···324 void *bip_buf; /* generated integrity data */325 bio_end_io_t *bip_end_io; /* saved I/O completion fn */326327- int bip_error; /* saved I/O error */328 unsigned int bip_size;329330 unsigned short bip_pool; /* pool the ivec came from */···451452#ifdef CONFIG_HIGHMEM453/*454- * remember to add offset! and never ever reenable interrupts between a455- * bvec_kmap_irq and bvec_kunmap_irq!!456 *457 * This function MUST be inlined - it plays with the CPU interrupt flags.458 */459-static inline char *bvec_kmap_irq(struct bio_vec *bvec, unsigned long *flags)0460{461 unsigned long addr;462···473 return (char *) addr + bvec->bv_offset;474}475476-static inline void bvec_kunmap_irq(char *buffer, unsigned long *flags)0477{478 unsigned long ptr = (unsigned long) buffer & PAGE_MASK;479
···144 * bit 1 -- rw-ahead when set145 * bit 2 -- barrier146 * Insert a serialization point in the IO queue, forcing previously147+ * submitted IO to be completed before this one is issued.148 * bit 3 -- synchronous I/O hint: the block layer will unplug immediately149 * Note that this does NOT indicate that the IO itself is sync, just150 * that the block layer will not postpone issue of this IO by plugging.···163#define BIO_RW 0 /* Must match RW in req flags (blkdev.h) */164#define BIO_RW_AHEAD 1 /* Must match FAILFAST in req flags */165#define BIO_RW_BARRIER 2166+#define BIO_RW_SYNCIO 3167+#define BIO_RW_UNPLUG 4168+#define BIO_RW_META 5169+#define BIO_RW_DISCARD 6170+#define BIO_RW_FAILFAST_DEV 7171+#define BIO_RW_FAILFAST_TRANSPORT 8172+#define BIO_RW_FAILFAST_DRIVER 9173+174+#define BIO_RW_SYNC (BIO_RW_SYNCIO | BIO_RW_UNPLUG)175+176+#define bio_rw_flagged(bio, flag) ((bio)->bi_rw & (1 << (flag)))177+178+/*179+ * Old defines, these should eventually be replaced by direct usage of180+ * bio_rw_flagged()181+ */182+#define bio_barrier(bio) bio_rw_flagged(bio, BIO_RW_BARRIER)183+#define bio_sync(bio) bio_rw_flagged(bio, BIO_RW_SYNCIO)184+#define bio_unplug(bio) bio_rw_flagged(bio, BIO_RW_UNPLUG)185+#define bio_failfast_dev(bio) bio_rw_flagged(bio, BIO_RW_FAILFAST_DEV)186+#define bio_failfast_transport(bio) \187+ bio_rw_flagged(bio, BIO_RW_FAILFAST_TRANSPORT)188+#define bio_failfast_driver(bio) \189+ bio_rw_flagged(bio, BIO_RW_FAILFAST_DRIVER)190+#define bio_rw_ahead(bio) bio_rw_flagged(bio, BIO_RW_AHEAD)191+#define bio_rw_meta(bio) bio_rw_flagged(bio, BIO_RW_META)192+#define bio_discard(bio) bio_rw_flagged(bio, BIO_RW_DISCARD)193194/*195 * upper 16 bits of bi_rw define the io priority of this bio···193#define bio_offset(bio) bio_iovec((bio))->bv_offset194#define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx)195#define bio_sectors(bio) ((bio)->bi_size >> 9)000000000196#define bio_empty_barrier(bio) (bio_barrier(bio) && !bio_has_data(bio) && !bio_discard(bio))197198static inline unsigned int bio_cur_sectors(struct bio *bio)···312 void *bip_buf; /* generated integrity data */313 bio_end_io_t *bip_end_io; /* saved I/O completion fn */3140315 unsigned int bip_size;316317 unsigned short bip_pool; /* pool the ivec came from */···440441#ifdef CONFIG_HIGHMEM442/*443+ * remember never ever reenable interrupts between a bvec_kmap_irq and444+ * bvec_kunmap_irq!445 *446 * This function MUST be inlined - it plays with the CPU interrupt flags.447 */448+static __always_inline char *bvec_kmap_irq(struct bio_vec *bvec,449+ unsigned long *flags)450{451 unsigned long addr;452···461 return (char *) addr + bvec->bv_offset;462}463464+static __always_inline void bvec_kunmap_irq(char *buffer,465+ unsigned long *flags)466{467 unsigned long ptr = (unsigned long) buffer & PAGE_MASK;468
···14#ifndef CAN_BCM_H15#define CAN_BCM_H160017/**18 * struct bcm_msg_head - head of messages to/from the broadcast manager19 * @opcode: opcode, see enum below.
···14#ifndef CAN_BCM_H15#define CAN_BCM_H1617+#include <linux/types.h>18+19/**20 * struct bcm_msg_head - head of messages to/from the broadcast manager21 * @opcode: opcode, see enum below.
···1#ifndef _LINUX_DN_H2#define _LINUX_DN_H3004/*56 DECnet Data Structures and Constants
···1#ifndef _LINUX_DN_H2#define _LINUX_DN_H34+#include <linux/types.h>5+6/*78 DECnet Data Structures and Constants
-5
include/linux/dvb/audio.h
···24#ifndef _DVBAUDIO_H_25#define _DVBAUDIO_H_2627-#ifdef __KERNEL__28#include <linux/types.h>29-#else30-#include <stdint.h>31-#endif32-3334typedef enum {35 AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
···24#ifndef _DVBAUDIO_H_25#define _DVBAUDIO_H_26027#include <linux/types.h>00002829typedef enum {30 AUDIO_SOURCE_DEMUX, /* Select the demux as the main source */
···30#ifndef _LINUX_EDD_H31#define _LINUX_EDD_H320033#define EDDNR 0x1e9 /* addr of number of edd_info structs at EDDBUF34 in boot_params - treat this as 1 byte */35#define EDDBUF 0xd00 /* addr of edd_info structs in boot_params */
···30#ifndef _LINUX_EDD_H31#define _LINUX_EDD_H3233+#include <linux/types.h>34+35#define EDDNR 0x1e9 /* addr of number of edd_info structs at EDDBUF36 in boot_params - treat this as 1 byte */37#define EDDBUF 0xd00 /* addr of edd_info structs in boot_params */
···58#define ELF_FDPIC_FLAG_PRESENT 0x80000000 /* T if this object is present */59};60061#ifdef CONFIG_MMU62extern void elf_fdpic_arch_lay_out_mm(struct elf_fdpic_params *exec_params,63 struct elf_fdpic_params *interp_params,64 unsigned long *start_stack,65 unsigned long *start_brk);66#endif06768#endif /* _LINUX_ELF_FDPIC_H */
···58#define ELF_FDPIC_FLAG_PRESENT 0x80000000 /* T if this object is present */59};6061+#ifdef __KERNEL__62#ifdef CONFIG_MMU63extern void elf_fdpic_arch_lay_out_mm(struct elf_fdpic_params *exec_params,64 struct elf_fdpic_params *interp_params,65 unsigned long *start_stack,66 unsigned long *start_brk);67#endif68+#endif /* __KERNEL__ */6970#endif /* _LINUX_ELF_FDPIC_H */
+2-1
include/linux/elf.h
···377 Elf64_Word n_type; /* Content type */378} Elf64_Nhdr;3790380#if ELF_CLASS == ELFCLASS32381382extern Elf32_Dyn _DYNAMIC [];···405extern int elf_coredump_extra_notes_size(void);406extern int elf_coredump_extra_notes_write(struct file *file, loff_t *foffset);407#endif408-409#endif /* _LINUX_ELF_H */
···377 Elf64_Word n_type; /* Content type */378} Elf64_Nhdr;379380+#ifdef __KERNEL__381#if ELF_CLASS == ELFCLASS32382383extern Elf32_Dyn _DYNAMIC [];···404extern int elf_coredump_extra_notes_size(void);405extern int elf_coredump_extra_notes_write(struct file *file, loff_t *foffset);406#endif407+#endif /* __KERNEL__ */408#endif /* _LINUX_ELF_H */
···1#ifndef __LINUX_GENERIC_NETLINK_H2#define __LINUX_GENERIC_NETLINK_H304#include <linux/netlink.h>56#define GENL_NAMSIZ 16 /* length of family name */
···1#ifndef __LINUX_GENERIC_NETLINK_H2#define __LINUX_GENERIC_NETLINK_H34+#include <linux/types.h>5#include <linux/netlink.h>67#define GENL_NAMSIZ 16 /* length of family name */
···1#ifndef _LINUX_IF_LINK_H2#define _LINUX_IF_LINK_H304#include <linux/netlink.h>56/* The struct should be in sync with struct net_device_stats */
···1#ifndef _LINUX_IF_LINK_H2#define _LINUX_IF_LINK_H34+#include <linux/types.h>5#include <linux/netlink.h>67/* The struct should be in sync with struct net_device_stats */
···1#ifndef _INET_DIAG_H_2#define _INET_DIAG_H_ 13004/* Just some random number */5#define TCPDIAG_GETSOCK 186#define DCCPDIAG_GETSOCK 19
···1#ifndef _INET_DIAG_H_2#define _INET_DIAG_H_ 134+#include <linux/types.h>5+6/* Just some random number */7#define TCPDIAG_GETSOCK 188#define DCCPDIAG_GETSOCK 19
···13#ifndef _LINUX_IPV6_ROUTE_H14#define _LINUX_IPV6_ROUTE_H150016#define RTF_DEFAULT 0x00010000 /* default - learned via ND */17#define RTF_ALLONLINK 0x00020000 /* (deprecated and will be removed)18 fallback, no routers on link */
···13#ifndef _LINUX_IPV6_ROUTE_H14#define _LINUX_IPV6_ROUTE_H1516+#include <linux/types.h>17+18#define RTF_DEFAULT 0x00010000 /* default - learned via ND */19#define RTF_ALLONLINK 0x00020000 /* (deprecated and will be removed)20 fallback, no routers on link */
···25#ifndef KERNEL_IRDA_H26#define KERNEL_IRDA_H270028/* Please do *not* add any #include in this file, this file is29 * included as-is in user space.30 * Please fix the calling file to properly included needed files before
···25#ifndef KERNEL_IRDA_H26#define KERNEL_IRDA_H2728+#include <linux/types.h>29+30/* Please do *not* add any #include in this file, this file is31 * included as-is in user space.32 * Please fix the calling file to properly included needed files before
+2-1
include/linux/jbd2.h
···308 int val = (expr); \309 if (!val) { \310 printk(KERN_ERR \311- "EXT3-fs unexpected failure: %s;\n",# expr); \0312 printk(KERN_ERR why "\n"); \313 } \314 val; \
···308 int val = (expr); \309 if (!val) { \310 printk(KERN_ERR \311+ "JBD2 unexpected failure: %s: %s;\n", \312+ __func__, #expr); \313 printk(KERN_ERR why "\n"); \314 } \315 val; \
···219220#endif221222-struct module_ref223-{224- local_t count;225-} ____cacheline_aligned;226-227enum module_state228{229 MODULE_STATE_LIVE,···339 /* Destruction function. */340 void (*exit)(void);341342- /* Reference counts */343- struct module_ref ref[NR_CPUS];000344#endif345};346#ifndef MODULE_ARCH_INIT···393#define symbol_put(x) __symbol_put(MODULE_SYMBOL_PREFIX #x)394void symbol_put_addr(void *addr);395000000000396/* Sometimes we know we already have a refcount, and it's easier not397 to handle the error case (which only happens with rmmod --wait). */398static inline void __module_get(struct module *module)399{400 if (module) {401 BUG_ON(module_refcount(module) == 0);402- local_inc(&module->ref[get_cpu()].count);403 put_cpu();404 }405}···420 if (module) {421 unsigned int cpu = get_cpu();422 if (likely(module_is_live(module)))423- local_inc(&module->ref[cpu].count);424 else425 ret = 0;426 put_cpu();
···219220#endif22100000222enum module_state223{224 MODULE_STATE_LIVE,···344 /* Destruction function. */345 void (*exit)(void);346347+#ifdef CONFIG_SMP348+ char *refptr;349+#else350+ local_t ref;351+#endif352#endif353};354#ifndef MODULE_ARCH_INIT···395#define symbol_put(x) __symbol_put(MODULE_SYMBOL_PREFIX #x)396void symbol_put_addr(void *addr);397398+static inline local_t *__module_ref_addr(struct module *mod, int cpu)399+{400+#ifdef CONFIG_SMP401+ return (local_t *) (mod->refptr + per_cpu_offset(cpu));402+#else403+ return &mod->ref;404+#endif405+}406+407/* Sometimes we know we already have a refcount, and it's easier not408 to handle the error case (which only happens with rmmod --wait). */409static inline void __module_get(struct module *module)410{411 if (module) {412 BUG_ON(module_refcount(module) == 0);413+ local_inc(__module_ref_addr(module, get_cpu()));414 put_cpu();415 }416}···413 if (module) {414 unsigned int cpu = get_cpu();415 if (likely(module_is_live(module)))416+ local_inc(__module_ref_addr(module, cpu));417 else418 ret = 0;419 put_cpu();
···37#ifndef NFS_IDMAP_H38#define NFS_IDMAP_H390040/* XXX from bits/utmp.h */41#define IDMAP_NAMESZ 12842
···37#ifndef NFS_IDMAP_H38#define NFS_IDMAP_H3940+#include <linux/types.h>41+42/* XXX from bits/utmp.h */43#define IDMAP_NAMESZ 12844
+1-2
include/linux/nfsd/export.h
···10#ifndef NFSD_EXPORT_H11#define NFSD_EXPORT_H1213-#include <asm/types.h>14-#ifdef __KERNEL__15# include <linux/types.h>016# include <linux/in.h>17#endif18
···10#ifndef NFSD_EXPORT_H11#define NFSD_EXPORT_H120013# include <linux/types.h>14+#ifdef __KERNEL__15# include <linux/in.h>16#endif17
+1-2
include/linux/nfsd/nfsfh.h
···14#ifndef _LINUX_NFSD_FH_H15#define _LINUX_NFSD_FH_H1617-#include <asm/types.h>18-#ifdef __KERNEL__19# include <linux/types.h>020# include <linux/string.h>21# include <linux/fs.h>22#endif
···14#ifndef _LINUX_NFSD_FH_H15#define _LINUX_NFSD_FH_H160017# include <linux/types.h>18+#ifdef __KERNEL__19# include <linux/string.h>20# include <linux/fs.h>21#endif
+1-2
include/linux/nfsd/syscall.h
···9#ifndef NFSD_SYSCALL_H10#define NFSD_SYSCALL_H1112-#include <asm/types.h>13-#ifdef __KERNEL__14# include <linux/types.h>015# include <linux/in.h>16#endif 17#include <linux/posix_types.h>
···9#ifndef NFSD_SYSCALL_H10#define NFSD_SYSCALL_H110012# include <linux/types.h>13+#ifdef __KERNEL__14# include <linux/in.h>15#endif 16#include <linux/posix_types.h>
···1#ifndef __LINUX_PKT_CLS_H2#define __LINUX_PKT_CLS_H304#include <linux/pkt_sched.h>56/* I think i could have done better macros ; for now this is stolen from
···1#ifndef __LINUX_PKT_CLS_H2#define __LINUX_PKT_CLS_H34+#include <linux/types.h>5#include <linux/pkt_sched.h>67/* I think i could have done better macros ; for now this is stolen from
+2
include/linux/pkt_sched.h
···1#ifndef __LINUX_PKT_SCHED_H2#define __LINUX_PKT_SCHED_H3004/* Logical priority bands not depending on specific packet scheduler.5 Every scheduler will map them to real traffic classes, if it has6 no more precise mechanism to classify packets.
···1#ifndef __LINUX_PKT_SCHED_H2#define __LINUX_PKT_SCHED_H34+#include <linux/types.h>5+6/* Logical priority bands not depending on specific packet scheduler.7 Every scheduler will map them to real traffic classes, if it has8 no more precise mechanism to classify packets.
+2
include/linux/ppp_defs.h
···25 * OR MODIFICATIONS.26 */270028/*29 * ==FILEVERSION 20000114==30 *
···25 * OR MODIFICATIONS.26 */2728+#include <linux/types.h>29+30/*31 * ==FILEVERSION 20000114==32 *
···22#ifndef SPIDEV_H23#define SPIDEV_H2402526/* User space versions of kernel symbols for SPI clocking modes,27 * matching <linux/spi/spi.h>
···22#ifndef SPIDEV_H23#define SPIDEV_H2425+#include <linux/types.h>2627/* User space versions of kernel symbols for SPI clocking modes,28 * matching <linux/spi/spi.h>
···16#ifndef _LINUX_TASKSTATS_H17#define _LINUX_TASKSTATS_H180019/* Format for per-task data returned to userland when20 * - a task exits21 * - listener requests stats for a task
···16#ifndef _LINUX_TASKSTATS_H17#define _LINUX_TASKSTATS_H1819+#include <linux/types.h>20+21/* Format for per-task data returned to userland when22 * - a task exits23 * - listener requests stats for a task
···1#ifndef _LINUX_VIDEO_DECODER_H2#define _LINUX_VIDEO_DECODER_H3004#define HAVE_VIDEO_DECODER 156struct video_decoder_capability { /* this name is too long */
···1#ifndef _LINUX_VIDEO_DECODER_H2#define _LINUX_VIDEO_DECODER_H34+#include <linux/types.h>5+6#define HAVE_VIDEO_DECODER 178struct video_decoder_capability { /* this name is too long */
+2
include/linux/video_encoder.h
···1#ifndef _LINUX_VIDEO_ENCODER_H2#define _LINUX_VIDEO_ENCODER_H3004struct video_encoder_capability { /* this name is too long */5 __u32 flags;6#define VIDEO_ENCODER_PAL 1 /* can encode PAL signal */
···1#ifndef _LINUX_VIDEO_ENCODER_H2#define _LINUX_VIDEO_ENCODER_H34+#include <linux/types.h>5+6struct video_encoder_capability { /* this name is too long */7 __u32 flags;8#define VIDEO_ENCODER_PAL 1 /* can encode PAL signal */
···2#define _LINUX_VIRTIO_BLK_H3/* This header is BSD licensed so anyone can use the definitions to implement4 * compatible drivers/servers. */05#include <linux/virtio_config.h>67/* The ID for virtio_block */
···2#define _LINUX_VIRTIO_BLK_H3/* This header is BSD licensed so anyone can use the definitions to implement4 * compatible drivers/servers. */5+#include <linux/types.h>6#include <linux/virtio_config.h>78/* The ID for virtio_block */
+1
include/linux/virtio_console.h
···1#ifndef _LINUX_VIRTIO_CONSOLE_H2#define _LINUX_VIRTIO_CONSOLE_H03#include <linux/virtio_config.h>4/* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so5 * anyone can use the definitions to implement compatible drivers/servers. */
···1#ifndef _LINUX_VIRTIO_CONSOLE_H2#define _LINUX_VIRTIO_CONSOLE_H3+#include <linux/types.h>4#include <linux/virtio_config.h>5/* This header, excluding the #ifdef __KERNEL__ part, is BSD licensed so6 * anyone can use the definitions to implement compatible drivers/servers. */
+1
include/linux/virtio_net.h
···2#define _LINUX_VIRTIO_NET_H3/* This header is BSD licensed so anyone can use the definitions to implement4 * compatible drivers/servers. */05#include <linux/virtio_config.h>67/* The ID for virtio_net */
···2#define _LINUX_VIRTIO_NET_H3/* This header is BSD licensed so anyone can use the definitions to implement4 * compatible drivers/servers. */5+#include <linux/types.h>6#include <linux/virtio_config.h>78/* The ID for virtio_net */
+4-4
include/media/v4l2-device.h
···94/* Call the specified callback for all subdevs matching grp_id (if 0, then95 match them all). Ignore any errors. Note that you cannot add or delete96 a subdev while walking the subdevs list. */97-#define v4l2_device_call_all(dev, grp_id, o, f, args...) \98 __v4l2_device_call_subdevs(dev, \99- !(grp_id) || sd->grp_id == (grp_id), o, f , ##args)100101/* Call the specified callback for all subdevs matching grp_id (if 0, then102 match them all). If the callback returns an error other than 0 or103 -ENOIOCTLCMD, then return with that error code. Note that you cannot104 add or delete a subdev while walking the subdevs list. */105-#define v4l2_device_call_until_err(dev, grp_id, o, f, args...) \106 __v4l2_device_call_subdevs_until_err(dev, \107- !(grp_id) || sd->grp_id == (grp_id), o, f , ##args)108109#endif
···94/* Call the specified callback for all subdevs matching grp_id (if 0, then95 match them all). Ignore any errors. Note that you cannot add or delete96 a subdev while walking the subdevs list. */97+#define v4l2_device_call_all(dev, grpid, o, f, args...) \98 __v4l2_device_call_subdevs(dev, \99+ !(grpid) || sd->grp_id == (grpid), o, f , ##args)100101/* Call the specified callback for all subdevs matching grp_id (if 0, then102 match them all). If the callback returns an error other than 0 or103 -ENOIOCTLCMD, then return with that error code. Note that you cannot104 add or delete a subdev while walking the subdevs list. */105+#define v4l2_device_call_until_err(dev, grpid, o, f, args...) \106 __v4l2_device_call_subdevs_until_err(dev, \107+ !(grpid) || sd->grp_id == (grpid), o, f , ##args)108109#endif
···368 file = hugetlb_file_setup(name, size);369 shp->mlock_user = current_user();370 } else {371- int acctflag = VM_ACCOUNT;372 /*373 * Do not allow no accounting for OVERCOMMIT_NEVER, even374 * if it's asked for.375 */376 if ((shmflg & SHM_NORESERVE) &&377 sysctl_overcommit_memory != OVERCOMMIT_NEVER)378- acctflag = 0;379 file = shmem_file_setup(name, size, acctflag);380 }381 error = PTR_ERR(file);
···368 file = hugetlb_file_setup(name, size);369 shp->mlock_user = current_user();370 } else {371+ int acctflag = 0;372 /*373 * Do not allow no accounting for OVERCOMMIT_NEVER, even374 * if it's asked for.375 */376 if ((shmflg & SHM_NORESERVE) &&377 sysctl_overcommit_memory != OVERCOMMIT_NEVER)378+ acctflag = VM_NORESERVE;379 file = shmem_file_setup(name, size, acctflag);380 }381 error = PTR_ERR(file);
+12-1
kernel/cpuset.c
···61#include <linux/cgroup.h>6263/*0000000064 * Tracks how many cpusets are currently defined in system.65 * When there is only one cpuset (the root cpuset) we can66 * short circuit some hooks.···839 */840static void async_rebuild_sched_domains(void)841{842- schedule_work(&rebuild_sched_domains_work);843}844845/*···21192120 hotcpu_notifier(cpuset_track_online_cpus, 0);2121 hotplug_memory_notifier(cpuset_track_online_nodes, 10);0002122}21232124/**
···61#include <linux/cgroup.h>6263/*64+ * Workqueue for cpuset related tasks.65+ *66+ * Using kevent workqueue may cause deadlock when memory_migrate67+ * is set. So we create a separate workqueue thread for cpuset.68+ */69+static struct workqueue_struct *cpuset_wq;70+71+/*72 * Tracks how many cpusets are currently defined in system.73 * When there is only one cpuset (the root cpuset) we can74 * short circuit some hooks.···831 */832static void async_rebuild_sched_domains(void)833{834+ queue_work(cpuset_wq, &rebuild_sched_domains_work);835}836837/*···21112112 hotcpu_notifier(cpuset_track_online_cpus, 0);2113 hotplug_memory_notifier(cpuset_track_online_nodes, 10);2114+2115+ cpuset_wq = create_singlethread_workqueue("cpuset");2116+ BUG_ON(!cpuset_wq);2117}21182119/**
+40-1
kernel/hrtimer.c
···501 continue;502 timer = rb_entry(base->first, struct hrtimer, node);503 expires = ktime_sub(hrtimer_get_expires(timer), base->offset);0000000504 if (expires.tv64 < cpu_base->expires_next.tv64)505 cpu_base->expires_next = expires;506 }···11651166#ifdef CONFIG_HIGH_RES_TIMERS1167000000000000000000000001168/*1169 * High resolution timer interrupt1170 * Called with interrupts disabled···1197 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);1198 struct hrtimer_clock_base *base;1199 ktime_t expires_next, now;01200 int i;12011202 BUG_ON(!cpu_base->hres_active);···1205 dev->next_event.tv64 = KTIME_MAX;12061207 retry:00001208 now = ktime_get();12091210 expires_next.tv64 = KTIME_MAX;···12611262 /* Reprogramming necessary ? */1263 if (expires_next.tv64 != KTIME_MAX) {1264- if (tick_program_event(expires_next, 0))1265 goto retry;1266 }1267}···1615 break;16161617#ifdef CONFIG_HOTPLUG_CPU00001618 case CPU_DEAD:1619 case CPU_DEAD_FROZEN:1620 {
···501 continue;502 timer = rb_entry(base->first, struct hrtimer, node);503 expires = ktime_sub(hrtimer_get_expires(timer), base->offset);504+ /*505+ * clock_was_set() has changed base->offset so the506+ * result might be negative. Fix it up to prevent a507+ * false positive in clockevents_program_event()508+ */509+ if (expires.tv64 < 0)510+ expires.tv64 = 0;511 if (expires.tv64 < cpu_base->expires_next.tv64)512 cpu_base->expires_next = expires;513 }···11581159#ifdef CONFIG_HIGH_RES_TIMERS11601161+static int force_clock_reprogram;1162+1163+/*1164+ * After 5 iteration's attempts, we consider that hrtimer_interrupt()1165+ * is hanging, which could happen with something that slows the interrupt1166+ * such as the tracing. Then we force the clock reprogramming for each future1167+ * hrtimer interrupts to avoid infinite loops and use the min_delta_ns1168+ * threshold that we will overwrite.1169+ * The next tick event will be scheduled to 3 times we currently spend on1170+ * hrtimer_interrupt(). This gives a good compromise, the cpus will spend1171+ * 1/4 of their time to process the hrtimer interrupts. This is enough to1172+ * let it running without serious starvation.1173+ */1174+1175+static inline void1176+hrtimer_interrupt_hanging(struct clock_event_device *dev,1177+ ktime_t try_time)1178+{1179+ force_clock_reprogram = 1;1180+ dev->min_delta_ns = (unsigned long)try_time.tv64 * 3;1181+ printk(KERN_WARNING "hrtimer: interrupt too slow, "1182+ "forcing clock min delta to %lu ns\n", dev->min_delta_ns);1183+}1184/*1185 * High resolution timer interrupt1186 * Called with interrupts disabled···1167 struct hrtimer_cpu_base *cpu_base = &__get_cpu_var(hrtimer_bases);1168 struct hrtimer_clock_base *base;1169 ktime_t expires_next, now;1170+ int nr_retries = 0;1171 int i;11721173 BUG_ON(!cpu_base->hres_active);···1174 dev->next_event.tv64 = KTIME_MAX;11751176 retry:1177+ /* 5 retries is enough to notice a hang */1178+ if (!(++nr_retries % 5))1179+ hrtimer_interrupt_hanging(dev, ktime_sub(ktime_get(), now));1180+1181 now = ktime_get();11821183 expires_next.tv64 = KTIME_MAX;···12261227 /* Reprogramming necessary ? */1228 if (expires_next.tv64 != KTIME_MAX) {1229+ if (tick_program_event(expires_next, force_clock_reprogram))1230 goto retry;1231 }1232}···1580 break;15811582#ifdef CONFIG_HOTPLUG_CPU1583+ case CPU_DYING:1584+ case CPU_DYING_FROZEN:1585+ clockevents_notify(CLOCK_EVT_NOTIFY_CPU_DYING, &scpu);1586+ break;1587 case CPU_DEAD:1588 case CPU_DEAD_FROZEN:1589 {
+2
kernel/irq/chip.c
···383out_unlock:384 spin_unlock(&desc->lock);385}0386387/**388 * handle_fasteoi_irq - irq handler for transparent controllers···594 }595 spin_unlock_irqrestore(&desc->lock, flags);596}0597598void599set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
···383out_unlock:384 spin_unlock(&desc->lock);385}386+EXPORT_SYMBOL_GPL(handle_level_irq);387388/**389 * handle_fasteoi_irq - irq handler for transparent controllers···593 }594 spin_unlock_irqrestore(&desc->lock, flags);595}596+EXPORT_SYMBOL_GPL(__set_irq_handler);597598void599set_irq_chip_and_handler(unsigned int irq, struct irq_chip *chip,
+25-10
kernel/module.c
···573/* Init the unload section of the module. */574static void module_unload_init(struct module *mod)575{576- unsigned int i;577578 INIT_LIST_HEAD(&mod->modules_which_use_me);579- for (i = 0; i < NR_CPUS; i++)580- local_set(&mod->ref[i].count, 0);581 /* Hold reference count during initialization. */582- local_set(&mod->ref[raw_smp_processor_id()].count, 1);583 /* Backwards compatibility macros put refcount during init. */584 mod->waiter = current;585}···717718unsigned int module_refcount(struct module *mod)719{720- unsigned int i, total = 0;0721722- for (i = 0; i < NR_CPUS; i++)723- total += local_read(&mod->ref[i].count);724 return total;725}726EXPORT_SYMBOL(module_refcount);···895{896 if (module) {897 unsigned int cpu = get_cpu();898- local_dec(&module->ref[cpu].count);899 /* Maybe they're waiting for us to drop reference? */900 if (unlikely(!module_is_live(module)))901 wake_up_process(module->waiter);···1465 kfree(mod->args);1466 if (mod->percpu)1467 percpu_modfree(mod->percpu);1468-0001469 /* Free lock-classes: */1470 lockdep_free_key_range(mod->module_core, mod->core_size);1471···2015 if (err < 0)2016 goto free_mod;2017000000002018 if (pcpuindex) {2019 /* We have a special allocation for this section. */2020 percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size,···2030 mod->name);2031 if (!percpu) {2032 err = -ENOMEM;2033- goto free_mod;2034 }2035 sechdrs[pcpuindex].sh_flags &= ~(unsigned long)SHF_ALLOC;2036 mod->percpu = percpu;···2294 free_percpu:2295 if (percpu)2296 percpu_modfree(percpu);0002297 free_mod:2298 kfree(args);2299 free_hdr:
···573/* Init the unload section of the module. */574static void module_unload_init(struct module *mod)575{576+ int cpu;577578 INIT_LIST_HEAD(&mod->modules_which_use_me);579+ for_each_possible_cpu(cpu)580+ local_set(__module_ref_addr(mod, cpu), 0);581 /* Hold reference count during initialization. */582+ local_set(__module_ref_addr(mod, raw_smp_processor_id()), 1);583 /* Backwards compatibility macros put refcount during init. */584 mod->waiter = current;585}···717718unsigned int module_refcount(struct module *mod)719{720+ unsigned int total = 0;721+ int cpu;722723+ for_each_possible_cpu(cpu)724+ total += local_read(__module_ref_addr(mod, cpu));725 return total;726}727EXPORT_SYMBOL(module_refcount);···894{895 if (module) {896 unsigned int cpu = get_cpu();897+ local_dec(__module_ref_addr(module, cpu));898 /* Maybe they're waiting for us to drop reference? */899 if (unlikely(!module_is_live(module)))900 wake_up_process(module->waiter);···1464 kfree(mod->args);1465 if (mod->percpu)1466 percpu_modfree(mod->percpu);1467+#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)1468+ if (mod->refptr)1469+ percpu_modfree(mod->refptr);1470+#endif1471 /* Free lock-classes: */1472 lockdep_free_key_range(mod->module_core, mod->core_size);1473···2011 if (err < 0)2012 goto free_mod;20132014+#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)2015+ mod->refptr = percpu_modalloc(sizeof(local_t), __alignof__(local_t),2016+ mod->name);2017+ if (!mod->refptr) {2018+ err = -ENOMEM;2019+ goto free_mod;2020+ }2021+#endif2022 if (pcpuindex) {2023 /* We have a special allocation for this section. */2024 percpu = percpu_modalloc(sechdrs[pcpuindex].sh_size,···2018 mod->name);2019 if (!percpu) {2020 err = -ENOMEM;2021+ goto free_percpu;2022 }2023 sechdrs[pcpuindex].sh_flags &= ~(unsigned long)SHF_ALLOC;2024 mod->percpu = percpu;···2282 free_percpu:2283 if (percpu)2284 percpu_modfree(percpu);2285+#if defined(CONFIG_MODULE_UNLOAD) && defined(CONFIG_SMP)2286+ percpu_modfree(mod->refptr);2287+#endif2288 free_mod:2289 kfree(args);2290 free_hdr:
+10
kernel/sched.c
···2266 if (!sched_feat(SYNC_WAKEUPS))2267 sync = 0;226800000000002269#ifdef CONFIG_SMP2270 if (sched_feat(LB_WAKEUP_UPDATE)) {2271 struct sched_domain *sd;
···2266 if (!sched_feat(SYNC_WAKEUPS))2267 sync = 0;22682269+ if (!sync) {2270+ if (current->se.avg_overlap < sysctl_sched_migration_cost &&2271+ p->se.avg_overlap < sysctl_sched_migration_cost)2272+ sync = 1;2273+ } else {2274+ if (current->se.avg_overlap >= sysctl_sched_migration_cost ||2275+ p->se.avg_overlap >= sysctl_sched_migration_cost)2276+ sync = 0;2277+ }2278+2279#ifdef CONFIG_SMP2280 if (sched_feat(LB_WAKEUP_UPDATE)) {2281 struct sched_domain *sd;
+21-11
kernel/sched_fair.c
···719 __enqueue_entity(cfs_rq, se);720}721722-static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)723{724 if (cfs_rq->last == se)725 cfs_rq->last = NULL;726727 if (cfs_rq->next == se)728 cfs_rq->next = NULL;000000729}730731static void···774775 ideal_runtime = sched_slice(cfs_rq, curr);776 delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;777- if (delta_exec > ideal_runtime)778 resched_task(rq_of(cfs_rq)->curr);000000779}780781static void···1191 int idx, unsigned long load, unsigned long this_load,1192 unsigned int imbalance)1193{1194- struct task_struct *curr = this_rq->curr;1195- struct task_group *tg;1196 unsigned long tl = this_load;1197 unsigned long tl_per_task;01198 unsigned long weight;1199 int balanced;12001201 if (!(this_sd->flags & SD_WAKE_AFFINE) || !sched_feat(AFFINE_WAKEUPS))1202 return 0;1203-1204- if (sync && (curr->se.avg_overlap > sysctl_sched_migration_cost ||1205- p->se.avg_overlap > sysctl_sched_migration_cost))1206- sync = 0;12071208 /*1209 * If sync wakeup then subtract the (maximum possible)···1426 if (!sched_feat(WAKEUP_PREEMPT))1427 return;14281429- if (sched_feat(WAKEUP_OVERLAP) && (sync ||1430- (se->avg_overlap < sysctl_sched_migration_cost &&1431- pse->avg_overlap < sysctl_sched_migration_cost))) {1432 resched_task(curr);1433 return;1434 }···14571458 do {1459 se = pick_next_entity(cfs_rq);000001460 set_next_entity(cfs_rq, se);1461 cfs_rq = group_cfs_rq(se);1462 } while (cfs_rq);
···719 __enqueue_entity(cfs_rq, se);720}721722+static void __clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)723{724 if (cfs_rq->last == se)725 cfs_rq->last = NULL;726727 if (cfs_rq->next == se)728 cfs_rq->next = NULL;729+}730+731+static void clear_buddies(struct cfs_rq *cfs_rq, struct sched_entity *se)732+{733+ for_each_sched_entity(se)734+ __clear_buddies(cfs_rq_of(se), se);735}736737static void···768769 ideal_runtime = sched_slice(cfs_rq, curr);770 delta_exec = curr->sum_exec_runtime - curr->prev_sum_exec_runtime;771+ if (delta_exec > ideal_runtime) {772 resched_task(rq_of(cfs_rq)->curr);773+ /*774+ * The current task ran long enough, ensure it doesn't get775+ * re-elected due to buddy favours.776+ */777+ clear_buddies(cfs_rq, curr);778+ }779}780781static void···1179 int idx, unsigned long load, unsigned long this_load,1180 unsigned int imbalance)1181{001182 unsigned long tl = this_load;1183 unsigned long tl_per_task;1184+ struct task_group *tg;1185 unsigned long weight;1186 int balanced;11871188 if (!(this_sd->flags & SD_WAKE_AFFINE) || !sched_feat(AFFINE_WAKEUPS))1189 return 0;000011901191 /*1192 * If sync wakeup then subtract the (maximum possible)···1419 if (!sched_feat(WAKEUP_PREEMPT))1420 return;14211422+ if (sched_feat(WAKEUP_OVERLAP) && sync) {001423 resched_task(curr);1424 return;1425 }···14521453 do {1454 se = pick_next_entity(cfs_rq);1455+ /*1456+ * If se was a buddy, clear it so that it will have to earn1457+ * the favour again.1458+ */1459+ __clear_buddies(cfs_rq, se);1460 set_next_entity(cfs_rq, se);1461 cfs_rq = group_cfs_rq(se);1462 } while (cfs_rq);
+2-2
kernel/sched_rt.c
···968 if ((this_cpu != -1) && cpu_isset(this_cpu, *mask))969 return this_cpu;970971- first = first_cpu(*mask);972- if (first != NR_CPUS)973 return first;974975 return -1;
···968 if ((this_cpu != -1) && cpu_isset(this_cpu, *mask))969 return this_cpu;970971+ first = cpumask_first(mask);972+ if (first < nr_cpu_ids)973 return first;974975 return -1;
+2
kernel/signal.c
···909 }910#endif911 printk("\n");0912 show_regs(regs);0913}914915static int __init setup_print_fatal_signals(char *str)
···909 }910#endif911 printk("\n");912+ preempt_disable();913 show_regs(regs);914+ preempt_enable();915}916917static int __init setup_print_fatal_signals(char *str)
+33-3
kernel/smp.c
···18enum {19 CSD_FLAG_WAIT = 0x01,20 CSD_FLAG_ALLOC = 0x02,021};2223struct call_function_data {···187 if (data_flags & CSD_FLAG_WAIT) {188 smp_wmb();189 data->flags &= ~CSD_FLAG_WAIT;000190 } else if (data_flags & CSD_FLAG_ALLOC)191 kfree(data);192 }···199 smp_read_barrier_depends();200 }201}00202203/*204 * smp_call_function_single - Run a function on a specific CPU···230 func(info);231 local_irq_restore(flags);232 } else if ((unsigned)cpu < nr_cpu_ids && cpu_online(cpu)) {233- struct call_single_data *data = NULL;234235 if (!wait) {0000000000000000000236 data = kmalloc(sizeof(*data), GFP_ATOMIC);237 if (data)238 data->flags = CSD_FLAG_ALLOC;239- }240- if (!data) {00000241 data = &d;242 data->flags = CSD_FLAG_WAIT;243 }
···18enum {19 CSD_FLAG_WAIT = 0x01,20 CSD_FLAG_ALLOC = 0x02,21+ CSD_FLAG_LOCK = 0x04,22};2324struct call_function_data {···186 if (data_flags & CSD_FLAG_WAIT) {187 smp_wmb();188 data->flags &= ~CSD_FLAG_WAIT;189+ } else if (data_flags & CSD_FLAG_LOCK) {190+ smp_wmb();191+ data->flags &= ~CSD_FLAG_LOCK;192 } else if (data_flags & CSD_FLAG_ALLOC)193 kfree(data);194 }···195 smp_read_barrier_depends();196 }197}198+199+static DEFINE_PER_CPU(struct call_single_data, csd_data);200201/*202 * smp_call_function_single - Run a function on a specific CPU···224 func(info);225 local_irq_restore(flags);226 } else if ((unsigned)cpu < nr_cpu_ids && cpu_online(cpu)) {227+ struct call_single_data *data;228229 if (!wait) {230+ /*231+ * We are calling a function on a single CPU232+ * and we are not going to wait for it to finish.233+ * We first try to allocate the data, but if we234+ * fail, we fall back to use a per cpu data to pass235+ * the information to that CPU. Since all callers236+ * of this code will use the same data, we must237+ * synchronize the callers to prevent a new caller238+ * from corrupting the data before the callee239+ * can access it.240+ *241+ * The CSD_FLAG_LOCK is used to let us know when242+ * the IPI handler is done with the data.243+ * The first caller will set it, and the callee244+ * will clear it. The next caller must wait for245+ * it to clear before we set it again. This246+ * will make sure the callee is done with the247+ * data before a new caller will use it.248+ */249 data = kmalloc(sizeof(*data), GFP_ATOMIC);250 if (data)251 data->flags = CSD_FLAG_ALLOC;252+ else {253+ data = &per_cpu(csd_data, me);254+ while (data->flags & CSD_FLAG_LOCK)255+ cpu_relax();256+ data->flags = CSD_FLAG_LOCK;257+ }258+ } else {259 data = &d;260 data->flags = CSD_FLAG_WAIT;261 }
+19-7
kernel/time/tick-common.c
···274}275276/*000000000000000277 * Shutdown an event device on a given cpu:278 *279 * This is called on a life CPU, when a CPU is dead. So we cannot···311 dev->mode = CLOCK_EVT_MODE_UNUSED;312 clockevents_exchange_device(dev, NULL);313 td->evtdev = NULL;314- }315- /* Transfer the do_timer job away from this cpu */316- if (*cpup == tick_do_timer_cpu) {317- int cpu = cpumask_first(cpu_online_mask);318-319- tick_do_timer_cpu = (cpu < nr_cpu_ids) ? cpu :320- TICK_DO_TIMER_NONE;321 }322 spin_unlock_irqrestore(&tick_device_lock, flags);323}···363 case CLOCK_EVT_NOTIFY_BROADCAST_ENTER:364 case CLOCK_EVT_NOTIFY_BROADCAST_EXIT:365 tick_broadcast_oneshot_control(reason);0000366 break;367368 case CLOCK_EVT_NOTIFY_CPU_DEAD:
···274}275276/*277+ * Transfer the do_timer job away from a dying cpu.278+ *279+ * Called with interrupts disabled.280+ */281+static void tick_handover_do_timer(int *cpup)282+{283+ if (*cpup == tick_do_timer_cpu) {284+ int cpu = cpumask_first(cpu_online_mask);285+286+ tick_do_timer_cpu = (cpu < nr_cpu_ids) ? cpu :287+ TICK_DO_TIMER_NONE;288+ }289+}290+291+/*292 * Shutdown an event device on a given cpu:293 *294 * This is called on a life CPU, when a CPU is dead. So we cannot···296 dev->mode = CLOCK_EVT_MODE_UNUSED;297 clockevents_exchange_device(dev, NULL);298 td->evtdev = NULL;0000000299 }300 spin_unlock_irqrestore(&tick_device_lock, flags);301}···355 case CLOCK_EVT_NOTIFY_BROADCAST_ENTER:356 case CLOCK_EVT_NOTIFY_BROADCAST_EXIT:357 tick_broadcast_oneshot_control(reason);358+ break;359+360+ case CLOCK_EVT_NOTIFY_CPU_DYING:361+ tick_handover_do_timer(dev);362 break;363364 case CLOCK_EVT_NOTIFY_CPU_DEAD:
···17#include <linux/clocksource.h>18#include <linux/kallsyms.h>19#include <linux/seq_file.h>20+#include <linux/suspend.h>21#include <linux/debugfs.h>22#include <linux/hardirq.h>23#include <linux/kthread.h>···1965#ifdef CONFIG_FUNCTION_GRAPH_TRACER19661967static atomic_t ftrace_graph_active;1968+static struct notifier_block ftrace_suspend_notifier;19691970int ftrace_graph_entry_stub(struct ftrace_graph_ent *trace)1971{···2043 return ret;2044}20452046+/*2047+ * Hibernation protection.2048+ * The state of the current task is too much unstable during2049+ * suspend/restore to disk. We want to protect against that.2050+ */2051+static int2052+ftrace_suspend_notifier_call(struct notifier_block *bl, unsigned long state,2053+ void *unused)2054+{2055+ switch (state) {2056+ case PM_HIBERNATION_PREPARE:2057+ pause_graph_tracing();2058+ break;2059+2060+ case PM_POST_HIBERNATION:2061+ unpause_graph_tracing();2062+ break;2063+ }2064+ return NOTIFY_DONE;2065+}2066+2067int register_ftrace_graph(trace_func_graph_ret_t retfunc,2068 trace_func_graph_ent_t entryfunc)2069{2070 int ret = 0;20712072 mutex_lock(&ftrace_sysctl_lock);2073+2074+ ftrace_suspend_notifier.notifier_call = ftrace_suspend_notifier_call;2075+ register_pm_notifier(&ftrace_suspend_notifier);20762077 atomic_inc(&ftrace_graph_active);2078 ret = start_graph_tracing();···2075 ftrace_graph_return = (trace_func_graph_ret_t)ftrace_stub;2076 ftrace_graph_entry = ftrace_graph_entry_stub;2077 ftrace_shutdown(FTRACE_STOP_FUNC_RET);2078+ unregister_pm_notifier(&ftrace_suspend_notifier);20792080 mutex_unlock(&ftrace_sysctl_lock);2081}
+9-6
kernel/trace/ring_buffer.c
···246 return 0;247}248249-#define BUF_PAGE_SIZE (PAGE_SIZE - sizeof(struct buffer_data_page))250251/*252 * head_page == tail_page && head == tail then buffer is empty.···1025 }10261027 if (next_page == head_page) {1028- if (!(buffer->flags & RB_FL_OVERWRITE)) {1029- /* reset write */1030- if (tail <= BUF_PAGE_SIZE)1031- local_set(&tail_page->write, tail);1032 goto out_unlock;1033- }10341035 /* tail_page has not moved yet? */1036 if (tail_page == cpu_buffer->tail_page) {···1101 return event;11021103 out_unlock:00001104 __raw_spin_unlock(&cpu_buffer->lock);1105 local_irq_restore(flags);1106 return NULL;···21742175 cpu_buffer->overrun = 0;2176 cpu_buffer->entries = 0;0002177}21782179/**
···246 return 0;247}248249+#define BUF_PAGE_SIZE (PAGE_SIZE - offsetof(struct buffer_data_page, data))250251/*252 * head_page == tail_page && head == tail then buffer is empty.···1025 }10261027 if (next_page == head_page) {1028+ if (!(buffer->flags & RB_FL_OVERWRITE))0001029 goto out_unlock;010301031 /* tail_page has not moved yet? */1032 if (tail_page == cpu_buffer->tail_page) {···1105 return event;11061107 out_unlock:1108+ /* reset write */1109+ if (tail <= BUF_PAGE_SIZE)1110+ local_set(&tail_page->write, tail);1111+1112 __raw_spin_unlock(&cpu_buffer->lock);1113 local_irq_restore(flags);1114 return NULL;···21742175 cpu_buffer->overrun = 0;2176 cpu_buffer->entries = 0;2177+2178+ cpu_buffer->write_stamp = 0;2179+ cpu_buffer->read_stamp = 0;2180}21812182/**
+3-2
kernel/trace/trace.c
···4041#define TRACE_BUFFER_FLAGS (RB_FL_OVERWRITE)4243-unsigned long __read_mostly tracing_max_latency = (cycle_t)ULONG_MAX;44unsigned long __read_mostly tracing_thresh;4546/*···3736 * it if we decide to change what log level the ftrace dump3737 * should be at.3738 */3739-#define KERN_TRACE KERN_INFO37403741static void3742trace_printk_seq(struct trace_seq *s)···3770 dump_ran = 1;37713772 /* No turning back! */03773 ftrace_kill();37743775 for_each_tracing_cpu(cpu) {
···4041#define TRACE_BUFFER_FLAGS (RB_FL_OVERWRITE)4243+unsigned long __read_mostly tracing_max_latency;44unsigned long __read_mostly tracing_thresh;4546/*···3736 * it if we decide to change what log level the ftrace dump3737 * should be at.3738 */3739+#define KERN_TRACE KERN_EMERG37403741static void3742trace_printk_seq(struct trace_seq *s)···3770 dump_ran = 1;37713772 /* No turning back! */3773+ tracing_off();3774 ftrace_kill();37753776 for_each_tracing_cpu(cpu) {
+1
kernel/trace/trace_irqsoff.c
···380381static void __irqsoff_tracer_init(struct trace_array *tr)382{0383 irqsoff_trace = tr;384 /* make sure that the tracer is visible */385 smp_wmb();
···380381static void __irqsoff_tracer_init(struct trace_array *tr)382{383+ tracing_max_latency = 0;384 irqsoff_trace = tr;385 /* make sure that the tracer is visible */386 smp_wmb();
···22 * Kernel threads bound to a single CPU can safely use23 * smp_processor_id():24 */25- if (cpus_equal(current->cpus_allowed, cpumask_of_cpu(this_cpu)))26 goto out;2728 /*
···22 * Kernel threads bound to a single CPU can safely use23 * smp_processor_id():24 */25+ if (cpumask_equal(¤t->cpus_allowed, cpumask_of(this_cpu)))26 goto out;2728 /*
+2-45
mm/mlock.c
···294 *295 * return number of pages [> 0] to be removed from locked_vm on success296 * of "special" vmas.297- *298- * return negative error if vma spanning @start-@range disappears while299- * mmap semaphore is dropped. Unlikely?300 */301long mlock_vma_pages_range(struct vm_area_struct *vma,302 unsigned long start, unsigned long end)303{304- struct mm_struct *mm = vma->vm_mm;305 int nr_pages = (end - start) / PAGE_SIZE;306 BUG_ON(!(vma->vm_flags & VM_LOCKED));307···310 if (!((vma->vm_flags & (VM_DONTEXPAND | VM_RESERVED)) ||311 is_vm_hugetlb_page(vma) ||312 vma == get_gate_vma(current))) {313- long error;314- downgrade_write(&mm->mmap_sem);315316- error = __mlock_vma_pages_range(vma, start, end, 1);317-318- up_read(&mm->mmap_sem);319- /* vma can change or disappear */320- down_write(&mm->mmap_sem);321- vma = find_vma(mm, start);322- /* non-NULL vma must contain @start, but need to check @end */323- if (!vma || end > vma->vm_end)324- return -ENOMEM;325-326- return 0; /* hide other errors from mmap(), et al */327 }328329 /*···422 vma->vm_flags = newflags;423424 if (lock) {425- /*426- * mmap_sem is currently held for write. Downgrade the write427- * lock to a read lock so that other faults, mmap scans, ...428- * while we fault in all pages.429- */430- downgrade_write(&mm->mmap_sem);431-432 ret = __mlock_vma_pages_range(vma, start, end, 1);433434- /*435- * Need to reacquire mmap sem in write mode, as our callers436- * expect this. We have no support for atomically upgrading437- * a sem to write, so we need to check for ranges while sem438- * is unlocked.439- */440- up_read(&mm->mmap_sem);441- /* vma can change or disappear */442- down_write(&mm->mmap_sem);443- *prev = find_vma(mm, start);444- /* non-NULL *prev must contain @start, but need to check @end */445- if (!(*prev) || end > (*prev)->vm_end)446- ret = -ENOMEM;447- else if (ret > 0) {448 mm->locked_vm -= ret;449 ret = 0;450 } else451 ret = __mlock_posix_error_return(ret); /* translate if needed */452 } else {453- /*454- * TODO: for unlocking, pages will already be resident, so455- * we don't need to wait for allocations/reclaim/pagein, ...456- * However, unlocking a very large region can still take a457- * while. Should we downgrade the semaphore for both lock458- * AND unlock ?459- */460 __mlock_vma_pages_range(vma, start, end, 0);461 }462
···294 *295 * return number of pages [> 0] to be removed from locked_vm on success296 * of "special" vmas.000297 */298long mlock_vma_pages_range(struct vm_area_struct *vma,299 unsigned long start, unsigned long end)300{0301 int nr_pages = (end - start) / PAGE_SIZE;302 BUG_ON(!(vma->vm_flags & VM_LOCKED));303···314 if (!((vma->vm_flags & (VM_DONTEXPAND | VM_RESERVED)) ||315 is_vm_hugetlb_page(vma) ||316 vma == get_gate_vma(current))) {00317318+ return __mlock_vma_pages_range(vma, start, end, 1);0000000000319 }320321 /*···438 vma->vm_flags = newflags;439440 if (lock) {0000000441 ret = __mlock_vma_pages_range(vma, start, end, 1);442443+ if (ret > 0) {0000000000000444 mm->locked_vm -= ret;445 ret = 0;446 } else447 ret = __mlock_posix_error_return(ret); /* translate if needed */448 } else {0000000449 __mlock_vma_pages_range(vma, start, end, 0);450 }451
+29-24
mm/mmap.c
···658 validate_mm(mm);659}660000661/*662 * If the vma has a ->close operation then the driver probably needs to release663 * per-vma resources, so we don't attempt to merge those.···668static inline int is_mergeable_vma(struct vm_area_struct *vma,669 struct file *file, unsigned long vm_flags)670{671- if (vma->vm_flags != vm_flags)672 return 0;673 if (vma->vm_file != file)674 return 0;···1090 mapping_cap_account_dirty(vma->vm_file->f_mapping);1091}10920000000001093unsigned long mmap_region(struct file *file, unsigned long addr,1094 unsigned long len, unsigned long flags,1095 unsigned int vm_flags, unsigned long pgoff,···1126 if (!may_expand_vm(mm, len >> PAGE_SHIFT))1127 return -ENOMEM;11281129- if (flags & MAP_NORESERVE)00000001130 vm_flags |= VM_NORESERVE;11311132- if (accountable && (!(flags & MAP_NORESERVE) ||1133- sysctl_overcommit_memory == OVERCOMMIT_NEVER)) {1134- if (vm_flags & VM_SHARED) {1135- /* Check memory availability in shmem_file_setup? */1136- vm_flags |= VM_ACCOUNT;1137- } else if (vm_flags & VM_WRITE) {1138- /*1139- * Private writable mapping: check memory availability1140- */1141- charged = len >> PAGE_SHIFT;1142- if (security_vm_enough_memory(charged))1143- return -ENOMEM;1144- vm_flags |= VM_ACCOUNT;1145- }1146 }11471148 /*···1193 if (error)1194 goto free_vma;1195 }1196-1197- /* We set VM_ACCOUNT in a shared mapping's vm_flags, to inform1198- * shmem_zero_setup (perhaps called through /dev/zero's ->mmap)1199- * that memory reservation must be checked; but that reservation1200- * belongs to shared memory object, not to vma: so now clear it.1201- */1202- if ((vm_flags & (VM_SHARED|VM_ACCOUNT)) == (VM_SHARED|VM_ACCOUNT))1203- vma->vm_flags &= ~VM_ACCOUNT;12041205 /* Can addr have changed??1206 *
···658 validate_mm(mm);659}660661+/* Flags that can be inherited from an existing mapping when merging */662+#define VM_MERGEABLE_FLAGS (VM_CAN_NONLINEAR)663+664/*665 * If the vma has a ->close operation then the driver probably needs to release666 * per-vma resources, so we don't attempt to merge those.···665static inline int is_mergeable_vma(struct vm_area_struct *vma,666 struct file *file, unsigned long vm_flags)667{668+ if ((vma->vm_flags ^ vm_flags) & ~VM_MERGEABLE_FLAGS)669 return 0;670 if (vma->vm_file != file)671 return 0;···1087 mapping_cap_account_dirty(vma->vm_file->f_mapping);1088}10891090+/*1091+ * We account for memory if it's a private writeable mapping,1092+ * and VM_NORESERVE wasn't set.1093+ */1094+static inline int accountable_mapping(unsigned int vm_flags)1095+{1096+ return (vm_flags & (VM_NORESERVE | VM_SHARED | VM_WRITE)) == VM_WRITE;1097+}1098+1099unsigned long mmap_region(struct file *file, unsigned long addr,1100 unsigned long len, unsigned long flags,1101 unsigned int vm_flags, unsigned long pgoff,···1114 if (!may_expand_vm(mm, len >> PAGE_SHIFT))1115 return -ENOMEM;11161117+ /*1118+ * Set 'VM_NORESERVE' if we should not account for the1119+ * memory use of this mapping. We only honor MAP_NORESERVE1120+ * if we're allowed to overcommit memory.1121+ */1122+ if ((flags & MAP_NORESERVE) && sysctl_overcommit_memory != OVERCOMMIT_NEVER)1123+ vm_flags |= VM_NORESERVE;1124+ if (!accountable)1125 vm_flags |= VM_NORESERVE;11261127+ /*1128+ * Private writable mapping: check memory availability1129+ */1130+ if (accountable_mapping(vm_flags)) {1131+ charged = len >> PAGE_SHIFT;1132+ if (security_vm_enough_memory(charged))1133+ return -ENOMEM;1134+ vm_flags |= VM_ACCOUNT;0000001135 }11361137 /*···1180 if (error)1181 goto free_vma;1182 }0000000011831184 /* Can addr have changed??1185 *
···498 * calculate the number of reg rules we will need. We will need one499 * for each channel subband */500 while (country_ie_len >= 3) {0501 struct ieee80211_country_ie_triplet *triplet =502 (struct ieee80211_country_ie_triplet *) country_ie;503 int cur_sub_max_channel = 0, cur_channel = 0;···510 continue;511 }51200000000000000000513 cur_channel = triplet->chans.first_channel;514- cur_sub_max_channel = ieee80211_channel_to_frequency(515- cur_channel + triplet->chans.num_channels);516517 /* Basic sanity check */518 if (cur_sub_max_channel < cur_channel)···607 end_channel = triplet->chans.first_channel +608 triplet->chans.num_channels;609 else610- /*611- * 5 GHz -- For example in country IEs if the first612- * channel given is 36 and the number of channels is 4613- * then the individual channel numbers defined for the614- * 5 GHz PHY by these parameters are: 36, 40, 44, and 48615- * and not 36, 37, 38, 39.616- *617- * See: http://tinyurl.com/11d-clarification618- */619 end_channel = triplet->chans.first_channel +620 (4 * (triplet->chans.num_channels - 1));621···1284 if (intersected_rd) {1285 printk(KERN_DEBUG "cfg80211: We intersect both of these "1286 "and get:\n");1287- print_regdomain_info(rd);1288 return;1289 }1290 printk(KERN_DEBUG "cfg80211: Intersection between both failed\n");
···498 * calculate the number of reg rules we will need. We will need one499 * for each channel subband */500 while (country_ie_len >= 3) {501+ int end_channel = 0;502 struct ieee80211_country_ie_triplet *triplet =503 (struct ieee80211_country_ie_triplet *) country_ie;504 int cur_sub_max_channel = 0, cur_channel = 0;···509 continue;510 }511512+ /* 2 GHz */513+ if (triplet->chans.first_channel <= 14)514+ end_channel = triplet->chans.first_channel +515+ triplet->chans.num_channels;516+ else517+ /*518+ * 5 GHz -- For example in country IEs if the first519+ * channel given is 36 and the number of channels is 4520+ * then the individual channel numbers defined for the521+ * 5 GHz PHY by these parameters are: 36, 40, 44, and 48522+ * and not 36, 37, 38, 39.523+ *524+ * See: http://tinyurl.com/11d-clarification525+ */526+ end_channel = triplet->chans.first_channel +527+ (4 * (triplet->chans.num_channels - 1));528+529 cur_channel = triplet->chans.first_channel;530+ cur_sub_max_channel = end_channel;0531532 /* Basic sanity check */533 if (cur_sub_max_channel < cur_channel)···590 end_channel = triplet->chans.first_channel +591 triplet->chans.num_channels;592 else000000000593 end_channel = triplet->chans.first_channel +594 (4 * (triplet->chans.num_channels - 1));595···1276 if (intersected_rd) {1277 printk(KERN_DEBUG "cfg80211: We intersect both of these "1278 "and get:\n");1279+ print_regdomain_info(intersected_rd);1280 return;1281 }1282 printk(KERN_DEBUG "cfg80211: Intersection between both failed\n");