Merge ../scsi-rc-fixes-2.6
This commit is contained in:
commit
0bd2af4683
1886 changed files with 57084 additions and 18671 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -20,6 +20,7 @@
|
||||||
# Top-level generic files
|
# Top-level generic files
|
||||||
#
|
#
|
||||||
tags
|
tags
|
||||||
|
TAGS
|
||||||
vmlinux*
|
vmlinux*
|
||||||
System.map
|
System.map
|
||||||
Module.symvers
|
Module.symvers
|
||||||
|
|
8
CREDITS
8
CREDITS
|
@ -45,7 +45,7 @@ S: Longford, Ireland
|
||||||
S: Sydney, Australia
|
S: Sydney, Australia
|
||||||
|
|
||||||
N: Tigran A. Aivazian
|
N: Tigran A. Aivazian
|
||||||
E: tigran@veritas.com
|
E: tigran@aivazian.fsnet.co.uk
|
||||||
W: http://www.moses.uklinux.net/patches
|
W: http://www.moses.uklinux.net/patches
|
||||||
D: BFS filesystem
|
D: BFS filesystem
|
||||||
D: Intel IA32 CPU microcode update support
|
D: Intel IA32 CPU microcode update support
|
||||||
|
@ -3511,14 +3511,12 @@ D: The Linux Support Team Erlangen
|
||||||
|
|
||||||
N: David Weinehall
|
N: David Weinehall
|
||||||
E: tao@acc.umu.se
|
E: tao@acc.umu.se
|
||||||
|
P: 1024D/DC47CA16 7ACE 0FB0 7A74 F994 9B36 E1D1 D14E 8526 DC47 CA16
|
||||||
W: http://www.acc.umu.se/~tao/
|
W: http://www.acc.umu.se/~tao/
|
||||||
W: http://www.acc.umu.se/~mcalinux/
|
D: v2.0 kernel maintainer
|
||||||
D: Fixes for the NE/2-driver
|
D: Fixes for the NE/2-driver
|
||||||
D: Miscellaneous MCA-support
|
D: Miscellaneous MCA-support
|
||||||
D: Cleanup of the Config-files
|
D: Cleanup of the Config-files
|
||||||
S: Axtorpsvagen 40:20
|
|
||||||
S: S-903 37 UMEA
|
|
||||||
S: Sweden
|
|
||||||
|
|
||||||
N: Matt Welsh
|
N: Matt Welsh
|
||||||
E: mdw@metalab.unc.edu
|
E: mdw@metalab.unc.edu
|
||||||
|
|
|
@ -21,7 +21,7 @@ Description:
|
||||||
these states.
|
these states.
|
||||||
|
|
||||||
What: /sys/power/disk
|
What: /sys/power/disk
|
||||||
Date: August 2006
|
Date: September 2006
|
||||||
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
Contact: Rafael J. Wysocki <rjw@sisk.pl>
|
||||||
Description:
|
Description:
|
||||||
The /sys/power/disk file controls the operating mode of the
|
The /sys/power/disk file controls the operating mode of the
|
||||||
|
@ -39,6 +39,19 @@ Description:
|
||||||
'reboot' - the memory image will be saved by the kernel and
|
'reboot' - the memory image will be saved by the kernel and
|
||||||
the system will be rebooted.
|
the system will be rebooted.
|
||||||
|
|
||||||
|
Additionally, /sys/power/disk can be used to turn on one of the
|
||||||
|
two testing modes of the suspend-to-disk mechanism: 'testproc'
|
||||||
|
or 'test'. If the suspend-to-disk mechanism is in the
|
||||||
|
'testproc' mode, writing 'disk' to /sys/power/state will cause
|
||||||
|
the kernel to disable nonboot CPUs and freeze tasks, wait for 5
|
||||||
|
seconds, unfreeze tasks and enable nonboot CPUs. If it is in
|
||||||
|
the 'test' mode, writing 'disk' to /sys/power/state will cause
|
||||||
|
the kernel to disable nonboot CPUs and freeze tasks, shrink
|
||||||
|
memory, suspend devices, wait for 5 seconds, resume devices,
|
||||||
|
unfreeze tasks and enable nonboot CPUs. Then, we are able to
|
||||||
|
look in the log messages and work out, for example, which code
|
||||||
|
is being slow and which device drivers are misbehaving.
|
||||||
|
|
||||||
The suspend-to-disk method may be chosen by writing to this
|
The suspend-to-disk method may be chosen by writing to this
|
||||||
file one of the accepted strings:
|
file one of the accepted strings:
|
||||||
|
|
||||||
|
@ -46,6 +59,8 @@ Description:
|
||||||
'platform'
|
'platform'
|
||||||
'shutdown'
|
'shutdown'
|
||||||
'reboot'
|
'reboot'
|
||||||
|
'testproc'
|
||||||
|
'test'
|
||||||
|
|
||||||
It will only change to 'firmware' or 'platform' if the system
|
It will only change to 'firmware' or 'platform' if the system
|
||||||
supports that.
|
supports that.
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
|
DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
|
||||||
kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
|
kernel-hacking.xml kernel-locking.xml deviceiobook.xml \
|
||||||
procfs-guide.xml writing_usb_driver.xml \
|
procfs-guide.xml writing_usb_driver.xml \
|
||||||
kernel-api.xml journal-api.xml lsm.xml usb.xml \
|
kernel-api.xml filesystems.xml lsm.xml usb.xml \
|
||||||
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
||||||
genericirq.xml
|
genericirq.xml
|
||||||
|
|
||||||
|
|
|
@ -2,9 +2,106 @@
|
||||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||||
|
|
||||||
<book id="LinuxJBDAPI">
|
<book id="Linux-filesystems-API">
|
||||||
<bookinfo>
|
<bookinfo>
|
||||||
|
<title>Linux Filesystems API</title>
|
||||||
|
|
||||||
|
<legalnotice>
|
||||||
|
<para>
|
||||||
|
This documentation is free software; you can redistribute
|
||||||
|
it and/or modify it under the terms of the GNU General Public
|
||||||
|
License as published by the Free Software Foundation; either
|
||||||
|
version 2 of the License, or (at your option) any later
|
||||||
|
version.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
This program is distributed in the hope that it will be
|
||||||
|
useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||||
|
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
See the GNU General Public License for more details.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
You should have received a copy of the GNU General Public
|
||||||
|
License along with this program; if not, write to the Free
|
||||||
|
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||||
|
MA 02111-1307 USA
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
For more details see the file COPYING in the source
|
||||||
|
distribution of Linux.
|
||||||
|
</para>
|
||||||
|
</legalnotice>
|
||||||
|
</bookinfo>
|
||||||
|
|
||||||
|
<toc></toc>
|
||||||
|
|
||||||
|
<chapter id="vfs">
|
||||||
|
<title>The Linux VFS</title>
|
||||||
|
<sect1><title>The Filesystem types</title>
|
||||||
|
!Iinclude/linux/fs.h
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>The Directory Cache</title>
|
||||||
|
!Efs/dcache.c
|
||||||
|
!Iinclude/linux/dcache.h
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>Inode Handling</title>
|
||||||
|
!Efs/inode.c
|
||||||
|
!Efs/bad_inode.c
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>Registration and Superblocks</title>
|
||||||
|
!Efs/super.c
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>File Locks</title>
|
||||||
|
!Efs/locks.c
|
||||||
|
!Ifs/locks.c
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>Other Functions</title>
|
||||||
|
!Efs/mpage.c
|
||||||
|
!Efs/namei.c
|
||||||
|
!Efs/buffer.c
|
||||||
|
!Efs/bio.c
|
||||||
|
!Efs/seq_file.c
|
||||||
|
!Efs/filesystems.c
|
||||||
|
!Efs/fs-writeback.c
|
||||||
|
!Efs/block_dev.c
|
||||||
|
</sect1>
|
||||||
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="proc">
|
||||||
|
<title>The proc filesystem</title>
|
||||||
|
|
||||||
|
<sect1><title>sysctl interface</title>
|
||||||
|
!Ekernel/sysctl.c
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1><title>proc filesystem interface</title>
|
||||||
|
!Ifs/proc/base.c
|
||||||
|
</sect1>
|
||||||
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="sysfs">
|
||||||
|
<title>The Filesystem for Exporting Kernel Objects</title>
|
||||||
|
!Efs/sysfs/file.c
|
||||||
|
!Efs/sysfs/symlink.c
|
||||||
|
!Efs/sysfs/bin.c
|
||||||
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="debugfs">
|
||||||
|
<title>The debugfs filesystem</title>
|
||||||
|
|
||||||
|
<sect1><title>debugfs interface</title>
|
||||||
|
!Efs/debugfs/inode.c
|
||||||
|
!Efs/debugfs/file.c
|
||||||
|
</sect1>
|
||||||
|
</chapter>
|
||||||
|
|
||||||
|
<chapter id="LinuxJDBAPI">
|
||||||
|
<chapterinfo>
|
||||||
<title>The Linux Journalling API</title>
|
<title>The Linux Journalling API</title>
|
||||||
|
|
||||||
<authorgroup>
|
<authorgroup>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Roger</firstname>
|
<firstname>Roger</firstname>
|
||||||
|
@ -14,9 +111,9 @@
|
||||||
<email>rgammans@computer-surgery.co.uk</email>
|
<email>rgammans@computer-surgery.co.uk</email>
|
||||||
</address>
|
</address>
|
||||||
</affiliation>
|
</affiliation>
|
||||||
</author>
|
</author>
|
||||||
</authorgroup>
|
</authorgroup>
|
||||||
|
|
||||||
<authorgroup>
|
<authorgroup>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Stephen</firstname>
|
<firstname>Stephen</firstname>
|
||||||
|
@ -33,50 +130,21 @@
|
||||||
<year>2002</year>
|
<year>2002</year>
|
||||||
<holder>Roger Gammans</holder>
|
<holder>Roger Gammans</holder>
|
||||||
</copyright>
|
</copyright>
|
||||||
|
</chapterinfo>
|
||||||
|
|
||||||
<legalnotice>
|
<title>The Linux Journalling API</title>
|
||||||
<para>
|
|
||||||
This documentation is free software; you can redistribute
|
|
||||||
it and/or modify it under the terms of the GNU General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later
|
|
||||||
version.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
This program is distributed in the hope that it will be
|
|
||||||
useful, but WITHOUT ANY WARRANTY; without even the implied
|
|
||||||
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
See the GNU General Public License for more details.
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
You should have received a copy of the GNU General Public
|
|
||||||
License along with this program; if not, write to the Free
|
|
||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
|
||||||
MA 02111-1307 USA
|
|
||||||
</para>
|
|
||||||
|
|
||||||
<para>
|
|
||||||
For more details see the file COPYING in the source
|
|
||||||
distribution of Linux.
|
|
||||||
</para>
|
|
||||||
</legalnotice>
|
|
||||||
</bookinfo>
|
|
||||||
|
|
||||||
<toc></toc>
|
<sect1>
|
||||||
|
|
||||||
<chapter id="Overview">
|
|
||||||
<title>Overview</title>
|
<title>Overview</title>
|
||||||
<sect1>
|
<sect2>
|
||||||
<title>Details</title>
|
<title>Details</title>
|
||||||
<para>
|
<para>
|
||||||
The journalling layer is easy to use. You need to
|
The journalling layer is easy to use. You need to
|
||||||
first of all create a journal_t data structure. There are
|
first of all create a journal_t data structure. There are
|
||||||
two calls to do this dependent on how you decide to allocate the physical
|
two calls to do this dependent on how you decide to allocate the physical
|
||||||
media on which the journal resides. The journal_init_inode() call
|
media on which the journal resides. The journal_init_inode() call
|
||||||
is for journals stored in filesystem inodes, or the journal_init_dev()
|
is for journals stored in filesystem inodes, or the journal_init_dev()
|
||||||
call can be use for journal stored on a raw device (in a continuous range
|
call can be use for journal stored on a raw device (in a continuous range
|
||||||
of blocks). A journal_t is a typedef for a struct pointer, so when
|
of blocks). A journal_t is a typedef for a struct pointer, so when
|
||||||
you are finally finished make sure you call journal_destroy() on it
|
you are finally finished make sure you call journal_destroy() on it
|
||||||
to free up any used kernel memory.
|
to free up any used kernel memory.
|
||||||
|
@ -91,27 +159,26 @@ need to call journal_create().
|
||||||
<para>
|
<para>
|
||||||
Most of the time however your journal file will already have been created, but
|
Most of the time however your journal file will already have been created, but
|
||||||
before you load it you must call journal_wipe() to empty the journal file.
|
before you load it you must call journal_wipe() to empty the journal file.
|
||||||
Hang on, you say , what if the filesystem wasn't cleanly umount()'d . Well, it is the
|
Hang on, you say , what if the filesystem wasn't cleanly umount()'d . Well, it is the
|
||||||
job of the client file system to detect this and skip the call to journal_wipe().
|
job of the client file system to detect this and skip the call to journal_wipe().
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
In either case the next call should be to journal_load() which prepares the
|
In either case the next call should be to journal_load() which prepares the
|
||||||
journal file for use. Note that journal_wipe(..,0) calls journal_skip_recovery()
|
journal file for use. Note that journal_wipe(..,0) calls journal_skip_recovery()
|
||||||
for you if it detects any outstanding transactions in the journal and similarly
|
for you if it detects any outstanding transactions in the journal and similarly
|
||||||
journal_load() will call journal_recover() if necessary.
|
journal_load() will call journal_recover() if necessary.
|
||||||
I would advise reading fs/ext3/super.c for examples on this stage.
|
I would advise reading fs/ext3/super.c for examples on this stage.
|
||||||
[RGG: Why is the journal_wipe() call necessary - doesn't this needlessly
|
[RGG: Why is the journal_wipe() call necessary - doesn't this needlessly
|
||||||
complicate the API. Or isn't a good idea for the journal layer to hide
|
complicate the API. Or isn't a good idea for the journal layer to hide
|
||||||
dirty mounts from the client fs]
|
dirty mounts from the client fs]
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Now you can go ahead and start modifying the underlying
|
Now you can go ahead and start modifying the underlying
|
||||||
filesystem. Almost.
|
filesystem. Almost.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
|
|
||||||
You still need to actually journal your filesystem changes, this
|
You still need to actually journal your filesystem changes, this
|
||||||
|
@ -138,10 +205,10 @@ individual buffers (blocks). Before you start to modify a buffer you
|
||||||
need to call journal_get_{create,write,undo}_access() as appropriate,
|
need to call journal_get_{create,write,undo}_access() as appropriate,
|
||||||
this allows the journalling layer to copy the unmodified data if it
|
this allows the journalling layer to copy the unmodified data if it
|
||||||
needs to. After all the buffer may be part of a previously uncommitted
|
needs to. After all the buffer may be part of a previously uncommitted
|
||||||
transaction.
|
transaction.
|
||||||
At this point you are at last ready to modify a buffer, and once
|
At this point you are at last ready to modify a buffer, and once
|
||||||
you are have done so you need to call journal_dirty_{meta,}data().
|
you are have done so you need to call journal_dirty_{meta,}data().
|
||||||
Or if you've asked for access to a buffer you now know is now longer
|
Or if you've asked for access to a buffer you now know is now longer
|
||||||
required to be pushed back on the device you can call journal_forget()
|
required to be pushed back on the device you can call journal_forget()
|
||||||
in much the same way as you might have used bforget() in the past.
|
in much the same way as you might have used bforget() in the past.
|
||||||
</para>
|
</para>
|
||||||
|
@ -156,7 +223,6 @@ Then at umount time , in your put_super() (2.4) or write_super() (2.5)
|
||||||
you can then call journal_destroy() to clean up your in-core journal object.
|
you can then call journal_destroy() to clean up your in-core journal object.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Unfortunately there a couple of ways the journal layer can cause a deadlock.
|
Unfortunately there a couple of ways the journal layer can cause a deadlock.
|
||||||
The first thing to note is that each task can only have
|
The first thing to note is that each task can only have
|
||||||
|
@ -164,19 +230,19 @@ a single outstanding transaction at any one time, remember nothing
|
||||||
commits until the outermost journal_stop(). This means
|
commits until the outermost journal_stop(). This means
|
||||||
you must complete the transaction at the end of each file/inode/address
|
you must complete the transaction at the end of each file/inode/address
|
||||||
etc. operation you perform, so that the journalling system isn't re-entered
|
etc. operation you perform, so that the journalling system isn't re-entered
|
||||||
on another journal. Since transactions can't be nested/batched
|
on another journal. Since transactions can't be nested/batched
|
||||||
across differing journals, and another filesystem other than
|
across differing journals, and another filesystem other than
|
||||||
yours (say ext3) may be modified in a later syscall.
|
yours (say ext3) may be modified in a later syscall.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The second case to bear in mind is that journal_start() can
|
The second case to bear in mind is that journal_start() can
|
||||||
block if there isn't enough space in the journal for your transaction
|
block if there isn't enough space in the journal for your transaction
|
||||||
(based on the passed nblocks param) - when it blocks it merely(!) needs to
|
(based on the passed nblocks param) - when it blocks it merely(!) needs to
|
||||||
wait for transactions to complete and be committed from other tasks,
|
wait for transactions to complete and be committed from other tasks,
|
||||||
so essentially we are waiting for journal_stop(). So to avoid
|
so essentially we are waiting for journal_stop(). So to avoid
|
||||||
deadlocks you must treat journal_start/stop() as if they
|
deadlocks you must treat journal_start/stop() as if they
|
||||||
were semaphores and include them in your semaphore ordering rules to prevent
|
were semaphores and include them in your semaphore ordering rules to prevent
|
||||||
deadlocks. Note that journal_extend() has similar blocking behaviour to
|
deadlocks. Note that journal_extend() has similar blocking behaviour to
|
||||||
journal_start() so you can deadlock here just as easily as on journal_start().
|
journal_start() so you can deadlock here just as easily as on journal_start().
|
||||||
</para>
|
</para>
|
||||||
|
@ -184,7 +250,7 @@ journal_start() so you can deadlock here just as easily as on journal_start().
|
||||||
<para>
|
<para>
|
||||||
Try to reserve the right number of blocks the first time. ;-). This will
|
Try to reserve the right number of blocks the first time. ;-). This will
|
||||||
be the maximum number of blocks you are going to touch in this transaction.
|
be the maximum number of blocks you are going to touch in this transaction.
|
||||||
I advise having a look at at least ext3_jbd.h to see the basis on which
|
I advise having a look at at least ext3_jbd.h to see the basis on which
|
||||||
ext3 uses to make these decisions.
|
ext3 uses to make these decisions.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
@ -193,13 +259,13 @@ Another wriggle to watch out for is your on-disk block allocation strategy.
|
||||||
why? Because, if you undo a delete, you need to ensure you haven't reused any
|
why? Because, if you undo a delete, you need to ensure you haven't reused any
|
||||||
of the freed blocks in a later transaction. One simple way of doing this
|
of the freed blocks in a later transaction. One simple way of doing this
|
||||||
is make sure any blocks you allocate only have checkpointed transactions
|
is make sure any blocks you allocate only have checkpointed transactions
|
||||||
listed against them. Ext3 does this in ext3_test_allocatable().
|
listed against them. Ext3 does this in ext3_test_allocatable().
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
Lock is also providing through journal_{un,}lock_updates(),
|
Lock is also providing through journal_{un,}lock_updates(),
|
||||||
ext3 uses this when it wants a window with a clean and stable fs for a moment.
|
ext3 uses this when it wants a window with a clean and stable fs for a moment.
|
||||||
eg.
|
eg.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<programlisting>
|
<programlisting>
|
||||||
|
@ -230,19 +296,19 @@ extend it like this:-
|
||||||
struct journal_callback for_jbd;
|
struct journal_callback for_jbd;
|
||||||
// Stuff for myfs allocated together.
|
// Stuff for myfs allocated together.
|
||||||
myfs_inode* i_commited;
|
myfs_inode* i_commited;
|
||||||
|
|
||||||
}
|
}
|
||||||
</programlisting>
|
</programlisting>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
this would be useful if you needed to know when data was committed to a
|
this would be useful if you needed to know when data was committed to a
|
||||||
particular inode.
|
particular inode.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect1>
|
</sect2>
|
||||||
|
|
||||||
<sect1>
|
<sect2>
|
||||||
<title>Summary</title>
|
<title>Summary</title>
|
||||||
<para>
|
<para>
|
||||||
Using the journal is a matter of wrapping the different context changes,
|
Using the journal is a matter of wrapping the different context changes,
|
||||||
being each mount, each modification (transaction) and each changed buffer
|
being each mount, each modification (transaction) and each changed buffer
|
||||||
|
@ -260,15 +326,15 @@ an example.
|
||||||
if (clean) journal_wipe();
|
if (clean) journal_wipe();
|
||||||
journal_load();
|
journal_load();
|
||||||
|
|
||||||
foreach(transaction) { /*transactions must be
|
foreach(transaction) { /*transactions must be
|
||||||
completed before
|
completed before
|
||||||
a syscall returns to
|
a syscall returns to
|
||||||
userspace*/
|
userspace*/
|
||||||
|
|
||||||
handle_t * xct=journal_start(my_jnrl);
|
handle_t * xct=journal_start(my_jnrl);
|
||||||
foreach(bh) {
|
foreach(bh) {
|
||||||
journal_get_{create,write,undo}_access(xact,bh);
|
journal_get_{create,write,undo}_access(xact,bh);
|
||||||
if ( myfs_modify(bh) ) { /* returns true
|
if ( myfs_modify(bh) ) { /* returns true
|
||||||
if makes changes */
|
if makes changes */
|
||||||
journal_dirty_{meta,}data(xact,bh);
|
journal_dirty_{meta,}data(xact,bh);
|
||||||
} else {
|
} else {
|
||||||
|
@ -279,55 +345,57 @@ an example.
|
||||||
}
|
}
|
||||||
journal_destroy(my_jrnl);
|
journal_destroy(my_jrnl);
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</sect1>
|
</sect2>
|
||||||
|
|
||||||
</chapter>
|
</sect1>
|
||||||
|
|
||||||
<chapter id="adt">
|
<sect1>
|
||||||
<title>Data Types</title>
|
<title>Data Types</title>
|
||||||
<para>
|
<para>
|
||||||
The journalling layer uses typedefs to 'hide' the concrete definitions
|
The journalling layer uses typedefs to 'hide' the concrete definitions
|
||||||
of the structures used. As a client of the JBD layer you can
|
of the structures used. As a client of the JBD layer you can
|
||||||
just rely on the using the pointer as a magic cookie of some sort.
|
just rely on the using the pointer as a magic cookie of some sort.
|
||||||
|
|
||||||
Obviously the hiding is not enforced as this is 'C'.
|
|
||||||
</para>
|
|
||||||
<sect1><title>Structures</title>
|
|
||||||
!Iinclude/linux/jbd.h
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="calls">
|
Obviously the hiding is not enforced as this is 'C'.
|
||||||
|
</para>
|
||||||
|
<sect2><title>Structures</title>
|
||||||
|
!Iinclude/linux/jbd.h
|
||||||
|
</sect2>
|
||||||
|
</sect1>
|
||||||
|
|
||||||
|
<sect1>
|
||||||
<title>Functions</title>
|
<title>Functions</title>
|
||||||
<para>
|
<para>
|
||||||
The functions here are split into two groups those that
|
The functions here are split into two groups those that
|
||||||
affect a journal as a whole, and those which are used to
|
affect a journal as a whole, and those which are used to
|
||||||
manage transactions
|
manage transactions
|
||||||
</para>
|
</para>
|
||||||
<sect1><title>Journal Level</title>
|
<sect2><title>Journal Level</title>
|
||||||
!Efs/jbd/journal.c
|
!Efs/jbd/journal.c
|
||||||
!Ifs/jbd/recovery.c
|
!Ifs/jbd/recovery.c
|
||||||
</sect1>
|
</sect2>
|
||||||
<sect1><title>Transasction Level</title>
|
<sect2><title>Transasction Level</title>
|
||||||
!Efs/jbd/transaction.c
|
!Efs/jbd/transaction.c
|
||||||
</sect1>
|
</sect2>
|
||||||
</chapter>
|
</sect1>
|
||||||
<chapter>
|
<sect1>
|
||||||
<title>See also</title>
|
<title>See also</title>
|
||||||
<para>
|
<para>
|
||||||
<citation>
|
<citation>
|
||||||
<ulink url="ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz">
|
<ulink url="ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz">
|
||||||
Journaling the Linux ext2fs Filesystem,LinuxExpo 98, Stephen Tweedie
|
Journaling the Linux ext2fs Filesystem, LinuxExpo 98, Stephen Tweedie
|
||||||
</ulink>
|
</ulink>
|
||||||
</citation>
|
</citation>
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
<citation>
|
<citation>
|
||||||
<ulink url="http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html">
|
<ulink url="http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html">
|
||||||
Ext3 Journalling FileSystem , OLS 2000, Dr. Stephen Tweedie
|
Ext3 Journalling FileSystem, OLS 2000, Dr. Stephen Tweedie
|
||||||
</ulink>
|
</ulink>
|
||||||
</citation>
|
</citation>
|
||||||
</para>
|
</para>
|
||||||
</chapter>
|
</sect1>
|
||||||
|
|
||||||
|
</chapter>
|
||||||
|
|
||||||
</book>
|
</book>
|
|
@ -182,66 +182,6 @@ X!Ilib/string.c
|
||||||
</sect1>
|
</sect1>
|
||||||
</chapter>
|
</chapter>
|
||||||
|
|
||||||
<chapter id="vfs">
|
|
||||||
<title>The Linux VFS</title>
|
|
||||||
<sect1><title>The Filesystem types</title>
|
|
||||||
!Iinclude/linux/fs.h
|
|
||||||
</sect1>
|
|
||||||
<sect1><title>The Directory Cache</title>
|
|
||||||
!Efs/dcache.c
|
|
||||||
!Iinclude/linux/dcache.h
|
|
||||||
</sect1>
|
|
||||||
<sect1><title>Inode Handling</title>
|
|
||||||
!Efs/inode.c
|
|
||||||
!Efs/bad_inode.c
|
|
||||||
</sect1>
|
|
||||||
<sect1><title>Registration and Superblocks</title>
|
|
||||||
!Efs/super.c
|
|
||||||
</sect1>
|
|
||||||
<sect1><title>File Locks</title>
|
|
||||||
!Efs/locks.c
|
|
||||||
!Ifs/locks.c
|
|
||||||
</sect1>
|
|
||||||
<sect1><title>Other Functions</title>
|
|
||||||
!Efs/mpage.c
|
|
||||||
!Efs/namei.c
|
|
||||||
!Efs/buffer.c
|
|
||||||
!Efs/bio.c
|
|
||||||
!Efs/seq_file.c
|
|
||||||
!Efs/filesystems.c
|
|
||||||
!Efs/fs-writeback.c
|
|
||||||
!Efs/block_dev.c
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="proc">
|
|
||||||
<title>The proc filesystem</title>
|
|
||||||
|
|
||||||
<sect1><title>sysctl interface</title>
|
|
||||||
!Ekernel/sysctl.c
|
|
||||||
</sect1>
|
|
||||||
|
|
||||||
<sect1><title>proc filesystem interface</title>
|
|
||||||
!Ifs/proc/base.c
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="sysfs">
|
|
||||||
<title>The Filesystem for Exporting Kernel Objects</title>
|
|
||||||
!Efs/sysfs/file.c
|
|
||||||
!Efs/sysfs/symlink.c
|
|
||||||
!Efs/sysfs/bin.c
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="debugfs">
|
|
||||||
<title>The debugfs filesystem</title>
|
|
||||||
|
|
||||||
<sect1><title>debugfs interface</title>
|
|
||||||
!Efs/debugfs/inode.c
|
|
||||||
!Efs/debugfs/file.c
|
|
||||||
</sect1>
|
|
||||||
</chapter>
|
|
||||||
|
|
||||||
<chapter id="relayfs">
|
<chapter id="relayfs">
|
||||||
<title>relay interface support</title>
|
<title>relay interface support</title>
|
||||||
|
|
||||||
|
|
|
@ -395,6 +395,26 @@ bugme-janitor mailing list (every change in the bugzilla is mailed here)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Managing bug reports
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
One of the best ways to put into practice your hacking skills is by fixing
|
||||||
|
bugs reported by other people. Not only you will help to make the kernel
|
||||||
|
more stable, you'll learn to fix real world problems and you will improve
|
||||||
|
your skills, and other developers will be aware of your presence. Fixing
|
||||||
|
bugs is one of the best ways to get merits among other developers, because
|
||||||
|
not many people like wasting time fixing other people's bugs.
|
||||||
|
|
||||||
|
To work in the already reported bug reports, go to http://bugzilla.kernel.org.
|
||||||
|
If you want to be advised of the future bug reports, you can subscribe to the
|
||||||
|
bugme-new mailing list (only new bug reports are mailed here) or to the
|
||||||
|
bugme-janitor mailing list (every change in the bugzilla is mailed here)
|
||||||
|
|
||||||
|
http://lists.osdl.org/mailman/listinfo/bugme-new
|
||||||
|
http://lists.osdl.org/mailman/listinfo/bugme-janitors
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Mailing lists
|
Mailing lists
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
|
@ -470,7 +470,68 @@ LOC: 324553 325068
|
||||||
ERR: 0
|
ERR: 0
|
||||||
MIS: 0
|
MIS: 0
|
||||||
|
|
||||||
6. FAQ
|
6. MSI quirks
|
||||||
|
|
||||||
|
Several PCI chipsets or devices are known to not support MSI.
|
||||||
|
The PCI stack provides 3 possible levels of MSI disabling:
|
||||||
|
* on a single device
|
||||||
|
* on all devices behind a specific bridge
|
||||||
|
* globally
|
||||||
|
|
||||||
|
6.1. Disabling MSI on a single device
|
||||||
|
|
||||||
|
Under some circumstances, it might be required to disable MSI on a
|
||||||
|
single device, It may be achived by either not calling pci_enable_msi()
|
||||||
|
or all, or setting the pci_dev->no_msi flag before (most of the time
|
||||||
|
in a quirk).
|
||||||
|
|
||||||
|
6.2. Disabling MSI below a bridge
|
||||||
|
|
||||||
|
The vast majority of MSI quirks are required by PCI bridges not
|
||||||
|
being able to route MSI between busses. In this case, MSI have to be
|
||||||
|
disabled on all devices behind this bridge. It is achieves by setting
|
||||||
|
the PCI_BUS_FLAGS_NO_MSI flag in the pci_bus->bus_flags of the bridge
|
||||||
|
subordinate bus. There is no need to set the same flag on bridges that
|
||||||
|
are below the broken brigde. When pci_enable_msi() is called to enable
|
||||||
|
MSI on a device, pci_msi_supported() takes care of checking the NO_MSI
|
||||||
|
flag in all parent busses of the device.
|
||||||
|
|
||||||
|
Some bridges actually support dynamic MSI support enabling/disabling
|
||||||
|
by changing some bits in their PCI configuration space (especially
|
||||||
|
the Hypertransport chipsets such as the nVidia nForce and Serverworks
|
||||||
|
HT2000). It may then be required to update the NO_MSI flag on the
|
||||||
|
corresponding devices in the sysfs hierarchy. To enable MSI support
|
||||||
|
on device "0000:00:0e", do:
|
||||||
|
|
||||||
|
echo 1 > /sys/bus/pci/devices/0000:00:0e/msi_bus
|
||||||
|
|
||||||
|
To disable MSI support, echo 0 instead of 1. Note that it should be
|
||||||
|
used with caution since changing this value might break interrupts.
|
||||||
|
|
||||||
|
6.3. Disabling MSI globally
|
||||||
|
|
||||||
|
Some extreme cases may require to disable MSI globally on the system.
|
||||||
|
For now, the only known case is a Serverworks PCI-X chipsets (MSI are
|
||||||
|
not supported on several busses that are not all connected to the
|
||||||
|
chipset in the Linux PCI hierarchy). In the vast majority of other
|
||||||
|
cases, disabling only behind a specific bridge is enough.
|
||||||
|
|
||||||
|
For debugging purpose, the user may also pass pci=nomsi on the kernel
|
||||||
|
command-line to explicitly disable MSI globally. But, once the appro-
|
||||||
|
priate quirks are added to the kernel, this option should not be
|
||||||
|
required anymore.
|
||||||
|
|
||||||
|
6.4. Finding why MSI cannot be enabled on a device
|
||||||
|
|
||||||
|
Assuming that MSI are not enabled on a device, you should look at
|
||||||
|
dmesg to find messages that quirks may output when disabling MSI
|
||||||
|
on some devices, some bridges or even globally.
|
||||||
|
Then, lspci -t gives the list of bridges above a device. Reading
|
||||||
|
/sys/bus/pci/devices/0000:00:0e/msi_bus will tell you whether MSI
|
||||||
|
are enabled (1) or disabled (0). In 0 is found in a single bridge
|
||||||
|
msi_bus file above the device, MSI cannot be enabled.
|
||||||
|
|
||||||
|
7. FAQ
|
||||||
|
|
||||||
Q1. Are there any limitations on using the MSI?
|
Q1. Are there any limitations on using the MSI?
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ __u64 stime, utime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Maximum size of response requested or message sent */
|
/* Maximum size of response requested or message sent */
|
||||||
#define MAX_MSG_SIZE 256
|
#define MAX_MSG_SIZE 1024
|
||||||
/* Maximum number of cpus expected to be specified in a cpumask */
|
/* Maximum number of cpus expected to be specified in a cpumask */
|
||||||
#define MAX_CPUS 32
|
#define MAX_CPUS 32
|
||||||
/* Maximum length of pathname to log file */
|
/* Maximum length of pathname to log file */
|
||||||
|
|
|
@ -46,7 +46,7 @@ maxcpus=n Restrict boot time cpus to n. Say if you have 4 cpus, using
|
||||||
maxcpus=2 will only boot 2. You can choose to bring the
|
maxcpus=2 will only boot 2. You can choose to bring the
|
||||||
other cpus later online, read FAQ's for more info.
|
other cpus later online, read FAQ's for more info.
|
||||||
|
|
||||||
additional_cpus*=n Use this to limit hotpluggable cpus. This option sets
|
additional_cpus=n (*) Use this to limit hotpluggable cpus. This option sets
|
||||||
cpu_possible_map = cpu_present_map + additional_cpus
|
cpu_possible_map = cpu_present_map + additional_cpus
|
||||||
|
|
||||||
(*) Option valid only for following architectures
|
(*) Option valid only for following architectures
|
||||||
|
@ -101,15 +101,15 @@ cpu_possible_map/for_each_possible_cpu() to iterate.
|
||||||
|
|
||||||
Never use anything other than cpumask_t to represent bitmap of CPUs.
|
Never use anything other than cpumask_t to represent bitmap of CPUs.
|
||||||
|
|
||||||
#include <linux/cpumask.h>
|
#include <linux/cpumask.h>
|
||||||
|
|
||||||
for_each_possible_cpu - Iterate over cpu_possible_map
|
for_each_possible_cpu - Iterate over cpu_possible_map
|
||||||
for_each_online_cpu - Iterate over cpu_online_map
|
for_each_online_cpu - Iterate over cpu_online_map
|
||||||
for_each_present_cpu - Iterate over cpu_present_map
|
for_each_present_cpu - Iterate over cpu_present_map
|
||||||
for_each_cpu_mask(x,mask) - Iterate over some random collection of cpu mask.
|
for_each_cpu_mask(x,mask) - Iterate over some random collection of cpu mask.
|
||||||
|
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
lock_cpu_hotplug() and unlock_cpu_hotplug():
|
lock_cpu_hotplug() and unlock_cpu_hotplug():
|
||||||
|
|
||||||
The above calls are used to inhibit cpu hotplug operations. While holding the
|
The above calls are used to inhibit cpu hotplug operations. While holding the
|
||||||
cpucontrol mutex, cpu_online_map will not change. If you merely need to avoid
|
cpucontrol mutex, cpu_online_map will not change. If you merely need to avoid
|
||||||
|
@ -120,7 +120,7 @@ will work as long as stop_machine_run() is used to take a cpu down.
|
||||||
|
|
||||||
CPU Hotplug - Frequently Asked Questions.
|
CPU Hotplug - Frequently Asked Questions.
|
||||||
|
|
||||||
Q: How to i enable my kernel to support CPU hotplug?
|
Q: How to enable my kernel to support CPU hotplug?
|
||||||
A: When doing make defconfig, Enable CPU hotplug support
|
A: When doing make defconfig, Enable CPU hotplug support
|
||||||
|
|
||||||
"Processor type and Features" -> Support for Hotpluggable CPUs
|
"Processor type and Features" -> Support for Hotpluggable CPUs
|
||||||
|
@ -141,39 +141,39 @@ A: You should now notice an entry in sysfs.
|
||||||
Check if sysfs is mounted, using the "mount" command. You should notice
|
Check if sysfs is mounted, using the "mount" command. You should notice
|
||||||
an entry as shown below in the output.
|
an entry as shown below in the output.
|
||||||
|
|
||||||
....
|
....
|
||||||
none on /sys type sysfs (rw)
|
none on /sys type sysfs (rw)
|
||||||
....
|
....
|
||||||
|
|
||||||
if this is not mounted, do the following.
|
If this is not mounted, do the following.
|
||||||
|
|
||||||
#mkdir /sysfs
|
#mkdir /sysfs
|
||||||
#mount -t sysfs sys /sys
|
#mount -t sysfs sys /sys
|
||||||
|
|
||||||
now you should see entries for all present cpu, the following is an example
|
Now you should see entries for all present cpu, the following is an example
|
||||||
in a 8-way system.
|
in a 8-way system.
|
||||||
|
|
||||||
#pwd
|
#pwd
|
||||||
#/sys/devices/system/cpu
|
#/sys/devices/system/cpu
|
||||||
#ls -l
|
#ls -l
|
||||||
total 0
|
total 0
|
||||||
drwxr-xr-x 10 root root 0 Sep 19 07:44 .
|
drwxr-xr-x 10 root root 0 Sep 19 07:44 .
|
||||||
drwxr-xr-x 13 root root 0 Sep 19 07:45 ..
|
drwxr-xr-x 13 root root 0 Sep 19 07:45 ..
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu0
|
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu0
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu1
|
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu1
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu2
|
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu2
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu3
|
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu3
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu4
|
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu4
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu5
|
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu5
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu6
|
drwxr-xr-x 3 root root 0 Sep 19 07:44 cpu6
|
||||||
drwxr-xr-x 3 root root 0 Sep 19 07:48 cpu7
|
drwxr-xr-x 3 root root 0 Sep 19 07:48 cpu7
|
||||||
|
|
||||||
Under each directory you would find an "online" file which is the control
|
Under each directory you would find an "online" file which is the control
|
||||||
file to logically online/offline a processor.
|
file to logically online/offline a processor.
|
||||||
|
|
||||||
Q: Does hot-add/hot-remove refer to physical add/remove of cpus?
|
Q: Does hot-add/hot-remove refer to physical add/remove of cpus?
|
||||||
A: The usage of hot-add/remove may not be very consistently used in the code.
|
A: The usage of hot-add/remove may not be very consistently used in the code.
|
||||||
CONFIG_CPU_HOTPLUG enables logical online/offline capability in the kernel.
|
CONFIG_HOTPLUG_CPU enables logical online/offline capability in the kernel.
|
||||||
To support physical addition/removal, one would need some BIOS hooks and
|
To support physical addition/removal, one would need some BIOS hooks and
|
||||||
the platform should have something like an attention button in PCI hotplug.
|
the platform should have something like an attention button in PCI hotplug.
|
||||||
CONFIG_ACPI_HOTPLUG_CPU enables ACPI support for physical add/remove of CPUs.
|
CONFIG_ACPI_HOTPLUG_CPU enables ACPI support for physical add/remove of CPUs.
|
||||||
|
@ -181,17 +181,17 @@ CONFIG_ACPI_HOTPLUG_CPU enables ACPI support for physical add/remove of CPUs.
|
||||||
Q: How do i logically offline a CPU?
|
Q: How do i logically offline a CPU?
|
||||||
A: Do the following.
|
A: Do the following.
|
||||||
|
|
||||||
#echo 0 > /sys/devices/system/cpu/cpuX/online
|
#echo 0 > /sys/devices/system/cpu/cpuX/online
|
||||||
|
|
||||||
once the logical offline is successful, check
|
Once the logical offline is successful, check
|
||||||
|
|
||||||
#cat /proc/interrupts
|
#cat /proc/interrupts
|
||||||
|
|
||||||
you should now not see the CPU that you removed. Also online file will report
|
You should now not see the CPU that you removed. Also online file will report
|
||||||
the state as 0 when a cpu if offline and 1 when its online.
|
the state as 0 when a cpu if offline and 1 when its online.
|
||||||
|
|
||||||
#To display the current cpu state.
|
#To display the current cpu state.
|
||||||
#cat /sys/devices/system/cpu/cpuX/online
|
#cat /sys/devices/system/cpu/cpuX/online
|
||||||
|
|
||||||
Q: Why cant i remove CPU0 on some systems?
|
Q: Why cant i remove CPU0 on some systems?
|
||||||
A: Some architectures may have some special dependency on a certain CPU.
|
A: Some architectures may have some special dependency on a certain CPU.
|
||||||
|
@ -234,8 +234,8 @@ Q: If i have some kernel code that needs to be aware of CPU arrival and
|
||||||
departure, how to i arrange for proper notification?
|
departure, how to i arrange for proper notification?
|
||||||
A: This is what you would need in your kernel code to receive notifications.
|
A: This is what you would need in your kernel code to receive notifications.
|
||||||
|
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
static int __cpuinit foobar_cpu_callback(struct notifier_block *nfb,
|
static int __cpuinit foobar_cpu_callback(struct notifier_block *nfb,
|
||||||
unsigned long action, void *hcpu)
|
unsigned long action, void *hcpu)
|
||||||
{
|
{
|
||||||
unsigned int cpu = (unsigned long)hcpu;
|
unsigned int cpu = (unsigned long)hcpu;
|
||||||
|
@ -279,10 +279,10 @@ Q: I don't see my action being called for all CPUs already up and running?
|
||||||
A: Yes, CPU notifiers are called only when new CPUs are on-lined or offlined.
|
A: Yes, CPU notifiers are called only when new CPUs are on-lined or offlined.
|
||||||
If you need to perform some action for each cpu already in the system, then
|
If you need to perform some action for each cpu already in the system, then
|
||||||
|
|
||||||
for_each_online_cpu(i) {
|
for_each_online_cpu(i) {
|
||||||
foobar_cpu_callback(&foobar_cpu_notifier, CPU_UP_PREPARE, i);
|
foobar_cpu_callback(&foobar_cpu_notifier, CPU_UP_PREPARE, i);
|
||||||
foobar_cpu_callback(&foobar-cpu_notifier, CPU_ONLINE, i);
|
foobar_cpu_callback(&foobar_cpu_notifier, CPU_ONLINE, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
Q: If i would like to develop cpu hotplug support for a new architecture,
|
Q: If i would like to develop cpu hotplug support for a new architecture,
|
||||||
what do i need at a minimum?
|
what do i need at a minimum?
|
||||||
|
@ -307,38 +307,38 @@ Q: I need to ensure that a particular cpu is not removed when there is some
|
||||||
work specific to this cpu is in progress.
|
work specific to this cpu is in progress.
|
||||||
A: First switch the current thread context to preferred cpu
|
A: First switch the current thread context to preferred cpu
|
||||||
|
|
||||||
int my_func_on_cpu(int cpu)
|
int my_func_on_cpu(int cpu)
|
||||||
{
|
{
|
||||||
cpumask_t saved_mask, new_mask = CPU_MASK_NONE;
|
cpumask_t saved_mask, new_mask = CPU_MASK_NONE;
|
||||||
int curr_cpu, err = 0;
|
int curr_cpu, err = 0;
|
||||||
|
|
||||||
saved_mask = current->cpus_allowed;
|
saved_mask = current->cpus_allowed;
|
||||||
cpu_set(cpu, new_mask);
|
cpu_set(cpu, new_mask);
|
||||||
err = set_cpus_allowed(current, new_mask);
|
err = set_cpus_allowed(current, new_mask);
|
||||||
|
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we got scheduled out just after the return from
|
* If we got scheduled out just after the return from
|
||||||
* set_cpus_allowed() before running the work, this ensures
|
* set_cpus_allowed() before running the work, this ensures
|
||||||
* we stay locked.
|
* we stay locked.
|
||||||
*/
|
*/
|
||||||
curr_cpu = get_cpu();
|
curr_cpu = get_cpu();
|
||||||
|
|
||||||
if (curr_cpu != cpu) {
|
if (curr_cpu != cpu) {
|
||||||
err = -EAGAIN;
|
err = -EAGAIN;
|
||||||
goto ret;
|
goto ret;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* Do work : But cant sleep, since get_cpu() disables preempt
|
* Do work : But cant sleep, since get_cpu() disables preempt
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
ret:
|
ret:
|
||||||
put_cpu();
|
put_cpu();
|
||||||
set_cpus_allowed(current, saved_mask);
|
set_cpus_allowed(current, saved_mask);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Q: How do we determine how many CPUs are available for hotplug.
|
Q: How do we determine how many CPUs are available for hotplug.
|
||||||
|
|
|
@ -53,18 +53,6 @@ Who: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
|
||||||
|
|
||||||
---------------------------
|
---------------------------
|
||||||
|
|
||||||
What: sys_sysctl
|
|
||||||
When: January 2007
|
|
||||||
Why: The same information is available through /proc/sys and that is the
|
|
||||||
interface user space prefers to use. And there do not appear to be
|
|
||||||
any existing user in user space of sys_sysctl. The additional
|
|
||||||
maintenance overhead of keeping a set of binary names gets
|
|
||||||
in the way of doing a good job of maintaining this interface.
|
|
||||||
|
|
||||||
Who: Eric Biederman <ebiederm@xmission.com>
|
|
||||||
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
|
What: PCMCIA control ioctl (needed for pcmcia-cs [cardmgr, cardctl])
|
||||||
When: November 2005
|
When: November 2005
|
||||||
Files: drivers/pcmcia/: pcmcia_ioctl.c
|
Files: drivers/pcmcia/: pcmcia_ioctl.c
|
||||||
|
@ -255,7 +243,7 @@ Who: Stephen Hemminger <shemminger@osdl.org>
|
||||||
|
|
||||||
|
|
||||||
What: PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
|
What: PHYSDEVPATH, PHYSDEVBUS, PHYSDEVDRIVER in the uevent environment
|
||||||
When: Oktober 2008
|
When: October 2008
|
||||||
Why: The stacking of class devices makes these values misleading and
|
Why: The stacking of class devices makes these values misleading and
|
||||||
inconsistent.
|
inconsistent.
|
||||||
Class devices should not carry any of these properties, and bus
|
Class devices should not carry any of these properties, and bus
|
||||||
|
|
|
@ -34,6 +34,8 @@ ext2.txt
|
||||||
- info, mount options and specifications for the Ext2 filesystem.
|
- info, mount options and specifications for the Ext2 filesystem.
|
||||||
ext3.txt
|
ext3.txt
|
||||||
- info, mount options and specifications for the Ext3 filesystem.
|
- info, mount options and specifications for the Ext3 filesystem.
|
||||||
|
ext4.txt
|
||||||
|
- info, mount options and specifications for the Ext4 filesystem.
|
||||||
files.txt
|
files.txt
|
||||||
- info on file management in the Linux kernel.
|
- info on file management in the Linux kernel.
|
||||||
fuse.txt
|
fuse.txt
|
||||||
|
|
236
Documentation/filesystems/ext4.txt
Normal file
236
Documentation/filesystems/ext4.txt
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
|
||||||
|
Ext4 Filesystem
|
||||||
|
===============
|
||||||
|
|
||||||
|
This is a development version of the ext4 filesystem, 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.
|
||||||
|
|
||||||
|
Mailing list: linux-ext4@vger.kernel.org
|
||||||
|
|
||||||
|
|
||||||
|
1. Quick usage instructions:
|
||||||
|
===========================
|
||||||
|
|
||||||
|
- Grab updated e2fsprogs from
|
||||||
|
ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs-interim/
|
||||||
|
This is a patchset on top of e2fsprogs-1.39, which can be found at
|
||||||
|
ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/
|
||||||
|
|
||||||
|
- It's still mke2fs -j /dev/hda1
|
||||||
|
|
||||||
|
- mount /dev/hda1 /wherever -t ext4dev
|
||||||
|
|
||||||
|
- To enable extents,
|
||||||
|
|
||||||
|
mount /dev/hda1 /wherever -t ext4dev -o extents
|
||||||
|
|
||||||
|
- The filesystem is compatible with the ext3 driver until you add a file
|
||||||
|
which has extents (ie: `mount -o extents', then create a file).
|
||||||
|
|
||||||
|
NOTE: The "extents" mount flag is temporary. It will soon go away and
|
||||||
|
extents will be enabled by the "-o extents" flag to mke2fs or tune2fs
|
||||||
|
|
||||||
|
- When comparing performance with other filesystems, remember that
|
||||||
|
ext3/4 by default offers higher data integrity guarantees than most. So
|
||||||
|
when comparing with a metadata-only journalling filesystem, use `mount -o
|
||||||
|
data=writeback'. And you might as well use `mount -o nobh' too along
|
||||||
|
with it. Making the journal larger than the mke2fs default often helps
|
||||||
|
performance with metadata-intensive workloads.
|
||||||
|
|
||||||
|
2. Features
|
||||||
|
===========
|
||||||
|
|
||||||
|
2.1 Currently available
|
||||||
|
|
||||||
|
* ability to use filesystems > 16TB
|
||||||
|
* extent format reduces metadata overhead (RAM, IO for access, transactions)
|
||||||
|
* extent format more robust in face of on-disk corruption due to magics,
|
||||||
|
* internal redunancy in tree
|
||||||
|
|
||||||
|
2.1 Previously available, soon to be enabled by default by "mkefs.ext4":
|
||||||
|
|
||||||
|
* dir_index and resize inode will be on by default
|
||||||
|
* large inodes will be used by default for fast EAs, nsec timestamps, etc
|
||||||
|
|
||||||
|
2.2 Candidate features for future inclusion
|
||||||
|
|
||||||
|
There are several under discussion, whether they all make it in is
|
||||||
|
partly a function of how much time everyone has to work on them:
|
||||||
|
|
||||||
|
* improved file allocation (multi-block alloc, delayed alloc; basically done)
|
||||||
|
* fix 32000 subdirectory limit (patch exists, needs some e2fsck work)
|
||||||
|
* nsec timestamps for mtime, atime, ctime, create time (patch exists,
|
||||||
|
needs some e2fsck work)
|
||||||
|
* inode version field on disk (NFSv4, Lustre; prototype exists)
|
||||||
|
* reduced mke2fs/e2fsck time via uninitialized groups (prototype exists)
|
||||||
|
* journal checksumming for robustness, performance (prototype exists)
|
||||||
|
* persistent file preallocation (e.g for streaming media, databases)
|
||||||
|
|
||||||
|
Features like metadata checksumming have been discussed and planned for
|
||||||
|
a bit but no patches exist yet so I'm not sure they're in the near-term
|
||||||
|
roadmap.
|
||||||
|
|
||||||
|
The big performance win will come with mballoc and delalloc. CFS has
|
||||||
|
been using mballoc for a few years already with Lustre, and IBM + Bull
|
||||||
|
did a lot of benchmarking on it. The reason it isn't in the first set of
|
||||||
|
patches is partly a manageability issue, and partly because it doesn't
|
||||||
|
directly affect the on-disk format (outside of much better allocation)
|
||||||
|
so it isn't critical to get into the first round of changes. I believe
|
||||||
|
Alex is working on a new set of patches right now.
|
||||||
|
|
||||||
|
3. Options
|
||||||
|
==========
|
||||||
|
|
||||||
|
When mounting an ext4 filesystem, the following option are accepted:
|
||||||
|
(*) == default
|
||||||
|
|
||||||
|
extents ext4 will use extents to address file data. The
|
||||||
|
file system will no longer be mountable by ext3.
|
||||||
|
|
||||||
|
journal=update Update the ext4 file system's journal to the current
|
||||||
|
format.
|
||||||
|
|
||||||
|
journal=inum When a journal already exists, this option is ignored.
|
||||||
|
Otherwise, it specifies the number of the inode which
|
||||||
|
will represent the ext4 file system's journal file.
|
||||||
|
|
||||||
|
journal_dev=devnum When the external journal device's major/minor numbers
|
||||||
|
have changed, this option allows the user to specify
|
||||||
|
the new journal location. The journal device is
|
||||||
|
identified through its new major/minor numbers encoded
|
||||||
|
in devnum.
|
||||||
|
|
||||||
|
noload Don't load the journal on mounting.
|
||||||
|
|
||||||
|
data=journal All data are committed into the journal prior to being
|
||||||
|
written into the main file system.
|
||||||
|
|
||||||
|
data=ordered (*) All data are forced directly out to the main file
|
||||||
|
system prior to its metadata being committed to the
|
||||||
|
journal.
|
||||||
|
|
||||||
|
data=writeback Data ordering is not preserved, data may be written
|
||||||
|
into the main file system after its metadata has been
|
||||||
|
committed to the journal.
|
||||||
|
|
||||||
|
commit=nrsec (*) Ext4 can be told to sync all its data and metadata
|
||||||
|
every 'nrsec' seconds. The default value is 5 seconds.
|
||||||
|
This means that if you lose your power, you will lose
|
||||||
|
as much as the latest 5 seconds of work (your
|
||||||
|
filesystem will not be damaged though, thanks to the
|
||||||
|
journaling). This default value (or any low value)
|
||||||
|
will hurt performance, but it's good for data-safety.
|
||||||
|
Setting it to 0 will have the same effect as leaving
|
||||||
|
it at the default (5 seconds).
|
||||||
|
Setting it to very large values will improve
|
||||||
|
performance.
|
||||||
|
|
||||||
|
barrier=1 This enables/disables barriers. barrier=0 disables
|
||||||
|
it, barrier=1 enables it.
|
||||||
|
|
||||||
|
orlov (*) This enables the new Orlov block allocator. It is
|
||||||
|
enabled by default.
|
||||||
|
|
||||||
|
oldalloc This disables the Orlov block allocator and enables
|
||||||
|
the old block allocator. Orlov should have better
|
||||||
|
performance - we'd like to get some feedback if it's
|
||||||
|
the contrary for you.
|
||||||
|
|
||||||
|
user_xattr Enables Extended User Attributes. Additionally, you
|
||||||
|
need to have extended attribute support enabled in the
|
||||||
|
kernel configuration (CONFIG_EXT4_FS_XATTR). See the
|
||||||
|
attr(5) manual page and http://acl.bestbits.at/ to
|
||||||
|
learn more about extended attributes.
|
||||||
|
|
||||||
|
nouser_xattr Disables Extended User Attributes.
|
||||||
|
|
||||||
|
acl Enables POSIX Access Control Lists support.
|
||||||
|
Additionally, you need to have ACL support enabled in
|
||||||
|
the kernel configuration (CONFIG_EXT4_FS_POSIX_ACL).
|
||||||
|
See the acl(5) manual page and http://acl.bestbits.at/
|
||||||
|
for more information.
|
||||||
|
|
||||||
|
noacl This option disables POSIX Access Control List
|
||||||
|
support.
|
||||||
|
|
||||||
|
reservation
|
||||||
|
|
||||||
|
noreservation
|
||||||
|
|
||||||
|
bsddf (*) Make 'df' act like BSD.
|
||||||
|
minixdf Make 'df' act like Minix.
|
||||||
|
|
||||||
|
check=none Don't do extra checking of bitmaps on mount.
|
||||||
|
nocheck
|
||||||
|
|
||||||
|
debug Extra debugging information is sent to syslog.
|
||||||
|
|
||||||
|
errors=remount-ro(*) Remount the filesystem read-only on an error.
|
||||||
|
errors=continue Keep going on a filesystem error.
|
||||||
|
errors=panic Panic and halt the machine if an error occurs.
|
||||||
|
|
||||||
|
grpid Give objects the same group ID as their creator.
|
||||||
|
bsdgroups
|
||||||
|
|
||||||
|
nogrpid (*) New objects have the group ID of their creator.
|
||||||
|
sysvgroups
|
||||||
|
|
||||||
|
resgid=n The group ID which may use the reserved blocks.
|
||||||
|
|
||||||
|
resuid=n The user ID which may use the reserved blocks.
|
||||||
|
|
||||||
|
sb=n Use alternate superblock at this location.
|
||||||
|
|
||||||
|
quota
|
||||||
|
noquota
|
||||||
|
grpquota
|
||||||
|
usrquota
|
||||||
|
|
||||||
|
bh (*) ext4 associates buffer heads to data pages to
|
||||||
|
nobh (a) cache disk block mapping information
|
||||||
|
(b) link pages into transaction to provide
|
||||||
|
ordering guarantees.
|
||||||
|
"bh" option forces use of buffer heads.
|
||||||
|
"nobh" option tries to avoid associating buffer
|
||||||
|
heads (supported only for "writeback" mode).
|
||||||
|
|
||||||
|
|
||||||
|
Data Mode
|
||||||
|
---------
|
||||||
|
There are 3 different data modes:
|
||||||
|
|
||||||
|
* writeback mode
|
||||||
|
In data=writeback mode, ext4 does not journal data at all. This mode provides
|
||||||
|
a similar level of journaling as that of XFS, JFS, and ReiserFS in its default
|
||||||
|
mode - metadata journaling. A crash+recovery can cause incorrect data to
|
||||||
|
appear in files which were written shortly before the crash. This mode will
|
||||||
|
typically provide the best ext4 performance.
|
||||||
|
|
||||||
|
* ordered mode
|
||||||
|
In data=ordered mode, ext4 only officially journals metadata, but it logically
|
||||||
|
groups metadata and data blocks into a single unit called a transaction. When
|
||||||
|
it's time to write the new metadata out to disk, the associated data blocks
|
||||||
|
are written first. In general, this mode performs slightly slower than
|
||||||
|
writeback but significantly faster than journal mode.
|
||||||
|
|
||||||
|
* journal mode
|
||||||
|
data=journal mode provides full data and metadata journaling. All new data is
|
||||||
|
written to the journal first, and then to its final location.
|
||||||
|
In the event of a crash, the journal can be replayed, bringing both data and
|
||||||
|
metadata into a consistent state. This mode is the slowest except when data
|
||||||
|
needs to be read from and written to disk at the same time where it
|
||||||
|
outperforms all others modes.
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
kernel source: <file:fs/ext4/>
|
||||||
|
<file:fs/jbd2/>
|
||||||
|
|
||||||
|
programs: http://e2fsprogs.sourceforge.net/
|
||||||
|
http://ext2resize.sourceforge.net
|
||||||
|
|
||||||
|
useful links: http://fedoraproject.org/wiki/ext3-devel
|
||||||
|
http://www.bullopensource.org/ext4/
|
|
@ -7,8 +7,17 @@ If you encounter problems with reading UDF discs using this driver,
|
||||||
please report them to linux_udf@hpesjro.fc.hp.com, which is the
|
please report them to linux_udf@hpesjro.fc.hp.com, which is the
|
||||||
developer's list.
|
developer's list.
|
||||||
|
|
||||||
Write support requires a block driver which supports writing. The current
|
Write support requires a block driver which supports writing. Currently
|
||||||
scsi and ide cdrom drivers do not support writing.
|
dvd+rw drives and media support true random sector writes, and so a udf
|
||||||
|
filesystem on such devices can be directly mounted read/write. CD-RW
|
||||||
|
media however, does not support this. Instead the media can be formatted
|
||||||
|
for packet mode using the utility cdrwtool, then the pktcdvd driver can
|
||||||
|
be bound to the underlying cd device to provide the required buffering
|
||||||
|
and read-modify-write cycles to allow the filesystem random sector writes
|
||||||
|
while providing the hardware with only full packet writes. While not
|
||||||
|
required for dvd+rw media, use of the pktcdvd driver often enhances
|
||||||
|
performance due to very poor read-modify-write support supplied internally
|
||||||
|
by drive firmware.
|
||||||
|
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
The following mount options are supported:
|
The following mount options are supported:
|
||||||
|
|
|
@ -24,7 +24,7 @@ Authors:
|
||||||
Frodo Looijaard <frodol@dds.nl>,
|
Frodo Looijaard <frodol@dds.nl>,
|
||||||
Philip Edelbrock <phil@netroedge.com>,
|
Philip Edelbrock <phil@netroedge.com>,
|
||||||
Michiel Rook <michiel@grendelproject.nl>,
|
Michiel Rook <michiel@grendelproject.nl>,
|
||||||
Grant Coady <gcoady@gmail.com> with guidance
|
Grant Coady <gcoady.lk@gmail.com> with guidance
|
||||||
from Jean Delvare <khali@linux-fr.org>
|
from Jean Delvare <khali@linux-fr.org>
|
||||||
|
|
||||||
Interface
|
Interface
|
||||||
|
|
|
@ -17,7 +17,7 @@ Thanks to Kris Chen from Fintek for answering technical questions and
|
||||||
providing additional documentation.
|
providing additional documentation.
|
||||||
|
|
||||||
Thanks to Chris Lin from Jetway for providing wiring schematics and
|
Thanks to Chris Lin from Jetway for providing wiring schematics and
|
||||||
anwsering technical questions.
|
answering technical questions.
|
||||||
|
|
||||||
|
|
||||||
Description
|
Description
|
||||||
|
|
|
@ -2,7 +2,7 @@ Kernel driver k8temp
|
||||||
====================
|
====================
|
||||||
|
|
||||||
Supported chips:
|
Supported chips:
|
||||||
* AMD K8 CPU
|
* AMD Athlon64/FX or Opteron CPUs
|
||||||
Prefix: 'k8temp'
|
Prefix: 'k8temp'
|
||||||
Addresses scanned: PCI space
|
Addresses scanned: PCI space
|
||||||
Datasheet: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/32559.pdf
|
Datasheet: http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/32559.pdf
|
||||||
|
@ -13,10 +13,13 @@ Contact: Rudolf Marek <r.marek@sh.cvut.cz>
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
This driver permits reading temperature sensor(s) embedded inside AMD K8 CPUs.
|
This driver permits reading temperature sensor(s) embedded inside AMD K8
|
||||||
Official documentation says that it works from revision F of K8 core, but
|
family CPUs (Athlon64/FX, Opteron). Official documentation says that it works
|
||||||
in fact it seems to be implemented for all revisions of K8 except the first
|
from revision F of K8 core, but in fact it seems to be implemented for all
|
||||||
two revisions (SH-B0 and SH-B3).
|
revisions of K8 except the first two revisions (SH-B0 and SH-B3).
|
||||||
|
|
||||||
|
Please note that you will need at least lm-sensors 2.10.1 for proper userspace
|
||||||
|
support.
|
||||||
|
|
||||||
There can be up to four temperature sensors inside single CPU. The driver
|
There can be up to four temperature sensors inside single CPU. The driver
|
||||||
will auto-detect the sensors and will display only temperatures from
|
will auto-detect the sensors and will display only temperatures from
|
||||||
|
|
|
@ -2,12 +2,14 @@ Kernel driver smsc47m1
|
||||||
======================
|
======================
|
||||||
|
|
||||||
Supported chips:
|
Supported chips:
|
||||||
* SMSC LPC47B27x, LPC47M10x, LPC47M13x, LPC47M14x, LPC47M15x and LPC47M192
|
* SMSC LPC47B27x, LPC47M112, LPC47M10x, LPC47M13x, LPC47M14x,
|
||||||
|
LPC47M15x and LPC47M192
|
||||||
Addresses scanned: none, address read from Super I/O config space
|
Addresses scanned: none, address read from Super I/O config space
|
||||||
Prefix: 'smsc47m1'
|
Prefix: 'smsc47m1'
|
||||||
Datasheets:
|
Datasheets:
|
||||||
http://www.smsc.com/main/datasheets/47b27x.pdf
|
http://www.smsc.com/main/datasheets/47b27x.pdf
|
||||||
http://www.smsc.com/main/datasheets/47m10x.pdf
|
http://www.smsc.com/main/datasheets/47m10x.pdf
|
||||||
|
http://www.smsc.com/main/datasheets/47m112.pdf
|
||||||
http://www.smsc.com/main/tools/discontinued/47m13x.pdf
|
http://www.smsc.com/main/tools/discontinued/47m13x.pdf
|
||||||
http://www.smsc.com/main/datasheets/47m14x.pdf
|
http://www.smsc.com/main/datasheets/47m14x.pdf
|
||||||
http://www.smsc.com/main/tools/discontinued/47m15x.pdf
|
http://www.smsc.com/main/tools/discontinued/47m15x.pdf
|
||||||
|
|
|
@ -26,7 +26,7 @@ fan control mode).
|
||||||
Temperatures are measured in degrees Celsius and measurement resolution is 1
|
Temperatures are measured in degrees Celsius and measurement resolution is 1
|
||||||
degC for temp1 and 0.5 degC for temp2 and temp3. An alarm is triggered when
|
degC for temp1 and 0.5 degC for temp2 and temp3. An alarm is triggered when
|
||||||
the temperature gets higher than high limit; it stays on until the temperature
|
the temperature gets higher than high limit; it stays on until the temperature
|
||||||
falls below the Hysteresis value.
|
falls below the hysteresis value.
|
||||||
|
|
||||||
Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
|
Fan rotation speeds are reported in RPM (rotations per minute). An alarm is
|
||||||
triggered if the rotation speed has dropped below a programmable limit. Fan
|
triggered if the rotation speed has dropped below a programmable limit. Fan
|
||||||
|
@ -67,9 +67,9 @@ Thermal Cruise mode
|
||||||
|
|
||||||
If the temperature is in the range defined by:
|
If the temperature is in the range defined by:
|
||||||
|
|
||||||
pwm[1-4]_target - set target temperature, unit millidegree Celcius
|
pwm[1-4]_target - set target temperature, unit millidegree Celsius
|
||||||
(range 0 - 127000)
|
(range 0 - 127000)
|
||||||
pwm[1-4]_tolerance - tolerance, unit millidegree Celcius (range 0 - 15000)
|
pwm[1-4]_tolerance - tolerance, unit millidegree Celsius (range 0 - 15000)
|
||||||
|
|
||||||
there are no changes to fan speed. Once the temperature leaves the interval,
|
there are no changes to fan speed. Once the temperature leaves the interval,
|
||||||
fan speed increases (temp is higher) or decreases if lower than desired.
|
fan speed increases (temp is higher) or decreases if lower than desired.
|
||||||
|
|
|
@ -30,9 +30,10 @@ detailed description):
|
||||||
- ACPI sounds
|
- ACPI sounds
|
||||||
- temperature sensors
|
- temperature sensors
|
||||||
- Experimental: embedded controller register dump
|
- Experimental: embedded controller register dump
|
||||||
- Experimental: LCD brightness control
|
- LCD brightness control
|
||||||
- Experimental: volume control
|
- Volume control
|
||||||
- Experimental: fan speed, fan enable/disable
|
- Experimental: fan speed, fan enable/disable
|
||||||
|
- Experimental: WAN enable and disable
|
||||||
|
|
||||||
A compatibility table by model and feature is maintained on the web
|
A compatibility table by model and feature is maintained on the web
|
||||||
site, http://ibm-acpi.sf.net/. I appreciate any success or failure
|
site, http://ibm-acpi.sf.net/. I appreciate any success or failure
|
||||||
|
@ -52,40 +53,7 @@ Installation
|
||||||
|
|
||||||
If you are compiling this driver as included in the Linux kernel
|
If you are compiling this driver as included in the Linux kernel
|
||||||
sources, simply enable the CONFIG_ACPI_IBM option (Power Management /
|
sources, simply enable the CONFIG_ACPI_IBM option (Power Management /
|
||||||
ACPI / IBM ThinkPad Laptop Extras). The rest of this section describes
|
ACPI / IBM ThinkPad Laptop Extras).
|
||||||
how to install this driver when downloaded from the web site.
|
|
||||||
|
|
||||||
First, you need to get a kernel with ACPI support up and running.
|
|
||||||
Please refer to http://acpi.sourceforge.net/ for help with this
|
|
||||||
step. How successful you will be depends a lot on you ThinkPad model,
|
|
||||||
the kernel you are using and any additional patches applied. The
|
|
||||||
kernel provided with your distribution may not be good enough. I
|
|
||||||
needed to compile a 2.6.7 kernel with the 20040715 ACPI patch to get
|
|
||||||
ACPI working reliably on my ThinkPad X40. Old ThinkPad models may not
|
|
||||||
be supported at all.
|
|
||||||
|
|
||||||
Assuming you have the basic ACPI support working (e.g. you can see the
|
|
||||||
/proc/acpi directory), follow the following steps to install this
|
|
||||||
driver:
|
|
||||||
|
|
||||||
- unpack the archive:
|
|
||||||
|
|
||||||
tar xzvf ibm-acpi-x.y.tar.gz; cd ibm-acpi-x.y
|
|
||||||
|
|
||||||
- compile the driver:
|
|
||||||
|
|
||||||
make
|
|
||||||
|
|
||||||
- install the module in your kernel modules directory:
|
|
||||||
|
|
||||||
make install
|
|
||||||
|
|
||||||
- load the module:
|
|
||||||
|
|
||||||
modprobe ibm_acpi
|
|
||||||
|
|
||||||
After loading the module, check the "dmesg" output for any error messages.
|
|
||||||
|
|
||||||
|
|
||||||
Features
|
Features
|
||||||
--------
|
--------
|
||||||
|
@ -523,13 +491,8 @@ registers contain the current battery capacity, etc. If you experiment
|
||||||
with this, do send me your results (including some complete dumps with
|
with this, do send me your results (including some complete dumps with
|
||||||
a description of the conditions when they were taken.)
|
a description of the conditions when they were taken.)
|
||||||
|
|
||||||
EXPERIMENTAL: LCD brightness control -- /proc/acpi/ibm/brightness
|
LCD brightness control -- /proc/acpi/ibm/brightness
|
||||||
-----------------------------------------------------------------
|
---------------------------------------------------
|
||||||
|
|
||||||
This feature is marked EXPERIMENTAL because the implementation
|
|
||||||
directly accesses hardware registers and may not work as expected. USE
|
|
||||||
WITH CAUTION! To use this feature, you need to supply the
|
|
||||||
experimental=1 parameter when loading the module.
|
|
||||||
|
|
||||||
This feature allows software control of the LCD brightness on ThinkPad
|
This feature allows software control of the LCD brightness on ThinkPad
|
||||||
models which don't have a hardware brightness slider. The available
|
models which don't have a hardware brightness slider. The available
|
||||||
|
@ -542,13 +505,8 @@ commands are:
|
||||||
The <level> number range is 0 to 7, although not all of them may be
|
The <level> number range is 0 to 7, although not all of them may be
|
||||||
distinct. The current brightness level is shown in the file.
|
distinct. The current brightness level is shown in the file.
|
||||||
|
|
||||||
EXPERIMENTAL: Volume control -- /proc/acpi/ibm/volume
|
Volume control -- /proc/acpi/ibm/volume
|
||||||
-----------------------------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
This feature is marked EXPERIMENTAL because the implementation
|
|
||||||
directly accesses hardware registers and may not work as expected. USE
|
|
||||||
WITH CAUTION! To use this feature, you need to supply the
|
|
||||||
experimental=1 parameter when loading the module.
|
|
||||||
|
|
||||||
This feature allows volume control on ThinkPad models which don't have
|
This feature allows volume control on ThinkPad models which don't have
|
||||||
a hardware volume knob. The available commands are:
|
a hardware volume knob. The available commands are:
|
||||||
|
@ -611,6 +569,23 @@ with the following command:
|
||||||
|
|
||||||
echo 'level <level>' > /proc/acpi/ibm/thermal
|
echo 'level <level>' > /proc/acpi/ibm/thermal
|
||||||
|
|
||||||
|
EXPERIMENTAL: WAN -- /proc/acpi/ibm/wan
|
||||||
|
---------------------------------------
|
||||||
|
|
||||||
|
This feature is marked EXPERIMENTAL because the implementation
|
||||||
|
directly accesses hardware registers and may not work as expected. USE
|
||||||
|
WITH CAUTION! To use this feature, you need to supply the
|
||||||
|
experimental=1 parameter when loading the module.
|
||||||
|
|
||||||
|
This feature shows the presence and current state of a WAN (Sierra
|
||||||
|
Wireless EV-DO) device. If WAN is installed, the following commands can
|
||||||
|
be used:
|
||||||
|
|
||||||
|
echo enable > /proc/acpi/ibm/wan
|
||||||
|
echo disable > /proc/acpi/ibm/wan
|
||||||
|
|
||||||
|
It was tested on a Lenovo Thinkpad X60. It should probably work on other
|
||||||
|
Thinkpad models which come with this module installed.
|
||||||
|
|
||||||
Multiple Commands, Module Parameters
|
Multiple Commands, Module Parameters
|
||||||
------------------------------------
|
------------------------------------
|
||||||
|
|
|
@ -3,20 +3,37 @@ xpad - Linux USB driver for X-Box gamepads
|
||||||
This is the very first release of a driver for X-Box gamepads.
|
This is the very first release of a driver for X-Box gamepads.
|
||||||
Basically, this was hacked away in just a few hours, so don't expect
|
Basically, this was hacked away in just a few hours, so don't expect
|
||||||
miracles.
|
miracles.
|
||||||
|
|
||||||
In particular, there is currently NO support for the rumble pack.
|
In particular, there is currently NO support for the rumble pack.
|
||||||
You won't find many ff-aware linux applications anyway.
|
You won't find many ff-aware linux applications anyway.
|
||||||
|
|
||||||
|
|
||||||
0. Status
|
0. Notes
|
||||||
---------
|
--------
|
||||||
|
|
||||||
For now, this driver has only been tested on just one Linux-Box.
|
Driver updated for kernel 2.6.17.11. (Based on a patch for 2.6.11.4.)
|
||||||
This one is running a 2.4.18 kernel with usb-uhci on an amd athlon 600.
|
|
||||||
|
|
||||||
The jstest-program from joystick-1.2.15 (jstest-version 2.1.0) reports
|
The number of buttons/axes reported varies based on 3 things:
|
||||||
8 axes and 10 buttons.
|
- if you are using a known controller
|
||||||
|
- if you are using a known dance pad
|
||||||
|
- if using an unknown device (one not listed below), what you set in the
|
||||||
|
module configuration for "Map D-PAD to buttons rather than axes for unknown
|
||||||
|
pads" (module option dpad_to_buttons)
|
||||||
|
|
||||||
Alls 8 axes work, though they all have the same range (-32768..32767)
|
If you set dpad_to_buttons to 0 and you are using an unknown device (one
|
||||||
|
not listed below), the driver will map the directional pad to axes (X/Y),
|
||||||
|
if you said N it will map the d-pad to buttons, which is needed for dance
|
||||||
|
style games to function correctly. The default is Y.
|
||||||
|
|
||||||
|
dpad_to_buttons has no effect for known pads.
|
||||||
|
|
||||||
|
0.1 Normal Controllers
|
||||||
|
----------------------
|
||||||
|
With a normal controller, the directional pad is mapped to its own X/Y axes.
|
||||||
|
The jstest-program from joystick-1.2.15 (jstest-version 2.1.0) will report 8
|
||||||
|
axes and 10 buttons.
|
||||||
|
|
||||||
|
All 8 axes work, though they all have the same range (-32768..32767)
|
||||||
and the zero-setting is not correct for the triggers (I don't know if that
|
and the zero-setting is not correct for the triggers (I don't know if that
|
||||||
is some limitation of jstest, since the input device setup should be fine. I
|
is some limitation of jstest, since the input device setup should be fine. I
|
||||||
didn't have a look at jstest itself yet).
|
didn't have a look at jstest itself yet).
|
||||||
|
@ -30,16 +47,50 @@ in game functionality were OK. However, I find it rather difficult to
|
||||||
play first person shooters with a pad. Your mileage may vary.
|
play first person shooters with a pad. Your mileage may vary.
|
||||||
|
|
||||||
|
|
||||||
|
0.2 Xbox Dance Pads
|
||||||
|
-------------------
|
||||||
|
When using a known dance pad, jstest will report 6 axes and 14 buttons.
|
||||||
|
|
||||||
|
For dance style pads (like the redoctane pad) several changes
|
||||||
|
have been made. The old driver would map the d-pad to axes, resulting
|
||||||
|
in the driver being unable to report when the user was pressing both
|
||||||
|
left+right or up+down, making DDR style games unplayable.
|
||||||
|
|
||||||
|
Known dance pads automatically map the d-pad to buttons and will work
|
||||||
|
correctly out of the box.
|
||||||
|
|
||||||
|
If your dance pad is recognized by the driver but is using axes instead
|
||||||
|
of buttons, see section 0.3 - Unknown Controllers
|
||||||
|
|
||||||
|
I've tested this with Stepmania, and it works quite well.
|
||||||
|
|
||||||
|
|
||||||
|
0.3 Unkown Controllers
|
||||||
|
----------------------
|
||||||
|
If you have an unkown xbox controller, it should work just fine with
|
||||||
|
the default settings.
|
||||||
|
|
||||||
|
HOWEVER if you have an unknown dance pad not listed below, it will not
|
||||||
|
work UNLESS you set "dpad_to_buttons" to 1 in the module configuration.
|
||||||
|
|
||||||
|
PLEASE if you have an unkown controller, email Dom <binary1230@yahoo.com> with
|
||||||
|
a dump from /proc/bus/usb and a description of the pad (manufacturer, country,
|
||||||
|
whether it is a dance pad or normal controller) so that we can add your pad
|
||||||
|
to the list of supported devices, ensuring that it will work out of the
|
||||||
|
box in the future.
|
||||||
|
|
||||||
|
|
||||||
1. USB adapter
|
1. USB adapter
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
Before you can actually use the driver, you need to get yourself an
|
Before you can actually use the driver, you need to get yourself an
|
||||||
adapter cable to connect the X-Box controller to your Linux-Box.
|
adapter cable to connect the X-Box controller to your Linux-Box. You
|
||||||
|
can buy these online fairly cheap, or build your own.
|
||||||
|
|
||||||
Such a cable is pretty easy to build. The Controller itself is a USB compound
|
Such a cable is pretty easy to build. The Controller itself is a USB
|
||||||
device (a hub with three ports for two expansion slots and the controller
|
compound device (a hub with three ports for two expansion slots and
|
||||||
device) with the only difference in a nonstandard connector (5 pins vs. 4 on
|
the controller device) with the only difference in a nonstandard connector
|
||||||
standard USB connector).
|
(5 pins vs. 4 on standard USB connector).
|
||||||
|
|
||||||
You just need to solder a USB connector onto the cable and keep the
|
You just need to solder a USB connector onto the cable and keep the
|
||||||
yellow wire unconnected. The other pins have the same order on both
|
yellow wire unconnected. The other pins have the same order on both
|
||||||
|
@ -51,36 +102,36 @@ original one. You can buy an extension cable and cut that instead. That way,
|
||||||
you can still use the controller with your X-Box, if you have one ;)
|
you can still use the controller with your X-Box, if you have one ;)
|
||||||
|
|
||||||
|
|
||||||
2. driver installation
|
2. Driver Installation
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
Once you have the adapter cable and the controller is connected, you need
|
Once you have the adapter cable and the controller is connected, you need
|
||||||
to load your USB subsystem and should cat /proc/bus/usb/devices.
|
to load your USB subsystem and should cat /proc/bus/usb/devices.
|
||||||
There should be an entry like the one at the end [4].
|
There should be an entry like the one at the end [4].
|
||||||
|
|
||||||
Currently (as of version 0.0.4), the following three devices are included:
|
Currently (as of version 0.0.6), the following devices are included:
|
||||||
original Microsoft XBOX controller (US), vendor=0x045e, product=0x0202
|
original Microsoft XBOX controller (US), vendor=0x045e, product=0x0202
|
||||||
|
smaller Microsoft XBOX controller (US), vendor=0x045e, product=0x0289
|
||||||
original Microsoft XBOX controller (Japan), vendor=0x045e, product=0x0285
|
original Microsoft XBOX controller (Japan), vendor=0x045e, product=0x0285
|
||||||
InterAct PowerPad Pro (Germany), vendor=0x05fd, product=0x107a
|
InterAct PowerPad Pro (Germany), vendor=0x05fd, product=0x107a
|
||||||
|
RedOctane Xbox Dance Pad (US), vendor=0x0c12, product=0x8809
|
||||||
|
|
||||||
If you have another controller that is not listed above and is not recognized
|
The driver should work with xbox pads not listed above as well, however
|
||||||
by the driver, please drop me a line with the appropriate info (that is, include
|
you will need to do something extra for dance pads to work.
|
||||||
the name, vendor and product ID, as well as the country where you bought it;
|
|
||||||
sending the whole dump out of /proc/bus/usb/devices along would be even better).
|
|
||||||
|
|
||||||
In theory, the driver should work with other controllers than mine
|
If you have a controller not listed above, see 0.3 - Unknown Controllers
|
||||||
(InterAct PowerPad pro, bought in Germany) just fine, but I cannot test this
|
|
||||||
for I only have this one controller.
|
|
||||||
|
|
||||||
If you compiled and installed the driver, test the functionality:
|
If you compiled and installed the driver, test the functionality:
|
||||||
> modprobe xpad
|
> modprobe xpad
|
||||||
> modprobe joydev
|
> modprobe joydev
|
||||||
> jstest /dev/js0
|
> jstest /dev/js0
|
||||||
|
|
||||||
There should be a single line showing 18 inputs (8 axes, 10 buttons), and
|
If you're using a normal controller, there should be a single line showing
|
||||||
it's values should change if you move the sticks and push the buttons.
|
18 inputs (8 axes, 10 buttons), and its values should change if you move
|
||||||
|
the sticks and push the buttons. If you're using a dance pad, it should
|
||||||
|
show 20 inputs (6 axes, 14 buttons).
|
||||||
|
|
||||||
It works? Voila, your done ;)
|
It works? Voila, you're done ;)
|
||||||
|
|
||||||
|
|
||||||
3. Thanks
|
3. Thanks
|
||||||
|
@ -111,6 +162,22 @@ I: If#= 0 Alt= 0 #EPs= 2 Cls=58(unk. ) Sub=42 Prot=00 Driver=(none)
|
||||||
E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl= 10ms
|
E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl= 10ms
|
||||||
E: Ad=02(O) Atr=03(Int.) MxPS= 32 Ivl= 10ms
|
E: Ad=02(O) Atr=03(Int.) MxPS= 32 Ivl= 10ms
|
||||||
|
|
||||||
|
5. /proc/bus/usb/devices - dump from Redoctane Xbox Dance Pad (US):
|
||||||
|
|
||||||
|
T: Bus=01 Lev=02 Prnt=09 Port=00 Cnt=01 Dev#= 10 Spd=12 MxCh= 0
|
||||||
|
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
|
||||||
|
P: Vendor=0c12 ProdID=8809 Rev= 0.01
|
||||||
|
S: Product=XBOX DDR
|
||||||
|
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=100mA
|
||||||
|
I: If#= 0 Alt= 0 #EPs= 2 Cls=58(unk. ) Sub=42 Prot=00 Driver=xpad
|
||||||
|
E: Ad=82(I) Atr=03(Int.) MxPS= 32 Ivl=4ms
|
||||||
|
E: Ad=02(O) Atr=03(Int.) MxPS= 32 Ivl=4ms
|
||||||
|
|
||||||
--
|
--
|
||||||
Marko Friedemann <mfr@bmx-chemnitz.de>
|
Marko Friedemann <mfr@bmx-chemnitz.de>
|
||||||
2002-07-16
|
2002-07-16
|
||||||
|
- original doc
|
||||||
|
|
||||||
|
Dominic Cerquetti <binary1230@yahoo.com>
|
||||||
|
2005-03-19
|
||||||
|
- added stuff for dance pads, new d-pad->axes mappings
|
||||||
|
|
|
@ -17,7 +17,7 @@ are:
|
||||||
special place-holders for where the extracted documentation should
|
special place-holders for where the extracted documentation should
|
||||||
go.
|
go.
|
||||||
|
|
||||||
- scripts/docproc.c
|
- scripts/basic/docproc.c
|
||||||
|
|
||||||
This is a program for converting SGML template files into SGML
|
This is a program for converting SGML template files into SGML
|
||||||
files. When a file is referenced it is searched for symbols
|
files. When a file is referenced it is searched for symbols
|
||||||
|
|
|
@ -164,6 +164,10 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
acpi_skip_timer_override [HW,ACPI]
|
acpi_skip_timer_override [HW,ACPI]
|
||||||
Recognize and ignore IRQ0/pin2 Interrupt Override.
|
Recognize and ignore IRQ0/pin2 Interrupt Override.
|
||||||
For broken nForce2 BIOS resulting in XT-PIC timer.
|
For broken nForce2 BIOS resulting in XT-PIC timer.
|
||||||
|
acpi_use_timer_override [HW,ACPI}
|
||||||
|
Use timer override. For some broken Nvidia NF5 boards
|
||||||
|
that require a timer override, but don't have
|
||||||
|
HPET
|
||||||
|
|
||||||
acpi_dbg_layer= [HW,ACPI]
|
acpi_dbg_layer= [HW,ACPI]
|
||||||
Format: <int>
|
Format: <int>
|
||||||
|
@ -1231,6 +1235,11 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
machine check when some devices' config space
|
machine check when some devices' config space
|
||||||
is read. But various workarounds are disabled
|
is read. But various workarounds are disabled
|
||||||
and some IOMMU drivers will not work.
|
and some IOMMU drivers will not work.
|
||||||
|
bfsort Sort PCI devices into breadth-first order.
|
||||||
|
This sorting is done to get a device
|
||||||
|
order compatible with older (<= 2.4) kernels.
|
||||||
|
nobfsort Don't sort PCI devices into breadth-first order.
|
||||||
|
|
||||||
pcmv= [HW,PCMCIA] BadgePAD 4
|
pcmv= [HW,PCMCIA] BadgePAD 4
|
||||||
|
|
||||||
pd. [PARIDE]
|
pd. [PARIDE]
|
||||||
|
|
|
@ -442,9 +442,10 @@ static int __init kprobe_init(void)
|
||||||
kp.fault_handler = handler_fault;
|
kp.fault_handler = handler_fault;
|
||||||
kp.symbol_name = "do_fork";
|
kp.symbol_name = "do_fork";
|
||||||
|
|
||||||
if ((ret = register_kprobe(&kp) < 0)) {
|
ret = register_kprobe(&kp);
|
||||||
|
if (ret < 0) {
|
||||||
printk("register_kprobe failed, returned %d\n", ret);
|
printk("register_kprobe failed, returned %d\n", ret);
|
||||||
return -1;
|
return ret;
|
||||||
}
|
}
|
||||||
printk("kprobe registered\n");
|
printk("kprobe registered\n");
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -50,10 +50,10 @@ The bit position indicates hardirq, softirq, hardirq-read,
|
||||||
softirq-read respectively, and the character displayed in each
|
softirq-read respectively, and the character displayed in each
|
||||||
indicates:
|
indicates:
|
||||||
|
|
||||||
'.' acquired while irqs enabled
|
'.' acquired while irqs disabled
|
||||||
'+' acquired in irq context
|
'+' acquired in irq context
|
||||||
'-' acquired in process context with irqs disabled
|
'-' acquired with irqs enabled
|
||||||
'?' read-acquired both with irqs enabled and in irq context
|
'?' read acquired in irq context with irqs enabled.
|
||||||
|
|
||||||
Unused mutexes cannot be part of the cause of an error.
|
Unused mutexes cannot be part of the cause of an error.
|
||||||
|
|
||||||
|
|
|
@ -1016,7 +1016,7 @@ There are some more advanced barrier functions:
|
||||||
|
|
||||||
(*) set_mb(var, value)
|
(*) set_mb(var, value)
|
||||||
|
|
||||||
This assigns the value to the variable and then inserts at least a write
|
This assigns the value to the variable and then inserts a full memory
|
||||||
barrier after it, depending on the function. It isn't guaranteed to
|
barrier after it, depending on the function. It isn't guaranteed to
|
||||||
insert anything more than a compiler barrier in a UP compilation.
|
insert anything more than a compiler barrier in a UP compilation.
|
||||||
|
|
||||||
|
@ -1898,7 +1898,7 @@ queue before processing any further requests:
|
||||||
smp_wmb();
|
smp_wmb();
|
||||||
<A:modify v=2> <C:busy>
|
<A:modify v=2> <C:busy>
|
||||||
<C:queue v=2>
|
<C:queue v=2>
|
||||||
p = &b; q = p;
|
p = &v; q = p;
|
||||||
<D:request p>
|
<D:request p>
|
||||||
<B:modify p=&v> <D:commit p=&v>
|
<B:modify p=&v> <D:commit p=&v>
|
||||||
<D:read p>
|
<D:read p>
|
||||||
|
|
|
@ -38,19 +38,14 @@ The new time code provide the following services:
|
||||||
|
|
||||||
a) Implements functions required by Linux common code:
|
a) Implements functions required by Linux common code:
|
||||||
time_init
|
time_init
|
||||||
do_gettimeofday
|
|
||||||
do_settimeofday
|
|
||||||
|
|
||||||
b) provides an abstraction of RTC and null RTC implementation as default.
|
b) provides an abstraction of RTC and null RTC implementation as default.
|
||||||
extern unsigned long (*rtc_get_time)(void);
|
extern unsigned long (*rtc_get_time)(void);
|
||||||
extern int (*rtc_set_time)(unsigned long);
|
extern int (*rtc_set_time)(unsigned long);
|
||||||
|
|
||||||
c) a set of gettimeoffset functions for different CPUs and different
|
c) high-level and low-level timer interrupt routines where the timer
|
||||||
needs.
|
interrupt source may or may not be the CPU timer. The high-level
|
||||||
|
routine is dispatched through do_IRQ() while the low-level is
|
||||||
d) high-level and low-level timer interrupt routines where the timer
|
|
||||||
interrupt source may or may not be the CPU timer. The high-level
|
|
||||||
routine is dispatched through do_IRQ() while the low-level is
|
|
||||||
dispatched in assemably code (usually int-handler.S)
|
dispatched in assemably code (usually int-handler.S)
|
||||||
|
|
||||||
|
|
||||||
|
@ -63,7 +58,7 @@ the following functions or values:
|
||||||
a) board_time_init - a function pointer. Invoked at the beginnig of
|
a) board_time_init - a function pointer. Invoked at the beginnig of
|
||||||
time_init(). It is optional.
|
time_init(). It is optional.
|
||||||
1. (optional) set up RTC routines
|
1. (optional) set up RTC routines
|
||||||
2. (optional) calibrate and set the mips_counter_frequency
|
2. (optional) calibrate and set the mips_hpt_frequency
|
||||||
|
|
||||||
b) plat_timer_setup - a function pointer. Invoked at the end of time_init()
|
b) plat_timer_setup - a function pointer. Invoked at the end of time_init()
|
||||||
1. (optional) over-ride any decisions made in time_init()
|
1. (optional) over-ride any decisions made in time_init()
|
||||||
|
@ -72,9 +67,8 @@ the following functions or values:
|
||||||
|
|
||||||
c) (optional) board-specific RTC routines.
|
c) (optional) board-specific RTC routines.
|
||||||
|
|
||||||
d) (optional) mips_counter_frequency - It must be definied if the board
|
d) (optional) mips_hpt_frequency - It must be definied if the board
|
||||||
is using CPU counter for timer interrupt or it is using fixed rate
|
is using CPU counter for timer interrupt.
|
||||||
gettimeoffset().
|
|
||||||
|
|
||||||
|
|
||||||
PORTING GUIDE
|
PORTING GUIDE
|
||||||
|
@ -89,22 +83,12 @@ Step 1: decide how you like to implement the time services.
|
||||||
If the answer is no, you need a timer to provide the timer interrupt
|
If the answer is no, you need a timer to provide the timer interrupt
|
||||||
at 100 HZ speed.
|
at 100 HZ speed.
|
||||||
|
|
||||||
You cannot use the fast gettimeoffset functions, i.e.,
|
|
||||||
|
|
||||||
unsigned long fixed_rate_gettimeoffset(void);
|
|
||||||
unsigned long calibrate_div32_gettimeoffset(void);
|
|
||||||
unsigned long calibrate_div64_gettimeoffset(void);
|
|
||||||
|
|
||||||
You can use null_gettimeoffset() will gives the same time resolution as
|
|
||||||
jiffy. Or you can implement your own gettimeoffset (probably based on
|
|
||||||
some ad hoc hardware on your machine.)
|
|
||||||
|
|
||||||
c) The following sub steps assume your CPU has counter register.
|
c) The following sub steps assume your CPU has counter register.
|
||||||
Do you plan to use the CPU counter register as the timer interrupt
|
Do you plan to use the CPU counter register as the timer interrupt
|
||||||
or use an exnternal timer?
|
or use an exnternal timer?
|
||||||
|
|
||||||
In order to use CPU counter register as the timer interrupt source, you
|
In order to use CPU counter register as the timer interrupt source, you
|
||||||
must know the counter speed (mips_counter_frequency). It is usually the
|
must know the counter speed (mips_hpt_frequency). It is usually the
|
||||||
same as the CPU speed or an integral divisor of it.
|
same as the CPU speed or an integral divisor of it.
|
||||||
|
|
||||||
d) decide on whether you want to use high-level or low-level timer
|
d) decide on whether you want to use high-level or low-level timer
|
||||||
|
@ -121,10 +105,10 @@ Step 3: implement rtc routines, board_time_init() and plat_timer_setup()
|
||||||
if needed.
|
if needed.
|
||||||
|
|
||||||
board_time_init() -
|
board_time_init() -
|
||||||
a) (optional) set up RTC routines,
|
a) (optional) set up RTC routines,
|
||||||
b) (optional) calibrate and set the mips_counter_frequency
|
b) (optional) calibrate and set the mips_hpt_frequency
|
||||||
(only needed if you intended to use fixed_rate_gettimeoffset
|
(only needed if you intended to use cpu counter as timer interrupt
|
||||||
or use cpu counter as timer interrupt source)
|
source)
|
||||||
|
|
||||||
plat_timer_setup() -
|
plat_timer_setup() -
|
||||||
a) (optional) over-write any choices made above by time_init().
|
a) (optional) over-write any choices made above by time_init().
|
||||||
|
@ -154,8 +138,8 @@ for some of the functions in time.c.
|
||||||
For example, you may define your own timer interrupt routine, which does
|
For example, you may define your own timer interrupt routine, which does
|
||||||
some of its own processing and then calls timer_interrupt().
|
some of its own processing and then calls timer_interrupt().
|
||||||
|
|
||||||
You can also over-ride any of the built-in functions (gettimeoffset,
|
You can also over-ride any of the built-in functions (RTC routines
|
||||||
RTC routines and/or timer interrupt routine).
|
and/or timer interrupt routine).
|
||||||
|
|
||||||
|
|
||||||
PORTING NOTES FOR SMP
|
PORTING NOTES FOR SMP
|
||||||
|
@ -187,10 +171,3 @@ You need to decide on your timer interrupt sources.
|
||||||
|
|
||||||
You can also do the low-level version of those interrupt routines,
|
You can also do the low-level version of those interrupt routines,
|
||||||
following similar dispatching routes described above.
|
following similar dispatching routes described above.
|
||||||
|
|
||||||
Note about do_gettimeoffset():
|
|
||||||
|
|
||||||
It is very likely the CPU counter registers are not sync'ed up in a SMP box.
|
|
||||||
Therefore you cannot really use the many of the existing routines that
|
|
||||||
are based on CPU counter. You should wirte your own gettimeoffset rouinte
|
|
||||||
if you want intra-jiffy resolution.
|
|
||||||
|
|
|
@ -30,6 +30,17 @@ testing). The system will support either 'firmware' or 'platform', and
|
||||||
that is known a priori. But, the user may choose 'shutdown' or
|
that is known a priori. But, the user may choose 'shutdown' or
|
||||||
'reboot' as alternatives.
|
'reboot' as alternatives.
|
||||||
|
|
||||||
|
Additionally, /sys/power/disk can be used to turn on one of the two testing
|
||||||
|
modes of the suspend-to-disk mechanism: 'testproc' or 'test'. If the
|
||||||
|
suspend-to-disk mechanism is in the 'testproc' mode, writing 'disk' to
|
||||||
|
/sys/power/state will cause the kernel to disable nonboot CPUs and freeze
|
||||||
|
tasks, wait for 5 seconds, unfreeze tasks and enable nonboot CPUs. If it is
|
||||||
|
in the 'test' mode, writing 'disk' to /sys/power/state will cause the kernel
|
||||||
|
to disable nonboot CPUs and freeze tasks, shrink memory, suspend devices, wait
|
||||||
|
for 5 seconds, resume devices, unfreeze tasks and enable nonboot CPUs. Then,
|
||||||
|
we are able to look in the log messages and work out, for example, which code
|
||||||
|
is being slow and which device drivers are misbehaving.
|
||||||
|
|
||||||
Reading from this file will display what the mode is currently set
|
Reading from this file will display what the mode is currently set
|
||||||
to. Writing to this file will accept one of
|
to. Writing to this file will accept one of
|
||||||
|
|
||||||
|
@ -37,6 +48,8 @@ to. Writing to this file will accept one of
|
||||||
'platform'
|
'platform'
|
||||||
'shutdown'
|
'shutdown'
|
||||||
'reboot'
|
'reboot'
|
||||||
|
'testproc'
|
||||||
|
'test'
|
||||||
|
|
||||||
It will only change to 'firmware' or 'platform' if the system supports
|
It will only change to 'firmware' or 'platform' if the system supports
|
||||||
it.
|
it.
|
||||||
|
|
|
@ -66,7 +66,7 @@ Command line parameters
|
||||||
|
|
||||||
When a device is un-ignored, device recognition and sensing is performed and
|
When a device is un-ignored, device recognition and sensing is performed and
|
||||||
the device driver will be notified if possible, so the device will become
|
the device driver will be notified if possible, so the device will become
|
||||||
available to the system.
|
available to the system. Note that un-ignoring is performed asynchronously.
|
||||||
|
|
||||||
You can also add ranges of devices to be ignored by piping to
|
You can also add ranges of devices to be ignored by piping to
|
||||||
/proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
|
/proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
|
||||||
|
|
|
@ -174,14 +174,10 @@ read_dev_chars() - Read Device Characteristics
|
||||||
|
|
||||||
This routine returns the characteristics for the device specified.
|
This routine returns the characteristics for the device specified.
|
||||||
|
|
||||||
The function is meant to be called with an irq handler in place; that is,
|
The function is meant to be called with the device already enabled; that is,
|
||||||
at earliest during set_online() processing.
|
at earliest during set_online() processing.
|
||||||
|
|
||||||
While the request is processed synchronously, the device interrupt
|
The ccw_device must not be locked prior to calling read_dev_chars().
|
||||||
handler is called for final ending status. In case of error situations the
|
|
||||||
interrupt handler may recover appropriately. The device irq handler can
|
|
||||||
recognize the corresponding interrupts by the interruption parameter be
|
|
||||||
0x00524443. The ccw_device must not be locked prior to calling read_dev_chars().
|
|
||||||
|
|
||||||
The function may be called enabled or disabled.
|
The function may be called enabled or disabled.
|
||||||
|
|
||||||
|
@ -410,26 +406,7 @@ individual flag meanings.
|
||||||
|
|
||||||
Usage Notes :
|
Usage Notes :
|
||||||
|
|
||||||
Prior to call ccw_device_start() the device driver must assure disabled state,
|
ccw_device_start() must be called disabled and with the ccw device lock held.
|
||||||
i.e. the I/O mask value in the PSW must be disabled. This can be accomplished
|
|
||||||
by calling local_save_flags( flags). The current PSW flags are preserved and
|
|
||||||
can be restored by local_irq_restore( flags) at a later time.
|
|
||||||
|
|
||||||
If the device driver violates this rule while running in a uni-processor
|
|
||||||
environment an interrupt might be presented prior to the ccw_device_start()
|
|
||||||
routine returning to the device driver main path. In this case we will end in a
|
|
||||||
deadlock situation as the interrupt handler will try to obtain the irq
|
|
||||||
lock the device driver still owns (see below) !
|
|
||||||
|
|
||||||
The driver must assure to hold the device specific lock. This can be
|
|
||||||
accomplished by
|
|
||||||
|
|
||||||
(i) spin_lock(get_ccwdev_lock(cdev)), or
|
|
||||||
(ii) spin_lock_irqsave(get_ccwdev_lock(cdev), flags)
|
|
||||||
|
|
||||||
Option (i) should be used if the calling routine is running disabled for
|
|
||||||
I/O interrupts (see above) already. Option (ii) obtains the device gate und
|
|
||||||
puts the CPU into I/O disabled state by preserving the current PSW flags.
|
|
||||||
|
|
||||||
The device driver is allowed to issue the next ccw_device_start() call from
|
The device driver is allowed to issue the next ccw_device_start() call from
|
||||||
within its interrupt handler already. It is not required to schedule a
|
within its interrupt handler already. It is not required to schedule a
|
||||||
|
@ -488,7 +465,7 @@ int ccw_device_resume(struct ccw_device *cdev);
|
||||||
|
|
||||||
cdev - ccw_device the resume operation is requested for
|
cdev - ccw_device the resume operation is requested for
|
||||||
|
|
||||||
The resume_IO() function returns:
|
The ccw_device_resume() function returns:
|
||||||
|
|
||||||
0 - suspended channel program is resumed
|
0 - suspended channel program is resumed
|
||||||
-EBUSY - status pending
|
-EBUSY - status pending
|
||||||
|
@ -507,6 +484,8 @@ a long-running channel program or the device might require to initially issue
|
||||||
a halt subchannel (HSCH) I/O command. For those purposes the ccw_device_halt()
|
a halt subchannel (HSCH) I/O command. For those purposes the ccw_device_halt()
|
||||||
command is provided.
|
command is provided.
|
||||||
|
|
||||||
|
ccw_device_halt() must be called disabled and with the ccw device lock held.
|
||||||
|
|
||||||
int ccw_device_halt(struct ccw_device *cdev,
|
int ccw_device_halt(struct ccw_device *cdev,
|
||||||
unsigned long intparm);
|
unsigned long intparm);
|
||||||
|
|
||||||
|
@ -517,7 +496,7 @@ intparm : interruption parameter; value is only used if no I/O
|
||||||
|
|
||||||
The ccw_device_halt() function returns :
|
The ccw_device_halt() function returns :
|
||||||
|
|
||||||
0 - successful completion or request successfully initiated
|
0 - request successfully initiated
|
||||||
-EBUSY - the device is currently busy, or status pending.
|
-EBUSY - the device is currently busy, or status pending.
|
||||||
-ENODEV - cdev invalid.
|
-ENODEV - cdev invalid.
|
||||||
-EINVAL - The device is not operational or the ccw device is not online.
|
-EINVAL - The device is not operational or the ccw device is not online.
|
||||||
|
@ -533,6 +512,23 @@ can then perform an appropriate action. Prior to interrupt of an outstanding
|
||||||
read to a network device (with or without PCI flag) a ccw_device_halt()
|
read to a network device (with or without PCI flag) a ccw_device_halt()
|
||||||
is required to end the pending operation.
|
is required to end the pending operation.
|
||||||
|
|
||||||
|
ccw_device_clear() - Terminage I/O Request Processing
|
||||||
|
|
||||||
|
In order to terminate all I/O processing at the subchannel, the clear subchannel
|
||||||
|
(CSCH) command is used. It can be issued via ccw_device_clear().
|
||||||
|
|
||||||
|
ccw_device_clear() must be called disabled and with the ccw device lock held.
|
||||||
|
|
||||||
|
int ccw_device_clear(struct ccw_device *cdev, unsigned long intparm);
|
||||||
|
|
||||||
|
cdev: ccw_device the clear operation is requested for
|
||||||
|
intparm: interruption parameter (see ccw_device_halt())
|
||||||
|
|
||||||
|
The ccw_device_clear() function returns:
|
||||||
|
|
||||||
|
0 - request successfully initiated
|
||||||
|
-ENODEV - cdev invalid
|
||||||
|
-EINVAL - The device is not operational or the ccw device is not online.
|
||||||
|
|
||||||
Miscellaneous Support Routines
|
Miscellaneous Support Routines
|
||||||
|
|
||||||
|
|
|
@ -239,6 +239,9 @@ status - Can be 'online' or 'offline'.
|
||||||
|
|
||||||
type - The physical type of the channel path.
|
type - The physical type of the channel path.
|
||||||
|
|
||||||
|
shared - Whether the channel path is shared.
|
||||||
|
|
||||||
|
cmg - The channel measurement group.
|
||||||
|
|
||||||
3. System devices
|
3. System devices
|
||||||
-----------------
|
-----------------
|
||||||
|
|
|
@ -753,7 +753,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)
|
position_fix - Fix DMA pointer (0 = auto, 1 = none, 2 = POSBUF, 3 = FIFO size)
|
||||||
single_cmd - Use single immediate commands to communicate with
|
single_cmd - Use single immediate commands to communicate with
|
||||||
codecs (for debugging only)
|
codecs (for debugging only)
|
||||||
disable_msi - Disable Message Signaled Interrupt (MSI)
|
enable_msi - Enable Message Signaled Interrupt (MSI) (default = off)
|
||||||
|
|
||||||
This module supports one card and autoprobe.
|
This module supports one card and autoprobe.
|
||||||
|
|
||||||
|
|
|
@ -86,7 +86,7 @@ valid for 30 seconds.
|
||||||
core_pattern:
|
core_pattern:
|
||||||
|
|
||||||
core_pattern is used to specify a core dumpfile pattern name.
|
core_pattern is used to specify a core dumpfile pattern name.
|
||||||
. max length 64 characters; default value is "core"
|
. max length 128 characters; default value is "core"
|
||||||
. core_pattern is used as a pattern template for the output filename;
|
. core_pattern is used as a pattern template for the output filename;
|
||||||
certain string patterns (beginning with '%') are substituted with
|
certain string patterns (beginning with '%') are substituted with
|
||||||
their actual values.
|
their actual values.
|
||||||
|
@ -105,6 +105,9 @@ core_pattern is used to specify a core dumpfile pattern name.
|
||||||
%h hostname
|
%h hostname
|
||||||
%e executable filename
|
%e executable filename
|
||||||
%<OTHER> both are dropped
|
%<OTHER> both are dropped
|
||||||
|
. If the first character of the pattern is a '|', the kernel will treat
|
||||||
|
the rest of the pattern as a command to run. The core dump will be
|
||||||
|
written to the standard input of that program instead of to a file.
|
||||||
|
|
||||||
==============================================================
|
==============================================================
|
||||||
|
|
||||||
|
|
|
@ -428,12 +428,6 @@ Options supported:
|
||||||
See http://www.uuhaus.de/linux/palmconnect.html for up-to-date
|
See http://www.uuhaus.de/linux/palmconnect.html for up-to-date
|
||||||
information on this driver.
|
information on this driver.
|
||||||
|
|
||||||
AIRcable USB Dongle Bluetooth driver
|
|
||||||
If there is the cdc_acm driver loaded in the system, you will find that the
|
|
||||||
cdc_acm claims the device before AIRcable can. This is simply corrected
|
|
||||||
by unloading both modules and then loading the aircable module before
|
|
||||||
cdc_acm module
|
|
||||||
|
|
||||||
Generic Serial driver
|
Generic Serial driver
|
||||||
|
|
||||||
If your device is not one of the above listed devices, compatible with
|
If your device is not one of the above listed devices, compatible with
|
||||||
|
|
|
@ -51,7 +51,7 @@
|
||||||
50 -> NPG Tech Real TV FM Top 10 [14f1:0842]
|
50 -> NPG Tech Real TV FM Top 10 [14f1:0842]
|
||||||
51 -> WinFast DTV2000 H [107d:665e]
|
51 -> WinFast DTV2000 H [107d:665e]
|
||||||
52 -> Geniatech DVB-S [14f1:0084]
|
52 -> Geniatech DVB-S [14f1:0084]
|
||||||
53 -> Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T [0070:1404]
|
53 -> Hauppauge WinTV-HVR3000 TriMode Analog/DVB-S/DVB-T [0070:1404,0070:1400,0070:1401,0070:1402]
|
||||||
54 -> Norwood Micro TV Tuner
|
54 -> Norwood Micro TV Tuner
|
||||||
55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980]
|
55 -> Shenzhen Tungsten Ages Tech TE-DTV-250 / Swann OEM [c180:c980]
|
||||||
56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602]
|
56 -> Hauppauge WinTV-HVR1300 DVB-T/Hybrid MPEG Encoder [0070:9600,0070:9601,0070:9602]
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
|
||||||
int main(int argc, const char *argv[]) {
|
int main(int argc, const char *argv[]) {
|
||||||
|
|
52
MAINTAINERS
52
MAINTAINERS
|
@ -493,7 +493,7 @@ S: Maintained
|
||||||
|
|
||||||
BFS FILE SYSTEM
|
BFS FILE SYSTEM
|
||||||
P: Tigran A. Aivazian
|
P: Tigran A. Aivazian
|
||||||
M: tigran@veritas.com
|
M: tigran@aivazian.fsnet.co.uk
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
@ -905,7 +905,8 @@ P: David Teigland
|
||||||
M: teigland@redhat.com
|
M: teigland@redhat.com
|
||||||
L: cluster-devel@redhat.com
|
L: cluster-devel@redhat.com
|
||||||
W: http://sources.redhat.com/cluster/
|
W: http://sources.redhat.com/cluster/
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
|
DAVICOM FAST ETHERNET (DMFE) NETWORK DRIVER
|
||||||
|
@ -1188,7 +1189,8 @@ P: Steven Whitehouse
|
||||||
M: swhiteho@redhat.com
|
M: swhiteho@redhat.com
|
||||||
L: cluster-devel@redhat.com
|
L: cluster-devel@redhat.com
|
||||||
W: http://sources.redhat.com/cluster/
|
W: http://sources.redhat.com/cluster/
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs-2.6.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-fixes.git
|
||||||
|
T: git kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw.git
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
GIGASET ISDN DRIVERS
|
GIGASET ISDN DRIVERS
|
||||||
|
@ -1511,7 +1513,7 @@ S: Maintained
|
||||||
|
|
||||||
INTEL IA32 MICROCODE UPDATE SUPPORT
|
INTEL IA32 MICROCODE UPDATE SUPPORT
|
||||||
P: Tigran Aivazian
|
P: Tigran Aivazian
|
||||||
M: tigran@veritas.com
|
M: tigran@aivazian.fsnet.co.uk
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
|
INTEL IXP4XX RANDOM NUMBER GENERATOR SUPPORT
|
||||||
|
@ -1666,6 +1668,12 @@ M: sct@redhat.com, akpm@osdl.org
|
||||||
L: ext2-devel@lists.sourceforge.net
|
L: ext2-devel@lists.sourceforge.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
K8TEMP HARDWARE MONITORING DRIVER
|
||||||
|
P: Rudolf Marek
|
||||||
|
M: r.marek@assembler.cz
|
||||||
|
L: lm-sensors@lm-sensors.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
KCONFIG
|
KCONFIG
|
||||||
P: Roman Zippel
|
P: Roman Zippel
|
||||||
M: zippel@linux-m68k.org
|
M: zippel@linux-m68k.org
|
||||||
|
@ -1996,6 +2004,13 @@ M: rubini@ipvvis.unipv.it
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
MSI LAPTOP SUPPORT
|
||||||
|
P: Lennart Poettering
|
||||||
|
M: mzxreary@0pointer.de
|
||||||
|
L: https://tango.0pointer.de/mailman/listinfo/s270-linux
|
||||||
|
W: http://0pointer.de/lennart/tchibo.html
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
MTRR AND SIMILAR SUPPORT [i386]
|
MTRR AND SIMILAR SUPPORT [i386]
|
||||||
P: Richard Gooch
|
P: Richard Gooch
|
||||||
M: rgooch@atnf.csiro.au
|
M: rgooch@atnf.csiro.au
|
||||||
|
@ -2003,8 +2018,11 @@ L: linux-kernel@vger.kernel.org
|
||||||
W: http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html
|
W: http://www.atnf.csiro.au/~rgooch/linux/kernel-patches.html
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
MULTIMEDIA CARD (MMC) SUBSYSTEM
|
MULTIMEDIA CARD (MMC) AND SECURE DIGITAL (SD) SUBSYSTEM
|
||||||
S: Orphan
|
P: Pierre Ossman
|
||||||
|
M: drzeus-mmc@drzeus.cx
|
||||||
|
L: linux-kernel@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
MULTISOUND SOUND DRIVER
|
MULTISOUND SOUND DRIVER
|
||||||
P: Andrew Veliath
|
P: Andrew Veliath
|
||||||
|
@ -2040,11 +2058,13 @@ P: Marc Boucher
|
||||||
P: James Morris
|
P: James Morris
|
||||||
P: Harald Welte
|
P: Harald Welte
|
||||||
P: Jozsef Kadlecsik
|
P: Jozsef Kadlecsik
|
||||||
M: coreteam@netfilter.org
|
P: Patrick McHardy
|
||||||
|
M: kaber@trash.net
|
||||||
|
L: netfilter-devel@lists.netfilter.org
|
||||||
|
L: netfilter@lists.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/
|
||||||
L: netfilter@lists.netfilter.org
|
|
||||||
L: netfilter-devel@lists.netfilter.org
|
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
NETLABEL
|
NETLABEL
|
||||||
|
@ -2295,8 +2315,8 @@ T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
PCI HOTPLUG CORE
|
PCI HOTPLUG CORE
|
||||||
P: Greg Kroah-Hartman
|
P: Kristen Carlson Accardi
|
||||||
M: gregkh@suse.de
|
M: kristen.c.accardi@intel.com
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
PCI HOTPLUG COMPAQ DRIVER
|
PCI HOTPLUG COMPAQ DRIVER
|
||||||
|
@ -3052,6 +3072,13 @@ L: video4linux-list@redhat.com
|
||||||
W: http://www.linux-projects.org
|
W: http://www.linux-projects.org
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
USB GADGET/PERIPHERAL SUBSYSTEM
|
||||||
|
P: David Brownell
|
||||||
|
M: dbrownell@users.sourceforge.net
|
||||||
|
L: linux-usb-devel@lists.sourceforge.net
|
||||||
|
W: http://www.linux-usb.org/gadget
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
USB HID/HIDBP DRIVERS
|
USB HID/HIDBP DRIVERS
|
||||||
P: Vojtech Pavlik
|
P: Vojtech Pavlik
|
||||||
M: vojtech@suse.cz
|
M: vojtech@suse.cz
|
||||||
|
@ -3235,10 +3262,11 @@ L: linux-usb-users@lists.sourceforge.net
|
||||||
L: linux-usb-devel@lists.sourceforge.net
|
L: linux-usb-devel@lists.sourceforge.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
USB "USBNET" DRIVER
|
USB "USBNET" DRIVER FRAMEWORK
|
||||||
P: David Brownell
|
P: David Brownell
|
||||||
M: dbrownell@users.sourceforge.net
|
M: dbrownell@users.sourceforge.net
|
||||||
L: linux-usb-devel@lists.sourceforge.net
|
L: linux-usb-devel@lists.sourceforge.net
|
||||||
|
W: http://www.linux-usb.org/usbnet
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
USB W996[87]CF DRIVER
|
USB W996[87]CF DRIVER
|
||||||
|
|
11
Makefile
11
Makefile
|
@ -1,7 +1,7 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 19
|
SUBLEVEL = 19
|
||||||
EXTRAVERSION =-rc1
|
EXTRAVERSION =-rc6
|
||||||
NAME=Avast! A bilge rat!
|
NAME=Avast! A bilge rat!
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -499,6 +499,7 @@ endif
|
||||||
|
|
||||||
ifdef CONFIG_UNWIND_INFO
|
ifdef CONFIG_UNWIND_INFO
|
||||||
CFLAGS += -fasynchronous-unwind-tables
|
CFLAGS += -fasynchronous-unwind-tables
|
||||||
|
LDFLAGS_vmlinux += --eh-frame-hdr
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef CONFIG_DEBUG_INFO
|
ifdef CONFIG_DEBUG_INFO
|
||||||
|
@ -741,6 +742,9 @@ endif # ifdef CONFIG_KALLSYMS
|
||||||
|
|
||||||
# vmlinux image - including updated kernel symbols
|
# vmlinux image - including updated kernel symbols
|
||||||
vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
|
vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
|
||||||
|
ifdef CONFIG_HEADERS_CHECK
|
||||||
|
$(Q)$(MAKE) -f $(srctree)/Makefile headers_check
|
||||||
|
endif
|
||||||
$(call if_changed_rule,vmlinux__)
|
$(call if_changed_rule,vmlinux__)
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
|
||||||
$(Q)rm -f .old_version
|
$(Q)rm -f .old_version
|
||||||
|
@ -932,7 +936,7 @@ headers_install_all: include/linux/version.h scripts_basic FORCE
|
||||||
|
|
||||||
PHONY += headers_install
|
PHONY += headers_install
|
||||||
headers_install: include/linux/version.h scripts_basic FORCE
|
headers_install: include/linux/version.h scripts_basic FORCE
|
||||||
@if [ ! -r include/asm-$(ARCH)/Kbuild ]; then \
|
@if [ ! -r $(srctree)/include/asm-$(ARCH)/Kbuild ]; then \
|
||||||
echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \
|
echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \
|
||||||
exit 1 ; fi
|
exit 1 ; fi
|
||||||
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
$(Q)$(MAKE) $(build)=scripts scripts/unifdef
|
||||||
|
@ -1316,7 +1320,8 @@ define xtags
|
||||||
$(all-sources) | xargs $1 -a \
|
$(all-sources) | xargs $1 -a \
|
||||||
-I __initdata,__exitdata,__acquires,__releases \
|
-I __initdata,__exitdata,__acquires,__releases \
|
||||||
-I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
|
-I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
|
||||||
--extra=+f --c-kinds=+px; \
|
--extra=+f --c-kinds=+px \
|
||||||
|
--regex-asm='/ENTRY\(([^)]*)\).*/\1/'; \
|
||||||
$(all-kconfigs) | xargs $1 -a \
|
$(all-kconfigs) | xargs $1 -a \
|
||||||
--langdef=kconfig \
|
--langdef=kconfig \
|
||||||
--language-force=kconfig \
|
--language-force=kconfig \
|
||||||
|
|
|
@ -6,40 +6,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/string.h>
|
|
||||||
#include <linux/user.h>
|
|
||||||
#include <linux/elfcore.h>
|
|
||||||
#include <linux/socket.h>
|
|
||||||
#include <linux/syscalls.h>
|
|
||||||
#include <linux/in.h>
|
|
||||||
#include <linux/in6.h>
|
|
||||||
#include <linux/pci.h>
|
|
||||||
#include <linux/screen_info.h>
|
|
||||||
#include <linux/tty.h>
|
|
||||||
#include <linux/mm.h>
|
|
||||||
#include <linux/delay.h>
|
|
||||||
#include <linux/dma-mapping.h>
|
|
||||||
|
|
||||||
#include <asm/io.h>
|
|
||||||
#include <asm/console.h>
|
#include <asm/console.h>
|
||||||
#include <asm/hwrpb.h>
|
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <asm/processor.h>
|
|
||||||
#include <asm/checksum.h>
|
#include <asm/checksum.h>
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <asm/fpu.h>
|
#include <asm/fpu.h>
|
||||||
#include <asm/irq.h>
|
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/pgalloc.h>
|
|
||||||
#include <asm/semaphore.h>
|
|
||||||
#include <asm/tlbflush.h>
|
|
||||||
#include <asm/cacheflush.h>
|
|
||||||
#include <asm/vga.h>
|
|
||||||
|
|
||||||
#include <asm/unistd.h>
|
#include <linux/syscalls.h>
|
||||||
|
|
||||||
extern struct hwrpb_struct *hwrpb;
|
|
||||||
extern spinlock_t rtc_lock;
|
|
||||||
|
|
||||||
/* these are C runtime functions with special calling conventions: */
|
/* these are C runtime functions with special calling conventions: */
|
||||||
extern void __divl (void);
|
extern void __divl (void);
|
||||||
|
@ -52,14 +25,9 @@ extern void __divqu (void);
|
||||||
extern void __remqu (void);
|
extern void __remqu (void);
|
||||||
|
|
||||||
EXPORT_SYMBOL(alpha_mv);
|
EXPORT_SYMBOL(alpha_mv);
|
||||||
EXPORT_SYMBOL(screen_info);
|
|
||||||
EXPORT_SYMBOL(perf_irq);
|
|
||||||
EXPORT_SYMBOL(callback_getenv);
|
EXPORT_SYMBOL(callback_getenv);
|
||||||
EXPORT_SYMBOL(callback_setenv);
|
EXPORT_SYMBOL(callback_setenv);
|
||||||
EXPORT_SYMBOL(callback_save_env);
|
EXPORT_SYMBOL(callback_save_env);
|
||||||
#ifdef CONFIG_ALPHA_GENERIC
|
|
||||||
EXPORT_SYMBOL(alpha_using_srm);
|
|
||||||
#endif /* CONFIG_ALPHA_GENERIC */
|
|
||||||
|
|
||||||
/* platform dependent support */
|
/* platform dependent support */
|
||||||
EXPORT_SYMBOL(strcat);
|
EXPORT_SYMBOL(strcat);
|
||||||
|
@ -77,47 +45,14 @@ EXPORT_SYMBOL(__constant_c_memset);
|
||||||
EXPORT_SYMBOL(copy_page);
|
EXPORT_SYMBOL(copy_page);
|
||||||
EXPORT_SYMBOL(clear_page);
|
EXPORT_SYMBOL(clear_page);
|
||||||
|
|
||||||
EXPORT_SYMBOL(__direct_map_base);
|
|
||||||
EXPORT_SYMBOL(__direct_map_size);
|
|
||||||
|
|
||||||
#ifdef CONFIG_PCI
|
|
||||||
EXPORT_SYMBOL(pci_alloc_consistent);
|
|
||||||
EXPORT_SYMBOL(pci_free_consistent);
|
|
||||||
EXPORT_SYMBOL(pci_map_single);
|
|
||||||
EXPORT_SYMBOL(pci_map_page);
|
|
||||||
EXPORT_SYMBOL(pci_unmap_single);
|
|
||||||
EXPORT_SYMBOL(pci_unmap_page);
|
|
||||||
EXPORT_SYMBOL(pci_map_sg);
|
|
||||||
EXPORT_SYMBOL(pci_unmap_sg);
|
|
||||||
EXPORT_SYMBOL(pci_dma_supported);
|
|
||||||
EXPORT_SYMBOL(pci_dac_dma_supported);
|
|
||||||
EXPORT_SYMBOL(pci_dac_page_to_dma);
|
|
||||||
EXPORT_SYMBOL(pci_dac_dma_to_page);
|
|
||||||
EXPORT_SYMBOL(pci_dac_dma_to_offset);
|
|
||||||
EXPORT_SYMBOL(alpha_gendev_to_pci);
|
|
||||||
#endif
|
|
||||||
EXPORT_SYMBOL(dma_set_mask);
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(dump_thread);
|
|
||||||
EXPORT_SYMBOL(dump_elf_thread);
|
|
||||||
EXPORT_SYMBOL(dump_elf_task);
|
|
||||||
EXPORT_SYMBOL(dump_elf_task_fp);
|
|
||||||
EXPORT_SYMBOL(hwrpb);
|
|
||||||
EXPORT_SYMBOL(start_thread);
|
|
||||||
EXPORT_SYMBOL(alpha_read_fp_reg);
|
EXPORT_SYMBOL(alpha_read_fp_reg);
|
||||||
EXPORT_SYMBOL(alpha_read_fp_reg_s);
|
EXPORT_SYMBOL(alpha_read_fp_reg_s);
|
||||||
EXPORT_SYMBOL(alpha_write_fp_reg);
|
EXPORT_SYMBOL(alpha_write_fp_reg);
|
||||||
EXPORT_SYMBOL(alpha_write_fp_reg_s);
|
EXPORT_SYMBOL(alpha_write_fp_reg_s);
|
||||||
|
|
||||||
/* In-kernel system calls. */
|
/* entry.S */
|
||||||
EXPORT_SYMBOL(kernel_thread);
|
EXPORT_SYMBOL(kernel_thread);
|
||||||
EXPORT_SYMBOL(sys_dup);
|
|
||||||
EXPORT_SYMBOL(sys_exit);
|
|
||||||
EXPORT_SYMBOL(sys_write);
|
|
||||||
EXPORT_SYMBOL(sys_lseek);
|
|
||||||
EXPORT_SYMBOL(kernel_execve);
|
EXPORT_SYMBOL(kernel_execve);
|
||||||
EXPORT_SYMBOL(sys_setsid);
|
|
||||||
EXPORT_SYMBOL(sys_wait4);
|
|
||||||
|
|
||||||
/* Networking helper routines. */
|
/* Networking helper routines. */
|
||||||
EXPORT_SYMBOL(csum_tcpudp_magic);
|
EXPORT_SYMBOL(csum_tcpudp_magic);
|
||||||
|
@ -134,10 +69,6 @@ EXPORT_SYMBOL(alpha_fp_emul_imprecise);
|
||||||
EXPORT_SYMBOL(alpha_fp_emul);
|
EXPORT_SYMBOL(alpha_fp_emul);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
|
|
||||||
EXPORT_SYMBOL(__min_ipl);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following are specially called from the uaccess assembly stubs.
|
* The following are specially called from the uaccess assembly stubs.
|
||||||
*/
|
*/
|
||||||
|
@ -160,26 +91,9 @@ EXPORT_SYMBOL(up);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
EXPORT_SYMBOL(flush_tlb_mm);
|
|
||||||
EXPORT_SYMBOL(flush_tlb_range);
|
|
||||||
EXPORT_SYMBOL(flush_tlb_page);
|
|
||||||
EXPORT_SYMBOL(smp_imb);
|
|
||||||
EXPORT_SYMBOL(cpu_data);
|
|
||||||
EXPORT_SYMBOL(smp_num_cpus);
|
|
||||||
EXPORT_SYMBOL(smp_call_function);
|
|
||||||
EXPORT_SYMBOL(smp_call_function_on_cpu);
|
|
||||||
EXPORT_SYMBOL(_atomic_dec_and_lock);
|
EXPORT_SYMBOL(_atomic_dec_and_lock);
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
|
||||||
/*
|
|
||||||
* NUMA specific symbols
|
|
||||||
*/
|
|
||||||
#ifdef CONFIG_DISCONTIGMEM
|
|
||||||
EXPORT_SYMBOL(node_data);
|
|
||||||
#endif /* CONFIG_DISCONTIGMEM */
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(rtc_lock);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following are special because they're not called
|
* The following are special because they're not called
|
||||||
* explicitly (the C compiler or assembler generates them in
|
* explicitly (the C compiler or assembler generates them in
|
||||||
|
@ -200,8 +114,3 @@ EXPORT_SYMBOL(__remqu);
|
||||||
EXPORT_SYMBOL(memcpy);
|
EXPORT_SYMBOL(memcpy);
|
||||||
EXPORT_SYMBOL(memset);
|
EXPORT_SYMBOL(memset);
|
||||||
EXPORT_SYMBOL(memchr);
|
EXPORT_SYMBOL(memchr);
|
||||||
|
|
||||||
#ifdef CONFIG_ALPHA_IRONGATE
|
|
||||||
EXPORT_SYMBOL(irongate_ioremap);
|
|
||||||
EXPORT_SYMBOL(irongate_iounmap);
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -404,6 +404,7 @@ irongate_ioremap(unsigned long addr, unsigned long size)
|
||||||
#endif
|
#endif
|
||||||
return (void __iomem *)vaddr;
|
return (void __iomem *)vaddr;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(irongate_ioremap);
|
||||||
|
|
||||||
void
|
void
|
||||||
irongate_iounmap(volatile void __iomem *xaddr)
|
irongate_iounmap(volatile void __iomem *xaddr)
|
||||||
|
@ -414,3 +415,4 @@ irongate_iounmap(volatile void __iomem *xaddr)
|
||||||
if (addr)
|
if (addr)
|
||||||
return vfree((void *)(PAGE_MASK & addr));
|
return vfree((void *)(PAGE_MASK & addr));
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(irongate_iounmap);
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/kernel_stat.h>
|
#include <linux/kernel_stat.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include <asm/machvec.h>
|
#include <asm/machvec.h>
|
||||||
#include <asm/dma.h>
|
#include <asm/dma.h>
|
||||||
|
@ -16,6 +17,7 @@
|
||||||
/* Hack minimum IPL during interrupt processing for broken hardware. */
|
/* Hack minimum IPL during interrupt processing for broken hardware. */
|
||||||
#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
|
#ifdef CONFIG_ALPHA_BROKEN_IRQ_MASK
|
||||||
int __min_ipl;
|
int __min_ipl;
|
||||||
|
EXPORT_SYMBOL(__min_ipl);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -30,6 +32,7 @@ dummy_perf(unsigned long vector, struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
|
|
||||||
void (*perf_irq)(unsigned long, struct pt_regs *) = dummy_perf;
|
void (*perf_irq)(unsigned long, struct pt_regs *) = dummy_perf;
|
||||||
|
EXPORT_SYMBOL(perf_irq);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The main interrupt entry point.
|
* The main interrupt entry point.
|
||||||
|
|
|
@ -201,6 +201,7 @@ dma_set_mask(struct device *dev, u64 mask)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(dma_set_mask);
|
||||||
|
|
||||||
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
|
void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen)
|
||||||
{
|
{
|
||||||
|
|
|
@ -300,6 +300,7 @@ pci_map_single(struct pci_dev *pdev, void *cpu_addr, size_t size, int dir)
|
||||||
dac_allowed = pdev ? pci_dac_dma_supported(pdev, pdev->dma_mask) : 0;
|
dac_allowed = pdev ? pci_dac_dma_supported(pdev, pdev->dma_mask) : 0;
|
||||||
return pci_map_single_1(pdev, cpu_addr, size, dac_allowed);
|
return pci_map_single_1(pdev, cpu_addr, size, dac_allowed);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_map_single);
|
||||||
|
|
||||||
dma_addr_t
|
dma_addr_t
|
||||||
pci_map_page(struct pci_dev *pdev, struct page *page, unsigned long offset,
|
pci_map_page(struct pci_dev *pdev, struct page *page, unsigned long offset,
|
||||||
|
@ -314,6 +315,7 @@ pci_map_page(struct pci_dev *pdev, struct page *page, unsigned long offset,
|
||||||
return pci_map_single_1(pdev, (char *)page_address(page) + offset,
|
return pci_map_single_1(pdev, (char *)page_address(page) + offset,
|
||||||
size, dac_allowed);
|
size, dac_allowed);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_map_page);
|
||||||
|
|
||||||
/* Unmap a single streaming mode DMA translation. The DMA_ADDR and
|
/* Unmap a single streaming mode DMA translation. The DMA_ADDR and
|
||||||
SIZE must match what was provided for in a previous pci_map_single
|
SIZE must match what was provided for in a previous pci_map_single
|
||||||
|
@ -379,6 +381,7 @@ pci_unmap_single(struct pci_dev *pdev, dma_addr_t dma_addr, size_t size,
|
||||||
DBGA2("pci_unmap_single: sg [%lx,%lx] np %ld from %p\n",
|
DBGA2("pci_unmap_single: sg [%lx,%lx] np %ld from %p\n",
|
||||||
dma_addr, size, npages, __builtin_return_address(0));
|
dma_addr, size, npages, __builtin_return_address(0));
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_unmap_single);
|
||||||
|
|
||||||
void
|
void
|
||||||
pci_unmap_page(struct pci_dev *pdev, dma_addr_t dma_addr,
|
pci_unmap_page(struct pci_dev *pdev, dma_addr_t dma_addr,
|
||||||
|
@ -386,6 +389,7 @@ pci_unmap_page(struct pci_dev *pdev, dma_addr_t dma_addr,
|
||||||
{
|
{
|
||||||
pci_unmap_single(pdev, dma_addr, size, direction);
|
pci_unmap_single(pdev, dma_addr, size, direction);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_unmap_page);
|
||||||
|
|
||||||
/* Allocate and map kernel buffer using consistent mode DMA for PCI
|
/* Allocate and map kernel buffer using consistent mode DMA for PCI
|
||||||
device. Returns non-NULL cpu-view pointer to the buffer if
|
device. Returns non-NULL cpu-view pointer to the buffer if
|
||||||
|
@ -427,6 +431,7 @@ try_again:
|
||||||
|
|
||||||
return cpu_addr;
|
return cpu_addr;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_alloc_consistent);
|
||||||
|
|
||||||
/* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must
|
/* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must
|
||||||
be values that were returned from pci_alloc_consistent. SIZE must
|
be values that were returned from pci_alloc_consistent. SIZE must
|
||||||
|
@ -444,7 +449,7 @@ pci_free_consistent(struct pci_dev *pdev, size_t size, void *cpu_addr,
|
||||||
DBGA2("pci_free_consistent: [%x,%lx] from %p\n",
|
DBGA2("pci_free_consistent: [%x,%lx] from %p\n",
|
||||||
dma_addr, size, __builtin_return_address(0));
|
dma_addr, size, __builtin_return_address(0));
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_free_consistent);
|
||||||
|
|
||||||
/* Classify the elements of the scatterlist. Write dma_address
|
/* Classify the elements of the scatterlist. Write dma_address
|
||||||
of each element with:
|
of each element with:
|
||||||
|
@ -672,6 +677,7 @@ pci_map_sg(struct pci_dev *pdev, struct scatterlist *sg, int nents,
|
||||||
pci_unmap_sg(pdev, start, out - start, direction);
|
pci_unmap_sg(pdev, start, out - start, direction);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_map_sg);
|
||||||
|
|
||||||
/* Unmap a set of streaming mode DMA translations. Again, cpu read
|
/* Unmap a set of streaming mode DMA translations. Again, cpu read
|
||||||
rules concerning calls here are the same as for pci_unmap_single()
|
rules concerning calls here are the same as for pci_unmap_single()
|
||||||
|
@ -752,6 +758,7 @@ pci_unmap_sg(struct pci_dev *pdev, struct scatterlist *sg, int nents,
|
||||||
|
|
||||||
DBGA("pci_unmap_sg: %ld entries\n", nents - (end - sg));
|
DBGA("pci_unmap_sg: %ld entries\n", nents - (end - sg));
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_unmap_sg);
|
||||||
|
|
||||||
|
|
||||||
/* Return whether the given PCI device DMA address mask can be
|
/* Return whether the given PCI device DMA address mask can be
|
||||||
|
@ -786,6 +793,7 @@ pci_dma_supported(struct pci_dev *pdev, u64 mask)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_dma_supported);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -908,6 +916,7 @@ pci_dac_dma_supported(struct pci_dev *dev, u64 mask)
|
||||||
|
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_dac_dma_supported);
|
||||||
|
|
||||||
dma64_addr_t
|
dma64_addr_t
|
||||||
pci_dac_page_to_dma(struct pci_dev *pdev, struct page *page,
|
pci_dac_page_to_dma(struct pci_dev *pdev, struct page *page,
|
||||||
|
@ -917,6 +926,7 @@ pci_dac_page_to_dma(struct pci_dev *pdev, struct page *page,
|
||||||
+ __pa(page_address(page))
|
+ __pa(page_address(page))
|
||||||
+ (dma64_addr_t) offset);
|
+ (dma64_addr_t) offset);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_dac_page_to_dma);
|
||||||
|
|
||||||
struct page *
|
struct page *
|
||||||
pci_dac_dma_to_page(struct pci_dev *pdev, dma64_addr_t dma_addr)
|
pci_dac_dma_to_page(struct pci_dev *pdev, dma64_addr_t dma_addr)
|
||||||
|
@ -924,13 +934,14 @@ pci_dac_dma_to_page(struct pci_dev *pdev, dma64_addr_t dma_addr)
|
||||||
unsigned long paddr = (dma_addr & PAGE_MASK) - alpha_mv.pci_dac_offset;
|
unsigned long paddr = (dma_addr & PAGE_MASK) - alpha_mv.pci_dac_offset;
|
||||||
return virt_to_page(__va(paddr));
|
return virt_to_page(__va(paddr));
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_dac_dma_to_page);
|
||||||
|
|
||||||
unsigned long
|
unsigned long
|
||||||
pci_dac_dma_to_offset(struct pci_dev *pdev, dma64_addr_t dma_addr)
|
pci_dac_dma_to_offset(struct pci_dev *pdev, dma64_addr_t dma_addr)
|
||||||
{
|
{
|
||||||
return (dma_addr & ~PAGE_MASK);
|
return (dma_addr & ~PAGE_MASK);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(pci_dac_dma_to_offset);
|
||||||
|
|
||||||
/* Helper for generic DMA-mapping functions. */
|
/* Helper for generic DMA-mapping functions. */
|
||||||
|
|
||||||
|
@ -957,6 +968,7 @@ alpha_gendev_to_pci(struct device *dev)
|
||||||
/* This assumes ISA bus master with dma_mask 0xffffff. */
|
/* This assumes ISA bus master with dma_mask 0xffffff. */
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(alpha_gendev_to_pci);
|
||||||
|
|
||||||
int
|
int
|
||||||
dma_set_mask(struct device *dev, u64 mask)
|
dma_set_mask(struct device *dev, u64 mask)
|
||||||
|
@ -969,3 +981,4 @@ dma_set_mask(struct device *dev, u64 mask)
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(dma_set_mask);
|
||||||
|
|
|
@ -205,6 +205,7 @@ start_thread(struct pt_regs * regs, unsigned long pc, unsigned long sp)
|
||||||
regs->ps = 8;
|
regs->ps = 8;
|
||||||
wrusp(sp);
|
wrusp(sp);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(start_thread);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Free current thread data structures etc..
|
* Free current thread data structures etc..
|
||||||
|
@ -376,6 +377,7 @@ dump_thread(struct pt_regs * pt, struct user * dump)
|
||||||
dump->regs[EF_A2] = pt->r18;
|
dump->regs[EF_A2] = pt->r18;
|
||||||
memcpy((char *)dump->regs + EF_SIZE, sw->fp, 32 * 8);
|
memcpy((char *)dump->regs + EF_SIZE, sw->fp, 32 * 8);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(dump_thread);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fill in the user structure for a ELF core dump.
|
* Fill in the user structure for a ELF core dump.
|
||||||
|
@ -424,6 +426,7 @@ dump_elf_thread(elf_greg_t *dest, struct pt_regs *pt, struct thread_info *ti)
|
||||||
useful value of the thread's UNIQUE field. */
|
useful value of the thread's UNIQUE field. */
|
||||||
dest[32] = ti->pcb.unique;
|
dest[32] = ti->pcb.unique;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(dump_elf_thread);
|
||||||
|
|
||||||
int
|
int
|
||||||
dump_elf_task(elf_greg_t *dest, struct task_struct *task)
|
dump_elf_task(elf_greg_t *dest, struct task_struct *task)
|
||||||
|
@ -431,6 +434,7 @@ dump_elf_task(elf_greg_t *dest, struct task_struct *task)
|
||||||
dump_elf_thread(dest, task_pt_regs(task), task_thread_info(task));
|
dump_elf_thread(dest, task_pt_regs(task), task_thread_info(task));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(dump_elf_task);
|
||||||
|
|
||||||
int
|
int
|
||||||
dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task)
|
dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task)
|
||||||
|
@ -439,6 +443,7 @@ dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task)
|
||||||
memcpy(dest, sw->fp, 32 * 8);
|
memcpy(dest, sw->fp, 32 * 8);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(dump_elf_task_fp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sys_execve() executes a new program.
|
* sys_execve() executes a new program.
|
||||||
|
|
|
@ -66,6 +66,7 @@ static struct notifier_block alpha_panic_block = {
|
||||||
|
|
||||||
|
|
||||||
struct hwrpb_struct *hwrpb;
|
struct hwrpb_struct *hwrpb;
|
||||||
|
EXPORT_SYMBOL(hwrpb);
|
||||||
unsigned long srm_hae;
|
unsigned long srm_hae;
|
||||||
|
|
||||||
int alpha_l1i_cacheshape;
|
int alpha_l1i_cacheshape;
|
||||||
|
@ -111,6 +112,7 @@ unsigned long alpha_agpgart_size = DEFAULT_AGP_APER_SIZE;
|
||||||
#ifdef CONFIG_ALPHA_GENERIC
|
#ifdef CONFIG_ALPHA_GENERIC
|
||||||
struct alpha_machine_vector alpha_mv;
|
struct alpha_machine_vector alpha_mv;
|
||||||
int alpha_using_srm;
|
int alpha_using_srm;
|
||||||
|
EXPORT_SYMBOL(alpha_using_srm);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct alpha_machine_vector *get_sysvec(unsigned long, unsigned long,
|
static struct alpha_machine_vector *get_sysvec(unsigned long, unsigned long,
|
||||||
|
@ -137,6 +139,8 @@ struct screen_info screen_info = {
|
||||||
.orig_video_points = 16
|
.orig_video_points = 16
|
||||||
};
|
};
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(screen_info);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The direct map I/O window, if any. This should be the same
|
* The direct map I/O window, if any. This should be the same
|
||||||
* for all busses, since it's used by virt_to_bus.
|
* for all busses, since it's used by virt_to_bus.
|
||||||
|
@ -144,6 +148,8 @@ struct screen_info screen_info = {
|
||||||
|
|
||||||
unsigned long __direct_map_base;
|
unsigned long __direct_map_base;
|
||||||
unsigned long __direct_map_size;
|
unsigned long __direct_map_size;
|
||||||
|
EXPORT_SYMBOL(__direct_map_base);
|
||||||
|
EXPORT_SYMBOL(__direct_map_size);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Declare all of the machine vectors.
|
* Declare all of the machine vectors.
|
||||||
|
|
|
@ -52,6 +52,7 @@
|
||||||
|
|
||||||
/* A collection of per-processor data. */
|
/* A collection of per-processor data. */
|
||||||
struct cpuinfo_alpha cpu_data[NR_CPUS];
|
struct cpuinfo_alpha cpu_data[NR_CPUS];
|
||||||
|
EXPORT_SYMBOL(cpu_data);
|
||||||
|
|
||||||
/* A collection of single bit ipi messages. */
|
/* A collection of single bit ipi messages. */
|
||||||
static struct {
|
static struct {
|
||||||
|
@ -74,6 +75,7 @@ EXPORT_SYMBOL(cpu_online_map);
|
||||||
|
|
||||||
int smp_num_probed; /* Internal processor count */
|
int smp_num_probed; /* Internal processor count */
|
||||||
int smp_num_cpus = 1; /* Number that came online. */
|
int smp_num_cpus = 1; /* Number that came online. */
|
||||||
|
EXPORT_SYMBOL(smp_num_cpus);
|
||||||
|
|
||||||
extern void calibrate_delay(void);
|
extern void calibrate_delay(void);
|
||||||
|
|
||||||
|
@ -790,6 +792,7 @@ smp_call_function_on_cpu (void (*func) (void *info), void *info, int retry,
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(smp_call_function_on_cpu);
|
||||||
|
|
||||||
int
|
int
|
||||||
smp_call_function (void (*func) (void *info), void *info, int retry, int wait)
|
smp_call_function (void (*func) (void *info), void *info, int retry, int wait)
|
||||||
|
@ -797,6 +800,7 @@ smp_call_function (void (*func) (void *info), void *info, int retry, int wait)
|
||||||
return smp_call_function_on_cpu (func, info, retry, wait,
|
return smp_call_function_on_cpu (func, info, retry, wait,
|
||||||
cpu_online_map);
|
cpu_online_map);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(smp_call_function);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ipi_imb(void *ignored)
|
ipi_imb(void *ignored)
|
||||||
|
@ -811,6 +815,7 @@ smp_imb(void)
|
||||||
if (on_each_cpu(ipi_imb, NULL, 1, 1))
|
if (on_each_cpu(ipi_imb, NULL, 1, 1))
|
||||||
printk(KERN_CRIT "smp_imb: timed out\n");
|
printk(KERN_CRIT "smp_imb: timed out\n");
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(smp_imb);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ipi_flush_tlb_all(void *ignored)
|
ipi_flush_tlb_all(void *ignored)
|
||||||
|
@ -866,6 +871,7 @@ flush_tlb_mm(struct mm_struct *mm)
|
||||||
|
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(flush_tlb_mm);
|
||||||
|
|
||||||
struct flush_tlb_page_struct {
|
struct flush_tlb_page_struct {
|
||||||
struct vm_area_struct *vma;
|
struct vm_area_struct *vma;
|
||||||
|
@ -918,6 +924,7 @@ flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
|
||||||
|
|
||||||
preempt_enable();
|
preempt_enable();
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(flush_tlb_page);
|
||||||
|
|
||||||
void
|
void
|
||||||
flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
|
flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
|
||||||
|
@ -925,6 +932,7 @@ flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long e
|
||||||
/* On the Alpha we always flush the whole user tlb. */
|
/* On the Alpha we always flush the whole user tlb. */
|
||||||
flush_tlb_mm(vma->vm_mm);
|
flush_tlb_mm(vma->vm_mm);
|
||||||
}
|
}
|
||||||
|
EXPORT_SYMBOL(flush_tlb_range);
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ipi_flush_icache_page(void *x)
|
ipi_flush_icache_page(void *x)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* srm_env.c - Access to SRM environment
|
* srm_env.c - Access to SRM environment
|
||||||
* variables through linux' procfs
|
* variables through linux' procfs
|
||||||
*
|
*
|
||||||
* Copyright (C) 2001-2002 Jan-Benedict Glaw <jbglaw@lug-owl.de>
|
* (C) 2001,2002,2006 by Jan-Benedict Glaw <jbglaw@lug-owl.de>
|
||||||
*
|
*
|
||||||
* This driver is at all a modified version of Erik Mouw's
|
* This driver is at all a modified version of Erik Mouw's
|
||||||
* Documentation/DocBook/procfs_example.c, so: thank
|
* Documentation/DocBook/procfs_example.c, so: thank
|
||||||
|
@ -21,7 +21,7 @@
|
||||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||||
* PURPOSE. See the GNU General Public License for more
|
* PURPOSE. See the GNU General Public License for more
|
||||||
* details.
|
* details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public
|
* You should have received a copy of the GNU General Public
|
||||||
* License along with this program; if not, write to the
|
* License along with this program; if not, write to the
|
||||||
* Free Software Foundation, Inc., 59 Temple Place,
|
* Free Software Foundation, Inc., 59 Temple Place,
|
||||||
|
@ -29,33 +29,6 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
|
||||||
* Changelog
|
|
||||||
* ~~~~~~~~~
|
|
||||||
*
|
|
||||||
* Thu, 22 Aug 2002 15:10:43 +0200
|
|
||||||
* - Update Config.help entry. I got a number of emails asking
|
|
||||||
* me to tell their senders if they could make use of this
|
|
||||||
* piece of code... So: "SRM is something like BIOS for your
|
|
||||||
* Alpha"
|
|
||||||
* - Update code formatting a bit to better conform CodingStyle
|
|
||||||
* rules.
|
|
||||||
* - So this is v0.0.5, with no changes (except formatting)
|
|
||||||
*
|
|
||||||
* Wed, 22 May 2002 00:11:21 +0200
|
|
||||||
* - Fix typo on comment (SRC -> SRM)
|
|
||||||
* - Call this "Version 0.0.4"
|
|
||||||
*
|
|
||||||
* Tue, 9 Apr 2002 18:44:40 +0200
|
|
||||||
* - Implement access by variable name and additionally
|
|
||||||
* by number. This is done by creating two subdirectories
|
|
||||||
* where one holds all names (like the old directory
|
|
||||||
* did) and the other holding 256 files named like "0",
|
|
||||||
* "1" and so on.
|
|
||||||
* - Call this "Version 0.0.3"
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
@ -67,7 +40,7 @@
|
||||||
#define BASE_DIR "srm_environment" /* Subdir in /proc/ */
|
#define BASE_DIR "srm_environment" /* Subdir in /proc/ */
|
||||||
#define NAMED_DIR "named_variables" /* Subdir for known variables */
|
#define NAMED_DIR "named_variables" /* Subdir for known variables */
|
||||||
#define NUMBERED_DIR "numbered_variables" /* Subdir for all variables */
|
#define NUMBERED_DIR "numbered_variables" /* Subdir for all variables */
|
||||||
#define VERSION "0.0.5" /* Module version */
|
#define VERSION "0.0.6" /* Module version */
|
||||||
#define NAME "srm_env" /* Module name */
|
#define NAME "srm_env" /* Module name */
|
||||||
|
|
||||||
MODULE_AUTHOR("Jan-Benedict Glaw <jbglaw@lug-owl.de>");
|
MODULE_AUTHOR("Jan-Benedict Glaw <jbglaw@lug-owl.de>");
|
||||||
|
@ -106,7 +79,6 @@ static srm_env_t srm_named_entries[] = {
|
||||||
static srm_env_t srm_numbered_entries[256];
|
static srm_env_t srm_numbered_entries[256];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
srm_env_read(char *page, char **start, off_t off, int count, int *eof,
|
srm_env_read(char *page, char **start, off_t off, int count, int *eof,
|
||||||
void *data)
|
void *data)
|
||||||
|
@ -115,21 +87,23 @@ srm_env_read(char *page, char **start, off_t off, int count, int *eof,
|
||||||
unsigned long ret;
|
unsigned long ret;
|
||||||
srm_env_t *entry;
|
srm_env_t *entry;
|
||||||
|
|
||||||
if(off != 0)
|
if (off != 0) {
|
||||||
return -EFAULT;
|
*eof = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
entry = (srm_env_t *) data;
|
entry = (srm_env_t *) data;
|
||||||
ret = callback_getenv(entry->id, page, count);
|
ret = callback_getenv(entry->id, page, count);
|
||||||
|
|
||||||
if((ret >> 61) == 0)
|
if ((ret >> 61) == 0) {
|
||||||
nbytes = (int) ret;
|
nbytes = (int) ret;
|
||||||
else
|
*eof = 1;
|
||||||
|
} else
|
||||||
nbytes = -EFAULT;
|
nbytes = -EFAULT;
|
||||||
|
|
||||||
return nbytes;
|
return nbytes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
srm_env_write(struct file *file, const char __user *buffer, unsigned long count,
|
srm_env_write(struct file *file, const char __user *buffer, unsigned long count,
|
||||||
void *data)
|
void *data)
|
||||||
|
@ -155,7 +129,7 @@ srm_env_write(struct file *file, const char __user *buffer, unsigned long count,
|
||||||
|
|
||||||
ret1 = callback_setenv(entry->id, buf, count);
|
ret1 = callback_setenv(entry->id, buf, count);
|
||||||
if ((ret1 >> 61) == 0) {
|
if ((ret1 >> 61) == 0) {
|
||||||
do
|
do
|
||||||
ret2 = callback_save_env();
|
ret2 = callback_save_env();
|
||||||
while((ret2 >> 61) == 1);
|
while((ret2 >> 61) == 1);
|
||||||
res = (int) ret1;
|
res = (int) ret1;
|
||||||
|
@ -172,14 +146,14 @@ srm_env_cleanup(void)
|
||||||
srm_env_t *entry;
|
srm_env_t *entry;
|
||||||
unsigned long var_num;
|
unsigned long var_num;
|
||||||
|
|
||||||
if(base_dir) {
|
if (base_dir) {
|
||||||
/*
|
/*
|
||||||
* Remove named entries
|
* Remove named entries
|
||||||
*/
|
*/
|
||||||
if(named_dir) {
|
if (named_dir) {
|
||||||
entry = srm_named_entries;
|
entry = srm_named_entries;
|
||||||
while(entry->name != NULL && entry->id != 0) {
|
while (entry->name != NULL && entry->id != 0) {
|
||||||
if(entry->proc_entry) {
|
if (entry->proc_entry) {
|
||||||
remove_proc_entry(entry->name,
|
remove_proc_entry(entry->name,
|
||||||
named_dir);
|
named_dir);
|
||||||
entry->proc_entry = NULL;
|
entry->proc_entry = NULL;
|
||||||
|
@ -192,11 +166,11 @@ srm_env_cleanup(void)
|
||||||
/*
|
/*
|
||||||
* Remove numbered entries
|
* Remove numbered entries
|
||||||
*/
|
*/
|
||||||
if(numbered_dir) {
|
if (numbered_dir) {
|
||||||
for(var_num = 0; var_num <= 255; var_num++) {
|
for (var_num = 0; var_num <= 255; var_num++) {
|
||||||
entry = &srm_numbered_entries[var_num];
|
entry = &srm_numbered_entries[var_num];
|
||||||
|
|
||||||
if(entry->proc_entry) {
|
if (entry->proc_entry) {
|
||||||
remove_proc_entry(entry->name,
|
remove_proc_entry(entry->name,
|
||||||
numbered_dir);
|
numbered_dir);
|
||||||
entry->proc_entry = NULL;
|
entry->proc_entry = NULL;
|
||||||
|
@ -212,7 +186,6 @@ srm_env_cleanup(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
srm_env_init(void)
|
srm_env_init(void)
|
||||||
{
|
{
|
||||||
|
@ -222,7 +195,7 @@ srm_env_init(void)
|
||||||
/*
|
/*
|
||||||
* Check system
|
* Check system
|
||||||
*/
|
*/
|
||||||
if(!alpha_using_srm) {
|
if (!alpha_using_srm) {
|
||||||
printk(KERN_INFO "%s: This Alpha system doesn't "
|
printk(KERN_INFO "%s: This Alpha system doesn't "
|
||||||
"know about SRM (or you've booted "
|
"know about SRM (or you've booted "
|
||||||
"SRM->MILO->Linux, which gets "
|
"SRM->MILO->Linux, which gets "
|
||||||
|
@ -233,14 +206,14 @@ srm_env_init(void)
|
||||||
/*
|
/*
|
||||||
* Init numbers
|
* Init numbers
|
||||||
*/
|
*/
|
||||||
for(var_num = 0; var_num <= 255; var_num++)
|
for (var_num = 0; var_num <= 255; var_num++)
|
||||||
sprintf(number[var_num], "%ld", var_num);
|
sprintf(number[var_num], "%ld", var_num);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create base directory
|
* Create base directory
|
||||||
*/
|
*/
|
||||||
base_dir = proc_mkdir(BASE_DIR, NULL);
|
base_dir = proc_mkdir(BASE_DIR, NULL);
|
||||||
if(base_dir == NULL) {
|
if (!base_dir) {
|
||||||
printk(KERN_ERR "Couldn't create base dir /proc/%s\n",
|
printk(KERN_ERR "Couldn't create base dir /proc/%s\n",
|
||||||
BASE_DIR);
|
BASE_DIR);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -251,7 +224,7 @@ srm_env_init(void)
|
||||||
* Create per-name subdirectory
|
* Create per-name subdirectory
|
||||||
*/
|
*/
|
||||||
named_dir = proc_mkdir(NAMED_DIR, base_dir);
|
named_dir = proc_mkdir(NAMED_DIR, base_dir);
|
||||||
if(named_dir == NULL) {
|
if (!named_dir) {
|
||||||
printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n",
|
printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n",
|
||||||
BASE_DIR, NAMED_DIR);
|
BASE_DIR, NAMED_DIR);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -262,7 +235,7 @@ srm_env_init(void)
|
||||||
* Create per-number subdirectory
|
* Create per-number subdirectory
|
||||||
*/
|
*/
|
||||||
numbered_dir = proc_mkdir(NUMBERED_DIR, base_dir);
|
numbered_dir = proc_mkdir(NUMBERED_DIR, base_dir);
|
||||||
if(numbered_dir == NULL) {
|
if (!numbered_dir) {
|
||||||
printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n",
|
printk(KERN_ERR "Couldn't create dir /proc/%s/%s\n",
|
||||||
BASE_DIR, NUMBERED_DIR);
|
BASE_DIR, NUMBERED_DIR);
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
@ -274,10 +247,10 @@ srm_env_init(void)
|
||||||
* Create all named nodes
|
* Create all named nodes
|
||||||
*/
|
*/
|
||||||
entry = srm_named_entries;
|
entry = srm_named_entries;
|
||||||
while(entry->name != NULL && entry->id != 0) {
|
while (entry->name && entry->id) {
|
||||||
entry->proc_entry = create_proc_entry(entry->name,
|
entry->proc_entry = create_proc_entry(entry->name,
|
||||||
0644, named_dir);
|
0644, named_dir);
|
||||||
if(entry->proc_entry == NULL)
|
if (!entry->proc_entry)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
entry->proc_entry->data = (void *) entry;
|
entry->proc_entry->data = (void *) entry;
|
||||||
|
@ -291,13 +264,13 @@ srm_env_init(void)
|
||||||
/*
|
/*
|
||||||
* Create all numbered nodes
|
* Create all numbered nodes
|
||||||
*/
|
*/
|
||||||
for(var_num = 0; var_num <= 255; var_num++) {
|
for (var_num = 0; var_num <= 255; var_num++) {
|
||||||
entry = &srm_numbered_entries[var_num];
|
entry = &srm_numbered_entries[var_num];
|
||||||
entry->name = number[var_num];
|
entry->name = number[var_num];
|
||||||
|
|
||||||
entry->proc_entry = create_proc_entry(entry->name,
|
entry->proc_entry = create_proc_entry(entry->name,
|
||||||
0644, numbered_dir);
|
0644, numbered_dir);
|
||||||
if(entry->proc_entry == NULL)
|
if (!entry->proc_entry)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
entry->id = var_num;
|
entry->id = var_num;
|
||||||
|
@ -318,7 +291,6 @@ cleanup:
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __exit
|
static void __exit
|
||||||
srm_env_exit(void)
|
srm_env_exit(void)
|
||||||
{
|
{
|
||||||
|
@ -328,7 +300,5 @@ srm_env_exit(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
module_init(srm_env_init);
|
module_init(srm_env_init);
|
||||||
module_exit(srm_env_exit);
|
module_exit(srm_env_exit);
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
static int set_rtc_mmss(unsigned long);
|
static int set_rtc_mmss(unsigned long);
|
||||||
|
|
||||||
DEFINE_SPINLOCK(rtc_lock);
|
DEFINE_SPINLOCK(rtc_lock);
|
||||||
|
EXPORT_SYMBOL(rtc_lock);
|
||||||
|
|
||||||
#define TICK_SIZE (tick_nsec / 1000)
|
#define TICK_SIZE (tick_nsec / 1000)
|
||||||
|
|
||||||
|
|
|
@ -48,13 +48,7 @@ SECTIONS
|
||||||
. = ALIGN(8);
|
. = ALIGN(8);
|
||||||
__initcall_start = .;
|
__initcall_start = .;
|
||||||
.initcall.init : {
|
.initcall.init : {
|
||||||
*(.initcall1.init)
|
INITCALLS
|
||||||
*(.initcall2.init)
|
|
||||||
*(.initcall3.init)
|
|
||||||
*(.initcall4.init)
|
|
||||||
*(.initcall5.init)
|
|
||||||
*(.initcall6.init)
|
|
||||||
*(.initcall7.init)
|
|
||||||
}
|
}
|
||||||
__initcall_end = .;
|
__initcall_end = .;
|
||||||
|
|
||||||
|
|
|
@ -13,12 +13,14 @@
|
||||||
#include <linux/swap.h>
|
#include <linux/swap.h>
|
||||||
#include <linux/initrd.h>
|
#include <linux/initrd.h>
|
||||||
#include <linux/pfn.h>
|
#include <linux/pfn.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include <asm/hwrpb.h>
|
#include <asm/hwrpb.h>
|
||||||
#include <asm/pgalloc.h>
|
#include <asm/pgalloc.h>
|
||||||
|
|
||||||
pg_data_t node_data[MAX_NUMNODES];
|
pg_data_t node_data[MAX_NUMNODES];
|
||||||
bootmem_data_t node_bdata[MAX_NUMNODES];
|
bootmem_data_t node_bdata[MAX_NUMNODES];
|
||||||
|
EXPORT_SYMBOL(node_data);
|
||||||
|
|
||||||
#undef DEBUG_DISCONTIG
|
#undef DEBUG_DISCONTIG
|
||||||
#ifdef DEBUG_DISCONTIG
|
#ifdef DEBUG_DISCONTIG
|
||||||
|
|
|
@ -174,11 +174,13 @@ libs-y := arch/arm/lib/ $(libs-y)
|
||||||
|
|
||||||
# Default target when executing plain make
|
# Default target when executing plain make
|
||||||
ifeq ($(CONFIG_XIP_KERNEL),y)
|
ifeq ($(CONFIG_XIP_KERNEL),y)
|
||||||
all: xipImage
|
KBUILD_IMAGE := xipImage
|
||||||
else
|
else
|
||||||
all: zImage
|
KBUILD_IMAGE := zImage
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
all: $(KBUILD_IMAGE)
|
||||||
|
|
||||||
boot := arch/arm/boot
|
boot := arch/arm/boot
|
||||||
|
|
||||||
# Update machine arch and proc symlinks if something which affects
|
# Update machine arch and proc symlinks if something which affects
|
||||||
|
|
|
@ -662,7 +662,8 @@ EXPORT_SYMBOL(dma_map_single);
|
||||||
EXPORT_SYMBOL(dma_unmap_single);
|
EXPORT_SYMBOL(dma_unmap_single);
|
||||||
EXPORT_SYMBOL(dma_map_sg);
|
EXPORT_SYMBOL(dma_map_sg);
|
||||||
EXPORT_SYMBOL(dma_unmap_sg);
|
EXPORT_SYMBOL(dma_unmap_sg);
|
||||||
EXPORT_SYMBOL(dma_sync_single);
|
EXPORT_SYMBOL(dma_sync_single_for_cpu);
|
||||||
|
EXPORT_SYMBOL(dma_sync_single_for_device);
|
||||||
EXPORT_SYMBOL(dma_sync_sg);
|
EXPORT_SYMBOL(dma_sync_sg);
|
||||||
EXPORT_SYMBOL(dmabounce_register_dev);
|
EXPORT_SYMBOL(dmabounce_register_dev);
|
||||||
EXPORT_SYMBOL(dmabounce_unregister_dev);
|
EXPORT_SYMBOL(dmabounce_unregister_dev);
|
||||||
|
|
|
@ -577,7 +577,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
# Watchdog Device Drivers
|
# Watchdog Device Drivers
|
||||||
#
|
#
|
||||||
# CONFIG_SOFT_WATCHDOG is not set
|
# CONFIG_SOFT_WATCHDOG is not set
|
||||||
CONFIG_AT91_WATCHDOG=y
|
CONFIG_AT91RM9200_WATCHDOG=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
|
|
|
@ -558,7 +558,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
# Watchdog Device Drivers
|
# Watchdog Device Drivers
|
||||||
#
|
#
|
||||||
# CONFIG_SOFT_WATCHDOG is not set
|
# CONFIG_SOFT_WATCHDOG is not set
|
||||||
CONFIG_AT91_WATCHDOG=y
|
CONFIG_AT91RM9200_WATCHDOG=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
|
|
|
@ -217,7 +217,7 @@ CONFIG_BINFMT_ELF=y
|
||||||
# Power management options
|
# Power management options
|
||||||
#
|
#
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
CONFIG_PM_LEGACY=y
|
# CONFIG_PM_LEGACY is not set
|
||||||
# CONFIG_PM_DEBUG is not set
|
# CONFIG_PM_DEBUG is not set
|
||||||
# CONFIG_APM is not set
|
# CONFIG_APM is not set
|
||||||
|
|
||||||
|
|
|
@ -219,7 +219,7 @@ CONFIG_BINFMT_ELF=y
|
||||||
# Power management options
|
# Power management options
|
||||||
#
|
#
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
CONFIG_PM_LEGACY=y
|
# CONFIG_PM_LEGACY is not set
|
||||||
# CONFIG_PM_DEBUG is not set
|
# CONFIG_PM_DEBUG is not set
|
||||||
CONFIG_APM=y
|
CONFIG_APM=y
|
||||||
|
|
||||||
|
|
|
@ -615,7 +615,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
# Watchdog Device Drivers
|
# Watchdog Device Drivers
|
||||||
#
|
#
|
||||||
# CONFIG_SOFT_WATCHDOG is not set
|
# CONFIG_SOFT_WATCHDOG is not set
|
||||||
CONFIG_AT91_WATCHDOG=y
|
CONFIG_AT91RM9200_WATCHDOG=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
|
|
|
@ -615,7 +615,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
# Watchdog Device Drivers
|
# Watchdog Device Drivers
|
||||||
#
|
#
|
||||||
# CONFIG_SOFT_WATCHDOG is not set
|
# CONFIG_SOFT_WATCHDOG is not set
|
||||||
CONFIG_AT91_WATCHDOG=y
|
CONFIG_AT91RM9200_WATCHDOG=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
|
|
|
@ -206,10 +206,8 @@ CONFIG_BINFMT_ELF=y
|
||||||
#
|
#
|
||||||
# Power management options
|
# Power management options
|
||||||
#
|
#
|
||||||
CONFIG_PM=y
|
# CONFIG_PM is not set
|
||||||
CONFIG_PM_LEGACY=y
|
# CONFIG_APM is not set
|
||||||
# CONFIG_PM_DEBUG is not set
|
|
||||||
CONFIG_APM=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Networking
|
# Networking
|
||||||
|
|
|
@ -560,7 +560,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
# Watchdog Device Drivers
|
# Watchdog Device Drivers
|
||||||
#
|
#
|
||||||
# CONFIG_SOFT_WATCHDOG is not set
|
# CONFIG_SOFT_WATCHDOG is not set
|
||||||
CONFIG_AT91_WATCHDOG=y
|
CONFIG_AT91RM9200_WATCHDOG=y
|
||||||
# CONFIG_NVRAM is not set
|
# CONFIG_NVRAM is not set
|
||||||
# CONFIG_DTLK is not set
|
# CONFIG_DTLK is not set
|
||||||
# CONFIG_R3964 is not set
|
# CONFIG_R3964 is not set
|
||||||
|
|
|
@ -257,7 +257,7 @@ CONFIG_BINFMT_AOUT=y
|
||||||
# Power management options
|
# Power management options
|
||||||
#
|
#
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
CONFIG_PM_LEGACY=y
|
# CONFIG_PM_LEGACY is not set
|
||||||
# CONFIG_PM_DEBUG is not set
|
# CONFIG_PM_DEBUG is not set
|
||||||
# CONFIG_APM is not set
|
# CONFIG_APM is not set
|
||||||
|
|
||||||
|
|
|
@ -607,7 +607,7 @@ CONFIG_WATCHDOG_NOWAYOUT=y
|
||||||
# Watchdog Device Drivers
|
# Watchdog Device Drivers
|
||||||
#
|
#
|
||||||
# CONFIG_SOFT_WATCHDOG is not set
|
# CONFIG_SOFT_WATCHDOG is not set
|
||||||
CONFIG_AT91_WATCHDOG=y
|
CONFIG_AT91RM9200_WATCHDOG=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# USB-based Watchdog Cards
|
# USB-based Watchdog Cards
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,9 +1,10 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.18
|
# Linux kernel version: 2.6.19-rc4
|
||||||
# Wed Sep 20 20:27:31 2006
|
# Fri Nov 3 17:41:31 2006
|
||||||
#
|
#
|
||||||
CONFIG_ARM=y
|
CONFIG_ARM=y
|
||||||
|
# CONFIG_GENERIC_TIME is not set
|
||||||
CONFIG_MMU=y
|
CONFIG_MMU=y
|
||||||
CONFIG_GENERIC_HARDIRQS=y
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||||
|
@ -29,17 +30,20 @@ CONFIG_LOCALVERSION=""
|
||||||
CONFIG_LOCALVERSION_AUTO=y
|
CONFIG_LOCALVERSION_AUTO=y
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
|
# CONFIG_IPC_NS is not set
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_POSIX_MQUEUE is not set
|
||||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
# CONFIG_BSD_PROCESS_ACCT is not set
|
||||||
# CONFIG_TASKSTATS is not set
|
# CONFIG_TASKSTATS is not set
|
||||||
|
# CONFIG_UTS_NS is not set
|
||||||
# CONFIG_AUDIT is not set
|
# CONFIG_AUDIT is not set
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
# CONFIG_RELAY is not set
|
# CONFIG_RELAY is not set
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
CONFIG_SYSCTL=y
|
||||||
# CONFIG_EMBEDDED is not set
|
# CONFIG_EMBEDDED is not set
|
||||||
CONFIG_UID16=y
|
CONFIG_UID16=y
|
||||||
CONFIG_SYSCTL=y
|
# CONFIG_SYSCTL_SYSCALL is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||||
|
@ -62,7 +66,8 @@ CONFIG_BASE_SMALL=0
|
||||||
# Loadable module support
|
# Loadable module support
|
||||||
#
|
#
|
||||||
CONFIG_MODULES=y
|
CONFIG_MODULES=y
|
||||||
# CONFIG_MODULE_UNLOAD is not set
|
CONFIG_MODULE_UNLOAD=y
|
||||||
|
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||||
# CONFIG_MODVERSIONS is not set
|
# CONFIG_MODVERSIONS is not set
|
||||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||||
CONFIG_KMOD=y
|
CONFIG_KMOD=y
|
||||||
|
@ -70,6 +75,7 @@ CONFIG_KMOD=y
|
||||||
#
|
#
|
||||||
# Block layer
|
# Block layer
|
||||||
#
|
#
|
||||||
|
CONFIG_BLOCK=y
|
||||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -120,6 +126,7 @@ CONFIG_ARCH_S3C2410=y
|
||||||
#
|
#
|
||||||
# S3C24XX Implementations
|
# S3C24XX Implementations
|
||||||
#
|
#
|
||||||
|
# CONFIG_MACH_AML_M5900 is not set
|
||||||
CONFIG_MACH_ANUBIS=y
|
CONFIG_MACH_ANUBIS=y
|
||||||
CONFIG_MACH_OSIRIS=y
|
CONFIG_MACH_OSIRIS=y
|
||||||
CONFIG_ARCH_BAST=y
|
CONFIG_ARCH_BAST=y
|
||||||
|
@ -178,6 +185,8 @@ CONFIG_CPU_CACHE_V4WT=y
|
||||||
CONFIG_CPU_CACHE_VIVT=y
|
CONFIG_CPU_CACHE_VIVT=y
|
||||||
CONFIG_CPU_COPY_V4WB=y
|
CONFIG_CPU_COPY_V4WB=y
|
||||||
CONFIG_CPU_TLB_V4WBI=y
|
CONFIG_CPU_TLB_V4WBI=y
|
||||||
|
CONFIG_CPU_CP15=y
|
||||||
|
CONFIG_CPU_CP15_MMU=y
|
||||||
|
|
||||||
#
|
#
|
||||||
# Processor Features
|
# Processor Features
|
||||||
|
@ -249,8 +258,9 @@ CONFIG_BINFMT_AOUT=y
|
||||||
# Power management options
|
# Power management options
|
||||||
#
|
#
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
CONFIG_PM_LEGACY=y
|
# CONFIG_PM_LEGACY is not set
|
||||||
# CONFIG_PM_DEBUG is not set
|
# CONFIG_PM_DEBUG is not set
|
||||||
|
# CONFIG_PM_SYSFS_DEPRECATED is not set
|
||||||
CONFIG_APM=y
|
CONFIG_APM=y
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -266,6 +276,7 @@ CONFIG_NET=y
|
||||||
CONFIG_UNIX=y
|
CONFIG_UNIX=y
|
||||||
CONFIG_XFRM=y
|
CONFIG_XFRM=y
|
||||||
# CONFIG_XFRM_USER is not set
|
# CONFIG_XFRM_USER is not set
|
||||||
|
# CONFIG_XFRM_SUB_POLICY is not set
|
||||||
# CONFIG_NET_KEY is not set
|
# CONFIG_NET_KEY is not set
|
||||||
CONFIG_INET=y
|
CONFIG_INET=y
|
||||||
# CONFIG_IP_MULTICAST is not set
|
# CONFIG_IP_MULTICAST is not set
|
||||||
|
@ -286,10 +297,12 @@ CONFIG_IP_PNP_BOOTP=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
CONFIG_INET_XFRM_MODE_TRANSPORT=y
|
||||||
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
CONFIG_INET_XFRM_MODE_TUNNEL=y
|
||||||
|
CONFIG_INET_XFRM_MODE_BEET=y
|
||||||
CONFIG_INET_DIAG=y
|
CONFIG_INET_DIAG=y
|
||||||
CONFIG_INET_TCP_DIAG=y
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_CUBIC=y
|
||||||
|
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET6_TUNNEL is not set
|
# CONFIG_INET6_TUNNEL is not set
|
||||||
|
@ -377,6 +390,7 @@ CONFIG_MTD_BLOCK=y
|
||||||
# CONFIG_NFTL is not set
|
# CONFIG_NFTL is not set
|
||||||
# CONFIG_INFTL is not set
|
# CONFIG_INFTL is not set
|
||||||
# CONFIG_RFD_FTL is not set
|
# CONFIG_RFD_FTL is not set
|
||||||
|
# CONFIG_SSFDC is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# RAM/ROM/Flash chip drivers
|
# RAM/ROM/Flash chip drivers
|
||||||
|
@ -418,6 +432,8 @@ CONFIG_MTD_BAST_MAXSIZE=4
|
||||||
#
|
#
|
||||||
# Self-contained MTD device drivers
|
# Self-contained MTD device drivers
|
||||||
#
|
#
|
||||||
|
# CONFIG_MTD_DATAFLASH is not set
|
||||||
|
# CONFIG_MTD_M25P80 is not set
|
||||||
# CONFIG_MTD_SLRAM is not set
|
# CONFIG_MTD_SLRAM is not set
|
||||||
# CONFIG_MTD_PHRAM is not set
|
# CONFIG_MTD_PHRAM is not set
|
||||||
# CONFIG_MTD_MTDRAM is not set
|
# CONFIG_MTD_MTDRAM is not set
|
||||||
|
@ -512,6 +528,7 @@ CONFIG_BLK_DEV_IDE_BAST=y
|
||||||
#
|
#
|
||||||
# CONFIG_RAID_ATTRS is not set
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
|
# CONFIG_SCSI_NETLINK is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multi-device support (RAID and LVM)
|
# Multi-device support (RAID and LVM)
|
||||||
|
@ -606,6 +623,7 @@ CONFIG_DM9000=y
|
||||||
# Input device support
|
# Input device support
|
||||||
#
|
#
|
||||||
CONFIG_INPUT=y
|
CONFIG_INPUT=y
|
||||||
|
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Userland interfaces
|
# Userland interfaces
|
||||||
|
@ -628,6 +646,7 @@ CONFIG_KEYBOARD_ATKBD=y
|
||||||
# CONFIG_KEYBOARD_LKKBD is not set
|
# CONFIG_KEYBOARD_LKKBD is not set
|
||||||
# CONFIG_KEYBOARD_XTKBD is not set
|
# CONFIG_KEYBOARD_XTKBD is not set
|
||||||
# CONFIG_KEYBOARD_NEWTON is not set
|
# CONFIG_KEYBOARD_NEWTON is not set
|
||||||
|
# CONFIG_KEYBOARD_STOWAWAY is not set
|
||||||
CONFIG_INPUT_MOUSE=y
|
CONFIG_INPUT_MOUSE=y
|
||||||
CONFIG_MOUSE_PS2=y
|
CONFIG_MOUSE_PS2=y
|
||||||
# CONFIG_MOUSE_SERIAL is not set
|
# CONFIG_MOUSE_SERIAL is not set
|
||||||
|
@ -734,7 +753,6 @@ CONFIG_S3C2410_WATCHDOG=y
|
||||||
# CONFIG_USBPCWATCHDOG is not set
|
# CONFIG_USBPCWATCHDOG is not set
|
||||||
CONFIG_HW_RANDOM=y
|
CONFIG_HW_RANDOM=y
|
||||||
# CONFIG_NVRAM is not set
|
# CONFIG_NVRAM is not set
|
||||||
CONFIG_S3C2410_RTC=y
|
|
||||||
# CONFIG_DTLK is not set
|
# CONFIG_DTLK is not set
|
||||||
# CONFIG_R3964 is not set
|
# CONFIG_R3964 is not set
|
||||||
|
|
||||||
|
@ -747,7 +765,6 @@ CONFIG_S3C2410_RTC=y
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
# CONFIG_TELCLOCK is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -792,12 +809,26 @@ CONFIG_SENSORS_EEPROM=m
|
||||||
#
|
#
|
||||||
# SPI support
|
# SPI support
|
||||||
#
|
#
|
||||||
# CONFIG_SPI is not set
|
CONFIG_SPI=y
|
||||||
# CONFIG_SPI_MASTER is not set
|
# CONFIG_SPI_DEBUG is not set
|
||||||
|
CONFIG_SPI_MASTER=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# SPI Master Controller Drivers
|
||||||
|
#
|
||||||
|
CONFIG_SPI_BITBANG=m
|
||||||
|
# CONFIG_SPI_BUTTERFLY is not set
|
||||||
|
CONFIG_SPI_S3C24XX_GPIO=m
|
||||||
|
CONFIG_SPI_S3C24XX=m
|
||||||
|
|
||||||
|
#
|
||||||
|
# SPI Protocol Masters
|
||||||
|
#
|
||||||
|
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
|
# CONFIG_W1 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
|
@ -820,6 +851,7 @@ CONFIG_HWMON_VID=m
|
||||||
# CONFIG_SENSORS_GL520SM is not set
|
# CONFIG_SENSORS_GL520SM is not set
|
||||||
# CONFIG_SENSORS_IT87 is not set
|
# CONFIG_SENSORS_IT87 is not set
|
||||||
# CONFIG_SENSORS_LM63 is not set
|
# CONFIG_SENSORS_LM63 is not set
|
||||||
|
# CONFIG_SENSORS_LM70 is not set
|
||||||
CONFIG_SENSORS_LM75=m
|
CONFIG_SENSORS_LM75=m
|
||||||
# CONFIG_SENSORS_LM77 is not set
|
# CONFIG_SENSORS_LM77 is not set
|
||||||
CONFIG_SENSORS_LM78=m
|
CONFIG_SENSORS_LM78=m
|
||||||
|
@ -834,6 +866,7 @@ CONFIG_SENSORS_LM85=m
|
||||||
# CONFIG_SENSORS_SMSC47M1 is not set
|
# CONFIG_SENSORS_SMSC47M1 is not set
|
||||||
# CONFIG_SENSORS_SMSC47M192 is not set
|
# CONFIG_SENSORS_SMSC47M192 is not set
|
||||||
# CONFIG_SENSORS_SMSC47B397 is not set
|
# CONFIG_SENSORS_SMSC47B397 is not set
|
||||||
|
# CONFIG_SENSORS_VT1211 is not set
|
||||||
# CONFIG_SENSORS_W83781D is not set
|
# CONFIG_SENSORS_W83781D is not set
|
||||||
# CONFIG_SENSORS_W83791D is not set
|
# CONFIG_SENSORS_W83791D is not set
|
||||||
# CONFIG_SENSORS_W83792D is not set
|
# CONFIG_SENSORS_W83792D is not set
|
||||||
|
@ -845,25 +878,31 @@ CONFIG_SENSORS_LM85=m
|
||||||
#
|
#
|
||||||
# Misc devices
|
# Misc devices
|
||||||
#
|
#
|
||||||
|
# CONFIG_TIFM_CORE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# LED devices
|
# LED devices
|
||||||
#
|
#
|
||||||
# CONFIG_NEW_LEDS is not set
|
CONFIG_NEW_LEDS=y
|
||||||
|
CONFIG_LEDS_CLASS=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# LED drivers
|
# LED drivers
|
||||||
#
|
#
|
||||||
|
CONFIG_LEDS_S3C24XX=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# LED Triggers
|
# LED Triggers
|
||||||
#
|
#
|
||||||
|
CONFIG_LEDS_TRIGGERS=y
|
||||||
|
CONFIG_LEDS_TRIGGER_TIMER=m
|
||||||
|
# CONFIG_LEDS_TRIGGER_IDE_DISK is not set
|
||||||
|
CONFIG_LEDS_TRIGGER_HEARTBEAT=m
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
# CONFIG_VIDEO_DEV is not set
|
# CONFIG_VIDEO_DEV is not set
|
||||||
CONFIG_VIDEO_V4L2=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Digital Video Broadcasting Devices
|
# Digital Video Broadcasting Devices
|
||||||
|
@ -876,6 +915,7 @@ CONFIG_VIDEO_V4L2=y
|
||||||
#
|
#
|
||||||
CONFIG_FIRMWARE_EDID=y
|
CONFIG_FIRMWARE_EDID=y
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
|
# CONFIG_FB_DDC is not set
|
||||||
CONFIG_FB_CFB_FILLRECT=y
|
CONFIG_FB_CFB_FILLRECT=y
|
||||||
CONFIG_FB_CFB_COPYAREA=y
|
CONFIG_FB_CFB_COPYAREA=y
|
||||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
CONFIG_FB_CFB_IMAGEBLIT=y
|
||||||
|
@ -951,7 +991,6 @@ CONFIG_USB_OHCI_LITTLE_ENDIAN=y
|
||||||
#
|
#
|
||||||
# may also be needed; see USB_STORAGE Help for more information
|
# may also be needed; see USB_STORAGE Help for more information
|
||||||
#
|
#
|
||||||
# CONFIG_USB_STORAGE is not set
|
|
||||||
# CONFIG_USB_LIBUSUAL is not set
|
# CONFIG_USB_LIBUSUAL is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1007,6 +1046,7 @@ CONFIG_USB_MON=y
|
||||||
#
|
#
|
||||||
# CONFIG_USB_EMI62 is not set
|
# CONFIG_USB_EMI62 is not set
|
||||||
# CONFIG_USB_EMI26 is not set
|
# CONFIG_USB_EMI26 is not set
|
||||||
|
# CONFIG_USB_ADUTUX is not set
|
||||||
# CONFIG_USB_AUERSWALD is not set
|
# CONFIG_USB_AUERSWALD is not set
|
||||||
# CONFIG_USB_RIO500 is not set
|
# CONFIG_USB_RIO500 is not set
|
||||||
# CONFIG_USB_LEGOTOWER is not set
|
# CONFIG_USB_LEGOTOWER is not set
|
||||||
|
@ -1014,11 +1054,12 @@ CONFIG_USB_MON=y
|
||||||
# CONFIG_USB_LED is not set
|
# CONFIG_USB_LED is not set
|
||||||
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
# CONFIG_USB_CYPRESS_CY7C63 is not set
|
||||||
# CONFIG_USB_CYTHERM is not set
|
# CONFIG_USB_CYTHERM is not set
|
||||||
# CONFIG_USB_PHIDGETKIT is not set
|
# CONFIG_USB_PHIDGET is not set
|
||||||
# CONFIG_USB_PHIDGETSERVO is not set
|
|
||||||
# CONFIG_USB_IDMOUSE is not set
|
# CONFIG_USB_IDMOUSE is not set
|
||||||
|
# CONFIG_USB_FTDI_ELAN is not set
|
||||||
# CONFIG_USB_APPLEDISPLAY is not set
|
# CONFIG_USB_APPLEDISPLAY is not set
|
||||||
# CONFIG_USB_LD is not set
|
# CONFIG_USB_LD is not set
|
||||||
|
# CONFIG_USB_TRANCEVIBRATOR is not set
|
||||||
# CONFIG_USB_TEST is not set
|
# CONFIG_USB_TEST is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -1039,7 +1080,37 @@ CONFIG_USB_MON=y
|
||||||
# Real Time Clock
|
# Real Time Clock
|
||||||
#
|
#
|
||||||
CONFIG_RTC_LIB=y
|
CONFIG_RTC_LIB=y
|
||||||
# CONFIG_RTC_CLASS is not set
|
CONFIG_RTC_CLASS=y
|
||||||
|
CONFIG_RTC_HCTOSYS=y
|
||||||
|
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
||||||
|
# CONFIG_RTC_DEBUG is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# RTC interfaces
|
||||||
|
#
|
||||||
|
CONFIG_RTC_INTF_SYSFS=y
|
||||||
|
CONFIG_RTC_INTF_PROC=y
|
||||||
|
CONFIG_RTC_INTF_DEV=y
|
||||||
|
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# RTC drivers
|
||||||
|
#
|
||||||
|
# CONFIG_RTC_DRV_X1205 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1307 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1553 is not set
|
||||||
|
# CONFIG_RTC_DRV_ISL1208 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1672 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1742 is not set
|
||||||
|
# CONFIG_RTC_DRV_PCF8563 is not set
|
||||||
|
# CONFIG_RTC_DRV_PCF8583 is not set
|
||||||
|
# CONFIG_RTC_DRV_RS5C348 is not set
|
||||||
|
# CONFIG_RTC_DRV_RS5C372 is not set
|
||||||
|
CONFIG_RTC_DRV_S3C=y
|
||||||
|
# CONFIG_RTC_DRV_M48T86 is not set
|
||||||
|
# CONFIG_RTC_DRV_TEST is not set
|
||||||
|
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||||
|
# CONFIG_RTC_DRV_V3020 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# File systems
|
# File systems
|
||||||
|
@ -1051,6 +1122,7 @@ CONFIG_EXT3_FS=y
|
||||||
CONFIG_EXT3_FS_XATTR=y
|
CONFIG_EXT3_FS_XATTR=y
|
||||||
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
# CONFIG_EXT3_FS_POSIX_ACL is not set
|
||||||
# CONFIG_EXT3_FS_SECURITY is not set
|
# CONFIG_EXT3_FS_SECURITY is not set
|
||||||
|
# CONFIG_EXT4DEV_FS is not set
|
||||||
CONFIG_JBD=y
|
CONFIG_JBD=y
|
||||||
# CONFIG_JBD_DEBUG is not set
|
# CONFIG_JBD_DEBUG is not set
|
||||||
CONFIG_FS_MBCACHE=y
|
CONFIG_FS_MBCACHE=y
|
||||||
|
@ -1058,6 +1130,7 @@ CONFIG_FS_MBCACHE=y
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
# CONFIG_FS_POSIX_ACL is not set
|
# CONFIG_FS_POSIX_ACL is not set
|
||||||
# CONFIG_XFS_FS is not set
|
# CONFIG_XFS_FS is not set
|
||||||
|
# CONFIG_GFS2_FS is not set
|
||||||
# CONFIG_OCFS2_FS is not set
|
# CONFIG_OCFS2_FS is not set
|
||||||
# CONFIG_MINIX_FS is not set
|
# CONFIG_MINIX_FS is not set
|
||||||
CONFIG_ROMFS_FS=y
|
CONFIG_ROMFS_FS=y
|
||||||
|
@ -1089,6 +1162,7 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||||
# Pseudo filesystems
|
# Pseudo filesystems
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
|
CONFIG_PROC_SYSCTL=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
# CONFIG_TMPFS is not set
|
# CONFIG_TMPFS is not set
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
|
@ -1219,6 +1293,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
||||||
# Kernel hacking
|
# Kernel hacking
|
||||||
#
|
#
|
||||||
# CONFIG_PRINTK_TIME is not set
|
# CONFIG_PRINTK_TIME is not set
|
||||||
|
CONFIG_ENABLE_MUST_CHECK=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
# CONFIG_UNUSED_SYMBOLS is not set
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
|
@ -1238,9 +1313,10 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
CONFIG_DEBUG_INFO=y
|
CONFIG_DEBUG_INFO=y
|
||||||
# CONFIG_DEBUG_FS is not set
|
# CONFIG_DEBUG_FS is not set
|
||||||
# CONFIG_DEBUG_VM is not set
|
# CONFIG_DEBUG_VM is not set
|
||||||
|
# CONFIG_DEBUG_LIST is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
# CONFIG_UNWIND_INFO is not set
|
|
||||||
CONFIG_FORCED_INLINING=y
|
CONFIG_FORCED_INLINING=y
|
||||||
|
# CONFIG_HEADERS_CHECK is not set
|
||||||
# CONFIG_RCU_TORTURE_TEST is not set
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
CONFIG_DEBUG_USER=y
|
CONFIG_DEBUG_USER=y
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
# CONFIG_DEBUG_WAITQ is not set
|
||||||
|
@ -1261,10 +1337,6 @@ CONFIG_DEBUG_S3C2410_UART=0
|
||||||
#
|
#
|
||||||
# CONFIG_CRYPTO is not set
|
# CONFIG_CRYPTO is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Hardware crypto devices
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,735 +0,0 @@
|
||||||
#
|
|
||||||
# Automatically generated make config: don't edit
|
|
||||||
# Linux kernel version: 2.6.12-rc1-bk2
|
|
||||||
# Sun Mar 27 22:42:40 2005
|
|
||||||
#
|
|
||||||
CONFIG_ARM=y
|
|
||||||
CONFIG_MMU=y
|
|
||||||
CONFIG_UID16=y
|
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
|
||||||
CONFIG_GENERIC_IOMAP=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Code maturity level options
|
|
||||||
#
|
|
||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
CONFIG_CLEAN_COMPILE=y
|
|
||||||
CONFIG_BROKEN_ON_SMP=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# General setup
|
|
||||||
#
|
|
||||||
CONFIG_LOCALVERSION=""
|
|
||||||
CONFIG_SWAP=y
|
|
||||||
CONFIG_SYSVIPC=y
|
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
|
||||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
|
||||||
CONFIG_SYSCTL=y
|
|
||||||
# CONFIG_AUDIT is not set
|
|
||||||
# CONFIG_HOTPLUG is not set
|
|
||||||
CONFIG_KOBJECT_UEVENT=y
|
|
||||||
# CONFIG_IKCONFIG is not set
|
|
||||||
# CONFIG_EMBEDDED is not set
|
|
||||||
CONFIG_KALLSYMS=y
|
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
|
||||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
|
||||||
CONFIG_BASE_FULL=y
|
|
||||||
CONFIG_FUTEX=y
|
|
||||||
CONFIG_EPOLL=y
|
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
|
||||||
CONFIG_SHMEM=y
|
|
||||||
CONFIG_CC_ALIGN_FUNCTIONS=0
|
|
||||||
CONFIG_CC_ALIGN_LABELS=0
|
|
||||||
CONFIG_CC_ALIGN_LOOPS=0
|
|
||||||
CONFIG_CC_ALIGN_JUMPS=0
|
|
||||||
# CONFIG_TINY_SHMEM is not set
|
|
||||||
CONFIG_BASE_SMALL=0
|
|
||||||
|
|
||||||
#
|
|
||||||
# Loadable module support
|
|
||||||
#
|
|
||||||
# CONFIG_MODULES is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# System Type
|
|
||||||
#
|
|
||||||
# CONFIG_ARCH_CLPS7500 is not set
|
|
||||||
# CONFIG_ARCH_CLPS711X is not set
|
|
||||||
# CONFIG_ARCH_CO285 is not set
|
|
||||||
# CONFIG_ARCH_EBSA110 is not set
|
|
||||||
# CONFIG_ARCH_FOOTBRIDGE is not set
|
|
||||||
# CONFIG_ARCH_INTEGRATOR is not set
|
|
||||||
# CONFIG_ARCH_IOP3XX is not set
|
|
||||||
# CONFIG_ARCH_IXP4XX is not set
|
|
||||||
# CONFIG_ARCH_IXP2000 is not set
|
|
||||||
# CONFIG_ARCH_L7200 is not set
|
|
||||||
# CONFIG_ARCH_PXA is not set
|
|
||||||
# CONFIG_ARCH_RPC is not set
|
|
||||||
# CONFIG_ARCH_SA1100 is not set
|
|
||||||
CONFIG_ARCH_S3C2410=y
|
|
||||||
# CONFIG_ARCH_SHARK is not set
|
|
||||||
# CONFIG_ARCH_LH7A40X is not set
|
|
||||||
# CONFIG_ARCH_OMAP is not set
|
|
||||||
# CONFIG_ARCH_VERSATILE is not set
|
|
||||||
# CONFIG_ARCH_IMX is not set
|
|
||||||
# CONFIG_ARCH_H720X is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# S3C24XX Implementations
|
|
||||||
#
|
|
||||||
# CONFIG_ARCH_BAST is not set
|
|
||||||
# CONFIG_ARCH_H1940 is not set
|
|
||||||
# CONFIG_MACH_N30 is not set
|
|
||||||
CONFIG_ARCH_SMDK2410=y
|
|
||||||
# CONFIG_ARCH_S3C2440 is not set
|
|
||||||
# CONFIG_MACH_VR1000 is not set
|
|
||||||
# CONFIG_MACH_RX3715 is not set
|
|
||||||
# CONFIG_MACH_OTOM is not set
|
|
||||||
# CONFIG_MACH_NEXCODER_2440 is not set
|
|
||||||
CONFIG_CPU_S3C2410=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# S3C2410 Boot
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# S3C2410 Setup
|
|
||||||
#
|
|
||||||
# CONFIG_S3C2410_DMA is not set
|
|
||||||
CONFIG_S3C2410_LOWLEVEL_UART_PORT=0
|
|
||||||
|
|
||||||
#
|
|
||||||
# Processor Type
|
|
||||||
#
|
|
||||||
CONFIG_CPU_32=y
|
|
||||||
CONFIG_CPU_ARM920T=y
|
|
||||||
CONFIG_CPU_32v4=y
|
|
||||||
CONFIG_CPU_ABRT_EV4T=y
|
|
||||||
CONFIG_CPU_CACHE_V4WT=y
|
|
||||||
CONFIG_CPU_CACHE_VIVT=y
|
|
||||||
CONFIG_CPU_COPY_V4WB=y
|
|
||||||
CONFIG_CPU_TLB_V4WBI=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Processor Features
|
|
||||||
#
|
|
||||||
CONFIG_ARM_THUMB=y
|
|
||||||
# CONFIG_CPU_ICACHE_DISABLE is not set
|
|
||||||
# CONFIG_CPU_DCACHE_DISABLE is not set
|
|
||||||
# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Bus support
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# PCCARD (PCMCIA/CardBus) support
|
|
||||||
#
|
|
||||||
# CONFIG_PCCARD is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Kernel Features
|
|
||||||
#
|
|
||||||
# CONFIG_PREEMPT is not set
|
|
||||||
CONFIG_ALIGNMENT_TRAP=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Boot options
|
|
||||||
#
|
|
||||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
|
||||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
|
||||||
CONFIG_CMDLINE="root=1f04 mem=32M"
|
|
||||||
# CONFIG_XIP_KERNEL is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Floating point emulation
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# At least one emulation must be selected
|
|
||||||
#
|
|
||||||
# CONFIG_FPE_NWFPE is not set
|
|
||||||
# CONFIG_FPE_FASTFPE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Userspace binary formats
|
|
||||||
#
|
|
||||||
CONFIG_BINFMT_ELF=y
|
|
||||||
CONFIG_BINFMT_AOUT=y
|
|
||||||
# CONFIG_BINFMT_MISC is not set
|
|
||||||
# CONFIG_ARTHUR is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Power management options
|
|
||||||
#
|
|
||||||
# CONFIG_PM is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Device Drivers
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Generic Driver Options
|
|
||||||
#
|
|
||||||
CONFIG_STANDALONE=y
|
|
||||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
|
||||||
# CONFIG_FW_LOADER is not set
|
|
||||||
# CONFIG_DEBUG_DRIVER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Memory Technology Devices (MTD)
|
|
||||||
#
|
|
||||||
CONFIG_MTD=y
|
|
||||||
# CONFIG_MTD_DEBUG is not set
|
|
||||||
# CONFIG_MTD_CONCAT is not set
|
|
||||||
# CONFIG_MTD_PARTITIONS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# User Modules And Translation Layers
|
|
||||||
#
|
|
||||||
CONFIG_MTD_CHAR=y
|
|
||||||
CONFIG_MTD_BLOCK=y
|
|
||||||
# CONFIG_FTL is not set
|
|
||||||
# CONFIG_NFTL is not set
|
|
||||||
# CONFIG_INFTL is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# RAM/ROM/Flash chip drivers
|
|
||||||
#
|
|
||||||
CONFIG_MTD_CFI=y
|
|
||||||
# CONFIG_MTD_JEDECPROBE is not set
|
|
||||||
CONFIG_MTD_GEN_PROBE=y
|
|
||||||
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
|
||||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
|
||||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
|
||||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
|
||||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
|
||||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
|
||||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
|
||||||
CONFIG_MTD_CFI_I1=y
|
|
||||||
CONFIG_MTD_CFI_I2=y
|
|
||||||
# CONFIG_MTD_CFI_I4 is not set
|
|
||||||
# CONFIG_MTD_CFI_I8 is not set
|
|
||||||
CONFIG_MTD_CFI_INTELEXT=y
|
|
||||||
# CONFIG_MTD_CFI_AMDSTD is not set
|
|
||||||
# CONFIG_MTD_CFI_STAA is not set
|
|
||||||
CONFIG_MTD_CFI_UTIL=y
|
|
||||||
# CONFIG_MTD_RAM is not set
|
|
||||||
# CONFIG_MTD_ROM is not set
|
|
||||||
# CONFIG_MTD_ABSENT is not set
|
|
||||||
# CONFIG_MTD_XIP is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Mapping drivers for chip access
|
|
||||||
#
|
|
||||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
|
||||||
# CONFIG_MTD_PHYSMAP is not set
|
|
||||||
# CONFIG_MTD_ARM_INTEGRATOR is not set
|
|
||||||
# CONFIG_MTD_EDB7312 is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Self-contained MTD device drivers
|
|
||||||
#
|
|
||||||
# CONFIG_MTD_SLRAM is not set
|
|
||||||
# CONFIG_MTD_PHRAM is not set
|
|
||||||
# CONFIG_MTD_MTDRAM is not set
|
|
||||||
# CONFIG_MTD_BLKMTD is not set
|
|
||||||
# CONFIG_MTD_BLOCK2MTD is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Disk-On-Chip Device Drivers
|
|
||||||
#
|
|
||||||
# CONFIG_MTD_DOC2000 is not set
|
|
||||||
# CONFIG_MTD_DOC2001 is not set
|
|
||||||
# CONFIG_MTD_DOC2001PLUS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# NAND Flash Device Drivers
|
|
||||||
#
|
|
||||||
# CONFIG_MTD_NAND is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Parallel port support
|
|
||||||
#
|
|
||||||
# CONFIG_PARPORT is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Plug and Play support
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Block devices
|
|
||||||
#
|
|
||||||
# CONFIG_BLK_DEV_FD is not set
|
|
||||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
|
||||||
# CONFIG_BLK_DEV_LOOP is not set
|
|
||||||
# CONFIG_BLK_DEV_NBD is not set
|
|
||||||
CONFIG_BLK_DEV_RAM=y
|
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
|
||||||
# CONFIG_BLK_DEV_INITRD is not set
|
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# IO Schedulers
|
|
||||||
#
|
|
||||||
CONFIG_IOSCHED_NOOP=y
|
|
||||||
CONFIG_IOSCHED_AS=y
|
|
||||||
CONFIG_IOSCHED_DEADLINE=y
|
|
||||||
CONFIG_IOSCHED_CFQ=y
|
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# ATA/ATAPI/MFM/RLL support
|
|
||||||
#
|
|
||||||
# CONFIG_IDE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# SCSI device support
|
|
||||||
#
|
|
||||||
# CONFIG_SCSI is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Multi-device support (RAID and LVM)
|
|
||||||
#
|
|
||||||
# CONFIG_MD is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Fusion MPT device support
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# IEEE 1394 (FireWire) support
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# I2O device support
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Networking support
|
|
||||||
#
|
|
||||||
CONFIG_NET=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Networking options
|
|
||||||
#
|
|
||||||
# CONFIG_PACKET is not set
|
|
||||||
# CONFIG_NETLINK_DEV is not set
|
|
||||||
CONFIG_UNIX=y
|
|
||||||
# CONFIG_NET_KEY is not set
|
|
||||||
CONFIG_INET=y
|
|
||||||
# CONFIG_IP_MULTICAST is not set
|
|
||||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
|
||||||
CONFIG_IP_PNP=y
|
|
||||||
# CONFIG_IP_PNP_DHCP is not set
|
|
||||||
CONFIG_IP_PNP_BOOTP=y
|
|
||||||
# CONFIG_IP_PNP_RARP is not set
|
|
||||||
# CONFIG_NET_IPIP is not set
|
|
||||||
# CONFIG_NET_IPGRE is not set
|
|
||||||
# CONFIG_ARPD is not set
|
|
||||||
# CONFIG_SYN_COOKIES is not set
|
|
||||||
# CONFIG_INET_AH is not set
|
|
||||||
# CONFIG_INET_ESP is not set
|
|
||||||
# CONFIG_INET_IPCOMP is not set
|
|
||||||
# CONFIG_INET_TUNNEL is not set
|
|
||||||
# CONFIG_IP_TCPDIAG is not set
|
|
||||||
# CONFIG_IP_TCPDIAG_IPV6 is not set
|
|
||||||
# CONFIG_IPV6 is not set
|
|
||||||
# CONFIG_NETFILTER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# SCTP Configuration (EXPERIMENTAL)
|
|
||||||
#
|
|
||||||
# CONFIG_IP_SCTP is not set
|
|
||||||
# CONFIG_ATM is not set
|
|
||||||
# CONFIG_BRIDGE is not set
|
|
||||||
# CONFIG_VLAN_8021Q is not set
|
|
||||||
# CONFIG_DECNET is not set
|
|
||||||
# CONFIG_LLC2 is not set
|
|
||||||
# CONFIG_IPX is not set
|
|
||||||
# CONFIG_ATALK is not set
|
|
||||||
# CONFIG_X25 is not set
|
|
||||||
# CONFIG_LAPB is not set
|
|
||||||
# CONFIG_NET_DIVERT is not set
|
|
||||||
# CONFIG_ECONET is not set
|
|
||||||
# CONFIG_WAN_ROUTER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# QoS and/or fair queueing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_SCHED is not set
|
|
||||||
# CONFIG_NET_CLS_ROUTE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Network testing
|
|
||||||
#
|
|
||||||
# CONFIG_NET_PKTGEN is not set
|
|
||||||
# CONFIG_NETPOLL is not set
|
|
||||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
|
||||||
# CONFIG_HAMRADIO is not set
|
|
||||||
# CONFIG_IRDA is not set
|
|
||||||
# CONFIG_BT is not set
|
|
||||||
CONFIG_NETDEVICES=y
|
|
||||||
# CONFIG_DUMMY is not set
|
|
||||||
# CONFIG_BONDING is not set
|
|
||||||
# CONFIG_EQUALIZER is not set
|
|
||||||
# CONFIG_TUN is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Ethernet (10 or 100Mbit)
|
|
||||||
#
|
|
||||||
CONFIG_NET_ETHERNET=y
|
|
||||||
# CONFIG_MII is not set
|
|
||||||
# CONFIG_SMC91X is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Ethernet (1000 Mbit)
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Ethernet (10000 Mbit)
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Token Ring devices
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Wireless LAN (non-hamradio)
|
|
||||||
#
|
|
||||||
# CONFIG_NET_RADIO is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Wan interfaces
|
|
||||||
#
|
|
||||||
# CONFIG_WAN is not set
|
|
||||||
# CONFIG_PPP is not set
|
|
||||||
# CONFIG_SLIP is not set
|
|
||||||
# CONFIG_SHAPER is not set
|
|
||||||
# CONFIG_NETCONSOLE is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# ISDN subsystem
|
|
||||||
#
|
|
||||||
# CONFIG_ISDN is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Input device support
|
|
||||||
#
|
|
||||||
CONFIG_INPUT=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Userland interfaces
|
|
||||||
#
|
|
||||||
CONFIG_INPUT_MOUSEDEV=y
|
|
||||||
CONFIG_INPUT_MOUSEDEV_PSAUX=y
|
|
||||||
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
|
|
||||||
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
|
|
||||||
# CONFIG_INPUT_JOYDEV is not set
|
|
||||||
# CONFIG_INPUT_TSDEV is not set
|
|
||||||
# CONFIG_INPUT_EVDEV is not set
|
|
||||||
# CONFIG_INPUT_EVBUG is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Input Device Drivers
|
|
||||||
#
|
|
||||||
CONFIG_INPUT_KEYBOARD=y
|
|
||||||
CONFIG_KEYBOARD_ATKBD=y
|
|
||||||
# CONFIG_KEYBOARD_SUNKBD is not set
|
|
||||||
# CONFIG_KEYBOARD_LKKBD is not set
|
|
||||||
# CONFIG_KEYBOARD_XTKBD is not set
|
|
||||||
# CONFIG_KEYBOARD_NEWTON is not set
|
|
||||||
CONFIG_INPUT_MOUSE=y
|
|
||||||
CONFIG_MOUSE_PS2=y
|
|
||||||
# CONFIG_MOUSE_SERIAL is not set
|
|
||||||
# CONFIG_MOUSE_VSXXXAA is not set
|
|
||||||
# CONFIG_INPUT_JOYSTICK is not set
|
|
||||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
|
||||||
# CONFIG_INPUT_MISC is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Hardware I/O ports
|
|
||||||
#
|
|
||||||
CONFIG_SERIO=y
|
|
||||||
CONFIG_SERIO_SERPORT=y
|
|
||||||
CONFIG_SERIO_LIBPS2=y
|
|
||||||
# CONFIG_SERIO_RAW is not set
|
|
||||||
# CONFIG_GAMEPORT is not set
|
|
||||||
CONFIG_SOUND_GAMEPORT=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Character devices
|
|
||||||
#
|
|
||||||
CONFIG_VT=y
|
|
||||||
CONFIG_VT_CONSOLE=y
|
|
||||||
CONFIG_HW_CONSOLE=y
|
|
||||||
# CONFIG_SERIAL_NONSTANDARD is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Serial drivers
|
|
||||||
#
|
|
||||||
# CONFIG_SERIAL_8250 is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Non-8250 serial port support
|
|
||||||
#
|
|
||||||
CONFIG_SERIAL_S3C2410=y
|
|
||||||
CONFIG_SERIAL_S3C2410_CONSOLE=y
|
|
||||||
CONFIG_SERIAL_CORE=y
|
|
||||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
|
||||||
CONFIG_UNIX98_PTYS=y
|
|
||||||
CONFIG_LEGACY_PTYS=y
|
|
||||||
CONFIG_LEGACY_PTY_COUNT=256
|
|
||||||
|
|
||||||
#
|
|
||||||
# IPMI
|
|
||||||
#
|
|
||||||
# CONFIG_IPMI_HANDLER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Watchdog Cards
|
|
||||||
#
|
|
||||||
# CONFIG_WATCHDOG is not set
|
|
||||||
# CONFIG_NVRAM is not set
|
|
||||||
# CONFIG_RTC is not set
|
|
||||||
# CONFIG_S3C2410_RTC is not set
|
|
||||||
# CONFIG_DTLK is not set
|
|
||||||
# CONFIG_R3964 is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Ftape, the floppy tape device driver
|
|
||||||
#
|
|
||||||
# CONFIG_DRM is not set
|
|
||||||
# CONFIG_RAW_DRIVER is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# TPM devices
|
|
||||||
#
|
|
||||||
# CONFIG_TCG_TPM is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# I2C support
|
|
||||||
#
|
|
||||||
# CONFIG_I2C is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Misc devices
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Multimedia devices
|
|
||||||
#
|
|
||||||
# CONFIG_VIDEO_DEV is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Digital Video Broadcasting Devices
|
|
||||||
#
|
|
||||||
# CONFIG_DVB is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Graphics support
|
|
||||||
#
|
|
||||||
CONFIG_FB=y
|
|
||||||
CONFIG_FB_CFB_FILLRECT=y
|
|
||||||
CONFIG_FB_CFB_COPYAREA=y
|
|
||||||
CONFIG_FB_CFB_IMAGEBLIT=y
|
|
||||||
CONFIG_FB_SOFT_CURSOR=y
|
|
||||||
# CONFIG_FB_MODE_HELPERS is not set
|
|
||||||
# CONFIG_FB_TILEBLITTING is not set
|
|
||||||
CONFIG_FB_VIRTUAL=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Console display driver support
|
|
||||||
#
|
|
||||||
# CONFIG_VGA_CONSOLE is not set
|
|
||||||
CONFIG_DUMMY_CONSOLE=y
|
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
|
||||||
# CONFIG_FONTS is not set
|
|
||||||
CONFIG_FONT_8x8=y
|
|
||||||
CONFIG_FONT_8x16=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Logo configuration
|
|
||||||
#
|
|
||||||
# CONFIG_LOGO is not set
|
|
||||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Sound
|
|
||||||
#
|
|
||||||
# CONFIG_SOUND is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB support
|
|
||||||
#
|
|
||||||
CONFIG_USB_ARCH_HAS_HCD=y
|
|
||||||
# CONFIG_USB_ARCH_HAS_OHCI is not set
|
|
||||||
# CONFIG_USB is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# USB Gadget Support
|
|
||||||
#
|
|
||||||
# CONFIG_USB_GADGET is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# MMC/SD Card support
|
|
||||||
#
|
|
||||||
# CONFIG_MMC is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# File systems
|
|
||||||
#
|
|
||||||
CONFIG_EXT2_FS=y
|
|
||||||
# CONFIG_EXT2_FS_XATTR is not set
|
|
||||||
# CONFIG_EXT3_FS is not set
|
|
||||||
# CONFIG_JBD is not set
|
|
||||||
# CONFIG_REISERFS_FS is not set
|
|
||||||
# CONFIG_JFS_FS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# XFS support
|
|
||||||
#
|
|
||||||
# CONFIG_XFS_FS is not set
|
|
||||||
# CONFIG_MINIX_FS is not set
|
|
||||||
CONFIG_ROMFS_FS=y
|
|
||||||
# CONFIG_QUOTA is not set
|
|
||||||
CONFIG_DNOTIFY=y
|
|
||||||
# CONFIG_AUTOFS_FS is not set
|
|
||||||
# CONFIG_AUTOFS4_FS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# CD-ROM/DVD Filesystems
|
|
||||||
#
|
|
||||||
# CONFIG_ISO9660_FS is not set
|
|
||||||
# CONFIG_UDF_FS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# DOS/FAT/NT Filesystems
|
|
||||||
#
|
|
||||||
# CONFIG_MSDOS_FS is not set
|
|
||||||
# CONFIG_VFAT_FS is not set
|
|
||||||
# CONFIG_NTFS_FS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Pseudo filesystems
|
|
||||||
#
|
|
||||||
CONFIG_PROC_FS=y
|
|
||||||
CONFIG_SYSFS=y
|
|
||||||
# CONFIG_DEVFS_FS is not set
|
|
||||||
# CONFIG_DEVPTS_FS_XATTR is not set
|
|
||||||
# CONFIG_TMPFS is not set
|
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
|
||||||
CONFIG_RAMFS=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# Miscellaneous filesystems
|
|
||||||
#
|
|
||||||
# CONFIG_ADFS_FS is not set
|
|
||||||
# CONFIG_AFFS_FS is not set
|
|
||||||
# CONFIG_HFS_FS is not set
|
|
||||||
# CONFIG_HFSPLUS_FS is not set
|
|
||||||
# CONFIG_BEFS_FS is not set
|
|
||||||
# CONFIG_BFS_FS is not set
|
|
||||||
# CONFIG_EFS_FS is not set
|
|
||||||
# CONFIG_JFFS_FS is not set
|
|
||||||
# CONFIG_JFFS2_FS is not set
|
|
||||||
# CONFIG_CRAMFS is not set
|
|
||||||
# CONFIG_VXFS_FS is not set
|
|
||||||
# CONFIG_HPFS_FS is not set
|
|
||||||
# CONFIG_QNX4FS_FS is not set
|
|
||||||
# CONFIG_SYSV_FS is not set
|
|
||||||
# CONFIG_UFS_FS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Network File Systems
|
|
||||||
#
|
|
||||||
CONFIG_NFS_FS=y
|
|
||||||
# CONFIG_NFS_V3 is not set
|
|
||||||
# CONFIG_NFS_V4 is not set
|
|
||||||
# CONFIG_NFS_DIRECTIO is not set
|
|
||||||
# CONFIG_NFSD is not set
|
|
||||||
CONFIG_ROOT_NFS=y
|
|
||||||
CONFIG_LOCKD=y
|
|
||||||
CONFIG_SUNRPC=y
|
|
||||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
|
||||||
# CONFIG_SMB_FS is not set
|
|
||||||
# CONFIG_CIFS is not set
|
|
||||||
# CONFIG_NCP_FS is not set
|
|
||||||
# CONFIG_CODA_FS is not set
|
|
||||||
# CONFIG_AFS_FS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Partition Types
|
|
||||||
#
|
|
||||||
CONFIG_PARTITION_ADVANCED=y
|
|
||||||
# CONFIG_ACORN_PARTITION is not set
|
|
||||||
# CONFIG_OSF_PARTITION is not set
|
|
||||||
# CONFIG_AMIGA_PARTITION is not set
|
|
||||||
# CONFIG_ATARI_PARTITION is not set
|
|
||||||
# CONFIG_MAC_PARTITION is not set
|
|
||||||
# CONFIG_MSDOS_PARTITION is not set
|
|
||||||
# CONFIG_LDM_PARTITION is not set
|
|
||||||
# CONFIG_SGI_PARTITION is not set
|
|
||||||
# CONFIG_ULTRIX_PARTITION is not set
|
|
||||||
# CONFIG_SUN_PARTITION is not set
|
|
||||||
# CONFIG_EFI_PARTITION is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Native Language Support
|
|
||||||
#
|
|
||||||
# CONFIG_NLS is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Profiling support
|
|
||||||
#
|
|
||||||
# CONFIG_PROFILING is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Kernel hacking
|
|
||||||
#
|
|
||||||
# CONFIG_PRINTK_TIME is not set
|
|
||||||
CONFIG_DEBUG_KERNEL=y
|
|
||||||
# CONFIG_MAGIC_SYSRQ is not set
|
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
|
||||||
# CONFIG_SCHEDSTATS is not set
|
|
||||||
# CONFIG_DEBUG_SLAB is not set
|
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
|
||||||
# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
|
|
||||||
# CONFIG_DEBUG_KOBJECT is not set
|
|
||||||
CONFIG_DEBUG_BUGVERBOSE=y
|
|
||||||
# CONFIG_DEBUG_INFO is not set
|
|
||||||
# CONFIG_DEBUG_FS is not set
|
|
||||||
CONFIG_FRAME_POINTER=y
|
|
||||||
CONFIG_DEBUG_USER=y
|
|
||||||
# CONFIG_DEBUG_WAITQ is not set
|
|
||||||
# CONFIG_DEBUG_ERRORS is not set
|
|
||||||
CONFIG_DEBUG_LL=y
|
|
||||||
# CONFIG_DEBUG_ICEDCC is not set
|
|
||||||
CONFIG_DEBUG_S3C2410_PORT=y
|
|
||||||
CONFIG_DEBUG_S3C2410_UART=0
|
|
||||||
|
|
||||||
#
|
|
||||||
# Security options
|
|
||||||
#
|
|
||||||
# CONFIG_KEYS is not set
|
|
||||||
# CONFIG_SECURITY is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Cryptographic options
|
|
||||||
#
|
|
||||||
# CONFIG_CRYPTO is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Hardware crypto devices
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
|
||||||
# Library routines
|
|
||||||
#
|
|
||||||
# CONFIG_CRC_CCITT is not set
|
|
||||||
CONFIG_CRC32=y
|
|
||||||
CONFIG_LIBCRC32C=y
|
|
|
@ -200,7 +200,7 @@ CONFIG_BINFMT_ELF=y
|
||||||
# Power management options
|
# Power management options
|
||||||
#
|
#
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
CONFIG_PM_LEGACY=y
|
# CONFIG_PM_LEGACY is not set
|
||||||
# CONFIG_PM_DEBUG is not set
|
# CONFIG_PM_DEBUG is not set
|
||||||
# CONFIG_APM is not set
|
# CONFIG_APM is not set
|
||||||
|
|
||||||
|
|
|
@ -178,9 +178,3 @@ EXPORT_SYMBOL(_find_next_zero_bit_be);
|
||||||
EXPORT_SYMBOL(_find_first_bit_be);
|
EXPORT_SYMBOL(_find_first_bit_be);
|
||||||
EXPORT_SYMBOL(_find_next_bit_be);
|
EXPORT_SYMBOL(_find_next_bit_be);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* syscalls */
|
|
||||||
EXPORT_SYMBOL(sys_write);
|
|
||||||
EXPORT_SYMBOL(sys_lseek);
|
|
||||||
EXPORT_SYMBOL(sys_exit);
|
|
||||||
EXPORT_SYMBOL(sys_wait4);
|
|
||||||
|
|
|
@ -357,6 +357,9 @@ static void __init setup_processor(void)
|
||||||
#ifndef CONFIG_VFP
|
#ifndef CONFIG_VFP
|
||||||
elf_hwcap &= ~HWCAP_VFP;
|
elf_hwcap &= ~HWCAP_VFP;
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef CONFIG_IWMMXT
|
||||||
|
elf_hwcap &= ~HWCAP_IWMMXT;
|
||||||
|
#endif
|
||||||
|
|
||||||
cpu_proc_init();
|
cpu_proc_init();
|
||||||
}
|
}
|
||||||
|
@ -854,6 +857,7 @@ static const char *hwcap_str[] = {
|
||||||
"vfp",
|
"vfp",
|
||||||
"edsp",
|
"edsp",
|
||||||
"java",
|
"java",
|
||||||
|
"iwmmxt",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
|
#include <linux/module.h>
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/spinlock.h>
|
#include <linux/spinlock.h>
|
||||||
|
@ -19,6 +20,7 @@
|
||||||
#include <linux/cpu.h>
|
#include <linux/cpu.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
|
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
|
@ -474,25 +476,26 @@ void show_local_irqs(struct seq_file *p)
|
||||||
seq_putc(p, '\n');
|
seq_putc(p, '\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipi_timer(struct pt_regs *regs)
|
static void ipi_timer(void)
|
||||||
{
|
{
|
||||||
int user = user_mode(regs);
|
|
||||||
|
|
||||||
irq_enter();
|
irq_enter();
|
||||||
profile_tick(CPU_PROFILING, regs);
|
profile_tick(CPU_PROFILING);
|
||||||
update_process_times(user);
|
update_process_times(user_mode(get_irq_regs()));
|
||||||
irq_exit();
|
irq_exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_LOCAL_TIMERS
|
#ifdef CONFIG_LOCAL_TIMERS
|
||||||
asmlinkage void do_local_timer(struct pt_regs *regs)
|
asmlinkage void do_local_timer(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
|
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||||
int cpu = smp_processor_id();
|
int cpu = smp_processor_id();
|
||||||
|
|
||||||
if (local_timer_ack()) {
|
if (local_timer_ack()) {
|
||||||
irq_stat[cpu].local_timer_irqs++;
|
irq_stat[cpu].local_timer_irqs++;
|
||||||
ipi_timer(regs);
|
ipi_timer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_irq_regs(old_regs);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -551,6 +554,7 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
unsigned int cpu = smp_processor_id();
|
unsigned int cpu = smp_processor_id();
|
||||||
struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
|
struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
|
||||||
|
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||||
|
|
||||||
ipi->ipi_count++;
|
ipi->ipi_count++;
|
||||||
|
|
||||||
|
@ -574,7 +578,7 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
||||||
|
|
||||||
switch (nextmsg) {
|
switch (nextmsg) {
|
||||||
case IPI_TIMER:
|
case IPI_TIMER:
|
||||||
ipi_timer(regs);
|
ipi_timer();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case IPI_RESCHEDULE:
|
case IPI_RESCHEDULE:
|
||||||
|
@ -599,6 +603,8 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
||||||
}
|
}
|
||||||
} while (msgs);
|
} while (msgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_irq_regs(old_regs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void smp_send_reschedule(int cpu)
|
void smp_send_reschedule(int cpu)
|
||||||
|
|
|
@ -220,10 +220,10 @@ EXPORT_SYMBOL(leds_event);
|
||||||
#ifdef CONFIG_LEDS_TIMER
|
#ifdef CONFIG_LEDS_TIMER
|
||||||
static inline void do_leds(void)
|
static inline void do_leds(void)
|
||||||
{
|
{
|
||||||
static unsigned int count = 50;
|
static unsigned int count = HZ/2;
|
||||||
|
|
||||||
if (--count == 0) {
|
if (--count == 0) {
|
||||||
count = 50;
|
count = HZ/2;
|
||||||
leds_event(led_timer);
|
leds_event(led_timer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -327,13 +327,12 @@ EXPORT_SYMBOL(restore_time_delta);
|
||||||
*/
|
*/
|
||||||
void timer_tick(void)
|
void timer_tick(void)
|
||||||
{
|
{
|
||||||
struct pt_regs *regs = get_irq_regs();
|
|
||||||
profile_tick(CPU_PROFILING);
|
profile_tick(CPU_PROFILING);
|
||||||
do_leds();
|
do_leds();
|
||||||
do_set_rtc();
|
do_set_rtc();
|
||||||
do_timer(1);
|
do_timer(1);
|
||||||
#ifndef CONFIG_SMP
|
#ifndef CONFIG_SMP
|
||||||
update_process_times(user_mode(regs));
|
update_process_times(user_mode(get_irq_regs()));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,13 +45,7 @@ SECTIONS
|
||||||
*(.early_param.init)
|
*(.early_param.init)
|
||||||
__early_end = .;
|
__early_end = .;
|
||||||
__initcall_start = .;
|
__initcall_start = .;
|
||||||
*(.initcall1.init)
|
INITCALLS
|
||||||
*(.initcall2.init)
|
|
||||||
*(.initcall3.init)
|
|
||||||
*(.initcall4.init)
|
|
||||||
*(.initcall5.init)
|
|
||||||
*(.initcall6.init)
|
|
||||||
*(.initcall7.init)
|
|
||||||
__initcall_end = .;
|
__initcall_end = .;
|
||||||
__con_initcall_start = .;
|
__con_initcall_start = .;
|
||||||
*(.con_initcall.init)
|
*(.con_initcall.init)
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/ioport.h>
|
#include <linux/ioport.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
|
@ -85,7 +85,7 @@ n2100_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||||
irq = IRQ_IOP32X_XINT0;
|
irq = IRQ_IOP32X_XINT0;
|
||||||
} else if (PCI_SLOT(dev->devfn) == 2) {
|
} else if (PCI_SLOT(dev->devfn) == 2) {
|
||||||
/* RTL8110SB #2 */
|
/* RTL8110SB #2 */
|
||||||
irq = IRQ_IOP32X_XINT1;
|
irq = IRQ_IOP32X_XINT3;
|
||||||
} else if (PCI_SLOT(dev->devfn) == 3) {
|
} else if (PCI_SLOT(dev->devfn) == 3) {
|
||||||
/* Sil3512 */
|
/* Sil3512 */
|
||||||
irq = IRQ_IOP32X_XINT2;
|
irq = IRQ_IOP32X_XINT2;
|
||||||
|
|
|
@ -133,11 +133,13 @@ static void ixdp2400_pci_postinit(void)
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
|
|
||||||
if (ixdp2x00_master_npu()) {
|
if (ixdp2x00_master_npu()) {
|
||||||
dev = pci_find_slot(1, IXDP2400_SLAVE_ENET_DEVFN);
|
dev = pci_get_bus_and_slot(1, IXDP2400_SLAVE_ENET_DEVFN);
|
||||||
pci_remove_bus_device(dev);
|
pci_remove_bus_device(dev);
|
||||||
|
pci_dev_put(dev);
|
||||||
} else {
|
} else {
|
||||||
dev = pci_find_slot(1, IXDP2400_MASTER_ENET_DEVFN);
|
dev = pci_get_bus_and_slot(1, IXDP2400_MASTER_ENET_DEVFN);
|
||||||
pci_remove_bus_device(dev);
|
pci_remove_bus_device(dev);
|
||||||
|
pci_dev_put(dev);
|
||||||
|
|
||||||
ixdp2x00_slave_pci_postinit();
|
ixdp2x00_slave_pci_postinit();
|
||||||
}
|
}
|
||||||
|
|
|
@ -261,14 +261,16 @@ int __init ixdp2800_pci_init(void)
|
||||||
|
|
||||||
pci_common_init(&ixdp2800_pci);
|
pci_common_init(&ixdp2800_pci);
|
||||||
if (ixdp2x00_master_npu()) {
|
if (ixdp2x00_master_npu()) {
|
||||||
dev = pci_find_slot(1, IXDP2800_SLAVE_ENET_DEVFN);
|
dev = pci_get_bus_and_slot(1, IXDP2800_SLAVE_ENET_DEVFN);
|
||||||
pci_remove_bus_device(dev);
|
pci_remove_bus_device(dev);
|
||||||
|
pci_dev_put(dev);
|
||||||
|
|
||||||
ixdp2800_master_enable_slave();
|
ixdp2800_master_enable_slave();
|
||||||
ixdp2800_master_wait_for_slave_bus_scan();
|
ixdp2800_master_wait_for_slave_bus_scan();
|
||||||
} else {
|
} else {
|
||||||
dev = pci_find_slot(1, IXDP2800_MASTER_ENET_DEVFN);
|
dev = pci_get_bus_and_slot(1, IXDP2800_MASTER_ENET_DEVFN);
|
||||||
pci_remove_bus_device(dev);
|
pci_remove_bus_device(dev);
|
||||||
|
pci_dev_put(dev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -241,11 +241,14 @@ void ixdp2x00_slave_pci_postinit(void)
|
||||||
/*
|
/*
|
||||||
* Remove PMC device is there is one
|
* Remove PMC device is there is one
|
||||||
*/
|
*/
|
||||||
if((dev = pci_find_slot(1, IXDP2X00_PMC_DEVFN)))
|
if((dev = pci_get_bus_and_slot(1, IXDP2X00_PMC_DEVFN))) {
|
||||||
pci_remove_bus_device(dev);
|
pci_remove_bus_device(dev);
|
||||||
|
pci_dev_put(dev);
|
||||||
|
}
|
||||||
|
|
||||||
dev = pci_find_slot(0, IXDP2X00_21555_DEVFN);
|
dev = pci_get_bus_and_slot(0, IXDP2X00_21555_DEVFN);
|
||||||
pci_remove_bus_device(dev);
|
pci_remove_bus_device(dev);
|
||||||
|
pci_dev_put(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
|
|
@ -86,7 +86,8 @@ enum ixp4xx_irq_type {
|
||||||
IXP4XX_IRQ_LEVEL, IXP4XX_IRQ_EDGE
|
IXP4XX_IRQ_LEVEL, IXP4XX_IRQ_EDGE
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ixp4xx_config_irq(unsigned irq, enum ixp4xx_irq_type type);
|
/* Each bit represents an IRQ: 1: edge-triggered, 0: level triggered */
|
||||||
|
static unsigned long long ixp4xx_irq_edge = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IRQ -> GPIO mapping table
|
* IRQ -> GPIO mapping table
|
||||||
|
@ -135,7 +136,11 @@ static int ixp4xx_set_irq_type(unsigned int irq, unsigned int type)
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
ixp4xx_config_irq(irq, irq_type);
|
|
||||||
|
if (irq_type == IXP4XX_IRQ_EDGE)
|
||||||
|
ixp4xx_irq_edge |= (1 << irq);
|
||||||
|
else
|
||||||
|
ixp4xx_irq_edge &= ~(1 << irq);
|
||||||
|
|
||||||
if (line >= 8) { /* pins 8-15 */
|
if (line >= 8) { /* pins 8-15 */
|
||||||
line -= 8;
|
line -= 8;
|
||||||
|
@ -167,14 +172,6 @@ static void ixp4xx_irq_mask(unsigned int irq)
|
||||||
*IXP4XX_ICMR &= ~(1 << irq);
|
*IXP4XX_ICMR &= ~(1 << irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ixp4xx_irq_unmask(unsigned int irq)
|
|
||||||
{
|
|
||||||
if (cpu_is_ixp46x() && irq >= 32)
|
|
||||||
*IXP4XX_ICMR2 |= (1 << (irq - 32));
|
|
||||||
else
|
|
||||||
*IXP4XX_ICMR |= (1 << irq);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ixp4xx_irq_ack(unsigned int irq)
|
static void ixp4xx_irq_ack(unsigned int irq)
|
||||||
{
|
{
|
||||||
int line = (irq < 32) ? irq2gpio[irq] : -1;
|
int line = (irq < 32) ? irq2gpio[irq] : -1;
|
||||||
|
@ -187,41 +184,25 @@ static void ixp4xx_irq_ack(unsigned int irq)
|
||||||
* Level triggered interrupts on GPIO lines can only be cleared when the
|
* Level triggered interrupts on GPIO lines can only be cleared when the
|
||||||
* interrupt condition disappears.
|
* interrupt condition disappears.
|
||||||
*/
|
*/
|
||||||
static void ixp4xx_irq_level_unmask(unsigned int irq)
|
static void ixp4xx_irq_unmask(unsigned int irq)
|
||||||
{
|
{
|
||||||
ixp4xx_irq_ack(irq);
|
if (!(ixp4xx_irq_edge & (1 << irq)))
|
||||||
ixp4xx_irq_unmask(irq);
|
ixp4xx_irq_ack(irq);
|
||||||
|
|
||||||
|
if (cpu_is_ixp46x() && irq >= 32)
|
||||||
|
*IXP4XX_ICMR2 |= (1 << (irq - 32));
|
||||||
|
else
|
||||||
|
*IXP4XX_ICMR |= (1 << irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct irqchip ixp4xx_irq_level_chip = {
|
static struct irqchip ixp4xx_irq_chip = {
|
||||||
.ack = ixp4xx_irq_mask,
|
.name = "IXP4xx",
|
||||||
.mask = ixp4xx_irq_mask,
|
|
||||||
.unmask = ixp4xx_irq_level_unmask,
|
|
||||||
.set_type = ixp4xx_set_irq_type,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct irqchip ixp4xx_irq_edge_chip = {
|
|
||||||
.ack = ixp4xx_irq_ack,
|
.ack = ixp4xx_irq_ack,
|
||||||
.mask = ixp4xx_irq_mask,
|
.mask = ixp4xx_irq_mask,
|
||||||
.unmask = ixp4xx_irq_unmask,
|
.unmask = ixp4xx_irq_unmask,
|
||||||
.set_type = ixp4xx_set_irq_type,
|
.set_type = ixp4xx_set_irq_type,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ixp4xx_config_irq(unsigned irq, enum ixp4xx_irq_type type)
|
|
||||||
{
|
|
||||||
switch (type) {
|
|
||||||
case IXP4XX_IRQ_LEVEL:
|
|
||||||
set_irq_chip(irq, &ixp4xx_irq_level_chip);
|
|
||||||
set_irq_handler(irq, do_level_IRQ);
|
|
||||||
break;
|
|
||||||
case IXP4XX_IRQ_EDGE:
|
|
||||||
set_irq_chip(irq, &ixp4xx_irq_edge_chip);
|
|
||||||
set_irq_handler(irq, do_edge_IRQ);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
set_irq_flags(irq, IRQF_VALID);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init ixp4xx_init_irq(void)
|
void __init ixp4xx_init_irq(void)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
@ -241,8 +222,11 @@ void __init ixp4xx_init_irq(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Default to all level triggered */
|
/* Default to all level triggered */
|
||||||
for(i = 0; i < NR_IRQS; i++)
|
for(i = 0; i < NR_IRQS; i++) {
|
||||||
ixp4xx_config_irq(i, IXP4XX_IRQ_LEVEL);
|
set_irq_chip(i, &ixp4xx_irq_chip);
|
||||||
|
set_irq_handler(i, do_level_IRQ);
|
||||||
|
set_irq_flags(i, IRQF_VALID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ config MACH_LPD7A400
|
||||||
bool "LPD7A400 Card Engine"
|
bool "LPD7A400 Card Engine"
|
||||||
select ARCH_LH7A400
|
select ARCH_LH7A400
|
||||||
# select IDE_POLL
|
# select IDE_POLL
|
||||||
select HAS_TOUCHSCREEN_ADS7843_LH7
|
# select HAS_TOUCHSCREEN_ADS7843_LH7
|
||||||
help
|
help
|
||||||
Say Y here if you are using Logic Product Development's
|
Say Y here if you are using Logic Product Development's
|
||||||
LPD7A400 CardEngine. For the time being, the LPD7A400 and
|
LPD7A400 CardEngine. For the time being, the LPD7A400 and
|
||||||
|
@ -24,7 +24,7 @@ config MACH_LPD7A404
|
||||||
bool "LPD7A404 Card Engine"
|
bool "LPD7A404 Card Engine"
|
||||||
select ARCH_LH7A404
|
select ARCH_LH7A404
|
||||||
# select IDE_POLL
|
# select IDE_POLL
|
||||||
select HAS_TOUCHSCREEN_ADC_LH7
|
# select HAS_TOUCHSCREEN_ADC_LH7
|
||||||
help
|
help
|
||||||
Say Y here if you are using Logic Product Development's
|
Say Y here if you are using Logic Product Development's
|
||||||
LPD7A404 CardEngine. For the time being, the LPD7A400 and
|
LPD7A404 CardEngine. For the time being, the LPD7A400 and
|
||||||
|
|
|
@ -15,4 +15,4 @@ extern void lh7a404_init_irq (void);
|
||||||
extern void lh7a40x_clcd_init (void);
|
extern void lh7a40x_clcd_init (void);
|
||||||
extern void lh7a40x_init_board_irq (void);
|
extern void lh7a40x_init_board_irq (void);
|
||||||
|
|
||||||
#define IRQ_DISPATCH(irq) desc_handle_irq((irq),(irq_desc + irq), regs)
|
#define IRQ_DISPATCH(irq) desc_handle_irq((irq),(irq_desc + irq))
|
||||||
|
|
|
@ -133,10 +133,79 @@ static struct platform_device serial_device = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct platform_device nand_flash_device = {
|
||||||
|
.name = "pnx4008-flash",
|
||||||
|
.id = -1,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xFFFFFFFF,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
/* The dmamask must be set for OHCI to work */
|
||||||
|
static u64 ohci_dmamask = ~(u32) 0;
|
||||||
|
|
||||||
|
static struct resource ohci_resources[] = {
|
||||||
|
{
|
||||||
|
.start = IO_ADDRESS(PNX4008_USB_CONFIG_BASE),
|
||||||
|
.end = IO_ADDRESS(PNX4008_USB_CONFIG_BASE + 0x100),
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
}, {
|
||||||
|
.start = USB_HOST_INT,
|
||||||
|
.flags = IORESOURCE_IRQ,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device ohci_device = {
|
||||||
|
.name = "pnx4008-usb-ohci",
|
||||||
|
.id = -1,
|
||||||
|
.dev = {
|
||||||
|
.dma_mask = &ohci_dmamask,
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
},
|
||||||
|
.num_resources = ARRAY_SIZE(ohci_resources),
|
||||||
|
.resource = ohci_resources,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device sdum_device = {
|
||||||
|
.name = "pnx4008-sdum",
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device rgbfb_device = {
|
||||||
|
.name = "pnx4008-rgbfb",
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.coherent_dma_mask = 0xffffffff,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct resource watchdog_resources[] = {
|
||||||
|
{
|
||||||
|
.start = PNX4008_WDOG_BASE,
|
||||||
|
.end = PNX4008_WDOG_BASE + SZ_4K - 1,
|
||||||
|
.flags = IORESOURCE_MEM,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device watchdog_device = {
|
||||||
|
.name = "pnx4008-watchdog",
|
||||||
|
.id = -1,
|
||||||
|
.num_resources = ARRAY_SIZE(watchdog_resources),
|
||||||
|
.resource = watchdog_resources,
|
||||||
|
};
|
||||||
|
|
||||||
static struct platform_device *devices[] __initdata = {
|
static struct platform_device *devices[] __initdata = {
|
||||||
&spipnx_1,
|
&spipnx_1,
|
||||||
&spipnx_2,
|
&spipnx_2,
|
||||||
&serial_device,
|
&serial_device,
|
||||||
|
&ohci_device,
|
||||||
|
&nand_flash_device,
|
||||||
|
&sdum_device,
|
||||||
|
&rgbfb_device,
|
||||||
|
&watchdog_device,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -397,7 +397,7 @@ static void lubbock_mmc_poll(unsigned long data)
|
||||||
if (LUB_IRQ_SET_CLR & (1 << 0))
|
if (LUB_IRQ_SET_CLR & (1 << 0))
|
||||||
mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE);
|
mod_timer(&mmc_timer, jiffies + MMC_POLL_RATE);
|
||||||
else {
|
else {
|
||||||
(void) mmc_detect_int(LUBBOCK_SD_IRQ, (void *)data, NULL);
|
(void) mmc_detect_int(LUBBOCK_SD_IRQ, (void *)data);
|
||||||
enable_irq(LUBBOCK_SD_IRQ);
|
enable_irq(LUBBOCK_SD_IRQ);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* Copyright (c) 2004-2005 Simtec Electronics
|
* Copyright (c) 2004-2005 Simtec Electronics
|
||||||
* Ben Dooks <ben@simtec.co.uk>
|
* Ben Dooks <ben@simtec.co.uk>
|
||||||
*
|
*
|
||||||
* S3C2410 GPIO support
|
* S3C24XX GPIO support
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -163,3 +163,22 @@ unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change)
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(s3c2410_modify_misccr);
|
EXPORT_SYMBOL(s3c2410_modify_misccr);
|
||||||
|
|
||||||
|
int s3c2410_gpio_getirq(unsigned int pin)
|
||||||
|
{
|
||||||
|
if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15)
|
||||||
|
return -1; /* not valid interrupts */
|
||||||
|
|
||||||
|
if (pin < S3C2410_GPG0 && pin > S3C2410_GPF7)
|
||||||
|
return -1; /* not valid pin */
|
||||||
|
|
||||||
|
if (pin < S3C2410_GPF4)
|
||||||
|
return (pin - S3C2410_GPF0) + IRQ_EINT0;
|
||||||
|
|
||||||
|
if (pin < S3C2410_GPG0)
|
||||||
|
return (pin - S3C2410_GPF4) + IRQ_EINT4;
|
||||||
|
|
||||||
|
return (pin - S3C2410_GPG0) + IRQ_EINT8;
|
||||||
|
}
|
||||||
|
|
||||||
|
EXPORT_SYMBOL(s3c2410_gpio_getirq);
|
||||||
|
|
|
@ -69,22 +69,3 @@ int s3c2410_gpio_irqfilter(unsigned int pin, unsigned int on,
|
||||||
}
|
}
|
||||||
|
|
||||||
EXPORT_SYMBOL(s3c2410_gpio_irqfilter);
|
EXPORT_SYMBOL(s3c2410_gpio_irqfilter);
|
||||||
|
|
||||||
int s3c2410_gpio_getirq(unsigned int pin)
|
|
||||||
{
|
|
||||||
if (pin < S3C2410_GPF0 || pin > S3C2410_GPG15)
|
|
||||||
return -1; /* not valid interrupts */
|
|
||||||
|
|
||||||
if (pin < S3C2410_GPG0 && pin > S3C2410_GPF7)
|
|
||||||
return -1; /* not valid pin */
|
|
||||||
|
|
||||||
if (pin < S3C2410_GPF4)
|
|
||||||
return (pin - S3C2410_GPF0) + IRQ_EINT0;
|
|
||||||
|
|
||||||
if (pin < S3C2410_GPG0)
|
|
||||||
return (pin - S3C2410_GPF4) + IRQ_EINT4;
|
|
||||||
|
|
||||||
return (pin - S3C2410_GPG0) + IRQ_EINT8;
|
|
||||||
}
|
|
||||||
|
|
||||||
EXPORT_SYMBOL(s3c2410_gpio_getirq);
|
|
||||||
|
|
|
@ -82,6 +82,14 @@ static struct sdram_params sdram_tbl[] __initdata = {
|
||||||
.twr = 9,
|
.twr = 9,
|
||||||
.refresh = 64000,
|
.refresh = 64000,
|
||||||
.cas_latency = 3,
|
.cas_latency = 3,
|
||||||
|
}, { /* Samsung K4S281632B-1H */
|
||||||
|
.name = "K4S281632B-1H",
|
||||||
|
.rows = 12,
|
||||||
|
.tck = 10,
|
||||||
|
.trp = 20,
|
||||||
|
.twr = 10,
|
||||||
|
.refresh = 64000,
|
||||||
|
.cas_latency = 3,
|
||||||
}, { /* Samsung KM416S4030CT */
|
}, { /* Samsung KM416S4030CT */
|
||||||
.name = "KM416S4030CT",
|
.name = "KM416S4030CT",
|
||||||
.rows = 13,
|
.rows = 13,
|
||||||
|
@ -366,6 +374,8 @@ static int __init sa1110_clk_init(void)
|
||||||
|
|
||||||
if (machine_is_h3100())
|
if (machine_is_h3100())
|
||||||
name = "KM416S4030CT";
|
name = "KM416S4030CT";
|
||||||
|
if (machine_is_jornada720())
|
||||||
|
name = "K4S281632B-1H";
|
||||||
}
|
}
|
||||||
|
|
||||||
sdram = sa1110_find_sdram(name);
|
sdram = sa1110_find_sdram(name);
|
||||||
|
|
|
@ -188,12 +188,12 @@ static struct map_desc versatile_io_desc[] __initdata = {
|
||||||
.length = SZ_4K,
|
.length = SZ_4K,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
}, {
|
}, {
|
||||||
.virtual = VERSATILE_PCI_VIRT_BASE,
|
.virtual = (unsigned long)VERSATILE_PCI_VIRT_BASE,
|
||||||
.pfn = __phys_to_pfn(VERSATILE_PCI_BASE),
|
.pfn = __phys_to_pfn(VERSATILE_PCI_BASE),
|
||||||
.length = VERSATILE_PCI_BASE_SIZE,
|
.length = VERSATILE_PCI_BASE_SIZE,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
}, {
|
}, {
|
||||||
.virtual = VERSATILE_PCI_CFG_VIRT_BASE,
|
.virtual = (unsigned long)VERSATILE_PCI_CFG_VIRT_BASE,
|
||||||
.pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE),
|
.pfn = __phys_to_pfn(VERSATILE_PCI_CFG_BASE),
|
||||||
.length = VERSATILE_PCI_CFG_BASE_SIZE,
|
.length = VERSATILE_PCI_CFG_BASE_SIZE,
|
||||||
.type = MT_DEVICE
|
.type = MT_DEVICE
|
||||||
|
|
|
@ -40,14 +40,15 @@
|
||||||
* Cfg 42000000 - 42FFFFFF PCI config
|
* Cfg 42000000 - 42FFFFFF PCI config
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define SYS_PCICTL IO_ADDRESS(VERSATILE_SYS_PCICTL)
|
#define __IO_ADDRESS(n) ((void __iomem *)(unsigned long)IO_ADDRESS(n))
|
||||||
#define PCI_IMAP0 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x0)
|
#define SYS_PCICTL __IO_ADDRESS(VERSATILE_SYS_PCICTL)
|
||||||
#define PCI_IMAP1 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x4)
|
#define PCI_IMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x0)
|
||||||
#define PCI_IMAP2 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x8)
|
#define PCI_IMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x4)
|
||||||
#define PCI_SMAP0 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x10)
|
#define PCI_IMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x8)
|
||||||
#define PCI_SMAP1 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x14)
|
#define PCI_SMAP0 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x10)
|
||||||
#define PCI_SMAP2 IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x18)
|
#define PCI_SMAP1 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x14)
|
||||||
#define PCI_SELFID IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0xc)
|
#define PCI_SMAP2 __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0x18)
|
||||||
|
#define PCI_SELFID __IO_ADDRESS(VERSATILE_PCI_CORE_BASE+0xc)
|
||||||
|
|
||||||
#define DEVICE_ID_OFFSET 0x00
|
#define DEVICE_ID_OFFSET 0x00
|
||||||
#define CSR_OFFSET 0x04
|
#define CSR_OFFSET 0x04
|
||||||
|
@ -76,7 +77,7 @@ static int __init versatile_pci_slot_ignore(char *str)
|
||||||
__setup("pci_slot_ignore=", versatile_pci_slot_ignore);
|
__setup("pci_slot_ignore=", versatile_pci_slot_ignore);
|
||||||
|
|
||||||
|
|
||||||
static unsigned long __pci_addr(struct pci_bus *bus,
|
static void __iomem *__pci_addr(struct pci_bus *bus,
|
||||||
unsigned int devfn, int offset)
|
unsigned int devfn, int offset)
|
||||||
{
|
{
|
||||||
unsigned int busnr = bus->number;
|
unsigned int busnr = bus->number;
|
||||||
|
@ -91,14 +92,14 @@ static unsigned long __pci_addr(struct pci_bus *bus,
|
||||||
if (devfn > 255)
|
if (devfn > 255)
|
||||||
BUG();
|
BUG();
|
||||||
|
|
||||||
return (VERSATILE_PCI_CFG_VIRT_BASE | (busnr << 16) |
|
return VERSATILE_PCI_CFG_VIRT_BASE + ((busnr << 16) |
|
||||||
(PCI_SLOT(devfn) << 11) | (PCI_FUNC(devfn) << 8) | offset);
|
(PCI_SLOT(devfn) << 11) | (PCI_FUNC(devfn) << 8) | offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int where,
|
static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int where,
|
||||||
int size, u32 *val)
|
int size, u32 *val)
|
||||||
{
|
{
|
||||||
unsigned long addr = __pci_addr(bus, devfn, where);
|
void __iomem *addr = __pci_addr(bus, devfn, where & ~3);
|
||||||
u32 v;
|
u32 v;
|
||||||
int slot = PCI_SLOT(devfn);
|
int slot = PCI_SLOT(devfn);
|
||||||
|
|
||||||
|
@ -121,13 +122,12 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
v = __raw_readl(addr & ~3);
|
v = __raw_readl(addr);
|
||||||
if (addr & 2) v >>= 16;
|
if (where & 2) v >>= 16;
|
||||||
v &= 0xffff;
|
v &= 0xffff;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
addr &= ~3;
|
|
||||||
v = __raw_readl(addr);
|
v = __raw_readl(addr);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ static int versatile_read_config(struct pci_bus *bus, unsigned int devfn, int wh
|
||||||
static int versatile_write_config(struct pci_bus *bus, unsigned int devfn, int where,
|
static int versatile_write_config(struct pci_bus *bus, unsigned int devfn, int where,
|
||||||
int size, u32 val)
|
int size, u32 val)
|
||||||
{
|
{
|
||||||
unsigned long addr = __pci_addr(bus, devfn, where);
|
void __iomem *addr = __pci_addr(bus, devfn, where);
|
||||||
int slot = PCI_SLOT(devfn);
|
int slot = PCI_SLOT(devfn);
|
||||||
|
|
||||||
if (pci_slot_ignore & (1 << slot)) {
|
if (pci_slot_ignore & (1 << slot)) {
|
||||||
|
@ -279,7 +279,7 @@ int __init pci_versatile_setup(int nr, struct pci_sys_data *sys)
|
||||||
printk("PCI core found (slot %d)\n",myslot);
|
printk("PCI core found (slot %d)\n",myslot);
|
||||||
|
|
||||||
__raw_writel(myslot, PCI_SELFID);
|
__raw_writel(myslot, PCI_SELFID);
|
||||||
local_pci_cfg_base = (void *) VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11);
|
local_pci_cfg_base = VERSATILE_PCI_CFG_VIRT_BASE + (myslot << 11);
|
||||||
|
|
||||||
val = __raw_readl(local_pci_cfg_base + CSR_OFFSET);
|
val = __raw_readl(local_pci_cfg_base + CSR_OFFSET);
|
||||||
val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE;
|
val |= PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | PCI_COMMAND_INVALIDATE;
|
||||||
|
|
|
@ -32,40 +32,51 @@ extern unsigned long phys_initrd_start;
|
||||||
extern unsigned long phys_initrd_size;
|
extern unsigned long phys_initrd_size;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The sole use of this is to pass memory configuration
|
* This is used to pass memory configuration data from paging_init
|
||||||
* data from paging_init to mem_init.
|
* to mem_init, and by show_mem() to skip holes in the memory map.
|
||||||
*/
|
*/
|
||||||
static struct meminfo meminfo __initdata = { 0, };
|
static struct meminfo meminfo = { 0, };
|
||||||
|
|
||||||
|
#define for_each_nodebank(iter,mi,no) \
|
||||||
|
for (iter = 0; iter < mi->nr_banks; iter++) \
|
||||||
|
if (mi->bank[iter].node == no)
|
||||||
|
|
||||||
void show_mem(void)
|
void show_mem(void)
|
||||||
{
|
{
|
||||||
int free = 0, total = 0, reserved = 0;
|
int free = 0, total = 0, reserved = 0;
|
||||||
int shared = 0, cached = 0, slab = 0, node;
|
int shared = 0, cached = 0, slab = 0, node, i;
|
||||||
|
struct meminfo * mi = &meminfo;
|
||||||
|
|
||||||
printk("Mem-info:\n");
|
printk("Mem-info:\n");
|
||||||
show_free_areas();
|
show_free_areas();
|
||||||
printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
|
printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
|
||||||
|
|
||||||
for_each_online_node(node) {
|
for_each_online_node(node) {
|
||||||
struct page *page, *end;
|
for_each_nodebank (i,mi,node) {
|
||||||
|
unsigned int pfn1, pfn2;
|
||||||
|
struct page *page, *end;
|
||||||
|
|
||||||
page = NODE_MEM_MAP(node);
|
pfn1 = mi->bank[i].start >> PAGE_SHIFT;
|
||||||
end = page + NODE_DATA(node)->node_spanned_pages;
|
pfn2 = (mi->bank[i].size + mi->bank[i].start) >> PAGE_SHIFT;
|
||||||
|
|
||||||
do {
|
page = NODE_MEM_MAP(node) + pfn1;
|
||||||
total++;
|
end = NODE_MEM_MAP(node) + pfn2;
|
||||||
if (PageReserved(page))
|
|
||||||
reserved++;
|
do {
|
||||||
else if (PageSwapCache(page))
|
total++;
|
||||||
cached++;
|
if (PageReserved(page))
|
||||||
else if (PageSlab(page))
|
reserved++;
|
||||||
slab++;
|
else if (PageSwapCache(page))
|
||||||
else if (!page_count(page))
|
cached++;
|
||||||
free++;
|
else if (PageSlab(page))
|
||||||
else
|
slab++;
|
||||||
shared += page_count(page) - 1;
|
else if (!page_count(page))
|
||||||
page++;
|
free++;
|
||||||
} while (page < end);
|
else
|
||||||
|
shared += page_count(page) - 1;
|
||||||
|
page++;
|
||||||
|
} while (page < end);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printk("%d pages of RAM\n", total);
|
printk("%d pages of RAM\n", total);
|
||||||
|
@ -76,10 +87,6 @@ void show_mem(void)
|
||||||
printk("%d pages swap cached\n", cached);
|
printk("%d pages swap cached\n", cached);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define for_each_nodebank(iter,mi,no) \
|
|
||||||
for (iter = 0; iter < mi->nr_banks; iter++) \
|
|
||||||
if (mi->bank[iter].node == no)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: We really want to avoid allocating the bootmap bitmap
|
* FIXME: We really want to avoid allocating the bootmap bitmap
|
||||||
* over the top of the initrd. Hopefully, this is located towards
|
* over the top of the initrd. Hopefully, this is located towards
|
||||||
|
|
|
@ -909,7 +909,7 @@ __pxa270_proc_info:
|
||||||
b __xscale_setup
|
b __xscale_setup
|
||||||
.long cpu_arch_name
|
.long cpu_arch_name
|
||||||
.long cpu_elf_name
|
.long cpu_elf_name
|
||||||
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP
|
.long HWCAP_SWP|HWCAP_HALF|HWCAP_THUMB|HWCAP_FAST_MULT|HWCAP_EDSP|HWCAP_IWMMXT
|
||||||
.long cpu_pxa270_name
|
.long cpu_pxa270_name
|
||||||
.long xscale_processor_functions
|
.long xscale_processor_functions
|
||||||
.long v4wbi_tlb_fns
|
.long v4wbi_tlb_fns
|
||||||
|
|
|
@ -10,8 +10,6 @@
|
||||||
#ifndef OP_COUNTER_H
|
#ifndef OP_COUNTER_H
|
||||||
#define OP_COUNTER_H
|
#define OP_COUNTER_H
|
||||||
|
|
||||||
#define OP_MAX_COUNTER 5
|
|
||||||
|
|
||||||
/* Per performance monitor configuration as set via
|
/* Per performance monitor configuration as set via
|
||||||
* oprofilefs.
|
* oprofilefs.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -20,7 +20,8 @@
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/oprofile.h>
|
#include <linux/oprofile.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
#include <asm/irq.h>
|
#include <linux/irq.h>
|
||||||
|
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
|
|
||||||
#include "op_counter.h"
|
#include "op_counter.h"
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#
|
#
|
||||||
# Up to date versions of this file can be obtained from:
|
# Up to date versions of this file can be obtained from:
|
||||||
#
|
#
|
||||||
# http://www.arm.linux.org.uk/developer/machines/?action=download
|
# http://www.arm.linux.org.uk/developer/machines/download.php
|
||||||
#
|
#
|
||||||
# Please do not send patches to this file; it is automatically generated!
|
# Please do not send patches to this file; it is automatically generated!
|
||||||
# To add an entry into this database, please see Documentation/arm/README,
|
# To add an entry into this database, please see Documentation/arm/README,
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
#
|
#
|
||||||
# http://www.arm.linux.org.uk/developer/machines/?action=new
|
# http://www.arm.linux.org.uk/developer/machines/?action=new
|
||||||
#
|
#
|
||||||
# Last update: Sat Sep 23 13:20:43 2006
|
# Last update: Mon Oct 16 21:13:36 2006
|
||||||
#
|
#
|
||||||
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
|
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
|
||||||
#
|
#
|
||||||
|
@ -1157,3 +1157,17 @@ adsturboxb MACH_ADSTURBOXB ADSTURBOXB 1143
|
||||||
oti4110 MACH_OTI4110 OTI4110 1144
|
oti4110 MACH_OTI4110 OTI4110 1144
|
||||||
hme_pxa MACH_HME_PXA HME_PXA 1145
|
hme_pxa MACH_HME_PXA HME_PXA 1145
|
||||||
deisterdca MACH_DEISTERDCA DEISTERDCA 1146
|
deisterdca MACH_DEISTERDCA DEISTERDCA 1146
|
||||||
|
ces_ssem2 MACH_CES_SSEM2 CES_SSEM2 1147
|
||||||
|
ces_mtr MACH_CES_MTR CES_MTR 1148
|
||||||
|
tds_avng_sbc MACH_TDS_AVNG_SBC TDS_AVNG_SBC 1149
|
||||||
|
everest MACH_EVEREST EVEREST 1150
|
||||||
|
pnx4010 MACH_PNX4010 PNX4010 1151
|
||||||
|
oxnas MACH_OXNAS OXNAS 1152
|
||||||
|
fiori MACH_FIORI FIORI 1153
|
||||||
|
ml1200 MACH_ML1200 ML1200 1154
|
||||||
|
cactus MACH_CACTUS CACTUS 1155
|
||||||
|
nb2xxx MACH_NB2XXX NB2XXX 1156
|
||||||
|
hw6900 MACH_HW6900 HW6900 1157
|
||||||
|
cdcs_quoll MACH_CDCS_QUOLL CDCS_QUOLL 1158
|
||||||
|
quicksilver MACH_QUICKSILVER QUICKSILVER 1159
|
||||||
|
uplat926 MACH_UPLAT926 UPLAT926 1160
|
||||||
|
|
|
@ -56,7 +56,7 @@ static void vfp_double_normalise_denormal(struct vfp_double *vd)
|
||||||
{
|
{
|
||||||
int bits = 31 - fls(vd->significand >> 32);
|
int bits = 31 - fls(vd->significand >> 32);
|
||||||
if (bits == 31)
|
if (bits == 31)
|
||||||
bits = 62 - fls(vd->significand);
|
bits = 63 - fls(vd->significand);
|
||||||
|
|
||||||
vfp_double_dump("normalise_denormal: in", vd);
|
vfp_double_dump("normalise_denormal: in", vd);
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ void vfp_raise_sigfpe(unsigned int sicode, struct pt_regs *regs)
|
||||||
|
|
||||||
info.si_signo = SIGFPE;
|
info.si_signo = SIGFPE;
|
||||||
info.si_code = sicode;
|
info.si_code = sicode;
|
||||||
info.si_addr = (void *)(instruction_pointer(regs) - 4);
|
info.si_addr = (void __user *)(instruction_pointer(regs) - 4);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This is the same as NWFPE, because it's not clear what
|
* This is the same as NWFPE, because it's not clear what
|
||||||
|
@ -148,6 +148,7 @@ static void vfp_raise_exceptions(u32 exceptions, u32 inst, u32 fpscr, struct pt_
|
||||||
/*
|
/*
|
||||||
* These are arranged in priority order, least to highest.
|
* These are arranged in priority order, least to highest.
|
||||||
*/
|
*/
|
||||||
|
RAISE(FPSCR_DZC, FPSCR_DZE, FPE_FLTDIV);
|
||||||
RAISE(FPSCR_IXC, FPSCR_IXE, FPE_FLTRES);
|
RAISE(FPSCR_IXC, FPSCR_IXE, FPE_FLTRES);
|
||||||
RAISE(FPSCR_UFC, FPSCR_UFE, FPE_FLTUND);
|
RAISE(FPSCR_UFC, FPSCR_UFE, FPE_FLTUND);
|
||||||
RAISE(FPSCR_OFC, FPSCR_OFE, FPE_FLTOVF);
|
RAISE(FPSCR_OFC, FPSCR_OFE, FPE_FLTOVF);
|
||||||
|
|
|
@ -202,14 +202,6 @@ EXPORT_SYMBOL(_find_next_zero_bit_le);
|
||||||
EXPORT_SYMBOL(elf_platform);
|
EXPORT_SYMBOL(elf_platform);
|
||||||
EXPORT_SYMBOL(elf_hwcap);
|
EXPORT_SYMBOL(elf_hwcap);
|
||||||
|
|
||||||
/* syscalls */
|
|
||||||
EXPORT_SYMBOL(sys_write);
|
|
||||||
EXPORT_SYMBOL(sys_read);
|
|
||||||
EXPORT_SYMBOL(sys_lseek);
|
|
||||||
EXPORT_SYMBOL(sys_open);
|
|
||||||
EXPORT_SYMBOL(sys_exit);
|
|
||||||
EXPORT_SYMBOL(sys_wait4);
|
|
||||||
|
|
||||||
#ifdef CONFIG_PREEMPT
|
#ifdef CONFIG_PREEMPT
|
||||||
EXPORT_SYMBOL(kernel_flag);
|
EXPORT_SYMBOL(kernel_flag);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
# Default target when executing plain make
|
# Default target when executing plain make
|
||||||
.PHONY: all
|
.PHONY: all
|
||||||
all: uImage vmlinux.elf linux.lst
|
all: uImage vmlinux.elf
|
||||||
|
|
||||||
KBUILD_DEFCONFIG := atstk1002_defconfig
|
KBUILD_DEFCONFIG := atstk1002_defconfig
|
||||||
|
|
||||||
|
@ -21,9 +21,7 @@ cpuflags-$(CONFIG_CPU_AP7000) += -mcpu=ap7000
|
||||||
CFLAGS += $(cpuflags-y)
|
CFLAGS += $(cpuflags-y)
|
||||||
AFLAGS += $(cpuflags-y)
|
AFLAGS += $(cpuflags-y)
|
||||||
|
|
||||||
CHECKFLAGS += -D__avr32__
|
CHECKFLAGS += -D__avr32__ -D__BIG_ENDIAN
|
||||||
|
|
||||||
LIBGCC := $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
|
|
||||||
|
|
||||||
head-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/head.o
|
head-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/head.o
|
||||||
head-y += arch/avr32/kernel/head.o
|
head-y += arch/avr32/kernel/head.o
|
||||||
|
@ -32,7 +30,7 @@ core-$(CONFIG_BOARD_ATSTK1000) += arch/avr32/boards/atstk1000/
|
||||||
core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
|
core-$(CONFIG_LOADER_U_BOOT) += arch/avr32/boot/u-boot/
|
||||||
core-y += arch/avr32/kernel/
|
core-y += arch/avr32/kernel/
|
||||||
core-y += arch/avr32/mm/
|
core-y += arch/avr32/mm/
|
||||||
libs-y += arch/avr32/lib/ #$(LIBGCC)
|
libs-y += arch/avr32/lib/
|
||||||
|
|
||||||
archincdir-$(CONFIG_PLATFORM_AT32AP) := arch-at32ap
|
archincdir-$(CONFIG_PLATFORM_AT32AP) := arch-at32ap
|
||||||
|
|
||||||
|
@ -48,6 +46,8 @@ endif
|
||||||
|
|
||||||
archprepare: include/asm-avr32/.arch
|
archprepare: include/asm-avr32/.arch
|
||||||
|
|
||||||
|
CLEAN_FILES += include/asm-avr32/.arch include/asm-avr32/arch
|
||||||
|
|
||||||
BOOT_TARGETS := vmlinux.elf vmlinux.bin uImage uImage.srec
|
BOOT_TARGETS := vmlinux.elf vmlinux.bin uImage uImage.srec
|
||||||
|
|
||||||
.PHONY: $(BOOT_TARGETS) install
|
.PHONY: $(BOOT_TARGETS) install
|
||||||
|
@ -71,14 +71,19 @@ vmlinux.elf vmlinux.bin uImage.srec uImage vmlinux.cso: vmlinux
|
||||||
install: vmlinux
|
install: vmlinux
|
||||||
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
|
$(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) $@
|
||||||
|
|
||||||
linux.s: vmlinux
|
vmlinux.s: vmlinux
|
||||||
$(call if_changed,disasm)
|
$(call if_changed,disasm)
|
||||||
|
|
||||||
linux.lst: vmlinux
|
vmlinux.lst: vmlinux
|
||||||
$(call if_changed,listing)
|
$(call if_changed,listing)
|
||||||
|
|
||||||
|
CLEAN_FILES += vmlinux.s vmlinux.lst
|
||||||
|
|
||||||
|
archclean:
|
||||||
|
$(Q)$(MAKE) $(clean)=$(boot)
|
||||||
|
|
||||||
define archhelp
|
define archhelp
|
||||||
@echo '* vmlinux.elf - ELF image with load address 0'
|
@echo '* vmlinux.elf - ELF image with load address 0'
|
||||||
@echo ' vmlinux.cso - PathFinder CSO image'
|
@echo ' vmlinux.cso - PathFinder CSO image'
|
||||||
@echo ' uImage - Create a bootable image for U-Boot'
|
@echo '* uImage - Create a bootable image for U-Boot'
|
||||||
endef
|
endef
|
||||||
|
|
|
@ -21,15 +21,6 @@ struct tag *bootloader_tags __initdata;
|
||||||
|
|
||||||
struct lcdc_platform_data __initdata atstk1000_fb0_data;
|
struct lcdc_platform_data __initdata atstk1000_fb0_data;
|
||||||
|
|
||||||
asmlinkage void __init board_early_init(void)
|
|
||||||
{
|
|
||||||
extern void sdram_init(void);
|
|
||||||
|
|
||||||
#ifdef CONFIG_LOADER_STANDALONE
|
|
||||||
sdram_init();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init board_setup_fbmem(unsigned long fbmem_start,
|
void __init board_setup_fbmem(unsigned long fbmem_start,
|
||||||
unsigned long fbmem_size)
|
unsigned long fbmem_size)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,14 +37,12 @@ OBJCOPYFLAGS_vmlinux.elf := --change-section-lma .text-0x80000000 \
|
||||||
--change-section-lma .data-0x80000000 \
|
--change-section-lma .data-0x80000000 \
|
||||||
--change-section-lma .init-0x80000000 \
|
--change-section-lma .init-0x80000000 \
|
||||||
--change-section-lma .bss-0x80000000 \
|
--change-section-lma .bss-0x80000000 \
|
||||||
--change-section-lma .initrd-0x80000000 \
|
|
||||||
--change-section-lma __param-0x80000000 \
|
--change-section-lma __param-0x80000000 \
|
||||||
--change-section-lma __ksymtab-0x80000000 \
|
--change-section-lma __ksymtab-0x80000000 \
|
||||||
--change-section-lma __ksymtab_gpl-0x80000000 \
|
--change-section-lma __ksymtab_gpl-0x80000000 \
|
||||||
--change-section-lma __kcrctab-0x80000000 \
|
--change-section-lma __kcrctab-0x80000000 \
|
||||||
--change-section-lma __kcrctab_gpl-0x80000000 \
|
--change-section-lma __kcrctab_gpl-0x80000000 \
|
||||||
--change-section-lma __ksymtab_strings-0x80000000 \
|
--change-section-lma __ksymtab_strings-0x80000000 \
|
||||||
--change-section-lma .got-0x80000000 \
|
|
||||||
--set-start 0xa0000000
|
--set-start 0xa0000000
|
||||||
$(obj)/vmlinux.elf: vmlinux FORCE
|
$(obj)/vmlinux.elf: vmlinux FORCE
|
||||||
$(call if_changed,objcopy)
|
$(call if_changed,objcopy)
|
||||||
|
@ -59,4 +57,4 @@ install: $(BOOTIMAGE)
|
||||||
sh $(srctree)/install-kernel.sh $<
|
sh $(srctree)/install-kernel.sh $<
|
||||||
|
|
||||||
# Generated files to be removed upon make clean
|
# Generated files to be removed upon make clean
|
||||||
clean-files := vmlinux* uImage uImage.srec
|
clean-files := vmlinux.elf vmlinux.bin vmlinux.gz uImage uImage.srec
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.18-rc1
|
# Linux kernel version: 2.6.19-rc2
|
||||||
# Tue Jul 11 12:41:36 2006
|
# Fri Oct 20 11:52:37 2006
|
||||||
#
|
#
|
||||||
CONFIG_AVR32=y
|
CONFIG_AVR32=y
|
||||||
CONFIG_GENERIC_HARDIRQS=y
|
CONFIG_GENERIC_HARDIRQS=y
|
||||||
CONFIG_HARDIRQS_SW_RESEND=y
|
CONFIG_HARDIRQS_SW_RESEND=y
|
||||||
CONFIG_GENERIC_IRQ_PROBE=y
|
CONFIG_GENERIC_IRQ_PROBE=y
|
||||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||||
|
CONFIG_GENERIC_TIME=y
|
||||||
CONFIG_GENERIC_HWEIGHT=y
|
CONFIG_GENERIC_HWEIGHT=y
|
||||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||||
|
@ -25,16 +26,23 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||||
CONFIG_LOCALVERSION=""
|
CONFIG_LOCALVERSION=""
|
||||||
# CONFIG_LOCALVERSION_AUTO is not set
|
# CONFIG_LOCALVERSION_AUTO is not set
|
||||||
CONFIG_SWAP=y
|
CONFIG_SWAP=y
|
||||||
# CONFIG_SYSVIPC is not set
|
CONFIG_SYSVIPC=y
|
||||||
# CONFIG_POSIX_MQUEUE is not set
|
# CONFIG_IPC_NS is not set
|
||||||
# CONFIG_BSD_PROCESS_ACCT is not set
|
CONFIG_POSIX_MQUEUE=y
|
||||||
CONFIG_SYSCTL=y
|
CONFIG_BSD_PROCESS_ACCT=y
|
||||||
# CONFIG_AUDIT is not set
|
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||||
|
CONFIG_TASKSTATS=y
|
||||||
|
CONFIG_TASK_DELAY_ACCT=y
|
||||||
|
# CONFIG_UTS_NS is not set
|
||||||
|
CONFIG_AUDIT=y
|
||||||
# CONFIG_IKCONFIG is not set
|
# CONFIG_IKCONFIG is not set
|
||||||
# CONFIG_RELAY is not set
|
CONFIG_RELAY=y
|
||||||
CONFIG_INITRAMFS_SOURCE=""
|
CONFIG_INITRAMFS_SOURCE=""
|
||||||
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
|
||||||
|
# CONFIG_TASK_XACCT is not set
|
||||||
|
CONFIG_SYSCTL=y
|
||||||
CONFIG_EMBEDDED=y
|
CONFIG_EMBEDDED=y
|
||||||
|
# CONFIG_SYSCTL_SYSCALL is not set
|
||||||
CONFIG_KALLSYMS=y
|
CONFIG_KALLSYMS=y
|
||||||
# CONFIG_KALLSYMS_ALL is not set
|
# CONFIG_KALLSYMS_ALL is not set
|
||||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||||
|
@ -43,14 +51,15 @@ CONFIG_PRINTK=y
|
||||||
CONFIG_BUG=y
|
CONFIG_BUG=y
|
||||||
CONFIG_ELF_CORE=y
|
CONFIG_ELF_CORE=y
|
||||||
# CONFIG_BASE_FULL is not set
|
# CONFIG_BASE_FULL is not set
|
||||||
# CONFIG_FUTEX is not set
|
CONFIG_FUTEX=y
|
||||||
# CONFIG_EPOLL is not set
|
CONFIG_EPOLL=y
|
||||||
CONFIG_SHMEM=y
|
CONFIG_SHMEM=y
|
||||||
# CONFIG_SLAB is not set
|
CONFIG_SLAB=y
|
||||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
CONFIG_VM_EVENT_COUNTERS=y
|
||||||
|
CONFIG_RT_MUTEXES=y
|
||||||
# CONFIG_TINY_SHMEM is not set
|
# CONFIG_TINY_SHMEM is not set
|
||||||
CONFIG_BASE_SMALL=1
|
CONFIG_BASE_SMALL=1
|
||||||
CONFIG_SLOB=y
|
# CONFIG_SLOB is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Loadable module support
|
# Loadable module support
|
||||||
|
@ -65,6 +74,7 @@ CONFIG_MODULE_UNLOAD=y
|
||||||
#
|
#
|
||||||
# Block layer
|
# Block layer
|
||||||
#
|
#
|
||||||
|
CONFIG_BLOCK=y
|
||||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -166,10 +176,12 @@ CONFIG_IP_PNP_DHCP=y
|
||||||
# CONFIG_INET_TUNNEL is not set
|
# CONFIG_INET_TUNNEL is not set
|
||||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||||
|
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||||
CONFIG_INET_DIAG=y
|
CONFIG_INET_DIAG=y
|
||||||
CONFIG_INET_TCP_DIAG=y
|
CONFIG_INET_TCP_DIAG=y
|
||||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||||
CONFIG_TCP_CONG_BIC=y
|
CONFIG_TCP_CONG_CUBIC=y
|
||||||
|
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
# CONFIG_INET6_XFRM_TUNNEL is not set
|
# CONFIG_INET6_XFRM_TUNNEL is not set
|
||||||
# CONFIG_INET6_TUNNEL is not set
|
# CONFIG_INET6_TUNNEL is not set
|
||||||
|
@ -199,7 +211,6 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# CONFIG_ATALK is not set
|
# CONFIG_ATALK is not set
|
||||||
# CONFIG_X25 is not set
|
# CONFIG_X25 is not set
|
||||||
# CONFIG_LAPB is not set
|
# CONFIG_LAPB is not set
|
||||||
# CONFIG_NET_DIVERT is not set
|
|
||||||
# CONFIG_ECONET is not set
|
# CONFIG_ECONET is not set
|
||||||
# CONFIG_WAN_ROUTER is not set
|
# CONFIG_WAN_ROUTER is not set
|
||||||
|
|
||||||
|
@ -212,7 +223,6 @@ CONFIG_TCP_CONG_BIC=y
|
||||||
# Network testing
|
# Network testing
|
||||||
#
|
#
|
||||||
# CONFIG_NET_PKTGEN is not set
|
# CONFIG_NET_PKTGEN is not set
|
||||||
# CONFIG_NET_TCPPROBE is not set
|
|
||||||
# CONFIG_HAMRADIO is not set
|
# CONFIG_HAMRADIO is not set
|
||||||
# CONFIG_IRDA is not set
|
# CONFIG_IRDA is not set
|
||||||
# CONFIG_BT is not set
|
# CONFIG_BT is not set
|
||||||
|
@ -239,7 +249,84 @@ CONFIG_STANDALONE=y
|
||||||
#
|
#
|
||||||
# Memory Technology Devices (MTD)
|
# Memory Technology Devices (MTD)
|
||||||
#
|
#
|
||||||
# CONFIG_MTD is not set
|
CONFIG_MTD=y
|
||||||
|
# CONFIG_MTD_DEBUG is not set
|
||||||
|
# CONFIG_MTD_CONCAT is not set
|
||||||
|
CONFIG_MTD_PARTITIONS=y
|
||||||
|
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||||
|
CONFIG_MTD_CMDLINE_PARTS=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# User Modules And Translation Layers
|
||||||
|
#
|
||||||
|
CONFIG_MTD_CHAR=y
|
||||||
|
CONFIG_MTD_BLOCK=y
|
||||||
|
# CONFIG_FTL is not set
|
||||||
|
# CONFIG_NFTL is not set
|
||||||
|
# CONFIG_INFTL is not set
|
||||||
|
# CONFIG_RFD_FTL is not set
|
||||||
|
# CONFIG_SSFDC is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# RAM/ROM/Flash chip drivers
|
||||||
|
#
|
||||||
|
CONFIG_MTD_CFI=y
|
||||||
|
# CONFIG_MTD_JEDECPROBE is not set
|
||||||
|
CONFIG_MTD_GEN_PROBE=y
|
||||||
|
# CONFIG_MTD_CFI_ADV_OPTIONS is not set
|
||||||
|
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||||
|
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||||
|
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||||
|
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||||
|
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||||
|
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||||
|
CONFIG_MTD_CFI_I1=y
|
||||||
|
CONFIG_MTD_CFI_I2=y
|
||||||
|
# CONFIG_MTD_CFI_I4 is not set
|
||||||
|
# CONFIG_MTD_CFI_I8 is not set
|
||||||
|
# CONFIG_MTD_CFI_INTELEXT is not set
|
||||||
|
CONFIG_MTD_CFI_AMDSTD=y
|
||||||
|
# CONFIG_MTD_CFI_STAA is not set
|
||||||
|
CONFIG_MTD_CFI_UTIL=y
|
||||||
|
# CONFIG_MTD_RAM is not set
|
||||||
|
# CONFIG_MTD_ROM is not set
|
||||||
|
# CONFIG_MTD_ABSENT is not set
|
||||||
|
# CONFIG_MTD_OBSOLETE_CHIPS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Mapping drivers for chip access
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||||
|
CONFIG_MTD_PHYSMAP=y
|
||||||
|
CONFIG_MTD_PHYSMAP_START=0x8000000
|
||||||
|
CONFIG_MTD_PHYSMAP_LEN=0x0
|
||||||
|
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
||||||
|
# CONFIG_MTD_PLATRAM is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Self-contained MTD device drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_SLRAM is not set
|
||||||
|
# CONFIG_MTD_PHRAM is not set
|
||||||
|
# CONFIG_MTD_MTDRAM is not set
|
||||||
|
# CONFIG_MTD_BLOCK2MTD is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Disk-On-Chip Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_DOC2000 is not set
|
||||||
|
# CONFIG_MTD_DOC2001 is not set
|
||||||
|
# CONFIG_MTD_DOC2001PLUS is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# NAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_NAND is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# OneNAND Flash Device Drivers
|
||||||
|
#
|
||||||
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parallel port support
|
# Parallel port support
|
||||||
|
@ -260,10 +347,17 @@ CONFIG_BLK_DEV_NBD=m
|
||||||
CONFIG_BLK_DEV_RAM=m
|
CONFIG_BLK_DEV_RAM=m
|
||||||
CONFIG_BLK_DEV_RAM_COUNT=16
|
CONFIG_BLK_DEV_RAM_COUNT=16
|
||||||
CONFIG_BLK_DEV_RAM_SIZE=4096
|
CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||||
|
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||||
CONFIG_BLK_DEV_INITRD=y
|
CONFIG_BLK_DEV_INITRD=y
|
||||||
# CONFIG_CDROM_PKTCDVD is not set
|
# CONFIG_CDROM_PKTCDVD is not set
|
||||||
# CONFIG_ATA_OVER_ETH is not set
|
# CONFIG_ATA_OVER_ETH is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Misc devices
|
||||||
|
#
|
||||||
|
# CONFIG_SGI_IOC4 is not set
|
||||||
|
# CONFIG_TIFM_CORE is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# ATA/ATAPI/MFM/RLL support
|
# ATA/ATAPI/MFM/RLL support
|
||||||
#
|
#
|
||||||
|
@ -274,6 +368,12 @@ CONFIG_BLK_DEV_INITRD=y
|
||||||
#
|
#
|
||||||
# CONFIG_RAID_ATTRS is not set
|
# CONFIG_RAID_ATTRS is not set
|
||||||
# CONFIG_SCSI is not set
|
# CONFIG_SCSI is not set
|
||||||
|
# CONFIG_SCSI_NETLINK is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# Serial ATA (prod) and Parallel ATA (experimental) drivers
|
||||||
|
#
|
||||||
|
# CONFIG_ATA is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multi-device support (RAID and LVM)
|
# Multi-device support (RAID and LVM)
|
||||||
|
@ -305,14 +405,11 @@ CONFIG_TUN=m
|
||||||
#
|
#
|
||||||
# PHY device support
|
# PHY device support
|
||||||
#
|
#
|
||||||
# CONFIG_PHYLIB is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (10 or 100Mbit)
|
# Ethernet (10 or 100Mbit)
|
||||||
#
|
#
|
||||||
CONFIG_NET_ETHERNET=y
|
# CONFIG_NET_ETHERNET is not set
|
||||||
CONFIG_MII=y
|
|
||||||
CONFIG_MACB=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Ethernet (1000 Mbit)
|
# Ethernet (1000 Mbit)
|
||||||
|
@ -341,10 +438,11 @@ CONFIG_PPP=m
|
||||||
CONFIG_PPP_ASYNC=m
|
CONFIG_PPP_ASYNC=m
|
||||||
# CONFIG_PPP_SYNC_TTY is not set
|
# CONFIG_PPP_SYNC_TTY is not set
|
||||||
CONFIG_PPP_DEFLATE=m
|
CONFIG_PPP_DEFLATE=m
|
||||||
# CONFIG_PPP_BSDCOMP is not set
|
CONFIG_PPP_BSDCOMP=m
|
||||||
# CONFIG_PPP_MPPE is not set
|
# CONFIG_PPP_MPPE is not set
|
||||||
# CONFIG_PPPOE is not set
|
# CONFIG_PPPOE is not set
|
||||||
# CONFIG_SLIP is not set
|
# CONFIG_SLIP is not set
|
||||||
|
CONFIG_SLHC=m
|
||||||
# CONFIG_SHAPER is not set
|
# CONFIG_SHAPER is not set
|
||||||
# CONFIG_NETCONSOLE is not set
|
# CONFIG_NETCONSOLE is not set
|
||||||
# CONFIG_NETPOLL is not set
|
# CONFIG_NETPOLL is not set
|
||||||
|
@ -417,7 +515,6 @@ CONFIG_UNIX98_PTYS=y
|
||||||
# TPM devices
|
# TPM devices
|
||||||
#
|
#
|
||||||
# CONFIG_TCG_TPM is not set
|
# CONFIG_TCG_TPM is not set
|
||||||
# CONFIG_TELCLOCK is not set
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# I2C support
|
# I2C support
|
||||||
|
@ -427,23 +524,13 @@ CONFIG_UNIX98_PTYS=y
|
||||||
#
|
#
|
||||||
# SPI support
|
# SPI support
|
||||||
#
|
#
|
||||||
CONFIG_SPI=y
|
# CONFIG_SPI is not set
|
||||||
# CONFIG_SPI_DEBUG is not set
|
# CONFIG_SPI_MASTER is not set
|
||||||
CONFIG_SPI_MASTER=y
|
|
||||||
|
|
||||||
#
|
|
||||||
# SPI Master Controller Drivers
|
|
||||||
#
|
|
||||||
CONFIG_SPI_ATMEL=m
|
|
||||||
# CONFIG_SPI_BITBANG is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# SPI Protocol Masters
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Dallas's 1-wire bus
|
# Dallas's 1-wire bus
|
||||||
#
|
#
|
||||||
|
# CONFIG_W1 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Hardware Monitoring support
|
# Hardware Monitoring support
|
||||||
|
@ -451,15 +538,10 @@ CONFIG_SPI_ATMEL=m
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
# CONFIG_HWMON_VID is not set
|
# CONFIG_HWMON_VID is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Misc devices
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
#
|
#
|
||||||
# CONFIG_VIDEO_DEV is not set
|
# CONFIG_VIDEO_DEV is not set
|
||||||
CONFIG_VIDEO_V4L2=y
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Digital Video Broadcasting Devices
|
# Digital Video Broadcasting Devices
|
||||||
|
@ -470,28 +552,8 @@ CONFIG_VIDEO_V4L2=y
|
||||||
# Graphics support
|
# Graphics support
|
||||||
#
|
#
|
||||||
# CONFIG_FIRMWARE_EDID is not set
|
# CONFIG_FIRMWARE_EDID is not set
|
||||||
CONFIG_FB=m
|
# CONFIG_FB is not set
|
||||||
CONFIG_FB_CFB_FILLRECT=m
|
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||||
CONFIG_FB_CFB_COPYAREA=m
|
|
||||||
CONFIG_FB_CFB_IMAGEBLIT=m
|
|
||||||
# CONFIG_FB_MACMODES is not set
|
|
||||||
# CONFIG_FB_BACKLIGHT is not set
|
|
||||||
# CONFIG_FB_MODE_HELPERS is not set
|
|
||||||
# CONFIG_FB_TILEBLITTING is not set
|
|
||||||
CONFIG_FB_SIDSA=m
|
|
||||||
CONFIG_FB_SIDSA_DEFAULT_BPP=24
|
|
||||||
# CONFIG_FB_S1D13XXX is not set
|
|
||||||
# CONFIG_FB_VIRTUAL is not set
|
|
||||||
|
|
||||||
#
|
|
||||||
# Logo configuration
|
|
||||||
#
|
|
||||||
# CONFIG_LOGO is not set
|
|
||||||
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
|
||||||
# CONFIG_BACKLIGHT_CLASS_DEVICE is not set
|
|
||||||
CONFIG_LCD_CLASS_DEVICE=m
|
|
||||||
CONFIG_LCD_DEVICE=y
|
|
||||||
CONFIG_LCD_LTV350QV=m
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Sound
|
# Sound
|
||||||
|
@ -561,18 +623,21 @@ CONFIG_LCD_LTV350QV=m
|
||||||
#
|
#
|
||||||
# File systems
|
# File systems
|
||||||
#
|
#
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=m
|
||||||
# CONFIG_EXT2_FS_XATTR is not set
|
# CONFIG_EXT2_FS_XATTR is not set
|
||||||
# CONFIG_EXT2_FS_XIP is not set
|
# CONFIG_EXT2_FS_XIP is not set
|
||||||
# CONFIG_EXT3_FS is not set
|
# CONFIG_EXT3_FS is not set
|
||||||
|
# CONFIG_EXT4DEV_FS is not set
|
||||||
# CONFIG_REISERFS_FS is not set
|
# CONFIG_REISERFS_FS is not set
|
||||||
# CONFIG_JFS_FS is not set
|
# CONFIG_JFS_FS is not set
|
||||||
# CONFIG_FS_POSIX_ACL is not set
|
# CONFIG_FS_POSIX_ACL is not set
|
||||||
# CONFIG_XFS_FS is not set
|
# CONFIG_XFS_FS is not set
|
||||||
|
# CONFIG_GFS2_FS is not set
|
||||||
# CONFIG_OCFS2_FS is not set
|
# CONFIG_OCFS2_FS is not set
|
||||||
CONFIG_MINIX_FS=m
|
CONFIG_MINIX_FS=m
|
||||||
CONFIG_ROMFS_FS=m
|
# CONFIG_ROMFS_FS is not set
|
||||||
# CONFIG_INOTIFY is not set
|
CONFIG_INOTIFY=y
|
||||||
|
CONFIG_INOTIFY_USER=y
|
||||||
# CONFIG_QUOTA is not set
|
# CONFIG_QUOTA is not set
|
||||||
# CONFIG_DNOTIFY is not set
|
# CONFIG_DNOTIFY is not set
|
||||||
# CONFIG_AUTOFS_FS is not set
|
# CONFIG_AUTOFS_FS is not set
|
||||||
|
@ -600,8 +665,10 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
|
||||||
#
|
#
|
||||||
CONFIG_PROC_FS=y
|
CONFIG_PROC_FS=y
|
||||||
CONFIG_PROC_KCORE=y
|
CONFIG_PROC_KCORE=y
|
||||||
|
CONFIG_PROC_SYSCTL=y
|
||||||
CONFIG_SYSFS=y
|
CONFIG_SYSFS=y
|
||||||
CONFIG_TMPFS=y
|
CONFIG_TMPFS=y
|
||||||
|
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||||
# CONFIG_HUGETLB_PAGE is not set
|
# CONFIG_HUGETLB_PAGE is not set
|
||||||
CONFIG_RAMFS=y
|
CONFIG_RAMFS=y
|
||||||
CONFIG_CONFIGFS_FS=m
|
CONFIG_CONFIGFS_FS=m
|
||||||
|
@ -616,6 +683,16 @@ CONFIG_CONFIGFS_FS=m
|
||||||
# CONFIG_BEFS_FS is not set
|
# CONFIG_BEFS_FS is not set
|
||||||
# CONFIG_BFS_FS is not set
|
# CONFIG_BFS_FS is not set
|
||||||
# CONFIG_EFS_FS is not set
|
# CONFIG_EFS_FS is not set
|
||||||
|
# CONFIG_JFFS_FS is not set
|
||||||
|
CONFIG_JFFS2_FS=y
|
||||||
|
CONFIG_JFFS2_FS_DEBUG=0
|
||||||
|
CONFIG_JFFS2_FS_WRITEBUFFER=y
|
||||||
|
# CONFIG_JFFS2_SUMMARY is not set
|
||||||
|
# CONFIG_JFFS2_FS_XATTR is not set
|
||||||
|
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||||
|
CONFIG_JFFS2_ZLIB=y
|
||||||
|
CONFIG_JFFS2_RTIME=y
|
||||||
|
# CONFIG_JFFS2_RUBIN is not set
|
||||||
# CONFIG_CRAMFS is not set
|
# CONFIG_CRAMFS is not set
|
||||||
# CONFIG_VXFS_FS is not set
|
# CONFIG_VXFS_FS is not set
|
||||||
# CONFIG_HPFS_FS is not set
|
# CONFIG_HPFS_FS is not set
|
||||||
|
@ -626,26 +703,10 @@ CONFIG_CONFIGFS_FS=m
|
||||||
#
|
#
|
||||||
# Network File Systems
|
# Network File Systems
|
||||||
#
|
#
|
||||||
CONFIG_NFS_FS=y
|
# CONFIG_NFS_FS is not set
|
||||||
CONFIG_NFS_V3=y
|
|
||||||
# CONFIG_NFS_V3_ACL is not set
|
|
||||||
# CONFIG_NFS_V4 is not set
|
|
||||||
# CONFIG_NFS_DIRECTIO is not set
|
|
||||||
# CONFIG_NFSD is not set
|
# CONFIG_NFSD is not set
|
||||||
CONFIG_ROOT_NFS=y
|
|
||||||
CONFIG_LOCKD=y
|
|
||||||
CONFIG_LOCKD_V4=y
|
|
||||||
CONFIG_NFS_COMMON=y
|
|
||||||
CONFIG_SUNRPC=y
|
|
||||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
|
||||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
|
||||||
# CONFIG_SMB_FS is not set
|
# CONFIG_SMB_FS is not set
|
||||||
CONFIG_CIFS=m
|
# CONFIG_CIFS is not set
|
||||||
# CONFIG_CIFS_STATS is not set
|
|
||||||
# CONFIG_CIFS_WEAK_PW_HASH is not set
|
|
||||||
# CONFIG_CIFS_XATTR is not set
|
|
||||||
# CONFIG_CIFS_DEBUG2 is not set
|
|
||||||
# CONFIG_CIFS_EXPERIMENTAL is not set
|
|
||||||
# CONFIG_NCP_FS is not set
|
# CONFIG_NCP_FS is not set
|
||||||
# CONFIG_CODA_FS is not set
|
# CONFIG_CODA_FS is not set
|
||||||
# CONFIG_AFS_FS is not set
|
# CONFIG_AFS_FS is not set
|
||||||
|
@ -665,7 +726,7 @@ CONFIG_NLS_DEFAULT="iso8859-1"
|
||||||
CONFIG_NLS_CODEPAGE_437=m
|
CONFIG_NLS_CODEPAGE_437=m
|
||||||
# CONFIG_NLS_CODEPAGE_737 is not set
|
# CONFIG_NLS_CODEPAGE_737 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_775 is not set
|
# CONFIG_NLS_CODEPAGE_775 is not set
|
||||||
CONFIG_NLS_CODEPAGE_850=m
|
# CONFIG_NLS_CODEPAGE_850 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_852 is not set
|
# CONFIG_NLS_CODEPAGE_852 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_855 is not set
|
# CONFIG_NLS_CODEPAGE_855 is not set
|
||||||
# CONFIG_NLS_CODEPAGE_857 is not set
|
# CONFIG_NLS_CODEPAGE_857 is not set
|
||||||
|
@ -705,13 +766,17 @@ CONFIG_NLS_UTF8=m
|
||||||
# Kernel hacking
|
# Kernel hacking
|
||||||
#
|
#
|
||||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||||
CONFIG_PRINTK_TIME=y
|
# CONFIG_PRINTK_TIME is not set
|
||||||
|
CONFIG_ENABLE_MUST_CHECK=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
# CONFIG_UNUSED_SYMBOLS is not set
|
# CONFIG_UNUSED_SYMBOLS is not set
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_LOG_BUF_SHIFT=14
|
CONFIG_LOG_BUF_SHIFT=14
|
||||||
CONFIG_DETECT_SOFTLOCKUP=y
|
CONFIG_DETECT_SOFTLOCKUP=y
|
||||||
# CONFIG_SCHEDSTATS is not set
|
# CONFIG_SCHEDSTATS is not set
|
||||||
|
# CONFIG_DEBUG_SLAB is not set
|
||||||
|
# CONFIG_DEBUG_RT_MUTEXES is not set
|
||||||
|
# CONFIG_RT_MUTEX_TESTER is not set
|
||||||
# CONFIG_DEBUG_SPINLOCK is not set
|
# CONFIG_DEBUG_SPINLOCK is not set
|
||||||
# CONFIG_DEBUG_MUTEXES is not set
|
# CONFIG_DEBUG_MUTEXES is not set
|
||||||
# CONFIG_DEBUG_RWSEMS is not set
|
# CONFIG_DEBUG_RWSEMS is not set
|
||||||
|
@ -722,11 +787,13 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
||||||
# CONFIG_DEBUG_INFO is not set
|
# CONFIG_DEBUG_INFO is not set
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
# CONFIG_DEBUG_VM is not set
|
# CONFIG_DEBUG_VM is not set
|
||||||
|
# CONFIG_DEBUG_LIST is not set
|
||||||
CONFIG_FRAME_POINTER=y
|
CONFIG_FRAME_POINTER=y
|
||||||
# CONFIG_UNWIND_INFO is not set
|
# CONFIG_UNWIND_INFO is not set
|
||||||
CONFIG_FORCED_INLINING=y
|
CONFIG_FORCED_INLINING=y
|
||||||
|
# CONFIG_HEADERS_CHECK is not set
|
||||||
# CONFIG_RCU_TORTURE_TEST is not set
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
CONFIG_KPROBES=y
|
# CONFIG_KPROBES is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Security options
|
# Security options
|
||||||
|
@ -739,16 +806,14 @@ CONFIG_KPROBES=y
|
||||||
#
|
#
|
||||||
# CONFIG_CRYPTO is not set
|
# CONFIG_CRYPTO is not set
|
||||||
|
|
||||||
#
|
|
||||||
# Hardware crypto devices
|
|
||||||
#
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Library routines
|
# Library routines
|
||||||
#
|
#
|
||||||
CONFIG_CRC_CCITT=m
|
CONFIG_CRC_CCITT=m
|
||||||
# CONFIG_CRC16 is not set
|
# CONFIG_CRC16 is not set
|
||||||
CONFIG_CRC32=m
|
CONFIG_CRC32=y
|
||||||
# CONFIG_LIBCRC32C is not set
|
# CONFIG_LIBCRC32C is not set
|
||||||
CONFIG_ZLIB_INFLATE=m
|
CONFIG_AUDIT_GENERIC=y
|
||||||
CONFIG_ZLIB_DEFLATE=m
|
CONFIG_ZLIB_INFLATE=y
|
||||||
|
CONFIG_ZLIB_DEFLATE=y
|
||||||
|
CONFIG_PLIST=y
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
* published by the Free Software Foundation.
|
* published by the Free Software Foundation.
|
||||||
*/
|
*/
|
||||||
|
#include <linux/io.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
#include <asm/checksum.h>
|
#include <asm/checksum.h>
|
||||||
|
@ -53,3 +54,11 @@ EXPORT_SYMBOL(find_next_zero_bit);
|
||||||
EXPORT_SYMBOL(find_first_bit);
|
EXPORT_SYMBOL(find_first_bit);
|
||||||
EXPORT_SYMBOL(find_next_bit);
|
EXPORT_SYMBOL(find_next_bit);
|
||||||
EXPORT_SYMBOL(generic_find_next_zero_le_bit);
|
EXPORT_SYMBOL(generic_find_next_zero_le_bit);
|
||||||
|
|
||||||
|
/* I/O primitives (lib/io-*.S) */
|
||||||
|
EXPORT_SYMBOL(__raw_readsb);
|
||||||
|
EXPORT_SYMBOL(__raw_readsw);
|
||||||
|
EXPORT_SYMBOL(__raw_readsl);
|
||||||
|
EXPORT_SYMBOL(__raw_writesb);
|
||||||
|
EXPORT_SYMBOL(__raw_writesw);
|
||||||
|
EXPORT_SYMBOL(__raw_writesl);
|
||||||
|
|
|
@ -30,9 +30,6 @@ kernel_entry:
|
||||||
mov r7, 0
|
mov r7, 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Set up the PIO, SDRAM controller, early printk, etc. */
|
|
||||||
rcall board_early_init
|
|
||||||
|
|
||||||
/* Start the show */
|
/* Start the show */
|
||||||
lddpc pc, kernel_start_addr
|
lddpc pc, kernel_start_addr
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue