You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'ioat' into fixes
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
*.elf
|
*.elf
|
||||||
*.bin
|
*.bin
|
||||||
*.gz
|
*.gz
|
||||||
|
*.bz2
|
||||||
*.lzma
|
*.lzma
|
||||||
*.patch
|
*.patch
|
||||||
*.gcno
|
*.gcno
|
||||||
|
|||||||
@@ -312,10 +312,8 @@ and to the following documentation:
|
|||||||
8. Mailing list
|
8. Mailing list
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
There are several frame buffer device related mailing lists at SourceForge:
|
There is a frame buffer device related mailing list at kernel.org:
|
||||||
- linux-fbdev-announce@lists.sourceforge.net, for announcements,
|
linux-fbdev@vger.kernel.org.
|
||||||
- linux-fbdev-user@lists.sourceforge.net, for generic user support,
|
|
||||||
- linux-fbdev-devel@lists.sourceforge.net, for project developers.
|
|
||||||
|
|
||||||
Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for
|
Point your web browser to http://sourceforge.net/projects/linux-fbdev/ for
|
||||||
subscription information and archive browsing.
|
subscription information and archive browsing.
|
||||||
|
|||||||
@@ -235,6 +235,7 @@ proc files.
|
|||||||
neg=N Number of negative lookups made
|
neg=N Number of negative lookups made
|
||||||
pos=N Number of positive lookups made
|
pos=N Number of positive lookups made
|
||||||
crt=N Number of objects created by lookup
|
crt=N Number of objects created by lookup
|
||||||
|
tmo=N Number of lookups timed out and requeued
|
||||||
Updates n=N Number of update cookie requests seen
|
Updates n=N Number of update cookie requests seen
|
||||||
nul=N Number of upd reqs given a NULL parent
|
nul=N Number of upd reqs given a NULL parent
|
||||||
run=N Number of upd reqs granted CPU time
|
run=N Number of upd reqs granted CPU time
|
||||||
@@ -250,8 +251,10 @@ proc files.
|
|||||||
ok=N Number of successful alloc reqs
|
ok=N Number of successful alloc reqs
|
||||||
wt=N Number of alloc reqs that waited on lookup completion
|
wt=N Number of alloc reqs that waited on lookup completion
|
||||||
nbf=N Number of alloc reqs rejected -ENOBUFS
|
nbf=N Number of alloc reqs rejected -ENOBUFS
|
||||||
|
int=N Number of alloc reqs aborted -ERESTARTSYS
|
||||||
ops=N Number of alloc reqs submitted
|
ops=N Number of alloc reqs submitted
|
||||||
owt=N Number of alloc reqs waited for CPU time
|
owt=N Number of alloc reqs waited for CPU time
|
||||||
|
abt=N Number of alloc reqs aborted due to object death
|
||||||
Retrvls n=N Number of retrieval (read) requests seen
|
Retrvls n=N Number of retrieval (read) requests seen
|
||||||
ok=N Number of successful retr reqs
|
ok=N Number of successful retr reqs
|
||||||
wt=N Number of retr reqs that waited on lookup completion
|
wt=N Number of retr reqs that waited on lookup completion
|
||||||
@@ -261,6 +264,7 @@ proc files.
|
|||||||
oom=N Number of retr reqs failed -ENOMEM
|
oom=N Number of retr reqs failed -ENOMEM
|
||||||
ops=N Number of retr reqs submitted
|
ops=N Number of retr reqs submitted
|
||||||
owt=N Number of retr reqs waited for CPU time
|
owt=N Number of retr reqs waited for CPU time
|
||||||
|
abt=N Number of retr reqs aborted due to object death
|
||||||
Stores n=N Number of storage (write) requests seen
|
Stores n=N Number of storage (write) requests seen
|
||||||
ok=N Number of successful store reqs
|
ok=N Number of successful store reqs
|
||||||
agn=N Number of store reqs on a page already pending storage
|
agn=N Number of store reqs on a page already pending storage
|
||||||
@@ -268,12 +272,37 @@ proc files.
|
|||||||
oom=N Number of store reqs failed -ENOMEM
|
oom=N Number of store reqs failed -ENOMEM
|
||||||
ops=N Number of store reqs submitted
|
ops=N Number of store reqs submitted
|
||||||
run=N Number of store reqs granted CPU time
|
run=N Number of store reqs granted CPU time
|
||||||
|
pgs=N Number of pages given store req processing time
|
||||||
|
rxd=N Number of store reqs deleted from tracking tree
|
||||||
|
olm=N Number of store reqs over store limit
|
||||||
|
VmScan nos=N Number of release reqs against pages with no pending store
|
||||||
|
gon=N Number of release reqs against pages stored by time lock granted
|
||||||
|
bsy=N Number of release reqs ignored due to in-progress store
|
||||||
|
can=N Number of page stores cancelled due to release req
|
||||||
Ops pend=N Number of times async ops added to pending queues
|
Ops pend=N Number of times async ops added to pending queues
|
||||||
run=N Number of times async ops given CPU time
|
run=N Number of times async ops given CPU time
|
||||||
enq=N Number of times async ops queued for processing
|
enq=N Number of times async ops queued for processing
|
||||||
|
can=N Number of async ops cancelled
|
||||||
|
rej=N Number of async ops rejected due to object lookup/create failure
|
||||||
dfr=N Number of async ops queued for deferred release
|
dfr=N Number of async ops queued for deferred release
|
||||||
rel=N Number of async ops released
|
rel=N Number of async ops released
|
||||||
gc=N Number of deferred-release async ops garbage collected
|
gc=N Number of deferred-release async ops garbage collected
|
||||||
|
CacheOp alo=N Number of in-progress alloc_object() cache ops
|
||||||
|
luo=N Number of in-progress lookup_object() cache ops
|
||||||
|
luc=N Number of in-progress lookup_complete() cache ops
|
||||||
|
gro=N Number of in-progress grab_object() cache ops
|
||||||
|
upo=N Number of in-progress update_object() cache ops
|
||||||
|
dro=N Number of in-progress drop_object() cache ops
|
||||||
|
pto=N Number of in-progress put_object() cache ops
|
||||||
|
syn=N Number of in-progress sync_cache() cache ops
|
||||||
|
atc=N Number of in-progress attr_changed() cache ops
|
||||||
|
rap=N Number of in-progress read_or_alloc_page() cache ops
|
||||||
|
ras=N Number of in-progress read_or_alloc_pages() cache ops
|
||||||
|
alp=N Number of in-progress allocate_page() cache ops
|
||||||
|
als=N Number of in-progress allocate_pages() cache ops
|
||||||
|
wrp=N Number of in-progress write_page() cache ops
|
||||||
|
ucp=N Number of in-progress uncache_page() cache ops
|
||||||
|
dsp=N Number of in-progress dissociate_pages() cache ops
|
||||||
|
|
||||||
|
|
||||||
(*) /proc/fs/fscache/histogram
|
(*) /proc/fs/fscache/histogram
|
||||||
@@ -299,6 +328,87 @@ proc files.
|
|||||||
jiffy range covered, and the SECS field the equivalent number of seconds.
|
jiffy range covered, and the SECS field the equivalent number of seconds.
|
||||||
|
|
||||||
|
|
||||||
|
===========
|
||||||
|
OBJECT LIST
|
||||||
|
===========
|
||||||
|
|
||||||
|
If CONFIG_FSCACHE_OBJECT_LIST is enabled, the FS-Cache facility will maintain a
|
||||||
|
list of all the objects currently allocated and allow them to be viewed
|
||||||
|
through:
|
||||||
|
|
||||||
|
/proc/fs/fscache/objects
|
||||||
|
|
||||||
|
This will look something like:
|
||||||
|
|
||||||
|
[root@andromeda ~]# head /proc/fs/fscache/objects
|
||||||
|
OBJECT PARENT STAT CHLDN OPS OOP IPR EX READS EM EV F S | NETFS_COOKIE_DEF TY FL NETFS_DATA OBJECT_KEY, AUX_DATA
|
||||||
|
======== ======== ==== ===== === === === == ===== == == = = | ================ == == ================ ================
|
||||||
|
17e4b 2 ACTV 0 0 0 0 0 0 7b 4 0 8 | NFS.fh DT 0 ffff88001dd82820 010006017edcf8bbc93b43298fdfbe71e50b57b13a172c0117f38472, e567634700000000000000000000000063f2404a000000000000000000000000c9030000000000000000000063f2404a
|
||||||
|
1693a 2 ACTV 0 0 0 0 0 0 7b 4 0 8 | NFS.fh DT 0 ffff88002db23380 010006017edcf8bbc93b43298fdfbe71e50b57b1e0162c01a2df0ea6, 420ebc4a000000000000000000000000420ebc4a0000000000000000000000000e1801000000000000000000420ebc4a
|
||||||
|
|
||||||
|
where the first set of columns before the '|' describe the object:
|
||||||
|
|
||||||
|
COLUMN DESCRIPTION
|
||||||
|
======= ===============================================================
|
||||||
|
OBJECT Object debugging ID (appears as OBJ%x in some debug messages)
|
||||||
|
PARENT Debugging ID of parent object
|
||||||
|
STAT Object state
|
||||||
|
CHLDN Number of child objects of this object
|
||||||
|
OPS Number of outstanding operations on this object
|
||||||
|
OOP Number of outstanding child object management operations
|
||||||
|
IPR
|
||||||
|
EX Number of outstanding exclusive operations
|
||||||
|
READS Number of outstanding read operations
|
||||||
|
EM Object's event mask
|
||||||
|
EV Events raised on this object
|
||||||
|
F Object flags
|
||||||
|
S Object slow-work work item flags
|
||||||
|
|
||||||
|
and the second set of columns describe the object's cookie, if present:
|
||||||
|
|
||||||
|
COLUMN DESCRIPTION
|
||||||
|
=============== =======================================================
|
||||||
|
NETFS_COOKIE_DEF Name of netfs cookie definition
|
||||||
|
TY Cookie type (IX - index, DT - data, hex - special)
|
||||||
|
FL Cookie flags
|
||||||
|
NETFS_DATA Netfs private data stored in the cookie
|
||||||
|
OBJECT_KEY Object key } 1 column, with separating comma
|
||||||
|
AUX_DATA Object aux data } presence may be configured
|
||||||
|
|
||||||
|
The data shown may be filtered by attaching the a key to an appropriate keyring
|
||||||
|
before viewing the file. Something like:
|
||||||
|
|
||||||
|
keyctl add user fscache:objlist <restrictions> @s
|
||||||
|
|
||||||
|
where <restrictions> are a selection of the following letters:
|
||||||
|
|
||||||
|
K Show hexdump of object key (don't show if not given)
|
||||||
|
A Show hexdump of object aux data (don't show if not given)
|
||||||
|
|
||||||
|
and the following paired letters:
|
||||||
|
|
||||||
|
C Show objects that have a cookie
|
||||||
|
c Show objects that don't have a cookie
|
||||||
|
B Show objects that are busy
|
||||||
|
b Show objects that aren't busy
|
||||||
|
W Show objects that have pending writes
|
||||||
|
w Show objects that don't have pending writes
|
||||||
|
R Show objects that have outstanding reads
|
||||||
|
r Show objects that don't have outstanding reads
|
||||||
|
S Show objects that have slow work queued
|
||||||
|
s Show objects that don't have slow work queued
|
||||||
|
|
||||||
|
If neither side of a letter pair is given, then both are implied. For example:
|
||||||
|
|
||||||
|
keyctl add user fscache:objlist KB @s
|
||||||
|
|
||||||
|
shows objects that are busy, and lists their object keys, but does not dump
|
||||||
|
their auxiliary data. It also implies "CcWwRrSs", but as 'B' is given, 'b' is
|
||||||
|
not implied.
|
||||||
|
|
||||||
|
By default all objects and all fields will be shown.
|
||||||
|
|
||||||
|
|
||||||
=========
|
=========
|
||||||
DEBUGGING
|
DEBUGGING
|
||||||
=========
|
=========
|
||||||
|
|||||||
@@ -641,7 +641,7 @@ data file must be retired (see the relinquish cookie function below).
|
|||||||
|
|
||||||
Furthermore, note that this does not cancel the asynchronous read or write
|
Furthermore, note that this does not cancel the asynchronous read or write
|
||||||
operation started by the read/alloc and write functions, so the page
|
operation started by the read/alloc and write functions, so the page
|
||||||
invalidation and release functions must use:
|
invalidation functions must use:
|
||||||
|
|
||||||
bool fscache_check_page_write(struct fscache_cookie *cookie,
|
bool fscache_check_page_write(struct fscache_cookie *cookie,
|
||||||
struct page *page);
|
struct page *page);
|
||||||
@@ -654,6 +654,25 @@ to see if a page is being written to the cache, and:
|
|||||||
to wait for it to finish if it is.
|
to wait for it to finish if it is.
|
||||||
|
|
||||||
|
|
||||||
|
When releasepage() is being implemented, a special FS-Cache function exists to
|
||||||
|
manage the heuristics of coping with vmscan trying to eject pages, which may
|
||||||
|
conflict with the cache trying to write pages to the cache (which may itself
|
||||||
|
need to allocate memory):
|
||||||
|
|
||||||
|
bool fscache_maybe_release_page(struct fscache_cookie *cookie,
|
||||||
|
struct page *page,
|
||||||
|
gfp_t gfp);
|
||||||
|
|
||||||
|
This takes the netfs cookie, and the page and gfp arguments as supplied to
|
||||||
|
releasepage(). It will return false if the page cannot be released yet for
|
||||||
|
some reason and if it returns true, the page has been uncached and can now be
|
||||||
|
released.
|
||||||
|
|
||||||
|
To make a page available for release, this function may wait for an outstanding
|
||||||
|
storage request to complete, or it may attempt to cancel the storage request -
|
||||||
|
in which case the page will not be stored in the cache this time.
|
||||||
|
|
||||||
|
|
||||||
==========================
|
==========================
|
||||||
INDEX AND DATA FILE UPDATE
|
INDEX AND DATA FILE UPDATE
|
||||||
==========================
|
==========================
|
||||||
|
|||||||
@@ -20,15 +20,16 @@ Lots of code taken from ext3 and other projects.
|
|||||||
Authors in alphabetical order:
|
Authors in alphabetical order:
|
||||||
Joel Becker <joel.becker@oracle.com>
|
Joel Becker <joel.becker@oracle.com>
|
||||||
Zach Brown <zach.brown@oracle.com>
|
Zach Brown <zach.brown@oracle.com>
|
||||||
Mark Fasheh <mark.fasheh@oracle.com>
|
Mark Fasheh <mfasheh@suse.com>
|
||||||
Kurt Hackel <kurt.hackel@oracle.com>
|
Kurt Hackel <kurt.hackel@oracle.com>
|
||||||
|
Tao Ma <tao.ma@oracle.com>
|
||||||
Sunil Mushran <sunil.mushran@oracle.com>
|
Sunil Mushran <sunil.mushran@oracle.com>
|
||||||
Manish Singh <manish.singh@oracle.com>
|
Manish Singh <manish.singh@oracle.com>
|
||||||
|
Tiger Yang <tiger.yang@oracle.com>
|
||||||
|
|
||||||
Caveats
|
Caveats
|
||||||
=======
|
=======
|
||||||
Features which OCFS2 does not support yet:
|
Features which OCFS2 does not support yet:
|
||||||
- quotas
|
|
||||||
- Directory change notification (F_NOTIFY)
|
- Directory change notification (F_NOTIFY)
|
||||||
- Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
|
- Distributed Caching (F_SETLEASE/F_GETLEASE/break_lease)
|
||||||
|
|
||||||
@@ -70,7 +71,6 @@ commit=nrsec (*) Ocfs2 can be told to sync all its data and metadata
|
|||||||
performance.
|
performance.
|
||||||
localalloc=8(*) Allows custom localalloc size in MB. If the value is too
|
localalloc=8(*) Allows custom localalloc size in MB. If the value is too
|
||||||
large, the fs will silently revert it to the default.
|
large, the fs will silently revert it to the default.
|
||||||
Localalloc is not enabled for local mounts.
|
|
||||||
localflocks This disables cluster aware flock.
|
localflocks This disables cluster aware flock.
|
||||||
inode64 Indicates that Ocfs2 is allowed to create inodes at
|
inode64 Indicates that Ocfs2 is allowed to create inodes at
|
||||||
any location in the filesystem, including those which
|
any location in the filesystem, including those which
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ Supported adapters:
|
|||||||
Datasheet: Only available via NDA from ServerWorks
|
Datasheet: Only available via NDA from ServerWorks
|
||||||
* ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges
|
* ATI IXP200, IXP300, IXP400, SB600, SB700 and SB800 southbridges
|
||||||
Datasheet: Not publicly available
|
Datasheet: Not publicly available
|
||||||
* AMD SB900
|
* AMD Hudson-2
|
||||||
Datasheet: Not publicly available
|
Datasheet: Not publicly available
|
||||||
* Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge
|
* Standard Microsystems (SMSC) SLC90E66 (Victory66) southbridge
|
||||||
Datasheet: Publicly available at the SMSC website http://www.smsc.com
|
Datasheet: Publicly available at the SMSC website http://www.smsc.com
|
||||||
|
|||||||
+154
-6
@@ -41,6 +41,13 @@ expand files, provided the time taken to do so isn't too long.
|
|||||||
Operations of both types may sleep during execution, thus tying up the thread
|
Operations of both types may sleep during execution, thus tying up the thread
|
||||||
loaned to it.
|
loaned to it.
|
||||||
|
|
||||||
|
A further class of work item is available, based on the slow work item class:
|
||||||
|
|
||||||
|
(*) Delayed slow work items.
|
||||||
|
|
||||||
|
These are slow work items that have a timer to defer queueing of the item for
|
||||||
|
a while.
|
||||||
|
|
||||||
|
|
||||||
THREAD-TO-CLASS ALLOCATION
|
THREAD-TO-CLASS ALLOCATION
|
||||||
--------------------------
|
--------------------------
|
||||||
@@ -64,9 +71,11 @@ USING SLOW WORK ITEMS
|
|||||||
Firstly, a module or subsystem wanting to make use of slow work items must
|
Firstly, a module or subsystem wanting to make use of slow work items must
|
||||||
register its interest:
|
register its interest:
|
||||||
|
|
||||||
int ret = slow_work_register_user();
|
int ret = slow_work_register_user(struct module *module);
|
||||||
|
|
||||||
This will return 0 if successful, or a -ve error upon failure.
|
This will return 0 if successful, or a -ve error upon failure. The module
|
||||||
|
pointer should be the module interested in using this facility (almost
|
||||||
|
certainly THIS_MODULE).
|
||||||
|
|
||||||
|
|
||||||
Slow work items may then be set up by:
|
Slow work items may then be set up by:
|
||||||
@@ -91,6 +100,10 @@ Slow work items may then be set up by:
|
|||||||
|
|
||||||
slow_work_init(&myitem, &myitem_ops);
|
slow_work_init(&myitem, &myitem_ops);
|
||||||
|
|
||||||
|
or:
|
||||||
|
|
||||||
|
delayed_slow_work_init(&myitem, &myitem_ops);
|
||||||
|
|
||||||
or:
|
or:
|
||||||
|
|
||||||
vslow_work_init(&myitem, &myitem_ops);
|
vslow_work_init(&myitem, &myitem_ops);
|
||||||
@@ -102,15 +115,92 @@ A suitably set up work item can then be enqueued for processing:
|
|||||||
int ret = slow_work_enqueue(&myitem);
|
int ret = slow_work_enqueue(&myitem);
|
||||||
|
|
||||||
This will return a -ve error if the thread pool is unable to gain a reference
|
This will return a -ve error if the thread pool is unable to gain a reference
|
||||||
on the item, 0 otherwise.
|
on the item, 0 otherwise, or (for delayed work):
|
||||||
|
|
||||||
|
int ret = delayed_slow_work_enqueue(&myitem, my_jiffy_delay);
|
||||||
|
|
||||||
|
|
||||||
The items are reference counted, so there ought to be no need for a flush
|
The items are reference counted, so there ought to be no need for a flush
|
||||||
operation. When all a module's slow work items have been processed, and the
|
operation. But as the reference counting is optional, means to cancel
|
||||||
|
existing work items are also included:
|
||||||
|
|
||||||
|
cancel_slow_work(&myitem);
|
||||||
|
cancel_delayed_slow_work(&myitem);
|
||||||
|
|
||||||
|
can be used to cancel pending work. The above cancel function waits for
|
||||||
|
existing work to have been executed (or prevent execution of them, depending
|
||||||
|
on timing).
|
||||||
|
|
||||||
|
|
||||||
|
When all a module's slow work items have been processed, and the
|
||||||
module has no further interest in the facility, it should unregister its
|
module has no further interest in the facility, it should unregister its
|
||||||
interest:
|
interest:
|
||||||
|
|
||||||
slow_work_unregister_user();
|
slow_work_unregister_user(struct module *module);
|
||||||
|
|
||||||
|
The module pointer is used to wait for all outstanding work items for that
|
||||||
|
module before completing the unregistration. This prevents the put_ref() code
|
||||||
|
from being taken away before it completes. module should almost certainly be
|
||||||
|
THIS_MODULE.
|
||||||
|
|
||||||
|
|
||||||
|
================
|
||||||
|
HELPER FUNCTIONS
|
||||||
|
================
|
||||||
|
|
||||||
|
The slow-work facility provides a function by which it can be determined
|
||||||
|
whether or not an item is queued for later execution:
|
||||||
|
|
||||||
|
bool queued = slow_work_is_queued(struct slow_work *work);
|
||||||
|
|
||||||
|
If it returns false, then the item is not on the queue (it may be executing
|
||||||
|
with a requeue pending). This can be used to work out whether an item on which
|
||||||
|
another depends is on the queue, thus allowing a dependent item to be queued
|
||||||
|
after it.
|
||||||
|
|
||||||
|
If the above shows an item on which another depends not to be queued, then the
|
||||||
|
owner of the dependent item might need to wait. However, to avoid locking up
|
||||||
|
the threads unnecessarily be sleeping in them, it can make sense under some
|
||||||
|
circumstances to return the work item to the queue, thus deferring it until
|
||||||
|
some other items have had a chance to make use of the yielded thread.
|
||||||
|
|
||||||
|
To yield a thread and defer an item, the work function should simply enqueue
|
||||||
|
the work item again and return. However, this doesn't work if there's nothing
|
||||||
|
actually on the queue, as the thread just vacated will jump straight back into
|
||||||
|
the item's work function, thus busy waiting on a CPU.
|
||||||
|
|
||||||
|
Instead, the item should use the thread to wait for the dependency to go away,
|
||||||
|
but rather than using schedule() or schedule_timeout() to sleep, it should use
|
||||||
|
the following function:
|
||||||
|
|
||||||
|
bool requeue = slow_work_sleep_till_thread_needed(
|
||||||
|
struct slow_work *work,
|
||||||
|
signed long *_timeout);
|
||||||
|
|
||||||
|
This will add a second wait and then sleep, such that it will be woken up if
|
||||||
|
either something appears on the queue that could usefully make use of the
|
||||||
|
thread - and behind which this item can be queued, or if the event the caller
|
||||||
|
set up to wait for happens. True will be returned if something else appeared
|
||||||
|
on the queue and this work function should perhaps return, of false if
|
||||||
|
something else woke it up. The timeout is as for schedule_timeout().
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
wq = bit_waitqueue(&my_flags, MY_BIT);
|
||||||
|
init_wait(&wait);
|
||||||
|
requeue = false;
|
||||||
|
do {
|
||||||
|
prepare_to_wait(wq, &wait, TASK_UNINTERRUPTIBLE);
|
||||||
|
if (!test_bit(MY_BIT, &my_flags))
|
||||||
|
break;
|
||||||
|
requeue = slow_work_sleep_till_thread_needed(&my_work,
|
||||||
|
&timeout);
|
||||||
|
} while (timeout > 0 && !requeue);
|
||||||
|
finish_wait(wq, &wait);
|
||||||
|
if (!test_bit(MY_BIT, &my_flags)
|
||||||
|
goto do_my_thing;
|
||||||
|
if (requeue)
|
||||||
|
return; // to slow_work
|
||||||
|
|
||||||
|
|
||||||
===============
|
===============
|
||||||
@@ -118,7 +208,8 @@ ITEM OPERATIONS
|
|||||||
===============
|
===============
|
||||||
|
|
||||||
Each work item requires a table of operations of type struct slow_work_ops.
|
Each work item requires a table of operations of type struct slow_work_ops.
|
||||||
All members are required:
|
Only ->execute() is required; the getting and putting of a reference and the
|
||||||
|
describing of an item are all optional.
|
||||||
|
|
||||||
(*) Get a reference on an item:
|
(*) Get a reference on an item:
|
||||||
|
|
||||||
@@ -148,6 +239,16 @@ All members are required:
|
|||||||
This should perform the work required of the item. It may sleep, it may
|
This should perform the work required of the item. It may sleep, it may
|
||||||
perform disk I/O and it may wait for locks.
|
perform disk I/O and it may wait for locks.
|
||||||
|
|
||||||
|
(*) View an item through /proc:
|
||||||
|
|
||||||
|
void (*desc)(struct slow_work *work, struct seq_file *m);
|
||||||
|
|
||||||
|
If supplied, this should print to 'm' a small string describing the work
|
||||||
|
the item is to do. This should be no more than about 40 characters, and
|
||||||
|
shouldn't include a newline character.
|
||||||
|
|
||||||
|
See the 'Viewing executing and queued items' section below.
|
||||||
|
|
||||||
|
|
||||||
==================
|
==================
|
||||||
POOL CONFIGURATION
|
POOL CONFIGURATION
|
||||||
@@ -172,3 +273,50 @@ The slow-work thread pool has a number of configurables:
|
|||||||
is bounded to between 1 and one fewer than the number of active threads.
|
is bounded to between 1 and one fewer than the number of active threads.
|
||||||
This ensures there is always at least one thread that can process very
|
This ensures there is always at least one thread that can process very
|
||||||
slow work items, and always at least one thread that won't.
|
slow work items, and always at least one thread that won't.
|
||||||
|
|
||||||
|
|
||||||
|
==================================
|
||||||
|
VIEWING EXECUTING AND QUEUED ITEMS
|
||||||
|
==================================
|
||||||
|
|
||||||
|
If CONFIG_SLOW_WORK_DEBUG is enabled, a debugfs file is made available:
|
||||||
|
|
||||||
|
/sys/kernel/debug/slow_work/runqueue
|
||||||
|
|
||||||
|
through which the list of work items being executed and the queues of items to
|
||||||
|
be executed may be viewed. The owner of a work item is given the chance to
|
||||||
|
add some information of its own.
|
||||||
|
|
||||||
|
The contents look something like the following:
|
||||||
|
|
||||||
|
THR PID ITEM ADDR FL MARK DESC
|
||||||
|
=== ===== ================ == ===== ==========
|
||||||
|
0 3005 ffff880023f52348 a 952ms FSC: OBJ17d3: LOOK
|
||||||
|
1 3006 ffff880024e33668 2 160ms FSC: OBJ17e5 OP60d3b: Write1/Store fl=2
|
||||||
|
2 3165 ffff8800296dd180 a 424ms FSC: OBJ17e4: LOOK
|
||||||
|
3 4089 ffff8800262c8d78 a 212ms FSC: OBJ17ea: CRTN
|
||||||
|
4 4090 ffff88002792bed8 2 388ms FSC: OBJ17e8 OP60d36: Write1/Store fl=2
|
||||||
|
5 4092 ffff88002a0ef308 2 388ms FSC: OBJ17e7 OP60d2e: Write1/Store fl=2
|
||||||
|
6 4094 ffff88002abaf4b8 2 132ms FSC: OBJ17e2 OP60d4e: Write1/Store fl=2
|
||||||
|
7 4095 ffff88002bb188e0 a 388ms FSC: OBJ17e9: CRTN
|
||||||
|
vsq - ffff880023d99668 1 308ms FSC: OBJ17e0 OP60f91: Write1/EnQ fl=2
|
||||||
|
vsq - ffff8800295d1740 1 212ms FSC: OBJ16be OP4d4b6: Write1/EnQ fl=2
|
||||||
|
vsq - ffff880025ba3308 1 160ms FSC: OBJ179a OP58dec: Write1/EnQ fl=2
|
||||||
|
vsq - ffff880024ec83e0 1 160ms FSC: OBJ17ae OP599f2: Write1/EnQ fl=2
|
||||||
|
vsq - ffff880026618e00 1 160ms FSC: OBJ17e6 OP60d33: Write1/EnQ fl=2
|
||||||
|
vsq - ffff880025a2a4b8 1 132ms FSC: OBJ16a2 OP4d583: Write1/EnQ fl=2
|
||||||
|
vsq - ffff880023cbe6d8 9 212ms FSC: OBJ17eb: LOOK
|
||||||
|
vsq - ffff880024d37590 9 212ms FSC: OBJ17ec: LOOK
|
||||||
|
vsq - ffff880027746cb0 9 212ms FSC: OBJ17ed: LOOK
|
||||||
|
vsq - ffff880024d37ae8 9 212ms FSC: OBJ17ee: LOOK
|
||||||
|
vsq - ffff880024d37cb0 9 212ms FSC: OBJ17ef: LOOK
|
||||||
|
vsq - ffff880025036550 9 212ms FSC: OBJ17f0: LOOK
|
||||||
|
vsq - ffff8800250368e0 9 212ms FSC: OBJ17f1: LOOK
|
||||||
|
vsq - ffff880025036aa8 9 212ms FSC: OBJ17f2: LOOK
|
||||||
|
|
||||||
|
In the 'THR' column, executing items show the thread they're occupying and
|
||||||
|
queued threads indicate which queue they're on. 'PID' shows the process ID of
|
||||||
|
a slow-work thread that's executing something. 'FL' shows the work item flags.
|
||||||
|
'MARK' indicates how long since an item was queued or began executing. Lastly,
|
||||||
|
the 'DESC' column permits the owner of an item to give some information.
|
||||||
|
|
||||||
|
|||||||
+188
-175
@@ -1,5 +1,5 @@
|
|||||||
Generic Thermal Sysfs driver How To
|
Generic Thermal Sysfs driver How To
|
||||||
=========================
|
===================================
|
||||||
|
|
||||||
Written by Sujith Thomas <sujith.thomas@intel.com>, Zhang Rui <rui.zhang@intel.com>
|
Written by Sujith Thomas <sujith.thomas@intel.com>, Zhang Rui <rui.zhang@intel.com>
|
||||||
|
|
||||||
@@ -10,20 +10,20 @@ Copyright (c) 2008 Intel Corporation
|
|||||||
|
|
||||||
0. Introduction
|
0. Introduction
|
||||||
|
|
||||||
The generic thermal sysfs provides a set of interfaces for thermal zone devices (sensors)
|
The generic thermal sysfs provides a set of interfaces for thermal zone
|
||||||
and thermal cooling devices (fan, processor...) to register with the thermal management
|
devices (sensors) and thermal cooling devices (fan, processor...) to register
|
||||||
solution and to be a part of it.
|
with the thermal management solution and to be a part of it.
|
||||||
|
|
||||||
This how-to focuses on enabling new thermal zone and cooling devices to participate
|
This how-to focuses on enabling new thermal zone and cooling devices to
|
||||||
in thermal management.
|
participate in thermal management.
|
||||||
This solution is platform independent and any type of thermal zone devices and
|
This solution is platform independent and any type of thermal zone devices
|
||||||
cooling devices should be able to make use of the infrastructure.
|
and cooling devices should be able to make use of the infrastructure.
|
||||||
|
|
||||||
The main task of the thermal sysfs driver is to expose thermal zone attributes as well
|
The main task of the thermal sysfs driver is to expose thermal zone attributes
|
||||||
as cooling device attributes to the user space.
|
as well as cooling device attributes to the user space.
|
||||||
An intelligent thermal management application can make decisions based on inputs
|
An intelligent thermal management application can make decisions based on
|
||||||
from thermal zone attributes (the current temperature and trip point temperature)
|
inputs from thermal zone attributes (the current temperature and trip point
|
||||||
and throttle appropriate devices.
|
temperature) and throttle appropriate devices.
|
||||||
|
|
||||||
[0-*] denotes any positive number starting from 0
|
[0-*] denotes any positive number starting from 0
|
||||||
[1-*] denotes any positive number starting from 1
|
[1-*] denotes any positive number starting from 1
|
||||||
@@ -31,77 +31,77 @@ and throttle appropriate devices.
|
|||||||
1. thermal sysfs driver interface functions
|
1. thermal sysfs driver interface functions
|
||||||
|
|
||||||
1.1 thermal zone device interface
|
1.1 thermal zone device interface
|
||||||
1.1.1 struct thermal_zone_device *thermal_zone_device_register(char *name, int trips,
|
1.1.1 struct thermal_zone_device *thermal_zone_device_register(char *name,
|
||||||
void *devdata, struct thermal_zone_device_ops *ops)
|
int trips, void *devdata, struct thermal_zone_device_ops *ops)
|
||||||
|
|
||||||
This interface function adds a new thermal zone device (sensor) to
|
This interface function adds a new thermal zone device (sensor) to
|
||||||
/sys/class/thermal folder as thermal_zone[0-*].
|
/sys/class/thermal folder as thermal_zone[0-*]. It tries to bind all the
|
||||||
It tries to bind all the thermal cooling devices registered at the same time.
|
thermal cooling devices registered at the same time.
|
||||||
|
|
||||||
name: the thermal zone name.
|
name: the thermal zone name.
|
||||||
trips: the total number of trip points this thermal zone supports.
|
trips: the total number of trip points this thermal zone supports.
|
||||||
devdata: device private data
|
devdata: device private data
|
||||||
ops: thermal zone device call-backs.
|
ops: thermal zone device call-backs.
|
||||||
.bind: bind the thermal zone device with a thermal cooling device.
|
.bind: bind the thermal zone device with a thermal cooling device.
|
||||||
.unbind: unbind the thermal zone device with a thermal cooling device.
|
.unbind: unbind the thermal zone device with a thermal cooling device.
|
||||||
.get_temp: get the current temperature of the thermal zone.
|
.get_temp: get the current temperature of the thermal zone.
|
||||||
.get_mode: get the current mode (user/kernel) of the thermal zone.
|
.get_mode: get the current mode (user/kernel) of the thermal zone.
|
||||||
"kernel" means thermal management is done in kernel.
|
- "kernel" means thermal management is done in kernel.
|
||||||
"user" will prevent kernel thermal driver actions upon trip points
|
- "user" will prevent kernel thermal driver actions upon trip points
|
||||||
so that user applications can take charge of thermal management.
|
so that user applications can take charge of thermal management.
|
||||||
.set_mode: set the mode (user/kernel) of the thermal zone.
|
.set_mode: set the mode (user/kernel) of the thermal zone.
|
||||||
.get_trip_type: get the type of certain trip point.
|
.get_trip_type: get the type of certain trip point.
|
||||||
.get_trip_temp: get the temperature above which the certain trip point
|
.get_trip_temp: get the temperature above which the certain trip point
|
||||||
will be fired.
|
will be fired.
|
||||||
|
|
||||||
1.1.2 void thermal_zone_device_unregister(struct thermal_zone_device *tz)
|
1.1.2 void thermal_zone_device_unregister(struct thermal_zone_device *tz)
|
||||||
|
|
||||||
This interface function removes the thermal zone device.
|
This interface function removes the thermal zone device.
|
||||||
It deletes the corresponding entry form /sys/class/thermal folder and unbind all
|
It deletes the corresponding entry form /sys/class/thermal folder and
|
||||||
the thermal cooling devices it uses.
|
unbind all the thermal cooling devices it uses.
|
||||||
|
|
||||||
1.2 thermal cooling device interface
|
1.2 thermal cooling device interface
|
||||||
1.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name,
|
1.2.1 struct thermal_cooling_device *thermal_cooling_device_register(char *name,
|
||||||
void *devdata, struct thermal_cooling_device_ops *)
|
void *devdata, struct thermal_cooling_device_ops *)
|
||||||
|
|
||||||
This interface function adds a new thermal cooling device (fan/processor/...) to
|
This interface function adds a new thermal cooling device (fan/processor/...)
|
||||||
/sys/class/thermal/ folder as cooling_device[0-*].
|
to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
|
||||||
It tries to bind itself to all the thermal zone devices register at the same time.
|
to all the thermal zone devices register at the same time.
|
||||||
name: the cooling device name.
|
name: the cooling device name.
|
||||||
devdata: device private data.
|
devdata: device private data.
|
||||||
ops: thermal cooling devices call-backs.
|
ops: thermal cooling devices call-backs.
|
||||||
.get_max_state: get the Maximum throttle state of the cooling device.
|
.get_max_state: get the Maximum throttle state of the cooling device.
|
||||||
.get_cur_state: get the Current throttle state of the cooling device.
|
.get_cur_state: get the Current throttle state of the cooling device.
|
||||||
.set_cur_state: set the Current throttle state of the cooling device.
|
.set_cur_state: set the Current throttle state of the cooling device.
|
||||||
|
|
||||||
1.2.2 void thermal_cooling_device_unregister(struct thermal_cooling_device *cdev)
|
1.2.2 void thermal_cooling_device_unregister(struct thermal_cooling_device *cdev)
|
||||||
|
|
||||||
This interface function remove the thermal cooling device.
|
This interface function remove the thermal cooling device.
|
||||||
It deletes the corresponding entry form /sys/class/thermal folder and unbind
|
It deletes the corresponding entry form /sys/class/thermal folder and
|
||||||
itself from all the thermal zone devices using it.
|
unbind itself from all the thermal zone devices using it.
|
||||||
|
|
||||||
1.3 interface for binding a thermal zone device with a thermal cooling device
|
1.3 interface for binding a thermal zone device with a thermal cooling device
|
||||||
1.3.1 int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
|
1.3.1 int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
|
||||||
int trip, struct thermal_cooling_device *cdev);
|
int trip, struct thermal_cooling_device *cdev);
|
||||||
|
|
||||||
This interface function bind a thermal cooling device to the certain trip point
|
This interface function bind a thermal cooling device to the certain trip
|
||||||
of a thermal zone device.
|
point of a thermal zone device.
|
||||||
This function is usually called in the thermal zone device .bind callback.
|
This function is usually called in the thermal zone device .bind callback.
|
||||||
tz: the thermal zone device
|
tz: the thermal zone device
|
||||||
cdev: thermal cooling device
|
cdev: thermal cooling device
|
||||||
trip: indicates which trip point the cooling devices is associated with
|
trip: indicates which trip point the cooling devices is associated with
|
||||||
in this thermal zone.
|
in this thermal zone.
|
||||||
|
|
||||||
1.3.2 int thermal_zone_unbind_cooling_device(struct thermal_zone_device *tz,
|
1.3.2 int thermal_zone_unbind_cooling_device(struct thermal_zone_device *tz,
|
||||||
int trip, struct thermal_cooling_device *cdev);
|
int trip, struct thermal_cooling_device *cdev);
|
||||||
|
|
||||||
This interface function unbind a thermal cooling device from the certain trip point
|
This interface function unbind a thermal cooling device from the certain
|
||||||
of a thermal zone device.
|
trip point of a thermal zone device. This function is usually called in
|
||||||
This function is usually called in the thermal zone device .unbind callback.
|
the thermal zone device .unbind callback.
|
||||||
tz: the thermal zone device
|
tz: the thermal zone device
|
||||||
cdev: thermal cooling device
|
cdev: thermal cooling device
|
||||||
trip: indicates which trip point the cooling devices is associated with
|
trip: indicates which trip point the cooling devices is associated with
|
||||||
in this thermal zone.
|
in this thermal zone.
|
||||||
|
|
||||||
2. sysfs attributes structure
|
2. sysfs attributes structure
|
||||||
|
|
||||||
@@ -114,153 +114,166 @@ if hwmon is compiled in or built as a module.
|
|||||||
|
|
||||||
Thermal zone device sys I/F, created once it's registered:
|
Thermal zone device sys I/F, created once it's registered:
|
||||||
/sys/class/thermal/thermal_zone[0-*]:
|
/sys/class/thermal/thermal_zone[0-*]:
|
||||||
|-----type: Type of the thermal zone
|
|---type: Type of the thermal zone
|
||||||
|-----temp: Current temperature
|
|---temp: Current temperature
|
||||||
|-----mode: Working mode of the thermal zone
|
|---mode: Working mode of the thermal zone
|
||||||
|-----trip_point_[0-*]_temp: Trip point temperature
|
|---trip_point_[0-*]_temp: Trip point temperature
|
||||||
|-----trip_point_[0-*]_type: Trip point type
|
|---trip_point_[0-*]_type: Trip point type
|
||||||
|
|
||||||
Thermal cooling device sys I/F, created once it's registered:
|
Thermal cooling device sys I/F, created once it's registered:
|
||||||
/sys/class/thermal/cooling_device[0-*]:
|
/sys/class/thermal/cooling_device[0-*]:
|
||||||
|-----type : Type of the cooling device(processor/fan/...)
|
|---type: Type of the cooling device(processor/fan/...)
|
||||||
|-----max_state: Maximum cooling state of the cooling device
|
|---max_state: Maximum cooling state of the cooling device
|
||||||
|-----cur_state: Current cooling state of the cooling device
|
|---cur_state: Current cooling state of the cooling device
|
||||||
|
|
||||||
|
|
||||||
These two dynamic attributes are created/removed in pairs.
|
Then next two dynamic attributes are created/removed in pairs. They represent
|
||||||
They represent the relationship between a thermal zone and its associated cooling device.
|
the relationship between a thermal zone and its associated cooling device.
|
||||||
They are created/removed for each
|
They are created/removed for each successful execution of
|
||||||
thermal_zone_bind_cooling_device/thermal_zone_unbind_cooling_device successful execution.
|
thermal_zone_bind_cooling_device/thermal_zone_unbind_cooling_device.
|
||||||
|
|
||||||
/sys/class/thermal/thermal_zone[0-*]
|
/sys/class/thermal/thermal_zone[0-*]:
|
||||||
|-----cdev[0-*]: The [0-*]th cooling device in the current thermal zone
|
|---cdev[0-*]: [0-*]th cooling device in current thermal zone
|
||||||
|-----cdev[0-*]_trip_point: Trip point that cdev[0-*] is associated with
|
|---cdev[0-*]_trip_point: Trip point that cdev[0-*] is associated with
|
||||||
|
|
||||||
Besides the thermal zone device sysfs I/F and cooling device sysfs I/F,
|
Besides the thermal zone device sysfs I/F and cooling device sysfs I/F,
|
||||||
the generic thermal driver also creates a hwmon sysfs I/F for each _type_ of
|
the generic thermal driver also creates a hwmon sysfs I/F for each _type_
|
||||||
thermal zone device. E.g. the generic thermal driver registers one hwmon class device
|
of thermal zone device. E.g. the generic thermal driver registers one hwmon
|
||||||
and build the associated hwmon sysfs I/F for all the registered ACPI thermal zones.
|
class device and build the associated hwmon sysfs I/F for all the registered
|
||||||
|
ACPI thermal zones.
|
||||||
|
|
||||||
/sys/class/hwmon/hwmon[0-*]:
|
/sys/class/hwmon/hwmon[0-*]:
|
||||||
|-----name: The type of the thermal zone devices.
|
|---name: The type of the thermal zone devices
|
||||||
|-----temp[1-*]_input: The current temperature of thermal zone [1-*].
|
|---temp[1-*]_input: The current temperature of thermal zone [1-*]
|
||||||
|-----temp[1-*]_critical: The critical trip point of thermal zone [1-*].
|
|---temp[1-*]_critical: The critical trip point of thermal zone [1-*]
|
||||||
|
|
||||||
Please read Documentation/hwmon/sysfs-interface for additional information.
|
Please read Documentation/hwmon/sysfs-interface for additional information.
|
||||||
|
|
||||||
***************************
|
***************************
|
||||||
* Thermal zone attributes *
|
* Thermal zone attributes *
|
||||||
***************************
|
***************************
|
||||||
|
|
||||||
type Strings which represent the thermal zone type.
|
type
|
||||||
This is given by thermal zone driver as part of registration.
|
Strings which represent the thermal zone type.
|
||||||
Eg: "acpitz" indicates it's an ACPI thermal device.
|
This is given by thermal zone driver as part of registration.
|
||||||
In order to keep it consistent with hwmon sys attribute,
|
E.g: "acpitz" indicates it's an ACPI thermal device.
|
||||||
this should be a short, lowercase string,
|
In order to keep it consistent with hwmon sys attribute; this should
|
||||||
not containing spaces nor dashes.
|
be a short, lowercase string, not containing spaces nor dashes.
|
||||||
RO
|
RO, Required
|
||||||
Required
|
|
||||||
|
|
||||||
temp Current temperature as reported by thermal zone (sensor)
|
temp
|
||||||
Unit: millidegree Celsius
|
Current temperature as reported by thermal zone (sensor).
|
||||||
RO
|
Unit: millidegree Celsius
|
||||||
Required
|
RO, Required
|
||||||
|
|
||||||
mode One of the predefined values in [kernel, user]
|
mode
|
||||||
This file gives information about the algorithm
|
One of the predefined values in [kernel, user].
|
||||||
that is currently managing the thermal zone.
|
This file gives information about the algorithm that is currently
|
||||||
It can be either default kernel based algorithm
|
managing the thermal zone. It can be either default kernel based
|
||||||
or user space application.
|
algorithm or user space application.
|
||||||
RW
|
kernel = Thermal management in kernel thermal zone driver.
|
||||||
Optional
|
user = Preventing kernel thermal zone driver actions upon
|
||||||
kernel = Thermal management in kernel thermal zone driver.
|
trip points so that user application can take full
|
||||||
user = Preventing kernel thermal zone driver actions upon
|
charge of the thermal management.
|
||||||
trip points so that user application can take full
|
RW, Optional
|
||||||
charge of the thermal management.
|
|
||||||
|
|
||||||
trip_point_[0-*]_temp The temperature above which trip point will be fired
|
trip_point_[0-*]_temp
|
||||||
Unit: millidegree Celsius
|
The temperature above which trip point will be fired.
|
||||||
RO
|
Unit: millidegree Celsius
|
||||||
Optional
|
RO, Optional
|
||||||
|
|
||||||
trip_point_[0-*]_type Strings which indicate the type of the trip point
|
trip_point_[0-*]_type
|
||||||
E.g. it can be one of critical, hot, passive,
|
Strings which indicate the type of the trip point.
|
||||||
active[0-*] for ACPI thermal zone.
|
E.g. it can be one of critical, hot, passive, active[0-*] for ACPI
|
||||||
RO
|
thermal zone.
|
||||||
Optional
|
RO, Optional
|
||||||
|
|
||||||
cdev[0-*] Sysfs link to the thermal cooling device node where the sys I/F
|
cdev[0-*]
|
||||||
for cooling device throttling control represents.
|
Sysfs link to the thermal cooling device node where the sys I/F
|
||||||
RO
|
for cooling device throttling control represents.
|
||||||
Optional
|
RO, Optional
|
||||||
|
|
||||||
cdev[0-*]_trip_point The trip point with which cdev[0-*] is associated in this thermal zone
|
cdev[0-*]_trip_point
|
||||||
-1 means the cooling device is not associated with any trip point.
|
The trip point with which cdev[0-*] is associated in this thermal
|
||||||
RO
|
zone; -1 means the cooling device is not associated with any trip
|
||||||
Optional
|
point.
|
||||||
|
RO, Optional
|
||||||
|
|
||||||
******************************
|
passive
|
||||||
* Cooling device attributes *
|
Attribute is only present for zones in which the passive cooling
|
||||||
******************************
|
policy is not supported by native thermal driver. Default is zero
|
||||||
|
and can be set to a temperature (in millidegrees) to enable a
|
||||||
|
passive trip point for the zone. Activation is done by polling with
|
||||||
|
an interval of 1 second.
|
||||||
|
Unit: millidegrees Celsius
|
||||||
|
RW, Optional
|
||||||
|
|
||||||
type String which represents the type of device
|
*****************************
|
||||||
eg: For generic ACPI: this should be "Fan",
|
* Cooling device attributes *
|
||||||
"Processor" or "LCD"
|
*****************************
|
||||||
eg. For memory controller device on intel_menlow platform:
|
|
||||||
this should be "Memory controller"
|
|
||||||
RO
|
|
||||||
Required
|
|
||||||
|
|
||||||
max_state The maximum permissible cooling state of this cooling device.
|
type
|
||||||
RO
|
String which represents the type of device, e.g:
|
||||||
Required
|
- for generic ACPI: should be "Fan", "Processor" or "LCD"
|
||||||
|
- for memory controller device on intel_menlow platform:
|
||||||
|
should be "Memory controller".
|
||||||
|
RO, Required
|
||||||
|
|
||||||
cur_state The current cooling state of this cooling device.
|
max_state
|
||||||
the value can any integer numbers between 0 and max_state,
|
The maximum permissible cooling state of this cooling device.
|
||||||
cur_state == 0 means no cooling
|
RO, Required
|
||||||
cur_state == max_state means the maximum cooling.
|
|
||||||
RW
|
cur_state
|
||||||
Required
|
The current cooling state of this cooling device.
|
||||||
|
The value can any integer numbers between 0 and max_state:
|
||||||
|
- cur_state == 0 means no cooling
|
||||||
|
- cur_state == max_state means the maximum cooling.
|
||||||
|
RW, Required
|
||||||
|
|
||||||
3. A simple implementation
|
3. A simple implementation
|
||||||
|
|
||||||
ACPI thermal zone may support multiple trip points like critical/hot/passive/active.
|
ACPI thermal zone may support multiple trip points like critical, hot,
|
||||||
If an ACPI thermal zone supports critical, passive, active[0] and active[1] at the same time,
|
passive, active. If an ACPI thermal zone supports critical, passive,
|
||||||
it may register itself as a thermal_zone_device (thermal_zone1) with 4 trip points in all.
|
active[0] and active[1] at the same time, it may register itself as a
|
||||||
It has one processor and one fan, which are both registered as thermal_cooling_device.
|
thermal_zone_device (thermal_zone1) with 4 trip points in all.
|
||||||
If the processor is listed in _PSL method, and the fan is listed in _AL0 method,
|
It has one processor and one fan, which are both registered as
|
||||||
the sys I/F structure will be built like this:
|
thermal_cooling_device.
|
||||||
|
|
||||||
|
If the processor is listed in _PSL method, and the fan is listed in _AL0
|
||||||
|
method, the sys I/F structure will be built like this:
|
||||||
|
|
||||||
/sys/class/thermal:
|
/sys/class/thermal:
|
||||||
|
|
||||||
|thermal_zone1:
|
|thermal_zone1:
|
||||||
|-----type: acpitz
|
|---type: acpitz
|
||||||
|-----temp: 37000
|
|---temp: 37000
|
||||||
|-----mode: kernel
|
|---mode: kernel
|
||||||
|-----trip_point_0_temp: 100000
|
|---trip_point_0_temp: 100000
|
||||||
|-----trip_point_0_type: critical
|
|---trip_point_0_type: critical
|
||||||
|-----trip_point_1_temp: 80000
|
|---trip_point_1_temp: 80000
|
||||||
|-----trip_point_1_type: passive
|
|---trip_point_1_type: passive
|
||||||
|-----trip_point_2_temp: 70000
|
|---trip_point_2_temp: 70000
|
||||||
|-----trip_point_2_type: active0
|
|---trip_point_2_type: active0
|
||||||
|-----trip_point_3_temp: 60000
|
|---trip_point_3_temp: 60000
|
||||||
|-----trip_point_3_type: active1
|
|---trip_point_3_type: active1
|
||||||
|-----cdev0: --->/sys/class/thermal/cooling_device0
|
|---cdev0: --->/sys/class/thermal/cooling_device0
|
||||||
|-----cdev0_trip_point: 1 /* cdev0 can be used for passive */
|
|---cdev0_trip_point: 1 /* cdev0 can be used for passive */
|
||||||
|-----cdev1: --->/sys/class/thermal/cooling_device3
|
|---cdev1: --->/sys/class/thermal/cooling_device3
|
||||||
|-----cdev1_trip_point: 2 /* cdev1 can be used for active[0]*/
|
|---cdev1_trip_point: 2 /* cdev1 can be used for active[0]*/
|
||||||
|
|
||||||
|cooling_device0:
|
|cooling_device0:
|
||||||
|-----type: Processor
|
|---type: Processor
|
||||||
|-----max_state: 8
|
|---max_state: 8
|
||||||
|-----cur_state: 0
|
|---cur_state: 0
|
||||||
|
|
||||||
|cooling_device3:
|
|cooling_device3:
|
||||||
|-----type: Fan
|
|---type: Fan
|
||||||
|-----max_state: 2
|
|---max_state: 2
|
||||||
|-----cur_state: 0
|
|---cur_state: 0
|
||||||
|
|
||||||
/sys/class/hwmon:
|
/sys/class/hwmon:
|
||||||
|
|
||||||
|hwmon0:
|
|hwmon0:
|
||||||
|-----name: acpitz
|
|---name: acpitz
|
||||||
|-----temp1_input: 37000
|
|---temp1_input: 37000
|
||||||
|-----temp1_crit: 100000
|
|---temp1_crit: 100000
|
||||||
|
|||||||
@@ -218,7 +218,7 @@ static void fatal(const char *x, ...)
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int checked_open(const char *pathname, int flags)
|
static int checked_open(const char *pathname, int flags)
|
||||||
{
|
{
|
||||||
int fd = open(pathname, flags);
|
int fd = open(pathname, flags);
|
||||||
|
|
||||||
|
|||||||
+73
-44
@@ -182,7 +182,7 @@ M: Ron Minnich <rminnich@sandia.gov>
|
|||||||
M: Latchesar Ionkov <lucho@ionkov.net>
|
M: Latchesar Ionkov <lucho@ionkov.net>
|
||||||
L: v9fs-developer@lists.sourceforge.net
|
L: v9fs-developer@lists.sourceforge.net
|
||||||
W: http://swik.net/v9fs
|
W: http://swik.net/v9fs
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/ericvh/v9fs.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/filesystems/9p.txt
|
F: Documentation/filesystems/9p.txt
|
||||||
F: fs/9p/
|
F: fs/9p/
|
||||||
@@ -512,10 +512,32 @@ W: http://www.arm.linux.org.uk/
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/
|
F: arch/arm/
|
||||||
|
|
||||||
|
ARM PRIMECELL AACI PL041 DRIVER
|
||||||
|
M: Russell King <linux@arm.linux.org.uk>
|
||||||
|
S: Maintained
|
||||||
|
F: sound/arm/aaci.*
|
||||||
|
|
||||||
|
ARM PRIMECELL CLCD PL110 DRIVER
|
||||||
|
M: Russell King <linux@arm.linux.org.uk>
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/video/amba-clcd.*
|
||||||
|
|
||||||
|
ARM PRIMECELL KMI PL050 DRIVER
|
||||||
|
M: Russell King <linux@arm.linux.org.uk>
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/input/serio/ambakmi.*
|
||||||
|
F: include/linux/amba/kmi.h
|
||||||
|
|
||||||
ARM PRIMECELL MMCI PL180/1 DRIVER
|
ARM PRIMECELL MMCI PL180/1 DRIVER
|
||||||
S: Orphan
|
S: Orphan
|
||||||
F: drivers/mmc/host/mmci.*
|
F: drivers/mmc/host/mmci.*
|
||||||
|
|
||||||
|
ARM PRIMECELL BUS SUPPORT
|
||||||
|
M: Russell King <linux@arm.linux.org.uk>
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/amba/
|
||||||
|
F: include/linux/amba/bus.h
|
||||||
|
|
||||||
ARM/ADI ROADRUNNER MACHINE SUPPORT
|
ARM/ADI ROADRUNNER MACHINE SUPPORT
|
||||||
M: Lennert Buytenhek <kernel@wantstofly.org>
|
M: Lennert Buytenhek <kernel@wantstofly.org>
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
@@ -906,7 +928,6 @@ M: Karol Kozimor <sziwan@users.sourceforge.net>
|
|||||||
L: acpi4asus-user@lists.sourceforge.net
|
L: acpi4asus-user@lists.sourceforge.net
|
||||||
W: http://acpi4asus.sf.net
|
W: http://acpi4asus.sf.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/x86/kernel/acpi/boot.c
|
|
||||||
F: drivers/platform/x86/asus_acpi.c
|
F: drivers/platform/x86/asus_acpi.c
|
||||||
|
|
||||||
ASUS ASB100 HARDWARE MONITOR DRIVER
|
ASUS ASB100 HARDWARE MONITOR DRIVER
|
||||||
@@ -1028,7 +1049,7 @@ F: drivers/serial/atmel_serial.c
|
|||||||
|
|
||||||
ATMEL LCDFB DRIVER
|
ATMEL LCDFB DRIVER
|
||||||
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
M: Nicolas Ferre <nicolas.ferre@atmel.com>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/atmel_lcdfb.c
|
F: drivers/video/atmel_lcdfb.c
|
||||||
F: include/video/atmel_lcdc.h
|
F: include/video/atmel_lcdc.h
|
||||||
@@ -1245,11 +1266,10 @@ S: Supported
|
|||||||
F: drivers/net/tg3.*
|
F: drivers/net/tg3.*
|
||||||
|
|
||||||
BROCADE BFA FC SCSI DRIVER
|
BROCADE BFA FC SCSI DRIVER
|
||||||
P: Jing Huang
|
M: Jing Huang <huangj@brocade.com>
|
||||||
M: huangj@brocade.com
|
L: linux-scsi@vger.kernel.org
|
||||||
L: linux-scsi@vger.kernel.org
|
S: Supported
|
||||||
S: Supported
|
F: drivers/scsi/bfa/
|
||||||
F: drivers/scsi/bfa/
|
|
||||||
|
|
||||||
BSG (block layer generic sg v4 driver)
|
BSG (block layer generic sg v4 driver)
|
||||||
M: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
M: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
|
||||||
@@ -2115,7 +2135,7 @@ F: drivers/net/wan/dlci.c
|
|||||||
F: drivers/net/wan/sdla.c
|
F: drivers/net/wan/sdla.c
|
||||||
|
|
||||||
FRAMEBUFFER LAYER
|
FRAMEBUFFER LAYER
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
W: http://linux-fbdev.sourceforge.net/
|
W: http://linux-fbdev.sourceforge.net/
|
||||||
S: Orphan
|
S: Orphan
|
||||||
F: Documentation/fb/
|
F: Documentation/fb/
|
||||||
@@ -2138,7 +2158,7 @@ F: drivers/i2c/busses/i2c-cpm.c
|
|||||||
|
|
||||||
FREESCALE IMX / MXC FRAMEBUFFER DRIVER
|
FREESCALE IMX / MXC FRAMEBUFFER DRIVER
|
||||||
M: Sascha Hauer <kernel@pengutronix.de>
|
M: Sascha Hauer <kernel@pengutronix.de>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/plat-mxc/include/mach/imxfb.h
|
F: arch/arm/plat-mxc/include/mach/imxfb.h
|
||||||
@@ -2314,6 +2334,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/video/gspca/finepix.c
|
F: drivers/media/video/gspca/finepix.c
|
||||||
|
|
||||||
|
GSPCA GL860 SUBDRIVER
|
||||||
|
M: Olivier Lorin <o.lorin@laposte.net>
|
||||||
|
L: linux-media@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/media/video/gspca/gl860/
|
||||||
|
|
||||||
GSPCA M5602 SUBDRIVER
|
GSPCA M5602 SUBDRIVER
|
||||||
M: Erik Andren <erik.andren@gmail.com>
|
M: Erik Andren <erik.andren@gmail.com>
|
||||||
L: linux-media@vger.kernel.org
|
L: linux-media@vger.kernel.org
|
||||||
@@ -2535,8 +2562,7 @@ S: Maintained
|
|||||||
F: Documentation/i2c/
|
F: Documentation/i2c/
|
||||||
F: drivers/i2c/
|
F: drivers/i2c/
|
||||||
F: include/linux/i2c.h
|
F: include/linux/i2c.h
|
||||||
F: include/linux/i2c-dev.h
|
F: include/linux/i2c-*.h
|
||||||
F: include/linux/i2c-id.h
|
|
||||||
|
|
||||||
I2C-TINY-USB DRIVER
|
I2C-TINY-USB DRIVER
|
||||||
M: Till Harbaum <till@harbaum.org>
|
M: Till Harbaum <till@harbaum.org>
|
||||||
@@ -2637,7 +2663,7 @@ S: Supported
|
|||||||
F: security/integrity/ima/
|
F: security/integrity/ima/
|
||||||
|
|
||||||
IMS TWINTURBO FRAMEBUFFER DRIVER
|
IMS TWINTURBO FRAMEBUFFER DRIVER
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Orphan
|
S: Orphan
|
||||||
F: drivers/video/imsttfb.c
|
F: drivers/video/imsttfb.c
|
||||||
|
|
||||||
@@ -2672,14 +2698,14 @@ F: drivers/input/
|
|||||||
|
|
||||||
INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
|
INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
|
||||||
M: Sylvain Meyer <sylvain.meyer@worldonline.fr>
|
M: Sylvain Meyer <sylvain.meyer@worldonline.fr>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/fb/intelfb.txt
|
F: Documentation/fb/intelfb.txt
|
||||||
F: drivers/video/intelfb/
|
F: drivers/video/intelfb/
|
||||||
|
|
||||||
INTEL 810/815 FRAMEBUFFER DRIVER
|
INTEL 810/815 FRAMEBUFFER DRIVER
|
||||||
M: Antonino Daplas <adaplas@gmail.com>
|
M: Antonino Daplas <adaplas@gmail.com>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/i810/
|
F: drivers/video/i810/
|
||||||
|
|
||||||
@@ -2825,7 +2851,7 @@ F: drivers/infiniband/hw/ipath/
|
|||||||
|
|
||||||
IPMI SUBSYSTEM
|
IPMI SUBSYSTEM
|
||||||
M: Corey Minyard <minyard@acm.org>
|
M: Corey Minyard <minyard@acm.org>
|
||||||
L: openipmi-developer@lists.sourceforge.net
|
L: openipmi-developer@lists.sourceforge.net (moderated for non-subscribers)
|
||||||
W: http://openipmi.sourceforge.net/
|
W: http://openipmi.sourceforge.net/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/IPMI.txt
|
F: Documentation/IPMI.txt
|
||||||
@@ -2989,11 +3015,8 @@ S: Maintained
|
|||||||
F: fs/autofs4/
|
F: fs/autofs4/
|
||||||
|
|
||||||
KERNEL BUILD
|
KERNEL BUILD
|
||||||
M: Sam Ravnborg <sam@ravnborg.org>
|
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-next.git
|
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes.git
|
|
||||||
L: linux-kbuild@vger.kernel.org
|
L: linux-kbuild@vger.kernel.org
|
||||||
S: Maintained
|
S: Orphan
|
||||||
F: Documentation/kbuild/
|
F: Documentation/kbuild/
|
||||||
F: Makefile
|
F: Makefile
|
||||||
F: scripts/Makefile.*
|
F: scripts/Makefile.*
|
||||||
@@ -3086,9 +3109,13 @@ F: kernel/kgdb.c
|
|||||||
|
|
||||||
KMEMCHECK
|
KMEMCHECK
|
||||||
M: Vegard Nossum <vegardno@ifi.uio.no>
|
M: Vegard Nossum <vegardno@ifi.uio.no>
|
||||||
P Pekka Enberg
|
M: Pekka Enberg <penberg@cs.helsinki.fi>
|
||||||
M: penberg@cs.helsinki.fi
|
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
F: Documentation/kmemcheck.txt
|
||||||
|
F: arch/x86/include/asm/kmemcheck.h
|
||||||
|
F: arch/x86/mm/kmemcheck/
|
||||||
|
F: include/linux/kmemcheck.h
|
||||||
|
F: mm/kmemcheck.c
|
||||||
|
|
||||||
KMEMLEAK
|
KMEMLEAK
|
||||||
M: Catalin Marinas <catalin.marinas@arm.com>
|
M: Catalin Marinas <catalin.marinas@arm.com>
|
||||||
@@ -3389,7 +3416,7 @@ S: Supported
|
|||||||
|
|
||||||
MATROX FRAMEBUFFER DRIVER
|
MATROX FRAMEBUFFER DRIVER
|
||||||
M: Petr Vandrovec <vandrove@vc.cvut.cz>
|
M: Petr Vandrovec <vandrove@vc.cvut.cz>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/matrox/matroxfb_*
|
F: drivers/video/matrox/matroxfb_*
|
||||||
F: include/linux/matroxfb.h
|
F: include/linux/matroxfb.h
|
||||||
@@ -3618,7 +3645,7 @@ L: netfilter@vger.kernel.org
|
|||||||
L: coreteam@netfilter.org
|
L: coreteam@netfilter.org
|
||||||
W: http://www.netfilter.org/
|
W: http://www.netfilter.org/
|
||||||
W: http://www.iptables.org/
|
W: http://www.iptables.org/
|
||||||
T: git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/kaber/nf-2.6.git
|
||||||
S: Supported
|
S: Supported
|
||||||
F: include/linux/netfilter*
|
F: include/linux/netfilter*
|
||||||
F: include/linux/netfilter/
|
F: include/linux/netfilter/
|
||||||
@@ -3665,6 +3692,7 @@ L: netdev@vger.kernel.org
|
|||||||
W: http://www.linuxfoundation.org/en/Net
|
W: http://www.linuxfoundation.org/en/Net
|
||||||
W: http://patchwork.ozlabs.org/project/netdev/list/
|
W: http://patchwork.ozlabs.org/project/netdev/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.git
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: net/
|
F: net/
|
||||||
F: include/net/
|
F: include/net/
|
||||||
@@ -3775,7 +3803,7 @@ F: fs/ntfs/
|
|||||||
|
|
||||||
NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
|
NVIDIA (rivafb and nvidiafb) FRAMEBUFFER DRIVER
|
||||||
M: Antonino Daplas <adaplas@gmail.com>
|
M: Antonino Daplas <adaplas@gmail.com>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/riva/
|
F: drivers/video/riva/
|
||||||
F: drivers/video/nvidia/
|
F: drivers/video/nvidia/
|
||||||
@@ -3810,7 +3838,7 @@ F: sound/soc/omap/
|
|||||||
|
|
||||||
OMAP FRAMEBUFFER SUPPORT
|
OMAP FRAMEBUFFER SUPPORT
|
||||||
M: Imre Deak <imre.deak@nokia.com>
|
M: Imre Deak <imre.deak@nokia.com>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
L: linux-omap@vger.kernel.org
|
L: linux-omap@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/omap/
|
F: drivers/video/omap/
|
||||||
@@ -4316,19 +4344,21 @@ F: include/linux/qnxtypes.h
|
|||||||
|
|
||||||
RADEON FRAMEBUFFER DISPLAY DRIVER
|
RADEON FRAMEBUFFER DISPLAY DRIVER
|
||||||
M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/aty/radeon*
|
F: drivers/video/aty/radeon*
|
||||||
F: include/linux/radeonfb.h
|
F: include/linux/radeonfb.h
|
||||||
|
|
||||||
RAGE128 FRAMEBUFFER DISPLAY DRIVER
|
RAGE128 FRAMEBUFFER DISPLAY DRIVER
|
||||||
M: Paul Mackerras <paulus@samba.org>
|
M: Paul Mackerras <paulus@samba.org>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/aty/aty128fb.c
|
F: drivers/video/aty/aty128fb.c
|
||||||
|
|
||||||
RALINK RT2X00 WIRELESS LAN DRIVER
|
RALINK RT2X00 WIRELESS LAN DRIVER
|
||||||
P: rt2x00 project
|
P: rt2x00 project
|
||||||
|
M: Ivo van Doorn <IvDoorn@gmail.com>
|
||||||
|
M: Gertjan van Wingerde <gwingerde@gmail.com>
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
L: users@rt2x00.serialmonkey.com (moderated for non-subscribers)
|
L: users@rt2x00.serialmonkey.com (moderated for non-subscribers)
|
||||||
W: http://rt2x00.serialmonkey.com/
|
W: http://rt2x00.serialmonkey.com/
|
||||||
@@ -4416,7 +4446,7 @@ RFKILL
|
|||||||
M: Johannes Berg <johannes@sipsolutions.net>
|
M: Johannes Berg <johannes@sipsolutions.net>
|
||||||
L: linux-wireless@vger.kernel.org
|
L: linux-wireless@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F Documentation/rfkill.txt
|
F: Documentation/rfkill.txt
|
||||||
F: net/rfkill/
|
F: net/rfkill/
|
||||||
|
|
||||||
RISCOM8 DRIVER
|
RISCOM8 DRIVER
|
||||||
@@ -4460,7 +4490,7 @@ F: drivers/net/wireless/rtl818x/rtl8187*
|
|||||||
|
|
||||||
S3 SAVAGE FRAMEBUFFER DRIVER
|
S3 SAVAGE FRAMEBUFFER DRIVER
|
||||||
M: Antonino Daplas <adaplas@gmail.com>
|
M: Antonino Daplas <adaplas@gmail.com>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/savage/
|
F: drivers/video/savage/
|
||||||
|
|
||||||
@@ -4636,7 +4666,7 @@ F: drivers/mmc/host/sdhci-s3c.c
|
|||||||
SECURITY SUBSYSTEM
|
SECURITY SUBSYSTEM
|
||||||
M: James Morris <jmorris@namei.org>
|
M: James Morris <jmorris@namei.org>
|
||||||
L: linux-security-module@vger.kernel.org (suggested Cc:)
|
L: linux-security-module@vger.kernel.org (suggested Cc:)
|
||||||
T: git git://www.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
|
||||||
W: http://security.wiki.kernel.org/
|
W: http://security.wiki.kernel.org/
|
||||||
S: Supported
|
S: Supported
|
||||||
F: security/
|
F: security/
|
||||||
@@ -4672,12 +4702,11 @@ F: include/linux/ata.h
|
|||||||
F: include/linux/libata.h
|
F: include/linux/libata.h
|
||||||
|
|
||||||
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
|
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
|
||||||
P: Jayamohan Kallickal
|
M: Jayamohan Kallickal <jayamohank@serverengines.com>
|
||||||
M: jayamohank@serverengines.com
|
L: linux-scsi@vger.kernel.org
|
||||||
L: linux-scsi@vger.kernel.org
|
W: http://www.serverengines.com
|
||||||
W: http://www.serverengines.com
|
S: Supported
|
||||||
S: Supported
|
F: drivers/scsi/be2iscsi/
|
||||||
F: drivers/scsi/be2iscsi/
|
|
||||||
|
|
||||||
SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
|
SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
|
||||||
M: Sathya Perla <sathyap@serverengines.com>
|
M: Sathya Perla <sathyap@serverengines.com>
|
||||||
@@ -5624,7 +5653,7 @@ S: Maintained
|
|||||||
|
|
||||||
UVESAFB DRIVER
|
UVESAFB DRIVER
|
||||||
M: Michal Januszewski <spock@gentoo.org>
|
M: Michal Januszewski <spock@gentoo.org>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
W: http://dev.gentoo.org/~spock/projects/uvesafb/
|
W: http://dev.gentoo.org/~spock/projects/uvesafb/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/fb/uvesafb.txt
|
F: Documentation/fb/uvesafb.txt
|
||||||
@@ -5657,7 +5686,7 @@ F: drivers/mmc/host/via-sdmmc.c
|
|||||||
VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
|
VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
|
||||||
M: Joseph Chan <JosephChan@via.com.tw>
|
M: Joseph Chan <JosephChan@via.com.tw>
|
||||||
M: Scott Fang <ScottFang@viatech.com.cn>
|
M: Scott Fang <ScottFang@viatech.com.cn>
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/video/via/
|
F: drivers/video/via/
|
||||||
|
|
||||||
@@ -5683,11 +5712,11 @@ F: drivers/vlynq/vlynq.c
|
|||||||
F: include/linux/vlynq.h
|
F: include/linux/vlynq.h
|
||||||
|
|
||||||
VMWARE VMXNET3 ETHERNET DRIVER
|
VMWARE VMXNET3 ETHERNET DRIVER
|
||||||
M: Shreyas Bhatewara <sbhatewara@vmware.com>
|
M: Shreyas Bhatewara <sbhatewara@vmware.com>
|
||||||
M: VMware, Inc. <pv-drivers@vmware.com>
|
M: "VMware, Inc." <pv-drivers@vmware.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/vmxnet3/
|
F: drivers/net/vmxnet3/
|
||||||
|
|
||||||
VOLTAGE AND CURRENT REGULATOR FRAMEWORK
|
VOLTAGE AND CURRENT REGULATOR FRAMEWORK
|
||||||
M: Liam Girdwood <lrg@slimlogic.co.uk>
|
M: Liam Girdwood <lrg@slimlogic.co.uk>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 32
|
SUBLEVEL = 32
|
||||||
EXTRAVERSION = -rc6
|
EXTRAVERSION =
|
||||||
NAME = Man-Eating Seals of Antiquity
|
NAME = Man-Eating Seals of Antiquity
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@@ -221,7 +221,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
|
|||||||
|
|
||||||
HOSTCC = gcc
|
HOSTCC = gcc
|
||||||
HOSTCXX = g++
|
HOSTCXX = g++
|
||||||
HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
|
HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
|
||||||
HOSTCXXFLAGS = -O2
|
HOSTCXXFLAGS = -O2
|
||||||
|
|
||||||
# Decide whether to build built-in, modular, or both.
|
# Decide whether to build built-in, modular, or both.
|
||||||
|
|||||||
@@ -35,7 +35,7 @@
|
|||||||
const char * prog_name;
|
const char * prog_name;
|
||||||
|
|
||||||
|
|
||||||
void
|
static void
|
||||||
usage (void)
|
usage (void)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
|
|||||||
@@ -26,8 +26,6 @@
|
|||||||
#define F_GETOWN 6 /* for sockets. */
|
#define F_GETOWN 6 /* for sockets. */
|
||||||
#define F_SETSIG 10 /* for sockets. */
|
#define F_SETSIG 10 /* for sockets. */
|
||||||
#define F_GETSIG 11 /* for sockets. */
|
#define F_GETSIG 11 /* for sockets. */
|
||||||
#define F_SETOWN_EX 12
|
|
||||||
#define F_GETOWN_EX 13
|
|
||||||
|
|
||||||
/* for posix fcntl() and lockf() */
|
/* for posix fcntl() and lockf() */
|
||||||
#define F_RDLCK 1
|
#define F_RDLCK 1
|
||||||
|
|||||||
@@ -50,32 +50,35 @@ struct thread_info {
|
|||||||
register struct thread_info *__current_thread_info __asm__("$8");
|
register struct thread_info *__current_thread_info __asm__("$8");
|
||||||
#define current_thread_info() __current_thread_info
|
#define current_thread_info() __current_thread_info
|
||||||
|
|
||||||
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
/* Thread information allocation. */
|
/* Thread information allocation. */
|
||||||
#define THREAD_SIZE_ORDER 1
|
#define THREAD_SIZE_ORDER 1
|
||||||
#define THREAD_SIZE (2*PAGE_SIZE)
|
#define THREAD_SIZE (2*PAGE_SIZE)
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
|
||||||
|
|
||||||
#define PREEMPT_ACTIVE 0x40000000
|
#define PREEMPT_ACTIVE 0x40000000
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Thread information flags:
|
* Thread information flags:
|
||||||
* - these are process state flags and used from assembly
|
* - these are process state flags and used from assembly
|
||||||
* - pending work-to-be-done flags come first to fit in and immediate operand.
|
* - pending work-to-be-done flags come first and must be assigned to be
|
||||||
|
* within bits 0 to 7 to fit in and immediate operand.
|
||||||
|
* - ALPHA_UAC_SHIFT below must be kept consistent with the unaligned
|
||||||
|
* control flags.
|
||||||
*
|
*
|
||||||
* TIF_SYSCALL_TRACE is known to be 0 via blbs.
|
* TIF_SYSCALL_TRACE is known to be 0 via blbs.
|
||||||
*/
|
*/
|
||||||
#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
|
#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
|
||||||
#define TIF_SIGPENDING 1 /* signal pending */
|
#define TIF_NOTIFY_RESUME 1 /* callback before returning to user */
|
||||||
#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
|
#define TIF_SIGPENDING 2 /* signal pending */
|
||||||
#define TIF_POLLING_NRFLAG 3 /* poll_idle is polling NEED_RESCHED */
|
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */
|
||||||
#define TIF_DIE_IF_KERNEL 4 /* dik recursion lock */
|
#define TIF_POLLING_NRFLAG 8 /* poll_idle is polling NEED_RESCHED */
|
||||||
#define TIF_UAC_NOPRINT 5 /* see sysinfo.h */
|
#define TIF_DIE_IF_KERNEL 9 /* dik recursion lock */
|
||||||
#define TIF_UAC_NOFIX 6
|
#define TIF_UAC_NOPRINT 10 /* see sysinfo.h */
|
||||||
#define TIF_UAC_SIGBUS 7
|
#define TIF_UAC_NOFIX 11
|
||||||
#define TIF_MEMDIE 8
|
#define TIF_UAC_SIGBUS 12
|
||||||
#define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal */
|
#define TIF_MEMDIE 13
|
||||||
#define TIF_NOTIFY_RESUME 10 /* callback before returning to user */
|
#define TIF_RESTORE_SIGMASK 14 /* restore signal mask in do_signal */
|
||||||
#define TIF_FREEZE 16 /* is freezing for suspend */
|
#define TIF_FREEZE 16 /* is freezing for suspend */
|
||||||
|
|
||||||
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
||||||
@@ -94,7 +97,7 @@ register struct thread_info *__current_thread_info __asm__("$8");
|
|||||||
#define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \
|
#define _TIF_ALLWORK_MASK (_TIF_WORK_MASK \
|
||||||
| _TIF_SYSCALL_TRACE)
|
| _TIF_SYSCALL_TRACE)
|
||||||
|
|
||||||
#define ALPHA_UAC_SHIFT 6
|
#define ALPHA_UAC_SHIFT 10
|
||||||
#define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \
|
#define ALPHA_UAC_MASK (1 << TIF_UAC_NOPRINT | 1 << TIF_UAC_NOFIX | \
|
||||||
1 << TIF_UAC_SIGBUS)
|
1 << TIF_UAC_SIGBUS)
|
||||||
|
|
||||||
|
|||||||
@@ -1103,6 +1103,8 @@ marvel_agp_info(void)
|
|||||||
* Allocate the info structure.
|
* Allocate the info structure.
|
||||||
*/
|
*/
|
||||||
agp = kmalloc(sizeof(*agp), GFP_KERNEL);
|
agp = kmalloc(sizeof(*agp), GFP_KERNEL);
|
||||||
|
if (!agp)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill it in.
|
* Fill it in.
|
||||||
|
|||||||
@@ -757,6 +757,8 @@ titan_agp_info(void)
|
|||||||
* Allocate the info structure.
|
* Allocate the info structure.
|
||||||
*/
|
*/
|
||||||
agp = kmalloc(sizeof(*agp), GFP_KERNEL);
|
agp = kmalloc(sizeof(*agp), GFP_KERNEL);
|
||||||
|
if (!agp)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill it in.
|
* Fill it in.
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ show_interrupts(struct seq_file *p, void *v)
|
|||||||
for_each_online_cpu(j)
|
for_each_online_cpu(j)
|
||||||
seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j));
|
seq_printf(p, "%10u ", kstat_irqs_cpu(irq, j));
|
||||||
#endif
|
#endif
|
||||||
seq_printf(p, " %14s", irq_desc[irq].chip->typename);
|
seq_printf(p, " %14s", irq_desc[irq].chip->name);
|
||||||
seq_printf(p, " %c%s",
|
seq_printf(p, " %c%s",
|
||||||
(action->flags & IRQF_DISABLED)?'+':' ',
|
(action->flags & IRQF_DISABLED)?'+':' ',
|
||||||
action->name);
|
action->name);
|
||||||
|
|||||||
@@ -228,7 +228,7 @@ struct irqaction timer_irqaction = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static struct irq_chip rtc_irq_type = {
|
static struct irq_chip rtc_irq_type = {
|
||||||
.typename = "RTC",
|
.name = "RTC",
|
||||||
.startup = rtc_startup,
|
.startup = rtc_startup,
|
||||||
.shutdown = rtc_enable_disable,
|
.shutdown = rtc_enable_disable,
|
||||||
.enable = rtc_enable_disable,
|
.enable = rtc_enable_disable,
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ i8259a_end_irq(unsigned int irq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct irq_chip i8259a_irq_type = {
|
struct irq_chip i8259a_irq_type = {
|
||||||
.typename = "XT-PIC",
|
.name = "XT-PIC",
|
||||||
.startup = i8259a_startup_irq,
|
.startup = i8259a_startup_irq,
|
||||||
.shutdown = i8259a_disable_irq,
|
.shutdown = i8259a_disable_irq,
|
||||||
.enable = i8259a_enable_irq,
|
.enable = i8259a_enable_irq,
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ pyxis_mask_and_ack_irq(unsigned int irq)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct irq_chip pyxis_irq_type = {
|
static struct irq_chip pyxis_irq_type = {
|
||||||
.typename = "PYXIS",
|
.name = "PYXIS",
|
||||||
.startup = pyxis_startup_irq,
|
.startup = pyxis_startup_irq,
|
||||||
.shutdown = pyxis_disable_irq,
|
.shutdown = pyxis_disable_irq,
|
||||||
.enable = pyxis_enable_irq,
|
.enable = pyxis_enable_irq,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user