mirror of https://gitee.com/openkylin/linux.git
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
Pull trivial tree from Jiri Kosina: "The usual trivial updates all over the tree -- mostly typo fixes and documentation updates" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (52 commits) doc: Documentation/cputopology.txt fix typo treewide: Convert retrun typos to return Fix comment typo for init_cma_reserved_pageblock Documentation/trace: Correcting and extending tracepoint documentation mm/hotplug: fix a typo in Documentation/memory-hotplug.txt power: Documentation: Update s2ram link doc: fix a typo in Documentation/00-INDEX Documentation/printk-formats.txt: No casts needed for u64/s64 doc: Fix typo "is is" in Documentations treewide: Fix printks with 0x%# zram: doc fixes Documentation/kmemcheck: update kmemcheck documentation doc: documentation/hwspinlock.txt fix typo PM / Hibernate: add section for resume options doc: filesystems : Fix typo in Documentations/filesystems scsi/megaraid fixed several typos in comments ppc: init_32: Fix error typo "CONFIG_START_KERNEL" treewide: Add __GFP_NOWARN to k.alloc calls with v.alloc fallbacks page_isolation: Fix a comment typo in test_pages_isolated() doc: fix a typo about irq affinity ...
This commit is contained in:
commit
2e515bf096
11
CREDITS
11
CREDITS
|
@ -637,14 +637,13 @@ S: 14509 NE 39th Street #1096
|
|||
S: Bellevue, Washington 98007
|
||||
S: USA
|
||||
|
||||
N: Christopher L. Cheney
|
||||
E: ccheney@debian.org
|
||||
E: ccheney@cheney.cx
|
||||
W: http://www.cheney.cx
|
||||
N: Chris Cheney
|
||||
E: chris.cheney@gmail.com
|
||||
E: ccheney@redhat.com
|
||||
P: 1024D/8E384AF2 2D31 1927 87D7 1F24 9FF9 1BC5 D106 5AB3 8E38 4AF2
|
||||
D: Vista Imaging usb webcam driver
|
||||
S: 314 Prince of Wales
|
||||
S: Conroe, TX 77304
|
||||
S: 2308 Therrell Way
|
||||
S: McKinney, TX 75070
|
||||
S: USA
|
||||
|
||||
N: Stuart Cheshire
|
||||
|
|
|
@ -40,7 +40,7 @@ IPMI.txt
|
|||
IRQ-affinity.txt
|
||||
- how to select which CPU(s) handle which interrupt events on SMP.
|
||||
IRQ-domain.txt
|
||||
- info on inerrupt numbering and setting up IRQ domains.
|
||||
- info on interrupt numbering and setting up IRQ domains.
|
||||
IRQ.txt
|
||||
- description of what an IRQ is.
|
||||
Intel-IOMMU.txt
|
||||
|
|
|
@ -5,20 +5,21 @@ Description:
|
|||
The disksize file is read-write and specifies the disk size
|
||||
which represents the limit on the *uncompressed* worth of data
|
||||
that can be stored in this disk.
|
||||
Unit: bytes
|
||||
|
||||
What: /sys/block/zram<id>/initstate
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The disksize file is read-only and shows the initialization
|
||||
The initstate file is read-only and shows the initialization
|
||||
state of the device.
|
||||
|
||||
What: /sys/block/zram<id>/reset
|
||||
Date: August 2010
|
||||
Contact: Nitin Gupta <ngupta@vflare.org>
|
||||
Description:
|
||||
The disksize file is write-only and allows resetting the
|
||||
device. The reset operation frees all the memory assocaited
|
||||
The reset file is write-only and allows resetting the
|
||||
device. The reset operation frees all the memory associated
|
||||
with this device.
|
||||
|
||||
What: /sys/block/zram<id>/num_reads
|
||||
|
@ -48,7 +49,7 @@ Contact: Nitin Gupta <ngupta@vflare.org>
|
|||
Description:
|
||||
The notify_free file is read-only and specifies the number of
|
||||
swap slot free notifications received by this device. These
|
||||
notifications are send to a swap block device when a swap slot
|
||||
notifications are sent to a swap block device when a swap slot
|
||||
is freed. This statistic is applicable only when this disk is
|
||||
being used as a swap disk.
|
||||
|
||||
|
|
|
@ -132,7 +132,7 @@ devices.</para>
|
|||
<row>
|
||||
<entry>&v4l2-fract;</entry>
|
||||
<entry><structfield>timeperframe</structfield></entry>
|
||||
<entry><para>This is is the desired period between
|
||||
<entry><para>This is the desired period between
|
||||
successive frames captured by the driver, in seconds. The
|
||||
field is intended to skip frames on the driver side, saving I/O
|
||||
bandwidth.</para><para>Applications store here the desired frame
|
||||
|
@ -193,7 +193,7 @@ applications must set the array to zero.</entry>
|
|||
<row>
|
||||
<entry>&v4l2-fract;</entry>
|
||||
<entry><structfield>timeperframe</structfield></entry>
|
||||
<entry>This is is the desired period between
|
||||
<entry>This is the desired period between
|
||||
successive frames output by the driver, in seconds.</entry>
|
||||
</row>
|
||||
<row>
|
||||
|
|
|
@ -57,8 +57,8 @@ i.e counters for the CPU0-3 did not change.
|
|||
|
||||
Here is an example of limiting that same irq (44) to cpus 1024 to 1031:
|
||||
|
||||
[root@moon 44]# echo 1024-1031 > smp_affinity
|
||||
[root@moon 44]# cat smp_affinity
|
||||
[root@moon 44]# echo 1024-1031 > smp_affinity_list
|
||||
[root@moon 44]# cat smp_affinity_list
|
||||
1024-1031
|
||||
|
||||
Note that to do this with a bitmask would require 32 bitmasks of zero
|
||||
|
|
|
@ -109,6 +109,16 @@ probably didn't even receive earlier versions of the patch.
|
|||
If the patch fixes a logged bug entry, refer to that bug entry by
|
||||
number and URL.
|
||||
|
||||
If you want to refer to a specific commit, don't just refer to the
|
||||
SHA-1 ID of the commit. Please also include the oneline summary of
|
||||
the commit, to make it easier for reviewers to know what it is about.
|
||||
Example:
|
||||
|
||||
Commit e21d2170f36602ae2708 ("video: remove unnecessary
|
||||
platform_set_drvdata()") removed the unnecessary
|
||||
platform_set_drvdata(), but left the variable "dev" unused,
|
||||
delete it.
|
||||
|
||||
|
||||
3) Separate your changes.
|
||||
|
||||
|
|
|
@ -207,7 +207,7 @@ passing those. One idea is to return this in _DSM method like:
|
|||
Return (Local0)
|
||||
}
|
||||
|
||||
Then the at25 SPI driver can get this configation by calling _DSM on its
|
||||
Then the at25 SPI driver can get this configuration by calling _DSM on its
|
||||
ACPI handle like:
|
||||
|
||||
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
|
|
@ -78,7 +78,7 @@ to NULL. Drivers should use the following idiom:
|
|||
The most common usage of these functions will probably be to specify
|
||||
the maximum time from when an interrupt occurs, to when the device
|
||||
becomes accessible. To accomplish this, driver writers should use the
|
||||
set_max_mpu_wakeup_lat() function to to constrain the MPU wakeup
|
||||
set_max_mpu_wakeup_lat() function to constrain the MPU wakeup
|
||||
latency, and the set_max_dev_wakeup_lat() function to constrain the
|
||||
device wakeup latency (from clk_enable() to accessibility). For
|
||||
example,
|
||||
|
|
|
@ -69,7 +69,7 @@ one, this value should be decreased relative to fifo_expire_async.
|
|||
group_idle
|
||||
-----------
|
||||
This parameter forces idling at the CFQ group level instead of CFQ
|
||||
queue level. This was introduced after after a bottleneck was observed
|
||||
queue level. This was introduced after a bottleneck was observed
|
||||
in higher end storage due to idle on sequential queue and allow dispatch
|
||||
from a single queue. The idea with this parameter is that it can be run with
|
||||
slice_idle=0 and group_idle=8, so that idling does not happen on individual
|
||||
|
|
|
@ -57,7 +57,7 @@ changes occur:
|
|||
interface must make sure that any previous page table
|
||||
modifications for the address space 'vma->vm_mm' in the range
|
||||
'start' to 'end-1' will be visible to the cpu. That is, after
|
||||
running, here will be no entries in the TLB for 'mm' for
|
||||
running, there will be no entries in the TLB for 'mm' for
|
||||
virtual addresses in the range 'start' to 'end-1'.
|
||||
|
||||
The "vma" is the backing store being used for the region.
|
||||
|
@ -375,8 +375,8 @@ maps this page at its virtual address.
|
|||
|
||||
void flush_icache_page(struct vm_area_struct *vma, struct page *page)
|
||||
All the functionality of flush_icache_page can be implemented in
|
||||
flush_dcache_page and update_mmu_cache. In 2.7 the hope is to
|
||||
remove this interface completely.
|
||||
flush_dcache_page and update_mmu_cache. In the future, the hope
|
||||
is to remove this interface completely.
|
||||
|
||||
The final category of APIs is for I/O to deliberately aliased address
|
||||
ranges inside the kernel. Such aliases are set up by use of the
|
||||
|
|
|
@ -22,7 +22,7 @@ to /proc/cpuinfo.
|
|||
|
||||
4) /sys/devices/system/cpu/cpuX/topology/thread_siblings:
|
||||
|
||||
internel kernel map of cpuX's hardware threads within the same
|
||||
internal kernel map of cpuX's hardware threads within the same
|
||||
core as cpuX
|
||||
|
||||
5) /sys/devices/system/cpu/cpuX/topology/core_siblings:
|
||||
|
|
|
@ -276,7 +276,7 @@ mainline get there via -mm.
|
|||
The current -mm patch is available in the "mmotm" (-mm of the moment)
|
||||
directory at:
|
||||
|
||||
http://userweb.kernel.org/~akpm/mmotm/
|
||||
http://www.ozlabs.org/~akpm/mmotm/
|
||||
|
||||
Use of the MMOTM tree is likely to be a frustrating experience, though;
|
||||
there is a definite chance that it will not even compile.
|
||||
|
@ -287,7 +287,7 @@ the mainline is expected to look like after the next merge window closes.
|
|||
Linux-next trees are announced on the linux-kernel and linux-next mailing
|
||||
lists when they are assembled; they can be downloaded from:
|
||||
|
||||
http://www.kernel.org/pub/linux/kernel/people/sfr/linux-next/
|
||||
http://www.kernel.org/pub/linux/kernel/next/
|
||||
|
||||
Some information about linux-next has been gathered at:
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ This contains the board-specific information.
|
|||
- compatible: must be "stericsson,s365".
|
||||
- vana15-supply: the regulator supplying the 1.5V to drive the
|
||||
board.
|
||||
- syscon: a pointer to the syscon node so we can acccess the
|
||||
- syscon: a pointer to the syscon node so we can access the
|
||||
syscon registers to set the board as self-powered.
|
||||
|
||||
Example:
|
||||
|
|
|
@ -32,8 +32,8 @@ numbers - see motherboard's TRM for more details.
|
|||
The node describing a config device must refer to the sysreg node via
|
||||
"arm,vexpress,config-bridge" phandle (can be also defined in the node's
|
||||
parent) and relies on the board topology properties - see main vexpress
|
||||
node documentation for more details. It must must also define the
|
||||
following property:
|
||||
node documentation for more details. It must also define the following
|
||||
property:
|
||||
- arm,vexpress-sysreg,func : must contain two cells:
|
||||
- first cell defines function number (eg. 1 for clock generator,
|
||||
2 for voltage regulators etc.)
|
||||
|
|
|
@ -5,7 +5,7 @@ TI C6X SoCs contain a region of miscellaneous registers which provide various
|
|||
function for SoC control or status. Details vary considerably among from SoC
|
||||
to SoC with no two being alike.
|
||||
|
||||
In general, the Device State Configuraion Registers (DSCR) will provide one or
|
||||
In general, the Device State Configuration Registers (DSCR) will provide one or
|
||||
more configuration registers often protected by a lock register where one or
|
||||
more key values must be written to a lock register in order to unlock the
|
||||
configuration register for writes. These configuration register may be used to
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
The Samsung Audio Subsystem clock controller generates and supplies clocks
|
||||
to Audio Subsystem block available in the S5PV210 and Exynos SoCs. The clock
|
||||
binding described here is applicable to all SoC's in Exynos family.
|
||||
binding described here is applicable to all SoCs in Exynos family.
|
||||
|
||||
Required Properties:
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ Optional properties for the SRC node:
|
|||
- disable-mxtal: if present this will disable the MXTALO,
|
||||
i.e. the driver output for the main (~19.2 MHz) chrystal,
|
||||
if the board has its own circuitry for providing this
|
||||
osciallator
|
||||
oscillator
|
||||
|
||||
|
||||
PLL nodes: these nodes represent the two PLLs on the system,
|
||||
|
|
|
@ -18,14 +18,14 @@ dma0: dma@ffffec00 {
|
|||
|
||||
DMA clients connected to the Atmel DMA controller must use the format
|
||||
described in the dma.txt file, using a three-cell specifier for each channel:
|
||||
a phandle plus two interger cells.
|
||||
a phandle plus two integer cells.
|
||||
The three cells in order are:
|
||||
|
||||
1. A phandle pointing to the DMA controller.
|
||||
2. The memory interface (16 most significant bits), the peripheral interface
|
||||
(16 less significant bits).
|
||||
3. Parameters for the at91 DMA configuration register which are device
|
||||
dependant:
|
||||
dependent:
|
||||
- bit 7-0: peripheral identifier for the hardware handshaking interface. The
|
||||
identifier can be different for tx and rx.
|
||||
- bit 11-8: FIFO configuration. 0 for half FIFO, 1 for ALAP, 1 for ASAP.
|
||||
|
|
|
@ -34,7 +34,7 @@ Clients have to specify the DMA requests with phandles in a list.
|
|||
Required properties:
|
||||
- dmas: List of one or more DMA request specifiers. One DMA request specifier
|
||||
consists of a phandle to the DMA controller followed by the integer
|
||||
specifiying the request line.
|
||||
specifying the request line.
|
||||
- dma-names: List of string identifiers for the DMA requests. For the correct
|
||||
names, have a look at the specific client driver.
|
||||
|
||||
|
|
|
@ -37,14 +37,14 @@ Each dmas request consists of 4 cells:
|
|||
1. A phandle pointing to the DMA controller
|
||||
2. Device Type
|
||||
3. The DMA request line number (only when 'use fixed channel' is set)
|
||||
4. A 32bit mask specifying; mode, direction and endianess [NB: This list will grow]
|
||||
4. A 32bit mask specifying; mode, direction and endianness [NB: This list will grow]
|
||||
0x00000001: Mode:
|
||||
Logical channel when unset
|
||||
Physical channel when set
|
||||
0x00000002: Direction:
|
||||
Memory to Device when unset
|
||||
Device to Memory when set
|
||||
0x00000004: Endianess:
|
||||
0x00000004: Endianness:
|
||||
Little endian when unset
|
||||
Big endian when set
|
||||
0x00000008: Use fixed channel:
|
||||
|
|
|
@ -4,7 +4,7 @@ Google's ChromeOS EC is a Cortex-M device which talks to the AP and
|
|||
implements various function such as keyboard and battery charging.
|
||||
|
||||
The EC can be connect through various means (I2C, SPI, LPC) and the
|
||||
compatible string used depends on the inteface. Each connection method has
|
||||
compatible string used depends on the interface. Each connection method has
|
||||
its own driver which connects to the top level interface-agnostic EC driver.
|
||||
Other Linux driver (such as cros-ec-keyb for the matrix keyboard) connect to
|
||||
the top-level driver.
|
||||
|
|
|
@ -8,7 +8,7 @@ Required properties:
|
|||
Example:
|
||||
|
||||
can0: can@f000c000 {
|
||||
compatbile = "atmel,at91sam9x5-can";
|
||||
compatible = "atmel,at91sam9x5-can";
|
||||
reg = <0xf000c000 0x300>;
|
||||
interrupts = <40 4 5>
|
||||
};
|
||||
|
|
|
@ -37,7 +37,7 @@ Bank: 3 (A, B and C)
|
|||
0xffffffff 0x7fff3ccf /* pioB */
|
||||
0xffffffff 0x007fffff /* pioC */
|
||||
|
||||
For each peripheral/bank we will descibe in a u32 if a pin can can be
|
||||
For each peripheral/bank we will descibe in a u32 if a pin can be
|
||||
configured in it by putting 1 to the pin bit (1 << pin)
|
||||
|
||||
Let's take the pioA on peripheral B
|
||||
|
|
|
@ -7,7 +7,7 @@ UART node.
|
|||
|
||||
Required properties:
|
||||
- rs485-rts-delay: prop-encoded-array <a b> where:
|
||||
* a is the delay beteween rts signal and beginning of data sent in milliseconds.
|
||||
* a is the delay between rts signal and beginning of data sent in milliseconds.
|
||||
it corresponds to the delay before sending data.
|
||||
* b is the delay between end of data sent and rts signal in milliseconds
|
||||
it corresponds to the delay after sending data and actual release of the line.
|
||||
|
|
|
@ -321,7 +321,7 @@ Access to a dma_buf from the kernel context involves three steps:
|
|||
|
||||
When the importer is done accessing the range specified in begin_cpu_access,
|
||||
it needs to announce this to the exporter (to facilitate cache flushing and
|
||||
unpinning of any pinned resources). The result of of any dma_buf kmap calls
|
||||
unpinning of any pinned resources). The result of any dma_buf kmap calls
|
||||
after end_cpu_access is undefined.
|
||||
|
||||
Interface:
|
||||
|
|
|
@ -83,8 +83,7 @@ Where's this all leading?
|
|||
|
||||
The klibc distribution contains some of the necessary software to make
|
||||
early userspace useful. The klibc distribution is currently
|
||||
maintained separately from the kernel, but this may change early in
|
||||
the 2.7 era (it missed the boat for 2.5).
|
||||
maintained separately from the kernel.
|
||||
|
||||
You can obtain somewhat infrequent snapshots of klibc from
|
||||
ftp://ftp.kernel.org/pub/linux/libs/klibc/
|
||||
|
|
|
@ -150,7 +150,7 @@ C. Boot options
|
|||
|
||||
C. Attaching, Detaching and Unloading
|
||||
|
||||
Before going on on how to attach, detach and unload the framebuffer console, an
|
||||
Before going on how to attach, detach and unload the framebuffer console, an
|
||||
illustration of the dependencies may help.
|
||||
|
||||
The console layer, as with most subsystems, needs a driver that interfaces with
|
||||
|
|
|
@ -571,7 +571,7 @@ mode "640x480-60"
|
|||
# 160 chars 800 lines
|
||||
# Blank Time 4.798 us 0.564 ms
|
||||
# 50 chars 28 lines
|
||||
# Polarity negtive positive
|
||||
# Polarity negative positive
|
||||
#
|
||||
mode "1280x800-60"
|
||||
# D: 83.500 MHz, H: 49.702 kHz, V: 60.00 Hz
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
Start viafb with default settings:
|
||||
#modprobe viafb
|
||||
|
||||
Start viafb with with user options:
|
||||
Start viafb with user options:
|
||||
#modprobe viafb viafb_mode=800x600 viafb_bpp=16 viafb_refresh=60
|
||||
viafb_active_dev=CRT+DVI viafb_dvi_port=DVP1
|
||||
viafb_mode1=1024x768 viafb_bpp=16 viafb_refresh1=60
|
||||
|
|
|
@ -87,7 +87,7 @@ Unless otherwise specified, all options default to off.
|
|||
|
||||
device=<devicepath>
|
||||
Specify a device during mount so that ioctls on the control device
|
||||
can be avoided. Especialy useful when trying to mount a multi-device
|
||||
can be avoided. Especially useful when trying to mount a multi-device
|
||||
setup as root. May be specified multiple times for multiple devices.
|
||||
|
||||
discard
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
Ext4 Filesystem
|
||||
===============
|
||||
|
||||
Ext4 is an an advanced level of the ext3 filesystem which incorporates
|
||||
Ext4 is an advanced level of the ext3 filesystem which incorporates
|
||||
scalability and reliability enhancements for supporting large filesystems
|
||||
(64 bit) in keeping with increasing disk capacities and state-of-the-art
|
||||
feature requirements.
|
||||
|
|
|
@ -93,7 +93,7 @@ For a filesystem to be exportable it must:
|
|||
2/ make sure that d_splice_alias is used rather than d_add
|
||||
when ->lookup finds an inode for a given parent and name.
|
||||
|
||||
If inode is NULL, d_splice_alias(inode, dentry) is eqivalent to
|
||||
If inode is NULL, d_splice_alias(inode, dentry) is equivalent to
|
||||
|
||||
d_add(dentry, inode), NULL
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ struct pnfs_layout_hdr
|
|||
----------------------
|
||||
The on-the-wire command LAYOUTGET corresponds to struct
|
||||
pnfs_layout_segment, usually referred to by the variable name lseg.
|
||||
Each nfs_inode may hold a pointer to a cache of of these layout
|
||||
Each nfs_inode may hold a pointer to a cache of these layout
|
||||
segments in nfsi->layout, of type struct pnfs_layout_hdr.
|
||||
|
||||
We reference the header for the inode pointing to it, across each
|
||||
|
|
|
@ -149,7 +149,7 @@ Bitmap system area
|
|||
------------------
|
||||
|
||||
The bitmap itself is divided into three parts.
|
||||
First the system area, that is split into two halfs.
|
||||
First the system area, that is split into two halves.
|
||||
Then userspace.
|
||||
|
||||
The requirement for a static, fixed preallocated system area comes from how
|
||||
|
|
|
@ -31,7 +31,7 @@ Semantics
|
|||
|
||||
Each relay channel has one buffer per CPU, each buffer has one or more
|
||||
sub-buffers. Messages are written to the first sub-buffer until it is
|
||||
too full to contain a new message, in which case it it is written to
|
||||
too full to contain a new message, in which case it is written to
|
||||
the next (if available). Messages are never split across sub-buffers.
|
||||
At this point, userspace can be notified so it empties the first
|
||||
sub-buffer, while the kernel continues writing to the next.
|
||||
|
|
|
@ -24,7 +24,7 @@ flag between KOBJ_NS_TYPE_NONE and KOBJ_NS_TYPES, and s_ns will
|
|||
point to the namespace to which it belongs.
|
||||
|
||||
Each sysfs superblock's sysfs_super_info contains an array void
|
||||
*ns[KOBJ_NS_TYPES]. When a a task in a tagging namespace
|
||||
*ns[KOBJ_NS_TYPES]. When a task in a tagging namespace
|
||||
kobj_nstype first mounts sysfs, a new superblock is created. It
|
||||
will be differentiated from other sysfs mounts by having its
|
||||
s_fs_info->ns[kobj_nstype] set to the new namespace. Note that
|
||||
|
|
|
@ -135,7 +135,7 @@ default behaviour.
|
|||
If the memory cost of 8 log buffers is too high on small
|
||||
systems, then it may be reduced at some cost to performance
|
||||
on metadata intensive workloads. The logbsize option below
|
||||
controls the size of each buffer and so is also relevent to
|
||||
controls the size of each buffer and so is also relevant to
|
||||
this case.
|
||||
|
||||
logbsize=value
|
||||
|
|
|
@ -213,7 +213,7 @@ The individual methods perform the following tasks:
|
|||
methods: for example the SPEC driver may define that its carrier
|
||||
I2C memory is seen at offset 1M and the internal SPI flash is seen
|
||||
at offset 16M. This multiplexing of several flash memories in the
|
||||
same address space is is carrier-specific and should only be used
|
||||
same address space is carrier-specific and should only be used
|
||||
by a driver that has verified the `carrier_name' field.
|
||||
|
||||
|
||||
|
|
|
@ -299,7 +299,7 @@ Byte 1:
|
|||
min threshold (scale as bank 0x26)
|
||||
|
||||
|
||||
Warning for the adventerous
|
||||
Warning for the adventurous
|
||||
===========================
|
||||
|
||||
A word of caution to those who want to experiment and see if they can figure
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
How to Get Your Patch Accepted Into the Hwmon Subsystem
|
||||
-------------------------------------------------------
|
||||
|
||||
This text is is a collection of suggestions for people writing patches or
|
||||
This text is a collection of suggestions for people writing patches or
|
||||
drivers for the hwmon subsystem. Following these suggestions will greatly
|
||||
increase the chances of your change being accepted.
|
||||
|
||||
|
|
|
@ -241,7 +241,7 @@ int hwspinlock_example2(void)
|
|||
locks).
|
||||
Should be called from a process context (this function might sleep).
|
||||
Returns the address of hwspinlock on success, or NULL on error (e.g.
|
||||
if the hwspinlock is sill in use).
|
||||
if the hwspinlock is still in use).
|
||||
|
||||
5. Important structs
|
||||
|
||||
|
|
|
@ -196,8 +196,8 @@ static int example_probe(struct i2c_client *i2c_client,
|
|||
|
||||
Update the detach method, by changing the name to _remove and
|
||||
to delete the i2c_detach_client call. It is possible that you
|
||||
can also remove the ret variable as it is not not needed for
|
||||
any of the core functions.
|
||||
can also remove the ret variable as it is not needed for any
|
||||
of the core functions.
|
||||
|
||||
- static int example_detach(struct i2c_client *client)
|
||||
+ static int example_remove(struct i2c_client *client)
|
||||
|
|
|
@ -91,9 +91,9 @@ information from the kmemcheck warnings, which is extremely valuable in
|
|||
debugging a problem. This option is not mandatory, however, because it slows
|
||||
down the compilation process and produces a much bigger kernel image.
|
||||
|
||||
Now the kmemcheck menu should be visible (under "Kernel hacking" / "kmemcheck:
|
||||
trap use of uninitialized memory"). Here follows a description of the
|
||||
kmemcheck configuration variables:
|
||||
Now the kmemcheck menu should be visible (under "Kernel hacking" / "Memory
|
||||
Debugging" / "kmemcheck: trap use of uninitialized memory"). Here follows
|
||||
a description of the kmemcheck configuration variables:
|
||||
|
||||
o CONFIG_KMEMCHECK
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ To register the chip at address 0x63 on specific adapter, set the platform data
|
|||
according to include/linux/platform_data/leds-lm3556.h, set the i2c board info
|
||||
|
||||
Example:
|
||||
static struct i2c_board_info __initdata board_i2c_ch4[] = {
|
||||
static struct i2c_board_info board_i2c_ch4[] __initdata = {
|
||||
{
|
||||
I2C_BOARD_INFO(LM3556_NAME, 0x63),
|
||||
.platform_data = &lm3556_pdata,
|
||||
|
|
|
@ -37,7 +37,7 @@ registered using the i2c_board_info mechanism.
|
|||
To register the chip at address 0x60 on adapter 0, set the platform data
|
||||
according to include/linux/leds-lp3944.h, set the i2c board info:
|
||||
|
||||
static struct i2c_board_info __initdata a910_i2c_board_info[] = {
|
||||
static struct i2c_board_info a910_i2c_board_info[] __initdata = {
|
||||
{
|
||||
I2C_BOARD_INFO("lp3944", 0x60),
|
||||
.platform_data = &a910_lp3944_leds,
|
||||
|
|
|
@ -163,7 +163,7 @@ a recent addition and not present on older kernels.
|
|||
at read: contains online/offline state of memory.
|
||||
at write: user can specify "online_kernel",
|
||||
"online_movable", "online", "offline" command
|
||||
which will be performed on al sections in the block.
|
||||
which will be performed on all sections in the block.
|
||||
'phys_device' : read-only: designed to show the name of physical memory
|
||||
device. This is not well implemented now.
|
||||
'removable' : read-only: contains an integer value indicating
|
||||
|
|
|
@ -543,7 +543,7 @@ THe code within the for loop was changed to:
|
|||
}
|
||||
|
||||
As you can see tmppar is used to accumulate the parity within a for
|
||||
iteration. In the last 3 statements is is added to par and, if needed,
|
||||
iteration. In the last 3 statements is added to par and, if needed,
|
||||
to rp12 and rp14.
|
||||
|
||||
While making the changes I also found that I could exploit that tmppar
|
||||
|
|
|
@ -179,7 +179,7 @@ use the PM_TRACE mechanism documented in Documentation/power/s2ram.txt .
|
|||
|
||||
To verify that the STR works, it is generally more convenient to use the s2ram
|
||||
tool available from http://suspend.sf.net and documented at
|
||||
http://en.opensuse.org/SDB:Suspend_to_RAM.
|
||||
http://en.opensuse.org/SDB:Suspend_to_RAM (S2RAM_LINK).
|
||||
|
||||
Namely, after writing "freezer", "devices", "platform", "processors", or "core"
|
||||
into /sys/power/pm_test (available if the kernel is compiled with
|
||||
|
@ -194,10 +194,10 @@ Among other things, the testing with the help of /sys/power/pm_test may allow
|
|||
you to identify drivers that fail to suspend or resume their devices. They
|
||||
should be unloaded every time before an STR transition.
|
||||
|
||||
Next, you can follow the instructions at http://en.opensuse.org/s2ram to test
|
||||
the system, but if it does not work "out of the box", you may need to boot it
|
||||
with "init=/bin/bash" and test s2ram in the minimal configuration. In that
|
||||
case, you may be able to search for failing drivers by following the procedure
|
||||
Next, you can follow the instructions at S2RAM_LINK to test the system, but if
|
||||
it does not work "out of the box", you may need to boot it with
|
||||
"init=/bin/bash" and test s2ram in the minimal configuration. In that case,
|
||||
you may be able to search for failing drivers by following the procedure
|
||||
analogous to the one described in section 1. If you find some failing drivers,
|
||||
you will have to unload them every time before an STR transition (ie. before
|
||||
you run s2ram), and please report the problems with them.
|
||||
|
|
|
@ -50,6 +50,19 @@ echo N > /sys/power/image_size
|
|||
|
||||
before suspend (it is limited to 500 MB by default).
|
||||
|
||||
. The resume process checks for the presence of the resume device,
|
||||
if found, it then checks the contents for the hibernation image signature.
|
||||
If both are found, it resumes the hibernation image.
|
||||
|
||||
. The resume process may be triggered in two ways:
|
||||
1) During lateinit: If resume=/dev/your_swap_partition is specified on
|
||||
the kernel command line, lateinit runs the resume process. If the
|
||||
resume device has not been probed yet, the resume process fails and
|
||||
bootup continues.
|
||||
2) Manually from an initrd or initramfs: May be run from
|
||||
the init script by using the /sys/power/resume file. It is vital
|
||||
that this be done prior to remounting any filesystems (even as
|
||||
read-only) otherwise data may be corrupted.
|
||||
|
||||
Article about goals and implementation of Software Suspend for Linux
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -326,7 +339,7 @@ Q: How can distributions ship a swsusp-supporting kernel with modular
|
|||
disk drivers (especially SATA)?
|
||||
|
||||
A: Well, it can be done, load the drivers, then do echo into
|
||||
/sys/power/disk/resume file from initrd. Be sure not to mount
|
||||
/sys/power/resume file from initrd. Be sure not to mount
|
||||
anything, not even read-only mount, or you are going to lose your
|
||||
data.
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ IPv4 addresses:
|
|||
|
||||
%pI4 1.2.3.4
|
||||
%pi4 001.002.003.004
|
||||
%p[Ii][hnbl]
|
||||
%p[Ii]4[hnbl]
|
||||
|
||||
For printing IPv4 dot-separated decimal addresses. The 'I4' and 'i4'
|
||||
specifiers result in a printed address with ('i4') or without ('I4')
|
||||
|
@ -194,11 +194,11 @@ struct va_format:
|
|||
|
||||
u64 SHOULD be printed with %llu/%llx, (unsigned long long):
|
||||
|
||||
printk("%llu", (unsigned long long)u64_var);
|
||||
printk("%llu", u64_var);
|
||||
|
||||
s64 SHOULD be printed with %lld/%llx, (long long):
|
||||
|
||||
printk("%lld", (long long)s64_var);
|
||||
printk("%lld", s64_var);
|
||||
|
||||
If <type> is dependent on a config option for its size (e.g., sector_t,
|
||||
blkcnt_t) or is architecture-dependent for its size (e.g., tcflag_t), use a
|
||||
|
|
|
@ -300,7 +300,7 @@ initialization.
|
|||
-------------------------------------------
|
||||
|
||||
RapidIO subsystem code organization allows addition of new enumeration/discovery
|
||||
methods as new configuration options without significant impact to to the core
|
||||
methods as new configuration options without significant impact to the core
|
||||
RapidIO code.
|
||||
|
||||
A new enumeration/discovery method has to be attached to one or more mport
|
||||
|
|
|
@ -151,7 +151,7 @@ To send a request to the controller:
|
|||
generated.
|
||||
|
||||
- The host read the outbound list copy pointer shadow register and compare
|
||||
with previous saved read ponter N. If they are different, the host will
|
||||
with previous saved read pointer N. If they are different, the host will
|
||||
read the (N+1)th outbound list unit.
|
||||
|
||||
The host get the index of the request from the (N+1)th outbound list
|
||||
|
|
|
@ -120,7 +120,7 @@ Mic Phantom+48V: switch for +48V phantom power for electrostatic microphones on
|
|||
Make sure this is not turned on while any other source is connected to input 1/2.
|
||||
It might damage the source and/or the maya44 card.
|
||||
|
||||
Mic/Line input: if switch is is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo).
|
||||
Mic/Line input: if switch is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo).
|
||||
|
||||
Bypass: analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver.
|
||||
Bypass 1: same for channel 3+4.
|
||||
|
|
|
@ -73,7 +73,7 @@ The main requirements are:
|
|||
|
||||
Design
|
||||
|
||||
The new API shares a number of concepts with with the PCM API for flow
|
||||
The new API shares a number of concepts with the PCM API for flow
|
||||
control. Start, pause, resume, drain and stop commands have the same
|
||||
semantics no matter what the content is.
|
||||
|
||||
|
@ -130,7 +130,7 @@ the settings should remain the exception.
|
|||
The timestamp becomes a multiple field structure. It lists the number
|
||||
of bytes transferred, the number of samples processed and the number
|
||||
of samples rendered/grabbed. All these values can be used to determine
|
||||
the avarage bitrate, figure out if the ring buffer needs to be
|
||||
the average bitrate, figure out if the ring buffer needs to be
|
||||
refilled or the delay due to decoding/encoding/io on the DSP.
|
||||
|
||||
Note that the list of codecs/profiles/modes was derived from the
|
||||
|
|
|
@ -47,7 +47,7 @@ versions of the sysfs interface.
|
|||
at device creation and removal
|
||||
- the unique key to the device at that point in time
|
||||
- the kernel's path to the device directory without the leading
|
||||
/sys, and always starting with with a slash
|
||||
/sys, and always starting with a slash
|
||||
- all elements of a devpath must be real directories. Symlinks
|
||||
pointing to /sys/devices must always be resolved to their real
|
||||
target and the target path must be used to access the device.
|
||||
|
|
|
@ -300,7 +300,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " int ret;\n\n"
|
||||
buf += " if (strstr(name, \"tpgt_\") != name)\n"
|
||||
buf += " return ERR_PTR(-EINVAL);\n"
|
||||
buf += " if (strict_strtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n"
|
||||
buf += " if (kstrtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n"
|
||||
buf += " return ERR_PTR(-EINVAL);\n\n"
|
||||
buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n"
|
||||
buf += " if (!tpg) {\n"
|
||||
|
|
|
@ -735,7 +735,7 @@ Here are the available options:
|
|||
function as well as the function being traced.
|
||||
|
||||
print-parent:
|
||||
bash-4000 [01] 1477.606694: simple_strtoul <-strict_strtoul
|
||||
bash-4000 [01] 1477.606694: simple_strtoul <-kstrtoul
|
||||
|
||||
noprint-parent:
|
||||
bash-4000 [01] 1477.606694: simple_strtoul
|
||||
|
@ -759,7 +759,7 @@ Here are the available options:
|
|||
latency-format option is enabled.
|
||||
|
||||
bash 4000 1 0 00000000 00010a95 [58127d26] 1720.415ms \
|
||||
(+0.000ms): simple_strtoul (strict_strtoul)
|
||||
(+0.000ms): simple_strtoul (kstrtoul)
|
||||
|
||||
raw - This will display raw numbers. This option is best for
|
||||
use with user applications that can translate the raw
|
||||
|
|
|
@ -40,7 +40,13 @@ Two elements are required for tracepoints :
|
|||
|
||||
In order to use tracepoints, you should include linux/tracepoint.h.
|
||||
|
||||
In include/trace/subsys.h :
|
||||
In include/trace/events/subsys.h :
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM subsys
|
||||
|
||||
#if !defined(_TRACE_SUBSYS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_SUBSYS_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
|
@ -48,10 +54,16 @@ DECLARE_TRACE(subsys_eventname,
|
|||
TP_PROTO(int firstarg, struct task_struct *p),
|
||||
TP_ARGS(firstarg, p));
|
||||
|
||||
#endif /* _TRACE_SUBSYS_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
||||
In subsys/file.c (where the tracing statement must be added) :
|
||||
|
||||
#include <trace/subsys.h>
|
||||
#include <trace/events/subsys.h>
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
DEFINE_TRACE(subsys_eventname);
|
||||
|
||||
void somefct(void)
|
||||
|
@ -72,6 +84,9 @@ Where :
|
|||
- TP_ARGS(firstarg, p) are the parameters names, same as found in the
|
||||
prototype.
|
||||
|
||||
- if you use the header in multiple source files, #define CREATE_TRACE_POINTS
|
||||
should appear only in one source file.
|
||||
|
||||
Connecting a function (probe) to a tracepoint is done by providing a
|
||||
probe (function to call) for the specific tracepoint through
|
||||
register_trace_subsys_eventname(). Removing a probe is done through
|
||||
|
|
|
@ -53,7 +53,7 @@ incompatible change are allowed. However, there is an extension
|
|||
facility that allows backward-compatible extensions to the API to be
|
||||
queried and used.
|
||||
|
||||
The extension mechanism is not based on on the Linux version number.
|
||||
The extension mechanism is not based on the Linux version number.
|
||||
Instead, kvm defines extension identifiers and a facility to query
|
||||
whether a particular extension identifier is available. If it is, a
|
||||
set of ioctls is available for application use.
|
||||
|
|
|
@ -58,7 +58,7 @@ Protocol 2.11: (Kernel 3.6) Added a field for offset of EFI handover
|
|||
protocol entry point.
|
||||
|
||||
Protocol 2.12: (Kernel 3.8) Added the xloadflags field and extension fields
|
||||
to struct boot_params for for loading bzImage and ramdisk
|
||||
to struct boot_params for loading bzImage and ramdisk
|
||||
above 4G in 64bit.
|
||||
|
||||
**** MEMORY LAYOUT
|
||||
|
|
|
@ -146,7 +146,7 @@ Majordomo lists of VGER.KERNEL.ORG at:
|
|||
<http://vger.kernel.org/vger-lists.html>
|
||||
|
||||
如果改动影响了用户空间和内核之间的接口,请给 MAN-PAGES 的维护者(列在
|
||||
MAITAINERS 文件里的)发送一个手册页(man-pages)补丁,或者至少通知一下改
|
||||
MAINTAINERS 文件里的)发送一个手册页(man-pages)补丁,或者至少通知一下改
|
||||
变,让一些信息有途径进入手册页。
|
||||
|
||||
即使在第四步的时候,维护者没有作出回应,也要确认在修改他们的代码的时候
|
||||
|
|
|
@ -78,7 +78,7 @@ restore_sigcontext(struct sigcontext __user *sc, struct pt_regs *regs)
|
|||
err |= __copy_from_user(regs->iaoq, sc->sc_iaoq, sizeof(regs->iaoq));
|
||||
err |= __copy_from_user(regs->iasq, sc->sc_iasq, sizeof(regs->iasq));
|
||||
err |= __get_user(regs->sar, &sc->sc_sar);
|
||||
DBG(2,"restore_sigcontext: iaoq is 0x%#lx / 0x%#lx\n",
|
||||
DBG(2,"restore_sigcontext: iaoq is %#lx / %#lx\n",
|
||||
regs->iaoq[0],regs->iaoq[1]);
|
||||
DBG(2,"restore_sigcontext: r28 is %ld\n", regs->gr[28]);
|
||||
return err;
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
#if defined(CONFIG_KERNEL_START_BOOL) || defined(CONFIG_LOWMEM_SIZE_BOOL)
|
||||
/* The amount of lowmem must be within 0xF0000000 - KERNELBASE. */
|
||||
#if (CONFIG_LOWMEM_SIZE > (0xF0000000 - PAGE_OFFSET))
|
||||
#error "You must adjust CONFIG_LOWMEM_SIZE or CONFIG_START_KERNEL"
|
||||
#error "You must adjust CONFIG_LOWMEM_SIZE or CONFIG_KERNEL_START"
|
||||
#endif
|
||||
#endif
|
||||
#define MAX_LOW_MEM CONFIG_LOWMEM_SIZE
|
||||
|
|
|
@ -391,7 +391,7 @@ EXPORT_SYMBOL_GPL(__crypto_alloc_tfm);
|
|||
* @mask: Mask for type comparison
|
||||
*
|
||||
* This function should not be used by new algorithm types.
|
||||
* Plesae use crypto_alloc_tfm instead.
|
||||
* Please use crypto_alloc_tfm instead.
|
||||
*
|
||||
* crypto_alloc_base() will first attempt to locate an already loaded
|
||||
* algorithm. If that fails and the kernel supports dynamically loadable
|
||||
|
|
|
@ -393,7 +393,7 @@ static struct page **bm_realloc_pages(struct drbd_bitmap *b, unsigned long want)
|
|||
* we must not block on IO to ourselves.
|
||||
* Context is receiver thread or dmsetup. */
|
||||
bytes = sizeof(struct page *)*want;
|
||||
new_pages = kzalloc(bytes, GFP_NOIO);
|
||||
new_pages = kzalloc(bytes, GFP_NOIO | __GFP_NOWARN);
|
||||
if (!new_pages) {
|
||||
new_pages = __vmalloc(bytes,
|
||||
GFP_NOIO | __GFP_HIGHMEM | __GFP_ZERO,
|
||||
|
|
|
@ -200,14 +200,14 @@ static int __init init_acpi_pm_clocksource(void)
|
|||
if ((value2 < value1) && ((value2) < 0xFFF))
|
||||
break;
|
||||
printk(KERN_INFO "PM-Timer had inconsistent results:"
|
||||
" 0x%#llx, 0x%#llx - aborting.\n",
|
||||
" %#llx, %#llx - aborting.\n",
|
||||
value1, value2);
|
||||
pmtmr_ioport = 0;
|
||||
return -EINVAL;
|
||||
}
|
||||
if (i == ACPI_PM_READ_CHECKS) {
|
||||
printk(KERN_INFO "PM-Timer failed consistency check "
|
||||
" (0x%#llx) - aborting.\n", value1);
|
||||
" (%#llx) - aborting.\n", value1);
|
||||
pmtmr_ioport = 0;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
|
|
@ -282,7 +282,7 @@ static int get_empty_message_digest(
|
|||
}
|
||||
} else {
|
||||
dev_dbg(device_data->dev, "[%s] Continue hash "
|
||||
"calculation, since hmac key avalable",
|
||||
"calculation, since hmac key available",
|
||||
__func__);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1541,7 +1541,7 @@ int r300_init(struct radeon_device *rdev)
|
|||
rdev->accel_working = true;
|
||||
r = r300_startup(rdev);
|
||||
if (r) {
|
||||
/* Somethings want wront with the accel init stop accel */
|
||||
/* Something went wrong with the accel init, so stop accel */
|
||||
dev_err(rdev->dev, "Disabling GPU acceleration\n");
|
||||
r100_cp_fini(rdev);
|
||||
radeon_wb_fini(rdev);
|
||||
|
|
|
@ -222,7 +222,8 @@ int ipz_queue_ctor(struct ehca_pd *pd, struct ipz_queue *queue,
|
|||
queue->small_page = NULL;
|
||||
|
||||
/* allocate queue page pointers */
|
||||
queue->queue_pages = kzalloc(nr_of_pages * sizeof(void *), GFP_KERNEL);
|
||||
queue->queue_pages = kzalloc(nr_of_pages * sizeof(void *),
|
||||
GFP_KERNEL | __GFP_NOWARN);
|
||||
if (!queue->queue_pages) {
|
||||
queue->queue_pages = vzalloc(nr_of_pages * sizeof(void *));
|
||||
if (!queue->queue_pages) {
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
* Based on the usbvideo vicam driver, which is:
|
||||
*
|
||||
* Copyright (c) 2002 Joe Burks (jburks@wavicle.org),
|
||||
* Christopher L Cheney (ccheney@cheney.cx),
|
||||
* Chris Cheney (chris.cheney@gmail.com),
|
||||
* Pavel Machek (pavel@ucw.cz),
|
||||
* John Tyner (jtyner@cs.ucr.edu),
|
||||
* Monroe Williams (monroe@pobox.com)
|
||||
|
|
|
@ -1157,7 +1157,7 @@ static void cxgb_redirect(struct dst_entry *old, struct dst_entry *new,
|
|||
*/
|
||||
void *cxgb_alloc_mem(unsigned long size)
|
||||
{
|
||||
void *p = kzalloc(size, GFP_KERNEL);
|
||||
void *p = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
|
||||
|
||||
if (!p)
|
||||
p = vzalloc(size);
|
||||
|
|
|
@ -1142,7 +1142,7 @@ out: release_firmware(fw);
|
|||
*/
|
||||
void *t4_alloc_mem(size_t size)
|
||||
{
|
||||
void *p = kzalloc(size, GFP_KERNEL);
|
||||
void *p = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
|
||||
|
||||
if (!p)
|
||||
p = vzalloc(size);
|
||||
|
|
|
@ -3148,7 +3148,7 @@ int qlcnic_83xx_set_settings(struct qlcnic_adapter *adapter,
|
|||
status = qlcnic_83xx_set_port_config(adapter);
|
||||
if (status) {
|
||||
dev_info(&adapter->pdev->dev,
|
||||
"Faild to Set Link Speed and autoneg.\n");
|
||||
"Failed to Set Link Speed and autoneg.\n");
|
||||
adapter->ahw->port_config = config;
|
||||
}
|
||||
return status;
|
||||
|
|
|
@ -1781,7 +1781,7 @@ static int qlcnic_83xx_process_rcv_ring(struct qlcnic_host_sds_ring *sds_ring,
|
|||
break;
|
||||
default:
|
||||
dev_info(&adapter->pdev->dev,
|
||||
"Unkonwn opcode: 0x%x\n", opcode);
|
||||
"Unknown opcode: 0x%x\n", opcode);
|
||||
goto skip;
|
||||
}
|
||||
|
||||
|
|
|
@ -1709,7 +1709,7 @@ static irqreturn_t sis900_interrupt(int irq, void *dev_instance)
|
|||
|
||||
if(netif_msg_intr(sis_priv))
|
||||
printk(KERN_DEBUG "%s: exiting interrupt, "
|
||||
"interrupt status = 0x%#8.8x.\n",
|
||||
"interrupt status = %#8.8x\n",
|
||||
net_dev->name, sr32(isr));
|
||||
|
||||
spin_unlock (&sis_priv->lock);
|
||||
|
|
|
@ -1199,7 +1199,7 @@ bool wsm_flush_tx(struct cw1200_common *priv)
|
|||
|
||||
if (priv->bh_error) {
|
||||
/* In case of failure do not wait for magic. */
|
||||
pr_err("[WSM] Fatal error occured, will not flush TX.\n");
|
||||
pr_err("[WSM] Fatal error occurred, will not flush TX.\n");
|
||||
return false;
|
||||
} else {
|
||||
/* Get a timestamp of "oldest" frame */
|
||||
|
|
|
@ -199,7 +199,7 @@ static void iwl_mvm_te_handle_notif(struct iwl_mvm *mvm,
|
|||
* and know the dtim period.
|
||||
*/
|
||||
iwl_mvm_te_check_disconnect(mvm, te_data->vif,
|
||||
"No assocation and the time event is over already...");
|
||||
"No association and the time event is over already...");
|
||||
iwl_mvm_te_clear_data(mvm, te_data);
|
||||
} else if (le32_to_cpu(notif->action) & TE_V2_NOTIF_HOST_EVENT_START) {
|
||||
te_data->running = true;
|
||||
|
|
|
@ -341,7 +341,7 @@ static void _rtl88e_fill_h2c_command(struct ieee80211_hw *hw,
|
|||
wait_h2c_limit--;
|
||||
if (wait_h2c_limit == 0) {
|
||||
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
|
||||
"Wating too long for FW read "
|
||||
"Waiting too long for FW read "
|
||||
"clear HMEBox(%d)!\n", boxnum);
|
||||
break;
|
||||
}
|
||||
|
@ -351,7 +351,7 @@ static void _rtl88e_fill_h2c_command(struct ieee80211_hw *hw,
|
|||
isfw_read = _rtl88e_check_fw_read_last_h2c(hw, boxnum);
|
||||
u1b_tmp = rtl_read_byte(rtlpriv, 0x130);
|
||||
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
|
||||
"Wating for FW read clear HMEBox(%d)!!! "
|
||||
"Waiting for FW read clear HMEBox(%d)!!! "
|
||||
"0x130 = %2x\n", boxnum, u1b_tmp);
|
||||
}
|
||||
|
||||
|
|
|
@ -416,7 +416,7 @@ static void rtl92d_dm_dig(struct ieee80211_hw *hw)
|
|||
|
||||
/* because we will send data pkt when scanning
|
||||
* this will cause some ap like gear-3700 wep TP
|
||||
* lower if we retrun here, this is the diff of
|
||||
* lower if we return here, this is the diff of
|
||||
* mac80211 driver vs ieee80211 driver */
|
||||
/* if (rtlpriv->mac80211.act_scanning)
|
||||
* return; */
|
||||
|
|
|
@ -330,7 +330,7 @@ static void _rtl8723ae_fill_h2c_command(struct ieee80211_hw *hw,
|
|||
wait_h2c_limmit--;
|
||||
if (wait_h2c_limmit == 0) {
|
||||
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
|
||||
"Wating too long for FW read clear HMEBox(%d)!\n",
|
||||
"Waiting too long for FW read clear HMEBox(%d)!\n",
|
||||
boxnum);
|
||||
break;
|
||||
}
|
||||
|
@ -340,7 +340,7 @@ static void _rtl8723ae_fill_h2c_command(struct ieee80211_hw *hw,
|
|||
isfw_rd = rtl8723ae_check_fw_read_last_h2c(hw, boxnum);
|
||||
u1tmp = rtl_read_byte(rtlpriv, 0x1BF);
|
||||
RT_TRACE(rtlpriv, COMP_CMD, DBG_LOUD,
|
||||
"Wating for FW read clear HMEBox(%d)!!! "
|
||||
"Waiting for FW read clear HMEBox(%d)!!! "
|
||||
"0x1BF = %2x\n", boxnum, u1tmp);
|
||||
}
|
||||
|
||||
|
|
|
@ -554,7 +554,7 @@ static irqreturn_t pm860x_vchg_handler(int irq, void *data)
|
|||
OVTEMP_AUTORECOVER,
|
||||
OVTEMP_AUTORECOVER);
|
||||
dev_dbg(info->dev,
|
||||
"%s, pm8606 over-temp occure\n", __func__);
|
||||
"%s, pm8606 over-temp occurred\n", __func__);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -562,7 +562,7 @@ static irqreturn_t pm860x_vchg_handler(int irq, void *data)
|
|||
set_vchg_threshold(info, VCHG_OVP_LOW, 0);
|
||||
info->allowed = 0;
|
||||
dev_dbg(info->dev,
|
||||
"%s,pm8607 over-vchg occure,vchg = %dmv\n",
|
||||
"%s,pm8607 over-vchg occurred,vchg = %dmv\n",
|
||||
__func__, vchg);
|
||||
} else if (vchg < VCHG_OVP_LOW) {
|
||||
set_vchg_threshold(info, VCHG_NORMAL_LOW,
|
||||
|
|
|
@ -386,7 +386,7 @@ static int pm2_int_reg2(void *pm2_data, int val)
|
|||
if (val & (PM2XXX_INT3_ITCHPRECHARGEWD |
|
||||
PM2XXX_INT3_ITCHCCWD | PM2XXX_INT3_ITCHCVWD)) {
|
||||
dev_dbg(pm2->dev,
|
||||
"Watchdog occured for precharge, CC and CV charge\n");
|
||||
"Watchdog occurred for precharge, CC and CV charge\n");
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
|
@ -206,7 +206,7 @@ bfad_im_abort_handler(struct scsi_cmnd *cmnd)
|
|||
spin_lock_irqsave(&bfad->bfad_lock, flags);
|
||||
hal_io = (struct bfa_ioim_s *) cmnd->host_scribble;
|
||||
if (!hal_io) {
|
||||
/* IO has been completed, retrun success */
|
||||
/* IO has been completed, return success */
|
||||
rc = SUCCESS;
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -658,11 +658,11 @@ static inline u32 cxgbi_tag_nonrsvd_bits(struct cxgbi_tag_format *tformat,
|
|||
static inline void *cxgbi_alloc_big_mem(unsigned int size,
|
||||
gfp_t gfp)
|
||||
{
|
||||
void *p = kmalloc(size, gfp);
|
||||
void *p = kzalloc(size, gfp | __GFP_NOWARN);
|
||||
|
||||
if (!p)
|
||||
p = vmalloc(size);
|
||||
if (p)
|
||||
memset(p, 0, size);
|
||||
p = vzalloc(size);
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
|
|
|
@ -1054,7 +1054,7 @@ static void adjust_hpsa_scsi_table(struct ctlr_info *h, int hostno,
|
|||
}
|
||||
|
||||
/*
|
||||
* Lookup bus/target/lun and retrun corresponding struct hpsa_scsi_dev_t *
|
||||
* Lookup bus/target/lun and return corresponding struct hpsa_scsi_dev_t *
|
||||
* Assume's h->devlock is held.
|
||||
*/
|
||||
static struct hpsa_scsi_dev_t *lookup_hpsa_scsi_dev(struct ctlr_info *h,
|
||||
|
|
|
@ -816,7 +816,7 @@ lpfc_issue_reset(struct device *dev, struct device_attribute *attr,
|
|||
* the readyness after performing a firmware reset.
|
||||
*
|
||||
* Returns:
|
||||
* zero for success, -EPERM when port does not have privilage to perform the
|
||||
* zero for success, -EPERM when port does not have privilege to perform the
|
||||
* reset, -EIO when port timeout from recovering from the reset.
|
||||
*
|
||||
* Note:
|
||||
|
@ -833,7 +833,7 @@ lpfc_sli4_pdev_status_reg_wait(struct lpfc_hba *phba)
|
|||
lpfc_readl(phba->sli4_hba.u.if_type2.STATUSregaddr,
|
||||
&portstat_reg.word0);
|
||||
|
||||
/* verify if privilaged for the request operation */
|
||||
/* verify if privileged for the request operation */
|
||||
if (!bf_get(lpfc_sliport_status_rn, &portstat_reg) &&
|
||||
!bf_get(lpfc_sliport_status_err, &portstat_reg))
|
||||
return -EPERM;
|
||||
|
@ -925,9 +925,9 @@ lpfc_sli4_pdev_reg_request(struct lpfc_hba *phba, uint32_t opcode)
|
|||
rc = lpfc_sli4_pdev_status_reg_wait(phba);
|
||||
|
||||
if (rc == -EPERM) {
|
||||
/* no privilage for reset */
|
||||
/* no privilege for reset */
|
||||
lpfc_printf_log(phba, KERN_ERR, LOG_SLI,
|
||||
"3150 No privilage to perform the requested "
|
||||
"3150 No privilege to perform the requested "
|
||||
"access: x%x\n", reg_val);
|
||||
} else if (rc == -EIO) {
|
||||
/* reset failed, there is nothing more we can do */
|
||||
|
|
|
@ -2628,7 +2628,7 @@ static int lpfcdiag_loop_get_xri(struct lpfc_hba *phba, uint16_t rpi,
|
|||
* @phba: Pointer to HBA context object
|
||||
*
|
||||
* This function allocates BSG_MBOX_SIZE (4KB) page size dma buffer and.
|
||||
* retruns the pointer to the buffer.
|
||||
* returns the pointer to the buffer.
|
||||
**/
|
||||
static struct lpfc_dmabuf *
|
||||
lpfc_bsg_dma_page_alloc(struct lpfc_hba *phba)
|
||||
|
|
|
@ -549,7 +549,7 @@ megaraid_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
|||
|
||||
/**
|
||||
* megaraid_detach_one - release framework resources and call LLD release routine
|
||||
* @pdev : handle for our PCI cofiguration space
|
||||
* @pdev : handle for our PCI configuration space
|
||||
*
|
||||
* This routine is called during driver unload. We free all the allocated
|
||||
* resources and call the corresponding LLD so that it can also release all
|
||||
|
@ -979,7 +979,7 @@ megaraid_fini_mbox(adapter_t *adapter)
|
|||
* @adapter : soft state of the raid controller
|
||||
*
|
||||
* Allocate and align the shared mailbox. This maibox is used to issue
|
||||
* all the commands. For IO based controllers, the mailbox is also regsitered
|
||||
* all the commands. For IO based controllers, the mailbox is also registered
|
||||
* with the FW. Allocate memory for all commands as well.
|
||||
* This is our big allocator.
|
||||
*/
|
||||
|
@ -2027,7 +2027,7 @@ megaraid_mbox_prepare_pthru(adapter_t *adapter, scb_t *scb,
|
|||
* @scb : scsi control block
|
||||
* @scp : scsi command from the mid-layer
|
||||
*
|
||||
* Prepare a command for the scsi physical devices. This rountine prepares
|
||||
* Prepare a command for the scsi physical devices. This routine prepares
|
||||
* commands for devices which can take extended CDBs (>10 bytes).
|
||||
*/
|
||||
static void
|
||||
|
@ -2586,7 +2586,7 @@ megaraid_abort_handler(struct scsi_cmnd *scp)
|
|||
}
|
||||
|
||||
/**
|
||||
* megaraid_reset_handler - device reset hadler for mailbox based driver
|
||||
* megaraid_reset_handler - device reset handler for mailbox based driver
|
||||
* @scp : reference command
|
||||
*
|
||||
* Reset handler for the mailbox based controller. First try to find out if
|
||||
|
@ -3446,7 +3446,7 @@ megaraid_mbox_display_scb(adapter_t *adapter, scb_t *scb)
|
|||
* megaraid_mbox_setup_device_map - manage device ids
|
||||
* @adapter : Driver's soft state
|
||||
*
|
||||
* Manange the device ids to have an appropriate mapping between the kernel
|
||||
* Manage the device ids to have an appropriate mapping between the kernel
|
||||
* scsi addresses and megaraid scsi and logical drive addresses. We export
|
||||
* scsi devices on their actual addresses, whereas the logical drives are
|
||||
* exported on a virtual scsi channel.
|
||||
|
|
|
@ -896,7 +896,7 @@ hinfo_to_cinfo(mraid_hba_info_t *hinfo, mcontroller_t *cinfo)
|
|||
|
||||
/**
|
||||
* mraid_mm_register_adp - Registration routine for low level drivers
|
||||
* @lld_adp : Adapter objejct
|
||||
* @lld_adp : Adapter object
|
||||
*/
|
||||
int
|
||||
mraid_mm_register_adp(mraid_mmadp_t *lld_adp)
|
||||
|
|
|
@ -88,7 +88,7 @@ enum MR_RAID_FLAGS_IO_SUB_TYPE {
|
|||
#define MEGASAS_FUSION_IN_RESET 0
|
||||
|
||||
/*
|
||||
* Raid Context structure which describes MegaRAID specific IO Paramenters
|
||||
* Raid Context structure which describes MegaRAID specific IO Parameters
|
||||
* This resides at offset 0x60 where the SGL normally starts in MPT IO Frames
|
||||
*/
|
||||
|
||||
|
|
|
@ -1895,7 +1895,7 @@ qla24xx_process_bidir_cmd(struct fc_bsg_job *bsg_job)
|
|||
bsg_job->reply->reply_payload_rcv_len = 0;
|
||||
bsg_job->reply->result = (DID_OK) << 16;
|
||||
bsg_job->job_done(bsg_job);
|
||||
/* Always retrun success, vendor rsp carries correct status */
|
||||
/* Always return success, vendor rsp carries correct status */
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1865,7 +1865,7 @@ qlafx00_fx_disc(scsi_qla_host_t *vha, fc_port_t *fcport, uint16_t fx_type)
|
|||
p_sysid = utsname();
|
||||
if (!p_sysid) {
|
||||
ql_log(ql_log_warn, vha, 0x303c,
|
||||
"Not able to get the system informtion\n");
|
||||
"Not able to get the system information\n");
|
||||
goto done_free_sp;
|
||||
}
|
||||
break;
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
* to glue code. These bitbang setup() and cleanup() routines are always
|
||||
* used, though maybe they're called from controller-aware code.
|
||||
*
|
||||
* chipselect() and friends may use use spi_device->controller_data and
|
||||
* chipselect() and friends may use spi_device->controller_data and
|
||||
* controller registers as appropriate.
|
||||
*
|
||||
*
|
||||
|
|
|
@ -45,7 +45,7 @@ static int kgdboc_reset_connect(struct input_handler *handler,
|
|||
{
|
||||
input_reset_device(dev);
|
||||
|
||||
/* Retrun an error - we do not want to bind, just to reset */
|
||||
/* Return an error - we do not want to bind, just to reset */
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
|
|
@ -219,7 +219,7 @@ static int fs_path_ensure_buf(struct fs_path *p, int len)
|
|||
len = PAGE_ALIGN(len);
|
||||
|
||||
if (p->buf == p->inline_buf) {
|
||||
tmp_buf = kmalloc(len, GFP_NOFS);
|
||||
tmp_buf = kmalloc(len, GFP_NOFS | __GFP_NOWARN);
|
||||
if (!tmp_buf) {
|
||||
tmp_buf = vmalloc(len);
|
||||
if (!tmp_buf)
|
||||
|
|
|
@ -162,7 +162,7 @@ void *ext4_kvmalloc(size_t size, gfp_t flags)
|
|||
{
|
||||
void *ret;
|
||||
|
||||
ret = kmalloc(size, flags);
|
||||
ret = kmalloc(size, flags | __GFP_NOWARN);
|
||||
if (!ret)
|
||||
ret = __vmalloc(size, flags, PAGE_KERNEL);
|
||||
return ret;
|
||||
|
@ -172,7 +172,7 @@ void *ext4_kvzalloc(size_t size, gfp_t flags)
|
|||
{
|
||||
void *ret;
|
||||
|
||||
ret = kzalloc(size, flags);
|
||||
ret = kzalloc(size, flags | __GFP_NOWARN);
|
||||
if (!ret)
|
||||
ret = __vmalloc(size, flags | __GFP_ZERO, PAGE_KERNEL);
|
||||
return ret;
|
||||
|
|
|
@ -1859,7 +1859,7 @@ static int leaf_dealloc(struct gfs2_inode *dip, u32 index, u32 len,
|
|||
|
||||
memset(&rlist, 0, sizeof(struct gfs2_rgrp_list));
|
||||
|
||||
ht = kzalloc(size, GFP_NOFS);
|
||||
ht = kzalloc(size, GFP_NOFS | __GFP_NOWARN);
|
||||
if (ht == NULL)
|
||||
ht = vzalloc(size);
|
||||
if (!ht)
|
||||
|
|
|
@ -60,7 +60,6 @@ Mellon the rights to redistribute these changes without encumbrance.
|
|||
|
||||
#if defined(__linux__)
|
||||
typedef unsigned long long u_quad_t;
|
||||
#else
|
||||
#endif
|
||||
#include <uapi/linux/coda.h>
|
||||
#endif
|
||||
|
|
|
@ -69,7 +69,7 @@ typedef union ktime ktime_t; /* Kill this */
|
|||
* @secs: seconds to set
|
||||
* @nsecs: nanoseconds to set
|
||||
*
|
||||
* Return the ktime_t representation of the value
|
||||
* Return: The ktime_t representation of the value.
|
||||
*/
|
||||
static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)
|
||||
{
|
||||
|
@ -151,7 +151,7 @@ static inline ktime_t ktime_set(const long secs, const unsigned long nsecs)
|
|||
* @lhs: minuend
|
||||
* @rhs: subtrahend
|
||||
*
|
||||
* Returns the remainder of the subtraction
|
||||
* Return: The remainder of the subtraction.
|
||||
*/
|
||||
static inline ktime_t ktime_sub(const ktime_t lhs, const ktime_t rhs)
|
||||
{
|
||||
|
@ -169,7 +169,7 @@ static inline ktime_t ktime_sub(const ktime_t lhs, const ktime_t rhs)
|
|||
* @add1: addend1
|
||||
* @add2: addend2
|
||||
*
|
||||
* Returns the sum of @add1 and @add2.
|
||||
* Return: The sum of @add1 and @add2.
|
||||
*/
|
||||
static inline ktime_t ktime_add(const ktime_t add1, const ktime_t add2)
|
||||
{
|
||||
|
@ -195,7 +195,7 @@ static inline ktime_t ktime_add(const ktime_t add1, const ktime_t add2)
|
|||
* @kt: addend
|
||||
* @nsec: the scalar nsec value to add
|
||||
*
|
||||
* Returns the sum of @kt and @nsec in ktime_t format
|
||||
* Return: The sum of @kt and @nsec in ktime_t format.
|
||||
*/
|
||||
extern ktime_t ktime_add_ns(const ktime_t kt, u64 nsec);
|
||||
|
||||
|
@ -204,7 +204,7 @@ extern ktime_t ktime_add_ns(const ktime_t kt, u64 nsec);
|
|||
* @kt: minuend
|
||||
* @nsec: the scalar nsec value to subtract
|
||||
*
|
||||
* Returns the subtraction of @nsec from @kt in ktime_t format
|
||||
* Return: The subtraction of @nsec from @kt in ktime_t format.
|
||||
*/
|
||||
extern ktime_t ktime_sub_ns(const ktime_t kt, u64 nsec);
|
||||
|
||||
|
@ -212,7 +212,7 @@ extern ktime_t ktime_sub_ns(const ktime_t kt, u64 nsec);
|
|||
* timespec_to_ktime - convert a timespec to ktime_t format
|
||||
* @ts: the timespec variable to convert
|
||||
*
|
||||
* Returns a ktime_t variable with the converted timespec value
|
||||
* Return: A ktime_t variable with the converted timespec value.
|
||||
*/
|
||||
static inline ktime_t timespec_to_ktime(const struct timespec ts)
|
||||
{
|
||||
|
@ -224,7 +224,7 @@ static inline ktime_t timespec_to_ktime(const struct timespec ts)
|
|||
* timeval_to_ktime - convert a timeval to ktime_t format
|
||||
* @tv: the timeval variable to convert
|
||||
*
|
||||
* Returns a ktime_t variable with the converted timeval value
|
||||
* Return: A ktime_t variable with the converted timeval value.
|
||||
*/
|
||||
static inline ktime_t timeval_to_ktime(const struct timeval tv)
|
||||
{
|
||||
|
@ -237,7 +237,7 @@ static inline ktime_t timeval_to_ktime(const struct timeval tv)
|
|||
* ktime_to_timespec - convert a ktime_t variable to timespec format
|
||||
* @kt: the ktime_t variable to convert
|
||||
*
|
||||
* Returns the timespec representation of the ktime value
|
||||
* Return: The timespec representation of the ktime value.
|
||||
*/
|
||||
static inline struct timespec ktime_to_timespec(const ktime_t kt)
|
||||
{
|
||||
|
@ -249,7 +249,7 @@ static inline struct timespec ktime_to_timespec(const ktime_t kt)
|
|||
* ktime_to_timeval - convert a ktime_t variable to timeval format
|
||||
* @kt: the ktime_t variable to convert
|
||||
*
|
||||
* Returns the timeval representation of the ktime value
|
||||
* Return: The timeval representation of the ktime value.
|
||||
*/
|
||||
static inline struct timeval ktime_to_timeval(const ktime_t kt)
|
||||
{
|
||||
|
@ -262,7 +262,7 @@ static inline struct timeval ktime_to_timeval(const ktime_t kt)
|
|||
* ktime_to_ns - convert a ktime_t variable to scalar nanoseconds
|
||||
* @kt: the ktime_t variable to convert
|
||||
*
|
||||
* Returns the scalar nanoseconds representation of @kt
|
||||
* Return: The scalar nanoseconds representation of @kt.
|
||||
*/
|
||||
static inline s64 ktime_to_ns(const ktime_t kt)
|
||||
{
|
||||
|
@ -276,7 +276,9 @@ static inline s64 ktime_to_ns(const ktime_t kt)
|
|||
* @cmp1: comparable1
|
||||
* @cmp2: comparable2
|
||||
*
|
||||
* Compare two ktime_t variables, returns 1 if equal
|
||||
* Compare two ktime_t variables.
|
||||
*
|
||||
* Return: 1 if equal.
|
||||
*/
|
||||
static inline int ktime_equal(const ktime_t cmp1, const ktime_t cmp2)
|
||||
{
|
||||
|
@ -288,7 +290,7 @@ static inline int ktime_equal(const ktime_t cmp1, const ktime_t cmp2)
|
|||
* @cmp1: comparable1
|
||||
* @cmp2: comparable2
|
||||
*
|
||||
* Returns ...
|
||||
* Return: ...
|
||||
* cmp1 < cmp2: return <0
|
||||
* cmp1 == cmp2: return 0
|
||||
* cmp1 > cmp2: return >0
|
||||
|
@ -342,7 +344,7 @@ extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs);
|
|||
* @kt: the ktime_t variable to convert
|
||||
* @ts: the timespec variable to store the result in
|
||||
*
|
||||
* Returns true if there was a successful conversion, false if kt was 0.
|
||||
* Return: %true if there was a successful conversion, %false if kt was 0.
|
||||
*/
|
||||
static inline __must_check bool ktime_to_timespec_cond(const ktime_t kt,
|
||||
struct timespec *ts)
|
||||
|
|
|
@ -541,6 +541,8 @@ static int worker_pool_assign_id(struct worker_pool *pool)
|
|||
* This must be called either with pwq_lock held or sched RCU read locked.
|
||||
* If the pwq needs to be used beyond the locking in effect, the caller is
|
||||
* responsible for guaranteeing that the pwq stays online.
|
||||
*
|
||||
* Return: The unbound pool_workqueue for @node.
|
||||
*/
|
||||
static struct pool_workqueue *unbound_pwq_by_node(struct workqueue_struct *wq,
|
||||
int node)
|
||||
|
@ -639,8 +641,6 @@ static struct pool_workqueue *get_work_pwq(struct work_struct *work)
|
|||
* get_work_pool - return the worker_pool a given work was associated with
|
||||
* @work: the work item of interest
|
||||
*
|
||||
* Return the worker_pool @work was last associated with. %NULL if none.
|
||||
*
|
||||
* Pools are created and destroyed under wq_pool_mutex, and allows read
|
||||
* access under sched-RCU read lock. As such, this function should be
|
||||
* called under wq_pool_mutex or with preemption disabled.
|
||||
|
@ -649,6 +649,8 @@ static struct pool_workqueue *get_work_pwq(struct work_struct *work)
|
|||
* mentioned locking is in effect. If the returned pool needs to be used
|
||||
* beyond the critical section, the caller is responsible for ensuring the
|
||||
* returned pool is and stays online.
|
||||
*
|
||||
* Return: The worker_pool @work was last associated with. %NULL if none.
|
||||
*/
|
||||
static struct worker_pool *get_work_pool(struct work_struct *work)
|
||||
{
|
||||
|
@ -672,7 +674,7 @@ static struct worker_pool *get_work_pool(struct work_struct *work)
|
|||
* get_work_pool_id - return the worker pool ID a given work is associated with
|
||||
* @work: the work item of interest
|
||||
*
|
||||
* Return the worker_pool ID @work was last associated with.
|
||||
* Return: The worker_pool ID @work was last associated with.
|
||||
* %WORK_OFFQ_POOL_NONE if none.
|
||||
*/
|
||||
static int get_work_pool_id(struct work_struct *work)
|
||||
|
@ -831,7 +833,7 @@ void wq_worker_waking_up(struct task_struct *task, int cpu)
|
|||
* CONTEXT:
|
||||
* spin_lock_irq(rq->lock)
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* Worker task on @cpu to wake up, %NULL if none.
|
||||
*/
|
||||
struct task_struct *wq_worker_sleeping(struct task_struct *task, int cpu)
|
||||
|
@ -966,8 +968,8 @@ static inline void worker_clr_flags(struct worker *worker, unsigned int flags)
|
|||
* CONTEXT:
|
||||
* spin_lock_irq(pool->lock).
|
||||
*
|
||||
* RETURNS:
|
||||
* Pointer to worker which is executing @work if found, NULL
|
||||
* Return:
|
||||
* Pointer to worker which is executing @work if found, %NULL
|
||||
* otherwise.
|
||||
*/
|
||||
static struct worker *find_worker_executing_work(struct worker_pool *pool,
|
||||
|
@ -1155,14 +1157,16 @@ static void pwq_dec_nr_in_flight(struct pool_workqueue *pwq, int color)
|
|||
* @flags: place to store irq state
|
||||
*
|
||||
* Try to grab PENDING bit of @work. This function can handle @work in any
|
||||
* stable state - idle, on timer or on worklist. Return values are
|
||||
* stable state - idle, on timer or on worklist.
|
||||
*
|
||||
* Return:
|
||||
* 1 if @work was pending and we successfully stole PENDING
|
||||
* 0 if @work was idle and we claimed PENDING
|
||||
* -EAGAIN if PENDING couldn't be grabbed at the moment, safe to busy-retry
|
||||
* -ENOENT if someone else is canceling @work, this state may persist
|
||||
* for arbitrarily long
|
||||
*
|
||||
* Note:
|
||||
* On >= 0 return, the caller owns @work's PENDING bit. To avoid getting
|
||||
* interrupted while holding PENDING and @work off queue, irq must be
|
||||
* disabled on entry. This, combined with delayed_work->timer being
|
||||
|
@ -1404,10 +1408,10 @@ static void __queue_work(int cpu, struct workqueue_struct *wq,
|
|||
* @wq: workqueue to use
|
||||
* @work: work to queue
|
||||
*
|
||||
* Returns %false if @work was already on a queue, %true otherwise.
|
||||
*
|
||||
* We queue the work to a specific CPU, the caller must ensure it
|
||||
* can't go away.
|
||||
*
|
||||
* Return: %false if @work was already on a queue, %true otherwise.
|
||||
*/
|
||||
bool queue_work_on(int cpu, struct workqueue_struct *wq,
|
||||
struct work_struct *work)
|
||||
|
@ -1477,7 +1481,7 @@ static void __queue_delayed_work(int cpu, struct workqueue_struct *wq,
|
|||
* @dwork: work to queue
|
||||
* @delay: number of jiffies to wait before queueing
|
||||
*
|
||||
* Returns %false if @work was already on a queue, %true otherwise. If
|
||||
* Return: %false if @work was already on a queue, %true otherwise. If
|
||||
* @delay is zero and @dwork is idle, it will be scheduled for immediate
|
||||
* execution.
|
||||
*/
|
||||
|
@ -1513,7 +1517,7 @@ EXPORT_SYMBOL(queue_delayed_work_on);
|
|||
* zero, @work is guaranteed to be scheduled immediately regardless of its
|
||||
* current state.
|
||||
*
|
||||
* Returns %false if @dwork was idle and queued, %true if @dwork was
|
||||
* Return: %false if @dwork was idle and queued, %true if @dwork was
|
||||
* pending and its timer was modified.
|
||||
*
|
||||
* This function is safe to call from any context including IRQ handler.
|
||||
|
@ -1628,7 +1632,7 @@ static void worker_leave_idle(struct worker *worker)
|
|||
* Might sleep. Called without any lock but returns with pool->lock
|
||||
* held.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if the associated pool is online (@worker is successfully
|
||||
* bound), %false if offline.
|
||||
*/
|
||||
|
@ -1689,7 +1693,7 @@ static struct worker *alloc_worker(void)
|
|||
* CONTEXT:
|
||||
* Might sleep. Does GFP_KERNEL allocations.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* Pointer to the newly created worker.
|
||||
*/
|
||||
static struct worker *create_worker(struct worker_pool *pool)
|
||||
|
@ -1789,6 +1793,8 @@ static void start_worker(struct worker *worker)
|
|||
* @pool: the target pool
|
||||
*
|
||||
* Grab the managership of @pool and create and start a new worker for it.
|
||||
*
|
||||
* Return: 0 on success. A negative error code otherwise.
|
||||
*/
|
||||
static int create_and_start_worker(struct worker_pool *pool)
|
||||
{
|
||||
|
@ -1933,7 +1939,7 @@ static void pool_mayday_timeout(unsigned long __pool)
|
|||
* multiple times. Does GFP_KERNEL allocations. Called only from
|
||||
* manager.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %false if no action was taken and pool->lock stayed locked, %true
|
||||
* otherwise.
|
||||
*/
|
||||
|
@ -1990,7 +1996,7 @@ __acquires(&pool->lock)
|
|||
* spin_lock_irq(pool->lock) which may be released and regrabbed
|
||||
* multiple times. Called only from manager.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %false if no action was taken and pool->lock stayed locked, %true
|
||||
* otherwise.
|
||||
*/
|
||||
|
@ -2033,7 +2039,7 @@ static bool maybe_destroy_workers(struct worker_pool *pool)
|
|||
* spin_lock_irq(pool->lock) which may be released and regrabbed
|
||||
* multiple times. Does GFP_KERNEL allocations.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %false if the pool don't need management and the caller can safely start
|
||||
* processing works, %true indicates that the function released pool->lock
|
||||
* and reacquired it to perform some management function and that the
|
||||
|
@ -2259,6 +2265,8 @@ static void process_scheduled_works(struct worker *worker)
|
|||
* work items regardless of their specific target workqueue. The only
|
||||
* exception is work items which belong to workqueues with a rescuer which
|
||||
* will be explained in rescuer_thread().
|
||||
*
|
||||
* Return: 0
|
||||
*/
|
||||
static int worker_thread(void *__worker)
|
||||
{
|
||||
|
@ -2357,6 +2365,8 @@ static int worker_thread(void *__worker)
|
|||
* those works so that forward progress can be guaranteed.
|
||||
*
|
||||
* This should happen rarely.
|
||||
*
|
||||
* Return: 0
|
||||
*/
|
||||
static int rescuer_thread(void *__rescuer)
|
||||
{
|
||||
|
@ -2529,7 +2539,7 @@ static void insert_wq_barrier(struct pool_workqueue *pwq,
|
|||
* CONTEXT:
|
||||
* mutex_lock(wq->mutex).
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if @flush_color >= 0 and there's something to flush. %false
|
||||
* otherwise.
|
||||
*/
|
||||
|
@ -2850,7 +2860,7 @@ static bool __flush_work(struct work_struct *work)
|
|||
* Wait until @work has finished execution. @work is guaranteed to be idle
|
||||
* on return if it hasn't been requeued since flush started.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if flush_work() waited for the work to finish execution,
|
||||
* %false if it was already idle.
|
||||
*/
|
||||
|
@ -2902,7 +2912,7 @@ static bool __cancel_work_timer(struct work_struct *work, bool is_dwork)
|
|||
* The caller must ensure that the workqueue on which @work was last
|
||||
* queued can't be destroyed before this function returns.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if @work was pending, %false otherwise.
|
||||
*/
|
||||
bool cancel_work_sync(struct work_struct *work)
|
||||
|
@ -2919,7 +2929,7 @@ EXPORT_SYMBOL_GPL(cancel_work_sync);
|
|||
* immediate execution. Like flush_work(), this function only
|
||||
* considers the last queueing instance of @dwork.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if flush_work() waited for the work to finish execution,
|
||||
* %false if it was already idle.
|
||||
*/
|
||||
|
@ -2937,11 +2947,15 @@ EXPORT_SYMBOL(flush_delayed_work);
|
|||
* cancel_delayed_work - cancel a delayed work
|
||||
* @dwork: delayed_work to cancel
|
||||
*
|
||||
* Kill off a pending delayed_work. Returns %true if @dwork was pending
|
||||
* and canceled; %false if wasn't pending. Note that the work callback
|
||||
* function may still be running on return, unless it returns %true and the
|
||||
* work doesn't re-arm itself. Explicitly flush or use
|
||||
* cancel_delayed_work_sync() to wait on it.
|
||||
* Kill off a pending delayed_work.
|
||||
*
|
||||
* Return: %true if @dwork was pending and canceled; %false if it wasn't
|
||||
* pending.
|
||||
*
|
||||
* Note:
|
||||
* The work callback function may still be running on return, unless
|
||||
* it returns %true and the work doesn't re-arm itself. Explicitly flush or
|
||||
* use cancel_delayed_work_sync() to wait on it.
|
||||
*
|
||||
* This function is safe to call from any context including IRQ handler.
|
||||
*/
|
||||
|
@ -2970,7 +2984,7 @@ EXPORT_SYMBOL(cancel_delayed_work);
|
|||
*
|
||||
* This is cancel_work_sync() for delayed works.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if @dwork was pending, %false otherwise.
|
||||
*/
|
||||
bool cancel_delayed_work_sync(struct delayed_work *dwork)
|
||||
|
@ -2987,7 +3001,7 @@ EXPORT_SYMBOL(cancel_delayed_work_sync);
|
|||
* system workqueue and blocks until all CPUs have completed.
|
||||
* schedule_on_each_cpu() is very slow.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* 0 on success, -errno on failure.
|
||||
*/
|
||||
int schedule_on_each_cpu(work_func_t func)
|
||||
|
@ -3055,7 +3069,7 @@ EXPORT_SYMBOL(flush_scheduled_work);
|
|||
* Executes the function immediately if process context is available,
|
||||
* otherwise schedules the function for delayed execution.
|
||||
*
|
||||
* Returns: 0 - function was executed
|
||||
* Return: 0 - function was executed
|
||||
* 1 - function was scheduled for execution
|
||||
*/
|
||||
int execute_in_process_context(work_func_t fn, struct execute_work *ew)
|
||||
|
@ -3315,7 +3329,7 @@ static void wq_device_release(struct device *dev)
|
|||
* apply_workqueue_attrs() may race against userland updating the
|
||||
* attributes.
|
||||
*
|
||||
* Returns 0 on success, -errno on failure.
|
||||
* Return: 0 on success, -errno on failure.
|
||||
*/
|
||||
int workqueue_sysfs_register(struct workqueue_struct *wq)
|
||||
{
|
||||
|
@ -3408,7 +3422,9 @@ void free_workqueue_attrs(struct workqueue_attrs *attrs)
|
|||
* @gfp_mask: allocation mask to use
|
||||
*
|
||||
* Allocate a new workqueue_attrs, initialize with default settings and
|
||||
* return it. Returns NULL on failure.
|
||||
* return it.
|
||||
*
|
||||
* Return: The allocated new workqueue_attr on success. %NULL on failure.
|
||||
*/
|
||||
struct workqueue_attrs *alloc_workqueue_attrs(gfp_t gfp_mask)
|
||||
{
|
||||
|
@ -3467,7 +3483,8 @@ static bool wqattrs_equal(const struct workqueue_attrs *a,
|
|||
* @pool: worker_pool to initialize
|
||||
*
|
||||
* Initiailize a newly zalloc'd @pool. It also allocates @pool->attrs.
|
||||
* Returns 0 on success, -errno on failure. Even on failure, all fields
|
||||
*
|
||||
* Return: 0 on success, -errno on failure. Even on failure, all fields
|
||||
* inside @pool proper are initialized and put_unbound_pool() can be called
|
||||
* on @pool safely to release it.
|
||||
*/
|
||||
|
@ -3574,9 +3591,12 @@ static void put_unbound_pool(struct worker_pool *pool)
|
|||
* Obtain a worker_pool which has the same attributes as @attrs, bump the
|
||||
* reference count and return it. If there already is a matching
|
||||
* worker_pool, it will be used; otherwise, this function attempts to
|
||||
* create a new one. On failure, returns NULL.
|
||||
* create a new one.
|
||||
*
|
||||
* Should be called with wq_pool_mutex held.
|
||||
*
|
||||
* Return: On success, a worker_pool with the same attributes as @attrs.
|
||||
* On failure, %NULL.
|
||||
*/
|
||||
static struct worker_pool *get_unbound_pool(const struct workqueue_attrs *attrs)
|
||||
{
|
||||
|
@ -3812,9 +3832,7 @@ static void free_unbound_pwq(struct pool_workqueue *pwq)
|
|||
*
|
||||
* Calculate the cpumask a workqueue with @attrs should use on @node. If
|
||||
* @cpu_going_down is >= 0, that cpu is considered offline during
|
||||
* calculation. The result is stored in @cpumask. This function returns
|
||||
* %true if the resulting @cpumask is different from @attrs->cpumask,
|
||||
* %false if equal.
|
||||
* calculation. The result is stored in @cpumask.
|
||||
*
|
||||
* If NUMA affinity is not enabled, @attrs->cpumask is always used. If
|
||||
* enabled and @node has online CPUs requested by @attrs, the returned
|
||||
|
@ -3823,6 +3841,9 @@ static void free_unbound_pwq(struct pool_workqueue *pwq)
|
|||
*
|
||||
* The caller is responsible for ensuring that the cpumask of @node stays
|
||||
* stable.
|
||||
*
|
||||
* Return: %true if the resulting @cpumask is different from @attrs->cpumask,
|
||||
* %false if equal.
|
||||
*/
|
||||
static bool wq_calc_node_cpumask(const struct workqueue_attrs *attrs, int node,
|
||||
int cpu_going_down, cpumask_t *cpumask)
|
||||
|
@ -3876,8 +3897,9 @@ static struct pool_workqueue *numa_pwq_tbl_install(struct workqueue_struct *wq,
|
|||
* items finish. Note that a work item which repeatedly requeues itself
|
||||
* back-to-back will stay on its current pwq.
|
||||
*
|
||||
* Performs GFP_KERNEL allocations. Returns 0 on success and -errno on
|
||||
* failure.
|
||||
* Performs GFP_KERNEL allocations.
|
||||
*
|
||||
* Return: 0 on success and -errno on failure.
|
||||
*/
|
||||
int apply_workqueue_attrs(struct workqueue_struct *wq,
|
||||
const struct workqueue_attrs *attrs)
|
||||
|
@ -4345,6 +4367,8 @@ EXPORT_SYMBOL_GPL(workqueue_set_max_active);
|
|||
*
|
||||
* Determine whether %current is a workqueue rescuer. Can be used from
|
||||
* work functions to determine whether it's being run off the rescuer task.
|
||||
*
|
||||
* Return: %true if %current is a workqueue rescuer. %false otherwise.
|
||||
*/
|
||||
bool current_is_workqueue_rescuer(void)
|
||||
{
|
||||
|
@ -4368,7 +4392,7 @@ bool current_is_workqueue_rescuer(void)
|
|||
* workqueue being congested on one CPU doesn't mean the workqueue is also
|
||||
* contested on other CPUs / NUMA nodes.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if congested, %false otherwise.
|
||||
*/
|
||||
bool workqueue_congested(int cpu, struct workqueue_struct *wq)
|
||||
|
@ -4401,7 +4425,7 @@ EXPORT_SYMBOL_GPL(workqueue_congested);
|
|||
* synchronization around this function and the test result is
|
||||
* unreliable and only useful as advisory hints or for debugging.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* OR'd bitmask of WORK_BUSY_* bits.
|
||||
*/
|
||||
unsigned int work_busy(struct work_struct *work)
|
||||
|
@ -4779,9 +4803,10 @@ static void work_for_cpu_fn(struct work_struct *work)
|
|||
* @fn: the function to run
|
||||
* @arg: the function arg
|
||||
*
|
||||
* This will return the value @fn returns.
|
||||
* It is up to the caller to ensure that the cpu doesn't go offline.
|
||||
* The caller must not hold any locks which would prevent @fn from completing.
|
||||
*
|
||||
* Return: The value @fn returns.
|
||||
*/
|
||||
long work_on_cpu(int cpu, long (*fn)(void *), void *arg)
|
||||
{
|
||||
|
@ -4853,7 +4878,7 @@ void freeze_workqueues_begin(void)
|
|||
* CONTEXT:
|
||||
* Grabs and releases wq_pool_mutex.
|
||||
*
|
||||
* RETURNS:
|
||||
* Return:
|
||||
* %true if some freezable workqueues are still busy. %false if freezing
|
||||
* is complete.
|
||||
*/
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue